From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 32033 invoked from network); 23 Jun 2023 20:37:52 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 23 Jun 2023 20:37:52 -0000 Content-Type: multipart/mixed; boundary="===============3454599515948707534==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_ffmpeg6_split?= To: ml@inbox.vuxu.org From: zlice Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Fri, 23 Jun 2023 22:37:51 +0200 List-Id: Message-ID: <20230623203751.vaxpJZCX6jvGWCk4aJM7TqxjdG5CPmivMq7SfyqiS3w@z> GitHub notification mails are now in MIME to allow UTF8. --===============3454599515948707534== 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+CgpBIHBhdGNoIGZpbGUgZnJvbSBodHRw czovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDM3NjEucGF0Y2gg aXMgYXR0YWNoZWQ= --===============3454599515948707534== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ffmpeg6-split-43761.patch" RnJvbSA2NWNlNzkwYzE5MzY4MWNiMWNlMDFhZTQwMzBiYzZjYTkyMTdhZGM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDE5OjU1OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDEvMTEzXSBmZm1w ZWc6IHVwZGF0ZSB0byA2LjAuCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI2ICsrKysrLS0tCiBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoICAgICAgICAgICAgfCA2MCAtLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAxOCAtLS0tLS0KIC4uLi93b3JrYXJv dW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8IDI4IC0tLS0tLS0tLQogc3JjcGtn cy9mZm1wZWcvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgMzggKysrKystLS0tLS0t CiA1IGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDEzOCBkZWxldGlvbnMoLSkKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVjLnBhdGNoCiBkZWxl dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1w b2ludC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvd29y a2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNoCgpkaWZmIC0tZ2l0IGEvY29tbW9u L3NobGlicyBiL2NvbW1vbi9zaGxpYnMKaW5kZXggN2JjOThjYzFiNDc0Li5kYzNmMDM0ODcxNzMg MTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMKKysrIGIvY29tbW9uL3NobGlicwpAQCAtMzg3LDE1 ICszODcsMjMgQEAgbGliaWQzdGFnLnNvLjAgbGliaWQzdGFnLTAuMTUuMWJfMQogbGliZ2lmLnNv LjcgZ2lmbGliLTUuMS4wXzEKIGxpYkltbGliMi5zby4xIGltbGliMi0xLjQuMl8xCiBsaWJtcDNs YW1lLnNvLjAgbGFtZS0zLjk4LjJfMQotbGliYXZkZXZpY2Uuc28uNTggbGliYXZkZXZpY2UtNC4w XzEKLWxpYmF2Zm9ybWF0LnNvLjU4IGxpYmF2Zm9ybWF0LTQuMF8xCi1saWJzd3NjYWxlLnNvLjUg bGlic3dzY2FsZS00LjBfMQotbGlic3dyZXNhbXBsZS5zby4zIGxpYnN3cmVzYW1wbGUtNC4wXzEK LWxpYmF2cmVzYW1wbGUuc28uNCBsaWJhdnJlc2FtcGxlLTQuMF8xCi1saWJwb3N0cHJvYy5zby41 NSBsaWJwb3N0cHJvYy00LjBfMQotbGliYXZjb2RlYy5zby41OCBsaWJhdmNvZGVjLTQuMF8xCi1s aWJhdnV0aWwuc28uNTYgbGliYXZ1dGlsLTQuMF8xCi1saWJhdmZpbHRlci5zby43IGxpYmF2Zmls dGVyLTQuMF8xCitsaWJhdmRldmljZS5zby42MCBsaWJhdmRldmljZS02LjBfMQorbGliYXZmb3Jt YXQuc28uNjAgbGliYXZmb3JtYXQtNi4wXzEKK2xpYnN3c2NhbGUuc28uNyBsaWJzd3NjYWxlLTYu MF8xCitsaWJzd3Jlc2FtcGxlLnNvLjQgbGlic3dyZXNhbXBsZS02LjBfMQorbGlicG9zdHByb2Mu c28uNTcgbGlicG9zdHByb2MtNi4wXzEKK2xpYmF2Y29kZWMuc28uNjAgbGliYXZjb2RlYy02LjBf MQorbGliYXZ1dGlsLnNvLjU4IGxpYmF2dXRpbC02LjBfMQorbGliYXZmaWx0ZXIuc28uOSBsaWJh dmZpbHRlci02LjBfMQorbGliYXZkZXZpY2Uuc28uNTggbGliYXZkZXZpY2U0LTQuMF8xCitsaWJh dmZvcm1hdC5zby41OCBsaWJhdmZvcm1hdDQtNC4wXzEKK2xpYnN3c2NhbGUuc28uNSBsaWJzd3Nj YWxlNC00LjBfMQorbGlic3dyZXNhbXBsZS5zby4zIGxpYnN3cmVzYW1wbGU0LTQuMF8xCitsaWJh dnJlc2FtcGxlLnNvLjQgbGliYXZyZXNhbXBsZTQtNC4wXzEKK2xpYnBvc3Rwcm9jLnNvLjU1IGxp YnBvc3Rwcm9jNC00LjBfMQorbGliYXZjb2RlYy5zby41OCBsaWJhdmNvZGVjNC00LjBfMQorbGli YXZ1dGlsLnNvLjU2IGxpYmF2dXRpbDQtNC4wXzEKK2xpYmF2ZmlsdGVyLnNvLjcgbGliYXZmaWx0 ZXI0LTQuMF8xCiBsaWJTREwtMS4yLnNvLjAgU0RMLTEuMi4xNF8xCiBsaWJTRExfaW1hZ2UtMS4y LnNvLjAgU0RMX2ltYWdlLTEuMi4xMF8xCiBsaWJ4MjY0LnNvLjE1NyB4MjY0LTIwMTkwNTA3LjIy NDVfMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWcvZmlsZXMvYWx0aXZlYy5wYXRjaCBiL3Ny Y3BrZ3MvZmZtcGVnL2ZpbGVzL2FsdGl2ZWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDljNTcyMDA0NjMzMi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmZtcGVnL2Zp bGVzL2FsdGl2ZWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1yZXZlcnQg c29tZSBhbHRpdmVjIHNwZWNpZmljIGNoYW5nZSBvbiBhbGwgcHBjKiBleGNlcHQgcHBjNjRsZSoK LQotcTY2OiAiV2Ugc2hvdWxkIGFsc28gdGhyb3cgaW4gYSByZXZlcnQgb2YgRkZtcGVnL0ZGbXBl Z0AzYTU1N2M1IGJ1dCBvbmx5Ci1jb25kaXRpb25hbGx5LCBmb3IgcHBjKiBidXQgbm90IHBwYzY0 bGUqICh0aGUgbmV3IGNvZGUgaXMgdmFsaWQgZm9yCi1QT1dFUjggVlNYIHdoaWNoIExFIHRhcmdl dHMgYXMgYSBiYXNlbGluZSBidXQgbm90IEJFKSIKLQotCi1UaGlzIHJldmVydHMgY29tbWl0IDNh NTU3YzVkODhiN2IxNWI1OTU0YmEyNzQzZmViYjA1NTU0OWI1MzYuCi0tLS0KLSBsaWJzd3NjYWxl L3BwYy95dXYycmdiX2FsdGl2ZWMuYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrLS0tLQotIDEg ZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0t Z2l0IGEvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMgYi9saWJzd3NjYWxlL3BwYy95 dXYycmdiX2FsdGl2ZWMuYwotaW5kZXggNTM2NTQ1MjkzZC4uYzFlMjg1MmFkYiAxMDA2NDQKLS0t LSBhL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jCi0rKysgYi9saWJzd3NjYWxlL3Bw Yy95dXYycmdiX2FsdGl2ZWMuYwotQEAgLTMwNSw2ICszMDUsOSBAQCBzdGF0aWMgaW50IGFsdGl2 ZWNfICMjIG5hbWUoU3dzQ29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgY2hhciAqKmluLCAgICAg ICAgICBcCi0gICAgIHZlY3RvciBzaWduZWQgc2hvcnQgUjEsIEcxLCBCMTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB2ZWN0b3IgdW5zaWduZWQgY2hh ciBSLCBHLCBCOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFy ICp5MWl2UCwgKnkyaXZQLCAqdWl2UCwgKnZpdlA7ICAgICAgICAgICAgICAgICAgXAotKyAgICB2 ZWN0b3IgdW5zaWduZWQgY2hhciBhbGlnbl9wZXJtOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHZlY3RvciBz aWduZWQgc2hvcnQgbENZICAgICAgID0gYy0+Q1k7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxPWSAgICAgICA9IGMtPk9ZOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdmVjdG9yIHNpZ25lZCBz aG9ydCBsQ1JWICAgICAgPSBjLT5DUlY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi1AQCAtMzM1LDEzICszMzgsMjYgQEAgc3RhdGljIGludCBhbHRpdmVjXyAjIyBuYW1lKFN3 c0NvbnRleHQgKmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAgICAgXAotICAgICAg ICAgdmVjX2RzdHN0KG91dGUsICgweDAyMDAwMDAyIHwgKCgodyAqIDMgKyAzMikgLyAzMikgPDwg MTYpKSwgMSk7ICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBmb3Ig KGogPSAwOyBqIDwgdyAvIDE2OyBqKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotLSAgICAgICAgICAgIHkwID0gdmVjX3hsKDAsIHkxaSk7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB5MWl2UCA9 IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB5MWk7ICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICAgICAgICAgICAgeTJpdlAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikg eTJpOyAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHVpdlAgID0gKGNvbnN0 IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHVpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsg ICAgICAgICAgICB2aXZQICA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB2aTsgICAg ICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAg ICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB5MWkpOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB5MCA9ICh2ZWN0b3IgdW5zaWduZWQgY2hhcikg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAg ICAgICAgdmVjX3Blcm0oeTFpdlBbMF0sIHkxaXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAg ICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICB5MSA9IHZlY194 bCgwLCB5MmkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHkyaSk7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHkxID0gKHZlY3RvciB1bnNp Z25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAg ICAgICAgICAgICAgICAgICB2ZWNfcGVybSh5Mml2UFswXSwgeTJpdlBbMV0sIGFsaWduX3Blcm0p OyAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICAg IHUgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdWkpOyAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgdWkpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgdSA9ICh2 ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotKyAgICAgICAgICAgICAgICAgICAgdmVjX3Blcm0odWl2UFswXSwgdWl2UFsxXSwgYWxp Z25fcGVybSk7ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0t ICAgICAgICAgICAgdiA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpIHZlY194bCgwLCB2aSk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZz bCgwLCB2aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAg ICAgICB2ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh2aXZQWzBdLCB2 aXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSAgICAgICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICB2 ZWNfc3ViKHUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotLS0gCi0yLjI3LjAKLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9hcm12 NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCBiL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0 ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlh NTUxNzhjNzRmMC4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJt djV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBA Ci0tLS0gYS9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTAtMjYgMjE6MDM6MDMuMDAw MDAwMDAwICswMjAwCi0rKysgYi9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTEtMjEg MTE6MDY6NDkuNjAyMjg0NDIyICswMTAwCi1AQCAtMzksNiArMzksMTUgQEAKLSAjZW5kaWYKLSAj aW5jbHVkZSA8ZmVudi5oPgotIAotKyNpZiAoRkVfQUxMX0VYQ0VQVCA9PSAwKQotKy8qIEUuZy4g QVJNIHNvZnQgZmxvYXQgZG9lcyBub3QgZGVmaW5lIHRoZXNlICovCi0rI2RlZmluZSBGRV9JTlZB TElEICAgIDAKLSsjZGVmaW5lIEZFX0RJVkJZWkVSTyAgMAotKyNkZWZpbmUgRkVfT1ZFUkZMT1cg ICAwCi0rI2RlZmluZSBGRV9VTkRFUkZMT1cgIDAKLSsjZGVmaW5lIEZFX0lORVhBQ1QgICAgMAot KyNlbmRpZgotKwotICNpZiBDT05GSUdfTElCRk9OVENPTkZJRwotICNpbmNsdWRlIDxmb250Y29u ZmlnL2ZvbnRjb25maWcuaD4KLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL3Bh dGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNoIGIvc3JjcGtncy9m Zm1wZWcvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwZTNmNjhhNDE1Yi4uMDAwMDAwMDAwMDAwCi0t LSBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGkt YnVnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSA4MTFkMjkwODQ0 MjA2ZmM3M2RjMzljM2U1YjY3ZDVkODk1YmFlZGY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQot RnJvbTogUmFpbmVyIEhvY2hlY2tlciA8ZmVybmV0bWVudGFAb25saW5lLmRlPgotRGF0ZTogU2F0 LCAyNiBKYW4gMjAxOSAxOTo0ODozNSArMDEwMAotU3ViamVjdDogW1BBVENIXSBhdmNvZGVjL3Zh YXBpX2gyNjQ6IHNraXAgZGVjb2RlIGlmIHBpYyBoYXMgbm8gc2xpY2VzCi0KLVRoaXMgZml4ZXMg LyB3b3JrYXJvdW5kcyBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9p ZD0xMDUzNjguCi1JdCB3YXMgaGl0IGZyZXF1ZW50bHkgd2hlbiB3YXRjaGluZyBoMjY0IGNoYW5u ZWxzIHJlY2VpdmVkIHZpYSBEVkItWC4KLUNvcnJlc3BvbmRpbmcga29kaSBidWc6IGh0dHBzOi8v Z2l0aHViLmNvbS94Ym1jL3hibWMvaXNzdWVzLzE1NzA0Ci0tLS0KLSBsaWJhdmNvZGVjL3ZhYXBp X2gyNjQuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRp ZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZhYXBpX2gyNjQuYyBiL2xpYmF2Y29kZWMvdmFhcGlfaDI2 NC5jCi1pbmRleCA1ODU0NTg3YTI1NS4uZjEyZmRjNDU3YTQgMTAwNjQ0Ci0tLS0gYS9saWJhdmNv ZGVjL3ZhYXBpX2gyNjQuYwotKysrIGIvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMKLUBAIC0zMTcs NiArMzE3LDExIEBAIHN0YXRpYyBpbnQgdmFhcGlfaDI2NF9lbmRfZnJhbWUoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4KQotICAgICBIMjY0U2xpY2VDb250ZXh0ICpzbCA9ICZoLT5zbGljZV9jdHhbMF07 Ci0gICAgIGludCByZXQ7Ci0gCi0rICAgIGlmIChwaWMtPm5iX3NsaWNlcyA9PSAwKSB7Ci0rICAg ICAgICByZXQgPSBBVkVSUk9SX0lOVkFMSUREQVRBOwotKyAgICAgICAgZ290byBmaW5pc2g7Ci0r ICAgIH0KLSsKLSAgICAgcmV0ID0gZmZfdmFhcGlfZGVjb2RlX2lzc3VlKGF2Y3R4LCBwaWMpOwot ICAgICBpZiAocmV0IDwgMCkKLSAgICAgICAgIGdvdG8gZmluaXNoOwpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9mZm1wZWcvdGVtcGxhdGUgYi9zcmNwa2dzL2ZmbXBlZy90ZW1wbGF0ZQppbmRleCBkZjQx NzlkMTk2M2EuLmY3NDIwODJiYjUyMCAxMDA2NDQKLS0tIGEvc3JjcGtncy9mZm1wZWcvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9mZm1wZWcvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdmZm1wZWcnCiAjIGF1ZGFjaXR5IGFsc28gbmVlZHMgdG8gYmUgYnVtcGVk IHdoZW4gYSBuZXcgZmZtcGVnIHZlcnNpb24gYnVtcHMgbGliYXZmb3JtYXQncyBzb25hbWUhCiBw a2duYW1lPWZmbXBlZwotdmVyc2lvbj00LjQuNAordmVyc2lvbj02LjAKIHJldmlzaW9uPTEKIHNo b3J0X2Rlc2M9IkRlY29kaW5nLCBlbmNvZGluZyBhbmQgc3RyZWFtaW5nIHNvZnR3YXJlIgogbWFp bnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKQEAgLTksNyArOSw3IEBA IGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93d3cuZmZtcGVn Lm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0ZGbXBl Zy9GRm1wZWcvbWFzdGVyL0NoYW5nZWxvZyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly93d3cuZmZtcGVn Lm9yZy9yZWxlYXNlcy9mZm1wZWctJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT1lODBiMzgw ZDU5NWM4MDkwNjBmNjZmOTZhNWQ4NDk1MTFlZjRhNzZhMjZiNzZlYWNmNTc3OGI5NGMzNTcwMzA5 CitjaGVja3N1bT01N2JlODdjMjJkOWI0OWMxMTJiNmQyNGJjNjdkNDI1MDg2NjBlNmI3MThiM2Ri ODljNDRlNDdlMjg5MTM3MDgyCiAKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBwZXJsIgog bWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgYWxzYS1s aWItZGV2ZWwgbGliWGZpeGVzLWRldmVsCkBAIC0yNiwxMiArMjYsMTMgQEAgbWFrZWRlcGVuZHM9 InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGli WGZpeGVzLWRldmUKICAkKHZvcHRfaWYgd2VicCBsaWJ3ZWJwLWRldmVsKSAkKHZvcHRfaWYgc29m YSBsaWJteXNvZmEtZGV2ZWwpCiAgJCh2b3B0X2lmIGRybSBsaWJkcm0tZGV2ZWwpICQodm9wdF9p ZiBzdnRhdjEgbGlic3Z0LWF2MS1kZXZlbCkKICAkKHZvcHRfaWYgc3J0IHNydC1kZXZlbCkgJCh2 b3B0X2lmIHJpc3QgbGlicmlzdC1kZXZlbCkKLSAkKHZvcHRfaWYgdnVsa2FuICd2dWxrYW4tbG9h ZGVyIFZ1bGthbi1IZWFkZXJzJykKKyAkKHZvcHRfaWYgdnVsa2FuICd2dWxrYW4tbG9hZGVyIFZ1 bGthbi1IZWFkZXJzIFZ1bGthbi1Ub29scyBWdWxrYW4tVmFsaWRhdGlvbkxheWVycycpCisgJCh2 b3B0X2lmIG9uZXZwbCAnb25ldnBsIG9uZXZwbC1kZXZlbCcpCiAgJCh2b3B0X2lmIG52ZW5jIG52 LWNvZGVjLWhlYWRlcnMpICQodm9wdF9pZiBudmRlYyBudi1jb2RlYy1oZWFkZXJzKSIKIGRlcGVu ZHM9ImZmcGxheT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKIAogYnVpbGRfb3B0aW9ucz0ieDI2 NSB2NGwyIHZhYXBpIHZkcGF1IHZweCBmZGtfYWFjIGFvbSBudmVuYyBzbmRpbyBwdWxzZWF1ZGlv Ci0gZGF2MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEgc3J0IHJpc3QgbnZkZWMi CisgZGF2MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEgc3J0IHJpc3QgbnZkZWMg b25ldnBsIgogYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJ4MjY1IHY0bDIgdnB4IGFvbSBzbmRpbyBw dWxzZWF1ZGlvIGRhdjFkIHdlYnAgdnVsa2FuIGRybSBzcnQgcmlzdCIKIGRlc2Nfb3B0aW9uX3Ny dD0iRW5hYmxlIHN1cHBvcnQgZm9yIFNSVCAoU2VjdXJlLCBSZWxpYWJsZSwgVHJhbnNwb3J0KSIK IGRlc2Nfb3B0aW9uX3Jpc3Q9IkVuYWJsZSBzdXBwb3J0IGZvciBSSVNUIChSZWxpYWJsZSBJbnRl cm5ldCBTdHJlYW0gVHJhbnNwb3J0KSIKQEAgLTM5LDEwICs0MCw4IEBAIGRlc2Nfb3B0aW9uX3Nv ZmE9IkVuYWJsZSBzdXBwb3J0IGZvciBBRVMgU09GQSIKIGRlc2Nfb3B0aW9uX3dlYnA9IkVuYWJs ZSBzdXBwb3J0IGZvciBXZWJQIgogCiBjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQlp Njg2Knx4ODZfNjQqKQotCQlob3N0bWFrZWRlcGVuZHMrPSIgbmFzbSIKLQkJYnVpbGRfb3B0aW9u c19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5jIG52ZGVjIgotCQk7OworCWk2ODYqKSBidWls ZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUgbnZlbmMgbnZkZWMiOzsKKwl4ODZfNjQq KSBidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUgbnZlbmMgbnZkZWMgb25ldnBs Ijs7CiAJcHBjNjQqKSBidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUiOzsKIAlt aXBzKikgQ0ZMQUdTPSItbW5hbj1sZWdhY3kiOzsKIGVzYWMKQEAgLTExNywxOCArMTE2LDE5IEBA IGRvX2NvbmZpZ3VyZSgpIHsKIAkJJCh2b3B0X2VuYWJsZSB4MjY1IGxpYngyNjUpIFwKIAkJJCh2 b3B0X2VuYWJsZSB2NGwyIGxpYnY0bDIpIFwKIAkJJCh2b3B0X2VuYWJsZSBhb20gbGliYW9tKSAk KHZvcHRfZW5hYmxlIHZhYXBpKSAkKHZvcHRfZW5hYmxlIHZkcGF1KSBcCi0JCS0tZW5hYmxlLWxp YmJzMmIgLS1lbmFibGUtYXZyZXNhbXBsZSAtLWVuYWJsZS1saWJ2aWRzdGFiIFwKKwkJLS1lbmFi bGUtbGliYnMyYiAtLWVuYWJsZS1saWJ2aWRzdGFiIFwKIAkJJCh2b3B0X2VuYWJsZSBkYXYxZCBs aWJkYXYxZCkgXAogCQkkKHZvcHRfZW5hYmxlIHppbWcgbGliemltZykgXAogCQkkKHZvcHRfZW5h YmxlIHdlYnAgbGlid2VicCkgXAogCQkkKHZvcHRfZW5hYmxlIHNvZmEgbGlibXlzb2ZhKSBcCiAJ CSQodm9wdF9lbmFibGUgdnVsa2FuKSBcCisJCSQodm9wdF9lbmFibGUgb25ldnBsIGxpYnZwbCkg XAogCQkkKHZvcHRfZW5hYmxlIGRybSBsaWJkcm0pIFwKIAkJJCh2b3B0X2VuYWJsZSBzdnRhdjEg bGlic3Z0YXYxKSBcCiAJCSQodm9wdF9lbmFibGUgc3J0IGxpYnNydCkgXAogCQkkKHZvcHRfZW5h YmxlIHJpc3QgbGlicmlzdCkgXAotCQkkKHZvcHRfaWYgbnZlbmMgJy0tZW5hYmxlLW52ZW5jJykg XAotCQkkKHZvcHRfaWYgbnZkZWMgJy0tZW5hYmxlLW52ZGVjJykKKwkJJCh2b3B0X2VuYWJsZSBu dmVuYyBudmVuYykgXAorCQkkKHZvcHRfZW5hYmxlIG52ZGVjIG52ZGVjKQogfQogCiBkb19idWls ZCgpIHsKQEAgLTE1NSwxMCArMTU1LDggQEAgbGliYXZkZXZpY2VfcGFja2FnZSgpIHsKIH0KIAog bGliYXZyZXNhbXBsZV9wYWNrYWdlKCkgewotCXNob3J0X2Rlc2M9IkZGbXBlZyBhdWRpbyByZXNh bXBsaW5nIGxpYnJhcnkiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmF2 cmVzYW1wbGUuc28uKiIKLQl9CisJc2hvcnRfZGVzYz0iUGFja2FnZSBkZXByZWNhdGVkLCByZW1v dmFsIG5lZWRlZCIKKwlidWlsZF9zdHlsZT1tZXRhCiB9CiAKIGxpYmF2Zm9ybWF0X3BhY2thZ2Uo KSB7CkBAIC0yMTIsMTUgKzIxMCw5IEBAIGZmbXBlZy1kZXZlbF9wYWNrYWdlKCkgewogCQlsaWJh dmZpbHRlcj49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQogCQlsaWJwb3N0cHJvYz49JHt2ZXJzaW9u fV8ke3JldmlzaW9ufQogCQlsaWJzd3NjYWxlPj0ke3ZlcnNpb259XyR7cmV2aXNpb259Ci0JCWxp YnN3cmVzYW1wbGU+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KLQkJbGliYXZyZXNhbXBsZT49JHt2 ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwkJbGlic3dyZXNhbXBsZT49JHt2ZXJzaW9ufV8ke3Jldmlz aW9ufSIKIAlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCi0KLQlpZiBbICIkWEJQ U19UQVJHRVRfTUFDSElORSIgPSAiaTY4NiIgXTsgdGhlbgotCQkjIC91c3IvYmluL3N0cmlwOiBl cnJvcjogdGhlIGlucHV0IGZpbGUgJy9kZXN0ZGlyLy9mZm1wZWctZGV2ZWwtNC40LjQvdXNyL2xp Yi9saWJhdmZpbHRlci5hKHZmX2F0YWRlbm9pc2UubyknIGhhcyBubyBzZWN0aW9ucwotCQlub3N0 cmlwX2ZpbGVzPSIvdXNyL2xpYi9saWJhdmZpbHRlci5hIgotCWZpCi0KKwljb25mbGljdHM9ImZm bXBlZzQtZGV2ZWwiCiAJcGtnX2luc3RhbGwoKSB7CiAJCXZtb3ZlIHVzci9pbmNsdWRlCiAJCXZt b3ZlIHVzci9saWIvcGtnY29uZmlnCgpGcm9tIGI4ZjY2NDNjZjNkNDQ2MWJkNWEwNmJiMTgyYjI3 ZGQ3NTMxZWQ0ODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTY6MjIgLTA0MDAKU3ViamVj dDogW1BBVENIIDAwMi8xMTNdIE5ldyBwYWNrYWdlOiBmZm1wZWc0LTQuNC40LgoKLS0tCiBzcmNw a2dzL2ZmbXBlZzQtZGV2ZWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtn cy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2ggICAgICAgICAgIHwgIDYwICsrKysrCiAuLi4v cGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAgMTggKysKIC4uLi93 b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8ICAyOCArKysKIHNyY3Br Z3MvZmZtcGVnNC90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICB8IDIzOCArKysrKysrKysr KysrKysrKysKIHNyY3BrZ3MvbGliYXZjb2RlYzQgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmNwa2dzL2xpYmF2ZGV2aWNlNCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjcGtncy9saWJhdmZpbHRlcjQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyY3BrZ3MvbGliYXZmb3JtYXQ0ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmNwa2dzL2xpYmF2cmVzYW1wbGU0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjcGtncy9saWJhdnV0aWw0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Y3BrZ3MvbGlicG9zdHByb2M0ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNw a2dzL2xpYnN3cmVzYW1wbGU0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtn cy9saWJzd3NjYWxlNCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIDE0IGZpbGVz IGNoYW5nZWQsIDM1NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9m Zm1wZWc0LWRldmVsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWc0L2ZpbGVzL2Fs dGl2ZWMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv ZmZtcGVnNC9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZQogY3JlYXRlIG1vZGUg MTIwMDAwIHNyY3BrZ3MvbGliYXZjb2RlYzQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xp YmF2ZGV2aWNlNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZmaWx0ZXI0CiBjcmVh dGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdmZvcm1hdDQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBz cmNwa2dzL2xpYmF2cmVzYW1wbGU0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdnV0 aWw0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJwb3N0cHJvYzQKIGNyZWF0ZSBtb2Rl IDEyMDAwMCBzcmNwa2dzL2xpYnN3cmVzYW1wbGU0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtn cy9saWJzd3NjYWxlNAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC1kZXZlbCBiL3NyY3Br Z3MvZmZtcGVnNC1kZXZlbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAu Ljg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC1kZXZlbApA QCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2ggYi9zcmNwa2dzL2ZmbXBl ZzQvZmlsZXMvYWx0aXZlYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjljNTcyMDA0NjMzMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC9m aWxlcy9hbHRpdmVjLnBhdGNoCkBAIC0wLDAgKzEsNjAgQEAKK3JldmVydCBzb21lIGFsdGl2ZWMg c3BlY2lmaWMgY2hhbmdlIG9uIGFsbCBwcGMqIGV4Y2VwdCBwcGM2NGxlKgorCitxNjY6ICJXZSBz aG91bGQgYWxzbyB0aHJvdyBpbiBhIHJldmVydCBvZiBGRm1wZWcvRkZtcGVnQDNhNTU3YzUgYnV0 IG9ubHkKK2NvbmRpdGlvbmFsbHksIGZvciBwcGMqIGJ1dCBub3QgcHBjNjRsZSogKHRoZSBuZXcg Y29kZSBpcyB2YWxpZCBmb3IKK1BPV0VSOCBWU1ggd2hpY2ggTEUgdGFyZ2V0cyBhcyBhIGJhc2Vs aW5lIGJ1dCBub3QgQkUpIgorCisKK1RoaXMgcmV2ZXJ0cyBjb21taXQgM2E1NTdjNWQ4OGI3YjE1 YjU5NTRiYTI3NDNmZWJiMDU1NTQ5YjUzNi4KKy0tLQorIGxpYnN3c2NhbGUvcHBjL3l1djJyZ2Jf YWx0aXZlYy5jIHwgMjQgKysrKysrKysrKysrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQs IDIwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJzd3Nj YWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYyBiL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZl Yy5jCitpbmRleCA1MzY1NDUyOTNkLi5jMWUyODUyYWRiIDEwMDY0NAorLS0tIGEvbGlic3dzY2Fs ZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMKKysrKyBiL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0 aXZlYy5jCitAQCAtMzA1LDYgKzMwNSw5IEBAIHN0YXRpYyBpbnQgYWx0aXZlY18gIyMgbmFtZShT d3NDb250ZXh0ICpjLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqaW4sICAgICAgICAgIFwKKyAgICAg dmVjdG9yIHNpZ25lZCBzaG9ydCBSMSwgRzEsIEIxOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIFIsIEcsIEI7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKysgICAgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKnkxaXZQLCAqeTJp dlAsICp1aXZQLCAqdml2UDsgICAgICAgICAgICAgICAgICBcCisrICAgIHZlY3RvciB1bnNpZ25l ZCBjaGFyIGFsaWduX3Blcm07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBs Q1kgICAgICAgPSBjLT5DWTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgIHZlY3RvciBzaWduZWQgc2hvcnQgbE9ZICAgICAgID0gYy0+T1k7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxDUlYgICAg ICA9IGMtPkNSVjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC0zMzUs MTMgKzMzOCwyNiBAQCBzdGF0aWMgaW50IGFsdGl2ZWNfICMjIG5hbWUoU3dzQ29udGV4dCAqYywg Y29uc3QgdW5zaWduZWQgY2hhciAqKmluLCAgICAgICAgICBcCisgICAgICAgICB2ZWNfZHN0c3Qo b3V0ZSwgKDB4MDIwMDAwMDIgfCAoKCh3ICogMyArIDMyKSAvIDMyKSA8PCAxNikpLCAxKTsgICAg ICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIGZvciAoaiA9IDA7IGogPCB3 IC8gMTY7IGorKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCist ICAgICAgICAgICAgeTAgPSB2ZWNfeGwoMCwgeTFpKTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHkxaXZQID0gKGNvbnN0IHZlY3Rv ciB1bnNpZ25lZCBjaGFyICopIHkxaTsgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAg ICAgICB5Mml2UCA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB5Mmk7ICAgICAgICAg ICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgdWl2UCAgPSAoY29uc3QgdmVjdG9yIHVuc2ln bmVkIGNoYXIgKikgdWk7ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHZp dlAgID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHZpOyAgICAgICAgICAgICAgICAg ICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgYWxpZ25fcGVy bSA9IHZlY19sdnNsKDAsIHkxaSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorKyAgICAgICAgICAgIHkwID0gKHZlY3RvciB1bnNpZ25lZCBjaGFyKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICB2ZWNfcGVy bSh5MWl2UFswXSwgeTFpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAgICAgICAgICAgICBcCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIHkxID0gdmVjX3hsKDAsIHkyaSk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAg ICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgeTJpKTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisrICAgICAgICAgICAgeTEgPSAodmVjdG9yIHVuc2lnbmVkIGNoYXIpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAg ICAgIHZlY19wZXJtKHkyaXZQWzBdLCB5Mml2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAg ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgdSA9ICh2ZWN0b3Ig c2lnbmVkIGNoYXIpIHZlY194bCgwLCB1aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor KyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB1aSk7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQg Y2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAg ICAgICAgICAgICAgICB2ZWNfcGVybSh1aXZQWzBdLCB1aXZQWzFdLCBhbGlnbl9wZXJtKTsgICAg ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICB2 ID0gKHZlY3RvciBzaWduZWQgY2hhcikgdmVjX3hsKDAsIHZpKTsgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisrICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHZpKTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHYgPSAodmVj dG9yIHNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKysgICAgICAgICAgICAgICAgICAgIHZlY19wZXJtKHZpdlBbMF0sIHZpdlBbMV0sIGFsaWdu X3Blcm0pOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg ICAgICAgICAgIHUgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIHZlY19zdWIodSwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistLSAKKzIuMjcu MAorCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9hcm12NXRlbC1mbG9hdGlu Zy1wb2ludC5wYXRjaCBiL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5n LXBvaW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWE1 NTE3OGM3NGYwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvYXJt djV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAorLS0tIGEvbGliYXZm aWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTEwLTI2IDIxOjAzOjAzLjAwMDAwMDAwMCArMDIwMAor KysrIGIvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTExLTIxIDExOjA2OjQ5LjYwMjI4 NDQyMiArMDEwMAorQEAgLTM5LDYgKzM5LDE1IEBACisgI2VuZGlmCisgI2luY2x1ZGUgPGZlbnYu aD4KKyAKKysjaWYgKEZFX0FMTF9FWENFUFQgPT0gMCkKKysvKiBFLmcuIEFSTSBzb2Z0IGZsb2F0 IGRvZXMgbm90IGRlZmluZSB0aGVzZSAqLworKyNkZWZpbmUgRkVfSU5WQUxJRCAgICAwCisrI2Rl ZmluZSBGRV9ESVZCWVpFUk8gIDAKKysjZGVmaW5lIEZFX09WRVJGTE9XICAgMAorKyNkZWZpbmUg RkVfVU5ERVJGTE9XICAwCisrI2RlZmluZSBGRV9JTkVYQUNUICAgIDAKKysjZW5kaWYKKysKKyAj aWYgQ09ORklHX0xJQkZPTlRDT05GSUcKKyAjaW5jbHVkZSA8Zm9udGNvbmZpZy9mb250Y29uZmln Lmg+CisgI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy93b3JrYXJv dW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hl cy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wMGUzZjY4YTQxNWIKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1i dWcucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA4MTFkMjkwODQ0MjA2ZmM3M2RjMzljM2U1 YjY3ZDVkODk1YmFlZGY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmFpbmVyIEhv Y2hlY2tlciA8ZmVybmV0bWVudGFAb25saW5lLmRlPgorRGF0ZTogU2F0LCAyNiBKYW4gMjAxOSAx OTo0ODozNSArMDEwMAorU3ViamVjdDogW1BBVENIXSBhdmNvZGVjL3ZhYXBpX2gyNjQ6IHNraXAg ZGVjb2RlIGlmIHBpYyBoYXMgbm8gc2xpY2VzCisKK1RoaXMgZml4ZXMgLyB3b3JrYXJvdW5kcyBo dHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUzNjguCitJdCB3 YXMgaGl0IGZyZXF1ZW50bHkgd2hlbiB3YXRjaGluZyBoMjY0IGNoYW5uZWxzIHJlY2VpdmVkIHZp YSBEVkItWC4KK0NvcnJlc3BvbmRpbmcga29kaSBidWc6IGh0dHBzOi8vZ2l0aHViLmNvbS94Ym1j L3hibWMvaXNzdWVzLzE1NzA0CistLS0KKyBsaWJhdmNvZGVjL3ZhYXBpX2gyNjQuYyB8IDUgKysr KysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJh dmNvZGVjL3ZhYXBpX2gyNjQuYyBiL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jCitpbmRleCA1ODU0 NTg3YTI1NS4uZjEyZmRjNDU3YTQgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2gyNjQu YworKysrIGIvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMKK0BAIC0zMTcsNiArMzE3LDExIEBAIHN0 YXRpYyBpbnQgdmFhcGlfaDI2NF9lbmRfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQorICAg ICBIMjY0U2xpY2VDb250ZXh0ICpzbCA9ICZoLT5zbGljZV9jdHhbMF07CisgICAgIGludCByZXQ7 CisgCisrICAgIGlmIChwaWMtPm5iX3NsaWNlcyA9PSAwKSB7CisrICAgICAgICByZXQgPSBBVkVS Uk9SX0lOVkFMSUREQVRBOworKyAgICAgICAgZ290byBmaW5pc2g7CisrICAgIH0KKysKKyAgICAg cmV0ID0gZmZfdmFhcGlfZGVjb2RlX2lzc3VlKGF2Y3R4LCBwaWMpOworICAgICBpZiAocmV0IDwg MCkKKyAgICAgICAgIGdvdG8gZmluaXNoOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0L3Rl bXBsYXRlIGIvc3JjcGtncy9mZm1wZWc0L3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uNTIyOGM3ZGYwOGZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9mZm1wZWc0L3RlbXBsYXRlCkBAIC0wLDAgKzEsMjM4IEBACisjIFRlbXBsYXRlIGZpbGUgZm9y ICdmZm1wZWc0JworIyBhdWRhY2l0eSBhbHNvIG5lZWRzIHRvIGJlIGJ1bXBlZCB3aGVuIGEgbmV3 IGZmbXBlZyB2ZXJzaW9uIGJ1bXBzIGxpYmF2Zm9ybWF0J3Mgc29uYW1lIQorcGtnbmFtZT1mZm1w ZWc0Cit2ZXJzaW9uPTQuNC40CityZXZpc2lvbj0xCitzaG9ydF9kZXNjPSJEZWNvZGluZywgZW5j b2RpbmcgYW5kIHN0cmVhbWluZyBzb2Z0d2FyZSAtIGZmbXBlZzQgbGlicmFyaWVzIG9ubHkiCitt YWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgorbGljZW5zZT0iR1BM LTMuMC1vci1sYXRlciIKK2hvbWVwYWdlPSJodHRwczovL3d3dy5mZm1wZWcub3JnIgorY2hhbmdl bG9nPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vRkZtcGVnL0ZGbXBlZy9tYXN0 ZXIvQ2hhbmdlbG9nIgorZGlzdGZpbGVzPSJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2Vz L2ZmbXBlZy0ke3ZlcnNpb259LnRhci54eiIKK2NoZWNrc3VtPWU4MGIzODBkNTk1YzgwOTA2MGY2 NmY5NmE1ZDg0OTUxMWVmNGE3NmEyNmI3NmVhY2Y1Nzc4Yjk0YzM1NzAzMDkKKworaG9zdG1ha2Vk ZXBlbmRzPSJwa2ctY29uZmlnIHBlcmwiCittYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBiemlwMi1k ZXZlbCBmcmVldHlwZS1kZXZlbCBhbHNhLWxpYi1kZXZlbCBsaWJYZml4ZXMtZGV2ZWwKKyBsaWJY ZXh0LWRldmVsIGxpYlh2TUMtZGV2ZWwgbGlieGNiLWRldmVsIGxhbWUtZGV2ZWwgbGlidGhlb3Jh LWRldmVsCisgbGlidm9yYmlzLWRldmVsIHgyNjQtZGV2ZWwgeHZpZGNvcmUtZGV2ZWwgamFjay1k ZXZlbCBTREwyLWRldmVsCisgbGliY2Rpby1wYXJhbm9pYS1kZXZlbCBsaWJydG1wLWRldmVsIGxp Ym1vZHBsdWctZGV2ZWwgZ251dGxzLWRldmVsCisgc3BlZXgtZGV2ZWwgY2VsdC1kZXZlbCBoYXJm YnV6ei1kZXZlbCBsaWJhc3MtZGV2ZWwgb3B1cy1kZXZlbCBvY2wtaWNkLWRldmVsCisgbGliYnMy Yi1kZXZlbCBsaWJ2aWRzdGFiLWRldmVsICQodm9wdF9pZiBwdWxzZWF1ZGlvIHB1bHNlYXVkaW8t ZGV2ZWwpCisgJCh2b3B0X2lmIHZhYXBpIGxpYnZhLWRldmVsKSAkKHZvcHRfaWYgdmRwYXUgbGli dmRwYXUtZGV2ZWwpCisgJCh2b3B0X2lmIHgyNjUgeDI2NS1kZXZlbCkgJCh2b3B0X2lmIHY0bDIg djRsLXV0aWxzLWRldmVsKQorICQodm9wdF9pZiBmZGtfYWFjIGZkay1hYWMtZGV2ZWwpICQodm9w dF9pZiB2cHggbGlidnB4LWRldmVsKQorICQodm9wdF9pZiBhb20gbGliYW9tLWRldmVsKSAkKHZv cHRfaWYgc25kaW8gc25kaW8tZGV2ZWwpCisgJCh2b3B0X2lmIGRhdjFkIGxpYmRhdjFkLWRldmVs KSAkKHZvcHRfaWYgemltZyB6aW1nLWRldmVsKQorICQodm9wdF9pZiB3ZWJwIGxpYndlYnAtZGV2 ZWwpICQodm9wdF9pZiBzb2ZhIGxpYm15c29mYS1kZXZlbCkKKyAkKHZvcHRfaWYgZHJtIGxpYmRy bS1kZXZlbCkgJCh2b3B0X2lmIHN2dGF2MSBsaWJzdnQtYXYxLWRldmVsKQorICQodm9wdF9pZiBz cnQgc3J0LWRldmVsKSAkKHZvcHRfaWYgcmlzdCBsaWJyaXN0LWRldmVsKQorICQodm9wdF9pZiB2 dWxrYW4gJ3Z1bGthbi1sb2FkZXIgVnVsa2FuLUhlYWRlcnMnKQorICQodm9wdF9pZiBtZnggJ2xp Ym1meCBsaWJtZngtZGV2ZWwnKQorICQodm9wdF9pZiBudmVuYyBudi1jb2RlYy1oZWFkZXJzKSAk KHZvcHRfaWYgbnZkZWMgbnYtY29kZWMtaGVhZGVycykiCisKK2J1aWxkX29wdGlvbnM9IngyNjUg djRsMiB2YWFwaSB2ZHBhdSB2cHggZmRrX2FhYyBhb20gbnZlbmMgc25kaW8gcHVsc2VhdWRpbwor IGRhdjFkIHppbWcgd2VicCBzb2ZhIHZ1bGthbiBkcm0gc3Z0YXYxIHNydCByaXN0IG52ZGVjIG1m eCIKK2J1aWxkX29wdGlvbnNfZGVmYXVsdD0ieDI2NSB2NGwyIHZweCBhb20gc25kaW8gcHVsc2Vh dWRpbyBkYXYxZCB3ZWJwIHZ1bGthbiBkcm0gc3J0IHJpc3QiCisKK2Rlc2Nfb3B0aW9uX3NydD0i RW5hYmxlIHN1cHBvcnQgZm9yIFNSVCAoU2VjdXJlLCBSZWxpYWJsZSwgVHJhbnNwb3J0KSIKK2Rl c2Nfb3B0aW9uX3Jpc3Q9IkVuYWJsZSBzdXBwb3J0IGZvciBSSVNUIChSZWxpYWJsZSBJbnRlcm5l dCBTdHJlYW0gVHJhbnNwb3J0KSIKK2Rlc2Nfb3B0aW9uX3NvZmE9IkVuYWJsZSBzdXBwb3J0IGZv ciBBRVMgU09GQSIKK2Rlc2Nfb3B0aW9uX3dlYnA9IkVuYWJsZSBzdXBwb3J0IGZvciBXZWJQIgor CitjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwlpNjg2KikKKwkJCWhvc3RtYWtlZGVw ZW5kcys9IiBuYXNtIgorCQkJYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52 ZW5jIG52ZGVjIgorCQkJOzsKKwl4ODZfNjQqKQorCQkJaG9zdG1ha2VkZXBlbmRzKz0iIG5hc20i CisJCQlidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUgbWZ4IG52ZW5jIG52ZGVj IgorCQkJOzsKKwlwcGM2NCopIGJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSI7 OworCW1pcHMqKSBDRkxBR1M9Ii1tbmFuPWxlZ2FjeSI7OworZXNhYworCitpZiBbICIkWEJQU19U QVJHRVRfV09SRFNJWkUiICE9ICIzMiIgXTsgdGhlbgorCWJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9 IiBzdnRhdjEiCitmaQorCitpZiBbICIkWEJQU19UQVJHRVRfTk9fQVRPTUlDOCIgXTsgdGhlbgor CW1ha2VkZXBlbmRzKz0iIGxpYmF0b21pYy1kZXZlbCIKK2ZpCisKK19hcHBseV9wYXRjaCgpIHsK Kwlsb2NhbCBhcmdzPSIkMSIgcG5hbWU9IiQoYmFzZW5hbWUgJDIpIgorCisJaWYgWyAhIC1mICIu JHtwbmFtZX1fZG9uZSIgXTsgdGhlbgorCQlwYXRjaCAtTiAkYXJncyAtaSAkMgorCQl0b3VjaCAu JHtwbmFtZX1fZG9uZQorCWZpCit9CisKK3Bvc3RfcGF0Y2goKSB7CisJY2FzZSAiJFhCUFNfVEFS R0VUX01BQ0hJTkUiIGluCisJCXBwYzY0bGUqKSA7OworCQlwcGMqKSBfYXBwbHlfcGF0Y2ggLXAx ICR7RklMRVNESVJ9L2FsdGl2ZWMucGF0Y2ggOzsKKwllc2FjCit9CisKK2RvX2NvbmZpZ3VyZSgp IHsKKwkjIEZpeCBnY2Mgb24geDg2XzY0LW11c2wgb25seQorCWlmIFsgIiRYQlBTX1RBUkdFVF9N QUNISU5FIiA9ICJ4ODZfNjQtbXVzbCIgXTsgdGhlbgorCQl2c2VkIC1pIGNvbmZpZ3VyZSAtZSAi cztfY2ZsYWdzX3NwZWVkPSctTzMnO19jZmxhZ3Nfc3BlZWQ9Jy1PMic7IgorCWZpCisKKwlpZiBb ICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KKwkJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGlu CisJCQlhcm0qKSBfYXJjaD0iYXJtIjs7CisJCQlhYXJjaDY0KikgX2FyY2g9ImFhcmNoNjQiOzsK KwkJCW1pcHMqKSBfYXJjaD0ibWlwcyI7OworCQkJcHBjNjQqKSBfYXJjaD0icHBjNjQiOzsKKwkJ CXBwYyopIF9hcmNoPSJwcGMiOzsKKwkJCSopIF9hcmNoPSIke1hCUFNfVEFSR0VUX01BQ0hJTkUl JS1tdXNsfSI7OworCQllc2FjCisKKwkJX2FyZ3MrPSIgLS1lbmFibGUtY3Jvc3MtY29tcGlsZQor CQkJLS1zeXNyb290PSRYQlBTX0NST1NTX0JBU0UKKwkJCS0tY3Jvc3MtcHJlZml4PSR7WEJQU19D Uk9TU19UUklQTEVUfS0KKwkJCS0tdGFyZ2V0LW9zPWxpbnV4IC0tYXJjaD0ke19hcmNofSIKKwlm aQorCisJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCXBwY3xwcGMtbXVzbCkgX2Fy Z3MrPSIgLS1kaXNhYmxlLWFsdGl2ZWMiOzsKKwllc2FjCisKKwlpZiBbICIkWEJQU19UQVJHRVRf Tk9fQVRPTUlDOCIgXTsgdGhlbgorCQlfYXJncys9IiAtLWV4dHJhLWxpYnM9LWxhdG9taWMiCisJ ZmkKKworCS4vY29uZmlndXJlIC0tcHJlZml4PS91c3IgLS1kaXNhYmxlLWRlYnVnIC0tZW5hYmxl LWdwbCAtLWVuYWJsZS1nbnV0bHMgXAorCQktLWRpc2FibGUtc3RyaXBwaW5nIFwKKwkJLS1lbmFi bGUtbGliY2RpbyAtLWVuYWJsZS12ZXJzaW9uMyAtLWVuYWJsZS1ydW50aW1lLWNwdWRldGVjdCBc CisJCS0tZW5hYmxlLWxpYm1wM2xhbWUgLS1lbmFibGUtbGlidm9yYmlzIC0tZW5hYmxlLWxpYnh2 aWQgXAorCQktLWVuYWJsZS1saWJ4MjY0ICQodm9wdF9lbmFibGUgdnB4IGxpYnZweCkgLS1lbmFi bGUtbGlidGhlb3JhIFwKKwkJLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLXN0YXRpYyAtLWVuYWJs ZS1saWJ4Y2IgXAorCQkkKHZvcHRfZW5hYmxlIHB1bHNlYXVkaW8gbGlicHVsc2UpIC0tZW5hYmxl LWxpYmZyZWV0eXBlIC0tZW5hYmxlLWxpYm1vZHBsdWcgXAorCQktLWVuYWJsZS1saWJzcGVleCAt LWVuYWJsZS1saWJjZWx0IC0tZW5hYmxlLWxpYmFzcyBcCisJCS0tZW5hYmxlLWxpYm9wdXMgLS1l bmFibGUtbGlicnRtcCAtLWVuYWJsZS1saWJqYWNrIFwKKwkJJCh2b3B0X2lmIGZka19hYWMgJy0t ZW5hYmxlLW5vbmZyZWUgLS1lbmFibGUtbGliZmRrLWFhYycpIFwKKwkJLS1kaXNhYmxlLWxpYm9w ZW5jb3JlX2Ftcm5iIC0tZGlzYWJsZS1saWJvcGVuY29yZV9hbXJ3YiBcCisJCS0tZGlzYWJsZS1s aWJvcGVuanBlZyBcCisJCS0tZW5hYmxlLXBvc3Rwcm9jIC0tZW5hYmxlLW9wZW5jbCAke19hcmdz fSBcCisJCSQodm9wdF9lbmFibGUgeDI2NSBsaWJ4MjY1KSBcCisJCSQodm9wdF9lbmFibGUgdjRs MiBsaWJ2NGwyKSBcCisJCSQodm9wdF9lbmFibGUgYW9tIGxpYmFvbSkgJCh2b3B0X2VuYWJsZSB2 YWFwaSkgJCh2b3B0X2VuYWJsZSB2ZHBhdSkgXAorCQktLWVuYWJsZS1saWJiczJiIC0tZW5hYmxl LWF2cmVzYW1wbGUgLS1lbmFibGUtbGlidmlkc3RhYiBcCisJCSQodm9wdF9lbmFibGUgZGF2MWQg bGliZGF2MWQpIFwKKwkJJCh2b3B0X2VuYWJsZSB6aW1nIGxpYnppbWcpIFwKKwkJJCh2b3B0X2Vu YWJsZSB3ZWJwIGxpYndlYnApIFwKKwkJJCh2b3B0X2VuYWJsZSBzb2ZhIGxpYm15c29mYSkgXAor CQkkKHZvcHRfZW5hYmxlIHZ1bGthbikgXAorCQkkKHZvcHRfZW5hYmxlIGRybSBsaWJkcm0pIFwK KwkJJCh2b3B0X2VuYWJsZSBzdnRhdjEgbGlic3Z0YXYxKSBcCisJCSQodm9wdF9lbmFibGUgc3J0 IGxpYnNydCkgXAorCQkkKHZvcHRfZW5hYmxlIHJpc3QgbGlicmlzdCkgXAorCQkkKHZvcHRfZW5h YmxlIG1meCBsaWJtZngpIFwKKwkJJCh2b3B0X2lmIG52ZW5jICctLWVuYWJsZS1udmVuYycpIFwK KwkJJCh2b3B0X2lmIG52ZGVjICctLWVuYWJsZS1udmRlYycpCit9CisKK2RvX2J1aWxkKCkgewor CW1ha2UgJHttYWtlam9ic30KKwltYWtlIGRvYy9mZnttcGVnLHBsYXl9LjEKK30KKworZG9faW5z dGFsbCgpIHsKKwltYWtlIERFU1RESVI9JHtERVNURElSfSBpbnN0YWxsIGluc3RhbGwtbWFuCisJ cm0gLXJmICR7REVTVERJUn0vdXNyL2JpbgorfQorCitsaWJhdmNvZGVjNF9wYWNrYWdlKCkgewor CXNob3J0X2Rlc2M9IkZGbXBlZyBjb2RlYyBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2 bW92ZSAidXNyL2xpYi9saWJhdmNvZGVjLnNvLioiCisJfQorfQorCitsaWJhdmRldmljZTRfcGFj a2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgZGV2aWNlIGhhbmRsaW5nIGxpYnJhcnkiCisJ cGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2ZGV2aWNlLnNvLioiCisJfQor fQorCitsaWJhdnJlc2FtcGxlNF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyBhdWRp byByZXNhbXBsaW5nIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGli L2xpYmF2cmVzYW1wbGUuc28uKiIKKwl9Cit9CisKK2xpYmF2Zm9ybWF0NF9wYWNrYWdlKCkgewor CXNob3J0X2Rlc2M9IkZGbXBlZyBmaWxlIGZvcm1hdCBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkg eworCQl2bW92ZSAidXNyL2xpYi9saWJhdmZvcm1hdC5zby4qIgorCX0KK30KKworbGliYXZ1dGls NF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyB1dGlsaXR5IGxpYnJhcnkiCisJcGtn X2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2dXRpbC5zby4qIgorCX0KK30KKwor bGliYXZmaWx0ZXI0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGF1ZGlvL3ZpZGVv IGZpbHRlciBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJh dmZpbHRlci5zby4qIgorCX0KK30KKworbGlicG9zdHByb2M0X3BhY2thZ2UoKSB7CisJc2hvcnRf ZGVzYz0iRkZtcGVnIHZpZGVvIHBvc3Rwcm9jZXNzaW5nIGxpYnJhcnkiCisJcGtnX2luc3RhbGwo KSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYnBvc3Rwcm9jLnNvLioiCisJfQorfQorCitsaWJzd3Nj YWxlNF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyB2aWRlbyBzY2FsaW5nIGxpYnJh cnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYnN3c2NhbGUuc28uKiIK Kwl9Cit9CisKK2xpYnN3cmVzYW1wbGU0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVn IHZpZGVvIHJlc2FtcGxpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVz ci9saWIvbGlic3dyZXNhbXBsZS5zby4qIgorCX0KK30KKworZmZtcGVnNC1kZXZlbF9wYWNrYWdl KCkgeworCWRlcGVuZHM9IgorCQlsaWJhdmNvZGVjND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQor CQlsaWJhdmRldmljZTQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGliYXZmb3JtYXQ0Pj0k e3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYmF2dXRpbDQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lv bn0KKwkJbGliYXZmaWx0ZXI0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYnBvc3Rwcm9j ND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJzd3NjYWxlND49JHt2ZXJzaW9ufV8ke3Jl dmlzaW9ufQorCQlsaWJzd3Jlc2FtcGxlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJh dnJlc2FtcGxlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlzaG9ydF9kZXNjKz0iIC0gZGV2 ZWxvcG1lbnQgZmlsZXMiCisJY29uZmxpY3RzPSJmZm1wZWctZGV2ZWwiCisJaWYgWyAiJFhCUFNf VEFSR0VUX01BQ0hJTkUiID0gImk2ODYiIF07IHRoZW4KKwkJIyAvdXNyL2Jpbi9zdHJpcDogZXJy b3I6IHRoZSBpbnB1dCBmaWxlICcvZGVzdGRpci8vZmZtcGVnLWRldmVsLTQuNC40L3Vzci9saWIv bGliYXZmaWx0ZXIuYSh2Zl9hdGFkZW5vaXNlLm8pJyBoYXMgbm8gc2VjdGlvbnMKKwkJbm9zdHJp cF9maWxlcz0iL3Vzci9saWIvbGliYXZmaWx0ZXIuYSIKKwlmaQorCXBrZ19pbnN0YWxsKCkgewor CQl2bW92ZSB1c3IvaW5jbHVkZQorCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCQl2bW92ZSAi dXNyL2xpYi8qLmEiCisJCXZtb3ZlICJ1c3IvbGliLyouc28iCisJCXZtb3ZlIHVzci9zaGFyZS9m Zm1wZWcvZXhhbXBsZXMKKwkJdm1vdmUgdXNyL3NoYXJlL21hbi9tYW4zCisJfQorfQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9saWJhdmNvZGVjNCBiL3NyY3BrZ3MvbGliYXZjb2RlYzQKbmV3IGZpbGUg bW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmIKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2xpYmF2Y29kZWM0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2ZGV2aWNlNCBi L3NyY3BrZ3MvbGliYXZkZXZpY2U0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAw MDAwMC4uODg3ZjM1NGU3YzZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJhdmRldmlj ZTQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZmaWx0ZXI0IGIvc3JjcGtncy9saWJhdmZpbHRlcjQKbmV3 IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmIKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2ZmlsdGVyNApAQCAtMCwwICsxIEBACitmZm1wZWc0 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdmZv cm1hdDQgYi9zcmNwa2dzL2xpYmF2Zm9ybWF0NApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAw MDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGli YXZmb3JtYXQ0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2cmVzYW1wbGU0IGIvc3JjcGtncy9saWJhdnJl c2FtcGxlNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2YzNTRl N2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZyZXNhbXBsZTQKQEAgLTAsMCAr MSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvbGliYXZ1dGlsNCBiL3NyY3BrZ3MvbGliYXZ1dGlsNApuZXcgZmlsZSBtb2RlIDEyMDAw MAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvbGliYXZ1dGlsNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJwb3N0cHJvYzQgYi9zcmNwa2dzL2xp YnBvc3Rwcm9jNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2Yz NTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGlicG9zdHByb2M0CkBAIC0wLDAg KzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9z cmNwa2dzL2xpYnN3cmVzYW1wbGU0IGIvc3JjcGtncy9saWJzd3Jlc2FtcGxlNApuZXcgZmlsZSBt b2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvbGlic3dyZXNhbXBsZTQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlic3dzY2FsZTQg Yi9zcmNwa2dzL2xpYnN3c2NhbGU0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAw MDAwMC4uODg3ZjM1NGU3YzZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJzd3NjYWxl NApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKRnJv bSA5MzIyZTNhMTRlMzM2ZTdhNTAzODQxZmQ4ODJjOGI4OGUxMmU3NjFjIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDE5OjU5OjA0IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDMvMTEzXSBvcGVuY3Y6 IHVwZGF0ZSB0byA0LjcuMC4KCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgfCAxMDQgKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtncy9vcGVuY3YvdGVt cGxhdGUgfCAgIDggKystLQogMiBmaWxlcyBjaGFuZ2VkLCA1NiBpbnNlcnRpb25zKCspLCA1NiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29tbW9uL3NobGlicwpp bmRleCBkYzNmMDM0ODcxNzMuLmVjY2VmNjAwMjFjNCAxMDA2NDQKLS0tIGEvY29tbW9uL3NobGli cworKysgYi9jb21tb24vc2hsaWJzCkBAIC0yMTM1LDU4ICsyMTM1LDU4IEBAIGxpYmNhcHN0b25l LnNvLjQgY2Fwc3RvbmUtNC4wXzEKIGxpYmhhdmVnZS5zby4yIGxpYmhhdmVnZWQtMS45LjExXzEK IGxpYm5paC5zby4xIGxpYm5paC0xLjAuM18xCiBsaWJuaWgtZGJ1cy5zby4xIGxpYm5paC0xLjAu M18xCi1saWJvcGVuY3ZfcXVhbGl0eS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5j dl9yZWcuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3VyZmFjZV9tYXRjaGlu Zy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl94cGhvdG8uc28uNDA2IGxpYm9w ZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZnJlZXR5cGUuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8x Ci1saWJvcGVuY3ZfZnV6enkuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaGZz LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ltZ19oYXNoLnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2xpbmVfZGVzY3JpcHRvci5zby40MDYgbGlib3BlbmN2 LTQuNi4wXzEKLWxpYm9wZW5jdl9zYWxpZW5jeS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxp Ym9wZW5jdl9zdHJ1Y3R1cmVkX2xpZ2h0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3Bl bmN2X2FydWNvLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Jnc2VnbS5zby40 MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9iaW9pbnNwaXJlZC5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9jY2FsaWIuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1s aWJvcGVuY3ZfZmFjZS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl90cmFja2lu Zy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl94ZmVhdHVyZXMyZC5zby40MDYg bGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9vcHRmbG93LnNvLjQwNiBsaWJvcGVuY3YtNC42 LjBfMQotbGlib3BlbmN2X3hpbWdwcm9jLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3Bl bmN2X3Bsb3Quc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfdGV4dC5zby40MDYg bGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9tbC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEK LWxpYm9wZW5jdl9vYmpkZXRlY3Quc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zf ZG5uLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3NoYXBlLnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3N0aXRjaGluZy5zby40MDYgbGlib3BlbmN2LTQuNi4w XzEKLWxpYm9wZW5jdl9waG90by5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl92 aWRlby5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9jYWxpYjNkLnNvLjQwNiBs aWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ZlYXR1cmVzMmQuc28uNDA2IGxpYm9wZW5jdi00 LjYuMF8xCi1saWJvcGVuY3ZfZmxhbm4uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVu Y3ZfaGlnaGd1aS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl92aWRlb2lvLnNv LjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ltZ2NvZGVjcy5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9pbWdwcm9jLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X2NvcmUuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3VwZXJy ZXMuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfdmlkZW9zdGFiLnNvLjQwNiBs aWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2dhcGkuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8x Ci1saWJvcGVuY3ZfeG9iamRldGVjdC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5j dl9kYXRhc2V0cy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9kbm5fb2JqZGV0 ZWN0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Rubl9zdXBlcnJlcy5zby40 MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9kcG0uc28uNDA2IGxpYm9wZW5jdi00LjYu MF8xCi1saWJvcGVuY3ZfcGhhc2VfdW53cmFwcGluZy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEK LWxpYm9wZW5jdl9zdGVyZW8uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfcmFw aWQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaW50ZW5zaXR5X3RyYW5zZm9y bS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9hbHBoYW1hdC5zby40MDYgbGli b3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9iYXJjb2RlLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBf MQotbGlib3BlbmN2X21jYy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKK2xpYm9wZW5jdl9xdWFs aXR5LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3JlZy5zby40MDcgbGlib3Bl bmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zdXJmYWNlX21hdGNoaW5nLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQorbGlib3BlbmN2X3hwaG90by5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9w ZW5jdl9mcmVldHlwZS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mdXp6eS5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9oZnMuc28uNDA3IGxpYm9wZW5jdi00 LjcuMF8xCitsaWJvcGVuY3ZfaW1nX2hhc2guc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3ZfbGluZV9kZXNjcmlwdG9yLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2 X3NhbGllbmN5LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N0cnVjdHVyZWRf bGlnaHQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYXJ1Y28uc28uNDA3IGxp Ym9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYmdzZWdtLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBf MQorbGlib3BlbmN2X2Jpb2luc3BpcmVkLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3Bl bmN2X2NjYWxpYi5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mYWNlLnNvLjQw NyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3RyYWNraW5nLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQorbGlib3BlbmN2X3hmZWF0dXJlczJkLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQor bGlib3BlbmN2X29wdGZsb3cuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfeGlt Z3Byb2Muc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfcGxvdC5zby40MDcgbGli b3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl90ZXh0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQor bGlib3BlbmN2X21sLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X29iamRldGVj dC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9kbm4uc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCitsaWJvcGVuY3Zfc2hhcGUuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3Zfc3RpdGNoaW5nLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3Bob3Rv LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3ZpZGVvLnNvLjQwNyBsaWJvcGVu Y3YtNC43LjBfMQorbGlib3BlbmN2X2NhbGliM2Quc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCits aWJvcGVuY3ZfZmVhdHVyZXMyZC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9m bGFubi5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9oaWdoZ3VpLnNvLjQwNyBs aWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3ZpZGVvaW8uc28uNDA3IGxpYm9wZW5jdi00Ljcu MF8xCitsaWJvcGVuY3ZfaW1nY29kZWNzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3Bl bmN2X2ltZ3Byb2Muc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfY29yZS5zby40 MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zdXBlcnJlcy5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl92aWRlb3N0YWIuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCits aWJvcGVuY3ZfZ2FwaS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl94b2JqZGV0 ZWN0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2RhdGFzZXRzLnNvLjQwNyBs aWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Rubl9vYmpkZXRlY3Quc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCitsaWJvcGVuY3ZfZG5uX3N1cGVycmVzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBf MQorbGlib3BlbmN2X2RwbS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9waGFz ZV91bndyYXBwaW5nLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N0ZXJlby5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9yYXBpZC5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl9pbnRlbnNpdHlfdHJhbnNmb3JtLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQorbGlib3BlbmN2X2FscGhhbWF0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGli b3BlbmN2X2JhcmNvZGUuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfbWNjLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQogbGlidW5pY29uZi5zby40LjYgd3ZzdHJlYW1zLTQuNi4x XzIwCiBsaWJ3dmJhc2Uuc28uNC42IHd2c3RyZWFtcy00LjYuMV8yMAogbGlid3Z1dGlscy5zby40 LjYgd3ZzdHJlYW1zLTQuNi4xXzIwCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5jdi90ZW1wbGF0 ZSBiL3NyY3BrZ3Mvb3BlbmN2L3RlbXBsYXRlCmluZGV4IDY5YzYzNWIxYWQyYi4uNDFmMzE4M2Yx NTgyIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5jdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29w ZW5jdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5j dicKIHBrZ25hbWU9b3BlbmN2Ci12ZXJzaW9uPTQuNi4wCi1yZXZpc2lvbj00Cit2ZXJzaW9uPTQu Ny4wCityZXZpc2lvbj0xCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jrc3JjPSR7cGtnbmFt ZX0tJHt2ZXJzaW9ufQogYnVpbGRfc3R5bGU9Y21ha2UKQEAgLTI0LDggKzI0LDggQEAgaG9tZXBh Z2U9Imh0dHBzOi8vb3BlbmN2Lm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9naXRodWIuY29tL29w ZW5jdi9vcGVuY3Yvd2lraS9DaGFuZ2VMb2ciCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNv bS9vcGVuY3Yvb3BlbmN2L2FyY2hpdmUvJHt2ZXJzaW9ufS50YXIuZ3oKICBodHRwczovL2dpdGh1 Yi5jb20vb3BlbmN2L29wZW5jdl9jb250cmliL2FyY2hpdmUvJHt2ZXJzaW9ufS50YXIuZ3o+Y29u dHJpYi50YXIuZ3oiCi1jaGVja3N1bT0iMWVjMWNiYTY1ZjlmMjBmZTVhNDFmZGExNTg2ZTAxYzcw ZWEwYzlhNmQ3YjY3YzllMTNlZGYwY2ZlMjIzOTI3NwotIDE3NzdkNWZkMmI1OTAyOWNmNTM3ZTVm ZDZmOGFhNjhkNzA3MDc1ODIyZjkwYmRlNjgzZmNkZTA4NmY4NWY3YTciCitjaGVja3N1bT0iOGRm MDA3OWNkYmUxNzk3NDhhMThkNDQ3MzFhZjYyYTI0NWE0NWViZjUwODUyMjNkYzAzMTMzOTU0YzY2 Mjk3MworIDQyZGY4NDBjZjkwNTVlNTlkMGUyMmMyNDljZmIxOWYwNDc0M2UxYmRhZDExM2QzMWIx NTczZDM5MzRkNjI1ODQiCiBwYXRjaF9hcmdzPSItTnAxIC1kICR7YnVpbGRfd3Jrc3JjfSIKICMg dGVzdHMgaGFuZyBpbmRlbmZpbml0ZWx5LCBldmVuIHdpdGggdGVzdCBkYXRhIGluY2x1ZGVkCiBt YWtlX2NoZWNrPW5vCgpGcm9tIDVkNWI3MTQ4OGUxYWQ0NGJhNDBjOWQ3MTQ4NTk2MTA2MGRkOTZm OTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDUgLTA0MDAKU3ViamVjdDogW1BBVENI IDAwNC8xMTNdIGFjdGlvbmE6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dz L2FjdGlvbmEvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUgYi9z cmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUKaW5kZXggY2Y1ZjBiN2EyYWU2Li4wZDg5OTMxMWU2ZGYg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2FjdGlv bmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhY3Rpb25h JwogcGtnbmFtZT1hY3Rpb25hCiB2ZXJzaW9uPTMuMTAuMQotcmV2aXNpb249MgorcmV2aXNpb249 MwogYnVpbGRfc3R5bGU9cW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSJQS0dDT05GSUdfT1BFTkNWPW9w ZW5jdjQiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LXBsdWdpbi1teXNxbCBxdDUt cW1ha2UgcXQ1LWhvc3QtdG9vbHMiCgpGcm9tIDJmM2MwNzRlMmM0OTY4M2Y5NGM0YzQ4NDgzNDRl ZTJmMzA2YmUzY2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDUgLTA0MDAKU3ViamVj dDogW1BBVENIIDAwNS8xMTNdIGdtaWM6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBz cmNwa2dzL2dtaWMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dtaWMvdGVtcGxhdGUgYi9z cmNwa2dzL2dtaWMvdGVtcGxhdGUKaW5kZXggMjRhOWM3MjE4ZmRmLi4wYmI0MDM0ZDVjYzggMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvZ21pYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dtaWMvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnbWljJwogcGtnbmFtZT1n bWljCiB2ZXJzaW9uPTMuMS42Ci1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBfemFydF9oYXNoPTM0 ZWJmNmNjZTBiYWZiOThhYmU1N2NlYzgzYzRhMDJjZDFhYmVjYTAKIGNyZWF0ZV93cmtzcmM9eWVz CiBidWlsZF93cmtzcmM9InNyYyIKCkZyb20gN2RiNDRjOTlkOWE4MzFmOTQ1ZGI5OTdlOTJhNDll ZGE3ZTJiZmU0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAxOTo1OTo0NiAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDA2LzExM10gcWltZ3Y6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBz cmNwa2dzL3FpbWd2L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZSBi L3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUKaW5kZXggN2ViMzBkYjMzOTkyLi5kZDM0MWRmZTFiZmMg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xaW1ndi90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3FpbWd2JwogcGtn bmFtZT1xaW1ndgogdmVyc2lvbj0xLjAuMgotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRf c3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIkKHZvcHRfaWYgdmlkZW8gLURWSURFT19TVVBQ T1JUPU9OIC1EVklERU9fU1VQUE9SVD1PRkYpCiAgJCh2b3B0X2lmIHNjYWxlIC1ET1BFTkNWX1NV UFBPUlQ9T04gLURPUEVOQ1ZfU1VQUE9SVD1PRkYpCgpGcm9tIGQ4Zjg4ODM1ZDY4MDgzZTYzYTM4 M2I4NjQzMzhlMGYyNTI0ZDlkMmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0 MDAKU3ViamVjdDogW1BBVENIIDAwNy8xMTNdIHJldHJvc2hhcmU6IHJldmJ1bXAgZm9yIG9wZW5j di00LjcuMAoKLS0tCiBzcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3JldHJvc2hhcmUvdGVtcGxhdGUgYi9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKaW5k ZXggOGEwNzg2YzIxYTA4Li43MjAyM2ZhOThiNzUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmV0cm9z aGFyZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdyZXRyb3NoYXJlJwogcGtnbmFtZT1yZXRyb3No YXJlCiB2ZXJzaW9uPTAuNi42Ci1yZXZpc2lvbj0yCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1x bWFrZQogI1hYWCBicm9hZGNhc3QgZmVhdHVyZSByZXF1aXJlcyBhbiBhbmNpZW50IHVkcC1kaXNj b3ZlcnktY3BwIHdoaWNoIGVpdGhlciBuZWVkcwogIyB0byBiZSBmZXRjaGVkK3BhdGNoZWQgKEZU QkZTKSBoZXJlIG9yIHBhY2thZ2VkIDovCgpGcm9tIDJlMmRlMzUwMjBlMjg2NTg1ODA0OGJjNDUx ZGIwNTA2MWRiMjVkYWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3Vi amVjdDogW1BBVENIIDAwOC8xMTNdIHdhaWZ1MngtY29udmVydGVyLWNwcDogcmV2YnVtcCBmb3Ig b3BlbmN2LTQuNy4wCgotLS0KIHNyY3BrZ3Mvd2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUgYi9zcmNw a2dzL3dhaWZ1MngtY29udmVydGVyLWNwcC90ZW1wbGF0ZQppbmRleCA4YzA5NWQwZDdiYWIuLmFh NTJkOGM5ODFhOCAxMDA2NDQKLS0tIGEvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVt cGxhdGUKKysrIGIvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd3YWlmdTJ4LWNvbnZlcnRlci1jcHAnCiBw a2duYW1lPXdhaWZ1MngtY29udmVydGVyLWNwcAogdmVyc2lvbj01LjIuNAotcmV2aXNpb249Mgor cmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRElOU1RBTExf TU9ERUxTPU9OIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSA1MWM1YTJkZWIx OThjNzg5YzE5YTI0MzRlOWQ0NzIzYmU2OWFlZGMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAwOjM4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDkvMTEzXSB2bGM6IHJldmJ1bXAgZm9yIGZm bXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy92bGMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBj aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy92bGMvdGVtcGxhdGUgYi9zcmNwa2dzL3ZsYy90ZW1wbGF0ZQppbmRleCAyMTA3NjJiMGE3 ZTIuLjg1NWNhNTIzODY2MiAxMDA2NDQKLS0tIGEvc3JjcGtncy92bGMvdGVtcGxhdGUKKysrIGIv c3JjcGtncy92bGMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICd2bGMnCiBwa2duYW1lPXZsYwogdmVyc2lvbj0zLjAuMTgKLXJldmlzaW9uPTMKK3JldmlzaW9u PTQKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUt Z21lIC0tZGlzYWJsZS1saWJ0YXIgLS1lbmFibGUtamFjawogIC0tZW5hYmxlLWxpdmU1NTUgLS1k aXNhYmxlLWZsdWlkc3ludGggLS1lbmFibGUtZHZkcmVhZApAQCAtMjUsNyArMjUsNyBAQCBsaWIz MmRpc2FibGVkPXllcwogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBsaWJ0b29sIHBrZy1jb25m aWcgZmxleCBnZXR0ZXh0IGxpYmdjcnlwdC1kZXZlbAogIGxpdmU1NTUtZGV2ZWwgZ2V0dGV4dC1k ZXZlbCAkKHZvcHRfaWYgbHVhIGx1YTUyKSAkKHZvcHRfaWYgY2hyb21lY2FzdCBwcm90b2J1Ziki CiBtYWtlZGVwZW5kcz0iCi0gYXZhaGktbGlicy1kZXZlbCBkYnVzLWdsaWItZGV2ZWwgZmFhZDIt ZGV2ZWwgZmZtcGVnLWRldmVsIGZyZWVmb250LXR0ZgorIGF2YWhpLWxpYnMtZGV2ZWwgZGJ1cy1n bGliLWRldmVsIGZhYWQyLWRldmVsIGZmbXBlZzQtZGV2ZWwgZnJlZWZvbnQtdHRmCiAgZ251dGxz LWRldmVsIGphY2stZGV2ZWwgbGliYTUyLWRldmVsIGxpYmFzcy1kZXZlbCBsaWJibHVyYXktZGV2 ZWwKICBsaWJjZGlvLWRldmVsIGxpYmRjYS1kZXZlbCBsaWJkdmJwc2ktZGV2ZWwgbGliZHZkbmF2 LWRldmVsIGxpYm1hZC1kZXZlbAogIGxpYm1hdHJvc2thLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwg bGlibXBjZGVjLWRldmVsIGxpYm1wZWcyLWRldmVsCgpGcm9tIGQwOGZjOTY2OGIyMzlhNzY1ZTQw YTQ3Y2RjNzY0NGVmZTU4YjRiMTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDA6NTUgLTA0 MDAKU3ViamVjdDogW1BBVENIIDAxMC8xMTNdIG9zZzogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQu MwoKLS0tCiBzcmNwa2dzL29zZy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3NnL3RlbXBs YXRlIGIvc3JjcGtncy9vc2cvdGVtcGxhdGUKaW5kZXggYTllYmJkMjg3OTMzLi43NTU3OTNmN2Ux MWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3NnL3Rl bXBsYXRlCkBAIC04LDcgKzgsNyBAQCBidWlsZF9oZWxwZXI9InFlbXUiCiBjb25maWd1cmVfYXJn cz0iLURMSUJfUE9TVEZJWD0iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgeHJhbmRyIgog bWFrZWRlcGVuZHM9Ik1lc2FMaWItZGV2ZWwgZ3RrZ2xleHQtZGV2ZWwgbGliY3VybC1kZXZlbCBn aWZsaWItZGV2ZWwgbGlicnN2Zy1kZXZlbAotIGphc3Blci1kZXZlbCB0aWZmLWRldmVsIGxpYmdk YWwtZGV2ZWwgbGliZ3RhLWRldmVsIGZmbXBlZy1kZXZlbCB4aW5lLWxpYi1kZXZlbAorIGphc3Bl ci1kZXZlbCB0aWZmLWRldmVsIGxpYmdkYWwtZGV2ZWwgbGliZ3RhLWRldmVsIGZmbXBlZzQtZGV2 ZWwgeGluZS1saWItZGV2ZWwKICBTREwyLWRldmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsCiAg JCh2b3B0X2lmIG9wZW5leHIgbGlib3BlbmV4ci1kZXZlbCkKICAkKHZvcHRfaWYgcG9wcGxlciBw b3BwbGVyLWdsaWItZGV2ZWwpCgpGcm9tIDZjOGU0ODFjYWJkNTFhYmU0NmM2ZGVmYjQzMjRmZjk2 NmFkNzFhZjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6MTMgLTA0MDAKU3ViamVjdDog W1BBVENIIDAxMS8xMTNdIHhpbmUtbGliOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0K IHNyY3BrZ3MveGluZS1saWIvdGVtcGxhdGUgfCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMg aW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3hpbmUt bGliL3RlbXBsYXRlIGIvc3JjcGtncy94aW5lLWxpYi90ZW1wbGF0ZQppbmRleCBmNzEzZWZmNDli MDcuLmVkNjE5NGMxN2QxMSAxMDA2NDQKLS0tIGEvc3JjcGtncy94aW5lLWxpYi90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3hpbmUtbGliL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAneGluZS1saWInCiBwa2duYW1lPXhpbmUtbGliCi12ZXJzaW9uPTEuMi4xMgor dmVyc2lvbj0xLjIuMTMKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNv bmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtdmNkIC0tZGlzYWJsZS1nbm9tZXZmcyAtLXdpdGhvdXQt ZXNvdW5kIC0tZGlzYWJsZS1keHIzCkBAIC04LDcgKzgsNyBAQCBjb25maWd1cmVfYXJncz0iLS1k aXNhYmxlLXZjZCAtLWRpc2FibGUtZ25vbWV2ZnMgLS13aXRob3V0LWVzb3VuZCAtLWRpc2FibGUt ZHhyMwogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBnZXR0ZXh0LWRldmVsIGxpYnRvb2wgcGtn LWNvbmZpZyBwZXJsIgogbWFrZWRlcGVuZHM9IgogIHpsaWItZGV2ZWwgYWxzYS1saWItZGV2ZWwg bGlieGNiLWRldmVsIGxpYlNNLWRldmVsIGxpYlhleHQtZGV2ZWwgbGliWHYtZGV2ZWwKLSBsaWJY dk1DLWRldmVsIGxpYmE1Mi1kZXZlbCBsaWJtYWQtZGV2ZWwgZmZtcGVnLWRldmVsIHB1bHNlYXVk aW8tZGV2ZWwKKyBsaWJYdk1DLWRldmVsIGxpYmE1Mi1kZXZlbCBsaWJtYWQtZGV2ZWwgZmZtcGVn NC1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCiAgamFjay1kZXZlbCBzYW1iYS1kZXZlbCBsaWJmbGFj LWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgbGlibXBjZGVjLWRldmVsCiAgc3BlZXgtZGV2ZWwgbGli dGhlb3JhLWRldmVsIGxpYnZvcmJpcy1kZXZlbCBsaWJkY2EtZGV2ZWwgZmFhZDItZGV2ZWwKICBs aWJjZGlvLWRldmVsIGxpYmJsdXJheS1kZXZlbCBhYWxpYi1kZXZlbCBsaWJjYWNhLWRldmVsIGxp YlhpbmVyYW1hLWRldmVsCkBAIC0xOSw3ICsxOSw3IEBAIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0 ZXIsIExHUEwtMi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHA6Ly93d3cueGluZS1wcm9qZWN0 Lm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMveGluZS9m aWxlcy94aW5lLWxpYi8ke3ZlcnNpb259L1JFQURNRS50eHQvdmlldyIKIGRpc3RmaWxlcz0iJHtT T1VSQ0VGT1JHRV9TSVRFfS94aW5lLyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVj a3N1bT1kNjA2MjcwNDY4ZTE1NDBjMmE4OWMwZDdmNWZkZjExZTE3ZWNjMGMyNjk4Y2MwYmNiMTA2 NWZmMjZhYmVlMDk4CitjaGVja3N1bT01ZjEwZDZkNzE4YTRhNTFjMTdlZDFiMzJiMDMxZDRmOWI4 MGIwNjFlODI3NjUzNWIyYmUzMWU1YWM0Yjc1ZTZmCiAKIGNhc2UgIiRYQlBTX1RBUkdFVF9NQUNI SU5FIiBpbgogCWk2ODYtbXVzbCkKCkZyb20gNWVjMjA1MGJmNDY1YzJmNzlhNGIxYTNiYzBiYTRk MjQwM2VjZWU4YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDEyLzExM10gUU1QbGF5MjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL1FNUGxheTIvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL1FNUGxheTIvdGVtcGxh dGUgYi9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUKaW5kZXggODUwZGY5ZDQxOGI5Li44ZDJjZTdh NzYxNTYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvUU1QbGF5Mi90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L1FNUGxheTIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdR TVBsYXkyJwogcGtnbmFtZT1RTVBsYXkyCiB2ZXJzaW9uPTIzLjA2LjE3Ci1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmln IHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIKIG1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBm Zm1wZWctZGV2ZWwgbGliYXNzLWRldmVsIGxpYmNkaW8tZGV2ZWwgbGliZ21lLWRldmVsCgpGcm9t IDU5YWQzMmU1YTY2ZGY4MTJiMzU5ZWQ1MDUwYTY3OGI3MmVkMDAzMGEgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxMy8xMTNdIGFsc2EtcGx1 Z2luczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Fsc2EtcGx1Z2lucy90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtn cy9hbHNhLXBsdWdpbnMvdGVtcGxhdGUKaW5kZXggMGJmYTZkOWZkMjY0Li5hNTcwOGE3ZDgyYTgg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv YWxzYS1wbHVnaW5zL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnYWxzYS1wbHVnaW5zJwogcGtnbmFtZT1hbHNhLXBsdWdpbnMKIHZlcnNpb249MS4yLjcuMQot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmln dXJlX2FyZ3M9Ii0tZGlzYWJsZS1tYWVtby1wbHVnaW4iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWciCgpGcm9tIGZkOGNmZWYxZTA3OTI4MzU4ZTM0MjZmZGZmNWYwNDU5ZTI3MGNmNGIgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNC8x MTNdIGFyY2FuOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYXJjYW4vdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2FyY2FuL3RlbXBsYXRlIGIvc3JjcGtncy9hcmNhbi90 ZW1wbGF0ZQppbmRleCA3YmU5NjUyZWNjZjMuLmNjYzdkZjExY2VhYyAxMDA2NDQKLS0tIGEvc3Jj cGtncy9hcmNhbi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2FyY2FuL3RlbXBsYXRlCkBAIC0yLDcg KzIsNyBAQAogIyAhISBrZWVwIHN5bmNlZCB3aXRoOiBhY2ZnZnMgYWNsaXAgYWxvYWRpbWFnZQog cGtnbmFtZT1hcmNhbgogdmVyc2lvbj0wLjYuMi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBj cmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jrc3JjPWFyY2FuL3NyYwogYnVpbGRfc3R5bGU9Y21h a2UKCkZyb20gMjVmMjU3NzZhYzAzZDc4MWMxOGY2ZWJlNGM0YjE4ZjgxODEyYzNmMCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE1LzExM10g YXR0cmFjdDogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2F0dHJhY3Qv dGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlIGIvc3JjcGtn cy9hdHRyYWN0L3RlbXBsYXRlCmluZGV4IDI2MTQ0ZTkzMWEzYy4uZTc2MGJmMGQxOGFlIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdHRyYWN0L3Rl bXBsYXRlCkBAIC0xLDEyICsxLDEyIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhdHRyYWN0Jwog cGtnbmFtZT1hdHRyYWN0CiB2ZXJzaW9uPTIuNi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIG1ha2VfYnVpbGRfYXJncz0iVkVSQk9TRT0xIgogbWFr ZV91c2VfZW52PXllcwogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9 IlNGTUwtZGV2ZWwgZmZtcGVnLWRldmVsIGZvbnRjb25maWctZGV2ZWwgZ2x1LWRldmVsIGxpYmFy Y2hpdmUtZGV2ZWwKK21ha2VkZXBlbmRzPSJTRk1MLWRldmVsIGZmbXBlZzQtZGV2ZWwgZm9udGNv bmZpZy1kZXZlbCBnbHUtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbAogIGxpYmN1cmwtZGV2ZWwgbGli anBlZy10dXJiby1kZXZlbCB4aW5lLWxpYiByYXBpZGpzb24gbGliWHJhbmRyLWRldmVsIgogZGVw ZW5kcz0iZ2l0Igogc2hvcnRfZGVzYz0iQXR0cmFjdC1Nb2RlIGlzIGEgZ3JhcGhpY2FsIGZyb250 ZW5kIGZvciBlbXVsYXRvcnMiCgpGcm9tIGYzN2ZlY2YyOWI4YjY5YWQyYjIyYzY4MmZlMjQzZTFi MDJjNDMyNzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDog W1BBVENIIDAxNi8xMTNdIGF1YmlvOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3MvYXViaW8vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgMjUgKysrKysrKysrKysrKysrKysrKysr KysrKwogc3JjcGtncy9hdWJpby90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxl cyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9hdWJpby9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2F1YmlvL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvYXViaW8vcGF0Y2hl cy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u YWFjZTQxYTZlNmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9hdWJpby9wYXRjaGVzL2Zm bXBlZzUucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSA4YTA1NDIwZTVkZDhjN2I4YjI0NDdm ODJkYzkxOTc2NTg3NjUxMWIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBC cm9zc2llciA8cGllbUBwaWVtLm9yZz4KK0RhdGU6IFR1ZSwgMjUgSmFuIDIwMjIgMTg6MzA6Mjcg KzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW3NvdXJjZV9hdmNvZGVjXSBkZWZpbmUgRkZfQVBJX0xB VkZfQVZDVFggZm9yIGxpYmF2Y29kZWMgPgorIDU5LCB0aHggQGJlcm9saW51eCAoY2xvc2VzIGdo LTM1MykKKworLS0tCisgc3JjL2lvL3NvdXJjZV9hdmNvZGVjLmMgfCA0ICsrKysKKyAxIGZpbGUg Y2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvaW8vc291cmNlX2F2 Y29kZWMuYyBiL3NyYy9pby9zb3VyY2VfYXZjb2RlYy5jCitpbmRleCBlMGFlOTNiNS4uMTQyMWJk OWEgMTAwNjQ0CistLS0gYS9zcmMvaW8vc291cmNlX2F2Y29kZWMuYworKysrIGIvc3JjL2lvL3Nv dXJjZV9hdmNvZGVjLmMKK0BAIC02OCw2ICs2OCwxMCBAQAorICNkZWZpbmUgQVVCSU9fQVZDT0RF Q19NQVhfQlVGRkVSX1NJWkUgQVZfSU5QVVRfQlVGRkVSX01JTl9TSVpFCisgI2VuZGlmCisgCisr I2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA+PSA1OQorKyNkZWZpbmUgRkZfQVBJX0xBVkZf QVZDVFggMQorKyNlbmRpZgorKworIHN0cnVjdCBfYXViaW9fc291cmNlX2F2Y29kZWNfdCB7Cisg ICB1aW50X3QgaG9wX3NpemU7CisgICB1aW50X3Qgc2FtcGxlcmF0ZTsKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvYXViaW8vdGVtcGxhdGUgYi9zcmNwa2dzL2F1YmlvL3RlbXBsYXRlCmluZGV4IGFkMWM0 YjI1Njk5MS4uN2Q4NzVjYzAyNTQxIDEwMDY0NAotLS0gYS9zcmNwa2dzL2F1YmlvL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvYXViaW8vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdhdWJpbycKIHBrZ25hbWU9YXViaW8KIHZlcnNpb249MC40LjkKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXdhZjMKICMgWFhYIGxhc2gsIHB1cmUgYW5kIHN3 aWcgc3VwcG9ydC4KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyB0eHQybWFuIgoKRnJvbSBk ZGIwYzZkZjNmOTBiYTlmNWQ4ZWIyZGQzZTU3YTI0MDhlMTRmYWEyIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTcvMTEzXSBhdWRhY2lvdXMt cGx1Z2luczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4vYXVkYWNpb3VzLXBsdWdp bnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoICAgfCA0MyArKysrKysrKysrKysrKysrKysrCiBzcmNw a2dzL2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBsYXRlICAgICAgICAgICAgfCAgMiArLQogMiBmaWxl cyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnNS5wYXRj aCBiL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGU1ZTM0MDk5ZDcxCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0 Y2gKQEAgLTAsMCArMSw0MyBAQAorY29tbWl0IDI5OGFhMzcxYzU2YzJmNTJjMjVhMzNkOWJkZWM0 OTE4YjExY2ViZGMKK0F1dGhvcjogdGliZXF1YWRvcmlhbiA8dGliZXF1YWRvcmlhbkBwb3N0ZW8u ZGU+CitEYXRlOiAgIFNhdCBNYXIgMTkgMTg6NDA6MTIgMjAyMiArMDEwMAorCisgICAgYXVkYWNp b3VzLXBsdWdpbnM6IHJlYnVpbGQgYWdhaW5zdCBmZm1wZWctNS4wCisKK2RpZmYgLS1naXQgYS9z cmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnLTUuMC5wYXRjaCBiL3NyY3Br Z3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWctNS4wLnBhdGNoCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNjE3YzExMjE1YgorLS0tIC9kZXYvbnVsbAor KysrIGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZy01LjAucGF0Y2gK K0BAIC0wLDAgKzEsMzEgQEAKKytGcm9tIGY2MGJlYjQwMGVlYjFlNDc3OGJiZmQ3MzhiYzRhNGNj ZWYzZGU1MzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCisrRnJvbTogSm9obiBMaW5kZ3JlbiA8 am9obkBqbGluZGdyZW4ubmV0PgorK0RhdGU6IFNhdCwgNSBNYXIgMjAyMiAxMjowNTozNCAtMDUw MAorK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggRkZtcGVnIDUuMAorKworKy0tLQor KyBzcmMvZmZhdWRpby9mZmF1ZGlvLWNvcmUuY2MgfCA0ICsrLS0KKysgMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKysKKytkaWZmIC0tZ2l0IGEvc3JjL2Zm YXVkaW8vZmZhdWRpby1jb3JlLmNjIGIvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisraW5k ZXggMTZkYzYzZTNhLi5hMmI5NWZkNmMgMTAwNjQ0CisrLS0tIGEvc3JjL2ZmYXVkaW8vZmZhdWRp by1jb3JlLmNjCisrKysrIGIvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisrQEAgLTI3NCw3 ICsyNzQsNyBAQCBzdGF0aWMgQVZJbnB1dEZvcm1hdCAqIGdldF9mb3JtYXRfYnlfY29udGVudCAo Y29uc3QgY2hhciAqIG5hbWUsIFZGU0ZpbGUgJiBmaWxlKQorKyAgICAgICAgIEFWUHJvYmVEYXRh IGQgPSB7bmFtZSwgYnVmLCBmaWxsZWR9OworKyAgICAgICAgIHNjb3JlID0gdGFyZ2V0OworKyAK KystICAgICAgICBmID0gYXZfcHJvYmVfaW5wdXRfZm9ybWF0MiAoJiBkLCB0cnVlLCAmIHNjb3Jl KTsKKysrICAgICAgICBmID0gKEFWSW5wdXRGb3JtYXQgKikgYXZfcHJvYmVfaW5wdXRfZm9ybWF0 MiAoJiBkLCB0cnVlLCAmIHNjb3JlKTsKKysgICAgICAgICBpZiAoZikKKysgICAgICAgICAgICAg YnJlYWs7CisrIAorK0BAIC0zNDcsNyArMzQ3LDcgQEAgc3RhdGljIGJvb2wgZmluZF9jb2RlYyAo QVZGb3JtYXRDb250ZXh0ICogYywgQ29kZWNJbmZvICogY2luZm8pCisrICNlbmRpZgorKyAgICAg ICAgIGlmIChzdHJlYW0gJiYgc3RyZWFtLT5jb2RlY3BhciAmJiBzdHJlYW0tPmNvZGVjcGFyLT5j b2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTykKKysgICAgICAgICB7CisrLSAgICAgICAg ICAgIEFWQ29kZWMgKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyIChzdHJlYW0tPmNvZGVj cGFyLT5jb2RlY19pZCk7CisrKyAgICAgICAgICAgIEFWQ29kZWMgKiBjb2RlYyA9IChBVkNvZGVj ICopIGF2Y29kZWNfZmluZF9kZWNvZGVyIChzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCk7Cisr IAorKyAgICAgICAgICAgICBpZiAoY29kZWMpCisrICAgICAgICAgICAgIHsKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUgYi9zcmNwa2dzL2F1ZGFjaW91cy1w bHVnaW5zL3RlbXBsYXRlCmluZGV4IDg4Y2JjMTY3MWZjNi4uYmVlYmZhZTU5ZWQ0IDEwMDY0NAot LS0gYS9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYXVk YWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBACiAjS2VlcCBpbiBzeW5jIHdp dGggYXVkYWNpb3VzIQogcGtnbmFtZT1hdWRhY2lvdXMtcGx1Z2lucwogdmVyc2lvbj00LjMuMQot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdz PSIkKHZvcHRfYm9vbCBndGszIGd0aykgJCh2b3B0X2Jvb2wgZ3RrMykKICAkKHZvcHRfYm9vbCBx dCkgJCh2b3B0X2Jvb2wgcXQgcXQ2KSIKCkZyb20gZTJiM2FlM2RmZWIzOTBkOWQ2ZDY5ZmQ0MjM1 YzMzZTg1NzFkZWY3MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDE4LzExM10gYXVkYWNpdHk6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMK Ci0tLQogc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZSB8IDUgKystLS0KIDEgZmlsZSBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9h dWRhY2l0eS90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUKaW5kZXggZDUwOWMw YTg5NDA3Li4xMWUyMDI1NTY4NWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ2F1ZGFjaXR5JwogcGtnbmFtZT1hdWRhY2l0eQogdmVyc2lvbj0yLjQu MQotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29u ZmlndXJlX2FyZ3M9Ii0td2l0aC1mZm1wZWc9c3lzdGVtIC0td2l0aC1saWJzbmRmaWxlPXN5c3Rl bSAtLXdpdGgtZXhwYXQ9c3lzdGVtCiAgLS13aXRoLWxpYnNveHI9c3lzdGVtIC0td2l0aC1sYW1l PXN5c3RlbSAtLXdpdGgtbHYyPXN5c3RlbSBhY19jdl9wYXRoX1dYX0NPTkZJRz13eC1jb25maWct Z3RrMyIKQEAgLTksNyArOSw3IEBAIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBjbWFrZSBn ZXR0ZXh0IGxpYnRvb2wgbTQgd2hpY2giCiBtYWtlZGVwZW5kcz0iamFjay1kZXZlbCB3eFdpZGdl dHMtZ3RrMy1kZXZlbCBndGsrMy1kZXZlbAogIGxpYm1hZC1kZXZlbCBzb3VuZHRvdWNoLWRldmVs IGxpYnNveHItZGV2ZWwKICB2YW1wLXBsdWdpbi1zZGstZGV2ZWwgbGFtZS1kZXZlbCBsaWJpZDN0 YWctZGV2ZWwgbGliZmxhYy1kZXZlbAotIGZmbXBlZy1kZXZlbCB0d29sYW1lLWRldmVsIHNlcmQt ZGV2ZWwgbHYyIGxpbHYtZGV2ZWwgc3VpbC1kZXZlbCIKKyBmZm1wZWc0LWRldmVsIHR3b2xhbWUt ZGV2ZWwgc2VyZC1kZXZlbCBsdjIgbGlsdi1kZXZlbCBzdWlsLWRldmVsIgogZGVwZW5kcz0iZGVz a3RvcC1maWxlLXV0aWxzIGhpY29sb3ItaWNvbi10aGVtZSIKIHNob3J0X2Rlc2M9IkdyYXBoaWNh bCBjcm9zcy1wbGF0Zm9ybSBhdWRpbyBlZGl0b3IiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3Jw aGFuQHZvaWRsaW51eC5vcmc+IgpAQCAtMzMsNSArMzMsNCBAQCBwb3N0X2luc3RhbGwoKSB7CiAJ dmNvcHkgcGx1Zy1pbnMgL3Vzci9zaGFyZS9hdWRhY2l0eQogCiAJcm0gJHtERVNURElSfS91c3Iv c2hhcmUvZG9jL2F1ZGFjaXR5L0xJQ0VOU0UudHh0Ci0JdmxpY2Vuc2UgTElDRU5TRS50eHQgTElD RU5TRQogfQoKRnJvbSAxNDcxNzVlMjBiYjc1YTNjZWY2ZDE3YTAyMDc3ODhmMWEwZmM3MmQzIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTkv MTEzXSBhdmlkZW11eDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2F2aWRl bXV4L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdmlkZW11eC90ZW1wbGF0ZSBiL3NyY3Br Z3MvYXZpZGVtdXgvdGVtcGxhdGUKaW5kZXggMjUzYTAyNDNlMjI1Li41NTcyODU5ODJkMmIgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdmlkZW11 eC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2F2aWRlbXV4 JwogcGtnbmFtZT1hdmlkZW11eAogdmVyc2lvbj0yLjguMAotcmV2aXNpb249MgorcmV2aXNpb249 MwogIyBDYW4ndCBiZSBjb21waWxlZCBmb3IgYWFyY2g2NCwgYXJtKiBvciBtaXBzKgogYXJjaHM9 Ing4Nl82NCogaTY4NioiCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHBrZy1jb25maWcgcXQ1LWhv c3QtdG9vbHMgcXQ1LWRldmVsIHRhciB5YXNtIgoKRnJvbSAyYTcyMjViNDJlYWI4YzVhYjFkMDEw NDFjN2ZjZGZhNDBjMjUyMWViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwMjAvMTEzXSBiYXJlc2lwOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFyZXNp cC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQppbmRleCBmMWJkMTgxNzA0OGIu LmIyMWUyMjMzNDMxNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ2JhcmVzaXAnCiBwa2duYW1lPWJhcmVzaXAKIHZlcnNpb249Mi4xMC4wCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIGdsaWItZGV2ZWwiCiBtYWtlZGVwZW5kcz0ibGliZ3NtLWRldmVsIGxpYnBuZy1kZXZl bCBvcGVuc3NsLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwKCkZyb20gOTkwM2Y2YTkxYjUxYTA4N2Fh NTNjZmMzYmQ2YWJlY2JlNWE3Y2M3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDIxLzExM10gYmxlbmRlcjogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUgfCA2ICsrKy0tLQogMSBmaWxlIGNo YW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL2JsZW5kZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUKaW5kZXggZWM3 MjRiYjBhNmRjLi4wZjcyODc2ZDRkNzAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYmxlbmRlci90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdibGVuZGVyJwogcGtnbmFtZT1ibGVuZGVyCiB2ZXJzaW9uPTMuNS4x Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0ieDg2XzY0KiBwcGM2NCoiCiBidWlsZF9z dHlsZT0iY21ha2UiCiBweWNvbXBpbGVfZGlycz0iL3Vzci9zaGFyZS9ibGVuZGVyLyR7dmVyc2lv biUuKn0vc2NyaXB0cyIKQEAgLTksOCArOSw4IEBAIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfSU5T VEFMTF9QT1JUQUJMRT1PRkYgLURXSVRIX1BZVEhPTl9JTlNUQUxMPU9GRgogIC1EV0lUSF9KQUNL PU9OIC1EV0lUSF9DT0RFQ19GRk1QRUc9T04gLURXSVRIX0NPREVDX1NOREZJTEU9T04gLURXSVRI X09QRU5NUD1PTgogIC1EV0lUSF9GRlRXMz1PTiAtRFdJVEhfTU9EX09DRUFOU0lNPU9OIC1EV0lU SF9DWUNMRVNfRU1CUkVFPU9GRiAtRFdJVEhfT1BFTkNPTE9SSU89T04KICAtRFdJVEhfSU1BR0Vf T1BFTkVYUj1PTiAtRFdJVEhfSU1BR0VfT1BFTkpQRUc9T04gLURXSVRIX09QRU5TVUJESVY9T04K LSAtRFdJVEhfT1BFTkNPTExBREE9T04gLURXSVRIX1NZU1RFTV9HTEVXPU9OIC1EV0lUSF9PUEVO VkRCPU9OIC1EV0lUSF9BTEVNQklDPU9OCi0gLURXSVRIX0dIT1NUX1gxMT1PTiAtRFdJVEhfR0hP U1RfV0FZTEFORD1PTiAtRFdJVEhfR0hPU1RfTElCREVDT1I9T04KKyAtRFdJVEhfT1BFTkNPTExB REE9T04gLURXSVRIX09QRU5WREI9T04gLURXSVRIX0FMRU1CSUM9T04KKyAtRFdJVEhfR0hPU1Rf WDExPU9OIC1EV0lUSF9HSE9TVF9XQVlMQU5EPU9OIC1EV0lUSF9HSE9TVF9XQVlMQU5EX0xJQkRF Q09SPU9OCiAgLURXSVRIX0JVSUxESU5GTz1PRkYgLURQWVRIT05fVkVSU0lPTj0ke3B5M192ZXJ9 IC1EUFlUSE9OX0xJQlBBVEg9L3Vzci9saWIKICAtRFBZVEhPTl9MSUJSQVJZPXB5dGhvbiR7cHkz X3Zlcn0ke3B5M19hYml2ZXJ9IC1EUFlUSE9OX0lOQ0xVREVfRElSUz0vJHtweTNfaW5jfQogIC1E V0lUSF9TWVNURU1fTFpPPU9OIC1EV0lUSF9TWVNURU1fRUlHRU4zPU9OIC1EV0lUSF9TWVNURU1f RlJFRVRZUEU9T04iCgpGcm9tIDU2OTJjNjI3OGY4Nzk1OThjMTc4ZjBhZTRkNWFhOWI1OTg4Yzhi YmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENI IDAyMi8xMTNdIGNhbnRhdGE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9j YW50YXRhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlIGIvc3Jj cGtncy9jYW50YXRhL3RlbXBsYXRlCmluZGV4IDRiNDE3ZDgwZDVjMi4uOGE5MGFhYTRjMDdhIDEw MDY0NAotLS0gYS9zcmNwa2dzL2NhbnRhdGEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jYW50YXRh L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnY2FudGF0YScK IHBrZ25hbWU9Y2FudGF0YQogdmVyc2lvbj0yLjUuMAotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtcW1ha2Ug cXQ1LWhvc3QtdG9vbHMgcXQ1LXRvb2xzIgogbWFrZWRlcGVuZHM9InF0NS1kZXZlbCBxdDUtdG9v bHMtZGV2ZWwgcXQ1LXN2Zy1kZXZlbCBxdDUteG1scGF0dGVybnMtZGV2ZWwKCkZyb20gZjc5Zjgy ODI1NWIwNjI0NmJkYjc2ODRiODQzYzI2YmNlMzZkNjNmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDIzLzExM10gY2NleHRyYWN0b3I6IHJl dmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0 ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NjZXh0cmFjdG9yL3RlbXBsYXRlIGIvc3JjcGtncy9j Y2V4dHJhY3Rvci90ZW1wbGF0ZQppbmRleCA5YWJjZDgyODUyYjIuLjZlY2NhZDU4ODVhZiAxMDA2 NDQKLS0tIGEvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NjZXh0 cmFjdG9yL3RlbXBsYXRlCkBAIC0xLDEyICsxLDEyIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdj Y2V4dHJhY3RvcicKIHBrZ25hbWU9Y2NleHRyYWN0b3IKIHZlcnNpb249MC45MwotcmV2aXNpb249 MQorcmV2aXNpb249MgogYnVpbGRfd3Jrc3JjPSJsaW51eCIKIGJ1aWxkX3N0eWxlPWdudS1jb25m aWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1vY3IgLS1lbmFibGUtaGFyZHN1YngiCiBo b3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIHBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0ibGVwdG9u aWNhLWRldmVsIHRlc3NlcmFjdC1vY3ItZGV2ZWwgZmZtcGVnLWRldmVsIgorbWFrZWRlcGVuZHM9 ImxlcHRvbmljYS1kZXZlbCB0ZXNzZXJhY3Qtb2NyLWRldmVsIGZmbXBlZzQtZGV2ZWwiCiBzaG9y dF9kZXNjPSJFeHRyYWN0IHN1YnRpdGxlcyBmcm9tIHZpZGVvIHN0cmVhbXMiCiBtYWludGFpbmVy PSJuZXdibHVlbW9vbiA8YmxhdW1vbGNoQG1haWxib3gub3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAt b3ItbGF0ZXIiCgpGcm9tIDg4ODIwN2I4NTliMjE1MTllMDA3ZmE0NWE2YWFkN2Q3ZTMxYWI3ZDkg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAy NC8xMTNdIGNocm9tYXByaW50OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mv Y2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgNTY5ICsrKysrKysrKysrKysrKysr KysrKysKIHNyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUgICAgICAgICAgICAgIHwgICAyICst CiAyIGZpbGVzIGNoYW5nZWQsIDU3MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jaHJvbWFwcmludC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9tYXByaW50L3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBi L3NyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTlmZDMwN2EyM2M4Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9jaHJvbWFwcmludC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSw1 NjkgQEAKK0Zyb20gOGNjYWQ2OTM3MTc3YjFiOTJlNDBhYjhmNDQ0N2VhMjdiYWMwMDlhNyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9MdWs9QzM9QTE9QzU9QTE9MjBM YWxpbnNrPUMzPUJEPz0gPGxhbGluc2t5QGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgNCBOb3YgMjAy MiAyMTo0NzozOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBVc2UgRkZtcGVnIDUueCAoIzEyMCkK KworKiBVc2UgRkZtcGVnIDUuMS4yIGZvciBDSSBidWlsZHMKKworKiBCdWlsZCBvbiBVYnVudHUg MjAuMDQKKworKiBVcGdyYWRlIGNvZGUgdG8gRkZtcGVnIDUueCBBUElzCisKKyogT25seSBzZXQg RkZtcGVnIGluY2x1ZGUgZGlycyBpZiBidWlsZGluZyB0b29scworCisqIE5vIGxvbmdlciBuZWVk ZWQKKworKiBVc2UgdWJ1bnR1IDIwLjA0CistLS0KKyAuZ2l0aHViL3dvcmtmbG93cy9idWlsZC55 bWwgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KKyBDTWFrZUxpc3RzLnR4dCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMTYgLS0KKyBwYWNrYWdlL2J1aWxkLnNoICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KKyBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3By b2Nlc3Nvci5oICAgICAgICAgICAgfCAgIDIgLQorIHNyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJv Y2Vzc29yX2F2cmVzYW1wbGUuaCB8ICA3MiAtLS0tLS0tCisgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRp b19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oIHwgIDE4ICstCisgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRp b19yZWFkZXIuaCAgICAgICAgICAgICAgIHwgMTk3ICsrKysrKysrKy0tLS0tLS0tLQorIHRlc3Rz L0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArCisgOCBmaWxl cyBjaGFuZ2VkLCAxMjIgaW5zZXJ0aW9ucygrKSwgMTk5IGRlbGV0aW9ucygtKQorIGRlbGV0ZSBt b2RlIDEwMDY0NCBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgK KworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IGY4 ZDZhMzIuLjRkYTI0MDUgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VM aXN0cy50eHQKK0BAIC04NCw5ICs4NCw2IEBAIGZpbmRfcGFja2FnZShGRm1wZWcpCisgaWYoRkZN UEVHX0xJQlJBUklFUykKKyAJY21ha2VfcHVzaF9jaGVja19zdGF0ZShSRVNFVCkKKyAJc2V0KENN QUtFX1JFUVVJUkVEX0xJQlJBUklFUyAke0ZGTVBFR19MSUJSQVJJRVN9ICR7Q01BS0VfVEhSRUFE X0xJQlNfSU5JVH0gLWxtKQorLQljaGVja19mdW5jdGlvbl9leGlzdHMoYXZfcGFja2V0X3VucmVm IEhBVkVfQVZfUEFDS0VUX1VOUkVGKQorLQljaGVja19mdW5jdGlvbl9leGlzdHMoYXZfZnJhbWVf YWxsb2MgSEFWRV9BVl9GUkFNRV9BTExPQykKKy0JY2hlY2tfZnVuY3Rpb25fZXhpc3RzKGF2X2Zy YW1lX2ZyZWUgSEFWRV9BVl9GUkFNRV9GUkVFKQorIAljbWFrZV9wb3BfY2hlY2tfc3RhdGUoKQor IGVuZGlmKCkKKworQEAgLTE2MywxNCArMTYwLDExIEBAIG1lc3NhZ2UoU1RBVFVTICJVc2luZyAk e0ZGVF9MSUJ9IGZvciBGRlQgY2FsY3VsYXRpb25zIikKKyBpZihOT1QgQVVESU9fUFJPQ0VTU09S X0xJQikKKyAJaWYoRkZNUEVHX0xJQlNXUkVTQU1QTEVfRk9VTkQpCisgCQlzZXQoQVVESU9fUFJP Q0VTU09SX0xJQiAic3dyZXNhbXBsZSIpCistCWVsc2VpZihGRk1QRUdfTElCQVZSRVNBTVBMRV9G T1VORCkKKy0JCXNldChBVURJT19QUk9DRVNTT1JfTElCICJhdnJlc2FtcGxlIikKKyAJZW5kaWYo KQorIGVuZGlmKCkKKworIGlmKEFVRElPX1BST0NFU1NPUl9MSUIgU1RSRVFVQUwgInN3cmVzYW1w bGUiKQorIAlpZihGRk1QRUdfTElCU1dSRVNBTVBMRV9GT1VORCkKKy0JCXNldChVU0VfQVZSRVNB TVBMRSBPRkYpCisgCQlzZXQoVVNFX1NXUkVTQU1QTEUgT04pCisgCQlzZXQoQVVESU9fUFJPQ0VT U09SX0xJQlJBUklFUyAke0ZGTVBFR19MSUJTV1JFU0FNUExFX0xJQlJBUklFU30pCisgCQlzZXQo QVVESU9fUFJPQ0VTU09SX0lOQ0xVREVfRElSUyAke0ZGTVBFR19MSUJTV1JFU0FNUExFX0lOQ0xV REVfRElSU30pCitAQCAtMTc4LDE2ICsxNzIsNiBAQCBpZihBVURJT19QUk9DRVNTT1JfTElCIFNU UkVRVUFMICJzd3Jlc2FtcGxlIikKKyAJCW1lc3NhZ2UoRkFUQUxfRVJST1IgIlNlbGVjdGVkICR7 QVVESU9fUFJPQ0VTU09SX0xJQn0gZm9yIGF1ZGlvIHByb2Nlc3NpbmcsIGJ1dCB0aGUgbGlicmFy eSBpcyBub3QgZm91bmQiKQorIAllbmRpZigpCisgCW1lc3NhZ2UoU1RBVFVTICJVc2luZyAke0FV RElPX1BST0NFU1NPUl9MSUJ9IGZvciBhdWRpbyBjb252ZXJzaW9uIikKKy1lbHNlaWYoQVVESU9f UFJPQ0VTU09SX0xJQiBTVFJFUVVBTCAiYXZyZXNhbXBsZSIpCistCWlmKEZGTVBFR19MSUJBVlJF U0FNUExFX0ZPVU5EKQorLQkJc2V0KFVTRV9BVlJFU0FNUExFIE9OKQorLQkJc2V0KFVTRV9TV1JF U0FNUExFIE9GRikKKy0JCXNldChBVURJT19QUk9DRVNTT1JfTElCUkFSSUVTICR7RkZNUEVHX0xJ QkFWUkVTQU1QTEVfTElCUkFSSUVTfSkKKy0JCXNldChBVURJT19QUk9DRVNTT1JfSU5DTFVERV9E SVJTICR7RkZNUEVHX0xJQkFWUkVTQU1QTEVfSU5DTFVERV9ESVJTfSkKKy0JZWxzZSgpCistCQlt ZXNzYWdlKEZBVEFMX0VSUk9SICJTZWxlY3RlZCAke0FVRElPX1BST0NFU1NPUl9MSUJ9IGZvciBh dWRpbyBwcm9jZXNzaW5nLCBidXQgdGhlIGxpYnJhcnkgaXMgbm90IGZvdW5kIikKKy0JZW5kaWYo KQorLQltZXNzYWdlKFNUQVRVUyAiVXNpbmcgJHtBVURJT19QUk9DRVNTT1JfTElCfSBmb3IgYXVk aW8gY29udmVyc2lvbiIpCisgZWxzZSgpCisgCW1lc3NhZ2UoU1RBVFVTICJCdWlsZGluZyB3aXRo b3V0IGF1ZGlvIGNvbnZlcnNpb24gc3VwcG9ydCwgcGxlYXNlIGluc3RhbGwgRkZtcGVnIHdpdGgg bGlic3dyZXNhbXBsZSIpCisgZW5kaWYoKQorZGlmZiAtLWdpdCBhL3BhY2thZ2UvYnVpbGQuc2gg Yi9wYWNrYWdlL2J1aWxkLnNoCitpbmRleCBkYTYzMWFlLi5iNDFkMzZlIDEwMDc1NQorLS0tIGEv cGFja2FnZS9idWlsZC5zaAorKysrIGIvcGFja2FnZS9idWlsZC5zaAorQEAgLTcsOCArNyw4IEBA IHNldCAtZXV4CisKKyBCQVNFX0RJUj0kKGNkICQoZGlybmFtZSAkMCkvLi4gJiYgcHdkKQorCist RkZNUEVHX1ZFUlNJT049NC40LjEKKy1GRk1QRUdfQlVJTERfVEFHPXY0LjQuMS0xCisrRkZNUEVH X1ZFUlNJT049NS4xLjIKKytGRk1QRUdfQlVJTERfVEFHPXYke0ZGTVBFR19WRVJTSU9OfS0xCisK KyBUTVBfQlVJTERfRElSPSRCQVNFX0RJUi8kKG1rdGVtcCAtZCBidWlsZC5YWFhYWFhYWCkKKyB0 cmFwICdybSAtcmYgJFRNUF9CVUlMRF9ESVInIEVYSVQKK2RpZmYgLS1naXQgYS9zcmMvYXVkaW8v ZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNz b3IuaAoraW5kZXggNzYyOGZjNy4uMzlmNGY2ZCAxMDA2NDQKKy0tLSBhL3NyYy9hdWRpby9mZm1w ZWdfYXVkaW9fcHJvY2Vzc29yLmgKKysrKyBiL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vz c29yLmgKK0BAIC0xMCw4ICsxMCw2IEBACisKKyAjaWYgZGVmaW5lZChVU0VfU1dSRVNBTVBMRSkK KyAjaW5jbHVkZSAiYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2FtcGxlLmgiCist I2VsaWYgZGVmaW5lZChVU0VfQVZSRVNBTVBMRSkKKy0jaW5jbHVkZSAiYXVkaW8vZmZtcGVnX2F1 ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgiCisgI2Vsc2UKKyAjZXJyb3IgIm5vIGF1ZGlvIHBy b2Nlc3NpbmcgbGlicmFyeSIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvYXVkaW8vZmZtcGVn X2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmggYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3By b2Nlc3Nvcl9hdnJlc2FtcGxlLmgKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggYmQ4 NWY5Mi4uMDAwMDAwMAorLS0tIGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZy ZXNhbXBsZS5oCisrKysgL2Rldi9udWxsCitAQCAtMSw3MiArMCwwIEBACistLy8gQ29weXJpZ2h0 IChDKSAyMDE2ICBMdWthcyBMYWxpbnNreQorLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQg bGljZW5zZSwgc2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCistCistI2lmbmRlZiBD SFJPTUFQUklOVF9BVURJT19GRk1QRUdfQVVESU9fUFJPQ0VTU09SX0FWUkVTQU1QTEVfSF8KKy0j ZGVmaW5lIENIUk9NQVBSSU5UX0FVRElPX0ZGTVBFR19BVURJT19QUk9DRVNTT1JfQVZSRVNBTVBM RV9IXworLQorLWV4dGVybiAiQyIgeworLSNpbmNsdWRlIDxsaWJhdnJlc2FtcGxlL2F2cmVzYW1w bGUuaD4KKy19CistCistbmFtZXNwYWNlIGNocm9tYXByaW50IHsKKy0KKy1jbGFzcyBGRm1wZWdB dWRpb1Byb2Nlc3NvciB7CistcHVibGljOgorLQlGRm1wZWdBdWRpb1Byb2Nlc3NvcigpIHsKKy0J CW1fcmVzYW1wbGVfY3R4ID0gYXZyZXNhbXBsZV9hbGxvY19jb250ZXh0KCk7CistCX0KKy0KKy0J fkZGbXBlZ0F1ZGlvUHJvY2Vzc29yKCkgeworLQkJYXZyZXNhbXBsZV9mcmVlKCZtX3Jlc2FtcGxl X2N0eCk7CistCX0KKy0KKy0Jdm9pZCBTZXRDb21wYXRpYmxlTW9kZSgpIHsKKy0JCWF2X29wdF9z ZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAiZmlsdGVyX3NpemUiLCAxNiwgMCk7CistCQlhdl9vcHRf c2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgInBoYXNlX3NoaWZ0IiwgOCwgMCk7CistCQlhdl9vcHRf c2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgImxpbmVhcl9pbnRlcnAiLCAxLCAwKTsKKy0JCWF2X29w dF9zZXRfZG91YmxlKG1fcmVzYW1wbGVfY3R4LCAiY3V0b2ZmIiwgMC44LCAwKTsKKy0JfQorLQor LQl2b2lkIFNldElucHV0Q2hhbm5lbExheW91dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7Cist CQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgImluX2NoYW5uZWxfbGF5b3V0IiwgY2hh bm5lbF9sYXlvdXQsIDApOworLQl9CistCistCXZvaWQgU2V0SW5wdXRTYW1wbGVGb3JtYXQoQVZT YW1wbGVGb3JtYXQgc2FtcGxlX2Zvcm1hdCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBs ZV9jdHgsICJpbl9zYW1wbGVfZm10Iiwgc2FtcGxlX2Zvcm1hdCwgMCk7CistCX0KKy0KKy0Jdm9p ZCBTZXRJbnB1dFNhbXBsZVJhdGUoaW50IHNhbXBsZV9yYXRlKSB7CistCQlhdl9vcHRfc2V0X2lu dChtX3Jlc2FtcGxlX2N0eCwgImluX3NhbXBsZV9yYXRlIiwgc2FtcGxlX3JhdGUsIDApOworLQl9 CistCistCXZvaWQgU2V0T3V0cHV0Q2hhbm5lbExheW91dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0 KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgIm91dF9jaGFubmVsX2xheW91 dCIsIGNoYW5uZWxfbGF5b3V0LCAwKTsKKy0JfQorLQorLQl2b2lkIFNldE91dHB1dFNhbXBsZUZv cm1hdChBVlNhbXBsZUZvcm1hdCBzYW1wbGVfZm9ybWF0KSB7CistCQlhdl9vcHRfc2V0X2ludCht X3Jlc2FtcGxlX2N0eCwgIm91dF9zYW1wbGVfZm10Iiwgc2FtcGxlX2Zvcm1hdCwgMCk7CistCX0K Ky0KKy0Jdm9pZCBTZXRPdXRwdXRTYW1wbGVSYXRlKGludCBzYW1wbGVfcmF0ZSkgeworLQkJYXZf b3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJvdXRfc2FtcGxlX2ZtdCIsIHNhbXBsZV9yYXRl LCAwKTsKKy0JfQorLQorLQlpbnQgSW5pdCgpIHsKKy0JCXJldHVybiBhdnJlc2FtcGxlX29wZW4o bV9yZXNhbXBsZV9jdHgpOworLQl9CistCistCWludCBDb252ZXJ0KHVpbnQ4X3QgKipvdXQsIGlu dCBvdXRfY291bnQsIGNvbnN0IHVpbnQ4X3QgKippbiwgaW50IGluX2NvdW50KSB7CistCQlyZXR1 cm4gYXZyZXNhbXBsZV9jb252ZXJ0KG1fcmVzYW1wbGVfY3R4LCBvdXQsIDAsIG91dF9jb3VudCwg KHVpbnQ4X3QgKiopIGluLCAwLCBpbl9jb3VudCk7CistCX0KKy0KKy0JaW50IEZsdXNoKHVpbnQ4 X3QgKipvdXQsIGludCBvdXRfY291bnQpIHsKKy0JCXJldHVybiBhdnJlc2FtcGxlX3JlYWQobV9y ZXNhbXBsZV9jdHgsIG91dCwgb3V0X2NvdW50KTsKKy0JfQorLQorLXByaXZhdGU6CistCUFWQXVk aW9SZXNhbXBsZUNvbnRleHQgKm1fcmVzYW1wbGVfY3R4ID0gbnVsbHB0cjsKKy19OworLQorLX07 IC8vIG5hbWVzcGFjZSBjaHJvbWFwcmludAorLQorLSNlbmRpZgorZGlmZiAtLWdpdCBhL3NyYy9h dWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaCBiL3NyYy9hdWRpby9mZm1w ZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaAoraW5kZXggYjg2MjY2Yi4uYjFkNGJlYSAx MDA2NDQKKy0tLSBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUu aAorKysrIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oCitA QCAtMjgsMzAgKzI4LDI4IEBAIHB1YmxpYzoKKyAJCWF2X29wdF9zZXRfZG91YmxlKG1fc3dyX2N0 eCwgImN1dG9mZiIsIDAuOCwgMCk7CisgCX0KKworLQl2b2lkIFNldElucHV0Q2hhbm5lbExheW91 dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgs ICJpY2wiLCBjaGFubmVsX2xheW91dCwgMCk7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgs ICJpY2giLCBhdl9nZXRfY2hhbm5lbF9sYXlvdXRfbmJfY2hhbm5lbHMoY2hhbm5lbF9sYXlvdXQp LCAwKTsKKysJdm9pZCBTZXRJbnB1dENoYW5uZWxMYXlvdXQoQVZDaGFubmVsTGF5b3V0ICpjaGFu bmVsX2xheW91dCkgeworKwkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAiaW5fY2hhbm5lbF9s YXlvdXQiLCBjaGFubmVsX2xheW91dC0+dS5tYXNrLCAwKTsKKyAJfQorCisgCXZvaWQgU2V0SW5w dXRTYW1wbGVGb3JtYXQoQVZTYW1wbGVGb3JtYXQgc2FtcGxlX2Zvcm1hdCkgeworLQkJYXZfb3B0 X3NldF9pbnQobV9zd3JfY3R4LCAiaXNmIiwgc2FtcGxlX2Zvcm1hdCwgMCk7CisrCQlhdl9vcHRf c2V0X3NhbXBsZV9mbXQobV9zd3JfY3R4LCAiaW5fc2FtcGxlX2ZtdCIsIHNhbXBsZV9mb3JtYXQs IDApOworIAl9CisKKyAJdm9pZCBTZXRJbnB1dFNhbXBsZVJhdGUoaW50IHNhbXBsZV9yYXRlKSB7 CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJpc3IiLCBzYW1wbGVfcmF0ZSwgMCk7Cisr CQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJpbl9zYW1wbGVfcmF0ZSIsIHNhbXBsZV9yYXRl LCAwKTsKKyAJfQorCistCXZvaWQgU2V0T3V0cHV0Q2hhbm5lbExheW91dChpbnQ2NF90IGNoYW5u ZWxfbGF5b3V0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJvY2wiLCBjaGFubmVs X2xheW91dCwgMCk7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJvY2giLCBhdl9nZXRf Y2hhbm5lbF9sYXlvdXRfbmJfY2hhbm5lbHMoY2hhbm5lbF9sYXlvdXQpLCAwKTsKKysJdm9pZCBT ZXRPdXRwdXRDaGFubmVsTGF5b3V0KEFWQ2hhbm5lbExheW91dCAqY2hhbm5lbF9sYXlvdXQpIHsK KysJCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgIm91dF9jaGFubmVsX2xheW91dCIsIGNoYW5u ZWxfbGF5b3V0LT51Lm1hc2ssIDApOworIAl9CisKKyAJdm9pZCBTZXRPdXRwdXRTYW1wbGVGb3Jt YXQoQVZTYW1wbGVGb3JtYXQgc2FtcGxlX2Zvcm1hdCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9z d3JfY3R4LCAib3NmIiwgc2FtcGxlX2Zvcm1hdCwgMCk7CisrCQlhdl9vcHRfc2V0X3NhbXBsZV9m bXQobV9zd3JfY3R4LCAib3V0X3NhbXBsZV9mbXQiLCBzYW1wbGVfZm9ybWF0LCAwKTsKKyAJfQor CisgCXZvaWQgU2V0T3V0cHV0U2FtcGxlUmF0ZShpbnQgc2FtcGxlX3JhdGUpIHsKKy0JCWF2X29w dF9zZXRfaW50KG1fc3dyX2N0eCwgIm9zciIsIHNhbXBsZV9yYXRlLCAwKTsKKysJCWF2X29wdF9z ZXRfaW50KG1fc3dyX2N0eCwgIm91dF9zYW1wbGVfcmF0ZSIsIHNhbXBsZV9yYXRlLCAwKTsKKyAJ fQorCisgCWludCBJbml0KCkgeworZGlmZiAtLWdpdCBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9f cmVhZGVyLmggYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3JlYWRlci5oCitpbmRleCA1NTUwMTY0 Li4xYzZiMzQ2IDEwMDY0NAorLS0tIGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIuaAor KysrIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIuaAorQEAgLTYyLDcgKzYyLDcgQEAg cHVibGljOgorIAlib29sIFJlYWQoY29uc3QgaW50MTZfdCAqKmRhdGEsIHNpemVfdCAqc2l6ZSk7 CisKKyAJYm9vbCBJc09wZW4oKSBjb25zdCB7IHJldHVybiBtX29wZW5lZDsgfQorLQlib29sIElz RmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBtX2ZpbmlzaGVkICYmICFtX2dvdF9mcmFtZTsgfQor Kwlib29sIElzRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiAhbV9oYXNfbW9yZV9wYWNrZXRzICYm ICFtX2hhc19tb3JlX2ZyYW1lczsgfQorCisgCXN0ZDo6c3RyaW5nIEdldEVycm9yKCkgY29uc3Qg eyByZXR1cm4gbV9lcnJvcjsgfQorIAlpbnQgR2V0RXJyb3JDb2RlKCkgY29uc3QgeyByZXR1cm4g bV9lcnJvcl9jb2RlOyB9CitAQCAtNzQsMjAgKzc0LDE5IEBAIHByaXZhdGU6CisgCXVpbnQ4X3Qg Km1fY29udmVydF9idWZmZXJbMV0gPSB7IG51bGxwdHIgfTsKKyAJaW50IG1fY29udmVydF9idWZm ZXJfbmJfc2FtcGxlcyA9IDA7CisKKy0JQVZJbnB1dEZvcm1hdCAqbV9pbnB1dF9mbXQgPSBudWxs cHRyOworKwljb25zdCBBVklucHV0Rm9ybWF0ICptX2lucHV0X2ZtdCA9IG51bGxwdHI7CisgCUFW RGljdGlvbmFyeSAqbV9pbnB1dF9vcHRzID0gbnVsbHB0cjsKKworIAlBVkZvcm1hdENvbnRleHQg Km1fZm9ybWF0X2N0eCA9IG51bGxwdHI7CisgCUFWQ29kZWNDb250ZXh0ICptX2NvZGVjX2N0eCA9 IG51bGxwdHI7CistCUFWRnJhbWUgKm1fZnJhbWUgPSBudWxscHRyOworIAlpbnQgbV9zdHJlYW1f aW5kZXggPSAtMTsKKyAJc3RkOjpzdHJpbmcgbV9lcnJvcjsKKyAJaW50IG1fZXJyb3JfY29kZSA9 IDA7CistCWJvb2wgbV9maW5pc2hlZCA9IGZhbHNlOworIAlib29sIG1fb3BlbmVkID0gZmFsc2U7 CistCWludCBtX2dvdF9mcmFtZSA9IDA7CistCUFWUGFja2V0IG1fcGFja2V0OworLQlBVlBhY2tl dCBtX3BhY2tldDA7CisrCWJvb2wgbV9oYXNfbW9yZV9wYWNrZXRzID0gdHJ1ZTsKKysJYm9vbCBt X2hhc19tb3JlX2ZyYW1lcyA9IHRydWU7CisrCUFWUGFja2V0ICptX3BhY2tldCA9IG51bGxwdHI7 CisrCUFWRnJhbWUgKm1fZnJhbWUgPSBudWxscHRyOworCisgCWludCBtX291dHB1dF9zYW1wbGVf cmF0ZSA9IDA7CisgCWludCBtX291dHB1dF9jaGFubmVscyA9IDA7CitAQCAtOTgsMTkgKzk3LDEy IEBAIHByaXZhdGU6CisKKyBpbmxpbmUgRkZtcGVnQXVkaW9SZWFkZXI6OkZGbXBlZ0F1ZGlvUmVh ZGVyKCkgeworIAlhdl9sb2dfc2V0X2xldmVsKEFWX0xPR19RVUlFVCk7CistCistCWF2X2luaXRf cGFja2V0KCZtX3BhY2tldCk7CistCW1fcGFja2V0LmRhdGEgPSBudWxscHRyOworLQltX3BhY2tl dC5zaXplID0gMDsKKy0KKy0JbV9wYWNrZXQwID0gbV9wYWNrZXQ7CisgfQorCisgaW5saW5lIEZG bXBlZ0F1ZGlvUmVhZGVyOjp+RkZtcGVnQXVkaW9SZWFkZXIoKSB7CisgCUNsb3NlKCk7CisgCWF2 X2RpY3RfZnJlZSgmbV9pbnB1dF9vcHRzKTsKKyAJYXZfZnJlZXAoJm1fY29udmVydF9idWZmZXJb MF0pOworLQlhdl9wYWNrZXRfdW5yZWYoJm1fcGFja2V0MCk7CisgfQorCisgaW5saW5lIGJvb2wg RkZtcGVnQXVkaW9SZWFkZXI6OlNldElucHV0Rm9ybWF0KGNvbnN0IGNoYXIgKm5hbWUpIHsKK0BA IC0xMzUsMTEgKzEyNywxMCBAQCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihj b25zdCBzdGQ6OnN0cmluZyAmZmlsZV9uYW1lKSB7CisKKyAJQ2xvc2UoKTsKKworLSAgICBhdl9p bml0X3BhY2tldCgmbV9wYWNrZXQpOworLQltX3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0JbV9w YWNrZXQuc2l6ZSA9IDA7CistCistCW1fcGFja2V0MCA9IG1fcGFja2V0OworKwltX3BhY2tldCA9 IGF2X3BhY2tldF9hbGxvYygpOworKwlpZiAoIW1fcGFja2V0KSB7CisrCQlyZXR1cm4gZmFsc2U7 CisrCX0KKworIAlyZXQgPSBhdmZvcm1hdF9vcGVuX2lucHV0KCZtX2Zvcm1hdF9jdHgsIGZpbGVf bmFtZS5jX3N0cigpLCBtX2lucHV0X2ZtdCwgJm1faW5wdXRfb3B0cyk7CisgCWlmIChyZXQgPCAw KSB7CitAQCAtMTUzLDI2ICsxNDQsMzEgQEAgaW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6 Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZpbGVfbmFtZSkgeworIAkJcmV0dXJuIGZhbHNlOwor IAl9CisKKy0JQVZDb2RlYyAqY29kZWM7CisrCWNvbnN0IEFWQ29kZWMgKmNvZGVjOworIAlyZXQg PSBhdl9maW5kX2Jlc3Rfc3RyZWFtKG1fZm9ybWF0X2N0eCwgQVZNRURJQV9UWVBFX0FVRElPLCAt MSwgLTEsICZjb2RlYywgMCk7CisgCWlmIChyZXQgPCAwKSB7CisgCQlTZXRFcnJvcigiQ291bGQg bm90IGZpbmQgYW55IGF1ZGlvIHN0cmVhbSBpbiB0aGUgZmlsZSIsIHJldCk7CisgCQlyZXR1cm4g ZmFsc2U7CisgCX0KKyAJbV9zdHJlYW1faW5kZXggPSByZXQ7CisrCWF1dG8gc3RyZWFtID0gbV9m b3JtYXRfY3R4LT5zdHJlYW1zW21fc3RyZWFtX2luZGV4XTsKKworLQltX2NvZGVjX2N0eCA9IG1f Zm9ybWF0X2N0eC0+c3RyZWFtc1ttX3N0cmVhbV9pbmRleF0tPmNvZGVjOworKwltX2NvZGVjX2N0 eCA9IGF2Y29kZWNfYWxsb2NfY29udGV4dDMoY29kZWMpOworIAltX2NvZGVjX2N0eC0+cmVxdWVz dF9zYW1wbGVfZm10ID0gQVZfU0FNUExFX0ZNVF9TMTY7CisKKysJcmV0ID0gYXZjb2RlY19wYXJh bWV0ZXJzX3RvX2NvbnRleHQobV9jb2RlY19jdHgsIHN0cmVhbS0+Y29kZWNwYXIpOworKwlpZiAo cmV0IDwgMCkgeworKwkJU2V0RXJyb3IoIkNvdWxkIG5vdCBjb3B5IHRoZSBzdHJlYW0gcGFyYW1l dGVycyIsIHJldCk7CisrCQlyZXR1cm4gZmFsc2U7CisrCX0KKysKKyAJcmV0ID0gYXZjb2RlY19v cGVuMihtX2NvZGVjX2N0eCwgY29kZWMsIG51bGxwdHIpOworIAlpZiAocmV0IDwgMCkgeworIAkJ U2V0RXJyb3IoIkNvdWxkIG5vdCBvcGVuIHRoZSBjb2RlYyIsIHJldCk7CisgCQlyZXR1cm4gZmFs c2U7CisgCX0KKworLQlpZiAoIW1fY29kZWNfY3R4LT5jaGFubmVsX2xheW91dCkgeworLQkJbV9j b2RlY19jdHgtPmNoYW5uZWxfbGF5b3V0ID0gYXZfZ2V0X2RlZmF1bHRfY2hhbm5lbF9sYXlvdXQo bV9jb2RlY19jdHgtPmNoYW5uZWxzKTsKKy0JfQorKwlhdl9kdW1wX2Zvcm1hdChtX2Zvcm1hdF9j dHgsIDAsICJmb28iLCAwKTsKKworIAltX2ZyYW1lID0gYXZfZnJhbWVfYWxsb2MoKTsKKyAJaWYg KCFtX2ZyYW1lKSB7CitAQCAtMTgzLDE5ICsxNzksMjMgQEAgaW5saW5lIGJvb2wgRkZtcGVnQXVk aW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZpbGVfbmFtZSkgeworIAkJbV9vdXRw dXRfc2FtcGxlX3JhdGUgPSBtX2NvZGVjX2N0eC0+c2FtcGxlX3JhdGU7CisgCX0KKworLQlpZiAo IW1fb3V0cHV0X2NoYW5uZWxzKSB7CistCQltX291dHB1dF9jaGFubmVscyA9IG1fY29kZWNfY3R4 LT5jaGFubmVsczsKKysJQVZDaGFubmVsTGF5b3V0IG91dHB1dF9jaGFubmVsX2xheW91dDsKKysJ aWYgKG1fb3V0cHV0X2NoYW5uZWxzKSB7CisrCQlhdl9jaGFubmVsX2xheW91dF9kZWZhdWx0KCZv dXRwdXRfY2hhbm5lbF9sYXlvdXQsIG1fb3V0cHV0X2NoYW5uZWxzKTsKKysJfSBlbHNlIHsKKysJ CW1fb3V0cHV0X2NoYW5uZWxzID0gbV9jb2RlY19jdHgtPmNoX2xheW91dC5uYl9jaGFubmVsczsK KysJCWF2X2NoYW5uZWxfbGF5b3V0X2RlZmF1bHQoJm91dHB1dF9jaGFubmVsX2xheW91dCwgbV9v dXRwdXRfY2hhbm5lbHMpOworIAl9CisKKy0JaWYgKG1fY29kZWNfY3R4LT5zYW1wbGVfZm10ICE9 IEFWX1NBTVBMRV9GTVRfUzE2IHx8IG1fY29kZWNfY3R4LT5jaGFubmVscyAhPSBtX291dHB1dF9j aGFubmVscyB8fCBtX2NvZGVjX2N0eC0+c2FtcGxlX3JhdGUgIT0gbV9vdXRwdXRfc2FtcGxlX3Jh dGUpIHsKKysJaWYgKG1fY29kZWNfY3R4LT5zYW1wbGVfZm10ICE9IEFWX1NBTVBMRV9GTVRfUzE2 IHx8IG1fY29kZWNfY3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHMgIT0gbV9vdXRwdXRfY2hhbm5l bHMgfHwgbV9jb2RlY19jdHgtPnNhbXBsZV9yYXRlICE9IG1fb3V0cHV0X3NhbXBsZV9yYXRlKSB7 CisgCQltX2NvbnZlcnRlci5yZXNldChuZXcgRkZtcGVnQXVkaW9Qcm9jZXNzb3IoKSk7CisgCQlt X2NvbnZlcnRlci0+U2V0Q29tcGF0aWJsZU1vZGUoKTsKKyAJCW1fY29udmVydGVyLT5TZXRJbnB1 dFNhbXBsZUZvcm1hdChtX2NvZGVjX2N0eC0+c2FtcGxlX2ZtdCk7CisgCQltX2NvbnZlcnRlci0+ U2V0SW5wdXRTYW1wbGVSYXRlKG1fY29kZWNfY3R4LT5zYW1wbGVfcmF0ZSk7CistCQltX2NvbnZl cnRlci0+U2V0SW5wdXRDaGFubmVsTGF5b3V0KG1fY29kZWNfY3R4LT5jaGFubmVsX2xheW91dCk7 CisrCQltX2NvbnZlcnRlci0+U2V0SW5wdXRDaGFubmVsTGF5b3V0KCYobV9jb2RlY19jdHgtPmNo X2xheW91dCkpOworIAkJbV9jb252ZXJ0ZXItPlNldE91dHB1dFNhbXBsZUZvcm1hdChBVl9TQU1Q TEVfRk1UX1MxNik7CisgCQltX2NvbnZlcnRlci0+U2V0T3V0cHV0U2FtcGxlUmF0ZShtX291dHB1 dF9zYW1wbGVfcmF0ZSk7CistCQltX2NvbnZlcnRlci0+U2V0T3V0cHV0Q2hhbm5lbExheW91dChh dl9nZXRfZGVmYXVsdF9jaGFubmVsX2xheW91dChtX291dHB1dF9jaGFubmVscykpOworKwkJbV9j b252ZXJ0ZXItPlNldE91dHB1dENoYW5uZWxMYXlvdXQoJm91dHB1dF9jaGFubmVsX2xheW91dCk7 CisgCQlhdXRvIHJldCA9IG1fY29udmVydGVyLT5Jbml0KCk7CisgCQlpZiAocmV0ICE9IDApIHsK KyAJCQlTZXRFcnJvcigiQ291bGQgbm90IGNyZWF0ZSBhbiBhdWRpbyBjb252ZXJ0ZXIgaW5zdGFu Y2UiLCByZXQpOworQEAgLTIwMywxMCArMjAzLDExIEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlv UmVhZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxlX25hbWUpIHsKKyAJCX0KKyAJfQor CisrCWF2X2NoYW5uZWxfbGF5b3V0X3VuaW5pdCgmb3V0cHV0X2NoYW5uZWxfbGF5b3V0KTsKKysK KyAJbV9vcGVuZWQgPSB0cnVlOworLQltX2ZpbmlzaGVkID0gZmFsc2U7CistCW1fZ290X2ZyYW1l ID0gMDsKKy0JbV9uYl9wYWNrZXRzID0gMDsKKysJbV9oYXNfbW9yZV9wYWNrZXRzID0gdHJ1ZTsK KysJbV9oYXNfbW9yZV9mcmFtZXMgPSB0cnVlOworIAltX2RlY29kZV9lcnJvciA9IDA7CisKKyAJ cmV0dXJuIHRydWU7CitAQCAtMjE0LDYgKzIxNSw3IEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlv UmVhZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxlX25hbWUpIHsKKworIGlubGluZSB2 b2lkIEZGbXBlZ0F1ZGlvUmVhZGVyOjpDbG9zZSgpIHsKKyAJYXZfZnJhbWVfZnJlZSgmbV9mcmFt ZSk7CisrCWF2X3BhY2tldF9mcmVlKCZtX3BhY2tldCk7CisKKyAJbV9zdHJlYW1faW5kZXggPSAt MTsKKworQEAgLTI1Miw5MSArMjU0LDk4IEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVy OjpSZWFkKGNvbnN0IGludDE2X3QgKipkYXRhLCBzaXplX3QgKnNpemUpIHsKKyAJCXJldHVybiBm YWxzZTsKKyAJfQorCisrCSpkYXRhID0gbnVsbHB0cjsKKysJKnNpemUgPSAwOworKworIAlpbnQg cmV0OworKwlib29sIG5lZWRzX3BhY2tldCA9IGZhbHNlOworIAl3aGlsZSAodHJ1ZSkgeworLQkJ d2hpbGUgKG1fcGFja2V0LnNpemUgPD0gMCkgeworLQkJCWF2X3BhY2tldF91bnJlZigmbV9wYWNr ZXQwKTsKKy0JCQlhdl9pbml0X3BhY2tldCgmbV9wYWNrZXQpOworLQkJCW1fcGFja2V0LmRhdGEg PSBudWxscHRyOworLQkJCW1fcGFja2V0LnNpemUgPSAwOworLQkJCXJldCA9IGF2X3JlYWRfZnJh bWUobV9mb3JtYXRfY3R4LCAmbV9wYWNrZXQpOworKwkJd2hpbGUgKG5lZWRzX3BhY2tldCAmJiBt X3BhY2tldC0+c2l6ZSA9PSAwKSB7CisrCQkJcmV0ID0gYXZfcmVhZF9mcmFtZShtX2Zvcm1hdF9j dHgsIG1fcGFja2V0KTsKKyAJCQlpZiAocmV0IDwgMCkgeworIAkJCQlpZiAocmV0ID09IEFWRVJS T1JfRU9GKSB7CistCQkJCQltX2ZpbmlzaGVkID0gdHJ1ZTsKKysJCQkJCW5lZWRzX3BhY2tldCA9 IGZhbHNlOworKwkJCQkJbV9oYXNfbW9yZV9wYWNrZXRzID0gZmFsc2U7CisgCQkJCQlicmVhazsK Ky0JCQkJfSBlbHNlIHsKKysJCQkJfQorKwkJCQlTZXRFcnJvcigiRXJyb3IgcmVhZGluZyBmcm9t IHRoZSBhdWRpbyBzb3VyY2UiLCByZXQpOworKwkJCQlyZXR1cm4gZmFsc2U7CisrCQkJfQorKwkJ CWlmIChtX3BhY2tldC0+c3RyZWFtX2luZGV4ID09IG1fc3RyZWFtX2luZGV4KSB7CisrCQkJCW5l ZWRzX3BhY2tldCA9IGZhbHNlOworKwkJCX0gZWxzZSB7CisrCQkJCWF2X3BhY2tldF91bnJlZiht X3BhY2tldCk7CisrCQkJfQorKwkJfQorKworKwkJaWYgKG1fcGFja2V0LT5zaXplICE9IDApIHsK KysJCQlyZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0KG1fY29kZWNfY3R4LCBtX3BhY2tldCk7Cisr CQkJaWYgKHJldCA8IDApIHsKKysJCQkJaWYgKHJldCAhPSBBVkVSUk9SKEVBR0FJTikpIHsKKyAJ CQkJCVNldEVycm9yKCJFcnJvciByZWFkaW5nIGZyb20gdGhlIGF1ZGlvIHNvdXJjZSIsIHJldCk7 CisgCQkJCQlyZXR1cm4gZmFsc2U7CisgCQkJCX0KKy0JCQl9CistCQkJbV9wYWNrZXQwID0gbV9w YWNrZXQ7CistCQkJaWYgKG1fcGFja2V0LnN0cmVhbV9pbmRleCAhPSBtX3N0cmVhbV9pbmRleCkg eworLQkJCQltX3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0JCQkJbV9wYWNrZXQuc2l6ZSA9IDA7 CisgCQkJfSBlbHNlIHsKKy0JCQkJbV9uYl9wYWNrZXRzKys7CisrCQkJCWF2X3BhY2tldF91bnJl ZihtX3BhY2tldCk7CisgCQkJfQorIAkJfQorCistCQlyZXQgPSBhdmNvZGVjX2RlY29kZV9hdWRp bzQobV9jb2RlY19jdHgsIG1fZnJhbWUsICZtX2dvdF9mcmFtZSwgJm1fcGFja2V0KTsKKysJCXJl dCA9IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZShtX2NvZGVjX2N0eCwgbV9mcmFtZSk7CisgCQlpZiAo cmV0IDwgMCkgeworLQkJCWlmIChtX2RlY29kZV9lcnJvcikgeworLQkJCQlTZXRFcnJvcigiRXJy b3IgZGVjb2RpbmcgYXVkaW8gZnJhbWUiLCBtX2RlY29kZV9lcnJvcik7CistCQkJCXJldHVybiBm YWxzZTsKKysJCQlpZiAocmV0ID09IEFWRVJST1JfRU9GKSB7CisrCQkJCW1faGFzX21vcmVfZnJh bWVzID0gZmFsc2U7CisrCQkJfSBlbHNlIGlmIChyZXQgPT0gQVZFUlJPUihFQUdBSU4pKSB7Cisr CQkJCWlmIChtX2hhc19tb3JlX3BhY2tldHMpIHsKKysJCQkJCW5lZWRzX3BhY2tldCA9IHRydWU7 CisrCQkJCQljb250aW51ZTsKKysJCQkJfSBlbHNlIHsKKysJCQkJCW1faGFzX21vcmVfZnJhbWVz ID0gZmFsc2U7CisrCQkJCX0KKyAJCQl9CistCQkJbV9kZWNvZGVfZXJyb3IgPSByZXQ7CistCQkJ bV9wYWNrZXQuZGF0YSA9IG51bGxwdHI7CistCQkJbV9wYWNrZXQuc2l6ZSA9IDA7CistCQkJY29u dGludWU7CisrCQkJU2V0RXJyb3IoIkVycm9yIGRlY29kaW5nIHRoZSBhdWRpbyBzb3VyY2UiLCBy ZXQpOworKwkJCXJldHVybiBmYWxzZTsKKyAJCX0KKworLQkJYnJlYWs7CistCX0KKy0KKy0JbV9k ZWNvZGVfZXJyb3IgPSAwOworLQorLQljb25zdCBpbnQgZGVjb2RlZCA9IHN0ZDo6bWluKHJldCwg bV9wYWNrZXQuc2l6ZSk7CistCW1fcGFja2V0LmRhdGEgKz0gZGVjb2RlZDsKKy0JbV9wYWNrZXQu c2l6ZSAtPSBkZWNvZGVkOworLQorLQlpZiAobV9nb3RfZnJhbWUpIHsKKy0JCWlmIChtX2NvbnZl cnRlcikgeworLQkJCWlmIChtX2ZyYW1lLT5uYl9zYW1wbGVzID4gbV9jb252ZXJ0X2J1ZmZlcl9u Yl9zYW1wbGVzKSB7CistCQkJCWludCBsaW5zaXplOworLQkJCQlhdl9mcmVlcCgmbV9jb252ZXJ0 X2J1ZmZlclswXSk7CistCQkJCW1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcyA9IHN0ZDo6bWF4 KDEwMjQgKiA4LCBtX2ZyYW1lLT5uYl9zYW1wbGVzKTsKKy0JCQkJcmV0ID0gYXZfc2FtcGxlc19h bGxvYyhtX2NvbnZlcnRfYnVmZmVyLCAmbGluc2l6ZSwgbV9jb2RlY19jdHgtPmNoYW5uZWxzLCBt X2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMsIEFWX1NBTVBMRV9GTVRfUzE2LCAxKTsKKy0JCQkJ aWYgKHJldCA8IDApIHsKKy0JCQkJCVNldEVycm9yKCJDb3VsZG4ndCBhbGxvY2F0ZSBhdWRpbyBj b252ZXJ0ZXIgYnVmZmVyIiwgcmV0KTsKKysJCWlmIChtX2ZyYW1lLT5uYl9zYW1wbGVzID4gMCkg eworKwkJCWlmIChtX2NvbnZlcnRlcikgeworKwkJCQlpZiAobV9mcmFtZS0+bmJfc2FtcGxlcyA+ IG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcykgeworKwkJCQkJaW50IGxpbnNpemU7CisrCQkJ CQlhdl9mcmVlcCgmbV9jb252ZXJ0X2J1ZmZlclswXSk7CisrCQkJCQltX2NvbnZlcnRfYnVmZmVy X25iX3NhbXBsZXMgPSBzdGQ6Om1heCgxMDI0ICogOCwgbV9mcmFtZS0+bmJfc2FtcGxlcyk7Cisr CQkJCQlyZXQgPSBhdl9zYW1wbGVzX2FsbG9jKG1fY29udmVydF9idWZmZXIsICZsaW5zaXplLCBt X2NvZGVjX2N0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzLCBtX2NvbnZlcnRfYnVmZmVyX25iX3Nh bXBsZXMsIEFWX1NBTVBMRV9GTVRfUzE2LCAxKTsKKysJCQkJCWlmIChyZXQgPCAwKSB7CisrCQkJ CQkJU2V0RXJyb3IoIkNvdWxkbid0IGFsbG9jYXRlIGF1ZGlvIGNvbnZlcnRlciBidWZmZXIiLCBy ZXQpOworKwkJCQkJCXJldHVybiBmYWxzZTsKKysJCQkJCX0KKysJCQkJfQorKwkJCQlhdXRvIG5i X3NhbXBsZXMgPSBtX2NvbnZlcnRlci0+Q29udmVydChtX2NvbnZlcnRfYnVmZmVyLCBtX2NvbnZl cnRfYnVmZmVyX25iX3NhbXBsZXMsIChjb25zdCB1aW50OF90ICoqKSBtX2ZyYW1lLT5kYXRhLCBt X2ZyYW1lLT5uYl9zYW1wbGVzKTsKKysJCQkJaWYgKG5iX3NhbXBsZXMgPCAwKSB7CisrCQkJCQlT ZXRFcnJvcigiQ291bGRuJ3QgY29udmVydCBhdWRpbyIsIHJldCk7CisgCQkJCQlyZXR1cm4gZmFs c2U7CisgCQkJCX0KKy0JCQl9CistCQkJYXV0byBuYl9zYW1wbGVzID0gbV9jb252ZXJ0ZXItPkNv bnZlcnQobV9jb252ZXJ0X2J1ZmZlciwgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzLCAoY29u c3QgdWludDhfdCAqKikgbV9mcmFtZS0+ZGF0YSwgbV9mcmFtZS0+bmJfc2FtcGxlcyk7CistCQkJ aWYgKG5iX3NhbXBsZXMgPCAwKSB7CistCQkJCVNldEVycm9yKCJDb3VsZG4ndCBjb252ZXJ0IGF1 ZGlvIiwgcmV0KTsKKy0JCQkJcmV0dXJuIGZhbHNlOworLQkJCX0KKy0JCQkqZGF0YSA9IChjb25z dCBpbnQxNl90ICopIG1fY29udmVydF9idWZmZXJbMF07CistCQkJKnNpemUgPSBuYl9zYW1wbGVz OworLQkJfSBlbHNlIHsKKy0JCQkqZGF0YSA9IChjb25zdCBpbnQxNl90ICopIG1fZnJhbWUtPmRh dGFbMF07CistCQkJKnNpemUgPSBtX2ZyYW1lLT5uYl9zYW1wbGVzOworLQkJfQorLQl9IGVsc2Ug eworLQkJaWYgKG1fZmluaXNoZWQgJiYgbV9jb252ZXJ0ZXIpIHsKKy0JCQlhdXRvIG5iX3NhbXBs ZXMgPSBtX2NvbnZlcnRlci0+Rmx1c2gobV9jb252ZXJ0X2J1ZmZlciwgbV9jb252ZXJ0X2J1ZmZl cl9uYl9zYW1wbGVzKTsKKy0JCQlpZiAobmJfc2FtcGxlcyA8IDApIHsKKy0JCQkJU2V0RXJyb3Io IkNvdWxkbid0IGNvbnZlcnQgYXVkaW8iLCByZXQpOworLQkJCQlyZXR1cm4gZmFsc2U7CistCQkJ fSBlbHNlIGlmIChuYl9zYW1wbGVzID4gMCkgeworLQkJCQltX2dvdF9mcmFtZSA9IDE7CisgCQkJ CSpkYXRhID0gKGNvbnN0IGludDE2X3QgKikgbV9jb252ZXJ0X2J1ZmZlclswXTsKKyAJCQkJKnNp emUgPSBuYl9zYW1wbGVzOworKwkJCX0gZWxzZSB7CisrCQkJCSpkYXRhID0gKGNvbnN0IGludDE2 X3QgKikgbV9mcmFtZS0+ZGF0YVswXTsKKysJCQkJKnNpemUgPSBtX2ZyYW1lLT5uYl9zYW1wbGVz OworKwkJCX0KKysJCX0gZWxzZSB7CisrCQkJaWYgKG1fY29udmVydGVyKSB7CisrCQkJCWlmIChJ c0ZpbmlzaGVkKCkpIHsKKysJCQkJCWF1dG8gbmJfc2FtcGxlcyA9IG1fY29udmVydGVyLT5GbHVz aChtX2NvbnZlcnRfYnVmZmVyLCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMpOworKwkJCQkJ aWYgKG5iX3NhbXBsZXMgPCAwKSB7CisrCQkJCQkJU2V0RXJyb3IoIkNvdWxkbid0IGNvbnZlcnQg YXVkaW8iLCByZXQpOworKwkJCQkJCXJldHVybiBmYWxzZTsKKysJCQkJCX0gZWxzZSBpZiAobmJf c2FtcGxlcyA+IDApIHsKKysJCQkJCQkqZGF0YSA9IChjb25zdCBpbnQxNl90ICopIG1fY29udmVy dF9idWZmZXJbMF07CisrCQkJCQkJKnNpemUgPSBuYl9zYW1wbGVzOworKwkJCQkJfQorKwkJCQl9 CisgCQkJfQorIAkJfQorLQl9CisKKy0JcmV0dXJuIHRydWU7CisrCQlyZXR1cm4gdHJ1ZTsKKysJ fQorIH0KKworIGlubGluZSB2b2lkIEZGbXBlZ0F1ZGlvUmVhZGVyOjpTZXRFcnJvcihjb25zdCBj aGFyICptZXNzYWdlLCBpbnQgZXJybnVtKSB7CitkaWZmIC0tZ2l0IGEvdGVzdHMvQ01ha2VMaXN0 cy50eHQgYi90ZXN0cy9DTWFrZUxpc3RzLnR4dAoraW5kZXggYTJiNTE3Yi4uMTIzZTY0MyAxMDA2 NDQKKy0tLSBhL3Rlc3RzL0NNYWtlTGlzdHMudHh0CisrKysgYi90ZXN0cy9DTWFrZUxpc3RzLnR4 dAorQEAgLTM4LDYgKzM4LDEyIEBAIHNldChTUkNTCisKKyBpZihCVUlMRF9UT09MUykKKyAJc2V0 KFNSQ1MgJHtTUkNTfSAuLi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3JlYWRlcl90ZXN0LmNwcCkK KysgICAgaW5jbHVkZV9kaXJlY3RvcmllcygKKysgICAgICAgICR7RkZNUEVHX0xJQkFWRk9STUFU X0lOQ0xVREVfRElSU30KKysgICAgICAgICR7RkZNUEVHX0xJQkFWQ09ERUNfSU5DTFVERV9ESVJT fQorKyAgICAgICAgJHtGRk1QRUdfTElCQVZVVElMX0lOQ0xVREVfRElSU30KKysgICAgICAgICR7 QVVESU9fUFJPQ0VTU09SX0lOQ0xVREVfRElSU30KKysgICAgKQorIAlsaW5rX2xpYnJhcmllcyhm cGNhbGNfbGlicykKKyBlbmRpZigpCisKKy0tIAorMi4zOC4xCisKKwpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9jaHJvbWFwcmludC90ZW1wbGF0ZSBiL3NyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUK aW5kZXggN2VmNzgzODk0OWYzLi4xZjdiYmM3MGEyMmMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2hy b21hcHJpbnQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jaHJvbWFwcmludC90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Nocm9tYXByaW50JwogcGtnbmFtZT1j aHJvbWFwcmludAogdmVyc2lvbj0xLjUuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRf c3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREJVSUxEX1RPT0xTPU9OIgogbWFrZV9jaGVj a190YXJnZXQ9ImNoZWNrIgoKRnJvbSBlMWJiMWYxZDNiYzc4MmRiYmUyNGFmNjYyMjBhMDBmYzA4 YzU5NTUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwMjUvMTEzXSBjaHJvbWl1bTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4v cGF0Y2hlcy9jaHJvbWl1bS05My1mZm1wZWctNC40LnBhdGNoICAgICAgfCAzNiAtLS0tLS0tLS0t LS0tLQogc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggICAgICAgIHwgNDcg KysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZSAgICAgICAgICAg ICAgICAgICAgIHwgIDIgKy0KIDMgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgMzcg ZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVz L2Nocm9taXVtLTkzLWZmbXBlZy00LjQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hy b21pdW0vcGF0Y2hlcy9jaHJvbWl1bS05My1mZm1wZWctNC40LnBhdGNoIGIvc3JjcGtncy9jaHJv bWl1bS9wYXRjaGVzL2Nocm9taXVtLTkzLWZmbXBlZy00LjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGYwZWM3MzZmOThiYy4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3Mv Y2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS05My1mZm1wZWctNC40LnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMzYgKzAsMCBAQAotZGlmZiAtLWdpdCBhL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2Rl bXV4ZXIuY2MgYi9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCi1pbmRleCBhYzQ3MTNi MDcyNjguLjQ5MmE5YTM3ZDA5NiAxMDA2NDQKLS0tLSBhL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2Rl bXV4ZXIuY2MKLSsrKyBiL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MKLUBAIC00Mjcs MTEgKzQyNywxMSBAQCB2b2lkIEZGbXBlZ0RlbXV4ZXJTdHJlYW06OkVucXVldWVQYWNrZXQoU2Nv cGVkQVZQYWNrZXQgcGFja2V0KSB7Ci0gICBzY29wZWRfcmVmcHRyPERlY29kZXJCdWZmZXI+IGJ1 ZmZlcjsKLSAKLSAgIGlmICh0eXBlKCkgPT0gRGVtdXhlclN0cmVhbTo6VEVYVCkgewotLSAgICBz aXplX3QgaWRfc2l6ZSA9IDA7Ci0rICAgIGludCBpZF9zaXplID0gMDsKLSAgICAgdWludDhfdCog aWRfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAotICAgICAgICAgcGFja2V0LmdldCgp LCBBVl9QS1RfREFUQV9XRUJWVFRfSURFTlRJRklFUiwgJmlkX3NpemUpOwotIAotLSAgICBzaXpl X3Qgc2V0dGluZ3Nfc2l6ZSA9IDA7Ci0rICAgIGludCBzZXR0aW5nc19zaXplID0gMDsKLSAgICAg dWludDhfdCogc2V0dGluZ3NfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAotICAgICAg ICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9XRUJWVFRfU0VUVElOR1MsICZzZXR0aW5nc19z aXplKTsKLSAKLUBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBGRm1wZWdEZW11eGVyU3RyZWFtOjpF bnF1ZXVlUGFja2V0KFNjb3BlZEFWUGFja2V0IHBhY2tldCkgewotICAgICBidWZmZXIgPSBEZWNv ZGVyQnVmZmVyOjpDb3B5RnJvbShwYWNrZXQtPmRhdGEsIHBhY2tldC0+c2l6ZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZV9kYXRhLmRhdGEoKSwgc2lkZV9kYXRh LnNpemUoKSk7Ci0gICB9IGVsc2UgewotLSAgICBzaXplX3Qgc2lkZV9kYXRhX3NpemUgPSAwOwot KyAgICBpbnQgc2lkZV9kYXRhX3NpemUgPSAwOwotICAgICB1aW50OF90KiBzaWRlX2RhdGEgPSBh dl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RB VEFfTUFUUk9TS0FfQkxPQ0tBRERJVElPTkFMLCAmc2lkZV9kYXRhX3NpemUpOwotIAotQEAgLTUw NCw3ICs1MDQsNyBAQCB2b2lkIEZGbXBlZ0RlbXV4ZXJTdHJlYW06OkVucXVldWVQYWNrZXQoU2Nv cGVkQVZQYWNrZXQgcGFja2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFja2V0LT5zaXplIC0gZGF0YV9vZmZzZXQpOwotICAgICB9Ci0gCi0tICAgIHNpemVf dCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7Ci0rICAgIGludCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7 Ci0gICAgIGNvbnN0IHVpbnQzMl90KiBza2lwX3NhbXBsZXNfcHRyID0KLSAgICAgICAgIHJlaW50 ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAg ICAgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1NLSVBfU0FNUExFUywgJnNraXBf c2FtcGxlc19zaXplKSk7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZt cGVnNS5wYXRjaCBiL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjRlMmRhMzhlMzRjCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAs MCArMSw0NyBAQAorLS0tIGEvbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwkyMDIzLTAx LTIzIDE3OjMzOjU3LjM2NjIxMzgwNSArMDIwMAorKysrIGIvbWVkaWEvZmlsdGVycy9mZm1wZWdf ZGVtdXhlci5jYwkyMDIzLTAxLTIzIDE3OjQzOjA5LjI4MzQzNjk4MyArMDIwMAorQEAgLTkyLDI0 ICs5MiwxMiBAQAorIAorIHN0YXRpYyBiYXNlOjpUaW1lRGVsdGEgRXh0cmFjdFN0YXJ0VGltZShB VlN0cmVhbSogc3RyZWFtKSB7CisgICAvLyBUaGUgZGVmYXVsdCBzdGFydCB0aW1lIGlzIHplcm8u CistICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRfdGltZTsKKysgIGJhc2U6OlRpbWVEZWx0YSBzdGFy dF90aW1lID0ga05vVGltZXN0YW1wOworIAorICAgLy8gRmlyc3QgdHJ5IHRvIHVzZSAgdGhlIHxz dGFydF90aW1lfCB2YWx1ZSBhcyBpcy4KKy0gIGlmIChzdHJlYW0tPnN0YXJ0X3RpbWUgIT0ga05v RkZtcGVnVGltZXN0YW1wKQorKyAgaWYgKHN0cmVhbS0+c3RhcnRfdGltZSAhPSBrTm9GRm1wZWdU aW1lc3RhbXApIC8vIEFWX05PUFRTX1ZBTFVFCisgICAgIHN0YXJ0X3RpbWUgPSBDb252ZXJ0RnJv bVRpbWVCYXNlKHN0cmVhbS0+dGltZV9iYXNlLCBzdHJlYW0tPnN0YXJ0X3RpbWUpOworIAorLSAg Ly8gTmV4dCB0cnkgdG8gdXNlIHRoZSBmaXJzdCBEVFMgdmFsdWUsIGZvciBjb2RlY3Mgd2hlcmUg d2Uga25vdyBQVFMgPT0gRFRTCistICAvLyAoZXhjbHVkZXMgYWxsIEgyNnggY29kZWNzKS4gVGhl IHN0YXJ0IHRpbWUgbXVzdCBiZSByZXR1cm5lZCBpbiBQVFMuCistICBpZiAoYXZfc3RyZWFtX2dl dF9maXJzdF9kdHMoc3RyZWFtKSAhPSBrTm9GRm1wZWdUaW1lc3RhbXAgJiYKKy0gICAgICBzdHJl YW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IRVZDICYmCistICAgICAgc3Ry ZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfSDI2NCAmJgorLSAgICAgIHN0 cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX01QRUc0KSB7CistICAgIGNv bnN0IGJhc2U6OlRpbWVEZWx0YSBmaXJzdF9wdHMgPQorLSAgICAgICAgQ29udmVydEZyb21UaW1l QmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgYXZfc3RyZWFtX2dldF9maXJzdF9kdHMoc3RyZWFtKSk7 CistICAgIGlmIChmaXJzdF9wdHMgPCBzdGFydF90aW1lKQorLSAgICAgIHN0YXJ0X3RpbWUgPSBm aXJzdF9wdHM7CistICB9CistCisgICByZXR1cm4gc3RhcnRfdGltZTsKKyB9CisgCitAQCAtMTU5 Nyw3ICsxNTg1LDcgQEAKKyAgIGZvciAoY29uc3QgYXV0byYgc3RyZWFtIDogc3RyZWFtc18pIHsK KyAgICAgaWYgKCFzdHJlYW0gfHwgc3RyZWFtLT5Jc0VuYWJsZWQoKSAhPSBlbmFibGVkKQorICAg ICAgIGNvbnRpbnVlOworLSAgICBpZiAoYXZfc3RyZWFtX2dldF9maXJzdF9kdHMoc3RyZWFtLT5h dl9zdHJlYW0oKSkgPT0ga0ludmFsaWRQVFNNYXJrZXIpCisrICAgIGlmIChzdHJlYW0tPmF2X3N0 cmVhbSgpLT5zdGFydF90aW1lID09IEFWX05PUFRTX1ZBTFVFKQorICAgICAgIGNvbnRpbnVlOwor ICAgICBpZiAoIWxvd2VzdF9zdGFydF90aW1lX3N0cmVhbSB8fAorICAgICAgICAgc3RyZWFtLT5z dGFydF90aW1lKCkgPCBsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0tPnN0YXJ0X3RpbWUoKSkgewor QEAgLTE2MTgsNyArMTYwNiw3IEBACisgICAgIGlmIChzdHJlYW0tPnR5cGUoKSAhPSBEZW11eGVy U3RyZWFtOjpWSURFTykKKyAgICAgICBjb250aW51ZTsKKyAKKy0gICAgaWYgKGF2X3N0cmVhbV9n ZXRfZmlyc3RfZHRzKHN0cmVhbS0+YXZfc3RyZWFtKCkpID09IGtJbnZhbGlkUFRTTWFya2VyKQor KyAgICBpZiAoc3RyZWFtLT5hdl9zdHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxV RSkKKyAgICAgICBjb250aW51ZTsKKyAKKyAgICAgaWYgKCFzdHJlYW0tPklzRW5hYmxlZCgpKQpk aWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZSBiL3NyY3BrZ3MvY2hyb21pdW0v dGVtcGxhdGUKaW5kZXggYjRhMzlkZmQzODE1Li5jMjk0NTNjZDFmNTAgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZQpA QCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9Y2hyb21pdW0KICMgU2VlIGh0dHBzOi8vY2hyb21pdW1k YXNoLmFwcHNwb3QuY29tL3JlbGVhc2VzP3BsYXRmb3JtPUxpbnV4IGZvciB0aGUgbGF0ZXN0IHZl cnNpb24KIHZlcnNpb249MTE0LjAuNTczNS4xMDYKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGFy Y2hzPSJpNjg2KiB4ODZfNjQqIGFhcmNoNjQqIGFybXY3bCoiCiBob3N0bWFrZWRlcGVuZHM9Igog ICQodm9wdF9pZiBjbGFuZyAiY2xhbmcgbGxkIGxsdm0xNSIpCgpGcm9tIDU2YWIzMDQxZDFjMWE0 Njc3MTI3NmFmNGRhYzIxNjIyZjljMjc1M2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyNi8xMTNdIGNtdXM6IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCB8IDEyICsrKysr KysrKysrKwogc3JjcGtncy9jbXVzL3RlbXBsYXRlICAgICAgICAgICAgICB8ICAyICstCiAyIGZp bGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCBiL3NyY3BrZ3MvY211cy9wYXRjaGVz L2ZmbXBlZzYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5m ZmE5NWFiODExMTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1w ZWc2LnBhdGNoCkBAIC0wLDAgKzEsMTIgQEAKKy0tLSBhL2lwL2ZmbXBlZy5jCisrKysgYi9pcC9m Zm1wZWcuYworQEAgLTIwMiw5ICsyMDIsNiBAQCBzdGF0aWMgaW50IGZmbXBlZ19vcGVuKHN0cnVj dCBpbnB1dF9wbHVnaW5fZGF0YSAqaXBfZGF0YSkKKyAJCQlicmVhazsKKyAJCX0KKyAKKy0JCWlm IChjb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQX1RSVU5DQVRFRCkKKy0JCQljYy0+ ZmxhZ3MgfD0gQVZfQ09ERUNfRkxBR19UUlVOQ0FURUQ7CistCisgCQlpZiAoYXZjb2RlY19vcGVu MihjYywgY29kZWMsIE5VTEwpIDwgMCkgeworIAkJCWRfcHJpbnQoImNvdWxkIG5vdCBvcGVuIGNv ZGVjOiAlZCwgJXNcbiIsIGNjLT5jb2RlY19pZCwgYXZjb2RlY19nZXRfbmFtZShjYy0+Y29kZWNf aWQpKTsKKyAJCQllcnIgPSAtSVBfRVJST1JfVU5TVVBQT1JURURfRklMRV9UWVBFOwpkaWZmIC0t Z2l0IGEvc3JjcGtncy9jbXVzL3RlbXBsYXRlIGIvc3JjcGtncy9jbXVzL3RlbXBsYXRlCmluZGV4 IDBmY2I0MjRjZTMzNi4uMDViNzdkMGZlY2FlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2NtdXMvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9jbXVzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnY211cycKIHBrZ25hbWU9Y211cwogdmVyc2lvbj0yLjEwLjAKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9 InByZWZpeD0vdXNyIExEPSRDQyIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20g NTYyMzEwNzBhNTY0NmJjNDdkM2IwOTE4NDg1MDYwZmM4MjYwMzVmZCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI3LzExM10gY3lhbnJpcDog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUgYi9zcmNwa2dzL2N5YW5yaXAvdGVtcGxh dGUKaW5kZXggOTc5NmUzNDYxNjAxLi41ZGIzMGUwMjBkMTcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv Y3lhbnJpcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjeWFucmlwJwogcGtnbmFtZT1jeWFucmlwCiB2 ZXJzaW9uPTAuOS4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgog aG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgogbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBs aWJjZGlvLWRldmVsIGxpYmNkaW8tcGFyYW5vaWEtZGV2ZWwgbGliY3VybC1kZXZlbCBsaWJtdXNp Y2JyYWluejUtZGV2ZWwiCgpGcm9tIDExZTQ1NGJlMDAxMGVmMDdmNjM4NjAzNjUwMGYwYjA4Yzc4 MjEwNWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BB VENIIDAyOC8xMTNdIGRlYWRiZWVmOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNy Y3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kZWFkYmVlZi90 ZW1wbGF0ZSBiL3NyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUKaW5kZXggYjY2NGJiMWI5YmQ5Li4x NjViM2M3YjljYWQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0ZQpAQCAtMSwxNCArMSwxNCBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnZGVhZGJlZWYnCiBwa2duYW1lPWRlYWRiZWVmCiB2ZXJzaW9uPTEuOC44Ci1yZXZp c2lvbj0xCityZXZpc2lvbj0yCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfc3R5bGU9Z251LWNv bmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS1vc3MgLS1kaXNhYmxlLWxmbSAtLWRp c2FibGUtbm90aWZ5IC0tZGlzYWJsZS1ndGsyIgogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBs aWJ0b29sIGdldHRleHQgZ2V0dGV4dC1kZXZlbCBpbnRsdG9vbCBwa2ctY29uZmlnCiAgeWFzbSBj bGFuZyBnbGliLWRldmVsIgogbWFrZWRlcGVuZHM9IgotIGFsc2EtbGliLWRldmVsIGRidXMtZGV2 ZWwgZmFhZDItZGV2ZWwgZmZtcGVnLWRldmVsIGd0ayszLWRldmVsIGltbGliMi1kZXZlbAorIGFs c2EtbGliLWRldmVsIGRidXMtZGV2ZWwgZmFhZDItZGV2ZWwgZmZtcGVnNC1kZXZlbCBndGsrMy1k ZXZlbCBpbWxpYjItZGV2ZWwKICBqYW5zc29uLWRldmVsIGxpYmNkZGItZGV2ZWwgbGliY2Rpby1k ZXZlbCBsaWJjdXJsLWRldmVsIGxpYmZsYWMtZGV2ZWwKICBsaWJtYWQtZGV2ZWwgbGlicG5nLWRl dmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwgbGlic25kZmlsZS1kZXZlbCBsaWJ2b3JiaXMtZGV2ZWwK ICBsaWJ6aXAtZGV2ZWwgbXBnMTIzLWRldmVsIG9wdXNmaWxlLWRldmVsIHB1bHNlYXVkaW8tZGV2 ZWwgd2F2cGFjay1kZXZlbCIKCkZyb20gNmM2OTY1YjUxYTg0ZTZlMzBlYjAyZWJiZTkyNDBhYTg0 N2RhODQ0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDI5LzExM10gZG9scGhpbi1lbXU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9kb2xwaGluLWVtdS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZG9scGhpbi1l bXUvdGVtcGxhdGUgYi9zcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlCmluZGV4IDdlYTE5N2Nl YjJhOC4uN2FlYjBhNWI2NDVlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdkb2xwaGluLWVtdScKIHBrZ25hbWU9ZG9scGhpbi1lbXUKIHZl cnNpb249NS4wLjE2MTAxCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBfZG9scGhpbl9jb21taXQ9 OGVjZmE1MzdhMjQyZGU3NGQyZTM3MmUzMGQ5ZDc5YjE0NTg0YjJmYgogX21nYmFfY29tbWl0PTQw ZDRjNDMwZmMzNmNhZWI3ZWEzMmZkMzk2MjQ5NDdlZDQ4N2QyZjIKICNWZXJzaW9uL2hhc2ggcGFp ciBjYW4gYmUgZm91bmQgYXQgaHR0cHM6Ly9kb2xwaGluLWVtdS5vcmcvZG93bmxvYWQvCgpGcm9t IDI2OGRhN2RlN2JiZjExN2YxNzc5ZDdkZWExNWE4M2EwZGI1MDMwMmQgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzMC8xMTNdIGRyb2lkY2Ft LW9icy1wbHVnaW46IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9kcm9pZGNh bS1vYnMtcGx1Z2luL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1 Z2luL3RlbXBsYXRlIGIvc3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3RlbXBsYXRlCmluZGV4 IGZjOWM5YmY2YjlkNS4uZmIwNDgwNzU0ZGY0IDEwMDY0NAotLS0gYS9zcmNwa2dzL2Ryb2lkY2Ft LW9icy1wbHVnaW4vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZHJvaWRjYW0tb2Jz LXBsdWdpbicKIHBrZ25hbWU9ZHJvaWRjYW0tb2JzLXBsdWdpbgogdmVyc2lvbj0yLjAuMQotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBtYWtlX3VzZV9l bnY9eWVzCiBtYWtlX2J1aWxkX2FyZ3M9IkFMTE9XX1NUQVRJQz1ubyIKCkZyb20gYjk4MjFjMjBh M2YwYzMwNzNhMmViYzhjMGVkYWUzNzlmZjdlYmY0MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDMxLzExM10gZHJvaWRjYW06IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0ZSB8IDIgKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUgYi9zcmNwa2dzL2Ryb2lkY2FtL3RlbXBsYXRlCmlu ZGV4IDFjM2YxYjhiMWZjNi4uMzJhOTIyMGI3OWE0IDEwMDY0NAotLS0gYS9zcmNwa2dzL2Ryb2lk Y2FtL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdkcm9pZGNhbScKIHBrZ25hbWU9ZHJvaWRjYW0KIHZl cnNpb249MS44LjIKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWdudS1tYWtl ZmlsZQogbWFrZV9idWlsZF9hcmdzPSJVU0JNVVhEPS1sdXNibXV4ZC0yLjAgSlBFRz0tbHR1cmJv anBlZyIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gMjlhYzQ2NGVmN2I2ZjY3 YzcxYWUyYTk5NjU2NjAzM2Q3NDMzZDhlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0 NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDMyLzExM10gZmZtcGVndGh1bWJuYWlsZXI6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL2ZmbXBlZ3RodW1ibmFpbGVyL3BhdGNoZXMvZmZt cGVnNi5wYXRjaCAgIHwgMjAyICsrKysrKysrKysrKysrKysrKwogc3JjcGtncy9mZm1wZWd0aHVt Ym5haWxlci90ZW1wbGF0ZSAgICAgICAgICAgIHwgICA2ICstCiAyIGZpbGVzIGNoYW5nZWQsIDIw NSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0Y2ggYi9zcmNwa2dz L2ZmbXBlZ3RodW1ibmFpbGVyL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjM2M2ZmMzVhMjg0MQotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCkBAIC0wLDAg KzEsMjAyIEBACistLS0gYS9saWJmZm1wZWd0aHVtYm5haWxlci9tb3ZpZWRlY29kZXIuY3BwCTIw MTctMTEtMjEgMTQ6MDY6NTcuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9saWJmZm1wZWd0aHVtYm5h aWxlci9tb3ZpZWRlY29kZXIuY3BwCTIwMjMtMDUtMDUgMTM6MTQ6NDcuOTQ2NTYwNjY4IC0wNDAw CitAQCAtNDEsMTEgKzQxLDYgQEAKKyBuYW1lc3BhY2UgZmZtcGVndGh1bWJuYWlsZXIKKyB7Cisg Cistc3RydWN0IFNpbGVuY2VMb2dMZXZlbAorLXsKKy0gICAgU2lsZW5jZUxvZ0xldmVsKCkgeyBh dl9sb2dfc2V0X2xldmVsKEFWX0xPR19RVUlFVCk7IH0KKy19OworLQorIE1vdmllRGVjb2Rlcjo6 TW92aWVEZWNvZGVyKEFWRm9ybWF0Q29udGV4dCogcGF2Q29udGV4dCkKKyA6IG1fVmlkZW9TdHJl YW0oLTEpCisgLCBtX3BGb3JtYXRDb250ZXh0KHBhdkNvbnRleHQpCitAQCAtNzAsOCArNjUsNiBA QAorIAorIHZvaWQgTW92aWVEZWNvZGVyOjppbml0aWFsaXplKGNvbnN0IHN0cmluZyYgZmlsZW5h bWUsIGJvb2wgcHJlZmVyRW1iZWRkZWRNZXRhZGF0YSkKKyB7CistICAgIGF2X3JlZ2lzdGVyX2Fs bCgpOworLSAgICBhdmNvZGVjX3JlZ2lzdGVyX2FsbCgpOworICAgICBhdmZvcm1hdF9uZXR3b3Jr X2luaXQoKTsKKyAKKyAgICAgc3RyaW5nIGlucHV0RmlsZSA9IGZpbGVuYW1lID09ICItIiA/ICJw aXBlOiIgOiBmaWxlbmFtZTsKK0BAIC05Nyw4ICs5MCw3IEBACisgeworICAgICBpZiAobV9wVmlk ZW9Db2RlY0NvbnRleHQpCisgICAgIHsKKy0gICAgICAgIGF2Y29kZWNfY2xvc2UobV9wVmlkZW9D b2RlY0NvbnRleHQpOworLSAgICAgICAgbV9wVmlkZW9Db2RlY0NvbnRleHQgPSBudWxscHRyOwor KyAgICAgICAgYXZjb2RlY19mcmVlX2NvbnRleHQoJm1fcFZpZGVvQ29kZWNDb250ZXh0KTsKKyAg ICAgfQorIAorICAgICBpZiAoKCFtX0Zvcm1hdENvbnRleHRXYXNHaXZlbikgJiYgbV9wRm9ybWF0 Q29udGV4dCkKK0BAIC0xNTIsMTAgKzE0NCwxMCBAQAorICAgICBmb3IgKHVuc2lnbmVkIGludCBp ID0gMDsgaSA8IG1fcEZvcm1hdENvbnRleHQtPm5iX3N0cmVhbXM7ICsraSkKKyAgICAgeworICAg ICAgICAgQVZTdHJlYW0gKnN0cmVhbSA9IG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV07Cist ICAgICAgICBhdXRvIGN0eCA9IG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjOwor LSAgICAgICAgaWYgKGN0eC0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8pCisrICAg ICAgICBhdXRvIHBhciA9IG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyOwor KyAgICAgICAgaWYgKHBhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8pCisgICAg ICAgICB7CistICAgICAgICAgICAgaWYgKCFwcmVmZXJFbWJlZGRlZE1ldGFkYXRhIHx8ICFpc1N0 aWxsSW1hZ2VDb2RlYyhjdHgtPmNvZGVjX2lkKSkKKysgICAgICAgICAgICBpZiAoIXByZWZlckVt YmVkZGVkTWV0YWRhdGEgfHwgIWlzU3RpbGxJbWFnZUNvZGVjKHBhci0+Y29kZWNfaWQpKQorICAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgdmlkZW9TdHJlYW1zLnB1c2hfYmFjayhpKTsK KyAgICAgICAgICAgICAgICAgY29udGludWU7CitAQCAtMjAzLDggKzE5NSw3IEBACisgICAgIH0K KyAKKyAgICAgbV9wVmlkZW9TdHJlYW0gPSBtX3BGb3JtYXRDb250ZXh0LT5zdHJlYW1zW21fVmlk ZW9TdHJlYW1dOworLSAgICBtX3BWaWRlb0NvZGVjQ29udGV4dCA9IG1fcFZpZGVvU3RyZWFtLT5j b2RlYzsKKy0gICAgbV9wVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKG1fcFZpZGVv Q29kZWNDb250ZXh0LT5jb2RlY19pZCk7CisrICAgIG1fcFZpZGVvQ29kZWMgPSBhdmNvZGVjX2Zp bmRfZGVjb2RlcihtX3BWaWRlb1N0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAKKyAgICAg aWYgKG1fcFZpZGVvQ29kZWMgPT0gbnVsbHB0cikKKyAgICAgeworQEAgLTIxNCw2ICsyMDUsMjAg QEAKKyAgICAgICAgIHRocm93IGxvZ2ljX2Vycm9yKCJWaWRlbyBDb2RlYyBub3QgZm91bmQiKTsK KyAgICAgfQorIAorKyAgICBtX3BWaWRlb0NvZGVjQ29udGV4dCA9IGF2Y29kZWNfYWxsb2NfY29u dGV4dDMobV9wVmlkZW9Db2RlYyk7CisrCisrICAgIGlmIChtX3BWaWRlb0NvZGVjQ29udGV4dCA9 PSBudWxscHRyKQorKyAgICB7CisrICAgICAgICBkZXN0cm95KCk7CisrICAgICAgICB0aHJvdyBs b2dpY19lcnJvcigiQ291bGQgbm90IGFsbG9jYXRlIHZpZGVvIGNvZGVjIGNvbnRleHQiKTsKKysg ICAgfQorKworKyAgICBpZiAoYXZjb2RlY19wYXJhbWV0ZXJzX3RvX2NvbnRleHQobV9wVmlkZW9D b2RlY0NvbnRleHQsIG1fcFZpZGVvU3RyZWFtLT5jb2RlY3BhcikgPCAwKQorKyAgICB7CisrICAg ICAgICBkZXN0cm95KCk7CisrICAgICAgICB0aHJvdyBsb2dpY19lcnJvcigiQ291bGQgbm90IGNv bmZpZ3VyZSB2aWRlbyBjb2RlYyBjb250ZXh0Iik7CisrICAgIH0KKysKKyAgICAgbV9wVmlkZW9D b2RlY0NvbnRleHQtPndvcmthcm91bmRfYnVncyA9IDE7CisgCisgICAgIGlmIChhdmNvZGVjX29w ZW4yKG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BWaWRlb0NvZGVjLCBudWxscHRyKSA8IDApCitA QCAtMzg2LDEzICszOTEsNiBAQAorIAorIHZvaWQgTW92aWVEZWNvZGVyOjppbml0aWFsaXplRmls dGVyR3JhcGgoY29uc3QgQVZSYXRpb25hbCYgdGltZUJhc2UsIGNvbnN0IHN0ZDo6c3RyaW5nJiBz aXplLCBib29sIG1haW50YWluQXNwZWN0UmF0aW8pCisgeworLSAgICBzdGF0aWMgY29uc3QgQVZQ aXhlbEZvcm1hdCBwaXhlbEZvcm1hdHNbXSA9IHsgQVZfUElYX0ZNVF9SR0IyNCwgQVZfUElYX0ZN VF9OT05FIH07CistCistICAgIGF1dG8gZGVsID0gW10gKEFWQnVmZmVyU2lua1BhcmFtcyogcCkg eyBhdl9mcmVlcChwKTsgfTsKKy0gICAgc3RkOjp1bmlxdWVfcHRyPEFWQnVmZmVyU2lua1BhcmFt cywgZGVjbHR5cGUoZGVsKT4gYnVmZmVyc2lua1BhcmFtcyhhdl9idWZmZXJzaW5rX3BhcmFtc19h bGxvYygpLCBkZWwpOworLQorLSAgICBhdmZpbHRlcl9yZWdpc3Rlcl9hbGwoKTsKKy0KKyAgICAg bV9wRmlsdGVyR3JhcGggPSBhdmZpbHRlcl9ncmFwaF9hbGxvYygpOworICAgICBhc3NlcnQobV9w RmlsdGVyR3JhcGgpOworIAorQEAgLTQwNCwxMCArNDAyLDggQEAKKyAKKyAgICAgY2hlY2tSYyhh dmZpbHRlcl9ncmFwaF9jcmVhdGVfZmlsdGVyKCZtX3BGaWx0ZXJTb3VyY2UsIGF2ZmlsdGVyX2dl dF9ieV9uYW1lKCJidWZmZXIiKSwgInRodW1iX2J1ZmZlciIsIHNzLnN0cigpLmNfc3RyKCksIG51 bGxwdHIsIG1fcEZpbHRlckdyYXBoKSwKKyAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBm aWx0ZXIgc291cmNlIik7CistICAgIGJ1ZmZlcnNpbmtQYXJhbXMtPnBpeGVsX2ZtdHMgPSBwaXhl bEZvcm1hdHM7CistICAgIGNoZWNrUmMoYXZmaWx0ZXJfZ3JhcGhfY3JlYXRlX2ZpbHRlcigmbV9w RmlsdGVyU2luaywgYXZmaWx0ZXJfZ2V0X2J5X25hbWUoImJ1ZmZlcnNpbmsiKSwgInRodW1iX2J1 ZmZlcnNpbmsiLCBudWxscHRyLCBidWZmZXJzaW5rUGFyYW1zLmdldCgpLCBtX3BGaWx0ZXJHcmFw aCksCisrICAgIGNoZWNrUmMoYXZmaWx0ZXJfZ3JhcGhfY3JlYXRlX2ZpbHRlcigmbV9wRmlsdGVy U2luaywgYXZmaWx0ZXJfZ2V0X2J5X25hbWUoImJ1ZmZlcnNpbmsiKSwgInRodW1iX2J1ZmZlcnNp bmsiLCBudWxscHRyLCBudWxscHRyLCBtX3BGaWx0ZXJHcmFwaCksCisgICAgICAgICAgICAgIkZh aWxlZCB0byBjcmVhdGUgZmlsdGVyIHNpbmsiKTsKKy0gICAgYnVmZmVyc2lua1BhcmFtcy5yZWxl YXNlKCk7CisgCisgICAgIEFWRmlsdGVyQ29udGV4dCogeWFkaWZGaWx0ZXIgPSBudWxscHRyOwor ICAgICBpZiAobV9wRnJhbWUtPmludGVybGFjZWRfZnJhbWUgIT0gMCkKK0BAIC01MDAsMTUgKzQ5 NiwxNSBAQAorICAgICB9CisgCisgICAgIGNoZWNrUmMoYXZfc2Vla19mcmFtZShtX3BGb3JtYXRD b250ZXh0LCAtMSwgdGltZXN0YW1wLCAwKSwgIlNlZWtpbmcgaW4gdmlkZW8gZmFpbGVkIik7Cist ICAgIGF2Y29kZWNfZmx1c2hfYnVmZmVycyhtX3BGb3JtYXRDb250ZXh0LT5zdHJlYW1zW21fVmlk ZW9TdHJlYW1dLT5jb2RlYyk7CisrICAgIGF2Y29kZWNfZmx1c2hfYnVmZmVycyhtX3BWaWRlb0Nv ZGVjQ29udGV4dCk7CisgCisgICAgIGludCBrZXlGcmFtZUF0dGVtcHRzID0gMDsKKy0gICAgYm9v bCBnb3RGcmFtZSA9IDA7CisrICAgIGJvb2wgZ290RnJhbWU7CisgCisgICAgIGRvCisgICAgIHsK KyAgICAgICAgIGludCBjb3VudCA9IDA7CistICAgICAgICBnb3RGcmFtZSA9IDA7CisrICAgICAg ICBnb3RGcmFtZSA9IGZhbHNlOworIAorICAgICAgICAgd2hpbGUgKCFnb3RGcmFtZSAmJiBjb3Vu dCA8IDIwKQorICAgICAgICAgeworQEAgLTU1MiwxNyArNTQ4LDMzIEBACisgICAgICAgICByZXR1 cm4gZmFsc2U7CisgICAgIH0KKyAKKy0gICAgYXZfZnJhbWVfdW5yZWYobV9wRnJhbWUpOworLQor LSAgICBpbnQgZnJhbWVGaW5pc2hlZDsKKysgICAgaW50IHJjID0gYXZjb2RlY19zZW5kX3BhY2tl dChtX3BWaWRlb0NvZGVjQ29udGV4dCwgbV9wUGFja2V0KTsKKysgICAgaWYocmMgPT0gQVZFUlJP UihFQUdBSU4pKQorKyAgICB7CisrICAgICAgICByYyA9IDA7CisrICAgIH0KKyAKKy0gICAgaW50 IGJ5dGVzRGVjb2RlZCA9IGF2Y29kZWNfZGVjb2RlX3ZpZGVvMihtX3BWaWRlb0NvZGVjQ29udGV4 dCwgbV9wRnJhbWUsICZmcmFtZUZpbmlzaGVkLCBtX3BQYWNrZXQpOworLSAgICBpZiAoYnl0ZXNE ZWNvZGVkIDwgMCkKKysgICAgaWYocmMgPT0gQVZFUlJPUl9FT0YpCisrICAgIHsKKysgICAgICAg IHJldHVybiBmYWxzZTsKKysgICAgfQorKyAgICBlbHNlIGlmKHJjIDwgMCkKKyAgICAgeworLSAg ICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIkZhaWxlZCB0byBkZWNvZGUgdmlkZW8gZnJhbWU6IGJ5 dGVzRGVjb2RlZCA8IDAiKTsKKysgICAgICAgIHRocm93IGxvZ2ljX2Vycm9yKCJGYWlsZWQgdG8g ZGVjb2RlIHZpZGVvIGZyYW1lOiBhdmNvZGVjX3NlbmRfcGFja2V0KCkgPCAwIik7CisgICAgIH0K KyAKKy0gICAgcmV0dXJuIGZyYW1lRmluaXNoZWQgPiAwOworKyAgICByYyA9IGF2Y29kZWNfcmVj ZWl2ZV9mcmFtZShtX3BWaWRlb0NvZGVjQ29udGV4dCwgbV9wRnJhbWUpOworKyAgICBzd2l0Y2go cmMpCisrICAgIHsKKysgICAgICAgIGNhc2UgMDoKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK KysKKysgICAgICAgIGNhc2UgQVZFUlJPUihFQUdBSU4pOgorKyAgICAgICAgICAgIHJldHVybiBm YWxzZTsKKysKKysgICAgICAgIGRlZmF1bHQ6CisrICAgICAgICAgICAgdGhyb3cgbG9naWNfZXJy b3IoIkZhaWxlZCB0byBkZWNvZGUgdmlkZW8gZnJhbWU6IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZSgp IDwgMCIpOworKyAgICB9CisgfQorIAorIGJvb2wgTW92aWVEZWNvZGVyOjpnZXRWaWRlb1BhY2tl dCgpCitAQCAtNTcwLDggKzU4Miw2IEBACisgICAgIGJvb2wgZnJhbWVzQXZhaWxhYmxlID0gdHJ1 ZTsKKyAgICAgYm9vbCBmcmFtZURlY29kZWQgPSBmYWxzZTsKKyAKKy0gICAgaW50IGF0dGVtcHRz ID0gMDsKKy0KKyAgICAgaWYgKG1fcFBhY2tldCkKKyAgICAgeworICAgICAgICAgYXZfcGFja2V0 X3VucmVmKG1fcFBhY2tldCk7CitAQCAtNTgwLDYgKzU5MCw3IEBACisgCisgICAgIG1fcFBhY2tl dCA9IG5ldyBBVlBhY2tldCgpOworIAorKworICAgICB3aGlsZSAoZnJhbWVzQXZhaWxhYmxlICYm ICFmcmFtZURlY29kZWQpCisgICAgIHsKKyAgICAgICAgIGZyYW1lc0F2YWlsYWJsZSA9IGF2X3Jl YWRfZnJhbWUobV9wRm9ybWF0Q29udGV4dCwgbV9wUGFja2V0KSA+PSAwOworQEAgLTY0NCw3ICs2 NTUsNyBAQAorIAorIGludDMyX3QgTW92aWVEZWNvZGVyOjpnZXRTdHJlYW1Sb3RhdGlvbigpCisg eworLSAgICBpbnQzMl90KiBtYXRyaXggPSByZWludGVycHJldF9jYXN0PGludDMyX3QqPihhdl9z dHJlYW1fZ2V0X3NpZGVfZGF0YShtX3BWaWRlb1N0cmVhbSwgQVZfUEtUX0RBVEFfRElTUExBWU1B VFJJWCwgbnVsbHB0cikpOworKyAgICBhdXRvIG1hdHJpeCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50 MzJfdCo+KGF2X3N0cmVhbV9nZXRfc2lkZV9kYXRhKG1fcFZpZGVvU3RyZWFtLCBBVl9QS1RfREFU QV9ESVNQTEFZTUFUUklYLCBudWxscHRyKSk7CisgICAgIGlmIChtYXRyaXgpCisgICAgIHsKKyAg ICAgICAgIGF1dG8gYW5nbGUgPSBscm91bmQoYXZfZGlzcGxheV9yb3RhdGlvbl9nZXQobWF0cml4 KSk7CisKKy0tLSBhL2xpYmZmbXBlZ3RodW1ibmFpbGVyL21vdmllZGVjb2Rlci5oCTIwMTctMTEt MTIgMDQ6MjM6MzguMDAwMDAwMDAwIC0wNTAwCisrKysgYi9saWJmZm1wZWd0aHVtYm5haWxlci9t b3ZpZWRlY29kZXIuaAkyMDIzLTA1LTA1IDEzOjI2OjA3LjA5NTUyOTkxMSAtMDQwMAorQEAgLTc4 LDcgKzc4LDcgQEAKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgbV9WaWRlb1N0cmVhbTsN CisgICAgIEFWRm9ybWF0Q29udGV4dCogICAgICAgIG1fcEZvcm1hdENvbnRleHQ7DQorICAgICBB VkNvZGVjQ29udGV4dCogICAgICAgICBtX3BWaWRlb0NvZGVjQ29udGV4dDsNCistICAgIEFWQ29k ZWMqICAgICAgICAgICAgICAgIG1fcFZpZGVvQ29kZWM7DQorKyAgICBjb25zdCBBVkNvZGVjKiAg ICAgICAgICBtX3BWaWRlb0NvZGVjOw0KKyAgICAgQVZGaWx0ZXJHcmFwaCogICAgICAgICAgbV9w RmlsdGVyR3JhcGg7DQorICAgICBBVkZpbHRlckNvbnRleHQqICAgICAgICBtX3BGaWx0ZXJTb3Vy Y2U7DQorICAgICBBVkZpbHRlckNvbnRleHQqICAgICAgICBtX3BGaWx0ZXJTaW5rOw0KZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2ZmbXBl Z3RodW1ibmFpbGVyL3RlbXBsYXRlCmluZGV4IDAzOWVlYTc2MjJiMy4uMzVkNTQ2MDE4ZDEyIDEw MDY0NAotLS0gYS9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvZmZtcGVndGh1bWJuYWlsZXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdmZm1wZWd0aHVtYm5haWxlcicKIHBrZ25hbWU9ZmZtcGVndGh1bWJuYWlsZXIK IHZlcnNpb249Mi4yLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtl CiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0ibGlicG5nLWRldmVs IGxpYmpwZWctdHVyYm8tZGV2ZWwgZmZtcGVnLWRldmVsIgpAQCAtOSw4ICs5LDggQEAgZGVwZW5k cz0iZmZtcGVnIgogc2hvcnRfZGVzYz0iTGlnaHR3ZWlnaHQgdmlkZW8gdGh1bWJuYWlsZXIiCiBt YWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BM LTIuMC1vci1sYXRlciIKLWhvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vZGlya3ZkYi8ke3Br Z25hbWV9IgotZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9yZWxlYXNlcy9kb3dubG9hZC8ke3ZlcnNp b259LyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIuYnoyIgoraG9tZXBhZ2U9Imh0dHBzOi8vZ2l0 aHViLmNvbS9kaXJrdmRiIgorZGlzdGZpbGVzPSIke2hvbWVwYWdlfS8ke3BrZ25hbWV9L3JlbGVh c2VzL2Rvd25sb2FkLyR7dmVyc2lvbn0vJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci5iejIiCiBj aGVja3N1bT0xY2IyNDA1OWMzODIyM2Y2NTdiMzAwYzg0ZGQ4MDQ5MWI3MDQwZDRiNjk0NzFjNGZl YTY5YmU4NjJiYzk5YjViCiAKIHBvc3RfaW5zdGFsbCgpIHsKCkZyb20gZTJlMzI3OGNkZTlhOGY5 ODdjODA0ZTVmYzI2Y2RmNzZjZDAzZjc4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0 NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDMzLzExM10gZmZtcGVndGh1bWJzOiByZXZidW1wIGZv ciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZmZtcGVndGh1bWJzL3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUgYi9zcmNwa2dzL2ZmbXBlZ3RodW1icy90 ZW1wbGF0ZQppbmRleCA1ZjBiOTQxNGRhZGEuLjExYjg4MTkzNTI4ZiAxMDA2NDQKLS0tIGEvc3Jj cGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWd0aHVtYnMn CiBwa2duYW1lPWZmbXBlZ3RodW1icwogdmVyc2lvbj0yMi4xMi4xCi1yZXZpc2lvbj0xCityZXZp c2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1t b2R1bGVzIGtjb3JlYWRkb25zIGtjb25maWctZGV2ZWwKICBwa2ctY29uZmlnIHF0NS1ob3N0LXRv b2xzIHF0NS1xbWFrZSBnZXR0ZXh0IgoKRnJvbSAxNmU4NGUzYWNmZDE1NjRmNTAzZmNlYWM2Mjdh ODY0ZWIyNzhmNzc2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwMzQvMTEzXSBmZm1zMjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8IDQyNCArKysrKysrKysrKysrKysr KysrKysrKysrKysrCiBzcmNwa2dzL2ZmbXMyL3RlbXBsYXRlICAgICAgICAgICAgICB8ICAgMiAr LQogMiBmaWxlcyBjaGFuZ2VkLCA0MjUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9mZm1zMi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2Zm bXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjE0NzlmYWJjYWZjYgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtczIv cGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsNDI0IEBACitGcm9tIDQ1NjczMTQ5ZTlh MmY1NTg2ODU1YWQ0NzJlMzA1OTA4NGVhYTM2YjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KK0RhdGU6 IFR1ZSwgNCBNYXkgMjAyMSAxNDo0MToyMSArMDEwMAorU3ViamVjdDogW1BBVENIXSBVc2UgYXV0 byBmb3IgQVZDb2RlYworCitUaGUgZ2VuaXVzZXMgb3ZlciBhdCBGRm1wZWcgZGVjaWRlZCB0byBj b25zdGlmeSB0aGlzIEFQSSwgc28gb2xkCit2ZXJzaW9ucyBvZiB0aGUgbGlicmFyeSB3aWxsIHJl dHVybiBBVkNvZGVjICosIHdoaWxlIG5ldyB2ZXJzaW9ucworb2YgdGhlIGxpYmFyeSB3aWxsIHJl dHVybiBjb25zdCBBVkNvZGVjICosIHdoaWNoLCBpbiBDKyssIGFyZSBub3QKK09LIHRvIGNvbnZl cnQgYmV0d2Vlbi4KKworUmF0aGVyIHRoYW4gdXNlIHNvbWUgbWFjcm8gaGVsbCBpbiBmZm1zY29t cGF0LmgsIHdlIGNhbiB3b3JrIGFyb3VuZAordGhpcyBieSB1c2luZyBhdXRvLgorCitHcm9zcy4K KworU2lnbmVkLW9mZi1ieTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVpdGVuaHVpc0BnbWFp bC5jb20+CistLS0KKyBzcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAgfCAyICstCisgc3JjL2NvcmUv aW5kZXhpbmcuY3BwICAgIHwgNiArKystLS0KKyBzcmMvY29yZS92aWRlb3NvdXJjZS5jcHAgfCAy ICstCisgMyBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisK K2RpZmYgLS1naXQgYS9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAgYi9zcmMvY29yZS9hdWRpb3Nv dXJjZS5jcHAKK2luZGV4IGU0Y2U5N2MuLmFjMDk2NjYgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9h dWRpb3NvdXJjZS5jcHAKKysrKyBiL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAorQEAgLTQ2OSw3 ICs0NjksNyBAQCB2b2lkIEZGTVNfQXVkaW9Tb3VyY2U6Ok9wZW5GaWxlKCkgeworIAorICAgICBM QVZGT3BlbkZpbGUoU291cmNlRmlsZS5jX3N0cigpLCBGb3JtYXRDb250ZXh0LCBUcmFja051bWJl cik7CisgCistICAgIEFWQ29kZWMgKkNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0 Q29udGV4dC0+c3RyZWFtc1tUcmFja051bWJlcl0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAg IGF1dG8gKkNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFt c1tUcmFja051bWJlcl0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisgICAgIGlmIChDb2RlYyA9PSBu dWxscHRyKQorICAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9ERUNPRElO RywgRkZNU19FUlJPUl9DT0RFQywKKyAgICAgICAgICAgICAiQXVkaW8gY29kZWMgbm90IGZvdW5k Iik7CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvaW5kZXhpbmcuY3BwIGIvc3JjL2NvcmUvaW5kZXhp bmcuY3BwCitpbmRleCBlNTQ3YzVhLi41OWZiNGU4IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvaW5k ZXhpbmcuY3BwCisrKysgYi9zcmMvY29yZS9pbmRleGluZy5jcHAKK0BAIC0zODQsNyArMzg0LDcg QEAgRkZNU19UcmFja1R5cGUgRkZNU19JbmRleGVyOjpHZXRUcmFja1R5cGUoaW50IFRyYWNrKSB7 CisgfQorIAorIGNvbnN0IGNoYXIgKkZGTVNfSW5kZXhlcjo6R2V0VHJhY2tDb2RlYyhpbnQgVHJh Y2spIHsKKy0gICAgQVZDb2RlYyAqY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRD b250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysgICAgYXV0byAq Y29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNr XS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAgcmV0dXJuIGNvZGVjID8gY29kZWMtPm5hbWUg OiBudWxscHRyOworIH0KKyAKK0BAIC00MDIsNyArNDAyLDcgQEAgRkZNU19JbmRleCAqRkZNU19J bmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAgIFVzZURUUyk7CisgCisgICAgICAg ICBpZiAoSW5kZXhNYXNrLmNvdW50KGkpICYmIEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNv ZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykgeworLSAgICAgICAgICAg IEFWQ29kZWMgKlZpZGVvQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0 LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworKyAgICAgICAgICAgIGF1dG8gKlZp ZGVvQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ld LT5jb2RlY3Bhci0+Y29kZWNfaWQpOworICAgICAgICAgICAgIGlmICghVmlkZW9Db2RlYykgewor ICAgICAgICAgICAgICAgICBGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5kaXNjYXJkID0gQVZE SVNDQVJEX0FMTDsKKyAgICAgICAgICAgICAgICAgSW5kZXhNYXNrLmVyYXNlKGkpOworQEAgLTQz Myw3ICs0MzMsNyBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7Cisg ICAgICAgICAgICAgICAgIEluZGV4TWFzay5pbnNlcnQoaSk7CisgICAgICAgICAgICAgfQorICAg ICAgICAgfSBlbHNlIGlmIChJbmRleE1hc2suY291bnQoaSkgJiYgRm9ybWF0Q29udGV4dC0+c3Ry ZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElPKSB7Cist ICAgICAgICAgICAgQVZDb2RlYyAqQXVkaW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZv cm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAgICAgICAg ICAgYXV0byAqQXVkaW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQt PnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisgICAgICAgICAgICAgaWYgKEF1ZGlv Q29kZWMgPT0gbnVsbHB0cikKKyAgICAgICAgICAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24o RkZNU19FUlJPUl9DT0RFQywgRkZNU19FUlJPUl9VTlNVUFBPUlRFRCwKKyAgICAgICAgICAgICAg ICAgICAgICJBdWRpbyBjb2RlYyBub3QgZm91bmQiKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS92 aWRlb3NvdXJjZS5jcHAgYi9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAKK2luZGV4IGI4ODk5NzAu Ljg5NTZjMjIgMTAwNjQ0CistLS0gYS9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAKKysrKyBiL3Ny Yy9jb3JlL3ZpZGVvc291cmNlLmNwcAorQEAgLTE3MSw3ICsxNzEsNyBAQCBGRk1TX1ZpZGVvU291 cmNlOjpGRk1TX1ZpZGVvU291cmNlKGNvbnN0IGNoYXIgKlNvdXJjZUZpbGUsIEZGTVNfSW5kZXgg JkluZGV4LCBpbgorIAorICAgICAgICAgTEFWRk9wZW5GaWxlKFNvdXJjZUZpbGUsIEZvcm1hdENv bnRleHQsIFZpZGVvVHJhY2spOworIAorLSAgICAgICAgQVZDb2RlYyAqQ29kZWMgPSBhdmNvZGVj X2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1ZpZGVvVHJhY2tdLT5jb2RlY3Bh ci0+Y29kZWNfaWQpOworKyAgICAgICAgYXV0byAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rl cihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1ZpZGVvVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQp OworICAgICAgICAgaWYgKENvZGVjID09IG51bGxwdHIpCisgICAgICAgICAgICAgdGhyb3cgRkZN U19FeGNlcHRpb24oRkZNU19FUlJPUl9ERUNPRElORywgRkZNU19FUlJPUl9DT0RFQywKKyAgICAg ICAgICAgICAgICAgIlZpZGVvIGNvZGVjIG5vdCBmb3VuZCIpOworLS0gCisyLjQwLjAKKworRnJv bSA5NmNiZjM4ZWE5MzgxODI5YTEzMTRmNDMyYTJjNjA0OTVkY2VmYWFkIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQorRnJvbTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVpdGVuaHVpc0BnbWFp bC5jb20+CitEYXRlOiBUdWUsIDQgTWF5IDIwMjEgMTQ6MTI6NDEgKzAxMDAKK1N1YmplY3Q6IFtQ QVRDSF0gYWxsOiBVcGRhdGUgQVZQYWNrZXQgQVBJIHVzYWdlCisKK0FWUGFja2V0cyBtdXN0IGFs bCBiZSBvbiB0aGUgaGVhcCBub3csIHNpbmNlIGl0IGlzIG5vIGxvbmdlcgorcGFydCBvZiB0aGUg bGliYXYqIEFCSS4KKworU2lnbmVkLW9mZi1ieTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVp dGVuaHVpc0BnbWFpbC5jb20+CistLS0KKyBzcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAgfCAxNiAr KysrKystLS0tCisgc3JjL2NvcmUvaW5kZXhpbmcuY3BwICAgIHwgNjMgKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9jb3JlL2luZGV4aW5nLmggICAgICB8ICA0 ICstLQorIHNyYy9jb3JlL3V0aWxzLmNwcCAgICAgICB8ICA2IC0tLS0KKyBzcmMvY29yZS91dGls cy5oICAgICAgICAgfCAgMSAtCisgc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwIHwgMzAgKysrKysr KysrKy0tLS0tLS0tLQorIDYgZmlsZXMgY2hhbmdlZCwgNjQgaW5zZXJ0aW9ucygrKSwgNTYgZGVs ZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAgYi9zcmMv Y29yZS9hdWRpb3NvdXJjZS5jcHAKK2luZGV4IDM3Y2Y5YWUuLmU0Y2U5N2MgMTAwNjQ0CistLS0g YS9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAKKysrKyBiL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNw cAorQEAgLTI4NSwxMCArMjg1LDE1IEBAIEZGTVNfQXVkaW9Tb3VyY2U6OkF1ZGlvQmxvY2sgKkZG TVNfQXVkaW9Tb3VyY2U6OkNhY2hlQmxvY2soQ2FjaGVJdGVyYXRvciAmcG9zKSB7CisgaW50IEZG TVNfQXVkaW9Tb3VyY2U6OkRlY29kZU5leHRCbG9jayhDYWNoZUl0ZXJhdG9yICpwb3MpIHsKKyAg ICAgQ3VycmVudEZyYW1lID0gJkZyYW1lc1tQYWNrZXROdW1iZXJdOworIAorLSAgICBBVlBhY2tl dCBQYWNrZXQ7CistICAgIGlmICghUmVhZFBhY2tldCgmUGFja2V0KSkKKysgICAgQVZQYWNrZXQg KlBhY2tldCA9IGF2X3BhY2tldF9hbGxvYygpOworKyAgICBpZiAoIVBhY2tldCkKKysgICAgICAg IHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfUEFSU0VSLCBGRk1TX0VSUk9SX0FMTE9D QVRJT05fRkFJTEVELAorKyAgICAgICAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUgcGFja2V0LiIp OworKyAgICBpZiAoIVJlYWRQYWNrZXQoUGFja2V0KSkgeworKyAgICAgICAgYXZfcGFja2V0X2Zy ZWUoJlBhY2tldCk7CisgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX1BB UlNFUiwgRkZNU19FUlJPUl9VTktOT1dOLAorICAgICAgICAgICAgICJSZWFkUGFja2V0IHVuZXhw ZWN0ZWRseSBmYWlsZWQgdG8gcmVhZCBhIHBhY2tldCIpOworKyAgICB9CisgCisgICAgIC8vIFJl YWRQYWNrZXQgbWF5IGhhdmUgY2hhbmdlZCB0aGUgcGFja2V0IG51bWJlcgorICAgICBDdXJyZW50 RnJhbWUgPSAmRnJhbWVzW1BhY2tldE51bWJlcl07CitAQCAtMjk3LDggKzMwMiw5IEBAIGludCBG Rk1TX0F1ZGlvU291cmNlOjpEZWNvZGVOZXh0QmxvY2soQ2FjaGVJdGVyYXRvciAqcG9zKSB7Cisg ICAgIGludCBOdW1iZXJPZlNhbXBsZXMgPSAwOworICAgICBBdWRpb0Jsb2NrICpDYWNoZWRCbG9j ayA9IG51bGxwdHI7CisgICAgIAorLSAgICBpbnQgUmV0ID0gYXZjb2RlY19zZW5kX3BhY2tldChD b2RlY0NvbnRleHQsICZQYWNrZXQpOworLSAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7Cisr ICAgIGludCBSZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0KENvZGVjQ29udGV4dCwgUGFja2V0KTsK KysgICAgYXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisrICAgIGF2X3BhY2tldF9mcmVlKCZQYWNr ZXQpOworIAorICAgICBhdl9mcmFtZV91bnJlZihEZWNvZGVGcmFtZSk7CisgICAgIFJldCA9IGF2 Y29kZWNfcmVjZWl2ZV9mcmFtZShDb2RlY0NvbnRleHQsIERlY29kZUZyYW1lKTsKK0BAIC01MTMs OCArNTE5LDYgQEAgdm9pZCBGRk1TX0F1ZGlvU291cmNlOjpTZWVrKCkgeworIH0KKyAKKyBib29s IEZGTVNfQXVkaW9Tb3VyY2U6OlJlYWRQYWNrZXQoQVZQYWNrZXQgKlBhY2tldCkgeworLSAgICBJ bml0TnVsbFBhY2tldCgqUGFja2V0KTsKKy0KKyAgICAgd2hpbGUgKGF2X3JlYWRfZnJhbWUoRm9y bWF0Q29udGV4dCwgUGFja2V0KSA+PSAwKSB7CisgICAgICAgICBpZiAoUGFja2V0LT5zdHJlYW1f aW5kZXggPT0gVHJhY2tOdW1iZXIpIHsKKyAgICAgICAgICAgICAvLyBSZXF1aXJlZCBiZWNhdXNl IG5vdCBhbGwgYXVkaW8gcGFja2V0cywgZXNwZWNpYWxseSBpbiBvZ2csIGhhdmUgYSBwdHMuIFVz ZSB0aGUgcHJldmlvdXMgdmFsaWQgcGFja2V0J3MgcHRzIGluc3RlYWQuCitkaWZmIC0tZ2l0IGEv c3JjL2NvcmUvaW5kZXhpbmcuY3BwIGIvc3JjL2NvcmUvaW5kZXhpbmcuY3BwCitpbmRleCAyM2Zi OTViLi5lNTQ3YzVhIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvaW5kZXhpbmcuY3BwCisrKysgYi9z cmMvY29yZS9pbmRleGluZy5jcHAKK0BAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBGRk1TX0luZGV4 ZXI6OkNoZWNrQXVkaW9Qcm9wZXJ0aWVzKGludCBUcmFjaywgQVZDb2RlY0NvbnRleHQgKkNvbnRl eHQpIHsKKyAgICAgfQorIH0KKyAKKy12b2lkIEZGTVNfSW5kZXhlcjo6UGFyc2VWaWRlb1BhY2tl dChTaGFyZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgJnBrdCwgaW50ICpSZXBl YXRQaWN0LAorK3ZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29u dGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAqcGt0LCBpbnQgKlJlcGVhdFBpY3QsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpGcmFtZVR5cGUsIGJvb2wgKklu dmlzaWJsZSwgZW51bSBBVlBpY3R1cmVTdHJ1Y3R1cmUgKkxhc3RQaWNTdHJ1Y3QpIHsKKyAgICAg aWYgKFZpZGVvQ29udGV4dC5QYXJzZXIpIHsKKyAgICAgICAgIHVpbnQ4X3QgKk9COworQEAgLTMz MCw4ICszMzAsOCBAQCB2b2lkIEZGTVNfSW5kZXhlcjo6UGFyc2VWaWRlb1BhY2tldChTaGFyZWRB VkNvbnRleHQgJlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgJnBrdAorICAgICAgICAgYXZfcGFyc2Vy X3BhcnNlMihWaWRlb0NvbnRleHQuUGFyc2VyLAorICAgICAgICAgICAgIFZpZGVvQ29udGV4dC5D b2RlY0NvbnRleHQsCisgICAgICAgICAgICAgJk9CLCAmT0JTaXplLAorLSAgICAgICAgICAgIHBr dC5kYXRhLCBwa3Quc2l6ZSwKKy0gICAgICAgICAgICBwa3QucHRzLCBwa3QuZHRzLCBwa3QucG9z KTsKKysgICAgICAgICAgICBwa3QtPmRhdGEsIHBrdC0+c2l6ZSwKKysgICAgICAgICAgICBwa3Qt PnB0cywgcGt0LT5kdHMsIHBrdC0+cG9zKTsKKyAKKyAgICAgICAgIC8vIEguMjY0IChQQUZGKSBh bmQgSEVWQyBtYXkgaGF2ZSBvbmUgZmllbGQgcGVyIHBhY2tldCwgc28gd2UgbmVlZCB0byB0cmFj aworICAgICAgICAgLy8gd2hlbiB3ZSBoYXZlIGEgZnVsbCBvciBoYWxmIGZyYW1lIGF2YWlsYWJs ZSwgYW5kIG1hcmsgb25lIG9mIHRoZW0gYXMKK0BAIC0zNTEsMTUgKzM1MSwxNSBAQCB2b2lkIEZG TVNfSW5kZXhlcjo6UGFyc2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4 dCwgQVZQYWNrZXQgJnBrdAorIAorICAgICAgICAgKlJlcGVhdFBpY3QgPSBWaWRlb0NvbnRleHQu UGFyc2VyLT5yZXBlYXRfcGljdDsKKyAgICAgICAgICpGcmFtZVR5cGUgPSBWaWRlb0NvbnRleHQu UGFyc2VyLT5waWN0X3R5cGU7CistICAgICAgICAqSW52aXNpYmxlID0gKEluY29tcGxldGVGcmFt ZSB8fCBWaWRlb0NvbnRleHQuUGFyc2VyLT5yZXBlYXRfcGljdCA8IDAgfHwgKHBrdC5mbGFncyAm IEFWX1BLVF9GTEFHX0RJU0NBUkQpKTsKKysgICAgICAgICpJbnZpc2libGUgPSAoSW5jb21wbGV0 ZUZyYW1lIHx8IFZpZGVvQ29udGV4dC5QYXJzZXItPnJlcGVhdF9waWN0IDwgMCB8fCAocGt0LT5m bGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpKTsKKyAgICAgfSBlbHNlIHsKKy0gICAgICAgICpJ bnZpc2libGUgPSAhIShwa3QuZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKTsKKysgICAgICAg ICpJbnZpc2libGUgPSAhIShwa3QtPmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCk7CisgICAg IH0KKyAKKyAgICAgaWYgKFZpZGVvQ29udGV4dC5Db2RlY0NvbnRleHQtPmNvZGVjX2lkID09IEFW X0NPREVDX0lEX1ZQOCkKKy0gICAgICAgIFBhcnNlVlA4KHBrdC5kYXRhWzBdLCBJbnZpc2libGUs IEZyYW1lVHlwZSk7CisrICAgICAgICBQYXJzZVZQOChwa3QtPmRhdGFbMF0sIEludmlzaWJsZSwg RnJhbWVUeXBlKTsKKyAgICAgZWxzZSBpZiAoVmlkZW9Db250ZXh0LkNvZGVjQ29udGV4dC0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5KQorLSAgICAgICAgUGFyc2VWUDkocGt0LmRhdGFbMF0s IEludmlzaWJsZSwgRnJhbWVUeXBlKTsKKysgICAgICAgIFBhcnNlVlA5KHBrdC0+ZGF0YVswXSwg SW52aXNpYmxlLCBGcmFtZVR5cGUpOworIH0KKyAKKyB2b2lkIEZGTVNfSW5kZXhlcjo6RnJlZSgp IHsKK0BAIC00NTgsMzIgKzQ1OCwzNiBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5k ZXhpbmcoKSB7CisgICAgICAgICB9CisgICAgIH0KKyAKKy0gICAgQVZQYWNrZXQgUGFja2V0Owor LSAgICBJbml0TnVsbFBhY2tldChQYWNrZXQpOworKyAgICBBVlBhY2tldCAqUGFja2V0ID0gYXZf cGFja2V0X2FsbG9jKCk7CisrICAgIGlmICghUGFja2V0KQorKyAgICAgICAgdGhyb3cgRkZNU19F eGNlcHRpb24oRkZNU19FUlJPUl9DT0RFQywgRkZNU19FUlJPUl9BTExPQ0FUSU9OX0ZBSUxFRCwK KysgICAgICAgICAgICAiQ291bGQgbm90IGFsbG9jYXRlIHBhY2tldC4iKTsKKyAgICAgc3RkOjp2 ZWN0b3I8aW50NjRfdD4gTGFzdFZhbGlkVFMoRm9ybWF0Q29udGV4dC0+bmJfc3RyZWFtcywgQVZf Tk9QVFNfVkFMVUUpOworIAorICAgICBpbnQ2NF90IGZpbGVzaXplID0gYXZpb19zaXplKEZvcm1h dENvbnRleHQtPnBiKTsKKyAgICAgZW51bSBBVlBpY3R1cmVTdHJ1Y3R1cmUgTGFzdFBpY1N0cnVj dCA9IEFWX1BJQ1RVUkVfU1RSVUNUVVJFX1VOS05PV047CistICAgIHdoaWxlIChhdl9yZWFkX2Zy YW1lKEZvcm1hdENvbnRleHQsICZQYWNrZXQpID49IDApIHsKKysgICAgd2hpbGUgKGF2X3JlYWRf ZnJhbWUoRm9ybWF0Q29udGV4dCwgUGFja2V0KSA+PSAwKSB7CisgICAgICAgICAvLyBVcGRhdGUg cHJvZ3Jlc3MKKyAgICAgICAgIC8vIEZvcm1hdENvbnRleHQtPnBiIGNhbiBhcHBhcmVudGx5IGJl IE5VTEwgd2hlbiBvcGVuaW5nIGltYWdlcy4KKyAgICAgICAgIGlmIChJQyAmJiBGb3JtYXRDb250 ZXh0LT5wYikgeworLSAgICAgICAgICAgIGlmICgoKklDKShGb3JtYXRDb250ZXh0LT5wYi0+cG9z LCBmaWxlc2l6ZSwgSUNQcml2YXRlKSkKKysgICAgICAgICAgICBpZiAoKCpJQykoRm9ybWF0Q29u dGV4dC0+cGItPnBvcywgZmlsZXNpemUsIElDUHJpdmF0ZSkpIHsKKysgICAgICAgICAgICAgICAg YXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7CisgICAgICAgICAgICAgICAgIHRocm93IEZGTVNfRXhj ZXB0aW9uKEZGTVNfRVJST1JfQ0FOQ0VMTEVELCBGRk1TX0VSUk9SX1VTRVIsCisgICAgICAgICAg ICAgICAgICAgICAiQ2FuY2VsbGVkIGJ5IHVzZXIiKTsKKysgICAgICAgICAgICB9CisgICAgICAg ICB9CistICAgICAgICBpZiAoIUluZGV4TWFzay5jb3VudChQYWNrZXQuc3RyZWFtX2luZGV4KSkg eworLSAgICAgICAgICAgIGF2X3BhY2tldF91bnJlZigmUGFja2V0KTsKKysgICAgICAgIGlmICgh SW5kZXhNYXNrLmNvdW50KFBhY2tldC0+c3RyZWFtX2luZGV4KSkgeworKyAgICAgICAgICAgIGF2 X3BhY2tldF91bnJlZihQYWNrZXQpOworICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg fQorIAorLSAgICAgICAgaW50IFRyYWNrID0gUGFja2V0LnN0cmVhbV9pbmRleDsKKysgICAgICAg IGludCBUcmFjayA9IFBhY2tldC0+c3RyZWFtX2luZGV4OworICAgICAgICAgRkZNU19UcmFjayAm VHJhY2tJbmZvID0gKCpUcmFja0luZGljZXMpW1RyYWNrXTsKKy0gICAgICAgIGJvb2wgS2V5RnJh bWUgPSAhIShQYWNrZXQuZmxhZ3MgJiBBVl9QS1RfRkxBR19LRVkpOworKyAgICAgICAgYm9vbCBL ZXlGcmFtZSA9ICEhKFBhY2tldC0+ZmxhZ3MgJiBBVl9QS1RfRkxBR19LRVkpOworICAgICAgICAg UmVhZFRTKFBhY2tldCwgTGFzdFZhbGlkVFNbVHJhY2tdLCAoKlRyYWNrSW5kaWNlcylbVHJhY2td LlVzZURUUyk7CisgCisgICAgICAgICBpZiAoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja10t PmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykgeworLSAgICAgICAg ICAgIGludDY0X3QgUFRTID0gVHJhY2tJbmZvLlVzZURUUyA/IFBhY2tldC5kdHMgOiBQYWNrZXQu cHRzOworKyAgICAgICAgICAgIGludDY0X3QgUFRTID0gVHJhY2tJbmZvLlVzZURUUyA/IFBhY2tl dC0+ZHRzIDogUGFja2V0LT5wdHM7CisgICAgICAgICAgICAgaWYgKFBUUyA9PSBBVl9OT1BUU19W QUxVRSkgeworICAgICAgICAgICAgICAgICAvLyBWUHggYWx0LXJlZnMgYXJlIG91dHB1dCBhcyBw YWNrZXRzIHdoaWNoIGxhY2sgdGltZXN0bXBzIG9yIGR1cmF0aW9ucywgc2luY2UKKyAgICAgICAg ICAgICAgICAgLy8gdGhleSBhcmUgaW52aXNpYmxlLiBDdXJyZW50bHksIHRoZSB0aW1lc3RhbXAg bWFuZ2xpbmcgY29kZSBpbiBsaWJhdmZvcm1hdAorQEAgLTQ5NSw5ICs0OTksMTEgQEAgRkZNU19J bmRleCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAgICAgICAvLyBG Rk1TMiBjdXJyZW50bHkgc29ydHMgcGFja2V0cyBieSBQVFMsIHdoaWNoIHdpbGwgYnJlYWsgZGVj b2RpbmcsIG90aGVyd2lzZS4KKyAgICAgICAgICAgICAgICAgYm9vbCBIYXNBbHRSZWZzID0gKEZv cm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09E RUNfSURfVlA4IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRD b250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X1ZQOSk7CistICAgICAgICAgICAgICAgIGlmIChQYWNrZXQuZHVyYXRpb24gPT0gMCAmJiAhSGFz QWx0UmVmcykKKysgICAgICAgICAgICAgICAgaWYgKFBhY2tldC0+ZHVyYXRpb24gPT0gMCAmJiAh SGFzQWx0UmVmcykgeworKyAgICAgICAgICAgICAgICAgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tl dCk7CisgICAgICAgICAgICAgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9S X0lOREVYSU5HLCBGRk1TX0VSUk9SX1BBUlNFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAi SW52YWxpZCBwYWNrZXQgcHRzLCBkdHMsIGFuZCBkdXJhdGlvbiIpOworKyAgICAgICAgICAgICAg ICB9CisgCisgICAgICAgICAgICAgICAgIGlmIChUcmFja0luZm8uZW1wdHkoKSkKKyAgICAgICAg ICAgICAgICAgICAgIFBUUyA9IDA7CitAQCAtNTEzLDcgKzUxOSw3IEBAIEZGTVNfSW5kZXggKkZG TVNfSW5kZXhlcjo6RG9JbmRleGluZygpIHsKKyAgICAgICAgICAgICBQYXJzZVZpZGVvUGFja2V0 KEFWQ29udGV4dHNbVHJhY2tdLCBQYWNrZXQsICZSZXBlYXRQaWN0LCAmRnJhbWVUeXBlLCAmSW52 aXNpYmxlLCAmTGFzdFBpY1N0cnVjdCk7CisgCisgICAgICAgICAgICAgVHJhY2tJbmZvLkFkZFZp ZGVvRnJhbWUoUFRTLCBSZXBlYXRQaWN0LCBLZXlGcmFtZSwKKy0gICAgICAgICAgICAgICAgRnJh bWVUeXBlLCBQYWNrZXQucG9zLCBJbnZpc2libGUpOworKyAgICAgICAgICAgICAgICBGcmFtZVR5 cGUsIFBhY2tldC0+cG9zLCBJbnZpc2libGUpOworICAgICAgICAgfSBlbHNlIGlmIChGb3JtYXRD b250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9U WVBFX0FVRElPKSB7CisgICAgICAgICAgICAgLy8gRm9yIHZpZGVvIHNlZWtpbmcgdGltZXN0YW1w cyBhcmUgdXNlZCBvbmx5IGlmIGFsbCBwYWNrZXRzIGhhdmUKKyAgICAgICAgICAgICAvLyB0aW1l c3RhbXBzLCB3aGlsZSBmb3IgYXVkaW8gdGhleSdyZSB1c2VkIGlmIGFueSBoYXZlIHRpbWVzdGFt cHMsCitAQCAtNTIyLDI4ICs1MjgsMjkgQEAgRkZNU19JbmRleCAqRkZNU19JbmRleGVyOjpEb0lu ZGV4aW5nKCkgeworICAgICAgICAgICAgICAgICBUcmFja0luZm8uSGFzVFMgPSB0cnVlOworIAor ICAgICAgICAgICAgIGludDY0X3QgU3RhcnRTYW1wbGUgPSBBVkNvbnRleHRzW1RyYWNrXS5DdXJy ZW50U2FtcGxlOworLSAgICAgICAgICAgIHVpbnQzMl90IFNhbXBsZUNvdW50ID0gSW5kZXhBdWRp b1BhY2tldChUcmFjaywgJlBhY2tldCwgQVZDb250ZXh0c1tUcmFja10sICpUcmFja0luZGljZXMp OworKyAgICAgICAgICAgIHVpbnQzMl90IFNhbXBsZUNvdW50ID0gSW5kZXhBdWRpb1BhY2tldChU cmFjaywgUGFja2V0LCBBVkNvbnRleHRzW1RyYWNrXSwgKlRyYWNrSW5kaWNlcyk7CisgICAgICAg ICAgICAgVHJhY2tJbmZvLlNhbXBsZVJhdGUgPSBBVkNvbnRleHRzW1RyYWNrXS5Db2RlY0NvbnRl eHQtPnNhbXBsZV9yYXRlOworIAorICAgICAgICAgICAgIFRyYWNrSW5mby5BZGRBdWRpb0ZyYW1l KExhc3RWYWxpZFRTW1RyYWNrXSwKKy0gICAgICAgICAgICAgICAgU3RhcnRTYW1wbGUsIFNhbXBs ZUNvdW50LCBLZXlGcmFtZSwgUGFja2V0LnBvcywgUGFja2V0LmZsYWdzICYgQVZfUEtUX0ZMQUdf RElTQ0FSRCk7CisrICAgICAgICAgICAgICAgIFN0YXJ0U2FtcGxlLCBTYW1wbGVDb3VudCwgS2V5 RnJhbWUsIFBhY2tldC0+cG9zLCBQYWNrZXQtPmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCk7 CisgICAgICAgICB9CisgCistICAgICAgICBpZiAoIShQYWNrZXQuZmxhZ3MgJiBBVl9QS1RfRkxB R19ESVNDQVJEKSkKKy0gICAgICAgICAgICBUcmFja0luZm8uTGFzdER1cmF0aW9uID0gUGFja2V0 LmR1cmF0aW9uOworKyAgICAgICAgaWYgKCEoUGFja2V0LT5mbGFncyAmIEFWX1BLVF9GTEFHX0RJ U0NBUkQpKQorKyAgICAgICAgICAgIFRyYWNrSW5mby5MYXN0RHVyYXRpb24gPSBQYWNrZXQtPmR1 cmF0aW9uOworIAorLSAgICAgICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQpOworKyAgICAgICAg YXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisgICAgIH0KKysgICAgYXZfcGFja2V0X2ZyZWUoJlBh Y2tldCk7CisgCisgICAgIFRyYWNrSW5kaWNlcy0+RmluYWxpemUoQVZDb250ZXh0cywgRm9ybWF0 Q29udGV4dC0+aWZvcm1hdC0+bmFtZSk7CisgICAgIHJldHVybiBUcmFja0luZGljZXMucmVsZWFz ZSgpOworIH0KKyAKKy12b2lkIEZGTVNfSW5kZXhlcjo6UmVhZFRTKGNvbnN0IEFWUGFja2V0ICZQ YWNrZXQsIGludDY0X3QgJlRTLCBib29sICZVc2VEVFMpIHsKKy0gICAgaWYgKCFVc2VEVFMgJiYg UGFja2V0LnB0cyAhPSBBVl9OT1BUU19WQUxVRSkKKy0gICAgICAgIFRTID0gUGFja2V0LnB0czsK Kyt2b2lkIEZGTVNfSW5kZXhlcjo6UmVhZFRTKGNvbnN0IEFWUGFja2V0ICpQYWNrZXQsIGludDY0 X3QgJlRTLCBib29sICZVc2VEVFMpIHsKKysgICAgaWYgKCFVc2VEVFMgJiYgUGFja2V0LT5wdHMg IT0gQVZfTk9QVFNfVkFMVUUpCisrICAgICAgICBUUyA9IFBhY2tldC0+cHRzOworICAgICBpZiAo VFMgPT0gQVZfTk9QVFNfVkFMVUUpCisgICAgICAgICBVc2VEVFMgPSB0cnVlOworLSAgICBpZiAo VXNlRFRTICYmIFBhY2tldC5kdHMgIT0gQVZfTk9QVFNfVkFMVUUpCistICAgICAgICBUUyA9IFBh Y2tldC5kdHM7CisrICAgIGlmIChVc2VEVFMgJiYgUGFja2V0LT5kdHMgIT0gQVZfTk9QVFNfVkFM VUUpCisrICAgICAgICBUUyA9IFBhY2tldC0+ZHRzOworIH0KK2RpZmYgLS1naXQgYS9zcmMvY29y ZS9pbmRleGluZy5oIGIvc3JjL2NvcmUvaW5kZXhpbmcuaAoraW5kZXggM2NmYzNjMy4uNWMwNjg2 OCAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2luZGV4aW5nLmgKKysrKyBiL3NyYy9jb3JlL2luZGV4 aW5nLmgKK0BAIC04MCwxMCArODAsMTAgQEAgcHJpdmF0ZToKKyAgICAgaW50NjRfdCBGaWxlc2l6 ZTsKKyAgICAgdWludDhfdCBEaWdlc3RbMjBdOworIAorLSAgICB2b2lkIFJlYWRUUyhjb25zdCBB VlBhY2tldCAmUGFja2V0LCBpbnQ2NF90ICZUUywgYm9vbCAmVXNlRFRTKTsKKysgICAgdm9pZCBS ZWFkVFMoY29uc3QgQVZQYWNrZXQgKlBhY2tldCwgaW50NjRfdCAmVFMsIGJvb2wgJlVzZURUUyk7 CisgICAgIHZvaWQgQ2hlY2tBdWRpb1Byb3BlcnRpZXMoaW50IFRyYWNrLCBBVkNvZGVjQ29udGV4 dCAqQ29udGV4dCk7CisgICAgIHVpbnQzMl90IEluZGV4QXVkaW9QYWNrZXQoaW50IFRyYWNrLCBB VlBhY2tldCAqUGFja2V0LCBTaGFyZWRBVkNvbnRleHQgJkNvbnRleHQsIEZGTVNfSW5kZXggJlRy YWNrSW5kaWNlcyk7CistICAgIHZvaWQgUGFyc2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQg JlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgJnBrdCwgaW50ICpSZXBlYXRQaWN0LCBpbnQgKkZyYW1l VHlwZSwgYm9vbCAqSW52aXNpYmxlLCBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSAqTGFzdFBpY1N0 cnVjdCk7CisrICAgIHZvaWQgUGFyc2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQgJlZpZGVv Q29udGV4dCwgQVZQYWNrZXQgKnBrdCwgaW50ICpSZXBlYXRQaWN0LCBpbnQgKkZyYW1lVHlwZSwg Ym9vbCAqSW52aXNpYmxlLCBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSAqTGFzdFBpY1N0cnVjdCk7 CisgICAgIHZvaWQgRnJlZSgpOworIHB1YmxpYzoKKyAgICAgRkZNU19JbmRleGVyKGNvbnN0IGNo YXIgKkZpbGVuYW1lKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS91dGlscy5jcHAgYi9zcmMvY29y ZS91dGlscy5jcHAKK2luZGV4IGNlNjc1MzMuLjhhMmU5OTcgMTAwNjQ0CistLS0gYS9zcmMvY29y ZS91dGlscy5jcHAKKysrKyBiL3NyYy9jb3JlL3V0aWxzLmNwcAorQEAgLTYyLDEyICs2Miw2IEBA IHZvaWQgQ2xlYXJFcnJvckluZm8oRkZNU19FcnJvckluZm8gKkVycm9ySW5mbykgeworICAgICB9 CisgfQorIAorLXZvaWQgSW5pdE51bGxQYWNrZXQoQVZQYWNrZXQgJnBrdCkgeworLSAgICBhdl9p bml0X3BhY2tldCgmcGt0KTsKKy0gICAgcGt0LmRhdGEgPSBudWxscHRyOworLSAgICBwa3Quc2l6 ZSA9IDA7CistfQorLQorIHZvaWQgRmlsbEFQKEZGTVNfQXVkaW9Qcm9wZXJ0aWVzICZBUCwgQVZD b2RlY0NvbnRleHQgKkNUWCwgRkZNU19UcmFjayAmRnJhbWVzKSB7CisgICAgIEFQLlNhbXBsZUZv cm1hdCA9IHN0YXRpY19jYXN0PEZGTVNfU2FtcGxlRm9ybWF0Pihhdl9nZXRfcGFja2VkX3NhbXBs ZV9mbXQoQ1RYLT5zYW1wbGVfZm10KSk7CisgICAgIEFQLkJpdHNQZXJTYW1wbGUgPSBhdl9nZXRf Ynl0ZXNfcGVyX3NhbXBsZShDVFgtPnNhbXBsZV9mbXQpICogODsKK2RpZmYgLS1naXQgYS9zcmMv Y29yZS91dGlscy5oIGIvc3JjL2NvcmUvdXRpbHMuaAoraW5kZXggOTgxOWRjNy4uMDAzYWI3OSAx MDA2NDQKKy0tLSBhL3NyYy9jb3JlL3V0aWxzLmgKKysrKyBiL3NyYy9jb3JlL3V0aWxzLmgKK0BA IC01OCw3ICs1OCw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxUPiBtYWtlX3VuaXF1ZShBcmdzJiYuLi4g YXJncykgeworIH0KKyAKKyB2b2lkIENsZWFyRXJyb3JJbmZvKEZGTVNfRXJyb3JJbmZvICpFcnJv ckluZm8pOworLXZvaWQgSW5pdE51bGxQYWNrZXQoQVZQYWNrZXQgJnBrdCk7Cisgdm9pZCBGaWxs QVAoRkZNU19BdWRpb1Byb3BlcnRpZXMgJkFQLCBBVkNvZGVjQ29udGV4dCAqQ1RYLCBGRk1TX1Ry YWNrICZGcmFtZXMpOworIAorIHZvaWQgTEFWRk9wZW5GaWxlKGNvbnN0IGNoYXIgKlNvdXJjZUZp bGUsIEFWRm9ybWF0Q29udGV4dCAqJkZvcm1hdENvbnRleHQsIGludCBUcmFjayk7CitkaWZmIC0t Z2l0IGEvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwIGIvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3Bw CitpbmRleCAwNmJkMTYxLi5iODg5OTcwIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvdmlkZW9zb3Vy Y2UuY3BwCisrKysgYi9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAKK0BAIC02NzMsMzAgKzY3Mywz NCBAQCB2b2lkIEZGTVNfVmlkZW9Tb3VyY2U6OkRlY29kZU5leHRGcmFtZShpbnQ2NF90ICZBU3Rh cnRUaW1lLCBpbnQ2NF90ICZQb3MpIHsKKyAgICAgaWYgKEhhc1BlbmRpbmdEZWxheWVkRnJhbWVz KCkpCisgICAgICAgICByZXR1cm47CisgCistICAgIEFWUGFja2V0IFBhY2tldDsKKy0gICAgSW5p dE51bGxQYWNrZXQoUGFja2V0KTsKKy0KKy0gICAgd2hpbGUgKFJlYWRGcmFtZSgmUGFja2V0KSA+ PSAwKSB7CistICAgICAgICBpZiAoUGFja2V0LnN0cmVhbV9pbmRleCAhPSBWaWRlb1RyYWNrKSB7 CistICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQpOworKyAgICBBVlBhY2tldCAq UGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrICAgIGlmICghUGFja2V0KQorKyAgICAgICAg dGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9ERUNPRElORywgRkZNU19FUlJPUl9BTExP Q0FUSU9OX0ZBSUxFRCwKKysgICAgICAgICAgICAiQ291bGQgbm90IGFsbG9jYXRlIHBhY2tldC4i KTsKKysKKysgICAgd2hpbGUgKFJlYWRGcmFtZShQYWNrZXQpID49IDApIHsKKysgICAgICAgIGlm IChQYWNrZXQtPnN0cmVhbV9pbmRleCAhPSBWaWRlb1RyYWNrKSB7CisrICAgICAgICAgICAgYXZf cGFja2V0X3VucmVmKFBhY2tldCk7CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9 CisgCisgICAgICAgICBpZiAoQVN0YXJ0VGltZSA8IDApCistICAgICAgICAgICAgQVN0YXJ0VGlt ZSA9IEZyYW1lcy5Vc2VEVFMgPyBQYWNrZXQuZHRzIDogUGFja2V0LnB0czsKKysgICAgICAgICAg ICBBU3RhcnRUaW1lID0gRnJhbWVzLlVzZURUUyA/IFBhY2tldC0+ZHRzIDogUGFja2V0LT5wdHM7 CisgCisgICAgICAgICBpZiAoUG9zIDwgMCkKKy0gICAgICAgICAgICBQb3MgPSBQYWNrZXQucG9z OworKyAgICAgICAgICAgIFBvcyA9IFBhY2tldC0+cG9zOworIAorLSAgICAgICAgYm9vbCBGcmFt ZUZpbmlzaGVkID0gRGVjb2RlUGFja2V0KCZQYWNrZXQpOworLSAgICAgICAgYXZfcGFja2V0X3Vu cmVmKCZQYWNrZXQpOworLSAgICAgICAgaWYgKEZyYW1lRmluaXNoZWQpCisrICAgICAgICBib29s IEZyYW1lRmluaXNoZWQgPSBEZWNvZGVQYWNrZXQoUGFja2V0KTsKKysgICAgICAgIGF2X3BhY2tl dF91bnJlZihQYWNrZXQpOworKyAgICAgICAgaWYgKEZyYW1lRmluaXNoZWQpIHsKKysgICAgICAg ICAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAgICAgICAgICByZXR1cm47CisrICAg ICAgICB9CisgICAgIH0KKyAKKyAgICAgLy8gRmx1c2ggZmluYWwgZnJhbWVzCistICAgIEluaXRO dWxsUGFja2V0KFBhY2tldCk7CistICAgIERlY29kZVBhY2tldCgmUGFja2V0KTsKKysgICAgRGVj b2RlUGFja2V0KFBhY2tldCk7CisrICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworIH0KKyAK KyBib29sIEZGTVNfVmlkZW9Tb3VyY2U6OlNlZWtUbyhpbnQgbiwgaW50IFNlZWtPZmZzZXQpIHsK Ky0tIAorMi40MC4wCisKK0Zyb20gYmY5ZTAzZTllMDg1MzRjMDI0ZTVhNzQ0YTY0MzdjNGFhYzE2 MDIwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlcmVrIEJ1aXRlbmh1aXMgPGRl cmVrLmJ1aXRlbmh1aXNAZ21haWwuY29tPgorRGF0ZTogVHVlLCA0IE1heSAyMDIxIDE0OjIwOjQ3 ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBjb25maWd1cmU6IFJlbW92ZSBkZXByZWNhdGVk IEFQSSB1c2UKKworU2lnbmVkLW9mZi1ieTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVpdGVu aHVpc0BnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA0ICsrLS0KKyAxIGZpbGUgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29u ZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiMzVlZjgwYmMuLmQxOTcxNGQwZiAxMDA2 NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTAyLDEwICsx MDIsMTAgQEAgQ0ZMQUdTPSIkX0NGTEFHUyAkRkZNUEVHX0NGTEFHUyIKKworIEFDX0RFRlVOKFtU RVNUX0ZGTVBFR10sCisgICAgICAgICAgW0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0o W1sKKy0gICAgICAgICAgICAjaW5jbHVkZSA8bGliYXZjb2RlYy9hdmNvZGVjLmg+CisrICAgICAg ICAgICAgI2luY2x1ZGUgPGxpYmF2Zm9ybWF0L2F2Zm9ybWF0Lmg+CisgICAgICAgICAgICAgI2lu Y2x1ZGUgPGxpYnN3c2NhbGUvc3dzY2FsZS5oPgorICAgICAgICAgICAgIF1dLFtbCistICAgICAg ICAgICAgICAgIGF2Y29kZWNfcmVnaXN0ZXJfYWxsKCk7CisrICAgICAgICAgICAgICAgIGF2Zm9y bWF0X25ldHdvcmtfaW5pdCgpOworICAgICAgICAgICAgICAgICBzd3NjYWxlX3ZlcnNpb24oKTsK KyAgICAgICAgICAgICBdXSldLCBbZXZhbCAkMT15ZXNdLCBbZXZhbCAkMT1ub10pCisgICAgICAg ICBdKQorCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXMyL3RlbXBsYXRlIGIvc3JjcGtncy9mZm1z Mi90ZW1wbGF0ZQppbmRleCA2OGU4YTBjMTRiY2UuLjJhY2ZhZGFjNDRiMyAxMDA2NDQKLS0tIGEv c3JjcGtncy9mZm1zMi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZmbXMyL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZmZtczInCiBwa2duYW1lPWZmbXMyCiB2 ZXJzaW9uPTIuNDAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1jb25m aWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1zaGFyZWQgLS1kaXNhYmxlLXN0YXRpYyIK IGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBhdXRvY29uZiBhdXRvbWFrZSBsaWJ0b29sIgoK RnJvbSA0ZjE4NjhiMzAwYTc5YTNhYjUxMDY4MjYyY2FiZGM0YzU3ZTI1ZjkyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzUvMTEzXSBmcmVl cmRwOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIC4uLi9mcmVlcmRwL3BhdGNoZXMvZmZt cGVnNl9hYTJjYjlhYS5wYXRjaCAgICB8IDQyICsrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3Mv ZnJlZXJkcC90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiAyIGZpbGVzIGNo YW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9mcmVlcmRwL3BhdGNoZXMvZmZtcGVnNl9hYTJjYjlhYS5wYXRjaCBiL3Ny Y3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEyY2I5YWEucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hNDMyNGRhM2E4ODIKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoCkBAIC0w LDAgKzEsNDIgQEAKK0Zyb20gYWEyY2I5YWE1ZmY1NTYyNDMzNTk4YmExNjhhNDY2ZTA3NTJiY2Ew ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGFrYWxsYWJldGggPGFrYWxsYWJldGhA cG9zdGVvLm5ldD4KK0RhdGU6IFR1ZSwgMTQgRmViIDIwMjMgMDc6NDg6NTQgKzAxMDAKK1N1Ympl Y3Q6IFtQQVRDSF0gRml4ZWQgIzg2ODY6IFVwZGF0ZSBoMjY0IHRvIHVzZSBuZXcgRkZNUEVHIEFQ SQorCistLS0KKyBjaGFubmVscy90c21mL2NsaWVudC9mZm1wZWcvdHNtZl9mZm1wZWcuYyB8IDIg KysKKyBsaWJmcmVlcmRwL2NvZGVjL2gyNjRfZmZtcGVnLmMgICAgICAgICAgICB8IDIgKysKKyAy IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMv dHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZtcGVnLmMgYi9jaGFubmVscy90c21mL2NsaWVudC9m Zm1wZWcvdHNtZl9mZm1wZWcuYworaW5kZXggMzM5NDYyZDg2NWYuLmJlZWE4MGI3YTFlIDEwMDY0 NAorLS0tIGEvY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZtcGVnLmMKKysrKyBi L2NoYW5uZWxzL3RzbWYvY2xpZW50L2ZmbXBlZy90c21mX2ZmbXBlZy5jCitAQCAtMjM5LDggKzIz OSwxMCBAQCBzdGF0aWMgQk9PTCB0c21mX2ZmbXBlZ19pbml0X3N0cmVhbShJVFNNRkRlY29kZXIq IGRlY29kZXIsIGNvbnN0IFRTX0FNX01FRElBX1RZUAorIAkJfQorIAl9CisgCisrI2lmIExJQkFW Q09ERUNfVkVSU0lPTl9JTlQgPCBBVl9WRVJTSU9OX0lOVCg1OSwgMTgsIDEwMCkKKyAJaWYgKG1k ZWNvZGVyLT5jb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQX1RSVU5DQVRFRCkKKyAJ CW1kZWNvZGVyLT5jb2RlY19jb250ZXh0LT5mbGFncyB8PSBBVl9DT0RFQ19GTEFHX1RSVU5DQVRF RDsKKysjZW5kaWYKKyAKKyAJcmV0dXJuIFRSVUU7CisgfQorZGlmZiAtLWdpdCBhL2xpYmZyZWVy ZHAvY29kZWMvaDI2NF9mZm1wZWcuYyBiL2xpYmZyZWVyZHAvY29kZWMvaDI2NF9mZm1wZWcuYwor aW5kZXggOGEyM2RiMjQ3M2MuLjg5NmEzMzMwMTliIDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9j b2RlYy9oMjY0X2ZmbXBlZy5jCisrKysgYi9saWJmcmVlcmRwL2NvZGVjL2gyNjRfZmZtcGVnLmMK K0BAIC02MTUsMTAgKzYxNSwxMiBAQCBzdGF0aWMgQk9PTCBsaWJhdmNvZGVjX2luaXQoSDI2NF9D T05URVhUKiBoMjY0KQorIAkJCWdvdG8gRVhDRVBUSU9OOworIAkJfQorIAorKyNpZiBMSUJBVkNP REVDX1ZFUlNJT05fSU5UIDwgQVZfVkVSU0lPTl9JTlQoNTksIDE4LCAxMDApCisgCQlpZiAoc3lz LT5jb2RlY0RlY29kZXItPmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9UUlVOQ0FURUQpCisg CQl7CisgCQkJc3lzLT5jb2RlY0RlY29kZXJDb250ZXh0LT5mbGFncyB8PSBBVl9DT0RFQ19GTEFH X1RSVU5DQVRFRDsKKyAJCX0KKysjZW5kaWYKKyAKKyAjaWZkZWYgV0lUSF9WQUFQSQorIApkaWZm IC0tZ2l0IGEvc3JjcGtncy9mcmVlcmRwL3RlbXBsYXRlIGIvc3JjcGtncy9mcmVlcmRwL3RlbXBs YXRlCmluZGV4IDI1ZThhYTk2NzdmMC4uNGQ1MWM4MTg5OTAyIDEwMDY0NAotLS0gYS9zcmNwa2dz L2ZyZWVyZHAvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mcmVlcmRwL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZnJlZXJkcCcKIHBrZ25hbWU9ZnJlZXJkcAog dmVyc2lvbj0yLjEwLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtl CiBjb25maWd1cmVfYXJncz0iLURXSVRIX0FMU0E9T04gLURXSVRIX0NVUFM9T0ZGIC1EV0lUSF9G Rk1QRUc9T04KICAtRFdJVEhfR1NUUkVBTUVSXzBfMTA9T0ZGIC1EV0lUSF9HU1RSRUFNRVJfMV8w PU9GRiAtRFdJVEhfSlBFRz1PTgoKRnJvbSAyZGQ2N2U2NzY4Mjc4MmIxY2ZhMGYzMzkzNzE1NjU1 YzdkZTI5MmI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwMzYvMTEzXSBnZXJiZXJhOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0 ZSBiL3NyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZQppbmRleCBhZTE0ZjM1Yzc2N2MuLjJkYzBhYzBj ZTAzYiAxMDA2NDQKLS0tIGEvc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv Z2VyYmVyYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dl cmJlcmEnCiBwa2duYW1lPWdlcmJlcmEKIHZlcnNpb249MS4xMi4xCi1yZXZpc2lvbj0xCityZXZp c2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9TWVNURU1E PTAgLURXSVRIX0FWQ09ERUM9MSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20g ODgxOGQwNjdmZWNjN2U2OWFlN2RjMzU3N2M1ZDFmMmVmNmE3YTg5NiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM3LzExM10gZ29sZGVuZGlj dDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hl cy9mZm1wZWc0LnBhdGNoIHwgIDIxIC0tCiBzcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1w ZWc1LnBhdGNoIHwgMjMyICsrKysrKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2dvbGRlbmRp Y3QvdGVtcGxhdGUgICAgICAgICAgICAgIHwgICAyICstCiAzIGZpbGVzIGNoYW5nZWQsIDIzMyBp bnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9nb2xkZW5kaWN0L3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzQucGF0Y2ggYi9zcmNwa2dzL2dvbGRlbmRpY3Qv cGF0Y2hlcy9mZm1wZWc0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDQ1 ZmEyN2Y1NGIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9m Zm1wZWc0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotLS0tIGEvZmZtcGVn YXVkaW8uY2Mub3JpZyAyMDE4LTA1LTA5IDIyOjE2OjEzLjQ4MDY1OTk1OCArMDIwMAotKysrIGIv ZmZtcGVnYXVkaW8uY2MgICAgICAyMDE4LTA1LTA5IDIyOjE2OjUwLjc0ODMyMjc5MCArMDIwMAot QEAgLTE0Myw3ICsxNDMsNyBAQAotICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0KLS0gIHVuc2ln bmVkIGNoYXIgKiBhdmlvQnVmZmVyID0gKCB1bnNpZ25lZCBjaGFyICogKWF2X21hbGxvYygga0J1 ZmZlclNpemUgKyBGRl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFICk7Ci0rICB1bnNpZ25lZCBj aGFyICogYXZpb0J1ZmZlciA9ICggdW5zaWduZWQgY2hhciAqIClhdl9tYWxsb2MoIGtCdWZmZXJT aXplICsgQVZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSApOwotICAgaWYgKCAhYXZpb0J1ZmZl ciApCi0gICB7Ci0gICAgIGVycm9yU3RyaW5nID0gUU9iamVjdDo6dHIoICJhdl9tYWxsb2MoKSBm YWlsZWQuIiApOwotQEAgLTM4MCw3ICszODAsNyBAQAotICAgfQotCi0gICBpZiAoICFRdDR4NTo6 QXRvbWljSW50Ojpsb2FkQWNxdWlyZSggaXNDYW5jZWxsZWRfICkgJiYKLS0gICAgICAgY29kZWND b250ZXh0Xy0+Y29kZWMtPmNhcGFiaWxpdGllcyAmIENPREVDX0NBUF9ERUxBWSApCi0rICAgICAg IGNvZGVjQ29udGV4dF8tPmNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19DQVBfREVMQVkg KQotICAgewotICAgICBhdl9pbml0X3BhY2tldCggJnBhY2tldCApOwotICAgICBpbnQgZ290RnJh bWUgPSAwOwotCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc1 LnBhdGNoIGIvc3JjcGtncy9nb2xkZW5kaWN0L3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdjZmM5OGFkYTM2OAotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAs MCArMSwyMzIgQEAKK0Zyb20gMDNiYmUwMWI3OWExZjA3YTY3ODBjYjYwZjIzYTA4NzEwNGM1ZDc3 YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFiczYyIDxvdHRvbWFubkB5YW5kZXgu cnU+CitEYXRlOiBGcmksIDMwIE1hciAyMDE4IDIyOjUzOjI0ICswMzAwCitTdWJqZWN0OiBbUEFU Q0hdIEZpeCB3YXJuaW5ncyB3aGlsZSBjb21waWxlIHdpdGggRkZNcGVnIDMuNC4yIChpc3N1ZSAj OTc4KQorCistLS0KKyBmZm1wZWdhdWRpby5jYyB8IDY4ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYyIGluc2VydGlv bnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9mZm1wZWdhdWRpby5jYyBiL2Zm bXBlZ2F1ZGlvLmNjCitpbmRleCBlZDExNzJiZGQuLjU2ZThmNzg4ZSAxMDA2NDQKKy0tLSBhL2Zm bXBlZ2F1ZGlvLmNjCisrKysgYi9mZm1wZWdhdWRpby5jYworQEAgLTkxLDYgKzkxLDcgQEAgc3Ry dWN0IERlY29kZXJDb250ZXh0CisgICBRQnl0ZUFycmF5IGF1ZGlvRGF0YV87CisgICBRRGF0YVN0 cmVhbSBhdWRpb0RhdGFTdHJlYW1fOworICAgQVZGb3JtYXRDb250ZXh0ICogZm9ybWF0Q29udGV4 dF87CisrICBBVkNvZGVjICogY29kZWNfOworICAgQVZDb2RlY0NvbnRleHQgKiBjb2RlY0NvbnRl eHRfOworICAgQVZJT0NvbnRleHQgKiBhdmlvQ29udGV4dF87CisgICBBVlN0cmVhbSAqIGF1ZGlv U3RyZWFtXzsKK0BAIC0xMTQsNiArMTE1LDcgQEAgRGVjb2RlckNvbnRleHQ6OkRlY29kZXJDb250 ZXh0KCBRQnl0ZUFycmF5IGNvbnN0ICYgYXVkaW9EYXRhLCBRQXRvbWljSW50ICYgaXNDYW4KKyAg IGF1ZGlvRGF0YV8oIGF1ZGlvRGF0YSApLAorICAgYXVkaW9EYXRhU3RyZWFtXyggYXVkaW9EYXRh XyApLAorICAgZm9ybWF0Q29udGV4dF8oIE5VTEwgKSwKKysgIGNvZGVjXyggTlVMTCApLAorICAg Y29kZWNDb250ZXh0XyggTlVMTCApLAorICAgYXZpb0NvbnRleHRfKCBOVUxMICksCisgICBhdWRp b1N0cmVhbV8oIE5VTEwgKSwKK0BAIC0xNDMsNyArMTQ1LDExIEBAIGJvb2wgRGVjb2RlckNvbnRl eHQ6Om9wZW5Db2RlYyggUVN0cmluZyAmIGVycm9yU3RyaW5nICkKKyAgICAgcmV0dXJuIGZhbHNl OworICAgfQorCisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU2IHx8ICggTElCQVZD T0RFQ19WRVJTSU9OX01BSk9SID09IDU2ICYmIExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiA8IDU2 ICkKKyAgIHVuc2lnbmVkIGNoYXIgKiBhdmlvQnVmZmVyID0gKCB1bnNpZ25lZCBjaGFyICogKWF2 X21hbGxvYygga0J1ZmZlclNpemUgKyBGRl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFICk7Cisr I2Vsc2UKKysgIHVuc2lnbmVkIGNoYXIgKiBhdmlvQnVmZmVyID0gKCB1bnNpZ25lZCBjaGFyICog KWF2X21hbGxvYygga0J1ZmZlclNpemUgKyBBVl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFICk7 CisrI2VuZGlmCisgICBpZiAoICFhdmlvQnVmZmVyICkKKyAgIHsKKyAgICAgZXJyb3JTdHJpbmcg PSBRT2JqZWN0Ojp0ciggImF2X21hbGxvYygpIGZhaWxlZC4iICk7CitAQCAtMTg2LDcgKzE5Miwx MSBAQCBib29sIERlY29kZXJDb250ZXh0OjpvcGVuQ29kZWMoIFFTdHJpbmcgJiBlcnJvclN0cmlu ZyApCisgICAvLyBGaW5kIGF1ZGlvIHN0cmVhbSwgdXNlIHRoZSBmaXJzdCBhdWRpbyBzdHJlYW0g aWYgYXZhaWxhYmxlCisgICBmb3IgKCB1bnNpZ25lZCBpID0gMDsgaSA8IGZvcm1hdENvbnRleHRf LT5uYl9zdHJlYW1zOyBpKysgKQorICAgeworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1Ig PCA1NyB8fCAoIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA9PSA1NyAmJiBMSUJBVkNPREVDX1ZF UlNJT05fTUlOT1IgPCAzMyApCisgICAgIGlmICggZm9ybWF0Q29udGV4dF8tPnN0cmVhbXNbaV0t PmNvZGVjLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTyApCisrI2Vsc2UKKysgICAg ICBpZiAoIGZvcm1hdENvbnRleHRfLT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9 PSBBVk1FRElBX1RZUEVfQVVESU8gKQorKyNlbmRpZgorICAgICB7CisgICAgICAgYXVkaW9TdHJl YW1fID0gZm9ybWF0Q29udGV4dF8tPnN0cmVhbXNbaV07CisgICAgICAgYnJlYWs7CitAQCAtMTk4 LDIyICsyMDgsMzggQEAgYm9vbCBEZWNvZGVyQ29udGV4dDo6b3BlbkNvZGVjKCBRU3RyaW5nICYg ZXJyb3JTdHJpbmcgKQorICAgICByZXR1cm4gZmFsc2U7CisgICB9CisKKysjaWYgTElCQVZDT0RF Q19WRVJTSU9OX01BSk9SIDwgNTcgfHwgKCBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPT0gNTcg JiYgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SIDwgMzMgKQorICAgY29kZWNDb250ZXh0XyA9IGF1 ZGlvU3RyZWFtXy0+Y29kZWM7CistICBBVkNvZGVjICogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVj b2RlciggY29kZWNDb250ZXh0Xy0+Y29kZWNfaWQgKTsKKy0gIGlmICggIWNvZGVjICkKKysgIGNv ZGVjXyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKCBjb2RlY0NvbnRleHRfLT5jb2RlY19pZCApOwor KyAgaWYgKCAhY29kZWNfICkKKyAgIHsKKyAgICAgZXJyb3JTdHJpbmcgPSBRT2JqZWN0Ojp0cigg IkNvZGVjIFtpZDogJTFdIG5vdCBmb3VuZC4iICkuYXJnKCBjb2RlY0NvbnRleHRfLT5jb2RlY19p ZCApOworICAgICByZXR1cm4gZmFsc2U7CisgICB9CisrI2Vsc2UKKysgIGNvZGVjXyA9IGF2Y29k ZWNfZmluZF9kZWNvZGVyKCBhdWRpb1N0cmVhbV8tPmNvZGVjcGFyLT5jb2RlY19pZCApOworKyAg aWYgKCAhY29kZWNfICkKKysgIHsKKysgICAgZXJyb3JTdHJpbmcgPSBRT2JqZWN0Ojp0ciggIkNv ZGVjIFtpZDogJTFdIG5vdCBmb3VuZC4iICkuYXJnKCBhdWRpb1N0cmVhbV8tPmNvZGVjcGFyLT5j b2RlY19pZCApOworKyAgICByZXR1cm4gZmFsc2U7CisrICB9CisrICBjb2RlY0NvbnRleHRfID0g YXZjb2RlY19hbGxvY19jb250ZXh0MyggY29kZWNfICk7CisrICBpZiAoICFjb2RlY0NvbnRleHRf ICkKKysgIHsKKysgICAgZXJyb3JTdHJpbmcgPSBRT2JqZWN0Ojp0ciggImF2Y29kZWNfYWxsb2Nf Y29udGV4dDMoKSBmYWlsZWQuIiApOworKyAgICByZXR1cm4gZmFsc2U7CisrICB9CisrICBhdmNv ZGVjX3BhcmFtZXRlcnNfdG9fY29udGV4dCggY29kZWNDb250ZXh0XywgYXVkaW9TdHJlYW1fLT5j b2RlY3BhciApOworKyNlbmRpZgorCistICByZXQgPSBhdmNvZGVjX29wZW4yKCBjb2RlY0NvbnRl eHRfLCBjb2RlYywgTlVMTCApOworKyAgcmV0ID0gYXZjb2RlY19vcGVuMiggY29kZWNDb250ZXh0 XywgY29kZWNfLCBOVUxMICk7CisgICBpZiAoIHJldCA8IDAgKQorICAgeworICAgICBlcnJvclN0 cmluZyA9IFFPYmplY3Q6OnRyKCAiYXZjb2RlY19vcGVuMigpIGZhaWxlZDogJTEuIiApLmFyZygg YXZFcnJvclN0cmluZyggcmV0ICkgKTsKKyAgICAgcmV0dXJuIGZhbHNlOworICAgfQorCistICBh dl9sb2coIE5VTEwsIEFWX0xPR19JTkZPLCAiQ29kZWMgb3BlbjogJXM6IGNoYW5uZWxzOiAlZCwg cmF0ZTogJWQsIGZvcm1hdDogJXNcbiIsIGNvZGVjLT5sb25nX25hbWUsCisrICBhdl9sb2coIE5V TEwsIEFWX0xPR19JTkZPLCAiQ29kZWMgb3BlbjogJXM6IGNoYW5uZWxzOiAlZCwgcmF0ZTogJWQs IGZvcm1hdDogJXNcbiIsIGNvZGVjXy0+bG9uZ19uYW1lLAorICAgICAgICAgICBjb2RlY0NvbnRl eHRfLT5jaGFubmVscywgY29kZWNDb250ZXh0Xy0+c2FtcGxlX3JhdGUsIGF2X2dldF9zYW1wbGVf Zm10X25hbWUoIGNvZGVjQ29udGV4dF8tPnNhbXBsZV9mbXQgKSApOworICAgcmV0dXJuIHRydWU7 CisgfQorQEAgLTI1MiwxMCArMjc4LDEzIEBAIHZvaWQgRGVjb2RlckNvbnRleHQ6OmNsb3NlQ29k ZWMoKQorCisgICAvLyBDbG9zaW5nIGEgY29kZWMgY29udGV4dCB3aXRob3V0IHByaW9yIGF2Y29k ZWNfb3BlbjIoKSB3aWxsIHJlc3VsdCBpbgorICAgLy8gYSBjcmFzaCBpbiBmZm1wZWcKKy0gIGlm ICggYXVkaW9TdHJlYW1fICYmIGF1ZGlvU3RyZWFtXy0+Y29kZWMgJiYgYXVkaW9TdHJlYW1fLT5j b2RlYy0+Y29kZWMgKQorKyAgaWYgKCBhdWRpb1N0cmVhbV8gJiYgY29kZWNDb250ZXh0XyAmJiBj b2RlY18gKQorICAgeworICAgICBhdWRpb1N0cmVhbV8tPmRpc2NhcmQgPSBBVkRJU0NBUkRfQUxM OworLSAgICBhdmNvZGVjX2Nsb3NlKCBhdWRpb1N0cmVhbV8tPmNvZGVjICk7CisrICAgIGF2Y29k ZWNfY2xvc2UoIGNvZGVjQ29udGV4dF8gKTsKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9S ID4gNTcgfHwgKCBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPT0gNTcgJiYgTElCQVZDT0RFQ19W RVJTSU9OX01JTk9SID49IDMzICkKKysgICAgYXZjb2RlY19mcmVlX2NvbnRleHQoICZjb2RlY0Nv bnRleHRfICk7CisrI2VuZGlmCisgICB9CisKKyAgIGF2Zm9ybWF0X2Nsb3NlX2lucHV0KCAmZm9y bWF0Q29udGV4dF8gKTsKK0BAIC0zNTYsNiArMzg1LDcgQEAgYm9vbCBEZWNvZGVyQ29udGV4dDo6 cGxheSggUVN0cmluZyAmIGVycm9yU3RyaW5nICkKKyAgICAgaWYgKCBwYWNrZXQuc3RyZWFtX2lu ZGV4ID09IGF1ZGlvU3RyZWFtXy0+aW5kZXggKQorICAgICB7CisgICAgICAgQVZQYWNrZXQgcGFj ayA9IHBhY2tldDsKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTcgfHwgKCBMSUJB VkNPREVDX1ZFUlNJT05fTUFKT1IgPT0gNTcgJiYgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SIDwg MzcgKQorICAgICAgIGludCBnb3RGcmFtZSA9IDA7CisgICAgICAgZG8KKyAgICAgICB7CitAQCAt MzcwLDYgKzQwMCwxOSBAQCBib29sIERlY29kZXJDb250ZXh0OjpwbGF5KCBRU3RyaW5nICYgZXJy b3JTdHJpbmcgKQorICAgICAgICAgcGFjay5kYXRhICs9IGxlbjsKKyAgICAgICB9CisgICAgICAg d2hpbGUoIHBhY2suc2l6ZSA+IDAgKTsKKysjZWxzZQorKyAgICAgIGludCByZXQgPSBhdmNvZGVj X3NlbmRfcGFja2V0KCBjb2RlY0NvbnRleHRfLCAmcGFjayApOworKyAgICAgIC8qIHJlYWQgYWxs IHRoZSBvdXRwdXQgZnJhbWVzIChpbiBnZW5lcmFsIHRoZXJlIG1heSBiZSBhbnkgbnVtYmVyIG9m IHRoZW0pICovCisrICAgICAgd2hpbGUoIHJldCA+PSAwICkKKysgICAgICB7CisrICAgICAgICBy ZXQgPSBhdmNvZGVjX3JlY2VpdmVfZnJhbWUoIGNvZGVjQ29udGV4dF8sIGZyYW1lKTsKKysKKysg ICAgICAgIGlmICggUXQ0eDU6OkF0b21pY0ludDo6bG9hZEFjcXVpcmUoIGlzQ2FuY2VsbGVkXyAp IHx8IHJldCA8IDAgKQorKyAgICAgICAgICBicmVhazsKKysKKysgICAgICAgIHBsYXlGcmFtZSgg ZnJhbWUgKTsKKysgICAgICB9CisrI2VuZGlmCisgICAgIH0KKyAgICAgLy8gYXZfZnJlZV9wYWNr ZXQoKSBtdXN0IGJlIGNhbGxlZCBhZnRlciBlYWNoIGNhbGwgdG8gYXZfcmVhZF9mcmFtZSgpCisg I2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU3IHx8ICggTElCQVZDT0RFQ19WRVJTSU9O X01BSk9SID09IDU3ICYmIExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiA8IDcgKQorQEAgLTM3OSw2 ICs0MjIsNyBAQCBib29sIERlY29kZXJDb250ZXh0OjpwbGF5KCBRU3RyaW5nICYgZXJyb3JTdHJp bmcgKQorICNlbmRpZgorICAgfQorCisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU3 IHx8ICggTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SID09IDU3ICYmIExJQkFWQ09ERUNfVkVSU0lP Tl9NSU5PUiA8IDM3ICkKKyAgIGlmICggIVF0NHg1OjpBdG9taWNJbnQ6OmxvYWRBY3F1aXJlKCBp c0NhbmNlbGxlZF8gKSAmJgorICAgICAgICBjb2RlY0NvbnRleHRfLT5jb2RlYy0+Y2FwYWJpbGl0 aWVzICYgQ09ERUNfQ0FQX0RFTEFZICkKKyAgIHsKK0BAIC0zOTEsNiArNDM1LDE4IEBAIGJvb2wg RGVjb2RlckNvbnRleHQ6OnBsYXkoIFFTdHJpbmcgJiBlcnJvclN0cmluZyApCisgICAgICAgcGxh eUZyYW1lKCBmcmFtZSApOworICAgICB9CisgICB9CisrI2Vsc2UKKysgIC8qIGZsdXNoIHRoZSBk ZWNvZGVyICovCisrICBhdl9pbml0X3BhY2tldCggJnBhY2tldCApOworKyAgaW50IHJldCA9IGF2 Y29kZWNfc2VuZF9wYWNrZXQoY29kZWNDb250ZXh0XywgJnBhY2tldCApOworKyAgd2hpbGUoIHJl dCA+PSAwICkKKysgIHsKKysgICAgcmV0ID0gYXZjb2RlY19yZWNlaXZlX2ZyYW1lKGNvZGVjQ29u dGV4dF8sIGZyYW1lKTsKKysgICAgaWYgKCBRdDR4NTo6QXRvbWljSW50Ojpsb2FkQWNxdWlyZSgg aXNDYW5jZWxsZWRfICkgfHwgcmV0IDwgMCApCisrICAgICAgYnJlYWs7CisrICAgIHBsYXlGcmFt ZSggZnJhbWUgKTsKKysgIH0KKysjZW5kaWYKKworICNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFK T1IgPCA1NAorICAgYXZfZnJlZSggZnJhbWUgKTsKKzMyCitzcmNwa2dzL2dvbGRlbmRpY3QvcGF0 Y2hlcy9mZm1wZWc1LTIucGF0Y2gKK0NvbW1lbnQgb24gdGhpcyBmaWxlCitAQCAtMCwwICsxLDMy IEBACitGcm9tIDk2NmY0YThiNzhlNjMyNGI5MzBlNWE1MGYyYmI5MzBiZDg3ZTU2NWUgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBYnM2MiA8b3R0b21hbm5AeWFuZGV4LnJ1PgorRGF0 ZTogRnJpLCAyNyBTZXAgMjAxOSAxNzowMDo1MiArMDMwMAorU3ViamVjdDogW1BBVENIXSBGRm1w ZWcgcGxheWVyOiBGaXggc29tZSBjcmFzaGVzIG9uIGJyb2tlbiBmaWxlcworCistLS0KKyBmZm1w ZWdhdWRpby5jYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKwor ZGlmZiAtLWdpdCBhL2ZmbXBlZ2F1ZGlvLmNjIGIvZmZtcGVnYXVkaW8uY2MKK2luZGV4IDU2ZThm Nzg4ZS4uNDE1ZmM3OWNiIDEwMDY0NAorLS0tIGEvZmZtcGVnYXVkaW8uY2MKKysrKyBiL2ZmbXBl Z2F1ZGlvLmNjCitAQCAtNTEsNyArNTEsOSBAQCBBdWRpb1NlcnZpY2UgJiBBdWRpb1NlcnZpY2U6 Omluc3RhbmNlKCkKKworIEF1ZGlvU2VydmljZTo6QXVkaW9TZXJ2aWNlKCkKKyB7CisrI2lmIExJ QkFWRk9STUFUX1ZFUlNJT05fTUFKT1IgPCA1OCB8fCAoIExJQkFWRk9STUFUX1ZFUlNJT05fTUFK T1IgPT0gNTggJiYgTElCQVZGT1JNQVRfVkVSU0lPTl9NSU5PUiA8IDkgKQorICAgYXZfcmVnaXN0 ZXJfYWxsKCk7CisrI2VuZGlmCisgICBhb19pbml0aWFsaXplKCk7CisgfQorCitAQCAtNDM4LDYg KzQ0MCw4IEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6OnBsYXkoIFFTdHJpbmcgJiBlcnJvclN0cmlu ZyApCisgI2Vsc2UKKyAgIC8qIGZsdXNoIHRoZSBkZWNvZGVyICovCisgICBhdl9pbml0X3BhY2tl dCggJnBhY2tldCApOworKyAgcGFja2V0LmRhdGEgPSBOVUxMOworKyAgcGFja2V0LnNpemUgPSAw OworICAgaW50IHJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQoY29kZWNDb250ZXh0XywgJnBhY2tl dCApOworICAgd2hpbGUoIHJldCA+PSAwICkKKyAgIHsKKzI1CitzcmNwa2dzL2dvbGRlbmRpY3Qv cGF0Y2hlcy9mZm1wZWc1LTMucGF0Y2gKK0NvbW1lbnQgb24gdGhpcyBmaWxlCitAQCAtMCwwICsx LDI1IEBACitGcm9tIDhhY2IyODhjOWU5YmRiM2M2YmYyZTgwMzk1NGRkM2I2YWMyNzNjMDUgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaWFvIEp1bnh1YW4gPG1pa2VsanhAMTI2LmNv bT4KK0RhdGU6IFN1biwgMjAgRmViIDIwMjIgMTI6Mjg6MDUgKzA4MDAKK1N1YmplY3Q6IFtQQVRD SF0gYWRkIHN1cHBvcnQgZm9yIGZmbXBlZyA1LjAKKworLS0tCisgZmZtcGVnYXVkaW8uY2MgfCA0 ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9m Zm1wZWdhdWRpby5jYyBiL2ZmbXBlZ2F1ZGlvLmNjCitpbmRleCBkNTUwZjRhNzcuLjc5NDhkMjE4 NyAxMDA2NDQKKy0tLSBhL2ZmbXBlZ2F1ZGlvLmNjCisrKysgYi9mZm1wZWdhdWRpby5jYworQEAg LTk0LDcgKzk0LDExIEBAIHN0cnVjdCBEZWNvZGVyQ29udGV4dAorICAgUUJ5dGVBcnJheSBhdWRp b0RhdGFfOworICAgUURhdGFTdHJlYW0gYXVkaW9EYXRhU3RyZWFtXzsKKyAgIEFWRm9ybWF0Q29u dGV4dCAqIGZvcm1hdENvbnRleHRfOworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1 OQorICAgQVZDb2RlYyAqIGNvZGVjXzsKKysjZWxzZQorKyAgY29uc3QgQVZDb2RlYyAqIGNvZGVj XzsKKysjZW5kaWYKKyAgIEFWQ29kZWNDb250ZXh0ICogY29kZWNDb250ZXh0XzsKKyAgIEFWSU9D b250ZXh0ICogYXZpb0NvbnRleHRfOworICAgQVZTdHJlYW0gKiBhdWRpb1N0cmVhbV87CmRpZmYg LS1naXQgYS9zcmNwa2dzL2dvbGRlbmRpY3QvdGVtcGxhdGUgYi9zcmNwa2dzL2dvbGRlbmRpY3Qv dGVtcGxhdGUKaW5kZXggNDU0NGFlNzEwZWU2Li4yY2E0MTg1ZTUzOGEgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dvbGRlbmRpY3QvdGVtcGxh dGUKQEAgLTksNyArOSw3IEBAIG1ha2VkZXBlbmRzPSJ0aWZmLWRldmVsIHF0NS1kZXZlbCBsaWJ2 b3JiaXMtZGV2ZWwgemxpYi1kZXZlbAogIGxpYlh0c3QtZGV2ZWwgaHVuc3BlbGwtZGV2ZWwgcXQ1 LXRvb2xzLWRldmVsIHF0NS1kZWNsYXJhdGl2ZS1kZXZlbAogIHF0NS13ZWJraXQtZGV2ZWwgbHpv LWRldmVsIGJ6aXAyLWRldmVsIGxpYmFvLWRldmVsIHF0NS1zdmctZGV2ZWwKICBsaWJlYi1kZXZl bCBxdDUteDExZXh0cmFzLWRldmVsIGZmbXBlZy1kZXZlbCBsaWJsem1hLWRldmVsIgotc2hvcnRf ZGVzYz0iQSBmZWF0dXJlLXJpY2ggZGljdGlvbmFyeSBsb29rdXAgcHJvZ3JhbSIKK3Nob3J0X2Rl c2M9IkZlYXR1cmUtcmljaCBkaWN0aW9uYXJ5IGxvb2t1cCBwcm9ncmFtIgogbWFpbnRhaW5lcj0i Sm9obiA8bWVAam9obm55bmF0b3IuZGV2PiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBo b21lcGFnZT0iaHR0cDovL2dvbGRlbmRpY3Qub3JnLyIKCkZyb20gNzMwNDY1YTVjYjZjOThjOTcy NjUzNDc4M2Y5N2QzNzkyMTQ1MTQwZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM4LzExM10gZ3N0LWxpYmF2OiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9nc3QtbGliYXYvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQppbmRleCA4 YzcyZmMzZTk3ZWUuLjA0YzM5YmZmMTQ4OSAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtbGliYXYv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtbGliYXYnCiBwa2duYW1lPWdzdC1saWJhdgogdmVy c2lvbj0xLjIyLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBo b3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgeWFzbSIKIG1ha2VkZXBlbmRzPSJvcmMtZGV2ZWwg Z3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwgZmZtcGVnLWRldmVsIgoKRnJvbSA4NDhiZmFjZjgyZjQ5 YjI0YTRlYjJhNjZlZDY1Zjc5ZjcxNjQzMjU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzkvMTEzXSBnc3QtcGx1Z2lucy1iYWQxOiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZSBiL3NyY3BrZ3Mv Z3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQppbmRleCA3N2JmNzk5ODFjMjAuLjVjMTU4NzI0YTZj NyAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ2dzdC1wbHVnaW5zLWJhZDEnCiBwa2duYW1lPWdzdC1wbHVnaW5zLWJhZDEK IHZlcnNpb249MS4yMi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9oZWxwZXI9Imdp ciIKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iLURwYWNrYWdlLW9yaWdpbj1o dHRwczovL3ZvaWRsaW51eC5vcmcgLURkb2M9ZGlzYWJsZWQKCkZyb20gOTZkMDdkMmUzMjgxYjkz YzA1ZjYzNzg4MTlkMjg1ZGJjMWNjZGQ1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0 NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQwLzExM10gZ3N0LXJ0c3Atc2VydmVyOiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1y dHNwLXNlcnZlci90ZW1wbGF0ZQppbmRleCAyZjBjMGM0NWZmODIuLjk4MGZkNzJjZGQ0YyAxMDA2 NDQKLS0tIGEvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9n c3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdnc3QtcnRzcC1zZXJ2ZXInCiBwa2duYW1lPWdzdC1ydHNwLXNlcnZlcgogdmVyc2lvbj0x LjIyLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFr ZWRlcGVuZHM9InBrZy1jb25maWcgcHl0aG9uMyIKIG1ha2VkZXBlbmRzPSJnbGliLWRldmVsIGdz dC1wbHVnaW5zLWJhZDEtZGV2ZWwgZ29iamVjdC1pbnRyb3NwZWN0aW9uCgpGcm9tIDRmNjY0NDIy Y2RkY2U0ZDJkMDAzYjMwOWViNGViNjE3ZjFhMWUwYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDA0MS8xMTNdIGd1dmN2aWV3OiB1cGRhdGUg dG8gMi4wLjguCgotLS0KIHNyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRj aCB8IDEwICsrKysrKysrKysKIHNyY3BrZ3MvZ3V2Y3ZpZXcvdGVtcGxhdGUgICAgICAgICAgICAg ICAgICB8ICA1ICsrLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9ndXZjdmlldy9wYXRjaGVzL2Zp eC1pbmNsdWRlLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ndXZjdmlldy9wYXRjaGVzL2Zp eC1pbmNsdWRlLnBhdGNoIGIvc3JjcGtncy9ndXZjdmlldy9wYXRjaGVzL2ZpeC1pbmNsdWRlLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTAzYzJhZjNiNzhj Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9ndXZjdmlldy9wYXRjaGVzL2ZpeC1pbmNsdWRl LnBhdGNoCkBAIC0wLDAgKzEsMTAgQEAKKy0tLSBhL2d1dmN2aWV3L2d1dmN2aWV3LmMKKysrKyBi L2d1dmN2aWV3L2d1dmN2aWV3LmMKK0BAIC0yOCw2ICsyOCw3IEBACisgI2luY2x1ZGUgPHN5cy9z dGF0Lmg+CisgI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorICNpbmNsdWRlIDxlcnJuby5oPgor KyNpbmNsdWRlIDxsb2NhbGUuaD4KKyAKKyAjaW5jbHVkZSAiZ3ZpZXcuaCIKKyAjaW5jbHVkZSAi Z3ZpZXd2NGwyY29yZS5oIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ndXZjdmlldy90ZW1wbGF0ZSBi L3NyY3BrZ3MvZ3V2Y3ZpZXcvdGVtcGxhdGUKaW5kZXggMzQ1Y2Y2MDA2ZjI0Li44NmE3ZmQ2MTk2 MTIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3V2Y3ZpZXcvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9n dXZjdmlldy90ZW1wbGF0ZQpAQCAtMSw4ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2d1 dmN2aWV3JwogcGtnbmFtZT1ndXZjdmlldwotdmVyc2lvbj0yLjAuNwordmVyc2lvbj0yLjAuOAog cmV2aXNpb249MQotY3JlYXRlX3dya3NyYz15ZXMKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUK IGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtc3RhdGljIC0tZGlzYWJsZS1kZWJpYW4tbWVudSIK IGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBpbnRsdG9vbCBhdXRvY29uZiBhdXRvbWFrZSBs aWJ0b29sIGdsaWItZGV2ZWwiCkBAIC0xNCw3ICsxMyw3IEBAIG1haW50YWluZXI9Ik9ycGhhbmVk IDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgogaG9t ZXBhZ2U9Imh0dHA6Ly9ndXZjdmlldy5zb3VyY2Vmb3JnZS5uZXQvIgogZGlzdGZpbGVzPSIke1NP VVJDRUZPUkdFX1NJVEV9LyR7cGtnbmFtZX0vJHtwa2duYW1lfS1zcmMtJHt2ZXJzaW9ufS50YXIu YnoyIgotY2hlY2tzdW09ZjQ3ZDUxZmJkMDZlNDRlZWFhMWE4MmY0YTE1M2M5Mjc1MjdjOTBkOTQ1 MTQxOTdhNzBiMjk1NjAyOGNjOGFkNAorY2hlY2tzdW09YTIxZjRlNDQ4Mjg2NjY2Y2YyN2JhZmVm NTI5MGNjOTUzYTBhMTc5NmI3NTJlNWJiZTUyMTI2NmRjMTIzMGM4MQogCiBwb3N0X3BhdGNoKCkg ewogCXNlZCAnMzFhI2luY2x1ZGUgPGxvY2FsZS5oPicgLWkgIGd1dmN2aWV3L2d1dmN2aWV3LmMK CkZyb20gMTBkZDJlZTI2MGMwMjY1NjY3ODUwOWJiMjVlZWI1ODU0MWIzMjFjZCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQyLzExM10gaGFu ZGJyYWtlOiB1cGRhdGUgdG8gMS42LjEKCi0tLQogLi4uL3BhdGNoZXMvZml4LW1pc3NpbmcteDI2 NS1saW5rLWZsYWcucGF0Y2ggICAgfCAxMSArKysrKystLS0tLQogLi4uL2hhbmRicmFrZS9wYXRj aGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNoICAgfCAxNSArKysrKysrKysrKysrKysKIHNyY3Br Z3MvaGFuZGJyYWtlL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgIHwgMTcgKysrKysrKysr Ky0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12 cGwtaW5jbHVkZS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMv Zml4LW1pc3NpbmcteDI2NS1saW5rLWZsYWcucGF0Y2ggYi9zcmNwa2dzL2hhbmRicmFrZS9wYXRj aGVzL2ZpeC1taXNzaW5nLXgyNjUtbGluay1mbGFnLnBhdGNoCmluZGV4IDI2ZGIwMzg2N2EwYy4u ZDZiYjJlZGE2MjdhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2ZpeC1t aXNzaW5nLXgyNjUtbGluay1mbGFnLnBhdGNoCisrKyBiL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNo ZXMvZml4LW1pc3NpbmcteDI2NS1saW5rLWZsYWcucGF0Y2gKQEAgLTEsMTQgKzEsMTUgQEAKIC0t LSBhL2d0ay9jb25maWd1cmUuYWMKICsrKyBiL2d0ay9jb25maWd1cmUuYWMKIEBAIC0yMDMsNyAr MjAzLDcgQEAKLSAKKwogIEFNX0NPTkRJVElPTkFMKFtNSU5HV10sIFt0ZXN0ICJ4JG1pbmd3X2Zs YWciID0gInh5ZXMiXSkKLSAKLS1IQl9MSUJTPSIkSEJfTElCUyAtbGhhbmRicmFrZSAtbGF2Zm9y bWF0IC1sYXZmaWx0ZXIgLWxhdmNvZGVjIC1sYXZ1dGlsIC1sZGF2MWQgLWxzd3Jlc2FtcGxlIC1s cG9zdHByb2MgLWxkdmRuYXYgLWxkdmRyZWFkIC1sbXAzbGFtZSAtbHZvcmJpcyAtbHZvcmJpc2Vu YyAtbG9nZyAtbHN3c2NhbGUgLWx0aGVvcmFlbmMgLWx0aGVvcmFkZWMgLWx2cHggLWx6IC1sYnoy IC1sYmx1cmF5IC1sYXNzIC1sZm9udGNvbmZpZyAtbGZyZWV0eXBlIC1seG1sMiAtbGphbnNzb24g LWxvcHVzIC1sc3BlZXggLWx0dXJib2pwZWcgLWxsem1hIC1semltZyIKLStIQl9MSUJTPSIkSEJf TElCUyAtbGhhbmRicmFrZSAtbGF2Zm9ybWF0IC1sYXZmaWx0ZXIgLWxhdmNvZGVjIC1sYXZ1dGls IC1sZGF2MWQgLWxzd3Jlc2FtcGxlIC1scG9zdHByb2MgLWxkdmRuYXYgLWxkdmRyZWFkIC1sbXAz bGFtZSAtbHZvcmJpcyAtbHZvcmJpc2VuYyAtbG9nZyAtbHN3c2NhbGUgLWx0aGVvcmFlbmMgLWx0 aGVvcmFkZWMgLWx2cHggLWx6IC1sYnoyIC1sYmx1cmF5IC1sYXNzIC1sZm9udGNvbmZpZyAtbGZy ZWV0eXBlIC1seG1sMiAtbGphbnNzb24gLWxvcHVzIC1sc3BlZXggLWx0dXJib2pwZWcgLWxsem1h IC1semltZyAtbGRsIgorCistSEJfTElCUz0iJEhCX0xJQlMgLWxoYW5kYnJha2UgLWxhdmZvcm1h dCAtbGF2ZmlsdGVyIC1sYXZjb2RlYyAtbGF2dXRpbCAtbGRhdjFkIC1sc3dyZXNhbXBsZSAtbHBv c3Rwcm9jIC1sZHZkbmF2IC1sZHZkcmVhZCAtbG1wM2xhbWUgLWx2b3JiaXMgLWx2b3JiaXNlbmMg LWxvZ2cgLWxzd3NjYWxlIC1sdGhlb3JhZW5jIC1sdGhlb3JhZGVjIC1sdnB4IC1seiAtbGJ6MiAt bGJsdXJheSAtbGFzcyAtbGZvbnRjb25maWcgLWxmcmVldHlwZSAtbHhtbDIgLWxqYW5zc29uIC1s b3B1cyAtbHNwZWV4IC1sdHVyYm9qcGVnIC1sbHptYSAtbHppbWcgLWxTdnRBdjFFbmMiCisrSEJf TElCUz0iJEhCX0xJQlMgLWxoYW5kYnJha2UgLWxhdmZvcm1hdCAtbGF2ZmlsdGVyIC1sYXZjb2Rl YyAtbGF2dXRpbCAtbGRhdjFkIC1sc3dyZXNhbXBsZSAtbHBvc3Rwcm9jIC1sZHZkbmF2IC1sZHZk cmVhZCAtbG1wM2xhbWUgLWx2b3JiaXMgLWx2b3JiaXNlbmMgLWxvZ2cgLWxzd3NjYWxlIC1sdGhl b3JhZW5jIC1sdGhlb3JhZGVjIC1sdnB4IC1seiAtbGJ6MiAtbGJsdXJheSAtbGFzcyAtbGZvbnRj b25maWcgLWxmcmVldHlwZSAtbHhtbDIgLWxqYW5zc29uIC1sb3B1cyAtbHNwZWV4IC1sdHVyYm9q cGVnIC1sbHptYSAtbHppbWcgLWxTdnRBdjFFbmMgLWxkbCIKICBIQl9DUFBGTEFHUz0iJEhCX0NQ UEZMQUdTICRIQklOQyIKLSAKKwogIFBLR19DSEVDS19NT0RVTEVTKFt4MjY0XSwgW3gyNjRdLCBz eXNfeDI2ND15ZXMsIHN5c194MjY0PW5vKQorCiAtLS0gYS90ZXN0L21vZHVsZS5kZWZzCiArKysg Yi90ZXN0L21vZHVsZS5kZWZzCiBAQCAtNjksNiArNjksOSBAQApkaWZmIC0tZ2l0IGEvc3JjcGtn cy9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12cGwtaW5jbHVkZS5wYXRjaCBiL3NyY3BrZ3MvaGFu ZGJyYWtlL3BhdGNoZXMvbGliaGItdnBsLWluY2x1ZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yOThmOWY0YWIyOGYKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNoCkBAIC0wLDAg KzEsMTUgQEAKKy0tLSBhL2xpYmhiL21vZHVsZS5kZWZzCTIwMjMtMDEtMjIgMTE6MzY6NDkuMDAw MDAwMDAwIC0wNTAwCisrKysgYi9saWJoYi9tb2R1bGUuZGVmcwkyMDIzLTA0LTAzIDIyOjM3OjUy LjM5NTQ2NzAxMCAtMDQwMAorQEAgLTQ2LDExICs0Niw3IEBACisgTElCSEIuR0NDLkkgKz0gJChM SUJIQi5idWlsZC8pICQoQ09OVFJJQi5idWlsZC8paW5jbHVkZQorIAorIGlmZXEgKDEsJChGRUFU VVJFLnFzdikpCistICAgIGlmZXEgKCQoSE9TVC5zeXN0ZW0pLGZyZWVic2QpKQorLSAgICAgICAg TElCSEIuR0NDLkkgKz0gJChMT0NBTEJBU0UpL2luY2x1ZGUvdnBsCistICAgIGVsc2UKKy0gICAg ICAgIExJQkhCLkdDQy5JICs9ICQoQ09OVFJJQi5idWlsZC8paW5jbHVkZS92cGwKKy0gICAgZW5k aWYKKysgICAgTElCSEIuR0NDLkkgKz0gL3Vzci9pbmNsdWRlL3ZwbAorIGVuZGlmCisgCisgaWZu ZXEgKCwkKGZpbHRlciAkKEhPU1Quc3lzdGVtKSxmcmVlYnNkIG5ldGJzZCBvcGVuYnNkKSkKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlIGIvc3JjcGtncy9oYW5kYnJha2Uv dGVtcGxhdGUKaW5kZXggY2E1ZTQ1NzFlNDljLi5jMzJjYjFiZmEzMWYgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRl CkBAIC0xLDEwICsxLDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdoYW5kYnJha2UnCiBwa2du YW1lPWhhbmRicmFrZQotdmVyc2lvbj0xLjUuMQordmVyc2lvbj0xLjYuMQogcmV2aXNpb249MQog YnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZm9yY2UgLS1kaXNh YmxlLWd0ay11cGRhdGUtY2hlY2tzIC0tZGlzYWJsZS1kZi1mZXRjaCAtLWhhcmRlbgotICQodm9w dF9lbmFibGUgZmRrX2FhYyBmZGstYWFjKSAkKHZvcHRfZW5hYmxlIG52ZW5jKSIKKyAkKHZvcHRf ZW5hYmxlIGZka19hYWMgZmRrLWFhYykgJCh2b3B0X2VuYWJsZSBudmVuYykgJCh2b3B0X2VuYWJs ZSBxc3YpIgogbWFrZV9idWlsZF9hcmdzPSItQyAke1hCUFNfVFJJUExFVH0iCiBtYWtlX2luc3Rh bGxfYXJncz0iLUMgJHtYQlBTX1RSSVBMRVR9IgogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBj bWFrZSBnZXR0ZXh0LWRldmVsIGdsaWItZGV2ZWwgaW50bHRvb2wgbGlidG9vbCBtNCBtZXNvbiBu YXNtIHBrZy1jb25maWcgcHl0aG9uMyIKQEAgLTEyLDggKzEyLDExIEBAIG1ha2VkZXBlbmRzPSJi emlwMi1kZXZlbCBmZm1wZWctZGV2ZWwgZ3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwgZ3RrKzMtZGV2 ZWwKICBqYW5zc29uLWRldmVsIGxhbWUtZGV2ZWwgbGliYXNzLWRldmVsIGxpYmJsdXJheS1kZXZl bCBsaWJkYXYxZC1kZXZlbAogIGxpYmR2ZG5hdi1kZXZlbCBsaWJkdmRyZWFkLWRldmVsIGxpYmd1 ZGV2LWRldmVsIGxpYm51bWEtZGV2ZWwKICBsaWJzYW1wbGVyYXRlLWRldmVsIGxpYnRoZW9yYS1k ZXZlbCBsaWJ2b3JiaXMtZGV2ZWwgbGlidnB4LWRldmVsIGxpYnhtbDItZGV2ZWwKLSBvcHVzLWRl dmVsIHNwZWV4LWRldmVsIHgyNjQtZGV2ZWwgeDI2NS1kZXZlbCB6aW1nLWRldmVsCisgb3B1cy1k ZXZlbCBzcGVleC1kZXZlbCB4MjY0LWRldmVsIHgyNjUtZGV2ZWwgemltZy1kZXZlbCBsaWJzdnQt YXYxLWRldmVsCiAgJCh2b3B0X2lmIGZka19hYWMgZmRrLWFhYy1kZXZlbCkKKyAkKHZvcHRfaWYg cXN2IGxpYnZhLWRldmVsKQorICQodm9wdF9pZiBxc3YgbGliZHJtLWRldmVsKQorICQodm9wdF9p ZiBxc3Ygb25ldnBsLWRldmVsKQogICQodm9wdF9pZiBudmVuYyBudi1jb2RlYy1oZWFkZXJzKSIK IGRlcGVuZHM9ImRlc2t0b3AtZmlsZS11dGlscyBnc3QtcGx1Z2lucy1nb29kMSBoaWNvbG9yLWlj b24tdGhlbWUiCiBzaG9ydF9kZXNjPSJNdWx0aXRocmVhZGVkIHZpZGVvIHRyYW5zY29kZXIiCkBA IC0yMSwxNSArMjQsMTUgQEAgbWFpbnRhaW5lcj0iRW5ubyBCb2xhbmQgPGdvdHRveEB2b2lkbGlu dXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb25seSIKIGhvbWVwYWdlPSJodHRwczovL2hhbmRi cmFrZS5mci8iCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9IYW5kQnJha2UvSGFuZEJy YWtlL3JlbGVhc2VzL2Rvd25sb2FkLyR7dmVyc2lvbn0vSGFuZEJyYWtlLSR7dmVyc2lvbn0tc291 cmNlLnRhci5iejIiCi1jaGVja3N1bT0zOTk5ZmUwNmQ1MzA5YzgxOTc5OWE3M2E5NjhhOGVjMzg0 MGU3ODQwYzJiNjRhZjhmNWNkYjdmZDhjOTQzMGYwCitjaGVja3N1bT05NGNjZmUwM2RiOTE3YTkx NjUwMDAwYzUxMGY3ZmQ1M2Y4NDRkYTE5ZjE5YWQ0YjRiZTFiOGY2YmMzMWE4ZDRjCiBub2Nyb3Nz PXllcwogCi1idWlsZF9vcHRpb25zPSJmZGtfYWFjIG52ZW5jIgorYnVpbGRfb3B0aW9ucz0iZmRr X2FhYyBudmVuYyBxc3YiCiAKIGNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgogCXg4Nl82 NCp8aTY4NiopCiAJCUNGTEFHUz0iLW1zc2UiCi0JCWJ1aWxkX29wdGlvbnNfZGVmYXVsdD0ibnZl bmMiCisJCWJ1aWxkX29wdGlvbnNfZGVmYXVsdD0ibnZlbmMgcXN2IgogCQk7OwogZXNhYwogCkBA IC0zNyw3ICs0MCw3IEBAIHByZV9jb25maWd1cmUoKSB7CiAJIyB1c2Ugc3lzdGVtIGxpYnJhcmll cywgZG9uJ3QgZG93bmxvYWQgdGhlbQogCXJtIC1yZiBjb250cmliLwogCWZvciBtb2R1bGUgaW4g ZmRrLWFhYyBmZm1wZWcgbGliYmx1cmF5IGxpYmRhdjFkIGxpYmR2ZG5hdiBsaWJkdmRyZWFkIG52 ZW5jIFwKLQkJeDI2NSB6aW1nOyBkbworCQl4MjY1IHppbWcgc3Z0LWF2MSBsaWJ2cGw7IGRvCiAJ ICAgIHZzZWQgLWkgIi9NT0RVTEVTICs9IGNvbnRyaWJcLyR7bW9kdWxlfS9kIiBtYWtlL2luY2x1 ZGUvbWFpbi5kZWZzCiAJZG9uZQogfQoKRnJvbSBiOGFjZjc0YzVlZDYxYWEyMWM3OWVhMjBiZmQw NjdmMzQ2MmE2MTgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwNDMvMTEzXSBoZWRnZXdhcnM6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMK Ci0tLQogc3JjcGtncy9oZWRnZXdhcnMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9o ZWRnZXdhcnMvdGVtcGxhdGUgYi9zcmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0ZQppbmRleCA0MTlm MjliOThiNDQuLjkyNmZlNGZlM2U2OCAxMDA2NDQKLS0tIGEvc3JjcGtncy9oZWRnZXdhcnMvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9oZWRnZXdhcnMvdGVtcGxhdGUKQEAgLTEsMTMgKzEsMTMgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2hlZGdld2FycycKIHBrZ25hbWU9aGVkZ2V3YXJzCiB2ZXJz aW9uPTEuMC4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29u ZmlndXJlX2FyZ3M9Ii1ETk9TRVJWRVI9MSAtRERBVEFfSU5TVEFMTF9ESVI9L3Vzci9zaGFyZS8k e3BrZ25hbWV9CiAgLURQSFlTRlNfU1lTVEVNPTEgLURNSU5JTUFMX0ZMQUdTPTEiCiBtYWtlX2Nt ZD1tYWtlCiBob3N0bWFrZWRlcGVuZHM9Imx1YTUxIHBrZy1jb25maWcgcXQ1LXFtYWtlIHF0NS1o b3N0LXRvb2xzIgotbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBsdWE1MS1kZXZlbCBwaHlzZnMt ZGV2ZWwgcXQ1LXRvb2xzLWRldmVsIFNETDJfaW1hZ2UtZGV2ZWwKK21ha2VkZXBlbmRzPSJmZm1w ZWc0LWRldmVsIGx1YTUxLWRldmVsIHBoeXNmcy1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwgU0RMMl9p bWFnZS1kZXZlbAogIFNETDJfbWl4ZXItZGV2ZWwgU0RMMl9uZXQtZGV2ZWwgU0RMMl90dGYtZGV2 ZWwiCiBkZXBlbmRzPSJsaWJmcmVlZ2x1dCIKIHNob3J0X2Rlc2M9IkZ1bm55IHR1cm4tYmFzZWQg YXJ0aWxsZXJ5IGdhbWUsIGZlYXR1cmluZyBmaWdodGluZyBIZWRnZWhvZ3MhIgoKRnJvbSA2ODYy MzhjNDI4MmZjMzNmOWRkNzViMDUzOTk5MWI5NWFmMTFhYTVhIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDQvMTEzXSBpZGpjOiByZXZidW1w IGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvaWRqYy90ZW1wbGF0ZSB8IDQgKystLQog MSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2lkamMvdGVtcGxhdGUgYi9zcmNwa2dzL2lkamMvdGVtcGxhdGUKaW5kZXgg ZGY2MDMxOGIzZGI5Li4zNmE3NWJhZjU5N2MgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaWRqYy90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2lkamMvdGVtcGxhdGUKQEAgLTEsMTEgKzEsMTEgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ2lkamMnCiBwa2duYW1lPWlkamMKIHZlcnNpb249MC45LjEKLXJldmlz aW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGhvc3RtYWtlZGVw ZW5kcz0icGtnLWNvbmZpZyBnaXQgcHl0aG9uMyBhdXRvbWFrZSBnZXR0ZXh0LWRldmVsIGxpYnRv b2wiCiBtYWtlZGVwZW5kcz0ibGlidm9yYmlzLWRldmVsIGxpYm9nZy1kZXZlbCBqYWNrLWRldmVs IGxpYnNhbXBsZXJhdGUtZGV2ZWwKLSBsaWJmbGFjLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwgbXBn MTIzLWRldmVsIGZmbXBlZy1kZXZlbCBzcGVleC1kZXZlbAorIGxpYmZsYWMtZGV2ZWwgbGlic25k ZmlsZS1kZXZlbCBtcGcxMjMtZGV2ZWwgZmZtcGVnNC1kZXZlbCBzcGVleC1kZXZlbAogIGdsaWIt ZGV2ZWwgcGl4bWFuLWRldmVsIGxhbWUtZGV2ZWwgcHl0aG9uMy1nb2JqZWN0LWRldmVsIGxpYnNo b3V0LWlkamMtZGV2ZWwKICBvcHVzLWRldmVsIHR3b2xhbWUtZGV2ZWwgcHl0aG9uMy1tdXRhZ2Vu IHB5dGhvbjMtZGV2ZWwiCiBkZXBlbmRzPSJweXRob24zLWdvYmplY3QgcHl0aG9uMy1tdXRhZ2Vu IGRlc2t0b3AtZmlsZS11dGlscyBzaGFyZWQtbWltZS1pbmZvIHB5dGhvbjMtZGJ1cyBqYWNrIgoK RnJvbSAxOGJjY2I3Zjk4YmUxZTcyNmQxNTVjZjMwN2RlMzQ2NjBlYTQ4OGIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDUvMTEzXSBrZmls ZW1ldGFkYXRhNTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2tmaWxlbWV0 YWRhdGE1L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9rZmlsZW1ldGFkYXRhNS90ZW1wbGF0 ZSBiL3NyY3BrZ3Mva2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUKaW5kZXggNGI5MWNmMTlmMjk4Li5h MzY3MWEzOGNlNTkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9rZmlsZW1ldGFkYXRhNS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ2tmaWxlbWV0YWRhdGE1JwogcGtnbmFtZT1rZmlsZW1ldGFkYXRh NQogdmVyc2lvbj01LjEwNy4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1j bWFrZQogaG9zdG1ha2VkZXBlbmRzPSJrY29yZWFkZG9ucyBleHRyYS1jbWFrZS1tb2R1bGVzIHBr Zy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtlCiAgZ2V0dGV4dCBrY29yZWFkZG9ucyBw eXRob24zIgoKRnJvbSAwMzQ4ZmRhNjEwODhhMDAyMDgxMzYxMTg4NjcyMmUxYjUxODJkMGRiIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDYv MTEzXSBraWQzOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mva2lkMy9wYXRj aGVzL2ZmbXBlZzUucGF0Y2ggfCAxNyArKysrKysrKysrKysrKysrKwogc3JjcGtncy9raWQzL3Rl bXBsYXRlICAgICAgICAgICAgICB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2tpZDMvcGF0 Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9raWQzL3BhdGNoZXMvZmZt cGVnNS5wYXRjaCBiL3NyY3BrZ3Mva2lkMy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xMzVmYzUwZTA3YzkKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsMTcg QEAKKyMgaHR0cHM6Ly9hdXIuYXJjaGxpbnV4Lm9yZy9jZ2l0L2F1ci5naXQvZGlmZi9mZm1wZWc1 LnBhdGNoP2g9a2lkMy1jbGkmaWQ9MTI0MTBhNzQ5MDY2MTJlN2VmYzBlYzhmYmNlNzM5YjRhMGZl ZjdlNworZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2Fjb3VzdGlkaW1wb3J0L2ZmbXBlZ2Zpbmdl cnByaW50ZGVjb2Rlci5jcHAgYi9zcmMvcGx1Z2lucy9hY291c3RpZGltcG9ydC9mZm1wZWdmaW5n ZXJwcmludGRlY29kZXIuY3BwCitpbmRleCBlMTU2ZDQyNC4uZTEyYjlhYmQgMTAwNjQ0CistLS0g YS9zcmMvcGx1Z2lucy9hY291c3RpZGltcG9ydC9mZm1wZWdmaW5nZXJwcmludGRlY29kZXIuY3Bw CisrKysgYi9zcmMvcGx1Z2lucy9hY291c3RpZGltcG9ydC9mZm1wZWdmaW5nZXJwcmludGRlY29k ZXIuY3BwCitAQCAtMjMyLDcgKzIzMiwxMSBAQCBwcml2YXRlOgorICAgZnJpZW5kIGNsYXNzIEZv cm1hdDsKKyAgIGZyaWVuZCBjbGFzcyBDb252ZXJ0ZXI7CisgICBBVkNvZGVjQ29udGV4dCogbV9w dHI7CisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9JTlQgPCBBVl9WRVJTSU9OX0lOVCg1OSwgMCwg MCkKKyAgIEFWQ29kZWMqIG1faW1wbDsKKysjZWxzZQorKyAgY29uc3QgQVZDb2RlYyogbV9pbXBs OworKyNlbmRpZgorICAgQVZGcmFtZSogbV9mcmFtZTsKKyAgIGJvb2wgbV9vcGVuZWQ7CisgfTsK ZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2lkMy90ZW1wbGF0ZSBiL3NyY3BrZ3Mva2lkMy90ZW1wbGF0 ZQppbmRleCA0NTYyMDZkOTBlMTYuLmYzMmY5ZGVjYjBlNyAxMDA2NDQKLS0tIGEvc3JjcGtncy9r aWQzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva2lkMy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2tpZDMnCiBwa2duYW1lPWtpZDMKIHZlcnNpb249My45LjEK LXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJn cz0iLURXSVRIX0FQUFM9J0NMSTskKHZvcHRfaWYgS0RFIEtERSBRdCknCiAgLURXSVRIX0RPQ0JP T0tESVI9L3Vzci9zaGFyZS94c2wvZG9jYm9vayAtRFdJVEhfRkxBQz0kKHZvcHRfaWYgZmxhYyBP TiBPRkYpCgpGcm9tIDk1ZTY3OTg5OWQwNmVkNDkwNjIyODZhMTQxMTg2MGEzZTJkNWI1Y2EgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0Ny8x MTNdIGtvZGk6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9rb2RpL3Rl bXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva29kaS90ZW1wbGF0ZSBiL3NyY3BrZ3Mva29k aS90ZW1wbGF0ZQppbmRleCA4MDU3OTY0ZDc4YTMuLjZjYzE4NzRiZTdiYSAxMDA2NDQKLS0tIGEv c3JjcGtncy9rb2RpL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva29kaS90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2tvZGknCiBwa2duYW1lPWtvZGkKIHZlcnNp b249MTkuNAotcmV2aXNpb249NgorcmV2aXNpb249NwogX2NvZGVuYW1lPSJNYXRyaXgiCiBidWls ZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9GRk1QRUc9L3VzciAtREVOQUJM RV9MREdPTEQ9T0ZGCkBAIC01NCw3ICs1NCw3IEBAIG1ha2VkZXBlbmRzPSIKICBsaWJtYWQtZGV2 ZWwgZm9udGNvbmZpZy1kZXZlbCBsaWJYaW5lcmFtYS1kZXZlbCBsaWJzYW1wbGVyYXRlLWRldmVs IGxpYm1tcy1kZXZlbAogIGVuY2EtZGV2ZWwgYm9vc3QtZGV2ZWwgbGliY3VybC1kZXZlbCBsaWJ2 YS1kZXZlbCBsaWJ2ZHBhdS1kZXZlbCBsaWJhc3MtZGV2ZWwKICBsaWJibHVldG9vdGgtZGV2ZWwg eWFqbC1kZXZlbCBsaWJwbGlzdC1kZXZlbCBsaWJydG1wLWRldmVsIHRpbnl4bWwtZGV2ZWwKLSB0 YWdsaWItZGV2ZWwgbGliY2FwLWRldmVsIGxhbWUtZGV2ZWwgbGliYmx1cmF5LWRldmVsIGxpYm5m cy1kZXZlbCBmZm1wZWctZGV2ZWwKKyB0YWdsaWItZGV2ZWwgbGliY2FwLWRldmVsIGxhbWUtZGV2 ZWwgbGliYmx1cmF5LWRldmVsIGxpYm5mcy1kZXZlbCBmZm1wZWc0LWRldmVsCiAgZ2lmbGliLWRl dmVsIGxpYnhzbHQtZGV2ZWwgZ251dGxzLWRldmVsIGxpYnNzaC1kZXZlbCBsaWJtaWNyb2h0dHBk LWRldmVsCiAgbGliY2VjLWRldmVsIGRjYWRlYy1kZXZlbCBmbGF0YnVmZmVycy1kZXZlbCBmbXQt ZGV2ZWwgbGNtczItZGV2ZWwKICBsaWJmc3RyY21wLWRldmVsIHJhcGlkanNvbiBsaWJjZGlvLXBh cmFub2lhIHNwZGxvZyBsaWJ3YXlsYW5kcHAtZGV2ZWwKCkZyb20gZjAyNzFmZjIzMzYzNTQ0Yjk5 YTZkOTMyZmU2NTc5MWRmMDg1MDI0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ4LzExM10ga3BpcGV3aXJlOiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9rcGlwZXdpcmUvdGVtcGxhdGUgYi9zcmNwa2dzL2twaXBld2lyZS90ZW1wbGF0ZQppbmRleCAw NWFkMDI1OTQ0ZGEuLjdhYTEyMGU2YmE5NCAxMDA2NDQKLS0tIGEvc3JjcGtncy9rcGlwZXdpcmUv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9rcGlwZXdpcmUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdrcGlwZXdpcmUnCiBwa2duYW1lPWtwaXBld2lyZQogdmVy c2lvbj01LjI3LjUKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBo b3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMgcGxhc21hLXdheWxhbmQtcHJvdG9j b2xzIGdldHRleHQKICBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMgcGtnLWNvbmZpZyB3YXlsYW5k LWRldmVsIGtjb3JlYWRkb25zCgpGcm9tIDY5YmY5YjViOTczZTQ4NjRhOTY4YjkxNjFmYWI2ODhk MGY1M2JhYTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDog W1BBVENIIDA0OS8xMTNdIGxpYmV4dHJhY3RvcjogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoK LS0tCiBzcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGli ZXh0cmFjdG9yL3RlbXBsYXRlIGIvc3JjcGtncy9saWJleHRyYWN0b3IvdGVtcGxhdGUKaW5kZXgg ZGRkNDc5MGY5M2U4Li4xZmI5Y2E1NmE5NmEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGliZXh0cmFj dG9yL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbGliZXh0cmFjdG9yL3RlbXBsYXRlCkBAIC03LDcg KzcsNyBAQCBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLXN0YXRpYyIKIGhvc3RtYWtlZGVwZW5k cz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGJ6aXAyLWRldmVsIGV4aXYy LWRldmVsIHRpZmYtZGV2ZWwgbGlicG5nLWRldmVsCiAgbGlianBlZy10dXJiby1kZXZlbCBsaWJ2 b3JiaXMtZGV2ZWwgbGliZmxhYy1kZXZlbCBnaWZsaWItZGV2ZWwgbGlibXBlZzItZGV2ZWwKLSBm Zm1wZWctZGV2ZWwgZ3RrKzMtZGV2ZWwgbGlibHRkbC1kZXZlbCBsaWJhcmNoaXZlLWRldmVsIGZp bGUtZGV2ZWwgbGliZ3NmLWRldmVsIgorIGZmbXBlZzQtZGV2ZWwgZ3RrKzMtZGV2ZWwgbGlibHRk bC1kZXZlbCBsaWJhcmNoaXZlLWRldmVsIGZpbGUtZGV2ZWwgbGliZ3NmLWRldmVsIgogc2hvcnRf ZGVzYz0iTGlicmFyeSB1c2VkIHRvIGV4dHJhY3QgbWV0YSBkYXRhIGZyb20gZmlsZXMiCiBtYWlu dGFpbmVyPSJNYXJ0aW4gUmllc2UgPGdyYXVlaGFhcmVAZ214LmRlPiIKIGxpY2Vuc2U9IkdQTC0z LjAtb3ItbGF0ZXIiCgpGcm9tIDYxOGM5YTM3ZGIxNTQ4YzE2N2VjNDFiMjBjOWYzNWRlZDBiMzY2 NDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENI IDA1MC8xMTNdIGxpYm9wZW5hbDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2xpYm9wZW5hbC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlib3BlbmFsL3RlbXBsYXRl IGIvc3JjcGtncy9saWJvcGVuYWwvdGVtcGxhdGUKaW5kZXggNzcyMThmOWU1MzlkLi4zZjQ5ZWQ3 NWExZmQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGlib3BlbmFsL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvbGlib3BlbmFsL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnbGlib3BlbmFsJwogcGtnbmFtZT1saWJvcGVuYWwKIHZlcnNpb249MS4yMi4yCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EQUxT T0ZUX0VYQU1QTEVTPU9GRiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gZmQ1 NWVhNDAxNzhhMzU2NzkzZjFmYWRkZDU3MDFlMzc0ODJjYzIwZCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDUxLzExM10gbGlib3BlbnNob3Q6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlib3BlbnNob3QvdGVtcGxhdGUgYi9zcmNwa2dzL2xpYm9w ZW5zaG90L3RlbXBsYXRlCmluZGV4IGRiODMxZjY5YjQ3NC4uODFhYTBkNzEzNmQ5IDEwMDY0NAot LS0gYS9zcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbGlib3BlbnNo b3QvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsaWJvcGVu c2hvdCcKIHBrZ25hbWU9bGlib3BlbnNob3QKIHZlcnNpb249MC4zLjAKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiAjIEJ1aWxkcyBmYWlsIHdpdGggUnVieS0yLjQu MQogY29uZmlndXJlX2FyZ3M9Ii1ERU5BQkxFX1JVQlk9T0ZGIC1EVVNFX1NZU1RFTV9KU09OQ1BQ PU9OIgoKRnJvbSBkNDEyYzlhY2ZlZDliOGQ5MTA2YWUyM2Y5ZDY2NmY4ZDgwM2RmMjdlIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTIvMTEz XSBsb3VkZ2FpbjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2xvdWRnYWlu L3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8IDExICsrKysrKysrKysrCiBzcmNwa2dzL2xvdWRnYWlu L3RlbXBsYXRlICAgICAgICAgICAgICB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xvdWRn YWluL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbG91ZGdhaW4v cGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xNmQ0NTEwZWU5 OGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xvdWRnYWluL3BhdGNoZXMvZmZtcGVnNS5w YXRjaApAQCAtMCwwICsxLDExIEBACistLS0gYS9zcmMvc2Nhbi5jCTIwMTktMDktMDYgMTE6MzE6 MTkuMDAwMDAwMDAwIC0wNDAwCisrKysgYi9zcmMvc2Nhbi5jCTIwMjMtMDMtMjMgMTE6MTU6NDAu ODY3OTY4NTIxIC0wNDAwCitAQCAtNjksOCArNjksNiBAQAorIAkgKiBJdCBpcyBub3cgdXNlbGVz cworIAkgKiBodHRwczovL2dpdGh1Yi5jb20vRkZtcGVnL0ZGbXBlZy9ibG9iLzcwZDI1MjY4YzIx Y2JlZTVmMDgzMDRkYTk1YmUxZjY0N2M2MzBjMTUvZG9jL0FQSWNoYW5nZXMjTDg2CisgCSAqLwor LSAgaWYgKGF2Zm9ybWF0X3ZlcnNpb24oKSA8IEFWX1ZFUlNJT05fSU5UKDU4LDksMTAwKSkKKy0g ICAgYXZfcmVnaXN0ZXJfYWxsKCk7CisgCisgCWF2X2xvZ19zZXRfY2FsbGJhY2soc2Nhbl9hdl9s b2cpOworIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9sb3VkZ2Fpbi90ZW1wbGF0ZSBiL3NyY3BrZ3Mv bG91ZGdhaW4vdGVtcGxhdGUKaW5kZXggZGE0ZjJkNTZlOTRjLi40ZDZiZjI5ZWZiNGYgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9sb3VkZ2Fpbi90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xvdWRnYWluJwog cGtnbmFtZT1sb3VkZ2FpbgogdmVyc2lvbj0wLjYuOAotcmV2aXNpb249MgorcmV2aXNpb249Mwog YnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBl bmRzPSJsaWJlYnVyMTI4LWRldmVsIHRhZ2xpYi1kZXZlbCBmZm1wZWctZGV2ZWwiCgpGcm9tIDY3 Yzk4YmViNDU0NzZmYjQ5NTZlOGRjYzhkODBjOGQ0ZmQ2ZmMwM2QgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA1My8xMTNdIG1lZGlhc3RyZWFt ZXI6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9tZWRpYXN0cmVhbWVy L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0ZSBi L3NyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0ZQppbmRleCBkMGU5N2U4NThlMjkuLjFiZGUw MzE0NDNhNSAxMDA2NDQKLS0tIGEvc3JjcGtncy9tZWRpYXN0cmVhbWVyL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0ZQpAQCAtMSwxMSArMSwxMSBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnbWVkaWFzdHJlYW1lcicKIHBrZ25hbWU9bWVkaWFzdHJlYW1lcgogdmVy c2lvbj01LjIuNgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNv bmZpZ3VyZV9hcmdzPSItREVOQUJMRV9TVFJJQ1Q9MCAtREVOQUJMRV9VTklUX1RFU1RTPTAiCiBo b3N0bWFrZWRlcGVuZHM9InB5dGhvbjMiCi1tYWtlZGVwZW5kcz0iYnpydHAtZGV2ZWwgZmZtcGVn LWRldmVsIGdsZXctZGV2ZWwgbGliWHYtZGV2ZWwgbGlic3J0cC1kZXZlbAorbWFrZWRlcGVuZHM9 ImJ6cnRwLWRldmVsIGZmbXBlZzQtZGV2ZWwgZ2xldy1kZXZlbCBsaWJYdi1kZXZlbCBsaWJzcnRw LWRldmVsCiAgbGlidXBucC1kZXZlbCBsaWJ2cHgtZGV2ZWwgbWJlZHRscy1kZXZlbCBvcHVzLWRl dmVsIG9ydHAtZGV2ZWwgcHVsc2VhdWRpby1kZXZlbAogIGxpYnRoZW9yYS1kZXZlbCBzcGVleC1k ZXZlbCB2NGwtdXRpbHMtZGV2ZWwgYmNnNzI5LWRldmVsIGJjbWF0cm9za2EyLWRldmVsIGxpYmdz bS1kZXZlbCIKICMgenhpbmctY3BwLWRldmVsICgxLjIuMCBwcm9iYWJseSBub3QgY29tcGF0aWJs ZSwgY2hlY2sgYWdhaW4gYWZ0ZXIgdXBkYWluZyB4emluZykKCkZyb20gY2FlMDE3YjIwOGM3YjYw YmZkNTVmOGY0MzkxYWMyOGIwZDRiN2IxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0 OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU0LzExM10gbWdiYTogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL21nYmEvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21nYmEv dGVtcGxhdGUgYi9zcmNwa2dzL21nYmEvdGVtcGxhdGUKaW5kZXggYWUwNTA0MzExZWVlLi5kMzEy OTVhMGNkM2QgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWdiYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L21nYmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtZ2Jh JwogcGtnbmFtZT1tZ2JhCiB2ZXJzaW9uPTAuMTAuMgotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtaG9zdC10 b29scyBxdDUtcW1ha2UgZGVza3RvcC1maWxlLXV0aWxzIgogbWFrZWRlcGVuZHM9IlNETDItZGV2 ZWwgZmZtcGVnLWRldmVsIGxpYmVkaXQtZGV2ZWwgbGliZXBveHktZGV2ZWwgbGlibWFnaWNrLWRl dmVsCgpGcm9tIGY3ODkwNTEzNzhiYjlkNmRiYzc4Y2VjOGJhZGY2YWQ5MmE0OWZmYzUgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA1NS8xMTNd IG1pbmlkbG5hOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbWluaWRsbmEv dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlIGIvc3JjcGtncy9t aW5pZGxuYS90ZW1wbGF0ZQppbmRleCBlODA4MWIxY2JjNjcuLjllZTk3MTQ4NjFmZCAxMDA2NDQK LS0tIGEvc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21pbmlkbG5hL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWluaWRsbmEnCiBw a2duYW1lPW1pbmlkbG5hCiB2ZXJzaW9uPTEuMy4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iCiAgLS1zYmluZGlyPS91 c3IvYmluCgpGcm9tIGQ3NmY0YjcwM2U3NTJhZjcyYTE4YTMwZTYwZjUzNmQ4ZDM4ZDI4ZDQgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA1Ni8x MTNdIG1peHh4OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbWl4eHgvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21peHh4L3RlbXBsYXRlIGIvc3JjcGtncy9taXh4eC90 ZW1wbGF0ZQppbmRleCA2MTlkZGNhMGQzMzIuLjRiOWVhMDBkM2ZiMyAxMDA2NDQKLS0tIGEvc3Jj cGtncy9taXh4eC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21peHh4L3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWl4eHgnCiBwa2duYW1lPW1peHh4CiB2ZXJz aW9uPTIuMy4zCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29u ZmlndXJlX2FyZ3M9Ii1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIgogaG9zdG1ha2VkZXBlbmRz PSJleHRyYS1jbWFrZS1tb2R1bGVzIHBrZy1jb25maWcgcHJvdG9idWYgcXQ1LWhvc3QtdG9vbHMg cXQ1LWRldmVsIgoKRnJvbSA0OTFkZGVjZDkzY2M4ZTY4NmQ3MmVmNTc3YmVhY2ZlMGVkYWZhNmE3 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw NTcvMTEzXSBtbHQ6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9tbHQv dGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tbHQvdGVtcGxhdGUgYi9zcmNwa2dzL21s dC90ZW1wbGF0ZQppbmRleCA4OTMzZWI0ZTdiYjkuLjczMzUzZmVkYWZiNSAxMDA2NDQKLS0tIGEv c3JjcGtncy9tbHQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tbHQvdGVtcGxhdGUKQEAgLTEsMTQg KzEsMTQgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21sdCcKIHBrZ25hbWU9bWx0CiB2ZXJzaW9u PTYuMjYuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y29uZmlndXJlCiBj b25maWd1cmVfYXJncz0iLS1wcmVmaXg9L3VzciAtLWxpYmRpcj0vdXNyL2xpYiRYQlBTX1RBUkdF VF9XT1JEU0laRQogIC0tZW5hYmxlLWdwbCAtLWVuYWJsZS1ncGwzIC0tZGlzYWJsZS1zd2ZkZWMg LS13aXRob3V0LWtkZQogIC0tc3dpZy1sYW5ndWFnZXM9cHl0aG9uIgogaG9zdG1ha2VkZXBlbmRz PSJkb3h5Z2VuIHBrZy1jb25maWcgbGFkc3BhLXNkayBzd2lnIHB5dGhvbjMgd2hpY2giCiAjIFhY WDogbW92aXQgdmlkLnN0YWIKLW1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBmZm1wZWctZGV2 ZWwgZ3RrKy1kZXZlbCBqYWNrLWRldmVsIGxhZHNwYS1zZGsKK21ha2VkZXBlbmRzPSJhbHNhLWxp Yi1kZXZlbCBmZm1wZWc0LWRldmVsIGd0aystZGV2ZWwgamFjay1kZXZlbCBsYWRzcGEtc2RrCiAg bGliZXhpZi1kZXZlbCBsaWJzYW1wbGVyYXRlLWRldmVsIGxpYnhtbDItZGV2ZWwgc294LWRldmVs IFNETF9pbWFnZS1kZXZlbAogIGZmdHctZGV2ZWwgZnJlaTByLXBsdWdpbnMgcHl0aG9uMy1kZXZl bCBwdWxzZWF1ZGlvLWRldmVsIG1vdml0LWRldmVsCiAgbGlidmlkc3RhYi1kZXZlbCBsaWJhdG9t aWMtZGV2ZWwiCgpGcm9tIDFlNjRhMTEzNDhkYTJiNWNlYTI1MWZjZTQzMjUwNGFiMzJmYTYzNzEg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA1 OC8xMTNdIG1vYzogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL21vYy90 ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21vYy90ZW1wbGF0ZSBiL3NyY3BrZ3MvbW9j L3RlbXBsYXRlCmluZGV4IGM0MmJlNjUwYTFkMi4uZDRmMGVlZmJhZDUyIDEwMDY0NAotLS0gYS9z cmNwa2dzL21vYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21vYy90ZW1wbGF0ZQpAQCAtMSwxMCAr MSwxMCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbW9jJwogcGtnbmFtZT1tb2MKIHZlcnNpb249 Mi41LjIKLXJldmlzaW9uPTYKK3JldmlzaW9uPTcKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUK IGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJkYi1kZXZlbCBuY3Vy c2VzLWRldmVsIGxpYmN1cmwtZGV2ZWwgcG9wdC1kZXZlbCBmZm1wZWctZGV2ZWwKK21ha2VkZXBl bmRzPSJkYi1kZXZlbCBuY3Vyc2VzLWRldmVsIGxpYmN1cmwtZGV2ZWwgcG9wdC1kZXZlbCBmZm1w ZWc0LWRldmVsCiAgamFjay1kZXZlbCBhbHNhLWxpYi1kZXZlbCBsaWJsdGRsLWRldmVsIGxpYmZs YWMtZGV2ZWwgbGlidm9yYmlzLWRldmVsCiAgbGlibWFkLWRldmVsIGxpYm1wY2RlYy1kZXZlbCBs aWJtb2RwbHVnLWRldmVsIGxpYmlkM3RhZy1kZXZlbCBmYWFkMi1kZXZlbAogIHRhZ2xpYi1kZXZl bCBsaWJzbmRmaWxlLWRldmVsIHdhdnBhY2stZGV2ZWwgc3BlZXgtZGV2ZWwgbGlic2FtcGxlcmF0 ZS1kZXZlbAoKRnJvbSA5MDA3YjM3M2UyYzc1ZTExYmY1MzYxY2I5MDZjNjUwYmExYTljM2Q4IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTkv MTEzXSBtb3Rpb246IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9tb3Rpb24v dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21vdGlvbi90ZW1wbGF0ZSBiL3NyY3BrZ3MvbW90 aW9uL3RlbXBsYXRlCmluZGV4IDNjZjNjMzAzNWM1Yi4uN2RjYTEyZDg1MWUzIDEwMDY0NAotLS0g YS9zcmNwa2dzL21vdGlvbi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21vdGlvbi90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21vdGlvbicKIHBrZ25hbWU9bW90 aW9uCiB2ZXJzaW9uPTQuNS4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1n bnUtY29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIHBrZy1jb25maWcgZ2V0dGV4 dC1kZXZlbCB0YXIiCiBtYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIGxpYm1pY3JvaHR0cGQtZGV2 ZWwgdjRsLXV0aWxzLWRldmVsIGdldHRleHQtZGV2ZWwiCgpGcm9tIGUzYTExYzkxY2YxZjkyMzY0 MjE3M2M0MTkzYTNlY2FmMzZlYTUxMjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkg LTA0MDAKU3ViamVjdDogW1BBVENIIDA2MC8xMTNdIG1wdjogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL21wdi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbXB2L3RlbXBs YXRlIGIvc3JjcGtncy9tcHYvdGVtcGxhdGUKaW5kZXggZTE2M2M0OTZjNmViLi5kNGZlZmJmNWUz YzcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbXB2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbXB2L3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbXB2JwogcGtnbmFt ZT1tcHYKIHZlcnNpb249MC4zNS4xCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHls ZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EY2RkYT1lbmFibGVkIC1EZHZiaW49ZW5hYmxlZCAt RGR2ZG5hdj1lbmFibGVkCiAgLURsaWJtcHY9dHJ1ZSAtRGNwbHVnaW5zPWVuYWJsZWQKCkZyb20g ZTYyN2Y5N2Q3MjViMjNhNjg3NjEyY2M3YmRlNjI4ZDRiMzI1ZmQ4NSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYxLzExM10gbXVzaWtjdWJl OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxhdGUgYi9zcmNwa2dzL211c2lrY3Vi ZS90ZW1wbGF0ZQppbmRleCA3YzU2OTMwM2MwNTQuLmE0ZGVhNDYwYzM3MSAxMDA2NDQKLS0tIGEv c3JjcGtncy9tdXNpa2N1YmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtdXNpa2N1YmUnCiBwa2du YW1lPW11c2lrY3ViZQogdmVyc2lvbj0zLjAuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9Y21ha2UKIG1ha2VfY21kPW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRE5PX05DVVJT RVNXPTEiCgpGcm9tIDZiNWJiNmQyMWI3MDEyNmE2ZDRjNTNlMTQ0NzRkNTk1MDAyMzYyYjYgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2Mi8x MTNdIG5vdGN1cnNlczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL25vdGN1 cnNlcy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRlIGIvc3Jj cGtncy9ub3RjdXJzZXMvdGVtcGxhdGUKaW5kZXggNmRkOGEwOTEzMTlmLi4zMTEwYzMwYzlhZmYg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvbm90 Y3Vyc2VzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbm90 Y3Vyc2VzJwogcGtnbmFtZT1ub3RjdXJzZXMKIHZlcnNpb249My4wLjkKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURVU0VfU1RBVElD PU9OICQodm9wdF9ib29sIG1hbiBVU0VfUEFORE9DKSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNv bmZpZyAkKHZvcHRfaWYgbWFuIHBhbmRvYykiCgpGcm9tIDk5OTI2NDJmZmE5OTcwNTFlNTE1MTQ0 OTlkMjg2YjRiNDJmN2U1ZGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAK U3ViamVjdDogW1BBVENIIDA2My8xMTNdIG9iczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL29icy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb2JzL3RlbXBsYXRlIGIv c3JjcGtncy9vYnMvdGVtcGxhdGUKaW5kZXggN2I2OWM2MzBkMzBkLi4yYzhkNjhkNzFmM2EgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3Mvb2JzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb2JzL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb2JzJwogcGtnbmFtZT1vYnMK IHZlcnNpb249MjkuMS4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0iaTY4NiogeDg2 XzY0KiBwcGM2NGxlKiBhYXJjaDY0KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJn cz0iLURPQlNfVkVSU0lPTl9PVkVSUklERT0ke3ZlcnNpb259IC1ERU5BQkxFX0pBQ0s9T04KCkZy b20gOThiYjcyNWYyMjgwNzFjNjExNGJjMTU0ZThiMWFkNThjMGYwNTZmOCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY0LzExM10gb2xpdmU6 IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZSB8 IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL29saXZlL3RlbXBsYXRlIGIvc3JjcGtncy9vbGl2ZS90ZW1w bGF0ZQppbmRleCAxMmE0NjkzNmM5OTAuLjVjMjkxN2I5YzUxMiAxMDA2NDQKLS0tIGEvc3JjcGtn cy9vbGl2ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29saXZlL3RlbXBsYXRlCkBAIC0xLDEwICsx LDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvbGl2ZScKIHBrZ25hbWU9b2xpdmUKIHZlcnNp b249MC4xLjIKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPXFtYWtlCiBob3N0 bWFrZWRlcGVuZHM9InF0NS1xbWFrZSBxdDUtaG9zdC10b29scyBwa2ctY29uZmlnIgotbWFrZWRl cGVuZHM9InF0NS1kZXZlbCBxdDUtbXVsdGltZWRpYS1kZXZlbCBxdDUtc3ZnLWRldmVsIGZmbXBl Zy1kZXZlbCBmcmVpMHItcGx1Z2lucyIKK21ha2VkZXBlbmRzPSJxdDUtZGV2ZWwgcXQ1LW11bHRp bWVkaWEtZGV2ZWwgcXQ1LXN2Zy1kZXZlbCBmZm1wZWc0LWRldmVsIGZyZWkwci1wbHVnaW5zIgog c2hvcnRfZGVzYz0iTm9uLWxpbmVhciB2aWRlbyBlZGl0b3IiCiBtYWludGFpbmVyPSJPcnBoYW5l ZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKCkZy b20gOGMxN2U2NjA0NTZiZjU5OTVhYTIxYTU1NTk0MDI0MzM0MjczYjQ1MCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY1LzExM10gb214cGxh eWVyOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvb214cGxheWVyL3Rl bXBsYXRlIHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vbXhwbGF5ZXIvdGVtcGxhdGUgYi9zcmNw a2dzL29teHBsYXllci90ZW1wbGF0ZQppbmRleCBlNzBiZjc4NzNkNGQuLjBlOWJjNzBlN2M4ZSAx MDA2NDQKLS0tIGEvc3JjcGtncy9vbXhwbGF5ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vbXhw bGF5ZXIvdGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29t eHBsYXllcicKIHBrZ25hbWU9b214cGxheWVyCiB2ZXJzaW9uPTIwMTkwMTAyCi1yZXZpc2lvbj0x CityZXZpc2lvbj0yCiBzaG9ydF9kZXNjPSJDb21tYW5kbGluZSBPTVggcGxheWVyIGZvciB0aGUg UmFzcGJlcnJ5IFBpIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3Jn PiIKLWxpY2Vuc2U9IkdQTC0yIgorbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdl PSJodHRwczovL2dpdGh1Yi5jb20vcG9wY29ybm1peC9vbXhwbGF5ZXIiCiAKIF9jb21taXQ9ImYw NjIzNWNjOTY5MGE2ZDU4MTg3NTE0NDUyZGY4Y2Y4ZmNkYWFjZWMiCkBAIC0xNSw3ICsxNSw3IEBA IGNoZWNrc3VtPWFmMmQ5NDUwZjg5NDc4NDJlYThjNDAxZmU5ZjcxZWVjNDQ0MDEzZWJiZGVlMjlm MmFjODI4YzljNDkzYzEzMjkKIGFyY2hzPSJhcm12NmwqIGFybXY3bCoiCiBidWlsZF9zdHlsZT1n bnUtbWFrZWZpbGUKIGhvc3RtYWtlZGVwZW5kcz0iY3VybCBwa2ctY29uZmlnIgotbWFrZWRlcGVu ZHM9ImFsc2EtbGliLWRldmVsIHJwaS11c2VybGFuZC1kZXZlbCBwY3JlLWRldmVsIGJvb3N0LWRl dmVsIGZyZWV0eXBlLWRldmVsIGZmbXBlZy1kZXZlbCBkYnVzLWRldmVsIgorbWFrZWRlcGVuZHM9 ImFsc2EtbGliLWRldmVsIHJwaS11c2VybGFuZC1kZXZlbCBwY3JlLWRldmVsIGJvb3N0LWRldmVs IGZyZWV0eXBlLWRldmVsIGZmbXBlZzQtZGV2ZWwgZGJ1cy1kZXZlbCIKIGRlcGVuZHM9ImZyZWVm b250LXR0ZiIKIAogZG9fYnVpbGQoKSB7CgpGcm9tIDM3MGY0N2UzMGRmYzljZjQ0ZjAxNjdkNDhi YTBiNjRjMDhkNGZlYjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3Vi amVjdDogW1BBVENIIDA2Ni8xMTNdIG9wZW5pbWFnZWlvOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgfCAyICsrCiBzcmNwa2dzL29wZW5p bWFnZWlvL3RlbXBsYXRlIHwgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29tbW9uL3NobGli cwppbmRleCBlY2NlZjYwMDIxYzQuLmViZGU1ZmUxNjZhYiAxMDA2NDQKLS0tIGEvY29tbW9uL3No bGlicworKysgYi9jb21tb24vc2hsaWJzCkBAIC0yMjYwLDYgKzIyNjAsOCBAQCBsaWJ4bXAuc28u NCBsaWJ4bXAtNC4zLjdfMQogbGliS0Y1VGhyZWFkV2VhdmVyLnNvLjUgdGhyZWFkd2VhdmVyLTUu MjYuMF8xCiBsaWJPcGVuSW1hZ2VJT19VdGlsLnNvLjIuNCBvcGVuaW1hZ2Vpby0yLjQuOS4wXzEK IGxpYk9wZW5JbWFnZUlPLnNvLjIuNCBvcGVuaW1hZ2Vpby0yLjQuOS4wXzEKK2xpYk9wZW5JbWFn ZUlPX1V0aWwuc28uMi40IG9wZW5pbWFnZWlvLTIuNC44LjFfMQorbGliT3BlbkltYWdlSU8uc28u Mi40IG9wZW5pbWFnZWlvLTIuNC44LjFfMQogbGliT3BlbkNvbG9ySU8uc28uMi4xIG9wZW5jb2xv cmlvLTIuMS4yXzEKIGxpYnB5c3RyaW5nLnNvLjEgcHlzdHJpbmctMS4xLjNfMQogbGlieWFtbC1j cHAuc28uMC43IHlhbWwtY3BwLTAuNy4wXzEKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbmltYWdl aW8vdGVtcGxhdGUgYi9zcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBsYXRlCmluZGV4IGMyZDM2YjRi MzUzOS4uMGU5ZTIyZTk2ODVkIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdvcGVuaW1hZ2VpbycKIHBrZ25hbWU9b3BlbmltYWdlaW8KIHZl cnNpb249Mi40LjkuMAotcmV2aXNpb249NAorcmV2aXNpb249NQogYnVpbGRfc3R5bGU9Y21ha2UK IGJ1aWxkX2hlbHBlcj1xZW11CiBjb25maWd1cmVfYXJncz0iLURVU0VfUVQ9MCAtRFVTRV9QWVRI T049MCAtRE9JSU9fQlVJTERfVEVTVFM9MAoKRnJvbSBhMzlkMGFjNTA4YjEyY2FmNmFiNTIyNzVl ZTBlZjFhNmZjYWY4OTRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwNjcvMTEzXSBvcGVuc2hvdDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL29wZW5zaG90L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vcGVuc2hv dC90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUKaW5kZXggMzIyNzE3ZDQwYWJj Li5jMDc0ZTAzMzg3NzMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ29wZW5zaG90JwogcGtnbmFtZT1vcGVuc2hvdAogdmVyc2lvbj0zLjAuMAotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9cHl0aG9uMy1tb2R1bGUKIGhvc3RtYWtl ZGVwZW5kcz0icHl0aG9uMyBweXRob24zLXNldHVwdG9vbHMiCiBtYWtlZGVwZW5kcz0iZmZtcGVn LWRldmVsIHB5dGhvbjMtUHlRdDUiCgpGcm9tIGY3NzhlNWJjZTliNDFmYmMzNWUyZTAwYWRhMGNm MTlmODgzN2Y5ZDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVj dDogW1BBVENIIDA2OC8xMTNdIG9wZW50b29uejogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL29wZW50b29uei90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbnRvb256 L3RlbXBsYXRlIGIvc3JjcGtncy9vcGVudG9vbnovdGVtcGxhdGUKaW5kZXggZWU5Zjc2MDNmNTVm Li4zZTgxODM0Y2EwZWQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3BlbnRvb256L3RlbXBsYXRlCisr KyBiL3NyY3BrZ3Mvb3BlbnRvb256L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnb3BlbnRvb256JwogcGtnbmFtZT1vcGVudG9vbnoKIHZlcnNpb249MS42LjAK LXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3dya3NyYz0idG9vbnovc291cmNlcyIKIGJ1 aWxkX3N0eWxlPWNtYWtlCiBtYWtlX2NtZD1tYWtlCgpGcm9tIGI3OTE0MGRmNWE2Zjg2MTZjMmYy OGZlMDJlMDkzMGIwYTMzMDRhNWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0 MDAKU3ViamVjdDogW1BBVENIIDA2OS8xMTNdIHBpYW5vYmFyOiByZXZidW1wIGZvciBmZm1wZWct Ni4wCgotLS0KIHNyY3BrZ3MvcGlhbm9iYXIvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Bp YW5vYmFyL3RlbXBsYXRlIGIvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZQppbmRleCBhOWIyOWU5 MTk5M2YuLjgxZWZjZDEyMmM0ZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL3BpYW5vYmFyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAncGlhbm9iYXInCiBwa2duYW1lPXBpYW5vYmFyCiB2ZXJzaW9uPTIwMjIu MDQuMDEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQog bWFrZV9idWlsZF9hcmdzPSJWPTEiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9t IDRkNzZjNWZlOTgxNTExOGIxMzkzZjQ2OTg5YmI0ZTlhOGEwYTFiNzYgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3MC8xMTNdIHBwc3NwcDog cmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZSB8 IDcgKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcHBzc3Bw L3RlbXBsYXRlCmluZGV4IDc5ODRhNzMzZDRiZS4uMTVhNDJmZDJjOTkzIDEwMDY0NAotLS0gYS9z cmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3Bwc3NwcCcKIHBrZ25hbWU9cHBzc3Bw CiB2ZXJzaW9uPTEuMTQuNAotcmV2aXNpb249MQorcmV2aXNpb249MgogX2dsc2xhbmdfY29tbWl0 PWRjMTFhZGRlMjNjNDU1YTI0ZTEzZGQ1NGRlOWI0ZWRlOGJkZDdkYjgKIF9TUElSVl9Dcm9zc19j b21taXQ9OWFjYjllYzMxZjVhOGVmODBlYTZiOTk0YmI3N2JlNzg3YjA4ZDNkMQogX2FybWlwc19j b21taXQ9NjcxOWVkZWJhYWUwMzMzMGVlNTQ0MWQ5YjI4MjgwNjcyZWRmMDBkNQpAQCAtMTMsNyAr MTMsNyBAQCBjb25maWd1cmVfYXJncz0iLURIRUFETEVTUz0xIC1EVVNFX1NZU1RFTV9GRk1QRUc9 MSAtRFVOSVRURVNUPU9OCiAgLURVU0lOR19RVF9VST0kKHZvcHRfaWYgcXQgT04gT0ZGKSAtRFVT RV9TWVNURU1fWlNURD1PTgogIC1EQVJNSVBTX1VTRV9TVERfRklMRVNZU1RFTT1PTiIKIGhvc3Rt YWtlZGVwZW5kcz0icGtnLWNvbmZpZyBweXRob24zICQodm9wdF9pZiBxdCBxdDUtaG9zdC10b29s cykiCi1tYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBnbGV3LWRldmVsIGZmbXBlZy1kZXZlbCBsaWJ6 aXAtZGV2ZWwKK21ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGdsZXctZGV2ZWwgZmZtcGVnNC1kZXZl bCBsaWJ6aXAtZGV2ZWwKICBzbmFwcHktZGV2ZWwgcmFwaWRqc29uIGxpYnBuZy1kZXZlbCBsaWJ6 c3RkLWRldmVsCiAgJCh2b3B0X2lmIHNkbDIgU0RMMi1kZXZlbCkgJCh2b3B0X2lmIHdheWxhbmQg d2F5bGFuZC1kZXZlbCkKICAkKHZvcHRfaWYgcXQgJ3F0NS1kZXZlbCBxdDUtbXVsdGltZWRpYS1k ZXZlbCcpIgpAQCAtNjIsMTMgKzYyLDEyIEBAIHBvc3RfZXh0cmFjdCgpIHsKIAltdiAke3dya3Ny Y30vbWluaXVwbnAtJHtfbWluaXVwbnBfY29tbWl0fSAke3dya3NyY30vZXh0L21pbml1cG5wCiB9 CiAKLXBvc3RfcGF0Y2goKXsKK3Bvc3RfcGF0Y2goKSB7CiAJIyBkaXNhYmxlIGdpdCB2ZXJzaW9u aW5nCiAJdnNlZCAtZSAnc3xmaW5kX3BhY2thZ2UoR2l0KXwjICZ8JyAtaSBnaXQtdmVyc2lvbi5j bWFrZQogfQogCiBkb19pbnN0YWxsKCkgewotCXZsaWNlbnNlIExJQ0VOU0UuVFhUCiAJdmluc3Rh bGwgaWNvbnMvaWNvbi5zdmcgNjQ0IHVzci9zaGFyZS9waXhtYXBzIHBwc3NwcC5zdmcKIAl2aW5z dGFsbCBRdC9QUFNTUFAuZGVza3RvcCA2NDQgdXNyL3NoYXJlL2FwcGxpY2F0aW9ucwogCXZiaW4g YnVpbGQvUFBTU1BQSGVhZGxlc3MgcHBzc3BwLWhlYWRsZXNzCgpGcm9tIGJjZmNhNmFjZjhhZTIw Yzk4YjQ4MmY4MmE3YWViZjBkY2M0MjU1NjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3MS8xMTNdIHBxaXY6IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy9wcWl2L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9wcWl2 L3RlbXBsYXRlIGIvc3JjcGtncy9wcWl2L3RlbXBsYXRlCmluZGV4IDU0MmZjMjdhMmQzMi4uOTMw OGQ5NDliNmExIDEwMDY0NAotLS0gYS9zcmNwa2dzL3BxaXYvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9wcWl2L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHFp dicKIHBrZ25hbWU9cHFpdgogdmVyc2lvbj0yLjEyCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1h a2VkZXBlbmRzPSJnbGliLWRldmVsIGd0ayszLWRldmVsICQodm9wdF9pZiBmZm1wZWcgZmZtcGVn LWRldmVsKQoKRnJvbSA1YmQ5MDdhNmQ3OGJiYTViNDVhODBlMzhjYWJkNTE0MmViZDkzYTUwIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzIv MTEzXSBxbW1wOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcW1tcC90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcW1tcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcW1tcC90ZW1w bGF0ZQppbmRleCAyNmM2NjFlZDE2YmUuLmExNTBkNzQ0MWM3YSAxMDA2NDQKLS0tIGEvc3JjcGtn cy9xbW1wL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcW1tcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3FtbXAnCiBwa2duYW1lPXFtbXAKIHZlcnNpb249MS42 LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVf YXJncz0iLURVU0VfSEFMOkJPT0w9RkFMU0UgLURRTU1QX0RFRkFVTFRfVUk6U1RSSU5HPXNpbXBs ZSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2Ui CgpGcm9tIGJhZjUwYTFkNDQzNDExODg1ZTA5NmI2NTZlYmI3ZWZhMDdkOTBiMzEgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3My8xMTNdIHF0 NS13ZWJlbmdpbmU6IHVwZGF0ZSB0byA1LjE1LjEzCgotLS0KIC4uLi9jaHJvbWl1bS1tZWRpYS1m aWx0ZXJzLWNwcDE0LnBhdGNoICAgICAgICB8ICAxMSArKwogc3JjcGtncy9xdDUtd2ViZW5naW5l L3BhdGNoZXMvZmZtcGVnNS5wYXRjaCAgIHwgMTc5ICsrKysrKysrKysrKysrKysrKwogc3JjcGtn cy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlICAgICAgICAgICAgICAgIHwgIDEwICstCiAzIGZpbGVz IGNoYW5nZWQsIDE5NSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9taXVtLW1lZGlhLWZpbHRl cnMtY3BwMTQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUv cGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5l L3BhdGNoZXMvY2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaCBiL3NyY3BrZ3MvcXQ1 LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNGFkYzU0MGYyY2IKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9jaHJvbWl1bS1tZWRp YS1maWx0ZXJzLWNwcDE0LnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAKKy0tLSBhL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL0JVSUxELmduCTIwMjMtMDItMjcgMTM6MzI6NTkuMDAw MDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9C VUlMRC5nbgkyMDIzLTA0LTAyIDE3OjIxOjM5LjIwNDA2NjM4NCAtMDQwMAorQEAgLTk2LDYgKzk2 LDggQEAKKyAgICAgIi8vdWkvZ2Z4L2dlb21ldHJ5Omdlb21ldHJ5IiwKKyAgIF0KKyAKKysgIGNm bGFnc19jYyA9IFsgIi1zdGQ9YysrMTQiIF0KKysKKyAgIGxpYnMgPSBbXQorIAorICAgaWYgKHBy b3ByaWV0YXJ5X2NvZGVjcykgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3Bh dGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2ZmbXBl ZzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hYzU1ZTE2 MzQ0MjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9m Zm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsMTc5IEBACistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21p dW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwkyMDIzLTA0LTAyIDE2OjUwOjU3Ljcz MjU0NzQ0NiAtMDQwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMv ZmZtcGVnX2RlbXV4ZXIuY2MJMjAyMy0wNC0wMiAxNjo1MDowOS40ODY0Nzg5OTUgLTA0MDAKK0BA IC01Nyw2ICs1Nyw4IEBACisgCisgbmFtZXNwYWNlIHsKKyAKKytjb25zdGV4cHIgaW50NjRfdCBr UmVsYXRpdmVUc0Jhc2UgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PigweDdmZmVmZmZmZmZmZmZmZmYp OworKworIHZvaWQgU2V0QVZTdHJlYW1EaXNjYXJkKEFWU3RyZWFtKiBzdHJlYW0sIEFWRGlzY2Fy ZCBkaXNjYXJkKSB7CisgICBEQ0hFQ0soc3RyZWFtKTsKKyAgIHN0cmVhbS0+ZGlzY2FyZCA9IGRp c2NhcmQ7CitAQCAtOTAsMjQgKzkyLDEyIEBACisgCisgc3RhdGljIGJhc2U6OlRpbWVEZWx0YSBF eHRyYWN0U3RhcnRUaW1lKEFWU3RyZWFtKiBzdHJlYW0pIHsKKyAgIC8vIFRoZSBkZWZhdWx0IHN0 YXJ0IHRpbWUgaXMgemVyby4KKy0gIGJhc2U6OlRpbWVEZWx0YSBzdGFydF90aW1lOworKyAgYmFz ZTo6VGltZURlbHRhIHN0YXJ0X3RpbWUgPSBrTm9UaW1lc3RhbXA7CisgCisgICAvLyBGaXJzdCB0 cnkgdG8gdXNlICB0aGUgfHN0YXJ0X3RpbWV8IHZhbHVlIGFzIGlzLgorICAgaWYgKHN0cmVhbS0+ c3RhcnRfdGltZSAhPSBrTm9GRm1wZWdUaW1lc3RhbXApCisgICAgIHN0YXJ0X3RpbWUgPSBDb252 ZXJ0RnJvbVRpbWVCYXNlKHN0cmVhbS0+dGltZV9iYXNlLCBzdHJlYW0tPnN0YXJ0X3RpbWUpOwor IAorLSAgLy8gTmV4dCB0cnkgdG8gdXNlIHRoZSBmaXJzdCBEVFMgdmFsdWUsIGZvciBjb2RlY3Mg d2hlcmUgd2Uga25vdyBQVFMgPT0gRFRTCistICAvLyAoZXhjbHVkZXMgYWxsIEgyNnggY29kZWNz KS4gVGhlIHN0YXJ0IHRpbWUgbXVzdCBiZSByZXR1cm5lZCBpbiBQVFMuCistICBpZiAoc3RyZWFt LT5maXJzdF9kdHMgIT0ga05vRkZtcGVnVGltZXN0YW1wICYmCistICAgICAgc3RyZWFtLT5jb2Rl Y3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfSEVWQyAmJgorLSAgICAgIHN0cmVhbS0+Y29k ZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0gyNjQgJiYKKy0gICAgICBzdHJlYW0tPmNv ZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9NUEVHNCkgeworLSAgICBjb25zdCBiYXNl OjpUaW1lRGVsdGEgZmlyc3RfcHRzID0KKy0gICAgICAgIENvbnZlcnRGcm9tVGltZUJhc2Uoc3Ry ZWFtLT50aW1lX2Jhc2UsIHN0cmVhbS0+Zmlyc3RfZHRzKTsKKy0gICAgaWYgKGZpcnN0X3B0cyA8 IHN0YXJ0X3RpbWUpCistICAgICAgc3RhcnRfdGltZSA9IGZpcnN0X3B0czsKKy0gIH0KKy0KKyAg IHJldHVybiBzdGFydF90aW1lOworIH0KKyAKK0BAIC00MDgsMTEgKzM5OCwxMSBAQAorICAgc2Nv cGVkX3JlZnB0cjxEZWNvZGVyQnVmZmVyPiBidWZmZXI7CisgCisgICBpZiAodHlwZSgpID09IERl bXV4ZXJTdHJlYW06OlRFWFQpIHsKKy0gICAgaW50IGlkX3NpemUgPSAwOworKyAgICBzaXplX3Qg aWRfc2l6ZSA9IDA7CisgICAgIHVpbnQ4X3QqIGlkX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVf ZGF0YSgKKyAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfV0VCVlRUX0lERU5USUZJ RVIsICZpZF9zaXplKTsKKyAKKy0gICAgaW50IHNldHRpbmdzX3NpemUgPSAwOworKyAgICBzaXpl X3Qgc2V0dGluZ3Nfc2l6ZSA9IDA7CisgICAgIHVpbnQ4X3QqIHNldHRpbmdzX2RhdGEgPSBhdl9w YWNrZXRfZ2V0X3NpZGVfZGF0YSgKKyAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFf V0VCVlRUX1NFVFRJTkdTLCAmc2V0dGluZ3Nfc2l6ZSk7CisgCitAQCAtNDI0LDcgKzQxNCw3IEBA CisgICAgIGJ1ZmZlciA9IERlY29kZXJCdWZmZXI6OkNvcHlGcm9tKHBhY2tldC0+ZGF0YSwgcGFj a2V0LT5zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlX2Rh dGEuZGF0YSgpLCBzaWRlX2RhdGEuc2l6ZSgpKTsKKyAgIH0gZWxzZSB7CistICAgIGludCBzaWRl X2RhdGFfc2l6ZSA9IDA7CisrICAgIHNpemVfdCBzaWRlX2RhdGFfc2l6ZSA9IDA7CisgICAgIHVp bnQ4X3QqIHNpZGVfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAgICAgcGFj a2V0LmdldCgpLCBBVl9QS1RfREFUQV9NQVRST1NLQV9CTE9DS0FERElUSU9OQUwsICZzaWRlX2Rh dGFfc2l6ZSk7CisgCitAQCAtNDg1LDcgKzQ3NSw3IEBACisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGFja2V0LT5zaXplIC0gZGF0YV9vZmZzZXQpOworICAgICB9Cisg CistICAgIGludCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7CisrICAgIHNpemVfdCBza2lwX3NhbXBs ZXNfc2l6ZSA9IDA7CisgICAgIGNvbnN0IHVpbnQzMl90KiBza2lwX3NhbXBsZXNfcHRyID0KKyAg ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdl9wYWNrZXRfZ2V0X3Np ZGVfZGF0YSgKKyAgICAgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1NLSVBfU0FN UExFUywgJnNraXBfc2FtcGxlc19zaXplKSk7CitAQCAtMTU4Nyw2ICsxNTc3LDggQEAKKyAgIGZv ciAoY29uc3QgYXV0byYgc3RyZWFtIDogc3RyZWFtc18pIHsKKyAgICAgaWYgKCFzdHJlYW0gfHwg c3RyZWFtLT5Jc0VuYWJsZWQoKSAhPSBlbmFibGVkKQorICAgICAgIGNvbnRpbnVlOworKyAgICBp ZiAoc3RyZWFtLT5hdl9zdHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxVRSkKKysg ICAgICBjb250aW51ZTsKKyAgICAgaWYgKCFsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0gfHwKKyAg ICAgICAgIHN0cmVhbS0+c3RhcnRfdGltZSgpIDwgbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFtLT5z dGFydF90aW1lKCkpIHsKKyAgICAgICBsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0gPSBzdHJlYW0u Z2V0KCk7CitAQCAtMTYwNCw2ICsxNTk2LDggQEAKKyAgICAgaWYgKHN0cmVhbSAmJiBzdHJlYW0t PnR5cGUoKSA9PSBEZW11eGVyU3RyZWFtOjpWSURFTyAmJgorICAgICAgICAgc3RyZWFtLT5Jc0Vu YWJsZWQoKSkgeworICAgICAgIHZpZGVvX3N0cmVhbSA9IHN0cmVhbS5nZXQoKTsKKysgICAgICBp ZiAoc3RyZWFtLT5hdl9zdHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxVRSkKKysg ICAgICAgIGNvbnRpbnVlOworICAgICAgIGlmICh2aWRlb19zdHJlYW0tPnN0YXJ0X3RpbWUoKSA8 PSBzZWVrX3RpbWUpIHsKKyAgICAgICAgIHJldHVybiB2aWRlb19zdHJlYW07CisgICAgICAgfQor ZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5oIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmgKKy0tLSBhL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5oCTIwMjItMDUtMjMg MDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVk aWEvZmZtcGVnL2ZmbXBlZ19jb21tb24uaAkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxNzE5Mjc4OCAt MDUwMAorQEAgLTI5LDYgKzI5LDcgQEAgZXh0ZXJuICJDIiB7CisgI2luY2x1ZGUgPGxpYmF2Zm9y bWF0L2F2Zm9ybWF0Lmg+CisgI2luY2x1ZGUgPGxpYmF2Zm9ybWF0L2F2aW8uaD4KKyAjaW5jbHVk ZSA8bGliYXZ1dGlsL2F2dXRpbC5oPgorKyNpbmNsdWRlIDxsaWJhdnV0aWwvY2hhbm5lbF9sYXlv dXQuaD4KKyAjaW5jbHVkZSA8bGliYXZ1dGlsL2ltZ3V0aWxzLmg+CisgI2luY2x1ZGUgPGxpYmF2 dXRpbC9sb2cuaD4KKyAjaW5jbHVkZSA8bGliYXZ1dGlsL21hc3RlcmluZ19kaXNwbGF5X21ldGFk YXRhLmg+CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvYXVkaW9fZmlsZV9yZWFkZXIuY2MgcXR3ZWJlbmdpbmUt NS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9hdWRpb19maWxlX3Jl YWRlci5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvYXVkaW9f ZmlsZV9yZWFkZXIuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBi L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNj CTIwMjItMDctMTEgMjI6MTI6NDcuOTE3MTkyNzg4IC0wNTAwCitAQCAtODUsNyArODUsNyBAQCBi b29sIEF1ZGlvRmlsZVJlYWRlcjo6T3BlbkRlbXV4ZXIoKSB7CisgfQorIAorIGJvb2wgQXVkaW9G aWxlUmVhZGVyOjpPcGVuRGVjb2RlcigpIHsKKy0gIEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19m aW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKysgIGNvbnN0IEFWQ29kZWMq IGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNvZGVjX2lkKTsK KyAgIGlmIChjb2RlYykgeworICAgICAvLyBNUDMgZGVjb2RlcyB0byBTMTZQIHdoaWNoIHdlIGRv bid0IHN1cHBvcnQsIHRlbGwgaXQgdG8gdXNlIFMxNiBpbnN0ZWFkLgorICAgICBpZiAoY29kZWNf Y29udGV4dF8tPnNhbXBsZV9mbXQgPT0gQVZfU0FNUExFX0ZNVF9TMTZQKQorZGlmZiAtTmF1cnAg cXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0 ZXJzL2ZmbXBlZ19hdWRpb19kZWNvZGVyLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBh cnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2F1ZGlvX2RlY29kZXIuY2MKKy0tLSBh L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRpb19kZWNvZGVy LmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFy dHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYwkyMDIyLTA3 LTExIDIyOjEyOjQ3LjkxNzE5Mjc4OCAtMDUwMAorQEAgLTMyOSw3ICszMjksNyBAQCBib29sIEZG bXBlZ0F1ZGlvRGVjb2Rlcjo6Q29uZmlndXJlRGVjb2RlCisgICAgIH0KKyAgIH0KKyAKKy0gIEFW Q29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNvZGVj X2lkKTsKKysgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY29k ZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKyAgIGlmICghY29kZWMgfHwKKyAgICAgICBhdmNvZGVj X29wZW4yKGNvZGVjX2NvbnRleHRfLmdldCgpLCBjb2RlYywgJmNvZGVjX29wdGlvbnMpIDwgMCkg eworICAgICBETE9HKEVSUk9SKSA8PCAiQ291bGQgbm90IGluaXRpYWxpemUgYXVkaW8gZGVjb2Rl cjogIgorZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19nbHVlLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAv c3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2dsdWUuY2MKKy0tLSBh L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19nbHVlLmNjCTIwMjIt MDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21p dW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZ2x1ZS5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5 Mjc3OSAtMDUwMAorQEAgLTU5LDcgKzU5LDYgQEAgc3RhdGljIGludDY0X3QgQVZJT1NlZWtPcGVy YXRpb24odm9pZCogbworIH0KKyAKKyB2b2lkIEZGbXBlZ0dsdWU6OkluaXRpYWxpemVGRm1wZWco KSB7CistICBhdl9yZWdpc3Rlcl9hbGwoKTsKKyB9CisgCisgc3RhdGljIHZvaWQgTG9nQ29udGFp bmVyKGJvb2wgaXNfbG9jYWxfZmlsZSwKK0BAIC05NSw5ICs5NCw2IEBAIEZGbXBlZ0dsdWU6OkZG bXBlZ0dsdWUoRkZtcGVnVVJMUHJvdG9jb2wKKyAgIC8vIEVuYWJsZSBmYXN0LCBidXQgaW5hY2N1 cmF0ZSBzZWVrcyBmb3IgTVAzLgorICAgZm9ybWF0X2NvbnRleHRfLT5mbGFncyB8PSBBVkZNVF9G TEFHX0ZBU1RfU0VFSzsKKyAKKy0gIC8vIEVuc3VyZXMgd2UgY2FuIHJlYWQgb3V0IHZhcmlvdXMg bWV0YWRhdGEgYml0cyBsaWtlIHZwOCBhbHBoYS4KKy0gIGZvcm1hdF9jb250ZXh0Xy0+ZmxhZ3Mg fD0gQVZGTVRfRkxBR19LRUVQX1NJREVfREFUQTsKKy0KKyAgIC8vIEVuc3VyZXMgZm9ybWF0IHBh cnNpbmcgZXJyb3JzIHdpbGwgYmFpbCBvdXQuIEZyb20gYW4gYXVkaXQgb24gMTEvMjAxNywgYWxs CisgICAvLyBpbnN0YW5jZXMgd2VyZSByZWFsIGZhaWx1cmVzLiBTb2x2ZXMgYnVncyBsaWtlIGh0 dHA6Ly9jcmJ1Zy5jb20vNzEwNzkxLgorICAgZm9ybWF0X2NvbnRleHRfLT5lcnJvcl9yZWNvZ25p dGlvbiB8PSBBVl9FRl9FWFBMT0RFOworZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5v cmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ192aWRlb19kZWNv ZGVyLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2Zp bHRlcnMvZmZtcGVnX3ZpZGVvX2RlY29kZXIuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ192aWRlb19kZWNvZGVyLmNjCTIwMjItMDUtMjMgMDY6Mzg6 NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmls dGVycy9mZm1wZWdfdmlkZW9fZGVjb2Rlci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5Mjc3 OSAtMDUwMAorQEAgLTM5MSw3ICszOTEsNyBAQCBib29sIEZGbXBlZ1ZpZGVvRGVjb2Rlcjo6Q29u ZmlndXJlRGVjb2RlCisgICBpZiAoZGVjb2RlX25hbHVzXykKKyAgICAgY29kZWNfY29udGV4dF8t PmZsYWdzMiB8PSBBVl9DT0RFQ19GTEFHMl9DSFVOS1M7CisgCistICBBVkNvZGVjKiBjb2RlYyA9 IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25z dCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5j b2RlY19pZCk7CisgICBpZiAoIWNvZGVjIHx8IGF2Y29kZWNfb3BlbjIoY29kZWNfY29udGV4dF8u Z2V0KCksIGNvZGVjLCBOVUxMKSA8IDApIHsKKyAgICAgUmVsZWFzZUZGbXBlZ1Jlc291cmNlcygp OworICAgICByZXR1cm4gZmFsc2U7CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9y aWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9jaGVja2Vy LmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRl cnMvbWVkaWFfZmlsZV9jaGVja2VyLmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVk aWEvZmlsdGVycy9tZWRpYV9maWxlX2NoZWNrZXIuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAw MDAwMDAgLTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL21l ZGlhX2ZpbGVfY2hlY2tlci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5Mjc3OSAtMDUwMAor QEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBNZWRpYUZpbGVDaGVja2VyOjpTdGFydChiYXNlOjpUaW1l RAorICAgICAgIGF1dG8gY29udGV4dCA9IEFWU3RyZWFtVG9BVkNvZGVjQ29udGV4dChmb3JtYXRf Y29udGV4dC0+c3RyZWFtc1tpXSk7CisgICAgICAgaWYgKCFjb250ZXh0KQorICAgICAgICAgY29u dGludWU7CistICAgICAgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihjcC0+ Y29kZWNfaWQpOworKyAgICAgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2Rl Y29kZXIoY3AtPmNvZGVjX2lkKTsKKyAgICAgICBpZiAoY29kZWMgJiYgYXZjb2RlY19vcGVuMihj b250ZXh0LmdldCgpLCBjb2RlYywgbnVsbHB0cikgPj0gMCkgeworICAgICAgICAgYXV0byBsb29w ID0gc3RkOjptYWtlX3VuaXF1ZTxGRm1wZWdEZWNvZGluZ0xvb3A+KGNvbnRleHQuZ2V0KCkpOwor ICAgICAgICAgc3RyZWFtX2NvbnRleHRzW2ldID0ge3N0ZDo6bW92ZShjb250ZXh0KSwgc3RkOjpt b3ZlKGxvb3ApfTsKK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2Nv ZGVjcy9oMjY0L2gyNjRfZGVjb2Rlcl9pbXBsLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9j b2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9o MjY0X2RlY29kZXJfaW1wbC5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAor KysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3Zp ZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYwkyMDIyLTA3LTExIDIy OjEyOjQ3LjkxODE5Mjc3OSAtMDUwMAorQEAgLTIwMyw3ICsyMDMsNyBAQCBpbnQzMl90IEgyNjRE ZWNvZGVySW1wbDo6SW5pdERlY29kZShjb25zCisgICAvLyBhIHBvaW50ZXIgfHRoaXN8LgorICAg YXZfY29udGV4dF8tPm9wYXF1ZSA9IHRoaXM7CisgCistICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29k ZWNfZmluZF9kZWNvZGVyKGF2X2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25zdCBBVkNvZGVj KiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGF2X2NvbnRleHRfLT5jb2RlY19pZCk7Cisg ICBpZiAoIWNvZGVjKSB7CisgICAgIC8vIFRoaXMgaXMgYW4gaW5kaWNhdGlvbiB0aGF0IEZGbXBl ZyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgb3IgaXQgaGFzIG5vdAorICAgICAvLyBiZWVuIGNv bXBpbGVkL2luaXRpYWxpemVkIHdpdGggdGhlIGNvcnJlY3Qgc2V0IG9mIGNvZGVjcy4KZGlmZiAt LWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1LXdlYmVu Z2luZS90ZW1wbGF0ZQppbmRleCA4NTI2N2M3Y2Y4YTMuLjA5NWFiNjc3MDFlNCAxMDA2NDQKLS0t IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVu Z2luZS90ZW1wbGF0ZQpAQCAtMSw5ICsxLDkgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0NS13 ZWJlbmdpbmUnCiBwa2duYW1lPXF0NS13ZWJlbmdpbmUKLXZlcnNpb249NS4xNS4xMQotcmV2aXNp b249MwordmVyc2lvbj01LjE1LjEzCityZXZpc2lvbj0xCiBfdmVyc2lvbj0iJHt2ZXJzaW9ufS1s dHMiCi1fY2hyb21pdW1fY29tbWl0PWJlMzQ5ZWFmNjJlNzc5NTU3OTFkN2JmMjlmODkzZjFlOGEz N2RhZjQKK19jaHJvbWl1bV9jb21taXQ9ZTQ4ZGY3ODAzYzdjOThiMGIyNDcxYzk0MDU3ZDMyZTQ0 YTMwMWFkNQogYXJjaHM9Ing4Nl82NCogaTY4NiogYXJtdls2N10qIHBwYzY0KiBhYXJjaDY0KiIK IGNyZWF0ZV93cmtzcmM9eWVzCiBidWlsZF9zdHlsZT1xbWFrZQpAQCAtMzIsOCArMzIsOCBAQCBs aWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyLCBMR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJo dHRwczovL3F0LmlvLyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL3F0L3F0d2ViZW5n aW5lL2FyY2hpdmUvdiR7X3ZlcnNpb259LnRhci5negogIGh0dHBzOi8vZ2l0aHViLmNvbS9xdC9x dHdlYmVuZ2luZS1jaHJvbWl1bS9hcmNoaXZlLyR7X2Nocm9taXVtX2NvbW1pdH0udGFyLmd6Igot Y2hlY2tzdW09ImFhNzQ2NjM1NmM0NTBjNWY1ODcwZjk3OWI5M2NkN2U3ZTYyZGExMTY1YzMyOGZm Y2FiMWE5OTI4ZGIxOGFkNjcKLSA2ZjQ3ZWQ4YWI4Y2MwNjI0MTFmNmYyMDZkYTYzNTNiYzgyNjNk NmVkNmQ2MjkwYzY4OWEwNWMwMWQ5MWY2NDZiIgorY2hlY2tzdW09IjRiNTk4MzhlZDc1ZWY3ODhi NTllMWU0MTI1MzVhMGU0MmRkOWQzMTE2NjFmZGVhZGIxOTFiNTgxYmE4MTVjNjMKKyBhOTE2ODY1 NjJiMWQ0ZThiMjIwZTBiYmNiYWI1ZmViNjQ2MzBlMmRlOTc0YjM1YWMwMzRiZjM4OGFmNzcxYTZj IgogCiBub19nZW5lcmljX3BrZ2NvbmZpZ19saW5rPXllcwogYnVpbGRfb3B0aW9ucz0ic25kaW8g cGlwZXdpcmUiCgpGcm9tIDlkOWUzYWYwNDE4MzY2OGYyYWEzNmRiNjZhMDk0ZWU1OWYyNGNjZGUg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3 NC8xMTNdIHF0NTogdXBkYXRlIHRvIDUuMTUuOAoKLS0tCiAuLi5lcnl3aGVyZS1vcGVuc291cmNl LXNyYy01LjE1Ljgta2Y1LTEucGF0Y2ggfCAxMjkxMyArKysrKysrKysrKysrKysrCiBzcmNwa2dz L3F0NS90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxMiArLQogMiBmaWxl cyBjaGFuZ2VkLCAxMjkxOSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvcXQtZXZlcnl3aGVyZS1vcGVuc291cmNlLXNy Yy01LjE1Ljgta2Y1LTEucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzL3F0 LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoIGIvc3JjcGtncy9x dDUvcGF0Y2hlcy9xdC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1rZjUtMS5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk2NmM5OGJjZDNiYgot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvcXQtZXZlcnl3aGVyZS1vcGVu c291cmNlLXNyYy01LjE1Ljgta2Y1LTEucGF0Y2gKQEAgLTAsMCArMSwxMjkxMyBAQAorU3VibWl0 dGVkIEJ5OiAgICAgICAgICAgIFBpZXJyZSBMYWJhc3RpZSA8cGllcnJlX2RvdF9sYWJhc3RpZV9h dF9uZXVmX2RvdF9mcj4KK0RhdGU6ICAgICAgICAgICAgICAgICAgICAyMDIzLTAxLTA1CitJbml0 aWFsIFBhY2thZ2UgVmVyc2lvbjogNS4xNS44CitVcHN0cmVhbSBTdGF0dXM6ICAgICAgICAgQXBw bGllZCAoYWNjb3JkaW5nIHRvIEtERSkKK09yaWdpbjogICAgICAgICAgICAgICAgICBLREUgcGF0 Y2ggc2V0CitEZXNjcmlwdGlvbjogICAgICAgICAgICAgUGF0Y2ggc2V0IG1haW50YWluZWQgYnkg dGhlIEtERSBmb2xrcworc2VlIGh0dHBzOi8vZG90LmtkZS5vcmcvMjAyMS8wNC8wNi9hbm5vdW5j aW5nLWtkZXMtcXQtNS1wYXRjaC1jb2xsZWN0aW9uCitQYXRjaCBnZW5lcmF0ZWQgdXNpbmcgdGhl IHByb2NlZHVyZSBpbgoraHR0cHM6Ly93aWtpLmxpbnV4ZnJvbXNjcmF0Y2gub3JnL2JsZnMvdGlj a2V0LzE3NDc2I2NvbW1lbnQ6MworCitTdWJtb2R1bGUgcXRiYXNlIDRlZTRmYzE4Li45Y2Y1ODZk NjoKK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9jb21tb24vYW5kcm9pZC9xcGxhdGZvcm1k ZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9jb21tb24vYW5kcm9pZC9xcGxhdGZvcm1kZWZzLmgKK2lu ZGV4IGY3NWJjNDA5M2IuLjJiZDU5NDEwZDQgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9j b21tb24vYW5kcm9pZC9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2NvbW1v bi9hbmRyb2lkL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTE0NCwxMSArMTQ0LDcgQEAKKyAjZGVmaW5l IFFUX1NJR05BTF9BUkdTICAgICAgICAgIGludAorICNkZWZpbmUgUVRfU0lHTkFMX0lHTk9SRSAg ICAgICAgU0lHX0lHTgorIAorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+ PSAyKQorICNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UK Ky0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAorLSNlbmRpZgorIAorICNpZiBk ZWZpbmVkKF9YT1BFTl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5l IFFUX1NOUFJJTlRGICAgICAgICAgICAgIDo6c25wcmludGYKK2RpZmYgLS1naXQgYS9xdGJhc2Uv bWtzcGVjcy9mZWF0dXJlcy9tYWMvc2RrLm1rIGIvcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvbWFj L3Nkay5taworaW5kZXggZjMwYjU4MzBiNC4uYTMyY2VhY2I2YyAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9ta3NwZWNzL2ZlYXR1cmVzL21hYy9zZGsubWsKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2ZlYXR1 cmVzL21hYy9zZGsubWsKK0BAIC0xLDYgKzEsNiBAQAorIAorIGlmZXEgKCQoUVRfTUFDX1NES19O T19WRVJTSU9OX0NIRUNLKSwpCistICAgIENIRUNLX1NES19DT01NQU5EID0gL3Vzci9iaW4veGNy dW4gLS1zZGsgJChFWFBPUlRfUU1BS0VfTUFDX1NESykgLXNob3ctc2RrLXZlcnNpb24gMj4mMQor KyAgICBDSEVDS19TREtfQ09NTUFORCA9IC91c3IvYmluL3hjcnVuIC0tc2RrICQoRVhQT1JUX1FN QUtFX01BQ19TREspIC1zaG93LXNkay12ZXJzaW9uIDI+L2Rldi9udWxsCisgICAgIENVUlJFTlRf TUFDX1NES19WRVJTSU9OIDo9ICQoc2hlbGwgREVWRUxPUEVSX0RJUj0kKEVYUE9SVF9RTUFLRV9Y Q09ERV9ERVZFTE9QRVJfUEFUSCkgJChDSEVDS19TREtfQ09NTUFORCkpCisgICAgIGlmbmVxICgk KENVUlJFTlRfTUFDX1NES19WRVJTSU9OKSwkKEVYUE9SVF9RTUFLRV9NQUNfU0RLX1ZFUlNJT04p KQorICAgICAgICAgIyBXZSBkb24ndCB3YW50IHRvIGNvbXBsYWluIGFib3V0IG91dCBvZiBkYXRl IFNESyB1bmxlc3MgdGhlIHRhcmdldCBuZWVkcyB0byBiZSByZW1hZGUuCitkaWZmIC0tZ2l0IGEv cXRiYXNlL21rc3BlY3MvbGludXgtY2xhbmcvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3Bl Y3MvbGludXgtY2xhbmcvcXBsYXRmb3JtZGVmcy5oCitpbmRleCBhODE4ZDk3M2YwLi5jMWFiNzJm YmM2IDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvbGludXgtY2xhbmcvcXBsYXRmb3JtZGVm cy5oCisrKysgYi9xdGJhc2UvbWtzcGVjcy9saW51eC1jbGFuZy9xcGxhdGZvcm1kZWZzLmgKK0BA IC03OSwxNCArNzksNiBAQAorICNkZWZpbmUgUVRfVVNFX1hPUEVOX0xGU19FWFRFTlNJT05TCisg I2luY2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCistI3VuZGVmIFFU X1NPQ0tMRU5fVAorLQorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+PSAy KQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UKKy0j ZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAorLSNlbmRpZgorLQorICNpZiBkZWZp bmVkKF9YT1BFTl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5lIFFU X1NOUFJJTlRGICAgICAgICAgICAgIDo6c25wcmludGYKKyAjZGVmaW5lIFFUX1ZTTlBSSU5URiAg ICAgICAgICAgIDo6dnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvbGludXgt ZysrL3FwbGF0Zm9ybWRlZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1k ZWZzLmgKK2luZGV4IDEzNTIzZjA3MDIuLjRkMjc1MGQ5ZWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uv bWtzcGVjcy9saW51eC1nKysvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVjcy9s aW51eC1nKysvcXBsYXRmb3JtZGVmcy5oCitAQCAtNzksMTQgKzc5LDYgQEAKKyAjZGVmaW5lIFFU X1VTRV9YT1BFTl9MRlNfRVhURU5TSU9OUworICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBs YXRmb3JtZGVmcy5oIgorIAorLSN1bmRlZiBRVF9TT0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5lZChf X0dMSUJDX18pICYmIChfX0dMSUJDX18gPCAyKQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAg ICAgICAgaW50CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2ts ZW5fdAorLSNlbmRpZgorLQorICNpZiBkZWZpbmVkKF9YT1BFTl9TT1VSQ0UpICYmIChfWE9QRU5f U09VUkNFID49IDUwMCkKKyAjZGVmaW5lIFFUX1NOUFJJTlRGICAgICAgICAgICAgIDo6c25wcmlu dGYKKyAjZGVmaW5lIFFUX1ZTTlBSSU5URiAgICAgICAgICAgIDo6dnNucHJpbnRmCitkaWZmIC0t Z2l0IGEvcXRiYXNlL21rc3BlY3MvbGludXgtbGx2bS9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2Uv bWtzcGVjcy9saW51eC1sbHZtL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggZGM3NTBhYjFlZi4uZDNj YzM5YjQ3ZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBsYXRmb3Jt ZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVjcy9saW51eC1sbHZtL3FwbGF0Zm9ybWRlZnMuaAor QEAgLTgwLDE0ICs4MCw2IEBACisgI2RlZmluZSBRVF9VU0VfWE9QRU5fTEZTX0VYVEVOU0lPTlMK KyAjaW5jbHVkZSAiLi4vY29tbW9uL3Bvc2l4L3FwbGF0Zm9ybWRlZnMuaCIKKyAKKy0jdW5kZWYg UVRfU09DS0xFTl9UCistCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fID49 IDIpCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBzb2NrbGVuX3QKKy0jZWxzZQor LSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50CistI2VuZGlmCistCisgI2lmIGRl ZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9TT1VSQ0UgPj0gNTAwKQorICNkZWZpbmUg UVRfU05QUklOVEYgICAgICAgICAgICAgOjpzbnByaW50ZgorICNkZWZpbmUgUVRfVlNOUFJJTlRG ICAgICAgICAgICAgOjp2c25wcmludGYKK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9saW51 eC1sc2ItZysrL3FwbGF0Zm9ybWRlZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxzYi1nKysv cXBsYXRmb3JtZGVmcy5oCitpbmRleCA0YzRlNTNkYTJhLi44M2JhZmZiM2UzIDEwMDY0NAorLS0t IGEvcXRiYXNlL21rc3BlY3MvbGludXgtbHNiLWcrKy9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0 YmFzZS9ta3NwZWNzL2xpbnV4LWxzYi1nKysvcXBsYXRmb3JtZGVmcy5oCitAQCAtODUsMTYgKzg1 LDkgQEAKKyAjaW5jbHVkZSAiLi4vY29tbW9uL3Bvc2l4L3FwbGF0Zm9ybWRlZnMuaCIKKyAKKyAj dW5kZWYgUVRfT1BFTl9MQVJHRUZJTEUKKy0jdW5kZWYgUVRfU09DS0xFTl9UCisgCisgI2RlZmlu ZSBRVF9PUEVOX0xBUkdFRklMRSAgICAgICAwCisgCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAm JiAoX19HTElCQ19fID49IDIpCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBzb2Nr bGVuX3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50CistI2Vu ZGlmCistCisgI2lmbmRlZiBTSU9DR0lGQlJEQUREUgorICMgIGRlZmluZSBTSU9DR0lGQlJEQURE UiAweDg5MTkKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9seW54b3MtZysr L3FwbGF0Zm9ybWRlZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2x5bnhvcy1nKysvcXBsYXRmb3JtZGVm cy5oCitpbmRleCA0MzM5ZWEyYjIzLi42MDA3YWYwMDU1IDEwMDY0NAorLS0tIGEvcXRiYXNlL21r c3BlY3MvbHlueG9zLWcrKy9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2x5 bnhvcy1nKysvcXBsYXRmb3JtZGVmcy5oCitAQCAtNzIsMTQgKzcyLDYgQEAKKyAKKyAjaW5jbHVk ZSAiLi4vY29tbW9uL3Bvc2l4L3FwbGF0Zm9ybWRlZnMuaCIKKyAKKy0jdW5kZWYgUVRfU09DS0xF Tl9UCistCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fID49IDIpCistI2Rl ZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBzb2NrbGVuX3QKKy0jZWxzZQorLSNkZWZpbmUg UVRfU09DS0xFTl9UICAgICAgICAgICAgaW50CistI2VuZGlmCistCisgI2lmIGRlZmluZWQoX1hP UEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9TT1VSQ0UgPj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklO VEYgICAgICAgICAgICAgOjpzbnByaW50ZgorICNkZWZpbmUgUVRfVlNOUFJJTlRGICAgICAgICAg ICAgOjp2c25wcmludGYKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjLzNyZHBhcnR5L2FuZ2xlL3Ny Yy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwIGIvcXRiYXNlL3NyYy8zcmRwYXJ0eS9hbmds ZS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcAoraW5kZXggYzNjMTg0MjU4Zi4uMzJh ZjNmOGYyOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvM3JkcGFydHkvYW5nbGUvc3JjL2xpYkFO R0xFL0hhbmRsZUFsbG9jYXRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvM3JkcGFydHkvYW5nbGUv c3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5jcHAKK0BAIC0xMCw2ICsxMCw3IEBACisgI2lu Y2x1ZGUgImxpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5oIgorIAorICNpbmNsdWRlIDxhbGdvcml0 aG0+CisrI2luY2x1ZGUgPGxpbWl0cz4KKyAKKyAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisg CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy8zcmRwYXJ0eS9mb3JrZmQvZm9ya2ZkX2xpbnV4LmMg Yi9xdGJhc2Uvc3JjLzNyZHBhcnR5L2ZvcmtmZC9mb3JrZmRfbGludXguYworaW5kZXggZmZlMGU5 YTVlMi4uYjFmNTQwOGQxMSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvM3JkcGFydHkvZm9ya2Zk L2ZvcmtmZF9saW51eC5jCisrKysgYi9xdGJhc2Uvc3JjLzNyZHBhcnR5L2ZvcmtmZC9mb3JrZmRf bGludXguYworQEAgLTgyLDcgKzgyLDggQEAgc3RhdGljIGludCBzeXNfY2xvbmUodW5zaWduZWQg bG9uZyBjbG9uZWZsYWdzLCBpbnQgKnB0aWQpCisgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfY2xv bmUsIGNsb25lZmxhZ3MsIGNoaWxkX3N0YWNrLCBzdGFja19zaXplLCBwdGlkLCBuZXd0bHMsIGN0 aWQpOworICNlbGlmIGRlZmluZWQoX19hcmNfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZp bmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCisgICAgIGRlZmluZWQo X19uZHMzMl9fKSB8fCBkZWZpbmVkKF9faHBwYV9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwY19fKSB8 fCBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAgIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVm aW5lZChfX3h0ZW5zYV9fKSB8fCBkZWZpbmVkKF9fYWxwaGFfXykgfHwgZGVmaW5lZChfX3Jpc2N2 KQorKyAgICBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX194dGVuc2FfXykgfHwgZGVm aW5lZChfX2FscGhhX18pIHx8IGRlZmluZWQoX19yaXNjdikgfHwgXAorKyAgICBkZWZpbmVkKF9f bG9vbmdhcmNoX18pCisgICAgIC8qIGN0aWQgYW5kIG5ld3RscyBhcmUgaW52ZXJ0ZWQgb24gQ09O RklHX0NMT05FX0JBQ0tXQVJEUyBhcmNoaXRlY3R1cmVzLAorICAgICAgKiBidXQgc2luY2UgYm90 aCB2YWx1ZXMgYXJlIDAsIHRoZXJlJ3Mgbm8gaGFybS4gKi8KKyAgICAgcmV0dXJuIHN5c2NhbGwo X19OUl9jbG9uZSwgY2xvbmVmbGFncywgY2hpbGRfc3RhY2ssIHB0aWQsIGN0aWQsIG5ld3Rscyk7 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9hbmRyb2lkL2phci9zcmMvb3JnL3F0cHJvamVjdC9x dDUvYW5kcm9pZC9RdE5hdGl2ZS5qYXZhIGIvcXRiYXNlL3NyYy9hbmRyb2lkL2phci9zcmMvb3Jn L3F0cHJvamVjdC9xdDUvYW5kcm9pZC9RdE5hdGl2ZS5qYXZhCitpbmRleCA1NzkyYjViMmY1Li4y Zjc0NzUwZmNmIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9hbmRyb2lkL2phci9zcmMvb3JnL3F0 cHJvamVjdC9xdDUvYW5kcm9pZC9RdE5hdGl2ZS5qYXZhCisrKysgYi9xdGJhc2Uvc3JjL2FuZHJv aWQvamFyL3NyYy9vcmcvcXRwcm9qZWN0L3F0NS9hbmRyb2lkL1F0TmF0aXZlLmphdmEKK0BAIC0x MTYsNiArMTE2LDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgIHB1YmxpYyBzdGF0aWMg UXRUaHJlYWQgbV9xdFRocmVhZCA9IG5ldyBRdFRocmVhZCgpOworICAgICBwcml2YXRlIHN0YXRp YyBIYXNoTWFwPFN0cmluZywgVXJpPiBtX2NhY2hlZFVyaXMgPSBuZXcgSGFzaE1hcDxTdHJpbmcs IFVyaT4oKTsKKyAgICAgcHJpdmF0ZSBzdGF0aWMgQXJyYXlMaXN0PFN0cmluZz4gbV9rbm93bkRp cnMgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKKysgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwg U3RyaW5nIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSA9ICJObyBwZXJtaXNzaW9ucyB0byBvcGVu IFVyaSI7CisgCisgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFJ1bm5hYmxlIHJ1blBlbmRpbmdD cHBSdW5uYWJsZXNSdW5uYWJsZSA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgIEBPdmVycmlk ZQorQEAgLTE5MywxMSArMTk0LDEwIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGl0ZXJVcmk7CisgICAgICAgICAgICAgfQorIAorLSAgICAgICAg ICAgIC8vIEFuZHJvaWQgNiBhbmQgZWFybGllciBjb3VsZCBzdGlsbCBtYW5hZ2UgdG8gb3BlbiB0 aGUgZmlsZSBzbyB3ZSBjYW4gcmV0dXJuIHRoZQorLSAgICAgICAgICAgIC8vIHBhcnNlZCB1cmkg aGVyZQorLSAgICAgICAgICAgIGlmIChCdWlsZC5WRVJTSU9OLlNES19JTlQgPCAyNCkKKy0gICAg ICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFVyaTsKKy0gICAgICAgICAgICByZXR1cm4gbnVsbDsK KysgICAgICAgICAgICAvLyBpZiB3ZSBvbmx5IGhhdmUgdHJhbnNpZW50IHBlcm1pc3Npb25zIG9u IHVyaSBhbGwgdGhlIGFib3ZlIHdpbGwgZmFpbCwKKysgICAgICAgICAgICAvLyBidXQgd2Ugd2ls bCBiZSBhYmxlIHRvIHJlYWQgdGhlIGZpbGUgYW55d2F5LCBzbyBjb250aW51ZSB3aXRoIHVyaSBo ZXJlIGFueXdheQorKyAgICAgICAgICAgIC8vIGFuZCBjaGVjayBmb3IgU2VjdXJpdHlFeGNlcHRp b25zIGxhdGVyCisrICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFVyaTsKKyAgICAgICAgIH0gY2F0 Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFj ZSgpOworICAgICAgICAgICAgIHJldHVybiBudWxsOworQEAgLTI0NCw3ICsyNDQsNyBAQCBwdWJs aWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgIGludCBlcnJvciA9IC0xOworIAorICAgICAgICAg aWYgKHVyaSA9PSBudWxsKSB7CistICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJvcGVuRmRGb3JD b250ZW50VXJsKCk6IE5vIHBlcm1pc3Npb25zIHRvIG9wZW4gVXJpIik7CisrICAgICAgICAgICAg TG9nLmUoUXRUQUcsICJvcGVuRmRGb3JDb250ZW50VXJsKCk6ICIgKyBOb1Blcm1pc3Npb25FcnJv ck1lc3NhZ2UpOworICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgIH0KKyAKK0BA IC0yNTQsMTIgKzI1NCwxMyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgICAgICBy ZXR1cm4gZmREZXNjLmRldGFjaEZkKCk7CisgICAgICAgICB9IGNhdGNoIChGaWxlTm90Rm91bmRF eGNlcHRpb24gZSkgeworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAg ICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhj ZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywgIm9wZW5GZEZvckNvbnRlbnRV cmwoKTogSW52YWxpZCBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwor LSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKysgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhj ZXB0aW9uIGUpIHsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JN ZXNzYWdlKTsKKyAgICAgICAgIH0KKysgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgfQorIAor ICAgICBwdWJsaWMgc3RhdGljIGxvbmcgZ2V0U2l6ZShDb250ZXh0IGNvbnRleHQsIFN0cmluZyBj b250ZW50VXJsKQorQEAgLTI3MCw3ICsyNzEsNyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAg ICAgICAgICAgICB1cmkgPSBnZXRVcmlXaXRoVmFsaWRQZXJtaXNzaW9uKGNvbnRleHQsIGNvbnRl bnRVcmwsICJyIik7CisgCisgICAgICAgICBpZiAodXJpID09IG51bGwpIHsKKy0gICAgICAgICAg ICBMb2cuZShRdFRBRywgImdldFNpemUoKTogTm8gcGVybWlzc2lvbnMgdG8gb3BlbiBVcmkiKTsK KysgICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAg ICAgICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgICAgIH0gZWxzZSBpZiAoIW1fY2FjaGVkVXJp cy5jb250YWluc0tleShjb250ZW50VXJsKSkgeworICAgICAgICAgICAgIG1fY2FjaGVkVXJpcy5w dXQoY29udGVudFVybCwgdXJpKTsKK0BAIC0yODgsMTIgKzI4OSwxMyBAQCBwdWJsaWMgY2xhc3Mg UXROYXRpdmUKKyAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7 CisgICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJnZXRTaXplKCk6IEludmFsaWQgVXJpIik7Cisg ICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gc2l6 ZTsKKyAgICAgICAgIH0gIGNhdGNoIChVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiBlKSB7 CisgICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJnZXRTaXplKCk6IFVuc3VwcG9ydGVkIG9wZXJh dGlvbiBmb3IgZ2l2ZW4gVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsK Ky0gICAgICAgICAgICByZXR1cm4gc2l6ZTsKKysgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhj ZXB0aW9uIGUpIHsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JN ZXNzYWdlKTsKKyAgICAgICAgIH0KKysgICAgICAgIHJldHVybiBzaXplOworICAgICB9CisgCisg ICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBjaGVja0ZpbGVFeGlzdHMoQ29udGV4dCBjb250ZXh0 LCBTdHJpbmcgY29udGVudFVybCkKK0BAIC0zMDMsNyArMzA1LDcgQEAgcHVibGljIGNsYXNzIFF0 TmF0aXZlCisgICAgICAgICBpZiAodXJpID09IG51bGwpCisgICAgICAgICAgICAgdXJpID0gZ2V0 VXJpV2l0aFZhbGlkUGVybWlzc2lvbihjb250ZXh0LCBjb250ZW50VXJsLCAiciIpOworICAgICAg ICAgaWYgKHVyaSA9PSBudWxsKSB7CistICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJjaGVja0Zp bGVFeGlzdHMoKTogTm8gcGVybWlzc2lvbnMgdG8gb3BlbiBVcmkiKTsKKysgICAgICAgICAgICBM b2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICByZXR1 cm4gZXhpc3RzOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBpZiAoIW1fY2FjaGVk VXJpcy5jb250YWluc0tleShjb250ZW50VXJsKSkKK0BAIC0zMjEsMTIgKzMyMywxMyBAQCBwdWJs aWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2Vw dGlvbiBlKSB7CisgICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJjaGVja0ZpbGVFeGlzdHMoKTog SW52YWxpZCBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAg ICAgICAgIHJldHVybiBleGlzdHM7CisgICAgICAgICB9IGNhdGNoIChVbnN1cHBvcnRlZE9wZXJh dGlvbkV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJjaGVja0ZpbGVF eGlzdHMoKTogVW5zdXBwb3J0ZWQgb3BlcmF0aW9uIGZvciBnaXZlbiBVcmkiKTsKKyAgICAgICAg ICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKysg ICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsKKysgICAgICAgICAgICBMb2cu ZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgIH0KKysgICAgICAg IHJldHVybiBleGlzdHM7CisgICAgIH0KKyAKKyAgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGNo ZWNrSWZXcml0YWJsZShDb250ZXh0IGNvbnRleHQsIFN0cmluZyBjb250ZW50VXJsKQorQEAgLTM0 NCw3ICszNDcsNyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgICAgICB1cmkgPSBn ZXRVcmlXaXRoVmFsaWRQZXJtaXNzaW9uKGNvbnRleHQsIGNvbnRlbnRVcmwsICJyIik7CisgICAg ICAgICB9CisgICAgICAgICBpZiAodXJpID09IG51bGwpIHsKKy0gICAgICAgICAgICBMb2cuZShR dFRBRywgImlzRGlyKCk6IE5vIHBlcm1pc3Npb25zIHRvIG9wZW4gVXJpIik7CisrICAgICAgICAg ICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAg cmV0dXJuIGlzRGlyOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBpZiAoIW1fY2Fj aGVkVXJpcy5jb250YWluc0tleShjb250ZW50VXJsKSkKK0BAIC0zNzQsMTIgKzM3NywxMyBAQCBw dWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4 Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJjaGVja0lmRGlyKCk6IElu dmFsaWQgVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAg ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICB9IGNhdGNoIChVbnN1cHBvcnRlZE9wZXJhdGlv bkV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJjaGVja0lmRGlyKCk6 IFVuc3VwcG9ydGVkIG9wZXJhdGlvbiBmb3IgZ2l2ZW4gVXJpIik7CisgICAgICAgICAgICAgZS5w cmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICB9 IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcs IE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICB9CisrICAgICAgICByZXR1cm4g ZmFsc2U7CisgICAgIH0KKyAgICAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBsaXN0Q29udGVudHNG cm9tVHJlZVVyaShDb250ZXh0IGNvbnRleHQsIFN0cmluZyBjb250ZW50VXJsKQorICAgICB7Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHJlZHVjZWtlcm5l bC5oIGIvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHJlZHVjZWtlcm5lbC5oCitp bmRleCA4ZjlhOTM4OTUyLi5hOThkZWRlZjJlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb25j dXJyZW50L3F0Y29uY3VycmVudHJlZHVjZWtlcm5lbC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvbmN1 cnJlbnQvcXRjb25jdXJyZW50cmVkdWNla2VybmVsLmgKK0BAIC0yMTIsMTEgKzIxMiwxMyBAQCBw dWJsaWM6CisgCisgICAgIGlubGluZSBib29sIHNob3VsZFRocm90dGxlKCkKKyAgICAgeworKyAg ICAgICAgc3RkOjpsb2NrX2d1YXJkPFFNdXRleD4gbG9ja2VyKG11dGV4KTsKKyAgICAgICAgIHJl dHVybiAocmVzdWx0c01hcFNpemUgPiAoUmVkdWNlUXVldWVUaHJvdHRsZUxpbWl0ICogdGhyZWFk Q291bnQpKTsKKyAgICAgfQorIAorICAgICBpbmxpbmUgYm9vbCBzaG91bGRTdGFydFRocmVhZCgp CisgICAgIHsKKysgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxRTXV0ZXg+IGxvY2tlcihtdXRleCk7 CisgICAgICAgICByZXR1cm4gKHJlc3VsdHNNYXBTaXplIDw9IChSZWR1Y2VRdWV1ZVN0YXJ0TGlt aXQgKiB0aHJlYWRDb3VudCkpOworICAgICB9CisgfTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcCBiL3F0YmFzZS9zcmMvY29u Y3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwCitpbmRleCBlYTZjZTNhYzQyLi43 ZjkxYTJiYTY4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVu dHRocmVhZGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJl bnR0aHJlYWRlbmdpbmUuY3BwCitAQCAtMTc2LDYgKzE3NiwzOSBAQCB2b2lkIFRocmVhZEVuZ2lu ZUJhc2U6OnN0YXJ0U2luZ2xlVGhyZWFkZWQoKQorICAgICBmaW5pc2goKTsKKyB9CisgCisrdm9p ZCBUaHJlYWRFbmdpbmVCYXNlOjpzdGFydEJsb2NraW5nKCkKKyt7CisrICAgIHN0YXJ0KCk7Cisr ICAgIGJhcnJpZXIuYWNxdWlyZSgpOworKyAgICBzdGFydFRocmVhZHMoKTsKKysKKysgICAgYm9v bCB0aHJvdHRsZWQgPSBmYWxzZTsKKysjaWZuZGVmIFFUX05PX0VYQ0VQVElPTlMKKysgICAgdHJ5 IHsKKysjZW5kaWYKKysgICAgICAgIHdoaWxlICh0aHJlYWRGdW5jdGlvbigpID09IFRocm90dGxl VGhyZWFkKSB7CisrICAgICAgICAgICAgaWYgKHRocmVhZFRocm90dGxlRXhpdCgpKSB7CisrICAg ICAgICAgICAgICAgIHRocm90dGxlZCA9IHRydWU7CisrICAgICAgICAgICAgICAgIGJyZWFrOwor KyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysjaWZuZGVmIFFUX05PX0VYQ0VQVElPTlMKKysg ICAgfSBjYXRjaCAoUUV4Y2VwdGlvbiAmZSkgeworKyAgICAgICAgaGFuZGxlRXhjZXB0aW9uKGUp OworKyAgICB9IGNhdGNoICguLi4pIHsKKysgICAgICAgIGhhbmRsZUV4Y2VwdGlvbihRVW5oYW5k bGVkRXhjZXB0aW9uKCkpOworKyAgICB9CisrI2VuZGlmCisrCisrICAgIGlmICh0aHJvdHRsZWQg PT0gZmFsc2UpIHsKKysgICAgICAgIGJhcnJpZXIucmVsZWFzZSgpOworKyAgICB9CisrCisrICAg IGJhcnJpZXIud2FpdCgpOworKyAgICBmaW5pc2goKTsKKysgICAgZXhjZXB0aW9uU3RvcmUudGhy b3dQb3NzaWJsZUV4Y2VwdGlvbigpOworK30KKysKKyB2b2lkIFRocmVhZEVuZ2luZUJhc2U6OnN0 YXJ0VGhyZWFkKCkKKyB7CisgICAgIHN0YXJ0VGhyZWFkSW50ZXJuYWwoKTsKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmggYi9xdGJh c2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmgKK2luZGV4IDdjMzBj ZWJkYmMuLmE0Yzg1NDhjYzQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRj b25jdXJyZW50dGhyZWFkZW5naW5lLmgKKysrKyBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNv bmN1cnJlbnR0aHJlYWRlbmdpbmUuaAorQEAgLTkxLDYgKzkxLDcgQEAgcHVibGljOgorICAgICBU aHJlYWRFbmdpbmVCYXNlKCk7CisgICAgIHZpcnR1YWwgflRocmVhZEVuZ2luZUJhc2UoKTsKKyAg ICAgdm9pZCBzdGFydFNpbmdsZVRocmVhZGVkKCk7CisrICAgIHZvaWQgc3RhcnRCbG9ja2luZygp OworICAgICB2b2lkIHN0YXJ0VGhyZWFkKCk7CisgICAgIGJvb2wgaXNDYW5jZWxlZCgpOworICAg ICB2b2lkIHdhaXRGb3JSZXN1bWUoKTsKK0BAIC0xNDMsNiArMTQ0LDE1IEBAIHB1YmxpYzoKKyAg ICAgICAgIHJldHVybiByZXN1bHQoKTsKKyAgICAgfQorIAorKyAgICAvLyBSdW5zIHRoZSB1c2Vy IGFsZ29yaXRobSB1c2luZyBtdWx0aXBsZSB0aHJlYWRzLgorKyAgICAvLyBUaGlzIGZ1bmN0aW9u IGJsb2NrcyB1bnRpbCB0aGUgYWxnb3JpdGhtIGlzIGZpbmlzaGVkLAorKyAgICAvLyBhbmQgdGhl biByZXR1cm5zIHRoZSByZXN1bHQuCisrICAgIFQgKnN0YXJ0QmxvY2tpbmcoKQorKyAgICB7Cisr ICAgICAgICBUaHJlYWRFbmdpbmVCYXNlOjpzdGFydEJsb2NraW5nKCk7CisrICAgICAgICByZXR1 cm4gcmVzdWx0KCk7CisrICAgIH0KKysKKyAgICAgLy8gUnVucyB0aGUgdXNlciBhbGdvcml0aG0g dXNpbmcgbXVsdGlwbGUgdGhyZWFkcy4KKyAgICAgLy8gRG9lcyBub3QgYmxvY2ssIHJldHVybnMg YSBmdXR1cmUuCisgICAgIFFGdXR1cmU8VD4gc3RhcnRBc3luY2hyb25vdXNseSgpCitAQCAtMjIz LDYgKzIzMywxMyBAQCBjbGFzcyBUaHJlYWRFbmdpbmVTdGFydGVyIDogcHVibGljIFRocmVhZEVu Z2luZVN0YXJ0ZXJCYXNlPFQ+CisgcHVibGljOgorICAgICBUaHJlYWRFbmdpbmVTdGFydGVyKFR5 cGVkVGhyZWFkRW5naW5lICplbmcpCisgICAgICAgICA6IEJhc2UoZW5nKSB7IH0KKysKKysgICAg VCBzdGFydEJsb2NraW5nKCkKKysgICAgeworKyAgICAgICAgVCB0ID0gKnRoaXMtPnRocmVhZEVu Z2luZS0+c3RhcnRCbG9ja2luZygpOworKyAgICAgICAgZGVsZXRlIHRoaXMtPnRocmVhZEVuZ2lu ZTsKKysgICAgICAgIHJldHVybiB0OworKyAgICB9CisgfTsKKyAKKyAvLyBGdWxsIHRlbXBsYXRl IHNwZWNpYWxpemF0aW9uIHdoZXJlIFQgaXMgdm9pZC4KK0BAIC0yMzIsNiArMjQ5LDEyIEBAIGNs YXNzIFRocmVhZEVuZ2luZVN0YXJ0ZXI8dm9pZD4gOiBwdWJsaWMgVGhyZWFkRW5naW5lU3RhcnRl ckJhc2U8dm9pZD4KKyBwdWJsaWM6CisgICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXIoVGhyZWFkRW5n aW5lPHZvaWQ+ICpfdGhyZWFkRW5naW5lKQorICAgICAgICAgOiBUaHJlYWRFbmdpbmVTdGFydGVy QmFzZTx2b2lkPihfdGhyZWFkRW5naW5lKSB7fQorKworKyAgICB2b2lkIHN0YXJ0QmxvY2tpbmco KQorKyAgICB7CisrICAgICAgICB0aGlzLT50aHJlYWRFbmdpbmUtPnN0YXJ0QmxvY2tpbmcoKTsK KysgICAgICAgIGRlbGV0ZSB0aGlzLT50aHJlYWRFbmdpbmU7CisrICAgIH0KKyB9OworIAorIC8v ISBbcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLTFdCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9j b3JlbGliL2FuaW1hdGlvbi9xdmFyaWFudGFuaW1hdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvYW5pbWF0aW9uL3F2YXJpYW50YW5pbWF0aW9uLmNwcAoraW5kZXggOThiMDJmMDIwMi4uZWFj MTUyNDEwNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9hbmltYXRpb24vcXZhcmlh bnRhbmltYXRpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvYW5pbWF0aW9uL3F2YXJp YW50YW5pbWF0aW9uLmNwcAorQEAgLTI3Niw3ICsyNzYsOSBAQCB2b2lkIFFWYXJpYW50QW5pbWF0 aW9uUHJpdmF0ZTo6c2V0Q3VycmVudFZhbHVlRm9yUHJvZ3Jlc3MoY29uc3QgcXJlYWwgcHJvZ3Jl c3MpCisgCisgICAgIGNvbnN0IHFyZWFsIHN0YXJ0UHJvZ3Jlc3MgPSBjdXJyZW50SW50ZXJ2YWwu c3RhcnQuZmlyc3Q7CisgICAgIGNvbnN0IHFyZWFsIGVuZFByb2dyZXNzID0gY3VycmVudEludGVy dmFsLmVuZC5maXJzdDsKKy0gICAgY29uc3QgcXJlYWwgbG9jYWxQcm9ncmVzcyA9IChwcm9ncmVz cyAtIHN0YXJ0UHJvZ3Jlc3MpIC8gKGVuZFByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcyk7CisrICAg IGNvbnN0IHFyZWFsIGxvY2FsUHJvZ3Jlc3MgPQorKyAgICAgICAgICAgIHFJc051bGwocHJvZ3Jl c3MgLSBzdGFydFByb2dyZXNzKSA/IDAuMCAvLyBhdm9pZCAwLzAgYmVsb3cKKysgICAgICAgICAg ICAvKiBlbHNlICovICAgICAgICAgICAgICAgICAgICAgICAgOiAocHJvZ3Jlc3MgLSBzdGFydFBy b2dyZXNzKSAvIChlbmRQcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jlc3MpOworIAorICAgICBRVmFyaWFu dCByZXQgPSBxLT5pbnRlcnBvbGF0ZWQoY3VycmVudEludGVydmFsLnN0YXJ0LnNlY29uZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbnRlcnZhbC5lbmQuc2Vj b25kLAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcW5hbWVzcGFjZS5o IGIvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xbmFtZXNwYWNlLmgKK2luZGV4IGFkNDE1MGIz MTcuLmJmMTliMTYyN2IgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3Fu YW1lc3BhY2UuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xbmFtZXNwYWNlLmgK K0BAIC0xODY0LDcgKzE4NjQsNyBAQCBwdWJsaWM6CisgICAgIFFUX1FfRU5VTShUaW1lclR5cGUp CisgICAgIFFUX1FfRU5VTShTY3JvbGxQaGFzZSkKKyAgICAgUVRfUV9FTlVNKE1vdXNlRXZlbnRT b3VyY2UpCistICAgIFFUX1FfRkxBRyhNb3VzZUV2ZW50RmxhZykKKysgICAgUVRfUV9GTEFHKE1v dXNlRXZlbnRGbGFncykKKyAgICAgUVRfUV9FTlVNKENoZWNrc3VtVHlwZSkKKyAgICAgUVRfUV9F TlVNKEhpZ2hEcGlTY2FsZUZhY3RvclJvdW5kaW5nUG9saWN5KQorICAgICBRVF9RX0VOVU0oVGFi Rm9jdXNCZWhhdmlvcikKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3Fy YW5kb20uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xcmFuZG9tLmNwcAoraW5kZXgg MTA2NzJjMWY5Mi4uMjVmODdjN2U2YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9n bG9iYWwvcXJhbmRvbS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcXJhbmRv bS5jcHAKK0BAIC0zODMsNyArMzgzLDYgQEAgc3RydWN0IFFSYW5kb21HZW5lcmF0b3I6OlN5c3Rl bUFuZEdsb2JhbEdlbmVyYXRvcnMKKyAKKyAgICAgICAgIGNvbnN0ZXhwciBTeXN0ZW1BbmRHbG9i YWxHZW5lcmF0b3JzIGcgPSB7fTsKKyAgICAgICAgIFFfVU5VU0VEKGcpOworLSAgICAgICAgUV9T VEFUSUNfQVNTRVJUKHN0ZDo6aXNfbGl0ZXJhbF90eXBlPFN5c3RlbUFuZEdsb2JhbEdlbmVyYXRv cnM+Ojp2YWx1ZSk7CisgI2VuZGlmCisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvaW8vcWJ1ZmZlci5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWJ1ZmZlci5j cHAKK2luZGV4IDU5NWZjZDI3MjQuLjAzMmMwZGRkNGIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvaW8vcWJ1ZmZlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xYnVm ZmVyLmNwcAorQEAgLTQxLDYgKzQxLDggQEAKKyAjaW5jbHVkZSA8UXRDb3JlL3FtZXRhb2JqZWN0 Lmg+CisgI2luY2x1ZGUgInByaXZhdGUvcWlvZGV2aWNlX3AuaCIKKyAKKysjaW5jbHVkZSA8bGlt aXRzPgorKworIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIC8qKiBRQnVmZmVyUHJpdmF0ZSAqKi8K K0BAIC0zNjYsNyArMzY4LDkgQEAgcWludDY0IFFCdWZmZXI6OnNpemUoKSBjb25zdAorIGJvb2wg UUJ1ZmZlcjo6c2VlayhxaW50NjQgcG9zKQorIHsKKyAgICAgUV9EKFFCdWZmZXIpOworLSAgICBp ZiAocG9zID4gZC0+YnVmLT5zaXplKCkgJiYgaXNXcml0YWJsZSgpKSB7CisrICAgIGNvbnN0IGF1 dG8gb2xkQnVmU2l6ZSA9IGQtPmJ1Zi0+c2l6ZSgpOworKyAgICBjb25zdGV4cHIgcWludDY0IE1h eFNlZWtQb3MgPSAoc3RkOjpudW1lcmljX2xpbWl0czxkZWNsdHlwZShvbGRCdWZTaXplKT46Om1h eCkoKTsKKysgICAgaWYgKHBvcyA8PSBNYXhTZWVrUG9zICYmIHBvcyA+IG9sZEJ1ZlNpemUgJiYg aXNXcml0YWJsZSgpKSB7CisgICAgICAgICBpZiAoc2VlayhkLT5idWYtPnNpemUoKSkpIHsKKyAg ICAgICAgICAgICBjb25zdCBxaW50NjQgZ2FwU2l6ZSA9IHBvcyAtIGQtPmJ1Zi0+c2l6ZSgpOwor ICAgICAgICAgICAgIGlmICh3cml0ZShRQnl0ZUFycmF5KGdhcFNpemUsIDApKSAhPSBnYXBTaXpl KSB7CitAQCAtMzc3LDcgKzM4MSw3IEBAIGJvb2wgUUJ1ZmZlcjo6c2VlayhxaW50NjQgcG9zKQor ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIH0KKyAgICAgfSBlbHNlIGlmIChw b3MgPiBkLT5idWYtPnNpemUoKSB8fCBwb3MgPCAwKSB7CistICAgICAgICBxV2FybmluZygiUUJ1 ZmZlcjo6c2VlazogSW52YWxpZCBwb3M6ICVkIiwgaW50KHBvcykpOworKyAgICAgICAgcVdhcm5p bmcoIlFCdWZmZXI6OnNlZWs6IEludmFsaWQgcG9zOiAlbGxkIiwgcG9zKTsKKyAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgfQorICAgICByZXR1cm4gUUlPRGV2aWNlOjpzZWVrKHBvcyk7Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtZW5naW5lX3dpbi5j cHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW1lbmdpbmVfd2luLmNwcAoraW5k ZXggODFkM2E3MTk4Ni4uYzg2ZWQxZjliMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxp Yi9pby9xZmlsZXN5c3RlbWVuZ2luZV93aW4uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv aW8vcWZpbGVzeXN0ZW1lbmdpbmVfd2luLmNwcAorQEAgLTY2NCwxNCArNjY0LDE0IEBAIFFGaWxl U3lzdGVtRW50cnkgUUZpbGVTeXN0ZW1FbmdpbmU6OmFic29sdXRlTmFtZShjb25zdCBRRmlsZVN5 c3RlbUVudHJ5ICZlbnRyeSkKKyAgICAgcmV0dXJuIFFGaWxlU3lzdGVtRW50cnkocmV0LCBRRmls ZVN5c3RlbUVudHJ5OjpGcm9tSW50ZXJuYWxQYXRoKCkpOworIH0KKyAKKy0jaWYgZGVmaW5lZChR X0NDX01JTkdXKSAmJiBXSU5WRVIgPCAweDA2MDIgLy8gIFdpbmRvd3MgOCBvbndhcmRzCisrI2lm IGRlZmluZWQoUV9DQ19NSU5HVykgJiYgV0lOVkVSIDwgMHgwNjAyICYmIF9XSU4zMl9XSU5OVCA8 IF9XSU4zMl9XSU5OVF9XSU44IC8vICBXaW5kb3dzIDggb253YXJkcworIAorIHR5cGVkZWYgc3Ry dWN0IF9GSUxFX0lEX0lORk8geworICAgICBVTE9OR0xPTkcgVm9sdW1lU2VyaWFsTnVtYmVyOwor ICAgICBGSUxFX0lEXzEyOCBGaWxlSWQ7CisgfSBGSUxFX0lEX0lORk8sICpQRklMRV9JRF9JTkZP OworIAorLSNlbmRpZiAvLyBpZiBkZWZpbmVkIChRX0NDX01JTkdXKSAmJiBXSU5WRVIgPCAweDA2 MDIKKysjZW5kaWYgLy8gaWYgZGVmaW5lZChRX0NDX01JTkdXKSAmJiBXSU5WRVIgPCAweDA2MDIg JiYgX1dJTjMyX1dJTk5UIDwgX1dJTjMyX1dJTk5UX1dJTjgKKyAKKyAvLyBGaWxlIElEIGZvciBX aW5kb3dzIHVwIHRvIHZlcnNpb24gNyBhbmQgRkFUMzIgZHJpdmVzCisgc3RhdGljIGlubGluZSBR Qnl0ZUFycmF5IGZpbGVJZChIQU5ETEUgaGFuZGxlKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Y29yZWxpYi9pby9xZmlsZXN5c3RlbXdhdGNoZXJfaW5vdGlmeS5jcHAgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvaW8vcWZpbGVzeXN0ZW13YXRjaGVyX2lub3RpZnkuY3BwCitpbmRleCA5NGQ5ZDA2YmNi Li4yN2UwYjEzYjBiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lz dGVtd2F0Y2hlcl9pbm90aWZ5LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxl c3lzdGVtd2F0Y2hlcl9pbm90aWZ5LmNwcAorQEAgLTM2Niw3ICszNjYsOSBAQCB2b2lkIFFJbm90 aWZ5RmlsZVN5c3RlbVdhdGNoZXJFbmdpbmU6OnJlYWRGcm9tSW5vdGlmeSgpCisgICAgIC8vIHFE ZWJ1ZygiUUlub3RpZnlGaWxlU3lzdGVtV2F0Y2hlckVuZ2luZTo6cmVhZEZyb21Jbm90aWZ5Iik7 CisgCisgICAgIGludCBidWZmU2l6ZSA9IDA7CistICAgIGlvY3RsKGlub3RpZnlGZCwgRklPTlJF QUQsIChjaGFyICopICZidWZmU2l6ZSk7CisrICAgIGlmIChpb2N0bChpbm90aWZ5RmQsIEZJT05S RUFELCAoY2hhciAqKSAmYnVmZlNpemUpID09IC0xIHx8IGJ1ZmZTaXplID09IDApCisrICAgICAg ICByZXR1cm47CisrCisgICAgIFFWYXJMZW5ndGhBcnJheTxjaGFyLCA0MDk2PiBidWZmZXIoYnVm ZlNpemUpOworICAgICBidWZmU2l6ZSA9IHJlYWQoaW5vdGlmeUZkLCBidWZmZXIuZGF0YSgpLCBi dWZmU2l6ZSk7CisgICAgIGNoYXIgKmF0ID0gYnVmZmVyLmRhdGEoKTsKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWxvY2tmaWxlX3dpbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvaW8vcWxvY2tmaWxlX3dpbi5jcHAKK2luZGV4IDI3N2Y4ZDQyMzAuLjM4ZWNlZjU1NTAgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWxvY2tmaWxlX3dpbi5jcHAKKysrKyBi L3F0YmFzZS9zcmMvY29yZWxpYi9pby9xbG9ja2ZpbGVfd2luLmNwcAorQEAgLTQ4LDYgKzQ4LDgg QEAKKyAjaW5jbHVkZSAiUXRDb3JlL3FkZWJ1Zy5oIgorICNpbmNsdWRlICJRdENvcmUvcXRocmVh ZC5oIgorIAorKyNpbmNsdWRlICJwcml2YXRlL3FzeXN0ZW1saWJyYXJ5X3AuaCIKKysKKyBRVF9C RUdJTl9OQU1FU1BBQ0UKKyAKKyBzdGF0aWMgaW5saW5lIGJvb2wgZmlsZUV4aXN0cyhjb25zdCB3 Y2hhcl90ICpmaWxlTmFtZSkKK0BAIC0xNTAsNyArMTUyLDcgQEAgUVN0cmluZyBRTG9ja0ZpbGVQ cml2YXRlOjpwcm9jZXNzTmFtZUJ5UGlkKHFpbnQ2NCBwaWQpCisgI2lmICFkZWZpbmVkKFFfT1Nf V0lOUlQpCisgICAgIHR5cGVkZWYgRFdPUkQgKFdJTkFQSSAqR2V0TW9kdWxlRmlsZU5hbWVFeEZ1 bmMpKEhBTkRMRSwgSE1PRFVMRSwgTFBUU1RSLCBEV09SRCk7CisgCistICAgIEhNT0RVTEUgaFBz YXBpID0gTG9hZExpYnJhcnlBKCJwc2FwaSIpOworKyAgICBITU9EVUxFIGhQc2FwaSA9IFFTeXN0 ZW1MaWJyYXJ5Ojpsb2FkKEwicHNhcGkiKTsKKyAgICAgaWYgKCFoUHNhcGkpCisgICAgICAgICBy ZXR1cm4gUVN0cmluZygpOworICAgICBHZXRNb2R1bGVGaWxlTmFtZUV4RnVuYyBxR2V0TW9kdWxl RmlsZU5hbWVFeCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R2V0TW9kdWxlRmlsZU5hbWVFeEZ1bmM+KAor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xcHJvY2Vzc191bml4LmNwcCBiL3F0 YmFzZS9zcmMvY29yZWxpYi9pby9xcHJvY2Vzc191bml4LmNwcAoraW5kZXggNTAzOTBlNTdmNS4u MTVjOGYzMDc0NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xcHJvY2Vzc191 bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fwcm9jZXNzX3VuaXguY3BwCitA QCAtMSw3ICsxLDcgQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqCisgKiogQ29weXJpZ2h0 IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTYgSW50 ZWwgQ29ycG9yYXRpb24uCisrKiogQ29weXJpZ2h0IChDKSAyMDIyIEludGVsIENvcnBvcmF0aW9u LgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdENvcmUgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0Lgor QEAgLTQyMiwxNCArNDIyLDE1IEBAIHZvaWQgUVByb2Nlc3NQcml2YXRlOjpzdGFydFByb2Nlc3Mo KQorICAgICAvLyBBZGQgdGhlIHByb2dyYW0gbmFtZSB0byB0aGUgYXJndW1lbnQgbGlzdC4KKyAg ICAgYXJndlswXSA9IG51bGxwdHI7CisgICAgIGlmICghcHJvZ3JhbS5jb250YWlucyhRTGF0aW4x Q2hhcignLycpKSkgeworKyAgICAgICAgLy8gZmluZEV4ZWN1dGFibGUoKSByZXR1cm5zIGl0cyBh cmd1bWVudCBpZiBpdCdzIGFuIGFic29sdXRlIHBhdGgsCisrICAgICAgICAvLyBvdGhlcndpc2Ug aXQgc2VhcmNoZXMgJFBBVEg7IHJldHVybnMgZW1wdHkgaWYgbm90IGZvdW5kICh3ZSBoYW5kbGUK KysgICAgICAgIC8vIHRoYXQgY2FzZSBtdWNoIGxhdGVyKQorICAgICAgICAgY29uc3QgUVN0cmlu ZyAmZXhlRmlsZVBhdGggPSBRU3RhbmRhcmRQYXRoczo6ZmluZEV4ZWN1dGFibGUocHJvZ3JhbSk7 CistICAgICAgICBpZiAoIWV4ZUZpbGVQYXRoLmlzRW1wdHkoKSkgeworLSAgICAgICAgICAgIGNv bnN0IFFCeXRlQXJyYXkgJnRtcCA9IFFGaWxlOjplbmNvZGVOYW1lKGV4ZUZpbGVQYXRoKTsKKy0g ICAgICAgICAgICBhcmd2WzBdID0gOjpzdHJkdXAodG1wLmNvbnN0RGF0YSgpKTsKKy0gICAgICAg IH0KKy0gICAgfQorLSAgICBpZiAoIWFyZ3ZbMF0pCisrICAgICAgICBjb25zdCBRQnl0ZUFycmF5 ICZ0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShleGVGaWxlUGF0aCk7CisrICAgICAgICBhcmd2WzBd ID0gOjpzdHJkdXAodG1wLmNvbnN0RGF0YSgpKTsKKysgICAgfSBlbHNlIHsKKyAgICAgICAgIGFy Z3ZbMF0gPSA6OnN0cmR1cChlbmNvZGVkUHJvZ3JhbU5hbWUuY29uc3REYXRhKCkpOworKyAgICB9 CisgCisgICAgIC8vIEFkZCBldmVyeSBhcmd1bWVudCB0byB0aGUgbGlzdAorICAgICBmb3IgKGlu dCBpID0gMDsgaSA8IGFyZ3VtZW50cy5jb3VudCgpOyArK2kpCitAQCAtOTgzLDE1ICs5ODQsMTYg QEAgYm9vbCBRUHJvY2Vzc1ByaXZhdGU6OnN0YXJ0RGV0YWNoZWQocWludDY0ICpwaWQpCisgICAg ICAgICAgICAgICAgIGVudnAgPSBfcV9kdXBFbnZpcm9ubWVudChlbnZpcm9ubWVudC5kLmNvbnN0 RGF0YSgpLT52YXJzLCAmZW52Yyk7CisgICAgICAgICAgICAgfQorIAorLSAgICAgICAgICAgIFFC eXRlQXJyYXkgdG1wOworICAgICAgICAgICAgIGlmICghcHJvZ3JhbS5jb250YWlucyhRTGF0aW4x Q2hhcignLycpKSkgeworKyAgICAgICAgICAgICAgICAvLyBmaW5kRXhlY3V0YWJsZSgpIHJldHVy bnMgaXRzIGFyZ3VtZW50IGlmIGl0J3MgYW4gYWJzb2x1dGUgcGF0aCwKKysgICAgICAgICAgICAg ICAgLy8gb3RoZXJ3aXNlIGl0IHNlYXJjaGVzICRQQVRIOyByZXR1cm5zIGVtcHR5IGlmIG5vdCBm b3VuZCAod2UgaGFuZGxlCisrICAgICAgICAgICAgICAgIC8vIHRoYXQgY2FzZSBtdWNoIGxhdGVy KQorICAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nICZleGVGaWxlUGF0aCA9IFFTdGFuZGFy ZFBhdGhzOjpmaW5kRXhlY3V0YWJsZShwcm9ncmFtKTsKKy0gICAgICAgICAgICAgICAgaWYgKCFl eGVGaWxlUGF0aC5pc0VtcHR5KCkpCistICAgICAgICAgICAgICAgICAgICB0bXAgPSBRRmlsZTo6 ZW5jb2RlTmFtZShleGVGaWxlUGF0aCk7CisrICAgICAgICAgICAgICAgIGNvbnN0IFFCeXRlQXJy YXkgJnRtcCA9IFFGaWxlOjplbmNvZGVOYW1lKGV4ZUZpbGVQYXRoKTsKKysgICAgICAgICAgICAg ICAgYXJndlswXSA9IDo6c3RyZHVwKHRtcC5jb25zdERhdGEoKSk7CisrICAgICAgICAgICAgfSBl bHNlIHsKKysgICAgICAgICAgICAgICAgYXJndlswXSA9IDo6c3RyZHVwKFFGaWxlOjplbmNvZGVO YW1lKHByb2dyYW0pKTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgaWYgKHRtcC5pc0Vt cHR5KCkpCistICAgICAgICAgICAgICAgIHRtcCA9IFFGaWxlOjplbmNvZGVOYW1lKHByb2dyYW0p OworLSAgICAgICAgICAgIGFyZ3ZbMF0gPSB0bXAuZGF0YSgpOworIAorICAgICAgICAgICAgIGlm IChlbnZwKQorICAgICAgICAgICAgICAgICBxdF9zYWZlX2V4ZWN2ZShhcmd2WzBdLCBhcmd2LCBl bnZwKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xYWJzdHJh Y3RpdGVtbW9kZWwuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcWFic3RyYWN0 aXRlbW1vZGVsLmNwcAoraW5kZXggM2E3OWM1MDJhZi4uOTk3YTYzNGU3NiAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3FhYnN0cmFjdGl0ZW1tb2RlbC5jcHAKKysr KyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3FhYnN0cmFjdGl0ZW1tb2RlbC5jcHAK K0BAIC0zMTk2LDkgKzMxOTYsOCBAQCBib29sIFFBYnN0cmFjdEl0ZW1Nb2RlbDo6YmVnaW5Nb3Zl Q29sdW1ucyhjb25zdCBRTW9kZWxJbmRleCAmc291cmNlUGFyZW50LCBpbnQgcworICAgICBkZXN0 aW5hdGlvbkNoYW5nZS5uZWVkc0FkanVzdCA9IGRlc3RpbmF0aW9uUGFyZW50LmlzVmFsaWQoKSAm JiBkZXN0aW5hdGlvblBhcmVudC5yb3coKSA+PSBzb3VyY2VMYXN0ICYmIGRlc3RpbmF0aW9uUGFy ZW50LnBhcmVudCgpID09IHNvdXJjZVBhcmVudDsKKyAgICAgZC0+Y2hhbmdlcy5wdXNoKGRlc3Rp bmF0aW9uQ2hhbmdlKTsKKyAKKy0gICAgZC0+aXRlbXNBYm91dFRvQmVNb3ZlZChzb3VyY2VQYXJl bnQsIHNvdXJjZUZpcnN0LCBzb3VyY2VMYXN0LCBkZXN0aW5hdGlvblBhcmVudCwgZGVzdGluYXRp b25DaGlsZCwgUXQ6Okhvcml6b250YWwpOworLQorICAgICBlbWl0IGNvbHVtbnNBYm91dFRvQmVN b3ZlZChzb3VyY2VQYXJlbnQsIHNvdXJjZUZpcnN0LCBzb3VyY2VMYXN0LCBkZXN0aW5hdGlvblBh cmVudCwgZGVzdGluYXRpb25DaGlsZCwgUVByaXZhdGVTaWduYWwoKSk7CisrICAgIGQtPml0ZW1z QWJvdXRUb0JlTW92ZWQoc291cmNlUGFyZW50LCBzb3VyY2VGaXJzdCwgc291cmNlTGFzdCwgZGVz dGluYXRpb25QYXJlbnQsIGRlc3RpbmF0aW9uQ2hpbGQsIFF0OjpIb3Jpem9udGFsKTsKKyAgICAg cmV0dXJuIHRydWU7CisgfQorIAorQEAgLTMyMzEsNyArMzIzMCw2IEBAIHZvaWQgUUFic3RyYWN0 SXRlbU1vZGVsOjplbmRNb3ZlQ29sdW1ucygpCisgICAgICAgYWRqdXN0ZWRTb3VyY2UgPSBjcmVh dGVJbmRleChhZGp1c3RlZFNvdXJjZS5yb3coKSwgYWRqdXN0ZWRTb3VyY2UuY29sdW1uKCkgKyBu dW1Nb3ZlZCwgYWRqdXN0ZWRTb3VyY2UuaW50ZXJuYWxQb2ludGVyKCkpOworIAorICAgICBkLT5p dGVtc01vdmVkKGFkanVzdGVkU291cmNlLCByZW1vdmVDaGFuZ2UuZmlyc3QsIHJlbW92ZUNoYW5n ZS5sYXN0LCBhZGp1c3RlZERlc3RpbmF0aW9uLCBpbnNlcnRDaGFuZ2UuZmlyc3QsIFF0OjpIb3Jp em9udGFsKTsKKy0KKyAgICAgZW1pdCBjb2x1bW5zTW92ZWQoYWRqdXN0ZWRTb3VyY2UsIHJlbW92 ZUNoYW5nZS5maXJzdCwgcmVtb3ZlQ2hhbmdlLmxhc3QsIGFkanVzdGVkRGVzdGluYXRpb24sIGlu c2VydENoYW5nZS5maXJzdCwgUVByaXZhdGVTaWduYWwoKSk7CisgfQorIAorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVycHJveHltb2RlbC5jcHAg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xc29ydGZpbHRlcnByb3h5bW9kZWwuY3Bw CitpbmRleCBkYzYzNzlkOWZiLi5jNWUyODdlZTg0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9j b3JlbGliL2l0ZW1tb2RlbHMvcXNvcnRmaWx0ZXJwcm94eW1vZGVsLmNwcAorKysrIGIvcXRiYXNl L3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcXNvcnRmaWx0ZXJwcm94eW1vZGVsLmNwcAorQEAgLTkz OSw4ICs5MzksOSBAQCB2b2lkIFFTb3J0RmlsdGVyUHJveHlNb2RlbFByaXZhdGU6Omluc2VydF9z b3VyY2VfaXRlbXMoCisgICAgICAgICAgICAgICAgIHEtPmJlZ2luSW5zZXJ0Q29sdW1ucyhwcm94 eV9wYXJlbnQsIHByb3h5X3N0YXJ0LCBwcm94eV9lbmQpOworICAgICAgICAgfQorIAorLSAgICAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzb3VyY2VfaXRlbXMuc2l6ZSgpOyArK2kpCistICAgICAg ICAgICAgcHJveHlfdG9fc291cmNlLmluc2VydChwcm94eV9zdGFydCArIGksIHNvdXJjZV9pdGVt cy5hdChpKSk7CisrICAgICAgICAvLyBUT0RPOiB1c2UgdGhlIHJhbmdlIFFMaXN0OjppbnNlcnQo KSBvdmVybG9hZCBvbmNlIGl0IGlzIGltcGxlbWVudGVkIChRVEJVRy01ODYzMykuCisrICAgICAg ICBwcm94eV90b19zb3VyY2UuaW5zZXJ0KHByb3h5X3N0YXJ0LCBzb3VyY2VfaXRlbXMuc2l6ZSgp LCAwKTsKKysgICAgICAgIHN0ZDo6Y29weShzb3VyY2VfaXRlbXMuY2JlZ2luKCksIHNvdXJjZV9p dGVtcy5jZW5kKCksIHByb3h5X3RvX3NvdXJjZS5iZWdpbigpICsgcHJveHlfc3RhcnQpOworIAor ICAgICAgICAgYnVpbGRfc291cmNlX3RvX3Byb3h5X21hcHBpbmcocHJveHlfdG9fc291cmNlLCBz b3VyY2VfdG9fcHJveHkpOworIAorQEAgLTMxMjMsOCArMzEyNCw5IEBAIGJvb2wgUVNvcnRGaWx0 ZXJQcm94eU1vZGVsOjpmaWx0ZXJBY2NlcHRzUm93KGludCBzb3VyY2Vfcm93LCBjb25zdCBRTW9k ZWxJbmRleCAmCisgCisgICAgIGlmIChkLT5maWx0ZXJfZGF0YS5pc0VtcHR5KCkpCisgICAgICAg ICByZXR1cm4gdHJ1ZTsKKysKKysgICAgaW50IGNvbHVtbl9jb3VudCA9IGQtPm1vZGVsLT5jb2x1 bW5Db3VudChzb3VyY2VfcGFyZW50KTsKKyAgICAgaWYgKGQtPmZpbHRlcl9jb2x1bW4gPT0gLTEp IHsKKy0gICAgICAgIGludCBjb2x1bW5fY291bnQgPSBkLT5tb2RlbC0+Y29sdW1uQ291bnQoc291 cmNlX3BhcmVudCk7CisgICAgICAgICBmb3IgKGludCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBjb2x1 bW5fY291bnQ7ICsrY29sdW1uKSB7CisgICAgICAgICAgICAgUU1vZGVsSW5kZXggc291cmNlX2lu ZGV4ID0gZC0+bW9kZWwtPmluZGV4KHNvdXJjZV9yb3csIGNvbHVtbiwgc291cmNlX3BhcmVudCk7 CisgICAgICAgICAgICAgUVN0cmluZyBrZXkgPSBkLT5tb2RlbC0+ZGF0YShzb3VyY2VfaW5kZXgs IGQtPmZpbHRlcl9yb2xlKS50b1N0cmluZygpOworQEAgLTMxMzMsOSArMzEzNSwxMCBAQCBib29s IFFTb3J0RmlsdGVyUHJveHlNb2RlbDo6ZmlsdGVyQWNjZXB0c1JvdyhpbnQgc291cmNlX3Jvdywg Y29uc3QgUU1vZGVsSW5kZXggJgorICAgICAgICAgfQorICAgICAgICAgcmV0dXJuIGZhbHNlOwor ICAgICB9CistICAgIFFNb2RlbEluZGV4IHNvdXJjZV9pbmRleCA9IGQtPm1vZGVsLT5pbmRleChz b3VyY2Vfcm93LCBkLT5maWx0ZXJfY29sdW1uLCBzb3VyY2VfcGFyZW50KTsKKy0gICAgaWYgKCFz b3VyY2VfaW5kZXguaXNWYWxpZCgpKSAvLyB0aGUgY29sdW1uIG1heSBub3QgZXhpc3QKKysKKysg ICAgaWYgKGQtPmZpbHRlcl9jb2x1bW4gPj0gY29sdW1uX2NvdW50KSAvLyB0aGUgY29sdW1uIG1h eSBub3QgZXhpc3QKKyAgICAgICAgIHJldHVybiB0cnVlOworKyAgICBRTW9kZWxJbmRleCBzb3Vy Y2VfaW5kZXggPSBkLT5tb2RlbC0+aW5kZXgoc291cmNlX3JvdywgZC0+ZmlsdGVyX2NvbHVtbiwg c291cmNlX3BhcmVudCk7CisgICAgIFFTdHJpbmcga2V5ID0gZC0+bW9kZWwtPmRhdGEoc291cmNl X2luZGV4LCBkLT5maWx0ZXJfcm9sZSkudG9TdHJpbmcoKTsKKyAgICAgcmV0dXJuIGQtPmZpbHRl cl9kYXRhLmhhc01hdGNoKGtleSk7CisgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxp Yi9rZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVs L3Fjb3JlYXBwbGljYXRpb24uY3BwCitpbmRleCBjYTI4NjRkZjgzLi4xMzJiMmVhZTUyIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xY29yZWFwcGxpY2F0aW9uLmNwcAor KysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xY29yZWFwcGxpY2F0aW9uLmNwcAorQEAg LTExNTcsNyArMTE1Nyw3IEBAIHN0YXRpYyBib29sIGRvTm90aWZ5KFFPYmplY3QgKnJlY2VpdmVy LCBRRXZlbnQgKmV2ZW50KQorIGJvb2wgUUNvcmVBcHBsaWNhdGlvblByaXZhdGU6OnNlbmRUaHJv dWdoQXBwbGljYXRpb25FdmVudEZpbHRlcnMoUU9iamVjdCAqcmVjZWl2ZXIsIFFFdmVudCAqZXZl bnQpCisgeworICAgICAvLyBXZSBjYW4ndCBhY2Nlc3MgdGhlIGFwcGxpY2F0aW9uIGV2ZW50IGZp bHRlcnMgb3V0c2lkZSBvZiB0aGUgbWFpbiB0aHJlYWQgKHJhY2UgY29uZGl0aW9ucykKKy0gICAg UV9BU1NFUlQocmVjZWl2ZXItPmRfZnVuYygpLT50aHJlYWREYXRhLmxvYWRSZWxheGVkKCktPnRo cmVhZC5sb2FkQWNxdWlyZSgpID09IG1haW5UaHJlYWQoKSk7CisrICAgIFFfQVNTRVJUKHJlY2Vp dmVyLT5kX2Z1bmMoKS0+dGhyZWFkRGF0YS5sb2FkQWNxdWlyZSgpLT50aHJlYWQubG9hZFJlbGF4 ZWQoKSA9PSBtYWluVGhyZWFkKCkpOworIAorICAgICBpZiAoZXh0cmFEYXRhKSB7CisgICAgICAg ICAvLyBhcHBsaWNhdGlvbiBldmVudCBmaWx0ZXJzIGFyZSBvbmx5IGNhbGxlZCBmb3Igb2JqZWN0 cyBpbiB0aGUgR1VJIHRocmVhZAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJu ZWwvcW9iamVjdC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3QuY3BwCitp bmRleCAxZWI3OTEzOGQ5Li4zNmNkNzgwZWUxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3Jl bGliL2tlcm5lbC9xb2JqZWN0LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9x b2JqZWN0LmNwcAorQEAgLTEwMTAsNyArMTAxMCw3IEBAIFFPYmplY3Q6On5RT2JqZWN0KCkKKyAg ICAgICAgIGVtaXQgZGVzdHJveWVkKHRoaXMpOworICAgICB9CisgCistICAgIGlmIChkLT5kZWNs YXJhdGl2ZURhdGEpIHsKKysgICAgaWYgKCFkLT5pc0RlbGV0aW5nQ2hpbGRyZW4gJiYgZC0+ZGVj bGFyYXRpdmVEYXRhKSB7CisgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8UUFic3RyYWN0RGVjbGFy YXRpdmVEYXRhSW1wbCo+KGQtPmRlY2xhcmF0aXZlRGF0YSktPm93bmVkQnlRbWwxKSB7CisgICAg ICAgICAgICAgaWYgKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6ZGVzdHJveWVkX3FtbDEpCisg ICAgICAgICAgICAgICAgIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6ZGVzdHJveWVkX3FtbDEo ZC0+ZGVjbGFyYXRpdmVEYXRhLCB0aGlzKTsKK0BAIC0xNTgwLDcgKzE1ODAsNyBAQCB2b2lkIFFP YmplY3Q6Om1vdmVUb1RocmVhZChRVGhyZWFkICp0YXJnZXRUaHJlYWQpCisgCisgICAgIFFUaHJl YWREYXRhICpjdXJyZW50RGF0YSA9IFFUaHJlYWREYXRhOjpjdXJyZW50KCk7CisgICAgIFFUaHJl YWREYXRhICp0YXJnZXREYXRhID0gdGFyZ2V0VGhyZWFkID8gUVRocmVhZERhdGE6OmdldDIodGFy Z2V0VGhyZWFkKSA6IG51bGxwdHI7CistICAgIFFUaHJlYWREYXRhICp0aGlzVGhyZWFkRGF0YSA9 IGQtPnRocmVhZERhdGEubG9hZFJlbGF4ZWQoKTsKKysgICAgUVRocmVhZERhdGEgKnRoaXNUaHJl YWREYXRhID0gZC0+dGhyZWFkRGF0YS5sb2FkQWNxdWlyZSgpOworICAgICBpZiAoIXRoaXNUaHJl YWREYXRhLT50aHJlYWQubG9hZEFjcXVpcmUoKSAmJiBjdXJyZW50RGF0YSA9PSB0YXJnZXREYXRh KSB7CisgICAgICAgICAvLyBvbmUgZXhjZXB0aW9uIHRvIHRoZSBydWxlOiB3ZSBhbGxvdyBtb3Zp bmcgb2JqZWN0cyB3aXRoIG5vIHRocmVhZCBhZmZpbml0eSB0byB0aGUgY3VycmVudCB0aHJlYWQK KyAgICAgICAgIGN1cnJlbnREYXRhID0gZC0+dGhyZWFkRGF0YTsKK0BAIC0yNjIwLDcgKzI2MjAs NyBAQCBpbnQgUU9iamVjdDo6cmVjZWl2ZXJzKGNvbnN0IGNoYXIgKnNpZ25hbCkgY29uc3QKKyAg ICAgICAgIGlmICghZC0+aXNTaWduYWxDb25uZWN0ZWQoc2lnbmFsX2luZGV4KSkKKyAgICAgICAg ICAgICByZXR1cm4gcmVjZWl2ZXJzOworIAorLSAgICAgICAgaWYgKGQtPmRlY2xhcmF0aXZlRGF0 YSAmJiBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnJlY2VpdmVycykgeworKyAgICAgICAgaWYg KCFkLT5pc0RlbGV0aW5nQ2hpbGRyZW4gJiYgZC0+ZGVjbGFyYXRpdmVEYXRhICYmIFFBYnN0cmFj dERlY2xhcmF0aXZlRGF0YTo6cmVjZWl2ZXJzKSB7CisgICAgICAgICAgICAgcmVjZWl2ZXJzICs9 IFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6cmVjZWl2ZXJzKGQtPmRlY2xhcmF0aXZlRGF0YSwg dGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2lnbmFsX2luZGV4KTsKKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3RfcC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tl cm5lbC9xb2JqZWN0X3AuaAoraW5kZXggMGI4MjdhNTJjYS4uMTNmZmI4ODk5OSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdF9wLmgKKysrKyBiL3F0YmFzZS9z cmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdF9wLmgKK0BAIC00NDQsNyArNDQ0LDcgQEAgaW5saW5l IHZvaWQgUU9iamVjdFByaXZhdGU6OmNoZWNrRm9ySW5jb21wYXRpYmxlTGlicmFyeVZlcnNpb24o aW50IHZlcnNpb24pIGNvbnMKKyAKKyBpbmxpbmUgYm9vbCBRT2JqZWN0UHJpdmF0ZTo6aXNEZWNs YXJhdGl2ZVNpZ25hbENvbm5lY3RlZCh1aW50IHNpZ25hbF9pbmRleCkgY29uc3QKKyB7CistICAg IHJldHVybiBkZWNsYXJhdGl2ZURhdGEgJiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjppc1Np Z25hbENvbm5lY3RlZAorKyAgICByZXR1cm4gIWlzRGVsZXRpbmdDaGlsZHJlbiAmJiBkZWNsYXJh dGl2ZURhdGEgJiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjppc1NpZ25hbENvbm5lY3RlZAor ICAgICAgICAgICAgICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6aXNTaWduYWxDb25uZWN0 ZWQoZGVjbGFyYXRpdmVEYXRhLCBxX2Z1bmMoKSwgc2lnbmFsX2luZGV4KTsKKyB9CisgCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xdHJhbnNsYXRvci5jcHAgYi9xdGJh c2Uvc3JjL2NvcmVsaWIva2VybmVsL3F0cmFuc2xhdG9yLmNwcAoraW5kZXggMjgxMmZmYjdlYS4u YmMwMTc3YzVlYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcXRyYW5z bGF0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3F0cmFuc2xhdG9yLmNw cAorQEAgLTkwMiw3ICs5MDIsNyBAQCBzdGF0aWMgUVN0cmluZyBnZXRNZXNzYWdlKGNvbnN0IHVj aGFyICptLCBjb25zdCB1Y2hhciAqZW5kLCBjb25zdCBjaGFyICpjb250ZXh0LAorICAgICAgICAg ICAgIGdvdG8gZW5kOworICAgICAgICAgY2FzZSBUYWdfVHJhbnNsYXRpb246IHsKKyAgICAgICAg ICAgICBpbnQgbGVuID0gcmVhZDMyKG0pOworLSAgICAgICAgICAgIGlmIChsZW4gJSAxKQorKyAg ICAgICAgICAgIGlmIChsZW4gJiAxKQorICAgICAgICAgICAgICAgICByZXR1cm4gUVN0cmluZygp OworICAgICAgICAgICAgIG0gKz0gNDsKKyAgICAgICAgICAgICBpZiAoIW51bWVydXMtLSkgewor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS5j cHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UuY3BwCitpbmRl eCA5ZGUyMmNlZjMzLi5mZjg2OGEzMjY4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGli L21pbWV0eXBlcy9xbWltZWRhdGFiYXNlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL21p bWV0eXBlcy9xbWltZWRhdGFiYXNlLmNwcAorQEAgLTM4OSwyMCArMzg5LDIzIEBAIFFNaW1lVHlw ZSBRTWltZURhdGFiYXNlUHJpdmF0ZTo6bWltZVR5cGVGb3JGaWxlTmFtZUFuZERhdGEoY29uc3Qg UVN0cmluZyAmZmlsZU5hCisgICAgICAgICAvLyBEaXNhbWJpZ3VhdGUgY29uZmxpY3RpbmcgZXh0 ZW5zaW9ucyAoaWYgbWFnaWMgbWF0Y2hpbmcgZm91bmQgc29tZXRoaW5nKQorICAgICAgICAgaWYg KGNhbmRpZGF0ZUJ5RGF0YS5pc1ZhbGlkKCkgJiYgbWFnaWNBY2N1cmFjeSA+IDApIHsKKyAgICAg ICAgICAgICBjb25zdCBRU3RyaW5nIHNuaWZmZWRNaW1lID0gY2FuZGlkYXRlQnlEYXRhLm5hbWUo KTsKKy0gICAgICAgICAgICAvLyBJZiB0aGUgc25pZmZlZE1pbWUgbWF0Y2hlcyBhIGdsb2IgbWF0 Y2gsIHVzZSBpdAorKyAgICAgICAgICAgIC8vIElmIHRoZSBzbmlmZmVkTWltZSBtYXRjaGVzIGEg aGlnaGVzdC13ZWlnaHQgZ2xvYiBtYXRjaCwgdXNlIGl0CisgICAgICAgICAgICAgaWYgKGNhbmRp ZGF0ZXNCeU5hbWUubV9tYXRjaGluZ01pbWVUeXBlcy5jb250YWlucyhzbmlmZmVkTWltZSkpIHsK KyAgICAgICAgICAgICAgICAgKmFjY3VyYWN5UHRyID0gMTAwOworICAgICAgICAgICAgICAgICBy ZXR1cm4gY2FuZGlkYXRlQnlEYXRhOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBmb3Ig KGNvbnN0IFFTdHJpbmcgJm0gOiBxQXNDb25zdChjYW5kaWRhdGVzQnlOYW1lLm1fbWF0Y2hpbmdN aW1lVHlwZXMpKSB7CisrICAgICAgICAgICAgZm9yIChjb25zdCBRU3RyaW5nICZtIDogcUFzQ29u c3QoY2FuZGlkYXRlc0J5TmFtZS5tX2FsbE1hdGNoaW5nTWltZVR5cGVzKSkgeworICAgICAgICAg ICAgICAgICBpZiAoaW5oZXJpdHMobSwgc25pZmZlZE1pbWUpKSB7CisgICAgICAgICAgICAgICAg ICAgICAvLyBXZSBoYXZlIG1hZ2ljICsgcGF0dGVybiBwb2ludGluZyB0byB0aGlzLCBzbyBpdCdz IGEgcHJldHR5IGdvb2QgbWF0Y2gKKyAgICAgICAgICAgICAgICAgICAgICphY2N1cmFjeVB0ciA9 IDEwMDsKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtaW1lVHlwZUZvck5hbWUobSk7Cisg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgKmFjY3VyYWN5 UHRyID0gbWFnaWNBY2N1cmFjeTsKKy0gICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlQnlEYXRh OworKyAgICAgICAgICAgIGlmIChjYW5kaWRhdGVzQnlOYW1lLm1fYWxsTWF0Y2hpbmdNaW1lVHlw ZXMuaXNFbXB0eSgpKSB7CisrICAgICAgICAgICAgICAgIC8vIE5vIGdsb2IsIHVzZSBtYWdpYwor KyAgICAgICAgICAgICAgICAqYWNjdXJhY3lQdHIgPSBtYWdpY0FjY3VyYWN5OworKyAgICAgICAg ICAgICAgICByZXR1cm4gY2FuZGlkYXRlQnlEYXRhOworKyAgICAgICAgICAgIH0KKyAgICAgICAg IH0KKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMv cW1pbWVnbG9icGF0dGVybi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1l Z2xvYnBhdHRlcm4uY3BwCitpbmRleCBhODExMTJkMjI3Li5mYThmNGM1NDVkIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWdsb2JwYXR0ZXJuLmNwcAorKysr IGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWdsb2JwYXR0ZXJuLmNwcAorQEAg LTgzLDcgKzgzLDEwIEBAIHZvaWQgUU1pbWVHbG9iTWF0Y2hSZXN1bHQ6OmFkZE1hdGNoKGNvbnN0 IFFTdHJpbmcgJm1pbWVUeXBlLCBpbnQgd2VpZ2h0LCBjb25zdCBRCisgICAgIH0KKyAgICAgaWYg KCFtX21hdGNoaW5nTWltZVR5cGVzLmNvbnRhaW5zKG1pbWVUeXBlKSkgeworICAgICAgICAgbV9t YXRjaGluZ01pbWVUeXBlcy5hcHBlbmQobWltZVR5cGUpOworLSAgICAgICAgbV9hbGxNYXRjaGlu Z01pbWVUeXBlcy5hcHBlbmQobWltZVR5cGUpOworKyAgICAgICAgaWYgKHJlcGxhY2UpCisrICAg ICAgICAgICAgbV9hbGxNYXRjaGluZ01pbWVUeXBlcy5wcmVwZW5kKG1pbWVUeXBlKTsgLy8gaGln aGVzdC13ZWlnaHQgZmlyc3QKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICBtX2FsbE1hdGNo aW5nTWltZVR5cGVzLmFwcGVuZChtaW1lVHlwZSk7CisgICAgICAgICBtX2tub3duU3VmZml4TGVu Z3RoID0ga25vd25TdWZmaXhMZW5ndGg7CisgICAgIH0KKyB9CitAQCAtOTQsNyArOTcsNyBAQCBR TWltZUdsb2JQYXR0ZXJuOjpQYXR0ZXJuVHlwZSBRTWltZUdsb2JQYXR0ZXJuOjpkZXRlY3RQYXR0 ZXJuVHlwZShjb25zdCBRU3RyaW5nCisgICAgIGlmICghcGF0dGVybkxlbmd0aCkKKyAgICAgICAg IHJldHVybiBPdGhlclBhdHRlcm47CisgCistICAgIGNvbnN0IGJvb2wgc3RhckNvdW50ID0gcGF0 dGVybi5jb3VudChRTGF0aW4xQ2hhcignKicpKSA9PSAxOworKyAgICBjb25zdCBpbnQgc3RhckNv dW50ID0gcGF0dGVybi5jb3VudChRTGF0aW4xQ2hhcignKicpKTsKKyAgICAgY29uc3QgYm9vbCBo YXNTcXVhcmVCcmFja2V0ID0gcGF0dGVybi5pbmRleE9mKFFMYXRpbjFDaGFyKCdbJykpICE9IC0x OworICAgICBjb25zdCBib29sIGhhc1F1ZXN0aW9uTWFyayA9IHBhdHRlcm4uaW5kZXhPZihRTGF0 aW4xQ2hhcignPycpKSAhPSAtMTsKKyAKK0BAIC0xMDYsMTAgKzEwOSwxMCBAQCBRTWltZUdsb2JQ YXR0ZXJuOjpQYXR0ZXJuVHlwZSBRTWltZUdsb2JQYXR0ZXJuOjpkZXRlY3RQYXR0ZXJuVHlwZShj b25zdCBRU3RyaW5nCisgICAgICAgICAgICAgLy8gUGF0dGVybnMgbGlrZSAiUkVBRE1FKiIgKHdl bGwgdGhpcyBpcyBjdXJyZW50bHkgdGhlIG9ubHkgb25lIGxpa2UgdGhhdC4uLikKKyAgICAgICAg ICAgICBpZiAocGF0dGVybi5hdChwYXR0ZXJuTGVuZ3RoIC0gMSkgPT0gUUxhdGluMUNoYXIoJyon KSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIFByZWZpeFBhdHRlcm47CistICAgICAgICB9Cist ICAgICAgICAvLyBOYW1lcyB3aXRob3V0IGFueSB3aWxkY2FyZHMgbGlrZSAiUkVBRE1FIgorLSAg ICAgICAgaWYgKHN0YXJDb3VudCA9PSAwKQorKyAgICAgICAgfSBlbHNlIGlmIChzdGFyQ291bnQg PT0gMCkgeworKyAgICAgICAgICAgIC8vIE5hbWVzIHdpdGhvdXQgYW55IHdpbGRjYXJkcyBsaWtl ICJSRUFETUUiCisgICAgICAgICAgICAgcmV0dXJuIExpdGVyYWxQYXR0ZXJuOworKyAgICAgICAg fQorICAgICB9CisgCisgICAgIGlmIChwYXR0ZXJuID09IFFMYXRpbjFTdHJpbmcoIlswLTldWzAt OV1bMC05XS52ZHIiKSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVz L3FtaW1lcHJvdmlkZXIuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZXBy b3ZpZGVyLmNwcAoraW5kZXggMjU4ZGRkZjhjYi4uNDY0MmQwZjJkMCAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVwcm92aWRlci5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVwcm92aWRlci5jcHAKK0BAIC0yNDQsMTUgKzI0 NCwxOCBAQCB2b2lkIFFNaW1lQmluYXJ5UHJvdmlkZXI6OmFkZEZpbGVOYW1lTWF0Y2hlcyhjb25z dCBRU3RyaW5nICZmaWxlTmFtZSwgUU1pbWVHbG9iTQorICAgICBjb25zdCBRU3RyaW5nIGxvd2Vy RmlsZU5hbWUgPSBmaWxlTmFtZS50b0xvd2VyKCk7CisgICAgIC8vIENoZWNrIGxpdGVyYWxzIChl LmcuICJNYWtlZmlsZSIpCisgICAgIG1hdGNoR2xvYkxpc3QocmVzdWx0LCBtX2NhY2hlRmlsZSwg bV9jYWNoZUZpbGUtPmdldFVpbnQzMihQb3NMaXRlcmFsTGlzdE9mZnNldCksIGZpbGVOYW1lKTsK Ky0gICAgLy8gQ2hlY2sgY29tcGxleCBnbG9icyAoZS5nLiAiY2FsbGdyaW5kLm91dFswLTldKiIp CistICAgIG1hdGNoR2xvYkxpc3QocmVzdWx0LCBtX2NhY2hlRmlsZSwgbV9jYWNoZUZpbGUtPmdl dFVpbnQzMihQb3NHbG9iTGlzdE9mZnNldCksIGZpbGVOYW1lKTsKKyAgICAgLy8gQ2hlY2sgdGhl IHZlcnkgY29tbW9uICoudHh0IGNhc2VzIHdpdGggdGhlIHN1ZmZpeCB0cmVlCistICAgIGNvbnN0 IGludCByZXZlcnNlU3VmZml4VHJlZU9mZnNldCA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIoUG9z UmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQpOworLSAgICBjb25zdCBpbnQgbnVtUm9vdHMgPSBtX2Nh Y2hlRmlsZS0+Z2V0VWludDMyKHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0KTsKKy0gICAgY29uc3Qg aW50IGZpcnN0Um9vdE9mZnNldCA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1ZmZp eFRyZWVPZmZzZXQgKyA0KTsKKy0gICAgbWF0Y2hTdWZmaXhUcmVlKHJlc3VsdCwgbV9jYWNoZUZp bGUsIG51bVJvb3RzLCBmaXJzdFJvb3RPZmZzZXQsIGxvd2VyRmlsZU5hbWUsIGxvd2VyRmlsZU5h bWUubGVuZ3RoKCkgLSAxLCBmYWxzZSk7CisrICAgIGlmIChyZXN1bHQubV9tYXRjaGluZ01pbWVU eXBlcy5pc0VtcHR5KCkpIHsKKysgICAgICAgIGNvbnN0IGludCByZXZlcnNlU3VmZml4VHJlZU9m ZnNldCA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIoUG9zUmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQp OworKyAgICAgICAgY29uc3QgaW50IG51bVJvb3RzID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihy ZXZlcnNlU3VmZml4VHJlZU9mZnNldCk7CisrICAgICAgICBjb25zdCBpbnQgZmlyc3RSb290T2Zm c2V0ID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihyZXZlcnNlU3VmZml4VHJlZU9mZnNldCArIDQp OworKyAgICAgICAgbWF0Y2hTdWZmaXhUcmVlKHJlc3VsdCwgbV9jYWNoZUZpbGUsIG51bVJvb3Rz LCBmaXJzdFJvb3RPZmZzZXQsIGxvd2VyRmlsZU5hbWUsIGxvd2VyRmlsZU5hbWUubGVuZ3RoKCkg LSAxLCBmYWxzZSk7CisrICAgICAgICBpZiAocmVzdWx0Lm1fbWF0Y2hpbmdNaW1lVHlwZXMuaXNF bXB0eSgpKQorKyAgICAgICAgICAgIG1hdGNoU3VmZml4VHJlZShyZXN1bHQsIG1fY2FjaGVGaWxl LCBudW1Sb290cywgZmlyc3RSb290T2Zmc2V0LCBmaWxlTmFtZSwgZmlsZU5hbWUubGVuZ3RoKCkg LSAxLCB0cnVlKTsKKysgICAgfQorKyAgICAvLyBDaGVjayBjb21wbGV4IGdsb2JzIChlLmcuICJj YWxsZ3JpbmQub3V0WzAtOV0qIiBvciAiUkVBRE1FKiIpCisgICAgIGlmIChyZXN1bHQubV9tYXRj aGluZ01pbWVUeXBlcy5pc0VtcHR5KCkpCistICAgICAgICBtYXRjaFN1ZmZpeFRyZWUocmVzdWx0 LCBtX2NhY2hlRmlsZSwgbnVtUm9vdHMsIGZpcnN0Um9vdE9mZnNldCwgZmlsZU5hbWUsIGZpbGVO YW1lLmxlbmd0aCgpIC0gMSwgdHJ1ZSk7CisrICAgICAgICBtYXRjaEdsb2JMaXN0KHJlc3VsdCwg bV9jYWNoZUZpbGUsIG1fY2FjaGVGaWxlLT5nZXRVaW50MzIoUG9zR2xvYkxpc3RPZmZzZXQpLCBm aWxlTmFtZSk7CisgfQorIAorIHZvaWQgUU1pbWVCaW5hcnlQcm92aWRlcjo6bWF0Y2hHbG9iTGlz dChRTWltZUdsb2JNYXRjaFJlc3VsdCAmcmVzdWx0LCBDYWNoZUZpbGUgKmNhY2hlRmlsZSwgaW50 IG9mZiwgY29uc3QgUVN0cmluZyAmZmlsZU5hbWUpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9j b3JlbGliL3NlcmlhbGl6YXRpb24vcWpzb25wYXJzZXIuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGli L3NlcmlhbGl6YXRpb24vcWpzb25wYXJzZXIuY3BwCitpbmRleCAxN2U2ZjExMWFiLi4yZTQwYjZj OGZiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcWpzb25w YXJzZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xanNvbnBh cnNlci5jcHAKK0BAIC0zNzksMTAgKzM3OSwzMCBAQCBlcnJvcjoKKyAgICAgcmV0dXJuIFFDYm9y VmFsdWUoKTsKKyB9CisgCisrLy8gV2UgbmVlZCB0byByZXRhaW4gdGhlIF9sYXN0XyB2YWx1ZSBm b3IgYW55IGR1cGxpY2F0ZSBrZXlzIGFuZCB3ZSBuZWVkIHRvIGRlcmVmIGNvbnRhaW5lcnMuCisr Ly8gVGhlcmVmb3JlIHRoZSBtYW51YWwgaW1wbGVtZW50YXRpb24gb2Ygc3RkOjp1bmlxdWUoKS4K Kyt0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgQ29tcGFyZSwgdHlwZW5hbWUg QXNzaWduPgorK3N0YXRpYyBJdGVyYXRvciBjdXN0b21Bc3NpZ25pbmdVbmlxdWVMYXN0KEl0ZXJh dG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIENvbXBhcmUgY29tcGFyZSwgQXNzaWduIGFzc2lnbikKKyt7CisrICAgIGZp cnN0ID0gc3RkOjphZGphY2VudF9maW5kKGZpcnN0LCBsYXN0LCBjb21wYXJlKTsKKysgICAgaWYg KGZpcnN0ID09IGxhc3QpCisrICAgICAgICByZXR1cm4gbGFzdDsKKysKKysgICAgSXRlcmF0b3Ig cmVzdWx0ID0gZmlyc3Q7CisrICAgIHdoaWxlICgrK2ZpcnN0ICE9IGxhc3QpIHsKKysgICAgICAg IGlmICghY29tcGFyZSgqcmVzdWx0LCAqZmlyc3QpKQorKyAgICAgICAgICAgICsrcmVzdWx0Owor KyAgICAgICAgaWYgKHJlc3VsdCAhPSBmaXJzdCkKKysgICAgICAgICAgICBhc3NpZ24oKnJlc3Vs dCwgKmZpcnN0KTsKKysgICAgfQorKworKyAgICByZXR1cm4gKytyZXN1bHQ7CisrfQorKworIHN0 YXRpYyB2b2lkIHNvcnRDb250YWluZXIoUUNib3JDb250YWluZXJQcml2YXRlICpjb250YWluZXIp CisgeworICAgICB1c2luZyBGb3J3YXJkID0gUUpzb25Qcml2YXRlOjpLZXlJdGVyYXRvcjsKKy0g ICAgdXNpbmcgUmV2ZXJzZSA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxGb3J3YXJkPjsKKyAgICAg dXNpbmcgVmFsdWUgPSBGb3J3YXJkOjp2YWx1ZV90eXBlOworIAorICAgICBhdXRvIGNvbXBhcmUg PSBbY29udGFpbmVyXShjb25zdCBWYWx1ZSAmYSwgY29uc3QgVmFsdWUgJmIpCitAQCAtNDIwLDE3 ICs0NDAsMzEgQEAgc3RhdGljIHZvaWQgc29ydENvbnRhaW5lcihRQ2JvckNvbnRhaW5lclByaXZh dGUgKmNvbnRhaW5lcikKKyAgICAgICAgIH0KKyAgICAgfTsKKyAKKy0gICAgc3RkOjpzb3J0KEZv cndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5iZWdpbigpKSwgRm9yd2FyZChjb250YWluZXItPmVs ZW1lbnRzLmVuZCgpKSwKKy0gICAgICAgICAgICAgIFsmY29tcGFyZV0oY29uc3QgVmFsdWUgJmEs IGNvbnN0IFZhbHVlICZiKSB7IHJldHVybiBjb21wYXJlKGEsIGIpIDwgMDsgfSk7CisrICAgIC8v IFRoZSBlbGVtZW50cycgY29udGFpbmVycyBhcmUgb3duZWQgYnkgdGhlIG91dGVyIGNvbnRhaW5l ciwgbm90IGJ5IHRoZSBlbGVtZW50cyB0aGVtc2VsdmVzLgorKyAgICBhdXRvIG1vdmUgPSBbXShG b3J3YXJkOjpyZWZlcmVuY2UgdGFyZ2V0LCBGb3J3YXJkOjpyZWZlcmVuY2Ugc291cmNlKQorKyAg ICB7CisrICAgICAgICBRdENib3I6OkVsZW1lbnQgJnRhcmdldFZhbHVlID0gdGFyZ2V0LnZhbHVl KCk7CisrCisrICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGhhcyBhIGNvbnRhaW5lciwgZGVyZWYg aXQgYmVmb3JlIG92ZXJ3cml0aW5nLCBzbyB0aGF0IHdlIGRvbid0IGxlYWsuCisrICAgICAgICBp ZiAodGFyZ2V0VmFsdWUuZmxhZ3MgJiBRdENib3I6OkVsZW1lbnQ6OklzQ29udGFpbmVyKQorKyAg ICAgICAgICAgIHRhcmdldFZhbHVlLmNvbnRhaW5lci0+ZGVyZWYoKTsKKysKKysgICAgICAgIC8v IERvIG5vdCBtb3ZlLCBzbyB0aGF0IHdlIGNhbiBjbGVhciB0aGUgdmFsdWUgYWZ0ZXJ3YXJkcy4K KysgICAgICAgIHRhcmdldCA9IHNvdXJjZTsKKysKKysgICAgICAgIC8vIENsZWFyIHRoZSBzb3Vy Y2UgdmFsdWUsIHNvIHRoYXQgd2UgZG9uJ3Qgc3RvcmUgdGhlIHNhbWUgY29udGFpbmVyIHR3aWNl LgorKyAgICAgICAgc291cmNlLnZhbHVlKCkgPSBRdENib3I6OkVsZW1lbnQoKTsKKysgICAgfTsK KysKKysgICAgc3RkOjpzdGFibGVfc29ydCgKKysgICAgICAgICAgICAgICAgRm9yd2FyZChjb250 YWluZXItPmVsZW1lbnRzLmJlZ2luKCkpLCBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuZW5k KCkpLAorKyAgICAgICAgICAgICAgICBbJmNvbXBhcmVdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBW YWx1ZSAmYikgeyByZXR1cm4gY29tcGFyZShhLCBiKSA8IDA7IH0pOworIAorLSAgICAvLyBXZSBu ZWVkIHRvIHJldGFpbiB0aGUgX2xhc3RfIHZhbHVlIGZvciBhbnkgZHVwbGljYXRlIGtleXMuIFRo ZXJlZm9yZSB0aGUgcmV2ZXJzZSBkYW5jZSBoZXJlLgorLSAgICBhdXRvIGl0ID0gc3RkOjp1bmlx dWUoUmV2ZXJzZShjb250YWluZXItPmVsZW1lbnRzLmVuZCgpKSwgUmV2ZXJzZShjb250YWluZXIt PmVsZW1lbnRzLmJlZ2luKCkpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgWyZjb21wYXJl XShjb25zdCBWYWx1ZSAmYSwgY29uc3QgVmFsdWUgJmIpIHsKKy0gICAgICAgIHJldHVybiBjb21w YXJlKGEsIGIpID09IDA7CistICAgIH0pLmJhc2UoKS5lbGVtZW50c0l0ZXJhdG9yKCk7CisrICAg IEZvcndhcmQgcmVzdWx0ID0gY3VzdG9tQXNzaWduaW5nVW5pcXVlTGFzdCgKKysgICAgICAgICAg ICAgICAgRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmJlZ2luKCkpLCAgRm9yd2FyZChjb250 YWluZXItPmVsZW1lbnRzLmVuZCgpKSwKKysgICAgICAgICAgICAgICAgWyZjb21wYXJlXShjb25z dCBWYWx1ZSAmYSwgY29uc3QgVmFsdWUgJmIpIHsgcmV0dXJuIGNvbXBhcmUoYSwgYikgPT0gMDsg fSwgbW92ZSk7CisgCistICAgIC8vIFRoZSBlcmFzZSBmcm9tIGJlZ2lubmluZyBpcyBleHBlbnNp dmUgYnV0IGhvcGVmdWxseSByYXJlLgorLSAgICBjb250YWluZXItPmVsZW1lbnRzLmVyYXNlKGNv bnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSwgaXQpOworKyAgICBjb250YWluZXItPmVsZW1lbnRz LmVyYXNlKHJlc3VsdC5lbGVtZW50c0l0ZXJhdG9yKCksIGNvbnRhaW5lci0+ZWxlbWVudHMuZW5k KCkpOworIH0KKyAKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXph dGlvbi9xeG1sc3RyZWFtLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3F4 bWxzdHJlYW0uY3BwCitpbmRleCBiMmY4NDY1NDRkLi43Y2Q0NTdiYTNhIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcXhtbHN0cmVhbS5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3F4bWxzdHJlYW0uY3BwCitAQCAtOTgwLDcg Kzk4MCw3IEBAIGlubGluZSB1aW50IFFYbWxTdHJlYW1SZWFkZXJQcml2YXRlOjpwZWVrQ2hhcigp CisgYm9vbCBRWG1sU3RyZWFtUmVhZGVyUHJpdmF0ZTo6c2NhblVudGlsKGNvbnN0IGNoYXIgKnN0 ciwgc2hvcnQgdG9rZW5Ub0luamVjdCkKKyB7CisgICAgIGludCBwb3MgPSB0ZXh0QnVmZmVyLnNp emUoKTsKKy0gICAgaW50IG9sZExpbmVOdW1iZXIgPSBsaW5lTnVtYmVyOworKyAgICBjb25zdCBh dXRvIG9sZExpbmVOdW1iZXIgPSBsaW5lTnVtYmVyOworIAorICAgICB1aW50IGM7CisgICAgIHdo aWxlICgoYyA9IGdldENoYXIoKSkgIT0gU3RyZWFtRU9GKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9jb3JlbGliL3RleHQvcXN0cmluZy5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9x c3RyaW5nLmNwcAoraW5kZXggM2U4OGFiNDg1OS4uOGRlZWFlNDdiYiAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmcuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvdGV4dC9xc3RyaW5nLmNwcAorQEAgLTEyMzEyLDcgKzEyMzEyLDcgQEAgc3RhdGljIHFzaXpl dHlwZSBxTGFzdEluZGV4T2YoSGF5c3RhY2sgaGF5c3RhY2swLCBxc2l6ZXR5cGUgZnJvbSwKKyAg ICAgY29uc3QgYXV0byBuZWVkbGUgPSBuZWVkbGUwLmRhdGEoKTsKKyAgICAgY29uc3QgYXV0byAq ZW5kID0gaGF5c3RhY2s7CisgICAgIGhheXN0YWNrICs9IGZyb207CistICAgIGNvbnN0IHN0ZDo6 c2l6ZV90IHNsX21pbnVzXzEgPSBzbCAtIDE7CisrICAgIGNvbnN0IHN0ZDo6c2l6ZV90IHNsX21p bnVzXzEgPSBzbCA/IHNsIC0gMSA6IDA7CisgICAgIGNvbnN0IGF1dG8gKm4gPSBuZWVkbGUgKyBz bF9taW51c18xOworICAgICBjb25zdCBhdXRvICpoID0gaGF5c3RhY2sgKyBzbF9taW51c18xOwor ICAgICBzdGQ6OnNpemVfdCBoYXNoTmVlZGxlID0gMCwgaGFzaEhheXN0YWNrID0gMDsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5naXRlcmF0b3JfcC5oIGIvcXRi YXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZ2l0ZXJhdG9yX3AuaAoraW5kZXggMjE5NTg5YjZl NC4uMWQwYzY2Y2M3OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJp bmdpdGVyYXRvcl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmdpdGVy YXRvcl9wLmgKK0BAIC02MSw2ICs2MSw4IEBAIGNsYXNzIFFTdHJpbmdJdGVyYXRvcgorIHsKKyAg ICAgUVN0cmluZzo6Y29uc3RfaXRlcmF0b3IgaSwgcG9zLCBlOworICAgICBRX1NUQVRJQ19BU1NF UlQoKHN0ZDo6aXNfc2FtZTxRU3RyaW5nOjpjb25zdF9pdGVyYXRvciwgY29uc3QgUUNoYXIgKj46 OnZhbHVlKSk7CisrICAgIHN0YXRpYyBib29sIGxlc3MoY29uc3QgUUNoYXIgKmxocywgY29uc3Qg UUNoYXIgKnJocykgbm9leGNlcHQKKysgICAgeyByZXR1cm4gc3RkOjpsZXNzPFFTdHJpbmc6OmNv bnN0X2l0ZXJhdG9yPnt9KGxocywgcmhzKTsgfQorIHB1YmxpYzoKKyAgICAgZXhwbGljaXQgUVN0 cmluZ0l0ZXJhdG9yKFFTdHJpbmdWaWV3IHN0cmluZywgcXNpemV0eXBlIGlkeCA9IDApCisgICAg ICAgICA6IGkoc3RyaW5nLmJlZ2luKCkpLAorQEAgLTk1LDcgKzk3LDggQEAgcHVibGljOgorIAor ICAgICBpbmxpbmUgdm9pZCBzZXRQb3NpdGlvbihRU3RyaW5nOjpjb25zdF9pdGVyYXRvciBwb3Np dGlvbikKKyAgICAgeworLSAgICAgICAgUV9BU1NFUlRfWChpIDw9IHBvc2l0aW9uICYmIHBvc2l0 aW9uIDw9IGUsIFFfRlVOQ19JTkZPLCAicG9zaXRpb24gb3V0IG9mIGJvdW5kcyIpOworKyAgICAg ICAgUV9BU1NFUlRfWCghbGVzcyhwb3NpdGlvbiwgaSkgJiYgIWxlc3MoZSwgcG9zaXRpb24pLAor KyAgICAgICAgICAgICAgICAgICBRX0ZVTkNfSU5GTywgInBvc2l0aW9uIG91dCBvZiBib3VuZHMi KTsKKyAgICAgICAgIHBvcyA9IHBvc2l0aW9uOworICAgICB9CisgCitAQCAtMTAzLDcgKzEwNiw3 IEBAIHB1YmxpYzoKKyAKKyAgICAgaW5saW5lIGJvb2wgaGFzTmV4dCgpIGNvbnN0CisgICAgIHsK Ky0gICAgICAgIHJldHVybiBwb3MgPCBlOworKyAgICAgICAgcmV0dXJuIGxlc3MocG9zLCBlKTsK KyAgICAgfQorIAorICAgICBpbmxpbmUgdm9pZCBhZHZhbmNlKCkKK0BAIC0xMjAsMTYgKzEyMywy MCBAQCBwdWJsaWM6CisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUX1goaGFzTmV4dCgpLCBRX0ZV TkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIG5leHQgaXRlbSIpOworIAorLSAgICAgICAgaWYg KFFfVU5MSUtFTFkoKHBvcysrKS0+aXNIaWdoU3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFf VU5MSUtFTFkoKHBvcysrKS0+aXNIaWdoU3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9B U1NFUlQoaGFzTmV4dCgpICYmIHBvcy0+aXNMb3dTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAg Kytwb3M7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgaW5saW5lIHVpbnQgcGVla05leHRV bmNoZWNrZWQoKSBjb25zdAorICAgICB7CisgICAgICAgICBRX0FTU0VSVF9YKGhhc05leHQoKSwg UV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBuZXh0IGl0ZW0iKTsKKyAKKy0gICAgICAg IGlmIChRX1VOTElLRUxZKHBvcy0+aXNIaWdoU3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFf VU5MSUtFTFkocG9zLT5pc0hpZ2hTdXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FTU0VS VChsZXNzKHBvcyArIDEsIGUpICYmIHBvc1sxXS5pc0xvd1N1cnJvZ2F0ZSgpKTsKKyAgICAgICAg ICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNChwb3NbMF0sIHBvc1sxXSk7CisrICAg ICAgICB9CisgCisgICAgICAgICByZXR1cm4gcG9zLT51bmljb2RlKCk7CisgICAgIH0KK0BAIC0x NTUsOCArMTYyLDEwIEBAIHB1YmxpYzoKKyAgICAgICAgIFFfQVNTRVJUX1goaGFzTmV4dCgpLCBR X0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIG5leHQgaXRlbSIpOworIAorICAgICAgICAg Y29uc3QgUUNoYXIgY3VyID0gKnBvcysrOworLSAgICAgICAgaWYgKFFfVU5MSUtFTFkoY3VyLmlz SGlnaFN1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZKGN1ci5pc0hpZ2hTdXJy b2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FTU0VSVChoYXNOZXh0KCkgJiYgcG9zLT5pc0xv d1N1cnJvZ2F0ZSgpKTsKKyAgICAgICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNz NChjdXIsICpwb3MrKyk7CisrICAgICAgICB9CisgICAgICAgICByZXR1cm4gY3VyLnVuaWNvZGUo KTsKKyAgICAgfQorIAorQEAgLTE2Niw3ICsxNzUsNyBAQCBwdWJsaWM6CisgCisgICAgICAgICBj b25zdCBRQ2hhciB1YyA9ICpwb3MrKzsKKyAgICAgICAgIGlmIChRX1VOTElLRUxZKHVjLmlzU3Vy cm9nYXRlKCkpKSB7CistICAgICAgICAgICAgaWYgKFFfTElLRUxZKHVjLmlzSGlnaFN1cnJvZ2F0 ZSgpICYmIHBvcyA8IGUgJiYgcG9zLT5pc0xvd1N1cnJvZ2F0ZSgpKSkKKysgICAgICAgICAgICBp ZiAoUV9MSUtFTFkodWMuaXNIaWdoU3Vycm9nYXRlKCkgJiYgaGFzTmV4dCgpICYmIHBvcy0+aXNM b3dTdXJyb2dhdGUoKSkpCisgICAgICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRl VG9VY3M0KHVjLCAqcG9zKyspOworICAgICAgICAgICAgIHJldHVybiBpbnZhbGlkQXM7CisgICAg ICAgICB9CitAQCAtMTc4LDcgKzE4Nyw3IEBAIHB1YmxpYzoKKyAKKyAgICAgaW5saW5lIGJvb2wg aGFzUHJldmlvdXMoKSBjb25zdAorICAgICB7CistICAgICAgICByZXR1cm4gcG9zID4gaTsKKysg ICAgICAgIHJldHVybiBsZXNzKGksIHBvcyk7CisgICAgIH0KKyAKKyAgICAgaW5saW5lIHZvaWQg cmVjZWRlKCkKK0BAIC0xOTYsMTYgKzIwNSwyMCBAQCBwdWJsaWM6CisgICAgIHsKKyAgICAgICAg IFFfQVNTRVJUX1goaGFzUHJldmlvdXMoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3Qg YSBwcmV2aW91cyBpdGVtIik7CisgCistICAgICAgICBpZiAoUV9VTkxJS0VMWSgoLS1wb3MpLT5p c0xvd1N1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZKCgtLXBvcyktPmlzTG93 U3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NFUlQoaGFzUHJldmlvdXMoKSAmJiBw b3NbLTFdLmlzSGlnaFN1cnJvZ2F0ZSgpKTsKKyAgICAgICAgICAgICAtLXBvczsKKysgICAgICAg IH0KKyAgICAgfQorIAorICAgICBpbmxpbmUgdWludCBwZWVrUHJldmlvdXNVbmNoZWNrZWQoKSBj b25zdAorICAgICB7CisgICAgICAgICBRX0FTU0VSVF9YKGhhc1ByZXZpb3VzKCksIFFfRlVOQ19J TkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgcHJldmlvdXMgaXRlbSIpOworIAorLSAgICAgICAgaWYg KFFfVU5MSUtFTFkocG9zWy0xXS5pc0xvd1N1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChRX1VO TElLRUxZKHBvc1stMV0uaXNMb3dTdXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FTU0VS VChsZXNzKGkgKyAxLCBwb3MpICYmIHBvc1stMl0uaXNIaWdoU3Vycm9nYXRlKCkpOworICAgICAg ICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0KHBvc1stMl0sIHBvc1stMV0pOwor KyAgICAgICAgfQorICAgICAgICAgcmV0dXJuIHBvc1stMV0udW5pY29kZSgpOworICAgICB9Cisg CitAQCAtMjMwLDggKzI0MywxMCBAQCBwdWJsaWM6CisgICAgICAgICBRX0FTU0VSVF9YKGhhc1By ZXZpb3VzKCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgcHJldmlvdXMgaXRlbSIp OworIAorICAgICAgICAgY29uc3QgUUNoYXIgY3VyID0gKi0tcG9zOworLSAgICAgICAgaWYgKFFf VU5MSUtFTFkoY3VyLmlzTG93U3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFko Y3VyLmlzTG93U3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NFUlQoaGFzUHJldmlv dXMoKSAmJiBwb3NbLTFdLmlzSGlnaFN1cnJvZ2F0ZSgpKTsKKyAgICAgICAgICAgICByZXR1cm4g UUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNCgqLS1wb3MsIGN1cik7CisrICAgICAgICB9CisgICAgICAg ICByZXR1cm4gY3VyLnVuaWNvZGUoKTsKKyAgICAgfQorIAorQEAgLTI0MSw3ICsyNTYsNyBAQCBw dWJsaWM6CisgCisgICAgICAgICBjb25zdCBRQ2hhciB1YyA9ICotLXBvczsKKyAgICAgICAgIGlm IChRX1VOTElLRUxZKHVjLmlzU3Vycm9nYXRlKCkpKSB7CistICAgICAgICAgICAgaWYgKFFfTElL RUxZKHVjLmlzTG93U3Vycm9nYXRlKCkgJiYgcG9zID4gaSAmJiBwb3NbLTFdLmlzSGlnaFN1cnJv Z2F0ZSgpKSkKKysgICAgICAgICAgICBpZiAoUV9MSUtFTFkodWMuaXNMb3dTdXJyb2dhdGUoKSAm JiBoYXNQcmV2aW91cygpICYmIHBvc1stMV0uaXNIaWdoU3Vycm9nYXRlKCkpKQorICAgICAgICAg ICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNCgqLS1wb3MsIHVjKTsKKyAgICAg ICAgICAgICByZXR1cm4gaW52YWxpZEFzOworICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvY29yZWxpYi90aHJlYWQvcWZ1dGV4X3AuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJl YWQvcWZ1dGV4X3AuaAoraW5kZXggZjI4N2I3NTJkNy4uZTI5NDUzNzc4NyAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcWZ1dGV4X3AuaAorKysrIGIvcXRiYXNlL3NyYy9j b3JlbGliL3RocmVhZC9xZnV0ZXhfcC5oCitAQCAtNTIsNiArNTIsNyBAQAorIC8vCisgCisgI2lu Y2x1ZGUgPHFnbG9iYWwuaD4KKysjaW5jbHVkZSA8UXRDb3JlL3F0c2FuX2ltcGwuaD4KKyAKKyBR VF9CRUdJTl9OQU1FU1BBQ0UKKyAKK0BAIC0xMDYsMTYgKzEwNywxMyBAQCBuYW1lc3BhY2UgUXRM aW51eEZ1dGV4IHsKKyAgICAgaW5saW5lIGludCBfcV9mdXRleChpbnQgKmFkZHIsIGludCBvcCwg aW50IHZhbCwgcXVpbnRwdHIgdmFsMiA9IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50 ICphZGRyMiA9IG51bGxwdHIsIGludCB2YWwzID0gMCkgbm9leGNlcHQKKyAgICAgeworLSAgICAg ICAgLy8gQSBmdXRleCBjYWxsIGVuc3VyZXMgdG90YWwgb3JkZXJpbmcgb24gdGhlIGZ1dGV4IHdv cmRzCistICAgICAgICAvLyAoaW4gZWl0aGVyIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiB0aGUgY2Fs bCkuIEluc3RydWN0IFRTQU4gYWNjb3JkaW5nbHksCistICAgICAgICAvLyBhcyBUU0FOIGRvZXMg bm90IHVuZGVyc3RhbmQgdGhlIGZ1dGV4KDIpIHN5c2NhbGwuCistICAgICAgICBfcV90c2FuX3Jl bGVhc2UoYWRkciwgYWRkcjIpOworKyAgICAgICAgUXRUc2FuOjpmdXRleFJlbGVhc2UoYWRkciwg YWRkcjIpOworIAorICAgICAgICAgLy8gd2UgdXNlIF9fTlJfZnV0ZXggYmVjYXVzZSBzb21lIGxp YmNzIChsaWtlIEFuZHJvaWQncyBiaW9uaWMpIGRvbid0CisgICAgICAgICAvLyBwcm92aWRlIFNZ U19mdXRleCBldGMuCisgICAgICAgICBpbnQgcmVzdWx0ID0gc3lzY2FsbChfX05SX2Z1dGV4LCBh ZGRyLCBvcCB8IEZVVEVYX1BSSVZBVEVfRkxBRywgdmFsLCB2YWwyLCBhZGRyMiwgdmFsMyk7Cisg CistICAgICAgICBfcV90c2FuX2FjcXVpcmUoYWRkciwgYWRkcjIpOworKyAgICAgICAgUXRUc2Fu OjpmdXRleEFjcXVpcmUoYWRkciwgYWRkcjIpOworIAorICAgICAgICAgcmV0dXJuIHJlc3VsdDsK KyAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmNw cCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmNwcAoraW5kZXggMzEwZDFjYjE0 Zi4uNzA5NzEyMmQ4ZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11 dGV4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguY3BwCitAQCAt MTUyLDYgKzE1Miw3IEBAIHB1YmxpYzoKKyAKKyAvKiEKKyAgICAgXGVudW0gUU11dGV4OjpSZWN1 cnNpb25Nb2RlCisrICAgIFxvYnNvbGV0ZSBVc2UgUVJlY3Vyc2l2ZU11dGV4IHRvIGNyZWF0ZSBh IHJlY3Vyc2l2ZSBtdXRleC4KKyAKKyAgICAgXHZhbHVlIFJlY3Vyc2l2ZSAgSW4gdGhpcyBtb2Rl LCBhIHRocmVhZCBjYW4gbG9jayB0aGUgc2FtZSBtdXRleAorICAgICAgICAgICAgICAgICAgICAg ICBtdWx0aXBsZSB0aW1lcyBhbmQgdGhlIG11dGV4IHdvbid0IGJlIHVubG9ja2VkCitAQCAtMTcz LDYgKzE3NCw3IEBAIHB1YmxpYzoKKyAKKyAvKiEKKyAgICAgQ29uc3RydWN0cyBhIG5ldyBtdXRl eC4gVGhlIG11dGV4IGlzIGNyZWF0ZWQgaW4gYW4gdW5sb2NrZWQgc3RhdGUuCisrICAgIFxvYnNv bGV0ZSBVc2UgUVJlY3Vyc2l2ZU11dGV4IHRvIGNyZWF0ZSBhIHJlY3Vyc2l2ZSBtdXRleC4KKyAK KyAgICAgSWYgXGEgbW9kZSBpcyBRTXV0ZXg6OlJlY3Vyc2l2ZSwgYSB0aHJlYWQgY2FuIGxvY2sg dGhlIHNhbWUgbXV0ZXgKKyAgICAgbXVsdGlwbGUgdGltZXMgYW5kIHRoZSBtdXRleCB3b24ndCBi ZSB1bmxvY2tlZCB1bnRpbCBhCitAQCAtMTk3LDcgKzE5OSw3IEBAIFFNdXRleDo6UU11dGV4KFJl Y3Vyc2lvbk1vZGUgbW9kZSkKKyBRTXV0ZXg6On5RTXV0ZXgoKQorIHsKKyAgICAgUU11dGV4RGF0 YSAqZCA9IGRfcHRyLmxvYWRSZWxheGVkKCk7CistICAgIGlmIChpc1JlY3Vyc2l2ZSgpKSB7Cisr ICAgIGlmIChRQmFzaWNNdXRleDo6aXNSZWN1cnNpdmUoKSkgeworICAgICAgICAgZGVsZXRlIHN0 YXRpY19jYXN0PFFSZWN1cnNpdmVNdXRleFByaXZhdGUgKj4oZCk7CisgICAgIH0gZWxzZSBpZiAo ZCkgeworICNpZm5kZWYgUVRfTElOVVhfRlVURVgKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGhyZWFkL3FtdXRleC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXgu aAoraW5kZXggNzNjOWUwMDY2My4uMWJhZTU3M2EwMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Y29yZWxpYi90aHJlYWQvcW11dGV4LmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQv cW11dGV4LmgKK0BAIC00Miw2ICs0Miw3IEBACisgCisgI2luY2x1ZGUgPFF0Q29yZS9xZ2xvYmFs Lmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xYXRvbWljLmg+CisrI2luY2x1ZGUgPFF0Q29yZS9xdHNh bl9pbXBsLmg+CisgI2luY2x1ZGUgPG5ldz4KKyAKKyAjaWYgX19oYXNfaW5jbHVkZSg8Y2hyb25v PikKK0BAIC03NywxOSArNzgsMzcgQEAgcHVibGljOgorIAorICAgICAvLyBCYXNpY0xvY2thYmxl IGNvbmNlcHQKKyAgICAgaW5saW5lIHZvaWQgbG9jaygpIFFUX01VVEVYX0xPQ0tfTk9FWENFUFQg eworKyAgICAgICAgUXRUc2FuOjptdXRleFByZUxvY2sodGhpcywgMHUpOworKworICAgICAgICAg aWYgKCFmYXN0VHJ5TG9jaygpKQorICAgICAgICAgICAgIGxvY2tJbnRlcm5hbCgpOworKworKyAg ICAgICAgUXRUc2FuOjptdXRleFBvc3RMb2NrKHRoaXMsIDB1LCAwKTsKKyAgICAgfQorIAorICAg ICAvLyBCYXNpY0xvY2thYmxlIGNvbmNlcHQKKyAgICAgaW5saW5lIHZvaWQgdW5sb2NrKCkgbm9l eGNlcHQgeworICAgICAgICAgUV9BU1NFUlQoZF9wdHIubG9hZFJlbGF4ZWQoKSk7IC8vbXV0ZXgg bXVzdCBiZSBsb2NrZWQKKysKKysgICAgICAgIFF0VHNhbjo6bXV0ZXhQcmVVbmxvY2sodGhpcywg MHUpOworKworICAgICAgICAgaWYgKCFmYXN0VHJ5VW5sb2NrKCkpCisgICAgICAgICAgICAgdW5s b2NrSW50ZXJuYWwoKTsKKysKKysgICAgICAgIFF0VHNhbjo6bXV0ZXhQb3N0VW5sb2NrKHRoaXMs IDB1KTsKKyAgICAgfQorIAorICAgICBib29sIHRyeUxvY2soKSBub2V4Y2VwdCB7CistICAgICAg ICByZXR1cm4gZmFzdFRyeUxvY2soKTsKKysgICAgICAgIHVuc2lnbmVkIHRzYW5GbGFncyA9IFF0 VHNhbjo6VHJ5TG9jazsKKysgICAgICAgIFF0VHNhbjo6bXV0ZXhQcmVMb2NrKHRoaXMsIHRzYW5G bGFncyk7CisrCisrICAgICAgICBjb25zdCBib29sIHN1Y2Nlc3MgPSBmYXN0VHJ5TG9jaygpOwor KworKyAgICAgICAgaWYgKCFzdWNjZXNzKQorKyAgICAgICAgICAgIHRzYW5GbGFncyB8PSBRdFRz YW46OlRyeUxvY2tGYWlsZWQ7CisrICAgICAgICBRdFRzYW46Om11dGV4UG9zdExvY2sodGhpcywg dHNhbkZsYWdzLCAwKTsKKysKKysgICAgICAgIHJldHVybiBzdWNjZXNzOworICAgICB9CisgCisg ICAgIC8vIExvY2thYmxlIGNvbmNlcHQKK0BAIC0xMzQsOCArMTUzLDE2IEBAIHB1YmxpYzoKKyAj ZWxzZQorICAgICBRTXV0ZXgoKSB7IGRfcHRyLnN0b3JlUmVsYXhlZChudWxscHRyKTsgfQorICNl bmRpZgorKyNpZiBRVF9ERVBSRUNBVEVEX1NJTkNFKDUsMTUpCisgICAgIGVudW0gUmVjdXJzaW9u TW9kZSB7IE5vblJlY3Vyc2l2ZSwgUmVjdXJzaXZlIH07CisrICAgIFFUX0RFUFJFQ0FURURfVkVS U0lPTl9YKDUsIDE1LCAiVXNlIFFSZWN1cnNpdmVNdXRleCBpbnN0ZWFkIG9mIGEgcmVjdXJzaXZl IFFNdXRleCIpCisgICAgIGV4cGxpY2l0IFFNdXRleChSZWN1cnNpb25Nb2RlIG1vZGUpOworKwor KyAgICBRVF9ERVBSRUNBVEVEX1ZFUlNJT05fWCg1LCAxNSwgIlVzZSBRUmVjdXJzaXZlTXV0ZXgg aW5zdGVhZCBvZiBhIHJlY3Vyc2l2ZSBRTXV0ZXgiKQorKyAgICBib29sIGlzUmVjdXJzaXZlKCkg Y29uc3Qgbm9leGNlcHQKKysgICAgeyByZXR1cm4gUUJhc2ljTXV0ZXg6OmlzUmVjdXJzaXZlKCk7 IH0KKysjZW5kaWYKKysKKyAgICAgflFNdXRleCgpOworIAorICAgICAvLyBCYXNpY0xvY2thYmxl IGNvbmNlcHQKK0BAIC0xNjYsOSArMTkzLDYgQEAgcHVibGljOgorICAgICB9CisgI2VuZGlmCisg CistICAgIGJvb2wgaXNSZWN1cnNpdmUoKSBjb25zdCBub2V4Y2VwdAorLSAgICB7IHJldHVybiBR QmFzaWNNdXRleDo6aXNSZWN1cnNpdmUoKTsgfQorLQorIHByaXZhdGU6CisgICAgIFFfRElTQUJM RV9DT1BZKFFNdXRleCkKKyAgICAgZnJpZW5kIGNsYXNzIFFNdXRleExvY2tlcjsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNwcCBiL3F0YmFz ZS9zcmMvY29yZWxpYi90aHJlYWQvcXJlYWR3cml0ZWxvY2suY3BwCitpbmRleCA4YzI4NTA3ZDVh Li45ZGQ4NTAzMTE2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xcmVh ZHdyaXRlbG9jay5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXJlYWR3cml0 ZWxvY2suY3BwCitAQCAtMTU1LDcgKzE1NSw3IEBAIFFSZWFkV3JpdGVMb2NrOjpRUmVhZFdyaXRl TG9jayhSZWN1cnNpb25Nb2RlIHJlY3Vyc2lvbk1vZGUpCisgKi8KKyBRUmVhZFdyaXRlTG9jazo6 flFSZWFkV3JpdGVMb2NrKCkKKyB7CistICAgIGF1dG8gZCA9IGRfcHRyLmxvYWRSZWxheGVkKCk7 CisrICAgIGF1dG8gZCA9IGRfcHRyLmxvYWRBY3F1aXJlKCk7CisgICAgIGlmIChpc1VuY29udGVu ZGVkTG9ja2VkKGQpKSB7CisgICAgICAgICBxV2FybmluZygiUVJlYWRXcml0ZUxvY2s6IGRlc3Ry b3lpbmcgbG9ja2VkIFFSZWFkV3JpdGVMb2NrIik7CisgICAgICAgICByZXR1cm47CitAQCAtNDQ1 LDcgKzQ0NSw3IEBAIHZvaWQgUVJlYWRXcml0ZUxvY2s6OnVubG9jaygpCisgLyohIFxpbnRlcm5h bCAgSGVscGVyIGZvciBRV2FpdENvbmRpdGlvbjo6d2FpdCAqLworIFFSZWFkV3JpdGVMb2NrOjpT dGF0ZUZvcldhaXRDb25kaXRpb24gUVJlYWRXcml0ZUxvY2s6OnN0YXRlRm9yV2FpdENvbmRpdGlv bigpIGNvbnN0CisgeworLSAgICBRUmVhZFdyaXRlTG9ja1ByaXZhdGUgKmQgPSBkX3B0ci5sb2Fk UmVsYXhlZCgpOworKyAgICBRUmVhZFdyaXRlTG9ja1ByaXZhdGUgKmQgPSBkX3B0ci5sb2FkQWNx dWlyZSgpOworICAgICBzd2l0Y2ggKHF1aW50cHRyKGQpICYgU3RhdGVNYXNrKSB7CisgICAgIGNh c2UgU3RhdGVMb2NrZWRGb3JSZWFkOiByZXR1cm4gTG9ja2VkRm9yUmVhZDsKKyAgICAgY2FzZSBT dGF0ZUxvY2tlZEZvcldyaXRlOiByZXR1cm4gTG9ja2VkRm9yV3JpdGU7CitAQCAtNDUzLDYgKzQ1 Myw3IEBAIFFSZWFkV3JpdGVMb2NrOjpTdGF0ZUZvcldhaXRDb25kaXRpb24gUVJlYWRXcml0ZUxv Y2s6OnN0YXRlRm9yV2FpdENvbmRpdGlvbigpIGNvCisgCisgICAgIGlmICghZCkKKyAgICAgICAg IHJldHVybiBVbmxvY2tlZDsKKysgICAgY29uc3QgYXV0byBsb2NrID0gcXRfc2NvcGVkX2xvY2so ZC0+bXV0ZXgpOworICAgICBpZiAoZC0+d3JpdGVyQ291bnQgPiAxKQorICAgICAgICAgcmV0dXJu IFJlY3Vyc2l2ZWx5TG9ja2VkOworICAgICBlbHNlIGlmIChkLT53cml0ZXJDb3VudCA9PSAxKQor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXNlbWFwaG9yZS5jcHAgYi9x dGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FzZW1hcGhvcmUuY3BwCitpbmRleCAxZDAxZmMxYjI4 Li4zZWNkZWUzNzQ3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xc2Vt YXBob3JlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xc2VtYXBob3JlLmNw cAorQEAgLTM1NCw3ICszNTQsMTIgQEAgdm9pZCBRU2VtYXBob3JlOjpyZWxlYXNlKGludCBuKQor ICAgICAgICAgcXVpbnRwdHIgbm4gPSB1bnNpZ25lZChuKTsKKyAgICAgICAgIGlmIChmdXRleEhh c1dhaXRlckNvdW50KQorICAgICAgICAgICAgIG5uIHw9IHF1aW50NjQobm4pIDw8IDMyOyAgICAv LyB0b2tlbiBjb3VudCByZXBsaWNhdGVkIGluIGhpZ2ggd29yZAorLSAgICAgICAgcXVpbnRwdHIg cHJldlZhbHVlID0gdS5mZXRjaEFuZEFkZFJlbGVhc2Uobm4pOworKyAgICAgICAgcXVpbnRwdHIg cHJldlZhbHVlID0gdS5sb2FkUmVsYXhlZCgpOworKyAgICAgICAgcXVpbnRwdHIgbmV3VmFsdWU7 CisrICAgICAgICBkbyB7IC8vIGxvb3AganVzdCB0byBlbnN1cmUgdGhlIG9wZXJhdGlvbnMgYXJl IGRvbmUgYXRvbWljYWxseQorKyAgICAgICAgICAgIG5ld1ZhbHVlID0gcHJldlZhbHVlICsgbm47 CisrICAgICAgICAgICAgbmV3VmFsdWUgJj0gKGZ1dGV4TmVlZHNXYWtlQWxsQml0IC0gMSk7Cisr ICAgICAgICB9IHdoaWxlICghdS50ZXN0QW5kU2V0UmVsZWFzZShwcmV2VmFsdWUsIG5ld1ZhbHVl LCBwcmV2VmFsdWUpKTsKKyAgICAgICAgIGlmIChmdXRleE5lZWRzV2FrZShwcmV2VmFsdWUpKSB7 CisgI2lmZGVmIEZVVEVYX09QCisgICAgICAgICAgICAgaWYgKGZ1dGV4SGFzV2FpdGVyQ291bnQp IHsKK0BAIC0zNzYsNyArMzgxLDYgQEAgdm9pZCBRU2VtYXBob3JlOjpyZWxlYXNlKGludCBuKQor ICAgICAgICAgICAgICAgICBxdWludDMyIG9wYXJnID0gMDsKKyAgICAgICAgICAgICAgICAgcXVp bnQzMiBjbXAgPSBGVVRFWF9PUF9DTVBfTkU7CisgICAgICAgICAgICAgICAgIHF1aW50MzIgY21w YXJnID0gMDsKKy0gICAgICAgICAgICAgICAgdS5mZXRjaEFuZEFuZFJlbGVhc2UoZnV0ZXhOZWVk c1dha2VBbGxCaXQgLSAxKTsKKyAgICAgICAgICAgICAgICAgZnV0ZXhXYWtlT3AoKmZ1dGV4TG93 MzIoJnUpLCBuLCBJTlRfTUFYLCAqZnV0ZXhIaWdoMzIoJnUpLCBGVVRFWF9PUChvcCwgb3Bhcmcs IGNtcCwgY21wYXJnKSk7CisgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICB9 CitAQCAtMzg4LDcgKzM5Miw2IEBAIHZvaWQgUVNlbWFwaG9yZTo6cmVsZWFzZShpbnQgbikKKyAg ICAgICAgICAgICAvLyAgICBpdHMgYWNxdWlzaXRpb24gYW55d2F5LCBzbyBpdCBoYXMgdG8gd2Fp dDsKKyAgICAgICAgICAgICAvLyAyKSBpdCBkaWQgbm90IHNlZSB0aGUgbmV3IGNvdW50ZXIgdmFs dWUsIGluIHdoaWNoIGNhc2UgaXRzCisgICAgICAgICAgICAgLy8gICAgZnV0ZXhXYWl0IHdpbGwg ZmFpbC4KKy0gICAgICAgICAgICB1LmZldGNoQW5kQW5kUmVsZWFzZShmdXRleE5lZWRzV2FrZUFs bEJpdCAtIDEpOworICAgICAgICAgICAgIGlmIChmdXRleEhhc1dhaXRlckNvdW50KSB7CisgICAg ICAgICAgICAgICAgIGZ1dGV4V2FrZUFsbCgqZnV0ZXhMb3czMigmdSkpOworICAgICAgICAgICAg ICAgICBmdXRleFdha2VBbGwoKmZ1dGV4SGlnaDMyKCZ1KSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3AuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJl YWQvcXRocmVhZF9wLmgKK2luZGV4IGIyZDE2MjhlNmUuLmYzMmY2ZjA0NjAgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfcC5oCisrKysgYi9xdGJhc2Uvc3Jj L2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfcC5oCitAQCAtMTc0LDcgKzE3NCw3IEBAIHB1YmxpYzoK KyAgICAgaW50IHJldHVybkNvZGU7CisgCisgICAgIHVpbnQgc3RhY2tTaXplOworLSAgICBRVGhy ZWFkOjpQcmlvcml0eSBwcmlvcml0eTsKKysgICAgc3RkOjp1bmRlcmx5aW5nX3R5cGU8UVRocmVh ZDo6UHJpb3JpdHk+Ojp0eXBlIHByaW9yaXR5OworIAorICAgICBzdGF0aWMgUVRocmVhZCAqdGhy ZWFkRm9ySWQoaW50IGlkKTsKKyAKK0BAIC0yMTMsNiArMjEzLDEzIEBAIHB1YmxpYzoKKyAgICAg ICAgICAgICBRQ29yZUFwcGxpY2F0aW9uOjppbnN0YW5jZSgpLT5wb3N0RXZlbnQocV9wdHIsIG5l dyBRRXZlbnQoUUV2ZW50OjpRdWl0KSk7CisgICAgICAgICB9CisgICAgIH0KKysKKysjaWZuZGVm IFFfT1NfSU5URUdSSVRZCisrcHJpdmF0ZToKKysgICAgLy8gVXNlZCBpbiBRVGhyZWFkKFByaXZh dGUpOjpzdGFydCB0byBhdm9pZCByYWN5IGFjY2VzcyB0byBRT2JqZWN0OjpvYmplY3ROYW1lLAor KyAgICAvLyB1bnNldCBhZnRlcndhcmRzLiBPbiBJTlRFR1JJVFkgd2Ugc2V0IHRoZSB0aHJlYWQg bmFtZSBiZWZvcmUgc3RhcnRpbmcgaXQuCisrICAgIFFTdHJpbmcgb2JqZWN0TmFtZTsKKysjZW5k aWYKKyB9OworIAorICNlbHNlIC8vIFFUX0NPTkZJRyh0aHJlYWQpCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9jb3Jl bGliL3RocmVhZC9xdGhyZWFkX3VuaXguY3BwCitpbmRleCA1NmE4ZTBhMDM4Li42MTAxMTdhNjQw IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3VuaXguY3Bw CisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfdW5peC5jcHAKK0BAIC0x NjksOCArMTY5LDcgQEAgc3RhdGljIHZvaWQgc2V0X3RocmVhZF9kYXRhKFFUaHJlYWREYXRhICpk YXRhKQorIAorIHN0YXRpYyB2b2lkIGNsZWFyX3RocmVhZF9kYXRhKCkKKyB7CistICAgIGN1cnJl bnRUaHJlYWREYXRhID0gbnVsbHB0cjsKKy0gICAgcHRocmVhZF9zZXRzcGVjaWZpYyhjdXJyZW50 X3RocmVhZF9kYXRhX2tleSwgbnVsbHB0cik7CisrICAgIHNldF90aHJlYWRfZGF0YShudWxscHRy KTsKKyB9CisgCisgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitAQCAtMjk2LDcgKzI5NSw3IEBAIHZv aWQgKlFUaHJlYWRQcml2YXRlOjpzdGFydCh2b2lkICphcmcpCisgICAgICAgICAgICAgUU11dGV4 TG9ja2VyIGxvY2tlcigmdGhyLT5kX2Z1bmMoKS0+bXV0ZXgpOworIAorICAgICAgICAgICAgIC8v IGRvIHdlIG5lZWQgdG8gcmVzZXQgdGhlIHRocmVhZCBwcmlvcml0eT8KKy0gICAgICAgICAgICBp ZiAoaW50KHRoci0+ZF9mdW5jKCktPnByaW9yaXR5KSAmIFRocmVhZFByaW9yaXR5UmVzZXRGbGFn KSB7CisrICAgICAgICAgICAgaWYgKHRoci0+ZF9mdW5jKCktPnByaW9yaXR5ICYgVGhyZWFkUHJp b3JpdHlSZXNldEZsYWcpIHsKKyAgICAgICAgICAgICAgICAgdGhyLT5kX2Z1bmMoKS0+c2V0UHJp b3JpdHkoUVRocmVhZDo6UHJpb3JpdHkodGhyLT5kX2Z1bmMoKS0+cHJpb3JpdHkgJiB+VGhyZWFk UHJpb3JpdHlSZXNldEZsYWcpKTsKKyAgICAgICAgICAgICB9CisgCitAQCAtMzE2LDEwICszMTUs MTAgQEAgdm9pZCAqUVRocmVhZFByaXZhdGU6OnN0YXJ0KHZvaWQgKmFyZykKKyAgICAgICAgICAg ICAvLyBTZXRzIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IHRocmVhZC4gV2UgY2FuIG9ubHkgZG8g dGhpcworICAgICAgICAgICAgIC8vIHdoZW4gdGhlIHRocmVhZCBpcyBzdGFydGluZywgYXMgd2Ug ZG9uJ3QgaGF2ZSBhIGNyb3NzCisgICAgICAgICAgICAgLy8gcGxhdGZvcm0gd2F5IG9mIHNldHRp bmcgdGhlIG5hbWUgb2YgYW4gYXJiaXRyYXJ5IHRocmVhZC4KKy0gICAgICAgICAgICBpZiAoUV9M SUtFTFkodGhyLT5vYmplY3ROYW1lKCkuaXNFbXB0eSgpKSkKKysgICAgICAgICAgICBpZiAoUV9M SUtFTFkodGhyLT5kX2Z1bmMoKS0+b2JqZWN0TmFtZS5pc0VtcHR5KCkpKQorICAgICAgICAgICAg ICAgICBzZXRDdXJyZW50VGhyZWFkTmFtZSh0aHItPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkp OworICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgc2V0Q3VycmVudFRocmVhZE5h bWUodGhyLT5vYmplY3ROYW1lKCkudG9Mb2NhbDhCaXQoKSk7CisrICAgICAgICAgICAgICAgIHNl dEN1cnJlbnRUaHJlYWROYW1lKHN0ZDo6ZXhjaGFuZ2UodGhyLT5kX2Z1bmMoKS0+b2JqZWN0TmFt ZSwge30pLnRvTG9jYWw4Qml0KCkpOworICAgICAgICAgfQorICNlbmRpZgorIAorQEAgLTY3MSw3 ICs2NzAsNyBAQCB2b2lkIFFUaHJlYWQ6OnN0YXJ0KFByaW9yaXR5IHByaW9yaXR5KQorICAgICAg ICAgICAgICAgICAvLyBjb3VsZCBub3Qgc2V0IHNjaGVkdWxpbmcgaGludHMsIGZhbGxiYWNrIHRv IGluaGVyaXRpbmcgdGhlbQorICAgICAgICAgICAgICAgICAvLyB3ZSdsbCB0cnkgYWdhaW4gZnJv bSBpbnNpZGUgdGhlIHRocmVhZAorICAgICAgICAgICAgICAgICBwdGhyZWFkX2F0dHJfc2V0aW5o ZXJpdHNjaGVkKCZhdHRyLCBQVEhSRUFEX0lOSEVSSVRfU0NIRUQpOworLSAgICAgICAgICAgICAg ICBkLT5wcmlvcml0eSA9IFByaW9yaXR5KHByaW9yaXR5IHwgVGhyZWFkUHJpb3JpdHlSZXNldEZs YWcpOworKyAgICAgICAgICAgICAgICBkLT5wcmlvcml0eSA9IHN0YXRpY19jYXN0PHN0ZDo6dW5k ZXJseWluZ190eXBlPFFUaHJlYWQ6OlByaW9yaXR5Pjo6dHlwZT4ocHJpb3JpdHkpIHwgVGhyZWFk UHJpb3JpdHlSZXNldEZsYWc7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgfQorQEAgLTcwMiw3ICs3MDEsMTAgQEAgdm9pZCBRVGhyZWFkOjpzdGFydChQcmlv cml0eSBwcmlvcml0eSkKKyAgICAgICAgIHB0aHJlYWRfYXR0cl9zZXR0aHJlYWRuYW1lKCZhdHRy LCBtZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpKTsKKyAgICAgZWxzZQorICAgICAgICAgcHRocmVh ZF9hdHRyX3NldHRocmVhZG5hbWUoJmF0dHIsIG9iamVjdE5hbWUoKS50b0xvY2FsOEJpdCgpKTsK KysjZWxzZQorKyAgICBkLT5vYmplY3ROYW1lID0gb2JqZWN0TmFtZSgpOworICNlbmRpZgorKwor ICAgICBwdGhyZWFkX3QgdGhyZWFkSWQ7CisgICAgIGludCBjb2RlID0gcHRocmVhZF9jcmVhdGUo JnRocmVhZElkLCAmYXR0ciwgUVRocmVhZFByaXZhdGU6OnN0YXJ0LCB0aGlzKTsKKyAgICAgaWYg KGNvZGUgPT0gRVBFUk0pIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFk L3F0aHJlYWRfd2luLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF93aW4u Y3BwCitpbmRleCBiYzcwZTMxNzhhLi40ZTc2OTcyNDk4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3dpbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxp Yi90aHJlYWQvcXRocmVhZF93aW4uY3BwCitAQCAtMzk0LDEwICszOTQsOSBAQCB1bnNpZ25lZCBp bnQgX19zdGRjYWxsIFFUX0VOU1VSRV9TVEFDS19BTElHTkVEX0ZPUl9TU0UgUVRocmVhZFByaXZh dGU6OnN0YXJ0KHZvaQorIAorICNpZiAhZGVmaW5lZChRVF9OT19ERUJVRykgJiYgZGVmaW5lZChR X0NDX01TVkMpICYmICFkZWZpbmVkKFFfT1NfV0lOUlQpCisgICAgIC8vIHNldHMgdGhlIG5hbWUg b2YgdGhlIGN1cnJlbnQgdGhyZWFkLgorLSAgICBRQnl0ZUFycmF5IG9iamVjdE5hbWUgPSB0aHIt Pm9iamVjdE5hbWUoKS50b0xvY2FsOEJpdCgpOworLSAgICBxdF9zZXRfdGhyZWFkX25hbWUoSEFO RExFKC0xKSwKKy0gICAgICAgICAgICAgICAgICAgICAgIG9iamVjdE5hbWUuaXNFbXB0eSgpID8K Ky0gICAgICAgICAgICAgICAgICAgICAgIHRoci0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKSA6 IG9iamVjdE5hbWUuY29uc3REYXRhKCkpOworKyAgICBxdF9zZXRfdGhyZWFkX25hbWUoSEFORExF KC0xKSwgdGhyLT5kX2Z1bmMoKS0+b2JqZWN0TmFtZS5pc0VtcHR5KCkKKysgICAgICAgICAgICAg ICAgICAgICAgICA/IHRoci0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKQorKyAgICAgICAgICAg ICAgICAgICAgICAgIDogc3RkOjpleGNoYW5nZSh0aHItPmRfZnVuYygpLT5vYmplY3ROYW1lLCB7 fSkudG9Mb2NhbDhCaXQoKS5jb25zdERhdGEoKSk7CisgI2VuZGlmCisgCisgICAgIGVtaXQgdGhy LT5zdGFydGVkKFFUaHJlYWQ6OlFQcml2YXRlU2lnbmFsKCkpOworQEAgLTUwMyw2ICs1MDIsNyBA QCB2b2lkIFFUaHJlYWQ6OnN0YXJ0KFByaW9yaXR5IHByaW9yaXR5KQorICAgICBpZiAoZC0+cnVu bmluZykKKyAgICAgICAgIHJldHVybjsKKyAKKysgICAgZC0+b2JqZWN0TmFtZSA9IG9iamVjdE5h bWUoKTsKKyAgICAgZC0+cnVubmluZyA9IHRydWU7CisgICAgIGQtPmZpbmlzaGVkID0gZmFsc2U7 CisgICAgIGQtPmV4aXRlZCA9IGZhbHNlOworQEAgLTU0OCw3ICs1NDgsNyBAQCB2b2lkIFFUaHJl YWQ6OnN0YXJ0KFByaW9yaXR5IHByaW9yaXR5KQorIAorICAgICBpbnQgcHJpbzsKKyAgICAgZC0+ cHJpb3JpdHkgPSBwcmlvcml0eTsKKy0gICAgc3dpdGNoIChkLT5wcmlvcml0eSkgeworKyAgICBz d2l0Y2ggKHByaW9yaXR5KSB7CisgICAgIGNhc2UgSWRsZVByaW9yaXR5OgorICAgICAgICAgcHJp byA9IFRIUkVBRF9QUklPUklUWV9JRExFOworICAgICAgICAgYnJlYWs7CitAQCAtNjg2LDcgKzY4 Niw3IEBAIHZvaWQgUVRocmVhZFByaXZhdGU6OnNldFByaW9yaXR5KFFUaHJlYWQ6OlByaW9yaXR5 IHRocmVhZFByaW9yaXR5KQorIAorICAgICBpbnQgcHJpbzsKKyAgICAgcHJpb3JpdHkgPSB0aHJl YWRQcmlvcml0eTsKKy0gICAgc3dpdGNoIChwcmlvcml0eSkgeworKyAgICBzd2l0Y2ggKHRocmVh ZFByaW9yaXR5KSB7CisgICAgIGNhc2UgUVRocmVhZDo6SWRsZVByaW9yaXR5OgorICAgICAgICAg cHJpbyA9IFRIUkVBRF9QUklPUklUWV9JRExFOworICAgICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdHNhbl9pbXBsLmggYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGhyZWFkL3F0c2FuX2ltcGwuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAwMDAuLjU4MGE3MzhiOTEKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0YmFzZS9zcmMvY29y ZWxpYi90aHJlYWQvcXRzYW5faW1wbC5oCitAQCAtMCwwICsxLDExNSBAQAorKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCisrKioKKysqKiBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24u CisrKiogQ29weXJpZ2h0IChDKSAyMDIyIEtsYXLDpGx2ZGFsZW5zIERhdGFrb25zdWx0IEFCLCBh IEtEQUIgR3JvdXAgY29tcGFueSwgaW5mb0BrZGFiLmNvbSwgYXV0aG9yIEdpdXNlcHBlIEQnQW5n ZWxvIDxnaXVzZXBwZS5kYW5nZWxvQGtkYWIuY29tPgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3 LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdENv cmUgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6 TEdQTCQKKysqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGlu ZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiog YWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVk IHdpdGggdGhlCisrKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ug d2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3 ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQg Y29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1 cnRoZXIKKysqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3 dy5xdC5pby9jb250YWN0LXVzLgorKyoqCisrKiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlcgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5k YXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGlu IHRoZQorKyoqIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxv d2luZyBpbmZvcm1hdGlvbiB0bworKyoqIGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIHZlcnNpb24gMyByZXF1aXJlbWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0 cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sLgorKyoqCisrKiogR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUg bWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIHZlcnNpb24gMi4wIG9yIChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFs CisrKiogUHVibGljIGxpY2Vuc2UgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJv dmVkIGJ5IHRoZSBLREUgRnJlZQorKyoqIFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUg YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBw ZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5j bHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZv bGxvd2luZworKyoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKKysqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAorKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvZ3BsLTMuMC5odG1sLgorKyoqCisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KKysKKysjaWZuZGVmIFFUU0FOX0lNUExfSAorKyNkZWZpbmUgUVRT QU5fSU1QTF9ICisrCisrI2luY2x1ZGUgPFF0Q29yZS9xZ2xvYmFsLmg+CisrCisrI2lmIChfX2hh c19mZWF0dXJlKHRocmVhZF9zYW5pdGl6ZXIpIHx8IGRlZmluZWQoX19TQU5JVElaRV9USFJFQURf XykpICYmIF9faGFzX2luY2x1ZGUoPHNhbml0aXplci90c2FuX2ludGVyZmFjZS5oPikKKysjICBk ZWZpbmUgUVRfQlVJTERJTkdfVU5ERVJfVFNBTgorKyMgIGluY2x1ZGUgPHNhbml0aXplci90c2Fu X2ludGVyZmFjZS5oPgorKyNlbmRpZgorKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworK25hbWVz cGFjZSBRdFRzYW4geworKyNpZmRlZiBRVF9CVUlMRElOR19VTkRFUl9UU0FOCisraW5saW5lIHZv aWQgZnV0ZXhBY3F1aXJlKHZvaWQgKmFkZHIsIHZvaWQgKmFkZHIyID0gbnVsbHB0cikKKyt7Cisr ICAgIC8vIEEgZnV0ZXggY2FsbCBlbnN1cmVzIHRvdGFsIG9yZGVyaW5nIG9uIHRoZSBmdXRleCB3 b3JkcworKyAgICAvLyAoaW4gZWl0aGVyIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiB0aGUgY2FsbCku IEluc3RydWN0IFRTQU4gYWNjb3JkaW5nbHksCisrICAgIC8vIGFzIFRTQU4gZG9lcyBub3QgdW5k ZXJzdGFuZCB0aGUgZnV0ZXgoMikgc3lzY2FsbCAob3IgZXF1aXZhbGVudCkuCisrICAgIDo6X190 c2FuX2FjcXVpcmUoYWRkcik7CisrICAgIGlmIChhZGRyMikKKysgICAgICAgIDo6X190c2FuX2Fj cXVpcmUoYWRkcjIpOworK30KKysKKytpbmxpbmUgdm9pZCBmdXRleFJlbGVhc2Uodm9pZCAqYWRk ciwgdm9pZCAqYWRkcjIgPSBudWxscHRyKQorK3sKKysgICAgaWYgKGFkZHIyKQorKyAgICAgICAg OjpfX3RzYW5fcmVsZWFzZShhZGRyMik7CisrICAgIDo6X190c2FuX3JlbGVhc2UoYWRkcik7Cisr fQorKworK2lubGluZSB2b2lkIG11dGV4UHJlTG9jayh2b2lkICphZGRyLCB1bnNpZ25lZCBmbGFn cykKKyt7CisrICAgIDo6X190c2FuX211dGV4X3ByZV9sb2NrKGFkZHIsIGZsYWdzKTsKKyt9Cisr CisraW5saW5lIHZvaWQgbXV0ZXhQb3N0TG9jayh2b2lkICphZGRyLCB1bnNpZ25lZCBmbGFncywg aW50IHJlY3Vyc2lvbikKKyt7CisrICAgIDo6X190c2FuX211dGV4X3Bvc3RfbG9jayhhZGRyLCBm bGFncywgcmVjdXJzaW9uKTsKKyt9CisrCisraW5saW5lIHZvaWQgbXV0ZXhQcmVVbmxvY2sodm9p ZCAqYWRkciwgdW5zaWduZWQgZmxhZ3MpCisreworKyAgICA6Ol9fdHNhbl9tdXRleF9wcmVfdW5s b2NrKGFkZHIsIGZsYWdzKTsKKyt9CisrCisraW5saW5lIHZvaWQgbXV0ZXhQb3N0VW5sb2NrKHZv aWQgKmFkZHIsIHVuc2lnbmVkIGZsYWdzKQorK3sKKysgICAgOjpfX3RzYW5fbXV0ZXhfcG9zdF91 bmxvY2soYWRkciwgZmxhZ3MpOworK30KKysKKytlbnVtIDogdW5zaWduZWQgeworKyAgICBNdXRl eFdyaXRlUmVlbnRyYW50ID0gOjpfX3RzYW5fbXV0ZXhfd3JpdGVfcmVlbnRyYW50LAorKyAgICBU cnlMb2NrID0gOjpfX3RzYW5fbXV0ZXhfdHJ5X2xvY2ssCisrICAgIFRyeUxvY2tGYWlsZWQgPSA6 Ol9fdHNhbl9tdXRleF90cnlfbG9ja19mYWlsZWQsCisrfTsKKysjZWxzZQorK2lubGluZSB2b2lk IGZ1dGV4QWNxdWlyZSh2b2lkICosIHZvaWQgKiA9IG51bGxwdHIpIHt9CisraW5saW5lIHZvaWQg ZnV0ZXhSZWxlYXNlKHZvaWQgKiwgdm9pZCAqID0gbnVsbHB0cikge30KKysKKytlbnVtIDogdW5z aWduZWQgeworKyAgICBNdXRleFdyaXRlUmVlbnRyYW50LAorKyAgICBUcnlMb2NrLAorKyAgICBU cnlMb2NrRmFpbGVkLAorK307CisraW5saW5lIHZvaWQgbXV0ZXhQcmVMb2NrKHZvaWQgKiwgdW5z aWduZWQpIHt9CisraW5saW5lIHZvaWQgbXV0ZXhQb3N0TG9jayh2b2lkICosIHVuc2lnbmVkLCBp bnQpIHt9CisraW5saW5lIHZvaWQgbXV0ZXhQcmVVbmxvY2sodm9pZCAqLCB1bnNpZ25lZCkge30K KytpbmxpbmUgdm9pZCBtdXRleFBvc3RVbmxvY2sodm9pZCAqLCB1bnNpZ25lZCkge30KKysjZW5k aWYgLy8gUVRfQlVJTERJTkdfVU5ERVJfVFNBTgorK30gLy8gbmFtZXNwYWNlIFF0VHNhbgorKwor K1FUX0VORF9OQU1FU1BBQ0UKKysKKysjZW5kaWYgLy8gUVRTQU5fSU1QTF9ICitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcCBiL3F0 YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHAKK2luZGV4IDg4 YjA1OGY0MTAuLjBmMWRhNGRjOWIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhy ZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhy ZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3BwCitAQCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgUVdh aXRDb25kaXRpb246OndhaXQoUU11dGV4ICptdXRleCwgUURlYWRsaW5lVGltZXIgZGVhZGxpbmUp CisgeworICAgICBpZiAoISBtdXRleCkKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgaWYg KG11dGV4LT5pc1JlY3Vyc2l2ZSgpKSB7CisrICAgIGlmIChzdGF0aWNfY2FzdDxRQmFzaWNNdXRl eCAqPihtdXRleCktPmlzUmVjdXJzaXZlKCkpIHsKKyAgICAgICAgIHFXYXJuaW5nKCJRV2FpdENv bmRpdGlvbjogY2Fubm90IHdhaXQgb24gcmVjdXJzaXZlIG11dGV4ZXMiKTsKKyAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1l L3FkYXRldGltZS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xZGF0ZXRpbWUuY3BwCitp bmRleCBlYzEyNTY5ZTNmLi4yYzBiMDk4MDc5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3Jl bGliL3RpbWUvcWRhdGV0aW1lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcWRh dGV0aW1lLmNwcAorQEAgLTQzLDYgKzQzLDcgQEAKKyAjaWYgUVRfQ09ORklHKGRhdGV0aW1lcGFy c2VyKQorICNpbmNsdWRlICJwcml2YXRlL3FkYXRldGltZXBhcnNlcl9wLmgiCisgI2VuZGlmCisr I2luY2x1ZGUgPHByaXZhdGUvcW51bWVyaWNfcC5oPgorIAorICNpbmNsdWRlICJxZGF0YXN0cmVh bS5oIgorICNpbmNsdWRlICJxc2V0LmgiCitAQCAtMTQyOSw5ICsxNDMwLDExIEBAIFFEYXRlIFFE YXRlOjphZGREYXlzKHFpbnQ2NCBuZGF5cykgY29uc3QKKyAgICAgaWYgKGlzTnVsbCgpKQorICAg ICAgICAgcmV0dXJuIFFEYXRlKCk7CisgCistICAgIC8vIER1ZSB0byBsaW1pdHMgb24gbWluSmQo KSBhbmQgbWF4SmQoKSB3ZSBrbm93IHRoYXQgYW55IG92ZXJmbG93CistICAgIC8vIHdpbGwgYmUg aW52YWxpZCBhbmQgY2F1Z2h0IGJ5IGZyb21KdWxpYW5EYXkoKS4KKy0gICAgcmV0dXJuIGZyb21K dWxpYW5EYXkoamQgKyBuZGF5cyk7CisrICAgIHFpbnQ2NCByOworKyAgICBpZiAoUV9VTkxJS0VM WShhZGRfb3ZlcmZsb3coamQsIG5kYXlzLCAmcikpKQorKyAgICAgICAgcmV0dXJuIFFEYXRlKCk7 CisrICAgIGVsc2UKKysgICAgICAgIHJldHVybiBmcm9tSnVsaWFuRGF5KHIpOworIH0KKyAKKyAv KiEKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmUuY3BwIGIv cXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lLmNwcAoraW5kZXggMDMwOWU0M2U1Mi4u M2Q0NTE2OTZhMSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9u ZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZS5jcHAKK0BAIC0x LDYgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKy0qKiBDb3B5cmlnaHQgKEMp IDIwMTMgSm9obiBMYXl0IDxqbGF5dEBrZGUub3JnPgorKyoqIENvcHlyaWdodCAoQykgMjAyMCBK b2huIExheXQgPGpsYXl0QGtkZS5vcmc+CisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8v bGljZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0Q29yZSBtb2R1 bGUgb2YgdGhlIFF0IFRvb2xraXQuCitAQCAtOTc1LDkgKzk3NSwxNSBAQCBRTGlzdDxRQnl0ZUFy cmF5PiBRVGltZVpvbmU6OndpbmRvd3NJZFRvSWFuYUlkcyhjb25zdCBRQnl0ZUFycmF5ICZ3aW5k b3dzSWQsCisgfQorIAorICNpZm5kZWYgUVRfTk9fREFUQVNUUkVBTQorKy8vIEludmFsaWQsIGFz IGFuIElBTkEgSUQ6IHRvbyBsb25nLCBzdGFydHMgd2l0aCAtIGFuZCBoYXMgb3RoZXIgaW52YWxp ZCBjaGFyYWN0ZXJzIGluIGl0Cisrc3RhdGljIGlubGluZSBRU3RyaW5nIGludmFsaWRJZCgpIHsg cmV0dXJuIFFTdHJpbmdMaXRlcmFsKCItTm8gVGltZSBab25lIFNwZWNpZmllZCEiKTsgfQorKwor IFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KFFEYXRhU3RyZWFtICZkcywgY29uc3QgUVRpbWVab25l ICZ0eikKKyB7CistICAgIHR6LmQtPnNlcmlhbGl6ZShkcyk7CisrICAgIGlmICh0ei5pc1ZhbGlk KCkpCisrICAgICAgICB0ei5kLT5zZXJpYWxpemUoZHMpOworKyAgICBlbHNlCisrICAgICAgICBk cyA8PCBpbnZhbGlkSWQoKTsKKyAgICAgcmV0dXJuIGRzOworIH0KKyAKK0BAIC05ODUsNyArOTkx LDkgQEAgUURhdGFTdHJlYW0gJm9wZXJhdG9yPj4oUURhdGFTdHJlYW0gJmRzLCBRVGltZVpvbmUg JnR6KQorIHsKKyAgICAgUVN0cmluZyBpYW5hSWQ7CisgICAgIGRzID4+IGlhbmFJZDsKKy0gICAg aWYgKGlhbmFJZCA9PSBRTGF0aW4xU3RyaW5nKCJPZmZzZXRGcm9tVXRjIikpIHsKKysgICAgaWYg KGlhbmFJZCA9PSBpbnZhbGlkSWQoKSkgeworKyAgICAgICAgdHogPSBRVGltZVpvbmUoKTsKKysg ICAgfSBlbHNlIGlmIChpYW5hSWQgPT0gUUxhdGluMVN0cmluZygiT2Zmc2V0RnJvbVV0YyIpKSB7 CisgICAgICAgICBpbnQgdXRjT2Zmc2V0OworICAgICAgICAgUVN0cmluZyBuYW1lOworICAgICAg ICAgUVN0cmluZyBhYmJyZXZpYXRpb247CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGli L3RpbWUvcXRpbWV6b25lcHJpdmF0ZV90ei5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9x dGltZXpvbmVwcml2YXRlX3R6LmNwcAoraW5kZXggYjE2MTFkN2RkYi4uYTdhNmE3MmNjZiAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZXByaXZhdGVfdHouY3Bw CisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmVwcml2YXRlX3R6LmNwcAor QEAgLTQyLDYgKzQyLDcgQEAKKyAjaW5jbHVkZSAicXRpbWV6b25lLmgiCisgI2luY2x1ZGUgInF0 aW1lem9uZXByaXZhdGVfcC5oIgorICNpbmNsdWRlICJwcml2YXRlL3Fsb2NhbGVfdG9vbHNfcC5o IgorKyNpbmNsdWRlICJwcml2YXRlL3Fsb2NraW5nX3AuaCIKKyAKKyAjaW5jbHVkZSA8UXRDb3Jl L1FEYXRhU3RyZWFtPgorICNpbmNsdWRlIDxRdENvcmUvUURhdGVUaW1lPgorQEAgLTYyLDYgKzYz LDEwIEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisrI2lmIFFUX0NPTkZJRyhpY3UpCisr c3RhdGljIFFCYXNpY011dGV4IHNfaWN1X211dGV4OworKyNlbmRpZgorKworIC8qCisgICAgIFBy aXZhdGUKKyAKK0BAIC02NzAsNiArNjc1LDkgQEAgUVR6VGltZVpvbmVQcml2YXRlOjp+UVR6VGlt ZVpvbmVQcml2YXRlKCkKKyAKKyBRVHpUaW1lWm9uZVByaXZhdGUgKlFUelRpbWVab25lUHJpdmF0 ZTo6Y2xvbmUoKSBjb25zdAorIHsKKysjaWYgUVRfQ09ORklHKGljdSkKKysgICAgY29uc3QgYXV0 byBsb2NrID0gcXRfc2NvcGVkX2xvY2soc19pY3VfbXV0ZXgpOworKyNlbmRpZgorICAgICByZXR1 cm4gbmV3IFFUelRpbWVab25lUHJpdmF0ZSgqdGhpcyk7CisgfQorIAorQEAgLTkxMywxMiArOTIx LDE0IEBAIFFTdHJpbmcgUVR6VGltZVpvbmVQcml2YXRlOjpkaXNwbGF5TmFtZShxaW50NjQgYXRN U2Vjc1NpbmNlRXBvY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IFFMb2NhbGUgJmxvY2FsZSkgY29uc3QKKyB7CisgI2lmIFFUX0NPTkZJRyhpY3UpCisr ICAgIGF1dG8gbG9jayA9IHF0X3VuaXF1ZV9sb2NrKHNfaWN1X211dGV4KTsKKyAgICAgaWYgKCFt X2ljdSkKKyAgICAgICAgIG1faWN1ID0gbmV3IFFJY3VUaW1lWm9uZVByaXZhdGUobV9pZCk7Cisg ICAgIC8vIFRPRE8gc21hbGwgcmlzayBtYXkgbm90IG1hdGNoIGlmIHRyYW4gdGltZXMgZGlmZmVy IGR1ZSB0byBvdXRkYXRlZCBmaWxlcworICAgICAvLyBUT0RPIFNvbWUgdmFsaWQgVFogbmFtZXMg YXJlIG5vdCB2YWxpZCBJQ1UgbmFtZXMsIHVzZSB0cmFuc2xhdGlvbiB0YWJsZT8KKyAgICAgaWYg KG1faWN1LT5pc1ZhbGlkKCkpCisgICAgICAgICByZXR1cm4gbV9pY3UtPmRpc3BsYXlOYW1lKGF0 TVNlY3NTaW5jZUVwb2NoLCBuYW1lVHlwZSwgbG9jYWxlKTsKKysgICAgbG9jay51bmxvY2soKTsK KyAjZWxzZQorICAgICBRX1VOVVNFRChuYW1lVHlwZSkKKyAgICAgUV9VTlVTRUQobG9jYWxlKQor QEAgLTkzMiwxMiArOTQyLDE0IEBAIFFTdHJpbmcgUVR6VGltZVpvbmVQcml2YXRlOjpkaXNwbGF5 TmFtZShRVGltZVpvbmU6OlRpbWVUeXBlIHRpbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBRTG9jYWxlICZsb2NhbGUpIGNvbnN0CisgeworICNp ZiBRVF9DT05GSUcoaWN1KQorKyAgICBhdXRvIGxvY2sgPSBxdF91bmlxdWVfbG9jayhzX2ljdV9t dXRleCk7CisgICAgIGlmICghbV9pY3UpCisgICAgICAgICBtX2ljdSA9IG5ldyBRSWN1VGltZVpv bmVQcml2YXRlKG1faWQpOworICAgICAvLyBUT0RPIHNtYWxsIHJpc2sgbWF5IG5vdCBtYXRjaCBp ZiB0cmFuIHRpbWVzIGRpZmZlciBkdWUgdG8gb3V0ZGF0ZWQgZmlsZXMKKyAgICAgLy8gVE9ETyBT b21lIHZhbGlkIFRaIG5hbWVzIGFyZSBub3QgdmFsaWQgSUNVIG5hbWVzLCB1c2UgdHJhbnNsYXRp b24gdGFibGU/CisgICAgIGlmIChtX2ljdS0+aXNWYWxpZCgpKQorICAgICAgICAgcmV0dXJuIG1f aWN1LT5kaXNwbGF5TmFtZSh0aW1lVHlwZSwgbmFtZVR5cGUsIGxvY2FsZSk7CisrICAgIGxvY2su dW5sb2NrKCk7CisgI2Vsc2UKKyAgICAgUV9VTlVTRUQodGltZVR5cGUpCisgICAgIFFfVU5VU0VE KG5hbWVUeXBlKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xYXJyYXlk YXRhLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWFycmF5ZGF0YS5oCitpbmRleCBkY2Q5 NTkyNGMxLi5kMDE3MzllN2U2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xz L3FhcnJheWRhdGEuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FhcnJheWRhdGEu aAorQEAgLTQyLDYgKzQyLDcgQEAKKyAKKyAjaW5jbHVkZSA8UXRDb3JlL3FyZWZjb3VudC5oPgor ICNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8Y3N0ZGludD4KKyAKKyBRVF9CRUdJTl9O QU1FU1BBQ0UKKyAKK0BAIC01OCwxNCArNTksMTQgQEAgc3RydWN0IFFfQ09SRV9FWFBPUlQgUUFy cmF5RGF0YQorICAgICB7CisgICAgICAgICBRX0FTU0VSVChzaXplID09IDAKKyAgICAgICAgICAg ICAgICAgfHwgb2Zmc2V0IDwgMCB8fCBzaXplX3Qob2Zmc2V0KSA+PSBzaXplb2YoUUFycmF5RGF0 YSkpOworLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciAqPih0aGlzKSArIG9m ZnNldDsKKysgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQgKj4gKHJlaW50ZXJw cmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSArIG9mZnNldCk7CisgICAgIH0KKyAKKyAgICAgY29u c3Qgdm9pZCAqZGF0YSgpIGNvbnN0CisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUKHNpemUgPT0g MAorICAgICAgICAgICAgICAgICB8fCBvZmZzZXQgPCAwIHx8IHNpemVfdChvZmZzZXQpID49IHNp emVvZihRQXJyYXlEYXRhKSk7CistICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25z dCBjaGFyICo+KHRoaXMpICsgb2Zmc2V0OworKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh c3Q8dm9pZCAqPiAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgb2Zmc2V0KTsK KyAgICAgfQorIAorICAgICAvLyBUaGlzIHJlZmVycyB0byBhcnJheSBkYXRhIG11dGFiaWxpdHks IG5vdCAiaGVhZGVyIGRhdGEiIHJlcHJlc2VudGVkIGJ5CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9jb3JlbGliL3Rvb2xzL3FmcmVlbGlzdF9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMv cWZyZWVsaXN0X3AuaAoraW5kZXggNWJhMjNiMzQ0Yi4uOTk3NDEwMjEzNiAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xZnJlZWxpc3RfcC5oCisrKysgYi9xdGJhc2Uvc3Jj L2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0X3AuaAorQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBR RnJlZUxpc3QKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICAgeCAtPSBz aXplOworICAgICAgICAgfQorLSAgICAgICAgUV9BU1NFUlQoZmFsc2UpOworKyAgICAgICAgUV9V TlJFQUNIQUJMRSgpOworICAgICAgICAgcmV0dXJuIC0xOworICAgICB9CisgCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3F2ZXJzaW9ubnVtYmVyLmggYi9xdGJhc2Uvc3Jj L2NvcmVsaWIvdG9vbHMvcXZlcnNpb25udW1iZXIuaAoraW5kZXggZDQzYjg2YmE1MS4uMjg0M2Yy YjA0MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xdmVyc2lvbm51bWJl ci5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcXZlcnNpb25udW1iZXIuaAorQEAg LTI3MywxMCArMjczLDEwIEBAIHB1YmxpYzoKKyAKKyAgICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9D T1JFX0VYUE9SVCBRU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CisgI2lmIFFUX1NUUklOR1ZJRVdf TEVWRUwgPCAyCistICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFf REVDTF9QVVJFX0ZVTkNUSU9OIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmcoY29uc3QgUVN0cmlu ZyAmc3RyaW5nLCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CisrICAgIFFfUkVRVUlSRURf UkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmcoY29u c3QgUVN0cmluZyAmc3RyaW5nLCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CisgI2VuZGlm CistICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFfREVDTF9QVVJF X0ZVTkNUSU9OIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmcoUUxhdGluMVN0cmluZyBzdHJpbmcs IGludCAqc3VmZml4SW5kZXggPSBudWxscHRyKTsKKy0gICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9D T1JFX0VYUE9SVCBzdGF0aWMgUV9ERUNMX1BVUkVfRlVOQ1RJT04gUVZlcnNpb25OdW1iZXIgZnJv bVN0cmluZyhRU3RyaW5nVmlldyBzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxscHRyKTsK KysgICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMgUVZlcnNpb25OdW1i ZXIgZnJvbVN0cmluZyhRTGF0aW4xU3RyaW5nIHN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51 bGxwdHIpOworKyAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRVmVy c2lvbk51bWJlciBmcm9tU3RyaW5nKFFTdHJpbmdWaWV3IHN0cmluZywgaW50ICpzdWZmaXhJbmRl eCA9IG51bGxwdHIpOworIAorIHByaXZhdGU6CisgI2lmbmRlZiBRVF9OT19EQVRBU1RSRUFNCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9kYnVzL3FkYnVzaW50ZWdyYXRvci5jcHAgYi9xdGJhc2Uv c3JjL2RidXMvcWRidXNpbnRlZ3JhdG9yLmNwcAoraW5kZXggNWI2NmNlOTcxYi4uMjhhM2IwZmZl YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVncmF0b3IuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL2RidXMvcWRidXNpbnRlZ3JhdG9yLmNwcAorQEAgLTExMzUsNyArMTEzNSwx MyBAQCB2b2lkIFFEQnVzQ29ubmVjdGlvblByaXZhdGU6OmNsb3NlQ29ubmVjdGlvbigpCisgICAg ICAgICB9CisgICAgIH0KKyAKKy0gICAgcURlbGV0ZUFsbChwZW5kaW5nQ2FsbHMpOworKyAgICBm b3IgKGF1dG8gaXQgPSBwZW5kaW5nQ2FsbHMuYmVnaW4oKTsgaXQgIT0gcGVuZGluZ0NhbGxzLmVu ZCgpOyArK2l0KSB7CisrICAgICAgICBhdXRvIGNhbGwgPSAqaXQ7CisrICAgICAgICBpZiAoIWNh bGwtPnJlZi5kZXJlZigpKSB7CisrICAgICAgICAgICAgZGVsZXRlIGNhbGw7CisrICAgICAgICB9 CisrICAgIH0KKysgICAgcGVuZGluZ0NhbGxzLmNsZWFyKCk7CisgCisgICAgIC8vIERpc2Nvbm5l Y3QgYWxsIHNpZ25hbHMgZnJvbSBzaWduYWwgaG9va3MgYW5kIGZyb20gdGhlIG9iamVjdCB0cmVl IHRvCisgICAgIC8vIGF2b2lkIFFPYmplY3Q6OmRlc3Ryb3llZCBiZWluZyBzZW50IHRvIGRidXMg ZGFlbW9uIHRocmVhZCB3aGljaCBoYXMKK0BAIC0yNTg0LDYgKzI1OTAsMTEgQEAgUURCdXNDb25u ZWN0aW9uUHJpdmF0ZTo6ZmluZE1ldGFPYmplY3QoY29uc3QgUVN0cmluZyAmc2VydmljZSwgY29u c3QgUVN0cmluZyAmcGEKKyAgICAgICAgIGlmIChtbykKKyAgICAgICAgICAgICByZXR1cm4gbW87 CisgICAgIH0KKysgICAgaWYgKHBhdGguaXNFbXB0eSgpKSB7CisrICAgICAgICBlcnJvciA9IFFE QnVzRXJyb3IoUURCdXNFcnJvcjo6SW52YWxpZE9iamVjdFBhdGgsIFFMYXRpbjFTdHJpbmcoIk9i amVjdCBwYXRoIGNhbm5vdCBiZSBlbXB0eSIpKTsKKysgICAgICAgIGxhc3RFcnJvciA9IGVycm9y OworKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisrICAgIH0KKyAKKyAgICAgLy8gaW50cm9zcGVj dCB0aGUgdGFyZ2V0IG9iamVjdAorICAgICBRREJ1c01lc3NhZ2UgbXNnID0gUURCdXNNZXNzYWdl OjpjcmVhdGVNZXRob2RDYWxsKHNlcnZpY2UsIHBhdGgsCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9kYnVzL3FkYnVzbWV0YW9iamVjdC5jcHAgYi9xdGJhc2Uvc3JjL2RidXMvcWRidXNtZXRhb2Jq ZWN0LmNwcAoraW5kZXggNTI2NTU2OGY0Mi4uN2U5ZjBmMWFjYyAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvZGJ1cy9xZGJ1c21ldGFvYmplY3QuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2RidXMvcWRi dXNtZXRhb2JqZWN0LmNwcAorQEAgLTIxMCw2ICsyMTAsOSBAQCBRREJ1c01ldGFPYmplY3RHZW5l cmF0b3I6OmZpbmRUeXBlKGNvbnN0IFFCeXRlQXJyYXkgJnNpZ25hdHVyZSwKKyAgICAgICAgIH0g ZWxzZSBpZiAoc2lnbmF0dXJlID09ICJhe3NzfSIpIHsKKyAgICAgICAgICAgICByZXN1bHQubmFt ZSA9ICJRTWFwPFFTdHJpbmcsUVN0cmluZz4iOworICAgICAgICAgICAgIHR5cGUgPSBxTWV0YVR5 cGVJZDxRTWFwPFFTdHJpbmcsIFFTdHJpbmc+ID4oKTsKKysgICAgICAgIH0gZWxzZSBpZiAoc2ln bmF0dXJlID09ICJhYXkiKSB7CisrICAgICAgICAgICAgcmVzdWx0Lm5hbWUgPSAiUUJ5dGVBcnJh eUxpc3QiOworKyAgICAgICAgICAgIHR5cGUgPSBxTWV0YVR5cGVJZDxRQnl0ZUFycmF5TGlzdD4o KTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgcmVzdWx0Lm5hbWUgPSAie0QtQnVz IHR5cGUgXCIiICsgc2lnbmF0dXJlICsgIlwifSI7CisgICAgICAgICAgICAgdHlwZSA9IHJlZ2lz dGVyQ29tcGxleERCdXNUeXBlKHJlc3VsdC5uYW1lKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2d1aS9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2FjY2Vzc2li bGUvcWFjY2Vzc2libGUuY3BwCitpbmRleCBkNzA1YmZjY2I1Li4wY2FmM2M4MDhjIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9ndWkvYWNjZXNzaWJsZS9xYWNjZXNzaWJsZS5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvZ3VpL2FjY2Vzc2libGUvcWFjY2Vzc2libGUuY3BwCitAQCAtNTQsNiArNTQsNyBA QAorICNpbmNsdWRlIDxRdENvcmUvcWRlYnVnLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xbG9nZ2lu Z2NhdGVnb3J5Lmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xbWV0YW9iamVjdC5oPgorKyNpbmNsdWRl IDxRdENvcmUvcHJpdmF0ZS9xbWV0YW9iamVjdF9wLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xaGFz aC5oPgorICNpbmNsdWRlIDxwcml2YXRlL3FmYWN0b3J5bG9hZGVyX3AuaD4KKyAKK0BAIC02ODEs NiArNjgyLDI1IEBAIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZTo6cXVlcnlBY2Nl c3NpYmxlSW50ZXJmYWNlKFFPYmplY3QgKm9iamVjdCkKKyAgICAgLy8gQ3JlYXRlIGEgUUFjY2Vz c2libGVJbnRlcmZhY2UgZm9yIHRoZSBvYmplY3QgY2xhc3MuIFN0YXJ0IGJ5IHRoZSBtb3N0Cisg ICAgIC8vIGRlcml2ZWQgY2xhc3MgYW5kIHdhbGsgdXAgdGhlIGNsYXNzIGhpZXJhcmNoeS4KKyAg ICAgY29uc3QgUU1ldGFPYmplY3QgKm1vID0gb2JqZWN0LT5tZXRhT2JqZWN0KCk7CisrICAgIGNv bnN0IGF1dG8gKm9iamVjdFByaXYgPSBRT2JqZWN0UHJpdmF0ZTo6Z2V0KG9iamVjdCk7CisrICAg IC8qCisrICAgICBXZSBkbyBub3Qgd2FudCB0byBjYWNoZSBlYWNoIGFuZCBldmVyeSBRTUwgbWV0 YW9iamVjdCAoQnV0dG9uX1FNTFRZUEVfMTI0LAorKyAgICAgQnV0dG9uX1FNTFRZUEVfMTI1LCBl dGMuKS4gVGhvc2UgZHluYW1pYyBtZXRhb2JqZWN0cyBzaG91bGRuJ3QgaGF2ZSBhbgorKyAgICAg YWNjZXNzaWJsZSBpbnRlcmZhY2UgaW4gYW55IGNhc2UuIEluc3RlYWQsIHdlIHN0YXJ0IHRoZSB3 aG9sZSBjaGVja2luZworKyAgICAgd2l0aCB0aGUgZmlyc3Qgbm9uLWR5bmFtaWMgbWV0YS1vYmpl Y3QuIFRvIGF2b2lkIHBvdGVudGlhbCByZWdyZXNzaW9ucworKyAgICAgaW4gb3RoZXIgYXJlYXMg b2YgUXQgdGhhdCBhbHNvIHVzZSBkeW5hbWljIG1ldGFvYmplY3RzLCB3ZSBvbmx5IGRvIHRoaXMK KysgICAgIGZvciBvYmplY3RzIHRoYXQgYXJlIFFNTC1yZWxhdGVkIChhcHByb3hpbWF0ZWQgYnkg Y2hlY2tpbmcgd2hldGhlciB0aGV5CisrICAgICBoYXZlIGRkYXRhIHNldCkuCisrICAgICovCisr ICAgIGNvbnN0IGJvb2wgcW1sUmVsYXRlZCA9ICFvYmplY3RQcml2LT5pc0RlbGV0aW5nQ2hpbGRy ZW4gJiYKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0UHJpdi0+ZGVjbGFyYXRp dmVEYXRhOworKyAgICB3aGlsZSAocW1sUmVsYXRlZCAmJiBtbykgeworKyAgICAgICAgYXV0byBt b3AgPSBRTWV0YU9iamVjdFByaXZhdGU6OmdldChtbyk7CisrICAgICAgICBpZiAoIW1vcCB8fCAh KG1vcC0+ZmxhZ3MgJiBEeW5hbWljTWV0YU9iamVjdCkpCisrICAgICAgICAgICAgYnJlYWs7Cisr CisrICAgICAgICBtbyA9IG1vLT5zdXBlckNsYXNzKCk7CisrICAgIH07CisgICAgIHdoaWxlICht bykgeworICAgICAgICAgY29uc3QgUVN0cmluZyBjbiA9IFFMYXRpbjFTdHJpbmcobW8tPmNsYXNz TmFtZSgpKTsKKyAKK0BAIC02OTYsMTQgKzcxNiwxNSBAQCBRQWNjZXNzaWJsZUludGVyZmFjZSAq UUFjY2Vzc2libGU6OnF1ZXJ5QWNjZXNzaWJsZUludGVyZmFjZShRT2JqZWN0ICpvYmplY3QpCisg ICAgICAgICAvLyBGaW5kIGEgUUFjY2Vzc2libGVQbHVnaW4gKGZhY3RvcnkpIGZvciB0aGUgY2xh c3MgbmFtZS4gSWYgdGhlcmUncworICAgICAgICAgLy8gbm8gZW50cnkgaW4gdGhlIGNhY2hlIHRy eSB0byBjcmVhdGUgaXQgdXNpbmcgdGhlIHBsdWdpbiBsb2FkZXIuCisgICAgICAgICBpZiAoIXFB Y2Nlc3NpYmxlUGx1Z2lucygpLT5jb250YWlucyhjbikpIHsKKysgICAgICAgICAgICBRQWNjZXNz aWJsZVBsdWdpbiAqZmFjdG9yeSA9IG51bGxwdHI7IC8vIDAgbWVhbnMgIm5vIHBsdWdpbiBmb3Vu ZCIuIFRoaXMgaXMgY2FjaGVkIGFzIHdlbGwuCisgICAgICAgICAgICAgY29uc3QgaW50IGluZGV4 ID0gbG9hZGVyKCktPmluZGV4T2YoY24pOworLSAgICAgICAgICAgIGlmIChpbmRleCAhPSAtMSkg eworLSAgICAgICAgICAgICAgICBRQWNjZXNzaWJsZVBsdWdpbiAqZmFjdG9yeSA9IHFvYmplY3Rf Y2FzdDxRQWNjZXNzaWJsZVBsdWdpbiAqPihsb2FkZXIoKS0+aW5zdGFuY2UoaW5kZXgpKTsKKy0g ICAgICAgICAgICAgICAgcUFjY2Vzc2libGVQbHVnaW5zKCktPmluc2VydChjbiwgZmFjdG9yeSk7 CistICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGlmIChpbmRleCAhPSAtMSkKKysgICAgICAg ICAgICAgICAgZmFjdG9yeSA9IHFvYmplY3RfY2FzdDxRQWNjZXNzaWJsZVBsdWdpbiAqPihsb2Fk ZXIoKS0+aW5zdGFuY2UoaW5kZXgpKTsKKysgICAgICAgICAgICBxQWNjZXNzaWJsZVBsdWdpbnMo KS0+aW5zZXJ0KGNuLCBmYWN0b3J5KTsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIC8vIEF0IHRo aXMgcG9pbnQgdGhlIGNhY2hlIHNob3VsZCBjb250YWluIGEgdmFsaWQgZmFjdG9yeSBwb2ludGVy IG9yIDA6CisrICAgICAgICBRX0FTU0VSVChxQWNjZXNzaWJsZVBsdWdpbnMoKS0+Y29udGFpbnMo Y24pKTsKKyAgICAgICAgIFFBY2Nlc3NpYmxlUGx1Z2luICpmYWN0b3J5ID0gcUFjY2Vzc2libGVQ bHVnaW5zKCktPnZhbHVlKGNuKTsKKyAgICAgICAgIGlmIChmYWN0b3J5KSB7CisgICAgICAgICAg ICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKnJlc3VsdCA9IGZhY3RvcnktPmNyZWF0ZShjbiwgb2Jq ZWN0KTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9jb25maWd1cmUuanNvbiBiL3F0YmFz ZS9zcmMvZ3VpL2NvbmZpZ3VyZS5qc29uCitpbmRleCAxZjA4Nzk1YzU3Li4xMmM5NTc0MmQyIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvY29uZmlndXJlLmpzb24KKysrKyBiL3F0YmFzZS9z cmMvZ3VpL2NvbmZpZ3VyZS5qc29uCitAQCAtODM0LDcgKzgzNCw4IEBACisgICAgICAgICAgICAg ICAgICAgICAiLy8gZW1iZWRkZWQgZGV2aWNlcywgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSB1c2Vk IHRvZ2V0aGVyIHdpdGggWC4gRUdMIHN1cHBvcnQiLAorICAgICAgICAgICAgICAgICAgICAgIi8v IGhhcyB0byBiZSBkaXNhYmxlZCBpbiBwbHVnaW5zIGxpa2UgeGNiIGluIHRoaXMgY2FzZSBzaW5j ZSB0aGUgbmF0aXZlIGRpc3BsYXksIiwKKyAgICAgICAgICAgICAgICAgICAgICIvLyB3aW5kb3cg YW5kIHBpeG1hcCB0eXBlcyB3aWxsIGJlIGRpZmZlcmVudCB0aGFuIHdoYXQgYW4gWC1iYXNlZCBw bGF0Zm9ybSIsCistICAgICAgICAgICAgICAgICAgICAiLy8gcGx1Z2luIHdvdWxkIGV4cGVjdC4i CisrICAgICAgICAgICAgICAgICAgICAiLy8gcGx1Z2luIHdvdWxkIGV4cGVjdC4iLAorKyAgICAg ICAgICAgICAgICAgICAgIiNkZWZpbmUgVVNFX1gxMSIKKyAgICAgICAgICAgICAgICAgXSwKKyAg ICAgICAgICAgICAgICAgImluY2x1ZGUiOiBbICJFR0wvZWdsLmgiLCAiWDExL1hsaWIuaCIgXSwK KyAgICAgICAgICAgICAgICAgIm1haW4iOiBbCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkv aW1hZ2UvcWJtcGhhbmRsZXIuY3BwIGIvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWJtcGhhbmRsZXIu Y3BwCitpbmRleCA5NmYxZThjYjFkLi4wZTczYmJiZGIwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9ndWkvaW1hZ2UvcWJtcGhhbmRsZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9x Ym1waGFuZGxlci5jcHAKK0BAIC0xNTAsMTYgKzE1MCw0MiBAQCBzdGF0aWMgUURhdGFTdHJlYW0g Jm9wZXJhdG9yPDwoUURhdGFTdHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSkKKyAgICAg cmV0dXJuIHM7CisgfQorIAorLXN0YXRpYyBpbnQgY2FsY19zaGlmdCh1aW50IG1hc2spCisrc3Rh dGljIHVpbnQgY2FsY19zaGlmdCh1aW50IG1hc2spCisgeworLSAgICBpbnQgcmVzdWx0ID0gMDsK Ky0gICAgd2hpbGUgKG1hc2sgJiYgIShtYXNrICYgMSkpIHsKKysgICAgdWludCByZXN1bHQgPSAw OworKyAgICB3aGlsZSAoKG1hc2sgPj0gMHgxMDApIHx8ICghKG1hc2sgJiAxKSAmJiBtYXNrKSkg eworICAgICAgICAgcmVzdWx0Kys7CisgICAgICAgICBtYXNrID4+PSAxOworICAgICB9CisgICAg IHJldHVybiByZXN1bHQ7CisgfQorIAorK3N0YXRpYyB1aW50IGNhbGNfc2NhbGUodWludCBsb3df bWFzaykKKyt7CisrICAgIHVpbnQgcmVzdWx0ID0gODsKKysgICAgd2hpbGUgKGxvd19tYXNrICYm IHJlc3VsdCkgeworKyAgICAgICAgcmVzdWx0LS07CisrICAgICAgICBsb3dfbWFzayA+Pj0gMTsK KysgICAgfQorKyAgICByZXR1cm4gcmVzdWx0OworK30KKysKKytzdGF0aWMgaW5saW5lIHVpbnQg YXBwbHlfc2NhbGUodWludCB2YWx1ZSwgdWludCBzY2FsZSkKKyt7CisrICAgIGlmICghKHNjYWxl ICYgMHgwNykpIC8vIHJldHVybiBpbW1lZGlhdGVseSBpZiBzY2FsZSA9PSA4IG9yIDAKKysgICAg ICAgIHJldHVybiB2YWx1ZTsKKysKKysgICAgdWludCBmaWxsZWQgPSA4IC0gc2NhbGU7CisrICAg IHVpbnQgcmVzdWx0ID0gdmFsdWUgPDwgc2NhbGU7CisrCisrICAgIGRvIHsKKysgICAgICAgIHJl c3VsdCB8PSByZXN1bHQgPj4gZmlsbGVkOworKyAgICAgICAgZmlsbGVkIDw8PSAxOworKyAgICB9 IHdoaWxlIChmaWxsZWQgPCA4KTsKKysKKysgICAgcmV0dXJuIHJlc3VsdDsKKyt9CisrCisgc3Rh dGljIGJvb2wgcmVhZF9kaWJfZmlsZWhlYWRlcihRRGF0YVN0cmVhbSAmcywgQk1QX0ZJTEVIRFIg JmJmKQorIHsKKyAgICAgLy8gcmVhZCBCTVAgZmlsZSBoZWFkZXIKK0BAIC0yMjIsMTQgKzI0OCwx NCBAQCBzdGF0aWMgYm9vbCByZWFkX2RpYl9ib2R5KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBf SU5GT0hEUiAmYmksIHFpbnQ2NCBvZmZzZXQsCisgICAgIHVpbnQgZ3JlZW5fbWFzayA9IDA7Cisg ICAgIHVpbnQgYmx1ZV9tYXNrID0gMDsKKyAgICAgdWludCBhbHBoYV9tYXNrID0gMDsKKy0gICAg aW50IHJlZF9zaGlmdCA9IDA7CistICAgIGludCBncmVlbl9zaGlmdCA9IDA7CistICAgIGludCBi bHVlX3NoaWZ0ID0gMDsKKy0gICAgaW50IGFscGhhX3NoaWZ0ID0gMDsKKy0gICAgaW50IHJlZF9z Y2FsZSA9IDA7CistICAgIGludCBncmVlbl9zY2FsZSA9IDA7CistICAgIGludCBibHVlX3NjYWxl ID0gMDsKKy0gICAgaW50IGFscGhhX3NjYWxlID0gMDsKKysgICAgdWludCByZWRfc2hpZnQgPSAw OworKyAgICB1aW50IGdyZWVuX3NoaWZ0ID0gMDsKKysgICAgdWludCBibHVlX3NoaWZ0ID0gMDsK KysgICAgdWludCBhbHBoYV9zaGlmdCA9IDA7CisrICAgIHVpbnQgcmVkX3NjYWxlID0gMDsKKysg ICAgdWludCBncmVlbl9zY2FsZSA9IDA7CisrICAgIHVpbnQgYmx1ZV9zY2FsZSA9IDA7CisrICAg IHVpbnQgYWxwaGFfc2NhbGUgPSAwOworIAorICAgICBpZiAoIWQtPmlzU2VxdWVudGlhbCgpKQor ICAgICAgICAgZC0+c2VlayhzdGFydHBvcyArIEJNUF9GSUxFSERSX1NJWkUgKyBiaS5iaVNpemUp OyAvLyBnb3RvIHN0YXJ0IG9mIGNvbG9ybWFwIG9yIG1hc2tzCitAQCAtMzA4LDE5ICszMzQsMTkg QEAgc3RhdGljIGJvb2wgcmVhZF9kaWJfYm9keShRRGF0YVN0cmVhbSAmcywgY29uc3QgQk1QX0lO Rk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0LAorICAgICAgICAgcmVkX3NoaWZ0ID0gY2FsY19zaGlm dChyZWRfbWFzayk7CisgICAgICAgICBpZiAoKChyZWRfbWFzayA+PiByZWRfc2hpZnQpICsgMSkg PT0gMCkKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CistICAgICAgICByZWRfc2NhbGUgPSAy NTYgLyAoKHJlZF9tYXNrID4+IHJlZF9zaGlmdCkgKyAxKTsKKysgICAgICAgIHJlZF9zY2FsZSA9 IGNhbGNfc2NhbGUocmVkX21hc2sgPj4gcmVkX3NoaWZ0KTsKKyAgICAgICAgIGdyZWVuX3NoaWZ0 ID0gY2FsY19zaGlmdChncmVlbl9tYXNrKTsKKyAgICAgICAgIGlmICgoKGdyZWVuX21hc2sgPj4g Z3JlZW5fc2hpZnQpICsgMSkgPT0gMCkKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CistICAg ICAgICBncmVlbl9zY2FsZSA9IDI1NiAvICgoZ3JlZW5fbWFzayA+PiBncmVlbl9zaGlmdCkgKyAx KTsKKysgICAgICAgIGdyZWVuX3NjYWxlID0gY2FsY19zY2FsZShncmVlbl9tYXNrID4+IGdyZWVu X3NoaWZ0KTsKKyAgICAgICAgIGJsdWVfc2hpZnQgPSBjYWxjX3NoaWZ0KGJsdWVfbWFzayk7Cisg ICAgICAgICBpZiAoKChibHVlX21hc2sgPj4gYmx1ZV9zaGlmdCkgKyAxKSA9PSAwKQorICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgICAgIGJsdWVfc2NhbGUgPSAyNTYgLyAoKGJsdWVf bWFzayA+PiBibHVlX3NoaWZ0KSArIDEpOworKyAgICAgICAgYmx1ZV9zY2FsZSA9IGNhbGNfc2Nh bGUoYmx1ZV9tYXNrID4+IGJsdWVfc2hpZnQpOworICAgICAgICAgYWxwaGFfc2hpZnQgPSBjYWxj X3NoaWZ0KGFscGhhX21hc2spOworICAgICAgICAgaWYgKCgoYWxwaGFfbWFzayA+PiBhbHBoYV9z aGlmdCkgKyAxKSA9PSAwKQorICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgICAgIGFs cGhhX3NjYWxlID0gMjU2IC8gKChhbHBoYV9tYXNrID4+IGFscGhhX3NoaWZ0KSArIDEpOworKyAg ICAgICAgYWxwaGFfc2NhbGUgPSBjYWxjX3NjYWxlKGFscGhhX21hc2sgPj4gYWxwaGFfc2hpZnQp OworICAgICB9IGVsc2UgaWYgKGNvbXAgPT0gQk1QX1JHQiAmJiAobmJpdHMgPT0gMjQgfHwgbmJp dHMgPT0gMzIpKSB7CisgICAgICAgICBibHVlX21hc2sgPSAweDAwMDAwMGZmOworICAgICAgICAg Z3JlZW5fbWFzayA9IDB4MDAwMGZmMDA7CitAQCAtMzI4LDE3ICszNTQsMTUgQEAgc3RhdGljIGJv b2wgcmVhZF9kaWJfYm9keShRRGF0YVN0cmVhbSAmcywgY29uc3QgQk1QX0lORk9IRFIgJmJpLCBx aW50NjQgb2Zmc2V0LAorICAgICAgICAgYmx1ZV9zaGlmdCA9IDA7CisgICAgICAgICBncmVlbl9z aGlmdCA9IDg7CisgICAgICAgICByZWRfc2hpZnQgPSAxNjsKKy0gICAgICAgIGJsdWVfc2NhbGUg PSBncmVlbl9zY2FsZSA9IHJlZF9zY2FsZSA9IDE7CisrICAgICAgICBibHVlX3NjYWxlID0gZ3Jl ZW5fc2NhbGUgPSByZWRfc2NhbGUgPSAwOworICAgICB9IGVsc2UgaWYgKGNvbXAgPT0gQk1QX1JH QiAmJiBuYml0cyA9PSAxNikgeworICAgICAgICAgYmx1ZV9tYXNrID0gMHgwMDFmOworICAgICAg ICAgZ3JlZW5fbWFzayA9IDB4MDNlMDsKKyAgICAgICAgIHJlZF9tYXNrID0gMHg3YzAwOworICAg ICAgICAgYmx1ZV9zaGlmdCA9IDA7CistICAgICAgICBncmVlbl9zaGlmdCA9IDI7CistICAgICAg ICByZWRfc2hpZnQgPSA3OworLSAgICAgICAgcmVkX3NjYWxlID0gMTsKKy0gICAgICAgIGdyZWVu X3NjYWxlID0gMTsKKy0gICAgICAgIGJsdWVfc2NhbGUgPSA4OworKyAgICAgICAgZ3JlZW5fc2hp ZnQgPSA1OworKyAgICAgICAgcmVkX3NoaWZ0ID0gMTA7CisrICAgICAgICBibHVlX3NjYWxlID0g Z3JlZW5fc2NhbGUgPSByZWRfc2NhbGUgPSAzOworICAgICB9CisgCisgI2lmIDAKK0BAIC01NDQs MTAgKzU2OCwxMCBAQCBzdGF0aWMgYm9vbCByZWFkX2RpYl9ib2R5KFFEYXRhU3RyZWFtICZzLCBj b25zdCBCTVBfSU5GT0hEUiAmYmksIHFpbnQ2NCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAg ICBjIHw9ICoodWNoYXIqKShiKzIpPDwxNjsKKyAgICAgICAgICAgICAgICAgaWYgKG5iaXRzID4g MjQpCisgICAgICAgICAgICAgICAgICAgICBjIHw9ICoodWNoYXIqKShiKzMpPDwyNDsKKy0gICAg ICAgICAgICAgICAgKnArKyA9IHFSZ2JhKCgoYyAmIHJlZF9tYXNrKSA+PiByZWRfc2hpZnQpICog cmVkX3NjYWxlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGMg JiBncmVlbl9tYXNrKSA+PiBncmVlbl9zaGlmdCkgKiBncmVlbl9zY2FsZSwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChjICYgYmx1ZV9tYXNrKSA+PiBibHVlX3No aWZ0KSAqIGJsdWVfc2NhbGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRyYW5zcCA/ICgoYyAmIGFscGhhX21hc2spID4+IGFscGhhX3NoaWZ0KSAqIGFscGhhX3Nj YWxlIDogMHhmZik7CisrICAgICAgICAgICAgICAgICpwKysgPSBxUmdiYShhcHBseV9zY2FsZSgo YyAmIHJlZF9tYXNrKSA+PiByZWRfc2hpZnQsIHJlZF9zY2FsZSksCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhcHBseV9zY2FsZSgoYyAmIGdyZWVuX21hc2spID4+IGdyZWVuX3NoaWZ0 LCBncmVlbl9zY2FsZSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBseV9zY2Fs ZSgoYyAmIGJsdWVfbWFzaykgPj4gYmx1ZV9zaGlmdCwgYmx1ZV9zY2FsZSksCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0cmFuc3AgPyBhcHBseV9zY2FsZSgoYyAmIGFscGhhX21hc2sp ID4+IGFscGhhX3NoaWZ0LCBhbHBoYV9zY2FsZSkgOiAweGZmKTsKKyAgICAgICAgICAgICAgICAg YiArPSBuYml0cy84OworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2d1aS9pbWFnZS9xaW1hZ2UuY3BwIGIvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWlt YWdlLmNwcAoraW5kZXggNzE1MmFjMTYwNy4uMGRmNzcyNTY0YyAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvZ3VpL2ltYWdlL3FpbWFnZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3Fp bWFnZS5jcHAKK0BAIC00Njk0LDYgKzQ2OTQsOCBAQCBRSW1hZ2UgUUltYWdlOjpzbW9vdGhTY2Fs ZWQoaW50IHcsIGludCBoKSBjb25zdCB7Cisgc3RhdGljIFFJbWFnZSByb3RhdGVkOTAoY29uc3Qg UUltYWdlICZpbWFnZSkKKyB7CisgICAgIFFJbWFnZSBvdXQoaW1hZ2UuaGVpZ2h0KCksIGltYWdl LndpZHRoKCksIGltYWdlLmZvcm1hdCgpKTsKKysgICAgaWYgKG91dC5pc051bGwoKSkKKysgICAg ICAgIHJldHVybiBvdXQ7CisgICAgIGNvcHlNZXRhZGF0YSgmb3V0LCBpbWFnZSk7CisgICAgIGlm IChpbWFnZS5jb2xvckNvdW50KCkgPiAwKQorICAgICAgICAgb3V0LnNldENvbG9yVGFibGUoaW1h Z2UuY29sb3JUYWJsZSgpKTsKK0BAIC00NzIyLDYgKzQ3MjQsOCBAQCBzdGF0aWMgUUltYWdlIHJv dGF0ZWQxODAoY29uc3QgUUltYWdlICZpbWFnZSkKKyAgICAgICAgIHJldHVybiBpbWFnZS5taXJy b3JlZCh0cnVlLCB0cnVlKTsKKyAKKyAgICAgUUltYWdlIG91dChpbWFnZS53aWR0aCgpLCBpbWFn ZS5oZWlnaHQoKSwgaW1hZ2UuZm9ybWF0KCkpOworKyAgICBpZiAob3V0LmlzTnVsbCgpKQorKyAg ICAgICAgcmV0dXJuIG91dDsKKyAgICAgY29weU1ldGFkYXRhKCZvdXQsIGltYWdlKTsKKyAgICAg aWYgKGltYWdlLmNvbG9yQ291bnQoKSA+IDApCisgICAgICAgICBvdXQuc2V0Q29sb3JUYWJsZShp bWFnZS5jb2xvclRhYmxlKCkpOworQEAgLTQ3MzQsNiArNDczOCw4IEBAIHN0YXRpYyBRSW1hZ2Ug cm90YXRlZDE4MChjb25zdCBRSW1hZ2UgJmltYWdlKQorIHN0YXRpYyBRSW1hZ2Ugcm90YXRlZDI3 MChjb25zdCBRSW1hZ2UgJmltYWdlKQorIHsKKyAgICAgUUltYWdlIG91dChpbWFnZS5oZWlnaHQo KSwgaW1hZ2Uud2lkdGgoKSwgaW1hZ2UuZm9ybWF0KCkpOworKyAgICBpZiAob3V0LmlzTnVsbCgp KQorKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICAgY29weU1ldGFkYXRhKCZvdXQsIGltYWdlKTsK KyAgICAgaWYgKGltYWdlLmNvbG9yQ291bnQoKSA+IDApCisgICAgICAgICBvdXQuc2V0Q29sb3JU YWJsZShpbWFnZS5jb2xvclRhYmxlKCkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tl cm5lbC9xY3Vyc29yLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xY3Vyc29yLmNwcAoraW5k ZXggZDZjY2FmZjhlZC4uNDU1MDg4MjQxYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tl cm5lbC9xY3Vyc29yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FjdXJzb3IuY3Bw CitAQCAtMjUxLDcgKzI1MSw4IEBAIHZvaWQgUUN1cnNvcjo6c2V0UG9zKFFTY3JlZW4gKnNjcmVl biwgaW50IHgsIGludCB5KQorIHsKKyAgICAgaWYgKHNjcmVlbikgeworICAgICAgICAgaWYgKFFQ bGF0Zm9ybUN1cnNvciAqY3Vyc29yID0gc2NyZWVuLT5oYW5kbGUoKS0+Y3Vyc29yKCkpIHsKKy0g ICAgICAgICAgICBjb25zdCBRUG9pbnQgZGV2aWNlUG9zID0gUUhpZ2hEcGk6OnRvTmF0aXZlUGl4 ZWxzKFFQb2ludCh4LCB5KSwgc2NyZWVuKTsKKysgICAgICAgICAgICBjb25zdCBRUG9pbnQgcG9z KHgsIHkpOworKyAgICAgICAgICAgIGNvbnN0IFFQb2ludCBkZXZpY2VQb3MgPSBRSGlnaERwaTo6 dG9OYXRpdmVQaXhlbHMocG9zLCBzY3JlZW4tPnZpcnR1YWxTaWJsaW5nQXQocG9zKSk7CisgICAg ICAgICAgICAgLy8gTmVlZCB0byBjaGVjaywgc2luY2Ugc29tZSBYIHNlcnZlcnMgZ2VuZXJhdGUg bnVsbCBtb3VzZSBtb3ZlCisgICAgICAgICAgICAgLy8gZXZlbnRzLCBjYXVzaW5nIGxvb3Bpbmcg aW4gYXBwbGljYXRpb25zIHdoaWNoIGNhbGwgc2V0UG9zKCkgb24KKyAgICAgICAgICAgICAvLyBl dmVyeSBtb3VzZSBtb3ZlIGV2ZW50LgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5l bC9xaGlnaGRwaXNjYWxpbmcuY3BwIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FoaWdoZHBpc2Nh bGluZy5jcHAKK2luZGV4IDliYmYyNzczYTkuLjNhYzRhNGQ4YjYgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2d1aS9rZXJuZWwvcWhpZ2hkcGlzY2FsaW5nLmNwcAorKysrIGIvcXRiYXNlL3NyYy9n dWkva2VybmVsL3FoaWdoZHBpc2NhbGluZy5jcHAKK0BAIC01ODAsOSArNTgwLDggQEAgdm9pZCBR SGlnaERwaVNjYWxpbmc6OnNldFNjcmVlbkZhY3RvcihRU2NyZWVuICpzY3JlZW4sIHFyZWFsIGZh Y3RvcikKKyAgICAgZWxzZQorICAgICAgICAgcU5hbWVkU2NyZWVuU2NhbGVGYWN0b3JzKCktPmlu c2VydChuYW1lLCBmYWN0b3IpOworIAorLSAgICAvLyBoYWNrIHRvIGZvcmNlIHJlLWV2YWx1YXRp b24gb2Ygc2NyZWVuIGdlb21ldHJ5CisgICAgIGlmIChzY3JlZW4tPmhhbmRsZSgpKQorLSAgICAg ICAgc2NyZWVuLT5kX2Z1bmMoKS0+c2V0UGxhdGZvcm1TY3JlZW4oc2NyZWVuLT5oYW5kbGUoKSk7 IC8vIHVwZGF0ZXMgZ2VvbWV0cmllcyBiYXNlZCBvbiBzY2FsZSBmYWN0b3IKKysgICAgICAgIHNj cmVlbi0+ZF9mdW5jKCktPnVwZGF0ZUxvZ2ljYWxEcGkoKTsKKyB9CisgCisgUVBvaW50IFFIaWdo RHBpU2NhbGluZzo6bWFwUG9zaXRpb25Ub05hdGl2ZShjb25zdCBRUG9pbnQgJnBvcywgY29uc3Qg UVBsYXRmb3JtU2NyZWVuICpwbGF0Zm9ybVNjcmVlbikKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xa2V5 c2VxdWVuY2UuY3BwCitpbmRleCBhNzViOGVmOTIwLi40ZjJkMjk0NzM5IDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Z3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UuY3BwCitAQCAtNzAxLDYgKzcwMSwxMCBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IHsKKyAgICAgeyBRdDo6S2V5X1RvdWNocGFkVG9nZ2xlLCAgUVRfVFJBTlNM QVRFX05PT1AoIlFTaG9ydGN1dCIsICJUb3VjaHBhZCBUb2dnbGUiKSB9LAorICAgICB7IFF0OjpL ZXlfVG91Y2hwYWRPbiwgIFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAiVG91Y2hwYWQg T24iKSB9LAorICAgICB7IFF0OjpLZXlfVG91Y2hwYWRPZmYsICBRVF9UUkFOU0xBVEVfTk9PUCgi UVNob3J0Y3V0IiwgIlRvdWNocGFkIE9mZiIpIH0sCisrICAgIHsgUXQ6OktleV9TaGlmdCwgIFFU X1RSQU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAiU2hpZnQiKSB9LAorKyAgICB7IFF0OjpLZXlf Q29udHJvbCwgIFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAiQ29udHJvbCIpIH0sCisr ICAgIHsgUXQ6OktleV9BbHQsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIkFsdCIp IH0sCisrICAgIHsgUXQ6OktleV9NZXRhLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIs ICJNZXRhIikgfSwKKyAKKyB9OworIHN0YXRpYyBRX0NPTlNURVhQUiBpbnQgbnVtS2V5TmFtZXMg PSBzaXplb2Yga2V5bmFtZSAvIHNpemVvZiAqa2V5bmFtZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuY3BwIGIvcXRiYXNlL3NyYy9ndWkva2Vy bmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmNwcAoraW5kZXggZmRjNmE2YzRhYS4uYWM0N2Y5OGM1ZCAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5jcHAK KysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5jcHAKK0BAIC01 NSw2ICs1NSwxOSBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAgICAgXGJyaWVmIFRoZSBRUGxhdGZv cm1TZXJ2aWNlcyBwcm92aWRlcyB0aGUgYmFja2VuZCBmb3IgZGVza3RvcC1yZWxhdGVkIGZ1bmN0 aW9uYWxpdHkuCisgKi8KKyAKKysvKiEKKysgICAgXGVudW0gUVBsYXRmb3JtU2VydmljZXM6OkNh cGFiaWxpdHkKKysKKysgICAgQ2FwYWJpbGl0aWVzIGFyZSB1c2VkIHRvIGRldGVybWluZSBhIHNw ZWNpZmljIHBsYXRmb3JtIHNlcnZpY2UncyBhdmFpbGFiaWxpdHkuCisrCisrICAgIFx2YWx1ZSBD b2xvclBpY2tpbmdGcm9tU2NyZWVuIFRoZSBwbGF0Zm9ybSBuYXRpdmVseSBzdXBwb3J0cyBjb2xv ciBwaWNraW5nIGZyb20gc2NyZWVuLgorKyAgICBUaGlzIGNhcGFiaWxpdHkgaW5kaWNhdGVzIHRo YXQgdGhlIHBsYXRmb3JtIHN1cHBvcnRzICJvcGFxdWUiIGNvbG9yIHBpY2tpbmcsIHdoZXJlIHRo ZQorKyAgICBwbGF0Zm9ybSBpbXBsZW1lbnRzIGEgY29tcGxldGUgdXNlciBleHBlcmllbmNlIGZv ciBjb2xvciBwaWNraW5nIGFuZCBvdXRwdXRzIGEgY29sb3IuCisrICAgIFRoaXMgaXMgaW4gY29u dHJhc3QgdG8gdGhlIGFwcGxpY2F0aW9uIGltcGxlbWVudGluZyB0aGUgY29sb3IgcGlja2luZyB1 c2VyIGV4cGVyaWVuY2UKKysgICAgKHRha2luZyBjYXJlIG9mIHNob3dpbmcgYSBjcm9zcyBoYWly LCBpbnN0cnVjdGluZyB0aGUgcGxhdGZvcm0gaW50ZWdyYXRpb24gdG8gb2J0YWluCisrICAgIHRo ZSBjb2xvciBhdCBhIGdpdmVuIHBpeGVsLCBldGMuKS4gVGhlIHJlbGF0ZWQgc2VydmljZSBmdW5j dGlvbiBpcyBwaWNrQ29sb3IoKS4KKysgKi8KKysKKyBRUGxhdGZvcm1TZXJ2aWNlczo6UVBsYXRm b3JtU2VydmljZXMoKQorIHsgfQorIAorQEAgLTg1LDUgKzk4LDE2IEBAIFFCeXRlQXJyYXkgUVBs YXRmb3JtU2VydmljZXM6OmRlc2t0b3BFbnZpcm9ubWVudCgpIGNvbnN0CisgICAgIHJldHVybiBR Qnl0ZUFycmF5KCJVTktOT1dOIik7CisgfQorIAorK1FQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tl ciAqUVBsYXRmb3JtU2VydmljZXM6OmNvbG9yUGlja2VyKFFXaW5kb3cgKnBhcmVudCkKKyt7Cisr ICAgIFFfVU5VU0VEKHBhcmVudCk7CisrICAgIHJldHVybiBudWxscHRyOworK30KKysKKytib29s IFFQbGF0Zm9ybVNlcnZpY2VzOjpoYXNDYXBhYmlsaXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0eSkg Y29uc3QKKyt7CisrICAgIFFfVU5VU0VEKGNhcGFiaWxpdHkpCisrICAgIHJldHVybiBmYWxzZTsK Kyt9CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tl cm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5oIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9y bXNlcnZpY2VzLmgKK2luZGV4IDVkZTk2Y2ZhN2QuLmE4YjJhNGNlNzEgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuaAorKysrIGIvcXRiYXNlL3Ny Yy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmgKK0BAIC01MCwxNiArNTAsMzIgQEAKKyAv LworIAorICNpbmNsdWRlIDxRdEd1aS9xdGd1aWdsb2JhbC5oPgorKyNpbmNsdWRlIDxRdENvcmUv cW9iamVjdC5oPgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIGNsYXNzIFFVcmw7CisrY2xh c3MgUVdpbmRvdzsKKysKKytjbGFzcyBRX0dVSV9FWFBPUlQgUVBsYXRmb3JtU2VydmljZUNvbG9y UGlja2VyIDogcHVibGljIFFPYmplY3QKKyt7CisrICAgIFFfT0JKRUNUCisrcHVibGljOgorKyAg ICB1c2luZyBRT2JqZWN0OjpRT2JqZWN0OworKyAgICB2aXJ0dWFsIHZvaWQgcGlja0NvbG9yKCkg PSAwOworK1FfU0lHTkFMUzoKKysgICAgdm9pZCBjb2xvclBpY2tlZChjb25zdCBRQ29sb3IgJmNv bG9yKTsKKyt9OworIAorIGNsYXNzIFFfR1VJX0VYUE9SVCBRUGxhdGZvcm1TZXJ2aWNlcworIHsK KyBwdWJsaWM6CisgICAgIFFfRElTQUJMRV9DT1BZX01PVkUoUVBsYXRmb3JtU2VydmljZXMpCisg CisrICAgIGVudW0gQ2FwYWJpbGl0eSB7CisrICAgICAgICBDb2xvclBpY2tpbmcsCisrICAgIH07 CisrCisgICAgIFFQbGF0Zm9ybVNlcnZpY2VzKCk7CisgICAgIHZpcnR1YWwgflFQbGF0Zm9ybVNl cnZpY2VzKCkgeyB9CisgCitAQCAtNjcsNiArODMsMTAgQEAgcHVibGljOgorICAgICB2aXJ0dWFs IGJvb2wgb3BlbkRvY3VtZW50KGNvbnN0IFFVcmwgJnVybCk7CisgCisgICAgIHZpcnR1YWwgUUJ5 dGVBcnJheSBkZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdDsKKysKKysgICAgdmlydHVhbCBib29s IGhhc0NhcGFiaWxpdHkoQ2FwYWJpbGl0eSBjYXBhYmlsaXR5KSBjb25zdDsKKysKKysgICAgdmly dHVhbCBRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIgKmNvbG9yUGlja2VyKFFXaW5kb3cgKnBh cmVudCA9IG51bGxwdHIpOworIH07CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5jcHAgYi9xdGJhc2Uvc3JjL2d1 aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuY3BwCitpbmRleCA3MTUyMWMwMzM5Li4yMzI1ODczMjQ1 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmNwcAor KysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmNwcAorQEAgLTE2Myw2 ICsxNjMsOCBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyAgICAgXHZhbHVlIFNob3dTaG9ydGN1 dHNJbkNvbnRleHRNZW51cyAoYm9vbCkgV2hldGhlciB0byBkaXNwbGF5IHNob3J0Y3V0IGtleSBz ZXF1ZW5jZXMgaW4gY29udGV4dCBtZW51cy4KKyAKKysgICAgXHZhbHVlIEJ1dHRvblByZXNzS2V5 cyAoUUxpc3Q8UXQ6OktleT4pIEEgbGlzdCBvZiBrZXlzIHRoYXQgY2FuIGJlIHVzZWQgdG8gcHJl c3MgYnV0dG9ucyB2aWEga2V5Ym9hcmQgaW5wdXQuCisrCisgICAgIFxzYSB0aGVtZUhpbnQoKSwg UVN0eWxlOjpwaXhlbE1ldHJpYygpCisgKi8KKyAKK0BAIC01NjMsNiArNTY1LDggQEAgUVZhcmlh bnQgUVBsYXRmb3JtVGhlbWU6OmRlZmF1bHRUaGVtZUhpbnQoVGhlbWVIaW50IGhpbnQpCisgICAg ICAgICB9CisgICAgIGNhc2UgTW91c2VRdWlja1NlbGVjdGlvblRocmVzaG9sZDoKKyAgICAgICAg IHJldHVybiBRVmFyaWFudCgxMCk7CisrICAgIGNhc2UgQnV0dG9uUHJlc3NLZXlzOgorKyAgICAg ICAgcmV0dXJuIFFWYXJpYW50Ojpmcm9tVmFsdWUoUUxpc3Q8UXQ6OktleT4oeyBRdDo6S2V5X1Nw YWNlLCBRdDo6S2V5X1NlbGVjdCB9KSk7CisgICAgIH0KKyAgICAgcmV0dXJuIFFWYXJpYW50KCk7 CisgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5o IGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmgKK2luZGV4IDMxODVmYzQ1 NDEuLjdlNmM5ZDU3NDAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRm b3JtdGhlbWUuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmgK K0BAIC0xMjAsNyArMTIwLDggQEAgcHVibGljOgorICAgICAgICAgVG91Y2hEb3VibGVUYXBEaXN0 YW5jZSwKKyAgICAgICAgIFNob3dTaG9ydGN1dHNJbkNvbnRleHRNZW51cywKKyAgICAgICAgIElj b25GYWxsYmFja1NlYXJjaFBhdGhzLAorLSAgICAgICAgTW91c2VRdWlja1NlbGVjdGlvblRocmVz aG9sZAorKyAgICAgICAgTW91c2VRdWlja1NlbGVjdGlvblRocmVzaG9sZCwKKysgICAgICAgIEJ1 dHRvblByZXNzS2V5cworICAgICB9OworIAorICAgICBlbnVtIERpYWxvZ1R5cGUgeworZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuLmNwcCBiL3F0YmFzZS9zcmMvZ3Vp L2tlcm5lbC9xc2NyZWVuLmNwcAoraW5kZXggOGUwZWIzNTExNi4uNWQxNzJhNThkZCAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9ndWkva2VybmVsL3FzY3JlZW4uY3BwCitAQCAtNzcsNiArNzcsMTIgQEAgUVNjcmVlbjo6UVNj cmVlbihRUGxhdGZvcm1TY3JlZW4gKnNjcmVlbikKKyAgICAgZC0+c2V0UGxhdGZvcm1TY3JlZW4o c2NyZWVuKTsKKyB9CisgCisrdm9pZCBRU2NyZWVuUHJpdmF0ZTo6dXBkYXRlTG9naWNhbERwaSgp CisreworKyAgICBsb2dpY2FsRHBpID0gUVBsYXRmb3JtU2NyZWVuOjpvdmVycmlkZURwaShwbGF0 Zm9ybVNjcmVlbi0+bG9naWNhbERwaSgpKTsKKysgICAgdXBkYXRlR2VvbWV0cmllc1dpdGhTaWdu YWxzKCk7IC8vIHVwZGF0ZXMgZ2VvbWV0cmllcyBiYXNlZCBvbiBzY2FsZSBmYWN0b3IKKyt9Cisr Cisgdm9pZCBRU2NyZWVuUHJpdmF0ZTo6dXBkYXRlR2VvbWV0cmllc1dpdGhTaWduYWxzKCkKKyB7 CisgICAgIGNvbnN0IFFSZWN0IG9sZEdlb21ldHJ5ID0gZ2VvbWV0cnk7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW5fcC5oIGIvcXRiYXNlL3NyYy9ndWkva2VybmVs L3FzY3JlZW5fcC5oCitpbmRleCA3ZGE1NDJjMjVlLi5lNTBmYzMxOTBiIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW5fcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9r ZXJuZWwvcXNjcmVlbl9wLmgKK0BAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKKyAgICAgICAgIGdl b21ldHJ5ID0gcGxhdGZvcm1TY3JlZW4tPmRldmljZUluZGVwZW5kZW50R2VvbWV0cnkoKTsKKyAg ICAgICAgIGF2YWlsYWJsZUdlb21ldHJ5ID0gUUhpZ2hEcGk6OmZyb21OYXRpdmUocGxhdGZvcm1T Y3JlZW4tPmF2YWlsYWJsZUdlb21ldHJ5KCksIFFIaWdoRHBpU2NhbGluZzo6ZmFjdG9yKHBsYXRm b3JtU2NyZWVuKSwgZ2VvbWV0cnkudG9wTGVmdCgpKTsKKyAgICAgfQorKyAgICB2b2lkIHVwZGF0 ZUxvZ2ljYWxEcGkoKTsKKyAKKyAgICAgdm9pZCB1cGRhdGVQcmltYXJ5T3JpZW50YXRpb24oKTsK KyAgICAgdm9pZCB1cGRhdGVHZW9tZXRyaWVzV2l0aFNpZ25hbHMoKTsKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2d1aS9wYWludGluZy9xYmxlbmRmdW5jdGlvbnNfcC5oIGIvcXRiYXNlL3NyYy9n dWkvcGFpbnRpbmcvcWJsZW5kZnVuY3Rpb25zX3AuaAoraW5kZXggMDgwZGE5OGVjNC4uNjk5N2Q2 MmIzYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FibGVuZGZ1bmN0aW9u c19wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FibGVuZGZ1bmN0aW9uc19wLmgK K0BAIC0yNDYsMjUgKzI0NiwzMiBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUo RGVzdFQgKmRlc3RQaXhlbHMsIGludCBkYnBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgZHVkeCwgaW50IGR2ZHgsIGludCBkdWR5LCBpbnQgZHZkeSwgaW50IHUwLCBp bnQgdjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsZW5kZXIgYmxlbmRl cikKKyB7CistICAgIGludCBmcm9tWSA9IHFNYXgocVJvdW5kKHRvcFkpLCBjbGlwLnRvcCgpKTsK Ky0gICAgaW50IHRvWSA9IHFNaW4ocVJvdW5kKGJvdHRvbVkpLCBjbGlwLnRvcCgpICsgY2xpcC5o ZWlnaHQoKSk7CisrICAgIHFpbnQ2NCBmcm9tWSA9IHFNYXgocVJvdW5kKHRvcFkpLCBjbGlwLnRv cCgpKTsKKysgICAgcWludDY0IHRvWSA9IHFNaW4ocVJvdW5kKGJvdHRvbVkpLCBjbGlwLnRvcCgp ICsgY2xpcC5oZWlnaHQoKSk7CisgICAgIGlmIChmcm9tWSA+PSB0b1kpCisgICAgICAgICByZXR1 cm47CisgCisgICAgIHFyZWFsIGxlZnRTbG9wZSA9IChib3R0b21MZWZ0LnggLSB0b3BMZWZ0Lngp IC8gKGJvdHRvbUxlZnQueSAtIHRvcExlZnQueSk7CisgICAgIHFyZWFsIHJpZ2h0U2xvcGUgPSAo Ym90dG9tUmlnaHQueCAtIHRvcFJpZ2h0LngpIC8gKGJvdHRvbVJpZ2h0LnkgLSB0b3BSaWdodC55 KTsKKy0gICAgaW50IGR4X2wgPSBpbnQobGVmdFNsb3BlICogMHgxMDAwMCk7CistICAgIGludCBk eF9yID0gaW50KHJpZ2h0U2xvcGUgKiAweDEwMDAwKTsKKy0gICAgaW50IHhfbCA9IGludCgodG9w TGVmdC54ICsgKHFyZWFsKDAuNSkgKyBmcm9tWSAtIHRvcExlZnQueSkgKiBsZWZ0U2xvcGUgKyBx cmVhbCgwLjUpKSAqIDB4MTAwMDApOworLSAgICBpbnQgeF9yID0gaW50KCh0b3BSaWdodC54ICsg KHFyZWFsKDAuNSkgKyBmcm9tWSAtIHRvcFJpZ2h0LnkpICogcmlnaHRTbG9wZSArIHFyZWFsKDAu NSkpICogMHgxMDAwMCk7CistCistICAgIGludCBmcm9tWCwgdG9YLCB4MSwgeDIsIHUsIHYsIGks IGlpOworKyAgICBxaW50NjQgZHhfbCA9IHFpbnQ2NChsZWZ0U2xvcGUgKiAweDEwMDAwKTsKKysg ICAgcWludDY0IGR4X3IgPSBxaW50NjQocmlnaHRTbG9wZSAqIDB4MTAwMDApOworKyAgICBxaW50 NjQgeF9sID0gcWludDY0KCh0b3BMZWZ0LnggKyAocXJlYWwoMC41KSArIGZyb21ZIC0gdG9wTGVm dC55KSAqIGxlZnRTbG9wZSArIHFyZWFsKDAuNSkpICogMHgxMDAwMCk7CisrICAgIHFpbnQ2NCB4 X3IgPSBxaW50NjQoKHRvcFJpZ2h0LnggKyAocXJlYWwoMC41KSArIGZyb21ZIC0gdG9wUmlnaHQu eSkgKiByaWdodFNsb3BlICsgcXJlYWwoMC41KSkgKiAweDEwMDAwKTsKKysKKysgICAgcWludDY0 IHNvdXJjZVJlY3RUb3AgPSBxaW50NjQoc291cmNlUmVjdC50b3AoKSk7CisrICAgIHFpbnQ2NCBz b3VyY2VSZWN0TGVmdCA9IHFpbnQ2NChzb3VyY2VSZWN0LmxlZnQoKSk7CisrICAgIHFpbnQ2NCBz b3VyY2VSZWN0V2lkdGggPSBxaW50NjQoc291cmNlUmVjdC53aWR0aCgpKTsKKysgICAgcWludDY0 IHNvdXJjZVJlY3RIZWlnaHQgPSBxaW50NjQoc291cmNlUmVjdC5oZWlnaHQoKSk7CisrICAgIHFp bnQ2NCBjbGlwTGVmdCA9IHFpbnQ2NChjbGlwLmxlZnQoKSk7CisrICAgIHFpbnQ2NCBjbGlwV2lk dGggPSBxaW50NjQoY2xpcC53aWR0aCgpKTsKKysKKysgICAgcWludDY0IGZyb21YLCB0b1gsIHgx LCB4MiwgdSwgdiwgaSwgaWk7CisgICAgIERlc3RUICpsaW5lOworLSAgICBmb3IgKGludCB5ID0g ZnJvbVk7IHkgPCB0b1k7ICsreSkgeworKyAgICBmb3IgKHFpbnQ2NCB5ID0gZnJvbVk7IHkgPCB0 b1k7ICsreSkgeworICAgICAgICAgbGluZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGVzdFQgKj4ocmVp bnRlcnByZXRfY2FzdDx1Y2hhciAqPihkZXN0UGl4ZWxzKSArIHkgKiBkYnBsKTsKKyAKKy0gICAg ICAgIGZyb21YID0gcU1heCh4X2wgPj4gMTYsIGNsaXAubGVmdCgpKTsKKy0gICAgICAgIHRvWCA9 IHFNaW4oeF9yID4+IDE2LCBjbGlwLmxlZnQoKSArIGNsaXAud2lkdGgoKSk7CisrICAgICAgICBm cm9tWCA9IHFNYXgoeF9sID4+IDE2LCBjbGlwTGVmdCk7CisrICAgICAgICB0b1ggPSBxTWluKHhf ciA+PiAxNiwgY2xpcExlZnQgKyBjbGlwV2lkdGgpOworICAgICAgICAgaWYgKGZyb21YIDwgdG9Y KSB7CisgICAgICAgICAgICAgLy8gQmVjYXVzZSBvZiByb3VuZGluZywgd2UgY2FuIGdldCBzb3Vy Y2UgY29vcmRpbmF0ZXMgb3V0c2lkZSB0aGUgc291cmNlIGltYWdlLgorICAgICAgICAgICAgIC8v IENsYW1wIHRoZXNlIGNvb3JkaW5hdGVzIHRvIHRoZSBzb3VyY2UgcmVjdCB0byBhdm9pZCBzZWdt ZW50YXRpb24gZmF1bHQgYW5kCitAQCAtMjc1LDEwICsyODIsMTAgQEAgdm9pZCBxdF90cmFuc2Zv cm1faW1hZ2VfcmFzdGVyaXplKERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAg ICAgICB1ID0geDEgKiBkdWR4ICsgeSAqIGR1ZHkgKyB1MDsKKyAgICAgICAgICAgICB2ID0geDEg KiBkdmR4ICsgeSAqIGR2ZHkgKyB2MDsKKyAgICAgICAgICAgICBmb3IgKDsgeDEgPCB0b1g7ICsr eDEpIHsKKy0gICAgICAgICAgICAgICAgaW50IHV1ID0gdSA+PiAxNjsKKy0gICAgICAgICAgICAg ICAgaW50IHZ2ID0gdiA+PiAxNjsKKy0gICAgICAgICAgICAgICAgaWYgKHV1ID49IHNvdXJjZVJl Y3QubGVmdCgpICYmIHV1IDwgc291cmNlUmVjdC5sZWZ0KCkgKyBzb3VyY2VSZWN0LndpZHRoKCkK Ky0gICAgICAgICAgICAgICAgICAgICYmIHZ2ID49IHNvdXJjZVJlY3QudG9wKCkgJiYgdnYgPCBz b3VyY2VSZWN0LnRvcCgpICsgc291cmNlUmVjdC5oZWlnaHQoKSkgeworKyAgICAgICAgICAgICAg ICBxaW50NjQgdXUgPSB1ID4+IDE2OworKyAgICAgICAgICAgICAgICBxaW50NjQgdnYgPSB2ID4+ IDE2OworKyAgICAgICAgICAgICAgICBpZiAodXUgPj0gc291cmNlUmVjdExlZnQgJiYgdXUgPCBz b3VyY2VSZWN0TGVmdCArIHNvdXJjZVJlY3RXaWR0aAorKyAgICAgICAgICAgICAgICAgICAgJiYg dnYgPj0gc291cmNlUmVjdFRvcCAmJiB2diA8IHNvdXJjZVJlY3RUb3AgKyBzb3VyY2VSZWN0SGVp Z2h0KSB7CisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgICB1ICs9IGR1ZHg7CitAQCAtMjkwLDEwICsyOTcsMTAgQEAgdm9pZCBx dF90cmFuc2Zvcm1faW1hZ2VfcmFzdGVyaXplKERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwK KyAgICAgICAgICAgICB1ID0gKHgyIC0gMSkgKiBkdWR4ICsgeSAqIGR1ZHkgKyB1MDsKKyAgICAg ICAgICAgICB2ID0gKHgyIC0gMSkgKiBkdmR4ICsgeSAqIGR2ZHkgKyB2MDsKKyAgICAgICAgICAg ICBmb3IgKDsgeDIgPiB4MTsgLS14MikgeworLSAgICAgICAgICAgICAgICBpbnQgdXUgPSB1ID4+ IDE2OworLSAgICAgICAgICAgICAgICBpbnQgdnYgPSB2ID4+IDE2OworLSAgICAgICAgICAgICAg ICBpZiAodXUgPj0gc291cmNlUmVjdC5sZWZ0KCkgJiYgdXUgPCBzb3VyY2VSZWN0LmxlZnQoKSAr IHNvdXJjZVJlY3Qud2lkdGgoKQorLSAgICAgICAgICAgICAgICAgICAgJiYgdnYgPj0gc291cmNl UmVjdC50b3AoKSAmJiB2diA8IHNvdXJjZVJlY3QudG9wKCkgKyBzb3VyY2VSZWN0LmhlaWdodCgp KSB7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB1dSA9IHUgPj4gMTY7CisrICAgICAgICAgICAg ICAgIHFpbnQ2NCB2diA9IHYgPj4gMTY7CisrICAgICAgICAgICAgICAgIGlmICh1dSA+PSBzb3Vy Y2VSZWN0TGVmdCAmJiB1dSA8IHNvdXJjZVJlY3RMZWZ0ICsgc291cmNlUmVjdFdpZHRoCisrICAg ICAgICAgICAgICAgICAgICAmJiB2diA+PSBzb3VyY2VSZWN0VG9wICYmIHZ2IDwgc291cmNlUmVj dFRvcCArIHNvdXJjZVJlY3RIZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIHUgLT0gZHVkeDsKK0BAIC0zMDgs OCArMzE1LDggQEAgdm9pZCBxdF90cmFuc2Zvcm1faW1hZ2VfcmFzdGVyaXplKERlc3RUICpkZXN0 UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAgICAgICAvLyBCZWdpbm5pbmcgb2YgdGhlIHNjYW4g bGluZSwgd2l0aCBwZXItcGl4ZWwgY2hlY2tzLgorICAgICAgICAgICAgIGkgPSB4MSAtIGZyb21Y OworICAgICAgICAgICAgIHdoaWxlIChpKSB7CistICAgICAgICAgICAgICAgIGludCB1dSA9IHFC b3VuZChzb3VyY2VSZWN0LmxlZnQoKSwgdSA+PiAxNiwgc291cmNlUmVjdC5sZWZ0KCkgKyBzb3Vy Y2VSZWN0LndpZHRoKCkgLSAxKTsKKy0gICAgICAgICAgICAgICAgaW50IHZ2ID0gcUJvdW5kKHNv dXJjZVJlY3QudG9wKCksIHYgPj4gMTYsIHNvdXJjZVJlY3QudG9wKCkgKyBzb3VyY2VSZWN0Lmhl aWdodCgpIC0gMSk7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB1dSA9IHFCb3VuZChzb3VyY2VS ZWN0TGVmdCwgdSA+PiAxNiwgc291cmNlUmVjdExlZnQgKyBzb3VyY2VSZWN0V2lkdGggLSAxKTsK KysgICAgICAgICAgICAgICAgcWludDY0IHZ2ID0gcUJvdW5kKHNvdXJjZVJlY3RUb3AsIHYgPj4g MTYsIHNvdXJjZVJlY3RUb3AgKyBzb3VyY2VSZWN0SGVpZ2h0IC0gMSk7CisgICAgICAgICAgICAg ICAgIGJsZW5kZXIud3JpdGUobGluZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBTcmNUICo+KHJl aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWNoYXIgKj4oc3JjUGl4ZWxzKSArIHZ2ICogc2JwbClbdXVd KTsKKyAgICAgICAgICAgICAgICAgdSArPSBkdWR4OworICAgICAgICAgICAgICAgICB2ICs9IGR2 ZHg7CitAQCAtMzQ4LDggKzM1NSw4IEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6 ZShEZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGwsCisgICAgICAgICAgICAgLy8gRW5kIG9mIHRo ZSBzY2FuIGxpbmUsIHdpdGggcGVyLXBpeGVsIGNoZWNrcy4KKyAgICAgICAgICAgICBpID0gdG9Y IC0geDI7CisgICAgICAgICAgICAgd2hpbGUgKGkpIHsKKy0gICAgICAgICAgICAgICAgaW50IHV1 ID0gcUJvdW5kKHNvdXJjZVJlY3QubGVmdCgpLCB1ID4+IDE2LCBzb3VyY2VSZWN0LmxlZnQoKSAr IHNvdXJjZVJlY3Qud2lkdGgoKSAtIDEpOworLSAgICAgICAgICAgICAgICBpbnQgdnYgPSBxQm91 bmQoc291cmNlUmVjdC50b3AoKSwgdiA+PiAxNiwgc291cmNlUmVjdC50b3AoKSArIHNvdXJjZVJl Y3QuaGVpZ2h0KCkgLSAxKTsKKysgICAgICAgICAgICAgICAgcWludDY0IHV1ID0gcUJvdW5kKHNv dXJjZVJlY3RMZWZ0LCB1ID4+IDE2LCBzb3VyY2VSZWN0TGVmdCArIHNvdXJjZVJlY3RXaWR0aCAt IDEpOworKyAgICAgICAgICAgICAgICBxaW50NjQgdnYgPSBxQm91bmQoc291cmNlUmVjdFRvcCwg diA+PiAxNiwgc291cmNlUmVjdFRvcCArIHNvdXJjZVJlY3RIZWlnaHQgLSAxKTsKKyAgICAgICAg ICAgICAgICAgYmxlbmRlci53cml0ZShsaW5lLCByZWludGVycHJldF9jYXN0PGNvbnN0IFNyY1Qg Kj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1Y2hhciAqPihzcmNQaXhlbHMpICsgdnYgKiBzYnBs KVt1dV0pOworICAgICAgICAgICAgICAgICB1ICs9IGR1ZHg7CisgICAgICAgICAgICAgICAgIHYg Kz0gZHZkeDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xY29sb3J0cmNs dXRfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWNvbG9ydHJjbHV0X3AuaAoraW5kZXgg NzZhNmE2MDgwMy4uMjRmZDUyMmU2YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50 aW5nL3Fjb2xvcnRyY2x1dF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fjb2xv cnRyY2x1dF9wLmgKK0BAIC0xMTgsNiArMTE4LDcgQEAgcHVibGljOgorICAgICAgICAgcmV0dXJu IFFSZ2JhNjQ6OmZyb21SZ2JhNjQociwgZywgYiwgcUFscGhhKHJnYjMyKSAqIDI1Nyk7CisgI2Vu ZGlmCisgICAgIH0KKysgICAgUVJnYmE2NCB0b0xpbmVhcjY0KFFSZ2JhNjQpIGNvbnN0ID0gZGVs ZXRlOworIAorICAgICBRUmdiIHRvTGluZWFyKFFSZ2IgcmdiMzIpIGNvbnN0CisgICAgIHsKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xZHJhd2hlbHBlci5jcHAgYi9xdGJh c2Uvc3JjL2d1aS9wYWludGluZy9xZHJhd2hlbHBlci5jcHAKK2luZGV4IGE2MTc5MzUwOGEuLjVi YTJkMjc3YjcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xZHJhd2hlbHBl ci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FkcmF3aGVscGVyLmNwcAorQEAg LTYwOTEsNyArNjA5MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhbHBoYXJnYmJsZW5kX2FyZ2Iz MihxdWludDMyICpkc3QsIHVpbnQgY292ZXJhZ2UsIGNvbnN0IFFSZ2JhCisgc3RhdGljIGlubGlu ZSB2b2lkIHJnYkJsZW5kUGl4ZWwoUVJnYmE2NCAmZHN0LCBpbnQgY292ZXJhZ2UsIFFSZ2JhNjQg c2xpbmVhciwgY29uc3QgUUNvbG9yVHJjTHV0ICpjb2xvclByb2ZpbGUpCisgeworICAgICAvLyBE byBhIGdhbW1hY29ycmVjdGVkIFJHQiBhbHBoYWJsZW5kLi4uCistICAgIGNvbnN0IFFSZ2JhNjQg ZGxpbmVhciA9IGNvbG9yUHJvZmlsZSA/IGNvbG9yUHJvZmlsZS0+dG9MaW5lYXI2NChkc3QpIDog ZHN0OworKyAgICBjb25zdCBRUmdiYTY0IGRsaW5lYXIgPSBjb2xvclByb2ZpbGUgPyBjb2xvclBy b2ZpbGUtPnRvTGluZWFyKGRzdCkgOiBkc3Q7CisgCisgICAgIFFSZ2JhNjQgYmxlbmQgPSByZ2JC bGVuZChkbGluZWFyLCBzbGluZWFyLCBjb3ZlcmFnZSk7CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlci5jcHAgYi9xdGJhc2Uvc3JjL2d1 aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyLmNwcAoraW5kZXggMjgzOTIzZGU1Mi4uZjA4 ZWI5Y2JlZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2lu ZV9yYXN0ZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVf cmFzdGVyLmNwcAorQEAgLTU2MCwzMSArNTYwLDYgQEAgdm9pZCBRUmFzdGVyUGFpbnRFbmdpbmU6 OnVwZGF0ZU1hdHJpeChjb25zdCBRVHJhbnNmb3JtICZtYXRyaXgpCisgICAgIFFSYXN0ZXJQYWlu dEVuZ2luZVN0YXRlICpzID0gc3RhdGUoKTsKKyAgICAgLy8gRkFMQ09OOiBnZXQgcmlkIG9mIHRo aXMgbGluZSwgc2VlIGRyYXdJbWFnZSBjYWxsIGJlbG93LgorICAgICBzLT5tYXRyaXggPSBtYXRy aXg7CistICAgIFFUcmFuc2Zvcm06OlRyYW5zZm9ybWF0aW9uVHlwZSB0eG9wID0gcy0+bWF0cml4 LnR5cGUoKTsKKy0KKy0gICAgc3dpdGNoICh0eG9wKSB7CistCistICAgIGNhc2UgUVRyYW5zZm9y bTo6VHhOb25lOgorLSAgICAgICAgcy0+ZmxhZ3MuaW50X3hmb3JtID0gdHJ1ZTsKKy0gICAgICAg IGJyZWFrOworLQorLSAgICBjYXNlIFFUcmFuc2Zvcm06OlR4VHJhbnNsYXRlOgorLSAgICAgICAg cy0+ZmxhZ3MuaW50X3hmb3JtID0gcXJlYWwoaW50KHMtPm1hdHJpeC5keCgpKSkgPT0gcy0+bWF0 cml4LmR4KCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcXJlYWwoaW50KHMtPm1h dHJpeC5keSgpKSkgPT0gcy0+bWF0cml4LmR5KCk7CistICAgICAgICBicmVhazsKKy0KKy0gICAg Y2FzZSBRVHJhbnNmb3JtOjpUeFNjYWxlOgorLSAgICAgICAgcy0+ZmxhZ3MuaW50X3hmb3JtID0g cXJlYWwoaW50KHMtPm1hdHJpeC5keCgpKSkgPT0gcy0+bWF0cml4LmR4KCkKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgJiYgcXJlYWwoaW50KHMtPm1hdHJpeC5keSgpKSkgPT0gcy0+bWF0 cml4LmR5KCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcXJlYWwoaW50KHMtPm1h dHJpeC5tMTEoKSkpID09IHMtPm1hdHJpeC5tMTEoKQorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmJiBxcmVhbChpbnQocy0+bWF0cml4Lm0yMigpKSkgPT0gcy0+bWF0cml4Lm0yMigpOwor LSAgICAgICAgYnJlYWs7CistCistICAgIGRlZmF1bHQ6IC8vIHNoZWFyIC8gcGVyc3BlY3RpdmUu Li4KKy0gICAgICAgIHMtPmZsYWdzLmludF94Zm9ybSA9IGZhbHNlOworLSAgICAgICAgYnJlYWs7 CistICAgIH0KKy0KKyAgICAgcy0+ZmxhZ3MudHhfbm9zaGVhciA9IHF0X3NjYWxlRm9yVHJhbnNm b3JtKHMtPm1hdHJpeCwgJnMtPnR4c2NhbGUpOworIAorICAgICBlbnN1cmVPdXRsaW5lTWFwcGVy KCk7CitAQCAtNjE3LDcgKzU5Miw2IEBAIFFSYXN0ZXJQYWludEVuZ2luZVN0YXRlOjpRUmFzdGVy UGFpbnRFbmdpbmVTdGF0ZSgpCisgICAgIGZsYWdzLmJpbGluZWFyID0gZmFsc2U7CisgICAgIGZs YWdzLmxlZ2FjeV9yb3VuZGluZyA9IGZhbHNlOworICAgICBmbGFncy5mYXN0X3RleHQgPSB0cnVl OworLSAgICBmbGFncy5pbnRfeGZvcm0gPSB0cnVlOworICAgICBmbGFncy50eF9ub3NoZWFyID0g dHJ1ZTsKKyAgICAgZmxhZ3MuZmFzdF9pbWFnZXMgPSB0cnVlOworIAorQEAgLTE3OTMsNyArMTc2 Nyw3IEBAIHZvaWQgUVJhc3RlclBhaW50RW5naW5lOjpmaWxsKGNvbnN0IFFWZWN0b3JQYXRoICZw YXRoLCBjb25zdCBRQnJ1c2ggJmJydXNoKQorICAgICBRUmVjdEYgY3BSZWN0ID0gcGF0aC5jb250 cm9sUG9pbnRSZWN0KCk7CisgICAgIGNvbnN0IFFSZWN0RiBwYXRoRGV2aWNlUmVjdCA9IHMtPm1h dHJpeC5tYXBSZWN0KGNwUmVjdCk7CisgICAgIC8vIFNraXAgcGF0aHMgdGhhdCBieSBjb25zZXJ2 YXRpdmUgZXN0aW1hdGVzIGFyZSBjb21wbGV0ZWx5IG91dHNpZGUgdGhlIHBhaW50IGRldmljZS4K Ky0gICAgaWYgKCFwYXRoRGV2aWNlUmVjdC5pbnRlcnNlY3RzKFFSZWN0RihkLT5kZXZpY2VSZWN0 KSkpCisrICAgIGlmICghcGF0aERldmljZVJlY3QuaW50ZXJzZWN0cyhRUmVjdEYoZC0+ZGV2aWNl UmVjdCkpIHx8ICFwYXRoRGV2aWNlUmVjdC5pc1ZhbGlkKCkpCisgICAgICAgICByZXR1cm47Cisg CisgICAgIFByb2Nlc3NTcGFucyBibGVuZCA9IGQtPmdldEJydXNoRnVuYyhwYXRoRGV2aWNlUmVj dCwgJnMtPmJydXNoRGF0YSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcv cXBhaW50ZW5naW5lX3Jhc3Rlcl9wLmggYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRl bmdpbmVfcmFzdGVyX3AuaAoraW5kZXggMDg5YWFkYzNmNy4uYmY3MzYzZDVhYSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXJfcC5oCisrKysg Yi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyX3AuaAorQEAgLTEx MSw3ICsxMTEsNiBAQCBwdWJsaWM6CisgICAgICAgICB1aW50IGJpbGluZWFyIDogMTsKKyAgICAg ICAgIHVpbnQgbGVnYWN5X3JvdW5kaW5nIDogMTsKKyAgICAgICAgIHVpbnQgZmFzdF90ZXh0IDog MTsKKy0gICAgICAgIHVpbnQgaW50X3hmb3JtIDogMTsKKyAgICAgICAgIHVpbnQgdHhfbm9zaGVh ciA6IDE7CisgICAgICAgICB1aW50IGZhc3RfaW1hZ2VzIDogMTsKKyAgICAgfTsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlcnBhdGguY3BwIGIvcXRiYXNlL3Ny Yy9ndWkvcGFpbnRpbmcvcXBhaW50ZXJwYXRoLmNwcAoraW5kZXggZjk1NDRhMzI0MS4uZDgwZmFm ZWFmMSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVycGF0aC5j cHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVycGF0aC5jcHAKK0BAIC0x MjUzLDcgKzEyNTMsNyBAQCB2b2lkIFFQYWludGVyUGF0aDo6YWRkVGV4dChjb25zdCBRUG9pbnRG ICZwb2ludCwgY29uc3QgUUZvbnQgJmYsIGNvbnN0IFFTdHJpbmcgJgorIAorICAgICAgICAgaWYg KHNpLmFuYWx5c2lzLmZsYWdzIDwgUVNjcmlwdEFuYWx5c2lzOjpUYWJPck9iamVjdCkgeworICAg ICAgICAgICAgIFFHbHlwaExheW91dCBnbHlwaHMgPSBlbmctPnNoYXBlZEdseXBocygmc2kpOwor LSAgICAgICAgICAgIFFGb250RW5naW5lICpmZSA9IGYuZC0+ZW5naW5lRm9yU2NyaXB0KHNpLmFu YWx5c2lzLnNjcmlwdCk7CisrICAgICAgICAgICAgUUZvbnRFbmdpbmUgKmZlID0gZW5nLT5mb250 RW5naW5lKHNpKTsKKyAgICAgICAgICAgICBRX0FTU0VSVChmZSk7CisgICAgICAgICAgICAgZmUt PmFkZE91dGxpbmVUb1BhdGgoeCwgeSwgZ2x5cGhzLCB0aGlzLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpLmFuYWx5c2lzLmJpZGlMZXZlbCAlIDIKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGF0aGNsaXBwZXJfcC5oIGIvcXRiYXNlL3NyYy9ndWkv cGFpbnRpbmcvcXBhdGhjbGlwcGVyX3AuaAoraW5kZXggOTQ0NGE4N2I3MS4uMThmNjRjNWU4YyAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYXRoY2xpcHBlcl9wLmgKKysr KyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYXRoY2xpcHBlcl9wLmgKK0BAIC0xNTYsNyAr MTU2LDcgQEAgcHVibGljOgorICAgICBpbnQgdmVydGV4KERpcmVjdGlvbiBkaXJlY3Rpb24pIGNv bnN0OworIAorIHByaXZhdGU6CistICAgIGludCBtX25leHRbMl1bMl07CisrICAgIGludCBtX25l eHRbMl1bMl0gPSB7IHsgLTEsIC0xIH0sIHsgLTEsIC0xIH0gfTsKKyB9OworIAorIGNsYXNzIFFQ YXRoU2VnbWVudHMKK0BAIC0yOTYsMTAgKzI5Niw2IEBAIGlubGluZSBRUGF0aEVkZ2U6OlFQYXRo RWRnZShpbnQgYSwgaW50IGIpCisgICAgICwgYW5nbGUoMCkKKyAgICAgLCBpbnZBbmdsZSgwKQor IHsKKy0gICAgbV9uZXh0WzBdWzBdID0gLTE7CistICAgIG1fbmV4dFsxXVswXSA9IC0xOworLSAg ICBtX25leHRbMF1bMF0gPSAtMTsKKy0gICAgbV9uZXh0WzFdWzBdID0gLTE7CisgfQorIAorIGlu bGluZSBpbnQgUVBhdGhFZGdlOjpuZXh0KFRyYXZlcnNhbCB0cmF2ZXJzYWwsIERpcmVjdGlvbiBk aXJlY3Rpb24pIGNvbnN0CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBk Zi5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGRmLmNwcAoraW5kZXggMzA2Njc0NGYx Yi4uMmM4ZDNjM2I1MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwZGYu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGRmLmNwcAorQEAgLTI3NjAsNiAr Mjc2MCw4IEBAIGludCBRUGRmRW5naW5lUHJpdmF0ZTo6YWRkQnJ1c2hQYXR0ZXJuKGNvbnN0IFFU cmFuc2Zvcm0gJm0sIGJvb2wgKnNwZWNpZnlDb2xvciwKKyAgICAgICAgIHJldHVybiBncmFkaWVu dEJydXNoKGJydXNoLCBtYXRyaXgsIGdTdGF0ZU9iamVjdCk7CisgICAgIH0KKyAKKysgICAgbWF0 cml4ID0gYnJ1c2gudHJhbnNmb3JtKCkgKiBtYXRyaXg7CisrCisgICAgIGlmICgoIWJydXNoLmlz T3BhcXVlKCkgJiYgYnJ1c2guc3R5bGUoKSA8IFF0OjpMaW5lYXJHcmFkaWVudFBhdHRlcm4pIHx8 IG9wYWNpdHkgIT0gMS4wKQorICAgICAgICAgKmdTdGF0ZU9iamVjdCA9IGFkZENvbnN0YW50QWxw aGFPYmplY3QocVJvdW5kKGJydXNoLmNvbG9yKCkuYWxwaGEoKSAqIG9wYWNpdHkpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcVJvdW5kKHBlbi5jb2xv cigpLmFscGhhKCkgKiBvcGFjaXR5KSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFp bnRpbmcvcXN0cm9rZXIuY3BwIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXN0cm9rZXIuY3Bw CitpbmRleCBjYjVkMzk1ZTgwLi4zYjYzNTdhODkzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9n dWkvcGFpbnRpbmcvcXN0cm9rZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9x c3Ryb2tlci5jcHAKK0BAIC0xMTgyLDYgKzExODIsNyBAQCB2b2lkIFFEYXNoU3Ryb2tlcjo6cHJv Y2Vzc0N1cnJlbnRTdWJwYXRoKCkKKyAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBlbnRpcmUgbGlu ZSBzaG91bGQgYmUgY2xpcHBlZCBhd2F5IG9yIHNpbXBsaWZpZWQKKyAgICAgICAgIGJvb2wgY2xp cEl0ID0gY2xpcHBpbmcgJiYgIWxpbmVJbnRlcnNlY3RzUmVjdChwcmV2LCBlLCBjbGlwX3RsLCBj bGlwX2JyKTsKKyAgICAgICAgIGJvb2wgc2tpcERhc2hpbmcgPSBlbGVuICogaW52U3VtTGVuZ3Ro ID4gcmVwZXRpdGlvbkxpbWl0KCk7CisrICAgICAgICBpbnQgbWF4RGFzaGVzID0gZGFzaENvdW50 OworICAgICAgICAgaWYgKHNraXBEYXNoaW5nIHx8IGNsaXBJdCkgeworICAgICAgICAgICAgIC8v IEN1dCBhd2F5IGZ1bGwgZGFzaCBzZXF1ZW5jZXMuCisgICAgICAgICAgICAgZWxlbiAtPSBzdGQ6 OmZsb29yKGVsZW4gKiBpbnZTdW1MZW5ndGgpICogc3VtTGVuZ3RoOworQEAgLTExOTYsNyArMTE5 Nyw3IEBAIHZvaWQgUURhc2hTdHJva2VyOjpwcm9jZXNzQ3VycmVudFN1YnBhdGgoKQorICAgICAg ICAgICAgICAgICAgICAgcG9zID0gZXN0b3A7IC8vIG1vdmUgcG9zIHRvIG5leHQgcGF0aCBlbGVt ZW50CisgICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg fSBlbHNlIHsgLy8gRGFzaCBpcyBvbiB0aGlzIGxpbmUKKy0gICAgICAgICAgICAgICAgICAgIHBv cyA9IGRwb3MgKyBlc3RhcnQ7CisrICAgICAgICAgICAgICAgICAgICBwb3MgPSAtLW1heERhc2hl cyA+IDAgPyBkcG9zICsgZXN0YXJ0IDogZXN0b3A7CisgICAgICAgICAgICAgICAgICAgICBkb25l ID0gcG9zID49IGVzdG9wOworICAgICAgICAgICAgICAgICAgICAgaWYgKCsraWRhc2ggPj0gZGFz aENvdW50KQorICAgICAgICAgICAgICAgICAgICAgICAgIGlkYXNoID0gMDsKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xdF9hdHRyaWJ1dGlvbi5qc29uIGIvcXRiYXNlL3Ny Yy9ndWkvcGFpbnRpbmcvcXRfYXR0cmlidXRpb24uanNvbgoraW5kZXggN2IxNmU4YzIxMS4uMGU4 N2QzMGFhMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3F0X2F0dHJpYnV0 aW9uLmpzb24KKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3F0X2F0dHJpYnV0aW9uLmpz b24KK0BAIC0xMCw3ICsxMCw3IEBACisgICAgICAgICAiSG9tZXBhZ2UiOiAiaHR0cDovL3d3dy5m cmVldHlwZS5vcmciLAorICAgICAgICAgIkxpY2Vuc2UiOiAiRnJlZXR5cGUgUHJvamVjdCBMaWNl bnNlIG9yIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHYyLjAgb25seSIsCisgICAgICAgICAi TGljZW5zZUlkIjogIkZUTCBvciBHUEwtMi4wIiwKKy0gICAgICAgICJMaWNlbnNlRmlsZSI6ICIu Li8uLi8zcmRwYXJ0eS9mcmVldHlwZS9kb2NzL0xJQ0VOU0UuVFhUIiwKKysgICAgICAgICJMaWNl bnNlRmlsZSI6ICIuLi8uLi8zcmRwYXJ0eS9mcmVldHlwZS9MSUNFTlNFLlRYVCIsCisgICAgICAg ICAiQ29weXJpZ2h0IjogIkNvcHlyaWdodCAyMDAwLTIwMTYgYnkgRGF2aWQgVHVybmVyLCBSb2Jl cnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiIKKyAgICAgfSwKKyAgICAgeworZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyX3BfcC5oIGIvcXRiYXNlL3NyYy9ndWkv cmhpL3FzaGFkZXJfcF9wLmgKK2luZGV4IGVjOWQyNTk3MWYuLjRhNWE3YTZkNTEgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9wX3AuaAorKysrIGIvcXRiYXNlL3NyYy9n dWkvcmhpL3FzaGFkZXJfcF9wLmgKK0BAIC02OCwxMyArNjgsMTMgQEAgc3RydWN0IFFfR1VJX0VY UE9SVCBRU2hhZGVyUHJpdmF0ZQorICAgICB7CisgICAgIH0KKyAKKy0gICAgUVNoYWRlclByaXZh dGUoY29uc3QgUVNoYWRlclByaXZhdGUgKm90aGVyKQorKyAgICBRU2hhZGVyUHJpdmF0ZShjb25z dCBRU2hhZGVyUHJpdmF0ZSAmb3RoZXIpCisgICAgICAgICA6IHJlZigxKSwKKy0gICAgICAgICAg cXNiVmVyc2lvbihvdGhlci0+cXNiVmVyc2lvbiksCistICAgICAgICAgIHN0YWdlKG90aGVyLT5z dGFnZSksCistICAgICAgICAgIGRlc2Mob3RoZXItPmRlc2MpLAorLSAgICAgICAgICBzaGFkZXJz KG90aGVyLT5zaGFkZXJzKSwKKy0gICAgICAgICAgYmluZGluZ3Mob3RoZXItPmJpbmRpbmdzKQor KyAgICAgICAgICBxc2JWZXJzaW9uKG90aGVyLnFzYlZlcnNpb24pLAorKyAgICAgICAgICBzdGFn ZShvdGhlci5zdGFnZSksCisrICAgICAgICAgIGRlc2Mob3RoZXIuZGVzYyksCisrICAgICAgICAg IHNoYWRlcnMob3RoZXIuc2hhZGVycyksCisrICAgICAgICAgIGJpbmRpbmdzKG90aGVyLmJpbmRp bmdzKQorICAgICB7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9yaGkv cXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJkZXNj cmlwdGlvbl9wX3AuaAoraW5kZXggZWMyYjBiNmI0Yy4uM2RhMzNhOGEyYiAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyZGVzY3JpcHRpb25fcF9wLmgKKysrKyBiL3F0YmFz ZS9zcmMvZ3VpL3JoaS9xc2hhZGVyZGVzY3JpcHRpb25fcF9wLmgKK0BAIC02MywxNiArNjMsMTYg QEAgc3RydWN0IFFfR1VJX0VYUE9SVCBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlCisgICAgICAg ICBsb2NhbFNpemVbMF0gPSBsb2NhbFNpemVbMV0gPSBsb2NhbFNpemVbMl0gPSAwOworICAgICB9 CisgCistICAgIFFTaGFkZXJEZXNjcmlwdGlvblByaXZhdGUoY29uc3QgUVNoYWRlckRlc2NyaXB0 aW9uUHJpdmF0ZSAqb3RoZXIpCisrICAgIFFTaGFkZXJEZXNjcmlwdGlvblByaXZhdGUoY29uc3Qg UVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0ZSAmb3RoZXIpCisgICAgICAgICA6IHJlZigxKSwKKy0g ICAgICAgICAgaW5WYXJzKG90aGVyLT5pblZhcnMpLAorLSAgICAgICAgICBvdXRWYXJzKG90aGVy LT5vdXRWYXJzKSwKKy0gICAgICAgICAgdW5pZm9ybUJsb2NrcyhvdGhlci0+dW5pZm9ybUJsb2Nr cyksCistICAgICAgICAgIHB1c2hDb25zdGFudEJsb2NrcyhvdGhlci0+cHVzaENvbnN0YW50Qmxv Y2tzKSwKKy0gICAgICAgICAgc3RvcmFnZUJsb2NrcyhvdGhlci0+c3RvcmFnZUJsb2NrcyksCist ICAgICAgICAgIGNvbWJpbmVkSW1hZ2VTYW1wbGVycyhvdGhlci0+Y29tYmluZWRJbWFnZVNhbXBs ZXJzKSwKKy0gICAgICAgICAgc3RvcmFnZUltYWdlcyhvdGhlci0+c3RvcmFnZUltYWdlcyksCist ICAgICAgICAgIGxvY2FsU2l6ZShvdGhlci0+bG9jYWxTaXplKQorKyAgICAgICAgICBpblZhcnMo b3RoZXIuaW5WYXJzKSwKKysgICAgICAgICAgb3V0VmFycyhvdGhlci5vdXRWYXJzKSwKKysgICAg ICAgICAgdW5pZm9ybUJsb2NrcyhvdGhlci51bmlmb3JtQmxvY2tzKSwKKysgICAgICAgICAgcHVz aENvbnN0YW50QmxvY2tzKG90aGVyLnB1c2hDb25zdGFudEJsb2NrcyksCisrICAgICAgICAgIHN0 b3JhZ2VCbG9ja3Mob3RoZXIuc3RvcmFnZUJsb2NrcyksCisrICAgICAgICAgIGNvbWJpbmVkSW1h Z2VTYW1wbGVycyhvdGhlci5jb21iaW5lZEltYWdlU2FtcGxlcnMpLAorKyAgICAgICAgICBzdG9y YWdlSW1hZ2VzKG90aGVyLnN0b3JhZ2VJbWFnZXMpLAorKyAgICAgICAgICBsb2NhbFNpemUob3Ro ZXIubG9jYWxTaXplKQorICAgICB7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xZm9udGRh dGFiYXNlLmNwcAoraW5kZXggYTY1N2E4YzUxNi4uNGZjMDEwMDk1OCAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3Vp L3RleHQvcWZvbnRkYXRhYmFzZS5jcHAKK0BAIC05ODMsNyArOTgzLDcgQEAgUUZvbnRFbmdpbmUg KmxvYWRTaW5nbGVFbmdpbmUoaW50IHNjcmlwdCwKKyAgICAgICAgIGlmIChzdHlsZS0+a2V5LnN0 cmV0Y2ggIT0gMCAmJiByZXF1ZXN0LnN0cmV0Y2ggIT0gMAorICAgICAgICAgICAgICYmIChyZXF1 ZXN0LnN0eWxlTmFtZS5pc0VtcHR5KCkgfHwgcmVxdWVzdC5zdHlsZU5hbWUgIT0gc3R5bGUtPnN0 eWxlTmFtZSkpIHsKKyAgICAgICAgICAgICBkZWYuc3RyZXRjaCA9IChyZXF1ZXN0LnN0cmV0Y2gg KiAxMDAgKyBzdHlsZS0+a2V5LnN0cmV0Y2ggLyAyKSAvIHN0eWxlLT5rZXkuc3RyZXRjaDsKKy0g ICAgICAgIH0gZWxzZSB7CisrICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3Quc3RyZXRjaCA9PSBR Rm9udDo6QW55U3RyZXRjaCkgeworICAgICAgICAgICAgIGRlZi5zdHJldGNoID0gMTAwOworICAg ICAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRkb2N1bWVu dGxheW91dC5jcHAgYi9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZG9jdW1lbnRsYXlvdXQuY3Bw CitpbmRleCBmM2U2ZWEyMTAwLi43MjI2N2U5MzgwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9n dWkvdGV4dC9xdGV4dGRvY3VtZW50bGF5b3V0LmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdGV4 dC9xdGV4dGRvY3VtZW50bGF5b3V0LmNwcAorQEAgLTIxMjMsNyArMjEyMyw3IEBAIHZvaWQgUVRl eHREb2N1bWVudExheW91dFByaXZhdGU6OmRyYXdMaXN0SXRlbShjb25zdCBRUG9pbnRGICZvZmZz ZXQsIFFQYWludGVyICpwCisgeworICAgICBRX1EoY29uc3QgUVRleHREb2N1bWVudExheW91dCk7 CisgICAgIGNvbnN0IFFUZXh0QmxvY2tGb3JtYXQgYmxvY2tGb3JtYXQgPSBibC5ibG9ja0Zvcm1h dCgpOworLSAgICBjb25zdCBRVGV4dENoYXJGb3JtYXQgY2hhckZvcm1hdCA9IFFUZXh0Q3Vyc29y KGJsKS5jaGFyRm9ybWF0KCk7CisrICAgIGNvbnN0IFFUZXh0Q2hhckZvcm1hdCBjaGFyRm9ybWF0 ID0gYmwuY2hhckZvcm1hdCgpOworICAgICBRRm9udCBmb250KGNoYXJGb3JtYXQuZm9udCgpKTsK KyAgICAgaWYgKHEtPnBhaW50RGV2aWNlKCkpCisgICAgICAgICBmb250ID0gUUZvbnQoZm9udCwg cS0+cGFpbnREZXZpY2UoKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4 dGVuZ2luZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZW5naW5lLmNwcAoraW5kZXgg Y2U0YWJhYzQ3Mi4uYTZjNjZlNWQyZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3RleHQv cXRleHRlbmdpbmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZW5naW5lLmNw cAorQEAgLTEsNiArMSw2IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorLSoqIENvcHly aWdodCAoQykgMjAxNiBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIx IFRoZSBRdCBDb21wYW55IEx0ZC4KKyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNl bnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRHdWkgbW9kdWxlIG9m IHRoZSBRdCBUb29sa2l0LgorQEAgLTE1NjUsNiArMTU2NSwxMiBAQCB2b2lkIFFUZXh0RW5naW5l OjpzaGFwZVRleHQoaW50IGl0ZW0pIGNvbnN0CisgICAgICAgICAvLyBPdmVyd3JpdGUgd2l0aCAw IHRva2VuIHRvIGluZGljYXRlIGZhaWx1cmUKKyAgICAgICAgIFFHbHlwaExheW91dCBnID0gYXZh aWxhYmxlR2x5cGhzKCZzaSk7CisgICAgICAgICBnLmdseXBoc1swXSA9IDA7CisrICAgICAgICBn LmF0dHJpYnV0ZXNbMF0uY2x1c3RlclN0YXJ0ID0gdHJ1ZTsKKysKKysgICAgICAgIHVzaG9ydCAq bG9nX2NsdXN0ZXJzID0gbG9nQ2x1c3RlcnMoJnNpKTsKKysgICAgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgaXRlbUxlbmd0aDsgKytpKQorKyAgICAgICAgICAgIGxvZ19jbHVzdGVyc1tpXSA9IDA7 CisrCisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2d1aS91dGlsL3FkZXNrdG9wc2VydmljZXMuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdXRpbC9xZGVz a3RvcHNlcnZpY2VzLmNwcAoraW5kZXggZmJiNjNhOTQwOC4uNGQ1ZmFmYWFhNyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcWRlc2t0b3BzZXJ2aWNlcy5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvZ3VpL3V0aWwvcWRlc2t0b3BzZXJ2aWNlcy5jcHAKK0BAIC01NCw2ICs1NCw4IEBACisg I2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1pbnRlZ3JhdGlvbi5oPgorICNpbmNsdWRlIDxxZGlyLmg+ CisgCisrI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3Fsb2NraW5nX3AuaD4KKysKKyBRVF9CRUdJ Tl9OQU1FU1BBQ0UKKyAKKyBjbGFzcyBRT3BlblVybEhhbmRsZXJSZWdpc3RyeSA6IHB1YmxpYyBR T2JqZWN0CitAQCAtODEsNiArODMsNyBAQCBRX0dMT0JBTF9TVEFUSUMoUU9wZW5VcmxIYW5kbGVy UmVnaXN0cnksIGhhbmRsZXJSZWdpc3RyeSkKKyAKKyB2b2lkIFFPcGVuVXJsSGFuZGxlclJlZ2lz dHJ5OjpoYW5kbGVyRGVzdHJveWVkKFFPYmplY3QgKmhhbmRsZXIpCisgeworKyAgICBjb25zdCBh dXRvIGxvY2sgPSBxdF9zY29wZWRfbG9jayhtdXRleCk7CisgICAgIEhhbmRsZXJIYXNoOjpJdGVy YXRvciBpdCA9IGhhbmRsZXJzLmJlZ2luKCk7CisgICAgIHdoaWxlIChpdCAhPSBoYW5kbGVycy5l bmQoKSkgeworICAgICAgICAgaWYgKGl0LT5yZWNlaXZlciA9PSBoYW5kbGVyKSB7CitAQCAtMjk0 LDcgKzI5Nyw4IEBAIHZvaWQgUURlc2t0b3BTZXJ2aWNlczo6c2V0VXJsSGFuZGxlcihjb25zdCBR U3RyaW5nICZzY2hlbWUsIFFPYmplY3QgKnJlY2VpdmVyLCBjCisgICAgIGgubmFtZSA9IG1ldGhv ZDsKKyAgICAgcmVnaXN0cnktPmhhbmRsZXJzLmluc2VydChzY2hlbWUudG9Mb3dlcigpLCBoKTsK KyAgICAgUU9iamVjdDo6Y29ubmVjdChyZWNlaXZlciwgU0lHTkFMKGRlc3Ryb3llZChRT2JqZWN0 KikpLAorLSAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LCBTTE9UKGhhbmRsZXJEZXN0cm95 ZWQoUU9iamVjdCopKSk7CisrICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnksIFNMT1QoaGFu ZGxlckRlc3Ryb3llZChRT2JqZWN0KikpLAorKyAgICAgICAgICAgICAgICAgICAgIFF0OjpEaXJl Y3RDb25uZWN0aW9uKTsKKyB9CisgCisgLyohCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkv dXRpbC9xcGttaGFuZGxlci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS91dGlsL3Fwa21oYW5kbGVyLmNw cAoraW5kZXggZTBjM2I3NWVmZS4uMzQxNGY5ZDhiYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Z3VpL3V0aWwvcXBrbWhhbmRsZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS91dGlsL3Fwa21o YW5kbGVyLmNwcAorQEAgLTU3LDcgKzU3LDcgQEAgc3RydWN0IFBrbVR5cGUKKyAgICAgcXVpbnQz MiBieXRlc1BlckJsb2NrOworIH07CisgCistc3RhdGljIFBrbVR5cGUgdHlwZU1hcFs1XSA9IHsK KytzdGF0aWMgY29uc3RleHByIFBrbVR5cGUgdHlwZU1hcFs1XSA9IHsKKyAgICAgeyAweDhENjQs ICA4IH0sICAgLy8gR0xfRVRDMV9SR0I4X09FUworICAgICB7IDB4OTI3NCwgIDggfSwgICAvLyBH TF9DT01QUkVTU0VEX1JHQjhfRVRDMgorICAgICB7IDAsIDAgfSwgICAgICAgICAvLyB1bnVzZWQg KG9ic29sZXRlKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdv cmtyZXBseWZpbGVpbXBsLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmty ZXBseWZpbGVpbXBsLmNwcAoraW5kZXggYjZiZTkzMTQ3YS4uNmU2OWI0YzRkMyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWZpbGVpbXBsLmNwcAor KysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5ZmlsZWltcGwuY3Bw CitAQCAtODksOSArODksMTAgQEAgUU5ldHdvcmtSZXBseUZpbGVJbXBsOjpRTmV0d29ya1JlcGx5 RmlsZUltcGwoUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyICptYW5hZ2VyLCBjb24KKyAgICAgICAgIC8v IHdlIGhhbmRsZSBvbmx5IGxvY2FsIGZpbGVzCisgICAgICAgICBRU3RyaW5nIG1zZyA9IFFDb3Jl QXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUU5ldHdvcmtBY2Nlc3NGaWxlQmFja2VuZCIsICJSZXF1 ZXN0IGZvciBvcGVuaW5nIG5vbi1sb2NhbCBmaWxlICUxIikuYXJnKHVybC50b1N0cmluZygpKTsK KyAgICAgICAgIHNldEVycm9yKFFOZXR3b3JrUmVwbHk6OlByb3RvY29sSW52YWxpZE9wZXJhdGlv bkVycm9yLCBtc2cpOworKyAgICAgICAgc2V0RmluaXNoZWQodHJ1ZSk7IC8vIFdlJ3JlIGZpbmlz aGVkLCB3aWxsIGVtaXQgZmluaXNoZWQoKSBhZnRlciBjdG9yIGlzIGRvbmUuCisgICAgICAgICBR TWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHRoaXMsICJlcnJvck9jY3VycmVkIiwgUXQ6OlF1ZXVl ZENvbm5lY3Rpb24sCisgICAgICAgICAgICAgUV9BUkcoUU5ldHdvcmtSZXBseTo6TmV0d29ya0Vy cm9yLCBRTmV0d29ya1JlcGx5OjpQcm90b2NvbEludmFsaWRPcGVyYXRpb25FcnJvcikpOworLSAg ICAgICAgZmlsZU9wZW5GaW5pc2hlZChmYWxzZSk7CisrICAgICAgICBRTWV0YU9iamVjdDo6aW52 b2tlTWV0aG9kKHRoaXMsIFt0aGlzXSgpeyBmaWxlT3BlbkZpbmlzaGVkKGZhbHNlKTsgfSwgUXQ6 OlF1ZXVlZENvbm5lY3Rpb24pOworICAgICAgICAgcmV0dXJuOworICAgICB9CisgI2VuZGlmCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5aW1wbC5j cHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlpbXBsLmNwcAoraW5k ZXggYmNkZjZlZTJmMS4uM2I2ZGViODJiZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29y ay9hY2Nlc3MvcW5ldHdvcmtyZXBseWltcGwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsv YWNjZXNzL3FuZXR3b3JrcmVwbHlpbXBsLmNwcAorQEAgLTY4MCw3ICs2ODAsNyBAQCB2b2lkIFFO ZXR3b3JrUmVwbHlJbXBsUHJpdmF0ZTo6YXBwZW5kRG93bnN0cmVhbURhdGEoUUlPRGV2aWNlICpk YXRhKQorICAgICAvLyByZWFkIHVudGlsIEVPRiBmcm9tIGRhdGEKKyAgICAgaWYgKFFfVU5MSUtF TFkoY29weURldmljZSkpIHsKKyAgICAgICAgIHFDcml0aWNhbCgiUU5ldHdvcmtSZXBseUltcGw6 IGNvcHkgZnJvbSBRSU9EZXZpY2UgYWxyZWFkeSBpbiBwcm9ncmVzcyAtLSAiCistICAgICAgICAg ICAgICAgICAgImJhY2tlbmQgcHJvYmx5IG5lZWRzIHRvIGJlIGZpeGVkIik7CisrICAgICAgICAg ICAgICAgICAgImJhY2tlbmQgcHJvYmFibHkgbmVlZHMgdG8gYmUgZml4ZWQiKTsKKyAgICAgICAg IHJldHVybjsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9rZXJu ZWwvcWF1dGhlbnRpY2F0b3IuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xYXV0aGVu dGljYXRvci5jcHAKK2luZGV4IGQ5ZmU3YmM0N2IuLmNjZDA0YjI5NGEgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3FhdXRoZW50aWNhdG9yLmNwcAorKysrIGIvcXRiYXNl L3NyYy9uZXR3b3JrL2tlcm5lbC9xYXV0aGVudGljYXRvci5jcHAKK0BAIC01MCw2ICs1MCw3IEBA CisgI2luY2x1ZGUgPHFzdHJpbmcuaD4KKyAjaW5jbHVkZSA8cWRhdGV0aW1lLmg+CisgI2luY2x1 ZGUgPHFyYW5kb20uaD4KKysjaW5jbHVkZSAicHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9wLmgiCisg CisgI2lmZGVmIFFfT1NfV0lOCisgI2luY2x1ZGUgPHFtdXRleC5oPgorQEAgLTE1NjMsNyArMTU2 NCw3IEBAIHN0YXRpYyBib29sIHFfU1NQSV9saWJyYXJ5X2xvYWQoKQorIAorICAgICAvLyBJbml0 aWFsaXplIHNlY3VyaXR5IGludGVyZmFjZQorICAgICBpZiAocFNlY3VyaXR5RnVuY3Rpb25UYWJs ZSA9PSBudWxscHRyKSB7CistICAgICAgICBzZWN1cml0eURMTEhhbmRsZSA9IExvYWRMaWJyYXJ5 KEwic2VjdXIzMi5kbGwiKTsKKysgICAgICAgIHNlY3VyaXR5RExMSGFuZGxlID0gUVN5c3RlbUxp YnJhcnk6OmxvYWQoTCJzZWN1cjMyIik7CisgICAgICAgICBpZiAoc2VjdXJpdHlETExIYW5kbGUg IT0gbnVsbHB0cikgeworICAgICAgICAgICAgIElOSVRfU0VDVVJJVFlfSU5URVJGQUNFIHBJbml0 U2VjdXJpdHlJbnRlcmZhY2UgPQorICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PElO SVRfU0VDVVJJVFlfSU5URVJGQUNFPigKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsv a2VybmVsL3Fob3N0aW5mb191bml4LmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWhv c3RpbmZvX3VuaXguY3BwCitpbmRleCA5YjBhMmVlNjY5Li43MzY3OWM5ZWYxIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xaG9zdGluZm9fdW5peC5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWhvc3RpbmZvX3VuaXguY3BwCitAQCAtMTIyLDcgKzEy Miw2IEBAIHN0YXRpYyBRRnVuY3Rpb25Qb2ludGVyIHJlc29sdmVTeW1ib2woUUxpYnJhcnkgJmxp YiwgY29uc3QgY2hhciAqc3ltKQorIAorIExpYlJlc29sdjo6TGliUmVzb2x2KCkKKyB7CistICAg IFFMaWJyYXJ5IGxpYjsKKyAjaWZkZWYgTElCUkVTT0xWX1NPCisgICAgIGxpYi5zZXRGaWxlTmFt ZShRU3RyaW5nTGl0ZXJhbChMSUJSRVNPTFZfU08pKTsKKyAgICAgaWYgKCFsaWIubG9hZCgpKQor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zb2NrZXQvcXNvY2tzNXNvY2tldGVuZ2lu ZS5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc29ja2V0L3Fzb2NrczVzb2NrZXRlbmdpbmUuY3Bw CitpbmRleCAzYTA0NmZkMTE2Li45N2ZhZGNhMGIzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9u ZXR3b3JrL3NvY2tldC9xc29ja3M1c29ja2V0ZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9u ZXR3b3JrL3NvY2tldC9xc29ja3M1c29ja2V0ZW5naW5lLmNwcAorQEAgLTEyOTYsNyArMTI5Niw3 IEBAIHZvaWQgUVNvY2tzNVNvY2tldEVuZ2luZVByaXZhdGU6Ol9xX3VkcFNvY2tldFJlYWROb3Rp ZmljYXRpb24oKQorICAgICAgICAgaW50IHBvcyA9IDA7CisgICAgICAgICBjb25zdCBjaGFyICpi dWYgPSBpbkJ1Zi5jb25zdERhdGEoKTsKKyAgICAgICAgIGlmIChpbkJ1Zi5zaXplKCkgPCA0KSB7 CistICAgICAgICAgICAgUVNPQ0tTNV9EX0RFQlVHIDw8ICJidWd1cyB1ZHAgZGF0YSwgZGlzY2Fy ZGluZyI7CisrICAgICAgICAgICAgUVNPQ0tTNV9EX0RFQlVHIDw8ICJib2d1cyB1ZHAgZGF0YSwg ZGlzY2FyZGluZyI7CisgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgfQorICAgICAgICAg UVNvY2tzNVJldml2ZWREYXRhZ3JhbSBkYXRhZ3JhbTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L25ldHdvcmsvc3NsL3Fzc2xjb250ZXh0X29wZW5zc2wuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3Jr L3NzbC9xc3NsY29udGV4dF9vcGVuc3NsLmNwcAoraW5kZXggYzlmMjAyZjU3My4uYzk5MmRhOWQ4 ZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGNvbnRleHRfb3BlbnNz bC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGNvbnRleHRfb3BlbnNzbC5j cHAKK0BAIC00MDksNyArNDA5LDcgQEAgaW5pdF9jb250ZXh0OgorICAgICAgICAgYnJlYWs7Cisg ICAgIGNhc2UgUVNzbDo6RHRsc1YxXzBPckxhdGVyOgorICAgICAgICAgbWluVmVyc2lvbiA9IERU TFMxX1ZFUlNJT047CistICAgICAgICBtYXhWZXJzaW9uID0gRFRMU19NQVhfVkVSU0lPTjsKKysg ICAgICAgIG1heFZlcnNpb24gPSAwOworICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUVNzbDo6 RHRsc1YxXzI6CisgICAgICAgICBtaW5WZXJzaW9uID0gRFRMUzFfMl9WRVJTSU9OOworQEAgLTQx Nyw3ICs0MTcsNyBAQCBpbml0X2NvbnRleHQ6CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBR U3NsOjpEdGxzVjFfMk9yTGF0ZXI6CisgICAgICAgICBtaW5WZXJzaW9uID0gRFRMUzFfMl9WRVJT SU9OOworLSAgICAgICAgbWF4VmVyc2lvbiA9IERUTFNfTUFYX1ZFUlNJT047CisrICAgICAgICBt YXhWZXJzaW9uID0gMDsKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIFFTc2w6OlRsc1YxXzNP ckxhdGVyOgorICNpZmRlZiBUTFMxXzNfVkVSU0lPTgorQEAgLTQ1NSw3ICs0NTUsNyBAQCBpbml0 X2NvbnRleHQ6CisgICAgIH0KKyAKKyAgICAgLy8gRW5hYmxlIGJ1ZyB3b3JrYXJvdW5kcy4KKy0g ICAgbG9uZyBvcHRpb25zID0gUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpzZXR1cE9wZW5Tc2xP cHRpb25zKGNvbmZpZ3VyYXRpb24ucHJvdG9jb2woKSwgY29uZmlndXJhdGlvbi5kLT5zc2xPcHRp b25zKTsKKysgICAgcXNzbG9wdGlvbnMgb3B0aW9ucyA9IFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0 ZTo6c2V0dXBPcGVuU3NsT3B0aW9ucyhjb25maWd1cmF0aW9uLnByb3RvY29sKCksIGNvbmZpZ3Vy YXRpb24uZC0+c3NsT3B0aW9ucyk7CisgICAgIHFfU1NMX0NUWF9zZXRfb3B0aW9ucyhzc2xDb250 ZXh0LT5jdHgsIG9wdGlvbnMpOworIAorICAgICAvLyBUZWxsIE9wZW5TU0wgdG8gcmVsZWFzZSBt ZW1vcnkgZWFybHkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xkaWZm aWVoZWxsbWFucGFyYW1ldGVyc19vcGVuc3NsLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wv cXNzbGRpZmZpZWhlbGxtYW5wYXJhbWV0ZXJzX29wZW5zc2wuY3BwCitpbmRleCBhYWY4NzQxMTMw Li5iNTg5MzUzNzJjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsZGlm ZmllaGVsbG1hbnBhcmFtZXRlcnNfb3BlbnNzbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29y ay9zc2wvcXNzbGRpZmZpZWhlbGxtYW5wYXJhbWV0ZXJzX29wZW5zc2wuY3BwCitAQCAtNTksNTcg KzU5LDYgQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKy0jaWZkZWYgT1BFTlNTTF9OT19E RVBSRUNBVEVEXzNfMAorLQorLXN0YXRpYyBpbnQgcV9ESF9jaGVjayhESCAqZGgsIGludCAqc3Rh dHVzKQorLXsKKy0gICAgLy8gREhfY2hlY2sgd2FzIGZpcnN0IGRlcHJlY2F0ZWQgaW4gT3BlblNT TCAzLjAuMCwgYXMgbG93LWxldmVsCistICAgIC8vIEFQSTsgdGhlIEVWUF9QS0VZIGZhbWlseSBv ZiBmdW5jdGlvbnMgd2FzIGFkdmlzZWQgYXMgYW4gYWx0ZXJuYXRpdmUuCistICAgIC8vIEFzIG9m IG5vdyBFVlBfUEtFWV9wYXJhbXNfY2hlY2sgZW5kcyB1cCBjYWxsaW5nIC4uLiBESF9jaGVjaywK Ky0gICAgLy8gd2hpY2ggaXMgZ29vZCBlbm91Z2guCistCistICAgIFFfQVNTRVJUKGRoKTsKKy0g ICAgUV9BU1NFUlQoc3RhdHVzKTsKKy0KKy0gICAgRVZQX1BLRVkgKmtleSA9IHFfRVZQX1BLRVlf bmV3KCk7CistICAgIGlmICgha2V5KSB7CistICAgICAgICBxQ1dhcm5pbmcobGNTc2wsICJFVlBf UEtFWV9uZXcgZmFpbGVkIik7CistICAgICAgICBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6Omxv Z0FuZENsZWFyRXJyb3JRdWV1ZSgpOworLSAgICAgICAgcmV0dXJuIDA7CistICAgIH0KKy0gICAg Y29uc3QgYXV0byBrZXlEZWxldGVyID0gcVNjb3BlR3VhcmQoW2tleV0oKXsKKy0gICAgICAgIHFf RVZQX1BLRVlfZnJlZShrZXkpOworLSAgICB9KTsKKy0gICAgaWYgKCFxX0VWUF9QS0VZX3NldDFf REgoa2V5LCBkaCkpIHsKKy0gICAgICAgIHFDV2FybmluZyhsY1NzbCwgIkVWUF9QS0VZX3NldDFf REggZmFpbGVkIik7CistICAgICAgICBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OmxvZ0FuZENs ZWFyRXJyb3JRdWV1ZSgpOworLSAgICAgICAgcmV0dXJuIDA7CistICAgIH0KKy0KKy0gICAgRVZQ X1BLRVlfQ1RYICprZXlDdHggPSBxX0VWUF9QS0VZX0NUWF9uZXcoa2V5LCBudWxscHRyKTsKKy0g ICAgaWYgKCFrZXlDdHgpIHsKKy0gICAgICAgIHFDV2FybmluZyhsY1NzbCwgIkVWUF9QS0VZX0NU WF9uZXcgZmFpbGVkIik7CistICAgICAgICBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OmxvZ0Fu ZENsZWFyRXJyb3JRdWV1ZSgpOworLSAgICAgICAgcmV0dXJuIDA7CistICAgIH0KKy0gICAgY29u c3QgYXV0byBjdHhEZWxldGVyID0gcVNjb3BlR3VhcmQoW2tleUN0eF17CistICAgICAgICBxX0VW UF9QS0VZX0NUWF9mcmVlKGtleUN0eCk7CistICAgIH0pOworLQorLSAgICBjb25zdCBpbnQgcmVz dWx0ID0gcV9FVlBfUEtFWV9wYXJhbV9jaGVjayhrZXlDdHgpOworLSAgICBRU3NsU29ja2V0QmFj a2VuZFByaXZhdGU6OmxvZ0FuZENsZWFyRXJyb3JRdWV1ZSgpOworLSAgICAvLyBOb3RlOiB1bmxp a2UgREhfY2hlY2ssIHdlIGNhbm5vdCBvYnRhaW4gdGhlICdzdGF0dXMnLAorLSAgICAvLyBpZiB0 aGUgJ3Jlc3VsdCcgaXMgMCAoYWN0dWFsbHkgdGhlIHJlc3VsdCBpcyAxIG9ubHkKKy0gICAgLy8g aWYgdGhpcyAnc3RhdHVzJyB3YXMgMCkuIFdlIGNvdWxkIHByb2JhYmx5IGNoZWNrIHRoZQorLSAg ICAvLyBlcnJvcnMgZnJvbSB0aGUgZXJyb3IgcXVldWUsIGJ1dCBpdCdzIG5vdCBuZWVkZWQgYW55 d2F5CistICAgIC8vIC0gc2VlIHRoZSAnaXNTYWZlREgnIGJlbG93LCBob3cgaXQgcmV0dXJucyBp bW1lZGlhdGVseQorLSAgICAvLyBvbiAwLgorLSAgICBRX1VOVVNFRChzdGF0dXMpCistCistICAg IHJldHVybiByZXN1bHQ7CistfQorLSNlbmRpZiAvLyBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18w CistCisgc3RhdGljIGJvb2wgaXNTYWZlREgoREggKmRoKQorIHsKKyAgICAgaW50IHN0YXR1cyA9 IDA7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5z c2wuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2wuY3BwCitp bmRleCAzN2ZhZDJhNjhmLi44ZjY4NThjODY3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3 b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2wuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsv c3NsL3Fzc2xzb2NrZXRfb3BlbnNzbC5jcHAKK0BAIC01NTAsOSArNTUwLDkgQEAgc3RhdGljIHZv aWQgcV9sb2FkQ2lwaGVyc0ZvckNvbm5lY3Rpb24oU1NMICpjb25uZWN0aW9uLCBRTGlzdDxRU3Ns Q2lwaGVyPiAmY2lwaGUKKyAvLyBEZWZpbmVkIGluIHFzc2xzb2NrZXQuY3BwCisgdm9pZCBxX3Nl dERlZmF1bHREdGxzQ2lwaGVycyhjb25zdCBRTGlzdDxRU3NsQ2lwaGVyPiAmY2lwaGVycyk7Cisg CistbG9uZyBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OnNldHVwT3BlblNzbE9wdGlvbnMoUVNz bDo6U3NsUHJvdG9jb2wgcHJvdG9jb2wsIFFTc2w6OlNzbE9wdGlvbnMgc3NsT3B0aW9ucykKKytx c3Nsb3B0aW9ucyBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OnNldHVwT3BlblNzbE9wdGlvbnMo UVNzbDo6U3NsUHJvdG9jb2wgcHJvdG9jb2wsIFFTc2w6OlNzbE9wdGlvbnMgc3NsT3B0aW9ucykK KyB7CistICAgIGxvbmcgb3B0aW9uczsKKysgICAgcXNzbG9wdGlvbnMgb3B0aW9uczsKKyAgICAg aWYgKHByb3RvY29sID09IFFTc2w6OlRsc1YxU3NsVjMpCisgICAgICAgICBvcHRpb25zID0gU1NM X09QX0FMTHxTU0xfT1BfTk9fU1NMdjJ8U1NMX09QX05PX1NTTHYzOworICAgICBlbHNlIGlmIChw cm90b2NvbCA9PSBRU3NsOjpTZWN1cmVQcm90b2NvbHMpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfcC5oIGIvcXRiYXNlL3NyYy9uZXR3b3Jr L3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfcC5oCitpbmRleCA0MTAzZGUyM2U4Li41NTQ3NTg5MjU2 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xf cC5oCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9wLmgK K0BAIC0xMDcsNiArMTA3LDEyIEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisrI2lmIGRl ZmluZWQoT1BFTlNTTF9WRVJTSU9OX01BSk9SKSAmJiBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0g MworK3R5cGVkZWYgdWludDY0X3QgcXNzbG9wdGlvbnM7CisrI2Vsc2UKKyt0eXBlZGVmIHVuc2ln bmVkIGxvbmcgcXNzbG9wdGlvbnM7CisrI2VuZGlmCisrCisgc3RydWN0IFFTc2xFcnJvckVudHJ5 IHsKKyAgICAgaW50IGNvZGU7CisgICAgIGludCBkZXB0aDsKK0BAIC0xNzEsNyArMTc3LDcgQEAg cHVibGljOgorICAgICBRVmVjdG9yPFFTc2xFcnJvcj4gb2NzcEVycm9yczsKKyAgICAgUUJ5dGVB cnJheSBvY3NwUmVzcG9uc2VEZXI7CisgCistICAgIFFfQVVUT1RFU1RfRVhQT1JUIHN0YXRpYyBs b25nIHNldHVwT3BlblNzbE9wdGlvbnMoUVNzbDo6U3NsUHJvdG9jb2wgcHJvdG9jb2wsIFFTc2w6 OlNzbE9wdGlvbnMgc3NsT3B0aW9ucyk7CisrICAgIFFfQVVUT1RFU1RfRVhQT1JUIHN0YXRpYyBx c3Nsb3B0aW9ucyBzZXR1cE9wZW5Tc2xPcHRpb25zKFFTc2w6OlNzbFByb3RvY29sIHByb3RvY29s LCBRU3NsOjpTc2xPcHRpb25zIHNzbE9wdGlvbnMpOworICAgICBzdGF0aWMgUVNzbENpcGhlciBR U3NsQ2lwaGVyX2Zyb21fU1NMX0NJUEhFUihjb25zdCBTU0xfQ0lQSEVSICpjaXBoZXIpOworICAg ICBzdGF0aWMgUUxpc3Q8UVNzbENlcnRpZmljYXRlPiBTVEFDS09GWDUwOV90b19RU3NsQ2VydGlm aWNhdGVzKFNUQUNLX09GKFg1MDkpICp4NTA5KTsKKyAgICAgc3RhdGljIFFMaXN0PFFTc2xFcnJv cj4gdmVyaWZ5KGNvbnN0IFFMaXN0PFFTc2xDZXJ0aWZpY2F0ZT4gJmNlcnRpZmljYXRlQ2hhaW4s IGNvbnN0IFFTdHJpbmcgJmhvc3ROYW1lKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdv cmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29y ay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHMuY3BwCitpbmRleCBlNTNmYjI3OWYwLi40 NTljY2QwYjE5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0 X29wZW5zc2xfc3ltYm9scy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNv Y2tldF9vcGVuc3NsX3N5bWJvbHMuY3BwCitAQCAtMTQ4LDcgKzE0OCw2IEBAIERFRklORUZVTkMo aW50LCBFVlBfUEtFWV91cF9yZWYsIEVWUF9QS0VZICphLCBhLCByZXR1cm4gMCwgcmV0dXJuKQor IERFRklORUZVTkMyKEVWUF9QS0VZX0NUWCAqLCBFVlBfUEtFWV9DVFhfbmV3LCBFVlBfUEtFWSAq cGtleSwgcGtleSwgRU5HSU5FICplLCBlLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIERFRklO RUZVTkMoaW50LCBFVlBfUEtFWV9wYXJhbV9jaGVjaywgRVZQX1BLRVlfQ1RYICpjdHgsIGN0eCwg cmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5DKHZvaWQsIEVWUF9QS0VZX0NUWF9mcmVlLCBF VlBfUEtFWV9DVFggKmN0eCwgY3R4LCByZXR1cm4sIHJldHVybikKKy1ERUZJTkVGVU5DKGludCwg RVZQX1BLRVlfYmFzZV9pZCwgRVZQX1BLRVkgKmEsIGEsIHJldHVybiBOSURfdW5kZWYsIHJldHVy bikKKyBERUZJTkVGVU5DKGludCwgUlNBX2JpdHMsIFJTQSAqYSwgYSwgcmV0dXJuIDAsIHJldHVy bikKKyBERUZJTkVGVU5DKGludCwgRFNBX2JpdHMsIERTQSAqYSwgYSwgcmV0dXJuIDAsIHJldHVy bikKKyBERUZJTkVGVU5DKGludCwgT1BFTlNTTF9za19udW0sIE9QRU5TU0xfU1RBQ0sgKmEsIGEs IHJldHVybiAtMSwgcmV0dXJuKQorQEAgLTE1OCw3ICsxNTcsNyBAQCBERUZJTkVGVU5DMih2b2lk LCBPUEVOU1NMX3NrX3B1c2gsIE9QRU5TU0xfU1RBQ0sgKmEsIGEsIHZvaWQgKmIsIGIsIHJldHVy biwgRFVNTQorIERFRklORUZVTkModm9pZCwgT1BFTlNTTF9za19mcmVlLCBPUEVOU1NMX1NUQUNL ICphLCBhLCByZXR1cm4sIERVTU1ZQVJHKQorIERFRklORUZVTkMyKHZvaWQgKiwgT1BFTlNTTF9z a192YWx1ZSwgT1BFTlNTTF9TVEFDSyAqYSwgYSwgaW50IGIsIGIsIHJldHVybiBudWxscHRyLCBy ZXR1cm4pCisgREVGSU5FRlVOQyhpbnQsIFNTTF9zZXNzaW9uX3JldXNlZCwgU1NMICphLCBhLCBy ZXR1cm4gMCwgcmV0dXJuKQorLURFRklORUZVTkMyKHVuc2lnbmVkIGxvbmcsIFNTTF9DVFhfc2V0 X29wdGlvbnMsIFNTTF9DVFggKmN0eCwgY3R4LCB1bnNpZ25lZCBsb25nIG9wLCBvcCwgcmV0dXJu IDAsIHJldHVybikKKytERUZJTkVGVU5DMihxc3Nsb3B0aW9ucywgU1NMX0NUWF9zZXRfb3B0aW9u cywgU1NMX0NUWCAqY3R4LCBjdHgsIHFzc2xvcHRpb25zIG9wLCBvcCwgcmV0dXJuIDAsIHJldHVy bikKKyBERUZJTkVGVU5DKGludCwgU1NMX0NUWF9nZXRfc2VjdXJpdHlfbGV2ZWwsIGNvbnN0IFNT TF9DVFggKmN0eCwgY3R4LCByZXR1cm4gLTEsIHJldHVybikKKyBERUZJTkVGVU5DMih2b2lkLCBT U0xfQ1RYX3NldF9zZWN1cml0eV9sZXZlbCwgU1NMX0NUWCAqY3R4LCBjdHgsIGludCBsZXZlbCwg bGV2ZWwsIHJldHVybiwgcmV0dXJuKQorICNpZmRlZiBUTFMxXzNfVkVSU0lPTgorQEAgLTM3MSw3 ICszNzAsMTUgQEAgREVGSU5FRlVOQyhjb25zdCBTU0xfQ0lQSEVSICosIFNTTF9nZXRfY3VycmVu dF9jaXBoZXIsIFNTTCAqYSwgYSwgcmV0dXJuIG51bGxwdHIKKyBERUZJTkVGVU5DKGludCwgU1NM X3ZlcnNpb24sIGNvbnN0IFNTTCAqYSwgYSwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5D MihpbnQsIFNTTF9nZXRfZXJyb3IsIFNTTCAqYSwgYSwgaW50IGIsIGIsIHJldHVybiAtMSwgcmV0 dXJuKQorIERFRklORUZVTkMoU1RBQ0tfT0YoWDUwOSkgKiwgU1NMX2dldF9wZWVyX2NlcnRfY2hh aW4sIFNTTCAqYSwgYSwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKysKKysjaWYgZGVmaW5lZChP UEVOU1NMX1ZFUlNJT05fTUFKT1IpICYmIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrREVG SU5FRlVOQyhYNTA5ICosIFNTTF9nZXQxX3BlZXJfY2VydGlmaWNhdGUsIFNTTCAqYSwgYSwgcmV0 dXJuIG51bGxwdHIsIHJldHVybikKKytERUZJTkVGVU5DKGludCwgRVZQX1BLRVlfZ2V0X2Jhc2Vf aWQsIGNvbnN0IEVWUF9QS0VZICpwa2V5LCBwa2V5LCByZXR1cm4gLTEsIHJldHVybikKKysjZWxz ZQorIERFRklORUZVTkMoWDUwOSAqLCBTU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUsIFNTTCAqYSwg YSwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKytERUZJTkVGVU5DKGludCwgRVZQX1BLRVlfYmFz ZV9pZCwgRVZQX1BLRVkgKmEsIGEsIHJldHVybiBOSURfdW5kZWYsIHJldHVybikKKysjZW5kaWYg Ly8gT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMKKysKKyBERUZJTkVGVU5DKGxvbmcsIFNTTF9n ZXRfdmVyaWZ5X3Jlc3VsdCwgY29uc3QgU1NMICphLCBhLCByZXR1cm4gLTEsIHJldHVybikKKyBE RUZJTkVGVU5DKFNTTCAqLCBTU0xfbmV3LCBTU0xfQ1RYICphLCBhLCByZXR1cm4gbnVsbHB0ciwg cmV0dXJuKQorIERFRklORUZVTkMoU1NMX0NUWCAqLCBTU0xfZ2V0X1NTTF9DVFgsIFNTTCAqYSwg YSwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKK0BAIC00OTIsOSArNDk5LDcgQEAgREVGSU5FRlVO QyhESCAqLCBESF9uZXcsIERVTU1ZQVJHLCBEVU1NWUFSRywgcmV0dXJuIG51bGxwdHIsIHJldHVy bikKKyBERUZJTkVGVU5DKHZvaWQsIERIX2ZyZWUsIERIICpkaCwgZGgsIHJldHVybiwgRFVNTVlB UkcpCisgREVGSU5FRlVOQzMoREggKiwgZDJpX0RIcGFyYW1zLCBESCoqYSwgYSwgY29uc3QgdW5z aWduZWQgY2hhciAqKnBwLCBwcCwgbG9uZyBsZW5ndGgsIGxlbmd0aCwgcmV0dXJuIG51bGxwdHIs IHJldHVybikKKyBERUZJTkVGVU5DMihpbnQsIGkyZF9ESHBhcmFtcywgREggKmEsIGEsIHVuc2ln bmVkIGNoYXIgKipwLCBwLCByZXR1cm4gLTEsIHJldHVybikKKy0jaWZuZGVmIE9QRU5TU0xfTk9f REVQUkVDQVRFRF8zXzAKKyBERUZJTkVGVU5DMihpbnQsIERIX2NoZWNrLCBESCAqZGgsIGRoLCBp bnQgKmNvZGVzLCBjb2RlcywgcmV0dXJuIDAsIHJldHVybikKKy0jZW5kaWYgLy8gT1BFTlNTTF9O T19ERVBSRUNBVEVEXzNfMAorIERFRklORUZVTkMzKEJJR05VTSAqLCBCTl9iaW4yYm4sIGNvbnN0 IHVuc2lnbmVkIGNoYXIgKnMsIHMsIGludCBsZW4sIGxlbiwgQklHTlVNICpyZXQsIHJldCwgcmV0 dXJuIG51bGxwdHIsIHJldHVybikKKyAKKyAjaWZuZGVmIE9QRU5TU0xfTk9fRUMKK0BAIC04Njgs NyArODczLDYgQEAgYm9vbCBxX3Jlc29sdmVPcGVuU3NsU3ltYm9scygpCisgICAgIFJFU09MVkVG VU5DKEVWUF9QS0VZX0NUWF9uZXcpCisgICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX3BhcmFtX2No ZWNrKQorICAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9DVFhfZnJlZSkKKy0gICAgUkVTT0xWRUZV TkMoRVZQX1BLRVlfYmFzZV9pZCkKKyAgICAgUkVTT0xWRUZVTkMoUlNBX2JpdHMpCisgICAgIFJF U09MVkVGVU5DKE9QRU5TU0xfc2tfbmV3X251bGwpCisgICAgIFJFU09MVkVGVU5DKE9QRU5TU0xf c2tfcHVzaCkKK0BAIC0xMTA3LDcgKzExMTEsMTUgQEAgYm9vbCBxX3Jlc29sdmVPcGVuU3NsU3lt Ym9scygpCisgICAgIFJFU09MVkVGVU5DKFNTTF92ZXJzaW9uKQorICAgICBSRVNPTFZFRlVOQyhT U0xfZ2V0X2Vycm9yKQorICAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0X3BlZXJfY2VydF9jaGFpbikK KysKKysjaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTUFKT1IpICYmIE9QRU5TU0xfVkVSU0lP Tl9NQUpPUiA+PSAzCisrICAgIFJFU09MVkVGVU5DKFNTTF9nZXQxX3BlZXJfY2VydGlmaWNhdGUp CisrICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX2dldF9iYXNlX2lkKQorKyNlbHNlCisgICAgIFJF U09MVkVGVU5DKFNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZSkKKysgICAgUkVTT0xWRUZVTkMoRVZQ X1BLRVlfYmFzZV9pZCkKKysjZW5kaWYgLy8gT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMKKysK KyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF92ZXJpZnlfcmVzdWx0KQorICAgICBSRVNPTFZFRlVO QyhTU0xfbmV3KQorICAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0X1NTTF9DVFgpCitAQCAtMTIwNiw5 ICsxMjE4LDcgQEAgYm9vbCBxX3Jlc29sdmVPcGVuU3NsU3ltYm9scygpCisgICAgIFJFU09MVkVG VU5DKERIX2ZyZWUpCisgICAgIFJFU09MVkVGVU5DKGQyaV9ESHBhcmFtcykKKyAgICAgUkVTT0xW RUZVTkMoaTJkX0RIcGFyYW1zKQorLSNpZm5kZWYgT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAor ICAgICBSRVNPTFZFRlVOQyhESF9jaGVjaykKKy0jZW5kaWYgLy8gT1BFTlNTTF9OT19ERVBSRUNB VEVEXzNfMAorICAgICBSRVNPTFZFRlVOQyhCTl9iaW4yYm4pCisgCisgI2lmbmRlZiBPUEVOU1NM X05PX0VDCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29w ZW5zc2xfc3ltYm9sc19wLmggYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3Bl bnNzbF9zeW1ib2xzX3AuaAoraW5kZXggOTVlODg5N2EzYi4uMjdhZWZmYTE4YSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHNfcC5o CisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xz X3AuaAorQEAgLTIzNyw3ICsyMzcsNiBAQCBRX0FVVE9URVNUX0VYUE9SVCBpbnQgcV9FVlBfUEtF WV91cF9yZWYoRVZQX1BLRVkgKmEpOworIEVWUF9QS0VZX0NUWCAqcV9FVlBfUEtFWV9DVFhfbmV3 KEVWUF9QS0VZICpwa2V5LCBFTkdJTkUgKmUpOworIHZvaWQgcV9FVlBfUEtFWV9DVFhfZnJlZShF VlBfUEtFWV9DVFggKmN0eCk7CisgaW50IHFfRVZQX1BLRVlfcGFyYW1fY2hlY2soRVZQX1BLRVlf Q1RYICpjdHgpOworLWludCBxX0VWUF9QS0VZX2Jhc2VfaWQoRVZQX1BLRVkgKmEpOworIGludCBx X1JTQV9iaXRzKFJTQSAqYSk7CisgUV9BVVRPVEVTVF9FWFBPUlQgaW50IHFfT1BFTlNTTF9za19u dW0oT1BFTlNTTF9TVEFDSyAqYSk7CisgUV9BVVRPVEVTVF9FWFBPUlQgdm9pZCBxX09QRU5TU0xf c2tfcG9wX2ZyZWUoT1BFTlNTTF9TVEFDSyAqYSwgdm9pZCAoKmIpKHZvaWQgKikpOworQEAgLTI0 Niw3ICsyNDUsNyBAQCBRX0FVVE9URVNUX0VYUE9SVCB2b2lkIHFfT1BFTlNTTF9za19wdXNoKE9Q RU5TU0xfU1RBQ0sgKnN0LCB2b2lkICpkYXRhKTsKKyBRX0FVVE9URVNUX0VYUE9SVCB2b2lkIHFf T1BFTlNTTF9za19mcmVlKE9QRU5TU0xfU1RBQ0sgKmEpOworIFFfQVVUT1RFU1RfRVhQT1JUIHZv aWQgKiBxX09QRU5TU0xfc2tfdmFsdWUoT1BFTlNTTF9TVEFDSyAqYSwgaW50IGIpOworIGludCBx X1NTTF9zZXNzaW9uX3JldXNlZChTU0wgKmEpOworLXVuc2lnbmVkIGxvbmcgcV9TU0xfQ1RYX3Nl dF9vcHRpb25zKFNTTF9DVFggKmN0eCwgdW5zaWduZWQgbG9uZyBvcCk7CisrcXNzbG9wdGlvbnMg cV9TU0xfQ1RYX3NldF9vcHRpb25zKFNTTF9DVFggKmN0eCwgcXNzbG9wdGlvbnMgb3ApOworIGlu dCBxX09QRU5TU0xfaW5pdF9zc2wodWludDY0X3Qgb3B0cywgY29uc3QgT1BFTlNTTF9JTklUX1NF VFRJTkdTICpzZXR0aW5ncyk7Cisgc2l6ZV90IHFfU1NMX2dldF9jbGllbnRfcmFuZG9tKFNTTCAq YSwgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb3V0bGVuKTsKKyBzaXplX3QgcV9TU0xfU0VT U0lPTl9nZXRfbWFzdGVyX2tleShjb25zdCBTU0xfU0VTU0lPTiAqc2Vzc2lvbiwgdW5zaWduZWQg Y2hhciAqb3V0LCBzaXplX3Qgb3V0bGVuKTsKK0BAIC01MTAsNyArNTA5LDYgQEAgY29uc3QgU1NM X0NJUEhFUiAqcV9TU0xfZ2V0X2N1cnJlbnRfY2lwaGVyKFNTTCAqYSk7CisgaW50IHFfU1NMX3Zl cnNpb24oY29uc3QgU1NMICphKTsKKyBpbnQgcV9TU0xfZ2V0X2Vycm9yKFNTTCAqYSwgaW50IGIp OworIFNUQUNLX09GKFg1MDkpICpxX1NTTF9nZXRfcGVlcl9jZXJ0X2NoYWluKFNTTCAqYSk7Cist WDUwOSAqcV9TU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUoU1NMICphKTsKKyBsb25nIHFfU1NMX2dl dF92ZXJpZnlfcmVzdWx0KGNvbnN0IFNTTCAqYSk7CisgU1NMICpxX1NTTF9uZXcoU1NMX0NUWCAq YSk7CisgU1NMX0NUWCAqcV9TU0xfZ2V0X1NTTF9DVFgoU1NMICphKTsKK0BAIC01ODIsMTAgKzU4 MCw3IEBAIERIICpxX0RIX25ldygpOworIHZvaWQgcV9ESF9mcmVlKERIICpkaCk7CisgREggKnFf ZDJpX0RIcGFyYW1zKERIICoqYSwgY29uc3QgdW5zaWduZWQgY2hhciAqKnBwLCBsb25nIGxlbmd0 aCk7CisgaW50IHFfaTJkX0RIcGFyYW1zKERIICphLCB1bnNpZ25lZCBjaGFyICoqcCk7CistCist I2lmbmRlZiBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCisgaW50IHFfREhfY2hlY2soREggKmRo LCBpbnQgKmNvZGVzKTsKKy0jZW5kaWYgLy8gT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorIAor IEJJR05VTSAqcV9CTl9iaW4yYm4oY29uc3QgdW5zaWduZWQgY2hhciAqcywgaW50IGxlbiwgQklH TlVNICpyZXQpOworICNkZWZpbmUgcV9TU0xfQ1RYX3NldF90bXBfZGgoY3R4LCBkaCkgcV9TU0xf Q1RYX2N0cmwoKGN0eCksIFNTTF9DVFJMX1NFVF9UTVBfREgsIDAsIChjaGFyICopZGgpCitAQCAt NzU0LDYgKzc0OSwxNyBAQCB2b2lkIHFfQ1JZUFRPX2ZyZWUodm9pZCAqc3RyLCBjb25zdCBjaGFy ICpmaWxlLCBpbnQgbGluZSk7CisgaW50IHFfU1NMX0NUWF9nZXRfc2VjdXJpdHlfbGV2ZWwoY29u c3QgU1NMX0NUWCAqY3R4KTsKKyB2b2lkIHFfU1NMX0NUWF9zZXRfc2VjdXJpdHlfbGV2ZWwoU1NM X0NUWCAqY3R4LCBpbnQgbGV2ZWwpOworIAorKy8vIEhlcmUgd2UgaGF2ZSB0aGUgb25lcyB0aGF0 IG1ha2UgZGlmZmVyZW5jZSBiZXR3ZWVuIE9wZW5TU0wgcHJlL3Bvc3QgdjM6CisrI2lmIGRlZmlu ZWQoT1BFTlNTTF9WRVJTSU9OX01BSk9SKSAmJiBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMwor K1g1MDkgKnFfU1NMX2dldDFfcGVlcl9jZXJ0aWZpY2F0ZShTU0wgKmEpOworKyNkZWZpbmUgcV9T U0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUgcV9TU0xfZ2V0MV9wZWVyX2NlcnRpZmljYXRlCisraW50 IHFfRVZQX1BLRVlfZ2V0X2Jhc2VfaWQoY29uc3QgRVZQX1BLRVkgKnBrZXkpOworKyNkZWZpbmUg cV9FVlBfUEtFWV9iYXNlX2lkIHFfRVZQX1BLRVlfZ2V0X2Jhc2VfaWQKKysjZWxzZQorK1g1MDkg KnFfU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKFNTTCAqYSk7CisraW50IHFfRVZQX1BLRVlfYmFz ZV9pZChFVlBfUEtFWSAqYSk7CisrI2VuZGlmIC8vIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAz CisrCisgUVRfRU5EX05BTUVTUEFDRQorIAorICNlbmRpZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvcGxhdGZvcm1zdXBwb3J0L2VnbGNvbnZlbmllbmNlL3F0X2VnbF9wLmggYi9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9xdF9lZ2xfcC5oCitpbmRleCBiZjM3ZDA3 ZmQ4Li5kYmQ0MmZiNzk5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQv ZWdsY29udmVuaWVuY2UvcXRfZWdsX3AuaAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBv cnQvZWdsY29udmVuaWVuY2UvcXRfZWdsX3AuaAorQEAgLTYxLDcgKzYxLDExIEBACisgIyBpZiAh ZGVmaW5lZChRX09TX0lOVEVHUklUWSkKKyAjICBkZWZpbmUgV0lOX0lOVEVSRkFDRV9DVVNUT00g ICAvLyBOVgorICMgZW5kaWYgLy8gUV9PU19JTlRFR1JJVFkKKy0jZW5kaWYgIC8vIFFUX0VHTF9O T19YMTEKKysjZWxzZSAvLyBRVF9FR0xfTk9fWDExCisrLy8gSWYgb25lIGhhcyBhbiBlZ2xwbGF0 Zm9ybS5oIHdpdGggaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9FR0wtUmVnaXN0cnkv cHVsbC8xMzAKKysvLyB0aGF0IG5lZWRzIFVTRV9YMTEgdG8gYmUgZGVmaW5lZC4KKysjIGRlZmlu ZSBVU0VfWDExCisrI2VuZGlmCisgCisgI2lmZGVmIFFUX0VHTF9XQVlMQU5ECisgIyBkZWZpbmUg V0FZTEFORCAvLyBOVgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2Zv bnRkYXRhYmFzZXMvZm9udGNvbmZpZy9xZm9udGNvbmZpZ2RhdGFiYXNlLmNwcCBiL3F0YmFzZS9z cmMvcGxhdGZvcm1zdXBwb3J0L2ZvbnRkYXRhYmFzZXMvZm9udGNvbmZpZy9xZm9udGNvbmZpZ2Rh dGFiYXNlLmNwcAoraW5kZXggMTU5YjQ5MGNlMC4uMDBhYTgwY2Q1OCAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ZvbnRkYXRhYmFzZXMvZm9udGNvbmZpZy9xZm9udGNv bmZpZ2RhdGFiYXNlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZm9udGRh dGFiYXNlcy9mb250Y29uZmlnL3Fmb250Y29uZmlnZGF0YWJhc2UuY3BwCitAQCAtNTY3LDYgKzU2 Nyw4IEBAIHZvaWQgUUZvbnRjb25maWdEYXRhYmFzZTo6cG9wdWxhdGVGb250RGF0YWJhc2UoKQor ICAgICAgICAgZm9udHMgPSBGY0ZvbnRMaXN0KG51bGxwdHIsIHBhdHRlcm4sIG9zKTsKKyAgICAg ICAgIEZjT2JqZWN0U2V0RGVzdHJveShvcyk7CisgICAgICAgICBGY1BhdHRlcm5EZXN0cm95KHBh dHRlcm4pOworKyAgICAgICAgaWYgKCFmb250cykKKysgICAgICAgICAgICByZXR1cm47CisgICAg IH0KKyAKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmb250cy0+bmZvbnQ7IGkrKykKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNv bW1vbi5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhr YmNvbW1vbi5jcHAKK2luZGV4IGI3MTNjMTk0NDcuLjdjYjlhOGM3OWEgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbi5jcHAK KysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29t bW9uLmNwcAorQEAgLTk1LDYgKzk1LDcgQEAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBhdXRvIEtl eVRibCA9IHFNYWtlQXJyYXkoCisgICAgICAgICBYa2IyUXQ8WEtCX0tFWV9DbGVhciwgICAgICAg ICAgICAgICAgICAgUXQ6OktleV9EZWxldGU+LAorICAgICAgICAgWGtiMlF0PFhLQl9LRVlfUGF1 c2UsICAgICAgICAgICAgICAgICAgIFF0OjpLZXlfUGF1c2U+LAorICAgICAgICAgWGtiMlF0PFhL Ql9LRVlfUHJpbnQsICAgICAgICAgICAgICAgICAgIFF0OjpLZXlfUHJpbnQ+LAorKyAgICAgICAg WGtiMlF0PFhLQl9LRVlfU3lzX1JlcSwgICAgICAgICAgICAgICAgIFF0OjpLZXlfU3lzUmVxPiwK KyAgICAgICAgIFhrYjJRdDwweDEwMDVGRjYwLCAgICAgICAgICAgICAgICAgICAgICBRdDo6S2V5 X1N5c1JlcT4sICAgICAgICAgLy8gaGFyZGNvZGVkIFN1biBTeXNSZXEKKyAgICAgICAgIFhrYjJR dDwweDEwMDdmZjAwLCAgICAgICAgICAgICAgICAgICAgICBRdDo6S2V5X1N5c1JlcT4sICAgICAg ICAgLy8gaGFyZGNvZGVkIFgzODYgU3lzUmVxCisgCitAQCAtNDcxLDcgKzQ3Miw3IEBAIFFWZWN0 b3I8eGtiX2tleXN5bV90PiBRWGtiQ29tbW9uOjp0b0tleXN5bShRS2V5RXZlbnQgKmV2ZW50KQor ICAgICB9IGVsc2UgaWYgKGV2ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpLZXlwYWRNb2RpZmllcikg eworICAgICAgICAgaWYgKHF0S2V5ID49IFF0OjpLZXlfMCAmJiBxdEtleSA8PSBRdDo6S2V5Xzkp CisgICAgICAgICAgICAga2V5c3ltcy5hcHBlbmQoWEtCX0tFWV9LUF8wICsgKHF0S2V5IC0gUXQ6 OktleV8wKSk7CistICAgIH0gZWxzZSBpZiAoaXNMYXRpbihxdEtleSkgJiYgZXZlbnQtPnRleHQo KS5pc1VwcGVyKCkpIHsKKysgICAgfSBlbHNlIGlmIChpc0xhdGluMShxdEtleSkgJiYgZXZlbnQt PnRleHQoKS5pc1VwcGVyKCkpIHsKKyAgICAgICAgIGtleXN5bXMuYXBwZW5kKHF0S2V5KTsKKyAg ICAgfQorIAorQEAgLTUyMyw3ICs1MjQsNyBAQCBpbnQgUVhrYkNvbW1vbjo6a2V5c3ltVG9RdEtl eSh4a2Jfa2V5c3ltX3Qga2V5c3ltLCBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kaWZpZQorICAg ICAgICAgLy8gV2l0aCBzdGFuZGFyZCBzaG9ydGN1dHMgd2Ugc2hvdWxkIHByZWZlciBhIGxhdGlu IGNoYXJhY3RlciwgdGhpcyBpcworICAgICAgICAgLy8gZm9yIGNoZWNrcyBsaWtlICJzb21lIHFr ZXlldmVudCA9PSBRS2V5U2VxdWVuY2U6OkNvcHkiIHRvIHdvcmsgZXZlbgorICAgICAgICAgLy8g d2hlbiB1c2luZyBmb3IgZXhhbXBsZSAncnVzc2lhbicga2V5Ym9hcmQgbGF5b3V0LgorLSAgICAg ICAgaWYgKCFRWGtiQ29tbW9uOjppc0xhdGluKGtleXN5bSkpIHsKKysgICAgICAgIGlmICghUVhr YkNvbW1vbjo6aXNMYXRpbjEoa2V5c3ltKSkgeworICAgICAgICAgICAgIHhrYl9rZXlzeW1fdCBs YXRpbktleXN5bSA9IFFYa2JDb21tb246Omxvb2t1cExhdGluS2V5c3ltKHN0YXRlLCBjb2RlKTsK KyAgICAgICAgICAgICBpZiAobGF0aW5LZXlzeW0gIT0gWEtCX0tFWV9Ob1N5bWJvbCkKKyAgICAg ICAgICAgICAgICAga2V5c3ltID0gbGF0aW5LZXlzeW07CitAQCAtNTQ2LDcgKzU0Nyw3IEBAIHN0 YXRpYyBpbnQga2V5c3ltVG9RdEtleV9pbnRlcm5hbCh4a2Jfa2V5c3ltX3Qga2V5c3ltLCBRdDo6 S2V5Ym9hcmRNb2RpZmllcnMgbW9kCisgICAgIH0gZWxzZSBpZiAoa2V5c3ltID49IFhLQl9LRVlf S1BfMCAmJiBrZXlzeW0gPD0gWEtCX0tFWV9LUF85KSB7CisgICAgICAgICAvLyBudW1lcmljIGtl eXBhZCBrZXlzCisgICAgICAgICBxdEtleSA9IFF0OjpLZXlfMCArIChrZXlzeW0gLSBYS0JfS0VZ X0tQXzApOworLSAgICB9IGVsc2UgaWYgKFFYa2JDb21tb246OmlzTGF0aW4oa2V5c3ltKSkgewor KyAgICB9IGVsc2UgaWYgKFFYa2JDb21tb246OmlzTGF0aW4xKGtleXN5bSkpIHsKKyAgICAgICAg IHF0S2V5ID0gUVhrYkNvbW1vbjo6cXhrYmNvbW1vbl94a2Jfa2V5c3ltX3RvX3VwcGVyKGtleXN5 bSk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICAvLyBjaGVjayBpZiB3ZSBoYXZlIGEgZGlyZWN0 IG1hcHBpbmcKK0BAIC02NzgsNyArNjc5LDcgQEAgUUxpc3Q8aW50PiBRWGtiQ29tbW9uOjpwb3Nz aWJsZUtleXMoeGtiX3N0YXRlICpzdGF0ZSwgY29uc3QgUUtleUV2ZW50ICpldmVudCwKKyAgICAg ICAgIFF0OjpLZXlib2FyZE1vZGlmaWVycyBuZWVkZWRNb2RzID0gTW9kc1RibFtpXTsKKyAgICAg ICAgIGlmICgobW9kaWZpZXJzICYgbmVlZGVkTW9kcykgPT0gbmVlZGVkTW9kcykgeworICAgICAg ICAgICAgIGlmIChpID09IDgpIHsKKy0gICAgICAgICAgICAgICAgaWYgKGlzTGF0aW4oYmFzZVF0 S2V5KSkKKysgICAgICAgICAgICAgICAgaWYgKGlzTGF0aW4xKGJhc2VRdEtleSkpCisgICAgICAg ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgLy8gYWRkIGEgbGF0aW4g a2V5IGFzIGEgZmFsbCBiYWNrIGtleQorICAgICAgICAgICAgICAgICBzeW0gPSBsb29rdXBMYXRp bktleXN5bShzdGF0ZSwga2V5Y29kZSk7CitAQCAtNzMzLDcgKzczNCw3IEBAIHZvaWQgUVhrYkNv bW1vbjo6dmVyaWZ5SGFzTGF0aW5MYXlvdXQoeGtiX2tleW1hcCAqa2V5bWFwKQorICAgICBmb3Ig KHhrYl9sYXlvdXRfaW5kZXhfdCBsYXlvdXQgPSAwOyBsYXlvdXQgPCBsYXlvdXRDb3VudDsgKyts YXlvdXQpIHsKKyAgICAgICAgIGZvciAoeGtiX2tleWNvZGVfdCBjb2RlID0gbWluS2V5Y29kZTsg Y29kZSA8IG1heEtleWNvZGU7ICsrY29kZSkgeworICAgICAgICAgICAgIHhrYl9rZXltYXBfa2V5 X2dldF9zeW1zX2J5X2xldmVsKGtleW1hcCwgY29kZSwgbGF5b3V0LCAwLCAma2V5c3ltcyk7Cist ICAgICAgICAgICAgaWYgKGtleXN5bXMgJiYgaXNMYXRpbihrZXlzeW1zWzBdKSkKKysgICAgICAg ICAgICBpZiAoa2V5c3ltcyAmJiBpc0xhdGluMShrZXlzeW1zWzBdKSkKKyAgICAgICAgICAgICAg ICAgbnJMYXRpbktleXMrKzsKKyAgICAgICAgICAgICBpZiAobnJMYXRpbktleXMgPiAxMCkgLy8g YXJiaXRyYXJpbHkgY2hvc2VuIHRocmVzaG9sZAorICAgICAgICAgICAgICAgICByZXR1cm47CitA QCAtNzY2LDcgKzc2Nyw3IEBAIHhrYl9rZXlzeW1fdCBRWGtiQ29tbW9uOjpsb29rdXBMYXRpbktl eXN5bSh4a2Jfc3RhdGUgKnN0YXRlLCB4a2Jfa2V5Y29kZV90IGtleWNvCisgICAgICAgICB4a2Jf bGV2ZWxfaW5kZXhfdCBsZXZlbCA9IHhrYl9zdGF0ZV9rZXlfZ2V0X2xldmVsKHN0YXRlLCBrZXlj b2RlLCBsYXlvdXQpOworICAgICAgICAgaWYgKHhrYl9rZXltYXBfa2V5X2dldF9zeW1zX2J5X2xl dmVsKGtleW1hcCwga2V5Y29kZSwgbGF5b3V0LCBsZXZlbCwgJnN5bXMpICE9IDEpCisgICAgICAg ICAgICAgY29udGludWU7CistICAgICAgICBpZiAoaXNMYXRpbihzeW1zWzBdKSkgeworKyAgICAg ICAgaWYgKGlzTGF0aW4xKHN5bXNbMF0pKSB7CisgICAgICAgICAgICAgc3ltID0gc3ltc1swXTsK KyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbl9wLmggYi9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbl9wLmgKK2luZGV4 IDU2MWVhZTAzZGIuLjgzODliZDhmNWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbl9wLmgKKysrKyBiL3F0YmFzZS9zcmMv cGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uX3AuaAorQEAgLTk0LDgg Kzk0LDggQEAgcHVibGljOgorICAgICBzdGF0aWMgdm9pZCB2ZXJpZnlIYXNMYXRpbkxheW91dCh4 a2Jfa2V5bWFwICprZXltYXApOworICAgICBzdGF0aWMgeGtiX2tleXN5bV90IGxvb2t1cExhdGlu S2V5c3ltKHhrYl9zdGF0ZSAqc3RhdGUsIHhrYl9rZXljb2RlX3Qga2V5Y29kZSk7CisgCistICAg IHN0YXRpYyBib29sIGlzTGF0aW4oeGtiX2tleXN5bV90IHN5bSkgeworLSAgICAgICAgcmV0dXJu ICgoc3ltID49ICdhJyAmJiBzeW0gPD0gJ3onKSB8fCAoc3ltID49ICdBJyAmJiBzeW0gPD0gJ1on KSk7CisrICAgIHN0YXRpYyBib29sIGlzTGF0aW4xKHhrYl9rZXlzeW1fdCBzeW0pIHsKKysgICAg ICAgIHJldHVybiBzeW0gPD0gMHhmZjsKKyAgICAgfQorICAgICBzdGF0aWMgYm9vbCBpc0tleXBh ZCh4a2Jfa2V5c3ltX3Qgc3ltKSB7CisgICAgICAgICByZXR1cm4gc3ltID49IFhLQl9LRVlfS1Bf U3BhY2UgJiYgc3ltIDw9IFhLQl9LRVlfS1BfOTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC9rbXNjb252ZW5pZW5jZS9xa21zZGV2aWNlLmNwcCBiL3F0YmFzZS9zcmMv cGxhdGZvcm1zdXBwb3J0L2ttc2NvbnZlbmllbmNlL3FrbXNkZXZpY2UuY3BwCitpbmRleCA4Y2Q3 ZjliMzY4Li40MDZmODQ2NjNmIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBv cnQva21zY29udmVuaWVuY2UvcWttc2RldmljZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZv cm1zdXBwb3J0L2ttc2NvbnZlbmllbmNlL3FrbXNkZXZpY2UuY3BwCitAQCAtMzE4LDcgKzMxOCw3 IEBAIFFQbGF0Zm9ybVNjcmVlbiAqUUttc0RldmljZTo6Y3JlYXRlU2NyZWVuRm9yQ29ubmVjdG9y KGRybU1vZGVSZXNQdHIgcmVzb3VyY2VzLAorIAorICAgICBpZiAoY3VycmVudCA8IDAgJiYgY3J0 Y19tb2RlLmNsb2NrICE9IDApIHsKKyAgICAgICAgIG1vZGVzIDw8IGNydGNfbW9kZTsKKy0gICAg ICAgIGN1cnJlbnQgPSBtb2RlLnNpemUoKSAtIDE7CisrICAgICAgICBjdXJyZW50ID0gbW9kZXMu c2l6ZSgpIC0gMTsKKyAgICAgfQorIAorICAgICBpZiAoY29uZmlndXJhdGlvbiA9PSBPdXRwdXRD b25maWdDdXJyZW50KQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xp bnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0b3IuY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1 cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2F0c3BpYWRhcHRvci5jcHAKK2luZGV4IDkxNTNmZDIw YmIuLjI1NWVhNWUzM2UgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9s aW51eGFjY2Vzc2liaWxpdHkvYXRzcGlhZGFwdG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0 Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2F0c3BpYWRhcHRvci5jcHAKK0BAIC0xOTQs NiArMTk0LDkgQEAgUVN0cmluZyBBdFNwaUFkYXB0b3I6OmludHJvc3BlY3QoY29uc3QgUVN0cmlu ZyAmcGF0aCkgY29uc3QKKyAgICAgICAgICAgICAgICAgIiAgICAgIDxhcmcgZGlyZWN0aW9uPVwi b3V0XCIgdHlwZT1cIihzbylcIi8+XG4iCisgICAgICAgICAgICAgICAgICIgICAgICA8YW5ub3Rh dGlvbiB2YWx1ZT1cIlFTcGlPYmplY3RSZWZlcmVuY2VcIiBuYW1lPVwib3JnLnF0cHJvamVjdC5R dERCdXMuUXRUeXBlTmFtZS5PdXQwXCIvPlxuIgorICAgICAgICAgICAgICAgICAiICAgIDwvbWV0 aG9kPlxuIgorKyAgICAgICAgICAgICAgICAiICAgIDxtZXRob2QgbmFtZT1cIkdldEFjY2Vzc2li bGVJZFwiPlxuIgorKyAgICAgICAgICAgICAgICAiICAgICAgPGFyZyBkaXJlY3Rpb249XCJvdXRc IiB0eXBlPVwic1wiLz5cbiIKKysgICAgICAgICAgICAgICAgIiAgICA8L21ldGhvZD5cbiIKKyAg ICAgICAgICAgICAgICAgIiAgPC9pbnRlcmZhY2U+XG4iCisgICAgICAgICAgICAgICAgICk7Cisg CitAQCAtOTEzLDggKzkxNiwxNyBAQCB2b2lkIEF0U3BpQWRhcHRvcjo6bm90aWZ5KFFBY2Nlc3Np YmxlRXZlbnQgKmV2ZW50KQorICAgICB9CisgICAgIGNhc2UgUUFjY2Vzc2libGU6Ok5hbWVDaGFu Z2VkOiB7CisgICAgICAgICBpZiAoc2VuZE9iamVjdCB8fCBzZW5kT2JqZWN0X3Byb3BlcnR5X2No YW5nZSB8fCBzZW5kT2JqZWN0X3Byb3BlcnR5X2NoYW5nZV9hY2Nlc3NpYmxlX25hbWUpIHsKKy0g ICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGV2ZW50LT5hY2Nlc3Np YmxlSW50ZXJmYWNlKCkpOworLSAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzID0gcGFja0RC dXNTaWduYWxBcmd1bWVudHMoUUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1uYW1lIiksIDAsIDAs IHZhcmlhbnRGb3JQYXRoKHBhdGgpKTsKKysgICAgICAgICAgICBRQWNjZXNzaWJsZUludGVyZmFj ZSAqaWZhY2UgPSBldmVudC0+YWNjZXNzaWJsZUludGVyZmFjZSgpOworKyAgICAgICAgICAgIGlm ICghaWZhY2UpIHsKKysgICAgICAgICAgICAgICAgcUNEZWJ1ZyhsY0FjY2Vzc2liaWxpdHlBdHNw aSwKKysgICAgICAgICAgICAgICAgICAgICAgICAiTmFtZUNoYW5nZWQgZXZlbnQgZnJvbSBpbnZh bGlkIGFjY2Vzc2libGUuIik7CisrICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgICAg ICB9CisrCisrICAgICAgICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShpZmFj ZSk7CisrICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MgPSBwYWNrREJ1c1NpZ25hbEFyZ3Vt ZW50cygKKysgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1uYW1lIiks IDAsIDAsCisrICAgICAgICAgICAgICAgIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50 KGlmYWNlLT50ZXh0KFFBY2Nlc3NpYmxlOjpOYW1lKSkpKTsKKyAgICAgICAgICAgICBzZW5kREJ1 c1NpZ25hbChwYXRoLCBRTGF0aW4xU3RyaW5nKEFUU1BJX0RCVVNfSU5URVJGQUNFX0VWRU5UX09C SkVDVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiUHJvcGVy dHlDaGFuZ2UiKSwgYXJncyk7CisgICAgICAgICB9CitAQCAtOTIyLDggKzkzNCwxNyBAQCB2b2lk IEF0U3BpQWRhcHRvcjo6bm90aWZ5KFFBY2Nlc3NpYmxlRXZlbnQgKmV2ZW50KQorICAgICB9Cisg ICAgIGNhc2UgUUFjY2Vzc2libGU6OkRlc2NyaXB0aW9uQ2hhbmdlZDogeworICAgICAgICAgaWYg KHNlbmRPYmplY3QgfHwgc2VuZE9iamVjdF9wcm9wZXJ0eV9jaGFuZ2UgfHwgc2VuZE9iamVjdF9w cm9wZXJ0eV9jaGFuZ2VfYWNjZXNzaWJsZV9kZXNjcmlwdGlvbikgeworLSAgICAgICAgICAgIFFT dHJpbmcgcGF0aCA9IHBhdGhGb3JJbnRlcmZhY2UoZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2Uo KSk7CistICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MgPSBwYWNrREJ1c1NpZ25hbEFyZ3Vt ZW50cyhRTGF0aW4xU3RyaW5nKCJhY2Nlc3NpYmxlLWRlc2NyaXB0aW9uIiksIDAsIDAsIHZhcmlh bnRGb3JQYXRoKHBhdGgpKTsKKysgICAgICAgICAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZh Y2UgPSBldmVudC0+YWNjZXNzaWJsZUludGVyZmFjZSgpOworKyAgICAgICAgICAgIGlmICghaWZh Y2UpIHsKKysgICAgICAgICAgICAgICAgcUNEZWJ1ZyhsY0FjY2Vzc2liaWxpdHlBdHNwaSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAiRGVzY3JpcHRpb25DaGFuZ2VkIGV2ZW50IGZyb20gaW52 YWxpZCBhY2Nlc3NpYmxlLiIpOworKyAgICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICAg ICAgfQorKworKyAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IHBhdGhGb3JJbnRlcmZhY2UoaWZh Y2UpOworKyAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzID0gcGFja0RCdXNTaWduYWxBcmd1 bWVudHMoCisrICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtZGVzY3Jp cHRpb24iKSwgMCwgMCwKKysgICAgICAgICAgICAgICAgUVZhcmlhbnQ6OmZyb21WYWx1ZShRREJ1 c1ZhcmlhbnQoaWZhY2UtPnRleHQoUUFjY2Vzc2libGU6OkRlc2NyaXB0aW9uKSkpKTsKKyAgICAg ICAgICAgICBzZW5kREJ1c1NpZ25hbChwYXRoLCBRTGF0aW4xU3RyaW5nKEFUU1BJX0RCVVNfSU5U RVJGQUNFX0VWRU5UX09CSkVDVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUxhdGlu MVN0cmluZygiUHJvcGVydHlDaGFuZ2UiKSwgYXJncyk7CisgICAgICAgICB9CitAQCAtMTAzOCw3 ICsxMDU5LDkgQEAgdm9pZCBBdFNwaUFkYXB0b3I6Om5vdGlmeShRQWNjZXNzaWJsZUV2ZW50ICpl dmVudCkKKyAgICAgICAgICAgICAgICAgLy8gQ29tYm8gQm94IHdpdGggQVQtU1BJIGxpa2VzIHRv IGJlIHNwZWNpYWwKKyAgICAgICAgICAgICAgICAgLy8gSXQgcmVxdWlyZXMgYSBuYW1lLWNoYW5n ZSB0byB1cGRhdGUgY2FjaGVzIGFuZCB0aGVuIHNlbGVjdGlvbi1jaGFuZ2VkCisgICAgICAgICAg ICAgICAgIFFTdHJpbmcgcGF0aCA9IHBhdGhGb3JJbnRlcmZhY2UoaWZhY2UpOworLSAgICAgICAg ICAgICAgICBRVmFyaWFudExpc3QgYXJnczEgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cyhRTGF0 aW4xU3RyaW5nKCJhY2Nlc3NpYmxlLW5hbWUiKSwgMCwgMCwgdmFyaWFudEZvclBhdGgocGF0aCkp OworKyAgICAgICAgICAgICAgICBRVmFyaWFudExpc3QgYXJnczEgPSBwYWNrREJ1c1NpZ25hbEFy Z3VtZW50cygKKysgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUt bmFtZSIpLCAwLCAwLAorKyAgICAgICAgICAgICAgICAgICAgUVZhcmlhbnQ6OmZyb21WYWx1ZShR REJ1c1ZhcmlhbnQoaWZhY2UtPnRleHQoUUFjY2Vzc2libGU6Ok5hbWUpKSkpOworICAgICAgICAg ICAgICAgICBzZW5kREJ1c1NpZ25hbChwYXRoLCBRTGF0aW4xU3RyaW5nKEFUU1BJX0RCVVNfSU5U RVJGQUNFX0VWRU5UX09CSkVDVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFM YXRpbjFTdHJpbmcoIlByb3BlcnR5Q2hhbmdlIiksIGFyZ3MxKTsKKyAgICAgICAgICAgICAgICAg UVZhcmlhbnRMaXN0IGFyZ3MyID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoUVN0cmluZygpLCAw LCAwLCBRVmFyaWFudDo6ZnJvbVZhbHVlKFFEQnVzVmFyaWFudChRVmFyaWFudCgwKSkpKTsKK0BA IC0xMzU4LDYgKzEzODEsMjYgQEAgdm9pZCBBdFNwaUFkYXB0b3I6OnJlZ2lzdGVyQXBwbGljYXRp b24oKQorICAgICBkZWxldGUgcmVnaXN0cnk7CisgfQorIAorK25hbWVzcGFjZSB7CisrUVN0cmlu ZyBhY2Nlc3NpYmxlSWRGb3JBY2Nlc3NpYmxlKFFBY2Nlc3NpYmxlSW50ZXJmYWNlICphY2Nlc3Np YmxlKQorK3sKKysgICAgUVN0cmluZyByZXN1bHQ7CisrICAgIHdoaWxlIChhY2Nlc3NpYmxlKSB7 CisrICAgICAgICBpZiAoIXJlc3VsdC5pc0VtcHR5KCkpCisrICAgICAgICAgICAgcmVzdWx0LnBy ZXBlbmQoUUxhdGluMUNoYXIoJy4nKSk7CisrICAgICAgICBpZiAoYXV0byBvYmogPSBhY2Nlc3Np YmxlLT5vYmplY3QoKSkgeworKyAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgbmFtZSA9IG9iai0+ b2JqZWN0TmFtZSgpOworKyAgICAgICAgICAgIGlmICghbmFtZS5pc0VtcHR5KCkpCisrICAgICAg ICAgICAgICAgIHJlc3VsdC5wcmVwZW5kKG5hbWUpOworKyAgICAgICAgICAgIGVsc2UKKysgICAg ICAgICAgICAgICAgcmVzdWx0LnByZXBlbmQoUVN0cmluZzo6ZnJvbVV0Zjgob2JqLT5tZXRhT2Jq ZWN0KCktPmNsYXNzTmFtZSgpKSk7CisrICAgICAgICB9CisrICAgICAgICBhY2Nlc3NpYmxlID0g YWNjZXNzaWJsZS0+cGFyZW50KCk7CisrICAgIH0KKysgICAgcmV0dXJuIHJlc3VsdDsKKyt9Cisr fSAvLyBuYW1lc3BhY2UKKysKKyAvLyBBY2Nlc3NpYmxlCisgYm9vbCBBdFNwaUFkYXB0b3I6OmFj Y2Vzc2libGVJbnRlcmZhY2UoUUFjY2Vzc2libGVJbnRlcmZhY2UgKmludGVyZmFjZSwgY29uc3Qg UVN0cmluZyAmZnVuY3Rpb24sIGNvbnN0IFFEQnVzTWVzc2FnZSAmbWVzc2FnZSwgY29uc3QgUURC dXNDb25uZWN0aW9uICZjb25uZWN0aW9uKQorIHsKK0BAIC0xNDQxLDYgKzE0ODQsOSBAQCBib29s IEF0U3BpQWRhcHRvcjo6YWNjZXNzaWJsZUludGVyZmFjZShRQWNjZXNzaWJsZUludGVyZmFjZSAq aW50ZXJmYWNlLCBjb25zdCBRUworICAgICAgICAgICAgIGNoaWxkcmVuIDw8IHJlZjsKKyAgICAg ICAgIH0KKyAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtZXNzYWdlLmNyZWF0ZVJlcGx5KFFWYXJp YW50Ojpmcm9tVmFsdWUoY2hpbGRyZW4pKSk7CisrICAgIH0gZWxzZSBpZiAoZnVuY3Rpb24gPT0g UUxhdGluMVN0cmluZygiR2V0QWNjZXNzaWJsZUlkIikpIHsKKysgICAgICAgIHNlbmRSZXBseShj b25uZWN0aW9uLCBtZXNzYWdlLAorKyAgICAgICAgICAgICAgICAgIFFWYXJpYW50Ojpmcm9tVmFs dWUoUURCdXNWYXJpYW50KGFjY2Vzc2libGVJZEZvckFjY2Vzc2libGUoaW50ZXJmYWNlKSkpKTsK KyAgICAgfSBlbHNlIHsKKyAgICAgICAgIHFDRGVidWcobGNBY2Nlc3NpYmlsaXR5QXRzcGkpIDw8 ICJXQVJOSU5HOiBBdFNwaUFkYXB0b3I6OmFjY2Vzc2libGVJbnRlcmZhY2UgZG9lcyBub3QgaW1w bGVtZW50ICIgPDwgZnVuY3Rpb24gPDwgbWVzc2FnZS5wYXRoKCk7CisgICAgICAgICByZXR1cm4g ZmFsc2U7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nl c3NpYmlsaXR5L2RidXNjb25uZWN0aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L2xpbnV4YWNjZXNzaWJpbGl0eS9kYnVzY29ubmVjdGlvbi5jcHAKK2luZGV4IDQ1ZGRjOGU0OTYu LmNjNzM0YWJjNjMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51 eGFjY2Vzc2liaWxpdHkvZGJ1c2Nvbm5lY3Rpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRm b3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvZGJ1c2Nvbm5lY3Rpb24uY3BwCitAQCAtNjks NiArNjksMjEgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgREJ1c0Nvbm5lY3Rpb246OkRCdXNDb25u ZWN0aW9uKFFPYmplY3QgKnBhcmVudCkKKyAgICAgOiBRT2JqZWN0KHBhcmVudCksIG1fYTExeUNv bm5lY3Rpb24oUVN0cmluZygpKSwgbV9lbmFibGVkKGZhbHNlKQorIHsKKysgICAgLy8gSWYgdGhl IGJ1cyBpcyBleHBsaWNpdGx5IHNldCB2aWEgZW52IHZhciBpdCBvdmVycmlkZXMgZXZlcnl0aGlu ZyBlbHNlLgorKyAgICBRQnl0ZUFycmF5IGFkZHJlc3NFbnYgPSBxZ2V0ZW52KCJBVF9TUElfQlVT X0FERFJFU1MiKTsKKysgICAgaWYgKCFhZGRyZXNzRW52LmlzRW1wdHkoKSkgeworKyAgICAgICAg Ly8gT25seSBjb25uZWN0IG9uIG5leHQgbG9vcCBydW4sIGNvbm5lY3Rpb25zIHRvIG91ciBlbmFi bGVkIHNpZ25hbCBhcmUKKysgICAgICAgIC8vIG9ubHkgZXN0YWJsaXNoZWQgYWZ0ZXIgdGhlIGN0 b3IgcmV0dXJucy4KKysgICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QoCisrICAgICAg ICAgICAgICAgIHRoaXMsCisrICAgICAgICAgICAgICAgIFt0aGlzLCBhZGRyZXNzRW52XSB7Cisr ICAgICAgICAgICAgICAgICAgICBtX2VuYWJsZWQgPSB0cnVlOworKyAgICAgICAgICAgICAgICAg ICAgY29ubmVjdEExMXlCdXMoUVN0cmluZzo6ZnJvbUxvY2FsOEJpdChhZGRyZXNzRW52KSk7Cisr ICAgICAgICAgICAgICAgIH0sCisrICAgICAgICAgICAgICAgIFF0OjpRdWV1ZWRDb25uZWN0aW9u KTsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKworICAgICAvLyBTdGFydCBtb25pdG9yaW5n IGlmICJvcmcuYTExeS5CdXMiIGlzIHJlZ2lzdGVyZWQgYXMgREJ1cyBzZXJ2aWNlLgorICAgICBR REJ1c0Nvbm5lY3Rpb24gYyA9IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpOworICAgICBp ZiAoIWMuaXNDb25uZWN0ZWQoKSkgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1z dXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzLmNwcCBiL3F0 YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5p eHNlcnZpY2VzLmNwcAoraW5kZXggMWEzY2FiMjc1ZC4uMmFiZTAzOTEyNiAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmlj dW5peHNlcnZpY2VzLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2Vydmlj ZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXMuY3BwCitAQCAtNTEsNiArNTEsOSBA QAorICNpbmNsdWRlIDxRdENvcmUvUVN0YW5kYXJkUGF0aHM+CisgI2luY2x1ZGUgPFF0Q29yZS9R VXJsPgorIAorKyNpbmNsdWRlIDxRdEd1aS9RR3VpQXBwbGljYXRpb24+CisrI2luY2x1ZGUgPFF0 R3VpL1FXaW5kb3c+CisrCisgI2lmIFFUX0NPTkZJRyhkYnVzKQorIC8vIFRoZXNlIFF0Q29yZSBp bmNsdWRlcyBhcmUgbmVlZGVkIGZvciB4ZGctZGVza3RvcC1wb3J0YWwgc3VwcG9ydAorICNpbmNs dWRlIDxRdENvcmUvcHJpdmF0ZS9xY29yZV91bml4X3AuaD4KK0BAIC01OCw2ICs2MSw4IEBACisg I2luY2x1ZGUgPFF0Q29yZS9RRmlsZUluZm8+CisgI2luY2x1ZGUgPFF0Q29yZS9RVXJsUXVlcnk+ CisgCisrI2luY2x1ZGUgPFF0R3VpL1FDb2xvcj4KKysKKyAjaW5jbHVkZSA8UXREQnVzL1FEQnVz Q29ubmVjdGlvbj4KKyAjaW5jbHVkZSA8UXREQnVzL1FEQnVzTWVzc2FnZT4KKyAjaW5jbHVkZSA8 UXREQnVzL1FEQnVzUGVuZGluZ0NhbGw+CitAQCAtMTQyLDYgKzE0Nyw4IEBAIHN0YXRpYyBpbmxp bmUgYm9vbCBkZXRlY3RXZWJCcm93c2VyKGNvbnN0IFFCeXRlQXJyYXkgJmRlc2t0b3AsCisgICAg IH0KKyAKKyAgICAgaWYgKGRlc2t0b3AgPT0gUUJ5dGVBcnJheSgiS0RFIikpIHsKKysgICAgICAg IGlmIChjaGVja0V4ZWN1dGFibGUoUVN0cmluZ0xpdGVyYWwoImtkZS1vcGVuNSIpLCBicm93c2Vy KSkKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgIC8vIEtvbnF1ZXJvciBsYXVu Y2hlcgorICAgICAgICAgaWYgKGNoZWNrRXhlY3V0YWJsZShRU3RyaW5nTGl0ZXJhbCgia2ZtY2xp ZW50IiksIGJyb3dzZXIpKSB7CisgICAgICAgICAgICAgYnJvd3Nlci0+YXBwZW5kKFFMYXRpbjFT dHJpbmcoIiBleGVjIikpOworQEAgLTI5Niw4ICszMDMsMTM1IEBAIHN0YXRpYyBpbmxpbmUgUURC dXNNZXNzYWdlIHhkZ0Rlc2t0b3BQb3J0YWxTZW5kRW1haWwoY29uc3QgUVVybCAmdXJsKQorIAor ICAgICByZXR1cm4gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuY2FsbChtZXNzYWdlKTsK KyB9CisrCisrbmFtZXNwYWNlIHsKKytzdHJ1Y3QgWERHRGVza3RvcENvbG9yCisreworKyAgICBk b3VibGUgciA9IDA7CisrICAgIGRvdWJsZSBnID0gMDsKKysgICAgZG91YmxlIGIgPSAwOworKwor KyAgICBRQ29sb3IgdG9RQ29sb3IoKSBjb25zdAorKyAgICB7CisrICAgICAgICBjb25zdGV4cHIg YXV0byByZ2JNYXggPSAyNTU7CisrICAgICAgICByZXR1cm4geyBzdGF0aWNfY2FzdDxpbnQ+KHIg KiByZ2JNYXgpLCBzdGF0aWNfY2FzdDxpbnQ+KGcgKiByZ2JNYXgpLAorKyAgICAgICAgICAgICAg ICAgc3RhdGljX2Nhc3Q8aW50PihiICogcmdiTWF4KSB9OworKyAgICB9CisrfTsKKysKKytjb25z dCBRREJ1c0FyZ3VtZW50ICZvcGVyYXRvcj4+KGNvbnN0IFFEQnVzQXJndW1lbnQgJmFyZ3VtZW50 LCBYREdEZXNrdG9wQ29sb3IgJm15U3RydWN0KQorK3sKKysgICAgYXJndW1lbnQuYmVnaW5TdHJ1 Y3R1cmUoKTsKKysgICAgYXJndW1lbnQgPj4gbXlTdHJ1Y3QuciA+PiBteVN0cnVjdC5nID4+IG15 U3RydWN0LmI7CisrICAgIGFyZ3VtZW50LmVuZFN0cnVjdHVyZSgpOworKyAgICByZXR1cm4gYXJn dW1lbnQ7CisrfQorKworK2NsYXNzIFhkZ0Rlc2t0b3BQb3J0YWxDb2xvclBpY2tlciA6IHB1Ymxp YyBRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIKKyt7CisrICAgIFFfT0JKRUNUCisrcHVibGlj OgorKyAgICBYZGdEZXNrdG9wUG9ydGFsQ29sb3JQaWNrZXIoY29uc3QgUVN0cmluZyAmcGFyZW50 V2luZG93SWQsIFFXaW5kb3cgKnBhcmVudCkKKysgICAgICAgIDogUVBsYXRmb3JtU2VydmljZUNv bG9yUGlja2VyKHBhcmVudCksIG1fcGFyZW50V2luZG93SWQocGFyZW50V2luZG93SWQpCisrICAg IHsKKysgICAgfQorKworKyAgICB2b2lkIHBpY2tDb2xvcigpIG92ZXJyaWRlCisrICAgIHsKKysg ICAgICAgIC8vIERCdXMgc2lnbmF0dXJlOgorKyAgICAgICAgLy8gUGlja0NvbG9yIChJTiAgIHMg ICAgICBwYXJlbnRfd2luZG93LAorKyAgICAgICAgLy8gICAgICAgICAgICBJTiAgIGF7c3Z9ICBv cHRpb25zCisrICAgICAgICAvLyAgICAgICAgICAgIE9VVCAgbyAgICAgIGhhbmRsZSkKKysgICAg ICAgIC8vIE9wdGlvbnM6CisrICAgICAgICAvLyBoYW5kbGVfdG9rZW4gKHMpIC0gIEEgc3RyaW5n IHRoYXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIEBoYW5kbGUuCisr CisrICAgICAgICBRREJ1c01lc3NhZ2UgbWVzc2FnZSA9IFFEQnVzTWVzc2FnZTo6Y3JlYXRlTWV0 aG9kQ2FsbCgKKysgICAgICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3Rv cC5wb3J0YWwuRGVza3RvcCIpLCBRU3RyaW5nTGl0ZXJhbCgiL29yZy9mcmVlZGVza3RvcC9wb3J0 YWwvZGVza3RvcCIpLAorKyAgICAgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVk ZXNrdG9wLnBvcnRhbC5TY3JlZW5zaG90IiksIFFTdHJpbmdMaXRlcmFsKCJQaWNrQ29sb3IiKSk7 CisrICAgICAgICBtZXNzYWdlIDw8IG1fcGFyZW50V2luZG93SWQgPDwgUVZhcmlhbnRNYXAoKTsK KysKKysgICAgICAgIFFEQnVzUGVuZGluZ0NhbGwgcGVuZGluZ0NhbGwgPSBRREJ1c0Nvbm5lY3Rp b246OnNlc3Npb25CdXMoKS5hc3luY0NhbGwobWVzc2FnZSk7CisrICAgICAgICBhdXRvIHdhdGNo ZXIgPSBuZXcgUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIocGVuZGluZ0NhbGwsIHRoaXMpOworKyAg ICAgICAgY29ubmVjdCh3YXRjaGVyLCAmUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXI6OmZpbmlzaGVk LCB0aGlzLAorKyAgICAgICAgICAgICAgICBbdGhpc10oUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIg KndhdGNoZXIpIHsKKysgICAgICAgICAgICAgICAgICAgIHdhdGNoZXItPmRlbGV0ZUxhdGVyKCk7 CisrICAgICAgICAgICAgICAgICAgICBRREJ1c1BlbmRpbmdSZXBseTxRREJ1c09iamVjdFBhdGg+ IHJlcGx5ID0gKndhdGNoZXI7CisrICAgICAgICAgICAgICAgICAgICBpZiAocmVwbHkuaXNFcnJv cigpKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgcVdhcm5pbmcoIkRCdXMgY2FsbCB0byBw aWNrIGNvbG9yIGZhaWxlZDogJXMiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHFQcmludGFibGUocmVwbHkuZXJyb3IoKS5tZXNzYWdlKCkpKTsKKysgICAgICAgICAgICAgICAg ICAgICAgICBRX0VNSVQgY29sb3JQaWNrZWQoe30pOworKyAgICAgICAgICAgICAgICAgICAgfSBl bHNlIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25C dXMoKS5jb25uZWN0KAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZ0xp dGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuRGVza3RvcCIpLCByZXBseS52YWx1ZSgpLnBh dGgoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJv cmcuZnJlZWRlc2t0b3AucG9ydGFsLlJlcXVlc3QiKSwgUVN0cmluZ0xpdGVyYWwoIlJlc3BvbnNl IiksIHRoaXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGFuZy1mb3Jt YXQgb2ZmCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTE9UKGdvdENvbG9yUmVz cG9uc2UodWludCxRVmFyaWFudE1hcCkpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvLyBjbGFuZy1mb3JtYXQgb24KKysgICAgICAgICAgICAgICAgICAgICAgICApOworKyAgICAg ICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICB9KTsKKysgICAgfQorKworK3ByaXZh dGUgUV9TTE9UUzoKKysgICAgdm9pZCBnb3RDb2xvclJlc3BvbnNlKHVpbnQgcmVzdWx0LCBjb25z dCBRVmFyaWFudE1hcCAmbWFwKQorKyAgICB7CisrICAgICAgICBpZiAocmVzdWx0ICE9IDApCisr ICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgWERHRGVza3RvcENvbG9yIGNvbG9ye307Cisr ICAgICAgICBtYXAudmFsdWUoUVN0cmluZ0xpdGVyYWwoImNvbG9yIikpLnZhbHVlPFFEQnVzQXJn dW1lbnQ+KCkgPj4gY29sb3I7CisrICAgICAgICBRX0VNSVQgY29sb3JQaWNrZWQoY29sb3IudG9R Q29sb3IoKSk7CisrICAgICAgICBkZWxldGVMYXRlcigpOworKyAgICB9CisrCisrcHJpdmF0ZToK KysgICAgY29uc3QgUVN0cmluZyBtX3BhcmVudFdpbmRvd0lkOworK307CisrfSAvLyBuYW1lc3Bh Y2UKKysKKyAjZW5kaWYgLy8gUVRfQ09ORklHKGRidXMpCisgCisrUUdlbmVyaWNVbml4U2Vydmlj ZXM6OlFHZW5lcmljVW5peFNlcnZpY2VzKCkKKyt7CisrI2lmIFFUX0NPTkZJRyhkYnVzKQorKyAg ICBpZiAocUVudmlyb25tZW50VmFyaWFibGVJbnRWYWx1ZSgiUVRfTk9fWERHX0RFU0tUT1BfUE9S VEFMIikgPiAwKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAgUURCdXNNZXNzYWdl IG1lc3NhZ2UgPSBRREJ1c01lc3NhZ2U6OmNyZWF0ZU1ldGhvZENhbGwoCisrICAgICAgICAgICAg UVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuRGVza3RvcCIpLCBRU3RyaW5n TGl0ZXJhbCgiL29yZy9mcmVlZGVza3RvcC9wb3J0YWwvZGVza3RvcCIpLAorKyAgICAgICAgICAg IFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AuREJ1cy5Qcm9wZXJ0aWVzIiksIFFTdHJp bmdMaXRlcmFsKCJHZXQiKSk7CisrICAgIG1lc3NhZ2UgPDwgUVN0cmluZ0xpdGVyYWwoIm9yZy5m cmVlZGVza3RvcC5wb3J0YWwuU2NyZWVuc2hvdCIpCisrICAgICAgICAgICAgPDwgUVN0cmluZ0xp dGVyYWwoInZlcnNpb24iKTsKKysKKysgICAgUURCdXNQZW5kaW5nQ2FsbCBwZW5kaW5nQ2FsbCA9 IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmFzeW5jQ2FsbChtZXNzYWdlKTsKKysgICAg YXV0byB3YXRjaGVyID0gbmV3IFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyKHBlbmRpbmdDYWxsKTsK KysgICAgUU9iamVjdDo6Y29ubmVjdCh3YXRjaGVyLCAmUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXI6 OmZpbmlzaGVkLCB3YXRjaGVyLAorKyAgICAgICAgICAgICAgICAgICAgIFt0aGlzXShRREJ1c1Bl bmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hlcikgeworKyAgICAgICAgICAgICAgICAgICAgICAgICB3 YXRjaGVyLT5kZWxldGVMYXRlcigpOworKyAgICAgICAgICAgICAgICAgICAgICAgICBRREJ1c1Bl bmRpbmdSZXBseTxRVmFyaWFudD4gcmVwbHkgPSAqd2F0Y2hlcjsKKysgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKCFyZXBseS5pc0Vycm9yKCkgJiYgcmVwbHkudmFsdWUoKS50b1VJbnQoKSA+ PSAyKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9oYXNTY3JlZW5zaG90UG9ydGFs V2l0aENvbG9yUGlja2luZyA9IHRydWU7CisrICAgICAgICAgICAgICAgICAgICAgfSk7CisrCisr I2VuZGlmCisrfQorKworK1FQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAqUUdlbmVyaWNVbml4 U2VydmljZXM6OmNvbG9yUGlja2VyKFFXaW5kb3cgKnBhcmVudCkKKyt7CisrI2lmIFFUX0NPTkZJ RyhkYnVzKQorKyAgICAvLyBNYWtlIGRvdWJsZSBzdXJlIHRoYXQgd2UgYXJlIGluIGEgd2F5bGFu ZCBlbnZpcm9ubWVudC4gSW4gcGFydGljdWxhciBjaGVjaworKyAgICAvLyBXQVlMQU5EX0RJU1BM QVkgc28gYWxzbyBYV2F5bGFuZCBhcHBzIGJlbmVmaXQgZnJvbSBwb3J0YWwtYmFzZWQgY29sb3Ig cGlja2luZy4KKysgICAgLy8gT3V0c2lkZSB3YXlsYW5kIHdlJ2xsIHJhdGhlciByZWx5IG9uIG90 aGVyIG1lYW5zIHRoYW4gdGhlIFhERyBkZXNrdG9wIHBvcnRhbC4KKysgICAgaWYgKCFxRW52aXJv bm1lbnRWYXJpYWJsZUlzRW1wdHkoIldBWUxBTkRfRElTUExBWSIpCisrICAgICAgICB8fCBRR3Vp QXBwbGljYXRpb246OnBsYXRmb3JtTmFtZSgpLnN0YXJ0c1dpdGgoUUxhdGluMVN0cmluZygid2F5 bGFuZCIpKSkgeworKyAgICAgICAgcmV0dXJuIG5ldyBYZGdEZXNrdG9wUG9ydGFsQ29sb3JQaWNr ZXIocG9ydGFsV2luZG93SWRlbnRpZmllcihwYXJlbnQpLCBwYXJlbnQpOworKyAgICB9CisrICAg IHJldHVybiBudWxscHRyOworKyNlbHNlCisrICAgIFFfVU5VU0VEKHBhcmVudCk7CisrICAgIHJl dHVybiBudWxscHRyOworKyNlbmRpZgorK30KKysKKyBRQnl0ZUFycmF5IFFHZW5lcmljVW5peFNl cnZpY2VzOjpkZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdAorIHsKKyAgICAgc3RhdGljIGNvbnN0 IFFCeXRlQXJyYXkgcmVzdWx0ID0gZGV0ZWN0RGVza3RvcEVudmlyb25tZW50KCk7CitAQCAtMzUy LDYgKzQ4Niw4IEBAIGJvb2wgUUdlbmVyaWNVbml4U2VydmljZXM6Om9wZW5Eb2N1bWVudChjb25z dCBRVXJsICZ1cmwpCisgfQorIAorICNlbHNlCisrUUdlbmVyaWNVbml4U2VydmljZXM6OlFHZW5l cmljVW5peFNlcnZpY2VzKCkgPSBkZWZhdWx0OworKworIFFCeXRlQXJyYXkgUUdlbmVyaWNVbml4 U2VydmljZXM6OmRlc2t0b3BFbnZpcm9ubWVudCgpIGNvbnN0CisgeworICAgICByZXR1cm4gUUJ5 dGVBcnJheUxpdGVyYWwoIlVOS05PV04iKTsKK0BAIC0zNzEsNiArNTA3LDMwIEBAIGJvb2wgUUdl bmVyaWNVbml4U2VydmljZXM6Om9wZW5Eb2N1bWVudChjb25zdCBRVXJsICZ1cmwpCisgICAgIHJl dHVybiBmYWxzZTsKKyB9CisgCisrUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpRR2VuZXJp Y1VuaXhTZXJ2aWNlczo6Y29sb3JQaWNrZXIoUVdpbmRvdyAqcGFyZW50KQorK3sKKysgICAgUV9V TlVTRUQocGFyZW50KTsKKysgICAgcmV0dXJuIG51bGxwdHI7CisrfQorKworICNlbmRpZiAvLyBR VF9OT19NVUxUSVBST0NFU1MKKyAKKytRU3RyaW5nIFFHZW5lcmljVW5peFNlcnZpY2VzOjpwb3J0 YWxXaW5kb3dJZGVudGlmaWVyKFFXaW5kb3cgKndpbmRvdykKKyt7CisrICAgIGlmIChRR3VpQXBw bGljYXRpb246OnBsYXRmb3JtTmFtZSgpID09IFFMYXRpbjFTdHJpbmcoInhjYiIpKQorKyAgICAg ICAgcmV0dXJuIFFTdHJpbmdMaXRlcmFsKCJ4MTE6IikgKyBRU3RyaW5nOjpudW1iZXIod2luZG93 LT53aW5JZCgpLCAxNik7CisrICAgIHJldHVybiBRU3RyaW5nKCk7CisrfQorKworK2Jvb2wgUUdl bmVyaWNVbml4U2VydmljZXM6Omhhc0NhcGFiaWxpdHkoQ2FwYWJpbGl0eSBjYXBhYmlsaXR5KSBj b25zdAorK3sKKysgICAgc3dpdGNoIChjYXBhYmlsaXR5KSB7CisrICAgIGNhc2UgQ2FwYWJpbGl0 eTo6Q29sb3JQaWNraW5nOgorKyAgICAgICAgcmV0dXJuIG1faGFzU2NyZWVuc2hvdFBvcnRhbFdp dGhDb2xvclBpY2tpbmc7CisrICAgIH0KKysgICAgcmV0dXJuIGZhbHNlOworK30KKysKKyBRVF9F TkRfTkFNRVNQQUNFCisrCisrI2luY2x1ZGUgInFnZW5lcmljdW5peHNlcnZpY2VzLm1vYyIKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5p eC9xZ2VuZXJpY3VuaXhzZXJ2aWNlc19wLmggYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9z ZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlc19wLmgKK2luZGV4IDhhYzNk ZTZmMDMuLjMwOTI0ZTY0YmQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9y dC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlc19wLmgKKysrKyBiL3F0 YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5p eHNlcnZpY2VzX3AuaAorQEAgLTU5LDE2ICs1OSwyMSBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyBj bGFzcyBRR2VuZXJpY1VuaXhTZXJ2aWNlcyA6IHB1YmxpYyBRUGxhdGZvcm1TZXJ2aWNlcworIHsK KyBwdWJsaWM6CistICAgIFFHZW5lcmljVW5peFNlcnZpY2VzKCkge30KKysgICAgUUdlbmVyaWNV bml4U2VydmljZXMoKTsKKyAKKyAgICAgUUJ5dGVBcnJheSBkZXNrdG9wRW52aXJvbm1lbnQoKSBj b25zdCBvdmVycmlkZTsKKyAKKysgICAgYm9vbCBoYXNDYXBhYmlsaXR5KENhcGFiaWxpdHkgY2Fw YWJpbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgIGJvb2wgb3BlblVybChjb25zdCBRVXJsICZ1 cmwpIG92ZXJyaWRlOworICAgICBib29sIG9wZW5Eb2N1bWVudChjb25zdCBRVXJsICZ1cmwpIG92 ZXJyaWRlOworKyAgICBRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIgKmNvbG9yUGlja2VyKFFX aW5kb3cgKnBhcmVudCA9IG51bGxwdHIpIG92ZXJyaWRlOworKworKyAgICB2aXJ0dWFsIFFTdHJp bmcgcG9ydGFsV2luZG93SWRlbnRpZmllcihRV2luZG93ICp3aW5kb3cpOworIAorIHByaXZhdGU6 CisgICAgIFFTdHJpbmcgbV93ZWJCcm93c2VyOworICAgICBRU3RyaW5nIG1fZG9jdW1lbnRMYXVu Y2hlcjsKKysgICAgYm9vbCBtX2hhc1NjcmVlbnNob3RQb3J0YWxXaXRoQ29sb3JQaWNraW5nID0g ZmFsc2U7CisgfTsKKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNv bm5lY3Rpb24uY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1 bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb24uY3BwCitpbmRleCAwOTQ3MGJjY2M2Li5j YzdjN2Q0ZDhhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVz L2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb24uY3BwCisrKysgYi9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNt ZW51Y29ubmVjdGlvbi5jcHAKK0BAIC02OSw2ICs2OSw3IEBAIGNvbnN0IFFTdHJpbmcgTWVudUJh clBhdGggPSBRTGF0aW4xU3RyaW5nKCIvTWVudUJhciIpOworICovCisgUURCdXNNZW51Q29ubmVj dGlvbjo6UURCdXNNZW51Q29ubmVjdGlvbihRT2JqZWN0ICpwYXJlbnQsIGNvbnN0IFFTdHJpbmcg JnNlcnZpY2VOYW1lKQorICAgICA6IFFPYmplY3QocGFyZW50KQorKyAgICAsIG1fc2VydmljZU5h bWUoc2VydmljZU5hbWUpCisgICAgICwgbV9jb25uZWN0aW9uKHNlcnZpY2VOYW1lLmlzTnVsbCgp ID8gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOiBRREJ1c0Nvbm5lY3Rpb246OmNvbm5lY3RUb0J1cyhRREJ1c0Nv bm5lY3Rpb246OlNlc3Npb25CdXMsIHNlcnZpY2VOYW1lKSkKKyAgICAgLCBtX2RidXNXYXRjaGVy KG5ldyBRREJ1c1NlcnZpY2VXYXRjaGVyKFN0YXR1c05vdGlmaWVyV2F0Y2hlclNlcnZpY2UsIG1f Y29ubmVjdGlvbiwgUURCdXNTZXJ2aWNlV2F0Y2hlcjo6V2F0Y2hGb3JSZWdpc3RyYXRpb24sIHRo aXMpKQorQEAgLTgzLDYgKzg0LDEyIEBAIFFEQnVzTWVudUNvbm5lY3Rpb246OlFEQnVzTWVudUNv bm5lY3Rpb24oUU9iamVjdCAqcGFyZW50LCBjb25zdCBRU3RyaW5nICZzZXJ2aWNlCisgI2VuZGlm CisgfQorIAorK1FEQnVzTWVudUNvbm5lY3Rpb246On5RREJ1c01lbnVDb25uZWN0aW9uKCkKKyt7 CisrICBpZiAoIW1fc2VydmljZU5hbWUuaXNFbXB0eSgpICYmIG1fY29ubmVjdGlvbi5pc0Nvbm5l Y3RlZCgpKQorKyAgICAgIFFEQnVzQ29ubmVjdGlvbjo6ZGlzY29ubmVjdEZyb21CdXMobV9zZXJ2 aWNlTmFtZSk7CisrfQorKworIHZvaWQgUURCdXNNZW51Q29ubmVjdGlvbjo6ZGJ1c0Vycm9yKGNv bnN0IFFEQnVzRXJyb3IgJmVycm9yKQorIHsKKyAgICAgcVdhcm5pbmcoKSA8PCAiUURCdXNUcmF5 SWNvbiBlbmNvdW50ZXJlZCBhIEQtQnVzIGVycm9yOiIgPDwgZXJyb3I7CitAQCAtMTA1LDEzICsx MTIsNyBAQCB2b2lkIFFEQnVzTWVudUNvbm5lY3Rpb246OnVucmVnaXN0ZXJUcmF5SWNvbk1lbnUo UURCdXNUcmF5SWNvbiAqaXRlbSkKKyAKKyBib29sIFFEQnVzTWVudUNvbm5lY3Rpb246OnJlZ2lz dGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSkKKyB7CistICAgIGJvb2wgc3VjY2VzcyA9 IGNvbm5lY3Rpb24oKS5yZWdpc3RlclNlcnZpY2UoaXRlbS0+aW5zdGFuY2VJZCgpKTsKKy0gICAg aWYgKCFzdWNjZXNzKSB7CistICAgICAgICBxV2FybmluZygpIDw8ICJmYWlsZWQgdG8gcmVnaXN0 ZXIgc2VydmljZSIgPDwgaXRlbS0+aW5zdGFuY2VJZCgpOworLSAgICAgICAgcmV0dXJuIGZhbHNl OworLSAgICB9CistCistICAgIHN1Y2Nlc3MgPSBjb25uZWN0aW9uKCkucmVnaXN0ZXJPYmplY3Qo U3RhdHVzTm90aWZpZXJJdGVtUGF0aCwgaXRlbSk7CisrICAgIGJvb2wgc3VjY2VzcyA9IGNvbm5l Y3Rpb24oKS5yZWdpc3Rlck9iamVjdChTdGF0dXNOb3RpZmllckl0ZW1QYXRoLCBpdGVtKTsKKyAg ICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICB1bnJlZ2lzdGVyVHJheUljb24oaXRlbSk7Cisg ICAgICAgICBxV2FybmluZygpIDw8ICJmYWlsZWQgdG8gcmVnaXN0ZXIiIDw8IGl0ZW0tPmluc3Rh bmNlSWQoKSA8PCBTdGF0dXNOb3RpZmllckl0ZW1QYXRoOworQEAgLTEyNiwyMSArMTI3LDE4IEBA IGJvb2wgUURCdXNNZW51Q29ubmVjdGlvbjo6cmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29u ICppdGVtKQorIAorIGJvb2wgUURCdXNNZW51Q29ubmVjdGlvbjo6cmVnaXN0ZXJUcmF5SWNvbldp dGhXYXRjaGVyKFFEQnVzVHJheUljb24gKml0ZW0pCisgeworKyAgICBRX1VOVVNFRChpdGVtKTsK KyAgICAgUURCdXNNZXNzYWdlIHJlZ2lzdGVyTWV0aG9kID0gUURCdXNNZXNzYWdlOjpjcmVhdGVN ZXRob2RDYWxsKAorICAgICAgICAgICAgICAgICBTdGF0dXNOb3RpZmllcldhdGNoZXJTZXJ2aWNl LCBTdGF0dXNOb3RpZmllcldhdGNoZXJQYXRoLCBTdGF0dXNOb3RpZmllcldhdGNoZXJTZXJ2aWNl LAorICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJSZWdpc3RlclN0YXR1c05vdGlmaWVy SXRlbSIpKTsKKy0gICAgcmVnaXN0ZXJNZXRob2Quc2V0QXJndW1lbnRzKFFWYXJpYW50TGlzdCgp IDw8IGl0ZW0tPmluc3RhbmNlSWQoKSk7CisrICAgIHJlZ2lzdGVyTWV0aG9kLnNldEFyZ3VtZW50 cyhRVmFyaWFudExpc3QoKSA8PCBtX2Nvbm5lY3Rpb24uYmFzZVNlcnZpY2UoKSk7CisgICAgIHJl dHVybiBtX2Nvbm5lY3Rpb24uY2FsbFdpdGhDYWxsYmFjayhyZWdpc3Rlck1ldGhvZCwgdGhpcywg U0lHTkFMKHRyYXlJY29uUmVnaXN0ZXJlZCgpKSwgU0xPVChkYnVzRXJyb3IoUURCdXNFcnJvcikp KTsKKyB9CisgCistYm9vbCBRREJ1c01lbnVDb25uZWN0aW9uOjp1bnJlZ2lzdGVyVHJheUljb24o UURCdXNUcmF5SWNvbiAqaXRlbSkKKyt2b2lkIFFEQnVzTWVudUNvbm5lY3Rpb246OnVucmVnaXN0 ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKQorIHsKKyAgICAgdW5yZWdpc3RlclRyYXlJ Y29uTWVudShpdGVtKTsKKyAgICAgY29ubmVjdGlvbigpLnVucmVnaXN0ZXJPYmplY3QoU3RhdHVz Tm90aWZpZXJJdGVtUGF0aCk7CistICAgIGJvb2wgc3VjY2VzcyA9IGNvbm5lY3Rpb24oKS51bnJl Z2lzdGVyU2VydmljZShpdGVtLT5pbnN0YW5jZUlkKCkpOworLSAgICBpZiAoIXN1Y2Nlc3MpCist ICAgICAgICBxV2FybmluZygpIDw8ICJmYWlsZWQgdG8gdW5yZWdpc3RlciBzZXJ2aWNlIiA8PCBp dGVtLT5pbnN0YW5jZUlkKCk7CistICAgIHJldHVybiBzdWNjZXNzOworIH0KKyAjZW5kaWYgLy8g UVRfTk9fU1lTVEVNVFJBWUlDT04KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbl9w LmggYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21l bnUvcWRidXNtZW51Y29ubmVjdGlvbl9wLmgKK2luZGV4IGY0ODQ3OTVmYmIuLjk3YmRmYWJiODUg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3Vu aXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGxh dGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0 aW9uX3AuaAorQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgUURCdXNNZW51Q29ubmVjdGlvbiA6IHB1 YmxpYyBRT2JqZWN0CisgCisgcHVibGljOgorICAgICBRREJ1c01lbnVDb25uZWN0aW9uKFFPYmpl Y3QgKnBhcmVudCA9IG51bGxwdHIsIGNvbnN0IFFTdHJpbmcgJnNlcnZpY2VOYW1lID0gUVN0cmlu ZygpKTsKKysgICAgflFEQnVzTWVudUNvbm5lY3Rpb24oKTsKKyAgICAgUURCdXNDb25uZWN0aW9u IGNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKyAgICAgUURCdXNT ZXJ2aWNlV2F0Y2hlciAqZGJ1c1dhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2RidXNXYXRjaGVy OyB9CisgICAgIGJvb2wgaXNTdGF0dXNOb3RpZmllckhvc3RSZWdpc3RlcmVkKCkgY29uc3QgeyBy ZXR1cm4gbV9zdGF0dXNOb3RpZmllckhvc3RSZWdpc3RlcmVkOyB9CitAQCAtNzgsNyArNzksNyBA QCBwdWJsaWM6CisgICAgIHZvaWQgdW5yZWdpc3RlclRyYXlJY29uTWVudShRREJ1c1RyYXlJY29u ICppdGVtKTsKKyAgICAgYm9vbCByZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0p OworICAgICBib29sIHJlZ2lzdGVyVHJheUljb25XaXRoV2F0Y2hlcihRREJ1c1RyYXlJY29uICpp dGVtKTsKKy0gICAgYm9vbCB1bnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSk7 CisrICAgIHZvaWQgdW5yZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pOworICNl bmRpZiAvLyBRVF9OT19TWVNURU1UUkFZSUNPTgorIAorIFFfU0lHTkFMUzoKK0BAIC05MCw2ICs5 MSw3IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAgICAgdm9pZCBkYnVzRXJyb3IoY29uc3QgUURCdXNF cnJvciAmZXJyb3IpOworIAorIHByaXZhdGU6CisrICAgIFFTdHJpbmcgbV9zZXJ2aWNlTmFtZTsK KyAgICAgUURCdXNDb25uZWN0aW9uIG1fY29ubmVjdGlvbjsKKyAgICAgUURCdXNTZXJ2aWNlV2F0 Y2hlciAqbV9kYnVzV2F0Y2hlcjsKKyAgICAgYm9vbCBtX3N0YXR1c05vdGlmaWVySG9zdFJlZ2lz dGVyZWQ7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dl bmVyaWN1bml4L2RidXN0cmF5L3FkYnVzdHJheWljb24uY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9y bXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXN0cmF5L3FkYnVzdHJheWljb24uY3BwCitp bmRleCBiZWRlNzA5NzVhLi43NmJmZWM1ZTVhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0 Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXN0cmF5L3FkYnVzdHJheWljb24uY3Bw CisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1 c3RyYXkvcWRidXN0cmF5aWNvbi5jcHAKK0BAIC03MSw4ICs3MSwxMiBAQCBRX0xPR0dJTkdfQ0FU RUdPUlkocUxjVHJheSwgInF0LnFwYS50cmF5IikKKyBzdGF0aWMgUVN0cmluZyBpY29uVGVtcFBh dGgoKQorIHsKKyAgICAgUVN0cmluZyB0ZW1wUGF0aCA9IFFTdGFuZGFyZFBhdGhzOjp3cml0YWJs ZUxvY2F0aW9uKFFTdGFuZGFyZFBhdGhzOjpSdW50aW1lTG9jYXRpb24pOworLSAgICBpZiAoIXRl bXBQYXRoLmlzRW1wdHkoKSkKKysgICAgaWYgKCF0ZW1wUGF0aC5pc0VtcHR5KCkpIHsKKysgICAg ICAgIFFTdHJpbmcgZmxhdHBha0lkID0gcUVudmlyb25tZW50VmFyaWFibGUoIkZMQVRQQUtfSUQi KTsKKysgICAgICAgIGlmICghZmxhdHBha0lkLmlzRW1wdHkoKSAmJiBRRmlsZUluZm86OmV4aXN0 cyhRTGF0aW4xU3RyaW5nKCIvLmZsYXRwYWstaW5mbyIpKSkKKysgICAgICAgICAgICB0ZW1wUGF0 aCArPSBRTGF0aW4xU3RyaW5nKCIvYXBwLyIpICsgZmxhdHBha0lkOworICAgICAgICAgcmV0dXJu IHRlbXBQYXRoOworKyAgICB9CisgCisgICAgIHRlbXBQYXRoID0gUVN0YW5kYXJkUGF0aHM6Ondy aXRhYmxlTG9jYXRpb24oUVN0YW5kYXJkUGF0aHM6OkdlbmVyaWNDYWNoZUxvY2F0aW9uKTsKKyAK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3Vu aXgvcWdlbmVyaWN1bml4dGhlbWVzLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3Ro ZW1lcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXh0aGVtZXMuY3BwCitpbmRleCBjYjFiMzlkYjY0 Li42ZTAxYWYwNTJjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhl bWVzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHRoZW1lcy5jcHAKKysrKyBiL3F0YmFzZS9zcmMv cGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXh0aGVtZXMuY3Bw CitAQCAtNzU1LDYgKzc1NSw5IEBAIFFWYXJpYW50IFFHbm9tZVRoZW1lOjp0aGVtZUhpbnQoUVBs YXRmb3JtVGhlbWU6OlRoZW1lSGludCBoaW50KSBjb25zdAorICAgICAgICAgcmV0dXJuIFFWYXJp YW50KFFDaGFyKDB4MjAyMikpOworICAgICBjYXNlIFFQbGF0Zm9ybVRoZW1lOjpVaUVmZmVjdHM6 CisgICAgICAgICByZXR1cm4gUVZhcmlhbnQoaW50KEhvdmVyRWZmZWN0KSk7CisrICAgIGNhc2Ug UVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5czoKKysgICAgICAgIHJldHVybiBRVmFyaWFu dDo6ZnJvbVZhbHVlKAorKyAgICAgICAgICAgICAgICBRTGlzdDxRdDo6S2V5Pih7IFF0OjpLZXlf U3BhY2UsIFF0OjpLZXlfUmV0dXJuLCBRdDo6S2V5X0VudGVyLCBRdDo6S2V5X1NlbGVjdCB9KSk7 CisgICAgIGRlZmF1bHQ6CisgICAgICAgICBicmVhazsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xmc2N1cnNvci5jcHAgYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2FwaS9xZWdsZnNjdXJzb3IuY3BwCitp bmRleCA5OGUwNTE5NWVlLi4xZTkyZjQzZGVjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVn aW5zL3BsYXRmb3Jtcy9lZ2xmcy9hcGkvcWVnbGZzY3Vyc29yLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9hcGkvcWVnbGZzY3Vyc29yLmNwcAorQEAgLTM0Myw4 ICszNDMsNyBAQCB2b2lkIFFFZ2xGU0N1cnNvcjo6cGFpbnRPblNjcmVlbigpCisgICAgIC8vIHNj cmVlbnMgYXJlIHNpYmxpbmdzIG9mIGVhY2ggb3RoZXIuIFdoZW4gbm90IGVuYWJsZWQsIHRoZSBz aWJsaW5nIGxpc3QKKyAgICAgLy8gb25seSBjb250YWlucyBtX3NjcmVlbiBpdHNlbGYuCisgICAg IGZvciAoUVBsYXRmb3JtU2NyZWVuICpzY3JlZW4gOiBtX3NjcmVlbi0+dmlydHVhbFNpYmxpbmdz KCkpIHsKKy0gICAgICAgIGlmIChzY3JlZW4tPmdlb21ldHJ5KCkuY29udGFpbnMoY3IudG9wTGVm dCgpLnRvUG9pbnQoKSArIG1fY3Vyc29yLmhvdFNwb3QpCistICAgICAgICAgICAgJiYgUU9wZW5H TENvbnRleHQ6OmN1cnJlbnRDb250ZXh0KCktPnNjcmVlbigpID09IHNjcmVlbi0+c2NyZWVuKCkp CisrICAgICAgICBpZiAoc2NyZWVuLT5nZW9tZXRyeSgpLmNvbnRhaW5zKGNyLnRvcExlZnQoKS50 b1BvaW50KCkgKyBtX2N1cnNvci5ob3RTcG90KSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBj ci50cmFuc2xhdGUoLXNjcmVlbi0+Z2VvbWV0cnkoKS50b3BMZWZ0KCkpOworICAgICAgICAgICAg IGNvbnN0IFFTaXplIHNjcmVlblNpemUgPSBzY3JlZW4tPmdlb21ldHJ5KCkuc2l6ZSgpOworQEAg LTQ2OCwxMSArNDY3LDEyIEBAIHZvaWQgUUVnbEZTQ3Vyc29yOjpkcmF3KGNvbnN0IFFSZWN0RiAm cikKKyB7CisgICAgIFN0YXRlU2F2ZXIgc3RhdGVTYXZlcjsKKyAKKy0gICAgUUVnbEZTQ3Vyc29y RGF0YSAmZ2Z4ID0gc3RhdGljX2Nhc3Q8UUVnbEZTQ29udGV4dCo+KFFPcGVuR0xDb250ZXh0Ojpj dXJyZW50Q29udGV4dCgpLT5oYW5kbGUoKSktPmN1cnNvckRhdGE7CistICAgIGlmICghZ2Z4LnBy b2dyYW0pIHsKKy0gICAgICAgIC8vIG9uZSB0aW1lIGluaXRpYWxpemF0aW9uCisrICAgIC8vIG9u ZSB0aW1lIGluaXRpYWxpemF0aW9uCisrICAgIGlmICghUU9wZW5HTEZ1bmN0aW9uczo6ZF9wdHIp CisgICAgICAgICBpbml0aWFsaXplT3BlbkdMRnVuY3Rpb25zKCk7CisgCisrICAgIFFFZ2xGU0N1 cnNvckRhdGEgJmdmeCA9IHN0YXRpY19jYXN0PFFFZ2xGU0NvbnRleHQqPihRT3BlbkdMQ29udGV4 dDo6Y3VycmVudENvbnRleHQoKS0+aGFuZGxlKCkpLT5jdXJzb3JEYXRhOworKyAgICBpZiAoIWdm eC5wcm9ncmFtKSB7CisgICAgICAgICBjcmVhdGVTaGFkZXJQcm9ncmFtcygpOworIAorICAgICAg ICAgaWYgKCFnZnguYXRsYXNUZXh0dXJlKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVn aW5zL3BsYXRmb3Jtcy9lZ2xmcy9kZXZpY2VpbnRlZ3JhdGlvbi9lZ2xmc19rbXNfc3VwcG9ydC9x ZWdsZnNrbXNldmVudHJlYWRlci5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2Vn bGZzL2RldmljZWludGVncmF0aW9uL2VnbGZzX2ttc19zdXBwb3J0L3FlZ2xmc2ttc2V2ZW50cmVh ZGVyLmNwcAoraW5kZXggNjQ1YTBhZTJlOS4uM2UwZTQwNmYxYSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRpb24vZWdsZnNfa21z X3N1cHBvcnQvcWVnbGZza21zZXZlbnRyZWFkZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL2VnbGZzL2RldmljZWludGVncmF0aW9uL2VnbGZzX2ttc19zdXBwb3J0L3Fl Z2xmc2ttc2V2ZW50cmVhZGVyLmNwcAorQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIFFFZ2xGU0tt c0V2ZW50UmVhZGVyOjpjcmVhdGUoUUVnbEZTS21zRGV2aWNlICpkZXZpY2UpCisgCisgICAgIG1f ZGV2aWNlID0gZGV2aWNlOworIAorLSAgICBxQ0RlYnVnKHFMY0VnbGZzS21zRGVidWcsICJJbml0 YWxpemluZyBldmVudCByZWFkZXIgZm9yIGRldmljZSAlcCBmZCAlZCIsCisrICAgIHFDRGVidWco cUxjRWdsZnNLbXNEZWJ1ZywgIkluaXRpYWxpemluZyBldmVudCByZWFkZXIgZm9yIGRldmljZSAl cCBmZCAlZCIsCisgICAgICAgICAgICAgbV9kZXZpY2UsIG1fZGV2aWNlLT5mZCgpKTsKKyAKKyAg ICAgbV90aHJlYWQgPSBuZXcgUUVnbEZTS21zRXZlbnRSZWFkZXJUaHJlYWQobV9kZXZpY2UtPmZk KCkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVu L3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1z L29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uY3BwCitpbmRleCAxNDFmYjY4YTIzLi5k NDI5NGQ0MjVhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZz Y3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5z L3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmNwcAorQEAgLTEyMiwx MSArMTIyLDEzIEBAIFFPZmZzY3JlZW5JbnRlZ3JhdGlvbjo6UU9mZnNjcmVlbkludGVncmF0aW9u KCkKKyAjZW5kaWYKKyAgICAgbV9zZXJ2aWNlcy5yZXNldChuZXcgUVBsYXRmb3JtU2VydmljZXMp OworIAorLSAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVTY3JlZW5BZGRlZChuZXcg UU9mZnNjcmVlblNjcmVlbik7CisrICAgIG1fc2NyZWVuID0gbmV3IFFPZmZzY3JlZW5TY3JlZW47 CisrICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVNjcmVlbkFkZGVkKG1fc2NyZWVu KTsKKyB9CisgCisgUU9mZnNjcmVlbkludGVncmF0aW9uOjp+UU9mZnNjcmVlbkludGVncmF0aW9u KCkKKyB7CisrICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVNjcmVlblJlbW92ZWQo bV9zY3JlZW4pOworIH0KKyAKKyB2b2lkIFFPZmZzY3JlZW5JbnRlZ3JhdGlvbjo6aW5pdGlhbGl6 ZSgpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4v cW9mZnNjcmVlbmludGVncmF0aW9uLmggYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29m ZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uaAoraW5kZXggMGVhOTBmNmMyZi4uZmUwMGZk ZTA3YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVu L3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5oCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uaAorQEAgLTg0LDYgKzg0LDcgQEAg cHJvdGVjdGVkOgorICNlbmRpZgorICAgICBRU2NvcGVkUG9pbnRlcjxRUGxhdGZvcm1JbnB1dENv bnRleHQ+IG1faW5wdXRDb250ZXh0OworICAgICBRU2NvcGVkUG9pbnRlcjxRUGxhdGZvcm1TZXJ2 aWNlcz4gbV9zZXJ2aWNlczsKKysgICAgUVBsYXRmb3JtU2NyZWVuICptX3NjcmVlbjsKKyAgICAg bXV0YWJsZSBRU2NvcGVkUG9pbnRlcjxRUGxhdGZvcm1OYXRpdmVJbnRlcmZhY2U+IG1fbmF0aXZl SW50ZXJmYWNlOworIH07CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy93aW5kb3dzL3F3aW5kb3dzZ2xjb250ZXh0LmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMvd2luZG93cy9xd2luZG93c2dsY29udGV4dC5jcHAKK2luZGV4IDZmYTVhOGEyYjMu LjFmNDlmMGFlZmQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dp bmRvd3MvcXdpbmRvd3NnbGNvbnRleHQuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxh dGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NnbGNvbnRleHQuY3BwCitAQCAtNDgsNiArNDgsNyBAQAor ICNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtbmF0aXZlaW50ZXJmYWNlLmg+CisgI2luY2x1ZGUgPFF0 UGxhdGZvcm1IZWFkZXJzL3F3Z2xuYXRpdmVjb250ZXh0Lmg+CisgCisrI2luY2x1ZGUgPHByaXZh dGUvcXN5c3RlbWxpYnJhcnlfcC5oPgorICNpbmNsdWRlIDxhbGdvcml0aG0+CisgCisgI2luY2x1 ZGUgPHdpbmdkaS5oPgorQEAgLTE2MiwxOSArMTYzLDI1IEBAIFFGdW5jdGlvblBvaW50ZXIgUVdp bmRvd3NPcGVuZ2wzMkRMTDo6cmVzb2x2ZShjb25zdCBjaGFyICpuYW1lKQorIAorIGJvb2wgUVdp bmRvd3NPcGVuZ2wzMkRMTDo6aW5pdChib29sIHNvZnR3YXJlUmVuZGVyaW5nKQorIHsKKy0gICAg Y29uc3QgUUJ5dGVBcnJheSBvcGVuZ2wzMiA9IFFCeXRlQXJyYXlMaXRlcmFsKCJvcGVuZ2wzMi5k bGwiKTsKKy0gICAgY29uc3QgUUJ5dGVBcnJheSBzd29wZW5nbCA9IFFCeXRlQXJyYXlMaXRlcmFs KCJvcGVuZ2wzMnN3LmRsbCIpOworKyAgICBjb25zdCBRQnl0ZUFycmF5IG9wZW5nbDMyID0gUUJ5 dGVBcnJheUxpdGVyYWwoIm9wZW5nbDMyIik7CisrICAgIGNvbnN0IFFCeXRlQXJyYXkgc3dvcGVu Z2wgPSBRQnl0ZUFycmF5TGl0ZXJhbCgib3BlbmdsMzJzdyIpOworKyAgICBib29sIHVzZVN5c3Rl bUxpYiA9IGZhbHNlOworIAorICAgICBRQnl0ZUFycmF5IG9wZW5nbERsbCA9IHFnZXRlbnYoIlFU X09QRU5HTF9ETEwiKTsKKy0gICAgaWYgKG9wZW5nbERsbC5pc0VtcHR5KCkpCisrICAgIGlmIChv cGVuZ2xEbGwuaXNFbXB0eSgpKSB7CisgICAgICAgICBvcGVuZ2xEbGwgPSBzb2Z0d2FyZVJlbmRl cmluZyA/IHN3b3BlbmdsIDogb3BlbmdsMzI7CisrICAgICAgICB1c2VTeXN0ZW1MaWIgPSAhc29m dHdhcmVSZW5kZXJpbmc7CisrICAgIH0KKyAKKyAgICAgb3BlbmdsRGxsID0gb3BlbmdsRGxsLnRv TG93ZXIoKTsKKyAgICAgbV9ub25PcGVuZ2wzMiA9IG9wZW5nbERsbCAhPSBvcGVuZ2wzMjsKKyAK KyAgICAgcUNEZWJ1ZyhsY1FwYUdsKSA8PCAiUXQ6IFVzaW5nIFdHTCBhbmQgT3BlbkdMIGZyb20i IDw8IG9wZW5nbERsbDsKKyAKKy0gICAgbV9saWIgPSA6OkxvYWRMaWJyYXJ5QShvcGVuZ2xEbGwu Y29uc3REYXRhKCkpOworKyAgICBpZiAodXNlU3lzdGVtTGliKQorKyAgICAgICAgbV9saWIgPSBR U3lzdGVtTGlicmFyeTo6bG9hZCgod2NoYXJfdCopKFFTdHJpbmc6OmZyb21MYXRpbjEob3Blbmds RGxsKS51dGYxNigpKSk7CisrICAgIGVsc2UKKysgICAgICAgIG1fbGliID0gTG9hZExpYnJhcnlB KG9wZW5nbERsbC5jb25zdERhdGEoKSk7CisgICAgIGlmICghbV9saWIpIHsKKyAgICAgICAgIHFF cnJub1dhcm5pbmcoOjpHZXRMYXN0RXJyb3IoKSwgIkZhaWxlZCB0byBsb2FkICVzIiwgb3Blbmds RGxsLmNvbnN0RGF0YSgpKTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKK0BAIC0xODQsNyArMTkx LDcgQEAgYm9vbCBRV2luZG93c09wZW5nbDMyRExMOjppbml0KGJvb2wgc29mdHdhcmVSZW5kZXJp bmcpCisgICAgICAgICAvLyBMb2FkIG9wZW5nbDMyLmRsbCBhbHdheXMuIEdESSBmdW5jdGlvbnMg bGlrZSBDaG9vc2VQaXhlbEZvcm1hdCBkbworICAgICAgICAgLy8gR2V0TW9kdWxlSGFuZGxlIGZv ciBvcGVuZ2wzMi5kbGwgYW5kIGJlaGF2ZSBkaWZmZXJlbnRseSAoYW5kIGNhbGwgYmFjayBpbnRv CisgICAgICAgICAvLyBvcGVuZ2wzMikgd2hlbiB0aGUgbW9kdWxlIGlzIHByZXNlbnQuIFRoaXMg aXMgZmluZSBmb3IgZHVtbXkgY29udGV4dHMgYW5kIHdpbmRvd3MuCistICAgICAgICA6OkxvYWRM aWJyYXJ5QSgib3BlbmdsMzIuZGxsIik7CisrICAgICAgICBRU3lzdGVtTGlicmFyeTo6bG9hZChM Im9wZW5nbDMyIik7CisgICAgIH0KKyAKKyAgICAgd2dsQ3JlYXRlQ29udGV4dCA9IHJlaW50ZXJw cmV0X2Nhc3Q8SEdMUkMgKFdJTkFQSSAqKShIREMpPihyZXNvbHZlKCJ3Z2xDcmVhdGVDb250ZXh0 IikpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9x d2luZG93c29wZW5nbHRlc3Rlci5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dp bmRvd3MvcXdpbmRvd3NvcGVuZ2x0ZXN0ZXIuY3BwCitpbmRleCBkN2QxODZlODA0Li45ZWI0MDEx YmYyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3 aW5kb3dzb3BlbmdsdGVzdGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt cy93aW5kb3dzL3F3aW5kb3dzb3BlbmdsdGVzdGVyLmNwcAorQEAgLTQ5LDYgKzQ5LDcgQEAKKyAj aW5jbHVkZSA8UXRDb3JlL3FzdGFuZGFyZHBhdGhzLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xbGli cmFyeWluZm8uaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3FoYXNoLmg+CisrI2luY2x1ZGUgPHByaXZh dGUvcXN5c3RlbWxpYnJhcnlfcC5oPgorIAorICNpZm5kZWYgUVRfTk9fT1BFTkdMCisgI2luY2x1 ZGUgPHByaXZhdGUvcW9wZW5nbF9wLmg+CitAQCAtMzk2LDcgKzM5Nyw3IEBAIGJvb2wgUVdpbmRv d3NPcGVuR0xUZXN0ZXI6OnRlc3REZXNrdG9wR0woKQorIAorICAgICAvLyBUZXN0ICMxOiBMb2Fk IG9wZW5nbDMyLmRsbCBhbmQgdHJ5IHRvIHJlc29sdmUgYW4gT3BlbkdMIDIgZnVuY3Rpb24uCisg ICAgIC8vIFRoaXMgd2lsbCB0eXBpY2FsbHkgZmFpbCBvbiBzeXN0ZW1zIHRoYXQgZG8gbm90IGhh dmUgYSByZWFsIE9wZW5HTCBkcml2ZXIuCistICAgIGxpYiA9IExvYWRMaWJyYXJ5QSgib3Blbmds MzIuZGxsIik7CisrICAgIGxpYiA9IFFTeXN0ZW1MaWJyYXJ5Ojpsb2FkKEwib3BlbmdsMzIiKTsK KyAgICAgaWYgKGxpYikgeworICAgICAgICAgQ3JlYXRlQ29udGV4dCA9IHJlaW50ZXJwcmV0X2Nh c3Q8Q3JlYXRlQ29udGV4dFR5cGU+KAorICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UUZ1 bmN0aW9uUG9pbnRlcj4oOjpHZXRQcm9jQWRkcmVzcyhsaWIsICJ3Z2xDcmVhdGVDb250ZXh0Iikp KTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9uYXRpdmVw YWludGluZy9xdGVzc2VsbGF0b3IuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94 Y2IvbmF0aXZlcGFpbnRpbmcvcXRlc3NlbGxhdG9yLmNwcAoraW5kZXggMWFmYTAwY2ZjOS4uMTE4 YWY2Y2U3MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL25h dGl2ZXBhaW50aW5nL3F0ZXNzZWxsYXRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMveGNiL25hdGl2ZXBhaW50aW5nL3F0ZXNzZWxsYXRvci5jcHAKK0BAIC00MSw2ICs0 MSw3IEBACisgCisgI2luY2x1ZGUgPFFSZWN0PgorICNpbmNsdWRlIDxRTGlzdD4KKysjaW5jbHVk ZSA8UU1hcD4KKyAjaW5jbHVkZSA8UURlYnVnPgorIAorICNpbmNsdWRlIDxxbWF0aC5oPgorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2Jjb25uZWN0aW9u LmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2Jjb25uZWN0aW9uLmNw cAoraW5kZXggOWUyYTM3YTZhMS4uZTZlMTc1YTExOCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2Jjb25uZWN0aW9uLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmNvbm5lY3Rpb24uY3BwCitAQCAtNDg4LDEyICs0 ODgsMTIgQEAgdm9pZCBRWGNiQ29ubmVjdGlvbjo6cHJpbnRYY2JFcnJvcihjb25zdCBjaGFyICpt ZXNzYWdlLCB4Y2JfZ2VuZXJpY19lcnJvcl90ICplcnIKKyAgICAgdWludCBjbGFtcGVkX2Vycm9y X2NvZGUgPSBxTWluPHVpbnQ+KGVycm9yLT5lcnJvcl9jb2RlLCAoc2l6ZW9mKHhjYl9lcnJvcnMp IC8gc2l6ZW9mKHhjYl9lcnJvcnNbMF0pKSAtIDEpOworICAgICB1aW50IGNsYW1wZWRfbWFqb3Jf Y29kZSA9IHFNaW48dWludD4oZXJyb3ItPm1ham9yX2NvZGUsIChzaXplb2YoeGNiX3Byb3RvY29s X3JlcXVlc3RfY29kZXMpIC8gc2l6ZW9mKHhjYl9wcm90b2NvbF9yZXF1ZXN0X2NvZGVzWzBdKSkg LSAxKTsKKyAKKy0gICAgcUNXYXJuaW5nKGxjUXBhWGNiLCAiJXM6ICVkICglcyksIHNlcXVlbmNl OiAlZCwgcmVzb3VyY2UgaWQ6ICVkLCBtYWpvciBjb2RlOiAlZCAoJXMpLCBtaW5vciBjb2RlOiAl ZCIsCistICAgICAgICAgICAgIG1lc3NhZ2UsCistICAgICAgICAgICAgIGludChlcnJvci0+ZXJy b3JfY29kZSksIHhjYl9lcnJvcnNbY2xhbXBlZF9lcnJvcl9jb2RlXSwKKy0gICAgICAgICAgICAg aW50KGVycm9yLT5zZXF1ZW5jZSksIGludChlcnJvci0+cmVzb3VyY2VfaWQpLAorLSAgICAgICAg ICAgICBpbnQoZXJyb3ItPm1ham9yX2NvZGUpLCB4Y2JfcHJvdG9jb2xfcmVxdWVzdF9jb2Rlc1tj bGFtcGVkX21ham9yX2NvZGVdLAorLSAgICAgICAgICAgICBpbnQoZXJyb3ItPm1pbm9yX2NvZGUp KTsKKysgICAgcUNEZWJ1ZyhsY1FwYVhjYiwgIiVzOiAlZCAoJXMpLCBzZXF1ZW5jZTogJWQsIHJl c291cmNlIGlkOiAlZCwgbWFqb3IgY29kZTogJWQgKCVzKSwgbWlub3IgY29kZTogJWQiLAorKyAg ICAgICAgICAgIG1lc3NhZ2UsCisrICAgICAgICAgICAgaW50KGVycm9yLT5lcnJvcl9jb2RlKSwg eGNiX2Vycm9yc1tjbGFtcGVkX2Vycm9yX2NvZGVdLAorKyAgICAgICAgICAgIGludChlcnJvci0+ c2VxdWVuY2UpLCBpbnQoZXJyb3ItPnJlc291cmNlX2lkKSwKKysgICAgICAgICAgICBpbnQoZXJy b3ItPm1ham9yX2NvZGUpLCB4Y2JfcHJvdG9jb2xfcmVxdWVzdF9jb2Rlc1tjbGFtcGVkX21ham9y X2NvZGVdLAorKyAgICAgICAgICAgIGludChlcnJvci0+bWlub3JfY29kZSkpOworIH0KKyAKKyBz dGF0aWMgUXQ6Ok1vdXNlQnV0dG9ucyB0cmFuc2xhdGVNb3VzZUJ1dHRvbnMoaW50IHMpCitAQCAt NzAyLDYgKzcwMiw4IEBAIHZvaWQgUVhjYkNvbm5lY3Rpb246OmhhbmRsZVhjYkV2ZW50KHhjYl9n ZW5lcmljX2V2ZW50X3QgKmV2ZW50KQorICAgICAgICAgICAgIFFYY2JWaXJ0dWFsRGVza3RvcCAq dmlydHVhbERlc2t0b3AgPSB2aXJ0dWFsRGVza3RvcEZvclJvb3RXaW5kb3cocHJvcGVydHlOb3Rp ZnktPndpbmRvdyk7CisgICAgICAgICAgICAgaWYgKHZpcnR1YWxEZXNrdG9wKQorICAgICAgICAg ICAgICAgICB2aXJ0dWFsRGVza3RvcC0+dXBkYXRlV29ya0FyZWEoKTsKKysgICAgICAgIH0gZWxz ZSBpZiAocHJvcGVydHlOb3RpZnktPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6X05FVF9TVVBQT1JU RUQpKSB7CisrICAgICAgICAgICAgbV93bVN1cHBvcnQtPnVwZGF0ZU5ldFdNQXRvbXMoKTsKKyAg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgSEFORExFX1BMQVRGT1JNX1dJTkRPV19FVkVO VCh4Y2JfcHJvcGVydHlfbm90aWZ5X2V2ZW50X3QsIHdpbmRvdywgaGFuZGxlUHJvcGVydHlOb3Rp ZnlFdmVudCk7CisgICAgICAgICB9CitAQCAtNzUwLDcgKzc1Miw3IEBAIHZvaWQgUVhjYkNvbm5l Y3Rpb246OmhhbmRsZVhjYkV2ZW50KHhjYl9nZW5lcmljX2V2ZW50X3QgKmV2ZW50KQorICAgICAg ICAgICAgICAgICBjYXNlIFhDQl9YS0JfTkVXX0tFWUJPQVJEX05PVElGWTogeworICAgICAgICAg ICAgICAgICAgICAgeGNiX3hrYl9uZXdfa2V5Ym9hcmRfbm90aWZ5X2V2ZW50X3QgKmV2ID0gJnhr Yl9ldmVudC0+bmV3X2tleWJvYXJkX25vdGlmeTsKKyAgICAgICAgICAgICAgICAgICAgIGlmIChl di0+Y2hhbmdlZCAmIFhDQl9YS0JfTktOX0RFVEFJTF9LRVlDT0RFUykKKy0gICAgICAgICAgICAg ICAgICAgICAgICBtX2tleWJvYXJkLT51cGRhdGVLZXltYXAoZXYpOworKyAgICAgICAgICAgICAg ICAgICAgICAgIG1fa2V5Ym9hcmQtPnVwZGF0ZUtleW1hcCgpOworICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgZGVmYXVsdDoK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50ZWdy YXRpb24uY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmludGVncmF0 aW9uLmNwcAoraW5kZXggNzY4NjljZWQ2MC4uMDJkMmVlYmI1NiAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JpbnRlZ3JhdGlvbi5jcHAKK0BAIC0y NzQsOCArMjc0LDcgQEAgUVBsYXRmb3JtV2luZG93ICpRWGNiSW50ZWdyYXRpb246OmNyZWF0ZUZv cmVpZ25XaW5kb3coUVdpbmRvdyAqd2luZG93LCBXSWQgbmF0aXYKKyAjaWZuZGVmIFFUX05PX09Q RU5HTAorIFFQbGF0Zm9ybU9wZW5HTENvbnRleHQgKlFYY2JJbnRlZ3JhdGlvbjo6Y3JlYXRlUGxh dGZvcm1PcGVuR0xDb250ZXh0KFFPcGVuR0xDb250ZXh0ICpjb250ZXh0KSBjb25zdAorIHsKKy0g ICAgUVhjYlNjcmVlbiAqc2NyZWVuID0gc3RhdGljX2Nhc3Q8UVhjYlNjcmVlbiAqPihjb250ZXh0 LT5zY3JlZW4oKS0+aGFuZGxlKCkpOworLSAgICBRWGNiR2xJbnRlZ3JhdGlvbiAqZ2xJbnRlZ3Jh dGlvbiA9IHNjcmVlbi0+Y29ubmVjdGlvbigpLT5nbEludGVncmF0aW9uKCk7CisrICAgIFFYY2JH bEludGVncmF0aW9uICpnbEludGVncmF0aW9uID0gZGVmYXVsdENvbm5lY3Rpb24oKS0+Z2xJbnRl Z3JhdGlvbigpOworICAgICBpZiAoIWdsSW50ZWdyYXRpb24pIHsKKyAgICAgICAgIHFXYXJuaW5n KCJRWGNiSW50ZWdyYXRpb246IENhbm5vdCBjcmVhdGUgcGxhdGZvcm0gT3BlbkdMIGNvbnRleHQs IG5laXRoZXIgR0xYIG5vciBFR0wgYXJlIGVuYWJsZWQiKTsKKyAgICAgICAgIHJldHVybiBudWxs cHRyOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2Jr ZXlib2FyZC5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9h cmQuY3BwCitpbmRleCBlZmVjZDdlMmQxLi5lODI4NjM4MWEyIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmNwcAorKysrIGIvcXRiYXNl L3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmNwcAorQEAgLTM2NSwxNyAr MzY1LDYgQEAgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCh4Y2JfbWFwcGluZ19ub3Rp ZnlfZXZlbnRfdCAqZXZlbnQpCisgICAgIHVwZGF0ZUtleW1hcCgpOworIH0KKyAKKy12b2lkIFFY Y2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKHhjYl94a2JfbmV3X2tleWJvYXJkX25vdGlmeV9ldmVu dF90ICpldmVudCkKKy17CistICAgIGlmICghZXZlbnQpCistICAgICAgICByZXR1cm47CistCist ICAgIGlmIChldmVudC0+ZGV2aWNlSUQgIT0gZXZlbnQtPm9sZERldmljZUlEKQorLSAgICAgICAg bV9jb25maWcgPSBmYWxzZTsKKy0KKy0gICAgdXBkYXRlS2V5bWFwKCk7CistfQorLQorIHZvaWQg UVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoKQorIHsKKyAgICAgS2V5c3ltTW9kaWZpZXJNYXAg a2V5c3ltTW9kczsKK0BAIC0zODMsNiArMzcyLDggQEAgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0 ZUtleW1hcCgpCisgICAgICAgICBrZXlzeW1Nb2RzID0ga2V5c3ltc1RvTW9kaWZpZXJzKCk7Cisg ICAgIHVwZGF0ZU1vZGlmaWVycyhrZXlzeW1Nb2RzKTsKKyAKKysgICAgbV9jb25maWcgPSB0cnVl OworKworICAgICBpZiAoIW1feGtiQ29udGV4dCkgeworICAgICAgICAgbV94a2JDb250ZXh0LnJl c2V0KHhrYl9jb250ZXh0X25ldyhYS0JfQ09OVEVYVF9OT19ERUZBVUxUX0lOQ0xVREVTKSk7Cisg ICAgICAgICBpZiAoIW1feGtiQ29udGV4dCkgeworQEAgLTM5OCwxMyArMzg5LDggQEAgdm9pZCBR WGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCgpCisgICAgIGlmIChjb25uZWN0aW9uKCktPmhhc1hL QigpKSB7CisgICAgICAgICBtX3hrYktleW1hcC5yZXNldCh4a2JfeDExX2tleW1hcF9uZXdfZnJv bV9kZXZpY2UobV94a2JDb250ZXh0LmdldCgpLCB4Y2JfY29ubmVjdGlvbigpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVfZGV2 aWNlX2lkLCBYS0JfS0VZTUFQX0NPTVBJTEVfTk9fRkxBR1MpKTsKKy0gICAgICAgIGlmIChtX3hr YktleW1hcCkgeworLSAgICAgICAgICAgIGlmIChtX2NvbmZpZykKKy0gICAgICAgICAgICAgICAg bV94a2JTdGF0ZS5yZXNldCh4a2Jfc3RhdGVfbmV3KG1feGtiS2V5bWFwLmdldCgpKSk7CistICAg ICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICBtX3hrYlN0YXRlLnJlc2V0KHhrYl94MTFf c3RhdGVfbmV3X2Zyb21fZGV2aWNlKG1feGtiS2V5bWFwLmdldCgpLCB4Y2JfY29ubmVjdGlvbigp LCBjb3JlX2RldmljZV9pZCkpOworLQorLSAgICAgICAgfQorKyAgICAgICAgaWYgKG1feGtiS2V5 bWFwKQorKyAgICAgICAgICAgIG1feGtiU3RhdGUucmVzZXQoeGtiX3gxMV9zdGF0ZV9uZXdfZnJv bV9kZXZpY2UobV94a2JLZXltYXAuZ2V0KCksIHhjYl9jb25uZWN0aW9uKCksIGNvcmVfZGV2aWNl X2lkKSk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICBtX3hrYktleW1hcC5yZXNldChrZXltYXBG cm9tQ29yZShrZXlzeW1Nb2RzKSk7CisgICAgICAgICBpZiAobV94a2JLZXltYXApCitAQCAtNDI1 LDggKzQxMSw2IEBAIHZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoKQorICAgICB1cGRh dGVYS0JNb2RzKCk7CisgCisgICAgIFFYa2JDb21tb246OnZlcmlmeUhhc0xhdGluTGF5b3V0KG1f eGtiS2V5bWFwLmdldCgpKTsKKy0KKy0gICAgbV9jb25maWcgPSB0cnVlOworIH0KKyAKKyBRTGlz dDxpbnQ+IFFYY2JLZXlib2FyZDo6cG9zc2libGVLZXlzKGNvbnN0IFFLZXlFdmVudCAqZXZlbnQp IGNvbnN0CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhj YmtleWJvYXJkLmggYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9h cmQuaAoraW5kZXggYjY1MmM4NWZlMy4uMGVlMDhhZWZmMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5oCisrKysgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuaAorQEAgLTY5LDcgKzY5LDYgQEAg cHVibGljOgorIAorICAgICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgdHJhbnNsYXRlTW9kaWZpZXJz KGludCBzKSBjb25zdDsKKyAgICAgdm9pZCB1cGRhdGVLZXltYXAoeGNiX21hcHBpbmdfbm90aWZ5 X2V2ZW50X3QgKmV2ZW50KTsKKy0gICAgdm9pZCB1cGRhdGVLZXltYXAoeGNiX3hrYl9uZXdfa2V5 Ym9hcmRfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KTsKKyAgICAgdm9pZCB1cGRhdGVLZXltYXAoKTsK KyAgICAgUUxpc3Q8aW50PiBwb3NzaWJsZUtleXMoY29uc3QgUUtleUV2ZW50ICpldmVudCkgY29u c3Q7CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhj YndpbmRvdy5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93 LmNwcAoraW5kZXggZmZkYTdiNmE1Ny4uODYzZTk2MWY0YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmNwcAorQEAgLTU2NCwxMSArNTY0LDYg QEAgdm9pZCBRWGNiV2luZG93OjpzZXRHZW9tZXRyeShjb25zdCBRUmVjdCAmcmVjdCkKKyB7Cisg ICAgIFFQbGF0Zm9ybVdpbmRvdzo6c2V0R2VvbWV0cnkocmVjdCk7CisgCistICAgIGlmIChzaG91 bGREZWZlclRhc2soVGFzazo6U2V0R2VvbWV0cnkpKSB7CistICAgICAgICBtX2RlZmVycmVkR2Vv bWV0cnkgPSByZWN0OworLSAgICAgICAgcmV0dXJuOworLSAgICB9CistCisgICAgIHByb3BhZ2F0 ZVNpemVIaW50cygpOworIAorICAgICBRWGNiU2NyZWVuICpjdXJyZW50U2NyZWVuID0geGNiU2Ny ZWVuKCk7CitAQCAtNjkzLDkgKzY4OCw2IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0VmlzaWJsZShi b29sIHZpc2libGUpCisgCisgdm9pZCBRWGNiV2luZG93OjpzaG93KCkKKyB7CistICAgIGlmIChz aG91bGREZWZlclRhc2soVGFzazo6TWFwKSkKKy0gICAgICAgIHJldHVybjsKKy0KKyAgICAgaWYg KHdpbmRvdygpLT5pc1RvcExldmVsKCkpIHsKKyAKKyAgICAgICAgIC8vIHVwZGF0ZSBXTV9OT1JN QUxfSElOVFMKK0BAIC03MDYsNyArNjk4LDcgQEAgdm9pZCBRWGNiV2luZG93OjpzaG93KCkKKyAg ICAgICAgIGlmIChpc1RyYW5zaWVudCh3aW5kb3coKSkpIHsKKyAgICAgICAgICAgICBjb25zdCBR V2luZG93ICp0cCA9IHdpbmRvdygpLT50cmFuc2llbnRQYXJlbnQoKTsKKyAgICAgICAgICAgICBp ZiAodHAgJiYgdHAtPmhhbmRsZSgpKQorLSAgICAgICAgICAgICAgICB0cmFuc2llbnRYY2JQYXJl bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBRWGNiV2luZG93ICo+KHRwLT5oYW5kbGUoKSktPndpbklk KCk7CisrICAgICAgICAgICAgICAgIHRyYW5zaWVudFhjYlBhcmVudCA9IHRwLT5oYW5kbGUoKS0+ d2luSWQoKTsKKyAgICAgICAgICAgICAvLyBEZWZhdWx0IHRvIGNsaWVudCBsZWFkZXIgaWYgdGhl cmUgaXMgbm8gdHJhbnNpZW50IHBhcmVudCwgZWxzZSBtb2RhbCBkaWFsb2dzIGNhbgorICAgICAg ICAgICAgIC8vIGJlIGhpZGRlbiBieSB0aGVpciBwYXJlbnRzLgorICAgICAgICAgICAgIGlmICgh dHJhbnNpZW50WGNiUGFyZW50KQorQEAgLTc0NiwxMCArNzM4LDYgQEAgdm9pZCBRWGNiV2luZG93 OjpzaG93KCkKKyAKKyB2b2lkIFFYY2JXaW5kb3c6OmhpZGUoKQorIHsKKy0gICAgaWYgKHNob3Vs ZERlZmVyVGFzayhUYXNrOjpVbm1hcCkpCistICAgICAgICByZXR1cm47CistCistICAgIG1fd21T dGF0ZVZhbGlkID0gZmFsc2U7CisgICAgIHhjYl91bm1hcF93aW5kb3coeGNiX2Nvbm5lY3Rpb24o KSwgbV93aW5kb3cpOworIAorICAgICAvLyBzZW5kIHN5bnRoZXRpYyBVbm1hcE5vdGlmeSBldmVu dCBhY2NvcmRpbmcgdG8gaWNjY20gNC4xLjQKK0BAIC05MDksOSArODk3LDYgQEAgUVhjYldpbmRv dzo6TmV0V21TdGF0ZXMgUVhjYldpbmRvdzo6bmV0V21TdGF0ZXMoKQorIAorIHZvaWQgUVhjYldp bmRvdzo6c2V0V2luZG93RmxhZ3MoUXQ6OldpbmRvd0ZsYWdzIGZsYWdzKQorIHsKKy0gICAgaWYg KHNob3VsZERlZmVyVGFzayhUYXNrOjpTZXRXaW5kb3dGbGFncykpCistICAgICAgICByZXR1cm47 CistCisgICAgIFF0OjpXaW5kb3dUeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxRdDo6V2luZG93VHlw ZT4oaW50KGZsYWdzICYgUXQ6OldpbmRvd1R5cGVfTWFzaykpOworIAorICAgICBpZiAodHlwZSA9 PSBRdDo6VG9vbFRpcCkKK0BAIC05NDEsOCArOTI2LDYgQEAgdm9pZCBRWGNiV2luZG93OjpzZXRX aW5kb3dGbGFncyhRdDo6V2luZG93RmxhZ3MgZmxhZ3MpCisgCisgICAgIHNldFRyYW5zcGFyZW50 Rm9yTW91c2VFdmVudHMoZmxhZ3MgJiBRdDo6V2luZG93VHJhbnNwYXJlbnRGb3JJbnB1dCk7Cisg ICAgIHVwZGF0ZURvZXNOb3RBY2NlcHRGb2N1cyhmbGFncyAmIFF0OjpXaW5kb3dEb2VzTm90QWNj ZXB0Rm9jdXMpOworLQorLSAgICBtX2lzV21NYW5hZ2VkV2luZG93ID0gIShmbGFncyAmIFF0OjpY MTFCeXBhc3NXaW5kb3dNYW5hZ2VySGludCk7CisgfQorIAorIHZvaWQgUVhjYldpbmRvdzo6c2V0 TW90aWZXbUhpbnRzKFF0OjpXaW5kb3dGbGFncyBmbGFncykKK0BAIC0xMTQyLDkgKzExMjUsNiBA QCB2b2lkIFFYY2JXaW5kb3c6OnNldFdpbmRvd1N0YXRlKFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGUp CisgICAgIGlmIChzdGF0ZSA9PSBtX3dpbmRvd1N0YXRlKQorICAgICAgICAgcmV0dXJuOworIAor LSAgICBpZiAoc2hvdWxkRGVmZXJUYXNrKFRhc2s6OlNldFdpbmRvd1N0YXRlKSkKKy0gICAgICAg IHJldHVybjsKKy0KKyAgICAgLy8gdW5zZXQgb2xkIHN0YXRlCisgICAgIGlmIChtX3dpbmRvd1N0 YXRlICYgUXQ6OldpbmRvd01pbmltaXplZCkKKyAgICAgICAgIHhjYl9tYXBfd2luZG93KHhjYl9j b25uZWN0aW9uKCksIG1fd2luZG93KTsKK0BAIC0xMzUwLDYgKzEzMzAsMTIgQEAgdm9pZCBRWGNi V2luZG93OjpzZXRXaW5kb3dJY29uKGNvbnN0IFFJY29uICZpY29uKQorICAgICB9CisgCisgICAg IGlmICghaWNvbl9kYXRhLmlzRW1wdHkoKSkgeworKyAgICAgICAgLy8gSWdub3JlIGljb24gZXhj ZWVkaW5nIG1heGltdW0geGNiIHJlcXVlc3QgbGVuZ3RoCisrICAgICAgICBpZiAoaWNvbl9kYXRh LnNpemUoKSA+IHhjYl9nZXRfbWF4aW11bV9yZXF1ZXN0X2xlbmd0aCh4Y2JfY29ubmVjdGlvbigp KSkgeworKyAgICAgICAgICAgIHFXYXJuaW5nKCJJZ25vcmluZyB3aW5kb3cgaWNvbjogU2l6ZSAl bGx1IGV4Y2VlZHMgbWF4aW11bSB4Y2IgcmVxdWVzdCBsZW5ndGggJXUuIiwKKysgICAgICAgICAg ICAgICAgICAgICBpY29uX2RhdGEuc2l6ZSgpLCB4Y2JfZ2V0X21heGltdW1fcmVxdWVzdF9sZW5n dGgoeGNiX2Nvbm5lY3Rpb24oKSkpOworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0K KyAgICAgICAgIHhjYl9jaGFuZ2VfcHJvcGVydHkoeGNiX2Nvbm5lY3Rpb24oKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgWENCX1BST1BfTU9ERV9SRVBMQUNFLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtX3dpbmRvdywKK0BAIC0xNjM5LDcgKzE2MjUsNyBAQCB2b2lkIFFY Y2JXaW5kb3c6OnNldFdtV2luZG93VHlwZShRWGNiV2luZG93RnVuY3Rpb25zOjpXbVdpbmRvd1R5 cGVzIHR5cGVzLCBRdDo6VworICAgICAgICAgYnJlYWs7CisgICAgIH0KKyAKKy0gICAgaWYgKChm bGFncyAmIFF0OjpGcmFtZWxlc3NXaW5kb3dIaW50KSAmJiAhKHR5cGUgJiBRWGNiV2luZG93RnVu Y3Rpb25zOjpLZGVPdmVycmlkZSkpIHsKKysgICAgaWYgKChmbGFncyAmIFF0OjpGcmFtZWxlc3NX aW5kb3dIaW50KSAmJiAhKHR5cGVzICYgUVhjYldpbmRvd0Z1bmN0aW9uczo6S2RlT3ZlcnJpZGUp KSB7CisgICAgICAgICAvLyBvdmVycmlkZSBuZXR3bSB0eXBlIC0gcXVpY2sgYW5kIGVhc3kgZm9y IEtERSBub2JvcmRlcgorICAgICAgICAgYXRvbXMuYXBwZW5kKGF0b20oUVhjYkF0b206Ol9LREVf TkVUX1dNX1dJTkRPV19UWVBFX09WRVJSSURFKSk7CisgICAgIH0KK0BAIC0xODk0LDEwICsxODgw LDYgQEAgdm9pZCBRWGNiV2luZG93OjpoYW5kbGVVbm1hcE5vdGlmeUV2ZW50KGNvbnN0IHhjYl91 bm1hcF9ub3RpZnlfZXZlbnRfdCAqZXZlbnQpCisgICAgIGlmIChldmVudC0+d2luZG93ID09IG1f d2luZG93KSB7CisgICAgICAgICBtX21hcHBlZCA9IGZhbHNlOworICAgICAgICAgUVdpbmRvd1N5 c3RlbUludGVyZmFjZTo6aGFuZGxlRXhwb3NlRXZlbnQod2luZG93KCksIFFSZWdpb24oKSk7Cist ICAgICAgICBpZiAoIW1faXNXbU1hbmFnZWRXaW5kb3cgfHwgcGFyZW50KCkpIHsKKy0gICAgICAg ICAgICBtX3dtU3RhdGVWYWxpZCA9IHRydWU7CistICAgICAgICAgICAgaGFuZGxlRGVmZXJyZWRU YXNrcygpOworLSAgICAgICAgfQorICAgICB9CisgfQorIAorQEAgLTIyMTIsOTggKzIxOTQsMzAg QEAgdm9pZCBRWGNiV2luZG93OjpoYW5kbGVMZWF2ZU5vdGlmeUV2ZW50KGNvbnN0IHhjYl9sZWF2 ZV9ub3RpZnlfZXZlbnRfdCAqZXZlbnQpCisgICAgIGhhbmRsZUxlYXZlTm90aWZ5RXZlbnQoZXZl bnQtPnJvb3RfeCwgZXZlbnQtPnJvb3RfeSwgZXZlbnQtPm1vZGUsIGV2ZW50LT5kZXRhaWwsIGV2 ZW50LT50aW1lKTsKKyB9CisgCistYm9vbCBRWGNiV2luZG93OjpzaG91bGREZWZlclRhc2soVGFz ayB0YXNrKQorLXsKKy0gICAgaWYgKG1fd21TdGF0ZVZhbGlkKQorLSAgICAgICAgcmV0dXJuIGZh bHNlOworLQorLSAgICBtX2RlZmVycmVkVGFza3MuYXBwZW5kKHRhc2spOworLSAgICByZXR1cm4g dHJ1ZTsKKy19CistCistdm9pZCBRWGNiV2luZG93OjpoYW5kbGVEZWZlcnJlZFRhc2tzKCkKKy17 CistICAgIFFfQVNTRVJUKG1fd21TdGF0ZVZhbGlkID09IHRydWUpOworLSAgICBpZiAobV9kZWZl cnJlZFRhc2tzLmlzRW1wdHkoKSkKKy0gICAgICAgIHJldHVybjsKKy0KKy0gICAgYm9vbCBtYXAg PSBmYWxzZTsKKy0gICAgYm9vbCB1bm1hcCA9IGZhbHNlOworLQorLSAgICBRVmVjdG9yPFRhc2s+ IHRhc2tzOworLSAgICBmb3IgKGF1dG8gdGFza0l0ID0gbV9kZWZlcnJlZFRhc2tzLnJiZWdpbigp OyB0YXNrSXQgIT0gbV9kZWZlcnJlZFRhc2tzLnJlbmQoKTsgKyt0YXNrSXQpIHsKKy0gICAgICAg IGlmICghdGFza3MuY29udGFpbnMoKnRhc2tJdCkpCistICAgICAgICAgICAgdGFza3MucHJlcGVu ZCgqdGFza0l0KTsKKy0gICAgfQorLQorLSAgICBmb3IgKFRhc2sgdGFzayA6IHRhc2tzKSB7Cist ICAgICAgICBzd2l0Y2ggKHRhc2spIHsKKy0gICAgICAgIGNhc2UgVGFzazo6TWFwOgorLSAgICAg ICAgICAgIG1hcCA9IHRydWU7CistICAgICAgICAgICAgdW5tYXAgPSBmYWxzZTsKKy0gICAgICAg ICAgICBicmVhazsKKy0gICAgICAgIGNhc2UgVGFzazo6VW5tYXA6CistICAgICAgICAgICAgdW5t YXAgPSB0cnVlOworLSAgICAgICAgICAgIG1hcCA9IGZhbHNlOworLSAgICAgICAgICAgIGJyZWFr OworLSAgICAgICAgY2FzZSBUYXNrOjpTZXRHZW9tZXRyeToKKy0gICAgICAgICAgICBzZXRHZW9t ZXRyeShtX2RlZmVycmVkR2VvbWV0cnkpOworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAg Y2FzZSBUYXNrOjpTZXRXaW5kb3dGbGFnczoKKy0gICAgICAgICAgICBzZXRXaW5kb3dGbGFncyh3 aW5kb3coKS0+ZmxhZ3MoKSk7CistICAgICAgICAgICAgYnJlYWs7CistICAgICAgICBjYXNlIFRh c2s6OlNldFdpbmRvd1N0YXRlOgorLSAgICAgICAgICAgIHNldFdpbmRvd1N0YXRlKHdpbmRvdygp LT53aW5kb3dTdGF0ZSgpKTsKKy0gICAgICAgICAgICBicmVhazsKKy0gICAgICAgIH0KKy0gICAg fQorLSAgICBtX2RlZmVycmVkVGFza3MuY2xlYXIoKTsKKy0KKy0gICAgaWYgKG1hcCkgeworLSAg ICAgICAgUV9BU1NFUlQodW5tYXAgPT0gZmFsc2UpOworLSAgICAgICAgc2hvdygpOworLSAgICB9 CistICAgIGlmICh1bm1hcCkgeworLSAgICAgICAgUV9BU1NFUlQobWFwID09IGZhbHNlKTsKKy0g ICAgICAgIGhpZGUoKTsKKy0gICAgfQorLX0KKy0KKyB2b2lkIFFYY2JXaW5kb3c6OmhhbmRsZVBy b3BlcnR5Tm90aWZ5RXZlbnQoY29uc3QgeGNiX3Byb3BlcnR5X25vdGlmeV9ldmVudF90ICpldmVu dCkKKyB7CisgICAgIGNvbm5lY3Rpb24oKS0+c2V0VGltZShldmVudC0+dGltZSk7CisgCistICAg IGNvbnN0IGJvb2wgd21TdGF0ZUNoYW5nZWQgPSBldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9t OjpXTV9TVEFURSk7CistICAgIGNvbnN0IGJvb2wgbmV0V21TdGF0ZUNoYW5nZWQgPSBldmVudC0+ YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpfTkVUX1dNX1NUQVRFKTsKKy0gICAgaWYgKG5ldFdtU3Rh dGVDaGFuZ2VkIHx8IHdtU3RhdGVDaGFuZ2VkKSB7CistICAgICAgICBpZiAod21TdGF0ZUNoYW5n ZWQgJiYgIW1fd21TdGF0ZVZhbGlkICYmIG1faXNXbU1hbmFnZWRXaW5kb3cpIHsKKy0gICAgICAg ICAgICAvLyBJQ0NDTSA0LjEuNAorLSAgICAgICAgICAgIC8vIENsaWVudHMgdGhhdCB3YW50IHRv IHJlLXVzZSBhIGNsaWVudCB3aW5kb3cgKGUuZy4gYnkgbWFwcGluZyBpdCBhZ2FpbikKKy0gICAg ICAgICAgICAvLyBhZnRlciB3aXRoZHJhd2luZyBpdCBtdXN0IHdhaXQgZm9yIHRoZSB3aXRoZHJh d2FsIHRvIGJlIGNvbXBsZXRlIGJlZm9yZQorLSAgICAgICAgICAgIC8vIHByb2NlZWRpbmcuIFRo ZSBwcmVmZXJyZWQgbWV0aG9kIGZvciBkb2luZyB0aGlzIGlzIGZvciBjbGllbnRzIHRvIHdhaXQg Zm9yCistICAgICAgICAgICAgLy8gYSB3aW5kb3cgbWFuYWdlciB0byB1cGRhdGUgb3IgcmVtb3Zl IHRoZSBXTV9TVEFURSBwcm9wZXJ0eS4KKy0gICAgICAgICAgICBtX3dtU3RhdGVWYWxpZCA9IHRy dWU7CistICAgICAgICAgICAgaGFuZGxlRGVmZXJyZWRUYXNrcygpOworLSAgICAgICAgfQorLSAg ICAgICAgaWYgKGV2ZW50LT5zdGF0ZSA9PSBYQ0JfUFJPUEVSVFlfREVMRVRFKQorKyAgICBjb25z dCBib29sIHByb3BlcnR5RGVsZXRlZCA9IGV2ZW50LT5zdGF0ZSA9PSBYQ0JfUFJPUEVSVFlfREVM RVRFOworKworKyAgICBpZiAoZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6X05FVF9XTV9T VEFURSkgfHwgZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6V01fU1RBVEUpKSB7CisrICAg ICAgICBpZiAocHJvcGVydHlEZWxldGVkKQorICAgICAgICAgICAgIHJldHVybjsKKyAKKy0gICAg ICAgIGlmICh3bVN0YXRlQ2hhbmdlZCkgeworKyAgICAgICAgUXQ6OldpbmRvd1N0YXRlcyBuZXdT dGF0ZSA9IFF0OjpXaW5kb3dOb1N0YXRlOworKworKyAgICAgICAgaWYgKGV2ZW50LT5hdG9tID09 IGF0b20oUVhjYkF0b206OldNX1NUQVRFKSkgeyAvLyBXTV9TVEFURTogUXVpY2sgY2hlY2sgZm9y ICdNaW5pbWl6ZScuCisgICAgICAgICAgICAgYXV0byByZXBseSA9IFFfWENCX1JFUExZKHhjYl9n ZXRfcHJvcGVydHksIHhjYl9jb25uZWN0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDAsIG1fd2luZG93LCBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhDQl9BVE9NX0FOWSwgMCwgMTAyNCk7 CisgICAgICAgICAgICAgaWYgKHJlcGx5ICYmIHJlcGx5LT5mb3JtYXQgPT0gMzIgJiYgcmVwbHkt PnR5cGUgPT0gYXRvbShRWGNiQXRvbTo6V01fU1RBVEUpKSB7CistICAgICAgICAgICAgICAgIGF1 dG8gZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IHF1aW50MzIgKj4oeGNiX2dldF9wcm9wZXJ0eV92 YWx1ZShyZXBseS5nZXQoKSkpOworLSAgICAgICAgICAgICAgICBpZiAocmVwbHktPmxlbmd0aCAh PSAwKSB7CistICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIGNoYW5nZWRUb1dpdGhkcmF3 biA9IGRhdGFbMF0gPT0gWENCX0lDQ0NNX1dNX1NUQVRFX1dJVEhEUkFXTjsKKy0gICAgICAgICAg ICAgICAgICAgIGNvbnN0IGJvb2wgY2hhbmdlZFRvSWNvbmljID0gZGF0YVswXSA9PSBYQ0JfSUND Q01fV01fU1RBVEVfSUNPTklDOworLSAgICAgICAgICAgICAgICAgICAgbV9taW5pbWl6ZWQgPSBj aGFuZ2VkVG9JY29uaWMgfHwgKGNoYW5nZWRUb1dpdGhkcmF3biAmJiBtX21pbmltaXplZCk7Cist ICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgY29uc3QgcXVpbnQzMiAqZGF0YSA9 IChjb25zdCBxdWludDMyICopeGNiX2dldF9wcm9wZXJ0eV92YWx1ZShyZXBseS5nZXQoKSk7Cisr ICAgICAgICAgICAgICAgIGlmIChyZXBseS0+bGVuZ3RoICE9IDApCisrICAgICAgICAgICAgICAg ICAgICBtX21pbmltaXplZCA9IChkYXRhWzBdID09IFhDQl9JQ0NDTV9XTV9TVEFURV9JQ09OSUMK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChkYXRhWzBdID09IFhDQl9J Q0NDTV9XTV9TVEFURV9XSVRIRFJBV04gJiYgbV9taW5pbWl6ZWQpKTsKKyAgICAgICAgICAgICB9 CisgICAgICAgICB9CisgCistICAgICAgICAvLyBfTkVUX1dNX1NUQVRFIGhhbmRsaW5nCistICAg ICAgICBRdDo6V2luZG93U3RhdGVzIG5ld1N0YXRlID0gUXQ6OldpbmRvd05vU3RhdGU7CisgICAg ICAgICBjb25zdCBOZXRXbVN0YXRlcyBzdGF0ZXMgPSBuZXRXbVN0YXRlcygpOworICAgICAgICAg Ly8gX05FVF9XTV9TVEFURV9ISURERU4gc2hvdWxkIGJlIHNldCBieSB0aGUgV2luZG93IE1hbmFn ZXIgdG8gaW5kaWNhdGUgdGhhdCBhIHdpbmRvdyB3b3VsZAorICAgICAgICAgLy8gbm90IGJlIHZp c2libGUgb24gdGhlIHNjcmVlbiBpZiBpdHMgZGVza3RvcC92aWV3cG9ydCB3ZXJlIGFjdGl2ZSBh bmQgaXRzIGNvb3JkaW5hdGVzIHdlcmUKK0BAIC0yMzI1LDYgKzIyMzksNyBAQCB2b2lkIFFYY2JX aW5kb3c6OmhhbmRsZVByb3BlcnR5Tm90aWZ5RXZlbnQoY29uc3QgeGNiX3Byb3BlcnR5X25vdGlm eV9ldmVudF90ICpldgorICAgICAgICAgICAgIGlmICgobV93aW5kb3dTdGF0ZSAmIFF0OjpXaW5k b3dNaW5pbWl6ZWQpICYmIGNvbm5lY3Rpb24oKS0+bW91c2VHcmFiYmVyKCkgPT0gdGhpcykKKyAg ICAgICAgICAgICAgICAgY29ubmVjdGlvbigpLT5zZXRNb3VzZUdyYWJiZXIobnVsbHB0cik7Cisg ICAgICAgICB9CisrICAgICAgICByZXR1cm47CisgICAgIH0gZWxzZSBpZiAoZXZlbnQtPmF0b20g PT0gYXRvbShRWGNiQXRvbTo6X05FVF9GUkFNRV9FWFRFTlRTKSkgeworICAgICAgICAgbV9kaXJ0 eUZyYW1lTWFyZ2lucyA9IHRydWU7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Bs dWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmggYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxh dGZvcm1zL3hjYi9xeGNid2luZG93LmgKK2luZGV4IDU1YWY5Mjc5YjEuLjZmNWMxZjVlZDkgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmgK KysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuaAorQEAg LTc0LDE0ICs3NCw2IEBAIHB1YmxpYzoKKyAKKyAgICAgUV9ERUNMQVJFX0ZMQUdTKE5ldFdtU3Rh dGVzLCBOZXRXbVN0YXRlKQorIAorLSAgICBlbnVtIFRhc2sgeworLSAgICAgICAgTWFwLAorLSAg ICAgICAgVW5tYXAsCistICAgICAgICBTZXRHZW9tZXRyeSwKKy0gICAgICAgIFNldFdpbmRvd0Zs YWdzLAorLSAgICAgICAgU2V0V2luZG93U3RhdGUKKy0gICAgfTsKKy0KKyAgICAgUVhjYldpbmRv dyhRV2luZG93ICp3aW5kb3cpOworICAgICB+UVhjYldpbmRvdygpOworIAorQEAgLTE1MSw5ICsx NDMsNiBAQCBwdWJsaWM6CisgCisgICAgIFFYY2JXaW5kb3cgKnRvV2luZG93KCkgb3ZlcnJpZGU7 CisgCistICAgIGJvb2wgc2hvdWxkRGVmZXJUYXNrKFRhc2sgdGFzayk7CistICAgIHZvaWQgaGFu ZGxlRGVmZXJyZWRUYXNrcygpOworLQorICAgICB2b2lkIGhhbmRsZU1vdXNlRXZlbnQoeGNiX3Rp bWVzdGFtcF90IHRpbWUsIGNvbnN0IFFQb2ludCAmbG9jYWwsIGNvbnN0IFFQb2ludCAmZ2xvYmFs LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlm aWVycywgUUV2ZW50OjpUeXBlIHR5cGUsIFF0OjpNb3VzZUV2ZW50U291cmNlIHNvdXJjZSk7Cisg CitAQCAtMjkyLDExICsyODEsNiBAQCBwcm90ZWN0ZWQ6CisgICAgIGludCBtX3N3YXBJbnRlcnZh bCA9IC0xOworIAorICAgICBxcmVhbCBtX3NpemVIaW50c1NjYWxlRmFjdG9yID0gMS4wOworLQor LSAgICBib29sIG1fd21TdGF0ZVZhbGlkID0gdHJ1ZTsKKy0gICAgUVZlY3RvcjxUYXNrPiBtX2Rl ZmVycmVkVGFza3M7CistICAgIGJvb2wgbV9pc1dtTWFuYWdlZFdpbmRvdyA9IHRydWU7CistICAg IFFSZWN0IG1fZGVmZXJyZWRHZW9tZXRyeTsKKyB9OworIAorIGNsYXNzIFFYY2JGb3JlaWduV2lu ZG93IDogcHVibGljIFFYY2JXaW5kb3cKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm10aGVtZXMvZ3RrMy9xZ3RrM21lbnUuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3JtdGhlbWVzL2d0azMvcWd0azNtZW51LmNwcAoraW5kZXggZDlkMTE3ZmFlYi4uNjQwYjQ5 ZGFhMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy9ndGsz L3FndGszbWVudS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy9n dGszL3FndGszbWVudS5jcHAKK0BAIC04NSw2ICs4NSw3IEBAIFFHdGszTWVudUl0ZW06OlFHdGsz TWVudUl0ZW0oKQorICAgICAgIG1fY2hlY2thYmxlKGZhbHNlKSwKKyAgICAgICBtX2NoZWNrZWQo ZmFsc2UpLAorICAgICAgIG1fZW5hYmxlZCh0cnVlKSwKKysgICAgICBtX2V4Y2x1c2l2ZShmYWxz ZSksCisgICAgICAgbV91bmRlcmxpbmUoZmFsc2UpLAorICAgICAgIG1faW52YWxpZCh0cnVlKSwK KyAgICAgICBtX21lbnUobnVsbHB0ciksCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5z L3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlh bG9nLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9y dGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZy5jcHAKK2luZGV4IDAwNDhiYmMxZTYuLjM5 NmU3ZjZkMWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMv eGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2cuY3BwCisrKysgYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVz a3RvcHBvcnRhbGZpbGVkaWFsb2cuY3BwCitAQCAtMTAyLDE1ICsxMDIsMTIgQEAgY29uc3QgUURC dXNBcmd1bWVudCAmb3BlcmF0b3IgPj4oY29uc3QgUURCdXNBcmd1bWVudCAmYXJnLCBRWGRnRGVz a3RvcFBvcnRhbEZpbGUKKyBjbGFzcyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2YXRl CisgeworIHB1YmxpYzoKKy0gICAgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZShR UGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9nKQorKyAgICBRWGRnRGVz a3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2YXRlKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5h dGl2ZUZpbGVEaWFsb2csIHVpbnQgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKQorICAgICAgICAg OiBuYXRpdmVGaWxlRGlhbG9nKG5hdGl2ZUZpbGVEaWFsb2cpCisrICAgICAgICAsIGZpbGVDaG9v c2VyUG9ydGFsVmVyc2lvbihmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pCisgICAgIHsgfQorIAor LSAgICBXSWQgd2luSWQgPSAwOworLSAgICBib29sIGRpcmVjdG9yeU1vZGUgPSBmYWxzZTsKKy0g ICAgYm9vbCBtb2RhbCA9IGZhbHNlOworLSAgICBib29sIG11bHRpcGxlRmlsZXMgPSBmYWxzZTsK Ky0gICAgYm9vbCBzYXZlRmlsZSA9IGZhbHNlOworKyAgICBRRXZlbnRMb29wIGxvb3A7CisgICAg IFFTdHJpbmcgYWNjZXB0TGFiZWw7CisgICAgIFFTdHJpbmcgZGlyZWN0b3J5OworICAgICBRU3Ry aW5nIHRpdGxlOworQEAgLTEyMSwxOSArMTE4LDI3IEBAIHB1YmxpYzoKKyAgICAgUVN0cmluZyBz ZWxlY3RlZE1pbWVUeXBlRmlsdGVyOworICAgICBRU3RyaW5nIHNlbGVjdGVkTmFtZUZpbHRlcjsK KyAgICAgUVN0cmluZ0xpc3Qgc2VsZWN0ZWRGaWxlczsKKy0gICAgUVBsYXRmb3JtRmlsZURpYWxv Z0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZyA9IG51bGxwdHI7CisrICAgIHN0ZDo6dW5pcXVlX3B0 cjxRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyPiBuYXRpdmVGaWxlRGlhbG9nOworKyAgICB1aW50 IGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbiA9IDA7CisrICAgIGJvb2wgZmFpbGVkVG9PcGVuID0g ZmFsc2U7CisrICAgIGJvb2wgZGlyZWN0b3J5TW9kZSA9IGZhbHNlOworKyAgICBib29sIG11bHRp cGxlRmlsZXMgPSBmYWxzZTsKKysgICAgYm9vbCBzYXZlRmlsZSA9IGZhbHNlOworIH07CisgCist UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2co UVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZykKKytRWGRnRGVza3Rv cFBvcnRhbEZpbGVEaWFsb2c6OlFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhRUGxhdGZvcm1G aWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9nLCB1aW50IGZpbGVDaG9vc2VyUG9ydGFs VmVyc2lvbikKKyAgICAgOiBRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyKCkKKy0gICAgLCBkX3B0 cihuZXcgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZShuYXRpdmVGaWxlRGlhbG9n KSkKKysgICAgLCBkX3B0cihuZXcgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZShu YXRpdmVGaWxlRGlhbG9nLCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pKQorIHsKKyAgICAgUV9E KFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7CisgCisgICAgIGlmIChkLT5uYXRpdmVGaWxl RGlhbG9nKSB7CistICAgICAgICBjb25uZWN0KGQtPm5hdGl2ZUZpbGVEaWFsb2csIFNJR05BTChh Y2NlcHQoKSksIHRoaXMsIFNJR05BTChhY2NlcHQoKSkpOworLSAgICAgICAgY29ubmVjdChkLT5u YXRpdmVGaWxlRGlhbG9nLCBTSUdOQUwocmVqZWN0KCkpLCB0aGlzLCBTSUdOQUwocmVqZWN0KCkp KTsKKysgICAgICAgIGNvbm5lY3QoZC0+bmF0aXZlRmlsZURpYWxvZy5nZXQoKSwgU0lHTkFMKGFj Y2VwdCgpKSwgdGhpcywgU0lHTkFMKGFjY2VwdCgpKSk7CisrICAgICAgICBjb25uZWN0KGQtPm5h dGl2ZUZpbGVEaWFsb2cuZ2V0KCksIFNJR05BTChyZWplY3QoKSksIHRoaXMsIFNJR05BTChyZWpl Y3QoKSkpOworICAgICB9CisrCisrICAgIGQtPmxvb3AuY29ubmVjdCh0aGlzLCBTSUdOQUwoYWNj ZXB0KCkpLCBTTE9UKHF1aXQoKSkpOworKyAgICBkLT5sb29wLmNvbm5lY3QodGhpcywgU0lHTkFM KHJlamVjdCgpKSwgU0xPVChxdWl0KCkpKTsKKyB9CisgCisgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxl RGlhbG9nOjp+UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKCkKK0BAIC0xNzcsNyArMTgyLDcg QEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OmluaXRpYWxpemVEaWFsb2coKQor ICAgICBzZXREaXJlY3Rvcnkob3B0aW9ucygpLT5pbml0aWFsRGlyZWN0b3J5KCkpOworIH0KKyAK Ky12b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6b3BlblBvcnRhbCgpCisrdm9pZCBR WGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6Om9wZW5Qb3J0YWwoUXQ6OldpbmRvd0ZsYWdzIHdp bmRvd0ZsYWdzLCBRdDo6V2luZG93TW9kYWxpdHkgd2luZG93TW9kYWxpdHksIFFXaW5kb3cgKnBh cmVudCkKKyB7CisgICAgIFFfRChRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworIAorQEAg LTE4NSwxMyArMTkwLDEzIEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVu UG9ydGFsKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUUxhdGluMVN0cmluZygiL29yZy9mcmVlZGVza3RvcC9wb3J0YWwvZGVza3Rv cCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRTGF0aW4xU3RyaW5nKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLkZpbGVDaG9vc2Vy IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGQtPnNhdmVGaWxlID8gUUxhdGluMVN0cmluZygiU2F2ZUZpbGUiKSA6IFFMYXRpbjFT dHJpbmcoIk9wZW5GaWxlIikpOworLSAgICBRU3RyaW5nIHBhcmVudFdpbmRvd0lkID0gUUxhdGlu MVN0cmluZygieDExOiIpICsgUVN0cmluZzo6bnVtYmVyKGQtPndpbklkLCAxNik7CisrICAgIFFT dHJpbmcgcGFyZW50V2luZG93SWQgPSBRTGF0aW4xU3RyaW5nKCJ4MTE6IikgKyBRU3RyaW5nOjpu dW1iZXIocGFyZW50ID8gcGFyZW50LT53aW5JZCgpIDogMCwgMTYpOworIAorICAgICBRVmFyaWFu dE1hcCBvcHRpb25zOworICAgICBpZiAoIWQtPmFjY2VwdExhYmVsLmlzRW1wdHkoKSkKKyAgICAg ICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRpbjFTdHJpbmcoImFjY2VwdF9sYWJlbCIpLCBkLT5hY2Nl cHRMYWJlbCk7CisgCistICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRpbjFTdHJpbmcoIm1vZGFsIiks IGQtPm1vZGFsKTsKKysgICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmluZygibW9kYWwiKSwg d2luZG93TW9kYWxpdHkgIT0gUXQ6Ok5vbk1vZGFsKTsKKyAgICAgb3B0aW9ucy5pbnNlcnQoUUxh dGluMVN0cmluZygibXVsdGlwbGUiKSwgZC0+bXVsdGlwbGVGaWxlcyk7CisgICAgIG9wdGlvbnMu aW5zZXJ0KFFMYXRpbjFTdHJpbmcoImRpcmVjdG9yeSIpLCBkLT5kaXJlY3RvcnlNb2RlKTsKKyAK K0BAIC0yOTAsMTAgKzI5NSwxOCBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6 b3BlblBvcnRhbCgpCisgCisgICAgIFFEQnVzUGVuZGluZ0NhbGwgcGVuZGluZ0NhbGwgPSBRREJ1 c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5hc3luY0NhbGwobWVzc2FnZSk7CisgICAgIFFEQnVz UGVuZGluZ0NhbGxXYXRjaGVyICp3YXRjaGVyID0gbmV3IFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVy KHBlbmRpbmdDYWxsKTsKKy0gICAgY29ubmVjdCh3YXRjaGVyLCAmUURCdXNQZW5kaW5nQ2FsbFdh dGNoZXI6OmZpbmlzaGVkLCB0aGlzLCBbdGhpc10gKFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyICp3 YXRjaGVyKSB7CisrICAgIGNvbm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVuZGluZ0NhbGxXYXRjaGVy OjpmaW5pc2hlZCwgdGhpcywgWz1dIChRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hlcikg eworICAgICAgICAgUURCdXNQZW5kaW5nUmVwbHk8UURCdXNPYmplY3RQYXRoPiByZXBseSA9ICp3 YXRjaGVyOworLSAgICAgICAgaWYgKHJlcGx5LmlzRXJyb3IoKSkgeworLSAgICAgICAgICAgIFFf RU1JVCByZWplY3QoKTsKKysgICAgICAgIC8vIEFueSBlcnJvciBtZWFucyB0aGUgZGlhbG9nIGlz IG5vdCBzaG93biBhbmQgd2UgbmVlZCB0byBmYWxsYmFjaworKyAgICAgICAgZC0+ZmFpbGVkVG9P cGVuID0gcmVwbHkuaXNFcnJvcigpOworKyAgICAgICAgaWYgKGQtPmZhaWxlZFRvT3Blbikgewor KyAgICAgICAgICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nKSB7CisrICAgICAgICAgICAgICAg IGQtPm5hdGl2ZUZpbGVEaWFsb2ctPnNob3cod2luZG93RmxhZ3MsIHdpbmRvd01vZGFsaXR5LCBw YXJlbnQpOworKyAgICAgICAgICAgICAgICBpZiAoZC0+bG9vcC5pc1J1bm5pbmcoKSkKKysgICAg ICAgICAgICAgICAgICAgIGQtPm5hdGl2ZUZpbGVEaWFsb2ctPmV4ZWMoKTsKKysgICAgICAgICAg ICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICBRX0VNSVQgcmVqZWN0KCk7CisrICAgICAgICAg ICAgfQorICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBRREJ1c0Nvbm5lY3Rpb246OnNl c3Npb25CdXMoKS5jb25uZWN0KG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXBseS52YWx1ZSgpLnBhdGgoKSwKK0BAIC0zMDIsNiAr MzE1LDcgQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6Om9wZW5Qb3J0YWwoKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNMT1Qo Z290UmVzcG9uc2UodWludCxRVmFyaWFudE1hcCkpKTsKKyAgICAgICAgIH0KKysgICAgICAgIHdh dGNoZXItPmRlbGV0ZUxhdGVyKCk7CisgICAgIH0pOworIH0KKyAKK0BAIC0zMjYsNyArMzQwLDcg QEAgUVVybCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OmRpcmVjdG9yeSgpIGNvbnN0Cisg eworICAgICBRX0QoY29uc3QgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKKy0gICAg aWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmls ZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeSB8fCBvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZp bGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnlPbmx5KSkKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVE aWFsb2cgJiYgdXNlTmF0aXZlRmlsZURpYWxvZygpKQorICAgICAgICAgcmV0dXJuIGQtPm5hdGl2 ZUZpbGVEaWFsb2ctPmRpcmVjdG9yeSgpOworIAorICAgICByZXR1cm4gZC0+ZGlyZWN0b3J5Owor QEAgLTM0OCw3ICszNjIsNyBAQCBRTGlzdDxRVXJsPiBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFs b2c6OnNlbGVjdGVkRmlsZXMoKSBjb25zdAorIHsKKyAgICAgUV9EKGNvbnN0IFFYZGdEZXNrdG9w UG9ydGFsRmlsZURpYWxvZyk7CisgCistICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIChv cHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnkgfHwg b3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5T25s eSkpCisrICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIHVzZU5hdGl2ZUZpbGVEaWFsb2co KSkKKyAgICAgICAgIHJldHVybiBkLT5uYXRpdmVGaWxlRGlhbG9nLT5zZWxlY3RlZEZpbGVzKCk7 CisgCisgICAgIFFMaXN0PFFVcmw+IGZpbGVzOworQEAgLTQwMywxNiArNDE3LDEzIEBAIHZvaWQg UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpleGVjKCkKKyB7CisgICAgIFFfRChRWGRnRGVz a3RvcFBvcnRhbEZpbGVEaWFsb2cpOworIAorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAm JiAob3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5 IHx8IG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9y eU9ubHkpKSB7CisrICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIHVzZU5hdGl2ZUZpbGVE aWFsb2coKSkgeworICAgICAgICAgZC0+bmF0aXZlRmlsZURpYWxvZy0+ZXhlYygpOworICAgICAg ICAgcmV0dXJuOworICAgICB9CisgCisgICAgIC8vIEhBQ0sgd2UgaGF2ZSB0byBhdm9pZCByZXR1 cm5pbmcgdW50aWwgd2UgZW1pdCB0aGF0IHRoZSBkaWFsb2cgd2FzIGFjY2VwdGVkIG9yIHJlamVj dGVkCistICAgIFFFdmVudExvb3AgbG9vcDsKKy0gICAgbG9vcC5jb25uZWN0KHRoaXMsIFNJR05B TChhY2NlcHQoKSksIFNMT1QocXVpdCgpKSk7CistICAgIGxvb3AuY29ubmVjdCh0aGlzLCBTSUdO QUwocmVqZWN0KCkpLCBTTE9UKHF1aXQoKSkpOworLSAgICBsb29wLmV4ZWMoKTsKKysgICAgZC0+ bG9vcC5leGVjKCk7CisgfQorIAorIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpo aWRlKCkKK0BAIC00MjksMTMgKzQ0MCwxMCBAQCBib29sIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURp YWxvZzo6c2hvdyhRdDo6V2luZG93RmxhZ3Mgd2luZG93RmxhZ3MsIFF0OjpXaW5kb3dNbworIAor ICAgICBpbml0aWFsaXplRGlhbG9nKCk7CisgCistICAgIGQtPm1vZGFsID0gd2luZG93TW9kYWxp dHkgIT0gUXQ6Ok5vbk1vZGFsOworLSAgICBkLT53aW5JZCA9IHBhcmVudCA/IHBhcmVudC0+d2lu SWQoKSA6IDA7CistCistICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIChvcHRpb25zKCkt PmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnkgfHwgb3B0aW9ucygp LT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5T25seSkpCisrICAg IGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIHVzZU5hdGl2ZUZpbGVEaWFsb2coT3BlbkZhbGxi YWNrKSkKKyAgICAgICAgIHJldHVybiBkLT5uYXRpdmVGaWxlRGlhbG9nLT5zaG93KHdpbmRvd0Zs YWdzLCB3aW5kb3dNb2RhbGl0eSwgcGFyZW50KTsKKyAKKy0gICAgb3BlblBvcnRhbCgpOworKyAg ICBvcGVuUG9ydGFsKHdpbmRvd0ZsYWdzLCB3aW5kb3dNb2RhbGl0eSwgcGFyZW50KTsKKyAKKyAg ICAgcmV0dXJuIHRydWU7CisgfQorQEAgLTQ2NSw0ICs0NzMsMjEgQEAgdm9pZCBRWGRnRGVza3Rv cFBvcnRhbEZpbGVEaWFsb2c6OmdvdFJlc3BvbnNlKHVpbnQgcmVzcG9uc2UsIGNvbnN0IFFWYXJp YW50TWFwICYKKyAgICAgfQorIH0KKyAKKytib29sIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxv Zzo6dXNlTmF0aXZlRmlsZURpYWxvZyhRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OkZhbGxi YWNrVHlwZSBmYWxsYmFja1R5cGUpIGNvbnN0CisreworKyAgICBRX0QoY29uc3QgUVhkZ0Rlc2t0 b3BQb3J0YWxGaWxlRGlhbG9nKTsKKysKKysgICAgaWYgKGQtPmZhaWxlZFRvT3BlbiAmJiBmYWxs YmFja1R5cGUgIT0gT3BlbkZhbGxiYWNrKQorKyAgICAgICAgcmV0dXJuIHRydWU7CisrCisrICAg IGlmIChkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPCAzKSB7CisrICAgICAgICBpZiAob3B0 aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5KQorKyAg ICAgICAgICAgIHJldHVybiB0cnVlOworKyAgICAgICAgZWxzZSBpZiAob3B0aW9ucygpLT5maWxl TW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5T25seSkKKysgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKysgICAgfQorKworKyAgICByZXR1cm4gZmFsc2U7CisrfQorKworIFFU X0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10 aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2dfcC5oIGIv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rl c2t0b3Bwb3J0YWxmaWxlZGlhbG9nX3AuaAoraW5kZXggNGY0ZGU5NmVjZi4uNjVlMjJhNWNmMiAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9w cG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZ19wLmgKKysrKyBiL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFs ZmlsZWRpYWxvZ19wLmgKK0BAIC01MSw2ICs1MSwxMSBAQCBjbGFzcyBRWGRnRGVza3RvcFBvcnRh bEZpbGVEaWFsb2cgOiBwdWJsaWMgUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlcgorICAgICBRX09C SkVDVAorICAgICBRX0RFQ0xBUkVfUFJJVkFURShRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cp CisgcHVibGljOgorKyAgICBlbnVtIEZhbGxiYWNrVHlwZSB7CisrICAgICAgICBHZW5lcmljRmFs bGJhY2ssCisrICAgICAgICBPcGVuRmFsbGJhY2sKKysgICAgfTsKKysKKyAgICAgZW51bSBDb25k aXRpb25UeXBlIDogdWludCB7CisgICAgICAgICBHbG9iYWxQYXR0ZXJuID0gMCwKKyAgICAgICAg IE1pbWVUeXBlID0gMQorQEAgLTY5LDcgKzc0LDcgQEAgcHVibGljOgorICAgICB9OworICAgICB0 eXBlZGVmIFFWZWN0b3I8RmlsdGVyPiBGaWx0ZXJMaXN0OworIAorLSAgICBRWGRnRGVza3RvcFBv cnRhbEZpbGVEaWFsb2coUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxv ZyA9IG51bGxwdHIpOworKyAgICBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coUVBsYXRmb3Jt RmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZyA9IG51bGxwdHIsIHVpbnQgZmlsZUNo b29zZXJQb3J0YWxWZXJzaW9uID0gMCk7CisgICAgIH5RWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFs b2coKTsKKyAKKyAgICAgYm9vbCBkZWZhdWx0TmFtZUZpbHRlckRpc2FibGVzKCkgY29uc3Qgb3Zl cnJpZGU7CitAQCAtOTIsNyArOTcsOCBAQCBwcml2YXRlIFFfU0xPVFM6CisgCisgcHJpdmF0ZToK KyAgICAgdm9pZCBpbml0aWFsaXplRGlhbG9nKCk7CistICAgIHZvaWQgb3BlblBvcnRhbCgpOwor KyAgICB2b2lkIG9wZW5Qb3J0YWwoUXQ6OldpbmRvd0ZsYWdzIHdpbmRvd0ZsYWdzLCBRdDo6V2lu ZG93TW9kYWxpdHkgd2luZG93TW9kYWxpdHksIFFXaW5kb3cgKnBhcmVudCk7CisrICAgIGJvb2wg dXNlTmF0aXZlRmlsZURpYWxvZyhGYWxsYmFja1R5cGUgZmFsbGJhY2tUeXBlID0gR2VuZXJpY0Zh bGxiYWNrKSBjb25zdDsKKyAKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nUHJpdmF0ZT4gZF9wdHI7CisgfTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Bs dWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbHRo ZW1lLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9y dGFsL3F4ZGdkZXNrdG9wcG9ydGFsdGhlbWUuY3BwCitpbmRleCBmYjMyNGFmYmQ4Li5iODA5NTAz MTIyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rl c2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWx0aGVtZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFs dGhlbWUuY3BwCitAQCAtMTExLDYgKzExMSw3IEBAIFFYZGdEZXNrdG9wUG9ydGFsVGhlbWU6OlFY ZGdEZXNrdG9wUG9ydGFsVGhlbWUoKQorICAgICAgICAgaWYgKHJlcGx5LmlzVmFsaWQoKSkgewor ICAgICAgICAgICAgIGQtPmZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbiA9IHJlcGx5LnZhbHVlKCku dG9VSW50KCk7CisgICAgICAgICB9CisrICAgICAgICB3YXRjaGVyLT5kZWxldGVMYXRlcigpOwor ICAgICB9KTsKKyB9CisgCitAQCAtMTUyLDExICsxNTMsMTIgQEAgUVBsYXRmb3JtRGlhbG9nSGVs cGVyKiBRWGRnRGVza3RvcFBvcnRhbFRoZW1lOjpjcmVhdGVQbGF0Zm9ybURpYWxvZ0hlbHBlcihE aWFsb2cKKyB7CisgICAgIFFfRChjb25zdCBRWGRnRGVza3RvcFBvcnRhbFRoZW1lKTsKKyAKKy0g ICAgaWYgKHR5cGUgPT0gRmlsZURpYWxvZykgeworKyAgICBpZiAodHlwZSA9PSBGaWxlRGlhbG9n ICYmIGQtPmZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbikgeworICAgICAgICAgLy8gT2xkZXIgdmVy c2lvbnMgb2YgRmlsZUNob29zZXIgcG9ydGFsIGRvbid0IHN1cHBvcnQgb3BlbmluZyBkaXJlY3Rv cmllcywgdGhlcmVmb3JlIHdlIGZhbGxiYWNrCisgICAgICAgICAvLyB0byBuYXRpdmUgZmlsZSBk aWFsb2cgb3BlbmVkIGluc2lkZSB0aGUgc2FuZGJveCB0byBvcGVuIGEgZGlyZWN0b3J5LgorLSAg ICAgICAgaWYgKGQtPmZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbiA8IDMgJiYgZC0+YmFzZVRoZW1l LT51c2VQbGF0Zm9ybU5hdGl2ZURpYWxvZyh0eXBlKSkKKy0gICAgICAgICAgICByZXR1cm4gbmV3 IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhzdGF0aWNfY2FzdDxRUGxhdGZvcm1GaWxlRGlh bG9nSGVscGVyKj4oZC0+YmFzZVRoZW1lLT5jcmVhdGVQbGF0Zm9ybURpYWxvZ0hlbHBlcih0eXBl KSkpOworKyAgICAgICAgaWYgKGQtPmJhc2VUaGVtZS0+dXNlUGxhdGZvcm1OYXRpdmVEaWFsb2co dHlwZSkpCisrICAgICAgICAgICAgcmV0dXJuIG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFs b2coc3RhdGljX2Nhc3Q8UVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlcio+KGQtPmJhc2VUaGVtZS0+ Y3JlYXRlUGxhdGZvcm1EaWFsb2dIZWxwZXIodHlwZSkpLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPmZpbGVDaG9vc2VyUG9ydGFsVmVyc2lv bik7CisgCisgICAgICAgICByZXR1cm4gbmV3IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzsK KyAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vw cy9xY3Vwc3ByaW50ZW5naW5lLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQv Y3Vwcy9xY3Vwc3ByaW50ZW5naW5lLmNwcAoraW5kZXggNDNkNWUxMTlhZC4uMWY5Y2JjNDU2NSAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3By aW50ZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBz L3FjdXBzcHJpbnRlbmdpbmUuY3BwCitAQCAtODksOCArODksMTAgQEAgdm9pZCBRQ3Vwc1ByaW50 RW5naW5lOjpzZXRQcm9wZXJ0eShQcmludEVuZ2luZVByb3BlcnR5S2V5IGtleSwgY29uc3QgUVZh cmlhbnQgJnYKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIFBQS19EdXBsZXg6IHsKKyAgICAg ICAgIFFQcmludDo6RHVwbGV4TW9kZSBtb2RlID0gUVByaW50OjpEdXBsZXhNb2RlKHZhbHVlLnRv SW50KCkpOworLSAgICAgICAgaWYgKG1vZGUgIT0gZC0+ZHVwbGV4ICYmIGQtPm1fcHJpbnREZXZp Y2Uuc3VwcG9ydGVkRHVwbGV4TW9kZXMoKS5jb250YWlucyhtb2RlKSkKKysgICAgICAgIGlmIChk LT5tX3ByaW50RGV2aWNlLnN1cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMobW9kZSkpIHsK KyAgICAgICAgICAgICBkLT5kdXBsZXggPSBtb2RlOworKyAgICAgICAgICAgIGQtPmR1cGxleFJl cXVlc3RlZEV4cGxpY2l0bHkgPSB0cnVlOworKyAgICAgICAgfQorICAgICAgICAgYnJlYWs7Cisg ICAgIH0KKyAgICAgY2FzZSBQUEtfUHJpbnRlck5hbWU6CitAQCAtMjc3LDkgKzI3OSwxMiBAQCB2 b2lkIFFDdXBzUHJpbnRFbmdpbmVQcml2YXRlOjpjaGFuZ2VQcmludGVyKGNvbnN0IFFTdHJpbmcg Jm5ld1ByaW50ZXIpCisgICAgIG1fcHJpbnREZXZpY2Uuc3dhcChwcmludERldmljZSk7CisgICAg IHByaW50ZXJOYW1lID0gbV9wcmludERldmljZS5pZCgpOworIAorLSAgICAvLyBDaGVjayBpZiBu ZXcgcHJpbnRlciBzdXBwb3J0cyBjdXJyZW50IHNldHRpbmdzLCBvdGhlcndpc2UgdXMgZGVmYXVs dHMKKy0gICAgaWYgKGR1cGxleCAhPSBRUHJpbnQ6OkR1cGxleEF1dG8gJiYgIW1fcHJpbnREZXZp Y2Uuc3VwcG9ydGVkRHVwbGV4TW9kZXMoKS5jb250YWlucyhkdXBsZXgpKQorKyAgICAvLyBpbiBj YXNlIGEgZHVwbGV4IHZhbHVlIHdhcyBleHBsaWNpdGx5IHNldCwgY2hlY2sgaWYgbmV3IHByaW50 ZXIgc3VwcG9ydHMgY3VycmVudCB2YWx1ZSwKKysgICAgLy8gb3RoZXJ3aXNlIHVzZSBkZXZpY2Ug ZGVmYXVsdAorKyAgICBpZiAoIWR1cGxleFJlcXVlc3RlZEV4cGxpY2l0bHkgfHwgIW1fcHJpbnRE ZXZpY2Uuc3VwcG9ydGVkRHVwbGV4TW9kZXMoKS5jb250YWlucyhkdXBsZXgpKSB7CisgICAgICAg ICBkdXBsZXggPSBtX3ByaW50RGV2aWNlLmRlZmF1bHREdXBsZXhNb2RlKCk7CisrICAgICAgICBk dXBsZXhSZXF1ZXN0ZWRFeHBsaWNpdGx5ID0gZmFsc2U7CisrICAgIH0KKyAgICAgUVByaW50OjpD b2xvck1vZGUgY29sb3JNb2RlID0gZ3JheXNjYWxlID8gUVByaW50OjpHcmF5U2NhbGUgOiBRUHJp bnQ6OkNvbG9yOworICAgICBpZiAoIW1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkQ29sb3JNb2Rlcygp LmNvbnRhaW5zKGNvbG9yTW9kZSkpCisgICAgICAgICBncmF5c2NhbGUgPSBtX3ByaW50RGV2aWNl LmRlZmF1bHRDb2xvck1vZGUoKSA9PSBRUHJpbnQ6OkdyYXlTY2FsZTsKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZV9wLmgg Yi9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZV9w LmgKK2luZGV4IGMwMjFiMGM2NDMuLjhmODFmZTQ3OGQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZV9wLmgKKysrKyBiL3F0 YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lX3AuaAor QEAgLTEwMCw2ICsxMDAsNyBAQCBwcml2YXRlOgorICAgICBRU3RyaW5nTGlzdCBjdXBzT3B0aW9u czsKKyAgICAgUVN0cmluZyBjdXBzVGVtcEZpbGU7CisgICAgIFFQcmludDo6RHVwbGV4TW9kZSBk dXBsZXg7CisrICAgIGJvb2wgZHVwbGV4UmVxdWVzdGVkRXhwbGljaXRseSA9IGZhbHNlOworIH07 CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9z cWxkcml2ZXJzL2liYXNlL3FzcWxfaWJhc2UuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRy aXZlcnMvaWJhc2UvcXNxbF9pYmFzZS5jcHAKK2luZGV4IDY3ZTcxNTRmYTYuLjQwODc2MTUyZTUg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9pYmFzZS9xc3FsX2li YXNlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvaWJhc2UvcXNxbF9p YmFzZS5jcHAKK0BAIC04MTcsNyArODE3LDcgQEAgYm9vbCBRSUJhc2VSZXN1bHRQcml2YXRlOjp3 cml0ZUFycmF5KGludCBjb2x1bW4sIGNvbnN0IFFMaXN0PFFWYXJpYW50PiAmbGlzdCkKKyAgICAg YmEucmVzaXplKGludChidWZMZW4pKTsKKyAKKyAgICAgaWYgKGxpc3Quc2l6ZSgpID4gYXJyYXlT aXplKSB7CistICAgICAgICBlcnJvciA9IFFMYXRpbjFTdHJpbmcoIkFycmF5IHNpemUgbWlzc21h dGNoOiBzaXplIG9mICUxIGlzICUyLCBzaXplIG9mIHByb3ZpZGVkIGxpc3QgaXMgJTMiKTsKKysg ICAgICAgIGVycm9yID0gUUxhdGluMVN0cmluZygiQXJyYXkgc2l6ZSBtaXNtYXRjaDogc2l6ZSBv ZiAlMSBpcyAlMiwgc2l6ZSBvZiBwcm92aWRlZCBsaXN0IGlzICUzIik7CisgICAgICAgICBlcnJv ciA9IGVycm9yLmFyZyhRTGF0aW4xU3RyaW5nKHNxbG5hbWUpKS5hcmcoYXJyYXlTaXplKS5hcmco bGlzdC5zaXplKCkpOworICAgICAgICAgcS0+c2V0TGFzdEVycm9yKFFTcWxFcnJvcihlcnJvciwg UUxhdGluMVN0cmluZygiIiksIFFTcWxFcnJvcjo6U3RhdGVtZW50RXJyb3IpKTsKKyAgICAgICAg IHJldHVybiBmYWxzZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVy cy9teXNxbC9xc3FsX215c3FsLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL215 c3FsL3FzcWxfbXlzcWwuY3BwCitpbmRleCA3Y2EwNTVlZWEyLi42YmM5ZDQ2NzU1IDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvbXlzcWwvcXNxbF9teXNxbC5jcHAK KysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL215c3FsL3FzcWxfbXlzcWwuY3Bw CitAQCAtMjIzLDcgKzIyMyw3IEBAIHB1YmxpYzoKKyAgICAgc3RydWN0IFFNeUZpZWxkCisgICAg IHsKKyAgICAgICAgIGNoYXIgKm91dEZpZWxkID0gbnVsbHB0cjsKKy0gICAgICAgIE1ZU1FMX0ZJ RUxEICpteUZpZWxkID0gbnVsbHB0cjsKKysgICAgICAgIGNvbnN0IE1ZU1FMX0ZJRUxEICpteUZp ZWxkID0gbnVsbHB0cjsKKyAgICAgICAgIFFNZXRhVHlwZTo6VHlwZSB0eXBlID0gUU1ldGFUeXBl OjpVbmtub3duVHlwZTsKKyAgICAgICAgIG15X2Jvb2wgbnVsbEluZGljYXRvciA9IGZhbHNlOwor ICAgICAgICAgdWxvbmcgYnVmTGVuZ3RoID0gMHVsOworQEAgLTM2MSw3ICszNjEsNyBAQCBzdGF0 aWMgYm9vbCBxSXNJbnRlZ2VyKGludCB0KQorIHZvaWQgUU1ZU1FMUmVzdWx0UHJpdmF0ZTo6Ymlu ZEJsb2JzKCkKKyB7CisgICAgIGludCBpOworLSAgICBNWVNRTF9GSUVMRCAqZmllbGRJbmZvOwor KyAgICBjb25zdCBNWVNRTF9GSUVMRCAqZmllbGRJbmZvOworICAgICBNWVNRTF9CSU5EICpiaW5k OworIAorICAgICBmb3IoaSA9IDA7IGkgPCBmaWVsZHMuY291bnQoKTsgKytpKSB7CitAQCAtMzc5 LDcgKzM3OSw2IEBAIHZvaWQgUU1ZU1FMUmVzdWx0UHJpdmF0ZTo6YmluZEJsb2JzKCkKKyBib29s IFFNWVNRTFJlc3VsdFByaXZhdGU6OmJpbmRJblZhbHVlcygpCisgeworICAgICBNWVNRTF9CSU5E ICpiaW5kOworLSAgICBjaGFyICpmaWVsZDsKKyAgICAgaW50IGkgPSAwOworIAorICAgICBpZiAo IW1ldGEpCitAQCAtMzkyLDM1ICszOTEsMzQgQEAgYm9vbCBRTVlTUUxSZXN1bHRQcml2YXRlOjpi aW5kSW5WYWx1ZXMoKQorICAgICBpbkJpbmRzID0gbmV3IE1ZU1FMX0JJTkRbZmllbGRzLnNpemUo KV07CisgICAgIG1lbXNldChpbkJpbmRzLCAwLCBmaWVsZHMuc2l6ZSgpICogc2l6ZW9mKE1ZU1FM X0JJTkQpKTsKKyAKKy0gICAgTVlTUUxfRklFTEQgKmZpZWxkSW5mbzsKKysgICAgY29uc3QgTVlT UUxfRklFTEQgKmZpZWxkSW5mbzsKKyAKKyAgICAgd2hpbGUoKGZpZWxkSW5mbyA9IG15c3FsX2Zl dGNoX2ZpZWxkKG1ldGEpKSkgeworKyAgICAgICAgYmluZCA9ICZpbkJpbmRzW2ldOworKworICAg ICAgICAgUU15RmllbGQgJmYgPSBmaWVsZHNbaV07CisgICAgICAgICBmLm15RmllbGQgPSBmaWVs ZEluZm87CistCisrICAgICAgICBiaW5kLT5idWZmZXJfbGVuZ3RoID0gZi5idWZMZW5ndGggPSBm aWVsZEluZm8tPmxlbmd0aCArIDE7CisrICAgICAgICBiaW5kLT5idWZmZXJfdHlwZSA9IGZpZWxk SW5mby0+dHlwZTsKKyAgICAgICAgIGYudHlwZSA9IHFEZWNvZGVNWVNRTFR5cGUoZmllbGRJbmZv LT50eXBlLCBmaWVsZEluZm8tPmZsYWdzKTsKKyAgICAgICAgIGlmIChxSXNCbG9iKGZpZWxkSW5m by0+dHlwZSkpIHsKKyAgICAgICAgICAgICAvLyB0aGUgc2l6ZSBvZiBhIGJsb2ItZmllbGQgaXMg YXZhaWxhYmxlIGFzIHNvb24gYXMgd2UgY2FsbAorICAgICAgICAgICAgIC8vIG15c3FsX3N0bXRf c3RvcmVfcmVzdWx0KCkKKyAgICAgICAgICAgICAvLyBhZnRlciBteXNxbF9zdG10X2V4ZWMoKSBp biBRTVlTUUxSZXN1bHQ6OmV4ZWMoKQorLSAgICAgICAgICAgIGZpZWxkSW5mby0+bGVuZ3RoID0g MDsKKysgICAgICAgICAgICBiaW5kLT5idWZmZXJfbGVuZ3RoID0gZi5idWZMZW5ndGggPSAwOwor ICAgICAgICAgICAgIGhhc0Jsb2JzID0gdHJ1ZTsKKyAgICAgICAgIH0gZWxzZSBpZiAocUlzSW50 ZWdlcihmLnR5cGUpKSB7CistICAgICAgICAgICAgZmllbGRJbmZvLT5sZW5ndGggPSA4OworKyAg ICAgICAgICAgIGJpbmQtPmJ1ZmZlcl9sZW5ndGggPSBmLmJ1Zkxlbmd0aCA9IDg7CisgICAgICAg ICB9IGVsc2UgeworLSAgICAgICAgICAgIGZpZWxkSW5mby0+dHlwZSA9IE1ZU1FMX1RZUEVfU1RS SU5HOworKyAgICAgICAgICAgIGJpbmQtPmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9TVFJJTkc7 CisgICAgICAgICB9CistICAgICAgICBiaW5kID0gJmluQmluZHNbaV07CistICAgICAgICBmaWVs ZCA9IG5ldyBjaGFyW2ZpZWxkSW5mby0+bGVuZ3RoICsgMV07CistICAgICAgICBtZW1zZXQoZmll bGQsIDAsIGZpZWxkSW5mby0+bGVuZ3RoICsgMSk7CisgCistICAgICAgICBiaW5kLT5idWZmZXJf dHlwZSA9IGZpZWxkSW5mby0+dHlwZTsKKy0gICAgICAgIGJpbmQtPmJ1ZmZlciA9IGZpZWxkOwor LSAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0aCA9IGYuYnVmTGVuZ3RoID0gZmllbGRJbmZvLT5s ZW5ndGggKyAxOworICAgICAgICAgYmluZC0+aXNfbnVsbCA9ICZmLm51bGxJbmRpY2F0b3I7Cisg ICAgICAgICBiaW5kLT5sZW5ndGggPSAmZi5idWZMZW5ndGg7CisgICAgICAgICBiaW5kLT5pc191 bnNpZ25lZCA9IGZpZWxkSW5mby0+ZmxhZ3MgJiBVTlNJR05FRF9GTEFHID8gMSA6IDA7CistICAg ICAgICBmLm91dEZpZWxkPWZpZWxkOworKworKyAgICAgICAgY2hhciAqZmllbGQgPSBuZXcgY2hh cltiaW5kLT5idWZmZXJfbGVuZ3RoICsgMV17fTsKKysgICAgICAgIGJpbmQtPmJ1ZmZlciA9IGYu b3V0RmllbGQgPSBmaWVsZDsKKyAKKyAgICAgICAgICsraTsKKyAgICAgfQorQEAgLTEzNjksMjAg KzEzNjcsMjAgQEAgYm9vbCBRTVlTUUxEcml2ZXI6Om9wZW4oY29uc3QgUVN0cmluZyYgZGIsCisg ICAgIH0KKyAKKyAjaWYgTVlTUUxfVkVSU0lPTl9JRCA+PSA1MDAwNworLSAgICBpZiAobXlzcWxf Z2V0X2NsaWVudF92ZXJzaW9uKCkgPj0gNTA1MDMgJiYgbXlzcWxfZ2V0X3NlcnZlcl92ZXJzaW9u KGQtPm15c3FsKSA+PSA1MDUwMykgeworLSAgICAgICAgLy8gZm9yY2UgdGhlIGNvbW11bmljYXRp b24gdG8gYmUgdXRmOG1iNCAob25seSB1dGY4bWI0IHN1cHBvcnRzIDQtYnl0ZSBjaGFyYWN0ZXJz KQorLSAgICAgICAgbXlzcWxfc2V0X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4bWI0Iik7 CisrICAgIC8vIGZvcmNlIHRoZSBjb21tdW5pY2F0aW9uIHRvIGJlIHV0ZjhtYjQgKG9ubHkgdXRm OG1iNCBzdXBwb3J0cyA0LWJ5dGUgY2hhcmFjdGVycykKKysgICAgaWYgKG15c3FsX3NldF9jaGFy YWN0ZXJfc2V0KGQtPm15c3FsLCAidXRmOG1iNCIpKSB7CisrICAgICAgICAvLyB0aGlzIGZhaWxl ZCwgdHJ5IGZvcmNpbmcgaXQgdG8gdXRmIChCTVAgb25seSkKKysgICAgICAgIGlmIChteXNxbF9z ZXRfY2hhcmFjdGVyX3NldChkLT5teXNxbCwgInV0ZjgiKSkKKysgICAgICAgICAgICBxV2Fybmlu ZygpIDw8ICJNeVNRTDogVW5hYmxlIHRvIHNldCB0aGUgY2xpZW50IGNoYXJhY3RlciBzZXQgdG8g dXRmOC4iOworICNpZiBRVF9DT05GSUcodGV4dGNvZGVjKQorLSAgICAgICAgZC0+dGMgPSBRVGV4 dENvZGVjOjpjb2RlY0Zvck5hbWUoIlVURi04Iik7CisrICAgICAgICBlbHNlCisrICAgICAgICAg ICAgZC0+dGMgPSBjb2RlYyhkLT5teXNxbCk7CisgI2VuZGlmCistICAgIH0gZWxzZQorLSAgICB7 CistICAgICAgICAvLyBmb3JjZSB0aGUgY29tbXVuaWNhdGlvbiB0byBiZSB1dGY4CistICAgICAg ICBteXNxbF9zZXRfY2hhcmFjdGVyX3NldChkLT5teXNxbCwgInV0ZjgiKTsKKysgICAgfQorICNp ZiBRVF9DT05GSUcodGV4dGNvZGVjKQorLSAgICAgICAgZC0+dGMgPSBjb2RlYyhkLT5teXNxbCk7 CisrICAgIGVsc2UKKysgICAgICAgIGQtPnRjID0gUVRleHRDb2RlYzo6Y29kZWNGb3JOYW1lKCJV VEYtOCIpOworICNlbmRpZgorLSAgICB9CisgI2VuZGlmICAvLyBNWVNRTF9WRVJTSU9OX0lEID49 IDUwMDA3CisgCisgICAgIGQtPnByZXBhcmVkUXVlcnlzRW5hYmxlZCA9IGNoZWNrUHJlcGFyZWRR dWVyaWVzKGQtPm15c3FsKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL2ltYWdlcy9wcmludC0yNC5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFs b2dzL2ltYWdlcy9wcmludGVyLTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUg ZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50LTI0LnBuZworcmVuYW1l IHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnRlci0yNC5wbmcKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludC0zMi5w bmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludGVyLTMyLnBu Zworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvaW1hZ2VzL3ByaW50LTMyLnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9pbWFnZXMvcHJpbnRlci0zMi5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMjQucG5nIGIvcXRiYXNlL3Ny Yy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1mYWNpbmctMjQucG5nCitz aW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9pbWFnZXMvdmlldy1wYWdlLXNpZGVkLTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBv cnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1mYWNpbmctMjQucG5nCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLXNpZGVkLTMy LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMt ZmFjaW5nLTMyLnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0zMi5wbmcKK3JlbmFtZSB0 byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTMyLnBu ZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3Zp ZXctcGFnZS1tdWx0aS0yNC5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2lt YWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCity ZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1tdWx0 aS0yNC5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXct cGFnZXMtb3ZlcnZpZXctMjQucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBv cnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW11bHRpLTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMzIucG5nCitzaW1p bGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9p bWFnZXMvdmlldy1wYWdlLW11bHRpLTMyLnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0zMi5wbmcKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25lLTI0LnBu ZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtc2lu Z2xlLTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1vbmUtMjQucG5nCityZW5hbWUgdG8gc3Jj L3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0yNC5wbmcKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBh Z2Utb25lLTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3Zp ZXctcGFnZXMtc2luZ2xlLTMyLnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJv bSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1vbmUtMzIucG5nCity ZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLXNpbmds ZS0zMi5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2lt YWdlcy9maXQtcGFnZS0yNC5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2lt YWdlcy96b29tLWZpdC1wYWdlLTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUg ZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC1wYWdlLTI0LnBuZworcmVu YW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtcGFnZS0yNC5w bmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9m aXQtcGFnZS0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96 b29tLWZpdC1wYWdlLTMyLnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBz cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC1wYWdlLTMyLnBuZworcmVuYW1lIHRv IHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtcGFnZS0zMi5wbmcKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtd2lk dGgtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1m aXQtd2lkdGgtMjQucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9w cmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXdpZHRoLTI0LnBuZworcmVuYW1lIHRvIHNy Yy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtd2lkdGgtMjQucG5nCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXdpZHRo LTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0 LXdpZHRoLTMyLnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC13aWR0aC0zMi5wbmcKK3JlbmFtZSB0byBzcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXdpZHRoLTMyLnBuZworZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXBhZ2VzZXR1cGRpYWxvZ191 bml4LmNwcCBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXBhZ2VzZXR1cGRpYWxv Z191bml4LmNwcAoraW5kZXggNzhlNWI4ZDFlZi4uMmEyODUxNjcxOSAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXBhZ2VzZXR1cGRpYWxvZ191bml4LmNwcAor KysrIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcGFnZXNldHVwZGlhbG9nX3Vu aXguY3BwCitAQCAtNTMyLDYgKzUzMiw3IEBAIHZvaWQgUVBhZ2VTZXR1cFdpZGdldDo6dXBkYXRl V2lkZ2V0KCkKKyB2b2lkIFFQYWdlU2V0dXBXaWRnZXQ6OnNldHVwUHJpbnRlcigpIGNvbnN0Cisg eworICAgICBtX3ByaW50ZXItPnNldFBhZ2VMYXlvdXQobV9wYWdlTGF5b3V0KTsKKysgICAgbV9w cmludGVyLT5zZXRQYWdlT3JpZW50YXRpb24obV9wYWdlTGF5b3V0Lm9yaWVudGF0aW9uKCkpOwor ICNpZiBRVF9DT05GSUcoY3VwcykKKyAgICAgUUNVUFNTdXBwb3J0OjpQYWdlc1BlclNoZWV0IHBh Z2VzUGVyU2hlZXQgPSBxdmFyaWFudF9jYXN0PFFDVVBTU3VwcG9ydDo6UGFnZXNQZXJTaGVldD4o bV91aS5wYWdlc1BlclNoZWV0Q29tYm8tPmN1cnJlbnREYXRhKCkKKyApOworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nLnFyYyBiL3F0YmFz ZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nLnFyYworaW5kZXggNWE1Nzli YWE1NS4uMTBiOGUxZDM0MSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvcXByaW50ZGlhbG9nLnFyYworKysrIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9xcHJpbnRkaWFsb2cucXJjCitAQCAtMSw5ICsxLDkgQEAKKyA8IURPQ1RZUEUgUkNDPjxS Q0MgdmVyc2lvbj0iMS4wIj4KKyA8cXJlc291cmNlIHByZWZpeD0iL3F0LXByb2plY3Qub3JnL2Rp YWxvZ3MvcXByaW50cHJldmlld2RpYWxvZyI+CistPGZpbGU+aW1hZ2VzL2ZpdC1wYWdlLTI0LnBu ZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvZml0LXBhZ2UtMzIucG5nPC9maWxlPgorLTxmaWxlPmlt YWdlcy9maXQtd2lkdGgtMjQucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy9maXQtd2lkdGgtMzIu cG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy96b29tLWZpdC1wYWdlLTI0LnBuZzwvZmlsZT4KKys8 ZmlsZT5pbWFnZXMvem9vbS1maXQtcGFnZS0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3pv b20tZml0LXdpZHRoLTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvem9vbS1maXQtd2lkdGgt MzIucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy9nby1maXJzdC0yNC5wbmc8L2ZpbGU+CisgPGZp bGU+aW1hZ2VzL2dvLWZpcnN0LTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvZ28tbGFzdC0y NC5wbmc8L2ZpbGU+CitAQCAtMTgsMTQgKzE4LDE0IEBACisgPGZpbGU+aW1hZ2VzL2xheW91dC1w b3J0cmFpdC0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL3BhZ2Utc2V0dXAtMjQucG5nPC9m aWxlPgorIDxmaWxlPmltYWdlcy9wYWdlLXNldHVwLTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFn ZXMvcHJpbnQtMjQucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy9wcmludC0zMi5wbmc8L2ZpbGU+ CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1h Z2VzL3ZpZXctcGFnZS1tdWx0aS0zMi5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFn ZS1vbmUtMjQucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2Utb25lLTMyLnBuZzwv ZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLXNpZGVkLTI0LnBuZzwvZmlsZT4KKy08Zmls ZT5pbWFnZXMvdmlldy1wYWdlLXNpZGVkLTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvcHJp bnRlci0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ByaW50ZXItMzIucG5nPC9maWxlPgor KzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5p bWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3Zp ZXctcGFnZXMtc2luZ2xlLTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1z aW5nbGUtMzIucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0yNC5w bmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTMyLnBuZzwvZmlsZT4K KyA8ZmlsZT5pbWFnZXMvem9vbS1pbi0yNC5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL3pvb20t aW4tMzIucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy96b29tLW91dC0yNC5wbmc8L2ZpbGU+Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2df dW5peC5jcHAgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZ191 bml4LmNwcAoraW5kZXggYzViODQ1ZjRlYy4uNWE1YmExZDBhOCAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nX3VuaXguY3BwCisrKysgYi9x dGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZ191bml4LmNwcAorQEAg LTcwMiwxMyArNzAyLDE0IEBAIHZvaWQgUVByaW50RGlhbG9nUHJpdmF0ZTo6c2VsZWN0UHJpbnRl cihjb25zdCBRUHJpbnRlcjo6T3V0cHV0Rm9ybWF0IG91dHB1dEZvcm1hCisgICAgICAgICBlbHNl CisgICAgICAgICAgICAgb3B0aW9ucy5ncmF5c2NhbGUtPnNldENoZWNrZWQodHJ1ZSk7CisgCist ICAgICAgICAvLyBrZWVwIGR1cGxleCB2YWx1ZSBleHBsaWNpdGx5IHNldCBieSB1c2VyLCBpZiBh bnksIGFuZCBzZWxlY3RlZCBwcmludGVyIHN1cHBvcnRzIGl0OworLSAgICAgICAgLy8gdXNlIGRl dmljZSBkZWZhdWx0IG90aGVyd2lzZQorKyAgICAgICAgLy8gZHVwbGV4IHByaW9yaXRpZXMgdG8g YmUgYXMgZm9sbG93czoKKysgICAgICAgIC8vIDEpIGEgdXNlci1zZWxlY3RlZCBkdXBsZXggdmFs dWUgaW4gdGhlIGRpYWxvZyBoYXMgaGlnaGVzdCBwcm9yaXR5CisrICAgICAgICAvLyAyKSBkdXBs ZXggdmFsdWUgc2V0IGluIHRoZSBRUHJpbnRlcgorICAgICAgICAgUVByaW50OjpEdXBsZXhNb2Rl IGR1cGxleDsKKyAgICAgICAgIGlmIChleHBsaWNpdER1cGxleE1vZGUgIT0gUVByaW50OjpEdXBs ZXhBdXRvICYmIHN1cHBvcnRlZER1cGxleE1vZGUuY29udGFpbnMoZXhwbGljaXREdXBsZXhNb2Rl KSkKKyAgICAgICAgICAgICBkdXBsZXggPSBleHBsaWNpdER1cGxleE1vZGU7CisgICAgICAgICBl bHNlCistICAgICAgICAgICAgZHVwbGV4ID0gdG9wLT5kLT5tX2N1cnJlbnRQcmludERldmljZS5k ZWZhdWx0RHVwbGV4TW9kZSgpOworKyAgICAgICAgICAgIGR1cGxleCA9IHN0YXRpY19jYXN0PFFQ cmludDo6RHVwbGV4TW9kZT4ocC0+ZHVwbGV4KCkpOworICAgICAgICAgc3dpdGNoIChkdXBsZXgp IHsKKyAgICAgICAgIGNhc2UgUVByaW50OjpEdXBsZXhOb25lOgorICAgICAgICAgICAgIG9wdGlv bnMubm9EdXBsZXgtPnNldENoZWNrZWQodHJ1ZSk7IGJyZWFrOworQEAgLTEyNDIsMTAgKzEyNDMs MTAgQEAgdm9pZCBRVW5peFByaW50V2lkZ2V0UHJpdmF0ZTo6X3FfcHJpbnRlckNoYW5nZWQoaW50 IGluZGV4KQorICAgICAgICAgICAgIFFTdHJpbmcgZmlsZW5hbWUgPSB3aWRnZXQuZmlsZW5hbWUt PnRleHQoKTsKKyAgICAgICAgICAgICB3aWRnZXQuZmlsZW5hbWUtPnNldFRleHQoZmlsZW5hbWUp OworICAgICAgICAgICAgIHdpZGdldC5sT3V0cHV0LT5zZXRFbmFibGVkKHRydWUpOworLSAgICAg ICAgICAgIGlmIChvcHRpb25zUGFuZSkKKy0gICAgICAgICAgICAgICAgb3B0aW9uc1BhbmUtPnNl bGVjdFByaW50ZXIoUVByaW50ZXI6OlBkZkZvcm1hdCk7CisgICAgICAgICAgICAgcHJpbnRlci0+ c2V0T3V0cHV0Rm9ybWF0KFFQcmludGVyOjpQZGZGb3JtYXQpOworICAgICAgICAgICAgIG1fY3Vy cmVudFByaW50RGV2aWNlID0gUVByaW50RGV2aWNlKCk7CisrICAgICAgICAgICAgaWYgKG9wdGlv bnNQYW5lKQorKyAgICAgICAgICAgICAgICBvcHRpb25zUGFuZS0+c2VsZWN0UHJpbnRlcihRUHJp bnRlcjo6UGRmRm9ybWF0KTsKKyAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICB9CisgICAg IH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludHBy ZXZpZXdkaWFsb2cuY3BwIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRw cmV2aWV3ZGlhbG9nLmNwcAoraW5kZXggMzk1NzVkNWY1Ny4uMjNiN2U4OTUzOCAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50cHJldmlld2RpYWxvZy5j cHAKKysrKyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50cHJldmlld2Rp YWxvZy5jcHAKK0BAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBRUHJpbnRQcmV2aWV3RGlhbG9nUHJp dmF0ZTo6aW5pdChRUHJpbnRlciAqX3ByaW50ZXIpCisgc3RhdGljIGlubGluZSB2b2lkIHF0X3Nl dHVwQWN0aW9uSWNvbihRQWN0aW9uICphY3Rpb24sIFFMYXRpbjFTdHJpbmcgbmFtZSkKKyB7Cisg ICAgIFFMYXRpbjFTdHJpbmcgaW1hZ2VQcmVmaXgoIjovcXQtcHJvamVjdC5vcmcvZGlhbG9ncy9x cHJpbnRwcmV2aWV3ZGlhbG9nL2ltYWdlcy8iKTsKKy0gICAgUUljb24gaWNvbjsKKysgICAgUUlj b24gaWNvbiA9IFFJY29uOjpmcm9tVGhlbWUobmFtZSk7CisgICAgIGljb24uYWRkRmlsZShpbWFn ZVByZWZpeCArIG5hbWUgKyBRTGF0aW4xU3RyaW5nKCItMjQucG5nIiksIFFTaXplKDI0LCAyNCkp OworICAgICBpY29uLmFkZEZpbGUoaW1hZ2VQcmVmaXggKyBuYW1lICsgUUxhdGluMVN0cmluZygi LTMyLnBuZyIpLCBRU2l6ZSgzMiwgMzIpKTsKKyAgICAgYWN0aW9uLT5zZXRJY29uKGljb24pOwor QEAgLTM4Myw4ICszODMsOCBAQCB2b2lkIFFQcmludFByZXZpZXdEaWFsb2dQcml2YXRlOjpzZXR1 cEFjdGlvbnMoKQorICAgICBmaXRQYWdlQWN0aW9uLT5zZXRPYmplY3ROYW1lKFFMYXRpbjFTdHJp bmcoImZpdFBhZ2VBY3Rpb24iKSk7CisgICAgIGZpdFdpZHRoQWN0aW9uLT5zZXRDaGVja2FibGUo dHJ1ZSk7CisgICAgIGZpdFBhZ2VBY3Rpb24tPnNldENoZWNrYWJsZSh0cnVlKTsKKy0gICAgcXRf c2V0dXBBY3Rpb25JY29uKGZpdFdpZHRoQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJmaXQtd2lkdGgi KSk7CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihmaXRQYWdlQWN0aW9uLCBRTGF0aW4xU3RyaW5n KCJmaXQtcGFnZSIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25JY29uKGZpdFdpZHRoQWN0aW9uLCBR TGF0aW4xU3RyaW5nKCJ6b29tLWZpdC13aWR0aCIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25JY29u KGZpdFBhZ2VBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInpvb20tZml0LXBhZ2UiKSk7CisgICAgIFFP YmplY3Q6OmNvbm5lY3QoZml0R3JvdXAsIFNJR05BTCh0cmlnZ2VyZWQoUUFjdGlvbiopKSwgcSwg U0xPVChfcV9maXQoUUFjdGlvbiopKSk7CisgCisgICAgIC8vIFpvb20KK0BAIC00MTAsOSArNDEw LDkgQEAgdm9pZCBRUHJpbnRQcmV2aWV3RGlhbG9nUHJpdmF0ZTo6c2V0dXBBY3Rpb25zKCkKKyAg ICAgc2luZ2xlTW9kZUFjdGlvbiA9IG1vZGVHcm91cC0+YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRp b246OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxvZyIsICJTaG93IHNpbmdsZSBwYWdlIikp OworICAgICBmYWNpbmdNb2RlQWN0aW9uID0gbW9kZUdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBs aWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwgIlNob3cgZmFjaW5nIHBh Z2VzIikpOworICAgICBvdmVydmlld01vZGVBY3Rpb24gPSBtb2RlR3JvdXAtPmFkZEFjdGlvbihR Q29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdEaWFsb2ciLCAiU2hvdyBv dmVydmlldyBvZiBhbGwgcGFnZXMiKSk7CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihzaW5nbGVN b2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ2aWV3LXBhZ2Utb25lIikpOworLSAgICBxdF9zZXR1 cEFjdGlvbkljb24oZmFjaW5nTW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlLXNp ZGVkIikpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24ob3ZlcnZpZXdNb2RlQWN0aW9uLCBRTGF0 aW4xU3RyaW5nKCJ2aWV3LXBhZ2UtbXVsdGkiKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihz aW5nbGVNb2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ2aWV3LXBhZ2VzLXNpbmdsZSIpKTsKKysg ICAgcXRfc2V0dXBBY3Rpb25JY29uKGZhY2luZ01vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZp ZXctcGFnZXMtZmFjaW5nIikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24ob3ZlcnZpZXdNb2Rl QWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ2aWV3LXBhZ2VzLW92ZXJ2aWV3IikpOworICAgICBzaW5n bGVNb2RlQWN0aW9uLT5zZXRPYmplY3ROYW1lKFFMYXRpbjFTdHJpbmcoInNpbmdsZU1vZGVBY3Rp b24iKSk7CisgICAgIGZhY2luZ01vZGVBY3Rpb24tPnNldE9iamVjdE5hbWUoUUxhdGluMVN0cmlu ZygiZmFjaW5nTW9kZUFjdGlvbiIpKTsKKyAgICAgb3ZlcnZpZXdNb2RlQWN0aW9uLT5zZXRPYmpl Y3ROYW1lKFFMYXRpbjFTdHJpbmcoIm92ZXJ2aWV3TW9kZUFjdGlvbiIpKTsKK0BAIC00MjYsNyAr NDI2LDcgQEAgdm9pZCBRUHJpbnRQcmV2aWV3RGlhbG9nUHJpdmF0ZTo6c2V0dXBBY3Rpb25zKCkK KyAgICAgcHJpbnRlckdyb3VwID0gbmV3IFFBY3Rpb25Hcm91cChxKTsKKyAgICAgcHJpbnRBY3Rp b24gPSBwcmludGVyR3JvdXAtPmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUo IlFQcmludFByZXZpZXdEaWFsb2ciLCAiUHJpbnQiKSk7CisgICAgIHBhZ2VTZXR1cEFjdGlvbiA9 IHByaW50ZXJHcm91cC0+YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVBy aW50UHJldmlld0RpYWxvZyIsICJQYWdlIHNldHVwIikpOworLSAgICBxdF9zZXR1cEFjdGlvbklj b24ocHJpbnRBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInByaW50IikpOworKyAgICBxdF9zZXR1cEFj dGlvbkljb24ocHJpbnRBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInByaW50ZXIiKSk7CisgICAgIHF0 X3NldHVwQWN0aW9uSWNvbihwYWdlU2V0dXBBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInBhZ2Utc2V0 dXAiKSk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QocHJpbnRBY3Rpb24sIFNJR05BTCh0cmlnZ2Vy ZWQoYm9vbCkpLCBxLCBTTE9UKF9xX3ByaW50KCkpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChw YWdlU2V0dXBBY3Rpb24sIFNJR05BTCh0cmlnZ2VyZWQoYm9vbCkpLCBxLCBTTE9UKF9xX3BhZ2VT ZXR1cCgpKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9zcWwva2VybmVsL3FzcWxxdWVyeS5j cHAgYi9xdGJhc2Uvc3JjL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5LmNwcAoraW5kZXggMzJjNjE2NmM3 OS4uNjBhZmVmMTBjMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvc3FsL2tlcm5lbC9xc3FscXVl cnkuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5LmNwcAorQEAgLTEs NiArMSw2IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorLSoqIENvcHlyaWdodCAoQykg MjAxNiBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBRdCBD b21wYW55IEx0ZC4KKyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisg KioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRTcWwgbW9kdWxlIG9mIHRoZSBRdCBU b29sa2l0LgorQEAgLTM3Nyw2ICszNzcsMTAgQEAgYm9vbCBRU3FsUXVlcnk6OmV4ZWMoY29uc3Qg UVN0cmluZyYgcXVlcnkpCisgICAgIFFFbGFwc2VkVGltZXIgdDsKKyAgICAgdC5zdGFydCgpOwor ICNlbmRpZgorKyAgICBpZiAoIWRyaXZlcigpKSB7CisrICAgICAgICBxV2FybmluZygiUVNxbFF1 ZXJ5OjpleGVjOiBjYWxsZWQgYmVmb3JlIGRyaXZlciBoYXMgYmVlbiBzZXQgdXAiKTsKKysgICAg ICAgIHJldHVybiBmYWxzZTsKKysgICAgfQorICAgICBpZiAoZC0+cmVmLmxvYWRSZWxheGVkKCkg IT0gMSkgeworICAgICAgICAgYm9vbCBmbyA9IGlzRm9yd2FyZE9ubHkoKTsKKyAgICAgICAgICp0 aGlzID0gUVNxbFF1ZXJ5KGRyaXZlcigpLT5jcmVhdGVSZXN1bHQoKSk7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAgYi9xdGJhc2Uv c3JjL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAoraW5kZXggOGVmYjljNTNk NC4uY2UwNjJmNjZkNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvdGVzdGxpYi9xYWJzdHJhY3Rp dGVtbW9kZWx0ZXN0ZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFic3RyYWN0aXRl bW1vZGVsdGVzdGVyLmNwcAorQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIFFBYnN0cmFjdEl0ZW1N b2RlbFRlc3RlclByaXZhdGU6OnBhcmVudCgpCisgCisgICAgIC8vIENvbW1vbiBlcnJvciB0ZXN0 ICMyLCBtYWtlIHN1cmUgdGhhdCBhIHNlY29uZCBsZXZlbCBpbmRleCBoYXMgYSBwYXJlbnQKKyAg ICAgLy8gdGhhdCBpcyB0aGUgZmlyc3QgbGV2ZWwgaW5kZXguCistICAgIGlmIChtb2RlbC0+cm93 Q291bnQodG9wSW5kZXgpID4gMCkgeworKyAgICBpZiAobW9kZWwtPnJvd0NvdW50KHRvcEluZGV4 KSA+IDAgJiYgbW9kZWwtPmNvbHVtbkNvdW50KHRvcEluZGV4KSA+IDApIHsKKyAgICAgICAgIFFN b2RlbEluZGV4IGNoaWxkSW5kZXggPSBtb2RlbC0+aW5kZXgoMCwgMCwgdG9wSW5kZXgpOworICAg ICAgICAgTU9ERUxURVNURVJfVkVSSUZZKGNoaWxkSW5kZXguaXNWYWxpZCgpKTsKKyAgICAgICAg IE1PREVMVEVTVEVSX0NPTVBBUkUobW9kZWwtPnBhcmVudChjaGlsZEluZGV4KSwgdG9wSW5kZXgp OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvdGVzdGxpYi9xYXNjaWlrZXkuY3BwIGIvcXRiYXNl L3NyYy90ZXN0bGliL3Fhc2NpaWtleS5jcHAKK2luZGV4IDlhMzA4ZGEyYmMuLjkzNDk4YjI1NmYg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFzY2lpa2V5LmNwcAorKysrIGIvcXRi YXNlL3NyYy90ZXN0bGliL3Fhc2NpaWtleS5jcHAKK0BAIC00OTgsNiArNDk4LDExIEBAIGNoYXIg UVRlc3Q6OmtleVRvQXNjaWkoUXQ6OktleSBrZXkpCisgICAgIGNhc2UgUXQ6OktleV9MYXVuY2hF IDogcmV0dXJuIDA7IC8vID0gMHgxMGIwLAorICAgICBjYXNlIFF0OjpLZXlfTGF1bmNoRiA6IHJl dHVybiAwOyAvLyA9IDB4MTBiMSwKKyAKKysgICAgLy8gS2V5cGFkIG5hdmlnYXRpb24ga2V5cwor KyAgICBjYXNlIFF0OjpLZXlfU2VsZWN0IDogcmV0dXJuIDA7IC8vID0gMHgwMTAxMDAwMAorKyAg ICBjYXNlIFF0OjpLZXlfWWVzIDogcmV0dXJuIDA7IC8vID0gMHgwMTAxMDAwMQorKyAgICBjYXNl IFF0OjpLZXlfTm8gOiByZXR1cm4gMDsgLy8gPSAweDAxMDEwMDAyCisrCisgICAgIGRlZmF1bHQ6 IFFURVNUX0FTU0VSVChmYWxzZSk7IHJldHVybiAwOworICAgICB9CisgfQorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvdGVzdGxpYi9xdGVzdHJlc3VsdC5jcHAgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIv cXRlc3RyZXN1bHQuY3BwCitpbmRleCA4ODAyOGFhYzZlLi4yZTg5OTMwNzc2IDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy90ZXN0bGliL3F0ZXN0cmVzdWx0LmNwcAorKysrIGIvcXRiYXNlL3NyYy90 ZXN0bGliL3F0ZXN0cmVzdWx0LmNwcAorQEAgLTI1MSw3ICsyNTEsOCBAQCBib29sIFFUZXN0UmVz dWx0Ojp2ZXJpZnkoYm9vbCBzdGF0ZW1lbnQsIGNvbnN0IGNoYXIgKnN0YXRlbWVudFN0ciwKKyB7 CisgICAgIFFURVNUX0FTU0VSVChzdGF0ZW1lbnRTdHIpOworIAorLSAgICBjaGFyIG1zZ1sxMDI0 XSA9IHsnXDAnfTsKKysgICAgY2hhciBtc2dbMTAyNF07CisrICAgIG1zZ1swXSA9ICdcMCc7Cisg CisgICAgIGlmIChRVGVzdExvZzo6dmVyYm9zZUxldmVsKCkgPj0gMikgeworICAgICAgICAgcXNu cHJpbnRmKG1zZywgMTAyNCwgIlFWRVJJRlkoJXMpIiwgc3RhdGVtZW50U3RyKTsKK0BAIC0zMDks NyArMzEwLDggQEAgc3RhdGljIGJvb2wgY29tcGFyZUhlbHBlcihib29sIHN1Y2Nlc3MsIGNvbnN0 IGNoYXIgKmZhaWx1cmVNc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGhhc1Zh bHVlcyA9IHRydWUpCisgeworICAgICBjb25zdCBzaXplX3QgbWF4TXNnTGVuID0gMTAyNDsKKy0g ICAgY2hhciBtc2dbbWF4TXNnTGVuXSA9IHsnXDAnfTsKKysgICAgY2hhciBtc2dbbWF4TXNnTGVu XTsKKysgICAgbXNnWzBdID0gJ1wwJzsKKyAKKyAgICAgUVRFU1RfQVNTRVJUKGV4cGVjdGVkKTsK KyAgICAgUVRFU1RfQVNTRVJUKGFjdHVhbCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRn ZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9nLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9kaWFsb2dz L3Fjb2xvcmRpYWxvZy5jcHAKK2luZGV4IDQyNDc3MzEyNzUuLmNiMzI1YmU4NWMgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvZGlhbG9ncy9xY29sb3JkaWFsb2cuY3BwCisrKysgYi9x dGJhc2Uvc3JjL3dpZGdldHMvZGlhbG9ncy9xY29sb3JkaWFsb2cuY3BwCitAQCAtNzgsNyArNzgs MTAgQEAKKyAjaW5jbHVkZSAicXdpbmRvdy5oIgorIAorICNpbmNsdWRlICJwcml2YXRlL3FkaWFs b2dfcC5oIgorKyNpbmNsdWRlICJwcml2YXRlL3FndWlhcHBsaWNhdGlvbl9wLmgiCisgCisrI2lu Y2x1ZGUgPHFwYS9xcGxhdGZvcm1zZXJ2aWNlcy5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3Jt aW50ZWdyYXRpb24uaD4KKyAjaW5jbHVkZSA8YWxnb3JpdGhtPgorIAorIFFUX0JFR0lOX05BTUVT UEFDRQorQEAgLTE2MTEsNiArMTYxNCwyMCBAQCB2b2lkIFFDb2xvckRpYWxvZ1ByaXZhdGU6Ol9x X25ld1N0YW5kYXJkKGludCByLCBpbnQgYykKKyB2b2lkIFFDb2xvckRpYWxvZ1ByaXZhdGU6Ol9x X3BpY2tTY3JlZW5Db2xvcigpCisgeworICAgICBRX1EoUUNvbG9yRGlhbG9nKTsKKysKKysgICAg YXV0byAqcGxhdGZvcm1TZXJ2aWNlcyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3Jt SW50ZWdyYXRpb24oKS0+c2VydmljZXMoKTsKKysgICAgaWYgKHBsYXRmb3JtU2VydmljZXMtPmhh c0NhcGFiaWxpdHkoUVBsYXRmb3JtU2VydmljZXM6OkNhcGFiaWxpdHk6OkNvbG9yUGlja2luZykp IHsKKysgICAgICAgIGlmIChhdXRvICpjb2xvclBpY2tlciA9IHBsYXRmb3JtU2VydmljZXMtPmNv bG9yUGlja2VyKHEtPndpbmRvd0hhbmRsZSgpKSkgeworKyAgICAgICAgICAgIHEtPmNvbm5lY3Qo Y29sb3JQaWNrZXIsICZRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXI6OmNvbG9yUGlja2VkLCBx LAorKyAgICAgICAgICAgICAgICAgICAgICAgW3EsIGNvbG9yUGlja2VyXShjb25zdCBRQ29sb3Ig JmNvbG9yKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JQaWNrZXItPmRlbGV0 ZUxhdGVyKCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgcS0+c2V0Q3VycmVudENvbG9y KGNvbG9yKTsKKysgICAgICAgICAgICAgICAgICAgICAgIH0pOworKyAgICAgICAgICAgIGNvbG9y UGlja2VyLT5waWNrQ29sb3IoKTsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9Cisr ICAgIH0KKysKKyAgICAgaWYgKCFjb2xvclBpY2tpbmdFdmVudEZpbHRlcikKKyAgICAgICAgIGNv bG9yUGlja2luZ0V2ZW50RmlsdGVyID0gbmV3IFFDb2xvclBpY2tpbmdFdmVudEZpbHRlcih0aGlz LCBxKTsKKyAgICAgcS0+aW5zdGFsbEV2ZW50RmlsdGVyKGNvbG9yUGlja2luZ0V2ZW50RmlsdGVy KTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FhYnN0cmFjdGl0 ZW1kZWxlZ2F0ZS5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FhYnN0cmFjdGl0 ZW1kZWxlZ2F0ZS5jcHAKK2luZGV4IGUxMjA4MTdlZGMuLjhlYTM2YjU0MjcgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FhYnN0cmFjdGl0ZW1kZWxlZ2F0ZS5jcHAK KysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWFic3RyYWN0aXRlbWRlbGVnYXRl LmNwcAorQEAgLTQwMCwxMiArNDAwLDcgQEAgYm9vbCBRQWJzdHJhY3RJdGVtRGVsZWdhdGU6Omhl bHBFdmVudChRSGVscEV2ZW50ICpldmVudCwKKyAgICAgICAgIGNvbnN0IFFTdHJpbmcgdG9vbHRp cCA9IGluZGV4LmlzVmFsaWQoKSA/CisgICAgICAgICAgICAgICBkLT50ZXh0Rm9yUm9sZShRdDo6 VG9vbFRpcFJvbGUsIGluZGV4LmRhdGEoUXQ6OlRvb2xUaXBSb2xlKSwgb3B0aW9uLmxvY2FsZSwg cHJlY2lzaW9uKSA6CisgICAgICAgICAgICAgICBRU3RyaW5nKCk7CistICAgICAgICBRUmVjdCBy ZWN0OworLSAgICAgICAgaWYgKGluZGV4LmlzVmFsaWQoKSkgeworLSAgICAgICAgICAgIGNvbnN0 IFFSZWN0IHIgPSB2aWV3LT52aXN1YWxSZWN0KGluZGV4KTsKKy0gICAgICAgICAgICByZWN0ID0g UVJlY3Qodmlldy0+bWFwVG9HbG9iYWwoci50b3BMZWZ0KCkpLCByLnNpemUoKSk7CistICAgICAg ICB9CistICAgICAgICBRVG9vbFRpcDo6c2hvd1RleHQoaGUtPmdsb2JhbFBvcygpLCB0b29sdGlw LCB2aWV3LCByZWN0KTsKKysgICAgICAgIFFUb29sVGlwOjpzaG93VGV4dChoZS0+Z2xvYmFsUG9z KCksIHRvb2x0aXAsIHZpZXctPnZpZXdwb3J0KCksIG9wdGlvbi5yZWN0KTsKKyAgICAgICAgIGV2 ZW50LT5zZXRBY2NlcHRlZCghdG9vbHRpcC5pc0VtcHR5KCkpOworICAgICAgICAgYnJlYWs7Cisg ICAgICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xbGlz dHZpZXcuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xbGlzdHZpZXcuY3BwCitp bmRleCAyYjM0NDc2NjQyLi5lZWJmYWEwMzBlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRn ZXRzL2l0ZW12aWV3cy9xbGlzdHZpZXcuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRl bXZpZXdzL3FsaXN0dmlldy5jcHAKK0BAIC0zMzg2LDYgKzMzODYsNyBAQCB2b2lkIFFJY29uTW9k ZVZpZXdCYXNlOjp1cGRhdGVDb250ZW50c1NpemUoKQorICovCisgdm9pZCBRTGlzdFZpZXc6OmN1 cnJlbnRDaGFuZ2VkKGNvbnN0IFFNb2RlbEluZGV4ICZjdXJyZW50LCBjb25zdCBRTW9kZWxJbmRl eCAmcHJldmlvdXMpCisgeworKyAgICBRQWJzdHJhY3RJdGVtVmlldzo6Y3VycmVudENoYW5nZWQo Y3VycmVudCwgcHJldmlvdXMpOworICNpZm5kZWYgUVRfTk9fQUNDRVNTSUJJTElUWQorICAgICBp ZiAoUUFjY2Vzc2libGU6OmlzQWN0aXZlKCkpIHsKKyAgICAgICAgIGlmIChjdXJyZW50LmlzVmFs aWQoKSkgeworQEAgLTMzOTYsNyArMzM5Nyw2IEBAIHZvaWQgUUxpc3RWaWV3OjpjdXJyZW50Q2hh bmdlZChjb25zdCBRTW9kZWxJbmRleCAmY3VycmVudCwgY29uc3QgUU1vZGVsSW5kZXggJnByCisg ICAgICAgICB9CisgICAgIH0KKyAjZW5kaWYKKy0gICAgUUFic3RyYWN0SXRlbVZpZXc6OmN1cnJl bnRDaGFuZ2VkKGN1cnJlbnQsIHByZXZpb3VzKTsKKyB9CisgCisgLyohCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3LmNwcCBiL3F0YmFzZS9zcmMv d2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy5jcHAKK2luZGV4IDkzNGFjNTgxYjIuLmY3OWJi MjQyNDkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZp ZXcuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcuY3Bw CitAQCAtMTAxMyw2ICsxMDEzLDcgQEAgdm9pZCBRVGFibGVWaWV3UHJpdmF0ZTo6ZHJhd0NlbGwo UVBhaW50ZXIgKnBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvblZpZXdJdGVtICYKKyBpbnQgUVRh YmxlVmlld1ByaXZhdGU6OndpZHRoSGludEZvckluZGV4KGNvbnN0IFFNb2RlbEluZGV4ICZpbmRl eCwgaW50IGhpbnQsIGNvbnN0IFFTdHlsZU9wdGlvblZpZXdJdGVtICZvcHRpb24pIGNvbnN0Cisg eworICAgICBRX1EoY29uc3QgUVRhYmxlVmlldyk7CisrICAgIGNvbnN0IGludCBvbGRIaW50ID0g aGludDsKKyAgICAgUVdpZGdldCAqZWRpdG9yID0gZWRpdG9yRm9ySW5kZXgoaW5kZXgpLndpZGdl dC5kYXRhKCk7CisgICAgIGlmIChlZGl0b3IgJiYgcGVyc2lzdGVudC5jb250YWlucyhlZGl0b3Ip KSB7CisgICAgICAgICBoaW50ID0gcU1heChoaW50LCBlZGl0b3ItPnNpemVIaW50KCkud2lkdGgo KSk7CitAQCAtMTAyMSw2ICsxMDIyLDE3IEBAIGludCBRVGFibGVWaWV3UHJpdmF0ZTo6d2lkdGhI aW50Rm9ySW5kZXgoY29uc3QgUU1vZGVsSW5kZXggJmluZGV4LCBpbnQgaGludCwgY29uCisgICAg ICAgICBoaW50ID0gcUJvdW5kKG1pbiwgaGludCwgbWF4KTsKKyAgICAgfQorICAgICBoaW50ID0g cU1heChoaW50LCBxLT5pdGVtRGVsZWdhdGUoaW5kZXgpLT5zaXplSGludChvcHRpb24sIGluZGV4 KS53aWR0aCgpKTsKKysKKysgICAgaWYgKGhhc1NwYW5zKCkpIHsKKysgICAgICAgIGF1dG8gc3Bh biA9IHNwYW5zLnNwYW5BdChpbmRleC5jb2x1bW4oKSwgaW5kZXgucm93KCkpOworKyAgICAgICAg aWYgKHNwYW4gJiYgc3Bhbi0+bV9sZWZ0ID09IGluZGV4LmNvbHVtbigpICYmIHNwYW4tPm1fdG9w ID09IGluZGV4LnJvdygpKSB7CisrICAgICAgICAgICAgLy8gc3BhbnMgYXJlIHNjcmV3ZWQgdXAg d2hlbiBzZWN0aW9ucyBhcmUgbW92ZWQKKysgICAgICAgICAgICBjb25zdCBhdXRvIGxlZnQgPSBs b2dpY2FsQ29sdW1uKHNwYW4tPm1fbGVmdCk7CisrICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7 IGkgPD0gc3Bhbi0+d2lkdGgoKTsgKytpKQorKyAgICAgICAgICAgICAgIGhpbnQgLT0gcS0+Y29s dW1uV2lkdGgodmlzdWFsQ29sdW1uKGxlZnQgKyBpKSk7CisrICAgICAgICB9CisrICAgICAgICBo aW50ID0gc3RkOjptYXgoaGludCwgb2xkSGludCk7CisrICAgIH0KKyAgICAgcmV0dXJuIGhpbnQ7 CisgfQorIAorQEAgLTEwNTMsNiArMTA2NSwxMSBAQCBpbnQgUVRhYmxlVmlld1ByaXZhdGU6Omhl aWdodEhpbnRGb3JJbmRleChjb25zdCBRTW9kZWxJbmRleCAmaW5kZXgsIGludCBoaW50LCBRUwor ICAgICAgICAgb3B0aW9uLnJlY3Quc2V0SGVpZ2h0KGhlaWdodCk7CisgICAgICAgICBvcHRpb24u cmVjdC5zZXRYKHEtPmNvbHVtblZpZXdwb3J0UG9zaXRpb24oaW5kZXguY29sdW1uKCkpKTsKKyAg ICAgICAgIG9wdGlvbi5yZWN0LnNldFdpZHRoKHEtPmNvbHVtbldpZHRoKGluZGV4LmNvbHVtbigp KSk7CisrICAgICAgICBpZiAoaGFzU3BhbnMoKSkgeworKyAgICAgICAgICAgIGF1dG8gc3BhbiA9 IHNwYW5zLnNwYW5BdChpbmRleC5jb2x1bW4oKSwgaW5kZXgucm93KCkpOworKyAgICAgICAgICAg IGlmIChzcGFuICYmIHNwYW4tPm1fbGVmdCA9PSBpbmRleC5jb2x1bW4oKSAmJiBzcGFuLT5tX3Rv cCA9PSBpbmRleC5yb3coKSkKKysgICAgICAgICAgICAgICAgb3B0aW9uLnJlY3Quc2V0V2lkdGgo c3RkOjptYXgob3B0aW9uLnJlY3Qud2lkdGgoKSwgdmlzdWFsU3BhblJlY3QoKnNwYW4pLndpZHRo KCkpKTsKKysgICAgICAgIH0KKyAgICAgICAgIC8vIDFweCBsZXNzIHNwYWNlIHdoZW4gZ3JpZCBp cyBzaG93biAoc2VlIGRyYXdDZWxsKQorICAgICAgICAgaWYgKHNob3dHcmlkKQorICAgICAgICAg ICAgIG9wdGlvbi5yZWN0LnNldFdpZHRoKG9wdGlvbi5yZWN0LndpZHRoKCkgLSAxKTsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3FhY3Rpb24uaCBiL3F0YmFzZS9zcmMv d2lkZ2V0cy9rZXJuZWwvcWFjdGlvbi5oCitpbmRleCAyNThhMWVhMGEwLi43MzdjMWU4Mjg1IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmgKKysrKyBiL3F0 YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcWFjdGlvbi5oCitAQCAtODEsNyArODEsNyBAQCBjbGFz cyBRX1dJREdFVFNfRVhQT1JUIFFBY3Rpb24gOiBwdWJsaWMgUU9iamVjdAorICAgICBRX1BST1BF UlRZKE1lbnVSb2xlIG1lbnVSb2xlIFJFQUQgbWVudVJvbGUgV1JJVEUgc2V0TWVudVJvbGUgTk9U SUZZIGNoYW5nZWQpCisgICAgIFFfUFJPUEVSVFkoYm9vbCBpY29uVmlzaWJsZUluTWVudSBSRUFE IGlzSWNvblZpc2libGVJbk1lbnUgV1JJVEUgc2V0SWNvblZpc2libGVJbk1lbnUgTk9USUZZIGNo YW5nZWQpCisgICAgIFFfUFJPUEVSVFkoYm9vbCBzaG9ydGN1dFZpc2libGVJbkNvbnRleHRNZW51 IFJFQUQgaXNTaG9ydGN1dFZpc2libGVJbkNvbnRleHRNZW51IFdSSVRFIHNldFNob3J0Y3V0Vmlz aWJsZUluQ29udGV4dE1lbnUgTk9USUZZIGNoYW5nZWQpCistICAgIFFfUFJPUEVSVFkoUHJpb3Jp dHkgcHJpb3JpdHkgUkVBRCBwcmlvcml0eSBXUklURSBzZXRQcmlvcml0eSkKKysgICAgUV9QUk9Q RVJUWShQcmlvcml0eSBwcmlvcml0eSBSRUFEIHByaW9yaXR5IFdSSVRFIHNldFByaW9yaXR5IE5P VElGWSBjaGFuZ2VkKQorIAorIHB1YmxpYzoKKyAgICAgLy8gbm90ZSB0aGlzIGlzIGNvcGllZCBp bnRvIHFwbGF0Zm9ybW1lbnUuaCwgd2hpY2ggbXVzdCBzdGF5IGluIHN5bmMKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXQuY3BwIGIvcXRiYXNlL3NyYy93aWRn ZXRzL2tlcm5lbC9xd2lkZ2V0LmNwcAoraW5kZXggOWViYTFlMDAxZS4uMjZmNmQyN2UxOCAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldC5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldC5jcHAKK0BAIC01Mjk2LDcgKzUyOTYsNyBA QCB2b2lkIFFXaWRnZXRQcml2YXRlOjpkcmF3V2lkZ2V0KFFQYWludERldmljZSAqcGRldiwgY29u c3QgUVJlZ2lvbiAmcmduLCBjb25zdCBRUAorICAgICAgICAgUVdpZGdldEVmZmVjdFNvdXJjZVBy aXZhdGUgKnNvdXJjZWQgPSBzdGF0aWNfY2FzdDxRV2lkZ2V0RWZmZWN0U291cmNlUHJpdmF0ZSAq PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzb3VyY2UtPmRfZnVuYygpKTsKKyAgICAgICAgIGlmICghc291cmNlZC0+Y29udGV4dCkg eworLSAgICAgICAgICAgIGNvbnN0IFFSZWdpb24gZWZmZWN0UmduKHJnbi5ib3VuZGluZ1JlY3Qo KSk7CisrICAgICAgICAgICAgY29uc3QgUVJlZ2lvbiBlZmZlY3RSZ24oKGZsYWdzICYgVXNlRWZm ZWN0UmVnaW9uQm91bmRzKSA/IHJnbi5ib3VuZGluZ1JlY3QoKSA6IHJnbik7CisgICAgICAgICAg ICAgUVdpZGdldFBhaW50Q29udGV4dCBjb250ZXh0KHBkZXYsIGVmZmVjdFJnbiwgb2Zmc2V0LCBm bGFncywgc2hhcmVkUGFpbnRlciwgcmVwYWludE1hbmFnZXIpOworICAgICAgICAgICAgIHNvdXJj ZWQtPmNvbnRleHQgPSAmY29udGV4dDsKKyAgICAgICAgICAgICBpZiAoIXNoYXJlZFBhaW50ZXIp IHsKK0BAIC01MzI4LDYgKzUzMjgsNyBAQCB2b2lkIFFXaWRnZXRQcml2YXRlOjpkcmF3V2lkZ2V0 KFFQYWludERldmljZSAqcGRldiwgY29uc3QgUVJlZ2lvbiAmcmduLCBjb25zdCBRUAorICAgICAg ICAgfQorICAgICB9CisgI2VuZGlmIC8vIFFUX0NPTkZJRyhncmFwaGljc2VmZmVjdCkKKysgICAg ZmxhZ3MgPSBmbGFncyAmIH5Vc2VFZmZlY3RSZWdpb25Cb3VuZHM7CisgCisgICAgIGNvbnN0IGJv b2wgYWxzb09uU2NyZWVuID0gZmxhZ3MgJiBEcmF3UGFpbnRPblNjcmVlbjsKKyAgICAgY29uc3Qg Ym9vbCByZWN1cnNpdmUgPSBmbGFncyAmIERyYXdSZWN1cnNpdmU7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0X3AuaCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9r ZXJuZWwvcXdpZGdldF9wLmgKK2luZGV4IGVlZjZiOGZhMmMuLmM0MzJmNGI1ZDUgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRfcC5oCisrKysgYi9xdGJhc2Uv c3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRfcC5oCitAQCAtMjI5LDcgKzIyOSw4IEBAIHB1Ymxp YzoKKyAgICAgICAgIERvbnRTdWJ0cmFjdE9wYXF1ZUNoaWxkcmVuID0gMHgxMCwKKyAgICAgICAg IERvbnREcmF3T3BhcXVlQ2hpbGRyZW4gPSAweDIwLAorICAgICAgICAgRG9udERyYXdOYXRpdmVD aGlsZHJlbiA9IDB4NDAsCistICAgICAgICBEb250U2V0Q29tcG9zaXRpb25Nb2RlID0gMHg4MAor KyAgICAgICAgRG9udFNldENvbXBvc2l0aW9uTW9kZSA9IDB4ODAsCisrICAgICAgICBVc2VFZmZl Y3RSZWdpb25Cb3VuZHMgPSAweDEwMAorICAgICB9OworICAgICBRX0RFQ0xBUkVfRkxBR1MoRHJh d1dpZGdldEZsYWdzLCBEcmF3V2lkZ2V0RmxhZykKKyAgICAgUV9GTEFHKERyYXdXaWRnZXRGbGFn cykKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRyZXBhaW50 bWFuYWdlci5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRyZXBhaW50bWFu YWdlci5jcHAKK2luZGV4IDAyODgwYjM0ZGEuLjBkNDRlMTMyNmQgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRyZXBhaW50bWFuYWdlci5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldHJlcGFpbnRtYW5hZ2VyLmNwcAorQEAgLTEw MTgsNyArMTAxOCw4IEBAIHZvaWQgUVdpZGdldFJlcGFpbnRNYW5hZ2VyOjpwYWludEFuZEZsdXNo KCkKKyAKKyAgICAgLy8gUGFpbnQgdGhlIHJlc3Qgd2l0aCBjb21wb3NpdGlvbi4KKyAgICAgaWYg KHJlcGFpbnRBbGxXaWRnZXRzIHx8ICFkaXJ0eUNvcHkuaXNFbXB0eSgpKSB7CistICAgICAgICBR V2lkZ2V0UHJpdmF0ZTo6RHJhd1dpZGdldEZsYWdzIGZsYWdzID0gUVdpZGdldFByaXZhdGU6OkRy YXdBc1Jvb3QgfCBRV2lkZ2V0UHJpdmF0ZTo6RHJhd1JlY3Vyc2l2ZTsKKysgICAgICAgIFFXaWRn ZXRQcml2YXRlOjpEcmF3V2lkZ2V0RmxhZ3MgZmxhZ3MgPSBRV2lkZ2V0UHJpdmF0ZTo6RHJhd0Fz Um9vdCB8IFFXaWRnZXRQcml2YXRlOjpEcmF3UmVjdXJzaXZlCisrICAgICAgICAgICAgICAgIHwg UVdpZGdldFByaXZhdGU6OlVzZUVmZmVjdFJlZ2lvbkJvdW5kczsKKyAgICAgICAgIHRsdy0+ZF9m dW5jKCktPmRyYXdXaWRnZXQoc3RvcmUtPnBhaW50RGV2aWNlKCksIGRpcnR5Q29weSwgUVBvaW50 KCksIGZsYWdzLCBudWxscHRyLCB0aGlzKTsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvd2lkZ2V0cy9zdHlsZXMvcWZ1c2lvbnN0eWxlLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0 cy9zdHlsZXMvcWZ1c2lvbnN0eWxlLmNwcAoraW5kZXggZjQzNDVkOTdjNC4uOTYyOTEyYzgzOCAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9zdHlsZXMvcWZ1c2lvbnN0eWxlLmNwcAor KysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3N0eWxlcy9xZnVzaW9uc3R5bGUuY3BwCitAQCAtMTc3 MiwxNCArMTc3Miw2IEBAIHZvaWQgUUZ1c2lvblN0eWxlOjpkcmF3Q29udHJvbChDb250cm9sRWxl bWVudCBlbGVtZW50LCBjb25zdCBRU3R5bGVPcHRpb24gKm9wdGlvCisgICAgICAgICAgICAgcHJv eHkoKS0+ZHJhd0NvbnRyb2woQ0VfUHVzaEJ1dHRvbkxhYmVsLCAmc3Vib3B0LCBwYWludGVyLCB3 aWRnZXQpOworICAgICAgICAgfQorICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgQ0VfUHVzaEJ1 dHRvbkxhYmVsOgorLSAgICAgICAgaWYgKGNvbnN0IFFTdHlsZU9wdGlvbkJ1dHRvbiAqYnV0dG9u ID0gcXN0eWxlb3B0aW9uX2Nhc3Q8Y29uc3QgUVN0eWxlT3B0aW9uQnV0dG9uICo+KG9wdGlvbikp IHsKKy0gICAgICAgICAgICBRU3R5bGVPcHRpb25CdXR0b24gYigqYnV0dG9uKTsKKy0gICAgICAg ICAgICAvLyBubyBQTV9CdXR0b25TaGlmdEhvcml6b250YWwgYW5kIFBNX0J1dHRvblNoaWZ0VmVy dGljYWwgZm9yIGZ1c2lvbiBzdHlsZQorLSAgICAgICAgICAgIGIuc3RhdGUgJj0gfihTdGF0ZV9P biB8IFN0YXRlX1N1bmtlbik7CistICAgICAgICAgICAgUUNvbW1vblN0eWxlOjpkcmF3Q29udHJv bChlbGVtZW50LCAmYiwgcGFpbnRlciwgd2lkZ2V0KTsKKy0gICAgICAgIH0KKy0gICAgICAgIGJy ZWFrOworICAgICBjYXNlIENFX01lbnVCYXJFbXB0eUFyZWE6CisgICAgICAgICBwYWludGVyLT5z YXZlKCk7CisgICAgIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvdXRpbC9xY29t cGxldGVyLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy91dGlsL3Fjb21wbGV0ZXIuY3BwCitpbmRl eCAxOGIyNDA2M2Q4Li5lZjcyMDdhOGEzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRz L3V0aWwvcWNvbXBsZXRlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy91dGlsL3Fjb21w bGV0ZXIuY3BwCitAQCAtMTEyMCw2ICsxMTIwLDggQEAgdm9pZCBRQ29tcGxldGVyOjpzZXRNb2Rl bChRQWJzdHJhY3RJdGVtTW9kZWwgKm1vZGVsKQorIHsKKyAgICAgUV9EKFFDb21wbGV0ZXIpOwor ICAgICBRQWJzdHJhY3RJdGVtTW9kZWwgKm9sZE1vZGVsID0gZC0+cHJveHktPnNvdXJjZU1vZGVs KCk7CisrICAgIGlmIChvbGRNb2RlbCA9PSBtb2RlbCkKKysgICAgICAgIHJldHVybjsKKyAjaWYg UVRfQ09ORklHKGZpbGVzeXN0ZW1tb2RlbCkKKyAgICAgaWYgKHFvYmplY3RfY2FzdDxjb25zdCBR RmlsZVN5c3RlbU1vZGVsICo+KG9sZE1vZGVsKSkKKyAgICAgICAgIHNldENvbXBsZXRpb25Sb2xl KFF0OjpFZGl0Um9sZSk7IC8vIFFUQlVHLTU0NjQyLCBjbGVhciBGaWxlTmFtZVJvbGUgc2V0IGJ5 IFFGaWxlU3lzdGVtTW9kZWwKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0 cy9xYWJzdHJhY3RidXR0b24uY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWFic3Ry YWN0YnV0dG9uLmNwcAoraW5kZXggYTEyOGIyMzk1MC4uZGM0MGJmNjJmYiAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi5jcHAKK0BAIC01Niw2ICs1 Niw3IEBACisgI2lmbmRlZiBRVF9OT19BQ0NFU1NJQklMSVRZCisgI2luY2x1ZGUgInFhY2Nlc3Np YmxlLmgiCisgI2VuZGlmCisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorIAorICNp bmNsdWRlIDxhbGdvcml0aG0+CisgCitAQCAtMTA3NiwxOSArMTA3NywxOSBAQCB2b2lkIFFBYnN0 cmFjdEJ1dHRvbjo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQgKmUpCisgeworICAgICBRX0QoUUFi c3RyYWN0QnV0dG9uKTsKKyAgICAgYm9vbCBuZXh0ID0gdHJ1ZTsKKy0gICAgc3dpdGNoIChlLT5r ZXkoKSkgeworLSAgICBjYXNlIFF0OjpLZXlfRW50ZXI6CistICAgIGNhc2UgUXQ6OktleV9SZXR1 cm46CistICAgICAgICBlLT5pZ25vcmUoKTsKKy0gICAgICAgIGJyZWFrOworLSAgICBjYXNlIFF0 OjpLZXlfU2VsZWN0OgorLSAgICBjYXNlIFF0OjpLZXlfU3BhY2U6CistICAgICAgICBpZiAoIWUt PmlzQXV0b1JlcGVhdCgpKSB7CistICAgICAgICAgICAgc2V0RG93bih0cnVlKTsKKy0gICAgICAg ICAgICByZXBhaW50KCk7CistICAgICAgICAgICAgZC0+ZW1pdFByZXNzZWQoKTsKKy0gICAgICAg IH0KKy0gICAgICAgIGJyZWFrOworKworKyAgICBjb25zdCBhdXRvIGtleSA9IHN0YXRpY19jYXN0 PFF0OjpLZXk+KGUtPmtleSgpKTsKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBR R3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0 b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu dmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFp bnMoa2V5KSAmJiAhZS0+aXNBdXRvUmVwZWF0KCkpIHsKKysgICAgICAgIHNldERvd24odHJ1ZSk7 CisrICAgICAgICByZXBhaW50KCk7CisrICAgICAgICBkLT5lbWl0UHJlc3NlZCgpOworKyAgICAg ICAgcmV0dXJuOworKyAgICB9CisrCisrICAgIHN3aXRjaCAoa2V5KSB7CisgICAgIGNhc2UgUXQ6 OktleV9VcDoKKyAgICAgICAgIG5leHQgPSBmYWxzZTsKKyAgICAgICAgIFFfRkFMTFRIUk9VR0go KTsKK0BAIC0xMTUzLDE1ICsxMTU0LDE1IEBAIHZvaWQgUUFic3RyYWN0QnV0dG9uOjprZXlSZWxl YXNlRXZlbnQoUUtleUV2ZW50ICplKQorICAgICBpZiAoIWUtPmlzQXV0b1JlcGVhdCgpKQorICAg ICAgICAgZC0+cmVwZWF0VGltZXIuc3RvcCgpOworIAorLSAgICBzd2l0Y2ggKGUtPmtleSgpKSB7 CistICAgIGNhc2UgUXQ6OktleV9TZWxlY3Q6CistICAgIGNhc2UgUXQ6OktleV9TcGFjZToKKy0g ICAgICAgIGlmICghZS0+aXNBdXRvUmVwZWF0KCkgJiYgZC0+ZG93bikKKy0gICAgICAgICAgICBk LT5jbGljaygpOworLSAgICAgICAgYnJlYWs7CistICAgIGRlZmF1bHQ6CistICAgICAgICBlLT5p Z25vcmUoKTsKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRp b25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMp CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8 UXQ6OktleT4+KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoc3RhdGljX2Nh c3Q8UXQ6OktleT4oZS0+a2V5KCkpKSAmJiAhZS0+aXNBdXRvUmVwZWF0KCkgJiYgZC0+ZG93bikg eworKyAgICAgICAgZC0+Y2xpY2soKTsKKysgICAgICAgIHJldHVybjsKKyAgICAgfQorKworKyAg ICBlLT5pZ25vcmUoKTsKKyB9CisgCisgLyohXHJlaW1wCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRn ZXRzL3Fjb21ib2JveC5jcHAKK2luZGV4IDdhNDk2YzI3ZTAuLjBhM2Q5NjY0N2IgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3guY3BwCisrKysgYi9xdGJh c2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3guY3BwCitAQCAtMzM1Miw3ICszMzUyLDIz IEBAIHZvaWQgUUNvbWJvQm94OjprZXlQcmVzc0V2ZW50KFFLZXlFdmVudCAqZSkKKyAKKyAgICAg TW92ZSBtb3ZlID0gTm9Nb3ZlOworICAgICBpbnQgbmV3SW5kZXggPSBjdXJyZW50SW5kZXgoKTsK Ky0gICAgc3dpdGNoIChlLT5rZXkoKSkgeworKworKyAgICBib29sIHByZXNzTGlrZUJ1dHRvbiA9 ICFkLT5saW5lRWRpdDsKKysjaWZkZWYgUVRfS0VZUEFEX05BVklHQVRJT04KKysgICAgcHJlc3NM aWtlQnV0dG9uIHw9IFFBcHBsaWNhdGlvblByaXZhdGU6OmtleXBhZE5hdmlnYXRpb25FbmFibGVk KCkgJiYgIWhhc0VkaXRGb2N1cygpOworKyNlbmRpZgorKyAgICBhdXRvIGtleSA9IHN0YXRpY19j YXN0PFF0OjpLZXk+KGUtPmtleSgpKTsKKysgICAgaWYgKHByZXNzTGlrZUJ1dHRvbikgeworKyAg ICAgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRl OjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxR dDo6S2V5Pj4oKTsKKysgICAgICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoa2V5KSkg eworKyAgICAgICAgICAgIHNob3dQb3B1cCgpOworKyAgICAgICAgICAgIHJldHVybjsKKysgICAg ICAgIH0KKysgICAgfQorKworKyAgICBzd2l0Y2ggKGtleSkgeworICAgICBjYXNlIFF0OjpLZXlf VXA6CisgICAgICAgICBpZiAoZS0+bW9kaWZpZXJzKCkgJiBRdDo6Q29udHJvbE1vZGlmaWVyKQor ICAgICAgICAgICAgIGJyZWFrOyAvLyBwYXNzIHRvIGxpbmUgZWRpdCBmb3IgYXV0byBjb21wbGV0 aW9uCitAQCAtMzM5NCwyNiArMzQxMCwxMSBAQCB2b2lkIFFDb21ib0JveDo6a2V5UHJlc3NFdmVu dChRS2V5RXZlbnQgKmUpCisgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgfQorICAgICAg ICAgYnJlYWs7CistICAgIGNhc2UgUXQ6OktleV9TcGFjZToKKy0gICAgICAgIGlmICghZC0+bGlu ZUVkaXQpIHsKKy0gICAgICAgICAgICBzaG93UG9wdXAoKTsKKy0gICAgICAgICAgICByZXR1cm47 CistICAgICAgICB9CistICAgICAgICBicmVhazsKKy0gICAgY2FzZSBRdDo6S2V5X0VudGVyOgor LSAgICBjYXNlIFF0OjpLZXlfUmV0dXJuOgorICAgICBjYXNlIFF0OjpLZXlfRXNjYXBlOgorICAg ICAgICAgaWYgKCFkLT5saW5lRWRpdCkKKyAgICAgICAgICAgICBlLT5pZ25vcmUoKTsKKyAgICAg ICAgIGJyZWFrOworICNpZmRlZiBRVF9LRVlQQURfTkFWSUdBVElPTgorLSAgICBjYXNlIFF0OjpL ZXlfU2VsZWN0OgorLSAgICAgICAgaWYgKFFBcHBsaWNhdGlvblByaXZhdGU6OmtleXBhZE5hdmln YXRpb25FbmFibGVkKCkKKy0gICAgICAgICAgICAgICAgJiYgKCFoYXNFZGl0Rm9jdXMoKSB8fCAh ZC0+bGluZUVkaXQpKSB7CistICAgICAgICAgICAgc2hvd1BvcHVwKCk7CistICAgICAgICAgICAg cmV0dXJuOworLSAgICAgICAgfQorLSAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUXQ6OktleV9M ZWZ0OgorICAgICBjYXNlIFF0OjpLZXlfUmlnaHQ6CisgICAgICAgICBpZiAoUUFwcGxpY2F0aW9u UHJpdmF0ZTo6a2V5cGFkTmF2aWdhdGlvbkVuYWJsZWQoKSAmJiAhaGFzRWRpdEZvY3VzKCkpCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1lZWRpdF9wLmgg Yi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZGF0ZXRpbWVlZGl0X3AuaAoraW5kZXggZDM2 YjZmOGY5YS4uZTBkZjViNTE1OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRn ZXRzL3FkYXRldGltZWVkaXRfcC5oCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9x ZGF0ZXRpbWVlZGl0X3AuaAorQEAgLTEsNiArMSw2IEBACisgLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyAqKgorLSoqIENvcHlyaWdodCAoQykgMjAxOCBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29w eXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKyAqKiBDb250YWN0OiBodHRwczov L3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg UXRXaWRnZXRzIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3guY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dp ZGdldHMvcWdyb3VwYm94LmNwcAoraW5kZXggMDJhMGJlZDMyNS4uM2YzZWNjYzM3MCAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC5jcHAKK0BAIC01NCw2ICs1NCw4IEBA CisgI2luY2x1ZGUgInFhY2Nlc3NpYmxlLmgiCisgI2VuZGlmCisgI2luY2x1ZGUgPHByaXZhdGUv cXdpZGdldF9wLmg+CisrI2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKysj aW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisgCisgI2luY2x1ZGUgInFkZWJ1Zy5oIgor IAorQEAgLTM2MCw3ICszNjIsMTAgQEAgYm9vbCBRR3JvdXBCb3g6OmV2ZW50KFFFdmVudCAqZSkK KyAgICAgICAgIHJldHVybiB0cnVlOworICAgICBjYXNlIFFFdmVudDo6S2V5UHJlc3M6IHsKKyAg ICAgICAgIFFLZXlFdmVudCAqayA9IHN0YXRpY19jYXN0PFFLZXlFdmVudCo+KGUpOworLSAgICAg ICAgaWYgKCFrLT5pc0F1dG9SZXBlYXQoKSAmJiAoay0+a2V5KCkgPT0gUXQ6OktleV9TZWxlY3Qg fHwgay0+a2V5KCkgPT0gUXQ6OktleV9TcGFjZSkpIHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0 dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQo UVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAg ICBpZiAoIWstPmlzQXV0b1JlcGVhdCgpICYmIGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhzdGF0 aWNfY2FzdDxRdDo6S2V5PihrLT5rZXkoKSkpKSB7CisgICAgICAgICAgICAgZC0+cHJlc3NlZENv bnRyb2wgPSBRU3R5bGU6OlNDX0dyb3VwQm94Q2hlY2tCb3g7CisgICAgICAgICAgICAgdXBkYXRl KHN0eWxlKCktPnN1YkNvbnRyb2xSZWN0KFFTdHlsZTo6Q0NfR3JvdXBCb3gsICZib3gsIFFTdHls ZTo6U0NfR3JvdXBCb3hDaGVja0JveCwgdGhpcykpOworICAgICAgICAgICAgIHJldHVybiB0cnVl OworQEAgLTM2OSw3ICszNzQsMTAgQEAgYm9vbCBRR3JvdXBCb3g6OmV2ZW50KFFFdmVudCAqZSkK KyAgICAgfQorICAgICBjYXNlIFFFdmVudDo6S2V5UmVsZWFzZTogeworICAgICAgICAgUUtleUV2 ZW50ICprID0gc3RhdGljX2Nhc3Q8UUtleUV2ZW50Kj4oZSk7CistICAgICAgICBpZiAoIWstPmlz QXV0b1JlcGVhdCgpICYmIChrLT5rZXkoKSA9PSBRdDo6S2V5X1NlbGVjdCB8fCBrLT5rZXkoKSA9 PSBRdDo6S2V5X1NwYWNlKSkgeworKyAgICAgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMg PSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVt ZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgICAgIGlmICghay0+aXNB dXRvUmVwZWF0KCkgJiYgYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKHN0YXRpY19jYXN0PFF0OjpL ZXk+KGstPmtleSgpKSkpIHsKKyAgICAgICAgICAgICBib29sIHRvZ2dsZSA9IChkLT5wcmVzc2Vk Q29udHJvbCA9PSBRU3R5bGU6OlNDX0dyb3VwQm94TGFiZWwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8fCBkLT5wcmVzc2VkQ29udHJvbCA9PSBRU3R5bGU6OlNDX0dyb3VwQm94Q2hlY2tC b3gpOworICAgICAgICAgICAgIGQtPnByZXNzZWRDb250cm9sID0gUVN0eWxlOjpTQ19Ob25lOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FsYWJlbC5jcHAgYi9xdGJh c2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xbGFiZWwuY3BwCitpbmRleCAzMGZmODBjYmIwLi5jZjI2 MDVjMTdjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWxhYmVsLmNw cAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWxhYmVsLmNwcAorQEAgLTQyMSw5 ICs0MjEsNiBAQCB2b2lkIFFMYWJlbDo6c2V0UGl4bWFwKGNvbnN0IFFQaXhtYXAgJnBpeG1hcCkK KyAgICAgICAgIGQtPnBpeG1hcCA9IG5ldyBRUGl4bWFwKHBpeG1hcCk7CisgICAgIH0KKyAKKy0g ICAgaWYgKGQtPnBpeG1hcC0+ZGVwdGgoKSA9PSAxICYmICFkLT5waXhtYXAtPm1hc2soKSkKKy0g ICAgICAgIGQtPnBpeG1hcC0+c2V0TWFzaygqKChRQml0bWFwICopZC0+cGl4bWFwKSk7CistCisg ICAgIGQtPnVwZGF0ZUxhYmVsKCk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lk Z2V0cy93aWRnZXRzL3F0b29sYmFyYXJlYWxheW91dC5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMv d2lkZ2V0cy9xdG9vbGJhcmFyZWFsYXlvdXQuY3BwCitpbmRleCA0OTNjMDk0Y2MxLi5kNWY0YjU5 MDE3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcXRvb2xiYXJhcmVh bGF5b3V0LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcXRvb2xiYXJhcmVh bGF5b3V0LmNwcAorQEAgLTEzNjcsNyArMTM2Nyw3IEBAIGJvb2wgUVRvb2xCYXJBcmVhTGF5b3V0 OjpyZXN0b3JlU3RhdGUoUURhdGFTdHJlYW0gJnN0cmVhbSwgY29uc3QgUUxpc3Q8UVRvb2xCYXIq CisgICAgICAgICAgICAgICAgIGl0ZW0ud2lkZ2V0SXRlbSA9IG5ldyBRV2lkZ2V0SXRlbVYyKHRv b2xCYXIpOworICAgICAgICAgICAgICAgICB0b29sQmFyLT5zZXRPcmllbnRhdGlvbihmbG9hdGlu ZyA/ICgoc2hvd24gJiAyKSA/IFF0OjpWZXJ0aWNhbCA6IFF0OjpIb3Jpem9udGFsKSA6IGRvY2su byk7CisgICAgICAgICAgICAgICAgIHRvb2xCYXItPnNldFZpc2libGUoc2hvd24gJiAxKTsKKy0g ICAgICAgICAgICAgICAgdG9vbEJhci0+ZF9mdW5jKCktPnNldFdpbmRvd1N0YXRlKGZsb2F0aW5n LCB0cnVlLCByZWN0KTsKKysgICAgICAgICAgICAgICAgdG9vbEJhci0+ZF9mdW5jKCktPnNldFdp bmRvd1N0YXRlKGZsb2F0aW5nLCBmYWxzZSwgcmVjdCk7CisgCisgICAgICAgICAgICAgICAgIGl0 ZW0ucHJlZmVycmVkU2l6ZSA9IGl0ZW0uc2l6ZTsKKyAgICAgICAgICAgICAgICAgbGluZS50b29s QmFySXRlbXMuYXBwZW5kKGl0ZW0pOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2Nv bmN1cnJlbnQvcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0 ZWtlcm5lbC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudGl0 ZXJhdGVrZXJuZWwvdHN0X3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwuY3BwCitpbmRleCAyMTJj MGEyZTEzLi4zYzc3YjFiYTBiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3Vy cmVudC9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsL3RzdF9xdGNvbmN1cnJlbnRpdGVyYXRla2Vy bmVsLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnRp dGVyYXRla2VybmVsL3RzdF9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsLmNwcAorQEAgLTEyNiw4 ICsxMjYsNyBAQCBwdWJsaWM6CisgCisgdm9pZCB0c3RfUXRDb25jdXJyZW50SXRlcmF0ZUtlcm5l bDo6aW5zdGFudGlhdGUoKQorIHsKKy0gICAgYXV0byBmdXR1cmUgPSBzdGFydFRocmVhZEVuZ2lu ZShuZXcgUHJpbnRGb3IoMCwgNDApKS5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgIGZ1dHVy ZS53YWl0Rm9yRmluaXNoZWQoKTsKKysgICAgc3RhcnRUaHJlYWRFbmdpbmUobmV3IFByaW50Rm9y KDAsIDQwKSkuc3RhcnRCbG9ja2luZygpOworICAgICBRQ09NUEFSRShpdGVyYXRpb25zLmxvYWRS ZWxheGVkKCksIDQwKTsKKyB9CisgCitAQCAtMTY2LDEwICsxNjUsOCBAQCB2b2lkIHRzdF9RdENv bmN1cnJlbnRJdGVyYXRlS2VybmVsOjpzdHJlc3N0ZXN0KCkKKyAgICAgY29uc3QgaW50IHRpbWVz ID0gNTA7CisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGltZXM7ICsraSkgeworICAgICAgICAg Y291bnRlci5zdG9yZVJlbGF4ZWQoMCk7CistICAgICAgICAvLyBUaHJlYWRFbmdpbmUgd2lsbCBk ZWxldGUgZiB3aGVuIGl0IGZpbmlzaGVzCistICAgICAgICBhdXRvIGYgPSBuZXcgQ291bnRGb3Io MCwgaXRlcmF0aW9ucyk7CistICAgICAgICBhdXRvIGZ1dHVyZSA9IGYtPnN0YXJ0QXN5bmNocm9u b3VzbHkoKTsKKy0gICAgICAgIGZ1dHVyZS53YWl0Rm9yRmluaXNoZWQoKTsKKysgICAgICAgIENv dW50Rm9yIGYoMCwgaXRlcmF0aW9ucyk7CisrICAgICAgICBmLnN0YXJ0QmxvY2tpbmcoKTsKKyAg ICAgICAgIFFDT01QQVJFKGNvdW50ZXIubG9hZFJlbGF4ZWQoKSwgaXRlcmF0aW9ucyk7CisgICAg IH0KKyB9CitAQCAtMTc3LDExICsxNzQsOCBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRl S2VybmVsOjpzdHJlc3N0ZXN0KCkKKyB2b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRlS2VybmVs Ojpub0l0ZXJhdGlvbnMoKQorIHsKKyAgICAgY29uc3QgaW50IHRpbWVzID0gMjAwMDA7CistICAg IGZvciAoaW50IGkgPSAwOyBpIDwgdGltZXM7ICsraSkgeworLSAgICAgICAgYXV0byBmdXR1cmUg PSBzdGFydFRocmVhZEVuZ2luZShuZXcgSXRlcmF0ZUtlcm5lbDxUZXN0SXRlcmF0b3IsIHZvaWQ+ KDAsIDApKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdGFydEFzeW5jaHJvbm91 c2x5KCk7CistICAgICAgICBmdXR1cmUud2FpdEZvckZpbmlzaGVkKCk7CistICAgIH0KKysgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCB0aW1lczsgKytpKQorKyAgICAgICAgc3RhcnRUaHJlYWRFbmdp bmUobmV3IEl0ZXJhdGVLZXJuZWw8VGVzdEl0ZXJhdG9yLCB2b2lkPigwLCAwKSkuc3RhcnRCbG9j a2luZygpOworIH0KKyAKKyBRTXV0ZXggdGhyZWFkc011dGV4OworQEAgLTIzNiwxMCArMjMwLDgg QEAgdm9pZCB0c3RfUXRDb25jdXJyZW50SXRlcmF0ZUtlcm5lbDo6dGhyb3R0bGluZygpCisgCisg ICAgIHRocmVhZHMuY2xlYXIoKTsKKyAKKy0gICAgLy8gVGhyZWFkRW5naW5lIHdpbGwgZGVsZXRl IGYgd2hlbiBpdCBmaW5pc2hlcworLSAgICBhdXRvIGYgPSBuZXcgVGhyb3R0bGVGb3IoMCwgdG90 YWxJdGVyYXRpb25zKTsKKy0gICAgYXV0byBmdXR1cmUgPSBmLT5zdGFydEFzeW5jaHJvbm91c2x5 KCk7CistICAgIGZ1dHVyZS53YWl0Rm9yRmluaXNoZWQoKTsKKysgICAgVGhyb3R0bGVGb3IgZigw LCB0b3RhbEl0ZXJhdGlvbnMpOworKyAgICBmLnN0YXJ0QmxvY2tpbmcoKTsKKyAKKyAgICAgUUNP TVBBUkUoaXRlcmF0aW9ucy5sb2FkUmVsYXhlZCgpLCB0b3RhbEl0ZXJhdGlvbnMpOworIAorZGlm ZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFk ZW5naW5lL3RzdF9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUvdHN0X3F0Y29uY3VycmVudHRo cmVhZGVuZ2luZS5jcHAKK2luZGV4IGFjN2JlN2FjZGQuLjgxYmM2NGM4ZDkgMTAwNjQ0CistLS0g YS9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS90 c3RfcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8v Y29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUvdHN0X3F0Y29uY3VycmVudHRocmVh ZGVuZ2luZS5jcHAKK0BAIC02NSw5ICs2NSwxNiBAQCBwdWJsaWM6CisgCisgdm9pZCB0c3RfUXRD b25jdXJyZW50VGhyZWFkRW5naW5lOjpydW5EaXJlY3RseSgpCisgeworLSAgICBQcmludFVzZXIg KmVuZ2luZSA9IG5ldyBQcmludFVzZXIoKTsKKy0gICAgUUZ1dHVyZTx2b2lkPiBmID0gZW5naW5l LT5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgIGYud2FpdEZvckZpbmlzaGVkKCk7CisrICAg IHsKKysgICAgICAgIFByaW50VXNlciBlbmdpbmU7CisrICAgICAgICBlbmdpbmUuc3RhcnRTaW5n bGVUaHJlYWRlZCgpOworKyAgICAgICAgZW5naW5lLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgfQor KyAgICB7CisrICAgICAgICBQcmludFVzZXIgKmVuZ2luZSA9IG5ldyBQcmludFVzZXIoKTsKKysg ICAgICAgIFFGdXR1cmU8dm9pZD4gZiA9IGVuZ2luZS0+c3RhcnRBc3luY2hyb25vdXNseSgpOwor KyAgICAgICAgZi53YWl0Rm9yRmluaXNoZWQoKTsKKysgICAgfQorIH0KKyAKKyBjbGFzcyBTdHJp bmdSZXN1bHRVc2VyIDogcHVibGljIFRocmVhZEVuZ2luZTxRU3RyaW5nPgorQEAgLTk5LDEwICsx MDYsOCBAQCBwdWJsaWM6CisgCisgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpy ZXN1bHQoKQorIHsKKy0gICAgLy8gVGhyZWFkRW5naW5lIHdpbGwgZGVsZXRlICdlbmdpbmUnIHdo ZW4gaXQgZmluaXNoZXMKKy0gICAgYXV0byBlbmdpbmUgPSBuZXcgU3RyaW5nUmVzdWx0VXNlcigp OworLSAgICBhdXRvIGZ1dHVyZSA9IGVuZ2luZS0+c3RhcnRBc3luY2hyb25vdXNseSgpOworLSAg ICBRQ09NUEFSRShmdXR1cmUucmVzdWx0KCksIFFTdHJpbmcoIkZvbyIpKTsKKysgICAgU3RyaW5n UmVzdWx0VXNlciBlbmdpbmU7CisrICAgIFFDT01QQVJFKCplbmdpbmUuc3RhcnRCbG9ja2luZygp LCBRU3RyaW5nKCJGb28iKSk7CisgfQorIAorIGNsYXNzIFZvaWRSZXN1bHRVc2VyIDogcHVibGlj IFRocmVhZEVuZ2luZTx2b2lkPgorQEAgLTEyOCw5ICsxMzMsMTcgQEAgcHVibGljOgorIAorIHZv aWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6cnVuVGhyb3VnaFN0YXJ0ZXIoKQorIHsK Ky0gICAgVGhyZWFkRW5naW5lU3RhcnRlcjxRU3RyaW5nPiBzdGFydGVyID0gc3RhcnRUaHJlYWRF bmdpbmUobmV3IFN0cmluZ1Jlc3VsdFVzZXIoKSk7CistICAgIFFGdXR1cmU8UVN0cmluZz4gZiA9 IHN0YXJ0ZXIuc3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICBRQ09NUEFSRShmLnJlc3VsdCgp LCBRU3RyaW5nKCJGb28iKSk7CisrICAgIHsKKysgICAgICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXI8 UVN0cmluZz4gc3RhcnRlciA9IHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBTdHJpbmdSZXN1bHRVc2Vy KCkpOworKyAgICAgICAgUUZ1dHVyZTxRU3RyaW5nPiAgZiA9IHN0YXJ0ZXIuc3RhcnRBc3luY2hy b25vdXNseSgpOworKyAgICAgICAgUUNPTVBBUkUoZi5yZXN1bHQoKSwgUVN0cmluZygiRm9vIikp OworKyAgICB9CisrCisrICAgIHsKKysgICAgICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXI8UVN0cmlu Zz4gc3RhcnRlciA9IHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBTdHJpbmdSZXN1bHRVc2VyKCkpOwor KyAgICAgICAgUVN0cmluZyBzdHIgPSBzdGFydGVyLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAg IFFDT01QQVJFKHN0ciwgUVN0cmluZygiRm9vIikpOworKyAgICB9CisgfQorIAorIGNsYXNzIENh bmNlbFVzZXIgOiBwdWJsaWMgVGhyZWFkRW5naW5lPHZvaWQ+CitAQCAtMjEzLDYgKzIyNiwxMiBA QCB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OnRocm90dGxlKCkKKyAgICAgICAg IGYud2FpdEZvckZpbmlzaGVkKCk7CisgICAgICAgICBRQ09NUEFSRShjb3VudC5sb2FkUmVsYXhl ZCgpLCAwKTsKKyAgICAgfQorKworKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlcGVhdHM7ICsr aSkgeworKyAgICAgICAgVGhyb3R0bGVBbHdheXNVc2VyIHQ7CisrICAgICAgICB0LnN0YXJ0Qmxv Y2tpbmcoKTsKKysgICAgICAgIFFDT01QQVJFKGNvdW50LmxvYWRSZWxheGVkKCksIDApOworKyAg ICB9CisgfQorIAorIFFTZXQ8UVRocmVhZCAqPiB0aHJlYWRzOworQEAgLTI0OSwxNyArMjY4LDM1 IEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6dGhyZWFkQ291bnQoKQorIHsK KyAgICAgY29uc3QgaW50IHJlcGVhdHMgPSAxMDsKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBy ZXBlYXRzOyArK2kpIHsKKysgICAgICAgIFRocmVhZENvdW50VXNlciB0OworKyAgICAgICAgdC5z dGFydEJsb2NraW5nKCk7CisrICAgICAgICBpbnQgY291bnQgPSB0aHJlYWRzLmNvdW50KCk7Cisr ICAgICAgICBpbnQgY291bnRfZXhwZWN0ZWQgPSBRVGhyZWFkUG9vbDo6Z2xvYmFsSW5zdGFuY2Uo KS0+bWF4VGhyZWFkQ291bnQoKSArIDE7IC8vICsxIGZvciB0aGUgbWFpbiB0aHJlYWQuCisrICAg ICAgICBpZiAoY291bnQgIT0gY291bnRfZXhwZWN0ZWQpCisrICAgICAgICAgICAgUUVYUEVDVF9G QUlMKCIiLCAiUVRCVUctMjMzMzMiLCBBYm9ydCk7CisrICAgICAgICBRQ09NUEFSRShjb3VudCwg Y291bnRfZXhwZWN0ZWQpOworKworICAgICAgICAgKG5ldyBUaHJlYWRDb3VudFVzZXIoKSktPnN0 YXJ0QXN5bmNocm9ub3VzbHkoKS53YWl0Rm9yRmluaXNoZWQoKTsKKy0gICAgICAgIGNvbnN0IGF1 dG8gY291bnQgPSB0aHJlYWRzLmNvdW50KCk7CistICAgICAgICBjb25zdCBhdXRvIG1heFRocmVh ZENvdW50ID0gUVRocmVhZFBvb2w6Omdsb2JhbEluc3RhbmNlKCktPm1heFRocmVhZENvdW50KCk7 CistICAgICAgICBRVkVSSUZZKGNvdW50IDw9IG1heFRocmVhZENvdW50KTsKKy0gICAgICAgIFFW RVJJRlkoIXRocmVhZHMuY29udGFpbnMoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpKSk7CisrICAg ICAgICBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKysgICAgICAgIGNvdW50X2V4cGVjdGVkID0g UVRocmVhZFBvb2w6Omdsb2JhbEluc3RhbmNlKCktPm1heFRocmVhZENvdW50KCk7CisrICAgICAg ICBpZiAoY291bnQgIT0gY291bnRfZXhwZWN0ZWQpCisrICAgICAgICAgICAgUUVYUEVDVF9GQUlM KCIiLCAiUVRCVUctMjMzMzMiLCBBYm9ydCk7CisrICAgICAgICBRQ09NUEFSRShjb3VudCwgY291 bnRfZXhwZWN0ZWQpOworICAgICB9CisgCisgICAgIC8vIFNldCB0aGUgZmluaXNoIGZsYWcgaW1t ZWRpYXRlbHksIHRoaXMgc2hvdWxkIGdpdmUgdXMgb25lIHRocmVhZCBvbmx5LgorICAgICBmb3Ig KGludCBpID0gMDsgaSA8IHJlcGVhdHM7ICsraSkgeworKyAgICAgICAgVGhyZWFkQ291bnRVc2Vy IHQodHJ1ZSAvKmZpbmlzaEltbWVkaWF0ZWx5Ki8pOworKyAgICAgICAgdC5zdGFydEJsb2NraW5n KCk7CisrICAgICAgICBpbnQgY291bnQgPSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBpZiAo Y291bnQgIT0gMSkKKysgICAgICAgICAgICBRRVhQRUNUX0ZBSUwoIiIsICJRVEJVRy0yMzMzMyIs IEFib3J0KTsKKysgICAgICAgIFFDT01QQVJFKGNvdW50LCAxKTsKKysKKyAgICAgICAgIChuZXcg VGhyZWFkQ291bnRVc2VyKHRydWUgLypmaW5pc2hJbW1lZGlhdGVseSovKSktPnN0YXJ0QXN5bmNo cm9ub3VzbHkoKS53YWl0Rm9yRmluaXNoZWQoKTsKKy0gICAgICAgIGNvbnN0IGF1dG8gY291bnQg PSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKysg ICAgICAgIGlmIChjb3VudCAhPSAxKQorKyAgICAgICAgICAgIFFFWFBFQ1RfRkFJTCgiIiwgIlFU QlVHLTIzMzMzIiwgQWJvcnQpOworICAgICAgICAgUUNPTVBBUkUoY291bnQsIDEpOworICAgICAg ICAgUVZFUklGWSghdGhyZWFkcy5jb250YWlucyhRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkpKTsK KyAgICAgfQorQEAgLTQwMCw2ICs0MzcsNyBAQCBwdWJsaWM6CisgCisgdm9pZCB0c3RfUXRDb25j dXJyZW50VGhyZWFkRW5naW5lOjpleGNlcHRpb25zKCkKKyB7CisrICAgIC8vIEFzeW5jaHJvbm91 cyBtb2RlOgorICAgICB7CisgICAgICAgICBib29sIGNhdWdodCA9IGZhbHNlOworICAgICAgICAg dHJ5ICB7CitAQCAtNDEyLDYgKzQ1MCwzMiBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRF bmdpbmU6OmV4Y2VwdGlvbnMoKQorICAgICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBn ZXQgZXhjZXB0aW9uIik7CisgICAgIH0KKyAKKysgICAgLy8gQmxvY2tpbmcgbW9kZToKKysgICAg Ly8gdGVzdCB0aHJvd2luZyB0aGUgZXhjZXB0aW9uIGZyb20gYSB3b3JrZXIgdGhyZWFkLgorKyAg ICB7CisrICAgICAgICBib29sIGNhdWdodCA9IGZhbHNlOworKyAgICAgICAgdHJ5ICB7CisrICAg ICAgICAgICAgUXRDb25jdXJyZW50RXhjZXB0aW9uVGhyb3dlciBlKFFUaHJlYWQ6OmN1cnJlbnRU aHJlYWQoKSk7CisrICAgICAgICAgICAgZS5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICB9IGNh dGNoIChjb25zdCBRRXhjZXB0aW9uICYpIHsKKysgICAgICAgICAgICBjYXVnaHQgPSB0cnVlOwor KyAgICAgICAgfQorKyAgICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0 aW9uIik7CisrICAgIH0KKysKKysgICAgLy8gdGVzdCB0aHJvd2luZyB0aGUgZXhjZXB0aW9uIGZy b20gdGhlIG1haW4gdGhyZWFkIChkaWZmZXJlbnQgY29kZSBwYXRoKQorKyAgICB7CisrICAgICAg ICBib29sIGNhdWdodCA9IGZhbHNlOworKyAgICAgICAgdHJ5ICB7CisrICAgICAgICAgICAgUXRD b25jdXJyZW50RXhjZXB0aW9uVGhyb3dlciBlKDApOworKyAgICAgICAgICAgIGUuc3RhcnRCbG9j a2luZygpOworKyAgICAgICAgfSBjYXRjaCAoY29uc3QgUUV4Y2VwdGlvbiAmKSB7CisrICAgICAg ICAgICAgY2F1Z2h0ID0gdHJ1ZTsKKysgICAgICAgIH0KKysgICAgICAgIFFWRVJJRlkyKGNhdWdo dCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworKyAgICB9CisrCisrICAgIC8vIEFzeW5jaHJv bm91cyBtb2RlOgorICAgICB7CisgICAgICAgICBib29sIGNhdWdodCA9IGZhbHNlOworICAgICAg ICAgdHJ5ICB7CitAQCAtNDIzLDYgKzQ4NywzMSBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJl YWRFbmdpbmU6OmV4Y2VwdGlvbnMoKQorICAgICAgICAgfQorICAgICAgICAgUVZFUklGWTIoY2F1 Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7CisgICAgIH0KKysKKysgICAgLy8gQmxvY2tp bmcgbW9kZToKKysgICAgLy8gdGVzdCB0aHJvd2luZyB0aGUgZXhjZXB0aW9uIGZyb20gYSB3b3Jr ZXIgdGhyZWFkLgorKyAgICB7CisrICAgICAgICBib29sIGNhdWdodCA9IGZhbHNlOworKyAgICAg ICAgdHJ5ICB7CisrICAgICAgICAgICAgVW5yZWxhdGVkRXhjZXB0aW9uVGhyb3dlciBlKFFUaHJl YWQ6OmN1cnJlbnRUaHJlYWQoKSk7CisrICAgICAgICAgICAgZS5zdGFydEJsb2NraW5nKCk7Cisr ICAgICAgICB9IGNhdGNoIChjb25zdCBRVW5oYW5kbGVkRXhjZXB0aW9uICYpIHsKKysgICAgICAg ICAgICBjYXVnaHQgPSB0cnVlOworKyAgICAgICAgfQorKyAgICAgICAgUVZFUklGWTIoY2F1Z2h0 LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7CisrICAgIH0KKysKKysgICAgLy8gdGVzdCB0aHJv d2luZyB0aGUgZXhjZXB0aW9uIGZyb20gdGhlIG1haW4gdGhyZWFkIChkaWZmZXJlbnQgY29kZSBw YXRoKQorKyAgICB7CisrICAgICAgICBib29sIGNhdWdodCA9IGZhbHNlOworKyAgICAgICAgdHJ5 ICB7CisrICAgICAgICAgICAgVW5yZWxhdGVkRXhjZXB0aW9uVGhyb3dlciBlKDApOworKyAgICAg ICAgICAgIGUuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgfSBjYXRjaCAoY29uc3QgUVVuaGFu ZGxlZEV4Y2VwdGlvbiAmKSB7CisrICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsKKysgICAgICAg IH0KKysgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOwor KyAgICB9CisgfQorIAorICNlbmRpZgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2Nv cmVsaWIvaW8vcWJ1ZmZlci90c3RfcWJ1ZmZlci5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3Jl bGliL2lvL3FidWZmZXIvdHN0X3FidWZmZXIuY3BwCitpbmRleCA0OTY4NzQyMTEwLi5mNGMzZmI3 MTFkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xYnVmZmVyL3Rz dF9xYnVmZmVyLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xYnVmZmVy L3RzdF9xYnVmZmVyLmNwcAorQEAgLTQyLDYgKzQyLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAg dm9pZCB3cml0ZUJsb2NrX2RhdGEoKTsKKyAgICAgdm9pZCB3cml0ZUJsb2NrKCk7CisgICAgIHZv aWQgc2VlaygpOworKyAgICB2b2lkIGludmFsaWRTZWVrcygpOworICAgICB2b2lkIHNlZWtUZXN0 X2RhdGEoKTsKKyAgICAgdm9pZCBzZWVrVGVzdCgpOworICAgICB2b2lkIHJlYWRfcmF3ZGF0YSgp OworQEAgLTI4Niw2ICsyODcsMjkgQEAgdm9pZCB0c3RfUUJ1ZmZlcjo6c2VlaygpCisgICAgIFFD T01QQVJFKGJ1ZmZlci5zaXplKCksIHBvcyk7CisgfQorIAorK3ZvaWQgdHN0X1FCdWZmZXI6Omlu dmFsaWRTZWVrcygpCisreworKyAgICBpZiBjb25zdGV4cHIgKHNpemVvZihxc2l6ZXR5cGUpID09 IHNpemVvZihxaW50NjQpKSB7CisrICAgICAgICAvLyBzaXplb2YocXNpemV0eXBlKSA9PSBzaXpl b2YocWludDY0KSwgc28gKzEgd291bGQgb3ZlcmZsb3cKKysgICAgICAgIFFTS0lQKCJUaGlzIGlz IGEgMzItYml0LW9ubHkgdGVzdC4iKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIFFCdWZmZXIg YnVmZmVyOworKyAgICAgICAgYnVmZmVyLm9wZW4oUUlPRGV2aWNlOjpXcml0ZU9ubHkpOworKyAg ICAgICAgUUNPTVBBUkUoYnVmZmVyLmJ1ZmZlcigpLnNpemUoKSwgcXNpemV0eXBlKDApKTsKKysg ICAgICAgIFFDT01QQVJFKGJ1ZmZlci5wb3MoKSwgcWludDY0KDApKTsKKysgICAgICAgIGNvbnN0 ZXhwciBxaW50NjQgTWF4UUJ5dGVBcnJheUNhcGFjaXR5ID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8 cXNpemV0eXBlPjo6bWF4KSgpOworKyAgICAgICAgLy8gdGhpcyBzaG91bGQgZmFpbCBmYXN0LCBu b3QgYWZ0ZXIgdHJ5aW5nIHRvIGFsbG9jYXRlIG5lYXJseSAyIEdpQiBvZiBkYXRhLAorKyAgICAg ICAgLy8gcG90ZW50aWFsbHkgY3Jhc2hpbmcgaW4gdGhlIHByb2Nlc3M6CisrICAgICAgICBRVkVS SUZZKCFidWZmZXIuc2VlaygyICogTWF4UUJ5dGVBcnJheUNhcGFjaXR5IC0gMSkpOworKyAgICAg ICAgUUNPTVBBUkUoYnVmZmVyLmJ1ZmZlcigpLnNpemUoKSwgcXNpemV0eXBlKDApKTsKKysgICAg ICAgIFFDT01QQVJFKGJ1ZmZlci5wb3MoKSwgcWludDY0KDApKTsKKysgICAgICAgIC8vIGRpdHRv OgorKyAgICAgICAgUVZFUklGWSghYnVmZmVyLnNlZWsoTWF4UUJ5dGVBcnJheUNhcGFjaXR5ICsg MSkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLmJ1ZmZlcigpLnNpemUoKSwgcXNpemV0eXBl KDApKTsKKysgICAgICAgIFFDT01QQVJFKGJ1ZmZlci5wb3MoKSwgcWludDY0KDApKTsKKysgICAg fQorK30KKysKKyB2b2lkIHRzdF9RQnVmZmVyOjpzZWVrVGVzdF9kYXRhKCkKKyB7CisgICAgIHdy aXRlQmxvY2tfZGF0YSgpOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIv aW8vcWlvZGV2aWNlL3RzdF9xaW9kZXZpY2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxp Yi9pby9xaW9kZXZpY2UvdHN0X3Fpb2RldmljZS5jcHAKK2luZGV4IGRhNTMyNzU5NGMuLjRhMDRl MGY3YzYgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fpb2Rldmlj ZS90c3RfcWlvZGV2aWNlLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9x aW9kZXZpY2UvdHN0X3Fpb2RldmljZS5jcHAKK0BAIC01NjEsNyArNTYxLDggQEAgcHJvdGVjdGVk OgorICAgICBxaW50NjQgcmVhZERhdGEoY2hhciAqZGF0YSwgcWludDY0IG1heFNpemUpIG92ZXJy aWRlCisgICAgIHsKKyAgICAgICAgIG1heFNpemUgPSBxTWluKG1heFNpemUsIHFpbnQ2NChidWYt PnNpemUoKSAtIG9mZnNldCkpOworLSAgICAgICAgbWVtY3B5KGRhdGEsIGJ1Zi0+Y29uc3REYXRh KCkgKyBvZmZzZXQsIG1heFNpemUpOworKyAgICAgICAgaWYgKG1heFNpemUgPiAwKQorKyAgICAg ICAgICAgIG1lbWNweShkYXRhLCBidWYtPmNvbnN0RGF0YSgpICsgb2Zmc2V0LCBtYXhTaXplKTsK KyAgICAgICAgIG9mZnNldCArPSBtYXhTaXplOworICAgICAgICAgcmV0dXJuIG1heFNpemU7Cisg ICAgIH0KK0BAIC02MDQsMTMgKzYwNSwxNSBAQCBwcm90ZWN0ZWQ6CisgICAgIHFpbnQ2NCByZWFk RGF0YShjaGFyICpkYXRhLCBxaW50NjQgbWF4U2l6ZSkgb3ZlcnJpZGUKKyAgICAgeworICAgICAg ICAgbWF4U2l6ZSA9IHFNaW4obWF4U2l6ZSwgcWludDY0KGJ1Zi5zaXplKCkgLSBwb3MoKSkpOwor LSAgICAgICAgbWVtY3B5KGRhdGEsIGJ1Zi5jb25zdERhdGEoKSArIHBvcygpLCBtYXhTaXplKTsK KysgICAgICAgIGlmIChtYXhTaXplID4gMCkKKysgICAgICAgICAgICBtZW1jcHkoZGF0YSwgYnVm LmNvbnN0RGF0YSgpICsgcG9zKCksIG1heFNpemUpOworICAgICAgICAgcmV0dXJuIG1heFNpemU7 CisgICAgIH0KKyAgICAgcWludDY0IHdyaXRlRGF0YShjb25zdCBjaGFyICpkYXRhLCBxaW50NjQg bWF4U2l6ZSkgb3ZlcnJpZGUKKyAgICAgeworICAgICAgICAgbWF4U2l6ZSA9IHFNaW4obWF4U2l6 ZSwgcWludDY0KGJ1Zi5zaXplKCkgLSBwb3MoKSkpOworLSAgICAgICAgbWVtY3B5KGJ1Zi5kYXRh KCkgKyBwb3MoKSwgZGF0YSwgbWF4U2l6ZSk7CisrICAgICAgICBpZiAobWF4U2l6ZSA+IDApCisr ICAgICAgICAgICAgbWVtY3B5KGJ1Zi5kYXRhKCkgKyBwb3MoKSwgZGF0YSwgbWF4U2l6ZSk7Cisg ICAgICAgICByZXR1cm4gbWF4U2l6ZTsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcXByb2Nlc3MvdHN0X3Fwcm9jZXNzLmNwcCBiL3F0YmFzZS90 ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcXByb2Nlc3MvdHN0X3Fwcm9jZXNzLmNwcAoraW5kZXggZGI2 MGJlYWQ2NC4uZjM0NWE0NDQxNCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVs aWIvaW8vcXByb2Nlc3MvdHN0X3Fwcm9jZXNzLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8v Y29yZWxpYi9pby9xcHJvY2Vzcy90c3RfcXByb2Nlc3MuY3BwCitAQCAtMSw3ICsxLDggQEAKKyAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorICoqCisgKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBD b21wYW55IEx0ZC4KKy0qKiBDb3B5cmlnaHQgKEMpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24uCisr KiogQ29weXJpZ2h0IChDKSAyMDIwIFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb3B5cmlnaHQg KEMpIDIwMjIgSW50ZWwgQ29ycG9yYXRpb24uCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQu aW8vbGljZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRlc3Qgc3Vp dGUgb2YgdGhlIFF0IFRvb2xraXQuCitAQCAtMTUwLDYgKzE1MSw4IEBAIHByaXZhdGUgc2xvdHM6 CisgICAgIHZvaWQgc3RhcnRTdG9wU3RhcnRTdG9wQnVmZmVycygpOworICAgICB2b2lkIHByb2Nl c3NFdmVudHNJbkFSZWFkeVJlYWRTbG90X2RhdGEoKTsKKyAgICAgdm9pZCBwcm9jZXNzRXZlbnRz SW5BUmVhZHlSZWFkU2xvdCgpOworKyAgICB2b2lkIHN0YXJ0RnJvbUN1cnJlbnRXb3JraW5nRGly X2RhdGEoKTsKKysgICAgdm9pZCBzdGFydEZyb21DdXJyZW50V29ya2luZ0RpcigpOworIAorICAg ICAvLyBrZWVwIHRoZXNlIGF0IHRoZSBlbmQsIHNpbmNlIHRoZXkgdXNlIGxvdHMgb2YgcHJvY2Vz c2VzIGFuZCBzb21ldGltZXMKKyAgICAgLy8gY2F1c2VkIG9ic2N1cmUgZmFpbHVyZXMgdG8gb2Nj dXIgaW4gdGVzdHMgdGhhdCBmb2xsb3dlZCB0aGVtIChlc3AuIG9uIHRoZSBNYWMpCitAQCAtMjcz MSw1ICsyNzM0LDk0IEBAIHZvaWQgdHN0X1FQcm9jZXNzOjpmaW5pc2hQcm9jZXNzQmVmb3JlUmVh ZGluZ0RvbmVfZGVwcmVjYXRlZCgpCisgCisgI2VuZGlmCisgCisrZW51bSBjbGFzcyBDaGRpck1v ZGUgeworKyAgICBOb25lID0gMCwKKysgICAgSW5QYXJlbnQsCisrICAgIEluQ2hpbGQKKyt9Owor K1FfREVDTEFSRV9NRVRBVFlQRShDaGRpck1vZGUpCisrCisrdm9pZCB0c3RfUVByb2Nlc3M6OnN0 YXJ0RnJvbUN1cnJlbnRXb3JraW5nRGlyX2RhdGEoKQorK3sKKysgICAgcVJlZ2lzdGVyTWV0YVR5 cGU8Q2hkaXJNb2RlPigpOworKyAgICBRVGVzdDo6YWRkQ29sdW1uPFFTdHJpbmc+KCJwcm9ncmFt UHJlZml4Iik7CisrICAgIFFUZXN0OjphZGRDb2x1bW48Q2hkaXJNb2RlPigiY2hkaXJNb2RlIik7 CisrICAgIFFUZXN0OjphZGRDb2x1bW48Ym9vbD4oInN1Y2Nlc3MiKTsKKysKKysgICAgY29uc3Rl eHByIGJvb2wgSXNXaW5kb3dzID0gdHJ1ZQorKyNpZmRlZiBRX09TX1VOSVgKKysgICAgICAgICAg ICAmJiBmYWxzZQorKyNlbmRpZgorKyAgICAgICAgICAgIDsKKysKKysgICAgLy8gYmFzZWxpbmU6 IHRyeWluZyB0byBleGVjdXRlIHRoZSBkaXJlY3RvcnksIHRoaXMgY2FuJ3QgcG9zc2libHkgc3Vj Y2VlZCEKKysgICAgUVRlc3Q6Om5ld1JvdygicGxhaW4tc2FtZS1jd2QiKSA8PCBRU3RyaW5nKCkg PDwgQ2hkaXJNb2RlOjpOb25lIDw8IGZhbHNlOworKworKyAgICAvLyBjcm9zcy1wbGF0Zm9ybSBi ZWhhdmlvcjogbmVpdGhlciBPUyBzZWFyY2hlcyB0aGUgc2V0V29ya2luZ0RpcmVjdG9yeSgpCisr ICAgIC8vIGRpciB3aXRob3V0ICIuLyIKKysgICAgUVRlc3Q6Om5ld1JvdygicGxhaW4tY2hpbGQt Y2hkaXIiKSA8PCBRU3RyaW5nKCkgPDwgQ2hkaXJNb2RlOjpJbkNoaWxkIDw8IGZhbHNlOworKwor KyAgICAvLyBjcm9zcy1wbGF0Zm9ybSBiZWhhdmlvcjogYm90aCBPU2VzIHNlYXJjaCB0aGUgcGFy ZW50J3MgQ1dEIHdpdGggIi4vIgorKyAgICBRVGVzdDo6bmV3Um93KCJwcmVmaXhlZC1wYXJlbnQt Y2hkaXIiKSA8PCAiLi8iIDw8IENoZGlyTW9kZTo6SW5QYXJlbnQgPDwgdHJ1ZTsKKysKKysgICAg Ly8gb3Bwb3NpdGUgYmVoYXZpb3JzOiBXaW5kb3dzIHNlYXJjaGVzIHRoZSBwYXJlbnQncyBDV0Qg YW5kIFVuaXggc2VhcmNoZXMKKysgICAgLy8gdGhlIGNoaWxkJ3Mgd2l0aCAiLi8iCisrICAgIFFU ZXN0OjpuZXdSb3coInByZWZpeGVkLWNoaWxkLWNoZGlyIikgPDwgIi4vIiA8PCBDaGRpck1vZGU6 OkluQ2hpbGQgPDwgIUlzV2luZG93czsKKysKKysgICAgLy8gV2luZG93cyBzZWFyY2hlcyB0aGUg cGFyZW50J3MgQ1dEIHdpdGhvdXQgIi4vIgorKyAgICBRVGVzdDo6bmV3Um93KCJwbGFpbi1wYXJl bnQtY2hkaXIiKSA8PCBRU3RyaW5nKCkgPDwgQ2hkaXJNb2RlOjpJblBhcmVudCA8PCBJc1dpbmRv d3M7CisrfQorKworK3ZvaWQgdHN0X1FQcm9jZXNzOjpzdGFydEZyb21DdXJyZW50V29ya2luZ0Rp cigpCisreworKyAgICBRRkVUQ0goUVN0cmluZywgcHJvZ3JhbVByZWZpeCk7CisrICAgIFFGRVRD SChDaGRpck1vZGUsIGNoZGlyTW9kZSk7CisrICAgIFFGRVRDSChib29sLCBzdWNjZXNzKTsKKysK KysgICAgUVByb2Nlc3MgcHJvY2VzczsKKysgICAgcVJlZ2lzdGVyTWV0YVR5cGU8UVByb2Nlc3M6 OlByb2Nlc3NFcnJvcj4oKTsKKysgICAgUVNpZ25hbFNweSBlcnJvclNweSgmcHJvY2VzcywgJlFQ cm9jZXNzOjplcnJvck9jY3VycmVkKTsKKysgICAgUVZFUklGWShlcnJvclNweS5pc1ZhbGlkKCkp OworKworKyAgICAvLyBib3RoIHRoZSBkaXIgbmFtZSBhbmQgdGhlIGV4ZWN1dGFibGUgbmFtZQor KyAgICBjb25zdCBRU3RyaW5nIHRhcmdldCA9IFFTdHJpbmdMaXRlcmFsKCJ0ZXN0UHJvY2Vzc05v cm1hbCIpOworKyAgICBwcm9jZXNzLnNldFByb2dyYW0ocHJvZ3JhbVByZWZpeCArIHRhcmdldCk7 CisrCisrI2lmZGVmIFFfT1NfVU5JWAorKyAgICAvLyBSZXNldCBQQVRILCB0byBiZSBzdXJlIGl0 IGRvZXNuJ3QgY29udGFpbiAuIG9yIHRoZSBlbXB0eSBwYXRoLgorKyAgICAvLyBXZSBjYW4ndCBk byB0aGlzIG9uIFdpbmRvd3MgYmVjYXVzZSBETExzIGFyZSBzZWFyY2hlZCBpbiBQQVRICisrICAg IC8vIGFuZCBXaW5kb3dzIGFsd2F5cyBzZWFyY2hlcyAiLiIgYW55d2F5LgorKyAgICBhdXRvIHJl c3RvcmVFbnYgPSBxU2NvcGVHdWFyZChbb2xkID0gcWdldGVudigiUEFUSCIpXSB7CisrICAgICAg ICBxcHV0ZW52KCJQQVRIIiwgb2xkKTsKKysgICAgfSk7CisrICAgIHFwdXRlbnYoIlBBVEgiLCAi LyIpOworKyNlbmRpZgorKworKyAgICBzd2l0Y2ggKGNoZGlyTW9kZSkgeworKyAgICBjYXNlIENo ZGlyTW9kZTo6SW5QYXJlbnQ6IHsKKysgICAgICAgIGF1dG8gcmVzdG9yZUN3ZCA9IHFTY29wZUd1 YXJkKFtvbGQgPSBRRGlyOjpjdXJyZW50UGF0aCgpXSB7CisrICAgICAgICAgICAgUURpcjo6c2V0 Q3VycmVudChvbGQpOworKyAgICAgICAgfSk7CisrICAgICAgICBRVkVSSUZZKFFEaXI6OnNldEN1 cnJlbnQodGFyZ2V0KSk7CisrICAgICAgICBwcm9jZXNzLnN0YXJ0KCk7CisrICAgICAgICBicmVh azsKKysgICAgfQorKyAgICBjYXNlIENoZGlyTW9kZTo6SW5DaGlsZDoKKysgICAgICAgIHByb2Nl c3Muc2V0V29ya2luZ0RpcmVjdG9yeSh0YXJnZXQpOworKyAgICAgICAgUV9GQUxMVEhST1VHSCgp OworKyAgICBjYXNlIENoZGlyTW9kZTo6Tm9uZToKKysgICAgICAgIHByb2Nlc3Muc3RhcnQoKTsK KysgICAgICAgIGJyZWFrOworKyAgICB9CisrCisrICAgIFFDT01QQVJFKHByb2Nlc3Mud2FpdEZv clN0YXJ0ZWQoKSwgc3VjY2Vzcyk7CisrICAgIFFDT01QQVJFKGVycm9yU3B5LmNvdW50KCksIGlu dCghc3VjY2VzcykpOworKyAgICBpZiAoc3VjY2VzcykgeworKyAgICAgICAgUVZFUklGWShwcm9j ZXNzLndhaXRGb3JGaW5pc2hlZCgpKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIFFDT01QQVJF KHByb2Nlc3MuZXJyb3IoKSwgUVByb2Nlc3M6OkZhaWxlZFRvU3RhcnQpOworKyAgICB9CisrfQor KworIFFURVNUX01BSU4odHN0X1FQcm9jZXNzKQorICNpbmNsdWRlICJ0c3RfcXByb2Nlc3MubW9j IgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaXRlbW1vZGVscy9xY29u Y2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsL3RzdF9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVs LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaXRlbW1vZGVscy9xY29uY2F0ZW5hdGV0 YWJsZXNwcm94eW1vZGVsL3RzdF9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsLmNwcAoraW5k ZXggZTFlYTdhNDU1Mi4uOTA5NzJjYWE1NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRv L2NvcmVsaWIvaXRlbW1vZGVscy9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsL3RzdF9xY29u Y2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29y ZWxpYi9pdGVtbW9kZWxzL3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwvdHN0X3Fjb25jYXRl bmF0ZXRhYmxlc3Byb3h5bW9kZWwuY3BwCitAQCAtMTE3LDYgKzExNyw3IEBAIHByaXZhdGUgUV9T TE9UUzoKKyAgICAgdm9pZCBzaG91bGRQcm9wYWdhdGVEcm9wQWZ0ZXJMYXN0Um93X2RhdGEoKTsK KyAgICAgdm9pZCBzaG91bGRQcm9wYWdhdGVEcm9wQWZ0ZXJMYXN0Um93KCk7CisgICAgIHZvaWQg cXRidWc5MTc4OCgpOworKyAgICB2b2lkIHF0YnVnOTE4NzgoKTsKKyAKKyBwcml2YXRlOgorICAg ICBRU3RhbmRhcmRJdGVtTW9kZWwgbW9kOworQEAgLTg0Myw2ICs4NDQsMjIgQEAgdm9pZCB0c3Rf UUNvbmNhdGVuYXRlVGFibGVzUHJveHlNb2RlbDo6cXRidWc5MTc4OCgpCisgICAgIFFDT01QQVJF KHByb3h5Q29uY2F0LmNvbHVtbkNvdW50KCksIDApOworIH0KKyAKKyt2b2lkIHRzdF9RQ29uY2F0 ZW5hdGVUYWJsZXNQcm94eU1vZGVsOjpxdGJ1ZzkxODc4KCkKKyt7CisrICAgIFFTdGFuZGFyZEl0 ZW1Nb2RlbCBtOworKyAgICBtLnNldFJvd0NvdW50KDQpOworKyAgICBtLnNldENvbHVtbkNvdW50 KDQpOworKworKyAgICBRQ29uY2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVsIHBtOworKyAgICBRU29y dEZpbHRlclByb3h5TW9kZWwgcHJveHlGaWx0ZXI7CisrICAgIHByb3h5RmlsdGVyLnNldFNvdXJj ZU1vZGVsKCZwbSk7CisrICAgIHByb3h5RmlsdGVyLnNldEZpbHRlckZpeGVkU3RyaW5nKCJzb21l dGhpbmciKTsKKysgICAgcG0uYWRkU291cmNlTW9kZWwoJm0pOyAgLy8gVGhpcyBzaG91bGQgbm90 IGFzc2VydAorKworKyAgICBRQ09NUEFSRShwbS5jb2x1bW5Db3VudCgpLCA0KTsKKysgICAgUUNP TVBBUkUocG0ucm93Q291bnQoKSwgNCk7CisrfQorKworIFFURVNUX0dVSUxFU1NfTUFJTih0c3Rf UUNvbmNhdGVuYXRlVGFibGVzUHJveHlNb2RlbCkKKyAKKyAjaW5jbHVkZSAidHN0X3Fjb25jYXRl bmF0ZXRhYmxlc3Byb3h5bW9kZWwubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRv L2NvcmVsaWIva2VybmVsL3FvYmplY3QvdHN0X3FvYmplY3QuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vY29yZWxpYi9rZXJuZWwvcW9iamVjdC90c3RfcW9iamVjdC5jcHAKK2luZGV4IDliZDY2YzA4 MzUuLmVkNGEwYmFlNWQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2tl cm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29y ZWxpYi9rZXJuZWwvcW9iamVjdC90c3RfcW9iamVjdC5jcHAKK0BAIC0xNTgsNiArMTU4LDcgQEAg cHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBudWxsUmVjZWl2ZXIoKTsKKyAgICAgdm9pZCBmdW5j dG9yUmVmZXJlbmNlc0Nvbm5lY3Rpb24oKTsKKyAgICAgdm9pZCBkaXNjb25uZWN0RGlzY29ubmVj dHMoKTsKKysgICAgdm9pZCBkZWNsYXJhdGl2ZURhdGEoKTsKKyB9OworIAorIHN0cnVjdCBRT2Jq ZWN0Q3JlYXRlZE9uU2h1dGRvd24KK0BAIC03Njc5LDUgKzc2ODAsODEgQEAgdm9pZCB0c3RfUU9i amVjdDo6ZGlzY29ubmVjdERpc2Nvbm5lY3RzKCkKKyBRX1NUQVRJQ19BU1NFUlQoUXRQcml2YXRl OjpIYXNRX09CSkVDVF9NYWNybzx0c3RfUU9iamVjdD46OlZhbHVlKTsKKyBRX1NUQVRJQ19BU1NF UlQoIVF0UHJpdmF0ZTo6SGFzUV9PQkpFQ1RfTWFjcm88U2libGluZ0RlbGV0ZXI+OjpWYWx1ZSk7 CisgCisrI2lmZGVmIFFUX0JVSUxEX0lOVEVSTkFMCisrLyoKKysgICAgU2luY2UgUU9iamVjdFBy aXZhdGUgc3RvcmVzIHRoZSBkZWNsYXJhdGl2ZURhdGEgcG9pbnRlciBpbiBhIHVuaW9uIHdpdGgg dGhlIHBvaW50ZXIKKysgICAgdG8gdGhlIGN1cnJlbnRseSBkZXN0cm95ZWQgY2hpbGQsIGNhbGxz IHRvIHRoZSBRdERlY2xhcmF0aXZlIGhhbmRsZXJzIG5lZWQgdG8gYmUKKysgICAgY29ycmVjdGx5 IGd1YXJkZWQuIFFUQlVHLTEwNTI4NgorKyovCisrbmFtZXNwYWNlIFF0RGVjbGFyYXRpdmUgewor K3N0YXRpYyBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGEgKnRoZURhdGE7CisrCisrc3RhdGljIHZv aWQgZGVzdHJveWVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqZGF0YSwgUU9iamVjdCAqKQor K3sKKysgICAgUUNPTVBBUkUoZGF0YSwgdGhlRGF0YSk7CisrfQorK3N0YXRpYyB2b2lkIHNpZ25h bEVtaXR0ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhICpkYXRhLCBRT2JqZWN0ICosIGludCwg dm9pZCAqKikKKyt7CisrICAgIFFDT01QQVJFKGRhdGEsIHRoZURhdGEpOworK30KKysvLyB3ZSBj YW4ndCB1c2UgUUNPTVBBUkUgaW4gdGhlIG5leHQgdHdvIGZ1bmN0aW9ucywgYXMgdGhleSBkb24n dCByZXR1cm4gdm9pZAorK3N0YXRpYyBpbnQgcmVjZWl2ZXJzKFFBYnN0cmFjdERlY2xhcmF0aXZl RGF0YSAqZGF0YSwgY29uc3QgUU9iamVjdCAqLCBpbnQpCisreworKyAgICBRVGVzdDo6cUNvbXBh cmUoZGF0YSwgdGhlRGF0YSwgImRhdGEiLCAidGhlRGF0YSIsIF9fRklMRV9fLCBfX0xJTkVfXyk7 CisrICAgIHJldHVybiAwOworK30KKytzdGF0aWMgYm9vbCBpc1NpZ25hbENvbm5lY3RlZChRQWJz dHJhY3REZWNsYXJhdGl2ZURhdGEgKmRhdGEsIGNvbnN0IFFPYmplY3QgKiwgaW50KQorK3sKKysg ICAgUVRlc3Q6OnFDb21wYXJlKGRhdGEsIHRoZURhdGEsICJkYXRhIiwgInRoZURhdGEiLCBfX0ZJ TEVfXywgX19MSU5FX18pOworKyAgICByZXR1cm4gdHJ1ZTsKKyt9CisrCisrY2xhc3MgT2JqZWN0 IDogcHVibGljIFFPYmplY3QKKyt7CisrICAgIFFfT0JKRUNUCisrcHVibGljOgorKyAgICB1c2lu ZyBRT2JqZWN0OjpRT2JqZWN0OworKyAgICB+T2JqZWN0KCkKKysgICAgeworKyAgICAgICAgaWYg KE9iamVjdCAqcCA9IHN0YXRpY19jYXN0PE9iamVjdCAqPihwYXJlbnQoKSkpCisrICAgICAgICAg ICAgcC0+ZW1pdFNpZ25hbCgpOworKyAgICB9CisrCisrICAgIHZvaWQgZW1pdFNpZ25hbCgpCisr ICAgIHsKKysgICAgICAgIGVtaXQgdGhlU2lnbmFsKCk7CisrICAgIH0KKysKKytzaWduYWxzOgor KyAgICB2b2lkIHRoZVNpZ25hbCgpOworK307CisrCisrfQorKyNlbmRpZgorKworK3ZvaWQgdHN0 X1FPYmplY3Q6OmRlY2xhcmF0aXZlRGF0YSgpCisreworKyNpZmRlZiBRVF9CVUlMRF9JTlRFUk5B TAorKyAgICBRU2NvcGVkVmFsdWVSb2xsYmFjayBkZXN0cm95ZWQoUUFic3RyYWN0RGVjbGFyYXRp dmVEYXRhOjpkZXN0cm95ZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR dERlY2xhcmF0aXZlOjpkZXN0cm95ZWQpOworKyAgICBRU2NvcGVkVmFsdWVSb2xsYmFjayBzaWdu YWxFbWl0dGVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6c2lnbmFsRW1pdHRlZCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdERlY2xhcmF0aXZlOjpzaWduYWxF bWl0dGVkKTsKKysgICAgUVNjb3BlZFZhbHVlUm9sbGJhY2sgcmVjZWl2ZXJzKFFBYnN0cmFjdERl Y2xhcmF0aXZlRGF0YTo6cmVjZWl2ZXJzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUXREZWNsYXJhdGl2ZTo6cmVjZWl2ZXJzKTsKKysgICAgUVNjb3BlZFZhbHVlUm9sbGJh Y2sgaXNTaWduYWxDb25uZWN0ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjppc1NpZ25hbENv bm5lY3RlZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXRE ZWNsYXJhdGl2ZTo6aXNTaWduYWxDb25uZWN0ZWQpOworKworKyAgICBRdERlY2xhcmF0aXZlOjpP YmplY3QgcDsKKysgICAgUU9iamVjdFByaXZhdGUgKnByaXYgPSBRT2JqZWN0UHJpdmF0ZTo6Z2V0 KCZwKTsKKysgICAgcHJpdi0+ZGVjbGFyYXRpdmVEYXRhID0gUXREZWNsYXJhdGl2ZTo6dGhlRGF0 YSA9IG5ldyBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE7CisrCisrICAgIGNvbm5lY3QoJnAsICZR dERlY2xhcmF0aXZlOjpPYmplY3Q6OnRoZVNpZ25hbCwgJnAsIFtdeworKyAgICB9KTsKKysKKysg ICAgUXREZWNsYXJhdGl2ZTo6T2JqZWN0ICpjaGlsZCA9IG5ldyBRdERlY2xhcmF0aXZlOjpPYmpl Y3Q7CisrICAgIGNoaWxkLT5zZXRQYXJlbnQoJnApOworKyNlbmRpZgorK30KKysKKyBRVEVTVF9N QUlOKHRzdF9RT2JqZWN0KQorICNpbmNsdWRlICJ0c3RfcW9iamVjdC5tb2MiCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS90c3Rf cW1pbWVkYXRhYmFzZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBlcy9x bWltZWRhdGFiYXNlL3RzdF9xbWltZWRhdGFiYXNlLmNwcAoraW5kZXggMGVhNDIyZWNiYy4uMWEz MjU2NTM0YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5cGVz L3FtaW1lZGF0YWJhc2UvdHN0X3FtaW1lZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMv YXV0by9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlL3RzdF9xbWltZWRhdGFiYXNlLmNw cAorQEAgLTcwLDE1ICs3MCwxNSBAQCBzdGF0aWMgaW5saW5lIFFTdHJpbmcgdGVzdFN1aXRlV2Fy bmluZygpCisgCisgICAgIFFTdHJpbmcgcmVzdWx0OworICAgICBRVGV4dFN0cmVhbSBzdHIoJnJl c3VsdCk7CistICAgIHN0ciA8PCAiXG5DYW5ub3QgZmluZCB0aGUgc2hhcmVkLW1pbWUtaW5mbyB0 ZXN0IHN1aXRlXG5zdGFydGluZyBmcm9tOiAiCisrICAgIHN0ciA8PCAiXG5DYW5ub3QgZmluZCB0 aGUgc2hhcmVkLW1pbWUtaW5mbyB0ZXN0IHN1aXRlXG5pbiB0aGUgcGFyZW50IG9mOiAiCisgICAg ICAgICA8PCBRRGlyOjp0b05hdGl2ZVNlcGFyYXRvcnMoUURpcjo6Y3VycmVudFBhdGgoKSkgPDwg IlxuIgorICAgICAgICAgICAgImNkICIgPDwgUURpcjo6dG9OYXRpdmVTZXBhcmF0b3JzKFFTdHJp bmdMaXRlcmFsKCJ0ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UiKSkg PDwgIlxuIgorLSAgICAgICAgICAgIndnZXQgaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3hk Zy9zaGFyZWQtbWltZS1pbmZvL3NuYXBzaG90L1JlbGVhc2UtMS0xMC56aXBcbiIKKy0gICAgICAg ICAgICJ1bnppcCBSZWxlYXNlLTEtMTAuemlwXG4iOworKyAgICAgICAgICAgIndnZXQgaHR0cHM6 Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3hkZy9zaGFyZWQtbWltZS1pbmZvLy0vYXJjaGl2ZS8y LjEvc2hhcmVkLW1pbWUtaW5mby0yLjEuemlwXG4iCisrICAgICAgICAgICAidW56aXAgc2hhcmVk LW1pbWUtaW5mby0yLjEuemlwXG4iOworICNpZmRlZiBRX09TX1dJTgorLSAgICBzdHIgPDwgIm1r ZGlyIHRlc3RmaWxlc1xueGNvcHkgL3MgUmVsZWFzZS0xLTEwIHMtbS1pXG4iOworKyAgICBzdHIg PDwgIm1rZGlyIHRlc3RmaWxlc1xueGNvcHkgL3Mgc2hhcmVkLW1pbWUtaW5mby0yLjEgcy1tLWlc biI7CisgI2Vsc2UKKy0gICAgc3RyIDw8ICJsbiAtcyBSZWxlYXNlLTEtMTAgcy1tLWlcbiI7Cisr ICAgIHN0ciA8PCAibG4gLXMgc2hhcmVkLW1pbWUtaW5mby0yLjEgcy1tLWlcbiI7CisgI2VuZGlm CisgICAgIHJldHVybiByZXN1bHQ7CisgfQorQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIHRzdF9R TWltZURhdGFiYXNlOjppbml0VGVzdENhc2UoKQorICAgICBRVkVSSUZZMihjb3B5UmVzb3VyY2VG aWxlKHhtbEZpbGVOYW1lLCB4bWxUYXJnZXRGaWxlTmFtZSwgJmVycm9yTWVzc2FnZSksIHFQcmlu dGFibGUoZXJyb3JNZXNzYWdlKSk7CisgI2VuZGlmCisgCistICAgIG1fdGVzdFN1aXRlID0gUUZJ TkRURVNUREFUQSgicy1tLWkvdGVzdHMiKTsKKysgICAgbV90ZXN0U3VpdGUgPSBRRklORFRFU1RE QVRBKCJzLW0taS90ZXN0cy9taW1lLWRldGVjdGlvbiIpOworICAgICBpZiAobV90ZXN0U3VpdGUu aXNFbXB0eSgpKQorICAgICAgICAgcVdhcm5pbmcoIiVzIiwgcVByaW50YWJsZSh0ZXN0U3VpdGVX YXJuaW5nKCkpKTsKKyAKK0BAIC02MTEsNyArNjExLDcgQEAgdm9pZCB0c3RfUU1pbWVEYXRhYmFz ZTo6YWxsTWltZVR5cGVzKCkKKyAgICAgUVZFUklGWSghbHN0LmlzRW1wdHkoKSk7CisgCisgICAg IC8vIEhhcmRjb2RpbmcgdGhpcyBpcyB0aGUgb25seSB3YXkgdG8gY2hlY2sgYm90aCBwcm92aWRl cnMgZmluZCB0aGUgc2FtZSBudW1iZXIgb2YgbWltZXR5cGVzLgorLSAgICBRQ09NUEFSRShsc3Qu Y291bnQoKSwgNzc5KTsKKysgICAgUUNPTVBBUkUobHN0LmNvdW50KCksIDgxMSk7CisgCisgICAg IGZvcmVhY2ggKGNvbnN0IFFNaW1lVHlwZSAmbWltZSwgbHN0KSB7CisgICAgICAgICBjb25zdCBR U3RyaW5nIG5hbWUgPSBtaW1lLm5hbWUoKTsKK0BAIC02MzEsMTAgKzYzMSw5IEBAIHZvaWQgdHN0 X1FNaW1lRGF0YWJhc2U6OnN1ZmZpeGVzX2RhdGEoKQorIAorICAgICBRVGVzdDo6bmV3Um93KCJt aW1ldHlwZSB3aXRoIGEgc2luZ2xlIHBhdHRlcm4iKSA8PCAiYXBwbGljYXRpb24vcGRmIiA8PCAi Ki5wZGYiIDw8ICJwZGYiOworICAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIG11bHRp cGxlIHBhdHRlcm5zIikgPDwgImFwcGxpY2F0aW9uL3gta3ByZXNlbnRlciIgPDwgIioua3ByOyou a3B0IiA8PCAia3ByIjsKKy0gICAgUVRlc3Q6Om5ld1JvdygianBlZyIpIDw8ICJpbWFnZS9qcGVn IiA8PCAiKi5qcGU7Ki5qcGc7Ki5qcGVnIiA8PCAianBlZyI7CistICAgIC8vaWYgKEtNaW1lVHlw ZTo6c2hhcmVkTWltZUluZm9WZXJzaW9uKCkgPiBLREVfTUFLRV9WRVJTSU9OKDAsIDYwLCAwKSkg eworLSAgICAgICAgUVRlc3Q6Om5ld1JvdygibWltZXR5cGUgd2l0aCBtYW55IHBhdHRlcm5zIikg PDwgImFwcGxpY2F0aW9uL3ZuZC53b3JkcGVyZmVjdCIgPDwgIioud3A7Ki53cDQ7Ki53cDU7Ki53 cDY7Ki53cGQ7Ki53cHAiIDw8ICJ3cCI7CistICAgIC8vfQorKyAgICAvLyBUaGUgcHJlZmVycmVk IHN1ZmZpeCBmb3IgaW1hZ2UvanBlZyBpcyAqLmpwZywgYXMgcGVyIGh0dHBzOi8vYnVncy5rZGUu b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY3MzcKKysgICAgUVRlc3Q6Om5ld1JvdygianBlZyIpIDw8 ICJpbWFnZS9qcGVnIiA8PCAiKi5qcGU7Ki5qcGc7Ki5qcGVnIiA8PCAianBnIjsKKysgICAgUVRl c3Q6Om5ld1JvdygibWltZXR5cGUgd2l0aCBtYW55IHBhdHRlcm5zIikgPDwgImFwcGxpY2F0aW9u L3ZuZC53b3JkcGVyZmVjdCIgPDwgIioud3A7Ki53cDQ7Ki53cDU7Ki53cDY7Ki53cGQ7Ki53cHAi IDw8ICJ3cCI7CisgICAgIFFUZXN0OjpuZXdSb3coIm9hc2lzIHRleHQgbWltZXR5cGUiKSA8PCAi YXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0IiA8PCAiKi5vZHQiIDw8ICJv ZHQiOworICAgICBRVGVzdDo6bmV3Um93KCJvYXNpcyBwcmVzZW50YXRpb24gbWltZXR5cGUiKSA8 PCAiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24iIDw8ICIq Lm9kcCIgPDwgIm9kcCI7CisgICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggbXVsdGlw bGUgcGF0dGVybnMiKSA8PCAidGV4dC9wbGFpbiIgPDwgIiouYXNjOyoudHh0OyosdiIgPDwgInR4 dCI7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9zZXJpYWxpemF0aW9u L2pzb24vdHN0X3F0anNvbi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3NlcmlhbGl6 YXRpb24vanNvbi90c3RfcXRqc29uLmNwcAoraW5kZXggM2U1OGRkMDNjYy4uYzhmODJlZjVkNSAx MDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9qc29u L3RzdF9xdGpzb24uY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3NlcmlhbGl6 YXRpb24vanNvbi90c3RfcXRqc29uLmNwcAorQEAgLTE3Niw2ICsxNzYsOCBAQCBwcml2YXRlIFFf U0xPVFM6CisgICAgIHZvaWQgZnJvbVRvVmFyaWFudENvbnZlcnNpb25zX2RhdGEoKTsKKyAgICAg dm9pZCBmcm9tVG9WYXJpYW50Q29udmVyc2lvbnMoKTsKKyAKKysgICAgdm9pZCBub0xlYWtPbk5h bWVDbGFzaCgpOworKworIHByaXZhdGU6CisgICAgIFFTdHJpbmcgdGVzdERhdGFEaXI7CisgfTsK K0BAIC0zNjg1LDUgKzM2ODcsMjMgQEAgdm9pZCB0c3RfUXRKc29uOjpmcm9tVG9WYXJpYW50Q29u dmVyc2lvbnMoKQorICAgICB9CisgfQorIAorK3ZvaWQgdHN0X1F0SnNvbjo6bm9MZWFrT25OYW1l Q2xhc2goKQorK3sKKysgICAgUUpzb25Eb2N1bWVudCBkb2MgPSBRSnNvbkRvY3VtZW50Ojpmcm9t SnNvbigie1wiXCI6e1wiXCI6MH0sXCJcIjowfSIpOworKyAgICBRVkVSSUZZKCFkb2MuaXNOdWxs KCkpOworKyAgICBjb25zdCBRSnNvbk9iamVjdCBvYmogPSBkb2Mub2JqZWN0KCk7CisrCisrICAg IC8vIFJlbW92ZWQgdGhlIGR1cGxpY2F0ZSBrZXkuCisrICAgIFFDT01QQVJFKG9iai5sZW5ndGgo KSwgMSk7CisrCisrICAgIC8vIFJldGFpbmVkIHRoZSBsYXN0IG9mIHRoZSBkdXBsaWNhdGVzLgor KyAgICBjb25zdCBRSnNvblZhbHVlIHZhbCA9IG9iai5iZWdpbigpLnZhbHVlKCk7CisrICAgIFFW RVJJRlkodmFsLmlzRG91YmxlKCkpOworKyAgICBRQ09NUEFSRSh2YWwudG9Eb3VibGUoKSwgMC4w KTsKKysKKysgICAgLy8gSXQgc2hvdWxkIG5vdCBsZWFrLgorKyAgICAvLyBJbiBwYXJ0aWN1bGFy IGl0IHNob3VsZCBub3QgZm9yZ2V0IHRvIGRlcmVmIHRoZSBjb250YWluZXIgZm9yIHRoZSBpbm5l ciBvYmplY3QuCisrfQorKworIFFURVNUX01BSU4odHN0X1F0SnNvbikKKyAjaW5jbHVkZSAidHN0 X3F0anNvbi5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi90aW1l L3F0aW1lem9uZS90c3RfcXRpbWV6b25lLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIv dGltZS9xdGltZXpvbmUvdHN0X3F0aW1lem9uZS5jcHAKK2luZGV4IGE1OWI1OGQ1N2YuLjI0MWMz ZTg0YWMgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3RpbWUvcXRpbWV6 b25lL3RzdF9xdGltZXpvbmUuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3Rp bWUvcXRpbWV6b25lL3RzdF9xdGltZXpvbmUuY3BwCitAQCAtNjMsNiArNjMsNyBAQCBwcml2YXRl IHNsb3RzOgorICAgICB2b2lkIGlzVmFsaWRJZF9kYXRhKCk7CisgICAgIHZvaWQgaXNWYWxpZElk KCk7CisgICAgIHZvaWQgbWFsZm9ybWVkKCk7CisrICAgIHZvaWQgc2VyaWFsaXplKCk7CisgICAg IC8vIEJhY2tlbmQgdGVzdHMKKyAgICAgdm9pZCB1dGNUZXN0KCk7CisgICAgIHZvaWQgaWN1VGVz dCgpOworQEAgLTk0Nyw2ICs5NDgsMzMgQEAgdm9pZCB0c3RfUVRpbWVab25lOjptYWxmb3JtZWQo KQorICAgICAgICAgYmFyZi5vZmZzZXRGcm9tVXRjKG5vdyk7CisgfQorIAorK3ZvaWQgdHN0X1FU aW1lWm9uZTo6c2VyaWFsaXplKCkKKyt7CisrICAgIGludCBwYXJ0cyA9IDA7CisrI2lmbmRlZiBR VF9OT19ERUJVR19TVFJFQU0KKysgICAgcURlYnVnKCkgPDwgUVRpbWVab25lKCk7IC8vIHRvIHZl cmlmeSBubyBjcmFzaAorKyAgICBwYXJ0cysrOworKyNlbmRpZgorKyNpZm5kZWYgUVRfTk9fREFU QVNUUkVBTQorKyAgICBRQnl0ZUFycmF5IGJsb2I7CisrICAgIHsKKysgICAgICAgIFFEYXRhU3Ry ZWFtIHN0cmVhbSgmYmxvYiwgUUlPRGV2aWNlOjpXcml0ZU9ubHkpOworKyAgICAgICAgc3RyZWFt IDw8IFFUaW1lWm9uZSgiRXVyb3BlL09zbG8iKSA8PCBRVGltZVpvbmUoNDIwKSA8PCBRVGltZVpv bmUoKSA8PCBxaW50NjQoLTEpOworKyAgICB9CisrICAgIFFEYXRhU3RyZWFtIHN0cmVhbSgmYmxv YiwgUUlPRGV2aWNlOjpSZWFkT25seSk7CisrICAgIFFUaW1lWm9uZSBpbnZhbGlkLCBvZmZzZXQs IG9zbG87CisrICAgIHFpbnQ2NCBtaW51c29uZTsKKysgICAgc3RyZWFtID4+IG9zbG8gPj4gb2Zm c2V0ID4+IGludmFsaWQgPj4gbWludXNvbmU7CisrICAgIFFDT01QQVJFKG9zbG8sIFFUaW1lWm9u ZSgiRXVyb3BlL09zbG8iKSk7CisrICAgIFFDT01QQVJFKG9mZnNldCwgUVRpbWVab25lKDQyMCkp OworKyAgICBRVkVSSUZZKCFpbnZhbGlkLmlzVmFsaWQoKSk7CisrICAgIFFDT01QQVJFKG1pbnVz b25lLCBxaW50NjQoLTEpKTsKKysgICAgcGFydHMrKzsKKysjZW5kaWYKKysgICAgaWYgKCFwYXJ0 cykKKysgICAgICAgIFFTS0lQKCJObyBzZXJpYWxpemF0aW9uIGVuYWJsZWQiKTsKKyt9CisrCisg dm9pZCB0c3RfUVRpbWVab25lOjp1dGNUZXN0KCkKKyB7CisgI2lmZGVmIFFUX0JVSUxEX0lOVEVS TkFMCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vZGJ1cy9xZGJ1c2ludGVyZmFjZS90 c3RfcWRidXNpbnRlcmZhY2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZGJ1cy9xZGJ1c2ludGVy ZmFjZS90c3RfcWRidXNpbnRlcmZhY2UuY3BwCitpbmRleCAwNTQ4MGM2ZGQyLi43MGY0Yzc1NzU2 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vZGJ1cy9xZGJ1c2ludGVyZmFjZS90c3Rf cWRidXNpbnRlcmZhY2UuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9kYnVzL3FkYnVzaW50 ZXJmYWNlL3RzdF9xZGJ1c2ludGVyZmFjZS5jcHAKK0BAIC0zMjQsNiArMzI0LDEzIEBAIHZvaWQg dHN0X1FEQnVzSW50ZXJmYWNlOjpub3RWYWxpZCgpCisgCisgICAgIFFWRVJJRlkoIWludGVyZmFj ZS5pc1ZhbGlkKCkpOworICAgICBRVkVSSUZZKCFRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKCZp bnRlcmZhY2UsICJMaXN0TmFtZXMiLCBRdDo6RGlyZWN0Q29ubmVjdGlvbikpOworKworKyAgICAv LyBXaXRoIGEgY29ubmVjdGlvbiwgYnV0IGVtcHR5L251bGwgc2VydmljZSBhbmQgcGF0aCBzcGVj aWZpZWQKKysgICAgUURCdXNDb25uZWN0aW9uIGNvbiA9IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lv bkJ1cygpOworKyAgICBRVkVSSUZZKGNvbi5pc0Nvbm5lY3RlZCgpKTsKKysgICAgUURCdXNJbnRl cmZhY2UgaWZhY2Uoe30sIHt9LCB7fSwgY29uKTsKKysgICAgUVZFUklGWSghaWZhY2UuaXNWYWxp ZCgpKTsKKysgICAgUVZFUklGWSghUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCgmaW50ZXJmYWNl LCAiTGlzdE5hbWVzIiwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pKTsKKyB9CisgCisgdm9pZCB0c3Rf UURCdXNJbnRlcmZhY2U6Om5vdFZhbGlkRGVyaXZlZCgpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UvdHN0X3FrZXlzZXF1ZW5jZS5jcHAgYi9x dGJhc2UvdGVzdHMvYXV0by9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS90c3RfcWtleXNlcXVlbmNl LmNwcAoraW5kZXggODc0NDY4Yzk1NC4uMDRjZWI0YWI2NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90 ZXN0cy9hdXRvL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlL3RzdF9xa2V5c2VxdWVuY2UuY3BwCisr KysgYi9xdGJhc2UvdGVzdHMvYXV0by9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS90c3RfcWtleXNl cXVlbmNlLmNwcAorQEAgLTUwNyw2ICs1MDcsMTAgQEAgdm9pZCB0c3RfUUtleVNlcXVlbmNlOjp0 b1N0cmluZ0Zyb21LZXljb2RlX2RhdGEoKQorICAgICBRVGVzdDo6bmV3Um93KCJDdHJsK0FsdCtO dW0rRGVsIikgPDwgUUtleVNlcXVlbmNlKFF0OjpDb250cm9sTW9kaWZpZXIgfCBRdDo6QWx0TW9k aWZpZXIgfCBRdDo6S2V5cGFkTW9kaWZpZXIgfCBRdDo6S2V5X0RlbGV0ZSkgPDwgIkN0cmwrQWx0 K051bStEZWwiOworICAgICBRVGVzdDo6bmV3Um93KCJDdHJsK0lucyIpIDw8IFFLZXlTZXF1ZW5j ZShRdDo6Q29udHJvbE1vZGlmaWVyIHwgUXQ6OktleV9JbnNlcnQpIDw8ICJDdHJsK0lucyI7Cisg ICAgIFFUZXN0OjpuZXdSb3coIkN0cmwrTnVtK0lucygxKSIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6 S2V5X0luc2VydCB8IFF0OjpLZXlwYWRNb2RpZmllciB8IFF0OjpDb250cm9sTW9kaWZpZXIpIDw8 ICJDdHJsK051bStJbnMiOworKyAgICBRVGVzdDo6bmV3Um93KCJDdHJsIikgPDwgUUtleVNlcXVl bmNlKFF0OjpLZXlfQ29udHJvbCkgPDwgIkNvbnRyb2wiOworKyAgICBRVGVzdDo6bmV3Um93KCJB bHQiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OktleV9BbHQpIDw8ICJBbHQiOworKyAgICBRVGVzdDo6 bmV3Um93KCJTaGlmdCIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6S2V5X1NoaWZ0KSA8PCAiU2hpZnQi OworKyAgICBRVGVzdDo6bmV3Um93KCJNZXRhIikgPDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfTWV0 YSkgPDwgIk1ldGEiOworIH0KKyAKKyB2b2lkIHRzdF9RS2V5U2VxdWVuY2U6OnRvU3RyaW5nRnJv bUtleWNvZGUoKQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS90ZXh0L3Fmb250 ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL3Rl eHQvcWZvbnRkYXRhYmFzZS90c3RfcWZvbnRkYXRhYmFzZS5jcHAKK2luZGV4IDE1ZTBlY2FkYWEu LmI0ZWNhNzQyODMgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9ndWkvdGV4dC9xZm9u dGRhdGFiYXNlL3RzdF9xZm9udGRhdGFiYXNlLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8v Z3VpL3RleHQvcWZvbnRkYXRhYmFzZS90c3RfcWZvbnRkYXRhYmFzZS5jcHAKK0BAIC04MSw2ICs4 MSw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgcmVnaXN0ZXJPcGVuVHlwZVByZWZlcnJl ZE5hbWVzU3lzdGVtKCk7CisgICAgIHZvaWQgcmVnaXN0ZXJPcGVuVHlwZVByZWZlcnJlZE5hbWVz QXBwbGljYXRpb24oKTsKKyAKKysgICAgdm9pZCBzdHJldGNoUmVzcGVjdGVkKCk7CisrCisgcHJp dmF0ZToKKyAgICAgUVN0cmluZyBtX2xlZEZvbnQ7CisgICAgIFFTdHJpbmcgbV90ZXN0Rm9udDsK K0BAIC0zNTUsNiArMzU3LDI4IEBAIHN0YXRpYyBRU3RyaW5nIHRlc3RTdHJpbmcoKQorICAgICBy ZXR1cm4gUVN0cmluZ0xpdGVyYWwoImZvbyBiYXIiKTsKKyB9CisgCisrdm9pZCB0c3RfUUZvbnRE YXRhYmFzZTo6c3RyZXRjaFJlc3BlY3RlZCgpCisreworKyAgICBpbnQgaXRhbGljSWQgPSBRRm9u dERhdGFiYXNlOjphZGRBcHBsaWNhdGlvbkZvbnQobV90ZXN0Rm9udEl0YWxpYyk7CisrICAgIFFW RVJJRlkoaXRhbGljSWQgIT0gLTEpOworKworKyAgICBRVkVSSUZZKCFRRm9udERhdGFiYXNlOjph cHBsaWNhdGlvbkZvbnRGYW1pbGllcyhpdGFsaWNJZCkuaXNFbXB0eSgpKTsKKysKKysgICAgUVN0 cmluZyBpdGFsaWNGb250TmFtZSA9IFFGb250RGF0YWJhc2U6OmFwcGxpY2F0aW9uRm9udEZhbWls aWVzKGl0YWxpY0lkKS5maXJzdCgpOworKworKyAgICBRRm9udCBpdGFsaWNGb250ID0gUUZvbnRE YXRhYmFzZSgpLmZvbnQoaXRhbGljRm9udE5hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRU3RyaW5nOjpmcm9tTGF0aW4xKCJJdGFsaWMiKSwgMTQpOwor KyAgICBRVkVSSUZZKGl0YWxpY0ZvbnQuaXRhbGljKCkpOworKworKyAgICBRRm9udCBpdGFsaWNT dHJldGNoZWRGb250ID0gaXRhbGljRm9udDsKKysgICAgaXRhbGljU3RyZXRjaGVkRm9udC5zZXRT dHJldGNoKCA0MDAgKTsKKysKKysgICAgUVZFUklGWShRRm9udE1ldHJpY3NGKGl0YWxpY0ZvbnQp Lmhvcml6b250YWxBZHZhbmNlKFFTdHJpbmdMaXRlcmFsKCJmb29iYXIiKSkgPAorKyAgICAgICAg ICAgIFFGb250TWV0cmljc0YoaXRhbGljU3RyZXRjaGVkRm9udCkuaG9yaXpvbnRhbEFkdmFuY2Uo UVN0cmluZ0xpdGVyYWwoImZvb2JhciIpKSk7CisrCisrICAgIFFGb250RGF0YWJhc2U6OnJlbW92 ZUFwcGxpY2F0aW9uRm9udChpdGFsaWNJZCk7CisrfQorKworIHZvaWQgdHN0X1FGb250RGF0YWJh c2U6OmNvbmRlbnNlZEZvbnRXaWR0aE5vRm9udE1lcmdpbmcoKQorIHsKKyAgICAgaW50IHJlZ3Vs YXJGb250SWQgPSBRRm9udERhdGFiYXNlOjphZGRBcHBsaWNhdGlvbkZvbnQobV90ZXN0Rm9udCk7 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9hY2Nlc3MvcW5ldHdvcmty ZXBseS90c3RfcW5ldHdvcmtyZXBseS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL2Fj Y2Vzcy9xbmV0d29ya3JlcGx5L3RzdF9xbmV0d29ya3JlcGx5LmNwcAoraW5kZXggM2Q0YTA5NGM0 My4uYjQyM2UxMWE5OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvYWNj ZXNzL3FuZXR3b3JrcmVwbHkvdHN0X3FuZXR3b3JrcmVwbHkuY3BwCisrKysgYi9xdGJhc2UvdGVz dHMvYXV0by9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5L3RzdF9xbmV0d29ya3JlcGx5LmNw cAorQEAgLTI4MSw2ICsyODEsNyBAQCBwcml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgaW9HZXRG cm9tRmlsZVNwZWNpYWwoKTsKKyAgICAgdm9pZCBpb0dldEZyb21GaWxlX2RhdGEoKTsKKyAgICAg dm9pZCBpb0dldEZyb21GaWxlKCk7CisrICAgIHZvaWQgaW9HZXRGcm9tRmlsZVVybCgpOworICAg ICB2b2lkIGlvR2V0RnJvbUZ0cF9kYXRhKCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRnRwKCk7Cisg ICAgIHZvaWQgaW9HZXRGcm9tRnRwV2l0aFJldXNlKCk7CitAQCAtMzMwMCw2ICszMzAxLDE4IEBA IHZvaWQgdHN0X1FOZXR3b3JrUmVwbHk6OmlvR2V0RnJvbUZpbGUoKQorICAgICBRQ09NUEFSRShy ZWFkZXIuZGF0YSwgZGF0YSk7CisgfQorIAorK3ZvaWQgdHN0X1FOZXR3b3JrUmVwbHk6OmlvR2V0 RnJvbUZpbGVVcmwoKQorK3sKKysgICAgLy8gVGhpcyBpbW1lZGlhdGVseSBmYWlscyBvbiBub24t d2luZG93cyBwbGF0Zm9ybXM6CisrICAgIFFOZXR3b3JrUmVxdWVzdCByZXF1ZXN0KFFVcmwoImZp bGU6Ly91bmMtc2VydmVyL3NvbWUvcGF0aCIpKTsKKysgICAgUU5ldHdvcmtSZXBseVB0ciByZXBs eShtYW5hZ2VyLmdldChyZXF1ZXN0KSk7CisrICAgIFFTaWduYWxTcHkgZmluaXNoZWRTcHkocmVw bHkuZ2V0KCksICZRTmV0d29ya1JlcGx5OjpmaW5pc2hlZCk7CisrICAgIC8vIFFUQlVHLTEwNTYx ODogVGhpcyB3b3VsZCwgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLCBuZXZlciBoYXBwZW4gYmVj YXVzZSB0aGUgc2lnbmFsCisrICAgIC8vIHdhcyBlbWl0dGVkIGJlZm9yZSB0aGUgY29uc3RydWN0 b3IgZmluaXNoZWQsIGxlYXZpbmcgbm8gY2hhbmNlIGF0IGFsbCB0byBjb25uZWN0IHRvIHRoZQor KyAgICAvLyBzaWduYWwKKysgICAgUVZFUklGWShmaW5pc2hlZFNweS53YWl0KCkpOworK30KKysK KyB2b2lkIHRzdF9RTmV0d29ya1JlcGx5Ojppb0dldEZyb21GdHBfZGF0YSgpCisgeworICAgICBR VGVzdDo6YWRkQ29sdW1uPFFTdHJpbmc+KCJmaWxlTmFtZSIpOworZGlmZiAtLWdpdCBhL3F0YmFz ZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2UuY2VydCBiL3F0 YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2UuY2VydAor aW5kZXggMDY5ZmE2YjM0MS4uNGNjNGQ5YTVlYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9h dXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2UuY2VydAorKysrIGIvcXRiYXNl L3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5jZXJ0CitAQCAt MSw3NSArMSwzNCBAQAorLUNlcnRpZmljYXRlOgorLSAgICBEYXRhOgorLSAgICAgICAgVmVyc2lv bjogMyAoMHgyKQorLSAgICAgICAgU2VyaWFsIE51bWJlcjogMCAoMHgwKQorLSAgICAgICAgU2ln bmF0dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCistICAgICAgICBJc3N1ZXI6 IEM9Tk8sIFNUPU9zbG8sIEw9TnlkYWxlbiwgTz1Ob2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz IHN1YnNpZGlhcnkoLWllcyksIE9VPURldmVsb3BtZW50LCBDTj1mbHVrZS50cm9sbC5uby9lbWFp bEFkZHJlc3M9YWhhbnNzZW5AdHJvbGx0ZWNoLmNvbQorLSAgICAgICAgVmFsaWRpdHkKKy0gICAg ICAgICAgICBOb3QgQmVmb3JlOiBEZWMgIDQgMDE6MTA6MzIgMjAwNyBHTVQKKy0gICAgICAgICAg ICBOb3QgQWZ0ZXIgOiBBcHIgMjEgMDE6MTA6MzIgMjAzNSBHTVQKKy0gICAgICAgIFN1YmplY3Q6 IEM9Tk8sIFNUPU9zbG8sIE89Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5 KC1pZXMpLCBPVT1EZXZlbG9wbWVudCwgQ049Zmx1a2UudHJvbGwubm8KKy0gICAgICAgIFN1Ympl Y3QgUHVibGljIEtleSBJbmZvOgorLSAgICAgICAgICAgIFB1YmxpYyBLZXkgQWxnb3JpdGhtOiBy c2FFbmNyeXB0aW9uCistICAgICAgICAgICAgUlNBIFB1YmxpYyBLZXk6ICgxMDI0IGJpdCkKKy0g ICAgICAgICAgICAgICAgTW9kdWx1cyAoMTAyNCBiaXQpOgorLSAgICAgICAgICAgICAgICAgICAg MDA6YTc6Yzg6YTA6NGE6YzQ6MTk6MDU6MWI6NjY6YmE6MzI6ZTI6ZDI6ZjE6CistICAgICAgICAg ICAgICAgICAgICAxYzo2ZjoxNzo4MjplNDozOToyZTowMTo1MTo5MDpkYjowNDozNDozMjoxMToK Ky0gICAgICAgICAgICAgICAgICAgIDIxOmMyOjBkOjZmOjU5OmQ4OjUzOjkwOjU0OjNmOjgzOjhm OmE5OmQzOmIzOgorLSAgICAgICAgICAgICAgICAgICAgZDU6ZWU6MWE6OWI6ODA6YWU6YzM6MjU6 Yzk6NWU6YTU6YWY6NGI6NjA6MDU6CistICAgICAgICAgICAgICAgICAgICBhYTphMDpkMTo5MTow MToxZjpjYTowNDo4MzplMzo1ODoxYzo5OTozMjo0NToKKy0gICAgICAgICAgICAgICAgICAgIDg0 OjcwOjcyOjU4OjAzOjk4OjRhOjYzOjhiOjQxOmY1OjA4OjQ5OmQyOjkxOgorLSAgICAgICAgICAg ICAgICAgICAgMDI6NjA6NmI6ZTQ6NjQ6ZmU6ZGQ6YTA6YWE6NzQ6MDg6ZTk6MzQ6NGM6OTE6Cist ICAgICAgICAgICAgICAgICAgICA1ZjoxMjozZDozNzo0ZDo1NDoyYzphZDo3Zjo1Yjo5ODo2MDoz NjowMjo4YzoKKy0gICAgICAgICAgICAgICAgICAgIDNiOmY2OjQ1OmYzOjI3OjZhOjliOjk0Ojlk CistICAgICAgICAgICAgICAgIEV4cG9uZW50OiA2NTUzNyAoMHgxMDAwMSkKKy0gICAgICAgIFg1 MDl2MyBleHRlbnNpb25zOgorLSAgICAgICAgICAgIFg1MDl2MyBCYXNpYyBDb25zdHJhaW50czog CistICAgICAgICAgICAgICAgIENBOkZBTFNFCistICAgICAgICAgICAgTmV0c2NhcGUgQ29tbWVu dDogCistICAgICAgICAgICAgICAgIE9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlCistICAg ICAgICAgICAgWDUwOXYzIFN1YmplY3QgS2V5IElkZW50aWZpZXI6IAorLSAgICAgICAgICAgICAg ICAyMTo4NTowNDozRDoyMzowMTo2NjpFNTpGNzo5RjoxQTo4NDoyNDo4QTpBRjowQTo3OTpGNDpF NTpBQworLSAgICAgICAgICAgIFg1MDl2MyBBdXRob3JpdHkgS2V5IElkZW50aWZpZXI6IAorLSAg ICAgICAgICAgICAgICBEaXJOYW1lOi9DPU5PL1NUPU9zbG8vTD1OeWRhbGVuL089Tm9raWEgQ29y cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpL09VPURldmVsb3BtZW50L0NOPWZs dWtlLnRyb2xsLm5vL2VtYWlsQWRkcmVzcz1haGFuc3NlbkB0cm9sbHRlY2guY29tCistICAgICAg ICAgICAgICAgIHNlcmlhbDo4RTpBODpCNDpFODo5MTpCNzo1NDoyRQorLQorLSAgICBTaWduYXR1 cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5cHRpb24KKy0gICAgICAgIDZkOjU3OjVmOmQx OjA1OjQzOmYwOjYyOjA1OmVjOjJhOjcxOmE1OmRjOjE5OjA4OmYyOmM0OgorLSAgICAgICAgYTY6 YmQ6YmI6MjU6ZDk6Y2E6ODk6MDE6MGU6ZTQ6Y2Y6MWY6YzE6OGM6Yzg6MjQ6MTg6MzU6CistICAg ICAgICA1Mzo1OTo3YjpjMDo0MzpiNDozMjplNjo5ODpiMjphNjplZjoxNTowNTowYjo0ODo1Zjpl MToKKy0gICAgICAgIGEwOjBjOjk3OmE5OmExOjc3OmQ4OjM1OjE4OjMwOmJjOmE5OjhmOmQzOmI3 OjU0OmM3OmYxOgorLSAgICAgICAgYTk6OWU6NWQ6ZTY6MTk6YmY6ZjY6M2M6NWI6MmI6ZDg6ZTQ6 M2U6NjI6MTg6ODg6OGI6ZDM6CistICAgICAgICAyNDplMTo0MDo5YjowYzplNjoyOToxNjo2Mjph YjplYTowNToyNDo3MDozNjphYTo1NTo5MzoKKy0gICAgICAgIGVmOjAyOjgxOjFiOjIzOjEwOmEy OjA0OmViOjU2Ojk1Ojc1OmZjOmY4Ojk0OmIxOjVkOjQyOgorLSAgICAgICAgYzU6M2Y6MzY6NDQ6 ODU6NWQ6M2E6MmU6OTA6NDY6OGE6YTI6Yjk6NmY6ODc6YWU6MGM6MTU6CistICAgICAgICA0MDox OTozMTo5MDpmYzozYjoyNTpiYjphZTpmMTo2NjoxMzowZDo4NTo5MDpkOTo0OTozNDoKKy0gICAg ICAgIDhmOmYyOjVkOmY5OjdhOmRiOjRkOjVkOjI3OmY2Ojc2OjlkOjM1OjhjOjA2OmE2OjRjOmEz OgorLSAgICAgICAgYjE6YjI6YjY6NmY6MWQ6ZDc6YTM6MDA6ZmQ6NzI6ZWI6OWU6ZWE6NDQ6YTE6 YWY6MjE6MzQ6CistICAgICAgICA3ZDpjNzo0MjplMjo0OTo5MToxOTo4YjpjMDphZDpiYTo4Mjo4 MDphODo3MTo3MDpmNDozNToKKy0gICAgICAgIDMxOjkxOjYzOjg0OjIwOjk1OmU5OjYwOmFmOjY0 OjhiOmNjOmZmOjNkOjhhOjc2Ojc0OjNkOgorLSAgICAgICAgYzg6NTU6NmQ6ZTQ6OGU6YzM6MmI6 MWM6ZTg6NDI6MTg6YWU6OWY6ZTY6NmI6OWM6MzQ6MDY6CistICAgICAgICBlYzo2YTpmMjpjMwor IC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorLU1JSUVFekNDQXZ1Z0F3SUJBZ0lCQURBTkJn a3Foa2lHOXcwQkFRVUZBRENCbkRFTE1Ba0dBMVVFQmhNQ1RrOHgKKy1EVEFMQmdOVkJBZ1RCRTl6 Ykc4eEVEQU9CZ05WQkFjVEIwNTVaR0ZzWlc0eEZqQVVCZ05WQkFvVERWUnliMnhzCistZEdWamFD QkJVMEV4RkRBU0JnTlZCQXNUQzBSbGRtVnNiM0J0Wlc1ME1SY3dGUVlEVlFRREV3NW1iSFZyWlM1 MAorLWNtOXNiQzV1YnpFbE1DTUdDU3FHU0liM0RRRUpBUllXWVdoaGJuTnpaVzVBZEhKdmJHeDBa V05vTG1OdmJUQWUKKy1GdzB3TnpFeU1EUXdNVEV3TXpKYUZ3MHpOVEEwTWpFd01URXdNekphTUdN eEN6QUpCZ05WQkFZVEFrNVBNUTB3CistQ3dZRFZRUUlFd1JQYzJ4dk1SWXdGQVlEVlFRS0V3MVVj bTlzYkhSbFkyZ2dRVk5CTVJRd0VnWURWUVFMRXd0RQorLVpYWmxiRzl3YldWdWRERVhNQlVHQTFV RUF4TU9abXgxYTJVdWRISnZiR3d1Ym04d2daOHdEUVlKS29aSWh2Y04KKy1BUUVCQlFBRGdZMEFN SUdKQW9HQkFLZklvRXJFR1FVYlpyb3k0dEx4SEc4WGd1UTVMZ0ZSa05zRU5ESVJJY0lOCistYjFu WVU1QlVQNE9QcWRPejFlNGFtNEN1d3lYSlhxV3ZTMkFGcXFEUmtRRWZ5Z1NENDFnY21USkZoSEJ5 V0FPWQorLVNtT0xRZlVJU2RLUkFtQnI1R1QrM2FDcWRBanBORXlSWHhJOU4wMVVMSzEvVzVoZ05n S01PL1pGOHlkcW01U2QKKy1BZ01CQUFHamdnRWFNSUlCRmpBSkJnTlZIUk1FQWpBQU1Dd0dDV0NH U0FHRytFSUJEUVFmRmgxUGNHVnVVMU5NCistSUVkbGJtVnlZWFJsWkNCRFpYSjBhV1pwWTJGMFpU QWRCZ05WSFE0RUZnUVVJWVVFUFNNQlp1WDNueHFFSklxdgorLUNubjA1YXd3Z2JzR0ExVWRJd1NC c3pDQnNLR0JvcVNCbnpDQm5ERUxNQWtHQTFVRUJoTUNUazh4RFRBTEJnTlYKKy1CQWdUQkU5emJH OHhFREFPQmdOVkJBY1RCMDU1WkdGc1pXNHhGakFVQmdOVkJBb1REVlJ5YjJ4c2RHVmphQ0JCCist VTBFeEZEQVNCZ05WQkFzVEMwUmxkbVZzYjNCdFpXNTBNUmN3RlFZRFZRUURFdzVtYkhWclpTNTBj bTlzYkM1dQorLWJ6RWxNQ01HQ1NxR1NJYjNEUUVKQVJZV1lXaGhibk56Wlc1QWRISnZiR3gwWldO b0xtTnZiWUlKQUk2b3RPaVIKKy10MVF1TUEwR0NTcUdTSWIzRFFFQkJRVUFBNElCQVFCdFYxL1JC VVB3WWdYc0tuR2wzQmtJOHNTbXZic2wyY3FKCistQVE3a3p4L0JqTWdrR0RWVFdYdkFRN1F5NXBp eXB1OFZCUXRJWCtHZ0RKZXBvWGZZTlJnd3ZLbVAwN2RVeC9HcAorLW5sM21HYi8yUEZzcjJPUStZ aGlJaTlNazRVQ2JET1lwRm1LcjZnVWtjRGFxVlpQdkFvRWJJeENpQk90V2xYWDgKKy0rSlN4WFVM RlB6WkVoVjA2THBCR2lxSzViNGV1REJWQUdUR1EvRHNsdTY3eFpoTU5oWkRaU1RTUDhsMzVldHRO CistWFNmMmRwMDFqQWFtVEtPeHNyWnZIZGVqQVAxeTY1N3FSS0d2SVRSOXgwTGlTWkVaaThDdHVv S0FxSEZ3OURVeAorLWtXT0VJSlhwWUs5a2k4ei9QWXAyZEQzSVZXM2tqc01ySE9oQ0dLNmY1bXVj TkFic2F2TEQKKytNSUlGNnpDQ0E5T2dBd0lCQWdJVWZvOWFtSnRKR1dxV0U2ZitTa0FPODV6a0dy NHdEUVlKS29aSWh2Y05BUUVMCisrQlFBd2dZTXhDekFKQmdOVkJBWVRBazVQTVEwd0N3WURWUVFJ REFSUGMyeHZNUTB3Q3dZRFZRUUhEQVJQYzJ4dgorK01SY3dGUVlEVlFRS0RBNVVhR1VnVVhRZ1Ey OXRjR0Z1ZVRFTU1Bb0dBMVVFQ3d3RFVpWkVNUkl3RUFZRFZRUUQKKytEQWxJTWlCVVpYTjBaWEl4 R3pBWkJna3Foa2lHOXcwQkNRRVdERzFwYm1sdGFVQnhkQzVwYnpBZ0Z3MHlNREV3CisrTWpZeE1q QXhNekZhR0E4eU1USXdNVEF3TWpFeU1ERXpNVm93Z1lNeEN6QUpCZ05WQkFZVEFrNVBNUTB3Q3dZ RAorK1ZRUUlEQVJQYzJ4dk1RMHdDd1lEVlFRSERBUlBjMnh2TVJjd0ZRWURWUVFLREE1VWFHVWdV WFFnUTI5dGNHRnUKKytlVEVNTUFvR0ExVUVDd3dEVWlaRU1SSXdFQVlEVlFRRERBbElNaUJVWlhO MFpYSXhHekFaQmdrcWhraUc5dzBCCisrQ1FFV0RHMXBibWx0YVVCeGRDNXBiekNDQWlJd0RRWUpL b1pJaHZjTkFRRUJCUUFEZ2dJUEFEQ0NBZ29DZ2dJQgorK0FPaVVwNStFNGJsb3VLSDdxK3JWTlI4 Tm9ZWDJYa0JXK3ErcnB5MXp1NXNzUlN6YnF4QWpEeDlka2h0N1FsbmYKKytWbERUMDBKdnBPV2Rl dVBvbjU5MTVlZFFSc1k0VW5sNm1LSDI5cmEzT3RVYTEveUNKWHNHVkpUS0NqN2s0QnhiCisrNW1a emIvZlRsWm50TUxkVElCTWZVYnc2MkZLaXIxV2pLSWNKOWZDb0c4SmFHZUtWTzRSaDVwMGV6ZDRV VVVJZAorK3IxQlhsNU5xZHF5MnZUTXNFRG5qT3NEM2Vna3Y4STJTS040TzZuL0Mzd1dZcE1PV1la a0dvWmlLejdySnMvaS8KKytlejdic1Y3Smx3ZHpUbGhwSnprY09TVkZCUDZKbEVPeFROTnhaMXd0 S3k3UHRaR21zU1NBVHEyZTYrYnczOEFlCisrT3AwWG56enFjR2p0RERvZkJtVDdPRnpaV2pTOVZa UzYrRE9PZTJRSFdsZTFuQ0hjSHlINGt1NklSbHNyOXhrUgorK05BSWxPZm52SEh4cUpVZW5vZWFa NG9RRGpDQktTMUtYeWdKTy90TDdCTFRRVm4veEsxRW1QdktObmp6V2s0dFIKKytQbmliVWhoczU2 MzVxcE9VL1lQcUZCaDFKalZydVpic1djREFoUmNldzB1eE9OWE9hOUUrNGx0dFE5eVNZYTFBCisr THZXcUp1QVg3Z3UyQnNCTUx5cWZtODExWW5BN0NJRk15TytIbHFta0xGZnY1TC94SVJBWFI3bDI2 WUdPMFZ3WAorK0NHak1mejROVlBNTWtlNG5CN3FhOU5rcFhRQlFLTW1zM1F6ZDVKVzBIeTlSdWo1 TzhHUGNGWm1WMHR3amQxdUoKKytQRC9jQWprV0xhWGpkTnNKMTZRV2MybmdoUVJTNkhZcUtSWDZq K0NYT3h1cEFnTUJBQUdqVXpCUk1CMEdBMVVkCisrRGdRV0JCUlNDT1U1OGo5Tkpaa01hbXQ2MjNx eUNyaE4zVEFmQmdOVkhTTUVHREFXZ0JSU0NPVTU4ajlOSlprTQorK2FtdDYyM3F5Q3JoTjNUQVBC Z05WSFJNQkFmOEVCVEFEQVFIL01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQ3EKKytxNGp4c1dl TkR2NU5xMTRoSnRGOUhCK1pMNjR6Y1p0UmpKUDFZZ05zMFFwcEtJQ21qUE9MMm5JTUdtSS9qS3Jz CisrMGVHQUwvOVhYTlZIUHhtMU9QT25jdmltTU1tVTZlbVpmcE1kRXRUZktQNDMrUGc5SGdLUmpM b1FwNDA2dkdlUQorKzhraS9tYkJockl0VlBnRW0zdHUyQUZBMDJYVFlpK1l4Q0k5a1JaTEdrTTNG Ymd0T3VUTFBsMFo5eStraVBjOUYKKyt1Q1NDMDNhbkJFcXYrdkRTSTgrd09EeW1RL0lKM0p5ejFs eElSRGZwNHFBZWtteTBqVTJjOTFWT0hIRW1PbXFxCisra3F5Z0dGUmR3YmU5OW05eVA2M3I2cTBi NUszWDJVbko2Ym5zMGhtVHdUaFl3cFZQWExVOGpkYVRkZGJNdWtOMgorKy9FZjk2VHN3OG5XT0VP UE15U0hPVElQZ3d5WlJwMjZiMGtBOUVtaEx3T1A0MDFTeFhWUUNtU1JtdHdOYWdtdGcKKytqSktt Wm9ZQk4rLy9ENDVpYks4ejZRMG9PbTlQK1doZi91VVhlaGNSeEJ4eVYzeHo3azB3S0dRYkhqL2Rk d2N5CisrSVVvSU40bHJBbGliK2xLMTcwa1RLTjM1MlBEbXJwbzJnbUl6UEVzZnVyS0FJTVNlbERs Nkgra2loMTZCdFo4eQorK056NmZoOVNvcXJnM09TQXdhcmU4cHhWN2s1MWNyQk1vUExONzhLb1JW OE1GQ0s0SzdGZGRxNHJSSVNxNmhpWHEKKytyMW5zam9FUHVLTTlodXBybVpWWmU5dDVZY0RhMkkr d2IzSWlFM3V3cFpiQWRhTER5UTVuNkYvcXBzaUlrWlhuCisrZ3RjRjdvcXBHNW9ZcndDY1o1M3kv ZXpVZ1VnN1BsU3oyWHdBR3ZRdGdnPT0KKyAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9m bHVrZS5rZXkgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRz L2ZsdWtlLmtleQoraW5kZXggOWQxNjY0ZDYwOS4uMzM3Y2U1NDFhNiAxMDA2NDQKKy0tLSBhL3F0 YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2Uua2V5Cisr KysgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtl LmtleQorQEAgLTEsMTUgKzEsNTIgQEAKKy0tLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0t CistTUlJQ1hBSUJBQUtCZ1FDbnlLQkt4QmtGRzJhNk11TFM4Unh2RjRMa09TNEJVWkRiQkRReUVT SENEVzlaMkZPUQorLVZEK0RqNm5UczlYdUdwdUFyc01seVY2bHIwdGdCYXFnMFpFQkg4b0VnK05Z SEpreVJZUndjbGdEbUVwamkwSDEKKy1DRW5Ta1FKZ2ErUmsvdDJncW5RSTZUUk1rVjhTUFRkTlZD eXRmMXVZWURZQ2pEdjJSZk1uYXB1VW5RSURBUUFCCistQW9HQU5GekxrYW5UZVNHTkZNMHV0dEJp cEZUOUY0YTAwZHFIejZKbk83elhBVDI2STVyOHNVMXBxUUJiNnVMegorLS8rUXo1WndrOFJVQVFj c01SZ0pldHVQUVViMEpaakY2RHV2MjRoTmF6cVhCQ3U3QVp6VWVuamFmd21LQy84cmkKKy1LcFgz ZlR3cXpmemkvL0ZLR2diWFE4MHl5a1NTbGlETDNrbi9kckFUeHNMQ2dRRUNRUURYaEVGV0xKMHZW WjFzCistMUVrZiszTklURStEUjE2WCtMUTRXNnZ5RUhBalRiYU5XdGNUS2RBV0xBMmw2TjRXQUFQ WVNpNmF3bSt6TXh4NAorLVZvbVZUc2pkQWtFQXgweitlN25hdExlRmNycnE4cGJVK3dhNlNBUDFW ZmhRV0tpdHhMMWU3dS9RTzkwTkNweEUKKy1vUVlLek1rbW1wT09GalF3RU1BeTFkdkZNYm00TEhs ZXdRSkFDL2tzREJhVWNRSEhxamt0Q3RyVWI4clZqQXlXCistQThsc2Nja2VCMmZFWXlHNUo2ZEpW YVk0Q2xOT09zNXlNRFMyQWZrMUY2SC94S3Z0US81Q3pJbkEvUUpBVER1YgorLUsrQlBVOGpPOXEr Z3B1SWkzVklaZHVwc3NWR21DZ09iVkNITGFrRzR1TzA0eTlJeVBoVjlsQTl0QUx0b0lmNGMKKy1W SXZ2NWZXR1hCclo0OGtaQVFKQkFKbVZDZHpReGQ5TFpJNXZ4aWpVQ2o1RUk0ZSt4NURScVZVdnlQ OEtDWnJDCistQWlOeW9EUDg1VCtoQlphU1hLM2FZR3BWd2VseWozYnZvMUdyVE53TldMdz0KKy0t LS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQorKy0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0t LQorK01JSUpRZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1N3d2dna29BZ0VBQW9JQ0FRRG9s S2VmaE9HNWFMaWgKKysrNnZxMVRVZkRhR0Y5bDVBVnZxdnE2Y3RjN3ViTEVVczI2c1FJdzhmWFpJ YmUwSlozMVpRMDlOQ2I2VGxuWHJqCisrNkorZmRlWG5VRWJHT0ZKNWVwaWg5dmEydHpyVkd0Zjhn aVY3QmxTVXlnbys1T0FjVytabWMyLzMwNVdaN1RDMworK1V5QVRIMUc4T3RoU29xOVZveWlIQ2ZY d3FCdkNXaG5pbFR1RVllYWRIczNlRkZGQ0hhOVFWNWVUYW5hc3RyMHoKKytMQkE1NHpyQTkzb0pM L0NOa2lqZUR1cC93dDhGbUtURGxtR1pCcUdZaXMrNnliUDR2M3MrMjdGZXlaY0hjMDVZCisrYVNj NUhEa2xSUVQraVpSRHNVelRjV2RjTFNzdXo3V1JwckVrZ0U2dG51dm04Ti9BSGpxZEY1ODg2bkJv N1F3NgorK0h3WmsremhjMlZvMHZWV1V1dmd6am50a0IxcFh0WndoM0I4aCtKTHVpRVpiSy9jWkVU UUNKVG41N3h4OGFpVkgKKytwNkhtbWVLRUE0d2dTa3RTbDhvQ1R2N1Mrd1MwMEZaLzhTdFJKajd5 alo0ODFwT0xVVDU0bTFJWWJPZXQrYXFUCisrbFAyRDZoUVlkU1kxYTdtVzdGbkF3SVVYSHNOTHNU alZ6bXZSUHVKYmJVUGNrbUd0UUM3MXFpYmdGKzRMdGdiQQorK1RDOHFuNXZOZFdKd093aUJUTWp2 aDVhcHBDeFg3K1MvOFNFUUYwZTVkdW1CanRGY0Z3aG96SDgrRFZUekRKSHUKKytKd2U2bXZUWktW MEFVQ2pKck4wTTNlU1Z0Qjh2VWJvK1R2QmozQldabGRMY0kzZGJpVHcvM0FJNUZpMmw0M1RiCisr Q2Rla0ZuTnA0SVVFVXVoMktpa1Yrby9nbHpzYnFRSURBUUFCQW9JQ0FGdzFxNnRyNUk0OHZZN0RG K3JYc3VMbgorKzVaVVdFMUlRNmZ6QjRscjcybkp2LzlFRUduTWdZenQ5UHBNVXNENnZkQ3BCZ1My QzArNlJIQXJGekp0TkErUk0KKytpSExJRzdLNzcwMnZleXIveEJ4L013aVNsTWVNdi9YcGtGeFZJ NkU2c2tNR0cyczNBTVh4S3ZKVHk1Q3BSeCtJCisrZVFGeUxHK1lhMVgybGdKZXMvcSsvQ3BBSGtP akNPcGNMeVNRQzVOWjc0cTczNFY3blNkbW4rWnMzdFlFaCtPLworK2VpdXdUUC9qNWIzOFRlNXZW VHFEeFRjaUpQbWxqbVhMQ3dhME4xMDBsV2xiY3B2dzhxYnFpVEkySm0zWENiVUUKKytBekhqVzl2 bXJGM2NSUzFmWHhLRkdTaHczU1JxbGtieGpmZVdvaThxRFBVQlM0bThMT3I4cUc5V281TmZvbjB6 CisrekxQNGJjaTN6SER2VmNhYVpycnNVQnMveVpiZytEZ2thMURtWDdla21lY2NyMnlUZEtERmdQ dXBZVXl4VmJUbAorK2E5WkxKeXNqRkQ3cmdCdjFaY2xIb25McDZWYm0rWm9UcXZ0ZW80aWtBeTZM OVJ0QldKMjNYRUszNFBrUC8rYzUKKysydldaYU9ybmpTZUJIYkZjZThjZEpTeHFXcFArZVNDSTVJ OVhiRHJZRklzUS9ncUtndHpES3kyaWhKMlk4U1RMCisreU80aHlGUEZqeGMrR2c0L1AyUHBtVDVD WTJ0eTQ0TTBCV3MrSkdXOTZDSlBycnBsZjJsbVFVUUpqNUxaWTY2WAorK1ovNEM5TDdaWXRLWiti czVTdlU0NnlXdWdBdlFaWDIyWG05eExYV3lWWFJkeDNiaiszTTNmRG5GOWRpL3pkYmgKKytDZ0x4 N29XUE5yWGM3RkNham5uOUFvSUJBUUQ1Rk1Zd1JwdzlOV1Q5V0R4UXd4K2NTSTRJY2JkODhCeVRX NjNTCisrTHplUndaQTBKOS9TZndPK2FCUnVwemM5R2tHWENpWmNHTXczQUdzQ3RpZzh5Rmx3OEU1 S256TjdLbGZ0RE1uTQorKzlOVXh4emxSOFZ3S3lMblpmRzdzRFRsMDU3WmxVdWpucWhtdC9GOEY3 ZEl5N0ZWTzFkRS84bm5nQStGWVRDT0cKKytVWmRHand5QkRsRE0wSkpkVVdHWTN4c2x1dGNwQ0RO NW16U1RLank5ZHJNdkltQXNoUmF3eFJGNldCcG43dnIyCisrbkM2dmNpcWZ4MU16eDF2eWswSm0w aWxheWREZExNQURqdC9pTDROa3IwQkVzNGsrVXpRaUtEd3A4Z3U3YWJRMQorK2VCZnhkOUlhcjRo dFFhMkkxRXdsNlAwMUcvcStaWXdnSGhKOVJWbjRBeFFYZWZJTEFvSUJBUUR2Q291T1JkUVgKKytD OHdzeXA3TXdYbEYvM05RZU5ONS8rQjJtaGJ4ckJPZjdQbU1DWExua1JXY2p3SnR6eXBXRnFKMHNx YWkvMiswCisrYnFiTWNqWDVtYVQ4c3RUMnNobDN6WGUvRWp0MmUzVEJZcGMxdHl1c2VzOEtiNUJN VThodTZ0VGQzRzJDTVhwRAorK2RUNkRWZW1KWkNUdHdqOWFCTkl4U2l6dmxnTW9sSm5DcHpoUG5s ZkhTSTZFK2czbS9MVFRvM0h3YmpNU3cvVXEKKytpcmdqT3BJMndTQkI2TFpQU2dqdmZjWVBSeVdV azE2TDRBNXVTWDBjQURub3ZERkxhNS9oMHdKdk4vT29DU1FnCisrckxDWEc1RTE4RXlMNVdjNThC Q1kxWnZ4bWpHM2xRdGdQeFl1Mkp3YzM2Ui95L0pLbHhXNXN1RVI1Wk5wYmJENAorK3VPeVR0MlZ4 TVEyYkFvSUJBUUM1K016UkZxZG8vQWpmTDVZNUpyYmZWVHpYQ1REYTA5eENHZDE2WlU2MFFUV04K KysrNGVkL3IrbzFzVUtxVWNSRkIyTXpFTS8yRFFCalFwWkIvQ2JFV3ZXYTFYSldYeHlwWGJvd3Zl WlUrUXFPbm1OCisrdVF2ajhXTHlBM28rUE5GOWU5UXZhdXdDckhwbjhWcHhidFBXdWFZb0tuVUZy ZUZaWlF4SGhQR3hSQklTMkpPWgorK2VEclQ4WmFXbmtDa2gxQVpwNXNtUTcxTE9wclNsbUtyZzRq ZDFHakNWTXhRUjVONUtYYnR5djBPVENaL1VGcUsKKysyYVJCc01QeUpna2FCQ2hrWlBMUmNLd2Mr L3dsUVJ4MWZIUWIxNEROVEFwTXhvWEZPN2VPd3FtT2twQXQ5aXlsCisrU0JJd29TMFVVSTVhYjg4 K2JCbVhOdktjdUZkTnVRNG5vd1RKVW45cEFvSUJBRE1Oa0lMQlhTdlM1RGVJeXVPMgorK1NwMXRr b1pVVis1TmZQWTNzTURLM0tJaWJhVy8rdCtFT0JabzRMN3RLUUNiOHZSemwyMW1tc2Z4ZmdSYVBE YmoKKyszcjN0djlnMGI0WUx4eEJ5NTJwRnNjai9zb1hSYWkxN1NTN1Vad0EyUUsrWHpnRFliRGNM TkM2bUlzVFFHNEd4CisrZHNXazMvenMzS3VVU1FhZWhtd3JXSytmSVVLMzhjMXBMSzh2N0xveHJM a3F4bEh3WjA0UnRoSHc4S1R0aEg3WAorK1BubDFKMExGOENTZU95ZldMU3VQVWZrVDBHRXpwdG5O SHBFYmFIZlFNNlI2ZWFHaFZKUEY2QVptZTR5NllZZ2cKKyttMmloaFN0MW4wWFZFV3BIWVdqeEZ5 M21LMm16NzV1bkZDNExNK05FWTJwMnp1VVFvQ3c3TmpuWTNRWXJmQ254CisrclJNQ2dnRUFYZVhz TVNMRmpqeXVvTDdpS2JBeG81MkhEL1AwZkJveTU4THlSY3dmTlZyMGx2WWFuNHBZRXgrbworK0tp akloOUsxNlBxWFpYS01BOXYwMDNCK3VsbUY4Yko3U2RkQ1o1Tkd2bkZoVVREZTREZFRLZ3AyUnV3 UTNCc2MKKyszc2tQSURiaFZFVHlPTEN0eXMzNFVTSHJxOFUvMERsR1kzZUxSZnh3OUduYkt4U0JH YS9LRXUvcVFMUE5VbzUwCisrN3hIWkRnN0dLZUMza3FOSmVxS005cmtwMFZ6SUdrRW5hRDkxMjdM ZU5EbUVSRGZmdHhKekZvQy9USHZVQkxmVQorKzZTdXMyWll3UkU4VkZ2S0MzMFE0NXQvYzU0WDNJ dWhZdkF1aUN1VG15ZkU0cnV5enlPd0t6aFVrZWVMcTFBUFgKKytnMHZlRmJ5ZnpsSjBxOHF6RC9p ZmZxcUlhMlpTbVE9PQorKy0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0KK2RpZmYgLS1naXQgYS9x dGJhc2UvdGVzdHMvYXV0by9vdGhlci9xYWNjZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNjZXNzaWJp bGl0eWxpbnV4LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL290aGVyL3FhY2Nlc3NpYmlsaXR5bGlu dXgvdHN0X3FhY2Nlc3NpYmlsaXR5bGludXguY3BwCitpbmRleCA3YmEzNzE1ZTEzLi43NTJhYTEy MmY2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vb3RoZXIvcWFjY2Vzc2liaWxpdHls aW51eC90c3RfcWFjY2Vzc2liaWxpdHlsaW51eC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRv L290aGVyL3FhY2Nlc3NpYmlsaXR5bGludXgvdHN0X3FhY2Nlc3NpYmlsaXR5bGludXguY3BwCitA QCAtMTc5LDYgKzE3OSw3IEBAIHZvaWQgdHN0X1FBY2Nlc3NpYmlsaXR5TGludXg6OmluaXRUZXN0 Q2FzZSgpCisgICAgIFFWRVJJRlkoIWFkZHJlc3MuaXNFbXB0eSgpKTsKKyAKKyAgICAgbV93aW5k b3cgPSBuZXcgQWNjZXNzaWJsZVRlc3RXaW5kb3coKTsKKysgICAgbV93aW5kb3ctPnNldE9iamVj dE5hbWUoIm1haW5XaW5kb3ciX0wxKTsKKyAgICAgbV93aW5kb3ctPnNob3coKTsKKyAKKyAgICAg UVZFUklGWShRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKG1fd2luZG93KSk7CitAQCAtMjM2 LDggKzIzNywxMSBAQCBib29sIGhhc1N0YXRlKFFEQnVzSW50ZXJmYWNlICppbnRlcmZhY2UsIEF0 c3BpU3RhdGVUeXBlIHN0YXRlKQorIHZvaWQgdHN0X1FBY2Nlc3NpYmlsaXR5TGludXg6OnRlc3RM YWJlbCgpCisgeworICAgICBRTGFiZWwgKmwgPSBuZXcgUUxhYmVsKG1fd2luZG93KTsKKysgICAg bC0+c2V0T2JqZWN0TmFtZSgidGhlT2JqZWN0TmFtZSJfTDEpOworICAgICBsLT5zZXRUZXh0KCJI ZWxsbyBBMTF5Iik7CisgICAgIG1fd2luZG93LT5hZGRXaWRnZXQobCk7CisrICAgIGF1dG8gYTEx eUVtcHR5ID0gbmV3IFFMYWJlbChtX3dpbmRvdyk7CisrICAgIG1fd2luZG93LT5hZGRXaWRnZXQo bCk7CisgCisgICAgIC8vIEFwcGxpY2F0aW9uCisgICAgIFFDT01QQVJFKGdldFBhcmVudChtYWlu V2luZG93KSwgUUxhdGluMVN0cmluZyhBVFNQSV9EQlVTX1BBVEhfUk9PVCkpOworQEAgLTI0OSw2 ICsyNTMsOCBAQCB2b2lkIHRzdF9RQWNjZXNzaWJpbGl0eUxpbnV4Ojp0ZXN0TGFiZWwoKQorICAg ICBRQ09NUEFSRShnZXRDaGlsZHJlbihsYWJlbEludGVyZmFjZSkuY291bnQoKSwgMCk7CisgICAg IFFDT01QQVJFKGxhYmVsSW50ZXJmYWNlLT5jYWxsKFFEQnVzOjpCbG9jaywgIkdldFJvbGVOYW1l IikuYXJndW1lbnRzKCkuZmlyc3QoKS50b1N0cmluZygpLCBRTGF0aW4xU3RyaW5nKCJsYWJlbCIp KTsKKyAgICAgUUNPTVBBUkUobGFiZWxJbnRlcmZhY2UtPmNhbGwoUURCdXM6OkJsb2NrLCAiR2V0 Um9sZSIpLmFyZ3VtZW50cygpLmZpcnN0KCkudG9VSW50KCksIDI5dSk7CisrICAgIFFDT01QQVJF KGxhYmVsSW50ZXJmYWNlLT5jYWxsKFFEQnVzOjpCbG9jaywgIkdldEFjY2Vzc2libGVJZCIpLmFy Z3VtZW50cygpLmZpcnN0KCkudG9TdHJpbmcoKSwKKysgICAgICAgICAgICAgUUxhdGluMVN0cmlu ZygibWFpbldpbmRvdy50aGVPYmplY3ROYW1lIikpOworICAgICBRQ09NUEFSRShnZXRQYXJlbnQo bGFiZWxJbnRlcmZhY2UpLCBtYWluV2luZG93LT5wYXRoKCkpOworICAgICBRVkVSSUZZKCFoYXNT dGF0ZShsYWJlbEludGVyZmFjZSwgQVRTUElfU1RBVEVfRURJVEFCTEUpKTsKKyAgICAgUVZFUklG WShoYXNTdGF0ZShsYWJlbEludGVyZmFjZSwgQVRTUElfU1RBVEVfUkVBRF9PTkxZKSk7CitAQCAt MjU2LDcgKzI2MiwxMiBAQCB2b2lkIHRzdF9RQWNjZXNzaWJpbGl0eUxpbnV4Ojp0ZXN0TGFiZWwo KQorICAgICBsLT5zZXRUZXh0KCJOZXcgdGV4dCIpOworICAgICBRQ09NUEFSRShsYWJlbEludGVy ZmFjZS0+cHJvcGVydHkoIk5hbWUiKS50b1N0cmluZygpLCBsLT50ZXh0KCkpOworIAorKyAgICBh dXRvICphMTF5RW1wdHlJbnRlcmZhY2UgPSBnZXRJbnRlcmZhY2UoY2hpbGRyZW4uYXQoMSksICJv cmcuYTExeS5hdHNwaS5BY2Nlc3NpYmxlIik7CisrICAgIFFDT01QQVJFKGExMXlFbXB0eUludGVy ZmFjZS0+Y2FsbChRREJ1czo6QmxvY2ssICJHZXRBY2Nlc3NpYmxlSWQiKS5hcmd1bWVudHMoKS5m aXJzdCgpLnRvU3RyaW5nKCksCisrICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIm1haW5XaW5k b3cuUUxhYmVsIikpOworKworICAgICBtX3dpbmRvdy0+Y2xlYXJDaGlsZHJlbigpOworKyAgICBk ZWxldGUgYTExeUVtcHR5SW50ZXJmYWNlOworICAgICBkZWxldGUgbGFiZWxJbnRlcmZhY2U7Cisg fQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5 L3RzdF9xc3FscXVlcnkuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vc3FsL2tlcm5lbC9xc3FscXVl cnkvdHN0X3FzcWxxdWVyeS5jcHAKK2luZGV4IDc2ZGY2MWM4OTIuLjZkNmQ2NWI3OTEgMTAwNjQ0 CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9zcWwva2VybmVsL3FzcWxxdWVyeS90c3RfcXNxbHF1 ZXJ5LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vc3FsL2tlcm5lbC9xc3FscXVlcnkvdHN0 X3FzcWxxdWVyeS5jcHAKK0BAIC0xLDYgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisg KioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHly aWdodCAoQykgMjAyMiBUaGUgUXQgQ29tcGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0cHM6Ly93 d3cucXQuaW8vbGljZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRl c3Qgc3VpdGUgb2YgdGhlIFF0IFRvb2xraXQuCitAQCAtNjgsNiArNjgsOCBAQCBwcml2YXRlIHNs b3RzOgorICAgICB2b2lkIHF1ZXJ5X2V4ZWMoKTsKKyAgICAgdm9pZCBleGVjRXJyb3JSZWNvdmVy eV9kYXRhKCkgeyBnZW5lcmljX2RhdGEoKTsgfQorICAgICB2b2lkIGV4ZWNFcnJvclJlY292ZXJ5 KCk7CisrICAgIHZvaWQgcHJlbWF0dXJlRXhlY19kYXRhKCkgeyBnZW5lcmljX2RhdGEoKTsgfQor KyAgICB2b2lkIHByZW1hdHVyZUV4ZWMoKTsKKyAgICAgdm9pZCBmaXJzdF9kYXRhKCkgeyBnZW5l cmljX2RhdGEoKTsgfQorICAgICB2b2lkIGZpcnN0KCk7CisgICAgIHZvaWQgbmV4dF9kYXRhKCkg eyBnZW5lcmljX2RhdGEoKTsgfQorQEAgLTI3NzAsNiArMjc3MiwzNSBAQCB2b2lkIHRzdF9RU3Fs UXVlcnk6OmV4ZWNFcnJvclJlY292ZXJ5KCkKKyAgICAgUVZFUklGWV9TUUwoIHEsIGV4ZWMoKSAp OworIH0KKyAKKyt2b2lkIHRzdF9RU3FsUXVlcnk6OnByZW1hdHVyZUV4ZWMoKQorK3sKKysgICAg UUZFVENIKFFTdHJpbmcsIGRiTmFtZSk7CisrICAgIC8vIFdlIG9ubHkgd2FudCB0aGUgZW5naW5l IG5hbWUsIGZvciBhZGREYXRhYmFzZSgpOgorKyAgICBpbnQgY3V0ID0gZGJOYW1lLmluZGV4T2Yo UUNoYXIoJ0AnKSk7CisrICAgIGlmIChjdXQgPCAwKQorKyAgICAgICAgUVNLSVAoIkZhaWxlZCB0 byBwYXJzZSBkYXRhYmFzZSB0eXBlIG91dCBvZiBuYW1lIik7CisrICAgIGRiTmFtZS50cnVuY2F0 ZShjdXQpOworKyAgICBjdXQgPSBkYk5hbWUuaW5kZXhPZihRQ2hhcignXycpKTsKKysgICAgaWYg KGN1dCA+PSAwKQorKyAgICAgICAgZGJOYW1lID0gZGJOYW1lLm1pZChjdXQgKyAxKTsKKysKKysg ICAgYXV0byBkYiA9IFFTcWxEYXRhYmFzZTo6YWRkRGF0YWJhc2UoZGJOYW1lKTsKKysgICAgUVNx bFF1ZXJ5IHEoZGIpOworKworKyAgICBRVGVzdDo6aWdub3JlTWVzc2FnZShRdFdhcm5pbmdNc2cs CisrICAgICAgICAgICAgICAgICAgICAgICAgICJRU3FsRGF0YWJhc2VQcml2YXRlOjpyZW1vdmVE YXRhYmFzZTogY29ubmVjdGlvbiAiCisrICAgICAgICAgICAgICAgICAgICAgICAgICIncXRfc3Fs X2RlZmF1bHRfY29ubmVjdGlvbicgaXMgc3RpbGwgaW4gdXNlLCBhbGwgIgorKyAgICAgICAgICAg ICAgICAgICAgICAgICAicXVlcmllcyB3aWxsIGNlYXNlIHRvIHdvcmsuIik7CisrICAgIFFUZXN0 OjppZ25vcmVNZXNzYWdlKFF0V2FybmluZ01zZywKKysgICAgICAgICAgICAgICAgICAgICAgICAg IlFTcWxEYXRhYmFzZVByaXZhdGU6OmFkZERhdGFiYXNlOiBkdXBsaWNhdGUgY29ubmVjdGlvbiBu YW1lICIKKysgICAgICAgICAgICAgICAgICAgICAgICAgIidxdF9zcWxfZGVmYXVsdF9jb25uZWN0 aW9uJywgb2xkIGNvbm5lY3Rpb24gcmVtb3ZlZC4iKTsKKysgICAgYXV0byBvdGhlckRiID0gUVNx bERhdGFiYXNlOjphZGREYXRhYmFzZShkYk5hbWUpOworKworKyAgICBRVGVzdDo6aWdub3JlTWVz c2FnZShRdFdhcm5pbmdNc2csICJRU3FsUXVlcnk6OmV4ZWM6IGNhbGxlZCBiZWZvcmUgZHJpdmVy IGhhcyBiZWVuIHNldCB1cCIpOworKyAgICAvLyBRVEJVRy0xMDAwMzc6IHNob3VsZG4ndCBjcmFz aCAhCisrICAgIFFWRVJJRlkoIXEuZXhlYygic2VsZWN0IHN0dWZmIGZyb20gVGhlVm9pZCIpKTsK Kyt9CisrCisgdm9pZCB0c3RfUVNxbFF1ZXJ5OjpsYXN0SW5zZXJ0SWQoKQorIHsKKyAgICAgUUZF VENIKCBRU3RyaW5nLCBkYk5hbWUgKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by90 ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci90c3RfcWFic3RyYWN0aXRlbW1vZGVsdGVz dGVyLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVz dGVyL3RzdF9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCitpbmRleCA0YWEzZjhkNjBiLi5k MjA1MGE2MWFhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdGVzdGxpYi9xYWJzdHJh Y3RpdGVtbW9kZWx0ZXN0ZXIvdHN0X3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKKysrKyBi L3F0YmFzZS90ZXN0cy9hdXRvL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyL3RzdF9x YWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCitAQCAtMTE1LDYgKzExNSwxMCBAQCB2b2lkIHRz dF9RQWJzdHJhY3RJdGVtTW9kZWxUZXN0ZXI6OnN0YW5kYXJkSXRlbU1vZGVsWmVyb0NvbHVtbnMo KQorICAgICAvLyBRVEJVRy05Mjg4NgorICAgICBtb2RlbC5pbnNlcnRSb3dzKDAsIDUpOworICAg ICBtb2RlbC5yZW1vdmVSb3dzKDEsIDIpOworKworKyAgICBjb25zdCBRTW9kZWxJbmRleCBwYXJl bnRJbmRleCA9IG1vZGVsLmluZGV4KDAsIDApOworKyAgICBtb2RlbC5pbnNlcnRSb3dzKDAsIDUs IHBhcmVudEluZGV4KTsKKysgICAgbW9kZWwucmVtb3ZlUm93cygxLCAyLCBwYXJlbnRJbmRleCk7 CisgfQorIAorIHZvaWQgdHN0X1FBYnN0cmFjdEl0ZW1Nb2RlbFRlc3Rlcjo6dGVzdEluc2VydFRo cm91Z2hQcm94eSgpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL2Fs bG1vY3NfYmFzZWxpbmVfaW4uanNvbiBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9hbGxt b2NzX2Jhc2VsaW5lX2luLmpzb24KK2luZGV4IDEyYTRhMjJhMTkuLmNlNTE4ZTc4ZmIgMTAwNjQ0 CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvYWxsbW9jc19iYXNlbGluZV9pbi5q c29uCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvYWxsbW9jc19iYXNlbGluZV9p bi5qc29uCitAQCAtNjY4LDUwICs2NjgsNiBAQAorICAgICAgICAgImlucHV0RmlsZSI6ICJ0YXNr MTkyNTUyLmgiLAorICAgICAgICAgIm91dHB1dFJldmlzaW9uIjogNjcKKyAgICAgfSwKKy0gICAg eworLSAgICAgICAgImNsYXNzZXMiOiBbCistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAg ICAiY2xhc3NOYW1lIjogIklubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb24iLAorLSAgICAg ICAgICAgICAgICAib2JqZWN0IjogdHJ1ZSwKKy0gICAgICAgICAgICAgICAgInF1YWxpZmllZENs YXNzTmFtZSI6ICJJbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uIiwKKy0gICAgICAgICAg ICAgICAgInNsb3RzIjogWworLSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAg ICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAi bmFtZSI6ICJhIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lk IgorLSAgICAgICAgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAg ICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1YmxpYyIsCistICAgICAgICAgICAgICAg ICAgICAgICAgIm5hbWUiOiAiYiIsCistICAgICAgICAgICAgICAgICAgICAgICAgInJldHVyblR5 cGUiOiAidm9pZCIKKy0gICAgICAgICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgICAgICAg ICB7CistICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICJuYW1lIjogImMiLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICJyZXR1cm5UeXBlIjogInZvaWQiCistICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAg ICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGlj IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJkIiwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAgICAgICAgfSwK Ky0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNz IjogInB1YmxpYyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZSIsCistICAg ICAgICAgICAgICAgICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAgICAgICAg ICAgICAgIH0KKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgInN1cGVyQ2xh c3NlcyI6IFsKKy0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAg ICAiYWNjZXNzIjogInB1YmxpYyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAi UU9iamVjdCIKKy0gICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgXQorLSAg ICAgICAgICAgIH0KKy0gICAgICAgIF0sCistICAgICAgICAiaW5wdXRGaWxlIjogInRhc2sxODk5 OTYuaCIsCistICAgICAgICAib3V0cHV0UmV2aXNpb24iOiA2NworLSAgICB9LAorICAgICB7Cisg ICAgICAgICAiY2xhc3NlcyI6IFsKKyAgICAgICAgICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3Rlc3RzL2F1dG8vdG9vbHMvbW9jL21vYy5wcm8gYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9t b2MvbW9jLnBybworaW5kZXggYzMyNGIzYThjZC4uNGFjZWI3OGRjMCAxMDA2NDQKKy0tLSBhL3F0 YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9tb2MucHJvCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0 by90b29scy9tb2MvbW9jLnBybworQEAgLTE1LDcgKzE1LDcgQEAgY3Jvc3NfY29tcGlsZTogREVG SU5FUyArPSBNT0NfQ1JPU1NfQ09NUElMRUQKKyBIRUFERVJTICs9IHVzaW5nLW5hbWVzcGFjZXMu aCBuby1rZXl3b3Jkcy5oIHRhc2s4Nzg4My5oIGMtY29tbWVudHMuaCBiYWNrc2xhc2gtbmV3bGlu ZXMuaCBvbGRzdHlsZS1jYXN0cy5oIFwKKyAgICAgICAgICAgIHNsb3RzLXdpdGgtdm9pZC10ZW1w bGF0ZS5oIHFpbnZva2FibGUuaCBuYW1lc3BhY2VkLWZsYWdzLmggdHJpZ3JhcGhzLmggXAorICAg ICAgICAgICAgZXNjYXBlcy1pbi1zdHJpbmctbGl0ZXJhbHMuaCBjc3R5bGUtZW51bXMuaCBxcHJp dmF0ZXNsb3RzLmggZ2FkZ2V0d2l0aG5vZW51bXMuaCBcCistICAgICAgICAgICBkaXItaW4taW5j bHVkZS1wYXRoLmggc2luZ2xlX2Z1bmN0aW9uX2tleXdvcmQuaCB0YXNrMTkyNTUyLmggdGFzazE4 OTk5Ni5oIFwKKysgICAgICAgICAgIGRpci1pbi1pbmNsdWRlLXBhdGguaCBzaW5nbGVfZnVuY3Rp b25fa2V5d29yZC5oIHRhc2sxOTI1NTIuaCBcCisgICAgICAgICAgICB0YXNrMjM0OTA5LmggdGFz azI0MDM2OC5oIHB1cmUtdmlydHVhbC1zaWduYWxzLmggY3h4MTEtZW51bXMuaCBcCisgICAgICAg ICAgICBjeHgxMS1maW5hbC1jbGFzc2VzLmggXAorICAgICAgICAgICAgY3h4MTEtZXhwbGljaXQt b3ZlcnJpZGUtY29udHJvbC5oIFwKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by90b29s cy9tb2MvdGFzazE4OTk5Ni5oIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3Rhc2sxODk5 OTYuaAorZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCBmOTRhMDUxYjNhLi4wMDAwMDAw MDAwCistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdGFzazE4OTk5Ni5oCisrKysg L2Rldi9udWxsCitAQCAtMSw0NyArMCwwIEBACistLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0qKgor LSoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQgQ29tcGFueSBMdGQuCistKiogQ29udGFjdDog aHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworLSoqCistKiogVGhpcyBmaWxlIGlzIHBhcnQg b2YgdGhlIHRlc3Qgc3VpdGUgb2YgdGhlIFF0IFRvb2xraXQuCistKioKKy0qKiAkUVRfQkVHSU5f TElDRU5TRTpHUEwtRVhDRVBUJAorLSoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorLSoqIExp Y2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlz IGZpbGUgaW4KKy0qKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3Jl ZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKy0qKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwg aW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKy0qKiBhIHdyaXR0ZW4g YWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0 ZXJtcworLSoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25k aXRpb25zLiBGb3IgZnVydGhlcgorLSoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3Jt IGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCistKioKKy0qKiBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBVc2FnZQorLSoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUg dXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQorLSoqIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorLSoqIEZvdW5k YXRpb24gd2l0aCBleGNlcHRpb25zIGFzIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQ TDMtRVhDRVBUCistKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBs ZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZworLSoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKKy0qKiBiZSBtZXQ6 IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgorLSoqCistKiogJFFU X0VORF9MSUNFTlNFJAorLSoqCistKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0vLyBpbmxpbmUgZnVu Y3Rpb25zIGNhbiBoYXZlIHRocm93IGRlY2xhcmF0aW9ucworLQorLSNpZm5kZWYgVEFTSzE4OTk5 Nl9ICistI2RlZmluZSBUQVNLMTg5OTk2X0gKKy0KKy0jaW5jbHVkZSA8UU9iamVjdD4KKy0KKy1j bGFzcyBJbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uIDogcHVibGljIFFPYmplY3QKKy17 CistICAgIFFfT0JKRUNUCistCistcHVibGljIHNsb3RzOgorLSAgICB2b2lkIGEoKSB0aHJvdygp IHsgfQorLSAgICB2b2lkIGIoKSBjb25zdCB0aHJvdygpIHsgfQorLSAgICB2b2lkIGMoKSB0aHJv dygpOworLSAgICB2b2lkIGQoKSB0aHJvdyhpbnQpIHsgfQorLSAgICB2b2lkIGUoKSBjb25zdCB0 aHJvdyhpbnQsZG91YmxlKSB7IH0KKy19OworLQorLSNlbmRpZgorZGlmZiAtLWdpdCBhL3F0YmFz ZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90c3RfbW9jLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rv b2xzL21vYy90c3RfbW9jLmNwcAoraW5kZXggYzcxNmFlYWQyMS4uMTVkZDllNDFlNSAxMDA2NDQK Ky0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90c3RfbW9jLmNwcAorKysrIGIvcXRi YXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3RzdF9tb2MuY3BwCitAQCAtNjMxLDcgKzYzMSw2IEBA IHB1YmxpYzoKKyBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGluaXRUZXN0Q2FzZSgpOworIAor LSAgICB2b2lkIHNsb3RXaXRoRXhjZXB0aW9uKCkgdGhyb3coTXlTdHJ1Y3QpOworICAgICB2b2lk IGRvbnRTdHJpcE5hbWVzcGFjZXMoKTsKKyAgICAgdm9pZCBvbGRTdHlsZUNhc3RzKCk7CisgICAg IHZvaWQgd2Fybk9uRXh0cmFTaWduYWxTbG90UXVhbGlmaWFjdGlvbigpOworQEAgLTY3Myw3ICs2 NzIsNiBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHRlbXBsYXRlR3RHdCgpOworICAgICB2 b2lkIHFwcml2YXRlc2xvdHMoKTsKKyAgICAgdm9pZCBxcHJpdmF0ZXByb3BlcnRpZXMoKTsKKy0g ICAgdm9pZCBpbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uKCk7CisgICAgIHZvaWQgd2Fy bk9uUHJvcGVydHlXaXRob3V0UkVBRCgpOworICAgICB2b2lkIGNvbnN0cnVjdG9ycygpOworICAg ICB2b2lkIHR5cGVuYW1lV2l0aFVuc2lnbmVkKCk7CitAQCAtNzg0LDEyICs3ODIsNiBAQCB2b2lk IHRzdF9Nb2M6OmluaXRUZXN0Q2FzZSgpCisgI2VuZGlmCisgfQorIAorLXZvaWQgdHN0X01vYzo6 c2xvdFdpdGhFeGNlcHRpb24oKSB0aHJvdyhNeVN0cnVjdCkKKy17CistICAgIC8vIGJlIGhhcHB5 CistICAgIFFWRVJJRlkodHJ1ZSk7CistfQorLQorIHZvaWQgdHN0X01vYzo6ZG9udFN0cmlwTmFt ZXNwYWNlcygpCisgeworICAgICBTZW5kZXIgc2VuZGVyOworQEAgLTgyNCw3ICs4MTYsNyBAQCB2 b2lkIHRzdF9Nb2M6Om9sZFN0eWxlQ2FzdHMoKQorIAorICAgICBRU3RyaW5nTGlzdCBhcmdzOwor ICAgICBhcmdzIDw8ICItYyIgPDwgIi14IiA8PCAiYysrIiA8PCAiLVdvbGQtc3R5bGUtY2FzdCIg PDwgIi1JIiA8PCAiLiIKKy0gICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1v IiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzExIiA8PCAiLSI7CisrICAg ICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIgPDwg Ii1mUElDIiA8PCAiLXN0ZD1jKysxeiIgPDwgIi0iOworICAgICBwcm9jLnN0YXJ0KCJnY2MiLCBh cmdzKTsKKyAgICAgUVZFUklGWShwcm9jLndhaXRGb3JTdGFydGVkKCkpOworICAgICBwcm9jLndy aXRlKG1vY091dCk7CitAQCAtODk0LDcgKzg4Niw3IEBAIHZvaWQgdHN0X01vYzo6aW5wdXRGaWxl TmFtZVdpdGhEb3RzQnV0Tm9FeHRlbnNpb24oKQorIAorICAgICBRU3RyaW5nTGlzdCBhcmdzOwor ICAgICBhcmdzIDw8ICItYyIgPDwgIi14IiA8PCAiYysrIiA8PCAiLUkiIDw8ICIuLiIKKy0gICAg ICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAi LWZQSUMiIDw8ICItc3RkPWMrKzExIiA8PCAiLSI7CisrICAgICAgICAgPDwgIi1JIiA8PCBxdElu Y2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysx eiIgPDwgIi0iOworICAgICBwcm9jLnN0YXJ0KCJnY2MiLCBhcmdzKTsKKyAgICAgUVZFUklGWShw cm9jLndhaXRGb3JTdGFydGVkKCkpOworICAgICBwcm9jLndyaXRlKG1vY091dCk7CitAQCAtMTE3 NCw3ICsxMTY2LDcgQEAgdm9pZCB0c3RfTW9jOjppZ25vcmVPcHRpb25DbGFzaGVzKCkKKyAgICAg UVN0cmluZ0xpc3QgZ2NjQXJnczsKKyAgICAgZ2NjQXJncyA8PCAiLWMiIDw8ICIteCIgPDwgImMr KyIgPDwgIi1JIiA8PCAiLi4iCisgICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8 ICItSSIgPDwgaW5jbHVkZURpciA8PCAiLW8iIDw8ICIvZGV2L251bGwiCistICAgICAgICAgPDwg Ii1mUElDIiA8PCAiLXN0ZD1jKysxMSIgPDwgICItIjsKKysgICAgICAgICA8PCAiLWZQSUMiIDw8 ICItc3RkPWMrKzF6IiA8PCAgIi0iOworICAgICBwcm9jLnN0YXJ0KCJnY2MiLCBnY2NBcmdzKTsK KyAgICAgUVZFUklGWShwcm9jLndhaXRGb3JTdGFydGVkKCkpOworICAgICBwcm9jLndyaXRlKG1v Y091dCk7CitAQCAtMTU5MywyMSArMTU4NSw2IEBAIHZvaWQgdHN0X01vYzo6cXByaXZhdGVwcm9w ZXJ0aWVzKCkKKyAKKyB9CisgCistI2luY2x1ZGUgInRhc2sxODk5OTYuaCIKKy0KKy12b2lkIElu bGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb246OmMoKSB0aHJvdygpIHt9CistCistdm9pZCB0 c3RfTW9jOjppbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uKCkKKy17CistICAgIElubGlu ZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb24gdHN0OworLSAgICBjb25zdCBRTWV0YU9iamVjdCAq bW9iaiA9IHRzdC5tZXRhT2JqZWN0KCk7CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhPZlNsb3Qo ImEoKSIpICE9IC0xKTsKKy0gICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgiYigpIikgIT0g LTEpOworLSAgICBRVkVSSUZZKG1vYmotPmluZGV4T2ZTbG90KCJjKCkiKSAhPSAtMSk7CistICAg IFFWRVJJRlkobW9iai0+aW5kZXhPZlNsb3QoImQoKSIpICE9IC0xKTsKKy0gICAgUVZFUklGWSht b2JqLT5pbmRleE9mU2xvdCgiZSgpIikgIT0gLTEpOworLX0KKy0KKyB2b2lkIHRzdF9Nb2M6Ondh cm5PblByb3BlcnR5V2l0aG91dFJFQUQoKQorIHsKKyAjaWZkZWYgTU9DX0NST1NTX0NPTVBJTEVE CitAQCAtMTg2OSw3ICsxODQ2LDcgQEAgdm9pZCB0c3RfTW9jOjpub3RpZnlFcnJvcigpCisgCisg ICAgIFFTdHJpbmdMaXN0IGFyZ3M7CisgICAgIGFyZ3MgPDwgIi1jIiA8PCAiLXgiIDw8ICJjKysi IDw8ICItSSIgPDwgIi4iCistICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICIt byIgPDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxMSIgPDwgIi0iOworKyAg ICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8 ICItZlBJQyIgPDwgIi1zdGQ9YysrMXoiIDw8ICItIjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwg YXJncyk7CisgICAgIFFWRVJJRlkocHJvYy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJvYy53 cml0ZShtb2NPdXQpOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRl bXZpZXdzL3FoZWFkZXJ2aWV3L3RzdF9xaGVhZGVydmlldy5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0 by93aWRnZXRzL2l0ZW12aWV3cy9xaGVhZGVydmlldy90c3RfcWhlYWRlcnZpZXcuY3BwCitpbmRl eCBjMzU1ZWU5NjY1Li44OGMwOWRlOGUwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8v d2lkZ2V0cy9pdGVtdmlld3MvcWhlYWRlcnZpZXcvdHN0X3FoZWFkZXJ2aWV3LmNwcAorKysrIGIv cXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcWhlYWRlcnZpZXcvdHN0X3FoZWFk ZXJ2aWV3LmNwcAorQEAgLTI1MSw2ICsyNTEsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lk IHRlc3RSZXNldENhY2hlZFNpemVIaW50KCk7CisgICAgIHZvaWQgc3RhdHVzVGlwcygpOworICAg ICB2b2lkIHRlc3RSZW1vdmluZ0NvbHVtbnNWaWFMYXlvdXRDaGFuZ2VkKCk7CisrICAgIHZvaWQg dGVzdE1vZGVsTW92aW5nQ29sdW1ucygpOworIAorIHByb3RlY3RlZDoKKyAgICAgdm9pZCBzZXR1 cFRlc3REYXRhKGJvb2wgdXNlX3Jlc2V0X21vZGVsID0gZmFsc2UpOworQEAgLTM2MCw2ICszNjEs MTIgQEAgcHVibGljOgorICAgICAgICAgZW5kUmVtb3ZlQ29sdW1ucygpOworICAgICB9CisgCisr ICAgIHZvaWQgbW92ZUNvbHVtbihpbnQgZnJvbSwgaW50IHRvKQorKyAgICB7CisrICAgICAgICBi ZWdpbk1vdmVDb2x1bW5zKFFNb2RlbEluZGV4KCksIGZyb20sIGZyb20sIFFNb2RlbEluZGV4KCks IHRvKTsKKysgICAgICAgIGVuZE1vdmVDb2x1bW5zKCk7CisrICAgIH0KKysKKyAgICAgdm9pZCBj bGVhbnVwKCkKKyAgICAgeworICAgICAgICAgZW1pdCBsYXlvdXRBYm91dFRvQmVDaGFuZ2VkKCk7 CitAQCAtMzYyNyw1ICszNjM0LDE4IEBAIHZvaWQgdHN0X1FIZWFkZXJWaWV3Ojp0ZXN0UmVtb3Zp bmdDb2x1bW5zVmlhTGF5b3V0Q2hhbmdlZCgpCisgICAgIC8vIFRoZSBtYWluIHBvaW50IG9mIHRo aXMgdGVzdCBpcyB0aGF0IHRoZSBzZWN0aW9uLXNpemUgcmVzdG9yaW5nIGNvZGUgZGlkbid0IGdv IG91dCBvZiBib3VuZHMuCisgfQorIAorK3ZvaWQgdHN0X1FIZWFkZXJWaWV3Ojp0ZXN0TW9kZWxN b3ZpbmdDb2x1bW5zKCkKKyt7CisrICAgIFF0VGVzdE1vZGVsIG1vZGVsKDEwLCAxMCk7CisrICAg IFFIZWFkZXJWaWV3IGh2KFF0OjpIb3Jpem9udGFsKTsKKysgICAgaHYuc2V0TW9kZWwoJm1vZGVs KTsKKysgICAgaHYucmVzaXplU2VjdGlvbnMoUUhlYWRlclZpZXc6OlJlc2l6ZVRvQ29udGVudHMp OworKyAgICBodi5zaG93KCk7CisrCisrICAgIFFQZXJzaXN0ZW50TW9kZWxJbmRleCBpbmRleDMg PSBtb2RlbC5pbmRleCgwLCAzKTsKKysgICAgbW9kZWwubW92ZUNvbHVtbigzLCAxKTsKKysgICAg UUNPTVBBUkUoaW5kZXgzLmNvbHVtbigpLCAxKTsKKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUUhl YWRlclZpZXcpCisgI2luY2x1ZGUgInRzdF9xaGVhZGVydmlldy5tb2MiCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy90c3RfcXRhYmxl dmlldy5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3 L3RzdF9xdGFibGV2aWV3LmNwcAoraW5kZXggNzYxMzU3YjI1Mi4uMDZiYjcwNjA3NCAxMDA2NDQK Ky0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcvdHN0 X3F0YWJsZXZpZXcuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3 cy9xdGFibGV2aWV3L3RzdF9xdGFibGV2aWV3LmNwcAorQEAgLTM5Nyw2ICszOTcsNyBAQCBwcml2 YXRlIHNsb3RzOgorICAgICB2b2lkIGNoZWNrSGVhZGVyTWluU2l6ZSgpOworIAorICAgICB2b2lk IHJlc2l6ZVRvQ29udGVudHMoKTsKKysgICAgdm9pZCByZXNpemVUb0NvbnRlbnRzU3BhbnMoKTsK KyAKKyAgICAgdm9pZCB0YWJGb2N1cygpOworICAgICB2b2lkIGJpZ01vZGVsKCk7CitAQCAtMzcy MSw2ICszNzIyLDcwIEBAIHZvaWQgdHN0X1FUYWJsZVZpZXc6OnJlc2l6ZVRvQ29udGVudHMoKQor IAorIH0KKyAKKysKKytjbGFzcyBTcGFuTW9kZWwgOiBwdWJsaWMgUUFic3RyYWN0VGFibGVNb2Rl bAorK3sKKytwdWJsaWM6CisrICAgIFNwYW5Nb2RlbChib29sIHNlY3Rpb25zTW92ZWQpCisrICAg ICAgICA6IF9zZWN0aW9uc01vdmVkKHNlY3Rpb25zTW92ZWQpCisrICAgIHt9CisrICAgIGludCBj b2x1bW5Db3VudChjb25zdCBRTW9kZWxJbmRleCAmID0ge30pIGNvbnN0IG92ZXJyaWRlIHsgcmV0 dXJuIDI7IH0KKysgICAgaW50IHJvd0NvdW50KGNvbnN0IFFNb2RlbEluZGV4ICYgPSB7fSkgY29u c3Qgb3ZlcnJpZGUgeyByZXR1cm4gMTsgfQorKyAgICBRVmFyaWFudCBkYXRhKGNvbnN0IFFNb2Rl bEluZGV4ICZpZHgsIGludCByb2xlID0gUXQ6OkRpc3BsYXlSb2xlKSBjb25zdCBvdmVycmlkZQor KyAgICB7CisrICAgICAgICBpZiAocm9sZSAhPSBRdDo6RGlzcGxheVJvbGUpCisrICAgICAgICAg ICAgcmV0dXJuIFFWYXJpYW50KCk7CisrICAgICAgICBjb25zdCBpbnQgY29sID0gX3NlY3Rpb25z TW92ZWQgPyAxIC0gaWR4LmNvbHVtbigpIDogaWR4LmNvbHVtbigpOworKyAgICAgICAgaWYgKGNv bCA9PSAwKQorKyAgICAgICAgICAgIHJldHVybiAiTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQs IGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lk aWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIjsKKysgICAgICAgIHJldHVy biBRVmFyaWFudCgpOworKyAgICB9CisrcHJpdmF0ZToKKysgICAgYm9vbCBfc2VjdGlvbnNNb3Zl ZDsKKyt9OworKworKworK3ZvaWQgdHN0X1FUYWJsZVZpZXc6OnJlc2l6ZVRvQ29udGVudHNTcGFu cygpCisreworKyAgICBTcGFuTW9kZWwgbW9kZWwxKGZhbHNlKTsKKysgICAgU3Bhbk1vZGVsIG1v ZGVsMih0cnVlKTsKKysgICAgUVRhYmxlVmlldyB2aWV3MSwgdmlldzIsIHZpZXczOworKyAgICB2 aWV3MS5zZXRNb2RlbCgmbW9kZWwxKTsKKysgICAgdmlldzIuc2V0TW9kZWwoJm1vZGVsMik7Cisr ICAgIHZpZXcyLmhvcml6b250YWxIZWFkZXIoKS0+bW92ZVNlY3Rpb24oMCwgMSk7CisrICAgIHZp ZXczLnNldE1vZGVsKCZtb2RlbDEpOworKworKyAgICB2aWV3MS5zZXRTcGFuKDAsIDAsIDEsIDIp OworKyAgICB2aWV3Mi5zZXRTcGFuKDAsIDEsIDEsIDIpOworKyAgICB2aWV3MS5zaG93KCk7Cisr ICAgIHZpZXcyLnNob3coKTsKKysgICAgdmlldzMuc2hvdygpOworKyAgICBRVkVSSUZZKFFUZXN0 OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJnZpZXcxKSk7CisrICAgIFFWRVJJRlkoUVRlc3Q6OnFX YWl0Rm9yV2luZG93RXhwb3NlZCgmdmlldzIpKTsKKysgICAgUVZFUklGWShRVGVzdDo6cVdhaXRG b3JXaW5kb3dFeHBvc2VkKCZ2aWV3MykpOworKyAgICB2aWV3MS5zZXRDb2x1bW5XaWR0aCgwLCAx MDApOworKyAgICB2aWV3MS5zZXRDb2x1bW5XaWR0aCgxLCAxMDApOworKyAgICB2aWV3Mi5zZXRD b2x1bW5XaWR0aCgwLCAxMDApOworKyAgICB2aWV3Mi5zZXRDb2x1bW5XaWR0aCgxLCAxMDApOwor KyAgICB2aWV3My5zZXRDb2x1bW5XaWR0aCgwLCAyMDApOworKworKyAgICB2aWV3MS5yZXNpemVS b3dUb0NvbnRlbnRzKDApOworKyAgICB2aWV3Mi5yZXNpemVSb3dUb0NvbnRlbnRzKDApOworKyAg ICB2aWV3My5yZXNpemVSb3dUb0NvbnRlbnRzKDApOworKyAgICBRQ09NUEFSRSh2aWV3MS5yb3dI ZWlnaHQoMCksIHZpZXczLnJvd0hlaWdodCgwKSk7CisrICAgIFFDT01QQVJFKHZpZXcyLnJvd0hl aWdodCgwKSwgdmlldzMucm93SGVpZ2h0KDApKTsKKysKKysgICAgdmlldzMucmVzaXplQ29sdW1u VG9Db250ZW50cygwKTsKKysgICAgdmlldzMucmVzaXplUm93VG9Db250ZW50cygwKTsKKysgICAg Ly8gaGVpZ2h0IHNob3VsZCBiZSBvbmx5IDEgdGV4dCBsaW5lIGZvciBlYXN5IHRlc3RpbmcKKysg ICAgdmlldzEuc2V0Um93SGVpZ2h0KDAsIHZpZXczLnZlcnRpY2FsSGVhZGVyKCktPnNlY3Rpb25T aXplKDApKTsKKysgICAgdmlldzIuc2V0Um93SGVpZ2h0KDAsIHZpZXczLnZlcnRpY2FsSGVhZGVy KCktPnNlY3Rpb25TaXplKDApKTsKKysgICAgdmlldzEucmVzaXplQ29sdW1uVG9Db250ZW50cygw KTsKKysgICAgdmlldzIucmVzaXplQ29sdW1uVG9Db250ZW50cygxKTsKKysgICAgUUNPTVBBUkUo dmlldzEuY29sdW1uV2lkdGgoMCksIHZpZXczLmNvbHVtbldpZHRoKDApIC0gdmlldzEuY29sdW1u V2lkdGgoMSkpOworKyAgICBRQ09NUEFSRSh2aWV3Mi5jb2x1bW5XaWR0aCgwKSwgdmlldzMuY29s dW1uV2lkdGgoMCkgLSB2aWV3Mi5jb2x1bW5XaWR0aCgxKSk7CisrfQorKworIFFUX0JFR0lOX05B TUVTUEFDRQorIGV4dGVybiBib29sIFFfV0lER0VUU19FWFBPUlQgcXRfdGFiX2FsbF93aWRnZXRz KCk7IC8vIHFhcHBsaWNhdGlvbi5jcHAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9rZXJuZWwvcWFwcGxpY2F0aW9uL3RzdF9xYXBwbGlj YXRpb24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9rZXJuZWwvcWFwcGxpY2F0aW9u L3RzdF9xYXBwbGljYXRpb24uY3BwCitpbmRleCBhM2I4ZWY3OGQ4Li40OTU1Y2ViZDVkIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9rZXJuZWwvcWFwcGxpY2F0aW9uL3Rz dF9xYXBwbGljYXRpb24uY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2tlcm5l bC9xYXBwbGljYXRpb24vdHN0X3FhcHBsaWNhdGlvbi5jcHAKK0BAIC0xNDk4LDcgKzE0OTgsNyBA QCB2b2lkIHRzdF9RQXBwbGljYXRpb246OmRlc2t0b3BTZXR0aW5nc0F3YXJlKCkKKyAgICAgZW52 aXJvbm1lbnQgKz0gUUxhdGluMVN0cmluZygiUVRfTUFDX0RJU0FCTEVfRk9SRUdST1VORF9BUFBM SUNBVElPTl9UUkFOU0ZPUk09MSIpOworICAgICB0ZXN0UHJvY2Vzcy5zZXRFbnZpcm9ubWVudChl bnZpcm9ubWVudCk7CisgI2VuZGlmCistICAgIHRlc3RQcm9jZXNzLnN0YXJ0KCJkZXNrdG9wc2V0 dGluZ3Nhd2FyZV9oZWxwZXIiKTsKKysgICAgdGVzdFByb2Nlc3Muc3RhcnQoIi4vZGVza3RvcHNl dHRpbmdzYXdhcmVfaGVscGVyIik7CisgICAgIFFWRVJJRlkyKHRlc3RQcm9jZXNzLndhaXRGb3JT dGFydGVkKCksCisgICAgICAgICAgICAgIHFQcmludGFibGUoUVN0cmluZzo6ZnJvbUxhdGluMSgi Q2Fubm90IHN0YXJ0ICdkZXNrdG9wc2V0dGluZ3Nhd2FyZV9oZWxwZXInOiAlMSIpLmFyZyh0ZXN0 UHJvY2Vzcy5lcnJvclN0cmluZygpKSkpOworICAgICBRVkVSSUZZKHRlc3RQcm9jZXNzLndhaXRG b3JGaW5pc2hlZCgxMDAwMCkpOworQEAgLTI0NTIsNyArMjQ1Miw3IEBAIHZvaWQgdHN0X1FBcHBs aWNhdGlvbjo6cXRidWdfMTI2NzMoKQorICNpZiBRVF9DT05GSUcocHJvY2VzcykKKyAgICAgUVBy b2Nlc3MgdGVzdFByb2Nlc3M7CisgICAgIFFTdHJpbmdMaXN0IGFyZ3VtZW50czsKKy0gICAgdGVz dFByb2Nlc3Muc3RhcnQoIm1vZGFsX2hlbHBlciIsIGFyZ3VtZW50cyk7CisrICAgIHRlc3RQcm9j ZXNzLnN0YXJ0KCIuL21vZGFsX2hlbHBlciIsIGFyZ3VtZW50cyk7CisgICAgIFFWRVJJRlkyKHRl c3RQcm9jZXNzLndhaXRGb3JTdGFydGVkKCksCisgICAgICAgICAgICAgIHFQcmludGFibGUoUVN0 cmluZzo6ZnJvbUxhdGluMSgiQ2Fubm90IHN0YXJ0ICdtb2RhbF9oZWxwZXInOiAlMSIpLmFyZyh0 ZXN0UHJvY2Vzcy5lcnJvclN0cmluZygpKSkpOworICAgICBRVkVSSUZZKHRlc3RQcm9jZXNzLndh aXRGb3JGaW5pc2hlZCgyMDAwMCkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dp ZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24vdHN0X3FhYnN0cmFjdGJ1dHRvbi5jcHAgYi9x dGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uL3RzdF9xYWJz dHJhY3RidXR0b24uY3BwCitpbmRleCBlYjEwOGE0MGRlLi5kY2E1NTI4YzFiIDEwMDY0NAorLS0t IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi90c3Rf cWFic3RyYWN0YnV0dG9uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRn ZXRzL3FhYnN0cmFjdGJ1dHRvbi90c3RfcWFic3RyYWN0YnV0dG9uLmNwcAorQEAgLTQxLDYgKzQx LDcgQEAKKyAKKyAjaW5jbHVkZSA8cHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorICNpbmNs dWRlIDxxcGEvcXBsYXRmb3JtaW50ZWdyYXRpb24uaD4KKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9y bXRoZW1lLmg+CisgCisgY2xhc3MgdHN0X1FBYnN0cmFjdEJ1dHRvbiA6IHB1YmxpYyBRT2JqZWN0 CisgeworQEAgLTc2LDYgKzc3LDggQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBrZXlOYXZp Z2F0aW9uKCk7CisgI2VuZGlmCisgCisrICAgIHZvaWQgYnV0dG9uUHJlc3NLZXlzKCk7CisrCisg cHJvdGVjdGVkIHNsb3RzOgorICAgICB2b2lkIG9uQ2xpY2tlZCgpOworICAgICB2b2lkIG9uVG9n Z2xlZCggYm9vbCBvbiApOworQEAgLTI2OSw3ICsyNzIsMTMgQEAgdm9pZCB0c3RfUUFic3RyYWN0 QnV0dG9uOjpzZXRBdXRvUmVwZWF0KCkKKyAgICAgICAgIFFDT01QQVJFKHByZXNzX2NvdW50LCBj bGlja19jb3VudCk7CisgICAgICAgICBRVkVSSUZZKGNsaWNrX2NvdW50ID4gMSk7CisgICAgICAg ICBicmVhazsKKy0gICAgY2FzZSA0OgorKyAgICBjYXNlIDQ6IHsKKysgICAgICAgIGNvbnN0IGF1 dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVt ZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVt ZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7Cisr ICAgICAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7Cisr ICAgICAgICAgICAgUVNLSVAoInBsYXRmb3JtIHRoZW1lIGhhcyBLZXlfRW50ZXIgaW4gQnV0dG9u UHJlc3NLZXlzIik7CisrICAgICAgICB9CisgICAgICAgICAvLyBjaGVjayB0aGF0IHByZXNzaW5n IEVOVEVSIGhhcyBubyBlZmZlY3Qgd2hlbiBhdXRvcmVwZWF0IGlzIGZhbHNlCisgICAgICAgICB0 ZXN0V2lkZ2V0LT5zZXREb3duKCBmYWxzZSApOworICAgICAgICAgdGVzdFdpZGdldC0+c2V0QXV0 b1JlcGVhdCggZmFsc2UgKTsKK0BAIC0yODYsNyArMjk1LDE0IEBAIHZvaWQgdHN0X1FBYnN0cmFj dEJ1dHRvbjo6c2V0QXV0b1JlcGVhdCgpCisgCisgICAgICAgICBRVkVSSUZZKCBjbGlja19jb3Vu dCA9PSAwICk7CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSA1OgorKyAgICB9CisrICAgIGNh c2UgNTogeworKyAgICAgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGlj YXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJl c3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52 YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgICAgIGlmIChidXR0b25QcmVzc0tleXMuY29u dGFpbnMoUXQ6OktleV9FbnRlcikpIHsKKysgICAgICAgICAgICBRU0tJUCgicGxhdGZvcm0gdGhl bWUgaGFzIEtleV9FbnRlciBpbiBCdXR0b25QcmVzc0tleXMiKTsKKysgICAgICAgIH0KKyAgICAg ICAgIC8vIGNoZWNrIHRoYXQgcHJlc3NpbmcgRU5URVIgaGFzIG5vIGVmZmVjdCB3aGVuIGF1dG9y ZXBlYXQgaXMgdHJ1ZQorICAgICAgICAgdGVzdFdpZGdldC0+c2V0RG93biggZmFsc2UgKTsKKyAg ICAgICAgIHRlc3RXaWRnZXQtPnNldEF1dG9SZXBlYXQoIHRydWUgKTsKK0BAIC0zMDQsNiArMzIw LDcgQEAgdm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjpzZXRBdXRvUmVwZWF0KCkKKyAKKyAgICAg ICAgIFFWRVJJRlkoIGNsaWNrX2NvdW50ID09IDAgKTsKKyAgICAgICAgIGJyZWFrOworKyAgICB9 CisgICAgIGNhc2UgNjoKKyAgICAgICAgIC8vIHZlcmlmeSBhdXRvcmVwZWF0IGlzIG9mZiBieSBk ZWZhdWx0LgorICAgICAgICAgTXlCdXR0b24gdG1wKCAwKTsKK0BAIC02NTEsNSArNjY4LDE2IEBA IHZvaWQgdHN0X1FBYnN0cmFjdEJ1dHRvbjo6a2V5TmF2aWdhdGlvbigpCisgfQorICNlbmRpZgor IAorK3ZvaWQgdHN0X1FBYnN0cmFjdEJ1dHRvbjo6YnV0dG9uUHJlc3NLZXlzKCkKKyt7CisrICAg IGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxh dGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOwor KyAgICBmb3IgKGludCBpID0gMDsgaSA8IGJ1dHRvblByZXNzS2V5cy5sZW5ndGgoKTsgKytpKSB7 CisrICAgICAgICBRVGVzdDo6a2V5Q2xpY2sodGVzdFdpZGdldCwgYnV0dG9uUHJlc3NLZXlzW2ld KTsKKysgICAgICAgIFFDT01QQVJFKGNsaWNrX2NvdW50LCBpICsgMSk7CisrICAgIH0KKyt9Cisr CisgUVRFU1RfTUFJTih0c3RfUUFic3RyYWN0QnV0dG9uKQorICNpbmNsdWRlICJ0c3RfcWFic3Ry YWN0YnV0dG9uLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dp ZGdldHMvcWNvbWJvYm94L3RzdF9xY29tYm9ib3guY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lk Z2V0cy93aWRnZXRzL3Fjb21ib2JveC90c3RfcWNvbWJvYm94LmNwcAoraW5kZXggMzI0MzcwNTBm NS4uNDZiNWFmNmQ2MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lk Z2V0cy9xY29tYm9ib3gvdHN0X3Fjb21ib2JveC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRv L3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3gvdHN0X3Fjb21ib2JveC5jcHAKK0BAIC0xNjgsNiAr MTY4LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBjaGVja01lbnVJdGVtUG9zV2hlblN0 eWxlU2hlZXRJc1NldCgpOworICAgICB2b2lkIGNoZWNrRW1iZWRkZWRMaW5lRWRpdFdoZW5TdHls ZVNoZWV0SXNTZXQoKTsKKyAgICAgdm9pZCBwcm9wYWdhdGVTdHlsZUNoYW5nZXMoKTsKKysgICAg dm9pZCBidXR0b25QcmVzc0tleXMoKTsKKyAKKyBwcml2YXRlOgorICAgICBQbGF0Zm9ybUlucHV0 Q29udGV4dCBtX3BsYXRmb3JtSW5wdXRDb250ZXh0OworQEAgLTE2ODIsNiArMTY4MywxNiBAQCB2 b2lkIHRzdF9RQ29tYm9Cb3g6OnNldE1vZGVsKCkKKyAgICAgUUNPTVBBUkUoYm94LnJvb3RNb2Rl bEluZGV4KCksIHJvb3RNb2RlbEluZGV4KTsKKyAgICAgYm94LnNldE1vZGVsKGJveC5tb2RlbCgp KTsKKyAgICAgUUNPTVBBUkUoYm94LnJvb3RNb2RlbEluZGV4KCksIHJvb3RNb2RlbEluZGV4KTsK KysKKysgICAgLy8gY2hlY2sgdGhhdCBzZXR0aW5nIHRoZSBzYW1lIG1vZGVsIGFzIHRoZSBjb21w bGV0ZXIncyBkb2Vzbid0IGNyYXNoCisrICAgIFFDb21wbGV0ZXIgKmNvbXBsZXRlciA9IG5ldyBR Q29tcGxldGVyKCZib3gpOworKyAgICBib3guc2V0RWRpdGFibGUodHJ1ZSk7CisrICAgIGJveC5z ZXRDb21wbGV0ZXIoY29tcGxldGVyKTsKKysgICAgYXV0byAqbGlzdE1vZGVsID0gbmV3IFFTdHJp bmdMaXN0TW9kZWwoeyAib25lIiwgInR3byIgfSwgY29tcGxldGVyKTsKKysgICAgY29tcGxldGVy LT5zZXRNb2RlbChsaXN0TW9kZWwpOworKyAgICBRQ09NUEFSRShsaXN0TW9kZWwtPnJvd0NvdW50 KCksIDIpOyAvLyBtYWtlIHN1cmUgaXQgd2Fzbid0IGRlbGV0ZWQKKysgICAgYm94LnNldE1vZGVs KGxpc3RNb2RlbCk7CisrICAgIFFDT01QQVJFKGxpc3RNb2RlbC0+cm93Q291bnQoKSwgMik7IC8v IG1ha2Ugc3VyZSBpdCB3YXNuJ3QgZGVsZXRlZAorIH0KKyAKKyB2b2lkIHRzdF9RQ29tYm9Cb3g6 OnNldEN1c3RvbU1vZGVsQW5kVmlldygpCitAQCAtMzYzMiw1ICszNjQzLDI0IEBAIHZvaWQgdHN0 X1FDb21ib0JveDo6cHJvcGFnYXRlU3R5bGVDaGFuZ2VzKCkKKyAgICAgUVZFUklGWShmcmFtZVN0 eWxlLmlucXVpcmVkKTsKKyB9CisgCisrdm9pZCB0c3RfUUNvbWJvQm94OjpidXR0b25QcmVzc0tl eXMoKQorK3sKKysgICAgUUNvbWJvQm94IGNvbWJvQm94OworKyAgICBjb21ib0JveC5zZXRFZGl0 YWJsZShmYWxzZSk7CisrICAgIGNvbWJvQm94LmFkZEl0ZW0oUVN0cmluZzo6bnVtYmVyKDEpKTsK KysgICAgY29tYm9Cb3guYWRkSXRlbShRU3RyaW5nOjpudW1iZXIoMikpOworKyAgICBjb25zdCBh dXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhl bWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhp bnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBidXR0b25QcmVzc0tleXMubGVuZ3RoKCk7ICsraSkgeworKyAgICAg ICAgUVRlc3Q6OmtleUNsaWNrKCZjb21ib0JveCwgYnV0dG9uUHJlc3NLZXlzW2ldKTsKKysgICAg ICAgIC8vIE9uIHNvbWUgcGxhdGZvcm1zLCBhIHdpbmRvdyB3aWxsIG5vdCBiZSBpbW1lZGlhdGVs eSB2aXNpYmxlLAorKyAgICAgICAgLy8gYnV0IHRha2Ugc29tZSBldmVudC1sb29wIGl0ZXJhdGlv bnMgdG8gY29tcGxldGUuCisrICAgICAgICAvLyBVc2luZyBRVFJZX1ZFUklGWSB0byBkZWFsIHdp dGggdGhhdC4KKysgICAgICAgIFFUUllfVkVSSUZZKGNvbWJvQm94LnZpZXcoKS0+aXNWaXNpYmxl KCkpOworKyAgICAgICAgY29tYm9Cb3guaGlkZVBvcHVwKCk7CisrICAgIH0KKyt9CisrCisgUVRF U1RfTUFJTih0c3RfUUNvbWJvQm94KQorICNpbmNsdWRlICJ0c3RfcWNvbWJvYm94Lm1vYyIKK2Rp ZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5r YnV0dG9uL3Fjb21tYW5kbGlua2J1dHRvbi5wcm8gYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRz L3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3Fjb21tYW5kbGlua2J1dHRvbi5wcm8KK2luZGV4 IGJlM2NmY2QxMDQuLmMyMjhmZGZjY2EgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3Fjb21tYW5kbGlua2J1dHRvbi5wcm8K KysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0 b24vcWNvbW1hbmRsaW5rYnV0dG9uLnBybworQEAgLTEsNiArMSw2IEBACisgQ09ORklHICs9IHRl c3RjYXNlCisgVEFSR0VUID0gdHN0X3Fjb21tYW5kbGlua2J1dHRvbgorLVFUICs9IHdpZGdldHMg dGVzdGxpYgorK1FUICs9IHdpZGdldHMgdGVzdGxpYiBndWktcHJpdmF0ZQorIFNPVVJDRVMgICs9 IHRzdF9xY29tbWFuZGxpbmtidXR0b24uY3BwCisgCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi90c3RfcWNvbW1hbmRs aW5rYnV0dG9uLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFu ZGxpbmtidXR0b24vdHN0X3Fjb21tYW5kbGlua2J1dHRvbi5jcHAKK2luZGV4IDAwNDRkMzNjNjYu LjRjZjA2Mjk2ZTQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdl dHMvcWNvbW1hbmRsaW5rYnV0dG9uL3RzdF9xY29tbWFuZGxpbmtidXR0b24uY3BwCisrKysgYi9x dGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3RzdF9x Y29tbWFuZGxpbmtidXR0b24uY3BwCitAQCAtNDAsNiArNDAsOSBAQAorICNpbmNsdWRlIDxRR3Jp ZExheW91dD4KKyAjaW5jbHVkZSA8UVBhaW50ZXI+CisgCisrI2luY2x1ZGUgPHByaXZhdGUvcWd1 aWFwcGxpY2F0aW9uX3AuaD4KKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisrCisg Y2xhc3MgdHN0X1FDb21tYW5kTGlua0J1dHRvbiA6IHB1YmxpYyBRT2JqZWN0CisgeworICAgICBR X09CSkVDVAorQEAgLTIyMyw2ICsyMjYsMTMgQEAgdm9pZCB0c3RfUUNvbW1hbmRMaW5rQnV0dG9u OjpzZXRBdXRvUmVwZWF0KCkKKyAgICAgLy8gY2hlY2sgdGhhdCBwcmVzc2luZyBFTlRFUiBoYXMg bm8gZWZmZWN0CisgICAgIHJlc2V0Q291bnRlcnMoKTsKKyAgICAgdGVzdFdpZGdldC0+c2V0RG93 biggZmFsc2UgKTsKKysgICAgLy8gU2tpcCBhZnRlciByZXNldCBpZiBCdXR0b25QcmVzc0tleXMg aGFzIEtleV9FbnRlcgorKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBs aWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNz S2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxR TGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6 S2V5X0VudGVyKSkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisgICAgIHRlc3RXaWRnZXQt PnNldEF1dG9SZXBlYXQoIGZhbHNlICk7CisgICAgIFFUZXN0OjprZXlQcmVzcyggdGVzdFdpZGdl dCwgUXQ6OktleV9FbnRlciApOworIAorQEAgLTI1NSw2ICsyNjUsMTQgQEAgdm9pZCB0c3RfUUNv bW1hbmRMaW5rQnV0dG9uOjpwcmVzc2VkKCkKKyAgICAgUUNPTVBBUkUoIHByZXNzX2NvdW50LCAo dWludCkxICk7CisgICAgIFFDT01QQVJFKCByZWxlYXNlX2NvdW50LCAodWludCkxICk7CisgCisr ICAgIC8vIFNraXAgaWYgQnV0dG9uUHJlc3NLZXlzIGhhcyBLZXlfRW50ZXIKKysgICAgY29uc3Qg YXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRo ZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVI aW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGlm IChidXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9FbnRlcikpIHsKKysgICAgICAgIHJl dHVybjsKKysgICAgfQorKworICAgICBRVGVzdDo6a2V5UHJlc3MoIHRlc3RXaWRnZXQsUXQ6Oktl eV9FbnRlciApOworICAgICBRQ09NUEFSRSggcHJlc3NfY291bnQsICh1aW50KTEgKTsKKyAgICAg UUNPTVBBUkUoIHJlbGVhc2VfY291bnQsICh1aW50KTEgKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv dGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3Fncm91cGJveC5wcm8gYi9xdGJh c2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3Fncm91cGJveC5wcm8KK2lu ZGV4IDRhNWU3NmZmNjUuLmEyMzVmYTFmYWMgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0 by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3Fncm91cGJveC5wcm8KKysrKyBiL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvcWdyb3VwYm94LnBybworQEAgLTEs NiArMSw2IEBACisgQ09ORklHICs9IHRlc3RjYXNlCisgVEFSR0VUID0gdHN0X3Fncm91cGJveAor LVFUICs9IHdpZGdldHMgdGVzdGxpYgorK1FUICs9IHdpZGdldHMgdGVzdGxpYiBndWktcHJpdmF0 ZQorIFNPVVJDRVMgICs9IHRzdF9xZ3JvdXBib3guY3BwCisgCisgCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC90c3RfcWdyb3VwYm94LmNw cCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvdHN0X3Fncm91 cGJveC5jcHAKK2luZGV4IDRmYjVkMjYyY2EuLmQ4ZDc1NjJiNzMgMTAwNjQ0CistLS0gYS9xdGJh c2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3RzdF9xZ3JvdXBib3guY3Bw CisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3RzdF9x Z3JvdXBib3guY3BwCitAQCAtMzUsNiArMzUsOSBAQAorICNpbmNsdWRlIDxRUmFkaW9CdXR0b24+ CisgI2luY2x1ZGUgPFFEaWFsb2c+CisgCisrI2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0 aW9uX3AuaD4KKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisrCisgI2luY2x1ZGUg InFncm91cGJveC5oIgorIAorIGNsYXNzIHRzdF9RR3JvdXBCb3ggOiBwdWJsaWMgUU9iamVjdAor QEAgLTY5LDYgKzcyLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBwcm9wYWdhdGVGb2N1 cygpOworICAgICB2b2lkIHRhc2tfUVRCVUdfMTkxNzBfaWdub3JlTW91c2VSZWxlYXNlRXZlbnQo KTsKKyAgICAgdm9pZCB0YXNrX1FUQlVHXzE1NTE5X3Byb3BhZ2F0ZU1vdXNlRXZlbnRzKCk7Cisr ICAgIHZvaWQgYnV0dG9uUHJlc3NLZXlzKCk7CisgCisgcHJpdmF0ZToKKyAgICAgYm9vbCBjaGVj a2VkOworQEAgLTYxMCw2ICs2MTQsMjAgQEAgdm9pZCB0c3RfUUdyb3VwQm94Ojp0YXNrX1FUQlVH XzE1NTE5X3Byb3BhZ2F0ZU1vdXNlRXZlbnRzKCkKKyAgICAgUUNPTVBBUkUocGFyZW50Lm1vdXNl TW92ZWQsIHRydWUpOworIH0KKyAKKyt2b2lkIHRzdF9RR3JvdXBCb3g6OmJ1dHRvblByZXNzS2V5 cygpCisreworKyAgICBRR3JvdXBCb3ggZ3JvdXBCb3g7CisrICAgIGdyb3VwQm94LnNldENoZWNr YWJsZSh0cnVlKTsKKysgICAgUVNpZ25hbFNweSBjbGlja2VkU3B5KCZncm91cEJveCwgJlFHcm91 cEJveDo6Y2xpY2tlZCk7CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFw cGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJl c3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVl PFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGJ1dHRvblByZXNz S2V5cy5sZW5ndGgoKTsgKytpKSB7CisrICAgICAgICBRVGVzdDo6a2V5Q2xpY2soJmdyb3VwQm94 LCBidXR0b25QcmVzc0tleXNbaV0pOworKyAgICAgICAgUUNPTVBBUkUoY2xpY2tlZFNweS5sZW5n dGgoKSwgaSArIDEpOworKyAgICB9CisrfQorKworIHZvaWQgdHN0X1FHcm91cEJveDo6c2VuZE1v dXNlTW92ZUV2ZW50KFFXaWRnZXQgKndpZGdldCwgY29uc3QgUVBvaW50ICZsb2NhbFBvcykKKyB7 CisgICAgIC8vIFNlbmQgYSBNb3VzZU1vdmUgZXZlbnQgd2l0aG91dCBhY3R1YWxseSBtb3Zpbmcg dGhlIHBvaW50ZXIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdl dHMvcXB1c2hidXR0b24vcXB1c2hidXR0b24ucHJvIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0 cy93aWRnZXRzL3FwdXNoYnV0dG9uL3FwdXNoYnV0dG9uLnBybworaW5kZXggMzUzYWQwNmNhMi4u ZTU1ZjYxNDhmMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0 cy9xcHVzaGJ1dHRvbi9xcHVzaGJ1dHRvbi5wcm8KKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dp ZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi9xcHVzaGJ1dHRvbi5wcm8KK0BAIC0xLDYgKzEsNiBA QAorIENPTkZJRyArPSB0ZXN0Y2FzZQorIFRBUkdFVCA9IHRzdF9xcHVzaGJ1dHRvbgorLVFUICs9 IHdpZGdldHMgdGVzdGxpYgorK1FUICs9IHdpZGdldHMgdGVzdGxpYiBndWktcHJpdmF0ZQorIFNP VVJDRVMgICs9IHRzdF9xcHVzaGJ1dHRvbi5jcHAKKyAKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uv dGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vdHN0X3FwdXNoYnV0dG9uLmNw cCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi90c3RfcXB1 c2hidXR0b24uY3BwCitpbmRleCBlODE4NTE0YTc5Li40MDQzZTkzMjZhIDEwMDY0NAorLS0tIGEv cXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3RzdF9xcHVzaGJ1 dHRvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1 dHRvbi90c3RfcXB1c2hidXR0b24uY3BwCitAQCAtNDEsNiArNDEsOSBAQAorICNpbmNsdWRlIDxR U3R5bGVGYWN0b3J5PgorICNpbmNsdWRlIDxRVGFiV2lkZ2V0PgorIAorKyNpbmNsdWRlIDxwcml2 YXRlL3FndWlhcHBsaWNhdGlvbl9wLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5o PgorKworIGNsYXNzIHRzdF9RUHVzaEJ1dHRvbiA6IHB1YmxpYyBRT2JqZWN0CisgeworIFFfT0JK RUNUCitAQCAtMjEyLDYgKzIxNSwxMyBAQCB2b2lkIHRzdF9RUHVzaEJ1dHRvbjo6YXV0b1JlcGVh dCgpCisgICAgIC8vIGNoZWNrIHRoYXQgcHJlc3NpbmcgRU5URVIgaGFzIG5vIGVmZmVjdAorICAg ICByZXNldENvdW50ZXJzKCk7CisgICAgIHRlc3RXaWRnZXQtPnNldERvd24oIGZhbHNlICk7Cisr ICAgIC8vIFNraXAgYWZ0ZXIgcmVzZXQgaWYgQnV0dG9uUHJlc3NLZXlzIGhhcyBLZXlfRW50ZXIK KysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRl OjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+ KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9FbnRlcikpIHsK KysgICAgICAgIHJldHVybjsKKysgICAgfQorICAgICB0ZXN0V2lkZ2V0LT5zZXRBdXRvUmVwZWF0 KCBmYWxzZSApOworICAgICBRVGVzdDo6a2V5UHJlc3MoIHRlc3RXaWRnZXQsIFF0OjpLZXlfRW50 ZXIgKTsKKyAKK0BAIC0yNDcsNiArMjU3LDE0IEBAIHZvaWQgdHN0X1FQdXNoQnV0dG9uOjpwcmVz c2VkKCkKKyAgICAgUUNPTVBBUkUoIHByZXNzX2NvdW50LCAodWludCkxICk7CisgICAgIFFDT01Q QVJFKCByZWxlYXNlX2NvdW50LCAodWludCkxICk7CisgCisrICAgIC8vIFNraXAgaWYgQnV0dG9u UHJlc3NLZXlzIGhhcyBLZXlfRW50ZXIKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMg PSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpC dXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tleXMuY29u dGFpbnMoUXQ6OktleV9FbnRlcikpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKworICAg ICBRVGVzdDo6a2V5UHJlc3MoIHRlc3RXaWRnZXQsUXQ6OktleV9FbnRlciApOworICAgICBRQ09N UEFSRSggcHJlc3NfY291bnQsICh1aW50KTEgKTsKKyAgICAgUUNPTVBBUkUoIHJlbGVhc2VfY291 bnQsICh1aW50KTEgKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvbWFudWFsL3JoaS9jdWJl bWFwX3JlbmRlci9idWlsZHNoYWRlci5iYXQgYi9xdGJhc2UvdGVzdHMvbWFudWFsL3JoaS9jdWJl bWFwX3JlbmRlci9idWlsZHNoYWRlci5iYXQKK29sZCBtb2RlIDEwMDc1NQorbmV3IG1vZGUgMTAw NjQ0CitTdWJtb2R1bGUgcXRjb25uZWN0aXZpdHkgZTk1N2Q0ODEuLjA1NjI5NGMwOgorZGlmZiAt LWdpdCBhL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvYmx1ZXovaGNpbWFuYWdlci5jcHAg Yi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL2JsdWV6L2hjaW1hbmFnZXIuY3BwCitpbmRl eCBlMjYzNWZhZS4uYThiOGUzYjkgMTAwNjQ0CistLS0gYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1 ZXRvb3RoL2JsdWV6L2hjaW1hbmFnZXIuY3BwCisrKysgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1 ZXRvb3RoL2JsdWV6L2hjaW1hbmFnZXIuY3BwCitAQCAtNTYzLDkgKzU2MywxMSBAQCB2b2lkIEhj aU1hbmFnZXI6OmhhbmRsZUhjaUFjbFBhY2tldChjb25zdCBxdWludDggKmRhdGEsIGludCBzaXpl KQorIAorIHZvaWQgSGNpTWFuYWdlcjo6aGFuZGxlTGVNZXRhRXZlbnQoY29uc3QgcXVpbnQ4ICpk YXRhKQorIHsKKy0gICAgLy8gU3BlYyB2NC4yLCBWb2wgMiwgcGFydCBFLCA3LjcuNjVmZgorKyAg ICAvLyBTcGVjIHY1LjMsIFZvbCA0LCBwYXJ0IEUsIDcuNy42NS4qCisgICAgIHN3aXRjaCAoKmRh dGEpIHsKKy0gICAgY2FzZSAweDE6IHsKKysgICAgY2FzZSAweDE6IC8vIEhDSV9MRV9Db25uZWN0 aW9uX0NvbXBsZXRlCisrICAgIGNhc2UgMHhBOiAvLyBIQ0lfTEVfRW5oYW5jZWRfQ29ubmVjdGlv bl9Db21wbGV0ZQorKyAgICB7CisgICAgICAgICBjb25zdCBxdWludDE2IGhhbmRsZSA9IGJ0X2dl dF9sZTE2KGRhdGEgKyAyKTsKKyAgICAgICAgIGVtaXQgY29ubmVjdGlvbkNvbXBsZXRlKGhhbmRs ZSk7CisgICAgICAgICBicmVhazsKK2RpZmYgLS1naXQgYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1 ZXRvb3RoL3FibHVldG9vdGhzZXJ2aWNlZGlzY292ZXJ5YWdlbnRfYmx1ZXouY3BwIGIvcXRjb25u ZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFnZW50X2Js dWV6LmNwcAoraW5kZXggNmE5MzE0M2IuLjRhMThjZmM3IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0 aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFnZW50X2JsdWV6 LmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc2Vydmlj ZWRpc2NvdmVyeWFnZW50X2JsdWV6LmNwcAorQEAgLTMyMCw3ICszMjAsMTAgQEAgdm9pZCBRQmx1 ZXRvb3RoU2VydmljZURpc2NvdmVyeUFnZW50UHJpdmF0ZTo6X3FfZmluaXNoU2RwU2NhbihRQmx1 ZXRvb3RoU2VydmljZUQKKyAgICAgICAgICAgICBmb3IgKGNvbnN0IFFCbHVldG9vdGhVdWlkICZp ZCA6IHNlcnZpY2VDbGFzc1V1aWRzKSB7CisgICAgICAgICAgICAgICAgIGlmIChpZC5taW5pbXVt U2l6ZSgpID09IDE2KSB7CisgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlSW5mby5zZXRTZXJ2 aWNlVXVpZChpZCk7CistICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlSW5mby5zZXRTZXJ2aWNl TmFtZShRQmx1ZXRvb3RoU2VydmljZURpc2NvdmVyeUFnZW50Ojp0cigiQ3VzdG9tIFNlcnZpY2Ui KSk7CisrICAgICAgICAgICAgICAgICAgICBpZiAoc2VydmljZUluZm8uc2VydmljZU5hbWUoKS5p c0VtcHR5KCkpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlSW5mby5zZXRTZXJ2 aWNlTmFtZSgKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRQmx1ZXRvb3Ro U2VydmljZURpc2NvdmVyeUFnZW50Ojp0cigiQ3VzdG9tIFNlcnZpY2UiKSk7CisrICAgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICBRQmx1ZXRvb3RoU2VydmljZUluZm86 OlNlcXVlbmNlIG1vZFNlcSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VJ bmZvLmF0dHJpYnV0ZShRQmx1ZXRvb3RoU2VydmljZUluZm86OlNlcnZpY2VDbGFzc0lkcykudmFs dWU8UUJsdWV0b290aFNlcnZpY2VJbmZvOjpTZXF1ZW5jZT4oKTsKKyAgICAgICAgICAgICAgICAg ICAgIG1vZFNlcS5yZW1vdmVPbmUoUVZhcmlhbnQ6OmZyb21WYWx1ZShpZCkpOworQEAgLTMzNCw4 ICszMzcsMTAgQEAgdm9pZCBRQmx1ZXRvb3RoU2VydmljZURpc2NvdmVyeUFnZW50UHJpdmF0ZTo6 X3FfZmluaXNoU2RwU2NhbihRQmx1ZXRvb3RoU2VydmljZUQKKyAgICAgICAgICAgICAgICAgcUNE ZWJ1ZyhRVF9CVF9CTFVFWikgPDwgIkRpc2NvdmVyZWQgc2VydmljZXMiIDw8IGRpc2NvdmVyZWRE ZXZpY2VzLmF0KDApLmFkZHJlc3MoKS50b1N0cmluZygpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDw8IHNlcnZpY2VJbmZvLnNlcnZpY2VOYW1lKCkgPDwgc2VydmljZUlu Zm8uc2VydmljZVV1aWQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 PCAiPj4+IiA8PCBzZXJ2aWNlSW5mby5zZXJ2aWNlQ2xhc3NVdWlkcygpOworLQorLSAgICAgICAg ICAgICAgICBlbWl0IHEtPnNlcnZpY2VEaXNjb3ZlcmVkKHNlcnZpY2VJbmZvKTsKKysgICAgICAg ICAgICAgICAgLy8gVXNlIHF1ZXVlZCBjb25uZWN0aW9uIHRvIGFsbG93IHVzIGZpbmlzaCB0aGUg c2VydmljZSBsb29waW5nOyB0aGUgYXBwbGljYXRpb24KKysgICAgICAgICAgICAgICAgLy8gbWln aHQgY2FsbCBzdG9wKCkgd2hlbiBpdCBoYXMgZGV0ZWN0ZWQgdGhlIHNlcnZpY2Utb2YtaW50ZXJl c3QuCisrICAgICAgICAgICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QocSwgInNlcnZp Y2VEaXNjb3ZlcmVkIiwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24sCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUV9BUkcoUUJsdWV0b290aFNlcnZpY2VJbmZvLCBzZXJ2 aWNlSW5mbykpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQorZGlmZiAtLWdp dCBhL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldC5jcHAgYi9x dGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXQuY3BwCitpbmRleCBl NGQ4NTQ0Ny4uYWFkZDQ3NTUgMTAwNjQ0CistLS0gYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRv b3RoL3FibHVldG9vdGhzb2NrZXQuY3BwCisrKysgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRv b3RoL3FibHVldG9vdGhzb2NrZXQuY3BwCitAQCAtNTkzLDcgKzU5Myw3IEBAIHZvaWQgUUJsdWV0 b290aFNvY2tldDo6c2V0U29ja2V0U3RhdGUoUUJsdWV0b290aFNvY2tldDo6U29ja2V0U3RhdGUg c3RhdGUpCisgYm9vbCBRQmx1ZXRvb3RoU29ja2V0OjpjYW5SZWFkTGluZSgpIGNvbnN0Cisgewor ICAgICBRX0QoY29uc3QgUUJsdWV0b290aFNvY2tldEJhc2UpOworLSAgICByZXR1cm4gZC0+Y2Fu UmVhZExpbmUoKTsKKysgICAgcmV0dXJuIGQtPmNhblJlYWRMaW5lKCkgfHwgUUlPRGV2aWNlOjpj YW5SZWFkTGluZSgpOworIH0KKyAKKyAvKiEKK2RpZmYgLS1naXQgYS9xdGNvbm5lY3Rpdml0eS9z cmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXRfYmx1ZXpkYnVzLmNwcCBiL3F0Y29ubmVjdGl2 aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldF9ibHVlemRidXMuY3BwCitpbmRleCAw ODRhYTk1OC4uZDZhYTE3YTcgMTAwNjQ0CistLS0gYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRv b3RoL3FibHVldG9vdGhzb2NrZXRfYmx1ZXpkYnVzLmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkv c3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1cy5jcHAKK0BAIC0yODQsNiAr Mjg0LDEwIEBAIHZvaWQgUUJsdWV0b290aFNvY2tldFByaXZhdGVCbHVlekRCdXM6OmNvbm5lY3RU b1NlcnZpY2UoCisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKKysgICAgaWYgKHNlcnZpY2Uu c29ja2V0UHJvdG9jb2woKSAhPSBRQmx1ZXRvb3RoU2VydmljZUluZm86OlByb3RvY29sOjpVbmtu b3duUHJvdG9jb2wpCisrICAgICAgICBzb2NrZXRUeXBlID0gc2VydmljZS5zb2NrZXRQcm90b2Nv bCgpOworKyAgICBxQ0RlYnVnKFFUX0JUX0JMVUVaKSA8PCAiU29ja2V0IHByb3RvY29sIHVzZWQ6 IiA8PCBzb2NrZXRUeXBlOworKworICAgICBjb25uZWN0VG9TZXJ2aWNlKHNlcnZpY2UuZGV2aWNl KCkuYWRkcmVzcygpLCB0YXJnZXRTZXJ2aWNlLCBvcGVuTW9kZSk7CisgfQorIAorZGlmZiAtLWdp dCBhL3F0Y29ubmVjdGl2aXR5L3Rlc3RzL2F1dG8vcWJsdWV0b290aHNvY2tldC90c3RfcWJsdWV0 b290aHNvY2tldC5jcHAgYi9xdGNvbm5lY3Rpdml0eS90ZXN0cy9hdXRvL3FibHVldG9vdGhzb2Nr ZXQvdHN0X3FibHVldG9vdGhzb2NrZXQuY3BwCitpbmRleCAwNWJjMWEwZi4uYTdiNWVmMWYgMTAw NjQ0CistLS0gYS9xdGNvbm5lY3Rpdml0eS90ZXN0cy9hdXRvL3FibHVldG9vdGhzb2NrZXQvdHN0 X3FibHVldG9vdGhzb2NrZXQuY3BwCisrKysgYi9xdGNvbm5lY3Rpdml0eS90ZXN0cy9hdXRvL3Fi bHVldG9vdGhzb2NrZXQvdHN0X3FibHVldG9vdGhzb2NrZXQuY3BwCitAQCAtMTQyLDcgKzE0Miw3 IEBAIHZvaWQgdHN0X1FCbHVldG9vdGhTb2NrZXQ6OmluaXRUZXN0Q2FzZSgpCisgICAgIHFEZWJ1 ZygpIDw8ICJTdGFydGluZyBkaXNjb3ZlcnkiOworIAorICAgICBzZGEtPnNldFV1aWRGaWx0ZXIo UUJsdWV0b290aFV1aWQoUVN0cmluZyhURVNUX1NFUlZJQ0VfVVVJRCkpKTsKKy0gICAgc2RhLT5z dGFydChRQmx1ZXRvb3RoU2VydmljZURpc2NvdmVyeUFnZW50OjpNaW5pbWFsRGlzY292ZXJ5KTsK KysgICAgc2RhLT5zdGFydChRQmx1ZXRvb3RoU2VydmljZURpc2NvdmVyeUFnZW50OjpGdWxsRGlz Y292ZXJ5KTsKKyAKKyAgICAgZm9yIChpbnQgY29ubmVjdFRpbWUgPSBNYXhDb25uZWN0VGltZTsg IWRvbmVfZGlzY292ZXJ5ICYmIGNvbm5lY3RUaW1lID4gMDsgY29ubmVjdFRpbWUgLT0gMTAwMCkK KyAgICAgICAgIFFUZXN0OjpxV2FpdCgxMDAwKTsKK1N1Ym1vZHVsZSBxdGRlY2xhcmF0aXZlIGY1 NzAxZjBkLi44ZGVmZTdiZjoKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvY29t bW9uL3FxbWxqc2ZpeGVkcG9vbGFycmF5X3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9jb21t b24vcXFtbGpzZml4ZWRwb29sYXJyYXlfcC5oCitpbmRleCBiNjViOTk0ZDZjLi4xNWE4Y2Q2ODc4 IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2NvbW1vbi9xcW1sanNmaXhlZHBv b2xhcnJheV9wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9jb21tb24vcXFtbGpzZml4 ZWRwb29sYXJyYXlfcC5oCitAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CisgICAgICAgICBpZiAo UVR5cGVJbmZvPFQ+Ojppc0NvbXBsZXgpIHsKKyAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg aSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICAgICAgIG5ldyAoZGF0YSArIGkpIFQodmVjdG9y LmF0KGkpKTsKKy0gICAgICAgIH0gZWxzZSB7CisrICAgICAgICB9IGVsc2UgaWYgKGNvdW50KSB7 CisgICAgICAgICAgICAgbWVtY3B5KGRhdGEsIHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPih2ZWN0 b3IuY29uc3REYXRhKCkpLCBjb3VudCAqIHNpemVvZihUKSk7CisgICAgICAgICB9CisgICAgIH0K K2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFvYmplY3R3 cmFwcGVyLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9qc3J1bnRpbWUvcXY0cW9iamVjdHdy YXBwZXIuY3BwCitpbmRleCBlNTdjZGQ4Mjc4Li45NDYxMzU5OGFmIDEwMDY0NAorLS0tIGEvcXRk ZWNsYXJhdGl2ZS9zcmMvcW1sL2pzcnVudGltZS9xdjRxb2JqZWN0d3JhcHBlci5jcHAKKysrKyBi L3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9qc3J1bnRpbWUvcXY0cW9iamVjdHdyYXBwZXIuY3BwCitA QCAtMTE0NSw4ICsxMTQ1LDcgQEAgdm9pZCBIZWFwOjpRT2JqZWN0V3JhcHBlcjo6bWFya09iamVj dHMoSGVhcDo6QmFzZSAqdGhhdCwgUVY0OjpNYXJrU3RhY2sgKm1hcmtTdGEKKyB2b2lkIFFPYmpl Y3RXcmFwcGVyOjpkZXN0cm95T2JqZWN0KGJvb2wgbGFzdENhbGwpCisgeworICAgICBIZWFwOjpR T2JqZWN0V3JhcHBlciAqaCA9IGQoKTsKKy0gICAgaWYgKCFoLT5pbnRlcm5hbENsYXNzKQorLSAg ICAgICAgcmV0dXJuOyAvLyBkZXN0cm95T2JqZWN0IGFscmVhZHkgZ290IGNhbGxlZAorKyAgICBR X0FTU0VSVChoLT5pbnRlcm5hbENsYXNzKTsKKyAKKyAgICAgaWYgKGgtPm9iamVjdCgpKSB7Cisg ICAgICAgICBRUW1sRGF0YSAqZGRhdGEgPSBRUW1sRGF0YTo6Z2V0KGgtPm9iamVjdCgpLCBmYWxz ZSk7CitAQCAtMTE3Niw3ICsxMTc1LDcgQEAgdm9pZCBRT2JqZWN0V3JhcHBlcjo6ZGVzdHJveU9i amVjdChib29sIGxhc3RDYWxsKQorICAgICAgICAgfQorICAgICB9CisgCistICAgIGgtPn5EYXRh KCk7CisrICAgIGgtPmRlc3Ryb3koKTsKKyB9CisgCisgCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJh dGl2ZS9zcmMvcW1sL21lbW9yeS9xdjRtbS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvbWVt b3J5L3F2NG1tLmNwcAoraW5kZXggMDZjYWYwNGU1YS4uZGExNDlhNjdjNCAxMDA2NDQKKy0tLSBh L3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9tZW1vcnkvcXY0bW0uY3BwCisrKysgYi9xdGRlY2xhcmF0 aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1tLmNwcAorQEAgLTk4MSw3ICs5ODEsNyBAQCB2b2lkIE1l bW9yeU1hbmFnZXI6OnN3ZWVwKGJvb2wgbGFzdFN3ZWVwLCBDbGFzc0Rlc3Ryb3lTdGF0c0NhbGxi YWNrIGNsYXNzQ291bnRQdAorIAorICAgICBpZiAoTXVsdGlwbHlXcmFwcGVkUU9iamVjdE1hcCAq bXVsdGlwbHlXcmFwcGVkUU9iamVjdHMgPSBlbmdpbmUtPm1fbXVsdGlwbHlXcmFwcGVkUU9iamVj dHMpIHsKKyAgICAgICAgIGZvciAoTXVsdGlwbHlXcmFwcGVkUU9iamVjdE1hcDo6SXRlcmF0b3Ig aXQgPSBtdWx0aXBseVdyYXBwZWRRT2JqZWN0cy0+YmVnaW4oKTsgaXQgIT0gbXVsdGlwbHlXcmFw cGVkUU9iamVjdHMtPmVuZCgpOykgeworLSAgICAgICAgICAgIGlmICghaXQudmFsdWUoKS5pc051 bGxPclVuZGVmaW5lZCgpKQorKyAgICAgICAgICAgIGlmIChpdC52YWx1ZSgpLmlzTnVsbE9yVW5k ZWZpbmVkKCkpCisgICAgICAgICAgICAgICAgIGl0ID0gbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMt PmVyYXNlKGl0KTsKKyAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICsraXQ7Citk aWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVs LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbC5jcHAK K2luZGV4IDIwNzlhOGVkMDQuLmE1NzdjYjIzNTEgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZl L3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWwuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZl L3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWwuY3BwCitAQCAtMzg5LDYgKzM4OSwxMiBA QCB2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsUHJpdmF0ZTo6Y29ubmVjdFRvQWJzdHJhY3RJdGVtTW9k ZWwoKQorICAgICAgICAgICAgICAgICAgICAgICBxLCAgUVFtbERlbGVnYXRlTW9kZWwsIFNMT1Qo X3Ffcm93c1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKyAgICAgcW1sb2JqZWN0X2Nv bm5lY3QoYWltLCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChyb3dzQWJvdXRUb0JlUmVtb3Zl ZChRTW9kZWxJbmRleCxpbnQsaW50KSksCisgICAgICAgICAgICAgICAgICAgICAgIHEsICBRUW1s RGVsZWdhdGVNb2RlbCwgU0xPVChfcV9yb3dzQWJvdXRUb0JlUmVtb3ZlZChRTW9kZWxJbmRleCxp bnQsaW50KSkpOworKyAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2Rl bCwgU0lHTkFMKGNvbHVtbnNJbnNlcnRlZChRTW9kZWxJbmRleCxpbnQsaW50KSksCisrICAgICAg ICAgICAgICAgICAgICAgIHEsIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2NvbHVtbnNJbnNl cnRlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAgICBxbWxvYmplY3RfY29ubmVjdChhaW0s IFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFMKGNvbHVtbnNSZW1vdmVkKFFNb2RlbEluZGV4LGlu dCxpbnQpKSwKKysgICAgICAgICAgICAgICAgICAgICAgcSwgUVFtbERlbGVnYXRlTW9kZWwsIFNM T1QoX3FfY29sdW1uc1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgcW1sb2Jq ZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChjb2x1bW5zTW92ZWQo UU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSwKKysgICAgICAgICAgICAgICAg ICAgICAgcSwgUVFtbERlbGVnYXRlTW9kZWwsIFNMT1QoX3FfY29sdW1uc01vdmVkKFFNb2RlbElu ZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSkpOworICAgICBxbWxvYmplY3RfY29ubmVjdChh aW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFMKGRhdGFDaGFuZ2VkKFFNb2RlbEluZGV4LFFN b2RlbEluZGV4LFFWZWN0b3I8aW50PikpLAorICAgICAgICAgICAgICAgICAgICAgICBxLCBRUW1s RGVsZWdhdGVNb2RlbCwgU0xPVChfcV9kYXRhQ2hhbmdlZChRTW9kZWxJbmRleCxRTW9kZWxJbmRl eCxRVmVjdG9yPGludD4pKSk7CisgICAgIHFtbG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0 SXRlbU1vZGVsLCBTSUdOQUwocm93c01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1vZGVsSW5k ZXgsaW50KSksCitAQCAtNDEzLDYgKzQxOSwxMiBAQCB2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsUHJp dmF0ZTo6ZGlzY29ubmVjdEZyb21BYnN0cmFjdEl0ZW1Nb2RlbCgpCisgICAgICAgICAgICAgICAg ICAgICAgICAgcSwgU0xPVChfcV9yb3dzQWJvdXRUb0JlUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQs aW50KSkpOworICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKHJvd3NSZW1vdmVk KFFNb2RlbEluZGV4LGludCxpbnQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBxLCBTTE9U KF9xX3Jvd3NSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIFFPYmplY3Q6OmRp c2Nvbm5lY3QoYWltLCBTSUdOQUwoY29sdW1uc0luc2VydGVkKFFNb2RlbEluZGV4LGludCxpbnQp KSwgcSwKKysgICAgICAgICAgICAgICAgICAgICAgICBTTE9UKF9xX2NvbHVtbnNJbnNlcnRlZChR TW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lH TkFMKGNvbHVtbnNSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSwgcSwKKysgICAgICAgICAg ICAgICAgICAgICAgICBTTE9UKF9xX2NvbHVtbnNSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQp KSk7CisrICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwoY29sdW1uc01vdmVkKFFN b2RlbEluZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSksIHEsCisrICAgICAgICAgICAgICAg ICAgICAgICAgU0xPVChfcV9jb2x1bW5zTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJ bmRleCxpbnQpKSk7CisgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwoZGF0YUNo YW5nZWQoUU1vZGVsSW5kZXgsUU1vZGVsSW5kZXgsUVZlY3RvcjxpbnQ+KSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgcSwgU0xPVChfcV9kYXRhQ2hhbmdlZChRTW9kZWxJbmRleCxRTW9kZWxJ bmRleCxRVmVjdG9yPGludD4pKSk7CisgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdO QUwocm93c01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSksCitAQCAt MTk3Myw2ICsxOTg1LDM4IEBAIHZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX3Jvd3NNb3ZlZCgK KyAgICAgfQorIH0KKyAKKyt2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9jb2x1bW5zSW5zZXJ0 ZWQoY29uc3QgUU1vZGVsSW5kZXggJnBhcmVudCwgaW50IGJlZ2luLCBpbnQgZW5kKQorK3sKKysg ICAgUV9EKFFRbWxEZWxlZ2F0ZU1vZGVsKTsKKysgICAgUV9VTlVTRUQoZW5kKTsKKysgICAgaWYg KHBhcmVudCA9PSBkLT5tX2FkYXB0b3JNb2RlbC5yb290SW5kZXggJiYgYmVnaW4gPT0gMCkgewor KyAgICAgICAgLy8gbWFyayBhbGwgaXRlbXMgYXMgY2hhbmdlZAorKyAgICAgICAgX3FfaXRlbXND aGFuZ2VkKDAsIGQtPm1fY291bnQsIFFWZWN0b3I8aW50PigpKTsKKysgICAgfQorK30KKysKKyt2 b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9jb2x1bW5zUmVtb3ZlZChjb25zdCBRTW9kZWxJbmRl eCAmcGFyZW50LCBpbnQgYmVnaW4sIGludCBlbmQpCisreworKyAgICBRX0QoUVFtbERlbGVnYXRl TW9kZWwpOworKyAgICBRX1VOVVNFRChlbmQpOworKyAgICBpZiAocGFyZW50ID09IGQtPm1fYWRh cHRvck1vZGVsLnJvb3RJbmRleCAmJiBiZWdpbiA9PSAwKSB7CisrICAgICAgICAvLyBtYXJrIGFs bCBpdGVtcyBhcyBjaGFuZ2VkCisrICAgICAgICBfcV9pdGVtc0NoYW5nZWQoMCwgZC0+bV9jb3Vu dCwgUVZlY3RvcjxpbnQ+KCkpOworKyAgICB9CisrfQorKworK3ZvaWQgUVFtbERlbGVnYXRlTW9k ZWw6Ol9xX2NvbHVtbnNNb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmcGFyZW50LCBpbnQgc3RhcnQs IGludCBlbmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IFFNb2RlbEluZGV4ICZkZXN0aW5hdGlvbiwgaW50IGNvbHVtbikKKyt7CisrICAgIFFfRChRUW1s RGVsZWdhdGVNb2RlbCk7CisrICAgIFFfVU5VU0VEKGVuZCk7CisrICAgIGlmICgocGFyZW50ID09 IGQtPm1fYWRhcHRvck1vZGVsLnJvb3RJbmRleCAmJiBzdGFydCA9PSAwKQorKyAgICAgICAgfHwg KGRlc3RpbmF0aW9uID09IGQtPm1fYWRhcHRvck1vZGVsLnJvb3RJbmRleCAmJiBjb2x1bW4gPT0g MCkpIHsKKysgICAgICAgIC8vIG1hcmsgYWxsIGl0ZW1zIGFzIGNoYW5nZWQKKysgICAgICAgIF9x X2l0ZW1zQ2hhbmdlZCgwLCBkLT5tX2NvdW50LCBRVmVjdG9yPGludD4oKSk7CisrICAgIH0KKyt9 CisrCisgdm9pZCBRUW1sRGVsZWdhdGVNb2RlbDo6X3FfZGF0YUNoYW5nZWQoY29uc3QgUU1vZGVs SW5kZXggJmJlZ2luLCBjb25zdCBRTW9kZWxJbmRleCAmZW5kLCBjb25zdCBRVmVjdG9yPGludD4g JnJvbGVzKQorIHsKKyAgICAgUV9EKFFRbWxEZWxlZ2F0ZU1vZGVsKTsKK2RpZmYgLS1naXQgYS9x dGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWxfcC5oIGIvcXRkZWNs YXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaAoraW5kZXggOGFhYjRi YWRjYS4uZDE0MGJmYmFhZiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVs cy9xcW1sZGVsZWdhdGVtb2RlbF9wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVs cy9xcW1sZGVsZWdhdGVtb2RlbF9wLmgKK0BAIC0xNTIsNiArMTUyLDkgQEAgcHJpdmF0ZSBRX1NM T1RTOgorICAgICB2b2lkIF9xX2l0ZW1zTW92ZWQoaW50IGZyb20sIGludCB0bywgaW50IGNvdW50 KTsKKyAgICAgdm9pZCBfcV9tb2RlbFJlc2V0KCk7CisgICAgIHZvaWQgX3Ffcm93c0luc2VydGVk KGNvbnN0IFFNb2RlbEluZGV4ICYsaW50LGludCk7CisrICAgIHZvaWQgX3FfY29sdW1uc0luc2Vy dGVkKGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCwgaW50KTsKKysgICAgdm9pZCBfcV9jb2x1bW5z UmVtb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQsIGludCk7CisrICAgIHZvaWQgX3FfY29s dW1uc01vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCwgaW50LCBjb25zdCBRTW9kZWxJbmRl eCAmLCBpbnQpOworICAgICB2b2lkIF9xX3Jvd3NBYm91dFRvQmVSZW1vdmVkKGNvbnN0IFFNb2Rl bEluZGV4ICZwYXJlbnQsIGludCBiZWdpbiwgaW50IGVuZCk7CisgICAgIHZvaWQgX3Ffcm93c1Jl bW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJixpbnQsaW50KTsKKyAgICAgdm9pZCBfcV9yb3dzTW92 ZWQoY29uc3QgUU1vZGVsSW5kZXggJiwgaW50LCBpbnQsIGNvbnN0IFFNb2RlbEluZGV4ICYsIGlu dCk7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNj ZXNzaWJsZXF1aWNraXRlbS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxl L3FhY2Nlc3NpYmxlcXVpY2tpdGVtLmNwcAoraW5kZXggODU3MTlmZGM4MC4uNzhlMmFiMzAyYyAx MDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2li bGVxdWlja2l0ZW0uY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxl L3FhY2Nlc3NpYmxlcXVpY2tpdGVtLmNwcAorQEAgLTQ2LDYgKzQ2LDcgQEAKKyAjaW5jbHVkZSAi UXRRdWljay9wcml2YXRlL3FxdWlja3RleHRpbnB1dF9wLmgiCisgI2luY2x1ZGUgIlF0UXVpY2sv cHJpdmF0ZS9xcXVpY2thY2Nlc3NpYmxlYXR0YWNoZWRfcC5oIgorICNpbmNsdWRlICJRdFF1aWNr L3FxdWlja3RleHRkb2N1bWVudC5oIgorKyNpbmNsdWRlICJRdFF1aWNrL3FxdWlja3JlbmRlcmNv bnRyb2wuaCIKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyAjaWYgUVRfQ09ORklHKGFjY2Vzc2li aWxpdHkpCitAQCAtNTcsNyArNTgsMTkgQEAgUUFjY2Vzc2libGVRdWlja0l0ZW06OlFBY2Nlc3Np YmxlUXVpY2tJdGVtKFFRdWlja0l0ZW0gKml0ZW0pCisgCisgUVdpbmRvdyAqUUFjY2Vzc2libGVR dWlja0l0ZW06OndpbmRvdygpIGNvbnN0CisgeworLSAgICByZXR1cm4gaXRlbSgpLT53aW5kb3co KTsKKysgICAgUVF1aWNrV2luZG93ICp3aW5kb3cgPSBpdGVtKCktPndpbmRvdygpOworKworKyAg ICAvLyBGb3IgUVF1aWNrV2lkZ2V0IHRoZSBhYm92ZSB3aW5kb3cgd2lsbCBiZSB0aGUgb2Zmc2Ny ZWVuIFFRdWlja1dpbmRvdywKKysgICAgLy8gd2hpY2ggaXMgbm90IGEgcGFydCBvZiB0aGUgYWNj ZXNzaWJpbGl0eSB0cmVlLiBEZXRlY3QgdGhpcyBjYXNlIGFuZAorKyAgICAvLyByZXR1cm4gdGhl IHdpbmRvdyBmb3IgdGhlIFFRdWlja1dpZGdldCBpbnN0ZWFkLgorKyAgICBpZiAod2luZG93ICYm ICF3aW5kb3ctPmhhbmRsZSgpKSB7CisrICAgICAgICBpZiAoUVF1aWNrUmVuZGVyQ29udHJvbCAq cmVuZGVyQ29udHJvbCA9IFFRdWlja1dpbmRvd1ByaXZhdGU6OmdldCh3aW5kb3cpLT5yZW5kZXJD b250cm9sKSB7CisrICAgICAgICAgICAgaWYgKFFXaW5kb3cgKnJlbmRlcldpbmRvdyA9IHJlbmRl ckNvbnRyb2wtPnJlbmRlcldpbmRvdyhudWxscHRyKSkKKysgICAgICAgICAgICAgICAgcmV0dXJu IHJlbmRlcldpbmRvdzsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICByZXR1cm4gd2luZG93 OworIH0KKyAKKyBpbnQgUUFjY2Vzc2libGVRdWlja0l0ZW06OmNoaWxkQ291bnQoKSBjb25zdAor QEAgLTExMywxOSArMTI2LDE1IEBAIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1 aWNrSXRlbTo6Y2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0CisgUUFjY2Vzc2libGVJbnRlcmZh Y2UgKlFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpwYXJlbnQoKSBjb25zdAorIHsKKyAgICAgUVF1aWNr SXRlbSAqcGFyZW50ID0gaXRlbSgpLT5wYXJlbnRJdGVtKCk7CistICAgIFFRdWlja1dpbmRvdyAq d2luZG93ID0gaXRlbSgpLT53aW5kb3coKTsKKy0gICAgUVF1aWNrSXRlbSAqY2kgPSB3aW5kb3cg PyB3aW5kb3ctPmNvbnRlbnRJdGVtKCkgOiBudWxscHRyOworKyAgICBRUXVpY2tXaW5kb3cgKml0 ZW1XaW5kb3cgPSBpdGVtKCktPndpbmRvdygpOworKyAgICBRUXVpY2tJdGVtICpjaSA9IGl0ZW1X aW5kb3cgPyBpdGVtV2luZG93LT5jb250ZW50SXRlbSgpIDogbnVsbHB0cjsKKyAgICAgd2hpbGUg KHBhcmVudCAmJiAhUVF1aWNrSXRlbVByaXZhdGU6OmdldChwYXJlbnQpLT5pc0FjY2Vzc2libGUg JiYgcGFyZW50ICE9IGNpKQorICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRJdGVtKCk7 CisgCisgICAgIGlmIChwYXJlbnQpIHsKKyAgICAgICAgIGlmIChwYXJlbnQgPT0gY2kpIHsKKy0g ICAgICAgICAgICAvLyBKdW1wIG91dCB0byB0aGUgc2NlbmUgd2lkZ2V0IGlmIHRoZSBwYXJlbnQg aXMgdGhlIHJvb3QgaXRlbS4KKy0gICAgICAgICAgICAvLyBUaGVyZSBhcmUgdHdvIHJvb3QgaXRl bXMsIFFRdWlja1dpbmRvdzo6cm9vdEl0ZW0gYW5kCistICAgICAgICAgICAgLy8gUVF1aWNrVmll dzo6ZGVjbGFyYXRpdmVSb290LiBUaGUgZm9ybWVyIGlzIHRoZSB0cnVlIHJvb3QgaXRlbSwKKy0g ICAgICAgICAgICAvLyBidXQgaXMgbm90IGEgcGFydCBvZiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVl LiBDaGVjayBpZiB3ZSBoaXQKKy0gICAgICAgICAgICAvLyBpdCBoZXJlIGFuZCByZXR1cm4gYW4g aW50ZXJmYWNlIGZvciB0aGUgc2NlbmUgaW5zdGVhZC4KKy0gICAgICAgICAgICByZXR1cm4gUUFj Y2Vzc2libGU6OnF1ZXJ5QWNjZXNzaWJsZUludGVyZmFjZSh3aW5kb3cpOworKyAgICAgICAgICAg IC8vIEp1bXAgb3V0IHRvIHRoZSB3aW5kb3cgaWYgdGhlIHBhcmVudCBpcyB0aGUgcm9vdCBpdGVt CisrICAgICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZh Y2Uod2luZG93KCkpOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICB3aGlsZSAocGFy ZW50ICYmICFwYXJlbnQtPmRfZnVuYygpLT5pc0FjY2Vzc2libGUpCisgICAgICAgICAgICAgICAg IHBhcmVudCA9IHBhcmVudC0+cGFyZW50SXRlbSgpOworQEAgLTE4OCw3ICsxOTcsNyBAQCBRQWNj ZXNzaWJsZTo6U3RhdGUgUUFjY2Vzc2libGVRdWlja0l0ZW06OnN0YXRlKCkgY29uc3QKKyAgICAg UVJlY3Qgdmlld1JlY3RfID0gdmlld1JlY3QoKTsKKyAgICAgUVJlY3QgaXRlbVJlY3QgPSByZWN0 KCk7CisgCistICAgIGlmICh2aWV3UmVjdF8uaXNOdWxsKCkgfHwgaXRlbVJlY3QuaXNOdWxsKCkg fHwgIWl0ZW0oKS0+d2luZG93KCkgfHwgIWl0ZW0oKS0+d2luZG93KCktPmlzVmlzaWJsZSgpIHx8 IWl0ZW0oKS0+aXNWaXNpYmxlKCkgfHwgcUZ1enp5SXNOdWxsKGl0ZW0oKS0+b3BhY2l0eSgpKSkK KysgICAgaWYgKHZpZXdSZWN0Xy5pc051bGwoKSB8fCBpdGVtUmVjdC5pc051bGwoKSB8fCAhd2lu ZG93KCkgfHwgIXdpbmRvdygpLT5pc1Zpc2libGUoKSB8fCFpdGVtKCktPmlzVmlzaWJsZSgpIHx8 IHFGdXp6eUlzTnVsbChpdGVtKCktPm9wYWNpdHkoKSkpCisgICAgICAgICBzdGF0ZS5pbnZpc2li bGUgPSB0cnVlOworICAgICBpZiAoIXZpZXdSZWN0Xy5pbnRlcnNlY3RzKGl0ZW1SZWN0KSkKKyAg ICAgICAgIHN0YXRlLm9mZnNjcmVlbiA9IHRydWU7CitAQCAtMjAxLDYgKzIxMCwxMCBAQCBRQWNj ZXNzaWJsZTo6U3RhdGUgUUFjY2Vzc2libGVRdWlja0l0ZW06OnN0YXRlKCkgY29uc3QKKyAgICAg aWYgKHJvbGUoKSA9PSBRQWNjZXNzaWJsZTo6RWRpdGFibGVUZXh0KQorICAgICAgICAgaWYgKGF1 dG8gdGkgPSBxb2JqZWN0X2Nhc3Q8UVF1aWNrVGV4dElucHV0ICo+KGl0ZW0oKSkpCisgICAgICAg ICAgICAgc3RhdGUucGFzc3dvcmRFZGl0ID0gdGktPmVjaG9Nb2RlKCkgIT0gUVF1aWNrVGV4dElu cHV0OjpOb3JtYWw7CisrICAgIGlmICghaXRlbSgpLT5pc0VuYWJsZWQoKSkgeworKyAgICAgICAg c3RhdGUuZm9jdXNhYmxlID0gZmFsc2U7CisrICAgICAgICBzdGF0ZS5kaXNhYmxlZCA9IHRydWU7 CisrICAgIH0KKyAgICAgcmV0dXJuIHN0YXRlOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGRlY2xh cmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2t2aWV3X3AuaCBiL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5o CitpbmRleCAzOWZmY2FmMzljLi44YmFhMDEzMzBjIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNrdmlld19wLmgKKysrKyBiL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5o CitAQCAtNTgsNyArNTgsNyBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyAjaWYgUVRfQ09ORklH KGFjY2Vzc2liaWxpdHkpCisgCistY2xhc3MgUUFjY2Vzc2libGVRdWlja1dpbmRvdyA6IHB1Ymxp YyBRQWNjZXNzaWJsZU9iamVjdAorK2NsYXNzIFFfUVVJQ0tfRVhQT1JUIFFBY2Nlc3NpYmxlUXVp Y2tXaW5kb3cgOiBwdWJsaWMgUUFjY2Vzc2libGVPYmplY3QKKyB7CisgcHVibGljOgorICAgICBR QWNjZXNzaWJsZVF1aWNrV2luZG93KFFRdWlja1dpbmRvdyAqb2JqZWN0KTsKK2RpZmYgLS1naXQg YS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tkcmFnLmNwcCBiL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2RyYWcuY3BwCitpbmRleCA4MzIxZmNmZWVkLi4z ODMwNzhiM2I5IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1 aWNrZHJhZy5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2Ry YWcuY3BwCitAQCAtNDgxLDcgKzQ4MSw5IEBAIHZvaWQgUVF1aWNrRHJhZ0F0dGFjaGVkOjpzZXRL ZXlzKGNvbnN0IFFTdHJpbmdMaXN0ICZrZXlzKQorICAgICBccW1sYXR0YWNoZWRwcm9wZXJ0eSBz dHJpbmdsaXN0IFF0UXVpY2s6OkRyYWc6Om1pbWVEYXRhCisgICAgIFxzaW5jZSA1LjIKKyAKKy0g ICAgVGhpcyBwcm9wZXJ0eSBob2xkcyBhIG1hcCBvZiBtaW1lRGF0YSB0aGF0IGlzIHVzZWQgZHVy aW5nIHN0YXJ0RHJhZy4KKysgICAgVGhpcyBwcm9wZXJ0eSBob2xkcyBhIG1hcCBmcm9tIG1pbWUg dHlwZSB0byBkYXRhIHRoYXQgaXMgdXNlZCBkdXJpbmcgc3RhcnREcmFnLgorKyAgICBUaGUgbWlt ZSBkYXRhIG5lZWRzIHRvIGJlIGEgXGMgc3RyaW5nLCBvciBhbiBcYyBBcnJheUJ1ZmZlciB3aXRo IHRoZSBkYXRhIGVuY29kZWQKKysgICAgYWNjb3JkaW5nIHRvIHRoZSBtaW1lIHR5cGUuCisgKi8K KyAKKyBRVmFyaWFudE1hcCBRUXVpY2tEcmFnQXR0YWNoZWQ6Om1pbWVEYXRhKCkgY29uc3QKK0BA IC03NjYsOCArNzY4LDEyIEBAIFF0OjpEcm9wQWN0aW9uIFFRdWlja0RyYWdBdHRhY2hlZFByaXZh dGU6OnN0YXJ0RHJhZyhRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0CisgICAgIFFEcmFnICpk cmFnID0gbmV3IFFEcmFnKHNvdXJjZSA/IHNvdXJjZSA6IHEpOworICAgICBRTWltZURhdGEgKm1p bWVEYXRhID0gbmV3IFFNaW1lRGF0YSgpOworIAorLSAgICBmb3IgKGF1dG8gaXQgPSBleHRlcm5h bE1pbWVEYXRhLmNiZWdpbigpLCBlbmQgPSBleHRlcm5hbE1pbWVEYXRhLmNlbmQoKTsgaXQgIT0g ZW5kOyArK2l0KQorLSAgICAgICAgbWltZURhdGEtPnNldERhdGEoaXQua2V5KCksIGl0LnZhbHVl KCkudG9TdHJpbmcoKS50b1V0ZjgoKSk7CisrICAgIGZvciAoYXV0byBpdCA9IGV4dGVybmFsTWlt ZURhdGEuY2JlZ2luKCksIGVuZCA9IGV4dGVybmFsTWltZURhdGEuY2VuZCgpOyBpdCAhPSBlbmQ7 ICsraXQpIHsKKysgICAgICAgIGlmIChzdGF0aWNfY2FzdDxRTWV0YVR5cGU6OlR5cGU+KGl0LnZh bHVlKCkudHlwZSgpKSA9PSBRTWV0YVR5cGU6OlFCeXRlQXJyYXkpCisrICAgICAgICAgICAgbWlt ZURhdGEtPnNldERhdGEoaXQua2V5KCksIGl0LnZhbHVlKCkudG9CeXRlQXJyYXkoKSk7CisrICAg ICAgICBlbHNlCisrICAgICAgICAgICAgbWltZURhdGEtPnNldERhdGEoaXQua2V5KCksIGl0LnZh bHVlKCkudG9TdHJpbmcoKS50b1V0ZjgoKSk7CisrICAgIH0KKyAKKyAgICAgZHJhZy0+c2V0TWlt ZURhdGEobWltZURhdGEpOworICAgICBpZiAocGl4bWFwTG9hZGVyLmlzUmVhZHkoKSkgeworZGlm ZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW0uY3BwIGIv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbS5jcHAKK2luZGV4IDc1ZjE0 NTc4MTYuLmRlYzBhZTE5YWUgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9p dGVtcy9xcXVpY2tpdGVtLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMv cXF1aWNraXRlbS5jcHAKK0BAIC01OSw2ICs1OSw3IEBACisgI2luY2x1ZGUgPFF0Q29yZS9wcml2 YXRlL3FudW1lcmljX3AuaD4KKyAjaW5jbHVkZSA8UXRHdWkvcXBhL3FwbGF0Zm9ybXRoZW1lLmg+ CisgI2luY2x1ZGUgPFF0Q29yZS9xbG9nZ2luZ2NhdGVnb3J5Lmg+CisrI2luY2x1ZGUgPFF0Q29y ZS9wcml2YXRlL3FkdXBsaWNhdGV0cmFja2VyX3AuaD4KKyAKKyAjaW5jbHVkZSA8cHJpdmF0ZS9x cW1sZ2xvYmFsX3AuaD4KKyAjaW5jbHVkZSA8cHJpdmF0ZS9xcW1sZW5naW5lX3AuaD4KK0BAIC0y MzI2LDYgKzIzMjcsNyBAQCBRUXVpY2tJdGVtOjpRUXVpY2tJdGVtKFFRdWlja0l0ZW1Qcml2YXRl ICZkZCwgUVF1aWNrSXRlbSAqcGFyZW50KQorIFFRdWlja0l0ZW06On5RUXVpY2tJdGVtKCkKKyB7 CisgICAgIFFfRChRUXVpY2tJdGVtKTsKKysgICAgZC0+aW5EZXN0cnVjdG9yID0gdHJ1ZTsKKyAK KyAgICAgaWYgKGQtPndpbmRvd1JlZkNvdW50ID4gMSkKKyAgICAgICAgIGQtPndpbmRvd1JlZkNv dW50ID0gMTsgLy8gTWFrZSBzdXJlIHdpbmRvdyBpcyBzZXQgdG8gbnVsbCBpbiBuZXh0IGNhbGwg dG8gZGVyZWZXaW5kb3coKS4KK0BAIC0yNTI2LDYgKzI1MjgsNyBAQCBRUXVpY2tJdGVtKiBRUXVp Y2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluKFFRdWlja0l0ZW0gKml0 ZW0sIGJvbworICAgICBRUXVpY2tJdGVtICpjdXJyZW50ID0gaXRlbTsKKyAgICAgcUNEZWJ1ZyhE QkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0No YWluOiBzdGFydEl0ZW06IiA8PCBzdGFydEl0ZW07CisgICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8 PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbjogZmlyc3RG cm9tSXRlbToiIDw8IGZpcnN0RnJvbUl0ZW07CisrICAgIFFEdXBsaWNhdGVUcmFja2VyPFFRdWlj a0l0ZW0gKj4gY3ljbGVEZXRlY3RvcjsKKyAgICAgZG8geworICAgICAgICAgcUNEZWJ1ZyhEQkdf Rk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWlu OiBjdXJyZW50OiIgPDwgY3VycmVudDsKKyAgICAgICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8PCAi UVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbjogZnJvbToiIDw8 IGZyb207CitAQCAtMjU5Miw3ICsyNTk1LDEwIEBAIFFRdWlja0l0ZW0qIFFRdWlja0l0ZW1Qcml2 YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW4oUVF1aWNrSXRlbSAqaXRlbSwgYm9vCisg ICAgICAgICAvLyB0cmF2ZXJzZWQgYWxsIG9mIHRoZSBjaGFpbiAoYnkgY29tcGFyZSB0aGUgW2N1 cnJlbnRdIGl0ZW0gd2l0aCBbc3RhcnRJdGVtXSkKKyAgICAgICAgIC8vIFNpbmNlIHRoZSBbc3Rh cnRJdGVtXSBtaWdodCBiZSBwcm9tb3RlZCB0byBpdHMgcGFyZW50IGlmIGl0IGlzIGludmlzaWJs ZSwKKyAgICAgICAgIC8vIHdlIHN0aWxsIGhhdmUgdG8gY2hlY2sgW2N1cnJlbnRdIGl0ZW0gd2l0 aCBvcmlnaW5hbCBzdGFydCBpdGVtCistICAgICAgICBpZiAoKGN1cnJlbnQgPT0gc3RhcnRJdGVt IHx8IGN1cnJlbnQgPT0gb3JpZ2luYWxTdGFydEl0ZW0pICYmIGZyb20gPT0gZmlyc3RGcm9tSXRl bSkgeworKyAgICAgICAgLy8gV2UgbWlnaHQgYWxzbyBydW4gaW50byBhIGN5Y2xlIGJlZm9yZSB3 ZSByZWFjaCBmaXJzdEZyb21JdGVtIGFnYWluCisrICAgICAgICAvLyBidXQgbm90ZSB0aGF0IHdl IGhhdmUgdG8gaWdub3JlIGN1cnJlbnQgaWYgd2UgYXJlIG1lYW50IHRvIHNraXAgaXQKKysgICAg ICAgIGlmICgoKGN1cnJlbnQgPT0gc3RhcnRJdGVtIHx8IGN1cnJlbnQgPT0gb3JpZ2luYWxTdGFy dEl0ZW0pICYmIGZyb20gPT0gZmlyc3RGcm9tSXRlbSkgfHwKKysgICAgICAgICAgICAgICAgKCFz a2lwICYmIGN5Y2xlRGV0ZWN0b3IuaGFzU2VlbihjdXJyZW50KSkpIHsKKyAgICAgICAgICAgICAv LyB3cmFwcGVkIGFyb3VuZCwgYXZvaWQgZW5kbGVzcyBsb29wcworICAgICAgICAgICAgIGlmIChp dGVtID09IGNvbnRlbnRJdGVtKSB7CisgICAgICAgICAgICAgICAgIHFDRGVidWcoREJHX0ZPQ1VT KSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbjogbG9v cGVkLCByZXR1cm4gY29udGVudEl0ZW0iOworQEAgLTI2ODksOSArMjY5NSw4IEBAIHZvaWQgUVF1 aWNrSXRlbTo6c2V0UGFyZW50SXRlbShRUXVpY2tJdGVtICpwYXJlbnRJdGVtKQorIAorICAgICAg ICAgY29uc3QgYm9vbCB3YXNWaXNpYmxlID0gaXNWaXNpYmxlKCk7CisgICAgICAgICBvcC0+cmVt b3ZlQ2hpbGQodGhpcyk7CistICAgICAgICBpZiAod2FzVmlzaWJsZSkgeworKyAgICAgICAgaWYg KHdhc1Zpc2libGUgJiYgIW9wLT5pbkRlc3RydWN0b3IpCisgICAgICAgICAgICAgZW1pdCBvbGRQ YXJlbnRJdGVtLT52aXNpYmxlQ2hpbGRyZW5DaGFuZ2VkKCk7CistICAgICAgICB9CisgICAgIH0g ZWxzZSBpZiAoZC0+d2luZG93KSB7CisgICAgICAgICBRUXVpY2tXaW5kb3dQcml2YXRlOjpnZXQo ZC0+d2luZG93KS0+cGFyZW50bGVzc0l0ZW1zLnJlbW92ZSh0aGlzKTsKKyAgICAgfQorQEAgLTI3 NjgsOCArMjc3Myw5IEBAIHZvaWQgUVF1aWNrSXRlbTo6c2V0UGFyZW50SXRlbShRUXVpY2tJdGVt ICpwYXJlbnRJdGVtKQorIAorICAgICBkLT5pdGVtQ2hhbmdlKEl0ZW1QYXJlbnRIYXNDaGFuZ2Vk LCBkLT5wYXJlbnRJdGVtKTsKKyAKKy0gICAgZW1pdCBwYXJlbnRDaGFuZ2VkKGQtPnBhcmVudEl0 ZW0pOworLSAgICBpZiAoaXNWaXNpYmxlKCkgJiYgZC0+cGFyZW50SXRlbSkKKysgICAgaWYgKCFk LT5pbkRlc3RydWN0b3IpCisrICAgICAgICBlbWl0IHBhcmVudENoYW5nZWQoZC0+cGFyZW50SXRl bSk7CisrICAgIGlmIChpc1Zpc2libGUoKSAmJiBkLT5wYXJlbnRJdGVtICYmICFRUXVpY2tJdGVt UHJpdmF0ZTo6Z2V0KGQtPnBhcmVudEl0ZW0pLT5pbkRlc3RydWN0b3IpCisgICAgICAgICBlbWl0 IGQtPnBhcmVudEl0ZW0tPnZpc2libGVDaGlsZHJlbkNoYW5nZWQoKTsKKyB9CisgCitAQCAtMjk2 NSw3ICsyOTcxLDggQEAgdm9pZCBRUXVpY2tJdGVtUHJpdmF0ZTo6cmVtb3ZlQ2hpbGQoUVF1aWNr SXRlbSAqY2hpbGQpCisgCisgICAgIGl0ZW1DaGFuZ2UoUVF1aWNrSXRlbTo6SXRlbUNoaWxkUmVt b3ZlZENoYW5nZSwgY2hpbGQpOworIAorLSAgICBlbWl0IHEtPmNoaWxkcmVuQ2hhbmdlZCgpOwor KyAgICBpZiAoIWluRGVzdHJ1Y3RvcikKKysgICAgICAgIGVtaXQgcS0+Y2hpbGRyZW5DaGFuZ2Vk KCk7CisgfQorIAorIHZvaWQgUVF1aWNrSXRlbVByaXZhdGU6OnJlZldpbmRvdyhRUXVpY2tXaW5k b3cgKmMpCitAQCAtMzE5NCw2ICszMjAxLDcgQEAgUVF1aWNrSXRlbVByaXZhdGU6OlFRdWlja0l0 ZW1Qcml2YXRlKCkKKyAgICAgLCB0b3VjaEVuYWJsZWQoZmFsc2UpCisgI2VuZGlmCisgICAgICwg aGFzQ3Vyc29ySGFuZGxlcihmYWxzZSkKKysgICAgLCBpbkRlc3RydWN0b3IoZmFsc2UpCisgICAg ICwgZGlydHlBdHRyaWJ1dGVzKDApCisgICAgICwgbmV4dERpcnR5SXRlbShudWxscHRyKQorICAg ICAsIHByZXZEaXJ0eUl0ZW0obnVsbHB0cikKK0BAIC01MTIwLDYgKzUxMjgsMTMgQEAgdm9pZCBR UXVpY2tJdGVtOjpjb21wb25lbnRDb21wbGV0ZSgpCisgICAgICAgICBkLT5hZGRUb0RpcnR5TGlz dCgpOworICAgICAgICAgUVF1aWNrV2luZG93UHJpdmF0ZTo6Z2V0KGQtPndpbmRvdyktPmRpcnR5 SXRlbSh0aGlzKTsKKyAgICAgfQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysg ICAgaWYgKGQtPmlzQWNjZXNzaWJsZSAmJiBkLT5lZmZlY3RpdmVWaXNpYmxlKSB7CisrICAgICAg ICBRQWNjZXNzaWJsZUV2ZW50IGV2KHRoaXMsIFFBY2Nlc3NpYmxlOjpPYmplY3RTaG93KTsKKysg ICAgICAgIFFBY2Nlc3NpYmxlOjp1cGRhdGVBY2Nlc3NpYmlsaXR5KCZldik7CisrICAgIH0KKysj ZW5kaWYKKyB9CisgCisgUVF1aWNrU3RhdGVHcm91cCAqUVF1aWNrSXRlbVByaXZhdGU6Ol9zdGF0 ZXMoKQorQEAgLTYxMDYsOSArNjEyMSwxMSBAQCBib29sIFFRdWlja0l0ZW1Qcml2YXRlOjpzZXRF ZmZlY3RpdmVWaXNpYmxlUmVjdXIoYm9vbCBuZXdFZmZlY3RpdmVWaXNpYmxlKQorICAgICAgICAg UUFjY2Vzc2libGU6OnVwZGF0ZUFjY2Vzc2liaWxpdHkoJmV2KTsKKyAgICAgfQorICNlbmRpZgor LSAgICBlbWl0IHEtPnZpc2libGVDaGFuZ2VkKCk7CistICAgIGlmIChjaGlsZFZpc2liaWxpdHlD aGFuZ2VkKQorLSAgICAgICAgZW1pdCBxLT52aXNpYmxlQ2hpbGRyZW5DaGFuZ2VkKCk7CisrICAg IGlmICghaW5EZXN0cnVjdG9yKSB7CisrICAgICAgICBlbWl0IHEtPnZpc2libGVDaGFuZ2VkKCk7 CisrICAgICAgICBpZiAoY2hpbGRWaXNpYmlsaXR5Q2hhbmdlZCkKKysgICAgICAgICAgICBlbWl0 IHEtPnZpc2libGVDaGlsZHJlbkNoYW5nZWQoKTsKKysgICAgfQorIAorICAgICByZXR1cm4gdHJ1 ZTsgICAgLy8gZWZmZWN0aXZlIHZpc2liaWxpdHkgRElEIGNoYW5nZQorIH0KK0BAIC02MTU3LDYg KzYxNzQsMTUgQEAgdm9pZCBRUXVpY2tJdGVtUHJpdmF0ZTo6c2V0RWZmZWN0aXZlRW5hYmxlUmVj dXIoUVF1aWNrSXRlbSAqc2NvcGUsIGJvb2wgbmV3RWZmZWMKKyAgICAgfQorIAorICAgICBpdGVt Q2hhbmdlKFFRdWlja0l0ZW06Okl0ZW1FbmFibGVkSGFzQ2hhbmdlZCwgZWZmZWN0aXZlRW5hYmxl KTsKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrICAgIGlmIChpc0FjY2Vzc2libGUp IHsKKysgICAgICAgIFFBY2Nlc3NpYmxlOjpTdGF0ZSBjaGFuZ2VkU3RhdGU7CisrICAgICAgICBj aGFuZ2VkU3RhdGUuZGlzYWJsZWQgPSB0cnVlOworKyAgICAgICAgY2hhbmdlZFN0YXRlLmZvY3Vz YWJsZSA9IHRydWU7CisrICAgICAgICBRQWNjZXNzaWJsZVN0YXRlQ2hhbmdlRXZlbnQgZXYocSwg Y2hhbmdlZFN0YXRlKTsKKysgICAgICAgIFFBY2Nlc3NpYmxlOjp1cGRhdGVBY2Nlc3NpYmlsaXR5 KCZldik7CisrICAgIH0KKysjZW5kaWYKKyAgICAgZW1pdCBxLT5lbmFibGVkQ2hhbmdlZCgpOwor IH0KKyAKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tp dGVtX3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW1fcC5oCitp bmRleCA4NDFkOTFiYjQwLi5hZGU4ZmI2MWYyIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbV9wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1 aWNrL2l0ZW1zL3FxdWlja2l0ZW1fcC5oCitAQCAtNDcyLDYgKzQ3Miw3IEBAIHB1YmxpYzoKKyAg ICAgYm9vbCByZXBsYXlpbmdQcmVzc0V2ZW50OjE7CisgICAgIGJvb2wgdG91Y2hFbmFibGVkOjE7 CisgICAgIGJvb2wgaGFzQ3Vyc29ySGFuZGxlcjoxOworKyAgICBxdWludDMyIGluRGVzdHJ1Y3Rv cjoxOyAvLyBoYXMgZW50ZXJlZCB+UVF1aWNrSXRlbQorIAorICAgICBlbnVtIERpcnR5VHlwZSB7 CisgICAgICAgICBUcmFuc2Zvcm1PcmlnaW4gICAgICAgICA9IDB4MDAwMDAwMDEsCitkaWZmIC0t Z2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbXZpZXcuY3BwIGIv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbXZpZXcuY3BwCitpbmRleCAw MTBhMDE1MmUxLi5mOGFkMTY4YTE3IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVp Y2svaXRlbXMvcXF1aWNraXRlbXZpZXcuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj ay9pdGVtcy9xcXVpY2tpdGVtdmlldy5jcHAKK0BAIC0xNzg1LDcgKzE3ODUsNyBAQCB2b2lkIFFR dWlja0l0ZW1WaWV3UHJpdmF0ZTo6cmVmaWxsKHFyZWFsIGZyb20sIHFyZWFsIHRvKQorIAorICAg ICBkbyB7CisgICAgICAgICBidWZmZXJQYXVzZS5zdG9wKCk7CistICAgICAgICBpZiAoY3VycmVu dENoYW5nZXMuaGFzUGVuZGluZ0NoYW5nZXMoKSB8fCBidWZmZXJlZENoYW5nZXMuaGFzUGVuZGlu Z0NoYW5nZXMoKSkgeworKyAgICAgICAgaWYgKGN1cnJlbnRDaGFuZ2VzLmhhc1BlbmRpbmdDaGFu Z2VzKCkgfHwgYnVmZmVyZWRDaGFuZ2VzLmhhc1BlbmRpbmdDaGFuZ2VzKCkgfHwgY3VycmVudENo YW5nZXMuYWN0aXZlKSB7CisgICAgICAgICAgICAgY3VycmVudENoYW5nZXMucmVzZXQoKTsKKyAg ICAgICAgICAgICBidWZmZXJlZENoYW5nZXMucmVzZXQoKTsKKyAgICAgICAgICAgICByZWxlYXNl VmlzaWJsZUl0ZW1zKHJldXNhYmxlRmxhZyk7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2svaXRlbXMvcXF1aWNrbW91c2VhcmVhX3BfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMv cXVpY2svaXRlbXMvcXF1aWNrbW91c2VhcmVhX3BfcC5oCitpbmRleCBmYmEzODNlMjY4Li4wZDYz NjE4NjIyIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNr bW91c2VhcmVhX3BfcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVp Y2ttb3VzZWFyZWFfcF9wLmgKK0BAIC02MSw3ICs2MSw2IEBAIFFUX0JFR0lOX05BTUVTUEFDRQor IAorIGNsYXNzIFFRdWlja01vdXNlRXZlbnQ7CisgY2xhc3MgUVF1aWNrTW91c2VBcmVhOworLWNs YXNzIFFRdWlja1BvaW50ZXJNYXNrOworIGNsYXNzIFFRdWlja01vdXNlQXJlYVByaXZhdGUgOiBw dWJsaWMgUVF1aWNrSXRlbVByaXZhdGUKKyB7CisgICAgIFFfREVDTEFSRV9QVUJMSUMoUVF1aWNr TW91c2VBcmVhKQorQEAgLTEwMCw3ICs5OSw2IEBAIHB1YmxpYzoKKyAjaWYgUVRfQ09ORklHKHF1 aWNrX2RyYWdhbmRkcm9wKQorICAgICBRUXVpY2tEcmFnICpkcmFnOworICNlbmRpZgorLSAgICBR UG9pbnRlcjxRUXVpY2tQb2ludGVyTWFzaz4gbWFzazsKKyAgICAgUVBvaW50RiBzdGFydFNjZW5l OworICAgICBRUG9pbnRGIHRhcmdldFN0YXJ0UG9zOworICAgICBRUG9pbnRGIGxhc3RQb3M7Citk aWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrdGV4dC5jcHAg Yi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2t0ZXh0LmNwcAoraW5kZXggNjIz MDE4NjkzMy4uZTgyM2NhMTA5NSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr L2l0ZW1zL3FxdWlja3RleHQuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVt cy9xcXVpY2t0ZXh0LmNwcAorQEAgLTIxNjgsNyArMjE2OCw3IEBAIHZvaWQgUVF1aWNrVGV4dDo6 cmVzZXRNYXhpbXVtTGluZUNvdW50KCkKKyAgICAgPGltZyBzcmM9IiIgYWxpZ249InRvcCxtaWRk bGUsYm90dG9tIiB3aWR0aD0iIiBoZWlnaHQ9IiI+IC0gaW5saW5lIGltYWdlcworICAgICA8b2wg dHlwZT0iIj4sIDx1bCB0eXBlPSIiPiBhbmQgPGxpPiAtIG9yZGVyZWQgYW5kIHVub3JkZXJlZCBs aXN0cworICAgICA8cHJlPjwvcHJlPiAtIHByZWZvcm1hdHRlZAorLSAgICAmZ3Q7ICZsdDsgJmFt cDsKKysgICAgJmd0OyAmbHQ7ICZhbXA7ICZxdW90OyAmbmJzcDsgJmFwb3M7CisgICAgIFxlbmRj b2RlCisgCisgICAgIFxjIFRleHQuU3R5bGVkVGV4dCBwYXJzZXIgaXMgc3RyaWN0LCByZXF1aXJp bmcgdGFncyB0byBiZSBjb3JyZWN0bHkgbmVzdGVkLgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrL3NjZW5lZ3JhcGgvcXNncmhpZGlzdGFuY2VmaWVsZGdseXBoY2FjaGUuY3Bw IGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svc2NlbmVncmFwaC9xc2dyaGlkaXN0YW5jZWZpZWxk Z2x5cGhjYWNoZS5jcHAKK2luZGV4IGViNGRiMGY4NWUuLjIzMjVhMjY2NWIgMTAwNjQ0CistLS0g YS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9zY2VuZWdyYXBoL3FzZ3JoaWRpc3RhbmNlZmllbGRn bHlwaGNhY2hlLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svc2NlbmVncmFwaC9x c2dyaGlkaXN0YW5jZWZpZWxkZ2x5cGhjYWNoZS5jcHAKK0BAIC00NDYsNyArNDQ2LDcgQEAgYm9v bCBRU0dSaGlEaXN0YW5jZUZpZWxkR2x5cGhDYWNoZTo6bG9hZFByZWdlbmVyYXRlZENhY2hlKGNv bnN0IFFSYXdGb250ICZmb250KQorIAorICAgICAgICAgY29uc3QgY2hhciAqdGV4dHVyZVJlY29y ZCA9IGFsbG9jYXRvckRhdGE7CisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRleHR1cmVD b3VudDsgKytpLCB0ZXh0dXJlUmVjb3JkICs9IFF0ZGY6OlRleHR1cmVSZWNvcmRTaXplKSB7Cist ICAgICAgICAgICAgaWYgKHRleHR1cmVSZWNvcmQgKyBRdGRmOjpUZXh0dXJlUmVjb3JkU2l6ZSA+ IHF0ZGZUYWJsZUVuZCkgeworKyAgICAgICAgICAgIGlmIChxdGRmVGFibGVFbmQgLSB0ZXh0dXJl UmVjb3JkIDwgUXRkZjo6VGV4dHVyZVJlY29yZFNpemUpIHsKKyAgICAgICAgICAgICAgICAgcVdh cm5pbmcoInF0ZGYgdGFibGUgdG9vIHNtYWxsIGluIGZvbnQgJyVzJy4iLAorICAgICAgICAgICAg ICAgICAgICAgICAgICBxUHJpbnRhYmxlKGZvbnQuZmFtaWx5TmFtZSgpKSk7CisgICAgICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKK0BAIC00NjIsNyArNDYyLDcgQEAgYm9vbCBRU0dSaGlEaXN0 YW5jZUZpZWxkR2x5cGhDYWNoZTo6bG9hZFByZWdlbmVyYXRlZENhY2hlKGNvbnN0IFFSYXdGb250 ICZmb250KQorIAorICAgICAgICAgY29uc3QgY2hhciAqZ2x5cGhSZWNvcmQgPSB0ZXh0dXJlUmVj b3JkOworICAgICAgICAgZm9yIChxdWludDMyIGkgPSAwOyBpIDwgZ2x5cGhDb3VudDsgKytpLCBn bHlwaFJlY29yZCArPSBRdGRmOjpHbHlwaFJlY29yZFNpemUpIHsKKy0gICAgICAgICAgICBpZiAo Z2x5cGhSZWNvcmQgKyBRdGRmOjpHbHlwaFJlY29yZFNpemUgPiBxdGRmVGFibGVFbmQpIHsKKysg ICAgICAgICAgICBpZiAocXRkZlRhYmxlRW5kIC0gZ2x5cGhSZWNvcmQgPCBRdGRmOjogR2x5cGhS ZWNvcmRTaXplKSB7CisgICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJxdGRmIHRhYmxlIHRvbyBz bWFsbCBpbiBmb250ICclcycuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcVByaW50YWJs ZShmb250LmZhbWlseU5hbWUoKSkpOworICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CitA QCAtNTEyLDggKzUxMiw4IEBAIGJvb2wgUVNHUmhpRGlzdGFuY2VGaWVsZEdseXBoQ2FjaGU6Omxv YWRQcmVnZW5lcmF0ZWRDYWNoZShjb25zdCBRUmF3Rm9udCAmZm9udCkKKyAKKyAgICAgICAgICAg ICBpbnQgd2lkdGggPSB0ZXhJbmZvLT5hbGxvY2F0ZWRBcmVhLndpZHRoKCk7CisgICAgICAgICAg ICAgaW50IGhlaWdodCA9IHRleEluZm8tPmFsbG9jYXRlZEFyZWEuaGVpZ2h0KCk7CistICAgICAg ICAgICAgcWludDY0IHNpemUgPSB3aWR0aCAqIGhlaWdodDsKKy0gICAgICAgICAgICBpZiAocmVp bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KHRleHR1cmVEYXRhICsgc2l6ZSkgPiBxdGRmVGFi bGVFbmQpIHsKKysgICAgICAgICAgICBxaW50NjQgc2l6ZSA9IHFpbnQ2NCh3aWR0aCkgKiBoZWln aHQ7CisrICAgICAgICAgICAgaWYgKHF0ZGZUYWJsZUVuZCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u c3QgY2hhciAqPih0ZXh0dXJlRGF0YSkgPCBzaXplKSB7CisgICAgICAgICAgICAgICAgIHFXYXJu aW5nKCJxdGRmIHRhYmxlIHRvbyBzbWFsbCBpbiBmb250ICclcycuIiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgcVByaW50YWJsZShmb250LmZhbWlseU5hbWUoKSkpOworICAgICAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2sv dXRpbC9xcXVpY2tzdHlsZWR0ZXh0LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3V0aWwv cXF1aWNrc3R5bGVkdGV4dC5jcHAKK2luZGV4IGQ1MzFmYzkyMDUuLmEyNWFmOTA0MTQgMTAwNjQ0 CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay91dGlsL3FxdWlja3N0eWxlZHRleHQuY3Bw CisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay91dGlsL3FxdWlja3N0eWxlZHRleHQuY3Bw CitAQCAtNTY0LDYgKzU2NCw4IEBAIHZvaWQgUVF1aWNrU3R5bGVkVGV4dFByaXZhdGU6OnBhcnNl RW50aXR5KGNvbnN0IFFDaGFyIComY2gsIGNvbnN0IFFTdHJpbmcgJnRleHRJCisgICAgICAgICAg ICAgICAgIHRleHRPdXQgKz0gUUNoYXIoNjApOworICAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0 eSA9PSBRTGF0aW4xU3RyaW5nKCJhbXAiKSkKKyAgICAgICAgICAgICAgICAgdGV4dE91dCArPSBR Q2hhcigzOCk7CisrICAgICAgICAgICAgZWxzZSBpZiAoZW50aXR5ID09IFFMYXRpbjFTdHJpbmco ImFwb3MiKSkKKysgICAgICAgICAgICAgICAgdGV4dE91dCArPSBRQ2hhcigzOSk7CisgICAgICAg ICAgICAgZWxzZSBpZiAoZW50aXR5ID09IFFMYXRpbjFTdHJpbmcoInF1b3QiKSkKKyAgICAgICAg ICAgICAgICAgdGV4dE91dCArPSBRQ2hhcigzNCk7CisgICAgICAgICAgICAgZWxzZSBpZiAoZW50 aXR5ID09IFFMYXRpbjFTdHJpbmcoIm5ic3AiKSkKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZl L3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldC5jcHAgYi9xdGRlY2xhcmF0 aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldC5jcHAKK25ldyBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi44YTFjOTAxODgwCistLS0gL2Rldi9udWxs CisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dp ZGdldC5jcHAKK0BAIC0wLDAgKzEsMTEwIEBACisrLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysqKgor KyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29udGFjdDog aHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworKyoqCisrKiogVGhpcyBmaWxlIGlzIHBhcnQg b2YgdGhlIFF0UXVpY2sgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorKyoqCisrKiogJFFUX0JF R0lOX0xJQ0VOU0U6TEdQTCQKKysqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKysqKiBMaWNl bnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBm aWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVt ZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGlu IGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCisrKiogYSB3cml0dGVuIGFn cmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVy bXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0 aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBh dCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorKyoqCisrKiogR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1h eSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlcgorKyoqIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkxHUEwz IGluY2x1ZGVkIGluIHRoZQorKyoqIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZp ZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bworKyoqIGVuc3VyZSB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyByZXF1aXJlbWVudHMKKysqKiB3aWxs IGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sLgorKyoq CisrKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5 LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKysqKiBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9yIChhdCB5b3VyIG9wdGlvbikgdGhl IEdOVSBHZW5lcmFsCisrKiogUHVibGljIGxpY2Vuc2UgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2 ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQorKyoqIFF0IEZvdW5kYXRpb24uIFRoZSBs aWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRh dGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5H UEwzCisrKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSBy ZXZpZXcgdGhlIGZvbGxvd2luZworKyoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKKysqKiBiZSBtZXQ6IGh0dHBz Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAorKyoqIGh0dHBzOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgorKyoqCisrKiogJFFUX0VORF9MSUNFTlNF JAorKyoqCisrKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysjaW5jbHVkZSAicWFjY2Vzc2libGVx dWlja3dpZGdldF9wLmgiCisrCisrI2luY2x1ZGUgInFxdWlja3dpZGdldF9wLmgiCisrCisrUVRf QkVHSU5fTkFNRVNQQUNFCisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKworK1FB Y2Nlc3NpYmxlUXVpY2tXaWRnZXQ6OlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQoUVF1aWNrV2lkZ2V0 KiB3aWRnZXQpCisrOiBRQWNjZXNzaWJsZVdpZGdldCh3aWRnZXQpCisrLCBtX2FjY2Vzc2libGVX aW5kb3coUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6Z2V0KHdpZGdldCktPm9mZnNjcmVlbldpbmRvdykK Kyt7CisrICAgIC8vIE5PVEU6IG1fYWNjZXNzaWJsZVdpbmRvdyBpcyBhIFFBY2Nlc3NpYmxlUXVp Y2tXaW5kb3csIGFuZCBub3QgYQorKyAgICAvLyBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2Ny ZWVuV2luZG93IChkZWZpbmVkIGJlbG93KS4gVGhpcyBtZWFucworKyAgICAvLyBpdCB3aWxsIHJl dHVybiB0aGUgUXVpY2sgaXRlbSBjaGlsZCBpbnRlcmZhY2VzLCB3aGljaCBpcyB3aGF0J3MgbmVl ZGVkIGhlcmUKKysgICAgLy8gKHVubGlrZSBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVu V2luZG93LCB3aGljaCB3aWxsIHJlcG9ydCAwIGNoaWxkcmVuKS4KKyt9CisrCisrUUFjY2Vzc2li bGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6OmNoaWxkKGludCBpbmRleCkgY29u c3QKKyt7CisrICAgIHJldHVybiBtX2FjY2Vzc2libGVXaW5kb3cuY2hpbGQoaW5kZXgpOworK30K KysKKytpbnQgUUFjY2Vzc2libGVRdWlja1dpZGdldDo6Y2hpbGRDb3VudCgpIGNvbnN0Cisrewor KyAgICByZXR1cm4gbV9hY2Nlc3NpYmxlV2luZG93LmNoaWxkQ291bnQoKTsKKyt9CisrCisraW50 IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6OmluZGV4T2ZDaGlsZChjb25zdCBRQWNjZXNzaWJsZUlu dGVyZmFjZSAqaWZhY2UpIGNvbnN0CisreworKyAgICByZXR1cm4gbV9hY2Nlc3NpYmxlV2luZG93 LmluZGV4T2ZDaGlsZChpZmFjZSk7CisrfQorKworK1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNj ZXNzaWJsZVF1aWNrV2lkZ2V0OjpjaGlsZEF0KGludCB4LCBpbnQgeSkgY29uc3QKKyt7CisrICAg IHJldHVybiBtX2FjY2Vzc2libGVXaW5kb3cuY2hpbGRBdCh4LCB5KTsKKyt9CisrCisrUUFjY2Vz c2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6UUFjY2Vzc2libGVRdWlja1dpZGdldE9m ZnNjcmVlbldpbmRvdyhRUXVpY2tXaW5kb3cgKndpbmRvdykKKys6UUFjY2Vzc2libGVRdWlja1dp bmRvdyh3aW5kb3cpCisreworKworK30KKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vz c2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6Y2hpbGQoaW50IGluZGV4KSBjb25zdAor K3sKKysgICAgUV9VTlVTRUQoaW5kZXgpOworKyAgICByZXR1cm4gbnVsbHB0cjsKKyt9CisrCisr aW50IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OmNoaWxkQ291bnQoKSBj b25zdAorK3sKKysgICAgcmV0dXJuIDA7CisrfQorKworK2ludCBRQWNjZXNzaWJsZVF1aWNrV2lk Z2V0T2Zmc2NyZWVuV2luZG93OjppbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZh Y2UgKmlmYWNlKSBjb25zdAorK3sKKysgICAgUV9VTlVTRUQoaWZhY2UpOworKyAgICByZXR1cm4g LTE7CisrfQorKworK1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0 T2Zmc2NyZWVuV2luZG93OjpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93Ojpj aGlsZEF0KGludCB4LCBpbnQgeSkgY29uc3QKKyt7CisrICAgIFFfVU5VU0VEKHgpOworKyAgICBR X1VOVVNFRCh5KTsKKysgICAgcmV0dXJuIG51bGxwdHI7CisrfQorKworKyNlbmRpZiAvLyBhY2Nl c3NpYmlsaXR5CisrCisrUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaCBiL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaAorbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjdjMmFiOTMwZTAKKy0tLSAvZGV2L251 bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNr d2lkZ2V0X3AuaAorQEAgLTAsMCArMSw5NSBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioK KysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6 IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSBRdFF1aWNrIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9C RUdJTl9MSUNFTlNFOkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGlj ZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMg ZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVl bWVudCBwcm92aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBp biBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBh Z3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRl cm1zCisrKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRp dGlvbnMuIEZvciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0g YXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBt YXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BM MyBpbmNsdWRlZCBpbiB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2 aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2ls bCBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysq KgorKyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVs eSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiog R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRo ZSBHTlUgR2VuZXJhbAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIg dmVyc2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUg bGljZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5k YXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0Uu R1BMMworKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2Ug cmV2aWV3IHRoZSBmb2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRw czovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5T RSQKKysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2lmbmRlZiBRQUNDRVNTSUJMRVFV SUNLV0lER0VUX0gKKysjZGVmaW5lIFFBQ0NFU1NJQkxFUVVJQ0tXSURHRVRfSAorKworKy8vCisr Ly8gIFcgQSBSIE4gSSBOIEcKKysvLyAgLS0tLS0tLS0tLS0tLQorKy8vCisrLy8gVGhpcyBmaWxl IGlzIG5vdCBwYXJ0IG9mIHRoZSBRdCBBUEkuICBJdCBleGlzdHMgcHVyZWx5IGFzIGFuCisrLy8g aW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVGhpcyBoZWFkZXIgZmlsZSBtYXkgY2hhbmdlIGZyb20g dmVyc2lvbiB0bworKy8vIHZlcnNpb24gd2l0aG91dCBub3RpY2UsIG9yIGV2ZW4gYmUgcmVtb3Zl ZC4KKysvLworKy8vIFdlIG1lYW4gaXQuCisrLy8KKysKKysjaW5jbHVkZSAicXF1aWNrd2lkZ2V0 LmgiCisrI2luY2x1ZGUgPFF0V2lkZ2V0cy9xYWNjZXNzaWJsZXdpZGdldC5oPgorKworKyNpbmNs dWRlIDxwcml2YXRlL3FhY2Nlc3NpYmxlcXVpY2t2aWV3X3AuaD4KKysKKytRVF9CRUdJTl9OQU1F U1BBQ0UKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrCisrLy8gVGhlc2UgY2xh c3NlcyBpbXBsZW1lbnQgdGhlIFFRdWlja1dpZ2V0IGFjY2Vzc2liaWxpdHkgc3dpdGNoYXJvbywK KysvLyB3aGVyZSB0aGUgY2hpbGQgaXRlbXMgb2YgdGhlIFFRdWlja1dpZGdldE9mZnNjcmVlbldp bmRvdyBhcmUgcmVwb3J0ZWQKKysvLyBhcyBjaGlsZCBhY2Nlc3NpYmxlIGludGVyZmFjZXMgb2Yg dGhlIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQuCisrY2xhc3MgUUFjY2Vzc2libGVRdWlja1dpZGdl dDogcHVibGljIFFBY2Nlc3NpYmxlV2lkZ2V0CisreworK3B1YmxpYzoKKysgICAgUUFjY2Vzc2li bGVRdWlja1dpZGdldChRUXVpY2tXaWRnZXQqIHdpZGdldCk7CisrCisrICAgIFFBY2Nlc3NpYmxl SW50ZXJmYWNlICpjaGlsZChpbnQgaW5kZXgpIGNvbnN0IG92ZXJyaWRlOworKyAgICBpbnQgY2hp bGRDb3VudCgpIGNvbnN0IG92ZXJyaWRlOworKyAgICBpbnQgaW5kZXhPZkNoaWxkKGNvbnN0IFFB Y2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIFFBY2Nlc3Np YmxlSW50ZXJmYWNlICpjaGlsZEF0KGludCB4LCBpbnQgeSkgY29uc3Qgb3ZlcnJpZGU7CisrCisr cHJpdmF0ZToKKysgICAgUUFjY2Vzc2libGVRdWlja1dpbmRvdyBtX2FjY2Vzc2libGVXaW5kb3c7 CisrICAgIFFfRElTQUJMRV9DT1BZKFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQpCisrfTsKKysKKytj bGFzcyBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OiBwdWJsaWMgUUFjY2Vz c2libGVRdWlja1dpbmRvdworK3sKKytwdWJsaWM6CisrICAgIFFBY2Nlc3NpYmxlUXVpY2tXaWRn ZXRPZmZzY3JlZW5XaW5kb3coUVF1aWNrV2luZG93ICp3aW5kb3cpOworKyAgICBRQWNjZXNzaWJs ZUludGVyZmFjZSAqY2hpbGQoaW50IGluZGV4KSBjb25zdCBvdmVycmlkZTsKKysgICAgaW50IGNo aWxkQ291bnQoKSBjb25zdCBvdmVycmlkZTsKKysgICAgaW50IGluZGV4T2ZDaGlsZChjb25zdCBR QWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UpIGNvbnN0IG92ZXJyaWRlOworKyAgICBRQWNjZXNz aWJsZUludGVyZmFjZSAqY2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0IG92ZXJyaWRlOworK307 CisrCisrI2VuZGlmIC8vIGFjY2Vzc2liaWxpdHkKKysKKytRVF9FTkRfTkFNRVNQQUNFCisrCisr I2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nl c3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lk Z2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeS5jcHAKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CitpbmRleCAwMDAwMDAwMDAwLi43YmE4OGExNzY5CistLS0gL2Rldi9udWxsCisrKysgYi9x dGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3Rv cnkuY3BwCitAQCAtMCwwICsxLDYwIEBACisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysqKgorKyoq IENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29udGFjdDogaHR0 cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworKyoqCisrKiogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg dGhlIFF0UXVpY2sgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorKyoqCisrKiogJFFUX0JFR0lO X0xJQ0VOU0U6TEdQTCQKKysqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNl ZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxl IGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50 IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFj Y29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCisrKiogYSB3cml0dGVuIGFncmVl bWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMK KysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9u cy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBo dHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorKyoqCisrKiogR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBi ZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlcgorKyoqIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQor KyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGlu Y2x1ZGVkIGluIHRoZQorKyoqIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcg dGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bworKyoqIGVuc3VyZSB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyByZXF1aXJlbWVudHMKKysqKiB3aWxsIGJl IG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sLgorKyoqCisr KiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0 aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKysqKiBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9yIChhdCB5b3VyIG9wdGlvbikgdGhlIEdO VSBHZW5lcmFsCisrKiogUHVibGljIGxpY2Vuc2UgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJz aW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQorKyoqIFF0IEZvdW5kYXRpb24uIFRoZSBsaWNl bnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlv biBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwz CisrKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZp ZXcgdGhlIGZvbGxvd2luZworKyoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKKysqKiBiZSBtZXQ6IGh0dHBzOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAorKyoqIGh0dHBzOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgorKyoqCisrKiogJFFUX0VORF9MSUNFTlNFJAor KyoqCisrKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysjaW5jbHVkZSAicWFjY2Vzc2libGVxdWlj a3dpZGdldGZhY3RvcnlfcC5oIgorKyNpbmNsdWRlICJxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3Au aCIKKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxp dHkpCisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKnFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRGYWN0 b3J5KGNvbnN0IFFTdHJpbmcgJmNsYXNzbmFtZSwgUU9iamVjdCAqb2JqZWN0KQorK3sKKysgICAg aWYgKGNsYXNzbmFtZSA9PSBRTGF0aW4xU3RyaW5nKCJRUXVpY2tXaWRnZXQiKSkgeworKyAgICAg ICAgcmV0dXJuIG5ldyBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0KHFvYmplY3RfY2FzdDxRUXVpY2tX aWRnZXQgKj4ob2JqZWN0KSk7CisrICAgIH0gZWxzZSBpZiAoY2xhc3NuYW1lID09IFFMYXRpbjFT dHJpbmcoIlFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyIpKSB7CisrICAgICAgICByZXR1cm4g bmV3IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3cocW9iamVjdF9jYXN0PFFR dWlja1dpbmRvdyAqPihvYmplY3QpKTsKKysgICAgfQorKyAgICByZXR1cm4gMDsKKyt9CisrCisr I2VuZGlmIC8vIGFjY2Vzc2liaWxpdHkKKysKKytRVF9FTkRfTkFNRVNQQUNFCisrCitkaWZmIC0t Z2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRn ZXRmYWN0b3J5X3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJs ZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwMDAwLi44YzYzYjA5ZjgxCistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oCitAQCAtMCww ICsxLDY2IEBACisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq 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 KioqKioqKioqKi8KKysKKysjaW5jbHVkZSA8UXRHdWkvcWFjY2Vzc2libGUuaD4KKysKKysjaWZu ZGVmIFFBQ0NFU1NJQkxFUVVJQ0tXSURHRVRGQUNUT1JZX0gKKysjZGVmaW5lIFFBQ0NFU1NJQkxF UVVJQ0tXSURHRVRGQUNUT1JZX0gKKysKKysvLworKy8vICBXIEEgUiBOIEkgTiBHCisrLy8gIC0t LS0tLS0tLS0tLS0KKysvLworKy8vIFRoaXMgZmlsZSBpcyBub3QgcGFydCBvZiB0aGUgUXQgQVBJ LiAgSXQgZXhpc3RzIHB1cmVseSBhcyBhbgorKy8vIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFRo aXMgaGVhZGVyIGZpbGUgbWF5IGNoYW5nZSBmcm9tIHZlcnNpb24gdG8KKysvLyB2ZXJzaW9uIHdp dGhvdXQgbm90aWNlLCBvciBldmVuIGJlIHJlbW92ZWQuCisrLy8KKysvLyBXZSBtZWFuIGl0Lgor Ky8vCisrCisrUVRfQkVHSU5fTkFNRVNQQUNFCisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmls aXR5KQorKworK1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpxQWNjZXNzaWJsZVF1aWNrV2lkZ2V0RmFj dG9yeShjb25zdCBRU3RyaW5nICZjbGFzc25hbWUsIFFPYmplY3QgKm9iamVjdCk7CisrCisrI2Vu ZGlmCisrCisrUVRfRU5EX05BTUVTUEFDRQorKworKyNlbmRpZgorZGlmZiAtLWdpdCBhL3F0ZGVj bGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXQuY3BwIGIvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldC5jcHAKK2luZGV4IDM5NzgwZjhkZTMuLjlj OTdiNDM1MTggMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1 aWNrd2lkZ2V0LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlj a3dpZGdldC5jcHAKK0BAIC0zOSw2ICszOSw3IEBACisgCisgI2luY2x1ZGUgInFxdWlja3dpZGdl dC5oIgorICNpbmNsdWRlICJxcXVpY2t3aWRnZXRfcC5oIgorKyNpbmNsdWRlICJxYWNjZXNzaWJs ZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmgiCisgCisgI2luY2x1ZGUgInByaXZhdGUvcXF1aWNrd2lu ZG93X3AuaCIKKyAjaW5jbHVkZSAicHJpdmF0ZS9xcXVpY2tpdGVtX3AuaCIKK0BAIC03NSw5ICs3 NiwxNiBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorK1FRdWlja1dpZGdldE9mZnNjcmVl bldpbmRvdzo6UVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KFFRdWlja1dpbmRvd1ByaXZhdGUg JmRkLCBRUXVpY2tSZW5kZXJDb250cm9sICpjb250cm9sKQorKzpRUXVpY2tXaW5kb3coZGQsIGNv bnRyb2wpCisreworKyAgICBzZXRUaXRsZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJPZmZzY3JlZW4i KSk7CisrICAgIHNldE9iamVjdE5hbWUoUVN0cmluZzo6ZnJvbUxhdGluMSgiUVF1aWNrT2ZmU2Ny ZWVuV2luZG93IikpOworK30KKysKKyAvLyBvdmVycmlkZSBzZXRWaXNibGUgdG8gcHJldmVudCBh Y2NpZGVudGFsIG9mZnNjcmVlbiB3aW5kb3cgYmVpbmcgY3JlYXRlZAorIC8vIGJ5IGJhc2UgY2xh c3MuCistY2xhc3MgUVF1aWNrT2ZmY3JlZW5XaW5kb3dQcml2YXRlOiBwdWJsaWMgUVF1aWNrV2lu ZG93UHJpdmF0ZSB7CisrY2xhc3MgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93UHJpdmF0ZTog cHVibGljIFFRdWlja1dpbmRvd1ByaXZhdGUgeworIHB1YmxpYzoKKyAgICAgdm9pZCBzZXRWaXNp YmxlKGJvb2wgdmlzaWJsZSkgb3ZlcnJpZGUgeworICAgICAgICAgUV9RKFFXaW5kb3cpOworQEAg LTEwNSw5ICsxMTMsOCBAQCB2b2lkIFFRdWlja1dpZGdldFByaXZhdGU6OmluaXQoUVFtbEVuZ2lu ZSogZSkKKyAgICAgUV9RKFFRdWlja1dpZGdldCk7CisgCisgICAgIHJlbmRlckNvbnRyb2wgPSBu ZXcgUVF1aWNrV2lkZ2V0UmVuZGVyQ29udHJvbChxKTsKKy0gICAgb2Zmc2NyZWVuV2luZG93ID0g bmV3IFFRdWlja1dpbmRvdygqbmV3IFFRdWlja09mZmNyZWVuV2luZG93UHJpdmF0ZSgpLHJlbmRl ckNvbnRyb2wpOworLSAgICBvZmZzY3JlZW5XaW5kb3ctPnNldFRpdGxlKFFTdHJpbmc6OmZyb21M YXRpbjEoIk9mZnNjcmVlbiIpKTsKKy0gICAgb2Zmc2NyZWVuV2luZG93LT5zZXRPYmplY3ROYW1l KFFTdHJpbmc6OmZyb21MYXRpbjEoIlFRdWlja09mZlNjcmVlbldpbmRvdyIpKTsKKysgICAgb2Zm c2NyZWVuV2luZG93ID0gbmV3IFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdygqbmV3IFFRdWlj a1dpZGdldE9mZnNjcmVlbldpbmRvd1ByaXZhdGUoKSwgcmVuZGVyQ29udHJvbCk7CisrICAgIG9m ZnNjcmVlbldpbmRvdy0+c2V0U2NyZWVuKHEtPnNjcmVlbigpKTsKKyAgICAgLy8gRG8gbm90IGNh bGwgY3JlYXRlKCkgb24gb2Zmc2NyZWVuV2luZG93LgorIAorICAgICAvLyBDaGVjayBpZiB0aGUg U29mdHdhcmUgQWRhcHRhdGlvbiBpcyBiZWluZyB1c2VkCitAQCAtMTM4LDYgKzE0NSwxMCBAQCB2 b2lkIFFRdWlja1dpZGdldFByaXZhdGU6OmluaXQoUVFtbEVuZ2luZSogZSkKKyAgICAgUVdpZGdl dDo6Y29ubmVjdChvZmZzY3JlZW5XaW5kb3csICZRUXVpY2tXaW5kb3c6OmZvY3VzT2JqZWN0Q2hh bmdlZCwgcSwgJlFRdWlja1dpZGdldDo6cHJvcGFnYXRlRm9jdXNPYmplY3RDaGFuZ2VkKTsKKyAg ICAgUU9iamVjdDo6Y29ubmVjdChyZW5kZXJDb250cm9sLCBTSUdOQUwocmVuZGVyUmVxdWVzdGVk KCkpLCBxLCBTTE9UKHRyaWdnZXJVcGRhdGUoKSkpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHJl bmRlckNvbnRyb2wsIFNJR05BTChzY2VuZUNoYW5nZWQoKSksIHEsIFNMT1QodHJpZ2dlclVwZGF0 ZSgpKSk7CisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKyAgICBRQWNjZXNzaWJs ZTo6aW5zdGFsbEZhY3RvcnkoJnFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRGYWN0b3J5KTsKKysjZW5k aWYKKyB9CisgCisgdm9pZCBRUXVpY2tXaWRnZXRQcml2YXRlOjplbnN1cmVFbmdpbmUoKSBjb25z dAorQEAgLTkwMSw5ICs5MTIsNyBAQCB2b2lkIFFRdWlja1dpZGdldFByaXZhdGU6OmNyZWF0ZUNv bnRleHQoKQorIAorICAgICAgICAgY29udGV4dCA9IG5ldyBRT3BlbkdMQ29udGV4dDsKKyAgICAg ICAgIGNvbnRleHQtPnNldEZvcm1hdChvZmZzY3JlZW5XaW5kb3ctPnJlcXVlc3RlZEZvcm1hdCgp KTsKKy0gICAgICAgIGNvbnN0IFFXaW5kb3cgKndpbiA9IHEtPndpbmRvdygpLT53aW5kb3dIYW5k bGUoKTsKKy0gICAgICAgIGlmICh3aW4gJiYgd2luLT5zY3JlZW4oKSkKKy0gICAgICAgICAgICBj b250ZXh0LT5zZXRTY3JlZW4od2luLT5zY3JlZW4oKSk7CisrICAgICAgICBjb250ZXh0LT5zZXRT Y3JlZW4ocS0+c2NyZWVuKCkpOworICAgICAgICAgUU9wZW5HTENvbnRleHQgKnNoYXJlQ29udGV4 dCA9IHF0X2dsX2dsb2JhbF9zaGFyZV9jb250ZXh0KCk7CisgICAgICAgICBpZiAoIXNoYXJlQ29u dGV4dCkKKyAgICAgICAgICAgICBzaGFyZUNvbnRleHQgPSBRV2lkZ2V0UHJpdmF0ZTo6Z2V0KHEt PndpbmRvdygpKS0+c2hhcmVDb250ZXh0KCk7CitAQCAtMTUyMCwxOSArMTUyOSwxNiBAQCBib29s IFFRdWlja1dpZGdldDo6ZXZlbnQoUUV2ZW50ICplKQorICAgICAgICAgZC0+aGFuZGxlV2luZG93 Q2hhbmdlKCk7CisgICAgICAgICBicmVhazsKKyAKKy0gICAgY2FzZSBRRXZlbnQ6OlNjcmVlbkNo YW5nZUludGVybmFsOgorLSAgICAgICAgaWYgKFFXaW5kb3cgKndpbmRvdyA9IHRoaXMtPndpbmRv dygpLT53aW5kb3dIYW5kbGUoKSkgeworLSAgICAgICAgICAgIFFTY3JlZW4gKm5ld1NjcmVlbiA9 IHdpbmRvdy0+c2NyZWVuKCk7CistCistICAgICAgICAgICAgaWYgKGQtPm9mZnNjcmVlbldpbmRv dykKKy0gICAgICAgICAgICAgICAgZC0+b2Zmc2NyZWVuV2luZG93LT5zZXRTY3JlZW4obmV3U2Ny ZWVuKTsKKy0gICAgICAgICAgICBpZiAoZC0+b2Zmc2NyZWVuU3VyZmFjZSkKKy0gICAgICAgICAg ICAgICAgZC0+b2Zmc2NyZWVuU3VyZmFjZS0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisrICAgIGNh c2UgUUV2ZW50OjpTY3JlZW5DaGFuZ2VJbnRlcm5hbDogeworKyAgICAgICAgUVNjcmVlbiAqbmV3 U2NyZWVuID0gc2NyZWVuKCk7CisrICAgICAgICBpZiAoZC0+b2Zmc2NyZWVuV2luZG93KQorKyAg ICAgICAgICAgIGQtPm9mZnNjcmVlbldpbmRvdy0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisrICAg ICAgICBpZiAoZC0+b2Zmc2NyZWVuU3VyZmFjZSkKKysgICAgICAgICAgICBkLT5vZmZzY3JlZW5T dXJmYWNlLT5zZXRTY3JlZW4obmV3U2NyZWVuKTsKKyAjaWYgUVRfQ09ORklHKG9wZW5nbCkKKy0g ICAgICAgICAgICBpZiAoZC0+Y29udGV4dCkKKy0gICAgICAgICAgICAgICAgZC0+Y29udGV4dC0+ c2V0U2NyZWVuKG5ld1NjcmVlbik7CisrICAgICAgICBpZiAoZC0+Y29udGV4dCkKKysgICAgICAg ICAgICBkLT5jb250ZXh0LT5zZXRTY3JlZW4obmV3U2NyZWVuKTsKKyAjZW5kaWYKKy0gICAgICAg IH0KKyAKKyAgICAgICAgIGlmIChkLT51c2VTb2Z0d2FyZVJlbmRlcmVyCisgI2lmIFFUX0NPTkZJ RyhvcGVuZ2wpCitAQCAtMTU0NSw3ICsxNTUxLDcgQEAgYm9vbCBRUXVpY2tXaWRnZXQ6OmV2ZW50 KFFFdmVudCAqZSkKKyAgICAgICAgICAgICBkLT5yZW5kZXIodHJ1ZSk7CisgICAgICAgICB9Cisg ICAgICAgICBicmVhazsKKy0KKysgICAgfQorICAgICBjYXNlIFFFdmVudDo6U2hvdzoKKyAgICAg Y2FzZSBRRXZlbnQ6Ok1vdmU6CisgICAgICAgICBkLT51cGRhdGVQb3NpdGlvbigpOworZGlmZiAt LWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXRfcC5oIGIv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldF9wLmgKK2luZGV4IDg4 MWY3ZjkyMjAuLjFhOTQ2YmNjNzEgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj a3dpZGdldHMvcXF1aWNrd2lkZ2V0X3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3 aWRnZXRzL3FxdWlja3dpZGdldF9wLmgKK0BAIC0xNDgsNiArMTQ4LDE0IEBAIHB1YmxpYzoKKyAg ICAgYm9vbCBmb3JjZUZ1bGxVcGRhdGU7CisgfTsKKyAKKytjbGFzcyBRUXVpY2tXaWRnZXRPZmZz Y3JlZW5XaW5kb3c6IHB1YmxpYyBRUXVpY2tXaW5kb3cKKyt7CisrICAgIFFfT0JKRUNUCisrCisr cHVibGljOgorKyAgICBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3coUVF1aWNrV2luZG93UHJp dmF0ZSAmZGQsIFFRdWlja1JlbmRlckNvbnRyb2wgKmNvbnRyb2wpOworK307CisrCisgUVRfRU5E X05BTUVTUEFDRQorIAorICNlbmRpZiAvLyBRUXVpY2tXaWRnZXRfUF9ICitkaWZmIC0tZ2l0IGEv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3F1aWNrd2lkZ2V0cy5wcm8gYi9xdGRlY2xh cmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXVpY2t3aWRnZXRzLnBybworaW5kZXggMjQzOGU1Nzdh ZS4uODVkMTU2YjhhMyAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0 cy9xdWlja3dpZGdldHMucHJvCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMv cXVpY2t3aWRnZXRzLnBybworQEAgLTcsOSArNywxMyBAQCBERUZJTkVTICAgKz0gUVRfTk9fVVJM X0NBU1RfRlJPTV9TVFJJTkcgUVRfTk9fSU5URUdFUl9FVkVOVF9DT09SRElOQVRFUyBRVF9OT19G TworIEhFQURFUlMgKz0gXAorICAgICBxcXVpY2t3aWRnZXQuaCBcCisgICAgIHFxdWlja3dpZGdl dF9wLmggXAorLSAgICBxdHF1aWNrd2lkZ2V0c2dsb2JhbC5oCisrICAgIHF0cXVpY2t3aWRnZXRz Z2xvYmFsLmggXAorKyAgICBxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaCBcCisrICAgIHFhY2Nl c3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaAorIAorIFNPVVJDRVMgKz0gXAorLSAgICBxcXVp Y2t3aWRnZXQuY3BwCisrICAgIHFxdWlja3dpZGdldC5jcHAgXAorKyAgICBxYWNjZXNzaWJsZXF1 aWNrd2lkZ2V0LmNwcCBcCisrICAgIHFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5LmNwcAor IAorIGxvYWQocXRfbW9kdWxlKQorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0 by9xbWwvcWpzZW5naW5lL3RzdF9xanNlbmdpbmUuY3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9h dXRvL3FtbC9xanNlbmdpbmUvdHN0X3Fqc2VuZ2luZS5jcHAKK2luZGV4IDNiN2Q3NGRmNjMuLmI3 NWJmODIwZDUgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fqc2Vu Z2luZS90c3RfcWpzZW5naW5lLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3Ft bC9xanNlbmdpbmUvdHN0X3Fqc2VuZ2luZS5jcHAKK0BAIC0xMDIsNiArMTAyLDcgQEAgcHJpdmF0 ZSBzbG90czoKKyAgICAgdm9pZCB2YWx1ZUNvbnZlcnNpb25fUmVndWxhckV4cHJlc3Npb24oKTsK KyAgICAgdm9pZCBjYXN0V2l0aE11bHRpcGxlSW5oZXJpdGFuY2UoKTsKKyAgICAgdm9pZCBjb2xs ZWN0R2FyYmFnZSgpOworKyAgICB2b2lkIGNvbGxlY3RHYXJiYWdlTmVzdGVkV3JhcHBlcnNUd29F bmdpbmVzKCk7CisgICAgIHZvaWQgZ2NXaXRoTmVzdGVkRGF0YVN0cnVjdHVyZSgpOworICAgICB2 b2lkIHN0YWNrdHJhY2UoKTsKKyAgICAgdm9pZCBudW1iZXJQYXJzaW5nX2RhdGEoKTsKK0BAIC0x ODA5LDYgKzE4MTAsNDQgQEAgdm9pZCB0c3RfUUpTRW5naW5lOjpjb2xsZWN0R2FyYmFnZSgpCisg ICAgIFFWRVJJRlkocHRyLmlzTnVsbCgpKTsKKyB9CisgCisrY2xhc3MgVGVzdE9iamVjdENvbnRh aW5lciA6IHB1YmxpYyBRT2JqZWN0CisreworKyAgICBRX09CSkVDVAorKyAgICBRX1BST1BFUlRZ KFFPYmplY3QgKmR1bW15IE1FTUJFUiBtX2R1bW15IENPTlNUQU5UKQorKworK3B1YmxpYzoKKysg ICAgVGVzdE9iamVjdENvbnRhaW5lcigpIDogbV9kdW1teShuZXcgUU9iamVjdCh0aGlzKSkge30K KysKKytwcml2YXRlOgorKyAgICBRT2JqZWN0ICptX2R1bW15OworK307CisrCisrdm9pZCB0c3Rf UUpTRW5naW5lOjpjb2xsZWN0R2FyYmFnZU5lc3RlZFdyYXBwZXJzVHdvRW5naW5lcygpCisrewor KyAgICBRSlNFbmdpbmUgZW5naW5lMTsKKysgICAgUUpTRW5naW5lIGVuZ2luZTI7CisrCisrICAg IFRlc3RPYmplY3RDb250YWluZXIgY29udGFpbmVyOworKyAgICBRUW1sRW5naW5lOjpzZXRPYmpl Y3RPd25lcnNoaXAoJmNvbnRhaW5lciwgUVFtbEVuZ2luZTo6Q3BwT3duZXJzaGlwKTsKKysKKysg ICAgZW5naW5lMS5nbG9iYWxPYmplY3QoKS5zZXRQcm9wZXJ0eSgiZm9vYmFyIiwgZW5naW5lMS5u ZXdRT2JqZWN0KCZjb250YWluZXIpKTsKKysgICAgZW5naW5lMi5nbG9iYWxPYmplY3QoKS5zZXRQ cm9wZXJ0eSgiZm9vYmFyIiwgZW5naW5lMi5uZXdRT2JqZWN0KCZjb250YWluZXIpKTsKKysKKysg ICAgZW5naW5lMS5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiA9IDQyIik7CisrICAgIGVuZ2lu ZTIuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXogPSA0MyIpOworKworKyAgICBRQ09NUEFSRShl bmdpbmUxLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6IikudG9JbnQoKSwgNDIpOworKyAgICBR Q09NUEFSRShlbmdpbmUyLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6IikudG9JbnQoKSwgNDMp OworKworKyAgICBlbmdpbmUxLmNvbGxlY3RHYXJiYWdlKCk7CisrICAgIGVuZ2luZTIuY29sbGVj dEdhcmJhZ2UoKTsKKysKKysgICAgLy8gVGhlIEdDIHNob3VsZCBub3QgY29sbGVjdCBkdW1teSBv YmplY3Qgd3JhcHBlcnMgbmVpdGhlciBpbiBlbmdpbmUxIG5vciBlbmdpbmUyLCB3ZQorKyAgICAv LyB2ZXJpZnkgdGhhdCBieSBjaGVja2luZyB3aGV0aGVyIHRoZSBiYXogcHJvcGVydHkgc3RpbGwg aGFzIGl0cyBwcmV2aW91cyB2YWx1ZS4KKysgICAgUUNPTVBBUkUoZW5naW5lMS5ldmFsdWF0ZSgi Zm9vYmFyLmR1bW15LmJheiIpLnRvSW50KCksIDQyKTsKKysgICAgUUNPTVBBUkUoZW5naW5lMi5l dmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiIpLnRvSW50KCksIDQzKTsKKyt9CisrCisgdm9pZCB0 c3RfUUpTRW5naW5lOjpnY1dpdGhOZXN0ZWREYXRhU3RydWN0dXJlKCkKKyB7CisgICAgIC8vIFRo ZSBHQyBtdXN0IGJlIGFibGUgdG8gdHJhdmVyc2UgZGVlcGx5IG5lc3RlZCBvYmplY3RzLCBvdGhl cndpc2UgdGhpcworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFt bGRlbGVnYXRlbW9kZWwvZGF0YS9yZWRyYXdVcG9uQ29sdW1uQ2hhbmdlLnFtbCBiL3F0ZGVjbGFy YXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvZGF0YS9yZWRyYXdVcG9uQ29s dW1uQ2hhbmdlLnFtbAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjIw NjEzM2JiMzkKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9x bWwvcXFtbGRlbGVnYXRlbW9kZWwvZGF0YS9yZWRyYXdVcG9uQ29sdW1uQ2hhbmdlLnFtbAorQEAg LTAsMCArMSwxMSBAQAorK2ltcG9ydCBRdFF1aWNrIDIuOAorKworK0xpc3RWaWV3IHsKKysgICAg aWQ6IHJvb3QKKysgICAgd2lkdGg6IDIwMAorKyAgICBoZWlnaHQ6IDIwMAorKworKyAgICBkZWxl Z2F0ZTogVGV4dCB7CisrICAgICAgICB0ZXh0OiBkaXNwbGF5CisrICAgIH0KKyt9CitkaWZmIC0t Z2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC90c3Rf cXFtbGRlbGVnYXRlbW9kZWwuY3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1s ZGVsZWdhdGVtb2RlbC90c3RfcXFtbGRlbGVnYXRlbW9kZWwuY3BwCitpbmRleCAzNWYxZTJjOTRk Li4xNzIyNDQ3ODMwIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9x cW1sZGVsZWdhdGVtb2RlbC90c3RfcXFtbGRlbGVnYXRlbW9kZWwuY3BwCisrKysgYi9xdGRlY2xh cmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVt b2RlbC5jcHAKK0BAIC0yNyw2ICsyNyw4IEBACisgKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAKKyAj aW5jbHVkZSA8UXRUZXN0L3F0ZXN0Lmg+CisrI2luY2x1ZGUgPFF0Q29yZS9RQ29uY2F0ZW5hdGVU YWJsZXNQcm94eU1vZGVsPgorKyNpbmNsdWRlIDxRdEd1aS9RU3RhbmRhcmRJdGVtTW9kZWw+Cisg I2luY2x1ZGUgPFF0UW1sL3FxbWxjb21wb25lbnQuaD4KKyAjaW5jbHVkZSA8UXRRbWxNb2RlbHMv cHJpdmF0ZS9xcW1sZGVsZWdhdGVtb2RlbF9wLmg+CisgI2luY2x1ZGUgPFF0UXVpY2svcXF1aWNr dmlldy5oPgorQEAgLTQ3LDYgKzQ5LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBmaWx0 ZXJPbkdyb3VwX3JlbW92ZVdoZW5Db21wbGV0ZWQoKTsKKyAgICAgdm9pZCBxdGJ1Z184NjAxNygp OworICAgICB2b2lkIGNvbnRleHRBY2Nlc3NlZEJ5SGFuZGxlcigpOworKyAgICB2b2lkIHJlZHJh d1Vwb25Db2x1bW5DaGFuZ2UoKTsKKyB9OworIAorIGNsYXNzIEFic3RyYWN0SXRlbU1vZGVsIDog cHVibGljIFFBYnN0cmFjdEl0ZW1Nb2RlbAorQEAgLTE4Niw2ICsxODksMzAgQEAgdm9pZCB0c3Rf UVFtbERlbGVnYXRlTW9kZWw6OmNvbnRleHRBY2Nlc3NlZEJ5SGFuZGxlcigpCisgICAgIFFWRVJJ Rlkocm9vdC0+cHJvcGVydHkoIndvcmtzIikudG9Cb29sKCkpOworIH0KKyAKKyt2b2lkIHRzdF9R UW1sRGVsZWdhdGVNb2RlbDo6cmVkcmF3VXBvbkNvbHVtbkNoYW5nZSgpCisreworKyAgICBRU3Rh bmRhcmRJdGVtTW9kZWwgbTE7CisrICAgIG0xLmFwcGVuZFJvdyh7CisrICAgICAgICAgICAgbmV3 IFFTdGFuZGFyZEl0ZW0oIkJhbmFuYSIpLAorKyAgICAgICAgICAgIG5ldyBRU3RhbmRhcmRJdGVt KCJDb2NvbnV0IiksCisrICAgIH0pOworKworKyAgICBRUXVpY2tWaWV3IHZpZXcodGVzdEZpbGVV cmwoInJlZHJhd1Vwb25Db2x1bW5DaGFuZ2UucW1sIikpOworKyAgICBRQ09NUEFSRSh2aWV3LnN0 YXR1cygpLCBRUXVpY2tWaWV3OjpSZWFkeSk7CisrICAgIHZpZXcuc2hvdygpOworKyAgICBRUXVp Y2tJdGVtICpyb290ID0gdmlldy5yb290T2JqZWN0KCk7CisrICAgIHJvb3QtPnNldFByb3BlcnR5 KCJtb2RlbCIsIFFWYXJpYW50Ojpmcm9tVmFsdWU8UU9iamVjdCAqPigmbTEpKTsKKysKKysgICAg UU9iamVjdCAqaXRlbSA9IHJvb3QtPnByb3BlcnR5KCJjdXJyZW50SXRlbSIpLnZhbHVlPFFPYmpl Y3QgKj4oKTsKKysgICAgUVZFUklGWShpdGVtKTsKKysgICAgUUNPTVBBUkUoaXRlbS0+cHJvcGVy dHkoInRleHQiKS50b1N0cmluZygpLCAiQmFuYW5hIik7CisrCisrICAgIFFWRVJJRlkocm9vdCk7 CisrICAgIG0xLnJlbW92ZUNvbHVtbigwKTsKKysKKysgICAgUUNPTVBBUkUoaXRlbS0+cHJvcGVy dHkoInRleHQiKS50b1N0cmluZygpLCAiQ29jb251dCIpOworK30KKysKKyBRVEVTVF9NQUlOKHRz dF9RUW1sRGVsZWdhdGVNb2RlbCkKKyAKKyAjaW5jbHVkZSAidHN0X3FxbWxkZWxlZ2F0ZW1vZGVs Lm1vYyIKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3F2NG1tL3Rz dF9xdjRtbS5jcHAgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3F2NG1tL3RzdF9xdjRt bS5jcHAKK2luZGV4IDVkNjM1YWE2M2IuLjgyNGZkODllNWIgMTAwNjQ0CistLS0gYS9xdGRlY2xh cmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3F2NG1tL3RzdF9xdjRtbS5jcHAKKysrKyBiL3F0ZGVjbGFy YXRpdmUvdGVzdHMvYXV0by9xbWwvcXY0bW0vdHN0X3F2NG1tLmNwcAorQEAgLTc2LDEwICs3Niwx MCBAQCB2b2lkIHRzdF9xdjRtbTo6bXVsdGlXcmFwcGVkUU9iamVjdHMoKQorICAgICAgICAgUUNP TVBBUkUoZW5naW5lMS5tZW1vcnlNYW5hZ2VyLT5tX3BlbmRpbmdGcmVlZE9iamVjdFdyYXBwZXJW YWx1ZS5zaXplKCksIDEpOworICAgICAgICAgUUNPTVBBUkUoZW5naW5lMi5tZW1vcnlNYW5hZ2Vy LT5tX3BlbmRpbmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1ZS5zaXplKCksIDApOworIAorLSAgICAg ICAgLy8gTW92ZXMgdGhlIGFkZGl0aW9uYWwgV2Vha1ZhbHVlIGZyb20gbV9tdWx0aXBseVdyYXBw ZWRRT2JqZWN0cyB0bworLSAgICAgICAgLy8gbV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFs dWUuIEl0J3Mgc3RpbGwgYWxpdmUgYWZ0ZXIgYWxsLgorKyAgICAgICAgLy8gVGhlIGFkZGl0aW9u YWwgV2Vha1ZhbHVlIGZyb20gbV9tdWx0aXBseVdyYXBwZWRRT2JqZWN0cyBoYXNuJ3QgYmVlbiBt b3ZlZAorKyAgICAgICAgLy8gdG8gbV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUgeWV0 LiBJdCdzIHN0aWxsIGFsaXZlIGFmdGVyIGFsbC4KKyAgICAgICAgIGVuZ2luZTEubWVtb3J5TWFu YWdlci0+cnVuR0MoKTsKKy0gICAgICAgIFFDT01QQVJFKGVuZ2luZTEubWVtb3J5TWFuYWdlci0+ bV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuc2l6ZSgpLCAyKTsKKysgICAgICAgIFFD T01QQVJFKGVuZ2luZTEubWVtb3J5TWFuYWdlci0+bV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVy VmFsdWUuc2l6ZSgpLCAxKTsKKyAKKyAgICAgICAgIC8vIGVuZ2luZTIgZG9lc24ndCBvd24gdGhl IG9iamVjdCBhcyBlbmdpbmUxIHdhcyB0aGUgZmlyc3QgdG8gd3JhcCBpdCBhYm92ZS4KKyAgICAg ICAgIC8vIFRoZXJlZm9yZSwgbm8gZWZmZWN0IGhlcmUuCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJh dGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL2RhdGEvYWN0aXZlRm9jdXNPblRhYl9p bmZpbml0ZUxvb3AzLnFtbCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tp dGVtMi9kYXRhL2FjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wMy5xbWwKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi44ODllNDgwZjNiCistLS0gL2Rldi9udWxsCisr KysgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvZGF0YS9hY3Rp dmVGb2N1c09uVGFiX2luZmluaXRlTG9vcDMucW1sCitAQCAtMCwwICsxLDEzIEBACisraW1wb3J0 IFF0UXVpY2sgMi42CisrCisrSXRlbSB7CisrICAgIHZpc2libGU6IHRydWUKKysgICAgSXRlbSB7 CisrICAgICAgICB2aXNpYmxlOiBmYWxzZQorKyAgICAgICAgSXRlbSB7CisrICAgICAgICAgICAg b2JqZWN0TmFtZTogImhpZGRlbkNoaWxkIgorKyAgICAgICAgICAgIGFjdGl2ZUZvY3VzT25UYWI6 IHRydWUKKysgICAgICAgICAgICBmb2N1czogdHJ1ZQorKyAgICAgICAgfQorKyAgICB9CisrfQor ZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi90 c3RfcXF1aWNraXRlbS5jcHAgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNr aXRlbTIvdHN0X3FxdWlja2l0ZW0uY3BwCitpbmRleCBjOGYyNTFkYmUxLi5jOGVmMzZlZTY4IDEw MDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL3Rz dF9xcXVpY2tpdGVtLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3Fx dWlja2l0ZW0yL3RzdF9xcXVpY2tpdGVtLmNwcAorQEAgLTY3LDYgKzY3LDcgQEAgcHJpdmF0ZSBz bG90czoKKyAgICAgdm9pZCBhY3RpdmVGb2N1c09uVGFiMTAoKTsKKyAgICAgdm9pZCBhY3RpdmVG b2N1c09uVGFiX2luZmluaXRlTG9vcF9kYXRhKCk7CisgICAgIHZvaWQgYWN0aXZlRm9jdXNPblRh Yl9pbmZpbml0ZUxvb3AoKTsKKysgICAgdm9pZCBhY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9v cENvbnRyb2xzKCk7CisgCisgICAgIHZvaWQgbmV4dEl0ZW1JbkZvY3VzQ2hhaW4oKTsKKyAgICAg dm9pZCBuZXh0SXRlbUluRm9jdXNDaGFpbjIoKTsKK0BAIC0xMDU3LDYgKzEwNTgsMTcgQEAgdm9p ZCB0c3RfUVF1aWNrSXRlbTo6YWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AoKQorICAgICBR Q09NUEFSRShpdGVtLCB3aW5kb3ctPnJvb3RPYmplY3QoKSk7CisgfQorIAorKworK3ZvaWQgdHN0 X1FRdWlja0l0ZW06OmFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wQ29udHJvbHMoKQorK3sK KysgICAgYXV0byBzb3VyY2UgPSB0ZXN0RmlsZVVybCgiYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0 ZUxvb3AzLnFtbCIpOworKyAgICBRU2NvcGVkUG9pbnRlcjxRUXVpY2tWaWV3PndpbmRvdyhuZXcg UVF1aWNrVmlldygpKTsKKysgICAgd2luZG93LT5zZXRTb3VyY2Uoc291cmNlKTsKKysgICAgd2lu ZG93LT5zaG93KCk7CisrICAgIFFWRVJJRlkod2luZG93LT5lcnJvcnMoKS5pc0VtcHR5KCkpOwor KyAgICBRVGVzdDo6a2V5Q2xpY2sod2luZG93LmdldCgpLCBRdDo6S2V5X1RhYik7IC8vIHNob3Vs ZCBub3QgaGFuZworK30KKysKKyB2b2lkIHRzdF9RUXVpY2tJdGVtOjpuZXh0SXRlbUluRm9jdXND aGFpbigpCisgeworICAgICBpZiAoIXF0X3RhYl9hbGxfd2lkZ2V0cygpKQorU3VibW9kdWxlIHF0 ZG9jIGMwYzdiZjA3Li4uNzlkNmVmNjk6CitTdWJtb2R1bGUgcXRpbWFnZWZvcm1hdHMgMmRjZjI4 OTkuLmFiZTQ0YzBmOgorZGlmZiAtLWdpdCBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2lt YWdlZm9ybWF0cy9pY25zL3FpY25zaGFuZGxlci5jcHAgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1 Z2lucy9pbWFnZWZvcm1hdHMvaWNucy9xaWNuc2hhbmRsZXIuY3BwCitpbmRleCBkZGU3ODNjLi4x YmY5MDc0IDEwMDY0NAorLS0tIGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3Jt YXRzL2ljbnMvcWljbnNoYW5kbGVyLmNwcAorKysrIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdp bnMvaW1hZ2Vmb3JtYXRzL2ljbnMvcWljbnNoYW5kbGVyLmNwcAorQEAgLTQ2Miw4ICs0NjIsMTIg QEAgc3RhdGljIGJvb2wgcGFyc2VJY29uRW50cnlJbmZvKElDTlNFbnRyeSAmaWNvbikKKyAgICAg aWYgKGlzSWNvbkNvbXByZXNzZWQoaWNvbikpCisgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg Ly8gSWNvbiBkZXB0aDoKKy0gICAgaWYgKCFkZXB0aC5pc0VtcHR5KCkpCistICAgICAgICBpY29u LmRlcHRoID0gSUNOU0VudHJ5OjpEZXB0aChkZXB0aC50b1VJbnQoKSk7CisrICAgIGlmICghZGVw dGguaXNFbXB0eSgpKSB7CisrICAgICAgICBjb25zdCB1aW50IGRlcHRoVUludCA9IGRlcHRoLnRv VUludCgpOworKyAgICAgICAgaWYgKGRlcHRoVUludCA+IDMyKQorKyAgICAgICAgICAgIHJldHVy biBmYWxzZTsKKysgICAgICAgIGljb24uZGVwdGggPSBJQ05TRW50cnk6OkRlcHRoKGRlcHRoVUlu dCk7CisrICAgIH0KKyAgICAgLy8gVHJ5IG1vbm8gaWYgZGVwdGggbm90IGZvdW5kCisgICAgIGlm IChpY29uLmRlcHRoID09IElDTlNFbnRyeTo6RGVwdGhVbmtub3duKQorICAgICAgICAgaWNvbi5k ZXB0aCA9IElDTlNFbnRyeTo6RGVwdGhNb25vOworQEAgLTUxNSw2ICs1MTksOSBAQCBzdGF0aWMg Ym9vbCBwYXJzZUljb25FbnRyeUluZm8oSUNOU0VudHJ5ICZpY29uKQorICAgICAgICAgfQorICAg ICAgICAgaWNvbi5oZWlnaHQgPSBpY29uLndpZHRoOworICAgICB9CisrICAgIC8vIFNhbml0eSBj aGVjaworKyAgICBpZiAoaWNvbi53aWR0aCA9PSAwIHx8IGljb24ud2lkdGggPiA0MDk2KQorKyAg ICAgICAgcmV0dXJuIGZhbHNlOworICAgICByZXR1cm4gdHJ1ZTsKKyB9CisgCitAQCAtNjg1LDcg KzY5Miw3IEBAIGJvb2wgUUlDTlNIYW5kbGVyOjpjYW5SZWFkKCkgY29uc3QKKyBib29sIFFJQ05T SGFuZGxlcjo6cmVhZChRSW1hZ2UgKm91dEltYWdlKQorIHsKKyAgICAgUUltYWdlIGltZzsKKy0g ICAgaWYgKCFlbnN1cmVTY2FubmVkKCkpIHsKKysgICAgaWYgKCFlbnN1cmVTY2FubmVkKCkgfHwg bV9jdXJyZW50SWNvbkluZGV4ID49IG1faWNvbnMuc2l6ZSgpKSB7CisgICAgICAgICBxV2Fybmlu ZygiUUlDTlNIYW5kbGVyOjpyZWFkKCk6IFRoZSBkZXZpY2Ugd2Fzbid0IHBhcnNlZCBwcm9wZXJs eSEiKTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorQEAgLTg5Miw3ICs4OTksNyBA QCBib29sIFFJQ05TSGFuZGxlcjo6c2NhbkRldmljZSgpCisgICAgICAgICAgICAgcmV0dXJuIGZh bHNlOworIAorICAgICAgICAgY29uc3QgcWludDY0IGJsb2NrRGF0YU9mZnNldCA9IGRldmljZSgp LT5wb3MoKTsKKy0gICAgICAgIGlmICghaXNCbG9ja0hlYWRlclZhbGlkKGJsb2NrSGVhZGVyKSkg eworKyAgICAgICAgaWYgKCFpc0Jsb2NrSGVhZGVyVmFsaWQoYmxvY2tIZWFkZXIsIElDTlNCbG9j a0hlYWRlclNpemUgKyBmaWxlbGVuZ3RoIC0gYmxvY2tEYXRhT2Zmc2V0KSkgeworICAgICAgICAg ICAgIHFXYXJuaW5nKCJRSUNOU0hhbmRsZXI6OnNjYW5EZXZpY2UoKTogRmFpbGVkLCBiYWQgaGVh ZGVyIGF0IHBvcyAlcy4gT1NUeXBlIFwiJXNcIiwgbGVuZ3RoICV1IiwKKyAgICAgICAgICAgICAg ICAgICAgICBRQnl0ZUFycmF5OjpudW1iZXIoYmxvY2tEYXRhT2Zmc2V0KS5jb25zdERhdGEoKSwK KyAgICAgICAgICAgICAgICAgICAgICBuYW1lRnJvbU9TVHlwZShibG9ja0hlYWRlci5vc3R5cGUp LmNvbnN0RGF0YSgpLCBibG9ja0hlYWRlci5sZW5ndGgpOworQEAgLTkyNywxMSArOTM0LDE0IEBA IGJvb2wgUUlDTlNIYW5kbGVyOjpzY2FuRGV2aWNlKCkKKyAgICAgICAgIGNhc2UgSUNOU0Jsb2Nr SGVhZGVyOjpUeXBlT2RycDoKKyAgICAgICAgICAgICAvLyBJY25zIGNvbnRhaW5lciBzZWVtcyB0 byBoYXZlIGFuIGVtYmVkZGVkIGljb24gdmFyaWFudCBjb250YWluZXIKKyAgICAgICAgICAgICAv LyBMZXQncyBzdGFydCBhIHNjYW4gZm9yIGVudHJpZXMKKy0gICAgICAgICAgICB3aGlsZSAoZGV2 aWNlKCktPnBvcygpIDwgbmV4dEJsb2NrT2Zmc2V0KSB7CisrICAgICAgICAgICAgd2hpbGUgKCFz dHJlYW0uYXRFbmQoKSAmJiBkZXZpY2UoKS0+cG9zKCkgPCBuZXh0QmxvY2tPZmZzZXQpIHsKKyAg ICAgICAgICAgICAgICAgSUNOU0Jsb2NrSGVhZGVyIGljb247CisgICAgICAgICAgICAgICAgIHN0 cmVhbSA+PiBpY29uOworKyAgICAgICAgICAgICAgICBpZiAoc3RyZWFtLnN0YXR1cygpICE9IFFE YXRhU3RyZWFtOjpPaykKKysgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGluY29ycmVjdCB2YXJpYW50IGVudHJ5IGhlYWRlciBh bmQgc3RvcCBzY2FuCistICAgICAgICAgICAgICAgIGlmICghaXNCbG9ja0hlYWRlclZhbGlkKGlj b24sIGJsb2NrRGF0YUxlbmd0aCkpCisrICAgICAgICAgICAgICAgIHF1aW50NjQgcmVtYWluaW5n ID0gYmxvY2tEYXRhTGVuZ3RoIC0gKGRldmljZSgpLT5wb3MoKSAtIGJsb2NrRGF0YU9mZnNldCk7 CisrICAgICAgICAgICAgICAgIGlmICghaXNCbG9ja0hlYWRlclZhbGlkKGljb24sIElDTlNCbG9j a0hlYWRlclNpemUgKyByZW1haW5pbmcpKQorICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgICAgICAgICAgIGlmICghYWRkRW50cnkoaWNvbiwgZGV2aWNlKCktPnBvcygpLCBibG9j a0hlYWRlci5vc3R5cGUpKQorICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworQEAg LTEwMDMsNyArMTAxMyw3IEBAIGJvb2wgUUlDTlNIYW5kbGVyOjpzY2FuRGV2aWNlKCkKKyAgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgIH0KKyAgICAgfQorLSAgICByZXR1cm4gdHJ1ZTsKKysg ICAgcmV0dXJuIChtX2ljb25zLnNpemUoKSA+IDApOworIH0KKyAKKyBjb25zdCBJQ05TRW50cnkg JlFJQ05TSGFuZGxlcjo6Z2V0SWNvbk1hc2soY29uc3QgSUNOU0VudHJ5ICZpY29uKSBjb25zdAor ZGlmZiAtLWdpdCBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9qcDIv cWpwMmhhbmRsZXIuY3BwIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRz L2pwMi9xanAyaGFuZGxlci5jcHAKK2luZGV4IDUwODIwMjMuLmNiMzQzNzQgMTAwNjQ0CistLS0g YS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvanAyL3FqcDJoYW5kbGVy LmNwcAorKysrIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2pwMi9x anAyaGFuZGxlci5jcHAKK0BAIC00Myw2ICs0Myw3IEBACisgI2luY2x1ZGUgInFpbWFnZS5oIgor ICNpbmNsdWRlICJxdmFyaWFudC5oIgorICNpbmNsdWRlICJxY29sb3IuaCIKKysjaW5jbHVkZSAi cWltYWdlcmVhZGVyLmgiCisgCisgI2luY2x1ZGUgPGphc3Blci9qYXNwZXIuaD4KKyAjaW5jbHVk ZSA8bWF0aC5oPiAvLyBmb3IgcG93CitAQCAtMzMzLDE2ICszMzQsNDYgQEAgcHJpdmF0ZToKKyBK cGVnMjAwMEphc3BlclJlYWRlcjo6SnBlZzIwMDBKYXNwZXJSZWFkZXIoUUlPRGV2aWNlICppb2Qs IFN1YkZvcm1hdCBmb3JtYXQpCisgICAgIDogamFzcGVyT2sodHJ1ZSksIGlvRGV2aWNlKGlvZCks IGZvcm1hdChmb3JtYXQpLCBoYXNBbHBoYShmYWxzZSkKKyB7CisrI2lmIEpBU19WRVJTSU9OX01B Sk9SIDwgMworICAgICBpZiAoamFzX2luaXQoKSkgeworICAgICAgICAgamFzcGVyT2sgPSBmYWxz ZTsKKyAgICAgICAgIHFEZWJ1ZygiSmFzcGVyIExpYnJhcnkgaW5pdGlhbGl6YXRpb24gZmFpbGVk Iik7CisgICAgIH0KKysjZWxzZQorKyAgICBqYXNfY29uZl9jbGVhcigpOworKyNpZiBRVF9WRVJT SU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNiwgMCwgMCkKKysgICAgamFzX2NvbmZfc2V0X21heF9t ZW1fdXNhZ2UoUUltYWdlUmVhZGVyOjphbGxvY2F0aW9uTGltaXQoKSAqIDEwMjQgKiAxMDI0KTsK KysjZWxzZQorKyAgICAvLyAxMjhNQiBzZWVtcyB0byBiZSBlbm91Z2guCisrICAgIGphc19jb25m X3NldF9tYXhfbWVtX3VzYWdlKDEyOCAqIDEwMjQgKiAxMDI0KTsKKysjZW5kaWYKKysgICAgaWYg KGphc19pbml0X2xpYnJhcnkoKSkgeworKyAgICAgICAgamFzcGVyT2sgPSBmYWxzZTsKKysgICAg ICAgIHFEZWJ1ZygiSmFzcGVyIGxpYnJhcnkgaW5pdGlhbGl6YXRpb24gZmFpbGVkIik7CisrICAg IH0KKysgICAgaWYgKGphc19pbml0X3RocmVhZCgpKSB7CisrICAgICAgICBqYXNfY2xlYW51cF9s aWJyYXJ5KCk7CisrICAgICAgICBqYXNwZXJPayA9IGZhbHNlOworKyAgICAgICAgcURlYnVnKCJK YXNwZXIgdGhyZWFkIGluaXRpYWxpemF0aW9uIGZhaWxlZCIpOworKyAgICB9CisrI2VuZGlmCisg fQorIAorIEpwZWcyMDAwSmFzcGVyUmVhZGVyOjp+SnBlZzIwMDBKYXNwZXJSZWFkZXIoKQorIHsK KysjaWYgSkFTX1ZFUlNJT05fTUFKT1IgPCAzCisgICAgIGlmIChqYXNwZXJPaykKKyAgICAgICAg IGphc19jbGVhbnVwKCk7CisrI2Vsc2UKKysgICAgaWYgKGphc3Blck9rKSB7CisrICAgICAgICBp ZiAoamFzX2NsZWFudXBfdGhyZWFkKCkpIHsKKysgICAgICAgICAgICBxRGVidWcoIkphc3BlciB0 aHJlYWQgY2xlYW51cCBmYWlsZWQiKTsKKysgICAgICAgIH0KKysgICAgICAgIGlmIChqYXNfY2xl YW51cF9saWJyYXJ5KCkpIHsKKysgICAgICAgICAgICBxRGVidWcoIkphc3BlciBsaWJyYXJ5IGNs ZWFudXAgZmFpbGVkIik7CisrICAgICAgICB9CisrICAgIH0KKysjZW5kaWYKKyB9CisgCisgLyoh IFxpbnRlcm5hbAorQEAgLTg1Nyw3ICs4ODgsNyBAQCBib29sIEpwZWcyMDAwSmFzcGVyUmVhZGVy Ojp3cml0ZShjb25zdCBRSW1hZ2UgJmltYWdlLCBpbnQgcXVhbGl0eSkKKyAgICAgfQorIAorICAg ICAvLyBPcGVuIGFuIGVtcHR5IGphc3BlciBzdHJlYW0gdGhhdCBncm93cyBhdXRvbWF0aWNhbGx5 CistICAgIGphc19zdHJlYW1fdCAqIG1lbW9yeV9zdHJlYW0gPSBqYXNfc3RyZWFtX21lbW9wZW4o MCwgLTEpOworKyAgICBqYXNfc3RyZWFtX3QgKiBtZW1vcnlfc3RyZWFtID0gamFzX3N0cmVhbV9t ZW1vcGVuKDAsIDApOworIAorICAgICAvLyBKYXNwZXIgd2FudHMgYSBub24tY29uc3Qgc3RyaW5n LgorICAgICBjaGFyICpzdHIgPSBxc3RyZHVwKGphc3BlckZvcm1hdFN0cmluZy50b0xhdGluMSgp LmNvbnN0RGF0YSgpKTsKK2RpZmYgLS1naXQgYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9p bWFnZWZvcm1hdHMvdGlmZi9xdGlmZmhhbmRsZXIuY3BwIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3Bs dWdpbnMvaW1hZ2Vmb3JtYXRzL3RpZmYvcXRpZmZoYW5kbGVyLmNwcAoraW5kZXggMTM4Njc1MC4u YWM4OTU2YyAxMDA2NDQKKy0tLSBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9y bWF0cy90aWZmL3F0aWZmaGFuZGxlci5jcHAKKysrKyBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVn aW5zL2ltYWdlZm9ybWF0cy90aWZmL3F0aWZmaGFuZGxlci5jcHAKK0BAIC0zNjEsNiArMzYxLDgg QEAgYm9vbCBRVGlmZkhhbmRsZXI6OnJlYWQoUUltYWdlICppbWFnZSkKKyAgICAgfQorIAorICAg ICBUSUZGICpjb25zdCB0aWZmID0gZC0+dGlmZjsKKysgICAgaWYgKFRJRkZJc1RpbGVkKHRpZmYp ICYmIFRJRkZUaWxlU2l6ZTY0KHRpZmYpID4gdWludDY0X3QoaW1hZ2UtPnNpemVJbkJ5dGVzKCkp KSAvLyBDb3JydXB0IGltYWdlCisrICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIGNvbnN0IHF1 aW50MzIgd2lkdGggPSBkLT5zaXplLndpZHRoKCk7CisgICAgIGNvbnN0IHF1aW50MzIgaGVpZ2h0 ID0gZC0+c2l6ZS5oZWlnaHQoKTsKKyAKK2RpZmYgLS1naXQgYS9xdGltYWdlZm9ybWF0cy9zcmMv cGx1Z2lucy9pbWFnZWZvcm1hdHMvd2VicC9xd2VicGhhbmRsZXIuY3BwIGIvcXRpbWFnZWZvcm1h dHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3dlYnAvcXdlYnBoYW5kbGVyLmNwcAoraW5kZXgg ODJkMzhjYi4uZDAyZWIwNSAxMDA2NDQKKy0tLSBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5z L2ltYWdlZm9ybWF0cy93ZWJwL3F3ZWJwaGFuZGxlci5jcHAKKysrKyBiL3F0aW1hZ2Vmb3JtYXRz L3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy93ZWJwL3F3ZWJwaGFuZGxlci5jcHAKK0BAIC00NSw2 ICs0NSw3IEBACisgI2luY2x1ZGUgPHFkZWJ1Zy5oPgorICNpbmNsdWRlIDxxcGFpbnRlci5oPgor ICNpbmNsdWRlIDxxdmFyaWFudC5oPgorKyNpbmNsdWRlIDxRdEVuZGlhbj4KKyAKKyBzdGF0aWMg Y29uc3QgaW50IHJpZmZIZWFkZXJTaXplID0gMTI7IC8vIFJJRkZfSEVBREVSX1NJWkUgZnJvbSB3 ZWJwL2Zvcm1hdF9jb25zdGFudHMuaAorIAorQEAgLTEwMiwyMSArMTAzLDIzIEBAIGJvb2wgUVdl YnBIYW5kbGVyOjplbnN1cmVTY2FubmVkKCkgY29uc3QKKyAKKyAgICAgbV9zY2FuU3RhdGUgPSBT Y2FuRXJyb3I7CisgCistICAgIGlmIChkZXZpY2UoKS0+aXNTZXF1ZW50aWFsKCkpIHsKKy0gICAg ICAgIHFXYXJuaW5nKCkgPDwgIlNlcXVlbnRpYWwgZGV2aWNlcyBhcmUgbm90IHN1cHBvcnRlZCI7 CisrICAgIFFXZWJwSGFuZGxlciAqdGhhdCA9IGNvbnN0X2Nhc3Q8UVdlYnBIYW5kbGVyICo+KHRo aXMpOworKyAgICBjb25zdCBpbnQgaGVhZGVyQnl0ZXNOZWVkZWQgPSBzaXplb2YoV2ViUEJpdHN0 cmVhbUZlYXR1cmVzKTsKKysgICAgUUJ5dGVBcnJheSBoZWFkZXIgPSBkZXZpY2UoKS0+cGVlayho ZWFkZXJCeXRlc05lZWRlZCk7CisrICAgIGlmIChoZWFkZXIuc2l6ZSgpIDwgaGVhZGVyQnl0ZXNO ZWVkZWQpCisgICAgICAgICByZXR1cm4gZmFsc2U7CistICAgIH0KKyAKKy0gICAgcWludDY0IG9s ZFBvcyA9IGRldmljZSgpLT5wb3MoKTsKKy0gICAgZGV2aWNlKCktPnNlZWsoMCk7CistCistICAg IFFXZWJwSGFuZGxlciAqdGhhdCA9IGNvbnN0X2Nhc3Q8UVdlYnBIYW5kbGVyICo+KHRoaXMpOwor LSAgICBRQnl0ZUFycmF5IGhlYWRlciA9IGRldmljZSgpLT5wZWVrKHNpemVvZihXZWJQQml0c3Ry ZWFtRmVhdHVyZXMpKTsKKysgICAgLy8gV2UgZG8gbm8gcmFuZG9tIGFjY2VzcyBkdXJpbmcgZGVj b2RpbmcsIGp1c3QgYSByZWFkQWxsKCkgb2YgdGhlIHdob2xlIGltYWdlIGZpbGUuIFNvIGlmCisr ICAgIC8vIGlmIGl0IGlzIGFsbCBhdmFpbGFibGUgYWxyZWFkeSwgd2UgY2FuIGFjY2VwdCBhIHNl cXVlbnRpYWwgZGV2aWNlLiBUaGUgcmlmZiBoZWFkZXIgY29udGFpbnMKKysgICAgLy8gdGhlIGZp bGUgc2l6ZSBtaW51cyA4IGJ5dGVzIGhlYWRlcgorKyAgICBxaW50NjQgYnl0ZVNpemUgPSBxRnJv bUxpdHRsZUVuZGlhbjxxdWludDMyPihoZWFkZXIuY29uc3REYXRhKCkgKyA0KTsKKysgICAgaWYg KGRldmljZSgpLT5pc1NlcXVlbnRpYWwoKSAmJiBkZXZpY2UoKS0+Ynl0ZXNBdmFpbGFibGUoKSA8 IGJ5dGVTaXplICsgOCkgeworKyAgICAgICAgcVdhcm5pbmcoKSA8PCAiUVdlYnBIYW5kbGVyOiBJ bnN1ZmZpY2llbnQgZGF0YSBhdmFpbGFibGUgaW4gc2VxdWVudGlhbCBkZXZpY2UiOworKyAgICAg ICAgcmV0dXJuIGZhbHNlOworKyAgICB9CisgICAgIGlmIChXZWJQR2V0RmVhdHVyZXMoKGNvbnN0 IHVpbnQ4X3QqKWhlYWRlci5jb25zdERhdGEoKSwgaGVhZGVyLnNpemUoKSwgJih0aGF0LT5tX2Zl YXR1cmVzKSkgPT0gVlA4X1NUQVRVU19PSykgeworICAgICAgICAgaWYgKG1fZmVhdHVyZXMuaGFz X2FuaW1hdGlvbikgeworICAgICAgICAgICAgIC8vIEZvciBhbmltYXRpb24sIHdlIGhhdmUgdG8g cmVhZCBhbmQgc2NhbiB3aG9sZSBmaWxlIHRvIGRldGVybWluZSBsb29wIGNvdW50IGFuZCBpbWFn ZXMgY291bnQKKy0gICAgICAgICAgICBkZXZpY2UoKS0+c2VlayhvbGRQb3MpOworLQorICAgICAg ICAgICAgIGlmICh0aGF0LT5lbnN1cmVEZW11eGVyKCkpIHsKKyAgICAgICAgICAgICAgICAgdGhh dC0+bV9sb29wID0gV2ViUERlbXV4R2V0SShtX2RlbXV4ZXIsIFdFQlBfRkZfTE9PUF9DT1VOVCk7 CisgICAgICAgICAgICAgICAgIHRoYXQtPm1fZnJhbWVDb3VudCA9IFdlYlBEZW11eEdldEkobV9k ZW11eGVyLCBXRUJQX0ZGX0ZSQU1FX0NPVU5UKTsKK0BAIC0xMjYsMTcgKzEyOSwxMyBAQCBib29s IFFXZWJwSGFuZGxlcjo6ZW5zdXJlU2Nhbm5lZCgpIGNvbnN0CisgICAgICAgICAgICAgICAgIGlm ICh0aGF0LT5tX2ZlYXR1cmVzLmhhc19hbHBoYSkKKyAgICAgICAgICAgICAgICAgICAgIHRoYXQt Pm1fY29tcG9zaXRlZC0+ZmlsbChRdDo6dHJhbnNwYXJlbnQpOworIAorLSAgICAgICAgICAgICAg ICAvLyBXZSBkbyBub3QgcmVzZXQgZGV2aWNlIHBvc2l0aW9uIHNpbmNlIHdlIGhhdmUgcmVhZCBp biBhbGwgZGF0YQorICAgICAgICAgICAgICAgICBtX3NjYW5TdGF0ZSA9IFNjYW5TdWNjZXNzOwor LSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgIG1fc2NhblN0YXRlID0gU2NhblN1Y2Nlc3M7CisgICAgICAg ICB9CisgICAgIH0KKyAKKy0gICAgZGV2aWNlKCktPnNlZWsob2xkUG9zKTsKKy0KKyAgICAgcmV0 dXJuIG1fc2NhblN0YXRlID09IFNjYW5TdWNjZXNzOworIH0KKyAKK0BAIC0xNTksNyArMTU4LDcg QEAgYm9vbCBRV2VicEhhbmRsZXI6OmVuc3VyZURlbXV4ZXIoKQorIAorIGJvb2wgUVdlYnBIYW5k bGVyOjpyZWFkKFFJbWFnZSAqaW1hZ2UpCisgeworLSAgICBpZiAoIWVuc3VyZVNjYW5uZWQoKSB8 fCBkZXZpY2UoKS0+aXNTZXF1ZW50aWFsKCkgfHwgIWVuc3VyZURlbXV4ZXIoKSkKKysgICAgaWYg KCFlbnN1cmVTY2FubmVkKCkgfHwgIWVuc3VyZURlbXV4ZXIoKSkKKyAgICAgICAgIHJldHVybiBm YWxzZTsKKyAKKyAgICAgUVJlY3QgcHJldkZyYW1lUmVjdDsKK1N1Ym1vZHVsZSBxdGxvY2F0aW9u IDk4YTVjNTExLi5mOTkxZTI4YzoKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9sb2NhdGlv bi9jb25maWd1cmUuanNvbiBiL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2NvbmZpZ3VyZS5qc29u CitpbmRleCA2ZDAxYTlhMy4uZDFlNjIzYTEgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9s b2NhdGlvbi9jb25maWd1cmUuanNvbgorKysrIGIvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vY29u ZmlndXJlLmpzb24KK0BAIC05LDcgKzksNyBAQAorICAgICAgICAgICAgICJsYWJlbCI6ICJRdC5s YWJzLmxvY2F0aW9uIGV4cGVyaW1lbnRhbCBRTUwgcGx1Z2luIiwKKyAgICAgICAgICAgICAicHVy cG9zZSI6ICJQcm92aWRlcyBleHBlcmltZW50YWwgUXRMb2NhdGlvbiBRTUwgdHlwZXMiLAorICAg ICAgICAgICAgICJzZWN0aW9uIjogIkxvY2F0aW9uIiwKKy0gICAgICAgICAgICAiY29uZGl0aW9u IjogImNvbmZpZy5vcGVuZ2wiLAorKyAgICAgICAgICAgICJjb25kaXRpb24iOiAiZmVhdHVyZXMu b3BlbmdsIiwKKyAgICAgICAgICAgICAib3V0cHV0IjogWyAicHJpdmF0ZUZlYXR1cmUiIF0KKyAg ICAgICAgIH0sCisgICAgICAgICAiZ2Vvc2VydmljZXNfb3NtIjogeworZGlmZiAtLWdpdCBhL3F0 bG9jYXRpb24vc3JjL2xvY2F0aW9uL2xhYnMvcXNnL3FnZW9tYXBvYmplY3Rxc2dzdXBwb3J0LmNw cCBiL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2xhYnMvcXNnL3FnZW9tYXBvYmplY3Rxc2dzdXBw b3J0LmNwcAoraW5kZXggYTk3ODU3M2QuLjExZTE0NjZmIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlv bi9zcmMvbG9jYXRpb24vbGFicy9xc2cvcWdlb21hcG9iamVjdHFzZ3N1cHBvcnQuY3BwCisrKysg Yi9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFwb2JqZWN0cXNnc3VwcG9y dC5jcHAKK0BAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBRR2VvTWFwT2JqZWN0UVNHU3VwcG9ydDo6 dXBkYXRlTWFwT2JqZWN0cyhRU0dOb2RlICpyb290LCBRUXVpY2tXaW5kb3cgKndpbmQKKyAgICAg aWYgKCFyb290KQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBpZiAobV9tYXBPYmplY3RzUm9v dE5vZGUgJiYgbV9tYXBPYmplY3RzUm9vdE5vZGUtPnBhcmVudCgpKQorKyAgICBpZiAobV9tYXBP YmplY3RzUm9vdE5vZGUgJiYgIW1fbWFwT2JqZWN0c1Jvb3ROb2RlLT5wYXJlbnQoKSkKKyAgICAg ICAgIHJvb3QtPmFwcGVuZENoaWxkTm9kZShtX21hcE9iamVjdHNSb290Tm9kZS5nZXQoKSk7Cisg CisgICAgIGlmICghbV9tYXBPYmplY3RzUm9vdE5vZGUpIHsKK2RpZmYgLS1naXQgYS9xdGxvY2F0 aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvY29kaW5nbWFuYWdlcmVuZ2luZV9l c3JpLmNwcCBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9jb2Rp bmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitpbmRleCA1YTQwNDY3ZS4uZDEyM2M2YTggMTAwNjQ0 CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvY29kaW5n bWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9z ZXJ2aWNlcy9lc3JpL2dlb2NvZGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK0BAIC01OSw4ICs1 OSwxMCBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrUHJlZml4 RXNyaShRU3RyaW5nTGl0ZXJhbCgiZXNyaS4iKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga1Bh cmFtVXNlckFnZW50KGtQcmVmaXhFc3JpICsgUVN0cmluZ0xpdGVyYWwoInVzZXJhZ2VudCIpKTsK KyAKKy1zdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsR2VvY29kZShRU3RyaW5nTGl0ZXJhbCgiaHR0 cDovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2Rl U2VydmVyL2ZpbmRBZGRyZXNzQ2FuZGlkYXRlcyIpKTsKKy1zdGF0aWMgY29uc3QgUVN0cmluZyBr VXJsUmV2ZXJzZUdlb2NvZGUoUVN0cmluZ0xpdGVyYWwoImh0dHA6Ly9nZW9jb2RlLmFyY2dpcy5j b20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZlci9yZXZlcnNlR2VvY29k ZSIpKTsKKytzdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsR2VvY29kZShRU3RyaW5nTGl0ZXJhbCgi aHR0cHM6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvIgorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXb3JsZC9HZW9jb2Rl U2VydmVyL2ZpbmRBZGRyZXNzQ2FuZGlkYXRlcyIpKTsKKytzdGF0aWMgY29uc3QgUVN0cmluZyBr VXJsUmV2ZXJzZUdlb2NvZGUoUVN0cmluZ0xpdGVyYWwoCisrICAgICAgICAiaHR0cHM6Ly9nZW9j b2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZlci9y ZXZlcnNlR2VvY29kZSIpKTsKKyAKKyBzdGF0aWMgUVN0cmluZyBhZGRyZXNzVG9RdWVyeShjb25z dCBRR2VvQWRkcmVzcyAmYWRkcmVzcykKKyB7CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMv cGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlanNvbnBhcnNlcl9lc3JpLmNwcCBiL3F0 bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZWpzb25wYXJzZXJf ZXNyaS5jcHAKK2luZGV4IDE3NDkyZDk0Li45NmMxMmIxYiAxMDA2NDQKKy0tLSBhL3F0bG9jYXRp b24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZWpzb25wYXJzZXJfZXNyaS5j cHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0 ZWpzb25wYXJzZXJfZXNyaS5jcHAKK0BAIC00Niw3ICs0Niw4IEBACisgCisgUVRfQkVHSU5fTkFN RVNQQUNFCisgCistLy8gSlNPTiByZWZlcmVuY2U6IGh0dHA6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNv bS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS8jL1JvdXRlX3NlcnZpY2Vfd2l0aF9zeW5jaHJvbm91 c19leGVjdXRpb24vMDJyMzAwMDAwMDM2MDAwMDAwLworKy8vIEpTT04gcmVmZXJlbmNlOgorKy8v IGh0dHBzOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvIy9S b3V0ZV9zZXJ2aWNlX3dpdGhfc3luY2hyb25vdXNfZXhlY3V0aW9uLzAycjMwMDAwMDAzNjAwMDAw MC8KKyAKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrRXJyb3JNZXNzYWdlKFFTdHJpbmdMaXRlcmFs KCJFcnJvciAlMTogJTIuIikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtFcnJvckpzb24oUVN0 cmluZ0xpdGVyYWwoIkVycm9yOiBpbnZhbGlkZSBKU09OIGRvY3VtZW50LiIpKTsKK2RpZmYgLS1n aXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVyZXBs eV9lc3JpLmNwcCBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9y b3V0ZXJlcGx5X2VzcmkuY3BwCitpbmRleCA4Y2FkZmIyOS4uOTJiNmJiMTMgMTAwNjQ0CistLS0g YS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVyZXBseV9l c3JpLmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dl b3JvdXRlcmVwbHlfZXNyaS5jcHAKK0BAIC00NCw3ICs0NCw4IEBACisgCisgUVRfQkVHSU5fTkFN RVNQQUNFCisgCistLy8gSlNPTiByZWZlcmVuY2U6IGh0dHA6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNv bS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS8jL1JvdXRlX3NlcnZpY2Vfd2l0aF9zeW5jaHJvbm91 c19leGVjdXRpb24vMDJyMzAwMDAwMDM2MDAwMDAwLworKy8vIEpTT04gcmVmZXJlbmNlOgorKy8v IGh0dHBzOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvIy9S b3V0ZV9zZXJ2aWNlX3dpdGhfc3luY2hyb25vdXNfZXhlY3V0aW9uLzAycjMwMDAwMDAzNjAwMDAw MC8KKyAKKyBHZW9Sb3V0ZVJlcGx5RXNyaTo6R2VvUm91dGVSZXBseUVzcmkoUU5ldHdvcmtSZXBs eSAqcmVwbHksIGNvbnN0IFFHZW9Sb3V0ZVJlcXVlc3QgJnJlcXVlc3QsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFPYmplY3QgKnBhcmVudCkgOgorZGlmZiAtLWdpdCBh L3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0aW5nbWFuYWdl cmVuZ2luZV9lc3JpLmNwcCBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNy aS9nZW9yb3V0aW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAoraW5kZXggMGU2YmMyYzcuLmVkNjEz ZjRiIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3Jp L2dlb3JvdXRpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9w bHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAK K0BAIC00OCw3ICs0OCw4IEBAIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtQcmVmaXhFc3JpKFFTdHJp bmdMaXRlcmFsKCJlc3JpLiIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrUGFyYW1Vc2VyQWdl bnQoa1ByZWZpeEVzcmkgKyBRU3RyaW5nTGl0ZXJhbCgidXNlcmFnZW50IikpOworIHN0YXRpYyBj b25zdCBRU3RyaW5nIGtQYXJhbVRva2VuKGtQcmVmaXhFc3JpICsgUVN0cmluZ0xpdGVyYWwoInRv a2VuIikpOworIAorLXN0YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxSb3V0aW5nKFFTdHJpbmdMaXRl cmFsKCJodHRwOi8vcm91dGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9S b3V0ZS9OQVNlcnZlci9Sb3V0ZV9Xb3JsZC9zb2x2ZSIpKTsKKytzdGF0aWMgY29uc3QgUVN0cmlu ZyBrVXJsUm91dGluZyhRU3RyaW5nTGl0ZXJhbCgKKysgICAgICAgICJodHRwczovL3JvdXRlLmFy Y2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvUm91dGUvTkFTZXJ2ZXIvUm91dGVf V29ybGQvc29sdmUiKSk7CisgCisgR2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpOjpHZW9Sb3V0 aW5nTWFuYWdlckVuZ2luZUVzcmkoY29uc3QgUVZhcmlhbnRNYXAgJnBhcmFtZXRlcnMsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUdl b1NlcnZpY2VQcm92aWRlcjo6RXJyb3IgKmVycm9yLAorQEAgLTcwLDcgKzcxLDggQEAgR2VvUm91 dGluZ01hbmFnZXJFbmdpbmVFc3JpOjp+R2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpKCkKKyB7 CisgfQorIAorLS8vIFJFU1QgcmVmZXJlbmNlOiBodHRwOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20v ZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvaW5kZXguaHRtbCMvLzAycjMwMDAwMDAzNjAwMDAwMAor Ky8vIFJFU1QgcmVmZXJlbmNlOgorKy8vIGh0dHBzOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4v aGVscC9hcmNnaXMtcmVzdC1hcGkvaW5kZXguaHRtbCMvLzAycjMwMDAwMDAzNjAwMDAwMAorIAor IFFHZW9Sb3V0ZVJlcGx5ICpHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6OmNhbGN1bGF0ZVJv dXRlKGNvbnN0IFFHZW9Sb3V0ZVJlcXVlc3QgJnJlcXVlc3QpCisgeworQEAgLTEyNSw3ICsxMjcs NyBAQCB2b2lkIEdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaTo6cmVwbHlFcnJvcihRR2VvUm91 dGVSZXBseTo6RXJyb3IgZXJyb3JDb2RlLCBjbworIFFTdHJpbmcgR2VvUm91dGluZ01hbmFnZXJF bmdpbmVFc3JpOjpwcmVmZXJlZERpcmVjdGlvbkxhbmdhZ2UoKQorIHsKKyAgICAgLy8gbGlzdCBv ZiBzdXBwb3J0ZWQgbGFuZ2FnZXMgaXMgZGVmaW5lZCBpbjoKKy0gICAgLy8gaHR0cDovL3Jlc291 cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIz MDAwMDAwMzYwMDAwMDAKKysgICAgLy8gaHR0cHM6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9o ZWxwL2FyY2dpcy1yZXN0LWFwaS9pbmRleC5odG1sIy8vMDJyMzAwMDAwMDM2MDAwMDAwCisgICAg IGNvbnN0IFFTdHJpbmdMaXN0IHN1cHBvcnRlZExhbmd1YWdlcyA9IHsKKyAgICAgICAgICJhciIs IC8vIEdlbmVyYXRlIGRpcmVjdGlvbnMgaW4gQXJhYmljCisgICAgICAgICAiY3MiLCAvLyBHZW5l cmF0ZSBkaXJlY3Rpb25zIGluIEN6ZWNoCitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1 Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3RpbGVkbWFwcGluZ21hbmFnZXJlbmdpbmVfZXNyaS5j cHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvdGlsZWRtYXBw aW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAoraW5kZXggNWQxNTgzNWQuLjI0MTQ4Zjk1IDEwMDY0 NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3RpbGVk bWFwcGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdp bnMvZ2Vvc2VydmljZXMvZXNyaS9nZW90aWxlZG1hcHBpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3Bw CitAQCAtMjMwLDcgKzIzMCw4IEBAIFFHZW9NYXAgKkdlb1RpbGVkTWFwcGluZ01hbmFnZXJFbmdp bmVFc3JpOjpjcmVhdGVNYXAoKQorIC8vICR7eX0gPSBZCisgLy8gJHt0b2tlbn0gPSBUb2tlbgor IAorLS8vIHRlbXBsYXRlID0gJ2h0dHA6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJ Uy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RvcG9fTWFwL01hcFNlcnZlci90aWxlL3t7en19L3t7eX19 L3t7eH19LnBuZycKKysvLyB0ZW1wbGF0ZSA9CisrLy8gJ2h0dHBzOi8vc2VydmljZXMuYXJjZ2lz b25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9Ub3BvX01hcC9NYXBTZXJ2ZXIv dGlsZS97e3p9fS97e3l9fS97e3h9fS5wbmcnCisgCisgYm9vbCBHZW9UaWxlZE1hcHBpbmdNYW5h Z2VyRW5naW5lRXNyaTo6aW5pdGlhbGl6ZU1hcFNvdXJjZXMoUUdlb1NlcnZpY2VQcm92aWRlcjo6 RXJyb3IgKmVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgKmVycm9yU3RyaW5nLAorZGlmZiAtLWdpdCBhL3F0 bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9tYXBzLmpzb24gYi9xdGxvY2F0 aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvbWFwcy5qc29uCitpbmRleCA4MTY3YWU3 ZC4uODYyZTA4N2QgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZp Y2VzL2VzcmkvbWFwcy5qc29uCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZp Y2VzL2VzcmkvbWFwcy5qc29uCitAQCAtNiw4ICs2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3Jp cHRpb24iOiAiQXJjR0lTIE9ubGluZSBXb3JsZCBTdHJlZXQgTWFwIiwKKyAgICAgICAgICAgICAi bW9iaWxlIjogdHJ1ZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAg ICAidXJsIjogImh0dHA6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3Nl cnZpY2VzL1dvcmxkX1N0cmVldF9NYXAvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJp Z2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRl bS5odG1sP2lkPTNiOTMzMzc5ODNlOTQzNmY4ZGI5NTBlMzhhODYyOWFmJz5Fc3JpPC9hPiBjb250 cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29u bGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfU3RyZWV0X01hcC9NYXBTZXJ2ZXIi LAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczov L3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTNiOTMzMzc5ODNlOTQzNmY4ZGI5NTBl MzhhODYyOWFmJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAg ICAgeworQEAgLTE2LDggKzE2LDggQEAKKyAgICAgICAgICAgICAiIjogIkFyY0dJUyBPbmxpbmUg V29ybGQgSW1hZ2VyeSIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IHRydWUsCisgICAgICAgICAg ICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFy Y2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfSW1hZ2VyeS9NYXBTZXJ2 ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRw Oi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MTBkZjIyNzlmOTY4NGU0YTlmNmE3 ZjA4ZmViYWMyYTknPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjog Imh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29y bGRfSW1hZ2VyeS9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZj b3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTEw ZGYyMjc5Zjk2ODRlNGE5ZjZhN2YwOGZlYmFjMmE5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisg ICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTI2LDggKzI2LDggQEAKKyAgICAgICAgICAg ICAiZGVzY3JpcHRpb24iOiAiQXJjR0lTIE9ubGluZSBXb3JsZCBUZXJyYWluIEJhc2UiLAorICAg ICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwK Ky0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNH SVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9UZXJyYWluX0Jhc2UvTWFwU2VydmVyIiwKKy0gICAgICAg ICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMu Y29tL2hvbWUvaXRlbS5odG1sP2lkPWM2MWFkOGFiMDE3ZDQ5ZTFhODJmNTgwZWUxMjk4OTMxJz5F c3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZl ci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RlcnJhaW5fQmFz ZS9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBo cmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWM2MWFkOGFiMDE3 ZDQ5ZTFhODJmNTgwZWUxMjk4OTMxJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9 LAorIAorICAgICAgICAgeworQEAgLTM2LDggKzM2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3Jp cHRpb24iOiAiQXJjR0lTIE9ubGluZSBXb3JsZCBUb3BvZ3JhcGh5IiwKKyAgICAgICAgICAgICAi bW9iaWxlIjogdHJ1ZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAg ICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2 aWNlcy9Xb3JsZF9Ub3BvX01hcC9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRU ZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0 bWw/aWQ9MzBlNWZlMzE0OWMzNGRmMWJhOTIyZTZmNWJiZjgwOGYnPkVzcmk8L2E+IGNvbnRyaWJ1 dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5j b20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVG9wb19NYXAvTWFwU2VydmVyIiwKKysgICAg ICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJj Z2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0zMGU1ZmUzMTQ5YzM0ZGYxYmE5MjJlNmY1YmJmODA4 Zic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BA IC00Niw4ICs0Niw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgbWFwIHBy ZXNlbnRzIGxhbmQgY292ZXIgYW5kIGRldGFpbGVkIHRvcG9ncmFwaGljIG1hcHMgZm9yIHRoZSBV bml0ZWQgU3RhdGVzLiIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IHRydWUsCisgICAgICAgICAg ICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmljZXMu YXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9VU0FfVG9wb19NYXBzL01hcFNl cnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0 dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD05OWNkNWZiZDk4OTM0MDI4ODAy YjRmNzk3YzRiMTczMic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwi OiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2Vz L1VTQV9Ub3BvX01hcHMvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6 ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9p ZD05OWNkNWZiZDk4OTM0MDI4ODAyYjRmNzk3YzRiMTczMic+RXNyaTwvYT4gY29udHJpYnV0b3Jz IgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC01Niw4ICs1Niw4IEBACisgICAgICAg ICAgICAgImRlc2NyaXB0aW9uIjogIk5hdGlvbmFsIEdlb2dyYXBoaWMgV29ybGQgTWFwIiwKKyAg ICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2Us CistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9B cmNHSVMvcmVzdC9zZXJ2aWNlcy9OYXRHZW9fV29ybGRfTWFwL01hcFNlcnZlciIsCistICAgICAg ICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lz LmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1iOWIxYjQyMjE5ODk0NGZiYmQ1MjUwYjMyNDE2OTFiNic+ RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2 aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL05hdEdlb19Xb3JsZF9N YXAvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEg aHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1iOWIxYjQyMjE5 ODk0NGZiYmQ1MjUwYjMyNDE2OTFiNic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAg fSwKKyAKKyAgICAgICAgIHsKK0BAIC02Niw4ICs2Niw4IEBACisgICAgICAgICAgICAgImRlc2Ny aXB0aW9uIjogIlRoZW1hdGljIGNvbnRlbnQgcHJvdmlkaW5nIGEgbmV1dHJhbCBiYWNrZ3JvdW5k IHdpdGggbWluaW1hbCBjb2xvcnMiLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAg ICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3Nl cnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvQ2FudmFzL1dvcmxk X0xpZ2h0X0dyYXlfQmFzZS9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0 IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/ aWQ9ZWQ3MTJjYjFkYjNlNGJhZTllODUzMjkwNDBmYjlhNDknPkVzcmk8L2E+IGNvbnRyaWJ1dG9y cyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNv bS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9DYW52YXMvV29ybGRfTGlnaHRfR3JheV9CYXNlL01hcFNl cnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0 dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9ZWQ3MTJjYjFkYjNlNGJhZTll ODUzMjkwNDBmYjlhNDknPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisg ICAgICAgICB7CitAQCAtNzYsOCArNzYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6 ICJOYXR1cmFsIEVhcnRoIHBoeXNpY2FsIG1hcCBmb3IgdGhlIHdvcmxkIiwKKyAgICAgICAgICAg ICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAg ICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qv c2VydmljZXMvV29ybGRfUGh5c2ljYWxfTWFwL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNv cHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21l L2l0ZW0uaHRtbD9pZD1jNGVjNzIyYTFjZDM0Y2YwYTIzOTA0YWFkZjg5MjNhMCc+RXNyaTwvYT4g Y29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lz b25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9QaHlzaWNhbF9NYXAvTWFwU2Vy dmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0 cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1jNGVjNzIyYTFjZDM0Y2YwYTIz OTA0YWFkZjg5MjNhMCc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAg ICAgICAgIHsKK0BAIC04Niw4ICs4Niw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog IlBvcnRyYXlzIHN1cmZhY2UgZWxldmF0aW9uIGFzIHNoYWRlZCByZWxpZWYiLAorICAgICAgICAg ICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAg ICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVz dC9zZXJ2aWNlcy9Xb3JsZF9TaGFkZWRfUmVsaWVmL01hcFNlcnZlciIsCistICAgICAgICAgICAg ImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9o b21lL2l0ZW0uaHRtbD9pZD05YzUzNzBkMGI1NGY0ZGUxYjQ4YTM3OTJkNzM3N2ZmMic+RXNyaTwv YT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJj Z2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9TaGFkZWRfUmVsaWVmL01h cFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9 J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9OWM1MzcwZDBiNTRmNGRl MWI0OGEzNzkyZDczNzdmZjInPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisg CisgICAgICAgICB7CitAQCAtOTYsOCArOTYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlv biI6ICJUaGlzIG1hcCBpcyBkZXNpZ25lZCB0byBiZSB1c2VkIGFzIGEgYmFzZW1hcCBieSBtYXJp bmUgR0lTIHByb2Zlc3Npb25hbHMgYW5kIGFzIGEgcmVmZXJlbmNlIG1hcCBieSBhbnlvbmUgaW50 ZXJlc3RlZCBpbiBvY2VhbiBkYXRhIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisg ICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8v c2VydmVyLmFyY2dpc29ubGluZS5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvT2NlYW4vV29ybGRf T2NlYW5fQmFzZS9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZj b3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MWUx MjZlNzUyMGY5NDY2YzljYTI4YjhmMjhiNWU1MDAnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysg ICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vYXJjZ2lz L3Jlc3Qvc2VydmljZXMvT2NlYW4vV29ybGRfT2NlYW5fQmFzZS9NYXBTZXJ2ZXIiLAorKyAgICAg ICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNn aXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTFlMTI2ZTc1MjBmOTQ2NmM5Y2EyOGI4ZjI4YjVlNTAw Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAg LTEwNiw4ICsxMDYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGVtYXRpYyBj b250ZW50IHByb3ZpZGluZyBhIG5ldXRyYWwgYmFja2dyb3VuZCB3aXRoIG1pbmltYWwgY29sb3Jz IiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0Ijog dHJ1ZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUu Y29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL0NhbnZhcy9Xb3JsZF9EYXJrX0dyYXlfQmFzZS9NYXBT ZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdo dHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YTI4NGE5Yjk5YjM0NDZhMzkx MGQ0MTQ0YTUwOTkwZjYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJs IjogImh0dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNl cy9DYW52YXMvV29ybGRfRGFya19HcmF5X0Jhc2UvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAi Y29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9o b21lL2l0ZW0uaHRtbD9pZD1hMjg0YTliOTliMzQ0NmEzOTEwZDQxNDRhNTA5OTBmNic+RXNyaTwv YT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC0xMTYsOCAr MTE2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGVMb3JtZeKAmXMgdG9wb2dy YXBoaWMgYmFzZW1hcCBpcyBhIHNlYW1sZXNzIGdsb2JhbCBkYXRhIHNldCB0aGF0IHBvcnRyYXlz IHRyYW5zcG9ydGF0aW9uLCBoeWRyb2dyYXBoeSwganVyaXNkaWN0aW9uIGJvdW5kYXJpZXMsIGFu ZCBtYWpvciBnZW9ncmFwaGljIGZlYXR1cmVzIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFs c2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJo dHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvU3BlY2lh bHR5L0RlTG9ybWVfV29ybGRfQmFzZV9NYXAvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29w eXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUv aXRlbS5odG1sP2lkPWIxNjVjM2RmNDUzZTRiZTZiNWFjNGZkYjI0MWVmZmJlJz5Fc3JpPC9hPiBj b250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNv bmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1NwZWNpYWx0eS9EZUxvcm1lX1dvcmxkX0Jh c2VfTWFwL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7 IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YjE2NWMz ZGY0NTNlNGJlNmI1YWM0ZmRiMjQxZWZmYmUnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAg ICAgIH0KKyAgICAgXQorIH0KK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dl b3NlcnZpY2VzL2VzcmkvcGxhY2VtYW5hZ2VyZW5naW5lX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9z cmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL3BsYWNlbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAor aW5kZXggMzg1OGRkZjUuLmFmNjZmMjhlIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1 Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL3BsYWNlbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorKysrIGIv cXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL3BsYWNlbWFuYWdlcmVuZ2lu ZV9lc3JpLmNwcAorQEAgLTYzLDggKzYzLDEwIEBAIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtDb3Vu dHJpZXNLZXkoUVN0cmluZ0xpdGVyYWwoImRldGFpbGVkQ291bnRyaWVzIikpOworIHN0YXRpYyBj b25zdCBRU3RyaW5nIGtMb2NhbGl6ZWROYW1lc0tleShRU3RyaW5nTGl0ZXJhbCgibG9jYWxpemVk TmFtZXMiKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga01heExvY2F0aW9uc0tleShRU3RyaW5n TGl0ZXJhbCgibWF4TG9jYXRpb25zIikpOworIAorLXN0YXRpYyBjb25zdCBRVXJsIGtVcmxHZW9j b2RlU2VydmVyKCJodHRwOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2Vz L1dvcmxkL0dlb2NvZGVTZXJ2ZXI/Zj1wanNvbiIpOworLXN0YXRpYyBjb25zdCBRVXJsIGtVcmxG aW5kQWRkcmVzc0NhbmRpZGF0ZXMoImh0dHA6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jl c3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZlci9maW5kQWRkcmVzc0NhbmRpZGF0ZXMiKTsK KytzdGF0aWMgY29uc3QgUVVybCBrVXJsR2VvY29kZVNlcnZlcigKKysgICAgICAgICJodHRwczov L2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2Vy dmVyP2Y9cGpzb24iKTsKKytzdGF0aWMgY29uc3QgUVVybCBrVXJsRmluZEFkZHJlc3NDYW5kaWRh dGVzKCJodHRwczovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3Js ZC8iCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2VvY29k ZVNlcnZlci9maW5kQWRkcmVzc0NhbmRpZGF0ZXMiKTsKKyAKKyBQbGFjZU1hbmFnZXJFbmdpbmVF c3JpOjpQbGFjZU1hbmFnZXJFbmdpbmVFc3JpKGNvbnN0IFFWYXJpYW50TWFwICZwYXJhbWV0ZXJz LCBRR2VvU2VydmljZVByb3ZpZGVyOjpFcnJvciAqZXJyb3IsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nICplcnJvclN0cmluZykgOgorU3Vi bW9kdWxlIHF0bXVsdGltZWRpYSBmMDM0NDA3OS4uMGQ3Y2MzM2E6CitkaWZmIC0tZ2l0IGEvcXRt dWx0aW1lZGlhL3NyYy9wbHVnaW5zL3B1bHNlYXVkaW8vcWF1ZGlvaW5wdXRfcHVsc2UuY3BwIGIv cXRtdWx0aW1lZGlhL3NyYy9wbHVnaW5zL3B1bHNlYXVkaW8vcWF1ZGlvaW5wdXRfcHVsc2UuY3Bw CitpbmRleCAyYjUzMjUxMzIuLmI2OGI0YWYxYiAxMDA2NDQKKy0tLSBhL3F0bXVsdGltZWRpYS9z cmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRpb2lucHV0X3B1bHNlLmNwcAorKysrIGIvcXRtdWx0 aW1lZGlhL3NyYy9wbHVnaW5zL3B1bHNlYXVkaW8vcWF1ZGlvaW5wdXRfcHVsc2UuY3BwCitAQCAt NDAyLDYgKzQwMiw4IEBAIGludCBRUHVsc2VBdWRpb0lucHV0OjpieXRlc1JlYWR5KCkgY29uc3QK KyAKKyBxaW50NjQgUVB1bHNlQXVkaW9JbnB1dDo6cmVhZChjaGFyICpkYXRhLCBxaW50NjQgbGVu KQorIHsKKysgICAgUV9BU1NFUlQoZGF0YSAhPSBudWxscHRyIHx8IGxlbiA9PSAwKTsKKysKKyAg ICAgbV9ieXRlc0F2YWlsYWJsZSA9IGNoZWNrQnl0ZXNSZWFkeSgpOworIAorICAgICBzZXRFcnJv cihRQXVkaW86Ok5vRXJyb3IpOworQEAgLTQxMSw3ICs0MTMsOCBAQCBxaW50NjQgUVB1bHNlQXVk aW9JbnB1dDo6cmVhZChjaGFyICpkYXRhLCBxaW50NjQgbGVuKQorIAorICAgICBpZiAoIW1fcHVs bE1vZGUgJiYgIW1fdGVtcEJ1ZmZlci5pc0VtcHR5KCkpIHsKKyAgICAgICAgIHJlYWRCeXRlcyA9 IHFNaW4oc3RhdGljX2Nhc3Q8aW50PihsZW4pLCBtX3RlbXBCdWZmZXIuc2l6ZSgpKTsKKy0gICAg ICAgIG1lbWNweShkYXRhLCBtX3RlbXBCdWZmZXIuY29uc3REYXRhKCksIHJlYWRCeXRlcyk7Cisr ICAgICAgICBpZiAocmVhZEJ5dGVzKQorKyAgICAgICAgICAgIG1lbWNweShkYXRhLCBtX3RlbXBC dWZmZXIuY29uc3REYXRhKCksIHJlYWRCeXRlcyk7CisgICAgICAgICBtX3RvdGFsVGltZVZhbHVl ICs9IHJlYWRCeXRlczsKKyAKKyAgICAgICAgIGlmIChyZWFkQnl0ZXMgPCBtX3RlbXBCdWZmZXIu c2l6ZSgpKSB7CitAQCAtNTAyLDkgKzUwNSwxMCBAQCBxaW50NjQgUVB1bHNlQXVkaW9JbnB1dDo6 cmVhZChjaGFyICpkYXRhLCBxaW50NjQgbGVuKQorIAorIHZvaWQgUVB1bHNlQXVkaW9JbnB1dDo6 YXBwbHlWb2x1bWUoY29uc3Qgdm9pZCAqc3JjLCB2b2lkICpkZXN0LCBpbnQgbGVuKQorIHsKKysg ICAgUV9BU1NFUlQoKHNyYyAmJiBkZXN0KSB8fCBsZW4gPT0gMCk7CisgICAgIGlmIChtX3ZvbHVt ZSA8IDEuZikKKyAgICAgICAgIFFBdWRpb0hlbHBlckludGVybmFsOjpxTXVsdGlwbHlTYW1wbGVz KG1fdm9sdW1lLCBtX2Zvcm1hdCwgc3JjLCBkZXN0LCBsZW4pOworLSAgICBlbHNlCisrICAgIGVs c2UgaWYgKGxlbikKKyAgICAgICAgIG1lbWNweShkZXN0LCBzcmMsIGxlbik7CisgfQorIAorU3Vi bW9kdWxlIHF0cGltIDAyZWZlZjVlLi4uZjlhOGYwZmMgKGNvbW1pdHMgbm90IHByZXNlbnQpCitT dWJtb2R1bGUgcXRxdWljazNkIGI4NWNmNjIyLi40N2RlZmM4YjoKK2RpZmYgLS1naXQgYS9xdHF1 aWNrM2Qvc3JjL3BsdWdpbnMvYXNzZXRpbXBvcnRlcnMvYXNzaW1wL2Fzc2ltcC5wcm8gYi9xdHF1 aWNrM2Qvc3JjL3BsdWdpbnMvYXNzZXRpbXBvcnRlcnMvYXNzaW1wL2Fzc2ltcC5wcm8KK2luZGV4 IGNhNWM0OTllLi4xNzRhMDc1YiAxMDA2NDQKKy0tLSBhL3F0cXVpY2szZC9zcmMvcGx1Z2lucy9h c3NldGltcG9ydGVycy9hc3NpbXAvYXNzaW1wLnBybworKysrIGIvcXRxdWljazNkL3NyYy9wbHVn aW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2ltcC9hc3NpbXAucHJvCitAQCAtMTAsNyArMTAsNyBAQCBR VF9GT1JfQ09ORklHICs9IGFzc2V0aW1wb3J0ZXJzLXByaXZhdGUKKyBpbmNsdWRlKCQkT1VUX1BX RC8uLi9xdGFzc2V0aW1wb3J0ZXJzLWNvbmZpZy5wcmkpCisgCisgcXRDb25maWcoc3lzdGVtLWFz c2ltcCk6IWlmKGNyb3NzX2NvbXBpbGU6aG9zdF9idWlsZCkgeworLSAgICBRTUFLRV9VU0VfUFJJ VkFURSArPSBhc3NpbXAKKysgICAgUU1BS0VfVVNFX1BSSVZBVEUgKz0gcXVpY2szZC1hc3NpbXAK KyB9IGVsc2UgeworICAgICBpbmNsdWRlKC4uLy4uLy4uLzNyZHBhcnR5L2Fzc2ltcC9hc3NpbXAu cHJpKQorIH0KK1N1Ym1vZHVsZSBxdHF1aWNrY29udHJvbHMyIDNhNjU3ZGMwLi41NmNlODIzMzoK K2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9pbXBvcnRzL3BsYXRmb3JtL3dpZGdl dHMvcXdpZGdldHBsYXRmb3JtbWVudS5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9pbXBvcnRz L3BsYXRmb3JtL3dpZGdldHMvcXdpZGdldHBsYXRmb3JtbWVudS5jcHAKK2luZGV4IGU1ZmU3MzRm Ny4uZTM2OTIyNzc1IDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvaW1wb3J0cy9w bGF0Zm9ybS93aWRnZXRzL3F3aWRnZXRwbGF0Zm9ybW1lbnUuY3BwCisrKysgYi9xdHF1aWNrY29u dHJvbHMyL3NyYy9pbXBvcnRzL3BsYXRmb3JtL3dpZGdldHMvcXdpZGdldHBsYXRmb3JtbWVudS5j cHAKK0BAIC0zOCw2ICszOCw3IEBACisgI2luY2x1ZGUgInF3aWRnZXRwbGF0Zm9ybW1lbnVpdGVt X3AuaCIKKyAKKyAjaW5jbHVkZSA8UXRHdWkvcXdpbmRvdy5oPgorKyNpbmNsdWRlIDxRdEd1aS9w cml2YXRlL3FoaWdoZHBpc2NhbGluZ19wLmg+CisgI2luY2x1ZGUgPFF0V2lkZ2V0cy9xbWVudS5o PgorICNpbmNsdWRlIDxRdFdpZGdldHMvcWFjdGlvbi5oPgorIAorQEAgLTE0NSw3ICsxNDYsNyBA QCB2b2lkIFFXaWRnZXRQbGF0Zm9ybU1lbnU6OnNob3dQb3B1cChjb25zdCBRV2luZG93ICp3aW5k b3csIGNvbnN0IFFSZWN0ICZ0YXJnZXRSZQorIAorICAgICBRUG9pbnQgdGFyZ2V0UG9zID0gdGFy Z2V0UmVjdC5ib3R0b21MZWZ0KCk7CisgICAgIGlmICh3aW5kb3cpCistICAgICAgICB0YXJnZXRQ b3MgPSB3aW5kb3ctPm1hcFRvR2xvYmFsKHRhcmdldFBvcyk7CisrICAgICAgICB0YXJnZXRQb3Mg PSB3aW5kb3ctPm1hcFRvR2xvYmFsKFFIaWdoRHBpOjpmcm9tTmF0aXZlTG9jYWxQb3NpdGlvbih0 YXJnZXRQb3MsIHdpbmRvdykpOworIAorICAgICBjb25zdCBRV2lkZ2V0UGxhdGZvcm1NZW51SXRl bSAqd2lkZ2V0SXRlbSA9IHFvYmplY3RfY2FzdDxjb25zdCBRV2lkZ2V0UGxhdGZvcm1NZW51SXRl bSAqPihpdGVtKTsKKyAgICAgbV9tZW51LT5wb3B1cCh0YXJnZXRQb3MsIHdpZGdldEl0ZW0gPyB3 aWRnZXRJdGVtLT5hY3Rpb24oKSA6IG51bGxwdHIpOworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250 cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbi5jcHAgYi9xdHF1 aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b24uY3Bw CitpbmRleCA5NTBlNGUwOTkuLmI4MWZiZWEwYiAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9s czIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbi5jcHAKKysrKyBiL3F0 cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbi5j cHAKK0BAIC0zODcsNiArMzg3LDE3IEBAIHZvaWQgUVF1aWNrQWJzdHJhY3RCdXR0b25Qcml2YXRl OjppdGVtSW1wbGljaXRIZWlnaHRDaGFuZ2VkKFFRdWlja0l0ZW0gKml0ZW0pCisgICAgICAgICBl bWl0IHEtPmltcGxpY2l0SW5kaWNhdG9ySGVpZ2h0Q2hhbmdlZCgpOworIH0KKyAKKyt2b2lkIFFR dWlja0Fic3RyYWN0QnV0dG9uUHJpdmF0ZTo6aXRlbURlc3Ryb3llZChRUXVpY2tJdGVtICppdGVt KQorK3sKKysgICAgUV9RKFFRdWlja0Fic3RyYWN0QnV0dG9uKTsKKysgICAgUVF1aWNrQ29udHJv bFByaXZhdGU6Oml0ZW1EZXN0cm95ZWQoaXRlbSk7CisrICAgIGlmIChpdGVtID09IGluZGljYXRv cikgeworKyAgICAgICAgaW5kaWNhdG9yID0gbnVsbHB0cjsKKysgICAgICAgIGVtaXQgcS0+aW1w bGljaXRJbmRpY2F0b3JXaWR0aENoYW5nZWQoKTsKKysgICAgICAgIGVtaXQgcS0+aW1wbGljaXRJ bmRpY2F0b3JIZWlnaHRDaGFuZ2VkKCk7CisrICAgIH0KKyt9CisrCisgUVF1aWNrQWJzdHJhY3RC dXR0b24gKlFRdWlja0Fic3RyYWN0QnV0dG9uUHJpdmF0ZTo6ZmluZENoZWNrZWRCdXR0b24oKSBj b25zdAorIHsKKyAgICAgUV9RKGNvbnN0IFFRdWlja0Fic3RyYWN0QnV0dG9uKTsKK0BAIC0xMTc2 LDYgKzExODcsMTIgQEAgUUFjY2Vzc2libGU6OlJvbGUgUVF1aWNrQWJzdHJhY3RCdXR0b246OmFj Y2Vzc2libGVSb2xlKCkgY29uc3QKKyAgICAgfQorICAgICByZXR1cm4gUUFjY2Vzc2libGU6OkJ1 dHRvbjsKKyB9CisrCisrdm9pZCBRUXVpY2tBYnN0cmFjdEJ1dHRvbjo6YWNjZXNzaWJsZVByZXNz QWN0aW9uKCkKKyt7CisrICAgIFFfRChRUXVpY2tBYnN0cmFjdEJ1dHRvbik7CisrICAgIGQtPnRy aWdnZXIoKTsKKyt9CisgI2VuZGlmCisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBh L3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRv bl9wLmggYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJh Y3RidXR0b25fcC5oCitpbmRleCAwZmE0ODk4MGUuLmFiNjYyMjBkMCAxMDA2NDQKKy0tLSBhL3F0 cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9w LmgKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0 cmFjdGJ1dHRvbl9wLmgKK0BAIC0yMDksNiArMjA5LDcgQEAgcHJvdGVjdGVkOgorICNpZiBRVF9D T05GSUcoYWNjZXNzaWJpbGl0eSkKKyAgICAgdm9pZCBhY2Nlc3NpYmlsaXR5QWN0aXZlQ2hhbmdl ZChib29sIGFjdGl2ZSkgb3ZlcnJpZGU7CisgICAgIFFBY2Nlc3NpYmxlOjpSb2xlIGFjY2Vzc2li bGVSb2xlKCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIFFfSU5WT0tBQkxFIHZvaWQgYWNjZXNzaWJs ZVByZXNzQWN0aW9uKCk7CisgI2VuZGlmCisgCisgcHJpdmF0ZToKK2RpZmYgLS1naXQgYS9xdHF1 aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcF9w LmggYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3Ri dXR0b25fcF9wLmgKK2luZGV4IDkyOTFjMWE4Ny4uYjcyOTcyMGYyIDEwMDY0NAorLS0tIGEvcXRx dWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3Bf cC5oCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJz dHJhY3RidXR0b25fcF9wLmgKK0BAIC0xMDksNiArMTA5LDcgQEAgcHVibGljOgorIAorICAgICB2 b2lkIGl0ZW1JbXBsaWNpdFdpZHRoQ2hhbmdlZChRUXVpY2tJdGVtICppdGVtKSBvdmVycmlkZTsK KyAgICAgdm9pZCBpdGVtSW1wbGljaXRIZWlnaHRDaGFuZ2VkKFFRdWlja0l0ZW0gKml0ZW0pIG92 ZXJyaWRlOworKyAgICB2b2lkIGl0ZW1EZXN0cm95ZWQoUVF1aWNrSXRlbSAqaXRlbSkgb3ZlcnJp ZGU7CisgCisgICAgIC8vIGNvcGllZCBmcm9tIHFhYnN0cmFjdGJ1dHRvbi5jcHAKKyAgICAgc3Rh dGljIGNvbnN0IGludCBBVVRPX1JFUEVBVF9ERUxBWSA9IDMwMDsKK2RpZmYgLS1naXQgYS9xdHF1 aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWN0aW9uLmNwcCBiL3F0cXVp Y2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thY3Rpb24uY3BwCitpbmRleCAy MDQxZTc3NDEuLjg2MTBjZGZhZSAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1 aWNrdGVtcGxhdGVzMi9xcXVpY2thY3Rpb24uY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3Ny Yy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWN0aW9uLmNwcAorQEAgLTE0NSw3ICsxNDUsNyBAQCBp bnQgUVF1aWNrQWN0aW9uUHJpdmF0ZTo6U2hvcnRjdXRFbnRyeTo6c2hvcnRjdXRJZCgpIGNvbnN0 CisgCisgdm9pZCBRUXVpY2tBY3Rpb25Qcml2YXRlOjpTaG9ydGN1dEVudHJ5OjpncmFiKGNvbnN0 IFFLZXlTZXF1ZW5jZSAmc2hvcnRjdXQsIGJvb2wgZW5hYmxlZCkKKyB7CistICAgIGlmIChzaG9y dGN1dC5pc0VtcHR5KCkpCisrICAgIGlmIChzaG9ydGN1dC5pc0VtcHR5KCkgfHwgbV9zaG9ydGN1 dElkKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBRdDo6U2hvcnRjdXRDb250ZXh0IGNvbnRl eHQgPSBRdDo6V2luZG93U2hvcnRjdXQ7IC8vIFRPRE8KK2RpZmYgLS1naXQgYS9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udGFpbmVyLmNwcCBiL3F0cXVpY2tj b250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250YWluZXIuY3BwCitpbmRleCBm MzhjMmIwOWMuLjZlZWQyYTAyNCAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1 aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250YWluZXIuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMy L3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udGFpbmVyLmNwcAorQEAgLTIyNSw2ICsyMjUs NyBAQCB2b2lkIFFRdWlja0NvbnRhaW5lclByaXZhdGU6OmNsZWFudXAoKQorICAgICBRT2JqZWN0 OjpkaXNjb25uZWN0KGNvbnRlbnRNb2RlbCwgJlFRbWxPYmplY3RNb2RlbDo6Y291bnRDaGFuZ2Vk LCBxLCAmUVF1aWNrQ29udGFpbmVyOjpjb3VudENoYW5nZWQpOworICAgICBRT2JqZWN0OjpkaXNj b25uZWN0KGNvbnRlbnRNb2RlbCwgJlFRbWxPYmplY3RNb2RlbDo6Y2hpbGRyZW5DaGFuZ2VkLCBx LCAmUVF1aWNrQ29udGFpbmVyOjpjb250ZW50Q2hpbGRyZW5DaGFuZ2VkKTsKKyAgICAgZGVsZXRl IGNvbnRlbnRNb2RlbDsKKysgICAgY29udGVudE1vZGVsID0gbnVsbHB0cjsKKyB9CisgCisgUVF1 aWNrSXRlbSAqUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6aXRlbUF0KGludCBpbmRleCkgY29uc3QK K0BAIC00MzYsNyArNDM3LDcgQEAgdm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjpjb250ZW50 Q2hpbGRyZW5fY2xlYXIoUVFtbExpc3RQcm9wZXJ0eTxRUXVpY2tJdGVtPgorIHZvaWQgUVF1aWNr Q29udGFpbmVyUHJpdmF0ZTo6dXBkYXRlQ29udGVudFdpZHRoKCkKKyB7CisgICAgIFFfUShRUXVp Y2tDb250YWluZXIpOworLSAgICBpZiAoaGFzQ29udGVudFdpZHRoIHx8IHFGdXp6eUNvbXBhcmUo Y29udGVudFdpZHRoLCBpbXBsaWNpdENvbnRlbnRXaWR0aCkpCisrICAgIGlmIChoYXNDb250ZW50 V2lkdGggfHwgcUZ1enp5Q29tcGFyZShjb250ZW50V2lkdGgsIGltcGxpY2l0Q29udGVudFdpZHRo KSB8fCAhY29udGVudE1vZGVsKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBjb250ZW50V2lk dGggPSBpbXBsaWNpdENvbnRlbnRXaWR0aDsKK0BAIC00NDYsNyArNDQ3LDcgQEAgdm9pZCBRUXVp Y2tDb250YWluZXJQcml2YXRlOjp1cGRhdGVDb250ZW50V2lkdGgoKQorIHZvaWQgUVF1aWNrQ29u dGFpbmVyUHJpdmF0ZTo6dXBkYXRlQ29udGVudEhlaWdodCgpCisgeworICAgICBRX1EoUVF1aWNr Q29udGFpbmVyKTsKKy0gICAgaWYgKGhhc0NvbnRlbnRIZWlnaHQgfHwgcUZ1enp5Q29tcGFyZShj b250ZW50SGVpZ2h0LCBpbXBsaWNpdENvbnRlbnRIZWlnaHQpKQorKyAgICBpZiAoaGFzQ29udGVu dEhlaWdodCB8fCBxRnV6enlDb21wYXJlKGNvbnRlbnRIZWlnaHQsIGltcGxpY2l0Q29udGVudEhl aWdodCkgfHwgIWNvbnRlbnRNb2RlbCkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgY29udGVu dEhlaWdodCA9IGltcGxpY2l0Q29udGVudEhlaWdodDsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbC5jcHAgYi9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbC5jcHAKK2luZGV4IGJiYmQw ZTYyMi4uMWY0YjQ3MzQzIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0 ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2wuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9x dWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbC5jcHAKK0BAIC04NDUsNiArODQ1LDEzIEBAIHZv aWQgUVF1aWNrQ29udHJvbFByaXZhdGU6OmV4ZWN1dGVCYWNrZ3JvdW5kKGJvb2wgY29tcGxldGUp CisgICAgICAgICBxdWlja0NvbXBsZXRlRGVmZXJyZWQocSwgYmFja2dyb3VuZE5hbWUoKSwgYmFj a2dyb3VuZCk7CisgfQorIAorKy8qCisrICAgIFxpbnRlcm5hbAorKworKyAgICBIaWRlcyBhbiBp dGVtIHRoYXQgd2FzIHJlcGxhY2VkIGJ5IGEgbmV3ZXIgb25lLCByYXRoZXIgdGhhbgorKyAgICBk ZWxldGluZyBpdCwgYXMgdGhlIGl0ZW0gaXMgdHlwaWNhbGx5IGNyZWF0ZWQgaW4gUU1MIGFuZCBo ZW5jZQorKyAgICB3ZSBkb24ndCBvd24gaXQuCisrKi8KKyB2b2lkIFFRdWlja0NvbnRyb2xQcml2 YXRlOjpoaWRlT2xkSXRlbShRUXVpY2tJdGVtICppdGVtKQorIHsKKyAgICAgaWYgKCFpdGVtKQor QEAgLTg2Myw2ICs4NzAsMjkgQEAgdm9pZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6aGlkZU9sZEl0 ZW0oUVF1aWNrSXRlbSAqaXRlbSkKKyAjZW5kaWYKKyB9CisgCisrLyoKKysgICAgXGludGVybmFs CisrCisrICAgIE5hbWVkICJ1bmhpZGUiIGJlY2F1c2UgaXQncyB1c2VkIGZvciBjYXNlcyB3aGVy ZSBhbiBpdGVtCisrICAgIHRoYXQgd2FzIHByZXZpb3VzbHkgaGlkZGVuIGJ5IFxsIGhpZGVPbGRJ dGVtKCkgd2FudHMgdG8gYmUKKysgICAgc2hvd24gYnkgYSBjb250cm9sIGFnYWluLCBzdWNoIGFz IGEgU2Nyb2xsQmFyIGluIFNjcm9sbFZpZXcuCisrKi8KKyt2b2lkIFFRdWlja0NvbnRyb2xQcml2 YXRlOjp1bmhpZGVPbGRJdGVtKFFRdWlja0NvbnRyb2wgKmNvbnRyb2wsIFFRdWlja0l0ZW0gKml0 ZW0pCisreworKyAgICBRX0FTU0VSVChpdGVtKTsKKysgICAgcUNEZWJ1ZyhsY0l0ZW1NYW5hZ2Vt ZW50KSA8PCAidW5oaWRpbmcgb2xkIGl0ZW0iIDw8IGl0ZW07CisrCisrICAgIGl0ZW0tPnNldFZp c2libGUodHJ1ZSk7CisrICAgIGl0ZW0tPnNldFBhcmVudEl0ZW0oY29udHJvbCk7CisrCisrI2lm IFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKyAgICAvLyBBZGQgdGhlIGl0ZW0gYmFjayBpbiB0 byB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLgorKyAgICBRUXVpY2tBY2Nlc3NpYmxlQXR0YWNoZWQg KmFjY2Vzc2libGUgPSBhY2Nlc3NpYmxlQXR0YWNoZWQoaXRlbSk7CisrICAgIGlmIChhY2Nlc3Np YmxlKQorKyAgICAgICAgYWNjZXNzaWJsZS0+c2V0SWdub3JlZChmYWxzZSk7CisrI2VuZGlmCisr fQorKworIHZvaWQgUVF1aWNrQ29udHJvbFByaXZhdGU6OnVwZGF0ZUJhc2VsaW5lT2Zmc2V0KCkK KyB7CisgICAgIFFfUShRUXVpY2tDb250cm9sKTsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJv bHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbF9wX3AuaCBiL3F0cXVpY2tjb250 cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sX3BfcC5oCitpbmRleCA4ZTk3 OTA3OWUuLmE2ZTYyNGM5MSAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNr dGVtcGxhdGVzMi9xcXVpY2tjb250cm9sX3BfcC5oCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3Ny Yy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbF9wX3AuaAorQEAgLTE3Myw2ICsxNzMsNyBA QCBwdWJsaWM6CisgICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQmFja2dyb3VuZChib29sIGNvbXBs ZXRlID0gZmFsc2UpOworIAorICAgICBzdGF0aWMgdm9pZCBoaWRlT2xkSXRlbShRUXVpY2tJdGVt ICppdGVtKTsKKysgICAgc3RhdGljIHZvaWQgdW5oaWRlT2xkSXRlbShRUXVpY2tDb250cm9sICpj b250cm9sLCBRUXVpY2tJdGVtICppdGVtKTsKKyAKKyAgICAgdm9pZCB1cGRhdGVCYXNlbGluZU9m ZnNldCgpOworIAorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxh dGVzMi9xcXVpY2tkaWFsb2didXR0b25ib3guY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVp Y2t0ZW1wbGF0ZXMyL3FxdWlja2RpYWxvZ2J1dHRvbmJveC5jcHAKK2luZGV4IGU2ZGIxNGViNS4u NjE5N2QxNTQ3IDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0 ZXMyL3FxdWlja2RpYWxvZ2J1dHRvbmJveC5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3Jj L3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tkaWFsb2didXR0b25ib3guY3BwCitAQCAtMjM3LDcgKzIz Nyw3IEBAIHN0YXRpYyBRUmVjdEYgYWxpZ25lZFJlY3QoUXQ6OkxheW91dERpcmVjdGlvbiBkaXJl Y3Rpb24sIFF0OjpBbGlnbm1lbnQgYWxpZ25tZW50Cisgdm9pZCBRUXVpY2tEaWFsb2dCdXR0b25C b3hQcml2YXRlOjpyZXNpemVDb250ZW50KCkKKyB7CisgICAgIFFfUShRUXVpY2tEaWFsb2dCdXR0 b25Cb3gpOworLSAgICBpZiAoIWNvbnRlbnRJdGVtKQorKyAgICBpZiAoIWNvbnRlbnRJdGVtIHx8 ICFjb250ZW50TW9kZWwpCisgICAgICAgICByZXR1cm47CisgCisgICAgIFFSZWN0RiBnZW9tZXRy eSA9IHEtPmJvdW5kaW5nUmVjdCgpLmFkanVzdGVkKHEtPmxlZnRQYWRkaW5nKCksIHEtPnRvcFBh ZGRpbmcoKSwgLXEtPnJpZ2h0UGFkZGluZygpLCAtcS0+Ym90dG9tUGFkZGluZygpKTsKK0BAIC0z MjIsNiArMzIyLDkgQEAgdm9pZCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjp1cGRhdGVM YXlvdXQoKQorIHFyZWFsIFFRdWlja0RpYWxvZ0J1dHRvbkJveFByaXZhdGU6OmdldENvbnRlbnRX aWR0aCgpIGNvbnN0CisgeworICAgICBRX1EoY29uc3QgUVF1aWNrRGlhbG9nQnV0dG9uQm94KTsK KysgICAgaWYgKCFjb250ZW50TW9kZWwpCisrICAgICAgICByZXR1cm4gMDsKKysKKyAgICAgY29u c3QgaW50IGNvdW50ID0gY29udGVudE1vZGVsLT5jb3VudCgpOworICAgICBjb25zdCBxcmVhbCB0 b3RhbFNwYWNpbmcgPSBxTWF4KDAsIGNvdW50IC0gMSkgKiBzcGFjaW5nOworICAgICBxcmVhbCB0 b3RhbFdpZHRoID0gdG90YWxTcGFjaW5nOworQEAgLTM0MSw2ICszNDQsOSBAQCBxcmVhbCBRUXVp Y2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjpnZXRDb250ZW50V2lkdGgoKSBjb25zdAorIHFyZWFs IFFRdWlja0RpYWxvZ0J1dHRvbkJveFByaXZhdGU6OmdldENvbnRlbnRIZWlnaHQoKSBjb25zdAor IHsKKyAgICAgUV9RKGNvbnN0IFFRdWlja0RpYWxvZ0J1dHRvbkJveCk7CisrICAgIGlmICghY29u dGVudE1vZGVsKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisgICAgIGNvbnN0IGludCBjb3VudCA9 IGNvbnRlbnRNb2RlbC0+Y291bnQoKTsKKyAgICAgcXJlYWwgbWF4SGVpZ2h0ID0gMDsKKyAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2Nv bnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja292ZXJsYXkuY3BwIGIvcXRxdWlja2Nv bnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja292ZXJsYXkuY3BwCitpbmRleCA5MWJk NTkxODQuLjBjZTUxOGY4NCAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNr dGVtcGxhdGVzMi9xcXVpY2tvdmVybGF5LmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMv cXVpY2t0ZW1wbGF0ZXMyL3FxdWlja292ZXJsYXkuY3BwCitAQCAtMzk5LDggKzM5OSwxMSBAQCB2 b2lkIFFRdWlja092ZXJsYXk6Oml0ZW1DaGFuZ2UoSXRlbUNoYW5nZSBjaGFuZ2UsIGNvbnN0IEl0 ZW1DaGFuZ2VEYXRhICZkYXRhKQorICAgICBRX0QoUVF1aWNrT3ZlcmxheSk7CisgICAgIFFRdWlj a0l0ZW06Oml0ZW1DaGFuZ2UoY2hhbmdlLCBkYXRhKTsKKyAKKy0gICAgaWYgKGNoYW5nZSA9PSBJ dGVtQ2hpbGRBZGRlZENoYW5nZSB8fCBjaGFuZ2UgPT0gSXRlbUNoaWxkUmVtb3ZlZENoYW5nZSkK KysgICAgaWYgKGNoYW5nZSA9PSBJdGVtQ2hpbGRBZGRlZENoYW5nZSB8fCBjaGFuZ2UgPT0gSXRl bUNoaWxkUmVtb3ZlZENoYW5nZSkgeworICAgICAgICAgc2V0VmlzaWJsZSghZC0+YWxsRHJhd2Vy cy5pc0VtcHR5KCkgfHwgIWNoaWxkSXRlbXMoKS5pc0VtcHR5KCkpOworKyAgICAgICAgaWYgKGRh dGEuaXRlbS0+cGFyZW50KCkgPT0gZC0+bW91c2VHcmFiYmVyUG9wdXApCisrICAgICAgICAgICAg ZC0+c2V0TW91c2VHcmFiYmVyUG9wdXAobnVsbHB0cik7CisrICAgIH0KKyB9CisgCisgdm9pZCBR UXVpY2tPdmVybGF5OjpnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGICZuZXdHZW9tZXRyeSwg Y29uc3QgUVJlY3RGICZvbGRHZW9tZXRyeSkKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMy L3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrc2Nyb2xsYmFyLmNwcCBiL3F0cXVpY2tjb250cm9s czIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tzY3JvbGxiYXIuY3BwCitpbmRleCA0ZTJmNTA5 ZGIuLjFjNGIzMDhjZCAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVt cGxhdGVzMi9xcXVpY2tzY3JvbGxiYXIuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9x dWlja3RlbXBsYXRlczIvcXF1aWNrc2Nyb2xsYmFyLmNwcAorQEAgLTc5Nyw2ICs3OTcsMTQgQEAg dm9pZCBRUXVpY2tTY3JvbGxCYXJBdHRhY2hlZFByaXZhdGU6OmluaXRIb3Jpem9udGFsKCkKKyAg ICAgaWYgKHBhcmVudCAmJiBwYXJlbnQgPT0gZmxpY2thYmxlLT5wYXJlbnRJdGVtKCkpCisgICAg ICAgICBob3Jpem9udGFsLT5zdGFja0FmdGVyKGZsaWNrYWJsZSk7CisgCisrICAgIC8vIElmIGEg c2Nyb2xsIGJhciB3YXMgcHJldmlvdXNseSBoaWRkZW4gKGR1ZSB0byBlLmcuIHNldHRpbmcgYSBu ZXcgY29udGVudEl0ZW0KKysgICAgLy8gb24gYSBTY3JvbGxWaWV3KSwgd2UgbmVlZCB0byBtYWtl IHN1cmUgdGhhdCB3ZSB1bi1oaWRlIGl0LgorKyAgICAvLyBXZSBkb24ndCBib3RoZXIgY2hlY2tp bmcgaWYgdGhlIGl0ZW0gaXMgYWN0dWFsbHkgdGhlIG9sZCBvbmUsIGJlY2F1c2UKKysgICAgLy8g aWYgaXQncyBub3QsIGFsbCBvZiB0aGUgdGhpbmdzIHRoZSBmdW5jdGlvbiBkb2VzIChzZXR0aW5n IHBhcmVudCwgdmlzaWJpbGl0eSwgZXRjLikKKysgICAgLy8gc2hvdWxkIGJlIG5vLW9wcyBhbnl3 YXkuCisrICAgIGlmIChhdXRvIGNvbnRyb2wgPSBxb2JqZWN0X2Nhc3Q8UVF1aWNrQ29udHJvbCo+ KHFfcHRyLT5wYXJlbnQoKSkpCisrICAgICAgICBRUXVpY2tDb250cm9sUHJpdmF0ZTo6dW5oaWRl T2xkSXRlbShjb250cm9sLCBob3Jpem9udGFsKTsKKysKKyAgICAgbGF5b3V0SG9yaXpvbnRhbCgp OworICAgICBob3Jpem9udGFsLT5zZXRTaXplKGFyZWEtPnByb3BlcnR5KCJ3aWR0aFJhdGlvIiku dG9SZWFsKCkpOworICAgICBob3Jpem9udGFsLT5zZXRQb3NpdGlvbihhcmVhLT5wcm9wZXJ0eSgi eFBvc2l0aW9uIikudG9SZWFsKCkpOworQEAgLTgxOCw2ICs4MjYsOSBAQCB2b2lkIFFRdWlja1Nj cm9sbEJhckF0dGFjaGVkUHJpdmF0ZTo6aW5pdFZlcnRpY2FsKCkKKyAgICAgaWYgKHBhcmVudCAm JiBwYXJlbnQgPT0gZmxpY2thYmxlLT5wYXJlbnRJdGVtKCkpCisgICAgICAgICB2ZXJ0aWNhbC0+ c3RhY2tBZnRlcihmbGlja2FibGUpOworIAorKyAgICBpZiAoYXV0byBjb250cm9sID0gcW9iamVj dF9jYXN0PFFRdWlja0NvbnRyb2wqPihxX3B0ci0+cGFyZW50KCkpKQorKyAgICAgICAgUVF1aWNr Q29udHJvbFByaXZhdGU6OnVuaGlkZU9sZEl0ZW0oY29udHJvbCwgdmVydGljYWwpOworKworICAg ICBsYXlvdXRWZXJ0aWNhbCgpOworICAgICB2ZXJ0aWNhbC0+c2V0U2l6ZShhcmVhLT5wcm9wZXJ0 eSgiaGVpZ2h0UmF0aW8iKS50b1JlYWwoKSk7CisgICAgIHZlcnRpY2FsLT5zZXRQb3NpdGlvbihh cmVhLT5wcm9wZXJ0eSgieVBvc2l0aW9uIikudG9SZWFsKCkpOworZGlmZiAtLWdpdCBhL3F0cXVp Y2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zY3JvbGx2aWV3LnFtbCBi L3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zY3JvbGx2aWV3 LnFtbAoraW5kZXggMGU4YjA4MzUyLi5jZDQ5MzExODQgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29u dHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc2Nyb2xsdmlldy5xbWwKKysrKyBi L3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zY3JvbGx2aWV3 LnFtbAorQEAgLTU3Niw0ICs1NzYsNTEgQEAgVGVzdENhc2UgeworICAgICAgICAgdmVyaWZ5KG5l d0hvcml6b250YWxTY3JvbGxCYXIudmlzaWJsZSkKKyAgICAgICAgIHZlcmlmeSghb2xkSG9yaXpv bnRhbFNjcm9sbEJhci52aXNpYmxlKQorICAgICB9CisrCisrICAgIENvbXBvbmVudCB7CisrICAg ICAgICBpZDogYmluZGluZ1RvQ29udGVudEl0ZW1BbmRTdGFuZGFsb25lRmxpY2thYmxlCisrCisr ICAgICAgICBJdGVtIHsKKysgICAgICAgICAgICB3aWR0aDogMjAwCisrICAgICAgICAgICAgaGVp Z2h0OiAyMDAKKysKKysgICAgICAgICAgICBwcm9wZXJ0eSBhbGlhcyBzY3JvbGxWaWV3OiBzY3Jv bGxWaWV3CisrCisrICAgICAgICAgICAgU2Nyb2xsVmlldyB7CisrICAgICAgICAgICAgICAgIGlk OiBzY3JvbGxWaWV3CisrICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisrICAg ICAgICAgICAgICAgIGNvbnRlbnRJdGVtOiBsaXN0VmlldworKworKyAgICAgICAgICAgICAgICBw cm9wZXJ0eSBJdGVtIHNvbWVCaW5kaW5nOiBjb250ZW50SXRlbQorKyAgICAgICAgICAgIH0KKysg ICAgICAgICAgICBMaXN0VmlldyB7CisrICAgICAgICAgICAgICAgIGlkOiBsaXN0VmlldworKyAg ICAgICAgICAgICAgICBtb2RlbDogMTAKKysgICAgICAgICAgICAgICAgZGVsZWdhdGU6IEl0ZW1E ZWxlZ2F0ZSB7CisrICAgICAgICAgICAgICAgICAgICB0ZXh0OiBtb2RlbERhdGEKKysgICAgICAg ICAgICAgICAgICAgIHdpZHRoOiBsaXN0Vmlldy53aWR0aAorKyAgICAgICAgICAgICAgICB9Cisr ICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIC8vIFRlc3RzIHRoYXQg c2Nyb2xsIGJhcnMgc2hvdyB1cCBmb3IgYSBTY3JvbGxWaWV3IHdoZXJlCisrICAgIC8vIC0gaXRz IGNvbnRlbnRJdGVtIGlzIGRlY2xhcmVkIGFzIGEgc3RhbmRhbG9uZSwgc2VwYXJhdGUgaXRlbQor KyAgICAvLyAtIHRoZXJlIGlzIGEgYmluZGluZyB0byBjb250ZW50SXRlbSAod2hpY2ggY2F1c2Vz IGEgZGVmYXVsdCBGbGlja2FibGUgdG8gYmUgY3JlYXRlZCkKKysgICAgZnVuY3Rpb24gdGVzdF9i aW5kaW5nVG9Db250ZW50SXRlbUFuZFN0YW5kYWxvbmVGbGlja2FibGUoKSB7CisrICAgICAgICBs ZXQgcm9vdCA9IGNyZWF0ZVRlbXBvcmFyeU9iamVjdChiaW5kaW5nVG9Db250ZW50SXRlbUFuZFN0 YW5kYWxvbmVGbGlja2FibGUsIHRlc3RDYXNlKQorKyAgICAgICAgdmVyaWZ5KHJvb3QpCisrCisr ICAgICAgICBsZXQgY29udHJvbCA9IHJvb3Quc2Nyb2xsVmlldworKyAgICAgICAgbGV0IHZlcnRp Y2FsU2Nyb2xsQmFyID0gY29udHJvbC5TY3JvbGxCYXIudmVydGljYWwKKysgICAgICAgIGxldCBo b3Jpem9udGFsU2Nyb2xsQmFyID0gY29udHJvbC5TY3JvbGxCYXIuaG9yaXpvbnRhbAorKyAgICAg ICAgY29tcGFyZSh2ZXJ0aWNhbFNjcm9sbEJhci5wYXJlbnQsIGNvbnRyb2wpCisrICAgICAgICBj b21wYXJlKGhvcml6b250YWxTY3JvbGxCYXIucGFyZW50LCBjb250cm9sKQorKyAgICAgICAgdmVy aWZ5KHZlcnRpY2FsU2Nyb2xsQmFyLnZpc2libGUpCisrICAgICAgICB2ZXJpZnkoaG9yaXpvbnRh bFNjcm9sbEJhci52aXNpYmxlKQorKworKyAgICAgICAgbW91c2VEcmFnKHZlcnRpY2FsU2Nyb2xs QmFyLCB2ZXJ0aWNhbFNjcm9sbEJhci53aWR0aCAvIDIsIHZlcnRpY2FsU2Nyb2xsQmFyLmhlaWdo dCAvIDIsIDAsIDUwKQorKyAgICAgICAgdmVyaWZ5KHZlcnRpY2FsU2Nyb2xsQmFyLmFjdGl2ZSkK KysgICAgICAgIHZlcmlmeShob3Jpem9udGFsU2Nyb2xsQmFyLmFjdGl2ZSkKKysgICAgfQorIH0K K2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90 c3Rfc3dpdGNoLnFtbCBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9kYXRh L3RzdF9zd2l0Y2gucW1sCitpbmRleCBiM2ZhYjQxY2EuLjEwYjZiYWEwMiAxMDA2NDQKKy0tLSBh L3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zd2l0Y2gucW1s CisrKysgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc3dp dGNoLnFtbAorQEAgLTYwOCw0ICs2MDgsMjcgQEAgVGVzdENhc2UgeworICAgICAgICAgbW91c2VD bGljayhjb250cm9sLmluZGljYXRvcikKKyAgICAgICAgIHZlcmlmeShjb250cm9sLmFjdGl2ZUZv Y3VzKQorICAgICB9CisrCisrICAgIENvbXBvbmVudCB7CisrICAgICAgICBpZDogZGVsZXRpb25P cmRlcjEKKysgICAgICAgIEl0ZW0geworKyAgICAgICAgICAgIEltYWdlIHsgaWQ6IGlubmVySW1h Z2UgfQorKyAgICAgICAgICAgIFN3aXRjaCB7IGluZGljYXRvcjogaW5uZXJJbWFnZSB9CisrICAg ICAgICB9CisrICAgIH0KKysKKysgICAgQ29tcG9uZW50IHsKKysgICAgICAgIGlkOiBkZWxldGlv bk9yZGVyMgorKyAgICAgICAgSXRlbSB7CisrICAgICAgICAgICAgU3dpdGNoIHsgaW5kaWNhdG9y OiBpbm5lckltYWdlIH0KKysgICAgICAgICAgICBJbWFnZSB7IGlkOiBpbm5lckltYWdlIH0KKysg ICAgICAgIH0KKysgICAgfQorKworKyAgICBmdW5jdGlvbiB0ZXN0X2RlbGV0aW9uT3JkZXIoKSB7 CisrICAgICAgICB2YXIgY29udHJvbDEgPSBjcmVhdGVUZW1wb3JhcnlPYmplY3QoZGVsZXRpb25P cmRlcjEsIHRlc3RDYXNlKQorKyAgICAgICAgdmVyaWZ5KGNvbnRyb2wxKQorKyAgICAgICAgdmFy IGNvbnRyb2wyID0gY3JlYXRlVGVtcG9yYXJ5T2JqZWN0KGRlbGV0aW9uT3JkZXIyLCB0ZXN0Q2Fz ZSkKKysgICAgICAgIHZlcmlmeShjb250cm9sMikKKysgICAgfQorIH0KK2RpZmYgLS1naXQgYS9x dHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvZGF0YS9yZWxlYXNlQWZ0ZXJF eGl0VHJhbnNpdGlvbi5xbWwgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9w dXAvZGF0YS9yZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbi5xbWwKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CitpbmRleCAwMDAwMDAwMDAuLjllNDU5OGI5ZgorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRx dWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL2RhdGEvcmVsZWFzZUFmdGVyRXhp dFRyYW5zaXRpb24ucW1sCitAQCAtMCwwICsxLDc4IEBACisrLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KysqKgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29u dGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworKyoqCisrKiogVGhpcyBmaWxlIGlz IHBhcnQgb2YgdGhlIHRlc3Qgc3VpdGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRf QkVHSU5fTElDRU5TRTpCU0QkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGlj ZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMg ZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVl bWVudCBwcm92aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBp biBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBh Z3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRl cm1zCisrKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRp dGlvbnMuIEZvciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0g YXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEJTRCBMaWNlbnNlIFVz YWdlCisrKiogQWx0ZXJuYXRpdmVseSwgeW91IG1heSB1c2UgdGhpcyBmaWxlIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgQlNEIGxpY2Vuc2UKKysqKiBhcyBmb2xsb3dzOgorKyoqCisrKiogIlJlZGlz dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0 aG91dAorKyoqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKysqKiBtZXQ6CisrKiogICAqIFJlZGlzdHJpYnV0aW9u cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrKiogICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lci4KKysqKiAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysqKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisrKiogICAgIHRoZSBkb2N1 bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiAg ICAgZGlzdHJpYnV0aW9uLgorKyoqICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFRoZSBRdCBDb21w YW55IEx0ZCBub3IgdGhlIG5hbWVzIG9mIGl0cworKyoqICAgICBjb250cmlidXRvcnMgbWF5IGJl IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKysqKiAgICAgZnJv bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u LgorKyoqCisrKioKKysqKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisrKiogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKysqKiBMSU1JVEVEIFRP LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG T1IKKysqKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg U0hBTEwgVEhFIENPUFlSSUdIVAorKyoqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKyoqIFNQRUNJQUwsIEVYRU1Q TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKysqKiBM SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM T1NTIE9GIFVTRSwKKysqKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKysqKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisrKiogKElOQ0xV RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU SEUgVVNFCisrKiogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT SUJJTElUWSBPRiBTVUNIIERBTUFHRS4iCisrKioKKysqKiAkUVRfRU5EX0xJQ0VOU0UkCisrKioK KysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworKworK2ltcG9ydCBRdFF1aWNrIDIuMTUKKytpbXBvcnQg UXRRdWljay5Db250cm9scyAyLjE1CisrCisrQXBwbGljYXRpb25XaW5kb3cgeworKyAgICBpZDog d2luZG93CisrICAgIHdpZHRoOiA0MDAKKysgICAgaGVpZ2h0OiA0MDAKKysgICAgdGl0bGU6ICJy ZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbiIKKysKKysgICAgcHJvcGVydHkgYWxpYXMgcG9wdXA6 IHBvcHVwCisrICAgIHByb3BlcnR5IGFsaWFzIG1vZGFsUG9wdXA6IG1vZGFsUG9wdXAKKysKKysg ICAgUG9wdXAgeworKyAgICAgICAgaWQ6IHBvcHVwCisrICAgICAgICB5OiBwYXJlbnQuaGVpZ2h0 IC0gaGVpZ2h0CisrICAgICAgICB3aWR0aDogNTAKKysgICAgICAgIGhlaWdodDogNTAKKysgICAg fQorKworKyAgICBQb3B1cCB7CisrICAgICAgICBpZDogbW9kYWxQb3B1cAorKyAgICAgICAgbW9k YWw6IHRydWUKKysgICAgICAgIHk6IHBhcmVudC5oZWlnaHQgLSBoZWlnaHQKKysgICAgICAgIHdp ZHRoOiA1MAorKyAgICAgICAgaGVpZ2h0OiA1MAorKyAgICAgICAgZXhpdDogIFRyYW5zaXRpb24g eyBQYXVzZUFuaW1hdGlvbiB7IGR1cmF0aW9uOiAxMDAgfSB9CisrICAgIH0KKyt9CitkaWZmIC0t Z2l0IGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL3RzdF9xcXVpY2tw b3B1cC5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvdHN0X3Fx dWlja3BvcHVwLmNwcAoraW5kZXggNTQ5NTJkMTI4Li4zZDUwZTJkZDQgMTAwNjQ0CistLS0gYS9x dHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvdHN0X3FxdWlja3BvcHVwLmNw cAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL3RzdF9xcXVp Y2twb3B1cC5jcHAKK0BAIC0xMDAsNiArMTAwLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9p ZCBpbnZpc2libGVUb29sVGlwT3BlbigpOworICAgICB2b2lkIGNlbnRlckluT3ZlcmxheVdpdGhp blN0YWNrVmlld0l0ZW0oKTsKKyAgICAgdm9pZCBkZXN0cm95RHVyaW5nRXhpdFRyYW5zaXRpb24o KTsKKysgICAgdm9pZCByZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbigpOworIH07CisgCisgdm9p ZCB0c3RfUVF1aWNrUG9wdXA6OmluaXRUZXN0Q2FzZSgpCitAQCAtMTU3NSw2ICsxNTc2LDM0IEBA IHZvaWQgdHN0X1FRdWlja1BvcHVwOjpkZXN0cm95RHVyaW5nRXhpdFRyYW5zaXRpb24oKQorICAg ICBRVkVSSUZZKCFidXR0b24tPmlzRG93bigpKTsKKyB9CisgCisrdm9pZCB0c3RfUVF1aWNrUG9w dXA6OnJlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uKCkKKyt7CisrICAgIFFRdWlja0FwcGxpY2F0 aW9uSGVscGVyIGhlbHBlcih0aGlzLCAicmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24ucW1sIik7 CisrICAgIFFWRVJJRlkyKGhlbHBlci5yZWFkeSwgaGVscGVyLmZhaWx1cmVNZXNzYWdlKCkpOwor KworKyAgICBRUXVpY2tXaW5kb3cgKndpbmRvdyA9IGhlbHBlci53aW5kb3c7CisrICAgIHdpbmRv dy0+c2hvdygpOworKyAgICBRVkVSSUZZKFFUZXN0OjpxV2FpdEZvcldpbmRvd0FjdGl2ZSh3aW5k b3cpKTsKKysKKysgICAgUVF1aWNrT3ZlcmxheSAqb3ZlcmxheSA9IFFRdWlja092ZXJsYXk6Om92 ZXJsYXkod2luZG93KTsKKysgICAgUVF1aWNrUG9wdXAgKm1vZGFsUG9wdXAgPSB3aW5kb3ctPnBy b3BlcnR5KCJtb2RhbFBvcHVwIikudmFsdWU8UVF1aWNrUG9wdXAgKj4oKTsKKysgICAgUVF1aWNr UG9wdXAgKnBvcHVwID0gd2luZG93LT5wcm9wZXJ0eSgicG9wdXAiKS52YWx1ZTxRUXVpY2tQb3B1 cCAqPigpOworKworKyAgICBtb2RhbFBvcHVwLT5vcGVuKCk7CisrICAgIFFUUllfVkVSSUZZKG1v ZGFsUG9wdXAtPmlzT3BlbmVkKCkpOworKworKyAgICBRVGVzdDo6bW91c2VQcmVzcyh3aW5kb3cs IFF0OjpMZWZ0QnV0dG9uLCBRdDo6Tm9Nb2RpZmllciwgUVBvaW50KDEsIDEpKTsKKysgICAgLy8g d2FpdCB1bnRpbCB0aGUgdHJhbnNpdGlvbiBpcyBmaW5pc2hlZCBhbmQgdGhlIG92ZXJsYXkgaGlk ZXMgaXRzZWxmCisrICAgIFFUUllfVkVSSUZZKCFvdmVybGF5LT5pc1Zpc2libGUoKSk7CisrICAg IFFUZXN0Ojptb3VzZVJlbGVhc2Uod2luZG93LCBRdDo6TGVmdEJ1dHRvbiwgUXQ6Ok5vTW9kaWZp ZXIsIFFQb2ludCgxLCAxKSk7CisrCisrICAgIHBvcHVwLT5vcGVuKCk7CisrICAgIFFUUllfVkVS SUZZKHBvcHVwLT5pc09wZW5lZCgpKTsKKysgICAgUVRlc3Q6Om1vdXNlQ2xpY2sod2luZG93LCBR dDo6TGVmdEJ1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIsIFFQb2ludCgxLCAxKSk7CisrICAgIFFUUllf VkVSSUZZKCFwb3B1cC0+aXNPcGVuZWQoKSk7CisrfQorKworKworIFFURVNUX1FVSUNLQ09OVFJP TFNfTUFJTih0c3RfUVF1aWNrUG9wdXApCisgCisgI2luY2x1ZGUgInRzdF9xcXVpY2twb3B1cC5t b2MiCitTdWJtb2R1bGUgcXRzY3JpcHQgNWJlOTVmOTYuLi40ZDhlNGJkMiAoY29tbWl0cyBub3Qg cHJlc2VudCkKK1N1Ym1vZHVsZSBxdHNwZWVjaCAxN2ZjOWZkZS4uMjU1ODQ1ZTI6CitkaWZmIC0t Z2l0IGEvcXRzcGVlY2gvc3JjL3BsdWdpbnMvdHRzL3NwZWVjaGRpc3BhdGNoZXIvcXRleHR0b3Nw ZWVjaF9zcGVlY2hkLmNwcCBiL3F0c3BlZWNoL3NyYy9wbHVnaW5zL3R0cy9zcGVlY2hkaXNwYXRj aGVyL3F0ZXh0dG9zcGVlY2hfc3BlZWNoZC5jcHAKK2luZGV4IDZlYjc0YjguLmJjYzdkZDEgMTAw NjQ0CistLS0gYS9xdHNwZWVjaC9zcmMvcGx1Z2lucy90dHMvc3BlZWNoZGlzcGF0Y2hlci9xdGV4 dHRvc3BlZWNoX3NwZWVjaGQuY3BwCisrKysgYi9xdHNwZWVjaC9zcmMvcGx1Z2lucy90dHMvc3Bl ZWNoZGlzcGF0Y2hlci9xdGV4dHRvc3BlZWNoX3NwZWVjaGQuY3BwCitAQCAtMzU3LDcgKzM1Nyw5 IEBAIFFWZWN0b3I8UUxvY2FsZT4gUVRleHRUb1NwZWVjaEVuZ2luZVNwZWVjaGQ6OmF2YWlsYWJs ZUxvY2FsZXMoKSBjb25zdAorIAorIFFWZWN0b3I8UVZvaWNlPiBRVGV4dFRvU3BlZWNoRW5naW5l U3BlZWNoZDo6YXZhaWxhYmxlVm9pY2VzKCkgY29uc3QKKyB7CistICAgIHJldHVybiBtX3ZvaWNl cy52YWx1ZXMobV9jdXJyZW50TG9jYWxlLm5hbWUoKSkudG9WZWN0b3IoKTsKKysgICAgUUxpc3Q8 UVZvaWNlPiByZXN1bHRMaXN0ID0gbV92b2ljZXMudmFsdWVzKG1fY3VycmVudExvY2FsZS5uYW1l KCkpOworKyAgICBzdGQ6OnJldmVyc2UocmVzdWx0TGlzdC5iZWdpbigpLCByZXN1bHRMaXN0LmVu ZCgpKTsKKysgICAgcmV0dXJuIHJlc3VsdExpc3QudG9WZWN0b3IoKTsKKyB9CisgCisgLy8gV2Ug aGF2ZSBubyB3YXkgb2Yga25vd2luZyBvdXIgb3duIGNsaWVudF9pZCBzaW5jZSBzcGVlY2gtZGlz cGF0Y2hlciBzZWVtcyB0byBiZSBpbmNvbXBsZXRlCitTdWJtb2R1bGUgcXRzdmcgMGMwNTc4MGUu LmE3YTBmMjQ5OgorZGlmZiAtLWdpdCBhL3F0c3ZnL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9z dmcvcXN2Z2lvaGFuZGxlci5jcHAgYi9xdHN2Zy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvc3Zn L3Fzdmdpb2hhbmRsZXIuY3BwCitpbmRleCA1NjFlNzdlLi4xMmUwNTc0IDEwMDY0NAorLS0tIGEv cXRzdmcvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3N2Zy9xc3ZnaW9oYW5kbGVyLmNwcAorKysr IGIvcXRzdmcvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3N2Zy9xc3ZnaW9oYW5kbGVyLmNwcAor QEAgLTE5MSw2ICsxOTEsOCBAQCBib29sIFFTdmdJT0hhbmRsZXI6OnJlYWQoUUltYWdlICppbWFn ZSkKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICBpZiAoIWZpbmFsU2l6ZS5p c0VtcHR5KCkpIHsKKysgICAgICAgICAgICBpZiAocU1heChmaW5hbFNpemUud2lkdGgoKSwgZmlu YWxTaXplLmhlaWdodCgpKSA+IDB4ZmZmZikKKysgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl OyAvLyBBc3N1bWUgY29ycnVwdGVkIGZpbGUKKyAgICAgICAgICAgICBpbWFnZS0+ZmlsbChkLT5i YWNrQ29sb3IucmdiYSgpKTsKKyAgICAgICAgICAgICBRUGFpbnRlciBwKGltYWdlKTsKKyAgICAg ICAgICAgICBkLT5yLnJlbmRlcigmcCwgYm91bmRzKTsKK2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMv c3ZnL3FzdmdoYW5kbGVyLmNwcCBiL3F0c3ZnL3NyYy9zdmcvcXN2Z2hhbmRsZXIuY3BwCitpbmRl eCBhNWY4NzdmLi44ZGRhNTYzIDEwMDY0NAorLS0tIGEvcXRzdmcvc3JjL3N2Zy9xc3ZnaGFuZGxl ci5jcHAKKysrKyBiL3F0c3ZnL3NyYy9zdmcvcXN2Z2hhbmRsZXIuY3BwCitAQCAtMTM5Myw5ICsx MzkzLDEwIEBAIHN0YXRpYyB2b2lkIHBhcnNlRm9udChRU3ZnTm9kZSAqbm9kZSwKKyAgICAgICAg IGNhc2UgRm9udFNpemVOb25lOgorICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgY2FzZSBG b250U2l6ZVZhbHVlOiB7CistICAgICAgICAgICAgUVN2Z0hhbmRsZXI6Okxlbmd0aFR5cGUgZHVt bXk7IC8vIHNob3VsZCBhbHdheXMgYmUgcGl4ZWwgc2l6ZQorLSAgICAgICAgICAgIGZvbnRTdHls ZS0+c2V0U2l6ZShxTWluKHBhcnNlTGVuZ3RoKGF0dHJpYnV0ZXMuZm9udFNpemUsIGR1bW15LCBo YW5kbGVyKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxcmVhbCgweGZm ZmYpKSk7CisrICAgICAgICAgICAgUVN2Z0hhbmRsZXI6Okxlbmd0aFR5cGUgdHlwZTsKKysgICAg ICAgICAgICBxcmVhbCBmcyA9IHBhcnNlTGVuZ3RoKGF0dHJpYnV0ZXMuZm9udFNpemUsIHR5cGUs IGhhbmRsZXIpOworKyAgICAgICAgICAgIGZzID0gY29udmVydFRvUGl4ZWxzKGZzLCB0cnVlLCB0 eXBlKTsKKysgICAgICAgICAgICBmb250U3R5bGUtPnNldFNpemUocU1pbihmcywgcXJlYWwoMHhm ZmZmKSkpOworICAgICAgICAgfQorICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgZGVmYXVs dDoKK0BAIC0yNTEzLDYgKzI1MTQsOCBAQCBzdGF0aWMgYm9vbCBwYXJzZUFuaW1hdGVUcmFuc2Zv cm1Ob2RlKFFTdmdOb2RlICpwYXJlbnQsCisgICAgICAgICAgICAgKytzOworICAgICAgICAgfQor ICAgICB9CisrICAgIGlmICh2YWxzLmNvdW50KCkgJSAzICE9IDApCisrICAgICAgICByZXR1cm4g ZmFsc2U7CisgCisgICAgIGJvb2wgb2sgPSB0cnVlOworICAgICBpbnQgYmVnaW4gPSBwYXJzZUNs b2NrVmFsdWUoYmVnaW5TdHIsICZvayk7CitAQCAtMjU3Niw2ICsyNTc5LDggQEAgc3RhdGljIFFT dmdOb2RlICpjcmVhdGVDaXJjbGVOb2RlKFFTdmdOb2RlICpwYXJlbnQsCisgICAgIHFyZWFsIG5j eCA9IHRvRG91YmxlKGN4KTsKKyAgICAgcXJlYWwgbmN5ID0gdG9Eb3VibGUoY3kpOworICAgICBx cmVhbCBuciAgPSB0b0RvdWJsZShyKTsKKysgICAgaWYgKG5yIDwgMC4wKQorKyAgICAgICAgcmV0 dXJuIG51bGxwdHI7CisgCisgICAgIFFSZWN0RiByZWN0KG5jeC1uciwgbmN5LW5yLCBucioyLCBu cioyKTsKKyAgICAgUVN2Z05vZGUgKmNpcmNsZSA9IG5ldyBRU3ZnQ2lyY2xlKHBhcmVudCwgcmVj dCk7CitAQCAtMzA0NiwxNSArMzA1MSwxNiBAQCBzdGF0aWMgUVN2Z1N0eWxlUHJvcGVydHkgKmNy ZWF0ZVJhZGlhbEdyYWRpZW50Tm9kZShRU3ZnTm9kZSAqbm9kZSwKKyAKKyAgICAgcXJlYWwgbmN4 ID0gMC41OworICAgICBxcmVhbCBuY3kgPSAwLjU7CistICAgIHFyZWFsIG5yICA9IDAuNTsKKyAg ICAgaWYgKCFjeC5pc0VtcHR5KCkpCisgICAgICAgICBuY3ggPSB0b0RvdWJsZShjeCk7CisgICAg IGlmICghY3kuaXNFbXB0eSgpKQorICAgICAgICAgbmN5ID0gdG9Eb3VibGUoY3kpOworKworKyAg ICBxcmVhbCBuciA9IDAuMDsKKyAgICAgaWYgKCFyLmlzRW1wdHkoKSkKKyAgICAgICAgIG5yID0g dG9Eb3VibGUocik7CistICAgIGlmIChuciA8IDAuNSkKKy0gICAgICAgIG5yID0gMC41OworKyAg ICBpZiAobnIgPD0gMC4wKQorKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgCisgICAgIHFyZWFs IG5meCA9IG5jeDsKKyAgICAgaWYgKCFmeC5pc0VtcHR5KCkpCitAQCAtMzM1MCw3ICszMzU2LDkg QEAgc3RhdGljIFFTdmdOb2RlICpjcmVhdGVUZXh0Tm9kZShRU3ZnTm9kZSAqcGFyZW50LAorICAg ICAvLyMjIyBlZGl0YWJsZSBhbmQgcm90YXRlIG5vdCBoYW5kbGVkCisgICAgIFFTdmdIYW5kbGVy OjpMZW5ndGhUeXBlIHR5cGU7CisgICAgIHFyZWFsIG54ID0gcGFyc2VMZW5ndGgoeCwgdHlwZSwg aGFuZGxlcik7CisrICAgIG54ID0gY29udmVydFRvUGl4ZWxzKG54LCB0cnVlLCB0eXBlKTsKKyAg ICAgcXJlYWwgbnkgPSBwYXJzZUxlbmd0aCh5LCB0eXBlLCBoYW5kbGVyKTsKKysgICAgbnkgPSBj b252ZXJ0VG9QaXhlbHMobnksIHRydWUsIHR5cGUpOworIAorICAgICBRU3ZnTm9kZSAqdGV4dCA9 IG5ldyBRU3ZnVGV4dChwYXJlbnQsIFFQb2ludEYobngsIG55KSk7CisgICAgIHJldHVybiB0ZXh0 OworQEAgLTM2OTEsOSArMzY5OSw3IEBAIHZvaWQgUVN2Z0hhbmRsZXI6OnBhcnNlKCkKKyAgICAg ICAgIGNhc2UgUVhtbFN0cmVhbVJlYWRlcjo6RW5kRWxlbWVudDoKKyAgICAgICAgICAgICBlbmRF bGVtZW50KHhtbC0+bmFtZSgpKTsKKyAgICAgICAgICAgICArK3JlbWFpbmluZ1VuZmluaXNoZWRF bGVtZW50czsKKy0gICAgICAgICAgICAvLyBpZiB3ZSBhcmUgdXNpbmcgc29tZWJvZHkgZWxzZSdz IHF4bWxzdHJlYW1yZWFkZXIKKy0gICAgICAgICAgICAvLyB3ZSBzaG91bGQgbm90IHJlYWQgdW50 aWwgdGhlIGVuZCBvZiB0aGUgc3RyZWFtCistICAgICAgICAgICAgZG9uZSA9ICFtX293bnNSZWFk ZXIgJiYgKHhtbC0+bmFtZSgpID09IFFMYXRpbjFTdHJpbmcoInN2ZyIpKTsKKysgICAgICAgICAg ICBkb25lID0gKHhtbC0+bmFtZSgpID09IFFMYXRpbjFTdHJpbmcoInN2ZyIpKTsKKyAgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgIGNhc2UgUVhtbFN0cmVhbVJlYWRlcjo6Q2hhcmFjdGVyczoK KyAgICAgICAgICAgICBjaGFyYWN0ZXJzKHhtbC0+dGV4dCgpKTsKK2RpZmYgLS1naXQgYS9xdHN2 Zy9zcmMvc3ZnL3FzdmdzdHJ1Y3R1cmUuY3BwIGIvcXRzdmcvc3JjL3N2Zy9xc3Znc3RydWN0dXJl LmNwcAoraW5kZXggYjg5NjA4Yi4uODljOWU0ZSAxMDA2NDQKKy0tLSBhL3F0c3ZnL3NyYy9zdmcv cXN2Z3N0cnVjdHVyZS5jcHAKKysrKyBiL3F0c3ZnL3NyYy9zdmcvcXN2Z3N0cnVjdHVyZS5jcHAK K0BAIC0yNTUsOSArMjU1LDEzIEBAIGlubGluZSBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFN2Z0Zl YXR1cmUoY29uc3QgUVN0cmluZyAmc3RyKQorICAgICB9OworIAorICAgICBpZiAoc3RyLmxlbmd0 aCgpIDw9IE1BWF9XT1JEX0xFTkdUSCAmJiBzdHIubGVuZ3RoKCkgPj0gTUlOX1dPUkRfTEVOR1RI KSB7CisrICAgICAgICBjb25zdCBjaGFyMTZfdCB1bmljb2RlNDQgPSBzdHIuYXQoNDQpLnVuaWNv ZGUoKTsKKysgICAgICAgIGNvbnN0IGNoYXIxNl90IHVuaWNvZGU0NSA9IHN0ci5hdCg0NSkudW5p Y29kZSgpOworKyAgICAgICAgaWYgKHVuaWNvZGU0NCA+PSBzaXplb2YoYXNzb192YWx1ZXMpIHx8 IHVuaWNvZGU0NSA+PSBzaXplb2YoYXNzb192YWx1ZXMpKQorKyAgICAgICAgICAgIHJldHVybiBm YWxzZTsKKyAgICAgICAgIGNvbnN0IGludCBrZXkgPSBzdHIubGVuZ3RoKCkKKy0gICAgICAgICAg ICAgICAgICAgICAgICArIGFzc29fdmFsdWVzW3N0ci5hdCg0NSkudW5pY29kZSgpXQorLSAgICAg ICAgICAgICAgICAgICAgICAgICsgYXNzb192YWx1ZXNbc3RyLmF0KDQ0KS51bmljb2RlKCldOwor KyAgICAgICAgICAgICAgICAgICAgICAgICsgYXNzb192YWx1ZXNbdW5pY29kZTQ1XQorKyAgICAg ICAgICAgICAgICAgICAgICAgICsgYXNzb192YWx1ZXNbdW5pY29kZTQ0XTsKKyAgICAgICAgIGlm IChrZXkgPD0gTUFYX0hBU0hfVkFMVUUgJiYga2V5ID49IDApCisgICAgICAgICAgICAgcmV0dXJu IHN0ciA9PSBRTGF0aW4xU3RyaW5nKHdvcmRsaXN0W2tleV0pOworICAgICB9CitkaWZmIC0tZ2l0 IGEvcXRzdmcvc3JjL3N2Zy9xc3ZndGlueWRvY3VtZW50LmNwcCBiL3F0c3ZnL3NyYy9zdmcvcXN2 Z3Rpbnlkb2N1bWVudC5jcHAKK2luZGV4IDYzZDA3OTcuLjE5ZTcxNTQgMTAwNjQ0CistLS0gYS9x dHN2Zy9zcmMvc3ZnL3Fzdmd0aW55ZG9jdW1lbnQuY3BwCisrKysgYi9xdHN2Zy9zcmMvc3ZnL3Fz dmd0aW55ZG9jdW1lbnQuY3BwCitAQCAtNDMzLDggKzQzMywxNiBAQCB2b2lkIFFTdmdUaW55RG9j dW1lbnQ6OmRyYXcoUVBhaW50ZXIgKnAsIFFTdmdFeHRyYVN0YXRlcyAmKQorICAgICBkcmF3KHAp OworIH0KKyAKKytzdGF0aWMgYm9vbCBpc1ZhbGlkTWF0cml4KGNvbnN0IFFUcmFuc2Zvcm0gJnRy YW5zZm9ybSkKKyt7CisrICAgIHFyZWFsIGRldGVybWluYW50ID0gdHJhbnNmb3JtLmRldGVybWlu YW50KCk7CisrICAgIHJldHVybiBxSXNGaW5pdGUoZGV0ZXJtaW5hbnQpOworK30KKysKKyB2b2lk IFFTdmdUaW55RG9jdW1lbnQ6Om1hcFNvdXJjZVRvVGFyZ2V0KFFQYWludGVyICpwLCBjb25zdCBR UmVjdEYgJnRhcmdldFJlY3QsIGNvbnN0IFFSZWN0RiAmc291cmNlUmVjdCkKKyB7CisrICAgIFFU cmFuc2Zvcm0gb2xkVHJhbnNmb3JtID0gcC0+d29ybGRUcmFuc2Zvcm0oKTsKKysKKyAgICAgUVJl Y3RGIHRhcmdldCA9IHRhcmdldFJlY3Q7CisgICAgIGlmICh0YXJnZXQuaXNFbXB0eSgpKSB7Cisg ICAgICAgICBRUGFpbnREZXZpY2UgKmRldiA9IHAtPmRldmljZSgpOworQEAgLTQ4Nyw2ICs0OTUs OSBAQCB2b2lkIFFTdmdUaW55RG9jdW1lbnQ6Om1hcFNvdXJjZVRvVGFyZ2V0KFFQYWludGVyICpw LCBjb25zdCBRUmVjdEYgJnRhcmdldFJlY3QsCisgICAgICAgICB9CisgI2VuZGlmCisgICAgIH0K KysKKysgICAgaWYgKCFpc1ZhbGlkTWF0cml4KHAtPndvcmxkVHJhbnNmb3JtKCkpKQorKyAgICAg ICAgcC0+c2V0V29ybGRUcmFuc2Zvcm0ob2xkVHJhbnNmb3JtKTsKKyB9CisgCisgUVJlY3RGIFFT dmdUaW55RG9jdW1lbnQ6OmJvdW5kc09uRWxlbWVudChjb25zdCBRU3RyaW5nICZpZCkgY29uc3QK K2RpZmYgLS1naXQgYS9xdHN2Zy90ZXN0cy9hdXRvL3FzdmdyZW5kZXJlci90c3RfcXN2Z3JlbmRl cmVyLmNwcCBiL3F0c3ZnL3Rlc3RzL2F1dG8vcXN2Z3JlbmRlcmVyL3RzdF9xc3ZncmVuZGVyZXIu Y3BwCitpbmRleCAzNmM3NmVjLi5kYjcxZTAyIDEwMDY0NAorLS0tIGEvcXRzdmcvdGVzdHMvYXV0 by9xc3ZncmVuZGVyZXIvdHN0X3FzdmdyZW5kZXJlci5jcHAKKysrKyBiL3F0c3ZnL3Rlc3RzL2F1 dG8vcXN2Z3JlbmRlcmVyL3RzdF9xc3ZncmVuZGVyZXIuY3BwCitAQCAtODYsNiArODYsOCBAQCBw cml2YXRlIHNsb3RzOgorICAgICB2b2lkIG9zc19mdXp6XzIzNzMxKCk7CisgICAgIHZvaWQgb3Nz X2Z1enpfMjQxMzEoKTsKKyAgICAgdm9pZCBvc3NfZnV6el8yNDczOCgpOworKyAgICB2b2lkIGls bGVnYWxBbmltYXRlVHJhbnNmb3JtX2RhdGEoKTsKKysgICAgdm9pZCBpbGxlZ2FsQW5pbWF0ZVRy YW5zZm9ybSgpOworIAorICNpZm5kZWYgUVRfTk9fQ09NUFJFU1MKKyAgICAgdm9pZCB0ZXN0R3pM b2FkaW5nKCk7CitAQCAtMTY0Niw1ICsxNjQ4LDIyIEBAIHZvaWQgdHN0X1FTdmdSZW5kZXJlcjo6 b3NzX2Z1enpfMjQ3MzgoKQorICAgICBRU3ZnUmVuZGVyZXIoKS5sb2FkKFFCeXRlQXJyYXkoIjxz dmc+PHBhdGggZD1cImEgMiAxZS0yMTIuLi4uLlwiPiIpKTsKKyB9CisgCisrdm9pZCB0c3RfUVN2 Z1JlbmRlcmVyOjppbGxlZ2FsQW5pbWF0ZVRyYW5zZm9ybV9kYXRhKCkKKyt7CisrICAgIFFUZXN0 OjphZGRDb2x1bW48UUJ5dGVBcnJheT4oInN2ZyIpOworKworKyAgICBRVGVzdDo6bmV3Um93KCJj YXNlMSIpIDw8IFFCeXRlQXJyYXkoIjxzdmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlwZT1cInJvdGF0 ZVwiIGJlZ2luPVwiMVwiIGR1cj1cIjJcIiB2YWx1ZXM9XCI4LDAsNSwwXCI+Iik7CisrICAgIFFU ZXN0OjpuZXdSb3coImNhc2UyIikgPDwgUUJ5dGVBcnJheSgiPHN2Zz48YW5pbWF0ZVRyYW5zZm9y bSB0eXBlPVwicm90YXRlXCIgYmVnaW49XCIxXCIgZHVyPVwiMlwiIHZhbHVlcz1cIjEsMlwiPiIp OworKyAgICBRVGVzdDo6bmV3Um93KCJjYXNlMyIpIDw8IFFCeXRlQXJyYXkoIjxzdmc+PGFuaW1h dGVUcmFuc2Zvcm0gdHlwZT1cInJvdGF0ZVwiIGJlZ2luPVwiMVwiIGR1cj1cIjJcIiBmcm9tPVwi Li4gNSAyXCIgdG89XCJmXCI+Iik7CisrICAgIFFUZXN0OjpuZXdSb3coImNhc2U0IikgPDwgUUJ5 dGVBcnJheSgiPHN2Zz48YW5pbWF0ZVRyYW5zZm9ybSB0eXBlPVwic2NhbGVcIiBiZWdpbj1cIjFc IiBkdXI9XCIyXCIgYnk9XCItLSwuLlwiPiIpOworK30KKysKKyt2b2lkIHRzdF9RU3ZnUmVuZGVy ZXI6OmlsbGVnYWxBbmltYXRlVHJhbnNmb3JtKCkKKyt7CisrICAgIFFGRVRDSChRQnl0ZUFycmF5 LCBzdmcpOworKyAgICBRU3ZnUmVuZGVyZXIgcmVuZGVyZXI7CisrICAgIFFWRVJJRlkoIXJlbmRl cmVyLmxvYWQoc3ZnKSk7IC8vIGFsc28gc2hvdWxkbid0IGFzc2VydAorK30KKysKKyBRVEVTVF9N QUlOKHRzdF9RU3ZnUmVuZGVyZXIpCisgI2luY2x1ZGUgInRzdF9xc3ZncmVuZGVyZXIubW9jIgor U3VibW9kdWxlIHF0dG9vbHMgNjkxNGY3YzguLjA5MGU1MjZlOgorZGlmZiAtLWdpdCBhL3F0dG9v bHMvc3JjL2Fzc2lzdGFudC9xaGVscGdlbmVyYXRvci9oZWxwZ2VuZXJhdG9yLmNwcCBiL3F0dG9v bHMvc3JjL2Fzc2lzdGFudC9xaGVscGdlbmVyYXRvci9oZWxwZ2VuZXJhdG9yLmNwcAoraW5kZXgg ZmVhYjFlMmQ1Li5jYmZiODI1MDcgMTAwNjQ0CistLS0gYS9xdHRvb2xzL3NyYy9hc3Npc3RhbnQv cWhlbHBnZW5lcmF0b3IvaGVscGdlbmVyYXRvci5jcHAKKysrKyBiL3F0dG9vbHMvc3JjL2Fzc2lz dGFudC9xaGVscGdlbmVyYXRvci9oZWxwZ2VuZXJhdG9yLmNwcAorQEAgLTQ0NSw3ICs0NDUsOSBA QCBib29sIEhlbHBHZW5lcmF0b3JQcml2YXRlOjppbnNlcnRGaWxlcyhjb25zdCBRU3RyaW5nTGlz dCAmZmlsZXMsIGNvbnN0IFFTdHJpbmcgJgorICAgICBpZiAoZmlsdGVyU2V0SWQgPCAwKQorICAg ICAgICAgcmV0dXJuIGZhbHNlOworICAgICArK2ZpbHRlclNldElkOworLSAgICBmb3IgKGludCBh dHRJZCA6IHFBc0NvbnN0KGZpbHRlckF0dHMpKSB7CisrICAgIFFMaXN0PGludD4gYXR0VmFsdWVz ID0gZmlsdGVyQXR0cy52YWx1ZXMoKTsKKysgICAgc3RkOjpzb3J0KGF0dFZhbHVlcy5iZWdpbigp LCBhdHRWYWx1ZXMuZW5kKCkpOworKyAgICBmb3IgKGludCBhdHRJZCA6IHFBc0NvbnN0KGF0dFZh bHVlcykpIHsKKyAgICAgICAgIG1fcXVlcnktPnByZXBhcmUoUUxhdGluMVN0cmluZygiSU5TRVJU IElOVE8gRmlsZUF0dHJpYnV0ZVNldFRhYmxlICIKKyAgICAgICAgICAgICAiVkFMVUVTKD8sID8p IikpOworICAgICAgICAgbV9xdWVyeS0+YmluZFZhbHVlKDAsIGZpbHRlclNldElkKTsKK1N1Ym1v ZHVsZSBxdHdheWxhbmQgZGZiMDEyOWMuLjI5MDRlMWIzOgorZGlmZiAtLWdpdCBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L2NvbmZpZ3VyZS5qc29uIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvY29uZmln dXJlLmpzb24KK2luZGV4IDJmNDI0NTgwLi4yOTIyMjM1NyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L2NvbmZpZ3VyZS5qc29uCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9j b25maWd1cmUuanNvbgorQEAgLTE0OSw4ICsxNDksNyBAQAorICAgICAgICAgICAgICAgICAgICAg IiNlbmRpZiIKKyAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgIH0sCistICAgICAgICAg ICAgImxpYnMiOiAiLWxkcm0iLAorLSAgICAgICAgICAgICJ1c2UiOiAiZWdsIgorKyAgICAgICAg ICAgICJ1c2UiOiAiZHJtIGVnbCIKKyAgICAgICAgIH0sCisgICAgICAgICAidnVsa2FuLXNlcnZl ci1idWZmZXIiOiB7CisgICAgICAgICAgICAgImxhYmVsIjogIlZ1bGthbiBCdWZmZXIgU2hhcmlu ZyIsCitAQCAtMTY4LDcgKzE2Nyw4IEBACisgICAgICAgICAgICAgICAgICAgICAiZXhwb3J0QWxs b2NJbmZvLmhhbmRsZVR5cGVzID0gVktfRVhURVJOQUxfTUVNT1JZX0hBTkRMRV9UWVBFX09QQVFV RV9GRF9CSVRfS0hSOyIsCisgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIDA7IgorICAgICAg ICAgICAgICAgICBdCistICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0sCisrICAgICAgICAg ICAgInVzZSI6ICJ3YXlsYW5kLWNsaWVudCIKKyAgICAgICAgIH0sCisgICAgICAgICAiZWdsXzFf NS13YXlsYW5kIjogeworICAgICAgICAgICAgICJsYWJlbCI6ICJFR0wgMS41IHdpdGggV2F5bGFu ZCBQbGF0Zm9ybSIsCitAQCAtMTgzLDcgKzE4Myw3IEBACisgICAgICAgICAgICAgICAgICAgICAi ZWdsR2V0UGxhdGZvcm1EaXNwbGF5KEVHTF9QTEFURk9STV9XQVlMQU5EX0VYVCwgKHN0cnVjdCB3 bF9kaXNwbGF5ICopKG51bGxwdHIpLCBudWxscHRyKTsiCisgICAgICAgICAgICAgICAgIF0KKyAg ICAgICAgICAgICB9LAorLSAgICAgICAgICAgICJ1c2UiOiAiZWdsIgorKyAgICAgICAgICAgICJ1 c2UiOiAiZWdsIHdheWxhbmQtY2xpZW50IgorICAgICAgICAgfQorICAgICB9LAorIAorZGlmZiAt LWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lv bi5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNp b24uY3BwCitpbmRleCAxMjViMWUxOS4uZWRjY2ZlNjMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQv c3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uY3BwCisrKysgYi9xdHdh eWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uY3BwCitAQCAt NzQsNyArNzQsMTAgQEAgdm9pZCBRV2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGU6OmhhbmRs ZVJlZ2lzdHJ5R2xvYmFsKHZvaWQgKmRhdGEsIDo6d2xfcmVnaXMKKyB2b2lkIFFXYXlsYW5kQ2xp ZW50RXh0ZW5zaW9uOjphZGRSZWdpc3RyeUxpc3RlbmVyKCkKKyB7CisgICAgIFFfRChRV2F5bGFu ZENsaWVudEV4dGVuc2lvbik7CistICAgIGQtPndheWxhbmRJbnRlZ3JhdGlvbi0+ZGlzcGxheSgp LT5hZGRSZWdpc3RyeUxpc3RlbmVyKCZRV2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGU6Omhh bmRsZVJlZ2lzdHJ5R2xvYmFsLCB0aGlzKTsKKysgICAgaWYgKCFkLT5yZWdpc3RlcmVkKSB7Cisr ICAgICAgICBkLT53YXlsYW5kSW50ZWdyYXRpb24tPmRpc3BsYXkoKS0+YWRkUmVnaXN0cnlMaXN0 ZW5lcigmUVdheWxhbmRDbGllbnRFeHRlbnNpb25Qcml2YXRlOjpoYW5kbGVSZWdpc3RyeUdsb2Jh bCwgdGhpcyk7CisrICAgICAgICBkLT5yZWdpc3RlcmVkID0gdHJ1ZTsKKysgICAgfQorIH0KKyAK KyBRV2F5bGFuZENsaWVudEV4dGVuc2lvbjo6UVdheWxhbmRDbGllbnRFeHRlbnNpb24oY29uc3Qg aW50IHZlcikKK0BAIC04OCw2ICs5MSwxMyBAQCBRV2F5bGFuZENsaWVudEV4dGVuc2lvbjo6UVdh eWxhbmRDbGllbnRFeHRlbnNpb24oY29uc3QgaW50IHZlcikKKyAgICAgUU1ldGFPYmplY3Q6Omlu dm9rZU1ldGhvZCh0aGlzLCAiYWRkUmVnaXN0cnlMaXN0ZW5lciIsIFF0OjpRdWV1ZWRDb25uZWN0 aW9uKTsKKyB9CisgCisrUVdheWxhbmRDbGllbnRFeHRlbnNpb246On5RV2F5bGFuZENsaWVudEV4 dGVuc2lvbigpCisreworKyAgICBRX0QoUVdheWxhbmRDbGllbnRFeHRlbnNpb24pOworKyAgICBp ZiAoZC0+cmVnaXN0ZXJlZCAmJiAhUUNvcmVBcHBsaWNhdGlvbjo6Y2xvc2luZ0Rvd24oKSkKKysg ICAgICAgIGQtPndheWxhbmRJbnRlZ3JhdGlvbi0+ZGlzcGxheSgpLT5yZW1vdmVMaXN0ZW5lcigm UVdheWxhbmRDbGllbnRFeHRlbnNpb25Qcml2YXRlOjpoYW5kbGVSZWdpc3RyeUdsb2JhbCwgdGhp cyk7CisrfQorKworIFF0V2F5bGFuZENsaWVudDo6UVdheWxhbmRJbnRlZ3JhdGlvbiAqUVdheWxh bmRDbGllbnRFeHRlbnNpb246OmludGVncmF0aW9uKCkgY29uc3QKKyB7CisgICAgIFFfRChjb25z dCBRV2F5bGFuZENsaWVudEV4dGVuc2lvbik7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmggYi9xdHdheWxhbmQvc3JjL2Ns aWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uaAoraW5kZXggOTgyNzJlNTcuLjVi ZDI4Mzk4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5k Y2xpZW50ZXh0ZW5zaW9uLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5 bGFuZGNsaWVudGV4dGVuc2lvbi5oCitAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBRX1dBWUxBTkRf Q0xJRU5UX0VYUE9SVCBRV2F5bGFuZENsaWVudEV4dGVuc2lvbiA6IHB1YmxpYyBRT2JqZWN0Cisg ICAgIFFfUFJPUEVSVFkoYm9vbCBhY3RpdmUgUkVBRCBpc0FjdGl2ZSBOT1RJRlkgYWN0aXZlQ2hh bmdlZCkKKyBwdWJsaWM6CisgICAgIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKGNvbnN0IGludCB2 ZXJzaW9uKTsKKysgICAgflFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKCk7CisgCisgICAgIFF0V2F5 bGFuZENsaWVudDo6UVdheWxhbmRJbnRlZ3JhdGlvbiAqaW50ZWdyYXRpb24oKSBjb25zdDsKKyAg ICAgaW50IHZlcnNpb24oKSBjb25zdDsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGll bnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uX3AuaAoraW5kZXggNjljYzQ2YTAuLjkw OTFlZmJlIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5k Y2xpZW50ZXh0ZW5zaW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3 YXlsYW5kY2xpZW50ZXh0ZW5zaW9uX3AuaAorQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgorICAg ICBRdFdheWxhbmRDbGllbnQ6OlFXYXlsYW5kSW50ZWdyYXRpb24gKndheWxhbmRJbnRlZ3JhdGlv biA9IG51bGxwdHI7CisgICAgIGludCB2ZXJzaW9uID0gLTE7CisgICAgIGJvb2wgYWN0aXZlID0g ZmFsc2U7CisrICAgIGJvb2wgcmVnaXN0ZXJlZCA9IGZhbHNlOworIH07CisgCisgY2xhc3MgUV9X QVlMQU5EX0NMSUVOVF9FWFBPUlQgUVdheWxhbmRDbGllbnRFeHRlbnNpb25UZW1wbGF0ZVByaXZh dGUgOiBwdWJsaWMgUVdheWxhbmRDbGllbnRFeHRlbnNpb25Qcml2YXRlCitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlLmNwcCBiL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZS5jcHAKK2luZGV4IDdlMmUzMzA4Li5lM2U2MGVk NSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZS5j cHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZS5jcHAKK0BA IC03Miw2ICs3Miw4IEBAIFFXYXlsYW5kRGF0YURldmljZTo6UVdheWxhbmREYXRhRGV2aWNlKFFX YXlsYW5kRGF0YURldmljZU1hbmFnZXIgKm1hbmFnZXIsIFFXYXlsCisgCisgUVdheWxhbmREYXRh RGV2aWNlOjp+UVdheWxhbmREYXRhRGV2aWNlKCkKKyB7CisrICAgIGlmICh3bF9kYXRhX2Rldmlj ZV9nZXRfdmVyc2lvbihvYmplY3QoKSkgPj0gV0xfREFUQV9ERVZJQ0VfUkVMRUFTRV9TSU5DRV9W RVJTSU9OKQorKyAgICAgICAgcmVsZWFzZSgpOworIH0KKyAKKyBRV2F5bGFuZERhdGFPZmZlciAq UVdheWxhbmREYXRhRGV2aWNlOjpzZWxlY3Rpb25PZmZlcigpIGNvbnN0CitAQCAtMTEwLDcgKzEx Miw3IEBAIFFXYXlsYW5kRGF0YU9mZmVyICpRV2F5bGFuZERhdGFEZXZpY2U6OmRyYWdPZmZlcigp IGNvbnN0CisgICAgIHJldHVybiBtX2RyYWdPZmZlci5kYXRhKCk7CisgfQorIAorLWJvb2wgUVdh eWxhbmREYXRhRGV2aWNlOjpzdGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0YSwgUVdheWxhbmRX aW5kb3cgKmljb24pCisrYm9vbCBRV2F5bGFuZERhdGFEZXZpY2U6OnN0YXJ0RHJhZyhRTWltZURh dGEgKm1pbWVEYXRhLCBRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucywgUVdheWxhbmRX aW5kb3cgKmljb24pCisgeworICAgICBhdXRvICpzZWF0ID0gbV9kaXNwbGF5LT5jdXJyZW50SW5w dXREZXZpY2UoKTsKKyAgICAgYXV0byAqb3JpZ2luID0gc2VhdC0+cG9pbnRlckZvY3VzKCk7CitA QCAtMTIzLDcgKzEyNSwyOCBAQCBib29sIFFXYXlsYW5kRGF0YURldmljZTo6c3RhcnREcmFnKFFN aW1lRGF0YSAqbWltZURhdGEsIFFXYXlsYW5kV2luZG93ICppY29uKQorICAgICB9CisgCisgICAg IG1fZHJhZ1NvdXJjZS5yZXNldChuZXcgUVdheWxhbmREYXRhU291cmNlKG1fZGlzcGxheS0+ZG5k U2VsZWN0aW9uSGFuZGxlcigpLCBtaW1lRGF0YSkpOworKworKyAgICBpZiAod2xfZGF0YV9kZXZp Y2VfZ2V0X3ZlcnNpb24ob2JqZWN0KCkpID49IDMpCisrICAgICAgICBtX2RyYWdTb3VyY2UtPnNl dF9hY3Rpb25zKGRyb3BBY3Rpb25zVG9XbChzdXBwb3J0ZWRBY3Rpb25zKSk7CisrCisgICAgIGNv bm5lY3QobV9kcmFnU291cmNlLmRhdGEoKSwgJlFXYXlsYW5kRGF0YVNvdXJjZTo6Y2FuY2VsbGVk LCB0aGlzLCAmUVdheWxhbmREYXRhRGV2aWNlOjpkcmFnU291cmNlQ2FuY2VsbGVkKTsKKysgICAg Y29ubmVjdChtX2RyYWdTb3VyY2UuZGF0YSgpLCAmUVdheWxhbmREYXRhU291cmNlOjpkbmRSZXNw b25zZVVwZGF0ZWQsIHRoaXMsIFt0aGlzXShib29sIGFjY2VwdGVkLCBRdDo6RHJvcEFjdGlvbiBh Y3Rpb24pIHsKKysgICAgICAgICAgICBhdXRvIGRyYWcgPSBzdGF0aWNfY2FzdDxRV2F5bGFuZERy YWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFn KCkpOworKyAgICAgICAgICAgIC8vIGluIG9sZCB2ZXJzaW9ucyBkcm9wIGFjdGlvbiBpcyBub3Qg c2V0LCBzbyB3ZSBndWVzcworKyAgICAgICAgICAgIGlmICh3bF9kYXRhX3NvdXJjZV9nZXRfdmVy c2lvbihtX2RyYWdTb3VyY2UtPm9iamVjdCgpKSA8IDMpIHsKKysgICAgICAgICAgICAgICAgZHJh Zy0+c2V0UmVzcG9uc2UoYWNjZXB0ZWQpOworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAg ICAgICAgICAgIFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlIHJlc3BvbnNlKGFjY2VwdGVkLCBhY3Rp b24pOworKyAgICAgICAgICAgICAgICBkcmFnLT5zZXRSZXNwb25zZShyZXNwb25zZSk7CisrICAg ICAgICAgICAgfQorKyAgICB9KTsKKysgICAgY29ubmVjdChtX2RyYWdTb3VyY2UuZGF0YSgpLCAm UVdheWxhbmREYXRhU291cmNlOjpkbmREcm9wcGVkLCB0aGlzLCBbXShib29sIGFjY2VwdGVkLCBR dDo6RHJvcEFjdGlvbiBhY3Rpb24pIHsKKysgICAgICAgIFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNl IHJlc3BvbnNlKGFjY2VwdGVkLCBhY3Rpb24pOworKyAgICAgICAgc3RhdGljX2Nhc3Q8UVdheWxh bmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ ZHJhZygpKS0+c2V0RHJvcFJlc3BvbnNlKHJlc3BvbnNlKTsKKysgICAgfSk7CisrICAgIGNvbm5l Y3QobV9kcmFnU291cmNlLmRhdGEoKSwgJlFXYXlsYW5kRGF0YVNvdXJjZTo6ZmluaXNoZWQsIHRo aXMsIFtdKCkgeworKyAgICAgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBs aWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+ZmluaXNoRHJh ZygpOworKyAgICB9KTsKKyAKKyAgICAgc3RhcnRfZHJhZyhtX2RyYWdTb3VyY2UtPm9iamVjdCgp LCBvcmlnaW4tPndsU3VyZmFjZSgpLCBpY29uLT53bFN1cmZhY2UoKSwgbV9kaXNwbGF5LT5jdXJy ZW50SW5wdXREZXZpY2UoKS0+c2VyaWFsKCkpOworICAgICByZXR1cm4gdHJ1ZTsKK0BAIC0xNTIs NyArMTc1LDcgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX2Ryb3AoKQor ICAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IGRyYWctPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAg ICAgfSBlbHNlIGlmIChtX2RyYWdPZmZlcikgeworICAgICAgICAgZHJhZ0RhdGEgPSBtX2RyYWdP ZmZlci0+bWltZURhdGEoKTsKKy0gICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBRdDo6Q29weUFj dGlvbiB8IFF0OjpNb3ZlQWN0aW9uIHwgUXQ6OkxpbmtBY3Rpb247CisrICAgICAgICBzdXBwb3J0 ZWRBY3Rpb25zID0gbV9kcmFnT2ZmZXItPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfSBlbHNl IHsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorQEAgLTE2Miw3ICsxODUsMTEgQEAgdm9pZCBR V2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX2Ryb3AoKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UUd1aUFwcGxpY2F0aW9uOjprZXlib2FyZE1vZGlmaWVycygpKTsKKyAKKyAgICAgaWYgKGRyYWcp IHsKKy0gICAgICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Q cml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSktPmZpbmlzaERyYWcocmVzcG9u c2UpOworKyAgICAgICAgYXV0byBkcmFnID0gIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihR R3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSk7Cisr ICAgICAgICBkcmFnLT5zZXREcm9wUmVzcG9uc2UocmVzcG9uc2UpOworKyAgICAgICAgZHJhZy0+ ZmluaXNoRHJhZygpOworKyAgICB9IGVsc2UgaWYgKG1fZHJhZ09mZmVyKSB7CisrICAgICAgICBt X2RyYWdPZmZlci0+ZmluaXNoKCk7CisgICAgIH0KKyB9CisgCitAQCAtMTg2LDcgKzIxMyw3IEBA IHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9lbnRlcih1aW50MzJfdCBzZXJp YWwsIHdsX3N1cmZhY2UgKnN1cmZhY2UsCisgICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gZHJh Zy0+c3VwcG9ydGVkQWN0aW9ucygpOworICAgICB9IGVsc2UgaWYgKG1fZHJhZ09mZmVyKSB7Cisg ICAgICAgICBkcmFnRGF0YSA9IG1fZHJhZ09mZmVyLT5taW1lRGF0YSgpOworLSAgICAgICAgc3Vw cG9ydGVkQWN0aW9ucyA9IFF0OjpDb3B5QWN0aW9uIHwgUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6TGlu a0FjdGlvbjsKKysgICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBtX2RyYWdPZmZlci0+c3VwcG9y dGVkQWN0aW9ucygpOworICAgICB9CisgCisgICAgIGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3Bv bnNlICZyZXNwb25zZSA9IFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZURyYWcobV9kcmFn V2luZG93LCBkcmFnRGF0YSwgbV9kcmFnUG9pbnQsIHN1cHBvcnRlZEFjdGlvbnMsCitAQCAtMTk3 LDExICsyMjQsNyBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfZW50ZXIo dWludDMyX3Qgc2VyaWFsLCB3bF9zdXJmYWNlICpzdXJmYWNlLAorICAgICAgICAgc3RhdGljX2Nh c3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdy YXRpb24oKS0+ZHJhZygpKS0+c2V0UmVzcG9uc2UocmVzcG9uc2UpOworICAgICB9CisgCistICAg IGlmIChyZXNwb25zZS5pc0FjY2VwdGVkKCkpIHsKKy0gICAgICAgIHdsX2RhdGFfb2ZmZXJfYWNj ZXB0KG1fZHJhZ09mZmVyLT5vYmplY3QoKSwgbV9lbnRlclNlcmlhbCwgbV9kcmFnT2ZmZXItPmZp cnN0Rm9ybWF0KCkudG9VdGY4KCkuY29uc3REYXRhKCkpOworLSAgICB9IGVsc2UgeworLSAgICAg ICAgd2xfZGF0YV9vZmZlcl9hY2NlcHQobV9kcmFnT2ZmZXItPm9iamVjdCgpLCBtX2VudGVyU2Vy aWFsLCBudWxscHRyKTsKKy0gICAgfQorKyAgICBzZW5kUmVzcG9uc2Uoc3VwcG9ydGVkQWN0aW9u cywgcmVzcG9uc2UpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZp Y2VfbGVhdmUoKQorQEAgLTIzNSwxMCArMjU4LDEwIEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNl OjpkYXRhX2RldmljZV9tb3Rpb24odWludDMyX3QgdGltZSwgd2xfZml4ZWRfdCB4LCB3bF9maXhl CisgICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gZHJhZy0+c3VwcG9ydGVkQWN0aW9ucygpOwor ICAgICB9IGVsc2UgeworICAgICAgICAgZHJhZ0RhdGEgPSBtX2RyYWdPZmZlci0+bWltZURhdGEo KTsKKy0gICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBRdDo6Q29weUFjdGlvbiB8IFF0OjpNb3Zl QWN0aW9uIHwgUXQ6OkxpbmtBY3Rpb247CisrICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gbV9k cmFnT2ZmZXItPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfQorIAorLSAgICBRUGxhdGZvcm1E cmFnUXRSZXNwb25zZSByZXNwb25zZSA9IFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZURy YWcobV9kcmFnV2luZG93LCBkcmFnRGF0YSwgbV9kcmFnUG9pbnQsIHN1cHBvcnRlZEFjdGlvbnMs CisrICAgIGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlIHJlc3BvbnNlID0gUVdpbmRvd1N5 c3RlbUludGVyZmFjZTo6aGFuZGxlRHJhZyhtX2RyYWdXaW5kb3csIGRyYWdEYXRhLCBtX2RyYWdQ b2ludCwgc3VwcG9ydGVkQWN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHdWlBcHBsaWNhdGlv bjo6bW91c2VCdXR0b25zKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRR3VpQXBwbGljYXRpb246Omtl eWJvYXJkTW9kaWZpZXJzKCkpOworIAorQEAgLTI0NiwxMSArMjY5LDcgQEAgdm9pZCBRV2F5bGFu ZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX21vdGlvbih1aW50MzJfdCB0aW1lLCB3bF9maXhlZF90 IHgsIHdsX2ZpeGUKKyAgICAgICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBw bGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSktPnNldFJlc3Bv bnNlKHJlc3BvbnNlKTsKKyAgICAgfQorIAorLSAgICBpZiAocmVzcG9uc2UuaXNBY2NlcHRlZCgp KSB7CistICAgICAgICB3bF9kYXRhX29mZmVyX2FjY2VwdChtX2RyYWdPZmZlci0+b2JqZWN0KCks IG1fZW50ZXJTZXJpYWwsIG1fZHJhZ09mZmVyLT5maXJzdEZvcm1hdCgpLnRvVXRmOCgpLmNvbnN0 RGF0YSgpKTsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIHdsX2RhdGFfb2ZmZXJfYWNjZXB0KG1f ZHJhZ09mZmVyLT5vYmplY3QoKSwgbV9lbnRlclNlcmlhbCwgbnVsbHB0cik7CistICAgIH0KKysg ICAgc2VuZFJlc3BvbnNlKHN1cHBvcnRlZEFjdGlvbnMsIHJlc3BvbnNlKTsKKyB9CisgI2VuZGlm IC8vIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkKKyAKK0BAIC0yNzcsMTQgKzI5NiwxMCBAQCB2b2lk IFFXYXlsYW5kRGF0YURldmljZTo6c2VsZWN0aW9uU291cmNlQ2FuY2VsbGVkKCkKKyAjaWYgUVRf Q09ORklHKGRyYWdhbmRkcm9wKQorIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkcmFnU291cmNl Q2FuY2VsbGVkKCkKKyB7CisrICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBw bGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSktPmZpbmlzaERy YWcoKTsKKyAgICAgbV9kcmFnU291cmNlLnJlc2V0KCk7CisgfQorIAorLXZvaWQgUVdheWxhbmRE YXRhRGV2aWNlOjpkcmFnU291cmNlVGFyZ2V0Q2hhbmdlZChjb25zdCBRU3RyaW5nICZtaW1lVHlw ZSkKKy17CistICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Q cml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSktPnVwZGF0ZVRhcmdldChtaW1l VHlwZSk7CistfQorLQorIFFQb2ludCBRV2F5bGFuZERhdGFEZXZpY2U6OmNhbGN1bGF0ZURyYWdQ b3NpdGlvbihpbnQgeCwgaW50IHksIFFXaW5kb3cgKnduZCkgY29uc3QKKyB7CisgICAgIFFQb2lu dCBwbnQod2xfZml4ZWRfdG9faW50KHgpLCB3bF9maXhlZF90b19pbnQoeSkpOworQEAgLTI5Nyw2 ICszMTIsMzMgQEAgUVBvaW50IFFXYXlsYW5kRGF0YURldmljZTo6Y2FsY3VsYXRlRHJhZ1Bvc2l0 aW9uKGludCB4LCBpbnQgeSwgUVdpbmRvdyAqd25kKSBjb24KKyAgICAgfQorICAgICByZXR1cm4g cG50OworIH0KKysKKyt2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6c2VuZFJlc3BvbnNlKFF0OjpE cm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rpb25zLCBjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25z ZSAmcmVzcG9uc2UpCisreworKyAgICBpZiAocmVzcG9uc2UuaXNBY2NlcHRlZCgpKSB7CisrICAg ICAgICBpZiAod2xfZGF0YV9kZXZpY2VfZ2V0X3ZlcnNpb24ob2JqZWN0KCkpID49IDMpCisrICAg ICAgICAgICAgbV9kcmFnT2ZmZXItPnNldF9hY3Rpb25zKGRyb3BBY3Rpb25zVG9XbChzdXBwb3J0 ZWRBY3Rpb25zKSwgZHJvcEFjdGlvbnNUb1dsKHJlc3BvbnNlLmFjY2VwdGVkQWN0aW9uKCkpKTsK KysKKysgICAgICAgIG1fZHJhZ09mZmVyLT5hY2NlcHQobV9lbnRlclNlcmlhbCwgbV9kcmFnT2Zm ZXItPmZpcnN0Rm9ybWF0KCkpOworKyAgICB9IGVsc2UgeworKyAgICAgICAgbV9kcmFnT2ZmZXIt PmFjY2VwdChtX2VudGVyU2VyaWFsLCBRU3RyaW5nKCkpOworKyAgICB9CisrfQorKworK2ludCBR V2F5bGFuZERhdGFEZXZpY2U6OmRyb3BBY3Rpb25zVG9XbChRdDo6RHJvcEFjdGlvbnMgYWN0aW9u cykKKyt7CisrCisrICAgIGludCB3bEFjdGlvbnMgPSBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RO RF9BQ1RJT05fTk9ORTsKKysgICAgaWYgKGFjdGlvbnMgJiBRdDo6Q29weUFjdGlvbikKKysgICAg ICAgIHdsQWN0aW9ucyB8PSBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fQ09QWTsK KysgICAgaWYgKGFjdGlvbnMgJiAoUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6VGFyZ2V0TW92ZUFjdGlv bikpCisrICAgICAgICB3bEFjdGlvbnMgfD0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNU SU9OX01PVkU7CisrCisrICAgIC8vIHdheWxhbmQgZG9lcyBub3Qgc3VwcG9ydCBMaW5rQWN0aW9u IGF0IHRoZSB0aW1lIG9mIHdyaXRpbmcKKysgICAgcmV0dXJuIHdsQWN0aW9uczsKKyt9CisrCisr CisgI2VuZGlmIC8vIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkKKyAKKyB9CitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlX3AuaCBiL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZV9wLmgKK2luZGV4IDE2YzNhZDI4Li44MDFkY2My YyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZV9w LmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZV9wLmgKK0BA IC02NCw2ICs2NCw3IEBAIFFUX1JFUVVJUkVfQ09ORklHKHdheWxhbmRfZGF0YWRldmljZSk7Cisg UVRfQkVHSU5fTkFNRVNQQUNFCisgCisgY2xhc3MgUU1pbWVEYXRhOworK2NsYXNzIFFQbGF0Zm9y bURyYWdRdFJlc3BvbnNlOworIGNsYXNzIFFXaW5kb3c7CisgCisgbmFtZXNwYWNlIFF0V2F5bGFu ZENsaWVudCB7CitAQCAtODksNyArOTAsNyBAQCBwdWJsaWM6CisgCisgI2lmIFFUX0NPTkZJRyhk cmFnYW5kZHJvcCkKKyAgICAgUVdheWxhbmREYXRhT2ZmZXIgKmRyYWdPZmZlcigpIGNvbnN0Owor LSAgICBib29sIHN0YXJ0RHJhZyhRTWltZURhdGEgKm1pbWVEYXRhLCBRV2F5bGFuZFdpbmRvdyAq aWNvbik7CisrICAgIGJvb2wgc3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURhdGEsIFF0OjpEcm9w QWN0aW9ucyBzdXBwb3J0ZWRBY3Rpb25zLCBRV2F5bGFuZFdpbmRvdyAqaWNvbik7CisgICAgIHZv aWQgY2FuY2VsRHJhZygpOworICNlbmRpZgorIAorQEAgLTEwOSwxMyArMTEwLDE2IEBAIHByaXZh dGUgUV9TTE9UUzoKKyAKKyAjaWYgUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorICAgICB2b2lkIGRy YWdTb3VyY2VDYW5jZWxsZWQoKTsKKy0gICAgdm9pZCBkcmFnU291cmNlVGFyZ2V0Q2hhbmdlZChj b25zdCBRU3RyaW5nICZtaW1lVHlwZSk7CisgI2VuZGlmCisgCisgcHJpdmF0ZToKKyAjaWYgUVRf Q09ORklHKGRyYWdhbmRkcm9wKQorICAgICBRUG9pbnQgY2FsY3VsYXRlRHJhZ1Bvc2l0aW9uKGlu dCB4LCBpbnQgeSwgUVdpbmRvdyAqd25kKSBjb25zdDsKKyAjZW5kaWYKKysgICAgdm9pZCBzZW5k UmVzcG9uc2UoUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMsIGNvbnN0IFFQbGF0Zm9y bURyYWdRdFJlc3BvbnNlICZyZXNwb25zZSk7CisrCisrICAgIHN0YXRpYyBpbnQgZHJvcEFjdGlv bnNUb1dsKFF0OjpEcm9wQWN0aW9ucyBkcm9wQWN0aW9ucyk7CisrCisgCisgICAgIFFXYXlsYW5k RGlzcGxheSAqbV9kaXNwbGF5ID0gbnVsbHB0cjsKKyAgICAgUVdheWxhbmRJbnB1dERldmljZSAq bV9pbnB1dERldmljZSA9IG51bGxwdHI7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlci5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyLmNwcAoraW5kZXggMzVkNjczMDcuLjZkYzRmNzdmIDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdl ci5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFn ZXIuY3BwCitAQCAtNTAsOCArNTAsOCBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBuYW1lc3Bh Y2UgUXRXYXlsYW5kQ2xpZW50IHsKKyAKKy1RV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyOjpRV2F5 bGFuZERhdGFEZXZpY2VNYW5hZ2VyKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSwgdWludDMyX3Qg aWQpCistICAgIDogd2xfZGF0YV9kZXZpY2VfbWFuYWdlcihkaXNwbGF5LT53bF9yZWdpc3RyeSgp LCBpZCwgMSkKKytRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyOjpRV2F5bGFuZERhdGFEZXZpY2VN YW5hZ2VyKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSwgaW50IHZlcnNpb24sIHVpbnQzMl90IGlk KQorKyAgICA6IHdsX2RhdGFfZGV2aWNlX21hbmFnZXIoZGlzcGxheS0+d2xfcmVnaXN0cnkoKSwg aWQsIHFNaW4odmVyc2lvbiwgMykpCisgICAgICwgbV9kaXNwbGF5KGRpc3BsYXkpCisgeworICAg ICAvLyBDcmVhdGUgdHJhbnNmZXIgZGV2aWNlcyBmb3IgYWxsIGlucHV0IGRldmljZXMuCitkaWZm IC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlcl9w LmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaAor aW5kZXggYmQwNWMwZmIuLjUxMGQ5YmU0IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlcl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXJfcC5oCitAQCAtNjgsNyArNjgsNyBAQCBjbGFz cyBRV2F5bGFuZElucHV0RGV2aWNlOworIGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFX YXlsYW5kRGF0YURldmljZU1hbmFnZXIgOiBwdWJsaWMgUXRXYXlsYW5kOjp3bF9kYXRhX2Rldmlj ZV9tYW5hZ2VyCisgeworIHB1YmxpYzoKKy0gICAgUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcihR V2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIHVpbnQzMl90IGlkKTsKKysgICAgUVdheWxhbmREYXRh RGV2aWNlTWFuYWdlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIGludCB2ZXJzaW9uLCB1aW50 MzJfdCBpZCk7CisgICAgIH5RV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKCkgb3ZlcnJpZGU7Cisg CisgICAgIFFXYXlsYW5kRGF0YURldmljZSAqZ2V0RGF0YURldmljZShRV2F5bGFuZElucHV0RGV2 aWNlICppbnB1dERldmljZSk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkYXRhb2ZmZXIuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2Zm ZXIuY3BwCitpbmRleCAyMjk3ZThhMS4uZmUwZWE4YzkgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlci5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kZGF0YW9mZmVyLmNwcAorQEAgLTgyLDYgKzgyLDE1IEBAIFFNaW1lRGF0YSAq UVdheWxhbmREYXRhT2ZmZXI6Om1pbWVEYXRhKCkKKyAgICAgcmV0dXJuIG1fbWltZURhdGEuZGF0 YSgpOworIH0KKyAKKytRdDo6RHJvcEFjdGlvbnMgUVdheWxhbmREYXRhT2ZmZXI6OnN1cHBvcnRl ZEFjdGlvbnMoKSBjb25zdAorK3sKKysgICAgaWYgKHdsX2RhdGFfb2ZmZXJfZ2V0X3ZlcnNpb24o Y29uc3RfY2FzdDw6OndsX2RhdGFfb2ZmZXIqPihvYmplY3QoKSkpIDwgMykgeworKyAgICAgICAg cmV0dXJuIFF0OjpNb3ZlQWN0aW9uIHwgUXQ6OkNvcHlBY3Rpb247CisrICAgIH0KKysKKysgICAg cmV0dXJuIG1fc3VwcG9ydGVkQWN0aW9uczsKKyt9CisrCisgdm9pZCBRV2F5bGFuZERhdGFPZmZl cjo6c3RhcnRSZWNlaXZpbmcoY29uc3QgUVN0cmluZyAmbWltZVR5cGUsIGludCBmZCkKKyB7Cisg ICAgIHJlY2VpdmUobWltZVR5cGUsIGZkKTsKK0BAIC05Myw2ICsxMDIsMjIgQEAgdm9pZCBRV2F5 bGFuZERhdGFPZmZlcjo6ZGF0YV9vZmZlcl9vZmZlcihjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUp CisgICAgIG1fbWltZURhdGEtPmFwcGVuZEZvcm1hdChtaW1lX3R5cGUpOworIH0KKyAKKyt2b2lk IFFXYXlsYW5kRGF0YU9mZmVyOjpkYXRhX29mZmVyX2FjdGlvbih1aW50MzJfdCBkbmRfYWN0aW9u KQorK3sKKysgICAgUV9VTlVTRUQoZG5kX2FjdGlvbik7CisrICAgIC8vIFRoaXMgaXMgdGhlIGNv bXBvc2l0b3IgdGVsbGluZyB0aGUgZHJhZyB0YXJnZXQgd2hhdCBhY3Rpb24gaXQgc2hvdWxkIHBl cmZvcm0KKysgICAgLy8gSXQgZG9lcyBub3QgbWFwIG5pY2VseSBpbnRvIFF0IGZpbmFsIGRyb3Ag c2VtYW50aWNzLCBvdGhlciB0aGFuIHByZXRlbmRpbmcgdGhlcmUgaXMgb25seSBvbmUgc3VwcG9y dGVkIGFjdGlvbj8KKyt9CisrCisrdm9pZCBRV2F5bGFuZERhdGFPZmZlcjo6ZGF0YV9vZmZlcl9z b3VyY2VfYWN0aW9ucyh1aW50MzJfdCBzb3VyY2VfYWN0aW9ucykKKyt7CisrICAgIG1fc3VwcG9y dGVkQWN0aW9ucyA9IFF0OjpEcm9wQWN0aW9ucygpOworKyAgICBpZiAoc291cmNlX2FjdGlvbnMg JiBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fTU9WRSkKKysgICAgICAgIG1fc3Vw cG9ydGVkQWN0aW9ucyB8PSBRdDo6TW92ZUFjdGlvbjsKKysgICAgaWYgKHNvdXJjZV9hY3Rpb25z ICYgV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX0NPUFkpCisrICAgICAgICBtX3N1 cHBvcnRlZEFjdGlvbnMgfD0gUXQ6OkNvcHlBY3Rpb247CisrfQorKworIFFXYXlsYW5kTWltZURh dGE6OlFXYXlsYW5kTWltZURhdGEoUVdheWxhbmRBYnN0cmFjdERhdGFPZmZlciAqZGF0YU9mZmVy KQorICAgICA6IG1fZGF0YU9mZmVyKGRhdGFPZmZlcikKKyB7CitAQCAtMTYzLDE3ICsxODgsMTgg QEAgUVZhcmlhbnQgUVdheWxhbmRNaW1lRGF0YTo6cmV0cmlldmVEYXRhX3N5cyhjb25zdCBRU3Ry aW5nICZtaW1lVHlwZSwgUVZhcmlhbnQ6OlQKKyAKKyBpbnQgUVdheWxhbmRNaW1lRGF0YTo6cmVh ZERhdGEoaW50IGZkLCBRQnl0ZUFycmF5ICZkYXRhKSBjb25zdAorIHsKKy0gICAgZmRfc2V0IHJl YWRzZXQ7CistICAgIEZEX1pFUk8oJnJlYWRzZXQpOworLSAgICBGRF9TRVQoZmQsICZyZWFkc2V0 KTsKKy0gICAgc3RydWN0IHRpbWV2YWwgdGltZW91dDsKKysgICAgc3RydWN0IHBvbGxmZCByZWFk c2V0OworKyAgICByZWFkc2V0LmZkID0gZmQ7CisrICAgIHJlYWRzZXQuZXZlbnRzID0gUE9MTElO OworKyAgICBzdHJ1Y3QgdGltZXNwZWMgdGltZW91dDsKKyAgICAgdGltZW91dC50dl9zZWMgPSAx OworLSAgICB0aW1lb3V0LnR2X3VzZWMgPSAwOworKyAgICB0aW1lb3V0LnR2X25zZWMgPSAwOwor KworIAorICAgICBRX0ZPUkVWRVIgeworLSAgICAgICAgaW50IHJlYWR5ID0gc2VsZWN0KEZEX1NF VFNJWkUsICZyZWFkc2V0LCBudWxscHRyLCBudWxscHRyLCAmdGltZW91dCk7CisrICAgICAgICBp bnQgcmVhZHkgPSBxdF9zYWZlX3BvbGwoJnJlYWRzZXQsIDEsICZ0aW1lb3V0KTsKKyAgICAgICAg IGlmIChyZWFkeSA8IDApIHsKKy0gICAgICAgICAgICBxV2FybmluZygpIDw8ICJRV2F5bGFuZERh dGFPZmZlcjogc2VsZWN0KCkgZmFpbGVkIjsKKysgICAgICAgICAgICBxV2FybmluZygpIDw8ICJR V2F5bGFuZERhdGFPZmZlcjogcXRfc2FmZV9wb2xsKCkgZmFpbGVkIjsKKyAgICAgICAgICAgICBy ZXR1cm4gLTE7CisgICAgICAgICB9IGVsc2UgaWYgKHJlYWR5ID09IDApIHsKKyAgICAgICAgICAg ICBxV2FybmluZygiUVdheWxhbmREYXRhT2ZmZXI6IHRpbWVvdXQgcmVhZGluZyBmcm9tIHBpcGUi KTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlcl9w LmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlcl9wLmgKK2luZGV4IDlj ZjE0ODNjLi42ZjY2NzM5OCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZGF0YW9mZmVyX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRh b2ZmZXJfcC5oCitAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6CisgICAgIGV4cGxpY2l0IFFXYXls YW5kRGF0YU9mZmVyKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSwgc3RydWN0IDo6d2xfZGF0YV9v ZmZlciAqb2ZmZXIpOworICAgICB+UVdheWxhbmREYXRhT2ZmZXIoKSBvdmVycmlkZTsKKyAgICAg UU1pbWVEYXRhICptaW1lRGF0YSgpIG92ZXJyaWRlOworKyAgICBRdDo6RHJvcEFjdGlvbnMgc3Vw cG9ydGVkQWN0aW9ucygpIGNvbnN0OworIAorICAgICBRU3RyaW5nIGZpcnN0Rm9ybWF0KCkgY29u c3Q7CisgCitAQCAtODksMTAgKzkwLDEzIEBAIHB1YmxpYzoKKyAKKyBwcm90ZWN0ZWQ6CisgICAg IHZvaWQgZGF0YV9vZmZlcl9vZmZlcihjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUpIG92ZXJyaWRl OworKyAgICB2b2lkIGRhdGFfb2ZmZXJfc291cmNlX2FjdGlvbnModWludDMyX3Qgc291cmNlX2Fj dGlvbnMpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfb2ZmZXJfYWN0aW9uKHVpbnQzMl90IGRu ZF9hY3Rpb24pIG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFXYXlsYW5kRGlzcGxheSAq bV9kaXNwbGF5ID0gbnVsbHB0cjsKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRNaW1lRGF0 YT4gbV9taW1lRGF0YTsKKysgICAgUXQ6OkRyb3BBY3Rpb25zIG1fc3VwcG9ydGVkQWN0aW9uczsK KyB9OworIAorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0 YXNvdXJjZS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2UuY3Bw CitpbmRleCBmNDUxMjJmYi4uNTU5OWNiZDQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGRhdGFzb3VyY2UuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGRhdGFzb3VyY2UuY3BwCitAQCAtMTAxLDcgKzEwMSwzMiBAQCB2b2lkIFFXYXlsYW5k RGF0YVNvdXJjZTo6ZGF0YV9zb3VyY2Vfc2VuZChjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUsIGlu dDMyX3QgZmQpCisgCisgdm9pZCBRV2F5bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX3Rhcmdl dChjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUpCisgeworLSAgICBRX0VNSVQgdGFyZ2V0Q2hhbmdl ZChtaW1lX3R5cGUpOworKyAgICBtX2FjY2VwdGVkID0gIW1pbWVfdHlwZS5pc0VtcHR5KCk7Cisr ICAgIFFfRU1JVCBkbmRSZXNwb25zZVVwZGF0ZWQobV9hY2NlcHRlZCwgbV9kcm9wQWN0aW9uKTsK Kyt9CisrCisrdm9pZCBRV2F5bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX2FjdGlvbih1aW50 MzJfdCBhY3Rpb24pCisreworKyAgICBRdDo6RHJvcEFjdGlvbiBxdEFjdGlvbiA9IFF0OjpJZ25v cmVBY3Rpb247CisrCisrICAgIGlmIChhY3Rpb24gPT0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9E TkRfQUNUSU9OX01PVkUpCisrICAgICAgICBxdEFjdGlvbiA9IFF0OjpNb3ZlQWN0aW9uOworKyAg ICBlbHNlIGlmIChhY3Rpb24gPT0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX0NP UFkpCisrICAgICAgICBxdEFjdGlvbiA9IFF0OjpDb3B5QWN0aW9uOworKworKyAgICBtX2Ryb3BB Y3Rpb24gPSBxdEFjdGlvbjsKKysgICAgUV9FTUlUIGRuZFJlc3BvbnNlVXBkYXRlZChtX2FjY2Vw dGVkLCBtX2Ryb3BBY3Rpb24pOworK30KKysKKyt2b2lkIFFXYXlsYW5kRGF0YVNvdXJjZTo6ZGF0 YV9zb3VyY2VfZG5kX2ZpbmlzaGVkKCkKKyt7CisrICAgIFFfRU1JVCBmaW5pc2hlZCgpOworK30K KysKKyt2b2lkIFFXYXlsYW5kRGF0YVNvdXJjZTo6ZGF0YV9zb3VyY2VfZG5kX2Ryb3BfcGVyZm9y bWVkKCkKKyt7CisrCisrICAgIFFfRU1JVCBkbmREcm9wcGVkKG1fYWNjZXB0ZWQsIG1fZHJvcEFj dGlvbik7CisgfQorIAorIH0KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRhdGFzb3VyY2VfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291 cmNlX3AuaAoraW5kZXggMjVhZmZmNzkuLjk2ZjA3YmMzIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5k L3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRkYXRhc291cmNlX3AuaAorQEAgLTc3LDE3ICs3NywyNSBAQCBwdWJsaWM6 CisgICAgIFFNaW1lRGF0YSAqbWltZURhdGEoKSBjb25zdDsKKyAKKyBRX1NJR05BTFM6CistICAg IHZvaWQgdGFyZ2V0Q2hhbmdlZChjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUpOworICAgICB2b2lk IGNhbmNlbGxlZCgpOworKyAgICB2b2lkIGZpbmlzaGVkKCk7CisrCisrICAgIHZvaWQgZG5kUmVz cG9uc2VVcGRhdGVkKGJvb2wgYWNjZXB0ZWQsIFF0OjpEcm9wQWN0aW9uIGFjdGlvbik7CisrICAg IHZvaWQgZG5kRHJvcHBlZChib29sIGFjY2VwdGVkLCBRdDo6RHJvcEFjdGlvbiBhY3Rpb24pOwor IAorIHByb3RlY3RlZDoKKyAgICAgdm9pZCBkYXRhX3NvdXJjZV9jYW5jZWxsZWQoKSBvdmVycmlk ZTsKKyAgICAgdm9pZCBkYXRhX3NvdXJjZV9zZW5kKGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSwg aW50MzJfdCBmZCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgZGF0YV9zb3VyY2VfdGFyZ2V0KGNvbnN0 IFFTdHJpbmcgJm1pbWVfdHlwZSkgb3ZlcnJpZGU7CisrICAgIHZvaWQgZGF0YV9zb3VyY2VfZG5k X2Ryb3BfcGVyZm9ybWVkKCkgb3ZlcnJpZGU7CisrICAgIHZvaWQgZGF0YV9zb3VyY2VfZG5kX2Zp bmlzaGVkKCkgb3ZlcnJpZGU7CisrICAgIHZvaWQgZGF0YV9zb3VyY2VfYWN0aW9uKHVpbnQzMl90 IGFjdGlvbikgb3ZlcnJpZGU7CisgCisgcHJpdmF0ZToKKyAgICAgUVdheWxhbmREaXNwbGF5ICpt X2Rpc3BsYXkgPSBudWxscHRyOworICAgICBRTWltZURhdGEgKm1fbWltZV9kYXRhID0gbnVsbHB0 cjsKKysgICAgYm9vbCBtX2FjY2VwdGVkID0gZmFsc2U7CisrICAgIFF0OjpEcm9wQWN0aW9uIG1f ZHJvcEFjdGlvbiA9IFF0OjpJZ25vcmVBY3Rpb247CisgfTsKKyAKKyB9CitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5LmNwcCBiL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kZGlzcGxheS5jcHAKK2luZGV4IGYxMGMxZjc5Li5jMDFlMjM4YiAxMDA2 NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheS5jcHAKKysrKyBi L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheS5jcHAKK0BAIC04NSwxMCArODUs MjAzIEBACisgCisgI2luY2x1ZGUgPGVycm5vLmg+CisgCisrI2luY2x1ZGUgPHR1cGxlPiAvLyBm b3Igc3RkOjp0aWUKKysKKytzdGF0aWMgdm9pZCBjaGVja1dheWxhbmRFcnJvcihzdHJ1Y3Qgd2xf ZGlzcGxheSAqZGlzcGxheSkKKyt7CisrICAgIGludCBlY29kZSA9IHdsX2Rpc3BsYXlfZ2V0X2Vy cm9yKGRpc3BsYXkpOworKyAgICBpZiAoKGVjb2RlID09IEVQSVBFIHx8IGVjb2RlID09IEVDT05O UkVTRVQpKSB7CisrICAgICAgICAvLyBzcGVjaWFsIGNhc2UgdGhpcyB0byBwcm92aWRlIGEgbmlj ZXIgZXJyb3IKKysgICAgICAgIHFXYXJuaW5nKCJUaGUgV2F5bGFuZCBjb25uZWN0aW9uIGJyb2tl LiBEaWQgdGhlIFdheWxhbmQgY29tcG9zaXRvciBkaWU/Iik7CisrICAgIH0gZWxzZSB7CisrICAg ICAgICBxV2FybmluZygiVGhlIFdheWxhbmQgY29ubmVjdGlvbiBleHBlcmllbmNlZCBhIGZhdGFs IGVycm9yOiAlcyIsIHN0cmVycm9yKGVjb2RlKSk7CisrICAgIH0KKysgICAgX2V4aXQoMSk7Cisr fQorKworIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQg eworIAorK2NsYXNzIEV2ZW50VGhyZWFkIDogcHVibGljIFFUaHJlYWQKKyt7CisrICAgIFFfT0JK RUNUCisrcHVibGljOgorKyAgICBlbnVtIE9wZXJhdGluZ01vZGUgeworKyAgICAgICAgRW1pdFRv RGlzcGF0Y2gsIC8vIEVtaXQgdGhlIHNpZ25hbCwgYWxsb3cgZGlzcGF0Y2hpbmcgaW4gYSBkaWZm ZXJudCB0aHJlYWQuCisrICAgICAgICBTZWxmRGlzcGF0Y2gsIC8vIERpc3BhdGNoIHRoZSBldmVu dHMgaW5zaWRlIHRoaXMgdGhyZWFkLgorKyAgICB9OworKworKyAgICBFdmVudFRocmVhZChzdHJ1 Y3Qgd2xfZGlzcGxheSAqIHdsLCBzdHJ1Y3Qgd2xfZXZlbnRfcXVldWUgKiBldl9xdWV1ZSwKKysg ICAgICAgICAgICAgICAgT3BlcmF0aW5nTW9kZSBtb2RlKQorKyAgICAgICAgOiBtX2ZkKHdsX2Rp c3BsYXlfZ2V0X2ZkKHdsKSkKKysgICAgICAgICwgbV9waXBlZmR7IC0xLCAtMSB9CisrICAgICAg ICAsIG1fd2xkaXNwbGF5KHdsKQorKyAgICAgICAgLCBtX3dsZXZxdWV1ZShldl9xdWV1ZSkKKysg ICAgICAgICwgbV9tb2RlKG1vZGUpCisrICAgICAgICAsIG1fcmVhZGluZyh0cnVlKQorKyAgICAg ICAgLCBtX3F1aXR0aW5nKGZhbHNlKQorKyAgICB7CisrICAgICAgICBzZXRPYmplY3ROYW1lKFFT dHJpbmdMaXRlcmFsKCJXYXlsYW5kRXZlbnRUaHJlYWQiKSk7CisrICAgIH0KKysKKysgICAgdm9p ZCByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKQorKyAgICB7CisrICAgICAgICAvKgorKyAgICAgICAg ICogRGlzcGF0Y2ggcGVuZGluZyBldmVudHMgYW5kIGZsdXNoIHRoZSByZXF1ZXN0cyBhdCBsZWFz dCBvbmNlLiBJZiB0aGUgZXZlbnQgdGhyZWFkCisrICAgICAgICAgKiBpcyBub3QgcmVhZGluZywg dHJ5IHRvIGNhbGwgX3ByZXBhcmVfcmVhZCgpIHRvIGFsbG93IHRoZSBldmVudCB0aHJlYWQgdG8g cG9sbCgpLgorKyAgICAgICAgICogSWYgdGhhdCBmYWlscywgcmUtdHJ5IGRpc3BhdGNoICYgZmx1 c2ggYWdhaW4gdW50aWwgX3ByZXBhcmVfcmVhZCgpIGlzIHN1Y2Nlc3NmdWwuCisrICAgICAgICAg KgorKyAgICAgICAgICogVGhpcyBhbGxvdyBhbnkgY2FsbCB0byByZWFkQW5kRGlzcGF0Y2hFdmVu dHMoKSB0byBzdGFydCBldmVudCB0aHJlYWQncyBwb2xsaW5nLAorKyAgICAgICAgICogbm90IG9u bHkgdGhlIG9uZSBpc3N1ZWQgZnJvbSBldmVudCB0aHJlYWQncyB3YWl0Rm9yUmVhZGluZygpLCB3 aGljaCBtZWFucyBmdW5jdGlvbnMKKysgICAgICAgICAqIGNhbGxlZCBmcm9tIGRpc3BhdGNoX3Bl bmRpbmcoKSBjYW4gc2FmZWx5IHNwaW4gYW4gZXZlbnQgbG9vcC4KKysgICAgICAgICAqLworKyAg ICAgICAgZm9yICg7OykgeworKyAgICAgICAgICAgIGlmIChkaXNwYXRjaFF1ZXVlUGVuZGluZygp IDwgMCkgeworKyAgICAgICAgICAgICAgICBjaGVja1dheWxhbmRFcnJvcihtX3dsZGlzcGxheSk7 CisrICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAg ICAgd2xfZGlzcGxheV9mbHVzaChtX3dsZGlzcGxheSk7CisrCisrICAgICAgICAgICAgLy8gV2Ug aGF2ZSB0byBjaGVjayBpZiBldmVudCB0aHJlYWQgaXMgcmVhZGluZyBldmVyeSB0aW1lIHdlIGRp c3BhdGNoCisrICAgICAgICAgICAgLy8gc29tZXRoaW5nLCBhcyB0aGF0IG1heSByZWN1cnNpdmVs eSBjYWxsIHRoaXMgZnVuY3Rpb24uCisrICAgICAgICAgICAgaWYgKG1fcmVhZGluZy5sb2FkQWNx dWlyZSgpKQorKyAgICAgICAgICAgICAgICBicmVhazsKKysKKysgICAgICAgICAgICBpZiAocHJl cGFyZVJlYWRRdWV1ZSgpID09IDApIHsKKysgICAgICAgICAgICAgICAgUU11dGV4TG9ja2VyIGwo Jm1fbXV0ZXgpOworKyAgICAgICAgICAgICAgICBtX3JlYWRpbmcuc3RvcmVSZWxlYXNlKHRydWUp OworKyAgICAgICAgICAgICAgICBtX2NvbmQud2FrZU9uZSgpOworKyAgICAgICAgICAgICAgICBi cmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgdm9pZCBz dG9wKCkKKysgICAgeworKyAgICAgICAgLy8gV2UgaGF2ZSB0byBib3RoIHdyaXRlIHRvIHRoZSBw aXBlIGFuZCBzZXQgdGhlIGZsYWcsIGFzIHRoZSB0aHJlYWQgbWF5IGJlCisrICAgICAgICAvLyBl aXRoZXIgaW4gdGhlIHBvbGwoKSBvciB3YWl0aW5nIGZvciBfcHJlcGFyZV9yZWFkKCkuCisrICAg ICAgICBpZiAobV9waXBlZmRbMV0gIT0gLTEgJiYgd3JpdGUobV9waXBlZmRbMV0sICJcMCIsIDEp ID09IC0xKQorKyAgICAgICAgICAgIHFXYXJuaW5nKCJGYWlsZWQgdG8gd3JpdGUgdG8gdGhlIHBp cGU6ICVzLiIsIHN0cmVycm9yKGVycm5vKSk7CisrCisrICAgICAgICB7CisrICAgICAgICAgICAg UU11dGV4TG9ja2VyIGwoJm1fbXV0ZXgpOworKyAgICAgICAgICAgIG1fcXVpdHRpbmcgPSB0cnVl OworKyAgICAgICAgICAgIG1fY29uZC53YWtlT25lKCk7CisrICAgICAgICB9CisrCisrICAgICAg ICB3YWl0KCk7CisrICAgIH0KKysKKytRX1NJR05BTFM6CisrICAgIHZvaWQgbmVlZFJlYWRBbmRE aXNwYXRjaCgpOworKworK3Byb3RlY3RlZDoKKysgICAgdm9pZCBydW4oKSBvdmVycmlkZQorKyAg ICB7CisrICAgICAgICAvLyB3ZSB1c2UgdGhpcyBwaXBlIHRvIG1ha2UgdGhlIGxvb3AgZXhpdCBv dGhlcndpc2UgaWYgd2Ugc2ltcGx5IHVzZWQgYSBmbGFnIG9uIHRoZSBsb29wIGNvbmRpdGlvbiwg aWYgc3RvcCgpIGdldHMKKysgICAgICAgIC8vIGNhbGxlZCB3aGlsZSBwb2xsKCkgaXMgYmxvY2tp bmcgdGhlIHRocmVhZCB3aWxsIG5ldmVyIHF1aXQgc2luY2UgdGhlcmUgYXJlIG5vIHdheWxhbmQg bWVzc2FnZXMgY29taW5nIGFueW1vcmUuCisrICAgICAgICBzdHJ1Y3QgUGlwZQorKyAgICAgICAg eworKyAgICAgICAgICAgIFBpcGUoaW50ICpmZHMpCisrICAgICAgICAgICAgICAgIDogZmRzKGZk cykKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGlmIChxdF9zYWZlX3BpcGUoZmRz KSAhPSAwKQorKyAgICAgICAgICAgICAgICAgICAgcVdhcm5pbmcoIlBpcGUgY3JlYXRpb24gZmFp bGVkLiBRdWl0dGluZyBtYXkgaGFuZy4iKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAg flBpcGUoKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgaWYgKGZkc1swXSAhPSAt MSkgeworKyAgICAgICAgICAgICAgICAgICAgY2xvc2UoZmRzWzBdKTsKKysgICAgICAgICAgICAg ICAgICAgIGNsb3NlKGZkc1sxXSk7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9 CisrCisrICAgICAgICAgICAgaW50ICpmZHM7CisrICAgICAgICB9IHBpcGUobV9waXBlZmQpOwor KworKyAgICAgICAgLy8gTWFrZSB0aGUgbWFpbiB0aHJlYWQgY2FsbCB3bF9wcmVwYXJlX3JlYWQo KSwgZGlzcGF0Y2ggdGhlIHBlbmRpbmcgbWVzc2FnZXMgYW5kIGZsdXNoIHRoZQorKyAgICAgICAg Ly8gb3V0Ym91bmQgb25lcy4gV2FpdCB1bnRpbCBpdCdzIGRvbmUgYmVmb3JlIHByb2NlZWRpbmcs IHVubGVzcyB3ZSdyZSB0b2xkIHRvIHF1aXQuCisrICAgICAgICB3aGlsZSAod2FpdEZvclJlYWRp bmcoKSkgeworKyAgICAgICAgICAgIHBvbGxmZCBmZHNbMl0gPSB7IHsgbV9mZCwgUE9MTElOLCAw IH0sIHsgbV9waXBlZmRbMF0sIFBPTExJTiwgMCB9IH07CisrICAgICAgICAgICAgcG9sbChmZHMs IDIsIC0xKTsKKysKKysgICAgICAgICAgICBpZiAoZmRzWzFdLnJldmVudHMgJiBQT0xMSU4pIHsK KysgICAgICAgICAgICAgICAgLy8gd2UgZG9uJ3QgcmVhbGx5IGNhcmUgdG8gcmVhZCB0aGUgYnl0 ZSB0aGF0IHdhcyB3cml0dGVuIGhlcmUgc2luY2Ugd2UncmUgY2xvc2luZyBkb3duCisrICAgICAg ICAgICAgICAgIHdsX2Rpc3BsYXlfY2FuY2VsX3JlYWQobV93bGRpc3BsYXkpOworKyAgICAgICAg ICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgaWYgKGZkc1sw XS5yZXZlbnRzICYgUE9MTElOKQorKyAgICAgICAgICAgICAgICB3bF9kaXNwbGF5X3JlYWRfZXZl bnRzKG1fd2xkaXNwbGF5KTsKKysgICAgICAgICAgICAgICAgLy8gVGhlIHBvbGxsIHdhcyBzdWNj ZXNmdWxsIGFuZCB0aGUgZXZlbnQgdGhyZWFkIGRpZCB0aGUgd2xfZGlzcGxheV9yZWFkX2V2ZW50 cygpLiBPbiB0aGUgbmV4dCBpdGVyYXRpb24gb2YgdGhlIGxvb3AKKysgICAgICAgICAgICAgICAg Ly8gdGhlIGV2ZW50IHNlbnQgdG8gdGhlIG1haW4gdGhyZWFkIHdpbGwgY2F1c2UgaXQgdG8gZGlz cGF0Y2ggdGhlIG1lc3NhZ2VzIGp1c3QgcmVhZCwgdW5sZXNzIHRoZSBsb29wIGV4aXRzIGluIHdo aWNoCisrICAgICAgICAgICAgICAgIC8vIGNhc2Ugd2UgZG9uJ3QgY2FyZSBhbnltb3JlIGFib3V0 IHRoZW0uCisrICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICB3bF9kaXNwbGF5X2Nh bmNlbF9yZWFkKG1fd2xkaXNwbGF5KTsKKysgICAgICAgIH0KKysgICAgfQorKworK3ByaXZhdGU6 CisrICAgIGJvb2wgd2FpdEZvclJlYWRpbmcoKQorKyAgICB7CisrICAgICAgICBRX0FTU0VSVChR VGhyZWFkOjpjdXJyZW50VGhyZWFkKCkgPT0gdGhpcyk7CisrCisrICAgICAgICBtX3JlYWRpbmcu c3RvcmVSZWxlYXNlKGZhbHNlKTsKKysKKysgICAgICAgIGlmIChtX21vZGUgPT0gU2VsZkRpc3Bh dGNoKSB7CisrICAgICAgICAgICAgcmVhZEFuZERpc3BhdGNoRXZlbnRzKCk7CisrICAgICAgICB9 IGVsc2UgeworKyAgICAgICAgICAgIFFfRU1JVCBuZWVkUmVhZEFuZERpc3BhdGNoKCk7CisrCisr ICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2soJm1fbXV0ZXgpOworKyAgICAgICAgICAgIC8v IG1fcmVhZGluZyBtaWdodCBiZSBzZXQgZnJvbSBvdXIgZW1pdCBvciBzb21lIG90aGVyIGludm9j YXRpb24gb2YKKysgICAgICAgICAgICAvLyByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKS4KKysgICAg ICAgICAgICB3aGlsZSAoIW1fcmVhZGluZy5sb2FkUmVsYXhlZCgpICYmICFtX3F1aXR0aW5nKQor KyAgICAgICAgICAgICAgICBtX2NvbmQud2FpdCgmbV9tdXRleCk7CisrICAgICAgICB9CisrCisr ICAgICAgICByZXR1cm4gIW1fcXVpdHRpbmc7CisrICAgIH0KKysKKysgICAgaW50IGRpc3BhdGNo UXVldWVQZW5kaW5nKCkKKysgICAgeworKyAgICAgICAgaWYgKG1fd2xldnF1ZXVlKQorKyAgICAg ICAgICAgIHJldHVybiB3bF9kaXNwbGF5X2Rpc3BhdGNoX3F1ZXVlX3BlbmRpbmcobV93bGRpc3Bs YXksIG1fd2xldnF1ZXVlKTsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICByZXR1cm4gd2xf ZGlzcGxheV9kaXNwYXRjaF9wZW5kaW5nKG1fd2xkaXNwbGF5KTsKKysgICAgfQorKworKyAgICBp bnQgcHJlcGFyZVJlYWRRdWV1ZSgpCisrICAgIHsKKysgICAgICAgIGlmIChtX3dsZXZxdWV1ZSkK KysgICAgICAgICAgICByZXR1cm4gd2xfZGlzcGxheV9wcmVwYXJlX3JlYWRfcXVldWUobV93bGRp c3BsYXksIG1fd2xldnF1ZXVlKTsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICByZXR1cm4g d2xfZGlzcGxheV9wcmVwYXJlX3JlYWQobV93bGRpc3BsYXkpOworKyAgICB9CisrCisrICAgIGlu dCBtX2ZkOworKyAgICBpbnQgbV9waXBlZmRbMl07CisrICAgIHdsX2Rpc3BsYXkgKm1fd2xkaXNw bGF5OworKyAgICB3bF9ldmVudF9xdWV1ZSAqbV93bGV2cXVldWU7CisrICAgIE9wZXJhdGluZ01v ZGUgbV9tb2RlOworKworKyAgICAvKiBDb25jdXJyZW5jeSBub3RlIHdoZW4gb3BlcmF0aW5nIGlu IEVtaXRUb0Rpc3BhdGNoIG1vZGU6CisrICAgICAqIG1fcmVhZGluZyBpcyBzZXQgdG8gZmFsc2Ug aW5zaWRlIGV2ZW50IHRocmVhZCdzIHdhaXRGb3JSZWFkaW5nKCksIGFuZCBpcworKyAgICAgKiBz ZXQgdG8gdHJ1ZSBpbnNpZGUgbWFpbiB0aHJlYWQncyByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKS4K KysgICAgICogVGhlIGxvY2sgaXMgbm90IHRha2VuIHdoZW4gc2V0dGluZyBtX3JlYWRpbmcgdG8g ZmFsc2UsIGFzIHRoZSBtYWluIHRocmVhZAorKyAgICAgKiBpcyBub3QgYWN0aXZlbHkgd2FpdGlu ZyBmb3IgaXQgdG8gdHVybiBmYWxzZS4gSG93ZXZlciwgdGhlIGxvY2sgaXMgdGFrZW4KKysgICAg ICogaW5zaWRlIHJlYWRBbmREaXNwYXRjaEV2ZW50cygpIGJlZm9yZSBzZXR0aW5nIG1fcmVhZGlu ZyB0byB0cnVlLAorKyAgICAgKiBhcyB0aGUgZXZlbnQgdGhyZWFkIGlzIGFjdGl2ZWx5IHdhaXRp bmcgZm9yIGl0IHVuZGVyIHRoZSB3YWl0IGNvbmRpdGlvbi4KKysgICAgICovCisrCisrICAgIFFB dG9taWNJbnRlZ2VyPGJvb2w+IG1fcmVhZGluZzsKKysgICAgYm9vbCBtX3F1aXR0aW5nOworKyAg ICBRTXV0ZXggbV9tdXRleDsKKysgICAgUVdhaXRDb25kaXRpb24gbV9jb25kOworK307CisrCisg UV9MT0dHSU5HX0NBVEVHT1JZKGxjUXBhV2F5bGFuZCwgInF0LnFwYS53YXlsYW5kIik7IC8vIGZv ciBnZW5lcmFsICh1bmNhdGVnb3JpemVkKSBXYXlsYW5kIHBsYXRmb3JtIGxvZ2dpbmcKKyAKKyBz dHJ1Y3Qgd2xfc3VyZmFjZSAqUVdheWxhbmREaXNwbGF5OjpjcmVhdGVTdXJmYWNlKHZvaWQgKmhh bmRsZSkKK0BAIC0xNTgsMTcgKzM1MSwxNiBAQCBRV2F5bGFuZERpc3BsYXk6OlFXYXlsYW5kRGlz cGxheShRV2F5bGFuZEludGVncmF0aW9uICp3YXlsYW5kSW50ZWdyYXRpb24pCisgICAgIGlmICgh bVhrYkNvbnRleHQpCisgICAgICAgICBxQ1dhcm5pbmcobGNRcGFXYXlsYW5kLCAiZmFpbGVkIHRv IGNyZWF0ZSB4a2IgY29udGV4dCIpOworICNlbmRpZgorLQorLSAgICBmb3JjZVJvdW5kVHJpcCgp OworLQorLSAgICBpZiAoIW1XYWl0aW5nU2NyZWVucy5pc0VtcHR5KCkpIHsKKy0gICAgICAgIC8v IEdpdmUgd2xfb3V0cHV0LmRvbmUgYW5kIHp4ZGdfb3V0cHV0X3YxLmRvbmUgZXZlbnRzIGEgY2hh bmNlIHRvIGFycml2ZQorLSAgICAgICAgZm9yY2VSb3VuZFRyaXAoKTsKKy0gICAgfQorIH0KKyAK KyBRV2F5bGFuZERpc3BsYXk6On5RV2F5bGFuZERpc3BsYXkodm9pZCkKKyB7CisrICAgIGlmICht X2V2ZW50VGhyZWFkKQorKyAgICAgICAgbV9ldmVudFRocmVhZC0+c3RvcCgpOworKworKyAgICBp ZiAobV9mcmFtZUV2ZW50UXVldWVUaHJlYWQpCisrICAgICAgICBtX2ZyYW1lRXZlbnRRdWV1ZVRo cmVhZC0+c3RvcCgpOworKworICAgICBpZiAobVN5bmNDYWxsYmFjaykKKyAgICAgICAgIHdsX2Nh bGxiYWNrX2Rlc3Ryb3kobVN5bmNDYWxsYmFjayk7CisgCitAQCAtMTg3LDYgKzM3OSwyMSBAQCBR V2F5bGFuZERpc3BsYXk6On5RV2F5bGFuZERpc3BsYXkodm9pZCkKKyAjZW5kaWYKKyAgICAgaWYg KG1EaXNwbGF5KQorICAgICAgICAgd2xfZGlzcGxheV9kaXNjb25uZWN0KG1EaXNwbGF5KTsKKysK KysgICAgaWYgKG1fZnJhbWVFdmVudFF1ZXVlKQorKyAgICAgICAgd2xfZXZlbnRfcXVldWVfZGVz dHJveShtX2ZyYW1lRXZlbnRRdWV1ZSk7CisrfQorKworKy8vIFN0ZXBzIHdoaWNoIGlzIGNhbGxl ZCBqdXN0IGFmdGVyIGNvbnN0cnVjdG9yLiBUaGlzIHNlcGFyYXRlcyByZWdpc3RyeV9nbG9iYWwo KSBvdXQgb2YgdGhlIGNvbnN0cnVjdG9yCisrLy8gc28gdGhhdCBmYWN0b3J5IGZ1bmN0aW9ucyBp biBpbnRlZ3JhdGlvbiBjYW4gYmUgb3ZlcnJpZGRlbi4KKyt2b2lkIFFXYXlsYW5kRGlzcGxheTo6 aW5pdGlhbGl6ZSgpCisreworKyAgICBmb3JjZVJvdW5kVHJpcCgpOworKworKyAgICBpZiAoIW1X YWl0aW5nU2NyZWVucy5pc0VtcHR5KCkpIHsKKysgICAgICAgIC8vIEdpdmUgd2xfb3V0cHV0LmRv bmUgYW5kIHp4ZGdfb3V0cHV0X3YxLmRvbmUgZXZlbnRzIGEgY2hhbmNlIHRvIGFycml2ZQorKyAg ICAgICAgZm9yY2VSb3VuZFRyaXAoKTsKKysgICAgfQorIH0KKyAKKyB2b2lkIFFXYXlsYW5kRGlz cGxheTo6ZW5zdXJlU2NyZWVuKCkKK0BAIC0yMDMsOTggKzQxMCwzNyBAQCB2b2lkIFFXYXlsYW5k RGlzcGxheTo6ZW5zdXJlU2NyZWVuKCkKKyAKKyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6Y2hlY2tF cnJvcigpIGNvbnN0CisgeworLSAgICBpbnQgZWNvZGUgPSB3bF9kaXNwbGF5X2dldF9lcnJvciht RGlzcGxheSk7CistICAgIGlmICgoZWNvZGUgPT0gRVBJUEUgfHwgZWNvZGUgPT0gRUNPTk5SRVNF VCkpIHsKKy0gICAgICAgIC8vIHNwZWNpYWwgY2FzZSB0aGlzIHRvIHByb3ZpZGUgYSBuaWNlciBl cnJvcgorLSAgICAgICAgcVdhcm5pbmcoIlRoZSBXYXlsYW5kIGNvbm5lY3Rpb24gYnJva2UuIERp ZCB0aGUgV2F5bGFuZCBjb21wb3NpdG9yIGRpZT8iKTsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAg IHFXYXJuaW5nKCJUaGUgV2F5bGFuZCBjb25uZWN0aW9uIGV4cGVyaWVuY2VkIGEgZmF0YWwgZXJy b3I6ICVzIiwgc3RyZXJyb3IoZWNvZGUpKTsKKy0gICAgfQorLSAgICBfZXhpdCgxKTsKKysgICAg Y2hlY2tXYXlsYW5kRXJyb3IobURpc3BsYXkpOworIH0KKyAKKysvLyBDYWxsZWQgaW4gbWFpbiB0 aHJlYWQsIGVpdGhlciBmcm9tIHF1ZXVlZCBzaWduYWwgb3IgZGlyZWN0bHkuCisgdm9pZCBRV2F5 bGFuZERpc3BsYXk6OmZsdXNoUmVxdWVzdHMoKQorIHsKKy0gICAgaWYgKHdsX2Rpc3BsYXlfcHJl cGFyZV9yZWFkKG1EaXNwbGF5KSA9PSAwKSB7CistICAgICAgICB3bF9kaXNwbGF5X3JlYWRfZXZl bnRzKG1EaXNwbGF5KTsKKy0gICAgfQorLQorLSAgICBpZiAod2xfZGlzcGxheV9kaXNwYXRjaF9w ZW5kaW5nKG1EaXNwbGF5KSA8IDApCistICAgICAgICBjaGVja0Vycm9yKCk7CistCistICAgIHsK Ky0gICAgICAgIFFSZWFkTG9ja2VyIGxvY2tlcigmbV9mcmFtZVF1ZXVlTG9jayk7CistICAgICAg ICBmb3IgKGNvbnN0IEZyYW1lUXVldWUgJnEgOiBtRXh0ZXJuYWxRdWV1ZXMpIHsKKy0gICAgICAg ICAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKHEubXV0ZXgpOworLSAgICAgICAgICAgIHdoaWxlICh3 bF9kaXNwbGF5X3ByZXBhcmVfcmVhZF9xdWV1ZShtRGlzcGxheSwgcS5xdWV1ZSkgIT0gMCkKKy0g ICAgICAgICAgICAgICAgd2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1EaXNwbGF5 LCBxLnF1ZXVlKTsKKy0gICAgICAgICAgICB3bF9kaXNwbGF5X3JlYWRfZXZlbnRzKG1EaXNwbGF5 KTsKKy0gICAgICAgICAgICB3bF9kaXNwbGF5X2Rpc3BhdGNoX3F1ZXVlX3BlbmRpbmcobURpc3Bs YXksIHEucXVldWUpOworLSAgICAgICAgfQorLSAgICB9CistCistICAgIHdsX2Rpc3BsYXlfZmx1 c2gobURpc3BsYXkpOworLX0KKy0KKy12b2lkIFFXYXlsYW5kRGlzcGxheTo6YmxvY2tpbmdSZWFk RXZlbnRzKCkKKy17CistICAgIGlmICh3bF9kaXNwbGF5X2Rpc3BhdGNoKG1EaXNwbGF5KSA8IDAp CistICAgICAgICBjaGVja0Vycm9yKCk7CistfQorLQorLXZvaWQgUVdheWxhbmREaXNwbGF5Ojpk ZXN0cm95RnJhbWVRdWV1ZShjb25zdCBRV2F5bGFuZERpc3BsYXk6OkZyYW1lUXVldWUgJnEpCist eworLSAgICBRV3JpdGVMb2NrZXIgbG9ja2VyKCZtX2ZyYW1lUXVldWVMb2NrKTsKKy0gICAgYXV0 byBpdCA9IHN0ZDo6ZmluZF9pZihtRXh0ZXJuYWxRdWV1ZXMuYmVnaW4oKSwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICBtRXh0ZXJuYWxRdWV1ZXMuZW5kKCksCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgWyZxXSAoY29uc3QgUVdheWxhbmREaXNwbGF5OjpGcmFtZVF1ZXVlICZvdGhl cil7IHJldHVybiBvdGhlci5xdWV1ZSA9PSBxLnF1ZXVlOyB9KTsKKy0gICAgUV9BU1NFUlQoaXQg IT0gbUV4dGVybmFsUXVldWVzLmVuZCgpKTsKKy0gICAgbUV4dGVybmFsUXVldWVzLmVyYXNlKGl0 KTsKKy0gICAgaWYgKHEucXVldWUgIT0gbnVsbHB0cikKKy0gICAgICAgIHdsX2V2ZW50X3F1ZXVl X2Rlc3Ryb3kocS5xdWV1ZSk7CistICAgIGRlbGV0ZSBxLm11dGV4OworKyAgICBtX2V2ZW50VGhy ZWFkLT5yZWFkQW5kRGlzcGF0Y2hFdmVudHMoKTsKKyB9CisgCistUVdheWxhbmREaXNwbGF5OjpG cmFtZVF1ZXVlIFFXYXlsYW5kRGlzcGxheTo6Y3JlYXRlRnJhbWVRdWV1ZSgpCisrLy8gV2UgaGF2 ZSB0byB3YWl0IHVudGlsIHdlIGhhdmUgYW4gZXZlbnREaXNwYXRjaGVyIGJlZm9yZSBjcmVhdGlu ZyB0aGUgZXZlbnRUaHJlYWQsCisrLy8gb3RoZXJ3aXNlIGZvcmNlUm91bmRUcmlwKCkgbWF5IGJs b2NrIGluc2lkZSBfZXZlbnRzX3JlYWQoKSBiZWNhdXNlIGV2ZW50VGhyZWFkIGlzCisrLy8gcG9s bGluZy4KKyt2b2lkIFFXYXlsYW5kRGlzcGxheTo6aW5pdEV2ZW50VGhyZWFkKCkKKyB7CistICAg IFFXcml0ZUxvY2tlciBsb2NrZXIoJm1fZnJhbWVRdWV1ZUxvY2spOworLSAgICBGcmFtZVF1ZXVl IHF7Y3JlYXRlRXZlbnRRdWV1ZSgpfTsKKy0gICAgbUV4dGVybmFsUXVldWVzLmFwcGVuZChxKTsK Ky0gICAgcmV0dXJuIHE7CistfQorKyAgICBtX2V2ZW50VGhyZWFkLnJlc2V0KAorKyAgICAgICAg ICAgIG5ldyBFdmVudFRocmVhZChtRGlzcGxheSwgLyogZGVmYXVsdCBxdWV1ZSAqLyBudWxscHRy LCBFdmVudFRocmVhZDo6RW1pdFRvRGlzcGF0Y2gpKTsKKysgICAgY29ubmVjdChtX2V2ZW50VGhy ZWFkLmdldCgpLCAmRXZlbnRUaHJlYWQ6Om5lZWRSZWFkQW5kRGlzcGF0Y2gsIHRoaXMsCisrICAg ICAgICAgICAgJlFXYXlsYW5kRGlzcGxheTo6Zmx1c2hSZXF1ZXN0cywgUXQ6OlF1ZXVlZENvbm5l Y3Rpb24pOworKyAgICBtX2V2ZW50VGhyZWFkLT5zdGFydCgpOworIAorLXdsX2V2ZW50X3F1ZXVl ICpRV2F5bGFuZERpc3BsYXk6OmNyZWF0ZUV2ZW50UXVldWUoKQorLXsKKy0gICAgcmV0dXJuIHds X2Rpc3BsYXlfY3JlYXRlX3F1ZXVlKG1EaXNwbGF5KTsKKysgICAgLy8gd2xfZGlzcGxheV9kaXNj b25uZWN0KCkgZnJlZSB0aGlzLgorKyAgICBtX2ZyYW1lRXZlbnRRdWV1ZSA9IHdsX2Rpc3BsYXlf Y3JlYXRlX3F1ZXVlKG1EaXNwbGF5KTsKKysgICAgbV9mcmFtZUV2ZW50UXVldWVUaHJlYWQucmVz ZXQoCisrICAgICAgICAgICAgbmV3IEV2ZW50VGhyZWFkKG1EaXNwbGF5LCBtX2ZyYW1lRXZlbnRR dWV1ZSwgRXZlbnRUaHJlYWQ6OlNlbGZEaXNwYXRjaCkpOworKyAgICBtX2ZyYW1lRXZlbnRRdWV1 ZVRocmVhZC0+c3RhcnQoKTsKKyB9CisgCistdm9pZCBRV2F5bGFuZERpc3BsYXk6OmRpc3BhdGNo UXVldWVXaGlsZSh3bF9ldmVudF9xdWV1ZSAqcXVldWUsIHN0ZDo6ZnVuY3Rpb248Ym9vbCAoKT4g Y29uZGl0aW9uLCBpbnQgdGltZW91dCkKKyt2b2lkIFFXYXlsYW5kRGlzcGxheTo6YmxvY2tpbmdS ZWFkRXZlbnRzKCkKKyB7CistICAgIGlmICghY29uZGl0aW9uKCkpCistICAgICAgICByZXR1cm47 CistCistICAgIFFFbGFwc2VkVGltZXIgdGltZXI7CistICAgIHRpbWVyLnN0YXJ0KCk7CistICAg IHN0cnVjdCBwb2xsZmQgcEZkID0gcXRfbWFrZV9wb2xsZmQod2xfZGlzcGxheV9nZXRfZmQobURp c3BsYXkpLCBQT0xMSU4pOworLSAgICB3aGlsZSAodGltZW91dCA9PSAtMSB8fCB0aW1lci5lbGFw c2VkKCkgPCB0aW1lb3V0KSB7CistICAgICAgICB3aGlsZSAod2xfZGlzcGxheV9wcmVwYXJlX3Jl YWRfcXVldWUobURpc3BsYXksIHF1ZXVlKSAhPSAwKQorLSAgICAgICAgICAgIHdsX2Rpc3BsYXlf ZGlzcGF0Y2hfcXVldWVfcGVuZGluZyhtRGlzcGxheSwgcXVldWUpOworLQorLSAgICAgICAgd2xf ZGlzcGxheV9mbHVzaChtRGlzcGxheSk7CistCistICAgICAgICBjb25zdCBpbnQgcmVtYWluaW5n ID0gcU1heCh0aW1lb3V0IC0gdGltZXIuZWxhcHNlZCgpLCAwbGwpOworLSAgICAgICAgY29uc3Qg aW50IHBvbGxUaW1lb3V0ID0gdGltZW91dCA9PSAtMSA/IC0xIDogcmVtYWluaW5nOworLSAgICAg ICAgaWYgKHF0X3BvbGxfbXNlY3MoJnBGZCwgMSwgcG9sbFRpbWVvdXQpID4gMCkKKy0gICAgICAg ICAgICB3bF9kaXNwbGF5X3JlYWRfZXZlbnRzKG1EaXNwbGF5KTsKKy0gICAgICAgIGVsc2UKKy0g ICAgICAgICAgICB3bF9kaXNwbGF5X2NhbmNlbF9yZWFkKG1EaXNwbGF5KTsKKy0KKy0gICAgICAg IGlmICh3bF9kaXNwbGF5X2Rpc3BhdGNoX3F1ZXVlX3BlbmRpbmcobURpc3BsYXksIHF1ZXVlKSA8 IDApCistICAgICAgICAgICAgY2hlY2tFcnJvcigpOworLQorLSAgICAgICAgaWYgKCFjb25kaXRp b24oKSkKKy0gICAgICAgICAgICBicmVhazsKKy0gICAgfQorKyAgICBpZiAod2xfZGlzcGxheV9k aXNwYXRjaChtRGlzcGxheSkgPCAwKQorKyAgICAgICAgY2hlY2tXYXlsYW5kRXJyb3IobURpc3Bs YXkpOworIH0KKyAKKyBRV2F5bGFuZFNjcmVlbiAqUVdheWxhbmREaXNwbGF5OjpzY3JlZW5Gb3JP dXRwdXQoc3RydWN0IHdsX291dHB1dCAqb3V0cHV0KSBjb25zdAorQEAgLTM0NSw3ICs0OTEsNyBA QCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6cmVnaXN0cnlfZ2xvYmFsKHVpbnQzMl90IGlkLCBjb25z dCBRU3RyaW5nICZpbnRlcmZhY2UsIHVpbgorICAgICBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdM aXRlcmFsKCJ3bF9vdXRwdXQiKSkgeworICAgICAgICAgbVdhaXRpbmdTY3JlZW5zIDw8IG5ldyBR V2F5bGFuZFNjcmVlbih0aGlzLCB2ZXJzaW9uLCBpZCk7CisgICAgIH0gZWxzZSBpZiAoaW50ZXJm YWNlID09IFFTdHJpbmdMaXRlcmFsKCJ3bF9jb21wb3NpdG9yIikpIHsKKy0gICAgICAgIG1Db21w b3NpdG9yVmVyc2lvbiA9IHFNaW4oKGludCl2ZXJzaW9uLCAzKTsKKysgICAgICAgIG1Db21wb3Np dG9yVmVyc2lvbiA9IHFNaW4oKGludCl2ZXJzaW9uLCA0KTsKKyAgICAgICAgIG1Db21wb3NpdG9y LmluaXQocmVnaXN0cnksIGlkLCBtQ29tcG9zaXRvclZlcnNpb24pOworICAgICB9IGVsc2UgaWYg KGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgid2xfc2htIikpIHsKKyAgICAgICAgIG1TaG0u cmVzZXQobmV3IFFXYXlsYW5kU2htKHRoaXMsIHZlcnNpb24sIGlkKSk7CitAQCAtMzU0LDcgKzUw MCw3IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpyZWdpc3RyeV9nbG9iYWwodWludDMyX3QgaWQs IGNvbnN0IFFTdHJpbmcgJmludGVyZmFjZSwgdWluCisgICAgICAgICBtSW5wdXREZXZpY2VzLmFw cGVuZChpbnB1dERldmljZSk7CisgI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2RhdGFkZXZpY2UpCisg ICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ3bF9kYXRhX2Rldmlj ZV9tYW5hZ2VyIikpIHsKKy0gICAgICAgIG1EbmRTZWxlY3Rpb25IYW5kbGVyLnJlc2V0KG5ldyBR V2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKHRoaXMsIGlkKSk7CisrICAgICAgICBtRG5kU2VsZWN0 aW9uSGFuZGxlci5yZXNldChuZXcgUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcih0aGlzLCB2ZXJz aW9uLCBpZCkpOworICNlbmRpZgorICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5n TGl0ZXJhbCgicXRfc3VyZmFjZV9leHRlbnNpb24iKSkgeworICAgICAgICAgbVdpbmRvd0V4dGVu c2lvbi5yZXNldChuZXcgUXRXYXlsYW5kOjpxdF9zdXJmYWNlX2V4dGVuc2lvbihyZWdpc3RyeSwg aWQsIDEpKTsKK0BAIC0zNjksNiArNTE1LDggQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlZ2lz dHJ5X2dsb2JhbCh1aW50MzJfdCBpZCwgY29uc3QgUVN0cmluZyAmaW50ZXJmYWNlLCB1aW4KKyAj aWYgUVRfQ09ORklHKHdheWxhbmRfY2xpZW50X3ByaW1hcnlfc2VsZWN0aW9uKQorICAgICB9IGVs c2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgiendwX3ByaW1hcnlfc2VsZWN0aW9u X2RldmljZV9tYW5hZ2VyX3YxIikpIHsKKyAgICAgICAgIG1QcmltYXJ5U2VsZWN0aW9uTWFuYWdl ci5yZXNldChuZXcgUVdheWxhbmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlTWFuYWdlclYxKHRoaXMs IGlkLCAxKSk7CisrICAgICAgICBmb3IgKFFXYXlsYW5kSW5wdXREZXZpY2UgKmlucHV0RGV2aWNl IDogcUFzQ29uc3QobUlucHV0RGV2aWNlcykpCisrICAgICAgICAgICAgaW5wdXREZXZpY2UtPnNl dFByaW1hcnlTZWxlY3Rpb25EZXZpY2UobVByaW1hcnlTZWxlY3Rpb25NYW5hZ2VyLT5jcmVhdGVE ZXZpY2UoaW5wdXREZXZpY2UpKTsKKyAjZW5kaWYKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2Ug PT0gUVN0cmluZ0xpdGVyYWwoInp3cF90ZXh0X2lucHV0X21hbmFnZXJfdjIiKSAmJiAhbUNsaWVu dFNpZGVJbnB1dENvbnRleHRSZXF1ZXN0ZWQpIHsKKyAgICAgICAgIG1UZXh0SW5wdXRNYW5hZ2Vy LnJlc2V0KG5ldyBRdFdheWxhbmQ6Onp3cF90ZXh0X2lucHV0X21hbmFnZXJfdjIocmVnaXN0cnks IGlkLCAxKSk7CitAQCAtNDI3LDYgKzU3NSwxMyBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6cmVn aXN0cnlfZ2xvYmFsX3JlbW92ZSh1aW50MzJfdCBpZCkKKyAgICAgICAgICAgICAgICAgICAgIGlu cHV0RGV2aWNlLT5zZXRUZXh0SW5wdXQobnVsbHB0cik7CisgICAgICAgICAgICAgICAgIG1XYXls YW5kSW50ZWdyYXRpb24tPnJlY29uZmlndXJlSW5wdXRDb250ZXh0KCk7CisgICAgICAgICAgICAg fQorKyNpZiBRVF9DT05GSUcod2F5bGFuZF9jbGllbnRfcHJpbWFyeV9zZWxlY3Rpb24pCisrICAg ICAgICAgICAgaWYgKGdsb2JhbC5pbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoInp3cF9wcmlt YXJ5X3NlbGVjdGlvbl9kZXZpY2VfbWFuYWdlcl92MSIpKSB7CisrICAgICAgICAgICAgICAgIG1Q cmltYXJ5U2VsZWN0aW9uTWFuYWdlci5yZXNldCgpOworKyAgICAgICAgICAgICAgICBmb3IgKFFX YXlsYW5kSW5wdXREZXZpY2UgKmlucHV0RGV2aWNlIDogcUFzQ29uc3QobUlucHV0RGV2aWNlcykp CisrICAgICAgICAgICAgICAgICAgICBpbnB1dERldmljZS0+c2V0UHJpbWFyeVNlbGVjdGlvbkRl dmljZShudWxscHRyKTsKKysgICAgICAgICAgICB9CisrI2VuZGlmCisgICAgICAgICAgICAgbUds b2JhbHMucmVtb3ZlQXQoaSk7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CitAQCAt NDUyLDkgKzYwNywxMCBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6YWRkUmVnaXN0cnlMaXN0ZW5l cihSZWdpc3RyeUxpc3RlbmVyIGxpc3RlbmVyLCB2b2lkICpkYXRhKQorIAorIHZvaWQgUVdheWxh bmREaXNwbGF5OjpyZW1vdmVMaXN0ZW5lcihSZWdpc3RyeUxpc3RlbmVyIGxpc3RlbmVyLCB2b2lk ICpkYXRhKQorIHsKKy0gICAgc3RkOjpyZW1vdmVfaWYobVJlZ2lzdHJ5TGlzdGVuZXJzLmJlZ2lu KCksIG1SZWdpc3RyeUxpc3RlbmVycy5lbmQoKSwgWz1dKExpc3RlbmVyIGwpeworKyAgICBhdXRv IGl0ZXIgPSBzdGQ6OnJlbW92ZV9pZihtUmVnaXN0cnlMaXN0ZW5lcnMuYmVnaW4oKSwgbVJlZ2lz dHJ5TGlzdGVuZXJzLmVuZCgpLCBbPV0oTGlzdGVuZXIgbCl7CisgICAgICAgICByZXR1cm4gKGwu bGlzdGVuZXIgPT0gbGlzdGVuZXIgJiYgbC5kYXRhID09IGRhdGEpOworICAgICB9KTsKKysgICAg bVJlZ2lzdHJ5TGlzdGVuZXJzLmVyYXNlKGl0ZXIsIG1SZWdpc3RyeUxpc3RlbmVycy5lbmQoKSk7 CisgfQorIAorIHVpbnQzMl90IFFXYXlsYW5kRGlzcGxheTo6Y3VycmVudFRpbWVNaWxsaXNlYygp CitAQCAtNDY3LDUwICs2MjMsOSBAQCB1aW50MzJfdCBRV2F5bGFuZERpc3BsYXk6OmN1cnJlbnRU aW1lTWlsbGlzZWMoKQorICAgICByZXR1cm4gMDsKKyB9CisgCistc3RhdGljIHZvaWQKKy1zeW5j X2NhbGxiYWNrKHZvaWQgKmRhdGEsIHN0cnVjdCB3bF9jYWxsYmFjayAqY2FsbGJhY2ssIHVpbnQz Ml90IHNlcmlhbCkKKy17CistICAgIFFfVU5VU0VEKHNlcmlhbCkKKy0gICAgYm9vbCAqZG9uZSA9 IHN0YXRpY19jYXN0PGJvb2wgKj4oZGF0YSk7CistCistICAgICpkb25lID0gdHJ1ZTsKKy0KKy0g ICAgLy8gSWYgdGhlIHdsX2NhbGxiYWNrIGRvbmUgZXZlbnQgaXMgcmVjZWl2ZWQgYWZ0ZXIgdGhl IGNvbmRpdGlvbiBjaGVjayBpbiB0aGUgd2hpbGUgbG9vcCBpbgorLSAgICAvLyBmb3JjZVJvdW5k VHJpcCgpLCBidXQgYmVmb3JlIHRoZSBjYWxsIHRvIHByb2Nlc3NFdmVudHMsIHRoZSBjYWxsIHRv IHByb2Nlc3NFdmVudHMgbWF5IGJsb2NrCistICAgIC8vIGZvcmV2ZXIgaWYgbm8gbW9yZSBldmVu dHMgYXJlIHBvc3RlZCAoZXZlbnRob3VnaCB0aGUgY2FsbGJhY2sgaXMgaGFuZGxlZCBpbiByZXNw b25zZSB0byB0aGUKKy0gICAgLy8gYWJvdXRUb0Jsb2NrIHNpZ25hbCkuIEhlbmNlLCB3ZSB3YWtl IHVwIHRoZSBldmVudCBkaXNwYXRjaGVyIHNvIGZvcmNlUm91bmRUcmlwIG1heSByZXR1cm4uCist ICAgIC8vIChRVEJVRy02NDY5NikKKy0gICAgaWYgKGF1dG8gKmRpc3BhdGNoZXIgPSBRVGhyZWFk OjpjdXJyZW50VGhyZWFkKCktPmV2ZW50RGlzcGF0Y2hlcigpKQorLSAgICAgICAgZGlzcGF0Y2hl ci0+d2FrZVVwKCk7CistCistICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3koY2FsbGJhY2spOworLX0K Ky0KKy1zdGF0aWMgY29uc3Qgc3RydWN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIHN5bmNfbGlzdGVu ZXIgPSB7CistICAgIHN5bmNfY2FsbGJhY2sKKy19OworLQorIHZvaWQgUVdheWxhbmREaXNwbGF5 Ojpmb3JjZVJvdW5kVHJpcCgpCisgeworLSAgICAvLyB3bF9kaXNwbGF5X3JvdW5kdHJpcCgpIHdv cmtzIG9uIHRoZSBtYWluIHF1ZXVlIG9ubHksCistICAgIC8vIGJ1dCB3ZSB1c2UgYSBzZXBhcmF0 ZSBvbmUsIHNvIGJhc2ljYWxseSByZWltcGxlbWVudCBpdCBoZXJlCistICAgIGludCByZXQgPSAw OworLSAgICBib29sIGRvbmUgPSBmYWxzZTsKKy0gICAgd2xfY2FsbGJhY2sgKmNhbGxiYWNrID0g d2xfZGlzcGxheV9zeW5jKG1EaXNwbGF5KTsKKy0gICAgd2xfY2FsbGJhY2tfYWRkX2xpc3RlbmVy KGNhbGxiYWNrLCAmc3luY19saXN0ZW5lciwgJmRvbmUpOworLSAgICBmbHVzaFJlcXVlc3RzKCk7 CistICAgIGlmIChRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCktPmV2ZW50RGlzcGF0Y2hlcigpKSB7 CistICAgICAgICB3aGlsZSAoIWRvbmUgJiYgcmV0ID49IDApIHsKKy0gICAgICAgICAgICBRVGhy ZWFkOjpjdXJyZW50VGhyZWFkKCktPmV2ZW50RGlzcGF0Y2hlcigpLT5wcm9jZXNzRXZlbnRzKFFF dmVudExvb3A6OldhaXRGb3JNb3JlRXZlbnRzKTsKKy0gICAgICAgICAgICByZXQgPSB3bF9kaXNw bGF5X2Rpc3BhdGNoX3BlbmRpbmcobURpc3BsYXkpOworLSAgICAgICAgfQorLSAgICB9IGVsc2Ug eworLSAgICAgICAgd2hpbGUgKCFkb25lICYmIHJldCA+PSAwKQorLSAgICAgICAgICAgIHJldCA9 IHdsX2Rpc3BsYXlfZGlzcGF0Y2gobURpc3BsYXkpOworLSAgICB9CistCistICAgIGlmIChyZXQg PT0gLTEgJiYgIWRvbmUpCistICAgICAgICB3bF9jYWxsYmFja19kZXN0cm95KGNhbGxiYWNrKTsK KysgICAgIHdsX2Rpc3BsYXlfcm91bmR0cmlwKG1EaXNwbGF5KTsKKyB9CisgCisgYm9vbCBRV2F5 bGFuZERpc3BsYXk6OnN1cHBvcnRzV2luZG93RGVjb3JhdGlvbigpIGNvbnN0CitAQCAtNTc0LDE0 ICs2ODksMTAgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmhhbmRsZUtleWJvYXJkRm9jdXNDaGFu Z2VkKFFXYXlsYW5kSW5wdXREZXZpY2UgKmlucHV0RGV2aWMKKyAgICAgaWYgKG1MYXN0S2V5Ym9h cmRGb2N1cyA9PSBrZXlib2FyZEZvY3VzKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBpZiAo bVdheWxhbmRJbnRlZ3JhdGlvbi0+bVNoZWxsSW50ZWdyYXRpb24pIHsKKy0gICAgICAgIG1XYXls YW5kSW50ZWdyYXRpb24tPm1TaGVsbEludGVncmF0aW9uLT5oYW5kbGVLZXlib2FyZEZvY3VzQ2hh bmdlZChrZXlib2FyZEZvY3VzLCBtTGFzdEtleWJvYXJkRm9jdXMpOworLSAgICB9IGVsc2Ugewor LSAgICAgICAgaWYgKGtleWJvYXJkRm9jdXMpCistICAgICAgICAgICAgaGFuZGxlV2luZG93QWN0 aXZhdGVkKGtleWJvYXJkRm9jdXMpOworLSAgICAgICAgaWYgKG1MYXN0S2V5Ym9hcmRGb2N1cykK Ky0gICAgICAgICAgICBoYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChtTGFzdEtleWJvYXJkRm9jdXMp OworLSAgICB9CisrICAgIGlmIChrZXlib2FyZEZvY3VzKQorKyAgICAgICAgaGFuZGxlV2luZG93 QWN0aXZhdGVkKGtleWJvYXJkRm9jdXMpOworKyAgICBpZiAobUxhc3RLZXlib2FyZEZvY3VzKQor KyAgICAgICAgaGFuZGxlV2luZG93RGVhY3RpdmF0ZWQobUxhc3RLZXlib2FyZEZvY3VzKTsKKyAK KyAgICAgbUxhc3RLZXlib2FyZEZvY3VzID0ga2V5Ym9hcmRGb2N1czsKKyB9CitAQCAtNjAwLDYg KzcxMSwxOSBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6aGFuZGxlV2F5bGFuZFN5bmMoKQorICAg ICBRV2luZG93ICphY3RpdmVXaW5kb3cgPSBtQWN0aXZlV2luZG93cy5lbXB0eSgpID8gbnVsbHB0 ciA6IG1BY3RpdmVXaW5kb3dzLmxhc3QoKS0+d2luZG93KCk7CisgICAgIGlmIChhY3RpdmVXaW5k b3cgIT0gUUd1aUFwcGxpY2F0aW9uOjpmb2N1c1dpbmRvdygpKQorICAgICAgICAgUVdpbmRvd1N5 c3RlbUludGVyZmFjZTo6aGFuZGxlV2luZG93QWN0aXZhdGVkKGFjdGl2ZVdpbmRvdyk7CisrCisr ICAgIGlmICghYWN0aXZlV2luZG93KSB7CisrICAgICAgICBpZiAobGFzdElucHV0RGV2aWNlKCkp IHsKKysjaWYgUVRfQ09ORklHKGNsaXBib2FyZCkKKysgICAgICAgICAgICBpZiAoYXV0byAqZGF0 YURldmljZSA9IGxhc3RJbnB1dERldmljZSgpLT5kYXRhRGV2aWNlKCkpCisrICAgICAgICAgICAg ICAgIGRhdGFEZXZpY2UtPmludmFsaWRhdGVTZWxlY3Rpb25PZmZlcigpOworKyNlbmRpZgorKyNp ZiBRVF9DT05GSUcod2F5bGFuZF9jbGllbnRfcHJpbWFyeV9zZWxlY3Rpb24pCisrICAgICAgICAg ICAgaWYgKGF1dG8gKmRldmljZSA9IGxhc3RJbnB1dERldmljZSgpLT5wcmltYXJ5U2VsZWN0aW9u RGV2aWNlKCkpCisrICAgICAgICAgICAgICAgIGRldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlvbk9m ZmVyKCk7CisrI2VuZGlmCisrICAgICAgICB9CisrICAgIH0KKyB9CisgCisgY29uc3Qgd2xfY2Fs bGJhY2tfbGlzdGVuZXIgUVdheWxhbmREaXNwbGF5OjpzeW5jQ2FsbGJhY2tMaXN0ZW5lciA9IHsK K0BAIC02MjYsNiArNzUwLDEzIEBAIFFXYXlsYW5kSW5wdXREZXZpY2UgKlFXYXlsYW5kRGlzcGxh eTo6ZGVmYXVsdElucHV0RGV2aWNlKCkgY29uc3QKKyAgICAgcmV0dXJuIG1JbnB1dERldmljZXMu aXNFbXB0eSgpID8gMCA6IG1JbnB1dERldmljZXMuZmlyc3QoKTsKKyB9CisgCisrYm9vbCBRV2F5 bGFuZERpc3BsYXk6OmlzS2V5Ym9hcmRBdmFpbGFibGUoKSBjb25zdAorK3sKKysgICAgcmV0dXJu IHN0ZDo6YW55X29mKAorKyAgICAgICAgICAgIG1JbnB1dERldmljZXMuY29uc3RCZWdpbigpLCBt SW5wdXREZXZpY2VzLmNvbnN0RW5kKCksCisrICAgICAgICAgICAgW3RoaXNdKGNvbnN0IFFXYXls YW5kSW5wdXREZXZpY2UgKmRldmljZSkgeyByZXR1cm4gZGV2aWNlLT5rZXlib2FyZCgpICE9IG51 bGxwdHI7IH0pOworK30KKysKKyAjaWYgUVRfQ09ORklHKGN1cnNvcikKKyAKKyBRV2F5bGFuZEN1 cnNvciAqUVdheWxhbmREaXNwbGF5Ojp3YXlsYW5kQ3Vyc29yKCkKK0BAIC02NTIsNCArNzgzLDYg QEAgUVdheWxhbmRDdXJzb3JUaGVtZSAqUVdheWxhbmREaXNwbGF5Ojpsb2FkQ3Vyc29yVGhlbWUo Y29uc3QgUVN0cmluZyAmbmFtZSwgaW50IHAKKyAKKyB9IC8vIG5hbWVzcGFjZSBRdFdheWxhbmRD bGllbnQKKyAKKysjaW5jbHVkZSAicXdheWxhbmRkaXNwbGF5Lm1vYyIKKysKKyBRVF9FTkRfTkFN RVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5 X3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheV9wLmgKK2luZGV4IDNi MDkyYmM4Li40MmJjNjYxZCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZGlzcGxheV9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxh eV9wLmgKK0BAIC0xMDksNiArMTA5LDcgQEAgY2xhc3MgUVdheWxhbmRTdXJmYWNlOworIGNsYXNz IFFXYXlsYW5kU2hlbGxJbnRlZ3JhdGlvbjsKKyBjbGFzcyBRV2F5bGFuZEN1cnNvcjsKKyBjbGFz cyBRV2F5bGFuZEN1cnNvclRoZW1lOworK2NsYXNzIEV2ZW50VGhyZWFkOworIAorIHR5cGVkZWYg dm9pZCAoKlJlZ2lzdHJ5TGlzdGVuZXIpKHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHdsX3JlZ2lzdHJ5ICpyZWdpc3RyeSwKK0BAIC0xMjAsMTUg KzEyMSwxMSBAQCBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9SVCBRV2F5bGFuZERpc3BsYXkg OiBwdWJsaWMgUU9iamVjdCwgcHVibGljIFF0V2F5bGFuZAorICAgICBRX09CSkVDVAorIAorIHB1 YmxpYzoKKy0gICAgc3RydWN0IEZyYW1lUXVldWUgeworLSAgICAgICAgRnJhbWVRdWV1ZSh3bF9l dmVudF9xdWV1ZSAqcSA9IG51bGxwdHIpIDogcXVldWUocSksIG11dGV4KG5ldyBRTXV0ZXgpIHt9 CistICAgICAgICB3bF9ldmVudF9xdWV1ZSAqcXVldWU7CistICAgICAgICBRTXV0ZXggKm11dGV4 OworLSAgICB9OworLQorICAgICBRV2F5bGFuZERpc3BsYXkoUVdheWxhbmRJbnRlZ3JhdGlvbiAq d2F5bGFuZEludGVncmF0aW9uKTsKKyAgICAgflFXYXlsYW5kRGlzcGxheSh2b2lkKSBvdmVycmlk ZTsKKyAKKysgICAgdm9pZCBpbml0aWFsaXplKCk7CisrCisgI2lmIFFUX0NPTkZJRyh4a2Jjb21t b24pCisgICAgIHN0cnVjdCB4a2JfY29udGV4dCAqeGtiQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJu IG1Ya2JDb250ZXh0LmdldCgpOyB9CisgI2VuZGlmCitAQCAtMjEwLDExICsyMDcsMTEgQEAgcHVi bGljOgorICAgICB2b2lkIGhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kSW5wdXRE ZXZpY2UgKmlucHV0RGV2aWNlKTsKKyAgICAgdm9pZCBoYW5kbGVXaW5kb3dEZXN0cm95ZWQoUVdh eWxhbmRXaW5kb3cgKndpbmRvdyk7CisgCistICAgIHdsX2V2ZW50X3F1ZXVlICpjcmVhdGVFdmVu dFF1ZXVlKCk7CistICAgIEZyYW1lUXVldWUgY3JlYXRlRnJhbWVRdWV1ZSgpOworLSAgICB2b2lk IGRlc3Ryb3lGcmFtZVF1ZXVlKGNvbnN0IEZyYW1lUXVldWUgJnEpOworLSAgICB2b2lkIGRpc3Bh dGNoUXVldWVXaGlsZSh3bF9ldmVudF9xdWV1ZSAqcXVldWUsIHN0ZDo6ZnVuY3Rpb248Ym9vbCgp PiBjb25kaXRpb24sIGludCB0aW1lb3V0ID0gLTEpOworKyAgICB3bF9ldmVudF9xdWV1ZSAqZnJh bWVFdmVudFF1ZXVlKCkgeyByZXR1cm4gbV9mcmFtZUV2ZW50UXVldWU7IH07CisrCisrICAgIGJv b2wgaXNLZXlib2FyZEF2YWlsYWJsZSgpIGNvbnN0OworIAorKyAgICB2b2lkIGluaXRFdmVudFRo cmVhZCgpOworIHB1YmxpYyBzbG90czoKKyAgICAgdm9pZCBibG9ja2luZ1JlYWRFdmVudHMoKTsK KyAgICAgdm9pZCBmbHVzaFJlcXVlc3RzKCk7CitAQCAtMjM3LDYgKzIzNCw5IEBAIHByaXZhdGU6 CisgICAgIH07CisgCisgICAgIHN0cnVjdCB3bF9kaXNwbGF5ICptRGlzcGxheSA9IG51bGxwdHI7 CisrICAgIFFTY29wZWRQb2ludGVyPEV2ZW50VGhyZWFkPiBtX2V2ZW50VGhyZWFkOworKyAgICB3 bF9ldmVudF9xdWV1ZSAqbV9mcmFtZUV2ZW50UXVldWUgPSBudWxscHRyOworKyAgICBRU2NvcGVk UG9pbnRlcjxFdmVudFRocmVhZD4gbV9mcmFtZUV2ZW50UXVldWVUaHJlYWQ7CisgICAgIFF0V2F5 bGFuZDo6d2xfY29tcG9zaXRvciBtQ29tcG9zaXRvcjsKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdh eWxhbmRTaG0+IG1TaG07CisgICAgIFFMaXN0PFFXYXlsYW5kU2NyZWVuICo+IG1XYWl0aW5nU2Ny ZWVuczsKK0BAIC0yNzMsMTEgKzI3Myw5IEBAIHByaXZhdGU6CisgICAgIFFXYXlsYW5kSW5wdXRE ZXZpY2UgKm1MYXN0SW5wdXREZXZpY2UgPSBudWxscHRyOworICAgICBRUG9pbnRlcjxRV2F5bGFu ZFdpbmRvdz4gbUxhc3RJbnB1dFdpbmRvdzsKKyAgICAgUVBvaW50ZXI8UVdheWxhbmRXaW5kb3c+ IG1MYXN0S2V5Ym9hcmRGb2N1czsKKy0gICAgUVZlY3RvcjxRV2F5bGFuZFdpbmRvdyAqPiBtQWN0 aXZlV2luZG93czsKKy0gICAgUVZlY3RvcjxGcmFtZVF1ZXVlPiBtRXh0ZXJuYWxRdWV1ZXM7Cisr ICAgIFFMaXN0PFFXYXlsYW5kV2luZG93ICo+IG1BY3RpdmVXaW5kb3dzOworICAgICBzdHJ1Y3Qg d2xfY2FsbGJhY2sgKm1TeW5jQ2FsbGJhY2sgPSBudWxscHRyOworICAgICBzdGF0aWMgY29uc3Qg d2xfY2FsbGJhY2tfbGlzdGVuZXIgc3luY0NhbGxiYWNrTGlzdGVuZXI7CistICAgIFFSZWFkV3Jp dGVMb2NrIG1fZnJhbWVRdWV1ZUxvY2s7CisgCisgICAgIGJvb2wgbUNsaWVudFNpZGVJbnB1dENv bnRleHRSZXF1ZXN0ZWQgPSAhUVBsYXRmb3JtSW5wdXRDb250ZXh0RmFjdG9yeTo6cmVxdWVzdGVk KCkuaXNOdWxsKCk7CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRkbmQuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmQuY3BwCitpbmRleCA2 NTM1YWExNi4uN2M1M2Y1ZmEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRuZC5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kLmNwcAor QEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBRV2F5bGFuZERyYWc6OnN0YXJ0RHJhZygpCisgeworICAg ICBRQmFzaWNEcmFnOjpzdGFydERyYWcoKTsKKyAgICAgUVdheWxhbmRXaW5kb3cgKmljb24gPSBz dGF0aWNfY2FzdDxRV2F5bGFuZFdpbmRvdyAqPihzaGFwZWRQaXhtYXBXaW5kb3coKS0+aGFuZGxl KCkpOworLSAgICBpZiAobV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+ZGF0YURldmlj ZSgpLT5zdGFydERyYWcoZHJhZygpLT5taW1lRGF0YSgpLCBpY29uKSkgeworKyAgICBpZiAobV9k aXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+ZGF0YURldmljZSgpLT5zdGFydERyYWcoZHJh ZygpLT5taW1lRGF0YSgpLCBkcmFnKCktPnN1cHBvcnRlZEFjdGlvbnMoKSwgaWNvbikpIHsKKyAg ICAgICAgIGljb24tPmFkZEF0dGFjaE9mZnNldCgtZHJhZygpLT5ob3RTcG90KCkpOworICAgICB9 IGVsc2UgeworICAgICAgICAgLy8gQ2FuY2VsbGluZyBpbW1lZGlhdGVseSBkb2VzIG5vdCB3b3Jr LCBzaW5jZSB0aGUgZXZlbnQgbG9vcCBmb3IgUURyYWc6OmV4ZWMgaXMgc3RhcnRlZAorQEAgLTgw LDYgKzgwLDkgQEAgdm9pZCBRV2F5bGFuZERyYWc6OmNhbmNlbCgpCisgICAgIFFCYXNpY0RyYWc6 OmNhbmNlbCgpOworIAorICAgICBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5kYXRh RGV2aWNlKCktPmNhbmNlbERyYWcoKTsKKysKKysgICAgaWYgKGRyYWcoKSkKKysgICAgICAgIGRy YWcoKS0+ZGVsZXRlTGF0ZXIoKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZERyYWc6Om1vdmUoY29u c3QgUVBvaW50ICZnbG9iYWxQb3MsIFF0OjpNb3VzZUJ1dHRvbnMgYiwgUXQ6OktleWJvYXJkTW9k aWZpZXJzIG1vZHMpCitAQCAtMTAzLDMzICsxMDYsNDEgQEAgdm9pZCBRV2F5bGFuZERyYWc6OmVu ZERyYWcoKQorICAgICBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5oYW5kbGVFbmRE cmFnKCk7CisgfQorIAorLXZvaWQgUVdheWxhbmREcmFnOjp1cGRhdGVUYXJnZXQoY29uc3QgUVN0 cmluZyAmbWltZVR5cGUpCisrdm9pZCBRV2F5bGFuZERyYWc6OnNldFJlc3BvbnNlKGJvb2wgYWNj ZXB0ZWQpCisgeworLSAgICBzZXRDYW5Ecm9wKCFtaW1lVHlwZS5pc0VtcHR5KCkpOworLQorLSAg ICBpZiAoY2FuRHJvcCgpKSB7CistICAgICAgICB1cGRhdGVDdXJzb3IoZGVmYXVsdEFjdGlvbihk cmFnKCktPnN1cHBvcnRlZEFjdGlvbnMoKSwgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2Uo KS0+bW9kaWZpZXJzKCkpKTsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIHVwZGF0ZUN1cnNvcihR dDo6SWdub3JlQWN0aW9uKTsKKy0gICAgfQorKyAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIGZv ciBvbGQgRGF0YURldmljZXMgd2hlcmUgdGhlIGRyYWcgYWN0aW9uIGlzIG5vdCBjb21tdW5pY2F0 ZWQKKysgICAgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uID0gZGVmYXVsdEFjdGlvbihkcmFnKCktPnN1 cHBvcnRlZEFjdGlvbnMoKSwgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+bW9kaWZp ZXJzKCkpOworKyAgICBzZXRSZXNwb25zZShRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZShhY2NlcHRl ZCwgYWN0aW9uKSk7CisgfQorIAorLXZvaWQgUVdheWxhbmREcmFnOjpzZXRSZXNwb25zZShjb25z dCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSAmcmVzcG9uc2UpCisrdm9pZCBRV2F5bGFuZERyYWc6 OnNldFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSkKKyB7 CisgICAgIHNldENhbkRyb3AocmVzcG9uc2UuaXNBY2NlcHRlZCgpKTsKKyAKKyAgICAgaWYgKGNh bkRyb3AoKSkgeworLSAgICAgICAgdXBkYXRlQ3Vyc29yKGRlZmF1bHRBY3Rpb24oZHJhZygpLT5z dXBwb3J0ZWRBY3Rpb25zKCksIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPm1vZGlm aWVycygpKSk7CisrICAgICAgICB1cGRhdGVDdXJzb3IocmVzcG9uc2UuYWNjZXB0ZWRBY3Rpb24o KSk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICB1cGRhdGVDdXJzb3IoUXQ6Oklnbm9yZUFjdGlv bik7CisgICAgIH0KKyB9CisgCistdm9pZCBRV2F5bGFuZERyYWc6OmZpbmlzaERyYWcoY29uc3Qg UVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKQorK3ZvaWQgUVdheWxhbmREcmFnOjpz ZXREcm9wUmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKQor IHsKKyAgICAgc2V0RXhlY3V0ZWREcm9wQWN0aW9uKHJlc3BvbnNlLmFjY2VwdGVkQWN0aW9uKCkp OworK30KKysKKyt2b2lkIFFXYXlsYW5kRHJhZzo6ZmluaXNoRHJhZygpCisreworICAgICBRS2V5 RXZlbnQgZXZlbnQoUUV2ZW50OjpLZXlQcmVzcywgUXQ6OktleV9Fc2NhcGUsIFF0OjpOb01vZGlm aWVyKTsKKyAgICAgZXZlbnRGaWx0ZXIoc2hhcGVkUGl4bWFwV2luZG93KCksICZldmVudCk7Cisr CisrICAgIGlmIChkcmFnKCkpCisrICAgICAgICBkcmFnKCktPmRlbGV0ZUxhdGVyKCk7CisrfQor KworK2Jvb2wgUVdheWxhbmREcmFnOjpvd25zRHJhZ09iamVjdCgpIGNvbnN0CisreworKyAgICBy ZXR1cm4gdHJ1ZTsKKyB9CisgCisgfQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kZG5kX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kX3AuaAor aW5kZXggNDc0ZmUyYWIuLjQ2ZjYyOWFjIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRkbmRfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRu ZF9wLmgKK0BAIC03MSw5ICs3MSwxMCBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5kRHJhZyhRV2F5 bGFuZERpc3BsYXkgKmRpc3BsYXkpOworICAgICB+UVdheWxhbmREcmFnKCkgb3ZlcnJpZGU7Cisg CistICAgIHZvaWQgdXBkYXRlVGFyZ2V0KGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlKTsKKy0gICAg dm9pZCBzZXRSZXNwb25zZShjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSAmcmVzcG9uc2Up OworLSAgICB2b2lkIGZpbmlzaERyYWcoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJl c3BvbnNlKTsKKysgICAgdm9pZCBzZXRSZXNwb25zZShib29sIGFjY2VwdGVkKTsKKysgICAgdm9p ZCBzZXRSZXNwb25zZShjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpOwor KyAgICB2b2lkIHNldERyb3BSZXNwb25zZShjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAm cmVzcG9uc2UpOworKyAgICB2b2lkIGZpbmlzaERyYWcoKTsKKyAKKyBwcm90ZWN0ZWQ6CisgICAg IHZvaWQgc3RhcnREcmFnKCkgb3ZlcnJpZGU7CitAQCAtODIsNiArODMsNyBAQCBwcm90ZWN0ZWQ6 CisgICAgIHZvaWQgZHJvcChjb25zdCBRUG9pbnQgJmdsb2JhbFBvcywgUXQ6Ok1vdXNlQnV0dG9u cyBiLCBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kcykgb3ZlcnJpZGU7CisgICAgIHZvaWQgZW5k RHJhZygpIG92ZXJyaWRlOworIAorKyAgICBib29sIG93bnNEcmFnT2JqZWN0KCkgY29uc3Qgb3Zl cnJpZGU7CisgCisgcHJpdmF0ZToKKyAgICAgUVdheWxhbmREaXNwbGF5ICptX2Rpc3BsYXkgPSBu dWxscHRyOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW5wdXRk ZXZpY2UuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnB1dGRldmljZS5jcHAK K2luZGV4IDYxM2ZlODYyLi40YjkwZGU4NCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kaW5wdXRkZXZpY2UuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGlucHV0ZGV2aWNlLmNwcAorQEAgLTY4NSw2ICs2ODUsMTEgQEAgcHVibGljOgorIAor IHZvaWQgUVdheWxhbmRJbnB1dERldmljZTo6UG9pbnRlcjo6cG9pbnRlcl9sZWF2ZSh1aW50MzJf dCB0aW1lLCBzdHJ1Y3Qgd2xfc3VyZmFjZSAqc3VyZmFjZSkKKyB7CisrICAgIGludmFsaWRhdGVG b2N1cygpOworKyAgICBtQnV0dG9ucyA9IFF0OjpOb0J1dHRvbjsKKysKKysgICAgbVBhcmVudC0+ bVRpbWUgPSB0aW1lOworKworICAgICAvLyBUaGUgZXZlbnQgbWF5IGFycml2ZSBhZnRlciBkZXN0 cm95aW5nIHRoZSB3aW5kb3csIGluZGljYXRlZCBieQorICAgICAvLyBhIG51bGwgc3VyZmFjZS4K KyAgICAgaWYgKCFzdXJmYWNlKQorQEAgLTY5NiwxMSArNzAxLDYgQEAgdm9pZCBRV2F5bGFuZElu cHV0RGV2aWNlOjpQb2ludGVyOjpwb2ludGVyX2xlYXZlKHVpbnQzMl90IHRpbWUsIHN0cnVjdCB3 bF9zdXJmYWMKKyAKKyAgICAgaWYgKCFRV2F5bGFuZFdpbmRvdzo6bW91c2VHcmFiKCkpCisgICAg ICAgICBzZXRGcmFtZUV2ZW50KG5ldyBMZWF2ZUV2ZW50KHdpbmRvdywgbVN1cmZhY2VQb3MsIG1H bG9iYWxQb3MpKTsKKy0KKy0gICAgaW52YWxpZGF0ZUZvY3VzKCk7CistICAgIG1CdXR0b25zID0g UXQ6Ok5vQnV0dG9uOworLQorLSAgICBtUGFyZW50LT5tVGltZSA9IHRpbWU7CisgfQorIAorIGNs YXNzIE1vdGlvbkV2ZW50IDogcHVibGljIFFXYXlsYW5kUG9pbnRlckV2ZW50CitAQCAtMTMwMCwx NCArMTMwMCw2IEBAIHZvaWQgUVdheWxhbmRJbnB1dERldmljZTo6S2V5Ym9hcmQ6OmhhbmRsZUZv Y3VzRGVzdHJveWVkKCkKKyB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OktleWJvYXJkOjpoYW5k bGVGb2N1c0xvc3QoKQorIHsKKyAgICAgbUZvY3VzID0gbnVsbHB0cjsKKy0jaWYgUVRfQ09ORklH KGNsaXBib2FyZCkKKy0gICAgaWYgKGF1dG8gKmRhdGFEZXZpY2UgPSBtUGFyZW50LT5kYXRhRGV2 aWNlKCkpCistICAgICAgICBkYXRhRGV2aWNlLT5pbnZhbGlkYXRlU2VsZWN0aW9uT2ZmZXIoKTsK Ky0jZW5kaWYKKy0jaWYgUVRfQ09ORklHKHdheWxhbmRfY2xpZW50X3ByaW1hcnlfc2VsZWN0aW9u KQorLSAgICBpZiAoYXV0byAqZGV2aWNlID0gbVBhcmVudC0+cHJpbWFyeVNlbGVjdGlvbkRldmlj ZSgpKQorLSAgICAgICAgZGV2aWNlLT5pbnZhbGlkYXRlU2VsZWN0aW9uT2ZmZXIoKTsKKy0jZW5k aWYKKyAgICAgbVBhcmVudC0+bVFEaXNwbGF5LT5oYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZCht UGFyZW50KTsKKyAgICAgbVJlcGVhdFRpbWVyLnN0b3AoKTsKKyB9CitAQCAtMTM5Niw2ICsxMzg4 LDcgQEAgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpUb3VjaDo6dG91Y2hfY2FuY2VsKCkKKyAg ICAgaWYgKHRvdWNoRXh0KQorICAgICAgICAgdG91Y2hFeHQtPnRvdWNoQ2FuY2VsZWQoKTsKKyAK KysgICAgbUZvY3VzID0gbnVsbHB0cjsKKyAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFu ZGxlVG91Y2hDYW5jZWxFdmVudChudWxscHRyLCBtUGFyZW50LT5tVG91Y2hEZXZpY2UpOworIH0K KyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9u LmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb24uY3BwCitpbmRl eCBjNTNjY2I3OC4uNTQ4NjE2MDAgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGludGVncmF0aW9uLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRpbnRlZ3JhdGlvbi5jcHAKK0BAIC0xMjUsNiArMTI1LDkgQEAgUVdheWxhbmRJbnRlZ3JhdGlv bjo6UVdheWxhbmRJbnRlZ3JhdGlvbigpCisgI2VuZGlmCisgCisgICAgIHJlY29uZmlndXJlSW5w dXRDb250ZXh0KCk7CisrCisrICAgIFFXYXlsYW5kV2luZG93OjpmaXhlZFRvcGxldmVsUG9zaXRp b25zID0KKysgICAgICAgICAgICAhcUVudmlyb25tZW50VmFyaWFibGVJc1NldCgiUVRfV0FZTEFO RF9ESVNBQkxFX0ZJWEVEX1BPU0lUSU9OUyIpOworIH0KKyAKKyBRV2F5bGFuZEludGVncmF0aW9u Ojp+UVdheWxhbmRJbnRlZ3JhdGlvbigpCitAQCAtMTkyLDE0ICsxOTUsMTggQEAgUUFic3RyYWN0 RXZlbnREaXNwYXRjaGVyICpRV2F5bGFuZEludGVncmF0aW9uOjpjcmVhdGVFdmVudERpc3BhdGNo ZXIoKSBjb25zdAorIAorIHZvaWQgUVdheWxhbmRJbnRlZ3JhdGlvbjo6aW5pdGlhbGl6ZSgpCisg eworKyAgICBtRGlzcGxheS0+aW5pdEV2ZW50VGhyZWFkKCk7CisrCisrICAgIC8vIENhbGwgYWZ0 ZXIgZXZlbnREaXNwYXRjaGVyIGlzIGZ1bGx5IGNvbm5lY3RlZCwgZm9yIFFXYXlsYW5kRGlzcGxh eTo6Zm9yY2VSb3VuZFRyaXAoKQorKyAgICBtRGlzcGxheS0+aW5pdGlhbGl6ZSgpOworKworKyAg ICAvLyBCdXQgdGhlIGFib3V0VG9CbG9jaygpIGFuZCBhd2FrZSgpIHNob3VsZCBiZSBjb25uZWN0 ZWQgYWZ0ZXIgaW5pdGlhbGl6ZVBsYXRmb3JtKCkuCisrICAgIC8vIE90aGVyd2lzZSB0aGUgY29u bmVjdGVkIGZsdXNoUmVxdWVzdHMoKSBtYXkgY29uc3VtZXMgdXAgYWxsIGV2ZW50cyBiZWZvcmUg cHJvY2Vzc0V2ZW50cyBzdGFydHMgdG8gd2FpdCwKKysgICAgLy8gc28gdGhhdCBwcm9jZXNzRXZl bnRzKFFFdmVudExvb3A6OldhaXRGb3JNb3JlRXZlbnRzKSBtYXkgYmUgYmxvY2tlZCBpbiB0aGUg Zm9yY2VSb3VuZFRyaXAoKS4KKyAgICAgUUFic3RyYWN0RXZlbnREaXNwYXRjaGVyICpkaXNwYXRj aGVyID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6ZXZlbnREaXNwYXRjaGVyOworICAgICBRT2Jq ZWN0Ojpjb25uZWN0KGRpc3BhdGNoZXIsIFNJR05BTChhYm91dFRvQmxvY2soKSksIG1EaXNwbGF5 LmRhdGEoKSwgU0xPVChmbHVzaFJlcXVlc3RzKCkpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChk aXNwYXRjaGVyLCBTSUdOQUwoYXdha2UoKSksIG1EaXNwbGF5LmRhdGEoKSwgU0xPVChmbHVzaFJl cXVlc3RzKCkpKTsKKyAKKy0gICAgaW50IGZkID0gd2xfZGlzcGxheV9nZXRfZmQobURpc3BsYXkt PndsX2Rpc3BsYXkoKSk7CistICAgIFFTb2NrZXROb3RpZmllciAqc24gPSBuZXcgUVNvY2tldE5v dGlmaWVyKGZkLCBRU29ja2V0Tm90aWZpZXI6OlJlYWQsIG1EaXNwbGF5LmRhdGEoKSk7CistICAg IFFPYmplY3Q6OmNvbm5lY3Qoc24sIFNJR05BTChhY3RpdmF0ZWQoUVNvY2tldERlc2NyaXB0b3Ip KSwgbURpc3BsYXkuZGF0YSgpLCBTTE9UKGZsdXNoUmVxdWVzdHMoKSkpOworLQorICAgICAvLyBR dCBkb2VzIG5vdCBzdXBwb3J0IHJ1bm5pbmcgd2l0aCBubyBzY3JlZW5zCisgICAgIG1EaXNwbGF5 LT5lbnN1cmVTY3JlZW4oKTsKKyB9CitAQCAtMjYyLDYgKzI2OSwxNCBAQCBRV2F5bGFuZERpc3Bs YXkgKlFXYXlsYW5kSW50ZWdyYXRpb246OmRpc3BsYXkoKSBjb25zdAorICAgICByZXR1cm4gbURp c3BsYXkuZGF0YSgpOworIH0KKyAKKytRdDo6S2V5Ym9hcmRNb2RpZmllcnMgUVdheWxhbmRJbnRl Z3JhdGlvbjo6cXVlcnlLZXlib2FyZE1vZGlmaWVycygpIGNvbnN0CisreworKyAgICBpZiAoYXV0 byAqc2VhdCA9IG1EaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKSkgeworKyAgICAgICAgcmV0 dXJuIHNlYXQtPm1vZGlmaWVycygpOworKyAgICB9CisrICAgIHJldHVybiBRdDo6Tm9Nb2RpZmll cjsKKyt9CisrCisgUUxpc3Q8aW50PiBRV2F5bGFuZEludGVncmF0aW9uOjpwb3NzaWJsZUtleXMo Y29uc3QgUUtleUV2ZW50ICpldmVudCkgY29uc3QKKyB7CisgICAgIGlmIChhdXRvICpzZWF0ID0g bURpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpKQorQEAgLTQ3OSw3ICs0OTQsNyBAQCB2b2lk IFFXYXlsYW5kSW50ZWdyYXRpb246OnJlY29uZmlndXJlSW5wdXRDb250ZXh0KCkKKyAgICAgfQor ICNlbmRpZgorIAorLSAgICBxQ0RlYnVnKGxjUXBhV2F5bGFuZCkgPDwgInVzaW5nIGlucHV0IG1l dGhvZDoiIDw8IGlucHV0Q29udGV4dCgpLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpOworKyAg ICBxQ0RlYnVnKGxjUXBhV2F5bGFuZCkgPDwgInVzaW5nIGlucHV0IG1ldGhvZDoiIDw8IChpbnB1 dENvbnRleHQoKSA/IGlucHV0Q29udGV4dCgpLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpIDog Ijxub25lPiIpOworIH0KKyAKKyBRV2F5bGFuZFNoZWxsSW50ZWdyYXRpb24gKlFXYXlsYW5kSW50 ZWdyYXRpb246OmNyZWF0ZVNoZWxsSW50ZWdyYXRpb24oY29uc3QgUVN0cmluZyAmaW50ZWdyYXRp b25OYW1lKQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdy YXRpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbl9wLmgK K2luZGV4IGZmNzBhZTI1Li43M2I4MDY1OCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kaW50ZWdyYXRpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGludGVncmF0aW9uX3AuaAorQEAgLTEwNyw2ICsxMDcsOCBAQCBwdWJsaWM6CisgCisg ICAgIFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSgpIGNvbnN0OworIAorKyAgICBRdDo6S2V5Ym9h cmRNb2RpZmllcnMgcXVlcnlLZXlib2FyZE1vZGlmaWVycygpIGNvbnN0IG92ZXJyaWRlOworKwor ICAgICBRTGlzdDxpbnQ+IHBvc3NpYmxlS2V5cyhjb25zdCBRS2V5RXZlbnQgKmV2ZW50KSBjb25z dCBvdmVycmlkZTsKKyAKKyAgICAgUVN0cmluZ0xpc3QgdGhlbWVOYW1lcygpIGNvbnN0IG92ZXJy aWRlOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kcHJpbWFyeXNl bGVjdGlvbnYxLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVj dGlvbnYxLmNwcAoraW5kZXggODMyZjk2NzguLmVhNTA4NzcxIDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRwcmltYXJ5c2VsZWN0aW9udjEuY3BwCisrKysgYi9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHByaW1hcnlzZWxlY3Rpb252MS5jcHAKK0BAIC01NCwx MSArNTQsNiBAQCBRV2F5bGFuZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VNYW5hZ2VyVjE6OlFXYXls YW5kUHJpbWFyeVNlbGVjdGlvbkRldmljZU1hbmFnZXJWMQorICAgICA6IHp3cF9wcmltYXJ5X3Nl bGVjdGlvbl9kZXZpY2VfbWFuYWdlcl92MShkaXNwbGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgcU1p bih2ZXJzaW9uLCB1aW50KDEpKSkKKyAgICAgLCBtX2Rpc3BsYXkoZGlzcGxheSkKKyB7CistICAg IC8vIENyZWF0ZSBkZXZpY2VzIGZvciBhbGwgc2VhdHMuCistICAgIC8vIFRoaXMgb25seSB3b3Jr cyBpZiB3ZSBnZXQgdGhlIGdsb2JhbCBiZWZvcmUgYWxsIGRldmljZXMKKy0gICAgY29uc3QgYXV0 byBzZWF0cyA9IG1fZGlzcGxheS0+aW5wdXREZXZpY2VzKCk7CistICAgIGZvciAoYXV0byAqc2Vh dCA6IHNlYXRzKQorLSAgICAgICAgc2VhdC0+c2V0UHJpbWFyeVNlbGVjdGlvbkRldmljZShjcmVh dGVEZXZpY2Uoc2VhdCkpOworIH0KKyAKKyBRV2F5bGFuZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VW MSAqUVdheWxhbmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlTWFuYWdlclYxOjpjcmVhdGVEZXZpY2Uo UVdheWxhbmRJbnB1dERldmljZSAqc2VhdCkKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZHNjcmVlbi5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNj cmVlbi5jcHAKK2luZGV4IDZjYjMzN2RlLi41NTM3ZGFmZCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRzY3JlZW4uY3BwCitAQCAtNjAsNyArNjAsNyBAQCBRV2F5bGFuZFhkZ091dHB1 dE1hbmFnZXJWMTo6UVdheWxhbmRYZGdPdXRwdXRNYW5hZ2VyVjEoUVdheWxhbmREaXNwbGF5KiBk aXNwbGF5LAorIH0KKyAKKyBRV2F5bGFuZFNjcmVlbjo6UVdheWxhbmRTY3JlZW4oUVdheWxhbmRE aXNwbGF5ICp3YXlsYW5kRGlzcGxheSwgaW50IHZlcnNpb24sIHVpbnQzMl90IGlkKQorLSAgICA6 IFF0V2F5bGFuZDo6d2xfb3V0cHV0KHdheWxhbmREaXNwbGF5LT53bF9yZWdpc3RyeSgpLCBpZCwg cU1pbih2ZXJzaW9uLCAyKSkKKysgICAgOiBRdFdheWxhbmQ6OndsX291dHB1dCh3YXlsYW5kRGlz cGxheS0+d2xfcmVnaXN0cnkoKSwgaWQsIHFNaW4odmVyc2lvbiwgMykpCisgICAgICwgbV9vdXRw dXRJZChpZCkKKyAgICAgLCBtV2F5bGFuZERpc3BsYXkod2F5bGFuZERpc3BsYXkpCisgICAgICwg bU91dHB1dE5hbWUoUVN0cmluZ0xpdGVyYWwoIlNjcmVlbiUxIikuYXJnKGlkKSkKK0BAIC03Miw3 ICs3Miw3IEBAIFFXYXlsYW5kU2NyZWVuOjpRV2F5bGFuZFNjcmVlbihRV2F5bGFuZERpc3BsYXkg KndheWxhbmREaXNwbGF5LCBpbnQgdmVyc2lvbiwgdWluCisgICAgICAgICBxQ1dhcm5pbmcobGNR cGFXYXlsYW5kKSA8PCAid2xfb3V0cHV0IGRvbmUgZXZlbnQgbm90IHN1cHBvcnRlZCBieSBjb21w b3NpdG9yLCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJRU2NyZWVuIG1h eSBub3Qgd29yayBjb3JyZWN0bHkiOworICAgICAgICAgbVdheWxhbmREaXNwbGF5LT5mb3JjZVJv dW5kVHJpcCgpOyAvLyBHaXZlIHRoZSBjb21wb3NpdG9yIGEgY2hhbmNlIHRvIHNlbmQgZ2VvbWV0 cnkgZXRjLgorLSAgICAgICAgbU91dHB1dERvbmUgPSB0cnVlOyAvLyBGYWtlIHRoZSBkb25lIGV2 ZW50CisrICAgICAgICBtUHJvY2Vzc2VkRXZlbnRzIHw9IE91dHB1dERvbmVFdmVudDsgLy8gRmFr ZSB0aGUgZG9uZSBldmVudAorICAgICAgICAgbWF5YmVJbml0aWFsaXplKCk7CisgICAgIH0KKyB9 CitAQCAtODEsMTYgKzgxLDI5IEBAIFFXYXlsYW5kU2NyZWVuOjp+UVdheWxhbmRTY3JlZW4oKQor IHsKKyAgICAgaWYgKHp4ZGdfb3V0cHV0X3YxOjppc0luaXRpYWxpemVkKCkpCisgICAgICAgICB6 eGRnX291dHB1dF92MTo6ZGVzdHJveSgpOworKyAgICBpZiAod2xfb3V0cHV0Ojppc0luaXRpYWxp emVkKCkgJiYgd2xfb3V0cHV0X2dldF92ZXJzaW9uKHdsX291dHB1dDo6b2JqZWN0KCkpID49IFdM X09VVFBVVF9SRUxFQVNFX1NJTkNFX1ZFUlNJT04pCisrICAgICAgICB3bF9vdXRwdXQ6OnJlbGVh c2UoKTsKKyt9CisrCisrdWludCBRV2F5bGFuZFNjcmVlbjo6cmVxdWlyZWRFdmVudHMoKSBjb25z dAorK3sKKysgICAgdWludCByZXQgPSBPdXRwdXREb25lRXZlbnQ7CisrCisrICAgIGlmIChtV2F5 bGFuZERpc3BsYXktPnhkZ091dHB1dE1hbmFnZXIoKSkgeworKyAgICAgICAgcmV0IHw9IFhkZ091 dHB1dE5hbWVFdmVudDsKKysKKysgICAgICAgIGlmIChtV2F5bGFuZERpc3BsYXktPnhkZ091dHB1 dE1hbmFnZXIoKS0+dmVyc2lvbigpIDwgMykKKysgICAgICAgICAgICByZXQgfD0gWGRnT3V0cHV0 RG9uZUV2ZW50OworKyAgICB9CisrICAgIHJldHVybiByZXQ7CisgfQorIAorIHZvaWQgUVdheWxh bmRTY3JlZW46Om1heWJlSW5pdGlhbGl6ZSgpCisgeworICAgICBRX0FTU0VSVCghbUluaXRpYWxp emVkKTsKKyAKKy0gICAgaWYgKCFtT3V0cHV0RG9uZSkKKy0gICAgICAgIHJldHVybjsKKy0KKy0g ICAgaWYgKG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0TWFuYWdlcigpICYmICFtWGRnT3V0cHV0 RG9uZSkKKysgICAgY29uc3QgdWludCByZXF1aXJlZEV2ZW50cyA9IHRoaXMtPnJlcXVpcmVkRXZl bnRzKCk7CisrICAgIGlmICgobVByb2Nlc3NlZEV2ZW50cyAmIHJlcXVpcmVkRXZlbnRzKSAhPSBy ZXF1aXJlZEV2ZW50cykKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgbUluaXRpYWxpemVkID0g dHJ1ZTsKK0BAIC0yNzYsOSArMjg5LDggQEAgdm9pZCBRV2F5bGFuZFNjcmVlbjo6b3V0cHV0X3Nj YWxlKGludDMyX3QgZmFjdG9yKQorIAorIHZvaWQgUVdheWxhbmRTY3JlZW46Om91dHB1dF9kb25l KCkKKyB7CistICAgIG1PdXRwdXREb25lID0gdHJ1ZTsKKy0gICAgaWYgKHp4ZGdfb3V0cHV0X3Yx Ojppc0luaXRpYWxpemVkKCkgJiYgbVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCkt PnZlcnNpb24oKSA+PSAzKQorLSAgICAgICAgbVhkZ091dHB1dERvbmUgPSB0cnVlOworKyAgICBt UHJvY2Vzc2VkRXZlbnRzIHw9IE91dHB1dERvbmVFdmVudDsKKysKKyAgICAgaWYgKG1Jbml0aWFs aXplZCkgeworICAgICAgICAgdXBkYXRlT3V0cHV0UHJvcGVydGllcygpOworICAgICAgICAgaWYg KHp4ZGdfb3V0cHV0X3YxOjppc0luaXRpYWxpemVkKCkpCitAQCAtMzM5LDcgKzM1MSw3IEBAIHZv aWQgUVdheWxhbmRTY3JlZW46Onp4ZGdfb3V0cHV0X3YxX2RvbmUoKQorICAgICBpZiAoUV9VTkxJ S0VMWShtV2F5bGFuZERpc3BsYXktPnhkZ091dHB1dE1hbmFnZXIoKS0+dmVyc2lvbigpID49IDMp KQorICAgICAgICAgcVdhcm5pbmcobGNRcGFXYXlsYW5kKSA8PCAienhkZ19vdXRwdXRfdjEuZG9u ZSByZWNlaXZlZCBvbiB2ZXJzaW9uIDMgb3IgbmV3ZXIsIHRoaXMgaXMgbW9zdCBsaWtlbHkgYSBi dWcgaW4gdGhlIGNvbXBvc2l0b3IiOworIAorLSAgICBtWGRnT3V0cHV0RG9uZSA9IHRydWU7Cisr ICAgIG1Qcm9jZXNzZWRFdmVudHMgfD0gWGRnT3V0cHV0RG9uZUV2ZW50OworICAgICBpZiAobUlu aXRpYWxpemVkKQorICAgICAgICAgdXBkYXRlWGRnT3V0cHV0UHJvcGVydGllcygpOworICAgICBl bHNlCitAQCAtMzQ4LDcgKzM2MCwxMSBAQCB2b2lkIFFXYXlsYW5kU2NyZWVuOjp6eGRnX291dHB1 dF92MV9kb25lKCkKKyAKKyB2b2lkIFFXYXlsYW5kU2NyZWVuOjp6eGRnX291dHB1dF92MV9uYW1l KGNvbnN0IFFTdHJpbmcgJm5hbWUpCisgeworKyAgICBpZiAoUV9VTkxJS0VMWShtSW5pdGlhbGl6 ZWQpKQorKyAgICAgICAgcVdhcm5pbmcobGNRcGFXYXlsYW5kKSA8PCAienhkZ19vdXRwdXRfdjEu bmFtZSByZWNlaXZlZCBhZnRlciBvdXRwdXQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQsIHRoaXMgaXMg bW9zdCBsaWtlbHkgYSBidWcgaW4gdGhlIGNvbXBvc2l0b3IiOworKworICAgICBtT3V0cHV0TmFt ZSA9IG5hbWU7CisrICAgIG1Qcm9jZXNzZWRFdmVudHMgfD0gWGRnT3V0cHV0TmFtZUV2ZW50Owor IH0KKyAKKyB2b2lkIFFXYXlsYW5kU2NyZWVuOjp1cGRhdGVYZGdPdXRwdXRQcm9wZXJ0aWVzKCkK K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbl9wLmggYi9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbl9wLmgKK2luZGV4IGRmMWM5NGYyLi4w NTBjZmRjMCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVu X3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW5fcC5oCitAQCAt MTE2LDYgKzExNiwxMyBAQCBwdWJsaWM6CisgICAgIHN0YXRpYyBRV2F5bGFuZFNjcmVlbiAqZnJv bVdsT3V0cHV0KDo6d2xfb3V0cHV0ICpvdXRwdXQpOworIAorIHByaXZhdGU6CisrICAgIGVudW0g RXZlbnQgOiB1aW50IHsKKysgICAgICAgIFhkZ091dHB1dERvbmVFdmVudCA9IDB4MSwKKysgICAg ICAgIE91dHB1dERvbmVFdmVudCA9IDB4MiwKKysgICAgICAgIFhkZ091dHB1dE5hbWVFdmVudCA9 IDB4NCwKKysgICAgfTsKKysgICAgdWludCByZXF1aXJlZEV2ZW50cygpIGNvbnN0OworKworICAg ICB2b2lkIG91dHB1dF9tb2RlKHVpbnQzMl90IGZsYWdzLCBpbnQgd2lkdGgsIGludCBoZWlnaHQs IGludCByZWZyZXNoKSBvdmVycmlkZTsKKyAgICAgdm9pZCBvdXRwdXRfZ2VvbWV0cnkoaW50MzJf dCB4LCBpbnQzMl90IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgd2lkdGgs IGludDMyX3QgaGVpZ2h0LAorQEAgLTE0OCw4ICsxNTUsNyBAQCBwcml2YXRlOgorICAgICBRU2l6 ZSBtUGh5c2ljYWxTaXplOworICAgICBRU3RyaW5nIG1PdXRwdXROYW1lOworICAgICBRdDo6U2Ny ZWVuT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiA9IFF0OjpQcmltYXJ5T3JpZW50YXRpb247Cist ICAgIGJvb2wgbU91dHB1dERvbmUgPSBmYWxzZTsKKy0gICAgYm9vbCBtWGRnT3V0cHV0RG9uZSA9 IGZhbHNlOworKyAgICB1aW50IG1Qcm9jZXNzZWRFdmVudHMgPSAwOworICAgICBib29sIG1Jbml0 aWFsaXplZCA9IGZhbHNlOworIAorICNpZiBRVF9DT05GSUcoY3Vyc29yKQorZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2htYmFja2luZ3N0b3JlLmNwcCBiL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2htYmFja2luZ3N0b3JlLmNwcAoraW5kZXggZGM3ZmY2 NzAuLjQxY2ZmZGY3IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRz aG1iYWNraW5nc3RvcmUuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNo bWJhY2tpbmdzdG9yZS5jcHAKK0BAIC01Miw2ICs1Miw3IEBACisgCisgI2luY2x1ZGUgPFF0V2F5 bGFuZENsaWVudC9wcml2YXRlL3dheWxhbmQtd2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaD4KKyAK KysjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN5 cy9tbWFuLmg+CisgCitAQCAtNjEsNiArNjIsOSBAQAorICMgIGlmbmRlZiBNRkRfQ0xPRVhFQwor ICMgICAgZGVmaW5lIE1GRF9DTE9FWEVDICAgICAweDAwMDFVCisgIyAgZW5kaWYKKysjICBpZm5k ZWYgTUZEX0FMTE9XX1NFQUxJTkcKKysjICAgIGRlZmluZSBNRkRfQUxMT1dfU0VBTElORyAweDAw MDJVCisrIyAgZW5kaWYKKyAjZW5kaWYKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKK0BAIC03NCw4 ICs3OCwxMCBAQCBRV2F5bGFuZFNobUJ1ZmZlcjo6UVdheWxhbmRTaG1CdWZmZXIoUVdheWxhbmRE aXNwbGF5ICpkaXNwbGF5LAorICAgICBpbnQgYWxsb2MgPSBzdHJpZGUgKiBzaXplLmhlaWdodCgp OworICAgICBpbnQgZmQgPSAtMTsKKyAKKy0jaWZkZWYgU1lTX21lbWZkX2NyZWF0ZQorLSAgICBm ZCA9IHN5c2NhbGwoU1lTX21lbWZkX2NyZWF0ZSwgIndheWxhbmQtc2htIiwgTUZEX0NMT0VYRUMp OworKyNpZiBkZWZpbmVkKFNZU19tZW1mZF9jcmVhdGUpICYmIGRlZmluZWQoRl9TRUFMX1NFQUwp CisrICAgIGZkID0gc3lzY2FsbChTWVNfbWVtZmRfY3JlYXRlLCAid2F5bGFuZC1zaG0iLCBNRkRf Q0xPRVhFQyB8IE1GRF9BTExPV19TRUFMSU5HKTsKKysgICAgaWYgKGZkID49IDApCisrICAgICAg ICBmY250bChmZCwgRl9BRERfU0VBTFMsIEZfU0VBTF9TSFJJTksgfCBGX1NFQUxfU0VBTCk7Cisg I2VuZGlmCisgCisgICAgIFFTY29wZWRQb2ludGVyPFFGaWxlPiBmaWxlUG9pbnRlcjsKK2RpZmYg LS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvdy5jcHAgYi9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvdy5jcHAKK2luZGV4IGNiODI4NTdhLi5mYjJjNTlk YyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93LmNwcAor KysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3cuY3BwCitAQCAtNzYsNyAr NzYsNiBAQCBRV2F5bGFuZFdpbmRvdyAqUVdheWxhbmRXaW5kb3c6Om1Nb3VzZUdyYWIgPSBudWxs cHRyOworIFFXYXlsYW5kV2luZG93OjpRV2F5bGFuZFdpbmRvdyhRV2luZG93ICp3aW5kb3csIFFX YXlsYW5kRGlzcGxheSAqZGlzcGxheSkKKyAgICAgOiBRUGxhdGZvcm1XaW5kb3cod2luZG93KQor ICAgICAsIG1EaXNwbGF5KGRpc3BsYXkpCistICAgICwgbUZyYW1lUXVldWUobURpc3BsYXktPmNy ZWF0ZUZyYW1lUXVldWUoKSkKKyAgICAgLCBtUmVzaXplQWZ0ZXJTd2FwKHFFbnZpcm9ubWVudFZh cmlhYmxlSXNTZXQoIlFUX1dBWUxBTkRfUkVTSVpFX0FGVEVSX1NXQVAiKSkKKyB7CisgICAgIHsK K0BAIC05NSw5ICs5NCw2IEBAIFFXYXlsYW5kV2luZG93OjpRV2F5bGFuZFdpbmRvdyhRV2luZG93 ICp3aW5kb3csIFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSkKKyAKKyBRV2F5bGFuZFdpbmRvdzo6 flFXYXlsYW5kV2luZG93KCkKKyB7CistICAgIG1EaXNwbGF5LT5kZXN0cm95RnJhbWVRdWV1ZSht RnJhbWVRdWV1ZSk7CistICAgIG1EaXNwbGF5LT5oYW5kbGVXaW5kb3dEZXN0cm95ZWQodGhpcyk7 CistCisgICAgIGRlbGV0ZSBtV2luZG93RGVjb3JhdGlvbjsKKyAKKyAgICAgaWYgKG1TdXJmYWNl KQorQEAgLTI0Myw2ICsyMzksNyBAQCBib29sIFFXYXlsYW5kV2luZG93OjpzaG91bGRDcmVhdGVT dWJTdXJmYWNlKCkgY29uc3QKKyAKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXNldCgpCisgewor KyAgICBjbG9zZUNoaWxkUG9wdXBzKCk7CisgICAgIGRlbGV0ZSBtU2hlbGxTdXJmYWNlOworICAg ICBtU2hlbGxTdXJmYWNlID0gbnVsbHB0cjsKKyAgICAgZGVsZXRlIG1TdWJTdXJmYWNlV2luZG93 OworQEAgLTI1NSwxNyArMjUyLDIyIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlc2V0KCkKKyAg ICAgICAgIG1TdXJmYWNlLnJlc2V0KCk7CisgICAgIH0KKyAKKy0gICAgaWYgKG1GcmFtZUNhbGxi YWNrKSB7CistICAgICAgICB3bF9jYWxsYmFja19kZXN0cm95KG1GcmFtZUNhbGxiYWNrKTsKKy0g ICAgICAgIG1GcmFtZUNhbGxiYWNrID0gbnVsbHB0cjsKKy0gICAgfQorKyAgICB7CisrICAgICAg ICBRTXV0ZXhMb2NrZXIgbG9jaygmbUZyYW1lU3luY011dGV4KTsKKysgICAgICAgIGlmIChtRnJh bWVDYWxsYmFjaykgeworKyAgICAgICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3kobUZyYW1lQ2Fs bGJhY2spOworKyAgICAgICAgICAgIG1GcmFtZUNhbGxiYWNrID0gbnVsbHB0cjsKKysgICAgICAg IH0KKyAKKy0gICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworLSAg ICBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2sgPSBmYWxzZTsKKysgICAgICAgIG1GcmFtZUNhbGxi YWNrRWxhcHNlZFRpbWVyLmludmFsaWRhdGUoKTsKKysgICAgICAgIG1XYWl0aW5nRm9yRnJhbWVD YWxsYmFjayA9IGZhbHNlOworKyAgICB9CisgICAgIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSBm YWxzZTsKKyAKKyAgICAgbU1hc2sgPSBRUmVnaW9uKCk7CisgICAgIG1RdWV1ZWRCdWZmZXIgPSBu dWxscHRyOworKworKyAgICBtRGlzcGxheS0+aGFuZGxlV2luZG93RGVzdHJveWVkKHRoaXMpOwor IH0KKyAKKyBRV2F5bGFuZFdpbmRvdyAqUVdheWxhbmRXaW5kb3c6OmZyb21XbFN1cmZhY2UoOjp3 bF9zdXJmYWNlICpzdXJmYWNlKQorQEAgLTM1MSwxOSArMzUzLDI1IEBAIHZvaWQgUVdheWxhbmRX aW5kb3c6OnNldEdlb21ldHJ5X2hlbHBlcihjb25zdCBRUmVjdCAmcmVjdCkKKyAgICAgfQorIH0K KyAKKy12b2lkIFFXYXlsYW5kV2luZG93OjpzZXRHZW9tZXRyeShjb25zdCBRUmVjdCAmcmVjdCkK Kyt2b2lkIFFXYXlsYW5kV2luZG93OjpzZXRHZW9tZXRyeShjb25zdCBRUmVjdCAmcikKKyB7Cisr ICAgIGF1dG8gcmVjdCA9IHI7CisrICAgIGlmIChmaXhlZFRvcGxldmVsUG9zaXRpb25zICYmICFR UGxhdGZvcm1XaW5kb3c6OnBhcmVudCgpICYmIHdpbmRvdygpLT50eXBlKCkgIT0gUXQ6OlBvcHVw CisrICAgICAgICAmJiB3aW5kb3coKS0+dHlwZSgpICE9IFF0OjpUb29sVGlwKSB7CisrICAgICAg ICByZWN0Lm1vdmVUbyhzY3JlZW4oKS0+Z2VvbWV0cnkoKS50b3BMZWZ0KCkpOworKyAgICB9Cisg ICAgIHNldEdlb21ldHJ5X2hlbHBlcihyZWN0KTsKKyAKKyAgICAgaWYgKHdpbmRvdygpLT5pc1Zp c2libGUoKSAmJiByZWN0LmlzVmFsaWQoKSkgeworICAgICAgICAgaWYgKG1XaW5kb3dEZWNvcmF0 aW9uKQorICAgICAgICAgICAgIG1XaW5kb3dEZWNvcmF0aW9uLT51cGRhdGUoKTsKKyAKKy0gICAg ICAgIGlmIChtUmVzaXplQWZ0ZXJTd2FwICYmIHdpbmRvd1R5cGUoKSA9PSBFZ2wgJiYgbVNlbnRJ bml0aWFsUmVzaXplKQorKyAgICAgICAgaWYgKG1SZXNpemVBZnRlclN3YXAgJiYgd2luZG93VHlw ZSgpID09IEVnbCAmJiBtU2VudEluaXRpYWxSZXNpemUpIHsKKysgICAgICAgICAgICBRTXV0ZXhM b2NrZXIgbG9jaygmbVJlc2l6ZUxvY2spOworICAgICAgICAgICAgIG1SZXNpemVEaXJ0eSA9IHRy dWU7CistICAgICAgICBlbHNlCisrICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIFFXaW5k b3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUdlb21ldHJ5Q2hhbmdlKHdpbmRvdygpLCBnZW9tZXRy eSgpKTsKKy0KKysgICAgICAgIH0KKyAgICAgICAgIG1TZW50SW5pdGlhbFJlc2l6ZSA9IHRydWU7 CisgICAgIH0KKyAgICAgUVJlY3QgZXhwb3NlR2VvbWV0cnkoUVBvaW50KCksIGdlb21ldHJ5KCku c2l6ZSgpKTsKK0BAIC0zNzQsNyArMzgyLDcgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2Vv bWV0cnkoY29uc3QgUVJlY3QgJnJlY3QpCisgICAgICAgICBtU2hlbGxTdXJmYWNlLT5zZXRXaW5k b3dHZW9tZXRyeSh3aW5kb3dDb250ZW50R2VvbWV0cnkoKSk7CisgCisgICAgIGlmIChpc09wYXF1 ZSgpICYmIG1NYXNrLmlzRW1wdHkoKSkKKy0gICAgICAgIHNldE9wYXF1ZUFyZWEocmVjdCk7Cisr ICAgICAgICBzZXRPcGFxdWVBcmVhKFFSZWN0KFFQb2ludCgwLCAwKSwgcmVjdC5zaXplKCkpKTsK KyB9CisgCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVzaXplRnJvbUFwcGx5Q29uZmlndXJlKGNv bnN0IFFTaXplICZzaXplV2l0aE1hcmdpbnMsIGNvbnN0IFFQb2ludCAmb2Zmc2V0KQorQEAgLTM5 OSwyMSArNDA3LDYgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2VuZEV4cG9zZUV2ZW50KGNvbnN0 IFFSZWN0ICZyZWN0KQorICAgICBtTGFzdEV4cG9zZUdlb21ldHJ5ID0gcmVjdDsKKyB9CisgCist Cistc3RhdGljIFFWZWN0b3I8UVBvaW50ZXI8UVdheWxhbmRXaW5kb3c+PiBhY3RpdmVQb3B1cHM7 CistCistdm9pZCBRV2F5bGFuZFdpbmRvdzo6Y2xvc2VQb3B1cHMoUVdheWxhbmRXaW5kb3cgKnBh cmVudCkKKy17CistICAgIHdoaWxlICghYWN0aXZlUG9wdXBzLmlzRW1wdHkoKSkgeworLSAgICAg ICAgYXV0byBwb3B1cCA9IGFjdGl2ZVBvcHVwcy50YWtlTGFzdCgpOworLSAgICAgICAgaWYgKHBv cHVwLmlzTnVsbCgpKQorLSAgICAgICAgICAgIGNvbnRpbnVlOworLSAgICAgICAgaWYgKHBvcHVw LmRhdGEoKSA9PSBwYXJlbnQpCistICAgICAgICAgICAgcmV0dXJuOworLSAgICAgICAgcG9wdXAt PnJlc2V0KCk7CistICAgIH0KKy19CistCisgUVBsYXRmb3JtU2NyZWVuICpRV2F5bGFuZFdpbmRv dzo6Y2FsY3VsYXRlU2NyZWVuRnJvbVN1cmZhY2VFdmVudHMoKSBjb25zdAorIHsKKyAgICAgUVJl YWRMb2NrZXIgbG9jaygmbVN1cmZhY2VMb2NrKTsKK0BAIC00MzMsMTAgKzQyNiw3IEBAIHZvaWQg UVdheWxhbmRXaW5kb3c6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQorICAgICBsYXN0VmlzaWJs ZSA9IHZpc2libGU7CisgCisgICAgIGlmICh2aXNpYmxlKSB7CistICAgICAgICBpZiAod2luZG93 KCktPnR5cGUoKSA9PSBRdDo6UG9wdXAgfHwgd2luZG93KCktPnR5cGUoKSA9PSBRdDo6VG9vbFRp cCkKKy0gICAgICAgICAgICBhY3RpdmVQb3B1cHMgPDwgdGhpczsKKyAgICAgICAgIGluaXRXaW5k b3coKTsKKy0gICAgICAgIG1EaXNwbGF5LT5mbHVzaFJlcXVlc3RzKCk7CisgCisgICAgICAgICBz ZXRHZW9tZXRyeSh3aW5kb3dHZW9tZXRyeSgpKTsKKyAgICAgICAgIC8vIERvbid0IGZsdXNoIHRo ZSBldmVudHMgaGVyZSwgb3IgZWxzZSB0aGUgbmV3bHkgdmlzaWJsZSB3aW5kb3cgbWF5IHN0YXJ0 IGRyYXdpbmcsIGJ1dCBzaW5jZQorQEAgLTQ0NCw3ICs0MzQsNiBAQCB2b2lkIFFXYXlsYW5kV2lu ZG93OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKKyAgICAgICAgIC8vIFFXYXlsYW5kU2htQmFj a2luZ1N0b3JlOjpiZWdpblBhaW50KCkuCisgICAgIH0gZWxzZSB7CisgICAgICAgICBzZW5kRXhw b3NlRXZlbnQoUVJlY3QoKSk7CistICAgICAgICBjbG9zZVBvcHVwcyh0aGlzKTsKKyAgICAgICAg IHJlc2V0KCk7CisgICAgIH0KKyB9CitAQCAtNTU2LDEyICs1NDUsMTIgQEAgdm9pZCBRV2F5bGFu ZFdpbmRvdzo6c2VuZFJlY3Vyc2l2ZUV4cG9zZUV2ZW50KCkKKyAKKyB2b2lkIFFXYXlsYW5kV2lu ZG93OjphdHRhY2goUVdheWxhbmRCdWZmZXIgKmJ1ZmZlciwgaW50IHgsIGludCB5KQorIHsKKy0g ICAgUV9BU1NFUlQoIWJ1ZmZlci0+Y29tbWl0dGVkKCkpOworICAgICBRUmVhZExvY2tlciBsb2Nr ZXIoJm1TdXJmYWNlTG9jayk7CisgICAgIGlmIChtU3VyZmFjZSA9PSBudWxscHRyKQorICAgICAg ICAgcmV0dXJuOworIAorICAgICBpZiAoYnVmZmVyKSB7CisrICAgICAgICBRX0FTU0VSVCghYnVm ZmVyLT5jb21taXR0ZWQoKSk7CisgICAgICAgICBoYW5kbGVVcGRhdGUoKTsKKyAgICAgICAgIGJ1 ZmZlci0+c2V0QnVzeSgpOworIAorQEAgLTU4Myw3ICs1NzIsMTEgQEAgdm9pZCBRV2F5bGFuZFdp bmRvdzo6ZGFtYWdlKGNvbnN0IFFSZWN0ICZyZWN0KQorICAgICBpZiAobVN1cmZhY2UgPT0gbnVs bHB0cikKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgbVN1cmZhY2UtPmRhbWFnZShyZWN0Lngo KSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisrICAgIGNvbnN0IGlu dCBzID0gc2NhbGUoKTsKKysgICAgaWYgKG1EaXNwbGF5LT5jb21wb3NpdG9yVmVyc2lvbigpID49 IDQpCisrICAgICAgICBtU3VyZmFjZS0+ZGFtYWdlX2J1ZmZlcihzICogcmVjdC54KCksIHMgKiBy ZWN0LnkoKSwgcyAqIHJlY3Qud2lkdGgoKSwgcyAqIHJlY3QuaGVpZ2h0KCkpOworKyAgICBlbHNl CisrICAgICAgICBtU3VyZmFjZS0+ZGFtYWdlKHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0 aCgpLCByZWN0LmhlaWdodCgpKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2FmZUNv bW1pdChRV2F5bGFuZEJ1ZmZlciAqYnVmZmVyLCBjb25zdCBRUmVnaW9uICZkYW1hZ2UpCitAQCAt NjE5LDggKzYxMiwxNCBAQCB2b2lkIFFXYXlsYW5kV2luZG93Ojpjb21taXQoUVdheWxhbmRCdWZm ZXIgKmJ1ZmZlciwgY29uc3QgUVJlZ2lvbiAmZGFtYWdlKQorICAgICAgICAgcmV0dXJuOworIAor ICAgICBhdHRhY2hPZmZzZXQoYnVmZmVyKTsKKy0gICAgZm9yIChjb25zdCBRUmVjdCAmcmVjdDog ZGFtYWdlKQorLSAgICAgICAgbVN1cmZhY2UtPmRhbWFnZShyZWN0LngoKSwgcmVjdC55KCksIHJl Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisrICAgIGlmIChtRGlzcGxheS0+Y29tcG9zaXRv clZlcnNpb24oKSA+PSA0KSB7CisrICAgICAgICBjb25zdCBpbnQgcyA9IHNjYWxlKCk7CisrICAg ICAgICBmb3IgKGNvbnN0IFFSZWN0ICZyZWN0OiBkYW1hZ2UpCisrICAgICAgICAgICAgbVN1cmZh Y2UtPmRhbWFnZV9idWZmZXIocyAqIHJlY3QueCgpLCBzICogcmVjdC55KCksIHMgKiByZWN0Lndp ZHRoKCksIHMgKiByZWN0LmhlaWdodCgpKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIGZvciAo Y29uc3QgUVJlY3QgJnJlY3Q6IGRhbWFnZSkKKysgICAgICAgICAgICBtU3VyZmFjZS0+ZGFtYWdl KHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKysgICAg fQorICAgICBRX0FTU0VSVCghYnVmZmVyLT5jb21taXR0ZWQoKSk7CisgICAgIGJ1ZmZlci0+c2V0 Q29tbWl0dGVkKCk7CisgICAgIG1TdXJmYWNlLT5jb21taXQoKTsKK0BAIC02MzUsNDIgKzYzNCw1 MyBAQCB2b2lkIFFXYXlsYW5kV2luZG93Ojpjb21taXQoKQorIAorIGNvbnN0IHdsX2NhbGxiYWNr X2xpc3RlbmVyIFFXYXlsYW5kV2luZG93OjpjYWxsYmFja0xpc3RlbmVyID0geworICAgICBbXSh2 b2lkICpkYXRhLCB3bF9jYWxsYmFjayAqY2FsbGJhY2ssIHVpbnQzMl90IHRpbWUpIHsKKy0gICAg ICAgIFFfVU5VU0VEKGNhbGxiYWNrKTsKKyAgICAgICAgIFFfVU5VU0VEKHRpbWUpOworICAgICAg ICAgYXV0byAqd2luZG93ID0gc3RhdGljX2Nhc3Q8UVdheWxhbmRXaW5kb3cqPihkYXRhKTsKKy0g ICAgICAgIHdpbmRvdy0+aGFuZGxlRnJhbWVDYWxsYmFjaygpOworKyAgICAgICAgd2luZG93LT5o YW5kbGVGcmFtZUNhbGxiYWNrKGNhbGxiYWNrKTsKKyAgICAgfQorIH07CisgCistdm9pZCBRV2F5 bGFuZFdpbmRvdzo6aGFuZGxlRnJhbWVDYWxsYmFjaygpCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6 aGFuZGxlRnJhbWVDYWxsYmFjayh3bF9jYWxsYmFjayogY2FsbGJhY2spCisgeworKyAgICBRTXV0 ZXhMb2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKyAgICBpZiAoIW1GcmFtZUNhbGxi YWNrKSB7CisrICAgICAgICAvLyBUaGlzIG1lYW5zIHRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IHVu c2V0IGJ5IFFXYXlsYW5kV2luZG93OjpyZXNldC4KKysgICAgICAgIC8vIFRoZSB3bF9jYWxsYmFj ayBvYmplY3Qgd2lsbCBiZSBkZXN0cm95ZWQgdGhlcmUgdG9vLgorKyAgICAgICAgcmV0dXJuOwor KyAgICB9CisrICAgIFFfQVNTRVJUKGNhbGxiYWNrID09IG1GcmFtZUNhbGxiYWNrKTsKKysgICAg d2xfY2FsbGJhY2tfZGVzdHJveShjYWxsYmFjayk7CisrICAgIG1GcmFtZUNhbGxiYWNrID0gbnVs bHB0cjsKKysKKyAgICAgbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7CisgICAgIG1G cmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmludmFsaWRhdGUoKTsKKyAKKyAgICAgLy8gVGhlIHJl c3QgY2FuIHdhaXQgdW50aWwgd2UgY2FuIHJ1biBpdCBvbiB0aGUgY29ycmVjdCB0aHJlYWQKKy0g ICAgaWYgKCFtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5KSB7CistICAgICAgICBhdXRvIGRvSGFu ZGxlRXhwb3NlID0gW3RoaXNdKCkgeworLSAgICAgICAgICAgIGJvb2wgd2FzRXhwb3NlZCA9IGlz RXhwb3NlZCgpOworLSAgICAgICAgICAgIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSBmYWxzZTsK Ky0gICAgICAgICAgICBpZiAoIXdhc0V4cG9zZWQgJiYgaXNFeHBvc2VkKCkpIC8vIERpZCBzZXR0 aW5nIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgbWFrZSB0aGUgd2luZG93IGV4cG9zZWQ/CistICAg ICAgICAgICAgICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdChRUG9pbnQoKSwgZ2VvbWV0cnkoKS5z aXplKCkpKTsKKy0gICAgICAgICAgICBpZiAod2FzRXhwb3NlZCAmJiBoYXNQZW5kaW5nVXBkYXRl UmVxdWVzdCgpKQorLSAgICAgICAgICAgICAgICBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpOworLQor LSAgICAgICAgICAgIG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkgPSBmYWxzZTsKKy0gICAgICAg IH07CisrICAgIGF1dG8gZG9IYW5kbGVFeHBvc2UgPSBbdGhpc10oKSB7CisrICAgICAgICBtV2Fp dGluZ0ZvclVwZGF0ZURlbGl2ZXJ5LnN0b3JlUmVsZWFzZShmYWxzZSk7CisrICAgICAgICBib29s IHdhc0V4cG9zZWQgPSBpc0V4cG9zZWQoKTsKKysgICAgICAgIG1GcmFtZUNhbGxiYWNrVGltZWRP dXQgPSBmYWxzZTsKKysgICAgICAgIGlmICghd2FzRXhwb3NlZCAmJiBpc0V4cG9zZWQoKSkgLy8g RGlkIHNldHRpbmcgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCBtYWtlIHRoZSB3aW5kb3cgZXhwb3Nl ZD8KKysgICAgICAgICAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoUVBvaW50KCksIGdlb21ldHJ5 KCkuc2l6ZSgpKSk7CisrICAgICAgICBpZiAod2FzRXhwb3NlZCAmJiBoYXNQZW5kaW5nVXBkYXRl UmVxdWVzdCgpKQorKyAgICAgICAgICAgIGRlbGl2ZXJVcGRhdGVSZXF1ZXN0KCk7CisrICAgIH07 CisgCisrICAgIGlmIChtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5LnRlc3RBbmRTZXRBY3F1aXJl KGZhbHNlLCB0cnVlKSkgeworICAgICAgICAgLy8gUXVldWVkIGNvbm5lY3Rpb24sIHRvIG1ha2Ug c3VyZSB3ZSBkb24ndCBjYWxsIGhhbmRsZVVwZGF0ZSgpIGZyb20gaW5zaWRlIHdhaXRGb3JGcmFt ZVN5bmMoKQorICAgICAgICAgLy8gaW4gdGhlIHNpbmdsZS10aHJlYWRlZCBjYXNlLgorLSAgICAg ICAgbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeSA9IHRydWU7CisgICAgICAgICBRTWV0YU9iamVj dDo6aW52b2tlTWV0aG9kKHRoaXMsIGRvSGFuZGxlRXhwb3NlLCBRdDo6UXVldWVkQ29ubmVjdGlv bik7CisgICAgIH0KKysKKysgICAgbUZyYW1lU3luY1dhaXQubm90aWZ5X2FsbCgpOworIH0KKyAK KyBib29sIFFXYXlsYW5kV2luZG93Ojp3YWl0Rm9yRnJhbWVTeW5jKGludCB0aW1lb3V0KQorIHsK Ky0gICAgUU11dGV4TG9ja2VyIGxvY2tlcihtRnJhbWVRdWV1ZS5tdXRleCk7CistICAgIG1EaXNw bGF5LT5kaXNwYXRjaFF1ZXVlV2hpbGUobUZyYW1lUXVldWUucXVldWUsIFsmXSgpIHsgcmV0dXJu IG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjazsgfSwgdGltZW91dCk7CisrICAgIFFNdXRleExvY2tl ciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRleCk7CisrCisrICAgIFFEZWFkbGluZVRpbWVyIGRlYWRs aW5lKHRpbWVvdXQpOworKyAgICB3aGlsZSAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrICYmIG1G cmFtZVN5bmNXYWl0LndhaXQoJm1GcmFtZVN5bmNNdXRleCwgZGVhZGxpbmUpKSB7IH0KKyAKKyAg ICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykgeworICAgICAgICAgcUNEZWJ1ZyhsY1dh eWxhbmRCYWNraW5nc3RvcmUpIDw8ICJEaWRuJ3QgcmVjZWl2ZSBmcmFtZSBjYWxsYmFjayBpbiB0 aW1lLCB3aW5kb3cgc2hvdWxkIG5vdyBiZSBpbmV4cG9zZWQiOworQEAgLTg2OCw2ICs4NzgsMTcg QEAgYm9vbCBRV2F5bGFuZFdpbmRvdzo6Y3JlYXRlRGVjb3JhdGlvbigpCisgICAgICAgICAgICAg c3Vic3VyZi0+c2V0X3Bvc2l0aW9uKHBvcy54KCkgKyBtLmxlZnQoKSwgcG9zLnkoKSArIG0udG9w KCkpOworICAgICAgICAgfQorICAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KFFQb2ludCgp LCBnZW9tZXRyeSgpLnNpemUoKSkpOworKworKyAgICAgICAgLy8gVGhpcyBpcyBhIHNwZWNpYWwg Y2FzZSB3aGVyZSB0aGUgYnVmZmVyIGlzIHJlY3JlYXRlZCwgYnV0IHNpbmNlCisrICAgICAgICAv LyB0aGUgY29udGVudCByZWN0IHJlbWFpbnMgdGhlIHNhbWUsIHRoZSB3aWRnZXRzIHJlbWFpbiB0 aGUgc2FtZQorKyAgICAgICAgLy8gc2l6ZSBhbmQgYXJlIG5vdCByZWRyYXduLCBsZWF2aW5nIHRo ZSBuZXcgYnVmZmVyIGVtcHR5LiBBcyBhIHNpbXBsZQorKyAgICAgICAgLy8gd29yay1hcm91bmQs IHdlIHRyaWdnZXIgYSBmdWxsIGV4dHJhIHVwZGF0ZSB3aGVuZXZlciB0aGUgY2xpZW50LXNpZGUK KysgICAgICAgIC8vIHdpbmRvdyBkZWNvcmF0aW9ucyBhcmUgdG9nZ2xlZCB3aGlsZSB0aGUgd2lu ZG93IGlzIHNob3dpbmcuCisrICAgICAgICAvLyBOb3RlOiBjcmVhdGVEZWNvcmF0aW9uKCkgaXMg c29tZXRpbWVzIGNhbGxlZCBmcm9tIHRoZSByZW5kZXIgdGhyZWFkCisrICAgICAgICAvLyBvZiBR dCBRdWljay4gVGhpcyBpcyBlc3NlbnRpYWxseSB3cm9uZyBhbmQgY291bGQgcG90ZW50aWFsbHkg Y2F1c2UgcHJvYmxlbXMsCisrICAgICAgICAvLyBidXQgdW50aWwgdGhlIHVuZGVybHlpbmcgaXNz dWUgaGFzIGJlZW4gZml4ZWQsIHdlIGhhdmUgdG8gdXNlIGludm9rZU1ldGhvZCgpCisrICAgICAg ICAvLyBoZXJlIHRvIGF2b2lkIGFzc2VydHMuCisrICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tl TWV0aG9kKHdpbmRvdygpLCAmUVdpbmRvdzo6cmVxdWVzdFVwZGF0ZSk7CisgICAgIH0KKyAKKyAg ICAgcmV0dXJuIG1XaW5kb3dEZWNvcmF0aW9uOworQEAgLTEwMjMsNiArMTA0NCwxMyBAQCB2b2lk IFFXYXlsYW5kV2luZG93OjpoYW5kbGVTY3JlZW5zQ2hhbmdlZCgpCisgCisgICAgIFFXaW5kb3dT eXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVdpbmRvd1NjcmVlbkNoYW5nZWQod2luZG93KCksIG5ld1Nj cmVlbi0+UVBsYXRmb3JtU2NyZWVuOjpzY3JlZW4oKSk7CisgICAgIG1MYXN0UmVwb3J0ZWRTY3Jl ZW4gPSBuZXdTY3JlZW47CisrICAgIGlmIChmaXhlZFRvcGxldmVsUG9zaXRpb25zICYmICFRUGxh dGZvcm1XaW5kb3c6OnBhcmVudCgpICYmIHdpbmRvdygpLT50eXBlKCkgIT0gUXQ6OlBvcHVwCisr ICAgICAgICAmJiB3aW5kb3coKS0+dHlwZSgpICE9IFF0OjpUb29sVGlwCisrICAgICAgICAmJiBn ZW9tZXRyeSgpLnRvcExlZnQoKSAhPSBuZXdTY3JlZW4tPmdlb21ldHJ5KCkudG9wTGVmdCgpKSB7 CisrICAgICAgICBhdXRvIGdlb21ldHJ5ID0gdGhpcy0+Z2VvbWV0cnkoKTsKKysgICAgICAgIGdl b21ldHJ5Lm1vdmVUbyhuZXdTY3JlZW4tPmdlb21ldHJ5KCkudG9wTGVmdCgpKTsKKysgICAgICAg IHNldEdlb21ldHJ5KGdlb21ldHJ5KTsKKysgICAgfQorIAorICAgICBpbnQgc2NhbGUgPSBuZXdT Y3JlZW4tPmlzUGxhY2Vob2xkZXIoKSA/IDEgOiBzdGF0aWNfY2FzdDxRV2F5bGFuZFNjcmVlbiAq PihuZXdTY3JlZW4pLT5zY2FsZSgpOworICAgICBpZiAoc2NhbGUgIT0gbVNjYWxlKSB7CitAQCAt MTA5NCwxMCArMTEyMiwxOCBAQCBib29sIFFXYXlsYW5kV2luZG93OjpzZXRNb3VzZUdyYWJFbmFi bGVkKGJvb2wgZ3JhYikKKyAgICAgcmV0dXJuIHRydWU7CisgfQorIAorK1F0OjpXaW5kb3dTdGF0 ZXMgUVdheWxhbmRXaW5kb3c6OndpbmRvd1N0YXRlcygpIGNvbnN0CisreworKyAgICByZXR1cm4g bUxhc3RSZXBvcnRlZFdpbmRvd1N0YXRlczsKKyt9CisrCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6 aGFuZGxlV2luZG93U3RhdGVzQ2hhbmdlZChRdDo6V2luZG93U3RhdGVzIHN0YXRlcykKKyB7Cisg ICAgIGNyZWF0ZURlY29yYXRpb24oKTsKKy0gICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFu ZGxlV2luZG93U3RhdGVDaGFuZ2VkKHdpbmRvdygpLCBzdGF0ZXMsIG1MYXN0UmVwb3J0ZWRXaW5k b3dTdGF0ZXMpOworKyAgICBRdDo6V2luZG93U3RhdGVzIHN0YXRlc1dpdGhvdXRBY3RpdmUgPSBz dGF0ZXMgJiB+UXQ6OldpbmRvd0FjdGl2ZTsKKysgICAgUXQ6OldpbmRvd1N0YXRlcyBsYXN0U3Rh dGVzV2l0aG91dEFjdGl2ZSA9IG1MYXN0UmVwb3J0ZWRXaW5kb3dTdGF0ZXMgJiB+UXQ6OldpbmRv d0FjdGl2ZTsKKysgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlV2luZG93U3RhdGVD aGFuZ2VkKHdpbmRvdygpLCBzdGF0ZXNXaXRob3V0QWN0aXZlLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFN0YXRlc1dpdGhvdXRBY3Rp dmUpOworICAgICBtTGFzdFJlcG9ydGVkV2luZG93U3RhdGVzID0gc3RhdGVzOworIH0KKyAKK0BA IC0xMTM5LDE5ICsxMTc1LDI0IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnRpbWVyRXZlbnQoUVRp bWVyRXZlbnQgKmV2ZW50KQorICAgICBpZiAoZXZlbnQtPnRpbWVySWQoKSAhPSBtRnJhbWVDYWxs YmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBib29s IGNhbGxiYWNrVGltZXJFeHBpcmVkID0gbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaGFzRXhw aXJlZChtRnJhbWVDYWxsYmFja1RpbWVvdXQpOworLSAgICBpZiAoIW1GcmFtZUNhbGxiYWNrRWxh cHNlZFRpbWVyLmlzVmFsaWQoKSB8fCBjYWxsYmFja1RpbWVyRXhwaXJlZCApIHsKKy0gICAgICAg IGtpbGxUaW1lcihtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkKTsKKy0gICAgICAg IG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQgPSAtMTsKKy0gICAgfQorLSAgICBp ZiAobUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaXNWYWxpZCgpICYmIGNhbGxiYWNrVGltZXJF eHBpcmVkKSB7CistICAgICAgICBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZhbGlkYXRl KCk7CisrICAgIHsKKysgICAgICAgIFFNdXRleExvY2tlciBsb2NrKCZtRnJhbWVTeW5jTXV0ZXgp OworIAorLSAgICAgICAgcUNEZWJ1ZyhsY1dheWxhbmRCYWNraW5nc3RvcmUpIDw8ICJEaWRuJ3Qg cmVjZWl2ZSBmcmFtZSBjYWxsYmFjayBpbiB0aW1lLCB3aW5kb3cgc2hvdWxkIG5vdyBiZSBpbmV4 cG9zZWQiOworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCA9IHRydWU7CistICAgICAg ICBtV2FpdGluZ0ZvclVwZGF0ZSA9IGZhbHNlOworLSAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFS ZWN0KCkpOworKyAgICAgICAgYm9vbCBjYWxsYmFja1RpbWVyRXhwaXJlZCA9IG1GcmFtZUNhbGxi YWNrRWxhcHNlZFRpbWVyLmhhc0V4cGlyZWQobUZyYW1lQ2FsbGJhY2tUaW1lb3V0KTsKKysgICAg ICAgIGlmICghbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaXNWYWxpZCgpIHx8IGNhbGxiYWNr VGltZXJFeHBpcmVkICkgeworKyAgICAgICAgICAgIGtpbGxUaW1lcihtRnJhbWVDYWxsYmFja0No ZWNrSW50ZXJ2YWxUaW1lcklkKTsKKysgICAgICAgICAgICBtRnJhbWVDYWxsYmFja0NoZWNrSW50 ZXJ2YWxUaW1lcklkID0gLTE7CisrICAgICAgICB9CisrICAgICAgICBpZiAoIW1GcmFtZUNhbGxi YWNrRWxhcHNlZFRpbWVyLmlzVmFsaWQoKSB8fCAhY2FsbGJhY2tUaW1lckV4cGlyZWQpIHsKKysg ICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisrICAgICAgICBtRnJhbWVDYWxsYmFja0Vs YXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7CisgICAgIH0KKysKKysgICAgcUNEZWJ1ZyhsY1dheWxh bmRCYWNraW5nc3RvcmUpIDw8ICJEaWRuJ3QgcmVjZWl2ZSBmcmFtZSBjYWxsYmFjayBpbiB0aW1l LCB3aW5kb3cgc2hvdWxkIG5vdyBiZSBpbmV4cG9zZWQiOworKyAgICBtRnJhbWVDYWxsYmFja1Rp bWVkT3V0ID0gdHJ1ZTsKKysgICAgbVdhaXRpbmdGb3JVcGRhdGUgPSBmYWxzZTsKKysgICAgc2Vu ZEV4cG9zZUV2ZW50KFFSZWN0KCkpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXF1 ZXN0VXBkYXRlKCkKK0BAIC0xMTYwLDggKzEyMDEsMTEgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6 cmVxdWVzdFVwZGF0ZSgpCisgICAgIFFfQVNTRVJUKGhhc1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkp OyAvLyBzaG91bGQgYmUgc2V0IGJ5IFFQQQorIAorICAgICAvLyBJZiB3ZSBoYXZlIGEgZnJhbWUg Y2FsbGJhY2sgYWxsIGlzIGdvb2QgYW5kIHdpbGwgYmUgdGFrZW4gY2FyZSBvZiB0aGVyZQorLSAg ICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKQorLSAgICAgICAgcmV0dXJuOworKyAgICB7 CisrICAgICAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKyAgICAg ICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykKKysgICAgICAgICAgICByZXR1cm47Cisr ICAgIH0KKyAKKyAgICAgLy8gSWYgd2UndmUgYWxyZWFkeSBjYWxsZWQgZGVsaXZlclVwZGF0ZVJl cXVlc3QoKSwgYnV0IGhhdmVuJ3Qgc2VlbiBhbnkgYXR0YWNoK2NvbW1pdC9zd2FwIHlldAorICAg ICAvLyBUaGlzIGlzIGEgc29tZXdoYXQgcmVkdW5kYW50IGJlaGF2aW9yIGFuZCBtaWdodCBpbmRp Y2F0ZSBhIGJ1ZyBpbiB0aGUgY2FsbGluZyBjb2RlLCBzbyBsb2cKK0BAIC0xMTc0LDcgKzEyMTgs MTIgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVxdWVzdFVwZGF0ZSgpCisgICAgIC8vIHNvIHVz ZSBpbnZva2VNZXRob2QgdG8gZGVsYXkgdGhlIGRlbGl2ZXJ5IGEgYml0LgorICAgICBRTWV0YU9i amVjdDo6aW52b2tlTWV0aG9kKHRoaXMsIFt0aGlzXSB7CisgICAgICAgICAvLyBUaGluZ3MgbWln aHQgaGF2ZSBjaGFuZ2VkIGluIHRoZSBtZWFudGltZQorLSAgICAgICAgaWYgKGhhc1BlbmRpbmdV cGRhdGVSZXF1ZXN0KCkgJiYgIW1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykKKysgICAgICAgIHsK KysgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKyAg ICAgICAgICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCisrICAgICAgICAgICAgICAg IHJldHVybjsKKysgICAgICAgIH0KKysgICAgICAgIGlmIChoYXNQZW5kaW5nVXBkYXRlUmVxdWVz dCgpKQorICAgICAgICAgICAgIGRlbGl2ZXJVcGRhdGVSZXF1ZXN0KCk7CisgICAgIH0sIFF0OjpR dWV1ZWRDb25uZWN0aW9uKTsKKyB9CitAQCAtMTE4NSwxOSArMTIzNCwxOCBAQCB2b2lkIFFXYXls YW5kV2luZG93OjpyZXF1ZXN0VXBkYXRlKCkKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVV cGRhdGUoKQorIHsKKyAgICAgcUNEZWJ1ZyhsY1dheWxhbmRCYWNraW5nc3RvcmUpIDw8ICJoYW5k bGVVcGRhdGUiIDw8IFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKTsKKysKKyAgICAgLy8gVE9ETzog U2hvdWxkIHN5bmMgc3Vic3VyZmFjZXMgYXZvaWQgcmVxdWVzdGluZyBmcmFtZSBjYWxsYmFja3M/ CisgICAgIFFSZWFkTG9ja2VyIGxvY2soJm1TdXJmYWNlTG9jayk7CisgICAgIGlmICghbVN1cmZh Y2UpCisgICAgICAgICByZXR1cm47CisgCistICAgIGlmIChtRnJhbWVDYWxsYmFjaykgeworLSAg ICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShtRnJhbWVDYWxsYmFjayk7CistICAgICAgICBtRnJh bWVDYWxsYmFjayA9IG51bGxwdHI7CistICAgIH0KKysgICAgUU11dGV4TG9ja2VyIGxvY2tlcigm bUZyYW1lU3luY011dGV4KTsKKysgICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykKKysg ICAgICAgIHJldHVybjsKKyAKKy0gICAgUU11dGV4TG9ja2VyIGxvY2tlcihtRnJhbWVRdWV1ZS5t dXRleCk7CisgICAgIHN0cnVjdCA6OndsX3N1cmZhY2UgKndyYXBwZWRTdXJmYWNlID0gcmVpbnRl cnByZXRfY2FzdDxzdHJ1Y3QgOjp3bF9zdXJmYWNlICo+KHdsX3Byb3h5X2NyZWF0ZV93cmFwcGVy KG1TdXJmYWNlLT5vYmplY3QoKSkpOworLSAgICB3bF9wcm94eV9zZXRfcXVldWUocmVpbnRlcnBy ZXRfY2FzdDx3bF9wcm94eSAqPih3cmFwcGVkU3VyZmFjZSksIG1GcmFtZVF1ZXVlLnF1ZXVlKTsK KysgICAgd2xfcHJveHlfc2V0X3F1ZXVlKHJlaW50ZXJwcmV0X2Nhc3Q8d2xfcHJveHkgKj4od3Jh cHBlZFN1cmZhY2UpLCBtRGlzcGxheS0+ZnJhbWVFdmVudFF1ZXVlKCkpOworICAgICBtRnJhbWVD YWxsYmFjayA9IHdsX3N1cmZhY2VfZnJhbWUod3JhcHBlZFN1cmZhY2UpOworICAgICB3bF9wcm94 eV93cmFwcGVyX2Rlc3Ryb3kod3JhcHBlZFN1cmZhY2UpOworICAgICB3bF9jYWxsYmFja19hZGRf bGlzdGVuZXIobUZyYW1lQ2FsbGJhY2ssICZRV2F5bGFuZFdpbmRvdzo6Y2FsbGJhY2tMaXN0ZW5l ciwgdGhpcyk7CitAQCAtMTIwNyw2ICsxMjU1LDggQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFu ZGxlVXBkYXRlKCkKKyAgICAgLy8gU3RhcnQgYSB0aW1lciBmb3IgaGFuZGxpbmcgdGhlIGNhc2Ug d2hlbiB0aGUgY29tcG9zaXRvciBzdG9wcyBzZW5kaW5nIGZyYW1lIGNhbGxiYWNrcy4KKyAgICAg aWYgKG1GcmFtZUNhbGxiYWNrVGltZW91dCA+IDApIHsKKyAgICAgICAgIFFNZXRhT2JqZWN0Ojpp bnZva2VNZXRob2QodGhpcywgW3RoaXNdIHsKKysgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9j a2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKworICAgICAgICAgICAgIGlmIChtV2FpdGluZ0ZvckZy YW1lQ2FsbGJhY2spIHsKKyAgICAgICAgICAgICAgICAgaWYgKG1GcmFtZUNhbGxiYWNrQ2hlY2tJ bnRlcnZhbFRpbWVySWQgPCAwKQorICAgICAgICAgICAgICAgICAgICAgbUZyYW1lQ2FsbGJhY2tD aGVja0ludGVydmFsVGltZXJJZCA9IHN0YXJ0VGltZXIobUZyYW1lQ2FsbGJhY2tUaW1lb3V0KTsK K0BAIC0xMjY3LDYgKzEzMTcsMjAgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0T3BhcXVlQXJl YShjb25zdCBRUmVnaW9uICZvcGFxdWVBcmVhKQorICAgICB3bF9yZWdpb25fZGVzdHJveShyZWdp b24pOworIH0KKyAKKyt2b2lkIFFXYXlsYW5kV2luZG93OjphZGRDaGlsZFBvcHVwKFFXYXlsYW5k V2luZG93ICpzdXJmYWNlKSB7CisrICAgIG1DaGlsZFBvcHVwcy5hcHBlbmQoc3VyZmFjZSk7Cisr fQorKworK3ZvaWQgUVdheWxhbmRXaW5kb3c6OnJlbW92ZUNoaWxkUG9wdXAoUVdheWxhbmRXaW5k b3cgKnN1cmZhY2UpIHsKKysgICAgbUNoaWxkUG9wdXBzLnJlbW92ZUFsbChzdXJmYWNlKTsKKyt9 CisrCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6Y2xvc2VDaGlsZFBvcHVwcygpIHsKKysgICAgd2hp bGUgKCFtQ2hpbGRQb3B1cHMuaXNFbXB0eSgpKSB7CisrICAgICAgICBhdXRvIHBvcHVwID0gbUNo aWxkUG9wdXBzLnRha2VMYXN0KCk7CisrICAgICAgICBwb3B1cC0+cmVzZXQoKTsKKysgICAgfQor K30KKyB9CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kd2luZG93X3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k d2luZG93X3AuaAoraW5kZXggMDEzMzdjZmYuLjJmMjE5ZDhjIDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3dfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZHdpbmRvd19wLmgKK0BAIC05OCw2ICs5OCw5IEBAIHB1YmxpYzoKKyAgICAg UVdheWxhbmRXaW5kb3coUVdpbmRvdyAqd2luZG93LCBRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkp OworICAgICB+UVdheWxhbmRXaW5kb3coKSBvdmVycmlkZTsKKyAKKysgICAgLy8gS2VlcCBUb3Bs ZXZlbHMgcG9zaXRpb24gb24gdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGVpciBzY3JlZW4KKysg ICAgc3RhdGljIGlubGluZSBib29sIGZpeGVkVG9wbGV2ZWxQb3NpdGlvbnMgPSB0cnVlOworKwor ICAgICB2aXJ0dWFsIFdpbmRvd1R5cGUgd2luZG93VHlwZSgpIGNvbnN0ID0gMDsKKyAgICAgdmly dHVhbCB2b2lkIGVuc3VyZVNpemUoKTsKKyAgICAgV0lkIHdpbklkKCkgY29uc3Qgb3ZlcnJpZGU7 CitAQCAtMTQ4LDYgKzE1MSw3IEBAIHB1YmxpYzoKKyAgICAgdm9pZCBzZXRXaW5kb3dTdGF0ZShR dDo6V2luZG93U3RhdGVzIHN0YXRlcykgb3ZlcnJpZGU7CisgICAgIHZvaWQgc2V0V2luZG93Rmxh Z3MoUXQ6OldpbmRvd0ZsYWdzIGZsYWdzKSBvdmVycmlkZTsKKyAgICAgdm9pZCBoYW5kbGVXaW5k b3dTdGF0ZXNDaGFuZ2VkKFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGVzKTsKKysgICAgUXQ6OldpbmRv d1N0YXRlcyB3aW5kb3dTdGF0ZXMoKSBjb25zdDsKKyAKKyAgICAgdm9pZCByYWlzZSgpIG92ZXJy aWRlOworICAgICB2b2lkIGxvd2VyKCkgb3ZlcnJpZGU7CitAQCAtMjA2LDYgKzIxMCwxMCBAQCBw dWJsaWM6CisgICAgIHZvaWQgaGFuZGxlVXBkYXRlKCk7CisgICAgIHZvaWQgZGVsaXZlclVwZGF0 ZVJlcXVlc3QoKSBvdmVycmlkZTsKKyAKKysgICAgdm9pZCBhZGRDaGlsZFBvcHVwKFFXYXlsYW5k V2luZG93KiBjaGlsZCk7CisrICAgIHZvaWQgcmVtb3ZlQ2hpbGRQb3B1cChRV2F5bGFuZFdpbmRv dyogY2hpbGQpOworKyAgICB2b2lkIGNsb3NlQ2hpbGRQb3B1cHMoKTsKKysKKyBwdWJsaWMgc2xv dHM6CisgICAgIHZvaWQgYXBwbHlDb25maWd1cmUoKTsKKyAKK0BAIC0yMTUsNyArMjIzLDExIEBA IHNpZ25hbHM6CisgCisgcHJvdGVjdGVkOgorICAgICBRV2F5bGFuZERpc3BsYXkgKm1EaXNwbGF5 ID0gbnVsbHB0cjsKKysKKysgICAgLy8gbVN1cmZhY2UgY2FuIGJlIHdyaXR0ZW4gYnkgdGhlIG1h aW4gdGhyZWFkLiBPdGhlciB0aHJlYWRzIHNob3VsZCBjbGFpbSBhIHJlYWQgbG9jayBmb3IgYWNj ZXNzCisrICAgIG11dGFibGUgUVJlYWRXcml0ZUxvY2sgbVN1cmZhY2VMb2NrOworICAgICBRU2Nv cGVkUG9pbnRlcjxRV2F5bGFuZFN1cmZhY2U+IG1TdXJmYWNlOworKworICAgICBRV2F5bGFuZFNo ZWxsU3VyZmFjZSAqbVNoZWxsU3VyZmFjZSA9IG51bGxwdHI7CisgICAgIFFXYXlsYW5kU3ViU3Vy ZmFjZSAqbVN1YlN1cmZhY2VXaW5kb3cgPSBudWxscHRyOworICAgICBRVmVjdG9yPFFXYXlsYW5k U3ViU3VyZmFjZSAqPiBtQ2hpbGRyZW47CitAQCAtMjI1LDEzICsyMzcsMTQgQEAgcHJvdGVjdGVk OgorICAgICBRdDo6TW91c2VCdXR0b25zIG1Nb3VzZVByZXNzZWRJbkNvbnRlbnRBcmVhID0gUXQ6 Ok5vQnV0dG9uOworIAorICAgICBXSWQgbVdpbmRvd0lkOworLSAgICBib29sIG1XYWl0aW5nRm9y RnJhbWVDYWxsYmFjayA9IGZhbHNlOworICAgICBib29sIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQg PSBmYWxzZTsgLy8gV2hldGhlciB0aGUgZnJhbWUgY2FsbGJhY2sgaGFzIHRpbWVkIG91dAorLSAg ICBib29sIG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkgPSBmYWxzZTsKKyAgICAgaW50IG1GcmFt ZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQgPSAtMTsKKy0gICAgUUVsYXBzZWRUaW1lciBt RnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lcjsKKy0gICAgc3RydWN0IDo6d2xfY2FsbGJhY2sgKm1G cmFtZUNhbGxiYWNrID0gbnVsbHB0cjsKKy0gICAgUVdheWxhbmREaXNwbGF5OjpGcmFtZVF1ZXVl IG1GcmFtZVF1ZXVlOworKyAgICBRQXRvbWljSW50IG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkg PSBmYWxzZTsKKysKKysgICAgYm9vbCBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2sgPSBmYWxzZTsg Ly8gUHJvdGVjdGVkIGJ5IG1GcmFtZVN5bmNNdXRleAorKyAgICBRRWxhcHNlZFRpbWVyIG1GcmFt ZUNhbGxiYWNrRWxhcHNlZFRpbWVyOyAvLyBQcm90ZWN0ZWQgYnkgbUZyYW1lU3luY011dGV4Cisr ICAgIHN0cnVjdCA6OndsX2NhbGxiYWNrICptRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7IC8vIFBy b3RlY3RlZCBieSBtRnJhbWVTeW5jTXV0ZXgKKysgICAgUU11dGV4IG1GcmFtZVN5bmNNdXRleDsK KyAgICAgUVdhaXRDb25kaXRpb24gbUZyYW1lU3luY1dhaXQ7CisgCisgICAgIC8vIFRydWUgd2hl biB3ZSBoYXZlIGNhbGxlZCBkZWxpdmVyUmVxdWVzdFVwZGF0ZSwgYnV0IHRoZSBjbGllbnQgaGFz IG5vdCB5ZXQgYXR0YWNoZWQgYSBuZXcgYnVmZmVyCitAQCAtMjYxLDYgKzI3NCw4IEBAIHByb3Rl Y3RlZDoKKyAgICAgUVdheWxhbmRCdWZmZXIgKm1RdWV1ZWRCdWZmZXIgPSBudWxscHRyOworICAg ICBRUmVnaW9uIG1RdWV1ZWRCdWZmZXJEYW1hZ2U7CisgCisrICAgIFFMaXN0PFFQb2ludGVyPFFX YXlsYW5kV2luZG93Pj4gbUNoaWxkUG9wdXBzOworKworIHByaXZhdGU6CisgICAgIHZvaWQgc2V0 R2VvbWV0cnlfaGVscGVyKGNvbnN0IFFSZWN0ICZyZWN0KTsKKyAgICAgdm9pZCBpbml0V2luZG93 KCk7CitAQCAtMjgzLDEyICsyOTgsMTAgQEAgcHJpdmF0ZToKKyAgICAgUVJlY3QgbUxhc3RFeHBv c2VHZW9tZXRyeTsKKyAKKyAgICAgc3RhdGljIGNvbnN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIGNh bGxiYWNrTGlzdGVuZXI7CistICAgIHZvaWQgaGFuZGxlRnJhbWVDYWxsYmFjaygpOworKyAgICB2 b2lkIGhhbmRsZUZyYW1lQ2FsbGJhY2soc3RydWN0IDo6d2xfY2FsbGJhY2sqIGNhbGxiYWNrKTsK KyAKKyAgICAgc3RhdGljIFFXYXlsYW5kV2luZG93ICptTW91c2VHcmFiOworIAorLSAgICBtdXRh YmxlIFFSZWFkV3JpdGVMb2NrIG1TdXJmYWNlTG9jazsKKy0KKyAgICAgZnJpZW5kIGNsYXNzIFFX YXlsYW5kU3ViU3VyZmFjZTsKKyB9OworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3NoZWxsaW50ZWdyYXRpb24vcXdheWxhbmRzaGVsbGludGVncmF0aW9uX3AuaCBiL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3NoZWxsaW50ZWdyYXRpb24vcXdheWxhbmRzaGVsbGludGVncmF0aW9u X3AuaAoraW5kZXggY2NhZDAwNDguLjRjYzliM2I4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvc2hlbGxpbnRlZ3JhdGlvbi9xd2F5bGFuZHNoZWxsaW50ZWdyYXRpb25fcC5oCisr KysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5kc2hlbGxp bnRlZ3JhdGlvbl9wLmgKK0BAIC03MywxMSArNzMsMTAgQEAgcHVibGljOgorICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgIH0KKyAgICAgdmlydHVhbCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqY3Jl YXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kV2luZG93ICp3aW5kb3cpID0gMDsKKysgICAgLy8ga2Vw dCBmb3IgYmluYXJ5IGNvbXBhdCB3aXRoIGxheWVyLXNoZWxsLXF0CisgICAgIHZpcnR1YWwgdm9p ZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFX YXlsYW5kV2luZG93ICpvbGRGb2N1cykgeworLSAgICAgICAgaWYgKG5ld0ZvY3VzKQorLSAgICAg ICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93QWN0aXZhdGVkKG5ld0ZvY3VzKTsKKy0gICAg ICAgIGlmIChvbGRGb2N1cykKKy0gICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0Rl YWN0aXZhdGVkKG9sZEZvY3VzKTsKKysgICAgICAgIFFfVU5VU0VEKG5ld0ZvY3VzKTsKKysgICAg ICAgIFFfVU5VU0VEKG9sZEZvY3VzKTsKKyAgICAgfQorICAgICB2aXJ0dWFsIHZvaWQgKm5hdGl2 ZVJlc291cmNlRm9yV2luZG93KGNvbnN0IFFCeXRlQXJyYXkgJnJlc291cmNlLCBRV2luZG93ICp3 aW5kb3cpIHsKKyAgICAgICAgIFFfVU5VU0VEKHJlc291cmNlKTsKK2RpZmYgLS1naXQgYS9xdHdh eWxhbmQvc3JjL2NvbXBvc2l0b3IvY29uZmlndXJlLmpzb24gYi9xdHdheWxhbmQvc3JjL2NvbXBv c2l0b3IvY29uZmlndXJlLmpzb24KK2luZGV4IGJjZmQ1MjE1Li5kYTk1ZDA3YiAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC9zcmMvY29tcG9zaXRvci9jb25maWd1cmUuanNvbgorKysrIGIvcXR3YXls YW5kL3NyYy9jb21wb3NpdG9yL2NvbmZpZ3VyZS5qc29uCitAQCAtNyw2ICs3LDMxIEBACisgICAg ICJ0ZXN0RGlyIjogIi4uLy4uL2NvbmZpZy50ZXN0cyIsCisgCisgICAgICJsaWJyYXJpZXMiOiB7 CisrICAgICAgICAid2F5bGFuZC1jbGllbnQiOiB7CisrICAgICAgICAgICAgImxhYmVsIjogIldh eWxhbmQgY2xpZW50IGxpYnJhcnkiLAorKyAgICAgICAgICAgICJoZWFkZXJzIjogIndheWxhbmQt dmVyc2lvbi5oIiwKKysgICAgICAgICAgICAidGVzdCI6IHsKKysgICAgICAgICAgICAgICAgIm1h aW4iOiBbCisrICAgICAgICAgICAgICAgICAgICAiI2lmIFdBWUxBTkRfVkVSU0lPTl9NQUpPUiA8 IDEiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgZXJyb3IgV2F5bGFuZCAxLjguMCBvciBoaWdo ZXIgcmVxdWlyZWQiLAorKyAgICAgICAgICAgICAgICAgICAgIiNlbmRpZiIsCisrICAgICAgICAg ICAgICAgICAgICAiI2lmIFdBWUxBTkRfVkVSU0lPTl9NQUpPUiA9PSAxIiwKKysgICAgICAgICAg ICAgICAgICAgICIjIGlmIFdBWUxBTkRfVkVSU0lPTl9NSU5PUiA8IDgiLAorKyAgICAgICAgICAg ICAgICAgICAgIiMgIGVycm9yIFdheWxhbmQgMS44LjAgb3IgaGlnaGVyIHJlcXVpcmVkIiwKKysg ICAgICAgICAgICAgICAgICAgICIjIGVuZGlmIiwKKysgICAgICAgICAgICAgICAgICAgICIjIGlm IFdBWUxBTkRfVkVSU0lPTl9NSU5PUiA9PSA4IiwKKysgICAgICAgICAgICAgICAgICAgICIjICBp ZiBXQVlMQU5EX1ZFUlNJT05fTUlDUk8gPCAwIiwKKysgICAgICAgICAgICAgICAgICAgICIjICAg ZXJyb3IgV2F5bGFuZCAxLjguMCBvciBoaWdoZXIgcmVxdWlyZWQiLAorKyAgICAgICAgICAgICAg ICAgICAgIiMgIGVuZGlmIiwKKysgICAgICAgICAgICAgICAgICAgICIjIGVuZGlmIiwKKysgICAg ICAgICAgICAgICAgICAgICIjZW5kaWYiCisrICAgICAgICAgICAgICAgICBdCisrICAgICAgICAg ICAgfSwKKysgICAgICAgICAgICAic291cmNlcyI6IFsKKysgICAgICAgICAgICAgICAgeyAidHlw ZSI6ICJwa2dDb25maWciLCAiYXJncyI6ICJ3YXlsYW5kLWNsaWVudCIgfSwKKysgICAgICAgICAg ICAgICAgIi1sd2F5bGFuZC1jbGllbnQiCisrICAgICAgICAgICAgXQorKyAgICAgICAgfSwKKyAg ICAgICAgICJ3YXlsYW5kLXNlcnZlciI6IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAid2F5bGFu ZC1zZXJ2ZXIiLAorICAgICAgICAgICAgICJoZWFkZXJzIjogIndheWxhbmQtdmVyc2lvbi5oIiwK K0BAIC0xNTEsOCArMTc2LDcgQEAKKyAgICAgICAgICAgICAgICAgICAgICIjZW5kaWYiCisgICAg ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICJsaWJzIjogIi1s ZHJtIiwKKy0gICAgICAgICAgICAidXNlIjogImVnbCIKKysgICAgICAgICAgICAidXNlIjogImRy bSBlZ2wiCisgICAgICAgICB9LAorICAgICAgICAgImRtYWJ1Zi1jbGllbnQtYnVmZmVyIjogewor ICAgICAgICAgICAgICJsYWJlbCI6ICJMaW51eCBDbGllbnQgZG1hLWJ1ZiBCdWZmZXIgU2hhcmlu ZyIsCitAQCAtMTc2LDggKzIwMCw3IEBACisgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIDA7 IgorICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAibGli cyI6ICItbGRybSIsCistICAgICAgICAgICAgInVzZSI6ICJlZ2wiCisrICAgICAgICAgICAgInVz ZSI6ICJkcm0gZWdsIgorICAgICAgICAgfSwKKyAgICAgICAgICJ2dWxrYW4tc2VydmVyLWJ1ZmZl ciI6IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAiVnVsa2FuIEJ1ZmZlciBTaGFyaW5nIiwKK0BA IC0xOTUsNyArMjE4LDggQEAKKyAgICAgICAgICAgICAgICAgICAgICJleHBvcnRBbGxvY0luZm8u aGFuZGxlVHlwZXMgPSBWS19FWFRFUk5BTF9NRU1PUllfSEFORExFX1RZUEVfT1BBUVVFX0ZEX0JJ VF9LSFI7IiwKKyAgICAgICAgICAgICAgICAgICAgICJyZXR1cm4gMDsiCisgICAgICAgICAgICAg ICAgIF0KKy0gICAgICAgICAgICB9CisrICAgICAgICAgICAgfSwKKysgICAgICAgICAgICAidXNl IjogIndheWxhbmQtY2xpZW50IgorICAgICAgICAgfQorICAgICB9LAorIAorZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdh eWxhbmRlZ2x3aW5kb3cuY3BwIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2Ns aWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5jcHAKK2luZGV4IDc4ODlmNTc1Li42 NDE0MDY3MiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9j bGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuY3BwCisrKysgYi9xdHdheWxhbmQv c3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2lu ZG93LmNwcAorQEAgLTQwLDYgKzQwLDcgQEAKKyAjaW5jbHVkZSAicXdheWxhbmRlZ2x3aW5kb3cu aCIKKyAKKyAjaW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvcXdheWxhbmRzY3JlZW5f cC5oPgorKyNpbmNsdWRlIDxRdFdheWxhbmRDbGllbnQvcHJpdmF0ZS9xd2F5bGFuZHN1cmZhY2Vf cC5oPgorICNpbmNsdWRlICJxd2F5bGFuZGdsY29udGV4dC5oIgorIAorICNpbmNsdWRlIDxRdEVn bFN1cHBvcnQvcHJpdmF0ZS9xZWdsY29udmVuaWVuY2VfcC5oPgorQEAgLTEyNCw2ICsxMjUsNyBA QCB2b2lkIFFXYXlsYW5kRWdsV2luZG93Ojp1cGRhdGVTdXJmYWNlKGJvb2wgY3JlYXRlKQorICAg ICAgICAgfQorICAgICAgICAgbU9mZnNldCA9IFFQb2ludCgpOworICAgICB9IGVsc2UgeworKyAg ICAgICAgUVJlYWRMb2NrZXIgbG9ja2VyKCZtU3VyZmFjZUxvY2spOworICAgICAgICAgaWYgKG1f d2F5bGFuZEVnbFdpbmRvdykgeworICAgICAgICAgICAgIGludCBjdXJyZW50X3dpZHRoLCBjdXJy ZW50X2hlaWdodDsKKyAgICAgICAgICAgICBzdGF0aWMgYm9vbCBkaXNhYmxlUmVzaXplQ2hlY2sg PSBxZ2V0ZW52KCJRVF9XQVlMQU5EX0RJU0FCTEVfUkVTSVpFQ0hFQ0siKS50b0ludCgpOworQEAg LTEzMSwxNCArMTMzLDE2IEBAIHZvaWQgUVdheWxhbmRFZ2xXaW5kb3c6OnVwZGF0ZVN1cmZhY2Uo Ym9vbCBjcmVhdGUpCisgICAgICAgICAgICAgaWYgKCFkaXNhYmxlUmVzaXplQ2hlY2spIHsKKyAg ICAgICAgICAgICAgICAgd2xfZWdsX3dpbmRvd19nZXRfYXR0YWNoZWRfc2l6ZShtX3dheWxhbmRF Z2xXaW5kb3csICZjdXJyZW50X3dpZHRoLCAmY3VycmVudF9oZWlnaHQpOworICAgICAgICAgICAg IH0KKy0gICAgICAgICAgICBpZiAoZGlzYWJsZVJlc2l6ZUNoZWNrIHx8IChjdXJyZW50X3dpZHRo ICE9IHNpemVXaXRoTWFyZ2lucy53aWR0aCgpIHx8IGN1cnJlbnRfaGVpZ2h0ICE9IHNpemVXaXRo TWFyZ2lucy5oZWlnaHQoKSkpIHsKKysgICAgICAgICAgICBpZiAoZGlzYWJsZVJlc2l6ZUNoZWNr IHx8IChjdXJyZW50X3dpZHRoICE9IHNpemVXaXRoTWFyZ2lucy53aWR0aCgpIHx8IGN1cnJlbnRf aGVpZ2h0ICE9IHNpemVXaXRoTWFyZ2lucy5oZWlnaHQoKSkgfHwgbV9yZXF1ZXN0ZWRTaXplICE9 IHNpemVXaXRoTWFyZ2lucykgeworICAgICAgICAgICAgICAgICB3bF9lZ2xfd2luZG93X3Jlc2l6 ZShtX3dheWxhbmRFZ2xXaW5kb3csIHNpemVXaXRoTWFyZ2lucy53aWR0aCgpLCBzaXplV2l0aE1h cmdpbnMuaGVpZ2h0KCksIG1PZmZzZXQueCgpLCBtT2Zmc2V0LnkoKSk7CisrICAgICAgICAgICAg ICAgIG1fcmVxdWVzdGVkU2l6ZSA9IHNpemVXaXRoTWFyZ2luczsKKyAgICAgICAgICAgICAgICAg bU9mZnNldCA9IFFQb2ludCgpOworIAorICAgICAgICAgICAgICAgICBtX3Jlc2l6ZSA9IHRydWU7 CisgICAgICAgICAgICAgfQorLSAgICAgICAgfSBlbHNlIGlmIChjcmVhdGUgJiYgd2xTdXJmYWNl KCkpIHsKKy0gICAgICAgICAgICBtX3dheWxhbmRFZ2xXaW5kb3cgPSB3bF9lZ2xfd2luZG93X2Ny ZWF0ZSh3bFN1cmZhY2UoKSwgc2l6ZVdpdGhNYXJnaW5zLndpZHRoKCksIHNpemVXaXRoTWFyZ2lu cy5oZWlnaHQoKSk7CisrICAgICAgICB9IGVsc2UgaWYgKGNyZWF0ZSAmJiBtU3VyZmFjZSkgewor KyAgICAgICAgICAgIG1fd2F5bGFuZEVnbFdpbmRvdyA9IHdsX2VnbF93aW5kb3dfY3JlYXRlKG1T dXJmYWNlLT5vYmplY3QoKSwgc2l6ZVdpdGhNYXJnaW5zLndpZHRoKCksIHNpemVXaXRoTWFyZ2lu cy5oZWlnaHQoKSk7CisrICAgICAgICAgICAgbV9yZXF1ZXN0ZWRTaXplID0gc2l6ZVdpdGhNYXJn aW5zOworICAgICAgICAgfQorIAorICAgICAgICAgaWYgKCFtX2VnbFN1cmZhY2UgJiYgbV93YXls YW5kRWdsV2luZG93ICYmIGNyZWF0ZSkgeworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvaGFy ZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuaCBi L3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdh eWxhbmRlZ2x3aW5kb3cuaAoraW5kZXggNWIxZjRkNTYuLjAwNzlkZmVmIDEwMDY0NAorLS0tIGEv cXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5 bGFuZGVnbHdpbmRvdy5oCisrKysgYi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24v Y2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmgKK0BAIC04OCw2ICs4OCw3IEBA IHByaXZhdGU6CisgICAgIG11dGFibGUgUU9wZW5HTEZyYW1lYnVmZmVyT2JqZWN0ICptX2NvbnRl bnRGQk8gPSBudWxscHRyOworIAorICAgICBRU3VyZmFjZUZvcm1hdCBtX2Zvcm1hdDsKKysgICAg UVNpemUgbV9yZXF1ZXN0ZWRTaXplOworIH07CisgCisgfQorZGlmZiAtLWdpdCBhL3F0d2F5bGFu ZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jb21wb3NpdG9yL2xpbnV4LWRtYWJ1Zi11bnN0YWJs ZS12MS9saW51eGRtYWJ1Zi5oIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2Nv bXBvc2l0b3IvbGludXgtZG1hYnVmLXVuc3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmgKK2luZGV4IDU2 YTcxMGMzLi5jNmE4YjZjNiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRl Z3JhdGlvbi9jb21wb3NpdG9yL2xpbnV4LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51eGRtYWJ1Zi5o CisrKysgYi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY29tcG9zaXRvci9saW51 eC1kbWFidWYtdW5zdGFibGUtdjEvbGludXhkbWFidWYuaAorQEAgLTQxLDYgKzQxLDggQEAKKyAj aW5jbHVkZSA8UXRDb3JlL1FUZXh0U3RyZWFtPgorICNpbmNsdWRlIDxRdEd1aS9RT3BlbkdMVGV4 dHVyZT4KKyAKKysjaW5jbHVkZSA8YXJyYXk+CisrCisgI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyAj aW5jbHVkZSA8RUdML2VnbGV4dC5oPgorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9kZWNvcmF0aW9ucy9icmFkaWVudC9tYWluLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lu cy9kZWNvcmF0aW9ucy9icmFkaWVudC9tYWluLmNwcAoraW5kZXggZTc1ZmRhM2MuLmZhODg1MTQz IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL2RlY29yYXRpb25zL2JyYWRpZW50 L21haW4uY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvZGVjb3JhdGlvbnMvYnJhZGll bnQvbWFpbi5jcHAKK0BAIC0xNjQsMTMgKzE2NCwxMCBAQCB2b2lkIFFXYXlsYW5kQnJhZGllbnRE ZWNvcmF0aW9uOjpwYWludChRUGFpbnREZXZpY2UgKmRldmljZSkKKyAgICAgLy8gV2luZG93IGlj b24KKyAgICAgUUljb24gaWNvbiA9IHdheWxhbmRXaW5kb3coKS0+d2luZG93SWNvbigpOworICAg ICBpZiAoIWljb24uaXNOdWxsKCkpIHsKKy0gICAgICAgIFFQaXhtYXAgcGl4bWFwID0gaWNvbi5w aXhtYXAoUVNpemUoMTI4LCAxMjgpKTsKKy0gICAgICAgIFFQaXhtYXAgc2NhbGVkID0gcGl4bWFw LnNjYWxlZCgyMiwgMjIsIFF0OjpJZ25vcmVBc3BlY3RSYXRpbywgUXQ6OlNtb290aFRyYW5zZm9y bWF0aW9uKTsKKy0KKyAgICAgICAgIFFSZWN0RiBpY29uUmVjdCgwLCAwLCAyMiwgMjIpOworLSAg ICAgICAgcC5kcmF3UGl4bWFwKGljb25SZWN0LmFkanVzdGVkKG1hcmdpbnMoKS5sZWZ0KCkgKyBC VVRUT05fU1BBQ0lORywgNCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtYXJnaW5zKCkubGVmdCgpICsgQlVUVE9OX1NQQUNJTkcsIDQpLAorLSAgICAgICAgICAgICAg ICAgICAgIHNjYWxlZCwgaWNvblJlY3QpOworKyAgICAgICAgaWNvblJlY3QuYWRqdXN0KG1hcmdp bnMoKS5sZWZ0KCkgKyBCVVRUT05fU1BBQ0lORywgNCwKKysgICAgICAgICAgICAgICAgICAgICAg ICBtYXJnaW5zKCkubGVmdCgpICsgQlVUVE9OX1NQQUNJTkcsIDQpLAorKyAgICAgICAgaWNvbi5w YWludCgmcCwgaWNvblJlY3QudG9SZWN0KCkpOworICAgICB9CisgCisgICAgIC8vIFdpbmRvdyB0 aXRsZQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9u L3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjUuY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVn aW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NS5jcHAK K2luZGV4IDg1ZDI1ZTNjLi42MGJkZDQ5MSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjUuY3Bw CisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwt djUvcXdheWxhbmR4ZGdwb3B1cHY1LmNwcAorQEAgLTQ3LDE4ICs0NywyMSBAQCBRVF9CRUdJTl9O QU1FU1BBQ0UKKyAKKyBuYW1lc3BhY2UgUXRXYXlsYW5kQ2xpZW50IHsKKyAKKy1RV2F5bGFuZFhk Z1BvcHVwVjU6OlFXYXlsYW5kWGRnUG9wdXBWNShzdHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVw LCBRV2F5bGFuZFdpbmRvdyAqd2luZG93KQorK1FXYXlsYW5kWGRnUG9wdXBWNTo6UVdheWxhbmRY ZGdQb3B1cFY1KHN0cnVjdCA6OnhkZ19wb3B1cF92NSAqcG9wdXAsIFFXYXlsYW5kV2luZG93KiBw YXJlbnQsIFFXYXlsYW5kV2luZG93ICp3aW5kb3cpCisgICAgIDogUVdheWxhbmRTaGVsbFN1cmZh Y2Uod2luZG93KQorICAgICAsIFF0V2F5bGFuZDo6eGRnX3BvcHVwX3Y1KHBvcHVwKQorKyAgICAs IG1fcGFyZW50KHBhcmVudCkKKyAgICAgLCBtX3dpbmRvdyh3aW5kb3cpCisgeworICAgICBpZiAo d2luZG93LT5kaXNwbGF5KCktPndpbmRvd0V4dGVuc2lvbigpKQorICAgICAgICAgbV9leHRlbmRl ZFdpbmRvdyA9IG5ldyBRV2F5bGFuZEV4dGVuZGVkU3VyZmFjZSh3aW5kb3cpOworKyAgICBtX3Bh cmVudC0+YWRkQ2hpbGRQb3B1cChtX3dpbmRvdyk7CisgfQorIAorIFFXYXlsYW5kWGRnUG9wdXBW NTo6flFXYXlsYW5kWGRnUG9wdXBWNSgpCisgeworICAgICB4ZGdfcG9wdXBfZGVzdHJveShvYmpl Y3QoKSk7CisrICAgIG1fcGFyZW50LT5yZW1vdmVDaGlsZFBvcHVwKG1fd2luZG93KTsKKyAgICAg ZGVsZXRlIG1fZXh0ZW5kZWRXaW5kb3c7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9z cmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVw djVfcC5oIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxs LXY1L3F3YXlsYW5keGRncG9wdXB2NV9wLmgKK2luZGV4IDc0OTRmNmE2Li5kODVmMTMwYiAxMDA2 NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVs bC12NS9xd2F5bGFuZHhkZ3BvcHVwdjVfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMv c2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1X3AuaAorQEAg LTcwLDcgKzcwLDcgQEAgY2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9FWFBPUlQgUVdheWxhbmRYZGdQ b3B1cFY1IDogcHVibGljIFFXYXlsYW5kU2hlbGxTdXJmYWNlCisgeworICAgICBRX09CSkVDVAor IHB1YmxpYzoKKy0gICAgUVdheWxhbmRYZGdQb3B1cFY1KHN0cnVjdCA6OnhkZ19wb3B1cF92NSAq cG9wdXAsIFFXYXlsYW5kV2luZG93ICp3aW5kb3cpOworKyAgICBRV2F5bGFuZFhkZ1BvcHVwVjUo c3RydWN0IDo6eGRnX3BvcHVwX3Y1ICpwb3B1cCwgUVdheWxhbmRXaW5kb3cqIHBhcmVudCwgUVdh eWxhbmRXaW5kb3cgKndpbmRvdyk7CisgICAgIH5RV2F5bGFuZFhkZ1BvcHVwVjUoKSBvdmVycmlk ZTsKKyAKKyBwcm90ZWN0ZWQ6CitAQCAtNzgsNiArNzgsNyBAQCBwcm90ZWN0ZWQ6CisgCisgcHJp dmF0ZToKKyAgICAgUVdheWxhbmRFeHRlbmRlZFN1cmZhY2UgKm1fZXh0ZW5kZWRXaW5kb3cgPSBu dWxscHRyOworKyAgICBRV2F5bGFuZFdpbmRvdyAqbV9wYXJlbnQgPSBudWxscHRyOworICAgICBR V2F5bGFuZFdpbmRvdyAqbV93aW5kb3cgPSBudWxscHRyOworIH07CisgCitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXls YW5keGRnc2hlbGx2NS5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlv bi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1LmNwcAoraW5kZXggN2UyNDJjNGEuLmRl Zjg0NTJhIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NS5jcHAKKysrKyBiL3F0d2F5bGFuZC9z cmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxs djUuY3BwCitAQCAtODQsNyArODQsNyBAQCBRV2F5bGFuZFhkZ1BvcHVwVjUgKlFXYXlsYW5kWGRn U2hlbGxWNTo6Y3JlYXRlWGRnUG9wdXAoUVdheWxhbmRXaW5kb3cgKndpbmRvdywgUQorICAgICBp bnQgeCA9IHBvc2l0aW9uLngoKSArIHBhcmVudFdpbmRvdy0+ZnJhbWVNYXJnaW5zKCkubGVmdCgp OworICAgICBpbnQgeSA9IHBvc2l0aW9uLnkoKSArIHBhcmVudFdpbmRvdy0+ZnJhbWVNYXJnaW5z KCkudG9wKCk7CisgCistICAgIGF1dG8gcG9wdXAgPSBuZXcgUVdheWxhbmRYZGdQb3B1cFY1KGdl dF94ZGdfcG9wdXAod2luZG93LT53bFN1cmZhY2UoKSwgcGFyZW50U3VyZmFjZSwgc2VhdCwgbV9w b3B1cFNlcmlhbCwgeCwgeSksIHdpbmRvdyk7CisrICAgIGF1dG8gcG9wdXAgPSBuZXcgUVdheWxh bmRYZGdQb3B1cFY1KGdldF94ZGdfcG9wdXAod2luZG93LT53bFN1cmZhY2UoKSwgcGFyZW50U3Vy ZmFjZSwgc2VhdCwgbV9wb3B1cFNlcmlhbCwgeCwgeSksIHBhcmVudFdpbmRvdywgd2luZG93KTsK KyAgICAgbV9wb3B1cHMuYXBwZW5kKHdpbmRvdyk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QocG9w dXAsICZRV2F5bGFuZFhkZ1BvcHVwVjU6OmRlc3Ryb3llZCwgW3RoaXMsIHdpbmRvd10oKXsKKyAg ICAgICAgIG1fcG9wdXBzLnJlbW92ZU9uZSh3aW5kb3cpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFu ZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3No ZWxsdjVpbnRlZ3JhdGlvbi5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3Jh dGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb24uY3BwCitpbmRl eCA0ZTI1OTQ5Zi4uY2ZjNjA5MzkgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMv c2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRp b24uY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGct c2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb24uY3BwCitAQCAtODUsMTMgKzg1 LDYgQEAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKlFXYXlsYW5kWGRnU2hlbGxWNUludGVncmF0aW9u OjpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmQKKyAgICAgcmV0dXJuIG1feGRnU2hlbGwtPmNy ZWF0ZVhkZ1N1cmZhY2Uod2luZG93KTsKKyB9CisgCistdm9pZCBRV2F5bGFuZFhkZ1NoZWxsVjVJ bnRlZ3JhdGlvbjo6aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5l d0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpIHsKKy0gICAgaWYgKG5ld0ZvY3VzICYm IHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1BvcHVwVjUgKj4obmV3Rm9jdXMtPnNoZWxsU3VyZmFj ZSgpKSkKKy0gICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93QWN0aXZhdGVkKG5ld0ZvY3Vz KTsKKy0gICAgaWYgKG9sZEZvY3VzICYmIHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1BvcHVwVjUg Kj4ob2xkRm9jdXMtPnNoZWxsU3VyZmFjZSgpKSkKKy0gICAgICAgIG1fZGlzcGxheS0+aGFuZGxl V2luZG93RGVhY3RpdmF0ZWQob2xkRm9jdXMpOworLX0KKy0KKyB9CisgCisgUVRfRU5EX05BTUVT UEFDRQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9u L3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbl9wLmggYi9xdHdheWxh bmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdz aGVsbHY1aW50ZWdyYXRpb25fcC5oCitpbmRleCBjZTZiZGI5ZS4uYWVkODg2NzAgMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUv cXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL3Bs dWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50 ZWdyYXRpb25fcC5oCitAQCAtNjcsNyArNjcsNiBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5kWGRn U2hlbGxWNUludGVncmF0aW9uKCkge30KKyAgICAgYm9vbCBpbml0aWFsaXplKFFXYXlsYW5kRGlz cGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7CisgICAgIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpjcmVh dGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaW5kb3cgKndpbmRvdykgb3ZlcnJpZGU7CistICAgIHZv aWQgaGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBR V2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpIG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFT Y29wZWRQb2ludGVyPFFXYXlsYW5kWGRnU2hlbGxWNT4gbV94ZGdTaGVsbDsKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdh eWxhbmR4ZGdzaGVsbHY2LmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjYuY3BwCitpbmRleCA4YzM3MTY2MS4u MTUxYzc4ZTMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3Jh dGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2LmNwcAorKysrIGIvcXR3YXlsYW5k L3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hl bGx2Ni5jcHAKK0BAIC0xNzQsNiArMTc0LDcgQEAgUVdheWxhbmRYZGdTdXJmYWNlVjY6OlBvcHVw OjpQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2VWNiAqeGRnU3VyZmFjZSwgUVdheWxhbmRYZGcKKyAg ICAgLCBtX3hkZ1N1cmZhY2UoeGRnU3VyZmFjZSkKKyAgICAgLCBtX3BhcmVudChwYXJlbnQpCisg eworKyAgICBtX3BhcmVudC0+d2luZG93KCktPmFkZENoaWxkUG9wdXAobV94ZGdTdXJmYWNlLT53 aW5kb3coKSk7CisgfQorIAorIFFXYXlsYW5kWGRnU3VyZmFjZVY2OjpQb3B1cDo6flBvcHVwKCkK K0BAIC0xODEsNiArMTgyLDggQEAgUVdheWxhbmRYZGdTdXJmYWNlVjY6OlBvcHVwOjp+UG9wdXAo KQorICAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgICAgICAgZGVzdHJveSgpOworIAorKyAg ICBtX3BhcmVudC0+d2luZG93KCktPnJlbW92ZUNoaWxkUG9wdXAobV94ZGdTdXJmYWNlLT53aW5k b3coKSk7CisrCisgICAgIGlmIChtX2dyYWJiaW5nKSB7CisgICAgICAgICBhdXRvICpzaGVsbCA9 IG1feGRnU3VyZmFjZS0+bV9zaGVsbDsKKyAgICAgICAgIFFfQVNTRVJUKHNoZWxsLT5tX3RvcG1v c3RHcmFiYmluZ1BvcHVwID09IHRoaXMpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRl Z3JhdGlvbi5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGct c2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb24uY3BwCitpbmRleCAwMzE2NDMx Ni4uZThkYThiYTEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRl Z3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb24uY3BwCisr KysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYv cXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb24uY3BwCitAQCAtNjgsMjAgKzY4LDYgQEAgUVdh eWxhbmRTaGVsbFN1cmZhY2UgKlFXYXlsYW5kWGRnU2hlbGxWNkludGVncmF0aW9uOjpjcmVhdGVT aGVsbFN1cmZhY2UoUVdheWxhbmQKKyAgICAgcmV0dXJuIG1feGRnU2hlbGwtPmdldFhkZ1N1cmZh Y2Uod2luZG93KTsKKyB9CisgCistdm9pZCBRV2F5bGFuZFhkZ1NoZWxsVjZJbnRlZ3JhdGlvbjo6 aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5 bGFuZFdpbmRvdyAqb2xkRm9jdXMpCisteworLSAgICBpZiAobmV3Rm9jdXMpIHsKKy0gICAgICAg IGF1dG8gKnhkZ1N1cmZhY2UgPSBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlVjYgKj4o bmV3Rm9jdXMtPnNoZWxsU3VyZmFjZSgpKTsKKy0gICAgICAgIGlmICh4ZGdTdXJmYWNlICYmICF4 ZGdTdXJmYWNlLT5oYW5kbGVzQWN0aXZlU3RhdGUoKSkKKy0gICAgICAgICAgICBtX2Rpc3BsYXkt PmhhbmRsZVdpbmRvd0FjdGl2YXRlZChuZXdGb2N1cyk7CistICAgIH0KKy0gICAgaWYgKG9sZEZv Y3VzICYmIHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2VWNiAqPihvbGRGb2N1cy0+c2hl bGxTdXJmYWNlKCkpKSB7CistICAgICAgICBhdXRvICp4ZGdTdXJmYWNlID0gcW9iamVjdF9jYXN0 PFFXYXlsYW5kWGRnU3VyZmFjZVY2ICo+KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSk7CistICAg ICAgICBpZiAoeGRnU3VyZmFjZSAmJiAheGRnU3VyZmFjZS0+aGFuZGxlc0FjdGl2ZVN0YXRlKCkp CistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChvbGRGb2N1 cyk7CistICAgIH0KKy19CistCisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdh eWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9u X3AuaAoraW5kZXggMjYxZjhjYmIuLmMxYmNkNWM2IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Ny Yy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2 NmludGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uX3AuaAorQEAg LTY1LDcgKzY1LDYgQEAgcHVibGljOgorICAgICBRV2F5bGFuZFhkZ1NoZWxsVjZJbnRlZ3JhdGlv bigpIHt9CisgICAgIGJvb2wgaW5pdGlhbGl6ZShRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpIG92 ZXJyaWRlOworICAgICBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqY3JlYXRlU2hlbGxTdXJmYWNlKFFX YXlsYW5kV2luZG93ICp3aW5kb3cpIG92ZXJyaWRlOworLSAgICB2b2lkIGhhbmRsZUtleWJvYXJk Rm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9s ZEZvY3VzKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5 bGFuZFhkZ1NoZWxsVjY+IG1feGRnU2hlbGw7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9w bHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGwuY3BwIGIv cXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5k eGRnc2hlbGwuY3BwCitpbmRleCBmM2UzYzMzMC4uZmE2ZDU4MDggMTAwNjQ0CistLS0gYS9xdHdh eWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdz aGVsbC5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hk Zy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsLmNwcAorQEAgLTY3LDExICs2Nyw2IEBAIFFXYXlsYW5k WGRnU3VyZmFjZTo6VG9wbGV2ZWw6OlRvcGxldmVsKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3Vy ZmFjZSkKKyAKKyBRV2F5bGFuZFhkZ1N1cmZhY2U6OlRvcGxldmVsOjp+VG9wbGV2ZWwoKQorIHsK Ky0gICAgaWYgKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSB7CistICAgICAg ICBRV2F5bGFuZFdpbmRvdyAqd2luZG93ID0gbV94ZGdTdXJmYWNlLT53aW5kb3coKTsKKy0gICAg ICAgIHdpbmRvdy0+ZGlzcGxheSgpLT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZCh3aW5kb3cpOwor LSAgICB9CistCisgICAgIC8vIFRoZSBwcm90b2NvbCBzcGVjIHJlcXVpcmVzIHRoYXQgdGhlIGRl Y29yYXRpb24gb2JqZWN0IGlzIGRlbGV0ZWQgYmVmb3JlIHhkZ190b3BsZXZlbC4KKyAgICAgZGVs ZXRlIG1fZGVjb3JhdGlvbjsKKyAgICAgbV9kZWNvcmF0aW9uID0gbnVsbHB0cjsKK0BAIC04NSwx NiArODAsMTUgQEAgdm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OlRvcGxldmVsOjphcHBseUNvbmZp Z3VyZSgpCisgICAgIGlmICghKG1fYXBwbGllZC5zdGF0ZXMgJiAoUXQ6OldpbmRvd01heGltaXpl ZHxRdDo6V2luZG93RnVsbFNjcmVlbikpKQorICAgICAgICAgbV9ub3JtYWxTaXplID0gbV94ZGdT dXJmYWNlLT5tX3dpbmRvdy0+d2luZG93RnJhbWVHZW9tZXRyeSgpLnNpemUoKTsKKyAKKy0gICAg aWYgKChtX3BlbmRpbmcuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkgJiYgIShtX2FwcGxpZWQu c3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkpCisrICAgIGlmICgobV9wZW5kaW5nLnN0YXRlcyAm IFF0OjpXaW5kb3dBY3RpdmUpICYmICEobV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3Rp dmUpCisrICAgICAgICAmJiAhbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+ZGlzcGxheSgpLT5pc0tl eWJvYXJkQXZhaWxhYmxlKCkpCisgICAgICAgICBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5kaXNw bGF5KCktPmhhbmRsZVdpbmRvd0FjdGl2YXRlZChtX3hkZ1N1cmZhY2UtPm1fd2luZG93KTsKKyAK Ky0gICAgaWYgKCEobV9wZW5kaW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpICYmIChtX2Fw cGxpZWQuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkpCisrICAgIGlmICghKG1fcGVuZGluZy5z dGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSAmJiAobV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5k b3dBY3RpdmUpCisrICAgICAgICAmJiAhbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+ZGlzcGxheSgp LT5pc0tleWJvYXJkQXZhaWxhYmxlKCkpCisgICAgICAgICBtX3hkZ1N1cmZhY2UtPm1fd2luZG93 LT5kaXNwbGF5KCktPmhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG1feGRnU3VyZmFjZS0+bV93aW5k b3cpOworIAorLSAgICAvLyBUT0RPOiBub25lIG9mIHRoZSBvdGhlciBwbHVnaW5zIHNlbmQgV2lu ZG93QWN0aXZlIGVpdGhlciwgYnV0IGlzIGl0IG9uIHB1cnBvc2U/CistICAgIFF0OjpXaW5kb3dT dGF0ZXMgc3RhdGVzV2l0aG91dEFjdGl2ZSA9IG1fcGVuZGluZy5zdGF0ZXMgJiB+UXQ6OldpbmRv d0FjdGl2ZTsKKy0KKy0gICAgbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+aGFuZGxlV2luZG93U3Rh dGVzQ2hhbmdlZChzdGF0ZXNXaXRob3V0QWN0aXZlKTsKKysgICAgbV94ZGdTdXJmYWNlLT5tX3dp bmRvdy0+aGFuZGxlV2luZG93U3RhdGVzQ2hhbmdlZChtX3BlbmRpbmcuc3RhdGVzKTsKKyAKKyAg ICAgaWYgKG1fcGVuZGluZy5zaXplLmlzRW1wdHkoKSkgeworICAgICAgICAgLy8gQW4gZW1wdHkg c2l6ZSBpbiB0aGUgY29uZmlndXJlIG1lYW5zIGl0J3MgdXAgdG8gdGhlIGNsaWVudCB0byBjaG9v c2UgdGhlIHNpemUKK0BAIC0xMDUsOCArOTksNiBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6 VG9wbGV2ZWw6OmFwcGx5Q29uZmlndXJlKCkKKyAgICAgICAgIG1feGRnU3VyZmFjZS0+bV93aW5k b3ctPnJlc2l6ZUZyb21BcHBseUNvbmZpZ3VyZShtX3BlbmRpbmcuc2l6ZSk7CisgICAgIH0KKyAK Ky0gICAgbV94ZGdTdXJmYWNlLT5zZXRTaXplSGludHMoKTsKKy0KKyAgICAgbV9hcHBsaWVkID0g bV9wZW5kaW5nOworICAgICBxQ0RlYnVnKGxjUXBhV2F5bGFuZCkgPDwgIkFwcGxpZWQgcGVuZGlu ZyB4ZGdfdG9wbGV2ZWwgY29uZmlndXJlIGV2ZW50OiIgPDwgbV9hcHBsaWVkLnNpemUgPDwgbV9h cHBsaWVkLnN0YXRlczsKKyB9CitAQCAtMjAzLDEyICsxOTUsMTcgQEAgUXRXYXlsYW5kOjp4ZGdf dG9wbGV2ZWw6OnJlc2l6ZV9lZGdlIFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2ZWw6OmNvbnZl cnRUb1Jlc2kKKyAgICAgICAgICAgICAgICAgfCAoKGVkZ2VzICYgUXQ6OlJpZ2h0RWRnZSkgPyBy ZXNpemVfZWRnZV9yaWdodCA6IDApKTsKKyB9CisgCistUVdheWxhbmRYZGdTdXJmYWNlOjpQb3B1 cDo6UG9wdXAoUVdheWxhbmRYZGdTdXJmYWNlICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFhkZ1N1cmZh Y2UgKnBhcmVudCwKKytRV2F5bGFuZFhkZ1N1cmZhY2U6OlBvcHVwOjpQb3B1cChRV2F5bGFuZFhk Z1N1cmZhY2UgKnhkZ1N1cmZhY2UsIFFXYXlsYW5kV2luZG93ICpwYXJlbnQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lciAqcG9zaXRp b25lcikKKy0gICAgOiB4ZGdfcG9wdXAoeGRnU3VyZmFjZS0+Z2V0X3BvcHVwKHBhcmVudC0+b2Jq ZWN0KCksIHBvc2l0aW9uZXItPm9iamVjdCgpKSkKKy0gICAgLCBtX3hkZ1N1cmZhY2UoeGRnU3Vy ZmFjZSkKKysgICAgOiBtX3hkZ1N1cmZhY2UoeGRnU3VyZmFjZSkKKysgICAgLCBtX3BhcmVudFhk Z1N1cmZhY2UocW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZSAqPihwYXJlbnQtPnNoZWxs U3VyZmFjZSgpKSkKKyAgICAgLCBtX3BhcmVudChwYXJlbnQpCisgeworKworKyAgICBpbml0KHhk Z1N1cmZhY2UtPmdldF9wb3B1cChtX3BhcmVudFhkZ1N1cmZhY2UgPyBtX3BhcmVudFhkZ1N1cmZh Y2UtPm9iamVjdCgpIDogbnVsbHB0ciwgcG9zaXRpb25lci0+b2JqZWN0KCkpKTsKKysgICAgaWYg KG1fcGFyZW50KSB7CisrICAgICAgICBtX3BhcmVudC0+YWRkQ2hpbGRQb3B1cChtX3hkZ1N1cmZh Y2UtPndpbmRvdygpKTsKKysgICAgfQorIH0KKyAKKyBRV2F5bGFuZFhkZ1N1cmZhY2U6OlBvcHVw Ojp+UG9wdXAoKQorQEAgLTIxNiwxMCArMjEzLDI0IEBAIFFXYXlsYW5kWGRnU3VyZmFjZTo6UG9w dXA6On5Qb3B1cCgpCisgICAgIGlmIChpc0luaXRpYWxpemVkKCkpCisgICAgICAgICBkZXN0cm95 KCk7CisgCisrICAgIGlmIChtX3BhcmVudCkgeworKyAgICAgICAgbV9wYXJlbnQtPnJlbW92ZUNo aWxkUG9wdXAobV94ZGdTdXJmYWNlLT53aW5kb3coKSk7CisrICAgIH0KKysKKyAgICAgaWYgKG1f Z3JhYmJpbmcpIHsKKyAgICAgICAgIGF1dG8gKnNoZWxsID0gbV94ZGdTdXJmYWNlLT5tX3NoZWxs OworICAgICAgICAgUV9BU1NFUlQoc2hlbGwtPm1fdG9wbW9zdEdyYWJiaW5nUG9wdXAgPT0gdGhp cyk7CistICAgICAgICBzaGVsbC0+bV90b3Btb3N0R3JhYmJpbmdQb3B1cCA9IG1fcGFyZW50LT5t X3BvcHVwOworKyAgICAgICAgc2hlbGwtPm1fdG9wbW9zdEdyYWJiaW5nUG9wdXAgPSBtX3BhcmVu dFhkZ1N1cmZhY2UgPyBtX3BhcmVudFhkZ1N1cmZhY2UtPm1fcG9wdXAgOiBudWxscHRyOworKyAg ICAgICAgbV9ncmFiYmluZyA9IGZhbHNlOworKworKyAgICAgICAgLy8gU3ludGhlc2l6ZSBRdCBl bnRlci9sZWF2ZSBldmVudHMgZm9yIHBvcHVwCisrICAgICAgICBRV2luZG93ICpsZWF2ZSA9IG51 bGxwdHI7CisrICAgICAgICBpZiAobV94ZGdTdXJmYWNlICYmIG1feGRnU3VyZmFjZS0+d2luZG93 KCkpCisrICAgICAgICAgICAgbGVhdmUgPSBtX3hkZ1N1cmZhY2UtPndpbmRvdygpLT53aW5kb3co KTsKKysgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUxlYXZlRXZlbnQobGVh dmUpOworKworKyAgICAgICAgaWYgKFFXaW5kb3cgKmVudGVyID0gUUd1aUFwcGxpY2F0aW9uOjp0 b3BMZXZlbEF0KFFDdXJzb3I6OnBvcygpKSkKKysgICAgICAgICAgICBRV2luZG93U3lzdGVtSW50 ZXJmYWNlOjpoYW5kbGVFbnRlckV2ZW50KGVudGVyLCBlbnRlci0+bWFwRnJvbUdsb2JhbChRQ3Vy c29yOjpwb3MoKSksIFFDdXJzb3I6OnBvcygpKTsKKyAgICAgfQorIH0KKyAKK0BAIC0yNTcsNiAr MjY4LDcgQEAgUVdheWxhbmRYZGdTdXJmYWNlOjpRV2F5bGFuZFhkZ1N1cmZhY2UoUVdheWxhbmRY ZGdTaGVsbCAqc2hlbGwsIDo6eGRnX3N1cmZhY2UgKnMKKyAgICAgICAgICAgICAgICAgbV90b3Bs ZXZlbC0+c2V0X3BhcmVudChwYXJlbnRYZGdTdXJmYWNlLT5tX3RvcGxldmVsLT5vYmplY3QoKSk7 CisgICAgICAgICB9CisgICAgIH0KKysgICAgc2V0U2l6ZUhpbnRzKCk7CisgfQorIAorIFFXYXls YW5kWGRnU3VyZmFjZTo6flFXYXlsYW5kWGRnU3VyZmFjZSgpCitAQCAtNDAwLDggKzQxMiw2IEBA IHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpzZXRQb3B1cChRV2F5bGFuZFdpbmRvdyAqcGFyZW50 KQorIHsKKyAgICAgUV9BU1NFUlQoIW1fdG9wbGV2ZWwgJiYgIW1fcG9wdXApOworIAorLSAgICBh dXRvIHBhcmVudFhkZ1N1cmZhY2UgPSBzdGF0aWNfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4o cGFyZW50LT5zaGVsbFN1cmZhY2UoKSk7CistCisgICAgIGF1dG8gcG9zaXRpb25lciA9IG5ldyBR dFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyKG1fc2hlbGwtPmNyZWF0ZV9wb3NpdGlvbmVyKCkpOwor ICAgICAvLyBzZXRfcG9wdXAgZXhwZWN0cyBhIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBwYXJl bnQKKyAgICAgUVBvaW50IHRyYW5zaWVudFBvcyA9IG1fd2luZG93LT5nZW9tZXRyeSgpLnRvcExl ZnQoKTsgLy8gdGhpcyBpcyBhYnNvbHV0ZQorQEAgLTQxNCw4ICs0MjQsOSBAQCB2b2lkIFFXYXls YW5kWGRnU3VyZmFjZTo6c2V0UG9wdXAoUVdheWxhbmRXaW5kb3cgKnBhcmVudCkKKyAgICAgcG9z aXRpb25lci0+c2V0X2FuY2hvcihRdFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyOjphbmNob3JfdG9w X2xlZnQpOworICAgICBwb3NpdGlvbmVyLT5zZXRfZ3Jhdml0eShRdFdheWxhbmQ6OnhkZ19wb3Np dGlvbmVyOjpncmF2aXR5X2JvdHRvbV9yaWdodCk7CisgICAgIHBvc2l0aW9uZXItPnNldF9zaXpl KG1fd2luZG93LT5nZW9tZXRyeSgpLndpZHRoKCksIG1fd2luZG93LT5nZW9tZXRyeSgpLmhlaWdo dCgpKTsKKy0gICAgbV9wb3B1cCA9IG5ldyBQb3B1cCh0aGlzLCBwYXJlbnRYZGdTdXJmYWNlLCBw b3NpdGlvbmVyKTsKKysgICAgbV9wb3B1cCA9IG5ldyBQb3B1cCh0aGlzLCBwYXJlbnQsIHBvc2l0 aW9uZXIpOworICAgICBwb3NpdGlvbmVyLT5kZXN0cm95KCk7CisrCisgICAgIGRlbGV0ZSBwb3Np dGlvbmVyOworIH0KKyAKK0BAIC00MzcsNiArNDQ4LDIzIEBAIHZvaWQgUVdheWxhbmRYZGdTdXJm YWNlOjpzZXRHcmFiUG9wdXAoUVdheWxhbmRXaW5kb3cgKnBhcmVudCwgUVdheWxhbmRJbnB1dERl dmljCisgICAgIH0KKyAgICAgc2V0UG9wdXAocGFyZW50KTsKKyAgICAgbV9wb3B1cC0+Z3JhYihk ZXZpY2UsIHNlcmlhbCk7CisrCisrICAgIC8vIFN5bnRoZXNpemUgUXQgZW50ZXIvbGVhdmUgZXZl bnRzIGZvciBwb3B1cAorKyAgICBpZiAoIXBhcmVudCkKKysgICAgICAgIHJldHVybjsKKysgICAg UVdpbmRvdyAqY3VycmVudCA9IFFHdWlBcHBsaWNhdGlvbjo6dG9wTGV2ZWxBdChRQ3Vyc29yOjpw b3MoKSk7CisrICAgIFFXaW5kb3cgKmxlYXZlID0gcGFyZW50LT53aW5kb3coKTsKKysgICAgaWYg KGN1cnJlbnQgIT0gbGVhdmUpCisrICAgICAgICByZXR1cm47CisrCisrICAgIFFXaW5kb3dTeXN0 ZW1JbnRlcmZhY2U6OmhhbmRsZUxlYXZlRXZlbnQobGVhdmUpOworKworKyAgICBRV2luZG93ICpl bnRlciA9IG51bGxwdHI7CisrICAgIGlmIChtX3BvcHVwICYmIG1fcG9wdXAtPm1feGRnU3VyZmFj ZSAmJiBtX3BvcHVwLT5tX3hkZ1N1cmZhY2UtPndpbmRvdygpKQorKyAgICAgICAgZW50ZXIgPSBt X3BvcHVwLT5tX3hkZ1N1cmZhY2UtPndpbmRvdygpLT53aW5kb3coKTsKKysKKysgICAgaWYgKGVu dGVyKQorKyAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlRW50ZXJFdmVudChl bnRlciwgZW50ZXItPm1hcEZyb21HbG9iYWwoUUN1cnNvcjo6cG9zKCkpLCBRQ3Vyc29yOjpwb3Mo KSk7CisgfQorIAorIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjp4ZGdfc3VyZmFjZV9jb25maWd1 cmUodWludDMyX3Qgc2VyaWFsKQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9z aGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsX3AuaCBiL3F0d2F5bGFu ZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxs X3AuaAoraW5kZXggOTY3ODUyMDUuLjRiNTE4ZjBhIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Ny Yy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxfcC5o CisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwv cXdheWxhbmR4ZGdzaGVsbF9wLmgKK0BAIC0xMzEsMTQgKzEzMSwxNSBAQCBwcml2YXRlOgorIAor ICAgICBjbGFzcyBQb3B1cCA6IHB1YmxpYyBRdFdheWxhbmQ6OnhkZ19wb3B1cCB7CisgICAgIHB1 YmxpYzoKKy0gICAgICAgIFBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSwgUVdh eWxhbmRYZGdTdXJmYWNlICpwYXJlbnQsIFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXIgKnBvc2l0 aW9uZXIpOworKyAgICAgICAgUG9wdXAoUVdheWxhbmRYZGdTdXJmYWNlICp4ZGdTdXJmYWNlLCBR V2F5bGFuZFdpbmRvdyAqcGFyZW50LCBRdFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyICpwb3NpdGlv bmVyKTsKKyAgICAgICAgIH5Qb3B1cCgpIG92ZXJyaWRlOworIAorICAgICAgICAgdm9pZCBncmFi KFFXYXlsYW5kSW5wdXREZXZpY2UgKnNlYXQsIHVpbnQgc2VyaWFsKTsKKyAgICAgICAgIHZvaWQg eGRnX3BvcHVwX3BvcHVwX2RvbmUoKSBvdmVycmlkZTsKKyAKKyAgICAgICAgIFFXYXlsYW5kWGRn U3VyZmFjZSAqbV94ZGdTdXJmYWNlID0gbnVsbHB0cjsKKy0gICAgICAgIFFXYXlsYW5kWGRnU3Vy ZmFjZSAqbV9wYXJlbnQgPSBudWxscHRyOworKyAgICAgICAgUVdheWxhbmRYZGdTdXJmYWNlICpt X3BhcmVudFhkZ1N1cmZhY2UgPSBudWxscHRyOworKyAgICAgICAgUVdheWxhbmRXaW5kb3cgKm1f cGFyZW50ID0gbnVsbHB0cjsKKyAgICAgICAgIGJvb2wgbV9ncmFiYmluZyA9IGZhbHNlOworICAg ICB9OworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5k L3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxp bnRlZ3JhdGlvbi5jcHAKK2luZGV4IDg3NjlkOTcxLi5kYTBkZDZhNyAxMDA2NDQKKy0tLSBhL3F0 d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhk Z3NoZWxsaW50ZWdyYXRpb24uY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxp bnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uLmNwcAorQEAg LTY5LDIwICs2OSw2IEBAIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpRV2F5bGFuZFhkZ1NoZWxsSW50 ZWdyYXRpb246OmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpCisgICAgIHJldHVybiBtX3hk Z1NoZWxsLT5nZXRYZGdTdXJmYWNlKHdpbmRvdyk7CisgfQorIAorLXZvaWQgUVdheWxhbmRYZGdT aGVsbEludGVncmF0aW9uOjpoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRv dyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykKKy17CistICAgIGlmIChuZXdG b2N1cykgeworLSAgICAgICAgYXV0byAqeGRnU3VyZmFjZSA9IHFvYmplY3RfY2FzdDxRV2F5bGFu ZFhkZ1N1cmZhY2UgKj4obmV3Rm9jdXMtPnNoZWxsU3VyZmFjZSgpKTsKKy0gICAgICAgIGlmICh4 ZGdTdXJmYWNlICYmICF4ZGdTdXJmYWNlLT5oYW5kbGVzQWN0aXZlU3RhdGUoKSkKKy0gICAgICAg ICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0FjdGl2YXRlZChuZXdGb2N1cyk7CistICAgIH0K Ky0gICAgaWYgKG9sZEZvY3VzICYmIHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4o b2xkRm9jdXMtPnNoZWxsU3VyZmFjZSgpKSkgeworLSAgICAgICAgYXV0byAqeGRnU3VyZmFjZSA9 IHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4ob2xkRm9jdXMtPnNoZWxsU3VyZmFj ZSgpKTsKKy0gICAgICAgIGlmICh4ZGdTdXJmYWNlICYmICF4ZGdTdXJmYWNlLT5oYW5kbGVzQWN0 aXZlU3RhdGUoKSkKKy0gICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0RlYWN0aXZh dGVkKG9sZEZvY3VzKTsKKy0gICAgfQorLX0KKy0KKyB9CisgCisgUVRfRU5EX05BTUVTUEFDRQor ZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1z aGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9wbHVn aW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlv bl9wLmgKK2luZGV4IGI2Y2FhNmM5Li4yZjkyOWY5OCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9z cmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50 ZWdyYXRpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlv bi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uX3AuaAorQEAgLTY1LDcgKzY1 LDYgQEAgcHVibGljOgorICAgICBRV2F5bGFuZFhkZ1NoZWxsSW50ZWdyYXRpb24oKSB7fQorICAg ICBib29sIGluaXRpYWxpemUoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKKyAg ICAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpbmRv dyAqd2luZG93KSBvdmVycmlkZTsKKy0gICAgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdl ZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykgb3Zl cnJpZGU7CisgCisgcHJpdmF0ZToKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRYZGdTaGVs bD4gbV94ZGdTaGVsbDsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFu ZGlucHV0bWV0aG9kZXZlbnRidWlsZGVyLmNwcCBiL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXls YW5kaW5wdXRtZXRob2RldmVudGJ1aWxkZXIuY3BwCitpbmRleCA1MjZkMGVmNC4uZjUwY2NmMzAg MTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZGlucHV0bWV0aG9kZXZl bnRidWlsZGVyLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRpbnB1dG1l dGhvZGV2ZW50YnVpbGRlci5jcHAKK0BAIC0zOSw3ICszOSwxMCBAQAorIAorICNpbmNsdWRlICJx d2F5bGFuZGlucHV0bWV0aG9kZXZlbnRidWlsZGVyX3AuaCIKKyAKKysjaW5jbHVkZSA8UUJydXNo PgorKyNpbmNsdWRlIDxRR3VpQXBwbGljYXRpb24+CisgI2luY2x1ZGUgPFFJbnB1dE1ldGhvZD4K KysjaW5jbHVkZSA8UVBhbGV0dGU+CisgI2luY2x1ZGUgPFFUZXh0Q2hhckZvcm1hdD4KKyAKKyAj aWZkZWYgUVRfQlVJTERfV0FZTEFORENPTVBPU0lUT1JfTElCCitAQCAtODEsMzIgKzg0LDM4IEBA IHZvaWQgUVdheWxhbmRJbnB1dE1ldGhvZEV2ZW50QnVpbGRlcjo6YWRkUHJlZWRpdFN0eWxpbmco dWludDMyX3QgaW5kZXgsIHVpbnQzMl90CisgICAgIFFUZXh0Q2hhckZvcm1hdCBmb3JtYXQ7Cisg CisgICAgIHN3aXRjaCAoc3R5bGUpIHsKKy0gICAgY2FzZSAwOgorLSAgICBjYXNlIDE6CisrICAg IGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9OT05FOgorKyAgICAgICAgYnJl YWs7CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9ERUZBVUxUOgor KyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfVU5ERVJMSU5FOgorICAg ICAgICAgZm9ybWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7CisgICAgICAgICBmb3JtYXQuc2V0 VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpTaW5nbGVVbmRlcmxpbmUpOworICAgICAg ICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJ bnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVuZ3RoLCBmb3JtYXQpKTsKKyAg ICAgICAgIGJyZWFrOworLSAgICBjYXNlIDI6CistICAgIGNhc2UgMzoKKysgICAgY2FzZSBaV1Bf VEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX0FDVElWRToKKysgICAgY2FzZSBaV1BfVEVYVF9J TlBVVF9WMl9QUkVFRElUX1NUWUxFX0lOQUNUSVZFOgorICAgICAgICAgZm9ybWF0LnNldEZvbnRX ZWlnaHQoUUZvbnQ6OkJvbGQpOworICAgICAgICAgZm9ybWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1 ZSk7CisgICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpT aW5nbGVVbmRlcmxpbmUpOworICAgICAgICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRN ZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRl eCwgbGVuZ3RoLCBmb3JtYXQpKTsKKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIDQ6CistICAg ICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGluZSh0cnVlKTsKKy0gICAgICAgIGZvcm1hdC5zZXRV bmRlcmxpbmVTdHlsZShRVGV4dENoYXJGb3JtYXQ6OlNpbmdsZVVuZGVybGluZSk7CistICAgICAg ICBtX3ByZWVkaXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlu cHV0TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkpOworKyAg ICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfSElHSExJR0hUOgorKyAgICBj YXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfU0VMRUNUSU9OOgorKyAgICAgICAg eworKyAgICAgICAgICAgIGZvcm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUpOworKyAgICAgICAg ICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVTdHlsZShRVGV4dENoYXJGb3JtYXQ6OlNpbmdsZVVuZGVy bGluZSk7CisrICAgICAgICAgICAgUVBhbGV0dGUgcGFsZXR0ZSA9IHFBcHAtPnBhbGV0dGUoKTsK KysgICAgICAgICAgICBmb3JtYXQuc2V0QmFja2dyb3VuZChRQnJ1c2gocGFsZXR0ZS5jb2xvcihR UGFsZXR0ZTo6QWN0aXZlLCBRUGFsZXR0ZTo6SGlnaGxpZ2h0KSkpOworKyAgICAgICAgICAgIGZv cm1hdC5zZXRGb3JlZ3JvdW5kKFFCcnVzaChwYWxldHRlLmNvbG9yKFFQYWxldHRlOjpBY3RpdmUs IFFQYWxldHRlOjpIaWdobGlnaHRlZFRleHQpKSk7CisrICAgICAgICAgICAgbV9wcmVlZGl0U3R5 bGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50 OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVuZ3RoLCBmb3JtYXQpKTsKKysgICAgICAgIH0KKyAgICAg ICAgIGJyZWFrOworLSAgICBjYXNlIDU6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJF RURJVF9TVFlMRV9JTkNPUlJFQ1Q6CisgICAgICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGluZSh0 cnVlKTsKKyAgICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVTdHlsZShRVGV4dENoYXJGb3JtYXQ6 OldhdmVVbmRlcmxpbmUpOworICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZUNvbG9yKFFDb2xv cihRdDo6cmVkKSk7CisgICAgICAgICBtX3ByZWVkaXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1ldGhv ZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4LCBs ZW5ndGgsIGZvcm1hdCkpOworICAgICAgICAgYnJlYWs7CistLy8gICAgY2FzZSBRdFdheWxhbmQ6 OndsX3RleHRfaW5wdXQ6OnByZWVkaXRfc3R5bGVfc2VsZWN0aW9uOgorLS8vICAgIGNhc2UgUXRX YXlsYW5kOjp3bF90ZXh0X2lucHV0OjpwcmVlZGl0X3N0eWxlX25vbmU6CisgICAgIGRlZmF1bHQ6 CisgICAgICAgICBicmVhazsKKyAgICAgfQorQEAgLTE1Myw3ICsxNjIsNyBAQCBRSW5wdXRNZXRo b2RFdmVudCBRV2F5bGFuZElucHV0TWV0aG9kRXZlbnRCdWlsZGVyOjpidWlsZFByZWVkaXQoY29u c3QgUVN0cmluZyAmdAorIAorICAgICBpZiAobV9wcmVlZGl0Q3Vyc29yIDwgMCkgeworICAgICAg ICAgYXR0cmlidXRlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRN ZXRob2RFdmVudDo6Q3Vyc29yLCAwLCAwLCBRVmFyaWFudCgpKSk7CistICAgIH0gZWxzZSBpZiAo bV9wcmVlZGl0Q3Vyc29yID4gMCkgeworKyAgICB9IGVsc2UgeworICAgICAgICAgYXR0cmlidXRl cy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6 Q3Vyc29yLCBpbmRleEZyb21XYXlsYW5kKHRleHQsIG1fcHJlZWRpdEN1cnNvciksIDEsIFFWYXJp YW50KCkpKTsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3 YXlsYW5kbWltZWhlbHBlci5jcHAgYi9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZG1pbWVo ZWxwZXIuY3BwCitpbmRleCBhNWZkZDM0ZC4uZTJmZTE5MjggMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvc3JjL3NoYXJlZC9xd2F5bGFuZG1pbWVoZWxwZXIuY3BwCisrKysgYi9xdHdheWxhbmQvc3Jj L3NoYXJlZC9xd2F5bGFuZG1pbWVoZWxwZXIuY3BwCitAQCAtNjAsNyArNjAsNyBAQCBRQnl0ZUFy cmF5IFFXYXlsYW5kTWltZUhlbHBlcjo6Z2V0Qnl0ZUFycmF5KFFNaW1lRGF0YSAqbWltZURhdGEs IGNvbnN0IFFTdHJpbmcgJgorICAgICAgICAgICAgIGJ1Zi5vcGVuKFFJT0RldmljZTo6UmVhZFdy aXRlKTsKKyAgICAgICAgICAgICBRQnl0ZUFycmF5IGZtdCA9ICJCTVAiOworICAgICAgICAgICAg IGlmIChtaW1lVHlwZS5zdGFydHNXaXRoKFFMYXRpbjFTdHJpbmcoImltYWdlLyIpKSkgeworLSAg ICAgICAgICAgICAgICBRQnl0ZUFycmF5IGltZ0ZtdCA9IG1pbWVUeXBlLm1pZCg2KS50b1VwcGVy KCkudG9MYXRpbjEoKTsKKysgICAgICAgICAgICAgICAgUUJ5dGVBcnJheSBpbWdGbXQgPSBtaW1l VHlwZS5taWQoNikudG9Mb3dlcigpLnRvTGF0aW4xKCk7CisgICAgICAgICAgICAgICAgIGlmIChR SW1hZ2VXcml0ZXI6OnN1cHBvcnRlZEltYWdlRm9ybWF0cygpLmNvbnRhaW5zKGltZ0ZtdCkpCisg ICAgICAgICAgICAgICAgICAgICBmbXQgPSBpbWdGbXQ7CisgICAgICAgICAgICAgfQorQEAgLTc0 LDcgKzc0LDcgQEAgUUJ5dGVBcnJheSBRV2F5bGFuZE1pbWVIZWxwZXI6OmdldEJ5dGVBcnJheShR TWltZURhdGEgKm1pbWVEYXRhLCBjb25zdCBRU3RyaW5nICYKKyAgICAgICAgIFFMaXN0PFFVcmw+ IHVybHMgPSBtaW1lRGF0YS0+dXJscygpOworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB1 cmxzLmNvdW50KCk7ICsraSkgeworICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKHVybHMuYXQo aSkudG9FbmNvZGVkKCkpOworLSAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCdcbicpOworKyAg ICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJcclxuIik7CisgICAgICAgICB9CisgICAgIH0gZWxz ZSB7CisgICAgICAgICBjb250ZW50ID0gbWltZURhdGEtPmRhdGEobWltZVR5cGUpOworZGlmZiAt LWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9kYXRhZGV2aWNldjEvdHN0X2RhdGFk ZXZpY2V2MS5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvZGF0YWRldmljZXYxL3Rz dF9kYXRhZGV2aWNldjEuY3BwCitpbmRleCAxNTY4YjNiOS4uMDY3NDEwZDAgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvZGF0YWRldmljZXYxL3RzdF9kYXRhZGV2aWNl djEuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvZGF0YWRldmljZXYxL3Rz dF9kYXRhZGV2aWNldjEuY3BwCitAQCAtMzUsNyArMzUsNyBAQAorIAorIHVzaW5nIG5hbWVzcGFj ZSBNb2NrQ29tcG9zaXRvcjsKKyAKKy1jb25zdGV4cHIgaW50IGRhdGFEZXZpY2VWZXJzaW9uID0g MTsKKytjb25zdGV4cHIgaW50IGRhdGFEZXZpY2VWZXJzaW9uID0gMzsKKyAKKyBjbGFzcyBEYXRh RGV2aWNlQ29tcG9zaXRvciA6IHB1YmxpYyBEZWZhdWx0Q29tcG9zaXRvciB7CisgcHVibGljOgor ZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zZWF0djUvdHN0X3NlYXR2 NS5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2VhdHY1L3RzdF9zZWF0djUuY3Bw CitpbmRleCA5MzEyYzJlNS4uMmVhMzgyZjEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMv YXV0by9jbGllbnQvc2VhdHY1L3RzdF9zZWF0djUuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMv YXV0by9jbGllbnQvc2VhdHY1L3RzdF9zZWF0djUuY3BwCitAQCAtNzMsNiArNzMsNyBAQCBwcml2 YXRlIHNsb3RzOgorICAgICB2b2lkIG11bHRpVG91Y2goKTsKKyAgICAgdm9pZCBtdWx0aVRvdWNo VXBBbmRNb3Rpb25GcmFtZSgpOworICAgICB2b2lkIHRhcEFuZE1vdmVJblNhbWVGcmFtZSgpOwor KyAgICB2b2lkIGNhbmNlbFRvdWNoKCk7CisgfTsKKyAKKyB2b2lkIHRzdF9zZWF0djU6OmJpbmRz VG9TZWF0KCkKK0BAIC02NDYsNSArNjQ3LDM0IEBAIHZvaWQgdHN0X3NlYXR2NTo6dGFwQW5kTW92 ZUluU2FtZUZyYW1lKCkKKyAgICAgUVRSWV9DT01QQVJFKHdpbmRvdy5tX2V2ZW50cy5sYXN0KCku dG91Y2hQb2ludHMuZmlyc3QoKS5zdGF0ZSgpLCBRdDo6VG91Y2hQb2ludFN0YXRlOjpUb3VjaFBv aW50UmVsZWFzZWQpOworIH0KKyAKKyt2b2lkIHRzdF9zZWF0djU6OmNhbmNlbFRvdWNoKCkKKyt7 CisrICAgIFRvdWNoV2luZG93IHdpbmRvdzsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4 ZGdTdXJmYWNlKCkgJiYgeGRnU3VyZmFjZSgpLT5tX2NvbW1pdHRlZENvbmZpZ3VyZVNlcmlhbCk7 CisrCisrICAgIGV4ZWMoWz1dIHsKKysgICAgICAgIGF1dG8gKnQgPSB0b3VjaCgpOworKyAgICAg ICAgYXV0byAqYyA9IGNsaWVudCgpOworKyAgICAgICAgdC0+c2VuZERvd24oeGRnVG9wbGV2ZWwo KS0+c3VyZmFjZSgpLCB7MzIsIDMyfSwgMSk7CisrICAgICAgICB0LT5zZW5kRnJhbWUoYyk7Cisr ICAgICAgICB0LT5zZW5kQ2FuY2VsKGMpOworKyAgICAgICAgdC0+c2VuZEZyYW1lKGMpOworKyAg ICB9KTsKKysKKysgICAgUVRSWV9WRVJJRlkoIXdpbmRvdy5tX2V2ZW50cy5lbXB0eSgpKTsKKysg ICAgeworKyAgICAgICAgYXV0byBlID0gd2luZG93Lm1fZXZlbnRzLnRha2VGaXJzdCgpOworKyAg ICAgICAgUUNPTVBBUkUoZS50eXBlLCBRRXZlbnQ6OlRvdWNoQmVnaW4pOworKyAgICAgICAgUUNP TVBBUkUoZS50b3VjaFBvaW50U3RhdGVzLCBRdDo6VG91Y2hQb2ludFByZXNzZWQpOworKyAgICAg ICAgUUNPTVBBUkUoZS50b3VjaFBvaW50cy5sZW5ndGgoKSwgMSk7CisrICAgICAgICBRQ09NUEFS RShlLnRvdWNoUG9pbnRzLmZpcnN0KCkucG9zKCksIFFQb2ludEYoMzItd2luZG93LmZyYW1lTWFy Z2lucygpLmxlZnQoKSwgMzItd2luZG93LmZyYW1lTWFyZ2lucygpLnRvcCgpKSk7CisrICAgIH0K KysgICAgeworKyAgICAgICAgYXV0byBlID0gd2luZG93Lm1fZXZlbnRzLnRha2VGaXJzdCgpOwor KyAgICAgICAgUUNPTVBBUkUoZS50eXBlLCBRRXZlbnQ6OlRvdWNoQ2FuY2VsKTsKKysgICAgICAg IFFDT01QQVJFKGUudG91Y2hQb2ludHMubGVuZ3RoKCksIDApOworKyAgICB9CisrfQorKworIFFD T01QT1NJVE9SX1RFU1RfTUFJTih0c3Rfc2VhdHY1KQorICNpbmNsdWRlICJ0c3Rfc2VhdHY1Lm1v YyIKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVj b21wb3NpdG9yLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZWNv bXBvc2l0b3IuY3BwCitpbmRleCA1YzZjODNiYS4uZmE5Yjc2NjIgMTAwNjQ0CistLS0gYS9xdHdh eWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVjb21wb3NpdG9yLmNwcAorKysrIGIv cXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlY29tcG9zaXRvci5jcHAKK0BA IC0yNyw2ICsyNyw3IEBACisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAKKyAjaW5jbHVkZSAiY29y ZWNvbXBvc2l0b3IuaCIKKysjaW5jbHVkZSA8dGhyZWFkPgorIAorIG5hbWVzcGFjZSBNb2NrQ29t cG9zaXRvciB7CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3No YXJlZC9jb3JlcHJvdG9jb2wuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJl ZC9jb3JlcHJvdG9jb2wuY3BwCitpbmRleCAwZDk4ODUyMS4uZDFhMmU3Y2IgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5jcHAKKysr KyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmNwcAor QEAgLTQ1MSw2ICs0NTEsMTMgQEAgdm9pZCBUb3VjaDo6c2VuZEZyYW1lKHdsX2NsaWVudCAqY2xp ZW50KQorICAgICAgICAgc2VuZF9mcmFtZShyLT5oYW5kbGUpOworIH0KKyAKKyt2b2lkIFRvdWNo OjpzZW5kQ2FuY2VsKHdsX2NsaWVudCAqY2xpZW50KQorK3sKKysgICAgY29uc3QgYXV0byB0b3Vj aFJlc291cmNlcyA9IHJlc291cmNlTWFwKCkudmFsdWVzKGNsaWVudCk7CisrICAgIGZvciAoYXV0 byAqciA6IHRvdWNoUmVzb3VyY2VzKQorKyAgICAgICAgc2VuZF9jYW5jZWwoci0+aGFuZGxlKTsK Kyt9CisrCisgdWludCBLZXlib2FyZDo6c2VuZEVudGVyKFN1cmZhY2UgKnN1cmZhY2UpCisgewor ICAgICBhdXRvIHNlcmlhbCA9IG1fc2VhdC0+bV9jb21wb3NpdG9yLT5uZXh0U2VyaWFsKCk7Citk aWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9j b2wuaCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmgK K2luZGV4IGExYWYxMzdhLi4yMTBkOGRkYiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9h dXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmgKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9h dXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmgKK0BAIC0xNTgsNyArMTU4LDcgQEAgY2xh c3MgV2xDb21wb3NpdG9yIDogcHVibGljIEdsb2JhbCwgcHVibGljIFF0V2F5bGFuZFNlcnZlcjo6 d2xfY29tcG9zaXRvcgorIHsKKyAgICAgUV9PQkpFQ1QKKyBwdWJsaWM6CistICAgIGV4cGxpY2l0 IFdsQ29tcG9zaXRvcihDb3JlQ29tcG9zaXRvciAqY29tcG9zaXRvciwgaW50IHZlcnNpb24gPSAz KQorKyAgICBleHBsaWNpdCBXbENvbXBvc2l0b3IoQ29yZUNvbXBvc2l0b3IgKmNvbXBvc2l0b3Is IGludCB2ZXJzaW9uID0gNCkKKyAgICAgICAgIDogUXRXYXlsYW5kU2VydmVyOjp3bF9jb21wb3Np dG9yKGNvbXBvc2l0b3ItPm1fZGlzcGxheSwgdmVyc2lvbikKKyAgICAgICAgICwgbV9jb21wb3Np dG9yKGNvbXBvc2l0b3IpCisgICAgIHt9CitAQCAtMzY0LDYgKzM2NCw3IEBAIHB1YmxpYzoKKyAg ICAgdWludCBzZW5kVXAod2xfY2xpZW50ICpjbGllbnQsIGludCBpZCk7CisgICAgIHZvaWQgc2Vu ZE1vdGlvbih3bF9jbGllbnQgKmNsaWVudCwgY29uc3QgUVBvaW50RiAmcG9zaXRpb24sIGludCBp ZCk7CisgICAgIHZvaWQgc2VuZEZyYW1lKHdsX2NsaWVudCAqY2xpZW50KTsKKysgICAgdm9pZCBz ZW5kQ2FuY2VsKHdsX2NsaWVudCAqY2xpZW50KTsKKyAKKyAgICAgU2VhdCAqbV9zZWF0ID0gbnVs bHB0cjsKKyB9OworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFy ZWRfb2xkL21vY2tjb21wb3NpdG9yLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9z aGFyZWRfb2xkL21vY2tjb21wb3NpdG9yLmNwcAoraW5kZXggYTQxNWNiZjUuLmIxZDNkMDdkIDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja2Nv bXBvc2l0b3IuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29s ZC9tb2NrY29tcG9zaXRvci5jcHAKK0BAIC0zNDIsNyArMzQyLDcgQEAgQ29tcG9zaXRvcjo6Q29t cG9zaXRvcihNb2NrQ29tcG9zaXRvciAqbW9ja0NvbXBvc2l0b3IpCisgICAgICAgICBleGl0KEVY SVRfRkFJTFVSRSk7CisgICAgIH0KKyAKKy0gICAgd2xfZ2xvYmFsX2NyZWF0ZShtX2Rpc3BsYXks ICZ3bF9jb21wb3NpdG9yX2ludGVyZmFjZSwgMSwgdGhpcywgYmluZENvbXBvc2l0b3IpOworKyAg ICB3bF9nbG9iYWxfY3JlYXRlKG1fZGlzcGxheSwgJndsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLCA0 LCB0aGlzLCBiaW5kQ29tcG9zaXRvcik7CisgCisgICAgIG1fZGF0YV9kZXZpY2VfbWFuYWdlci5y ZXNldChuZXcgRGF0YURldmljZU1hbmFnZXIodGhpcywgbV9kaXNwbGF5KSk7CisgCitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2Uu Y3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2Uu Y3BwCitpbmRleCBlOWRmNWY5MC4uYzMyNDZlNGEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVz dHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5jcHAKKysrKyBiL3F0d2F5bGFu ZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmNwcAorQEAgLTEyNSw2 ICsxMjUsMTYgQEAgdm9pZCBTdXJmYWNlOjpzdXJmYWNlX2RhbWFnZShSZXNvdXJjZSAqcmVzb3Vy Y2UsCisgICAgIFFfVU5VU0VEKGhlaWdodCk7CisgfQorIAorK3ZvaWQgU3VyZmFjZTo6c3VyZmFj ZV9kYW1hZ2VfYnVmZmVyKFJlc291cmNlICpyZXNvdXJjZSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50 MzJfdCBoZWlnaHQpCisreworKyAgICBRX1VOVVNFRChyZXNvdXJjZSk7CisrICAgIFFfVU5VU0VE KHgpOworKyAgICBRX1VOVVNFRCh5KTsKKysgICAgUV9VTlVTRUQod2lkdGgpOworKyAgICBRX1VO VVNFRChoZWlnaHQpOworK30KKysKKyB2b2lkIFN1cmZhY2U6OnN1cmZhY2VfZnJhbWUoUmVzb3Vy Y2UgKnJlc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBjYWxs YmFjaykKKyB7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJl ZF9vbGQvbW9ja3N1cmZhY2UuaCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRf b2xkL21vY2tzdXJmYWNlLmgKK2luZGV4IDk0OWRjMjNkLi5kMTc2ODM3ZSAxMDA2NDQKKy0tLSBh L3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmgKKysr KyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmgK K0BAIC02NSw2ICs2NSw4IEBAIHByb3RlY3RlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3Qgd2xfcmVzb3VyY2UgKmJ1ZmZlciwgaW50IHgsIGludCB5KSBvdmVycmlkZTsKKyAgICAg dm9pZCBzdXJmYWNlX2RhbWFnZShSZXNvdXJjZSAqcmVzb3VyY2UsCisgICAgICAgICAgICAgICAg ICAgICAgICAgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp Z2h0KSBvdmVycmlkZTsKKysgICAgdm9pZCBzdXJmYWNlX2RhbWFnZV9idWZmZXIoUmVzb3VyY2Ug KnJlc291cmNlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHgsIGlu dDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpIG92ZXJyaWRlOworICAgICB2 b2lkIHN1cmZhY2VfZnJhbWUoUmVzb3VyY2UgKnJlc291cmNlLAorICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QgY2FsbGJhY2spIG92ZXJyaWRlOworICAgICB2b2lkIHN1cmZhY2VfY29t bWl0KFJlc291cmNlICpyZXNvdXJjZSkgb3ZlcnJpZGU7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5k L3Rlc3RzL2F1dG8vY2xpZW50L3N1cmZhY2UvdHN0X3N1cmZhY2UuY3BwIGIvcXR3YXlsYW5kL3Rl c3RzL2F1dG8vY2xpZW50L3N1cmZhY2UvdHN0X3N1cmZhY2UuY3BwCitpbmRleCA5NWU0ZTYwOS4u NjBjNjcyY2UgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc3VyZmFj ZS90c3Rfc3VyZmFjZS5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zdXJm YWNlL3RzdF9zdXJmYWNlLmNwcAorQEAgLTEyOSw2ICsxMjksMTAgQEAgdm9pZCB0c3Rfc3VyZmFj ZTo6d2FpdEZvckZyYW1lQ2FsbGJhY2tHbCgpCisgICAgIC8vIE1ha2Ugc3VyZSB3ZSBmb2xsb3cg ZnJhbWUgY2FsbGJhY2tzIGZvciBzb21lIGZyYW1lcworICAgICBmb3IgKGludCBpID0gMDsgaSA8 IDU7ICsraSkgeworICAgICAgICAgeGRnUGluZ0FuZFdhaXRGb3JQb25nKCk7IC8vIE1ha2Ugc3Vy ZSB0aGluZ3MgaGF2ZSBoYXBwZW5lZCBvbiB0aGUgY2xpZW50CisrICAgICAgICBpZiAoIXFFbnZp cm9ubWVudFZhcmlhYmxlSW50VmFsdWUoIlFUX1dBWUxBTkRfRElTQUJMRV9XSU5ET1dERUNPUkFU SU9OIikgJiYgaSA9PSAwKSB7CisrICAgICAgICAgICAgUUNPTVBBUkUoYnVmZmVyU3B5LmNvdW50 KCksIDEpOworKyAgICAgICAgICAgIGJ1ZmZlclNweS5yZW1vdmVGaXJzdCgpOworKyAgICAgICAg fQorICAgICAgICAgZXhlYyhbJl0geworICAgICAgICAgICAgIFFWRVJJRlkoYnVmZmVyU3B5LmVt cHR5KCkpOyAvLyBNYWtlIHN1cmUgbm8gZXh0cmEgYnVmZmVycyBoYXZlIGFycml2ZWQKKyAgICAg ICAgICAgICBRVkVSSUZZKCF4ZGdUb3BsZXZlbCgpLT5zdXJmYWNlKCktPm1fd2FpdGluZ0ZyYW1l Q2FsbGJhY2tzLmVtcHR5KCkpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2Ns aWVudC94ZGdzaGVsbC90c3RfeGRnc2hlbGwuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xp ZW50L3hkZ3NoZWxsL3RzdF94ZGdzaGVsbC5jcHAKK2luZGV4IDIyNzdiYmI4Li43NDc4NzViNCAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC94ZGdzaGVsbC90c3RfeGRn c2hlbGwuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQveGRnc2hlbGwvdHN0 X3hkZ3NoZWxsLmNwcAorQEAgLTMxLDYgKzMxLDcgQEAKKyAjaW5jbHVkZSA8UXRHdWkvUU9wZW5H TFdpbmRvdz4KKyAjaW5jbHVkZSA8UXRHdWkvcXBhL3FwbGF0Zm9ybW5hdGl2ZWludGVyZmFjZS5o PgorICNpbmNsdWRlIDxRdFdheWxhbmRDbGllbnQvcHJpdmF0ZS93YXlsYW5kLXdheWxhbmQtY2xp ZW50LXByb3RvY29sLmg+CisrI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRlL3F3YXls YW5kd2luZG93X3AuaD4KKyAKKyB1c2luZyBuYW1lc3BhY2UgTW9ja0NvbXBvc2l0b3I7CisgCitA QCAtNDUsNiArNDYsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGNvbmZpZ3VyZVN0YXRl cygpOworICAgICB2b2lkIHBvcHVwKCk7CisgICAgIHZvaWQgdG9vbHRpcE9uUG9wdXAoKTsKKysg ICAgdm9pZCB0b29sdGlwQW5kU2libGluZ1BvcHVwKCk7CisgICAgIHZvaWQgc3dpdGNoUG9wdXBz KCk7CisgICAgIHZvaWQgaGlkZVBvcHVwUGFyZW50KCk7CisgICAgIHZvaWQgcG9uZ3MoKTsKK0BA IC0xMzgsNiArMTQwLDcgQEAgdm9pZCB0c3RfeGRnc2hlbGw6OmNvbmZpZ3VyZVNpemUoKQorIAor IHZvaWQgdHN0X3hkZ3NoZWxsOjpjb25maWd1cmVTdGF0ZXMoKQorIHsKKysgICAgUVZFUklGWShx cHV0ZW52KCJRVF9XQVlMQU5EX0ZSQU1FX0NBTExCQUNLX1RJTUVPVVQiLCAiMCIpKTsKKyAgICAg UVJhc3RlcldpbmRvdyB3aW5kb3c7CisgICAgIHdpbmRvdy5yZXNpemUoNjQsIDQ4KTsKKyAgICAg d2luZG93LnNob3coKTsKK0BAIC0xNTQsOSArMTU3LDEyIEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjpj b25maWd1cmVTdGF0ZXMoKQorICAgICAvLyBUb3BsZXZlbCB3aW5kb3dzIGRvbid0IGtub3cgdGhl aXIgcG9zaXRpb24gb24geGRnLXNoZWxsCisgLy8gICAgUUNPTVBBUkUod2luZG93LmZyYW1lR2Vv bWV0cnkoKS50b3BMZWZ0KCksIFFQb2ludCgpKTsgLy8gVE9ETzogdGhpcyBkb2Vzbid0IGN1cnJl bnRseSB3b3JrIHdoZW4gd2luZG93IGRlY29yYXRpb25zIGFyZSBlbmFibGVkCisgCistLy8gICAg UUVYUEVDVF9GQUlMKCIiLCAiY29uZmlndXJlIGhhcyBhbHJlYWR5IGJlZW4gYWNrZWQsIHdlIHNo b3VsZG4ndCBoYXZlIHRvIHdhaXQgZm9yIGlzQWN0aXZlIiwgQ29udGludWUpOworLS8vICAgIFFW RVJJRlkod2luZG93LmlzQWN0aXZlKCkpOworLSAgICBRVFJZX1ZFUklGWSh3aW5kb3cuaXNBY3Rp dmUoKSk7IC8vIEp1c3QgbWFrZSBzdXJlIGl0IGV2ZW50dWFsbHkgZ2V0J3Mgc2V0IGNvcnJlY3Rs eQorKyAgICAvLyB3aW5kb3cud2luZG93c3RhdGUoKSBpcyBkcml2ZW4gYnkga2V5Ym9hcmQgZm9j dXMsIGhvd2V2ZXIgZm9yIGRlY29yYXRpb25zIHdlIHdhbnQgdG8gZm9sbG93CisrICAgIC8vIFhE R1NoZWxsIHRoaXMgaXMgaW50ZXJuYWwgdG8gUXRXYXlsYW5kIHNvIGl0IGlzIHF1ZXJpZWQgZGly ZWN0bHkKKysgICAgYXV0byB3YXlsYW5kV2luZG93ID0gc3RhdGljX2Nhc3Q8UXRXYXlsYW5kQ2xp ZW50OjpRV2F5bGFuZFdpbmRvdyAqPih3aW5kb3cuaGFuZGxlKCkpOworKyAgICBRX0FTU0VSVCh3 YXlsYW5kV2luZG93KTsKKysgICAgUVRSWV9WRVJJRlkod2F5bGFuZFdpbmRvdy0+d2luZG93U3Rh dGVzKCkudGVzdEZsYWcoCisrICAgICAgICAgICAgUXQ6OldpbmRvd0FjdGl2ZSkpOyAvLyBKdXN0 IG1ha2Ugc3VyZSBpdCBldmVudHVhbGx5IGdldCdzIHNldCBjb3JyZWN0bHkKKyAKKyAgICAgY29u c3QgUVNpemUgc2NyZWVuU2l6ZSg2NDAsIDQ4MCk7CisgICAgIGNvbnN0IHVpbnQgbWF4aW1pemVk U2VyaWFsID0gZXhlYyhbPV0geworQEAgLTE4Niw2ICsxOTIsNyBAQCB2b2lkIHRzdF94ZGdzaGVs bDo6Y29uZmlndXJlU3RhdGVzKCkKKyAgICAgUUNPTVBBUkUod2luZG93LndpbmRvd1N0YXRlcygp LCBRdDo6V2luZG93Tm9TdGF0ZSk7CisgICAgIFFDT01QQVJFKHdpbmRvdy5mcmFtZUdlb21ldHJ5 KCkuc2l6ZSgpLCB3aW5kb3dlZFNpemUpOworIC8vICAgIFFDT01QQVJFKHdpbmRvdy5mcmFtZUdl b21ldHJ5KCkudG9wTGVmdCgpLCBRUG9pbnQoKSk7IC8vIFRPRE86IHRoaXMgZG9lc24ndCBjdXJy ZW50bHkgd29yayB3aGVuIHdpbmRvdyBkZWNvcmF0aW9ucyBhcmUgZW5hYmxlZAorKyAgICBRVkVS SUZZKHF1bnNldGVudigiUVRfV0FZTEFORF9GUkFNRV9DQUxMQkFDS19USU1FT1VUIikpOworIH0K KyAKKyB2b2lkIHRzdF94ZGdzaGVsbDo6cG9wdXAoKQorQEAgLTM0MCw2ICszNDcsOTIgQEAgdm9p ZCB0c3RfeGRnc2hlbGw6OnRvb2x0aXBPblBvcHVwKCkKKyAgICAgUUNPTVBPU0lUT1JfVFJZX0NP TVBBUkUoeGRnUG9wdXAoMCksIG51bGxwdHIpOworIH0KKyAKKyt2b2lkIHRzdF94ZGdzaGVsbDo6 dG9vbHRpcEFuZFNpYmxpbmdQb3B1cCgpCisreworKyAgICBjbGFzcyBUb29sVGlwIDogcHVibGlj IFFSYXN0ZXJXaW5kb3cgeworKyAgICBwdWJsaWM6CisrICAgICAgICBleHBsaWNpdCBUb29sVGlw KFFXaW5kb3cgKnBhcmVudCkgeworKyAgICAgICAgICAgIHNldFRyYW5zaWVudFBhcmVudChwYXJl bnQpOworKyAgICAgICAgICAgIHNldEZsYWdzKFF0OjpUb29sVGlwKTsKKysgICAgICAgICAgICBy ZXNpemUoMTAwLCAxMDApOworKyAgICAgICAgICAgIHNob3coKTsKKysgICAgICAgIH0KKysgICAg ICAgIHZvaWQgbW91c2VQcmVzc0V2ZW50KFFNb3VzZUV2ZW50ICpldmVudCkgb3ZlcnJpZGUgewor KyAgICAgICAgICAgIFFSYXN0ZXJXaW5kb3c6Om1vdXNlUHJlc3NFdmVudChldmVudCk7CisrICAg ICAgICAgICAgbV9wb3B1cCA9IG5ldyBRUmFzdGVyV2luZG93OworKyAgICAgICAgICAgIG1fcG9w dXAtPnNldFRyYW5zaWVudFBhcmVudCh0cmFuc2llbnRQYXJlbnQoKSk7CisrICAgICAgICAgICAg bV9wb3B1cC0+c2V0RmxhZ3MoUXQ6OlBvcHVwKTsKKysgICAgICAgICAgICBtX3BvcHVwLT5yZXNp emUoMTAwLCAxMDApOworKyAgICAgICAgICAgIG1fcG9wdXAtPnNob3coKTsKKysgICAgICAgIH0K KysKKysgICAgICAgIFFSYXN0ZXJXaW5kb3cgKm1fcG9wdXAgPSBudWxscHRyOworKyAgICB9Owor KworKyAgICBjbGFzcyBXaW5kb3cgOiBwdWJsaWMgUVJhc3RlcldpbmRvdyB7CisrICAgIHB1Ymxp YzoKKysgICAgICAgIHZvaWQgbW91c2VQcmVzc0V2ZW50KFFNb3VzZUV2ZW50ICpldmVudCkgb3Zl cnJpZGUgeworKyAgICAgICAgICAgIFFSYXN0ZXJXaW5kb3c6Om1vdXNlUHJlc3NFdmVudChldmVu dCk7CisrICAgICAgICAgICAgbV90b29sdGlwID0gbmV3IFRvb2xUaXAodGhpcyk7CisrICAgICAg ICB9CisrICAgICAgICBUb29sVGlwICptX3Rvb2x0aXAgPSBudWxscHRyOworKyAgICB9OworKwor KyAgICBXaW5kb3cgd2luZG93OworKyAgICB3aW5kb3cucmVzaXplKDIwMCwgMjAwKTsKKysgICAg d2luZG93LnNob3coKTsKKysKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdUb3BsZXZl bCgpKTsKKysgICAgZXhlYyhbPV0geyB4ZGdUb3BsZXZlbCgpLT5zZW5kQ29tcGxldGVDb25maWd1 cmUoKTsgfSk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnVG9wbGV2ZWwoKS0+bV94 ZGdTdXJmYWNlLT5tX2NvbW1pdHRlZENvbmZpZ3VyZVNlcmlhbCk7CisrCisrICAgIGV4ZWMoWz1d IHsKKysgICAgICAgIGF1dG8gKnN1cmZhY2UgPSB4ZGdUb3BsZXZlbCgpLT5zdXJmYWNlKCk7Cisr ICAgICAgICBhdXRvICpwID0gcG9pbnRlcigpOworKyAgICAgICAgYXV0byAqYyA9IGNsaWVudCgp OworKyAgICAgICAgcC0+c2VuZEVudGVyKHN1cmZhY2UsIHsxMDAsIDEwMH0pOworKyAgICAgICAg cC0+c2VuZEZyYW1lKGMpOworKyAgICAgICAgcC0+c2VuZEJ1dHRvbihjbGllbnQoKSwgQlROX0xF RlQsIFBvaW50ZXI6OmJ1dHRvbl9zdGF0ZV9wcmVzc2VkKTsKKysgICAgICAgIHAtPnNlbmRCdXR0 b24oY2xpZW50KCksIEJUTl9MRUZULCBQb2ludGVyOjpidXR0b25fc3RhdGVfcmVsZWFzZWQpOwor KyAgICAgICAgcC0+c2VuZEZyYW1lKGMpOworKyAgICAgICAgcC0+c2VuZExlYXZlKHN1cmZhY2Up OworKyAgICAgICAgcC0+c2VuZEZyYW1lKGMpOworKyAgICB9KTsKKysKKysgICAgUUNPTVBPU0lU T1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgpKTsKKysgICAgZXhlYyhbPV0geyB4ZGdQb3B1cCgpLT5z ZW5kQ29tcGxldGVDb25maWd1cmUoUVJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7IH0pOworKyAg ICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKCktPm1feGRnU3VyZmFjZS0+bV9jb21t aXR0ZWRDb25maWd1cmVTZXJpYWwpOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKCF4ZGdQ b3B1cCgpLT5tX2dyYWJiZWQpOworKworKyAgICBleGVjKFs9XSB7CisrICAgICAgICBhdXRvICpz dXJmYWNlID0geGRnUG9wdXAoKS0+c3VyZmFjZSgpOworKyAgICAgICAgYXV0byAqcCA9IHBvaW50 ZXIoKTsKKysgICAgICAgIGF1dG8gKmMgPSBjbGllbnQoKTsKKysgICAgICAgIHAtPnNlbmRFbnRl cihzdXJmYWNlLCB7MTAwLCAxMDB9KTsKKysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAg ICAgIHAtPnNlbmRCdXR0b24oY2xpZW50KCksIEJUTl9MRUZULCBQb2ludGVyOjpidXR0b25fc3Rh dGVfcHJlc3NlZCk7CisrICAgICAgICBwLT5zZW5kQnV0dG9uKGNsaWVudCgpLCBCVE5fTEVGVCwg UG9pbnRlcjo6YnV0dG9uX3N0YXRlX3JlbGVhc2VkKTsKKysgICAgICAgIHAtPnNlbmRGcmFtZShj KTsKKysgICAgfSk7CisrCisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMSkp OworKyAgICBleGVjKFs9XSB7IHhkZ1BvcHVwKDEpLT5zZW5kQ29tcGxldGVDb25maWd1cmUoUVJl Y3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7IH0pOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZ KHhkZ1BvcHVwKDEpLT5tX3hkZ1N1cmZhY2UtPm1fY29tbWl0dGVkQ29uZmlndXJlU2VyaWFsKTsK KysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgxKS0+bV9ncmFiYmVkKTsKKysK KysgICAgLy8gQ2xvc2UgdGhlIG1pZGRsZSB0b29sdGlwIChpdCBzaG91bGQgbm90IGNsb3NlIHRo ZSBzaWJsaW5nIHBvcHVwKQorKyAgICB3aW5kb3cubV90b29sdGlwLT5jbG9zZSgpOworKworKyAg ICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdQb3B1cCgxKSwgbnVsbHB0cik7CisrICAgIC8v IFZlcmlmeSB0aGUgcmVtYWluaW5nIHhkZyBzdXJmYWNlIGlzIGEgZ3JhYiBwb3B1cC4uCisrICAg IFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMCkpOworKyAgICBRQ09NUE9TSVRPUl9U UllfVkVSSUZZKHhkZ1BvcHVwKDApLT5tX2dyYWJiZWQpOworKworKyAgICB3aW5kb3cubV90b29s dGlwLT5tX3BvcHVwLT5jbG9zZSgpOworKyAgICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdQ b3B1cCgxKSwgbnVsbHB0cik7CisrICAgIFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1BvcHVw KDApLCBudWxscHRyKTsKKyt9CisrCisgLy8gUVRCVUctNjU2ODAKKyB2b2lkIHRzdF94ZGdzaGVs bDo6c3dpdGNoUG9wdXBzKCkKKyB7CitAQCAtNTA1LDcgKzU5OCw3IEBAIHZvaWQgdHN0X3hkZ3No ZWxsOjptaW5NYXhTaXplKCkKKyAgICAgd2luZG93LnNob3coKTsKKyAgICAgUUNPTVBPU0lUT1Jf VFJZX1ZFUklGWSh4ZGdUb3BsZXZlbCgpKTsKKyAKKy0gICAgZXhlYyhbPV0geyB4ZGdUb3BsZXZl bCgpLT5zZW5kQ29tcGxldGVDb25maWd1cmUoKTsgfSk7CisrICAgIC8vIHdlIGRvbid0IHJvdW5k dHJpcCB3aXRoIG91ciBjb25maWd1cmF0aW9uIHRoZSBpbml0aWFsIGNvbW1pdCBzaG91bGQgYmUg Y29ycmVjdAorIAorICAgICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdUb3BsZXZlbCgpLT5t X2NvbW1pdHRlZC5taW5TaXplLCBRU2l6ZSgxMDAsIDEwMCkpOworICAgICBRQ09NUE9TSVRPUl9U UllfQ09NUEFSRSh4ZGdUb3BsZXZlbCgpLT5tX2NvbW1pdHRlZC5tYXhTaXplLCBRU2l6ZSgxMDAw LCAxMDAwKSk7CitTdWJtb2R1bGUgcXR3ZWJjaGFubmVsIDYxODQyMmVlLi5mODk0OTY1NToKK2Rp ZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNo ZXIuY3BwIGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVy LmNwcAoraW5kZXggNTM2ZWI1Yy4uODk4ZDc2OSAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC9z cmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlci5jcHAKKysrKyBiL3F0d2ViY2hhbm5l bC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlci5jcHAKK0BAIC0xODYsOCArMTg2 LDYgQEAgUV9ERUNMQVJFX1RZUEVJTkZPKE92ZXJsb2FkUmVzb2x1dGlvbkNhbmRpZGF0ZSwgUV9N T1ZBQkxFX1RZUEUpOworIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpRTWV0YU9iamVjdFB1Ymxpc2hl cihRV2ViQ2hhbm5lbCAqd2ViQ2hhbm5lbCkKKyAgICAgOiBRT2JqZWN0KHdlYkNoYW5uZWwpCisg ICAgICwgd2ViQ2hhbm5lbCh3ZWJDaGFubmVsKQorLSAgICAsIHNpZ25hbEhhbmRsZXIodGhpcykK Ky0gICAgLCBjbGllbnRJc0lkbGUoZmFsc2UpCisgICAgICwgYmxvY2tVcGRhdGVzKGZhbHNlKQor ICAgICAsIHByb3BlcnR5VXBkYXRlc0luaXRpYWxpemVkKGZhbHNlKQorIHsKK0BAIC0zMDEsMTcg KzI5OSwxNyBAQCBRSnNvbk9iamVjdCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6Y2xhc3NJbmZvRm9y T2JqZWN0KGNvbnN0IFFPYmplY3QgKm9iamVjdCwgUVdlYgorICAgICByZXR1cm4gZGF0YTsKKyB9 CisgCistdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2V0Q2xpZW50SXNJZGxlKGJvb2wgaXNJ ZGxlKQorK3ZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNldENsaWVudElzSWRsZShib29sIGlz SWRsZSwgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorIHsKKy0gICAg aWYgKGNsaWVudElzSWRsZSA9PSBpc0lkbGUpIHsKKy0gICAgICAgIHJldHVybjsKKy0gICAgfQor LSAgICBjbGllbnRJc0lkbGUgPSBpc0lkbGU7CistICAgIGlmICghaXNJZGxlICYmIHRpbWVyLmlz QWN0aXZlKCkpIHsKKy0gICAgICAgIHRpbWVyLnN0b3AoKTsKKy0gICAgfSBlbHNlIGlmIChpc0lk bGUgJiYgIXRpbWVyLmlzQWN0aXZlKCkpIHsKKy0gICAgICAgIHRpbWVyLnN0YXJ0KFBST1BFUlRZ X1VQREFURV9JTlRFUlZBTCwgdGhpcyk7CistICAgIH0KKysgICAgdHJhbnNwb3J0U3RhdGVbdHJh bnNwb3J0XS5jbGllbnRJc0lkbGUgPSBpc0lkbGU7CisrICAgIGlmIChpc0lkbGUpCisrICAgICAg ICBzZW5kRW5xdWV1ZWRQcm9wZXJ0eVVwZGF0ZXModHJhbnNwb3J0KTsKKyt9CisrCisrYm9vbCBR TWV0YU9iamVjdFB1Ymxpc2hlcjo6aXNDbGllbnRJZGxlKFFXZWJDaGFubmVsQWJzdHJhY3RUcmFu c3BvcnQgKnRyYW5zcG9ydCkKKyt7CisrICAgIGF1dG8gZm91bmQgPSB0cmFuc3BvcnRTdGF0ZS5m aW5kKHRyYW5zcG9ydCk7CisrICAgIHJldHVybiBmb3VuZCAhPSB0cmFuc3BvcnRTdGF0ZS5lbmQo KSAmJiBmb3VuZC52YWx1ZSgpLmNsaWVudElzSWRsZTsKKyB9CisgCisgUUpzb25PYmplY3QgUU1l dGFPYmplY3RQdWJsaXNoZXI6OmluaXRpYWxpemVDbGllbnQoUVdlYkNoYW5uZWxBYnN0cmFjdFRy YW5zcG9ydCAqdHJhbnNwb3J0KQorQEAgLTMzMyw2ICszMzEsNyBAQCBRSnNvbk9iamVjdCBRTWV0 YU9iamVjdFB1Ymxpc2hlcjo6aW5pdGlhbGl6ZUNsaWVudChRV2ViQ2hhbm5lbEFic3RyYWN0VHJh bnNwb3J0CisgCisgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW5pdGlhbGl6ZVByb3BlcnR5 VXBkYXRlcyhjb25zdCBRT2JqZWN0ICpjb25zdCBvYmplY3QsIGNvbnN0IFFKc29uT2JqZWN0ICZv YmplY3RJbmZvKQorIHsKKysgICAgYXV0byAqc2lnbmFsSGFuZGxlciA9IHNpZ25hbEhhbmRsZXJG b3Iob2JqZWN0KTsKKyAgICAgZm9yZWFjaCAoY29uc3QgUUpzb25WYWx1ZSAmcHJvcGVydHlJbmZv VmFyLCBvYmplY3RJbmZvW0tFWV9QUk9QRVJUSUVTXS50b0FycmF5KCkpIHsKKyAgICAgICAgIGNv bnN0IFFKc29uQXJyYXkgJnByb3BlcnR5SW5mbyA9IHByb3BlcnR5SW5mb1Zhci50b0FycmF5KCk7 CisgICAgICAgICBpZiAocHJvcGVydHlJbmZvLnNpemUoKSA8IDIpIHsKK0BAIC0zNTMsMTkgKzM1 MiwxOSBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjppbml0aWFsaXplUHJvcGVydHlVcGRh dGVzKGNvbnN0IFFPYmplY3QgKmNvbnN0IG9iamVjdAorIAorICAgICAgICAgLy8gT25seSBjb25u ZWN0IGZvciBhIHByb3BlcnR5IHVwZGF0ZSBvbmNlCisgICAgICAgICBpZiAoY29ubmVjdGVkUHJv cGVydGllcy5pc0VtcHR5KCkpIHsKKy0gICAgICAgICAgICBzaWduYWxIYW5kbGVyLmNvbm5lY3RU byhvYmplY3QsIHNpZ25hbEluZGV4KTsKKysgICAgICAgICAgICBzaWduYWxIYW5kbGVyLT5jb25u ZWN0VG8ob2JqZWN0LCBzaWduYWxJbmRleCk7CisgICAgICAgICB9CisgCisgICAgICAgICBjb25u ZWN0ZWRQcm9wZXJ0aWVzLmluc2VydChwcm9wZXJ0eUluZGV4KTsKKyAgICAgfQorIAorICAgICAv LyBhbHNvIGFsd2F5cyBjb25uZWN0IHRvIGRlc3Ryb3llZCBzaWduYWwKKy0gICAgc2lnbmFsSGFu ZGxlci5jb25uZWN0VG8ob2JqZWN0LCBzX2Rlc3Ryb3llZFNpZ25hbEluZGV4KTsKKysgICAgc2ln bmFsSGFuZGxlci0+Y29ubmVjdFRvKG9iamVjdCwgc19kZXN0cm95ZWRTaWduYWxJbmRleCk7Cisg fQorIAorIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNlbmRQZW5kaW5nUHJvcGVydHlVcGRh dGVzKCkKKyB7CistICAgIGlmIChibG9ja1VwZGF0ZXMgfHwgIWNsaWVudElzSWRsZSB8fCBwZW5k aW5nUHJvcGVydHlVcGRhdGVzLmlzRW1wdHkoKSkgeworKyAgICBpZiAoYmxvY2tVcGRhdGVzKSB7 CisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKK0BAIC00MTUsMTggKzQxNCwxOSBAQCB2b2lk IFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZW5kUGVuZGluZ1Byb3BlcnR5VXBkYXRlcygpCisgCisg ICAgIC8vIGRhdGEgZG9lcyBub3QgY29udGFpbiBzcGVjaWZpYyB1cGRhdGVzCisgICAgIGlmICgh ZGF0YS5pc0VtcHR5KCkpIHsKKy0gICAgICAgIHNldENsaWVudElzSWRsZShmYWxzZSk7CistCisg ICAgICAgICBtZXNzYWdlW0tFWV9EQVRBXSA9IGRhdGE7CistICAgICAgICBicm9hZGNhc3RNZXNz YWdlKG1lc3NhZ2UpOworKyAgICAgICAgZW5xdWV1ZUJyb2FkY2FzdE1lc3NhZ2UobWVzc2FnZSk7 CisgICAgIH0KKyAKKyAgICAgLy8gc2VuZCBldmVyeSBwcm9wZXJ0eSB1cGRhdGUgd2hpY2ggaXMg bm90IHN1cHBvc2VkIHRvIGJlIGJyb2FkY2FzdGVkCisgICAgIGNvbnN0IFFIYXNoPFFXZWJDaGFu bmVsQWJzdHJhY3RUcmFuc3BvcnQqLCBRSnNvbkFycmF5Pjo6Y29uc3RfaXRlcmF0b3Igc3VlbmQg PSBzcGVjaWZpY1VwZGF0ZXMuY29uc3RFbmQoKTsKKyAgICAgZm9yIChRSGFzaDxRV2ViQ2hhbm5l bEFic3RyYWN0VHJhbnNwb3J0KiwgUUpzb25BcnJheT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc3Bl Y2lmaWNVcGRhdGVzLmNvbnN0QmVnaW4oKTsgaXQgIT0gc3VlbmQ7ICsraXQpIHsKKyAgICAgICAg IG1lc3NhZ2VbS0VZX0RBVEFdID0gaXQudmFsdWUoKTsKKy0gICAgICAgIGl0LmtleSgpLT5zZW5k TWVzc2FnZShtZXNzYWdlKTsKKysgICAgICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2UsIGl0Lmtl eSgpKTsKKyAgICAgfQorKworKyAgICBmb3IgKGF1dG8gc3RhdGUgPSB0cmFuc3BvcnRTdGF0ZS5i ZWdpbigpOyBzdGF0ZSAhPSB0cmFuc3BvcnRTdGF0ZS5lbmQoKTsgKytzdGF0ZSkKKysgICAgICAg IHNlbmRFbnF1ZXVlZFByb3BlcnR5VXBkYXRlcyhzdGF0ZS5rZXkoKSk7CisgfQorIAorIFFWYXJp YW50IFFNZXRhT2JqZWN0UHVibGlzaGVyOjppbnZva2VNZXRob2QoUU9iamVjdCAqY29uc3Qgb2Jq ZWN0LCBjb25zdCBRTWV0YU1ldGhvZCAmbWV0aG9kLAorQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lk IFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzaWduYWxFbWl0dGVkKGNvbnN0IFFPYmplY3QgKm9iamVj dCwgY29uc3QgaW50IHNpZ25hbAorICAgICAgICAgfQorICAgICB9IGVsc2UgeworICAgICAgICAg cGVuZGluZ1Byb3BlcnR5VXBkYXRlc1tvYmplY3RdW3NpZ25hbEluZGV4XSA9IGFyZ3VtZW50czsK Ky0gICAgICAgIGlmIChjbGllbnRJc0lkbGUgJiYgIWJsb2NrVXBkYXRlcyAmJiAhdGltZXIuaXNB Y3RpdmUoKSkgeworKyAgICAgICAgaWYgKCFibG9ja1VwZGF0ZXMgJiYgIXRpbWVyLmlzQWN0aXZl KCkpIHsKKyAgICAgICAgICAgICB0aW1lci5zdGFydChQUk9QRVJUWV9VUERBVEVfSU5URVJWQUws IHRoaXMpOworICAgICAgICAgfQorICAgICB9CitAQCAtNTkwLDcgKzU5MCw3IEBAIHZvaWQgUU1l dGFPYmplY3RQdWJsaXNoZXI6Om9iamVjdERlc3Ryb3llZChjb25zdCBRT2JqZWN0ICpvYmplY3Qp CisgICAgIC8vIG9ubHkgcmVtb3ZlIGZyb20gaGFuZGxlciB3aGVuIHdlIGluaXRpYWxpemVkIHRo ZSBwcm9wZXJ0eSB1cGRhdGVzCisgICAgIC8vIGNmOiBodHRwczovL2J1Z3JlcG9ydHMucXQuaW8v YnJvd3NlL1FUQlVHLTYwMjUwCisgICAgIGlmIChwcm9wZXJ0eVVwZGF0ZXNJbml0aWFsaXplZCkg eworLSAgICAgICAgc2lnbmFsSGFuZGxlci5yZW1vdmUob2JqZWN0KTsKKysgICAgICAgIHNpZ25h bEhhbmRsZXJGb3Iob2JqZWN0KS0+cmVtb3ZlKG9iamVjdCk7CisgICAgICAgICBzaWduYWxUb1By b3BlcnR5TWFwLnJlbW92ZShvYmplY3QpOworICAgICB9CisgICAgIHBlbmRpbmdQcm9wZXJ0eVVw ZGF0ZXMucmVtb3ZlKG9iamVjdCk7CitAQCAtODUyLDYgKzg1Miw1MiBAQCB2b2lkIFFNZXRhT2Jq ZWN0UHVibGlzaGVyOjpicm9hZGNhc3RNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdl KSBjb25zdAorICAgICB9CisgfQorIAorK3ZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmVucXVl dWVCcm9hZGNhc3RNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlKQorK3sKKysgICAg aWYgKHdlYkNoYW5uZWwtPmRfZnVuYygpLT50cmFuc3BvcnRzLmlzRW1wdHkoKSkgeworKyAgICAg ICAgcVdhcm5pbmcoIlFXZWJDaGFubmVsIGlzIG5vdCBjb25uZWN0ZWQgdG8gYW55IHRyYW5zcG9y dHMsIGNhbm5vdCBzZW5kIG1lc3NhZ2U6ICVzIiwKKysgICAgICAgICAgICAgICAgIFFKc29uRG9j dW1lbnQobWVzc2FnZSkudG9Kc29uKCkuY29uc3REYXRhKCkpOworKyAgICAgICAgcmV0dXJuOwor KyAgICB9CisrCisrICAgIGZvciAoYXV0byAqdHJhbnNwb3J0IDogd2ViQ2hhbm5lbC0+ZF9mdW5j KCktPnRyYW5zcG9ydHMpIHsKKysgICAgICAgIGF1dG8gJnN0YXRlID0gdHJhbnNwb3J0U3RhdGVb dHJhbnNwb3J0XTsKKysgICAgICAgIHN0YXRlLnF1ZXVlZE1lc3NhZ2VzLmFwcGVuZChtZXNzYWdl KTsKKysgICAgfQorK30KKysKKyt2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjplbnF1ZXVlTWVz c2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3Bv cnQpCisreworKyAgICBhdXRvICZzdGF0ZSA9IHRyYW5zcG9ydFN0YXRlW3RyYW5zcG9ydF07Cisr ICAgIHN0YXRlLnF1ZXVlZE1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKTsKKyt9CisrCisrdm9pZCBR TWV0YU9iamVjdFB1Ymxpc2hlcjo6c2VuZEVucXVldWVkUHJvcGVydHlVcGRhdGVzKFFXZWJDaGFu bmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkKKyt7CisrICAgIGF1dG8gZm91bmQgPSB0 cmFuc3BvcnRTdGF0ZS5maW5kKHRyYW5zcG9ydCk7CisrICAgIGlmIChmb3VuZCAhPSB0cmFuc3Bv cnRTdGF0ZS5lbmQoKSAmJiBmb3VuZC52YWx1ZSgpLmNsaWVudElzSWRsZQorKyAgICAgICAgJiYg IWZvdW5kLnZhbHVlKCkucXVldWVkTWVzc2FnZXMuaXNFbXB0eSgpKSB7CisrCisrICAgICAgICAv LyBJZiB0aGUgY2xpZW50IGlzIGNvbm5lY3RlZCB3aXRoIGFuIGluLXByb2Nlc3MgdHJhbnNwb3J0 LCBpdCBjYW4KKysgICAgICAgIC8vIGhhcHBlbiB0aGF0IGEgbWVzc2FnZSB0cmlnZ2VycyBhIHN1 YnNlcXVlbnQgcHJvcGVydHkgY2hhbmdlLiBJbgorKyAgICAgICAgLy8gdGhhdCBjYXNlLCB3ZSBu ZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBxdWV1ZWQgbWVzc2FnZXMgaGF2ZSBhbHJlYWR5CisrICAg ICAgICAvLyBiZWVuIGNsZWFyZWQ7IG90aGVyd2lzZSB0aGUgcmVjdXJzaXZlIGNhbGwgd2lsbCBz ZW5kIGV2ZXJ5dGhpZyBhZ2Fpbi4KKysgICAgICAgIC8vIENhc2UgaW4gcG9pbnQ6IFRoZSBxbWx3 ZWJjaGFubmVsIHRlc3RzIGZhaWwgaWYgd2UgZG9uJ3QgY2xlYXIgdGhlCisrICAgICAgICAvLyBx dWV1ZWQgbWVzc2FnZXMgYmVmb3JlIHNlbmRpbmcgdGhlbSBvdXQuCisrICAgICAgICAvLyBGb3Ig dGhhdCBzYW1lIHJlYXNvbiBzZXQgdGhlIGNsaWVudCB0byAiYnVzeSIgKGFrYSBub24taWRsZSkg anVzdAorKyAgICAgICAgLy8gcmlnaHQgYmVmb3JlIHNlbmRpbmcgb3V0IHRoZSBtZXNzYWdlczsg b3RoZXJ3aXNlIGEgcG90ZW50aWFsCisrICAgICAgICAvLyAiSWRsZSIgdHlwZSBtZXNzYWdlIHdp bGwgbm90IGNvcnJlY3RseSByZXN0b3JlIHRoZSBJZGxlIHN0YXRlLgorKyAgICAgICAgY29uc3Qg YXV0byBtZXNzYWdlcyA9IHN0ZDo6bW92ZShmb3VuZC52YWx1ZSgpLnF1ZXVlZE1lc3NhZ2VzKTsK KysgICAgICAgIFFfQVNTRVJUKGZvdW5kLnZhbHVlKCkucXVldWVkTWVzc2FnZXMuaXNFbXB0eSgp KTsKKysgICAgICAgIGZvdW5kLnZhbHVlKCkuY2xpZW50SXNJZGxlID0gZmFsc2U7CisrCisrICAg ICAgICBmb3IgKGNvbnN0IGF1dG8gJm1lc3NhZ2UgOiBtZXNzYWdlcykgeworKyAgICAgICAgICAg IHRyYW5zcG9ydC0+c2VuZE1lc3NhZ2UobWVzc2FnZSk7CisrICAgICAgICB9CisrICAgIH0KKyt9 CisrCisgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aGFuZGxlTWVzc2FnZShjb25zdCBRSnNv bk9iamVjdCAmbWVzc2FnZSwgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0 KQorIHsKKyAgICAgaWYgKCF3ZWJDaGFubmVsLT5kX2Z1bmMoKS0+dHJhbnNwb3J0cy5jb250YWlu cyh0cmFuc3BvcnQpKSB7CitAQCAtODY2LDcgKzkxMiw3IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJs aXNoZXI6OmhhbmRsZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsIFFXZWJDaGFu bmVsCisgCisgICAgIGNvbnN0IE1lc3NhZ2VUeXBlIHR5cGUgPSB0b1R5cGUobWVzc2FnZS52YWx1 ZShLRVlfVFlQRSkpOworICAgICBpZiAodHlwZSA9PSBUeXBlSWRsZSkgeworLSAgICAgICAgc2V0 Q2xpZW50SXNJZGxlKHRydWUpOworKyAgICAgICAgc2V0Q2xpZW50SXNJZGxlKHRydWUsIHRyYW5z cG9ydCk7CisgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUeXBlSW5pdCkgeworICAgICAgICAgaWYg KCFtZXNzYWdlLmNvbnRhaW5zKEtFWV9JRCkpIHsKKyAgICAgICAgICAgICBxV2FybmluZygiSlNP TiBtZXNzYWdlIG9iamVjdCBpcyBtaXNzaW5nIHRoZSBpZCBwcm9wZXJ0eTogJXMiLAorQEAgLTkx Myw5ICs5NTksOSBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpoYW5kbGVNZXNzYWdlKGNv bnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLCBRV2ViQ2hhbm5lbAorICAgICAgICAgICAgICAgICBy ZXR1cm47CisgICAgICAgICAgICAgdHJhbnNwb3J0LT5zZW5kTWVzc2FnZShjcmVhdGVSZXNwb25z ZShtZXNzYWdlLnZhbHVlKEtFWV9JRCksIHdyYXBSZXN1bHQocmVzdWx0LCB0cmFuc3BvcnQpKSk7 CisgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gVHlwZUNvbm5lY3RUb1NpZ25hbCkgeworLSAg ICAgICAgICAgIHNpZ25hbEhhbmRsZXIuY29ubmVjdFRvKG9iamVjdCwgbWVzc2FnZS52YWx1ZShL RVlfU0lHTkFMKS50b0ludCgtMSkpOworKyAgICAgICAgICAgIHNpZ25hbEhhbmRsZXJGb3Iob2Jq ZWN0KS0+Y29ubmVjdFRvKG9iamVjdCwgbWVzc2FnZS52YWx1ZShLRVlfU0lHTkFMKS50b0ludCgt MSkpOworICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IFR5cGVEaXNjb25uZWN0RnJvbVNpZ25h bCkgeworLSAgICAgICAgICAgIHNpZ25hbEhhbmRsZXIuZGlzY29ubmVjdEZyb20ob2JqZWN0LCBt ZXNzYWdlLnZhbHVlKEtFWV9TSUdOQUwpLnRvSW50KC0xKSk7CisrICAgICAgICAgICAgc2lnbmFs SGFuZGxlckZvcihvYmplY3QpLT5kaXNjb25uZWN0RnJvbShvYmplY3QsIG1lc3NhZ2UudmFsdWUo S0VZX1NJR05BTCkudG9JbnQoLTEpKTsKKyAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUeXBl U2V0UHJvcGVydHkpIHsKKyAgICAgICAgICAgICBzZXRQcm9wZXJ0eShvYmplY3QsIG1lc3NhZ2Uu dmFsdWUoS0VZX1BST1BFUlRZKS50b0ludCgtMSksCisgICAgICAgICAgICAgICAgICAgICAgICAg bWVzc2FnZS52YWx1ZShLRVlfVkFMVUUpKTsKK0BAIC05MzEsNiArOTc3LDcgQEAgdm9pZCBRTWV0 YU9iamVjdFB1Ymxpc2hlcjo6c2V0QmxvY2tVcGRhdGVzKGJvb2wgYmxvY2spCisgICAgIGJsb2Nr VXBkYXRlcyA9IGJsb2NrOworIAorICAgICBpZiAoIWJsb2NrVXBkYXRlcykgeworKyAgICAgICAg dGltZXIuc3RhcnQoUFJPUEVSVFlfVVBEQVRFX0lOVEVSVkFMLCB0aGlzKTsKKyAgICAgICAgIHNl bmRQZW5kaW5nUHJvcGVydHlVcGRhdGVzKCk7CisgICAgIH0gZWxzZSBpZiAodGltZXIuaXNBY3Rp dmUoKSkgeworICAgICAgICAgdGltZXIuc3RvcCgpOworQEAgLTk0OCw0ICs5OTUsMTUgQEAgdm9p ZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6dGltZXJFdmVudChRVGltZXJFdmVudCAqZXZlbnQpCisg ICAgIH0KKyB9CisgCisrU2lnbmFsSGFuZGxlcjxRTWV0YU9iamVjdFB1Ymxpc2hlcj4gKlFNZXRh T2JqZWN0UHVibGlzaGVyOjpzaWduYWxIYW5kbGVyRm9yKGNvbnN0IFFPYmplY3QgKm9iamVjdCkK Kyt7CisrICAgIGF1dG8gdGhyZWFkID0gb2JqZWN0LT50aHJlYWQoKTsKKysgICAgYXV0byBpdCA9 IHNpZ25hbEhhbmRsZXJzLmZpbmQodGhyZWFkKTsKKysgICAgaWYgKGl0ID09IHNpZ25hbEhhbmRs ZXJzLmVuZCgpKSB7CisrICAgICAgICBpdCA9IHNpZ25hbEhhbmRsZXJzLmVtcGxhY2UodGhyZWFk LCB0aGlzKS5maXJzdDsKKysgICAgICAgIGl0LT5zZWNvbmQubW92ZVRvVGhyZWFkKHRocmVhZCk7 CisrICAgIH0KKysgICAgcmV0dXJuICZpdC0+c2Vjb25kOworK30KKysKKyBRVF9FTkRfTkFNRVNQ QUNFCitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0 cHVibGlzaGVyX3AuaCBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1 Ymxpc2hlcl9wLmgKK2luZGV4IGJiZDk4NzUuLjQ3MTNlZjEgMTAwNjQ0CistLS0gYS9xdHdlYmNo YW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXJfcC5oCisrKysgYi9xdHdl YmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXJfcC5oCitAQCAtNTks NiArNTksOSBAQAorICNpbmNsdWRlIDxRQmFzaWNUaW1lcj4KKyAjaW5jbHVkZSA8UVBvaW50ZXI+ CisgI2luY2x1ZGUgPFFKc29uT2JqZWN0PgorKyNpbmNsdWRlIDxRUXVldWU+CisrCisrI2luY2x1 ZGUgPHVub3JkZXJlZF9tYXA+CisgCisgI2luY2x1ZGUgInF3ZWJjaGFubmVsZ2xvYmFsLmgiCisg CitAQCAtMTA5LDE3ICsxMTIsMzYgQEAgcHVibGljOgorICAgICAgKi8KKyAgICAgdm9pZCBicm9h ZGNhc3RNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlKSBjb25zdDsKKyAKKysgICAg LyoqCisrICAgICAqIEVucXVldWUgdGhlIGdpdmVuIEBwIG1lc3NhZ2UgdG8gYWxsIGtub3duIHRy YW5zcG9ydHMuCisrICAgICAqLworKyAgICB2b2lkIGVucXVldWVCcm9hZGNhc3RNZXNzYWdlKGNv bnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlKTsKKysKKysgICAgLyoqCisrICAgICAqIEVucXVldWUg dGhlIGdpdmVuIEBwIG1lc3NhZ2UgdG8gQHAgdHJhbnNwb3J0LgorKyAgICAgKi8KKysgICAgdm9p ZCBlbnF1ZXVlTWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSwgUVdlYkNoYW5uZWxB YnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KTsKKysKKysgICAgLyoqCisrICAgICAqIElmIGNs aWVudCBmb3IgZ2l2ZW4gQHAgdHJhbnNwb3J0IGlzIGlkbGUsIHNlbmQgcXVldWVkIG1lc3NhZ2Vk IHRvIEBwIHRyYW5zcG9ydCBhbmQgdGhlbiBtYXJrCisrICAgICAqIHRoZSBjbGllbnQgYXMgbm90 IGlkbGUuCisrICAgICAqLworKyAgICB2b2lkIHNlbmRFbnF1ZXVlZFByb3BlcnR5VXBkYXRlcyhR V2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworKworICAgICAvKioKKyAg ICAgICogU2VyaWFsaXplIHRoZSBRTWV0YU9iamVjdCBvZiBAcCBvYmplY3QgYW5kIHJldHVybiBp dCBpbiBKU09OIGZvcm0uCisgICAgICAqLworICAgICBRSnNvbk9iamVjdCBjbGFzc0luZm9Gb3JP YmplY3QoY29uc3QgUU9iamVjdCAqb2JqZWN0LCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0 ICp0cmFuc3BvcnQpOworIAorICAgICAvKioKKy0gICAgICogU2V0IHRoZSBjbGllbnQgdG8gaWRs ZSBvciBidXN5LCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgQHAgaXNJZGxlLgorLSAgICAgKgorLSAg ICAgKiBXaGVuIHRoZSB2YWx1ZSBjaGFuZ2VkLCBzdGFydC9zdG9wIHRoZSBwcm9wZXJ0eSB1cGRh dGUgdGltZXIgYWNjb3JkaW5nbHkuCisrICAgICAqIFNldCB0aGUgY2xpZW50IHRvIGlkbGUgb3Ig YnVzeSBmb3IgYSBzaW5nbGUgQHAgdHJhbnNwb3J0LCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgQHAg aXNJZGxlLgorKyAgICAgKi8KKysgICAgdm9pZCBzZXRDbGllbnRJc0lkbGUoYm9vbCBpc0lkbGUs IFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7CisrCisrICAgIC8qKgor KyAgICAgKiBDaGVjayB0aGF0IGNsaWVudCBpcyBpZGxlIGZvciBAcCB0cmFuc3BvcnQuCisgICAg ICAqLworLSAgICB2b2lkIHNldENsaWVudElzSWRsZShib29sIGlzSWRsZSk7CisrICAgIGJvb2wg aXNDbGllbnRJZGxlKFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7Cisg CisgICAgIC8qKgorICAgICAgKiBJbml0aWFsaXplIGNsaWVudHMgYnkgc2VuZGluZyB0aGVtIHRo ZSBjbGFzcyBpbmZvcm1hdGlvbiBvZiB0aGUgcmVnaXN0ZXJlZCBvYmplY3RzLgorQEAgLTI3Miwx MCArMjk0LDE4IEBAIHByaXZhdGU6CisgICAgIGZyaWVuZCBjbGFzcyBUZXN0V2ViQ2hhbm5lbDsK KyAKKyAgICAgUVdlYkNoYW5uZWwgKndlYkNoYW5uZWw7CistICAgIFNpZ25hbEhhbmRsZXI8UU1l dGFPYmplY3RQdWJsaXNoZXI+IHNpZ25hbEhhbmRsZXI7CisrICAgIHN0ZDo6dW5vcmRlcmVkX21h cDxjb25zdCBRVGhyZWFkKiwgU2lnbmFsSGFuZGxlcjxRTWV0YU9iamVjdFB1Ymxpc2hlcj4+IHNp Z25hbEhhbmRsZXJzOworKyAgICBTaWduYWxIYW5kbGVyPFFNZXRhT2JqZWN0UHVibGlzaGVyPiAq c2lnbmFsSGFuZGxlckZvcihjb25zdCBRT2JqZWN0ICpvYmplY3QpOworIAorLSAgICAvLyB0cnVl IHdoZW4gdGhlIGNsaWVudCBpcyBpZGxlLCBmYWxzZSBvdGhlcndpc2UKKy0gICAgYm9vbCBjbGll bnRJc0lkbGU7CisrICAgIHN0cnVjdCBUcmFuc3BvcnRTdGF0ZQorKyAgICB7CisrICAgICAgICBU cmFuc3BvcnRTdGF0ZSgpIDogY2xpZW50SXNJZGxlKGZhbHNlKSB7IH0KKysgICAgICAgIC8vIHRy dWUgd2hlbiB0aGUgY2xpZW50IGlzIGlkbGUsIGZhbHNlIG90aGVyd2lzZQorKyAgICAgICAgYm9v bCBjbGllbnRJc0lkbGU7CisrICAgICAgICAvLyBtZXNzYWdlcyB0byBzZW5kCisrICAgICAgICBR UXVldWU8UUpzb25PYmplY3Q+IHF1ZXVlZE1lc3NhZ2VzOworKyAgICB9OworKyAgICBRSGFzaDxR V2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICosIFRyYW5zcG9ydFN0YXRlPiB0cmFuc3BvcnRT dGF0ZTsKKyAKKyAgICAgLy8gdHJ1ZSB3aGVuIG5vIHByb3BlcnR5IHVwZGF0ZXMgc2hvdWxkIGJl IHNlbnQsIGZhbHNlIG90aGVyd2lzZQorICAgICBib29sIGJsb2NrVXBkYXRlczsKK2RpZmYgLS1n aXQgYS9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvc2lnbmFsaGFuZGxlcl9wLmggYi9xdHdl YmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvc2lnbmFsaGFuZGxlcl9wLmgKK2luZGV4IDI3YWZhZGIu LmQ3NzM3M2MgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvc2lnbmFs aGFuZGxlcl9wLmgKKysrKyBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9zaWduYWxoYW5k bGVyX3AuaAorQEAgLTU2LDYgKzU2LDcgQEAKKyAjaW5jbHVkZSA8UVZlY3Rvcj4KKyAjaW5jbHVk ZSA8UU1ldGFNZXRob2Q+CisgI2luY2x1ZGUgPFFEZWJ1Zz4KKysjaW5jbHVkZSA8UVRocmVhZD4K KyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKK0BAIC03MSw2ICs3Miw3IEBAIHN0YXRpYyBjb25z dCBpbnQgc19kZXN0cm95ZWRTaWduYWxJbmRleCA9IFFPYmplY3Q6OnN0YXRpY01ldGFPYmplY3Qu aW5kZXhPZk1ldGhvCisgdGVtcGxhdGU8Y2xhc3MgUmVjZWl2ZXI+CisgY2xhc3MgU2lnbmFsSGFu ZGxlciA6IHB1YmxpYyBRT2JqZWN0CisgeworKyAgICBRX0RJU0FCTEVfQ09QWShTaWduYWxIYW5k bGVyKQorIHB1YmxpYzoKKyAgICAgU2lnbmFsSGFuZGxlcihSZWNlaXZlciAqcmVjZWl2ZXIsIFFP YmplY3QgKnBhcmVudCA9IDApOworIAorQEAgLTI2OCw2ICsyNzAsNyBAQCBpbnQgU2lnbmFsSGFu ZGxlcjxSZWNlaXZlcj46OnF0X21ldGFjYWxsKFFNZXRhT2JqZWN0OjpDYWxsIGNhbGwsIGludCBt ZXRob2RJZCwgdgorICAgICBpZiAoY2FsbCA9PSBRTWV0YU9iamVjdDo6SW52b2tlTWV0YU1ldGhv ZCkgeworICAgICAgICAgY29uc3QgUU9iamVjdCAqb2JqZWN0ID0gc2VuZGVyKCk7CisgICAgICAg ICBRX0FTU0VSVChvYmplY3QpOworKyAgICAgICAgUV9BU1NFUlQoUVRocmVhZDo6Y3VycmVudFRo cmVhZCgpID09IG9iamVjdC0+dGhyZWFkKCkpOworICAgICAgICAgUV9BU1NFUlQoc2VuZGVyU2ln bmFsSW5kZXgoKSA9PSBtZXRob2RJZCk7CisgICAgICAgICBRX0FTU0VSVChtX2Nvbm5lY3Rpb25z Q291bnRlci5jb250YWlucyhvYmplY3QpKTsKKyAgICAgICAgIFFfQVNTRVJUKG1fY29ubmVjdGlv bnNDb3VudGVyLnZhbHVlKG9iamVjdCkuY29udGFpbnMobWV0aG9kSWQpKTsKK2RpZmYgLS1naXQg YS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by9xbWwvdGVzdHdlYmNoYW5uZWwuY3BwIGIvcXR3ZWJj aGFubmVsL3Rlc3RzL2F1dG8vcW1sL3Rlc3R3ZWJjaGFubmVsLmNwcAoraW5kZXggOTg5MTY4Ny4u M2NhODFjMiAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3FtbC90ZXN0d2Vi Y2hhbm5lbC5jcHAKKysrKyBiL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3FtbC90ZXN0d2ViY2hh bm5lbC5jcHAKK0BAIC00Niw3ICs0NiwxMSBAQCBUZXN0V2ViQ2hhbm5lbDo6flRlc3RXZWJDaGFu bmVsKCkKKyAKKyBib29sIFRlc3RXZWJDaGFubmVsOjpjbGllbnRJc0lkbGUoKSBjb25zdAorIHsK Ky0gICAgcmV0dXJuIFFXZWJDaGFubmVsOjpkX2Z1bmMoKS0+cHVibGlzaGVyLT5jbGllbnRJc0lk bGU7CisrICAgIGZvciAoYXV0byAqdHJhbnNwb3J0IDogUVdlYkNoYW5uZWw6OmRfZnVuYygpLT50 cmFuc3BvcnRzKSB7CisrICAgICAgICBpZiAoUVdlYkNoYW5uZWw6OmRfZnVuYygpLT5wdWJsaXNo ZXItPmlzQ2xpZW50SWRsZSh0cmFuc3BvcnQpKQorKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor KyAgICB9CisrICAgIHJldHVybiBmYWxzZTsKKyB9CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlm ZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5u ZWwuY3BwIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5l bC5jcHAKK2luZGV4IDE4MWRhOWUuLjM3Zjk4OWEgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwv dGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmNwcAorKysrIGIvcXR3ZWJjaGFu bmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5jcHAKK0BAIC03ODUsNyAr Nzg1LDcgQEAgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6dGVzdFRyYW5zcG9ydFdyYXBPYmplY3RQcm9w ZXJ0aWVzKCkKKyAgICAgRHVtbXlUcmFuc3BvcnQgKmR1bW15VHJhbnNwb3J0ID0gbmV3IER1bW15 VHJhbnNwb3J0KHRoaXMpOworICAgICBjaGFubmVsLmNvbm5lY3RUbyhkdW1teVRyYW5zcG9ydCk7 CisgICAgIGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+aW5pdGlhbGl6ZUNsaWVudChkdW1t eVRyYW5zcG9ydCk7CistICAgIGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+c2V0Q2xpZW50 SXNJZGxlKHRydWUpOworKyAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnNldENsaWVu dElzSWRsZSh0cnVlLCBkdW1teVRyYW5zcG9ydCk7CisgCisgICAgIFFDT01QQVJFKGNoYW5uZWwu ZF9mdW5jKCktPnB1Ymxpc2hlci0+dHJhbnNwb3J0ZWRXcmFwcGVkT2JqZWN0cy5zaXplKCksIDAp OworIAorQEAgLTk0Myw4ICs5NDMsNiBAQCB2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0SW5maW5p dGVSZWN1cnNpb24oKQorIAorIHZvaWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RBc3luY09iamVjdCgp CisgeworLSAgICBRU0tJUCgiVGhpcyB0ZXN0IGlzIGJyb2tlbi4gU2VlIFFUQlVHLTgwNzI5Iik7 CistCisgICAgIFFXZWJDaGFubmVsIGNoYW5uZWw7CisgICAgIGNoYW5uZWwuY29ubmVjdFRvKG1f ZHVtbXlUcmFuc3BvcnQpOworIAorQEAgLTk5MCw2ICs5ODgsNTAgQEAgdm9pZCBUZXN0V2ViQ2hh bm5lbDo6dGVzdEFzeW5jT2JqZWN0KCkKKyAgICAgdGhyZWFkLndhaXQoKTsKKyB9CisgCisrdm9p ZCBUZXN0V2ViQ2hhbm5lbDo6dGVzdFByb3BlcnR5TXVsdGlwbGVUcmFuc3BvcnRzKCkKKyt7Cisr ICAgIER1bW15VHJhbnNwb3J0IHRyYW5zcG9ydDE7CisrICAgIER1bW15VHJhbnNwb3J0IHRyYW5z cG9ydDI7CisrCisrICAgIFFXZWJDaGFubmVsIGNoYW5uZWw7CisrICAgIFFNZXRhT2JqZWN0UHVi bGlzaGVyICpwdWJsaXNoZXIgPSBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXI7CisrCisrICAg IFRlc3RPYmplY3QgdGVzdE9iajsKKysgICAgdGVzdE9iai5zZXRPYmplY3ROYW1lKCJ0ZXN0T2Jq ZWN0Iik7CisrICAgIGNoYW5uZWwucmVnaXN0ZXJPYmplY3QodGVzdE9iai5vYmplY3ROYW1lKCks ICZ0ZXN0T2JqKTsKKysgICAgY2hhbm5lbC5jb25uZWN0VG8oJnRyYW5zcG9ydDEpOworKyAgICBj aGFubmVsLmNvbm5lY3RUbygmdHJhbnNwb3J0Mik7CisrCisrICAgIHRlc3RPYmouc2V0UHJvcCgi SGVsbG8iKTsKKysKKysgICAgcHVibGlzaGVyLT5pbml0aWFsaXplQ2xpZW50KCZ0cmFuc3BvcnQx KTsKKysgICAgcHVibGlzaGVyLT5pbml0aWFsaXplQ2xpZW50KCZ0cmFuc3BvcnQyKTsKKysgICAg cHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgJnRyYW5zcG9ydDEpOworKyAgICBRQ09N UEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MSksIHRydWUpOworKyAgICBR Q09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MiksIGZhbHNlKTsKKysg ICAgUVZFUklGWSh0cmFuc3BvcnQxLm1lc3NhZ2VzU2VudCgpLmlzRW1wdHkoKSk7CisrICAgIFFW RVJJRlkodHJhbnNwb3J0Mi5tZXNzYWdlc1NlbnQoKS5pc0VtcHR5KCkpOworKworKyAgICB0ZXN0 T2JqLnNldFByb3AoIldvcmxkIik7CisrICAgIFFUUllfQ09NUEFSRV9XSVRIX1RJTUVPVVQodHJh bnNwb3J0MS5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDF1LCAyMDAwKTsKKysgICAgUUNPTVBBUkUo dHJhbnNwb3J0Mi5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDB1KTsKKysgICAgcHVibGlzaGVyLT5z ZXRDbGllbnRJc0lkbGUodHJ1ZSwgJnRyYW5zcG9ydDIpOworKyAgICBRVFJZX0NPTVBBUkVfV0lU SF9USU1FT1VUKHRyYW5zcG9ydDIubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAxdSwgMjAwMCk7Cisr ICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQxKSwgZmFsc2Up OworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MiksIGZh bHNlKTsKKysKKysgICAgdGVzdE9iai5zZXRQcm9wKCIhISEiKTsKKysgICAgcHVibGlzaGVyLT5z ZXRDbGllbnRJc0lkbGUodHJ1ZSwgJnRyYW5zcG9ydDIpOworKyAgICBRQ09NUEFSRShwdWJsaXNo ZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MiksIHRydWUpOworKyAgICBRQ09NUEFSRShwdWJs aXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MSksIGZhbHNlKTsKKysgICAgUVRSWV9DT01Q QVJFX1dJVEhfVElNRU9VVCh0cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMnUsIDIw MDApOworKyAgICBRQ09NUEFSRSh0cmFuc3BvcnQxLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMXUp OworKyAgICBwdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCAmdHJhbnNwb3J0MSk7Cisr ICAgIFFUUllfQ09NUEFSRV9XSVRIX1RJTUVPVVQodHJhbnNwb3J0MS5tZXNzYWdlc1NlbnQoKS5z aXplKCksIDJ1LCAyMDAwKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUo JnRyYW5zcG9ydDEpLCBmYWxzZSk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJ ZGxlKCZ0cmFuc3BvcnQyKSwgZmFsc2UpOworK30KKysKKyBjbGFzcyBGdW5jdGlvbldyYXBwZXIg OiBwdWJsaWMgUU9iamVjdAorIHsKKyAgICAgUV9PQkpFQ1QKK0BAIC0xMDgyLDcgKzExMjQsNyBA QCB2b2lkIFRlc3RXZWJDaGFubmVsOjpiZW5jaEluaXRpYWxpemVDbGllbnRzKCkKKyAKKyAgICAg ICAgIHB1Ymxpc2hlci0+cHJvcGVydHlVcGRhdGVzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICAg ICAgIHB1Ymxpc2hlci0+c2lnbmFsVG9Qcm9wZXJ0eU1hcC5jbGVhcigpOworLSAgICAgICAgcHVi bGlzaGVyLT5zaWduYWxIYW5kbGVyLmNsZWFyKCk7CisrICAgICAgICBwdWJsaXNoZXItPnNpZ25h bEhhbmRsZXJzLmNsZWFyKCk7CisgICAgIH0KKyB9CisgCitAQCAtMTEwNyw3ICsxMTQ5LDcgQEAg dm9pZCBUZXN0V2ViQ2hhbm5lbDo6YmVuY2hQcm9wZXJ0eVVwZGF0ZXMoKQorICAgICAgICAgICAg IG9iai0+Y2hhbmdlKCk7CisgICAgICAgICB9CisgCistICAgICAgICBjaGFubmVsLmRfZnVuYygp LT5wdWJsaXNoZXItPmNsaWVudElzSWRsZSA9IHRydWU7CisrICAgICAgICBjaGFubmVsLmRfZnVu YygpLT5wdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCBtX2R1bW15VHJhbnNwb3J0KTsK KyAgICAgICAgIGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+c2VuZFBlbmRpbmdQcm9wZXJ0 eVVwZGF0ZXMoKTsKKyAgICAgfQorIH0KK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvdGVzdHMv YXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmggYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0 by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmgKK2luZGV4IGVhZTIxZjQuLmRkNGU2OTAgMTAw NjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFu bmVsLmgKKysrKyBiL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNo YW5uZWwuaAorQEAgLTM0OCw2ICszNDgsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHRl c3RKc29uVG9WYXJpYW50KCk7CisgICAgIHZvaWQgdGVzdEluZmluaXRlUmVjdXJzaW9uKCk7Cisg ICAgIHZvaWQgdGVzdEFzeW5jT2JqZWN0KCk7CisrICAgIHZvaWQgdGVzdFByb3BlcnR5TXVsdGlw bGVUcmFuc3BvcnRzKCk7CisgICAgIHZvaWQgdGVzdERlbGV0aW9uRHVyaW5nTWV0aG9kSW52b2Nh dGlvbl9kYXRhKCk7CisgICAgIHZvaWQgdGVzdERlbGV0aW9uRHVyaW5nTWV0aG9kSW52b2NhdGlv bigpOworIAorU3VibW9kdWxlIHF0d2ViZW5naW5lIGYzMjgwNTRkLi4uMzhlMGRmNmMgKGNvbW1p dHMgbm90IHByZXNlbnQpCitTdWJtb2R1bGUgcXR3ZWJzb2NrZXRzIDY1ODUwOTU0Li42M2ZiOGRh MToKK2RpZmYgLS1naXQgYS9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldGRh dGFwcm9jZXNzb3IuY3BwIGIvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRk YXRhcHJvY2Vzc29yLmNwcAoraW5kZXggMmFmZmRkNS4uOTVmMTE5NCAxMDA2NDQKKy0tLSBhL3F0 d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0ZGF0YXByb2Nlc3Nvci5jcHAKKysr KyBiL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0ZGF0YXByb2Nlc3Nvci5j cHAKK0BAIC0yNzMsNiArMjczLDcgQEAgdm9pZCBRV2ViU29ja2V0RGF0YVByb2Nlc3Nvcjo6Y2xl YXIoKQorICAgICBpZiAoIW1fcENvbnZlcnRlclN0YXRlKQorICAgICAgICAgbV9wQ29udmVydGVy U3RhdGUgPSBuZXcgUVRleHRDb2RlYzo6Q29udmVydGVyU3RhdGUoUVRleHRDb2RlYzo6Q29udmVy dEludmFsaWRUb051bGwgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVRleHRDb2RlYzo6SWdub3JlSGVhZGVyKTsKKysgICAgZnJh bWUuY2xlYXIoKTsKKyB9CisgCisgLyohCitkaWZmIC0tZ2l0IGEvcXR3ZWJzb2NrZXRzL3NyYy93 ZWJzb2NrZXRzL3F3ZWJzb2NrZXRwcm90b2NvbC5jcHAgYi9xdHdlYnNvY2tldHMvc3JjL3dlYnNv Y2tldHMvcXdlYnNvY2tldHByb3RvY29sLmNwcAoraW5kZXggZGY4N2E5My4uZDA0NjVmMSAxMDA2 NDQKKy0tLSBhL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0cHJvdG9jb2wu Y3BwCisrKysgYi9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldHByb3RvY29s LmNwcAorQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFFXZWJTb2NrZXRQcm90b2NvbDo6bWFzayhj aGFyICpwYXlsb2FkLCBxdWludDY0IHNpemUsIHF1aW50MzIgbWFza2luZ0tleSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcXVpbnQ4KChtYXNraW5nS2V5ICYgMHgwMDAwRkYwMHUpID4+ IDgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWludDgoKG1hc2tpbmdLZXkgJiAw eDAwMDAwMEZGdSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworLSAgICBpbnQgaSA9 IDA7CisrICAgIHF1aW50NjQgaSA9IDA7CisgICAgIHdoaWxlIChzaXplLS0gPiAwKQorICAgICAg ICAgKnBheWxvYWQrKyBePSBtYXNrW2krKyAlIDRdOworIH0KZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv cXQ1L3RlbXBsYXRlIGIvc3JjcGtncy9xdDUvdGVtcGxhdGUKaW5kZXggYTc5ZDI1ZTY5ZGE4Li42 ZGRkY2U3ZjNlNDYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvcXQ1L3RlbXBsYXRlCkBAIC0yLDExICsyLDExIEBACiAjCiAjIHJldmJ1bXAgbGlicXR4ZGcg YWZ0ZXIgYnVtcGluZyBwYXRjaCB2ZXJzaW9uCiBwa2duYW1lPXF0NQotdmVyc2lvbj01LjE1Ljcr MjAyMjExMTkKK3ZlcnNpb249NS4xNS44CityZXZpc2lvbj0xCitidWlsZF9zdHlsZT1tZXRhCiAj IGNvbW1pdCBmOGM5ZmIzMDRiYzNlNTNiM2FhMDdmOTYyY2Q3NGU5MTYwZGVjY2NjCiAjIGJhc2Ug cmVwbzogaHR0cHM6Ly9pbnZlbnQua2RlLm9yZy9xdC9xdC9xdDUKLXJldmlzaW9uPTUKLWJ1aWxk X3N0eWxlPW1ldGEKIGhvc3RtYWtlZGVwZW5kcz0iY21ha2UgY2xhbmcgZmxleCBwZXJsIGdsaWIt ZGV2ZWwgcGtnLWNvbmZpZwogIHB5dGhvbiByZTJjIHJ1Ynkgd2hpY2giCiBtYWtlZGVwZW5kcz0i U0RMMi1kZXZlbCBWdWxrYW4tSGVhZGVycyBhbHNhLWxpYi1kZXZlbCBkb3VibGUtY29udmVyc2lv bi1kZXZlbApAQCAtMjksOCArMjksOSBAQCBob21lcGFnZT0iaHR0cHM6Ly9xdC5pby8iCiAjIHRh cmJhbGwgaXMgZ2VuZXJhdGVkIHdpdGggYGdpdCBhcmNoaXZlLWFsbCBxdDUtJHZlcnNpb24udGFy Lmd6YAogIyB0byBrZWVwIHRoZSBzaXplIHNtYWxsZXIgcXR3ZWJlbmdpbmUsIHF0d2Vidmlldywg cXRkb2NnYWxsZXJ5LCBxdGFjdGl2ZXF0IGFuZCBxdHBpbQogIyBjYW4gYmUgbWFya2VkIHdpdGgg dGhlIGV4cG9ydC1pZ25vcmUgYXR0cmlidXRlCi1kaXN0ZmlsZXM9Imh0dHBzOi8vdm9pZC5qb2hu bnluYXRvci5kZXYvZGlzdGZpbGVzL3F0NS0ke3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPTlk NTdhZjQ3MWM3ODAyOWEzNjIyNzZiN2M5OTEwOGVhMDA5ZjUxMWJiOWJhNmZmNmNiODg0ZjZkZGQy NTVlOWYKKyNkaXN0ZmlsZXM9Imh0dHBzOi8vdm9pZC5qb2hubnluYXRvci5kZXYvZGlzdGZpbGVz L3F0NS0ke3ZlcnNpb259LnRhci5neiIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9kb3dubG9hZC5xdC5p by9hcmNoaXZlL3F0LzUuMTUvJHt2ZXJzaW9ufS9zaW5nbGUvcXQtZXZlcnl3aGVyZS1vcGVuc291 cmNlLXNyYy0ke3ZlcnNpb259LnRhci54eiIKK2NoZWNrc3VtPTc3NmE5MzAyYzMzNjY3MWY5NDA2 YTUzYmQzMGI4ZTM2ZjgyNTc0MmIyZWM0NGE1N2MwODIxN2JmZjBmYTg2YjkKIHB5dGhvbl92ZXJz aW9uPTIgI3VudmVyaWZpZWQKIHJlcGxhY2VzPSJxdDUtZG9jPDUuNi4wIHF0NS1xdWljazE8NS42 LjAgcXQ1LXF1aWNrMS1kZXZlbDw1LjYuMCBxdDUtd2Via2l0PDUuNi4wIHF0NS13ZWJraXQtZGV2 ZWw8NS42LjAKICBxdDUtZW5naW5pbzw1LjcuMSBxdDUtZW5naW5pby1kZXZlbDw1LjcuMSBxdDUt cGx1Z2luLWd0azw1LjcuMSBxdDUtY2FudmFzM2Q8NS4xMy4wIgpAQCAtMjUwLDcgKzI1MSw2IEBA IGRvX2NvbmZpZ3VyZSgpIHsKIAkjIG9wdHMrPSIgLXYiCiAJb3B0cys9IiAtc2tpcCBxdHdlYmVu Z2luZSIKIAlvcHRzKz0iIC1za2lwIHF0d2VidmlldyIKLQlvcHRzKz0iIC1za2lwIHF0ZG9jZ2Fs bGVyeSIKIAlvcHRzKz0iIC1za2lwIHF0cGltIgogCW9wdHMrPSIgLXNraXAgcXRzeXN0ZW1zIgog CW9wdHMrPSIgLXNraXAgcXRzcGVlY2giCgpGcm9tIDlhZDlhMTJlNzYyMDg2ZTcyY2ZiZDgzMThk MDIzMTBhNzgxZTUzOWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3Vi amVjdDogW1BBVENIIDA3NS8xMTNdIHF0YXY6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0t LQogc3JjcGtncy9xdGF2L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXRhdi90ZW1w bGF0ZSBiL3NyY3BrZ3MvcXRhdi90ZW1wbGF0ZQppbmRleCAzNGMzMGIyYzBjNzguLjJkMDBhZDEw NDM1NSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdGF2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXRh di90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXRhdicK IHBrZ25hbWU9cXRhdgogdmVyc2lvbj0xLjEzLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1 aWxkX3N0eWxlPXFtYWtlCiBob3N0bWFrZWRlcGVuZHM9InF0NS1xbWFrZSBxdDUtaG9zdC10b29s cyIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbGliYXNzLWRldmVsIGxpYm9wZW5hbC1kZXZl bAorbWFrZWRlcGVuZHM9ImZmbXBlZzQtZGV2ZWwgbGliYXNzLWRldmVsIGxpYm9wZW5hbC1kZXZl bAogIGxpYnZhLWdseC1kZXZlbCBsaWJYdi1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCiAgcXQ1LWRl Y2xhcmF0aXZlLWRldmVsIHF0NS1zdmctZGV2ZWwKICBxdDUtcXVpY2tjb250cm9scyIKCkZyb20g ZTU3NjMwNDdhZWFmM2RmZjAzMTIzYTIxOGMyOWU1OTAzZjI0ZDRmOSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDc2LzExM10gcXRveDogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3F0b3gvdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL3F0b3gvdGVtcGxhdGUgYi9zcmNwa2dzL3F0b3gvdGVtcGxhdGUKaW5kZXggMTYw MTlkN2VhZWM5Li41Y2VhMGIxMWI2OTcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXRveC90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL3F0b3gvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdxdG94JwogcGtnbmFtZT1xdG94CiB2ZXJzaW9uPTEuMTcuNgotcmV2aXNpb249 MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFVQREFU RV9DSEVDSz1PRkYKICAtREdJVF9ERVNDUklCRT0ke3ZlcnNpb259CgpGcm9tIGU1MzY0YmRiNzY2 MWM2OTdhYmIxMGNhZmZjNDI4NzE3NzBkMDAwYzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3Ny8xMTNdIHJldHJvYXJjaDogcmV2YnVtcCBm b3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0ZSB8IDIgKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvcmV0cm9hcmNoL3RlbXBsYXRlIGIvc3JjcGtncy9yZXRyb2FyY2gvdGVtcGxhdGUK aW5kZXggMjgwMTZhYTAxMjllLi4yMGExNDE1OTEzYmUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmV0 cm9hcmNoL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcmV0cm9hcmNoL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncmV0cm9hcmNoJwogcGtnbmFtZT1yZXRyb2Fy Y2gKIHZlcnNpb249MS4xNS4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1j b25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLXByZWZpeD0vdXNyIC0tc3lzY29uZmRpcj0vZXRj IC0tZW5hYmxlLW5ldHdvcmtpbmcKICAtLWVuYWJsZS11ZGV2IC0tZGlzYWJsZS1idWlsdGluZmxh YyAtLWRpc2FibGUtYnVpbHRpbmdsc2xhbmcKCkZyb20gMjkxMGQwZDJkYzU4YzU5ODNlODg5MjVm YzNmMWExOTExNmI2ZTEyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDc4LzExM10gc2NyY3B5OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3Mvc2NyY3B5L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zY3JjcHkvdGVt cGxhdGUgYi9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZQppbmRleCBlZTZlNjk4ZTM4N2YuLjhhZGE1 Y2E0MzIzZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9zY3JjcHkvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9zY3JjcHkvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdz Y3JjcHknCiBwa2duYW1lPXNjcmNweQogdmVyc2lvbj0yLjAKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iLURjb21waWxlX3NlcnZlcj1m YWxzZQogIC1EcHJlYnVpbHRfc2VydmVyPS91c3Ivc2hhcmUvc2NyY3B5L3NjcmNweS1zZXJ2ZXIt diR7dmVyc2lvbn0iCgpGcm9tIDhkMDgxZDE4NGRkNjQ5MTdkYTM1ZDhhMjFmNTBhM2YzNTUwNGJl NDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENI IDA3OS8xMTNdIHNwZWstYWx0ZXJuYXRpdmU6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0t LQogc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlL3RlbXBsYXRlIHwgNiArKystLS0KIDEgZmlsZSBj aGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9zcGVrLWFsdGVybmF0aXZlL3RlbXBsYXRlIGIvc3JjcGtncy9zcGVrLWFsdGVybmF0aXZl L3RlbXBsYXRlCmluZGV4IGQ2NTA4NmI4ZjAwOC4uMDUyNDZmMWI4ZDBjIDEwMDY0NAotLS0gYS9z cmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zcGVrLWFsdGVy bmF0aXZlL3RlbXBsYXRlCkBAIC0xLDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdz cGVrLWFsdGVybmF0aXZlJwogcGtnbmFtZT1zcGVrLWFsdGVybmF0aXZlCiB2ZXJzaW9uPTAuOC4y LjMKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGhv c3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgZ2V0dGV4dC1kZXZlbCBpbnRsdG9vbCBsaWJ0b29sIHBr Zy1jb25maWcgd3hXaWRnZXRzLWNvbW1vbiIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgd3hX aWRnZXRzLWd0azMtZGV2ZWwiCi1kZXBlbmRzPSJmZm1wZWciCittYWtlZGVwZW5kcz0iZmZtcGVn NC1kZXZlbCB3eFdpZGdldHMtZ3RrMy1kZXZlbCIKK2RlcGVuZHM9ImZmbXBlZzQiCiBzaG9ydF9k ZXNjPSJBY291c3RpYyBzcGVjdHJ1bSBhbmFseXNlciIKIG1haW50YWluZXI9IkthcnRpayBTaW5n aCA8a2FydGlrLnlud2FAZ21haWwuY29tPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCgpG cm9tIDA4YTcwZmY3MDY4NDQxMTQ5MTNhNTFkYTk4M2MzMzY5YWZlNDEzNDcgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4MC8xMTNdIHNzcjog cmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3Nzci90ZW1wbGF0ZSB8IDQg KystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3Nzci90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc3NyL3RlbXBsYXRlCmlu ZGV4IGIwNTViOWVjMDc3NC4uMzQ0OGNhMTEwZWIwIDEwMDY0NAotLS0gYS9zcmNwa2dzL3Nzci90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3Nzci90ZW1wbGF0ZQpAQCAtMSwxMSArMSwxMSBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnc3NyJwogcGtnbmFtZT1zc3IKIHZlcnNpb249MC40LjQKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURX SVRIX1FUNT1PTiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJh bHNhLWxpYi1kZXZlbCBmZm1wZWctZGV2ZWwgZ2x1LWRldmVsIGphY2stZGV2ZWwgcHVsc2VhdWRp by1kZXZlbAorbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZzQtZGV2ZWwgZ2x1LWRl dmVsIGphY2stZGV2ZWwgcHVsc2VhdWRpby1kZXZlbAogIHF0NS10b29scy1kZXZlbCBxdDUteDEx ZXh0cmFzLWRldmVsIGxpYlhpbmVyYW1hLWRldmVsIHY0bC11dGlscy1kZXZlbCIKIGRlcGVuZHM9 ImRlc2t0b3AtZmlsZS11dGlscyBoaWNvbG9yLWljb24tdGhlbWUiCiBzaG9ydF9kZXNjPSJTaW1w bGUgU2NyZWVuIFJlY29yZGVyIGZvciBwcm9ncmFtcyBhbmQgZ2FtZXMiCgpGcm9tIGFjY2ZiZTUz MDBjYTM3ZTBlNjNlNTllZjZmMzdhMTE5ZTgzN2EzNWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4MS8xMTNdIHN1bW86IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9zdW1vL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9zdW1vL3RlbXBsYXRlIGIvc3JjcGtncy9zdW1vL3RlbXBsYXRlCmluZGV4IDBmOWI5ZWM4MTVm NS4uYTNmZTEzNGFhNWFjIDEwMDY0NAotLS0gYS9zcmNwa2dzL3N1bW8vdGVtcGxhdGUKKysrIGIv c3JjcGtncy9zdW1vL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnc3VtbycKIHBrZ25hbWU9c3VtbwogdmVyc2lvbj0xLjEyLjAKLXJldmlzaW9uPTUKK3Jldmlz aW9uPTYKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImxpYmdkYWwtdG9vbHMg cGtnLWNvbmZpZyBzd2lnIHB5dGhvbjMtc2V0dXB0b29scyIKIG1ha2VkZXBlbmRzPSJweXRob24z LWRldmVsIGZmbXBlZy1kZXZlbCBmb3gtZGV2ZWwgZ2wycHMtZGV2ZWwgbGliZ2RhbC1kZXZlbAoK RnJvbSBmOTE2OWNiNGJhMzQ4ZjJiYmI0MGVkMjNiMTE0YjY3NDRiNzRlMDk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODIvMTEzXSBzeW5m aWc6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAgYW5kIG1sdDcKCi0tLQogc3JjcGtncy9zeW5maWcv cGF0Y2hlcy9mZm1wZWc2LnBhdGNoIHwgNzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog c3JjcGtncy9zeW5maWcvdGVtcGxhdGUgICAgICAgICAgICAgIHwgIDQgKy0KIDIgZmlsZXMgY2hh bmdlZCwgNzMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL3N5bmZpZy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3N5bmZpZy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2ggYi9zcmNwa2dzL3N5bmZpZy9wYXRjaGVz L2ZmbXBlZzYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4x MDc4MGI0Mjc4MmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3N5bmZpZy9wYXRjaGVzL2Zm bXBlZzYucGF0Y2gKQEAgLTAsMCArMSw3MSBAQAorLS0tIGEvc3JjL21vZHVsZXMvbW9kX2xpYmF2 Y29kZWMvdHJndF9hdi5jcHAJMjAyMi0xMC0yNSAwOToxNDoxMi4wMDAwMDAwMDAgLTA0MDAKKysr KyBiL3NyYy9tb2R1bGVzL21vZF9saWJhdmNvZGVjL3RyZ3RfYXYuY3BwCTIwMjMtMDUtMDUgMjE6 MzQ6MTcuODk5MTk0NTU5IC0wNDAwCitAQCAtMzgsNiArNDEsNyBAQAorIGV4dGVybiAiQyIKKyB7 CisgI2lmZGVmIEhBVkVfTElCQVZGT1JNQVRfQVZGT1JNQVRfSAorKyMJaW5jbHVkZSA8bGliYXZj b2RlYy9hdmNvZGVjLmg+CisgIwlpbmNsdWRlIDxsaWJhdmZvcm1hdC9hdmZvcm1hdC5oPgorICNl bGlmIGRlZmluZWQoSEFWRV9BVkZPUk1BVF9IKQorICMJaW5jbHVkZSA8YXZmb3JtYXQuaD4KK0BA IC0xNTUsMTEgKzE1NiwxMSBAQAorICAgICB9CisgCisgCWJvb2wgb3Blbl92aWRlb19zdHJlYW0o KSB7CistCQlpZiAoYXZjb2RlY19vcGVuMih2aWRlb19jb250ZXh0LCBOVUxMLCBOVUxMKSA8IDAp IHsKKysJCWlmIChhdmNvZGVjX29wZW4yKHZpZGVvX2NvbnRleHQsIG51bGxwdHIsIG51bGxwdHIp IDwgMCkgeworIAkJCXN5bmZpZzo6ZXJyb3IoIlRhcmdldF9MaWJBVkNvZGVjOiBjb3VsZCBub3Qg b3BlbiB2aWRlbyBjb2RlYyIpOworIAkJCS8vIHNlZW1zIHRoZSBjYWxsaW5nIG9mIGF2Y29kZWNf ZnJlZV9jb250ZXh0IGFmdGVyIGVycm9yIHdpbGwgY2F1c2UgY3Jhc2gKKyAJCQkvLyBzbyBqdXN0 IGZvcmdldCBhYm91dCB0aGlzIGNvbnRleHQKKy0JCQl2aWRlb19jb250ZXh0ID0gTlVMTDsKKysJ CQl2aWRlb19jb250ZXh0ID0gbnVsbHB0cjsKKyAJCQljbG9zZSgpOworIAkJCXJldHVybiBmYWxz ZTsKKyAgICAgICAgIH0KK0BAIC0yMzQsMTUgKzIzNSwyMSBAQAorIAkJY2xvc2UoKTsKKyAKKyAJ CWlmICghYXZfcmVnaXN0ZXJlZCkgeworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1 OCAvLyBGRk1QRUcgPCA0LjAKKyAJCQlhdl9yZWdpc3Rlcl9hbGwoKTsKKysjZW5kaWYKKyAJCQlh dl9yZWdpc3RlcmVkID0gdHJ1ZTsKKyAJCX0KKyAKKyAJCS8vIGd1ZXNzIGZvcm1hdAorLQkJQVZP dXRwdXRGb3JtYXQgKmZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdChOVUxMLCBmaWxlbmFtZS5jX3N0 cigpLCBOVUxMKTsKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTkgLy8gRkZNUEVH IDwgNS4wCisrCQlBVk91dHB1dEZvcm1hdCogZm9ybWF0ID0gYXZfZ3Vlc3NfZm9ybWF0KG51bGxw dHIsIGZpbGVuYW1lLmNfc3RyKCksIG51bGxwdHIpOworKyNlbHNlCisrCQljb25zdCBBVk91dHB1 dEZvcm1hdCogZm9ybWF0ID0gYXZfZ3Vlc3NfZm9ybWF0KG51bGxwdHIsIGZpbGVuYW1lLmNfc3Ry KCksIG51bGxwdHIpOworKyNlbmRpZgorIAkJaWYgKCFmb3JtYXQpIHsKKyAJCQlzeW5maWc6Ondh cm5pbmcoIlRhcmdldF9MaWJBVkNvZGVjOiB1bmFibGUgdG8gZ3Vlc3MgdGhlIG91dHB1dCBmb3Jt YXQsIGRlZmF1bHRpbmcgdG8gTVBFRyIpOworLQkJCWZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdCgi bXBlZyIsIE5VTEwsIE5VTEwpOworKwkJCWZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdCgibXBlZyIs IG51bGxwdHIsIG51bGxwdHIpOworIAkJfQorIAkJaWYgKCFmb3JtYXQpIHsKKyAJCQlzeW5maWc6 OmVycm9yKCJUYXJnZXRfTGliQVZDb2RlYzogdW5hYmxlIHRvIGZpbmQgJ21wZWcnIG91dHB1dCBm b3JtYXQiKTsKK0BAIC0yNTQsNiArMjYxLDcgQEAKKyAJCWNvbnRleHQgPSBhdmZvcm1hdF9hbGxv Y19jb250ZXh0KCk7CisgCQlhc3NlcnQoY29udGV4dCk7CisgCQljb250ZXh0LT5vZm9ybWF0ID0g Zm9ybWF0OworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1OCAvLyBGRk1QRUcgPCA0 LjAKKyAJCWlmIChmaWxlbmFtZS5zaXplKCkgKyAxID4gc2l6ZW9mKGNvbnRleHQtPmZpbGVuYW1l KSkgeworIAkJCXN5bmZpZzo6ZXJyb3IoCisgCQkJCSJUYXJnZXRfTGliQVZDb2RlYzogZmlsZW5h bWUgdG9vIGxvbmcsIG1heCBsZW5ndGggaXMgJWQsIGZpbGVuYW1lIGlzICclcyciLAorQEAgLTI2 Myw2ICsyNzEsMTQgQEAKKyAJCQlyZXR1cm4gZmFsc2U7CisgCQl9CisgCQltZW1jcHkoY29udGV4 dC0+ZmlsZW5hbWUsIGZpbGVuYW1lLmNfc3RyKCksIGZpbGVuYW1lLnNpemUoKSArIDEpOworKyNl bHNlCisrCQljb250ZXh0LT51cmwgPSBhdl9zdHJuZHVwKGZpbGVuYW1lLmNfc3RyKCksIGZpbGVu YW1lLnNpemUoKSk7CisrCQlpZiAoIWNvbnRleHQtPnVybCkgeworKwkJCXN5bmZpZzo6ZXJyb3Io IlRhcmdldF9MaWJBVkNvZGVjOiBjYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIGZpbGVuYW1lIik7 CisrCQkJY2xvc2UoKTsKKysJCQlyZXR1cm4gZmFsc2U7CisrCQl9CisrI2VuZGlmCisgCisgCQlw YWNrZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKyAJCWFzc2VydChwYWNrZXQpOwpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9zeW5maWcvdGVtcGxhdGUgYi9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQppbmRl eCA1ZjVmNWJiM2Y0YjIuLjZlMGQ3MTMxNTBhZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9zeW5maWcv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9zeW5maWcvdGVtcGxhdGUKQEAgLTYsNyArNiw3IEBAIHJl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLXdp dGgtYm9vc3QtbGliZGlyPSR7WEJQU19DUk9TU19CQVNFfS91c3IvbGliIgogaG9zdG1ha2VkZXBl bmRzPSJib29zdC1idWlsZCBJbWFnZU1hZ2ljayBwa2ctY29uZmlnIGludGx0b29sIgotbWFrZWRl cGVuZHM9IkVUTCBnZXR0ZXh0LWRldmVsIGxpYnhtbCsrLWRldmVsIG1sdC1kZXZlbCBsaWJtYWdp Y2stZGV2ZWwKK21ha2VkZXBlbmRzPSJFVEwgZ2V0dGV4dC1kZXZlbCBsaWJ4bWwrKy1kZXZlbCBt bHQ3LWRldmVsIGxpYm1hZ2ljay1kZXZlbAogIGxpYm1uZy1kZXZlbCBib29zdC1idWlsZCBib29z dC1kZXZlbCBsaWJvcGVuZXhyLWRldmVsIGZmbXBlZy1kZXZlbCIKIGRlcGVuZHM9IkltYWdlTWFn aWNrIgogc2hvcnRfZGVzYz0iQ0xJIDJEIHZlY3RvciBhbmQgdGltZWxpbmUtYmFzZWQgYW5pbWF0 aW9uIHNvZnR3YXJlIgpAQCAtMjAsNyArMjAsNyBAQCBDWFhGTEFHUz0iLXN0ZD1jKysxMSAtREhB VkVfTE9DQUxFX0g9MSIKIAogc3luZmlnLWRldmVsX3BhY2thZ2UoKSB7CiAJZGVwZW5kcz0iJHtz b3VyY2Vwa2d9Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259Ci0JIGxpYm9wZW5leHItZGV2ZWwgbGli eG1sKystZGV2ZWwgbWx0LWRldmVsIgorCSBsaWJvcGVuZXhyLWRldmVsIGxpYnhtbCsrLWRldmVs IG1sdDctZGV2ZWwiCiAJc2hvcnRfZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgogCXBrZ19p bnN0YWxsKCkgewogCQl2bW92ZSB1c3IvYmluL3N5bmZpZy1jb25maWcKCkZyb20gODM4NDMzZjM3 MTY3NjA5Y2RjNTE4ZGVjMzVjOTY5ZDNlNjcyNzQzZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCA1IE1heSAyMDIzIDEy OjU3OjU3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODMvMTEzXSBzeW5maWdzdHVkaW86IHJldmJ1 bXAgZm9yIHN5bmZpZyBtbHQ3CgotLS0KIHNyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9zeW5maWdzdHVkaW8vdGVtcGxhdGUgYi9zcmNwa2dzL3N5bmZpZ3N0 dWRpby90ZW1wbGF0ZQppbmRleCA5MTM0OTE2OWVkMmIuLmFmMWM1YTI5NmVmMCAxMDA2NDQKLS0t IGEvc3JjcGtncy9zeW5maWdzdHVkaW8vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zeW5maWdzdHVk aW8vdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBACiAjIFNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0 aCAnc3luZmlnJyBhbmQgJ0VUTCcKIHBrZ25hbWU9c3luZmlnc3R1ZGlvCiB2ZXJzaW9uPTEuNC40 Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25m aWd1cmVfYXJncz0iLS1kaXNhYmxlLXVwZGF0ZS1taW1lZGIiCiBob3N0bWFrZWRlcGVuZHM9InBr Zy1jb25maWcgaW50bHRvb2wgZ2V0dGV4dCBzeW5maWciCgpGcm9tIDU5MGQ0M2Y0NjNiOGNlNDY0 MzZjYjVlNTA5NTUxMDI4NjAxOTA2YzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIg LTA0MDAKU3ViamVjdDogW1BBVENIIDA4NC8xMTNdIHRnX293dDogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL3RnX293dC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGdf b3d0L3RlbXBsYXRlIGIvc3JjcGtncy90Z19vd3QvdGVtcGxhdGUKaW5kZXggOTdkMTk1ZGRiMzRh Li41NTE2MTRiMjQ5NTYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAndGdfb3d0JwogcGtnbmFtZT10Z19vd3QKIHZlcnNpb249MC4wLjAuMjAyMzAxMDcKLXJl dmlzaW9uPTEKK3JldmlzaW9uPTIKIF9jb21taXQ9NTA5ODczMGI5ZWI2MTczZjBiNTIwNjhmZTI1 NTViN2MxMDE1MTIzYQogX2xpYnl1dl9jb21taXQ9MDA5NTA4NDBkMWM5YmNiYjNlYjZlYmM1YWFj NTc5M2U3MTE2NmM4YgogX2Fic2VpbF9jb21taXQ9OGMwYjk0ZTc5M2E2NjQ5NWUwYjFmMzRhNWVi MjZiZDdkYzY3MmRiMAoKRnJvbSBiNmU4YTY3MDQ0NzcxM2QwM2RiYjJhNTRkMWUwNTQ1Njc4ODg5 NzJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwODUvMTEzXSB0aW1nOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdGlt Zy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZSBiL3NyY3BrZ3MvdGlt Zy90ZW1wbGF0ZQppbmRleCAyYTJhYjc2M2QyZmQuLjhmYjQzMjc1MzVlZiAxMDA2NDQKLS0tIGEv c3JjcGtncy90aW1nL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3RpbWcnCiBwa2duYW1lPXRpbWcKIHZlcnNp b249MS40LjUKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25m aWd1cmVfYXJncz0iLURXSVRIX09QRU5TTElERV9TVVBQT1JUPW9mZiAtV25vLWRldiIKIGhvc3Rt YWtlZGVwZW5kcz0icGtnLWNvbmZpZyBnaXQiCgpGcm9tIDMwM2M5MTYyZThmOGY4MTc3YmQzZWVm NDljMzI2YTA2ZmRmZTQxNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAK U3ViamVjdDogW1BBVENIIDA4Ni8xMTNdIHR2aGVhZGVuZDogcmV2YnVtcCBmb3IgZmZtcGVnNC00 LjQuMwoKLS0tCiBzcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNo YW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3R2aGVhZGVuZC90ZW1wbGF0ZSBiL3NyY3BrZ3MvdHZoZWFkZW5kL3RlbXBsYXRlCmluZGV4 IGU2YjE2ZDdjY2YzYi4uNDZiNTJiNmZiN2Y5IDEwMDY0NAotLS0gYS9zcmNwa2dzL3R2aGVhZGVu ZC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZQpAQCAtMSwxNCArMSwx NCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndHZoZWFkZW5kJwogcGtnbmFtZT10dmhlYWRlbmQK IHZlcnNpb249NC4yLjgKLXJldmlzaW9uPTYKK3JldmlzaW9uPTcKIGJ1aWxkX3N0eWxlPWdudS1j b25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1kdmJzY2FuIC0tZGlzYWJsZS1mZm1w ZWdfc3RhdGljCiAtLWRpc2FibGUtaGRob21lcnVuX3N0YXRpYyAtLWRpc2FibGUtYmludHJheV9j YWNoZSAtLWRpc2FibGUtbGlieDI2NF9zdGF0aWMKIC0tZGlzYWJsZS1saWJ4MjY1X3N0YXRpYyAt LWRpc2FibGUtbGlidnB4X3N0YXRpYyAtLWRpc2FibGUtbGlidGhlb3JhX3N0YXRpYwogLS1kaXNh YmxlLWxpYnZvcmJpc19zdGF0aWMgLS1kaXNhYmxlLWxpYmZka2FhY19zdGF0aWMiCiBob3N0bWFr ZWRlcGVuZHM9ImdldHRleHQgcGtnLWNvbmZpZyBweXRob24gZ2l0IHdoaWNoIgotbWFrZWRlcGVu ZHM9ImF2YWhpLWxpYnMtZGV2ZWwgb3BlbnNzbC1kZXZlbCB6bGliLWRldmVsIGxpYmN1cmwtZGV2 ZWwgZmZtcGVnLWRldmVsIgorbWFrZWRlcGVuZHM9ImF2YWhpLWxpYnMtZGV2ZWwgb3BlbnNzbC1k ZXZlbCB6bGliLWRldmVsIGxpYmN1cmwtZGV2ZWwgZmZtcGVnNC1kZXZlbCIKIHNob3J0X2Rlc2M9 IlRWIHN0cmVhbWluZyBzZXJ2ZXIiCiBtYWludGFpbmVyPSJsZW1taSA8bGVtbWlAbmVyZDJuZXJk Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMy4wLW9ubHkiCgpGcm9tIDNhOWNkMzdlOWJkZjU4NmM5OTk4 NTVjMWZiMjA5NGYxNTY3NTFmN2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0 MDAKU3ViamVjdDogW1BBVENIIDA4Ny8xMTNdIHVucGFwZXI6IHVwZGF0ZSB0byA3LjAuMC4KCi0t LQogc3JjcGtncy91bnBhcGVyL3RlbXBsYXRlIHwgMTYgKysrKysrKystLS0tLS0tLQogMSBmaWxl IGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL3VucGFwZXIvdGVtcGxhdGUgYi9zcmNwa2dzL3VucGFwZXIvdGVtcGxhdGUKaW5kZXgg MzhlZDQ3YTU4NDAxLi4xZmY5MTBlNzIyYWYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdW5wYXBlci90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3VucGFwZXIvdGVtcGxhdGUKQEAgLTEsMTMgKzEsMTMgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3VucGFwZXInCiBwa2duYW1lPXVucGFwZXIKLXZlcnNpb249 Ni4xCi1yZXZpc2lvbj0zCi1idWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCit2ZXJzaW9uPTcuMC4w CityZXZpc2lvbj0xCitidWlsZF9zdHlsZT1tZXNvbgoraG9zdG1ha2VkZXBlbmRzPSJwa2ctY29u ZmlnIG1lc29uIGxpYnhzbHQiCittYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIHB5dGhvbjMtU3Bo aW54Igorc2hvcnRfZGVzYz0iUG9zdC1wcm9jZXNzaW5nIHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRz IG9mIHBhcGVyIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIK LWhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBsaWJ4c2x0IgotbWFrZWRlcGVuZHM9ImZmbXBl Zy1kZXZlbCIKLWxpY2Vuc2U9IkdQTC0yIgorbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKIGhv bWVwYWdlPSJodHRwczovL3d3dy5mbGFtZWV5ZXMuZXUvcHJvamVjdHMvdW5wYXBlciIKLXNob3J0 X2Rlc2M9IkEgcG9zdC1wcm9jZXNzaW5nIHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVy IgogZGlzdGZpbGVzPSJodHRwczovL3d3dy5mbGFtZWV5ZXMuZXUvZmlsZXMvJHtwa2duYW1lfS0k e3ZlcnNpb259LnRhci54eiIKLWNoZWNrc3VtPTIzN2M4NGY1ZGE1NDRiM2Y3NzA5ODI3ZjlmMTJj MzdjMzQ2Y2RmMDI5YjExMjhmYjQ2MzNmOWJhZmE1Y2I5MzAKK2NoZWNrc3VtPTI1NzVmYmJmMjZj MjI3MTlkMWNiODgyYjU5NjAyYzk5MDBjN2Y3NDcxMThhYzEzMDg4M2Y2MzQxOWJlNDZhODAKCkZy b20gNjljNmIyMzg5NjlmMGI1NGQzYzk2N2FkOTBkMzA1NmUzMjc5ZTZiMCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg4LzExM10gdmJhLW06 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy92YmEtbS90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvdmJhLW0vdGVtcGxhdGUgYi9zcmNwa2dzL3ZiYS1tL3RlbXBsYXRlCmlu ZGV4IGJhMTUzZTBiNThjYS4uYWE2MDkzNjQ1ZTk3IDEwMDY0NAotLS0gYS9zcmNwa2dzL3ZiYS1t L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdmJhLW0vdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBACiBw a2duYW1lPXZiYS1tCiByZXZlcnRzPTEyOTJfMgogdmVyc2lvbj0yLjEuNQotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREVOQUJMRV9H VEs9VFJVRSAtREVOQUJMRV9GRk1QRUc9VFJVRSAtREVOQUJMRV9MSU5LPVRSVUUgLURDTUFLRV9C VUlMRF9UWVBFPVJlbGVhc2UiCiBob3N0bWFrZWRlcGVuZHM9ImdldHRleHQgcGtnLWNvbmZpZyB1 bnppcCB6aXAgeWFzbSB3eFdpZGdldHMtZ3RrMy1kZXZlbCIKCkZyb20gNWMyMDMyZmQ3YTMyYjlm MDMyZTVkNTBkNTc0ZjkzYjQ3Y2RlODdjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1 MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg5LzExM10gdmljZTogcmV2YnVtcCBmb3IgZmZtcGVn NC00LjQuMwoKLS0tCiBzcmNwa2dzL3ZpY2UvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFu Z2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy92aWNlL3RlbXBsYXRlIGIvc3JjcGtncy92aWNlL3RlbXBsYXRlCmluZGV4IDA5MjQ3NjdjZmNm Yi4uNTk4MWU0NTE0OWQwIDEwMDY0NAotLS0gYS9zcmNwa2dzL3ZpY2UvdGVtcGxhdGUKKysrIGIv c3JjcGtncy92aWNlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAndmljZScKIHBrZ25hbWU9dmljZQogdmVyc2lvbj0zLjUKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSIKIAkkKHZvcHRf ZW5hYmxlIHNkbDIgc2RsdWkyKQpAQCAtMjgsNyArMjgsNyBAQCBtYWtlZGVwZW5kcz0iCiAJJCh2 b3B0X2lmIGd0azMgZ3RrKzMtZGV2ZWwpCiAJJCh2b3B0X2lmIGd0azMgcHVsc2VhdWRpby1kZXZl bCkKIAkkKHZvcHRfaWYgZ3RrMyBwYW5nby1kZXZlbCkKLQkkKHZvcHRfaWYgZmZtcGVnIGZmbXBl Zy1kZXZlbCkiCisJJCh2b3B0X2lmIGZmbXBlZyBmZm1wZWc0LWRldmVsKSIKIHNob3J0X2Rlc2M9 IkVtdWxhdG9yIGZvciBDNjQsIEMxMjgsIENCTS1JSSwgUEVULCBWSUMyMCwgUGx1czQgYW5kIEMx NiIKIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNl PSJHUEwtMi4wLW9yLWxhdGVyIgoKRnJvbSBjMjg5NTMwMjg0ZWIyMDEyNjFiNjM0NjhjY2Y4YmI4 NGFiODEzY2E4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwOTAvMTEzXSB3YXlwaXBlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0 ZSBiL3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZQppbmRleCA1YzQxNjE5MDAwNjAuLjFhNDZmZTI3 ZjdkOCAxMDA2NDQKLS0tIGEvc3JjcGtncy93YXlwaXBlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv d2F5cGlwZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3dh eXBpcGUnCiBwa2duYW1lPXdheXBpcGUKIHZlcnNpb249MC44LjQKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiAjIGx0byBpcyBvZmYgYmVjYXVzZSBpdCBjYXVzZXMg bGlua2luZyBlcnJvcnMgaW4gYXJtdjZsIGFuZCBhcm12N2wgKGR1ZSB0byBORU9OKQogY29uZmln dXJlX2FyZ3M9Ii1Ed2Vycm9yPWZhbHNlIC1Ed2l0aF9kbWFidWY9ZW5hYmxlZCAtRHdpdGhfbHo0 PWVuYWJsZWQKCkZyb20gYTUyYWMxNDZlYjdmNGUwMGE3MTJlNjExMGEwMWVhZDdlMzVmNjAyZiBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDkx LzExM10gd2YtcmVjb3JkZXI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy93 Zi1yZWNvcmRlci90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2YtcmVjb3JkZXIvdGVtcGxh dGUgYi9zcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBsYXRlCmluZGV4IGUyNzhlYjAwMTYwMC4uNWQw MTRhNWYyOGFmIDEwMDY0NAotLS0gYS9zcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mvd2YtcmVjb3JkZXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICd3Zi1yZWNvcmRlcicKIHBrZ25hbWU9d2YtcmVjb3JkZXIKIHZlcnNpb249MC4z LjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRl cGVuZHM9InBrZy1jb25maWcgc2Nkb2Mgd2F5bGFuZC1kZXZlbCIKIG1ha2VkZXBlbmRzPSJ3YXls YW5kLXByb3RvY29scyB3YXlsYW5kLWRldmVsIGZmbXBlZy1kZXZlbCB4MjY0LWRldmVsCgpGcm9t IGM5Y2FmNmZjYzY2ZmMzZmE0MjRhZmFiMjYxNjc2ZDYzYjVjNzY0NTQgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5Mi8xMTNdIHhwcmE6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy94cHJhL3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy94cHJhL3RlbXBsYXRlIGIvc3JjcGtncy94cHJhL3RlbXBsYXRlCmluZGV4IDBh NjNmZGI2Yzc0My4uZDVhY2MxOTgxYzVmIDEwMDY0NAotLS0gYS9zcmNwa2dzL3hwcmEvdGVtcGxh dGUKKysrIGIvc3JjcGtncy94cHJhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAneHByYScKIHBrZ25hbWU9eHByYQogdmVyc2lvbj00LjQuNgotcmV2aXNpb249 MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9cHl0aG9uMy1tb2R1bGUKIG1ha2VfYnVpbGRfYXJn cz0iLS13aXRob3V0LWN1ZGFfa2VybmVscyAtLXdpdGhvdXQtY3VkYV9yZWJ1aWxkIgogbWFrZV9p bnN0YWxsX2FyZ3M9IiQodm9wdF93aXRoIGRvY3MpICR7bWFrZV9idWlsZF9hcmdzfSIKCkZyb20g NzM4MGU3ZjcxOTVlMDIwZDc3MDY0MmRkNzc4NThiZmFhNWUxOWM2YiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAzMSBN YXIgMjAyMyAwOTowNzo0MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDkzLzExM10gbnYtY29kZWMt aGVhZGVyczogdXBkYXRlIHRvIDEyLjAuMTYuMAoKLS0tCiBzcmNwa2dzL252LWNvZGVjLWhlYWRl cnMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBs YXRlIGIvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlCmluZGV4IDNkNDIyYTYxZTQ4 OS4uMjUxZTA1N2Y4MjZmIDEwMDY0NAotLS0gYS9zcmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlCkBAIC0xLDYgKzEs NiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbnYtY29kZWMtaGVhZGVycycKIHBrZ25hbWU9bnYt Y29kZWMtaGVhZGVycwotdmVyc2lvbj0xMS4xLjUuMQordmVyc2lvbj0xMi4wLjE2LjAKIHJldmlz aW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogc2hvcnRfZGVzYz0iRkZtcGVnIHZlcnNp b24gb2YgaGVhZGVycyByZXF1aXJlZCB0byBpbnRlcmZhY2Ugd2l0aCBOdmlkaWFzIGNvZGVjIEFQ SXMiCkBAIC04LDcgKzgsNyBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51 eC5vcmc+IgogbGljZW5zZT0iTUlUIgogaG9tZXBhZ2U9Imh0dHA6Ly9naXQudmlkZW9sYW4ub3Jn Lz9wPWZmbXBlZy9udi1jb2RlYy1oZWFkZXJzLmdpdCIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRo dWIuY29tL0ZGbXBlZy9udi1jb2RlYy1oZWFkZXJzL2FyY2hpdmUvbiR7dmVyc2lvbn0udGFyLmd6 IgotY2hlY2tzdW09ZDA5NWZiZDU2YWE5Mzc3MjQ3MWEzMjNiZTBlYmU2NTUwNGEwZjQzZjA2Yzc2 YTMwYjZkMjVkYTc3YjA2YWU5YworY2hlY2tzdW09MmExNTMzYjY1ZjU1ZjlkYTUyOTU2ZmFmMDYy N2VkM2I3NDg2OGFjMGM3ZjI2OTk5MGVkZDIxMzY5MTEzYjQ4ZgogCiBwb3N0X2luc3RhbGwoKSB7 CiAJc2VkIC1uICc0LDI1cCcgaW5jbHVkZS9mZm52Y29kZWMvbnZFbmNvZGVBUEkuaCA+IExJQ0VO U0UKCkZyb20gMWQwZDEzMjUzNzBiZDUzY2IzNTg1ZDhhOWFkZDQ5ODM5ODM5M2M4MiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog RnJpLCAzMSBNYXIgMjAyMyAwOTowODo0MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk0LzExM10g b3BlbmltYWdlZGVub2lzZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL29w ZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5pbWFnZWRlbm9p c2UvdGVtcGxhdGUgYi9zcmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUKaW5kZXggZGI1 Y2NkYjA1NWNjLi5jYjkwMDQ1YWZiNjMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3BlbmltYWdlZGVu b2lzZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVuaW1hZ2VkZW5vaXNlJwogcGtn bmFtZT1vcGVuaW1hZ2VkZW5vaXNlCiB2ZXJzaW9uPTEuNC4zCi1yZXZpc2lvbj0xCityZXZpc2lv bj0yCiBhcmNocz0ieDg2XzY0KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9 ImlzcGMgcHl0aG9uMyIKCkZyb20gYjJhOWNiZTMzNzQ3MjdmNjhjYmRlODc4YTAxYWRiZGE3ODJm YmJkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogTW9uLCAzIEFwciAyMDIzIDIzOjMxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwOTUvMTEzXSBzaG90Y3V0OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mv c2hvdGN1dC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2hvdGN1dC90ZW1wbGF0ZSBiL3Ny Y3BrZ3Mvc2hvdGN1dC90ZW1wbGF0ZQppbmRleCA3ZDJhZjdiMDQ3MGIuLmM0MTZjOTA2ZmY3MyAx MDA2NDQKLS0tIGEvc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2hvdGN1 dC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3Nob3RjdXQn CiBwa2duYW1lPXNob3RjdXQKIHZlcnNpb249MjMuMDUuMTQKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURTSE9UQ1VUX1ZFUlNJT049 JHt2ZXJzaW9ufSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDYtdG9vbHMtZGV2ZWwi CgpGcm9tIGIzZjdkZTE3ZTJmOWZhMGY2ODhiODc0Mjg0MGEzYWIxYTY3YThmOGYgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IE1v biwgMyBBcHIgMjAyMyAyMzozMzozMCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk2LzExM10gc2hp Ym9rZW4yOiByZXZidW1wIGZvciBxdDUtNS4xNS44CgotLS0KIHNyY3BrZ3Mvc2hpYm9rZW4yL3Bh dGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggfCAxICsKIHNyY3BrZ3Mvc2hp Ym9rZW4yL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCiAy IGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1v ZGUgMTIwMDAwIHNyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1i eXBhc3MucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL2ltcG9y dGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoIGIvc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9p bXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRl eCAwMDAwMDAwMDAwMDAuLmVmY2YzMjQ5YmQ4OAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mv c2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKQEAgLTAs MCArMSBAQAorLi4vLi4vcHl0aG9uMy1weXNpZGUyL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVy eS1ieXBhc3MucGF0Y2gKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9z cmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlCmlu ZGV4IDA4NGVjYzNiYTFlMS4uMmEyMTk5ODk5N2ViIDEwMDY0NAotLS0gYS9zcmNwa2dzL3NoaWJv a2VuMi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZQpAQCAtMSw3ICsx LDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3NoaWJva2VuMicKIHBrZ25hbWU9c2hpYm9rZW4y CiB2ZXJzaW9uPTUuMTUuNwotcmV2aXNpb249MQorcmV2aXNpb249MgogX3BrZ25hbWU9InB5c2lk ZS1zZXR1cC1vcGVuc291cmNlLXNyYy0ke3ZlcnNpb259IgogYnVpbGRfd3Jrc3JjPSJzb3VyY2Vz L3NoaWJva2VuMiIKIGJ1aWxkX3N0eWxlPWNtYWtlCgpGcm9tIDNlMDcwMzgyNjcwYjBjOTZiNzI4 Y2I4MzNlMDE5MmFiYjQ2MzYzY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMyBBcHIgMjAyMyAyMzozMzo1MyAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDk3LzExM10gcHl0aG9uMy1weXNpZGUyOiB1cGRhdGUgdG8gNS4x NS44CgotLS0KIC4uLi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoICAg ICAgfCAxNSArKysrKysrKysrKysrKysKIHNyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3RlbXBsYXRl ICAgICAgICAgICAgICAgICAgfCAgOSArKysrKy0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjAgaW5z ZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3B5 dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFj aGluZXJ5LWJ5cGFzcy5wYXRjaCBiL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3BhdGNoZXMvaW1w b3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi42NGM0Mjk1ODQ3NzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3B5 dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCkBA IC0wLDAgKzEsMTUgQEAKK1VzaW5nIHRoaXMgcHJldmVudHMgYW4gZXJyb3IgYXJvdW5kIGxpbmUg MjIwIGJlbG93IGl0LgorIkF0dHJpYnV0ZUVycm9yOiBtb2R1bGUgJ2ltcG9ydGxpYicgaGFzIG5v IGF0dHJpYnV0ZSAnbWFjaGluZXJ5JyIKK1RoZSBvbGQgYmFja3VwIGxvZ2ljIGlzIGluIHBsYWNl IGFuZCBjb21waWxlcyB3aXRob3V0IGlzc3Vlcy4KKy0tLSBhL3NvdXJjZXMvc2hpYm9rZW4yL2xp YnNoaWJva2VuL2VtYmVkL3NpZ25hdHVyZV9ib290c3RyYXAucHkJMjAyMy0wNC0wMiAyMzowOToz NC42ODg5MTI0MDIgLTA0MDAKKysrKyBiL3NvdXJjZXMvc2hpYm9rZW4yL2xpYnNoaWJva2VuL2Vt YmVkL3NpZ25hdHVyZV9ib290c3RyYXAucHkJMjAyMy0wNC0wMiAyMzoxMDowMy4zOTU1Mjk1ODIg LTA0MDAKK0BAIC0xNzAsOSArMTcwLDYgQEAKKworICAgICAjICd6aXBzdHJpbmdfc2VxdWVuY2Un IGNvbWVzIGZyb20gc2lnbmF0dXJlLmNwcAorICAgICB6aXBieXRlcyA9IGJhc2U2NC5iNjRkZWNv ZGUoJycuam9pbih6aXBzdHJpbmdfc2VxdWVuY2UpKQorLSAgICBpZiBzeXMudmVyc2lvbl9pbmZv WzBdID49IDM6CistICAgICAgICB2emlwID0gemlwZmlsZS5aaXBGaWxlKGlvLkJ5dGVzSU8oemlw Ynl0ZXMpKQorLSAgICAgICAgcmV0dXJuIHN5cy5tZXRhX3BhdGgsIEVtYmVkZGFibGVaaXBJbXBv cnRlcih2emlwKQorCisgICAgICMgT2xkIHZlcnNpb24gZm9yIFB5dGhvbiAyLjcsIG9ubHkuCisg ICAgIGltcG9ydCBvcwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxh dGUgYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZQppbmRleCA1MGU2ZmYyNjBkM2Iu LmI1MGU2MmJkMjE1ZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxhdGUKQEAgLTEsMTEgKzEsMTIg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3B5dGhvbjMtcHlzaWRlMicKIHBrZ25hbWU9cHl0aG9u My1weXNpZGUyCi12ZXJzaW9uPTUuMTUuNQotcmV2aXNpb249MgordmVyc2lvbj01LjE1LjgKK3Jl dmlzaW9uPTEKIF9wa2duYW1lPSJweXNpZGUtc2V0dXAtb3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9u fSIKIGJ1aWxkX3dya3NyYz0ic291cmNlcy9weXNpZGUyIgogYnVpbGRfc3R5bGU9Y21ha2UKLWNv bmZpZ3VyZV9hcmdzPSItRFBZVEhPTl9FWEVDVVRBQkxFPS91c3IvYmluL3B5dGhvbiIKK2NvbmZp Z3VyZV9hcmdzPSItRFBZVEhPTl9FWEVDVVRBQkxFPS91c3IvYmluL3B5dGhvbiAtRENNQUtFX0JV SUxEX1RZUEU9Tm9uZQorIC1EQlVJTERfVEVTVFM9T0ZGIgogaG9zdG1ha2VkZXBlbmRzPSJjbWFr ZSBweXRob24zIHNoaWJva2VuMiIKIG1ha2VkZXBlbmRzPSJweXRob24zLWRldmVsIGxpYnNoaWJv a2VuMi1kZXZlbCBxdDUtZGV2ZWwKICBxdDUtbXVsdGltZWRpYS1kZXZlbCBxdDUtdG9vbHMtZGV2 ZWwgcXQ1LXBsdWdpbi1teXNxbCBxdDUtcGx1Z2luLW9kYmMKQEAgLTIzLDcgKzI0LDcgQEAgbWFp bnRhaW5lcj0ieW9waXRvIDxwaWVycmUuYm91cmdpbkBmcmVlLmZyPiIKIGxpY2Vuc2U9IkxHUEwt My4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vd2lraS5xdC5pby9RdF9mb3JfUHl0aG9u IgogZGlzdGZpbGVzPSJodHRwczovL2Rvd25sb2FkLnF0LmlvL29mZmljaWFsX3JlbGVhc2VzL1F0 Rm9yUHl0aG9uL3B5c2lkZTIvUHlTaWRlMi0ke3ZlcnNpb259LXNyYy8ke19wa2duYW1lfS50YXIu eHoiCi1jaGVja3N1bT0zOTIwYTRmYjM1MzMwMDI2MGM5YmM0NmZmNzBmMWZiOTc1YzVlN2VmYTIy ZTlkNTEyMjI1ODg5MjhjZTE5YjMzCitjaGVja3N1bT0yMzQzNjMwMmM4ZGViNWI0Y2JjNzY5YjIw NWQwOTYwNGUzOGJhODNiNDA3MDhlZmNjYjdiZDhjOWFmNmY2YjVkCiAKIGJ1aWxkX29wdGlvbnM9 IndlYmVuZ2luZSIKIGRlc2Nfb3B0aW9uX3dlYmVuZ2luZT0iQnVpbGQgUXQ1IFdlYkVuZ2luZSBi aW5kaW5ncyIKCkZyb20gOWYwODE5ODk5MTY1MzA2NDJjMTMyYjVlOTA2ZTJiNzg5NzZmMzc0MCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCA0IEFwciAyMDIzIDExOjE0OjM1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTgv MTEzXSBrb25xdWVyb3I6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9rb25x dWVyb3IvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9rb25xdWVyb3IvdGVtcGxhdGUg Yi9zcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZQppbmRleCBkOGQwZTczYTc4YWIuLmM1YmRiYTYw MWQzYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9rb25xdWVyb3IvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9rb25xdWVyb3IvdGVtcGxhdGUKQEAgLTEsMTEgKzEsMTEgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ2tvbnF1ZXJvcicKIHBrZ25hbWU9a29ucXVlcm9yCiB2ZXJzaW9uPTIzLjA0LjAKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURE RVNLVE9QVE9KU09OX0VYRUNVVEFCTEU9L3Vzci9iaW4vZGVza3RvcHRvanNvbiIKIGhvc3RtYWtl ZGVwZW5kcz0iZXh0cmEtY21ha2UtbW9kdWxlcyBweXRob24zIHF0NS1ob3N0LXRvb2xzIHF0NS1x bWFrZSBrZG9jdG9vbHMKLWtjb3JlYWRkb25zIGtjb25maWcgZ2V0dGV4dCIKKyBrY29yZWFkZG9u cyBrY29uZmlnIGdldHRleHQiCiBtYWtlZGVwZW5kcz0icXQ1LWRldmVsIHF0NS13ZWJlbmdpbmUt ZGV2ZWwgcXQ1LWRlY2xhcmF0aXZlLWRldmVsCiAgcXQ1LXdlYmNoYW5uZWwtZGV2ZWwgcXQ1LWxv Y2F0aW9uLWRldmVsIGtjbXV0aWxzLWRldmVsIGtkZWxpYnM0c3VwcG9ydC1kZXZlbAogIGthcmNo aXZlLWRldmVsIGtodG1sLWRldmVsIGtkZXN1LWRldmVsIGthY3Rpdml0aWVzNS1kZXZlbCIKCkZy b20gOGE2ZGVkNDk2ZjM0MzlmZTI1OGM0Y2RkMmU0NTcxNTI5ZjRiYzFiZiBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCA0 IEFwciAyMDIzIDExOjE0OjU4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTkvMTEzXSBxdDUtc3Bl ZWNoOiByZXZidW1wIGZvciBxdDUtNS4xNS44CgotLS0KIHNyY3BrZ3MvcXQ1LXNwZWVjaC90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXNwZWVjaC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1 LXNwZWVjaC90ZW1wbGF0ZQppbmRleCAzZWNkMTBkNTA2NTAuLjJkN2Q0ZDRkMjQ1MyAxMDA2NDQK LS0tIGEvc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1LXNwZWVj aC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0NS1zcGVl Y2gnCiBwa2duYW1lPXF0NS1zcGVlY2gKIHZlcnNpb249NS4xNS43Ci1yZXZpc2lvbj0yCityZXZp c2lvbj0zCiBfY29tbWl0PWQzMmY0YTQ3OWQzOGExMWY1NDc1OTgwMDRiOTc1ZjQzNTY0MjRhMTYK IGJ1aWxkX3N0eWxlPXFtYWtlCiBjb25maWd1cmVfYXJncz0iLS0gLWZsaXRlIC1mbGl0ZS1hbHNh IC1zcGVlY2hkIgoKRnJvbSA0N2Y0YmE2NmE5OGI2YTcxZmM3ZDVlM2Q5NzE0OTUyMjY3YjJiYTQ4 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBUdWUsIDQgQXByIDIwMjMgMTg6Mzg6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDEw MC8xMTNdIHF0NS1zdHlsZXBsdWdpbnM6IHJldmJ1bXAgZm9yIHF0NS01LjE1LjgKCi0tLQogc3Jj cGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtc3R5 bGVwbHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlCmlu ZGV4IDk2ZWQ5N2QxMmNkMi4uMzBkOTM2NjBhMmE0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS1z dHlsZXBsdWdpbnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1LXN0eWxlcGx1Z2lu cycKIHBrZ25hbWU9cXQ1LXN0eWxlcGx1Z2lucwogdmVyc2lvbj01LjAuMAotcmV2aXNpb249MjAK K3JldmlzaW9uPTIxCiBfZ2l0cmV2PTMzNWRiZWNlMTAzZTJjYmY2YzdjZjgxOWFiNjY3MmMyOTU2 YjE3YjMKIGJ1aWxkX3N0eWxlPXFtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1 LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIgoKRnJvbSA1Y2Q0OGVjZTQ3OTc5NTg1ODVkN2QwNWNjYzU3 MGE2OGRiNGQyMzk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDcgTWF5IDIwMjMgMjA6MTQ6MTQgLTA0MDAKU3ViamVj dDogW1BBVENIIDEwMS8xMTNdIG1sdDc6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy9nc3QtbGliYXYvdGVtcGxhdGUgfCAyICstCiBzcmNwa2dzL21sdDcvdGVtcGxhdGUgICAg ICB8IDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlIGIvc3JjcGtncy9nc3Qt bGliYXYvdGVtcGxhdGUKaW5kZXggMDRjMzliZmYxNDg5Li44YzcyZmMzZTk3ZWUgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LWxpYmF2L3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LWxpYmF2Jwog cGtnbmFtZT1nc3QtbGliYXYKIHZlcnNpb249MS4yMi4yCi1yZXZpc2lvbj0yCityZXZpc2lvbj0x CiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHlhc20iCiBt YWtlZGVwZW5kcz0ib3JjLWRldmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsIGZmbXBlZy1kZXZl bCIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWx0Ny90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWx0Ny90ZW1w bGF0ZQppbmRleCA5ZmI3ZjYwZDY5MmUuLmNjYTBlYjY4Y2ZjMyAxMDA2NDQKLS0tIGEvc3JjcGtn cy9tbHQ3L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWx0Ny90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21sdDcnCiBwa2duYW1lPW1sdDcKIHZlcnNpb249Ny4x NC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJl X2FyZ3M9Ii1EU1dJR19QWVRIT049T04iCiBob3N0bWFrZWRlcGVuZHM9ImRveHlnZW4gcGtnLWNv bmZpZyBsYWRzcGEtc2RrIHN3aWcgcHl0aG9uMyB3aGljaAoKRnJvbSBmMjVlZWZlNzBmZmVmZTg3 NTA5MmVhYjc3NDQ4NDRiMGY1ZTdiMTIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDcgTWF5IDIwMjMgMjA6MTU6MDMg LTA0MDAKU3ViamVjdDogW1BBVENIIDEwMi8xMTNdIHF0Ni13ZWJlbmdpbmU6IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlIHwgMyArKy0K IDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvdGVtcGxhdGUgYi9zcmNwa2dzL3F0Ni13ZWJlbmdp bmUvdGVtcGxhdGUKaW5kZXggNGUyMmNiNmU4ODYzLi40Mzc3OGI1NjhkM2YgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0Ni13ZWJlbmdp bmUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDYtd2Vi ZW5naW5lJwogcGtnbmFtZT1xdDYtd2ViZW5naW5lCiB2ZXJzaW9uPTYuNS4wCi1yZXZpc2lvbj0x CityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9IgogIC1EUVRf RkVBVFVSRV93ZWJlbmdpbmVfc3lzdGVtX2ZmbXBlZz1PTgpAQCAtMTQ1LDYgKzE0NSw3IEBAIHBy ZV9pbnN0YWxsKCkgewogfQogCiBwb3N0X2luc3RhbGwoKSB7CisJdmxpY2Vuc2UgTElDRU5TRVMv QlNELTMtQ2xhdXNlLnR4dAogCWxvY2FsIF9maWxlCiAJZmluZCAiJHtERVNURElSfSIvdXNyL2xp Yi9xdDYvZXhhbXBsZXMgXAogCQktcGF0aCAnKi9saWIvcXQ2LyoqL2xpYi9xdDYvKicgLXR5cGUg ZiB8CgpGcm9tIDQ4MTFiNDVmYWM5MDAxZGEzZGQzYThiNDc5YmIwNTQ5OGZiZTlkOTYgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFN1biwgNyBNYXkgMjAyMyAyMDoxNToyOSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTAzLzExM10g dHJhY2tlci1taW5lcnM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy90cmFj a2VyLW1pbmVycy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdHJhY2tlci1taW5lcnMvdGVt cGxhdGUgYi9zcmNwa2dzL3RyYWNrZXItbWluZXJzL3RlbXBsYXRlCmluZGV4IDhjMDA1ZDY5N2Zh NC4uYTZlNWFhNTc3NzAyIDEwMDY0NAotLS0gYS9zcmNwa2dzL3RyYWNrZXItbWluZXJzL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvdHJhY2tlci1taW5lcnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0cmFja2VyLW1pbmVycycKIHBrZ25hbWU9dHJhY2tlci1t aW5lcnMKIHZlcnNpb249My41LjAKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxl PW1lc29uCiBidWlsZF9oZWxwZXI9cWVtdQogIyBtaXNzaW5nIGxpYmdyc3MgZm9yIG1pbmVyX3Jz cwoKRnJvbSAxNjMwZDhhMmViZDBkM2JjNTI5M2UxNmEzNDQ3NDRjNTJlMzYwNjg1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBT dW4sIDcgTWF5IDIwMjMgMjA6MjA6NTggLTA0MDAKU3ViamVjdDogW1BBVENIIDEwNC8xMTNdIG1w ZDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21wZC90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbXBkL3RlbXBsYXRlIGIvc3JjcGtncy9tcGQvdGVtcGxhdGUKaW5kZXgg OWRiZDRjOTM1YWNjLi45ZjA1OGI2MmRmMmYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbXBkL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvbXBkL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnbXBkJwogcGtnbmFtZT1tcGQKIHZlcnNpb249MC4yMy4xMwotcmV2aXNpb249 MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRG9wdXM9 ZW5hYmxlZCAtRG1pa21vZD1lbmFibGVkIC1EbmVpZ2hib3I9dHJ1ZQogIC1Ec291bmRjbG91ZD1l bmFibGVkIC1EcGlwZT10cnVlIC1EdHdvbGFtZT1lbmFibGVkIC1EYnppcDI9ZW5hYmxlZAoKRnJv bSA1ZjQ5ZTE2YTZhZmFjOTI4NDhiYmU3NDc0Y2IxMzg3MWM0MzJjM2ZmIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUaHUsIDEx IE1heSAyMDIzIDE0OjA1OjE0IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDUvMTEzXSBvcGVubXc6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9vcGVubXcvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL29wZW5tdy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRl CmluZGV4IGUzNzcxYzdhYWYxYS4uM2NiZjIwYjA2NTc3IDEwMDY0NAotLS0gYS9zcmNwa2dzL29w ZW5tdy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW5tdy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5tdycKIHBrZ25hbWU9b3Blbm13CiB2ZXJzaW9u PTAuNDcuMAotcmV2aXNpb249NQorcmV2aXNpb249NgogYnVpbGRfc3R5bGU9Y21ha2UKIF9yZWNh c3RfY29tbWl0PWU3NWFkZjg2ZjkxZWIzMDgyMjIwMDg1ZTQyZGRhNjI2NzlmOWEzZWEKIF9idWxs ZXRfdGFnPTMuMTcKCkZyb20gYjIxMDhjZmYwMWNjZTFkNTAwYzlkODI0NmQ0ZDk3YzllMmE2MTM5 NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogU3VuLCAyMSBNYXkgMjAyMyAxMjo0NDoxMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MTA2LzExM10gZWxlY3Ryb24yNDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2VsZWN0cm9uMjQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMjQvdGVtcGxh dGUgYi9zcmNwa2dzL2VsZWN0cm9uMjQvdGVtcGxhdGUKaW5kZXggYmRhYTU2YWRjOGE2Li5mZjNk NWUzZWYzODEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24yNC90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2VsZWN0cm9uMjQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdlbGVjdHJvbjI0JwogcGtnbmFtZT1lbGVjdHJvbjI0CiB2ZXJzaW9uPTI0LjMuMAot cmV2aXNpb249MQorcmV2aXNpb249MgogX25vZGV2ZXI9MTguMTQuMAogX2Nocm9taXVtdmVyPTEx Mi4wLjU2MTUuMTY1CiBhcmNocz0ieDg2XzY0KiBhYXJjaDY0KiIKCkZyb20gODY5NDQ3MzEwMmIx YzVjMDMwZWNiZDRkZTFiNTA1ZmQzYTgwN2VkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU2F0LCAzIEp1biAyMDIzIDA4OjIw OjIyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDcvMTEzXSBndGs0OiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3RrNC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3Rr NC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3RrNC90ZW1wbGF0ZQppbmRleCBiMzE4YjdiYWUxZGQuLmUz YmRlNGE1MGU1NCAxMDA2NDQKLS0tIGEvc3JjcGtncy9ndGs0L3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvZ3RrNC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2d0 azQnCiBwa2duYW1lPWd0azQKIHZlcnNpb249NC4xMC40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1tZXNvbgogYnVpbGRfaGVscGVyPSJnaXIiCiBjb25maWd1cmVfYXJncz0i LURtYW4tcGFnZXM9dHJ1ZSAtRGd0a19kb2M9dHJ1ZSAtRGJ1aWxkLXRlc3RzPWZhbHNlCgpGcm9t IDNlYzBhZDEyZjFkMDA4NjE3MzQzY2Y3MWQyYmEwY2FkZTY4OTFkOWEgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgNCBK dW4gMjAyMyAxMToyNTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTA4LzExM10gZWxlY3Ryb24x OTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUgYi9zcmNwa2dzL2VsZWN0 cm9uMTkvdGVtcGxhdGUKaW5kZXggMzJjZTMwMWU3MzBjLi5hYjdmMzA4ZjVlOGEgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTkv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdlbGVjdHJvbjE5 JwogcGtnbmFtZT1lbGVjdHJvbjE5CiB2ZXJzaW9uPTE5LjAuOAotcmV2aXNpb249MworcmV2aXNp b249NAogX25vZGV2ZXI9MTYuMTQuMgogX2Nocm9taXVtdmVyPTEwMi4wLjUwMDUuMTI1CiBhcmNo cz0ieDg2XzY0KiBhYXJjaDY0KiBwcGM2NGxlKiIKCkZyb20gYWI3OGM0NjFjYTc2Y2I3OTQ4NmE4 MWI1M2U4MDk2MDhiNmMwN2M2MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA0IEp1biAyMDIzIDExOjI4OjI2IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAxMDkvMTEzXSBzaXJpbDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL3NpcmlsL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zaXJpbC90ZW1w bGF0ZSBiL3NyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUKaW5kZXggODQzMzJmNzlkMDYwLi42Mjc1MGRk MjQ3NTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9z aXJpbC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3Npcmls JwogcGtnbmFtZT1zaXJpbAogdmVyc2lvbj0wLjkuMTIKLXJldmlzaW9uPTEwCityZXZpc2lvbj0x MQogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmln IGludGx0b29sIGF1dG9jb25mIGF1dG9tYWtlIGdldHRleHQtZGV2ZWwiCiBtYWtlZGVwZW5kcz0i ZmZ0dy1kZXZlbCBsaWJjb25maWctZGV2ZWwgbGlib3BlbmN2LWRldmVsIGxpYmZmbXMyLWRldmVs CgpGcm9tIDAxMTE3NjVlMDM5MDBmNDY5OTMyZTVjYzEzZjY5ZTk3ODU1MDRkNWEgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1 biwgNCBKdW4gMjAyMyAxMToyOTowOCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTEwLzExM10gdGVs ZWdyYW0tZGVza3RvcDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3RlbGVn cmFtLWRlc2t0b3AvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3RlbGVncmFtLWRlc2t0b3Av dGVtcGxhdGUgYi9zcmNwa2dzL3RlbGVncmFtLWRlc2t0b3AvdGVtcGxhdGUKaW5kZXggZjExNGIy MzQxZGM1Li45ZGI5ZjgwYzFhNTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3Rv cC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3RlbGVncmFtLWRlc2t0b3AvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0ZWxlZ3JhbS1kZXNrdG9wJwogcGtnbmFt ZT10ZWxlZ3JhbS1kZXNrdG9wCiB2ZXJzaW9uPTQuOC4xCi1yZXZpc2lvbj0zCityZXZpc2lvbj00 CiBidWlsZF9zdHlsZT1jbWFrZQogYnVpbGRfaGVscGVyPSJxZW11IgogY29uZmlndXJlX2FyZ3M9 Ii1EVERFU0tUT1BfQVBJX0lEPTIwOTIzNQoKRnJvbSBhZGMzMzM4MDE4ZDIzYzhkZmM4Y2FjOTVk NzQyNTI3NDFiM2UwZTEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBTYXQsIDEwIEp1biAyMDIzIDAwOjQwOjM5IC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAxMTEvMTEzXSBmcmVlY2FkOiByZXZidW1wIGZvciBxdDUtd2ViZW5naW5l LTUuMTUuMTMKCi0tLQogc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9mcmVlY2FkL3RlbXBsYXRlIGIvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlCmluZGV4IGE0YTNm NWY3NmIyOS4uODYwOGQxNjcwYzg3IDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnZnJlZWNhZCcKIHBrZ25hbWU9ZnJlZWNhZAogdmVyc2lvbj0wLjIwLjIK LXJldmlzaW9uPTUKK3JldmlzaW9uPTYKIGJ1aWxkX3N0eWxlPWNtYWtlCiAKIF9pbnN0X3ByZWZp eD0vdXNyL2xpYi8ke3BrZ25hbWV9CgpGcm9tIDdmZmE4ZjhkYTFiMWI1YmI5ODMwNDQ0N2E5YTgx MDczMzZiYzhiMmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFNhdCwgMTAgSnVuIDIwMjMgMDA6NTc6MDkgLTA0MDAKU3ViamVj dDogW1BBVENIIDExMi8xMTNdIHF0Ni1tdWx0aW1lZGlhOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlIGIvc3JjcGtncy9xdDYtbXVsdGltZWRpYS90ZW1wbGF0 ZQppbmRleCBhNjgzMmZkZDY5YmYuLmM5ZmZhYzkxNGFiOCAxMDA2NDQKLS0tIGEvc3JjcGtncy9x dDYtbXVsdGltZWRpYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ2LW11bHRpbWVkaWEn CiBwa2duYW1lPXF0Ni1tdWx0aW1lZGlhCiB2ZXJzaW9uPTYuNS4wCi1yZXZpc2lvbj0yCityZXZp c2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EUVRfRkVBVFVSRV9n c3RyZWFtZXI9T04iCiBob3N0bWFrZWRlcGVuZHM9InBlcmwgcXQ2LWRlY2xhcmF0aXZlLWhvc3Qt dG9vbHMgcGtnLWNvbmZpZyBxdDYtc2hhZGVydG9vbHMiCgpGcm9tIGNkOGNlYWQ0ZWQ0YTk5NWRm MjgyMjY1M2U0YWFlYTA2Zjc0YTM3YTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFRodSwgMjIgSnVuIDIwMjMgMTA6MjU6MDIg LTA0MDAKU3ViamVjdDogW1BBVENIIDExMy8xMTNdIGtkZW5saXZlOiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3Mva2RlbmxpdmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2tkZW5saXZlL3RlbXBsYXRlIGIvc3JjcGtncy9rZGVubGl2ZS90ZW1wbGF0ZQppbmRleCA4OWMw ZGNmYjg1NzcuLjc1NDk1YjNhMzU4NiAxMDA2NDQKLS0tIGEvc3JjcGtncy9rZGVubGl2ZS90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2tkZW5saXZlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAna2RlbmxpdmUnCiBwa2duYW1lPWtkZW5saXZlCiB2ZXJzaW9uPTIz LjA0LjIKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFr ZWRlcGVuZHM9IgogIGV4dHJhLWNtYWtlLW1vZHVsZXMga2NvbmZpZyBrY29yZWFkZG9ucyBrZG9j dG9vbHMgcGtnLWNvbmZpZyBweXRob24zCg== --===============3454599515948707534==--