From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 5325 invoked from network); 4 Jun 2023 15:47:41 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 4 Jun 2023 15:47:41 -0000 Content-Type: multipart/mixed; boundary="===============5564677552230297569==" 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: Sun, 04 Jun 2023 17:47:41 +0200 List-Id: Message-ID: <20230604154741.2m88BqGYESNmQqjJQpygIvbqifWlwuR4E6wthHKb-zM@z> GitHub notification mails are now in MIME to allow UTF8. --===============5564677552230297569== 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 Cg0KLSBbZ3N0cmVhbWVyIDEuMjIuMl0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9p ZC1wYWNrYWdlcy9wdWxsLzQyODYxKSAtIGEgZmV3IHBhY2thZ2VzIHVzZSBmZm1wZWctZGV2ZWwg YW5kIHJlcXVpcmUgYSByZXZidW1wDQoNCi0gW0ludGVsIFBhY2thZ2VzXShodHRwczovL2dpdGh1 Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDExMzIpIC0gZmZtcGVnNCB1c2Vz IGRpZmZlcmVudCBsaWJyYXJpZXMgdGhhbiA2IChsaWJtZnggLyBJbnRlbC1NZWRpYVNESyB2cyBv bmx5IG9uZVZQTCB0aGF0IEludGVsIGlzIG1vdmluZyB0byksIGJvdGggYXJlIGluY2x1ZGVkIGhl cmUKCkEgcGF0Y2ggZmlsZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQt cGFja2FnZXMvcHVsbC80Mzc2MS5wYXRjaCBpcyBhdHRhY2hlZA== --===============5564677552230297569== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ffmpeg6-split-43761.patch" RnJvbSBkODhjODNhMGMzOTgyZjY1YjMwODYzODRiOWUzNjFmZWYyMjZiNDE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDE5OjU1OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDEvMTE1XSBmZm1w ZWc6IHVwZGF0ZSB0byA2LjAuCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI2ICsrKysrLS0tCiBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoICAgICAgICAgICAgfCA2MCAtLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAxOCAtLS0tLS0KIC4uLi93b3JrYXJv dW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8IDI4IC0tLS0tLS0tLQogc3JjcGtn cy9mZm1wZWcvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgMzggKysrKystLS0tLS0t CiA1IGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDEzOCBkZWxldGlvbnMoLSkKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVjLnBhdGNoCiBkZWxl dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1w b2ludC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvd29y a2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNoCgpkaWZmIC0tZ2l0IGEvY29tbW9u L3NobGlicyBiL2NvbW1vbi9zaGxpYnMKaW5kZXggMTZlZWZkNDM5YjJiLi45MzM1NGI0YjYxMjIg MTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMKKysrIGIvY29tbW9uL3NobGlicwpAQCAtMzkwLDE1 ICszOTAsMjMgQEAgbGliaWQzdGFnLnNvLjAgbGliaWQzdGFnLTAuMTUuMWJfMQogbGliZ2lmLnNv 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 b3ZlIHVzci9saWIvcGtnY29uZmlnCgpGcm9tIDFkYjZjMGYxNmMzOGQ2MDMwNGEzZmY4N2JlNDVl YTFlMWZmNzJhYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTY6MjIgLTA0MDAKU3ViamVj dDogW1BBVENIIDAwMi8xMTVdIE5ldyBwYWNrYWdlOiBmZm1wZWc0LTQuNC40LgoKLS0tCiBzcmNw 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 bSBiZGI2MGJmZTAyNzgyZGQ0YTA0OWY4YWExYmU0NzRhZWNlMzhhNjIxIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDE5OjU5OjA0IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDMvMTE1XSBvcGVuY3Y6 IHVwZGF0ZSB0byA0LjcuMC4KCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgfCAxMDQgKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtncy9vcGVuY3YvdGVt cGxhdGUgfCAgIDggKystLQogMiBmaWxlcyBjaGFuZ2VkLCA1NiBpbnNlcnRpb25zKCspLCA1NiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29tbW9uL3NobGlicwpp bmRleCA5MzM1NGI0YjYxMjIuLmI1NzA1MzVlZDFlZiAxMDA2NDQKLS0tIGEvY29tbW9uL3NobGli cworKysgYi9jb21tb24vc2hsaWJzCkBAIC0yMTM4LDU4ICsyMTM4LDU4IEBAIGxpYmNhcHN0b25l 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 YWtlX2NoZWNrPW5vCgpGcm9tIDgxZDJkZWQ0MzRkMDVjODc2Yzk3MzlmMmM5ZGEyMmU5ODBhMGI3 MWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDUgLTA0MDAKU3ViamVjdDogW1BBVENI IDAwNC8xMTVdIGFjdGlvbmE6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dz L2FjdGlvbmEvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUgYi9z cmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUKaW5kZXggY2Y1ZjBiN2EyYWU2Li4wZDg5OTMxMWU2ZGYg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2FjdGlv bmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhY3Rpb25h JwogcGtnbmFtZT1hY3Rpb25hCiB2ZXJzaW9uPTMuMTAuMQotcmV2aXNpb249MgorcmV2aXNpb249 MwogYnVpbGRfc3R5bGU9cW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSJQS0dDT05GSUdfT1BFTkNWPW9w ZW5jdjQiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LXBsdWdpbi1teXNxbCBxdDUt cW1ha2UgcXQ1LWhvc3QtdG9vbHMiCgpGcm9tIDMxZjFmNjIyYWUxZGZkNmVjMzNjZjM2YjIwZmQ2 ZDFjZGYzNTQ2OWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDUgLTA0MDAKU3ViamVj dDogW1BBVENIIDAwNS8xMTVdIGdtaWM6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBz cmNwa2dzL2dtaWMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dtaWMvdGVtcGxhdGUgYi9z cmNwa2dzL2dtaWMvdGVtcGxhdGUKaW5kZXggMjRhOWM3MjE4ZmRmLi4wYmI0MDM0ZDVjYzggMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvZ21pYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dtaWMvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnbWljJwogcGtnbmFtZT1n bWljCiB2ZXJzaW9uPTMuMS42Ci1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBfemFydF9oYXNoPTM0 ZWJmNmNjZTBiYWZiOThhYmU1N2NlYzgzYzRhMDJjZDFhYmVjYTAKIGNyZWF0ZV93cmtzcmM9eWVz CiBidWlsZF93cmtzcmM9InNyYyIKCkZyb20gYWJlYTc5MWRjZDJjMzNiZmYyYTE1YWY0ZDBjYjEx MGVhZTY0MGEyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAxOTo1OTo0NiAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDA2LzExNV0gcWltZ3Y6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBz cmNwa2dzL3FpbWd2L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZSBi L3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUKaW5kZXggN2ViMzBkYjMzOTkyLi5kZDM0MWRmZTFiZmMg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xaW1ndi90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3FpbWd2JwogcGtn bmFtZT1xaW1ndgogdmVyc2lvbj0xLjAuMgotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRf c3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIkKHZvcHRfaWYgdmlkZW8gLURWSURFT19TVVBQ T1JUPU9OIC1EVklERU9fU1VQUE9SVD1PRkYpCiAgJCh2b3B0X2lmIHNjYWxlIC1ET1BFTkNWX1NV UFBPUlQ9T04gLURPUEVOQ1ZfU1VQUE9SVD1PRkYpCgpGcm9tIDZjNjc4ZTRmZDY5Yjc3ZGNmYTcw ZTU0NzQ5NzExYTc5YjYxNTgwMjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0 MDAKU3ViamVjdDogW1BBVENIIDAwNy8xMTVdIHJldHJvc2hhcmU6IHJldmJ1bXAgZm9yIG9wZW5j di00LjcuMAoKLS0tCiBzcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3JldHJvc2hhcmUvdGVtcGxhdGUgYi9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKaW5k ZXggOGEwNzg2YzIxYTA4Li43MjAyM2ZhOThiNzUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmV0cm9z aGFyZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdyZXRyb3NoYXJlJwogcGtnbmFtZT1yZXRyb3No YXJlCiB2ZXJzaW9uPTAuNi42Ci1yZXZpc2lvbj0yCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1x bWFrZQogI1hYWCBicm9hZGNhc3QgZmVhdHVyZSByZXF1aXJlcyBhbiBhbmNpZW50IHVkcC1kaXNj b3ZlcnktY3BwIHdoaWNoIGVpdGhlciBuZWVkcwogIyB0byBiZSBmZXRjaGVkK3BhdGNoZWQgKEZU QkZTKSBoZXJlIG9yIHBhY2thZ2VkIDovCgpGcm9tIGEwZGIzYTFiMjYzNzgyYTJmM2JlYzViZTZk YjJlNjJhYmQ4ZjJmYWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3Vi amVjdDogW1BBVENIIDAwOC8xMTVdIHdhaWZ1MngtY29udmVydGVyLWNwcDogcmV2YnVtcCBmb3Ig b3BlbmN2LTQuNy4wCgotLS0KIHNyY3BrZ3Mvd2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUgYi9zcmNw a2dzL3dhaWZ1MngtY29udmVydGVyLWNwcC90ZW1wbGF0ZQppbmRleCA4YzA5NWQwZDdiYWIuLmFh NTJkOGM5ODFhOCAxMDA2NDQKLS0tIGEvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVt cGxhdGUKKysrIGIvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd3YWlmdTJ4LWNvbnZlcnRlci1jcHAnCiBw a2duYW1lPXdhaWZ1MngtY29udmVydGVyLWNwcAogdmVyc2lvbj01LjIuNAotcmV2aXNpb249Mgor cmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRElOU1RBTExf TU9ERUxTPU9OIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSAzMGE0YjMxMGI5 NGRlNDZjYjY3NmI5NmQ4NjMwMzhjNmJlMGNmYzU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAwOjM4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDkvMTE1XSB2bGM6IHJldmJ1bXAgZm9yIGZm bXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy92bGMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBj aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy92bGMvdGVtcGxhdGUgYi9zcmNwa2dzL3ZsYy90ZW1wbGF0ZQppbmRleCAyMTA3NjJiMGE3 ZTIuLjg1NWNhNTIzODY2MiAxMDA2NDQKLS0tIGEvc3JjcGtncy92bGMvdGVtcGxhdGUKKysrIGIv c3JjcGtncy92bGMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICd2bGMnCiBwa2duYW1lPXZsYwogdmVyc2lvbj0zLjAuMTgKLXJldmlzaW9uPTMKK3JldmlzaW9u PTQKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUt Z21lIC0tZGlzYWJsZS1saWJ0YXIgLS1lbmFibGUtamFjawogIC0tZW5hYmxlLWxpdmU1NTUgLS1k aXNhYmxlLWZsdWlkc3ludGggLS1lbmFibGUtZHZkcmVhZApAQCAtMjUsNyArMjUsNyBAQCBsaWIz MmRpc2FibGVkPXllcwogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBsaWJ0b29sIHBrZy1jb25m aWcgZmxleCBnZXR0ZXh0IGxpYmdjcnlwdC1kZXZlbAogIGxpdmU1NTUtZGV2ZWwgZ2V0dGV4dC1k ZXZlbCAkKHZvcHRfaWYgbHVhIGx1YTUyKSAkKHZvcHRfaWYgY2hyb21lY2FzdCBwcm90b2J1Ziki CiBtYWtlZGVwZW5kcz0iCi0gYXZhaGktbGlicy1kZXZlbCBkYnVzLWdsaWItZGV2ZWwgZmFhZDIt ZGV2ZWwgZmZtcGVnLWRldmVsIGZyZWVmb250LXR0ZgorIGF2YWhpLWxpYnMtZGV2ZWwgZGJ1cy1n bGliLWRldmVsIGZhYWQyLWRldmVsIGZmbXBlZzQtZGV2ZWwgZnJlZWZvbnQtdHRmCiAgZ251dGxz LWRldmVsIGphY2stZGV2ZWwgbGliYTUyLWRldmVsIGxpYmFzcy1kZXZlbCBsaWJibHVyYXktZGV2 ZWwKICBsaWJjZGlvLWRldmVsIGxpYmRjYS1kZXZlbCBsaWJkdmJwc2ktZGV2ZWwgbGliZHZkbmF2 LWRldmVsIGxpYm1hZC1kZXZlbAogIGxpYm1hdHJvc2thLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwg bGlibXBjZGVjLWRldmVsIGxpYm1wZWcyLWRldmVsCgpGcm9tIDdiYzEyOTAzNDRmOTJmYWEzYThi ODZlZjYzMGZiMjdlOTU0NzhlNmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDA6NTUgLTA0 MDAKU3ViamVjdDogW1BBVENIIDAxMC8xMTVdIG9zZzogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQu MwoKLS0tCiBzcmNwa2dzL29zZy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3NnL3RlbXBs YXRlIGIvc3JjcGtncy9vc2cvdGVtcGxhdGUKaW5kZXggYTllYmJkMjg3OTMzLi43NTU3OTNmN2Ux MWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3NnL3Rl bXBsYXRlCkBAIC04LDcgKzgsNyBAQCBidWlsZF9oZWxwZXI9InFlbXUiCiBjb25maWd1cmVfYXJn cz0iLURMSUJfUE9TVEZJWD0iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgeHJhbmRyIgog bWFrZWRlcGVuZHM9Ik1lc2FMaWItZGV2ZWwgZ3RrZ2xleHQtZGV2ZWwgbGliY3VybC1kZXZlbCBn aWZsaWItZGV2ZWwgbGlicnN2Zy1kZXZlbAotIGphc3Blci1kZXZlbCB0aWZmLWRldmVsIGxpYmdk YWwtZGV2ZWwgbGliZ3RhLWRldmVsIGZmbXBlZy1kZXZlbCB4aW5lLWxpYi1kZXZlbAorIGphc3Bl ci1kZXZlbCB0aWZmLWRldmVsIGxpYmdkYWwtZGV2ZWwgbGliZ3RhLWRldmVsIGZmbXBlZzQtZGV2 ZWwgeGluZS1saWItZGV2ZWwKICBTREwyLWRldmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsCiAg JCh2b3B0X2lmIG9wZW5leHIgbGlib3BlbmV4ci1kZXZlbCkKICAkKHZvcHRfaWYgcG9wcGxlciBw b3BwbGVyLWdsaWItZGV2ZWwpCgpGcm9tIDViM2Y5MTg0ZWE2NDgzZGY3NzY2NjY1ZWU0MDhiMzEw MTZkOTE3OWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6MTMgLTA0MDAKU3ViamVjdDog W1BBVENIIDAxMS8xMTVdIHhpbmUtbGliOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0K 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 SU5FIiBpbgogCWk2ODYtbXVzbCkKCkZyb20gNjA4OGQ5NTEyOTcxMTc1NTViYmQwMGJlNDcyYzM4 ZjRiOThjZTAzOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDEyLzExNV0gUU1QbGF5MjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL1FNUGxheTIvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL1FNUGxheTIvdGVtcGxh dGUgYi9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUKaW5kZXggYWQ3M2NiYjAxYmFlLi41NTI4NGMw NTExNjEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvUU1QbGF5Mi90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L1FNUGxheTIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdR TVBsYXkyJwogcGtnbmFtZT1RTVBsYXkyCiB2ZXJzaW9uPTIzLjAyLjA1Ci1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmln IHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIKIG1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBm Zm1wZWctZGV2ZWwgbGliYXNzLWRldmVsIGxpYmNkaW8tZGV2ZWwgbGliZ21lLWRldmVsCgpGcm9t IGJkZTU3ZWRiNjM2N2U0NjBhYTQ5MjkzYzEyYTNmM2I1OWUyNmE4NjUgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxMy8xMTVdIGFsc2EtcGx1 Z2luczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Fsc2EtcGx1Z2lucy90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtn cy9hbHNhLXBsdWdpbnMvdGVtcGxhdGUKaW5kZXggMGJmYTZkOWZkMjY0Li5hNTcwOGE3ZDgyYTgg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv YWxzYS1wbHVnaW5zL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnYWxzYS1wbHVnaW5zJwogcGtnbmFtZT1hbHNhLXBsdWdpbnMKIHZlcnNpb249MS4yLjcuMQot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmln dXJlX2FyZ3M9Ii0tZGlzYWJsZS1tYWVtby1wbHVnaW4iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWciCgpGcm9tIDA2ODMyZjVjMWE2Yzk2YmM3M2JlM2U1MDUyMmIzMDJjYzk1YmNhZTkgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNC8x MTVdIGFyY2FuOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYXJjYW4vdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2FyY2FuL3RlbXBsYXRlIGIvc3JjcGtncy9hcmNhbi90 ZW1wbGF0ZQppbmRleCA3YmU5NjUyZWNjZjMuLmNjYzdkZjExY2VhYyAxMDA2NDQKLS0tIGEvc3Jj cGtncy9hcmNhbi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2FyY2FuL3RlbXBsYXRlCkBAIC0yLDcg KzIsNyBAQAogIyAhISBrZWVwIHN5bmNlZCB3aXRoOiBhY2ZnZnMgYWNsaXAgYWxvYWRpbWFnZQog cGtnbmFtZT1hcmNhbgogdmVyc2lvbj0wLjYuMi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBj cmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jrc3JjPWFyY2FuL3NyYwogYnVpbGRfc3R5bGU9Y21h a2UKCkZyb20gMTFkYTZmOWIzMTVhNjM4YjY0YTNjNTkzMTA4M2M0Njc2YjUzOTEyNiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE1LzExNV0g YXR0cmFjdDogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2F0dHJhY3Qv dGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlIGIvc3JjcGtn cy9hdHRyYWN0L3RlbXBsYXRlCmluZGV4IDI2MTQ0ZTkzMWEzYy4uZTc2MGJmMGQxOGFlIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdHRyYWN0L3Rl bXBsYXRlCkBAIC0xLDEyICsxLDEyIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhdHRyYWN0Jwog cGtnbmFtZT1hdHRyYWN0CiB2ZXJzaW9uPTIuNi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIG1ha2VfYnVpbGRfYXJncz0iVkVSQk9TRT0xIgogbWFr ZV91c2VfZW52PXllcwogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9 IlNGTUwtZGV2ZWwgZmZtcGVnLWRldmVsIGZvbnRjb25maWctZGV2ZWwgZ2x1LWRldmVsIGxpYmFy Y2hpdmUtZGV2ZWwKK21ha2VkZXBlbmRzPSJTRk1MLWRldmVsIGZmbXBlZzQtZGV2ZWwgZm9udGNv bmZpZy1kZXZlbCBnbHUtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbAogIGxpYmN1cmwtZGV2ZWwgbGli anBlZy10dXJiby1kZXZlbCB4aW5lLWxpYiByYXBpZGpzb24gbGliWHJhbmRyLWRldmVsIgogZGVw ZW5kcz0iZ2l0Igogc2hvcnRfZGVzYz0iQXR0cmFjdC1Nb2RlIGlzIGEgZ3JhcGhpY2FsIGZyb250 ZW5kIGZvciBlbXVsYXRvcnMiCgpGcm9tIDdkN2I4ZmQxOTdjZWZmNjQyYWM2YWJhYmIyOTkzMjVl YzIwZGEwZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDog W1BBVENIIDAxNi8xMTVdIGF1YmlvOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br 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 aWcgc3VwcG9ydC4KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyB0eHQybWFuIgoKRnJvbSAz YzVjMzQyNjY1ODNhNzgxNzQyNDQ3YWM0NzVjY2NkZmEyZmYzNjEwIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTcvMTE1XSBhdWRhY2lvdXMt 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 dCkgJCh2b3B0X2Jvb2wgcXQgcXQ2KSIKCkZyb20gY2NhNTJkZDgyNDRmZTRkMzA1YjgyOTg3YjQx NTI4OWNjNDZiN2IyZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDE4LzExNV0gYXVkYWNpdHk6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMK Ci0tLQogc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZSB8IDUgKystLS0KIDEgZmlsZSBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9h dWRhY2l0eS90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUKaW5kZXggZDUwOWMw YTg5NDA3Li4xMWUyMDI1NTY4NWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ2F1ZGFjaXR5JwogcGtnbmFtZT1hdWRhY2l0eQogdmVyc2lvbj0yLjQu MQotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29u ZmlndXJlX2FyZ3M9Ii0td2l0aC1mZm1wZWc9c3lzdGVtIC0td2l0aC1saWJzbmRmaWxlPXN5c3Rl bSAtLXdpdGgtZXhwYXQ9c3lzdGVtCiAgLS13aXRoLWxpYnNveHI9c3lzdGVtIC0td2l0aC1sYW1l PXN5c3RlbSAtLXdpdGgtbHYyPXN5c3RlbSBhY19jdl9wYXRoX1dYX0NPTkZJRz13eC1jb25maWct Z3RrMyIKQEAgLTksNyArOSw3IEBAIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBjbWFrZSBn ZXR0ZXh0IGxpYnRvb2wgbTQgd2hpY2giCiBtYWtlZGVwZW5kcz0iamFjay1kZXZlbCB3eFdpZGdl dHMtZ3RrMy1kZXZlbCBndGsrMy1kZXZlbAogIGxpYm1hZC1kZXZlbCBzb3VuZHRvdWNoLWRldmVs IGxpYnNveHItZGV2ZWwKICB2YW1wLXBsdWdpbi1zZGstZGV2ZWwgbGFtZS1kZXZlbCBsaWJpZDN0 YWctZGV2ZWwgbGliZmxhYy1kZXZlbAotIGZmbXBlZy1kZXZlbCB0d29sYW1lLWRldmVsIHNlcmQt ZGV2ZWwgbHYyIGxpbHYtZGV2ZWwgc3VpbC1kZXZlbCIKKyBmZm1wZWc0LWRldmVsIHR3b2xhbWUt ZGV2ZWwgc2VyZC1kZXZlbCBsdjIgbGlsdi1kZXZlbCBzdWlsLWRldmVsIgogZGVwZW5kcz0iZGVz a3RvcC1maWxlLXV0aWxzIGhpY29sb3ItaWNvbi10aGVtZSIKIHNob3J0X2Rlc2M9IkdyYXBoaWNh bCBjcm9zcy1wbGF0Zm9ybSBhdWRpbyBlZGl0b3IiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3Jw aGFuQHZvaWRsaW51eC5vcmc+IgpAQCAtMzMsNSArMzMsNCBAQCBwb3N0X2luc3RhbGwoKSB7CiAJ dmNvcHkgcGx1Zy1pbnMgL3Vzci9zaGFyZS9hdWRhY2l0eQogCiAJcm0gJHtERVNURElSfS91c3Iv c2hhcmUvZG9jL2F1ZGFjaXR5L0xJQ0VOU0UudHh0Ci0JdmxpY2Vuc2UgTElDRU5TRS50eHQgTElD RU5TRQogfQoKRnJvbSBmODMxNmNmMzhlNWQxMjEyMDQyMDFkZGU1YWVhOTI5MGI4N2Y4NjllIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTkv MTE1XSBhdmlkZW11eDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2F2aWRl bXV4L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdmlkZW11eC90ZW1wbGF0ZSBiL3NyY3Br Z3MvYXZpZGVtdXgvdGVtcGxhdGUKaW5kZXggMjUzYTAyNDNlMjI1Li41NTcyODU5ODJkMmIgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdmlkZW11 eC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2F2aWRlbXV4 JwogcGtnbmFtZT1hdmlkZW11eAogdmVyc2lvbj0yLjguMAotcmV2aXNpb249MgorcmV2aXNpb249 MwogIyBDYW4ndCBiZSBjb21waWxlZCBmb3IgYWFyY2g2NCwgYXJtKiBvciBtaXBzKgogYXJjaHM9 Ing4Nl82NCogaTY4NioiCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHBrZy1jb25maWcgcXQ1LWhv c3QtdG9vbHMgcXQ1LWRldmVsIHRhciB5YXNtIgoKRnJvbSBmZGUzZTdhZTBjMmJhNTVkYTNjYjRk MjE5NzU3ODFjNjk1YTkyNDcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwMjAvMTE1XSBiYXJlc2lwOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFyZXNp cC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQppbmRleCBmMWJkMTgxNzA0OGIu LmIyMWUyMjMzNDMxNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ2JhcmVzaXAnCiBwa2duYW1lPWJhcmVzaXAKIHZlcnNpb249Mi4xMC4wCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIGdsaWItZGV2ZWwiCiBtYWtlZGVwZW5kcz0ibGliZ3NtLWRldmVsIGxpYnBuZy1kZXZl bCBvcGVuc3NsLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwKCkZyb20gMTUzMTAyNjFiZTJmMDkzMjJm Zjc0NmI3NWU0ZWM2NjZjNjQ2ZjVmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDIxLzExNV0gYmxlbmRlcjogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUgfCA2ICsrKy0tLQogMSBmaWxlIGNo YW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL2JsZW5kZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUKaW5kZXggZWM3 MjRiYjBhNmRjLi4wZjcyODc2ZDRkNzAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYmxlbmRlci90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdibGVuZGVyJwogcGtnbmFtZT1ibGVuZGVyCiB2ZXJzaW9uPTMuNS4x Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0ieDg2XzY0KiBwcGM2NCoiCiBidWlsZF9z dHlsZT0iY21ha2UiCiBweWNvbXBpbGVfZGlycz0iL3Vzci9zaGFyZS9ibGVuZGVyLyR7dmVyc2lv biUuKn0vc2NyaXB0cyIKQEAgLTksOCArOSw4IEBAIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfSU5T VEFMTF9QT1JUQUJMRT1PRkYgLURXSVRIX1BZVEhPTl9JTlNUQUxMPU9GRgogIC1EV0lUSF9KQUNL PU9OIC1EV0lUSF9DT0RFQ19GRk1QRUc9T04gLURXSVRIX0NPREVDX1NOREZJTEU9T04gLURXSVRI X09QRU5NUD1PTgogIC1EV0lUSF9GRlRXMz1PTiAtRFdJVEhfTU9EX09DRUFOU0lNPU9OIC1EV0lU SF9DWUNMRVNfRU1CUkVFPU9GRiAtRFdJVEhfT1BFTkNPTE9SSU89T04KICAtRFdJVEhfSU1BR0Vf T1BFTkVYUj1PTiAtRFdJVEhfSU1BR0VfT1BFTkpQRUc9T04gLURXSVRIX09QRU5TVUJESVY9T04K LSAtRFdJVEhfT1BFTkNPTExBREE9T04gLURXSVRIX1NZU1RFTV9HTEVXPU9OIC1EV0lUSF9PUEVO VkRCPU9OIC1EV0lUSF9BTEVNQklDPU9OCi0gLURXSVRIX0dIT1NUX1gxMT1PTiAtRFdJVEhfR0hP U1RfV0FZTEFORD1PTiAtRFdJVEhfR0hPU1RfTElCREVDT1I9T04KKyAtRFdJVEhfT1BFTkNPTExB REE9T04gLURXSVRIX09QRU5WREI9T04gLURXSVRIX0FMRU1CSUM9T04KKyAtRFdJVEhfR0hPU1Rf WDExPU9OIC1EV0lUSF9HSE9TVF9XQVlMQU5EPU9OIC1EV0lUSF9HSE9TVF9XQVlMQU5EX0xJQkRF Q09SPU9OCiAgLURXSVRIX0JVSUxESU5GTz1PRkYgLURQWVRIT05fVkVSU0lPTj0ke3B5M192ZXJ9 IC1EUFlUSE9OX0xJQlBBVEg9L3Vzci9saWIKICAtRFBZVEhPTl9MSUJSQVJZPXB5dGhvbiR7cHkz X3Zlcn0ke3B5M19hYml2ZXJ9IC1EUFlUSE9OX0lOQ0xVREVfRElSUz0vJHtweTNfaW5jfQogIC1E V0lUSF9TWVNURU1fTFpPPU9OIC1EV0lUSF9TWVNURU1fRUlHRU4zPU9OIC1EV0lUSF9TWVNURU1f RlJFRVRZUEU9T04iCgpGcm9tIDBiNGZkMTkxZTBkOTY3MWQyZDUwN2JkODExOGE5ZDQ5YmFhNmYz M2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENI IDAyMi8xMTVdIGNhbnRhdGE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9j YW50YXRhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlIGIvc3Jj cGtncy9jYW50YXRhL3RlbXBsYXRlCmluZGV4IDRiNDE3ZDgwZDVjMi4uOGE5MGFhYTRjMDdhIDEw MDY0NAotLS0gYS9zcmNwa2dzL2NhbnRhdGEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jYW50YXRh L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnY2FudGF0YScK IHBrZ25hbWU9Y2FudGF0YQogdmVyc2lvbj0yLjUuMAotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtcW1ha2Ug cXQ1LWhvc3QtdG9vbHMgcXQ1LXRvb2xzIgogbWFrZWRlcGVuZHM9InF0NS1kZXZlbCBxdDUtdG9v bHMtZGV2ZWwgcXQ1LXN2Zy1kZXZlbCBxdDUteG1scGF0dGVybnMtZGV2ZWwKCkZyb20gM2UyZDQ0 OTM2YjUzNGE2MzE1ZjlkNGJhNzI1ZjE0MjY3MDliZDQ2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDIzLzExNV0gY2NleHRyYWN0b3I6IHJl dmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0 ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NjZXh0cmFjdG9yL3RlbXBsYXRlIGIvc3JjcGtncy9j Y2V4dHJhY3Rvci90ZW1wbGF0ZQppbmRleCA5YWJjZDgyODUyYjIuLjZlY2NhZDU4ODVhZiAxMDA2 NDQKLS0tIGEvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NjZXh0 cmFjdG9yL3RlbXBsYXRlCkBAIC0xLDEyICsxLDEyIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdj Y2V4dHJhY3RvcicKIHBrZ25hbWU9Y2NleHRyYWN0b3IKIHZlcnNpb249MC45MwotcmV2aXNpb249 MQorcmV2aXNpb249MgogYnVpbGRfd3Jrc3JjPSJsaW51eCIKIGJ1aWxkX3N0eWxlPWdudS1jb25m aWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1vY3IgLS1lbmFibGUtaGFyZHN1YngiCiBo b3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIHBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0ibGVwdG9u aWNhLWRldmVsIHRlc3NlcmFjdC1vY3ItZGV2ZWwgZmZtcGVnLWRldmVsIgorbWFrZWRlcGVuZHM9 ImxlcHRvbmljYS1kZXZlbCB0ZXNzZXJhY3Qtb2NyLWRldmVsIGZmbXBlZzQtZGV2ZWwiCiBzaG9y dF9kZXNjPSJFeHRyYWN0IHN1YnRpdGxlcyBmcm9tIHZpZGVvIHN0cmVhbXMiCiBtYWludGFpbmVy PSJuZXdibHVlbW9vbiA8YmxhdW1vbGNoQG1haWxib3gub3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAt b3ItbGF0ZXIiCgpGcm9tIDIwNDA1ZjAwMjVkMzAxNDI3M2Q0MDMxMTk1OTVhNTZhOTRlMTg4ZGIg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAy NC8xMTVdIGNocm9tYXByaW50OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mv 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 a190YXJnZXQ9ImNoZWNrIgoKRnJvbSA1MGVlNDJjYzE0NTcxY2VmMGY3Y2M2MjFiMjVjODllMTc1 ZjA0MzA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwMjUvMTE1XSBjaHJvbWl1bTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4v 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 dGVtcGxhdGUKaW5kZXggY2FmYzJmZTMyNGM2Li45ZGY3ODJiNWZkOWIgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZQpA QCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9Y2hyb21pdW0KICMgU2VlIGh0dHBzOi8vY2hyb21pdW1k YXNoLmFwcHNwb3QuY29tL3JlbGVhc2VzP3BsYXRmb3JtPUxpbnV4IGZvciB0aGUgbGF0ZXN0IHZl cnNpb24KIHZlcnNpb249MTEzLjAuNTY3Mi45MgotcmV2aXNpb249MQorcmV2aXNpb249MgogYXJj aHM9Imk2ODYqIHg4Nl82NCogYWFyY2g2NCogYXJtdjdsKiIKIGhvc3RtYWtlZGVwZW5kcz0iCiAg JCh2b3B0X2lmIGNsYW5nICJjbGFuZyBsbGQgbGx2bTE1IikKCkZyb20gMTMzODJjZmVkMDUyYjBj NTIyOTFiMmJjZjE2NGNkNDJjOGQyMDY4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0 NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI2LzExNV0gY211czogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoIHwgMTIgKysrKysr KysrKysrCiBzcmNwa2dzL2NtdXMvdGVtcGxhdGUgICAgICAgICAgICAgIHwgIDIgKy0KIDIgZmls ZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoIGIvc3JjcGtncy9jbXVzL3BhdGNoZXMv ZmZtcGVnNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZm YTk1YWI4MTExMAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBl ZzYucGF0Y2gKQEAgLTAsMCArMSwxMiBAQAorLS0tIGEvaXAvZmZtcGVnLmMKKysrKyBiL2lwL2Zm bXBlZy5jCitAQCAtMjAyLDkgKzIwMiw2IEBAIHN0YXRpYyBpbnQgZmZtcGVnX29wZW4oc3RydWN0 IGlucHV0X3BsdWdpbl9kYXRhICppcF9kYXRhKQorIAkJCWJyZWFrOworIAkJfQorIAorLQkJaWYg KGNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19DQVBfVFJVTkNBVEVEKQorLQkJCWNjLT5m bGFncyB8PSBBVl9DT0RFQ19GTEFHX1RSVU5DQVRFRDsKKy0KKyAJCWlmIChhdmNvZGVjX29wZW4y KGNjLCBjb2RlYywgTlVMTCkgPCAwKSB7CisgCQkJZF9wcmludCgiY291bGQgbm90IG9wZW4gY29k ZWM6ICVkLCAlc1xuIiwgY2MtPmNvZGVjX2lkLCBhdmNvZGVjX2dldF9uYW1lKGNjLT5jb2RlY19p ZCkpOworIAkJCWVyciA9IC1JUF9FUlJPUl9VTlNVUFBPUlRFRF9GSUxFX1RZUEU7CmRpZmYgLS1n aXQgYS9zcmNwa2dzL2NtdXMvdGVtcGxhdGUgYi9zcmNwa2dzL2NtdXMvdGVtcGxhdGUKaW5kZXgg MGZjYjQyNGNlMzM2Li4wNWI3N2QwZmVjYWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY211cy90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2NtdXMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdjbXVzJwogcGtnbmFtZT1jbXVzCiB2ZXJzaW9uPTIuMTAuMAotcmV2aXNp b249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y29uZmlndXJlCiBjb25maWd1cmVfYXJncz0i cHJlZml4PS91c3IgTEQ9JENDIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSAz NDdlNzk2NmViMWZiZjBhNTBmN2QyNmU0ZTNjMjc0MWQzNGQ1ZDBlIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjcvMTE1XSBjeWFucmlwOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0 ZQppbmRleCA5Nzk2ZTM0NjE2MDEuLjVkYjMwZTAyMGQxNyAxMDA2NDQKLS0tIGEvc3JjcGtncy9j eWFucmlwL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0ZQpAQCAtMSw3ICsx LDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2N5YW5yaXAnCiBwa2duYW1lPWN5YW5yaXAKIHZl cnNpb249MC45LjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBo b3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIGxp YmNkaW8tZGV2ZWwgbGliY2Rpby1wYXJhbm9pYS1kZXZlbCBsaWJjdXJsLWRldmVsIGxpYm11c2lj YnJhaW56NS1kZXZlbCIKCkZyb20gZmI0MDFlOGQ5NGZiYzIzNGZlYWEyMGZhYWJiZjQ5OTJmYTVl NzI3MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDI4LzExNV0gZGVhZGJlZWY6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3Jj cGtncy9kZWFkYmVlZi90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0 aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2RlYWRiZWVmL3Rl bXBsYXRlIGIvc3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0ZQppbmRleCBiNjY0YmIxYjliZDkuLjE2 NWIzYzdiOWNhZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlCkBAIC0xLDE0ICsxLDE0IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdkZWFkYmVlZicKIHBrZ25hbWU9ZGVhZGJlZWYKIHZlcnNpb249MS44LjgKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGNyZWF0ZV93cmtzcmM9eWVzCiBidWlsZF9zdHlsZT1nbnUtY29u ZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLW9zcyAtLWRpc2FibGUtbGZtIC0tZGlz YWJsZS1ub3RpZnkgLS1kaXNhYmxlLWd0azIiCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIGxp YnRvb2wgZ2V0dGV4dCBnZXR0ZXh0LWRldmVsIGludGx0b29sIHBrZy1jb25maWcKICB5YXNtIGNs YW5nIGdsaWItZGV2ZWwiCiBtYWtlZGVwZW5kcz0iCi0gYWxzYS1saWItZGV2ZWwgZGJ1cy1kZXZl bCBmYWFkMi1kZXZlbCBmZm1wZWctZGV2ZWwgZ3RrKzMtZGV2ZWwgaW1saWIyLWRldmVsCisgYWxz YS1saWItZGV2ZWwgZGJ1cy1kZXZlbCBmYWFkMi1kZXZlbCBmZm1wZWc0LWRldmVsIGd0ayszLWRl dmVsIGltbGliMi1kZXZlbAogIGphbnNzb24tZGV2ZWwgbGliY2RkYi1kZXZlbCBsaWJjZGlvLWRl dmVsIGxpYmN1cmwtZGV2ZWwgbGliZmxhYy1kZXZlbAogIGxpYm1hZC1kZXZlbCBsaWJwbmctZGV2 ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJzbmRmaWxlLWRldmVsIGxpYnZvcmJpcy1kZXZlbAog IGxpYnppcC1kZXZlbCBtcGcxMjMtZGV2ZWwgb3B1c2ZpbGUtZGV2ZWwgcHVsc2VhdWRpby1kZXZl bCB3YXZwYWNrLWRldmVsIgoKRnJvbSBmOWIxYWEyMDUwNTRlOGNjOTRiNGU5ZTg3OTE2YjI0YTk1 YWY5YzdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwMjkvMTE1XSBkb2xwaGluLWVtdTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kb2xwaGluLWVt dS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxhdGUKaW5kZXggN2VhMTk3Y2Vi MmE4Li43YWViMGE1YjY0NWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9kb2xwaGluLWVtdS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ2RvbHBoaW4tZW11JwogcGtnbmFtZT1kb2xwaGluLWVtdQogdmVy c2lvbj01LjAuMTYxMDEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIF9kb2xwaGluX2NvbW1pdD04 ZWNmYTUzN2EyNDJkZTc0ZDJlMzcyZTMwZDlkNzliMTQ1ODRiMmZiCiBfbWdiYV9jb21taXQ9NDBk NGM0MzBmYzM2Y2FlYjdlYTMyZmQzOTYyNDk0N2VkNDg3ZDJmMgogI1ZlcnNpb24vaGFzaCBwYWly IGNhbiBiZSBmb3VuZCBhdCBodHRwczovL2RvbHBoaW4tZW11Lm9yZy9kb3dubG9hZC8KCkZyb20g NzczZTFhODQ1ZmRmYzQwMTAxYjAyODhhYjA5MGVmNjVlMDA0MGVlZiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDMwLzExNV0gZHJvaWRjYW0t b2JzLXBsdWdpbjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Ryb2lkY2Ft LW9icy1wbHVnaW4vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVn aW4vdGVtcGxhdGUgYi9zcmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUKaW5kZXgg ZmM5YzliZjZiOWQ1Li5mYjA0ODA3NTRkZjQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZHJvaWRjYW0t b2JzLXBsdWdpbi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdkcm9pZGNhbS1vYnMt cGx1Z2luJwogcGtnbmFtZT1kcm9pZGNhbS1vYnMtcGx1Z2luCiB2ZXJzaW9uPTIuMC4xCi1yZXZp c2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIG1ha2VfdXNlX2Vu dj15ZXMKIG1ha2VfYnVpbGRfYXJncz0iQUxMT1dfU1RBVElDPW5vIgoKRnJvbSBiNjljZmIzZjI3 ZjUzNDM1ZjBmNTExOGE4YTcxZmRkMTJjMGExMzJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzEvMTE1XSBkcm9pZGNhbTogcmV2YnVtcCBm b3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Ryb2lkY2FtL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUKaW5k ZXggMWMzZjFiOGIxZmM2Li4zMmE5MjIwYjc5YTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZHJvaWRj YW0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Ryb2lkY2FtJwogcGtnbmFtZT1kcm9pZGNhbQogdmVy c2lvbj0xLjguMgotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Z251LW1ha2Vm aWxlCiBtYWtlX2J1aWxkX2FyZ3M9IlVTQk1VWEQ9LWx1c2JtdXhkLTIuMCBKUEVHPS1sdHVyYm9q cGVnIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSBkNTAwOWQyNzA0YmE0MmM3 ZjRjMDAzMGE2ZjUwODI4MTI4ZGY1YWU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzIvMTE1XSBmZm1wZWd0aHVtYm5haWxlcjogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4vZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9mZm1w ZWc2LnBhdGNoICAgfCAyMDIgKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2ZmbXBlZ3RodW1i bmFpbGVyL3RlbXBsYXRlICAgICAgICAgICAgfCAgIDYgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMjA1 IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9mZm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCBiL3NyY3BrZ3Mv ZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzYzZmYzNWEyODQxCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKQEAgLTAsMCAr MSwyMDIgQEAKKy0tLSBhL2xpYmZmbXBlZ3RodW1ibmFpbGVyL21vdmllZGVjb2Rlci5jcHAJMjAx Ny0xMS0yMSAxNDowNjo1Ny4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL2xpYmZmbXBlZ3RodW1ibmFp bGVyL21vdmllZGVjb2Rlci5jcHAJMjAyMy0wNS0wNSAxMzoxNDo0Ny45NDY1NjA2NjggLTA0MDAK K0BAIC00MSwxMSArNDEsNiBAQAorIG5hbWVzcGFjZSBmZm1wZWd0aHVtYm5haWxlcgorIHsKKyAK Ky1zdHJ1Y3QgU2lsZW5jZUxvZ0xldmVsCisteworLSAgICBTaWxlbmNlTG9nTGV2ZWwoKSB7IGF2 X2xvZ19zZXRfbGV2ZWwoQVZfTE9HX1FVSUVUKTsgfQorLX07CistCisgTW92aWVEZWNvZGVyOjpN b3ZpZURlY29kZXIoQVZGb3JtYXRDb250ZXh0KiBwYXZDb250ZXh0KQorIDogbV9WaWRlb1N0cmVh bSgtMSkKKyAsIG1fcEZvcm1hdENvbnRleHQocGF2Q29udGV4dCkKK0BAIC03MCw4ICs2NSw2IEBA CisgCisgdm9pZCBNb3ZpZURlY29kZXI6OmluaXRpYWxpemUoY29uc3Qgc3RyaW5nJiBmaWxlbmFt ZSwgYm9vbCBwcmVmZXJFbWJlZGRlZE1ldGFkYXRhKQorIHsKKy0gICAgYXZfcmVnaXN0ZXJfYWxs KCk7CistICAgIGF2Y29kZWNfcmVnaXN0ZXJfYWxsKCk7CisgICAgIGF2Zm9ybWF0X25ldHdvcmtf aW5pdCgpOworIAorICAgICBzdHJpbmcgaW5wdXRGaWxlID0gZmlsZW5hbWUgPT0gIi0iID8gInBp cGU6IiA6IGZpbGVuYW1lOworQEAgLTk3LDggKzkwLDcgQEAKKyB7CisgICAgIGlmIChtX3BWaWRl b0NvZGVjQ29udGV4dCkKKyAgICAgeworLSAgICAgICAgYXZjb2RlY19jbG9zZShtX3BWaWRlb0Nv ZGVjQ29udGV4dCk7CistICAgICAgICBtX3BWaWRlb0NvZGVjQ29udGV4dCA9IG51bGxwdHI7Cisr ICAgICAgICBhdmNvZGVjX2ZyZWVfY29udGV4dCgmbV9wVmlkZW9Db2RlY0NvbnRleHQpOworICAg ICB9CisgCisgICAgIGlmICgoIW1fRm9ybWF0Q29udGV4dFdhc0dpdmVuKSAmJiBtX3BGb3JtYXRD b250ZXh0KQorQEAgLTE1MiwxMCArMTQ0LDEwIEBACisgICAgIGZvciAodW5zaWduZWQgaW50IGkg PSAwOyBpIDwgbV9wRm9ybWF0Q29udGV4dC0+bmJfc3RyZWFtczsgKytpKQorICAgICB7CisgICAg ICAgICBBVlN0cmVhbSAqc3RyZWFtID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXTsKKy0g ICAgICAgIGF1dG8gY3R4ID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWM7Cist ICAgICAgICBpZiAoY3R4LT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykKKysgICAg ICAgIGF1dG8gcGFyID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXI7Cisr ICAgICAgICBpZiAocGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykKKyAgICAg ICAgIHsKKy0gICAgICAgICAgICBpZiAoIXByZWZlckVtYmVkZGVkTWV0YWRhdGEgfHwgIWlzU3Rp bGxJbWFnZUNvZGVjKGN0eC0+Y29kZWNfaWQpKQorKyAgICAgICAgICAgIGlmICghcHJlZmVyRW1i ZWRkZWRNZXRhZGF0YSB8fCAhaXNTdGlsbEltYWdlQ29kZWMocGFyLT5jb2RlY19pZCkpCisgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICB2aWRlb1N0cmVhbXMucHVzaF9iYWNrKGkpOwor ICAgICAgICAgICAgICAgICBjb250aW51ZTsKK0BAIC0yMDMsOCArMTk1LDcgQEAKKyAgICAgfQor IAorICAgICBtX3BWaWRlb1N0cmVhbSA9IG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbbV9WaWRl b1N0cmVhbV07CistICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0ID0gbV9wVmlkZW9TdHJlYW0tPmNv ZGVjOworLSAgICBtX3BWaWRlb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIobV9wVmlkZW9D b2RlY0NvbnRleHQtPmNvZGVjX2lkKTsKKysgICAgbV9wVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmlu ZF9kZWNvZGVyKG1fcFZpZGVvU3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworIAorICAgICBp ZiAobV9wVmlkZW9Db2RlYyA9PSBudWxscHRyKQorICAgICB7CitAQCAtMjE0LDYgKzIwNSwyMCBA QAorICAgICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIlZpZGVvIENvZGVjIG5vdCBmb3VuZCIpOwor ICAgICB9CisgCisrICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0ID0gYXZjb2RlY19hbGxvY19jb250 ZXh0MyhtX3BWaWRlb0NvZGVjKTsKKysKKysgICAgaWYgKG1fcFZpZGVvQ29kZWNDb250ZXh0ID09 IG51bGxwdHIpCisrICAgIHsKKysgICAgICAgIGRlc3Ryb3koKTsKKysgICAgICAgIHRocm93IGxv Z2ljX2Vycm9yKCJDb3VsZCBub3QgYWxsb2NhdGUgdmlkZW8gY29kZWMgY29udGV4dCIpOworKyAg ICB9CisrCisrICAgIGlmIChhdmNvZGVjX3BhcmFtZXRlcnNfdG9fY29udGV4dChtX3BWaWRlb0Nv ZGVjQ29udGV4dCwgbV9wVmlkZW9TdHJlYW0tPmNvZGVjcGFyKSA8IDApCisrICAgIHsKKysgICAg ICAgIGRlc3Ryb3koKTsKKysgICAgICAgIHRocm93IGxvZ2ljX2Vycm9yKCJDb3VsZCBub3QgY29u ZmlndXJlIHZpZGVvIGNvZGVjIGNvbnRleHQiKTsKKysgICAgfQorKworICAgICBtX3BWaWRlb0Nv ZGVjQ29udGV4dC0+d29ya2Fyb3VuZF9idWdzID0gMTsKKyAKKyAgICAgaWYgKGF2Y29kZWNfb3Bl bjIobV9wVmlkZW9Db2RlY0NvbnRleHQsIG1fcFZpZGVvQ29kZWMsIG51bGxwdHIpIDwgMCkKK0BA IC0zODYsMTMgKzM5MSw2IEBACisgCisgdm9pZCBNb3ZpZURlY29kZXI6OmluaXRpYWxpemVGaWx0 ZXJHcmFwaChjb25zdCBBVlJhdGlvbmFsJiB0aW1lQmFzZSwgY29uc3Qgc3RkOjpzdHJpbmcmIHNp emUsIGJvb2wgbWFpbnRhaW5Bc3BlY3RSYXRpbykKKyB7CistICAgIHN0YXRpYyBjb25zdCBBVlBp eGVsRm9ybWF0IHBpeGVsRm9ybWF0c1tdID0geyBBVl9QSVhfRk1UX1JHQjI0LCBBVl9QSVhfRk1U X05PTkUgfTsKKy0KKy0gICAgYXV0byBkZWwgPSBbXSAoQVZCdWZmZXJTaW5rUGFyYW1zKiBwKSB7 IGF2X2ZyZWVwKHApOyB9OworLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVZCdWZmZXJTaW5rUGFyYW1z LCBkZWNsdHlwZShkZWwpPiBidWZmZXJzaW5rUGFyYW1zKGF2X2J1ZmZlcnNpbmtfcGFyYW1zX2Fs bG9jKCksIGRlbCk7CistCistICAgIGF2ZmlsdGVyX3JlZ2lzdGVyX2FsbCgpOworLQorICAgICBt X3BGaWx0ZXJHcmFwaCA9IGF2ZmlsdGVyX2dyYXBoX2FsbG9jKCk7CisgICAgIGFzc2VydChtX3BG aWx0ZXJHcmFwaCk7CisgCitAQCAtNDA0LDEwICs0MDIsOCBAQAorIAorICAgICBjaGVja1JjKGF2 ZmlsdGVyX2dyYXBoX2NyZWF0ZV9maWx0ZXIoJm1fcEZpbHRlclNvdXJjZSwgYXZmaWx0ZXJfZ2V0 X2J5X25hbWUoImJ1ZmZlciIpLCAidGh1bWJfYnVmZmVyIiwgc3Muc3RyKCkuY19zdHIoKSwgbnVs bHB0ciwgbV9wRmlsdGVyR3JhcGgpLAorICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIGZp bHRlciBzb3VyY2UiKTsKKy0gICAgYnVmZmVyc2lua1BhcmFtcy0+cGl4ZWxfZm10cyA9IHBpeGVs Rm9ybWF0czsKKy0gICAgY2hlY2tSYyhhdmZpbHRlcl9ncmFwaF9jcmVhdGVfZmlsdGVyKCZtX3BG aWx0ZXJTaW5rLCBhdmZpbHRlcl9nZXRfYnlfbmFtZSgiYnVmZmVyc2luayIpLCAidGh1bWJfYnVm ZmVyc2luayIsIG51bGxwdHIsIGJ1ZmZlcnNpbmtQYXJhbXMuZ2V0KCksIG1fcEZpbHRlckdyYXBo KSwKKysgICAgY2hlY2tSYyhhdmZpbHRlcl9ncmFwaF9jcmVhdGVfZmlsdGVyKCZtX3BGaWx0ZXJT aW5rLCBhdmZpbHRlcl9nZXRfYnlfbmFtZSgiYnVmZmVyc2luayIpLCAidGh1bWJfYnVmZmVyc2lu ayIsIG51bGxwdHIsIG51bGxwdHIsIG1fcEZpbHRlckdyYXBoKSwKKyAgICAgICAgICAgICAiRmFp bGVkIHRvIGNyZWF0ZSBmaWx0ZXIgc2luayIpOworLSAgICBidWZmZXJzaW5rUGFyYW1zLnJlbGVh c2UoKTsKKyAKKyAgICAgQVZGaWx0ZXJDb250ZXh0KiB5YWRpZkZpbHRlciA9IG51bGxwdHI7Cisg ICAgIGlmIChtX3BGcmFtZS0+aW50ZXJsYWNlZF9mcmFtZSAhPSAwKQorQEAgLTUwMCwxNSArNDk2 LDE1IEBACisgICAgIH0KKyAKKyAgICAgY2hlY2tSYyhhdl9zZWVrX2ZyYW1lKG1fcEZvcm1hdENv bnRleHQsIC0xLCB0aW1lc3RhbXAsIDApLCAiU2Vla2luZyBpbiB2aWRlbyBmYWlsZWQiKTsKKy0g ICAgYXZjb2RlY19mbHVzaF9idWZmZXJzKG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbbV9WaWRl b1N0cmVhbV0tPmNvZGVjKTsKKysgICAgYXZjb2RlY19mbHVzaF9idWZmZXJzKG1fcFZpZGVvQ29k ZWNDb250ZXh0KTsKKyAKKyAgICAgaW50IGtleUZyYW1lQXR0ZW1wdHMgPSAwOworLSAgICBib29s IGdvdEZyYW1lID0gMDsKKysgICAgYm9vbCBnb3RGcmFtZTsKKyAKKyAgICAgZG8KKyAgICAgewor ICAgICAgICAgaW50IGNvdW50ID0gMDsKKy0gICAgICAgIGdvdEZyYW1lID0gMDsKKysgICAgICAg IGdvdEZyYW1lID0gZmFsc2U7CisgCisgICAgICAgICB3aGlsZSAoIWdvdEZyYW1lICYmIGNvdW50 IDwgMjApCisgICAgICAgICB7CitAQCAtNTUyLDE3ICs1NDgsMzMgQEAKKyAgICAgICAgIHJldHVy biBmYWxzZTsKKyAgICAgfQorIAorLSAgICBhdl9mcmFtZV91bnJlZihtX3BGcmFtZSk7CistCist ICAgIGludCBmcmFtZUZpbmlzaGVkOworKyAgICBpbnQgcmMgPSBhdmNvZGVjX3NlbmRfcGFja2V0 KG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BQYWNrZXQpOworKyAgICBpZihyYyA9PSBBVkVSUk9S KEVBR0FJTikpCisrICAgIHsKKysgICAgICAgIHJjID0gMDsKKysgICAgfQorIAorLSAgICBpbnQg Ynl0ZXNEZWNvZGVkID0gYXZjb2RlY19kZWNvZGVfdmlkZW8yKG1fcFZpZGVvQ29kZWNDb250ZXh0 LCBtX3BGcmFtZSwgJmZyYW1lRmluaXNoZWQsIG1fcFBhY2tldCk7CistICAgIGlmIChieXRlc0Rl Y29kZWQgPCAwKQorKyAgICBpZihyYyA9PSBBVkVSUk9SX0VPRikKKysgICAgeworKyAgICAgICAg cmV0dXJuIGZhbHNlOworKyAgICB9CisrICAgIGVsc2UgaWYocmMgPCAwKQorICAgICB7CistICAg ICAgICB0aHJvdyBsb2dpY19lcnJvcigiRmFpbGVkIHRvIGRlY29kZSB2aWRlbyBmcmFtZTogYnl0 ZXNEZWNvZGVkIDwgMCIpOworKyAgICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIkZhaWxlZCB0byBk ZWNvZGUgdmlkZW8gZnJhbWU6IGF2Y29kZWNfc2VuZF9wYWNrZXQoKSA8IDAiKTsKKyAgICAgfQor IAorLSAgICByZXR1cm4gZnJhbWVGaW5pc2hlZCA+IDA7CisrICAgIHJjID0gYXZjb2RlY19yZWNl aXZlX2ZyYW1lKG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BGcmFtZSk7CisrICAgIHN3aXRjaChy YykKKysgICAgeworKyAgICAgICAgY2FzZSAwOgorKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor KworKyAgICAgICAgY2FzZSBBVkVSUk9SKEVBR0FJTik6CisrICAgICAgICAgICAgcmV0dXJuIGZh bHNlOworKworKyAgICAgICAgZGVmYXVsdDoKKysgICAgICAgICAgICB0aHJvdyBsb2dpY19lcnJv cigiRmFpbGVkIHRvIGRlY29kZSB2aWRlbyBmcmFtZTogYXZjb2RlY19yZWNlaXZlX2ZyYW1lKCkg PCAwIik7CisrICAgIH0KKyB9CisgCisgYm9vbCBNb3ZpZURlY29kZXI6OmdldFZpZGVvUGFja2V0 KCkKK0BAIC01NzAsOCArNTgyLDYgQEAKKyAgICAgYm9vbCBmcmFtZXNBdmFpbGFibGUgPSB0cnVl OworICAgICBib29sIGZyYW1lRGVjb2RlZCA9IGZhbHNlOworIAorLSAgICBpbnQgYXR0ZW1wdHMg PSAwOworLQorICAgICBpZiAobV9wUGFja2V0KQorICAgICB7CisgICAgICAgICBhdl9wYWNrZXRf dW5yZWYobV9wUGFja2V0KTsKK0BAIC01ODAsNiArNTkwLDcgQEAKKyAKKyAgICAgbV9wUGFja2V0 ID0gbmV3IEFWUGFja2V0KCk7CisgCisrCisgICAgIHdoaWxlIChmcmFtZXNBdmFpbGFibGUgJiYg IWZyYW1lRGVjb2RlZCkKKyAgICAgeworICAgICAgICAgZnJhbWVzQXZhaWxhYmxlID0gYXZfcmVh ZF9mcmFtZShtX3BGb3JtYXRDb250ZXh0LCBtX3BQYWNrZXQpID49IDA7CitAQCAtNjQ0LDcgKzY1 NSw3IEBACisgCisgaW50MzJfdCBNb3ZpZURlY29kZXI6OmdldFN0cmVhbVJvdGF0aW9uKCkKKyB7 CistICAgIGludDMyX3QqIG1hdHJpeCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KGF2X3N0 cmVhbV9nZXRfc2lkZV9kYXRhKG1fcFZpZGVvU3RyZWFtLCBBVl9QS1RfREFUQV9ESVNQTEFZTUFU UklYLCBudWxscHRyKSk7CisrICAgIGF1dG8gbWF0cml4ID0gcmVpbnRlcnByZXRfY2FzdDxpbnQz Ml90Kj4oYXZfc3RyZWFtX2dldF9zaWRlX2RhdGEobV9wVmlkZW9TdHJlYW0sIEFWX1BLVF9EQVRB X0RJU1BMQVlNQVRSSVgsIG51bGxwdHIpKTsKKyAgICAgaWYgKG1hdHJpeCkKKyAgICAgeworICAg ICAgICAgYXV0byBhbmdsZSA9IGxyb3VuZChhdl9kaXNwbGF5X3JvdGF0aW9uX2dldChtYXRyaXgp KTsKKworLS0tIGEvbGliZmZtcGVndGh1bWJuYWlsZXIvbW92aWVkZWNvZGVyLmgJMjAxNy0xMS0x MiAwNDoyMzozOC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL2xpYmZmbXBlZ3RodW1ibmFpbGVyL21v dmllZGVjb2Rlci5oCTIwMjMtMDUtMDUgMTM6MjY6MDcuMDk1NTI5OTExIC0wNDAwCitAQCAtNzgs NyArNzgsNyBAQAorICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBtX1ZpZGVvU3RyZWFtOw0K KyAgICAgQVZGb3JtYXRDb250ZXh0KiAgICAgICAgbV9wRm9ybWF0Q29udGV4dDsNCisgICAgIEFW Q29kZWNDb250ZXh0KiAgICAgICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0Ow0KKy0gICAgQVZDb2Rl YyogICAgICAgICAgICAgICAgbV9wVmlkZW9Db2RlYzsNCisrICAgIGNvbnN0IEFWQ29kZWMqICAg ICAgICAgIG1fcFZpZGVvQ29kZWM7DQorICAgICBBVkZpbHRlckdyYXBoKiAgICAgICAgICBtX3BG aWx0ZXJHcmFwaDsNCisgICAgIEFWRmlsdGVyQ29udGV4dCogICAgICAgIG1fcEZpbHRlclNvdXJj ZTsNCisgICAgIEFWRmlsdGVyQ29udGV4dCogICAgICAgIG1fcEZpbHRlclNpbms7DQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtcGVn dGh1bWJuYWlsZXIvdGVtcGxhdGUKaW5kZXggMDM5ZWVhNzYyMmIzLi4zNWQ1NDYwMThkMTIgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ2ZmbXBlZ3RodW1ibmFpbGVyJwogcGtnbmFtZT1mZm1wZWd0aHVtYm5haWxlcgog dmVyc2lvbj0yLjIuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UK IGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJsaWJwbmctZGV2ZWwg bGlianBlZy10dXJiby1kZXZlbCBmZm1wZWctZGV2ZWwiCkBAIC05LDggKzksOCBAQCBkZXBlbmRz PSJmZm1wZWciCiBzaG9ydF9kZXNjPSJMaWdodHdlaWdodCB2aWRlbyB0aHVtYm5haWxlciIKIG1h aW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwt Mi4wLW9yLWxhdGVyIgotaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9kaXJrdmRiLyR7cGtn bmFtZX0iCi1kaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3JlbGVhc2VzL2Rvd25sb2FkLyR7dmVyc2lv bn0vJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci5iejIiCitob21lcGFnZT0iaHR0cHM6Ly9naXRo dWIuY29tL2Rpcmt2ZGIiCitkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9LyR7cGtnbmFtZX0vcmVsZWFz ZXMvZG93bmxvYWQvJHt2ZXJzaW9ufS8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLmJ6MiIKIGNo ZWNrc3VtPTFjYjI0MDU5YzM4MjIzZjY1N2IzMDBjODRkZDgwNDkxYjcwNDBkNGI2OTQ3MWM0ZmVh NjliZTg2MmJjOTliNWIKIAogcG9zdF9pbnN0YWxsKCkgewoKRnJvbSBiOWUwODAxNWI4NWFiYmQx M2JhMzU4ZGFjNTMzNjNlZTY2ZmY2ODMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzMvMTE1XSBmZm1wZWd0aHVtYnM6IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL2ZmbXBlZ3RodW1icy90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtcGVndGh1bWJzL3Rl bXBsYXRlCmluZGV4IDVmMGI5NDE0ZGFkYS4uMTFiODgxOTM1MjhmIDEwMDY0NAotLS0gYS9zcmNw a2dzL2ZmbXBlZ3RodW1icy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZmbXBlZ3RodW1icy90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZmbXBlZ3RodW1icycK IHBrZ25hbWU9ZmZtcGVndGh1bWJzCiB2ZXJzaW9uPTIyLjEyLjEKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtlLW1v ZHVsZXMga2NvcmVhZGRvbnMga2NvbmZpZy1kZXZlbAogIHBrZy1jb25maWcgcXQ1LWhvc3QtdG9v bHMgcXQ1LXFtYWtlIGdldHRleHQiCgpGcm9tIDM4YjUzOGQ5NWU0ODUzZjkyNThhOTk3NDAyNTJi MjA3NDRlNGIwN2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVj dDogW1BBVENIIDAzNC8xMTVdIGZmbXMyOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgNDI0ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysKIHNyY3BrZ3MvZmZtczIvdGVtcGxhdGUgICAgICAgICAgICAgIHwgICAyICst CiAyIGZpbGVzIGNoYW5nZWQsIDQyNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1zMi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvZmZt czIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uMTQ3OWZhYmNhZmNiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1zMi9w YXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSw0MjQgQEAKK0Zyb20gNDU2NzMxNDllOWEy ZjU1ODY4NTVhZDQ3MmUzMDU5MDg0ZWFhMzZiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy b206IERlcmVrIEJ1aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwuY29tPgorRGF0ZTog VHVlLCA0IE1heSAyMDIxIDE0OjQxOjIxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBhdXRv IGZvciBBVkNvZGVjCisKK1RoZSBnZW5pdXNlcyBvdmVyIGF0IEZGbXBlZyBkZWNpZGVkIHRvIGNv bnN0aWZ5IHRoaXMgQVBJLCBzbyBvbGQKK3ZlcnNpb25zIG9mIHRoZSBsaWJyYXJ5IHdpbGwgcmV0 dXJuIEFWQ29kZWMgKiwgd2hpbGUgbmV3IHZlcnNpb25zCitvZiB0aGUgbGliYXJ5IHdpbGwgcmV0 dXJuIGNvbnN0IEFWQ29kZWMgKiwgd2hpY2gsIGluIEMrKywgYXJlIG5vdAorT0sgdG8gY29udmVy dCBiZXR3ZWVuLgorCitSYXRoZXIgdGhhbiB1c2Ugc29tZSBtYWNybyBoZWxsIGluIGZmbXNjb21w YXQuaCwgd2UgY2FuIHdvcmsgYXJvdW5kCit0aGlzIGJ5IHVzaW5nIGF1dG8uCisKK0dyb3NzLgor CitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWls LmNvbT4KKy0tLQorIHNyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCB8IDIgKy0KKyBzcmMvY29yZS9p bmRleGluZy5jcHAgICAgfCA2ICsrKy0tLQorIHNyYy9jb3JlL3ZpZGVvc291cmNlLmNwcCB8IDIg Ky0KKyAzIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKwor ZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCBiL3NyYy9jb3JlL2F1ZGlvc291 cmNlLmNwcAoraW5kZXggZTRjZTk3Yy4uYWMwOTY2NiAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2F1 ZGlvc291cmNlLmNwcAorKysrIGIvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwCitAQCAtNDY5LDcg KzQ2OSw3IEBAIHZvaWQgRkZNU19BdWRpb1NvdXJjZTo6T3BlbkZpbGUoKSB7CisgCisgICAgIExB VkZPcGVuRmlsZShTb3VyY2VGaWxlLmNfc3RyKCksIEZvcm1hdENvbnRleHQsIFRyYWNrTnVtYmVy KTsKKyAKKy0gICAgQVZDb2RlYyAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRD b250ZXh0LT5zdHJlYW1zW1RyYWNrTnVtYmVyXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysgICAg YXV0byAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1z W1RyYWNrTnVtYmVyXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAgaWYgKENvZGVjID09IG51 bGxwdHIpCisgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09ESU5H LCBGRk1TX0VSUk9SX0NPREVDLAorICAgICAgICAgICAgICJBdWRpbyBjb2RlYyBub3QgZm91bmQi KTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9pbmRleGluZy5jcHAgYi9zcmMvY29yZS9pbmRleGlu Zy5jcHAKK2luZGV4IGU1NDdjNWEuLjU5ZmI0ZTggMTAwNjQ0CistLS0gYS9zcmMvY29yZS9pbmRl eGluZy5jcHAKKysrKyBiL3NyYy9jb3JlL2luZGV4aW5nLmNwcAorQEAgLTM4NCw3ICszODQsNyBA QCBGRk1TX1RyYWNrVHlwZSBGRk1TX0luZGV4ZXI6OkdldFRyYWNrVHlwZShpbnQgVHJhY2spIHsK KyB9CisgCisgY29uc3QgY2hhciAqRkZNU19JbmRleGVyOjpHZXRUcmFja0NvZGVjKGludCBUcmFj aykgeworLSAgICBBVkNvZGVjICpjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENv bnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworKyAgICBhdXRvICpj b2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2td LT5jb2RlY3Bhci0+Y29kZWNfaWQpOworICAgICByZXR1cm4gY29kZWMgPyBjb2RlYy0+bmFtZSA6 IG51bGxwdHI7CisgfQorIAorQEAgLTQwMiw3ICs0MDIsNyBAQCBGRk1TX0luZGV4ICpGRk1TX0lu ZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgVXNlRFRTKTsKKyAKKyAgICAgICAg IGlmIChJbmRleE1hc2suY291bnQoaSkgJiYgRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29k ZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPKSB7CistICAgICAgICAgICAg QVZDb2RlYyAqVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQt PnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAgICAgICAgICAgYXV0byAqVmlk ZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0t PmNvZGVjcGFyLT5jb2RlY19pZCk7CisgICAgICAgICAgICAgaWYgKCFWaWRlb0NvZGVjKSB7Cisg ICAgICAgICAgICAgICAgIEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmRpc2NhcmQgPSBBVkRJ U0NBUkRfQUxMOworICAgICAgICAgICAgICAgICBJbmRleE1hc2suZXJhc2UoaSk7CitAQCAtNDMz LDcgKzQzMyw3IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6RG9JbmRleGluZygpIHsKKyAg ICAgICAgICAgICAgICAgSW5kZXhNYXNrLmluc2VydChpKTsKKyAgICAgICAgICAgICB9CisgICAg ICAgICB9IGVsc2UgaWYgKEluZGV4TWFzay5jb3VudChpKSAmJiBGb3JtYXRDb250ZXh0LT5zdHJl YW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8pIHsKKy0g ICAgICAgICAgICBBVkNvZGVjICpBdWRpb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9y bWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysgICAgICAgICAg ICBhdXRvICpBdWRpb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+ c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAgICAgICAgICBpZiAoQXVkaW9D b2RlYyA9PSBudWxscHRyKQorICAgICAgICAgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihG Rk1TX0VSUk9SX0NPREVDLCBGRk1TX0VSUk9SX1VOU1VQUE9SVEVELAorICAgICAgICAgICAgICAg ICAgICAgIkF1ZGlvIGNvZGVjIG5vdCBmb3VuZCIpOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3Zp ZGVvc291cmNlLmNwcCBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAoraW5kZXggYjg4OTk3MC4u ODk1NmMyMiAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAorKysrIGIvc3Jj L2NvcmUvdmlkZW9zb3VyY2UuY3BwCitAQCAtMTcxLDcgKzE3MSw3IEBAIEZGTVNfVmlkZW9Tb3Vy Y2U6OkZGTVNfVmlkZW9Tb3VyY2UoY29uc3QgY2hhciAqU291cmNlRmlsZSwgRkZNU19JbmRleCAm SW5kZXgsIGluCisgCisgICAgICAgICBMQVZGT3BlbkZpbGUoU291cmNlRmlsZSwgRm9ybWF0Q29u dGV4dCwgVmlkZW9UcmFjayk7CisgCistICAgICAgICBBVkNvZGVjICpDb2RlYyA9IGF2Y29kZWNf ZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVmlkZW9UcmFja10tPmNvZGVjcGFy LT5jb2RlY19pZCk7CisrICAgICAgICBhdXRvICpDb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVy KEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVmlkZW9UcmFja10tPmNvZGVjcGFyLT5jb2RlY19pZCk7 CisgICAgICAgICBpZiAoQ29kZWMgPT0gbnVsbHB0cikKKyAgICAgICAgICAgICB0aHJvdyBGRk1T X0V4Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09ESU5HLCBGRk1TX0VSUk9SX0NPREVDLAorICAgICAg ICAgICAgICAgICAiVmlkZW8gY29kZWMgbm90IGZvdW5kIik7CistLSAKKzIuNDAuMAorCitGcm9t IDk2Y2JmMzhlYTkzODE4MjlhMTMxNGY0MzJhMmM2MDQ5NWRjZWZhYWQgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCitGcm9tOiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWls LmNvbT4KK0RhdGU6IFR1ZSwgNCBNYXkgMjAyMSAxNDoxMjo0MSArMDEwMAorU3ViamVjdDogW1BB VENIXSBhbGw6IFVwZGF0ZSBBVlBhY2tldCBBUEkgdXNhZ2UKKworQVZQYWNrZXRzIG11c3QgYWxs IGJlIG9uIHRoZSBoZWFwIG5vdywgc2luY2UgaXQgaXMgbm8gbG9uZ2VyCitwYXJ0IG9mIHRoZSBs aWJhdiogQUJJLgorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0 ZW5odWlzQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCB8IDE2ICsr KysrKy0tLS0KKyBzcmMvY29yZS9pbmRleGluZy5jcHAgICAgfCA2MyArKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCisgc3JjL2NvcmUvaW5kZXhpbmcuaCAgICAgIHwgIDQg Ky0tCisgc3JjL2NvcmUvdXRpbHMuY3BwICAgICAgIHwgIDYgLS0tLQorIHNyYy9jb3JlL3V0aWxz LmggICAgICAgICB8ICAxIC0KKyBzcmMvY29yZS92aWRlb3NvdXJjZS5jcHAgfCAzMCArKysrKysr KysrLS0tLS0tLS0tCisgNiBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCA1NiBkZWxl dGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCBiL3NyYy9j b3JlL2F1ZGlvc291cmNlLmNwcAoraW5kZXggMzdjZjlhZS4uZTRjZTk3YyAxMDA2NDQKKy0tLSBh L3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAorKysrIGIvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3Bw CitAQCAtMjg1LDEwICsyODUsMTUgQEAgRkZNU19BdWRpb1NvdXJjZTo6QXVkaW9CbG9jayAqRkZN U19BdWRpb1NvdXJjZTo6Q2FjaGVCbG9jayhDYWNoZUl0ZXJhdG9yICZwb3MpIHsKKyBpbnQgRkZN U19BdWRpb1NvdXJjZTo6RGVjb2RlTmV4dEJsb2NrKENhY2hlSXRlcmF0b3IgKnBvcykgeworICAg ICBDdXJyZW50RnJhbWUgPSAmRnJhbWVzW1BhY2tldE51bWJlcl07CisgCistICAgIEFWUGFja2V0 IFBhY2tldDsKKy0gICAgaWYgKCFSZWFkUGFja2V0KCZQYWNrZXQpKQorKyAgICBBVlBhY2tldCAq UGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrICAgIGlmICghUGFja2V0KQorKyAgICAgICAg dGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9QQVJTRVIsIEZGTVNfRVJST1JfQUxMT0NB VElPTl9GQUlMRUQsCisrICAgICAgICAgICAgIkNvdWxkIG5vdCBhbGxvY2F0ZSBwYWNrZXQuIik7 CisrICAgIGlmICghUmVhZFBhY2tldChQYWNrZXQpKSB7CisrICAgICAgICBhdl9wYWNrZXRfZnJl ZSgmUGFja2V0KTsKKyAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfUEFS U0VSLCBGRk1TX0VSUk9SX1VOS05PV04sCisgICAgICAgICAgICAgIlJlYWRQYWNrZXQgdW5leHBl Y3RlZGx5IGZhaWxlZCB0byByZWFkIGEgcGFja2V0Iik7CisrICAgIH0KKyAKKyAgICAgLy8gUmVh ZFBhY2tldCBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBwYWNrZXQgbnVtYmVyCisgICAgIEN1cnJlbnRG cmFtZSA9ICZGcmFtZXNbUGFja2V0TnVtYmVyXTsKK0BAIC0yOTcsOCArMzAyLDkgQEAgaW50IEZG TVNfQXVkaW9Tb3VyY2U6OkRlY29kZU5leHRCbG9jayhDYWNoZUl0ZXJhdG9yICpwb3MpIHsKKyAg ICAgaW50IE51bWJlck9mU2FtcGxlcyA9IDA7CisgICAgIEF1ZGlvQmxvY2sgKkNhY2hlZEJsb2Nr ID0gbnVsbHB0cjsKKyAgICAgCistICAgIGludCBSZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0KENv ZGVjQ29udGV4dCwgJlBhY2tldCk7CistICAgIGF2X3BhY2tldF91bnJlZigmUGFja2V0KTsKKysg ICAgaW50IFJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQoQ29kZWNDb250ZXh0LCBQYWNrZXQpOwor KyAgICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKysgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tl dCk7CisgCisgICAgIGF2X2ZyYW1lX3VucmVmKERlY29kZUZyYW1lKTsKKyAgICAgUmV0ID0gYXZj b2RlY19yZWNlaXZlX2ZyYW1lKENvZGVjQ29udGV4dCwgRGVjb2RlRnJhbWUpOworQEAgLTUxMyw4 ICs1MTksNiBAQCB2b2lkIEZGTVNfQXVkaW9Tb3VyY2U6OlNlZWsoKSB7CisgfQorIAorIGJvb2wg RkZNU19BdWRpb1NvdXJjZTo6UmVhZFBhY2tldChBVlBhY2tldCAqUGFja2V0KSB7CistICAgIElu aXROdWxsUGFja2V0KCpQYWNrZXQpOworLQorICAgICB3aGlsZSAoYXZfcmVhZF9mcmFtZShGb3Jt YXRDb250ZXh0LCBQYWNrZXQpID49IDApIHsKKyAgICAgICAgIGlmIChQYWNrZXQtPnN0cmVhbV9p bmRleCA9PSBUcmFja051bWJlcikgeworICAgICAgICAgICAgIC8vIFJlcXVpcmVkIGJlY2F1c2Ug bm90IGFsbCBhdWRpbyBwYWNrZXRzLCBlc3BlY2lhbGx5IGluIG9nZywgaGF2ZSBhIHB0cy4gVXNl IHRoZSBwcmV2aW91cyB2YWxpZCBwYWNrZXQncyBwdHMgaW5zdGVhZC4KK2RpZmYgLS1naXQgYS9z cmMvY29yZS9pbmRleGluZy5jcHAgYi9zcmMvY29yZS9pbmRleGluZy5jcHAKK2luZGV4IDIzZmI5 NWIuLmU1NDdjNWEgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9pbmRleGluZy5jcHAKKysrKyBiL3Ny Yy9jb3JlL2luZGV4aW5nLmNwcAorQEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIEZGTVNfSW5kZXhl cjo6Q2hlY2tBdWRpb1Byb3BlcnRpZXMoaW50IFRyYWNrLCBBVkNvZGVjQ29udGV4dCAqQ29udGV4 dCkgeworICAgICB9CisgfQorIAorLXZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0 KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0LCBpbnQgKlJlcGVh dFBpY3QsCisrdm9pZCBGRk1TX0luZGV4ZXI6OlBhcnNlVmlkZW9QYWNrZXQoU2hhcmVkQVZDb250 ZXh0ICZWaWRlb0NvbnRleHQsIEFWUGFja2V0ICpwa3QsIGludCAqUmVwZWF0UGljdCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKkZyYW1lVHlwZSwgYm9vbCAqSW52 aXNpYmxlLCBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSAqTGFzdFBpY1N0cnVjdCkgeworICAgICBp ZiAoVmlkZW9Db250ZXh0LlBhcnNlcikgeworICAgICAgICAgdWludDhfdCAqT0I7CitAQCAtMzMw LDggKzMzMCw4IEBAIHZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFW Q29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0CisgICAgICAgICBhdl9wYXJzZXJf cGFyc2UyKFZpZGVvQ29udGV4dC5QYXJzZXIsCisgICAgICAgICAgICAgVmlkZW9Db250ZXh0LkNv ZGVjQ29udGV4dCwKKyAgICAgICAgICAgICAmT0IsICZPQlNpemUsCistICAgICAgICAgICAgcGt0 LmRhdGEsIHBrdC5zaXplLAorLSAgICAgICAgICAgIHBrdC5wdHMsIHBrdC5kdHMsIHBrdC5wb3Mp OworKyAgICAgICAgICAgIHBrdC0+ZGF0YSwgcGt0LT5zaXplLAorKyAgICAgICAgICAgIHBrdC0+ cHRzLCBwa3QtPmR0cywgcGt0LT5wb3MpOworIAorICAgICAgICAgLy8gSC4yNjQgKFBBRkYpIGFu ZCBIRVZDIG1heSBoYXZlIG9uZSBmaWVsZCBwZXIgcGFja2V0LCBzbyB3ZSBuZWVkIHRvIHRyYWNr CisgICAgICAgICAvLyB3aGVuIHdlIGhhdmUgYSBmdWxsIG9yIGhhbGYgZnJhbWUgYXZhaWxhYmxl LCBhbmQgbWFyayBvbmUgb2YgdGhlbSBhcworQEAgLTM1MSwxNSArMzUxLDE1IEBAIHZvaWQgRkZN U19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0 LCBBVlBhY2tldCAmcGt0CisgCisgICAgICAgICAqUmVwZWF0UGljdCA9IFZpZGVvQ29udGV4dC5Q YXJzZXItPnJlcGVhdF9waWN0OworICAgICAgICAgKkZyYW1lVHlwZSA9IFZpZGVvQ29udGV4dC5Q YXJzZXItPnBpY3RfdHlwZTsKKy0gICAgICAgICpJbnZpc2libGUgPSAoSW5jb21wbGV0ZUZyYW1l IHx8IFZpZGVvQ29udGV4dC5QYXJzZXItPnJlcGVhdF9waWN0IDwgMCB8fCAocGt0LmZsYWdzICYg QVZfUEtUX0ZMQUdfRElTQ0FSRCkpOworKyAgICAgICAgKkludmlzaWJsZSA9IChJbmNvbXBsZXRl RnJhbWUgfHwgVmlkZW9Db250ZXh0LlBhcnNlci0+cmVwZWF0X3BpY3QgPCAwIHx8IChwa3QtPmZs YWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCkpOworICAgICB9IGVsc2UgeworLSAgICAgICAgKklu dmlzaWJsZSA9ICEhKHBrdC5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpOworKyAgICAgICAg KkludmlzaWJsZSA9ICEhKHBrdC0+ZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKTsKKyAgICAg fQorIAorICAgICBpZiAoVmlkZW9Db250ZXh0LkNvZGVjQ29udGV4dC0+Y29kZWNfaWQgPT0gQVZf Q09ERUNfSURfVlA4KQorLSAgICAgICAgUGFyc2VWUDgocGt0LmRhdGFbMF0sIEludmlzaWJsZSwg RnJhbWVUeXBlKTsKKysgICAgICAgIFBhcnNlVlA4KHBrdC0+ZGF0YVswXSwgSW52aXNpYmxlLCBG cmFtZVR5cGUpOworICAgICBlbHNlIGlmIChWaWRlb0NvbnRleHQuQ29kZWNDb250ZXh0LT5jb2Rl Y19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpCistICAgICAgICBQYXJzZVZQOShwa3QuZGF0YVswXSwg SW52aXNpYmxlLCBGcmFtZVR5cGUpOworKyAgICAgICAgUGFyc2VWUDkocGt0LT5kYXRhWzBdLCBJ bnZpc2libGUsIEZyYW1lVHlwZSk7CisgfQorIAorIHZvaWQgRkZNU19JbmRleGVyOjpGcmVlKCkg eworQEAgLTQ1OCwzMiArNDU4LDM2IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6RG9JbmRl eGluZygpIHsKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBBVlBhY2tldCBQYWNrZXQ7Cist ICAgIEluaXROdWxsUGFja2V0KFBhY2tldCk7CisrICAgIEFWUGFja2V0ICpQYWNrZXQgPSBhdl9w YWNrZXRfYWxsb2MoKTsKKysgICAgaWYgKCFQYWNrZXQpCisrICAgICAgICB0aHJvdyBGRk1TX0V4 Y2VwdGlvbihGRk1TX0VSUk9SX0NPREVDLCBGRk1TX0VSUk9SX0FMTE9DQVRJT05fRkFJTEVELAor KyAgICAgICAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUgcGFja2V0LiIpOworICAgICBzdGQ6OnZl Y3RvcjxpbnQ2NF90PiBMYXN0VmFsaWRUUyhGb3JtYXRDb250ZXh0LT5uYl9zdHJlYW1zLCBBVl9O T1BUU19WQUxVRSk7CisgCisgICAgIGludDY0X3QgZmlsZXNpemUgPSBhdmlvX3NpemUoRm9ybWF0 Q29udGV4dC0+cGIpOworICAgICBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSBMYXN0UGljU3RydWN0 ID0gQVZfUElDVFVSRV9TVFJVQ1RVUkVfVU5LTk9XTjsKKy0gICAgd2hpbGUgKGF2X3JlYWRfZnJh bWUoRm9ybWF0Q29udGV4dCwgJlBhY2tldCkgPj0gMCkgeworKyAgICB3aGlsZSAoYXZfcmVhZF9m cmFtZShGb3JtYXRDb250ZXh0LCBQYWNrZXQpID49IDApIHsKKyAgICAgICAgIC8vIFVwZGF0ZSBw cm9ncmVzcworICAgICAgICAgLy8gRm9ybWF0Q29udGV4dC0+cGIgY2FuIGFwcGFyZW50bHkgYmUg TlVMTCB3aGVuIG9wZW5pbmcgaW1hZ2VzLgorICAgICAgICAgaWYgKElDICYmIEZvcm1hdENvbnRl eHQtPnBiKSB7CistICAgICAgICAgICAgaWYgKCgqSUMpKEZvcm1hdENvbnRleHQtPnBiLT5wb3Ms IGZpbGVzaXplLCBJQ1ByaXZhdGUpKQorKyAgICAgICAgICAgIGlmICgoKklDKShGb3JtYXRDb250 ZXh0LT5wYi0+cG9zLCBmaWxlc2l6ZSwgSUNQcml2YXRlKSkgeworKyAgICAgICAgICAgICAgICBh dl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAgICAgICAgICAgICAgdGhyb3cgRkZNU19FeGNl cHRpb24oRkZNU19FUlJPUl9DQU5DRUxMRUQsIEZGTVNfRVJST1JfVVNFUiwKKyAgICAgICAgICAg ICAgICAgICAgICJDYW5jZWxsZWQgYnkgdXNlciIpOworKyAgICAgICAgICAgIH0KKyAgICAgICAg IH0KKy0gICAgICAgIGlmICghSW5kZXhNYXNrLmNvdW50KFBhY2tldC5zdHJlYW1faW5kZXgpKSB7 CistICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQpOworKyAgICAgICAgaWYgKCFJ bmRleE1hc2suY291bnQoUGFja2V0LT5zdHJlYW1faW5kZXgpKSB7CisrICAgICAgICAgICAgYXZf cGFja2V0X3VucmVmKFBhY2tldCk7CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9 CisgCistICAgICAgICBpbnQgVHJhY2sgPSBQYWNrZXQuc3RyZWFtX2luZGV4OworKyAgICAgICAg aW50IFRyYWNrID0gUGFja2V0LT5zdHJlYW1faW5kZXg7CisgICAgICAgICBGRk1TX1RyYWNrICZU cmFja0luZm8gPSAoKlRyYWNrSW5kaWNlcylbVHJhY2tdOworLSAgICAgICAgYm9vbCBLZXlGcmFt ZSA9ICEhKFBhY2tldC5mbGFncyAmIEFWX1BLVF9GTEFHX0tFWSk7CisrICAgICAgICBib29sIEtl eUZyYW1lID0gISEoUGFja2V0LT5mbGFncyAmIEFWX1BLVF9GTEFHX0tFWSk7CisgICAgICAgICBS ZWFkVFMoUGFja2V0LCBMYXN0VmFsaWRUU1tUcmFja10sICgqVHJhY2tJbmRpY2VzKVtUcmFja10u VXNlRFRTKTsKKyAKKyAgICAgICAgIGlmIChGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+ Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPKSB7CistICAgICAgICAg ICAgaW50NjRfdCBQVFMgPSBUcmFja0luZm8uVXNlRFRTID8gUGFja2V0LmR0cyA6IFBhY2tldC5w dHM7CisrICAgICAgICAgICAgaW50NjRfdCBQVFMgPSBUcmFja0luZm8uVXNlRFRTID8gUGFja2V0 LT5kdHMgOiBQYWNrZXQtPnB0czsKKyAgICAgICAgICAgICBpZiAoUFRTID09IEFWX05PUFRTX1ZB TFVFKSB7CisgICAgICAgICAgICAgICAgIC8vIFZQeCBhbHQtcmVmcyBhcmUgb3V0cHV0IGFzIHBh Y2tldHMgd2hpY2ggbGFjayB0aW1lc3RtcHMgb3IgZHVyYXRpb25zLCBzaW5jZQorICAgICAgICAg ICAgICAgICAvLyB0aGV5IGFyZSBpbnZpc2libGUuIEN1cnJlbnRseSwgdGhlIHRpbWVzdGFtcCBt YW5nbGluZyBjb2RlIGluIGxpYmF2Zm9ybWF0CitAQCAtNDk1LDkgKzQ5OSwxMSBAQCBGRk1TX0lu ZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgICAgIC8vIEZG TVMyIGN1cnJlbnRseSBzb3J0cyBwYWNrZXRzIGJ5IFBUUywgd2hpY2ggd2lsbCBicmVhayBkZWNv ZGluZywgb3RoZXJ3aXNlLgorICAgICAgICAgICAgICAgICBib29sIEhhc0FsdFJlZnMgPSAoRm9y bWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja10tPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RF Q19JRF9WUDggfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdENv bnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf VlA5KTsKKy0gICAgICAgICAgICAgICAgaWYgKFBhY2tldC5kdXJhdGlvbiA9PSAwICYmICFIYXNB bHRSZWZzKQorKyAgICAgICAgICAgICAgICBpZiAoUGFja2V0LT5kdXJhdGlvbiA9PSAwICYmICFI YXNBbHRSZWZzKSB7CisrICAgICAgICAgICAgICAgICAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0 KTsKKyAgICAgICAgICAgICAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1Jf SU5ERVhJTkcsIEZGTVNfRVJST1JfUEFSU0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICJJ bnZhbGlkIHBhY2tldCBwdHMsIGR0cywgYW5kIGR1cmF0aW9uIik7CisrICAgICAgICAgICAgICAg IH0KKyAKKyAgICAgICAgICAgICAgICAgaWYgKFRyYWNrSW5mby5lbXB0eSgpKQorICAgICAgICAg ICAgICAgICAgICAgUFRTID0gMDsKK0BAIC01MTMsNyArNTE5LDcgQEAgRkZNU19JbmRleCAqRkZN U19JbmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAgIFBhcnNlVmlkZW9QYWNrZXQo QVZDb250ZXh0c1tUcmFja10sIFBhY2tldCwgJlJlcGVhdFBpY3QsICZGcmFtZVR5cGUsICZJbnZp c2libGUsICZMYXN0UGljU3RydWN0KTsKKyAKKyAgICAgICAgICAgICBUcmFja0luZm8uQWRkVmlk ZW9GcmFtZShQVFMsIFJlcGVhdFBpY3QsIEtleUZyYW1lLAorLSAgICAgICAgICAgICAgICBGcmFt ZVR5cGUsIFBhY2tldC5wb3MsIEludmlzaWJsZSk7CisrICAgICAgICAgICAgICAgIEZyYW1lVHlw ZSwgUGFja2V0LT5wb3MsIEludmlzaWJsZSk7CisgICAgICAgICB9IGVsc2UgaWYgKEZvcm1hdENv bnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZ UEVfQVVESU8pIHsKKyAgICAgICAgICAgICAvLyBGb3IgdmlkZW8gc2Vla2luZyB0aW1lc3RhbXBz IGFyZSB1c2VkIG9ubHkgaWYgYWxsIHBhY2tldHMgaGF2ZQorICAgICAgICAgICAgIC8vIHRpbWVz dGFtcHMsIHdoaWxlIGZvciBhdWRpbyB0aGV5J3JlIHVzZWQgaWYgYW55IGhhdmUgdGltZXN0YW1w cywKK0BAIC01MjIsMjggKzUyOCwyOSBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5k ZXhpbmcoKSB7CisgICAgICAgICAgICAgICAgIFRyYWNrSW5mby5IYXNUUyA9IHRydWU7CisgCisg ICAgICAgICAgICAgaW50NjRfdCBTdGFydFNhbXBsZSA9IEFWQ29udGV4dHNbVHJhY2tdLkN1cnJl bnRTYW1wbGU7CistICAgICAgICAgICAgdWludDMyX3QgU2FtcGxlQ291bnQgPSBJbmRleEF1ZGlv UGFja2V0KFRyYWNrLCAmUGFja2V0LCBBVkNvbnRleHRzW1RyYWNrXSwgKlRyYWNrSW5kaWNlcyk7 CisrICAgICAgICAgICAgdWludDMyX3QgU2FtcGxlQ291bnQgPSBJbmRleEF1ZGlvUGFja2V0KFRy YWNrLCBQYWNrZXQsIEFWQ29udGV4dHNbVHJhY2tdLCAqVHJhY2tJbmRpY2VzKTsKKyAgICAgICAg ICAgICBUcmFja0luZm8uU2FtcGxlUmF0ZSA9IEFWQ29udGV4dHNbVHJhY2tdLkNvZGVjQ29udGV4 dC0+c2FtcGxlX3JhdGU7CisgCisgICAgICAgICAgICAgVHJhY2tJbmZvLkFkZEF1ZGlvRnJhbWUo TGFzdFZhbGlkVFNbVHJhY2tdLAorLSAgICAgICAgICAgICAgICBTdGFydFNhbXBsZSwgU2FtcGxl Q291bnQsIEtleUZyYW1lLCBQYWNrZXQucG9zLCBQYWNrZXQuZmxhZ3MgJiBBVl9QS1RfRkxBR19E SVNDQVJEKTsKKysgICAgICAgICAgICAgICAgU3RhcnRTYW1wbGUsIFNhbXBsZUNvdW50LCBLZXlG cmFtZSwgUGFja2V0LT5wb3MsIFBhY2tldC0+ZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKTsK KyAgICAgICAgIH0KKyAKKy0gICAgICAgIGlmICghKFBhY2tldC5mbGFncyAmIEFWX1BLVF9GTEFH X0RJU0NBUkQpKQorLSAgICAgICAgICAgIFRyYWNrSW5mby5MYXN0RHVyYXRpb24gPSBQYWNrZXQu ZHVyYXRpb247CisrICAgICAgICBpZiAoIShQYWNrZXQtPmZsYWdzICYgQVZfUEtUX0ZMQUdfRElT Q0FSRCkpCisrICAgICAgICAgICAgVHJhY2tJbmZvLkxhc3REdXJhdGlvbiA9IFBhY2tldC0+ZHVy YXRpb247CisgCistICAgICAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7CisrICAgICAgICBh dl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKyAgICAgfQorKyAgICBhdl9wYWNrZXRfZnJlZSgmUGFj a2V0KTsKKyAKKyAgICAgVHJhY2tJbmRpY2VzLT5GaW5hbGl6ZShBVkNvbnRleHRzLCBGb3JtYXRD b250ZXh0LT5pZm9ybWF0LT5uYW1lKTsKKyAgICAgcmV0dXJuIFRyYWNrSW5kaWNlcy5yZWxlYXNl KCk7CisgfQorIAorLXZvaWQgRkZNU19JbmRleGVyOjpSZWFkVFMoY29uc3QgQVZQYWNrZXQgJlBh Y2tldCwgaW50NjRfdCAmVFMsIGJvb2wgJlVzZURUUykgeworLSAgICBpZiAoIVVzZURUUyAmJiBQ YWNrZXQucHRzICE9IEFWX05PUFRTX1ZBTFVFKQorLSAgICAgICAgVFMgPSBQYWNrZXQucHRzOwor K3ZvaWQgRkZNU19JbmRleGVyOjpSZWFkVFMoY29uc3QgQVZQYWNrZXQgKlBhY2tldCwgaW50NjRf dCAmVFMsIGJvb2wgJlVzZURUUykgeworKyAgICBpZiAoIVVzZURUUyAmJiBQYWNrZXQtPnB0cyAh PSBBVl9OT1BUU19WQUxVRSkKKysgICAgICAgIFRTID0gUGFja2V0LT5wdHM7CisgICAgIGlmIChU UyA9PSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICAgIFVzZURUUyA9IHRydWU7CistICAgIGlmIChV c2VEVFMgJiYgUGFja2V0LmR0cyAhPSBBVl9OT1BUU19WQUxVRSkKKy0gICAgICAgIFRTID0gUGFj a2V0LmR0czsKKysgICAgaWYgKFVzZURUUyAmJiBQYWNrZXQtPmR0cyAhPSBBVl9OT1BUU19WQUxV RSkKKysgICAgICAgIFRTID0gUGFja2V0LT5kdHM7CisgfQorZGlmZiAtLWdpdCBhL3NyYy9jb3Jl L2luZGV4aW5nLmggYi9zcmMvY29yZS9pbmRleGluZy5oCitpbmRleCAzY2ZjM2MzLi41YzA2ODY4 IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvaW5kZXhpbmcuaAorKysrIGIvc3JjL2NvcmUvaW5kZXhp bmcuaAorQEAgLTgwLDEwICs4MCwxMCBAQCBwcml2YXRlOgorICAgICBpbnQ2NF90IEZpbGVzaXpl OworICAgICB1aW50OF90IERpZ2VzdFsyMF07CisgCistICAgIHZvaWQgUmVhZFRTKGNvbnN0IEFW UGFja2V0ICZQYWNrZXQsIGludDY0X3QgJlRTLCBib29sICZVc2VEVFMpOworKyAgICB2b2lkIFJl YWRUUyhjb25zdCBBVlBhY2tldCAqUGFja2V0LCBpbnQ2NF90ICZUUywgYm9vbCAmVXNlRFRTKTsK KyAgICAgdm9pZCBDaGVja0F1ZGlvUHJvcGVydGllcyhpbnQgVHJhY2ssIEFWQ29kZWNDb250ZXh0 ICpDb250ZXh0KTsKKyAgICAgdWludDMyX3QgSW5kZXhBdWRpb1BhY2tldChpbnQgVHJhY2ssIEFW UGFja2V0ICpQYWNrZXQsIFNoYXJlZEFWQ29udGV4dCAmQ29udGV4dCwgRkZNU19JbmRleCAmVHJh Y2tJbmRpY2VzKTsKKy0gICAgdm9pZCBQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAm VmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0LCBpbnQgKlJlcGVhdFBpY3QsIGludCAqRnJhbWVU eXBlLCBib29sICpJbnZpc2libGUsIGVudW0gQVZQaWN0dXJlU3RydWN0dXJlICpMYXN0UGljU3Ry dWN0KTsKKysgICAgdm9pZCBQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9D b250ZXh0LCBBVlBhY2tldCAqcGt0LCBpbnQgKlJlcGVhdFBpY3QsIGludCAqRnJhbWVUeXBlLCBi b29sICpJbnZpc2libGUsIGVudW0gQVZQaWN0dXJlU3RydWN0dXJlICpMYXN0UGljU3RydWN0KTsK KyAgICAgdm9pZCBGcmVlKCk7CisgcHVibGljOgorICAgICBGRk1TX0luZGV4ZXIoY29uc3QgY2hh ciAqRmlsZW5hbWUpOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3V0aWxzLmNwcCBiL3NyYy9jb3Jl L3V0aWxzLmNwcAoraW5kZXggY2U2NzUzMy4uOGEyZTk5NyAxMDA2NDQKKy0tLSBhL3NyYy9jb3Jl L3V0aWxzLmNwcAorKysrIGIvc3JjL2NvcmUvdXRpbHMuY3BwCitAQCAtNjIsMTIgKzYyLDYgQEAg dm9pZCBDbGVhckVycm9ySW5mbyhGRk1TX0Vycm9ySW5mbyAqRXJyb3JJbmZvKSB7CisgICAgIH0K KyB9CisgCistdm9pZCBJbml0TnVsbFBhY2tldChBVlBhY2tldCAmcGt0KSB7CistICAgIGF2X2lu aXRfcGFja2V0KCZwa3QpOworLSAgICBwa3QuZGF0YSA9IG51bGxwdHI7CistICAgIHBrdC5zaXpl ID0gMDsKKy19CistCisgdm9pZCBGaWxsQVAoRkZNU19BdWRpb1Byb3BlcnRpZXMgJkFQLCBBVkNv ZGVjQ29udGV4dCAqQ1RYLCBGRk1TX1RyYWNrICZGcmFtZXMpIHsKKyAgICAgQVAuU2FtcGxlRm9y bWF0ID0gc3RhdGljX2Nhc3Q8RkZNU19TYW1wbGVGb3JtYXQ+KGF2X2dldF9wYWNrZWRfc2FtcGxl X2ZtdChDVFgtPnNhbXBsZV9mbXQpKTsKKyAgICAgQVAuQml0c1BlclNhbXBsZSA9IGF2X2dldF9i eXRlc19wZXJfc2FtcGxlKENUWC0+c2FtcGxlX2ZtdCkgKiA4OworZGlmZiAtLWdpdCBhL3NyYy9j b3JlL3V0aWxzLmggYi9zcmMvY29yZS91dGlscy5oCitpbmRleCA5ODE5ZGM3Li4wMDNhYjc5IDEw MDY0NAorLS0tIGEvc3JjL2NvcmUvdXRpbHMuaAorKysrIGIvc3JjL2NvcmUvdXRpbHMuaAorQEAg LTU4LDcgKzU4LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1ha2VfdW5pcXVlKEFyZ3MmJi4uLiBh cmdzKSB7CisgfQorIAorIHZvaWQgQ2xlYXJFcnJvckluZm8oRkZNU19FcnJvckluZm8gKkVycm9y SW5mbyk7Cistdm9pZCBJbml0TnVsbFBhY2tldChBVlBhY2tldCAmcGt0KTsKKyB2b2lkIEZpbGxB UChGRk1TX0F1ZGlvUHJvcGVydGllcyAmQVAsIEFWQ29kZWNDb250ZXh0ICpDVFgsIEZGTVNfVHJh Y2sgJkZyYW1lcyk7CisgCisgdm9pZCBMQVZGT3BlbkZpbGUoY29uc3QgY2hhciAqU291cmNlRmls ZSwgQVZGb3JtYXRDb250ZXh0IComRm9ybWF0Q29udGV4dCwgaW50IFRyYWNrKTsKK2RpZmYgLS1n aXQgYS9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAgYi9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAK K2luZGV4IDA2YmQxNjEuLmI4ODk5NzAgMTAwNjQ0CistLS0gYS9zcmMvY29yZS92aWRlb3NvdXJj ZS5jcHAKKysrKyBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAorQEAgLTY3MywzMCArNjczLDM0 IEBAIHZvaWQgRkZNU19WaWRlb1NvdXJjZTo6RGVjb2RlTmV4dEZyYW1lKGludDY0X3QgJkFTdGFy dFRpbWUsIGludDY0X3QgJlBvcykgeworICAgICBpZiAoSGFzUGVuZGluZ0RlbGF5ZWRGcmFtZXMo KSkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgQVZQYWNrZXQgUGFja2V0OworLSAgICBJbml0 TnVsbFBhY2tldChQYWNrZXQpOworLQorLSAgICB3aGlsZSAoUmVhZEZyYW1lKCZQYWNrZXQpID49 IDApIHsKKy0gICAgICAgIGlmIChQYWNrZXQuc3RyZWFtX2luZGV4ICE9IFZpZGVvVHJhY2spIHsK Ky0gICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7CisrICAgIEFWUGFja2V0ICpQ YWNrZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKysgICAgaWYgKCFQYWNrZXQpCisrICAgICAgICB0 aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09ESU5HLCBGRk1TX0VSUk9SX0FMTE9D QVRJT05fRkFJTEVELAorKyAgICAgICAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUgcGFja2V0LiIp OworKworKyAgICB3aGlsZSAoUmVhZEZyYW1lKFBhY2tldCkgPj0gMCkgeworKyAgICAgICAgaWYg KFBhY2tldC0+c3RyZWFtX2luZGV4ICE9IFZpZGVvVHJhY2spIHsKKysgICAgICAgICAgICBhdl9w YWNrZXRfdW5yZWYoUGFja2V0KTsKKyAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH0K KyAKKyAgICAgICAgIGlmIChBU3RhcnRUaW1lIDwgMCkKKy0gICAgICAgICAgICBBU3RhcnRUaW1l ID0gRnJhbWVzLlVzZURUUyA/IFBhY2tldC5kdHMgOiBQYWNrZXQucHRzOworKyAgICAgICAgICAg IEFTdGFydFRpbWUgPSBGcmFtZXMuVXNlRFRTID8gUGFja2V0LT5kdHMgOiBQYWNrZXQtPnB0czsK KyAKKyAgICAgICAgIGlmIChQb3MgPCAwKQorLSAgICAgICAgICAgIFBvcyA9IFBhY2tldC5wb3M7 CisrICAgICAgICAgICAgUG9zID0gUGFja2V0LT5wb3M7CisgCistICAgICAgICBib29sIEZyYW1l RmluaXNoZWQgPSBEZWNvZGVQYWNrZXQoJlBhY2tldCk7CistICAgICAgICBhdl9wYWNrZXRfdW5y ZWYoJlBhY2tldCk7CistICAgICAgICBpZiAoRnJhbWVGaW5pc2hlZCkKKysgICAgICAgIGJvb2wg RnJhbWVGaW5pc2hlZCA9IERlY29kZVBhY2tldChQYWNrZXQpOworKyAgICAgICAgYXZfcGFja2V0 X3VucmVmKFBhY2tldCk7CisrICAgICAgICBpZiAoRnJhbWVGaW5pc2hlZCkgeworKyAgICAgICAg ICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworICAgICAgICAgICAgIHJldHVybjsKKysgICAg ICAgIH0KKyAgICAgfQorIAorICAgICAvLyBGbHVzaCBmaW5hbCBmcmFtZXMKKy0gICAgSW5pdE51 bGxQYWNrZXQoUGFja2V0KTsKKy0gICAgRGVjb2RlUGFja2V0KCZQYWNrZXQpOworKyAgICBEZWNv ZGVQYWNrZXQoUGFja2V0KTsKKysgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7CisgfQorIAor IGJvb2wgRkZNU19WaWRlb1NvdXJjZTo6U2Vla1RvKGludCBuLCBpbnQgU2Vla09mZnNldCkgewor LS0gCisyLjQwLjAKKworRnJvbSBiZjllMDNlOWUwODUzNGMwMjRlNWE3NDRhNjQzN2M0YWFjMTYw MjAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVy ZWsuYnVpdGVuaHVpc0BnbWFpbC5jb20+CitEYXRlOiBUdWUsIDQgTWF5IDIwMjEgMTQ6MjA6NDcg KzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIGNvbmZpZ3VyZTogUmVtb3ZlIGRlcHJlY2F0ZWQg QVBJIHVzZQorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5o dWlzQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQgKystLQorIDEgZmlsZSBjaGFu Z2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25m aWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGIzNWVmODBiYy4uZDE5NzE0ZDBmIDEwMDY0 NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMDIsMTAgKzEw MiwxMCBAQCBDRkxBR1M9IiRfQ0ZMQUdTICRGRk1QRUdfQ0ZMQUdTIgorCisgQUNfREVGVU4oW1RF U1RfRkZNUEVHXSwKKyAgICAgICAgICBbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShb WworLSAgICAgICAgICAgICNpbmNsdWRlIDxsaWJhdmNvZGVjL2F2Y29kZWMuaD4KKysgICAgICAg ICAgICAjaW5jbHVkZSA8bGliYXZmb3JtYXQvYXZmb3JtYXQuaD4KKyAgICAgICAgICAgICAjaW5j bHVkZSA8bGlic3dzY2FsZS9zd3NjYWxlLmg+CisgICAgICAgICAgICAgXV0sW1sKKy0gICAgICAg ICAgICAgICAgYXZjb2RlY19yZWdpc3Rlcl9hbGwoKTsKKysgICAgICAgICAgICAgICAgYXZmb3Jt YXRfbmV0d29ya19pbml0KCk7CisgICAgICAgICAgICAgICAgIHN3c2NhbGVfdmVyc2lvbigpOwor ICAgICAgICAgICAgIF1dKV0sIFtldmFsICQxPXllc10sIFtldmFsICQxPW5vXSkKKyAgICAgICAg IF0pCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtczIvdGVtcGxhdGUgYi9zcmNwa2dzL2ZmbXMy L3RlbXBsYXRlCmluZGV4IDY4ZThhMGMxNGJjZS4uMmFjZmFkYWM0NGIzIDEwMDY0NAotLS0gYS9z cmNwa2dzL2ZmbXMyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZmZtczIvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1zMicKIHBrZ25hbWU9ZmZtczIKIHZl cnNpb249Mi40MAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZp Z3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZW5hYmxlLXNoYXJlZCAtLWRpc2FibGUtc3RhdGljIgog aG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGF1dG9jb25mIGF1dG9tYWtlIGxpYnRvb2wiCgpG cm9tIDc3MDIyZTNiMDY2MDVmYjcxMzZkZWRiMmFmOTdmNzdhMjhhZTkyMTMgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzNS8xMTVdIGZyZWVy ZHA6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL2ZyZWVyZHAvcGF0Y2hlcy9mZm1w ZWc2X2FhMmNiOWFhLnBhdGNoICAgIHwgNDIgKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9m cmVlcmRwL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hh bmdlZCwgNDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEyY2I5YWEucGF0Y2gKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoIGIvc3Jj cGtncy9mcmVlcmRwL3BhdGNoZXMvZmZtcGVnNl9hYTJjYjlhYS5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE0MzI0ZGEzYTg4MgotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEyY2I5YWEucGF0Y2gKQEAgLTAs MCArMSw0MiBAQAorRnJvbSBhYTJjYjlhYTVmZjU1NjI0MzM1OThiYTE2OGE0NjZlMDc1MmJjYTBl IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogYWthbGxhYmV0aCA8YWthbGxhYmV0aEBw b3N0ZW8ubmV0PgorRGF0ZTogVHVlLCAxNCBGZWIgMjAyMyAwNzo0ODo1NCArMDEwMAorU3ViamVj dDogW1BBVENIXSBGaXhlZCAjODY4NjogVXBkYXRlIGgyNjQgdG8gdXNlIG5ldyBGRk1QRUcgQVBJ CisKKy0tLQorIGNoYW5uZWxzL3RzbWYvY2xpZW50L2ZmbXBlZy90c21mX2ZmbXBlZy5jIHwgMiAr KworIGxpYmZyZWVyZHAvY29kZWMvaDI2NF9mZm1wZWcuYyAgICAgICAgICAgIHwgMiArKworIDIg ZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jaGFubmVscy90 c21mL2NsaWVudC9mZm1wZWcvdHNtZl9mZm1wZWcuYyBiL2NoYW5uZWxzL3RzbWYvY2xpZW50L2Zm bXBlZy90c21mX2ZmbXBlZy5jCitpbmRleCAzMzk0NjJkODY1Zi4uYmVlYTgwYjdhMWUgMTAwNjQ0 CistLS0gYS9jaGFubmVscy90c21mL2NsaWVudC9mZm1wZWcvdHNtZl9mZm1wZWcuYworKysrIGIv Y2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZtcGVnLmMKK0BAIC0yMzksOCArMjM5 LDEwIEBAIHN0YXRpYyBCT09MIHRzbWZfZmZtcGVnX2luaXRfc3RyZWFtKElUU01GRGVjb2Rlciog ZGVjb2RlciwgY29uc3QgVFNfQU1fTUVESUFfVFlQCisgCQl9CisgCX0KKyAKKysjaWYgTElCQVZD T0RFQ19WRVJTSU9OX0lOVCA8IEFWX1ZFUlNJT05fSU5UKDU5LCAxOCwgMTAwKQorIAlpZiAobWRl Y29kZXItPmNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19DQVBfVFJVTkNBVEVEKQorIAkJ bWRlY29kZXItPmNvZGVjX2NvbnRleHQtPmZsYWdzIHw9IEFWX0NPREVDX0ZMQUdfVFJVTkNBVEVE OworKyNlbmRpZgorIAorIAlyZXR1cm4gVFJVRTsKKyB9CitkaWZmIC0tZ2l0IGEvbGliZnJlZXJk cC9jb2RlYy9oMjY0X2ZmbXBlZy5jIGIvbGliZnJlZXJkcC9jb2RlYy9oMjY0X2ZmbXBlZy5jCitp bmRleCA4YTIzZGIyNDczYy4uODk2YTMzMzAxOWIgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2Nv ZGVjL2gyNjRfZmZtcGVnLmMKKysrKyBiL2xpYmZyZWVyZHAvY29kZWMvaDI2NF9mZm1wZWcuYwor QEAgLTYxNSwxMCArNjE1LDEyIEBAIHN0YXRpYyBCT09MIGxpYmF2Y29kZWNfaW5pdChIMjY0X0NP TlRFWFQqIGgyNjQpCisgCQkJZ290byBFWENFUFRJT047CisgCQl9CisgCisrI2lmIExJQkFWQ09E RUNfVkVSU0lPTl9JTlQgPCBBVl9WRVJTSU9OX0lOVCg1OSwgMTgsIDEwMCkKKyAJCWlmIChzeXMt PmNvZGVjRGVjb2Rlci0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQX1RSVU5DQVRFRCkKKyAJ CXsKKyAJCQlzeXMtPmNvZGVjRGVjb2RlckNvbnRleHQtPmZsYWdzIHw9IEFWX0NPREVDX0ZMQUdf VFJVTkNBVEVEOworIAkJfQorKyNlbmRpZgorIAorICNpZmRlZiBXSVRIX1ZBQVBJCisgCmRpZmYg LS1naXQgYS9zcmNwa2dzL2ZyZWVyZHAvdGVtcGxhdGUgYi9zcmNwa2dzL2ZyZWVyZHAvdGVtcGxh dGUKaW5kZXggMjVlOGFhOTY3N2YwLi40ZDUxYzgxODk5MDIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv ZnJlZXJkcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZyZWVyZHAvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmcmVlcmRwJwogcGtnbmFtZT1mcmVlcmRwCiB2 ZXJzaW9uPTIuMTAuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UK IGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfQUxTQT1PTiAtRFdJVEhfQ1VQUz1PRkYgLURXSVRIX0ZG TVBFRz1PTgogIC1EV0lUSF9HU1RSRUFNRVJfMF8xMD1PRkYgLURXSVRIX0dTVFJFQU1FUl8xXzA9 T0ZGIC1EV0lUSF9KUEVHPU9OCgpGcm9tIGUwZDViMmZlOGYzMTYxY2Y5N2E2ZWM0MDhlNTQ1YzY3 Njg1ZWY1YjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDog W1BBVENIIDAzNi8xMTVdIGdlcmJlcmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy9nZXJiZXJhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRl IGIvc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlCmluZGV4IGFlMTRmMzVjNzY3Yy4uMmRjMGFjMGNl MDNiIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dlcmJlcmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9n ZXJiZXJhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ2Vy YmVyYScKIHBrZ25hbWU9Z2VyYmVyYQogdmVyc2lvbj0xLjEyLjEKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURXSVRIX1NZU1RFTUQ9 MCAtRFdJVEhfQVZDT0RFQz0xIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSA4 NzJjMzc0YTA4N2MwZWFmZDBmODEwZGUxNTUzZWZhYzQ3ZWQwY2Q2IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzcvMTE1XSBnb2xkZW5kaWN0 OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVz L2ZmbXBlZzQucGF0Y2ggfCAgMjEgLS0KIHNyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBl ZzUucGF0Y2ggfCAyMzIgKysrKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvZ29sZGVuZGlj dC90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgIDIgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMjMzIGlu c2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv Z29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9nb2xkZW5kaWN0L3BhdGNoZXMvZmZtcGVnNC5wYXRjaCBiL3NyY3BrZ3MvZ29sZGVuZGljdC9w YXRjaGVzL2ZmbXBlZzQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNDVm YTI3ZjU0Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVzL2Zm bXBlZzQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0tLS0gYS9mZm1wZWdh dWRpby5jYy5vcmlnIDIwMTgtMDUtMDkgMjI6MTY6MTMuNDgwNjU5OTU4ICswMjAwCi0rKysgYi9m Zm1wZWdhdWRpby5jYyAgICAgIDIwMTgtMDUtMDkgMjI6MTY6NTAuNzQ4MzIyNzkwICswMjAwCi1A QCAtMTQzLDcgKzE0Myw3IEBACi0gICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLQotLSAgdW5zaWdu ZWQgY2hhciAqIGF2aW9CdWZmZXIgPSAoIHVuc2lnbmVkIGNoYXIgKiApYXZfbWFsbG9jKCBrQnVm ZmVyU2l6ZSArIEZGX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUgKTsKLSsgIHVuc2lnbmVkIGNo YXIgKiBhdmlvQnVmZmVyID0gKCB1bnNpZ25lZCBjaGFyICogKWF2X21hbGxvYygga0J1ZmZlclNp emUgKyBBVl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFICk7Ci0gICBpZiAoICFhdmlvQnVmZmVy ICkKLSAgIHsKLSAgICAgZXJyb3JTdHJpbmcgPSBRT2JqZWN0Ojp0ciggImF2X21hbGxvYygpIGZh aWxlZC4iICk7Ci1AQCAtMzgwLDcgKzM4MCw3IEBACi0gICB9Ci0KLSAgIGlmICggIVF0NHg1OjpB dG9taWNJbnQ6OmxvYWRBY3F1aXJlKCBpc0NhbmNlbGxlZF8gKSAmJgotLSAgICAgICBjb2RlY0Nv bnRleHRfLT5jb2RlYy0+Y2FwYWJpbGl0aWVzICYgQ09ERUNfQ0FQX0RFTEFZICkKLSsgICAgICAg Y29kZWNDb250ZXh0Xy0+Y29kZWMtPmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9ERUxBWSAp Ci0gICB7Ci0gICAgIGF2X2luaXRfcGFja2V0KCAmcGFja2V0ICk7Ci0gICAgIGludCBnb3RGcmFt ZSA9IDA7Ci0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzUu cGF0Y2ggYi9zcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2NmYzk4YWRhMzY4Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9nb2xkZW5kaWN0L3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCww ICsxLDIzMiBAQAorRnJvbSAwM2JiZTAxYjc5YTFmMDdhNjc4MGNiNjBmMjNhMDg3MTA0YzVkNzdi IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWJzNjIgPG90dG9tYW5uQHlhbmRleC5y dT4KK0RhdGU6IEZyaSwgMzAgTWFyIDIwMTggMjI6NTM6MjQgKzAzMDAKK1N1YmplY3Q6IFtQQVRD SF0gRml4IHdhcm5pbmdzIHdoaWxlIGNvbXBpbGUgd2l0aCBGRk1wZWcgMy40LjIgKGlzc3VlICM5 NzgpCisKKy0tLQorIGZmbXBlZ2F1ZGlvLmNjIHwgNjggKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNjIgaW5zZXJ0aW9u cygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2ZmbXBlZ2F1ZGlvLmNjIGIvZmZt cGVnYXVkaW8uY2MKK2luZGV4IGVkMTE3MmJkZC4uNTZlOGY3ODhlIDEwMDY0NAorLS0tIGEvZmZt cGVnYXVkaW8uY2MKKysrKyBiL2ZmbXBlZ2F1ZGlvLmNjCitAQCAtOTEsNiArOTEsNyBAQCBzdHJ1 Y3QgRGVjb2RlckNvbnRleHQKKyAgIFFCeXRlQXJyYXkgYXVkaW9EYXRhXzsKKyAgIFFEYXRhU3Ry ZWFtIGF1ZGlvRGF0YVN0cmVhbV87CisgICBBVkZvcm1hdENvbnRleHQgKiBmb3JtYXRDb250ZXh0 XzsKKysgIEFWQ29kZWMgKiBjb2RlY187CisgICBBVkNvZGVjQ29udGV4dCAqIGNvZGVjQ29udGV4 dF87CisgICBBVklPQ29udGV4dCAqIGF2aW9Db250ZXh0XzsKKyAgIEFWU3RyZWFtICogYXVkaW9T dHJlYW1fOworQEAgLTExNCw2ICsxMTUsNyBAQCBEZWNvZGVyQ29udGV4dDo6RGVjb2RlckNvbnRl eHQoIFFCeXRlQXJyYXkgY29uc3QgJiBhdWRpb0RhdGEsIFFBdG9taWNJbnQgJiBpc0NhbgorICAg YXVkaW9EYXRhXyggYXVkaW9EYXRhICksCisgICBhdWRpb0RhdGFTdHJlYW1fKCBhdWRpb0RhdGFf ICksCisgICBmb3JtYXRDb250ZXh0XyggTlVMTCApLAorKyAgY29kZWNfKCBOVUxMICksCisgICBj b2RlY0NvbnRleHRfKCBOVUxMICksCisgICBhdmlvQ29udGV4dF8oIE5VTEwgKSwKKyAgIGF1ZGlv U3RyZWFtXyggTlVMTCApLAorQEAgLTE0Myw3ICsxNDUsMTEgQEAgYm9vbCBEZWNvZGVyQ29udGV4 dDo6b3BlbkNvZGVjKCBRU3RyaW5nICYgZXJyb3JTdHJpbmcgKQorICAgICByZXR1cm4gZmFsc2U7 CisgICB9CisKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTYgfHwgKCBMSUJBVkNP REVDX1ZFUlNJT05fTUFKT1IgPT0gNTYgJiYgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SIDwgNTYg KQorICAgdW5zaWduZWQgY2hhciAqIGF2aW9CdWZmZXIgPSAoIHVuc2lnbmVkIGNoYXIgKiApYXZf bWFsbG9jKCBrQnVmZmVyU2l6ZSArIEZGX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUgKTsKKysj ZWxzZQorKyAgdW5zaWduZWQgY2hhciAqIGF2aW9CdWZmZXIgPSAoIHVuc2lnbmVkIGNoYXIgKiAp YXZfbWFsbG9jKCBrQnVmZmVyU2l6ZSArIEFWX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUgKTsK KysjZW5kaWYKKyAgIGlmICggIWF2aW9CdWZmZXIgKQorICAgeworICAgICBlcnJvclN0cmluZyA9 IFFPYmplY3Q6OnRyKCAiYXZfbWFsbG9jKCkgZmFpbGVkLiIgKTsKK0BAIC0xODYsNyArMTkyLDEx IEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6Om9wZW5Db2RlYyggUVN0cmluZyAmIGVycm9yU3RyaW5n ICkKKyAgIC8vIEZpbmQgYXVkaW8gc3RyZWFtLCB1c2UgdGhlIGZpcnN0IGF1ZGlvIHN0cmVhbSBp ZiBhdmFpbGFibGUKKyAgIGZvciAoIHVuc2lnbmVkIGkgPSAwOyBpIDwgZm9ybWF0Q29udGV4dF8t Pm5iX3N0cmVhbXM7IGkrKyApCisgICB7CisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8 IDU3IHx8ICggTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SID09IDU3ICYmIExJQkFWQ09ERUNfVkVS U0lPTl9NSU5PUiA8IDMzICkKKyAgICAgaWYgKCBmb3JtYXRDb250ZXh0Xy0+c3RyZWFtc1tpXS0+ Y29kZWMtPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElPICkKKysjZWxzZQorKyAgICAg IGlmICggZm9ybWF0Q29udGV4dF8tPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY190eXBlID09 IEFWTUVESUFfVFlQRV9BVURJTyApCisrI2VuZGlmCisgICAgIHsKKyAgICAgICBhdWRpb1N0cmVh bV8gPSBmb3JtYXRDb250ZXh0Xy0+c3RyZWFtc1tpXTsKKyAgICAgICBicmVhazsKK0BAIC0xOTgs MjIgKzIwOCwzOCBAQCBib29sIERlY29kZXJDb250ZXh0OjpvcGVuQ29kZWMoIFFTdHJpbmcgJiBl cnJvclN0cmluZyApCisgICAgIHJldHVybiBmYWxzZTsKKyAgIH0KKworKyNpZiBMSUJBVkNPREVD X1ZFUlNJT05fTUFKT1IgPCA1NyB8fCAoIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA9PSA1NyAm JiBMSUJBVkNPREVDX1ZFUlNJT05fTUlOT1IgPCAzMyApCisgICBjb2RlY0NvbnRleHRfID0gYXVk aW9TdHJlYW1fLT5jb2RlYzsKKy0gIEFWQ29kZWMgKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNv ZGVyKCBjb2RlY0NvbnRleHRfLT5jb2RlY19pZCApOworLSAgaWYgKCAhY29kZWMgKQorKyAgY29k ZWNfID0gYXZjb2RlY19maW5kX2RlY29kZXIoIGNvZGVjQ29udGV4dF8tPmNvZGVjX2lkICk7Cisr ICBpZiAoICFjb2RlY18gKQorICAgeworICAgICBlcnJvclN0cmluZyA9IFFPYmplY3Q6OnRyKCAi Q29kZWMgW2lkOiAlMV0gbm90IGZvdW5kLiIgKS5hcmcoIGNvZGVjQ29udGV4dF8tPmNvZGVjX2lk ICk7CisgICAgIHJldHVybiBmYWxzZTsKKyAgIH0KKysjZWxzZQorKyAgY29kZWNfID0gYXZjb2Rl Y19maW5kX2RlY29kZXIoIGF1ZGlvU3RyZWFtXy0+Y29kZWNwYXItPmNvZGVjX2lkICk7CisrICBp ZiAoICFjb2RlY18gKQorKyAgeworKyAgICBlcnJvclN0cmluZyA9IFFPYmplY3Q6OnRyKCAiQ29k ZWMgW2lkOiAlMV0gbm90IGZvdW5kLiIgKS5hcmcoIGF1ZGlvU3RyZWFtXy0+Y29kZWNwYXItPmNv ZGVjX2lkICk7CisrICAgIHJldHVybiBmYWxzZTsKKysgIH0KKysgIGNvZGVjQ29udGV4dF8gPSBh dmNvZGVjX2FsbG9jX2NvbnRleHQzKCBjb2RlY18gKTsKKysgIGlmICggIWNvZGVjQ29udGV4dF8g KQorKyAgeworKyAgICBlcnJvclN0cmluZyA9IFFPYmplY3Q6OnRyKCAiYXZjb2RlY19hbGxvY19j b250ZXh0MygpIGZhaWxlZC4iICk7CisrICAgIHJldHVybiBmYWxzZTsKKysgIH0KKysgIGF2Y29k ZWNfcGFyYW1ldGVyc190b19jb250ZXh0KCBjb2RlY0NvbnRleHRfLCBhdWRpb1N0cmVhbV8tPmNv ZGVjcGFyICk7CisrI2VuZGlmCisKKy0gIHJldCA9IGF2Y29kZWNfb3BlbjIoIGNvZGVjQ29udGV4 dF8sIGNvZGVjLCBOVUxMICk7CisrICByZXQgPSBhdmNvZGVjX29wZW4yKCBjb2RlY0NvbnRleHRf LCBjb2RlY18sIE5VTEwgKTsKKyAgIGlmICggcmV0IDwgMCApCisgICB7CisgICAgIGVycm9yU3Ry aW5nID0gUU9iamVjdDo6dHIoICJhdmNvZGVjX29wZW4yKCkgZmFpbGVkOiAlMS4iICkuYXJnKCBh dkVycm9yU3RyaW5nKCByZXQgKSApOworICAgICByZXR1cm4gZmFsc2U7CisgICB9CisKKy0gIGF2 X2xvZyggTlVMTCwgQVZfTE9HX0lORk8sICJDb2RlYyBvcGVuOiAlczogY2hhbm5lbHM6ICVkLCBy YXRlOiAlZCwgZm9ybWF0OiAlc1xuIiwgY29kZWMtPmxvbmdfbmFtZSwKKysgIGF2X2xvZyggTlVM TCwgQVZfTE9HX0lORk8sICJDb2RlYyBvcGVuOiAlczogY2hhbm5lbHM6ICVkLCByYXRlOiAlZCwg Zm9ybWF0OiAlc1xuIiwgY29kZWNfLT5sb25nX25hbWUsCisgICAgICAgICAgIGNvZGVjQ29udGV4 dF8tPmNoYW5uZWxzLCBjb2RlY0NvbnRleHRfLT5zYW1wbGVfcmF0ZSwgYXZfZ2V0X3NhbXBsZV9m bXRfbmFtZSggY29kZWNDb250ZXh0Xy0+c2FtcGxlX2ZtdCApICk7CisgICByZXR1cm4gdHJ1ZTsK KyB9CitAQCAtMjUyLDEwICsyNzgsMTMgQEAgdm9pZCBEZWNvZGVyQ29udGV4dDo6Y2xvc2VDb2Rl YygpCisKKyAgIC8vIENsb3NpbmcgYSBjb2RlYyBjb250ZXh0IHdpdGhvdXQgcHJpb3IgYXZjb2Rl Y19vcGVuMigpIHdpbGwgcmVzdWx0IGluCisgICAvLyBhIGNyYXNoIGluIGZmbXBlZworLSAgaWYg KCBhdWRpb1N0cmVhbV8gJiYgYXVkaW9TdHJlYW1fLT5jb2RlYyAmJiBhdWRpb1N0cmVhbV8tPmNv ZGVjLT5jb2RlYyApCisrICBpZiAoIGF1ZGlvU3RyZWFtXyAmJiBjb2RlY0NvbnRleHRfICYmIGNv ZGVjXyApCisgICB7CisgICAgIGF1ZGlvU3RyZWFtXy0+ZGlzY2FyZCA9IEFWRElTQ0FSRF9BTEw7 CistICAgIGF2Y29kZWNfY2xvc2UoIGF1ZGlvU3RyZWFtXy0+Y29kZWMgKTsKKysgICAgYXZjb2Rl Y19jbG9zZSggY29kZWNDb250ZXh0XyApOworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1Ig PiA1NyB8fCAoIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA9PSA1NyAmJiBMSUJBVkNPREVDX1ZF UlNJT05fTUlOT1IgPj0gMzMgKQorKyAgICBhdmNvZGVjX2ZyZWVfY29udGV4dCggJmNvZGVjQ29u dGV4dF8gKTsKKysjZW5kaWYKKyAgIH0KKworICAgYXZmb3JtYXRfY2xvc2VfaW5wdXQoICZmb3Jt YXRDb250ZXh0XyApOworQEAgLTM1Niw2ICszODUsNyBAQCBib29sIERlY29kZXJDb250ZXh0Ojpw bGF5KCBRU3RyaW5nICYgZXJyb3JTdHJpbmcgKQorICAgICBpZiAoIHBhY2tldC5zdHJlYW1faW5k ZXggPT0gYXVkaW9TdHJlYW1fLT5pbmRleCApCisgICAgIHsKKyAgICAgICBBVlBhY2tldCBwYWNr ID0gcGFja2V0OworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1NyB8fCAoIExJQkFW Q09ERUNfVkVSU0lPTl9NQUpPUiA9PSA1NyAmJiBMSUJBVkNPREVDX1ZFUlNJT05fTUlOT1IgPCAz NyApCisgICAgICAgaW50IGdvdEZyYW1lID0gMDsKKyAgICAgICBkbworICAgICAgIHsKK0BAIC0z NzAsNiArNDAwLDE5IEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6OnBsYXkoIFFTdHJpbmcgJiBlcnJv clN0cmluZyApCisgICAgICAgICBwYWNrLmRhdGEgKz0gbGVuOworICAgICAgIH0KKyAgICAgICB3 aGlsZSggcGFjay5zaXplID4gMCApOworKyNlbHNlCisrICAgICAgaW50IHJldCA9IGF2Y29kZWNf c2VuZF9wYWNrZXQoIGNvZGVjQ29udGV4dF8sICZwYWNrICk7CisrICAgICAgLyogcmVhZCBhbGwg dGhlIG91dHB1dCBmcmFtZXMgKGluIGdlbmVyYWwgdGhlcmUgbWF5IGJlIGFueSBudW1iZXIgb2Yg dGhlbSkgKi8KKysgICAgICB3aGlsZSggcmV0ID49IDAgKQorKyAgICAgIHsKKysgICAgICAgIHJl dCA9IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZSggY29kZWNDb250ZXh0XywgZnJhbWUpOworKworKyAg ICAgICAgaWYgKCBRdDR4NTo6QXRvbWljSW50Ojpsb2FkQWNxdWlyZSggaXNDYW5jZWxsZWRfICkg fHwgcmV0IDwgMCApCisrICAgICAgICAgIGJyZWFrOworKworKyAgICAgICAgcGxheUZyYW1lKCBm cmFtZSApOworKyAgICAgIH0KKysjZW5kaWYKKyAgICAgfQorICAgICAvLyBhdl9mcmVlX3BhY2tl dCgpIG11c3QgYmUgY2FsbGVkIGFmdGVyIGVhY2ggY2FsbCB0byBhdl9yZWFkX2ZyYW1lKCkKKyAj aWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTcgfHwgKCBMSUJBVkNPREVDX1ZFUlNJT05f TUFKT1IgPT0gNTcgJiYgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SIDwgNyApCitAQCAtMzc5LDYg KzQyMiw3IEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6OnBsYXkoIFFTdHJpbmcgJiBlcnJvclN0cmlu ZyApCisgI2VuZGlmCisgICB9CisKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTcg fHwgKCBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPT0gNTcgJiYgTElCQVZDT0RFQ19WRVJTSU9O X01JTk9SIDwgMzcgKQorICAgaWYgKCAhUXQ0eDU6OkF0b21pY0ludDo6bG9hZEFjcXVpcmUoIGlz Q2FuY2VsbGVkXyApICYmCisgICAgICAgIGNvZGVjQ29udGV4dF8tPmNvZGVjLT5jYXBhYmlsaXRp ZXMgJiBDT0RFQ19DQVBfREVMQVkgKQorICAgeworQEAgLTM5MSw2ICs0MzUsMTggQEAgYm9vbCBE ZWNvZGVyQ29udGV4dDo6cGxheSggUVN0cmluZyAmIGVycm9yU3RyaW5nICkKKyAgICAgICBwbGF5 RnJhbWUoIGZyYW1lICk7CisgICAgIH0KKyAgIH0KKysjZWxzZQorKyAgLyogZmx1c2ggdGhlIGRl Y29kZXIgKi8KKysgIGF2X2luaXRfcGFja2V0KCAmcGFja2V0ICk7CisrICBpbnQgcmV0ID0gYXZj b2RlY19zZW5kX3BhY2tldChjb2RlY0NvbnRleHRfLCAmcGFja2V0ICk7CisrICB3aGlsZSggcmV0 ID49IDAgKQorKyAgeworKyAgICByZXQgPSBhdmNvZGVjX3JlY2VpdmVfZnJhbWUoY29kZWNDb250 ZXh0XywgZnJhbWUpOworKyAgICBpZiAoIFF0NHg1OjpBdG9taWNJbnQ6OmxvYWRBY3F1aXJlKCBp c0NhbmNlbGxlZF8gKSB8fCByZXQgPCAwICkKKysgICAgICBicmVhazsKKysgICAgcGxheUZyYW1l KCBmcmFtZSApOworKyAgfQorKyNlbmRpZgorCisgI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpP UiA8IDU0CisgICBhdl9mcmVlKCBmcmFtZSApOworMzIKK3NyY3BrZ3MvZ29sZGVuZGljdC9wYXRj aGVzL2ZmbXBlZzUtMi5wYXRjaAorQ29tbWVudCBvbiB0aGlzIGZpbGUKK0BAIC0wLDAgKzEsMzIg QEAKK0Zyb20gOTY2ZjRhOGI3OGU2MzI0YjkzMGU1YTUwZjJiYjkzMGJkODdlNTY1ZSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFiczYyIDxvdHRvbWFubkB5YW5kZXgucnU+CitEYXRl OiBGcmksIDI3IFNlcCAyMDE5IDE3OjAwOjUyICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZGbXBl ZyBwbGF5ZXI6IEZpeCBzb21lIGNyYXNoZXMgb24gYnJva2VuIGZpbGVzCisKKy0tLQorIGZmbXBl Z2F1ZGlvLmNjIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitk aWZmIC0tZ2l0IGEvZmZtcGVnYXVkaW8uY2MgYi9mZm1wZWdhdWRpby5jYworaW5kZXggNTZlOGY3 ODhlLi40MTVmYzc5Y2IgMTAwNjQ0CistLS0gYS9mZm1wZWdhdWRpby5jYworKysrIGIvZmZtcGVn YXVkaW8uY2MKK0BAIC01MSw3ICs1MSw5IEBAIEF1ZGlvU2VydmljZSAmIEF1ZGlvU2VydmljZTo6 aW5zdGFuY2UoKQorCisgQXVkaW9TZXJ2aWNlOjpBdWRpb1NlcnZpY2UoKQorIHsKKysjaWYgTElC QVZGT1JNQVRfVkVSU0lPTl9NQUpPUiA8IDU4IHx8ICggTElCQVZGT1JNQVRfVkVSU0lPTl9NQUpP UiA9PSA1OCAmJiBMSUJBVkZPUk1BVF9WRVJTSU9OX01JTk9SIDwgOSApCisgICBhdl9yZWdpc3Rl cl9hbGwoKTsKKysjZW5kaWYKKyAgIGFvX2luaXRpYWxpemUoKTsKKyB9CisKK0BAIC00MzgsNiAr NDQwLDggQEAgYm9vbCBEZWNvZGVyQ29udGV4dDo6cGxheSggUVN0cmluZyAmIGVycm9yU3RyaW5n ICkKKyAjZWxzZQorICAgLyogZmx1c2ggdGhlIGRlY29kZXIgKi8KKyAgIGF2X2luaXRfcGFja2V0 KCAmcGFja2V0ICk7CisrICBwYWNrZXQuZGF0YSA9IE5VTEw7CisrICBwYWNrZXQuc2l6ZSA9IDA7 CisgICBpbnQgcmV0ID0gYXZjb2RlY19zZW5kX3BhY2tldChjb2RlY0NvbnRleHRfLCAmcGFja2V0 ICk7CisgICB3aGlsZSggcmV0ID49IDAgKQorICAgeworMjUKK3NyY3BrZ3MvZ29sZGVuZGljdC9w YXRjaGVzL2ZmbXBlZzUtMy5wYXRjaAorQ29tbWVudCBvbiB0aGlzIGZpbGUKK0BAIC0wLDAgKzEs MjUgQEAKK0Zyb20gOGFjYjI4OGM5ZTliZGIzYzZiZjJlODAzOTU0ZGQzYjZhYzI3M2MwNSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IExpYW8gSnVueHVhbiA8bWlrZWxqeEAxMjYuY29t PgorRGF0ZTogU3VuLCAyMCBGZWIgMjAyMiAxMjoyODowNSArMDgwMAorU3ViamVjdDogW1BBVENI XSBhZGQgc3VwcG9ydCBmb3IgZmZtcGVnIDUuMAorCistLS0KKyBmZm1wZWdhdWRpby5jYyB8IDQg KysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2Zm bXBlZ2F1ZGlvLmNjIGIvZmZtcGVnYXVkaW8uY2MKK2luZGV4IGQ1NTBmNGE3Ny4uNzk0OGQyMTg3 IDEwMDY0NAorLS0tIGEvZmZtcGVnYXVkaW8uY2MKKysrKyBiL2ZmbXBlZ2F1ZGlvLmNjCitAQCAt OTQsNyArOTQsMTEgQEAgc3RydWN0IERlY29kZXJDb250ZXh0CisgICBRQnl0ZUFycmF5IGF1ZGlv RGF0YV87CisgICBRRGF0YVN0cmVhbSBhdWRpb0RhdGFTdHJlYW1fOworICAgQVZGb3JtYXRDb250 ZXh0ICogZm9ybWF0Q29udGV4dF87CisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU5 CisgICBBVkNvZGVjICogY29kZWNfOworKyNlbHNlCisrICBjb25zdCBBVkNvZGVjICogY29kZWNf OworKyNlbmRpZgorICAgQVZDb2RlY0NvbnRleHQgKiBjb2RlY0NvbnRleHRfOworICAgQVZJT0Nv bnRleHQgKiBhdmlvQ29udGV4dF87CisgICBBVlN0cmVhbSAqIGF1ZGlvU3RyZWFtXzsKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ29sZGVuZGljdC90 ZW1wbGF0ZQppbmRleCA0NTQ0YWU3MTBlZTYuLjJjYTQxODVlNTM4YSAxMDA2NDQKLS0tIGEvc3Jj cGtncy9nb2xkZW5kaWN0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0 ZQpAQCAtOSw3ICs5LDcgQEAgbWFrZWRlcGVuZHM9InRpZmYtZGV2ZWwgcXQ1LWRldmVsIGxpYnZv cmJpcy1kZXZlbCB6bGliLWRldmVsCiAgbGliWHRzdC1kZXZlbCBodW5zcGVsbC1kZXZlbCBxdDUt dG9vbHMtZGV2ZWwgcXQ1LWRlY2xhcmF0aXZlLWRldmVsCiAgcXQ1LXdlYmtpdC1kZXZlbCBsem8t ZGV2ZWwgYnppcDItZGV2ZWwgbGliYW8tZGV2ZWwgcXQ1LXN2Zy1kZXZlbAogIGxpYmViLWRldmVs IHF0NS14MTFleHRyYXMtZGV2ZWwgZmZtcGVnLWRldmVsIGxpYmx6bWEtZGV2ZWwiCi1zaG9ydF9k ZXNjPSJBIGZlYXR1cmUtcmljaCBkaWN0aW9uYXJ5IGxvb2t1cCBwcm9ncmFtIgorc2hvcnRfZGVz Yz0iRmVhdHVyZS1yaWNoIGRpY3Rpb25hcnkgbG9va3VwIHByb2dyYW0iCiBtYWludGFpbmVyPSJK b2huIDxtZUBqb2hubnluYXRvci5kZXY+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhv bWVwYWdlPSJodHRwOi8vZ29sZGVuZGljdC5vcmcvIgoKRnJvbSA4ZTU0M2M1MjE4NWZkNWFkZGI2 YmQyMzg1M2QzMjgxYjFhNDA5YzUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwMzgvMTE1XSBnc3QtbGliYXY6IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2dzdC1saWJhdi90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCmluZGV4IGU5 YTc5ZGM2NTBhNS4uZjA4MmJkMjExYzY1IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1saWJhdi90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1saWJhdicKIHBrZ25hbWU9Z3N0LWxpYmF2CiB2ZXJz aW9uPTEuMjAuMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KIGhv c3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyB5YXNtIgogbWFrZWRlcGVuZHM9Im9yYy1kZXZlbCBn c3QtcGx1Z2lucy1iYXNlMS1kZXZlbCBmZm1wZWctZGV2ZWwiCgpGcm9tIGIyN2M3NzIyMmE1OTgz OThiODBhMjZhZjhlNjhkYWRlODZiZDAzNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzOS8xMTVdIGdzdC1wbHVnaW5zLWJhZDE6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRl IHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZSBiL3NyY3Br Z3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQppbmRleCBmNTVmODJmZDRjNzcuLmRjOWQzODk3 MzRlMSAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ2dzdC1wbHVnaW5zLWJhZDEnCiBwa2duYW1lPWdzdC1wbHVnaW5zLWJh ZDEKLXZlcnNpb249MS4yMC4zCi1yZXZpc2lvbj0zCit2ZXJzaW9uPTEuMjIuMgorcmV2aXNpb249 MgogYnVpbGRfaGVscGVyPSJnaXIiCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9 Ii1EcGFja2FnZS1vcmlnaW49aHR0cHM6Ly92b2lkbGludXgub3JnIC1EZG9jPWRpc2FibGVkCgpG cm9tIDE0ZDJjNGM4MDQ1OWI4MjYyYjUwYjU5NDFjMTgzZTg0NGQyNDYwMjEgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDA0MC8xMTVdIGdzdC1y dHNwLXNlcnZlcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dzdC1ydHNw LXNlcnZlci90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBs YXRlIGIvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUKaW5kZXggMzNjZDY0Y2ViOTVl Li44Y2VlYThkMzRiNGIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LXJ0c3Atc2VydmVyJwogcGtnbmFtZT1nc3QtcnRz cC1zZXJ2ZXIKIHZlcnNpb249MS4yMC4zCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9z dHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHB5dGhvbjMiCiBtYWtlZGVw ZW5kcz0iZ2xpYi1kZXZlbCBnc3QtcGx1Z2lucy1iYWQxLWRldmVsIGdvYmplY3QtaW50cm9zcGVj dGlvbgoKRnJvbSA3ZjkyZTAzYTJmZTdiZDZhN2QwYjc2MWNhMDQ0MzkzNjgwOWU2OWRhIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDEvMTE1 XSBndXZjdmlldzogdXBkYXRlIHRvIDIuMC44LgoKLS0tCiBzcmNwa2dzL2d1dmN2aWV3L3BhdGNo ZXMvZml4LWluY2x1ZGUucGF0Y2ggfCAxMCArKysrKysrKysrCiBzcmNwa2dzL2d1dmN2aWV3L3Rl bXBsYXRlICAgICAgICAgICAgICAgICAgfCAgNSArKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMiBp bnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv Z3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv Z3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaCBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0 Y2hlcy9maXgtaW5jbHVkZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjUwM2MyYWYzYjc4YwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZ3V2Y3ZpZXcv cGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaApAQCAtMCwwICsxLDEwIEBACistLS0gYS9ndXZjdmll dy9ndXZjdmlldy5jCisrKysgYi9ndXZjdmlldy9ndXZjdmlldy5jCitAQCAtMjgsNiArMjgsNyBA QAorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKyAj aW5jbHVkZSA8ZXJybm8uaD4KKysjaW5jbHVkZSA8bG9jYWxlLmg+CisgCisgI2luY2x1ZGUgImd2 aWV3LmgiCisgI2luY2x1ZGUgImd2aWV3djRsMmNvcmUuaCIKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv Z3V2Y3ZpZXcvdGVtcGxhdGUgYi9zcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRlCmluZGV4IDM0NWNm NjAwNmYyNC4uODZhN2ZkNjE5NjEyIDEwMDY0NAotLS0gYS9zcmNwa2dzL2d1dmN2aWV3L3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvdGVtcGxhdGUKQEAgLTEsOCArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdndXZjdmlldycKIHBrZ25hbWU9Z3V2Y3ZpZXcKLXZlcnNpb249Mi4w LjcKK3ZlcnNpb249Mi4wLjgKIHJldmlzaW9uPTEKLWNyZWF0ZV93cmtzcmM9eWVzCiBidWlsZF9z dHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLXN0YXRpYyAtLWRp c2FibGUtZGViaWFuLW1lbnUiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgaW50bHRvb2wg YXV0b2NvbmYgYXV0b21ha2UgbGlidG9vbCBnbGliLWRldmVsIgpAQCAtMTQsNyArMTMsNyBAQCBt YWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BM LTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwOi8vZ3V2Y3ZpZXcuc291cmNlZm9yZ2UubmV0 LyIKIGRpc3RmaWxlcz0iJHtTT1VSQ0VGT1JHRV9TSVRFfS8ke3BrZ25hbWV9LyR7cGtnbmFtZX0t c3JjLSR7dmVyc2lvbn0udGFyLmJ6MiIKLWNoZWNrc3VtPWY0N2Q1MWZiZDA2ZTQ0ZWVhYTFhODJm NGExNTNjOTI3NTI3YzkwZDk0NTE0MTk3YTcwYjI5NTYwMjhjYzhhZDQKK2NoZWNrc3VtPWEyMWY0 ZTQ0ODI4NjY2NmNmMjdiYWZlZjUyOTBjYzk1M2EwYTE3OTZiNzUyZTViYmU1MjEyNjZkYzEyMzBj ODEKIAogcG9zdF9wYXRjaCgpIHsKIAlzZWQgJzMxYSNpbmNsdWRlIDxsb2NhbGUuaD4nIC1pICBn dXZjdmlldy9ndXZjdmlldy5jCgpGcm9tIDg3OTgxODM3MTNlMWZhNjhiOTA3OGRkMzFmMTM0YzBm NTNiYmM2NTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDog W1BBVENIIDA0Mi8xMTVdIGhhbmRicmFrZTogdXBkYXRlIHRvIDEuNi4xCgotLS0KIC4uLi9wYXRj aGVzL2ZpeC1taXNzaW5nLXgyNjUtbGluay1mbGFnLnBhdGNoICAgIHwgMTEgKysrKysrLS0tLS0K IC4uLi9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12cGwtaW5jbHVkZS5wYXRjaCAgIHwgMTUgKysr KysrKysrKysrKysrCiBzcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0ZSAgICAgICAgICAgICAgICAg ICAgICB8IDE3ICsrKysrKysrKystLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDMxIGluc2VydGlv bnMoKyksIDEyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaGFuZGJy YWtlL3BhdGNoZXMvbGliaGItdnBsLWluY2x1ZGUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2hhbmRicmFrZS9wYXRjaGVzL2ZpeC1taXNzaW5nLXgyNjUtbGluay1mbGFnLnBhdGNoIGIvc3Jj cGtncy9oYW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxpbmstZmxhZy5wYXRjaApp bmRleCAyNmRiMDM4NjdhMGMuLmQ2YmIyZWRhNjI3YSAxMDA2NDQKLS0tIGEvc3JjcGtncy9oYW5k YnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxpbmstZmxhZy5wYXRjaAorKysgYi9zcmNw a2dzL2hhbmRicmFrZS9wYXRjaGVzL2ZpeC1taXNzaW5nLXgyNjUtbGluay1mbGFnLnBhdGNoCkBA IC0xLDE0ICsxLDE1IEBACiAtLS0gYS9ndGsvY29uZmlndXJlLmFjCiArKysgYi9ndGsvY29uZmln dXJlLmFjCiBAQCAtMjAzLDcgKzIwMyw3IEBACi0gCisKICBBTV9DT05ESVRJT05BTChbTUlOR1dd LCBbdGVzdCAieCRtaW5nd19mbGFnIiA9ICJ4eWVzIl0pCi0gCi0tSEJfTElCUz0iJEhCX0xJQlMg LWxoYW5kYnJha2UgLWxhdmZvcm1hdCAtbGF2ZmlsdGVyIC1sYXZjb2RlYyAtbGF2dXRpbCAtbGRh djFkIC1sc3dyZXNhbXBsZSAtbHBvc3Rwcm9jIC1sZHZkbmF2IC1sZHZkcmVhZCAtbG1wM2xhbWUg LWx2b3JiaXMgLWx2b3JiaXNlbmMgLWxvZ2cgLWxzd3NjYWxlIC1sdGhlb3JhZW5jIC1sdGhlb3Jh ZGVjIC1sdnB4IC1seiAtbGJ6MiAtbGJsdXJheSAtbGFzcyAtbGZvbnRjb25maWcgLWxmcmVldHlw ZSAtbHhtbDIgLWxqYW5zc29uIC1sb3B1cyAtbHNwZWV4IC1sdHVyYm9qcGVnIC1sbHptYSAtbHpp bWciCi0rSEJfTElCUz0iJEhCX0xJQlMgLWxoYW5kYnJha2UgLWxhdmZvcm1hdCAtbGF2ZmlsdGVy IC1sYXZjb2RlYyAtbGF2dXRpbCAtbGRhdjFkIC1sc3dyZXNhbXBsZSAtbHBvc3Rwcm9jIC1sZHZk bmF2IC1sZHZkcmVhZCAtbG1wM2xhbWUgLWx2b3JiaXMgLWx2b3JiaXNlbmMgLWxvZ2cgLWxzd3Nj YWxlIC1sdGhlb3JhZW5jIC1sdGhlb3JhZGVjIC1sdnB4IC1seiAtbGJ6MiAtbGJsdXJheSAtbGFz cyAtbGZvbnRjb25maWcgLWxmcmVldHlwZSAtbHhtbDIgLWxqYW5zc29uIC1sb3B1cyAtbHNwZWV4 IC1sdHVyYm9qcGVnIC1sbHptYSAtbHppbWcgLWxkbCIKKworLUhCX0xJQlM9IiRIQl9MSUJTIC1s aGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRlciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYx ZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1s dm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dzY2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRl YyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxhc3MgLWxmb250Y29uZmlnIC1sZnJlZXR5cGUg LWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVleCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6aW1n IC1sU3Z0QXYxRW5jIgorK0hCX0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtlIC1sYXZmb3JtYXQg LWxhdmZpbHRlciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0 cHJvYyAtbGR2ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1s b2dnIC1sc3dzY2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAtbHogLWxiejIgLWxi bHVyYXkgLWxhc3MgLWxmb250Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1samFuc3NvbiAtbG9w dXMgLWxzcGVleCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6aW1nIC1sU3Z0QXYxRW5jIC1sZGwiCiAg SEJfQ1BQRkxBR1M9IiRIQl9DUFBGTEFHUyAkSEJJTkMiCi0gCisKICBQS0dfQ0hFQ0tfTU9EVUxF UyhbeDI2NF0sIFt4MjY0XSwgc3lzX3gyNjQ9eWVzLCBzeXNfeDI2ND1ubykKKwogLS0tIGEvdGVz dC9tb2R1bGUuZGVmcwogKysrIGIvdGVzdC9tb2R1bGUuZGVmcwogQEAgLTY5LDYgKzY5LDkgQEAK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvbGliaGItdnBsLWluY2x1ZGUu cGF0Y2ggYi9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjk4ZjlmNGFiMjhmCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12cGwtaW5j bHVkZS5wYXRjaApAQCAtMCwwICsxLDE1IEBACistLS0gYS9saWJoYi9tb2R1bGUuZGVmcwkyMDIz LTAxLTIyIDExOjM2OjQ5LjAwMDAwMDAwMCAtMDUwMAorKysrIGIvbGliaGIvbW9kdWxlLmRlZnMJ MjAyMy0wNC0wMyAyMjozNzo1Mi4zOTU0NjcwMTAgLTA0MDAKK0BAIC00NiwxMSArNDYsNyBAQAor IExJQkhCLkdDQy5JICs9ICQoTElCSEIuYnVpbGQvKSAkKENPTlRSSUIuYnVpbGQvKWluY2x1ZGUK KyAKKyBpZmVxICgxLCQoRkVBVFVSRS5xc3YpKQorLSAgICBpZmVxICgkKEhPU1Quc3lzdGVtKSxm cmVlYnNkKSkKKy0gICAgICAgIExJQkhCLkdDQy5JICs9ICQoTE9DQUxCQVNFKS9pbmNsdWRlL3Zw bAorLSAgICBlbHNlCistICAgICAgICBMSUJIQi5HQ0MuSSArPSAkKENPTlRSSUIuYnVpbGQvKWlu Y2x1ZGUvdnBsCistICAgIGVuZGlmCisrICAgIExJQkhCLkdDQy5JICs9IC91c3IvaW5jbHVkZS92 cGwKKyBlbmRpZgorIAorIGlmbmVxICgsJChmaWx0ZXIgJChIT1NULnN5c3RlbSksZnJlZWJzZCBu ZXRic2Qgb3BlbmJzZCkpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0ZSBi L3NyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlCmluZGV4IGNhNWU0NTcxZTQ5Yy4uYzMyY2IxYmZh MzFmIDEwMDY0NAotLS0gYS9zcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2hhbmRicmFrZS90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnaGFuZGJyYWtlJwogcGtnbmFtZT1oYW5kYnJha2UKLXZlcnNpb249MS41LjEKK3ZlcnNpb249 MS42LjEKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9h cmdzPSItLWZvcmNlIC0tZGlzYWJsZS1ndGstdXBkYXRlLWNoZWNrcyAtLWRpc2FibGUtZGYtZmV0 Y2ggLS1oYXJkZW4KLSAkKHZvcHRfZW5hYmxlIGZka19hYWMgZmRrLWFhYykgJCh2b3B0X2VuYWJs ZSBudmVuYykiCisgJCh2b3B0X2VuYWJsZSBmZGtfYWFjIGZkay1hYWMpICQodm9wdF9lbmFibGUg bnZlbmMpICQodm9wdF9lbmFibGUgcXN2KSIKIG1ha2VfYnVpbGRfYXJncz0iLUMgJHtYQlBTX1RS SVBMRVR9IgogbWFrZV9pbnN0YWxsX2FyZ3M9Ii1DICR7WEJQU19UUklQTEVUfSIKIGhvc3RtYWtl ZGVwZW5kcz0iYXV0b21ha2UgY21ha2UgZ2V0dGV4dC1kZXZlbCBnbGliLWRldmVsIGludGx0b29s IGxpYnRvb2wgbTQgbWVzb24gbmFzbSBwa2ctY29uZmlnIHB5dGhvbjMiCkBAIC0xMiw4ICsxMiwx MSBAQCBtYWtlZGVwZW5kcz0iYnppcDItZGV2ZWwgZmZtcGVnLWRldmVsIGdzdC1wbHVnaW5zLWJh c2UxLWRldmVsIGd0ayszLWRldmVsCiAgamFuc3Nvbi1kZXZlbCBsYW1lLWRldmVsIGxpYmFzcy1k ZXZlbCBsaWJibHVyYXktZGV2ZWwgbGliZGF2MWQtZGV2ZWwKICBsaWJkdmRuYXYtZGV2ZWwgbGli ZHZkcmVhZC1kZXZlbCBsaWJndWRldi1kZXZlbCBsaWJudW1hLWRldmVsCiAgbGlic2FtcGxlcmF0 ZS1kZXZlbCBsaWJ0aGVvcmEtZGV2ZWwgbGlidm9yYmlzLWRldmVsIGxpYnZweC1kZXZlbCBsaWJ4 bWwyLWRldmVsCi0gb3B1cy1kZXZlbCBzcGVleC1kZXZlbCB4MjY0LWRldmVsIHgyNjUtZGV2ZWwg emltZy1kZXZlbAorIG9wdXMtZGV2ZWwgc3BlZXgtZGV2ZWwgeDI2NC1kZXZlbCB4MjY1LWRldmVs IHppbWctZGV2ZWwgbGlic3Z0LWF2MS1kZXZlbAogICQodm9wdF9pZiBmZGtfYWFjIGZkay1hYWMt ZGV2ZWwpCisgJCh2b3B0X2lmIHFzdiBsaWJ2YS1kZXZlbCkKKyAkKHZvcHRfaWYgcXN2IGxpYmRy bS1kZXZlbCkKKyAkKHZvcHRfaWYgcXN2IG9uZXZwbC1kZXZlbCkKICAkKHZvcHRfaWYgbnZlbmMg bnYtY29kZWMtaGVhZGVycykiCiBkZXBlbmRzPSJkZXNrdG9wLWZpbGUtdXRpbHMgZ3N0LXBsdWdp bnMtZ29vZDEgaGljb2xvci1pY29uLXRoZW1lIgogc2hvcnRfZGVzYz0iTXVsdGl0aHJlYWRlZCB2 aWRlbyB0cmFuc2NvZGVyIgpAQCAtMjEsMTUgKzI0LDE1IEBAIG1haW50YWluZXI9IkVubm8gQm9s YW5kIDxnb3R0b3hAdm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9ubHkiCiBob21l cGFnZT0iaHR0cHM6Ly9oYW5kYnJha2UuZnIvIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5j b20vSGFuZEJyYWtlL0hhbmRCcmFrZS9yZWxlYXNlcy9kb3dubG9hZC8ke3ZlcnNpb259L0hhbmRC cmFrZS0ke3ZlcnNpb259LXNvdXJjZS50YXIuYnoyIgotY2hlY2tzdW09Mzk5OWZlMDZkNTMwOWM4 MTk3OTlhNzNhOTY4YThlYzM4NDBlNzg0MGMyYjY0YWY4ZjVjZGI3ZmQ4Yzk0MzBmMAorY2hlY2tz dW09OTRjY2ZlMDNkYjkxN2E5MTY1MDAwMGM1MTBmN2ZkNTNmODQ0ZGExOWYxOWFkNGI0YmUxYjhm NmJjMzFhOGQ0Ywogbm9jcm9zcz15ZXMKIAotYnVpbGRfb3B0aW9ucz0iZmRrX2FhYyBudmVuYyIK K2J1aWxkX29wdGlvbnM9ImZka19hYWMgbnZlbmMgcXN2IgogCiBjYXNlICIkWEJQU19UQVJHRVRf TUFDSElORSIgaW4KIAl4ODZfNjQqfGk2ODYqKQogCQlDRkxBR1M9Ii1tc3NlIgotCQlidWlsZF9v cHRpb25zX2RlZmF1bHQ9Im52ZW5jIgorCQlidWlsZF9vcHRpb25zX2RlZmF1bHQ9Im52ZW5jIHFz diIKIAkJOzsKIGVzYWMKIApAQCAtMzcsNyArNDAsNyBAQCBwcmVfY29uZmlndXJlKCkgewogCSMg dXNlIHN5c3RlbSBsaWJyYXJpZXMsIGRvbid0IGRvd25sb2FkIHRoZW0KIAlybSAtcmYgY29udHJp Yi8KIAlmb3IgbW9kdWxlIGluIGZkay1hYWMgZmZtcGVnIGxpYmJsdXJheSBsaWJkYXYxZCBsaWJk dmRuYXYgbGliZHZkcmVhZCBudmVuYyBcCi0JCXgyNjUgemltZzsgZG8KKwkJeDI2NSB6aW1nIHN2 dC1hdjEgbGlidnBsOyBkbwogCSAgICB2c2VkIC1pICIvTU9EVUxFUyArPSBjb250cmliXC8ke21v ZHVsZX0vZCIgbWFrZS9pbmNsdWRlL21haW4uZGVmcwogCWRvbmUKIH0KCkZyb20gNGNmNzllZmEz NmFmNGZjZDVlMjU3MWI2MmIxNzkzZGYzODkxOTMyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQzLzExNV0gaGVkZ2V3YXJzOiByZXZidW1w IGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlIHwgNCAr Ky0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlIGIvc3JjcGtncy9oZWRnZXdhcnMv dGVtcGxhdGUKaW5kZXggNDE5ZjI5Yjk4YjQ0Li45MjZmZTRmZTNlNjggMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRl CkBAIC0xLDEzICsxLDEzIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdoZWRnZXdhcnMnCiBwa2du YW1lPWhlZGdld2FycwogdmVyc2lvbj0xLjAuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRE5PU0VSVkVSPTEgLUREQVRBX0lOU1RB TExfRElSPS91c3Ivc2hhcmUvJHtwa2duYW1lfQogIC1EUEhZU0ZTX1NZU1RFTT0xIC1ETUlOSU1B TF9GTEFHUz0xIgogbWFrZV9jbWQ9bWFrZQogaG9zdG1ha2VkZXBlbmRzPSJsdWE1MSBwa2ctY29u ZmlnIHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwg bHVhNTEtZGV2ZWwgcGh5c2ZzLWRldmVsIHF0NS10b29scy1kZXZlbCBTREwyX2ltYWdlLWRldmVs CittYWtlZGVwZW5kcz0iZmZtcGVnNC1kZXZlbCBsdWE1MS1kZXZlbCBwaHlzZnMtZGV2ZWwgcXQ1 LXRvb2xzLWRldmVsIFNETDJfaW1hZ2UtZGV2ZWwKICBTREwyX21peGVyLWRldmVsIFNETDJfbmV0 LWRldmVsIFNETDJfdHRmLWRldmVsIgogZGVwZW5kcz0ibGliZnJlZWdsdXQiCiBzaG9ydF9kZXNj PSJGdW5ueSB0dXJuLWJhc2VkIGFydGlsbGVyeSBnYW1lLCBmZWF0dXJpbmcgZmlnaHRpbmcgSGVk Z2Vob2dzISIKCkZyb20gMTcwZTdiOTE2ODdlNjYyY2M0YjdlOGE0YmE2ZTZhMGFmMDM4NTZmNyBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ0 LzExNV0gaWRqYzogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2lkamMv dGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pZGpjL3RlbXBsYXRlIGIvc3JjcGtncy9p ZGpjL3RlbXBsYXRlCmluZGV4IGRmNjAzMThiM2RiOS4uMzZhNzViYWY1OTdjIDEwMDY0NAotLS0g YS9zcmNwa2dzL2lkamMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9pZGpjL3RlbXBsYXRlCkBAIC0x LDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdpZGpjJwogcGtnbmFtZT1pZGpjCiB2 ZXJzaW9uPTAuOS4xCi1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1nbnUtY29u ZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgZ2l0IHB5dGhvbjMgYXV0b21ha2Ug Z2V0dGV4dC1kZXZlbCBsaWJ0b29sIgogbWFrZWRlcGVuZHM9ImxpYnZvcmJpcy1kZXZlbCBsaWJv Z2ctZGV2ZWwgamFjay1kZXZlbCBsaWJzYW1wbGVyYXRlLWRldmVsCi0gbGliZmxhYy1kZXZlbCBs aWJzbmRmaWxlLWRldmVsIG1wZzEyMy1kZXZlbCBmZm1wZWctZGV2ZWwgc3BlZXgtZGV2ZWwKKyBs aWJmbGFjLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwgbXBnMTIzLWRldmVsIGZmbXBlZzQtZGV2ZWwg c3BlZXgtZGV2ZWwKICBnbGliLWRldmVsIHBpeG1hbi1kZXZlbCBsYW1lLWRldmVsIHB5dGhvbjMt Z29iamVjdC1kZXZlbCBsaWJzaG91dC1pZGpjLWRldmVsCiAgb3B1cy1kZXZlbCB0d29sYW1lLWRl dmVsIHB5dGhvbjMtbXV0YWdlbiBweXRob24zLWRldmVsIgogZGVwZW5kcz0icHl0aG9uMy1nb2Jq ZWN0IHB5dGhvbjMtbXV0YWdlbiBkZXNrdG9wLWZpbGUtdXRpbHMgc2hhcmVkLW1pbWUtaW5mbyBw eXRob24zLWRidXMgamFjayIKCkZyb20gNTczM2UwOTQ3NmZmMGE1MmQyZjk3NGRkMTkyZmJiNDMz YWI1ZTVkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDQ1LzExNV0ga2ZpbGVtZXRhZGF0YTU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9rZmlsZW1ldGFkYXRhNS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2Zp bGVtZXRhZGF0YTUvdGVtcGxhdGUgYi9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRlCmlu ZGV4IDg5ODAxMjFmYmM2OS4uZjY2MmEyMDQzZjkzIDEwMDY0NAotLS0gYS9zcmNwa2dzL2tmaWxl bWV0YWRhdGE1L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdrZmlsZW1ldGFkYXRhNScKIHBr Z25hbWU9a2ZpbGVtZXRhZGF0YTUKIHZlcnNpb249NS4xMDUuMAotcmV2aXNpb249MQorcmV2aXNp b249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0ia2NvcmVhZGRvbnMgZXh0 cmEtY21ha2UtbW9kdWxlcyBwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZQogIGdl dHRleHQga2NvcmVhZGRvbnMgcHl0aG9uMyIKCkZyb20gZjNhOGQ3MTYwYjFjMmVhNTc1YTEzMmE2 NjNkMGQyNjZjNzI2YmJiNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDQ2LzExNV0ga2lkMzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgMTcgKysrKysrKysrKysrKysr KysKIHNyY3BrZ3Mva2lkMy90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBj aGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9raWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3Br Z3Mva2lkMy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1w ZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTM1ZmM1 MGUwN2M5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9raWQzL3BhdGNoZXMvZmZtcGVnNS5w YXRjaApAQCAtMCwwICsxLDE3IEBACisjIGh0dHBzOi8vYXVyLmFyY2hsaW51eC5vcmcvY2dpdC9h dXIuZ2l0L2RpZmYvZmZtcGVnNS5wYXRjaD9oPWtpZDMtY2xpJmlkPTEyNDEwYTc0OTA2NjEyZTdl ZmMwZWM4ZmJjZTczOWI0YTBmZWY3ZTcKK2RpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9hY291c3Rp ZGltcG9ydC9mZm1wZWdmaW5nZXJwcmludGRlY29kZXIuY3BwIGIvc3JjL3BsdWdpbnMvYWNvdXN0 aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAoraW5kZXggZTE1NmQ0MjQuLmUx MmI5YWJkIDEwMDY0NAorLS0tIGEvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZtcGVnZmlu Z2VycHJpbnRkZWNvZGVyLmNwcAorKysrIGIvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZt cGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAorQEAgLTIzMiw3ICsyMzIsMTEgQEAgcHJpdmF0ZToK KyAgIGZyaWVuZCBjbGFzcyBGb3JtYXQ7CisgICBmcmllbmQgY2xhc3MgQ29udmVydGVyOworICAg QVZDb2RlY0NvbnRleHQqIG1fcHRyOworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fSU5UIDwgQVZf VkVSU0lPTl9JTlQoNTksIDAsIDApCisgICBBVkNvZGVjKiBtX2ltcGw7CisrI2Vsc2UKKysgIGNv bnN0IEFWQ29kZWMqIG1faW1wbDsKKysjZW5kaWYKKyAgIEFWRnJhbWUqIG1fZnJhbWU7CisgICBi b29sIG1fb3BlbmVkOworIH07CmRpZmYgLS1naXQgYS9zcmNwa2dzL2tpZDMvdGVtcGxhdGUgYi9z cmNwa2dzL2tpZDMvdGVtcGxhdGUKaW5kZXggNDU2MjA2ZDkwZTE2Li5mMzJmOWRlY2IwZTcgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3Mva2lkMy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tpZDMvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdraWQzJwogcGtnbmFtZT1r aWQzCiB2ZXJzaW9uPTMuOS4xCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1j bWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9BUFBTPSdDTEk7JCh2b3B0X2lmIEtERSBLREUg UXQpJwogIC1EV0lUSF9ET0NCT09LRElSPS91c3Ivc2hhcmUveHNsL2RvY2Jvb2sgLURXSVRIX0ZM QUM9JCh2b3B0X2lmIGZsYWMgT04gT0ZGKQoKRnJvbSBjOTllNzkwZTMzNjFhMzI5Y2M1NDRkMGI1 ZmU1NmM1YWNhNDkzYTMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwNDcvMTE1XSBrb2RpOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgot LS0KIHNyY3BrZ3Mva29kaS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5z ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tvZGkvdGVt cGxhdGUgYi9zcmNwa2dzL2tvZGkvdGVtcGxhdGUKaW5kZXggODA1Nzk2NGQ3OGEzLi42Y2MxODc0 YmU3YmEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva29kaS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tv ZGkvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdrb2RpJwog cGtnbmFtZT1rb2RpCiB2ZXJzaW9uPTE5LjQKLXJldmlzaW9uPTYKK3JldmlzaW9uPTcKIF9jb2Rl bmFtZT0iTWF0cml4IgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhf RkZNUEVHPS91c3IgLURFTkFCTEVfTERHT0xEPU9GRgpAQCAtNTQsNyArNTQsNyBAQCBtYWtlZGVw ZW5kcz0iCiAgbGlibWFkLWRldmVsIGZvbnRjb25maWctZGV2ZWwgbGliWGluZXJhbWEtZGV2ZWwg bGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJtbXMtZGV2ZWwKICBlbmNhLWRldmVsIGJvb3N0LWRldmVs IGxpYmN1cmwtZGV2ZWwgbGlidmEtZGV2ZWwgbGlidmRwYXUtZGV2ZWwgbGliYXNzLWRldmVsCiAg bGliYmx1ZXRvb3RoLWRldmVsIHlhamwtZGV2ZWwgbGlicGxpc3QtZGV2ZWwgbGlicnRtcC1kZXZl bCB0aW55eG1sLWRldmVsCi0gdGFnbGliLWRldmVsIGxpYmNhcC1kZXZlbCBsYW1lLWRldmVsIGxp YmJsdXJheS1kZXZlbCBsaWJuZnMtZGV2ZWwgZmZtcGVnLWRldmVsCisgdGFnbGliLWRldmVsIGxp YmNhcC1kZXZlbCBsYW1lLWRldmVsIGxpYmJsdXJheS1kZXZlbCBsaWJuZnMtZGV2ZWwgZmZtcGVn NC1kZXZlbAogIGdpZmxpYi1kZXZlbCBsaWJ4c2x0LWRldmVsIGdudXRscy1kZXZlbCBsaWJzc2gt ZGV2ZWwgbGlibWljcm9odHRwZC1kZXZlbAogIGxpYmNlYy1kZXZlbCBkY2FkZWMtZGV2ZWwgZmxh dGJ1ZmZlcnMtZGV2ZWwgZm10LWRldmVsIGxjbXMyLWRldmVsCiAgbGliZnN0cmNtcC1kZXZlbCBy YXBpZGpzb24gbGliY2Rpby1wYXJhbm9pYSBzcGRsb2cgbGlid2F5bGFuZHBwLWRldmVsCgpGcm9t IGQ0MTIyMDU1NTNiNDU1ZmQ5NWJlMWMyZmY5Yjg4MjQzNjBlMjAzYzQgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0OC8xMTVdIGtwaXBld2ly ZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2twaXBld2lyZS90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlIGIvc3JjcGtncy9rcGlwZXdp cmUvdGVtcGxhdGUKaW5kZXggNDY3YWI4MjNhNWUxLi41MTgyN2YyNGRiOWUgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAna3BpcGV3aXJlJwogcGtn bmFtZT1rcGlwZXdpcmUKIHZlcnNpb249NS4yNy40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVzIHBs YXNtYS13YXlsYW5kLXByb3RvY29scyBnZXR0ZXh0CiAgcXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xz IHBrZy1jb25maWcgd2F5bGFuZC1kZXZlbCBrY29yZWFkZG9ucwoKRnJvbSA4OWI2ZmEzNTllYzM0 ODY5MjJiZjFiZGNiYWVhZWVjZTk4ZTEwZmZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDkvMTE1XSBsaWJleHRyYWN0b3I6IHJldmJ1bXAg Zm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9saWJleHRyYWN0b3IvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGliZXh0cmFj dG9yL3RlbXBsYXRlCmluZGV4IGRkZDQ3OTBmOTNlOC4uMWZiOWNhNTZhOTZhIDEwMDY0NAotLS0g YS9zcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xpYmV4dHJhY3Rv ci90ZW1wbGF0ZQpAQCAtNyw3ICs3LDcgQEAgY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS1zdGF0 aWMiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0iemxpYi1kZXZl bCBiemlwMi1kZXZlbCBleGl2Mi1kZXZlbCB0aWZmLWRldmVsIGxpYnBuZy1kZXZlbAogIGxpYmpw ZWctdHVyYm8tZGV2ZWwgbGlidm9yYmlzLWRldmVsIGxpYmZsYWMtZGV2ZWwgZ2lmbGliLWRldmVs IGxpYm1wZWcyLWRldmVsCi0gZmZtcGVnLWRldmVsIGd0ayszLWRldmVsIGxpYmx0ZGwtZGV2ZWwg bGliYXJjaGl2ZS1kZXZlbCBmaWxlLWRldmVsIGxpYmdzZi1kZXZlbCIKKyBmZm1wZWc0LWRldmVs IGd0ayszLWRldmVsIGxpYmx0ZGwtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbCBmaWxlLWRldmVsIGxp YmdzZi1kZXZlbCIKIHNob3J0X2Rlc2M9IkxpYnJhcnkgdXNlZCB0byBleHRyYWN0IG1ldGEgZGF0 YSBmcm9tIGZpbGVzIgogbWFpbnRhaW5lcj0iTWFydGluIFJpZXNlIDxncmF1ZWhhYXJlQGdteC5k ZT4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgoKRnJvbSBmM2UyN2E3ZWJmZjU1ODA2ZThh ODAxOTZiMTU4ZGZlZTY3YjUzNTUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwNTAvMTE1XSBsaWJvcGVuYWw6IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy9saWJvcGVuYWwvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2xpYm9wZW5hbC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGlib3BlbmFsL3RlbXBsYXRlCmluZGV4IDc3 MjE4ZjllNTM5ZC4uM2Y0OWVkNzVhMWZkIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xpYm9wZW5hbC90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xpYm9wZW5hbCcKIHBrZ25hbWU9bGlib3BlbmFsCiB2ZXJz aW9uPTEuMjIuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNv bmZpZ3VyZV9hcmdzPSItREFMU09GVF9FWEFNUExFUz1PRkYiCiBob3N0bWFrZWRlcGVuZHM9InBr Zy1jb25maWciCgpGcm9tIDMyMTNlNmEwYmU5MzEwODFkZTM5ZDJkM2NjMmI3OGZiOWY4MGI4YTUg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA1 MS8xMTVdIGxpYm9wZW5zaG90OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mv bGlib3BlbnNob3QvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBs YXRlIGIvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZQppbmRleCBkYjgzMWY2OWI0NzQuLjgx YWEwZDcxMzZkOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnbGlib3BlbnNob3QnCiBwa2duYW1lPWxpYm9wZW5zaG90CiB2ZXJzaW9uPTAu My4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogIyBCdWlsZHMg ZmFpbCB3aXRoIFJ1YnktMi40LjEKIGNvbmZpZ3VyZV9hcmdzPSItREVOQUJMRV9SVUJZPU9GRiAt RFVTRV9TWVNURU1fSlNPTkNQUD1PTiIKCkZyb20gODc3MTVlZDIxNzMyM2JhMzQzY2NlMWU4ZWIz MGFmN2RhNzdjOWZhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDUyLzExNV0gbG91ZGdhaW46IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggfCAxMSArKysrKysrKysr Kwogc3JjcGtncy9sb3VkZ2Fpbi90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxl cyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQg YS9zcmNwa2dzL2xvdWRnYWluL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvbG91ZGdh aW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uMTZkNDUxMGVlOThmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sb3VkZ2Fp bi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSwxMSBAQAorLS0tIGEvc3JjL3NjYW4u YwkyMDE5LTA5LTA2IDExOjMxOjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIGIvc3JjL3NjYW4uYwky MDIzLTAzLTIzIDExOjE1OjQwLjg2Nzk2ODUyMSAtMDQwMAorQEAgLTY5LDggKzY5LDYgQEAKKyAJ ICogSXQgaXMgbm93IHVzZWxlc3MKKyAJICogaHR0cHM6Ly9naXRodWIuY29tL0ZGbXBlZy9GRm1w ZWcvYmxvYi83MGQyNTI2OGMyMWNiZWU1ZjA4MzA0ZGE5NWJlMWY2NDdjNjMwYzE1L2RvYy9BUElj aGFuZ2VzI0w4NgorIAkgKi8KKy0gIGlmIChhdmZvcm1hdF92ZXJzaW9uKCkgPCBBVl9WRVJTSU9O X0lOVCg1OCw5LDEwMCkpCistICAgIGF2X3JlZ2lzdGVyX2FsbCgpOworIAorIAlhdl9sb2dfc2V0 X2NhbGxiYWNrKHNjYW5fYXZfbG9nKTsKKyAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbG91ZGdhaW4v dGVtcGxhdGUgYi9zcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlCmluZGV4IGRhNGYyZDU2ZTk0Yy4u NGQ2YmYyOWVmYjRmIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdsb3VkZ2FpbicKIHBrZ25hbWU9bG91ZGdhaW4KIHZlcnNpb249MC42LjgKLXJldmlz aW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBr Zy1jb25maWciCiBtYWtlZGVwZW5kcz0ibGliZWJ1cjEyOC1kZXZlbCB0YWdsaWItZGV2ZWwgZmZt cGVnLWRldmVsIgoKRnJvbSA1MDY3Zjk4N2NlNjhlMGRjMWMxMDI5NzU1OGZhZGRiYjRmNGE0NDlh IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw NTMvMTE1XSBtZWRpYXN0cmVhbWVyOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNy Y3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21lZGlh c3RyZWFtZXIvdGVtcGxhdGUgYi9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUKaW5kZXgg ZDBlOTdlODU4ZTI5Li4xYmRlMDMxNDQzYTUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWVkaWFzdHJl YW1lci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUKQEAgLTEs MTEgKzEsMTEgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21lZGlhc3RyZWFtZXInCiBwa2duYW1l PW1lZGlhc3RyZWFtZXIKIHZlcnNpb249NS4yLjYKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1 aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURFTkFCTEVfU1RSSUNUPTAgLURFTkFC TEVfVU5JVF9URVNUUz0wIgogaG9zdG1ha2VkZXBlbmRzPSJweXRob24zIgotbWFrZWRlcGVuZHM9 ImJ6cnRwLWRldmVsIGZmbXBlZy1kZXZlbCBnbGV3LWRldmVsIGxpYlh2LWRldmVsIGxpYnNydHAt ZGV2ZWwKK21ha2VkZXBlbmRzPSJienJ0cC1kZXZlbCBmZm1wZWc0LWRldmVsIGdsZXctZGV2ZWwg bGliWHYtZGV2ZWwgbGlic3J0cC1kZXZlbAogIGxpYnVwbnAtZGV2ZWwgbGlidnB4LWRldmVsIG1i ZWR0bHMtZGV2ZWwgb3B1cy1kZXZlbCBvcnRwLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKICBsaWJ0 aGVvcmEtZGV2ZWwgc3BlZXgtZGV2ZWwgdjRsLXV0aWxzLWRldmVsIGJjZzcyOS1kZXZlbCBiY21h dHJvc2thMi1kZXZlbCBsaWJnc20tZGV2ZWwiCiAjIHp4aW5nLWNwcC1kZXZlbCAoMS4yLjAgcHJv YmFibHkgbm90IGNvbXBhdGlibGUsIGNoZWNrIGFnYWluIGFmdGVyIHVwZGFpbmcgeHppbmcpCgpG cm9tIGZkMDI0MTZkYzllMWIzOGVjMzc0MDY3YjBiYzc4NTQ5NWEwMDE0YzcgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA1NC8xMTVdIG1nYmE6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9tZ2JhL3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9tZ2JhL3RlbXBsYXRlIGIvc3JjcGtncy9tZ2JhL3RlbXBsYXRlCmluZGV4 IGFlMDUwNDMxMWVlZS4uZDMxMjk1YTBjZDNkIDEwMDY0NAotLS0gYS9zcmNwa2dzL21nYmEvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9tZ2JhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnbWdiYScKIHBrZ25hbWU9bWdiYQogdmVyc2lvbj0wLjEwLjIKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBr Zy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIGRlc2t0b3AtZmlsZS11dGlscyIKIG1h a2VkZXBlbmRzPSJTREwyLWRldmVsIGZmbXBlZy1kZXZlbCBsaWJlZGl0LWRldmVsIGxpYmVwb3h5 LWRldmVsIGxpYm1hZ2ljay1kZXZlbAoKRnJvbSA1ZTFmZWIyY2U3Y2RhMDk0YTZhMGQyOTIwZDVh NWZlYTY2MzgwNmZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwNTUvMTE1XSBtaW5pZGxuYTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9taW5pZGxuYS90 ZW1wbGF0ZSBiL3NyY3BrZ3MvbWluaWRsbmEvdGVtcGxhdGUKaW5kZXggZTgwODFiMWNiYzY3Li45 ZWU5NzE0ODYxZmQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWluaWRsbmEvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ21pbmlkbG5hJwogcGtnbmFtZT1taW5pZGxuYQogdmVyc2lvbj0xLjMuMgotcmV2aXNp b249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2Fy Z3M9IgogIC0tc2JpbmRpcj0vdXNyL2JpbgoKRnJvbSA1MDhiMWY1YjdhZTJkYzFiYjA1YWU5OTg1 YTg4M2MyZjVhYWI3OTRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwNTYvMTE1XSBtaXh4eDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL21peHh4L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9taXh4eC90ZW1wbGF0 ZSBiL3NyY3BrZ3MvbWl4eHgvdGVtcGxhdGUKaW5kZXggNjE5ZGRjYTBkMzMyLi40YjllYTAwZDNm YjMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWl4eHgvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9taXh4 eC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21peHh4Jwog cGtnbmFtZT1taXh4eAogdmVyc2lvbj0yLjMuMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFz ZSIKIGhvc3RtYWtlZGVwZW5kcz0iZXh0cmEtY21ha2UtbW9kdWxlcyBwa2ctY29uZmlnIHByb3Rv YnVmIHF0NS1ob3N0LXRvb2xzIHF0NS1kZXZlbCIKCkZyb20gNmE5YTRkMGYyNmMxYWI5ODY2YWVk ZjU1ZmI5MTc1Mjg5NThjZDhkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDU3LzExNV0gbWx0OiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4z CgotLS0KIHNyY3BrZ3MvbWx0L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWx0L3Rl bXBsYXRlIGIvc3JjcGtncy9tbHQvdGVtcGxhdGUKaW5kZXggODkzM2ViNGU3YmI5Li43MzM1M2Zl ZGFmYjUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWx0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWx0 L3RlbXBsYXRlCkBAIC0xLDE0ICsxLDE0IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtbHQnCiBw a2duYW1lPW1sdAogdmVyc2lvbj02LjI2LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxk X3N0eWxlPWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tcHJlZml4PS91c3IgLS1saWJkaXI9 L3Vzci9saWIkWEJQU19UQVJHRVRfV09SRFNJWkUKICAtLWVuYWJsZS1ncGwgLS1lbmFibGUtZ3Bs MyAtLWRpc2FibGUtc3dmZGVjIC0td2l0aG91dC1rZGUKICAtLXN3aWctbGFuZ3VhZ2VzPXB5dGhv biIKIGhvc3RtYWtlZGVwZW5kcz0iZG94eWdlbiBwa2ctY29uZmlnIGxhZHNwYS1zZGsgc3dpZyBw eXRob24zIHdoaWNoIgogIyBYWFg6IG1vdml0IHZpZC5zdGFiCi1tYWtlZGVwZW5kcz0iYWxzYS1s aWItZGV2ZWwgZmZtcGVnLWRldmVsIGd0aystZGV2ZWwgamFjay1kZXZlbCBsYWRzcGEtc2RrCitt YWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZtcGVnNC1kZXZlbCBndGsrLWRldmVsIGphY2st ZGV2ZWwgbGFkc3BhLXNkawogIGxpYmV4aWYtZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJ4 bWwyLWRldmVsIHNveC1kZXZlbCBTRExfaW1hZ2UtZGV2ZWwKICBmZnR3LWRldmVsIGZyZWkwci1w bHVnaW5zIHB5dGhvbjMtZGV2ZWwgcHVsc2VhdWRpby1kZXZlbCBtb3ZpdC1kZXZlbAogIGxpYnZp ZHN0YWItZGV2ZWwgbGliYXRvbWljLWRldmVsIgoKRnJvbSA0MjBhMDc3ZDVjMDg2MDExNzE3MDJi MTUwYTEzYzYxODFjNWQ5N2EzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwNTgvMTE1XSBtb2M6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMK Ci0tLQogc3JjcGtncy9tb2MvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGlu c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tb2MvdGVt cGxhdGUgYi9zcmNwa2dzL21vYy90ZW1wbGF0ZQppbmRleCBjNDJiZTY1MGExZDIuLmQ0ZjBlZWZi YWQ1MiAxMDA2NDQKLS0tIGEvc3JjcGtncy9tb2MvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tb2Mv dGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21vYycKIHBr Z25hbWU9bW9jCiB2ZXJzaW9uPTIuNS4yCi1yZXZpc2lvbj02CityZXZpc2lvbj03CiBidWlsZF9z dHlsZT1nbnUtY29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCi1tYWtlZGVw ZW5kcz0iZGItZGV2ZWwgbmN1cnNlcy1kZXZlbCBsaWJjdXJsLWRldmVsIHBvcHQtZGV2ZWwgZmZt cGVnLWRldmVsCittYWtlZGVwZW5kcz0iZGItZGV2ZWwgbmN1cnNlcy1kZXZlbCBsaWJjdXJsLWRl dmVsIHBvcHQtZGV2ZWwgZmZtcGVnNC1kZXZlbAogIGphY2stZGV2ZWwgYWxzYS1saWItZGV2ZWwg bGlibHRkbC1kZXZlbCBsaWJmbGFjLWRldmVsIGxpYnZvcmJpcy1kZXZlbAogIGxpYm1hZC1kZXZl bCBsaWJtcGNkZWMtZGV2ZWwgbGlibW9kcGx1Zy1kZXZlbCBsaWJpZDN0YWctZGV2ZWwgZmFhZDIt ZGV2ZWwKICB0YWdsaWItZGV2ZWwgbGlic25kZmlsZS1kZXZlbCB3YXZwYWNrLWRldmVsIHNwZWV4 LWRldmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwKCkZyb20gYTkzMzAyNzNiNjJhYjVkOTdhZDgzYzAw MTJjYmIwZWE3ODYyZDdlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDU5LzExNV0gbW90aW9uOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3MvbW90aW9uL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tb3Rpb24vdGVt cGxhdGUgYi9zcmNwa2dzL21vdGlvbi90ZW1wbGF0ZQppbmRleCAzY2YzYzMwMzVjNWIuLjdkY2Ex MmQ4NTFlMyAxMDA2NDQKLS0tIGEvc3JjcGtncy9tb3Rpb24vdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9tb3Rpb24vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdt b3Rpb24nCiBwa2duYW1lPW1vdGlvbgogdmVyc2lvbj00LjUuMQotcmV2aXNpb249MQorcmV2aXNp b249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFr ZSBwa2ctY29uZmlnIGdldHRleHQtZGV2ZWwgdGFyIgogbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZl bCBsaWJtaWNyb2h0dHBkLWRldmVsIHY0bC11dGlscy1kZXZlbCBnZXR0ZXh0LWRldmVsIgoKRnJv bSA1N2MzNWFhNWU2ZjBiYzE2ZTliNTA2NTNhMjU1YTA0NjE2Yzk5NjA1IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjAvMTE1XSBtcHY6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9tcHYvdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL21wdi90ZW1wbGF0ZSBiL3NyY3BrZ3MvbXB2L3RlbXBsYXRlCmluZGV4IGUxNjNj NDk2YzZlYi4uZDRmZWZiZjVlM2M3IDEwMDY0NAotLS0gYS9zcmNwa2dzL21wdi90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL21wdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ21wdicKIHBrZ25hbWU9bXB2CiB2ZXJzaW9uPTAuMzUuMQotcmV2aXNpb249MgorcmV2 aXNpb249MwogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRGNkZGE9ZW5hYmxl ZCAtRGR2YmluPWVuYWJsZWQgLURkdmRuYXY9ZW5hYmxlZAogIC1EbGlibXB2PXRydWUgLURjcGx1 Z2lucz1lbmFibGVkCgpGcm9tIGQzNDAyMGIyY2I0OGMzNmQxMDdlMTZmNjlhZTA2OTc1NGI1NDFk MzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENI IDA2MS8xMTVdIG11c2lrY3ViZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L211c2lrY3ViZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRl IGIvc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxhdGUKaW5kZXggN2M1NjkzMDNjMDU0Li5hNGRlYTQ2 MGMzNzEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvbXVzaWtjdWJlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnbXVzaWtjdWJlJwogcGtnbmFtZT1tdXNpa2N1YmUKIHZlcnNpb249My4wLjAKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBtYWtlX2NtZD1tYWtlCiBjb25maWd1 cmVfYXJncz0iLUROT19OQ1VSU0VTVz0xIgoKRnJvbSA3YTE2NDY4ZjhkNGI0ZDczODA5ZDQ5MjVk ZjQzOGI0YzQwMzE0ZmVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwNjIvMTE1XSBub3RjdXJzZXM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9ub3RjdXJzZXMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL25vdGN1 cnNlcy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRlCmluZGV4IDZkZDhhMDkx MzE5Zi4uMzExMGMzMGM5YWZmIDEwMDY0NAotLS0gYS9zcmNwa2dzL25vdGN1cnNlcy90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL25vdGN1cnNlcy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ25vdGN1cnNlcycKIHBrZ25hbWU9bm90Y3Vyc2VzCiB2ZXJzaW9uPTMu MC45Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJl X2FyZ3M9Ii1EVVNFX1NUQVRJQz1PTiAkKHZvcHRfYm9vbCBtYW4gVVNFX1BBTkRPQykiCiBob3N0 bWFrZWRlcGVuZHM9InBrZy1jb25maWcgJCh2b3B0X2lmIG1hbiBwYW5kb2MpIgoKRnJvbSA3NzVm NzRjOGFkYTVjODQyYTBlZGJiZjNhM2Q2N2FmMmVmYTQ2ZjFjIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjMvMTE1XSBvYnM6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9vYnMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL29icy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb2JzL3RlbXBsYXRlCmluZGV4IDdlZTI5ZmYzZWFj Ni4uZmQwNmRmNDE1MzAxIDEwMDY0NAotLS0gYS9zcmNwa2dzL29icy90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL29icy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J29icycKIHBrZ25hbWU9b2JzCiB2ZXJzaW9uPTI5LjEuMQotcmV2aXNpb249MQorcmV2aXNpb249 MgogYXJjaHM9Imk2ODYqIHg4Nl82NCogcHBjNjRsZSogYWFyY2g2NCoiCiBidWlsZF9zdHlsZT1j bWFrZQogY29uZmlndXJlX2FyZ3M9Ii1ET0JTX1ZFUlNJT05fT1ZFUlJJREU9JHt2ZXJzaW9ufSAt REVOQUJMRV9KQUNLPU9OCgpGcm9tIDM2MDNkMzYwYTkwOWY1ZWQ1OGUxZGExZGVmZTViNzE5NDYz MmFhN2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BB VENIIDA2NC8xMTVdIG9saXZlOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3Br Z3Mvb2xpdmUvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMo KyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZSBi L3NyY3BrZ3Mvb2xpdmUvdGVtcGxhdGUKaW5kZXggMTJhNDY5MzZjOTkwLi41YzI5MTdiOWM1MTIg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb2xpdmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vbGl2ZS90 ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb2xpdmUnCiBw a2duYW1lPW9saXZlCiB2ZXJzaW9uPTAuMS4yCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWls ZF9zdHlsZT1xbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMg cGtnLWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJxdDUtZGV2ZWwgcXQ1LW11bHRpbWVkaWEtZGV2ZWwg cXQ1LXN2Zy1kZXZlbCBmZm1wZWctZGV2ZWwgZnJlaTByLXBsdWdpbnMiCittYWtlZGVwZW5kcz0i cXQ1LWRldmVsIHF0NS1tdWx0aW1lZGlhLWRldmVsIHF0NS1zdmctZGV2ZWwgZmZtcGVnNC1kZXZl bCBmcmVpMHItcGx1Z2lucyIKIHNob3J0X2Rlc2M9Ik5vbi1saW5lYXIgdmlkZW8gZWRpdG9yIgog bWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQ TC0zLjAtb3ItbGF0ZXIiCgpGcm9tIDliYzkxNzYwMmQwMzdkYWVjNWE4OWQyZjQyODg5ZjQ5ZDA3 MzRlYmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BB VENIIDA2NS8xMTVdIG9teHBsYXllcjogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBz cmNwa2dzL29teHBsYXllci90ZW1wbGF0ZSB8IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBp bnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb214cGxh eWVyL3RlbXBsYXRlIGIvc3JjcGtncy9vbXhwbGF5ZXIvdGVtcGxhdGUKaW5kZXggZTcwYmY3ODcz ZDRkLi4wZTliYzcwZTdjOGUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlCkBAIC0xLDEwICsxLDEwIEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdvbXhwbGF5ZXInCiBwa2duYW1lPW9teHBsYXllcgogdmVyc2lvbj0y MDE5MDEwMgotcmV2aXNpb249MQorcmV2aXNpb249Mgogc2hvcnRfZGVzYz0iQ29tbWFuZGxpbmUg T01YIHBsYXllciBmb3IgdGhlIFJhc3BiZXJyeSBQaSIKIG1haW50YWluZXI9Ik9ycGhhbmVkIDxv cnBoYW5Adm9pZGxpbnV4Lm9yZz4iCi1saWNlbnNlPSJHUEwtMiIKK2xpY2Vuc2U9IkdQTC0yLjAt b3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL3BvcGNvcm5taXgvb214cGxh eWVyIgogCiBfY29tbWl0PSJmMDYyMzVjYzk2OTBhNmQ1ODE4NzUxNDQ1MmRmOGNmOGZjZGFhY2Vj IgpAQCAtMTUsNyArMTUsNyBAQCBjaGVja3N1bT1hZjJkOTQ1MGY4OTQ3ODQyZWE4YzQwMWZlOWY3 MWVlYzQ0NDAxM2ViYmRlZTI5ZjJhYzgyOGM5YzQ5M2MxMzI5CiBhcmNocz0iYXJtdjZsKiBhcm12 N2wqIgogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBob3N0bWFrZWRlcGVuZHM9ImN1cmwgcGtn LWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBycGktdXNlcmxhbmQtZGV2ZWwg cGNyZS1kZXZlbCBib29zdC1kZXZlbCBmcmVldHlwZS1kZXZlbCBmZm1wZWctZGV2ZWwgZGJ1cy1k ZXZlbCIKK21ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBycGktdXNlcmxhbmQtZGV2ZWwgcGNy ZS1kZXZlbCBib29zdC1kZXZlbCBmcmVldHlwZS1kZXZlbCBmZm1wZWc0LWRldmVsIGRidXMtZGV2 ZWwiCiBkZXBlbmRzPSJmcmVlZm9udC10dGYiCiAKIGRvX2J1aWxkKCkgewoKRnJvbSAyODdhMjc5 MjhjNzFiYzhjMjJhZjliYWM4ZGVjOTg1YWI1ZDJiMzNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIz IDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjYvMTE1XSBvcGVuaW1hZ2VpbzogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBjb21tb24vc2hsaWJzICAgICAgICAgICAgICAgIHwg MiArKwogc3JjcGtncy9vcGVuaW1hZ2Vpby90ZW1wbGF0ZSB8IDIgKy0KIDIgZmlsZXMgY2hhbmdl ZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvY29tbW9uL3No bGlicyBiL2NvbW1vbi9zaGxpYnMKaW5kZXggYjU3MDUzNWVkMWVmLi5iYjE3NTc4ZjUzOWUgMTAw NjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMKKysrIGIvY29tbW9uL3NobGlicwpAQCAtMjI2Myw2ICsy MjYzLDggQEAgbGlieG1wLnNvLjQgbGlieG1wLTQuMy43XzEKIGxpYktGNVRocmVhZFdlYXZlci5z by41IHRocmVhZHdlYXZlci01LjI2LjBfMQogbGliT3BlbkltYWdlSU9fVXRpbC5zby4yLjQgb3Bl bmltYWdlaW8tMi40LjkuMF8xCiBsaWJPcGVuSW1hZ2VJTy5zby4yLjQgb3BlbmltYWdlaW8tMi40 LjkuMF8xCitsaWJPcGVuSW1hZ2VJT19VdGlsLnNvLjIuNCBvcGVuaW1hZ2Vpby0yLjQuOC4xXzEK K2xpYk9wZW5JbWFnZUlPLnNvLjIuNCBvcGVuaW1hZ2Vpby0yLjQuOC4xXzEKIGxpYk9wZW5Db2xv cklPLnNvLjIuMSBvcGVuY29sb3Jpby0yLjEuMl8xCiBsaWJweXN0cmluZy5zby4xIHB5c3RyaW5n LTEuMS4zXzEKIGxpYnlhbWwtY3BwLnNvLjAuNyB5YW1sLWNwcC0wLjcuMF8xCmRpZmYgLS1naXQg YS9zcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBsYXRlIGIvc3JjcGtncy9vcGVuaW1hZ2Vpby90ZW1w bGF0ZQppbmRleCBjMmQzNmI0YjM1MzkuLjBlOWUyMmU5Njg1ZCAxMDA2NDQKLS0tIGEvc3JjcGtn cy9vcGVuaW1hZ2Vpby90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3BlbmltYWdlaW8nCiBwa2du YW1lPW9wZW5pbWFnZWlvCiB2ZXJzaW9uPTIuNC45LjAKLXJldmlzaW9uPTQKK3JldmlzaW9uPTUK IGJ1aWxkX3N0eWxlPWNtYWtlCiBidWlsZF9oZWxwZXI9cWVtdQogY29uZmlndXJlX2FyZ3M9Ii1E VVNFX1FUPTAgLURVU0VfUFlUSE9OPTAgLURPSUlPX0JVSUxEX1RFU1RTPTAKCkZyb20gYjIzZmM5 ZGZhMGEyZDg3Y2MxMmMzNGIyM2YwOWY5NGQyMjhlMzBjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY3LzExNV0gb3BlbnNob3Q6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUgYi9zcmNwa2dzL29wZW5zaG90L3RlbXBsYXRl CmluZGV4IDMyMjcxN2Q0MGFiYy4uYzA3NGUwMzM4NzczIDEwMDY0NAotLS0gYS9zcmNwa2dzL29w ZW5zaG90L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVuc2hvdCcKIHBrZ25hbWU9b3BlbnNob3QK IHZlcnNpb249My4wLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXB5dGhv bjMtbW9kdWxlCiBob3N0bWFrZWRlcGVuZHM9InB5dGhvbjMgcHl0aG9uMy1zZXR1cHRvb2xzIgog bWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBweXRob24zLVB5UXQ1IgoKRnJvbSA4NmIyZjI0ZTdm NTM0YWYwOTNlMGZkNmE3NDczZjE5NWUxYTY1OGY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjgvMTE1XSBvcGVudG9vbno6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9vcGVudG9vbnovdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL29wZW50b29uei90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3BlbnRvb256L3RlbXBsYXRl CmluZGV4IGVlOWY3NjAzZjU1Zi4uM2U4MTgzNGNhMGVkIDEwMDY0NAotLS0gYS9zcmNwa2dzL29w ZW50b29uei90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW50b29uei90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW50b29ueicKIHBrZ25hbWU9b3BlbnRv b256CiB2ZXJzaW9uPTEuNi4wCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF93cmtzcmM9 InRvb256L3NvdXJjZXMiCiBidWlsZF9zdHlsZT1jbWFrZQogbWFrZV9jbWQ9bWFrZQoKRnJvbSA1 NDQyMDAwNGExMDQ3ZjAzYTc4NzRlYjA0NmI4YTIyNjIxZDc0N2E4IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjkvMTE1XSBwaWFub2Jhcjog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3BpYW5vYmFyL3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZSBiL3NyY3BrZ3MvcGlhbm9iYXIvdGVt cGxhdGUKaW5kZXggYTliMjllOTE5OTNmLi44MWVmY2QxMjJjNGQgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvcGlhbm9iYXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3BpYW5vYmFyJwogcGtnbmFtZT1waWFu b2JhcgogdmVyc2lvbj0yMDIyLjA0LjAxCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9z dHlsZT1nbnUtbWFrZWZpbGUKIG1ha2VfYnVpbGRfYXJncz0iVj0xIgogaG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIgoKRnJvbSA5NmE4YzExZGVmZmVlYzZlOGNlNTc1NmZlNjVkMmViZjg0NDEw ZGJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwNzAvMTE1XSBwcHNzcHA6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtn cy9wcHNzcHAvdGVtcGxhdGUgfCA3ICsrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlv bnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9wcHNzcHAvdGVtcGxh dGUgYi9zcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZQppbmRleCA3OTg0YTczM2Q0YmUuLjE1YTQyZmQy Yzk5MyAxMDA2NDQKLS0tIGEvc3JjcGtncy9wcHNzcHAvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9w cHNzcHAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdwcHNz cHAnCiBwa2duYW1lPXBwc3NwcAogdmVyc2lvbj0xLjE0LjQKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIF9nbHNsYW5nX2NvbW1pdD1kYzExYWRkZTIzYzQ1NWEyNGUxM2RkNTRkZTliNGVkZThiZGQ3 ZGI4CiBfU1BJUlZfQ3Jvc3NfY29tbWl0PTlhY2I5ZWMzMWY1YThlZjgwZWE2Yjk5NGJiNzdiZTc4 N2IwOGQzZDEKIF9hcm1pcHNfY29tbWl0PTY3MTllZGViYWFlMDMzMzBlZTU0NDFkOWIyODI4MDY3 MmVkZjAwZDUKQEAgLTEzLDcgKzEzLDcgQEAgY29uZmlndXJlX2FyZ3M9Ii1ESEVBRExFU1M9MSAt RFVTRV9TWVNURU1fRkZNUEVHPTEgLURVTklUVEVTVD1PTgogIC1EVVNJTkdfUVRfVUk9JCh2b3B0 X2lmIHF0IE9OIE9GRikgLURVU0VfU1lTVEVNX1pTVEQ9T04KICAtREFSTUlQU19VU0VfU1REX0ZJ TEVTWVNURU09T04iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcHl0aG9uMyAkKHZvcHRf aWYgcXQgcXQ1LWhvc3QtdG9vbHMpIgotbWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgZ2xldy1kZXZl bCBmZm1wZWctZGV2ZWwgbGliemlwLWRldmVsCittYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBnbGV3 LWRldmVsIGZmbXBlZzQtZGV2ZWwgbGliemlwLWRldmVsCiAgc25hcHB5LWRldmVsIHJhcGlkanNv biBsaWJwbmctZGV2ZWwgbGlienN0ZC1kZXZlbAogICQodm9wdF9pZiBzZGwyIFNETDItZGV2ZWwp ICQodm9wdF9pZiB3YXlsYW5kIHdheWxhbmQtZGV2ZWwpCiAgJCh2b3B0X2lmIHF0ICdxdDUtZGV2 ZWwgcXQ1LW11bHRpbWVkaWEtZGV2ZWwnKSIKQEAgLTYyLDEzICs2MiwxMiBAQCBwb3N0X2V4dHJh Y3QoKSB7CiAJbXYgJHt3cmtzcmN9L21pbml1cG5wLSR7X21pbml1cG5wX2NvbW1pdH0gJHt3cmtz cmN9L2V4dC9taW5pdXBucAogfQogCi1wb3N0X3BhdGNoKCl7Citwb3N0X3BhdGNoKCkgewogCSMg ZGlzYWJsZSBnaXQgdmVyc2lvbmluZwogCXZzZWQgLWUgJ3N8ZmluZF9wYWNrYWdlKEdpdCl8IyAm fCcgLWkgZ2l0LXZlcnNpb24uY21ha2UKIH0KIAogZG9faW5zdGFsbCgpIHsKLQl2bGljZW5zZSBM SUNFTlNFLlRYVAogCXZpbnN0YWxsIGljb25zL2ljb24uc3ZnIDY0NCB1c3Ivc2hhcmUvcGl4bWFw cyBwcHNzcHAuc3ZnCiAJdmluc3RhbGwgUXQvUFBTU1BQLmRlc2t0b3AgNjQ0IHVzci9zaGFyZS9h cHBsaWNhdGlvbnMKIAl2YmluIGJ1aWxkL1BQU1NQUEhlYWRsZXNzIHBwc3NwcC1oZWFkbGVzcwoK RnJvbSA5MTJhMmRjZjkyN2Q5MmIyN2Q0MGRjYjc0NmY1ZDVhNjQyNGYxM2I0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzEvMTE1XSBwcWl2 OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcHFpdi90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvcHFpdi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcHFpdi90ZW1wbGF0ZQppbmRl eCA1NDJmYzI3YTJkMzIuLjkzMDhkOTQ5YjZhMSAxMDA2NDQKLS0tIGEvc3JjcGtncy9wcWl2L3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvcHFpdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3BxaXYnCiBwa2duYW1lPXBxaXYKIHZlcnNpb249Mi4xMgotcmV2aXNp b249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBob3N0bWFrZWRlcGVu ZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0iZ2xpYi1kZXZlbCBndGsrMy1kZXZlbCAkKHZv cHRfaWYgZmZtcGVnIGZmbXBlZy1kZXZlbCkKCkZyb20gNjA3YzRmZjI4NzUzMDk1ZDlkNDVlOTI4 ZGU0YjcwNzYzOTk1NTk4NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDcyLzExNV0gcW1tcDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL3FtbXAvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3FtbXAvdGVtcGxhdGUg Yi9zcmNwa2dzL3FtbXAvdGVtcGxhdGUKaW5kZXggMjZjNjYxZWQxNmJlLi5hMTUwZDc0NDFjN2Eg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcW1tcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3FtbXAvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxbW1wJwogcGtnbmFt ZT1xbW1wCiB2ZXJzaW9uPTEuNi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHls ZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EVVNFX0hBTDpCT09MPUZBTFNFIC1EUU1NUF9ERUZB VUxUX1VJOlNUUklORz1zaW1wbGUiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LWhv c3QtdG9vbHMgcXQ1LXFtYWtlIgoKRnJvbSA0OTgwODYyMTQwMDRmMmYwODExYTNmMTA0YmJhNGI0 NTEyMjY4YmFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwNzMvMTE1XSBxdDUtd2ViZW5naW5lOiB1cGRhdGUgdG8gNS4xNS4xMwoKLS0tCiAu Li4vY2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaCAgICAgICAgfCAgMTEgKysKIHNy Y3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggICB8IDE3OSArKysrKysr KysrKysrKysrKysKIHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZSAgICAgICAgICAgICAg ICB8ICAxMCArLQogMyBmaWxlcyBjaGFuZ2VkLCAxOTUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9j aHJvbWl1bS1tZWRpYS1maWx0ZXJzLWNwcDE0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQu cGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9jaHJvbWl1bS1tZWRpYS1maWx0 ZXJzLWNwcDE0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u MDRhZGM1NDBmMmNiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3Bh dGNoZXMvY2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaApAQCAtMCwwICsxLDExIEBA CistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9CVUlMRC5nbgkyMDIz LTAyLTI3IDEzOjMyOjU5LjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL21lZGlhL2ZpbHRlcnMvQlVJTEQuZ24JMjAyMy0wNC0wMiAxNzoyMTozOS4yMDQwNjYzODQg LTA0MDAKK0BAIC05Niw2ICs5Niw4IEBACisgICAgICIvL3VpL2dmeC9nZW9tZXRyeTpnZW9tZXRy eSIsCisgICBdCisgCisrICBjZmxhZ3NfY2MgPSBbICItc3RkPWMrKzE0IiBdCisrCisgICBsaWJz ID0gW10KKyAKKyAgIGlmIChwcm9wcmlldGFyeV9jb2RlY3MpIHsKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJl bmdpbmUvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uYWM1NWUxNjM0NDIzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUt d2ViZW5naW5lL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDE3OSBAQAorLS0tIGEv c3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MJMjAy My0wNC0wMiAxNjo1MDo1Ny43MzI1NDc0NDYgLTA0MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCTIwMjMtMDQtMDIgMTY6NTA6MDku NDg2NDc4OTk1IC0wNDAwCitAQCAtNTcsNiArNTcsOCBAQAorIAorIG5hbWVzcGFjZSB7CisgCisr Y29uc3RleHByIGludDY0X3Qga1JlbGF0aXZlVHNCYXNlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4o MHg3ZmZlZmZmZmZmZmZmZmZmKTsKKysKKyB2b2lkIFNldEFWU3RyZWFtRGlzY2FyZChBVlN0cmVh bSogc3RyZWFtLCBBVkRpc2NhcmQgZGlzY2FyZCkgeworICAgRENIRUNLKHN0cmVhbSk7CisgICBz dHJlYW0tPmRpc2NhcmQgPSBkaXNjYXJkOworQEAgLTkwLDI0ICs5MiwxMiBAQAorIAorIHN0YXRp YyBiYXNlOjpUaW1lRGVsdGEgRXh0cmFjdFN0YXJ0VGltZShBVlN0cmVhbSogc3RyZWFtKSB7Cisg ICAvLyBUaGUgZGVmYXVsdCBzdGFydCB0aW1lIGlzIHplcm8uCistICBiYXNlOjpUaW1lRGVsdGEg c3RhcnRfdGltZTsKKysgIGJhc2U6OlRpbWVEZWx0YSBzdGFydF90aW1lID0ga05vVGltZXN0YW1w OworIAorICAgLy8gRmlyc3QgdHJ5IHRvIHVzZSAgdGhlIHxzdGFydF90aW1lfCB2YWx1ZSBhcyBp cy4KKyAgIGlmIChzdHJlYW0tPnN0YXJ0X3RpbWUgIT0ga05vRkZtcGVnVGltZXN0YW1wKQorICAg ICBzdGFydF90aW1lID0gQ29udmVydEZyb21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgc3Ry ZWFtLT5zdGFydF90aW1lKTsKKyAKKy0gIC8vIE5leHQgdHJ5IHRvIHVzZSB0aGUgZmlyc3QgRFRT IHZhbHVlLCBmb3IgY29kZWNzIHdoZXJlIHdlIGtub3cgUFRTID09IERUUworLSAgLy8gKGV4Y2x1 ZGVzIGFsbCBIMjZ4IGNvZGVjcykuIFRoZSBzdGFydCB0aW1lIG11c3QgYmUgcmV0dXJuZWQgaW4g UFRTLgorLSAgaWYgKHN0cmVhbS0+Zmlyc3RfZHRzICE9IGtOb0ZGbXBlZ1RpbWVzdGFtcCAmJgor LSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0hFVkMgJiYK Ky0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IMjY0ICYm CistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfTVBFRzQp IHsKKy0gICAgY29uc3QgYmFzZTo6VGltZURlbHRhIGZpcnN0X3B0cyA9CistICAgICAgICBDb252 ZXJ0RnJvbVRpbWVCYXNlKHN0cmVhbS0+dGltZV9iYXNlLCBzdHJlYW0tPmZpcnN0X2R0cyk7Cist ICAgIGlmIChmaXJzdF9wdHMgPCBzdGFydF90aW1lKQorLSAgICAgIHN0YXJ0X3RpbWUgPSBmaXJz dF9wdHM7CistICB9CistCisgICByZXR1cm4gc3RhcnRfdGltZTsKKyB9CisgCitAQCAtNDA4LDEx ICszOTgsMTEgQEAKKyAgIHNjb3BlZF9yZWZwdHI8RGVjb2RlckJ1ZmZlcj4gYnVmZmVyOworIAor ICAgaWYgKHR5cGUoKSA9PSBEZW11eGVyU3RyZWFtOjpURVhUKSB7CistICAgIGludCBpZF9zaXpl ID0gMDsKKysgICAgc2l6ZV90IGlkX3NpemUgPSAwOworICAgICB1aW50OF90KiBpZF9kYXRhID0g YXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCisgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9E QVRBX1dFQlZUVF9JREVOVElGSUVSLCAmaWRfc2l6ZSk7CisgCistICAgIGludCBzZXR0aW5nc19z aXplID0gMDsKKysgICAgc2l6ZV90IHNldHRpbmdzX3NpemUgPSAwOworICAgICB1aW50OF90KiBz ZXR0aW5nc19kYXRhID0gYXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCisgICAgICAgICBwYWNrZXQu Z2V0KCksIEFWX1BLVF9EQVRBX1dFQlZUVF9TRVRUSU5HUywgJnNldHRpbmdzX3NpemUpOworIAor QEAgLTQyNCw3ICs0MTQsNyBAQAorICAgICBidWZmZXIgPSBEZWNvZGVyQnVmZmVyOjpDb3B5RnJv bShwYWNrZXQtPmRhdGEsIHBhY2tldC0+c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2lkZV9kYXRhLmRhdGEoKSwgc2lkZV9kYXRhLnNpemUoKSk7CisgICB9IGVs c2UgeworLSAgICBpbnQgc2lkZV9kYXRhX3NpemUgPSAwOworKyAgICBzaXplX3Qgc2lkZV9kYXRh X3NpemUgPSAwOworICAgICB1aW50OF90KiBzaWRlX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVf ZGF0YSgKKyAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfTUFUUk9TS0FfQkxPQ0tB RERJVElPTkFMLCAmc2lkZV9kYXRhX3NpemUpOworIAorQEAgLTQ4NSw3ICs0NzUsNyBAQAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldC0+c2l6ZSAtIGRhdGFf b2Zmc2V0KTsKKyAgICAgfQorIAorLSAgICBpbnQgc2tpcF9zYW1wbGVzX3NpemUgPSAwOworKyAg ICBzaXplX3Qgc2tpcF9zYW1wbGVzX3NpemUgPSAwOworICAgICBjb25zdCB1aW50MzJfdCogc2tp cF9zYW1wbGVzX3B0ciA9CisgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90 Kj4oYXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCisgICAgICAgICAgICAgcGFja2V0LmdldCgpLCBB Vl9QS1RfREFUQV9TS0lQX1NBTVBMRVMsICZza2lwX3NhbXBsZXNfc2l6ZSkpOworQEAgLTE1ODcs NiArMTU3Nyw4IEBACisgICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6IHN0cmVhbXNfKSB7Cisg ICAgIGlmICghc3RyZWFtIHx8IHN0cmVhbS0+SXNFbmFibGVkKCkgIT0gZW5hYmxlZCkKKyAgICAg ICBjb250aW51ZTsKKysgICAgaWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0g QVZfTk9QVFNfVkFMVUUpCisrICAgICAgY29udGludWU7CisgICAgIGlmICghbG93ZXN0X3N0YXJ0 X3RpbWVfc3RyZWFtIHx8CisgICAgICAgICBzdHJlYW0tPnN0YXJ0X3RpbWUoKSA8IGxvd2VzdF9z dGFydF90aW1lX3N0cmVhbS0+c3RhcnRfdGltZSgpKSB7CisgICAgICAgbG93ZXN0X3N0YXJ0X3Rp bWVfc3RyZWFtID0gc3RyZWFtLmdldCgpOworQEAgLTE2MDQsNiArMTU5Niw4IEBACisgICAgIGlm IChzdHJlYW0gJiYgc3RyZWFtLT50eXBlKCkgPT0gRGVtdXhlclN0cmVhbTo6VklERU8gJiYKKyAg ICAgICAgIHN0cmVhbS0+SXNFbmFibGVkKCkpIHsKKyAgICAgICB2aWRlb19zdHJlYW0gPSBzdHJl YW0uZ2V0KCk7CisrICAgICAgaWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0g QVZfTk9QVFNfVkFMVUUpCisrICAgICAgICBjb250aW51ZTsKKyAgICAgICBpZiAodmlkZW9fc3Ry ZWFtLT5zdGFydF90aW1lKCkgPD0gc2Vla190aW1lKSB7CisgICAgICAgICByZXR1cm4gdmlkZW9f c3RyZWFtOworICAgICAgIH0KK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9z cmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19jb21tb24uaCBxdHdlYmVu Z2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2Nv bW1vbi5oCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19j b21tb24uaAkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmgJMjAyMi0wNy0xMSAy MjoxMjo0Ny45MTcxOTI3ODggLTA1MDAKK0BAIC0yOSw2ICsyOSw3IEBAIGV4dGVybiAiQyIgewor ICNpbmNsdWRlIDxsaWJhdmZvcm1hdC9hdmZvcm1hdC5oPgorICNpbmNsdWRlIDxsaWJhdmZvcm1h dC9hdmlvLmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9hdnV0aWwuaD4KKysjaW5jbHVkZSA8bGli YXZ1dGlsL2NoYW5uZWxfbGF5b3V0Lmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9pbWd1dGlscy5o PgorICNpbmNsdWRlIDxsaWJhdnV0aWwvbG9nLmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9tYXN0 ZXJpbmdfZGlzcGxheV9tZXRhZGF0YS5oPgorZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4x MC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVh ZGVyLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2Zp bHRlcnMvYXVkaW9fZmlsZV9yZWFkZXIuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9t ZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAw MDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9h dWRpb19maWxlX3JlYWRlci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxNzE5Mjc4OCAtMDUwMAor QEAgLTg1LDcgKzg1LDcgQEAgYm9vbCBBdWRpb0ZpbGVSZWFkZXI6Ok9wZW5EZW11eGVyKCkgewor IH0KKyAKKyBib29sIEF1ZGlvRmlsZVJlYWRlcjo6T3BlbkRlY29kZXIoKSB7CistICBBVkNvZGVj KiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7 CisrICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2Nv bnRleHRfLT5jb2RlY19pZCk7CisgICBpZiAoY29kZWMpIHsKKyAgICAgLy8gTVAzIGRlY29kZXMg dG8gUzE2UCB3aGljaCB3ZSBkb24ndCBzdXBwb3J0LCB0ZWxsIGl0IHRvIHVzZSBTMTYgaW5zdGVh ZC4KKyAgICAgaWYgKGNvZGVjX2NvbnRleHRfLT5zYW1wbGVfZm10ID09IEFWX1NBTVBMRV9GTVRf UzE2UCkKK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkv Y2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYyBxdHdlYmVuZ2lu ZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRp b19kZWNvZGVyLmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9m Zm1wZWdfYXVkaW9fZGVjb2Rlci5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUw MAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2F1ZGlv X2RlY29kZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTcxOTI3ODggLTA1MDAKK0BAIC0zMjks NyArMzI5LDcgQEAgYm9vbCBGRm1wZWdBdWRpb0RlY29kZXI6OkNvbmZpZ3VyZURlY29kZQorICAg ICB9CisgICB9CisgCistICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNv ZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29k ZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisgICBpZiAoIWNvZGVj IHx8CisgICAgICAgYXZjb2RlY19vcGVuMihjb2RlY19jb250ZXh0Xy5nZXQoKSwgY29kZWMsICZj b2RlY19vcHRpb25zKSA8IDApIHsKKyAgICAgRExPRyhFUlJPUikgPDwgIkNvdWxkIG5vdCBpbml0 aWFsaXplIGF1ZGlvIGRlY29kZXI6ICIKK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAu b3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZ2x1ZS5jYyBx dHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2Zm bXBlZ19nbHVlLmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9m Zm1wZWdfZ2x1ZS5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIv c3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2dsdWUuY2MJMjAyMi0w Ny0xMSAyMjoxMjo0Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC01OSw3ICs1OSw2IEBAIHN0YXRpYyBp bnQ2NF90IEFWSU9TZWVrT3BlcmF0aW9uKHZvaWQqIG8KKyB9CisgCisgdm9pZCBGRm1wZWdHbHVl OjpJbml0aWFsaXplRkZtcGVnKCkgeworLSAgYXZfcmVnaXN0ZXJfYWxsKCk7CisgfQorIAorIHN0 YXRpYyB2b2lkIExvZ0NvbnRhaW5lcihib29sIGlzX2xvY2FsX2ZpbGUsCitAQCAtOTUsOSArOTQs NiBAQCBGRm1wZWdHbHVlOjpGRm1wZWdHbHVlKEZGbXBlZ1VSTFByb3RvY29sCisgICAvLyBFbmFi bGUgZmFzdCwgYnV0IGluYWNjdXJhdGUgc2Vla3MgZm9yIE1QMy4KKyAgIGZvcm1hdF9jb250ZXh0 Xy0+ZmxhZ3MgfD0gQVZGTVRfRkxBR19GQVNUX1NFRUs7CisgCistICAvLyBFbnN1cmVzIHdlIGNh biByZWFkIG91dCB2YXJpb3VzIG1ldGFkYXRhIGJpdHMgbGlrZSB2cDggYWxwaGEuCistICBmb3Jt YXRfY29udGV4dF8tPmZsYWdzIHw9IEFWRk1UX0ZMQUdfS0VFUF9TSURFX0RBVEE7CistCisgICAv LyBFbnN1cmVzIGZvcm1hdCBwYXJzaW5nIGVycm9ycyB3aWxsIGJhaWwgb3V0LiBGcm9tIGFuIGF1 ZGl0IG9uIDExLzIwMTcsIGFsbAorICAgLy8gaW5zdGFuY2VzIHdlcmUgcmVhbCBmYWlsdXJlcy4g U29sdmVzIGJ1Z3MgbGlrZSBodHRwOi8vY3JidWcuY29tLzcxMDc5MS4KKyAgIGZvcm1hdF9jb250 ZXh0Xy0+ZXJyb3JfcmVjb2duaXRpb24gfD0gQVZfRUZfRVhQTE9ERTsKK2RpZmYgLU5hdXJwIHF0 d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVy cy9mZm1wZWdfdmlkZW9fZGVjb2Rlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ192aWRlb19kZWNvZGVyLmNjCistLS0gYS9z cmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfdmlkZW9fZGVjb2Rlci5j YwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX3ZpZGVvX2RlY29kZXIuY2MJMjAyMi0wNy0x MSAyMjoxMjo0Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC0zOTEsNyArMzkxLDcgQEAgYm9vbCBGRm1w ZWdWaWRlb0RlY29kZXI6OkNvbmZpZ3VyZURlY29kZQorICAgaWYgKGRlY29kZV9uYWx1c18pCisg ICAgIGNvZGVjX2NvbnRleHRfLT5mbGFnczIgfD0gQVZfQ09ERUNfRkxBRzJfQ0hVTktTOworIAor LSAgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+ Y29kZWNfaWQpOworKyAgY29uc3QgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rl cihjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQpOworICAgaWYgKCFjb2RlYyB8fCBhdmNvZGVjX29w ZW4yKGNvZGVjX2NvbnRleHRfLmdldCgpLCBjb2RlYywgTlVMTCkgPCAwKSB7CisgICAgIFJlbGVh c2VGRm1wZWdSZXNvdXJjZXMoKTsKKyAgICAgcmV0dXJuIGZhbHNlOworZGlmZiAtTmF1cnAgcXR3 ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJz L21lZGlhX2ZpbGVfY2hlY2tlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9tZWRpYS9maWx0ZXJzL21lZGlhX2ZpbGVfY2hlY2tlci5jYworLS0tIGEvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9jaGVja2VyLmNjCTIwMjIt MDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21p dW0vbWVkaWEvZmlsdGVycy9tZWRpYV9maWxlX2NoZWNrZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0 Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC02OCw3ICs2OCw3IEBAIGJvb2wgTWVkaWFGaWxlQ2hlY2tl cjo6U3RhcnQoYmFzZTo6VGltZUQKKyAgICAgICBhdXRvIGNvbnRleHQgPSBBVlN0cmVhbVRvQVZD b2RlY0NvbnRleHQoZm9ybWF0X2NvbnRleHQtPnN0cmVhbXNbaV0pOworICAgICAgIGlmICghY29u dGV4dCkKKyAgICAgICAgIGNvbnRpbnVlOworLSAgICAgIEFWQ29kZWMqIGNvZGVjID0gYXZjb2Rl Y19maW5kX2RlY29kZXIoY3AtPmNvZGVjX2lkKTsKKysgICAgICBjb25zdCBBVkNvZGVjKiBjb2Rl YyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNwLT5jb2RlY19pZCk7CisgICAgICAgaWYgKGNvZGVj ICYmIGF2Y29kZWNfb3BlbjIoY29udGV4dC5nZXQoKSwgY29kZWMsIG51bGxwdHIpID49IDApIHsK KyAgICAgICAgIGF1dG8gbG9vcCA9IHN0ZDo6bWFrZV91bmlxdWU8RkZtcGVnRGVjb2RpbmdMb29w Pihjb250ZXh0LmdldCgpKTsKKyAgICAgICAgIHN0cmVhbV9jb250ZXh0c1tpXSA9IHtzdGQ6Om1v dmUoY29udGV4dCksIHN0ZDo6bW92ZShsb29wKX07CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01 LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1 bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYyBxdHdlYmVu Z2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9k dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MKKy0tLSBh L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy92aWRlb19j b2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MJMjAyMi0wNS0yMyAwNjozODo0 MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2lt cGwuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC0yMDMsNyArMjAz LDcgQEAgaW50MzJfdCBIMjY0RGVjb2RlckltcGw6OkluaXREZWNvZGUoY29ucworICAgLy8gYSBw b2ludGVyIHx0aGlzfC4KKyAgIGF2X2NvbnRleHRfLT5vcGFxdWUgPSB0aGlzOworIAorLSAgQVZD b2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihhdl9jb250ZXh0Xy0+Y29kZWNfaWQp OworKyAgY29uc3QgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihhdl9jb250 ZXh0Xy0+Y29kZWNfaWQpOworICAgaWYgKCFjb2RlYykgeworICAgICAvLyBUaGlzIGlzIGFuIGlu ZGljYXRpb24gdGhhdCBGRm1wZWcgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIG9yIGl0IGhhcyBu b3QKKyAgICAgLy8gYmVlbiBjb21waWxlZC9pbml0aWFsaXplZCB3aXRoIHRoZSBjb3JyZWN0IHNl dCBvZiBjb2RlY3MuCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUg Yi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUKaW5kZXggODUyNjdjN2NmOGEzLi4wOTVh YjY3NzAxZTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUKQEAgLTEsOSArMSw5IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdxdDUtd2ViZW5naW5lJwogcGtnbmFtZT1xdDUtd2ViZW5naW5lCi12ZXJz aW9uPTUuMTUuMTEKLXJldmlzaW9uPTMKK3ZlcnNpb249NS4xNS4xMworcmV2aXNpb249MQogX3Zl cnNpb249IiR7dmVyc2lvbn0tbHRzIgotX2Nocm9taXVtX2NvbW1pdD1iZTM0OWVhZjYyZTc3OTU1 NzkxZDdiZjI5Zjg5M2YxZThhMzdkYWY0CitfY2hyb21pdW1fY29tbWl0PWU0OGRmNzgwM2M3Yzk4 YjBiMjQ3MWM5NDA1N2QzMmU0NGEzMDFhZDUKIGFyY2hzPSJ4ODZfNjQqIGk2ODYqIGFybXZbNjdd KiBwcGM2NCogYWFyY2g2NCoiCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfc3R5bGU9cW1ha2UK QEAgLTMyLDggKzMyLDggQEAgbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciwgTEdQTC0zLjAtb3It bGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9xdC5pby8iCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0 aHViLmNvbS9xdC9xdHdlYmVuZ2luZS9hcmNoaXZlL3Yke192ZXJzaW9ufS50YXIuZ3oKICBodHRw czovL2dpdGh1Yi5jb20vcXQvcXR3ZWJlbmdpbmUtY2hyb21pdW0vYXJjaGl2ZS8ke19jaHJvbWl1 bV9jb21taXR9LnRhci5neiIKLWNoZWNrc3VtPSJhYTc0NjYzNTZjNDUwYzVmNTg3MGY5NzliOTNj ZDdlN2U2MmRhMTE2NWMzMjhmZmNhYjFhOTkyOGRiMThhZDY3Ci0gNmY0N2VkOGFiOGNjMDYyNDEx ZjZmMjA2ZGE2MzUzYmM4MjYzZDZlZDZkNjI5MGM2ODlhMDVjMDFkOTFmNjQ2YiIKK2NoZWNrc3Vt PSI0YjU5ODM4ZWQ3NWVmNzg4YjU5ZTFlNDEyNTM1YTBlNDJkZDlkMzExNjYxZmRlYWRiMTkxYjU4 MWJhODE1YzYzCisgYTkxNjg2NTYyYjFkNGU4YjIyMGUwYmJjYmFiNWZlYjY0NjMwZTJkZTk3NGIz NWFjMDM0YmYzODhhZjc3MWE2YyIKIAogbm9fZ2VuZXJpY19wa2djb25maWdfbGluaz15ZXMKIGJ1 aWxkX29wdGlvbnM9InNuZGlvIHBpcGV3aXJlIgoKRnJvbSBhZDEzNWYxMjJkNDMxMjFkN2U5ZTY2 M2Y1YThiNDAzZDFiYTBjYjdhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwNzQvMTE1XSBxdDU6IHVwZGF0ZSB0byA1LjE1LjgKCi0tLQogLi4u ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoIHwgMTI5MTMgKysrKysr KysrKysrKysrKwogc3JjcGtncy9xdDUvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgMTIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTI5MTkgaW5zZXJ0aW9ucygrKSwgNiBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzL3F0LWV2ZXJ5 d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDUvcGF0Y2hlcy9xdC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1rZjUt MS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvcXQtZXZlcnl3aGVyZS1vcGVuc291cmNlLXNy Yy01LjE1Ljgta2Y1LTEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi45NjZjOThiY2QzYmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVz L3F0LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoCkBAIC0wLDAg KzEsMTI5MTMgQEAKK1N1Ym1pdHRlZCBCeTogICAgICAgICAgICBQaWVycmUgTGFiYXN0aWUgPHBp ZXJyZV9kb3RfbGFiYXN0aWVfYXRfbmV1Zl9kb3RfZnI+CitEYXRlOiAgICAgICAgICAgICAgICAg ICAgMjAyMy0wMS0wNQorSW5pdGlhbCBQYWNrYWdlIFZlcnNpb246IDUuMTUuOAorVXBzdHJlYW0g U3RhdHVzOiAgICAgICAgIEFwcGxpZWQgKGFjY29yZGluZyB0byBLREUpCitPcmlnaW46ICAgICAg ICAgICAgICAgICAgS0RFIHBhdGNoIHNldAorRGVzY3JpcHRpb246ICAgICAgICAgICAgIFBhdGNo IHNldCBtYWludGFpbmVkIGJ5IHRoZSBLREUgZm9sa3MKK3NlZSBodHRwczovL2RvdC5rZGUub3Jn LzIwMjEvMDQvMDYvYW5ub3VuY2luZy1rZGVzLXF0LTUtcGF0Y2gtY29sbGVjdGlvbgorUGF0Y2gg Z2VuZXJhdGVkIHVzaW5nIHRoZSBwcm9jZWR1cmUgaW4KK2h0dHBzOi8vd2lraS5saW51eGZyb21z Y3JhdGNoLm9yZy9ibGZzL3RpY2tldC8xNzQ3NiNjb21tZW50OjMKKworU3VibW9kdWxlIHF0YmFz ZSA0ZWU0ZmMxOC4uOWNmNTg2ZDY6CitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvY29tbW9u L2FuZHJvaWQvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvY29tbW9uL2FuZHJvaWQv cXBsYXRmb3JtZGVmcy5oCitpbmRleCBmNzViYzQwOTNiLi4yYmQ1OTQxMGQ0IDEwMDY0NAorLS0t IGEvcXRiYXNlL21rc3BlY3MvY29tbW9uL2FuZHJvaWQvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9x dGJhc2UvbWtzcGVjcy9jb21tb24vYW5kcm9pZC9xcGxhdGZvcm1kZWZzLmgKK0BAIC0xNDQsMTEg KzE0NCw3IEBACisgI2RlZmluZSBRVF9TSUdOQUxfQVJHUyAgICAgICAgICBpbnQKKyAjZGVmaW5l IFFUX1NJR05BTF9JR05PUkUgICAgICAgIFNJR19JR04KKyAKKy0jaWYgZGVmaW5lZChfX0dMSUJD X18pICYmIChfX0dMSUJDX18gPj0gMikKKyAjZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAg IHNvY2tsZW5fdAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQK Ky0jZW5kaWYKKyAKKyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJD RSA+PSA1MDApCisgI2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCitk aWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5tayBiL3F0YmFzZS9t a3NwZWNzL2ZlYXR1cmVzL21hYy9zZGsubWsKK2luZGV4IGYzMGI1ODMwYjQuLmEzMmNlYWNiNmMg MTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9mZWF0dXJlcy9tYWMvc2RrLm1rCisrKysgYi9x dGJhc2UvbWtzcGVjcy9mZWF0dXJlcy9tYWMvc2RrLm1rCitAQCAtMSw2ICsxLDYgQEAKKyAKKyBp ZmVxICgkKFFUX01BQ19TREtfTk9fVkVSU0lPTl9DSEVDSyksKQorLSAgICBDSEVDS19TREtfQ09N TUFORCA9IC91c3IvYmluL3hjcnVuIC0tc2RrICQoRVhQT1JUX1FNQUtFX01BQ19TREspIC1zaG93 LXNkay12ZXJzaW9uIDI+JjEKKysgICAgQ0hFQ0tfU0RLX0NPTU1BTkQgPSAvdXNyL2Jpbi94Y3J1 biAtLXNkayAkKEVYUE9SVF9RTUFLRV9NQUNfU0RLKSAtc2hvdy1zZGstdmVyc2lvbiAyPi9kZXYv bnVsbAorICAgICBDVVJSRU5UX01BQ19TREtfVkVSU0lPTiA6PSAkKHNoZWxsIERFVkVMT1BFUl9E SVI9JChFWFBPUlRfUU1BS0VfWENPREVfREVWRUxPUEVSX1BBVEgpICQoQ0hFQ0tfU0RLX0NPTU1B TkQpKQorICAgICBpZm5lcSAoJChDVVJSRU5UX01BQ19TREtfVkVSU0lPTiksJChFWFBPUlRfUU1B S0VfTUFDX1NES19WRVJTSU9OKSkKKyAgICAgICAgICMgV2UgZG9uJ3Qgd2FudCB0byBjb21wbGFp biBhYm91dCBvdXQgb2YgZGF0ZSBTREsgdW5sZXNzIHRoZSB0YXJnZXQgbmVlZHMgdG8gYmUgcmVt YWRlLgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWNsYW5nL3FwbGF0Zm9ybWRl ZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWNsYW5nL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXgg YTgxOGQ5NzNmMC4uYzFhYjcyZmJjNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4 LWNsYW5nL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgtY2xhbmcv cXBsYXRmb3JtZGVmcy5oCitAQCAtNzksMTQgKzc5LDYgQEAKKyAjZGVmaW5lIFFUX1VTRV9YT1BF Tl9MRlNfRVhURU5TSU9OUworICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVm cy5oIgorIAorLSN1bmRlZiBRVF9TT0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18p ICYmIChfX0dMSUJDX18gPj0gMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNv Y2tsZW5fdAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0j ZW5kaWYKKy0KKyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+ PSA1MDApCisgI2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCisgI2Rl ZmluZSBRVF9WU05QUklOVEYgICAgICAgICAgICA6OnZzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0 YmFzZS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9s aW51eC1nKysvcXBsYXRmb3JtZGVmcy5oCitpbmRleCAxMzUyM2YwNzAyLi40ZDI3NTBkOWVjIDEw MDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvbGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaAorKysr IGIvcXRiYXNlL21rc3BlY3MvbGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTc5LDE0ICs3 OSw2IEBACisgI2RlZmluZSBRVF9VU0VfWE9QRU5fTEZTX0VYVEVOU0lPTlMKKyAjaW5jbHVkZSAi Li4vY29tbW9uL3Bvc2l4L3FwbGF0Zm9ybWRlZnMuaCIKKyAKKy0jdW5kZWYgUVRfU09DS0xFTl9U CistCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fIDwgMikKKy0jZGVmaW5l IFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVO X1QgICAgICAgICAgICBzb2NrbGVuX3QKKy0jZW5kaWYKKy0KKyAjaWYgZGVmaW5lZChfWE9QRU5f U09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDApCisgI2RlZmluZSBRVF9TTlBSSU5URiAg ICAgICAgICAgICA6OnNucHJpbnRmCisgI2RlZmluZSBRVF9WU05QUklOVEYgICAgICAgICAgICA6 OnZzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBsYXRm b3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvbGludXgtbGx2bS9xcGxhdGZvcm1kZWZzLmgKK2lu ZGV4IGRjNzUwYWIxZWYuLmQzY2MzOWI0N2YgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9s aW51eC1sbHZtL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgtbGx2 bS9xcGxhdGZvcm1kZWZzLmgKK0BAIC04MCwxNCArODAsNiBAQAorICNkZWZpbmUgUVRfVVNFX1hP UEVOX0xGU19FWFRFTlNJT05TCisgI2luY2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1k ZWZzLmgiCisgCistI3VuZGVmIFFUX1NPQ0tMRU5fVAorLQorLSNpZiBkZWZpbmVkKF9fR0xJQkNf XykgJiYgKF9fR0xJQkNfXyA+PSAyKQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAg c29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAor LSNlbmRpZgorLQorICNpZiBkZWZpbmVkKF9YT1BFTl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNF ID49IDUwMCkKKyAjZGVmaW5lIFFUX1NOUFJJTlRGICAgICAgICAgICAgIDo6c25wcmludGYKKyAj ZGVmaW5lIFFUX1ZTTlBSSU5URiAgICAgICAgICAgIDo6dnNucHJpbnRmCitkaWZmIC0tZ2l0IGEv cXRiYXNlL21rc3BlY3MvbGludXgtbHNiLWcrKy9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtz cGVjcy9saW51eC1sc2ItZysrL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggNGM0ZTUzZGEyYS4uODNi YWZmYjNlMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxzYi1nKysvcXBsYXRm b3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVjcy9saW51eC1sc2ItZysrL3FwbGF0Zm9ybWRl ZnMuaAorQEAgLTg1LDE2ICs4NSw5IEBACisgI2luY2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxh dGZvcm1kZWZzLmgiCisgCisgI3VuZGVmIFFUX09QRU5fTEFSR0VGSUxFCistI3VuZGVmIFFUX1NP Q0tMRU5fVAorIAorICNkZWZpbmUgUVRfT1BFTl9MQVJHRUZJTEUgICAgICAgMAorIAorLSNpZiBk ZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+PSAyKQorLSNkZWZpbmUgUVRfU09DS0xF Tl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAg ICAgICAgICAgIGludAorLSNlbmRpZgorLQorICNpZm5kZWYgU0lPQ0dJRkJSREFERFIKKyAjICBk ZWZpbmUgU0lPQ0dJRkJSREFERFIgMHg4OTE5CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRiYXNl L21rc3BlY3MvbHlueG9zLWcrKy9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9seW54 b3MtZysrL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggNDMzOWVhMmIyMy4uNjAwN2FmMDA1NSAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2x5bnhvcy1nKysvcXBsYXRmb3JtZGVmcy5oCisrKysg Yi9xdGJhc2UvbWtzcGVjcy9seW54b3MtZysrL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTcyLDE0ICs3 Miw2IEBACisgCisgI2luY2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisg CistI3VuZGVmIFFUX1NPQ0tMRU5fVAorLQorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9f R0xJQkNfXyA+PSAyKQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgc29ja2xlbl90 CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAorLSNlbmRpZgor LQorICNpZiBkZWZpbmVkKF9YT1BFTl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkK KyAjZGVmaW5lIFFUX1NOUFJJTlRGICAgICAgICAgICAgIDo6c25wcmludGYKKyAjZGVmaW5lIFFU X1ZTTlBSSU5URiAgICAgICAgICAgIDo6dnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy8zcmRwYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcCBiL3F0YmFz ZS9zcmMvM3JkcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5jcHAKK2lu ZGV4IGMzYzE4NDI1OGYuLjMyYWYzZjhmMjkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjLzNyZHBh cnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwCisrKysgYi9xdGJhc2Uv c3JjLzNyZHBhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwCitAQCAt MTAsNiArMTAsNyBAQAorICNpbmNsdWRlICJsaWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuaCIKKyAK KyAjaW5jbHVkZSA8YWxnb3JpdGhtPgorKyNpbmNsdWRlIDxsaW1pdHM+CisgCisgI2luY2x1ZGUg ImNvbW1vbi9kZWJ1Zy5oIgorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvM3JkcGFydHkvZm9y a2ZkL2ZvcmtmZF9saW51eC5jIGIvcXRiYXNlL3NyYy8zcmRwYXJ0eS9mb3JrZmQvZm9ya2ZkX2xp bnV4LmMKK2luZGV4IGZmZTBlOWE1ZTIuLmIxZjU0MDhkMTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjLzNyZHBhcnR5L2ZvcmtmZC9mb3JrZmRfbGludXguYworKysrIGIvcXRiYXNlL3NyYy8zcmRw YXJ0eS9mb3JrZmQvZm9ya2ZkX2xpbnV4LmMKK0BAIC04Miw3ICs4Miw4IEBAIHN0YXRpYyBpbnQg c3lzX2Nsb25lKHVuc2lnbmVkIGxvbmcgY2xvbmVmbGFncywgaW50ICpwdGlkKQorICAgICByZXR1 cm4gc3lzY2FsbChfX05SX2Nsb25lLCBjbG9uZWZsYWdzLCBjaGlsZF9zdGFjaywgc3RhY2tfc2l6 ZSwgcHRpZCwgbmV3dGxzLCBjdGlkKTsKKyAjZWxpZiBkZWZpbmVkKF9fYXJjX18pIHx8IGRlZmlu ZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykg fHwgXAorICAgICBkZWZpbmVkKF9fbmRzMzJfXykgfHwgZGVmaW5lZChfX2hwcGFfXykgfHwgZGVm aW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICBkZWZpbmVk KF9feDg2XzY0X18pIHx8IGRlZmluZWQoX194dGVuc2FfXykgfHwgZGVmaW5lZChfX2FscGhhX18p IHx8IGRlZmluZWQoX19yaXNjdikKKysgICAgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVk KF9feHRlbnNhX18pIHx8IGRlZmluZWQoX19hbHBoYV9fKSB8fCBkZWZpbmVkKF9fcmlzY3YpIHx8 IFwKKysgICAgZGVmaW5lZChfX2xvb25nYXJjaF9fKQorICAgICAvKiBjdGlkIGFuZCBuZXd0bHMg YXJlIGludmVydGVkIG9uIENPTkZJR19DTE9ORV9CQUNLV0FSRFMgYXJjaGl0ZWN0dXJlcywKKyAg ICAgICogYnV0IHNpbmNlIGJvdGggdmFsdWVzIGFyZSAwLCB0aGVyZSdzIG5vIGhhcm0uICovCisg ICAgIHJldHVybiBzeXNjYWxsKF9fTlJfY2xvbmUsIGNsb25lZmxhZ3MsIGNoaWxkX3N0YWNrLCBw dGlkLCBjdGlkLCBuZXd0bHMpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvYW5kcm9pZC9qYXIv c3JjL29yZy9xdHByb2plY3QvcXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2YSBiL3F0YmFzZS9zcmMv YW5kcm9pZC9qYXIvc3JjL29yZy9xdHByb2plY3QvcXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2YQor aW5kZXggNTc5MmI1YjJmNS4uMmY3NDc1MGZjZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvYW5k cm9pZC9qYXIvc3JjL29yZy9xdHByb2plY3QvcXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2YQorKysr IGIvcXRiYXNlL3NyYy9hbmRyb2lkL2phci9zcmMvb3JnL3F0cHJvamVjdC9xdDUvYW5kcm9pZC9R dE5hdGl2ZS5qYXZhCitAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQor ICAgICBwdWJsaWMgc3RhdGljIFF0VGhyZWFkIG1fcXRUaHJlYWQgPSBuZXcgUXRUaHJlYWQoKTsK KyAgICAgcHJpdmF0ZSBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFVyaT4gbV9jYWNoZWRVcmlzID0g bmV3IEhhc2hNYXA8U3RyaW5nLCBVcmk+KCk7CisgICAgIHByaXZhdGUgc3RhdGljIEFycmF5TGlz dDxTdHJpbmc+IG1fa25vd25EaXJzID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisrICAgIHBy aXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UgPSAiTm8g cGVybWlzc2lvbnMgdG8gb3BlbiBVcmkiOworIAorICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBS dW5uYWJsZSBydW5QZW5kaW5nQ3BwUnVubmFibGVzUnVubmFibGUgPSBuZXcgUnVubmFibGUoKSB7 CisgICAgICAgICBAT3ZlcnJpZGUKK0BAIC0xOTMsMTEgKzE5NCwxMCBAQCBwdWJsaWMgY2xhc3Mg UXROYXRpdmUKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVyVXJpOworICAgICAgICAg ICAgIH0KKyAKKy0gICAgICAgICAgICAvLyBBbmRyb2lkIDYgYW5kIGVhcmxpZXIgY291bGQgc3Rp bGwgbWFuYWdlIHRvIG9wZW4gdGhlIGZpbGUgc28gd2UgY2FuIHJldHVybiB0aGUKKy0gICAgICAg ICAgICAvLyBwYXJzZWQgdXJpIGhlcmUKKy0gICAgICAgICAgICBpZiAoQnVpbGQuVkVSU0lPTi5T REtfSU5UIDwgMjQpCistICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWRVcmk7CistICAgICAg ICAgICAgcmV0dXJuIG51bGw7CisrICAgICAgICAgICAgLy8gaWYgd2Ugb25seSBoYXZlIHRyYW5z aWVudCBwZXJtaXNzaW9ucyBvbiB1cmkgYWxsIHRoZSBhYm92ZSB3aWxsIGZhaWwsCisrICAgICAg ICAgICAgLy8gYnV0IHdlIHdpbGwgYmUgYWJsZSB0byByZWFkIHRoZSBmaWxlIGFueXdheSwgc28g Y29udGludWUgd2l0aCB1cmkgaGVyZSBhbnl3YXkKKysgICAgICAgICAgICAvLyBhbmQgY2hlY2sg Zm9yIFNlY3VyaXR5RXhjZXB0aW9ucyBsYXRlcgorKyAgICAgICAgICAgIHJldHVybiBwYXJzZWRV cmk7CisgICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAg ICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgICByZXR1cm4gbnVsbDsKK0BAIC0y NDQsNyArMjQ0LDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICBpbnQgZXJyb3Ig PSAtMTsKKyAKKyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkgeworLSAgICAgICAgICAgIExvZy5l KFF0VEFHLCAib3BlbkZkRm9yQ29udGVudFVybCgpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVy aSIpOworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCAib3BlbkZkRm9yQ29udGVudFVybCgpOiAi ICsgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICByZXR1cm4gZXJyb3I7 CisgICAgICAgICB9CisgCitAQCAtMjU0LDEyICsyNTQsMTMgQEAgcHVibGljIGNsYXNzIFF0TmF0 aXZlCisgICAgICAgICAgICAgcmV0dXJuIGZkRGVzYy5kZXRhY2hGZCgpOworICAgICAgICAgfSBj YXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBlLnByaW50U3Rh Y2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgIH0gY2F0Y2gg KElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgTG9nLmUoUXRUQUcs ICJvcGVuRmRGb3JDb250ZW50VXJsKCk6IEludmFsaWQgVXJpIik7CisgICAgICAgICAgICAgZS5w cmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gZXJyb3I7CisrICAgICAgICB9 IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcs IE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICB9CisrICAgICAgICByZXR1cm4g ZXJyb3I7CisgICAgIH0KKyAKKyAgICAgcHVibGljIHN0YXRpYyBsb25nIGdldFNpemUoQ29udGV4 dCBjb250ZXh0LCBTdHJpbmcgY29udGVudFVybCkKK0BAIC0yNzAsNyArMjcxLDcgQEAgcHVibGlj IGNsYXNzIFF0TmF0aXZlCisgICAgICAgICAgICAgdXJpID0gZ2V0VXJpV2l0aFZhbGlkUGVybWlz c2lvbihjb250ZXh0LCBjb250ZW50VXJsLCAiciIpOworIAorICAgICAgICAgaWYgKHVyaSA9PSBu dWxsKSB7CistICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJnZXRTaXplKCk6IE5vIHBlcm1pc3Np b25zIHRvIG9wZW4gVXJpIik7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lv bkVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgcmV0dXJuIHNpemU7CisgICAgICAgICB9IGVs c2UgaWYgKCFtX2NhY2hlZFVyaXMuY29udGFpbnNLZXkoY29udGVudFVybCkpIHsKKyAgICAgICAg ICAgICBtX2NhY2hlZFVyaXMucHV0KGNvbnRlbnRVcmwsIHVyaSk7CitAQCAtMjg4LDEyICsyODks MTMgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJn dW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiZ2V0U2l6ZSgp OiBJbnZhbGlkIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAg ICAgICAgICAgcmV0dXJuIHNpemU7CisgICAgICAgICB9ICBjYXRjaCAoVW5zdXBwb3J0ZWRPcGVy YXRpb25FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiZ2V0U2l6ZSgp OiBVbnN1cHBvcnRlZCBvcGVyYXRpb24gZm9yIGdpdmVuIFVyaSIpOworICAgICAgICAgICAgIGUu cHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIHNpemU7CisrICAgICAgICB9 IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcs IE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICB9CisrICAgICAgICByZXR1cm4g c2l6ZTsKKyAgICAgfQorIAorICAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gY2hlY2tGaWxlRXhp c3RzKENvbnRleHQgY29udGV4dCwgU3RyaW5nIGNvbnRlbnRVcmwpCitAQCAtMzAzLDcgKzMwNSw3 IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgaWYgKHVyaSA9PSBudWxsKQorICAg ICAgICAgICAgIHVyaSA9IGdldFVyaVdpdGhWYWxpZFBlcm1pc3Npb24oY29udGV4dCwgY29udGVu dFVybCwgInIiKTsKKyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkgeworLSAgICAgICAgICAgIExv Zy5lKFF0VEFHLCAiY2hlY2tGaWxlRXhpc3RzKCk6IE5vIHBlcm1pc3Npb25zIHRvIG9wZW4gVXJp Iik7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7 CisgICAgICAgICAgICAgcmV0dXJuIGV4aXN0czsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICAgaWYgKCFtX2NhY2hlZFVyaXMuY29udGFpbnNLZXkoY29udGVudFVybCkpCitAQCAtMzIx LDEyICszMjMsMTMgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICB9IGNhdGNoIChJ bGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAi Y2hlY2tGaWxlRXhpc3RzKCk6IEludmFsaWQgVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0 YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gZXhpc3RzOworICAgICAgICAgfSBjYXRj aCAoVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5l KFF0VEFHLCAiY2hlY2tGaWxlRXhpc3RzKCk6IFVuc3VwcG9ydGVkIG9wZXJhdGlvbiBmb3IgZ2l2 ZW4gVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAg ICByZXR1cm4gZmFsc2U7CisrICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7 CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7Cisg ICAgICAgICB9CisrICAgICAgICByZXR1cm4gZXhpc3RzOworICAgICB9CisgCisgICAgIHB1Ymxp YyBzdGF0aWMgYm9vbGVhbiBjaGVja0lmV3JpdGFibGUoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcg Y29udGVudFVybCkKK0BAIC0zNDQsNyArMzQ3LDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisg ICAgICAgICAgICAgdXJpID0gZ2V0VXJpV2l0aFZhbGlkUGVybWlzc2lvbihjb250ZXh0LCBjb250 ZW50VXJsLCAiciIpOworICAgICAgICAgfQorICAgICAgICAgaWYgKHVyaSA9PSBudWxsKSB7Cist ICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJpc0RpcigpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVu IFVyaSIpOworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3Nh Z2UpOworICAgICAgICAgICAgIHJldHVybiBpc0RpcjsKKyAgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAgaWYgKCFtX2NhY2hlZFVyaXMuY29udGFpbnNLZXkoY29udGVudFVybCkpCitAQCAt Mzc0LDEyICszNzcsMTMgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICB9IGNhdGNo IChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFH LCAiY2hlY2tJZkRpcigpOiBJbnZhbGlkIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFj a1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgfSBjYXRjaCAo VW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0 VEFHLCAiY2hlY2tJZkRpcigpOiBVbnN1cHBvcnRlZCBvcGVyYXRpb24gZm9yIGdpdmVuIFVyaSIp OworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJu IGZhbHNlOworKyAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAg ICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAg fQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CisgICAgIHB1YmxpYyBzdGF0aWMgU3Ry aW5nW10gbGlzdENvbnRlbnRzRnJvbVRyZWVVcmkoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgY29u dGVudFVybCkKKyAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNv bmN1cnJlbnRyZWR1Y2VrZXJuZWwuaCBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJl bnRyZWR1Y2VrZXJuZWwuaAoraW5kZXggOGY5YTkzODk1Mi4uYTk4ZGVkZWYyZSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwuaAorKysr IGIvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHJlZHVjZWtlcm5lbC5oCitAQCAt MjEyLDExICsyMTIsMTMgQEAgcHVibGljOgorIAorICAgICBpbmxpbmUgYm9vbCBzaG91bGRUaHJv dHRsZSgpCisgICAgIHsKKysgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxRTXV0ZXg+IGxvY2tlciht dXRleCk7CisgICAgICAgICByZXR1cm4gKHJlc3VsdHNNYXBTaXplID4gKFJlZHVjZVF1ZXVlVGhy b3R0bGVMaW1pdCAqIHRocmVhZENvdW50KSk7CisgICAgIH0KKyAKKyAgICAgaW5saW5lIGJvb2wg c2hvdWxkU3RhcnRUaHJlYWQoKQorICAgICB7CisrICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8UU11 dGV4PiBsb2NrZXIobXV0ZXgpOworICAgICAgICAgcmV0dXJuIChyZXN1bHRzTWFwU2l6ZSA8PSAo UmVkdWNlUXVldWVTdGFydExpbWl0ICogdGhyZWFkQ291bnQpKTsKKyAgICAgfQorIH07CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5j cHAgYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAor aW5kZXggZWE2Y2UzYWM0Mi4uN2Y5MWEyYmE2OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29u Y3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2Nv bmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAorQEAgLTE3Niw2ICsxNzYsMzkg QEAgdm9pZCBUaHJlYWRFbmdpbmVCYXNlOjpzdGFydFNpbmdsZVRocmVhZGVkKCkKKyAgICAgZmlu aXNoKCk7CisgfQorIAorK3ZvaWQgVGhyZWFkRW5naW5lQmFzZTo6c3RhcnRCbG9ja2luZygpCisr eworKyAgICBzdGFydCgpOworKyAgICBiYXJyaWVyLmFjcXVpcmUoKTsKKysgICAgc3RhcnRUaHJl YWRzKCk7CisrCisrICAgIGJvb2wgdGhyb3R0bGVkID0gZmFsc2U7CisrI2lmbmRlZiBRVF9OT19F WENFUFRJT05TCisrICAgIHRyeSB7CisrI2VuZGlmCisrICAgICAgICB3aGlsZSAodGhyZWFkRnVu Y3Rpb24oKSA9PSBUaHJvdHRsZVRocmVhZCkgeworKyAgICAgICAgICAgIGlmICh0aHJlYWRUaHJv dHRsZUV4aXQoKSkgeworKyAgICAgICAgICAgICAgICB0aHJvdHRsZWQgPSB0cnVlOworKyAgICAg ICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrI2lmbmRlZiBR VF9OT19FWENFUFRJT05TCisrICAgIH0gY2F0Y2ggKFFFeGNlcHRpb24gJmUpIHsKKysgICAgICAg IGhhbmRsZUV4Y2VwdGlvbihlKTsKKysgICAgfSBjYXRjaCAoLi4uKSB7CisrICAgICAgICBoYW5k bGVFeGNlcHRpb24oUVVuaGFuZGxlZEV4Y2VwdGlvbigpKTsKKysgICAgfQorKyNlbmRpZgorKwor KyAgICBpZiAodGhyb3R0bGVkID09IGZhbHNlKSB7CisrICAgICAgICBiYXJyaWVyLnJlbGVhc2Uo KTsKKysgICAgfQorKworKyAgICBiYXJyaWVyLndhaXQoKTsKKysgICAgZmluaXNoKCk7CisrICAg IGV4Y2VwdGlvblN0b3JlLnRocm93UG9zc2libGVFeGNlcHRpb24oKTsKKyt9CisrCisgdm9pZCBU aHJlYWRFbmdpbmVCYXNlOjpzdGFydFRocmVhZCgpCisgeworICAgICBzdGFydFRocmVhZEludGVy bmFsKCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRo cmVhZGVuZ2luZS5oIGIvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVu Z2luZS5oCitpbmRleCA3YzMwY2ViZGJjLi5hNGM4NTQ4Y2M0IDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5oCisrKysgYi9xdGJhc2Uv c3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmgKK0BAIC05MSw2ICs5MSw3 IEBAIHB1YmxpYzoKKyAgICAgVGhyZWFkRW5naW5lQmFzZSgpOworICAgICB2aXJ0dWFsIH5UaHJl YWRFbmdpbmVCYXNlKCk7CisgICAgIHZvaWQgc3RhcnRTaW5nbGVUaHJlYWRlZCgpOworKyAgICB2 b2lkIHN0YXJ0QmxvY2tpbmcoKTsKKyAgICAgdm9pZCBzdGFydFRocmVhZCgpOworICAgICBib29s IGlzQ2FuY2VsZWQoKTsKKyAgICAgdm9pZCB3YWl0Rm9yUmVzdW1lKCk7CitAQCAtMTQzLDYgKzE0 NCwxNSBAQCBwdWJsaWM6CisgICAgICAgICByZXR1cm4gcmVzdWx0KCk7CisgICAgIH0KKyAKKysg ICAgLy8gUnVucyB0aGUgdXNlciBhbGdvcml0aG0gdXNpbmcgbXVsdGlwbGUgdGhyZWFkcy4KKysg ICAgLy8gVGhpcyBmdW5jdGlvbiBibG9ja3MgdW50aWwgdGhlIGFsZ29yaXRobSBpcyBmaW5pc2hl ZCwKKysgICAgLy8gYW5kIHRoZW4gcmV0dXJucyB0aGUgcmVzdWx0LgorKyAgICBUICpzdGFydEJs b2NraW5nKCkKKysgICAgeworKyAgICAgICAgVGhyZWFkRW5naW5lQmFzZTo6c3RhcnRCbG9ja2lu ZygpOworKyAgICAgICAgcmV0dXJuIHJlc3VsdCgpOworKyAgICB9CisrCisgICAgIC8vIFJ1bnMg dGhlIHVzZXIgYWxnb3JpdGhtIHVzaW5nIG11bHRpcGxlIHRocmVhZHMuCisgICAgIC8vIERvZXMg bm90IGJsb2NrLCByZXR1cm5zIGEgZnV0dXJlLgorICAgICBRRnV0dXJlPFQ+IHN0YXJ0QXN5bmNo cm9ub3VzbHkoKQorQEAgLTIyMyw2ICsyMzMsMTMgQEAgY2xhc3MgVGhyZWFkRW5naW5lU3RhcnRl ciA6IHB1YmxpYyBUaHJlYWRFbmdpbmVTdGFydGVyQmFzZTxUPgorIHB1YmxpYzoKKyAgICAgVGhy ZWFkRW5naW5lU3RhcnRlcihUeXBlZFRocmVhZEVuZ2luZSAqZW5nKQorICAgICAgICAgOiBCYXNl KGVuZykgeyB9CisrCisrICAgIFQgc3RhcnRCbG9ja2luZygpCisrICAgIHsKKysgICAgICAgIFQg dCA9ICp0aGlzLT50aHJlYWRFbmdpbmUtPnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGRlbGV0 ZSB0aGlzLT50aHJlYWRFbmdpbmU7CisrICAgICAgICByZXR1cm4gdDsKKysgICAgfQorIH07Cisg CisgLy8gRnVsbCB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiB3aGVyZSBUIGlzIHZvaWQuCitAQCAt MjMyLDYgKzI0OSwxMiBAQCBjbGFzcyBUaHJlYWRFbmdpbmVTdGFydGVyPHZvaWQ+IDogcHVibGlj IFRocmVhZEVuZ2luZVN0YXJ0ZXJCYXNlPHZvaWQ+CisgcHVibGljOgorICAgICBUaHJlYWRFbmdp bmVTdGFydGVyKFRocmVhZEVuZ2luZTx2b2lkPiAqX3RocmVhZEVuZ2luZSkKKyAgICAgICAgIDog VGhyZWFkRW5naW5lU3RhcnRlckJhc2U8dm9pZD4oX3RocmVhZEVuZ2luZSkge30KKysKKysgICAg dm9pZCBzdGFydEJsb2NraW5nKCkKKysgICAgeworKyAgICAgICAgdGhpcy0+dGhyZWFkRW5naW5l LT5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBkZWxldGUgdGhpcy0+dGhyZWFkRW5naW5lOwor KyAgICB9CisgfTsKKyAKKyAvLyEgW3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS0xXQorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9hbmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3Bw IGIvcXRiYXNlL3NyYy9jb3JlbGliL2FuaW1hdGlvbi9xdmFyaWFudGFuaW1hdGlvbi5jcHAKK2lu ZGV4IDk4YjAyZjAyMDIuLmVhYzE1MjQxMDcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVs aWIvYW5pbWF0aW9uL3F2YXJpYW50YW5pbWF0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3Jl bGliL2FuaW1hdGlvbi9xdmFyaWFudGFuaW1hdGlvbi5jcHAKK0BAIC0yNzYsNyArMjc2LDkgQEAg dm9pZCBRVmFyaWFudEFuaW1hdGlvblByaXZhdGU6OnNldEN1cnJlbnRWYWx1ZUZvclByb2dyZXNz KGNvbnN0IHFyZWFsIHByb2dyZXNzKQorIAorICAgICBjb25zdCBxcmVhbCBzdGFydFByb2dyZXNz ID0gY3VycmVudEludGVydmFsLnN0YXJ0LmZpcnN0OworICAgICBjb25zdCBxcmVhbCBlbmRQcm9n cmVzcyA9IGN1cnJlbnRJbnRlcnZhbC5lbmQuZmlyc3Q7CistICAgIGNvbnN0IHFyZWFsIGxvY2Fs UHJvZ3Jlc3MgPSAocHJvZ3Jlc3MgLSBzdGFydFByb2dyZXNzKSAvIChlbmRQcm9ncmVzcyAtIHN0 YXJ0UHJvZ3Jlc3MpOworKyAgICBjb25zdCBxcmVhbCBsb2NhbFByb2dyZXNzID0KKysgICAgICAg ICAgICBxSXNOdWxsKHByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcykgPyAwLjAgLy8gYXZvaWQgMC8w IGJlbG93CisrICAgICAgICAgICAgLyogZWxzZSAqLyAgICAgICAgICAgICAgICAgICAgICAgIDog KHByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcykgLyAoZW5kUHJvZ3Jlc3MgLSBzdGFydFByb2dyZXNz KTsKKyAKKyAgICAgUVZhcmlhbnQgcmV0ID0gcS0+aW50ZXJwb2xhdGVkKGN1cnJlbnRJbnRlcnZh bC5zdGFydC5zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJy ZW50SW50ZXJ2YWwuZW5kLnNlY29uZCwKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIv Z2xvYmFsL3FuYW1lc3BhY2UuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcW5hbWVzcGFj ZS5oCitpbmRleCBhZDQxNTBiMzE3Li5iZjE5YjE2MjdiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9jb3JlbGliL2dsb2JhbC9xbmFtZXNwYWNlLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9n bG9iYWwvcW5hbWVzcGFjZS5oCitAQCAtMTg2NCw3ICsxODY0LDcgQEAgcHVibGljOgorICAgICBR VF9RX0VOVU0oVGltZXJUeXBlKQorICAgICBRVF9RX0VOVU0oU2Nyb2xsUGhhc2UpCisgICAgIFFU X1FfRU5VTShNb3VzZUV2ZW50U291cmNlKQorLSAgICBRVF9RX0ZMQUcoTW91c2VFdmVudEZsYWcp CisrICAgIFFUX1FfRkxBRyhNb3VzZUV2ZW50RmxhZ3MpCisgICAgIFFUX1FfRU5VTShDaGVja3N1 bVR5cGUpCisgICAgIFFUX1FfRU5VTShIaWdoRHBpU2NhbGVGYWN0b3JSb3VuZGluZ1BvbGljeSkK KyAgICAgUVRfUV9FTlVNKFRhYkZvY3VzQmVoYXZpb3IpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9jb3JlbGliL2dsb2JhbC9xcmFuZG9tLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwv cXJhbmRvbS5jcHAKK2luZGV4IDEwNjcyYzFmOTIuLjI1Zjg3YzdlNmEgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FyYW5kb20uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvZ2xvYmFsL3FyYW5kb20uY3BwCitAQCAtMzgzLDcgKzM4Myw2IEBAIHN0cnVjdCBRUmFu ZG9tR2VuZXJhdG9yOjpTeXN0ZW1BbmRHbG9iYWxHZW5lcmF0b3JzCisgCisgICAgICAgICBjb25z dGV4cHIgU3lzdGVtQW5kR2xvYmFsR2VuZXJhdG9ycyBnID0ge307CisgICAgICAgICBRX1VOVVNF RChnKTsKKy0gICAgICAgIFFfU1RBVElDX0FTU0VSVChzdGQ6OmlzX2xpdGVyYWxfdHlwZTxTeXN0 ZW1BbmRHbG9iYWxHZW5lcmF0b3JzPjo6dmFsdWUpOworICNlbmRpZgorICAgICB9CisgCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FidWZmZXIuY3BwIGIvcXRiYXNlL3NyYy9j b3JlbGliL2lvL3FidWZmZXIuY3BwCitpbmRleCA1OTVmY2QyNzI0Li4wMzJjMGRkZDRiIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FidWZmZXIuY3BwCisrKysgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvaW8vcWJ1ZmZlci5jcHAKK0BAIC00MSw2ICs0MSw4IEBACisgI2luY2x1ZGUg PFF0Q29yZS9xbWV0YW9iamVjdC5oPgorICNpbmNsdWRlICJwcml2YXRlL3Fpb2RldmljZV9wLmgi CisgCisrI2luY2x1ZGUgPGxpbWl0cz4KKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyAvKiog UUJ1ZmZlclByaXZhdGUgKiovCitAQCAtMzY2LDcgKzM2OCw5IEBAIHFpbnQ2NCBRQnVmZmVyOjpz aXplKCkgY29uc3QKKyBib29sIFFCdWZmZXI6OnNlZWsocWludDY0IHBvcykKKyB7CisgICAgIFFf RChRQnVmZmVyKTsKKy0gICAgaWYgKHBvcyA+IGQtPmJ1Zi0+c2l6ZSgpICYmIGlzV3JpdGFibGUo KSkgeworKyAgICBjb25zdCBhdXRvIG9sZEJ1ZlNpemUgPSBkLT5idWYtPnNpemUoKTsKKysgICAg Y29uc3RleHByIHFpbnQ2NCBNYXhTZWVrUG9zID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8ZGVjbHR5 cGUob2xkQnVmU2l6ZSk+OjptYXgpKCk7CisrICAgIGlmIChwb3MgPD0gTWF4U2Vla1BvcyAmJiBw b3MgPiBvbGRCdWZTaXplICYmIGlzV3JpdGFibGUoKSkgeworICAgICAgICAgaWYgKHNlZWsoZC0+ YnVmLT5zaXplKCkpKSB7CisgICAgICAgICAgICAgY29uc3QgcWludDY0IGdhcFNpemUgPSBwb3Mg LSBkLT5idWYtPnNpemUoKTsKKyAgICAgICAgICAgICBpZiAod3JpdGUoUUJ5dGVBcnJheShnYXBT aXplLCAwKSkgIT0gZ2FwU2l6ZSkgeworQEAgLTM3Nyw3ICszODEsNyBAQCBib29sIFFCdWZmZXI6 OnNlZWsocWludDY0IHBvcykKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICB9 CisgICAgIH0gZWxzZSBpZiAocG9zID4gZC0+YnVmLT5zaXplKCkgfHwgcG9zIDwgMCkgeworLSAg ICAgICAgcVdhcm5pbmcoIlFCdWZmZXI6OnNlZWs6IEludmFsaWQgcG9zOiAlZCIsIGludChwb3Mp KTsKKysgICAgICAgIHFXYXJuaW5nKCJRQnVmZmVyOjpzZWVrOiBJbnZhbGlkIHBvczogJWxsZCIs IHBvcyk7CisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KKyAgICAgcmV0dXJuIFFJT0Rl dmljZTo6c2Vlayhwb3MpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmls ZXN5c3RlbWVuZ2luZV93aW4uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVt ZW5naW5lX3dpbi5jcHAKK2luZGV4IDgxZDNhNzE5ODYuLmM4NmVkMWY5YjAgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW1lbmdpbmVfd2luLmNwcAorKysrIGIv cXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtZW5naW5lX3dpbi5jcHAKK0BAIC02NjQs MTQgKzY2NCwxNCBAQCBRRmlsZVN5c3RlbUVudHJ5IFFGaWxlU3lzdGVtRW5naW5lOjphYnNvbHV0 ZU5hbWUoY29uc3QgUUZpbGVTeXN0ZW1FbnRyeSAmZW50cnkpCisgICAgIHJldHVybiBRRmlsZVN5 c3RlbUVudHJ5KHJldCwgUUZpbGVTeXN0ZW1FbnRyeTo6RnJvbUludGVybmFsUGF0aCgpKTsKKyB9 CisgCistI2lmIGRlZmluZWQoUV9DQ19NSU5HVykgJiYgV0lOVkVSIDwgMHgwNjAyIC8vICBXaW5k b3dzIDggb253YXJkcworKyNpZiBkZWZpbmVkKFFfQ0NfTUlOR1cpICYmIFdJTlZFUiA8IDB4MDYw MiAmJiBfV0lOMzJfV0lOTlQgPCBfV0lOMzJfV0lOTlRfV0lOOCAvLyAgV2luZG93cyA4IG9ud2Fy ZHMKKyAKKyB0eXBlZGVmIHN0cnVjdCBfRklMRV9JRF9JTkZPIHsKKyAgICAgVUxPTkdMT05HIFZv bHVtZVNlcmlhbE51bWJlcjsKKyAgICAgRklMRV9JRF8xMjggRmlsZUlkOworIH0gRklMRV9JRF9J TkZPLCAqUEZJTEVfSURfSU5GTzsKKyAKKy0jZW5kaWYgLy8gaWYgZGVmaW5lZCAoUV9DQ19NSU5H VykgJiYgV0lOVkVSIDwgMHgwNjAyCisrI2VuZGlmIC8vIGlmIGRlZmluZWQoUV9DQ19NSU5HVykg JiYgV0lOVkVSIDwgMHgwNjAyICYmIF9XSU4zMl9XSU5OVCA8IF9XSU4zMl9XSU5OVF9XSU44Cisg CisgLy8gRmlsZSBJRCBmb3IgV2luZG93cyB1cCB0byB2ZXJzaW9uIDcgYW5kIEZBVDMyIGRyaXZl cworIHN0YXRpYyBpbmxpbmUgUUJ5dGVBcnJheSBmaWxlSWQoSEFORExFIGhhbmRsZSkKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW13YXRjaGVyX2lub3RpZnku Y3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtd2F0Y2hlcl9pbm90aWZ5LmNw cAoraW5kZXggOTRkOWQwNmJjYi4uMjdlMGIxM2IwYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Y29yZWxpYi9pby9xZmlsZXN5c3RlbXdhdGNoZXJfaW5vdGlmeS5jcHAKKysrKyBiL3F0YmFzZS9z cmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbXdhdGNoZXJfaW5vdGlmeS5jcHAKK0BAIC0zNjYsNyAr MzY2LDkgQEAgdm9pZCBRSW5vdGlmeUZpbGVTeXN0ZW1XYXRjaGVyRW5naW5lOjpyZWFkRnJvbUlu b3RpZnkoKQorICAgICAvLyBxRGVidWcoIlFJbm90aWZ5RmlsZVN5c3RlbVdhdGNoZXJFbmdpbmU6 OnJlYWRGcm9tSW5vdGlmeSIpOworIAorICAgICBpbnQgYnVmZlNpemUgPSAwOworLSAgICBpb2N0 bChpbm90aWZ5RmQsIEZJT05SRUFELCAoY2hhciAqKSAmYnVmZlNpemUpOworKyAgICBpZiAoaW9j dGwoaW5vdGlmeUZkLCBGSU9OUkVBRCwgKGNoYXIgKikgJmJ1ZmZTaXplKSA9PSAtMSB8fCBidWZm U2l6ZSA9PSAwKQorKyAgICAgICAgcmV0dXJuOworKworICAgICBRVmFyTGVuZ3RoQXJyYXk8Y2hh ciwgNDA5Nj4gYnVmZmVyKGJ1ZmZTaXplKTsKKyAgICAgYnVmZlNpemUgPSByZWFkKGlub3RpZnlG ZCwgYnVmZmVyLmRhdGEoKSwgYnVmZlNpemUpOworICAgICBjaGFyICphdCA9IGJ1ZmZlci5kYXRh KCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93aW4uY3Bw IGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93aW4uY3BwCitpbmRleCAyNzdmOGQ0 MjMwLi4zOGVjZWY1NTUwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fsb2Nr ZmlsZV93aW4uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWxvY2tmaWxlX3dpbi5j cHAKK0BAIC00OCw2ICs0OCw4IEBACisgI2luY2x1ZGUgIlF0Q29yZS9xZGVidWcuaCIKKyAjaW5j bHVkZSAiUXRDb3JlL3F0aHJlYWQuaCIKKyAKKysjaW5jbHVkZSAicHJpdmF0ZS9xc3lzdGVtbGli cmFyeV9wLmgiCisrCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgc3RhdGljIGlubGluZSBib29s IGZpbGVFeGlzdHMoY29uc3Qgd2NoYXJfdCAqZmlsZU5hbWUpCitAQCAtMTUwLDcgKzE1Miw3IEBA IFFTdHJpbmcgUUxvY2tGaWxlUHJpdmF0ZTo6cHJvY2Vzc05hbWVCeVBpZChxaW50NjQgcGlkKQor ICNpZiAhZGVmaW5lZChRX09TX1dJTlJUKQorICAgICB0eXBlZGVmIERXT1JEIChXSU5BUEkgKkdl dE1vZHVsZUZpbGVOYW1lRXhGdW5jKShIQU5ETEUsIEhNT0RVTEUsIExQVFNUUiwgRFdPUkQpOwor IAorLSAgICBITU9EVUxFIGhQc2FwaSA9IExvYWRMaWJyYXJ5QSgicHNhcGkiKTsKKysgICAgSE1P RFVMRSBoUHNhcGkgPSBRU3lzdGVtTGlicmFyeTo6bG9hZChMInBzYXBpIik7CisgICAgIGlmICgh aFBzYXBpKQorICAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKKyAgICAgR2V0TW9kdWxlRmlsZU5h bWVFeEZ1bmMgcUdldE1vZHVsZUZpbGVOYW1lRXggPSByZWludGVycHJldF9jYXN0PEdldE1vZHVs ZUZpbGVOYW1lRXhGdW5jPigKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcXBy b2Nlc3NfdW5peC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcXByb2Nlc3NfdW5peC5jcHAK K2luZGV4IDUwMzkwZTU3ZjUuLjE1YzhmMzA3NDUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvaW8vcXByb2Nlc3NfdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9x cHJvY2Vzc191bml4LmNwcAorQEAgLTEsNyArMSw3IEBACisgLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyAqKgorICoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQgQ29tcGFueSBMdGQuCistKiogQ29w eXJpZ2h0IChDKSAyMDE2IEludGVsIENvcnBvcmF0aW9uLgorKyoqIENvcHlyaWdodCAoQykgMjAy MiBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNl bnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRDb3JlIG1vZHVsZSBv ZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC00MjIsMTQgKzQyMiwxNSBAQCB2b2lkIFFQcm9jZXNzUHJp dmF0ZTo6c3RhcnRQcm9jZXNzKCkKKyAgICAgLy8gQWRkIHRoZSBwcm9ncmFtIG5hbWUgdG8gdGhl IGFyZ3VtZW50IGxpc3QuCisgICAgIGFyZ3ZbMF0gPSBudWxscHRyOworICAgICBpZiAoIXByb2dy YW0uY29udGFpbnMoUUxhdGluMUNoYXIoJy8nKSkpIHsKKysgICAgICAgIC8vIGZpbmRFeGVjdXRh YmxlKCkgcmV0dXJucyBpdHMgYXJndW1lbnQgaWYgaXQncyBhbiBhYnNvbHV0ZSBwYXRoLAorKyAg ICAgICAgLy8gb3RoZXJ3aXNlIGl0IHNlYXJjaGVzICRQQVRIOyByZXR1cm5zIGVtcHR5IGlmIG5v dCBmb3VuZCAod2UgaGFuZGxlCisrICAgICAgICAvLyB0aGF0IGNhc2UgbXVjaCBsYXRlcikKKyAg ICAgICAgIGNvbnN0IFFTdHJpbmcgJmV4ZUZpbGVQYXRoID0gUVN0YW5kYXJkUGF0aHM6OmZpbmRF eGVjdXRhYmxlKHByb2dyYW0pOworLSAgICAgICAgaWYgKCFleGVGaWxlUGF0aC5pc0VtcHR5KCkp IHsKKy0gICAgICAgICAgICBjb25zdCBRQnl0ZUFycmF5ICZ0bXAgPSBRRmlsZTo6ZW5jb2RlTmFt ZShleGVGaWxlUGF0aCk7CistICAgICAgICAgICAgYXJndlswXSA9IDo6c3RyZHVwKHRtcC5jb25z dERhdGEoKSk7CistICAgICAgICB9CistICAgIH0KKy0gICAgaWYgKCFhcmd2WzBdKQorKyAgICAg ICAgY29uc3QgUUJ5dGVBcnJheSAmdG1wID0gUUZpbGU6OmVuY29kZU5hbWUoZXhlRmlsZVBhdGgp OworKyAgICAgICAgYXJndlswXSA9IDo6c3RyZHVwKHRtcC5jb25zdERhdGEoKSk7CisrICAgIH0g ZWxzZSB7CisgICAgICAgICBhcmd2WzBdID0gOjpzdHJkdXAoZW5jb2RlZFByb2dyYW1OYW1lLmNv bnN0RGF0YSgpKTsKKysgICAgfQorIAorICAgICAvLyBBZGQgZXZlcnkgYXJndW1lbnQgdG8gdGhl IGxpc3QKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmd1bWVudHMuY291bnQoKTsgKytpKQor QEAgLTk4MywxNSArOTg0LDE2IEBAIGJvb2wgUVByb2Nlc3NQcml2YXRlOjpzdGFydERldGFjaGVk KHFpbnQ2NCAqcGlkKQorICAgICAgICAgICAgICAgICBlbnZwID0gX3FfZHVwRW52aXJvbm1lbnQo ZW52aXJvbm1lbnQuZC5jb25zdERhdGEoKS0+dmFycywgJmVudmMpOworICAgICAgICAgICAgIH0K KyAKKy0gICAgICAgICAgICBRQnl0ZUFycmF5IHRtcDsKKyAgICAgICAgICAgICBpZiAoIXByb2dy YW0uY29udGFpbnMoUUxhdGluMUNoYXIoJy8nKSkpIHsKKysgICAgICAgICAgICAgICAgLy8gZmlu ZEV4ZWN1dGFibGUoKSByZXR1cm5zIGl0cyBhcmd1bWVudCBpZiBpdCdzIGFuIGFic29sdXRlIHBh dGgsCisrICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBpdCBzZWFyY2hlcyAkUEFUSDsgcmV0 dXJucyBlbXB0eSBpZiBub3QgZm91bmQgKHdlIGhhbmRsZQorKyAgICAgICAgICAgICAgICAvLyB0 aGF0IGNhc2UgbXVjaCBsYXRlcikKKyAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmZXhl RmlsZVBhdGggPSBRU3RhbmRhcmRQYXRoczo6ZmluZEV4ZWN1dGFibGUocHJvZ3JhbSk7CistICAg ICAgICAgICAgICAgIGlmICghZXhlRmlsZVBhdGguaXNFbXB0eSgpKQorLSAgICAgICAgICAgICAg ICAgICAgdG1wID0gUUZpbGU6OmVuY29kZU5hbWUoZXhlRmlsZVBhdGgpOworKyAgICAgICAgICAg ICAgICBjb25zdCBRQnl0ZUFycmF5ICZ0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShleGVGaWxlUGF0 aCk7CisrICAgICAgICAgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cCh0bXAuY29uc3REYXRhKCkp OworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgIGFyZ3ZbMF0gPSA6OnN0 cmR1cChRRmlsZTo6ZW5jb2RlTmFtZShwcm9ncmFtKSk7CisgICAgICAgICAgICAgfQorLSAgICAg ICAgICAgIGlmICh0bXAuaXNFbXB0eSgpKQorLSAgICAgICAgICAgICAgICB0bXAgPSBRRmlsZTo6 ZW5jb2RlTmFtZShwcm9ncmFtKTsKKy0gICAgICAgICAgICBhcmd2WzBdID0gdG1wLmRhdGEoKTsK KyAKKyAgICAgICAgICAgICBpZiAoZW52cCkKKyAgICAgICAgICAgICAgICAgcXRfc2FmZV9leGVj dmUoYXJndlswXSwgYXJndiwgZW52cCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGli L2l0ZW1tb2RlbHMvcWFic3RyYWN0aXRlbW1vZGVsLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9p dGVtbW9kZWxzL3FhYnN0cmFjdGl0ZW1tb2RlbC5jcHAKK2luZGV4IDNhNzljNTAyYWYuLjk5N2E2 MzRlNzYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xYWJzdHJh Y3RpdGVtbW9kZWwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xYWJz dHJhY3RpdGVtbW9kZWwuY3BwCitAQCAtMzE5Niw5ICszMTk2LDggQEAgYm9vbCBRQWJzdHJhY3RJ dGVtTW9kZWw6OmJlZ2luTW92ZUNvbHVtbnMoY29uc3QgUU1vZGVsSW5kZXggJnNvdXJjZVBhcmVu dCwgaW50IHMKKyAgICAgZGVzdGluYXRpb25DaGFuZ2UubmVlZHNBZGp1c3QgPSBkZXN0aW5hdGlv blBhcmVudC5pc1ZhbGlkKCkgJiYgZGVzdGluYXRpb25QYXJlbnQucm93KCkgPj0gc291cmNlTGFz dCAmJiBkZXN0aW5hdGlvblBhcmVudC5wYXJlbnQoKSA9PSBzb3VyY2VQYXJlbnQ7CisgICAgIGQt PmNoYW5nZXMucHVzaChkZXN0aW5hdGlvbkNoYW5nZSk7CisgCistICAgIGQtPml0ZW1zQWJvdXRU b0JlTW92ZWQoc291cmNlUGFyZW50LCBzb3VyY2VGaXJzdCwgc291cmNlTGFzdCwgZGVzdGluYXRp b25QYXJlbnQsIGRlc3RpbmF0aW9uQ2hpbGQsIFF0OjpIb3Jpem9udGFsKTsKKy0KKyAgICAgZW1p dCBjb2x1bW5zQWJvdXRUb0JlTW92ZWQoc291cmNlUGFyZW50LCBzb3VyY2VGaXJzdCwgc291cmNl TGFzdCwgZGVzdGluYXRpb25QYXJlbnQsIGRlc3RpbmF0aW9uQ2hpbGQsIFFQcml2YXRlU2lnbmFs KCkpOworKyAgICBkLT5pdGVtc0Fib3V0VG9CZU1vdmVkKHNvdXJjZVBhcmVudCwgc291cmNlRmly c3QsIHNvdXJjZUxhc3QsIGRlc3RpbmF0aW9uUGFyZW50LCBkZXN0aW5hdGlvbkNoaWxkLCBRdDo6 SG9yaXpvbnRhbCk7CisgICAgIHJldHVybiB0cnVlOworIH0KKyAKK0BAIC0zMjMxLDcgKzMyMzAs NiBAQCB2b2lkIFFBYnN0cmFjdEl0ZW1Nb2RlbDo6ZW5kTW92ZUNvbHVtbnMoKQorICAgICAgIGFk anVzdGVkU291cmNlID0gY3JlYXRlSW5kZXgoYWRqdXN0ZWRTb3VyY2Uucm93KCksIGFkanVzdGVk U291cmNlLmNvbHVtbigpICsgbnVtTW92ZWQsIGFkanVzdGVkU291cmNlLmludGVybmFsUG9pbnRl cigpKTsKKyAKKyAgICAgZC0+aXRlbXNNb3ZlZChhZGp1c3RlZFNvdXJjZSwgcmVtb3ZlQ2hhbmdl LmZpcnN0LCByZW1vdmVDaGFuZ2UubGFzdCwgYWRqdXN0ZWREZXN0aW5hdGlvbiwgaW5zZXJ0Q2hh bmdlLmZpcnN0LCBRdDo6SG9yaXpvbnRhbCk7CistCisgICAgIGVtaXQgY29sdW1uc01vdmVkKGFk anVzdGVkU291cmNlLCByZW1vdmVDaGFuZ2UuZmlyc3QsIHJlbW92ZUNoYW5nZS5sYXN0LCBhZGp1 c3RlZERlc3RpbmF0aW9uLCBpbnNlcnRDaGFuZ2UuZmlyc3QsIFFQcml2YXRlU2lnbmFsKCkpOwor IH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xc29ydGZp bHRlcnByb3h5bW9kZWwuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcXNvcnRm aWx0ZXJwcm94eW1vZGVsLmNwcAoraW5kZXggZGM2Mzc5ZDlmYi4uYzVlMjg3ZWU4NCAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVycHJveHltb2Rl bC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVycHJv eHltb2RlbC5jcHAKK0BAIC05MzksOCArOTM5LDkgQEAgdm9pZCBRU29ydEZpbHRlclByb3h5TW9k ZWxQcml2YXRlOjppbnNlcnRfc291cmNlX2l0ZW1zKAorICAgICAgICAgICAgICAgICBxLT5iZWdp bkluc2VydENvbHVtbnMocHJveHlfcGFyZW50LCBwcm94eV9zdGFydCwgcHJveHlfZW5kKTsKKyAg ICAgICAgIH0KKyAKKy0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc291cmNlX2l0ZW1zLnNp emUoKTsgKytpKQorLSAgICAgICAgICAgIHByb3h5X3RvX3NvdXJjZS5pbnNlcnQocHJveHlfc3Rh cnQgKyBpLCBzb3VyY2VfaXRlbXMuYXQoaSkpOworKyAgICAgICAgLy8gVE9ETzogdXNlIHRoZSBy YW5nZSBRTGlzdDo6aW5zZXJ0KCkgb3ZlcmxvYWQgb25jZSBpdCBpcyBpbXBsZW1lbnRlZCAoUVRC VUctNTg2MzMpLgorKyAgICAgICAgcHJveHlfdG9fc291cmNlLmluc2VydChwcm94eV9zdGFydCwg c291cmNlX2l0ZW1zLnNpemUoKSwgMCk7CisrICAgICAgICBzdGQ6OmNvcHkoc291cmNlX2l0ZW1z LmNiZWdpbigpLCBzb3VyY2VfaXRlbXMuY2VuZCgpLCBwcm94eV90b19zb3VyY2UuYmVnaW4oKSAr IHByb3h5X3N0YXJ0KTsKKyAKKyAgICAgICAgIGJ1aWxkX3NvdXJjZV90b19wcm94eV9tYXBwaW5n KHByb3h5X3RvX3NvdXJjZSwgc291cmNlX3RvX3Byb3h5KTsKKyAKK0BAIC0zMTIzLDggKzMxMjQs OSBAQCBib29sIFFTb3J0RmlsdGVyUHJveHlNb2RlbDo6ZmlsdGVyQWNjZXB0c1JvdyhpbnQgc291 cmNlX3JvdywgY29uc3QgUU1vZGVsSW5kZXggJgorIAorICAgICBpZiAoZC0+ZmlsdGVyX2RhdGEu aXNFbXB0eSgpKQorICAgICAgICAgcmV0dXJuIHRydWU7CisrCisrICAgIGludCBjb2x1bW5fY291 bnQgPSBkLT5tb2RlbC0+Y29sdW1uQ291bnQoc291cmNlX3BhcmVudCk7CisgICAgIGlmIChkLT5m aWx0ZXJfY29sdW1uID09IC0xKSB7CistICAgICAgICBpbnQgY29sdW1uX2NvdW50ID0gZC0+bW9k ZWwtPmNvbHVtbkNvdW50KHNvdXJjZV9wYXJlbnQpOworICAgICAgICAgZm9yIChpbnQgY29sdW1u ID0gMDsgY29sdW1uIDwgY29sdW1uX2NvdW50OyArK2NvbHVtbikgeworICAgICAgICAgICAgIFFN b2RlbEluZGV4IHNvdXJjZV9pbmRleCA9IGQtPm1vZGVsLT5pbmRleChzb3VyY2Vfcm93LCBjb2x1 bW4sIHNvdXJjZV9wYXJlbnQpOworICAgICAgICAgICAgIFFTdHJpbmcga2V5ID0gZC0+bW9kZWwt PmRhdGEoc291cmNlX2luZGV4LCBkLT5maWx0ZXJfcm9sZSkudG9TdHJpbmcoKTsKK0BAIC0zMTMz LDkgKzMxMzUsMTAgQEAgYm9vbCBRU29ydEZpbHRlclByb3h5TW9kZWw6OmZpbHRlckFjY2VwdHNS b3coaW50IHNvdXJjZV9yb3csIGNvbnN0IFFNb2RlbEluZGV4ICYKKyAgICAgICAgIH0KKyAgICAg ICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorLSAgICBRTW9kZWxJbmRleCBzb3VyY2VfaW5kZXgg PSBkLT5tb2RlbC0+aW5kZXgoc291cmNlX3JvdywgZC0+ZmlsdGVyX2NvbHVtbiwgc291cmNlX3Bh cmVudCk7CistICAgIGlmICghc291cmNlX2luZGV4LmlzVmFsaWQoKSkgLy8gdGhlIGNvbHVtbiBt YXkgbm90IGV4aXN0CisrCisrICAgIGlmIChkLT5maWx0ZXJfY29sdW1uID49IGNvbHVtbl9jb3Vu dCkgLy8gdGhlIGNvbHVtbiBtYXkgbm90IGV4aXN0CisgICAgICAgICByZXR1cm4gdHJ1ZTsKKysg ICAgUU1vZGVsSW5kZXggc291cmNlX2luZGV4ID0gZC0+bW9kZWwtPmluZGV4KHNvdXJjZV9yb3cs IGQtPmZpbHRlcl9jb2x1bW4sIHNvdXJjZV9wYXJlbnQpOworICAgICBRU3RyaW5nIGtleSA9IGQt Pm1vZGVsLT5kYXRhKHNvdXJjZV9pbmRleCwgZC0+ZmlsdGVyX3JvbGUpLnRvU3RyaW5nKCk7Cisg ICAgIHJldHVybiBkLT5maWx0ZXJfZGF0YS5oYXNNYXRjaChrZXkpOworIH0KK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3Fjb3JlYXBwbGljYXRpb24uY3BwIGIvcXRiYXNl L3NyYy9jb3JlbGliL2tlcm5lbC9xY29yZWFwcGxpY2F0aW9uLmNwcAoraW5kZXggY2EyODY0ZGY4 My4uMTMyYjJlYWU1MiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNv cmVhcHBsaWNhdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVh cHBsaWNhdGlvbi5jcHAKK0BAIC0xMTU3LDcgKzExNTcsNyBAQCBzdGF0aWMgYm9vbCBkb05vdGlm eShRT2JqZWN0ICpyZWNlaXZlciwgUUV2ZW50ICpldmVudCkKKyBib29sIFFDb3JlQXBwbGljYXRp b25Qcml2YXRlOjpzZW5kVGhyb3VnaEFwcGxpY2F0aW9uRXZlbnRGaWx0ZXJzKFFPYmplY3QgKnJl Y2VpdmVyLCBRRXZlbnQgKmV2ZW50KQorIHsKKyAgICAgLy8gV2UgY2FuJ3QgYWNjZXNzIHRoZSBh cHBsaWNhdGlvbiBldmVudCBmaWx0ZXJzIG91dHNpZGUgb2YgdGhlIG1haW4gdGhyZWFkIChyYWNl IGNvbmRpdGlvbnMpCistICAgIFFfQVNTRVJUKHJlY2VpdmVyLT5kX2Z1bmMoKS0+dGhyZWFkRGF0 YS5sb2FkUmVsYXhlZCgpLT50aHJlYWQubG9hZEFjcXVpcmUoKSA9PSBtYWluVGhyZWFkKCkpOwor KyAgICBRX0FTU0VSVChyZWNlaXZlci0+ZF9mdW5jKCktPnRocmVhZERhdGEubG9hZEFjcXVpcmUo KS0+dGhyZWFkLmxvYWRSZWxheGVkKCkgPT0gbWFpblRocmVhZCgpKTsKKyAKKyAgICAgaWYgKGV4 dHJhRGF0YSkgeworICAgICAgICAgLy8gYXBwbGljYXRpb24gZXZlbnQgZmlsdGVycyBhcmUgb25s eSBjYWxsZWQgZm9yIG9iamVjdHMgaW4gdGhlIEdVSSB0aHJlYWQKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3QuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tl cm5lbC9xb2JqZWN0LmNwcAoraW5kZXggMWViNzkxMzhkOS4uMzZjZDc4MGVlMSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdC5jcHAKKysrKyBiL3F0YmFzZS9z cmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdC5jcHAKK0BAIC0xMDEwLDcgKzEwMTAsNyBAQCBRT2Jq ZWN0Ojp+UU9iamVjdCgpCisgICAgICAgICBlbWl0IGRlc3Ryb3llZCh0aGlzKTsKKyAgICAgfQor IAorLSAgICBpZiAoZC0+ZGVjbGFyYXRpdmVEYXRhKSB7CisrICAgIGlmICghZC0+aXNEZWxldGlu Z0NoaWxkcmVuICYmIGQtPmRlY2xhcmF0aXZlRGF0YSkgeworICAgICAgICAgaWYgKHN0YXRpY19j YXN0PFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YUltcGwqPihkLT5kZWNsYXJhdGl2ZURhdGEpLT5v d25lZEJ5UW1sMSkgeworICAgICAgICAgICAgIGlmIChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6 OmRlc3Ryb3llZF9xbWwxKQorICAgICAgICAgICAgICAgICBRQWJzdHJhY3REZWNsYXJhdGl2ZURh dGE6OmRlc3Ryb3llZF9xbWwxKGQtPmRlY2xhcmF0aXZlRGF0YSwgdGhpcyk7CitAQCAtMTU4MCw3 ICsxNTgwLDcgQEAgdm9pZCBRT2JqZWN0Ojptb3ZlVG9UaHJlYWQoUVRocmVhZCAqdGFyZ2V0VGhy ZWFkKQorIAorICAgICBRVGhyZWFkRGF0YSAqY3VycmVudERhdGEgPSBRVGhyZWFkRGF0YTo6Y3Vy cmVudCgpOworICAgICBRVGhyZWFkRGF0YSAqdGFyZ2V0RGF0YSA9IHRhcmdldFRocmVhZCA/IFFU aHJlYWREYXRhOjpnZXQyKHRhcmdldFRocmVhZCkgOiBudWxscHRyOworLSAgICBRVGhyZWFkRGF0 YSAqdGhpc1RocmVhZERhdGEgPSBkLT50aHJlYWREYXRhLmxvYWRSZWxheGVkKCk7CisrICAgIFFU aHJlYWREYXRhICp0aGlzVGhyZWFkRGF0YSA9IGQtPnRocmVhZERhdGEubG9hZEFjcXVpcmUoKTsK KyAgICAgaWYgKCF0aGlzVGhyZWFkRGF0YS0+dGhyZWFkLmxvYWRBY3F1aXJlKCkgJiYgY3VycmVu dERhdGEgPT0gdGFyZ2V0RGF0YSkgeworICAgICAgICAgLy8gb25lIGV4Y2VwdGlvbiB0byB0aGUg cnVsZTogd2UgYWxsb3cgbW92aW5nIG9iamVjdHMgd2l0aCBubyB0aHJlYWQgYWZmaW5pdHkgdG8g dGhlIGN1cnJlbnQgdGhyZWFkCisgICAgICAgICBjdXJyZW50RGF0YSA9IGQtPnRocmVhZERhdGE7 CitAQCAtMjYyMCw3ICsyNjIwLDcgQEAgaW50IFFPYmplY3Q6OnJlY2VpdmVycyhjb25zdCBjaGFy ICpzaWduYWwpIGNvbnN0CisgICAgICAgICBpZiAoIWQtPmlzU2lnbmFsQ29ubmVjdGVkKHNpZ25h bF9pbmRleCkpCisgICAgICAgICAgICAgcmV0dXJuIHJlY2VpdmVyczsKKyAKKy0gICAgICAgIGlm IChkLT5kZWNsYXJhdGl2ZURhdGEgJiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZl cnMpIHsKKysgICAgICAgIGlmICghZC0+aXNEZWxldGluZ0NoaWxkcmVuICYmIGQtPmRlY2xhcmF0 aXZlRGF0YSAmJiBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnJlY2VpdmVycykgeworICAgICAg ICAgICAgIHJlY2VpdmVycyArPSBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnJlY2VpdmVycyhk LT5kZWNsYXJhdGl2ZURhdGEsIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbF9pbmRleCk7CisgICAgICAgICB9 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0X3AuaCBiL3F0 YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdF9wLmgKK2luZGV4IDBiODI3YTUyY2EuLjEz ZmZiODg5OTkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3Rf cC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3RfcC5oCitAQCAtNDQ0 LDcgKzQ0NCw3IEBAIGlubGluZSB2b2lkIFFPYmplY3RQcml2YXRlOjpjaGVja0ZvckluY29tcGF0 aWJsZUxpYnJhcnlWZXJzaW9uKGludCB2ZXJzaW9uKSBjb25zCisgCisgaW5saW5lIGJvb2wgUU9i amVjdFByaXZhdGU6OmlzRGVjbGFyYXRpdmVTaWduYWxDb25uZWN0ZWQodWludCBzaWduYWxfaW5k ZXgpIGNvbnN0CisgeworLSAgICByZXR1cm4gZGVjbGFyYXRpdmVEYXRhICYmIFFBYnN0cmFjdERl Y2xhcmF0aXZlRGF0YTo6aXNTaWduYWxDb25uZWN0ZWQKKysgICAgcmV0dXJuICFpc0RlbGV0aW5n Q2hpbGRyZW4gJiYgZGVjbGFyYXRpdmVEYXRhICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6 aXNTaWduYWxDb25uZWN0ZWQKKyAgICAgICAgICAgICAmJiBRQWJzdHJhY3REZWNsYXJhdGl2ZURh dGE6OmlzU2lnbmFsQ29ubmVjdGVkKGRlY2xhcmF0aXZlRGF0YSwgcV9mdW5jKCksIHNpZ25hbF9p bmRleCk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcXRy YW5zbGF0b3IuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xdHJhbnNsYXRvci5jcHAK K2luZGV4IDI4MTJmZmI3ZWEuLmJjMDE3N2M1ZWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2Nv cmVsaWIva2VybmVsL3F0cmFuc2xhdG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tl cm5lbC9xdHJhbnNsYXRvci5jcHAKK0BAIC05MDIsNyArOTAyLDcgQEAgc3RhdGljIFFTdHJpbmcg Z2V0TWVzc2FnZShjb25zdCB1Y2hhciAqbSwgY29uc3QgdWNoYXIgKmVuZCwgY29uc3QgY2hhciAq Y29udGV4dCwKKyAgICAgICAgICAgICBnb3RvIGVuZDsKKyAgICAgICAgIGNhc2UgVGFnX1RyYW5z bGF0aW9uOiB7CisgICAgICAgICAgICAgaW50IGxlbiA9IHJlYWQzMihtKTsKKy0gICAgICAgICAg ICBpZiAobGVuICUgMSkKKysgICAgICAgICAgICBpZiAobGVuICYgMSkKKyAgICAgICAgICAgICAg ICAgcmV0dXJuIFFTdHJpbmcoKTsKKyAgICAgICAgICAgICBtICs9IDQ7CisgICAgICAgICAgICAg aWYgKCFudW1lcnVzLS0pIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5 cGVzL3FtaW1lZGF0YWJhc2UuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWlt ZWRhdGFiYXNlLmNwcAoraW5kZXggOWRlMjJjZWYzMy4uZmY4NjhhMzI2OCAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS5jcHAKK0BAIC0zODksMjAg KzM4OSwyMyBAQCBRTWltZVR5cGUgUU1pbWVEYXRhYmFzZVByaXZhdGU6Om1pbWVUeXBlRm9yRmls ZU5hbWVBbmREYXRhKGNvbnN0IFFTdHJpbmcgJmZpbGVOYQorICAgICAgICAgLy8gRGlzYW1iaWd1 YXRlIGNvbmZsaWN0aW5nIGV4dGVuc2lvbnMgKGlmIG1hZ2ljIG1hdGNoaW5nIGZvdW5kIHNvbWV0 aGluZykKKyAgICAgICAgIGlmIChjYW5kaWRhdGVCeURhdGEuaXNWYWxpZCgpICYmIG1hZ2ljQWNj dXJhY3kgPiAwKSB7CisgICAgICAgICAgICAgY29uc3QgUVN0cmluZyBzbmlmZmVkTWltZSA9IGNh bmRpZGF0ZUJ5RGF0YS5uYW1lKCk7CistICAgICAgICAgICAgLy8gSWYgdGhlIHNuaWZmZWRNaW1l IG1hdGNoZXMgYSBnbG9iIG1hdGNoLCB1c2UgaXQKKysgICAgICAgICAgICAvLyBJZiB0aGUgc25p ZmZlZE1pbWUgbWF0Y2hlcyBhIGhpZ2hlc3Qtd2VpZ2h0IGdsb2IgbWF0Y2gsIHVzZSBpdAorICAg ICAgICAgICAgIGlmIChjYW5kaWRhdGVzQnlOYW1lLm1fbWF0Y2hpbmdNaW1lVHlwZXMuY29udGFp bnMoc25pZmZlZE1pbWUpKSB7CisgICAgICAgICAgICAgICAgICphY2N1cmFjeVB0ciA9IDEwMDsK KyAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUJ5RGF0YTsKKyAgICAgICAgICAgICB9 CistICAgICAgICAgICAgZm9yIChjb25zdCBRU3RyaW5nICZtIDogcUFzQ29uc3QoY2FuZGlkYXRl c0J5TmFtZS5tX21hdGNoaW5nTWltZVR5cGVzKSkgeworKyAgICAgICAgICAgIGZvciAoY29uc3Qg UVN0cmluZyAmbSA6IHFBc0NvbnN0KGNhbmRpZGF0ZXNCeU5hbWUubV9hbGxNYXRjaGluZ01pbWVU eXBlcykpIHsKKyAgICAgICAgICAgICAgICAgaWYgKGluaGVyaXRzKG0sIHNuaWZmZWRNaW1lKSkg eworICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBtYWdpYyArIHBhdHRlcm4gcG9pbnRp bmcgdG8gdGhpcywgc28gaXQncyBhIHByZXR0eSBnb29kIG1hdGNoCisgICAgICAgICAgICAgICAg ICAgICAqYWNjdXJhY3lQdHIgPSAxMDA7CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWlt ZVR5cGVGb3JOYW1lKG0pOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorLSAg ICAgICAgICAgICphY2N1cmFjeVB0ciA9IG1hZ2ljQWNjdXJhY3k7CistICAgICAgICAgICAgcmV0 dXJuIGNhbmRpZGF0ZUJ5RGF0YTsKKysgICAgICAgICAgICBpZiAoY2FuZGlkYXRlc0J5TmFtZS5t X2FsbE1hdGNoaW5nTWltZVR5cGVzLmlzRW1wdHkoKSkgeworKyAgICAgICAgICAgICAgICAvLyBO byBnbG9iLCB1c2UgbWFnaWMKKysgICAgICAgICAgICAgICAgKmFjY3VyYWN5UHRyID0gbWFnaWNB Y2N1cmFjeTsKKysgICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUJ5RGF0YTsKKysgICAg ICAgICAgICB9CisgICAgICAgICB9CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZ2xvYnBhdHRlcm4uY3BwIGIvcXRiYXNlL3NyYy9jb3Jl bGliL21pbWV0eXBlcy9xbWltZWdsb2JwYXR0ZXJuLmNwcAoraW5kZXggYTgxMTEyZDIyNy4uZmE4 ZjRjNTQ1ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVn bG9icGF0dGVybi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVn bG9icGF0dGVybi5jcHAKK0BAIC04Myw3ICs4MywxMCBAQCB2b2lkIFFNaW1lR2xvYk1hdGNoUmVz dWx0OjphZGRNYXRjaChjb25zdCBRU3RyaW5nICZtaW1lVHlwZSwgaW50IHdlaWdodCwgY29uc3Qg UQorICAgICB9CisgICAgIGlmICghbV9tYXRjaGluZ01pbWVUeXBlcy5jb250YWlucyhtaW1lVHlw ZSkpIHsKKyAgICAgICAgIG1fbWF0Y2hpbmdNaW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKy0g ICAgICAgIG1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKysgICAgICAg IGlmIChyZXBsYWNlKQorKyAgICAgICAgICAgIG1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMucHJlcGVu ZChtaW1lVHlwZSk7IC8vIGhpZ2hlc3Qtd2VpZ2h0IGZpcnN0CisrICAgICAgICBlbHNlCisrICAg ICAgICAgICAgbV9hbGxNYXRjaGluZ01pbWVUeXBlcy5hcHBlbmQobWltZVR5cGUpOworICAgICAg ICAgbV9rbm93blN1ZmZpeExlbmd0aCA9IGtub3duU3VmZml4TGVuZ3RoOworICAgICB9CisgfQor QEAgLTk0LDcgKzk3LDcgQEAgUU1pbWVHbG9iUGF0dGVybjo6UGF0dGVyblR5cGUgUU1pbWVHbG9i UGF0dGVybjo6ZGV0ZWN0UGF0dGVyblR5cGUoY29uc3QgUVN0cmluZworICAgICBpZiAoIXBhdHRl cm5MZW5ndGgpCisgICAgICAgICByZXR1cm4gT3RoZXJQYXR0ZXJuOworIAorLSAgICBjb25zdCBi b29sIHN0YXJDb3VudCA9IHBhdHRlcm4uY291bnQoUUxhdGluMUNoYXIoJyonKSkgPT0gMTsKKysg ICAgY29uc3QgaW50IHN0YXJDb3VudCA9IHBhdHRlcm4uY291bnQoUUxhdGluMUNoYXIoJyonKSk7 CisgICAgIGNvbnN0IGJvb2wgaGFzU3F1YXJlQnJhY2tldCA9IHBhdHRlcm4uaW5kZXhPZihRTGF0 aW4xQ2hhcignWycpKSAhPSAtMTsKKyAgICAgY29uc3QgYm9vbCBoYXNRdWVzdGlvbk1hcmsgPSBw YXR0ZXJuLmluZGV4T2YoUUxhdGluMUNoYXIoJz8nKSkgIT0gLTE7CisgCitAQCAtMTA2LDEwICsx MDksMTAgQEAgUU1pbWVHbG9iUGF0dGVybjo6UGF0dGVyblR5cGUgUU1pbWVHbG9iUGF0dGVybjo6 ZGV0ZWN0UGF0dGVyblR5cGUoY29uc3QgUVN0cmluZworICAgICAgICAgICAgIC8vIFBhdHRlcm5z IGxpa2UgIlJFQURNRSoiICh3ZWxsIHRoaXMgaXMgY3VycmVudGx5IHRoZSBvbmx5IG9uZSBsaWtl IHRoYXQuLi4pCisgICAgICAgICAgICAgaWYgKHBhdHRlcm4uYXQocGF0dGVybkxlbmd0aCAtIDEp ID09IFFMYXRpbjFDaGFyKCcqJykpCisgICAgICAgICAgICAgICAgIHJldHVybiBQcmVmaXhQYXR0 ZXJuOworLSAgICAgICAgfQorLSAgICAgICAgLy8gTmFtZXMgd2l0aG91dCBhbnkgd2lsZGNhcmRz IGxpa2UgIlJFQURNRSIKKy0gICAgICAgIGlmIChzdGFyQ291bnQgPT0gMCkKKysgICAgICAgIH0g ZWxzZSBpZiAoc3RhckNvdW50ID09IDApIHsKKysgICAgICAgICAgICAvLyBOYW1lcyB3aXRob3V0 IGFueSB3aWxkY2FyZHMgbGlrZSAiUkVBRE1FIgorICAgICAgICAgICAgIHJldHVybiBMaXRlcmFs UGF0dGVybjsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICBpZiAocGF0dGVybiA9PSBRTGF0 aW4xU3RyaW5nKCJbMC05XVswLTldWzAtOV0udmRyIikpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9jb3JlbGliL21pbWV0eXBlcy9xbWltZXByb3ZpZGVyLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxp Yi9taW1ldHlwZXMvcW1pbWVwcm92aWRlci5jcHAKK2luZGV4IDI1OGRkZGY4Y2IuLjQ2NDJkMGYy ZDAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lcHJvdmlk ZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lcHJvdmlkZXIu Y3BwCitAQCAtMjQ0LDE1ICsyNDQsMTggQEAgdm9pZCBRTWltZUJpbmFyeVByb3ZpZGVyOjphZGRG aWxlTmFtZU1hdGNoZXMoY29uc3QgUVN0cmluZyAmZmlsZU5hbWUsIFFNaW1lR2xvYk0KKyAgICAg Y29uc3QgUVN0cmluZyBsb3dlckZpbGVOYW1lID0gZmlsZU5hbWUudG9Mb3dlcigpOworICAgICAv LyBDaGVjayBsaXRlcmFscyAoZS5nLiAiTWFrZWZpbGUiKQorICAgICBtYXRjaEdsb2JMaXN0KHJl c3VsdCwgbV9jYWNoZUZpbGUsIG1fY2FjaGVGaWxlLT5nZXRVaW50MzIoUG9zTGl0ZXJhbExpc3RP ZmZzZXQpLCBmaWxlTmFtZSk7CistICAgIC8vIENoZWNrIGNvbXBsZXggZ2xvYnMgKGUuZy4gImNh bGxncmluZC5vdXRbMC05XSoiKQorLSAgICBtYXRjaEdsb2JMaXN0KHJlc3VsdCwgbV9jYWNoZUZp bGUsIG1fY2FjaGVGaWxlLT5nZXRVaW50MzIoUG9zR2xvYkxpc3RPZmZzZXQpLCBmaWxlTmFtZSk7 CisgICAgIC8vIENoZWNrIHRoZSB2ZXJ5IGNvbW1vbiAqLnR4dCBjYXNlcyB3aXRoIHRoZSBzdWZm aXggdHJlZQorLSAgICBjb25zdCBpbnQgcmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQgPSBtX2NhY2hl RmlsZS0+Z2V0VWludDMyKFBvc1JldmVyc2VTdWZmaXhUcmVlT2Zmc2V0KTsKKy0gICAgY29uc3Qg aW50IG51bVJvb3RzID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihyZXZlcnNlU3VmZml4VHJlZU9m ZnNldCk7CistICAgIGNvbnN0IGludCBmaXJzdFJvb3RPZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0 VWludDMyKHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0ICsgNCk7CistICAgIG1hdGNoU3VmZml4VHJl ZShyZXN1bHQsIG1fY2FjaGVGaWxlLCBudW1Sb290cywgZmlyc3RSb290T2Zmc2V0LCBsb3dlckZp bGVOYW1lLCBsb3dlckZpbGVOYW1lLmxlbmd0aCgpIC0gMSwgZmFsc2UpOworKyAgICBpZiAocmVz dWx0Lm1fbWF0Y2hpbmdNaW1lVHlwZXMuaXNFbXB0eSgpKSB7CisrICAgICAgICBjb25zdCBpbnQg cmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc1JldmVy c2VTdWZmaXhUcmVlT2Zmc2V0KTsKKysgICAgICAgIGNvbnN0IGludCBudW1Sb290cyA9IG1fY2Fj aGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQpOworKyAgICAgICAgY29u c3QgaW50IGZpcnN0Um9vdE9mZnNldCA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1 ZmZpeFRyZWVPZmZzZXQgKyA0KTsKKysgICAgICAgIG1hdGNoU3VmZml4VHJlZShyZXN1bHQsIG1f Y2FjaGVGaWxlLCBudW1Sb290cywgZmlyc3RSb290T2Zmc2V0LCBsb3dlckZpbGVOYW1lLCBsb3dl ckZpbGVOYW1lLmxlbmd0aCgpIC0gMSwgZmFsc2UpOworKyAgICAgICAgaWYgKHJlc3VsdC5tX21h dGNoaW5nTWltZVR5cGVzLmlzRW1wdHkoKSkKKysgICAgICAgICAgICBtYXRjaFN1ZmZpeFRyZWUo cmVzdWx0LCBtX2NhY2hlRmlsZSwgbnVtUm9vdHMsIGZpcnN0Um9vdE9mZnNldCwgZmlsZU5hbWUs IGZpbGVOYW1lLmxlbmd0aCgpIC0gMSwgdHJ1ZSk7CisrICAgIH0KKysgICAgLy8gQ2hlY2sgY29t cGxleCBnbG9icyAoZS5nLiAiY2FsbGdyaW5kLm91dFswLTldKiIgb3IgIlJFQURNRSoiKQorICAg ICBpZiAocmVzdWx0Lm1fbWF0Y2hpbmdNaW1lVHlwZXMuaXNFbXB0eSgpKQorLSAgICAgICAgbWF0 Y2hTdWZmaXhUcmVlKHJlc3VsdCwgbV9jYWNoZUZpbGUsIG51bVJvb3RzLCBmaXJzdFJvb3RPZmZz ZXQsIGZpbGVOYW1lLCBmaWxlTmFtZS5sZW5ndGgoKSAtIDEsIHRydWUpOworKyAgICAgICAgbWF0 Y2hHbG9iTGlzdChyZXN1bHQsIG1fY2FjaGVGaWxlLCBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBv c0dsb2JMaXN0T2Zmc2V0KSwgZmlsZU5hbWUpOworIH0KKyAKKyB2b2lkIFFNaW1lQmluYXJ5UHJv dmlkZXI6Om1hdGNoR2xvYkxpc3QoUU1pbWVHbG9iTWF0Y2hSZXN1bHQgJnJlc3VsdCwgQ2FjaGVG aWxlICpjYWNoZUZpbGUsIGludCBvZmYsIGNvbnN0IFFTdHJpbmcgJmZpbGVOYW1lKQorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3Fqc29ucGFyc2VyLmNwcCBi L3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3Fqc29ucGFyc2VyLmNwcAoraW5kZXgg MTdlNmYxMTFhYi4uMmU0MGI2YzhmYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9z ZXJpYWxpemF0aW9uL3Fqc29ucGFyc2VyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Nl cmlhbGl6YXRpb24vcWpzb25wYXJzZXIuY3BwCitAQCAtMzc5LDEwICszNzksMzAgQEAgZXJyb3I6 CisgICAgIHJldHVybiBRQ2JvclZhbHVlKCk7CisgfQorIAorKy8vIFdlIG5lZWQgdG8gcmV0YWlu IHRoZSBfbGFzdF8gdmFsdWUgZm9yIGFueSBkdXBsaWNhdGUga2V5cyBhbmQgd2UgbmVlZCB0byBk ZXJlZiBjb250YWluZXJzLgorKy8vIFRoZXJlZm9yZSB0aGUgbWFudWFsIGltcGxlbWVudGF0aW9u IG9mIHN0ZDo6dW5pcXVlKCkuCisrdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1l IENvbXBhcmUsIHR5cGVuYW1lIEFzc2lnbj4KKytzdGF0aWMgSXRlcmF0b3IgY3VzdG9tQXNzaWdu aW5nVW5pcXVlTGFzdChJdGVyYXRvciBmaXJzdCwgSXRlcmF0b3IgbGFzdCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wYXJlIGNvbXBhcmUsIEFzc2lnbiBh c3NpZ24pCisreworKyAgICBmaXJzdCA9IHN0ZDo6YWRqYWNlbnRfZmluZChmaXJzdCwgbGFzdCwg Y29tcGFyZSk7CisrICAgIGlmIChmaXJzdCA9PSBsYXN0KQorKyAgICAgICAgcmV0dXJuIGxhc3Q7 CisrCisrICAgIEl0ZXJhdG9yIHJlc3VsdCA9IGZpcnN0OworKyAgICB3aGlsZSAoKytmaXJzdCAh PSBsYXN0KSB7CisrICAgICAgICBpZiAoIWNvbXBhcmUoKnJlc3VsdCwgKmZpcnN0KSkKKysgICAg ICAgICAgICArK3Jlc3VsdDsKKysgICAgICAgIGlmIChyZXN1bHQgIT0gZmlyc3QpCisrICAgICAg ICAgICAgYXNzaWduKCpyZXN1bHQsICpmaXJzdCk7CisrICAgIH0KKysKKysgICAgcmV0dXJuICsr cmVzdWx0OworK30KKysKKyBzdGF0aWMgdm9pZCBzb3J0Q29udGFpbmVyKFFDYm9yQ29udGFpbmVy UHJpdmF0ZSAqY29udGFpbmVyKQorIHsKKyAgICAgdXNpbmcgRm9yd2FyZCA9IFFKc29uUHJpdmF0 ZTo6S2V5SXRlcmF0b3I7CistICAgIHVzaW5nIFJldmVyc2UgPSBzdGQ6OnJldmVyc2VfaXRlcmF0 b3I8Rm9yd2FyZD47CisgICAgIHVzaW5nIFZhbHVlID0gRm9yd2FyZDo6dmFsdWVfdHlwZTsKKyAK KyAgICAgYXV0byBjb21wYXJlID0gW2NvbnRhaW5lcl0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZh bHVlICZiKQorQEAgLTQyMCwxNyArNDQwLDMxIEBAIHN0YXRpYyB2b2lkIHNvcnRDb250YWluZXIo UUNib3JDb250YWluZXJQcml2YXRlICpjb250YWluZXIpCisgICAgICAgICB9CisgICAgIH07Cisg CistICAgIHN0ZDo6c29ydChGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSksIEZv cndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5lbmQoKSksCistICAgICAgICAgICAgICBbJmNvbXBh cmVdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikgeyByZXR1cm4gY29tcGFyZShhLCBi KSA8IDA7IH0pOworKyAgICAvLyBUaGUgZWxlbWVudHMnIGNvbnRhaW5lcnMgYXJlIG93bmVkIGJ5 IHRoZSBvdXRlciBjb250YWluZXIsIG5vdCBieSB0aGUgZWxlbWVudHMgdGhlbXNlbHZlcy4KKysg ICAgYXV0byBtb3ZlID0gW10oRm9yd2FyZDo6cmVmZXJlbmNlIHRhcmdldCwgRm9yd2FyZDo6cmVm ZXJlbmNlIHNvdXJjZSkKKysgICAgeworKyAgICAgICAgUXRDYm9yOjpFbGVtZW50ICZ0YXJnZXRW YWx1ZSA9IHRhcmdldC52YWx1ZSgpOworKworKyAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBoYXMg YSBjb250YWluZXIsIGRlcmVmIGl0IGJlZm9yZSBvdmVyd3JpdGluZywgc28gdGhhdCB3ZSBkb24n dCBsZWFrLgorKyAgICAgICAgaWYgKHRhcmdldFZhbHVlLmZsYWdzICYgUXRDYm9yOjpFbGVtZW50 OjpJc0NvbnRhaW5lcikKKysgICAgICAgICAgICB0YXJnZXRWYWx1ZS5jb250YWluZXItPmRlcmVm KCk7CisrCisrICAgICAgICAvLyBEbyBub3QgbW92ZSwgc28gdGhhdCB3ZSBjYW4gY2xlYXIgdGhl IHZhbHVlIGFmdGVyd2FyZHMuCisrICAgICAgICB0YXJnZXQgPSBzb3VyY2U7CisrCisrICAgICAg ICAvLyBDbGVhciB0aGUgc291cmNlIHZhbHVlLCBzbyB0aGF0IHdlIGRvbid0IHN0b3JlIHRoZSBz YW1lIGNvbnRhaW5lciB0d2ljZS4KKysgICAgICAgIHNvdXJjZS52YWx1ZSgpID0gUXRDYm9yOjpF bGVtZW50KCk7CisrICAgIH07CisrCisrICAgIHN0ZDo6c3RhYmxlX3NvcnQoCisrICAgICAgICAg ICAgICAgIEZvcndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5iZWdpbigpKSwgRm9yd2FyZChjb250 YWluZXItPmVsZW1lbnRzLmVuZCgpKSwKKysgICAgICAgICAgICAgICAgWyZjb21wYXJlXShjb25z dCBWYWx1ZSAmYSwgY29uc3QgVmFsdWUgJmIpIHsgcmV0dXJuIGNvbXBhcmUoYSwgYikgPCAwOyB9 KTsKKyAKKy0gICAgLy8gV2UgbmVlZCB0byByZXRhaW4gdGhlIF9sYXN0XyB2YWx1ZSBmb3IgYW55 IGR1cGxpY2F0ZSBrZXlzLiBUaGVyZWZvcmUgdGhlIHJldmVyc2UgZGFuY2UgaGVyZS4KKy0gICAg YXV0byBpdCA9IHN0ZDo6dW5pcXVlKFJldmVyc2UoY29udGFpbmVyLT5lbGVtZW50cy5lbmQoKSks IFJldmVyc2UoY29udGFpbmVyLT5lbGVtZW50cy5iZWdpbigpKSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgIFsmY29tcGFyZV0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7Cist ICAgICAgICByZXR1cm4gY29tcGFyZShhLCBiKSA9PSAwOworLSAgICB9KS5iYXNlKCkuZWxlbWVu dHNJdGVyYXRvcigpOworKyAgICBGb3J3YXJkIHJlc3VsdCA9IGN1c3RvbUFzc2lnbmluZ1VuaXF1 ZUxhc3QoCisrICAgICAgICAgICAgICAgIEZvcndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5iZWdp bigpKSwgIEZvcndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5lbmQoKSksCisrICAgICAgICAgICAg ICAgIFsmY29tcGFyZV0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7IHJldHVybiBj b21wYXJlKGEsIGIpID09IDA7IH0sIG1vdmUpOworIAorLSAgICAvLyBUaGUgZXJhc2UgZnJvbSBi ZWdpbm5pbmcgaXMgZXhwZW5zaXZlIGJ1dCBob3BlZnVsbHkgcmFyZS4KKy0gICAgY29udGFpbmVy LT5lbGVtZW50cy5lcmFzZShjb250YWluZXItPmVsZW1lbnRzLmJlZ2luKCksIGl0KTsKKysgICAg Y29udGFpbmVyLT5lbGVtZW50cy5lcmFzZShyZXN1bHQuZWxlbWVudHNJdGVyYXRvcigpLCBjb250 YWluZXItPmVsZW1lbnRzLmVuZCgpKTsKKyB9CisgCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcXhtbHN0cmVhbS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvc2VyaWFsaXphdGlvbi9xeG1sc3RyZWFtLmNwcAoraW5kZXggYjJmODQ2NTQ0ZC4uN2NkNDU3 YmEzYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3F4bWxz dHJlYW0uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xeG1sc3Ry ZWFtLmNwcAorQEAgLTk4MCw3ICs5ODAsNyBAQCBpbmxpbmUgdWludCBRWG1sU3RyZWFtUmVhZGVy UHJpdmF0ZTo6cGVla0NoYXIoKQorIGJvb2wgUVhtbFN0cmVhbVJlYWRlclByaXZhdGU6OnNjYW5V bnRpbChjb25zdCBjaGFyICpzdHIsIHNob3J0IHRva2VuVG9JbmplY3QpCisgeworICAgICBpbnQg cG9zID0gdGV4dEJ1ZmZlci5zaXplKCk7CistICAgIGludCBvbGRMaW5lTnVtYmVyID0gbGluZU51 bWJlcjsKKysgICAgY29uc3QgYXV0byBvbGRMaW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAKKyAg ICAgdWludCBjOworICAgICB3aGlsZSAoKGMgPSBnZXRDaGFyKCkpICE9IFN0cmVhbUVPRikgewor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmcuY3BwIGIvcXRiYXNl L3NyYy9jb3JlbGliL3RleHQvcXN0cmluZy5jcHAKK2luZGV4IDNlODhhYjQ4NTkuLjhkZWVhZTQ3 YmIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5nLmNwcAorKysr IGIvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZy5jcHAKK0BAIC0xMjMxMiw3ICsxMjMx Miw3IEBAIHN0YXRpYyBxc2l6ZXR5cGUgcUxhc3RJbmRleE9mKEhheXN0YWNrIGhheXN0YWNrMCwg cXNpemV0eXBlIGZyb20sCisgICAgIGNvbnN0IGF1dG8gbmVlZGxlID0gbmVlZGxlMC5kYXRhKCk7 CisgICAgIGNvbnN0IGF1dG8gKmVuZCA9IGhheXN0YWNrOworICAgICBoYXlzdGFjayArPSBmcm9t OworLSAgICBjb25zdCBzdGQ6OnNpemVfdCBzbF9taW51c18xID0gc2wgLSAxOworKyAgICBjb25z dCBzdGQ6OnNpemVfdCBzbF9taW51c18xID0gc2wgPyBzbCAtIDEgOiAwOworICAgICBjb25zdCBh dXRvICpuID0gbmVlZGxlICsgc2xfbWludXNfMTsKKyAgICAgY29uc3QgYXV0byAqaCA9IGhheXN0 YWNrICsgc2xfbWludXNfMTsKKyAgICAgc3RkOjpzaXplX3QgaGFzaE5lZWRsZSA9IDAsIGhhc2hI YXlzdGFjayA9IDA7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmlu Z2l0ZXJhdG9yX3AuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmdpdGVyYXRvcl9w LmgKK2luZGV4IDIxOTU4OWI2ZTQuLjFkMGM2NmNjNzggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvdGV4dC9xc3RyaW5naXRlcmF0b3JfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvdGV4dC9xc3RyaW5naXRlcmF0b3JfcC5oCitAQCAtNjEsNiArNjEsOCBAQCBjbGFzcyBRU3Ry aW5nSXRlcmF0b3IKKyB7CisgICAgIFFTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yIGksIHBvcywgZTsK KyAgICAgUV9TVEFUSUNfQVNTRVJUKChzdGQ6OmlzX3NhbWU8UVN0cmluZzo6Y29uc3RfaXRlcmF0 b3IsIGNvbnN0IFFDaGFyICo+Ojp2YWx1ZSkpOworKyAgICBzdGF0aWMgYm9vbCBsZXNzKGNvbnN0 IFFDaGFyICpsaHMsIGNvbnN0IFFDaGFyICpyaHMpIG5vZXhjZXB0CisrICAgIHsgcmV0dXJuIHN0 ZDo6bGVzczxRU3RyaW5nOjpjb25zdF9pdGVyYXRvcj57fShsaHMsIHJocyk7IH0KKyBwdWJsaWM6 CisgICAgIGV4cGxpY2l0IFFTdHJpbmdJdGVyYXRvcihRU3RyaW5nVmlldyBzdHJpbmcsIHFzaXpl dHlwZSBpZHggPSAwKQorICAgICAgICAgOiBpKHN0cmluZy5iZWdpbigpKSwKK0BAIC05NSw3ICs5 Nyw4IEBAIHB1YmxpYzoKKyAKKyAgICAgaW5saW5lIHZvaWQgc2V0UG9zaXRpb24oUVN0cmluZzo6 Y29uc3RfaXRlcmF0b3IgcG9zaXRpb24pCisgICAgIHsKKy0gICAgICAgIFFfQVNTRVJUX1goaSA8 PSBwb3NpdGlvbiAmJiBwb3NpdGlvbiA8PSBlLCBRX0ZVTkNfSU5GTywgInBvc2l0aW9uIG91dCBv ZiBib3VuZHMiKTsKKysgICAgICAgIFFfQVNTRVJUX1goIWxlc3MocG9zaXRpb24sIGkpICYmICFs ZXNzKGUsIHBvc2l0aW9uKSwKKysgICAgICAgICAgICAgICAgICAgUV9GVU5DX0lORk8sICJwb3Np dGlvbiBvdXQgb2YgYm91bmRzIik7CisgICAgICAgICBwb3MgPSBwb3NpdGlvbjsKKyAgICAgfQor IAorQEAgLTEwMyw3ICsxMDYsNyBAQCBwdWJsaWM6CisgCisgICAgIGlubGluZSBib29sIGhhc05l eHQoKSBjb25zdAorICAgICB7CistICAgICAgICByZXR1cm4gcG9zIDwgZTsKKysgICAgICAgIHJl dHVybiBsZXNzKHBvcywgZSk7CisgICAgIH0KKyAKKyAgICAgaW5saW5lIHZvaWQgYWR2YW5jZSgp CitAQCAtMTIwLDE2ICsxMjMsMjAgQEAgcHVibGljOgorICAgICB7CisgICAgICAgICBRX0FTU0VS VF9YKGhhc05leHQoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBuZXh0IGl0ZW0i KTsKKyAKKy0gICAgICAgIGlmIChRX1VOTElLRUxZKChwb3MrKyktPmlzSGlnaFN1cnJvZ2F0ZSgp KSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZKChwb3MrKyktPmlzSGlnaFN1cnJvZ2F0ZSgpKSkg eworKyAgICAgICAgICAgIFFfQVNTRVJUKGhhc05leHQoKSAmJiBwb3MtPmlzTG93U3Vycm9nYXRl KCkpOworICAgICAgICAgICAgICsrcG9zOworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIGlu bGluZSB1aW50IHBlZWtOZXh0VW5jaGVja2VkKCkgY29uc3QKKyAgICAgeworICAgICAgICAgUV9B U1NFUlRfWChoYXNOZXh0KCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgbmV4dCBp dGVtIik7CisgCistICAgICAgICBpZiAoUV9VTkxJS0VMWShwb3MtPmlzSGlnaFN1cnJvZ2F0ZSgp KSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZKHBvcy0+aXNIaWdoU3Vycm9nYXRlKCkpKSB7Cisr ICAgICAgICAgICAgUV9BU1NFUlQobGVzcyhwb3MgKyAxLCBlKSAmJiBwb3NbMV0uaXNMb3dTdXJy b2dhdGUoKSk7CisgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQocG9z WzBdLCBwb3NbMV0pOworKyAgICAgICAgfQorIAorICAgICAgICAgcmV0dXJuIHBvcy0+dW5pY29k ZSgpOworICAgICB9CitAQCAtMTU1LDggKzE2MiwxMCBAQCBwdWJsaWM6CisgICAgICAgICBRX0FT U0VSVF9YKGhhc05leHQoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBuZXh0IGl0 ZW0iKTsKKyAKKyAgICAgICAgIGNvbnN0IFFDaGFyIGN1ciA9ICpwb3MrKzsKKy0gICAgICAgIGlm IChRX1VOTElLRUxZKGN1ci5pc0hpZ2hTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJ S0VMWShjdXIuaXNIaWdoU3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NFUlQoaGFz TmV4dCgpICYmIHBvcy0+aXNMb3dTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgcmV0dXJuIFFD aGFyOjpzdXJyb2dhdGVUb1VjczQoY3VyLCAqcG9zKyspOworKyAgICAgICAgfQorICAgICAgICAg cmV0dXJuIGN1ci51bmljb2RlKCk7CisgICAgIH0KKyAKK0BAIC0xNjYsNyArMTc1LDcgQEAgcHVi bGljOgorIAorICAgICAgICAgY29uc3QgUUNoYXIgdWMgPSAqcG9zKys7CisgICAgICAgICBpZiAo UV9VTkxJS0VMWSh1Yy5pc1N1cnJvZ2F0ZSgpKSkgeworLSAgICAgICAgICAgIGlmIChRX0xJS0VM WSh1Yy5pc0hpZ2hTdXJyb2dhdGUoKSAmJiBwb3MgPCBlICYmIHBvcy0+aXNMb3dTdXJyb2dhdGUo KSkpCisrICAgICAgICAgICAgaWYgKFFfTElLRUxZKHVjLmlzSGlnaFN1cnJvZ2F0ZSgpICYmIGhh c05leHQoKSAmJiBwb3MtPmlzTG93U3Vycm9nYXRlKCkpKQorICAgICAgICAgICAgICAgICByZXR1 cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNCh1YywgKnBvcysrKTsKKyAgICAgICAgICAgICByZXR1 cm4gaW52YWxpZEFzOworICAgICAgICAgfQorQEAgLTE3OCw3ICsxODcsNyBAQCBwdWJsaWM6Cisg CisgICAgIGlubGluZSBib29sIGhhc1ByZXZpb3VzKCkgY29uc3QKKyAgICAgeworLSAgICAgICAg cmV0dXJuIHBvcyA+IGk7CisrICAgICAgICByZXR1cm4gbGVzcyhpLCBwb3MpOworICAgICB9Cisg CisgICAgIGlubGluZSB2b2lkIHJlY2VkZSgpCitAQCAtMTk2LDE2ICsyMDUsMjAgQEAgcHVibGlj OgorICAgICB7CisgICAgICAgICBRX0FTU0VSVF9YKGhhc1ByZXZpb3VzKCksIFFfRlVOQ19JTkZP LCAiaXRlcmF0b3IgaGFzbid0IGEgcHJldmlvdXMgaXRlbSIpOworIAorLSAgICAgICAgaWYgKFFf VU5MSUtFTFkoKC0tcG9zKS0+aXNMb3dTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJ S0VMWSgoLS1wb3MpLT5pc0xvd1N1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJU KGhhc1ByZXZpb3VzKCkgJiYgcG9zWy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSk7CisgICAgICAgICAg ICAgLS1wb3M7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgaW5saW5lIHVpbnQgcGVla1By ZXZpb3VzVW5jaGVja2VkKCkgY29uc3QKKyAgICAgeworICAgICAgICAgUV9BU1NFUlRfWChoYXNQ cmV2aW91cygpLCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIHByZXZpb3VzIGl0ZW0i KTsKKyAKKy0gICAgICAgIGlmIChRX1VOTElLRUxZKHBvc1stMV0uaXNMb3dTdXJyb2dhdGUoKSkp CisrICAgICAgICBpZiAoUV9VTkxJS0VMWShwb3NbLTFdLmlzTG93U3Vycm9nYXRlKCkpKSB7Cisr ICAgICAgICAgICAgUV9BU1NFUlQobGVzcyhpICsgMSwgcG9zKSAmJiBwb3NbLTJdLmlzSGlnaFN1 cnJvZ2F0ZSgpKTsKKyAgICAgICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNChw b3NbLTJdLCBwb3NbLTFdKTsKKysgICAgICAgIH0KKyAgICAgICAgIHJldHVybiBwb3NbLTFdLnVu aWNvZGUoKTsKKyAgICAgfQorIAorQEAgLTIzMCw4ICsyNDMsMTAgQEAgcHVibGljOgorICAgICAg ICAgUV9BU1NFUlRfWChoYXNQcmV2aW91cygpLCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24n dCBhIHByZXZpb3VzIGl0ZW0iKTsKKyAKKyAgICAgICAgIGNvbnN0IFFDaGFyIGN1ciA9ICotLXBv czsKKy0gICAgICAgIGlmIChRX1VOTElLRUxZKGN1ci5pc0xvd1N1cnJvZ2F0ZSgpKSkKKysgICAg ICAgIGlmIChRX1VOTElLRUxZKGN1ci5pc0xvd1N1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAg IFFfQVNTRVJUKGhhc1ByZXZpb3VzKCkgJiYgcG9zWy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSk7Cisg ICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQoKi0tcG9zLCBjdXIpOwor KyAgICAgICAgfQorICAgICAgICAgcmV0dXJuIGN1ci51bmljb2RlKCk7CisgICAgIH0KKyAKK0BA IC0yNDEsNyArMjU2LDcgQEAgcHVibGljOgorIAorICAgICAgICAgY29uc3QgUUNoYXIgdWMgPSAq LS1wb3M7CisgICAgICAgICBpZiAoUV9VTkxJS0VMWSh1Yy5pc1N1cnJvZ2F0ZSgpKSkgeworLSAg ICAgICAgICAgIGlmIChRX0xJS0VMWSh1Yy5pc0xvd1N1cnJvZ2F0ZSgpICYmIHBvcyA+IGkgJiYg cG9zWy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSkpCisrICAgICAgICAgICAgaWYgKFFfTElLRUxZKHVj LmlzTG93U3Vycm9nYXRlKCkgJiYgaGFzUHJldmlvdXMoKSAmJiBwb3NbLTFdLmlzSGlnaFN1cnJv Z2F0ZSgpKSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQo Ki0tcG9zLCB1Yyk7CisgICAgICAgICAgICAgcmV0dXJuIGludmFsaWRBczsKKyAgICAgICAgIH0K K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRleF9wLmggYi9xdGJh c2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRleF9wLmgKK2luZGV4IGYyODdiNzUyZDcuLmUyOTQ1 Mzc3ODcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRleF9wLmgK KysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcWZ1dGV4X3AuaAorQEAgLTUyLDYgKzUy LDcgQEAKKyAvLworIAorICNpbmNsdWRlIDxxZ2xvYmFsLmg+CisrI2luY2x1ZGUgPFF0Q29yZS9x dHNhbl9pbXBsLmg+CisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCitAQCAtMTA2LDE2ICsxMDcs MTMgQEAgbmFtZXNwYWNlIFF0TGludXhGdXRleCB7CisgICAgIGlubGluZSBpbnQgX3FfZnV0ZXgo aW50ICphZGRyLCBpbnQgb3AsIGludCB2YWwsIHF1aW50cHRyIHZhbDIgPSAwLAorICAgICAgICAg ICAgICAgICAgICAgICAgIGludCAqYWRkcjIgPSBudWxscHRyLCBpbnQgdmFsMyA9IDApIG5vZXhj ZXB0CisgICAgIHsKKy0gICAgICAgIC8vIEEgZnV0ZXggY2FsbCBlbnN1cmVzIHRvdGFsIG9yZGVy aW5nIG9uIHRoZSBmdXRleCB3b3JkcworLSAgICAgICAgLy8gKGluIGVpdGhlciBzdWNjZXNzIG9y IGZhaWx1cmUgb2YgdGhlIGNhbGwpLiBJbnN0cnVjdCBUU0FOIGFjY29yZGluZ2x5LAorLSAgICAg ICAgLy8gYXMgVFNBTiBkb2VzIG5vdCB1bmRlcnN0YW5kIHRoZSBmdXRleCgyKSBzeXNjYWxsLgor LSAgICAgICAgX3FfdHNhbl9yZWxlYXNlKGFkZHIsIGFkZHIyKTsKKysgICAgICAgIFF0VHNhbjo6 ZnV0ZXhSZWxlYXNlKGFkZHIsIGFkZHIyKTsKKyAKKyAgICAgICAgIC8vIHdlIHVzZSBfX05SX2Z1 dGV4IGJlY2F1c2Ugc29tZSBsaWJjcyAobGlrZSBBbmRyb2lkJ3MgYmlvbmljKSBkb24ndAorICAg ICAgICAgLy8gcHJvdmlkZSBTWVNfZnV0ZXggZXRjLgorICAgICAgICAgaW50IHJlc3VsdCA9IHN5 c2NhbGwoX19OUl9mdXRleCwgYWRkciwgb3AgfCBGVVRFWF9QUklWQVRFX0ZMQUcsIHZhbCwgdmFs MiwgYWRkcjIsIHZhbDMpOworIAorLSAgICAgICAgX3FfdHNhbl9hY3F1aXJlKGFkZHIsIGFkZHIy KTsKKysgICAgICAgIFF0VHNhbjo6ZnV0ZXhBY3F1aXJlKGFkZHIsIGFkZHIyKTsKKyAKKyAgICAg ICAgIHJldHVybiByZXN1bHQ7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVs aWIvdGhyZWFkL3FtdXRleC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5j cHAKK2luZGV4IDMxMGQxY2IxNGYuLjcwOTcxMjJkOGUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvdGhyZWFkL3FtdXRleC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJl YWQvcW11dGV4LmNwcAorQEAgLTE1Miw2ICsxNTIsNyBAQCBwdWJsaWM6CisgCisgLyohCisgICAg IFxlbnVtIFFNdXRleDo6UmVjdXJzaW9uTW9kZQorKyAgICBcb2Jzb2xldGUgVXNlIFFSZWN1cnNp dmVNdXRleCB0byBjcmVhdGUgYSByZWN1cnNpdmUgbXV0ZXguCisgCisgICAgIFx2YWx1ZSBSZWN1 cnNpdmUgIEluIHRoaXMgbW9kZSwgYSB0aHJlYWQgY2FuIGxvY2sgdGhlIHNhbWUgbXV0ZXgKKyAg ICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgdGltZXMgYW5kIHRoZSBtdXRleCB3b24ndCBi ZSB1bmxvY2tlZAorQEAgLTE3Myw2ICsxNzQsNyBAQCBwdWJsaWM6CisgCisgLyohCisgICAgIENv bnN0cnVjdHMgYSBuZXcgbXV0ZXguIFRoZSBtdXRleCBpcyBjcmVhdGVkIGluIGFuIHVubG9ja2Vk IHN0YXRlLgorKyAgICBcb2Jzb2xldGUgVXNlIFFSZWN1cnNpdmVNdXRleCB0byBjcmVhdGUgYSBy ZWN1cnNpdmUgbXV0ZXguCisgCisgICAgIElmIFxhIG1vZGUgaXMgUU11dGV4OjpSZWN1cnNpdmUs IGEgdGhyZWFkIGNhbiBsb2NrIHRoZSBzYW1lIG11dGV4CisgICAgIG11bHRpcGxlIHRpbWVzIGFu ZCB0aGUgbXV0ZXggd29uJ3QgYmUgdW5sb2NrZWQgdW50aWwgYQorQEAgLTE5Nyw3ICsxOTksNyBA QCBRTXV0ZXg6OlFNdXRleChSZWN1cnNpb25Nb2RlIG1vZGUpCisgUU11dGV4Ojp+UU11dGV4KCkK KyB7CisgICAgIFFNdXRleERhdGEgKmQgPSBkX3B0ci5sb2FkUmVsYXhlZCgpOworLSAgICBpZiAo aXNSZWN1cnNpdmUoKSkgeworKyAgICBpZiAoUUJhc2ljTXV0ZXg6OmlzUmVjdXJzaXZlKCkpIHsK KyAgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxRUmVjdXJzaXZlTXV0ZXhQcml2YXRlICo+KGQp OworICAgICB9IGVsc2UgaWYgKGQpIHsKKyAjaWZuZGVmIFFUX0xJTlVYX0ZVVEVYCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguaCBiL3F0YmFzZS9zcmMvY29y ZWxpYi90aHJlYWQvcW11dGV4LmgKK2luZGV4IDczYzllMDA2NjMuLjFiYWU1NzNhMDMgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5oCisrKysgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5oCitAQCAtNDIsNiArNDIsNyBAQAorIAorICNpbmNs dWRlIDxRdENvcmUvcWdsb2JhbC5oPgorICNpbmNsdWRlIDxRdENvcmUvcWF0b21pYy5oPgorKyNp bmNsdWRlIDxRdENvcmUvcXRzYW5faW1wbC5oPgorICNpbmNsdWRlIDxuZXc+CisgCisgI2lmIF9f aGFzX2luY2x1ZGUoPGNocm9ubz4pCitAQCAtNzcsMTkgKzc4LDM3IEBAIHB1YmxpYzoKKyAKKyAg ICAgLy8gQmFzaWNMb2NrYWJsZSBjb25jZXB0CisgICAgIGlubGluZSB2b2lkIGxvY2soKSBRVF9N VVRFWF9MT0NLX05PRVhDRVBUIHsKKysgICAgICAgIFF0VHNhbjo6bXV0ZXhQcmVMb2NrKHRoaXMs IDB1KTsKKysKKyAgICAgICAgIGlmICghZmFzdFRyeUxvY2soKSkKKyAgICAgICAgICAgICBsb2Nr SW50ZXJuYWwoKTsKKysKKysgICAgICAgIFF0VHNhbjo6bXV0ZXhQb3N0TG9jayh0aGlzLCAwdSwg MCk7CisgICAgIH0KKyAKKyAgICAgLy8gQmFzaWNMb2NrYWJsZSBjb25jZXB0CisgICAgIGlubGlu ZSB2b2lkIHVubG9jaygpIG5vZXhjZXB0IHsKKyAgICAgICAgIFFfQVNTRVJUKGRfcHRyLmxvYWRS ZWxheGVkKCkpOyAvL211dGV4IG11c3QgYmUgbG9ja2VkCisrCisrICAgICAgICBRdFRzYW46Om11 dGV4UHJlVW5sb2NrKHRoaXMsIDB1KTsKKysKKyAgICAgICAgIGlmICghZmFzdFRyeVVubG9jaygp KQorICAgICAgICAgICAgIHVubG9ja0ludGVybmFsKCk7CisrCisrICAgICAgICBRdFRzYW46Om11 dGV4UG9zdFVubG9jayh0aGlzLCAwdSk7CisgICAgIH0KKyAKKyAgICAgYm9vbCB0cnlMb2NrKCkg bm9leGNlcHQgeworLSAgICAgICAgcmV0dXJuIGZhc3RUcnlMb2NrKCk7CisrICAgICAgICB1bnNp Z25lZCB0c2FuRmxhZ3MgPSBRdFRzYW46OlRyeUxvY2s7CisrICAgICAgICBRdFRzYW46Om11dGV4 UHJlTG9jayh0aGlzLCB0c2FuRmxhZ3MpOworKworKyAgICAgICAgY29uc3QgYm9vbCBzdWNjZXNz ID0gZmFzdFRyeUxvY2soKTsKKysKKysgICAgICAgIGlmICghc3VjY2VzcykKKysgICAgICAgICAg ICB0c2FuRmxhZ3MgfD0gUXRUc2FuOjpUcnlMb2NrRmFpbGVkOworKyAgICAgICAgUXRUc2FuOjpt dXRleFBvc3RMb2NrKHRoaXMsIHRzYW5GbGFncywgMCk7CisrCisrICAgICAgICByZXR1cm4gc3Vj Y2VzczsKKyAgICAgfQorIAorICAgICAvLyBMb2NrYWJsZSBjb25jZXB0CitAQCAtMTM0LDggKzE1 MywxNiBAQCBwdWJsaWM6CisgI2Vsc2UKKyAgICAgUU11dGV4KCkgeyBkX3B0ci5zdG9yZVJlbGF4 ZWQobnVsbHB0cik7IH0KKyAjZW5kaWYKKysjaWYgUVRfREVQUkVDQVRFRF9TSU5DRSg1LDE1KQor ICAgICBlbnVtIFJlY3Vyc2lvbk1vZGUgeyBOb25SZWN1cnNpdmUsIFJlY3Vyc2l2ZSB9OworKyAg ICBRVF9ERVBSRUNBVEVEX1ZFUlNJT05fWCg1LCAxNSwgIlVzZSBRUmVjdXJzaXZlTXV0ZXggaW5z dGVhZCBvZiBhIHJlY3Vyc2l2ZSBRTXV0ZXgiKQorICAgICBleHBsaWNpdCBRTXV0ZXgoUmVjdXJz aW9uTW9kZSBtb2RlKTsKKysKKysgICAgUVRfREVQUkVDQVRFRF9WRVJTSU9OX1goNSwgMTUsICJV c2UgUVJlY3Vyc2l2ZU11dGV4IGluc3RlYWQgb2YgYSByZWN1cnNpdmUgUU11dGV4IikKKysgICAg Ym9vbCBpc1JlY3Vyc2l2ZSgpIGNvbnN0IG5vZXhjZXB0CisrICAgIHsgcmV0dXJuIFFCYXNpY011 dGV4Ojppc1JlY3Vyc2l2ZSgpOyB9CisrI2VuZGlmCisrCisgICAgIH5RTXV0ZXgoKTsKKyAKKyAg ICAgLy8gQmFzaWNMb2NrYWJsZSBjb25jZXB0CitAQCAtMTY2LDkgKzE5Myw2IEBAIHB1YmxpYzoK KyAgICAgfQorICNlbmRpZgorIAorLSAgICBib29sIGlzUmVjdXJzaXZlKCkgY29uc3Qgbm9leGNl cHQKKy0gICAgeyByZXR1cm4gUUJhc2ljTXV0ZXg6OmlzUmVjdXJzaXZlKCk7IH0KKy0KKyBwcml2 YXRlOgorICAgICBRX0RJU0FCTEVfQ09QWShRTXV0ZXgpCisgICAgIGZyaWVuZCBjbGFzcyBRTXV0 ZXhMb2NrZXI7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xcmVhZHdy aXRlbG9jay5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNw cAoraW5kZXggOGMyODUwN2Q1YS4uOWRkODUwMzExNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Y29yZWxpYi90aHJlYWQvcXJlYWR3cml0ZWxvY2suY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvdGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNwcAorQEAgLTE1NSw3ICsxNTUsNyBAQCBRUmVhZFdy aXRlTG9jazo6UVJlYWRXcml0ZUxvY2soUmVjdXJzaW9uTW9kZSByZWN1cnNpb25Nb2RlKQorICov CisgUVJlYWRXcml0ZUxvY2s6On5RUmVhZFdyaXRlTG9jaygpCisgeworLSAgICBhdXRvIGQgPSBk X3B0ci5sb2FkUmVsYXhlZCgpOworKyAgICBhdXRvIGQgPSBkX3B0ci5sb2FkQWNxdWlyZSgpOwor ICAgICBpZiAoaXNVbmNvbnRlbmRlZExvY2tlZChkKSkgeworICAgICAgICAgcVdhcm5pbmcoIlFS ZWFkV3JpdGVMb2NrOiBkZXN0cm95aW5nIGxvY2tlZCBRUmVhZFdyaXRlTG9jayIpOworICAgICAg ICAgcmV0dXJuOworQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIFFSZWFkV3JpdGVMb2NrOjp1bmxv Y2soKQorIC8qISBcaW50ZXJuYWwgIEhlbHBlciBmb3IgUVdhaXRDb25kaXRpb246OndhaXQgKi8K KyBRUmVhZFdyaXRlTG9jazo6U3RhdGVGb3JXYWl0Q29uZGl0aW9uIFFSZWFkV3JpdGVMb2NrOjpz dGF0ZUZvcldhaXRDb25kaXRpb24oKSBjb25zdAorIHsKKy0gICAgUVJlYWRXcml0ZUxvY2tQcml2 YXRlICpkID0gZF9wdHIubG9hZFJlbGF4ZWQoKTsKKysgICAgUVJlYWRXcml0ZUxvY2tQcml2YXRl ICpkID0gZF9wdHIubG9hZEFjcXVpcmUoKTsKKyAgICAgc3dpdGNoIChxdWludHB0cihkKSAmIFN0 YXRlTWFzaykgeworICAgICBjYXNlIFN0YXRlTG9ja2VkRm9yUmVhZDogcmV0dXJuIExvY2tlZEZv clJlYWQ7CisgICAgIGNhc2UgU3RhdGVMb2NrZWRGb3JXcml0ZTogcmV0dXJuIExvY2tlZEZvcldy aXRlOworQEAgLTQ1Myw2ICs0NTMsNyBAQCBRUmVhZFdyaXRlTG9jazo6U3RhdGVGb3JXYWl0Q29u ZGl0aW9uIFFSZWFkV3JpdGVMb2NrOjpzdGF0ZUZvcldhaXRDb25kaXRpb24oKSBjbworIAorICAg ICBpZiAoIWQpCisgICAgICAgICByZXR1cm4gVW5sb2NrZWQ7CisrICAgIGNvbnN0IGF1dG8gbG9j ayA9IHF0X3Njb3BlZF9sb2NrKGQtPm11dGV4KTsKKyAgICAgaWYgKGQtPndyaXRlckNvdW50ID4g MSkKKyAgICAgICAgIHJldHVybiBSZWN1cnNpdmVseUxvY2tlZDsKKyAgICAgZWxzZSBpZiAoZC0+ d3JpdGVyQ291bnQgPT0gMSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFk L3FzZW1hcGhvcmUuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xc2VtYXBob3JlLmNw cAoraW5kZXggMWQwMWZjMWIyOC4uM2VjZGVlMzc0NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Y29yZWxpYi90aHJlYWQvcXNlbWFwaG9yZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90 aHJlYWQvcXNlbWFwaG9yZS5jcHAKK0BAIC0zNTQsNyArMzU0LDEyIEBAIHZvaWQgUVNlbWFwaG9y ZTo6cmVsZWFzZShpbnQgbikKKyAgICAgICAgIHF1aW50cHRyIG5uID0gdW5zaWduZWQobik7Cisg ICAgICAgICBpZiAoZnV0ZXhIYXNXYWl0ZXJDb3VudCkKKyAgICAgICAgICAgICBubiB8PSBxdWlu dDY0KG5uKSA8PCAzMjsgICAgLy8gdG9rZW4gY291bnQgcmVwbGljYXRlZCBpbiBoaWdoIHdvcmQK Ky0gICAgICAgIHF1aW50cHRyIHByZXZWYWx1ZSA9IHUuZmV0Y2hBbmRBZGRSZWxlYXNlKG5uKTsK KysgICAgICAgIHF1aW50cHRyIHByZXZWYWx1ZSA9IHUubG9hZFJlbGF4ZWQoKTsKKysgICAgICAg IHF1aW50cHRyIG5ld1ZhbHVlOworKyAgICAgICAgZG8geyAvLyBsb29wIGp1c3QgdG8gZW5zdXJl IHRoZSBvcGVyYXRpb25zIGFyZSBkb25lIGF0b21pY2FsbHkKKysgICAgICAgICAgICBuZXdWYWx1 ZSA9IHByZXZWYWx1ZSArIG5uOworKyAgICAgICAgICAgIG5ld1ZhbHVlICY9IChmdXRleE5lZWRz V2FrZUFsbEJpdCAtIDEpOworKyAgICAgICAgfSB3aGlsZSAoIXUudGVzdEFuZFNldFJlbGVhc2Uo cHJldlZhbHVlLCBuZXdWYWx1ZSwgcHJldlZhbHVlKSk7CisgICAgICAgICBpZiAoZnV0ZXhOZWVk c1dha2UocHJldlZhbHVlKSkgeworICNpZmRlZiBGVVRFWF9PUAorICAgICAgICAgICAgIGlmIChm dXRleEhhc1dhaXRlckNvdW50KSB7CitAQCAtMzc2LDcgKzM4MSw2IEBAIHZvaWQgUVNlbWFwaG9y ZTo6cmVsZWFzZShpbnQgbikKKyAgICAgICAgICAgICAgICAgcXVpbnQzMiBvcGFyZyA9IDA7Cisg ICAgICAgICAgICAgICAgIHF1aW50MzIgY21wID0gRlVURVhfT1BfQ01QX05FOworICAgICAgICAg ICAgICAgICBxdWludDMyIGNtcGFyZyA9IDA7CistICAgICAgICAgICAgICAgIHUuZmV0Y2hBbmRB bmRSZWxlYXNlKGZ1dGV4TmVlZHNXYWtlQWxsQml0IC0gMSk7CisgICAgICAgICAgICAgICAgIGZ1 dGV4V2FrZU9wKCpmdXRleExvdzMyKCZ1KSwgbiwgSU5UX01BWCwgKmZ1dGV4SGlnaDMyKCZ1KSwg RlVURVhfT1Aob3AsIG9wYXJnLCBjbXAsIGNtcGFyZykpOworICAgICAgICAgICAgICAgICByZXR1 cm47CisgICAgICAgICAgICAgfQorQEAgLTM4OCw3ICszOTIsNiBAQCB2b2lkIFFTZW1hcGhvcmU6 OnJlbGVhc2UoaW50IG4pCisgICAgICAgICAgICAgLy8gICAgaXRzIGFjcXVpc2l0aW9uIGFueXdh eSwgc28gaXQgaGFzIHRvIHdhaXQ7CisgICAgICAgICAgICAgLy8gMikgaXQgZGlkIG5vdCBzZWUg dGhlIG5ldyBjb3VudGVyIHZhbHVlLCBpbiB3aGljaCBjYXNlIGl0cworICAgICAgICAgICAgIC8v ICAgIGZ1dGV4V2FpdCB3aWxsIGZhaWwuCistICAgICAgICAgICAgdS5mZXRjaEFuZEFuZFJlbGVh c2UoZnV0ZXhOZWVkc1dha2VBbGxCaXQgLSAxKTsKKyAgICAgICAgICAgICBpZiAoZnV0ZXhIYXNX YWl0ZXJDb3VudCkgeworICAgICAgICAgICAgICAgICBmdXRleFdha2VBbGwoKmZ1dGV4TG93MzIo JnUpKTsKKyAgICAgICAgICAgICAgICAgZnV0ZXhXYWtlQWxsKCpmdXRleEhpZ2gzMigmdSkpOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF9wLmggYi9xdGJh c2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfcC5oCitpbmRleCBiMmQxNjI4ZTZlLi5mMzJm NmYwNDYwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3Au aAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3AuaAorQEAgLTE3NCw3 ICsxNzQsNyBAQCBwdWJsaWM6CisgICAgIGludCByZXR1cm5Db2RlOworIAorICAgICB1aW50IHN0 YWNrU2l6ZTsKKy0gICAgUVRocmVhZDo6UHJpb3JpdHkgcHJpb3JpdHk7CisrICAgIHN0ZDo6dW5k ZXJseWluZ190eXBlPFFUaHJlYWQ6OlByaW9yaXR5Pjo6dHlwZSBwcmlvcml0eTsKKyAKKyAgICAg c3RhdGljIFFUaHJlYWQgKnRocmVhZEZvcklkKGludCBpZCk7CisgCitAQCAtMjEzLDYgKzIxMywx MyBAQCBwdWJsaWM6CisgICAgICAgICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6aW5zdGFuY2UoKS0+ cG9zdEV2ZW50KHFfcHRyLCBuZXcgUUV2ZW50KFFFdmVudDo6UXVpdCkpOworICAgICAgICAgfQor ICAgICB9CisrCisrI2lmbmRlZiBRX09TX0lOVEVHUklUWQorK3ByaXZhdGU6CisrICAgIC8vIFVz ZWQgaW4gUVRocmVhZChQcml2YXRlKTo6c3RhcnQgdG8gYXZvaWQgcmFjeSBhY2Nlc3MgdG8gUU9i amVjdDo6b2JqZWN0TmFtZSwKKysgICAgLy8gdW5zZXQgYWZ0ZXJ3YXJkcy4gT24gSU5URUdSSVRZ IHdlIHNldCB0aGUgdGhyZWFkIG5hbWUgYmVmb3JlIHN0YXJ0aW5nIGl0LgorKyAgICBRU3RyaW5n IG9iamVjdE5hbWU7CisrI2VuZGlmCisgfTsKKyAKKyAjZWxzZSAvLyBRVF9DT05GSUcodGhyZWFk KQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF91bml4LmNw cCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF91bml4LmNwcAoraW5kZXggNTZh OGUwYTAzOC4uNjEwMTE3YTY0MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJl YWQvcXRocmVhZF91bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhy ZWFkX3VuaXguY3BwCitAQCAtMTY5LDggKzE2OSw3IEBAIHN0YXRpYyB2b2lkIHNldF90aHJlYWRf ZGF0YShRVGhyZWFkRGF0YSAqZGF0YSkKKyAKKyBzdGF0aWMgdm9pZCBjbGVhcl90aHJlYWRfZGF0 YSgpCisgeworLSAgICBjdXJyZW50VGhyZWFkRGF0YSA9IG51bGxwdHI7CistICAgIHB0aHJlYWRf c2V0c3BlY2lmaWMoY3VycmVudF90aHJlYWRfZGF0YV9rZXksIG51bGxwdHIpOworKyAgICBzZXRf dGhyZWFkX2RhdGEobnVsbHB0cik7CisgfQorIAorIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorQEAg LTI5Niw3ICsyOTUsNyBAQCB2b2lkICpRVGhyZWFkUHJpdmF0ZTo6c3RhcnQodm9pZCAqYXJnKQor ICAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrZXIoJnRoci0+ZF9mdW5jKCktPm11dGV4KTsK KyAKKyAgICAgICAgICAgICAvLyBkbyB3ZSBuZWVkIHRvIHJlc2V0IHRoZSB0aHJlYWQgcHJpb3Jp dHk/CistICAgICAgICAgICAgaWYgKGludCh0aHItPmRfZnVuYygpLT5wcmlvcml0eSkgJiBUaHJl YWRQcmlvcml0eVJlc2V0RmxhZykgeworKyAgICAgICAgICAgIGlmICh0aHItPmRfZnVuYygpLT5w cmlvcml0eSAmIFRocmVhZFByaW9yaXR5UmVzZXRGbGFnKSB7CisgICAgICAgICAgICAgICAgIHRo ci0+ZF9mdW5jKCktPnNldFByaW9yaXR5KFFUaHJlYWQ6OlByaW9yaXR5KHRoci0+ZF9mdW5jKCkt PnByaW9yaXR5ICYgflRocmVhZFByaW9yaXR5UmVzZXRGbGFnKSk7CisgICAgICAgICAgICAgfQor IAorQEAgLTMxNiwxMCArMzE1LDEwIEBAIHZvaWQgKlFUaHJlYWRQcml2YXRlOjpzdGFydCh2b2lk ICphcmcpCisgICAgICAgICAgICAgLy8gU2V0cyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCB0aHJl YWQuIFdlIGNhbiBvbmx5IGRvIHRoaXMKKyAgICAgICAgICAgICAvLyB3aGVuIHRoZSB0aHJlYWQg aXMgc3RhcnRpbmcsIGFzIHdlIGRvbid0IGhhdmUgYSBjcm9zcworICAgICAgICAgICAgIC8vIHBs YXRmb3JtIHdheSBvZiBzZXR0aW5nIHRoZSBuYW1lIG9mIGFuIGFyYml0cmFyeSB0aHJlYWQuCist ICAgICAgICAgICAgaWYgKFFfTElLRUxZKHRoci0+b2JqZWN0TmFtZSgpLmlzRW1wdHkoKSkpCisr ICAgICAgICAgICAgaWYgKFFfTElLRUxZKHRoci0+ZF9mdW5jKCktPm9iamVjdE5hbWUuaXNFbXB0 eSgpKSkKKyAgICAgICAgICAgICAgICAgc2V0Q3VycmVudFRocmVhZE5hbWUodGhyLT5tZXRhT2Jq ZWN0KCktPmNsYXNzTmFtZSgpKTsKKyAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAg IHNldEN1cnJlbnRUaHJlYWROYW1lKHRoci0+b2JqZWN0TmFtZSgpLnRvTG9jYWw4Qml0KCkpOwor KyAgICAgICAgICAgICAgICBzZXRDdXJyZW50VGhyZWFkTmFtZShzdGQ6OmV4Y2hhbmdlKHRoci0+ ZF9mdW5jKCktPm9iamVjdE5hbWUsIHt9KS50b0xvY2FsOEJpdCgpKTsKKyAgICAgICAgIH0KKyAj ZW5kaWYKKyAKK0BAIC02NzEsNyArNjcwLDcgQEAgdm9pZCBRVGhyZWFkOjpzdGFydChQcmlvcml0 eSBwcmlvcml0eSkKKyAgICAgICAgICAgICAgICAgLy8gY291bGQgbm90IHNldCBzY2hlZHVsaW5n IGhpbnRzLCBmYWxsYmFjayB0byBpbmhlcml0aW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgLy8g d2UnbGwgdHJ5IGFnYWluIGZyb20gaW5zaWRlIHRoZSB0aHJlYWQKKyAgICAgICAgICAgICAgICAg cHRocmVhZF9hdHRyX3NldGluaGVyaXRzY2hlZCgmYXR0ciwgUFRIUkVBRF9JTkhFUklUX1NDSEVE KTsKKy0gICAgICAgICAgICAgICAgZC0+cHJpb3JpdHkgPSBQcmlvcml0eShwcmlvcml0eSB8IFRo cmVhZFByaW9yaXR5UmVzZXRGbGFnKTsKKysgICAgICAgICAgICAgICAgZC0+cHJpb3JpdHkgPSBz dGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZTxRVGhyZWFkOjpQcmlvcml0eT46OnR5cGU+ KHByaW9yaXR5KSB8IFRocmVhZFByaW9yaXR5UmVzZXRGbGFnOworICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KK0BAIC03MDIsNyArNzAxLDEwIEBAIHZvaWQg UVRocmVhZDo6c3RhcnQoUHJpb3JpdHkgcHJpb3JpdHkpCisgICAgICAgICBwdGhyZWFkX2F0dHJf c2V0dGhyZWFkbmFtZSgmYXR0ciwgbWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKSk7CisgICAgIGVs c2UKKyAgICAgICAgIHB0aHJlYWRfYXR0cl9zZXR0aHJlYWRuYW1lKCZhdHRyLCBvYmplY3ROYW1l KCkudG9Mb2NhbDhCaXQoKSk7CisrI2Vsc2UKKysgICAgZC0+b2JqZWN0TmFtZSA9IG9iamVjdE5h bWUoKTsKKyAjZW5kaWYKKysKKyAgICAgcHRocmVhZF90IHRocmVhZElkOworICAgICBpbnQgY29k ZSA9IHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRJZCwgJmF0dHIsIFFUaHJlYWRQcml2YXRlOjpzdGFy dCwgdGhpcyk7CisgICAgIGlmIChjb2RlID09IEVQRVJNKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3dpbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv dGhyZWFkL3F0aHJlYWRfd2luLmNwcAoraW5kZXggYmM3MGUzMTc4YS4uNGU3Njk3MjQ5OCAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF93aW4uY3BwCisrKysg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfd2luLmNwcAorQEAgLTM5NCwxMCAr Mzk0LDkgQEAgdW5zaWduZWQgaW50IF9fc3RkY2FsbCBRVF9FTlNVUkVfU1RBQ0tfQUxJR05FRF9G T1JfU1NFIFFUaHJlYWRQcml2YXRlOjpzdGFydCh2b2kKKyAKKyAjaWYgIWRlZmluZWQoUVRfTk9f REVCVUcpICYmIGRlZmluZWQoUV9DQ19NU1ZDKSAmJiAhZGVmaW5lZChRX09TX1dJTlJUKQorICAg ICAvLyBzZXRzIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IHRocmVhZC4KKy0gICAgUUJ5dGVBcnJh eSBvYmplY3ROYW1lID0gdGhyLT5vYmplY3ROYW1lKCkudG9Mb2NhbDhCaXQoKTsKKy0gICAgcXRf c2V0X3RocmVhZF9uYW1lKEhBTkRMRSgtMSksCistICAgICAgICAgICAgICAgICAgICAgICBvYmpl Y3ROYW1lLmlzRW1wdHkoKSA/CistICAgICAgICAgICAgICAgICAgICAgICB0aHItPm1ldGFPYmpl Y3QoKS0+Y2xhc3NOYW1lKCkgOiBvYmplY3ROYW1lLmNvbnN0RGF0YSgpKTsKKysgICAgcXRfc2V0 X3RocmVhZF9uYW1lKEhBTkRMRSgtMSksIHRoci0+ZF9mdW5jKCktPm9iamVjdE5hbWUuaXNFbXB0 eSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgPyB0aHItPm1ldGFPYmplY3QoKS0+Y2xhc3NO YW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICA6IHN0ZDo6ZXhjaGFuZ2UodGhyLT5kX2Z1 bmMoKS0+b2JqZWN0TmFtZSwge30pLnRvTG9jYWw4Qml0KCkuY29uc3REYXRhKCkpOworICNlbmRp ZgorIAorICAgICBlbWl0IHRoci0+c3RhcnRlZChRVGhyZWFkOjpRUHJpdmF0ZVNpZ25hbCgpKTsK K0BAIC01MDMsNiArNTAyLDcgQEAgdm9pZCBRVGhyZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0 eSkKKyAgICAgaWYgKGQtPnJ1bm5pbmcpCisgICAgICAgICByZXR1cm47CisgCisrICAgIGQtPm9i amVjdE5hbWUgPSBvYmplY3ROYW1lKCk7CisgICAgIGQtPnJ1bm5pbmcgPSB0cnVlOworICAgICBk LT5maW5pc2hlZCA9IGZhbHNlOworICAgICBkLT5leGl0ZWQgPSBmYWxzZTsKK0BAIC01NDgsNyAr NTQ4LDcgQEAgdm9pZCBRVGhyZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0eSkKKyAKKyAgICAg aW50IHByaW87CisgICAgIGQtPnByaW9yaXR5ID0gcHJpb3JpdHk7CistICAgIHN3aXRjaCAoZC0+ cHJpb3JpdHkpIHsKKysgICAgc3dpdGNoIChwcmlvcml0eSkgeworICAgICBjYXNlIElkbGVQcmlv cml0eToKKyAgICAgICAgIHByaW8gPSBUSFJFQURfUFJJT1JJVFlfSURMRTsKKyAgICAgICAgIGJy ZWFrOworQEAgLTY4Niw3ICs2ODYsNyBAQCB2b2lkIFFUaHJlYWRQcml2YXRlOjpzZXRQcmlvcml0 eShRVGhyZWFkOjpQcmlvcml0eSB0aHJlYWRQcmlvcml0eSkKKyAKKyAgICAgaW50IHByaW87Cisg ICAgIHByaW9yaXR5ID0gdGhyZWFkUHJpb3JpdHk7CistICAgIHN3aXRjaCAocHJpb3JpdHkpIHsK KysgICAgc3dpdGNoICh0aHJlYWRQcmlvcml0eSkgeworICAgICBjYXNlIFFUaHJlYWQ6OklkbGVQ cmlvcml0eToKKyAgICAgICAgIHByaW8gPSBUSFJFQURfUFJJT1JJVFlfSURMRTsKKyAgICAgICAg IGJyZWFrOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRzYW5faW1w bC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdHNhbl9pbXBsLmgKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi41ODBhNzM4YjkxCistLS0gL2Rldi9udWxsCisr KysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0c2FuX2ltcGwuaAorQEAgLTAsMCArMSwx MTUgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDE3 IEludGVsIENvcnBvcmF0aW9uLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBLbGFyw6RsdmRhbGVu cyBEYXRha29uc3VsdCBBQiwgYSBLREFCIEdyb3VwIGNvbXBhbnksIGluZm9Aa2RhYi5jb20sIGF1 dGhvciBHaXVzZXBwZSBEJ0FuZ2VsbyA8Z2l1c2VwcGUuZGFuZ2Vsb0BrZGFiLmNvbT4KKysqKiBD b250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUg aXMgcGFydCBvZiB0aGUgUXRDb3JlIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoq ICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisr KiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNl IHRoaXMgZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNl IGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2 ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3Jp dHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5z aW5nIHRlcm1zCisrKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1z LWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0 IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMg ZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5T RS5MR1BMMyBpbmNsdWRlZCBpbiB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVh c2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdO VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisr Kiogd2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRt bC4KKysqKgorKyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJu YXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V CisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRp b24pIHRoZSBHTlUgR2VuZXJhbAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkg bGF0ZXIgdmVyc2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9u LiBUaGUgbGljZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoq IEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJ Q0VOU0UuR1BMMworKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQ bGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0 OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRw czovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRf TElDRU5TRSQKKysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2lmbmRlZiBRVFNBTl9J TVBMX0gKKysjZGVmaW5lIFFUU0FOX0lNUExfSAorKworKyNpbmNsdWRlIDxRdENvcmUvcWdsb2Jh bC5oPgorKworKyNpZiAoX19oYXNfZmVhdHVyZSh0aHJlYWRfc2FuaXRpemVyKSB8fCBkZWZpbmVk KF9fU0FOSVRJWkVfVEhSRUFEX18pKSAmJiBfX2hhc19pbmNsdWRlKDxzYW5pdGl6ZXIvdHNhbl9p bnRlcmZhY2UuaD4pCisrIyAgZGVmaW5lIFFUX0JVSUxESU5HX1VOREVSX1RTQU4KKysjICBpbmNs dWRlIDxzYW5pdGl6ZXIvdHNhbl9pbnRlcmZhY2UuaD4KKysjZW5kaWYKKysKKytRVF9CRUdJTl9O QU1FU1BBQ0UKKysKKytuYW1lc3BhY2UgUXRUc2FuIHsKKysjaWZkZWYgUVRfQlVJTERJTkdfVU5E RVJfVFNBTgorK2lubGluZSB2b2lkIGZ1dGV4QWNxdWlyZSh2b2lkICphZGRyLCB2b2lkICphZGRy MiA9IG51bGxwdHIpCisreworKyAgICAvLyBBIGZ1dGV4IGNhbGwgZW5zdXJlcyB0b3RhbCBvcmRl cmluZyBvbiB0aGUgZnV0ZXggd29yZHMKKysgICAgLy8gKGluIGVpdGhlciBzdWNjZXNzIG9yIGZh aWx1cmUgb2YgdGhlIGNhbGwpLiBJbnN0cnVjdCBUU0FOIGFjY29yZGluZ2x5LAorKyAgICAvLyBh cyBUU0FOIGRvZXMgbm90IHVuZGVyc3RhbmQgdGhlIGZ1dGV4KDIpIHN5c2NhbGwgKG9yIGVxdWl2 YWxlbnQpLgorKyAgICA6Ol9fdHNhbl9hY3F1aXJlKGFkZHIpOworKyAgICBpZiAoYWRkcjIpCisr ICAgICAgICA6Ol9fdHNhbl9hY3F1aXJlKGFkZHIyKTsKKyt9CisrCisraW5saW5lIHZvaWQgZnV0 ZXhSZWxlYXNlKHZvaWQgKmFkZHIsIHZvaWQgKmFkZHIyID0gbnVsbHB0cikKKyt7CisrICAgIGlm IChhZGRyMikKKysgICAgICAgIDo6X190c2FuX3JlbGVhc2UoYWRkcjIpOworKyAgICA6Ol9fdHNh bl9yZWxlYXNlKGFkZHIpOworK30KKysKKytpbmxpbmUgdm9pZCBtdXRleFByZUxvY2sodm9pZCAq YWRkciwgdW5zaWduZWQgZmxhZ3MpCisreworKyAgICA6Ol9fdHNhbl9tdXRleF9wcmVfbG9jayhh ZGRyLCBmbGFncyk7CisrfQorKworK2lubGluZSB2b2lkIG11dGV4UG9zdExvY2sodm9pZCAqYWRk ciwgdW5zaWduZWQgZmxhZ3MsIGludCByZWN1cnNpb24pCisreworKyAgICA6Ol9fdHNhbl9tdXRl eF9wb3N0X2xvY2soYWRkciwgZmxhZ3MsIHJlY3Vyc2lvbik7CisrfQorKworK2lubGluZSB2b2lk IG11dGV4UHJlVW5sb2NrKHZvaWQgKmFkZHIsIHVuc2lnbmVkIGZsYWdzKQorK3sKKysgICAgOjpf X3RzYW5fbXV0ZXhfcHJlX3VubG9jayhhZGRyLCBmbGFncyk7CisrfQorKworK2lubGluZSB2b2lk IG11dGV4UG9zdFVubG9jayh2b2lkICphZGRyLCB1bnNpZ25lZCBmbGFncykKKyt7CisrICAgIDo6 X190c2FuX211dGV4X3Bvc3RfdW5sb2NrKGFkZHIsIGZsYWdzKTsKKyt9CisrCisrZW51bSA6IHVu c2lnbmVkIHsKKysgICAgTXV0ZXhXcml0ZVJlZW50cmFudCA9IDo6X190c2FuX211dGV4X3dyaXRl X3JlZW50cmFudCwKKysgICAgVHJ5TG9jayA9IDo6X190c2FuX211dGV4X3RyeV9sb2NrLAorKyAg ICBUcnlMb2NrRmFpbGVkID0gOjpfX3RzYW5fbXV0ZXhfdHJ5X2xvY2tfZmFpbGVkLAorK307Cisr I2Vsc2UKKytpbmxpbmUgdm9pZCBmdXRleEFjcXVpcmUodm9pZCAqLCB2b2lkICogPSBudWxscHRy KSB7fQorK2lubGluZSB2b2lkIGZ1dGV4UmVsZWFzZSh2b2lkICosIHZvaWQgKiA9IG51bGxwdHIp IHt9CisrCisrZW51bSA6IHVuc2lnbmVkIHsKKysgICAgTXV0ZXhXcml0ZVJlZW50cmFudCwKKysg ICAgVHJ5TG9jaywKKysgICAgVHJ5TG9ja0ZhaWxlZCwKKyt9OworK2lubGluZSB2b2lkIG11dGV4 UHJlTG9jayh2b2lkICosIHVuc2lnbmVkKSB7fQorK2lubGluZSB2b2lkIG11dGV4UG9zdExvY2so dm9pZCAqLCB1bnNpZ25lZCwgaW50KSB7fQorK2lubGluZSB2b2lkIG11dGV4UHJlVW5sb2NrKHZv aWQgKiwgdW5zaWduZWQpIHt9CisraW5saW5lIHZvaWQgbXV0ZXhQb3N0VW5sb2NrKHZvaWQgKiwg dW5zaWduZWQpIHt9CisrI2VuZGlmIC8vIFFUX0JVSUxESU5HX1VOREVSX1RTQU4KKyt9IC8vIG5h bWVzcGFjZSBRdFRzYW4KKysKKytRVF9FTkRfTkFNRVNQQUNFCisrCisrI2VuZGlmIC8vIFFUU0FO X0lNUExfSAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXdhaXRjb25k aXRpb25fdW5peC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F3YWl0Y29uZGl0aW9u X3VuaXguY3BwCitpbmRleCA4OGIwNThmNDEwLi4wZjFkYTRkYzliIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9jb3JlbGliL3RocmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcAorKysrIGIvcXRi YXNlL3NyYy9jb3JlbGliL3RocmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcAorQEAgLTIxMyw3 ICsyMTMsNyBAQCBib29sIFFXYWl0Q29uZGl0aW9uOjp3YWl0KFFNdXRleCAqbXV0ZXgsIFFEZWFk bGluZVRpbWVyIGRlYWRsaW5lKQorIHsKKyAgICAgaWYgKCEgbXV0ZXgpCisgICAgICAgICByZXR1 cm4gZmFsc2U7CistICAgIGlmIChtdXRleC0+aXNSZWN1cnNpdmUoKSkgeworKyAgICBpZiAoc3Rh dGljX2Nhc3Q8UUJhc2ljTXV0ZXggKj4obXV0ZXgpLT5pc1JlY3Vyc2l2ZSgpKSB7CisgICAgICAg ICBxV2FybmluZygiUVdhaXRDb25kaXRpb246IGNhbm5vdCB3YWl0IG9uIHJlY3Vyc2l2ZSBtdXRl eGVzIik7CisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2NvcmVsaWIvdGltZS9xZGF0ZXRpbWUuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rp bWUvcWRhdGV0aW1lLmNwcAoraW5kZXggZWMxMjU2OWUzZi4uMmMwYjA5ODA3OSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3FkYXRldGltZS5jcHAKKysrKyBiL3F0YmFzZS9z cmMvY29yZWxpYi90aW1lL3FkYXRldGltZS5jcHAKK0BAIC00Myw2ICs0Myw3IEBACisgI2lmIFFU X0NPTkZJRyhkYXRldGltZXBhcnNlcikKKyAjaW5jbHVkZSAicHJpdmF0ZS9xZGF0ZXRpbWVwYXJz ZXJfcC5oIgorICNlbmRpZgorKyNpbmNsdWRlIDxwcml2YXRlL3FudW1lcmljX3AuaD4KKyAKKyAj aW5jbHVkZSAicWRhdGFzdHJlYW0uaCIKKyAjaW5jbHVkZSAicXNldC5oIgorQEAgLTE0MjksOSAr MTQzMCwxMSBAQCBRRGF0ZSBRRGF0ZTo6YWRkRGF5cyhxaW50NjQgbmRheXMpIGNvbnN0CisgICAg IGlmIChpc051bGwoKSkKKyAgICAgICAgIHJldHVybiBRRGF0ZSgpOworIAorLSAgICAvLyBEdWUg dG8gbGltaXRzIG9uIG1pbkpkKCkgYW5kIG1heEpkKCkgd2Uga25vdyB0aGF0IGFueSBvdmVyZmxv dworLSAgICAvLyB3aWxsIGJlIGludmFsaWQgYW5kIGNhdWdodCBieSBmcm9tSnVsaWFuRGF5KCku CistICAgIHJldHVybiBmcm9tSnVsaWFuRGF5KGpkICsgbmRheXMpOworKyAgICBxaW50NjQgcjsK KysgICAgaWYgKFFfVU5MSUtFTFkoYWRkX292ZXJmbG93KGpkLCBuZGF5cywgJnIpKSkKKysgICAg ICAgIHJldHVybiBRRGF0ZSgpOworKyAgICBlbHNlCisrICAgICAgICByZXR1cm4gZnJvbUp1bGlh bkRheShyKTsKKyB9CisgCisgLyohCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rp bWUvcXRpbWV6b25lLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZS5jcHAK K2luZGV4IDAzMDllNDNlNTIuLjNkNDUxNjk2YTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGltZS9xdGltZXpvbmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9x dGltZXpvbmUuY3BwCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoq CistKiogQ29weXJpZ2h0IChDKSAyMDEzIEpvaG4gTGF5dCA8amxheXRAa2RlLm9yZz4KKysqKiBD b3B5cmlnaHQgKEMpIDIwMjAgSm9obiBMYXl0IDxqbGF5dEBrZGUub3JnPgorICoqIENvbnRhY3Q6 IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSBRdENvcmUgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTk3NSw5ICs5NzUs MTUgQEAgUUxpc3Q8UUJ5dGVBcnJheT4gUVRpbWVab25lOjp3aW5kb3dzSWRUb0lhbmFJZHMoY29u c3QgUUJ5dGVBcnJheSAmd2luZG93c0lkLAorIH0KKyAKKyAjaWZuZGVmIFFUX05PX0RBVEFTVFJF QU0KKysvLyBJbnZhbGlkLCBhcyBhbiBJQU5BIElEOiB0b28gbG9uZywgc3RhcnRzIHdpdGggLSBh bmQgaGFzIG90aGVyIGludmFsaWQgY2hhcmFjdGVycyBpbiBpdAorK3N0YXRpYyBpbmxpbmUgUVN0 cmluZyBpbnZhbGlkSWQoKSB7IHJldHVybiBRU3RyaW5nTGl0ZXJhbCgiLU5vIFRpbWUgWm9uZSBT cGVjaWZpZWQhIik7IH0KKysKKyBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChRRGF0YVN0cmVhbSAm ZHMsIGNvbnN0IFFUaW1lWm9uZSAmdHopCisgeworLSAgICB0ei5kLT5zZXJpYWxpemUoZHMpOwor KyAgICBpZiAodHouaXNWYWxpZCgpKQorKyAgICAgICAgdHouZC0+c2VyaWFsaXplKGRzKTsKKysg ICAgZWxzZQorKyAgICAgICAgZHMgPDwgaW52YWxpZElkKCk7CisgICAgIHJldHVybiBkczsKKyB9 CisgCitAQCAtOTg1LDcgKzk5MSw5IEBAIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KFFEYXRhU3Ry ZWFtICZkcywgUVRpbWVab25lICZ0eikKKyB7CisgICAgIFFTdHJpbmcgaWFuYUlkOworICAgICBk cyA+PiBpYW5hSWQ7CistICAgIGlmIChpYW5hSWQgPT0gUUxhdGluMVN0cmluZygiT2Zmc2V0RnJv bVV0YyIpKSB7CisrICAgIGlmIChpYW5hSWQgPT0gaW52YWxpZElkKCkpIHsKKysgICAgICAgIHR6 ID0gUVRpbWVab25lKCk7CisrICAgIH0gZWxzZSBpZiAoaWFuYUlkID09IFFMYXRpbjFTdHJpbmco Ik9mZnNldEZyb21VdGMiKSkgeworICAgICAgICAgaW50IHV0Y09mZnNldDsKKyAgICAgICAgIFFT dHJpbmcgbmFtZTsKKyAgICAgICAgIFFTdHJpbmcgYWJicmV2aWF0aW9uOworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZXByaXZhdGVfdHouY3BwIGIvcXRiYXNl L3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lcHJpdmF0ZV90ei5jcHAKK2luZGV4IGIxNjExZDdk ZGIuLmE3YTZhNzJjY2YgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGlt ZXpvbmVwcml2YXRlX3R6LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6 b25lcHJpdmF0ZV90ei5jcHAKK0BAIC00Miw2ICs0Miw3IEBACisgI2luY2x1ZGUgInF0aW1lem9u ZS5oIgorICNpbmNsdWRlICJxdGltZXpvbmVwcml2YXRlX3AuaCIKKyAjaW5jbHVkZSAicHJpdmF0 ZS9xbG9jYWxlX3Rvb2xzX3AuaCIKKysjaW5jbHVkZSAicHJpdmF0ZS9xbG9ja2luZ19wLmgiCisg CisgI2luY2x1ZGUgPFF0Q29yZS9RRGF0YVN0cmVhbT4KKyAjaW5jbHVkZSA8UXRDb3JlL1FEYXRl VGltZT4KK0BAIC02Miw2ICs2MywxMCBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorKyNp ZiBRVF9DT05GSUcoaWN1KQorK3N0YXRpYyBRQmFzaWNNdXRleCBzX2ljdV9tdXRleDsKKysjZW5k aWYKKysKKyAvKgorICAgICBQcml2YXRlCisgCitAQCAtNjcwLDYgKzY3NSw5IEBAIFFUelRpbWVa b25lUHJpdmF0ZTo6flFUelRpbWVab25lUHJpdmF0ZSgpCisgCisgUVR6VGltZVpvbmVQcml2YXRl ICpRVHpUaW1lWm9uZVByaXZhdGU6OmNsb25lKCkgY29uc3QKKyB7CisrI2lmIFFUX0NPTkZJRyhp Y3UpCisrICAgIGNvbnN0IGF1dG8gbG9jayA9IHF0X3Njb3BlZF9sb2NrKHNfaWN1X211dGV4KTsK KysjZW5kaWYKKyAgICAgcmV0dXJuIG5ldyBRVHpUaW1lWm9uZVByaXZhdGUoKnRoaXMpOworIH0K KyAKK0BAIC05MTMsMTIgKzkyMSwxNCBAQCBRU3RyaW5nIFFUelRpbWVab25lUHJpdmF0ZTo6ZGlz cGxheU5hbWUocWludDY0IGF0TVNlY3NTaW5jZUVwb2NoLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBRTG9jYWxlICZsb2NhbGUpIGNvbnN0CisgeworICNp ZiBRVF9DT05GSUcoaWN1KQorKyAgICBhdXRvIGxvY2sgPSBxdF91bmlxdWVfbG9jayhzX2ljdV9t dXRleCk7CisgICAgIGlmICghbV9pY3UpCisgICAgICAgICBtX2ljdSA9IG5ldyBRSWN1VGltZVpv bmVQcml2YXRlKG1faWQpOworICAgICAvLyBUT0RPIHNtYWxsIHJpc2sgbWF5IG5vdCBtYXRjaCBp ZiB0cmFuIHRpbWVzIGRpZmZlciBkdWUgdG8gb3V0ZGF0ZWQgZmlsZXMKKyAgICAgLy8gVE9ETyBT b21lIHZhbGlkIFRaIG5hbWVzIGFyZSBub3QgdmFsaWQgSUNVIG5hbWVzLCB1c2UgdHJhbnNsYXRp b24gdGFibGU/CisgICAgIGlmIChtX2ljdS0+aXNWYWxpZCgpKQorICAgICAgICAgcmV0dXJuIG1f aWN1LT5kaXNwbGF5TmFtZShhdE1TZWNzU2luY2VFcG9jaCwgbmFtZVR5cGUsIGxvY2FsZSk7Cisr ICAgIGxvY2sudW5sb2NrKCk7CisgI2Vsc2UKKyAgICAgUV9VTlVTRUQobmFtZVR5cGUpCisgICAg IFFfVU5VU0VEKGxvY2FsZSkKK0BAIC05MzIsMTIgKzk0MiwxNCBAQCBRU3RyaW5nIFFUelRpbWVa b25lUHJpdmF0ZTo6ZGlzcGxheU5hbWUoUVRpbWVab25lOjpUaW1lVHlwZSB0aW1lVHlwZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUxvY2FsZSAmbG9j YWxlKSBjb25zdAorIHsKKyAjaWYgUVRfQ09ORklHKGljdSkKKysgICAgYXV0byBsb2NrID0gcXRf dW5pcXVlX2xvY2soc19pY3VfbXV0ZXgpOworICAgICBpZiAoIW1faWN1KQorICAgICAgICAgbV9p Y3UgPSBuZXcgUUljdVRpbWVab25lUHJpdmF0ZShtX2lkKTsKKyAgICAgLy8gVE9ETyBzbWFsbCBy aXNrIG1heSBub3QgbWF0Y2ggaWYgdHJhbiB0aW1lcyBkaWZmZXIgZHVlIHRvIG91dGRhdGVkIGZp bGVzCisgICAgIC8vIFRPRE8gU29tZSB2YWxpZCBUWiBuYW1lcyBhcmUgbm90IHZhbGlkIElDVSBu YW1lcywgdXNlIHRyYW5zbGF0aW9uIHRhYmxlPworICAgICBpZiAobV9pY3UtPmlzVmFsaWQoKSkK KyAgICAgICAgIHJldHVybiBtX2ljdS0+ZGlzcGxheU5hbWUodGltZVR5cGUsIG5hbWVUeXBlLCBs b2NhbGUpOworKyAgICBsb2NrLnVubG9jaygpOworICNlbHNlCisgICAgIFFfVU5VU0VEKHRpbWVU eXBlKQorICAgICBRX1VOVVNFRChuYW1lVHlwZSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvdG9vbHMvcWFycmF5ZGF0YS5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FhcnJh eWRhdGEuaAoraW5kZXggZGNkOTU5MjRjMS4uZDAxNzM5ZTdlNiAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvY29yZWxpYi90b29scy9xYXJyYXlkYXRhLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxp Yi90b29scy9xYXJyYXlkYXRhLmgKK0BAIC00Miw2ICs0Miw3IEBACisgCisgI2luY2x1ZGUgPFF0 Q29yZS9xcmVmY291bnQuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPGNzdGRp bnQ+CisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCitAQCAtNTgsMTQgKzU5LDE0IEBAIHN0cnVj dCBRX0NPUkVfRVhQT1JUIFFBcnJheURhdGEKKyAgICAgeworICAgICAgICAgUV9BU1NFUlQoc2l6 ZSA9PSAwCisgICAgICAgICAgICAgICAgIHx8IG9mZnNldCA8IDAgfHwgc2l6ZV90KG9mZnNldCkg Pj0gc2l6ZW9mKFFBcnJheURhdGEpKTsKKy0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0 PGNoYXIgKj4odGhpcykgKyBvZmZzZXQ7CisrICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz dDx2b2lkICo+IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykgKyBvZmZzZXQpOwor ICAgICB9CisgCisgICAgIGNvbnN0IHZvaWQgKmRhdGEoKSBjb25zdAorICAgICB7CisgICAgICAg ICBRX0FTU0VSVChzaXplID09IDAKKyAgICAgICAgICAgICAgICAgfHwgb2Zmc2V0IDwgMCB8fCBz aXplX3Qob2Zmc2V0KSA+PSBzaXplb2YoUUFycmF5RGF0YSkpOworLSAgICAgICAgcmV0dXJuIHJl aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPih0aGlzKSArIG9mZnNldDsKKysgICAgICAgIHJl dHVybiByZWludGVycHJldF9jYXN0PHZvaWQgKj4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90 Pih0aGlzKSArIG9mZnNldCk7CisgICAgIH0KKyAKKyAgICAgLy8gVGhpcyByZWZlcnMgdG8gYXJy YXkgZGF0YSBtdXRhYmlsaXR5LCBub3QgImhlYWRlciBkYXRhIiByZXByZXNlbnRlZCBieQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xZnJlZWxpc3RfcC5oIGIvcXRiYXNl L3NyYy9jb3JlbGliL3Rvb2xzL3FmcmVlbGlzdF9wLmgKK2luZGV4IDViYTIzYjM0NGIuLjk5NzQx MDIxMzYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0X3Au aAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FmcmVlbGlzdF9wLmgKK0BAIC0xNjEs NyArMTYxLDcgQEAgY2xhc3MgUUZyZWVMaXN0CisgICAgICAgICAgICAgICAgIHJldHVybiBpOwor ICAgICAgICAgICAgIHggLT0gc2l6ZTsKKyAgICAgICAgIH0KKy0gICAgICAgIFFfQVNTRVJUKGZh bHNlKTsKKysgICAgICAgIFFfVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgIHJldHVybiAtMTsKKyAg ICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xdmVyc2lvbm51 bWJlci5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3F2ZXJzaW9ubnVtYmVyLmgKK2luZGV4 IGQ0M2I4NmJhNTEuLjI4NDNmMmIwNDMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIv dG9vbHMvcXZlcnNpb25udW1iZXIuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3F2 ZXJzaW9ubnVtYmVyLmgKK0BAIC0yNzMsMTAgKzI3MywxMCBAQCBwdWJsaWM6CisgCisgICAgIFFf UkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgUVN0cmluZyB0b1N0cmluZygpIGNvbnN0Owor ICNpZiBRVF9TVFJJTkdWSUVXX0xFVkVMIDwgMgorLSAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NP UkVfRVhQT1JUIHN0YXRpYyBRX0RFQ0xfUFVSRV9GVU5DVElPTiBRVmVyc2lvbk51bWJlciBmcm9t U3RyaW5nKGNvbnN0IFFTdHJpbmcgJnN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIp OworKyAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRVmVyc2lvbk51 bWJlciBmcm9tU3RyaW5nKGNvbnN0IFFTdHJpbmcgJnN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9 IG51bGxwdHIpOworICNlbmRpZgorLSAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JU IHN0YXRpYyBRX0RFQ0xfUFVSRV9GVU5DVElPTiBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKFFM YXRpbjFTdHJpbmcgc3RyaW5nLCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CistICAgIFFf UkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFfREVDTF9QVVJFX0ZVTkNUSU9O IFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmcoUVN0cmluZ1ZpZXcgc3RyaW5nLCBpbnQgKnN1ZmZp eEluZGV4ID0gbnVsbHB0cik7CisrICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQg c3RhdGljIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmcoUUxhdGluMVN0cmluZyBzdHJpbmcsIGlu dCAqc3VmZml4SW5kZXggPSBudWxscHRyKTsKKysgICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JF X0VYUE9SVCBzdGF0aWMgUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhRU3RyaW5nVmlldyBzdHJp bmcsIGludCAqc3VmZml4SW5kZXggPSBudWxscHRyKTsKKyAKKyBwcml2YXRlOgorICNpZm5kZWYg UVRfTk9fREFUQVNUUkVBTQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVn cmF0b3IuY3BwIGIvcXRiYXNlL3NyYy9kYnVzL3FkYnVzaW50ZWdyYXRvci5jcHAKK2luZGV4IDVi NjZjZTk3MWIuLjI4YTNiMGZmZWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2RidXMvcWRidXNp bnRlZ3JhdG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9kYnVzL3FkYnVzaW50ZWdyYXRvci5jcHAK K0BAIC0xMTM1LDcgKzExMzUsMTMgQEAgdm9pZCBRREJ1c0Nvbm5lY3Rpb25Qcml2YXRlOjpjbG9z ZUNvbm5lY3Rpb24oKQorICAgICAgICAgfQorICAgICB9CisgCistICAgIHFEZWxldGVBbGwocGVu ZGluZ0NhbGxzKTsKKysgICAgZm9yIChhdXRvIGl0ID0gcGVuZGluZ0NhbGxzLmJlZ2luKCk7IGl0 ICE9IHBlbmRpbmdDYWxscy5lbmQoKTsgKytpdCkgeworKyAgICAgICAgYXV0byBjYWxsID0gKml0 OworKyAgICAgICAgaWYgKCFjYWxsLT5yZWYuZGVyZWYoKSkgeworKyAgICAgICAgICAgIGRlbGV0 ZSBjYWxsOworKyAgICAgICAgfQorKyAgICB9CisrICAgIHBlbmRpbmdDYWxscy5jbGVhcigpOwor IAorICAgICAvLyBEaXNjb25uZWN0IGFsbCBzaWduYWxzIGZyb20gc2lnbmFsIGhvb2tzIGFuZCBm cm9tIHRoZSBvYmplY3QgdHJlZSB0bworICAgICAvLyBhdm9pZCBRT2JqZWN0OjpkZXN0cm95ZWQg YmVpbmcgc2VudCB0byBkYnVzIGRhZW1vbiB0aHJlYWQgd2hpY2ggaGFzCitAQCAtMjU4NCw2ICsy NTkwLDExIEBAIFFEQnVzQ29ubmVjdGlvblByaXZhdGU6OmZpbmRNZXRhT2JqZWN0KGNvbnN0IFFT dHJpbmcgJnNlcnZpY2UsIGNvbnN0IFFTdHJpbmcgJnBhCisgICAgICAgICBpZiAobW8pCisgICAg ICAgICAgICAgcmV0dXJuIG1vOworICAgICB9CisrICAgIGlmIChwYXRoLmlzRW1wdHkoKSkgewor KyAgICAgICAgZXJyb3IgPSBRREJ1c0Vycm9yKFFEQnVzRXJyb3I6OkludmFsaWRPYmplY3RQYXRo LCBRTGF0aW4xU3RyaW5nKCJPYmplY3QgcGF0aCBjYW5ub3QgYmUgZW1wdHkiKSk7CisrICAgICAg ICBsYXN0RXJyb3IgPSBlcnJvcjsKKysgICAgICAgIHJldHVybiBudWxscHRyOworKyAgICB9Cisg CisgICAgIC8vIGludHJvc3BlY3QgdGhlIHRhcmdldCBvYmplY3QKKyAgICAgUURCdXNNZXNzYWdl IG1zZyA9IFFEQnVzTWVzc2FnZTo6Y3JlYXRlTWV0aG9kQ2FsbChzZXJ2aWNlLCBwYXRoLAorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c21ldGFvYmplY3QuY3BwIGIvcXRiYXNlL3Ny Yy9kYnVzL3FkYnVzbWV0YW9iamVjdC5jcHAKK2luZGV4IDUyNjU1NjhmNDIuLjdlOWYwZjFhY2Mg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2RidXMvcWRidXNtZXRhb2JqZWN0LmNwcAorKysrIGIv cXRiYXNlL3NyYy9kYnVzL3FkYnVzbWV0YW9iamVjdC5jcHAKK0BAIC0yMTAsNiArMjEwLDkgQEAg UURCdXNNZXRhT2JqZWN0R2VuZXJhdG9yOjpmaW5kVHlwZShjb25zdCBRQnl0ZUFycmF5ICZzaWdu YXR1cmUsCisgICAgICAgICB9IGVsc2UgaWYgKHNpZ25hdHVyZSA9PSAiYXtzc30iKSB7CisgICAg ICAgICAgICAgcmVzdWx0Lm5hbWUgPSAiUU1hcDxRU3RyaW5nLFFTdHJpbmc+IjsKKyAgICAgICAg ICAgICB0eXBlID0gcU1ldGFUeXBlSWQ8UU1hcDxRU3RyaW5nLCBRU3RyaW5nPiA+KCk7CisrICAg ICAgICB9IGVsc2UgaWYgKHNpZ25hdHVyZSA9PSAiYWF5IikgeworKyAgICAgICAgICAgIHJlc3Vs dC5uYW1lID0gIlFCeXRlQXJyYXlMaXN0IjsKKysgICAgICAgICAgICB0eXBlID0gcU1ldGFUeXBl SWQ8UUJ5dGVBcnJheUxpc3Q+KCk7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIHJl c3VsdC5uYW1lID0gIntELUJ1cyB0eXBlIFwiIiArIHNpZ25hdHVyZSArICJcIn0iOworICAgICAg ICAgICAgIHR5cGUgPSByZWdpc3RlckNvbXBsZXhEQnVzVHlwZShyZXN1bHQubmFtZSk7CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvYWNjZXNzaWJsZS9xYWNjZXNzaWJsZS5jcHAgYi9xdGJh c2Uvc3JjL2d1aS9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlLmNwcAoraW5kZXggZDcwNWJmY2NiNS4u MGNhZjNjODA4YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2FjY2Vzc2libGUvcWFjY2Vz c2libGUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlLmNw cAorQEAgLTU0LDYgKzU0LDcgQEAKKyAjaW5jbHVkZSA8UXRDb3JlL3FkZWJ1Zy5oPgorICNpbmNs dWRlIDxRdENvcmUvcWxvZ2dpbmdjYXRlZ29yeS5oPgorICNpbmNsdWRlIDxRdENvcmUvcW1ldGFv YmplY3QuaD4KKysjaW5jbHVkZSA8UXRDb3JlL3ByaXZhdGUvcW1ldGFvYmplY3RfcC5oPgorICNp bmNsdWRlIDxRdENvcmUvcWhhc2guaD4KKyAjaW5jbHVkZSA8cHJpdmF0ZS9xZmFjdG9yeWxvYWRl cl9wLmg+CisgCitAQCAtNjgxLDYgKzY4MiwyNSBAQCBRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFj Y2Vzc2libGU6OnF1ZXJ5QWNjZXNzaWJsZUludGVyZmFjZShRT2JqZWN0ICpvYmplY3QpCisgICAg IC8vIENyZWF0ZSBhIFFBY2Nlc3NpYmxlSW50ZXJmYWNlIGZvciB0aGUgb2JqZWN0IGNsYXNzLiBT dGFydCBieSB0aGUgbW9zdAorICAgICAvLyBkZXJpdmVkIGNsYXNzIGFuZCB3YWxrIHVwIHRoZSBj bGFzcyBoaWVyYXJjaHkuCisgICAgIGNvbnN0IFFNZXRhT2JqZWN0ICptbyA9IG9iamVjdC0+bWV0 YU9iamVjdCgpOworKyAgICBjb25zdCBhdXRvICpvYmplY3RQcml2ID0gUU9iamVjdFByaXZhdGU6 OmdldChvYmplY3QpOworKyAgICAvKgorKyAgICAgV2UgZG8gbm90IHdhbnQgdG8gY2FjaGUgZWFj aCBhbmQgZXZlcnkgUU1MIG1ldGFvYmplY3QgKEJ1dHRvbl9RTUxUWVBFXzEyNCwKKysgICAgIEJ1 dHRvbl9RTUxUWVBFXzEyNSwgZXRjLikuIFRob3NlIGR5bmFtaWMgbWV0YW9iamVjdHMgc2hvdWxk bid0IGhhdmUgYW4KKysgICAgIGFjY2Vzc2libGUgaW50ZXJmYWNlIGluIGFueSBjYXNlLiBJbnN0 ZWFkLCB3ZSBzdGFydCB0aGUgd2hvbGUgY2hlY2tpbmcKKysgICAgIHdpdGggdGhlIGZpcnN0IG5v bi1keW5hbWljIG1ldGEtb2JqZWN0LiBUbyBhdm9pZCBwb3RlbnRpYWwgcmVncmVzc2lvbnMKKysg ICAgIGluIG90aGVyIGFyZWFzIG9mIFF0IHRoYXQgYWxzbyB1c2UgZHluYW1pYyBtZXRhb2JqZWN0 cywgd2Ugb25seSBkbyB0aGlzCisrICAgICBmb3Igb2JqZWN0cyB0aGF0IGFyZSBRTUwtcmVsYXRl ZCAoYXBwcm94aW1hdGVkIGJ5IGNoZWNraW5nIHdoZXRoZXIgdGhleQorKyAgICAgaGF2ZSBkZGF0 YSBzZXQpLgorKyAgICAqLworKyAgICBjb25zdCBib29sIHFtbFJlbGF0ZWQgPSAhb2JqZWN0UHJp di0+aXNEZWxldGluZ0NoaWxkcmVuICYmCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9i amVjdFByaXYtPmRlY2xhcmF0aXZlRGF0YTsKKysgICAgd2hpbGUgKHFtbFJlbGF0ZWQgJiYgbW8p IHsKKysgICAgICAgIGF1dG8gbW9wID0gUU1ldGFPYmplY3RQcml2YXRlOjpnZXQobW8pOworKyAg ICAgICAgaWYgKCFtb3AgfHwgIShtb3AtPmZsYWdzICYgRHluYW1pY01ldGFPYmplY3QpKQorKyAg ICAgICAgICAgIGJyZWFrOworKworKyAgICAgICAgbW8gPSBtby0+c3VwZXJDbGFzcygpOworKyAg ICB9OworICAgICB3aGlsZSAobW8pIHsKKyAgICAgICAgIGNvbnN0IFFTdHJpbmcgY24gPSBRTGF0 aW4xU3RyaW5nKG1vLT5jbGFzc05hbWUoKSk7CisgCitAQCAtNjk2LDE0ICs3MTYsMTUgQEAgUUFj Y2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2Uo UU9iamVjdCAqb2JqZWN0KQorICAgICAgICAgLy8gRmluZCBhIFFBY2Nlc3NpYmxlUGx1Z2luIChm YWN0b3J5KSBmb3IgdGhlIGNsYXNzIG5hbWUuIElmIHRoZXJlJ3MKKyAgICAgICAgIC8vIG5vIGVu dHJ5IGluIHRoZSBjYWNoZSB0cnkgdG8gY3JlYXRlIGl0IHVzaW5nIHRoZSBwbHVnaW4gbG9hZGVy LgorICAgICAgICAgaWYgKCFxQWNjZXNzaWJsZVBsdWdpbnMoKS0+Y29udGFpbnMoY24pKSB7Cisr ICAgICAgICAgICAgUUFjY2Vzc2libGVQbHVnaW4gKmZhY3RvcnkgPSBudWxscHRyOyAvLyAwIG1l YW5zICJubyBwbHVnaW4gZm91bmQiLiBUaGlzIGlzIGNhY2hlZCBhcyB3ZWxsLgorICAgICAgICAg ICAgIGNvbnN0IGludCBpbmRleCA9IGxvYWRlcigpLT5pbmRleE9mKGNuKTsKKy0gICAgICAgICAg ICBpZiAoaW5kZXggIT0gLTEpIHsKKy0gICAgICAgICAgICAgICAgUUFjY2Vzc2libGVQbHVnaW4g KmZhY3RvcnkgPSBxb2JqZWN0X2Nhc3Q8UUFjY2Vzc2libGVQbHVnaW4gKj4obG9hZGVyKCktPmlu c3RhbmNlKGluZGV4KSk7CistICAgICAgICAgICAgICAgIHFBY2Nlc3NpYmxlUGx1Z2lucygpLT5p bnNlcnQoY24sIGZhY3RvcnkpOworLSAgICAgICAgICAgIH0KKysgICAgICAgICAgICBpZiAoaW5k ZXggIT0gLTEpCisrICAgICAgICAgICAgICAgIGZhY3RvcnkgPSBxb2JqZWN0X2Nhc3Q8UUFjY2Vz c2libGVQbHVnaW4gKj4obG9hZGVyKCktPmluc3RhbmNlKGluZGV4KSk7CisrICAgICAgICAgICAg cUFjY2Vzc2libGVQbHVnaW5zKCktPmluc2VydChjbiwgZmFjdG9yeSk7CisgICAgICAgICB9Cisg CisgICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBjYWNoZSBzaG91bGQgY29udGFpbiBhIHZh bGlkIGZhY3RvcnkgcG9pbnRlciBvciAwOgorKyAgICAgICAgUV9BU1NFUlQocUFjY2Vzc2libGVQ bHVnaW5zKCktPmNvbnRhaW5zKGNuKSk7CisgICAgICAgICBRQWNjZXNzaWJsZVBsdWdpbiAqZmFj dG9yeSA9IHFBY2Nlc3NpYmxlUGx1Z2lucygpLT52YWx1ZShjbik7CisgICAgICAgICBpZiAoZmFj dG9yeSkgeworICAgICAgICAgICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpyZXN1bHQgPSBmYWN0 b3J5LT5jcmVhdGUoY24sIG9iamVjdCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvY29u ZmlndXJlLmpzb24gYi9xdGJhc2Uvc3JjL2d1aS9jb25maWd1cmUuanNvbgoraW5kZXggMWYwODc5 NWM1Ny4uMTJjOTU3NDJkMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2NvbmZpZ3VyZS5q c29uCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9jb25maWd1cmUuanNvbgorQEAgLTgzNCw3ICs4MzQs OCBAQAorICAgICAgICAgICAgICAgICAgICAgIi8vIGVtYmVkZGVkIGRldmljZXMsIGFyZSBub3Qg aW50ZW5kZWQgdG8gYmUgdXNlZCB0b2dldGhlciB3aXRoIFguIEVHTCBzdXBwb3J0IiwKKyAgICAg ICAgICAgICAgICAgICAgICIvLyBoYXMgdG8gYmUgZGlzYWJsZWQgaW4gcGx1Z2lucyBsaWtlIHhj YiBpbiB0aGlzIGNhc2Ugc2luY2UgdGhlIG5hdGl2ZSBkaXNwbGF5LCIsCisgICAgICAgICAgICAg ICAgICAgICAiLy8gd2luZG93IGFuZCBwaXhtYXAgdHlwZXMgd2lsbCBiZSBkaWZmZXJlbnQgdGhh biB3aGF0IGFuIFgtYmFzZWQgcGxhdGZvcm0iLAorLSAgICAgICAgICAgICAgICAgICAgIi8vIHBs dWdpbiB3b3VsZCBleHBlY3QuIgorKyAgICAgICAgICAgICAgICAgICAgIi8vIHBsdWdpbiB3b3Vs ZCBleHBlY3QuIiwKKysgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIFVTRV9YMTEiCisgICAg ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICJpbmNsdWRlIjogWyAiRUdML2VnbC5o IiwgIlgxMS9YbGliLmgiIF0sCisgICAgICAgICAgICAgICAgICJtYWluIjogWworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FibXBoYW5kbGVyLmNwcCBiL3F0YmFzZS9zcmMvZ3Vp L2ltYWdlL3FibXBoYW5kbGVyLmNwcAoraW5kZXggOTZmMWU4Y2IxZC4uMGU3M2JiYmRiMCAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FibXBoYW5kbGVyLmNwcAorKysrIGIvcXRi YXNlL3NyYy9ndWkvaW1hZ2UvcWJtcGhhbmRsZXIuY3BwCitAQCAtMTUwLDE2ICsxNTAsNDIgQEAg c3RhdGljIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBf SU5GT0hEUiAmYmkpCisgICAgIHJldHVybiBzOworIH0KKyAKKy1zdGF0aWMgaW50IGNhbGNfc2hp ZnQodWludCBtYXNrKQorK3N0YXRpYyB1aW50IGNhbGNfc2hpZnQodWludCBtYXNrKQorIHsKKy0g ICAgaW50IHJlc3VsdCA9IDA7CistICAgIHdoaWxlIChtYXNrICYmICEobWFzayAmIDEpKSB7Cisr ICAgIHVpbnQgcmVzdWx0ID0gMDsKKysgICAgd2hpbGUgKChtYXNrID49IDB4MTAwKSB8fCAoISht YXNrICYgMSkgJiYgbWFzaykpIHsKKyAgICAgICAgIHJlc3VsdCsrOworICAgICAgICAgbWFzayA+ Pj0gMTsKKyAgICAgfQorICAgICByZXR1cm4gcmVzdWx0OworIH0KKyAKKytzdGF0aWMgdWludCBj YWxjX3NjYWxlKHVpbnQgbG93X21hc2spCisreworKyAgICB1aW50IHJlc3VsdCA9IDg7CisrICAg IHdoaWxlIChsb3dfbWFzayAmJiByZXN1bHQpIHsKKysgICAgICAgIHJlc3VsdC0tOworKyAgICAg ICAgbG93X21hc2sgPj49IDE7CisrICAgIH0KKysgICAgcmV0dXJuIHJlc3VsdDsKKyt9CisrCisr c3RhdGljIGlubGluZSB1aW50IGFwcGx5X3NjYWxlKHVpbnQgdmFsdWUsIHVpbnQgc2NhbGUpCisr eworKyAgICBpZiAoIShzY2FsZSAmIDB4MDcpKSAvLyByZXR1cm4gaW1tZWRpYXRlbHkgaWYgc2Nh bGUgPT0gOCBvciAwCisrICAgICAgICByZXR1cm4gdmFsdWU7CisrCisrICAgIHVpbnQgZmlsbGVk ID0gOCAtIHNjYWxlOworKyAgICB1aW50IHJlc3VsdCA9IHZhbHVlIDw8IHNjYWxlOworKworKyAg ICBkbyB7CisrICAgICAgICByZXN1bHQgfD0gcmVzdWx0ID4+IGZpbGxlZDsKKysgICAgICAgIGZp bGxlZCA8PD0gMTsKKysgICAgfSB3aGlsZSAoZmlsbGVkIDwgOCk7CisrCisrICAgIHJldHVybiBy ZXN1bHQ7CisrfQorKworIHN0YXRpYyBib29sIHJlYWRfZGliX2ZpbGVoZWFkZXIoUURhdGFTdHJl YW0gJnMsIEJNUF9GSUxFSERSICZiZikKKyB7CisgICAgIC8vIHJlYWQgQk1QIGZpbGUgaGVhZGVy CitAQCAtMjIyLDE0ICsyNDgsMTQgQEAgc3RhdGljIGJvb2wgcmVhZF9kaWJfYm9keShRRGF0YVN0 cmVhbSAmcywgY29uc3QgQk1QX0lORk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0LAorICAgICB1aW50 IGdyZWVuX21hc2sgPSAwOworICAgICB1aW50IGJsdWVfbWFzayA9IDA7CisgICAgIHVpbnQgYWxw aGFfbWFzayA9IDA7CistICAgIGludCByZWRfc2hpZnQgPSAwOworLSAgICBpbnQgZ3JlZW5fc2hp ZnQgPSAwOworLSAgICBpbnQgYmx1ZV9zaGlmdCA9IDA7CistICAgIGludCBhbHBoYV9zaGlmdCA9 IDA7CistICAgIGludCByZWRfc2NhbGUgPSAwOworLSAgICBpbnQgZ3JlZW5fc2NhbGUgPSAwOwor LSAgICBpbnQgYmx1ZV9zY2FsZSA9IDA7CistICAgIGludCBhbHBoYV9zY2FsZSA9IDA7CisrICAg IHVpbnQgcmVkX3NoaWZ0ID0gMDsKKysgICAgdWludCBncmVlbl9zaGlmdCA9IDA7CisrICAgIHVp bnQgYmx1ZV9zaGlmdCA9IDA7CisrICAgIHVpbnQgYWxwaGFfc2hpZnQgPSAwOworKyAgICB1aW50 IHJlZF9zY2FsZSA9IDA7CisrICAgIHVpbnQgZ3JlZW5fc2NhbGUgPSAwOworKyAgICB1aW50IGJs dWVfc2NhbGUgPSAwOworKyAgICB1aW50IGFscGhhX3NjYWxlID0gMDsKKyAKKyAgICAgaWYgKCFk LT5pc1NlcXVlbnRpYWwoKSkKKyAgICAgICAgIGQtPnNlZWsoc3RhcnRwb3MgKyBCTVBfRklMRUhE Ul9TSVpFICsgYmkuYmlTaXplKTsgLy8gZ290byBzdGFydCBvZiBjb2xvcm1hcCBvciBtYXNrcwor QEAgLTMwOCwxOSArMzM0LDE5IEBAIHN0YXRpYyBib29sIHJlYWRfZGliX2JvZHkoUURhdGFTdHJl YW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSwgcWludDY0IG9mZnNldCwKKyAgICAgICAgIHJl ZF9zaGlmdCA9IGNhbGNfc2hpZnQocmVkX21hc2spOworICAgICAgICAgaWYgKCgocmVkX21hc2sg Pj4gcmVkX3NoaWZ0KSArIDEpID09IDApCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAg ICAgICAgcmVkX3NjYWxlID0gMjU2IC8gKChyZWRfbWFzayA+PiByZWRfc2hpZnQpICsgMSk7Cisr ICAgICAgICByZWRfc2NhbGUgPSBjYWxjX3NjYWxlKHJlZF9tYXNrID4+IHJlZF9zaGlmdCk7Cisg ICAgICAgICBncmVlbl9zaGlmdCA9IGNhbGNfc2hpZnQoZ3JlZW5fbWFzayk7CisgICAgICAgICBp ZiAoKChncmVlbl9tYXNrID4+IGdyZWVuX3NoaWZ0KSArIDEpID09IDApCisgICAgICAgICAgICAg cmV0dXJuIGZhbHNlOworLSAgICAgICAgZ3JlZW5fc2NhbGUgPSAyNTYgLyAoKGdyZWVuX21hc2sg Pj4gZ3JlZW5fc2hpZnQpICsgMSk7CisrICAgICAgICBncmVlbl9zY2FsZSA9IGNhbGNfc2NhbGUo Z3JlZW5fbWFzayA+PiBncmVlbl9zaGlmdCk7CisgICAgICAgICBibHVlX3NoaWZ0ID0gY2FsY19z aGlmdChibHVlX21hc2spOworICAgICAgICAgaWYgKCgoYmx1ZV9tYXNrID4+IGJsdWVfc2hpZnQp ICsgMSkgPT0gMCkKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CistICAgICAgICBibHVlX3Nj YWxlID0gMjU2IC8gKChibHVlX21hc2sgPj4gYmx1ZV9zaGlmdCkgKyAxKTsKKysgICAgICAgIGJs dWVfc2NhbGUgPSBjYWxjX3NjYWxlKGJsdWVfbWFzayA+PiBibHVlX3NoaWZ0KTsKKyAgICAgICAg IGFscGhhX3NoaWZ0ID0gY2FsY19zaGlmdChhbHBoYV9tYXNrKTsKKyAgICAgICAgIGlmICgoKGFs cGhhX21hc2sgPj4gYWxwaGFfc2hpZnQpICsgMSkgPT0gMCkKKyAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7CistICAgICAgICBhbHBoYV9zY2FsZSA9IDI1NiAvICgoYWxwaGFfbWFzayA+PiBhbHBo YV9zaGlmdCkgKyAxKTsKKysgICAgICAgIGFscGhhX3NjYWxlID0gY2FsY19zY2FsZShhbHBoYV9t YXNrID4+IGFscGhhX3NoaWZ0KTsKKyAgICAgfSBlbHNlIGlmIChjb21wID09IEJNUF9SR0IgJiYg KG5iaXRzID09IDI0IHx8IG5iaXRzID09IDMyKSkgeworICAgICAgICAgYmx1ZV9tYXNrID0gMHgw MDAwMDBmZjsKKyAgICAgICAgIGdyZWVuX21hc2sgPSAweDAwMDBmZjAwOworQEAgLTMyOCwxNyAr MzU0LDE1IEBAIHN0YXRpYyBib29sIHJlYWRfZGliX2JvZHkoUURhdGFTdHJlYW0gJnMsIGNvbnN0 IEJNUF9JTkZPSERSICZiaSwgcWludDY0IG9mZnNldCwKKyAgICAgICAgIGJsdWVfc2hpZnQgPSAw OworICAgICAgICAgZ3JlZW5fc2hpZnQgPSA4OworICAgICAgICAgcmVkX3NoaWZ0ID0gMTY7Cist ICAgICAgICBibHVlX3NjYWxlID0gZ3JlZW5fc2NhbGUgPSByZWRfc2NhbGUgPSAxOworKyAgICAg ICAgYmx1ZV9zY2FsZSA9IGdyZWVuX3NjYWxlID0gcmVkX3NjYWxlID0gMDsKKyAgICAgfSBlbHNl IGlmIChjb21wID09IEJNUF9SR0IgJiYgbmJpdHMgPT0gMTYpIHsKKyAgICAgICAgIGJsdWVfbWFz ayA9IDB4MDAxZjsKKyAgICAgICAgIGdyZWVuX21hc2sgPSAweDAzZTA7CisgICAgICAgICByZWRf bWFzayA9IDB4N2MwMDsKKyAgICAgICAgIGJsdWVfc2hpZnQgPSAwOworLSAgICAgICAgZ3JlZW5f c2hpZnQgPSAyOworLSAgICAgICAgcmVkX3NoaWZ0ID0gNzsKKy0gICAgICAgIHJlZF9zY2FsZSA9 IDE7CistICAgICAgICBncmVlbl9zY2FsZSA9IDE7CistICAgICAgICBibHVlX3NjYWxlID0gODsK KysgICAgICAgIGdyZWVuX3NoaWZ0ID0gNTsKKysgICAgICAgIHJlZF9zaGlmdCA9IDEwOworKyAg ICAgICAgYmx1ZV9zY2FsZSA9IGdyZWVuX3NjYWxlID0gcmVkX3NjYWxlID0gMzsKKyAgICAgfQor IAorICNpZiAwCitAQCAtNTQ0LDEwICs1NjgsMTAgQEAgc3RhdGljIGJvb2wgcmVhZF9kaWJfYm9k eShRRGF0YVN0cmVhbSAmcywgY29uc3QgQk1QX0lORk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0LAor ICAgICAgICAgICAgICAgICAgICAgYyB8PSAqKHVjaGFyKikoYisyKTw8MTY7CisgICAgICAgICAg ICAgICAgIGlmIChuYml0cyA+IDI0KQorICAgICAgICAgICAgICAgICAgICAgYyB8PSAqKHVjaGFy KikoYiszKTw8MjQ7CistICAgICAgICAgICAgICAgICpwKysgPSBxUmdiYSgoKGMgJiByZWRfbWFz aykgPj4gcmVkX3NoaWZ0KSAqIHJlZF9zY2FsZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKChjICYgZ3JlZW5fbWFzaykgPj4gZ3JlZW5fc2hpZnQpICogZ3JlZW5f c2NhbGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYyAmIGJs dWVfbWFzaykgPj4gYmx1ZV9zaGlmdCkgKiBibHVlX3NjYWxlLAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3AgPyAoKGMgJiBhbHBoYV9tYXNrKSA+PiBhbHBo YV9zaGlmdCkgKiBhbHBoYV9zY2FsZSA6IDB4ZmYpOworKyAgICAgICAgICAgICAgICAqcCsrID0g cVJnYmEoYXBwbHlfc2NhbGUoKGMgJiByZWRfbWFzaykgPj4gcmVkX3NoaWZ0LCByZWRfc2NhbGUp LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHlfc2NhbGUoKGMgJiBncmVlbl9t YXNrKSA+PiBncmVlbl9zaGlmdCwgZ3JlZW5fc2NhbGUpLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYXBwbHlfc2NhbGUoKGMgJiBibHVlX21hc2spID4+IGJsdWVfc2hpZnQsIGJsdWVf c2NhbGUpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwID8gYXBwbHlfc2Nh bGUoKGMgJiBhbHBoYV9tYXNrKSA+PiBhbHBoYV9zaGlmdCwgYWxwaGFfc2NhbGUpIDogMHhmZik7 CisgICAgICAgICAgICAgICAgIGIgKz0gbmJpdHMvODsKKyAgICAgICAgICAgICB9CisgICAgICAg ICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWltYWdlLmNwcCBiL3F0YmFz ZS9zcmMvZ3VpL2ltYWdlL3FpbWFnZS5jcHAKK2luZGV4IDcxNTJhYzE2MDcuLjBkZjc3MjU2NGMg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xaW1hZ2UuY3BwCisrKysgYi9xdGJh c2Uvc3JjL2d1aS9pbWFnZS9xaW1hZ2UuY3BwCitAQCAtNDY5NCw2ICs0Njk0LDggQEAgUUltYWdl IFFJbWFnZTo6c21vb3RoU2NhbGVkKGludCB3LCBpbnQgaCkgY29uc3QgeworIHN0YXRpYyBRSW1h Z2Ugcm90YXRlZDkwKGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisgeworICAgICBRSW1hZ2Ugb3V0KGlt YWdlLmhlaWdodCgpLCBpbWFnZS53aWR0aCgpLCBpbWFnZS5mb3JtYXQoKSk7CisrICAgIGlmIChv dXQuaXNOdWxsKCkpCisrICAgICAgICByZXR1cm4gb3V0OworICAgICBjb3B5TWV0YWRhdGEoJm91 dCwgaW1hZ2UpOworICAgICBpZiAoaW1hZ2UuY29sb3JDb3VudCgpID4gMCkKKyAgICAgICAgIG91 dC5zZXRDb2xvclRhYmxlKGltYWdlLmNvbG9yVGFibGUoKSk7CitAQCAtNDcyMiw2ICs0NzI0LDgg QEAgc3RhdGljIFFJbWFnZSByb3RhdGVkMTgwKGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisgICAgICAg ICByZXR1cm4gaW1hZ2UubWlycm9yZWQodHJ1ZSwgdHJ1ZSk7CisgCisgICAgIFFJbWFnZSBvdXQo aW1hZ2Uud2lkdGgoKSwgaW1hZ2UuaGVpZ2h0KCksIGltYWdlLmZvcm1hdCgpKTsKKysgICAgaWYg KG91dC5pc051bGwoKSkKKysgICAgICAgIHJldHVybiBvdXQ7CisgICAgIGNvcHlNZXRhZGF0YSgm b3V0LCBpbWFnZSk7CisgICAgIGlmIChpbWFnZS5jb2xvckNvdW50KCkgPiAwKQorICAgICAgICAg b3V0LnNldENvbG9yVGFibGUoaW1hZ2UuY29sb3JUYWJsZSgpKTsKK0BAIC00NzM0LDYgKzQ3Mzgs OCBAQCBzdGF0aWMgUUltYWdlIHJvdGF0ZWQxODAoY29uc3QgUUltYWdlICZpbWFnZSkKKyBzdGF0 aWMgUUltYWdlIHJvdGF0ZWQyNzAoY29uc3QgUUltYWdlICZpbWFnZSkKKyB7CisgICAgIFFJbWFn ZSBvdXQoaW1hZ2UuaGVpZ2h0KCksIGltYWdlLndpZHRoKCksIGltYWdlLmZvcm1hdCgpKTsKKysg ICAgaWYgKG91dC5pc051bGwoKSkKKysgICAgICAgIHJldHVybiBvdXQ7CisgICAgIGNvcHlNZXRh ZGF0YSgmb3V0LCBpbWFnZSk7CisgICAgIGlmIChpbWFnZS5jb2xvckNvdW50KCkgPiAwKQorICAg ICAgICAgb3V0LnNldENvbG9yVGFibGUoaW1hZ2UuY29sb3JUYWJsZSgpKTsKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWN1cnNvci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJu ZWwvcWN1cnNvci5jcHAKK2luZGV4IGQ2Y2NhZmY4ZWQuLjQ1NTA4ODI0MWMgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWN1cnNvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3Vp L2tlcm5lbC9xY3Vyc29yLmNwcAorQEAgLTI1MSw3ICsyNTEsOCBAQCB2b2lkIFFDdXJzb3I6OnNl dFBvcyhRU2NyZWVuICpzY3JlZW4sIGludCB4LCBpbnQgeSkKKyB7CisgICAgIGlmIChzY3JlZW4p IHsKKyAgICAgICAgIGlmIChRUGxhdGZvcm1DdXJzb3IgKmN1cnNvciA9IHNjcmVlbi0+aGFuZGxl KCktPmN1cnNvcigpKSB7CistICAgICAgICAgICAgY29uc3QgUVBvaW50IGRldmljZVBvcyA9IFFI aWdoRHBpOjp0b05hdGl2ZVBpeGVscyhRUG9pbnQoeCwgeSksIHNjcmVlbik7CisrICAgICAgICAg ICAgY29uc3QgUVBvaW50IHBvcyh4LCB5KTsKKysgICAgICAgICAgICBjb25zdCBRUG9pbnQgZGV2 aWNlUG9zID0gUUhpZ2hEcGk6OnRvTmF0aXZlUGl4ZWxzKHBvcywgc2NyZWVuLT52aXJ0dWFsU2li bGluZ0F0KHBvcykpOworICAgICAgICAgICAgIC8vIE5lZWQgdG8gY2hlY2ssIHNpbmNlIHNvbWUg WCBzZXJ2ZXJzIGdlbmVyYXRlIG51bGwgbW91c2UgbW92ZQorICAgICAgICAgICAgIC8vIGV2ZW50 cywgY2F1c2luZyBsb29waW5nIGluIGFwcGxpY2F0aW9ucyB3aGljaCBjYWxsIHNldFBvcygpIG9u CisgICAgICAgICAgICAgLy8gZXZlcnkgbW91c2UgbW92ZSBldmVudC4KK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWhpZ2hkcGlzY2FsaW5nLmNwcCBiL3F0YmFzZS9zcmMvZ3Vp L2tlcm5lbC9xaGlnaGRwaXNjYWxpbmcuY3BwCitpbmRleCA5YmJmMjc3M2E5Li4zYWM0YTRkOGI2 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FoaWdoZHBpc2NhbGluZy5jcHAK KysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xaGlnaGRwaXNjYWxpbmcuY3BwCitAQCAtNTgw LDkgKzU4MCw4IEBAIHZvaWQgUUhpZ2hEcGlTY2FsaW5nOjpzZXRTY3JlZW5GYWN0b3IoUVNjcmVl biAqc2NyZWVuLCBxcmVhbCBmYWN0b3IpCisgICAgIGVsc2UKKyAgICAgICAgIHFOYW1lZFNjcmVl blNjYWxlRmFjdG9ycygpLT5pbnNlcnQobmFtZSwgZmFjdG9yKTsKKyAKKy0gICAgLy8gaGFjayB0 byBmb3JjZSByZS1ldmFsdWF0aW9uIG9mIHNjcmVlbiBnZW9tZXRyeQorICAgICBpZiAoc2NyZWVu LT5oYW5kbGUoKSkKKy0gICAgICAgIHNjcmVlbi0+ZF9mdW5jKCktPnNldFBsYXRmb3JtU2NyZWVu KHNjcmVlbi0+aGFuZGxlKCkpOyAvLyB1cGRhdGVzIGdlb21ldHJpZXMgYmFzZWQgb24gc2NhbGUg ZmFjdG9yCisrICAgICAgICBzY3JlZW4tPmRfZnVuYygpLT51cGRhdGVMb2dpY2FsRHBpKCk7Cisg fQorIAorIFFQb2ludCBRSGlnaERwaVNjYWxpbmc6Om1hcFBvc2l0aW9uVG9OYXRpdmUoY29uc3Qg UVBvaW50ICZwb3MsIGNvbnN0IFFQbGF0Zm9ybVNjcmVlbiAqcGxhdGZvcm1TY3JlZW4pCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS5jcHAgYi9xdGJhc2Uv c3JjL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlLmNwcAoraW5kZXggYTc1YjhlZjkyMC4uNGYyZDI5 NDczOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlLmNwcAorQEAgLTcwMSw2 ICs3MDEsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB7CisgICAgIHsgUXQ6OktleV9Ub3VjaHBh ZFRvZ2dsZSwgIFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAiVG91Y2hwYWQgVG9nZ2xl IikgfSwKKyAgICAgeyBRdDo6S2V5X1RvdWNocGFkT24sICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNo b3J0Y3V0IiwgIlRvdWNocGFkIE9uIikgfSwKKyAgICAgeyBRdDo6S2V5X1RvdWNocGFkT2ZmLCAg UVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJUb3VjaHBhZCBPZmYiKSB9LAorKyAgICB7 IFF0OjpLZXlfU2hpZnQsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIlNoaWZ0Iikg fSwKKysgICAgeyBRdDo6S2V5X0NvbnRyb2wsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0 IiwgIkNvbnRyb2wiKSB9LAorKyAgICB7IFF0OjpLZXlfQWx0LCAgUVRfVFJBTlNMQVRFX05PT1Ao IlFTaG9ydGN1dCIsICJBbHQiKSB9LAorKyAgICB7IFF0OjpLZXlfTWV0YSwgIFFUX1RSQU5TTEFU RV9OT09QKCJRU2hvcnRjdXQiLCAiTWV0YSIpIH0sCisgCisgfTsKKyBzdGF0aWMgUV9DT05TVEVY UFIgaW50IG51bUtleU5hbWVzID0gc2l6ZW9mIGtleW5hbWUgLyBzaXplb2YgKmtleW5hbWU7Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmNwcCBi L3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5jcHAKK2luZGV4IGZkYzZh NmM0YWEuLmFjNDdmOThjNWQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBs YXRmb3Jtc2VydmljZXMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jt c2VydmljZXMuY3BwCitAQCAtNTUsNiArNTUsMTkgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgICAg IFxicmllZiBUaGUgUVBsYXRmb3JtU2VydmljZXMgcHJvdmlkZXMgdGhlIGJhY2tlbmQgZm9yIGRl c2t0b3AtcmVsYXRlZCBmdW5jdGlvbmFsaXR5LgorICovCisgCisrLyohCisrICAgIFxlbnVtIFFQ bGF0Zm9ybVNlcnZpY2VzOjpDYXBhYmlsaXR5CisrCisrICAgIENhcGFiaWxpdGllcyBhcmUgdXNl ZCB0byBkZXRlcm1pbmUgYSBzcGVjaWZpYyBwbGF0Zm9ybSBzZXJ2aWNlJ3MgYXZhaWxhYmlsaXR5 LgorKworKyAgICBcdmFsdWUgQ29sb3JQaWNraW5nRnJvbVNjcmVlbiBUaGUgcGxhdGZvcm0gbmF0 aXZlbHkgc3VwcG9ydHMgY29sb3IgcGlja2luZyBmcm9tIHNjcmVlbi4KKysgICAgVGhpcyBjYXBh YmlsaXR5IGluZGljYXRlcyB0aGF0IHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyAib3BhcXVlIiBjb2xv ciBwaWNraW5nLCB3aGVyZSB0aGUKKysgICAgcGxhdGZvcm0gaW1wbGVtZW50cyBhIGNvbXBsZXRl IHVzZXIgZXhwZXJpZW5jZSBmb3IgY29sb3IgcGlja2luZyBhbmQgb3V0cHV0cyBhIGNvbG9yLgor KyAgICBUaGlzIGlzIGluIGNvbnRyYXN0IHRvIHRoZSBhcHBsaWNhdGlvbiBpbXBsZW1lbnRpbmcg dGhlIGNvbG9yIHBpY2tpbmcgdXNlciBleHBlcmllbmNlCisrICAgICh0YWtpbmcgY2FyZSBvZiBz aG93aW5nIGEgY3Jvc3MgaGFpciwgaW5zdHJ1Y3RpbmcgdGhlIHBsYXRmb3JtIGludGVncmF0aW9u IHRvIG9idGFpbgorKyAgICB0aGUgY29sb3IgYXQgYSBnaXZlbiBwaXhlbCwgZXRjLikuIFRoZSBy ZWxhdGVkIHNlcnZpY2UgZnVuY3Rpb24gaXMgcGlja0NvbG9yKCkuCisrICovCisrCisgUVBsYXRm b3JtU2VydmljZXM6OlFQbGF0Zm9ybVNlcnZpY2VzKCkKKyB7IH0KKyAKK0BAIC04NSw1ICs5OCwx NiBAQCBRQnl0ZUFycmF5IFFQbGF0Zm9ybVNlcnZpY2VzOjpkZXNrdG9wRW52aXJvbm1lbnQoKSBj b25zdAorICAgICByZXR1cm4gUUJ5dGVBcnJheSgiVU5LTk9XTiIpOworIH0KKyAKKytRUGxhdGZv cm1TZXJ2aWNlQ29sb3JQaWNrZXIgKlFQbGF0Zm9ybVNlcnZpY2VzOjpjb2xvclBpY2tlcihRV2lu ZG93ICpwYXJlbnQpCisreworKyAgICBRX1VOVVNFRChwYXJlbnQpOworKyAgICByZXR1cm4gbnVs bHB0cjsKKyt9CisrCisrYm9vbCBRUGxhdGZvcm1TZXJ2aWNlczo6aGFzQ2FwYWJpbGl0eShDYXBh YmlsaXR5IGNhcGFiaWxpdHkpIGNvbnN0CisreworKyAgICBRX1VOVVNFRChjYXBhYmlsaXR5KQor KyAgICByZXR1cm4gZmFsc2U7CisrfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuaCBiL3F0YmFzZS9zcmMv Z3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5oCitpbmRleCA1ZGU5NmNmYTdkLi5hOGIyYTRj ZTcxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2Vz LmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5oCitAQCAt NTAsMTYgKzUwLDMyIEBACisgLy8KKyAKKyAjaW5jbHVkZSA8UXRHdWkvcXRndWlnbG9iYWwuaD4K KysjaW5jbHVkZSA8UXRDb3JlL3FvYmplY3QuaD4KKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAK KyBjbGFzcyBRVXJsOworK2NsYXNzIFFXaW5kb3c7CisrCisrY2xhc3MgUV9HVUlfRVhQT1JUIFFQ bGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciA6IHB1YmxpYyBRT2JqZWN0CisreworKyAgICBRX09C SkVDVAorK3B1YmxpYzoKKysgICAgdXNpbmcgUU9iamVjdDo6UU9iamVjdDsKKysgICAgdmlydHVh bCB2b2lkIHBpY2tDb2xvcigpID0gMDsKKytRX1NJR05BTFM6CisrICAgIHZvaWQgY29sb3JQaWNr ZWQoY29uc3QgUUNvbG9yICZjb2xvcik7CisrfTsKKyAKKyBjbGFzcyBRX0dVSV9FWFBPUlQgUVBs YXRmb3JtU2VydmljZXMKKyB7CisgcHVibGljOgorICAgICBRX0RJU0FCTEVfQ09QWV9NT1ZFKFFQ bGF0Zm9ybVNlcnZpY2VzKQorIAorKyAgICBlbnVtIENhcGFiaWxpdHkgeworKyAgICAgICAgQ29s b3JQaWNraW5nLAorKyAgICB9OworKworICAgICBRUGxhdGZvcm1TZXJ2aWNlcygpOworICAgICB2 aXJ0dWFsIH5RUGxhdGZvcm1TZXJ2aWNlcygpIHsgfQorIAorQEAgLTY3LDYgKzgzLDEwIEBAIHB1 YmxpYzoKKyAgICAgdmlydHVhbCBib29sIG9wZW5Eb2N1bWVudChjb25zdCBRVXJsICZ1cmwpOwor IAorICAgICB2aXJ0dWFsIFFCeXRlQXJyYXkgZGVza3RvcEVudmlyb25tZW50KCkgY29uc3Q7Cisr CisrICAgIHZpcnR1YWwgYm9vbCBoYXNDYXBhYmlsaXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0eSkg Y29uc3Q7CisrCisrICAgIHZpcnR1YWwgUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpjb2xv clBpY2tlcihRV2luZG93ICpwYXJlbnQgPSBudWxscHRyKTsKKyB9OworIAorIFFUX0VORF9OQU1F U1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUu Y3BwIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmNwcAoraW5kZXggNzE1 MjFjMDMzOS4uMjMyNTg3MzI0NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9x cGxhdGZvcm10aGVtZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10 aGVtZS5jcHAKK0BAIC0xNjMsNiArMTYzLDggQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgICAg IFx2YWx1ZSBTaG93U2hvcnRjdXRzSW5Db250ZXh0TWVudXMgKGJvb2wpIFdoZXRoZXIgdG8gZGlz cGxheSBzaG9ydGN1dCBrZXkgc2VxdWVuY2VzIGluIGNvbnRleHQgbWVudXMuCisgCisrICAgIFx2 YWx1ZSBCdXR0b25QcmVzc0tleXMgKFFMaXN0PFF0OjpLZXk+KSBBIGxpc3Qgb2Yga2V5cyB0aGF0 IGNhbiBiZSB1c2VkIHRvIHByZXNzIGJ1dHRvbnMgdmlhIGtleWJvYXJkIGlucHV0LgorKworICAg ICBcc2EgdGhlbWVIaW50KCksIFFTdHlsZTo6cGl4ZWxNZXRyaWMoKQorICovCisgCitAQCAtNTYz LDYgKzU2NSw4IEBAIFFWYXJpYW50IFFQbGF0Zm9ybVRoZW1lOjpkZWZhdWx0VGhlbWVIaW50KFRo ZW1lSGludCBoaW50KQorICAgICAgICAgfQorICAgICBjYXNlIE1vdXNlUXVpY2tTZWxlY3Rpb25U aHJlc2hvbGQ6CisgICAgICAgICByZXR1cm4gUVZhcmlhbnQoMTApOworKyAgICBjYXNlIEJ1dHRv blByZXNzS2V5czoKKysgICAgICAgIHJldHVybiBRVmFyaWFudDo6ZnJvbVZhbHVlKFFMaXN0PFF0 OjpLZXk+KHsgUXQ6OktleV9TcGFjZSwgUXQ6OktleV9TZWxlY3QgfSkpOworICAgICB9CisgICAg IHJldHVybiBRVmFyaWFudCgpOworIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJu ZWwvcXBsYXRmb3JtdGhlbWUuaCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVt ZS5oCitpbmRleCAzMTg1ZmM0NTQxLi43ZTZjOWQ1NzQwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5l bC9xcGxhdGZvcm10aGVtZS5oCitAQCAtMTIwLDcgKzEyMCw4IEBAIHB1YmxpYzoKKyAgICAgICAg IFRvdWNoRG91YmxlVGFwRGlzdGFuY2UsCisgICAgICAgICBTaG93U2hvcnRjdXRzSW5Db250ZXh0 TWVudXMsCisgICAgICAgICBJY29uRmFsbGJhY2tTZWFyY2hQYXRocywKKy0gICAgICAgIE1vdXNl UXVpY2tTZWxlY3Rpb25UaHJlc2hvbGQKKysgICAgICAgIE1vdXNlUXVpY2tTZWxlY3Rpb25UaHJl c2hvbGQsCisrICAgICAgICBCdXR0b25QcmVzc0tleXMKKyAgICAgfTsKKyAKKyAgICAgZW51bSBE aWFsb2dUeXBlIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5j cHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5jcHAKK2luZGV4IDhlMGViMzUxMTYu LjVkMTcyYTU4ZGQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5j cHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuLmNwcAorQEAgLTc3LDYgKzc3 LDEyIEBAIFFTY3JlZW46OlFTY3JlZW4oUVBsYXRmb3JtU2NyZWVuICpzY3JlZW4pCisgICAgIGQt PnNldFBsYXRmb3JtU2NyZWVuKHNjcmVlbik7CisgfQorIAorK3ZvaWQgUVNjcmVlblByaXZhdGU6 OnVwZGF0ZUxvZ2ljYWxEcGkoKQorK3sKKysgICAgbG9naWNhbERwaSA9IFFQbGF0Zm9ybVNjcmVl bjo6b3ZlcnJpZGVEcGkocGxhdGZvcm1TY3JlZW4tPmxvZ2ljYWxEcGkoKSk7CisrICAgIHVwZGF0 ZUdlb21ldHJpZXNXaXRoU2lnbmFscygpOyAvLyB1cGRhdGVzIGdlb21ldHJpZXMgYmFzZWQgb24g c2NhbGUgZmFjdG9yCisrfQorKworIHZvaWQgUVNjcmVlblByaXZhdGU6OnVwZGF0ZUdlb21ldHJp ZXNXaXRoU2lnbmFscygpCisgeworICAgICBjb25zdCBRUmVjdCBvbGRHZW9tZXRyeSA9IGdlb21l dHJ5OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaCBiL3F0 YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaAoraW5kZXggN2RhNTQyYzI1ZS4uZTUwZmMz MTkwYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaAorKysr IGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW5fcC5oCitAQCAtNzAsNiArNzAsNyBAQCBw dWJsaWM6CisgICAgICAgICBnZW9tZXRyeSA9IHBsYXRmb3JtU2NyZWVuLT5kZXZpY2VJbmRlcGVu ZGVudEdlb21ldHJ5KCk7CisgICAgICAgICBhdmFpbGFibGVHZW9tZXRyeSA9IFFIaWdoRHBpOjpm cm9tTmF0aXZlKHBsYXRmb3JtU2NyZWVuLT5hdmFpbGFibGVHZW9tZXRyeSgpLCBRSGlnaERwaVNj YWxpbmc6OmZhY3RvcihwbGF0Zm9ybVNjcmVlbiksIGdlb21ldHJ5LnRvcExlZnQoKSk7CisgICAg IH0KKysgICAgdm9pZCB1cGRhdGVMb2dpY2FsRHBpKCk7CisgCisgICAgIHZvaWQgdXBkYXRlUHJp bWFyeU9yaWVudGF0aW9uKCk7CisgICAgIHZvaWQgdXBkYXRlR2VvbWV0cmllc1dpdGhTaWduYWxz KCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWJsZW5kZnVuY3Rpb25z X3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FibGVuZGZ1bmN0aW9uc19wLmgKK2luZGV4 IDA4MGRhOThlYzQuLjY5OTdkNjJiM2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWlu dGluZy9xYmxlbmRmdW5jdGlvbnNfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9x YmxlbmRmdW5jdGlvbnNfcC5oCitAQCAtMjQ2LDI1ICsyNDYsMzIgQEAgdm9pZCBxdF90cmFuc2Zv cm1faW1hZ2VfcmFzdGVyaXplKERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGR1ZHgsIGludCBkdmR4LCBpbnQgZHVkeSwg aW50IGR2ZHksIGludCB1MCwgaW50IHYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBCbGVuZGVyIGJsZW5kZXIpCisgeworLSAgICBpbnQgZnJvbVkgPSBxTWF4KHFSb3VuZCh0 b3BZKSwgY2xpcC50b3AoKSk7CistICAgIGludCB0b1kgPSBxTWluKHFSb3VuZChib3R0b21ZKSwg Y2xpcC50b3AoKSArIGNsaXAuaGVpZ2h0KCkpOworKyAgICBxaW50NjQgZnJvbVkgPSBxTWF4KHFS b3VuZCh0b3BZKSwgY2xpcC50b3AoKSk7CisrICAgIHFpbnQ2NCB0b1kgPSBxTWluKHFSb3VuZChi b3R0b21ZKSwgY2xpcC50b3AoKSArIGNsaXAuaGVpZ2h0KCkpOworICAgICBpZiAoZnJvbVkgPj0g dG9ZKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBxcmVhbCBsZWZ0U2xvcGUgPSAoYm90dG9t TGVmdC54IC0gdG9wTGVmdC54KSAvIChib3R0b21MZWZ0LnkgLSB0b3BMZWZ0LnkpOworICAgICBx cmVhbCByaWdodFNsb3BlID0gKGJvdHRvbVJpZ2h0LnggLSB0b3BSaWdodC54KSAvIChib3R0b21S aWdodC55IC0gdG9wUmlnaHQueSk7CistICAgIGludCBkeF9sID0gaW50KGxlZnRTbG9wZSAqIDB4 MTAwMDApOworLSAgICBpbnQgZHhfciA9IGludChyaWdodFNsb3BlICogMHgxMDAwMCk7CistICAg IGludCB4X2wgPSBpbnQoKHRvcExlZnQueCArIChxcmVhbCgwLjUpICsgZnJvbVkgLSB0b3BMZWZ0 LnkpICogbGVmdFNsb3BlICsgcXJlYWwoMC41KSkgKiAweDEwMDAwKTsKKy0gICAgaW50IHhfciA9 IGludCgodG9wUmlnaHQueCArIChxcmVhbCgwLjUpICsgZnJvbVkgLSB0b3BSaWdodC55KSAqIHJp Z2h0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4MTAwMDApOworLQorLSAgICBpbnQgZnJvbVgsIHRv WCwgeDEsIHgyLCB1LCB2LCBpLCBpaTsKKysgICAgcWludDY0IGR4X2wgPSBxaW50NjQobGVmdFNs b3BlICogMHgxMDAwMCk7CisrICAgIHFpbnQ2NCBkeF9yID0gcWludDY0KHJpZ2h0U2xvcGUgKiAw eDEwMDAwKTsKKysgICAgcWludDY0IHhfbCA9IHFpbnQ2NCgodG9wTGVmdC54ICsgKHFyZWFsKDAu NSkgKyBmcm9tWSAtIHRvcExlZnQueSkgKiBsZWZ0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4MTAw MDApOworKyAgICBxaW50NjQgeF9yID0gcWludDY0KCh0b3BSaWdodC54ICsgKHFyZWFsKDAuNSkg KyBmcm9tWSAtIHRvcFJpZ2h0LnkpICogcmlnaHRTbG9wZSArIHFyZWFsKDAuNSkpICogMHgxMDAw MCk7CisrCisrICAgIHFpbnQ2NCBzb3VyY2VSZWN0VG9wID0gcWludDY0KHNvdXJjZVJlY3QudG9w KCkpOworKyAgICBxaW50NjQgc291cmNlUmVjdExlZnQgPSBxaW50NjQoc291cmNlUmVjdC5sZWZ0 KCkpOworKyAgICBxaW50NjQgc291cmNlUmVjdFdpZHRoID0gcWludDY0KHNvdXJjZVJlY3Qud2lk dGgoKSk7CisrICAgIHFpbnQ2NCBzb3VyY2VSZWN0SGVpZ2h0ID0gcWludDY0KHNvdXJjZVJlY3Qu aGVpZ2h0KCkpOworKyAgICBxaW50NjQgY2xpcExlZnQgPSBxaW50NjQoY2xpcC5sZWZ0KCkpOwor KyAgICBxaW50NjQgY2xpcFdpZHRoID0gcWludDY0KGNsaXAud2lkdGgoKSk7CisrCisrICAgIHFp bnQ2NCBmcm9tWCwgdG9YLCB4MSwgeDIsIHUsIHYsIGksIGlpOworICAgICBEZXN0VCAqbGluZTsK Ky0gICAgZm9yIChpbnQgeSA9IGZyb21ZOyB5IDwgdG9ZOyArK3kpIHsKKysgICAgZm9yIChxaW50 NjQgeSA9IGZyb21ZOyB5IDwgdG9ZOyArK3kpIHsKKyAgICAgICAgIGxpbmUgPSByZWludGVycHJl dF9jYXN0PERlc3RUICo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWNoYXIgKj4oZGVzdFBpeGVscykgKyB5 ICogZGJwbCk7CisgCistICAgICAgICBmcm9tWCA9IHFNYXgoeF9sID4+IDE2LCBjbGlwLmxlZnQo KSk7CistICAgICAgICB0b1ggPSBxTWluKHhfciA+PiAxNiwgY2xpcC5sZWZ0KCkgKyBjbGlwLndp ZHRoKCkpOworKyAgICAgICAgZnJvbVggPSBxTWF4KHhfbCA+PiAxNiwgY2xpcExlZnQpOworKyAg ICAgICAgdG9YID0gcU1pbih4X3IgPj4gMTYsIGNsaXBMZWZ0ICsgY2xpcFdpZHRoKTsKKyAgICAg ICAgIGlmIChmcm9tWCA8IHRvWCkgeworICAgICAgICAgICAgIC8vIEJlY2F1c2Ugb2Ygcm91bmRp bmcsIHdlIGNhbiBnZXQgc291cmNlIGNvb3JkaW5hdGVzIG91dHNpZGUgdGhlIHNvdXJjZSBpbWFn ZS4KKyAgICAgICAgICAgICAvLyBDbGFtcCB0aGVzZSBjb29yZGluYXRlcyB0byB0aGUgc291cmNl IHJlY3QgdG8gYXZvaWQgc2VnbWVudGF0aW9uIGZhdWx0IGFuZAorQEAgLTI3NSwxMCArMjgyLDEw IEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywg aW50IGRicGwsCisgICAgICAgICAgICAgdSA9IHgxICogZHVkeCArIHkgKiBkdWR5ICsgdTA7Cisg ICAgICAgICAgICAgdiA9IHgxICogZHZkeCArIHkgKiBkdmR5ICsgdjA7CisgICAgICAgICAgICAg Zm9yICg7IHgxIDwgdG9YOyArK3gxKSB7CistICAgICAgICAgICAgICAgIGludCB1dSA9IHUgPj4g MTY7CistICAgICAgICAgICAgICAgIGludCB2diA9IHYgPj4gMTY7CistICAgICAgICAgICAgICAg IGlmICh1dSA+PSBzb3VyY2VSZWN0LmxlZnQoKSAmJiB1dSA8IHNvdXJjZVJlY3QubGVmdCgpICsg c291cmNlUmVjdC53aWR0aCgpCistICAgICAgICAgICAgICAgICAgICAmJiB2diA+PSBzb3VyY2VS ZWN0LnRvcCgpICYmIHZ2IDwgc291cmNlUmVjdC50b3AoKSArIHNvdXJjZVJlY3QuaGVpZ2h0KCkp IHsKKysgICAgICAgICAgICAgICAgcWludDY0IHV1ID0gdSA+PiAxNjsKKysgICAgICAgICAgICAg ICAgcWludDY0IHZ2ID0gdiA+PiAxNjsKKysgICAgICAgICAgICAgICAgaWYgKHV1ID49IHNvdXJj ZVJlY3RMZWZ0ICYmIHV1IDwgc291cmNlUmVjdExlZnQgKyBzb3VyY2VSZWN0V2lkdGgKKysgICAg ICAgICAgICAgICAgICAgICYmIHZ2ID49IHNvdXJjZVJlY3RUb3AgJiYgdnYgPCBzb3VyY2VSZWN0 VG9wICsgc291cmNlUmVjdEhlaWdodCkgeworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgdSArPSBkdWR4OworQEAgLTI5MCwx MCArMjk3LDEwIEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVz dFBpeGVscywgaW50IGRicGwsCisgICAgICAgICAgICAgdSA9ICh4MiAtIDEpICogZHVkeCArIHkg KiBkdWR5ICsgdTA7CisgICAgICAgICAgICAgdiA9ICh4MiAtIDEpICogZHZkeCArIHkgKiBkdmR5 ICsgdjA7CisgICAgICAgICAgICAgZm9yICg7IHgyID4geDE7IC0teDIpIHsKKy0gICAgICAgICAg ICAgICAgaW50IHV1ID0gdSA+PiAxNjsKKy0gICAgICAgICAgICAgICAgaW50IHZ2ID0gdiA+PiAx NjsKKy0gICAgICAgICAgICAgICAgaWYgKHV1ID49IHNvdXJjZVJlY3QubGVmdCgpICYmIHV1IDwg c291cmNlUmVjdC5sZWZ0KCkgKyBzb3VyY2VSZWN0LndpZHRoKCkKKy0gICAgICAgICAgICAgICAg ICAgICYmIHZ2ID49IHNvdXJjZVJlY3QudG9wKCkgJiYgdnYgPCBzb3VyY2VSZWN0LnRvcCgpICsg c291cmNlUmVjdC5oZWlnaHQoKSkgeworKyAgICAgICAgICAgICAgICBxaW50NjQgdXUgPSB1ID4+ IDE2OworKyAgICAgICAgICAgICAgICBxaW50NjQgdnYgPSB2ID4+IDE2OworKyAgICAgICAgICAg ICAgICBpZiAodXUgPj0gc291cmNlUmVjdExlZnQgJiYgdXUgPCBzb3VyY2VSZWN0TGVmdCArIHNv dXJjZVJlY3RXaWR0aAorKyAgICAgICAgICAgICAgICAgICAgJiYgdnYgPj0gc291cmNlUmVjdFRv cCAmJiB2diA8IHNvdXJjZVJlY3RUb3AgKyBzb3VyY2VSZWN0SGVpZ2h0KSB7CisgICAgICAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB1 IC09IGR1ZHg7CitAQCAtMzA4LDggKzMxNSw4IEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdlX3Jh c3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGwsCisgICAgICAgICAgICAgLy8gQmVn aW5uaW5nIG9mIHRoZSBzY2FuIGxpbmUsIHdpdGggcGVyLXBpeGVsIGNoZWNrcy4KKyAgICAgICAg ICAgICBpID0geDEgLSBmcm9tWDsKKyAgICAgICAgICAgICB3aGlsZSAoaSkgeworLSAgICAgICAg ICAgICAgICBpbnQgdXUgPSBxQm91bmQoc291cmNlUmVjdC5sZWZ0KCksIHUgPj4gMTYsIHNvdXJj ZVJlY3QubGVmdCgpICsgc291cmNlUmVjdC53aWR0aCgpIC0gMSk7CistICAgICAgICAgICAgICAg IGludCB2diA9IHFCb3VuZChzb3VyY2VSZWN0LnRvcCgpLCB2ID4+IDE2LCBzb3VyY2VSZWN0LnRv cCgpICsgc291cmNlUmVjdC5oZWlnaHQoKSAtIDEpOworKyAgICAgICAgICAgICAgICBxaW50NjQg dXUgPSBxQm91bmQoc291cmNlUmVjdExlZnQsIHUgPj4gMTYsIHNvdXJjZVJlY3RMZWZ0ICsgc291 cmNlUmVjdFdpZHRoIC0gMSk7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB2diA9IHFCb3VuZChz b3VyY2VSZWN0VG9wLCB2ID4+IDE2LCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVjdEhlaWdodCAt IDEpOworICAgICAgICAgICAgICAgICBibGVuZGVyLndyaXRlKGxpbmUsIHJlaW50ZXJwcmV0X2Nh c3Q8Y29uc3QgU3JjVCAqPihyZWludGVycHJldF9jYXN0PGNvbnN0IHVjaGFyICo+KHNyY1BpeGVs cykgKyB2diAqIHNicGwpW3V1XSk7CisgICAgICAgICAgICAgICAgIHUgKz0gZHVkeDsKKyAgICAg ICAgICAgICAgICAgdiArPSBkdmR4OworQEAgLTM0OCw4ICszNTUsOCBAQCB2b2lkIHF0X3RyYW5z Zm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhlbHMsIGludCBkYnBsLAorICAgICAg ICAgICAgIC8vIEVuZCBvZiB0aGUgc2NhbiBsaW5lLCB3aXRoIHBlci1waXhlbCBjaGVja3MuCisg ICAgICAgICAgICAgaSA9IHRvWCAtIHgyOworICAgICAgICAgICAgIHdoaWxlIChpKSB7CistICAg ICAgICAgICAgICAgIGludCB1dSA9IHFCb3VuZChzb3VyY2VSZWN0LmxlZnQoKSwgdSA+PiAxNiwg c291cmNlUmVjdC5sZWZ0KCkgKyBzb3VyY2VSZWN0LndpZHRoKCkgLSAxKTsKKy0gICAgICAgICAg ICAgICAgaW50IHZ2ID0gcUJvdW5kKHNvdXJjZVJlY3QudG9wKCksIHYgPj4gMTYsIHNvdXJjZVJl Y3QudG9wKCkgKyBzb3VyY2VSZWN0LmhlaWdodCgpIC0gMSk7CisrICAgICAgICAgICAgICAgIHFp bnQ2NCB1dSA9IHFCb3VuZChzb3VyY2VSZWN0TGVmdCwgdSA+PiAxNiwgc291cmNlUmVjdExlZnQg KyBzb3VyY2VSZWN0V2lkdGggLSAxKTsKKysgICAgICAgICAgICAgICAgcWludDY0IHZ2ID0gcUJv dW5kKHNvdXJjZVJlY3RUb3AsIHYgPj4gMTYsIHNvdXJjZVJlY3RUb3AgKyBzb3VyY2VSZWN0SGVp Z2h0IC0gMSk7CisgICAgICAgICAgICAgICAgIGJsZW5kZXIud3JpdGUobGluZSwgcmVpbnRlcnBy ZXRfY2FzdDxjb25zdCBTcmNUICo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWNoYXIgKj4oc3Jj UGl4ZWxzKSArIHZ2ICogc2JwbClbdXVdKTsKKyAgICAgICAgICAgICAgICAgdSArPSBkdWR4Owor ICAgICAgICAgICAgICAgICB2ICs9IGR2ZHg7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkv cGFpbnRpbmcvcWNvbG9ydHJjbHV0X3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fjb2xv cnRyY2x1dF9wLmgKK2luZGV4IDc2YTZhNjA4MDMuLjI0ZmQ1MjJlNmMgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2d1aS9wYWludGluZy9xY29sb3J0cmNsdXRfcC5oCisrKysgYi9xdGJhc2Uvc3Jj L2d1aS9wYWludGluZy9xY29sb3J0cmNsdXRfcC5oCitAQCAtMTE4LDYgKzExOCw3IEBAIHB1Ymxp YzoKKyAgICAgICAgIHJldHVybiBRUmdiYTY0Ojpmcm9tUmdiYTY0KHIsIGcsIGIsIHFBbHBoYShy Z2IzMikgKiAyNTcpOworICNlbmRpZgorICAgICB9CisrICAgIFFSZ2JhNjQgdG9MaW5lYXI2NChR UmdiYTY0KSBjb25zdCA9IGRlbGV0ZTsKKyAKKyAgICAgUVJnYiB0b0xpbmVhcihRUmdiIHJnYjMy KSBjb25zdAorICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWRy YXdoZWxwZXIuY3BwIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWRyYXdoZWxwZXIuY3BwCitp bmRleCBhNjE3OTM1MDhhLi41YmEyZDI3N2I3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkv cGFpbnRpbmcvcWRyYXdoZWxwZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9x ZHJhd2hlbHBlci5jcHAKK0BAIC02MDkxLDcgKzYwOTEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg YWxwaGFyZ2JibGVuZF9hcmdiMzIocXVpbnQzMiAqZHN0LCB1aW50IGNvdmVyYWdlLCBjb25zdCBR UmdiYQorIHN0YXRpYyBpbmxpbmUgdm9pZCByZ2JCbGVuZFBpeGVsKFFSZ2JhNjQgJmRzdCwgaW50 IGNvdmVyYWdlLCBRUmdiYTY0IHNsaW5lYXIsIGNvbnN0IFFDb2xvclRyY0x1dCAqY29sb3JQcm9m aWxlKQorIHsKKyAgICAgLy8gRG8gYSBnYW1tYWNvcnJlY3RlZCBSR0IgYWxwaGFibGVuZC4uLgor LSAgICBjb25zdCBRUmdiYTY0IGRsaW5lYXIgPSBjb2xvclByb2ZpbGUgPyBjb2xvclByb2ZpbGUt PnRvTGluZWFyNjQoZHN0KSA6IGRzdDsKKysgICAgY29uc3QgUVJnYmE2NCBkbGluZWFyID0gY29s b3JQcm9maWxlID8gY29sb3JQcm9maWxlLT50b0xpbmVhcihkc3QpIDogZHN0OworIAorICAgICBR UmdiYTY0IGJsZW5kID0gcmdiQmxlbmQoZGxpbmVhciwgc2xpbmVhciwgY292ZXJhZ2UpOworIAor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXIu Y3BwIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlci5jcHAKK2lu ZGV4IDI4MzkyM2RlNTIuLmYwOGViOWNiZWUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9w YWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFp bnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlci5jcHAKK0BAIC01NjAsMzEgKzU2MCw2IEBAIHZvaWQg UVJhc3RlclBhaW50RW5naW5lOjp1cGRhdGVNYXRyaXgoY29uc3QgUVRyYW5zZm9ybSAmbWF0cml4 KQorICAgICBRUmFzdGVyUGFpbnRFbmdpbmVTdGF0ZSAqcyA9IHN0YXRlKCk7CisgICAgIC8vIEZB TENPTjogZ2V0IHJpZCBvZiB0aGlzIGxpbmUsIHNlZSBkcmF3SW1hZ2UgY2FsbCBiZWxvdy4KKyAg ICAgcy0+bWF0cml4ID0gbWF0cml4OworLSAgICBRVHJhbnNmb3JtOjpUcmFuc2Zvcm1hdGlvblR5 cGUgdHhvcCA9IHMtPm1hdHJpeC50eXBlKCk7CistCistICAgIHN3aXRjaCAodHhvcCkgeworLQor LSAgICBjYXNlIFFUcmFuc2Zvcm06OlR4Tm9uZToKKy0gICAgICAgIHMtPmZsYWdzLmludF94Zm9y bSA9IHRydWU7CistICAgICAgICBicmVhazsKKy0KKy0gICAgY2FzZSBRVHJhbnNmb3JtOjpUeFRy YW5zbGF0ZToKKy0gICAgICAgIHMtPmZsYWdzLmludF94Zm9ybSA9IHFyZWFsKGludChzLT5tYXRy aXguZHgoKSkpID09IHMtPm1hdHJpeC5keCgpCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICYmIHFyZWFsKGludChzLT5tYXRyaXguZHkoKSkpID09IHMtPm1hdHJpeC5keSgpOworLSAgICAg ICAgYnJlYWs7CistCistICAgIGNhc2UgUVRyYW5zZm9ybTo6VHhTY2FsZToKKy0gICAgICAgIHMt PmZsYWdzLmludF94Zm9ybSA9IHFyZWFsKGludChzLT5tYXRyaXguZHgoKSkpID09IHMtPm1hdHJp eC5keCgpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHFyZWFsKGludChzLT5tYXRy aXguZHkoKSkpID09IHMtPm1hdHJpeC5keSgpCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICYmIHFyZWFsKGludChzLT5tYXRyaXgubTExKCkpKSA9PSBzLT5tYXRyaXgubTExKCkKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgJiYgcXJlYWwoaW50KHMtPm1hdHJpeC5tMjIoKSkpID09 IHMtPm1hdHJpeC5tMjIoKTsKKy0gICAgICAgIGJyZWFrOworLQorLSAgICBkZWZhdWx0OiAvLyBz aGVhciAvIHBlcnNwZWN0aXZlLi4uCistICAgICAgICBzLT5mbGFncy5pbnRfeGZvcm0gPSBmYWxz ZTsKKy0gICAgICAgIGJyZWFrOworLSAgICB9CistCisgICAgIHMtPmZsYWdzLnR4X25vc2hlYXIg PSBxdF9zY2FsZUZvclRyYW5zZm9ybShzLT5tYXRyaXgsICZzLT50eHNjYWxlKTsKKyAKKyAgICAg ZW5zdXJlT3V0bGluZU1hcHBlcigpOworQEAgLTYxNyw3ICs1OTIsNiBAQCBRUmFzdGVyUGFpbnRF bmdpbmVTdGF0ZTo6UVJhc3RlclBhaW50RW5naW5lU3RhdGUoKQorICAgICBmbGFncy5iaWxpbmVh ciA9IGZhbHNlOworICAgICBmbGFncy5sZWdhY3lfcm91bmRpbmcgPSBmYWxzZTsKKyAgICAgZmxh Z3MuZmFzdF90ZXh0ID0gdHJ1ZTsKKy0gICAgZmxhZ3MuaW50X3hmb3JtID0gdHJ1ZTsKKyAgICAg ZmxhZ3MudHhfbm9zaGVhciA9IHRydWU7CisgICAgIGZsYWdzLmZhc3RfaW1hZ2VzID0gdHJ1ZTsK KyAKK0BAIC0xNzkzLDcgKzE3NjcsNyBAQCB2b2lkIFFSYXN0ZXJQYWludEVuZ2luZTo6ZmlsbChj b25zdCBRVmVjdG9yUGF0aCAmcGF0aCwgY29uc3QgUUJydXNoICZicnVzaCkKKyAgICAgUVJlY3RG IGNwUmVjdCA9IHBhdGguY29udHJvbFBvaW50UmVjdCgpOworICAgICBjb25zdCBRUmVjdEYgcGF0 aERldmljZVJlY3QgPSBzLT5tYXRyaXgubWFwUmVjdChjcFJlY3QpOworICAgICAvLyBTa2lwIHBh dGhzIHRoYXQgYnkgY29uc2VydmF0aXZlIGVzdGltYXRlcyBhcmUgY29tcGxldGVseSBvdXRzaWRl IHRoZSBwYWludCBkZXZpY2UuCistICAgIGlmICghcGF0aERldmljZVJlY3QuaW50ZXJzZWN0cyhR UmVjdEYoZC0+ZGV2aWNlUmVjdCkpKQorKyAgICBpZiAoIXBhdGhEZXZpY2VSZWN0LmludGVyc2Vj dHMoUVJlY3RGKGQtPmRldmljZVJlY3QpKSB8fCAhcGF0aERldmljZVJlY3QuaXNWYWxpZCgpKQor ICAgICAgICAgcmV0dXJuOworIAorICAgICBQcm9jZXNzU3BhbnMgYmxlbmQgPSBkLT5nZXRCcnVz aEZ1bmMocGF0aERldmljZVJlY3QsICZzLT5icnVzaERhdGEpOworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXJfcC5oIGIvcXRiYXNlL3NyYy9n dWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlcl9wLmgKK2luZGV4IDA4OWFhZGMzZjcuLmJm NzM2M2Q1YWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdp bmVfcmFzdGVyX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5l X3Jhc3Rlcl9wLmgKK0BAIC0xMTEsNyArMTExLDYgQEAgcHVibGljOgorICAgICAgICAgdWludCBi aWxpbmVhciA6IDE7CisgICAgICAgICB1aW50IGxlZ2FjeV9yb3VuZGluZyA6IDE7CisgICAgICAg ICB1aW50IGZhc3RfdGV4dCA6IDE7CistICAgICAgICB1aW50IGludF94Zm9ybSA6IDE7CisgICAg ICAgICB1aW50IHR4X25vc2hlYXIgOiAxOworICAgICAgICAgdWludCBmYXN0X2ltYWdlcyA6IDE7 CisgICAgIH07CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZXJw YXRoLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVycGF0aC5jcHAKK2luZGV4 IGY5NTQ0YTMyNDEuLmQ4MGZhZmVhZjEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWlu dGluZy9xcGFpbnRlcnBhdGguY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFp bnRlcnBhdGguY3BwCitAQCAtMTI1Myw3ICsxMjUzLDcgQEAgdm9pZCBRUGFpbnRlclBhdGg6OmFk ZFRleHQoY29uc3QgUVBvaW50RiAmcG9pbnQsIGNvbnN0IFFGb250ICZmLCBjb25zdCBRU3RyaW5n ICYKKyAKKyAgICAgICAgIGlmIChzaS5hbmFseXNpcy5mbGFncyA8IFFTY3JpcHRBbmFseXNpczo6 VGFiT3JPYmplY3QpIHsKKyAgICAgICAgICAgICBRR2x5cGhMYXlvdXQgZ2x5cGhzID0gZW5nLT5z aGFwZWRHbHlwaHMoJnNpKTsKKy0gICAgICAgICAgICBRRm9udEVuZ2luZSAqZmUgPSBmLmQtPmVu Z2luZUZvclNjcmlwdChzaS5hbmFseXNpcy5zY3JpcHQpOworKyAgICAgICAgICAgIFFGb250RW5n aW5lICpmZSA9IGVuZy0+Zm9udEVuZ2luZShzaSk7CisgICAgICAgICAgICAgUV9BU1NFUlQoZmUp OworICAgICAgICAgICAgIGZlLT5hZGRPdXRsaW5lVG9QYXRoKHgsIHksIGdseXBocywgdGhpcywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaS5hbmFseXNpcy5iaWRpTGV2ZWwg JSAyCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhdGhjbGlwcGVyX3Au aCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYXRoY2xpcHBlcl9wLmgKK2luZGV4IDk0NDRh ODdiNzEuLjE4ZjY0YzVlOGMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9x cGF0aGNsaXBwZXJfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGF0aGNsaXBw ZXJfcC5oCitAQCAtMTU2LDcgKzE1Niw3IEBAIHB1YmxpYzoKKyAgICAgaW50IHZlcnRleChEaXJl Y3Rpb24gZGlyZWN0aW9uKSBjb25zdDsKKyAKKyBwcml2YXRlOgorLSAgICBpbnQgbV9uZXh0WzJd WzJdOworKyAgICBpbnQgbV9uZXh0WzJdWzJdID0geyB7IC0xLCAtMSB9LCB7IC0xLCAtMSB9IH07 CisgfTsKKyAKKyBjbGFzcyBRUGF0aFNlZ21lbnRzCitAQCAtMjk2LDEwICsyOTYsNiBAQCBpbmxp bmUgUVBhdGhFZGdlOjpRUGF0aEVkZ2UoaW50IGEsIGludCBiKQorICAgICAsIGFuZ2xlKDApCisg ICAgICwgaW52QW5nbGUoMCkKKyB7CistICAgIG1fbmV4dFswXVswXSA9IC0xOworLSAgICBtX25l eHRbMV1bMF0gPSAtMTsKKy0gICAgbV9uZXh0WzBdWzBdID0gLTE7CistICAgIG1fbmV4dFsxXVsw XSA9IC0xOworIH0KKyAKKyBpbmxpbmUgaW50IFFQYXRoRWRnZTo6bmV4dChUcmF2ZXJzYWwgdHJh dmVyc2FsLCBEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvZ3VpL3BhaW50aW5nL3FwZGYuY3BwIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBkZi5j cHAKK2luZGV4IDMwNjY3NDRmMWIuLjJjOGQzYzNiNTMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2d1aS9wYWludGluZy9xcGRmLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBk Zi5jcHAKK0BAIC0yNzYwLDYgKzI3NjAsOCBAQCBpbnQgUVBkZkVuZ2luZVByaXZhdGU6OmFkZEJy dXNoUGF0dGVybihjb25zdCBRVHJhbnNmb3JtICZtLCBib29sICpzcGVjaWZ5Q29sb3IsCisgICAg ICAgICByZXR1cm4gZ3JhZGllbnRCcnVzaChicnVzaCwgbWF0cml4LCBnU3RhdGVPYmplY3QpOwor ICAgICB9CisgCisrICAgIG1hdHJpeCA9IGJydXNoLnRyYW5zZm9ybSgpICogbWF0cml4OworKwor ICAgICBpZiAoKCFicnVzaC5pc09wYXF1ZSgpICYmIGJydXNoLnN0eWxlKCkgPCBRdDo6TGluZWFy R3JhZGllbnRQYXR0ZXJuKSB8fCBvcGFjaXR5ICE9IDEuMCkKKyAgICAgICAgICpnU3RhdGVPYmpl Y3QgPSBhZGRDb25zdGFudEFscGhhT2JqZWN0KHFSb3VuZChicnVzaC5jb2xvcigpLmFscGhhKCkg KiBvcGFjaXR5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHFSb3VuZChwZW4uY29sb3IoKS5hbHBoYSgpICogb3BhY2l0eSkpOworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FzdHJva2VyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3Bh aW50aW5nL3FzdHJva2VyLmNwcAoraW5kZXggY2I1ZDM5NWU4MC4uM2I2MzU3YTg5MyAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FzdHJva2VyLmNwcAorKysrIGIvcXRiYXNl L3NyYy9ndWkvcGFpbnRpbmcvcXN0cm9rZXIuY3BwCitAQCAtMTE4Miw2ICsxMTgyLDcgQEAgdm9p ZCBRRGFzaFN0cm9rZXI6OnByb2Nlc3NDdXJyZW50U3VicGF0aCgpCisgICAgICAgICAvLyBDaGVj ayBpZiB0aGUgZW50aXJlIGxpbmUgc2hvdWxkIGJlIGNsaXBwZWQgYXdheSBvciBzaW1wbGlmaWVk CisgICAgICAgICBib29sIGNsaXBJdCA9IGNsaXBwaW5nICYmICFsaW5lSW50ZXJzZWN0c1JlY3Qo cHJldiwgZSwgY2xpcF90bCwgY2xpcF9icik7CisgICAgICAgICBib29sIHNraXBEYXNoaW5nID0g ZWxlbiAqIGludlN1bUxlbmd0aCA+IHJlcGV0aXRpb25MaW1pdCgpOworKyAgICAgICAgaW50IG1h eERhc2hlcyA9IGRhc2hDb3VudDsKKyAgICAgICAgIGlmIChza2lwRGFzaGluZyB8fCBjbGlwSXQp IHsKKyAgICAgICAgICAgICAvLyBDdXQgYXdheSBmdWxsIGRhc2ggc2VxdWVuY2VzLgorICAgICAg ICAgICAgIGVsZW4gLT0gc3RkOjpmbG9vcihlbGVuICogaW52U3VtTGVuZ3RoKSAqIHN1bUxlbmd0 aDsKK0BAIC0xMTk2LDcgKzExOTcsNyBAQCB2b2lkIFFEYXNoU3Ryb2tlcjo6cHJvY2Vzc0N1cnJl bnRTdWJwYXRoKCkKKyAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGVzdG9wOyAvLyBtb3ZlIHBv cyB0byBuZXh0IHBhdGggZWxlbWVudAorICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7 CisgICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIERhc2ggaXMgb24gdGhpcyBsaW5lCistICAg ICAgICAgICAgICAgICAgICBwb3MgPSBkcG9zICsgZXN0YXJ0OworKyAgICAgICAgICAgICAgICAg ICAgcG9zID0gLS1tYXhEYXNoZXMgPiAwID8gZHBvcyArIGVzdGFydCA6IGVzdG9wOworICAgICAg ICAgICAgICAgICAgICAgZG9uZSA9IHBvcyA+PSBlc3RvcDsKKyAgICAgICAgICAgICAgICAgICAg IGlmICgrK2lkYXNoID49IGRhc2hDb3VudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZGFz aCA9IDA7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXRfYXR0cmlidXRp b24uanNvbiBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3F0X2F0dHJpYnV0aW9uLmpzb24KK2lu ZGV4IDdiMTZlOGMyMTEuLjBlODdkMzBhYTIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9w YWludGluZy9xdF9hdHRyaWJ1dGlvbi5qc29uCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGlu Zy9xdF9hdHRyaWJ1dGlvbi5qc29uCitAQCAtMTAsNyArMTAsNyBAQAorICAgICAgICAgIkhvbWVw YWdlIjogImh0dHA6Ly93d3cuZnJlZXR5cGUub3JnIiwKKyAgICAgICAgICJMaWNlbnNlIjogIkZy ZWV0eXBlIFByb2plY3QgTGljZW5zZSBvciBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2Mi4w IG9ubHkiLAorICAgICAgICAgIkxpY2Vuc2VJZCI6ICJGVEwgb3IgR1BMLTIuMCIsCistICAgICAg ICAiTGljZW5zZUZpbGUiOiAiLi4vLi4vM3JkcGFydHkvZnJlZXR5cGUvZG9jcy9MSUNFTlNFLlRY VCIsCisrICAgICAgICAiTGljZW5zZUZpbGUiOiAiLi4vLi4vM3JkcGFydHkvZnJlZXR5cGUvTElD RU5TRS5UWFQiLAorICAgICAgICAgIkNvcHlyaWdodCI6ICJDb3B5cmlnaHQgMjAwMC0yMDE2IGJ5 IERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4iCisgICAg IH0sCisgICAgIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9wX3Au aCBiL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyX3BfcC5oCitpbmRleCBlYzlkMjU5NzFmLi40 YTVhN2E2ZDUxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJfcF9wLmgK KysrKyBiL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyX3BfcC5oCitAQCAtNjgsMTMgKzY4LDEz IEBAIHN0cnVjdCBRX0dVSV9FWFBPUlQgUVNoYWRlclByaXZhdGUKKyAgICAgeworICAgICB9Cisg CistICAgIFFTaGFkZXJQcml2YXRlKGNvbnN0IFFTaGFkZXJQcml2YXRlICpvdGhlcikKKysgICAg UVNoYWRlclByaXZhdGUoY29uc3QgUVNoYWRlclByaXZhdGUgJm90aGVyKQorICAgICAgICAgOiBy ZWYoMSksCistICAgICAgICAgIHFzYlZlcnNpb24ob3RoZXItPnFzYlZlcnNpb24pLAorLSAgICAg ICAgICBzdGFnZShvdGhlci0+c3RhZ2UpLAorLSAgICAgICAgICBkZXNjKG90aGVyLT5kZXNjKSwK Ky0gICAgICAgICAgc2hhZGVycyhvdGhlci0+c2hhZGVycyksCistICAgICAgICAgIGJpbmRpbmdz KG90aGVyLT5iaW5kaW5ncykKKysgICAgICAgICAgcXNiVmVyc2lvbihvdGhlci5xc2JWZXJzaW9u KSwKKysgICAgICAgICAgc3RhZ2Uob3RoZXIuc3RhZ2UpLAorKyAgICAgICAgICBkZXNjKG90aGVy LmRlc2MpLAorKyAgICAgICAgICBzaGFkZXJzKG90aGVyLnNoYWRlcnMpLAorKyAgICAgICAgICBi aW5kaW5ncyhvdGhlci5iaW5kaW5ncykKKyAgICAgeworICAgICB9CisgCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJkZXNjcmlwdGlvbl9wX3AuaCBiL3F0YmFzZS9zcmMv Z3VpL3JoaS9xc2hhZGVyZGVzY3JpcHRpb25fcF9wLmgKK2luZGV4IGVjMmIwYjZiNGMuLjNkYTMz YThhMmIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0aW9u X3BfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5o CitAQCAtNjMsMTYgKzYzLDE2IEBAIHN0cnVjdCBRX0dVSV9FWFBPUlQgUVNoYWRlckRlc2NyaXB0 aW9uUHJpdmF0ZQorICAgICAgICAgbG9jYWxTaXplWzBdID0gbG9jYWxTaXplWzFdID0gbG9jYWxT aXplWzJdID0gMDsKKyAgICAgfQorIAorLSAgICBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlKGNv bnN0IFFTaGFkZXJEZXNjcmlwdGlvblByaXZhdGUgKm90aGVyKQorKyAgICBRU2hhZGVyRGVzY3Jp cHRpb25Qcml2YXRlKGNvbnN0IFFTaGFkZXJEZXNjcmlwdGlvblByaXZhdGUgJm90aGVyKQorICAg ICAgICAgOiByZWYoMSksCistICAgICAgICAgIGluVmFycyhvdGhlci0+aW5WYXJzKSwKKy0gICAg ICAgICAgb3V0VmFycyhvdGhlci0+b3V0VmFycyksCistICAgICAgICAgIHVuaWZvcm1CbG9ja3Mo b3RoZXItPnVuaWZvcm1CbG9ja3MpLAorLSAgICAgICAgICBwdXNoQ29uc3RhbnRCbG9ja3Mob3Ro ZXItPnB1c2hDb25zdGFudEJsb2NrcyksCistICAgICAgICAgIHN0b3JhZ2VCbG9ja3Mob3RoZXIt PnN0b3JhZ2VCbG9ja3MpLAorLSAgICAgICAgICBjb21iaW5lZEltYWdlU2FtcGxlcnMob3RoZXIt PmNvbWJpbmVkSW1hZ2VTYW1wbGVycyksCistICAgICAgICAgIHN0b3JhZ2VJbWFnZXMob3RoZXIt PnN0b3JhZ2VJbWFnZXMpLAorLSAgICAgICAgICBsb2NhbFNpemUob3RoZXItPmxvY2FsU2l6ZSkK KysgICAgICAgICAgaW5WYXJzKG90aGVyLmluVmFycyksCisrICAgICAgICAgIG91dFZhcnMob3Ro ZXIub3V0VmFycyksCisrICAgICAgICAgIHVuaWZvcm1CbG9ja3Mob3RoZXIudW5pZm9ybUJsb2Nr cyksCisrICAgICAgICAgIHB1c2hDb25zdGFudEJsb2NrcyhvdGhlci5wdXNoQ29uc3RhbnRCbG9j a3MpLAorKyAgICAgICAgICBzdG9yYWdlQmxvY2tzKG90aGVyLnN0b3JhZ2VCbG9ja3MpLAorKyAg ICAgICAgICBjb21iaW5lZEltYWdlU2FtcGxlcnMob3RoZXIuY29tYmluZWRJbWFnZVNhbXBsZXJz KSwKKysgICAgICAgICAgc3RvcmFnZUltYWdlcyhvdGhlci5zdG9yYWdlSW1hZ2VzKSwKKysgICAg ICAgICAgbG9jYWxTaXplKG90aGVyLmxvY2FsU2l6ZSkKKyAgICAgeworICAgICB9CisgCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9xZm9udGRhdGFiYXNlLmNwcCBiL3F0YmFzZS9z cmMvZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS5jcHAKK2luZGV4IGE2NTdhOGM1MTYuLjRmYzAxMDA5 NTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UuY3BwCisr KysgYi9xdGJhc2Uvc3JjL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UuY3BwCitAQCAtOTgzLDcgKzk4 Myw3IEBAIFFGb250RW5naW5lICpsb2FkU2luZ2xlRW5naW5lKGludCBzY3JpcHQsCisgICAgICAg ICBpZiAoc3R5bGUtPmtleS5zdHJldGNoICE9IDAgJiYgcmVxdWVzdC5zdHJldGNoICE9IDAKKyAg ICAgICAgICAgICAmJiAocmVxdWVzdC5zdHlsZU5hbWUuaXNFbXB0eSgpIHx8IHJlcXVlc3Quc3R5 bGVOYW1lICE9IHN0eWxlLT5zdHlsZU5hbWUpKSB7CisgICAgICAgICAgICAgZGVmLnN0cmV0Y2gg PSAocmVxdWVzdC5zdHJldGNoICogMTAwICsgc3R5bGUtPmtleS5zdHJldGNoIC8gMikgLyBzdHls ZS0+a2V5LnN0cmV0Y2g7CistICAgICAgICB9IGVsc2UgeworKyAgICAgICAgfSBlbHNlIGlmIChy ZXF1ZXN0LnN0cmV0Y2ggPT0gUUZvbnQ6OkFueVN0cmV0Y2gpIHsKKyAgICAgICAgICAgICBkZWYu c3RyZXRjaCA9IDEwMDsKKyAgICAgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1 aS90ZXh0L3F0ZXh0ZG9jdW1lbnRsYXlvdXQuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4 dGRvY3VtZW50bGF5b3V0LmNwcAoraW5kZXggZjNlNmVhMjEwMC4uNzIyNjdlOTM4MCAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRkb2N1bWVudGxheW91dC5jcHAKKysrKyBi L3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRkb2N1bWVudGxheW91dC5jcHAKK0BAIC0yMTIzLDcg KzIxMjMsNyBAQCB2b2lkIFFUZXh0RG9jdW1lbnRMYXlvdXRQcml2YXRlOjpkcmF3TGlzdEl0ZW0o Y29uc3QgUVBvaW50RiAmb2Zmc2V0LCBRUGFpbnRlciAqcAorIHsKKyAgICAgUV9RKGNvbnN0IFFU ZXh0RG9jdW1lbnRMYXlvdXQpOworICAgICBjb25zdCBRVGV4dEJsb2NrRm9ybWF0IGJsb2NrRm9y bWF0ID0gYmwuYmxvY2tGb3JtYXQoKTsKKy0gICAgY29uc3QgUVRleHRDaGFyRm9ybWF0IGNoYXJG b3JtYXQgPSBRVGV4dEN1cnNvcihibCkuY2hhckZvcm1hdCgpOworKyAgICBjb25zdCBRVGV4dENo YXJGb3JtYXQgY2hhckZvcm1hdCA9IGJsLmNoYXJGb3JtYXQoKTsKKyAgICAgUUZvbnQgZm9udChj aGFyRm9ybWF0LmZvbnQoKSk7CisgICAgIGlmIChxLT5wYWludERldmljZSgpKQorICAgICAgICAg Zm9udCA9IFFGb250KGZvbnQsIHEtPnBhaW50RGV2aWNlKCkpOworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvZ3VpL3RleHQvcXRleHRlbmdpbmUuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4 dGVuZ2luZS5jcHAKK2luZGV4IGNlNGFiYWM0NzIuLmE2YzY2ZTVkMmQgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkv dGV4dC9xdGV4dGVuZ2luZS5jcHAKK0BAIC0xLDYgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisgKioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoq IENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0 cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg dGhlIFF0R3VpIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC0xNTY1LDYgKzE1NjUsMTIg QEAgdm9pZCBRVGV4dEVuZ2luZTo6c2hhcGVUZXh0KGludCBpdGVtKSBjb25zdAorICAgICAgICAg Ly8gT3ZlcndyaXRlIHdpdGggMCB0b2tlbiB0byBpbmRpY2F0ZSBmYWlsdXJlCisgICAgICAgICBR R2x5cGhMYXlvdXQgZyA9IGF2YWlsYWJsZUdseXBocygmc2kpOworICAgICAgICAgZy5nbHlwaHNb MF0gPSAwOworKyAgICAgICAgZy5hdHRyaWJ1dGVzWzBdLmNsdXN0ZXJTdGFydCA9IHRydWU7Cisr CisrICAgICAgICB1c2hvcnQgKmxvZ19jbHVzdGVycyA9IGxvZ0NsdXN0ZXJzKCZzaSk7CisrICAg ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGl0ZW1MZW5ndGg7ICsraSkKKysgICAgICAgICAgICBs b2dfY2x1c3RlcnNbaV0gPSAwOworKworICAgICAgICAgcmV0dXJuOworICAgICB9CisgCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvdXRpbC9xZGVza3RvcHNlcnZpY2VzLmNwcCBiL3F0YmFz ZS9zcmMvZ3VpL3V0aWwvcWRlc2t0b3BzZXJ2aWNlcy5jcHAKK2luZGV4IGZiYjYzYTk0MDguLjRk NWZhZmFhYTcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS91dGlsL3FkZXNrdG9wc2Vydmlj ZXMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS91dGlsL3FkZXNrdG9wc2VydmljZXMuY3BwCitA QCAtNTQsNiArNTQsOCBAQAorICNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtaW50ZWdyYXRpb24uaD4K KyAjaW5jbHVkZSA8cWRpci5oPgorIAorKyNpbmNsdWRlIDxRdENvcmUvcHJpdmF0ZS9xbG9ja2lu Z19wLmg+CisrCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgY2xhc3MgUU9wZW5VcmxIYW5kbGVy UmVnaXN0cnkgOiBwdWJsaWMgUU9iamVjdAorQEAgLTgxLDYgKzgzLDcgQEAgUV9HTE9CQUxfU1RB VElDKFFPcGVuVXJsSGFuZGxlclJlZ2lzdHJ5LCBoYW5kbGVyUmVnaXN0cnkpCisgCisgdm9pZCBR T3BlblVybEhhbmRsZXJSZWdpc3RyeTo6aGFuZGxlckRlc3Ryb3llZChRT2JqZWN0ICpoYW5kbGVy KQorIHsKKysgICAgY29uc3QgYXV0byBsb2NrID0gcXRfc2NvcGVkX2xvY2sobXV0ZXgpOworICAg ICBIYW5kbGVySGFzaDo6SXRlcmF0b3IgaXQgPSBoYW5kbGVycy5iZWdpbigpOworICAgICB3aGls ZSAoaXQgIT0gaGFuZGxlcnMuZW5kKCkpIHsKKyAgICAgICAgIGlmIChpdC0+cmVjZWl2ZXIgPT0g aGFuZGxlcikgeworQEAgLTI5NCw3ICsyOTcsOCBAQCB2b2lkIFFEZXNrdG9wU2VydmljZXM6OnNl dFVybEhhbmRsZXIoY29uc3QgUVN0cmluZyAmc2NoZW1lLCBRT2JqZWN0ICpyZWNlaXZlciwgYwor ICAgICBoLm5hbWUgPSBtZXRob2Q7CisgICAgIHJlZ2lzdHJ5LT5oYW5kbGVycy5pbnNlcnQoc2No ZW1lLnRvTG93ZXIoKSwgaCk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QocmVjZWl2ZXIsIFNJR05B TChkZXN0cm95ZWQoUU9iamVjdCopKSwKKy0gICAgICAgICAgICAgICAgICAgICByZWdpc3RyeSwg U0xPVChoYW5kbGVyRGVzdHJveWVkKFFPYmplY3QqKSkpOworKyAgICAgICAgICAgICAgICAgICAg IHJlZ2lzdHJ5LCBTTE9UKGhhbmRsZXJEZXN0cm95ZWQoUU9iamVjdCopKSwKKysgICAgICAgICAg ICAgICAgICAgICBRdDo6RGlyZWN0Q29ubmVjdGlvbik7CisgfQorIAorIC8qIQorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcXBrbWhhbmRsZXIuY3BwIGIvcXRiYXNlL3NyYy9ndWkv dXRpbC9xcGttaGFuZGxlci5jcHAKK2luZGV4IGUwYzNiNzVlZmUuLjM0MTRmOWQ4YmEgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2d1aS91dGlsL3Fwa21oYW5kbGVyLmNwcAorKysrIGIvcXRiYXNl L3NyYy9ndWkvdXRpbC9xcGttaGFuZGxlci5jcHAKK0BAIC01Nyw3ICs1Nyw3IEBAIHN0cnVjdCBQ a21UeXBlCisgICAgIHF1aW50MzIgYnl0ZXNQZXJCbG9jazsKKyB9OworIAorLXN0YXRpYyBQa21U eXBlIHR5cGVNYXBbNV0gPSB7Cisrc3RhdGljIGNvbnN0ZXhwciBQa21UeXBlIHR5cGVNYXBbNV0g PSB7CisgICAgIHsgMHg4RDY0LCAgOCB9LCAgIC8vIEdMX0VUQzFfUkdCOF9PRVMKKyAgICAgeyAw eDkyNzQsICA4IH0sICAgLy8gR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIKKyAgICAgeyAwLCAwIH0s ICAgICAgICAgLy8gdW51c2VkIChvYnNvbGV0ZSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25l dHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlmaWxlaW1wbC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdv cmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlmaWxlaW1wbC5jcHAKK2luZGV4IGI2YmU5MzE0N2EuLjZl NjliNGM0ZDMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3Jr cmVwbHlmaWxlaW1wbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdv cmtyZXBseWZpbGVpbXBsLmNwcAorQEAgLTg5LDkgKzg5LDEwIEBAIFFOZXR3b3JrUmVwbHlGaWxl SW1wbDo6UU5ldHdvcmtSZXBseUZpbGVJbXBsKFFOZXR3b3JrQWNjZXNzTWFuYWdlciAqbWFuYWdl ciwgY29uCisgICAgICAgICAvLyB3ZSBoYW5kbGUgb25seSBsb2NhbCBmaWxlcworICAgICAgICAg UVN0cmluZyBtc2cgPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFOZXR3b3JrQWNjZXNz RmlsZUJhY2tlbmQiLCAiUmVxdWVzdCBmb3Igb3BlbmluZyBub24tbG9jYWwgZmlsZSAlMSIpLmFy Zyh1cmwudG9TdHJpbmcoKSk7CisgICAgICAgICBzZXRFcnJvcihRTmV0d29ya1JlcGx5OjpQcm90 b2NvbEludmFsaWRPcGVyYXRpb25FcnJvciwgbXNnKTsKKysgICAgICAgIHNldEZpbmlzaGVkKHRy dWUpOyAvLyBXZSdyZSBmaW5pc2hlZCwgd2lsbCBlbWl0IGZpbmlzaGVkKCkgYWZ0ZXIgY3RvciBp cyBkb25lLgorICAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCAiZXJyb3JP Y2N1cnJlZCIsIFF0OjpRdWV1ZWRDb25uZWN0aW9uLAorICAgICAgICAgICAgIFFfQVJHKFFOZXR3 b3JrUmVwbHk6Ok5ldHdvcmtFcnJvciwgUU5ldHdvcmtSZXBseTo6UHJvdG9jb2xJbnZhbGlkT3Bl cmF0aW9uRXJyb3IpKTsKKy0gICAgICAgIGZpbGVPcGVuRmluaXNoZWQoZmFsc2UpOworKyAgICAg ICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCBbdGhpc10oKXsgZmlsZU9wZW5GaW5p c2hlZChmYWxzZSk7IH0sIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyAgICAgICAgIHJldHVybjsK KyAgICAgfQorICNlbmRpZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3Mv cW5ldHdvcmtyZXBseWltcGwuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29y a3JlcGx5aW1wbC5jcHAKK2luZGV4IGJjZGY2ZWUyZjEuLjNiNmRlYjgyYmQgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlpbXBsLmNwcAorKysrIGIv cXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5aW1wbC5jcHAKK0BAIC02ODAs NyArNjgwLDcgQEAgdm9pZCBRTmV0d29ya1JlcGx5SW1wbFByaXZhdGU6OmFwcGVuZERvd25zdHJl YW1EYXRhKFFJT0RldmljZSAqZGF0YSkKKyAgICAgLy8gcmVhZCB1bnRpbCBFT0YgZnJvbSBkYXRh CisgICAgIGlmIChRX1VOTElLRUxZKGNvcHlEZXZpY2UpKSB7CisgICAgICAgICBxQ3JpdGljYWwo IlFOZXR3b3JrUmVwbHlJbXBsOiBjb3B5IGZyb20gUUlPRGV2aWNlIGFscmVhZHkgaW4gcHJvZ3Jl c3MgLS0gIgorLSAgICAgICAgICAgICAgICAgICJiYWNrZW5kIHByb2JseSBuZWVkcyB0byBiZSBm aXhlZCIpOworKyAgICAgICAgICAgICAgICAgICJiYWNrZW5kIHByb2JhYmx5IG5lZWRzIHRvIGJl IGZpeGVkIik7CisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL25ldHdvcmsva2VybmVsL3FhdXRoZW50aWNhdG9yLmNwcCBiL3F0YmFzZS9zcmMvbmV0 d29yay9rZXJuZWwvcWF1dGhlbnRpY2F0b3IuY3BwCitpbmRleCBkOWZlN2JjNDdiLi5jY2QwNGIy OTRhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xYXV0aGVudGljYXRv ci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWF1dGhlbnRpY2F0b3IuY3Bw CitAQCAtNTAsNiArNTAsNyBAQAorICNpbmNsdWRlIDxxc3RyaW5nLmg+CisgI2luY2x1ZGUgPHFk YXRldGltZS5oPgorICNpbmNsdWRlIDxxcmFuZG9tLmg+CisrI2luY2x1ZGUgInByaXZhdGUvcXN5 c3RlbWxpYnJhcnlfcC5oIgorIAorICNpZmRlZiBRX09TX1dJTgorICNpbmNsdWRlIDxxbXV0ZXgu aD4KK0BAIC0xNTYzLDcgKzE1NjQsNyBAQCBzdGF0aWMgYm9vbCBxX1NTUElfbGlicmFyeV9sb2Fk KCkKKyAKKyAgICAgLy8gSW5pdGlhbGl6ZSBzZWN1cml0eSBpbnRlcmZhY2UKKyAgICAgaWYgKHBT ZWN1cml0eUZ1bmN0aW9uVGFibGUgPT0gbnVsbHB0cikgeworLSAgICAgICAgc2VjdXJpdHlETExI YW5kbGUgPSBMb2FkTGlicmFyeShMInNlY3VyMzIuZGxsIik7CisrICAgICAgICBzZWN1cml0eURM TEhhbmRsZSA9IFFTeXN0ZW1MaWJyYXJ5Ojpsb2FkKEwic2VjdXIzMiIpOworICAgICAgICAgaWYg KHNlY3VyaXR5RExMSGFuZGxlICE9IG51bGxwdHIpIHsKKyAgICAgICAgICAgICBJTklUX1NFQ1VS SVRZX0lOVEVSRkFDRSBwSW5pdFNlY3VyaXR5SW50ZXJmYWNlID0KKyAgICAgICAgICAgICAgICAg cmVpbnRlcnByZXRfY2FzdDxJTklUX1NFQ1VSSVRZX0lOVEVSRkFDRT4oCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xaG9zdGluZm9fdW5peC5jcHAgYi9xdGJhc2Uvc3Jj L25ldHdvcmsva2VybmVsL3Fob3N0aW5mb191bml4LmNwcAoraW5kZXggOWIwYTJlZTY2OS4uNzM2 NzljOWVmMSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWhvc3RpbmZv X3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3Fob3N0aW5mb191bml4 LmNwcAorQEAgLTEyMiw3ICsxMjIsNiBAQCBzdGF0aWMgUUZ1bmN0aW9uUG9pbnRlciByZXNvbHZl U3ltYm9sKFFMaWJyYXJ5ICZsaWIsIGNvbnN0IGNoYXIgKnN5bSkKKyAKKyBMaWJSZXNvbHY6Okxp YlJlc29sdigpCisgeworLSAgICBRTGlicmFyeSBsaWI7CisgI2lmZGVmIExJQlJFU09MVl9TTwor ICAgICBsaWIuc2V0RmlsZU5hbWUoUVN0cmluZ0xpdGVyYWwoTElCUkVTT0xWX1NPKSk7CisgICAg IGlmICghbGliLmxvYWQoKSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc29ja2V0 L3Fzb2NrczVzb2NrZXRlbmdpbmUuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NvY2tldC9xc29j a3M1c29ja2V0ZW5naW5lLmNwcAoraW5kZXggM2EwNDZmZDExNi4uOTdmYWRjYTBiMyAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zb2NrZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5jcHAK KysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zb2NrZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5jcHAK K0BAIC0xMjk2LDcgKzEyOTYsNyBAQCB2b2lkIFFTb2NrczVTb2NrZXRFbmdpbmVQcml2YXRlOjpf cV91ZHBTb2NrZXRSZWFkTm90aWZpY2F0aW9uKCkKKyAgICAgICAgIGludCBwb3MgPSAwOworICAg ICAgICAgY29uc3QgY2hhciAqYnVmID0gaW5CdWYuY29uc3REYXRhKCk7CisgICAgICAgICBpZiAo aW5CdWYuc2l6ZSgpIDwgNCkgeworLSAgICAgICAgICAgIFFTT0NLUzVfRF9ERUJVRyA8PCAiYnVn dXMgdWRwIGRhdGEsIGRpc2NhcmRpbmciOworKyAgICAgICAgICAgIFFTT0NLUzVfRF9ERUJVRyA8 PCAiYm9ndXMgdWRwIGRhdGEsIGRpc2NhcmRpbmciOworICAgICAgICAgICAgIHJldHVybjsKKyAg ICAgICAgIH0KKyAgICAgICAgIFFTb2NrczVSZXZpdmVkRGF0YWdyYW0gZGF0YWdyYW07CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsY29udGV4dF9vcGVuc3NsLmNwcCBi L3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGNvbnRleHRfb3BlbnNzbC5jcHAKK2luZGV4IGM5 ZjIwMmY1NzMuLmM5OTJkYTlkOGUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3Ns L3Fzc2xjb250ZXh0X29wZW5zc2wuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fz c2xjb250ZXh0X29wZW5zc2wuY3BwCitAQCAtNDA5LDcgKzQwOSw3IEBAIGluaXRfY29udGV4dDoK KyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIFFTc2w6OkR0bHNWMV8wT3JMYXRlcjoKKyAgICAg ICAgIG1pblZlcnNpb24gPSBEVExTMV9WRVJTSU9OOworLSAgICAgICAgbWF4VmVyc2lvbiA9IERU TFNfTUFYX1ZFUlNJT047CisrICAgICAgICBtYXhWZXJzaW9uID0gMDsKKyAgICAgICAgIGJyZWFr OworICAgICBjYXNlIFFTc2w6OkR0bHNWMV8yOgorICAgICAgICAgbWluVmVyc2lvbiA9IERUTFMx XzJfVkVSU0lPTjsKK0BAIC00MTcsNyArNDE3LDcgQEAgaW5pdF9jb250ZXh0OgorICAgICAgICAg YnJlYWs7CisgICAgIGNhc2UgUVNzbDo6RHRsc1YxXzJPckxhdGVyOgorICAgICAgICAgbWluVmVy c2lvbiA9IERUTFMxXzJfVkVSU0lPTjsKKy0gICAgICAgIG1heFZlcnNpb24gPSBEVExTX01BWF9W RVJTSU9OOworKyAgICAgICAgbWF4VmVyc2lvbiA9IDA7CisgICAgICAgICBicmVhazsKKyAgICAg Y2FzZSBRU3NsOjpUbHNWMV8zT3JMYXRlcjoKKyAjaWZkZWYgVExTMV8zX1ZFUlNJT04KK0BAIC00 NTUsNyArNDU1LDcgQEAgaW5pdF9jb250ZXh0OgorICAgICB9CisgCisgICAgIC8vIEVuYWJsZSBi dWcgd29ya2Fyb3VuZHMuCistICAgIGxvbmcgb3B0aW9ucyA9IFFTc2xTb2NrZXRCYWNrZW5kUHJp dmF0ZTo6c2V0dXBPcGVuU3NsT3B0aW9ucyhjb25maWd1cmF0aW9uLnByb3RvY29sKCksIGNvbmZp Z3VyYXRpb24uZC0+c3NsT3B0aW9ucyk7CisrICAgIHFzc2xvcHRpb25zIG9wdGlvbnMgPSBRU3Ns U29ja2V0QmFja2VuZFByaXZhdGU6OnNldHVwT3BlblNzbE9wdGlvbnMoY29uZmlndXJhdGlvbi5w cm90b2NvbCgpLCBjb25maWd1cmF0aW9uLmQtPnNzbE9wdGlvbnMpOworICAgICBxX1NTTF9DVFhf c2V0X29wdGlvbnMoc3NsQ29udGV4dC0+Y3R4LCBvcHRpb25zKTsKKyAKKyAgICAgLy8gVGVsbCBP cGVuU1NMIHRvIHJlbGVhc2UgbWVtb3J5IGVhcmx5CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9u ZXR3b3JrL3NzbC9xc3NsZGlmZmllaGVsbG1hbnBhcmFtZXRlcnNfb3BlbnNzbC5jcHAgYi9xdGJh c2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xkaWZmaWVoZWxsbWFucGFyYW1ldGVyc19vcGVuc3NsLmNw cAoraW5kZXggYWFmODc0MTEzMC4uYjU4OTM1MzcyYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv bmV0d29yay9zc2wvcXNzbGRpZmZpZWhlbGxtYW5wYXJhbWV0ZXJzX29wZW5zc2wuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xkaWZmaWVoZWxsbWFucGFyYW1ldGVyc19vcGVu c3NsLmNwcAorQEAgLTU5LDU3ICs1OSw2IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCist I2lmZGVmIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKy0KKy1zdGF0aWMgaW50IHFfREhfY2hl Y2soREggKmRoLCBpbnQgKnN0YXR1cykKKy17CistICAgIC8vIERIX2NoZWNrIHdhcyBmaXJzdCBk ZXByZWNhdGVkIGluIE9wZW5TU0wgMy4wLjAsIGFzIGxvdy1sZXZlbAorLSAgICAvLyBBUEk7IHRo ZSBFVlBfUEtFWSBmYW1pbHkgb2YgZnVuY3Rpb25zIHdhcyBhZHZpc2VkIGFzIGFuIGFsdGVybmF0 aXZlLgorLSAgICAvLyBBcyBvZiBub3cgRVZQX1BLRVlfcGFyYW1zX2NoZWNrIGVuZHMgdXAgY2Fs bGluZyAuLi4gREhfY2hlY2ssCistICAgIC8vIHdoaWNoIGlzIGdvb2QgZW5vdWdoLgorLQorLSAg ICBRX0FTU0VSVChkaCk7CistICAgIFFfQVNTRVJUKHN0YXR1cyk7CistCistICAgIEVWUF9QS0VZ ICprZXkgPSBxX0VWUF9QS0VZX25ldygpOworLSAgICBpZiAoIWtleSkgeworLSAgICAgICAgcUNX YXJuaW5nKGxjU3NsLCAiRVZQX1BLRVlfbmV3IGZhaWxlZCIpOworLSAgICAgICAgUVNzbFNvY2tl dEJhY2tlbmRQcml2YXRlOjpsb2dBbmRDbGVhckVycm9yUXVldWUoKTsKKy0gICAgICAgIHJldHVy biAwOworLSAgICB9CistICAgIGNvbnN0IGF1dG8ga2V5RGVsZXRlciA9IHFTY29wZUd1YXJkKFtr ZXldKCl7CistICAgICAgICBxX0VWUF9QS0VZX2ZyZWUoa2V5KTsKKy0gICAgfSk7CistICAgIGlm ICghcV9FVlBfUEtFWV9zZXQxX0RIKGtleSwgZGgpKSB7CistICAgICAgICBxQ1dhcm5pbmcobGNT c2wsICJFVlBfUEtFWV9zZXQxX0RIIGZhaWxlZCIpOworLSAgICAgICAgUVNzbFNvY2tldEJhY2tl bmRQcml2YXRlOjpsb2dBbmRDbGVhckVycm9yUXVldWUoKTsKKy0gICAgICAgIHJldHVybiAwOwor LSAgICB9CistCistICAgIEVWUF9QS0VZX0NUWCAqa2V5Q3R4ID0gcV9FVlBfUEtFWV9DVFhfbmV3 KGtleSwgbnVsbHB0cik7CistICAgIGlmICgha2V5Q3R4KSB7CistICAgICAgICBxQ1dhcm5pbmco bGNTc2wsICJFVlBfUEtFWV9DVFhfbmV3IGZhaWxlZCIpOworLSAgICAgICAgUVNzbFNvY2tldEJh Y2tlbmRQcml2YXRlOjpsb2dBbmRDbGVhckVycm9yUXVldWUoKTsKKy0gICAgICAgIHJldHVybiAw OworLSAgICB9CistICAgIGNvbnN0IGF1dG8gY3R4RGVsZXRlciA9IHFTY29wZUd1YXJkKFtrZXlD dHhdeworLSAgICAgICAgcV9FVlBfUEtFWV9DVFhfZnJlZShrZXlDdHgpOworLSAgICB9KTsKKy0K Ky0gICAgY29uc3QgaW50IHJlc3VsdCA9IHFfRVZQX1BLRVlfcGFyYW1fY2hlY2soa2V5Q3R4KTsK Ky0gICAgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpsb2dBbmRDbGVhckVycm9yUXVldWUoKTsK Ky0gICAgLy8gTm90ZTogdW5saWtlIERIX2NoZWNrLCB3ZSBjYW5ub3Qgb2J0YWluIHRoZSAnc3Rh dHVzJywKKy0gICAgLy8gaWYgdGhlICdyZXN1bHQnIGlzIDAgKGFjdHVhbGx5IHRoZSByZXN1bHQg aXMgMSBvbmx5CistICAgIC8vIGlmIHRoaXMgJ3N0YXR1cycgd2FzIDApLiBXZSBjb3VsZCBwcm9i YWJseSBjaGVjayB0aGUKKy0gICAgLy8gZXJyb3JzIGZyb20gdGhlIGVycm9yIHF1ZXVlLCBidXQg aXQncyBub3QgbmVlZGVkIGFueXdheQorLSAgICAvLyAtIHNlZSB0aGUgJ2lzU2FmZURIJyBiZWxv dywgaG93IGl0IHJldHVybnMgaW1tZWRpYXRlbHkKKy0gICAgLy8gb24gMC4KKy0gICAgUV9VTlVT RUQoc3RhdHVzKQorLQorLSAgICByZXR1cm4gcmVzdWx0OworLX0KKy0jZW5kaWYgLy8gT1BFTlNT TF9OT19ERVBSRUNBVEVEXzNfMAorLQorIHN0YXRpYyBib29sIGlzU2FmZURIKERIICpkaCkKKyB7 CisgICAgIGludCBzdGF0dXMgPSAwOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9z c2wvcXNzbHNvY2tldF9vcGVuc3NsLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNv Y2tldF9vcGVuc3NsLmNwcAoraW5kZXggMzdmYWQyYTY4Zi4uOGY2ODU4Yzg2NyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsLmNwcAorKysrIGIv cXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2wuY3BwCitAQCAtNTUwLDkg KzU1MCw5IEBAIHN0YXRpYyB2b2lkIHFfbG9hZENpcGhlcnNGb3JDb25uZWN0aW9uKFNTTCAqY29u bmVjdGlvbiwgUUxpc3Q8UVNzbENpcGhlcj4gJmNpcGhlCisgLy8gRGVmaW5lZCBpbiBxc3Nsc29j a2V0LmNwcAorIHZvaWQgcV9zZXREZWZhdWx0RHRsc0NpcGhlcnMoY29uc3QgUUxpc3Q8UVNzbENp cGhlcj4gJmNpcGhlcnMpOworIAorLWxvbmcgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpzZXR1 cE9wZW5Tc2xPcHRpb25zKFFTc2w6OlNzbFByb3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRp b25zIHNzbE9wdGlvbnMpCisrcXNzbG9wdGlvbnMgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpz ZXR1cE9wZW5Tc2xPcHRpb25zKFFTc2w6OlNzbFByb3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xP cHRpb25zIHNzbE9wdGlvbnMpCisgeworLSAgICBsb25nIG9wdGlvbnM7CisrICAgIHFzc2xvcHRp b25zIG9wdGlvbnM7CisgICAgIGlmIChwcm90b2NvbCA9PSBRU3NsOjpUbHNWMVNzbFYzKQorICAg ICAgICAgb3B0aW9ucyA9IFNTTF9PUF9BTEx8U1NMX09QX05PX1NTTHYyfFNTTF9PUF9OT19TU0x2 MzsKKyAgICAgZWxzZSBpZiAocHJvdG9jb2wgPT0gUVNzbDo6U2VjdXJlUHJvdG9jb2xzKQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3AuaCBi L3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3AuaAoraW5kZXggNDEw M2RlMjNlOC4uNTU0NzU4OTI1NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wv cXNzbHNvY2tldF9vcGVuc3NsX3AuaAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Ns c29ja2V0X29wZW5zc2xfcC5oCitAQCAtMTA3LDYgKzEwNywxMiBAQAorIAorIFFUX0JFR0lOX05B TUVTUEFDRQorIAorKyNpZiBkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNT TF9WRVJTSU9OX01BSk9SID49IDMKKyt0eXBlZGVmIHVpbnQ2NF90IHFzc2xvcHRpb25zOworKyNl bHNlCisrdHlwZWRlZiB1bnNpZ25lZCBsb25nIHFzc2xvcHRpb25zOworKyNlbmRpZgorKworIHN0 cnVjdCBRU3NsRXJyb3JFbnRyeSB7CisgICAgIGludCBjb2RlOworICAgICBpbnQgZGVwdGg7CitA QCAtMTcxLDcgKzE3Nyw3IEBAIHB1YmxpYzoKKyAgICAgUVZlY3RvcjxRU3NsRXJyb3I+IG9jc3BF cnJvcnM7CisgICAgIFFCeXRlQXJyYXkgb2NzcFJlc3BvbnNlRGVyOworIAorLSAgICBRX0FVVE9U RVNUX0VYUE9SVCBzdGF0aWMgbG9uZyBzZXR1cE9wZW5Tc2xPcHRpb25zKFFTc2w6OlNzbFByb3Rv Y29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRpb25zIHNzbE9wdGlvbnMpOworKyAgICBRX0FVVE9U RVNUX0VYUE9SVCBzdGF0aWMgcXNzbG9wdGlvbnMgc2V0dXBPcGVuU3NsT3B0aW9ucyhRU3NsOjpT c2xQcm90b2NvbCBwcm90b2NvbCwgUVNzbDo6U3NsT3B0aW9ucyBzc2xPcHRpb25zKTsKKyAgICAg c3RhdGljIFFTc2xDaXBoZXIgUVNzbENpcGhlcl9mcm9tX1NTTF9DSVBIRVIoY29uc3QgU1NMX0NJ UEhFUiAqY2lwaGVyKTsKKyAgICAgc3RhdGljIFFMaXN0PFFTc2xDZXJ0aWZpY2F0ZT4gU1RBQ0tP Rlg1MDlfdG9fUVNzbENlcnRpZmljYXRlcyhTVEFDS19PRihYNTA5KSAqeDUwOSk7CisgICAgIHN0 YXRpYyBRTGlzdDxRU3NsRXJyb3I+IHZlcmlmeShjb25zdCBRTGlzdDxRU3NsQ2VydGlmaWNhdGU+ ICZjZXJ0aWZpY2F0ZUNoYWluLCBjb25zdCBRU3RyaW5nICZob3N0TmFtZSk7CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9scy5jcHAg Yi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzLmNwcAor aW5kZXggZTUzZmIyNzlmMC4uNDU5Y2NkMGIxOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0 d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHMuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzLmNwcAorQEAgLTE0OCw3ICsx NDgsNiBAQCBERUZJTkVGVU5DKGludCwgRVZQX1BLRVlfdXBfcmVmLCBFVlBfUEtFWSAqYSwgYSwg cmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5DMihFVlBfUEtFWV9DVFggKiwgRVZQX1BLRVlf Q1RYX25ldywgRVZQX1BLRVkgKnBrZXksIHBrZXksIEVOR0lORSAqZSwgZSwgcmV0dXJuIG51bGxw dHIsIHJldHVybikKKyBERUZJTkVGVU5DKGludCwgRVZQX1BLRVlfcGFyYW1fY2hlY2ssIEVWUF9Q S0VZX0NUWCAqY3R4LCBjdHgsIHJldHVybiAwLCByZXR1cm4pCisgREVGSU5FRlVOQyh2b2lkLCBF VlBfUEtFWV9DVFhfZnJlZSwgRVZQX1BLRVlfQ1RYICpjdHgsIGN0eCwgcmV0dXJuLCByZXR1cm4p CistREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX2Jhc2VfaWQsIEVWUF9QS0VZICphLCBhLCByZXR1 cm4gTklEX3VuZGVmLCByZXR1cm4pCisgREVGSU5FRlVOQyhpbnQsIFJTQV9iaXRzLCBSU0EgKmEs IGEsIHJldHVybiAwLCByZXR1cm4pCisgREVGSU5FRlVOQyhpbnQsIERTQV9iaXRzLCBEU0EgKmEs IGEsIHJldHVybiAwLCByZXR1cm4pCisgREVGSU5FRlVOQyhpbnQsIE9QRU5TU0xfc2tfbnVtLCBP UEVOU1NMX1NUQUNLICphLCBhLCByZXR1cm4gLTEsIHJldHVybikKK0BAIC0xNTgsNyArMTU3LDcg QEAgREVGSU5FRlVOQzIodm9pZCwgT1BFTlNTTF9za19wdXNoLCBPUEVOU1NMX1NUQUNLICphLCBh LCB2b2lkICpiLCBiLCByZXR1cm4sIERVTU0KKyBERUZJTkVGVU5DKHZvaWQsIE9QRU5TU0xfc2tf ZnJlZSwgT1BFTlNTTF9TVEFDSyAqYSwgYSwgcmV0dXJuLCBEVU1NWUFSRykKKyBERUZJTkVGVU5D Mih2b2lkICosIE9QRU5TU0xfc2tfdmFsdWUsIE9QRU5TU0xfU1RBQ0sgKmEsIGEsIGludCBiLCBi LCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBTU0xfc2Vzc2lvbl9y ZXVzZWQsIFNTTCAqYSwgYSwgcmV0dXJuIDAsIHJldHVybikKKy1ERUZJTkVGVU5DMih1bnNpZ25l ZCBsb25nLCBTU0xfQ1RYX3NldF9vcHRpb25zLCBTU0xfQ1RYICpjdHgsIGN0eCwgdW5zaWduZWQg bG9uZyBvcCwgb3AsIHJldHVybiAwLCByZXR1cm4pCisrREVGSU5FRlVOQzIocXNzbG9wdGlvbnMs IFNTTF9DVFhfc2V0X29wdGlvbnMsIFNTTF9DVFggKmN0eCwgY3R4LCBxc3Nsb3B0aW9ucyBvcCwg b3AsIHJldHVybiAwLCByZXR1cm4pCisgREVGSU5FRlVOQyhpbnQsIFNTTF9DVFhfZ2V0X3NlY3Vy aXR5X2xldmVsLCBjb25zdCBTU0xfQ1RYICpjdHgsIGN0eCwgcmV0dXJuIC0xLCByZXR1cm4pCisg REVGSU5FRlVOQzIodm9pZCwgU1NMX0NUWF9zZXRfc2VjdXJpdHlfbGV2ZWwsIFNTTF9DVFggKmN0 eCwgY3R4LCBpbnQgbGV2ZWwsIGxldmVsLCByZXR1cm4sIHJldHVybikKKyAjaWZkZWYgVExTMV8z X1ZFUlNJT04KK0BAIC0zNzEsNyArMzcwLDE1IEBAIERFRklORUZVTkMoY29uc3QgU1NMX0NJUEhF UiAqLCBTU0xfZ2V0X2N1cnJlbnRfY2lwaGVyLCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRyCisg REVGSU5FRlVOQyhpbnQsIFNTTF92ZXJzaW9uLCBjb25zdCBTU0wgKmEsIGEsIHJldHVybiAwLCBy ZXR1cm4pCisgREVGSU5FRlVOQzIoaW50LCBTU0xfZ2V0X2Vycm9yLCBTU0wgKmEsIGEsIGludCBi LCBiLCByZXR1cm4gLTEsIHJldHVybikKKyBERUZJTkVGVU5DKFNUQUNLX09GKFg1MDkpICosIFNT TF9nZXRfcGVlcl9jZXJ0X2NoYWluLCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRyLCByZXR1cm4p CisrCisrI2lmIGRlZmluZWQoT1BFTlNTTF9WRVJTSU9OX01BSk9SKSAmJiBPUEVOU1NMX1ZFUlNJ T05fTUFKT1IgPj0gMworK0RFRklORUZVTkMoWDUwOSAqLCBTU0xfZ2V0MV9wZWVyX2NlcnRpZmlj YXRlLCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisrREVGSU5FRlVOQyhpbnQs IEVWUF9QS0VZX2dldF9iYXNlX2lkLCBjb25zdCBFVlBfUEtFWSAqcGtleSwgcGtleSwgcmV0dXJu IC0xLCByZXR1cm4pCisrI2Vsc2UKKyBERUZJTkVGVU5DKFg1MDkgKiwgU1NMX2dldF9wZWVyX2Nl cnRpZmljYXRlLCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisrREVGSU5FRlVO QyhpbnQsIEVWUF9QS0VZX2Jhc2VfaWQsIEVWUF9QS0VZICphLCBhLCByZXR1cm4gTklEX3VuZGVm LCByZXR1cm4pCisrI2VuZGlmIC8vIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrCisgREVG SU5FRlVOQyhsb25nLCBTU0xfZ2V0X3ZlcmlmeV9yZXN1bHQsIGNvbnN0IFNTTCAqYSwgYSwgcmV0 dXJuIC0xLCByZXR1cm4pCisgREVGSU5FRlVOQyhTU0wgKiwgU1NMX25ldywgU1NMX0NUWCAqYSwg YSwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyBERUZJTkVGVU5DKFNTTF9DVFggKiwgU1NMX2dl dF9TU0xfQ1RYLCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCitAQCAtNDkyLDkg KzQ5OSw3IEBAIERFRklORUZVTkMoREggKiwgREhfbmV3LCBEVU1NWUFSRywgRFVNTVlBUkcsIHJl dHVybiBudWxscHRyLCByZXR1cm4pCisgREVGSU5FRlVOQyh2b2lkLCBESF9mcmVlLCBESCAqZGgs IGRoLCByZXR1cm4sIERVTU1ZQVJHKQorIERFRklORUZVTkMzKERIICosIGQyaV9ESHBhcmFtcywg REgqKmEsIGEsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKipwcCwgcHAsIGxvbmcgbGVuZ3RoLCBsZW5n dGgsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisgREVGSU5FRlVOQzIoaW50LCBpMmRfREhwYXJh bXMsIERIICphLCBhLCB1bnNpZ25lZCBjaGFyICoqcCwgcCwgcmV0dXJuIC0xLCByZXR1cm4pCist I2lmbmRlZiBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCisgREVGSU5FRlVOQzIoaW50LCBESF9j aGVjaywgREggKmRoLCBkaCwgaW50ICpjb2RlcywgY29kZXMsIHJldHVybiAwLCByZXR1cm4pCist I2VuZGlmIC8vIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyBERUZJTkVGVU5DMyhCSUdOVU0g KiwgQk5fYmluMmJuLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzLCBzLCBpbnQgbGVuLCBsZW4sIEJJ R05VTSAqcmV0LCByZXQsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisgCisgI2lmbmRlZiBPUEVO U1NMX05PX0VDCitAQCAtODY4LDcgKzg3Myw2IEBAIGJvb2wgcV9yZXNvbHZlT3BlblNzbFN5bWJv bHMoKQorICAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9DVFhfbmV3KQorICAgICBSRVNPTFZFRlVO QyhFVlBfUEtFWV9wYXJhbV9jaGVjaykKKyAgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfQ1RYX2Zy ZWUpCistICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX2Jhc2VfaWQpCisgICAgIFJFU09MVkVGVU5D KFJTQV9iaXRzKQorICAgICBSRVNPTFZFRlVOQyhPUEVOU1NMX3NrX25ld19udWxsKQorICAgICBS RVNPTFZFRlVOQyhPUEVOU1NMX3NrX3B1c2gpCitAQCAtMTEwNyw3ICsxMTExLDE1IEBAIGJvb2wg cV9yZXNvbHZlT3BlblNzbFN5bWJvbHMoKQorICAgICBSRVNPTFZFRlVOQyhTU0xfdmVyc2lvbikK KyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9lcnJvcikKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dl dF9wZWVyX2NlcnRfY2hhaW4pCisrCisrI2lmIGRlZmluZWQoT1BFTlNTTF9WRVJTSU9OX01BSk9S KSAmJiBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworKyAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0 MV9wZWVyX2NlcnRpZmljYXRlKQorKyAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9nZXRfYmFzZV9p ZCkKKysjZWxzZQorICAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUpCisr ICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX2Jhc2VfaWQpCisrI2VuZGlmIC8vIE9QRU5TU0xfVkVS U0lPTl9NQUpPUiA+PSAzCisrCisgICAgIFJFU09MVkVGVU5DKFNTTF9nZXRfdmVyaWZ5X3Jlc3Vs dCkKKyAgICAgUkVTT0xWRUZVTkMoU1NMX25ldykKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9T U0xfQ1RYKQorQEAgLTEyMDYsOSArMTIxOCw3IEBAIGJvb2wgcV9yZXNvbHZlT3BlblNzbFN5bWJv bHMoKQorICAgICBSRVNPTFZFRlVOQyhESF9mcmVlKQorICAgICBSRVNPTFZFRlVOQyhkMmlfREhw YXJhbXMpCisgICAgIFJFU09MVkVGVU5DKGkyZF9ESHBhcmFtcykKKy0jaWZuZGVmIE9QRU5TU0xf Tk9fREVQUkVDQVRFRF8zXzAKKyAgICAgUkVTT0xWRUZVTkMoREhfY2hlY2spCistI2VuZGlmIC8v IE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyAgICAgUkVTT0xWRUZVTkMoQk5fYmluMmJuKQor IAorICNpZm5kZWYgT1BFTlNTTF9OT19FQworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29y ay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHNfcC5oIGIvcXRiYXNlL3NyYy9uZXR3b3Jr L3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9sc19wLmgKK2luZGV4IDk1ZTg4OTdhM2IuLjI3 YWVmZmExOGEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRf b3BlbnNzbF9zeW1ib2xzX3AuaAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29j a2V0X29wZW5zc2xfc3ltYm9sc19wLmgKK0BAIC0yMzcsNyArMjM3LDYgQEAgUV9BVVRPVEVTVF9F WFBPUlQgaW50IHFfRVZQX1BLRVlfdXBfcmVmKEVWUF9QS0VZICphKTsKKyBFVlBfUEtFWV9DVFgg KnFfRVZQX1BLRVlfQ1RYX25ldyhFVlBfUEtFWSAqcGtleSwgRU5HSU5FICplKTsKKyB2b2lkIHFf RVZQX1BLRVlfQ1RYX2ZyZWUoRVZQX1BLRVlfQ1RYICpjdHgpOworIGludCBxX0VWUF9QS0VZX3Bh cmFtX2NoZWNrKEVWUF9QS0VZX0NUWCAqY3R4KTsKKy1pbnQgcV9FVlBfUEtFWV9iYXNlX2lkKEVW UF9QS0VZICphKTsKKyBpbnQgcV9SU0FfYml0cyhSU0EgKmEpOworIFFfQVVUT1RFU1RfRVhQT1JU IGludCBxX09QRU5TU0xfc2tfbnVtKE9QRU5TU0xfU1RBQ0sgKmEpOworIFFfQVVUT1RFU1RfRVhQ T1JUIHZvaWQgcV9PUEVOU1NMX3NrX3BvcF9mcmVlKE9QRU5TU0xfU1RBQ0sgKmEsIHZvaWQgKCpi KSh2b2lkICopKTsKK0BAIC0yNDYsNyArMjQ1LDcgQEAgUV9BVVRPVEVTVF9FWFBPUlQgdm9pZCBx X09QRU5TU0xfc2tfcHVzaChPUEVOU1NMX1NUQUNLICpzdCwgdm9pZCAqZGF0YSk7CisgUV9BVVRP VEVTVF9FWFBPUlQgdm9pZCBxX09QRU5TU0xfc2tfZnJlZShPUEVOU1NMX1NUQUNLICphKTsKKyBR X0FVVE9URVNUX0VYUE9SVCB2b2lkICogcV9PUEVOU1NMX3NrX3ZhbHVlKE9QRU5TU0xfU1RBQ0sg KmEsIGludCBiKTsKKyBpbnQgcV9TU0xfc2Vzc2lvbl9yZXVzZWQoU1NMICphKTsKKy11bnNpZ25l ZCBsb25nIHFfU1NMX0NUWF9zZXRfb3B0aW9ucyhTU0xfQ1RYICpjdHgsIHVuc2lnbmVkIGxvbmcg b3ApOworK3Fzc2xvcHRpb25zIHFfU1NMX0NUWF9zZXRfb3B0aW9ucyhTU0xfQ1RYICpjdHgsIHFz c2xvcHRpb25zIG9wKTsKKyBpbnQgcV9PUEVOU1NMX2luaXRfc3NsKHVpbnQ2NF90IG9wdHMsIGNv bnN0IE9QRU5TU0xfSU5JVF9TRVRUSU5HUyAqc2V0dGluZ3MpOworIHNpemVfdCBxX1NTTF9nZXRf Y2xpZW50X3JhbmRvbShTU0wgKmEsIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxlbik7 Cisgc2l6ZV90IHFfU1NMX1NFU1NJT05fZ2V0X21hc3Rlcl9rZXkoY29uc3QgU1NMX1NFU1NJT04g KnNlc3Npb24sIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxlbik7CitAQCAtNTEwLDcg KzUwOSw2IEBAIGNvbnN0IFNTTF9DSVBIRVIgKnFfU1NMX2dldF9jdXJyZW50X2NpcGhlcihTU0wg KmEpOworIGludCBxX1NTTF92ZXJzaW9uKGNvbnN0IFNTTCAqYSk7CisgaW50IHFfU1NMX2dldF9l cnJvcihTU0wgKmEsIGludCBiKTsKKyBTVEFDS19PRihYNTA5KSAqcV9TU0xfZ2V0X3BlZXJfY2Vy dF9jaGFpbihTU0wgKmEpOworLVg1MDkgKnFfU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKFNTTCAq YSk7CisgbG9uZyBxX1NTTF9nZXRfdmVyaWZ5X3Jlc3VsdChjb25zdCBTU0wgKmEpOworIFNTTCAq cV9TU0xfbmV3KFNTTF9DVFggKmEpOworIFNTTF9DVFggKnFfU1NMX2dldF9TU0xfQ1RYKFNTTCAq YSk7CitAQCAtNTgyLDEwICs1ODAsNyBAQCBESCAqcV9ESF9uZXcoKTsKKyB2b2lkIHFfREhfZnJl ZShESCAqZGgpOworIERIICpxX2QyaV9ESHBhcmFtcyhESCAqKmEsIGNvbnN0IHVuc2lnbmVkIGNo YXIgKipwcCwgbG9uZyBsZW5ndGgpOworIGludCBxX2kyZF9ESHBhcmFtcyhESCAqYSwgdW5zaWdu ZWQgY2hhciAqKnApOworLQorLSNpZm5kZWYgT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorIGlu dCBxX0RIX2NoZWNrKERIICpkaCwgaW50ICpjb2Rlcyk7CistI2VuZGlmIC8vIE9QRU5TU0xfTk9f REVQUkVDQVRFRF8zXzAKKyAKKyBCSUdOVU0gKnFfQk5fYmluMmJuKGNvbnN0IHVuc2lnbmVkIGNo YXIgKnMsIGludCBsZW4sIEJJR05VTSAqcmV0KTsKKyAjZGVmaW5lIHFfU1NMX0NUWF9zZXRfdG1w X2RoKGN0eCwgZGgpIHFfU1NMX0NUWF9jdHJsKChjdHgpLCBTU0xfQ1RSTF9TRVRfVE1QX0RILCAw LCAoY2hhciAqKWRoKQorQEAgLTc1NCw2ICs3NDksMTcgQEAgdm9pZCBxX0NSWVBUT19mcmVlKHZv aWQgKnN0ciwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUpOworIGludCBxX1NTTF9DVFhfZ2V0 X3NlY3VyaXR5X2xldmVsKGNvbnN0IFNTTF9DVFggKmN0eCk7Cisgdm9pZCBxX1NTTF9DVFhfc2V0 X3NlY3VyaXR5X2xldmVsKFNTTF9DVFggKmN0eCwgaW50IGxldmVsKTsKKyAKKysvLyBIZXJlIHdl IGhhdmUgdGhlIG9uZXMgdGhhdCBtYWtlIGRpZmZlcmVuY2UgYmV0d2VlbiBPcGVuU1NMIHByZS9w b3N0IHYzOgorKyNpZiBkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNTTF9W RVJTSU9OX01BSk9SID49IDMKKytYNTA5ICpxX1NTTF9nZXQxX3BlZXJfY2VydGlmaWNhdGUoU1NM ICphKTsKKysjZGVmaW5lIHFfU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlIHFfU1NMX2dldDFfcGVl cl9jZXJ0aWZpY2F0ZQorK2ludCBxX0VWUF9QS0VZX2dldF9iYXNlX2lkKGNvbnN0IEVWUF9QS0VZ ICpwa2V5KTsKKysjZGVmaW5lIHFfRVZQX1BLRVlfYmFzZV9pZCBxX0VWUF9QS0VZX2dldF9iYXNl X2lkCisrI2Vsc2UKKytYNTA5ICpxX1NTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZShTU0wgKmEpOwor K2ludCBxX0VWUF9QS0VZX2Jhc2VfaWQoRVZQX1BLRVkgKmEpOworKyNlbmRpZiAvLyBPUEVOU1NM X1ZFUlNJT05fTUFKT1IgPj0gMworKworIFFUX0VORF9OQU1FU1BBQ0UKKyAKKyAjZW5kaWYKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9xdF9l Z2xfcC5oIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZWdsY29udmVuaWVuY2UvcXRfZWds X3AuaAoraW5kZXggYmYzN2QwN2ZkOC4uZGJkNDJmYjc5OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvcGxhdGZvcm1zdXBwb3J0L2VnbGNvbnZlbmllbmNlL3F0X2VnbF9wLmgKKysrKyBiL3F0YmFz ZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2VnbGNvbnZlbmllbmNlL3F0X2VnbF9wLmgKK0BAIC02MSw3 ICs2MSwxMSBAQAorICMgaWYgIWRlZmluZWQoUV9PU19JTlRFR1JJVFkpCisgIyAgZGVmaW5lIFdJ Tl9JTlRFUkZBQ0VfQ1VTVE9NICAgLy8gTlYKKyAjIGVuZGlmIC8vIFFfT1NfSU5URUdSSVRZCist I2VuZGlmICAvLyBRVF9FR0xfTk9fWDExCisrI2Vsc2UgLy8gUVRfRUdMX05PX1gxMQorKy8vIElm IG9uZSBoYXMgYW4gZWdscGxhdGZvcm0uaCB3aXRoIGh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9z R3JvdXAvRUdMLVJlZ2lzdHJ5L3B1bGwvMTMwCisrLy8gdGhhdCBuZWVkcyBVU0VfWDExIHRvIGJl IGRlZmluZWQuCisrIyBkZWZpbmUgVVNFX1gxMQorKyNlbmRpZgorIAorICNpZmRlZiBRVF9FR0xf V0FZTEFORAorICMgZGVmaW5lIFdBWUxBTkQgLy8gTlYKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRjb25maWcvcWZvbnRjb25maWdkYXRh YmFzZS5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRj b25maWcvcWZvbnRjb25maWdkYXRhYmFzZS5jcHAKK2luZGV4IDE1OWI0OTBjZTAuLjAwYWE4MGNk NTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJhc2Vz L2ZvbnRjb25maWcvcWZvbnRjb25maWdkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxh dGZvcm1zdXBwb3J0L2ZvbnRkYXRhYmFzZXMvZm9udGNvbmZpZy9xZm9udGNvbmZpZ2RhdGFiYXNl LmNwcAorQEAgLTU2Nyw2ICs1NjcsOCBAQCB2b2lkIFFGb250Y29uZmlnRGF0YWJhc2U6OnBvcHVs YXRlRm9udERhdGFiYXNlKCkKKyAgICAgICAgIGZvbnRzID0gRmNGb250TGlzdChudWxscHRyLCBw YXR0ZXJuLCBvcyk7CisgICAgICAgICBGY09iamVjdFNldERlc3Ryb3kob3MpOworICAgICAgICAg RmNQYXR0ZXJuRGVzdHJveShwYXR0ZXJuKTsKKysgICAgICAgIGlmICghZm9udHMpCisrICAgICAg ICAgICAgcmV0dXJuOworICAgICB9CisgCisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZm9udHMt Pm5mb250OyBpKyspCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5w dXQveGtiY29tbW9uL3F4a2Jjb21tb24uY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQv aW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb24uY3BwCitpbmRleCBiNzEzYzE5NDQ3Li43Y2I5YThj NzlhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29t bW9uL3F4a2Jjb21tb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1 dC94a2Jjb21tb24vcXhrYmNvbW1vbi5jcHAKK0BAIC05NSw2ICs5NSw3IEBAIHN0YXRpYyBjb25z dGV4cHIgY29uc3QgYXV0byBLZXlUYmwgPSBxTWFrZUFycmF5KAorICAgICAgICAgWGtiMlF0PFhL Ql9LRVlfQ2xlYXIsICAgICAgICAgICAgICAgICAgIFF0OjpLZXlfRGVsZXRlPiwKKyAgICAgICAg IFhrYjJRdDxYS0JfS0VZX1BhdXNlLCAgICAgICAgICAgICAgICAgICBRdDo6S2V5X1BhdXNlPiwK KyAgICAgICAgIFhrYjJRdDxYS0JfS0VZX1ByaW50LCAgICAgICAgICAgICAgICAgICBRdDo6S2V5 X1ByaW50PiwKKysgICAgICAgIFhrYjJRdDxYS0JfS0VZX1N5c19SZXEsICAgICAgICAgICAgICAg ICBRdDo6S2V5X1N5c1JlcT4sCisgICAgICAgICBYa2IyUXQ8MHgxMDA1RkY2MCwgICAgICAgICAg ICAgICAgICAgICAgUXQ6OktleV9TeXNSZXE+LCAgICAgICAgIC8vIGhhcmRjb2RlZCBTdW4gU3lz UmVxCisgICAgICAgICBYa2IyUXQ8MHgxMDA3ZmYwMCwgICAgICAgICAgICAgICAgICAgICAgUXQ6 OktleV9TeXNSZXE+LCAgICAgICAgIC8vIGhhcmRjb2RlZCBYMzg2IFN5c1JlcQorIAorQEAgLTQ3 MSw3ICs0NzIsNyBAQCBRVmVjdG9yPHhrYl9rZXlzeW1fdD4gUVhrYkNvbW1vbjo6dG9LZXlzeW0o UUtleUV2ZW50ICpldmVudCkKKyAgICAgfSBlbHNlIGlmIChldmVudC0+bW9kaWZpZXJzKCkgJiBR dDo6S2V5cGFkTW9kaWZpZXIpIHsKKyAgICAgICAgIGlmIChxdEtleSA+PSBRdDo6S2V5XzAgJiYg cXRLZXkgPD0gUXQ6OktleV85KQorICAgICAgICAgICAgIGtleXN5bXMuYXBwZW5kKFhLQl9LRVlf S1BfMCArIChxdEtleSAtIFF0OjpLZXlfMCkpOworLSAgICB9IGVsc2UgaWYgKGlzTGF0aW4ocXRL ZXkpICYmIGV2ZW50LT50ZXh0KCkuaXNVcHBlcigpKSB7CisrICAgIH0gZWxzZSBpZiAoaXNMYXRp bjEocXRLZXkpICYmIGV2ZW50LT50ZXh0KCkuaXNVcHBlcigpKSB7CisgICAgICAgICBrZXlzeW1z LmFwcGVuZChxdEtleSk7CisgICAgIH0KKyAKK0BAIC01MjMsNyArNTI0LDcgQEAgaW50IFFYa2JD b21tb246OmtleXN5bVRvUXRLZXkoeGtiX2tleXN5bV90IGtleXN5bSwgUXQ6OktleWJvYXJkTW9k aWZpZXJzIG1vZGlmaWUKKyAgICAgICAgIC8vIFdpdGggc3RhbmRhcmQgc2hvcnRjdXRzIHdlIHNo b3VsZCBwcmVmZXIgYSBsYXRpbiBjaGFyYWN0ZXIsIHRoaXMgaXMKKyAgICAgICAgIC8vIGZvciBj aGVja3MgbGlrZSAic29tZSBxa2V5ZXZlbnQgPT0gUUtleVNlcXVlbmNlOjpDb3B5IiB0byB3b3Jr IGV2ZW4KKyAgICAgICAgIC8vIHdoZW4gdXNpbmcgZm9yIGV4YW1wbGUgJ3J1c3NpYW4nIGtleWJv YXJkIGxheW91dC4KKy0gICAgICAgIGlmICghUVhrYkNvbW1vbjo6aXNMYXRpbihrZXlzeW0pKSB7 CisrICAgICAgICBpZiAoIVFYa2JDb21tb246OmlzTGF0aW4xKGtleXN5bSkpIHsKKyAgICAgICAg ICAgICB4a2Jfa2V5c3ltX3QgbGF0aW5LZXlzeW0gPSBRWGtiQ29tbW9uOjpsb29rdXBMYXRpbktl eXN5bShzdGF0ZSwgY29kZSk7CisgICAgICAgICAgICAgaWYgKGxhdGluS2V5c3ltICE9IFhLQl9L RVlfTm9TeW1ib2wpCisgICAgICAgICAgICAgICAgIGtleXN5bSA9IGxhdGluS2V5c3ltOworQEAg LTU0Niw3ICs1NDcsNyBAQCBzdGF0aWMgaW50IGtleXN5bVRvUXRLZXlfaW50ZXJuYWwoeGtiX2tl eXN5bV90IGtleXN5bSwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZAorICAgICB9IGVsc2UgaWYg KGtleXN5bSA+PSBYS0JfS0VZX0tQXzAgJiYga2V5c3ltIDw9IFhLQl9LRVlfS1BfOSkgeworICAg ICAgICAgLy8gbnVtZXJpYyBrZXlwYWQga2V5cworICAgICAgICAgcXRLZXkgPSBRdDo6S2V5XzAg KyAoa2V5c3ltIC0gWEtCX0tFWV9LUF8wKTsKKy0gICAgfSBlbHNlIGlmIChRWGtiQ29tbW9uOjpp c0xhdGluKGtleXN5bSkpIHsKKysgICAgfSBlbHNlIGlmIChRWGtiQ29tbW9uOjppc0xhdGluMShr ZXlzeW0pKSB7CisgICAgICAgICBxdEtleSA9IFFYa2JDb21tb246OnF4a2Jjb21tb25feGtiX2tl eXN5bV90b191cHBlcihrZXlzeW0pOworICAgICB9IGVsc2UgeworICAgICAgICAgLy8gY2hlY2sg aWYgd2UgaGF2ZSBhIGRpcmVjdCBtYXBwaW5nCitAQCAtNjc4LDcgKzY3OSw3IEBAIFFMaXN0PGlu dD4gUVhrYkNvbW1vbjo6cG9zc2libGVLZXlzKHhrYl9zdGF0ZSAqc3RhdGUsIGNvbnN0IFFLZXlF dmVudCAqZXZlbnQsCisgICAgICAgICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbmVlZGVkTW9kcyA9 IE1vZHNUYmxbaV07CisgICAgICAgICBpZiAoKG1vZGlmaWVycyAmIG5lZWRlZE1vZHMpID09IG5l ZWRlZE1vZHMpIHsKKyAgICAgICAgICAgICBpZiAoaSA9PSA4KSB7CistICAgICAgICAgICAgICAg IGlmIChpc0xhdGluKGJhc2VRdEtleSkpCisrICAgICAgICAgICAgICAgIGlmIChpc0xhdGluMShi YXNlUXRLZXkpKQorICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAg ICAgIC8vIGFkZCBhIGxhdGluIGtleSBhcyBhIGZhbGwgYmFjayBrZXkKKyAgICAgICAgICAgICAg ICAgc3ltID0gbG9va3VwTGF0aW5LZXlzeW0oc3RhdGUsIGtleWNvZGUpOworQEAgLTczMyw3ICs3 MzQsNyBAQCB2b2lkIFFYa2JDb21tb246OnZlcmlmeUhhc0xhdGluTGF5b3V0KHhrYl9rZXltYXAg KmtleW1hcCkKKyAgICAgZm9yICh4a2JfbGF5b3V0X2luZGV4X3QgbGF5b3V0ID0gMDsgbGF5b3V0 IDwgbGF5b3V0Q291bnQ7ICsrbGF5b3V0KSB7CisgICAgICAgICBmb3IgKHhrYl9rZXljb2RlX3Qg Y29kZSA9IG1pbktleWNvZGU7IGNvZGUgPCBtYXhLZXljb2RlOyArK2NvZGUpIHsKKyAgICAgICAg ICAgICB4a2Jfa2V5bWFwX2tleV9nZXRfc3ltc19ieV9sZXZlbChrZXltYXAsIGNvZGUsIGxheW91 dCwgMCwgJmtleXN5bXMpOworLSAgICAgICAgICAgIGlmIChrZXlzeW1zICYmIGlzTGF0aW4oa2V5 c3ltc1swXSkpCisrICAgICAgICAgICAgaWYgKGtleXN5bXMgJiYgaXNMYXRpbjEoa2V5c3ltc1sw XSkpCisgICAgICAgICAgICAgICAgIG5yTGF0aW5LZXlzKys7CisgICAgICAgICAgICAgaWYgKG5y TGF0aW5LZXlzID4gMTApIC8vIGFyYml0cmFyaWx5IGNob3NlbiB0aHJlc2hvbGQKKyAgICAgICAg ICAgICAgICAgcmV0dXJuOworQEAgLTc2Niw3ICs3NjcsNyBAQCB4a2Jfa2V5c3ltX3QgUVhrYkNv bW1vbjo6bG9va3VwTGF0aW5LZXlzeW0oeGtiX3N0YXRlICpzdGF0ZSwgeGtiX2tleWNvZGVfdCBr ZXljbworICAgICAgICAgeGtiX2xldmVsX2luZGV4X3QgbGV2ZWwgPSB4a2Jfc3RhdGVfa2V5X2dl dF9sZXZlbChzdGF0ZSwga2V5Y29kZSwgbGF5b3V0KTsKKyAgICAgICAgIGlmICh4a2Jfa2V5bWFw X2tleV9nZXRfc3ltc19ieV9sZXZlbChrZXltYXAsIGtleWNvZGUsIGxheW91dCwgbGV2ZWwsICZz eW1zKSAhPSAxKQorICAgICAgICAgICAgIGNvbnRpbnVlOworLSAgICAgICAgaWYgKGlzTGF0aW4o c3ltc1swXSkpIHsKKysgICAgICAgIGlmIChpc0xhdGluMShzeW1zWzBdKSkgeworICAgICAgICAg ICAgIHN5bSA9IHN5bXNbMF07CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jj b21tb25fcC5oIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4 a2Jjb21tb25fcC5oCitpbmRleCA1NjFlYWUwM2RiLi44Mzg5YmQ4ZjVhIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25fcC5o CisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNv bW1vbl9wLmgKK0BAIC05NCw4ICs5NCw4IEBAIHB1YmxpYzoKKyAgICAgc3RhdGljIHZvaWQgdmVy aWZ5SGFzTGF0aW5MYXlvdXQoeGtiX2tleW1hcCAqa2V5bWFwKTsKKyAgICAgc3RhdGljIHhrYl9r ZXlzeW1fdCBsb29rdXBMYXRpbktleXN5bSh4a2Jfc3RhdGUgKnN0YXRlLCB4a2Jfa2V5Y29kZV90 IGtleWNvZGUpOworIAorLSAgICBzdGF0aWMgYm9vbCBpc0xhdGluKHhrYl9rZXlzeW1fdCBzeW0p IHsKKy0gICAgICAgIHJldHVybiAoKHN5bSA+PSAnYScgJiYgc3ltIDw9ICd6JykgfHwgKHN5bSA+ PSAnQScgJiYgc3ltIDw9ICdaJykpOworKyAgICBzdGF0aWMgYm9vbCBpc0xhdGluMSh4a2Jfa2V5 c3ltX3Qgc3ltKSB7CisrICAgICAgICByZXR1cm4gc3ltIDw9IDB4ZmY7CisgICAgIH0KKyAgICAg c3RhdGljIGJvb2wgaXNLZXlwYWQoeGtiX2tleXN5bV90IHN5bSkgeworICAgICAgICAgcmV0dXJu IHN5bSA+PSBYS0JfS0VZX0tQX1NwYWNlICYmIHN5bSA8PSBYS0JfS0VZX0tQXzk7CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQva21zY29udmVuaWVuY2UvcWttc2Rldmlj ZS5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9rbXNjb252ZW5pZW5jZS9xa21zZGV2 aWNlLmNwcAoraW5kZXggOGNkN2Y5YjM2OC4uNDA2Zjg0NjYzZiAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ttc2NvbnZlbmllbmNlL3FrbXNkZXZpY2UuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9rbXNjb252ZW5pZW5jZS9xa21zZGV2aWNlLmNw cAorQEAgLTMxOCw3ICszMTgsNyBAQCBRUGxhdGZvcm1TY3JlZW4gKlFLbXNEZXZpY2U6OmNyZWF0 ZVNjcmVlbkZvckNvbm5lY3Rvcihkcm1Nb2RlUmVzUHRyIHJlc291cmNlcywKKyAKKyAgICAgaWYg KGN1cnJlbnQgPCAwICYmIGNydGNfbW9kZS5jbG9jayAhPSAwKSB7CisgICAgICAgICBtb2RlcyA8 PCBjcnRjX21vZGU7CistICAgICAgICBjdXJyZW50ID0gbW9kZS5zaXplKCkgLSAxOworKyAgICAg ICAgY3VycmVudCA9IG1vZGVzLnNpemUoKSAtIDE7CisgICAgIH0KKyAKKyAgICAgaWYgKGNvbmZp Z3VyYXRpb24gPT0gT3V0cHV0Q29uZmlnQ3VycmVudCkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvYXRzcGlhZGFwdG9yLmNwcCBiL3F0 YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0b3Iu Y3BwCitpbmRleCA5MTUzZmQyMGJiLi4yNTVlYTVlMzNlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2F0c3BpYWRhcHRvci5jcHAKKysr KyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFk YXB0b3IuY3BwCitAQCAtMTk0LDYgKzE5NCw5IEBAIFFTdHJpbmcgQXRTcGlBZGFwdG9yOjppbnRy b3NwZWN0KGNvbnN0IFFTdHJpbmcgJnBhdGgpIGNvbnN0CisgICAgICAgICAgICAgICAgICIgICAg ICA8YXJnIGRpcmVjdGlvbj1cIm91dFwiIHR5cGU9XCIoc28pXCIvPlxuIgorICAgICAgICAgICAg ICAgICAiICAgICAgPGFubm90YXRpb24gdmFsdWU9XCJRU3BpT2JqZWN0UmVmZXJlbmNlXCIgbmFt ZT1cIm9yZy5xdHByb2plY3QuUXREQnVzLlF0VHlwZU5hbWUuT3V0MFwiLz5cbiIKKyAgICAgICAg ICAgICAgICAgIiAgICA8L21ldGhvZD5cbiIKKysgICAgICAgICAgICAgICAgIiAgICA8bWV0aG9k IG5hbWU9XCJHZXRBY2Nlc3NpYmxlSWRcIj5cbiIKKysgICAgICAgICAgICAgICAgIiAgICAgIDxh cmcgZGlyZWN0aW9uPVwib3V0XCIgdHlwZT1cInNcIi8+XG4iCisrICAgICAgICAgICAgICAgICIg ICAgPC9tZXRob2Q+XG4iCisgICAgICAgICAgICAgICAgICIgIDwvaW50ZXJmYWNlPlxuIgorICAg ICAgICAgICAgICAgICApOworIAorQEAgLTkxMyw4ICs5MTYsMTcgQEAgdm9pZCBBdFNwaUFkYXB0 b3I6Om5vdGlmeShRQWNjZXNzaWJsZUV2ZW50ICpldmVudCkKKyAgICAgfQorICAgICBjYXNlIFFB Y2Nlc3NpYmxlOjpOYW1lQ2hhbmdlZDogeworICAgICAgICAgaWYgKHNlbmRPYmplY3QgfHwgc2Vu ZE9iamVjdF9wcm9wZXJ0eV9jaGFuZ2UgfHwgc2VuZE9iamVjdF9wcm9wZXJ0eV9jaGFuZ2VfYWNj ZXNzaWJsZV9uYW1lKSB7CistICAgICAgICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVy ZmFjZShldmVudC0+YWNjZXNzaWJsZUludGVyZmFjZSgpKTsKKy0gICAgICAgICAgICBRVmFyaWFu dExpc3QgYXJncyA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKFFMYXRpbjFTdHJpbmcoImFjY2Vz c2libGUtbmFtZSIpLCAwLCAwLCB2YXJpYW50Rm9yUGF0aChwYXRoKSk7CisrICAgICAgICAgICAg UUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlID0gZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2Uo KTsKKysgICAgICAgICAgICBpZiAoIWlmYWNlKSB7CisrICAgICAgICAgICAgICAgIHFDRGVidWco bGNBY2Nlc3NpYmlsaXR5QXRzcGksCisrICAgICAgICAgICAgICAgICAgICAgICAgIk5hbWVDaGFu Z2VkIGV2ZW50IGZyb20gaW52YWxpZCBhY2Nlc3NpYmxlLiIpOworKyAgICAgICAgICAgICAgICBy ZXR1cm47CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IHBh dGhGb3JJbnRlcmZhY2UoaWZhY2UpOworKyAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzID0g cGFja0RCdXNTaWduYWxBcmd1bWVudHMoCisrICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmco ImFjY2Vzc2libGUtbmFtZSIpLCAwLCAwLAorKyAgICAgICAgICAgICAgICBRVmFyaWFudDo6ZnJv bVZhbHVlKFFEQnVzVmFyaWFudChpZmFjZS0+dGV4dChRQWNjZXNzaWJsZTo6TmFtZSkpKSk7Cisg ICAgICAgICAgICAgc2VuZERCdXNTaWduYWwocGF0aCwgUUxhdGluMVN0cmluZyhBVFNQSV9EQlVT X0lOVEVSRkFDRV9FVkVOVF9PQkpFQ1QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFM YXRpbjFTdHJpbmcoIlByb3BlcnR5Q2hhbmdlIiksIGFyZ3MpOworICAgICAgICAgfQorQEAgLTky Miw4ICs5MzQsMTcgQEAgdm9pZCBBdFNwaUFkYXB0b3I6Om5vdGlmeShRQWNjZXNzaWJsZUV2ZW50 ICpldmVudCkKKyAgICAgfQorICAgICBjYXNlIFFBY2Nlc3NpYmxlOjpEZXNjcmlwdGlvbkNoYW5n ZWQ6IHsKKyAgICAgICAgIGlmIChzZW5kT2JqZWN0IHx8IHNlbmRPYmplY3RfcHJvcGVydHlfY2hh bmdlIHx8IHNlbmRPYmplY3RfcHJvcGVydHlfY2hhbmdlX2FjY2Vzc2libGVfZGVzY3JpcHRpb24p IHsKKy0gICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGV2ZW50LT5h Y2Nlc3NpYmxlSW50ZXJmYWNlKCkpOworLSAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzID0g cGFja0RCdXNTaWduYWxBcmd1bWVudHMoUUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1kZXNjcmlw dGlvbiIpLCAwLCAwLCB2YXJpYW50Rm9yUGF0aChwYXRoKSk7CisrICAgICAgICAgICAgUUFjY2Vz c2libGVJbnRlcmZhY2UgKmlmYWNlID0gZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKTsKKysg ICAgICAgICAgICBpZiAoIWlmYWNlKSB7CisrICAgICAgICAgICAgICAgIHFDRGVidWcobGNBY2Nl c3NpYmlsaXR5QXRzcGksCisrICAgICAgICAgICAgICAgICAgICAgICAgIkRlc2NyaXB0aW9uQ2hh bmdlZCBldmVudCBmcm9tIGludmFsaWQgYWNjZXNzaWJsZS4iKTsKKysgICAgICAgICAgICAgICAg cmV0dXJuOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBw YXRoRm9ySW50ZXJmYWNlKGlmYWNlKTsKKysgICAgICAgICAgICBRVmFyaWFudExpc3QgYXJncyA9 IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKAorKyAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5n KCJhY2Nlc3NpYmxlLWRlc2NyaXB0aW9uIiksIDAsIDAsCisrICAgICAgICAgICAgICAgIFFWYXJp YW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50KGlmYWNlLT50ZXh0KFFBY2Nlc3NpYmxlOjpEZXNj cmlwdGlvbikpKSk7CisgICAgICAgICAgICAgc2VuZERCdXNTaWduYWwocGF0aCwgUUxhdGluMVN0 cmluZyhBVFNQSV9EQlVTX0lOVEVSRkFDRV9FVkVOVF9PQkpFQ1QpLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIlByb3BlcnR5Q2hhbmdlIiksIGFyZ3MpOworICAg ICAgICAgfQorQEAgLTEwMzgsNyArMTA1OSw5IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpub3RpZnko UUFjY2Vzc2libGVFdmVudCAqZXZlbnQpCisgICAgICAgICAgICAgICAgIC8vIENvbWJvIEJveCB3 aXRoIEFULVNQSSBsaWtlcyB0byBiZSBzcGVjaWFsCisgICAgICAgICAgICAgICAgIC8vIEl0IHJl cXVpcmVzIGEgbmFtZS1jaGFuZ2UgdG8gdXBkYXRlIGNhY2hlcyBhbmQgdGhlbiBzZWxlY3Rpb24t Y2hhbmdlZAorICAgICAgICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNl KGlmYWNlKTsKKy0gICAgICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MxID0gcGFja0RCdXNT aWduYWxBcmd1bWVudHMoUUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1uYW1lIiksIDAsIDAsIHZh cmlhbnRGb3JQYXRoKHBhdGgpKTsKKysgICAgICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3Mx ID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoCisrICAgICAgICAgICAgICAgICAgICBRTGF0aW4x U3RyaW5nKCJhY2Nlc3NpYmxlLW5hbWUiKSwgMCwgMCwKKysgICAgICAgICAgICAgICAgICAgIFFW YXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50KGlmYWNlLT50ZXh0KFFBY2Nlc3NpYmxlOjpO YW1lKSkpKTsKKyAgICAgICAgICAgICAgICAgc2VuZERCdXNTaWduYWwocGF0aCwgUUxhdGluMVN0 cmluZyhBVFNQSV9EQlVTX0lOVEVSRkFDRV9FVkVOVF9PQkpFQ1QpLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJQcm9wZXJ0eUNoYW5nZSIpLCBhcmdzMSk7 CisgICAgICAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzMiA9IHBhY2tEQnVzU2lnbmFsQXJn dW1lbnRzKFFTdHJpbmcoKSwgMCwgMCwgUVZhcmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQo UVZhcmlhbnQoMCkpKSk7CitAQCAtMTM1OCw2ICsxMzgxLDI2IEBAIHZvaWQgQXRTcGlBZGFwdG9y OjpyZWdpc3RlckFwcGxpY2F0aW9uKCkKKyAgICAgZGVsZXRlIHJlZ2lzdHJ5OworIH0KKyAKKytu YW1lc3BhY2UgeworK1FTdHJpbmcgYWNjZXNzaWJsZUlkRm9yQWNjZXNzaWJsZShRQWNjZXNzaWJs ZUludGVyZmFjZSAqYWNjZXNzaWJsZSkKKyt7CisrICAgIFFTdHJpbmcgcmVzdWx0OworKyAgICB3 aGlsZSAoYWNjZXNzaWJsZSkgeworKyAgICAgICAgaWYgKCFyZXN1bHQuaXNFbXB0eSgpKQorKyAg ICAgICAgICAgIHJlc3VsdC5wcmVwZW5kKFFMYXRpbjFDaGFyKCcuJykpOworKyAgICAgICAgaWYg KGF1dG8gb2JqID0gYWNjZXNzaWJsZS0+b2JqZWN0KCkpIHsKKysgICAgICAgICAgICBjb25zdCBR U3RyaW5nIG5hbWUgPSBvYmotPm9iamVjdE5hbWUoKTsKKysgICAgICAgICAgICBpZiAoIW5hbWUu aXNFbXB0eSgpKQorKyAgICAgICAgICAgICAgICByZXN1bHQucHJlcGVuZChuYW1lKTsKKysgICAg ICAgICAgICBlbHNlCisrICAgICAgICAgICAgICAgIHJlc3VsdC5wcmVwZW5kKFFTdHJpbmc6OmZy b21VdGY4KG9iai0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKSkpOworKyAgICAgICAgfQorKyAg ICAgICAgYWNjZXNzaWJsZSA9IGFjY2Vzc2libGUtPnBhcmVudCgpOworKyAgICB9CisrICAgIHJl dHVybiByZXN1bHQ7CisrfQorK30gLy8gbmFtZXNwYWNlCisrCisgLy8gQWNjZXNzaWJsZQorIGJv b2wgQXRTcGlBZGFwdG9yOjphY2Nlc3NpYmxlSW50ZXJmYWNlKFFBY2Nlc3NpYmxlSW50ZXJmYWNl ICppbnRlcmZhY2UsIGNvbnN0IFFTdHJpbmcgJmZ1bmN0aW9uLCBjb25zdCBRREJ1c01lc3NhZ2Ug Jm1lc3NhZ2UsIGNvbnN0IFFEQnVzQ29ubmVjdGlvbiAmY29ubmVjdGlvbikKKyB7CitAQCAtMTQ0 MSw2ICsxNDg0LDkgQEAgYm9vbCBBdFNwaUFkYXB0b3I6OmFjY2Vzc2libGVJbnRlcmZhY2UoUUFj Y2Vzc2libGVJbnRlcmZhY2UgKmludGVyZmFjZSwgY29uc3QgUVMKKyAgICAgICAgICAgICBjaGls ZHJlbiA8PCByZWY7CisgICAgICAgICB9CisgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWVzc2Fn ZS5jcmVhdGVSZXBseShRVmFyaWFudDo6ZnJvbVZhbHVlKGNoaWxkcmVuKSkpOworKyAgICB9IGVs c2UgaWYgKGZ1bmN0aW9uID09IFFMYXRpbjFTdHJpbmcoIkdldEFjY2Vzc2libGVJZCIpKSB7Cisr ICAgICAgICBzZW5kUmVwbHkoY29ubmVjdGlvbiwgbWVzc2FnZSwKKysgICAgICAgICAgICAgICAg ICBRVmFyaWFudDo6ZnJvbVZhbHVlKFFEQnVzVmFyaWFudChhY2Nlc3NpYmxlSWRGb3JBY2Nlc3Np YmxlKGludGVyZmFjZSkpKSk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICBxQ0RlYnVnKGxjQWNj ZXNzaWJpbGl0eUF0c3BpKSA8PCAiV0FSTklORzogQXRTcGlBZGFwdG9yOjphY2Nlc3NpYmxlSW50 ZXJmYWNlIGRvZXMgbm90IGltcGxlbWVudCAiIDw8IGZ1bmN0aW9uIDw8IG1lc3NhZ2UucGF0aCgp OworICAgICAgICAgcmV0dXJuIGZhbHNlOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZv cm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9kYnVzY29ubmVjdGlvbi5jcHAgYi9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvZGJ1c2Nvbm5lY3Rpb24uY3Bw CitpbmRleCA0NWRkYzhlNDk2Li5jYzczNGFiYzYzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9w bGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2RidXNjb25uZWN0aW9uLmNwcAorKysr IGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2RidXNjb25u ZWN0aW9uLmNwcAorQEAgLTY5LDYgKzY5LDIxIEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIERCdXND b25uZWN0aW9uOjpEQnVzQ29ubmVjdGlvbihRT2JqZWN0ICpwYXJlbnQpCisgICAgIDogUU9iamVj dChwYXJlbnQpLCBtX2ExMXlDb25uZWN0aW9uKFFTdHJpbmcoKSksIG1fZW5hYmxlZChmYWxzZSkK KyB7CisrICAgIC8vIElmIHRoZSBidXMgaXMgZXhwbGljaXRseSBzZXQgdmlhIGVudiB2YXIgaXQg b3ZlcnJpZGVzIGV2ZXJ5dGhpbmcgZWxzZS4KKysgICAgUUJ5dGVBcnJheSBhZGRyZXNzRW52ID0g cWdldGVudigiQVRfU1BJX0JVU19BRERSRVNTIik7CisrICAgIGlmICghYWRkcmVzc0Vudi5pc0Vt cHR5KCkpIHsKKysgICAgICAgIC8vIE9ubHkgY29ubmVjdCBvbiBuZXh0IGxvb3AgcnVuLCBjb25u ZWN0aW9ucyB0byBvdXIgZW5hYmxlZCBzaWduYWwgYXJlCisrICAgICAgICAvLyBvbmx5IGVzdGFi bGlzaGVkIGFmdGVyIHRoZSBjdG9yIHJldHVybnMuCisrICAgICAgICBRTWV0YU9iamVjdDo6aW52 b2tlTWV0aG9kKAorKyAgICAgICAgICAgICAgICB0aGlzLAorKyAgICAgICAgICAgICAgICBbdGhp cywgYWRkcmVzc0Vudl0geworKyAgICAgICAgICAgICAgICAgICAgbV9lbmFibGVkID0gdHJ1ZTsK KysgICAgICAgICAgICAgICAgICAgIGNvbm5lY3RBMTF5QnVzKFFTdHJpbmc6OmZyb21Mb2NhbDhC aXQoYWRkcmVzc0VudikpOworKyAgICAgICAgICAgICAgICB9LAorKyAgICAgICAgICAgICAgICBR dDo6UXVldWVkQ29ubmVjdGlvbik7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKyAgICAg Ly8gU3RhcnQgbW9uaXRvcmluZyBpZiAib3JnLmExMXkuQnVzIiBpcyByZWdpc3RlcmVkIGFzIERC dXMgc2VydmljZS4KKyAgICAgUURCdXNDb25uZWN0aW9uIGMgPSBRREJ1c0Nvbm5lY3Rpb246OnNl c3Npb25CdXMoKTsKKyAgICAgaWYgKCFjLmlzQ29ubmVjdGVkKCkpIHsKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3Vu aXhzZXJ2aWNlcy5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5l cmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlcy5jcHAKK2luZGV4IDFhM2NhYjI3NWQuLjJhYmUw MzkxMjYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9n ZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlcy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxh dGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzLmNw cAorQEAgLTUxLDYgKzUxLDkgQEAKKyAjaW5jbHVkZSA8UXRDb3JlL1FTdGFuZGFyZFBhdGhzPgor ICNpbmNsdWRlIDxRdENvcmUvUVVybD4KKyAKKysjaW5jbHVkZSA8UXRHdWkvUUd1aUFwcGxpY2F0 aW9uPgorKyNpbmNsdWRlIDxRdEd1aS9RV2luZG93PgorKworICNpZiBRVF9DT05GSUcoZGJ1cykK KyAvLyBUaGVzZSBRdENvcmUgaW5jbHVkZXMgYXJlIG5lZWRlZCBmb3IgeGRnLWRlc2t0b3AtcG9y dGFsIHN1cHBvcnQKKyAjaW5jbHVkZSA8UXRDb3JlL3ByaXZhdGUvcWNvcmVfdW5peF9wLmg+CitA QCAtNTgsNiArNjEsOCBAQAorICNpbmNsdWRlIDxRdENvcmUvUUZpbGVJbmZvPgorICNpbmNsdWRl IDxRdENvcmUvUVVybFF1ZXJ5PgorIAorKyNpbmNsdWRlIDxRdEd1aS9RQ29sb3I+CisrCisgI2lu Y2x1ZGUgPFF0REJ1cy9RREJ1c0Nvbm5lY3Rpb24+CisgI2luY2x1ZGUgPFF0REJ1cy9RREJ1c01l c3NhZ2U+CisgI2luY2x1ZGUgPFF0REJ1cy9RREJ1c1BlbmRpbmdDYWxsPgorQEAgLTE0Miw2ICsx NDcsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZGV0ZWN0V2ViQnJvd3Nlcihjb25zdCBRQnl0ZUFy cmF5ICZkZXNrdG9wLAorICAgICB9CisgCisgICAgIGlmIChkZXNrdG9wID09IFFCeXRlQXJyYXko IktERSIpKSB7CisrICAgICAgICBpZiAoY2hlY2tFeGVjdXRhYmxlKFFTdHJpbmdMaXRlcmFsKCJr ZGUtb3BlbjUiKSwgYnJvd3NlcikpCisrICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg ICAvLyBLb25xdWVyb3IgbGF1bmNoZXIKKyAgICAgICAgIGlmIChjaGVja0V4ZWN1dGFibGUoUVN0 cmluZ0xpdGVyYWwoImtmbWNsaWVudCIpLCBicm93c2VyKSkgeworICAgICAgICAgICAgIGJyb3dz ZXItPmFwcGVuZChRTGF0aW4xU3RyaW5nKCIgZXhlYyIpKTsKK0BAIC0yOTYsOCArMzAzLDEzNSBA QCBzdGF0aWMgaW5saW5lIFFEQnVzTWVzc2FnZSB4ZGdEZXNrdG9wUG9ydGFsU2VuZEVtYWlsKGNv bnN0IFFVcmwgJnVybCkKKyAKKyAgICAgcmV0dXJuIFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1 cygpLmNhbGwobWVzc2FnZSk7CisgfQorKworK25hbWVzcGFjZSB7Cisrc3RydWN0IFhER0Rlc2t0 b3BDb2xvcgorK3sKKysgICAgZG91YmxlIHIgPSAwOworKyAgICBkb3VibGUgZyA9IDA7CisrICAg IGRvdWJsZSBiID0gMDsKKysKKysgICAgUUNvbG9yIHRvUUNvbG9yKCkgY29uc3QKKysgICAgewor KyAgICAgICAgY29uc3RleHByIGF1dG8gcmdiTWF4ID0gMjU1OworKyAgICAgICAgcmV0dXJuIHsg c3RhdGljX2Nhc3Q8aW50PihyICogcmdiTWF4KSwgc3RhdGljX2Nhc3Q8aW50PihnICogcmdiTWF4 KSwKKysgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oYiAqIHJnYk1heCkgfTsKKysg ICAgfQorK307CisrCisrY29uc3QgUURCdXNBcmd1bWVudCAmb3BlcmF0b3I+Pihjb25zdCBRREJ1 c0FyZ3VtZW50ICZhcmd1bWVudCwgWERHRGVza3RvcENvbG9yICZteVN0cnVjdCkKKyt7CisrICAg IGFyZ3VtZW50LmJlZ2luU3RydWN0dXJlKCk7CisrICAgIGFyZ3VtZW50ID4+IG15U3RydWN0LnIg Pj4gbXlTdHJ1Y3QuZyA+PiBteVN0cnVjdC5iOworKyAgICBhcmd1bWVudC5lbmRTdHJ1Y3R1cmUo KTsKKysgICAgcmV0dXJuIGFyZ3VtZW50OworK30KKysKKytjbGFzcyBYZGdEZXNrdG9wUG9ydGFs Q29sb3JQaWNrZXIgOiBwdWJsaWMgUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyCisreworKyAg ICBRX09CSkVDVAorK3B1YmxpYzoKKysgICAgWGRnRGVza3RvcFBvcnRhbENvbG9yUGlja2VyKGNv bnN0IFFTdHJpbmcgJnBhcmVudFdpbmRvd0lkLCBRV2luZG93ICpwYXJlbnQpCisrICAgICAgICA6 IFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlcihwYXJlbnQpLCBtX3BhcmVudFdpbmRvd0lkKHBh cmVudFdpbmRvd0lkKQorKyAgICB7CisrICAgIH0KKysKKysgICAgdm9pZCBwaWNrQ29sb3IoKSBv dmVycmlkZQorKyAgICB7CisrICAgICAgICAvLyBEQnVzIHNpZ25hdHVyZToKKysgICAgICAgIC8v IFBpY2tDb2xvciAoSU4gICBzICAgICAgcGFyZW50X3dpbmRvdywKKysgICAgICAgIC8vICAgICAg ICAgICAgSU4gICBhe3N2fSAgb3B0aW9ucworKyAgICAgICAgLy8gICAgICAgICAgICBPVVQgIG8g ICAgICBoYW5kbGUpCisrICAgICAgICAvLyBPcHRpb25zOgorKyAgICAgICAgLy8gaGFuZGxlX3Rv a2VuIChzKSAtICBBIHN0cmluZyB0aGF0IHdpbGwgYmUgdXNlZCBhcyB0aGUgbGFzdCBlbGVtZW50 IG9mIHRoZSBAaGFuZGxlLgorKworKyAgICAgICAgUURCdXNNZXNzYWdlIG1lc3NhZ2UgPSBRREJ1 c01lc3NhZ2U6OmNyZWF0ZU1ldGhvZENhbGwoCisrICAgICAgICAgICAgICAgIFFTdHJpbmdMaXRl cmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLkRlc2t0b3AiKSwgUVN0cmluZ0xpdGVyYWwoIi9v cmcvZnJlZWRlc2t0b3AvcG9ydGFsL2Rlc2t0b3AiKSwKKysgICAgICAgICAgICAgICAgUVN0cmlu Z0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuU2NyZWVuc2hvdCIpLCBRU3RyaW5nTGl0 ZXJhbCgiUGlja0NvbG9yIikpOworKyAgICAgICAgbWVzc2FnZSA8PCBtX3BhcmVudFdpbmRvd0lk IDw8IFFWYXJpYW50TWFwKCk7CisrCisrICAgICAgICBRREJ1c1BlbmRpbmdDYWxsIHBlbmRpbmdD YWxsID0gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuYXN5bmNDYWxsKG1lc3NhZ2UpOwor KyAgICAgICAgYXV0byB3YXRjaGVyID0gbmV3IFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyKHBlbmRp bmdDYWxsLCB0aGlzKTsKKysgICAgICAgIGNvbm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVuZGluZ0Nh bGxXYXRjaGVyOjpmaW5pc2hlZCwgdGhpcywKKysgICAgICAgICAgICAgICAgW3RoaXNdKFFEQnVz UGVuZGluZ0NhbGxXYXRjaGVyICp3YXRjaGVyKSB7CisrICAgICAgICAgICAgICAgICAgICB3YXRj aGVyLT5kZWxldGVMYXRlcigpOworKyAgICAgICAgICAgICAgICAgICAgUURCdXNQZW5kaW5nUmVw bHk8UURCdXNPYmplY3RQYXRoPiByZXBseSA9ICp3YXRjaGVyOworKyAgICAgICAgICAgICAgICAg ICAgaWYgKHJlcGx5LmlzRXJyb3IoKSkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIHFXYXJu aW5nKCJEQnVzIGNhbGwgdG8gcGljayBjb2xvciBmYWlsZWQ6ICVzIiwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBxUHJpbnRhYmxlKHJlcGx5LmVycm9yKCkubWVzc2FnZSgpKSk7 CisrICAgICAgICAgICAgICAgICAgICAgICAgUV9FTUlUIGNvbG9yUGlja2VkKHt9KTsKKysgICAg ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgUURCdXND b25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuY29ubmVjdCgKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLkRlc2t0b3Ai KSwgcmVwbHkudmFsdWUoKS5wYXRoKCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5SZXF1ZXN0IiksIFFTdHJp bmdMaXRlcmFsKCJSZXNwb25zZSIpLCB0aGlzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU0xPVChnb3RDb2xvclJlc3BvbnNlKHVpbnQsUVZhcmlhbnRNYXApKQorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCisrICAgICAgICAgICAgICAg ICAgICAgICAgKTsKKysgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgfSk7 CisrICAgIH0KKysKKytwcml2YXRlIFFfU0xPVFM6CisrICAgIHZvaWQgZ290Q29sb3JSZXNwb25z ZSh1aW50IHJlc3VsdCwgY29uc3QgUVZhcmlhbnRNYXAgJm1hcCkKKysgICAgeworKyAgICAgICAg aWYgKHJlc3VsdCAhPSAwKQorKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIFhER0Rlc2t0 b3BDb2xvciBjb2xvcnt9OworKyAgICAgICAgbWFwLnZhbHVlKFFTdHJpbmdMaXRlcmFsKCJjb2xv ciIpKS52YWx1ZTxRREJ1c0FyZ3VtZW50PigpID4+IGNvbG9yOworKyAgICAgICAgUV9FTUlUIGNv bG9yUGlja2VkKGNvbG9yLnRvUUNvbG9yKCkpOworKyAgICAgICAgZGVsZXRlTGF0ZXIoKTsKKysg ICAgfQorKworK3ByaXZhdGU6CisrICAgIGNvbnN0IFFTdHJpbmcgbV9wYXJlbnRXaW5kb3dJZDsK Kyt9OworK30gLy8gbmFtZXNwYWNlCisrCisgI2VuZGlmIC8vIFFUX0NPTkZJRyhkYnVzKQorIAor K1FHZW5lcmljVW5peFNlcnZpY2VzOjpRR2VuZXJpY1VuaXhTZXJ2aWNlcygpCisreworKyNpZiBR VF9DT05GSUcoZGJ1cykKKysgICAgaWYgKHFFbnZpcm9ubWVudFZhcmlhYmxlSW50VmFsdWUoIlFU X05PX1hER19ERVNLVE9QX1BPUlRBTCIpID4gMCkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9 CisrICAgIFFEQnVzTWVzc2FnZSBtZXNzYWdlID0gUURCdXNNZXNzYWdlOjpjcmVhdGVNZXRob2RD YWxsKAorKyAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFs LkRlc2t0b3AiKSwgUVN0cmluZ0xpdGVyYWwoIi9vcmcvZnJlZWRlc2t0b3AvcG9ydGFsL2Rlc2t0 b3AiKSwKKysgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLkRCdXMu UHJvcGVydGllcyIpLCBRU3RyaW5nTGl0ZXJhbCgiR2V0IikpOworKyAgICBtZXNzYWdlIDw8IFFT dHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLlNjcmVlbnNob3QiKQorKyAgICAg ICAgICAgIDw8IFFTdHJpbmdMaXRlcmFsKCJ2ZXJzaW9uIik7CisrCisrICAgIFFEQnVzUGVuZGlu Z0NhbGwgcGVuZGluZ0NhbGwgPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5hc3luY0Nh bGwobWVzc2FnZSk7CisrICAgIGF1dG8gd2F0Y2hlciA9IG5ldyBRREJ1c1BlbmRpbmdDYWxsV2F0 Y2hlcihwZW5kaW5nQ2FsbCk7CisrICAgIFFPYmplY3Q6OmNvbm5lY3Qod2F0Y2hlciwgJlFEQnVz UGVuZGluZ0NhbGxXYXRjaGVyOjpmaW5pc2hlZCwgd2F0Y2hlciwKKysgICAgICAgICAgICAgICAg ICAgICBbdGhpc10oUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIpIHsKKysgICAgICAg ICAgICAgICAgICAgICAgICAgd2F0Y2hlci0+ZGVsZXRlTGF0ZXIoKTsKKysgICAgICAgICAgICAg ICAgICAgICAgICAgUURCdXNQZW5kaW5nUmVwbHk8UVZhcmlhbnQ+IHJlcGx5ID0gKndhdGNoZXI7 CisrICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVwbHkuaXNFcnJvcigpICYmIHJlcGx5 LnZhbHVlKCkudG9VSW50KCkgPj0gMikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f aGFzU2NyZWVuc2hvdFBvcnRhbFdpdGhDb2xvclBpY2tpbmcgPSB0cnVlOworKyAgICAgICAgICAg ICAgICAgICAgIH0pOworKworKyNlbmRpZgorK30KKysKKytRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQ aWNrZXIgKlFHZW5lcmljVW5peFNlcnZpY2VzOjpjb2xvclBpY2tlcihRV2luZG93ICpwYXJlbnQp CisreworKyNpZiBRVF9DT05GSUcoZGJ1cykKKysgICAgLy8gTWFrZSBkb3VibGUgc3VyZSB0aGF0 IHdlIGFyZSBpbiBhIHdheWxhbmQgZW52aXJvbm1lbnQuIEluIHBhcnRpY3VsYXIgY2hlY2sKKysg ICAgLy8gV0FZTEFORF9ESVNQTEFZIHNvIGFsc28gWFdheWxhbmQgYXBwcyBiZW5lZml0IGZyb20g cG9ydGFsLWJhc2VkIGNvbG9yIHBpY2tpbmcuCisrICAgIC8vIE91dHNpZGUgd2F5bGFuZCB3ZSds bCByYXRoZXIgcmVseSBvbiBvdGhlciBtZWFucyB0aGFuIHRoZSBYREcgZGVza3RvcCBwb3J0YWwu CisrICAgIGlmICghcUVudmlyb25tZW50VmFyaWFibGVJc0VtcHR5KCJXQVlMQU5EX0RJU1BMQVki KQorKyAgICAgICAgfHwgUUd1aUFwcGxpY2F0aW9uOjpwbGF0Zm9ybU5hbWUoKS5zdGFydHNXaXRo KFFMYXRpbjFTdHJpbmcoIndheWxhbmQiKSkpIHsKKysgICAgICAgIHJldHVybiBuZXcgWGRnRGVz a3RvcFBvcnRhbENvbG9yUGlja2VyKHBvcnRhbFdpbmRvd0lkZW50aWZpZXIocGFyZW50KSwgcGFy ZW50KTsKKysgICAgfQorKyAgICByZXR1cm4gbnVsbHB0cjsKKysjZWxzZQorKyAgICBRX1VOVVNF RChwYXJlbnQpOworKyAgICByZXR1cm4gbnVsbHB0cjsKKysjZW5kaWYKKyt9CisrCisgUUJ5dGVB cnJheSBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6ZGVza3RvcEVudmlyb25tZW50KCkgY29uc3QKKyB7 CisgICAgIHN0YXRpYyBjb25zdCBRQnl0ZUFycmF5IHJlc3VsdCA9IGRldGVjdERlc2t0b3BFbnZp cm9ubWVudCgpOworQEAgLTM1Miw2ICs0ODYsOCBAQCBib29sIFFHZW5lcmljVW5peFNlcnZpY2Vz OjpvcGVuRG9jdW1lbnQoY29uc3QgUVVybCAmdXJsKQorIH0KKyAKKyAjZWxzZQorK1FHZW5lcmlj VW5peFNlcnZpY2VzOjpRR2VuZXJpY1VuaXhTZXJ2aWNlcygpID0gZGVmYXVsdDsKKysKKyBRQnl0 ZUFycmF5IFFHZW5lcmljVW5peFNlcnZpY2VzOjpkZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdAor IHsKKyAgICAgcmV0dXJuIFFCeXRlQXJyYXlMaXRlcmFsKCJVTktOT1dOIik7CitAQCAtMzcxLDYg KzUwNywzMCBAQCBib29sIFFHZW5lcmljVW5peFNlcnZpY2VzOjpvcGVuRG9jdW1lbnQoY29uc3Qg UVVybCAmdXJsKQorICAgICByZXR1cm4gZmFsc2U7CisgfQorIAorK1FQbGF0Zm9ybVNlcnZpY2VD b2xvclBpY2tlciAqUUdlbmVyaWNVbml4U2VydmljZXM6OmNvbG9yUGlja2VyKFFXaW5kb3cgKnBh cmVudCkKKyt7CisrICAgIFFfVU5VU0VEKHBhcmVudCk7CisrICAgIHJldHVybiBudWxscHRyOwor K30KKysKKyAjZW5kaWYgLy8gUVRfTk9fTVVMVElQUk9DRVNTCisgCisrUVN0cmluZyBRR2VuZXJp Y1VuaXhTZXJ2aWNlczo6cG9ydGFsV2luZG93SWRlbnRpZmllcihRV2luZG93ICp3aW5kb3cpCisr eworKyAgICBpZiAoUUd1aUFwcGxpY2F0aW9uOjpwbGF0Zm9ybU5hbWUoKSA9PSBRTGF0aW4xU3Ry aW5nKCJ4Y2IiKSkKKysgICAgICAgIHJldHVybiBRU3RyaW5nTGl0ZXJhbCgieDExOiIpICsgUVN0 cmluZzo6bnVtYmVyKHdpbmRvdy0+d2luSWQoKSwgMTYpOworKyAgICByZXR1cm4gUVN0cmluZygp OworK30KKysKKytib29sIFFHZW5lcmljVW5peFNlcnZpY2VzOjpoYXNDYXBhYmlsaXR5KENhcGFi aWxpdHkgY2FwYWJpbGl0eSkgY29uc3QKKyt7CisrICAgIHN3aXRjaCAoY2FwYWJpbGl0eSkgewor KyAgICBjYXNlIENhcGFiaWxpdHk6OkNvbG9yUGlja2luZzoKKysgICAgICAgIHJldHVybiBtX2hh c1NjcmVlbnNob3RQb3J0YWxXaXRoQ29sb3JQaWNraW5nOworKyAgICB9CisrICAgIHJldHVybiBm YWxzZTsKKyt9CisrCisgUVRfRU5EX05BTUVTUEFDRQorKworKyNpbmNsdWRlICJxZ2VuZXJpY3Vu aXhzZXJ2aWNlcy5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQv c2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXNfcC5oIGIvcXRiYXNlL3Ny Yy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2Vydmlj ZXNfcC5oCitpbmRleCA4YWMzZGU2ZjAzLi4zMDkyNGU2NGJkIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2Vy dmljZXNfcC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5l cmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlc19wLmgKK0BAIC01OSwxNiArNTksMjEgQEAgUVRf QkVHSU5fTkFNRVNQQUNFCisgY2xhc3MgUUdlbmVyaWNVbml4U2VydmljZXMgOiBwdWJsaWMgUVBs YXRmb3JtU2VydmljZXMKKyB7CisgcHVibGljOgorLSAgICBRR2VuZXJpY1VuaXhTZXJ2aWNlcygp IHt9CisrICAgIFFHZW5lcmljVW5peFNlcnZpY2VzKCk7CisgCisgICAgIFFCeXRlQXJyYXkgZGVz a3RvcEVudmlyb25tZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgCisrICAgIGJvb2wgaGFzQ2FwYWJp bGl0eShDYXBhYmlsaXR5IGNhcGFiaWxpdHkpIGNvbnN0IG92ZXJyaWRlOworICAgICBib29sIG9w ZW5VcmwoY29uc3QgUVVybCAmdXJsKSBvdmVycmlkZTsKKyAgICAgYm9vbCBvcGVuRG9jdW1lbnQo Y29uc3QgUVVybCAmdXJsKSBvdmVycmlkZTsKKysgICAgUVBsYXRmb3JtU2VydmljZUNvbG9yUGlj a2VyICpjb2xvclBpY2tlcihRV2luZG93ICpwYXJlbnQgPSBudWxscHRyKSBvdmVycmlkZTsKKysK KysgICAgdmlydHVhbCBRU3RyaW5nIHBvcnRhbFdpbmRvd0lkZW50aWZpZXIoUVdpbmRvdyAqd2lu ZG93KTsKKyAKKyBwcml2YXRlOgorICAgICBRU3RyaW5nIG1fd2ViQnJvd3NlcjsKKyAgICAgUVN0 cmluZyBtX2RvY3VtZW50TGF1bmNoZXI7CisrICAgIGJvb2wgbV9oYXNTY3JlZW5zaG90UG9ydGFs V2l0aENvbG9yUGlja2luZyA9IGZhbHNlOworIH07CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9k YnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBw b3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNwcAor aW5kZXggMDk0NzBiY2NjNi4uY2M3YzdkNGQ4YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxh dGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0 aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1 bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb24uY3BwCitAQCAtNjksNiArNjksNyBAQCBj b25zdCBRU3RyaW5nIE1lbnVCYXJQYXRoID0gUUxhdGluMVN0cmluZygiL01lbnVCYXIiKTsKKyAq LworIFFEQnVzTWVudUNvbm5lY3Rpb246OlFEQnVzTWVudUNvbm5lY3Rpb24oUU9iamVjdCAqcGFy ZW50LCBjb25zdCBRU3RyaW5nICZzZXJ2aWNlTmFtZSkKKyAgICAgOiBRT2JqZWN0KHBhcmVudCkK KysgICAgLCBtX3NlcnZpY2VOYW1lKHNlcnZpY2VOYW1lKQorICAgICAsIG1fY29ubmVjdGlvbihz ZXJ2aWNlTmFtZS5pc051bGwoKSA/IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogUURCdXNDb25uZWN0aW9uOjpj b25uZWN0VG9CdXMoUURCdXNDb25uZWN0aW9uOjpTZXNzaW9uQnVzLCBzZXJ2aWNlTmFtZSkpCisg ICAgICwgbV9kYnVzV2F0Y2hlcihuZXcgUURCdXNTZXJ2aWNlV2F0Y2hlcihTdGF0dXNOb3RpZmll cldhdGNoZXJTZXJ2aWNlLCBtX2Nvbm5lY3Rpb24sIFFEQnVzU2VydmljZVdhdGNoZXI6OldhdGNo Rm9yUmVnaXN0cmF0aW9uLCB0aGlzKSkKK0BAIC04Myw2ICs4NCwxMiBAQCBRREJ1c01lbnVDb25u ZWN0aW9uOjpRREJ1c01lbnVDb25uZWN0aW9uKFFPYmplY3QgKnBhcmVudCwgY29uc3QgUVN0cmlu ZyAmc2VydmljZQorICNlbmRpZgorIH0KKyAKKytRREJ1c01lbnVDb25uZWN0aW9uOjp+UURCdXNN ZW51Q29ubmVjdGlvbigpCisreworKyAgaWYgKCFtX3NlcnZpY2VOYW1lLmlzRW1wdHkoKSAmJiBt X2Nvbm5lY3Rpb24uaXNDb25uZWN0ZWQoKSkKKysgICAgICBRREJ1c0Nvbm5lY3Rpb246OmRpc2Nv bm5lY3RGcm9tQnVzKG1fc2VydmljZU5hbWUpOworK30KKysKKyB2b2lkIFFEQnVzTWVudUNvbm5l Y3Rpb246OmRidXNFcnJvcihjb25zdCBRREJ1c0Vycm9yICZlcnJvcikKKyB7CisgICAgIHFXYXJu aW5nKCkgPDwgIlFEQnVzVHJheUljb24gZW5jb3VudGVyZWQgYSBELUJ1cyBlcnJvcjoiIDw8IGVy cm9yOworQEAgLTEwNSwxMyArMTEyLDcgQEAgdm9pZCBRREJ1c01lbnVDb25uZWN0aW9uOjp1bnJl Z2lzdGVyVHJheUljb25NZW51KFFEQnVzVHJheUljb24gKml0ZW0pCisgCisgYm9vbCBRREJ1c01l bnVDb25uZWN0aW9uOjpyZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pCisgewor LSAgICBib29sIHN1Y2Nlc3MgPSBjb25uZWN0aW9uKCkucmVnaXN0ZXJTZXJ2aWNlKGl0ZW0tPmlu c3RhbmNlSWQoKSk7CistICAgIGlmICghc3VjY2VzcykgeworLSAgICAgICAgcVdhcm5pbmcoKSA8 PCAiZmFpbGVkIHRvIHJlZ2lzdGVyIHNlcnZpY2UiIDw8IGl0ZW0tPmluc3RhbmNlSWQoKTsKKy0g ICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgfQorLQorLSAgICBzdWNjZXNzID0gY29ubmVjdGlv bigpLnJlZ2lzdGVyT2JqZWN0KFN0YXR1c05vdGlmaWVySXRlbVBhdGgsIGl0ZW0pOworKyAgICBi b29sIHN1Y2Nlc3MgPSBjb25uZWN0aW9uKCkucmVnaXN0ZXJPYmplY3QoU3RhdHVzTm90aWZpZXJJ dGVtUGF0aCwgaXRlbSk7CisgICAgIGlmICghc3VjY2VzcykgeworICAgICAgICAgdW5yZWdpc3Rl clRyYXlJY29uKGl0ZW0pOworICAgICAgICAgcVdhcm5pbmcoKSA8PCAiZmFpbGVkIHRvIHJlZ2lz dGVyIiA8PCBpdGVtLT5pbnN0YW5jZUlkKCkgPDwgU3RhdHVzTm90aWZpZXJJdGVtUGF0aDsKK0BA IC0xMjYsMjEgKzEyNywxOCBAQCBib29sIFFEQnVzTWVudUNvbm5lY3Rpb246OnJlZ2lzdGVyVHJh eUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSkKKyAKKyBib29sIFFEQnVzTWVudUNvbm5lY3Rpb246 OnJlZ2lzdGVyVHJheUljb25XaXRoV2F0Y2hlcihRREJ1c1RyYXlJY29uICppdGVtKQorIHsKKysg ICAgUV9VTlVTRUQoaXRlbSk7CisgICAgIFFEQnVzTWVzc2FnZSByZWdpc3Rlck1ldGhvZCA9IFFE QnVzTWVzc2FnZTo6Y3JlYXRlTWV0aG9kQ2FsbCgKKyAgICAgICAgICAgICAgICAgU3RhdHVzTm90 aWZpZXJXYXRjaGVyU2VydmljZSwgU3RhdHVzTm90aWZpZXJXYXRjaGVyUGF0aCwgU3RhdHVzTm90 aWZpZXJXYXRjaGVyU2VydmljZSwKKyAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiUmVn aXN0ZXJTdGF0dXNOb3RpZmllckl0ZW0iKSk7CistICAgIHJlZ2lzdGVyTWV0aG9kLnNldEFyZ3Vt ZW50cyhRVmFyaWFudExpc3QoKSA8PCBpdGVtLT5pbnN0YW5jZUlkKCkpOworKyAgICByZWdpc3Rl ck1ldGhvZC5zZXRBcmd1bWVudHMoUVZhcmlhbnRMaXN0KCkgPDwgbV9jb25uZWN0aW9uLmJhc2VT ZXJ2aWNlKCkpOworICAgICByZXR1cm4gbV9jb25uZWN0aW9uLmNhbGxXaXRoQ2FsbGJhY2socmVn aXN0ZXJNZXRob2QsIHRoaXMsIFNJR05BTCh0cmF5SWNvblJlZ2lzdGVyZWQoKSksIFNMT1QoZGJ1 c0Vycm9yKFFEQnVzRXJyb3IpKSk7CisgfQorIAorLWJvb2wgUURCdXNNZW51Q29ubmVjdGlvbjo6 dW5yZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pCisrdm9pZCBRREJ1c01lbnVD b25uZWN0aW9uOjp1bnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSkKKyB7Cisg ICAgIHVucmVnaXN0ZXJUcmF5SWNvbk1lbnUoaXRlbSk7CisgICAgIGNvbm5lY3Rpb24oKS51bnJl Z2lzdGVyT2JqZWN0KFN0YXR1c05vdGlmaWVySXRlbVBhdGgpOworLSAgICBib29sIHN1Y2Nlc3Mg PSBjb25uZWN0aW9uKCkudW5yZWdpc3RlclNlcnZpY2UoaXRlbS0+aW5zdGFuY2VJZCgpKTsKKy0g ICAgaWYgKCFzdWNjZXNzKQorLSAgICAgICAgcVdhcm5pbmcoKSA8PCAiZmFpbGVkIHRvIHVucmVn aXN0ZXIgc2VydmljZSIgPDwgaXRlbS0+aW5zdGFuY2VJZCgpOworLSAgICByZXR1cm4gc3VjY2Vz czsKKyB9CisgI2VuZGlmIC8vIFFUX05PX1NZU1RFTVRSQVlJQ09OCisgCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3Fk YnVzbWVudWNvbm5lY3Rpb25fcC5oIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVz L2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5oCitpbmRleCBmNDg0 Nzk1ZmJiLi45N2JkZmFiYjg1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBv cnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5oCisr KysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21l bnUvcWRidXNtZW51Y29ubmVjdGlvbl9wLmgKK0BAIC03MCw2ICs3MCw3IEBAIGNsYXNzIFFEQnVz TWVudUNvbm5lY3Rpb24gOiBwdWJsaWMgUU9iamVjdAorIAorIHB1YmxpYzoKKyAgICAgUURCdXNN ZW51Q29ubmVjdGlvbihRT2JqZWN0ICpwYXJlbnQgPSBudWxscHRyLCBjb25zdCBRU3RyaW5nICZz ZXJ2aWNlTmFtZSA9IFFTdHJpbmcoKSk7CisrICAgIH5RREJ1c01lbnVDb25uZWN0aW9uKCk7Cisg ICAgIFFEQnVzQ29ubmVjdGlvbiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0 aW9uOyB9CisgICAgIFFEQnVzU2VydmljZVdhdGNoZXIgKmRidXNXYXRjaGVyKCkgY29uc3QgeyBy ZXR1cm4gbV9kYnVzV2F0Y2hlcjsgfQorICAgICBib29sIGlzU3RhdHVzTm90aWZpZXJIb3N0UmVn aXN0ZXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzTm90aWZpZXJIb3N0UmVnaXN0ZXJlZDsg fQorQEAgLTc4LDcgKzc5LDcgQEAgcHVibGljOgorICAgICB2b2lkIHVucmVnaXN0ZXJUcmF5SWNv bk1lbnUoUURCdXNUcmF5SWNvbiAqaXRlbSk7CisgICAgIGJvb2wgcmVnaXN0ZXJUcmF5SWNvbihR REJ1c1RyYXlJY29uICppdGVtKTsKKyAgICAgYm9vbCByZWdpc3RlclRyYXlJY29uV2l0aFdhdGNo ZXIoUURCdXNUcmF5SWNvbiAqaXRlbSk7CistICAgIGJvb2wgdW5yZWdpc3RlclRyYXlJY29uKFFE QnVzVHJheUljb24gKml0ZW0pOworKyAgICB2b2lkIHVucmVnaXN0ZXJUcmF5SWNvbihRREJ1c1Ry YXlJY29uICppdGVtKTsKKyAjZW5kaWYgLy8gUVRfTk9fU1lTVEVNVFJBWUlDT04KKyAKKyBRX1NJ R05BTFM6CitAQCAtOTAsNiArOTEsNyBAQCBwcml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgZGJ1 c0Vycm9yKGNvbnN0IFFEQnVzRXJyb3IgJmVycm9yKTsKKyAKKyBwcml2YXRlOgorKyAgICBRU3Ry aW5nIG1fc2VydmljZU5hbWU7CisgICAgIFFEQnVzQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247Cisg ICAgIFFEQnVzU2VydmljZVdhdGNoZXIgKm1fZGJ1c1dhdGNoZXI7CisgICAgIGJvb2wgbV9zdGF0 dXNOb3RpZmllckhvc3RSZWdpc3RlcmVkOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZv cm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlpY29uLmNwcCBi L3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzdHJheS9x ZGJ1c3RyYXlpY29uLmNwcAoraW5kZXggYmVkZTcwOTc1YS4uNzZiZmVjNWU1YSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzdHJh eS9xZGJ1c3RyYXlpY29uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhl bWVzL2dlbmVyaWN1bml4L2RidXN0cmF5L3FkYnVzdHJheWljb24uY3BwCitAQCAtNzEsOCArNzEs MTIgQEAgUV9MT0dHSU5HX0NBVEVHT1JZKHFMY1RyYXksICJxdC5xcGEudHJheSIpCisgc3RhdGlj IFFTdHJpbmcgaWNvblRlbXBQYXRoKCkKKyB7CisgICAgIFFTdHJpbmcgdGVtcFBhdGggPSBRU3Rh bmRhcmRQYXRoczo6d3JpdGFibGVMb2NhdGlvbihRU3RhbmRhcmRQYXRoczo6UnVudGltZUxvY2F0 aW9uKTsKKy0gICAgaWYgKCF0ZW1wUGF0aC5pc0VtcHR5KCkpCisrICAgIGlmICghdGVtcFBhdGgu aXNFbXB0eSgpKSB7CisrICAgICAgICBRU3RyaW5nIGZsYXRwYWtJZCA9IHFFbnZpcm9ubWVudFZh cmlhYmxlKCJGTEFUUEFLX0lEIik7CisrICAgICAgICBpZiAoIWZsYXRwYWtJZC5pc0VtcHR5KCkg JiYgUUZpbGVJbmZvOjpleGlzdHMoUUxhdGluMVN0cmluZygiLy5mbGF0cGFrLWluZm8iKSkpCisr ICAgICAgICAgICAgdGVtcFBhdGggKz0gUUxhdGluMVN0cmluZygiL2FwcC8iKSArIGZsYXRwYWtJ ZDsKKyAgICAgICAgIHJldHVybiB0ZW1wUGF0aDsKKysgICAgfQorIAorICAgICB0ZW1wUGF0aCA9 IFFTdGFuZGFyZFBhdGhzOjp3cml0YWJsZUxvY2F0aW9uKFFTdGFuZGFyZFBhdGhzOjpHZW5lcmlj Q2FjaGVMb2NhdGlvbik7CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBv cnQvdGhlbWVzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHRoZW1lcy5jcHAgYi9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4dGhlbWVzLmNw cAoraW5kZXggY2IxYjM5ZGI2NC4uNmUwMWFmMDUyYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv cGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXh0aGVtZXMuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvcWdl bmVyaWN1bml4dGhlbWVzLmNwcAorQEAgLTc1NSw2ICs3NTUsOSBAQCBRVmFyaWFudCBRR25vbWVU aGVtZTo6dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpUaGVtZUhpbnQgaGludCkgY29uc3QKKyAg ICAgICAgIHJldHVybiBRVmFyaWFudChRQ2hhcigweDIwMjIpKTsKKyAgICAgY2FzZSBRUGxhdGZv cm1UaGVtZTo6VWlFZmZlY3RzOgorICAgICAgICAgcmV0dXJuIFFWYXJpYW50KGludChIb3ZlckVm ZmVjdCkpOworKyAgICBjYXNlIFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXM6CisrICAg ICAgICByZXR1cm4gUVZhcmlhbnQ6OmZyb21WYWx1ZSgKKysgICAgICAgICAgICAgICAgUUxpc3Q8 UXQ6OktleT4oeyBRdDo6S2V5X1NwYWNlLCBRdDo6S2V5X1JldHVybiwgUXQ6OktleV9FbnRlciwg UXQ6OktleV9TZWxlY3QgfSkpOworICAgICBkZWZhdWx0OgorICAgICAgICAgYnJlYWs7CisgICAg IH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2FwaS9x ZWdsZnNjdXJzb3IuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9hcGkv cWVnbGZzY3Vyc29yLmNwcAoraW5kZXggOThlMDUxOTVlZS4uMWU5MmY0M2RlYyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xmc2N1cnNvci5j cHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xmc2N1 cnNvci5jcHAKK0BAIC0zNDMsOCArMzQzLDcgQEAgdm9pZCBRRWdsRlNDdXJzb3I6OnBhaW50T25T Y3JlZW4oKQorICAgICAvLyBzY3JlZW5zIGFyZSBzaWJsaW5ncyBvZiBlYWNoIG90aGVyLiBXaGVu IG5vdCBlbmFibGVkLCB0aGUgc2libGluZyBsaXN0CisgICAgIC8vIG9ubHkgY29udGFpbnMgbV9z Y3JlZW4gaXRzZWxmLgorICAgICBmb3IgKFFQbGF0Zm9ybVNjcmVlbiAqc2NyZWVuIDogbV9zY3Jl ZW4tPnZpcnR1YWxTaWJsaW5ncygpKSB7CistICAgICAgICBpZiAoc2NyZWVuLT5nZW9tZXRyeSgp LmNvbnRhaW5zKGNyLnRvcExlZnQoKS50b1BvaW50KCkgKyBtX2N1cnNvci5ob3RTcG90KQorLSAg ICAgICAgICAgICYmIFFPcGVuR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpLT5zY3JlZW4oKSA9 PSBzY3JlZW4tPnNjcmVlbigpKQorKyAgICAgICAgaWYgKHNjcmVlbi0+Z2VvbWV0cnkoKS5jb250 YWlucyhjci50b3BMZWZ0KCkudG9Qb2ludCgpICsgbV9jdXJzb3IuaG90U3BvdCkpCisgICAgICAg ICB7CisgICAgICAgICAgICAgY3IudHJhbnNsYXRlKC1zY3JlZW4tPmdlb21ldHJ5KCkudG9wTGVm dCgpKTsKKyAgICAgICAgICAgICBjb25zdCBRU2l6ZSBzY3JlZW5TaXplID0gc2NyZWVuLT5nZW9t ZXRyeSgpLnNpemUoKTsKK0BAIC00NjgsMTEgKzQ2NywxMiBAQCB2b2lkIFFFZ2xGU0N1cnNvcjo6 ZHJhdyhjb25zdCBRUmVjdEYgJnIpCisgeworICAgICBTdGF0ZVNhdmVyIHN0YXRlU2F2ZXI7Cisg CistICAgIFFFZ2xGU0N1cnNvckRhdGEgJmdmeCA9IHN0YXRpY19jYXN0PFFFZ2xGU0NvbnRleHQq PihRT3BlbkdMQ29udGV4dDo6Y3VycmVudENvbnRleHQoKS0+aGFuZGxlKCkpLT5jdXJzb3JEYXRh OworLSAgICBpZiAoIWdmeC5wcm9ncmFtKSB7CistICAgICAgICAvLyBvbmUgdGltZSBpbml0aWFs aXphdGlvbgorKyAgICAvLyBvbmUgdGltZSBpbml0aWFsaXphdGlvbgorKyAgICBpZiAoIVFPcGVu R0xGdW5jdGlvbnM6OmRfcHRyKQorICAgICAgICAgaW5pdGlhbGl6ZU9wZW5HTEZ1bmN0aW9ucygp OworIAorKyAgICBRRWdsRlNDdXJzb3JEYXRhICZnZnggPSBzdGF0aWNfY2FzdDxRRWdsRlNDb250 ZXh0Kj4oUU9wZW5HTENvbnRleHQ6OmN1cnJlbnRDb250ZXh0KCktPmhhbmRsZSgpKS0+Y3Vyc29y RGF0YTsKKysgICAgaWYgKCFnZngucHJvZ3JhbSkgeworICAgICAgICAgY3JlYXRlU2hhZGVyUHJv Z3JhbXMoKTsKKyAKKyAgICAgICAgIGlmICghZ2Z4LmF0bGFzVGV4dHVyZSkgeworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRpb24v ZWdsZnNfa21zX3N1cHBvcnQvcWVnbGZza21zZXZlbnRyZWFkZXIuY3BwIGIvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9kZXZpY2VpbnRlZ3JhdGlvbi9lZ2xmc19rbXNfc3VwcG9y dC9xZWdsZnNrbXNldmVudHJlYWRlci5jcHAKK2luZGV4IDY0NWEwYWUyZTkuLjNlMGU0MDZmMWEg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2RldmljZWlu dGVncmF0aW9uL2VnbGZzX2ttc19zdXBwb3J0L3FlZ2xmc2ttc2V2ZW50cmVhZGVyLmNwcAorKysr IGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9kZXZpY2VpbnRlZ3JhdGlvbi9l Z2xmc19rbXNfc3VwcG9ydC9xZWdsZnNrbXNldmVudHJlYWRlci5jcHAKK0BAIC0xNzksNyArMTc5 LDcgQEAgdm9pZCBRRWdsRlNLbXNFdmVudFJlYWRlcjo6Y3JlYXRlKFFFZ2xGU0ttc0RldmljZSAq ZGV2aWNlKQorIAorICAgICBtX2RldmljZSA9IGRldmljZTsKKyAKKy0gICAgcUNEZWJ1ZyhxTGNF Z2xmc0ttc0RlYnVnLCAiSW5pdGFsaXppbmcgZXZlbnQgcmVhZGVyIGZvciBkZXZpY2UgJXAgZmQg JWQiLAorKyAgICBxQ0RlYnVnKHFMY0VnbGZzS21zRGVidWcsICJJbml0aWFsaXppbmcgZXZlbnQg cmVhZGVyIGZvciBkZXZpY2UgJXAgZmQgJWQiLAorICAgICAgICAgICAgIG1fZGV2aWNlLCBtX2Rl dmljZS0+ZmQoKSk7CisgCisgICAgIG1fdGhyZWFkID0gbmV3IFFFZ2xGU0ttc0V2ZW50UmVhZGVy VGhyZWFkKG1fZGV2aWNlLT5mZCgpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uY3BwIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmNwcAor aW5kZXggMTQxZmI2OGEyMy4uZDQyOTRkNDI1YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5jcHAKKysrKyBi L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3Jh dGlvbi5jcHAKK0BAIC0xMjIsMTEgKzEyMiwxMyBAQCBRT2Zmc2NyZWVuSW50ZWdyYXRpb246OlFP ZmZzY3JlZW5JbnRlZ3JhdGlvbigpCisgI2VuZGlmCisgICAgIG1fc2VydmljZXMucmVzZXQobmV3 IFFQbGF0Zm9ybVNlcnZpY2VzKTsKKyAKKy0gICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFu ZGxlU2NyZWVuQWRkZWQobmV3IFFPZmZzY3JlZW5TY3JlZW4pOworKyAgICBtX3NjcmVlbiA9IG5l dyBRT2Zmc2NyZWVuU2NyZWVuOworKyAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVT Y3JlZW5BZGRlZChtX3NjcmVlbik7CisgfQorIAorIFFPZmZzY3JlZW5JbnRlZ3JhdGlvbjo6flFP ZmZzY3JlZW5JbnRlZ3JhdGlvbigpCisgeworKyAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpo YW5kbGVTY3JlZW5SZW1vdmVkKG1fc2NyZWVuKTsKKyB9CisgCisgdm9pZCBRT2Zmc2NyZWVuSW50 ZWdyYXRpb246OmluaXRpYWxpemUoKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5oIGIvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmgKK2luZGV4 IDBlYTkwZjZjMmYuLmZlMDBmZGUwN2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uaAorKysrIGIvcXRiYXNl L3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmgK K0BAIC04NCw2ICs4NCw3IEBAIHByb3RlY3RlZDoKKyAjZW5kaWYKKyAgICAgUVNjb3BlZFBvaW50 ZXI8UVBsYXRmb3JtSW5wdXRDb250ZXh0PiBtX2lucHV0Q29udGV4dDsKKyAgICAgUVNjb3BlZFBv aW50ZXI8UVBsYXRmb3JtU2VydmljZXM+IG1fc2VydmljZXM7CisrICAgIFFQbGF0Zm9ybVNjcmVl biAqbV9zY3JlZW47CisgICAgIG11dGFibGUgUVNjb3BlZFBvaW50ZXI8UVBsYXRmb3JtTmF0aXZl SW50ZXJmYWNlPiBtX25hdGl2ZUludGVyZmFjZTsKKyB9OworIAorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c2dsY29udGV4dC5jcHAgYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NnbGNvbnRleHQuY3Bw CitpbmRleCA2ZmE1YThhMmIzLi4xZjQ5ZjBhZWZkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzZ2xjb250ZXh0LmNwcAorKysrIGIvcXRi YXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzZ2xjb250ZXh0LmNwcAor QEAgLTQ4LDYgKzQ4LDcgQEAKKyAjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybW5hdGl2ZWludGVyZmFj ZS5oPgorICNpbmNsdWRlIDxRdFBsYXRmb3JtSGVhZGVycy9xd2dsbmF0aXZlY29udGV4dC5oPgor IAorKyNpbmNsdWRlIDxwcml2YXRlL3FzeXN0ZW1saWJyYXJ5X3AuaD4KKyAjaW5jbHVkZSA8YWxn b3JpdGhtPgorIAorICNpbmNsdWRlIDx3aW5nZGkuaD4KK0BAIC0xNjIsMTkgKzE2MywyNSBAQCBR RnVuY3Rpb25Qb2ludGVyIFFXaW5kb3dzT3BlbmdsMzJETEw6OnJlc29sdmUoY29uc3QgY2hhciAq bmFtZSkKKyAKKyBib29sIFFXaW5kb3dzT3BlbmdsMzJETEw6OmluaXQoYm9vbCBzb2Z0d2FyZVJl bmRlcmluZykKKyB7CistICAgIGNvbnN0IFFCeXRlQXJyYXkgb3BlbmdsMzIgPSBRQnl0ZUFycmF5 TGl0ZXJhbCgib3BlbmdsMzIuZGxsIik7CistICAgIGNvbnN0IFFCeXRlQXJyYXkgc3dvcGVuZ2wg PSBRQnl0ZUFycmF5TGl0ZXJhbCgib3BlbmdsMzJzdy5kbGwiKTsKKysgICAgY29uc3QgUUJ5dGVB cnJheSBvcGVuZ2wzMiA9IFFCeXRlQXJyYXlMaXRlcmFsKCJvcGVuZ2wzMiIpOworKyAgICBjb25z dCBRQnl0ZUFycmF5IHN3b3BlbmdsID0gUUJ5dGVBcnJheUxpdGVyYWwoIm9wZW5nbDMyc3ciKTsK KysgICAgYm9vbCB1c2VTeXN0ZW1MaWIgPSBmYWxzZTsKKyAKKyAgICAgUUJ5dGVBcnJheSBvcGVu Z2xEbGwgPSBxZ2V0ZW52KCJRVF9PUEVOR0xfRExMIik7CistICAgIGlmIChvcGVuZ2xEbGwuaXNF bXB0eSgpKQorKyAgICBpZiAob3BlbmdsRGxsLmlzRW1wdHkoKSkgeworICAgICAgICAgb3Blbmds RGxsID0gc29mdHdhcmVSZW5kZXJpbmcgPyBzd29wZW5nbCA6IG9wZW5nbDMyOworKyAgICAgICAg dXNlU3lzdGVtTGliID0gIXNvZnR3YXJlUmVuZGVyaW5nOworKyAgICB9CisgCisgICAgIG9wZW5n bERsbCA9IG9wZW5nbERsbC50b0xvd2VyKCk7CisgICAgIG1fbm9uT3BlbmdsMzIgPSBvcGVuZ2xE bGwgIT0gb3BlbmdsMzI7CisgCisgICAgIHFDRGVidWcobGNRcGFHbCkgPDwgIlF0OiBVc2luZyBX R0wgYW5kIE9wZW5HTCBmcm9tIiA8PCBvcGVuZ2xEbGw7CisgCistICAgIG1fbGliID0gOjpMb2Fk TGlicmFyeUEob3BlbmdsRGxsLmNvbnN0RGF0YSgpKTsKKysgICAgaWYgKHVzZVN5c3RlbUxpYikK KysgICAgICAgIG1fbGliID0gUVN5c3RlbUxpYnJhcnk6OmxvYWQoKHdjaGFyX3QqKShRU3RyaW5n Ojpmcm9tTGF0aW4xKG9wZW5nbERsbCkudXRmMTYoKSkpOworKyAgICBlbHNlCisrICAgICAgICBt X2xpYiA9IExvYWRMaWJyYXJ5QShvcGVuZ2xEbGwuY29uc3REYXRhKCkpOworICAgICBpZiAoIW1f bGliKSB7CisgICAgICAgICBxRXJybm9XYXJuaW5nKDo6R2V0TGFzdEVycm9yKCksICJGYWlsZWQg dG8gbG9hZCAlcyIsIG9wZW5nbERsbC5jb25zdERhdGEoKSk7CisgICAgICAgICByZXR1cm4gZmFs c2U7CitAQCAtMTg0LDcgKzE5MSw3IEBAIGJvb2wgUVdpbmRvd3NPcGVuZ2wzMkRMTDo6aW5pdChi b29sIHNvZnR3YXJlUmVuZGVyaW5nKQorICAgICAgICAgLy8gTG9hZCBvcGVuZ2wzMi5kbGwgYWx3 YXlzLiBHREkgZnVuY3Rpb25zIGxpa2UgQ2hvb3NlUGl4ZWxGb3JtYXQgZG8KKyAgICAgICAgIC8v IEdldE1vZHVsZUhhbmRsZSBmb3Igb3BlbmdsMzIuZGxsIGFuZCBiZWhhdmUgZGlmZmVyZW50bHkg KGFuZCBjYWxsIGJhY2sgaW50bworICAgICAgICAgLy8gb3BlbmdsMzIpIHdoZW4gdGhlIG1vZHVs ZSBpcyBwcmVzZW50LiBUaGlzIGlzIGZpbmUgZm9yIGR1bW15IGNvbnRleHRzIGFuZCB3aW5kb3dz LgorLSAgICAgICAgOjpMb2FkTGlicmFyeUEoIm9wZW5nbDMyLmRsbCIpOworKyAgICAgICAgUVN5 c3RlbUxpYnJhcnk6OmxvYWQoTCJvcGVuZ2wzMiIpOworICAgICB9CisgCisgICAgIHdnbENyZWF0 ZUNvbnRleHQgPSByZWludGVycHJldF9jYXN0PEhHTFJDIChXSU5BUEkgKikoSERDKT4ocmVzb2x2 ZSgid2dsQ3JlYXRlQ29udGV4dCIpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NvcGVuZ2x0ZXN0ZXIuY3BwIGIvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzb3BlbmdsdGVzdGVyLmNwcAoraW5kZXgg ZDdkMTg2ZTgwNC4uOWViNDAxMWJmMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMvd2luZG93cy9xd2luZG93c29wZW5nbHRlc3Rlci5jcHAKKysrKyBiL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c29wZW5nbHRlc3Rlci5jcHAKK0BA IC00OSw2ICs0OSw3IEBACisgI2luY2x1ZGUgPFF0Q29yZS9xc3RhbmRhcmRwYXRocy5oPgorICNp bmNsdWRlIDxRdENvcmUvcWxpYnJhcnlpbmZvLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xaGFzaC5o PgorKyNpbmNsdWRlIDxwcml2YXRlL3FzeXN0ZW1saWJyYXJ5X3AuaD4KKyAKKyAjaWZuZGVmIFFU X05PX09QRU5HTAorICNpbmNsdWRlIDxwcml2YXRlL3FvcGVuZ2xfcC5oPgorQEAgLTM5Niw3ICsz OTcsNyBAQCBib29sIFFXaW5kb3dzT3BlbkdMVGVzdGVyOjp0ZXN0RGVza3RvcEdMKCkKKyAKKyAg ICAgLy8gVGVzdCAjMTogTG9hZCBvcGVuZ2wzMi5kbGwgYW5kIHRyeSB0byByZXNvbHZlIGFuIE9w ZW5HTCAyIGZ1bmN0aW9uLgorICAgICAvLyBUaGlzIHdpbGwgdHlwaWNhbGx5IGZhaWwgb24gc3lz dGVtcyB0aGF0IGRvIG5vdCBoYXZlIGEgcmVhbCBPcGVuR0wgZHJpdmVyLgorLSAgICBsaWIgPSBM b2FkTGlicmFyeUEoIm9wZW5nbDMyLmRsbCIpOworKyAgICBsaWIgPSBRU3lzdGVtTGlicmFyeTo6 bG9hZChMIm9wZW5nbDMyIik7CisgICAgIGlmIChsaWIpIHsKKyAgICAgICAgIENyZWF0ZUNvbnRl eHQgPSByZWludGVycHJldF9jYXN0PENyZWF0ZUNvbnRleHRUeXBlPigKKyAgICAgICAgICAgICBy ZWludGVycHJldF9jYXN0PFFGdW5jdGlvblBvaW50ZXI+KDo6R2V0UHJvY0FkZHJlc3MobGliLCAi d2dsQ3JlYXRlQ29udGV4dCIpKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy94Y2IvbmF0aXZlcGFpbnRpbmcvcXRlc3NlbGxhdG9yLmNwcCBiL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXMveGNiL25hdGl2ZXBhaW50aW5nL3F0ZXNzZWxsYXRvci5jcHAKK2lu ZGV4IDFhZmEwMGNmYzkuLjExOGFmNmNlNzMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL3hjYi9uYXRpdmVwYWludGluZy9xdGVzc2VsbGF0b3IuY3BwCisrKysgYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9uYXRpdmVwYWludGluZy9xdGVzc2VsbGF0 b3IuY3BwCitAQCAtNDEsNiArNDEsNyBAQAorIAorICNpbmNsdWRlIDxRUmVjdD4KKyAjaW5jbHVk ZSA8UUxpc3Q+CisrI2luY2x1ZGUgPFFNYXA+CisgI2luY2x1ZGUgPFFEZWJ1Zz4KKyAKKyAjaW5j bHVkZSA8cW1hdGguaD4KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1z L3hjYi9xeGNiY29ubmVjdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hj Yi9xeGNiY29ubmVjdGlvbi5jcHAKK2luZGV4IDllMmEzN2E2YTEuLmU2ZTE3NWExMTggMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29ubmVjdGlvbi5j cHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2Jjb25uZWN0aW9u LmNwcAorQEAgLTQ4OCwxMiArNDg4LDEyIEBAIHZvaWQgUVhjYkNvbm5lY3Rpb246OnByaW50WGNi RXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSwgeGNiX2dlbmVyaWNfZXJyb3JfdCAqZXJyCisgICAg IHVpbnQgY2xhbXBlZF9lcnJvcl9jb2RlID0gcU1pbjx1aW50PihlcnJvci0+ZXJyb3JfY29kZSwg KHNpemVvZih4Y2JfZXJyb3JzKSAvIHNpemVvZih4Y2JfZXJyb3JzWzBdKSkgLSAxKTsKKyAgICAg dWludCBjbGFtcGVkX21ham9yX2NvZGUgPSBxTWluPHVpbnQ+KGVycm9yLT5tYWpvcl9jb2RlLCAo c2l6ZW9mKHhjYl9wcm90b2NvbF9yZXF1ZXN0X2NvZGVzKSAvIHNpemVvZih4Y2JfcHJvdG9jb2xf cmVxdWVzdF9jb2Rlc1swXSkpIC0gMSk7CisgCistICAgIHFDV2FybmluZyhsY1FwYVhjYiwgIiVz OiAlZCAoJXMpLCBzZXF1ZW5jZTogJWQsIHJlc291cmNlIGlkOiAlZCwgbWFqb3IgY29kZTogJWQg KCVzKSwgbWlub3IgY29kZTogJWQiLAorLSAgICAgICAgICAgICBtZXNzYWdlLAorLSAgICAgICAg ICAgICBpbnQoZXJyb3ItPmVycm9yX2NvZGUpLCB4Y2JfZXJyb3JzW2NsYW1wZWRfZXJyb3JfY29k ZV0sCistICAgICAgICAgICAgIGludChlcnJvci0+c2VxdWVuY2UpLCBpbnQoZXJyb3ItPnJlc291 cmNlX2lkKSwKKy0gICAgICAgICAgICAgaW50KGVycm9yLT5tYWpvcl9jb2RlKSwgeGNiX3Byb3Rv Y29sX3JlcXVlc3RfY29kZXNbY2xhbXBlZF9tYWpvcl9jb2RlXSwKKy0gICAgICAgICAgICAgaW50 KGVycm9yLT5taW5vcl9jb2RlKSk7CisrICAgIHFDRGVidWcobGNRcGFYY2IsICIlczogJWQgKCVz KSwgc2VxdWVuY2U6ICVkLCByZXNvdXJjZSBpZDogJWQsIG1ham9yIGNvZGU6ICVkICglcyksIG1p bm9yIGNvZGU6ICVkIiwKKysgICAgICAgICAgICBtZXNzYWdlLAorKyAgICAgICAgICAgIGludChl cnJvci0+ZXJyb3JfY29kZSksIHhjYl9lcnJvcnNbY2xhbXBlZF9lcnJvcl9jb2RlXSwKKysgICAg ICAgICAgICBpbnQoZXJyb3ItPnNlcXVlbmNlKSwgaW50KGVycm9yLT5yZXNvdXJjZV9pZCksCisr ICAgICAgICAgICAgaW50KGVycm9yLT5tYWpvcl9jb2RlKSwgeGNiX3Byb3RvY29sX3JlcXVlc3Rf Y29kZXNbY2xhbXBlZF9tYWpvcl9jb2RlXSwKKysgICAgICAgICAgICBpbnQoZXJyb3ItPm1pbm9y X2NvZGUpKTsKKyB9CisgCisgc3RhdGljIFF0OjpNb3VzZUJ1dHRvbnMgdHJhbnNsYXRlTW91c2VC dXR0b25zKGludCBzKQorQEAgLTcwMiw2ICs3MDIsOCBAQCB2b2lkIFFYY2JDb25uZWN0aW9uOjpo YW5kbGVYY2JFdmVudCh4Y2JfZ2VuZXJpY19ldmVudF90ICpldmVudCkKKyAgICAgICAgICAgICBR WGNiVmlydHVhbERlc2t0b3AgKnZpcnR1YWxEZXNrdG9wID0gdmlydHVhbERlc2t0b3BGb3JSb290 V2luZG93KHByb3BlcnR5Tm90aWZ5LT53aW5kb3cpOworICAgICAgICAgICAgIGlmICh2aXJ0dWFs RGVza3RvcCkKKyAgICAgICAgICAgICAgICAgdmlydHVhbERlc2t0b3AtPnVwZGF0ZVdvcmtBcmVh KCk7CisrICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5Tm90aWZ5LT5hdG9tID09IGF0b20oUVhj YkF0b206Ol9ORVRfU1VQUE9SVEVEKSkgeworKyAgICAgICAgICAgIG1fd21TdXBwb3J0LT51cGRh dGVOZXRXTUF0b21zKCk7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIEhBTkRMRV9Q TEFURk9STV9XSU5ET1dfRVZFTlQoeGNiX3Byb3BlcnR5X25vdGlmeV9ldmVudF90LCB3aW5kb3cs IGhhbmRsZVByb3BlcnR5Tm90aWZ5RXZlbnQpOworICAgICAgICAgfQorQEAgLTc1MCw3ICs3NTIs NyBAQCB2b2lkIFFYY2JDb25uZWN0aW9uOjpoYW5kbGVYY2JFdmVudCh4Y2JfZ2VuZXJpY19ldmVu dF90ICpldmVudCkKKyAgICAgICAgICAgICAgICAgY2FzZSBYQ0JfWEtCX05FV19LRVlCT0FSRF9O T1RJRlk6IHsKKyAgICAgICAgICAgICAgICAgICAgIHhjYl94a2JfbmV3X2tleWJvYXJkX25vdGlm eV9ldmVudF90ICpldiA9ICZ4a2JfZXZlbnQtPm5ld19rZXlib2FyZF9ub3RpZnk7CisgICAgICAg ICAgICAgICAgICAgICBpZiAoZXYtPmNoYW5nZWQgJiBYQ0JfWEtCX05LTl9ERVRBSUxfS0VZQ09E RVMpCistICAgICAgICAgICAgICAgICAgICAgICAgbV9rZXlib2FyZC0+dXBkYXRlS2V5bWFwKGV2 KTsKKysgICAgICAgICAgICAgICAgICAgICAgICBtX2tleWJvYXJkLT51cGRhdGVLZXltYXAoKTsK KyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgIGRlZmF1bHQ6CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy94Y2IvcXhjYmludGVncmF0aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXMveGNiL3F4Y2JpbnRlZ3JhdGlvbi5jcHAKK2luZGV4IDc2ODY5Y2VkNjAuLjAyZDJlZWJiNTYg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50ZWdy YXRpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50 ZWdyYXRpb24uY3BwCitAQCAtMjc0LDggKzI3NCw3IEBAIFFQbGF0Zm9ybVdpbmRvdyAqUVhjYklu dGVncmF0aW9uOjpjcmVhdGVGb3JlaWduV2luZG93KFFXaW5kb3cgKndpbmRvdywgV0lkIG5hdGl2 CisgI2lmbmRlZiBRVF9OT19PUEVOR0wKKyBRUGxhdGZvcm1PcGVuR0xDb250ZXh0ICpRWGNiSW50 ZWdyYXRpb246OmNyZWF0ZVBsYXRmb3JtT3BlbkdMQ29udGV4dChRT3BlbkdMQ29udGV4dCAqY29u dGV4dCkgY29uc3QKKyB7CistICAgIFFYY2JTY3JlZW4gKnNjcmVlbiA9IHN0YXRpY19jYXN0PFFY Y2JTY3JlZW4gKj4oY29udGV4dC0+c2NyZWVuKCktPmhhbmRsZSgpKTsKKy0gICAgUVhjYkdsSW50 ZWdyYXRpb24gKmdsSW50ZWdyYXRpb24gPSBzY3JlZW4tPmNvbm5lY3Rpb24oKS0+Z2xJbnRlZ3Jh dGlvbigpOworKyAgICBRWGNiR2xJbnRlZ3JhdGlvbiAqZ2xJbnRlZ3JhdGlvbiA9IGRlZmF1bHRD b25uZWN0aW9uKCktPmdsSW50ZWdyYXRpb24oKTsKKyAgICAgaWYgKCFnbEludGVncmF0aW9uKSB7 CisgICAgICAgICBxV2FybmluZygiUVhjYkludGVncmF0aW9uOiBDYW5ub3QgY3JlYXRlIHBsYXRm b3JtIE9wZW5HTCBjb250ZXh0LCBuZWl0aGVyIEdMWCBub3IgRUdMIGFyZSBlbmFibGVkIik7Cisg ICAgICAgICByZXR1cm4gbnVsbHB0cjsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy94Y2IvcXhjYmtleWJvYXJkLmNwcAoraW5kZXggZWZlY2Q3ZTJkMS4uZTgyODYzODFhMiAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2Fy ZC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2Fy ZC5jcHAKK0BAIC0zNjUsMTcgKzM2NSw2IEBAIHZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXlt YXAoeGNiX21hcHBpbmdfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorICAgICB1cGRhdGVLZXltYXAo KTsKKyB9CisgCistdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCh4Y2JfeGtiX25ld19r ZXlib2FyZF9ub3RpZnlfZXZlbnRfdCAqZXZlbnQpCisteworLSAgICBpZiAoIWV2ZW50KQorLSAg ICAgICAgcmV0dXJuOworLQorLSAgICBpZiAoZXZlbnQtPmRldmljZUlEICE9IGV2ZW50LT5vbGRE ZXZpY2VJRCkKKy0gICAgICAgIG1fY29uZmlnID0gZmFsc2U7CistCistICAgIHVwZGF0ZUtleW1h cCgpOworLX0KKy0KKyB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkKKyB7CisgICAg IEtleXN5bU1vZGlmaWVyTWFwIGtleXN5bU1vZHM7CitAQCAtMzgzLDYgKzM3Miw4IEBAIHZvaWQg UVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoKQorICAgICAgICAga2V5c3ltTW9kcyA9IGtleXN5 bXNUb01vZGlmaWVycygpOworICAgICB1cGRhdGVNb2RpZmllcnMoa2V5c3ltTW9kcyk7CisgCisr ICAgIG1fY29uZmlnID0gdHJ1ZTsKKysKKyAgICAgaWYgKCFtX3hrYkNvbnRleHQpIHsKKyAgICAg ICAgIG1feGtiQ29udGV4dC5yZXNldCh4a2JfY29udGV4dF9uZXcoWEtCX0NPTlRFWFRfTk9fREVG QVVMVF9JTkNMVURFUykpOworICAgICAgICAgaWYgKCFtX3hrYkNvbnRleHQpIHsKK0BAIC0zOTgs MTMgKzM4OSw4IEBAIHZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoKQorICAgICBpZiAo Y29ubmVjdGlvbigpLT5oYXNYS0IoKSkgeworICAgICAgICAgbV94a2JLZXltYXAucmVzZXQoeGti X3gxMV9rZXltYXBfbmV3X2Zyb21fZGV2aWNlKG1feGtiQ29udGV4dC5nZXQoKSwgeGNiX2Nvbm5l Y3Rpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb3JlX2RldmljZV9pZCwgWEtCX0tFWU1BUF9DT01QSUxFX05PX0ZMQUdTKSk7 CistICAgICAgICBpZiAobV94a2JLZXltYXApIHsKKy0gICAgICAgICAgICBpZiAobV9jb25maWcp CistICAgICAgICAgICAgICAgIG1feGtiU3RhdGUucmVzZXQoeGtiX3N0YXRlX25ldyhtX3hrYktl eW1hcC5nZXQoKSkpOworLSAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgbV94a2JT dGF0ZS5yZXNldCh4a2JfeDExX3N0YXRlX25ld19mcm9tX2RldmljZShtX3hrYktleW1hcC5nZXQo KSwgeGNiX2Nvbm5lY3Rpb24oKSwgY29yZV9kZXZpY2VfaWQpKTsKKy0KKy0gICAgICAgIH0KKysg ICAgICAgIGlmIChtX3hrYktleW1hcCkKKysgICAgICAgICAgICBtX3hrYlN0YXRlLnJlc2V0KHhr Yl94MTFfc3RhdGVfbmV3X2Zyb21fZGV2aWNlKG1feGtiS2V5bWFwLmdldCgpLCB4Y2JfY29ubmVj dGlvbigpLCBjb3JlX2RldmljZV9pZCkpOworICAgICB9IGVsc2UgeworICAgICAgICAgbV94a2JL ZXltYXAucmVzZXQoa2V5bWFwRnJvbUNvcmUoa2V5c3ltTW9kcykpOworICAgICAgICAgaWYgKG1f eGtiS2V5bWFwKQorQEAgLTQyNSw4ICs0MTEsNiBAQCB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRl S2V5bWFwKCkKKyAgICAgdXBkYXRlWEtCTW9kcygpOworIAorICAgICBRWGtiQ29tbW9uOjp2ZXJp ZnlIYXNMYXRpbkxheW91dChtX3hrYktleW1hcC5nZXQoKSk7CistCistICAgIG1fY29uZmlnID0g dHJ1ZTsKKyB9CisgCisgUUxpc3Q8aW50PiBRWGNiS2V5Ym9hcmQ6OnBvc3NpYmxlS2V5cyhjb25z dCBRS2V5RXZlbnQgKmV2ZW50KSBjb25zdAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy94Y2IvcXhjYmtleWJvYXJkLmgKK2luZGV4IGI2NTJjODVmZTMuLjBlZTA4YWVmZjIgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQu aAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmgK K0BAIC02OSw3ICs2OSw2IEBAIHB1YmxpYzoKKyAKKyAgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJz IHRyYW5zbGF0ZU1vZGlmaWVycyhpbnQgcykgY29uc3Q7CisgICAgIHZvaWQgdXBkYXRlS2V5bWFw KHhjYl9tYXBwaW5nX25vdGlmeV9ldmVudF90ICpldmVudCk7CistICAgIHZvaWQgdXBkYXRlS2V5 bWFwKHhjYl94a2JfbmV3X2tleWJvYXJkX25vdGlmeV9ldmVudF90ICpldmVudCk7CisgICAgIHZv aWQgdXBkYXRlS2V5bWFwKCk7CisgICAgIFFMaXN0PGludD4gcG9zc2libGVLZXlzKGNvbnN0IFFL ZXlFdmVudCAqZXZlbnQpIGNvbnN0OworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy94Y2IvcXhjYndpbmRvdy5jcHAKK2luZGV4IGZmZGE3YjZhNTcuLjg2M2U5NjFmNGMgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmNw cAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5jcHAK K0BAIC01NjQsMTEgKzU2NCw2IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3Qg UVJlY3QgJnJlY3QpCisgeworICAgICBRUGxhdGZvcm1XaW5kb3c6OnNldEdlb21ldHJ5KHJlY3Qp OworIAorLSAgICBpZiAoc2hvdWxkRGVmZXJUYXNrKFRhc2s6OlNldEdlb21ldHJ5KSkgeworLSAg ICAgICAgbV9kZWZlcnJlZEdlb21ldHJ5ID0gcmVjdDsKKy0gICAgICAgIHJldHVybjsKKy0gICAg fQorLQorICAgICBwcm9wYWdhdGVTaXplSGludHMoKTsKKyAKKyAgICAgUVhjYlNjcmVlbiAqY3Vy cmVudFNjcmVlbiA9IHhjYlNjcmVlbigpOworQEAgLTY5Myw5ICs2ODgsNiBAQCB2b2lkIFFYY2JX aW5kb3c6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQorIAorIHZvaWQgUVhjYldpbmRvdzo6c2hv dygpCisgeworLSAgICBpZiAoc2hvdWxkRGVmZXJUYXNrKFRhc2s6Ok1hcCkpCistICAgICAgICBy ZXR1cm47CistCisgICAgIGlmICh3aW5kb3coKS0+aXNUb3BMZXZlbCgpKSB7CisgCisgICAgICAg ICAvLyB1cGRhdGUgV01fTk9STUFMX0hJTlRTCitAQCAtNzA2LDcgKzY5OCw3IEBAIHZvaWQgUVhj YldpbmRvdzo6c2hvdygpCisgICAgICAgICBpZiAoaXNUcmFuc2llbnQod2luZG93KCkpKSB7Cisg ICAgICAgICAgICAgY29uc3QgUVdpbmRvdyAqdHAgPSB3aW5kb3coKS0+dHJhbnNpZW50UGFyZW50 KCk7CisgICAgICAgICAgICAgaWYgKHRwICYmIHRwLT5oYW5kbGUoKSkKKy0gICAgICAgICAgICAg ICAgdHJhbnNpZW50WGNiUGFyZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgUVhjYldpbmRvdyAqPih0 cC0+aGFuZGxlKCkpLT53aW5JZCgpOworKyAgICAgICAgICAgICAgICB0cmFuc2llbnRYY2JQYXJl bnQgPSB0cC0+aGFuZGxlKCktPndpbklkKCk7CisgICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBj bGllbnQgbGVhZGVyIGlmIHRoZXJlIGlzIG5vIHRyYW5zaWVudCBwYXJlbnQsIGVsc2UgbW9kYWwg ZGlhbG9ncyBjYW4KKyAgICAgICAgICAgICAvLyBiZSBoaWRkZW4gYnkgdGhlaXIgcGFyZW50cy4K KyAgICAgICAgICAgICBpZiAoIXRyYW5zaWVudFhjYlBhcmVudCkKK0BAIC03NDYsMTAgKzczOCw2 IEBAIHZvaWQgUVhjYldpbmRvdzo6c2hvdygpCisgCisgdm9pZCBRWGNiV2luZG93OjpoaWRlKCkK KyB7CistICAgIGlmIChzaG91bGREZWZlclRhc2soVGFzazo6VW5tYXApKQorLSAgICAgICAgcmV0 dXJuOworLQorLSAgICBtX3dtU3RhdGVWYWxpZCA9IGZhbHNlOworICAgICB4Y2JfdW5tYXBfd2lu ZG93KHhjYl9jb25uZWN0aW9uKCksIG1fd2luZG93KTsKKyAKKyAgICAgLy8gc2VuZCBzeW50aGV0 aWMgVW5tYXBOb3RpZnkgZXZlbnQgYWNjb3JkaW5nIHRvIGljY2NtIDQuMS40CitAQCAtOTA5LDkg Kzg5Nyw2IEBAIFFYY2JXaW5kb3c6Ok5ldFdtU3RhdGVzIFFYY2JXaW5kb3c6Om5ldFdtU3RhdGVz KCkKKyAKKyB2b2lkIFFYY2JXaW5kb3c6OnNldFdpbmRvd0ZsYWdzKFF0OjpXaW5kb3dGbGFncyBm bGFncykKKyB7CistICAgIGlmIChzaG91bGREZWZlclRhc2soVGFzazo6U2V0V2luZG93RmxhZ3Mp KQorLSAgICAgICAgcmV0dXJuOworLQorICAgICBRdDo6V2luZG93VHlwZSB0eXBlID0gc3RhdGlj X2Nhc3Q8UXQ6OldpbmRvd1R5cGU+KGludChmbGFncyAmIFF0OjpXaW5kb3dUeXBlX01hc2spKTsK KyAKKyAgICAgaWYgKHR5cGUgPT0gUXQ6OlRvb2xUaXApCitAQCAtOTQxLDggKzkyNiw2IEBAIHZv aWQgUVhjYldpbmRvdzo6c2V0V2luZG93RmxhZ3MoUXQ6OldpbmRvd0ZsYWdzIGZsYWdzKQorIAor ICAgICBzZXRUcmFuc3BhcmVudEZvck1vdXNlRXZlbnRzKGZsYWdzICYgUXQ6OldpbmRvd1RyYW5z cGFyZW50Rm9ySW5wdXQpOworICAgICB1cGRhdGVEb2VzTm90QWNjZXB0Rm9jdXMoZmxhZ3MgJiBR dDo6V2luZG93RG9lc05vdEFjY2VwdEZvY3VzKTsKKy0KKy0gICAgbV9pc1dtTWFuYWdlZFdpbmRv dyA9ICEoZmxhZ3MgJiBRdDo6WDExQnlwYXNzV2luZG93TWFuYWdlckhpbnQpOworIH0KKyAKKyB2 b2lkIFFYY2JXaW5kb3c6OnNldE1vdGlmV21IaW50cyhRdDo6V2luZG93RmxhZ3MgZmxhZ3MpCitA QCAtMTE0Miw5ICsxMTI1LDYgQEAgdm9pZCBRWGNiV2luZG93OjpzZXRXaW5kb3dTdGF0ZShRdDo6 V2luZG93U3RhdGVzIHN0YXRlKQorICAgICBpZiAoc3RhdGUgPT0gbV93aW5kb3dTdGF0ZSkKKyAg ICAgICAgIHJldHVybjsKKyAKKy0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpTZXRXaW5k b3dTdGF0ZSkpCistICAgICAgICByZXR1cm47CistCisgICAgIC8vIHVuc2V0IG9sZCBzdGF0ZQor ICAgICBpZiAobV93aW5kb3dTdGF0ZSAmIFF0OjpXaW5kb3dNaW5pbWl6ZWQpCisgICAgICAgICB4 Y2JfbWFwX3dpbmRvdyh4Y2JfY29ubmVjdGlvbigpLCBtX3dpbmRvdyk7CitAQCAtMTM1MCw2ICsx MzMwLDEyIEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0V2luZG93SWNvbihjb25zdCBRSWNvbiAmaWNv bikKKyAgICAgfQorIAorICAgICBpZiAoIWljb25fZGF0YS5pc0VtcHR5KCkpIHsKKysgICAgICAg IC8vIElnbm9yZSBpY29uIGV4Y2VlZGluZyBtYXhpbXVtIHhjYiByZXF1ZXN0IGxlbmd0aAorKyAg ICAgICAgaWYgKGljb25fZGF0YS5zaXplKCkgPiB4Y2JfZ2V0X21heGltdW1fcmVxdWVzdF9sZW5n dGgoeGNiX2Nvbm5lY3Rpb24oKSkpIHsKKysgICAgICAgICAgICBxV2FybmluZygiSWdub3Jpbmcg d2luZG93IGljb246IFNpemUgJWxsdSBleGNlZWRzIG1heGltdW0geGNiIHJlcXVlc3QgbGVuZ3Ro ICV1LiIsCisrICAgICAgICAgICAgICAgICAgICAgaWNvbl9kYXRhLnNpemUoKSwgeGNiX2dldF9t YXhpbXVtX3JlcXVlc3RfbGVuZ3RoKHhjYl9jb25uZWN0aW9uKCkpKTsKKysgICAgICAgICAgICBy ZXR1cm47CisrICAgICAgICB9CisgICAgICAgICB4Y2JfY2hhbmdlX3Byb3BlcnR5KHhjYl9jb25u ZWN0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhDQl9QUk9QX01PREVfUkVQ TEFDRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV93aW5kb3csCitAQCAtMTYzOSw3 ICsxNjI1LDcgQEAgdm9pZCBRWGNiV2luZG93OjpzZXRXbVdpbmRvd1R5cGUoUVhjYldpbmRvd0Z1 bmN0aW9uczo6V21XaW5kb3dUeXBlcyB0eXBlcywgUXQ6OlcKKyAgICAgICAgIGJyZWFrOworICAg ICB9CisgCistICAgIGlmICgoZmxhZ3MgJiBRdDo6RnJhbWVsZXNzV2luZG93SGludCkgJiYgISh0 eXBlICYgUVhjYldpbmRvd0Z1bmN0aW9uczo6S2RlT3ZlcnJpZGUpKSB7CisrICAgIGlmICgoZmxh Z3MgJiBRdDo6RnJhbWVsZXNzV2luZG93SGludCkgJiYgISh0eXBlcyAmIFFYY2JXaW5kb3dGdW5j dGlvbnM6OktkZU92ZXJyaWRlKSkgeworICAgICAgICAgLy8gb3ZlcnJpZGUgbmV0d20gdHlwZSAt IHF1aWNrIGFuZCBlYXN5IGZvciBLREUgbm9ib3JkZXIKKyAgICAgICAgIGF0b21zLmFwcGVuZChh dG9tKFFYY2JBdG9tOjpfS0RFX05FVF9XTV9XSU5ET1dfVFlQRV9PVkVSUklERSkpOworICAgICB9 CitAQCAtMTg5NCwxMCArMTg4MCw2IEBAIHZvaWQgUVhjYldpbmRvdzo6aGFuZGxlVW5tYXBOb3Rp ZnlFdmVudChjb25zdCB4Y2JfdW5tYXBfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorICAgICBpZiAo ZXZlbnQtPndpbmRvdyA9PSBtX3dpbmRvdykgeworICAgICAgICAgbV9tYXBwZWQgPSBmYWxzZTsK KyAgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUV4cG9zZUV2ZW50KHdpbmRv dygpLCBRUmVnaW9uKCkpOworLSAgICAgICAgaWYgKCFtX2lzV21NYW5hZ2VkV2luZG93IHx8IHBh cmVudCgpKSB7CistICAgICAgICAgICAgbV93bVN0YXRlVmFsaWQgPSB0cnVlOworLSAgICAgICAg ICAgIGhhbmRsZURlZmVycmVkVGFza3MoKTsKKy0gICAgICAgIH0KKyAgICAgfQorIH0KKyAKK0BA IC0yMjEyLDk4ICsyMTk0LDMwIEBAIHZvaWQgUVhjYldpbmRvdzo6aGFuZGxlTGVhdmVOb3RpZnlF dmVudChjb25zdCB4Y2JfbGVhdmVfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorICAgICBoYW5kbGVM ZWF2ZU5vdGlmeUV2ZW50KGV2ZW50LT5yb290X3gsIGV2ZW50LT5yb290X3ksIGV2ZW50LT5tb2Rl LCBldmVudC0+ZGV0YWlsLCBldmVudC0+dGltZSk7CisgfQorIAorLWJvb2wgUVhjYldpbmRvdzo6 c2hvdWxkRGVmZXJUYXNrKFRhc2sgdGFzaykKKy17CistICAgIGlmIChtX3dtU3RhdGVWYWxpZCkK Ky0gICAgICAgIHJldHVybiBmYWxzZTsKKy0KKy0gICAgbV9kZWZlcnJlZFRhc2tzLmFwcGVuZCh0 YXNrKTsKKy0gICAgcmV0dXJuIHRydWU7CistfQorLQorLXZvaWQgUVhjYldpbmRvdzo6aGFuZGxl RGVmZXJyZWRUYXNrcygpCisteworLSAgICBRX0FTU0VSVChtX3dtU3RhdGVWYWxpZCA9PSB0cnVl KTsKKy0gICAgaWYgKG1fZGVmZXJyZWRUYXNrcy5pc0VtcHR5KCkpCistICAgICAgICByZXR1cm47 CistCistICAgIGJvb2wgbWFwID0gZmFsc2U7CistICAgIGJvb2wgdW5tYXAgPSBmYWxzZTsKKy0K Ky0gICAgUVZlY3RvcjxUYXNrPiB0YXNrczsKKy0gICAgZm9yIChhdXRvIHRhc2tJdCA9IG1fZGVm ZXJyZWRUYXNrcy5yYmVnaW4oKTsgdGFza0l0ICE9IG1fZGVmZXJyZWRUYXNrcy5yZW5kKCk7ICsr dGFza0l0KSB7CistICAgICAgICBpZiAoIXRhc2tzLmNvbnRhaW5zKCp0YXNrSXQpKQorLSAgICAg ICAgICAgIHRhc2tzLnByZXBlbmQoKnRhc2tJdCk7CistICAgIH0KKy0KKy0gICAgZm9yIChUYXNr IHRhc2sgOiB0YXNrcykgeworLSAgICAgICAgc3dpdGNoICh0YXNrKSB7CistICAgICAgICBjYXNl IFRhc2s6Ok1hcDoKKy0gICAgICAgICAgICBtYXAgPSB0cnVlOworLSAgICAgICAgICAgIHVubWFw ID0gZmFsc2U7CistICAgICAgICAgICAgYnJlYWs7CistICAgICAgICBjYXNlIFRhc2s6OlVubWFw OgorLSAgICAgICAgICAgIHVubWFwID0gdHJ1ZTsKKy0gICAgICAgICAgICBtYXAgPSBmYWxzZTsK Ky0gICAgICAgICAgICBicmVhazsKKy0gICAgICAgIGNhc2UgVGFzazo6U2V0R2VvbWV0cnk6Cist ICAgICAgICAgICAgc2V0R2VvbWV0cnkobV9kZWZlcnJlZEdlb21ldHJ5KTsKKy0gICAgICAgICAg ICBicmVhazsKKy0gICAgICAgIGNhc2UgVGFzazo6U2V0V2luZG93RmxhZ3M6CistICAgICAgICAg ICAgc2V0V2luZG93RmxhZ3Mod2luZG93KCktPmZsYWdzKCkpOworLSAgICAgICAgICAgIGJyZWFr OworLSAgICAgICAgY2FzZSBUYXNrOjpTZXRXaW5kb3dTdGF0ZToKKy0gICAgICAgICAgICBzZXRX aW5kb3dTdGF0ZSh3aW5kb3coKS0+d2luZG93U3RhdGUoKSk7CistICAgICAgICAgICAgYnJlYWs7 CistICAgICAgICB9CistICAgIH0KKy0gICAgbV9kZWZlcnJlZFRhc2tzLmNsZWFyKCk7CistCist ICAgIGlmIChtYXApIHsKKy0gICAgICAgIFFfQVNTRVJUKHVubWFwID09IGZhbHNlKTsKKy0gICAg ICAgIHNob3coKTsKKy0gICAgfQorLSAgICBpZiAodW5tYXApIHsKKy0gICAgICAgIFFfQVNTRVJU KG1hcCA9PSBmYWxzZSk7CistICAgICAgICBoaWRlKCk7CistICAgIH0KKy19CistCisgdm9pZCBR WGNiV2luZG93OjpoYW5kbGVQcm9wZXJ0eU5vdGlmeUV2ZW50KGNvbnN0IHhjYl9wcm9wZXJ0eV9u b3RpZnlfZXZlbnRfdCAqZXZlbnQpCisgeworICAgICBjb25uZWN0aW9uKCktPnNldFRpbWUoZXZl bnQtPnRpbWUpOworIAorLSAgICBjb25zdCBib29sIHdtU3RhdGVDaGFuZ2VkID0gZXZlbnQtPmF0 b20gPT0gYXRvbShRWGNiQXRvbTo6V01fU1RBVEUpOworLSAgICBjb25zdCBib29sIG5ldFdtU3Rh dGVDaGFuZ2VkID0gZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6X05FVF9XTV9TVEFURSk7 CistICAgIGlmIChuZXRXbVN0YXRlQ2hhbmdlZCB8fCB3bVN0YXRlQ2hhbmdlZCkgeworLSAgICAg ICAgaWYgKHdtU3RhdGVDaGFuZ2VkICYmICFtX3dtU3RhdGVWYWxpZCAmJiBtX2lzV21NYW5hZ2Vk V2luZG93KSB7CistICAgICAgICAgICAgLy8gSUNDQ00gNC4xLjQKKy0gICAgICAgICAgICAvLyBD bGllbnRzIHRoYXQgd2FudCB0byByZS11c2UgYSBjbGllbnQgd2luZG93IChlLmcuIGJ5IG1hcHBp bmcgaXQgYWdhaW4pCistICAgICAgICAgICAgLy8gYWZ0ZXIgd2l0aGRyYXdpbmcgaXQgbXVzdCB3 YWl0IGZvciB0aGUgd2l0aGRyYXdhbCB0byBiZSBjb21wbGV0ZSBiZWZvcmUKKy0gICAgICAgICAg ICAvLyBwcm9jZWVkaW5nLiBUaGUgcHJlZmVycmVkIG1ldGhvZCBmb3IgZG9pbmcgdGhpcyBpcyBm b3IgY2xpZW50cyB0byB3YWl0IGZvcgorLSAgICAgICAgICAgIC8vIGEgd2luZG93IG1hbmFnZXIg dG8gdXBkYXRlIG9yIHJlbW92ZSB0aGUgV01fU1RBVEUgcHJvcGVydHkuCistICAgICAgICAgICAg bV93bVN0YXRlVmFsaWQgPSB0cnVlOworLSAgICAgICAgICAgIGhhbmRsZURlZmVycmVkVGFza3Mo KTsKKy0gICAgICAgIH0KKy0gICAgICAgIGlmIChldmVudC0+c3RhdGUgPT0gWENCX1BST1BFUlRZ X0RFTEVURSkKKysgICAgY29uc3QgYm9vbCBwcm9wZXJ0eURlbGV0ZWQgPSBldmVudC0+c3RhdGUg PT0gWENCX1BST1BFUlRZX0RFTEVURTsKKysKKysgICAgaWYgKGV2ZW50LT5hdG9tID09IGF0b20o UVhjYkF0b206Ol9ORVRfV01fU1RBVEUpIHx8IGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206 OldNX1NUQVRFKSkgeworKyAgICAgICAgaWYgKHByb3BlcnR5RGVsZXRlZCkKKyAgICAgICAgICAg ICByZXR1cm47CisgCistICAgICAgICBpZiAod21TdGF0ZUNoYW5nZWQpIHsKKysgICAgICAgIFF0 OjpXaW5kb3dTdGF0ZXMgbmV3U3RhdGUgPSBRdDo6V2luZG93Tm9TdGF0ZTsKKysKKysgICAgICAg IGlmIChldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSkpIHsgLy8gV01fU1RB VEU6IFF1aWNrIGNoZWNrIGZvciAnTWluaW1pemUnLgorICAgICAgICAgICAgIGF1dG8gcmVwbHkg PSBRX1hDQl9SRVBMWSh4Y2JfZ2V0X3Byb3BlcnR5LCB4Y2JfY29ubmVjdGlvbigpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBtX3dpbmRvdywgYXRvbShRWGNiQXRv bTo6V01fU1RBVEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYQ0Jf QVRPTV9BTlksIDAsIDEwMjQpOworICAgICAgICAgICAgIGlmIChyZXBseSAmJiByZXBseS0+Zm9y bWF0ID09IDMyICYmIHJlcGx5LT50eXBlID09IGF0b20oUVhjYkF0b206OldNX1NUQVRFKSkgewor LSAgICAgICAgICAgICAgICBhdXRvIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBxdWludDMyICo+ KHhjYl9nZXRfcHJvcGVydHlfdmFsdWUocmVwbHkuZ2V0KCkpKTsKKy0gICAgICAgICAgICAgICAg aWYgKHJlcGx5LT5sZW5ndGggIT0gMCkgeworLSAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9v bCBjaGFuZ2VkVG9XaXRoZHJhd24gPSBkYXRhWzBdID09IFhDQl9JQ0NDTV9XTV9TVEFURV9XSVRI RFJBV047CistICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIGNoYW5nZWRUb0ljb25pYyA9 IGRhdGFbMF0gPT0gWENCX0lDQ0NNX1dNX1NUQVRFX0lDT05JQzsKKy0gICAgICAgICAgICAgICAg ICAgIG1fbWluaW1pemVkID0gY2hhbmdlZFRvSWNvbmljIHx8IChjaGFuZ2VkVG9XaXRoZHJhd24g JiYgbV9taW5pbWl6ZWQpOworLSAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGNv bnN0IHF1aW50MzIgKmRhdGEgPSAoY29uc3QgcXVpbnQzMiAqKXhjYl9nZXRfcHJvcGVydHlfdmFs dWUocmVwbHkuZ2V0KCkpOworKyAgICAgICAgICAgICAgICBpZiAocmVwbHktPmxlbmd0aCAhPSAw KQorKyAgICAgICAgICAgICAgICAgICAgbV9taW5pbWl6ZWQgPSAoZGF0YVswXSA9PSBYQ0JfSUND Q01fV01fU1RBVEVfSUNPTklDCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 fCAoZGF0YVswXSA9PSBYQ0JfSUNDQ01fV01fU1RBVEVfV0lUSERSQVdOICYmIG1fbWluaW1pemVk KSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorIAorLSAgICAgICAgLy8gX05FVF9XTV9T VEFURSBoYW5kbGluZworLSAgICAgICAgUXQ6OldpbmRvd1N0YXRlcyBuZXdTdGF0ZSA9IFF0OjpX aW5kb3dOb1N0YXRlOworICAgICAgICAgY29uc3QgTmV0V21TdGF0ZXMgc3RhdGVzID0gbmV0V21T dGF0ZXMoKTsKKyAgICAgICAgIC8vIF9ORVRfV01fU1RBVEVfSElEREVOIHNob3VsZCBiZSBzZXQg YnkgdGhlIFdpbmRvdyBNYW5hZ2VyIHRvIGluZGljYXRlIHRoYXQgYSB3aW5kb3cgd291bGQKKyAg ICAgICAgIC8vIG5vdCBiZSB2aXNpYmxlIG9uIHRoZSBzY3JlZW4gaWYgaXRzIGRlc2t0b3Avdmll d3BvcnQgd2VyZSBhY3RpdmUgYW5kIGl0cyBjb29yZGluYXRlcyB3ZXJlCitAQCAtMjMyNSw2ICsy MjM5LDcgQEAgdm9pZCBRWGNiV2luZG93OjpoYW5kbGVQcm9wZXJ0eU5vdGlmeUV2ZW50KGNvbnN0 IHhjYl9wcm9wZXJ0eV9ub3RpZnlfZXZlbnRfdCAqZXYKKyAgICAgICAgICAgICBpZiAoKG1fd2lu ZG93U3RhdGUgJiBRdDo6V2luZG93TWluaW1pemVkKSAmJiBjb25uZWN0aW9uKCktPm1vdXNlR3Jh YmJlcigpID09IHRoaXMpCisgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24oKS0+c2V0TW91c2VH cmFiYmVyKG51bGxwdHIpOworICAgICAgICAgfQorKyAgICAgICAgcmV0dXJuOworICAgICB9IGVs c2UgaWYgKGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206Ol9ORVRfRlJBTUVfRVhURU5UUykp IHsKKyAgICAgICAgIG1fZGlydHlGcmFtZU1hcmdpbnMgPSB0cnVlOworICAgICB9CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5oIGIvcXRi YXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5oCitpbmRleCA1NWFmOTI3 OWIxLi42ZjVjMWY1ZWQ5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt cy94Y2IvcXhjYndpbmRvdy5oCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hj Yi9xeGNid2luZG93LmgKK0BAIC03NCwxNCArNzQsNiBAQCBwdWJsaWM6CisgCisgICAgIFFfREVD TEFSRV9GTEFHUyhOZXRXbVN0YXRlcywgTmV0V21TdGF0ZSkKKyAKKy0gICAgZW51bSBUYXNrIHsK Ky0gICAgICAgIE1hcCwKKy0gICAgICAgIFVubWFwLAorLSAgICAgICAgU2V0R2VvbWV0cnksCist ICAgICAgICBTZXRXaW5kb3dGbGFncywKKy0gICAgICAgIFNldFdpbmRvd1N0YXRlCistICAgIH07 CistCisgICAgIFFYY2JXaW5kb3coUVdpbmRvdyAqd2luZG93KTsKKyAgICAgflFYY2JXaW5kb3co KTsKKyAKK0BAIC0xNTEsOSArMTQzLDYgQEAgcHVibGljOgorIAorICAgICBRWGNiV2luZG93ICp0 b1dpbmRvdygpIG92ZXJyaWRlOworIAorLSAgICBib29sIHNob3VsZERlZmVyVGFzayhUYXNrIHRh c2spOworLSAgICB2b2lkIGhhbmRsZURlZmVycmVkVGFza3MoKTsKKy0KKyAgICAgdm9pZCBoYW5k bGVNb3VzZUV2ZW50KHhjYl90aW1lc3RhbXBfdCB0aW1lLCBjb25zdCBRUG9pbnQgJmxvY2FsLCBj b25zdCBRUG9pbnQgJmdsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0OjpLZXli b2FyZE1vZGlmaWVycyBtb2RpZmllcnMsIFFFdmVudDo6VHlwZSB0eXBlLCBRdDo6TW91c2VFdmVu dFNvdXJjZSBzb3VyY2UpOworIAorQEAgLTI5MiwxMSArMjgxLDYgQEAgcHJvdGVjdGVkOgorICAg ICBpbnQgbV9zd2FwSW50ZXJ2YWwgPSAtMTsKKyAKKyAgICAgcXJlYWwgbV9zaXplSGludHNTY2Fs ZUZhY3RvciA9IDEuMDsKKy0KKy0gICAgYm9vbCBtX3dtU3RhdGVWYWxpZCA9IHRydWU7CistICAg IFFWZWN0b3I8VGFzaz4gbV9kZWZlcnJlZFRhc2tzOworLSAgICBib29sIG1faXNXbU1hbmFnZWRX aW5kb3cgPSB0cnVlOworLSAgICBRUmVjdCBtX2RlZmVycmVkR2VvbWV0cnk7CisgfTsKKyAKKyBj bGFzcyBRWGNiRm9yZWlnbldpbmRvdyA6IHB1YmxpYyBRWGNiV2luZG93CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL2d0azMvcWd0azNtZW51LmNwcCBiL3F0 YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy9ndGszL3FndGszbWVudS5jcHAKK2luZGV4 IGQ5ZDExN2ZhZWIuLjY0MGI0OWRhYTAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm10aGVtZXMvZ3RrMy9xZ3RrM21lbnUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm10aGVtZXMvZ3RrMy9xZ3RrM21lbnUuY3BwCitAQCAtODUsNiArODUsNyBAQCBR R3RrM01lbnVJdGVtOjpRR3RrM01lbnVJdGVtKCkKKyAgICAgICBtX2NoZWNrYWJsZShmYWxzZSks CisgICAgICAgbV9jaGVja2VkKGZhbHNlKSwKKyAgICAgICBtX2VuYWJsZWQodHJ1ZSksCisrICAg ICAgbV9leGNsdXNpdmUoZmFsc2UpLAorICAgICAgIG1fdW5kZXJsaW5lKGZhbHNlKSwKKyAgICAg ICBtX2ludmFsaWQodHJ1ZSksCisgICAgICAgbV9tZW51KG51bGxwdHIpLAorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdk ZXNrdG9wcG9ydGFsZmlsZWRpYWxvZy5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10 aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2cuY3BwCitp bmRleCAwMDQ4YmJjMWU2Li4zOTZlN2Y2ZDFjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVn aW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxl ZGlhbG9nLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rl c2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nLmNwcAorQEAgLTEwMiwxNSAr MTAyLDEyIEBAIGNvbnN0IFFEQnVzQXJndW1lbnQgJm9wZXJhdG9yID4+KGNvbnN0IFFEQnVzQXJn dW1lbnQgJmFyZywgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlCisgY2xhc3MgUVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nUHJpdmF0ZQorIHsKKyBwdWJsaWM6CistICAgIFFYZGdEZXNrdG9wUG9ydGFs RmlsZURpYWxvZ1ByaXZhdGUoUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURp YWxvZykKKysgICAgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZShRUGxhdGZvcm1G aWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9nLCB1aW50IGZpbGVDaG9vc2VyUG9ydGFs VmVyc2lvbikKKyAgICAgICAgIDogbmF0aXZlRmlsZURpYWxvZyhuYXRpdmVGaWxlRGlhbG9nKQor KyAgICAgICAgLCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24oZmlsZUNob29zZXJQb3J0YWxWZXJz aW9uKQorICAgICB7IH0KKyAKKy0gICAgV0lkIHdpbklkID0gMDsKKy0gICAgYm9vbCBkaXJlY3Rv cnlNb2RlID0gZmFsc2U7CistICAgIGJvb2wgbW9kYWwgPSBmYWxzZTsKKy0gICAgYm9vbCBtdWx0 aXBsZUZpbGVzID0gZmFsc2U7CistICAgIGJvb2wgc2F2ZUZpbGUgPSBmYWxzZTsKKysgICAgUUV2 ZW50TG9vcCBsb29wOworICAgICBRU3RyaW5nIGFjY2VwdExhYmVsOworICAgICBRU3RyaW5nIGRp cmVjdG9yeTsKKyAgICAgUVN0cmluZyB0aXRsZTsKK0BAIC0xMjEsMTkgKzExOCwyNyBAQCBwdWJs aWM6CisgICAgIFFTdHJpbmcgc2VsZWN0ZWRNaW1lVHlwZUZpbHRlcjsKKyAgICAgUVN0cmluZyBz ZWxlY3RlZE5hbWVGaWx0ZXI7CisgICAgIFFTdHJpbmdMaXN0IHNlbGVjdGVkRmlsZXM7CistICAg IFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cgPSBudWxscHRyOwor KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlcj4gbmF0aXZlRmls ZURpYWxvZzsKKysgICAgdWludCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPSAwOworKyAgICBi b29sIGZhaWxlZFRvT3BlbiA9IGZhbHNlOworKyAgICBib29sIGRpcmVjdG9yeU1vZGUgPSBmYWxz ZTsKKysgICAgYm9vbCBtdWx0aXBsZUZpbGVzID0gZmFsc2U7CisrICAgIGJvb2wgc2F2ZUZpbGUg PSBmYWxzZTsKKyB9OworIAorLVFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6UVhkZ0Rlc2t0 b3BQb3J0YWxGaWxlRGlhbG9nKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVE aWFsb2cpCisrUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpRWGRnRGVza3RvcFBvcnRhbEZp bGVEaWFsb2coUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZywgdWlu dCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pCisgICAgIDogUVBsYXRmb3JtRmlsZURpYWxvZ0hl bHBlcigpCistICAgICwgZF9wdHIobmV3IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZh dGUobmF0aXZlRmlsZURpYWxvZykpCisrICAgICwgZF9wdHIobmV3IFFYZGdEZXNrdG9wUG9ydGFs RmlsZURpYWxvZ1ByaXZhdGUobmF0aXZlRmlsZURpYWxvZywgZmlsZUNob29zZXJQb3J0YWxWZXJz aW9uKSkKKyB7CisgICAgIFFfRChRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworIAorICAg ICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZykgeworLSAgICAgICAgY29ubmVjdChkLT5uYXRpdmVG aWxlRGlhbG9nLCBTSUdOQUwoYWNjZXB0KCkpLCB0aGlzLCBTSUdOQUwoYWNjZXB0KCkpKTsKKy0g ICAgICAgIGNvbm5lY3QoZC0+bmF0aXZlRmlsZURpYWxvZywgU0lHTkFMKHJlamVjdCgpKSwgdGhp cywgU0lHTkFMKHJlamVjdCgpKSk7CisrICAgICAgICBjb25uZWN0KGQtPm5hdGl2ZUZpbGVEaWFs b2cuZ2V0KCksIFNJR05BTChhY2NlcHQoKSksIHRoaXMsIFNJR05BTChhY2NlcHQoKSkpOworKyAg ICAgICAgY29ubmVjdChkLT5uYXRpdmVGaWxlRGlhbG9nLmdldCgpLCBTSUdOQUwocmVqZWN0KCkp LCB0aGlzLCBTSUdOQUwocmVqZWN0KCkpKTsKKyAgICAgfQorKworKyAgICBkLT5sb29wLmNvbm5l Y3QodGhpcywgU0lHTkFMKGFjY2VwdCgpKSwgU0xPVChxdWl0KCkpKTsKKysgICAgZC0+bG9vcC5j b25uZWN0KHRoaXMsIFNJR05BTChyZWplY3QoKSksIFNMT1QocXVpdCgpKSk7CisgfQorIAorIFFY ZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6flFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZygp CitAQCAtMTc3LDcgKzE4Miw3IEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpp bml0aWFsaXplRGlhbG9nKCkKKyAgICAgc2V0RGlyZWN0b3J5KG9wdGlvbnMoKS0+aW5pdGlhbERp cmVjdG9yeSgpKTsKKyB9CisgCistdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6Om9w ZW5Qb3J0YWwoKQorK3ZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFs KFF0OjpXaW5kb3dGbGFncyB3aW5kb3dGbGFncywgUXQ6OldpbmRvd01vZGFsaXR5IHdpbmRvd01v ZGFsaXR5LCBRV2luZG93ICpwYXJlbnQpCisgeworICAgICBRX0QoUVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nKTsKKyAKK0BAIC0xODUsMTMgKzE5MCwxMyBAQCB2b2lkIFFYZGdEZXNrdG9wUG9y dGFsRmlsZURpYWxvZzo6b3BlblBvcnRhbCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIi9vcmcvZnJlZWRl c2t0b3AvcG9ydGFsL2Rlc2t0b3AiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygib3JnLmZyZWVkZXNrdG9w LnBvcnRhbC5GaWxlQ2hvb3NlciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5zYXZlRmlsZSA/IFFMYXRpbjFTdHJpbmcoIlNh dmVGaWxlIikgOiBRTGF0aW4xU3RyaW5nKCJPcGVuRmlsZSIpKTsKKy0gICAgUVN0cmluZyBwYXJl bnRXaW5kb3dJZCA9IFFMYXRpbjFTdHJpbmcoIngxMToiKSArIFFTdHJpbmc6Om51bWJlcihkLT53 aW5JZCwgMTYpOworKyAgICBRU3RyaW5nIHBhcmVudFdpbmRvd0lkID0gUUxhdGluMVN0cmluZygi eDExOiIpICsgUVN0cmluZzo6bnVtYmVyKHBhcmVudCA/IHBhcmVudC0+d2luSWQoKSA6IDAsIDE2 KTsKKyAKKyAgICAgUVZhcmlhbnRNYXAgb3B0aW9uczsKKyAgICAgaWYgKCFkLT5hY2NlcHRMYWJl bC5pc0VtcHR5KCkpCisgICAgICAgICBvcHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJhY2Nl cHRfbGFiZWwiKSwgZC0+YWNjZXB0TGFiZWwpOworIAorLSAgICBvcHRpb25zLmluc2VydChRTGF0 aW4xU3RyaW5nKCJtb2RhbCIpLCBkLT5tb2RhbCk7CisrICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRp bjFTdHJpbmcoIm1vZGFsIiksIHdpbmRvd01vZGFsaXR5ICE9IFF0OjpOb25Nb2RhbCk7CisgICAg IG9wdGlvbnMuaW5zZXJ0KFFMYXRpbjFTdHJpbmcoIm11bHRpcGxlIiksIGQtPm11bHRpcGxlRmls ZXMpOworICAgICBvcHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJkaXJlY3RvcnkiKSwgZC0+ ZGlyZWN0b3J5TW9kZSk7CisgCitAQCAtMjkwLDEwICsyOTUsMTggQEAgdm9pZCBRWGRnRGVza3Rv cFBvcnRhbEZpbGVEaWFsb2c6Om9wZW5Qb3J0YWwoKQorIAorICAgICBRREJ1c1BlbmRpbmdDYWxs IHBlbmRpbmdDYWxsID0gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuYXN5bmNDYWxsKG1l c3NhZ2UpOworICAgICBRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hlciA9IG5ldyBRREJ1 c1BlbmRpbmdDYWxsV2F0Y2hlcihwZW5kaW5nQ2FsbCk7CistICAgIGNvbm5lY3Qod2F0Y2hlciwg JlFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyOjpmaW5pc2hlZCwgdGhpcywgW3RoaXNdIChRREJ1c1Bl bmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hlcikgeworKyAgICBjb25uZWN0KHdhdGNoZXIsICZRREJ1 c1BlbmRpbmdDYWxsV2F0Y2hlcjo6ZmluaXNoZWQsIHRoaXMsIFs9XSAoUURCdXNQZW5kaW5nQ2Fs bFdhdGNoZXIgKndhdGNoZXIpIHsKKyAgICAgICAgIFFEQnVzUGVuZGluZ1JlcGx5PFFEQnVzT2Jq ZWN0UGF0aD4gcmVwbHkgPSAqd2F0Y2hlcjsKKy0gICAgICAgIGlmIChyZXBseS5pc0Vycm9yKCkp IHsKKy0gICAgICAgICAgICBRX0VNSVQgcmVqZWN0KCk7CisrICAgICAgICAvLyBBbnkgZXJyb3Ig bWVhbnMgdGhlIGRpYWxvZyBpcyBub3Qgc2hvd24gYW5kIHdlIG5lZWQgdG8gZmFsbGJhY2sKKysg ICAgICAgIGQtPmZhaWxlZFRvT3BlbiA9IHJlcGx5LmlzRXJyb3IoKTsKKysgICAgICAgIGlmIChk LT5mYWlsZWRUb09wZW4pIHsKKysgICAgICAgICAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZykg eworKyAgICAgICAgICAgICAgICBkLT5uYXRpdmVGaWxlRGlhbG9nLT5zaG93KHdpbmRvd0ZsYWdz LCB3aW5kb3dNb2RhbGl0eSwgcGFyZW50KTsKKysgICAgICAgICAgICAgICAgaWYgKGQtPmxvb3Au aXNSdW5uaW5nKCkpCisrICAgICAgICAgICAgICAgICAgICBkLT5uYXRpdmVGaWxlRGlhbG9nLT5l eGVjKCk7CisrICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgUV9FTUlUIHJl amVjdCgpOworKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg UURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuY29ubmVjdChudWxscHRyLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHkudmFsdWUoKS5w YXRoKCksCitAQCAtMzAyLDYgKzMxNSw3IEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlh bG9nOjpvcGVuUG9ydGFsKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTTE9UKGdvdFJlc3BvbnNlKHVpbnQsUVZhcmlhbnRNYXApKSk7CisgICAg ICAgICB9CisrICAgICAgICB3YXRjaGVyLT5kZWxldGVMYXRlcigpOworICAgICB9KTsKKyB9Cisg CitAQCAtMzI2LDcgKzM0MCw3IEBAIFFVcmwgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpk aXJlY3RvcnkoKSBjb25zdAorIHsKKyAgICAgUV9EKGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFsRmls ZURpYWxvZyk7CisgCistICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIChvcHRpb25zKCkt PmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnkgfHwgb3B0aW9ucygp LT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5T25seSkpCisrICAg IGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIHVzZU5hdGl2ZUZpbGVEaWFsb2coKSkKKyAgICAg ICAgIHJldHVybiBkLT5uYXRpdmVGaWxlRGlhbG9nLT5kaXJlY3RvcnkoKTsKKyAKKyAgICAgcmV0 dXJuIGQtPmRpcmVjdG9yeTsKK0BAIC0zNDgsNyArMzYyLDcgQEAgUUxpc3Q8UVVybD4gUVhkZ0Rl c2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpzZWxlY3RlZEZpbGVzKCkgY29uc3QKKyB7CisgICAgIFFf RChjb25zdCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworIAorLSAgICBpZiAoZC0+bmF0 aXZlRmlsZURpYWxvZyAmJiAob3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0 aW9uczo6RGlyZWN0b3J5IHx8IG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09w dGlvbnM6OkRpcmVjdG9yeU9ubHkpKQorKyAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1 c2VOYXRpdmVGaWxlRGlhbG9nKCkpCisgICAgICAgICByZXR1cm4gZC0+bmF0aXZlRmlsZURpYWxv Zy0+c2VsZWN0ZWRGaWxlcygpOworIAorICAgICBRTGlzdDxRVXJsPiBmaWxlczsKK0BAIC00MDMs MTYgKzQxNywxMyBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6ZXhlYygpCisg eworICAgICBRX0QoUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKKy0gICAgaWYgKGQt Pm5hdGl2ZUZpbGVEaWFsb2cgJiYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxv Z09wdGlvbnM6OkRpcmVjdG9yeSB8fCBvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFs b2dPcHRpb25zOjpEaXJlY3RvcnlPbmx5KSkgeworKyAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxv ZyAmJiB1c2VOYXRpdmVGaWxlRGlhbG9nKCkpIHsKKyAgICAgICAgIGQtPm5hdGl2ZUZpbGVEaWFs b2ctPmV4ZWMoKTsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorICAgICAvLyBIQUNLIHdl IGhhdmUgdG8gYXZvaWQgcmV0dXJuaW5nIHVudGlsIHdlIGVtaXQgdGhhdCB0aGUgZGlhbG9nIHdh cyBhY2NlcHRlZCBvciByZWplY3RlZAorLSAgICBRRXZlbnRMb29wIGxvb3A7CistICAgIGxvb3Au Y29ubmVjdCh0aGlzLCBTSUdOQUwoYWNjZXB0KCkpLCBTTE9UKHF1aXQoKSkpOworLSAgICBsb29w LmNvbm5lY3QodGhpcywgU0lHTkFMKHJlamVjdCgpKSwgU0xPVChxdWl0KCkpKTsKKy0gICAgbG9v cC5leGVjKCk7CisrICAgIGQtPmxvb3AuZXhlYygpOworIH0KKyAKKyB2b2lkIFFYZGdEZXNrdG9w UG9ydGFsRmlsZURpYWxvZzo6aGlkZSgpCitAQCAtNDI5LDEzICs0NDAsMTAgQEAgYm9vbCBRWGRn RGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OnNob3coUXQ6OldpbmRvd0ZsYWdzIHdpbmRvd0ZsYWdz LCBRdDo6V2luZG93TW8KKyAKKyAgICAgaW5pdGlhbGl6ZURpYWxvZygpOworIAorLSAgICBkLT5t b2RhbCA9IHdpbmRvd01vZGFsaXR5ICE9IFF0OjpOb25Nb2RhbDsKKy0gICAgZC0+d2luSWQgPSBw YXJlbnQgPyBwYXJlbnQtPndpbklkKCkgOiAwOworLQorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURp YWxvZyAmJiAob3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGly ZWN0b3J5IHx8IG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRp cmVjdG9yeU9ubHkpKQorKyAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVG aWxlRGlhbG9nKE9wZW5GYWxsYmFjaykpCisgICAgICAgICByZXR1cm4gZC0+bmF0aXZlRmlsZURp YWxvZy0+c2hvdyh3aW5kb3dGbGFncywgd2luZG93TW9kYWxpdHksIHBhcmVudCk7CisgCistICAg IG9wZW5Qb3J0YWwoKTsKKysgICAgb3BlblBvcnRhbCh3aW5kb3dGbGFncywgd2luZG93TW9kYWxp dHksIHBhcmVudCk7CisgCisgICAgIHJldHVybiB0cnVlOworIH0KK0BAIC00NjUsNCArNDczLDIx IEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpnb3RSZXNwb25zZSh1aW50IHJl c3BvbnNlLCBjb25zdCBRVmFyaWFudE1hcCAmCisgICAgIH0KKyB9CisgCisrYm9vbCBRWGRnRGVz a3RvcFBvcnRhbEZpbGVEaWFsb2c6OnVzZU5hdGl2ZUZpbGVEaWFsb2coUVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nOjpGYWxsYmFja1R5cGUgZmFsbGJhY2tUeXBlKSBjb25zdAorK3sKKysgICAg UV9EKGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7CisrCisrICAgIGlmIChkLT5m YWlsZWRUb09wZW4gJiYgZmFsbGJhY2tUeXBlICE9IE9wZW5GYWxsYmFjaykKKysgICAgICAgIHJl dHVybiB0cnVlOworKworKyAgICBpZiAoZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uIDwgMykg eworKyAgICAgICAgaWYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlv bnM6OkRpcmVjdG9yeSkKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgICAgIGVsc2Ug aWYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9y eU9ubHkpCisrICAgICAgICAgICAgcmV0dXJuIHRydWU7CisrICAgIH0KKysKKysgICAgcmV0dXJu IGZhbHNlOworK30KKysKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0 YWxmaWxlZGlhbG9nX3AuaCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdk ZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZ19wLmgKK2luZGV4IDRmNGRl OTZlY2YuLjY1ZTIyYTVjZjIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2dfcC5o CisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRh bC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2dfcC5oCitAQCAtNTEsNiArNTEsMTEgQEAgY2xh c3MgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nIDogcHVibGljIFFQbGF0Zm9ybUZpbGVEaWFs b2dIZWxwZXIKKyAgICAgUV9PQkpFQ1QKKyAgICAgUV9ERUNMQVJFX1BSSVZBVEUoUVhkZ0Rlc2t0 b3BQb3J0YWxGaWxlRGlhbG9nKQorIHB1YmxpYzoKKysgICAgZW51bSBGYWxsYmFja1R5cGUgewor KyAgICAgICAgR2VuZXJpY0ZhbGxiYWNrLAorKyAgICAgICAgT3BlbkZhbGxiYWNrCisrICAgIH07 CisrCisgICAgIGVudW0gQ29uZGl0aW9uVHlwZSA6IHVpbnQgeworICAgICAgICAgR2xvYmFsUGF0 dGVybiA9IDAsCisgICAgICAgICBNaW1lVHlwZSA9IDEKK0BAIC02OSw3ICs3NCw3IEBAIHB1Ymxp YzoKKyAgICAgfTsKKyAgICAgdHlwZWRlZiBRVmVjdG9yPEZpbHRlcj4gRmlsdGVyTGlzdDsKKyAK Ky0gICAgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxw ZXIgKm5hdGl2ZUZpbGVEaWFsb2cgPSBudWxscHRyKTsKKysgICAgUVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cgPSBu dWxscHRyLCB1aW50IGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbiA9IDApOworICAgICB+UVhkZ0Rl c2t0b3BQb3J0YWxGaWxlRGlhbG9nKCk7CisgCisgICAgIGJvb2wgZGVmYXVsdE5hbWVGaWx0ZXJE aXNhYmxlcygpIGNvbnN0IG92ZXJyaWRlOworQEAgLTkyLDcgKzk3LDggQEAgcHJpdmF0ZSBRX1NM T1RTOgorIAorIHByaXZhdGU6CisgICAgIHZvaWQgaW5pdGlhbGl6ZURpYWxvZygpOworLSAgICB2 b2lkIG9wZW5Qb3J0YWwoKTsKKysgICAgdm9pZCBvcGVuUG9ydGFsKFF0OjpXaW5kb3dGbGFncyB3 aW5kb3dGbGFncywgUXQ6OldpbmRvd01vZGFsaXR5IHdpbmRvd01vZGFsaXR5LCBRV2luZG93ICpw YXJlbnQpOworKyAgICBib29sIHVzZU5hdGl2ZUZpbGVEaWFsb2coRmFsbGJhY2tUeXBlIGZhbGxi YWNrVHlwZSA9IEdlbmVyaWNGYWxsYmFjaykgY29uc3Q7CisgCisgICAgIFFTY29wZWRQb2ludGVy PFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGU+IGRfcHRyOworIH07CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwv cXhkZ2Rlc2t0b3Bwb3J0YWx0aGVtZS5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10 aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbHRoZW1lLmNwcAoraW5kZXgg ZmIzMjRhZmJkOC4uYjgwOTUwMzEyMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsdGhlbWUuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRh bC9xeGRnZGVza3RvcHBvcnRhbHRoZW1lLmNwcAorQEAgLTExMSw2ICsxMTEsNyBAQCBRWGRnRGVz a3RvcFBvcnRhbFRoZW1lOjpRWGRnRGVza3RvcFBvcnRhbFRoZW1lKCkKKyAgICAgICAgIGlmIChy ZXBseS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICBkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNp b24gPSByZXBseS52YWx1ZSgpLnRvVUludCgpOworICAgICAgICAgfQorKyAgICAgICAgd2F0Y2hl ci0+ZGVsZXRlTGF0ZXIoKTsKKyAgICAgfSk7CisgfQorIAorQEAgLTE1MiwxMSArMTUzLDEyIEBA IFFQbGF0Zm9ybURpYWxvZ0hlbHBlciogUVhkZ0Rlc2t0b3BQb3J0YWxUaGVtZTo6Y3JlYXRlUGxh dGZvcm1EaWFsb2dIZWxwZXIoRGlhbG9nCisgeworICAgICBRX0QoY29uc3QgUVhkZ0Rlc2t0b3BQ b3J0YWxUaGVtZSk7CisgCistICAgIGlmICh0eXBlID09IEZpbGVEaWFsb2cpIHsKKysgICAgaWYg KHR5cGUgPT0gRmlsZURpYWxvZyAmJiBkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pIHsKKyAg ICAgICAgIC8vIE9sZGVyIHZlcnNpb25zIG9mIEZpbGVDaG9vc2VyIHBvcnRhbCBkb24ndCBzdXBw b3J0IG9wZW5pbmcgZGlyZWN0b3JpZXMsIHRoZXJlZm9yZSB3ZSBmYWxsYmFjaworICAgICAgICAg Ly8gdG8gbmF0aXZlIGZpbGUgZGlhbG9nIG9wZW5lZCBpbnNpZGUgdGhlIHNhbmRib3ggdG8gb3Bl biBhIGRpcmVjdG9yeS4KKy0gICAgICAgIGlmIChkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24g PCAzICYmIGQtPmJhc2VUaGVtZS0+dXNlUGxhdGZvcm1OYXRpdmVEaWFsb2codHlwZSkpCistICAg ICAgICAgICAgcmV0dXJuIG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coc3RhdGljX2Nh c3Q8UVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlcio+KGQtPmJhc2VUaGVtZS0+Y3JlYXRlUGxhdGZv cm1EaWFsb2dIZWxwZXIodHlwZSkpKTsKKysgICAgICAgIGlmIChkLT5iYXNlVGhlbWUtPnVzZVBs YXRmb3JtTmF0aXZlRGlhbG9nKHR5cGUpKQorKyAgICAgICAgICAgIHJldHVybiBuZXcgUVhkZ0Rl c2t0b3BQb3J0YWxGaWxlRGlhbG9nKHN0YXRpY19jYXN0PFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxw ZXIqPihkLT5iYXNlVGhlbWUtPmNyZWF0ZVBsYXRmb3JtRGlhbG9nSGVscGVyKHR5cGUpKSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5maWxl Q2hvb3NlclBvcnRhbFZlcnNpb24pOworIAorICAgICAgICAgcmV0dXJuIG5ldyBRWGRnRGVza3Rv cFBvcnRhbEZpbGVEaWFsb2c7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZS5jcHAgYi9xdGJhc2Uvc3JjL3Bs dWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZS5jcHAKK2luZGV4IDQzZDVl MTE5YWQuLjFmOWNiYzQ1NjUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRz dXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lu cy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lLmNwcAorQEAgLTg5LDggKzg5LDEw IEBAIHZvaWQgUUN1cHNQcmludEVuZ2luZTo6c2V0UHJvcGVydHkoUHJpbnRFbmdpbmVQcm9wZXJ0 eUtleSBrZXksIGNvbnN0IFFWYXJpYW50ICZ2CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBQ UEtfRHVwbGV4OiB7CisgICAgICAgICBRUHJpbnQ6OkR1cGxleE1vZGUgbW9kZSA9IFFQcmludDo6 RHVwbGV4TW9kZSh2YWx1ZS50b0ludCgpKTsKKy0gICAgICAgIGlmIChtb2RlICE9IGQtPmR1cGxl eCAmJiBkLT5tX3ByaW50RGV2aWNlLnN1cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMobW9k ZSkpCisrICAgICAgICBpZiAoZC0+bV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhNb2Rlcygp LmNvbnRhaW5zKG1vZGUpKSB7CisgICAgICAgICAgICAgZC0+ZHVwbGV4ID0gbW9kZTsKKysgICAg ICAgICAgICBkLT5kdXBsZXhSZXF1ZXN0ZWRFeHBsaWNpdGx5ID0gdHJ1ZTsKKysgICAgICAgIH0K KyAgICAgICAgIGJyZWFrOworICAgICB9CisgICAgIGNhc2UgUFBLX1ByaW50ZXJOYW1lOgorQEAg LTI3Nyw5ICsyNzksMTIgQEAgdm9pZCBRQ3Vwc1ByaW50RW5naW5lUHJpdmF0ZTo6Y2hhbmdlUHJp bnRlcihjb25zdCBRU3RyaW5nICZuZXdQcmludGVyKQorICAgICBtX3ByaW50RGV2aWNlLnN3YXAo cHJpbnREZXZpY2UpOworICAgICBwcmludGVyTmFtZSA9IG1fcHJpbnREZXZpY2UuaWQoKTsKKyAK Ky0gICAgLy8gQ2hlY2sgaWYgbmV3IHByaW50ZXIgc3VwcG9ydHMgY3VycmVudCBzZXR0aW5ncywg b3RoZXJ3aXNlIHVzIGRlZmF1bHRzCistICAgIGlmIChkdXBsZXggIT0gUVByaW50OjpEdXBsZXhB dXRvICYmICFtX3ByaW50RGV2aWNlLnN1cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMoZHVw bGV4KSkKKysgICAgLy8gaW4gY2FzZSBhIGR1cGxleCB2YWx1ZSB3YXMgZXhwbGljaXRseSBzZXQs IGNoZWNrIGlmIG5ldyBwcmludGVyIHN1cHBvcnRzIGN1cnJlbnQgdmFsdWUsCisrICAgIC8vIG90 aGVyd2lzZSB1c2UgZGV2aWNlIGRlZmF1bHQKKysgICAgaWYgKCFkdXBsZXhSZXF1ZXN0ZWRFeHBs aWNpdGx5IHx8ICFtX3ByaW50RGV2aWNlLnN1cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMo ZHVwbGV4KSkgeworICAgICAgICAgZHVwbGV4ID0gbV9wcmludERldmljZS5kZWZhdWx0RHVwbGV4 TW9kZSgpOworKyAgICAgICAgZHVwbGV4UmVxdWVzdGVkRXhwbGljaXRseSA9IGZhbHNlOworKyAg ICB9CisgICAgIFFQcmludDo6Q29sb3JNb2RlIGNvbG9yTW9kZSA9IGdyYXlzY2FsZSA/IFFQcmlu dDo6R3JheVNjYWxlIDogUVByaW50OjpDb2xvcjsKKyAgICAgaWYgKCFtX3ByaW50RGV2aWNlLnN1 cHBvcnRlZENvbG9yTW9kZXMoKS5jb250YWlucyhjb2xvck1vZGUpKQorICAgICAgICAgZ3JheXNj YWxlID0gbV9wcmludERldmljZS5kZWZhdWx0Q29sb3JNb2RlKCkgPT0gUVByaW50OjpHcmF5U2Nh bGU7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3Fj dXBzcHJpbnRlbmdpbmVfcC5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBz L3FjdXBzcHJpbnRlbmdpbmVfcC5oCitpbmRleCBjMDIxYjBjNjQzLi44ZjgxZmU0NzhkIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRl bmdpbmVfcC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1 cHNwcmludGVuZ2luZV9wLmgKK0BAIC0xMDAsNiArMTAwLDcgQEAgcHJpdmF0ZToKKyAgICAgUVN0 cmluZ0xpc3QgY3Vwc09wdGlvbnM7CisgICAgIFFTdHJpbmcgY3Vwc1RlbXBGaWxlOworICAgICBR UHJpbnQ6OkR1cGxleE1vZGUgZHVwbGV4OworKyAgICBib29sIGR1cGxleFJlcXVlc3RlZEV4cGxp Y2l0bHkgPSBmYWxzZTsKKyB9OworIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9pYmFzZS9xc3FsX2liYXNlLmNwcCBiL3F0YmFz ZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL2liYXNlL3FzcWxfaWJhc2UuY3BwCitpbmRleCA2N2U3 MTU0ZmE2Li40MDg3NjE1MmU1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRy aXZlcnMvaWJhc2UvcXNxbF9pYmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxk cml2ZXJzL2liYXNlL3FzcWxfaWJhc2UuY3BwCitAQCAtODE3LDcgKzgxNyw3IEBAIGJvb2wgUUlC YXNlUmVzdWx0UHJpdmF0ZTo6d3JpdGVBcnJheShpbnQgY29sdW1uLCBjb25zdCBRTGlzdDxRVmFy aWFudD4gJmxpc3QpCisgICAgIGJhLnJlc2l6ZShpbnQoYnVmTGVuKSk7CisgCisgICAgIGlmIChs aXN0LnNpemUoKSA+IGFycmF5U2l6ZSkgeworLSAgICAgICAgZXJyb3IgPSBRTGF0aW4xU3RyaW5n KCJBcnJheSBzaXplIG1pc3NtYXRjaDogc2l6ZSBvZiAlMSBpcyAlMiwgc2l6ZSBvZiBwcm92aWRl ZCBsaXN0IGlzICUzIik7CisrICAgICAgICBlcnJvciA9IFFMYXRpbjFTdHJpbmcoIkFycmF5IHNp emUgbWlzbWF0Y2g6IHNpemUgb2YgJTEgaXMgJTIsIHNpemUgb2YgcHJvdmlkZWQgbGlzdCBpcyAl MyIpOworICAgICAgICAgZXJyb3IgPSBlcnJvci5hcmcoUUxhdGluMVN0cmluZyhzcWxuYW1lKSku YXJnKGFycmF5U2l6ZSkuYXJnKGxpc3Quc2l6ZSgpKTsKKyAgICAgICAgIHEtPnNldExhc3RFcnJv cihRU3FsRXJyb3IoZXJyb3IsIFFMYXRpbjFTdHJpbmcoIiIpLCBRU3FsRXJyb3I6OlN0YXRlbWVu dEVycm9yKSk7CisgICAgICAgICByZXR1cm4gZmFsc2U7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9wbHVnaW5zL3NxbGRyaXZlcnMvbXlzcWwvcXNxbF9teXNxbC5jcHAgYi9xdGJhc2Uvc3JjL3Bs dWdpbnMvc3FsZHJpdmVycy9teXNxbC9xc3FsX215c3FsLmNwcAoraW5kZXggN2NhMDU1ZWVhMi4u NmJjOWQ0Njc1NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL215 c3FsL3FzcWxfbXlzcWwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9t eXNxbC9xc3FsX215c3FsLmNwcAorQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CisgICAgIHN0 cnVjdCBRTXlGaWVsZAorICAgICB7CisgICAgICAgICBjaGFyICpvdXRGaWVsZCA9IG51bGxwdHI7 CistICAgICAgICBNWVNRTF9GSUVMRCAqbXlGaWVsZCA9IG51bGxwdHI7CisrICAgICAgICBjb25z dCBNWVNRTF9GSUVMRCAqbXlGaWVsZCA9IG51bGxwdHI7CisgICAgICAgICBRTWV0YVR5cGU6OlR5 cGUgdHlwZSA9IFFNZXRhVHlwZTo6VW5rbm93blR5cGU7CisgICAgICAgICBteV9ib29sIG51bGxJ bmRpY2F0b3IgPSBmYWxzZTsKKyAgICAgICAgIHVsb25nIGJ1Zkxlbmd0aCA9IDB1bDsKK0BAIC0z NjEsNyArMzYxLDcgQEAgc3RhdGljIGJvb2wgcUlzSW50ZWdlcihpbnQgdCkKKyB2b2lkIFFNWVNR TFJlc3VsdFByaXZhdGU6OmJpbmRCbG9icygpCisgeworICAgICBpbnQgaTsKKy0gICAgTVlTUUxf RklFTEQgKmZpZWxkSW5mbzsKKysgICAgY29uc3QgTVlTUUxfRklFTEQgKmZpZWxkSW5mbzsKKyAg ICAgTVlTUUxfQklORCAqYmluZDsKKyAKKyAgICAgZm9yKGkgPSAwOyBpIDwgZmllbGRzLmNvdW50 KCk7ICsraSkgeworQEAgLTM3OSw3ICszNzksNiBAQCB2b2lkIFFNWVNRTFJlc3VsdFByaXZhdGU6 OmJpbmRCbG9icygpCisgYm9vbCBRTVlTUUxSZXN1bHRQcml2YXRlOjpiaW5kSW5WYWx1ZXMoKQor IHsKKyAgICAgTVlTUUxfQklORCAqYmluZDsKKy0gICAgY2hhciAqZmllbGQ7CisgICAgIGludCBp ID0gMDsKKyAKKyAgICAgaWYgKCFtZXRhKQorQEAgLTM5MiwzNSArMzkxLDM0IEBAIGJvb2wgUU1Z U1FMUmVzdWx0UHJpdmF0ZTo6YmluZEluVmFsdWVzKCkKKyAgICAgaW5CaW5kcyA9IG5ldyBNWVNR TF9CSU5EW2ZpZWxkcy5zaXplKCldOworICAgICBtZW1zZXQoaW5CaW5kcywgMCwgZmllbGRzLnNp emUoKSAqIHNpemVvZihNWVNRTF9CSU5EKSk7CisgCistICAgIE1ZU1FMX0ZJRUxEICpmaWVsZElu Zm87CisrICAgIGNvbnN0IE1ZU1FMX0ZJRUxEICpmaWVsZEluZm87CisgCisgICAgIHdoaWxlKChm aWVsZEluZm8gPSBteXNxbF9mZXRjaF9maWVsZChtZXRhKSkpIHsKKysgICAgICAgIGJpbmQgPSAm aW5CaW5kc1tpXTsKKysKKyAgICAgICAgIFFNeUZpZWxkICZmID0gZmllbGRzW2ldOworICAgICAg ICAgZi5teUZpZWxkID0gZmllbGRJbmZvOworLQorKyAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0 aCA9IGYuYnVmTGVuZ3RoID0gZmllbGRJbmZvLT5sZW5ndGggKyAxOworKyAgICAgICAgYmluZC0+ YnVmZmVyX3R5cGUgPSBmaWVsZEluZm8tPnR5cGU7CisgICAgICAgICBmLnR5cGUgPSBxRGVjb2Rl TVlTUUxUeXBlKGZpZWxkSW5mby0+dHlwZSwgZmllbGRJbmZvLT5mbGFncyk7CisgICAgICAgICBp ZiAocUlzQmxvYihmaWVsZEluZm8tPnR5cGUpKSB7CisgICAgICAgICAgICAgLy8gdGhlIHNpemUg b2YgYSBibG9iLWZpZWxkIGlzIGF2YWlsYWJsZSBhcyBzb29uIGFzIHdlIGNhbGwKKyAgICAgICAg ICAgICAvLyBteXNxbF9zdG10X3N0b3JlX3Jlc3VsdCgpCisgICAgICAgICAgICAgLy8gYWZ0ZXIg bXlzcWxfc3RtdF9leGVjKCkgaW4gUU1ZU1FMUmVzdWx0OjpleGVjKCkKKy0gICAgICAgICAgICBm aWVsZEluZm8tPmxlbmd0aCA9IDA7CisrICAgICAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0aCA9 IGYuYnVmTGVuZ3RoID0gMDsKKyAgICAgICAgICAgICBoYXNCbG9icyA9IHRydWU7CisgICAgICAg ICB9IGVsc2UgaWYgKHFJc0ludGVnZXIoZi50eXBlKSkgeworLSAgICAgICAgICAgIGZpZWxkSW5m by0+bGVuZ3RoID0gODsKKysgICAgICAgICAgICBiaW5kLT5idWZmZXJfbGVuZ3RoID0gZi5idWZM ZW5ndGggPSA4OworICAgICAgICAgfSBlbHNlIHsKKy0gICAgICAgICAgICBmaWVsZEluZm8tPnR5 cGUgPSBNWVNRTF9UWVBFX1NUUklORzsKKysgICAgICAgICAgICBiaW5kLT5idWZmZXJfdHlwZSA9 IE1ZU1FMX1RZUEVfU1RSSU5HOworICAgICAgICAgfQorLSAgICAgICAgYmluZCA9ICZpbkJpbmRz W2ldOworLSAgICAgICAgZmllbGQgPSBuZXcgY2hhcltmaWVsZEluZm8tPmxlbmd0aCArIDFdOwor LSAgICAgICAgbWVtc2V0KGZpZWxkLCAwLCBmaWVsZEluZm8tPmxlbmd0aCArIDEpOworIAorLSAg ICAgICAgYmluZC0+YnVmZmVyX3R5cGUgPSBmaWVsZEluZm8tPnR5cGU7CistICAgICAgICBiaW5k LT5idWZmZXIgPSBmaWVsZDsKKy0gICAgICAgIGJpbmQtPmJ1ZmZlcl9sZW5ndGggPSBmLmJ1Zkxl bmd0aCA9IGZpZWxkSW5mby0+bGVuZ3RoICsgMTsKKyAgICAgICAgIGJpbmQtPmlzX251bGwgPSAm Zi5udWxsSW5kaWNhdG9yOworICAgICAgICAgYmluZC0+bGVuZ3RoID0gJmYuYnVmTGVuZ3RoOwor ICAgICAgICAgYmluZC0+aXNfdW5zaWduZWQgPSBmaWVsZEluZm8tPmZsYWdzICYgVU5TSUdORURf RkxBRyA/IDEgOiAwOworLSAgICAgICAgZi5vdXRGaWVsZD1maWVsZDsKKysKKysgICAgICAgIGNo YXIgKmZpZWxkID0gbmV3IGNoYXJbYmluZC0+YnVmZmVyX2xlbmd0aCArIDFde307CisrICAgICAg ICBiaW5kLT5idWZmZXIgPSBmLm91dEZpZWxkID0gZmllbGQ7CisgCisgICAgICAgICArK2k7Cisg ICAgIH0KK0BAIC0xMzY5LDIwICsxMzY3LDIwIEBAIGJvb2wgUU1ZU1FMRHJpdmVyOjpvcGVuKGNv bnN0IFFTdHJpbmcmIGRiLAorICAgICB9CisgCisgI2lmIE1ZU1FMX1ZFUlNJT05fSUQgPj0gNTAw MDcKKy0gICAgaWYgKG15c3FsX2dldF9jbGllbnRfdmVyc2lvbigpID49IDUwNTAzICYmIG15c3Fs X2dldF9zZXJ2ZXJfdmVyc2lvbihkLT5teXNxbCkgPj0gNTA1MDMpIHsKKy0gICAgICAgIC8vIGZv cmNlIHRoZSBjb21tdW5pY2F0aW9uIHRvIGJlIHV0ZjhtYjQgKG9ubHkgdXRmOG1iNCBzdXBwb3J0 cyA0LWJ5dGUgY2hhcmFjdGVycykKKy0gICAgICAgIG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQt Pm15c3FsLCAidXRmOG1iNCIpOworKyAgICAvLyBmb3JjZSB0aGUgY29tbXVuaWNhdGlvbiB0byBi ZSB1dGY4bWI0IChvbmx5IHV0ZjhtYjQgc3VwcG9ydHMgNC1ieXRlIGNoYXJhY3RlcnMpCisrICAg IGlmIChteXNxbF9zZXRfY2hhcmFjdGVyX3NldChkLT5teXNxbCwgInV0ZjhtYjQiKSkgeworKyAg ICAgICAgLy8gdGhpcyBmYWlsZWQsIHRyeSBmb3JjaW5nIGl0IHRvIHV0ZiAoQk1QIG9ubHkpCisr ICAgICAgICBpZiAobXlzcWxfc2V0X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4IikpCisr ICAgICAgICAgICAgcVdhcm5pbmcoKSA8PCAiTXlTUUw6IFVuYWJsZSB0byBzZXQgdGhlIGNsaWVu dCBjaGFyYWN0ZXIgc2V0IHRvIHV0ZjguIjsKKyAjaWYgUVRfQ09ORklHKHRleHRjb2RlYykKKy0g ICAgICAgIGQtPnRjID0gUVRleHRDb2RlYzo6Y29kZWNGb3JOYW1lKCJVVEYtOCIpOworKyAgICAg ICAgZWxzZQorKyAgICAgICAgICAgIGQtPnRjID0gY29kZWMoZC0+bXlzcWwpOworICNlbmRpZgor LSAgICB9IGVsc2UKKy0gICAgeworLSAgICAgICAgLy8gZm9yY2UgdGhlIGNvbW11bmljYXRpb24g dG8gYmUgdXRmOAorLSAgICAgICAgbXlzcWxfc2V0X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1 dGY4Iik7CisrICAgIH0KKyAjaWYgUVRfQ09ORklHKHRleHRjb2RlYykKKy0gICAgICAgIGQtPnRj ID0gY29kZWMoZC0+bXlzcWwpOworKyAgICBlbHNlCisrICAgICAgICBkLT50YyA9IFFUZXh0Q29k ZWM6OmNvZGVjRm9yTmFtZSgiVVRGLTgiKTsKKyAjZW5kaWYKKy0gICAgfQorICNlbmRpZiAgLy8g TVlTUUxfVkVSU0lPTl9JRCA+PSA1MDAwNworIAorICAgICBkLT5wcmVwYXJlZFF1ZXJ5c0VuYWJs ZWQgPSBjaGVja1ByZXBhcmVkUXVlcmllcyhkLT5teXNxbCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnQtMjQucG5nIGIvcXRiYXNlL3Ny Yy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnRlci0yNC5wbmcKK3NpbWlsYXJpdHkg aW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9w cmludC0yNC5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3By aW50ZXItMjQucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9pbWFnZXMvcHJpbnQtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9p bWFnZXMvcHJpbnRlci0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20g c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludC0zMi5wbmcKK3JlbmFtZSB0byBz cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50ZXItMzIucG5nCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLXNpZGVk LTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFn ZXMtZmFjaW5nLTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0yNC5wbmcKK3JlbmFt ZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTI0 LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2Vz L3ZpZXctcGFnZS1zaWRlZC0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dz L2ltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQor cmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utc2lk ZWQtMzIucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3 LXBhZ2VzLWZhY2luZy0zMi5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9y dC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2UtbXVsdGktMjQucG5nIGIvcXRiYXNlL3NyYy9wcmlu dHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0yNC5wbmcKK3NpbWls YXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2lt YWdlcy92aWV3LXBhZ2UtbXVsdGktMjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTI0LnBuZworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0zMi5w bmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLW92 ZXJ2aWV3LTMyLnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0zMi5wbmcKK3JlbmFtZSB0 byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMzIu cG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMv dmlldy1wYWdlLW9uZS0yNC5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2lt YWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVu YW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25lLTI0 LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdl cy1zaW5nbGUtMjQucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9pbWFnZXMvdmlldy1wYWdlLW9uZS0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9y dC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0zMi5wbmcKK3NpbWlsYXJpdHkgaW5k ZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3 LXBhZ2Utb25lLTMyLnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvdmlldy1wYWdlcy1zaW5nbGUtMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmlu dHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXBhZ2UtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmlu dHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtcGFnZS0yNC5wbmcKK3NpbWlsYXJpdHkg aW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9m aXQtcGFnZS0yNC5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2Vz L3pvb20tZml0LXBhZ2UtMjQucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBv cnQvZGlhbG9ncy9pbWFnZXMvZml0LXBhZ2UtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBv cnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtcGFnZS0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXgg MTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFn ZS0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20t Zml0LXBhZ2UtMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9pbWFnZXMvZml0LXdpZHRoLTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvaW1hZ2VzL3pvb20tZml0LXdpZHRoLTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAl CityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC13aWR0aC0y NC5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0 LXdpZHRoLTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvaW1hZ2VzL2ZpdC13aWR0aC0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFs b2dzL2ltYWdlcy96b29tLWZpdC13aWR0aC0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQor cmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtd2lkdGgtMzIu cG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC13 aWR0aC0zMi5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dz L3FwYWdlc2V0dXBkaWFsb2dfdW5peC5jcHAgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFs b2dzL3FwYWdlc2V0dXBkaWFsb2dfdW5peC5jcHAKK2luZGV4IDc4ZTViOGQxZWYuLjJhMjg1MTY3 MTkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdlc2V0 dXBkaWFsb2dfdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv cXBhZ2VzZXR1cGRpYWxvZ191bml4LmNwcAorQEAgLTUzMiw2ICs1MzIsNyBAQCB2b2lkIFFQYWdl U2V0dXBXaWRnZXQ6OnVwZGF0ZVdpZGdldCgpCisgdm9pZCBRUGFnZVNldHVwV2lkZ2V0OjpzZXR1 cFByaW50ZXIoKSBjb25zdAorIHsKKyAgICAgbV9wcmludGVyLT5zZXRQYWdlTGF5b3V0KG1fcGFn ZUxheW91dCk7CisrICAgIG1fcHJpbnRlci0+c2V0UGFnZU9yaWVudGF0aW9uKG1fcGFnZUxheW91 dC5vcmllbnRhdGlvbigpKTsKKyAjaWYgUVRfQ09ORklHKGN1cHMpCisgICAgIFFDVVBTU3VwcG9y dDo6UGFnZXNQZXJTaGVldCBwYWdlc1BlclNoZWV0ID0gcXZhcmlhbnRfY2FzdDxRQ1VQU1N1cHBv cnQ6OlBhZ2VzUGVyU2hlZXQ+KG1fdWkucGFnZXNQZXJTaGVldENvbWJvLT5jdXJyZW50RGF0YSgp CisgKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3Fwcmlu dGRpYWxvZy5xcmMgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxv Zy5xcmMKK2luZGV4IDVhNTc5YmFhNTUuLjEwYjhlMWQzNDEgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZy5xcmMKKysrKyBiL3F0YmFzZS9z cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nLnFyYworQEAgLTEsOSArMSw5IEBA CisgPCFET0NUWVBFIFJDQz48UkNDIHZlcnNpb249IjEuMCI+CisgPHFyZXNvdXJjZSBwcmVmaXg9 Ii9xdC1wcm9qZWN0Lm9yZy9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2ciPgorLTxmaWxlPmlt YWdlcy9maXQtcGFnZS0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL2ZpdC1wYWdlLTMyLnBu ZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvZml0LXdpZHRoLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5p bWFnZXMvZml0LXdpZHRoLTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvem9vbS1maXQtcGFn ZS0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3pvb20tZml0LXBhZ2UtMzIucG5nPC9maWxl PgorKzxmaWxlPmltYWdlcy96b29tLWZpdC13aWR0aC0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1h Z2VzL3pvb20tZml0LXdpZHRoLTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvZ28tZmlyc3Qt MjQucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy9nby1maXJzdC0zMi5wbmc8L2ZpbGU+CisgPGZp bGU+aW1hZ2VzL2dvLWxhc3QtMjQucG5nPC9maWxlPgorQEAgLTE4LDE0ICsxOCwxNCBAQAorIDxm aWxlPmltYWdlcy9sYXlvdXQtcG9ydHJhaXQtMzIucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy9w YWdlLXNldHVwLTI0LnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvcGFnZS1zZXR1cC0zMi5wbmc8 L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ByaW50LTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMv cHJpbnQtMzIucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2UtbXVsdGktMjQucG5n PC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2UtbXVsdGktMzIucG5nPC9maWxlPgorLTxm aWxlPmltYWdlcy92aWV3LXBhZ2Utb25lLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmll dy1wYWdlLW9uZS0zMi5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0y NC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0zMi5wbmc8L2ZpbGU+ CisrPGZpbGU+aW1hZ2VzL3ByaW50ZXItMjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy9wcmlu dGVyLTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0yNC5w bmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMzIucG5nPC9maWxl PgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+ aW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xlLTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmll dy1wYWdlcy1mYWNpbmctMjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLWZh Y2luZy0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL3pvb20taW4tMjQucG5nPC9maWxlPgor IDxmaWxlPmltYWdlcy96b29tLWluLTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvem9vbS1v dXQtMjQucG5nPC9maWxlPgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvcXByaW50ZGlhbG9nX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9xcHJpbnRkaWFsb2dfdW5peC5jcHAKK2luZGV4IGM1Yjg0NWY0ZWMuLjVhNWJhMWQwYTgg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxv Z191bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRk aWFsb2dfdW5peC5jcHAKK0BAIC03MDIsMTMgKzcwMiwxNCBAQCB2b2lkIFFQcmludERpYWxvZ1By aXZhdGU6OnNlbGVjdFByaW50ZXIoY29uc3QgUVByaW50ZXI6Ok91dHB1dEZvcm1hdCBvdXRwdXRG b3JtYQorICAgICAgICAgZWxzZQorICAgICAgICAgICAgIG9wdGlvbnMuZ3JheXNjYWxlLT5zZXRD aGVja2VkKHRydWUpOworIAorLSAgICAgICAgLy8ga2VlcCBkdXBsZXggdmFsdWUgZXhwbGljaXRs eSBzZXQgYnkgdXNlciwgaWYgYW55LCBhbmQgc2VsZWN0ZWQgcHJpbnRlciBzdXBwb3J0cyBpdDsK Ky0gICAgICAgIC8vIHVzZSBkZXZpY2UgZGVmYXVsdCBvdGhlcndpc2UKKysgICAgICAgIC8vIGR1 cGxleCBwcmlvcml0aWVzIHRvIGJlIGFzIGZvbGxvd3M6CisrICAgICAgICAvLyAxKSBhIHVzZXIt c2VsZWN0ZWQgZHVwbGV4IHZhbHVlIGluIHRoZSBkaWFsb2cgaGFzIGhpZ2hlc3QgcHJvcml0eQor KyAgICAgICAgLy8gMikgZHVwbGV4IHZhbHVlIHNldCBpbiB0aGUgUVByaW50ZXIKKyAgICAgICAg IFFQcmludDo6RHVwbGV4TW9kZSBkdXBsZXg7CisgICAgICAgICBpZiAoZXhwbGljaXREdXBsZXhN b2RlICE9IFFQcmludDo6RHVwbGV4QXV0byAmJiBzdXBwb3J0ZWREdXBsZXhNb2RlLmNvbnRhaW5z KGV4cGxpY2l0RHVwbGV4TW9kZSkpCisgICAgICAgICAgICAgZHVwbGV4ID0gZXhwbGljaXREdXBs ZXhNb2RlOworICAgICAgICAgZWxzZQorLSAgICAgICAgICAgIGR1cGxleCA9IHRvcC0+ZC0+bV9j dXJyZW50UHJpbnREZXZpY2UuZGVmYXVsdER1cGxleE1vZGUoKTsKKysgICAgICAgICAgICBkdXBs ZXggPSBzdGF0aWNfY2FzdDxRUHJpbnQ6OkR1cGxleE1vZGU+KHAtPmR1cGxleCgpKTsKKyAgICAg ICAgIHN3aXRjaCAoZHVwbGV4KSB7CisgICAgICAgICBjYXNlIFFQcmludDo6RHVwbGV4Tm9uZToK KyAgICAgICAgICAgICBvcHRpb25zLm5vRHVwbGV4LT5zZXRDaGVja2VkKHRydWUpOyBicmVhazsK K0BAIC0xMjQyLDEwICsxMjQzLDEwIEBAIHZvaWQgUVVuaXhQcmludFdpZGdldFByaXZhdGU6Ol9x X3ByaW50ZXJDaGFuZ2VkKGludCBpbmRleCkKKyAgICAgICAgICAgICBRU3RyaW5nIGZpbGVuYW1l ID0gd2lkZ2V0LmZpbGVuYW1lLT50ZXh0KCk7CisgICAgICAgICAgICAgd2lkZ2V0LmZpbGVuYW1l LT5zZXRUZXh0KGZpbGVuYW1lKTsKKyAgICAgICAgICAgICB3aWRnZXQubE91dHB1dC0+c2V0RW5h YmxlZCh0cnVlKTsKKy0gICAgICAgICAgICBpZiAob3B0aW9uc1BhbmUpCistICAgICAgICAgICAg ICAgIG9wdGlvbnNQYW5lLT5zZWxlY3RQcmludGVyKFFQcmludGVyOjpQZGZGb3JtYXQpOworICAg ICAgICAgICAgIHByaW50ZXItPnNldE91dHB1dEZvcm1hdChRUHJpbnRlcjo6UGRmRm9ybWF0KTsK KyAgICAgICAgICAgICBtX2N1cnJlbnRQcmludERldmljZSA9IFFQcmludERldmljZSgpOworKyAg ICAgICAgICAgIGlmIChvcHRpb25zUGFuZSkKKysgICAgICAgICAgICAgICAgb3B0aW9uc1BhbmUt PnNlbGVjdFByaW50ZXIoUVByaW50ZXI6OlBkZkZvcm1hdCk7CisgICAgICAgICAgICAgcmV0dXJu OworICAgICAgICAgfQorICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBv cnQvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9nLmNwcCBiL3F0YmFzZS9zcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvcXByaW50cHJldmlld2RpYWxvZy5jcHAKK2luZGV4IDM5NTc1ZDVmNTcuLjIz YjdlODk1MzggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3Fw cmludHByZXZpZXdkaWFsb2cuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFs b2dzL3FwcmludHByZXZpZXdkaWFsb2cuY3BwCitAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgUVBy aW50UHJldmlld0RpYWxvZ1ByaXZhdGU6OmluaXQoUVByaW50ZXIgKl9wcmludGVyKQorIHN0YXRp YyBpbmxpbmUgdm9pZCBxdF9zZXR1cEFjdGlvbkljb24oUUFjdGlvbiAqYWN0aW9uLCBRTGF0aW4x U3RyaW5nIG5hbWUpCisgeworICAgICBRTGF0aW4xU3RyaW5nIGltYWdlUHJlZml4KCI6L3F0LXBy b2plY3Qub3JnL2RpYWxvZ3MvcXByaW50cHJldmlld2RpYWxvZy9pbWFnZXMvIik7CistICAgIFFJ Y29uIGljb247CisrICAgIFFJY29uIGljb24gPSBRSWNvbjo6ZnJvbVRoZW1lKG5hbWUpOworICAg ICBpY29uLmFkZEZpbGUoaW1hZ2VQcmVmaXggKyBuYW1lICsgUUxhdGluMVN0cmluZygiLTI0LnBu ZyIpLCBRU2l6ZSgyNCwgMjQpKTsKKyAgICAgaWNvbi5hZGRGaWxlKGltYWdlUHJlZml4ICsgbmFt ZSArIFFMYXRpbjFTdHJpbmcoIi0zMi5wbmciKSwgUVNpemUoMzIsIDMyKSk7CisgICAgIGFjdGlv bi0+c2V0SWNvbihpY29uKTsKK0BAIC0zODMsOCArMzgzLDggQEAgdm9pZCBRUHJpbnRQcmV2aWV3 RGlhbG9nUHJpdmF0ZTo6c2V0dXBBY3Rpb25zKCkKKyAgICAgZml0UGFnZUFjdGlvbi0+c2V0T2Jq ZWN0TmFtZShRTGF0aW4xU3RyaW5nKCJmaXRQYWdlQWN0aW9uIikpOworICAgICBmaXRXaWR0aEFj dGlvbi0+c2V0Q2hlY2thYmxlKHRydWUpOworICAgICBmaXRQYWdlQWN0aW9uLT5zZXRDaGVja2Fi bGUodHJ1ZSk7CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihmaXRXaWR0aEFjdGlvbiwgUUxhdGlu MVN0cmluZygiZml0LXdpZHRoIikpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24oZml0UGFnZUFj dGlvbiwgUUxhdGluMVN0cmluZygiZml0LXBhZ2UiKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNv bihmaXRXaWR0aEFjdGlvbiwgUUxhdGluMVN0cmluZygiem9vbS1maXQtd2lkdGgiKSk7CisrICAg IHF0X3NldHVwQWN0aW9uSWNvbihmaXRQYWdlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ6b29tLWZp dC1wYWdlIikpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KGZpdEdyb3VwLCBTSUdOQUwodHJpZ2dl cmVkKFFBY3Rpb24qKSksIHEsIFNMT1QoX3FfZml0KFFBY3Rpb24qKSkpOworIAorICAgICAvLyBa b29tCitAQCAtNDEwLDkgKzQxMCw5IEBAIHZvaWQgUVByaW50UHJldmlld0RpYWxvZ1ByaXZhdGU6 OnNldHVwQWN0aW9ucygpCisgICAgIHNpbmdsZU1vZGVBY3Rpb24gPSBtb2RlR3JvdXAtPmFkZEFj dGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdEaWFsb2ciLCAi U2hvdyBzaW5nbGUgcGFnZSIpKTsKKyAgICAgZmFjaW5nTW9kZUFjdGlvbiA9IG1vZGVHcm91cC0+ YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxv ZyIsICJTaG93IGZhY2luZyBwYWdlcyIpKTsKKyAgICAgb3ZlcnZpZXdNb2RlQWN0aW9uID0gbW9k ZUdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2 aWV3RGlhbG9nIiwgIlNob3cgb3ZlcnZpZXcgb2YgYWxsIHBhZ2VzIikpOworLSAgICBxdF9zZXR1 cEFjdGlvbkljb24oc2luZ2xlTW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlLW9u ZSIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKGZhY2luZ01vZGVBY3Rpb24sIFFMYXRpbjFT dHJpbmcoInZpZXctcGFnZS1zaWRlZCIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKG92ZXJ2 aWV3TW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlLW11bHRpIikpOworKyAgICBx dF9zZXR1cEFjdGlvbkljb24oc2luZ2xlTW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1w YWdlcy1zaW5nbGUiKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihmYWNpbmdNb2RlQWN0aW9u LCBRTGF0aW4xU3RyaW5nKCJ2aWV3LXBhZ2VzLWZhY2luZyIpKTsKKysgICAgcXRfc2V0dXBBY3Rp b25JY29uKG92ZXJ2aWV3TW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlcy1vdmVy dmlldyIpKTsKKyAgICAgc2luZ2xlTW9kZUFjdGlvbi0+c2V0T2JqZWN0TmFtZShRTGF0aW4xU3Ry aW5nKCJzaW5nbGVNb2RlQWN0aW9uIikpOworICAgICBmYWNpbmdNb2RlQWN0aW9uLT5zZXRPYmpl Y3ROYW1lKFFMYXRpbjFTdHJpbmcoImZhY2luZ01vZGVBY3Rpb24iKSk7CisgICAgIG92ZXJ2aWV3 TW9kZUFjdGlvbi0+c2V0T2JqZWN0TmFtZShRTGF0aW4xU3RyaW5nKCJvdmVydmlld01vZGVBY3Rp b24iKSk7CitAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgUVByaW50UHJldmlld0RpYWxvZ1ByaXZh dGU6OnNldHVwQWN0aW9ucygpCisgICAgIHByaW50ZXJHcm91cCA9IG5ldyBRQWN0aW9uR3JvdXAo cSk7CisgICAgIHByaW50QWN0aW9uID0gcHJpbnRlckdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBs aWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwgIlByaW50IikpOworICAg ICBwYWdlU2V0dXBBY3Rpb24gPSBwcmludGVyR3JvdXAtPmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0 aW9uOjp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdEaWFsb2ciLCAiUGFnZSBzZXR1cCIpKTsKKy0g ICAgcXRfc2V0dXBBY3Rpb25JY29uKHByaW50QWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJwcmludCIp KTsKKysgICAgcXRfc2V0dXBBY3Rpb25JY29uKHByaW50QWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJw cmludGVyIikpOworICAgICBxdF9zZXR1cEFjdGlvbkljb24ocGFnZVNldHVwQWN0aW9uLCBRTGF0 aW4xU3RyaW5nKCJwYWdlLXNldHVwIikpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHByaW50QWN0 aW9uLCBTSUdOQUwodHJpZ2dlcmVkKGJvb2wpKSwgcSwgU0xPVChfcV9wcmludCgpKSk7CisgICAg IFFPYmplY3Q6OmNvbm5lY3QocGFnZVNldHVwQWN0aW9uLCBTSUdOQUwodHJpZ2dlcmVkKGJvb2wp KSwgcSwgU0xPVChfcV9wYWdlU2V0dXAoKSkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvc3Fs L2tlcm5lbC9xc3FscXVlcnkuY3BwIGIvcXRiYXNlL3NyYy9zcWwva2VybmVsL3FzcWxxdWVyeS5j cHAKK2luZGV4IDMyYzYxNjZjNzkuLjYwYWZlZjEwYzMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3NxbC9rZXJuZWwvcXNxbHF1ZXJ5LmNwcAorKysrIGIvcXRiYXNlL3NyYy9zcWwva2VybmVsL3Fz cWxxdWVyeS5jcHAKK0BAIC0xLDYgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioK Ky0qKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdo dCAoQykgMjAyMiBUaGUgUXQgQ29tcGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cu cXQuaW8vbGljZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0U3Fs IG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC0zNzcsNiArMzc3LDEwIEBAIGJvb2wgUVNx bFF1ZXJ5OjpleGVjKGNvbnN0IFFTdHJpbmcmIHF1ZXJ5KQorICAgICBRRWxhcHNlZFRpbWVyIHQ7 CisgICAgIHQuc3RhcnQoKTsKKyAjZW5kaWYKKysgICAgaWYgKCFkcml2ZXIoKSkgeworKyAgICAg ICAgcVdhcm5pbmcoIlFTcWxRdWVyeTo6ZXhlYzogY2FsbGVkIGJlZm9yZSBkcml2ZXIgaGFzIGJl ZW4gc2V0IHVwIik7CisrICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgIH0KKyAgICAgaWYgKGQt PnJlZi5sb2FkUmVsYXhlZCgpICE9IDEpIHsKKyAgICAgICAgIGJvb2wgZm8gPSBpc0ZvcndhcmRP bmx5KCk7CisgICAgICAgICAqdGhpcyA9IFFTcWxRdWVyeShkcml2ZXIoKS0+Y3JlYXRlUmVzdWx0 KCkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0 ZXN0ZXIuY3BwIGIvcXRiYXNlL3NyYy90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5j cHAKK2luZGV4IDhlZmI5YzUzZDQuLmNlMDYyZjY2ZDcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy90 ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKK0BAIC00NTQsNyArNDU0LDcgQEAg dm9pZCBRQWJzdHJhY3RJdGVtTW9kZWxUZXN0ZXJQcml2YXRlOjpwYXJlbnQoKQorIAorICAgICAv LyBDb21tb24gZXJyb3IgdGVzdCAjMiwgbWFrZSBzdXJlIHRoYXQgYSBzZWNvbmQgbGV2ZWwgaW5k ZXggaGFzIGEgcGFyZW50CisgICAgIC8vIHRoYXQgaXMgdGhlIGZpcnN0IGxldmVsIGluZGV4Lgor LSAgICBpZiAobW9kZWwtPnJvd0NvdW50KHRvcEluZGV4KSA+IDApIHsKKysgICAgaWYgKG1vZGVs LT5yb3dDb3VudCh0b3BJbmRleCkgPiAwICYmIG1vZGVsLT5jb2x1bW5Db3VudCh0b3BJbmRleCkg PiAwKSB7CisgICAgICAgICBRTW9kZWxJbmRleCBjaGlsZEluZGV4ID0gbW9kZWwtPmluZGV4KDAs IDAsIHRvcEluZGV4KTsKKyAgICAgICAgIE1PREVMVEVTVEVSX1ZFUklGWShjaGlsZEluZGV4Lmlz VmFsaWQoKSk7CisgICAgICAgICBNT0RFTFRFU1RFUl9DT01QQVJFKG1vZGVsLT5wYXJlbnQoY2hp bGRJbmRleCksIHRvcEluZGV4KTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFz Y2lpa2V5LmNwcCBiL3F0YmFzZS9zcmMvdGVzdGxpYi9xYXNjaWlrZXkuY3BwCitpbmRleCA5YTMw OGRhMmJjLi45MzQ5OGIyNTZmIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy90ZXN0bGliL3Fhc2Np aWtleS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvdGVzdGxpYi9xYXNjaWlrZXkuY3BwCitAQCAtNDk4 LDYgKzQ5OCwxMSBAQCBjaGFyIFFUZXN0OjprZXlUb0FzY2lpKFF0OjpLZXkga2V5KQorICAgICBj YXNlIFF0OjpLZXlfTGF1bmNoRSA6IHJldHVybiAwOyAvLyA9IDB4MTBiMCwKKyAgICAgY2FzZSBR dDo6S2V5X0xhdW5jaEYgOiByZXR1cm4gMDsgLy8gPSAweDEwYjEsCisgCisrICAgIC8vIEtleXBh ZCBuYXZpZ2F0aW9uIGtleXMKKysgICAgY2FzZSBRdDo6S2V5X1NlbGVjdCA6IHJldHVybiAwOyAv LyA9IDB4MDEwMTAwMDAKKysgICAgY2FzZSBRdDo6S2V5X1llcyA6IHJldHVybiAwOyAvLyA9IDB4 MDEwMTAwMDEKKysgICAgY2FzZSBRdDo6S2V5X05vIDogcmV0dXJuIDA7IC8vID0gMHgwMTAxMDAw MgorKworICAgICBkZWZhdWx0OiBRVEVTVF9BU1NFUlQoZmFsc2UpOyByZXR1cm4gMDsKKyAgICAg fQorIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3BwIGIv cXRiYXNlL3NyYy90ZXN0bGliL3F0ZXN0cmVzdWx0LmNwcAoraW5kZXggODgwMjhhYWM2ZS4uMmU4 OTkzMDc3NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvdGVzdGxpYi9xdGVzdHJlc3VsdC5jcHAK KysrKyBiL3F0YmFzZS9zcmMvdGVzdGxpYi9xdGVzdHJlc3VsdC5jcHAKK0BAIC0yNTEsNyArMjUx LDggQEAgYm9vbCBRVGVzdFJlc3VsdDo6dmVyaWZ5KGJvb2wgc3RhdGVtZW50LCBjb25zdCBjaGFy ICpzdGF0ZW1lbnRTdHIsCisgeworICAgICBRVEVTVF9BU1NFUlQoc3RhdGVtZW50U3RyKTsKKyAK Ky0gICAgY2hhciBtc2dbMTAyNF0gPSB7J1wwJ307CisrICAgIGNoYXIgbXNnWzEwMjRdOworKyAg ICBtc2dbMF0gPSAnXDAnOworIAorICAgICBpZiAoUVRlc3RMb2c6OnZlcmJvc2VMZXZlbCgpID49 IDIpIHsKKyAgICAgICAgIHFzbnByaW50Zihtc2csIDEwMjQsICJRVkVSSUZZKCVzKSIsIHN0YXRl bWVudFN0cik7CitAQCAtMzA5LDcgKzMxMCw4IEBAIHN0YXRpYyBib29sIGNvbXBhcmVIZWxwZXIo Ym9vbCBzdWNjZXNzLCBjb25zdCBjaGFyICpmYWlsdXJlTXNnLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgYm9vbCBoYXNWYWx1ZXMgPSB0cnVlKQorIHsKKyAgICAgY29uc3Qgc2l6ZV90IG1h eE1zZ0xlbiA9IDEwMjQ7CistICAgIGNoYXIgbXNnW21heE1zZ0xlbl0gPSB7J1wwJ307CisrICAg IGNoYXIgbXNnW21heE1zZ0xlbl07CisrICAgIG1zZ1swXSA9ICdcMCc7CisgCisgICAgIFFURVNU X0FTU0VSVChleHBlY3RlZCk7CisgICAgIFFURVNUX0FTU0VSVChhY3R1YWwpOworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9kaWFsb2dzL3Fjb2xvcmRpYWxvZy5jcHAgYi9xdGJhc2Uv c3JjL3dpZGdldHMvZGlhbG9ncy9xY29sb3JkaWFsb2cuY3BwCitpbmRleCA0MjQ3NzMxMjc1Li5j YjMyNWJlODVjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNvbG9y ZGlhbG9nLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9n LmNwcAorQEAgLTc4LDcgKzc4LDEwIEBACisgI2luY2x1ZGUgInF3aW5kb3cuaCIKKyAKKyAjaW5j bHVkZSAicHJpdmF0ZS9xZGlhbG9nX3AuaCIKKysjaW5jbHVkZSAicHJpdmF0ZS9xZ3VpYXBwbGlj YXRpb25fcC5oIgorIAorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3Jtc2VydmljZXMuaD4KKysjaW5j bHVkZSA8cXBhL3FwbGF0Zm9ybWludGVncmF0aW9uLmg+CisgI2luY2x1ZGUgPGFsZ29yaXRobT4K KyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKK0BAIC0xNjExLDYgKzE2MTQsMjAgQEAgdm9pZCBRQ29s b3JEaWFsb2dQcml2YXRlOjpfcV9uZXdTdGFuZGFyZChpbnQgciwgaW50IGMpCisgdm9pZCBRQ29s b3JEaWFsb2dQcml2YXRlOjpfcV9waWNrU2NyZWVuQ29sb3IoKQorIHsKKyAgICAgUV9RKFFDb2xv ckRpYWxvZyk7CisrCisrICAgIGF1dG8gKnBsYXRmb3JtU2VydmljZXMgPSBRR3VpQXBwbGljYXRp b25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPnNlcnZpY2VzKCk7CisrICAgIGlmIChw bGF0Zm9ybVNlcnZpY2VzLT5oYXNDYXBhYmlsaXR5KFFQbGF0Zm9ybVNlcnZpY2VzOjpDYXBhYmls aXR5OjpDb2xvclBpY2tpbmcpKSB7CisrICAgICAgICBpZiAoYXV0byAqY29sb3JQaWNrZXIgPSBw bGF0Zm9ybVNlcnZpY2VzLT5jb2xvclBpY2tlcihxLT53aW5kb3dIYW5kbGUoKSkpIHsKKysgICAg ICAgICAgICBxLT5jb25uZWN0KGNvbG9yUGlja2VyLCAmUVBsYXRmb3JtU2VydmljZUNvbG9yUGlj a2VyOjpjb2xvclBpY2tlZCwgcSwKKysgICAgICAgICAgICAgICAgICAgICAgIFtxLCBjb2xvclBp Y2tlcl0oY29uc3QgUUNvbG9yICZjb2xvcikgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbG9yUGlja2VyLT5kZWxldGVMYXRlcigpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHEtPnNldEN1cnJlbnRDb2xvcihjb2xvcik7CisrICAgICAgICAgICAgICAgICAgICAgICB9KTsK KysgICAgICAgICAgICBjb2xvclBpY2tlci0+cGlja0NvbG9yKCk7CisrICAgICAgICAgICAgcmV0 dXJuOworKyAgICAgICAgfQorKyAgICB9CisrCisgICAgIGlmICghY29sb3JQaWNraW5nRXZlbnRG aWx0ZXIpCisgICAgICAgICBjb2xvclBpY2tpbmdFdmVudEZpbHRlciA9IG5ldyBRQ29sb3JQaWNr aW5nRXZlbnRGaWx0ZXIodGhpcywgcSk7CisgICAgIHEtPmluc3RhbGxFdmVudEZpbHRlcihjb2xv clBpY2tpbmdFdmVudEZpbHRlcik7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0 ZW12aWV3cy9xYWJzdHJhY3RpdGVtZGVsZWdhdGUuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0 ZW12aWV3cy9xYWJzdHJhY3RpdGVtZGVsZWdhdGUuY3BwCitpbmRleCBlMTIwODE3ZWRjLi44ZWEz NmI1NDI3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xYWJzdHJh Y3RpdGVtZGVsZWdhdGUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3Fh YnN0cmFjdGl0ZW1kZWxlZ2F0ZS5jcHAKK0BAIC00MDAsMTIgKzQwMCw3IEBAIGJvb2wgUUFic3Ry YWN0SXRlbURlbGVnYXRlOjpoZWxwRXZlbnQoUUhlbHBFdmVudCAqZXZlbnQsCisgICAgICAgICBj b25zdCBRU3RyaW5nIHRvb2x0aXAgPSBpbmRleC5pc1ZhbGlkKCkgPworICAgICAgICAgICAgICAg ZC0+dGV4dEZvclJvbGUoUXQ6OlRvb2xUaXBSb2xlLCBpbmRleC5kYXRhKFF0OjpUb29sVGlwUm9s ZSksIG9wdGlvbi5sb2NhbGUsIHByZWNpc2lvbikgOgorICAgICAgICAgICAgICAgUVN0cmluZygp OworLSAgICAgICAgUVJlY3QgcmVjdDsKKy0gICAgICAgIGlmIChpbmRleC5pc1ZhbGlkKCkpIHsK Ky0gICAgICAgICAgICBjb25zdCBRUmVjdCByID0gdmlldy0+dmlzdWFsUmVjdChpbmRleCk7Cist ICAgICAgICAgICAgcmVjdCA9IFFSZWN0KHZpZXctPm1hcFRvR2xvYmFsKHIudG9wTGVmdCgpKSwg ci5zaXplKCkpOworLSAgICAgICAgfQorLSAgICAgICAgUVRvb2xUaXA6OnNob3dUZXh0KGhlLT5n bG9iYWxQb3MoKSwgdG9vbHRpcCwgdmlldywgcmVjdCk7CisrICAgICAgICBRVG9vbFRpcDo6c2hv d1RleHQoaGUtPmdsb2JhbFBvcygpLCB0b29sdGlwLCB2aWV3LT52aWV3cG9ydCgpLCBvcHRpb24u cmVjdCk7CisgICAgICAgICBldmVudC0+c2V0QWNjZXB0ZWQoIXRvb2x0aXAuaXNFbXB0eSgpKTsK KyAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lk Z2V0cy9pdGVtdmlld3MvcWxpc3R2aWV3LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmll d3MvcWxpc3R2aWV3LmNwcAoraW5kZXggMmIzNDQ3NjY0Mi4uZWViZmFhMDMwZSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWxpc3R2aWV3LmNwcAorKysrIGIvcXRi YXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xbGlzdHZpZXcuY3BwCitAQCAtMzM4Niw2ICszMzg2 LDcgQEAgdm9pZCBRSWNvbk1vZGVWaWV3QmFzZTo6dXBkYXRlQ29udGVudHNTaXplKCkKKyAqLwor IHZvaWQgUUxpc3RWaWV3OjpjdXJyZW50Q2hhbmdlZChjb25zdCBRTW9kZWxJbmRleCAmY3VycmVu dCwgY29uc3QgUU1vZGVsSW5kZXggJnByZXZpb3VzKQorIHsKKysgICAgUUFic3RyYWN0SXRlbVZp ZXc6OmN1cnJlbnRDaGFuZ2VkKGN1cnJlbnQsIHByZXZpb3VzKTsKKyAjaWZuZGVmIFFUX05PX0FD Q0VTU0lCSUxJVFkKKyAgICAgaWYgKFFBY2Nlc3NpYmxlOjppc0FjdGl2ZSgpKSB7CisgICAgICAg ICBpZiAoY3VycmVudC5pc1ZhbGlkKCkpIHsKK0BAIC0zMzk2LDcgKzMzOTcsNiBAQCB2b2lkIFFM aXN0Vmlldzo6Y3VycmVudENoYW5nZWQoY29uc3QgUU1vZGVsSW5kZXggJmN1cnJlbnQsIGNvbnN0 IFFNb2RlbEluZGV4ICZwcgorICAgICAgICAgfQorICAgICB9CisgI2VuZGlmCistICAgIFFBYnN0 cmFjdEl0ZW1WaWV3OjpjdXJyZW50Q2hhbmdlZChjdXJyZW50LCBwcmV2aW91cyk7CisgfQorIAor IC8qIQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmll dy5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcuY3BwCitpbmRl eCA5MzRhYzU4MWIyLi5mNzliYjI0MjQ5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRz L2l0ZW12aWV3cy9xdGFibGV2aWV3LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12 aWV3cy9xdGFibGV2aWV3LmNwcAorQEAgLTEwMTMsNiArMTAxMyw3IEBAIHZvaWQgUVRhYmxlVmll d1ByaXZhdGU6OmRyYXdDZWxsKFFQYWludGVyICpwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25W aWV3SXRlbSAmCisgaW50IFFUYWJsZVZpZXdQcml2YXRlOjp3aWR0aEhpbnRGb3JJbmRleChjb25z dCBRTW9kZWxJbmRleCAmaW5kZXgsIGludCBoaW50LCBjb25zdCBRU3R5bGVPcHRpb25WaWV3SXRl bSAmb3B0aW9uKSBjb25zdAorIHsKKyAgICAgUV9RKGNvbnN0IFFUYWJsZVZpZXcpOworKyAgICBj b25zdCBpbnQgb2xkSGludCA9IGhpbnQ7CisgICAgIFFXaWRnZXQgKmVkaXRvciA9IGVkaXRvckZv ckluZGV4KGluZGV4KS53aWRnZXQuZGF0YSgpOworICAgICBpZiAoZWRpdG9yICYmIHBlcnNpc3Rl bnQuY29udGFpbnMoZWRpdG9yKSkgeworICAgICAgICAgaGludCA9IHFNYXgoaGludCwgZWRpdG9y LT5zaXplSGludCgpLndpZHRoKCkpOworQEAgLTEwMjEsNiArMTAyMiwxNyBAQCBpbnQgUVRhYmxl Vmlld1ByaXZhdGU6OndpZHRoSGludEZvckluZGV4KGNvbnN0IFFNb2RlbEluZGV4ICZpbmRleCwg aW50IGhpbnQsIGNvbgorICAgICAgICAgaGludCA9IHFCb3VuZChtaW4sIGhpbnQsIG1heCk7Cisg ICAgIH0KKyAgICAgaGludCA9IHFNYXgoaGludCwgcS0+aXRlbURlbGVnYXRlKGluZGV4KS0+c2l6 ZUhpbnQob3B0aW9uLCBpbmRleCkud2lkdGgoKSk7CisrCisrICAgIGlmIChoYXNTcGFucygpKSB7 CisrICAgICAgICBhdXRvIHNwYW4gPSBzcGFucy5zcGFuQXQoaW5kZXguY29sdW1uKCksIGluZGV4 LnJvdygpKTsKKysgICAgICAgIGlmIChzcGFuICYmIHNwYW4tPm1fbGVmdCA9PSBpbmRleC5jb2x1 bW4oKSAmJiBzcGFuLT5tX3RvcCA9PSBpbmRleC5yb3coKSkgeworKyAgICAgICAgICAgIC8vIHNw YW5zIGFyZSBzY3Jld2VkIHVwIHdoZW4gc2VjdGlvbnMgYXJlIG1vdmVkCisrICAgICAgICAgICAg Y29uc3QgYXV0byBsZWZ0ID0gbG9naWNhbENvbHVtbihzcGFuLT5tX2xlZnQpOworKyAgICAgICAg ICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHNwYW4tPndpZHRoKCk7ICsraSkKKysgICAgICAgICAg ICAgICBoaW50IC09IHEtPmNvbHVtbldpZHRoKHZpc3VhbENvbHVtbihsZWZ0ICsgaSkpOworKyAg ICAgICAgfQorKyAgICAgICAgaGludCA9IHN0ZDo6bWF4KGhpbnQsIG9sZEhpbnQpOworKyAgICB9 CisgICAgIHJldHVybiBoaW50OworIH0KKyAKK0BAIC0xMDUzLDYgKzEwNjUsMTEgQEAgaW50IFFU YWJsZVZpZXdQcml2YXRlOjpoZWlnaHRIaW50Rm9ySW5kZXgoY29uc3QgUU1vZGVsSW5kZXggJmlu ZGV4LCBpbnQgaGludCwgUVMKKyAgICAgICAgIG9wdGlvbi5yZWN0LnNldEhlaWdodChoZWlnaHQp OworICAgICAgICAgb3B0aW9uLnJlY3Quc2V0WChxLT5jb2x1bW5WaWV3cG9ydFBvc2l0aW9uKGlu ZGV4LmNvbHVtbigpKSk7CisgICAgICAgICBvcHRpb24ucmVjdC5zZXRXaWR0aChxLT5jb2x1bW5X aWR0aChpbmRleC5jb2x1bW4oKSkpOworKyAgICAgICAgaWYgKGhhc1NwYW5zKCkpIHsKKysgICAg ICAgICAgICBhdXRvIHNwYW4gPSBzcGFucy5zcGFuQXQoaW5kZXguY29sdW1uKCksIGluZGV4LnJv dygpKTsKKysgICAgICAgICAgICBpZiAoc3BhbiAmJiBzcGFuLT5tX2xlZnQgPT0gaW5kZXguY29s dW1uKCkgJiYgc3Bhbi0+bV90b3AgPT0gaW5kZXgucm93KCkpCisrICAgICAgICAgICAgICAgIG9w dGlvbi5yZWN0LnNldFdpZHRoKHN0ZDo6bWF4KG9wdGlvbi5yZWN0LndpZHRoKCksIHZpc3VhbFNw YW5SZWN0KCpzcGFuKS53aWR0aCgpKSk7CisrICAgICAgICB9CisgICAgICAgICAvLyAxcHggbGVz cyBzcGFjZSB3aGVuIGdyaWQgaXMgc2hvd24gKHNlZSBkcmF3Q2VsbCkKKyAgICAgICAgIGlmIChz aG93R3JpZCkKKyAgICAgICAgICAgICBvcHRpb24ucmVjdC5zZXRXaWR0aChvcHRpb24ucmVjdC53 aWR0aCgpIC0gMSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0 aW9uLmggYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3FhY3Rpb24uaAoraW5kZXggMjU4YTFl YTBhMC4uNzM3YzFlODI4NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwv cWFjdGlvbi5oCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3FhY3Rpb24uaAorQEAg LTgxLDcgKzgxLDcgQEAgY2xhc3MgUV9XSURHRVRTX0VYUE9SVCBRQWN0aW9uIDogcHVibGljIFFP YmplY3QKKyAgICAgUV9QUk9QRVJUWShNZW51Um9sZSBtZW51Um9sZSBSRUFEIG1lbnVSb2xlIFdS SVRFIHNldE1lbnVSb2xlIE5PVElGWSBjaGFuZ2VkKQorICAgICBRX1BST1BFUlRZKGJvb2wgaWNv blZpc2libGVJbk1lbnUgUkVBRCBpc0ljb25WaXNpYmxlSW5NZW51IFdSSVRFIHNldEljb25WaXNp YmxlSW5NZW51IE5PVElGWSBjaGFuZ2VkKQorICAgICBRX1BST1BFUlRZKGJvb2wgc2hvcnRjdXRW aXNpYmxlSW5Db250ZXh0TWVudSBSRUFEIGlzU2hvcnRjdXRWaXNpYmxlSW5Db250ZXh0TWVudSBX UklURSBzZXRTaG9ydGN1dFZpc2libGVJbkNvbnRleHRNZW51IE5PVElGWSBjaGFuZ2VkKQorLSAg ICBRX1BST1BFUlRZKFByaW9yaXR5IHByaW9yaXR5IFJFQUQgcHJpb3JpdHkgV1JJVEUgc2V0UHJp b3JpdHkpCisrICAgIFFfUFJPUEVSVFkoUHJpb3JpdHkgcHJpb3JpdHkgUkVBRCBwcmlvcml0eSBX UklURSBzZXRQcmlvcml0eSBOT1RJRlkgY2hhbmdlZCkKKyAKKyBwdWJsaWM6CisgICAgIC8vIG5v dGUgdGhpcyBpcyBjb3BpZWQgaW50byBxcGxhdGZvcm1tZW51LmgsIHdoaWNoIG11c3Qgc3RheSBp biBzeW5jCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0LmNw cCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldC5jcHAKK2luZGV4IDllYmExZTAw MWUuLjI2ZjZkMjdlMTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3 aWRnZXQuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXQuY3BwCitA QCAtNTI5Niw3ICs1Mjk2LDcgQEAgdm9pZCBRV2lkZ2V0UHJpdmF0ZTo6ZHJhd1dpZGdldChRUGFp bnREZXZpY2UgKnBkZXYsIGNvbnN0IFFSZWdpb24gJnJnbiwgY29uc3QgUVAKKyAgICAgICAgIFFX aWRnZXRFZmZlY3RTb3VyY2VQcml2YXRlICpzb3VyY2VkID0gc3RhdGljX2Nhc3Q8UVdpZGdldEVm ZmVjdFNvdXJjZVByaXZhdGUgKj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc291cmNlLT5kX2Z1bmMoKSk7CisgICAgICAgICBpZiAo IXNvdXJjZWQtPmNvbnRleHQpIHsKKy0gICAgICAgICAgICBjb25zdCBRUmVnaW9uIGVmZmVjdFJn bihyZ24uYm91bmRpbmdSZWN0KCkpOworKyAgICAgICAgICAgIGNvbnN0IFFSZWdpb24gZWZmZWN0 UmduKChmbGFncyAmIFVzZUVmZmVjdFJlZ2lvbkJvdW5kcykgPyByZ24uYm91bmRpbmdSZWN0KCkg OiByZ24pOworICAgICAgICAgICAgIFFXaWRnZXRQYWludENvbnRleHQgY29udGV4dChwZGV2LCBl ZmZlY3RSZ24sIG9mZnNldCwgZmxhZ3MsIHNoYXJlZFBhaW50ZXIsIHJlcGFpbnRNYW5hZ2VyKTsK KyAgICAgICAgICAgICBzb3VyY2VkLT5jb250ZXh0ID0gJmNvbnRleHQ7CisgICAgICAgICAgICAg aWYgKCFzaGFyZWRQYWludGVyKSB7CitAQCAtNTMyOCw2ICs1MzI4LDcgQEAgdm9pZCBRV2lkZ2V0 UHJpdmF0ZTo6ZHJhd1dpZGdldChRUGFpbnREZXZpY2UgKnBkZXYsIGNvbnN0IFFSZWdpb24gJnJn biwgY29uc3QgUVAKKyAgICAgICAgIH0KKyAgICAgfQorICNlbmRpZiAvLyBRVF9DT05GSUcoZ3Jh cGhpY3NlZmZlY3QpCisrICAgIGZsYWdzID0gZmxhZ3MgJiB+VXNlRWZmZWN0UmVnaW9uQm91bmRz OworIAorICAgICBjb25zdCBib29sIGFsc29PblNjcmVlbiA9IGZsYWdzICYgRHJhd1BhaW50T25T Y3JlZW47CisgICAgIGNvbnN0IGJvb2wgcmVjdXJzaXZlID0gZmxhZ3MgJiBEcmF3UmVjdXJzaXZl OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldF9wLmggYi9x dGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRfcC5oCitpbmRleCBlZWY2YjhmYTJjLi5j NDMyZjRiNWQ1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0 X3AuaAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0X3AuaAorQEAgLTIy OSw3ICsyMjksOCBAQCBwdWJsaWM6CisgICAgICAgICBEb250U3VidHJhY3RPcGFxdWVDaGlsZHJl biA9IDB4MTAsCisgICAgICAgICBEb250RHJhd09wYXF1ZUNoaWxkcmVuID0gMHgyMCwKKyAgICAg ICAgIERvbnREcmF3TmF0aXZlQ2hpbGRyZW4gPSAweDQwLAorLSAgICAgICAgRG9udFNldENvbXBv c2l0aW9uTW9kZSA9IDB4ODAKKysgICAgICAgIERvbnRTZXRDb21wb3NpdGlvbk1vZGUgPSAweDgw LAorKyAgICAgICAgVXNlRWZmZWN0UmVnaW9uQm91bmRzID0gMHgxMDAKKyAgICAgfTsKKyAgICAg UV9ERUNMQVJFX0ZMQUdTKERyYXdXaWRnZXRGbGFncywgRHJhd1dpZGdldEZsYWcpCisgICAgIFFf RkxBRyhEcmF3V2lkZ2V0RmxhZ3MpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tl cm5lbC9xd2lkZ2V0cmVwYWludG1hbmFnZXIuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5l bC9xd2lkZ2V0cmVwYWludG1hbmFnZXIuY3BwCitpbmRleCAwMjg4MGIzNGRhLi4wZDQ0ZTEzMjZk IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWludG1h bmFnZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRyZXBhaW50 bWFuYWdlci5jcHAKK0BAIC0xMDE4LDcgKzEwMTgsOCBAQCB2b2lkIFFXaWRnZXRSZXBhaW50TWFu YWdlcjo6cGFpbnRBbmRGbHVzaCgpCisgCisgICAgIC8vIFBhaW50IHRoZSByZXN0IHdpdGggY29t cG9zaXRpb24uCisgICAgIGlmIChyZXBhaW50QWxsV2lkZ2V0cyB8fCAhZGlydHlDb3B5LmlzRW1w dHkoKSkgeworLSAgICAgICAgUVdpZGdldFByaXZhdGU6OkRyYXdXaWRnZXRGbGFncyBmbGFncyA9 IFFXaWRnZXRQcml2YXRlOjpEcmF3QXNSb290IHwgUVdpZGdldFByaXZhdGU6OkRyYXdSZWN1cnNp dmU7CisrICAgICAgICBRV2lkZ2V0UHJpdmF0ZTo6RHJhd1dpZGdldEZsYWdzIGZsYWdzID0gUVdp ZGdldFByaXZhdGU6OkRyYXdBc1Jvb3QgfCBRV2lkZ2V0UHJpdmF0ZTo6RHJhd1JlY3Vyc2l2ZQor KyAgICAgICAgICAgICAgICB8IFFXaWRnZXRQcml2YXRlOjpVc2VFZmZlY3RSZWdpb25Cb3VuZHM7 CisgICAgICAgICB0bHctPmRfZnVuYygpLT5kcmF3V2lkZ2V0KHN0b3JlLT5wYWludERldmljZSgp LCBkaXJ0eUNvcHksIFFQb2ludCgpLCBmbGFncywgbnVsbHB0ciwgdGhpcyk7CisgICAgIH0KKyAK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5bGVzL3FmdXNpb25zdHlsZS5jcHAg Yi9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5bGVzL3FmdXNpb25zdHlsZS5jcHAKK2luZGV4IGY0MzQ1 ZDk3YzQuLjk2MjkxMmM4MzggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5bGVz L3FmdXNpb25zdHlsZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9zdHlsZXMvcWZ1c2lv bnN0eWxlLmNwcAorQEAgLTE3NzIsMTQgKzE3NzIsNiBAQCB2b2lkIFFGdXNpb25TdHlsZTo6ZHJh d0NvbnRyb2woQ29udHJvbEVsZW1lbnQgZWxlbWVudCwgY29uc3QgUVN0eWxlT3B0aW9uICpvcHRp bworICAgICAgICAgICAgIHByb3h5KCktPmRyYXdDb250cm9sKENFX1B1c2hCdXR0b25MYWJlbCwg JnN1Ym9wdCwgcGFpbnRlciwgd2lkZ2V0KTsKKyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOwor LSAgICBjYXNlIENFX1B1c2hCdXR0b25MYWJlbDoKKy0gICAgICAgIGlmIChjb25zdCBRU3R5bGVP cHRpb25CdXR0b24gKmJ1dHRvbiA9IHFzdHlsZW9wdGlvbl9jYXN0PGNvbnN0IFFTdHlsZU9wdGlv bkJ1dHRvbiAqPihvcHRpb24pKSB7CistICAgICAgICAgICAgUVN0eWxlT3B0aW9uQnV0dG9uIGIo KmJ1dHRvbik7CistICAgICAgICAgICAgLy8gbm8gUE1fQnV0dG9uU2hpZnRIb3Jpem9udGFsIGFu ZCBQTV9CdXR0b25TaGlmdFZlcnRpY2FsIGZvciBmdXNpb24gc3R5bGUKKy0gICAgICAgICAgICBi LnN0YXRlICY9IH4oU3RhdGVfT24gfCBTdGF0ZV9TdW5rZW4pOworLSAgICAgICAgICAgIFFDb21t b25TdHlsZTo6ZHJhd0NvbnRyb2woZWxlbWVudCwgJmIsIHBhaW50ZXIsIHdpZGdldCk7CistICAg ICAgICB9CistICAgICAgICBicmVhazsKKyAgICAgY2FzZSBDRV9NZW51QmFyRW1wdHlBcmVhOgor ICAgICAgICAgcGFpbnRlci0+c2F2ZSgpOworICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy93aWRnZXRzL3V0aWwvcWNvbXBsZXRlci5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvdXRpbC9x Y29tcGxldGVyLmNwcAoraW5kZXggMThiMjQwNjNkOC4uZWY3MjA3YThhMyAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvd2lkZ2V0cy91dGlsL3Fjb21wbGV0ZXIuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3dpZGdldHMvdXRpbC9xY29tcGxldGVyLmNwcAorQEAgLTExMjAsNiArMTEyMCw4IEBAIHZvaWQg UUNvbXBsZXRlcjo6c2V0TW9kZWwoUUFic3RyYWN0SXRlbU1vZGVsICptb2RlbCkKKyB7CisgICAg IFFfRChRQ29tcGxldGVyKTsKKyAgICAgUUFic3RyYWN0SXRlbU1vZGVsICpvbGRNb2RlbCA9IGQt PnByb3h5LT5zb3VyY2VNb2RlbCgpOworKyAgICBpZiAob2xkTW9kZWwgPT0gbW9kZWwpCisrICAg ICAgICByZXR1cm47CisgI2lmIFFUX0NPTkZJRyhmaWxlc3lzdGVtbW9kZWwpCisgICAgIGlmIChx b2JqZWN0X2Nhc3Q8Y29uc3QgUUZpbGVTeXN0ZW1Nb2RlbCAqPihvbGRNb2RlbCkpCisgICAgICAg ICBzZXRDb21wbGV0aW9uUm9sZShRdDo6RWRpdFJvbGUpOyAvLyBRVEJVRy01NDY0MiwgY2xlYXIg RmlsZU5hbWVSb2xlIHNldCBieSBRRmlsZVN5c3RlbU1vZGVsCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uLmNwcCBiL3F0YmFzZS9zcmMvd2lk Z2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi5jcHAKK2luZGV4IGExMjhiMjM5NTAuLmRjNDBi ZjYyZmIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3Ri dXR0b24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0 b24uY3BwCitAQCAtNTYsNiArNTYsNyBAQAorICNpZm5kZWYgUVRfTk9fQUNDRVNTSUJJTElUWQor ICNpbmNsdWRlICJxYWNjZXNzaWJsZS5oIgorICNlbmRpZgorKyNpbmNsdWRlIDxxcGEvcXBsYXRm b3JtdGhlbWUuaD4KKyAKKyAjaW5jbHVkZSA8YWxnb3JpdGhtPgorIAorQEAgLTEwNzYsMTkgKzEw NzcsMTkgQEAgdm9pZCBRQWJzdHJhY3RCdXR0b246OmtleVByZXNzRXZlbnQoUUtleUV2ZW50ICpl KQorIHsKKyAgICAgUV9EKFFBYnN0cmFjdEJ1dHRvbik7CisgICAgIGJvb2wgbmV4dCA9IHRydWU7 CistICAgIHN3aXRjaCAoZS0+a2V5KCkpIHsKKy0gICAgY2FzZSBRdDo6S2V5X0VudGVyOgorLSAg ICBjYXNlIFF0OjpLZXlfUmV0dXJuOgorLSAgICAgICAgZS0+aWdub3JlKCk7CistICAgICAgICBi cmVhazsKKy0gICAgY2FzZSBRdDo6S2V5X1NlbGVjdDoKKy0gICAgY2FzZSBRdDo6S2V5X1NwYWNl OgorLSAgICAgICAgaWYgKCFlLT5pc0F1dG9SZXBlYXQoKSkgeworLSAgICAgICAgICAgIHNldERv d24odHJ1ZSk7CistICAgICAgICAgICAgcmVwYWludCgpOworLSAgICAgICAgICAgIGQtPmVtaXRQ cmVzc2VkKCk7CistICAgICAgICB9CistICAgICAgICBicmVhazsKKysKKysgICAgY29uc3QgYXV0 byBrZXkgPSBzdGF0aWNfY2FzdDxRdDo6S2V5PihlLT5rZXkoKSk7CisrICAgIGNvbnN0IGF1dG8g YnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgp CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChR UGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0 dG9uUHJlc3NLZXlzLmNvbnRhaW5zKGtleSkgJiYgIWUtPmlzQXV0b1JlcGVhdCgpKSB7CisrICAg ICAgICBzZXREb3duKHRydWUpOworKyAgICAgICAgcmVwYWludCgpOworKyAgICAgICAgZC0+ZW1p dFByZXNzZWQoKTsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKworKyAgICBzd2l0Y2ggKGtl eSkgeworICAgICBjYXNlIFF0OjpLZXlfVXA6CisgICAgICAgICBuZXh0ID0gZmFsc2U7CisgICAg ICAgICBRX0ZBTExUSFJPVUdIKCk7CitAQCAtMTE1MywxNSArMTE1NCwxNSBAQCB2b2lkIFFBYnN0 cmFjdEJ1dHRvbjo6a2V5UmVsZWFzZUV2ZW50KFFLZXlFdmVudCAqZSkKKyAgICAgaWYgKCFlLT5p c0F1dG9SZXBlYXQoKSkKKyAgICAgICAgIGQtPnJlcGVhdFRpbWVyLnN0b3AoKTsKKyAKKy0gICAg c3dpdGNoIChlLT5rZXkoKSkgeworLSAgICBjYXNlIFF0OjpLZXlfU2VsZWN0OgorLSAgICBjYXNl IFF0OjpLZXlfU3BhY2U6CistICAgICAgICBpZiAoIWUtPmlzQXV0b1JlcGVhdCgpICYmIGQtPmRv d24pCistICAgICAgICAgICAgZC0+Y2xpY2soKTsKKy0gICAgICAgIGJyZWFrOworLSAgICBkZWZh dWx0OgorLSAgICAgICAgZS0+aWdub3JlKCk7CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NL ZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVt ZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlz LmNvbnRhaW5zKHN0YXRpY19jYXN0PFF0OjpLZXk+KGUtPmtleSgpKSkgJiYgIWUtPmlzQXV0b1Jl cGVhdCgpICYmIGQtPmRvd24pIHsKKysgICAgICAgIGQtPmNsaWNrKCk7CisrICAgICAgICByZXR1 cm47CisgICAgIH0KKysKKysgICAgZS0+aWdub3JlKCk7CisgfQorIAorIC8qIVxyZWltcAorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC5jcHAgYi9xdGJh c2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3guY3BwCitpbmRleCA3YTQ5NmMyN2UwLi4w YTNkOTY2NDdiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWNvbWJv Ym94LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94LmNwcAor QEAgLTMzNTIsNyArMzM1MiwyMyBAQCB2b2lkIFFDb21ib0JveDo6a2V5UHJlc3NFdmVudChRS2V5 RXZlbnQgKmUpCisgCisgICAgIE1vdmUgbW92ZSA9IE5vTW92ZTsKKyAgICAgaW50IG5ld0luZGV4 ID0gY3VycmVudEluZGV4KCk7CistICAgIHN3aXRjaCAoZS0+a2V5KCkpIHsKKysKKysgICAgYm9v bCBwcmVzc0xpa2VCdXR0b24gPSAhZC0+bGluZUVkaXQ7CisrI2lmZGVmIFFUX0tFWVBBRF9OQVZJ R0FUSU9OCisrICAgIHByZXNzTGlrZUJ1dHRvbiB8PSBRQXBwbGljYXRpb25Qcml2YXRlOjprZXlw YWROYXZpZ2F0aW9uRW5hYmxlZCgpICYmICFoYXNFZGl0Rm9jdXMoKTsKKysjZW5kaWYKKysgICAg YXV0byBrZXkgPSBzdGF0aWNfY2FzdDxRdDo6S2V5PihlLT5rZXkoKSk7CisrICAgIGlmIChwcmVz c0xpa2VCdXR0b24pIHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1 aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1 dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoYnV0dG9uUHJlc3NL ZXlzLmNvbnRhaW5zKGtleSkpIHsKKysgICAgICAgICAgICBzaG93UG9wdXAoKTsKKysgICAgICAg ICAgICByZXR1cm47CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgc3dpdGNoIChrZXkpIHsK KyAgICAgY2FzZSBRdDo6S2V5X1VwOgorICAgICAgICAgaWYgKGUtPm1vZGlmaWVycygpICYgUXQ6 OkNvbnRyb2xNb2RpZmllcikKKyAgICAgICAgICAgICBicmVhazsgLy8gcGFzcyB0byBsaW5lIGVk aXQgZm9yIGF1dG8gY29tcGxldGlvbgorQEAgLTMzOTQsMjYgKzM0MTAsMTEgQEAgdm9pZCBRQ29t Ym9Cb3g6OmtleVByZXNzRXZlbnQoUUtleUV2ZW50ICplKQorICAgICAgICAgICAgIHJldHVybjsK KyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIFF0OjpLZXlfU3BhY2U6Cist ICAgICAgICBpZiAoIWQtPmxpbmVFZGl0KSB7CistICAgICAgICAgICAgc2hvd1BvcHVwKCk7Cist ICAgICAgICAgICAgcmV0dXJuOworLSAgICAgICAgfQorLSAgICAgICAgYnJlYWs7CistICAgIGNh c2UgUXQ6OktleV9FbnRlcjoKKy0gICAgY2FzZSBRdDo6S2V5X1JldHVybjoKKyAgICAgY2FzZSBR dDo6S2V5X0VzY2FwZToKKyAgICAgICAgIGlmICghZC0+bGluZUVkaXQpCisgICAgICAgICAgICAg ZS0+aWdub3JlKCk7CisgICAgICAgICBicmVhazsKKyAjaWZkZWYgUVRfS0VZUEFEX05BVklHQVRJ T04KKy0gICAgY2FzZSBRdDo6S2V5X1NlbGVjdDoKKy0gICAgICAgIGlmIChRQXBwbGljYXRpb25Q cml2YXRlOjprZXlwYWROYXZpZ2F0aW9uRW5hYmxlZCgpCistICAgICAgICAgICAgICAgICYmICgh aGFzRWRpdEZvY3VzKCkgfHwgIWQtPmxpbmVFZGl0KSkgeworLSAgICAgICAgICAgIHNob3dQb3B1 cCgpOworLSAgICAgICAgICAgIHJldHVybjsKKy0gICAgICAgIH0KKy0gICAgICAgIGJyZWFrOwor ICAgICBjYXNlIFF0OjpLZXlfTGVmdDoKKyAgICAgY2FzZSBRdDo6S2V5X1JpZ2h0OgorICAgICAg ICAgaWYgKFFBcHBsaWNhdGlvblByaXZhdGU6OmtleXBhZE5hdmlnYXRpb25FbmFibGVkKCkgJiYg IWhhc0VkaXRGb2N1cygpKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRz L3FkYXRldGltZWVkaXRfcC5oIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1l ZWRpdF9wLmgKK2luZGV4IGQzNmI2ZjhmOWEuLmUwZGY1YjUxNTggMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZGF0ZXRpbWVlZGl0X3AuaAorKysrIGIvcXRiYXNlL3Ny Yy93aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1lZWRpdF9wLmgKK0BAIC0xLDYgKzEsNiBAQAorIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTggVGhlIFF0IENv bXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisg KiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoqCisgKiogVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIFF0V2lkZ2V0cyBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94LmNwcCBiL3F0 YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC5jcHAKK2luZGV4IDAyYTBiZWQzMjUu LjNmM2VjY2MzNzAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZ3Jv dXBib3guY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3guY3Bw CitAQCAtNTQsNiArNTQsOCBAQAorICNpbmNsdWRlICJxYWNjZXNzaWJsZS5oIgorICNlbmRpZgor ICNpbmNsdWRlIDxwcml2YXRlL3F3aWRnZXRfcC5oPgorKyNpbmNsdWRlIDxwcml2YXRlL3FndWlh cHBsaWNhdGlvbl9wLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorIAorICNp bmNsdWRlICJxZGVidWcuaCIKKyAKK0BAIC0zNjAsNyArMzYyLDEwIEBAIGJvb2wgUUdyb3VwQm94 OjpldmVudChRRXZlbnQgKmUpCisgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgY2FzZSBRRXZl bnQ6OktleVByZXNzOiB7CisgICAgICAgICBRS2V5RXZlbnQgKmsgPSBzdGF0aWNfY2FzdDxRS2V5 RXZlbnQqPihlKTsKKy0gICAgICAgIGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYgKGstPmtleSgp ID09IFF0OjpLZXlfU2VsZWN0IHx8IGstPmtleSgpID09IFF0OjpLZXlfU3BhY2UpKSB7CisrICAg ICAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6 OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0 OjpLZXk+PigpOworKyAgICAgICAgaWYgKCFrLT5pc0F1dG9SZXBlYXQoKSAmJiBidXR0b25QcmVz c0tleXMuY29udGFpbnMoc3RhdGljX2Nhc3Q8UXQ6OktleT4oay0+a2V5KCkpKSkgeworICAgICAg ICAgICAgIGQtPnByZXNzZWRDb250cm9sID0gUVN0eWxlOjpTQ19Hcm91cEJveENoZWNrQm94Owor ICAgICAgICAgICAgIHVwZGF0ZShzdHlsZSgpLT5zdWJDb250cm9sUmVjdChRU3R5bGU6OkNDX0dy b3VwQm94LCAmYm94LCBRU3R5bGU6OlNDX0dyb3VwQm94Q2hlY2tCb3gsIHRoaXMpKTsKKyAgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKK0BAIC0zNjksNyArMzc0LDEwIEBAIGJvb2wgUUdyb3VwQm94 OjpldmVudChRRXZlbnQgKmUpCisgICAgIH0KKyAgICAgY2FzZSBRRXZlbnQ6OktleVJlbGVhc2U6 IHsKKyAgICAgICAgIFFLZXlFdmVudCAqayA9IHN0YXRpY19jYXN0PFFLZXlFdmVudCo+KGUpOwor LSAgICAgICAgaWYgKCFrLT5pc0F1dG9SZXBlYXQoKSAmJiAoay0+a2V5KCkgPT0gUXQ6OktleV9T ZWxlY3QgfHwgay0+a2V5KCkgPT0gUXQ6OktleV9TcGFjZSkpIHsKKysgICAgICAgIGNvbnN0IGF1 dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVt ZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVt ZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7Cisr ICAgICAgICBpZiAoIWstPmlzQXV0b1JlcGVhdCgpICYmIGJ1dHRvblByZXNzS2V5cy5jb250YWlu cyhzdGF0aWNfY2FzdDxRdDo6S2V5PihrLT5rZXkoKSkpKSB7CisgICAgICAgICAgICAgYm9vbCB0 b2dnbGUgPSAoZC0+cHJlc3NlZENvbnRyb2wgPT0gUVN0eWxlOjpTQ19Hcm91cEJveExhYmVsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgZC0+cHJlc3NlZENvbnRyb2wgPT0gUVN0eWxl OjpTQ19Hcm91cEJveENoZWNrQm94KTsKKyAgICAgICAgICAgICBkLT5wcmVzc2VkQ29udHJvbCA9 IFFTdHlsZTo6U0NfTm9uZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0 cy9xbGFiZWwuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWxhYmVsLmNwcAoraW5k ZXggMzBmZjgwY2JiMC4uY2YyNjA1YzE3YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0 cy93aWRnZXRzL3FsYWJlbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fs YWJlbC5jcHAKK0BAIC00MjEsOSArNDIxLDYgQEAgdm9pZCBRTGFiZWw6OnNldFBpeG1hcChjb25z dCBRUGl4bWFwICZwaXhtYXApCisgICAgICAgICBkLT5waXhtYXAgPSBuZXcgUVBpeG1hcChwaXht YXApOworICAgICB9CisgCistICAgIGlmIChkLT5waXhtYXAtPmRlcHRoKCkgPT0gMSAmJiAhZC0+ cGl4bWFwLT5tYXNrKCkpCistICAgICAgICBkLT5waXhtYXAtPnNldE1hc2soKigoUUJpdG1hcCAq KWQtPnBpeG1hcCkpOworLQorICAgICBkLT51cGRhdGVMYWJlbCgpOworIH0KKyAKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xdG9vbGJhcmFyZWFsYXlvdXQuY3BwIGIv cXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcXRvb2xiYXJhcmVhbGF5b3V0LmNwcAoraW5kZXgg NDkzYzA5NGNjMS4uZDVmNGI1OTAxNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93 aWRnZXRzL3F0b29sYmFyYXJlYWxheW91dC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93 aWRnZXRzL3F0b29sYmFyYXJlYWxheW91dC5jcHAKK0BAIC0xMzY3LDcgKzEzNjcsNyBAQCBib29s IFFUb29sQmFyQXJlYUxheW91dDo6cmVzdG9yZVN0YXRlKFFEYXRhU3RyZWFtICZzdHJlYW0sIGNv bnN0IFFMaXN0PFFUb29sQmFyKgorICAgICAgICAgICAgICAgICBpdGVtLndpZGdldEl0ZW0gPSBu ZXcgUVdpZGdldEl0ZW1WMih0b29sQmFyKTsKKyAgICAgICAgICAgICAgICAgdG9vbEJhci0+c2V0 T3JpZW50YXRpb24oZmxvYXRpbmcgPyAoKHNob3duICYgMikgPyBRdDo6VmVydGljYWwgOiBRdDo6 SG9yaXpvbnRhbCkgOiBkb2NrLm8pOworICAgICAgICAgICAgICAgICB0b29sQmFyLT5zZXRWaXNp YmxlKHNob3duICYgMSk7CistICAgICAgICAgICAgICAgIHRvb2xCYXItPmRfZnVuYygpLT5zZXRX aW5kb3dTdGF0ZShmbG9hdGluZywgdHJ1ZSwgcmVjdCk7CisrICAgICAgICAgICAgICAgIHRvb2xC YXItPmRfZnVuYygpLT5zZXRXaW5kb3dTdGF0ZShmbG9hdGluZywgZmFsc2UsIHJlY3QpOworIAor ICAgICAgICAgICAgICAgICBpdGVtLnByZWZlcnJlZFNpemUgPSBpdGVtLnNpemU7CisgICAgICAg ICAgICAgICAgIGxpbmUudG9vbEJhckl0ZW1zLmFwcGVuZChpdGVtKTsKK2RpZmYgLS1naXQgYS9x dGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0 X3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3Vy cmVudC9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsL3RzdF9xdGNvbmN1cnJlbnRpdGVyYXRla2Vy bmVsLmNwcAoraW5kZXggMjEyYzBhMmUxMy4uM2M3N2IxYmEwYiAxMDA2NDQKKy0tLSBhL3F0YmFz ZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC90c3RfcXRj b25jdXJyZW50aXRlcmF0ZWtlcm5lbC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1 cnJlbnQvcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0ZWtl cm5lbC5jcHAKK0BAIC0xMjYsOCArMTI2LDcgQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29u Y3VycmVudEl0ZXJhdGVLZXJuZWw6Omluc3RhbnRpYXRlKCkKKyB7CistICAgIGF1dG8gZnV0dXJl ID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IFByaW50Rm9yKDAsIDQwKSkuc3RhcnRBc3luY2hyb25v dXNseSgpOworLSAgICBmdXR1cmUud2FpdEZvckZpbmlzaGVkKCk7CisrICAgIHN0YXJ0VGhyZWFk RW5naW5lKG5ldyBQcmludEZvcigwLCA0MCkpLnN0YXJ0QmxvY2tpbmcoKTsKKyAgICAgUUNPTVBB UkUoaXRlcmF0aW9ucy5sb2FkUmVsYXhlZCgpLCA0MCk7CisgfQorIAorQEAgLTE2NiwxMCArMTY1 LDggQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50SXRlcmF0ZUtlcm5lbDo6c3RyZXNzdGVzdCgpCisg ICAgIGNvbnN0IGludCB0aW1lcyA9IDUwOworICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRpbWVz OyArK2kpIHsKKyAgICAgICAgIGNvdW50ZXIuc3RvcmVSZWxheGVkKDApOworLSAgICAgICAgLy8g VGhyZWFkRW5naW5lIHdpbGwgZGVsZXRlIGYgd2hlbiBpdCBmaW5pc2hlcworLSAgICAgICAgYXV0 byBmID0gbmV3IENvdW50Rm9yKDAsIGl0ZXJhdGlvbnMpOworLSAgICAgICAgYXV0byBmdXR1cmUg PSBmLT5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgICAgICBmdXR1cmUud2FpdEZvckZpbmlz aGVkKCk7CisrICAgICAgICBDb3VudEZvciBmKDAsIGl0ZXJhdGlvbnMpOworKyAgICAgICAgZi5z dGFydEJsb2NraW5nKCk7CisgICAgICAgICBRQ09NUEFSRShjb3VudGVyLmxvYWRSZWxheGVkKCks IGl0ZXJhdGlvbnMpOworICAgICB9CisgfQorQEAgLTE3NywxMSArMTc0LDggQEAgdm9pZCB0c3Rf UXRDb25jdXJyZW50SXRlcmF0ZUtlcm5lbDo6c3RyZXNzdGVzdCgpCisgdm9pZCB0c3RfUXRDb25j dXJyZW50SXRlcmF0ZUtlcm5lbDo6bm9JdGVyYXRpb25zKCkKKyB7CisgICAgIGNvbnN0IGludCB0 aW1lcyA9IDIwMDAwOworLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHRpbWVzOyArK2kpIHsKKy0g ICAgICAgIGF1dG8gZnV0dXJlID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IEl0ZXJhdGVLZXJuZWw8 VGVzdEl0ZXJhdG9yLCB2b2lkPigwLCAwKSkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAuc3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICAgICAgZnV0dXJlLndhaXRGb3JGaW5pc2hl ZCgpOworLSAgICB9CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGltZXM7ICsraSkKKysgICAg ICAgIHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBJdGVyYXRlS2VybmVsPFRlc3RJdGVyYXRvciwgdm9p ZD4oMCwgMCkpLnN0YXJ0QmxvY2tpbmcoKTsKKyB9CisgCisgUU11dGV4IHRocmVhZHNNdXRleDsK K0BAIC0yMzYsMTAgKzIzMCw4IEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6 OnRocm90dGxpbmcoKQorIAorICAgICB0aHJlYWRzLmNsZWFyKCk7CisgCistICAgIC8vIFRocmVh ZEVuZ2luZSB3aWxsIGRlbGV0ZSBmIHdoZW4gaXQgZmluaXNoZXMKKy0gICAgYXV0byBmID0gbmV3 IFRocm90dGxlRm9yKDAsIHRvdGFsSXRlcmF0aW9ucyk7CistICAgIGF1dG8gZnV0dXJlID0gZi0+ c3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICBmdXR1cmUud2FpdEZvckZpbmlzaGVkKCk7Cisr ICAgIFRocm90dGxlRm9yIGYoMCwgdG90YWxJdGVyYXRpb25zKTsKKysgICAgZi5zdGFydEJsb2Nr aW5nKCk7CisgCisgICAgIFFDT01QQVJFKGl0ZXJhdGlvbnMubG9hZFJlbGF4ZWQoKSwgdG90YWxJ dGVyYXRpb25zKTsKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50 L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS90c3RfcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNw cCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5l L3RzdF9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwCitpbmRleCBhYzdiZTdhY2RkLi44MWJj NjRjOGQ5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1 cnJlbnR0aHJlYWRlbmdpbmUvdHN0X3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKKysrKyBi L3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lL3Rz dF9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwCitAQCAtNjUsOSArNjUsMTYgQEAgcHVibGlj OgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6cnVuRGlyZWN0bHkoKQor IHsKKy0gICAgUHJpbnRVc2VyICplbmdpbmUgPSBuZXcgUHJpbnRVc2VyKCk7CistICAgIFFGdXR1 cmU8dm9pZD4gZiA9IGVuZ2luZS0+c3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICBmLndhaXRG b3JGaW5pc2hlZCgpOworKyAgICB7CisrICAgICAgICBQcmludFVzZXIgZW5naW5lOworKyAgICAg ICAgZW5naW5lLnN0YXJ0U2luZ2xlVGhyZWFkZWQoKTsKKysgICAgICAgIGVuZ2luZS5zdGFydEJs b2NraW5nKCk7CisrICAgIH0KKysgICAgeworKyAgICAgICAgUHJpbnRVc2VyICplbmdpbmUgPSBu ZXcgUHJpbnRVc2VyKCk7CisrICAgICAgICBRRnV0dXJlPHZvaWQ+IGYgPSBlbmdpbmUtPnN0YXJ0 QXN5bmNocm9ub3VzbHkoKTsKKysgICAgICAgIGYud2FpdEZvckZpbmlzaGVkKCk7CisrICAgIH0K KyB9CisgCisgY2xhc3MgU3RyaW5nUmVzdWx0VXNlciA6IHB1YmxpYyBUaHJlYWRFbmdpbmU8UVN0 cmluZz4KK0BAIC05OSwxMCArMTA2LDggQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3Vy cmVudFRocmVhZEVuZ2luZTo6cmVzdWx0KCkKKyB7CistICAgIC8vIFRocmVhZEVuZ2luZSB3aWxs IGRlbGV0ZSAnZW5naW5lJyB3aGVuIGl0IGZpbmlzaGVzCistICAgIGF1dG8gZW5naW5lID0gbmV3 IFN0cmluZ1Jlc3VsdFVzZXIoKTsKKy0gICAgYXV0byBmdXR1cmUgPSBlbmdpbmUtPnN0YXJ0QXN5 bmNocm9ub3VzbHkoKTsKKy0gICAgUUNPTVBBUkUoZnV0dXJlLnJlc3VsdCgpLCBRU3RyaW5nKCJG b28iKSk7CisrICAgIFN0cmluZ1Jlc3VsdFVzZXIgZW5naW5lOworKyAgICBRQ09NUEFSRSgqZW5n aW5lLnN0YXJ0QmxvY2tpbmcoKSwgUVN0cmluZygiRm9vIikpOworIH0KKyAKKyBjbGFzcyBWb2lk UmVzdWx0VXNlciA6IHB1YmxpYyBUaHJlYWRFbmdpbmU8dm9pZD4KK0BAIC0xMjgsOSArMTMzLDE3 IEBAIHB1YmxpYzoKKyAKKyB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OnJ1blRo cm91Z2hTdGFydGVyKCkKKyB7CistICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXI8UVN0cmluZz4gc3Rh cnRlciA9IHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBTdHJpbmdSZXN1bHRVc2VyKCkpOworLSAgICBR RnV0dXJlPFFTdHJpbmc+IGYgPSBzdGFydGVyLnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAg UUNPTVBBUkUoZi5yZXN1bHQoKSwgUVN0cmluZygiRm9vIikpOworKyAgICB7CisrICAgICAgICBU aHJlYWRFbmdpbmVTdGFydGVyPFFTdHJpbmc+IHN0YXJ0ZXIgPSBzdGFydFRocmVhZEVuZ2luZShu ZXcgU3RyaW5nUmVzdWx0VXNlcigpKTsKKysgICAgICAgIFFGdXR1cmU8UVN0cmluZz4gIGYgPSBz dGFydGVyLnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKysgICAgICAgIFFDT01QQVJFKGYucmVzdWx0 KCksIFFTdHJpbmcoIkZvbyIpKTsKKysgICAgfQorKworKyAgICB7CisrICAgICAgICBUaHJlYWRF bmdpbmVTdGFydGVyPFFTdHJpbmc+IHN0YXJ0ZXIgPSBzdGFydFRocmVhZEVuZ2luZShuZXcgU3Ry aW5nUmVzdWx0VXNlcigpKTsKKysgICAgICAgIFFTdHJpbmcgc3RyID0gc3RhcnRlci5zdGFydEJs b2NraW5nKCk7CisrICAgICAgICBRQ09NUEFSRShzdHIsIFFTdHJpbmcoIkZvbyIpKTsKKysgICAg fQorIH0KKyAKKyBjbGFzcyBDYW5jZWxVc2VyIDogcHVibGljIFRocmVhZEVuZ2luZTx2b2lkPgor QEAgLTIxMyw2ICsyMjYsMTIgQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjp0 aHJvdHRsZSgpCisgICAgICAgICBmLndhaXRGb3JGaW5pc2hlZCgpOworICAgICAgICAgUUNPTVBB UkUoY291bnQubG9hZFJlbGF4ZWQoKSwgMCk7CisgICAgIH0KKysKKysgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCByZXBlYXRzOyArK2kpIHsKKysgICAgICAgIFRocm90dGxlQWx3YXlzVXNlciB0Owor KyAgICAgICAgdC5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBRQ09NUEFSRShjb3VudC5sb2Fk UmVsYXhlZCgpLCAwKTsKKysgICAgfQorIH0KKyAKKyBRU2V0PFFUaHJlYWQgKj4gdGhyZWFkczsK K0BAIC0yNDksMTcgKzI2OCwzNSBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6 OnRocmVhZENvdW50KCkKKyB7CisgICAgIGNvbnN0IGludCByZXBlYXRzID0gMTA7CisgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgcmVwZWF0czsgKytpKSB7CisrICAgICAgICBUaHJlYWRDb3VudFVz ZXIgdDsKKysgICAgICAgIHQuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgaW50IGNvdW50ID0g dGhyZWFkcy5jb3VudCgpOworKyAgICAgICAgaW50IGNvdW50X2V4cGVjdGVkID0gUVRocmVhZFBv b2w6Omdsb2JhbEluc3RhbmNlKCktPm1heFRocmVhZENvdW50KCkgKyAxOyAvLyArMSBmb3IgdGhl IG1haW4gdGhyZWFkLgorKyAgICAgICAgaWYgKGNvdW50ICE9IGNvdW50X2V4cGVjdGVkKQorKyAg ICAgICAgICAgIFFFWFBFQ1RfRkFJTCgiIiwgIlFUQlVHLTIzMzMzIiwgQWJvcnQpOworKyAgICAg ICAgUUNPTVBBUkUoY291bnQsIGNvdW50X2V4cGVjdGVkKTsKKysKKyAgICAgICAgIChuZXcgVGhy ZWFkQ291bnRVc2VyKCkpLT5zdGFydEFzeW5jaHJvbm91c2x5KCkud2FpdEZvckZpbmlzaGVkKCk7 CistICAgICAgICBjb25zdCBhdXRvIGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworLSAgICAgICAg Y29uc3QgYXV0byBtYXhUaHJlYWRDb3VudCA9IFFUaHJlYWRQb29sOjpnbG9iYWxJbnN0YW5jZSgp LT5tYXhUaHJlYWRDb3VudCgpOworLSAgICAgICAgUVZFUklGWShjb3VudCA8PSBtYXhUaHJlYWRD b3VudCk7CistICAgICAgICBRVkVSSUZZKCF0aHJlYWRzLmNvbnRhaW5zKFFUaHJlYWQ6OmN1cnJl bnRUaHJlYWQoKSkpOworKyAgICAgICAgY291bnQgPSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAg ICBjb3VudF9leHBlY3RlZCA9IFFUaHJlYWRQb29sOjpnbG9iYWxJbnN0YW5jZSgpLT5tYXhUaHJl YWRDb3VudCgpOworKyAgICAgICAgaWYgKGNvdW50ICE9IGNvdW50X2V4cGVjdGVkKQorKyAgICAg ICAgICAgIFFFWFBFQ1RfRkFJTCgiIiwgIlFUQlVHLTIzMzMzIiwgQWJvcnQpOworKyAgICAgICAg UUNPTVBBUkUoY291bnQsIGNvdW50X2V4cGVjdGVkKTsKKyAgICAgfQorIAorICAgICAvLyBTZXQg dGhlIGZpbmlzaCBmbGFnIGltbWVkaWF0ZWx5LCB0aGlzIHNob3VsZCBnaXZlIHVzIG9uZSB0aHJl YWQgb25seS4KKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXRzOyArK2kpIHsKKysgICAg ICAgIFRocmVhZENvdW50VXNlciB0KHRydWUgLypmaW5pc2hJbW1lZGlhdGVseSovKTsKKysgICAg ICAgIHQuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgaW50IGNvdW50ID0gdGhyZWFkcy5jb3Vu dCgpOworKyAgICAgICAgaWYgKGNvdW50ICE9IDEpCisrICAgICAgICAgICAgUUVYUEVDVF9GQUlM KCIiLCAiUVRCVUctMjMzMzMiLCBBYm9ydCk7CisrICAgICAgICBRQ09NUEFSRShjb3VudCwgMSk7 CisrCisgICAgICAgICAobmV3IFRocmVhZENvdW50VXNlcih0cnVlIC8qZmluaXNoSW1tZWRpYXRl bHkqLykpLT5zdGFydEFzeW5jaHJvbm91c2x5KCkud2FpdEZvckZpbmlzaGVkKCk7CistICAgICAg ICBjb25zdCBhdXRvIGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworKyAgICAgICAgY291bnQgPSB0 aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBpZiAoY291bnQgIT0gMSkKKysgICAgICAgICAgICBR RVhQRUNUX0ZBSUwoIiIsICJRVEJVRy0yMzMzMyIsIEFib3J0KTsKKyAgICAgICAgIFFDT01QQVJF KGNvdW50LCAxKTsKKyAgICAgICAgIFFWRVJJRlkoIXRocmVhZHMuY29udGFpbnMoUVRocmVhZDo6 Y3VycmVudFRocmVhZCgpKSk7CisgICAgIH0KK0BAIC00MDAsNiArNDM3LDcgQEAgcHVibGljOgor IAorIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6ZXhjZXB0aW9ucygpCisgewor KyAgICAvLyBBc3luY2hyb25vdXMgbW9kZToKKyAgICAgeworICAgICAgICAgYm9vbCBjYXVnaHQg PSBmYWxzZTsKKyAgICAgICAgIHRyeSAgeworQEAgLTQxMiw2ICs0NTAsMzIgQEAgdm9pZCB0c3Rf UXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpleGNlcHRpb25zKCkKKyAgICAgICAgIFFWRVJJRlky KGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworICAgICB9CisgCisrICAgIC8vIEJs b2NraW5nIG1vZGU6CisrICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9tIGEg d29ya2VyIHRocmVhZC4KKysgICAgeworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysg ICAgICAgIHRyeSAgeworKyAgICAgICAgICAgIFF0Q29uY3VycmVudEV4Y2VwdGlvblRocm93ZXIg ZShRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkpOworKyAgICAgICAgICAgIGUuc3RhcnRCbG9ja2lu ZygpOworKyAgICAgICAgfSBjYXRjaCAoY29uc3QgUUV4Y2VwdGlvbiAmKSB7CisrICAgICAgICAg ICAgY2F1Z2h0ID0gdHJ1ZTsKKysgICAgICAgIH0KKysgICAgICAgIFFWRVJJRlkyKGNhdWdodCwg ImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworKyAgICB9CisrCisrICAgIC8vIHRlc3QgdGhyb3dp bmcgdGhlIGV4Y2VwdGlvbiBmcm9tIHRoZSBtYWluIHRocmVhZCAoZGlmZmVyZW50IGNvZGUgcGF0 aCkKKysgICAgeworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysgICAgICAgIHRyeSAg eworKyAgICAgICAgICAgIFF0Q29uY3VycmVudEV4Y2VwdGlvblRocm93ZXIgZSgwKTsKKysgICAg ICAgICAgICBlLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFFeGNl cHRpb24gJikgeworKyAgICAgICAgICAgIGNhdWdodCA9IHRydWU7CisrICAgICAgICB9CisrICAg ICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKysgICAgfQor KworKyAgICAvLyBBc3luY2hyb25vdXMgbW9kZToKKyAgICAgeworICAgICAgICAgYm9vbCBjYXVn aHQgPSBmYWxzZTsKKyAgICAgICAgIHRyeSAgeworQEAgLTQyMyw2ICs0ODcsMzEgQEAgdm9pZCB0 c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpleGNlcHRpb25zKCkKKyAgICAgICAgIH0KKyAg ICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworICAgICB9 CisrCisrICAgIC8vIEJsb2NraW5nIG1vZGU6CisrICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhlIGV4 Y2VwdGlvbiBmcm9tIGEgd29ya2VyIHRocmVhZC4KKysgICAgeworKyAgICAgICAgYm9vbCBjYXVn aHQgPSBmYWxzZTsKKysgICAgICAgIHRyeSAgeworKyAgICAgICAgICAgIFVucmVsYXRlZEV4Y2Vw dGlvblRocm93ZXIgZShRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkpOworKyAgICAgICAgICAgIGUu c3RhcnRCbG9ja2luZygpOworKyAgICAgICAgfSBjYXRjaCAoY29uc3QgUVVuaGFuZGxlZEV4Y2Vw dGlvbiAmKSB7CisrICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsKKysgICAgICAgIH0KKysgICAg ICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworKyAgICB9Cisr CisrICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9tIHRoZSBtYWluIHRocmVh ZCAoZGlmZmVyZW50IGNvZGUgcGF0aCkKKysgICAgeworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBm YWxzZTsKKysgICAgICAgIHRyeSAgeworKyAgICAgICAgICAgIFVucmVsYXRlZEV4Y2VwdGlvblRo cm93ZXIgZSgwKTsKKysgICAgICAgICAgICBlLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIH0g Y2F0Y2ggKGNvbnN0IFFVbmhhbmRsZWRFeGNlcHRpb24gJikgeworKyAgICAgICAgICAgIGNhdWdo dCA9IHRydWU7CisrICAgICAgICB9CisrICAgICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90 IGdldCBleGNlcHRpb24iKTsKKysgICAgfQorIH0KKyAKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9x dGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3FidWZmZXIvdHN0X3FidWZmZXIuY3BwIGIvcXRi YXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xYnVmZmVyL3RzdF9xYnVmZmVyLmNwcAoraW5kZXgg NDk2ODc0MjExMC4uZjRjM2ZiNzExZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2Nv cmVsaWIvaW8vcWJ1ZmZlci90c3RfcWJ1ZmZlci5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRv L2NvcmVsaWIvaW8vcWJ1ZmZlci90c3RfcWJ1ZmZlci5jcHAKK0BAIC00Miw2ICs0Miw3IEBAIHBy aXZhdGUgc2xvdHM6CisgICAgIHZvaWQgd3JpdGVCbG9ja19kYXRhKCk7CisgICAgIHZvaWQgd3Jp dGVCbG9jaygpOworICAgICB2b2lkIHNlZWsoKTsKKysgICAgdm9pZCBpbnZhbGlkU2Vla3MoKTsK KyAgICAgdm9pZCBzZWVrVGVzdF9kYXRhKCk7CisgICAgIHZvaWQgc2Vla1Rlc3QoKTsKKyAgICAg dm9pZCByZWFkX3Jhd2RhdGEoKTsKK0BAIC0yODYsNiArMjg3LDI5IEBAIHZvaWQgdHN0X1FCdWZm ZXI6OnNlZWsoKQorICAgICBRQ09NUEFSRShidWZmZXIuc2l6ZSgpLCBwb3MpOworIH0KKyAKKyt2 b2lkIHRzdF9RQnVmZmVyOjppbnZhbGlkU2Vla3MoKQorK3sKKysgICAgaWYgY29uc3RleHByIChz aXplb2YocXNpemV0eXBlKSA9PSBzaXplb2YocWludDY0KSkgeworKyAgICAgICAgLy8gc2l6ZW9m KHFzaXpldHlwZSkgPT0gc2l6ZW9mKHFpbnQ2NCksIHNvICsxIHdvdWxkIG92ZXJmbG93CisrICAg ICAgICBRU0tJUCgiVGhpcyBpcyBhIDMyLWJpdC1vbmx5IHRlc3QuIik7CisrICAgIH0gZWxzZSB7 CisrICAgICAgICBRQnVmZmVyIGJ1ZmZlcjsKKysgICAgICAgIGJ1ZmZlci5vcGVuKFFJT0Rldmlj ZTo6V3JpdGVPbmx5KTsKKysgICAgICAgIFFDT01QQVJFKGJ1ZmZlci5idWZmZXIoKS5zaXplKCks IHFzaXpldHlwZSgwKSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIucG9zKCksIHFpbnQ2NCgw KSk7CisrICAgICAgICBjb25zdGV4cHIgcWludDY0IE1heFFCeXRlQXJyYXlDYXBhY2l0eSA9IChz dGQ6Om51bWVyaWNfbGltaXRzPHFzaXpldHlwZT46Om1heCkoKTsKKysgICAgICAgIC8vIHRoaXMg c2hvdWxkIGZhaWwgZmFzdCwgbm90IGFmdGVyIHRyeWluZyB0byBhbGxvY2F0ZSBuZWFybHkgMiBH aUIgb2YgZGF0YSwKKysgICAgICAgIC8vIHBvdGVudGlhbGx5IGNyYXNoaW5nIGluIHRoZSBwcm9j ZXNzOgorKyAgICAgICAgUVZFUklGWSghYnVmZmVyLnNlZWsoMiAqIE1heFFCeXRlQXJyYXlDYXBh Y2l0eSAtIDEpKTsKKysgICAgICAgIFFDT01QQVJFKGJ1ZmZlci5idWZmZXIoKS5zaXplKCksIHFz aXpldHlwZSgwKSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIucG9zKCksIHFpbnQ2NCgwKSk7 CisrICAgICAgICAvLyBkaXR0bzoKKysgICAgICAgIFFWRVJJRlkoIWJ1ZmZlci5zZWVrKE1heFFC eXRlQXJyYXlDYXBhY2l0eSArIDEpKTsKKysgICAgICAgIFFDT01QQVJFKGJ1ZmZlci5idWZmZXIo KS5zaXplKCksIHFzaXpldHlwZSgwKSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIucG9zKCks IHFpbnQ2NCgwKSk7CisrICAgIH0KKyt9CisrCisgdm9pZCB0c3RfUUJ1ZmZlcjo6c2Vla1Rlc3Rf ZGF0YSgpCisgeworICAgICB3cml0ZUJsb2NrX2RhdGEoKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv dGVzdHMvYXV0by9jb3JlbGliL2lvL3Fpb2RldmljZS90c3RfcWlvZGV2aWNlLmNwcCBiL3F0YmFz ZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWlvZGV2aWNlL3RzdF9xaW9kZXZpY2UuY3BwCitpbmRl eCBkYTUzMjc1OTRjLi40YTA0ZTBmN2M2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8v Y29yZWxpYi9pby9xaW9kZXZpY2UvdHN0X3Fpb2RldmljZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0 cy9hdXRvL2NvcmVsaWIvaW8vcWlvZGV2aWNlL3RzdF9xaW9kZXZpY2UuY3BwCitAQCAtNTYxLDcg KzU2MSw4IEBAIHByb3RlY3RlZDoKKyAgICAgcWludDY0IHJlYWREYXRhKGNoYXIgKmRhdGEsIHFp bnQ2NCBtYXhTaXplKSBvdmVycmlkZQorICAgICB7CisgICAgICAgICBtYXhTaXplID0gcU1pbiht YXhTaXplLCBxaW50NjQoYnVmLT5zaXplKCkgLSBvZmZzZXQpKTsKKy0gICAgICAgIG1lbWNweShk YXRhLCBidWYtPmNvbnN0RGF0YSgpICsgb2Zmc2V0LCBtYXhTaXplKTsKKysgICAgICAgIGlmICht YXhTaXplID4gMCkKKysgICAgICAgICAgICBtZW1jcHkoZGF0YSwgYnVmLT5jb25zdERhdGEoKSAr IG9mZnNldCwgbWF4U2l6ZSk7CisgICAgICAgICBvZmZzZXQgKz0gbWF4U2l6ZTsKKyAgICAgICAg IHJldHVybiBtYXhTaXplOworICAgICB9CitAQCAtNjA0LDEzICs2MDUsMTUgQEAgcHJvdGVjdGVk OgorICAgICBxaW50NjQgcmVhZERhdGEoY2hhciAqZGF0YSwgcWludDY0IG1heFNpemUpIG92ZXJy aWRlCisgICAgIHsKKyAgICAgICAgIG1heFNpemUgPSBxTWluKG1heFNpemUsIHFpbnQ2NChidWYu c2l6ZSgpIC0gcG9zKCkpKTsKKy0gICAgICAgIG1lbWNweShkYXRhLCBidWYuY29uc3REYXRhKCkg KyBwb3MoKSwgbWF4U2l6ZSk7CisrICAgICAgICBpZiAobWF4U2l6ZSA+IDApCisrICAgICAgICAg ICAgbWVtY3B5KGRhdGEsIGJ1Zi5jb25zdERhdGEoKSArIHBvcygpLCBtYXhTaXplKTsKKyAgICAg ICAgIHJldHVybiBtYXhTaXplOworICAgICB9CisgICAgIHFpbnQ2NCB3cml0ZURhdGEoY29uc3Qg Y2hhciAqZGF0YSwgcWludDY0IG1heFNpemUpIG92ZXJyaWRlCisgICAgIHsKKyAgICAgICAgIG1h eFNpemUgPSBxTWluKG1heFNpemUsIHFpbnQ2NChidWYuc2l6ZSgpIC0gcG9zKCkpKTsKKy0gICAg ICAgIG1lbWNweShidWYuZGF0YSgpICsgcG9zKCksIGRhdGEsIG1heFNpemUpOworKyAgICAgICAg aWYgKG1heFNpemUgPiAwKQorKyAgICAgICAgICAgIG1lbWNweShidWYuZGF0YSgpICsgcG9zKCks IGRhdGEsIG1heFNpemUpOworICAgICAgICAgcmV0dXJuIG1heFNpemU7CisgICAgIH0KKyAKK2Rp ZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJv Y2Vzcy5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJv Y2Vzcy5jcHAKK2luZGV4IGRiNjBiZWFkNjQuLmYzNDVhNDQ0MTQgMTAwNjQ0CistLS0gYS9xdGJh c2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAKKysrKyBi L3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcXByb2Nlc3MvdHN0X3Fwcm9jZXNzLmNwcAor QEAgLTEsNyArMSw4IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorICoqIENvcHlyaWdo dCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCistKiogQ29weXJpZ2h0IChDKSAyMDIwIElu dGVsIENvcnBvcmF0aW9uLgorKyoqIENvcHlyaWdodCAoQykgMjAyMCBUaGUgUXQgQ29tcGFueSBM dGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIyIEludGVsIENvcnBvcmF0aW9uLgorICoqIENvbnRh Y3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSB0ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTE1MCw2ICsxNTEs OCBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHN0YXJ0U3RvcFN0YXJ0U3RvcEJ1ZmZlcnMo KTsKKyAgICAgdm9pZCBwcm9jZXNzRXZlbnRzSW5BUmVhZHlSZWFkU2xvdF9kYXRhKCk7CisgICAg IHZvaWQgcHJvY2Vzc0V2ZW50c0luQVJlYWR5UmVhZFNsb3QoKTsKKysgICAgdm9pZCBzdGFydEZy b21DdXJyZW50V29ya2luZ0Rpcl9kYXRhKCk7CisrICAgIHZvaWQgc3RhcnRGcm9tQ3VycmVudFdv cmtpbmdEaXIoKTsKKyAKKyAgICAgLy8ga2VlcCB0aGVzZSBhdCB0aGUgZW5kLCBzaW5jZSB0aGV5 IHVzZSBsb3RzIG9mIHByb2Nlc3NlcyBhbmQgc29tZXRpbWVzCisgICAgIC8vIGNhdXNlZCBvYnNj dXJlIGZhaWx1cmVzIHRvIG9jY3VyIGluIHRlc3RzIHRoYXQgZm9sbG93ZWQgdGhlbSAoZXNwLiBv biB0aGUgTWFjKQorQEAgLTI3MzEsNSArMjczNCw5NCBAQCB2b2lkIHRzdF9RUHJvY2Vzczo6Zmlu aXNoUHJvY2Vzc0JlZm9yZVJlYWRpbmdEb25lX2RlcHJlY2F0ZWQoKQorIAorICNlbmRpZgorIAor K2VudW0gY2xhc3MgQ2hkaXJNb2RlIHsKKysgICAgTm9uZSA9IDAsCisrICAgIEluUGFyZW50LAor KyAgICBJbkNoaWxkCisrfTsKKytRX0RFQ0xBUkVfTUVUQVRZUEUoQ2hkaXJNb2RlKQorKworK3Zv aWQgdHN0X1FQcm9jZXNzOjpzdGFydEZyb21DdXJyZW50V29ya2luZ0Rpcl9kYXRhKCkKKyt7Cisr ICAgIHFSZWdpc3Rlck1ldGFUeXBlPENoZGlyTW9kZT4oKTsKKysgICAgUVRlc3Q6OmFkZENvbHVt bjxRU3RyaW5nPigicHJvZ3JhbVByZWZpeCIpOworKyAgICBRVGVzdDo6YWRkQ29sdW1uPENoZGly TW9kZT4oImNoZGlyTW9kZSIpOworKyAgICBRVGVzdDo6YWRkQ29sdW1uPGJvb2w+KCJzdWNjZXNz Iik7CisrCisrICAgIGNvbnN0ZXhwciBib29sIElzV2luZG93cyA9IHRydWUKKysjaWZkZWYgUV9P U19VTklYCisrICAgICAgICAgICAgJiYgZmFsc2UKKysjZW5kaWYKKysgICAgICAgICAgICA7Cisr CisrICAgIC8vIGJhc2VsaW5lOiB0cnlpbmcgdG8gZXhlY3V0ZSB0aGUgZGlyZWN0b3J5LCB0aGlz IGNhbid0IHBvc3NpYmx5IHN1Y2NlZWQhCisrICAgIFFUZXN0OjpuZXdSb3coInBsYWluLXNhbWUt Y3dkIikgPDwgUVN0cmluZygpIDw8IENoZGlyTW9kZTo6Tm9uZSA8PCBmYWxzZTsKKysKKysgICAg Ly8gY3Jvc3MtcGxhdGZvcm0gYmVoYXZpb3I6IG5laXRoZXIgT1Mgc2VhcmNoZXMgdGhlIHNldFdv cmtpbmdEaXJlY3RvcnkoKQorKyAgICAvLyBkaXIgd2l0aG91dCAiLi8iCisrICAgIFFUZXN0Ojpu ZXdSb3coInBsYWluLWNoaWxkLWNoZGlyIikgPDwgUVN0cmluZygpIDw8IENoZGlyTW9kZTo6SW5D aGlsZCA8PCBmYWxzZTsKKysKKysgICAgLy8gY3Jvc3MtcGxhdGZvcm0gYmVoYXZpb3I6IGJvdGgg T1NlcyBzZWFyY2ggdGhlIHBhcmVudCdzIENXRCB3aXRoICIuLyIKKysgICAgUVRlc3Q6Om5ld1Jv dygicHJlZml4ZWQtcGFyZW50LWNoZGlyIikgPDwgIi4vIiA8PCBDaGRpck1vZGU6OkluUGFyZW50 IDw8IHRydWU7CisrCisrICAgIC8vIG9wcG9zaXRlIGJlaGF2aW9yczogV2luZG93cyBzZWFyY2hl cyB0aGUgcGFyZW50J3MgQ1dEIGFuZCBVbml4IHNlYXJjaGVzCisrICAgIC8vIHRoZSBjaGlsZCdz IHdpdGggIi4vIgorKyAgICBRVGVzdDo6bmV3Um93KCJwcmVmaXhlZC1jaGlsZC1jaGRpciIpIDw8 ICIuLyIgPDwgQ2hkaXJNb2RlOjpJbkNoaWxkIDw8ICFJc1dpbmRvd3M7CisrCisrICAgIC8vIFdp bmRvd3Mgc2VhcmNoZXMgdGhlIHBhcmVudCdzIENXRCB3aXRob3V0ICIuLyIKKysgICAgUVRlc3Q6 Om5ld1JvdygicGxhaW4tcGFyZW50LWNoZGlyIikgPDwgUVN0cmluZygpIDw8IENoZGlyTW9kZTo6 SW5QYXJlbnQgPDwgSXNXaW5kb3dzOworK30KKysKKyt2b2lkIHRzdF9RUHJvY2Vzczo6c3RhcnRG cm9tQ3VycmVudFdvcmtpbmdEaXIoKQorK3sKKysgICAgUUZFVENIKFFTdHJpbmcsIHByb2dyYW1Q cmVmaXgpOworKyAgICBRRkVUQ0goQ2hkaXJNb2RlLCBjaGRpck1vZGUpOworKyAgICBRRkVUQ0go Ym9vbCwgc3VjY2Vzcyk7CisrCisrICAgIFFQcm9jZXNzIHByb2Nlc3M7CisrICAgIHFSZWdpc3Rl ck1ldGFUeXBlPFFQcm9jZXNzOjpQcm9jZXNzRXJyb3I+KCk7CisrICAgIFFTaWduYWxTcHkgZXJy b3JTcHkoJnByb2Nlc3MsICZRUHJvY2Vzczo6ZXJyb3JPY2N1cnJlZCk7CisrICAgIFFWRVJJRlko ZXJyb3JTcHkuaXNWYWxpZCgpKTsKKysKKysgICAgLy8gYm90aCB0aGUgZGlyIG5hbWUgYW5kIHRo ZSBleGVjdXRhYmxlIG5hbWUKKysgICAgY29uc3QgUVN0cmluZyB0YXJnZXQgPSBRU3RyaW5nTGl0 ZXJhbCgidGVzdFByb2Nlc3NOb3JtYWwiKTsKKysgICAgcHJvY2Vzcy5zZXRQcm9ncmFtKHByb2dy YW1QcmVmaXggKyB0YXJnZXQpOworKworKyNpZmRlZiBRX09TX1VOSVgKKysgICAgLy8gUmVzZXQg UEFUSCwgdG8gYmUgc3VyZSBpdCBkb2Vzbid0IGNvbnRhaW4gLiBvciB0aGUgZW1wdHkgcGF0aC4K KysgICAgLy8gV2UgY2FuJ3QgZG8gdGhpcyBvbiBXaW5kb3dzIGJlY2F1c2UgRExMcyBhcmUgc2Vh cmNoZWQgaW4gUEFUSAorKyAgICAvLyBhbmQgV2luZG93cyBhbHdheXMgc2VhcmNoZXMgIi4iIGFu eXdheS4KKysgICAgYXV0byByZXN0b3JlRW52ID0gcVNjb3BlR3VhcmQoW29sZCA9IHFnZXRlbnYo IlBBVEgiKV0geworKyAgICAgICAgcXB1dGVudigiUEFUSCIsIG9sZCk7CisrICAgIH0pOworKyAg ICBxcHV0ZW52KCJQQVRIIiwgIi8iKTsKKysjZW5kaWYKKysKKysgICAgc3dpdGNoIChjaGRpck1v ZGUpIHsKKysgICAgY2FzZSBDaGRpck1vZGU6OkluUGFyZW50OiB7CisrICAgICAgICBhdXRvIHJl c3RvcmVDd2QgPSBxU2NvcGVHdWFyZChbb2xkID0gUURpcjo6Y3VycmVudFBhdGgoKV0geworKyAg ICAgICAgICAgIFFEaXI6OnNldEN1cnJlbnQob2xkKTsKKysgICAgICAgIH0pOworKyAgICAgICAg UVZFUklGWShRRGlyOjpzZXRDdXJyZW50KHRhcmdldCkpOworKyAgICAgICAgcHJvY2Vzcy5zdGFy dCgpOworKyAgICAgICAgYnJlYWs7CisrICAgIH0KKysgICAgY2FzZSBDaGRpck1vZGU6OkluQ2hp bGQ6CisrICAgICAgICBwcm9jZXNzLnNldFdvcmtpbmdEaXJlY3RvcnkodGFyZ2V0KTsKKysgICAg ICAgIFFfRkFMTFRIUk9VR0goKTsKKysgICAgY2FzZSBDaGRpck1vZGU6Ok5vbmU6CisrICAgICAg ICBwcm9jZXNzLnN0YXJ0KCk7CisrICAgICAgICBicmVhazsKKysgICAgfQorKworKyAgICBRQ09N UEFSRShwcm9jZXNzLndhaXRGb3JTdGFydGVkKCksIHN1Y2Nlc3MpOworKyAgICBRQ09NUEFSRShl cnJvclNweS5jb3VudCgpLCBpbnQoIXN1Y2Nlc3MpKTsKKysgICAgaWYgKHN1Y2Nlc3MpIHsKKysg ICAgICAgIFFWRVJJRlkocHJvY2Vzcy53YWl0Rm9yRmluaXNoZWQoKSk7CisrICAgIH0gZWxzZSB7 CisrICAgICAgICBRQ09NUEFSRShwcm9jZXNzLmVycm9yKCksIFFQcm9jZXNzOjpGYWlsZWRUb1N0 YXJ0KTsKKysgICAgfQorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RUHJvY2VzcykKKyAjaW5jbHVk ZSAidHN0X3Fwcm9jZXNzLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3Jl bGliL2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC90c3RfcWNvbmNhdGVu YXRldGFibGVzcHJveHltb2RlbC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2l0ZW1t b2RlbHMvcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC90c3RfcWNvbmNhdGVuYXRldGFibGVz cHJveHltb2RlbC5jcHAKK2luZGV4IGUxZWE3YTQ1NTIuLjkwOTcyY2FhNTcgMTAwNjQ0CistLS0g YS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFibGVz cHJveHltb2RlbC90c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5jcHAKKysrKyBiL3F0 YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaXRlbW1vZGVscy9xY29uY2F0ZW5hdGV0YWJsZXNwcm94 eW1vZGVsL3RzdF9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsLmNwcAorQEAgLTExNyw2ICsx MTcsNyBAQCBwcml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgc2hvdWxkUHJvcGFnYXRlRHJvcEFm dGVyTGFzdFJvd19kYXRhKCk7CisgICAgIHZvaWQgc2hvdWxkUHJvcGFnYXRlRHJvcEFmdGVyTGFz dFJvdygpOworICAgICB2b2lkIHF0YnVnOTE3ODgoKTsKKysgICAgdm9pZCBxdGJ1ZzkxODc4KCk7 CisgCisgcHJpdmF0ZToKKyAgICAgUVN0YW5kYXJkSXRlbU1vZGVsIG1vZDsKK0BAIC04NDMsNiAr ODQ0LDIyIEBAIHZvaWQgdHN0X1FDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWw6OnF0YnVnOTE3 ODgoKQorICAgICBRQ09NUEFSRShwcm94eUNvbmNhdC5jb2x1bW5Db3VudCgpLCAwKTsKKyB9Cisg Cisrdm9pZCB0c3RfUUNvbmNhdGVuYXRlVGFibGVzUHJveHlNb2RlbDo6cXRidWc5MTg3OCgpCisr eworKyAgICBRU3RhbmRhcmRJdGVtTW9kZWwgbTsKKysgICAgbS5zZXRSb3dDb3VudCg0KTsKKysg ICAgbS5zZXRDb2x1bW5Db3VudCg0KTsKKysKKysgICAgUUNvbmNhdGVuYXRlVGFibGVzUHJveHlN b2RlbCBwbTsKKysgICAgUVNvcnRGaWx0ZXJQcm94eU1vZGVsIHByb3h5RmlsdGVyOworKyAgICBw cm94eUZpbHRlci5zZXRTb3VyY2VNb2RlbCgmcG0pOworKyAgICBwcm94eUZpbHRlci5zZXRGaWx0 ZXJGaXhlZFN0cmluZygic29tZXRoaW5nIik7CisrICAgIHBtLmFkZFNvdXJjZU1vZGVsKCZtKTsg IC8vIFRoaXMgc2hvdWxkIG5vdCBhc3NlcnQKKysKKysgICAgUUNPTVBBUkUocG0uY29sdW1uQ291 bnQoKSwgNCk7CisrICAgIFFDT01QQVJFKHBtLnJvd0NvdW50KCksIDQpOworK30KKysKKyBRVEVT VF9HVUlMRVNTX01BSU4odHN0X1FDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWwpCisgCisgI2lu Y2x1ZGUgInRzdF9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsLm1vYyIKK2RpZmYgLS1naXQg YS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2tlcm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0LmNw cCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIva2VybmVsL3FvYmplY3QvdHN0X3FvYmplY3Qu Y3BwCitpbmRleCA5YmQ2NmMwODM1Li5lZDRhMGJhZTVkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rl c3RzL2F1dG8vY29yZWxpYi9rZXJuZWwvcW9iamVjdC90c3RfcW9iamVjdC5jcHAKKysrKyBiL3F0 YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIva2VybmVsL3FvYmplY3QvdHN0X3FvYmplY3QuY3BwCitA QCAtMTU4LDYgKzE1OCw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgbnVsbFJlY2VpdmVy KCk7CisgICAgIHZvaWQgZnVuY3RvclJlZmVyZW5jZXNDb25uZWN0aW9uKCk7CisgICAgIHZvaWQg ZGlzY29ubmVjdERpc2Nvbm5lY3RzKCk7CisrICAgIHZvaWQgZGVjbGFyYXRpdmVEYXRhKCk7Cisg fTsKKyAKKyBzdHJ1Y3QgUU9iamVjdENyZWF0ZWRPblNodXRkb3duCitAQCAtNzY3OSw1ICs3Njgw LDgxIEBAIHZvaWQgdHN0X1FPYmplY3Q6OmRpc2Nvbm5lY3REaXNjb25uZWN0cygpCisgUV9TVEFU SUNfQVNTRVJUKFF0UHJpdmF0ZTo6SGFzUV9PQkpFQ1RfTWFjcm88dHN0X1FPYmplY3Q+OjpWYWx1 ZSk7CisgUV9TVEFUSUNfQVNTRVJUKCFRdFByaXZhdGU6Okhhc1FfT0JKRUNUX01hY3JvPFNpYmxp bmdEZWxldGVyPjo6VmFsdWUpOworIAorKyNpZmRlZiBRVF9CVUlMRF9JTlRFUk5BTAorKy8qCisr ICAgIFNpbmNlIFFPYmplY3RQcml2YXRlIHN0b3JlcyB0aGUgZGVjbGFyYXRpdmVEYXRhIHBvaW50 ZXIgaW4gYSB1bmlvbiB3aXRoIHRoZSBwb2ludGVyCisrICAgIHRvIHRoZSBjdXJyZW50bHkgZGVz dHJveWVkIGNoaWxkLCBjYWxscyB0byB0aGUgUXREZWNsYXJhdGl2ZSBoYW5kbGVycyBuZWVkIHRv IGJlCisrICAgIGNvcnJlY3RseSBndWFyZGVkLiBRVEJVRy0xMDUyODYKKysqLworK25hbWVzcGFj ZSBRdERlY2xhcmF0aXZlIHsKKytzdGF0aWMgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhICp0aGVE YXRhOworKworK3N0YXRpYyB2b2lkIGRlc3Ryb3llZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGEg KmRhdGEsIFFPYmplY3QgKikKKyt7CisrICAgIFFDT01QQVJFKGRhdGEsIHRoZURhdGEpOworK30K KytzdGF0aWMgdm9pZCBzaWduYWxFbWl0dGVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqZGF0 YSwgUU9iamVjdCAqLCBpbnQsIHZvaWQgKiopCisreworKyAgICBRQ09NUEFSRShkYXRhLCB0aGVE YXRhKTsKKyt9CisrLy8gd2UgY2FuJ3QgdXNlIFFDT01QQVJFIGluIHRoZSBuZXh0IHR3byBmdW5j dGlvbnMsIGFzIHRoZXkgZG9uJ3QgcmV0dXJuIHZvaWQKKytzdGF0aWMgaW50IHJlY2VpdmVycyhR QWJzdHJhY3REZWNsYXJhdGl2ZURhdGEgKmRhdGEsIGNvbnN0IFFPYmplY3QgKiwgaW50KQorK3sK KysgICAgUVRlc3Q6OnFDb21wYXJlKGRhdGEsIHRoZURhdGEsICJkYXRhIiwgInRoZURhdGEiLCBf X0ZJTEVfXywgX19MSU5FX18pOworKyAgICByZXR1cm4gMDsKKyt9Cisrc3RhdGljIGJvb2wgaXNT aWduYWxDb25uZWN0ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhICpkYXRhLCBjb25zdCBRT2Jq ZWN0ICosIGludCkKKyt7CisrICAgIFFUZXN0OjpxQ29tcGFyZShkYXRhLCB0aGVEYXRhLCAiZGF0 YSIsICJ0aGVEYXRhIiwgX19GSUxFX18sIF9fTElORV9fKTsKKysgICAgcmV0dXJuIHRydWU7Cisr fQorKworK2NsYXNzIE9iamVjdCA6IHB1YmxpYyBRT2JqZWN0CisreworKyAgICBRX09CSkVDVAor K3B1YmxpYzoKKysgICAgdXNpbmcgUU9iamVjdDo6UU9iamVjdDsKKysgICAgfk9iamVjdCgpCisr ICAgIHsKKysgICAgICAgIGlmIChPYmplY3QgKnAgPSBzdGF0aWNfY2FzdDxPYmplY3QgKj4ocGFy ZW50KCkpKQorKyAgICAgICAgICAgIHAtPmVtaXRTaWduYWwoKTsKKysgICAgfQorKworKyAgICB2 b2lkIGVtaXRTaWduYWwoKQorKyAgICB7CisrICAgICAgICBlbWl0IHRoZVNpZ25hbCgpOworKyAg ICB9CisrCisrc2lnbmFsczoKKysgICAgdm9pZCB0aGVTaWduYWwoKTsKKyt9OworKworK30KKysj ZW5kaWYKKysKKyt2b2lkIHRzdF9RT2JqZWN0OjpkZWNsYXJhdGl2ZURhdGEoKQorK3sKKysjaWZk ZWYgUVRfQlVJTERfSU5URVJOQUwKKysgICAgUVNjb3BlZFZhbHVlUm9sbGJhY2sgZGVzdHJveWVk KFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6ZGVzdHJveWVkLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUXREZWNsYXJhdGl2ZTo6ZGVzdHJveWVkKTsKKysgICAgUVNjb3Bl ZFZhbHVlUm9sbGJhY2sgc2lnbmFsRW1pdHRlZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnNp Z25hbEVtaXR0ZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXRE ZWNsYXJhdGl2ZTo6c2lnbmFsRW1pdHRlZCk7CisrICAgIFFTY29wZWRWYWx1ZVJvbGxiYWNrIHJl Y2VpdmVycyhRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnJlY2VpdmVycywKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFF0RGVjbGFyYXRpdmU6OnJlY2VpdmVycyk7CisrICAg IFFTY29wZWRWYWx1ZVJvbGxiYWNrIGlzU2lnbmFsQ29ubmVjdGVkKFFBYnN0cmFjdERlY2xhcmF0 aXZlRGF0YTo6aXNTaWduYWxDb25uZWN0ZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFF0RGVjbGFyYXRpdmU6OmlzU2lnbmFsQ29ubmVjdGVkKTsKKysKKysg ICAgUXREZWNsYXJhdGl2ZTo6T2JqZWN0IHA7CisrICAgIFFPYmplY3RQcml2YXRlICpwcml2ID0g UU9iamVjdFByaXZhdGU6OmdldCgmcCk7CisrICAgIHByaXYtPmRlY2xhcmF0aXZlRGF0YSA9IFF0 RGVjbGFyYXRpdmU6OnRoZURhdGEgPSBuZXcgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOworKwor KyAgICBjb25uZWN0KCZwLCAmUXREZWNsYXJhdGl2ZTo6T2JqZWN0Ojp0aGVTaWduYWwsICZwLCBb XXsKKysgICAgfSk7CisrCisrICAgIFF0RGVjbGFyYXRpdmU6Ok9iamVjdCAqY2hpbGQgPSBuZXcg UXREZWNsYXJhdGl2ZTo6T2JqZWN0OworKyAgICBjaGlsZC0+c2V0UGFyZW50KCZwKTsKKysjZW5k aWYKKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUU9iamVjdCkKKyAjaW5jbHVkZSAidHN0X3FvYmpl Y3QubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5cGVz L3FtaW1lZGF0YWJhc2UvdHN0X3FtaW1lZGF0YWJhc2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8v Y29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS90c3RfcW1pbWVkYXRhYmFzZS5jcHAKK2lu ZGV4IDBlYTQyMmVjYmMuLjFhMzI1NjUzNGIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0 by9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlL3RzdF9xbWltZWRhdGFiYXNlLmNwcAor KysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS90 c3RfcW1pbWVkYXRhYmFzZS5jcHAKK0BAIC03MCwxNSArNzAsMTUgQEAgc3RhdGljIGlubGluZSBR U3RyaW5nIHRlc3RTdWl0ZVdhcm5pbmcoKQorIAorICAgICBRU3RyaW5nIHJlc3VsdDsKKyAgICAg UVRleHRTdHJlYW0gc3RyKCZyZXN1bHQpOworLSAgICBzdHIgPDwgIlxuQ2Fubm90IGZpbmQgdGhl IHNoYXJlZC1taW1lLWluZm8gdGVzdCBzdWl0ZVxuc3RhcnRpbmcgZnJvbTogIgorKyAgICBzdHIg PDwgIlxuQ2Fubm90IGZpbmQgdGhlIHNoYXJlZC1taW1lLWluZm8gdGVzdCBzdWl0ZVxuaW4gdGhl IHBhcmVudCBvZjogIgorICAgICAgICAgPDwgUURpcjo6dG9OYXRpdmVTZXBhcmF0b3JzKFFEaXI6 OmN1cnJlbnRQYXRoKCkpIDw8ICJcbiIKKyAgICAgICAgICAgICJjZCAiIDw8IFFEaXI6OnRvTmF0 aXZlU2VwYXJhdG9ycyhRU3RyaW5nTGl0ZXJhbCgidGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBl cy9xbWltZWRhdGFiYXNlIikpIDw8ICJcbiIKKy0gICAgICAgICAgICJ3Z2V0IGh0dHA6Ly9jZ2l0 LmZyZWVkZXNrdG9wLm9yZy94ZGcvc2hhcmVkLW1pbWUtaW5mby9zbmFwc2hvdC9SZWxlYXNlLTEt MTAuemlwXG4iCistICAgICAgICAgICAidW56aXAgUmVsZWFzZS0xLTEwLnppcFxuIjsKKysgICAg ICAgICAgICJ3Z2V0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy94ZGcvc2hhcmVkLW1p bWUtaW5mby8tL2FyY2hpdmUvMi4xL3NoYXJlZC1taW1lLWluZm8tMi4xLnppcFxuIgorKyAgICAg ICAgICAgInVuemlwIHNoYXJlZC1taW1lLWluZm8tMi4xLnppcFxuIjsKKyAjaWZkZWYgUV9PU19X SU4KKy0gICAgc3RyIDw8ICJta2RpciB0ZXN0ZmlsZXNcbnhjb3B5IC9zIFJlbGVhc2UtMS0xMCBz LW0taVxuIjsKKysgICAgc3RyIDw8ICJta2RpciB0ZXN0ZmlsZXNcbnhjb3B5IC9zIHNoYXJlZC1t aW1lLWluZm8tMi4xIHMtbS1pXG4iOworICNlbHNlCistICAgIHN0ciA8PCAibG4gLXMgUmVsZWFz ZS0xLTEwIHMtbS1pXG4iOworKyAgICBzdHIgPDwgImxuIC1zIHNoYXJlZC1taW1lLWluZm8tMi4x IHMtbS1pXG4iOworICNlbmRpZgorICAgICByZXR1cm4gcmVzdWx0OworIH0KK0BAIC0xNTQsNyAr MTU0LDcgQEAgdm9pZCB0c3RfUU1pbWVEYXRhYmFzZTo6aW5pdFRlc3RDYXNlKCkKKyAgICAgUVZF UklGWTIoY29weVJlc291cmNlRmlsZSh4bWxGaWxlTmFtZSwgeG1sVGFyZ2V0RmlsZU5hbWUsICZl cnJvck1lc3NhZ2UpLCBxUHJpbnRhYmxlKGVycm9yTWVzc2FnZSkpOworICNlbmRpZgorIAorLSAg ICBtX3Rlc3RTdWl0ZSA9IFFGSU5EVEVTVERBVEEoInMtbS1pL3Rlc3RzIik7CisrICAgIG1fdGVz dFN1aXRlID0gUUZJTkRURVNUREFUQSgicy1tLWkvdGVzdHMvbWltZS1kZXRlY3Rpb24iKTsKKyAg ICAgaWYgKG1fdGVzdFN1aXRlLmlzRW1wdHkoKSkKKyAgICAgICAgIHFXYXJuaW5nKCIlcyIsIHFQ cmludGFibGUodGVzdFN1aXRlV2FybmluZygpKSk7CisgCitAQCAtNjExLDcgKzYxMSw3IEBAIHZv aWQgdHN0X1FNaW1lRGF0YWJhc2U6OmFsbE1pbWVUeXBlcygpCisgICAgIFFWRVJJRlkoIWxzdC5p c0VtcHR5KCkpOworIAorICAgICAvLyBIYXJkY29kaW5nIHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRv IGNoZWNrIGJvdGggcHJvdmlkZXJzIGZpbmQgdGhlIHNhbWUgbnVtYmVyIG9mIG1pbWV0eXBlcy4K Ky0gICAgUUNPTVBBUkUobHN0LmNvdW50KCksIDc3OSk7CisrICAgIFFDT01QQVJFKGxzdC5jb3Vu dCgpLCA4MTEpOworIAorICAgICBmb3JlYWNoIChjb25zdCBRTWltZVR5cGUgJm1pbWUsIGxzdCkg eworICAgICAgICAgY29uc3QgUVN0cmluZyBuYW1lID0gbWltZS5uYW1lKCk7CitAQCAtNjMxLDEw ICs2MzEsOSBAQCB2b2lkIHRzdF9RTWltZURhdGFiYXNlOjpzdWZmaXhlc19kYXRhKCkKKyAKKyAg ICAgUVRlc3Q6Om5ld1JvdygibWltZXR5cGUgd2l0aCBhIHNpbmdsZSBwYXR0ZXJuIikgPDwgImFw cGxpY2F0aW9uL3BkZiIgPDwgIioucGRmIiA8PCAicGRmIjsKKyAgICAgUVRlc3Q6Om5ld1Jvdygi bWltZXR5cGUgd2l0aCBtdWx0aXBsZSBwYXR0ZXJucyIpIDw8ICJhcHBsaWNhdGlvbi94LWtwcmVz ZW50ZXIiIDw8ICIqLmtwcjsqLmtwdCIgPDwgImtwciI7CistICAgIFFUZXN0OjpuZXdSb3coImpw ZWciKSA8PCAiaW1hZ2UvanBlZyIgPDwgIiouanBlOyouanBnOyouanBlZyIgPDwgImpwZWciOwor LSAgICAvL2lmIChLTWltZVR5cGU6OnNoYXJlZE1pbWVJbmZvVmVyc2lvbigpID4gS0RFX01BS0Vf VkVSU0lPTigwLCA2MCwgMCkpIHsKKy0gICAgICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdp dGggbWFueSBwYXR0ZXJucyIpIDw8ICJhcHBsaWNhdGlvbi92bmQud29yZHBlcmZlY3QiIDw8ICIq LndwOyoud3A0Oyoud3A1Oyoud3A2Oyoud3BkOyoud3BwIiA8PCAid3AiOworLSAgICAvL30KKysg ICAgLy8gVGhlIHByZWZlcnJlZCBzdWZmaXggZm9yIGltYWdlL2pwZWcgaXMgKi5qcGcsIGFzIHBl ciBodHRwczovL2J1Z3Mua2RlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NzM3CisrICAgIFFUZXN0 OjpuZXdSb3coImpwZWciKSA8PCAiaW1hZ2UvanBlZyIgPDwgIiouanBlOyouanBnOyouanBlZyIg PDwgImpwZyI7CisrICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggbWFueSBwYXR0ZXJu cyIpIDw8ICJhcHBsaWNhdGlvbi92bmQud29yZHBlcmZlY3QiIDw8ICIqLndwOyoud3A0Oyoud3A1 Oyoud3A2Oyoud3BkOyoud3BwIiA8PCAid3AiOworICAgICBRVGVzdDo6bmV3Um93KCJvYXNpcyB0 ZXh0IG1pbWV0eXBlIikgPDwgImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4 dCIgPDwgIioub2R0IiA8PCAib2R0IjsKKyAgICAgUVRlc3Q6Om5ld1Jvdygib2FzaXMgcHJlc2Vu dGF0aW9uIG1pbWV0eXBlIikgPDwgImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQu cHJlc2VudGF0aW9uIiA8PCAiKi5vZHAiIDw8ICJvZHAiOworICAgICBRVGVzdDo6bmV3Um93KCJt aW1ldHlwZSB3aXRoIG11bHRpcGxlIHBhdHRlcm5zIikgPDwgInRleHQvcGxhaW4iIDw8ICIqLmFz YzsqLnR4dDsqLHYiIDw8ICJ0eHQiOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2Nv cmVsaWIvc2VyaWFsaXphdGlvbi9qc29uL3RzdF9xdGpzb24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vY29yZWxpYi9zZXJpYWxpemF0aW9uL2pzb24vdHN0X3F0anNvbi5jcHAKK2luZGV4IDNlNThk ZDAzY2MuLmM4ZjgyZWY1ZDUgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGli L3NlcmlhbGl6YXRpb24vanNvbi90c3RfcXRqc29uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vY29yZWxpYi9zZXJpYWxpemF0aW9uL2pzb24vdHN0X3F0anNvbi5jcHAKK0BAIC0xNzYsNiAr MTc2LDggQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIGZyb21Ub1ZhcmlhbnRDb252ZXJz aW9uc19kYXRhKCk7CisgICAgIHZvaWQgZnJvbVRvVmFyaWFudENvbnZlcnNpb25zKCk7CisgCisr ICAgIHZvaWQgbm9MZWFrT25OYW1lQ2xhc2goKTsKKysKKyBwcml2YXRlOgorICAgICBRU3RyaW5n IHRlc3REYXRhRGlyOworIH07CitAQCAtMzY4NSw1ICszNjg3LDIzIEBAIHZvaWQgdHN0X1F0SnNv bjo6ZnJvbVRvVmFyaWFudENvbnZlcnNpb25zKCkKKyAgICAgfQorIH0KKyAKKyt2b2lkIHRzdF9R dEpzb246Om5vTGVha09uTmFtZUNsYXNoKCkKKyt7CisrICAgIFFKc29uRG9jdW1lbnQgZG9jID0g UUpzb25Eb2N1bWVudDo6ZnJvbUpzb24oIntcIlwiOntcIlwiOjB9LFwiXCI6MH0iKTsKKysgICAg UVZFUklGWSghZG9jLmlzTnVsbCgpKTsKKysgICAgY29uc3QgUUpzb25PYmplY3Qgb2JqID0gZG9j Lm9iamVjdCgpOworKworKyAgICAvLyBSZW1vdmVkIHRoZSBkdXBsaWNhdGUga2V5LgorKyAgICBR Q09NUEFSRShvYmoubGVuZ3RoKCksIDEpOworKworKyAgICAvLyBSZXRhaW5lZCB0aGUgbGFzdCBv ZiB0aGUgZHVwbGljYXRlcy4KKysgICAgY29uc3QgUUpzb25WYWx1ZSB2YWwgPSBvYmouYmVnaW4o KS52YWx1ZSgpOworKyAgICBRVkVSSUZZKHZhbC5pc0RvdWJsZSgpKTsKKysgICAgUUNPTVBBUkUo dmFsLnRvRG91YmxlKCksIDAuMCk7CisrCisrICAgIC8vIEl0IHNob3VsZCBub3QgbGVhay4KKysg ICAgLy8gSW4gcGFydGljdWxhciBpdCBzaG91bGQgbm90IGZvcmdldCB0byBkZXJlZiB0aGUgY29u dGFpbmVyIGZvciB0aGUgaW5uZXIgb2JqZWN0LgorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RdEpz b24pCisgI2luY2x1ZGUgInRzdF9xdGpzb24ubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0 cy9hdXRvL2NvcmVsaWIvdGltZS9xdGltZXpvbmUvdHN0X3F0aW1lem9uZS5jcHAgYi9xdGJhc2Uv dGVzdHMvYXV0by9jb3JlbGliL3RpbWUvcXRpbWV6b25lL3RzdF9xdGltZXpvbmUuY3BwCitpbmRl eCBhNTliNThkNTdmLi4yNDFjM2U4NGFjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8v Y29yZWxpYi90aW1lL3F0aW1lem9uZS90c3RfcXRpbWV6b25lLmNwcAorKysrIGIvcXRiYXNlL3Rl c3RzL2F1dG8vY29yZWxpYi90aW1lL3F0aW1lem9uZS90c3RfcXRpbWV6b25lLmNwcAorQEAgLTYz LDYgKzYzLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBpc1ZhbGlkSWRfZGF0YSgpOwor ICAgICB2b2lkIGlzVmFsaWRJZCgpOworICAgICB2b2lkIG1hbGZvcm1lZCgpOworKyAgICB2b2lk IHNlcmlhbGl6ZSgpOworICAgICAvLyBCYWNrZW5kIHRlc3RzCisgICAgIHZvaWQgdXRjVGVzdCgp OworICAgICB2b2lkIGljdVRlc3QoKTsKK0BAIC05NDcsNiArOTQ4LDMzIEBAIHZvaWQgdHN0X1FU aW1lWm9uZTo6bWFsZm9ybWVkKCkKKyAgICAgICAgIGJhcmYub2Zmc2V0RnJvbVV0Yyhub3cpOwor IH0KKyAKKyt2b2lkIHRzdF9RVGltZVpvbmU6OnNlcmlhbGl6ZSgpCisreworKyAgICBpbnQgcGFy dHMgPSAwOworKyNpZm5kZWYgUVRfTk9fREVCVUdfU1RSRUFNCisrICAgIHFEZWJ1ZygpIDw8IFFU aW1lWm9uZSgpOyAvLyB0byB2ZXJpZnkgbm8gY3Jhc2gKKysgICAgcGFydHMrKzsKKysjZW5kaWYK KysjaWZuZGVmIFFUX05PX0RBVEFTVFJFQU0KKysgICAgUUJ5dGVBcnJheSBibG9iOworKyAgICB7 CisrICAgICAgICBRRGF0YVN0cmVhbSBzdHJlYW0oJmJsb2IsIFFJT0RldmljZTo6V3JpdGVPbmx5 KTsKKysgICAgICAgIHN0cmVhbSA8PCBRVGltZVpvbmUoIkV1cm9wZS9Pc2xvIikgPDwgUVRpbWVa b25lKDQyMCkgPDwgUVRpbWVab25lKCkgPDwgcWludDY0KC0xKTsKKysgICAgfQorKyAgICBRRGF0 YVN0cmVhbSBzdHJlYW0oJmJsb2IsIFFJT0RldmljZTo6UmVhZE9ubHkpOworKyAgICBRVGltZVpv bmUgaW52YWxpZCwgb2Zmc2V0LCBvc2xvOworKyAgICBxaW50NjQgbWludXNvbmU7CisrICAgIHN0 cmVhbSA+PiBvc2xvID4+IG9mZnNldCA+PiBpbnZhbGlkID4+IG1pbnVzb25lOworKyAgICBRQ09N UEFSRShvc2xvLCBRVGltZVpvbmUoIkV1cm9wZS9Pc2xvIikpOworKyAgICBRQ09NUEFSRShvZmZz ZXQsIFFUaW1lWm9uZSg0MjApKTsKKysgICAgUVZFUklGWSghaW52YWxpZC5pc1ZhbGlkKCkpOwor KyAgICBRQ09NUEFSRShtaW51c29uZSwgcWludDY0KC0xKSk7CisrICAgIHBhcnRzKys7CisrI2Vu ZGlmCisrICAgIGlmICghcGFydHMpCisrICAgICAgICBRU0tJUCgiTm8gc2VyaWFsaXphdGlvbiBl bmFibGVkIik7CisrfQorKworIHZvaWQgdHN0X1FUaW1lWm9uZTo6dXRjVGVzdCgpCisgeworICNp ZmRlZiBRVF9CVUlMRF9JTlRFUk5BTAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2Ri dXMvcWRidXNpbnRlcmZhY2UvdHN0X3FkYnVzaW50ZXJmYWNlLmNwcCBiL3F0YmFzZS90ZXN0cy9h dXRvL2RidXMvcWRidXNpbnRlcmZhY2UvdHN0X3FkYnVzaW50ZXJmYWNlLmNwcAoraW5kZXggMDU0 ODBjNmRkMi4uNzBmNGM3NTc1NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2RidXMv cWRidXNpbnRlcmZhY2UvdHN0X3FkYnVzaW50ZXJmYWNlLmNwcAorKysrIGIvcXRiYXNlL3Rlc3Rz L2F1dG8vZGJ1cy9xZGJ1c2ludGVyZmFjZS90c3RfcWRidXNpbnRlcmZhY2UuY3BwCitAQCAtMzI0 LDYgKzMyNCwxMyBAQCB2b2lkIHRzdF9RREJ1c0ludGVyZmFjZTo6bm90VmFsaWQoKQorIAorICAg ICBRVkVSSUZZKCFpbnRlcmZhY2UuaXNWYWxpZCgpKTsKKyAgICAgUVZFUklGWSghUU1ldGFPYmpl Y3Q6Omludm9rZU1ldGhvZCgmaW50ZXJmYWNlLCAiTGlzdE5hbWVzIiwgUXQ6OkRpcmVjdENvbm5l Y3Rpb24pKTsKKysKKysgICAgLy8gV2l0aCBhIGNvbm5lY3Rpb24sIGJ1dCBlbXB0eS9udWxsIHNl cnZpY2UgYW5kIHBhdGggc3BlY2lmaWVkCisrICAgIFFEQnVzQ29ubmVjdGlvbiBjb24gPSBRREJ1 c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKTsKKysgICAgUVZFUklGWShjb24uaXNDb25uZWN0ZWQo KSk7CisrICAgIFFEQnVzSW50ZXJmYWNlIGlmYWNlKHt9LCB7fSwge30sIGNvbik7CisrICAgIFFW RVJJRlkoIWlmYWNlLmlzVmFsaWQoKSk7CisrICAgIFFWRVJJRlkoIVFNZXRhT2JqZWN0OjppbnZv a2VNZXRob2QoJmludGVyZmFjZSwgIkxpc3ROYW1lcyIsIFF0OjpEaXJlY3RDb25uZWN0aW9uKSk7 CisgfQorIAorIHZvaWQgdHN0X1FEQnVzSW50ZXJmYWNlOjpub3RWYWxpZERlcml2ZWQoKQorZGlm ZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlL3RzdF9x a2V5c2VxdWVuY2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2VxdWVu Y2UvdHN0X3FrZXlzZXF1ZW5jZS5jcHAKK2luZGV4IDg3NDQ2OGM5NTQuLjA0Y2ViNGFiNjUgMTAw NjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS90c3Rf cWtleXNlcXVlbmNlLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5 c2VxdWVuY2UvdHN0X3FrZXlzZXF1ZW5jZS5jcHAKK0BAIC01MDcsNiArNTA3LDEwIEBAIHZvaWQg dHN0X1FLZXlTZXF1ZW5jZTo6dG9TdHJpbmdGcm9tS2V5Y29kZV9kYXRhKCkKKyAgICAgUVRlc3Q6 Om5ld1JvdygiQ3RybCtBbHQrTnVtK0RlbCIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6Q29udHJvbE1v ZGlmaWVyIHwgUXQ6OkFsdE1vZGlmaWVyIHwgUXQ6OktleXBhZE1vZGlmaWVyIHwgUXQ6OktleV9E ZWxldGUpIDw8ICJDdHJsK0FsdCtOdW0rRGVsIjsKKyAgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCtJ bnMiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OkNvbnRyb2xNb2RpZmllciB8IFF0OjpLZXlfSW5zZXJ0 KSA8PCAiQ3RybCtJbnMiOworICAgICBRVGVzdDo6bmV3Um93KCJDdHJsK051bStJbnMoMSkiKSA8 PCBRS2V5U2VxdWVuY2UoUXQ6OktleV9JbnNlcnQgfCBRdDo6S2V5cGFkTW9kaWZpZXIgfCBRdDo6 Q29udHJvbE1vZGlmaWVyKSA8PCAiQ3RybCtOdW0rSW5zIjsKKysgICAgUVRlc3Q6Om5ld1Jvdygi Q3RybCIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6S2V5X0NvbnRyb2wpIDw8ICJDb250cm9sIjsKKysg ICAgUVRlc3Q6Om5ld1JvdygiQWx0IikgPDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfQWx0KSA8PCAi QWx0IjsKKysgICAgUVRlc3Q6Om5ld1JvdygiU2hpZnQiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6Oktl eV9TaGlmdCkgPDwgIlNoaWZ0IjsKKysgICAgUVRlc3Q6Om5ld1JvdygiTWV0YSIpIDw8IFFLZXlT ZXF1ZW5jZShRdDo6S2V5X01ldGEpIDw8ICJNZXRhIjsKKyB9CisgCisgdm9pZCB0c3RfUUtleVNl cXVlbmNlOjp0b1N0cmluZ0Zyb21LZXljb2RlKCkKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMv YXV0by9ndWkvdGV4dC9xZm9udGRhdGFiYXNlL3RzdF9xZm9udGRhdGFiYXNlLmNwcCBiL3F0YmFz ZS90ZXN0cy9hdXRvL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2UuY3Bw CitpbmRleCAxNWUwZWNhZGFhLi5iNGVjYTc0MjgzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3Rz L2F1dG8vZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS90c3RfcWZvbnRkYXRhYmFzZS5jcHAKKysrKyBi L3F0YmFzZS90ZXN0cy9hdXRvL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJh c2UuY3BwCitAQCAtODEsNiArODEsOCBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHJlZ2lz dGVyT3BlblR5cGVQcmVmZXJyZWROYW1lc1N5c3RlbSgpOworICAgICB2b2lkIHJlZ2lzdGVyT3Bl blR5cGVQcmVmZXJyZWROYW1lc0FwcGxpY2F0aW9uKCk7CisgCisrICAgIHZvaWQgc3RyZXRjaFJl c3BlY3RlZCgpOworKworIHByaXZhdGU6CisgICAgIFFTdHJpbmcgbV9sZWRGb250OworICAgICBR U3RyaW5nIG1fdGVzdEZvbnQ7CitAQCAtMzU1LDYgKzM1NywyOCBAQCBzdGF0aWMgUVN0cmluZyB0 ZXN0U3RyaW5nKCkKKyAgICAgcmV0dXJuIFFTdHJpbmdMaXRlcmFsKCJmb28gYmFyIik7CisgfQor IAorK3ZvaWQgdHN0X1FGb250RGF0YWJhc2U6OnN0cmV0Y2hSZXNwZWN0ZWQoKQorK3sKKysgICAg aW50IGl0YWxpY0lkID0gUUZvbnREYXRhYmFzZTo6YWRkQXBwbGljYXRpb25Gb250KG1fdGVzdEZv bnRJdGFsaWMpOworKyAgICBRVkVSSUZZKGl0YWxpY0lkICE9IC0xKTsKKysKKysgICAgUVZFUklG WSghUUZvbnREYXRhYmFzZTo6YXBwbGljYXRpb25Gb250RmFtaWxpZXMoaXRhbGljSWQpLmlzRW1w dHkoKSk7CisrCisrICAgIFFTdHJpbmcgaXRhbGljRm9udE5hbWUgPSBRRm9udERhdGFiYXNlOjph cHBsaWNhdGlvbkZvbnRGYW1pbGllcyhpdGFsaWNJZCkuZmlyc3QoKTsKKysKKysgICAgUUZvbnQg aXRhbGljRm9udCA9IFFGb250RGF0YWJhc2UoKS5mb250KGl0YWxpY0ZvbnROYW1lLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZzo6ZnJvbUxhdGlu MSgiSXRhbGljIiksIDE0KTsKKysgICAgUVZFUklGWShpdGFsaWNGb250Lml0YWxpYygpKTsKKysK KysgICAgUUZvbnQgaXRhbGljU3RyZXRjaGVkRm9udCA9IGl0YWxpY0ZvbnQ7CisrICAgIGl0YWxp Y1N0cmV0Y2hlZEZvbnQuc2V0U3RyZXRjaCggNDAwICk7CisrCisrICAgIFFWRVJJRlkoUUZvbnRN ZXRyaWNzRihpdGFsaWNGb250KS5ob3Jpem9udGFsQWR2YW5jZShRU3RyaW5nTGl0ZXJhbCgiZm9v YmFyIikpIDwKKysgICAgICAgICAgICBRRm9udE1ldHJpY3NGKGl0YWxpY1N0cmV0Y2hlZEZvbnQp Lmhvcml6b250YWxBZHZhbmNlKFFTdHJpbmdMaXRlcmFsKCJmb29iYXIiKSkpOworKworKyAgICBR Rm9udERhdGFiYXNlOjpyZW1vdmVBcHBsaWNhdGlvbkZvbnQoaXRhbGljSWQpOworK30KKysKKyB2 b2lkIHRzdF9RRm9udERhdGFiYXNlOjpjb25kZW5zZWRGb250V2lkdGhOb0ZvbnRNZXJnaW5nKCkK KyB7CisgICAgIGludCByZWd1bGFyRm9udElkID0gUUZvbnREYXRhYmFzZTo6YWRkQXBwbGljYXRp b25Gb250KG1fdGVzdEZvbnQpOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdv cmsvYWNjZXNzL3FuZXR3b3JrcmVwbHkvdHN0X3FuZXR3b3JrcmVwbHkuY3BwIGIvcXRiYXNlL3Rl c3RzL2F1dG8vbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdvcmtyZXBseS5j cHAKK2luZGV4IDNkNGEwOTRjNDMuLmI0MjNlMTFhOTkgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVz dHMvYXV0by9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5L3RzdF9xbmV0d29ya3JlcGx5LmNw cAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseS90 c3RfcW5ldHdvcmtyZXBseS5jcHAKK0BAIC0yODEsNiArMjgxLDcgQEAgcHJpdmF0ZSBRX1NMT1RT OgorICAgICB2b2lkIGlvR2V0RnJvbUZpbGVTcGVjaWFsKCk7CisgICAgIHZvaWQgaW9HZXRGcm9t RmlsZV9kYXRhKCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRmlsZSgpOworKyAgICB2b2lkIGlvR2V0 RnJvbUZpbGVVcmwoKTsKKyAgICAgdm9pZCBpb0dldEZyb21GdHBfZGF0YSgpOworICAgICB2b2lk IGlvR2V0RnJvbUZ0cCgpOworICAgICB2b2lkIGlvR2V0RnJvbUZ0cFdpdGhSZXVzZSgpOworQEAg LTMzMDAsNiArMzMwMSwxOCBAQCB2b2lkIHRzdF9RTmV0d29ya1JlcGx5Ojppb0dldEZyb21GaWxl KCkKKyAgICAgUUNPTVBBUkUocmVhZGVyLmRhdGEsIGRhdGEpOworIH0KKyAKKyt2b2lkIHRzdF9R TmV0d29ya1JlcGx5Ojppb0dldEZyb21GaWxlVXJsKCkKKyt7CisrICAgIC8vIFRoaXMgaW1tZWRp YXRlbHkgZmFpbHMgb24gbm9uLXdpbmRvd3MgcGxhdGZvcm1zOgorKyAgICBRTmV0d29ya1JlcXVl c3QgcmVxdWVzdChRVXJsKCJmaWxlOi8vdW5jLXNlcnZlci9zb21lL3BhdGgiKSk7CisrICAgIFFO ZXR3b3JrUmVwbHlQdHIgcmVwbHkobWFuYWdlci5nZXQocmVxdWVzdCkpOworKyAgICBRU2lnbmFs U3B5IGZpbmlzaGVkU3B5KHJlcGx5LmdldCgpLCAmUU5ldHdvcmtSZXBseTo6ZmluaXNoZWQpOwor KyAgICAvLyBRVEJVRy0xMDU2MTg6IFRoaXMgd291bGQsIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3Jt cywgbmV2ZXIgaGFwcGVuIGJlY2F1c2UgdGhlIHNpZ25hbAorKyAgICAvLyB3YXMgZW1pdHRlZCBi ZWZvcmUgdGhlIGNvbnN0cnVjdG9yIGZpbmlzaGVkLCBsZWF2aW5nIG5vIGNoYW5jZSBhdCBhbGwg dG8gY29ubmVjdCB0byB0aGUKKysgICAgLy8gc2lnbmFsCisrICAgIFFWRVJJRlkoZmluaXNoZWRT cHkud2FpdCgpKTsKKyt9CisrCisgdm9pZCB0c3RfUU5ldHdvcmtSZXBseTo6aW9HZXRGcm9tRnRw X2RhdGEoKQorIHsKKyAgICAgUVRlc3Q6OmFkZENvbHVtbjxRU3RyaW5nPigiZmlsZU5hbWUiKTsK K2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2Nl cnRzL2ZsdWtlLmNlcnQgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0 L2NlcnRzL2ZsdWtlLmNlcnQKK2luZGV4IDA2OWZhNmIzNDEuLjRjYzRkOWE1ZWEgMTAwNjQ0Cist LS0gYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtl LmNlcnQKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2Vy dHMvZmx1a2UuY2VydAorQEAgLTEsNzUgKzEsMzQgQEAKKy1DZXJ0aWZpY2F0ZToKKy0gICAgRGF0 YToKKy0gICAgICAgIFZlcnNpb246IDMgKDB4MikKKy0gICAgICAgIFNlcmlhbCBOdW1iZXI6IDAg KDB4MCkKKy0gICAgICAgIFNpZ25hdHVyZSBBbGdvcml0aG06IHNoYTFXaXRoUlNBRW5jcnlwdGlv bgorLSAgICAgICAgSXNzdWVyOiBDPU5PLCBTVD1Pc2xvLCBMPU55ZGFsZW4sIE89Tm9raWEgQ29y cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLCBPVT1EZXZlbG9wbWVudCwgQ049 Zmx1a2UudHJvbGwubm8vZW1haWxBZGRyZXNzPWFoYW5zc2VuQHRyb2xsdGVjaC5jb20KKy0gICAg ICAgIFZhbGlkaXR5CistICAgICAgICAgICAgTm90IEJlZm9yZTogRGVjICA0IDAxOjEwOjMyIDIw MDcgR01UCistICAgICAgICAgICAgTm90IEFmdGVyIDogQXByIDIxIDAxOjEwOjMyIDIwMzUgR01U CistICAgICAgICBTdWJqZWN0OiBDPU5PLCBTVD1Pc2xvLCBPPU5va2lhIENvcnBvcmF0aW9uIGFu ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKSwgT1U9RGV2ZWxvcG1lbnQsIENOPWZsdWtlLnRyb2xs Lm5vCistICAgICAgICBTdWJqZWN0IFB1YmxpYyBLZXkgSW5mbzoKKy0gICAgICAgICAgICBQdWJs aWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlwdGlvbgorLSAgICAgICAgICAgIFJTQSBQdWJsaWMg S2V5OiAoMTAyNCBiaXQpCistICAgICAgICAgICAgICAgIE1vZHVsdXMgKDEwMjQgYml0KToKKy0g ICAgICAgICAgICAgICAgICAgIDAwOmE3OmM4OmEwOjRhOmM0OjE5OjA1OjFiOjY2OmJhOjMyOmUy OmQyOmYxOgorLSAgICAgICAgICAgICAgICAgICAgMWM6NmY6MTc6ODI6ZTQ6Mzk6MmU6MDE6NTE6 OTA6ZGI6MDQ6MzQ6MzI6MTE6CistICAgICAgICAgICAgICAgICAgICAyMTpjMjowZDo2Zjo1OTpk ODo1Mzo5MDo1NDozZjo4Mzo4ZjphOTpkMzpiMzoKKy0gICAgICAgICAgICAgICAgICAgIGQ1OmVl OjFhOjliOjgwOmFlOmMzOjI1OmM5OjVlOmE1OmFmOjRiOjYwOjA1OgorLSAgICAgICAgICAgICAg ICAgICAgYWE6YTA6ZDE6OTE6MDE6MWY6Y2E6MDQ6ODM6ZTM6NTg6MWM6OTk6MzI6NDU6CistICAg ICAgICAgICAgICAgICAgICA4NDo3MDo3Mjo1ODowMzo5ODo0YTo2Mzo4Yjo0MTpmNTowODo0OTpk Mjo5MToKKy0gICAgICAgICAgICAgICAgICAgIDAyOjYwOjZiOmU0OjY0OmZlOmRkOmEwOmFhOjc0 OjA4OmU5OjM0OjRjOjkxOgorLSAgICAgICAgICAgICAgICAgICAgNWY6MTI6M2Q6Mzc6NGQ6NTQ6 MmM6YWQ6N2Y6NWI6OTg6NjA6MzY6MDI6OGM6CistICAgICAgICAgICAgICAgICAgICAzYjpmNjo0 NTpmMzoyNzo2YTo5Yjo5NDo5ZAorLSAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4 MTAwMDEpCistICAgICAgICBYNTA5djMgZXh0ZW5zaW9uczoKKy0gICAgICAgICAgICBYNTA5djMg QmFzaWMgQ29uc3RyYWludHM6IAorLSAgICAgICAgICAgICAgICBDQTpGQUxTRQorLSAgICAgICAg ICAgIE5ldHNjYXBlIENvbW1lbnQ6IAorLSAgICAgICAgICAgICAgICBPcGVuU1NMIEdlbmVyYXRl ZCBDZXJ0aWZpY2F0ZQorLSAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVy OiAKKy0gICAgICAgICAgICAgICAgMjE6ODU6MDQ6M0Q6MjM6MDE6NjY6RTU6Rjc6OUY6MUE6ODQ6 MjQ6OEE6QUY6MEE6Nzk6RjQ6RTU6QUMKKy0gICAgICAgICAgICBYNTA5djMgQXV0aG9yaXR5IEtl eSBJZGVudGlmaWVyOiAKKy0gICAgICAgICAgICAgICAgRGlyTmFtZTovQz1OTy9TVD1Pc2xvL0w9 TnlkYWxlbi9PPU5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS9P VT1EZXZlbG9wbWVudC9DTj1mbHVrZS50cm9sbC5uby9lbWFpbEFkZHJlc3M9YWhhbnNzZW5AdHJv bGx0ZWNoLmNvbQorLSAgICAgICAgICAgICAgICBzZXJpYWw6OEU6QTg6QjQ6RTg6OTE6Qjc6NTQ6 MkUKKy0KKy0gICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCist ICAgICAgICA2ZDo1Nzo1ZjpkMTowNTo0MzpmMDo2MjowNTplYzoyYTo3MTphNTpkYzoxOTowODpm MjpjNDoKKy0gICAgICAgIGE2OmJkOmJiOjI1OmQ5OmNhOjg5OjAxOjBlOmU0OmNmOjFmOmMxOjhj OmM4OjI0OjE4OjM1OgorLSAgICAgICAgNTM6NTk6N2I6YzA6NDM6YjQ6MzI6ZTY6OTg6YjI6YTY6 ZWY6MTU6MDU6MGI6NDg6NWY6ZTE6CistICAgICAgICBhMDowYzo5NzphOTphMTo3NzpkODozNTox ODozMDpiYzphOTo4ZjpkMzpiNzo1NDpjNzpmMToKKy0gICAgICAgIGE5OjllOjVkOmU2OjE5OmJm OmY2OjNjOjViOjJiOmQ4OmU0OjNlOjYyOjE4Ojg4OjhiOmQzOgorLSAgICAgICAgMjQ6ZTE6NDA6 OWI6MGM6ZTY6Mjk6MTY6NjI6YWI6ZWE6MDU6MjQ6NzA6MzY6YWE6NTU6OTM6CistICAgICAgICBl ZjowMjo4MToxYjoyMzoxMDphMjowNDplYjo1Njo5NTo3NTpmYzpmODo5NDpiMTo1ZDo0MjoKKy0g ICAgICAgIGM1OjNmOjM2OjQ0Ojg1OjVkOjNhOjJlOjkwOjQ2OjhhOmEyOmI5OjZmOjg3OmFlOjBj OjE1OgorLSAgICAgICAgNDA6MTk6MzE6OTA6ZmM6M2I6MjU6YmI6YWU6ZjE6NjY6MTM6MGQ6ODU6 OTA6ZDk6NDk6MzQ6CistICAgICAgICA4ZjpmMjo1ZDpmOTo3YTpkYjo0ZDo1ZDoyNzpmNjo3Njo5 ZDozNTo4YzowNjphNjo0YzphMzoKKy0gICAgICAgIGIxOmIyOmI2OjZmOjFkOmQ3OmEzOjAwOmZk OjcyOmViOjllOmVhOjQ0OmExOmFmOjIxOjM0OgorLSAgICAgICAgN2Q6Yzc6NDI6ZTI6NDk6OTE6 MTk6OGI6YzA6YWQ6YmE6ODI6ODA6YTg6NzE6NzA6ZjQ6MzU6CistICAgICAgICAzMTo5MTo2Mzo4 NDoyMDo5NTplOTo2MDphZjo2NDo4YjpjYzpmZjozZDo4YTo3Njo3NDozZDoKKy0gICAgICAgIGM4 OjU1OjZkOmU0OjhlOmMzOjJiOjFjOmU4OjQyOjE4OmFlOjlmOmU2OjZiOjljOjM0OjA2OgorLSAg ICAgICAgZWM6NmE6ZjI6YzMKKyAtLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KKy1NSUlFRXpD Q0F2dWdBd0lCQWdJQkFEQU5CZ2txaGtpRzl3MEJBUVVGQURDQm5ERUxNQWtHQTFVRUJoTUNUazh4 CistRFRBTEJnTlZCQWdUQkU5emJHOHhFREFPQmdOVkJBY1RCMDU1WkdGc1pXNHhGakFVQmdOVkJB b1REVlJ5YjJ4cworLWRHVmphQ0JCVTBFeEZEQVNCZ05WQkFzVEMwUmxkbVZzYjNCdFpXNTBNUmN3 RlFZRFZRUURFdzVtYkhWclpTNTAKKy1jbTlzYkM1dWJ6RWxNQ01HQ1NxR1NJYjNEUUVKQVJZV1lX aGhibk56Wlc1QWRISnZiR3gwWldOb0xtTnZiVEFlCistRncwd056RXlNRFF3TVRFd016SmFGdzB6 TlRBME1qRXdNVEV3TXpKYU1HTXhDekFKQmdOVkJBWVRBazVQTVEwdworLUN3WURWUVFJRXdSUGMy eHZNUll3RkFZRFZRUUtFdzFVY205c2JIUmxZMmdnUVZOQk1SUXdFZ1lEVlFRTEV3dEUKKy1aWFps Ykc5d2JXVnVkREVYTUJVR0ExVUVBeE1PWm14MWEyVXVkSEp2Ykd3dWJtOHdnWjh3RFFZSktvWklo dmNOCistQVFFQkJRQURnWTBBTUlHSkFvR0JBS2ZJb0VyRUdRVWJacm95NHRMeEhHOFhndVE1TGdG UmtOc0VORElSSWNJTgorLWIxbllVNUJVUDRPUHFkT3oxZTRhbTRDdXd5WEpYcVd2UzJBRnFxRFJr UUVmeWdTRDQxZ2NtVEpGaEhCeVdBT1kKKy1TbU9MUWZVSVNkS1JBbUJyNUdUKzNhQ3FkQWpwTkV5 Ulh4STlOMDFVTEsxL1c1aGdOZ0tNTy9aRjh5ZHFtNVNkCistQWdNQkFBR2pnZ0VhTUlJQkZqQUpC Z05WSFJNRUFqQUFNQ3dHQ1dDR1NBR0crRUlCRFFRZkZoMVBjR1Z1VTFOTQorLUlFZGxibVZ5WVhS bFpDQkRaWEowYVdacFkyRjBaVEFkQmdOVkhRNEVGZ1FVSVlVRVBTTUJadVgzbnhxRUpJcXYKKy1D bm4wNWF3d2dic0dBMVVkSXdTQnN6Q0JzS0dCb3FTQm56Q0JuREVMTUFrR0ExVUVCaE1DVGs4eERU QUxCZ05WCistQkFnVEJFOXpiRzh4RURBT0JnTlZCQWNUQjA1NVpHRnNaVzR4RmpBVUJnTlZCQW9U RFZSeWIyeHNkR1ZqYUNCQgorLVUwRXhGREFTQmdOVkJBc1RDMFJsZG1Wc2IzQnRaVzUwTVJjd0ZR WURWUVFERXc1bWJIVnJaUzUwY205c2JDNXUKKy1iekVsTUNNR0NTcUdTSWIzRFFFSkFSWVdZV2ho Ym5OelpXNUFkSEp2Ykd4MFpXTm9MbU52YllJSkFJNm90T2lSCistdDFRdU1BMEdDU3FHU0liM0RR RUJCUVVBQTRJQkFRQnRWMS9SQlVQd1lnWHNLbkdsM0JrSThzU212YnNsMmNxSgorLUFRN2t6eC9C ak1na0dEVlRXWHZBUTdReTVwaXlwdThWQlF0SVgrR2dESmVwb1hmWU5SZ3d2S21QMDdkVXgvR3AK Ky1ubDNtR2IvMlBGc3IyT1ErWWhpSWk5TWs0VUNiRE9ZcEZtS3I2Z1VrY0RhcVZaUHZBb0ViSXhD aUJPdFdsWFg4CistK0pTeFhVTEZQelpFaFYwNkxwQkdpcUs1YjRldURCVkFHVEdRL0RzbHU2N3ha aE1OaFpEWlNUU1A4bDM1ZXR0TgorLVhTZjJkcDAxakFhbVRLT3hzclp2SGRlakFQMXk2NTdxUktH dklUUjl4MExpU1pFWmk4Q3R1b0tBcUhGdzlEVXgKKy1rV09FSUpYcFlLOWtpOHovUFlwMmREM0lW VzNranNNckhPaENHSzZmNW11Y05BYnNhdkxECisrTUlJRjZ6Q0NBOU9nQXdJQkFnSVVmbzlhbUp0 SkdXcVdFNmYrU2tBTzg1emtHcjR3RFFZSktvWklodmNOQVFFTAorK0JRQXdnWU14Q3pBSkJnTlZC QVlUQWs1UE1RMHdDd1lEVlFRSURBUlBjMnh2TVEwd0N3WURWUVFIREFSUGMyeHYKKytNUmN3RlFZ RFZRUUtEQTVVYUdVZ1VYUWdRMjl0Y0dGdWVURU1NQW9HQTFVRUN3d0RVaVpFTVJJd0VBWURWUVFE CisrREFsSU1pQlVaWE4wWlhJeEd6QVpCZ2txaGtpRzl3MEJDUUVXREcxcGJtbHRhVUJ4ZEM1cGJ6 QWdGdzB5TURFdworK01qWXhNakF4TXpGYUdBOHlNVEl3TVRBd01qRXlNREV6TVZvd2dZTXhDekFK QmdOVkJBWVRBazVQTVEwd0N3WUQKKytWUVFJREFSUGMyeHZNUTB3Q3dZRFZRUUhEQVJQYzJ4dk1S Y3dGUVlEVlFRS0RBNVVhR1VnVVhRZ1EyOXRjR0Z1CisrZVRFTU1Bb0dBMVVFQ3d3RFVpWkVNUkl3 RUFZRFZRUUREQWxJTWlCVVpYTjBaWEl4R3pBWkJna3Foa2lHOXcwQgorK0NRRVdERzFwYm1sdGFV QnhkQzVwYnpDQ0FpSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnSVBBRENDQWdvQ2dnSUIKKytBT2lV cDUrRTRibG91S0g3cStyVk5SOE5vWVgyWGtCVytxK3JweTF6dTVzc1JTemJxeEFqRHg5ZGtodDdR bG5mCisrVmxEVDAwSnZwT1dkZXVQb241OTE1ZWRRUnNZNFVubDZtS0gyOXJhM090VWExL3lDSlhz R1ZKVEtDajdrNEJ4YgorKzVtWnpiL2ZUbFpudE1MZFRJQk1mVWJ3NjJGS2lyMVdqS0ljSjlmQ29H OEphR2VLVk80Umg1cDBlemQ0VVVVSWQKKytyMUJYbDVOcWRxeTJ2VE1zRURuak9zRDNlZ2t2OEky U0tONE82bi9DM3dXWXBNT1dZWmtHb1ppS3o3ckpzL2kvCisrZXo3YnNWN0psd2R6VGxocEp6a2NP U1ZGQlA2SmxFT3hUTk54WjF3dEt5N1B0Wkdtc1NTQVRxMmU2K2J3MzhBZQorK09wMFhuenpxY0dq dEREb2ZCbVQ3T0Z6WldqUzlWWlM2K0RPT2UyUUhXbGUxbkNIY0h5SDRrdTZJUmxzcjl4a1IKKytO QUlsT2ZudkhIeHFKVWVub2VhWjRvUURqQ0JLUzFLWHlnSk8vdEw3QkxUUVZuL3hLMUVtUHZLTm5q eldrNHRSCisrUG5pYlVoaHM1NjM1cXBPVS9ZUHFGQmgxSmpWcnVaYnNXY0RBaFJjZXcwdXhPTlhP YTlFKzRsdHRROXlTWWExQQorK0x2V3FKdUFYN2d1MkJzQk1MeXFmbTgxMVluQTdDSUZNeU8rSGxx bWtMRmZ2NUwveElSQVhSN2wyNllHTzBWd1gKKytDR2pNZno0TlZQTU1rZTRuQjdxYTlOa3BYUUJR S01tczNRemQ1SlcwSHk5UnVqNU84R1BjRlptVjB0d2pkMXVKCisrUEQvY0Fqa1dMYVhqZE5zSjE2 UVdjMm5naFFSUzZIWXFLUlg2aitDWE94dXBBZ01CQUFHalV6QlJNQjBHQTFVZAorK0RnUVdCQlJT Q09VNThqOU5KWmtNYW10NjIzcXlDcmhOM1RBZkJnTlZIU01FR0RBV2dCUlNDT1U1OGo5Tkpaa00K KythbXQ2MjNxeUNyaE4zVEFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVCQ3dV QUE0SUNBUUNxCisrcTRqeHNXZU5EdjVOcTE0aEp0RjlIQitaTDY0emNadFJqSlAxWWdOczBRcHBL SUNtalBPTDJuSU1HbUkvaktycworKzBlR0FMLzlYWE5WSFB4bTFPUE9uY3ZpbU1NbVU2ZW1aZnBN ZEV0VGZLUDQzK1BnOUhnS1JqTG9RcDQwNnZHZVEKKys4a2kvbWJCaHJJdFZQZ0VtM3R1MkFGQTAy WFRZaStZeENJOWtSWkxHa00zRmJndE91VExQbDBaOXkra2lQYzlGCisrdUNTQzAzYW5CRXF2K3ZE U0k4K3dPRHltUS9JSjNKeXoxbHhJUkRmcDRxQWVrbXkwalUyYzkxVk9ISEVtT21xcQorK2txeWdH RlJkd2JlOTltOXlQNjNyNnEwYjVLM1gyVW5KNmJuczBobVR3VGhZd3BWUFhMVThqZGFUZGRiTXVr TjIKKysvRWY5NlRzdzhuV09FT1BNeVNIT1RJUGd3eVpScDI2YjBrQTlFbWhMd09QNDAxU3hYVlFD bVNSbXR3TmFnbXRnCisrakpLbVpvWUJOKy8vRDQ1aWJLOHo2UTBvT205UCtXaGYvdVVYZWhjUnhC eHlWM3h6N2swd0tHUWJIai9kZHdjeQorK0lVb0lONGxyQWxpYitsSzE3MGtUS04zNTJQRG1ycG8y Z21JelBFc2Z1cktBSU1TZWxEbDZIK2tpaDE2QnRaOHkKKytOejZmaDlTb3FyZzNPU0F3YXJlOHB4 VjdrNTFjckJNb1BMTjc4S29SVjhNRkNLNEs3RmRkcTRyUklTcTZoaVhxCisrcjFuc2pvRVB1S005 aHVwcm1aVlplOXQ1WWNEYTJJK3diM0lpRTN1d3BaYkFkYUxEeVE1bjZGL3Fwc2lJa1pYbgorK2d0 Y0Y3b3FwRzVvWXJ3Q2NaNTN5L2V6VWdVZzdQbFN6Mlh3QUd2UXRnZz09CisgLS0tLS1FTkQgQ0VS VElGSUNBVEUtLS0tLQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3Ns L3Fzc2xzb2NrZXQvY2VydHMvZmx1a2Uua2V5IGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9z c2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5rZXkKK2luZGV4IDlkMTY2NGQ2MDkuLjMzN2NlNTQx YTYgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0 L2NlcnRzL2ZsdWtlLmtleQorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNz bHNvY2tldC9jZXJ0cy9mbHVrZS5rZXkKK0BAIC0xLDE1ICsxLDUyIEBACistLS0tLS1CRUdJTiBS U0EgUFJJVkFURSBLRVktLS0tLQorLU1JSUNYQUlCQUFLQmdRQ255S0JLeEJrRkcyYTZNdUxTOFJ4 dkY0TGtPUzRCVVpEYkJEUXlFU0hDRFc5WjJGT1EKKy1WRCtEajZuVHM5WHVHcHVBcnNNbHlWNmxy MHRnQmFxZzBaRUJIOG9FZytOWUhKa3lSWVJ3Y2xnRG1FcGppMEgxCistQ0VuU2tRSmdhK1JrL3Qy Z3FuUUk2VFJNa1Y4U1BUZE5WQ3l0ZjF1WVlEWUNqRHYyUmZNbmFwdVVuUUlEQVFBQgorLUFvR0FO RnpMa2FuVGVTR05GTTB1dHRCaXBGVDlGNGEwMGRxSHo2Sm5PN3pYQVQyNkk1cjhzVTFwcVFCYjZ1 THoKKy0vK1F6NVp3azhSVUFRY3NNUmdKZXR1UFFVYjBKWmpGNkR1djI0aE5henFYQkN1N0FaelVl bmphZndtS0MvOHJpCistS3BYM2ZUd3F6ZnppLy9GS0dnYlhRODB5eWtTU2xpREwza24vZHJBVHhz TENnUUVDUVFEWGhFRldMSjB2VloxcworLTFFa2YrM05JVEUrRFIxNlgrTFE0VzZ2eUVIQWpUYmFO V3RjVEtkQVdMQTJsNk40V0FBUFlTaTZhd20rek14eDQKKy1Wb21WVHNqZEFrRUF4MHorZTduYXRM ZUZjcnJxOHBiVSt3YTZTQVAxVmZoUVdLaXR4TDFlN3UvUU85ME5DcHhFCistb1FZS3pNa21tcE9P RmpRd0VNQXkxZHZGTWJtNExIbGV3UUpBQy9rc0RCYVVjUUhIcWprdEN0clViOHJWakF5VworLUE4 bHNjY2tlQjJmRVl5RzVKNmRKVmFZNENsTk9PczV5TURTMkFmazFGNkgveEt2dFEvNUN6SW5BL1FK QVREdWIKKy1LK0JQVThqTzlxK2dwdUlpM1ZJWmR1cHNzVkdtQ2dPYlZDSExha0c0dU8wNHk5SXlQ aFY5bEE5dEFMdG9JZjRjCistVkl2djVmV0dYQnJaNDhrWkFRSkJBSm1WQ2R6UXhkOUxaSTV2eGlq VUNqNUVJNGUreDVEUnFWVXZ5UDhLQ1pyQworLUFpTnlvRFA4NVQraEJaYVNYSzNhWUdwVndlbHlq M2J2bzFHclROd05XTHc9CistLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0KKystLS0tLUJF R0lOIFBSSVZBVEUgS0VZLS0tLS0KKytNSUlKUWdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NT d3dnZ2tvQWdFQUFvSUNBUURvbEtlZmhPRzVhTGloCisrKzZ2cTFUVWZEYUdGOWw1QVZ2cXZxNmN0 Yzd1YkxFVXMyNnNRSXc4ZlhaSWJlMEpaMzFaUTA5TkNiNlRsblhyagorKzZKK2ZkZVhuVUViR09G SjVlcGloOXZhMnR6clZHdGY4Z2lWN0JsU1V5Z28rNU9BY1crWm1jMi8zMDVXWjdUQzMKKytVeUFU SDFHOE90aFNvcTlWb3lpSENmWHdxQnZDV2huaWxUdUVZZWFkSHMzZUZGRkNIYTlRVjVlVGFuYXN0 cjB6CisrTEJBNTR6ckE5M29KTC9DTmtpamVEdXAvd3Q4Rm1LVERsbUdaQnFHWWlzKzZ5YlA0djNz KzI3RmV5WmNIYzA1WQorK2FTYzVIRGtsUlFUK2laUkRzVXpUY1dkY0xTc3V6N1dScHJFa2dFNnRu dXZtOE4vQUhqcWRGNTg4Nm5CbzdRdzYKKytId1prK3poYzJWbzB2VldVdXZnempudGtCMXBYdFp3 aDNCOGgrSkx1aUVaYksvY1pFVFFDSlRuNTd4eDhhaVZICisrcDZIbW1lS0VBNHdnU2t0U2w4b0NU djdTK3dTMDBGWi84U3RSSmo3eWpaNDgxcE9MVVQ1NG0xSVliT2V0K2FxVAorK2xQMkQ2aFFZZFNZ MWE3bVc3Rm5Bd0lVWEhzTkxzVGpWem12UlB1SmJiVVBja21HdFFDNzFxaWJnRis0THRnYkEKKytU QzhxbjV2TmRXSndPd2lCVE1qdmg1YXBwQ3hYNytTLzhTRVFGMGU1ZHVtQmp0RmNGd2hvekg4K0RW VHpESkh1CisrSndlNm12VFpLVjBBVUNqSnJOME0zZVNWdEI4dlVibytUdkJqM0JXWmxkTGNJM2Ri aVR3LzNBSTVGaTJsNDNUYgorK0NkZWtGbk5wNElVRVV1aDJLaWtWK28vZ2x6c2JxUUlEQVFBQkFv SUNBRncxcTZ0cjVJNDh2WTdERityWHN1TG4KKys1WlVXRTFJUTZmekI0bHI3Mm5Kdi85RUVHbk1n WXp0OVBwTVVzRDZ2ZENwQmdTMkMwKzZSSEFyRnpKdE5BK1JNCisraUhMSUc3Szc3MDJ2ZXlyL3hC eC9Nd2lTbE1lTXYvWHBrRnhWSTZFNnNrTUdHMnMzQU1YeEt2SlR5NUNwUngrSQorK2VRRnlMRytZ YTFYMmxnSmVzL3ErL0NwQUhrT2pDT3BjTHlTUUM1Tlo3NHE3MzRWN25TZG1uK1pzM3RZRWgrTy8K KytlaXV3VFAvajViMzhUZTV2VlRxRHhUY2lKUG1sam1YTEN3YTBOMTAwbFdsYmNwdnc4cWJxaVRJ MkptM1hDYlVFCisrQXpIalc5dm1yRjNjUlMxZlh4S0ZHU2h3M1NScWxrYnhqZmVXb2k4cURQVUJT NG04TE9yOHFHOVdvNU5mb24wegorK3pMUDRiY2kzekhEdlZjYWFacnJzVUJzL3laYmcrRGdrYTFE bVg3ZWttZWNjcjJ5VGRLREZnUHVwWVV5eFZiVGwKKythOVpMSnlzakZEN3JnQnYxWmNsSG9uTHA2 VmJtK1pvVHF2dGVvNGlrQXk2TDlSdEJXSjIzWEVLMzRQa1AvK2M1CisrMnZXWmFPcm5qU2VCSGJG Y2U4Y2RKU3hxV3BQK2VTQ0k1STlYYkRyWUZJc1EvZ3FLZ3R6REt5MmloSjJZOFNUTAorK3lPNGh5 RlBGanhjK0dnNC9QMlBwbVQ1Q1kydHk0NE0wQldzK0pHVzk2Q0pQcnJwbGYybG1RVVFKajVMWlk2 NlgKKytaLzRDOUw3Wll0S1orYnM1U3ZVNDZ5V3VnQXZRWlgyMlhtOXhMWFd5VlhSZHgzYmorM00z ZkRuRjlkaS96ZGJoCisrQ2dMeDdvV1BOclhjN0ZDYWpubjlBb0lCQVFENUZNWXdScHc5TldUOVdE eFF3eCtjU0k0SWNiZDg4QnlUVzYzUworK0x6ZVJ3WkEwSjkvU2Z3TythQlJ1cHpjOUdrR1hDaVpj R013M0FHc0N0aWc4eUZsdzhFNUtuek43S2xmdERNbk0KKys5TlV4eHpsUjhWd0t5TG5aZkc3c0RU bDA1N1psVXVqbnFobXQvRjhGN2RJeTdGVk8xZEUvOG5uZ0ErRllUQ09HCisrVVpkR2p3eUJEbERN MEpKZFVXR1kzeHNsdXRjcENETjVtelNUS2p5OWRyTXZJbUFzaFJhd3hSRjZXQnBuN3ZyMgorK25D NnZjaXFmeDFNengxdnlrMEptMGlsYXlkRGRMTUFEanQvaUw0TmtyMEJFczRrK1V6UWlLRHdwOGd1 N2FiUTEKKytlQmZ4ZDlJYXI0aHRRYTJJMUV3bDZQMDFHL3ErWll3Z0hoSjlSVm40QXhRWGVmSUxB b0lCQVFEdkNvdU9SZFFYCisrQzh3c3lwN013WGxGLzNOUWVOTjUvK0IybWhieHJCT2Y3UG1NQ1hM bmtSV2Nqd0p0enlwV0ZxSjBzcWFpLzIrMAorK2JxYk1jalg1bWFUOHN0VDJzaGwzelhlL0VqdDJl M1RCWXBjMXR5dXNlczhLYjVCTVU4aHU2dFRkM0cyQ01YcEQKKytkVDZEVmVtSlpDVHR3ajlhQk5J eFNpenZsZ01vbEpuQ3B6aFBubGZIU0k2RStnM20vTFRUbzNId2JqTVN3L1VxCisraXJnak9wSTJ3 U0JCNkxaUFNnanZmY1lQUnlXVWsxNkw0QTV1U1gwY0FEbm92REZMYTUvaDB3SnZOL09vQ1NRZwor K3JMQ1hHNUUxOEV5TDVXYzU4QkNZMVp2eG1qRzNsUXRnUHhZdTJKd2MzNlIveS9KS2x4VzVzdUVS NVpOcGJiRDQKKyt1T3lUdDJWeE1RMmJBb0lCQVFDNStNelJGcWRvL0FqZkw1WTVKcmJmVlR6WENU RGEwOXhDR2QxNlpVNjBRVFdOCisrKzRlZC9yK28xc1VLcVVjUkZCMk16RU0vMkRRQmpRcFpCL0Ni RVd2V2ExWEpXWHh5cFhib3d2ZVpVK1FxT25tTgorK3VRdmo4V0x5QTNvK1BORjllOVF2YXV3Q3JI cG44VnB4YnRQV3VhWW9LblVGcmVGWlpReEhoUEd4UkJJUzJKT1oKKytlRHJUOFphV25rQ2toMUFa cDVzbVE3MUxPcHJTbG1Lcmc0amQxR2pDVk14UVI1TjVLWGJ0eXYwT1RDWi9VRnFLCisrMmFSQnNN UHlKZ2thQkNoa1pQTFJjS3djKy93bFFSeDFmSFFiMTRETlRBcE14b1hGTzdlT3dxbU9rcEF0OWl5 bAorK1NCSXdvUzBVVUk1YWI4OCtiQm1YTnZLY3VGZE51UTRub3dUSlVuOXBBb0lCQURNTmtJTEJY U3ZTNURlSXl1TzIKKytTcDF0a29aVVYrNU5mUFkzc01ESzNLSWliYVcvK3QrRU9CWm80TDd0S1FD Yjh2UnpsMjFtbXNmeGZnUmFQRGJqCisrM3IzdHY5ZzBiNFlMeHhCeTUycEZzY2ovc29YUmFpMTdT UzdVWndBMlFLK1h6Z0RZYkRjTE5DNm1Jc1RRRzRHeAorK2RzV2szL3pzM0t1VVNRYWVobXdyV0sr ZklVSzM4YzFwTEs4djdMb3hyTGtxeGxId1owNFJ0aEh3OEtUdGhIN1gKKytQbmwxSjBMRjhDU2VP eWZXTFN1UFVma1QwR0V6cHRuTkhwRWJhSGZRTTZSNmVhR2hWSlBGNkFabWU0eTZZWWdnCisrbTJp aGhTdDFuMFhWRVdwSFlXanhGeTNtSzJtejc1dW5GQzRMTStORVkycDJ6dVVRb0N3N05qblkzUVly ZkNueAorK3JSTUNnZ0VBWGVYc01TTEZqanl1b0w3aUtiQXhvNTJIRC9QMGZCb3k1OEx5UmN3Zk5W cjBsdllhbjRwWUV4K28KKytLaWpJaDlLMTZQcVhaWEtNQTl2MDAzQit1bG1GOGJKN1NkZENaNU5H dm5GaFVURGU0RGRUS2dwMlJ1d1EzQnNjCisrM3NrUElEYmhWRVR5T0xDdHlzMzRVU0hycThVLzBE bEdZM2VMUmZ4dzlHbmJLeFNCR2EvS0V1L3FRTFBOVW81MAorKzd4SFpEZzdHS2VDM2txTkplcUtN OXJrcDBWeklHa0VuYUQ5MTI3TGVORG1FUkRmZnR4SnpGb0MvVEh2VUJMZlUKKys2U3VzMlpZd1JF OFZGdktDMzBRNDV0L2M1NFgzSXVoWXZBdWlDdVRteWZFNHJ1eXp5T3dLemhVa2VlTHExQVBYCisr ZzB2ZUZieWZ6bEowcThxekQvaWZmcXFJYTJaU21RPT0KKystLS0tLUVORCBQUklWQVRFIEtFWS0t LS0tCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vb3RoZXIvcWFjY2Vzc2liaWxpdHls aW51eC90c3RfcWFjY2Vzc2liaWxpdHlsaW51eC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9vdGhl ci9xYWNjZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNjZXNzaWJpbGl0eWxpbnV4LmNwcAoraW5kZXgg N2JhMzcxNWUxMy4uNzUyYWExMjJmNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL290 aGVyL3FhY2Nlc3NpYmlsaXR5bGludXgvdHN0X3FhY2Nlc3NpYmlsaXR5bGludXguY3BwCisrKysg Yi9xdGJhc2UvdGVzdHMvYXV0by9vdGhlci9xYWNjZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNjZXNz aWJpbGl0eWxpbnV4LmNwcAorQEAgLTE3OSw2ICsxNzksNyBAQCB2b2lkIHRzdF9RQWNjZXNzaWJp bGl0eUxpbnV4Ojppbml0VGVzdENhc2UoKQorICAgICBRVkVSSUZZKCFhZGRyZXNzLmlzRW1wdHko KSk7CisgCisgICAgIG1fd2luZG93ID0gbmV3IEFjY2Vzc2libGVUZXN0V2luZG93KCk7CisrICAg IG1fd2luZG93LT5zZXRPYmplY3ROYW1lKCJtYWluV2luZG93Il9MMSk7CisgICAgIG1fd2luZG93 LT5zaG93KCk7CisgCisgICAgIFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZCht X3dpbmRvdykpOworQEAgLTIzNiw4ICsyMzcsMTEgQEAgYm9vbCBoYXNTdGF0ZShRREJ1c0ludGVy ZmFjZSAqaW50ZXJmYWNlLCBBdHNwaVN0YXRlVHlwZSBzdGF0ZSkKKyB2b2lkIHRzdF9RQWNjZXNz aWJpbGl0eUxpbnV4Ojp0ZXN0TGFiZWwoKQorIHsKKyAgICAgUUxhYmVsICpsID0gbmV3IFFMYWJl bChtX3dpbmRvdyk7CisrICAgIGwtPnNldE9iamVjdE5hbWUoInRoZU9iamVjdE5hbWUiX0wxKTsK KyAgICAgbC0+c2V0VGV4dCgiSGVsbG8gQTExeSIpOworICAgICBtX3dpbmRvdy0+YWRkV2lkZ2V0 KGwpOworKyAgICBhdXRvIGExMXlFbXB0eSA9IG5ldyBRTGFiZWwobV93aW5kb3cpOworKyAgICBt X3dpbmRvdy0+YWRkV2lkZ2V0KGwpOworIAorICAgICAvLyBBcHBsaWNhdGlvbgorICAgICBRQ09N UEFSRShnZXRQYXJlbnQobWFpbldpbmRvdyksIFFMYXRpbjFTdHJpbmcoQVRTUElfREJVU19QQVRI X1JPT1QpKTsKK0BAIC0yNDksNiArMjUzLDggQEAgdm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlMaW51 eDo6dGVzdExhYmVsKCkKKyAgICAgUUNPTVBBUkUoZ2V0Q2hpbGRyZW4obGFiZWxJbnRlcmZhY2Up LmNvdW50KCksIDApOworICAgICBRQ09NUEFSRShsYWJlbEludGVyZmFjZS0+Y2FsbChRREJ1czo6 QmxvY2ssICJHZXRSb2xlTmFtZSIpLmFyZ3VtZW50cygpLmZpcnN0KCkudG9TdHJpbmcoKSwgUUxh dGluMVN0cmluZygibGFiZWwiKSk7CisgICAgIFFDT01QQVJFKGxhYmVsSW50ZXJmYWNlLT5jYWxs KFFEQnVzOjpCbG9jaywgIkdldFJvbGUiKS5hcmd1bWVudHMoKS5maXJzdCgpLnRvVUludCgpLCAy OXUpOworKyAgICBRQ09NUEFSRShsYWJlbEludGVyZmFjZS0+Y2FsbChRREJ1czo6QmxvY2ssICJH ZXRBY2Nlc3NpYmxlSWQiKS5hcmd1bWVudHMoKS5maXJzdCgpLnRvU3RyaW5nKCksCisrICAgICAg ICAgICAgIFFMYXRpbjFTdHJpbmcoIm1haW5XaW5kb3cudGhlT2JqZWN0TmFtZSIpKTsKKyAgICAg UUNPTVBBUkUoZ2V0UGFyZW50KGxhYmVsSW50ZXJmYWNlKSwgbWFpbldpbmRvdy0+cGF0aCgpKTsK KyAgICAgUVZFUklGWSghaGFzU3RhdGUobGFiZWxJbnRlcmZhY2UsIEFUU1BJX1NUQVRFX0VESVRB QkxFKSk7CisgICAgIFFWRVJJRlkoaGFzU3RhdGUobGFiZWxJbnRlcmZhY2UsIEFUU1BJX1NUQVRF X1JFQURfT05MWSkpOworQEAgLTI1Niw3ICsyNjIsMTIgQEAgdm9pZCB0c3RfUUFjY2Vzc2liaWxp dHlMaW51eDo6dGVzdExhYmVsKCkKKyAgICAgbC0+c2V0VGV4dCgiTmV3IHRleHQiKTsKKyAgICAg UUNPTVBBUkUobGFiZWxJbnRlcmZhY2UtPnByb3BlcnR5KCJOYW1lIikudG9TdHJpbmcoKSwgbC0+ dGV4dCgpKTsKKyAKKysgICAgYXV0byAqYTExeUVtcHR5SW50ZXJmYWNlID0gZ2V0SW50ZXJmYWNl KGNoaWxkcmVuLmF0KDEpLCAib3JnLmExMXkuYXRzcGkuQWNjZXNzaWJsZSIpOworKyAgICBRQ09N UEFSRShhMTF5RW1wdHlJbnRlcmZhY2UtPmNhbGwoUURCdXM6OkJsb2NrLCAiR2V0QWNjZXNzaWJs ZUlkIikuYXJndW1lbnRzKCkuZmlyc3QoKS50b1N0cmluZygpLAorKyAgICAgICAgICAgICBRTGF0 aW4xU3RyaW5nKCJtYWluV2luZG93LlFMYWJlbCIpKTsKKysKKyAgICAgbV93aW5kb3ctPmNsZWFy Q2hpbGRyZW4oKTsKKysgICAgZGVsZXRlIGExMXlFbXB0eUludGVyZmFjZTsKKyAgICAgZGVsZXRl IGxhYmVsSW50ZXJmYWNlOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9z cWwva2VybmVsL3FzcWxxdWVyeS90c3RfcXNxbHF1ZXJ5LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRv L3NxbC9rZXJuZWwvcXNxbHF1ZXJ5L3RzdF9xc3FscXVlcnkuY3BwCitpbmRleCA3NmRmNjFjODky Li42ZDZkNjViNzkxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vc3FsL2tlcm5lbC9x c3FscXVlcnkvdHN0X3FzcWxxdWVyeS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9r ZXJuZWwvcXNxbHF1ZXJ5L3RzdF9xc3FscXVlcnkuY3BwCitAQCAtMSw2ICsxLDYgQEAKKyAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgorICoqCistKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21w YW55IEx0ZC4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjIgVGhlIFF0IENvbXBhbnkgTHRkLgorICoq IENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIHRoZSB0ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTY4LDYg KzY4LDggQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBxdWVyeV9leGVjKCk7CisgICAgIHZv aWQgZXhlY0Vycm9yUmVjb3ZlcnlfZGF0YSgpIHsgZ2VuZXJpY19kYXRhKCk7IH0KKyAgICAgdm9p ZCBleGVjRXJyb3JSZWNvdmVyeSgpOworKyAgICB2b2lkIHByZW1hdHVyZUV4ZWNfZGF0YSgpIHsg Z2VuZXJpY19kYXRhKCk7IH0KKysgICAgdm9pZCBwcmVtYXR1cmVFeGVjKCk7CisgICAgIHZvaWQg Zmlyc3RfZGF0YSgpIHsgZ2VuZXJpY19kYXRhKCk7IH0KKyAgICAgdm9pZCBmaXJzdCgpOworICAg ICB2b2lkIG5leHRfZGF0YSgpIHsgZ2VuZXJpY19kYXRhKCk7IH0KK0BAIC0yNzcwLDYgKzI3NzIs MzUgQEAgdm9pZCB0c3RfUVNxbFF1ZXJ5OjpleGVjRXJyb3JSZWNvdmVyeSgpCisgICAgIFFWRVJJ RllfU1FMKCBxLCBleGVjKCkgKTsKKyB9CisgCisrdm9pZCB0c3RfUVNxbFF1ZXJ5OjpwcmVtYXR1 cmVFeGVjKCkKKyt7CisrICAgIFFGRVRDSChRU3RyaW5nLCBkYk5hbWUpOworKyAgICAvLyBXZSBv bmx5IHdhbnQgdGhlIGVuZ2luZSBuYW1lLCBmb3IgYWRkRGF0YWJhc2UoKToKKysgICAgaW50IGN1 dCA9IGRiTmFtZS5pbmRleE9mKFFDaGFyKCdAJykpOworKyAgICBpZiAoY3V0IDwgMCkKKysgICAg ICAgIFFTS0lQKCJGYWlsZWQgdG8gcGFyc2UgZGF0YWJhc2UgdHlwZSBvdXQgb2YgbmFtZSIpOwor KyAgICBkYk5hbWUudHJ1bmNhdGUoY3V0KTsKKysgICAgY3V0ID0gZGJOYW1lLmluZGV4T2YoUUNo YXIoJ18nKSk7CisrICAgIGlmIChjdXQgPj0gMCkKKysgICAgICAgIGRiTmFtZSA9IGRiTmFtZS5t aWQoY3V0ICsgMSk7CisrCisrICAgIGF1dG8gZGIgPSBRU3FsRGF0YWJhc2U6OmFkZERhdGFiYXNl KGRiTmFtZSk7CisrICAgIFFTcWxRdWVyeSBxKGRiKTsKKysKKysgICAgUVRlc3Q6Omlnbm9yZU1l c3NhZ2UoUXRXYXJuaW5nTXNnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAiUVNxbERhdGFi YXNlUHJpdmF0ZTo6cmVtb3ZlRGF0YWJhc2U6IGNvbm5lY3Rpb24gIgorKyAgICAgICAgICAgICAg ICAgICAgICAgICAiJ3F0X3NxbF9kZWZhdWx0X2Nvbm5lY3Rpb24nIGlzIHN0aWxsIGluIHVzZSwg YWxsICIKKysgICAgICAgICAgICAgICAgICAgICAgICAgInF1ZXJpZXMgd2lsbCBjZWFzZSB0byB3 b3JrLiIpOworKyAgICBRVGVzdDo6aWdub3JlTWVzc2FnZShRdFdhcm5pbmdNc2csCisrICAgICAg ICAgICAgICAgICAgICAgICAgICJRU3FsRGF0YWJhc2VQcml2YXRlOjphZGREYXRhYmFzZTogZHVw bGljYXRlIGNvbm5lY3Rpb24gbmFtZSAiCisrICAgICAgICAgICAgICAgICAgICAgICAgICIncXRf c3FsX2RlZmF1bHRfY29ubmVjdGlvbicsIG9sZCBjb25uZWN0aW9uIHJlbW92ZWQuIik7CisrICAg IGF1dG8gb3RoZXJEYiA9IFFTcWxEYXRhYmFzZTo6YWRkRGF0YWJhc2UoZGJOYW1lKTsKKysKKysg ICAgUVRlc3Q6Omlnbm9yZU1lc3NhZ2UoUXRXYXJuaW5nTXNnLCAiUVNxbFF1ZXJ5OjpleGVjOiBj YWxsZWQgYmVmb3JlIGRyaXZlciBoYXMgYmVlbiBzZXQgdXAiKTsKKysgICAgLy8gUVRCVUctMTAw MDM3OiBzaG91bGRuJ3QgY3Jhc2ggIQorKyAgICBRVkVSSUZZKCFxLmV4ZWMoInNlbGVjdCBzdHVm ZiBmcm9tIFRoZVZvaWQiKSk7CisrfQorKworIHZvaWQgdHN0X1FTcWxRdWVyeTo6bGFzdEluc2Vy dElkKCkKKyB7CisgICAgIFFGRVRDSCggUVN0cmluZywgZGJOYW1lICk7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3Rlc3RzL2F1dG8vdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIvdHN0X3Fh YnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by90ZXN0bGliL3Fh YnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci90c3RfcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAor aW5kZXggNGFhM2Y4ZDYwYi4uZDIwNTBhNjFhYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9h dXRvL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyL3RzdF9xYWJzdHJhY3RpdGVtbW9k ZWx0ZXN0ZXIuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by90ZXN0bGliL3FhYnN0cmFjdGl0 ZW1tb2RlbHRlc3Rlci90c3RfcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAorQEAgLTExNSw2 ICsxMTUsMTAgQEAgdm9pZCB0c3RfUUFic3RyYWN0SXRlbU1vZGVsVGVzdGVyOjpzdGFuZGFyZEl0 ZW1Nb2RlbFplcm9Db2x1bW5zKCkKKyAgICAgLy8gUVRCVUctOTI4ODYKKyAgICAgbW9kZWwuaW5z ZXJ0Um93cygwLCA1KTsKKyAgICAgbW9kZWwucmVtb3ZlUm93cygxLCAyKTsKKysKKysgICAgY29u c3QgUU1vZGVsSW5kZXggcGFyZW50SW5kZXggPSBtb2RlbC5pbmRleCgwLCAwKTsKKysgICAgbW9k ZWwuaW5zZXJ0Um93cygwLCA1LCBwYXJlbnRJbmRleCk7CisrICAgIG1vZGVsLnJlbW92ZVJvd3Mo MSwgMiwgcGFyZW50SW5kZXgpOworIH0KKyAKKyB2b2lkIHRzdF9RQWJzdHJhY3RJdGVtTW9kZWxU ZXN0ZXI6OnRlc3RJbnNlcnRUaHJvdWdoUHJveHkoKQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0 cy9hdXRvL3Rvb2xzL21vYy9hbGxtb2NzX2Jhc2VsaW5lX2luLmpzb24gYi9xdGJhc2UvdGVzdHMv YXV0by90b29scy9tb2MvYWxsbW9jc19iYXNlbGluZV9pbi5qc29uCitpbmRleCAxMmE0YTIyYTE5 Li5jZTUxOGU3OGZiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL2Fs bG1vY3NfYmFzZWxpbmVfaW4uanNvbgorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9j L2FsbG1vY3NfYmFzZWxpbmVfaW4uanNvbgorQEAgLTY2OCw1MCArNjY4LDYgQEAKKyAgICAgICAg ICJpbnB1dEZpbGUiOiAidGFzazE5MjU1Mi5oIiwKKyAgICAgICAgICJvdXRwdXRSZXZpc2lvbiI6 IDY3CisgICAgIH0sCistICAgIHsKKy0gICAgICAgICJjbGFzc2VzIjogWworLSAgICAgICAgICAg IHsKKy0gICAgICAgICAgICAgICAgImNsYXNzTmFtZSI6ICJJbmxpbmVTbG90c1dpdGhUaHJvd0Rl Y2xhcmF0aW9uIiwKKy0gICAgICAgICAgICAgICAgIm9iamVjdCI6IHRydWUsCistICAgICAgICAg ICAgICAgICJxdWFsaWZpZWRDbGFzc05hbWUiOiAiSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJh dGlvbiIsCistICAgICAgICAgICAgICAgICJzbG90cyI6IFsKKy0gICAgICAgICAgICAgICAgICAg IHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1YmxpYyIsCistICAgICAg ICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYSIsCistICAgICAgICAgICAgICAgICAgICAgICAg InJldHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAgICAgICAgICAgICAgIH0sCistICAgICAgICAg ICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMi LAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImIiLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiCistICAgICAgICAgICAgICAgICAgICB9LAor LSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3Mi OiAicHVibGljIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjIiwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAg ICAgICAgfSwKKy0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAg ICAiYWNjZXNzIjogInB1YmxpYyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAi ZCIsCistICAgICAgICAgICAgICAgICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0gICAg ICAgICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAg ICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICJuYW1lIjogImUiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5UeXBlIjogInZv aWQiCistICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIF0sCistICAgICAg ICAgICAgICAgICJzdXBlckNsYXNzZXMiOiBbCistICAgICAgICAgICAgICAgICAgICB7CistICAg ICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICJuYW1lIjogIlFPYmplY3QiCistICAgICAgICAgICAgICAgICAgICB9CistICAg ICAgICAgICAgICAgIF0KKy0gICAgICAgICAgICB9CistICAgICAgICBdLAorLSAgICAgICAgImlu cHV0RmlsZSI6ICJ0YXNrMTg5OTk2LmgiLAorLSAgICAgICAgIm91dHB1dFJldmlzaW9uIjogNjcK Ky0gICAgfSwKKyAgICAgeworICAgICAgICAgImNsYXNzZXMiOiBbCisgICAgICAgICAgICAgewor ZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9tb2MucHJvIGIvcXRiYXNl L3Rlc3RzL2F1dG8vdG9vbHMvbW9jL21vYy5wcm8KK2luZGV4IGMzMjRiM2E4Y2QuLjRhY2ViNzhk YzAgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvbW9jLnBybworKysr IGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL21vYy5wcm8KK0BAIC0xNSw3ICsxNSw3IEBA IGNyb3NzX2NvbXBpbGU6IERFRklORVMgKz0gTU9DX0NST1NTX0NPTVBJTEVECisgSEVBREVSUyAr PSB1c2luZy1uYW1lc3BhY2VzLmggbm8ta2V5d29yZHMuaCB0YXNrODc4ODMuaCBjLWNvbW1lbnRz LmggYmFja3NsYXNoLW5ld2xpbmVzLmggb2xkc3R5bGUtY2FzdHMuaCBcCisgICAgICAgICAgICBz bG90cy13aXRoLXZvaWQtdGVtcGxhdGUuaCBxaW52b2thYmxlLmggbmFtZXNwYWNlZC1mbGFncy5o IHRyaWdyYXBocy5oIFwKKyAgICAgICAgICAgIGVzY2FwZXMtaW4tc3RyaW5nLWxpdGVyYWxzLmgg Y3N0eWxlLWVudW1zLmggcXByaXZhdGVzbG90cy5oIGdhZGdldHdpdGhub2VudW1zLmggXAorLSAg ICAgICAgICAgZGlyLWluLWluY2x1ZGUtcGF0aC5oIHNpbmdsZV9mdW5jdGlvbl9rZXl3b3JkLmgg dGFzazE5MjU1Mi5oIHRhc2sxODk5OTYuaCBcCisrICAgICAgICAgICBkaXItaW4taW5jbHVkZS1w YXRoLmggc2luZ2xlX2Z1bmN0aW9uX2tleXdvcmQuaCB0YXNrMTkyNTUyLmggXAorICAgICAgICAg ICAgdGFzazIzNDkwOS5oIHRhc2syNDAzNjguaCBwdXJlLXZpcnR1YWwtc2lnbmFscy5oIGN4eDEx LWVudW1zLmggXAorICAgICAgICAgICAgY3h4MTEtZmluYWwtY2xhc3Nlcy5oIFwKKyAgICAgICAg ICAgIGN4eDExLWV4cGxpY2l0LW92ZXJyaWRlLWNvbnRyb2wuaCBcCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3Rhc2sxODk5OTYuaCBiL3F0YmFzZS90ZXN0cy9hdXRv L3Rvb2xzL21vYy90YXNrMTg5OTk2LmgKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg Zjk0YTA1MWIzYS4uMDAwMDAwMDAwMAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9j L3Rhc2sxODk5OTYuaAorKysrIC9kZXYvbnVsbAorQEAgLTEsNDcgKzAsMCBAQAorLS8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCistKioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkg THRkLgorLSoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKy0qKgorLSoq IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0Lgor LSoqCistKiogJFFUX0JFR0lOX0xJQ0VOU0U6R1BMLUVYQ0VQVCQKKy0qKiBDb21tZXJjaWFsIExp Y2Vuc2UgVXNhZ2UKKy0qKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxp Y2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCistKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21t ZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCistKiogU29mdHdhcmUg b3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVk IGluCistKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBh bnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKy0qKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93 d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKy0qKiBpbmZvcm1hdGlvbiB1 c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorLSoq CistKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKy0qKiBBbHRlcm5hdGl2ZWx5 LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKy0qKiBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUKKy0qKiBGb3VuZGF0aW9uIHdpdGggZXhjZXB0aW9ucyBhcyBhcHBlYXJpbmcgaW4g dGhlIGZpbGUgTElDRU5TRS5HUEwzLUVYQ0VQVAorLSoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdp bmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKy0qKiBpbmZvcm1h dGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50 cyB3aWxsCistKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAu aHRtbC4KKy0qKgorLSoqICRRVF9FTkRfTElDRU5TRSQKKy0qKgorLSoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCistLy8gaW5saW5lIGZ1bmN0aW9ucyBjYW4gaGF2ZSB0aHJvdyBkZWNsYXJhdGlvbnMKKy0K Ky0jaWZuZGVmIFRBU0sxODk5OTZfSAorLSNkZWZpbmUgVEFTSzE4OTk5Nl9ICistCistI2luY2x1 ZGUgPFFPYmplY3Q+CistCistY2xhc3MgSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbiA6 IHB1YmxpYyBRT2JqZWN0CisteworLSAgICBRX09CSkVDVAorLQorLXB1YmxpYyBzbG90czoKKy0g ICAgdm9pZCBhKCkgdGhyb3coKSB7IH0KKy0gICAgdm9pZCBiKCkgY29uc3QgdGhyb3coKSB7IH0K Ky0gICAgdm9pZCBjKCkgdGhyb3coKTsKKy0gICAgdm9pZCBkKCkgdGhyb3coaW50KSB7IH0KKy0g ICAgdm9pZCBlKCkgY29uc3QgdGhyb3coaW50LGRvdWJsZSkgeyB9CistfTsKKy0KKy0jZW5kaWYK K2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdHN0X21vYy5jcHAgYi9x dGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdHN0X21vYy5jcHAKK2luZGV4IGM3MTZhZWFkMjEu LjE1ZGQ5ZTQxZTUgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdHN0 X21vYy5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90c3RfbW9jLmNwcAor QEAgLTYzMSw3ICs2MzEsNiBAQCBwdWJsaWM6CisgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBp bml0VGVzdENhc2UoKTsKKyAKKy0gICAgdm9pZCBzbG90V2l0aEV4Y2VwdGlvbigpIHRocm93KE15 U3RydWN0KTsKKyAgICAgdm9pZCBkb250U3RyaXBOYW1lc3BhY2VzKCk7CisgICAgIHZvaWQgb2xk U3R5bGVDYXN0cygpOworICAgICB2b2lkIHdhcm5PbkV4dHJhU2lnbmFsU2xvdFF1YWxpZmlhY3Rp b24oKTsKK0BAIC02NzMsNyArNjcyLDYgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB0ZW1w bGF0ZUd0R3QoKTsKKyAgICAgdm9pZCBxcHJpdmF0ZXNsb3RzKCk7CisgICAgIHZvaWQgcXByaXZh dGVwcm9wZXJ0aWVzKCk7CistICAgIHZvaWQgaW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlv bigpOworICAgICB2b2lkIHdhcm5PblByb3BlcnR5V2l0aG91dFJFQUQoKTsKKyAgICAgdm9pZCBj b25zdHJ1Y3RvcnMoKTsKKyAgICAgdm9pZCB0eXBlbmFtZVdpdGhVbnNpZ25lZCgpOworQEAgLTc4 NCwxMiArNzgyLDYgQEAgdm9pZCB0c3RfTW9jOjppbml0VGVzdENhc2UoKQorICNlbmRpZgorIH0K KyAKKy12b2lkIHRzdF9Nb2M6OnNsb3RXaXRoRXhjZXB0aW9uKCkgdGhyb3coTXlTdHJ1Y3QpCist eworLSAgICAvLyBiZSBoYXBweQorLSAgICBRVkVSSUZZKHRydWUpOworLX0KKy0KKyB2b2lkIHRz dF9Nb2M6OmRvbnRTdHJpcE5hbWVzcGFjZXMoKQorIHsKKyAgICAgU2VuZGVyIHNlbmRlcjsKK0BA IC04MjQsNyArODE2LDcgQEAgdm9pZCB0c3RfTW9jOjpvbGRTdHlsZUNhc3RzKCkKKyAKKyAgICAg UVN0cmluZ0xpc3QgYXJnczsKKyAgICAgYXJncyA8PCAiLWMiIDw8ICIteCIgPDwgImMrKyIgPDwg Ii1Xb2xkLXN0eWxlLWNhc3QiIDw8ICItSSIgPDwgIi4iCistICAgICAgICAgPDwgIi1JIiA8PCBx dEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1j KysxMSIgPDwgIi0iOworKyAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8i IDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMXoiIDw8ICItIjsKKyAgICAg cHJvYy5zdGFydCgiZ2NjIiwgYXJncyk7CisgICAgIFFWRVJJRlkocHJvYy53YWl0Rm9yU3RhcnRl ZCgpKTsKKyAgICAgcHJvYy53cml0ZShtb2NPdXQpOworQEAgLTg5NCw3ICs4ODYsNyBAQCB2b2lk IHRzdF9Nb2M6OmlucHV0RmlsZU5hbWVXaXRoRG90c0J1dE5vRXh0ZW5zaW9uKCkKKyAKKyAgICAg UVN0cmluZ0xpc3QgYXJnczsKKyAgICAgYXJncyA8PCAiLWMiIDw8ICIteCIgPDwgImMrKyIgPDwg Ii1JIiA8PCAiLi4iCistICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIg PDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxMSIgPDwgIi0iOworKyAgICAg ICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICIt ZlBJQyIgPDwgIi1zdGQ9YysrMXoiIDw8ICItIjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwgYXJn cyk7CisgICAgIFFWRVJJRlkocHJvYy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJvYy53cml0 ZShtb2NPdXQpOworQEAgLTExNzQsNyArMTE2Niw3IEBAIHZvaWQgdHN0X01vYzo6aWdub3JlT3B0 aW9uQ2xhc2hlcygpCisgICAgIFFTdHJpbmdMaXN0IGdjY0FyZ3M7CisgICAgIGdjY0FyZ3MgPDwg Ii1jIiA8PCAiLXgiIDw8ICJjKysiIDw8ICItSSIgPDwgIi4uIgorICAgICAgICAgIDw8ICItSSIg PDwgcXRJbmNsdWRlUGF0aCA8PCAiLUkiIDw8IGluY2x1ZGVEaXIgPDwgIi1vIiA8PCAiL2Rldi9u dWxsIgorLSAgICAgICAgIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMTEiIDw8ICAiLSI7CisrICAg ICAgICAgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxeiIgPDwgICItIjsKKyAgICAgcHJvYy5zdGFy dCgiZ2NjIiwgZ2NjQXJncyk7CisgICAgIFFWRVJJRlkocHJvYy53YWl0Rm9yU3RhcnRlZCgpKTsK KyAgICAgcHJvYy53cml0ZShtb2NPdXQpOworQEAgLTE1OTMsMjEgKzE1ODUsNiBAQCB2b2lkIHRz dF9Nb2M6OnFwcml2YXRlcHJvcGVydGllcygpCisgCisgfQorIAorLSNpbmNsdWRlICJ0YXNrMTg5 OTk2LmgiCistCistdm9pZCBJbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uOjpjKCkgdGhy b3coKSB7fQorLQorLXZvaWQgdHN0X01vYzo6aW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlv bigpCisteworLSAgICBJbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uIHRzdDsKKy0gICAg Y29uc3QgUU1ldGFPYmplY3QgKm1vYmogPSB0c3QubWV0YU9iamVjdCgpOworLSAgICBRVkVSSUZZ KG1vYmotPmluZGV4T2ZTbG90KCJhKCkiKSAhPSAtMSk7CistICAgIFFWRVJJRlkobW9iai0+aW5k ZXhPZlNsb3QoImIoKSIpICE9IC0xKTsKKy0gICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgi YygpIikgIT0gLTEpOworLSAgICBRVkVSSUZZKG1vYmotPmluZGV4T2ZTbG90KCJkKCkiKSAhPSAt MSk7CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhPZlNsb3QoImUoKSIpICE9IC0xKTsKKy19Cist Cisgdm9pZCB0c3RfTW9jOjp3YXJuT25Qcm9wZXJ0eVdpdGhvdXRSRUFEKCkKKyB7CisgI2lmZGVm IE1PQ19DUk9TU19DT01QSUxFRAorQEAgLTE4NjksNyArMTg0Niw3IEBAIHZvaWQgdHN0X01vYzo6 bm90aWZ5RXJyb3IoKQorIAorICAgICBRU3RyaW5nTGlzdCBhcmdzOworICAgICBhcmdzIDw8ICIt YyIgPDwgIi14IiA8PCAiYysrIiA8PCAiLUkiIDw8ICIuIgorLSAgICAgICAgIDw8ICItSSIgPDwg cXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9 YysrMTEiIDw8ICItIjsKKysgICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1v IiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzF6IiA8PCAiLSI7CisgICAg IHByb2Muc3RhcnQoImdjYyIsIGFyZ3MpOworICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0 ZWQoKSk7CisgICAgIHByb2Mud3JpdGUobW9jT3V0KTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVz dHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xaGVhZGVydmlldy90c3RfcWhlYWRlcnZpZXcuY3Bw IGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcWhlYWRlcnZpZXcvdHN0X3Fo ZWFkZXJ2aWV3LmNwcAoraW5kZXggYzM1NWVlOTY2NS4uODhjMDlkZThlMCAxMDA2NDQKKy0tLSBh L3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2aWV3L3RzdF9xaGVh ZGVydmlldy5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3Fo ZWFkZXJ2aWV3L3RzdF9xaGVhZGVydmlldy5jcHAKK0BAIC0yNTEsNiArMjUxLDcgQEAgcHJpdmF0 ZSBzbG90czoKKyAgICAgdm9pZCB0ZXN0UmVzZXRDYWNoZWRTaXplSGludCgpOworICAgICB2b2lk IHN0YXR1c1RpcHMoKTsKKyAgICAgdm9pZCB0ZXN0UmVtb3ZpbmdDb2x1bW5zVmlhTGF5b3V0Q2hh bmdlZCgpOworKyAgICB2b2lkIHRlc3RNb2RlbE1vdmluZ0NvbHVtbnMoKTsKKyAKKyBwcm90ZWN0 ZWQ6CisgICAgIHZvaWQgc2V0dXBUZXN0RGF0YShib29sIHVzZV9yZXNldF9tb2RlbCA9IGZhbHNl KTsKK0BAIC0zNjAsNiArMzYxLDEyIEBAIHB1YmxpYzoKKyAgICAgICAgIGVuZFJlbW92ZUNvbHVt bnMoKTsKKyAgICAgfQorIAorKyAgICB2b2lkIG1vdmVDb2x1bW4oaW50IGZyb20sIGludCB0bykK KysgICAgeworKyAgICAgICAgYmVnaW5Nb3ZlQ29sdW1ucyhRTW9kZWxJbmRleCgpLCBmcm9tLCBm cm9tLCBRTW9kZWxJbmRleCgpLCB0byk7CisrICAgICAgICBlbmRNb3ZlQ29sdW1ucygpOworKyAg ICB9CisrCisgICAgIHZvaWQgY2xlYW51cCgpCisgICAgIHsKKyAgICAgICAgIGVtaXQgbGF5b3V0 QWJvdXRUb0JlQ2hhbmdlZCgpOworQEAgLTM2MjcsNSArMzYzNCwxOCBAQCB2b2lkIHRzdF9RSGVh ZGVyVmlldzo6dGVzdFJlbW92aW5nQ29sdW1uc1ZpYUxheW91dENoYW5nZWQoKQorICAgICAvLyBU aGUgbWFpbiBwb2ludCBvZiB0aGlzIHRlc3QgaXMgdGhhdCB0aGUgc2VjdGlvbi1zaXplIHJlc3Rv cmluZyBjb2RlIGRpZG4ndCBnbyBvdXQgb2YgYm91bmRzLgorIH0KKyAKKyt2b2lkIHRzdF9RSGVh ZGVyVmlldzo6dGVzdE1vZGVsTW92aW5nQ29sdW1ucygpCisreworKyAgICBRdFRlc3RNb2RlbCBt b2RlbCgxMCwgMTApOworKyAgICBRSGVhZGVyVmlldyBodihRdDo6SG9yaXpvbnRhbCk7CisrICAg IGh2LnNldE1vZGVsKCZtb2RlbCk7CisrICAgIGh2LnJlc2l6ZVNlY3Rpb25zKFFIZWFkZXJWaWV3 OjpSZXNpemVUb0NvbnRlbnRzKTsKKysgICAgaHYuc2hvdygpOworKworKyAgICBRUGVyc2lzdGVu dE1vZGVsSW5kZXggaW5kZXgzID0gbW9kZWwuaW5kZXgoMCwgMyk7CisrICAgIG1vZGVsLm1vdmVD b2x1bW4oMywgMSk7CisrICAgIFFDT01QQVJFKGluZGV4My5jb2x1bW4oKSwgMSk7CisrfQorKwor IFFURVNUX01BSU4odHN0X1FIZWFkZXJWaWV3KQorICNpbmNsdWRlICJ0c3RfcWhlYWRlcnZpZXcu bW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3F0 YWJsZXZpZXcvdHN0X3F0YWJsZXZpZXcuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9p dGVtdmlld3MvcXRhYmxldmlldy90c3RfcXRhYmxldmlldy5jcHAKK2luZGV4IDc2MTM1N2IyNTIu LjA2YmI3MDYwNzQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12 aWV3cy9xdGFibGV2aWV3L3RzdF9xdGFibGV2aWV3LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy90c3RfcXRhYmxldmlldy5jcHAKK0BAIC0z OTcsNiArMzk3LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBjaGVja0hlYWRlck1pblNp emUoKTsKKyAKKyAgICAgdm9pZCByZXNpemVUb0NvbnRlbnRzKCk7CisrICAgIHZvaWQgcmVzaXpl VG9Db250ZW50c1NwYW5zKCk7CisgCisgICAgIHZvaWQgdGFiRm9jdXMoKTsKKyAgICAgdm9pZCBi aWdNb2RlbCgpOworQEAgLTM3MjEsNiArMzcyMiw3MCBAQCB2b2lkIHRzdF9RVGFibGVWaWV3Ojpy ZXNpemVUb0NvbnRlbnRzKCkKKyAKKyB9CisgCisrCisrY2xhc3MgU3Bhbk1vZGVsIDogcHVibGlj IFFBYnN0cmFjdFRhYmxlTW9kZWwKKyt7CisrcHVibGljOgorKyAgICBTcGFuTW9kZWwoYm9vbCBz ZWN0aW9uc01vdmVkKQorKyAgICAgICAgOiBfc2VjdGlvbnNNb3ZlZChzZWN0aW9uc01vdmVkKQor KyAgICB7fQorKyAgICBpbnQgY29sdW1uQ291bnQoY29uc3QgUU1vZGVsSW5kZXggJiA9IHt9KSBj b25zdCBvdmVycmlkZSB7IHJldHVybiAyOyB9CisrICAgIGludCByb3dDb3VudChjb25zdCBRTW9k ZWxJbmRleCAmID0ge30pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDE7IH0KKysgICAgUVZhcmlh bnQgZGF0YShjb25zdCBRTW9kZWxJbmRleCAmaWR4LCBpbnQgcm9sZSA9IFF0OjpEaXNwbGF5Um9s ZSkgY29uc3Qgb3ZlcnJpZGUKKysgICAgeworKyAgICAgICAgaWYgKHJvbGUgIT0gUXQ6OkRpc3Bs YXlSb2xlKQorKyAgICAgICAgICAgIHJldHVybiBRVmFyaWFudCgpOworKyAgICAgICAgY29uc3Qg aW50IGNvbCA9IF9zZWN0aW9uc01vdmVkID8gMSAtIGlkeC5jb2x1bW4oKSA6IGlkeC5jb2x1bW4o KTsKKysgICAgICAgIGlmIChjb2wgPT0gMCkKKysgICAgICAgICAgICByZXR1cm4gIkxvcmVtIGlw c3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBl aXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVh LiI7CisrICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKysgICAgfQorK3ByaXZhdGU6CisrICAg IGJvb2wgX3NlY3Rpb25zTW92ZWQ7CisrfTsKKysKKysKKyt2b2lkIHRzdF9RVGFibGVWaWV3Ojpy ZXNpemVUb0NvbnRlbnRzU3BhbnMoKQorK3sKKysgICAgU3Bhbk1vZGVsIG1vZGVsMShmYWxzZSk7 CisrICAgIFNwYW5Nb2RlbCBtb2RlbDIodHJ1ZSk7CisrICAgIFFUYWJsZVZpZXcgdmlldzEsIHZp ZXcyLCB2aWV3MzsKKysgICAgdmlldzEuc2V0TW9kZWwoJm1vZGVsMSk7CisrICAgIHZpZXcyLnNl dE1vZGVsKCZtb2RlbDIpOworKyAgICB2aWV3Mi5ob3Jpem9udGFsSGVhZGVyKCktPm1vdmVTZWN0 aW9uKDAsIDEpOworKyAgICB2aWV3My5zZXRNb2RlbCgmbW9kZWwxKTsKKysKKysgICAgdmlldzEu c2V0U3BhbigwLCAwLCAxLCAyKTsKKysgICAgdmlldzIuc2V0U3BhbigwLCAxLCAxLCAyKTsKKysg ICAgdmlldzEuc2hvdygpOworKyAgICB2aWV3Mi5zaG93KCk7CisrICAgIHZpZXczLnNob3coKTsK KysgICAgUVZFUklGWShRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3MSkpOworKyAg ICBRVkVSSUZZKFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJnZpZXcyKSk7CisrICAgIFFW RVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZCgmdmlldzMpKTsKKysgICAgdmlldzEu c2V0Q29sdW1uV2lkdGgoMCwgMTAwKTsKKysgICAgdmlldzEuc2V0Q29sdW1uV2lkdGgoMSwgMTAw KTsKKysgICAgdmlldzIuc2V0Q29sdW1uV2lkdGgoMCwgMTAwKTsKKysgICAgdmlldzIuc2V0Q29s dW1uV2lkdGgoMSwgMTAwKTsKKysgICAgdmlldzMuc2V0Q29sdW1uV2lkdGgoMCwgMjAwKTsKKysK KysgICAgdmlldzEucmVzaXplUm93VG9Db250ZW50cygwKTsKKysgICAgdmlldzIucmVzaXplUm93 VG9Db250ZW50cygwKTsKKysgICAgdmlldzMucmVzaXplUm93VG9Db250ZW50cygwKTsKKysgICAg UUNPTVBBUkUodmlldzEucm93SGVpZ2h0KDApLCB2aWV3My5yb3dIZWlnaHQoMCkpOworKyAgICBR Q09NUEFSRSh2aWV3Mi5yb3dIZWlnaHQoMCksIHZpZXczLnJvd0hlaWdodCgwKSk7CisrCisrICAg IHZpZXczLnJlc2l6ZUNvbHVtblRvQ29udGVudHMoMCk7CisrICAgIHZpZXczLnJlc2l6ZVJvd1Rv Q29udGVudHMoMCk7CisrICAgIC8vIGhlaWdodCBzaG91bGQgYmUgb25seSAxIHRleHQgbGluZSBm b3IgZWFzeSB0ZXN0aW5nCisrICAgIHZpZXcxLnNldFJvd0hlaWdodCgwLCB2aWV3My52ZXJ0aWNh bEhlYWRlcigpLT5zZWN0aW9uU2l6ZSgwKSk7CisrICAgIHZpZXcyLnNldFJvd0hlaWdodCgwLCB2 aWV3My52ZXJ0aWNhbEhlYWRlcigpLT5zZWN0aW9uU2l6ZSgwKSk7CisrICAgIHZpZXcxLnJlc2l6 ZUNvbHVtblRvQ29udGVudHMoMCk7CisrICAgIHZpZXcyLnJlc2l6ZUNvbHVtblRvQ29udGVudHMo MSk7CisrICAgIFFDT01QQVJFKHZpZXcxLmNvbHVtbldpZHRoKDApLCB2aWV3My5jb2x1bW5XaWR0 aCgwKSAtIHZpZXcxLmNvbHVtbldpZHRoKDEpKTsKKysgICAgUUNPTVBBUkUodmlldzIuY29sdW1u V2lkdGgoMCksIHZpZXczLmNvbHVtbldpZHRoKDApIC0gdmlldzIuY29sdW1uV2lkdGgoMSkpOwor K30KKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyBleHRlcm4gYm9vbCBRX1dJREdFVFNfRVhQT1JU IHF0X3RhYl9hbGxfd2lkZ2V0cygpOyAvLyBxYXBwbGljYXRpb24uY3BwCisgUVRfRU5EX05BTUVT UEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMva2VybmVsL3FhcHBs aWNhdGlvbi90c3RfcWFwcGxpY2F0aW9uLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMv a2VybmVsL3FhcHBsaWNhdGlvbi90c3RfcWFwcGxpY2F0aW9uLmNwcAoraW5kZXggYTNiOGVmNzhk OC4uNDk1NWNlYmQ1ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMva2Vy bmVsL3FhcHBsaWNhdGlvbi90c3RfcWFwcGxpY2F0aW9uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3Rz L2F1dG8vd2lkZ2V0cy9rZXJuZWwvcWFwcGxpY2F0aW9uL3RzdF9xYXBwbGljYXRpb24uY3BwCitA QCAtMTQ5OCw3ICsxNDk4LDcgQEAgdm9pZCB0c3RfUUFwcGxpY2F0aW9uOjpkZXNrdG9wU2V0dGlu Z3NBd2FyZSgpCisgICAgIGVudmlyb25tZW50ICs9IFFMYXRpbjFTdHJpbmcoIlFUX01BQ19ESVNB QkxFX0ZPUkVHUk9VTkRfQVBQTElDQVRJT05fVFJBTlNGT1JNPTEiKTsKKyAgICAgdGVzdFByb2Nl c3Muc2V0RW52aXJvbm1lbnQoZW52aXJvbm1lbnQpOworICNlbmRpZgorLSAgICB0ZXN0UHJvY2Vz cy5zdGFydCgiZGVza3RvcHNldHRpbmdzYXdhcmVfaGVscGVyIik7CisrICAgIHRlc3RQcm9jZXNz LnN0YXJ0KCIuL2Rlc2t0b3BzZXR0aW5nc2F3YXJlX2hlbHBlciIpOworICAgICBRVkVSSUZZMih0 ZXN0UHJvY2Vzcy53YWl0Rm9yU3RhcnRlZCgpLAorICAgICAgICAgICAgICBxUHJpbnRhYmxlKFFT dHJpbmc6OmZyb21MYXRpbjEoIkNhbm5vdCBzdGFydCAnZGVza3RvcHNldHRpbmdzYXdhcmVfaGVs cGVyJzogJTEiKS5hcmcodGVzdFByb2Nlc3MuZXJyb3JTdHJpbmcoKSkpKTsKKyAgICAgUVZFUklG WSh0ZXN0UHJvY2Vzcy53YWl0Rm9yRmluaXNoZWQoMTAwMDApKTsKK0BAIC0yNDUyLDcgKzI0NTIs NyBAQCB2b2lkIHRzdF9RQXBwbGljYXRpb246OnF0YnVnXzEyNjczKCkKKyAjaWYgUVRfQ09ORklH KHByb2Nlc3MpCisgICAgIFFQcm9jZXNzIHRlc3RQcm9jZXNzOworICAgICBRU3RyaW5nTGlzdCBh cmd1bWVudHM7CistICAgIHRlc3RQcm9jZXNzLnN0YXJ0KCJtb2RhbF9oZWxwZXIiLCBhcmd1bWVu dHMpOworKyAgICB0ZXN0UHJvY2Vzcy5zdGFydCgiLi9tb2RhbF9oZWxwZXIiLCBhcmd1bWVudHMp OworICAgICBRVkVSSUZZMih0ZXN0UHJvY2Vzcy53YWl0Rm9yU3RhcnRlZCgpLAorICAgICAgICAg ICAgICBxUHJpbnRhYmxlKFFTdHJpbmc6OmZyb21MYXRpbjEoIkNhbm5vdCBzdGFydCAnbW9kYWxf aGVscGVyJzogJTEiKS5hcmcodGVzdFByb2Nlc3MuZXJyb3JTdHJpbmcoKSkpKTsKKyAgICAgUVZF UklGWSh0ZXN0UHJvY2Vzcy53YWl0Rm9yRmluaXNoZWQoMjAwMDApKTsKK2RpZmYgLS1naXQgYS9x dGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uL3RzdF9xYWJz dHJhY3RidXR0b24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FhYnN0 cmFjdGJ1dHRvbi90c3RfcWFic3RyYWN0YnV0dG9uLmNwcAoraW5kZXggZWIxMDhhNDBkZS4uZGNh NTUyOGMxYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9x YWJzdHJhY3RidXR0b24vdHN0X3FhYnN0cmFjdGJ1dHRvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24vdHN0X3FhYnN0cmFjdGJ1dHRv bi5jcHAKK0BAIC00MSw2ICs0MSw3IEBACisgCisgI2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxp Y2F0aW9uX3AuaD4KKyAjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybWludGVncmF0aW9uLmg+CisrI2lu Y2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorIAorIGNsYXNzIHRzdF9RQWJzdHJhY3RCdXR0 b24gOiBwdWJsaWMgUU9iamVjdAorIHsKK0BAIC03Niw2ICs3Nyw4IEBAIHByaXZhdGUgc2xvdHM6 CisgICAgIHZvaWQga2V5TmF2aWdhdGlvbigpOworICNlbmRpZgorIAorKyAgICB2b2lkIGJ1dHRv blByZXNzS2V5cygpOworKworIHByb3RlY3RlZCBzbG90czoKKyAgICAgdm9pZCBvbkNsaWNrZWQo KTsKKyAgICAgdm9pZCBvblRvZ2dsZWQoIGJvb2wgb24gKTsKK0BAIC0yNjksNyArMjcyLDEzIEBA IHZvaWQgdHN0X1FBYnN0cmFjdEJ1dHRvbjo6c2V0QXV0b1JlcGVhdCgpCisgICAgICAgICBRQ09N UEFSRShwcmVzc19jb3VudCwgY2xpY2tfY291bnQpOworICAgICAgICAgUVZFUklGWShjbGlja19j b3VudCA+IDEpOworICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgNDoKKysgICAgY2FzZSA0OiB7 CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblBy aXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMp CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFM aXN0PFF0OjpLZXk+PigpOworKyAgICAgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhR dDo6S2V5X0VudGVyKSkgeworKyAgICAgICAgICAgIFFTS0lQKCJwbGF0Zm9ybSB0aGVtZSBoYXMg S2V5X0VudGVyIGluIEJ1dHRvblByZXNzS2V5cyIpOworKyAgICAgICAgfQorICAgICAgICAgLy8g Y2hlY2sgdGhhdCBwcmVzc2luZyBFTlRFUiBoYXMgbm8gZWZmZWN0IHdoZW4gYXV0b3JlcGVhdCBp cyBmYWxzZQorICAgICAgICAgdGVzdFdpZGdldC0+c2V0RG93biggZmFsc2UgKTsKKyAgICAgICAg IHRlc3RXaWRnZXQtPnNldEF1dG9SZXBlYXQoIGZhbHNlICk7CitAQCAtMjg2LDcgKzI5NSwxNCBA QCB2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OnNldEF1dG9SZXBlYXQoKQorIAorICAgICAgICAg UVZFUklGWSggY2xpY2tfY291bnQgPT0gMCApOworICAgICAgICAgYnJlYWs7CistICAgIGNhc2Ug NToKKysgICAgfQorKyAgICBjYXNlIDU6IHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJl c3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRm b3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAo YnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICAgICAg UVNLSVAoInBsYXRmb3JtIHRoZW1lIGhhcyBLZXlfRW50ZXIgaW4gQnV0dG9uUHJlc3NLZXlzIik7 CisrICAgICAgICB9CisgICAgICAgICAvLyBjaGVjayB0aGF0IHByZXNzaW5nIEVOVEVSIGhhcyBu byBlZmZlY3Qgd2hlbiBhdXRvcmVwZWF0IGlzIHRydWUKKyAgICAgICAgIHRlc3RXaWRnZXQtPnNl dERvd24oIGZhbHNlICk7CisgICAgICAgICB0ZXN0V2lkZ2V0LT5zZXRBdXRvUmVwZWF0KCB0cnVl ICk7CitAQCAtMzA0LDYgKzMyMCw3IEBAIHZvaWQgdHN0X1FBYnN0cmFjdEJ1dHRvbjo6c2V0QXV0 b1JlcGVhdCgpCisgCisgICAgICAgICBRVkVSSUZZKCBjbGlja19jb3VudCA9PSAwICk7CisgICAg ICAgICBicmVhazsKKysgICAgfQorICAgICBjYXNlIDY6CisgICAgICAgICAvLyB2ZXJpZnkgYXV0 b3JlcGVhdCBpcyBvZmYgYnkgZGVmYXVsdC4KKyAgICAgICAgIE15QnV0dG9uIHRtcCggMCk7CitA QCAtNjUxLDUgKzY2OCwxNiBAQCB2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OmtleU5hdmlnYXRp b24oKQorIH0KKyAjZW5kaWYKKyAKKyt2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OmJ1dHRvblBy ZXNzS2V5cygpCisreworKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBs aWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNz S2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxR TGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBidXR0b25QcmVzc0tl eXMubGVuZ3RoKCk7ICsraSkgeworKyAgICAgICAgUVRlc3Q6OmtleUNsaWNrKHRlc3RXaWRnZXQs IGJ1dHRvblByZXNzS2V5c1tpXSk7CisrICAgICAgICBRQ09NUEFSRShjbGlja19jb3VudCwgaSAr IDEpOworKyAgICB9CisrfQorKworIFFURVNUX01BSU4odHN0X1FBYnN0cmFjdEJ1dHRvbikKKyAj aW5jbHVkZSAidHN0X3FhYnN0cmFjdGJ1dHRvbi5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC90c3RfcWNvbWJvYm94LmNwcCBiL3F0 YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3gvdHN0X3Fjb21ib2JveC5j cHAKK2luZGV4IDMyNDM3MDUwZjUuLjQ2YjVhZjZkNjMgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVz dHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94L3RzdF9xY29tYm9ib3guY3BwCisrKysg Yi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94L3RzdF9xY29tYm9i b3guY3BwCitAQCAtMTY4LDYgKzE2OCw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgY2hl Y2tNZW51SXRlbVBvc1doZW5TdHlsZVNoZWV0SXNTZXQoKTsKKyAgICAgdm9pZCBjaGVja0VtYmVk ZGVkTGluZUVkaXRXaGVuU3R5bGVTaGVldElzU2V0KCk7CisgICAgIHZvaWQgcHJvcGFnYXRlU3R5 bGVDaGFuZ2VzKCk7CisrICAgIHZvaWQgYnV0dG9uUHJlc3NLZXlzKCk7CisgCisgcHJpdmF0ZToK KyAgICAgUGxhdGZvcm1JbnB1dENvbnRleHQgbV9wbGF0Zm9ybUlucHV0Q29udGV4dDsKK0BAIC0x NjgyLDYgKzE2ODMsMTYgQEAgdm9pZCB0c3RfUUNvbWJvQm94OjpzZXRNb2RlbCgpCisgICAgIFFD T01QQVJFKGJveC5yb290TW9kZWxJbmRleCgpLCByb290TW9kZWxJbmRleCk7CisgICAgIGJveC5z ZXRNb2RlbChib3gubW9kZWwoKSk7CisgICAgIFFDT01QQVJFKGJveC5yb290TW9kZWxJbmRleCgp LCByb290TW9kZWxJbmRleCk7CisrCisrICAgIC8vIGNoZWNrIHRoYXQgc2V0dGluZyB0aGUgc2Ft ZSBtb2RlbCBhcyB0aGUgY29tcGxldGVyJ3MgZG9lc24ndCBjcmFzaAorKyAgICBRQ29tcGxldGVy ICpjb21wbGV0ZXIgPSBuZXcgUUNvbXBsZXRlcigmYm94KTsKKysgICAgYm94LnNldEVkaXRhYmxl KHRydWUpOworKyAgICBib3guc2V0Q29tcGxldGVyKGNvbXBsZXRlcik7CisrICAgIGF1dG8gKmxp c3RNb2RlbCA9IG5ldyBRU3RyaW5nTGlzdE1vZGVsKHsgIm9uZSIsICJ0d28iIH0sIGNvbXBsZXRl cik7CisrICAgIGNvbXBsZXRlci0+c2V0TW9kZWwobGlzdE1vZGVsKTsKKysgICAgUUNPTVBBUkUo bGlzdE1vZGVsLT5yb3dDb3VudCgpLCAyKTsgLy8gbWFrZSBzdXJlIGl0IHdhc24ndCBkZWxldGVk CisrICAgIGJveC5zZXRNb2RlbChsaXN0TW9kZWwpOworKyAgICBRQ09NUEFSRShsaXN0TW9kZWwt PnJvd0NvdW50KCksIDIpOyAvLyBtYWtlIHN1cmUgaXQgd2Fzbid0IGRlbGV0ZWQKKyB9CisgCisg dm9pZCB0c3RfUUNvbWJvQm94OjpzZXRDdXN0b21Nb2RlbEFuZFZpZXcoKQorQEAgLTM2MzIsNSAr MzY0MywyNCBAQCB2b2lkIHRzdF9RQ29tYm9Cb3g6OnByb3BhZ2F0ZVN0eWxlQ2hhbmdlcygpCisg ICAgIFFWRVJJRlkoZnJhbWVTdHlsZS5pbnF1aXJlZCk7CisgfQorIAorK3ZvaWQgdHN0X1FDb21i b0JveDo6YnV0dG9uUHJlc3NLZXlzKCkKKyt7CisrICAgIFFDb21ib0JveCBjb21ib0JveDsKKysg ICAgY29tYm9Cb3guc2V0RWRpdGFibGUoZmFsc2UpOworKyAgICBjb21ib0JveC5hZGRJdGVtKFFT dHJpbmc6Om51bWJlcigxKSk7CisrICAgIGNvbWJvQm94LmFkZEl0ZW0oUVN0cmluZzo6bnVtYmVy KDIpKTsKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Q cml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6 OktleT4+KCk7CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYnV0dG9uUHJlc3NLZXlzLmxlbmd0 aCgpOyArK2kpIHsKKysgICAgICAgIFFUZXN0OjprZXlDbGljaygmY29tYm9Cb3gsIGJ1dHRvblBy ZXNzS2V5c1tpXSk7CisrICAgICAgICAvLyBPbiBzb21lIHBsYXRmb3JtcywgYSB3aW5kb3cgd2ls bCBub3QgYmUgaW1tZWRpYXRlbHkgdmlzaWJsZSwKKysgICAgICAgIC8vIGJ1dCB0YWtlIHNvbWUg ZXZlbnQtbG9vcCBpdGVyYXRpb25zIHRvIGNvbXBsZXRlLgorKyAgICAgICAgLy8gVXNpbmcgUVRS WV9WRVJJRlkgdG8gZGVhbCB3aXRoIHRoYXQuCisrICAgICAgICBRVFJZX1ZFUklGWShjb21ib0Jv eC52aWV3KCktPmlzVmlzaWJsZSgpKTsKKysgICAgICAgIGNvbWJvQm94LmhpZGVQb3B1cCgpOwor KyAgICB9CisrfQorKworIFFURVNUX01BSU4odHN0X1FDb21ib0JveCkKKyAjaW5jbHVkZSAidHN0 X3Fjb21ib2JveC5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93 aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9xY29tbWFuZGxpbmtidXR0b24ucHJvIGIvcXRiYXNl L3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9xY29tbWFuZGxp bmtidXR0b24ucHJvCitpbmRleCBiZTNjZmNkMTA0Li5jMjI4ZmRmY2NhIDEwMDY0NAorLS0tIGEv cXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9xY29t bWFuZGxpbmtidXR0b24ucHJvCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdl dHMvcWNvbW1hbmRsaW5rYnV0dG9uL3Fjb21tYW5kbGlua2J1dHRvbi5wcm8KK0BAIC0xLDYgKzEs NiBAQAorIENPTkZJRyArPSB0ZXN0Y2FzZQorIFRBUkdFVCA9IHRzdF9xY29tbWFuZGxpbmtidXR0 b24KKy1RVCArPSB3aWRnZXRzIHRlc3RsaWIKKytRVCArPSB3aWRnZXRzIHRlc3RsaWIgZ3VpLXBy aXZhdGUKKyBTT1VSQ0VTICArPSB0c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcAorIAorIAorZGlm ZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmti dXR0b24vdHN0X3Fjb21tYW5kbGlua2J1dHRvbi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRn ZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3RzdF9xY29tbWFuZGxpbmtidXR0b24uY3Bw CitpbmRleCAwMDQ0ZDMzYzY2Li40Y2YwNjI5NmU0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3Rz L2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi90c3RfcWNvbW1hbmRsaW5r YnV0dG9uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21t YW5kbGlua2J1dHRvbi90c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcAorQEAgLTQwLDYgKzQwLDkg QEAKKyAjaW5jbHVkZSA8UUdyaWRMYXlvdXQ+CisgI2luY2x1ZGUgPFFQYWludGVyPgorIAorKyNp bmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNhdGlvbl9wLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxh dGZvcm10aGVtZS5oPgorKworIGNsYXNzIHRzdF9RQ29tbWFuZExpbmtCdXR0b24gOiBwdWJsaWMg UU9iamVjdAorIHsKKyAgICAgUV9PQkpFQ1QKK0BAIC0yMjMsNiArMjI2LDEzIEBAIHZvaWQgdHN0 X1FDb21tYW5kTGlua0J1dHRvbjo6c2V0QXV0b1JlcGVhdCgpCisgICAgIC8vIGNoZWNrIHRoYXQg cHJlc3NpbmcgRU5URVIgaGFzIG5vIGVmZmVjdAorICAgICByZXNldENvdW50ZXJzKCk7CisgICAg IHRlc3RXaWRnZXQtPnNldERvd24oIGZhbHNlICk7CisrICAgIC8vIFNraXAgYWZ0ZXIgcmVzZXQg aWYgQnV0dG9uUHJlc3NLZXlzIGhhcyBLZXlfRW50ZXIKKysgICAgY29uc3QgYXV0byBidXR0b25Q cmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9y bVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGlmIChidXR0b25QcmVz c0tleXMuY29udGFpbnMoUXQ6OktleV9FbnRlcikpIHsKKysgICAgICAgIHJldHVybjsKKysgICAg fQorICAgICB0ZXN0V2lkZ2V0LT5zZXRBdXRvUmVwZWF0KCBmYWxzZSApOworICAgICBRVGVzdDo6 a2V5UHJlc3MoIHRlc3RXaWRnZXQsIFF0OjpLZXlfRW50ZXIgKTsKKyAKK0BAIC0yNTUsNiArMjY1 LDE0IEBAIHZvaWQgdHN0X1FDb21tYW5kTGlua0J1dHRvbjo6cHJlc3NlZCgpCisgICAgIFFDT01Q QVJFKCBwcmVzc19jb3VudCwgKHVpbnQpMSApOworICAgICBRQ09NUEFSRSggcmVsZWFzZV9jb3Vu dCwgKHVpbnQpMSApOworIAorKyAgICAvLyBTa2lwIGlmIEJ1dHRvblByZXNzS2V5cyBoYXMgS2V5 X0VudGVyCisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9u UHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0 OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50 ZXIpKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKyAgICAgUVRlc3Q6OmtleVByZXNz KCB0ZXN0V2lkZ2V0LFF0OjpLZXlfRW50ZXIgKTsKKyAgICAgUUNPTVBBUkUoIHByZXNzX2NvdW50 LCAodWludCkxICk7CisgICAgIFFDT01QQVJFKCByZWxlYXNlX2NvdW50LCAodWludCkxICk7Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9x Z3JvdXBib3gucHJvIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJv eC9xZ3JvdXBib3gucHJvCitpbmRleCA0YTVlNzZmZjY1Li5hMjM1ZmExZmFjIDEwMDY0NAorLS0t IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBib3gu cHJvCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3Fn cm91cGJveC5wcm8KK0BAIC0xLDYgKzEsNiBAQAorIENPTkZJRyArPSB0ZXN0Y2FzZQorIFRBUkdF VCA9IHRzdF9xZ3JvdXBib3gKKy1RVCArPSB3aWRnZXRzIHRlc3RsaWIKKytRVCArPSB3aWRnZXRz IHRlc3RsaWIgZ3VpLXByaXZhdGUKKyBTT1VSQ0VTICArPSB0c3RfcWdyb3VwYm94LmNwcAorIAor IAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBi b3gvdHN0X3Fncm91cGJveC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMv cWdyb3VwYm94L3RzdF9xZ3JvdXBib3guY3BwCitpbmRleCA0ZmI1ZDI2MmNhLi5kOGQ3NTYyYjcz IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJv eC90c3RfcWdyb3VwYm94LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRn ZXRzL3Fncm91cGJveC90c3RfcWdyb3VwYm94LmNwcAorQEAgLTM1LDYgKzM1LDkgQEAKKyAjaW5j bHVkZSA8UVJhZGlvQnV0dG9uPgorICNpbmNsdWRlIDxRRGlhbG9nPgorIAorKyNpbmNsdWRlIDxw cml2YXRlL3FndWlhcHBsaWNhdGlvbl9wLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVt ZS5oPgorKworICNpbmNsdWRlICJxZ3JvdXBib3guaCIKKyAKKyBjbGFzcyB0c3RfUUdyb3VwQm94 IDogcHVibGljIFFPYmplY3QKK0BAIC02OSw2ICs3Miw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAg IHZvaWQgcHJvcGFnYXRlRm9jdXMoKTsKKyAgICAgdm9pZCB0YXNrX1FUQlVHXzE5MTcwX2lnbm9y ZU1vdXNlUmVsZWFzZUV2ZW50KCk7CisgICAgIHZvaWQgdGFza19RVEJVR18xNTUxOV9wcm9wYWdh dGVNb3VzZUV2ZW50cygpOworKyAgICB2b2lkIGJ1dHRvblByZXNzS2V5cygpOworIAorIHByaXZh dGU6CisgICAgIGJvb2wgY2hlY2tlZDsKK0BAIC02MTAsNiArNjE0LDIwIEBAIHZvaWQgdHN0X1FH cm91cEJveDo6dGFza19RVEJVR18xNTUxOV9wcm9wYWdhdGVNb3VzZUV2ZW50cygpCisgICAgIFFD T01QQVJFKHBhcmVudC5tb3VzZU1vdmVkLCB0cnVlKTsKKyB9CisgCisrdm9pZCB0c3RfUUdyb3Vw Qm94OjpidXR0b25QcmVzc0tleXMoKQorK3sKKysgICAgUUdyb3VwQm94IGdyb3VwQm94OworKyAg ICBncm91cEJveC5zZXRDaGVja2FibGUodHJ1ZSk7CisrICAgIFFTaWduYWxTcHkgY2xpY2tlZFNw eSgmZ3JvdXBCb3gsICZRR3JvdXBCb3g6OmNsaWNrZWQpOworKyAgICBjb25zdCBhdXRvIGJ1dHRv blByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRm b3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBidXR0b25QcmVzc0tleXMubGVuZ3RoKCk7ICsraSkgeworKyAgICAgICAgUVRlc3Q6 OmtleUNsaWNrKCZncm91cEJveCwgYnV0dG9uUHJlc3NLZXlzW2ldKTsKKysgICAgICAgIFFDT01Q QVJFKGNsaWNrZWRTcHkubGVuZ3RoKCksIGkgKyAxKTsKKysgICAgfQorK30KKysKKyB2b2lkIHRz dF9RR3JvdXBCb3g6OnNlbmRNb3VzZU1vdmVFdmVudChRV2lkZ2V0ICp3aWRnZXQsIGNvbnN0IFFQ b2ludCAmbG9jYWxQb3MpCisgeworICAgICAvLyBTZW5kIGEgTW91c2VNb3ZlIGV2ZW50IHdpdGhv dXQgYWN0dWFsbHkgbW92aW5nIHRoZSBwb2ludGVyCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3Rz L2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3FwdXNoYnV0dG9uLnBybyBiL3F0YmFz ZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi9xcHVzaGJ1dHRvbi5wcm8K K2luZGV4IDM1M2FkMDZjYTIuLmU1NWY2MTQ4ZjIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMv YXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vcXB1c2hidXR0b24ucHJvCisrKysgYi9x dGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vcXB1c2hidXR0b24u cHJvCitAQCAtMSw2ICsxLDYgQEAKKyBDT05GSUcgKz0gdGVzdGNhc2UKKyBUQVJHRVQgPSB0c3Rf cXB1c2hidXR0b24KKy1RVCArPSB3aWRnZXRzIHRlc3RsaWIKKytRVCArPSB3aWRnZXRzIHRlc3Rs aWIgZ3VpLXByaXZhdGUKKyBTT1VSQ0VTICArPSB0c3RfcXB1c2hidXR0b24uY3BwCisgCisgCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9u L3RzdF9xcHVzaGJ1dHRvbi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMv cXB1c2hidXR0b24vdHN0X3FwdXNoYnV0dG9uLmNwcAoraW5kZXggZTgxODUxNGE3OS4uNDA0M2U5 MzI2YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVz aGJ1dHRvbi90c3RfcXB1c2hidXR0b24uY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRn ZXRzL3dpZGdldHMvcXB1c2hidXR0b24vdHN0X3FwdXNoYnV0dG9uLmNwcAorQEAgLTQxLDYgKzQx LDkgQEAKKyAjaW5jbHVkZSA8UVN0eWxlRmFjdG9yeT4KKyAjaW5jbHVkZSA8UVRhYldpZGdldD4K KyAKKysjaW5jbHVkZSA8cHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRlIDxx cGEvcXBsYXRmb3JtdGhlbWUuaD4KKysKKyBjbGFzcyB0c3RfUVB1c2hCdXR0b24gOiBwdWJsaWMg UU9iamVjdAorIHsKKyBRX09CSkVDVAorQEAgLTIxMiw2ICsyMTUsMTMgQEAgdm9pZCB0c3RfUVB1 c2hCdXR0b246OmF1dG9SZXBlYXQoKQorICAgICAvLyBjaGVjayB0aGF0IHByZXNzaW5nIEVOVEVS IGhhcyBubyBlZmZlY3QKKyAgICAgcmVzZXRDb3VudGVycygpOworICAgICB0ZXN0V2lkZ2V0LT5z ZXREb3duKCBmYWxzZSApOworKyAgICAvLyBTa2lwIGFmdGVyIHJlc2V0IGlmIEJ1dHRvblByZXNz S2V5cyBoYXMgS2V5X0VudGVyCisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1 aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9u UHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZh bHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5z KFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKyAgICAgdGVzdFdp ZGdldC0+c2V0QXV0b1JlcGVhdCggZmFsc2UgKTsKKyAgICAgUVRlc3Q6OmtleVByZXNzKCB0ZXN0 V2lkZ2V0LCBRdDo6S2V5X0VudGVyICk7CisgCitAQCAtMjQ3LDYgKzI1NywxNCBAQCB2b2lkIHRz dF9RUHVzaEJ1dHRvbjo6cHJlc3NlZCgpCisgICAgIFFDT01QQVJFKCBwcmVzc19jb3VudCwgKHVp bnQpMSApOworICAgICBRQ09NUEFSRSggcmVsZWFzZV9jb3VudCwgKHVpbnQpMSApOworIAorKyAg ICAvLyBTa2lwIGlmIEJ1dHRvblByZXNzS2V5cyBoYXMgS2V5X0VudGVyCisrICAgIGNvbnN0IGF1 dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVt ZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGlu dChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAo YnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICByZXR1 cm47CisrICAgIH0KKysKKyAgICAgUVRlc3Q6OmtleVByZXNzKCB0ZXN0V2lkZ2V0LFF0OjpLZXlf RW50ZXIgKTsKKyAgICAgUUNPTVBBUkUoIHByZXNzX2NvdW50LCAodWludCkxICk7CisgICAgIFFD T01QQVJFKCByZWxlYXNlX2NvdW50LCAodWludCkxICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL21hbnVhbC9yaGkvY3ViZW1hcF9yZW5kZXIvYnVpbGRzaGFkZXIuYmF0IGIvcXRiYXNlL3Rl c3RzL21hbnVhbC9yaGkvY3ViZW1hcF9yZW5kZXIvYnVpbGRzaGFkZXIuYmF0CitvbGQgbW9kZSAx MDA3NTUKK25ldyBtb2RlIDEwMDY0NAorU3VibW9kdWxlIHF0Y29ubmVjdGl2aXR5IGU5NTdkNDgx Li4wNTYyOTRjMDoKK2RpZmYgLS1naXQgYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL2Js dWV6L2hjaW1hbmFnZXIuY3BwIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9ibHVlei9o Y2ltYW5hZ2VyLmNwcAoraW5kZXggZTI2MzVmYWUuLmE4YjhlM2I5IDEwMDY0NAorLS0tIGEvcXRj b25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9ibHVlei9oY2ltYW5hZ2VyLmNwcAorKysrIGIvcXRj b25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9ibHVlei9oY2ltYW5hZ2VyLmNwcAorQEAgLTU2Myw5 ICs1NjMsMTEgQEAgdm9pZCBIY2lNYW5hZ2VyOjpoYW5kbGVIY2lBY2xQYWNrZXQoY29uc3QgcXVp bnQ4ICpkYXRhLCBpbnQgc2l6ZSkKKyAKKyB2b2lkIEhjaU1hbmFnZXI6OmhhbmRsZUxlTWV0YUV2 ZW50KGNvbnN0IHF1aW50OCAqZGF0YSkKKyB7CistICAgIC8vIFNwZWMgdjQuMiwgVm9sIDIsIHBh cnQgRSwgNy43LjY1ZmYKKysgICAgLy8gU3BlYyB2NS4zLCBWb2wgNCwgcGFydCBFLCA3LjcuNjUu KgorICAgICBzd2l0Y2ggKCpkYXRhKSB7CistICAgIGNhc2UgMHgxOiB7CisrICAgIGNhc2UgMHgx OiAvLyBIQ0lfTEVfQ29ubmVjdGlvbl9Db21wbGV0ZQorKyAgICBjYXNlIDB4QTogLy8gSENJX0xF X0VuaGFuY2VkX0Nvbm5lY3Rpb25fQ29tcGxldGUKKysgICAgeworICAgICAgICAgY29uc3QgcXVp bnQxNiBoYW5kbGUgPSBidF9nZXRfbGUxNihkYXRhICsgMik7CisgICAgICAgICBlbWl0IGNvbm5l Y3Rpb25Db21wbGV0ZShoYW5kbGUpOworICAgICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvcXRj b25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFnZW50 X2JsdWV6LmNwcCBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZp Y2VkaXNjb3ZlcnlhZ2VudF9ibHVlei5jcHAKK2luZGV4IDZhOTMxNDNiLi40YTE4Y2ZjNyAxMDA2 NDQKKy0tLSBhL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZpY2Vk aXNjb3ZlcnlhZ2VudF9ibHVlei5jcHAKKysrKyBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9v dGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3ZlcnlhZ2VudF9ibHVlei5jcHAKK0BAIC0zMjAsNyAr MzIwLDEwIEBAIHZvaWQgUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudFByaXZhdGU6Ol9x X2ZpbmlzaFNkcFNjYW4oUUJsdWV0b290aFNlcnZpY2VECisgICAgICAgICAgICAgZm9yIChjb25z dCBRQmx1ZXRvb3RoVXVpZCAmaWQgOiBzZXJ2aWNlQ2xhc3NVdWlkcykgeworICAgICAgICAgICAg ICAgICBpZiAoaWQubWluaW11bVNpemUoKSA9PSAxNikgeworICAgICAgICAgICAgICAgICAgICAg c2VydmljZUluZm8uc2V0U2VydmljZVV1aWQoaWQpOworLSAgICAgICAgICAgICAgICAgICAgc2Vy dmljZUluZm8uc2V0U2VydmljZU5hbWUoUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6 dHIoIkN1c3RvbSBTZXJ2aWNlIikpOworKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2VJ bmZvLnNlcnZpY2VOYW1lKCkuaXNFbXB0eSgpKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAg c2VydmljZUluZm8uc2V0U2VydmljZU5hbWUoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6dHIoIkN1c3RvbSBTZXJ2 aWNlIikpOworKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgUUJs dWV0b290aFNlcnZpY2VJbmZvOjpTZXF1ZW5jZSBtb2RTZXEgPQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZXJ2aWNlSW5mby5hdHRyaWJ1dGUoUUJsdWV0b290aFNlcnZpY2VJbmZvOjpT ZXJ2aWNlQ2xhc3NJZHMpLnZhbHVlPFFCbHVldG9vdGhTZXJ2aWNlSW5mbzo6U2VxdWVuY2U+KCk7 CisgICAgICAgICAgICAgICAgICAgICBtb2RTZXEucmVtb3ZlT25lKFFWYXJpYW50Ojpmcm9tVmFs dWUoaWQpKTsKK0BAIC0zMzQsOCArMzM3LDEwIEBAIHZvaWQgUUJsdWV0b290aFNlcnZpY2VEaXNj b3ZlcnlBZ2VudFByaXZhdGU6Ol9xX2ZpbmlzaFNkcFNjYW4oUUJsdWV0b290aFNlcnZpY2VECisg ICAgICAgICAgICAgICAgIHFDRGVidWcoUVRfQlRfQkxVRVopIDw8ICJEaXNjb3ZlcmVkIHNlcnZp Y2VzIiA8PCBkaXNjb3ZlcmVkRGV2aWNlcy5hdCgwKS5hZGRyZXNzKCkudG9TdHJpbmcoKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzZXJ2aWNlSW5mby5zZXJ2aWNl TmFtZSgpIDw8IHNlcnZpY2VJbmZvLnNlcnZpY2VVdWlkKCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPDwgIj4+PiIgPDwgc2VydmljZUluZm8uc2VydmljZUNsYXNzVXVp ZHMoKTsKKy0KKy0gICAgICAgICAgICAgICAgZW1pdCBxLT5zZXJ2aWNlRGlzY292ZXJlZChzZXJ2 aWNlSW5mbyk7CisrICAgICAgICAgICAgICAgIC8vIFVzZSBxdWV1ZWQgY29ubmVjdGlvbiB0byBh bGxvdyB1cyBmaW5pc2ggdGhlIHNlcnZpY2UgbG9vcGluZzsgdGhlIGFwcGxpY2F0aW9uCisrICAg ICAgICAgICAgICAgIC8vIG1pZ2h0IGNhbGwgc3RvcCgpIHdoZW4gaXQgaGFzIGRldGVjdGVkIHRo ZSBzZXJ2aWNlLW9mLWludGVyZXN0LgorKyAgICAgICAgICAgICAgICBRTWV0YU9iamVjdDo6aW52 b2tlTWV0aG9kKHEsICJzZXJ2aWNlRGlzY292ZXJlZCIsIFF0OjpRdWV1ZWRDb25uZWN0aW9uLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFfQVJHKFFCbHVldG9v dGhTZXJ2aWNlSW5mbywgc2VydmljZUluZm8pKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9 CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVl dG9vdGhzb2NrZXQuY3BwIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Ro c29ja2V0LmNwcAoraW5kZXggZTRkODU0NDcuLmFhZGQ0NzU1IDEwMDY0NAorLS0tIGEvcXRjb25u ZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0LmNwcAorKysrIGIvcXRjb25u ZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0LmNwcAorQEAgLTU5Myw3ICs1 OTMsNyBAQCB2b2lkIFFCbHVldG9vdGhTb2NrZXQ6OnNldFNvY2tldFN0YXRlKFFCbHVldG9vdGhT b2NrZXQ6OlNvY2tldFN0YXRlIHN0YXRlKQorIGJvb2wgUUJsdWV0b290aFNvY2tldDo6Y2FuUmVh ZExpbmUoKSBjb25zdAorIHsKKyAgICAgUV9EKGNvbnN0IFFCbHVldG9vdGhTb2NrZXRCYXNlKTsK Ky0gICAgcmV0dXJuIGQtPmNhblJlYWRMaW5lKCk7CisrICAgIHJldHVybiBkLT5jYW5SZWFkTGlu ZSgpIHx8IFFJT0RldmljZTo6Y2FuUmVhZExpbmUoKTsKKyB9CisgCisgLyohCitkaWZmIC0tZ2l0 IGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1 cy5jcHAgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXRfYmx1 ZXpkYnVzLmNwcAoraW5kZXggMDg0YWE5NTguLmQ2YWExN2E3IDEwMDY0NAorLS0tIGEvcXRjb25u ZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1cy5jcHAKKysr KyBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldF9ibHVlemRi dXMuY3BwCitAQCAtMjg0LDYgKzI4NCwxMCBAQCB2b2lkIFFCbHVldG9vdGhTb2NrZXRQcml2YXRl Qmx1ZXpEQnVzOjpjb25uZWN0VG9TZXJ2aWNlKAorICAgICAgICAgcmV0dXJuOworICAgICB9Cisg CisrICAgIGlmIChzZXJ2aWNlLnNvY2tldFByb3RvY29sKCkgIT0gUUJsdWV0b290aFNlcnZpY2VJ bmZvOjpQcm90b2NvbDo6VW5rbm93blByb3RvY29sKQorKyAgICAgICAgc29ja2V0VHlwZSA9IHNl cnZpY2Uuc29ja2V0UHJvdG9jb2woKTsKKysgICAgcUNEZWJ1ZyhRVF9CVF9CTFVFWikgPDwgIlNv Y2tldCBwcm90b2NvbCB1c2VkOiIgPDwgc29ja2V0VHlwZTsKKysKKyAgICAgY29ubmVjdFRvU2Vy dmljZShzZXJ2aWNlLmRldmljZSgpLmFkZHJlc3MoKSwgdGFyZ2V0U2VydmljZSwgb3Blbk1vZGUp OworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGNvbm5lY3Rpdml0eS90ZXN0cy9hdXRvL3FibHVldG9v dGhzb2NrZXQvdHN0X3FibHVldG9vdGhzb2NrZXQuY3BwIGIvcXRjb25uZWN0aXZpdHkvdGVzdHMv YXV0by9xYmx1ZXRvb3Roc29ja2V0L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNwcAoraW5kZXggMDVi YzFhMGYuLmE3YjVlZjFmIDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9x Ymx1ZXRvb3Roc29ja2V0L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNwcAorKysrIGIvcXRjb25uZWN0 aXZpdHkvdGVzdHMvYXV0by9xYmx1ZXRvb3Roc29ja2V0L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNw cAorQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIHRzdF9RQmx1ZXRvb3RoU29ja2V0Ojppbml0VGVz dENhc2UoKQorICAgICBxRGVidWcoKSA8PCAiU3RhcnRpbmcgZGlzY292ZXJ5IjsKKyAKKyAgICAg c2RhLT5zZXRVdWlkRmlsdGVyKFFCbHVldG9vdGhVdWlkKFFTdHJpbmcoVEVTVF9TRVJWSUNFX1VV SUQpKSk7CistICAgIHNkYS0+c3RhcnQoUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6 TWluaW1hbERpc2NvdmVyeSk7CisrICAgIHNkYS0+c3RhcnQoUUJsdWV0b290aFNlcnZpY2VEaXNj b3ZlcnlBZ2VudDo6RnVsbERpc2NvdmVyeSk7CisgCisgICAgIGZvciAoaW50IGNvbm5lY3RUaW1l ID0gTWF4Q29ubmVjdFRpbWU7ICFkb25lX2Rpc2NvdmVyeSAmJiBjb25uZWN0VGltZSA+IDA7IGNv bm5lY3RUaW1lIC09IDEwMDApCisgICAgICAgICBRVGVzdDo6cVdhaXQoMTAwMCk7CitTdWJtb2R1 bGUgcXRkZWNsYXJhdGl2ZSBmNTcwMWYwZC4uOGRlZmU3YmY6CitkaWZmIC0tZ2l0IGEvcXRkZWNs YXJhdGl2ZS9zcmMvcW1sL2NvbW1vbi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmggYi9xdGRlY2xh cmF0aXZlL3NyYy9xbWwvY29tbW9uL3FxbWxqc2ZpeGVkcG9vbGFycmF5X3AuaAoraW5kZXggYjY1 Yjk5NGQ2Yy4uMTVhOGNkNjg3OCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9j b21tb24vcXFtbGpzZml4ZWRwb29sYXJyYXlfcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9x bWwvY29tbW9uL3FxbWxqc2ZpeGVkcG9vbGFycmF5X3AuaAorQEAgLTg2LDcgKzg2LDcgQEAgcHVi bGljOgorICAgICAgICAgaWYgKFFUeXBlSW5mbzxUPjo6aXNDb21wbGV4KSB7CisgICAgICAgICAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgICAgICBuZXcg KGRhdGEgKyBpKSBUKHZlY3Rvci5hdChpKSk7CistICAgICAgICB9IGVsc2UgeworKyAgICAgICAg fSBlbHNlIGlmIChjb3VudCkgeworICAgICAgICAgICAgIG1lbWNweShkYXRhLCBzdGF0aWNfY2Fz dDxjb25zdCB2b2lkKj4odmVjdG9yLmNvbnN0RGF0YSgpKSwgY291bnQgKiBzaXplb2YoVCkpOwor ICAgICAgICAgfQorICAgICB9CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2pz cnVudGltZS9xdjRxb2JqZWN0d3JhcHBlci5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvanNy dW50aW1lL3F2NHFvYmplY3R3cmFwcGVyLmNwcAoraW5kZXggZTU3Y2RkODI3OC4uOTQ2MTM1OThh ZiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9qc3J1bnRpbWUvcXY0cW9iamVj dHdyYXBwZXIuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFv YmplY3R3cmFwcGVyLmNwcAorQEAgLTExNDUsOCArMTE0NSw3IEBAIHZvaWQgSGVhcDo6UU9iamVj dFdyYXBwZXI6Om1hcmtPYmplY3RzKEhlYXA6OkJhc2UgKnRoYXQsIFFWNDo6TWFya1N0YWNrICpt YXJrU3RhCisgdm9pZCBRT2JqZWN0V3JhcHBlcjo6ZGVzdHJveU9iamVjdChib29sIGxhc3RDYWxs KQorIHsKKyAgICAgSGVhcDo6UU9iamVjdFdyYXBwZXIgKmggPSBkKCk7CistICAgIGlmICghaC0+ aW50ZXJuYWxDbGFzcykKKy0gICAgICAgIHJldHVybjsgLy8gZGVzdHJveU9iamVjdCBhbHJlYWR5 IGdvdCBjYWxsZWQKKysgICAgUV9BU1NFUlQoaC0+aW50ZXJuYWxDbGFzcyk7CisgCisgICAgIGlm IChoLT5vYmplY3QoKSkgeworICAgICAgICAgUVFtbERhdGEgKmRkYXRhID0gUVFtbERhdGE6Omdl dChoLT5vYmplY3QoKSwgZmFsc2UpOworQEAgLTExNzYsNyArMTE3NSw3IEBAIHZvaWQgUU9iamVj dFdyYXBwZXI6OmRlc3Ryb3lPYmplY3QoYm9vbCBsYXN0Q2FsbCkKKyAgICAgICAgIH0KKyAgICAg fQorIAorLSAgICBoLT5+RGF0YSgpOworKyAgICBoLT5kZXN0cm95KCk7CisgfQorIAorIAorZGlm ZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9tZW1vcnkvcXY0bW0uY3BwIGIvcXRkZWNs YXJhdGl2ZS9zcmMvcW1sL21lbW9yeS9xdjRtbS5jcHAKK2luZGV4IDA2Y2FmMDRlNWEuLmRhMTQ5 YTY3YzQgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1tLmNw cAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL21lbW9yeS9xdjRtbS5jcHAKK0BAIC05ODEs NyArOTgxLDcgQEAgdm9pZCBNZW1vcnlNYW5hZ2VyOjpzd2VlcChib29sIGxhc3RTd2VlcCwgQ2xh c3NEZXN0cm95U3RhdHNDYWxsYmFjayBjbGFzc0NvdW50UHQKKyAKKyAgICAgaWYgKE11bHRpcGx5 V3JhcHBlZFFPYmplY3RNYXAgKm11bHRpcGx5V3JhcHBlZFFPYmplY3RzID0gZW5naW5lLT5tX211 bHRpcGx5V3JhcHBlZFFPYmplY3RzKSB7CisgICAgICAgICBmb3IgKE11bHRpcGx5V3JhcHBlZFFP YmplY3RNYXA6Okl0ZXJhdG9yIGl0ID0gbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMtPmJlZ2luKCk7 IGl0ICE9IG11bHRpcGx5V3JhcHBlZFFPYmplY3RzLT5lbmQoKTspIHsKKy0gICAgICAgICAgICBp ZiAoIWl0LnZhbHVlKCkuaXNOdWxsT3JVbmRlZmluZWQoKSkKKysgICAgICAgICAgICBpZiAoaXQu dmFsdWUoKS5pc051bGxPclVuZGVmaW5lZCgpKQorICAgICAgICAgICAgICAgICBpdCA9IG11bHRp cGx5V3JhcHBlZFFPYmplY3RzLT5lcmFzZShpdCk7CisgICAgICAgICAgICAgZWxzZQorICAgICAg ICAgICAgICAgICArK2l0OworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVs cy9xcW1sZGVsZWdhdGVtb2RlbC5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFt bGRlbGVnYXRlbW9kZWwuY3BwCitpbmRleCAyMDc5YThlZDA0Li5hNTc3Y2IyMzUxIDEwMDY0NAor LS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAor KysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAor QEAgLTM4OSw2ICszODksMTIgQEAgdm9pZCBRUW1sRGVsZWdhdGVNb2RlbFByaXZhdGU6OmNvbm5l Y3RUb0Fic3RyYWN0SXRlbU1vZGVsKCkKKyAgICAgICAgICAgICAgICAgICAgICAgcSwgIFFRbWxE ZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX3Jvd3NSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7 CisgICAgIHFtbG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwo cm93c0Fib3V0VG9CZVJlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLAorICAgICAgICAgICAg ICAgICAgICAgICBxLCAgUVFtbERlbGVnYXRlTW9kZWwsIFNMT1QoX3Ffcm93c0Fib3V0VG9CZVJl bW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWlt LCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChjb2x1bW5zSW5zZXJ0ZWQoUU1vZGVsSW5kZXgs aW50LGludCkpLAorKyAgICAgICAgICAgICAgICAgICAgICBxLCBRUW1sRGVsZWdhdGVNb2RlbCwg U0xPVChfcV9jb2x1bW5zSW5zZXJ0ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgcW1s b2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChjb2x1bW5zUmVt b3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSksCisrICAgICAgICAgICAgICAgICAgICAgIHEsIFFR bWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2NvbHVtbnNSZW1vdmVkKFFNb2RlbEluZGV4LGludCxp bnQpKSk7CisrICAgIHFtbG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBT SUdOQUwoY29sdW1uc01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSks CisrICAgICAgICAgICAgICAgICAgICAgIHEsIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2Nv bHVtbnNNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpKTsKKyAgICAg cW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChkYXRhQ2hh bmdlZChRTW9kZWxJbmRleCxRTW9kZWxJbmRleCxRVmVjdG9yPGludD4pKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgcSwgUVFtbERlbGVnYXRlTW9kZWwsIFNMT1QoX3FfZGF0YUNoYW5nZWQoUU1v ZGVsSW5kZXgsUU1vZGVsSW5kZXgsUVZlY3RvcjxpbnQ+KSkpOworICAgICBxbWxvYmplY3RfY29u bmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFMKHJvd3NNb3ZlZChRTW9kZWxJbmRl eCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpLAorQEAgLTQxMyw2ICs0MTksMTIgQEAgdm9pZCBR UW1sRGVsZWdhdGVNb2RlbFByaXZhdGU6OmRpc2Nvbm5lY3RGcm9tQWJzdHJhY3RJdGVtTW9kZWwo KQorICAgICAgICAgICAgICAgICAgICAgICAgIHEsIFNMT1QoX3Ffcm93c0Fib3V0VG9CZVJlbW92 ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0s IFNJR05BTChyb3dzUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSksCisgICAgICAgICAgICAg ICAgICAgICAgICAgcSwgU0xPVChfcV9yb3dzUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkp OworKyAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKGNvbHVtbnNJbnNlcnRlZChR TW9kZWxJbmRleCxpbnQsaW50KSksIHEsCisrICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChf cV9jb2x1bW5zSW5zZXJ0ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgUU9iamVjdDo6 ZGlzY29ubmVjdChhaW0sIFNJR05BTChjb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50 KSksIHEsCisrICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChfcV9jb2x1bW5zUmVtb3ZlZChR TW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lH TkFMKGNvbHVtbnNNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpLCBx LAorKyAgICAgICAgICAgICAgICAgICAgICAgIFNMT1QoX3FfY29sdW1uc01vdmVkKFFNb2RlbElu ZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSkpOworICAgICBRT2JqZWN0OjpkaXNjb25uZWN0 KGFpbSwgU0lHTkFMKGRhdGFDaGFuZ2VkKFFNb2RlbEluZGV4LFFNb2RlbEluZGV4LFFWZWN0b3I8 aW50PikpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHEsIFNMT1QoX3FfZGF0YUNoYW5nZWQo UU1vZGVsSW5kZXgsUU1vZGVsSW5kZXgsUVZlY3RvcjxpbnQ+KSkpOworICAgICBRT2JqZWN0Ojpk aXNjb25uZWN0KGFpbSwgU0lHTkFMKHJvd3NNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2Rl bEluZGV4LGludCkpLAorQEAgLTE5NzMsNiArMTk4NSwzOCBAQCB2b2lkIFFRbWxEZWxlZ2F0ZU1v ZGVsOjpfcV9yb3dzTW92ZWQoCisgICAgIH0KKyB9CisgCisrdm9pZCBRUW1sRGVsZWdhdGVNb2Rl bDo6X3FfY29sdW1uc0luc2VydGVkKGNvbnN0IFFNb2RlbEluZGV4ICZwYXJlbnQsIGludCBiZWdp biwgaW50IGVuZCkKKyt7CisrICAgIFFfRChRUW1sRGVsZWdhdGVNb2RlbCk7CisrICAgIFFfVU5V U0VEKGVuZCk7CisrICAgIGlmIChwYXJlbnQgPT0gZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4 ICYmIGJlZ2luID09IDApIHsKKysgICAgICAgIC8vIG1hcmsgYWxsIGl0ZW1zIGFzIGNoYW5nZWQK KysgICAgICAgIF9xX2l0ZW1zQ2hhbmdlZCgwLCBkLT5tX2NvdW50LCBRVmVjdG9yPGludD4oKSk7 CisrICAgIH0KKyt9CisrCisrdm9pZCBRUW1sRGVsZWdhdGVNb2RlbDo6X3FfY29sdW1uc1JlbW92 ZWQoY29uc3QgUU1vZGVsSW5kZXggJnBhcmVudCwgaW50IGJlZ2luLCBpbnQgZW5kKQorK3sKKysg ICAgUV9EKFFRbWxEZWxlZ2F0ZU1vZGVsKTsKKysgICAgUV9VTlVTRUQoZW5kKTsKKysgICAgaWYg KHBhcmVudCA9PSBkLT5tX2FkYXB0b3JNb2RlbC5yb290SW5kZXggJiYgYmVnaW4gPT0gMCkgewor KyAgICAgICAgLy8gbWFyayBhbGwgaXRlbXMgYXMgY2hhbmdlZAorKyAgICAgICAgX3FfaXRlbXND aGFuZ2VkKDAsIGQtPm1fY291bnQsIFFWZWN0b3I8aW50PigpKTsKKysgICAgfQorK30KKysKKyt2 b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9jb2x1bW5zTW92ZWQoY29uc3QgUU1vZGVsSW5kZXgg JnBhcmVudCwgaW50IHN0YXJ0LCBpbnQgZW5kLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBRTW9kZWxJbmRleCAmZGVzdGluYXRpb24sIGludCBjb2x1bW4p CisreworKyAgICBRX0QoUVFtbERlbGVnYXRlTW9kZWwpOworKyAgICBRX1VOVVNFRChlbmQpOwor KyAgICBpZiAoKHBhcmVudCA9PSBkLT5tX2FkYXB0b3JNb2RlbC5yb290SW5kZXggJiYgc3RhcnQg PT0gMCkKKysgICAgICAgIHx8IChkZXN0aW5hdGlvbiA9PSBkLT5tX2FkYXB0b3JNb2RlbC5yb290 SW5kZXggJiYgY29sdW1uID09IDApKSB7CisrICAgICAgICAvLyBtYXJrIGFsbCBpdGVtcyBhcyBj aGFuZ2VkCisrICAgICAgICBfcV9pdGVtc0NoYW5nZWQoMCwgZC0+bV9jb3VudCwgUVZlY3Rvcjxp bnQ+KCkpOworKyAgICB9CisrfQorKworIHZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX2RhdGFD aGFuZ2VkKGNvbnN0IFFNb2RlbEluZGV4ICZiZWdpbiwgY29uc3QgUU1vZGVsSW5kZXggJmVuZCwg Y29uc3QgUVZlY3RvcjxpbnQ+ICZyb2xlcykKKyB7CisgICAgIFFfRChRUW1sRGVsZWdhdGVNb2Rl bCk7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0 ZW1vZGVsX3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2Rl bF9wLmgKK2luZGV4IDhhYWI0YmFkY2EuLmQxNDBiZmJhYWYgMTAwNjQ0CistLS0gYS9xdGRlY2xh cmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWxfcC5oCisrKysgYi9xdGRlY2xh cmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWxfcC5oCitAQCAtMTUyLDYgKzE1 Miw5IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAgICAgdm9pZCBfcV9pdGVtc01vdmVkKGludCBmcm9t LCBpbnQgdG8sIGludCBjb3VudCk7CisgICAgIHZvaWQgX3FfbW9kZWxSZXNldCgpOworICAgICB2 b2lkIF9xX3Jvd3NJbnNlcnRlZChjb25zdCBRTW9kZWxJbmRleCAmLGludCxpbnQpOworKyAgICB2 b2lkIF9xX2NvbHVtbnNJbnNlcnRlZChjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQsIGludCk7Cisr ICAgIHZvaWQgX3FfY29sdW1uc1JlbW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJiwgaW50LCBpbnQp OworKyAgICB2b2lkIF9xX2NvbHVtbnNNb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQsIGlu dCwgY29uc3QgUU1vZGVsSW5kZXggJiwgaW50KTsKKyAgICAgdm9pZCBfcV9yb3dzQWJvdXRUb0Jl UmVtb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmcGFyZW50LCBpbnQgYmVnaW4sIGludCBlbmQpOwor ICAgICB2b2lkIF9xX3Jvd3NSZW1vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICYsaW50LGludCk7Cisg ICAgIHZvaWQgX3Ffcm93c01vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCwgaW50LCBjb25z dCBRTW9kZWxJbmRleCAmLCBpbnQpOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1 aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja2l0ZW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNraXRlbS5jcHAKK2luZGV4IDg1NzE5 ZmRjODAuLjc4ZTJhYjMwMmMgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9h Y2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2tpdGVtLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNraXRlbS5jcHAKK0BAIC00Niw2ICs0 Niw3IEBACisgI2luY2x1ZGUgIlF0UXVpY2svcHJpdmF0ZS9xcXVpY2t0ZXh0aW5wdXRfcC5oIgor ICNpbmNsdWRlICJRdFF1aWNrL3ByaXZhdGUvcXF1aWNrYWNjZXNzaWJsZWF0dGFjaGVkX3AuaCIK KyAjaW5jbHVkZSAiUXRRdWljay9xcXVpY2t0ZXh0ZG9jdW1lbnQuaCIKKysjaW5jbHVkZSAiUXRR dWljay9xcXVpY2tyZW5kZXJjb250cm9sLmgiCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgI2lm IFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorQEAgLTU3LDcgKzU4LDE5IEBAIFFBY2Nlc3NpYmxl UXVpY2tJdGVtOjpRQWNjZXNzaWJsZVF1aWNrSXRlbShRUXVpY2tJdGVtICppdGVtKQorIAorIFFX aW5kb3cgKlFBY2Nlc3NpYmxlUXVpY2tJdGVtOjp3aW5kb3coKSBjb25zdAorIHsKKy0gICAgcmV0 dXJuIGl0ZW0oKS0+d2luZG93KCk7CisrICAgIFFRdWlja1dpbmRvdyAqd2luZG93ID0gaXRlbSgp LT53aW5kb3coKTsKKysKKysgICAgLy8gRm9yIFFRdWlja1dpZGdldCB0aGUgYWJvdmUgd2luZG93 IHdpbGwgYmUgdGhlIG9mZnNjcmVlbiBRUXVpY2tXaW5kb3csCisrICAgIC8vIHdoaWNoIGlzIG5v dCBhIHBhcnQgb2YgdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4gRGV0ZWN0IHRoaXMgY2FzZSBhbmQK KysgICAgLy8gcmV0dXJuIHRoZSB3aW5kb3cgZm9yIHRoZSBRUXVpY2tXaWRnZXQgaW5zdGVhZC4K KysgICAgaWYgKHdpbmRvdyAmJiAhd2luZG93LT5oYW5kbGUoKSkgeworKyAgICAgICAgaWYgKFFR dWlja1JlbmRlckNvbnRyb2wgKnJlbmRlckNvbnRyb2wgPSBRUXVpY2tXaW5kb3dQcml2YXRlOjpn ZXQod2luZG93KS0+cmVuZGVyQ29udHJvbCkgeworKyAgICAgICAgICAgIGlmIChRV2luZG93ICpy ZW5kZXJXaW5kb3cgPSByZW5kZXJDb250cm9sLT5yZW5kZXJXaW5kb3cobnVsbHB0cikpCisrICAg ICAgICAgICAgICAgIHJldHVybiByZW5kZXJXaW5kb3c7CisrICAgICAgICB9CisrICAgIH0KKysK KysgICAgcmV0dXJuIHdpbmRvdzsKKyB9CisgCisgaW50IFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpj aGlsZENvdW50KCkgY29uc3QKK0BAIC0xMTMsMTkgKzEyNiwxNSBAQCBRQWNjZXNzaWJsZUludGVy ZmFjZSAqUUFjY2Vzc2libGVRdWlja0l0ZW06OmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdAor IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrSXRlbTo6cGFyZW50KCkgY29u c3QKKyB7CisgICAgIFFRdWlja0l0ZW0gKnBhcmVudCA9IGl0ZW0oKS0+cGFyZW50SXRlbSgpOwor LSAgICBRUXVpY2tXaW5kb3cgKndpbmRvdyA9IGl0ZW0oKS0+d2luZG93KCk7CistICAgIFFRdWlj a0l0ZW0gKmNpID0gd2luZG93ID8gd2luZG93LT5jb250ZW50SXRlbSgpIDogbnVsbHB0cjsKKysg ICAgUVF1aWNrV2luZG93ICppdGVtV2luZG93ID0gaXRlbSgpLT53aW5kb3coKTsKKysgICAgUVF1 aWNrSXRlbSAqY2kgPSBpdGVtV2luZG93ID8gaXRlbVdpbmRvdy0+Y29udGVudEl0ZW0oKSA6IG51 bGxwdHI7CisgICAgIHdoaWxlIChwYXJlbnQgJiYgIVFRdWlja0l0ZW1Qcml2YXRlOjpnZXQocGFy ZW50KS0+aXNBY2Nlc3NpYmxlICYmIHBhcmVudCAhPSBjaSkKKyAgICAgICAgIHBhcmVudCA9IHBh cmVudC0+cGFyZW50SXRlbSgpOworIAorICAgICBpZiAocGFyZW50KSB7CisgICAgICAgICBpZiAo cGFyZW50ID09IGNpKSB7CistICAgICAgICAgICAgLy8gSnVtcCBvdXQgdG8gdGhlIHNjZW5lIHdp ZGdldCBpZiB0aGUgcGFyZW50IGlzIHRoZSByb290IGl0ZW0uCistICAgICAgICAgICAgLy8gVGhl cmUgYXJlIHR3byByb290IGl0ZW1zLCBRUXVpY2tXaW5kb3c6OnJvb3RJdGVtIGFuZAorLSAgICAg ICAgICAgIC8vIFFRdWlja1ZpZXc6OmRlY2xhcmF0aXZlUm9vdC4gVGhlIGZvcm1lciBpcyB0aGUg dHJ1ZSByb290IGl0ZW0sCistICAgICAgICAgICAgLy8gYnV0IGlzIG5vdCBhIHBhcnQgb2YgdGhl IGFjY2Vzc2liaWxpdHkgdHJlZS4gQ2hlY2sgaWYgd2UgaGl0CistICAgICAgICAgICAgLy8gaXQg aGVyZSBhbmQgcmV0dXJuIGFuIGludGVyZmFjZSBmb3IgdGhlIHNjZW5lIGluc3RlYWQuCistICAg ICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2Uod2lu ZG93KTsKKysgICAgICAgICAgICAvLyBKdW1wIG91dCB0byB0aGUgd2luZG93IGlmIHRoZSBwYXJl bnQgaXMgdGhlIHJvb3QgaXRlbQorKyAgICAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6cXVl cnlBY2Nlc3NpYmxlSW50ZXJmYWNlKHdpbmRvdygpKTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAgd2hpbGUgKHBhcmVudCAmJiAhcGFyZW50LT5kX2Z1bmMoKS0+aXNBY2Nlc3NpYmxl KQorICAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudEl0ZW0oKTsKK0BAIC0x ODgsNyArMTk3LDcgQEAgUUFjY2Vzc2libGU6OlN0YXRlIFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpz dGF0ZSgpIGNvbnN0CisgICAgIFFSZWN0IHZpZXdSZWN0XyA9IHZpZXdSZWN0KCk7CisgICAgIFFS ZWN0IGl0ZW1SZWN0ID0gcmVjdCgpOworIAorLSAgICBpZiAodmlld1JlY3RfLmlzTnVsbCgpIHx8 IGl0ZW1SZWN0LmlzTnVsbCgpIHx8ICFpdGVtKCktPndpbmRvdygpIHx8ICFpdGVtKCktPndpbmRv dygpLT5pc1Zpc2libGUoKSB8fCFpdGVtKCktPmlzVmlzaWJsZSgpIHx8IHFGdXp6eUlzTnVsbChp dGVtKCktPm9wYWNpdHkoKSkpCisrICAgIGlmICh2aWV3UmVjdF8uaXNOdWxsKCkgfHwgaXRlbVJl Y3QuaXNOdWxsKCkgfHwgIXdpbmRvdygpIHx8ICF3aW5kb3coKS0+aXNWaXNpYmxlKCkgfHwhaXRl bSgpLT5pc1Zpc2libGUoKSB8fCBxRnV6enlJc051bGwoaXRlbSgpLT5vcGFjaXR5KCkpKQorICAg ICAgICAgc3RhdGUuaW52aXNpYmxlID0gdHJ1ZTsKKyAgICAgaWYgKCF2aWV3UmVjdF8uaW50ZXJz ZWN0cyhpdGVtUmVjdCkpCisgICAgICAgICBzdGF0ZS5vZmZzY3JlZW4gPSB0cnVlOworQEAgLTIw MSw2ICsyMTAsMTAgQEAgUUFjY2Vzc2libGU6OlN0YXRlIFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpz dGF0ZSgpIGNvbnN0CisgICAgIGlmIChyb2xlKCkgPT0gUUFjY2Vzc2libGU6OkVkaXRhYmxlVGV4 dCkKKyAgICAgICAgIGlmIChhdXRvIHRpID0gcW9iamVjdF9jYXN0PFFRdWlja1RleHRJbnB1dCAq PihpdGVtKCkpKQorICAgICAgICAgICAgIHN0YXRlLnBhc3N3b3JkRWRpdCA9IHRpLT5lY2hvTW9k ZSgpICE9IFFRdWlja1RleHRJbnB1dDo6Tm9ybWFsOworKyAgICBpZiAoIWl0ZW0oKS0+aXNFbmFi bGVkKCkpIHsKKysgICAgICAgIHN0YXRlLmZvY3VzYWJsZSA9IGZhbHNlOworKyAgICAgICAgc3Rh dGUuZGlzYWJsZWQgPSB0cnVlOworKyAgICB9CisgICAgIHJldHVybiBzdGF0ZTsKKyB9CisgCitk aWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJs ZXF1aWNrdmlld19wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nl c3NpYmxlcXVpY2t2aWV3X3AuaAoraW5kZXggMzlmZmNhZjM5Yy4uOGJhYTAxMzMwYyAxMDA2NDQK Ky0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlj a3ZpZXdfcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nl c3NpYmxlcXVpY2t2aWV3X3AuaAorQEAgLTU4LDcgKzU4LDcgQEAgUVRfQkVHSU5fTkFNRVNQQUNF CisgCisgI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorIAorLWNsYXNzIFFBY2Nlc3NpYmxl UXVpY2tXaW5kb3cgOiBwdWJsaWMgUUFjY2Vzc2libGVPYmplY3QKKytjbGFzcyBRX1FVSUNLX0VY UE9SVCBRQWNjZXNzaWJsZVF1aWNrV2luZG93IDogcHVibGljIFFBY2Nlc3NpYmxlT2JqZWN0Cisg eworIHB1YmxpYzoKKyAgICAgUUFjY2Vzc2libGVRdWlja1dpbmRvdyhRUXVpY2tXaW5kb3cgKm9i amVjdCk7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNr ZHJhZy5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tkcmFnLmNwcAor aW5kZXggODMyMWZjZmVlZC4uMzgzMDc4YjNiOSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrL2l0ZW1zL3FxdWlja2RyYWcuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9x dWljay9pdGVtcy9xcXVpY2tkcmFnLmNwcAorQEAgLTQ4MSw3ICs0ODEsOSBAQCB2b2lkIFFRdWlj a0RyYWdBdHRhY2hlZDo6c2V0S2V5cyhjb25zdCBRU3RyaW5nTGlzdCAma2V5cykKKyAgICAgXHFt bGF0dGFjaGVkcHJvcGVydHkgc3RyaW5nbGlzdCBRdFF1aWNrOjpEcmFnOjptaW1lRGF0YQorICAg ICBcc2luY2UgNS4yCisgCistICAgIFRoaXMgcHJvcGVydHkgaG9sZHMgYSBtYXAgb2YgbWltZURh dGEgdGhhdCBpcyB1c2VkIGR1cmluZyBzdGFydERyYWcuCisrICAgIFRoaXMgcHJvcGVydHkgaG9s ZHMgYSBtYXAgZnJvbSBtaW1lIHR5cGUgdG8gZGF0YSB0aGF0IGlzIHVzZWQgZHVyaW5nIHN0YXJ0 RHJhZy4KKysgICAgVGhlIG1pbWUgZGF0YSBuZWVkcyB0byBiZSBhIFxjIHN0cmluZywgb3IgYW4g XGMgQXJyYXlCdWZmZXIgd2l0aCB0aGUgZGF0YSBlbmNvZGVkCisrICAgIGFjY29yZGluZyB0byB0 aGUgbWltZSB0eXBlLgorICovCisgCisgUVZhcmlhbnRNYXAgUVF1aWNrRHJhZ0F0dGFjaGVkOjpt aW1lRGF0YSgpIGNvbnN0CitAQCAtNzY2LDggKzc2OCwxMiBAQCBRdDo6RHJvcEFjdGlvbiBRUXVp Y2tEcmFnQXR0YWNoZWRQcml2YXRlOjpzdGFydERyYWcoUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRl ZEFjdAorICAgICBRRHJhZyAqZHJhZyA9IG5ldyBRRHJhZyhzb3VyY2UgPyBzb3VyY2UgOiBxKTsK KyAgICAgUU1pbWVEYXRhICptaW1lRGF0YSA9IG5ldyBRTWltZURhdGEoKTsKKyAKKy0gICAgZm9y IChhdXRvIGl0ID0gZXh0ZXJuYWxNaW1lRGF0YS5jYmVnaW4oKSwgZW5kID0gZXh0ZXJuYWxNaW1l RGF0YS5jZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKy0gICAgICAgIG1pbWVEYXRhLT5zZXREYXRh KGl0LmtleSgpLCBpdC52YWx1ZSgpLnRvU3RyaW5nKCkudG9VdGY4KCkpOworKyAgICBmb3IgKGF1 dG8gaXQgPSBleHRlcm5hbE1pbWVEYXRhLmNiZWdpbigpLCBlbmQgPSBleHRlcm5hbE1pbWVEYXRh LmNlbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisrICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8UU1l dGFUeXBlOjpUeXBlPihpdC52YWx1ZSgpLnR5cGUoKSkgPT0gUU1ldGFUeXBlOjpRQnl0ZUFycmF5 KQorKyAgICAgICAgICAgIG1pbWVEYXRhLT5zZXREYXRhKGl0LmtleSgpLCBpdC52YWx1ZSgpLnRv Qnl0ZUFycmF5KCkpOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIG1pbWVEYXRhLT5zZXRE YXRhKGl0LmtleSgpLCBpdC52YWx1ZSgpLnRvU3RyaW5nKCkudG9VdGY4KCkpOworKyAgICB9Cisg CisgICAgIGRyYWctPnNldE1pbWVEYXRhKG1pbWVEYXRhKTsKKyAgICAgaWYgKHBpeG1hcExvYWRl ci5pc1JlYWR5KCkpIHsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVt cy9xcXVpY2tpdGVtLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0 ZW0uY3BwCitpbmRleCA3NWYxNDU3ODE2Li5kZWMwYWUxOWFlIDEwMDY0NAorLS0tIGEvcXRkZWNs YXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW0uY3BwCitAQCAtNTksNiArNTksNyBAQAorICNp bmNsdWRlIDxRdENvcmUvcHJpdmF0ZS9xbnVtZXJpY19wLmg+CisgI2luY2x1ZGUgPFF0R3VpL3Fw YS9xcGxhdGZvcm10aGVtZS5oPgorICNpbmNsdWRlIDxRdENvcmUvcWxvZ2dpbmdjYXRlZ29yeS5o PgorKyNpbmNsdWRlIDxRdENvcmUvcHJpdmF0ZS9xZHVwbGljYXRldHJhY2tlcl9wLmg+CisgCisg I2luY2x1ZGUgPHByaXZhdGUvcXFtbGdsb2JhbF9wLmg+CisgI2luY2x1ZGUgPHByaXZhdGUvcXFt bGVuZ2luZV9wLmg+CitAQCAtMjMyNiw2ICsyMzI3LDcgQEAgUVF1aWNrSXRlbTo6UVF1aWNrSXRl bShRUXVpY2tJdGVtUHJpdmF0ZSAmZGQsIFFRdWlja0l0ZW0gKnBhcmVudCkKKyBRUXVpY2tJdGVt Ojp+UVF1aWNrSXRlbSgpCisgeworICAgICBRX0QoUVF1aWNrSXRlbSk7CisrICAgIGQtPmluRGVz dHJ1Y3RvciA9IHRydWU7CisgCisgICAgIGlmIChkLT53aW5kb3dSZWZDb3VudCA+IDEpCisgICAg ICAgICBkLT53aW5kb3dSZWZDb3VudCA9IDE7IC8vIE1ha2Ugc3VyZSB3aW5kb3cgaXMgc2V0IHRv IG51bGwgaW4gbmV4dCBjYWxsIHRvIGRlcmVmV2luZG93KCkuCitAQCAtMjUyNiw2ICsyNTI4LDcg QEAgUVF1aWNrSXRlbSogUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXND aGFpbihRUXVpY2tJdGVtICppdGVtLCBib28KKyAgICAgUVF1aWNrSXRlbSAqY3VycmVudCA9IGl0 ZW07CisgICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQ cmV2SXRlbUluVGFiRm9jdXNDaGFpbjogc3RhcnRJdGVtOiIgPDwgc3RhcnRJdGVtOworICAgICBx Q0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRh YkZvY3VzQ2hhaW46IGZpcnN0RnJvbUl0ZW06IiA8PCBmaXJzdEZyb21JdGVtOworKyAgICBRRHVw bGljYXRlVHJhY2tlcjxRUXVpY2tJdGVtICo+IGN5Y2xlRGV0ZWN0b3I7CisgICAgIGRvIHsKKyAg ICAgICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2 SXRlbUluVGFiRm9jdXNDaGFpbjogY3VycmVudDoiIDw8IGN1cnJlbnQ7CisgICAgICAgICBxQ0Rl YnVnKERCR19GT0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZv Y3VzQ2hhaW46IGZyb206IiA8PCBmcm9tOworQEAgLTI1OTIsNyArMjU5NSwxMCBAQCBRUXVpY2tJ dGVtKiBRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluKFFRdWlj a0l0ZW0gKml0ZW0sIGJvbworICAgICAgICAgLy8gdHJhdmVyc2VkIGFsbCBvZiB0aGUgY2hhaW4g KGJ5IGNvbXBhcmUgdGhlIFtjdXJyZW50XSBpdGVtIHdpdGggW3N0YXJ0SXRlbV0pCisgICAgICAg ICAvLyBTaW5jZSB0aGUgW3N0YXJ0SXRlbV0gbWlnaHQgYmUgcHJvbW90ZWQgdG8gaXRzIHBhcmVu dCBpZiBpdCBpcyBpbnZpc2libGUsCisgICAgICAgICAvLyB3ZSBzdGlsbCBoYXZlIHRvIGNoZWNr IFtjdXJyZW50XSBpdGVtIHdpdGggb3JpZ2luYWwgc3RhcnQgaXRlbQorLSAgICAgICAgaWYgKChj dXJyZW50ID09IHN0YXJ0SXRlbSB8fCBjdXJyZW50ID09IG9yaWdpbmFsU3RhcnRJdGVtKSAmJiBm cm9tID09IGZpcnN0RnJvbUl0ZW0pIHsKKysgICAgICAgIC8vIFdlIG1pZ2h0IGFsc28gcnVuIGlu dG8gYSBjeWNsZSBiZWZvcmUgd2UgcmVhY2ggZmlyc3RGcm9tSXRlbSBhZ2FpbgorKyAgICAgICAg Ly8gYnV0IG5vdGUgdGhhdCB3ZSBoYXZlIHRvIGlnbm9yZSBjdXJyZW50IGlmIHdlIGFyZSBtZWFu dCB0byBza2lwIGl0CisrICAgICAgICBpZiAoKChjdXJyZW50ID09IHN0YXJ0SXRlbSB8fCBjdXJy ZW50ID09IG9yaWdpbmFsU3RhcnRJdGVtKSAmJiBmcm9tID09IGZpcnN0RnJvbUl0ZW0pIHx8Cisr ICAgICAgICAgICAgICAgICghc2tpcCAmJiBjeWNsZURldGVjdG9yLmhhc1NlZW4oY3VycmVudCkp KSB7CisgICAgICAgICAgICAgLy8gd3JhcHBlZCBhcm91bmQsIGF2b2lkIGVuZGxlc3MgbG9vcHMK KyAgICAgICAgICAgICBpZiAoaXRlbSA9PSBjb250ZW50SXRlbSkgeworICAgICAgICAgICAgICAg ICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1J blRhYkZvY3VzQ2hhaW46IGxvb3BlZCwgcmV0dXJuIGNvbnRlbnRJdGVtIjsKK0BAIC0yNjg5LDkg KzI2OTUsOCBAQCB2b2lkIFFRdWlja0l0ZW06OnNldFBhcmVudEl0ZW0oUVF1aWNrSXRlbSAqcGFy ZW50SXRlbSkKKyAKKyAgICAgICAgIGNvbnN0IGJvb2wgd2FzVmlzaWJsZSA9IGlzVmlzaWJsZSgp OworICAgICAgICAgb3AtPnJlbW92ZUNoaWxkKHRoaXMpOworLSAgICAgICAgaWYgKHdhc1Zpc2li bGUpIHsKKysgICAgICAgIGlmICh3YXNWaXNpYmxlICYmICFvcC0+aW5EZXN0cnVjdG9yKQorICAg ICAgICAgICAgIGVtaXQgb2xkUGFyZW50SXRlbS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgpOwor LSAgICAgICAgfQorICAgICB9IGVsc2UgaWYgKGQtPndpbmRvdykgeworICAgICAgICAgUVF1aWNr V2luZG93UHJpdmF0ZTo6Z2V0KGQtPndpbmRvdyktPnBhcmVudGxlc3NJdGVtcy5yZW1vdmUodGhp cyk7CisgICAgIH0KK0BAIC0yNzY4LDggKzI3NzMsOSBAQCB2b2lkIFFRdWlja0l0ZW06OnNldFBh cmVudEl0ZW0oUVF1aWNrSXRlbSAqcGFyZW50SXRlbSkKKyAKKyAgICAgZC0+aXRlbUNoYW5nZShJ dGVtUGFyZW50SGFzQ2hhbmdlZCwgZC0+cGFyZW50SXRlbSk7CisgCistICAgIGVtaXQgcGFyZW50 Q2hhbmdlZChkLT5wYXJlbnRJdGVtKTsKKy0gICAgaWYgKGlzVmlzaWJsZSgpICYmIGQtPnBhcmVu dEl0ZW0pCisrICAgIGlmICghZC0+aW5EZXN0cnVjdG9yKQorKyAgICAgICAgZW1pdCBwYXJlbnRD aGFuZ2VkKGQtPnBhcmVudEl0ZW0pOworKyAgICBpZiAoaXNWaXNpYmxlKCkgJiYgZC0+cGFyZW50 SXRlbSAmJiAhUVF1aWNrSXRlbVByaXZhdGU6OmdldChkLT5wYXJlbnRJdGVtKS0+aW5EZXN0cnVj dG9yKQorICAgICAgICAgZW1pdCBkLT5wYXJlbnRJdGVtLT52aXNpYmxlQ2hpbGRyZW5DaGFuZ2Vk KCk7CisgfQorIAorQEAgLTI5NjUsNyArMjk3MSw4IEBAIHZvaWQgUVF1aWNrSXRlbVByaXZhdGU6 OnJlbW92ZUNoaWxkKFFRdWlja0l0ZW0gKmNoaWxkKQorIAorICAgICBpdGVtQ2hhbmdlKFFRdWlj a0l0ZW06Okl0ZW1DaGlsZFJlbW92ZWRDaGFuZ2UsIGNoaWxkKTsKKyAKKy0gICAgZW1pdCBxLT5j aGlsZHJlbkNoYW5nZWQoKTsKKysgICAgaWYgKCFpbkRlc3RydWN0b3IpCisrICAgICAgICBlbWl0 IHEtPmNoaWxkcmVuQ2hhbmdlZCgpOworIH0KKyAKKyB2b2lkIFFRdWlja0l0ZW1Qcml2YXRlOjpy ZWZXaW5kb3coUVF1aWNrV2luZG93ICpjKQorQEAgLTMxOTQsNiArMzIwMSw3IEBAIFFRdWlja0l0 ZW1Qcml2YXRlOjpRUXVpY2tJdGVtUHJpdmF0ZSgpCisgICAgICwgdG91Y2hFbmFibGVkKGZhbHNl KQorICNlbmRpZgorICAgICAsIGhhc0N1cnNvckhhbmRsZXIoZmFsc2UpCisrICAgICwgaW5EZXN0 cnVjdG9yKGZhbHNlKQorICAgICAsIGRpcnR5QXR0cmlidXRlcygwKQorICAgICAsIG5leHREaXJ0 eUl0ZW0obnVsbHB0cikKKyAgICAgLCBwcmV2RGlydHlJdGVtKG51bGxwdHIpCitAQCAtNTEyMCw2 ICs1MTI4LDEzIEBAIHZvaWQgUVF1aWNrSXRlbTo6Y29tcG9uZW50Q29tcGxldGUoKQorICAgICAg ICAgZC0+YWRkVG9EaXJ0eUxpc3QoKTsKKyAgICAgICAgIFFRdWlja1dpbmRvd1ByaXZhdGU6Omdl dChkLT53aW5kb3cpLT5kaXJ0eUl0ZW0odGhpcyk7CisgICAgIH0KKysKKysjaWYgUVRfQ09ORklH KGFjY2Vzc2liaWxpdHkpCisrICAgIGlmIChkLT5pc0FjY2Vzc2libGUgJiYgZC0+ZWZmZWN0aXZl VmlzaWJsZSkgeworKyAgICAgICAgUUFjY2Vzc2libGVFdmVudCBldih0aGlzLCBRQWNjZXNzaWJs ZTo6T2JqZWN0U2hvdyk7CisrICAgICAgICBRQWNjZXNzaWJsZTo6dXBkYXRlQWNjZXNzaWJpbGl0 eSgmZXYpOworKyAgICB9CisrI2VuZGlmCisgfQorIAorIFFRdWlja1N0YXRlR3JvdXAgKlFRdWlj a0l0ZW1Qcml2YXRlOjpfc3RhdGVzKCkKK0BAIC02MTA2LDkgKzYxMjEsMTEgQEAgYm9vbCBRUXVp Y2tJdGVtUHJpdmF0ZTo6c2V0RWZmZWN0aXZlVmlzaWJsZVJlY3VyKGJvb2wgbmV3RWZmZWN0aXZl VmlzaWJsZSkKKyAgICAgICAgIFFBY2Nlc3NpYmxlOjp1cGRhdGVBY2Nlc3NpYmlsaXR5KCZldik7 CisgICAgIH0KKyAjZW5kaWYKKy0gICAgZW1pdCBxLT52aXNpYmxlQ2hhbmdlZCgpOworLSAgICBp ZiAoY2hpbGRWaXNpYmlsaXR5Q2hhbmdlZCkKKy0gICAgICAgIGVtaXQgcS0+dmlzaWJsZUNoaWxk cmVuQ2hhbmdlZCgpOworKyAgICBpZiAoIWluRGVzdHJ1Y3RvcikgeworKyAgICAgICAgZW1pdCBx LT52aXNpYmxlQ2hhbmdlZCgpOworKyAgICAgICAgaWYgKGNoaWxkVmlzaWJpbGl0eUNoYW5nZWQp CisrICAgICAgICAgICAgZW1pdCBxLT52aXNpYmxlQ2hpbGRyZW5DaGFuZ2VkKCk7CisrICAgIH0K KyAKKyAgICAgcmV0dXJuIHRydWU7ICAgIC8vIGVmZmVjdGl2ZSB2aXNpYmlsaXR5IERJRCBjaGFu Z2UKKyB9CitAQCAtNjE1Nyw2ICs2MTc0LDE1IEBAIHZvaWQgUVF1aWNrSXRlbVByaXZhdGU6OnNl dEVmZmVjdGl2ZUVuYWJsZVJlY3VyKFFRdWlja0l0ZW0gKnNjb3BlLCBib29sIG5ld0VmZmVjCisg ICAgIH0KKyAKKyAgICAgaXRlbUNoYW5nZShRUXVpY2tJdGVtOjpJdGVtRW5hYmxlZEhhc0NoYW5n ZWQsIGVmZmVjdGl2ZUVuYWJsZSk7CisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKyAg ICBpZiAoaXNBY2Nlc3NpYmxlKSB7CisrICAgICAgICBRQWNjZXNzaWJsZTo6U3RhdGUgY2hhbmdl ZFN0YXRlOworKyAgICAgICAgY2hhbmdlZFN0YXRlLmRpc2FibGVkID0gdHJ1ZTsKKysgICAgICAg IGNoYW5nZWRTdGF0ZS5mb2N1c2FibGUgPSB0cnVlOworKyAgICAgICAgUUFjY2Vzc2libGVTdGF0 ZUNoYW5nZUV2ZW50IGV2KHEsIGNoYW5nZWRTdGF0ZSk7CisrICAgICAgICBRQWNjZXNzaWJsZTo6 dXBkYXRlQWNjZXNzaWJpbGl0eSgmZXYpOworKyAgICB9CisrI2VuZGlmCisgICAgIGVtaXQgcS0+ ZW5hYmxlZENoYW5nZWQoKTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMv cXVpY2svaXRlbXMvcXF1aWNraXRlbV9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVt cy9xcXVpY2tpdGVtX3AuaAoraW5kZXggODQxZDkxYmI0MC4uYWRlOGZiNjFmMiAxMDA2NDQKKy0t LSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW1fcC5oCisrKysgYi9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtX3AuaAorQEAgLTQ3Miw2ICs0 NzIsNyBAQCBwdWJsaWM6CisgICAgIGJvb2wgcmVwbGF5aW5nUHJlc3NFdmVudDoxOworICAgICBi b29sIHRvdWNoRW5hYmxlZDoxOworICAgICBib29sIGhhc0N1cnNvckhhbmRsZXI6MTsKKysgICAg cXVpbnQzMiBpbkRlc3RydWN0b3I6MTsgLy8gaGFzIGVudGVyZWQgflFRdWlja0l0ZW0KKyAKKyAg ICAgZW51bSBEaXJ0eVR5cGUgeworICAgICAgICAgVHJhbnNmb3JtT3JpZ2luICAgICAgICAgPSAw eDAwMDAwMDAxLAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3Fx dWlja2l0ZW12aWV3LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0 ZW12aWV3LmNwcAoraW5kZXggMDEwYTAxNTJlMS4uZjhhZDE2OGExNyAxMDA2NDQKKy0tLSBhL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNwcAorKysrIGIvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbXZpZXcuY3BwCitAQCAtMTc4NSw3 ICsxNzg1LDcgQEAgdm9pZCBRUXVpY2tJdGVtVmlld1ByaXZhdGU6OnJlZmlsbChxcmVhbCBmcm9t LCBxcmVhbCB0bykKKyAKKyAgICAgZG8geworICAgICAgICAgYnVmZmVyUGF1c2Uuc3RvcCgpOwor LSAgICAgICAgaWYgKGN1cnJlbnRDaGFuZ2VzLmhhc1BlbmRpbmdDaGFuZ2VzKCkgfHwgYnVmZmVy ZWRDaGFuZ2VzLmhhc1BlbmRpbmdDaGFuZ2VzKCkpIHsKKysgICAgICAgIGlmIChjdXJyZW50Q2hh bmdlcy5oYXNQZW5kaW5nQ2hhbmdlcygpIHx8IGJ1ZmZlcmVkQ2hhbmdlcy5oYXNQZW5kaW5nQ2hh bmdlcygpIHx8IGN1cnJlbnRDaGFuZ2VzLmFjdGl2ZSkgeworICAgICAgICAgICAgIGN1cnJlbnRD aGFuZ2VzLnJlc2V0KCk7CisgICAgICAgICAgICAgYnVmZmVyZWRDaGFuZ2VzLnJlc2V0KCk7Cisg ICAgICAgICAgICAgcmVsZWFzZVZpc2libGVJdGVtcyhyZXVzYWJsZUZsYWcpOworZGlmZiAtLWdp dCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaCBi L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaAoraW5k ZXggZmJhMzgzZTI2OC4uMGQ2MzYxODYyMiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrL2l0ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2svaXRlbXMvcXF1aWNrbW91c2VhcmVhX3BfcC5oCitAQCAtNjEsNyArNjEsNiBAQCBR VF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBjbGFzcyBRUXVpY2tNb3VzZUV2ZW50OworIGNsYXNzIFFR dWlja01vdXNlQXJlYTsKKy1jbGFzcyBRUXVpY2tQb2ludGVyTWFzazsKKyBjbGFzcyBRUXVpY2tN b3VzZUFyZWFQcml2YXRlIDogcHVibGljIFFRdWlja0l0ZW1Qcml2YXRlCisgeworICAgICBRX0RF Q0xBUkVfUFVCTElDKFFRdWlja01vdXNlQXJlYSkKK0BAIC0xMDAsNyArOTksNiBAQCBwdWJsaWM6 CisgI2lmIFFUX0NPTkZJRyhxdWlja19kcmFnYW5kZHJvcCkKKyAgICAgUVF1aWNrRHJhZyAqZHJh ZzsKKyAjZW5kaWYKKy0gICAgUVBvaW50ZXI8UVF1aWNrUG9pbnRlck1hc2s+IG1hc2s7CisgICAg IFFQb2ludEYgc3RhcnRTY2VuZTsKKyAgICAgUVBvaW50RiB0YXJnZXRTdGFydFBvczsKKyAgICAg UVBvaW50RiBsYXN0UG9zOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0 ZW1zL3FxdWlja3RleHQuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNr dGV4dC5jcHAKK2luZGV4IDYyMzAxODY5MzMuLmU4MjNjYTEwOTUgMTAwNjQ0CistLS0gYS9xdGRl Y2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2t0ZXh0LmNwcAorKysrIGIvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrdGV4dC5jcHAKK0BAIC0yMTY4LDcgKzIxNjgsNyBA QCB2b2lkIFFRdWlja1RleHQ6OnJlc2V0TWF4aW11bUxpbmVDb3VudCgpCisgICAgIDxpbWcgc3Jj PSIiIGFsaWduPSJ0b3AsbWlkZGxlLGJvdHRvbSIgd2lkdGg9IiIgaGVpZ2h0PSIiPiAtIGlubGlu ZSBpbWFnZXMKKyAgICAgPG9sIHR5cGU9IiI+LCA8dWwgdHlwZT0iIj4gYW5kIDxsaT4gLSBvcmRl cmVkIGFuZCB1bm9yZGVyZWQgbGlzdHMKKyAgICAgPHByZT48L3ByZT4gLSBwcmVmb3JtYXR0ZWQK Ky0gICAgJmd0OyAmbHQ7ICZhbXA7CisrICAgICZndDsgJmx0OyAmYW1wOyAmcXVvdDsgJm5ic3A7 ICZhcG9zOworICAgICBcZW5kY29kZQorIAorICAgICBcYyBUZXh0LlN0eWxlZFRleHQgcGFyc2Vy IGlzIHN0cmljdCwgcmVxdWlyaW5nIHRhZ3MgdG8gYmUgY29ycmVjdGx5IG5lc3RlZC4KK2RpZmYg LS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9zY2VuZWdyYXBoL3FzZ3JoaWRpc3RhbmNl ZmllbGRnbHlwaGNhY2hlLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3NjZW5lZ3JhcGgv cXNncmhpZGlzdGFuY2VmaWVsZGdseXBoY2FjaGUuY3BwCitpbmRleCBlYjRkYjBmODVlLi4yMzI1 YTI2NjViIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svc2NlbmVncmFwaC9x c2dyaGlkaXN0YW5jZWZpZWxkZ2x5cGhjYWNoZS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrL3NjZW5lZ3JhcGgvcXNncmhpZGlzdGFuY2VmaWVsZGdseXBoY2FjaGUuY3BwCitAQCAt NDQ2LDcgKzQ0Niw3IEBAIGJvb2wgUVNHUmhpRGlzdGFuY2VGaWVsZEdseXBoQ2FjaGU6OmxvYWRQ cmVnZW5lcmF0ZWRDYWNoZShjb25zdCBRUmF3Rm9udCAmZm9udCkKKyAKKyAgICAgICAgIGNvbnN0 IGNoYXIgKnRleHR1cmVSZWNvcmQgPSBhbGxvY2F0b3JEYXRhOworICAgICAgICAgZm9yIChpbnQg aSA9IDA7IGkgPCB0ZXh0dXJlQ291bnQ7ICsraSwgdGV4dHVyZVJlY29yZCArPSBRdGRmOjpUZXh0 dXJlUmVjb3JkU2l6ZSkgeworLSAgICAgICAgICAgIGlmICh0ZXh0dXJlUmVjb3JkICsgUXRkZjo6 VGV4dHVyZVJlY29yZFNpemUgPiBxdGRmVGFibGVFbmQpIHsKKysgICAgICAgICAgICBpZiAocXRk ZlRhYmxlRW5kIC0gdGV4dHVyZVJlY29yZCA8IFF0ZGY6OlRleHR1cmVSZWNvcmRTaXplKSB7Cisg ICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJxdGRmIHRhYmxlIHRvbyBzbWFsbCBpbiBmb250ICcl cycuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcVByaW50YWJsZShmb250LmZhbWlseU5h bWUoKSkpOworICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CitAQCAtNDYyLDcgKzQ2Miw3 IEBAIGJvb2wgUVNHUmhpRGlzdGFuY2VGaWVsZEdseXBoQ2FjaGU6OmxvYWRQcmVnZW5lcmF0ZWRD YWNoZShjb25zdCBRUmF3Rm9udCAmZm9udCkKKyAKKyAgICAgICAgIGNvbnN0IGNoYXIgKmdseXBo UmVjb3JkID0gdGV4dHVyZVJlY29yZDsKKyAgICAgICAgIGZvciAocXVpbnQzMiBpID0gMDsgaSA8 IGdseXBoQ291bnQ7ICsraSwgZ2x5cGhSZWNvcmQgKz0gUXRkZjo6R2x5cGhSZWNvcmRTaXplKSB7 CistICAgICAgICAgICAgaWYgKGdseXBoUmVjb3JkICsgUXRkZjo6R2x5cGhSZWNvcmRTaXplID4g cXRkZlRhYmxlRW5kKSB7CisrICAgICAgICAgICAgaWYgKHF0ZGZUYWJsZUVuZCAtIGdseXBoUmVj b3JkIDwgUXRkZjo6IEdseXBoUmVjb3JkU2l6ZSkgeworICAgICAgICAgICAgICAgICBxV2Fybmlu ZygicXRkZiB0YWJsZSB0b28gc21hbGwgaW4gZm9udCAnJXMnLiIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgIHFQcmludGFibGUoZm9udC5mYW1pbHlOYW1lKCkpKTsKKyAgICAgICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworQEAgLTUxMiw4ICs1MTIsOCBAQCBib29sIFFTR1JoaURpc3RhbmNl RmllbGRHbHlwaENhY2hlOjpsb2FkUHJlZ2VuZXJhdGVkQ2FjaGUoY29uc3QgUVJhd0ZvbnQgJmZv bnQpCisgCisgICAgICAgICAgICAgaW50IHdpZHRoID0gdGV4SW5mby0+YWxsb2NhdGVkQXJlYS53 aWR0aCgpOworICAgICAgICAgICAgIGludCBoZWlnaHQgPSB0ZXhJbmZvLT5hbGxvY2F0ZWRBcmVh LmhlaWdodCgpOworLSAgICAgICAgICAgIHFpbnQ2NCBzaXplID0gd2lkdGggKiBoZWlnaHQ7Cist ICAgICAgICAgICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPih0ZXh0dXJlRGF0 YSArIHNpemUpID4gcXRkZlRhYmxlRW5kKSB7CisrICAgICAgICAgICAgcWludDY0IHNpemUgPSBx aW50NjQod2lkdGgpICogaGVpZ2h0OworKyAgICAgICAgICAgIGlmIChxdGRmVGFibGVFbmQgLSBy ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4odGV4dHVyZURhdGEpIDwgc2l6ZSkgeworICAg ICAgICAgICAgICAgICBxV2FybmluZygicXRkZiB0YWJsZSB0b28gc21hbGwgaW4gZm9udCAnJXMn LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHFQcmludGFibGUoZm9udC5mYW1pbHlOYW1l KCkpKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworZGlmZiAtLWdpdCBhL3F0ZGVj bGFyYXRpdmUvc3JjL3F1aWNrL3V0aWwvcXF1aWNrc3R5bGVkdGV4dC5jcHAgYi9xdGRlY2xhcmF0 aXZlL3NyYy9xdWljay91dGlsL3FxdWlja3N0eWxlZHRleHQuY3BwCitpbmRleCBkNTMxZmM5MjA1 Li5hMjVhZjkwNDE0IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9x cXVpY2tzdHlsZWR0ZXh0LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9x cXVpY2tzdHlsZWR0ZXh0LmNwcAorQEAgLTU2NCw2ICs1NjQsOCBAQCB2b2lkIFFRdWlja1N0eWxl ZFRleHRQcml2YXRlOjpwYXJzZUVudGl0eShjb25zdCBRQ2hhciAqJmNoLCBjb25zdCBRU3RyaW5n ICZ0ZXh0SQorICAgICAgICAgICAgICAgICB0ZXh0T3V0ICs9IFFDaGFyKDYwKTsKKyAgICAgICAg ICAgICBlbHNlIGlmIChlbnRpdHkgPT0gUUxhdGluMVN0cmluZygiYW1wIikpCisgICAgICAgICAg ICAgICAgIHRleHRPdXQgKz0gUUNoYXIoMzgpOworKyAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0 eSA9PSBRTGF0aW4xU3RyaW5nKCJhcG9zIikpCisrICAgICAgICAgICAgICAgIHRleHRPdXQgKz0g UUNoYXIoMzkpOworICAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0eSA9PSBRTGF0aW4xU3RyaW5n KCJxdW90IikpCisgICAgICAgICAgICAgICAgIHRleHRPdXQgKz0gUUNoYXIoMzQpOworICAgICAg ICAgICAgIGVsc2UgaWYgKGVudGl0eSA9PSBRTGF0aW4xU3RyaW5nKCJuYnNwIikpCitkaWZmIC0t Z2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRn ZXQuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3 aWRnZXQuY3BwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uOGExYzkw MTg4MAorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRz L3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3BwCitAQCAtMCwwICsxLDExMCBAQAorKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisrKioKKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkg THRkLgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoq IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFF1aWNrIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtp dC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNl bnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNl bnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVy Y2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9y LCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBp bgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55 LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3 LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNl IHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysqKgor KyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0 aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM ZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhl IGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhp cyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBl bnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVx dWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv bGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdl CisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAo YXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJhbAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNp b24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBR dCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNF LkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2Yg dGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0 byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxs CisrKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBh bmQKKysqKiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgor KyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2lu Y2x1ZGUgInFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5oIgorKworKyNpbmNsdWRlICJxcXVpY2t3 aWRnZXRfcC5oIgorKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBRVF9DT05GSUcoYWNj ZXNzaWJpbGl0eSkKKysKKytRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjpRQWNjZXNzaWJsZVF1aWNr V2lkZ2V0KFFRdWlja1dpZGdldCogd2lkZ2V0KQorKzogUUFjY2Vzc2libGVXaWRnZXQod2lkZ2V0 KQorKywgbV9hY2Nlc3NpYmxlV2luZG93KFFRdWlja1dpZGdldFByaXZhdGU6OmdldCh3aWRnZXQp LT5vZmZzY3JlZW5XaW5kb3cpCisreworKyAgICAvLyBOT1RFOiBtX2FjY2Vzc2libGVXaW5kb3cg aXMgYSBRQWNjZXNzaWJsZVF1aWNrV2luZG93LCBhbmQgbm90IGEKKysgICAgLy8gUUFjY2Vzc2li bGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyAoZGVmaW5lZCBiZWxvdykuIFRoaXMgbWVhbnMK KysgICAgLy8gaXQgd2lsbCByZXR1cm4gdGhlIFF1aWNrIGl0ZW0gY2hpbGQgaW50ZXJmYWNlcywg d2hpY2ggaXMgd2hhdCdzIG5lZWRlZCBoZXJlCisrICAgIC8vICh1bmxpa2UgUUFjY2Vzc2libGVR dWlja1dpZGdldE9mZnNjcmVlbldpbmRvdywgd2hpY2ggd2lsbCByZXBvcnQgMCBjaGlsZHJlbiku CisrfQorKworK1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0Ojpj aGlsZChpbnQgaW5kZXgpIGNvbnN0CisreworKyAgICByZXR1cm4gbV9hY2Nlc3NpYmxlV2luZG93 LmNoaWxkKGluZGV4KTsKKyt9CisrCisraW50IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6OmNoaWxk Q291bnQoKSBjb25zdAorK3sKKysgICAgcmV0dXJuIG1fYWNjZXNzaWJsZVdpbmRvdy5jaGlsZENv dW50KCk7CisrfQorKworK2ludCBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjppbmRleE9mQ2hpbGQo Y29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlKSBjb25zdAorK3sKKysgICAgcmV0dXJu IG1fYWNjZXNzaWJsZVdpbmRvdy5pbmRleE9mQ2hpbGQoaWZhY2UpOworK30KKysKKytRQWNjZXNz aWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja1dpZGdldDo6Y2hpbGRBdChpbnQgeCwgaW50 IHkpIGNvbnN0CisreworKyAgICByZXR1cm4gbV9hY2Nlc3NpYmxlV2luZG93LmNoaWxkQXQoeCwg eSk7CisrfQorKworK1FBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OlFBY2Nl c3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3coUVF1aWNrV2luZG93ICp3aW5kb3cpCisr OlFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cod2luZG93KQorK3sKKysKKyt9CisrCisrUUFjY2Vzc2li bGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OmNoaWxk KGludCBpbmRleCkgY29uc3QKKyt7CisrICAgIFFfVU5VU0VEKGluZGV4KTsKKysgICAgcmV0dXJu IG51bGxwdHI7CisrfQorKworK2ludCBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2lu ZG93OjpjaGlsZENvdW50KCkgY29uc3QKKyt7CisrICAgIHJldHVybiAwOworK30KKysKKytpbnQg UUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6aW5kZXhPZkNoaWxkKGNvbnN0 IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSkgY29uc3QKKyt7CisrICAgIFFfVU5VU0VEKGlm YWNlKTsKKysgICAgcmV0dXJuIC0xOworK30KKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFj Y2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6UUFjY2Vzc2libGVRdWlja1dpZGdl dE9mZnNjcmVlbldpbmRvdzo6Y2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0CisreworKyAgICBR X1VOVVNFRCh4KTsKKysgICAgUV9VTlVTRUQoeSk7CisrICAgIHJldHVybiBudWxscHRyOworK30K KysKKysjZW5kaWYgLy8gYWNjZXNzaWJpbGl0eQorKworK1FUX0VORF9OQU1FU1BBQ0UKK2RpZmYg LS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dp ZGdldF9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlj a3dpZGdldF9wLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43YzJh YjkzMGUwCistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdl dHMvcWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmgKK0BAIC0wLDAgKzEsOTUgQEAKKysvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55 IEx0ZC4KKysqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysq KiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xr aXQuCisrKioKKysqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGlj ZW5zZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGlj ZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1l cmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBv ciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQg aW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFu eS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3 dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVz ZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioK KysqKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5h dGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRo ZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRo aXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiog ZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJl cXVpcmVtZW50cworKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz L2xncGwtMy4wLmh0bWwuCisrKioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2Fn ZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVQorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3Ig KGF0IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJz aW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiog UXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5T RS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9m IHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24g dG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2ls bAorKyoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwg YW5kCisrKiogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioK KysqKiAkUVRfRU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNp Zm5kZWYgUUFDQ0VTU0lCTEVRVUlDS1dJREdFVF9ICisrI2RlZmluZSBRQUNDRVNTSUJMRVFVSUNL V0lER0VUX0gKKysKKysvLworKy8vICBXIEEgUiBOIEkgTiBHCisrLy8gIC0tLS0tLS0tLS0tLS0K KysvLworKy8vIFRoaXMgZmlsZSBpcyBub3QgcGFydCBvZiB0aGUgUXQgQVBJLiAgSXQgZXhpc3Rz IHB1cmVseSBhcyBhbgorKy8vIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFRoaXMgaGVhZGVyIGZp bGUgbWF5IGNoYW5nZSBmcm9tIHZlcnNpb24gdG8KKysvLyB2ZXJzaW9uIHdpdGhvdXQgbm90aWNl LCBvciBldmVuIGJlIHJlbW92ZWQuCisrLy8KKysvLyBXZSBtZWFuIGl0LgorKy8vCisrCisrI2lu Y2x1ZGUgInFxdWlja3dpZGdldC5oIgorKyNpbmNsdWRlIDxRdFdpZGdldHMvcWFjY2Vzc2libGV3 aWRnZXQuaD4KKysKKysjaW5jbHVkZSA8cHJpdmF0ZS9xYWNjZXNzaWJsZXF1aWNrdmlld19wLmg+ CisrCisrUVRfQkVHSU5fTkFNRVNQQUNFCisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5 KQorKworKy8vIFRoZXNlIGNsYXNzZXMgaW1wbGVtZW50IHRoZSBRUXVpY2tXaWdldCBhY2Nlc3Np YmlsaXR5IHN3aXRjaGFyb28sCisrLy8gd2hlcmUgdGhlIGNoaWxkIGl0ZW1zIG9mIHRoZSBRUXVp Y2tXaWRnZXRPZmZzY3JlZW5XaW5kb3cgYXJlIHJlcG9ydGVkCisrLy8gYXMgY2hpbGQgYWNjZXNz aWJsZSBpbnRlcmZhY2VzIG9mIHRoZSBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0LgorK2NsYXNzIFFB Y2Nlc3NpYmxlUXVpY2tXaWRnZXQ6IHB1YmxpYyBRQWNjZXNzaWJsZVdpZGdldAorK3sKKytwdWJs aWM6CisrICAgIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQoUVF1aWNrV2lkZ2V0KiB3aWRnZXQpOwor KworKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqY2hpbGQoaW50IGluZGV4KSBjb25zdCBvdmVy cmlkZTsKKysgICAgaW50IGNoaWxkQ291bnQoKSBjb25zdCBvdmVycmlkZTsKKysgICAgaW50IGlu ZGV4T2ZDaGlsZChjb25zdCBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UpIGNvbnN0IG92ZXJy aWRlOworKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqY2hpbGRBdChpbnQgeCwgaW50IHkpIGNv bnN0IG92ZXJyaWRlOworKworK3ByaXZhdGU6CisrICAgIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cg bV9hY2Nlc3NpYmxlV2luZG93OworKyAgICBRX0RJU0FCTEVfQ09QWShRQWNjZXNzaWJsZVF1aWNr V2lkZ2V0KQorK307CisrCisrY2xhc3MgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldp bmRvdzogcHVibGljIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cKKyt7CisrcHVibGljOgorKyAgICBR QWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KFFRdWlja1dpbmRvdyAqd2luZG93 KTsKKysgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmNoaWxkKGludCBpbmRleCkgY29uc3Qgb3Zl cnJpZGU7CisrICAgIGludCBjaGlsZENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIGludCBp bmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlKSBjb25zdCBvdmVy cmlkZTsKKysgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmNoaWxkQXQoaW50IHgsIGludCB5KSBj b25zdCBvdmVycmlkZTsKKyt9OworKworKyNlbmRpZiAvLyBhY2Nlc3NpYmlsaXR5CisrCisrUVRf RU5EX05BTUVTUEFDRQorKworKyNlbmRpZgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeS5jcHAgYi9xdGRlY2xh cmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnkuY3Bw CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uN2JhODhhMTc2OQorLS0t IC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3Np YmxlcXVpY2t3aWRnZXRmYWN0b3J5LmNwcAorQEAgLTAsMCArMSw2MCBAQAorKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCisrKioKKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRk LgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFF1aWNrIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4K KysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNl IFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNl cyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lh bCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBh bHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgor KyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBG b3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0 LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRo ZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysqKgorKyoq IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZl bHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz ZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZp bGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBm aWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1 cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWly ZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdw bC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisr KiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQg eW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJhbAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24g MyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBG b3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQ TDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhp cyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBl bnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisr KiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQK KysqKiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoq ICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2luY2x1 ZGUgInFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaCIKKysjaW5jbHVkZSAicWFjY2Vz c2libGVxdWlja3dpZGdldF9wLmgiCisrCisrUVRfQkVHSU5fTkFNRVNQQUNFCisrCisrI2lmIFFU X0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKworK1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpxQWNjZXNz aWJsZVF1aWNrV2lkZ2V0RmFjdG9yeShjb25zdCBRU3RyaW5nICZjbGFzc25hbWUsIFFPYmplY3Qg Km9iamVjdCkKKyt7CisrICAgIGlmIChjbGFzc25hbWUgPT0gUUxhdGluMVN0cmluZygiUVF1aWNr V2lkZ2V0IikpIHsKKysgICAgICAgIHJldHVybiBuZXcgUUFjY2Vzc2libGVRdWlja1dpZGdldChx b2JqZWN0X2Nhc3Q8UVF1aWNrV2lkZ2V0ICo+KG9iamVjdCkpOworKyAgICB9IGVsc2UgaWYgKGNs YXNzbmFtZSA9PSBRTGF0aW4xU3RyaW5nKCJRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3ciKSkg eworKyAgICAgICAgcmV0dXJuIG5ldyBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2lu ZG93KHFvYmplY3RfY2FzdDxRUXVpY2tXaW5kb3cgKj4ob2JqZWN0KSk7CisrICAgIH0KKysgICAg cmV0dXJuIDA7CisrfQorKworKyNlbmRpZiAvLyBhY2Nlc3NpYmlsaXR5CisrCisrUVRfRU5EX05B TUVTUEFDRQorKworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9x YWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj a3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oCituZXcgZmlsZSBtb2Rl IDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uOGM2M2IwOWY4MQorLS0tIC9kZXYvbnVsbAorKysr IGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRm YWN0b3J5X3AuaAorQEAgLTAsMCArMSw2NiBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioq 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 KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2luY2x1ZGUgPFF0R3VpL3FhY2Nl c3NpYmxlLmg+CisrCisrI2lmbmRlZiBRQUNDRVNTSUJMRVFVSUNLV0lER0VURkFDVE9SWV9ICisr I2RlZmluZSBRQUNDRVNTSUJMRVFVSUNLV0lER0VURkFDVE9SWV9ICisrCisrLy8KKysvLyAgVyBB IFIgTiBJIE4gRworKy8vICAtLS0tLS0tLS0tLS0tCisrLy8KKysvLyBUaGlzIGZpbGUgaXMgbm90 IHBhcnQgb2YgdGhlIFF0IEFQSS4gIEl0IGV4aXN0cyBwdXJlbHkgYXMgYW4KKysvLyBpbXBsZW1l bnRhdGlvbiBkZXRhaWwuICBUaGlzIGhlYWRlciBmaWxlIG1heSBjaGFuZ2UgZnJvbSB2ZXJzaW9u IHRvCisrLy8gdmVyc2lvbiB3aXRob3V0IG5vdGljZSwgb3IgZXZlbiBiZSByZW1vdmVkLgorKy8v CisrLy8gV2UgbWVhbiBpdC4KKysvLworKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBR VF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqcUFjY2Vz c2libGVRdWlja1dpZGdldEZhY3RvcnkoY29uc3QgUVN0cmluZyAmY2xhc3NuYW1lLCBRT2JqZWN0 ICpvYmplY3QpOworKworKyNlbmRpZgorKworK1FUX0VORF9OQU1FU1BBQ0UKKysKKysjZW5kaWYK K2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0 LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXQuY3BwCitp bmRleCAzOTc4MGY4ZGUzLi45Yzk3YjQzNTE4IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXQuY3BwCitAQCAtMzksNiArMzksNyBAQAorIAorICNp bmNsdWRlICJxcXVpY2t3aWRnZXQuaCIKKyAjaW5jbHVkZSAicXF1aWNrd2lkZ2V0X3AuaCIKKysj aW5jbHVkZSAicWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oIgorIAorICNpbmNsdWRl ICJwcml2YXRlL3FxdWlja3dpbmRvd19wLmgiCisgI2luY2x1ZGUgInByaXZhdGUvcXF1aWNraXRl bV9wLmgiCitAQCAtNzUsOSArNzYsMTYgQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKytR UXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OlFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhR UXVpY2tXaW5kb3dQcml2YXRlICZkZCwgUVF1aWNrUmVuZGVyQ29udHJvbCAqY29udHJvbCkKKys6 UVF1aWNrV2luZG93KGRkLCBjb250cm9sKQorK3sKKysgICAgc2V0VGl0bGUoUVN0cmluZzo6ZnJv bUxhdGluMSgiT2Zmc2NyZWVuIikpOworKyAgICBzZXRPYmplY3ROYW1lKFFTdHJpbmc6OmZyb21M YXRpbjEoIlFRdWlja09mZlNjcmVlbldpbmRvdyIpKTsKKyt9CisrCisgLy8gb3ZlcnJpZGUgc2V0 VmlzYmxlIHRvIHByZXZlbnQgYWNjaWRlbnRhbCBvZmZzY3JlZW4gd2luZG93IGJlaW5nIGNyZWF0 ZWQKKyAvLyBieSBiYXNlIGNsYXNzLgorLWNsYXNzIFFRdWlja09mZmNyZWVuV2luZG93UHJpdmF0 ZTogcHVibGljIFFRdWlja1dpbmRvd1ByaXZhdGUgeworK2NsYXNzIFFRdWlja1dpZGdldE9mZnNj cmVlbldpbmRvd1ByaXZhdGU6IHB1YmxpYyBRUXVpY2tXaW5kb3dQcml2YXRlIHsKKyBwdWJsaWM6 CisgICAgIHZvaWQgc2V0VmlzaWJsZShib29sIHZpc2libGUpIG92ZXJyaWRlIHsKKyAgICAgICAg IFFfUShRV2luZG93KTsKK0BAIC0xMDUsOSArMTEzLDggQEAgdm9pZCBRUXVpY2tXaWRnZXRQcml2 YXRlOjppbml0KFFRbWxFbmdpbmUqIGUpCisgICAgIFFfUShRUXVpY2tXaWRnZXQpOworIAorICAg ICByZW5kZXJDb250cm9sID0gbmV3IFFRdWlja1dpZGdldFJlbmRlckNvbnRyb2wocSk7CistICAg IG9mZnNjcmVlbldpbmRvdyA9IG5ldyBRUXVpY2tXaW5kb3coKm5ldyBRUXVpY2tPZmZjcmVlbldp bmRvd1ByaXZhdGUoKSxyZW5kZXJDb250cm9sKTsKKy0gICAgb2Zmc2NyZWVuV2luZG93LT5zZXRU aXRsZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJPZmZzY3JlZW4iKSk7CistICAgIG9mZnNjcmVlbldp bmRvdy0+c2V0T2JqZWN0TmFtZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJRUXVpY2tPZmZTY3JlZW5X aW5kb3ciKSk7CisrICAgIG9mZnNjcmVlbldpbmRvdyA9IG5ldyBRUXVpY2tXaWRnZXRPZmZzY3Jl ZW5XaW5kb3coKm5ldyBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3dQcml2YXRlKCksIHJlbmRl ckNvbnRyb2wpOworKyAgICBvZmZzY3JlZW5XaW5kb3ctPnNldFNjcmVlbihxLT5zY3JlZW4oKSk7 CisgICAgIC8vIERvIG5vdCBjYWxsIGNyZWF0ZSgpIG9uIG9mZnNjcmVlbldpbmRvdy4KKyAKKyAg ICAgLy8gQ2hlY2sgaWYgdGhlIFNvZnR3YXJlIEFkYXB0YXRpb24gaXMgYmVpbmcgdXNlZAorQEAg LTEzOCw2ICsxNDUsMTAgQEAgdm9pZCBRUXVpY2tXaWRnZXRQcml2YXRlOjppbml0KFFRbWxFbmdp bmUqIGUpCisgICAgIFFXaWRnZXQ6OmNvbm5lY3Qob2Zmc2NyZWVuV2luZG93LCAmUVF1aWNrV2lu ZG93Ojpmb2N1c09iamVjdENoYW5nZWQsIHEsICZRUXVpY2tXaWRnZXQ6OnByb3BhZ2F0ZUZvY3Vz T2JqZWN0Q2hhbmdlZCk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QocmVuZGVyQ29udHJvbCwgU0lH TkFMKHJlbmRlclJlcXVlc3RlZCgpKSwgcSwgU0xPVCh0cmlnZ2VyVXBkYXRlKCkpKTsKKyAgICAg UU9iamVjdDo6Y29ubmVjdChyZW5kZXJDb250cm9sLCBTSUdOQUwoc2NlbmVDaGFuZ2VkKCkpLCBx LCBTTE9UKHRyaWdnZXJVcGRhdGUoKSkpOworKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0 eSkKKysgICAgUUFjY2Vzc2libGU6Omluc3RhbGxGYWN0b3J5KCZxQWNjZXNzaWJsZVF1aWNrV2lk Z2V0RmFjdG9yeSk7CisrI2VuZGlmCisgfQorIAorIHZvaWQgUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6 ZW5zdXJlRW5naW5lKCkgY29uc3QKK0BAIC05MDEsOSArOTEyLDcgQEAgdm9pZCBRUXVpY2tXaWRn ZXRQcml2YXRlOjpjcmVhdGVDb250ZXh0KCkKKyAKKyAgICAgICAgIGNvbnRleHQgPSBuZXcgUU9w ZW5HTENvbnRleHQ7CisgICAgICAgICBjb250ZXh0LT5zZXRGb3JtYXQob2Zmc2NyZWVuV2luZG93 LT5yZXF1ZXN0ZWRGb3JtYXQoKSk7CistICAgICAgICBjb25zdCBRV2luZG93ICp3aW4gPSBxLT53 aW5kb3coKS0+d2luZG93SGFuZGxlKCk7CistICAgICAgICBpZiAod2luICYmIHdpbi0+c2NyZWVu KCkpCistICAgICAgICAgICAgY29udGV4dC0+c2V0U2NyZWVuKHdpbi0+c2NyZWVuKCkpOworKyAg ICAgICAgY29udGV4dC0+c2V0U2NyZWVuKHEtPnNjcmVlbigpKTsKKyAgICAgICAgIFFPcGVuR0xD b250ZXh0ICpzaGFyZUNvbnRleHQgPSBxdF9nbF9nbG9iYWxfc2hhcmVfY29udGV4dCgpOworICAg ICAgICAgaWYgKCFzaGFyZUNvbnRleHQpCisgICAgICAgICAgICAgc2hhcmVDb250ZXh0ID0gUVdp ZGdldFByaXZhdGU6OmdldChxLT53aW5kb3coKSktPnNoYXJlQ29udGV4dCgpOworQEAgLTE1MjAs MTkgKzE1MjksMTYgQEAgYm9vbCBRUXVpY2tXaWRnZXQ6OmV2ZW50KFFFdmVudCAqZSkKKyAgICAg ICAgIGQtPmhhbmRsZVdpbmRvd0NoYW5nZSgpOworICAgICAgICAgYnJlYWs7CisgCistICAgIGNh c2UgUUV2ZW50OjpTY3JlZW5DaGFuZ2VJbnRlcm5hbDoKKy0gICAgICAgIGlmIChRV2luZG93ICp3 aW5kb3cgPSB0aGlzLT53aW5kb3coKS0+d2luZG93SGFuZGxlKCkpIHsKKy0gICAgICAgICAgICBR U2NyZWVuICpuZXdTY3JlZW4gPSB3aW5kb3ctPnNjcmVlbigpOworLQorLSAgICAgICAgICAgIGlm IChkLT5vZmZzY3JlZW5XaW5kb3cpCistICAgICAgICAgICAgICAgIGQtPm9mZnNjcmVlbldpbmRv dy0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CistICAgICAgICAgICAgaWYgKGQtPm9mZnNjcmVlblN1 cmZhY2UpCistICAgICAgICAgICAgICAgIGQtPm9mZnNjcmVlblN1cmZhY2UtPnNldFNjcmVlbihu ZXdTY3JlZW4pOworKyAgICBjYXNlIFFFdmVudDo6U2NyZWVuQ2hhbmdlSW50ZXJuYWw6IHsKKysg ICAgICAgIFFTY3JlZW4gKm5ld1NjcmVlbiA9IHNjcmVlbigpOworKyAgICAgICAgaWYgKGQtPm9m ZnNjcmVlbldpbmRvdykKKysgICAgICAgICAgICBkLT5vZmZzY3JlZW5XaW5kb3ctPnNldFNjcmVl bihuZXdTY3JlZW4pOworKyAgICAgICAgaWYgKGQtPm9mZnNjcmVlblN1cmZhY2UpCisrICAgICAg ICAgICAgZC0+b2Zmc2NyZWVuU3VyZmFjZS0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisgI2lmIFFU X0NPTkZJRyhvcGVuZ2wpCistICAgICAgICAgICAgaWYgKGQtPmNvbnRleHQpCistICAgICAgICAg ICAgICAgIGQtPmNvbnRleHQtPnNldFNjcmVlbihuZXdTY3JlZW4pOworKyAgICAgICAgaWYgKGQt PmNvbnRleHQpCisrICAgICAgICAgICAgZC0+Y29udGV4dC0+c2V0U2NyZWVuKG5ld1NjcmVlbik7 CisgI2VuZGlmCistICAgICAgICB9CisgCisgICAgICAgICBpZiAoZC0+dXNlU29mdHdhcmVSZW5k ZXJlcgorICNpZiBRVF9DT05GSUcob3BlbmdsKQorQEAgLTE1NDUsNyArMTU1MSw3IEBAIGJvb2wg UVF1aWNrV2lkZ2V0OjpldmVudChRRXZlbnQgKmUpCisgICAgICAgICAgICAgZC0+cmVuZGVyKHRy dWUpOworICAgICAgICAgfQorICAgICAgICAgYnJlYWs7CistCisrICAgIH0KKyAgICAgY2FzZSBR RXZlbnQ6OlNob3c6CisgICAgIGNhc2UgUUV2ZW50OjpNb3ZlOgorICAgICAgICAgZC0+dXBkYXRl UG9zaXRpb24oKTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMv cXF1aWNrd2lkZ2V0X3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3 aWRnZXRfcC5oCitpbmRleCA4ODFmN2Y5MjIwLi4xYTk0NmJjYzcxIDEwMDY0NAorLS0tIGEvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldF9wLmgKKysrKyBiL3F0ZGVj bGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXRfcC5oCitAQCAtMTQ4LDYgKzE0 OCwxNCBAQCBwdWJsaWM6CisgICAgIGJvb2wgZm9yY2VGdWxsVXBkYXRlOworIH07CisgCisrY2xh c3MgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OiBwdWJsaWMgUVF1aWNrV2luZG93Cisrewor KyAgICBRX09CSkVDVAorKworK3B1YmxpYzoKKysgICAgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2lu ZG93KFFRdWlja1dpbmRvd1ByaXZhdGUgJmRkLCBRUXVpY2tSZW5kZXJDb250cm9sICpjb250cm9s KTsKKyt9OworKworIFFUX0VORF9OQU1FU1BBQ0UKKyAKKyAjZW5kaWYgLy8gUVF1aWNrV2lkZ2V0 X1BfSAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlja3dp ZGdldHMucHJvIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3F1aWNrd2lkZ2V0cy5w cm8KK2luZGV4IDI0MzhlNTc3YWUuLjg1ZDE1NmI4YTMgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0 aXZlL3NyYy9xdWlja3dpZGdldHMvcXVpY2t3aWRnZXRzLnBybworKysrIGIvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2t3aWRnZXRzL3F1aWNrd2lkZ2V0cy5wcm8KK0BAIC03LDkgKzcsMTMgQEAgREVG SU5FUyAgICs9IFFUX05PX1VSTF9DQVNUX0ZST01fU1RSSU5HIFFUX05PX0lOVEVHRVJfRVZFTlRf Q09PUkRJTkFURVMgUVRfTk9fRk8KKyBIRUFERVJTICs9IFwKKyAgICAgcXF1aWNrd2lkZ2V0Lmgg XAorICAgICBxcXVpY2t3aWRnZXRfcC5oIFwKKy0gICAgcXRxdWlja3dpZGdldHNnbG9iYWwuaAor KyAgICBxdHF1aWNrd2lkZ2V0c2dsb2JhbC5oIFwKKysgICAgcWFjY2Vzc2libGVxdWlja3dpZGdl dF9wLmggXAorKyAgICBxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmgKKyAKKyBTT1VS Q0VTICs9IFwKKy0gICAgcXF1aWNrd2lkZ2V0LmNwcAorKyAgICBxcXVpY2t3aWRnZXQuY3BwIFwK KysgICAgcWFjY2Vzc2libGVxdWlja3dpZGdldC5jcHAgXAorKyAgICBxYWNjZXNzaWJsZXF1aWNr d2lkZ2V0ZmFjdG9yeS5jcHAKKyAKKyBsb2FkKHF0X21vZHVsZSkKK2RpZmYgLS1naXQgYS9xdGRl Y2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fqc2VuZ2luZS90c3RfcWpzZW5naW5lLmNwcCBiL3F0 ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcWpzZW5naW5lL3RzdF9xanNlbmdpbmUuY3BwCitp bmRleCAzYjdkNzRkZjYzLi5iNzViZjgyMGQ1IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS90 ZXN0cy9hdXRvL3FtbC9xanNlbmdpbmUvdHN0X3Fqc2VuZ2luZS5jcHAKKysrKyBiL3F0ZGVjbGFy YXRpdmUvdGVzdHMvYXV0by9xbWwvcWpzZW5naW5lL3RzdF9xanNlbmdpbmUuY3BwCitAQCAtMTAy LDYgKzEwMiw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgdmFsdWVDb252ZXJzaW9uX1Jl Z3VsYXJFeHByZXNzaW9uKCk7CisgICAgIHZvaWQgY2FzdFdpdGhNdWx0aXBsZUluaGVyaXRhbmNl KCk7CisgICAgIHZvaWQgY29sbGVjdEdhcmJhZ2UoKTsKKysgICAgdm9pZCBjb2xsZWN0R2FyYmFn ZU5lc3RlZFdyYXBwZXJzVHdvRW5naW5lcygpOworICAgICB2b2lkIGdjV2l0aE5lc3RlZERhdGFT dHJ1Y3R1cmUoKTsKKyAgICAgdm9pZCBzdGFja3RyYWNlKCk7CisgICAgIHZvaWQgbnVtYmVyUGFy c2luZ19kYXRhKCk7CitAQCAtMTgwOSw2ICsxODEwLDQ0IEBAIHZvaWQgdHN0X1FKU0VuZ2luZTo6 Y29sbGVjdEdhcmJhZ2UoKQorICAgICBRVkVSSUZZKHB0ci5pc051bGwoKSk7CisgfQorIAorK2Ns YXNzIFRlc3RPYmplY3RDb250YWluZXIgOiBwdWJsaWMgUU9iamVjdAorK3sKKysgICAgUV9PQkpF Q1QKKysgICAgUV9QUk9QRVJUWShRT2JqZWN0ICpkdW1teSBNRU1CRVIgbV9kdW1teSBDT05TVEFO VCkKKysKKytwdWJsaWM6CisrICAgIFRlc3RPYmplY3RDb250YWluZXIoKSA6IG1fZHVtbXkobmV3 IFFPYmplY3QodGhpcykpIHt9CisrCisrcHJpdmF0ZToKKysgICAgUU9iamVjdCAqbV9kdW1teTsK Kyt9OworKworK3ZvaWQgdHN0X1FKU0VuZ2luZTo6Y29sbGVjdEdhcmJhZ2VOZXN0ZWRXcmFwcGVy c1R3b0VuZ2luZXMoKQorK3sKKysgICAgUUpTRW5naW5lIGVuZ2luZTE7CisrICAgIFFKU0VuZ2lu ZSBlbmdpbmUyOworKworKyAgICBUZXN0T2JqZWN0Q29udGFpbmVyIGNvbnRhaW5lcjsKKysgICAg UVFtbEVuZ2luZTo6c2V0T2JqZWN0T3duZXJzaGlwKCZjb250YWluZXIsIFFRbWxFbmdpbmU6OkNw cE93bmVyc2hpcCk7CisrCisrICAgIGVuZ2luZTEuZ2xvYmFsT2JqZWN0KCkuc2V0UHJvcGVydHko ImZvb2JhciIsIGVuZ2luZTEubmV3UU9iamVjdCgmY29udGFpbmVyKSk7CisrICAgIGVuZ2luZTIu Z2xvYmFsT2JqZWN0KCkuc2V0UHJvcGVydHkoImZvb2JhciIsIGVuZ2luZTIubmV3UU9iamVjdCgm Y29udGFpbmVyKSk7CisrCisrICAgIGVuZ2luZTEuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXog PSA0MiIpOworKyAgICBlbmdpbmUyLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6ID0gNDMiKTsK KysKKysgICAgUUNPTVBBUkUoZW5naW5lMS5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiIpLnRv SW50KCksIDQyKTsKKysgICAgUUNPTVBBUkUoZW5naW5lMi5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15 LmJheiIpLnRvSW50KCksIDQzKTsKKysKKysgICAgZW5naW5lMS5jb2xsZWN0R2FyYmFnZSgpOwor KyAgICBlbmdpbmUyLmNvbGxlY3RHYXJiYWdlKCk7CisrCisrICAgIC8vIFRoZSBHQyBzaG91bGQg bm90IGNvbGxlY3QgZHVtbXkgb2JqZWN0IHdyYXBwZXJzIG5laXRoZXIgaW4gZW5naW5lMSBub3Ig ZW5naW5lMiwgd2UKKysgICAgLy8gdmVyaWZ5IHRoYXQgYnkgY2hlY2tpbmcgd2hldGhlciB0aGUg YmF6IHByb3BlcnR5IHN0aWxsIGhhcyBpdHMgcHJldmlvdXMgdmFsdWUuCisrICAgIFFDT01QQVJF KGVuZ2luZTEuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXoiKS50b0ludCgpLCA0Mik7CisrICAg IFFDT01QQVJFKGVuZ2luZTIuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXoiKS50b0ludCgpLCA0 Myk7CisrfQorKworIHZvaWQgdHN0X1FKU0VuZ2luZTo6Z2NXaXRoTmVzdGVkRGF0YVN0cnVjdHVy ZSgpCisgeworICAgICAvLyBUaGUgR0MgbXVzdCBiZSBhYmxlIHRvIHRyYXZlcnNlIGRlZXBseSBu ZXN0ZWQgb2JqZWN0cywgb3RoZXJ3aXNlIHRoaXMKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZl L3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL2RhdGEvcmVkcmF3VXBvbkNvbHVtbkNo YW5nZS5xbWwgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVs L2RhdGEvcmVkcmF3VXBvbkNvbHVtbkNoYW5nZS5xbWwKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwMDAwLi4yMDYxMzNiYjM5CistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xh cmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL2RhdGEvcmVkcmF3VXBvbkNv bHVtbkNoYW5nZS5xbWwKK0BAIC0wLDAgKzEsMTEgQEAKKytpbXBvcnQgUXRRdWljayAyLjgKKysK KytMaXN0VmlldyB7CisrICAgIGlkOiByb290CisrICAgIHdpZHRoOiAyMDAKKysgICAgaGVpZ2h0 OiAyMDAKKysKKysgICAgZGVsZWdhdGU6IFRleHQgeworKyAgICAgICAgdGV4dDogZGlzcGxheQor KyAgICB9CisrfQorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFt bGRlbGVnYXRlbW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcCBiL3F0ZGVjbGFyYXRpdmUv dGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLmNw cAoraW5kZXggMzVmMWUyYzk0ZC4uMTcyMjQ0NzgzMCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRp dmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVs LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2Rl bC90c3RfcXFtbGRlbGVnYXRlbW9kZWwuY3BwCitAQCAtMjcsNiArMjcsOCBAQAorICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCisgCisgI2luY2x1ZGUgPFF0VGVzdC9xdGVzdC5oPgorKyNpbmNsdWRlIDxR dENvcmUvUUNvbmNhdGVuYXRlVGFibGVzUHJveHlNb2RlbD4KKysjaW5jbHVkZSA8UXRHdWkvUVN0 YW5kYXJkSXRlbU1vZGVsPgorICNpbmNsdWRlIDxRdFFtbC9xcW1sY29tcG9uZW50Lmg+CisgI2lu Y2x1ZGUgPFF0UW1sTW9kZWxzL3ByaXZhdGUvcXFtbGRlbGVnYXRlbW9kZWxfcC5oPgorICNpbmNs dWRlIDxRdFF1aWNrL3FxdWlja3ZpZXcuaD4KK0BAIC00Nyw2ICs0OSw3IEBAIHByaXZhdGUgc2xv dHM6CisgICAgIHZvaWQgZmlsdGVyT25Hcm91cF9yZW1vdmVXaGVuQ29tcGxldGVkKCk7CisgICAg IHZvaWQgcXRidWdfODYwMTcoKTsKKyAgICAgdm9pZCBjb250ZXh0QWNjZXNzZWRCeUhhbmRsZXIo KTsKKysgICAgdm9pZCByZWRyYXdVcG9uQ29sdW1uQ2hhbmdlKCk7CisgfTsKKyAKKyBjbGFzcyBB YnN0cmFjdEl0ZW1Nb2RlbCA6IHB1YmxpYyBRQWJzdHJhY3RJdGVtTW9kZWwKK0BAIC0xODYsNiAr MTg5LDMwIEBAIHZvaWQgdHN0X1FRbWxEZWxlZ2F0ZU1vZGVsOjpjb250ZXh0QWNjZXNzZWRCeUhh bmRsZXIoKQorICAgICBRVkVSSUZZKHJvb3QtPnByb3BlcnR5KCJ3b3JrcyIpLnRvQm9vbCgpKTsK KyB9CisgCisrdm9pZCB0c3RfUVFtbERlbGVnYXRlTW9kZWw6OnJlZHJhd1Vwb25Db2x1bW5DaGFu Z2UoKQorK3sKKysgICAgUVN0YW5kYXJkSXRlbU1vZGVsIG0xOworKyAgICBtMS5hcHBlbmRSb3co eworKyAgICAgICAgICAgIG5ldyBRU3RhbmRhcmRJdGVtKCJCYW5hbmEiKSwKKysgICAgICAgICAg ICBuZXcgUVN0YW5kYXJkSXRlbSgiQ29jb251dCIpLAorKyAgICB9KTsKKysKKysgICAgUVF1aWNr VmlldyB2aWV3KHRlc3RGaWxlVXJsKCJyZWRyYXdVcG9uQ29sdW1uQ2hhbmdlLnFtbCIpKTsKKysg ICAgUUNPTVBBUkUodmlldy5zdGF0dXMoKSwgUVF1aWNrVmlldzo6UmVhZHkpOworKyAgICB2aWV3 LnNob3coKTsKKysgICAgUVF1aWNrSXRlbSAqcm9vdCA9IHZpZXcucm9vdE9iamVjdCgpOworKyAg ICByb290LT5zZXRQcm9wZXJ0eSgibW9kZWwiLCBRVmFyaWFudDo6ZnJvbVZhbHVlPFFPYmplY3Qg Kj4oJm0xKSk7CisrCisrICAgIFFPYmplY3QgKml0ZW0gPSByb290LT5wcm9wZXJ0eSgiY3VycmVu dEl0ZW0iKS52YWx1ZTxRT2JqZWN0ICo+KCk7CisrICAgIFFWRVJJRlkoaXRlbSk7CisrICAgIFFD T01QQVJFKGl0ZW0tPnByb3BlcnR5KCJ0ZXh0IikudG9TdHJpbmcoKSwgIkJhbmFuYSIpOworKwor KyAgICBRVkVSSUZZKHJvb3QpOworKyAgICBtMS5yZW1vdmVDb2x1bW4oMCk7CisrCisrICAgIFFD T01QQVJFKGl0ZW0tPnByb3BlcnR5KCJ0ZXh0IikudG9TdHJpbmcoKSwgIkNvY29udXQiKTsKKyt9 CisrCisgUVRFU1RfTUFJTih0c3RfUVFtbERlbGVnYXRlTW9kZWwpCisgCisgI2luY2x1ZGUgInRz dF9xcW1sZGVsZWdhdGVtb2RlbC5tb2MiCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0 cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0bW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRv L3FtbC9xdjRtbS90c3RfcXY0bW0uY3BwCitpbmRleCA1ZDYzNWFhNjNiLi44MjRmZDg5ZTViIDEw MDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0bW0u Y3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3F2NG1tL3RzdF9xdjRtbS5j cHAKK0BAIC03NiwxMCArNzYsMTAgQEAgdm9pZCB0c3RfcXY0bW06Om11bHRpV3JhcHBlZFFPYmpl Y3RzKCkKKyAgICAgICAgIFFDT01QQVJFKGVuZ2luZTEubWVtb3J5TWFuYWdlci0+bV9wZW5kaW5n RnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuc2l6ZSgpLCAxKTsKKyAgICAgICAgIFFDT01QQVJFKGVu Z2luZTIubWVtb3J5TWFuYWdlci0+bV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuc2l6 ZSgpLCAwKTsKKyAKKy0gICAgICAgIC8vIE1vdmVzIHRoZSBhZGRpdGlvbmFsIFdlYWtWYWx1ZSBm cm9tIG1fbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMgdG8KKy0gICAgICAgIC8vIG1fcGVuZGluZ0Zy ZWVkT2JqZWN0V3JhcHBlclZhbHVlLiBJdCdzIHN0aWxsIGFsaXZlIGFmdGVyIGFsbC4KKysgICAg ICAgIC8vIFRoZSBhZGRpdGlvbmFsIFdlYWtWYWx1ZSBmcm9tIG1fbXVsdGlwbHlXcmFwcGVkUU9i amVjdHMgaGFzbid0IGJlZW4gbW92ZWQKKysgICAgICAgIC8vIHRvIG1fcGVuZGluZ0ZyZWVkT2Jq ZWN0V3JhcHBlclZhbHVlIHlldC4gSXQncyBzdGlsbCBhbGl2ZSBhZnRlciBhbGwuCisgICAgICAg ICBlbmdpbmUxLm1lbW9yeU1hbmFnZXItPnJ1bkdDKCk7CistICAgICAgICBRQ09NUEFSRShlbmdp bmUxLm1lbW9yeU1hbmFnZXItPm1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLnNpemUo KSwgMik7CisrICAgICAgICBRQ09NUEFSRShlbmdpbmUxLm1lbW9yeU1hbmFnZXItPm1fcGVuZGlu Z0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLnNpemUoKSwgMSk7CisgCisgICAgICAgICAvLyBlbmdp bmUyIGRvZXNuJ3Qgb3duIHRoZSBvYmplY3QgYXMgZW5naW5lMSB3YXMgdGhlIGZpcnN0IHRvIHdy YXAgaXQgYWJvdmUuCisgICAgICAgICAvLyBUaGVyZWZvcmUsIG5vIGVmZmVjdCBoZXJlLgorZGlm ZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi9kYXRh L2FjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wMy5xbWwgYi9xdGRlY2xhcmF0aXZlL3Rlc3Rz L2F1dG8vcXVpY2svcXF1aWNraXRlbTIvZGF0YS9hY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9v cDMucW1sCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uODg5ZTQ4MGYz YgorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3Fx dWlja2l0ZW0yL2RhdGEvYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AzLnFtbAorQEAgLTAs MCArMSwxMyBAQAorK2ltcG9ydCBRdFF1aWNrIDIuNgorKworK0l0ZW0geworKyAgICB2aXNpYmxl OiB0cnVlCisrICAgIEl0ZW0geworKyAgICAgICAgdmlzaWJsZTogZmFsc2UKKysgICAgICAgIEl0 ZW0geworKyAgICAgICAgICAgIG9iamVjdE5hbWU6ICJoaWRkZW5DaGlsZCIKKysgICAgICAgICAg ICBhY3RpdmVGb2N1c09uVGFiOiB0cnVlCisrICAgICAgICAgICAgZm9jdXM6IHRydWUKKysgICAg ICAgIH0KKysgICAgfQorK30KK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8v cXVpY2svcXF1aWNraXRlbTIvdHN0X3FxdWlja2l0ZW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0 cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL3RzdF9xcXVpY2tpdGVtLmNwcAoraW5kZXggYzhmMjUx ZGJlMS4uYzhlZjM2ZWU2OCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9x dWljay9xcXVpY2tpdGVtMi90c3RfcXF1aWNraXRlbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUv dGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi90c3RfcXF1aWNraXRlbS5jcHAKK0BAIC02Nyw2 ICs2Nyw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgYWN0aXZlRm9jdXNPblRhYjEwKCk7 CisgICAgIHZvaWQgYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3BfZGF0YSgpOworICAgICB2 b2lkIGFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wKCk7CisrICAgIHZvaWQgYWN0aXZlRm9j dXNPblRhYl9pbmZpbml0ZUxvb3BDb250cm9scygpOworIAorICAgICB2b2lkIG5leHRJdGVtSW5G b2N1c0NoYWluKCk7CisgICAgIHZvaWQgbmV4dEl0ZW1JbkZvY3VzQ2hhaW4yKCk7CitAQCAtMTA1 Nyw2ICsxMDU4LDE3IEBAIHZvaWQgdHN0X1FRdWlja0l0ZW06OmFjdGl2ZUZvY3VzT25UYWJfaW5m aW5pdGVMb29wKCkKKyAgICAgUUNPTVBBUkUoaXRlbSwgd2luZG93LT5yb290T2JqZWN0KCkpOwor IH0KKyAKKysKKyt2b2lkIHRzdF9RUXVpY2tJdGVtOjphY3RpdmVGb2N1c09uVGFiX2luZmluaXRl TG9vcENvbnRyb2xzKCkKKyt7CisrICAgIGF1dG8gc291cmNlID0gdGVzdEZpbGVVcmwoImFjdGl2 ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wMy5xbWwiKTsKKysgICAgUVNjb3BlZFBvaW50ZXI8UVF1 aWNrVmlldz53aW5kb3cobmV3IFFRdWlja1ZpZXcoKSk7CisrICAgIHdpbmRvdy0+c2V0U291cmNl KHNvdXJjZSk7CisrICAgIHdpbmRvdy0+c2hvdygpOworKyAgICBRVkVSSUZZKHdpbmRvdy0+ZXJy b3JzKCkuaXNFbXB0eSgpKTsKKysgICAgUVRlc3Q6OmtleUNsaWNrKHdpbmRvdy5nZXQoKSwgUXQ6 OktleV9UYWIpOyAvLyBzaG91bGQgbm90IGhhbmcKKyt9CisrCisgdm9pZCB0c3RfUVF1aWNrSXRl bTo6bmV4dEl0ZW1JbkZvY3VzQ2hhaW4oKQorIHsKKyAgICAgaWYgKCFxdF90YWJfYWxsX3dpZGdl dHMoKSkKK1N1Ym1vZHVsZSBxdGRvYyBjMGM3YmYwNy4uLjc5ZDZlZjY5OgorU3VibW9kdWxlIHF0 aW1hZ2Vmb3JtYXRzIDJkY2YyODk5Li5hYmU0NGMwZjoKK2RpZmYgLS1naXQgYS9xdGltYWdlZm9y bWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvaWNucy9xaWNuc2hhbmRsZXIuY3BwIGIvcXRp bWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2ljbnMvcWljbnNoYW5kbGVyLmNw cAoraW5kZXggZGRlNzgzYy4uMWJmOTA3NCAxMDA2NDQKKy0tLSBhL3F0aW1hZ2Vmb3JtYXRzL3Ny Yy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9pY25zL3FpY25zaGFuZGxlci5jcHAKKysrKyBiL3F0aW1h Z2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9pY25zL3FpY25zaGFuZGxlci5jcHAK K0BAIC00NjIsOCArNDYyLDEyIEBAIHN0YXRpYyBib29sIHBhcnNlSWNvbkVudHJ5SW5mbyhJQ05T RW50cnkgJmljb24pCisgICAgIGlmIChpc0ljb25Db21wcmVzc2VkKGljb24pKQorICAgICAgICAg cmV0dXJuIHRydWU7CisgICAgIC8vIEljb24gZGVwdGg6CistICAgIGlmICghZGVwdGguaXNFbXB0 eSgpKQorLSAgICAgICAgaWNvbi5kZXB0aCA9IElDTlNFbnRyeTo6RGVwdGgoZGVwdGgudG9VSW50 KCkpOworKyAgICBpZiAoIWRlcHRoLmlzRW1wdHkoKSkgeworKyAgICAgICAgY29uc3QgdWludCBk ZXB0aFVJbnQgPSBkZXB0aC50b1VJbnQoKTsKKysgICAgICAgIGlmIChkZXB0aFVJbnQgPiAzMikK KysgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICBpY29uLmRlcHRoID0gSUNOU0Vu dHJ5OjpEZXB0aChkZXB0aFVJbnQpOworKyAgICB9CisgICAgIC8vIFRyeSBtb25vIGlmIGRlcHRo IG5vdCBmb3VuZAorICAgICBpZiAoaWNvbi5kZXB0aCA9PSBJQ05TRW50cnk6OkRlcHRoVW5rbm93 bikKKyAgICAgICAgIGljb24uZGVwdGggPSBJQ05TRW50cnk6OkRlcHRoTW9ubzsKK0BAIC01MTUs NiArNTE5LDkgQEAgc3RhdGljIGJvb2wgcGFyc2VJY29uRW50cnlJbmZvKElDTlNFbnRyeSAmaWNv bikKKyAgICAgICAgIH0KKyAgICAgICAgIGljb24uaGVpZ2h0ID0gaWNvbi53aWR0aDsKKyAgICAg fQorKyAgICAvLyBTYW5pdHkgY2hlY2sKKysgICAgaWYgKGljb24ud2lkdGggPT0gMCB8fCBpY29u LndpZHRoID4gNDA5NikKKysgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgcmV0dXJuIHRydWU7 CisgfQorIAorQEAgLTY4NSw3ICs2OTIsNyBAQCBib29sIFFJQ05TSGFuZGxlcjo6Y2FuUmVhZCgp IGNvbnN0CisgYm9vbCBRSUNOU0hhbmRsZXI6OnJlYWQoUUltYWdlICpvdXRJbWFnZSkKKyB7Cisg ICAgIFFJbWFnZSBpbWc7CistICAgIGlmICghZW5zdXJlU2Nhbm5lZCgpKSB7CisrICAgIGlmICgh ZW5zdXJlU2Nhbm5lZCgpIHx8IG1fY3VycmVudEljb25JbmRleCA+PSBtX2ljb25zLnNpemUoKSkg eworICAgICAgICAgcVdhcm5pbmcoIlFJQ05TSGFuZGxlcjo6cmVhZCgpOiBUaGUgZGV2aWNlIHdh c24ndCBwYXJzZWQgcHJvcGVybHkhIik7CisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0K K0BAIC04OTIsNyArODk5LDcgQEAgYm9vbCBRSUNOU0hhbmRsZXI6OnNjYW5EZXZpY2UoKQorICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAKKyAgICAgICAgIGNvbnN0IHFpbnQ2NCBibG9ja0Rh dGFPZmZzZXQgPSBkZXZpY2UoKS0+cG9zKCk7CistICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJW YWxpZChibG9ja0hlYWRlcikpIHsKKysgICAgICAgIGlmICghaXNCbG9ja0hlYWRlclZhbGlkKGJs b2NrSGVhZGVyLCBJQ05TQmxvY2tIZWFkZXJTaXplICsgZmlsZWxlbmd0aCAtIGJsb2NrRGF0YU9m ZnNldCkpIHsKKyAgICAgICAgICAgICBxV2FybmluZygiUUlDTlNIYW5kbGVyOjpzY2FuRGV2aWNl KCk6IEZhaWxlZCwgYmFkIGhlYWRlciBhdCBwb3MgJXMuIE9TVHlwZSBcIiVzXCIsIGxlbmd0aCAl dSIsCisgICAgICAgICAgICAgICAgICAgICAgUUJ5dGVBcnJheTo6bnVtYmVyKGJsb2NrRGF0YU9m ZnNldCkuY29uc3REYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgbmFtZUZyb21PU1R5cGUo YmxvY2tIZWFkZXIub3N0eXBlKS5jb25zdERhdGEoKSwgYmxvY2tIZWFkZXIubGVuZ3RoKTsKK0BA IC05MjcsMTEgKzkzNCwxNCBAQCBib29sIFFJQ05TSGFuZGxlcjo6c2NhbkRldmljZSgpCisgICAg ICAgICBjYXNlIElDTlNCbG9ja0hlYWRlcjo6VHlwZU9kcnA6CisgICAgICAgICAgICAgLy8gSWNu cyBjb250YWluZXIgc2VlbXMgdG8gaGF2ZSBhbiBlbWJlZGRlZCBpY29uIHZhcmlhbnQgY29udGFp bmVyCisgICAgICAgICAgICAgLy8gTGV0J3Mgc3RhcnQgYSBzY2FuIGZvciBlbnRyaWVzCistICAg ICAgICAgICAgd2hpbGUgKGRldmljZSgpLT5wb3MoKSA8IG5leHRCbG9ja09mZnNldCkgeworKyAg ICAgICAgICAgIHdoaWxlICghc3RyZWFtLmF0RW5kKCkgJiYgZGV2aWNlKCktPnBvcygpIDwgbmV4 dEJsb2NrT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgIElDTlNCbG9ja0hlYWRlciBpY29uOwor ICAgICAgICAgICAgICAgICBzdHJlYW0gPj4gaWNvbjsKKysgICAgICAgICAgICAgICAgaWYgKHN0 cmVhbS5zdGF0dXMoKSAhPSBRRGF0YVN0cmVhbTo6T2spCisrICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBpbmNvcnJlY3QgdmFy aWFudCBlbnRyeSBoZWFkZXIgYW5kIHN0b3Agc2NhbgorLSAgICAgICAgICAgICAgICBpZiAoIWlz QmxvY2tIZWFkZXJWYWxpZChpY29uLCBibG9ja0RhdGFMZW5ndGgpKQorKyAgICAgICAgICAgICAg ICBxdWludDY0IHJlbWFpbmluZyA9IGJsb2NrRGF0YUxlbmd0aCAtIChkZXZpY2UoKS0+cG9zKCkg LSBibG9ja0RhdGFPZmZzZXQpOworKyAgICAgICAgICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJW YWxpZChpY29uLCBJQ05TQmxvY2tIZWFkZXJTaXplICsgcmVtYWluaW5nKSkKKyAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICBpZiAoIWFkZEVudHJ5KGljb24sIGRl dmljZSgpLT5wb3MoKSwgYmxvY2tIZWFkZXIub3N0eXBlKSkKKyAgICAgICAgICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKK0BAIC0xMDAzLDcgKzEwMTMsNyBAQCBib29sIFFJQ05TSGFuZGxlcjo6 c2NhbkRldmljZSgpCisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CisgICAgIH0KKy0g ICAgcmV0dXJuIHRydWU7CisrICAgIHJldHVybiAobV9pY29ucy5zaXplKCkgPiAwKTsKKyB9Cisg CisgY29uc3QgSUNOU0VudHJ5ICZRSUNOU0hhbmRsZXI6OmdldEljb25NYXNrKGNvbnN0IElDTlNF bnRyeSAmaWNvbikgY29uc3QKK2RpZmYgLS1naXQgYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lu cy9pbWFnZWZvcm1hdHMvanAyL3FqcDJoYW5kbGVyLmNwcCBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9w bHVnaW5zL2ltYWdlZm9ybWF0cy9qcDIvcWpwMmhhbmRsZXIuY3BwCitpbmRleCA1MDgyMDIzLi5j YjM0Mzc0IDEwMDY0NAorLS0tIGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3Jt YXRzL2pwMi9xanAyaGFuZGxlci5jcHAKKysrKyBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5z L2ltYWdlZm9ybWF0cy9qcDIvcWpwMmhhbmRsZXIuY3BwCitAQCAtNDMsNiArNDMsNyBAQAorICNp bmNsdWRlICJxaW1hZ2UuaCIKKyAjaW5jbHVkZSAicXZhcmlhbnQuaCIKKyAjaW5jbHVkZSAicWNv bG9yLmgiCisrI2luY2x1ZGUgInFpbWFnZXJlYWRlci5oIgorIAorICNpbmNsdWRlIDxqYXNwZXIv amFzcGVyLmg+CisgI2luY2x1ZGUgPG1hdGguaD4gLy8gZm9yIHBvdworQEAgLTMzMywxNiArMzM0 LDQ2IEBAIHByaXZhdGU6CisgSnBlZzIwMDBKYXNwZXJSZWFkZXI6OkpwZWcyMDAwSmFzcGVyUmVh ZGVyKFFJT0RldmljZSAqaW9kLCBTdWJGb3JtYXQgZm9ybWF0KQorICAgICA6IGphc3Blck9rKHRy dWUpLCBpb0RldmljZShpb2QpLCBmb3JtYXQoZm9ybWF0KSwgaGFzQWxwaGEoZmFsc2UpCisgewor KyNpZiBKQVNfVkVSU0lPTl9NQUpPUiA8IDMKKyAgICAgaWYgKGphc19pbml0KCkpIHsKKyAgICAg ICAgIGphc3Blck9rID0gZmFsc2U7CisgICAgICAgICBxRGVidWcoIkphc3BlciBMaWJyYXJ5IGlu aXRpYWxpemF0aW9uIGZhaWxlZCIpOworICAgICB9CisrI2Vsc2UKKysgICAgamFzX2NvbmZfY2xl YXIoKTsKKysjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDYsIDAsIDApCisrICAg IGphc19jb25mX3NldF9tYXhfbWVtX3VzYWdlKFFJbWFnZVJlYWRlcjo6YWxsb2NhdGlvbkxpbWl0 KCkgKiAxMDI0ICogMTAyNCk7CisrI2Vsc2UKKysgICAgLy8gMTI4TUIgc2VlbXMgdG8gYmUgZW5v dWdoLgorKyAgICBqYXNfY29uZl9zZXRfbWF4X21lbV91c2FnZSgxMjggKiAxMDI0ICogMTAyNCk7 CisrI2VuZGlmCisrICAgIGlmIChqYXNfaW5pdF9saWJyYXJ5KCkpIHsKKysgICAgICAgIGphc3Bl ck9rID0gZmFsc2U7CisrICAgICAgICBxRGVidWcoIkphc3BlciBsaWJyYXJ5IGluaXRpYWxpemF0 aW9uIGZhaWxlZCIpOworKyAgICB9CisrICAgIGlmIChqYXNfaW5pdF90aHJlYWQoKSkgeworKyAg ICAgICAgamFzX2NsZWFudXBfbGlicmFyeSgpOworKyAgICAgICAgamFzcGVyT2sgPSBmYWxzZTsK KysgICAgICAgIHFEZWJ1ZygiSmFzcGVyIHRocmVhZCBpbml0aWFsaXphdGlvbiBmYWlsZWQiKTsK KysgICAgfQorKyNlbmRpZgorIH0KKyAKKyBKcGVnMjAwMEphc3BlclJlYWRlcjo6fkpwZWcyMDAw SmFzcGVyUmVhZGVyKCkKKyB7CisrI2lmIEpBU19WRVJTSU9OX01BSk9SIDwgMworICAgICBpZiAo amFzcGVyT2spCisgICAgICAgICBqYXNfY2xlYW51cCgpOworKyNlbHNlCisrICAgIGlmIChqYXNw ZXJPaykgeworKyAgICAgICAgaWYgKGphc19jbGVhbnVwX3RocmVhZCgpKSB7CisrICAgICAgICAg ICAgcURlYnVnKCJKYXNwZXIgdGhyZWFkIGNsZWFudXAgZmFpbGVkIik7CisrICAgICAgICB9Cisr ICAgICAgICBpZiAoamFzX2NsZWFudXBfbGlicmFyeSgpKSB7CisrICAgICAgICAgICAgcURlYnVn KCJKYXNwZXIgbGlicmFyeSBjbGVhbnVwIGZhaWxlZCIpOworKyAgICAgICAgfQorKyAgICB9Cisr I2VuZGlmCisgfQorIAorIC8qISBcaW50ZXJuYWwKK0BAIC04NTcsNyArODg4LDcgQEAgYm9vbCBK cGVnMjAwMEphc3BlclJlYWRlcjo6d3JpdGUoY29uc3QgUUltYWdlICZpbWFnZSwgaW50IHF1YWxp dHkpCisgICAgIH0KKyAKKyAgICAgLy8gT3BlbiBhbiBlbXB0eSBqYXNwZXIgc3RyZWFtIHRoYXQg Z3Jvd3MgYXV0b21hdGljYWxseQorLSAgICBqYXNfc3RyZWFtX3QgKiBtZW1vcnlfc3RyZWFtID0g amFzX3N0cmVhbV9tZW1vcGVuKDAsIC0xKTsKKysgICAgamFzX3N0cmVhbV90ICogbWVtb3J5X3N0 cmVhbSA9IGphc19zdHJlYW1fbWVtb3BlbigwLCAwKTsKKyAKKyAgICAgLy8gSmFzcGVyIHdhbnRz IGEgbm9uLWNvbnN0IHN0cmluZy4KKyAgICAgY2hhciAqc3RyID0gcXN0cmR1cChqYXNwZXJGb3Jt YXRTdHJpbmcudG9MYXRpbjEoKS5jb25zdERhdGEoKSk7CitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZv cm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3RpZmYvcXRpZmZoYW5kbGVyLmNwcCBiL3F0 aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy90aWZmL3F0aWZmaGFuZGxlci5j cHAKK2luZGV4IDEzODY3NTAuLmFjODk1NmMgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0cy9z cmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvdGlmZi9xdGlmZmhhbmRsZXIuY3BwCisrKysgYi9xdGlt YWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvdGlmZi9xdGlmZmhhbmRsZXIuY3Bw CitAQCAtMzYxLDYgKzM2MSw4IEBAIGJvb2wgUVRpZmZIYW5kbGVyOjpyZWFkKFFJbWFnZSAqaW1h Z2UpCisgICAgIH0KKyAKKyAgICAgVElGRiAqY29uc3QgdGlmZiA9IGQtPnRpZmY7CisrICAgIGlm IChUSUZGSXNUaWxlZCh0aWZmKSAmJiBUSUZGVGlsZVNpemU2NCh0aWZmKSA+IHVpbnQ2NF90KGlt YWdlLT5zaXplSW5CeXRlcygpKSkgLy8gQ29ycnVwdCBpbWFnZQorKyAgICAgICAgcmV0dXJuIGZh bHNlOworICAgICBjb25zdCBxdWludDMyIHdpZHRoID0gZC0+c2l6ZS53aWR0aCgpOworICAgICBj b25zdCBxdWludDMyIGhlaWdodCA9IGQtPnNpemUuaGVpZ2h0KCk7CisgCitkaWZmIC0tZ2l0IGEv cXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3dlYnAvcXdlYnBoYW5kbGVy LmNwcCBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy93ZWJwL3F3ZWJw aGFuZGxlci5jcHAKK2luZGV4IDgyZDM4Y2IuLmQwMmViMDUgMTAwNjQ0CistLS0gYS9xdGltYWdl Zm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvd2VicC9xd2VicGhhbmRsZXIuY3BwCisr KysgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvd2VicC9xd2VicGhh bmRsZXIuY3BwCitAQCAtNDUsNiArNDUsNyBAQAorICNpbmNsdWRlIDxxZGVidWcuaD4KKyAjaW5j bHVkZSA8cXBhaW50ZXIuaD4KKyAjaW5jbHVkZSA8cXZhcmlhbnQuaD4KKysjaW5jbHVkZSA8UXRF bmRpYW4+CisgCisgc3RhdGljIGNvbnN0IGludCByaWZmSGVhZGVyU2l6ZSA9IDEyOyAvLyBSSUZG X0hFQURFUl9TSVpFIGZyb20gd2VicC9mb3JtYXRfY29uc3RhbnRzLmgKKyAKK0BAIC0xMDIsMjEg KzEwMywyMyBAQCBib29sIFFXZWJwSGFuZGxlcjo6ZW5zdXJlU2Nhbm5lZCgpIGNvbnN0CisgCisg ICAgIG1fc2NhblN0YXRlID0gU2NhbkVycm9yOworIAorLSAgICBpZiAoZGV2aWNlKCktPmlzU2Vx dWVudGlhbCgpKSB7CistICAgICAgICBxV2FybmluZygpIDw8ICJTZXF1ZW50aWFsIGRldmljZXMg YXJlIG5vdCBzdXBwb3J0ZWQiOworKyAgICBRV2VicEhhbmRsZXIgKnRoYXQgPSBjb25zdF9jYXN0 PFFXZWJwSGFuZGxlciAqPih0aGlzKTsKKysgICAgY29uc3QgaW50IGhlYWRlckJ5dGVzTmVlZGVk ID0gc2l6ZW9mKFdlYlBCaXRzdHJlYW1GZWF0dXJlcyk7CisrICAgIFFCeXRlQXJyYXkgaGVhZGVy ID0gZGV2aWNlKCktPnBlZWsoaGVhZGVyQnl0ZXNOZWVkZWQpOworKyAgICBpZiAoaGVhZGVyLnNp emUoKSA8IGhlYWRlckJ5dGVzTmVlZGVkKQorICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICB9 CisgCistICAgIHFpbnQ2NCBvbGRQb3MgPSBkZXZpY2UoKS0+cG9zKCk7CistICAgIGRldmljZSgp LT5zZWVrKDApOworLQorLSAgICBRV2VicEhhbmRsZXIgKnRoYXQgPSBjb25zdF9jYXN0PFFXZWJw SGFuZGxlciAqPih0aGlzKTsKKy0gICAgUUJ5dGVBcnJheSBoZWFkZXIgPSBkZXZpY2UoKS0+cGVl ayhzaXplb2YoV2ViUEJpdHN0cmVhbUZlYXR1cmVzKSk7CisrICAgIC8vIFdlIGRvIG5vIHJhbmRv bSBhY2Nlc3MgZHVyaW5nIGRlY29kaW5nLCBqdXN0IGEgcmVhZEFsbCgpIG9mIHRoZSB3aG9sZSBp bWFnZSBmaWxlLiBTbyBpZgorKyAgICAvLyBpZiBpdCBpcyBhbGwgYXZhaWxhYmxlIGFscmVhZHks IHdlIGNhbiBhY2NlcHQgYSBzZXF1ZW50aWFsIGRldmljZS4gVGhlIHJpZmYgaGVhZGVyIGNvbnRh aW5zCisrICAgIC8vIHRoZSBmaWxlIHNpemUgbWludXMgOCBieXRlcyBoZWFkZXIKKysgICAgcWlu dDY0IGJ5dGVTaXplID0gcUZyb21MaXR0bGVFbmRpYW48cXVpbnQzMj4oaGVhZGVyLmNvbnN0RGF0 YSgpICsgNCk7CisrICAgIGlmIChkZXZpY2UoKS0+aXNTZXF1ZW50aWFsKCkgJiYgZGV2aWNlKCkt PmJ5dGVzQXZhaWxhYmxlKCkgPCBieXRlU2l6ZSArIDgpIHsKKysgICAgICAgIHFXYXJuaW5nKCkg PDwgIlFXZWJwSGFuZGxlcjogSW5zdWZmaWNpZW50IGRhdGEgYXZhaWxhYmxlIGluIHNlcXVlbnRp YWwgZGV2aWNlIjsKKysgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgfQorICAgICBpZiAoV2Vi UEdldEZlYXR1cmVzKChjb25zdCB1aW50OF90KiloZWFkZXIuY29uc3REYXRhKCksIGhlYWRlci5z aXplKCksICYodGhhdC0+bV9mZWF0dXJlcykpID09IFZQOF9TVEFUVVNfT0spIHsKKyAgICAgICAg IGlmIChtX2ZlYXR1cmVzLmhhc19hbmltYXRpb24pIHsKKyAgICAgICAgICAgICAvLyBGb3IgYW5p bWF0aW9uLCB3ZSBoYXZlIHRvIHJlYWQgYW5kIHNjYW4gd2hvbGUgZmlsZSB0byBkZXRlcm1pbmUg bG9vcCBjb3VudCBhbmQgaW1hZ2VzIGNvdW50CistICAgICAgICAgICAgZGV2aWNlKCktPnNlZWso b2xkUG9zKTsKKy0KKyAgICAgICAgICAgICBpZiAodGhhdC0+ZW5zdXJlRGVtdXhlcigpKSB7Cisg ICAgICAgICAgICAgICAgIHRoYXQtPm1fbG9vcCA9IFdlYlBEZW11eEdldEkobV9kZW11eGVyLCBX RUJQX0ZGX0xPT1BfQ09VTlQpOworICAgICAgICAgICAgICAgICB0aGF0LT5tX2ZyYW1lQ291bnQg PSBXZWJQRGVtdXhHZXRJKG1fZGVtdXhlciwgV0VCUF9GRl9GUkFNRV9DT1VOVCk7CitAQCAtMTI2 LDE3ICsxMjksMTMgQEAgYm9vbCBRV2VicEhhbmRsZXI6OmVuc3VyZVNjYW5uZWQoKSBjb25zdAor ICAgICAgICAgICAgICAgICBpZiAodGhhdC0+bV9mZWF0dXJlcy5oYXNfYWxwaGEpCisgICAgICAg ICAgICAgICAgICAgICB0aGF0LT5tX2NvbXBvc2l0ZWQtPmZpbGwoUXQ6OnRyYW5zcGFyZW50KTsK KyAKKy0gICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHJlc2V0IGRldmljZSBwb3NpdGlvbiBz aW5jZSB3ZSBoYXZlIHJlYWQgaW4gYWxsIGRhdGEKKyAgICAgICAgICAgICAgICAgbV9zY2FuU3Rh dGUgPSBTY2FuU3VjY2VzczsKKy0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg ICAgICAgfQorICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBtX3NjYW5TdGF0ZSA9IFNj YW5TdWNjZXNzOworICAgICAgICAgfQorICAgICB9CisgCistICAgIGRldmljZSgpLT5zZWVrKG9s ZFBvcyk7CistCisgICAgIHJldHVybiBtX3NjYW5TdGF0ZSA9PSBTY2FuU3VjY2VzczsKKyB9Cisg CitAQCAtMTU5LDcgKzE1OCw3IEBAIGJvb2wgUVdlYnBIYW5kbGVyOjplbnN1cmVEZW11eGVyKCkK KyAKKyBib29sIFFXZWJwSGFuZGxlcjo6cmVhZChRSW1hZ2UgKmltYWdlKQorIHsKKy0gICAgaWYg KCFlbnN1cmVTY2FubmVkKCkgfHwgZGV2aWNlKCktPmlzU2VxdWVudGlhbCgpIHx8ICFlbnN1cmVE ZW11eGVyKCkpCisrICAgIGlmICghZW5zdXJlU2Nhbm5lZCgpIHx8ICFlbnN1cmVEZW11eGVyKCkp CisgICAgICAgICByZXR1cm4gZmFsc2U7CisgCisgICAgIFFSZWN0IHByZXZGcmFtZVJlY3Q7CitT dWJtb2R1bGUgcXRsb2NhdGlvbiA5OGE1YzUxMS4uZjk5MWUyOGM6CitkaWZmIC0tZ2l0IGEvcXRs b2NhdGlvbi9zcmMvbG9jYXRpb24vY29uZmlndXJlLmpzb24gYi9xdGxvY2F0aW9uL3NyYy9sb2Nh dGlvbi9jb25maWd1cmUuanNvbgoraW5kZXggNmQwMWE5YTMuLmQxZTYyM2ExIDEwMDY0NAorLS0t IGEvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vY29uZmlndXJlLmpzb24KKysrKyBiL3F0bG9jYXRp b24vc3JjL2xvY2F0aW9uL2NvbmZpZ3VyZS5qc29uCitAQCAtOSw3ICs5LDcgQEAKKyAgICAgICAg ICAgICAibGFiZWwiOiAiUXQubGFicy5sb2NhdGlvbiBleHBlcmltZW50YWwgUU1MIHBsdWdpbiIs CisgICAgICAgICAgICAgInB1cnBvc2UiOiAiUHJvdmlkZXMgZXhwZXJpbWVudGFsIFF0TG9jYXRp b24gUU1MIHR5cGVzIiwKKyAgICAgICAgICAgICAic2VjdGlvbiI6ICJMb2NhdGlvbiIsCistICAg ICAgICAgICAgImNvbmRpdGlvbiI6ICJjb25maWcub3BlbmdsIiwKKysgICAgICAgICAgICAiY29u ZGl0aW9uIjogImZlYXR1cmVzLm9wZW5nbCIsCisgICAgICAgICAgICAgIm91dHB1dCI6IFsgInBy aXZhdGVGZWF0dXJlIiBdCisgICAgICAgICB9LAorICAgICAgICAgImdlb3NlcnZpY2VzX29zbSI6 IHsKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFw b2JqZWN0cXNnc3VwcG9ydC5jcHAgYi9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9x Z2VvbWFwb2JqZWN0cXNnc3VwcG9ydC5jcHAKK2luZGV4IGE5Nzg1NzNkLi4xMWUxNDY2ZiAxMDA2 NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2xhYnMvcXNnL3FnZW9tYXBvYmplY3Rx c2dzdXBwb3J0LmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vbGFicy9xc2cvcWdl b21hcG9iamVjdHFzZ3N1cHBvcnQuY3BwCitAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgUUdlb01h cE9iamVjdFFTR1N1cHBvcnQ6OnVwZGF0ZU1hcE9iamVjdHMoUVNHTm9kZSAqcm9vdCwgUVF1aWNr V2luZG93ICp3aW5kCisgICAgIGlmICghcm9vdCkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAg aWYgKG1fbWFwT2JqZWN0c1Jvb3ROb2RlICYmIG1fbWFwT2JqZWN0c1Jvb3ROb2RlLT5wYXJlbnQo KSkKKysgICAgaWYgKG1fbWFwT2JqZWN0c1Jvb3ROb2RlICYmICFtX21hcE9iamVjdHNSb290Tm9k ZS0+cGFyZW50KCkpCisgICAgICAgICByb290LT5hcHBlbmRDaGlsZE5vZGUobV9tYXBPYmplY3Rz Um9vdE5vZGUuZ2V0KCkpOworIAorICAgICBpZiAoIW1fbWFwT2JqZWN0c1Jvb3ROb2RlKSB7Citk aWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb2Nv ZGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3Nl cnZpY2VzL2VzcmkvZ2VvY29kaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAoraW5kZXggNWE0MDQ2 N2UuLmQxMjNjNmE4IDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2 aWNlcy9lc3JpL2dlb2NvZGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRp b24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9jb2RpbmdtYW5hZ2VyZW5naW5lX2Vz cmkuY3BwCitAQCAtNTksOCArNTksMTAgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgc3RhdGljIGNv bnN0IFFTdHJpbmcga1ByZWZpeEVzcmkoUVN0cmluZ0xpdGVyYWwoImVzcmkuIikpOworIHN0YXRp YyBjb25zdCBRU3RyaW5nIGtQYXJhbVVzZXJBZ2VudChrUHJlZml4RXNyaSArIFFTdHJpbmdMaXRl cmFsKCJ1c2VyYWdlbnQiKSk7CisgCistc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybEdlb2NvZGUo UVN0cmluZ0xpdGVyYWwoImh0dHA6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2Vy dmljZXMvV29ybGQvR2VvY29kZVNlcnZlci9maW5kQWRkcmVzc0NhbmRpZGF0ZXMiKSk7Cistc3Rh dGljIGNvbnN0IFFTdHJpbmcga1VybFJldmVyc2VHZW9jb2RlKFFTdHJpbmdMaXRlcmFsKCJodHRw Oi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVT ZXJ2ZXIvcmV2ZXJzZUdlb2NvZGUiKSk7Cisrc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybEdlb2Nv ZGUoUVN0cmluZ0xpdGVyYWwoImh0dHBzOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0 L3NlcnZpY2VzLyIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiV29ybGQvR2VvY29kZVNlcnZlci9maW5kQWRkcmVzc0NhbmRpZGF0ZXMiKSk7Cisrc3Rh dGljIGNvbnN0IFFTdHJpbmcga1VybFJldmVyc2VHZW9jb2RlKFFTdHJpbmdMaXRlcmFsKAorKyAg ICAgICAgImh0dHBzOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dv cmxkL0dlb2NvZGVTZXJ2ZXIvcmV2ZXJzZUdlb2NvZGUiKSk7CisgCisgc3RhdGljIFFTdHJpbmcg YWRkcmVzc1RvUXVlcnkoY29uc3QgUUdlb0FkZHJlc3MgJmFkZHJlc3MpCisgeworZGlmZiAtLWdp dCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZWpzb25w YXJzZXJfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2Vzcmkv Z2Vvcm91dGVqc29ucGFyc2VyX2VzcmkuY3BwCitpbmRleCAxNzQ5MmQ5NC4uOTZjMTJiMWIgMTAw NjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91 dGVqc29ucGFyc2VyX2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3Nl cnZpY2VzL2VzcmkvZ2Vvcm91dGVqc29ucGFyc2VyX2VzcmkuY3BwCitAQCAtNDYsNyArNDYsOCBA QAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorLS8vIEpTT04gcmVmZXJlbmNlOiBodHRwOi8v cmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2 aWNlX3dpdGhfc3luY2hyb25vdXNfZXhlY3V0aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKysvLyBK U09OIHJlZmVyZW5jZToKKysvLyBodHRwczovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAv YXJjZ2lzLXJlc3QtYXBpLyMvUm91dGVfc2VydmljZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlv bi8wMnIzMDAwMDAwMzYwMDAwMDAvCisgCisgc3RhdGljIGNvbnN0IFFTdHJpbmcga0Vycm9yTWVz c2FnZShRU3RyaW5nTGl0ZXJhbCgiRXJyb3IgJTE6ICUyLiIpKTsKKyBzdGF0aWMgY29uc3QgUVN0 cmluZyBrRXJyb3JKc29uKFFTdHJpbmdMaXRlcmFsKCJFcnJvcjogaW52YWxpZGUgSlNPTiBkb2N1 bWVudC4iKSk7CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNl cy9lc3JpL2dlb3JvdXRlcmVwbHlfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dl b3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVyZXBseV9lc3JpLmNwcAoraW5kZXggOGNhZGZiMjkuLjky YjZiYjEzIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9l c3JpL2dlb3JvdXRlcmVwbHlfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMv Z2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZXJlcGx5X2VzcmkuY3BwCitAQCAtNDQsNyArNDQsOCBA QAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorLS8vIEpTT04gcmVmZXJlbmNlOiBodHRwOi8v cmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2 aWNlX3dpdGhfc3luY2hyb25vdXNfZXhlY3V0aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKysvLyBK U09OIHJlZmVyZW5jZToKKysvLyBodHRwczovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAv YXJjZ2lzLXJlc3QtYXBpLyMvUm91dGVfc2VydmljZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlv bi8wMnIzMDAwMDAwMzYwMDAwMDAvCisgCisgR2VvUm91dGVSZXBseUVzcmk6Okdlb1JvdXRlUmVw bHlFc3JpKFFOZXR3b3JrUmVwbHkgKnJlcGx5LCBjb25zdCBRR2VvUm91dGVSZXF1ZXN0ICZyZXF1 ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRT2JqZWN0ICpwYXJl bnQpIDoKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2Vz cmkvZ2Vvcm91dGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVn aW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2lu ZGV4IDBlNmJjMmM3Li5lZDYxM2Y0YiAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdp bnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0aW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorKysr IGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRpbmdtYW5h Z2VyZW5naW5lX2VzcmkuY3BwCitAQCAtNDgsNyArNDgsOCBAQCBzdGF0aWMgY29uc3QgUVN0cmlu ZyBrUHJlZml4RXNyaShRU3RyaW5nTGl0ZXJhbCgiZXNyaS4iKSk7Cisgc3RhdGljIGNvbnN0IFFT dHJpbmcga1BhcmFtVXNlckFnZW50KGtQcmVmaXhFc3JpICsgUVN0cmluZ0xpdGVyYWwoInVzZXJh Z2VudCIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrUGFyYW1Ub2tlbihrUHJlZml4RXNyaSAr IFFTdHJpbmdMaXRlcmFsKCJ0b2tlbiIpKTsKKyAKKy1zdGF0aWMgY29uc3QgUVN0cmluZyBrVXJs Um91dGluZyhRU3RyaW5nTGl0ZXJhbCgiaHR0cDovL3JvdXRlLmFyY2dpcy5jb20vYXJjZ2lzL3Jl c3Qvc2VydmljZXMvV29ybGQvUm91dGUvTkFTZXJ2ZXIvUm91dGVfV29ybGQvc29sdmUiKSk7Cisr c3RhdGljIGNvbnN0IFFTdHJpbmcga1VybFJvdXRpbmcoUVN0cmluZ0xpdGVyYWwoCisrICAgICAg ICAiaHR0cHM6Ly9yb3V0ZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL1Jv dXRlL05BU2VydmVyL1JvdXRlX1dvcmxkL3NvbHZlIikpOworIAorIEdlb1JvdXRpbmdNYW5hZ2Vy RW5naW5lRXNyaTo6R2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpKGNvbnN0IFFWYXJpYW50TWFw ICZwYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFHZW9TZXJ2aWNlUHJvdmlkZXI6OkVycm9yICplcnJvciwKK0BAIC03 MCw3ICs3MSw4IEBAIEdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaTo6fkdlb1JvdXRpbmdNYW5h Z2VyRW5naW5lRXNyaSgpCisgeworIH0KKyAKKy0vLyBSRVNUIHJlZmVyZW5jZTogaHR0cDovL3Jl c291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8w MnIzMDAwMDAwMzYwMDAwMDAKKysvLyBSRVNUIHJlZmVyZW5jZToKKysvLyBodHRwczovL3Jlc291 cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIz MDAwMDAwMzYwMDAwMDAKKyAKKyBRR2VvUm91dGVSZXBseSAqR2VvUm91dGluZ01hbmFnZXJFbmdp bmVFc3JpOjpjYWxjdWxhdGVSb3V0ZShjb25zdCBRR2VvUm91dGVSZXF1ZXN0ICZyZXF1ZXN0KQor IHsKK0BAIC0xMjUsNyArMTI3LDcgQEAgdm9pZCBHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6 OnJlcGx5RXJyb3IoUUdlb1JvdXRlUmVwbHk6OkVycm9yIGVycm9yQ29kZSwgY28KKyBRU3RyaW5n IEdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaTo6cHJlZmVyZWREaXJlY3Rpb25MYW5nYWdlKCkK KyB7CisgICAgIC8vIGxpc3Qgb2Ygc3VwcG9ydGVkIGxhbmdhZ2VzIGlzIGRlZmluZWQgaW46Cist ICAgIC8vIGh0dHA6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFw aS9pbmRleC5odG1sIy8vMDJyMzAwMDAwMDM2MDAwMDAwCisrICAgIC8vIGh0dHBzOi8vcmVzb3Vy Y2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvaW5kZXguaHRtbCMvLzAycjMw MDAwMDAzNjAwMDAwMAorICAgICBjb25zdCBRU3RyaW5nTGlzdCBzdXBwb3J0ZWRMYW5ndWFnZXMg PSB7CisgICAgICAgICAiYXIiLCAvLyBHZW5lcmF0ZSBkaXJlY3Rpb25zIGluIEFyYWJpYworICAg ICAgICAgImNzIiwgLy8gR2VuZXJhdGUgZGlyZWN0aW9ucyBpbiBDemVjaAorZGlmZiAtLWdpdCBh L3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW90aWxlZG1hcHBpbmdt YW5hZ2VyZW5naW5lX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNl cy9lc3JpL2dlb3RpbGVkbWFwcGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDVkMTU4 MzVkLi4yNDE0OGY5NSAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2Vy dmljZXMvZXNyaS9nZW90aWxlZG1hcHBpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCisrKysgYi9x dGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvdGlsZWRtYXBwaW5nbWFu YWdlcmVuZ2luZV9lc3JpLmNwcAorQEAgLTIzMCw3ICsyMzAsOCBAQCBRR2VvTWFwICpHZW9UaWxl ZE1hcHBpbmdNYW5hZ2VyRW5naW5lRXNyaTo6Y3JlYXRlTWFwKCkKKyAvLyAke3l9ID0gWQorIC8v ICR7dG9rZW59ID0gVG9rZW4KKyAKKy0vLyB0ZW1wbGF0ZSA9ICdodHRwOi8vc2VydmljZXMuYXJj Z2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9Ub3BvX01hcC9NYXBTZXJ2 ZXIvdGlsZS97e3p9fS97e3l9fS97e3h9fS5wbmcnCisrLy8gdGVtcGxhdGUgPQorKy8vICdodHRw czovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRf VG9wb19NYXAvTWFwU2VydmVyL3RpbGUve3t6fX0ve3t5fX0ve3t4fX0ucG5nJworIAorIGJvb2wg R2VvVGlsZWRNYXBwaW5nTWFuYWdlckVuZ2luZUVzcmk6OmluaXRpYWxpemVNYXBTb3VyY2VzKFFH ZW9TZXJ2aWNlUHJvdmlkZXI6OkVycm9yICplcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nICplcnJvclN0cmlu ZywKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2Vzcmkv bWFwcy5qc29uIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL21hcHMu anNvbgoraW5kZXggODE2N2FlN2QuLjg2MmUwODdkIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9z cmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL21hcHMuanNvbgorKysrIGIvcXRsb2NhdGlvbi9z cmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL21hcHMuanNvbgorQEAgLTYsOCArNiw4IEBACisg ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgU3RyZWV0IE1h cCIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0Ijog ZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5l LmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9TdHJlZXRfTWFwL01hcFNlcnZlciIsCist ICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cu YXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0zYjkzMzM3OTgzZTk0MzZmOGRiOTUwZTM4YTg2 MjlhZic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6 Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1N0 cmVldF9NYXAvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29w eTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0zYjkz MzM3OTgzZTk0MzZmOGRiOTUwZTM4YTg2MjlhZic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAg ICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC0xNiw4ICsxNiw4IEBACisgICAgICAgICAgICAg IiI6ICJBcmNHSVMgT25saW5lIFdvcmxkIEltYWdlcnkiLAorICAgICAgICAgICAgICJtb2JpbGUi OiB0cnVlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwi OiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dv cmxkX0ltYWdlcnkvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICIm Y29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTEw ZGYyMjc5Zjk2ODRlNGE5ZjZhN2YwOGZlYmFjMmE5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisr ICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJ Uy9yZXN0L3NlcnZpY2VzL1dvcmxkX0ltYWdlcnkvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAi Y29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9o b21lL2l0ZW0uaHRtbD9pZD0xMGRmMjI3OWY5Njg0ZTRhOWY2YTdmMDhmZWJhYzJhOSc+RXNyaTwv YT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC0yNiw4ICsy Niw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFyY0dJUyBPbmxpbmUgV29ybGQg VGVycmFpbiBCYXNlIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAg ICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFy Y2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVGVycmFpbl9CYXNlL01h cFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9 J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1jNjFhZDhhYjAxN2Q0OWUx YTgyZjU4MGVlMTI5ODkzMSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1 cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNl cy9Xb3JsZF9UZXJyYWluX0Jhc2UvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0 VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0u aHRtbD9pZD1jNjFhZDhhYjAxN2Q0OWUxYTgyZjU4MGVlMTI5ODkzMSc+RXNyaTwvYT4gY29udHJp YnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC0zNiw4ICszNiw4IEBACisg ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgVG9wb2dyYXBo eSIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0Ijog ZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5j b20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVG9wb19NYXAvTWFwU2VydmVyIiwKKy0gICAg ICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNn aXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTMwZTVmZTMxNDljMzRkZjFiYTkyMmU2ZjViYmY4MDhm Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3Nl cnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RvcG9fTWFw L01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhy ZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MzBlNWZlMzE0OWMz NGRmMWJhOTIyZTZmNWJiZjgwOGYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0s CisgCisgICAgICAgICB7CitAQCAtNDYsOCArNDYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlw dGlvbiI6ICJUaGlzIG1hcCBwcmVzZW50cyBsYW5kIGNvdmVyIGFuZCBkZXRhaWxlZCB0b3BvZ3Jh cGhpYyBtYXBzIGZvciB0aGUgVW5pdGVkIFN0YXRlcy4iLAorICAgICAgICAgICAgICJtb2JpbGUi OiB0cnVlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwi OiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMv VVNBX1RvcG9fTWFwcy9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0Ijog IiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9 OTljZDVmYmQ5ODkzNDAyODgwMmI0Zjc5N2M0YjE3MzInPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIK KysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9B cmNHSVMvcmVzdC9zZXJ2aWNlcy9VU0FfVG9wb19NYXBzL01hcFNlcnZlciIsCisrICAgICAgICAg ICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5j b20vaG9tZS9pdGVtLmh0bWw/aWQ9OTljZDVmYmQ5ODkzNDAyODgwMmI0Zjc5N2M0YjE3MzInPkVz cmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtNTYs OCArNTYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJOYXRpb25hbCBHZW9ncmFw aGljIFdvcmxkIE1hcCIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAg ICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2Vz LmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvTmF0R2VvX1dvcmxkX01hcC9N YXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVm PSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YjliMWI0MjIxOTg5NDRm YmJkNTI1MGIzMjQxNjkxYjYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAi dXJsIjogImh0dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2 aWNlcy9OYXRHZW9fV29ybGRfTWFwL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdo dFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVt Lmh0bWw/aWQ9YjliMWI0MjIxOTg5NDRmYmJkNTI1MGIzMjQxNjkxYjYnPkVzcmk8L2E+IGNvbnRy aWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtNjYsOCArNjYsOCBAQAor ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGVtYXRpYyBjb250ZW50IHByb3ZpZGluZyBh IG5ldXRyYWwgYmFja2dyb3VuZCB3aXRoIG1pbmltYWwgY29sb3JzIiwKKyAgICAgICAgICAgICAi bW9iaWxlIjogdHJ1ZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAg ICAidXJsIjogImh0dHA6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3Nl cnZpY2VzL0NhbnZhcy9Xb3JsZF9MaWdodF9HcmF5X0Jhc2UvTWFwU2VydmVyIiwKKy0gICAgICAg ICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMu Y29tL2hvbWUvaXRlbS5odG1sP2lkPWVkNzEyY2IxZGIzZTRiYWU5ZTg1MzI5MDQwZmI5YTQ5Jz5F c3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZp Y2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvQ2FudmFzL1dvcmxkX0xp Z2h0X0dyYXlfQmFzZS9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0Ijog IiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lk PWVkNzEyY2IxZGIzZTRiYWU5ZTg1MzI5MDQwZmI5YTQ5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMi CisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTc2LDggKzc2LDggQEAKKyAgICAgICAg ICAgICAiZGVzY3JpcHRpb24iOiAiTmF0dXJhbCBFYXJ0aCBwaHlzaWNhbCBtYXAgZm9yIHRoZSB3 b3JsZCIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdo dCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxp bmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1BoeXNpY2FsX01hcC9NYXBTZXJ2ZXIi LAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8v d3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YzRlYzcyMmExY2QzNGNmMGEyMzkwNGFh ZGY4OTIzYTAnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0 dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRf UGh5c2ljYWxfTWFwL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAi JmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9 YzRlYzcyMmExY2QzNGNmMGEyMzkwNGFhZGY4OTIzYTAnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIK KyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtODYsOCArODYsOCBAQAorICAgICAgICAg ICAgICJkZXNjcmlwdGlvbiI6ICJQb3J0cmF5cyBzdXJmYWNlIGVsZXZhdGlvbiBhcyBzaGFkZWQg cmVsaWVmIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5p Z2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29u bGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfU2hhZGVkX1JlbGllZi9NYXBTZXJ2 ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRw Oi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9OWM1MzcwZDBiNTRmNGRlMWI0OGEz NzkyZDczNzdmZjInPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjog Imh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29y bGRfU2hhZGVkX1JlbGllZi9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0 IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1s P2lkPTljNTM3MGQwYjU0ZjRkZTFiNDhhMzc5MmQ3Mzc3ZmYyJz5Fc3JpPC9hPiBjb250cmlidXRv cnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTk2LDggKzk2LDggQEAKKyAgICAg ICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBtYXAgaXMgZGVzaWduZWQgdG8gYmUgdXNlZCBh cyBhIGJhc2VtYXAgYnkgbWFyaW5lIEdJUyBwcm9mZXNzaW9uYWxzIGFuZCBhcyBhIHJlZmVyZW5j ZSBtYXAgYnkgYW55b25lIGludGVyZXN0ZWQgaW4gb2NlYW4gZGF0YSIsCisgICAgICAgICAgICAg Im1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAg ICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL2FyY2dpcy9yZXN0L3Nl cnZpY2VzL09jZWFuL1dvcmxkX09jZWFuX0Jhc2UvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAi Y29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hv bWUvaXRlbS5odG1sP2lkPTFlMTI2ZTc1MjBmOTQ2NmM5Y2EyOGI4ZjI4YjVlNTAwJz5Fc3JpPC9h PiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNn aXNvbmxpbmUuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL09jZWFuL1dvcmxkX09jZWFuX0Jhc2Uv TWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJl Zj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0xZTEyNmU3NTIwZjk0 NjZjOWNhMjhiOGYyOGI1ZTUwMCc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwK KyAKKyAgICAgICAgIHsKK0BAIC0xMDYsOCArMTA2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3Jp cHRpb24iOiAiVGhlbWF0aWMgY29udGVudCBwcm92aWRpbmcgYSBuZXV0cmFsIGJhY2tncm91bmQg d2l0aCBtaW5pbWFsIGNvbG9ycyIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAg ICAgICAgICAgICJuaWdodCI6IHRydWUsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2Vy dmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9DYW52YXMvV29ybGRf RGFya19HcmF5X0Jhc2UvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6 ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lk PWEyODRhOWI5OWIzNDQ2YTM5MTBkNDE0NGE1MDk5MGY2Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMi CisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20v QXJjR0lTL3Jlc3Qvc2VydmljZXMvQ2FudmFzL1dvcmxkX0RhcmtfR3JheV9CYXNlL01hcFNlcnZl ciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBz Oi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YTI4NGE5Yjk5YjM0NDZhMzkxMGQ0 MTQ0YTUwOTkwZjYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAg ICAgICB7CitAQCAtMTE2LDggKzExNiw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog IkRlTG9ybWXigJlzIHRvcG9ncmFwaGljIGJhc2VtYXAgaXMgYSBzZWFtbGVzcyBnbG9iYWwgZGF0 YSBzZXQgdGhhdCBwb3J0cmF5cyB0cmFuc3BvcnRhdGlvbiwgaHlkcm9ncmFwaHksIGp1cmlzZGlj dGlvbiBib3VuZGFyaWVzLCBhbmQgbWFqb3IgZ2VvZ3JhcGhpYyBmZWF0dXJlcyIsCisgICAgICAg ICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAg ICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9y ZXN0L3NlcnZpY2VzL1NwZWNpYWx0eS9EZUxvcm1lX1dvcmxkX0Jhc2VfTWFwL01hcFNlcnZlciIs CistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93 d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1iMTY1YzNkZjQ1M2U0YmU2YjVhYzRmZGIy NDFlZmZiZSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0 cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9TcGVjaWFs dHkvRGVMb3JtZV9Xb3JsZF9CYXNlX01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5 cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUv aXRlbS5odG1sP2lkPWIxNjVjM2RmNDUzZTRiZTZiNWFjNGZkYjI0MWVmZmJlJz5Fc3JpPC9hPiBj b250cmlidXRvcnMiCisgICAgICAgICB9CisgICAgIF0KKyB9CitkaWZmIC0tZ2l0IGEvcXRsb2Nh dGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL3BsYWNlbWFuYWdlcmVuZ2luZV9lc3Jp LmNwcCBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFn ZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDM4NThkZGY1Li5hZjY2ZjI4ZSAxMDA2NDQKKy0tLSBh L3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdp bmVfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNy aS9wbGFjZW1hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK0BAIC02Myw4ICs2MywxMCBAQCBzdGF0aWMg Y29uc3QgUVN0cmluZyBrQ291bnRyaWVzS2V5KFFTdHJpbmdMaXRlcmFsKCJkZXRhaWxlZENvdW50 cmllcyIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrTG9jYWxpemVkTmFtZXNLZXkoUVN0cmlu Z0xpdGVyYWwoImxvY2FsaXplZE5hbWVzIikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtNYXhM b2NhdGlvbnNLZXkoUVN0cmluZ0xpdGVyYWwoIm1heExvY2F0aW9ucyIpKTsKKyAKKy1zdGF0aWMg Y29uc3QgUVVybCBrVXJsR2VvY29kZVNlcnZlcigiaHR0cDovL2dlb2NvZGUuYXJjZ2lzLmNvbS9h cmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyP2Y9cGpzb24iKTsKKy1zdGF0 aWMgY29uc3QgUVVybCBrVXJsRmluZEFkZHJlc3NDYW5kaWRhdGVzKCJodHRwOi8vZ2VvY29kZS5h cmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXIvZmluZEFk ZHJlc3NDYW5kaWRhdGVzIik7Cisrc3RhdGljIGNvbnN0IFFVcmwga1VybEdlb2NvZGVTZXJ2ZXIo CisrICAgICAgICAiaHR0cHM6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2Vydmlj ZXMvV29ybGQvR2VvY29kZVNlcnZlcj9mPXBqc29uIik7Cisrc3RhdGljIGNvbnN0IFFVcmwga1Vy bEZpbmRBZGRyZXNzQ2FuZGlkYXRlcygiaHR0cHM6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lz L3Jlc3Qvc2VydmljZXMvV29ybGQvIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIkdlb2NvZGVTZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIik7CisgCisg UGxhY2VNYW5hZ2VyRW5naW5lRXNyaTo6UGxhY2VNYW5hZ2VyRW5naW5lRXNyaShjb25zdCBRVmFy aWFudE1hcCAmcGFyYW1ldGVycywgUUdlb1NlcnZpY2VQcm92aWRlcjo6RXJyb3IgKmVycm9yLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyAq ZXJyb3JTdHJpbmcpIDoKK1N1Ym1vZHVsZSBxdG11bHRpbWVkaWEgZjAzNDQwNzkuLjBkN2NjMzNh OgorZGlmZiAtLWdpdCBhL3F0bXVsdGltZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRp b2lucHV0X3B1bHNlLmNwcCBiL3F0bXVsdGltZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3Fh dWRpb2lucHV0X3B1bHNlLmNwcAoraW5kZXggMmI1MzI1MTMyLi5iNjhiNGFmMWIgMTAwNjQ0Cist LS0gYS9xdG11bHRpbWVkaWEvc3JjL3BsdWdpbnMvcHVsc2VhdWRpby9xYXVkaW9pbnB1dF9wdWxz ZS5jcHAKKysrKyBiL3F0bXVsdGltZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRpb2lu cHV0X3B1bHNlLmNwcAorQEAgLTQwMiw2ICs0MDIsOCBAQCBpbnQgUVB1bHNlQXVkaW9JbnB1dDo6 Ynl0ZXNSZWFkeSgpIGNvbnN0CisgCisgcWludDY0IFFQdWxzZUF1ZGlvSW5wdXQ6OnJlYWQoY2hh ciAqZGF0YSwgcWludDY0IGxlbikKKyB7CisrICAgIFFfQVNTRVJUKGRhdGEgIT0gbnVsbHB0ciB8 fCBsZW4gPT0gMCk7CisrCisgICAgIG1fYnl0ZXNBdmFpbGFibGUgPSBjaGVja0J5dGVzUmVhZHko KTsKKyAKKyAgICAgc2V0RXJyb3IoUUF1ZGlvOjpOb0Vycm9yKTsKK0BAIC00MTEsNyArNDEzLDgg QEAgcWludDY0IFFQdWxzZUF1ZGlvSW5wdXQ6OnJlYWQoY2hhciAqZGF0YSwgcWludDY0IGxlbikK KyAKKyAgICAgaWYgKCFtX3B1bGxNb2RlICYmICFtX3RlbXBCdWZmZXIuaXNFbXB0eSgpKSB7Cisg ICAgICAgICByZWFkQnl0ZXMgPSBxTWluKHN0YXRpY19jYXN0PGludD4obGVuKSwgbV90ZW1wQnVm ZmVyLnNpemUoKSk7CistICAgICAgICBtZW1jcHkoZGF0YSwgbV90ZW1wQnVmZmVyLmNvbnN0RGF0 YSgpLCByZWFkQnl0ZXMpOworKyAgICAgICAgaWYgKHJlYWRCeXRlcykKKysgICAgICAgICAgICBt ZW1jcHkoZGF0YSwgbV90ZW1wQnVmZmVyLmNvbnN0RGF0YSgpLCByZWFkQnl0ZXMpOworICAgICAg ICAgbV90b3RhbFRpbWVWYWx1ZSArPSByZWFkQnl0ZXM7CisgCisgICAgICAgICBpZiAocmVhZEJ5 dGVzIDwgbV90ZW1wQnVmZmVyLnNpemUoKSkgeworQEAgLTUwMiw5ICs1MDUsMTAgQEAgcWludDY0 IFFQdWxzZUF1ZGlvSW5wdXQ6OnJlYWQoY2hhciAqZGF0YSwgcWludDY0IGxlbikKKyAKKyB2b2lk IFFQdWxzZUF1ZGlvSW5wdXQ6OmFwcGx5Vm9sdW1lKGNvbnN0IHZvaWQgKnNyYywgdm9pZCAqZGVz dCwgaW50IGxlbikKKyB7CisrICAgIFFfQVNTRVJUKChzcmMgJiYgZGVzdCkgfHwgbGVuID09IDAp OworICAgICBpZiAobV92b2x1bWUgPCAxLmYpCisgICAgICAgICBRQXVkaW9IZWxwZXJJbnRlcm5h bDo6cU11bHRpcGx5U2FtcGxlcyhtX3ZvbHVtZSwgbV9mb3JtYXQsIHNyYywgZGVzdCwgbGVuKTsK Ky0gICAgZWxzZQorKyAgICBlbHNlIGlmIChsZW4pCisgICAgICAgICBtZW1jcHkoZGVzdCwgc3Jj LCBsZW4pOworIH0KKyAKK1N1Ym1vZHVsZSBxdHBpbSAwMmVmZWY1ZS4uLmY5YThmMGZjIChjb21t aXRzIG5vdCBwcmVzZW50KQorU3VibW9kdWxlIHF0cXVpY2szZCBiODVjZjYyMi4uNDdkZWZjOGI6 CitkaWZmIC0tZ2l0IGEvcXRxdWljazNkL3NyYy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2lt cC9hc3NpbXAucHJvIGIvcXRxdWljazNkL3NyYy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2lt cC9hc3NpbXAucHJvCitpbmRleCBjYTVjNDk5ZS4uMTc0YTA3NWIgMTAwNjQ0CistLS0gYS9xdHF1 aWNrM2Qvc3JjL3BsdWdpbnMvYXNzZXRpbXBvcnRlcnMvYXNzaW1wL2Fzc2ltcC5wcm8KKysrKyBi L3F0cXVpY2szZC9zcmMvcGx1Z2lucy9hc3NldGltcG9ydGVycy9hc3NpbXAvYXNzaW1wLnBybwor QEAgLTEwLDcgKzEwLDcgQEAgUVRfRk9SX0NPTkZJRyArPSBhc3NldGltcG9ydGVycy1wcml2YXRl CisgaW5jbHVkZSgkJE9VVF9QV0QvLi4vcXRhc3NldGltcG9ydGVycy1jb25maWcucHJpKQorIAor IHF0Q29uZmlnKHN5c3RlbS1hc3NpbXApOiFpZihjcm9zc19jb21waWxlOmhvc3RfYnVpbGQpIHsK Ky0gICAgUU1BS0VfVVNFX1BSSVZBVEUgKz0gYXNzaW1wCisrICAgIFFNQUtFX1VTRV9QUklWQVRF ICs9IHF1aWNrM2QtYXNzaW1wCisgfSBlbHNlIHsKKyAgICAgaW5jbHVkZSguLi8uLi8uLi8zcmRw YXJ0eS9hc3NpbXAvYXNzaW1wLnByaSkKKyB9CitTdWJtb2R1bGUgcXRxdWlja2NvbnRyb2xzMiAz YTY1N2RjMC4uNTZjZTgyMzM6CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvaW1w b3J0cy9wbGF0Zm9ybS93aWRnZXRzL3F3aWRnZXRwbGF0Zm9ybW1lbnUuY3BwIGIvcXRxdWlja2Nv bnRyb2xzMi9zcmMvaW1wb3J0cy9wbGF0Zm9ybS93aWRnZXRzL3F3aWRnZXRwbGF0Zm9ybW1lbnUu Y3BwCitpbmRleCBlNWZlNzM0ZjcuLmUzNjkyMjc3NSAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250 cm9sczIvc3JjL2ltcG9ydHMvcGxhdGZvcm0vd2lkZ2V0cy9xd2lkZ2V0cGxhdGZvcm1tZW51LmNw cAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvaW1wb3J0cy9wbGF0Zm9ybS93aWRnZXRzL3F3 aWRnZXRwbGF0Zm9ybW1lbnUuY3BwCitAQCAtMzgsNiArMzgsNyBAQAorICNpbmNsdWRlICJxd2lk Z2V0cGxhdGZvcm1tZW51aXRlbV9wLmgiCisgCisgI2luY2x1ZGUgPFF0R3VpL3F3aW5kb3cuaD4K KysjaW5jbHVkZSA8UXRHdWkvcHJpdmF0ZS9xaGlnaGRwaXNjYWxpbmdfcC5oPgorICNpbmNsdWRl IDxRdFdpZGdldHMvcW1lbnUuaD4KKyAjaW5jbHVkZSA8UXRXaWRnZXRzL3FhY3Rpb24uaD4KKyAK K0BAIC0xNDUsNyArMTQ2LDcgQEAgdm9pZCBRV2lkZ2V0UGxhdGZvcm1NZW51OjpzaG93UG9wdXAo Y29uc3QgUVdpbmRvdyAqd2luZG93LCBjb25zdCBRUmVjdCAmdGFyZ2V0UmUKKyAKKyAgICAgUVBv aW50IHRhcmdldFBvcyA9IHRhcmdldFJlY3QuYm90dG9tTGVmdCgpOworICAgICBpZiAod2luZG93 KQorLSAgICAgICAgdGFyZ2V0UG9zID0gd2luZG93LT5tYXBUb0dsb2JhbCh0YXJnZXRQb3MpOwor KyAgICAgICAgdGFyZ2V0UG9zID0gd2luZG93LT5tYXBUb0dsb2JhbChRSGlnaERwaTo6ZnJvbU5h dGl2ZUxvY2FsUG9zaXRpb24odGFyZ2V0UG9zLCB3aW5kb3cpKTsKKyAKKyAgICAgY29uc3QgUVdp ZGdldFBsYXRmb3JtTWVudUl0ZW0gKndpZGdldEl0ZW0gPSBxb2JqZWN0X2Nhc3Q8Y29uc3QgUVdp ZGdldFBsYXRmb3JtTWVudUl0ZW0gKj4oaXRlbSk7CisgICAgIG1fbWVudS0+cG9wdXAodGFyZ2V0 UG9zLCB3aWRnZXRJdGVtID8gd2lkZ2V0SXRlbS0+YWN0aW9uKCkgOiBudWxscHRyKTsKK2RpZmYg LS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJh Y3RidXR0b24uY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlj a2Fic3RyYWN0YnV0dG9uLmNwcAoraW5kZXggOTUwZTRlMDk5Li5iODFmYmVhMGIgMTAwNjQ0Cist LS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3Ri dXR0b24uY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1 aWNrYWJzdHJhY3RidXR0b24uY3BwCitAQCAtMzg3LDYgKzM4NywxNyBAQCB2b2lkIFFRdWlja0Fi c3RyYWN0QnV0dG9uUHJpdmF0ZTo6aXRlbUltcGxpY2l0SGVpZ2h0Q2hhbmdlZChRUXVpY2tJdGVt ICppdGVtKQorICAgICAgICAgZW1pdCBxLT5pbXBsaWNpdEluZGljYXRvckhlaWdodENoYW5nZWQo KTsKKyB9CisgCisrdm9pZCBRUXVpY2tBYnN0cmFjdEJ1dHRvblByaXZhdGU6Oml0ZW1EZXN0cm95 ZWQoUVF1aWNrSXRlbSAqaXRlbSkKKyt7CisrICAgIFFfUShRUXVpY2tBYnN0cmFjdEJ1dHRvbik7 CisrICAgIFFRdWlja0NvbnRyb2xQcml2YXRlOjppdGVtRGVzdHJveWVkKGl0ZW0pOworKyAgICBp ZiAoaXRlbSA9PSBpbmRpY2F0b3IpIHsKKysgICAgICAgIGluZGljYXRvciA9IG51bGxwdHI7Cisr ICAgICAgICBlbWl0IHEtPmltcGxpY2l0SW5kaWNhdG9yV2lkdGhDaGFuZ2VkKCk7CisrICAgICAg ICBlbWl0IHEtPmltcGxpY2l0SW5kaWNhdG9ySGVpZ2h0Q2hhbmdlZCgpOworKyAgICB9CisrfQor KworIFFRdWlja0Fic3RyYWN0QnV0dG9uICpRUXVpY2tBYnN0cmFjdEJ1dHRvblByaXZhdGU6OmZp bmRDaGVja2VkQnV0dG9uKCkgY29uc3QKKyB7CisgICAgIFFfUShjb25zdCBRUXVpY2tBYnN0cmFj dEJ1dHRvbik7CitAQCAtMTE3Niw2ICsxMTg3LDEyIEBAIFFBY2Nlc3NpYmxlOjpSb2xlIFFRdWlj a0Fic3RyYWN0QnV0dG9uOjphY2Nlc3NpYmxlUm9sZSgpIGNvbnN0CisgICAgIH0KKyAgICAgcmV0 dXJuIFFBY2Nlc3NpYmxlOjpCdXR0b247CisgfQorKworK3ZvaWQgUVF1aWNrQWJzdHJhY3RCdXR0 b246OmFjY2Vzc2libGVQcmVzc0FjdGlvbigpCisreworKyAgICBRX0QoUVF1aWNrQWJzdHJhY3RC dXR0b24pOworKyAgICBkLT50cmlnZ2VyKCk7CisrfQorICNlbmRpZgorIAorIFFUX0VORF9OQU1F U1BBQ0UKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIv cXF1aWNrYWJzdHJhY3RidXR0b25fcC5oIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1w bGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3AuaAoraW5kZXggMGZhNDg5ODBlLi5hYjY2MjIw ZDAgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1 aWNrYWJzdHJhY3RidXR0b25fcC5oCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3Rl bXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcC5oCitAQCAtMjA5LDYgKzIwOSw3IEBAIHBy b3RlY3RlZDoKKyAjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisgICAgIHZvaWQgYWNjZXNz aWJpbGl0eUFjdGl2ZUNoYW5nZWQoYm9vbCBhY3RpdmUpIG92ZXJyaWRlOworICAgICBRQWNjZXNz aWJsZTo6Um9sZSBhY2Nlc3NpYmxlUm9sZSgpIGNvbnN0IG92ZXJyaWRlOworKyAgICBRX0lOVk9L QUJMRSB2b2lkIGFjY2Vzc2libGVQcmVzc0FjdGlvbigpOworICNlbmRpZgorIAorIHByaXZhdGU6 CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlj a2Fic3RyYWN0YnV0dG9uX3BfcC5oIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0 ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3BfcC5oCitpbmRleCA5MjkxYzFhODcuLmI3Mjk3MjBm MiAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVp Y2thYnN0cmFjdGJ1dHRvbl9wX3AuaAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0 ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3BfcC5oCitAQCAtMTA5LDYgKzEwOSw3IEBA IHB1YmxpYzoKKyAKKyAgICAgdm9pZCBpdGVtSW1wbGljaXRXaWR0aENoYW5nZWQoUVF1aWNrSXRl bSAqaXRlbSkgb3ZlcnJpZGU7CisgICAgIHZvaWQgaXRlbUltcGxpY2l0SGVpZ2h0Q2hhbmdlZChR UXVpY2tJdGVtICppdGVtKSBvdmVycmlkZTsKKysgICAgdm9pZCBpdGVtRGVzdHJveWVkKFFRdWlj a0l0ZW0gKml0ZW0pIG92ZXJyaWRlOworIAorICAgICAvLyBjb3BpZWQgZnJvbSBxYWJzdHJhY3Ri dXR0b24uY3BwCisgICAgIHN0YXRpYyBjb25zdCBpbnQgQVVUT19SRVBFQVRfREVMQVkgPSAzMDA7 CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlj a2FjdGlvbi5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNr YWN0aW9uLmNwcAoraW5kZXggMjA0MWU3NzQxLi44NjEwY2RmYWUgMTAwNjQ0CistLS0gYS9xdHF1 aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWN0aW9uLmNwcAorKysrIGIv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5jcHAKK0BA IC0xNDUsNyArMTQ1LDcgQEAgaW50IFFRdWlja0FjdGlvblByaXZhdGU6OlNob3J0Y3V0RW50cnk6 OnNob3J0Y3V0SWQoKSBjb25zdAorIAorIHZvaWQgUVF1aWNrQWN0aW9uUHJpdmF0ZTo6U2hvcnRj dXRFbnRyeTo6Z3JhYihjb25zdCBRS2V5U2VxdWVuY2UgJnNob3J0Y3V0LCBib29sIGVuYWJsZWQp CisgeworLSAgICBpZiAoc2hvcnRjdXQuaXNFbXB0eSgpKQorKyAgICBpZiAoc2hvcnRjdXQuaXNF bXB0eSgpIHx8IG1fc2hvcnRjdXRJZCkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgUXQ6OlNo b3J0Y3V0Q29udGV4dCBjb250ZXh0ID0gUXQ6OldpbmRvd1Nob3J0Y3V0OyAvLyBUT0RPCitkaWZm IC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRh aW5lci5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29u dGFpbmVyLmNwcAoraW5kZXggZjM4YzJiMDljLi42ZWVkMmEwMjQgMTAwNjQ0CistLS0gYS9xdHF1 aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udGFpbmVyLmNwcAorKysr IGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5j cHAKK0BAIC0yMjUsNiArMjI1LDcgQEAgdm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjpjbGVh bnVwKCkKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVjdChjb250ZW50TW9kZWwsICZRUW1sT2JqZWN0 TW9kZWw6OmNvdW50Q2hhbmdlZCwgcSwgJlFRdWlja0NvbnRhaW5lcjo6Y291bnRDaGFuZ2VkKTsK KyAgICAgUU9iamVjdDo6ZGlzY29ubmVjdChjb250ZW50TW9kZWwsICZRUW1sT2JqZWN0TW9kZWw6 OmNoaWxkcmVuQ2hhbmdlZCwgcSwgJlFRdWlja0NvbnRhaW5lcjo6Y29udGVudENoaWxkcmVuQ2hh bmdlZCk7CisgICAgIGRlbGV0ZSBjb250ZW50TW9kZWw7CisrICAgIGNvbnRlbnRNb2RlbCA9IG51 bGxwdHI7CisgfQorIAorIFFRdWlja0l0ZW0gKlFRdWlja0NvbnRhaW5lclByaXZhdGU6Oml0ZW1B dChpbnQgaW5kZXgpIGNvbnN0CitAQCAtNDM2LDcgKzQzNyw3IEBAIHZvaWQgUVF1aWNrQ29udGFp bmVyUHJpdmF0ZTo6Y29udGVudENoaWxkcmVuX2NsZWFyKFFRbWxMaXN0UHJvcGVydHk8UVF1aWNr SXRlbT4KKyB2b2lkIFFRdWlja0NvbnRhaW5lclByaXZhdGU6OnVwZGF0ZUNvbnRlbnRXaWR0aCgp CisgeworICAgICBRX1EoUVF1aWNrQ29udGFpbmVyKTsKKy0gICAgaWYgKGhhc0NvbnRlbnRXaWR0 aCB8fCBxRnV6enlDb21wYXJlKGNvbnRlbnRXaWR0aCwgaW1wbGljaXRDb250ZW50V2lkdGgpKQor KyAgICBpZiAoaGFzQ29udGVudFdpZHRoIHx8IHFGdXp6eUNvbXBhcmUoY29udGVudFdpZHRoLCBp bXBsaWNpdENvbnRlbnRXaWR0aCkgfHwgIWNvbnRlbnRNb2RlbCkKKyAgICAgICAgIHJldHVybjsK KyAKKyAgICAgY29udGVudFdpZHRoID0gaW1wbGljaXRDb250ZW50V2lkdGg7CitAQCAtNDQ2LDcg KzQ0Nyw3IEBAIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6dXBkYXRlQ29udGVudFdpZHRo KCkKKyB2b2lkIFFRdWlja0NvbnRhaW5lclByaXZhdGU6OnVwZGF0ZUNvbnRlbnRIZWlnaHQoKQor IHsKKyAgICAgUV9RKFFRdWlja0NvbnRhaW5lcik7CistICAgIGlmIChoYXNDb250ZW50SGVpZ2h0 IHx8IHFGdXp6eUNvbXBhcmUoY29udGVudEhlaWdodCwgaW1wbGljaXRDb250ZW50SGVpZ2h0KSkK KysgICAgaWYgKGhhc0NvbnRlbnRIZWlnaHQgfHwgcUZ1enp5Q29tcGFyZShjb250ZW50SGVpZ2h0 LCBpbXBsaWNpdENvbnRlbnRIZWlnaHQpIHx8ICFjb250ZW50TW9kZWwpCisgICAgICAgICByZXR1 cm47CisgCisgICAgIGNvbnRlbnRIZWlnaHQgPSBpbXBsaWNpdENvbnRlbnRIZWlnaHQ7CitkaWZm IC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRy b2wuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRy b2wuY3BwCitpbmRleCBiYmJkMGU2MjIuLjFmNGI0NzM0MyAxMDA2NDQKKy0tLSBhL3F0cXVpY2tj b250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sLmNwcAorKysrIGIvcXRx dWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2wuY3BwCitAQCAt ODQ1LDYgKzg0NSwxMyBAQCB2b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjpleGVjdXRlQmFja2dy b3VuZChib29sIGNvbXBsZXRlKQorICAgICAgICAgcXVpY2tDb21wbGV0ZURlZmVycmVkKHEsIGJh Y2tncm91bmROYW1lKCksIGJhY2tncm91bmQpOworIH0KKyAKKysvKgorKyAgICBcaW50ZXJuYWwK KysKKysgICAgSGlkZXMgYW4gaXRlbSB0aGF0IHdhcyByZXBsYWNlZCBieSBhIG5ld2VyIG9uZSwg cmF0aGVyIHRoYW4KKysgICAgZGVsZXRpbmcgaXQsIGFzIHRoZSBpdGVtIGlzIHR5cGljYWxseSBj cmVhdGVkIGluIFFNTCBhbmQgaGVuY2UKKysgICAgd2UgZG9uJ3Qgb3duIGl0LgorKyovCisgdm9p ZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6aGlkZU9sZEl0ZW0oUVF1aWNrSXRlbSAqaXRlbSkKKyB7 CisgICAgIGlmICghaXRlbSkKK0BAIC04NjMsNiArODcwLDI5IEBAIHZvaWQgUVF1aWNrQ29udHJv bFByaXZhdGU6OmhpZGVPbGRJdGVtKFFRdWlja0l0ZW0gKml0ZW0pCisgI2VuZGlmCisgfQorIAor Ky8qCisrICAgIFxpbnRlcm5hbAorKworKyAgICBOYW1lZCAidW5oaWRlIiBiZWNhdXNlIGl0J3Mg dXNlZCBmb3IgY2FzZXMgd2hlcmUgYW4gaXRlbQorKyAgICB0aGF0IHdhcyBwcmV2aW91c2x5IGhp ZGRlbiBieSBcbCBoaWRlT2xkSXRlbSgpIHdhbnRzIHRvIGJlCisrICAgIHNob3duIGJ5IGEgY29u dHJvbCBhZ2Fpbiwgc3VjaCBhcyBhIFNjcm9sbEJhciBpbiBTY3JvbGxWaWV3LgorKyovCisrdm9p ZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6dW5oaWRlT2xkSXRlbShRUXVpY2tDb250cm9sICpjb250 cm9sLCBRUXVpY2tJdGVtICppdGVtKQorK3sKKysgICAgUV9BU1NFUlQoaXRlbSk7CisrICAgIHFD RGVidWcobGNJdGVtTWFuYWdlbWVudCkgPDwgInVuaGlkaW5nIG9sZCBpdGVtIiA8PCBpdGVtOwor KworKyAgICBpdGVtLT5zZXRWaXNpYmxlKHRydWUpOworKyAgICBpdGVtLT5zZXRQYXJlbnRJdGVt KGNvbnRyb2wpOworKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysgICAgLy8gQWRk IHRoZSBpdGVtIGJhY2sgaW4gdG8gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4KKysgICAgUVF1aWNr QWNjZXNzaWJsZUF0dGFjaGVkICphY2Nlc3NpYmxlID0gYWNjZXNzaWJsZUF0dGFjaGVkKGl0ZW0p OworKyAgICBpZiAoYWNjZXNzaWJsZSkKKysgICAgICAgIGFjY2Vzc2libGUtPnNldElnbm9yZWQo ZmFsc2UpOworKyNlbmRpZgorK30KKysKKyB2b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjp1cGRh dGVCYXNlbGluZU9mZnNldCgpCisgeworICAgICBRX1EoUVF1aWNrQ29udHJvbCk7CitkaWZmIC0t Z2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xf cF9wLmggYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJv bF9wX3AuaAoraW5kZXggOGU5NzkwNzllLi5hNmU2MjRjOTEgMTAwNjQ0CistLS0gYS9xdHF1aWNr Y29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbF9wX3AuaAorKysrIGIv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmgK K0BAIC0xNzMsNiArMTczLDcgQEAgcHVibGljOgorICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUJh Y2tncm91bmQoYm9vbCBjb21wbGV0ZSA9IGZhbHNlKTsKKyAKKyAgICAgc3RhdGljIHZvaWQgaGlk ZU9sZEl0ZW0oUVF1aWNrSXRlbSAqaXRlbSk7CisrICAgIHN0YXRpYyB2b2lkIHVuaGlkZU9sZEl0 ZW0oUVF1aWNrQ29udHJvbCAqY29udHJvbCwgUVF1aWNrSXRlbSAqaXRlbSk7CisgCisgICAgIHZv aWQgdXBkYXRlQmFzZWxpbmVPZmZzZXQoKTsKKyAKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJv bHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNwcCBiL3F0cXVp Y2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tkaWFsb2didXR0b25ib3guY3Bw CitpbmRleCBlNmRiMTRlYjUuLjYxOTdkMTU0NyAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9s czIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tkaWFsb2didXR0b25ib3guY3BwCisrKysgYi9x dHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94 LmNwcAorQEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMgUVJlY3RGIGFsaWduZWRSZWN0KFF0OjpM YXlvdXREaXJlY3Rpb24gZGlyZWN0aW9uLCBRdDo6QWxpZ25tZW50IGFsaWdubWVudAorIHZvaWQg UVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6cmVzaXplQ29udGVudCgpCisgeworICAgICBR X1EoUVF1aWNrRGlhbG9nQnV0dG9uQm94KTsKKy0gICAgaWYgKCFjb250ZW50SXRlbSkKKysgICAg aWYgKCFjb250ZW50SXRlbSB8fCAhY29udGVudE1vZGVsKQorICAgICAgICAgcmV0dXJuOworIAor ICAgICBRUmVjdEYgZ2VvbWV0cnkgPSBxLT5ib3VuZGluZ1JlY3QoKS5hZGp1c3RlZChxLT5sZWZ0 UGFkZGluZygpLCBxLT50b3BQYWRkaW5nKCksIC1xLT5yaWdodFBhZGRpbmcoKSwgLXEtPmJvdHRv bVBhZGRpbmcoKSk7CitAQCAtMzIyLDYgKzMyMiw5IEBAIHZvaWQgUVF1aWNrRGlhbG9nQnV0dG9u Qm94UHJpdmF0ZTo6dXBkYXRlTGF5b3V0KCkKKyBxcmVhbCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQ cml2YXRlOjpnZXRDb250ZW50V2lkdGgoKSBjb25zdAorIHsKKyAgICAgUV9RKGNvbnN0IFFRdWlj a0RpYWxvZ0J1dHRvbkJveCk7CisrICAgIGlmICghY29udGVudE1vZGVsKQorKyAgICAgICAgcmV0 dXJuIDA7CisrCisgICAgIGNvbnN0IGludCBjb3VudCA9IGNvbnRlbnRNb2RlbC0+Y291bnQoKTsK KyAgICAgY29uc3QgcXJlYWwgdG90YWxTcGFjaW5nID0gcU1heCgwLCBjb3VudCAtIDEpICogc3Bh Y2luZzsKKyAgICAgcXJlYWwgdG90YWxXaWR0aCA9IHRvdGFsU3BhY2luZzsKK0BAIC0zNDEsNiAr MzQ0LDkgQEAgcXJlYWwgUVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6Z2V0Q29udGVudFdp ZHRoKCkgY29uc3QKKyBxcmVhbCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjpnZXRDb250 ZW50SGVpZ2h0KCkgY29uc3QKKyB7CisgICAgIFFfUShjb25zdCBRUXVpY2tEaWFsb2dCdXR0b25C b3gpOworKyAgICBpZiAoIWNvbnRlbnRNb2RlbCkKKysgICAgICAgIHJldHVybiAwOworKworICAg ICBjb25zdCBpbnQgY291bnQgPSBjb250ZW50TW9kZWwtPmNvdW50KCk7CisgICAgIHFyZWFsIG1h eEhlaWdodCA9IDA7CisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworZGlm ZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVy bGF5LmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVy bGF5LmNwcAoraW5kZXggOTFiZDU5MTg0Li4wY2U1MThmODQgMTAwNjQ0CistLS0gYS9xdHF1aWNr Y29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrb3ZlcmxheS5jcHAKKysrKyBiL3F0 cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVybGF5LmNwcAorQEAg LTM5OSw4ICszOTksMTEgQEAgdm9pZCBRUXVpY2tPdmVybGF5OjppdGVtQ2hhbmdlKEl0ZW1DaGFu Z2UgY2hhbmdlLCBjb25zdCBJdGVtQ2hhbmdlRGF0YSAmZGF0YSkKKyAgICAgUV9EKFFRdWlja092 ZXJsYXkpOworICAgICBRUXVpY2tJdGVtOjppdGVtQ2hhbmdlKGNoYW5nZSwgZGF0YSk7CisgCist ICAgIGlmIChjaGFuZ2UgPT0gSXRlbUNoaWxkQWRkZWRDaGFuZ2UgfHwgY2hhbmdlID09IEl0ZW1D aGlsZFJlbW92ZWRDaGFuZ2UpCisrICAgIGlmIChjaGFuZ2UgPT0gSXRlbUNoaWxkQWRkZWRDaGFu Z2UgfHwgY2hhbmdlID09IEl0ZW1DaGlsZFJlbW92ZWRDaGFuZ2UpIHsKKyAgICAgICAgIHNldFZp c2libGUoIWQtPmFsbERyYXdlcnMuaXNFbXB0eSgpIHx8ICFjaGlsZEl0ZW1zKCkuaXNFbXB0eSgp KTsKKysgICAgICAgIGlmIChkYXRhLml0ZW0tPnBhcmVudCgpID09IGQtPm1vdXNlR3JhYmJlclBv cHVwKQorKyAgICAgICAgICAgIGQtPnNldE1vdXNlR3JhYmJlclBvcHVwKG51bGxwdHIpOworKyAg ICB9CisgfQorIAorIHZvaWQgUVF1aWNrT3ZlcmxheTo6Z2VvbWV0cnlDaGFuZ2VkKGNvbnN0IFFS ZWN0RiAmbmV3R2VvbWV0cnksIGNvbnN0IFFSZWN0RiAmb2xkR2VvbWV0cnkpCitkaWZmIC0tZ2l0 IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJhci5j cHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrc2Nyb2xsYmFy LmNwcAoraW5kZXggNGUyZjUwOWRiLi4xYzRiMzA4Y2QgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrc2Nyb2xsYmFyLmNwcAorKysrIGIvcXRx dWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAKK0BA IC03OTcsNiArNzk3LDE0IEBAIHZvaWQgUVF1aWNrU2Nyb2xsQmFyQXR0YWNoZWRQcml2YXRlOjpp bml0SG9yaXpvbnRhbCgpCisgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50ID09IGZsaWNrYWJsZS0+ cGFyZW50SXRlbSgpKQorICAgICAgICAgaG9yaXpvbnRhbC0+c3RhY2tBZnRlcihmbGlja2FibGUp OworIAorKyAgICAvLyBJZiBhIHNjcm9sbCBiYXIgd2FzIHByZXZpb3VzbHkgaGlkZGVuIChkdWUg dG8gZS5nLiBzZXR0aW5nIGEgbmV3IGNvbnRlbnRJdGVtCisrICAgIC8vIG9uIGEgU2Nyb2xsVmll dyksIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgd2UgdW4taGlkZSBpdC4KKysgICAgLy8gV2Ug ZG9uJ3QgYm90aGVyIGNoZWNraW5nIGlmIHRoZSBpdGVtIGlzIGFjdHVhbGx5IHRoZSBvbGQgb25l LCBiZWNhdXNlCisrICAgIC8vIGlmIGl0J3Mgbm90LCBhbGwgb2YgdGhlIHRoaW5ncyB0aGUgZnVu Y3Rpb24gZG9lcyAoc2V0dGluZyBwYXJlbnQsIHZpc2liaWxpdHksIGV0Yy4pCisrICAgIC8vIHNo b3VsZCBiZSBuby1vcHMgYW55d2F5LgorKyAgICBpZiAoYXV0byBjb250cm9sID0gcW9iamVjdF9j YXN0PFFRdWlja0NvbnRyb2wqPihxX3B0ci0+cGFyZW50KCkpKQorKyAgICAgICAgUVF1aWNrQ29u dHJvbFByaXZhdGU6OnVuaGlkZU9sZEl0ZW0oY29udHJvbCwgaG9yaXpvbnRhbCk7CisrCisgICAg IGxheW91dEhvcml6b250YWwoKTsKKyAgICAgaG9yaXpvbnRhbC0+c2V0U2l6ZShhcmVhLT5wcm9w ZXJ0eSgid2lkdGhSYXRpbyIpLnRvUmVhbCgpKTsKKyAgICAgaG9yaXpvbnRhbC0+c2V0UG9zaXRp b24oYXJlYS0+cHJvcGVydHkoInhQb3NpdGlvbiIpLnRvUmVhbCgpKTsKK0BAIC04MTgsNiArODI2 LDkgQEAgdm9pZCBRUXVpY2tTY3JvbGxCYXJBdHRhY2hlZFByaXZhdGU6OmluaXRWZXJ0aWNhbCgp CisgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50ID09IGZsaWNrYWJsZS0+cGFyZW50SXRlbSgpKQor ICAgICAgICAgdmVydGljYWwtPnN0YWNrQWZ0ZXIoZmxpY2thYmxlKTsKKyAKKysgICAgaWYgKGF1 dG8gY29udHJvbCA9IHFvYmplY3RfY2FzdDxRUXVpY2tDb250cm9sKj4ocV9wdHItPnBhcmVudCgp KSkKKysgICAgICAgIFFRdWlja0NvbnRyb2xQcml2YXRlOjp1bmhpZGVPbGRJdGVtKGNvbnRyb2ws IHZlcnRpY2FsKTsKKysKKyAgICAgbGF5b3V0VmVydGljYWwoKTsKKyAgICAgdmVydGljYWwtPnNl dFNpemUoYXJlYS0+cHJvcGVydHkoImhlaWdodFJhdGlvIikudG9SZWFsKCkpOworICAgICB2ZXJ0 aWNhbC0+c2V0UG9zaXRpb24oYXJlYS0+cHJvcGVydHkoInlQb3NpdGlvbiIpLnRvUmVhbCgpKTsK K2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90 c3Rfc2Nyb2xsdmlldy5xbWwgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMv ZGF0YS90c3Rfc2Nyb2xsdmlldy5xbWwKK2luZGV4IDBlOGIwODM1Mi4uY2Q0OTMxMTg0IDEwMDY0 NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3Nj cm9sbHZpZXcucW1sCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMv ZGF0YS90c3Rfc2Nyb2xsdmlldy5xbWwKK0BAIC01NzYsNCArNTc2LDUxIEBAIFRlc3RDYXNlIHsK KyAgICAgICAgIHZlcmlmeShuZXdIb3Jpem9udGFsU2Nyb2xsQmFyLnZpc2libGUpCisgICAgICAg ICB2ZXJpZnkoIW9sZEhvcml6b250YWxTY3JvbGxCYXIudmlzaWJsZSkKKyAgICAgfQorKworKyAg ICBDb21wb25lbnQgeworKyAgICAgICAgaWQ6IGJpbmRpbmdUb0NvbnRlbnRJdGVtQW5kU3RhbmRh bG9uZUZsaWNrYWJsZQorKworKyAgICAgICAgSXRlbSB7CisrICAgICAgICAgICAgd2lkdGg6IDIw MAorKyAgICAgICAgICAgIGhlaWdodDogMjAwCisrCisrICAgICAgICAgICAgcHJvcGVydHkgYWxp YXMgc2Nyb2xsVmlldzogc2Nyb2xsVmlldworKworKyAgICAgICAgICAgIFNjcm9sbFZpZXcgewor KyAgICAgICAgICAgICAgICBpZDogc2Nyb2xsVmlldworKyAgICAgICAgICAgICAgICBhbmNob3Jz LmZpbGw6IHBhcmVudAorKyAgICAgICAgICAgICAgICBjb250ZW50SXRlbTogbGlzdFZpZXcKKysK KysgICAgICAgICAgICAgICAgcHJvcGVydHkgSXRlbSBzb21lQmluZGluZzogY29udGVudEl0ZW0K KysgICAgICAgICAgICB9CisrICAgICAgICAgICAgTGlzdFZpZXcgeworKyAgICAgICAgICAgICAg ICBpZDogbGlzdFZpZXcKKysgICAgICAgICAgICAgICAgbW9kZWw6IDEwCisrICAgICAgICAgICAg ICAgIGRlbGVnYXRlOiBJdGVtRGVsZWdhdGUgeworKyAgICAgICAgICAgICAgICAgICAgdGV4dDog bW9kZWxEYXRhCisrICAgICAgICAgICAgICAgICAgICB3aWR0aDogbGlzdFZpZXcud2lkdGgKKysg ICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgfQorKwor KyAgICAvLyBUZXN0cyB0aGF0IHNjcm9sbCBiYXJzIHNob3cgdXAgZm9yIGEgU2Nyb2xsVmlldyB3 aGVyZQorKyAgICAvLyAtIGl0cyBjb250ZW50SXRlbSBpcyBkZWNsYXJlZCBhcyBhIHN0YW5kYWxv bmUsIHNlcGFyYXRlIGl0ZW0KKysgICAgLy8gLSB0aGVyZSBpcyBhIGJpbmRpbmcgdG8gY29udGVu dEl0ZW0gKHdoaWNoIGNhdXNlcyBhIGRlZmF1bHQgRmxpY2thYmxlIHRvIGJlIGNyZWF0ZWQpCisr ICAgIGZ1bmN0aW9uIHRlc3RfYmluZGluZ1RvQ29udGVudEl0ZW1BbmRTdGFuZGFsb25lRmxpY2th YmxlKCkgeworKyAgICAgICAgbGV0IHJvb3QgPSBjcmVhdGVUZW1wb3JhcnlPYmplY3QoYmluZGlu Z1RvQ29udGVudEl0ZW1BbmRTdGFuZGFsb25lRmxpY2thYmxlLCB0ZXN0Q2FzZSkKKysgICAgICAg IHZlcmlmeShyb290KQorKworKyAgICAgICAgbGV0IGNvbnRyb2wgPSByb290LnNjcm9sbFZpZXcK KysgICAgICAgIGxldCB2ZXJ0aWNhbFNjcm9sbEJhciA9IGNvbnRyb2wuU2Nyb2xsQmFyLnZlcnRp Y2FsCisrICAgICAgICBsZXQgaG9yaXpvbnRhbFNjcm9sbEJhciA9IGNvbnRyb2wuU2Nyb2xsQmFy Lmhvcml6b250YWwKKysgICAgICAgIGNvbXBhcmUodmVydGljYWxTY3JvbGxCYXIucGFyZW50LCBj b250cm9sKQorKyAgICAgICAgY29tcGFyZShob3Jpem9udGFsU2Nyb2xsQmFyLnBhcmVudCwgY29u dHJvbCkKKysgICAgICAgIHZlcmlmeSh2ZXJ0aWNhbFNjcm9sbEJhci52aXNpYmxlKQorKyAgICAg ICAgdmVyaWZ5KGhvcml6b250YWxTY3JvbGxCYXIudmlzaWJsZSkKKysKKysgICAgICAgIG1vdXNl RHJhZyh2ZXJ0aWNhbFNjcm9sbEJhciwgdmVydGljYWxTY3JvbGxCYXIud2lkdGggLyAyLCB2ZXJ0 aWNhbFNjcm9sbEJhci5oZWlnaHQgLyAyLCAwLCA1MCkKKysgICAgICAgIHZlcmlmeSh2ZXJ0aWNh bFNjcm9sbEJhci5hY3RpdmUpCisrICAgICAgICB2ZXJpZnkoaG9yaXpvbnRhbFNjcm9sbEJhci5h Y3RpdmUpCisrICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9h dXRvL2NvbnRyb2xzL2RhdGEvdHN0X3N3aXRjaC5xbWwgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3Rz L2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc3dpdGNoLnFtbAoraW5kZXggYjNmYWI0MWNhLi4xMGI2 YmFhMDIgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMv ZGF0YS90c3Rfc3dpdGNoLnFtbAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2Nv bnRyb2xzL2RhdGEvdHN0X3N3aXRjaC5xbWwKK0BAIC02MDgsNCArNjA4LDI3IEBAIFRlc3RDYXNl IHsKKyAgICAgICAgIG1vdXNlQ2xpY2soY29udHJvbC5pbmRpY2F0b3IpCisgICAgICAgICB2ZXJp ZnkoY29udHJvbC5hY3RpdmVGb2N1cykKKyAgICAgfQorKworKyAgICBDb21wb25lbnQgeworKyAg ICAgICAgaWQ6IGRlbGV0aW9uT3JkZXIxCisrICAgICAgICBJdGVtIHsKKysgICAgICAgICAgICBJ bWFnZSB7IGlkOiBpbm5lckltYWdlIH0KKysgICAgICAgICAgICBTd2l0Y2ggeyBpbmRpY2F0b3I6 IGlubmVySW1hZ2UgfQorKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIENvbXBvbmVudCB7Cisr ICAgICAgICBpZDogZGVsZXRpb25PcmRlcjIKKysgICAgICAgIEl0ZW0geworKyAgICAgICAgICAg IFN3aXRjaCB7IGluZGljYXRvcjogaW5uZXJJbWFnZSB9CisrICAgICAgICAgICAgSW1hZ2UgeyBp ZDogaW5uZXJJbWFnZSB9CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgZnVuY3Rpb24gdGVz dF9kZWxldGlvbk9yZGVyKCkgeworKyAgICAgICAgdmFyIGNvbnRyb2wxID0gY3JlYXRlVGVtcG9y YXJ5T2JqZWN0KGRlbGV0aW9uT3JkZXIxLCB0ZXN0Q2FzZSkKKysgICAgICAgIHZlcmlmeShjb250 cm9sMSkKKysgICAgICAgIHZhciBjb250cm9sMiA9IGNyZWF0ZVRlbXBvcmFyeU9iamVjdChkZWxl dGlvbk9yZGVyMiwgdGVzdENhc2UpCisrICAgICAgICB2ZXJpZnkoY29udHJvbDIpCisrICAgIH0K KyB9CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVw L2RhdGEvcmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24ucW1sIGIvcXRxdWlja2NvbnRyb2xzMi90 ZXN0cy9hdXRvL3FxdWlja3BvcHVwL2RhdGEvcmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24ucW1s CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi45ZTQ1OThiOWYKKy0tLSAv ZGV2L251bGwKKysrKyBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC9k YXRhL3JlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uLnFtbAorQEAgLTAsMCArMSw3OCBAQAorKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisrKioKKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENv bXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysq KgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29s a2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6QlNEJAorKyoqIENvbW1lcmNpYWwgTGlj ZW5zZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGlj ZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1l cmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBv ciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQg aW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFu eS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3 dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVz ZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioK KysqKiBCU0QgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHlvdSBtYXkgdXNlIHRo aXMgZmlsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEJTRCBsaWNlbnNlCisrKiogYXMgZm9sbG93 czoKKysqKgorKyoqICJSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5 IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysqKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisrKiogbWV0OgorKyoq ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl IGNvcHlyaWdodAorKyoqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisrKiogICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrKiogICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp bgorKyoqICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp ZGVkIHdpdGggdGhlCisrKiogICAgIGRpc3RyaWJ1dGlvbi4KKysqKiAgICogTmVpdGhlciB0aGUg bmFtZSBvZiBUaGUgUXQgQ29tcGFueSBMdGQgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKysqKiAgICAg Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk ZXJpdmVkCisrKiogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y IHdyaXR0ZW4gcGVybWlzc2lvbi4KKysqKgorKyoqCisrKiogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworKyoqICJBUyBJ UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg Tk9UCisrKiogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisrKiogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKysqKiBPV05FUiBPUiBDT05U UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK KysqKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE SU5HLCBCVVQgTk9UCisrKiogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisrKiogREFUQSwgT1IgUFJPRklUUzsgT1Ig QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisrKiogVEhF T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg T1IgVE9SVAorKyoqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKyoqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIgorKyoqCisrKiogJFFU X0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKytpbXBvcnQgUXRR dWljayAyLjE1CisraW1wb3J0IFF0UXVpY2suQ29udHJvbHMgMi4xNQorKworK0FwcGxpY2F0aW9u V2luZG93IHsKKysgICAgaWQ6IHdpbmRvdworKyAgICB3aWR0aDogNDAwCisrICAgIGhlaWdodDog NDAwCisrICAgIHRpdGxlOiAicmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24iCisrCisrICAgIHBy b3BlcnR5IGFsaWFzIHBvcHVwOiBwb3B1cAorKyAgICBwcm9wZXJ0eSBhbGlhcyBtb2RhbFBvcHVw OiBtb2RhbFBvcHVwCisrCisrICAgIFBvcHVwIHsKKysgICAgICAgIGlkOiBwb3B1cAorKyAgICAg ICAgeTogcGFyZW50LmhlaWdodCAtIGhlaWdodAorKyAgICAgICAgd2lkdGg6IDUwCisrICAgICAg ICBoZWlnaHQ6IDUwCisrICAgIH0KKysKKysgICAgUG9wdXAgeworKyAgICAgICAgaWQ6IG1vZGFs UG9wdXAKKysgICAgICAgIG1vZGFsOiB0cnVlCisrICAgICAgICB5OiBwYXJlbnQuaGVpZ2h0IC0g aGVpZ2h0CisrICAgICAgICB3aWR0aDogNTAKKysgICAgICAgIGhlaWdodDogNTAKKysgICAgICAg IGV4aXQ6ICBUcmFuc2l0aW9uIHsgUGF1c2VBbmltYXRpb24geyBkdXJhdGlvbjogMTAwIH0gfQor KyAgICB9CisrfQorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVp Y2twb3B1cC90c3RfcXF1aWNrcG9wdXAuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRv L3FxdWlja3BvcHVwL3RzdF9xcXVpY2twb3B1cC5jcHAKK2luZGV4IDU0OTUyZDEyOC4uM2Q1MGUy ZGQ0IDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVw L3RzdF9xcXVpY2twb3B1cC5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9x cXVpY2twb3B1cC90c3RfcXF1aWNrcG9wdXAuY3BwCitAQCAtMTAwLDYgKzEwMCw3IEBAIHByaXZh dGUgc2xvdHM6CisgICAgIHZvaWQgaW52aXNpYmxlVG9vbFRpcE9wZW4oKTsKKyAgICAgdm9pZCBj ZW50ZXJJbk92ZXJsYXlXaXRoaW5TdGFja1ZpZXdJdGVtKCk7CisgICAgIHZvaWQgZGVzdHJveUR1 cmluZ0V4aXRUcmFuc2l0aW9uKCk7CisrICAgIHZvaWQgcmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRp b24oKTsKKyB9OworIAorIHZvaWQgdHN0X1FRdWlja1BvcHVwOjppbml0VGVzdENhc2UoKQorQEAg LTE1NzUsNiArMTU3NiwzNCBAQCB2b2lkIHRzdF9RUXVpY2tQb3B1cDo6ZGVzdHJveUR1cmluZ0V4 aXRUcmFuc2l0aW9uKCkKKyAgICAgUVZFUklGWSghYnV0dG9uLT5pc0Rvd24oKSk7CisgfQorIAor K3ZvaWQgdHN0X1FRdWlja1BvcHVwOjpyZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbigpCisrewor KyAgICBRUXVpY2tBcHBsaWNhdGlvbkhlbHBlciBoZWxwZXIodGhpcywgInJlbGVhc2VBZnRlckV4 aXRUcmFuc2l0aW9uLnFtbCIpOworKyAgICBRVkVSSUZZMihoZWxwZXIucmVhZHksIGhlbHBlci5m YWlsdXJlTWVzc2FnZSgpKTsKKysKKysgICAgUVF1aWNrV2luZG93ICp3aW5kb3cgPSBoZWxwZXIu d2luZG93OworKyAgICB3aW5kb3ctPnNob3coKTsKKysgICAgUVZFUklGWShRVGVzdDo6cVdhaXRG b3JXaW5kb3dBY3RpdmUod2luZG93KSk7CisrCisrICAgIFFRdWlja092ZXJsYXkgKm92ZXJsYXkg PSBRUXVpY2tPdmVybGF5OjpvdmVybGF5KHdpbmRvdyk7CisrICAgIFFRdWlja1BvcHVwICptb2Rh bFBvcHVwID0gd2luZG93LT5wcm9wZXJ0eSgibW9kYWxQb3B1cCIpLnZhbHVlPFFRdWlja1BvcHVw ICo+KCk7CisrICAgIFFRdWlja1BvcHVwICpwb3B1cCA9IHdpbmRvdy0+cHJvcGVydHkoInBvcHVw IikudmFsdWU8UVF1aWNrUG9wdXAgKj4oKTsKKysKKysgICAgbW9kYWxQb3B1cC0+b3BlbigpOwor KyAgICBRVFJZX1ZFUklGWShtb2RhbFBvcHVwLT5pc09wZW5lZCgpKTsKKysKKysgICAgUVRlc3Q6 Om1vdXNlUHJlc3Mod2luZG93LCBRdDo6TGVmdEJ1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIsIFFQb2lu dCgxLCAxKSk7CisrICAgIC8vIHdhaXQgdW50aWwgdGhlIHRyYW5zaXRpb24gaXMgZmluaXNoZWQg YW5kIHRoZSBvdmVybGF5IGhpZGVzIGl0c2VsZgorKyAgICBRVFJZX1ZFUklGWSghb3ZlcmxheS0+ aXNWaXNpYmxlKCkpOworKyAgICBRVGVzdDo6bW91c2VSZWxlYXNlKHdpbmRvdywgUXQ6OkxlZnRC dXR0b24sIFF0OjpOb01vZGlmaWVyLCBRUG9pbnQoMSwgMSkpOworKworKyAgICBwb3B1cC0+b3Bl bigpOworKyAgICBRVFJZX1ZFUklGWShwb3B1cC0+aXNPcGVuZWQoKSk7CisrICAgIFFUZXN0Ojpt b3VzZUNsaWNrKHdpbmRvdywgUXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlmaWVyLCBRUG9pbnQo MSwgMSkpOworKyAgICBRVFJZX1ZFUklGWSghcG9wdXAtPmlzT3BlbmVkKCkpOworK30KKysKKysK KyBRVEVTVF9RVUlDS0NPTlRST0xTX01BSU4odHN0X1FRdWlja1BvcHVwKQorIAorICNpbmNsdWRl ICJ0c3RfcXF1aWNrcG9wdXAubW9jIgorU3VibW9kdWxlIHF0c2NyaXB0IDViZTk1Zjk2Li4uNGQ4 ZTRiZDIgKGNvbW1pdHMgbm90IHByZXNlbnQpCitTdWJtb2R1bGUgcXRzcGVlY2ggMTdmYzlmZGUu LjI1NTg0NWUyOgorZGlmZiAtLWdpdCBhL3F0c3BlZWNoL3NyYy9wbHVnaW5zL3R0cy9zcGVlY2hk aXNwYXRjaGVyL3F0ZXh0dG9zcGVlY2hfc3BlZWNoZC5jcHAgYi9xdHNwZWVjaC9zcmMvcGx1Z2lu cy90dHMvc3BlZWNoZGlzcGF0Y2hlci9xdGV4dHRvc3BlZWNoX3NwZWVjaGQuY3BwCitpbmRleCA2 ZWI3NGI4Li5iY2M3ZGQxIDEwMDY0NAorLS0tIGEvcXRzcGVlY2gvc3JjL3BsdWdpbnMvdHRzL3Nw ZWVjaGRpc3BhdGNoZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hkLmNwcAorKysrIGIvcXRzcGVlY2gv c3JjL3BsdWdpbnMvdHRzL3NwZWVjaGRpc3BhdGNoZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hkLmNw cAorQEAgLTM1Nyw3ICszNTcsOSBAQCBRVmVjdG9yPFFMb2NhbGU+IFFUZXh0VG9TcGVlY2hFbmdp bmVTcGVlY2hkOjphdmFpbGFibGVMb2NhbGVzKCkgY29uc3QKKyAKKyBRVmVjdG9yPFFWb2ljZT4g UVRleHRUb1NwZWVjaEVuZ2luZVNwZWVjaGQ6OmF2YWlsYWJsZVZvaWNlcygpIGNvbnN0Cisgewor LSAgICByZXR1cm4gbV92b2ljZXMudmFsdWVzKG1fY3VycmVudExvY2FsZS5uYW1lKCkpLnRvVmVj dG9yKCk7CisrICAgIFFMaXN0PFFWb2ljZT4gcmVzdWx0TGlzdCA9IG1fdm9pY2VzLnZhbHVlcyht X2N1cnJlbnRMb2NhbGUubmFtZSgpKTsKKysgICAgc3RkOjpyZXZlcnNlKHJlc3VsdExpc3QuYmVn aW4oKSwgcmVzdWx0TGlzdC5lbmQoKSk7CisrICAgIHJldHVybiByZXN1bHRMaXN0LnRvVmVjdG9y KCk7CisgfQorIAorIC8vIFdlIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgb3VyIG93biBjbGllbnRf aWQgc2luY2Ugc3BlZWNoLWRpc3BhdGNoZXIgc2VlbXMgdG8gYmUgaW5jb21wbGV0ZQorU3VibW9k dWxlIHF0c3ZnIDBjMDU3ODBlLi5hN2EwZjI0OToKK2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMvcGx1 Z2lucy9pbWFnZWZvcm1hdHMvc3ZnL3Fzdmdpb2hhbmRsZXIuY3BwIGIvcXRzdmcvc3JjL3BsdWdp bnMvaW1hZ2Vmb3JtYXRzL3N2Zy9xc3ZnaW9oYW5kbGVyLmNwcAoraW5kZXggNTYxZTc3ZS4uMTJl MDU3NCAxMDA2NDQKKy0tLSBhL3F0c3ZnL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcvcXN2 Z2lvaGFuZGxlci5jcHAKKysrKyBiL3F0c3ZnL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcv cXN2Z2lvaGFuZGxlci5jcHAKK0BAIC0xOTEsNiArMTkxLDggQEAgYm9vbCBRU3ZnSU9IYW5kbGVy OjpyZWFkKFFJbWFnZSAqaW1hZ2UpCisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAg ICAgaWYgKCFmaW5hbFNpemUuaXNFbXB0eSgpKSB7CisrICAgICAgICAgICAgaWYgKHFNYXgoZmlu YWxTaXplLndpZHRoKCksIGZpbmFsU2l6ZS5oZWlnaHQoKSkgPiAweGZmZmYpCisrICAgICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsgLy8gQXNzdW1lIGNvcnJ1cHRlZCBmaWxlCisgICAgICAgICAg ICAgaW1hZ2UtPmZpbGwoZC0+YmFja0NvbG9yLnJnYmEoKSk7CisgICAgICAgICAgICAgUVBhaW50 ZXIgcChpbWFnZSk7CisgICAgICAgICAgICAgZC0+ci5yZW5kZXIoJnAsIGJvdW5kcyk7CitkaWZm IC0tZ2l0IGEvcXRzdmcvc3JjL3N2Zy9xc3ZnaGFuZGxlci5jcHAgYi9xdHN2Zy9zcmMvc3ZnL3Fz dmdoYW5kbGVyLmNwcAoraW5kZXggYTVmODc3Zi4uOGRkYTU2MyAxMDA2NDQKKy0tLSBhL3F0c3Zn L3NyYy9zdmcvcXN2Z2hhbmRsZXIuY3BwCisrKysgYi9xdHN2Zy9zcmMvc3ZnL3FzdmdoYW5kbGVy LmNwcAorQEAgLTEzOTMsOSArMTM5MywxMCBAQCBzdGF0aWMgdm9pZCBwYXJzZUZvbnQoUVN2Z05v ZGUgKm5vZGUsCisgICAgICAgICBjYXNlIEZvbnRTaXplTm9uZToKKyAgICAgICAgICAgICBicmVh azsKKyAgICAgICAgIGNhc2UgRm9udFNpemVWYWx1ZTogeworLSAgICAgICAgICAgIFFTdmdIYW5k bGVyOjpMZW5ndGhUeXBlIGR1bW15OyAvLyBzaG91bGQgYWx3YXlzIGJlIHBpeGVsIHNpemUKKy0g ICAgICAgICAgICBmb250U3R5bGUtPnNldFNpemUocU1pbihwYXJzZUxlbmd0aChhdHRyaWJ1dGVz LmZvbnRTaXplLCBkdW1teSwgaGFuZGxlciksCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcXJlYWwoMHhmZmZmKSkpOworKyAgICAgICAgICAgIFFTdmdIYW5kbGVyOjpMZW5n dGhUeXBlIHR5cGU7CisrICAgICAgICAgICAgcXJlYWwgZnMgPSBwYXJzZUxlbmd0aChhdHRyaWJ1 dGVzLmZvbnRTaXplLCB0eXBlLCBoYW5kbGVyKTsKKysgICAgICAgICAgICBmcyA9IGNvbnZlcnRU b1BpeGVscyhmcywgdHJ1ZSwgdHlwZSk7CisrICAgICAgICAgICAgZm9udFN0eWxlLT5zZXRTaXpl KHFNaW4oZnMsIHFyZWFsKDB4ZmZmZikpKTsKKyAgICAgICAgIH0KKyAgICAgICAgICAgICBicmVh azsKKyAgICAgICAgIGRlZmF1bHQ6CitAQCAtMjUxMyw2ICsyNTE0LDggQEAgc3RhdGljIGJvb2wg cGFyc2VBbmltYXRlVHJhbnNmb3JtTm9kZShRU3ZnTm9kZSAqcGFyZW50LAorICAgICAgICAgICAg ICsrczsKKyAgICAgICAgIH0KKyAgICAgfQorKyAgICBpZiAodmFscy5jb3VudCgpICUgMyAhPSAw KQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworIAorICAgICBib29sIG9rID0gdHJ1ZTsKKyAgICAg aW50IGJlZ2luID0gcGFyc2VDbG9ja1ZhbHVlKGJlZ2luU3RyLCAmb2spOworQEAgLTI1NzYsNiAr MjU3OSw4IEBAIHN0YXRpYyBRU3ZnTm9kZSAqY3JlYXRlQ2lyY2xlTm9kZShRU3ZnTm9kZSAqcGFy ZW50LAorICAgICBxcmVhbCBuY3ggPSB0b0RvdWJsZShjeCk7CisgICAgIHFyZWFsIG5jeSA9IHRv RG91YmxlKGN5KTsKKyAgICAgcXJlYWwgbnIgID0gdG9Eb3VibGUocik7CisrICAgIGlmIChuciA8 IDAuMCkKKysgICAgICAgIHJldHVybiBudWxscHRyOworIAorICAgICBRUmVjdEYgcmVjdChuY3gt bnIsIG5jeS1uciwgbnIqMiwgbnIqMik7CisgICAgIFFTdmdOb2RlICpjaXJjbGUgPSBuZXcgUVN2 Z0NpcmNsZShwYXJlbnQsIHJlY3QpOworQEAgLTMwNDYsMTUgKzMwNTEsMTYgQEAgc3RhdGljIFFT dmdTdHlsZVByb3BlcnR5ICpjcmVhdGVSYWRpYWxHcmFkaWVudE5vZGUoUVN2Z05vZGUgKm5vZGUs CisgCisgICAgIHFyZWFsIG5jeCA9IDAuNTsKKyAgICAgcXJlYWwgbmN5ID0gMC41OworLSAgICBx cmVhbCBuciAgPSAwLjU7CisgICAgIGlmICghY3guaXNFbXB0eSgpKQorICAgICAgICAgbmN4ID0g dG9Eb3VibGUoY3gpOworICAgICBpZiAoIWN5LmlzRW1wdHkoKSkKKyAgICAgICAgIG5jeSA9IHRv RG91YmxlKGN5KTsKKysKKysgICAgcXJlYWwgbnIgPSAwLjA7CisgICAgIGlmICghci5pc0VtcHR5 KCkpCisgICAgICAgICBuciA9IHRvRG91YmxlKHIpOworLSAgICBpZiAobnIgPCAwLjUpCistICAg ICAgICBuciA9IDAuNTsKKysgICAgaWYgKG5yIDw9IDAuMCkKKysgICAgICAgIHJldHVybiBudWxs cHRyOworIAorICAgICBxcmVhbCBuZnggPSBuY3g7CisgICAgIGlmICghZnguaXNFbXB0eSgpKQor QEAgLTMzNTAsNyArMzM1Niw5IEBAIHN0YXRpYyBRU3ZnTm9kZSAqY3JlYXRlVGV4dE5vZGUoUVN2 Z05vZGUgKnBhcmVudCwKKyAgICAgLy8jIyMgZWRpdGFibGUgYW5kIHJvdGF0ZSBub3QgaGFuZGxl ZAorICAgICBRU3ZnSGFuZGxlcjo6TGVuZ3RoVHlwZSB0eXBlOworICAgICBxcmVhbCBueCA9IHBh cnNlTGVuZ3RoKHgsIHR5cGUsIGhhbmRsZXIpOworKyAgICBueCA9IGNvbnZlcnRUb1BpeGVscyhu eCwgdHJ1ZSwgdHlwZSk7CisgICAgIHFyZWFsIG55ID0gcGFyc2VMZW5ndGgoeSwgdHlwZSwgaGFu ZGxlcik7CisrICAgIG55ID0gY29udmVydFRvUGl4ZWxzKG55LCB0cnVlLCB0eXBlKTsKKyAKKyAg ICAgUVN2Z05vZGUgKnRleHQgPSBuZXcgUVN2Z1RleHQocGFyZW50LCBRUG9pbnRGKG54LCBueSkp OworICAgICByZXR1cm4gdGV4dDsKK0BAIC0zNjkxLDkgKzM2OTksNyBAQCB2b2lkIFFTdmdIYW5k bGVyOjpwYXJzZSgpCisgICAgICAgICBjYXNlIFFYbWxTdHJlYW1SZWFkZXI6OkVuZEVsZW1lbnQ6 CisgICAgICAgICAgICAgZW5kRWxlbWVudCh4bWwtPm5hbWUoKSk7CisgICAgICAgICAgICAgKyty ZW1haW5pbmdVbmZpbmlzaGVkRWxlbWVudHM7CistICAgICAgICAgICAgLy8gaWYgd2UgYXJlIHVz aW5nIHNvbWVib2R5IGVsc2UncyBxeG1sc3RyZWFtcmVhZGVyCistICAgICAgICAgICAgLy8gd2Ug c2hvdWxkIG5vdCByZWFkIHVudGlsIHRoZSBlbmQgb2YgdGhlIHN0cmVhbQorLSAgICAgICAgICAg IGRvbmUgPSAhbV9vd25zUmVhZGVyICYmICh4bWwtPm5hbWUoKSA9PSBRTGF0aW4xU3RyaW5nKCJz dmciKSk7CisrICAgICAgICAgICAgZG9uZSA9ICh4bWwtPm5hbWUoKSA9PSBRTGF0aW4xU3RyaW5n KCJzdmciKSk7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICBjYXNlIFFYbWxTdHJlYW1S ZWFkZXI6OkNoYXJhY3RlcnM6CisgICAgICAgICAgICAgY2hhcmFjdGVycyh4bWwtPnRleHQoKSk7 CitkaWZmIC0tZ2l0IGEvcXRzdmcvc3JjL3N2Zy9xc3Znc3RydWN0dXJlLmNwcCBiL3F0c3ZnL3Ny Yy9zdmcvcXN2Z3N0cnVjdHVyZS5jcHAKK2luZGV4IGI4OTYwOGIuLjg5YzllNGUgMTAwNjQ0Cist LS0gYS9xdHN2Zy9zcmMvc3ZnL3FzdmdzdHJ1Y3R1cmUuY3BwCisrKysgYi9xdHN2Zy9zcmMvc3Zn L3FzdmdzdHJ1Y3R1cmUuY3BwCitAQCAtMjU1LDkgKzI1NSwxMyBAQCBpbmxpbmUgc3RhdGljIGJv b2wgaXNTdXBwb3J0ZWRTdmdGZWF0dXJlKGNvbnN0IFFTdHJpbmcgJnN0cikKKyAgICAgfTsKKyAK KyAgICAgaWYgKHN0ci5sZW5ndGgoKSA8PSBNQVhfV09SRF9MRU5HVEggJiYgc3RyLmxlbmd0aCgp ID49IE1JTl9XT1JEX0xFTkdUSCkgeworKyAgICAgICAgY29uc3QgY2hhcjE2X3QgdW5pY29kZTQ0 ID0gc3RyLmF0KDQ0KS51bmljb2RlKCk7CisrICAgICAgICBjb25zdCBjaGFyMTZfdCB1bmljb2Rl NDUgPSBzdHIuYXQoNDUpLnVuaWNvZGUoKTsKKysgICAgICAgIGlmICh1bmljb2RlNDQgPj0gc2l6 ZW9mKGFzc29fdmFsdWVzKSB8fCB1bmljb2RlNDUgPj0gc2l6ZW9mKGFzc29fdmFsdWVzKSkKKysg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICBjb25zdCBpbnQga2V5ID0gc3RyLmxl bmd0aCgpCistICAgICAgICAgICAgICAgICAgICAgICAgKyBhc3NvX3ZhbHVlc1tzdHIuYXQoNDUp LnVuaWNvZGUoKV0KKy0gICAgICAgICAgICAgICAgICAgICAgICArIGFzc29fdmFsdWVzW3N0ci5h dCg0NCkudW5pY29kZSgpXTsKKysgICAgICAgICAgICAgICAgICAgICAgICArIGFzc29fdmFsdWVz W3VuaWNvZGU0NV0KKysgICAgICAgICAgICAgICAgICAgICAgICArIGFzc29fdmFsdWVzW3VuaWNv ZGU0NF07CisgICAgICAgICBpZiAoa2V5IDw9IE1BWF9IQVNIX1ZBTFVFICYmIGtleSA+PSAwKQor ICAgICAgICAgICAgIHJldHVybiBzdHIgPT0gUUxhdGluMVN0cmluZyh3b3JkbGlzdFtrZXldKTsK KyAgICAgfQorZGlmZiAtLWdpdCBhL3F0c3ZnL3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAg Yi9xdHN2Zy9zcmMvc3ZnL3Fzdmd0aW55ZG9jdW1lbnQuY3BwCitpbmRleCA2M2QwNzk3Li4xOWU3 MTU0IDEwMDY0NAorLS0tIGEvcXRzdmcvc3JjL3N2Zy9xc3ZndGlueWRvY3VtZW50LmNwcAorKysr IGIvcXRzdmcvc3JjL3N2Zy9xc3ZndGlueWRvY3VtZW50LmNwcAorQEAgLTQzMyw4ICs0MzMsMTYg QEAgdm9pZCBRU3ZnVGlueURvY3VtZW50OjpkcmF3KFFQYWludGVyICpwLCBRU3ZnRXh0cmFTdGF0 ZXMgJikKKyAgICAgZHJhdyhwKTsKKyB9CisgCisrc3RhdGljIGJvb2wgaXNWYWxpZE1hdHJpeChj b25zdCBRVHJhbnNmb3JtICZ0cmFuc2Zvcm0pCisreworKyAgICBxcmVhbCBkZXRlcm1pbmFudCA9 IHRyYW5zZm9ybS5kZXRlcm1pbmFudCgpOworKyAgICByZXR1cm4gcUlzRmluaXRlKGRldGVybWlu YW50KTsKKyt9CisrCisgdm9pZCBRU3ZnVGlueURvY3VtZW50OjptYXBTb3VyY2VUb1RhcmdldChR UGFpbnRlciAqcCwgY29uc3QgUVJlY3RGICZ0YXJnZXRSZWN0LCBjb25zdCBRUmVjdEYgJnNvdXJj ZVJlY3QpCisgeworKyAgICBRVHJhbnNmb3JtIG9sZFRyYW5zZm9ybSA9IHAtPndvcmxkVHJhbnNm b3JtKCk7CisrCisgICAgIFFSZWN0RiB0YXJnZXQgPSB0YXJnZXRSZWN0OworICAgICBpZiAodGFy Z2V0LmlzRW1wdHkoKSkgeworICAgICAgICAgUVBhaW50RGV2aWNlICpkZXYgPSBwLT5kZXZpY2Uo KTsKK0BAIC00ODcsNiArNDk1LDkgQEAgdm9pZCBRU3ZnVGlueURvY3VtZW50OjptYXBTb3VyY2VU b1RhcmdldChRUGFpbnRlciAqcCwgY29uc3QgUVJlY3RGICZ0YXJnZXRSZWN0LAorICAgICAgICAg fQorICNlbmRpZgorICAgICB9CisrCisrICAgIGlmICghaXNWYWxpZE1hdHJpeChwLT53b3JsZFRy YW5zZm9ybSgpKSkKKysgICAgICAgIHAtPnNldFdvcmxkVHJhbnNmb3JtKG9sZFRyYW5zZm9ybSk7 CisgfQorIAorIFFSZWN0RiBRU3ZnVGlueURvY3VtZW50Ojpib3VuZHNPbkVsZW1lbnQoY29uc3Qg UVN0cmluZyAmaWQpIGNvbnN0CitkaWZmIC0tZ2l0IGEvcXRzdmcvdGVzdHMvYXV0by9xc3ZncmVu ZGVyZXIvdHN0X3FzdmdyZW5kZXJlci5jcHAgYi9xdHN2Zy90ZXN0cy9hdXRvL3FzdmdyZW5kZXJl ci90c3RfcXN2Z3JlbmRlcmVyLmNwcAoraW5kZXggMzZjNzZlYy4uZGI3MWUwMiAxMDA2NDQKKy0t LSBhL3F0c3ZnL3Rlc3RzL2F1dG8vcXN2Z3JlbmRlcmVyL3RzdF9xc3ZncmVuZGVyZXIuY3BwCisr KysgYi9xdHN2Zy90ZXN0cy9hdXRvL3FzdmdyZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNwcAor QEAgLTg2LDYgKzg2LDggQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBvc3NfZnV6el8yMzcz MSgpOworICAgICB2b2lkIG9zc19mdXp6XzI0MTMxKCk7CisgICAgIHZvaWQgb3NzX2Z1enpfMjQ3 MzgoKTsKKysgICAgdm9pZCBpbGxlZ2FsQW5pbWF0ZVRyYW5zZm9ybV9kYXRhKCk7CisrICAgIHZv aWQgaWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm0oKTsKKyAKKyAjaWZuZGVmIFFUX05PX0NPTVBSRVNT CisgICAgIHZvaWQgdGVzdEd6TG9hZGluZygpOworQEAgLTE2NDYsNSArMTY0OCwyMiBAQCB2b2lk IHRzdF9RU3ZnUmVuZGVyZXI6Om9zc19mdXp6XzI0NzM4KCkKKyAgICAgUVN2Z1JlbmRlcmVyKCku bG9hZChRQnl0ZUFycmF5KCI8c3ZnPjxwYXRoIGQ9XCJhIDIgMWUtMjEyLi4uLi5cIj4iKSk7Cisg fQorIAorK3ZvaWQgdHN0X1FTdmdSZW5kZXJlcjo6aWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm1fZGF0 YSgpCisreworKyAgICBRVGVzdDo6YWRkQ29sdW1uPFFCeXRlQXJyYXk+KCJzdmciKTsKKysKKysg ICAgUVRlc3Q6Om5ld1JvdygiY2FzZTEiKSA8PCBRQnl0ZUFycmF5KCI8c3ZnPjxhbmltYXRlVHJh bnNmb3JtIHR5cGU9XCJyb3RhdGVcIiBiZWdpbj1cIjFcIiBkdXI9XCIyXCIgdmFsdWVzPVwiOCww LDUsMFwiPiIpOworKyAgICBRVGVzdDo6bmV3Um93KCJjYXNlMiIpIDw8IFFCeXRlQXJyYXkoIjxz dmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlwZT1cInJvdGF0ZVwiIGJlZ2luPVwiMVwiIGR1cj1cIjJc IiB2YWx1ZXM9XCIxLDJcIj4iKTsKKysgICAgUVRlc3Q6Om5ld1JvdygiY2FzZTMiKSA8PCBRQnl0 ZUFycmF5KCI8c3ZnPjxhbmltYXRlVHJhbnNmb3JtIHR5cGU9XCJyb3RhdGVcIiBiZWdpbj1cIjFc IiBkdXI9XCIyXCIgZnJvbT1cIi4uIDUgMlwiIHRvPVwiZlwiPiIpOworKyAgICBRVGVzdDo6bmV3 Um93KCJjYXNlNCIpIDw8IFFCeXRlQXJyYXkoIjxzdmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlwZT1c InNjYWxlXCIgYmVnaW49XCIxXCIgZHVyPVwiMlwiIGJ5PVwiLS0sLi5cIj4iKTsKKyt9CisrCisr dm9pZCB0c3RfUVN2Z1JlbmRlcmVyOjppbGxlZ2FsQW5pbWF0ZVRyYW5zZm9ybSgpCisreworKyAg ICBRRkVUQ0goUUJ5dGVBcnJheSwgc3ZnKTsKKysgICAgUVN2Z1JlbmRlcmVyIHJlbmRlcmVyOwor KyAgICBRVkVSSUZZKCFyZW5kZXJlci5sb2FkKHN2ZykpOyAvLyBhbHNvIHNob3VsZG4ndCBhc3Nl cnQKKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUVN2Z1JlbmRlcmVyKQorICNpbmNsdWRlICJ0c3Rf cXN2Z3JlbmRlcmVyLm1vYyIKK1N1Ym1vZHVsZSBxdHRvb2xzIDY5MTRmN2M4Li4wOTBlNTI2ZToK K2RpZmYgLS1naXQgYS9xdHRvb2xzL3NyYy9hc3Npc3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVscGdl bmVyYXRvci5jcHAgYi9xdHRvb2xzL3NyYy9hc3Npc3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVscGdl bmVyYXRvci5jcHAKK2luZGV4IGZlYWIxZTJkNS4uY2JmYjgyNTA3IDEwMDY0NAorLS0tIGEvcXR0 b29scy9zcmMvYXNzaXN0YW50L3FoZWxwZ2VuZXJhdG9yL2hlbHBnZW5lcmF0b3IuY3BwCisrKysg Yi9xdHRvb2xzL3NyYy9hc3Npc3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVscGdlbmVyYXRvci5jcHAK K0BAIC00NDUsNyArNDQ1LDkgQEAgYm9vbCBIZWxwR2VuZXJhdG9yUHJpdmF0ZTo6aW5zZXJ0Rmls ZXMoY29uc3QgUVN0cmluZ0xpc3QgJmZpbGVzLCBjb25zdCBRU3RyaW5nICYKKyAgICAgaWYgKGZp bHRlclNldElkIDwgMCkKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgKytmaWx0ZXJTZXRJ ZDsKKy0gICAgZm9yIChpbnQgYXR0SWQgOiBxQXNDb25zdChmaWx0ZXJBdHRzKSkgeworKyAgICBR TGlzdDxpbnQ+IGF0dFZhbHVlcyA9IGZpbHRlckF0dHMudmFsdWVzKCk7CisrICAgIHN0ZDo6c29y dChhdHRWYWx1ZXMuYmVnaW4oKSwgYXR0VmFsdWVzLmVuZCgpKTsKKysgICAgZm9yIChpbnQgYXR0 SWQgOiBxQXNDb25zdChhdHRWYWx1ZXMpKSB7CisgICAgICAgICBtX3F1ZXJ5LT5wcmVwYXJlKFFM YXRpbjFTdHJpbmcoIklOU0VSVCBJTlRPIEZpbGVBdHRyaWJ1dGVTZXRUYWJsZSAiCisgICAgICAg ICAgICAgIlZBTFVFUyg/LCA/KSIpKTsKKyAgICAgICAgIG1fcXVlcnktPmJpbmRWYWx1ZSgwLCBm aWx0ZXJTZXRJZCk7CitTdWJtb2R1bGUgcXR3YXlsYW5kIGRmYjAxMjljLi4yOTA0ZTFiMzoKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9jb25maWd1cmUuanNvbiBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L2NvbmZpZ3VyZS5qc29uCitpbmRleCAyZjQyNDU4MC4uMjkyMjIzNTcgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9jb25maWd1cmUuanNvbgorKysrIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvY29uZmlndXJlLmpzb24KK0BAIC0xNDksOCArMTQ5LDcgQEAKKyAg ICAgICAgICAgICAgICAgICAgICIjZW5kaWYiCisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg ICAgICB9LAorLSAgICAgICAgICAgICJsaWJzIjogIi1sZHJtIiwKKy0gICAgICAgICAgICAidXNl IjogImVnbCIKKysgICAgICAgICAgICAidXNlIjogImRybSBlZ2wiCisgICAgICAgICB9LAorICAg ICAgICAgInZ1bGthbi1zZXJ2ZXItYnVmZmVyIjogeworICAgICAgICAgICAgICJsYWJlbCI6ICJW dWxrYW4gQnVmZmVyIFNoYXJpbmciLAorQEAgLTE2OCw3ICsxNjcsOCBAQAorICAgICAgICAgICAg ICAgICAgICAgImV4cG9ydEFsbG9jSW5mby5oYW5kbGVUeXBlcyA9IFZLX0VYVEVSTkFMX01FTU9S WV9IQU5ETEVfVFlQRV9PUEFRVUVfRkRfQklUX0tIUjsiLAorICAgICAgICAgICAgICAgICAgICAg InJldHVybiAwOyIKKyAgICAgICAgICAgICAgICAgXQorLSAgICAgICAgICAgIH0KKysgICAgICAg ICAgICB9LAorKyAgICAgICAgICAgICJ1c2UiOiAid2F5bGFuZC1jbGllbnQiCisgICAgICAgICB9 LAorICAgICAgICAgImVnbF8xXzUtd2F5bGFuZCI6IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAi RUdMIDEuNSB3aXRoIFdheWxhbmQgUGxhdGZvcm0iLAorQEAgLTE4Myw3ICsxODMsNyBAQAorICAg ICAgICAgICAgICAgICAgICAgImVnbEdldFBsYXRmb3JtRGlzcGxheShFR0xfUExBVEZPUk1fV0FZ TEFORF9FWFQsIChzdHJ1Y3Qgd2xfZGlzcGxheSAqKShudWxscHRyKSwgbnVsbHB0cik7IgorICAg ICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAidXNlIjogImVn bCIKKysgICAgICAgICAgICAidXNlIjogImVnbCB3YXlsYW5kLWNsaWVudCIKKyAgICAgICAgIH0K KyAgICAgfSwKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdh eWxhbmRjbGllbnRleHRlbnNpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3 YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmNwcAoraW5kZXggMTI1YjFlMTkuLmVkY2NmZTYzIDEwMDY0 NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5z aW9uLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50 ZXh0ZW5zaW9uLmNwcAorQEAgLTc0LDcgKzc0LDEwIEBAIHZvaWQgUVdheWxhbmRDbGllbnRFeHRl bnNpb25Qcml2YXRlOjpoYW5kbGVSZWdpc3RyeUdsb2JhbCh2b2lkICpkYXRhLCA6OndsX3JlZ2lz Cisgdm9pZCBRV2F5bGFuZENsaWVudEV4dGVuc2lvbjo6YWRkUmVnaXN0cnlMaXN0ZW5lcigpCisg eworICAgICBRX0QoUVdheWxhbmRDbGllbnRFeHRlbnNpb24pOworLSAgICBkLT53YXlsYW5kSW50 ZWdyYXRpb24tPmRpc3BsYXkoKS0+YWRkUmVnaXN0cnlMaXN0ZW5lcigmUVdheWxhbmRDbGllbnRF eHRlbnNpb25Qcml2YXRlOjpoYW5kbGVSZWdpc3RyeUdsb2JhbCwgdGhpcyk7CisrICAgIGlmICgh ZC0+cmVnaXN0ZXJlZCkgeworKyAgICAgICAgZC0+d2F5bGFuZEludGVncmF0aW9uLT5kaXNwbGF5 KCktPmFkZFJlZ2lzdHJ5TGlzdGVuZXIoJlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZTo6 aGFuZGxlUmVnaXN0cnlHbG9iYWwsIHRoaXMpOworKyAgICAgICAgZC0+cmVnaXN0ZXJlZCA9IHRy dWU7CisrICAgIH0KKyB9CisgCisgUVdheWxhbmRDbGllbnRFeHRlbnNpb246OlFXYXlsYW5kQ2xp ZW50RXh0ZW5zaW9uKGNvbnN0IGludCB2ZXIpCitAQCAtODgsNiArOTEsMTMgQEAgUVdheWxhbmRD bGllbnRFeHRlbnNpb246OlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKGNvbnN0IGludCB2ZXIpCisg ICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgImFkZFJlZ2lzdHJ5TGlzdGVuZXIi LCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgfQorIAorK1FXYXlsYW5kQ2xpZW50RXh0ZW5zaW9u Ojp+UVdheWxhbmRDbGllbnRFeHRlbnNpb24oKQorK3sKKysgICAgUV9EKFFXYXlsYW5kQ2xpZW50 RXh0ZW5zaW9uKTsKKysgICAgaWYgKGQtPnJlZ2lzdGVyZWQgJiYgIVFDb3JlQXBwbGljYXRpb246 OmNsb3NpbmdEb3duKCkpCisrICAgICAgICBkLT53YXlsYW5kSW50ZWdyYXRpb24tPmRpc3BsYXko KS0+cmVtb3ZlTGlzdGVuZXIoJlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZTo6aGFuZGxl UmVnaXN0cnlHbG9iYWwsIHRoaXMpOworK30KKysKKyBRdFdheWxhbmRDbGllbnQ6OlFXYXlsYW5k SW50ZWdyYXRpb24gKlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjppbnRlZ3JhdGlvbigpIGNvbnN0 CisgeworICAgICBRX0QoY29uc3QgUVdheWxhbmRDbGllbnRFeHRlbnNpb24pOworZGlmZiAtLWdp dCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5o IGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmgK K2luZGV4IDk4MjcyZTU3Li41YmQyODM5OCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5oCisrKysgYi9xdHdheWxhbmQvc3Jj L2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uaAorQEAgLTYzLDYgKzYzLDcg QEAgY2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9FWFBPUlQgUVdheWxhbmRDbGllbnRFeHRlbnNpb24g OiBwdWJsaWMgUU9iamVjdAorICAgICBRX1BST1BFUlRZKGJvb2wgYWN0aXZlIFJFQUQgaXNBY3Rp dmUgTk9USUZZIGFjdGl2ZUNoYW5nZWQpCisgcHVibGljOgorICAgICBRV2F5bGFuZENsaWVudEV4 dGVuc2lvbihjb25zdCBpbnQgdmVyc2lvbik7CisrICAgIH5RV2F5bGFuZENsaWVudEV4dGVuc2lv bigpOworIAorICAgICBRdFdheWxhbmRDbGllbnQ6OlFXYXlsYW5kSW50ZWdyYXRpb24gKmludGVn cmF0aW9uKCkgY29uc3Q7CisgICAgIGludCB2ZXJzaW9uKCkgY29uc3Q7CitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uX3AuaCBi L3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbl9wLmgK K2luZGV4IDY5Y2M0NmEwLi45MDkxZWZiZSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9z cmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbl9wLmgKK0BAIC02OCw2ICs2 OCw3IEBAIHB1YmxpYzoKKyAgICAgUXRXYXlsYW5kQ2xpZW50OjpRV2F5bGFuZEludGVncmF0aW9u ICp3YXlsYW5kSW50ZWdyYXRpb24gPSBudWxscHRyOworICAgICBpbnQgdmVyc2lvbiA9IC0xOwor ICAgICBib29sIGFjdGl2ZSA9IGZhbHNlOworKyAgICBib29sIHJlZ2lzdGVyZWQgPSBmYWxzZTsK KyB9OworIAorIGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kQ2xpZW50RXh0 ZW5zaW9uVGVtcGxhdGVQcml2YXRlIDogcHVibGljIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJp dmF0ZQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmlj ZS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2UuY3BwCitpbmRl eCA3ZTJlMzMwOC4uZTNlNjBlZDUgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGRhdGFkZXZpY2UuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGRhdGFkZXZpY2UuY3BwCitAQCAtNzIsNiArNzIsOCBAQCBRV2F5bGFuZERhdGFEZXZpY2U6OlFX YXlsYW5kRGF0YURldmljZShRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyICptYW5hZ2VyLCBRV2F5 bAorIAorIFFXYXlsYW5kRGF0YURldmljZTo6flFXYXlsYW5kRGF0YURldmljZSgpCisgeworKyAg ICBpZiAod2xfZGF0YV9kZXZpY2VfZ2V0X3ZlcnNpb24ob2JqZWN0KCkpID49IFdMX0RBVEFfREVW SUNFX1JFTEVBU0VfU0lOQ0VfVkVSU0lPTikKKysgICAgICAgIHJlbGVhc2UoKTsKKyB9CisgCisg UVdheWxhbmREYXRhT2ZmZXIgKlFXYXlsYW5kRGF0YURldmljZTo6c2VsZWN0aW9uT2ZmZXIoKSBj b25zdAorQEAgLTExMCw3ICsxMTIsNyBAQCBRV2F5bGFuZERhdGFPZmZlciAqUVdheWxhbmREYXRh RGV2aWNlOjpkcmFnT2ZmZXIoKSBjb25zdAorICAgICByZXR1cm4gbV9kcmFnT2ZmZXIuZGF0YSgp OworIH0KKyAKKy1ib29sIFFXYXlsYW5kRGF0YURldmljZTo6c3RhcnREcmFnKFFNaW1lRGF0YSAq bWltZURhdGEsIFFXYXlsYW5kV2luZG93ICppY29uKQorK2Jvb2wgUVdheWxhbmREYXRhRGV2aWNl OjpzdGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0YSwgUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRl ZEFjdGlvbnMsIFFXYXlsYW5kV2luZG93ICppY29uKQorIHsKKyAgICAgYXV0byAqc2VhdCA9IG1f ZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCk7CisgICAgIGF1dG8gKm9yaWdpbiA9IHNlYXQt PnBvaW50ZXJGb2N1cygpOworQEAgLTEyMyw3ICsxMjUsMjggQEAgYm9vbCBRV2F5bGFuZERhdGFE ZXZpY2U6OnN0YXJ0RHJhZyhRTWltZURhdGEgKm1pbWVEYXRhLCBRV2F5bGFuZFdpbmRvdyAqaWNv bikKKyAgICAgfQorIAorICAgICBtX2RyYWdTb3VyY2UucmVzZXQobmV3IFFXYXlsYW5kRGF0YVNv dXJjZShtX2Rpc3BsYXktPmRuZFNlbGVjdGlvbkhhbmRsZXIoKSwgbWltZURhdGEpKTsKKysKKysg ICAgaWYgKHdsX2RhdGFfZGV2aWNlX2dldF92ZXJzaW9uKG9iamVjdCgpKSA+PSAzKQorKyAgICAg ICAgbV9kcmFnU291cmNlLT5zZXRfYWN0aW9ucyhkcm9wQWN0aW9uc1RvV2woc3VwcG9ydGVkQWN0 aW9ucykpOworKworICAgICBjb25uZWN0KG1fZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5bGFuZERh dGFTb3VyY2U6OmNhbmNlbGxlZCwgdGhpcywgJlFXYXlsYW5kRGF0YURldmljZTo6ZHJhZ1NvdXJj ZUNhbmNlbGxlZCk7CisrICAgIGNvbm5lY3QobV9kcmFnU291cmNlLmRhdGEoKSwgJlFXYXlsYW5k RGF0YVNvdXJjZTo6ZG5kUmVzcG9uc2VVcGRhdGVkLCB0aGlzLCBbdGhpc10oYm9vbCBhY2NlcHRl ZCwgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uKSB7CisrICAgICAgICAgICAgYXV0byBkcmFnID0gc3Rh dGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3Jt SW50ZWdyYXRpb24oKS0+ZHJhZygpKTsKKysgICAgICAgICAgICAvLyBpbiBvbGQgdmVyc2lvbnMg ZHJvcCBhY3Rpb24gaXMgbm90IHNldCwgc28gd2UgZ3Vlc3MKKysgICAgICAgICAgICBpZiAod2xf ZGF0YV9zb3VyY2VfZ2V0X3ZlcnNpb24obV9kcmFnU291cmNlLT5vYmplY3QoKSkgPCAzKSB7Cisr ICAgICAgICAgICAgICAgIGRyYWctPnNldFJlc3BvbnNlKGFjY2VwdGVkKTsKKysgICAgICAgICAg ICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSByZXNw b25zZShhY2NlcHRlZCwgYWN0aW9uKTsKKysgICAgICAgICAgICAgICAgZHJhZy0+c2V0UmVzcG9u c2UocmVzcG9uc2UpOworKyAgICAgICAgICAgIH0KKysgICAgfSk7CisrICAgIGNvbm5lY3QobV9k cmFnU291cmNlLmRhdGEoKSwgJlFXYXlsYW5kRGF0YVNvdXJjZTo6ZG5kRHJvcHBlZCwgdGhpcywg W10oYm9vbCBhY2NlcHRlZCwgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uKSB7CisrICAgICAgICBRUGxh dGZvcm1Ecm9wUXRSZXNwb25zZSByZXNwb25zZShhY2NlcHRlZCwgYWN0aW9uKTsKKysgICAgICAg IHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0 Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSktPnNldERyb3BSZXNwb25zZShyZXNwb25zZSk7Cisr ICAgIH0pOworKyAgICBjb25uZWN0KG1fZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5bGFuZERhdGFT b3VyY2U6OmZpbmlzaGVkLCB0aGlzLCBbXSgpIHsKKysgICAgICAgIHN0YXRpY19jYXN0PFFXYXls YW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCkt PmRyYWcoKSktPmZpbmlzaERyYWcoKTsKKysgICAgfSk7CisgCisgICAgIHN0YXJ0X2RyYWcobV9k cmFnU291cmNlLT5vYmplY3QoKSwgb3JpZ2luLT53bFN1cmZhY2UoKSwgaWNvbi0+d2xTdXJmYWNl KCksIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPnNlcmlhbCgpKTsKKyAgICAgcmV0 dXJuIHRydWU7CitAQCAtMTUyLDcgKzE3NSw3IEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpk YXRhX2RldmljZV9kcm9wKCkKKyAgICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBkcmFnLT5zdXBw b3J0ZWRBY3Rpb25zKCk7CisgICAgIH0gZWxzZSBpZiAobV9kcmFnT2ZmZXIpIHsKKyAgICAgICAg IGRyYWdEYXRhID0gbV9kcmFnT2ZmZXItPm1pbWVEYXRhKCk7CistICAgICAgICBzdXBwb3J0ZWRB Y3Rpb25zID0gUXQ6OkNvcHlBY3Rpb24gfCBRdDo6TW92ZUFjdGlvbiB8IFF0OjpMaW5rQWN0aW9u OworKyAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IG1fZHJhZ09mZmVyLT5zdXBwb3J0ZWRBY3Rp b25zKCk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICByZXR1cm47CisgICAgIH0KK0BAIC0xNjIs NyArMTg1LDExIEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9kcm9wKCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFHdWlBcHBsaWNhdGlvbjo6a2V5Ym9hcmRNb2RpZmllcnMoKSk7 CisgCisgICAgIGlmIChkcmFnKSB7CistICAgICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcg Kj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkp LT5maW5pc2hEcmFnKHJlc3BvbnNlKTsKKysgICAgICAgIGF1dG8gZHJhZyA9ICBzdGF0aWNfY2Fz dDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3Jh dGlvbigpLT5kcmFnKCkpOworKyAgICAgICAgZHJhZy0+c2V0RHJvcFJlc3BvbnNlKHJlc3BvbnNl KTsKKysgICAgICAgIGRyYWctPmZpbmlzaERyYWcoKTsKKysgICAgfSBlbHNlIGlmIChtX2RyYWdP ZmZlcikgeworKyAgICAgICAgbV9kcmFnT2ZmZXItPmZpbmlzaCgpOworICAgICB9CisgfQorIAor QEAgLTE4Niw3ICsyMTMsNyBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2Vf ZW50ZXIodWludDMyX3Qgc2VyaWFsLCB3bF9zdXJmYWNlICpzdXJmYWNlLAorICAgICAgICAgc3Vw cG9ydGVkQWN0aW9ucyA9IGRyYWctPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfSBlbHNlIGlm IChtX2RyYWdPZmZlcikgeworICAgICAgICAgZHJhZ0RhdGEgPSBtX2RyYWdPZmZlci0+bWltZURh dGEoKTsKKy0gICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBRdDo6Q29weUFjdGlvbiB8IFF0OjpN b3ZlQWN0aW9uIHwgUXQ6OkxpbmtBY3Rpb247CisrICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0g bV9kcmFnT2ZmZXItPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfQorIAorICAgICBjb25zdCBR UGxhdGZvcm1EcmFnUXRSZXNwb25zZSAmcmVzcG9uc2UgPSBRV2luZG93U3lzdGVtSW50ZXJmYWNl OjpoYW5kbGVEcmFnKG1fZHJhZ1dpbmRvdywgZHJhZ0RhdGEsIG1fZHJhZ1BvaW50LCBzdXBwb3J0 ZWRBY3Rpb25zLAorQEAgLTE5NywxMSArMjI0LDcgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6 OmRhdGFfZGV2aWNlX2VudGVyKHVpbnQzMl90IHNlcmlhbCwgd2xfc3VyZmFjZSAqc3VyZmFjZSwK KyAgICAgICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2 YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSktPnNldFJlc3BvbnNlKHJlc3BvbnNl KTsKKyAgICAgfQorIAorLSAgICBpZiAocmVzcG9uc2UuaXNBY2NlcHRlZCgpKSB7CistICAgICAg ICB3bF9kYXRhX29mZmVyX2FjY2VwdChtX2RyYWdPZmZlci0+b2JqZWN0KCksIG1fZW50ZXJTZXJp YWwsIG1fZHJhZ09mZmVyLT5maXJzdEZvcm1hdCgpLnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKy0g ICAgfSBlbHNlIHsKKy0gICAgICAgIHdsX2RhdGFfb2ZmZXJfYWNjZXB0KG1fZHJhZ09mZmVyLT5v YmplY3QoKSwgbV9lbnRlclNlcmlhbCwgbnVsbHB0cik7CistICAgIH0KKysgICAgc2VuZFJlc3Bv bnNlKHN1cHBvcnRlZEFjdGlvbnMsIHJlc3BvbnNlKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZERh dGFEZXZpY2U6OmRhdGFfZGV2aWNlX2xlYXZlKCkKK0BAIC0yMzUsMTAgKzI1OCwxMCBAQCB2b2lk IFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfbW90aW9uKHVpbnQzMl90IHRpbWUsIHds X2ZpeGVkX3QgeCwgd2xfZml4ZQorICAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IGRyYWctPnN1 cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIGRyYWdEYXRhID0gbV9k cmFnT2ZmZXItPm1pbWVEYXRhKCk7CistICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkNv cHlBY3Rpb24gfCBRdDo6TW92ZUFjdGlvbiB8IFF0OjpMaW5rQWN0aW9uOworKyAgICAgICAgc3Vw cG9ydGVkQWN0aW9ucyA9IG1fZHJhZ09mZmVyLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0K KyAKKy0gICAgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgcmVzcG9uc2UgPSBRV2luZG93U3lzdGVt SW50ZXJmYWNlOjpoYW5kbGVEcmFnKG1fZHJhZ1dpbmRvdywgZHJhZ0RhdGEsIG1fZHJhZ1BvaW50 LCBzdXBwb3J0ZWRBY3Rpb25zLAorKyAgICBjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSBy ZXNwb25zZSA9IFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZURyYWcobV9kcmFnV2luZG93 LCBkcmFnRGF0YSwgbV9kcmFnUG9pbnQsIHN1cHBvcnRlZEFjdGlvbnMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRR3VpQXBwbGljYXRpb246Om1vdXNlQnV0dG9ucygpLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UUd1aUFwcGxpY2F0aW9uOjprZXlib2FyZE1vZGlmaWVycygpKTsKKyAKK0BAIC0yNDYsMTEgKzI2 OSw3IEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9tb3Rpb24odWludDMy X3QgdGltZSwgd2xfZml4ZWRfdCB4LCB3bF9maXhlCisgICAgICAgICBzdGF0aWNfY2FzdDxRV2F5 bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigp LT5kcmFnKCkpLT5zZXRSZXNwb25zZShyZXNwb25zZSk7CisgICAgIH0KKyAKKy0gICAgaWYgKHJl c3BvbnNlLmlzQWNjZXB0ZWQoKSkgeworLSAgICAgICAgd2xfZGF0YV9vZmZlcl9hY2NlcHQobV9k cmFnT2ZmZXItPm9iamVjdCgpLCBtX2VudGVyU2VyaWFsLCBtX2RyYWdPZmZlci0+Zmlyc3RGb3Jt YXQoKS50b1V0ZjgoKS5jb25zdERhdGEoKSk7CistICAgIH0gZWxzZSB7CistICAgICAgICB3bF9k YXRhX29mZmVyX2FjY2VwdChtX2RyYWdPZmZlci0+b2JqZWN0KCksIG1fZW50ZXJTZXJpYWwsIG51 bGxwdHIpOworLSAgICB9CisrICAgIHNlbmRSZXNwb25zZShzdXBwb3J0ZWRBY3Rpb25zLCByZXNw b25zZSk7CisgfQorICNlbmRpZiAvLyBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgCitAQCAtMjc3 LDE0ICsyOTYsMTAgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OnNlbGVjdGlvblNvdXJjZUNh bmNlbGxlZCgpCisgI2lmIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkKKyB2b2lkIFFXYXlsYW5kRGF0 YURldmljZTo6ZHJhZ1NvdXJjZUNhbmNlbGxlZCgpCisgeworKyAgICBzdGF0aWNfY2FzdDxRV2F5 bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigp LT5kcmFnKCkpLT5maW5pc2hEcmFnKCk7CisgICAgIG1fZHJhZ1NvdXJjZS5yZXNldCgpOworIH0K KyAKKy12b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZHJhZ1NvdXJjZVRhcmdldENoYW5nZWQoY29u c3QgUVN0cmluZyAmbWltZVR5cGUpCisteworLSAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcg Kj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkp LT51cGRhdGVUYXJnZXQobWltZVR5cGUpOworLX0KKy0KKyBRUG9pbnQgUVdheWxhbmREYXRhRGV2 aWNlOjpjYWxjdWxhdGVEcmFnUG9zaXRpb24oaW50IHgsIGludCB5LCBRV2luZG93ICp3bmQpIGNv bnN0CisgeworICAgICBRUG9pbnQgcG50KHdsX2ZpeGVkX3RvX2ludCh4KSwgd2xfZml4ZWRfdG9f aW50KHkpKTsKK0BAIC0yOTcsNiArMzEyLDMzIEBAIFFQb2ludCBRV2F5bGFuZERhdGFEZXZpY2U6 OmNhbGN1bGF0ZURyYWdQb3NpdGlvbihpbnQgeCwgaW50IHksIFFXaW5kb3cgKnduZCkgY29uCisg ICAgIH0KKyAgICAgcmV0dXJuIHBudDsKKyB9CisrCisrdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6 OnNlbmRSZXNwb25zZShRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucywgY29uc3QgUVBs YXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlKQorK3sKKysgICAgaWYgKHJlc3BvbnNlLmlz QWNjZXB0ZWQoKSkgeworKyAgICAgICAgaWYgKHdsX2RhdGFfZGV2aWNlX2dldF92ZXJzaW9uKG9i amVjdCgpKSA+PSAzKQorKyAgICAgICAgICAgIG1fZHJhZ09mZmVyLT5zZXRfYWN0aW9ucyhkcm9w QWN0aW9uc1RvV2woc3VwcG9ydGVkQWN0aW9ucyksIGRyb3BBY3Rpb25zVG9XbChyZXNwb25zZS5h Y2NlcHRlZEFjdGlvbigpKSk7CisrCisrICAgICAgICBtX2RyYWdPZmZlci0+YWNjZXB0KG1fZW50 ZXJTZXJpYWwsIG1fZHJhZ09mZmVyLT5maXJzdEZvcm1hdCgpKTsKKysgICAgfSBlbHNlIHsKKysg ICAgICAgIG1fZHJhZ09mZmVyLT5hY2NlcHQobV9lbnRlclNlcmlhbCwgUVN0cmluZygpKTsKKysg ICAgfQorK30KKysKKytpbnQgUVdheWxhbmREYXRhRGV2aWNlOjpkcm9wQWN0aW9uc1RvV2woUXQ6 OkRyb3BBY3Rpb25zIGFjdGlvbnMpCisreworKworKyAgICBpbnQgd2xBY3Rpb25zID0gV0xfREFU QV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX05PTkU7CisrICAgIGlmIChhY3Rpb25zICYgUXQ6 OkNvcHlBY3Rpb24pCisrICAgICAgICB3bEFjdGlvbnMgfD0gV0xfREFUQV9ERVZJQ0VfTUFOQUdF Ul9ETkRfQUNUSU9OX0NPUFk7CisrICAgIGlmIChhY3Rpb25zICYgKFF0OjpNb3ZlQWN0aW9uIHwg UXQ6OlRhcmdldE1vdmVBY3Rpb24pKQorKyAgICAgICAgd2xBY3Rpb25zIHw9IFdMX0RBVEFfREVW SUNFX01BTkFHRVJfRE5EX0FDVElPTl9NT1ZFOworKworKyAgICAvLyB3YXlsYW5kIGRvZXMgbm90 IHN1cHBvcnQgTGlua0FjdGlvbiBhdCB0aGUgdGltZSBvZiB3cml0aW5nCisrICAgIHJldHVybiB3 bEFjdGlvbnM7CisrfQorKworKworICNlbmRpZiAvLyBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisg CisgfQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmlj ZV9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VfcC5oCitpbmRl eCAxNmMzYWQyOC4uODAxZGNjMmMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGRhdGFkZXZpY2VfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGRhdGFkZXZpY2VfcC5oCitAQCAtNjQsNiArNjQsNyBAQCBRVF9SRVFVSVJFX0NPTkZJRyh3YXls YW5kX2RhdGFkZXZpY2UpOworIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIGNsYXNzIFFNaW1lRGF0 YTsKKytjbGFzcyBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZTsKKyBjbGFzcyBRV2luZG93OworIAor IG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQgeworQEAgLTg5LDcgKzkwLDcgQEAgcHVibGljOgor IAorICNpZiBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgICAgIFFXYXlsYW5kRGF0YU9mZmVyICpk cmFnT2ZmZXIoKSBjb25zdDsKKy0gICAgYm9vbCBzdGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0 YSwgUVdheWxhbmRXaW5kb3cgKmljb24pOworKyAgICBib29sIHN0YXJ0RHJhZyhRTWltZURhdGEg Km1pbWVEYXRhLCBRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucywgUVdheWxhbmRXaW5k b3cgKmljb24pOworICAgICB2b2lkIGNhbmNlbERyYWcoKTsKKyAjZW5kaWYKKyAKK0BAIC0xMDks MTMgKzExMCwxNiBAQCBwcml2YXRlIFFfU0xPVFM6CisgCisgI2lmIFFUX0NPTkZJRyhkcmFnYW5k ZHJvcCkKKyAgICAgdm9pZCBkcmFnU291cmNlQ2FuY2VsbGVkKCk7CistICAgIHZvaWQgZHJhZ1Nv dXJjZVRhcmdldENoYW5nZWQoY29uc3QgUVN0cmluZyAmbWltZVR5cGUpOworICNlbmRpZgorIAor IHByaXZhdGU6CisgI2lmIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkKKyAgICAgUVBvaW50IGNhbGN1 bGF0ZURyYWdQb3NpdGlvbihpbnQgeCwgaW50IHksIFFXaW5kb3cgKnduZCkgY29uc3Q7CisgI2Vu ZGlmCisrICAgIHZvaWQgc2VuZFJlc3BvbnNlKFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rp b25zLCBjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSAmcmVzcG9uc2UpOworKworKyAgICBz dGF0aWMgaW50IGRyb3BBY3Rpb25zVG9XbChRdDo6RHJvcEFjdGlvbnMgZHJvcEFjdGlvbnMpOwor KworIAorICAgICBRV2F5bGFuZERpc3BsYXkgKm1fZGlzcGxheSA9IG51bGxwdHI7CisgICAgIFFX YXlsYW5kSW5wdXREZXZpY2UgKm1faW5wdXREZXZpY2UgPSBudWxscHRyOworZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXIuY3BwIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlci5jcHAKK2luZGV4IDM1 ZDY3MzA3Li42ZGM0Zjc3ZiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZGF0YWRldmljZW1hbmFnZXIuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRhdGFkZXZpY2VtYW5hZ2VyLmNwcAorQEAgLTUwLDggKzUwLDggQEAgUVRfQkVHSU5fTkFN RVNQQUNFCisgCisgbmFtZXNwYWNlIFF0V2F5bGFuZENsaWVudCB7CisgCistUVdheWxhbmREYXRh RGV2aWNlTWFuYWdlcjo6UVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcihRV2F5bGFuZERpc3BsYXkg KmRpc3BsYXksIHVpbnQzMl90IGlkKQorLSAgICA6IHdsX2RhdGFfZGV2aWNlX21hbmFnZXIoZGlz cGxheS0+d2xfcmVnaXN0cnkoKSwgaWQsIDEpCisrUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcjo6 UVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIGludCB2 ZXJzaW9uLCB1aW50MzJfdCBpZCkKKysgICAgOiB3bF9kYXRhX2RldmljZV9tYW5hZ2VyKGRpc3Bs YXktPndsX3JlZ2lzdHJ5KCksIGlkLCBxTWluKHZlcnNpb24sIDMpKQorICAgICAsIG1fZGlzcGxh eShkaXNwbGF5KQorIHsKKyAgICAgLy8gQ3JlYXRlIHRyYW5zZmVyIGRldmljZXMgZm9yIGFsbCBp bnB1dCBkZXZpY2VzLgorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k ZGF0YWRldmljZW1hbmFnZXJfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRh ZGV2aWNlbWFuYWdlcl9wLmgKK2luZGV4IGJkMDVjMGZiLi41MTBkOWJlNCAxMDA2NDQKKy0tLSBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXJfcC5oCisrKysg Yi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaAorQEAg LTY4LDcgKzY4LDcgQEAgY2xhc3MgUVdheWxhbmRJbnB1dERldmljZTsKKyBjbGFzcyBRX1dBWUxB TkRfQ0xJRU5UX0VYUE9SVCBRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyIDogcHVibGljIFF0V2F5 bGFuZDo6d2xfZGF0YV9kZXZpY2VfbWFuYWdlcgorIHsKKyBwdWJsaWM6CistICAgIFFXYXlsYW5k RGF0YURldmljZU1hbmFnZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCB1aW50MzJfdCBpZCk7 CisrICAgIFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5 LCBpbnQgdmVyc2lvbiwgdWludDMyX3QgaWQpOworICAgICB+UVdheWxhbmREYXRhRGV2aWNlTWFu YWdlcigpIG92ZXJyaWRlOworIAorICAgICBRV2F5bGFuZERhdGFEZXZpY2UgKmdldERhdGFEZXZp Y2UoUVdheWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZpY2UpOworZGlmZiAtLWdpdCBhL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kZGF0YW9mZmVyLmNwcAoraW5kZXggMjI5N2U4YTEuLmZlMGVhOGM5IDEwMDY0 NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXIuY3BwCisrKysg Yi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlci5jcHAKK0BAIC04Miw2ICs4 MiwxNSBAQCBRTWltZURhdGEgKlFXYXlsYW5kRGF0YU9mZmVyOjptaW1lRGF0YSgpCisgICAgIHJl dHVybiBtX21pbWVEYXRhLmRhdGEoKTsKKyB9CisgCisrUXQ6OkRyb3BBY3Rpb25zIFFXYXlsYW5k RGF0YU9mZmVyOjpzdXBwb3J0ZWRBY3Rpb25zKCkgY29uc3QKKyt7CisrICAgIGlmICh3bF9kYXRh X29mZmVyX2dldF92ZXJzaW9uKGNvbnN0X2Nhc3Q8Ojp3bF9kYXRhX29mZmVyKj4ob2JqZWN0KCkp KSA8IDMpIHsKKysgICAgICAgIHJldHVybiBRdDo6TW92ZUFjdGlvbiB8IFF0OjpDb3B5QWN0aW9u OworKyAgICB9CisrCisrICAgIHJldHVybiBtX3N1cHBvcnRlZEFjdGlvbnM7CisrfQorKworIHZv aWQgUVdheWxhbmREYXRhT2ZmZXI6OnN0YXJ0UmVjZWl2aW5nKGNvbnN0IFFTdHJpbmcgJm1pbWVU eXBlLCBpbnQgZmQpCisgeworICAgICByZWNlaXZlKG1pbWVUeXBlLCBmZCk7CitAQCAtOTMsNiAr MTAyLDIyIEBAIHZvaWQgUVdheWxhbmREYXRhT2ZmZXI6OmRhdGFfb2ZmZXJfb2ZmZXIoY29uc3Qg UVN0cmluZyAmbWltZV90eXBlKQorICAgICBtX21pbWVEYXRhLT5hcHBlbmRGb3JtYXQobWltZV90 eXBlKTsKKyB9CisgCisrdm9pZCBRV2F5bGFuZERhdGFPZmZlcjo6ZGF0YV9vZmZlcl9hY3Rpb24o dWludDMyX3QgZG5kX2FjdGlvbikKKyt7CisrICAgIFFfVU5VU0VEKGRuZF9hY3Rpb24pOworKyAg ICAvLyBUaGlzIGlzIHRoZSBjb21wb3NpdG9yIHRlbGxpbmcgdGhlIGRyYWcgdGFyZ2V0IHdoYXQg YWN0aW9uIGl0IHNob3VsZCBwZXJmb3JtCisrICAgIC8vIEl0IGRvZXMgbm90IG1hcCBuaWNlbHkg aW50byBRdCBmaW5hbCBkcm9wIHNlbWFudGljcywgb3RoZXIgdGhhbiBwcmV0ZW5kaW5nIHRoZXJl IGlzIG9ubHkgb25lIHN1cHBvcnRlZCBhY3Rpb24/CisrfQorKworK3ZvaWQgUVdheWxhbmREYXRh T2ZmZXI6OmRhdGFfb2ZmZXJfc291cmNlX2FjdGlvbnModWludDMyX3Qgc291cmNlX2FjdGlvbnMp CisreworKyAgICBtX3N1cHBvcnRlZEFjdGlvbnMgPSBRdDo6RHJvcEFjdGlvbnMoKTsKKysgICAg aWYgKHNvdXJjZV9hY3Rpb25zICYgV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX01P VkUpCisrICAgICAgICBtX3N1cHBvcnRlZEFjdGlvbnMgfD0gUXQ6Ok1vdmVBY3Rpb247CisrICAg IGlmIChzb3VyY2VfYWN0aW9ucyAmIFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9D T1BZKQorKyAgICAgICAgbV9zdXBwb3J0ZWRBY3Rpb25zIHw9IFF0OjpDb3B5QWN0aW9uOworK30K KysKKyBRV2F5bGFuZE1pbWVEYXRhOjpRV2F5bGFuZE1pbWVEYXRhKFFXYXlsYW5kQWJzdHJhY3RE YXRhT2ZmZXIgKmRhdGFPZmZlcikKKyAgICAgOiBtX2RhdGFPZmZlcihkYXRhT2ZmZXIpCisgewor QEAgLTE2MywxNyArMTg4LDE4IEBAIFFWYXJpYW50IFFXYXlsYW5kTWltZURhdGE6OnJldHJpZXZl RGF0YV9zeXMoY29uc3QgUVN0cmluZyAmbWltZVR5cGUsIFFWYXJpYW50OjpUCisgCisgaW50IFFX YXlsYW5kTWltZURhdGE6OnJlYWREYXRhKGludCBmZCwgUUJ5dGVBcnJheSAmZGF0YSkgY29uc3QK KyB7CistICAgIGZkX3NldCByZWFkc2V0OworLSAgICBGRF9aRVJPKCZyZWFkc2V0KTsKKy0gICAg RkRfU0VUKGZkLCAmcmVhZHNldCk7CistICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVvdXQ7CisrICAg IHN0cnVjdCBwb2xsZmQgcmVhZHNldDsKKysgICAgcmVhZHNldC5mZCA9IGZkOworKyAgICByZWFk c2V0LmV2ZW50cyA9IFBPTExJTjsKKysgICAgc3RydWN0IHRpbWVzcGVjIHRpbWVvdXQ7CisgICAg IHRpbWVvdXQudHZfc2VjID0gMTsKKy0gICAgdGltZW91dC50dl91c2VjID0gMDsKKysgICAgdGlt ZW91dC50dl9uc2VjID0gMDsKKysKKyAKKyAgICAgUV9GT1JFVkVSIHsKKy0gICAgICAgIGludCBy ZWFkeSA9IHNlbGVjdChGRF9TRVRTSVpFLCAmcmVhZHNldCwgbnVsbHB0ciwgbnVsbHB0ciwgJnRp bWVvdXQpOworKyAgICAgICAgaW50IHJlYWR5ID0gcXRfc2FmZV9wb2xsKCZyZWFkc2V0LCAxLCAm dGltZW91dCk7CisgICAgICAgICBpZiAocmVhZHkgPCAwKSB7CistICAgICAgICAgICAgcVdhcm5p bmcoKSA8PCAiUVdheWxhbmREYXRhT2ZmZXI6IHNlbGVjdCgpIGZhaWxlZCI7CisrICAgICAgICAg ICAgcVdhcm5pbmcoKSA8PCAiUVdheWxhbmREYXRhT2ZmZXI6IHF0X3NhZmVfcG9sbCgpIGZhaWxl ZCI7CisgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgfSBlbHNlIGlmIChyZWFkeSA9 PSAwKSB7CisgICAgICAgICAgICAgcVdhcm5pbmcoIlFXYXlsYW5kRGF0YU9mZmVyOiB0aW1lb3V0 IHJlYWRpbmcgZnJvbSBwaXBlIik7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRkYXRhb2ZmZXJfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRh b2ZmZXJfcC5oCitpbmRleCA5Y2YxNDgzYy4uNmY2NjczOTggMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlcl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyX3AuaAorQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgor ICAgICBleHBsaWNpdCBRV2F5bGFuZERhdGFPZmZlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXks IHN0cnVjdCA6OndsX2RhdGFfb2ZmZXIgKm9mZmVyKTsKKyAgICAgflFXYXlsYW5kRGF0YU9mZmVy KCkgb3ZlcnJpZGU7CisgICAgIFFNaW1lRGF0YSAqbWltZURhdGEoKSBvdmVycmlkZTsKKysgICAg UXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMoKSBjb25zdDsKKyAKKyAgICAgUVN0cmlu ZyBmaXJzdEZvcm1hdCgpIGNvbnN0OworIAorQEAgLTg5LDEwICs5MCwxMyBAQCBwdWJsaWM6Cisg CisgcHJvdGVjdGVkOgorICAgICB2b2lkIGRhdGFfb2ZmZXJfb2ZmZXIoY29uc3QgUVN0cmluZyAm bWltZV90eXBlKSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRhX29mZmVyX3NvdXJjZV9hY3Rpb25z KHVpbnQzMl90IHNvdXJjZV9hY3Rpb25zKSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRhX29mZmVy X2FjdGlvbih1aW50MzJfdCBkbmRfYWN0aW9uKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAg ICBRV2F5bGFuZERpc3BsYXkgKm1fZGlzcGxheSA9IG51bGxwdHI7CisgICAgIFFTY29wZWRQb2lu dGVyPFFXYXlsYW5kTWltZURhdGE+IG1fbWltZURhdGE7CisrICAgIFF0OjpEcm9wQWN0aW9ucyBt X3N1cHBvcnRlZEFjdGlvbnM7CisgfTsKKyAKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2UuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkYXRhc291cmNlLmNwcAoraW5kZXggZjQ1MTIyZmIuLjU1OTljYmQ0IDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlLmNwcAorKysrIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlLmNwcAorQEAgLTEwMSw3ICsxMDEs MzIgQEAgdm9pZCBRV2F5bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX3NlbmQoY29uc3QgUVN0 cmluZyAmbWltZV90eXBlLCBpbnQzMl90IGZkKQorIAorIHZvaWQgUVdheWxhbmREYXRhU291cmNl OjpkYXRhX3NvdXJjZV90YXJnZXQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKQorIHsKKy0gICAg UV9FTUlUIHRhcmdldENoYW5nZWQobWltZV90eXBlKTsKKysgICAgbV9hY2NlcHRlZCA9ICFtaW1l X3R5cGUuaXNFbXB0eSgpOworKyAgICBRX0VNSVQgZG5kUmVzcG9uc2VVcGRhdGVkKG1fYWNjZXB0 ZWQsIG1fZHJvcEFjdGlvbik7CisrfQorKworK3ZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRh X3NvdXJjZV9hY3Rpb24odWludDMyX3QgYWN0aW9uKQorK3sKKysgICAgUXQ6OkRyb3BBY3Rpb24g cXRBY3Rpb24gPSBRdDo6SWdub3JlQWN0aW9uOworKworKyAgICBpZiAoYWN0aW9uID09IFdMX0RB VEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9NT1ZFKQorKyAgICAgICAgcXRBY3Rpb24gPSBR dDo6TW92ZUFjdGlvbjsKKysgICAgZWxzZSBpZiAoYWN0aW9uID09IFdMX0RBVEFfREVWSUNFX01B TkFHRVJfRE5EX0FDVElPTl9DT1BZKQorKyAgICAgICAgcXRBY3Rpb24gPSBRdDo6Q29weUFjdGlv bjsKKysKKysgICAgbV9kcm9wQWN0aW9uID0gcXRBY3Rpb247CisrICAgIFFfRU1JVCBkbmRSZXNw b25zZVVwZGF0ZWQobV9hY2NlcHRlZCwgbV9kcm9wQWN0aW9uKTsKKyt9CisrCisrdm9pZCBRV2F5 bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX2RuZF9maW5pc2hlZCgpCisreworKyAgICBRX0VN SVQgZmluaXNoZWQoKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZERhdGFTb3VyY2U6OmRhdGFfc291 cmNlX2RuZF9kcm9wX3BlcmZvcm1lZCgpCisreworKworKyAgICBRX0VNSVQgZG5kRHJvcHBlZCht X2FjY2VwdGVkLCBtX2Ryb3BBY3Rpb24pOworIH0KKyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmgKK2luZGV4IDI1YWZmZjc5Li45NmYwN2JjMyAxMDA2 NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmgKKysr KyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmgKK0BAIC03Nywx NyArNzcsMjUgQEAgcHVibGljOgorICAgICBRTWltZURhdGEgKm1pbWVEYXRhKCkgY29uc3Q7Cisg CisgUV9TSUdOQUxTOgorLSAgICB2b2lkIHRhcmdldENoYW5nZWQoY29uc3QgUVN0cmluZyAmbWlt ZV90eXBlKTsKKyAgICAgdm9pZCBjYW5jZWxsZWQoKTsKKysgICAgdm9pZCBmaW5pc2hlZCgpOwor KworKyAgICB2b2lkIGRuZFJlc3BvbnNlVXBkYXRlZChib29sIGFjY2VwdGVkLCBRdDo6RHJvcEFj dGlvbiBhY3Rpb24pOworKyAgICB2b2lkIGRuZERyb3BwZWQoYm9vbCBhY2NlcHRlZCwgUXQ6OkRy b3BBY3Rpb24gYWN0aW9uKTsKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgZGF0YV9zb3VyY2Vf Y2FuY2VsbGVkKCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgZGF0YV9zb3VyY2Vfc2VuZChjb25zdCBR U3RyaW5nICZtaW1lX3R5cGUsIGludDMyX3QgZmQpIG92ZXJyaWRlOworICAgICB2b2lkIGRhdGFf c291cmNlX3RhcmdldChjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUpIG92ZXJyaWRlOworKyAgICB2 b2lkIGRhdGFfc291cmNlX2RuZF9kcm9wX3BlcmZvcm1lZCgpIG92ZXJyaWRlOworKyAgICB2b2lk IGRhdGFfc291cmNlX2RuZF9maW5pc2hlZCgpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfc291 cmNlX2FjdGlvbih1aW50MzJfdCBhY3Rpb24pIG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAg IFFXYXlsYW5kRGlzcGxheSAqbV9kaXNwbGF5ID0gbnVsbHB0cjsKKyAgICAgUU1pbWVEYXRhICpt X21pbWVfZGF0YSA9IG51bGxwdHI7CisrICAgIGJvb2wgbV9hY2NlcHRlZCA9IGZhbHNlOworKyAg ICBRdDo6RHJvcEFjdGlvbiBtX2Ryb3BBY3Rpb24gPSBRdDo6SWdub3JlQWN0aW9uOworIH07Cisg CisgfQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheS5j cHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXkuY3BwCitpbmRleCBmMTBj MWY3OS4uYzAxZTIzOGIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGRpc3BsYXkuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXku Y3BwCitAQCAtODUsMTAgKzg1LDIwMyBAQAorIAorICNpbmNsdWRlIDxlcnJuby5oPgorIAorKyNp bmNsdWRlIDx0dXBsZT4gLy8gZm9yIHN0ZDo6dGllCisrCisrc3RhdGljIHZvaWQgY2hlY2tXYXls YW5kRXJyb3Ioc3RydWN0IHdsX2Rpc3BsYXkgKmRpc3BsYXkpCisreworKyAgICBpbnQgZWNvZGUg PSB3bF9kaXNwbGF5X2dldF9lcnJvcihkaXNwbGF5KTsKKysgICAgaWYgKChlY29kZSA9PSBFUElQ RSB8fCBlY29kZSA9PSBFQ09OTlJFU0VUKSkgeworKyAgICAgICAgLy8gc3BlY2lhbCBjYXNlIHRo aXMgdG8gcHJvdmlkZSBhIG5pY2VyIGVycm9yCisrICAgICAgICBxV2FybmluZygiVGhlIFdheWxh bmQgY29ubmVjdGlvbiBicm9rZS4gRGlkIHRoZSBXYXlsYW5kIGNvbXBvc2l0b3IgZGllPyIpOwor KyAgICB9IGVsc2UgeworKyAgICAgICAgcVdhcm5pbmcoIlRoZSBXYXlsYW5kIGNvbm5lY3Rpb24g ZXhwZXJpZW5jZWQgYSBmYXRhbCBlcnJvcjogJXMiLCBzdHJlcnJvcihlY29kZSkpOworKyAgICB9 CisrICAgIF9leGl0KDEpOworK30KKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBuYW1lc3Bh Y2UgUXRXYXlsYW5kQ2xpZW50IHsKKyAKKytjbGFzcyBFdmVudFRocmVhZCA6IHB1YmxpYyBRVGhy ZWFkCisreworKyAgICBRX09CSkVDVAorK3B1YmxpYzoKKysgICAgZW51bSBPcGVyYXRpbmdNb2Rl IHsKKysgICAgICAgIEVtaXRUb0Rpc3BhdGNoLCAvLyBFbWl0IHRoZSBzaWduYWwsIGFsbG93IGRp c3BhdGNoaW5nIGluIGEgZGlmZmVybnQgdGhyZWFkLgorKyAgICAgICAgU2VsZkRpc3BhdGNoLCAv LyBEaXNwYXRjaCB0aGUgZXZlbnRzIGluc2lkZSB0aGlzIHRocmVhZC4KKysgICAgfTsKKysKKysg ICAgRXZlbnRUaHJlYWQoc3RydWN0IHdsX2Rpc3BsYXkgKiB3bCwgc3RydWN0IHdsX2V2ZW50X3F1 ZXVlICogZXZfcXVldWUsCisrICAgICAgICAgICAgICAgIE9wZXJhdGluZ01vZGUgbW9kZSkKKysg ICAgICAgIDogbV9mZCh3bF9kaXNwbGF5X2dldF9mZCh3bCkpCisrICAgICAgICAsIG1fcGlwZWZk eyAtMSwgLTEgfQorKyAgICAgICAgLCBtX3dsZGlzcGxheSh3bCkKKysgICAgICAgICwgbV93bGV2 cXVldWUoZXZfcXVldWUpCisrICAgICAgICAsIG1fbW9kZShtb2RlKQorKyAgICAgICAgLCBtX3Jl YWRpbmcodHJ1ZSkKKysgICAgICAgICwgbV9xdWl0dGluZyhmYWxzZSkKKysgICAgeworKyAgICAg ICAgc2V0T2JqZWN0TmFtZShRU3RyaW5nTGl0ZXJhbCgiV2F5bGFuZEV2ZW50VGhyZWFkIikpOwor KyAgICB9CisrCisrICAgIHZvaWQgcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkKKysgICAgeworKyAg ICAgICAgLyoKKysgICAgICAgICAqIERpc3BhdGNoIHBlbmRpbmcgZXZlbnRzIGFuZCBmbHVzaCB0 aGUgcmVxdWVzdHMgYXQgbGVhc3Qgb25jZS4gSWYgdGhlIGV2ZW50IHRocmVhZAorKyAgICAgICAg ICogaXMgbm90IHJlYWRpbmcsIHRyeSB0byBjYWxsIF9wcmVwYXJlX3JlYWQoKSB0byBhbGxvdyB0 aGUgZXZlbnQgdGhyZWFkIHRvIHBvbGwoKS4KKysgICAgICAgICAqIElmIHRoYXQgZmFpbHMsIHJl LXRyeSBkaXNwYXRjaCAmIGZsdXNoIGFnYWluIHVudGlsIF9wcmVwYXJlX3JlYWQoKSBpcyBzdWNj ZXNzZnVsLgorKyAgICAgICAgICoKKysgICAgICAgICAqIFRoaXMgYWxsb3cgYW55IGNhbGwgdG8g cmVhZEFuZERpc3BhdGNoRXZlbnRzKCkgdG8gc3RhcnQgZXZlbnQgdGhyZWFkJ3MgcG9sbGluZywK KysgICAgICAgICAqIG5vdCBvbmx5IHRoZSBvbmUgaXNzdWVkIGZyb20gZXZlbnQgdGhyZWFkJ3Mg d2FpdEZvclJlYWRpbmcoKSwgd2hpY2ggbWVhbnMgZnVuY3Rpb25zCisrICAgICAgICAgKiBjYWxs ZWQgZnJvbSBkaXNwYXRjaF9wZW5kaW5nKCkgY2FuIHNhZmVseSBzcGluIGFuIGV2ZW50IGxvb3Au CisrICAgICAgICAgKi8KKysgICAgICAgIGZvciAoOzspIHsKKysgICAgICAgICAgICBpZiAoZGlz cGF0Y2hRdWV1ZVBlbmRpbmcoKSA8IDApIHsKKysgICAgICAgICAgICAgICAgY2hlY2tXYXlsYW5k RXJyb3IobV93bGRpc3BsYXkpOworKyAgICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICAg ICAgfQorKworKyAgICAgICAgICAgIHdsX2Rpc3BsYXlfZmx1c2gobV93bGRpc3BsYXkpOworKwor KyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gY2hlY2sgaWYgZXZlbnQgdGhyZWFkIGlzIHJlYWRp bmcgZXZlcnkgdGltZSB3ZSBkaXNwYXRjaAorKyAgICAgICAgICAgIC8vIHNvbWV0aGluZywgYXMg dGhhdCBtYXkgcmVjdXJzaXZlbHkgY2FsbCB0aGlzIGZ1bmN0aW9uLgorKyAgICAgICAgICAgIGlm IChtX3JlYWRpbmcubG9hZEFjcXVpcmUoKSkKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrCisr ICAgICAgICAgICAgaWYgKHByZXBhcmVSZWFkUXVldWUoKSA9PSAwKSB7CisrICAgICAgICAgICAg ICAgIFFNdXRleExvY2tlciBsKCZtX211dGV4KTsKKysgICAgICAgICAgICAgICAgbV9yZWFkaW5n LnN0b3JlUmVsZWFzZSh0cnVlKTsKKysgICAgICAgICAgICAgICAgbV9jb25kLndha2VPbmUoKTsK KysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAg ICB9CisrCisrICAgIHZvaWQgc3RvcCgpCisrICAgIHsKKysgICAgICAgIC8vIFdlIGhhdmUgdG8g Ym90aCB3cml0ZSB0byB0aGUgcGlwZSBhbmQgc2V0IHRoZSBmbGFnLCBhcyB0aGUgdGhyZWFkIG1h eSBiZQorKyAgICAgICAgLy8gZWl0aGVyIGluIHRoZSBwb2xsKCkgb3Igd2FpdGluZyBmb3IgX3By ZXBhcmVfcmVhZCgpLgorKyAgICAgICAgaWYgKG1fcGlwZWZkWzFdICE9IC0xICYmIHdyaXRlKG1f cGlwZWZkWzFdLCAiXDAiLCAxKSA9PSAtMSkKKysgICAgICAgICAgICBxV2FybmluZygiRmFpbGVk IHRvIHdyaXRlIHRvIHRoZSBwaXBlOiAlcy4iLCBzdHJlcnJvcihlcnJubykpOworKworKyAgICAg ICAgeworKyAgICAgICAgICAgIFFNdXRleExvY2tlciBsKCZtX211dGV4KTsKKysgICAgICAgICAg ICBtX3F1aXR0aW5nID0gdHJ1ZTsKKysgICAgICAgICAgICBtX2NvbmQud2FrZU9uZSgpOworKyAg ICAgICAgfQorKworKyAgICAgICAgd2FpdCgpOworKyAgICB9CisrCisrUV9TSUdOQUxTOgorKyAg ICB2b2lkIG5lZWRSZWFkQW5kRGlzcGF0Y2goKTsKKysKKytwcm90ZWN0ZWQ6CisrICAgIHZvaWQg cnVuKCkgb3ZlcnJpZGUKKysgICAgeworKyAgICAgICAgLy8gd2UgdXNlIHRoaXMgcGlwZSB0byBt YWtlIHRoZSBsb29wIGV4aXQgb3RoZXJ3aXNlIGlmIHdlIHNpbXBseSB1c2VkIGEgZmxhZyBvbiB0 aGUgbG9vcCBjb25kaXRpb24sIGlmIHN0b3AoKSBnZXRzCisrICAgICAgICAvLyBjYWxsZWQgd2hp bGUgcG9sbCgpIGlzIGJsb2NraW5nIHRoZSB0aHJlYWQgd2lsbCBuZXZlciBxdWl0IHNpbmNlIHRo ZXJlIGFyZSBubyB3YXlsYW5kIG1lc3NhZ2VzIGNvbWluZyBhbnltb3JlLgorKyAgICAgICAgc3Ry dWN0IFBpcGUKKysgICAgICAgIHsKKysgICAgICAgICAgICBQaXBlKGludCAqZmRzKQorKyAgICAg ICAgICAgICAgICA6IGZkcyhmZHMpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBp ZiAocXRfc2FmZV9waXBlKGZkcykgIT0gMCkKKysgICAgICAgICAgICAgICAgICAgIHFXYXJuaW5n KCJQaXBlIGNyZWF0aW9uIGZhaWxlZC4gUXVpdHRpbmcgbWF5IGhhbmcuIik7CisrICAgICAgICAg ICAgfQorKyAgICAgICAgICAgIH5QaXBlKCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAg ICAgIGlmIChmZHNbMF0gIT0gLTEpIHsKKysgICAgICAgICAgICAgICAgICAgIGNsb3NlKGZkc1sw XSk7CisrICAgICAgICAgICAgICAgICAgICBjbG9zZShmZHNbMV0pOworKyAgICAgICAgICAgICAg ICB9CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIGludCAqZmRzOworKyAgICAgICAg fSBwaXBlKG1fcGlwZWZkKTsKKysKKysgICAgICAgIC8vIE1ha2UgdGhlIG1haW4gdGhyZWFkIGNh bGwgd2xfcHJlcGFyZV9yZWFkKCksIGRpc3BhdGNoIHRoZSBwZW5kaW5nIG1lc3NhZ2VzIGFuZCBm bHVzaCB0aGUKKysgICAgICAgIC8vIG91dGJvdW5kIG9uZXMuIFdhaXQgdW50aWwgaXQncyBkb25l IGJlZm9yZSBwcm9jZWVkaW5nLCB1bmxlc3Mgd2UncmUgdG9sZCB0byBxdWl0LgorKyAgICAgICAg d2hpbGUgKHdhaXRGb3JSZWFkaW5nKCkpIHsKKysgICAgICAgICAgICBwb2xsZmQgZmRzWzJdID0g eyB7IG1fZmQsIFBPTExJTiwgMCB9LCB7IG1fcGlwZWZkWzBdLCBQT0xMSU4sIDAgfSB9OworKyAg ICAgICAgICAgIHBvbGwoZmRzLCAyLCAtMSk7CisrCisrICAgICAgICAgICAgaWYgKGZkc1sxXS5y ZXZlbnRzICYgUE9MTElOKSB7CisrICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IHJlYWxseSBj YXJlIHRvIHJlYWQgdGhlIGJ5dGUgdGhhdCB3YXMgd3JpdHRlbiBoZXJlIHNpbmNlIHdlJ3JlIGNs b3NpbmcgZG93bgorKyAgICAgICAgICAgICAgICB3bF9kaXNwbGF5X2NhbmNlbF9yZWFkKG1fd2xk aXNwbGF5KTsKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKworKyAg ICAgICAgICAgIGlmIChmZHNbMF0ucmV2ZW50cyAmIFBPTExJTikKKysgICAgICAgICAgICAgICAg d2xfZGlzcGxheV9yZWFkX2V2ZW50cyhtX3dsZGlzcGxheSk7CisrICAgICAgICAgICAgICAgIC8v IFRoZSBwb2xsbCB3YXMgc3VjY2VzZnVsbCBhbmQgdGhlIGV2ZW50IHRocmVhZCBkaWQgdGhlIHds X2Rpc3BsYXlfcmVhZF9ldmVudHMoKS4gT24gdGhlIG5leHQgaXRlcmF0aW9uIG9mIHRoZSBsb29w CisrICAgICAgICAgICAgICAgIC8vIHRoZSBldmVudCBzZW50IHRvIHRoZSBtYWluIHRocmVhZCB3 aWxsIGNhdXNlIGl0IHRvIGRpc3BhdGNoIHRoZSBtZXNzYWdlcyBqdXN0IHJlYWQsIHVubGVzcyB0 aGUgbG9vcCBleGl0cyBpbiB3aGljaAorKyAgICAgICAgICAgICAgICAvLyBjYXNlIHdlIGRvbid0 IGNhcmUgYW55bW9yZSBhYm91dCB0aGVtLgorKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAg ICAgICAgd2xfZGlzcGxheV9jYW5jZWxfcmVhZChtX3dsZGlzcGxheSk7CisrICAgICAgICB9Cisr ICAgIH0KKysKKytwcml2YXRlOgorKyAgICBib29sIHdhaXRGb3JSZWFkaW5nKCkKKysgICAgewor KyAgICAgICAgUV9BU1NFUlQoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpID09IHRoaXMpOworKwor KyAgICAgICAgbV9yZWFkaW5nLnN0b3JlUmVsZWFzZShmYWxzZSk7CisrCisrICAgICAgICBpZiAo bV9tb2RlID09IFNlbGZEaXNwYXRjaCkgeworKyAgICAgICAgICAgIHJlYWRBbmREaXNwYXRjaEV2 ZW50cygpOworKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBRX0VNSVQgbmVlZFJlYWRB bmREaXNwYXRjaCgpOworKworKyAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrKCZtX211dGV4 KTsKKysgICAgICAgICAgICAvLyBtX3JlYWRpbmcgbWlnaHQgYmUgc2V0IGZyb20gb3VyIGVtaXQg b3Igc29tZSBvdGhlciBpbnZvY2F0aW9uIG9mCisrICAgICAgICAgICAgLy8gcmVhZEFuZERpc3Bh dGNoRXZlbnRzKCkuCisrICAgICAgICAgICAgd2hpbGUgKCFtX3JlYWRpbmcubG9hZFJlbGF4ZWQo KSAmJiAhbV9xdWl0dGluZykKKysgICAgICAgICAgICAgICAgbV9jb25kLndhaXQoJm1fbXV0ZXgp OworKyAgICAgICAgfQorKworKyAgICAgICAgcmV0dXJuICFtX3F1aXR0aW5nOworKyAgICB9Cisr CisrICAgIGludCBkaXNwYXRjaFF1ZXVlUGVuZGluZygpCisrICAgIHsKKysgICAgICAgIGlmICht X3dsZXZxdWV1ZSkKKysgICAgICAgICAgICByZXR1cm4gd2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1 ZV9wZW5kaW5nKG1fd2xkaXNwbGF5LCBtX3dsZXZxdWV1ZSk7CisrICAgICAgICBlbHNlCisrICAg ICAgICAgICAgcmV0dXJuIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcGVuZGluZyhtX3dsZGlzcGxheSk7 CisrICAgIH0KKysKKysgICAgaW50IHByZXBhcmVSZWFkUXVldWUoKQorKyAgICB7CisrICAgICAg ICBpZiAobV93bGV2cXVldWUpCisrICAgICAgICAgICAgcmV0dXJuIHdsX2Rpc3BsYXlfcHJlcGFy ZV9yZWFkX3F1ZXVlKG1fd2xkaXNwbGF5LCBtX3dsZXZxdWV1ZSk7CisrICAgICAgICBlbHNlCisr ICAgICAgICAgICAgcmV0dXJuIHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkKG1fd2xkaXNwbGF5KTsK KysgICAgfQorKworKyAgICBpbnQgbV9mZDsKKysgICAgaW50IG1fcGlwZWZkWzJdOworKyAgICB3 bF9kaXNwbGF5ICptX3dsZGlzcGxheTsKKysgICAgd2xfZXZlbnRfcXVldWUgKm1fd2xldnF1ZXVl OworKyAgICBPcGVyYXRpbmdNb2RlIG1fbW9kZTsKKysKKysgICAgLyogQ29uY3VycmVuY3kgbm90 ZSB3aGVuIG9wZXJhdGluZyBpbiBFbWl0VG9EaXNwYXRjaCBtb2RlOgorKyAgICAgKiBtX3JlYWRp bmcgaXMgc2V0IHRvIGZhbHNlIGluc2lkZSBldmVudCB0aHJlYWQncyB3YWl0Rm9yUmVhZGluZygp LCBhbmQgaXMKKysgICAgICogc2V0IHRvIHRydWUgaW5zaWRlIG1haW4gdGhyZWFkJ3MgcmVhZEFu ZERpc3BhdGNoRXZlbnRzKCkuCisrICAgICAqIFRoZSBsb2NrIGlzIG5vdCB0YWtlbiB3aGVuIHNl dHRpbmcgbV9yZWFkaW5nIHRvIGZhbHNlLCBhcyB0aGUgbWFpbiB0aHJlYWQKKysgICAgICogaXMg bm90IGFjdGl2ZWx5IHdhaXRpbmcgZm9yIGl0IHRvIHR1cm4gZmFsc2UuIEhvd2V2ZXIsIHRoZSBs b2NrIGlzIHRha2VuCisrICAgICAqIGluc2lkZSByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKSBiZWZv cmUgc2V0dGluZyBtX3JlYWRpbmcgdG8gdHJ1ZSwKKysgICAgICogYXMgdGhlIGV2ZW50IHRocmVh ZCBpcyBhY3RpdmVseSB3YWl0aW5nIGZvciBpdCB1bmRlciB0aGUgd2FpdCBjb25kaXRpb24uCisr ICAgICAqLworKworKyAgICBRQXRvbWljSW50ZWdlcjxib29sPiBtX3JlYWRpbmc7CisrICAgIGJv b2wgbV9xdWl0dGluZzsKKysgICAgUU11dGV4IG1fbXV0ZXg7CisrICAgIFFXYWl0Q29uZGl0aW9u IG1fY29uZDsKKyt9OworKworIFFfTE9HR0lOR19DQVRFR09SWShsY1FwYVdheWxhbmQsICJxdC5x cGEud2F5bGFuZCIpOyAvLyBmb3IgZ2VuZXJhbCAodW5jYXRlZ29yaXplZCkgV2F5bGFuZCBwbGF0 Zm9ybSBsb2dnaW5nCisgCisgc3RydWN0IHdsX3N1cmZhY2UgKlFXYXlsYW5kRGlzcGxheTo6Y3Jl YXRlU3VyZmFjZSh2b2lkICpoYW5kbGUpCitAQCAtMTU4LDE3ICszNTEsMTYgQEAgUVdheWxhbmRE aXNwbGF5OjpRV2F5bGFuZERpc3BsYXkoUVdheWxhbmRJbnRlZ3JhdGlvbiAqd2F5bGFuZEludGVn cmF0aW9uKQorICAgICBpZiAoIW1Ya2JDb250ZXh0KQorICAgICAgICAgcUNXYXJuaW5nKGxjUXBh V2F5bGFuZCwgImZhaWxlZCB0byBjcmVhdGUgeGtiIGNvbnRleHQiKTsKKyAjZW5kaWYKKy0KKy0g ICAgZm9yY2VSb3VuZFRyaXAoKTsKKy0KKy0gICAgaWYgKCFtV2FpdGluZ1NjcmVlbnMuaXNFbXB0 eSgpKSB7CistICAgICAgICAvLyBHaXZlIHdsX291dHB1dC5kb25lIGFuZCB6eGRnX291dHB1dF92 MS5kb25lIGV2ZW50cyBhIGNoYW5jZSB0byBhcnJpdmUKKy0gICAgICAgIGZvcmNlUm91bmRUcmlw KCk7CistICAgIH0KKyB9CisgCisgUVdheWxhbmREaXNwbGF5Ojp+UVdheWxhbmREaXNwbGF5KHZv aWQpCisgeworKyAgICBpZiAobV9ldmVudFRocmVhZCkKKysgICAgICAgIG1fZXZlbnRUaHJlYWQt PnN0b3AoKTsKKysKKysgICAgaWYgKG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkKQorKyAgICAgICAg bV9mcmFtZUV2ZW50UXVldWVUaHJlYWQtPnN0b3AoKTsKKysKKyAgICAgaWYgKG1TeW5jQ2FsbGJh Y2spCisgICAgICAgICB3bF9jYWxsYmFja19kZXN0cm95KG1TeW5jQ2FsbGJhY2spOworIAorQEAg LTE4Nyw2ICszNzksMjEgQEAgUVdheWxhbmREaXNwbGF5Ojp+UVdheWxhbmREaXNwbGF5KHZvaWQp CisgI2VuZGlmCisgICAgIGlmIChtRGlzcGxheSkKKyAgICAgICAgIHdsX2Rpc3BsYXlfZGlzY29u bmVjdChtRGlzcGxheSk7CisrCisrICAgIGlmIChtX2ZyYW1lRXZlbnRRdWV1ZSkKKysgICAgICAg IHdsX2V2ZW50X3F1ZXVlX2Rlc3Ryb3kobV9mcmFtZUV2ZW50UXVldWUpOworK30KKysKKysvLyBT dGVwcyB3aGljaCBpcyBjYWxsZWQganVzdCBhZnRlciBjb25zdHJ1Y3Rvci4gVGhpcyBzZXBhcmF0 ZXMgcmVnaXN0cnlfZ2xvYmFsKCkgb3V0IG9mIHRoZSBjb25zdHJ1Y3RvcgorKy8vIHNvIHRoYXQg ZmFjdG9yeSBmdW5jdGlvbnMgaW4gaW50ZWdyYXRpb24gY2FuIGJlIG92ZXJyaWRkZW4uCisrdm9p ZCBRV2F5bGFuZERpc3BsYXk6OmluaXRpYWxpemUoKQorK3sKKysgICAgZm9yY2VSb3VuZFRyaXAo KTsKKysKKysgICAgaWYgKCFtV2FpdGluZ1NjcmVlbnMuaXNFbXB0eSgpKSB7CisrICAgICAgICAv LyBHaXZlIHdsX291dHB1dC5kb25lIGFuZCB6eGRnX291dHB1dF92MS5kb25lIGV2ZW50cyBhIGNo YW5jZSB0byBhcnJpdmUKKysgICAgICAgIGZvcmNlUm91bmRUcmlwKCk7CisrICAgIH0KKyB9Cisg Cisgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmVuc3VyZVNjcmVlbigpCitAQCAtMjAzLDk4ICs0MTAs MzcgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmVuc3VyZVNjcmVlbigpCisgCisgdm9pZCBRV2F5 bGFuZERpc3BsYXk6OmNoZWNrRXJyb3IoKSBjb25zdAorIHsKKy0gICAgaW50IGVjb2RlID0gd2xf ZGlzcGxheV9nZXRfZXJyb3IobURpc3BsYXkpOworLSAgICBpZiAoKGVjb2RlID09IEVQSVBFIHx8 IGVjb2RlID09IEVDT05OUkVTRVQpKSB7CistICAgICAgICAvLyBzcGVjaWFsIGNhc2UgdGhpcyB0 byBwcm92aWRlIGEgbmljZXIgZXJyb3IKKy0gICAgICAgIHFXYXJuaW5nKCJUaGUgV2F5bGFuZCBj b25uZWN0aW9uIGJyb2tlLiBEaWQgdGhlIFdheWxhbmQgY29tcG9zaXRvciBkaWU/Iik7CistICAg IH0gZWxzZSB7CistICAgICAgICBxV2FybmluZygiVGhlIFdheWxhbmQgY29ubmVjdGlvbiBleHBl cmllbmNlZCBhIGZhdGFsIGVycm9yOiAlcyIsIHN0cmVycm9yKGVjb2RlKSk7CistICAgIH0KKy0g ICAgX2V4aXQoMSk7CisrICAgIGNoZWNrV2F5bGFuZEVycm9yKG1EaXNwbGF5KTsKKyB9CisgCisr Ly8gQ2FsbGVkIGluIG1haW4gdGhyZWFkLCBlaXRoZXIgZnJvbSBxdWV1ZWQgc2lnbmFsIG9yIGRp cmVjdGx5LgorIHZvaWQgUVdheWxhbmREaXNwbGF5OjpmbHVzaFJlcXVlc3RzKCkKKyB7CistICAg IGlmICh3bF9kaXNwbGF5X3ByZXBhcmVfcmVhZChtRGlzcGxheSkgPT0gMCkgeworLSAgICAgICAg d2xfZGlzcGxheV9yZWFkX2V2ZW50cyhtRGlzcGxheSk7CistICAgIH0KKy0KKy0gICAgaWYgKHds X2Rpc3BsYXlfZGlzcGF0Y2hfcGVuZGluZyhtRGlzcGxheSkgPCAwKQorLSAgICAgICAgY2hlY2tF cnJvcigpOworLQorLSAgICB7CistICAgICAgICBRUmVhZExvY2tlciBsb2NrZXIoJm1fZnJhbWVR dWV1ZUxvY2spOworLSAgICAgICAgZm9yIChjb25zdCBGcmFtZVF1ZXVlICZxIDogbUV4dGVybmFs UXVldWVzKSB7CistICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcihxLm11dGV4KTsKKy0g ICAgICAgICAgICB3aGlsZSAod2xfZGlzcGxheV9wcmVwYXJlX3JlYWRfcXVldWUobURpc3BsYXks IHEucXVldWUpICE9IDApCistICAgICAgICAgICAgICAgIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVl dWVfcGVuZGluZyhtRGlzcGxheSwgcS5xdWV1ZSk7CistICAgICAgICAgICAgd2xfZGlzcGxheV9y ZWFkX2V2ZW50cyhtRGlzcGxheSk7CistICAgICAgICAgICAgd2xfZGlzcGxheV9kaXNwYXRjaF9x dWV1ZV9wZW5kaW5nKG1EaXNwbGF5LCBxLnF1ZXVlKTsKKy0gICAgICAgIH0KKy0gICAgfQorLQor LSAgICB3bF9kaXNwbGF5X2ZsdXNoKG1EaXNwbGF5KTsKKy19CistCistdm9pZCBRV2F5bGFuZERp c3BsYXk6OmJsb2NraW5nUmVhZEV2ZW50cygpCisteworLSAgICBpZiAod2xfZGlzcGxheV9kaXNw YXRjaChtRGlzcGxheSkgPCAwKQorLSAgICAgICAgY2hlY2tFcnJvcigpOworLX0KKy0KKy12b2lk IFFXYXlsYW5kRGlzcGxheTo6ZGVzdHJveUZyYW1lUXVldWUoY29uc3QgUVdheWxhbmREaXNwbGF5 OjpGcmFtZVF1ZXVlICZxKQorLXsKKy0gICAgUVdyaXRlTG9ja2VyIGxvY2tlcigmbV9mcmFtZVF1 ZXVlTG9jayk7CistICAgIGF1dG8gaXQgPSBzdGQ6OmZpbmRfaWYobUV4dGVybmFsUXVldWVzLmJl Z2luKCksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgbUV4dGVybmFsUXVldWVzLmVuZCgp LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFsmcV0gKGNvbnN0IFFXYXlsYW5kRGlzcGxh eTo6RnJhbWVRdWV1ZSAmb3RoZXIpeyByZXR1cm4gb3RoZXIucXVldWUgPT0gcS5xdWV1ZTsgfSk7 CistICAgIFFfQVNTRVJUKGl0ICE9IG1FeHRlcm5hbFF1ZXVlcy5lbmQoKSk7CistICAgIG1FeHRl cm5hbFF1ZXVlcy5lcmFzZShpdCk7CistICAgIGlmIChxLnF1ZXVlICE9IG51bGxwdHIpCistICAg ICAgICB3bF9ldmVudF9xdWV1ZV9kZXN0cm95KHEucXVldWUpOworLSAgICBkZWxldGUgcS5tdXRl eDsKKysgICAgbV9ldmVudFRocmVhZC0+cmVhZEFuZERpc3BhdGNoRXZlbnRzKCk7CisgfQorIAor LVFXYXlsYW5kRGlzcGxheTo6RnJhbWVRdWV1ZSBRV2F5bGFuZERpc3BsYXk6OmNyZWF0ZUZyYW1l UXVldWUoKQorKy8vIFdlIGhhdmUgdG8gd2FpdCB1bnRpbCB3ZSBoYXZlIGFuIGV2ZW50RGlzcGF0 Y2hlciBiZWZvcmUgY3JlYXRpbmcgdGhlIGV2ZW50VGhyZWFkLAorKy8vIG90aGVyd2lzZSBmb3Jj ZVJvdW5kVHJpcCgpIG1heSBibG9jayBpbnNpZGUgX2V2ZW50c19yZWFkKCkgYmVjYXVzZSBldmVu dFRocmVhZCBpcworKy8vIHBvbGxpbmcuCisrdm9pZCBRV2F5bGFuZERpc3BsYXk6OmluaXRFdmVu dFRocmVhZCgpCisgeworLSAgICBRV3JpdGVMb2NrZXIgbG9ja2VyKCZtX2ZyYW1lUXVldWVMb2Nr KTsKKy0gICAgRnJhbWVRdWV1ZSBxe2NyZWF0ZUV2ZW50UXVldWUoKX07CistICAgIG1FeHRlcm5h bFF1ZXVlcy5hcHBlbmQocSk7CistICAgIHJldHVybiBxOworLX0KKysgICAgbV9ldmVudFRocmVh ZC5yZXNldCgKKysgICAgICAgICAgICBuZXcgRXZlbnRUaHJlYWQobURpc3BsYXksIC8qIGRlZmF1 bHQgcXVldWUgKi8gbnVsbHB0ciwgRXZlbnRUaHJlYWQ6OkVtaXRUb0Rpc3BhdGNoKSk7CisrICAg IGNvbm5lY3QobV9ldmVudFRocmVhZC5nZXQoKSwgJkV2ZW50VGhyZWFkOjpuZWVkUmVhZEFuZERp c3BhdGNoLCB0aGlzLAorKyAgICAgICAgICAgICZRV2F5bGFuZERpc3BsYXk6OmZsdXNoUmVxdWVz dHMsIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKysgICAgbV9ldmVudFRocmVhZC0+c3RhcnQoKTsK KyAKKy13bF9ldmVudF9xdWV1ZSAqUVdheWxhbmREaXNwbGF5OjpjcmVhdGVFdmVudFF1ZXVlKCkK Ky17CistICAgIHJldHVybiB3bF9kaXNwbGF5X2NyZWF0ZV9xdWV1ZShtRGlzcGxheSk7CisrICAg IC8vIHdsX2Rpc3BsYXlfZGlzY29ubmVjdCgpIGZyZWUgdGhpcy4KKysgICAgbV9mcmFtZUV2ZW50 UXVldWUgPSB3bF9kaXNwbGF5X2NyZWF0ZV9xdWV1ZShtRGlzcGxheSk7CisrICAgIG1fZnJhbWVF dmVudFF1ZXVlVGhyZWFkLnJlc2V0KAorKyAgICAgICAgICAgIG5ldyBFdmVudFRocmVhZChtRGlz cGxheSwgbV9mcmFtZUV2ZW50UXVldWUsIEV2ZW50VGhyZWFkOjpTZWxmRGlzcGF0Y2gpKTsKKysg ICAgbV9mcmFtZUV2ZW50UXVldWVUaHJlYWQtPnN0YXJ0KCk7CisgfQorIAorLXZvaWQgUVdheWxh bmREaXNwbGF5OjpkaXNwYXRjaFF1ZXVlV2hpbGUod2xfZXZlbnRfcXVldWUgKnF1ZXVlLCBzdGQ6 OmZ1bmN0aW9uPGJvb2wgKCk+IGNvbmRpdGlvbiwgaW50IHRpbWVvdXQpCisrdm9pZCBRV2F5bGFu ZERpc3BsYXk6OmJsb2NraW5nUmVhZEV2ZW50cygpCisgeworLSAgICBpZiAoIWNvbmRpdGlvbigp KQorLSAgICAgICAgcmV0dXJuOworLQorLSAgICBRRWxhcHNlZFRpbWVyIHRpbWVyOworLSAgICB0 aW1lci5zdGFydCgpOworLSAgICBzdHJ1Y3QgcG9sbGZkIHBGZCA9IHF0X21ha2VfcG9sbGZkKHds X2Rpc3BsYXlfZ2V0X2ZkKG1EaXNwbGF5KSwgUE9MTElOKTsKKy0gICAgd2hpbGUgKHRpbWVvdXQg PT0gLTEgfHwgdGltZXIuZWxhcHNlZCgpIDwgdGltZW91dCkgeworLSAgICAgICAgd2hpbGUgKHds X2Rpc3BsYXlfcHJlcGFyZV9yZWFkX3F1ZXVlKG1EaXNwbGF5LCBxdWV1ZSkgIT0gMCkKKy0gICAg ICAgICAgICB3bF9kaXNwbGF5X2Rpc3BhdGNoX3F1ZXVlX3BlbmRpbmcobURpc3BsYXksIHF1ZXVl KTsKKy0KKy0gICAgICAgIHdsX2Rpc3BsYXlfZmx1c2gobURpc3BsYXkpOworLQorLSAgICAgICAg Y29uc3QgaW50IHJlbWFpbmluZyA9IHFNYXgodGltZW91dCAtIHRpbWVyLmVsYXBzZWQoKSwgMGxs KTsKKy0gICAgICAgIGNvbnN0IGludCBwb2xsVGltZW91dCA9IHRpbWVvdXQgPT0gLTEgPyAtMSA6 IHJlbWFpbmluZzsKKy0gICAgICAgIGlmIChxdF9wb2xsX21zZWNzKCZwRmQsIDEsIHBvbGxUaW1l b3V0KSA+IDApCistICAgICAgICAgICAgd2xfZGlzcGxheV9yZWFkX2V2ZW50cyhtRGlzcGxheSk7 CistICAgICAgICBlbHNlCistICAgICAgICAgICAgd2xfZGlzcGxheV9jYW5jZWxfcmVhZChtRGlz cGxheSk7CistCistICAgICAgICBpZiAod2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5n KG1EaXNwbGF5LCBxdWV1ZSkgPCAwKQorLSAgICAgICAgICAgIGNoZWNrRXJyb3IoKTsKKy0KKy0g ICAgICAgIGlmICghY29uZGl0aW9uKCkpCistICAgICAgICAgICAgYnJlYWs7CistICAgIH0KKysg ICAgaWYgKHdsX2Rpc3BsYXlfZGlzcGF0Y2gobURpc3BsYXkpIDwgMCkKKysgICAgICAgIGNoZWNr V2F5bGFuZEVycm9yKG1EaXNwbGF5KTsKKyB9CisgCisgUVdheWxhbmRTY3JlZW4gKlFXYXlsYW5k RGlzcGxheTo6c2NyZWVuRm9yT3V0cHV0KHN0cnVjdCB3bF9vdXRwdXQgKm91dHB1dCkgY29uc3QK K0BAIC0zNDUsNyArNDkxLDcgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlZ2lzdHJ5X2dsb2Jh bCh1aW50MzJfdCBpZCwgY29uc3QgUVN0cmluZyAmaW50ZXJmYWNlLCB1aW4KKyAgICAgaWYgKGlu dGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgid2xfb3V0cHV0IikpIHsKKyAgICAgICAgIG1XYWl0 aW5nU2NyZWVucyA8PCBuZXcgUVdheWxhbmRTY3JlZW4odGhpcywgdmVyc2lvbiwgaWQpOworICAg ICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgid2xfY29tcG9zaXRvciIp KSB7CistICAgICAgICBtQ29tcG9zaXRvclZlcnNpb24gPSBxTWluKChpbnQpdmVyc2lvbiwgMyk7 CisrICAgICAgICBtQ29tcG9zaXRvclZlcnNpb24gPSBxTWluKChpbnQpdmVyc2lvbiwgNCk7Cisg ICAgICAgICBtQ29tcG9zaXRvci5pbml0KHJlZ2lzdHJ5LCBpZCwgbUNvbXBvc2l0b3JWZXJzaW9u KTsKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoIndsX3NobSIp KSB7CisgICAgICAgICBtU2htLnJlc2V0KG5ldyBRV2F5bGFuZFNobSh0aGlzLCB2ZXJzaW9uLCBp ZCkpOworQEAgLTM1NCw3ICs1MDAsNyBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6cmVnaXN0cnlf Z2xvYmFsKHVpbnQzMl90IGlkLCBjb25zdCBRU3RyaW5nICZpbnRlcmZhY2UsIHVpbgorICAgICAg ICAgbUlucHV0RGV2aWNlcy5hcHBlbmQoaW5wdXREZXZpY2UpOworICNpZiBRVF9DT05GSUcod2F5 bGFuZF9kYXRhZGV2aWNlKQorICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0 ZXJhbCgid2xfZGF0YV9kZXZpY2VfbWFuYWdlciIpKSB7CistICAgICAgICBtRG5kU2VsZWN0aW9u SGFuZGxlci5yZXNldChuZXcgUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcih0aGlzLCBpZCkpOwor KyAgICAgICAgbURuZFNlbGVjdGlvbkhhbmRsZXIucmVzZXQobmV3IFFXYXlsYW5kRGF0YURldmlj ZU1hbmFnZXIodGhpcywgdmVyc2lvbiwgaWQpKTsKKyAjZW5kaWYKKyAgICAgfSBlbHNlIGlmIChp bnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoInF0X3N1cmZhY2VfZXh0ZW5zaW9uIikpIHsKKyAg ICAgICAgIG1XaW5kb3dFeHRlbnNpb24ucmVzZXQobmV3IFF0V2F5bGFuZDo6cXRfc3VyZmFjZV9l eHRlbnNpb24ocmVnaXN0cnksIGlkLCAxKSk7CitAQCAtMzY5LDYgKzUxNSw4IEBAIHZvaWQgUVdh eWxhbmREaXNwbGF5OjpyZWdpc3RyeV9nbG9iYWwodWludDMyX3QgaWQsIGNvbnN0IFFTdHJpbmcg JmludGVyZmFjZSwgdWluCisgI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5X3Nl bGVjdGlvbikKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoInp3 cF9wcmltYXJ5X3NlbGVjdGlvbl9kZXZpY2VfbWFuYWdlcl92MSIpKSB7CisgICAgICAgICBtUHJp bWFyeVNlbGVjdGlvbk1hbmFnZXIucmVzZXQobmV3IFFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRl dmljZU1hbmFnZXJWMSh0aGlzLCBpZCwgMSkpOworKyAgICAgICAgZm9yIChRV2F5bGFuZElucHV0 RGV2aWNlICppbnB1dERldmljZSA6IHFBc0NvbnN0KG1JbnB1dERldmljZXMpKQorKyAgICAgICAg ICAgIGlucHV0RGV2aWNlLT5zZXRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlKG1QcmltYXJ5U2VsZWN0 aW9uTWFuYWdlci0+Y3JlYXRlRGV2aWNlKGlucHV0RGV2aWNlKSk7CisgI2VuZGlmCisgICAgIH0g ZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ6d3BfdGV4dF9pbnB1dF9tYW5h Z2VyX3YyIikgJiYgIW1DbGllbnRTaWRlSW5wdXRDb250ZXh0UmVxdWVzdGVkKSB7CisgICAgICAg ICBtVGV4dElucHV0TWFuYWdlci5yZXNldChuZXcgUXRXYXlsYW5kOjp6d3BfdGV4dF9pbnB1dF9t YW5hZ2VyX3YyKHJlZ2lzdHJ5LCBpZCwgMSkpOworQEAgLTQyNyw2ICs1NzUsMTMgQEAgdm9pZCBR V2F5bGFuZERpc3BsYXk6OnJlZ2lzdHJ5X2dsb2JhbF9yZW1vdmUodWludDMyX3QgaWQpCisgICAg ICAgICAgICAgICAgICAgICBpbnB1dERldmljZS0+c2V0VGV4dElucHV0KG51bGxwdHIpOworICAg ICAgICAgICAgICAgICBtV2F5bGFuZEludGVncmF0aW9uLT5yZWNvbmZpZ3VyZUlucHV0Q29udGV4 dCgpOworICAgICAgICAgICAgIH0KKysjaWYgUVRfQ09ORklHKHdheWxhbmRfY2xpZW50X3ByaW1h cnlfc2VsZWN0aW9uKQorKyAgICAgICAgICAgIGlmIChnbG9iYWwuaW50ZXJmYWNlID09IFFTdHJp bmdMaXRlcmFsKCJ6d3BfcHJpbWFyeV9zZWxlY3Rpb25fZGV2aWNlX21hbmFnZXJfdjEiKSkgewor KyAgICAgICAgICAgICAgICBtUHJpbWFyeVNlbGVjdGlvbk1hbmFnZXIucmVzZXQoKTsKKysgICAg ICAgICAgICAgICAgZm9yIChRV2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmljZSA6IHFBc0Nv bnN0KG1JbnB1dERldmljZXMpKQorKyAgICAgICAgICAgICAgICAgICAgaW5wdXREZXZpY2UtPnNl dFByaW1hcnlTZWxlY3Rpb25EZXZpY2UobnVsbHB0cik7CisrICAgICAgICAgICAgfQorKyNlbmRp ZgorICAgICAgICAgICAgIG1HbG9iYWxzLnJlbW92ZUF0KGkpOworICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgfQorQEAgLTQ1Miw5ICs2MDcsMTAgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6 OmFkZFJlZ2lzdHJ5TGlzdGVuZXIoUmVnaXN0cnlMaXN0ZW5lciBsaXN0ZW5lciwgdm9pZCAqZGF0 YSkKKyAKKyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6cmVtb3ZlTGlzdGVuZXIoUmVnaXN0cnlMaXN0 ZW5lciBsaXN0ZW5lciwgdm9pZCAqZGF0YSkKKyB7CistICAgIHN0ZDo6cmVtb3ZlX2lmKG1SZWdp c3RyeUxpc3RlbmVycy5iZWdpbigpLCBtUmVnaXN0cnlMaXN0ZW5lcnMuZW5kKCksIFs9XShMaXN0 ZW5lciBsKXsKKysgICAgYXV0byBpdGVyID0gc3RkOjpyZW1vdmVfaWYobVJlZ2lzdHJ5TGlzdGVu ZXJzLmJlZ2luKCksIG1SZWdpc3RyeUxpc3RlbmVycy5lbmQoKSwgWz1dKExpc3RlbmVyIGwpewor ICAgICAgICAgcmV0dXJuIChsLmxpc3RlbmVyID09IGxpc3RlbmVyICYmIGwuZGF0YSA9PSBkYXRh KTsKKyAgICAgfSk7CisrICAgIG1SZWdpc3RyeUxpc3RlbmVycy5lcmFzZShpdGVyLCBtUmVnaXN0 cnlMaXN0ZW5lcnMuZW5kKCkpOworIH0KKyAKKyB1aW50MzJfdCBRV2F5bGFuZERpc3BsYXk6OmN1 cnJlbnRUaW1lTWlsbGlzZWMoKQorQEAgLTQ2Nyw1MCArNjIzLDkgQEAgdWludDMyX3QgUVdheWxh bmREaXNwbGF5OjpjdXJyZW50VGltZU1pbGxpc2VjKCkKKyAgICAgcmV0dXJuIDA7CisgfQorIAor LXN0YXRpYyB2b2lkCistc3luY19jYWxsYmFjayh2b2lkICpkYXRhLCBzdHJ1Y3Qgd2xfY2FsbGJh Y2sgKmNhbGxiYWNrLCB1aW50MzJfdCBzZXJpYWwpCisteworLSAgICBRX1VOVVNFRChzZXJpYWwp CistICAgIGJvb2wgKmRvbmUgPSBzdGF0aWNfY2FzdDxib29sICo+KGRhdGEpOworLQorLSAgICAq ZG9uZSA9IHRydWU7CistCistICAgIC8vIElmIHRoZSB3bF9jYWxsYmFjayBkb25lIGV2ZW50IGlz IHJlY2VpdmVkIGFmdGVyIHRoZSBjb25kaXRpb24gY2hlY2sgaW4gdGhlIHdoaWxlIGxvb3AgaW4K Ky0gICAgLy8gZm9yY2VSb3VuZFRyaXAoKSwgYnV0IGJlZm9yZSB0aGUgY2FsbCB0byBwcm9jZXNz RXZlbnRzLCB0aGUgY2FsbCB0byBwcm9jZXNzRXZlbnRzIG1heSBibG9jaworLSAgICAvLyBmb3Jl dmVyIGlmIG5vIG1vcmUgZXZlbnRzIGFyZSBwb3N0ZWQgKGV2ZW50aG91Z2ggdGhlIGNhbGxiYWNr IGlzIGhhbmRsZWQgaW4gcmVzcG9uc2UgdG8gdGhlCistICAgIC8vIGFib3V0VG9CbG9jayBzaWdu YWwpLiBIZW5jZSwgd2Ugd2FrZSB1cCB0aGUgZXZlbnQgZGlzcGF0Y2hlciBzbyBmb3JjZVJvdW5k VHJpcCBtYXkgcmV0dXJuLgorLSAgICAvLyAoUVRCVUctNjQ2OTYpCistICAgIGlmIChhdXRvICpk aXNwYXRjaGVyID0gUVRocmVhZDo6Y3VycmVudFRocmVhZCgpLT5ldmVudERpc3BhdGNoZXIoKSkK Ky0gICAgICAgIGRpc3BhdGNoZXItPndha2VVcCgpOworLQorLSAgICB3bF9jYWxsYmFja19kZXN0 cm95KGNhbGxiYWNrKTsKKy19CistCistc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9jYWxsYmFja19s aXN0ZW5lciBzeW5jX2xpc3RlbmVyID0geworLSAgICBzeW5jX2NhbGxiYWNrCistfTsKKy0KKyB2 b2lkIFFXYXlsYW5kRGlzcGxheTo6Zm9yY2VSb3VuZFRyaXAoKQorIHsKKy0gICAgLy8gd2xfZGlz cGxheV9yb3VuZHRyaXAoKSB3b3JrcyBvbiB0aGUgbWFpbiBxdWV1ZSBvbmx5LAorLSAgICAvLyBi dXQgd2UgdXNlIGEgc2VwYXJhdGUgb25lLCBzbyBiYXNpY2FsbHkgcmVpbXBsZW1lbnQgaXQgaGVy ZQorLSAgICBpbnQgcmV0ID0gMDsKKy0gICAgYm9vbCBkb25lID0gZmFsc2U7CistICAgIHdsX2Nh bGxiYWNrICpjYWxsYmFjayA9IHdsX2Rpc3BsYXlfc3luYyhtRGlzcGxheSk7CistICAgIHdsX2Nh bGxiYWNrX2FkZF9saXN0ZW5lcihjYWxsYmFjaywgJnN5bmNfbGlzdGVuZXIsICZkb25lKTsKKy0g ICAgZmx1c2hSZXF1ZXN0cygpOworLSAgICBpZiAoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpLT5l dmVudERpc3BhdGNoZXIoKSkgeworLSAgICAgICAgd2hpbGUgKCFkb25lICYmIHJldCA+PSAwKSB7 CistICAgICAgICAgICAgUVRocmVhZDo6Y3VycmVudFRocmVhZCgpLT5ldmVudERpc3BhdGNoZXIo KS0+cHJvY2Vzc0V2ZW50cyhRRXZlbnRMb29wOjpXYWl0Rm9yTW9yZUV2ZW50cyk7CistICAgICAg ICAgICAgcmV0ID0gd2xfZGlzcGxheV9kaXNwYXRjaF9wZW5kaW5nKG1EaXNwbGF5KTsKKy0gICAg ICAgIH0KKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIHdoaWxlICghZG9uZSAmJiByZXQgPj0gMCkK Ky0gICAgICAgICAgICByZXQgPSB3bF9kaXNwbGF5X2Rpc3BhdGNoKG1EaXNwbGF5KTsKKy0gICAg fQorLQorLSAgICBpZiAocmV0ID09IC0xICYmICFkb25lKQorLSAgICAgICAgd2xfY2FsbGJhY2tf ZGVzdHJveShjYWxsYmFjayk7CisrICAgICB3bF9kaXNwbGF5X3JvdW5kdHJpcChtRGlzcGxheSk7 CisgfQorIAorIGJvb2wgUVdheWxhbmREaXNwbGF5OjpzdXBwb3J0c1dpbmRvd0RlY29yYXRpb24o KSBjb25zdAorQEAgLTU3NCwxNCArNjg5LDEwIEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpoYW5k bGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmljCisg ICAgIGlmIChtTGFzdEtleWJvYXJkRm9jdXMgPT0ga2V5Ym9hcmRGb2N1cykKKyAgICAgICAgIHJl dHVybjsKKyAKKy0gICAgaWYgKG1XYXlsYW5kSW50ZWdyYXRpb24tPm1TaGVsbEludGVncmF0aW9u KSB7CistICAgICAgICBtV2F5bGFuZEludGVncmF0aW9uLT5tU2hlbGxJbnRlZ3JhdGlvbi0+aGFu ZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoa2V5Ym9hcmRGb2N1cywgbUxhc3RLZXlib2FyZEZvY3Vz KTsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIGlmIChrZXlib2FyZEZvY3VzKQorLSAgICAgICAg ICAgIGhhbmRsZVdpbmRvd0FjdGl2YXRlZChrZXlib2FyZEZvY3VzKTsKKy0gICAgICAgIGlmICht TGFzdEtleWJvYXJkRm9jdXMpCistICAgICAgICAgICAgaGFuZGxlV2luZG93RGVhY3RpdmF0ZWQo bUxhc3RLZXlib2FyZEZvY3VzKTsKKy0gICAgfQorKyAgICBpZiAoa2V5Ym9hcmRGb2N1cykKKysg ICAgICAgIGhhbmRsZVdpbmRvd0FjdGl2YXRlZChrZXlib2FyZEZvY3VzKTsKKysgICAgaWYgKG1M YXN0S2V5Ym9hcmRGb2N1cykKKysgICAgICAgIGhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG1MYXN0 S2V5Ym9hcmRGb2N1cyk7CisgCisgICAgIG1MYXN0S2V5Ym9hcmRGb2N1cyA9IGtleWJvYXJkRm9j dXM7CisgfQorQEAgLTYwMCw2ICs3MTEsMTkgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmhhbmRs ZVdheWxhbmRTeW5jKCkKKyAgICAgUVdpbmRvdyAqYWN0aXZlV2luZG93ID0gbUFjdGl2ZVdpbmRv d3MuZW1wdHkoKSA/IG51bGxwdHIgOiBtQWN0aXZlV2luZG93cy5sYXN0KCktPndpbmRvdygpOwor ICAgICBpZiAoYWN0aXZlV2luZG93ICE9IFFHdWlBcHBsaWNhdGlvbjo6Zm9jdXNXaW5kb3coKSkK KyAgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVdpbmRvd0FjdGl2YXRlZChh Y3RpdmVXaW5kb3cpOworKworKyAgICBpZiAoIWFjdGl2ZVdpbmRvdykgeworKyAgICAgICAgaWYg KGxhc3RJbnB1dERldmljZSgpKSB7CisrI2lmIFFUX0NPTkZJRyhjbGlwYm9hcmQpCisrICAgICAg ICAgICAgaWYgKGF1dG8gKmRhdGFEZXZpY2UgPSBsYXN0SW5wdXREZXZpY2UoKS0+ZGF0YURldmlj ZSgpKQorKyAgICAgICAgICAgICAgICBkYXRhRGV2aWNlLT5pbnZhbGlkYXRlU2VsZWN0aW9uT2Zm ZXIoKTsKKysjZW5kaWYKKysjaWYgUVRfQ09ORklHKHdheWxhbmRfY2xpZW50X3ByaW1hcnlfc2Vs ZWN0aW9uKQorKyAgICAgICAgICAgIGlmIChhdXRvICpkZXZpY2UgPSBsYXN0SW5wdXREZXZpY2Uo KS0+cHJpbWFyeVNlbGVjdGlvbkRldmljZSgpKQorKyAgICAgICAgICAgICAgICBkZXZpY2UtPmlu dmFsaWRhdGVTZWxlY3Rpb25PZmZlcigpOworKyNlbmRpZgorKyAgICAgICAgfQorKyAgICB9Cisg fQorIAorIGNvbnN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIFFXYXlsYW5kRGlzcGxheTo6c3luY0Nh bGxiYWNrTGlzdGVuZXIgPSB7CitAQCAtNjI2LDYgKzc1MCwxMyBAQCBRV2F5bGFuZElucHV0RGV2 aWNlICpRV2F5bGFuZERpc3BsYXk6OmRlZmF1bHRJbnB1dERldmljZSgpIGNvbnN0CisgICAgIHJl dHVybiBtSW5wdXREZXZpY2VzLmlzRW1wdHkoKSA/IDAgOiBtSW5wdXREZXZpY2VzLmZpcnN0KCk7 CisgfQorIAorK2Jvb2wgUVdheWxhbmREaXNwbGF5Ojppc0tleWJvYXJkQXZhaWxhYmxlKCkgY29u c3QKKyt7CisrICAgIHJldHVybiBzdGQ6OmFueV9vZigKKysgICAgICAgICAgICBtSW5wdXREZXZp Y2VzLmNvbnN0QmVnaW4oKSwgbUlucHV0RGV2aWNlcy5jb25zdEVuZCgpLAorKyAgICAgICAgICAg IFt0aGlzXShjb25zdCBRV2F5bGFuZElucHV0RGV2aWNlICpkZXZpY2UpIHsgcmV0dXJuIGRldmlj ZS0+a2V5Ym9hcmQoKSAhPSBudWxscHRyOyB9KTsKKyt9CisrCisgI2lmIFFUX0NPTkZJRyhjdXJz b3IpCisgCisgUVdheWxhbmRDdXJzb3IgKlFXYXlsYW5kRGlzcGxheTo6d2F5bGFuZEN1cnNvcigp CitAQCAtNjUyLDQgKzc4Myw2IEBAIFFXYXlsYW5kQ3Vyc29yVGhlbWUgKlFXYXlsYW5kRGlzcGxh eTo6bG9hZEN1cnNvclRoZW1lKGNvbnN0IFFTdHJpbmcgJm5hbWUsIGludCBwCisgCisgfSAvLyBu YW1lc3BhY2UgUXRXYXlsYW5kQ2xpZW50CisgCisrI2luY2x1ZGUgInF3YXlsYW5kZGlzcGxheS5t b2MiCisrCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kZGlzcGxheV9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRp c3BsYXlfcC5oCitpbmRleCAzYjA5MmJjOC4uNDJiYzY2MWQgMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXlfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGRpc3BsYXlfcC5oCitAQCAtMTA5LDYgKzEwOSw3IEBAIGNsYXNzIFFXYXls YW5kU3VyZmFjZTsKKyBjbGFzcyBRV2F5bGFuZFNoZWxsSW50ZWdyYXRpb247CisgY2xhc3MgUVdh eWxhbmRDdXJzb3I7CisgY2xhc3MgUVdheWxhbmRDdXJzb3JUaGVtZTsKKytjbGFzcyBFdmVudFRo cmVhZDsKKyAKKyB0eXBlZGVmIHZvaWQgKCpSZWdpc3RyeUxpc3RlbmVyKSh2b2lkICpkYXRhLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB3bF9yZWdpc3RyeSAqcmVn aXN0cnksCitAQCAtMTIwLDE1ICsxMjEsMTEgQEAgY2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9FWFBP UlQgUVdheWxhbmREaXNwbGF5IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBRdFdheWxhbmQKKyAg ICAgUV9PQkpFQ1QKKyAKKyBwdWJsaWM6CistICAgIHN0cnVjdCBGcmFtZVF1ZXVlIHsKKy0gICAg ICAgIEZyYW1lUXVldWUod2xfZXZlbnRfcXVldWUgKnEgPSBudWxscHRyKSA6IHF1ZXVlKHEpLCBt dXRleChuZXcgUU11dGV4KSB7fQorLSAgICAgICAgd2xfZXZlbnRfcXVldWUgKnF1ZXVlOworLSAg ICAgICAgUU11dGV4ICptdXRleDsKKy0gICAgfTsKKy0KKyAgICAgUVdheWxhbmREaXNwbGF5KFFX YXlsYW5kSW50ZWdyYXRpb24gKndheWxhbmRJbnRlZ3JhdGlvbik7CisgICAgIH5RV2F5bGFuZERp c3BsYXkodm9pZCkgb3ZlcnJpZGU7CisgCisrICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworKworICNp ZiBRVF9DT05GSUcoeGtiY29tbW9uKQorICAgICBzdHJ1Y3QgeGtiX2NvbnRleHQgKnhrYkNvbnRl eHQoKSBjb25zdCB7IHJldHVybiBtWGtiQ29udGV4dC5nZXQoKTsgfQorICNlbmRpZgorQEAgLTIx MCwxMSArMjA3LDExIEBAIHB1YmxpYzoKKyAgICAgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hh bmdlZChRV2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmljZSk7CisgICAgIHZvaWQgaGFuZGxl V2luZG93RGVzdHJveWVkKFFXYXlsYW5kV2luZG93ICp3aW5kb3cpOworIAorLSAgICB3bF9ldmVu dF9xdWV1ZSAqY3JlYXRlRXZlbnRRdWV1ZSgpOworLSAgICBGcmFtZVF1ZXVlIGNyZWF0ZUZyYW1l UXVldWUoKTsKKy0gICAgdm9pZCBkZXN0cm95RnJhbWVRdWV1ZShjb25zdCBGcmFtZVF1ZXVlICZx KTsKKy0gICAgdm9pZCBkaXNwYXRjaFF1ZXVlV2hpbGUod2xfZXZlbnRfcXVldWUgKnF1ZXVlLCBz dGQ6OmZ1bmN0aW9uPGJvb2woKT4gY29uZGl0aW9uLCBpbnQgdGltZW91dCA9IC0xKTsKKysgICAg d2xfZXZlbnRfcXVldWUgKmZyYW1lRXZlbnRRdWV1ZSgpIHsgcmV0dXJuIG1fZnJhbWVFdmVudFF1 ZXVlOyB9OworKworKyAgICBib29sIGlzS2V5Ym9hcmRBdmFpbGFibGUoKSBjb25zdDsKKyAKKysg ICAgdm9pZCBpbml0RXZlbnRUaHJlYWQoKTsKKyBwdWJsaWMgc2xvdHM6CisgICAgIHZvaWQgYmxv Y2tpbmdSZWFkRXZlbnRzKCk7CisgICAgIHZvaWQgZmx1c2hSZXF1ZXN0cygpOworQEAgLTIzNyw2 ICsyMzQsOSBAQCBwcml2YXRlOgorICAgICB9OworIAorICAgICBzdHJ1Y3Qgd2xfZGlzcGxheSAq bURpc3BsYXkgPSBudWxscHRyOworKyAgICBRU2NvcGVkUG9pbnRlcjxFdmVudFRocmVhZD4gbV9l dmVudFRocmVhZDsKKysgICAgd2xfZXZlbnRfcXVldWUgKm1fZnJhbWVFdmVudFF1ZXVlID0gbnVs bHB0cjsKKysgICAgUVNjb3BlZFBvaW50ZXI8RXZlbnRUaHJlYWQ+IG1fZnJhbWVFdmVudFF1ZXVl VGhyZWFkOworICAgICBRdFdheWxhbmQ6OndsX2NvbXBvc2l0b3IgbUNvbXBvc2l0b3I7CisgICAg IFFTY29wZWRQb2ludGVyPFFXYXlsYW5kU2htPiBtU2htOworICAgICBRTGlzdDxRV2F5bGFuZFNj cmVlbiAqPiBtV2FpdGluZ1NjcmVlbnM7CitAQCAtMjczLDExICsyNzMsOSBAQCBwcml2YXRlOgor ICAgICBRV2F5bGFuZElucHV0RGV2aWNlICptTGFzdElucHV0RGV2aWNlID0gbnVsbHB0cjsKKyAg ICAgUVBvaW50ZXI8UVdheWxhbmRXaW5kb3c+IG1MYXN0SW5wdXRXaW5kb3c7CisgICAgIFFQb2lu dGVyPFFXYXlsYW5kV2luZG93PiBtTGFzdEtleWJvYXJkRm9jdXM7CistICAgIFFWZWN0b3I8UVdh eWxhbmRXaW5kb3cgKj4gbUFjdGl2ZVdpbmRvd3M7CistICAgIFFWZWN0b3I8RnJhbWVRdWV1ZT4g bUV4dGVybmFsUXVldWVzOworKyAgICBRTGlzdDxRV2F5bGFuZFdpbmRvdyAqPiBtQWN0aXZlV2lu ZG93czsKKyAgICAgc3RydWN0IHdsX2NhbGxiYWNrICptU3luY0NhbGxiYWNrID0gbnVsbHB0cjsK KyAgICAgc3RhdGljIGNvbnN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIHN5bmNDYWxsYmFja0xpc3Rl bmVyOworLSAgICBRUmVhZFdyaXRlTG9jayBtX2ZyYW1lUXVldWVMb2NrOworIAorICAgICBib29s IG1DbGllbnRTaWRlSW5wdXRDb250ZXh0UmVxdWVzdGVkID0gIVFQbGF0Zm9ybUlucHV0Q29udGV4 dEZhY3Rvcnk6OnJlcXVlc3RlZCgpLmlzTnVsbCgpOworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZG5kLmNwcAoraW5kZXggNjUzNWFhMTYuLjdjNTNmNWZhIDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmQuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRuZC5jcHAKK0BAIC02Niw3ICs2Niw3IEBAIHZvaWQgUVdheWxhbmREcmFnOjpz dGFydERyYWcoKQorIHsKKyAgICAgUUJhc2ljRHJhZzo6c3RhcnREcmFnKCk7CisgICAgIFFXYXls YW5kV2luZG93ICppY29uID0gc3RhdGljX2Nhc3Q8UVdheWxhbmRXaW5kb3cgKj4oc2hhcGVkUGl4 bWFwV2luZG93KCktPmhhbmRsZSgpKTsKKy0gICAgaWYgKG1fZGlzcGxheS0+Y3VycmVudElucHV0 RGV2aWNlKCktPmRhdGFEZXZpY2UoKS0+c3RhcnREcmFnKGRyYWcoKS0+bWltZURhdGEoKSwgaWNv bikpIHsKKysgICAgaWYgKG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPmRhdGFEZXZp Y2UoKS0+c3RhcnREcmFnKGRyYWcoKS0+bWltZURhdGEoKSwgZHJhZygpLT5zdXBwb3J0ZWRBY3Rp b25zKCksIGljb24pKSB7CisgICAgICAgICBpY29uLT5hZGRBdHRhY2hPZmZzZXQoLWRyYWcoKS0+ aG90U3BvdCgpKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIC8vIENhbmNlbGxpbmcgaW1tZWRp YXRlbHkgZG9lcyBub3Qgd29yaywgc2luY2UgdGhlIGV2ZW50IGxvb3AgZm9yIFFEcmFnOjpleGVj IGlzIHN0YXJ0ZWQKK0BAIC04MCw2ICs4MCw5IEBAIHZvaWQgUVdheWxhbmREcmFnOjpjYW5jZWwo KQorICAgICBRQmFzaWNEcmFnOjpjYW5jZWwoKTsKKyAKKyAgICAgbV9kaXNwbGF5LT5jdXJyZW50 SW5wdXREZXZpY2UoKS0+ZGF0YURldmljZSgpLT5jYW5jZWxEcmFnKCk7CisrCisrICAgIGlmIChk cmFnKCkpCisrICAgICAgICBkcmFnKCktPmRlbGV0ZUxhdGVyKCk7CisgfQorIAorIHZvaWQgUVdh eWxhbmREcmFnOjptb3ZlKGNvbnN0IFFQb2ludCAmZ2xvYmFsUG9zLCBRdDo6TW91c2VCdXR0b25z IGIsIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RzKQorQEAgLTEwMywzMyArMTA2LDQxIEBAIHZv aWQgUVdheWxhbmREcmFnOjplbmREcmFnKCkKKyAgICAgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXRE ZXZpY2UoKS0+aGFuZGxlRW5kRHJhZygpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kRHJhZzo6dXBk YXRlVGFyZ2V0KGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlKQorK3ZvaWQgUVdheWxhbmREcmFnOjpz ZXRSZXNwb25zZShib29sIGFjY2VwdGVkKQorIHsKKy0gICAgc2V0Q2FuRHJvcCghbWltZVR5cGUu aXNFbXB0eSgpKTsKKy0KKy0gICAgaWYgKGNhbkRyb3AoKSkgeworLSAgICAgICAgdXBkYXRlQ3Vy c29yKGRlZmF1bHRBY3Rpb24oZHJhZygpLT5zdXBwb3J0ZWRBY3Rpb25zKCksIG1fZGlzcGxheS0+ Y3VycmVudElucHV0RGV2aWNlKCktPm1vZGlmaWVycygpKSk7CistICAgIH0gZWxzZSB7CistICAg ICAgICB1cGRhdGVDdXJzb3IoUXQ6Oklnbm9yZUFjdGlvbik7CistICAgIH0KKysgICAgLy8gVGhp cyBtZXRob2QgaXMgdXNlZCBmb3Igb2xkIERhdGFEZXZpY2VzIHdoZXJlIHRoZSBkcmFnIGFjdGlv biBpcyBub3QgY29tbXVuaWNhdGVkCisrICAgIFF0OjpEcm9wQWN0aW9uIGFjdGlvbiA9IGRlZmF1 bHRBY3Rpb24oZHJhZygpLT5zdXBwb3J0ZWRBY3Rpb25zKCksIG1fZGlzcGxheS0+Y3VycmVudElu cHV0RGV2aWNlKCktPm1vZGlmaWVycygpKTsKKysgICAgc2V0UmVzcG9uc2UoUVBsYXRmb3JtRHJv cFF0UmVzcG9uc2UoYWNjZXB0ZWQsIGFjdGlvbikpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kRHJh Zzo6c2V0UmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlKQor K3ZvaWQgUVdheWxhbmREcmFnOjpzZXRSZXNwb25zZShjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNw b25zZSAmcmVzcG9uc2UpCisgeworICAgICBzZXRDYW5Ecm9wKHJlc3BvbnNlLmlzQWNjZXB0ZWQo KSk7CisgCisgICAgIGlmIChjYW5Ecm9wKCkpIHsKKy0gICAgICAgIHVwZGF0ZUN1cnNvcihkZWZh dWx0QWN0aW9uKGRyYWcoKS0+c3VwcG9ydGVkQWN0aW9ucygpLCBtX2Rpc3BsYXktPmN1cnJlbnRJ bnB1dERldmljZSgpLT5tb2RpZmllcnMoKSkpOworKyAgICAgICAgdXBkYXRlQ3Vyc29yKHJlc3Bv bnNlLmFjY2VwdGVkQWN0aW9uKCkpOworICAgICB9IGVsc2UgeworICAgICAgICAgdXBkYXRlQ3Vy c29yKFF0OjpJZ25vcmVBY3Rpb24pOworICAgICB9CisgfQorIAorLXZvaWQgUVdheWxhbmREcmFn OjpmaW5pc2hEcmFnKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSkKKyt2 b2lkIFFXYXlsYW5kRHJhZzo6c2V0RHJvcFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJl c3BvbnNlICZyZXNwb25zZSkKKyB7CisgICAgIHNldEV4ZWN1dGVkRHJvcEFjdGlvbihyZXNwb25z ZS5hY2NlcHRlZEFjdGlvbigpKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZERyYWc6OmZpbmlzaERy YWcoKQorK3sKKyAgICAgUUtleUV2ZW50IGV2ZW50KFFFdmVudDo6S2V5UHJlc3MsIFF0OjpLZXlf RXNjYXBlLCBRdDo6Tm9Nb2RpZmllcik7CisgICAgIGV2ZW50RmlsdGVyKHNoYXBlZFBpeG1hcFdp bmRvdygpLCAmZXZlbnQpOworKworKyAgICBpZiAoZHJhZygpKQorKyAgICAgICAgZHJhZygpLT5k ZWxldGVMYXRlcigpOworK30KKysKKytib29sIFFXYXlsYW5kRHJhZzo6b3duc0RyYWdPYmplY3Qo KSBjb25zdAorK3sKKysgICAgcmV0dXJuIHRydWU7CisgfQorIAorIH0KK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZF9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRuZF9wLmgKK2luZGV4IDQ3NGZlMmFiLi40NmY2MjlhYyAxMDA2NDQKKy0tLSBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kX3AuaAorKysrIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRkbmRfcC5oCitAQCAtNzEsOSArNzEsMTAgQEAgcHVibGljOgorICAg ICBRV2F5bGFuZERyYWcoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KTsKKyAgICAgflFXYXlsYW5k RHJhZygpIG92ZXJyaWRlOworIAorLSAgICB2b2lkIHVwZGF0ZVRhcmdldChjb25zdCBRU3RyaW5n ICZtaW1lVHlwZSk7CistICAgIHZvaWQgc2V0UmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJhZ1F0 UmVzcG9uc2UgJnJlc3BvbnNlKTsKKy0gICAgdm9pZCBmaW5pc2hEcmFnKGNvbnN0IFFQbGF0Zm9y bURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSk7CisrICAgIHZvaWQgc2V0UmVzcG9uc2UoYm9vbCBh Y2NlcHRlZCk7CisrICAgIHZvaWQgc2V0UmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVz cG9uc2UgJnJlc3BvbnNlKTsKKysgICAgdm9pZCBzZXREcm9wUmVzcG9uc2UoY29uc3QgUVBsYXRm b3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKTsKKysgICAgdm9pZCBmaW5pc2hEcmFnKCk7Cisg CisgcHJvdGVjdGVkOgorICAgICB2b2lkIHN0YXJ0RHJhZygpIG92ZXJyaWRlOworQEAgLTgyLDYg KzgzLDcgQEAgcHJvdGVjdGVkOgorICAgICB2b2lkIGRyb3AoY29uc3QgUVBvaW50ICZnbG9iYWxQ b3MsIFF0OjpNb3VzZUJ1dHRvbnMgYiwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZHMpIG92ZXJy aWRlOworICAgICB2b2lkIGVuZERyYWcoKSBvdmVycmlkZTsKKyAKKysgICAgYm9vbCBvd25zRHJh Z09iamVjdCgpIGNvbnN0IG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFXYXlsYW5kRGlz cGxheSAqbV9kaXNwbGF5ID0gbnVsbHB0cjsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGlucHV0ZGV2aWNlLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kaW5wdXRkZXZpY2UuY3BwCitpbmRleCA2MTNmZTg2Mi4uNGI5MGRlODQgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGlucHV0ZGV2aWNlLmNwcAorKysrIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnB1dGRldmljZS5jcHAKK0BAIC02ODUsNiArNjg1 LDExIEBAIHB1YmxpYzoKKyAKKyB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OlBvaW50ZXI6OnBv aW50ZXJfbGVhdmUodWludDMyX3QgdGltZSwgc3RydWN0IHdsX3N1cmZhY2UgKnN1cmZhY2UpCisg eworKyAgICBpbnZhbGlkYXRlRm9jdXMoKTsKKysgICAgbUJ1dHRvbnMgPSBRdDo6Tm9CdXR0b247 CisrCisrICAgIG1QYXJlbnQtPm1UaW1lID0gdGltZTsKKysKKyAgICAgLy8gVGhlIGV2ZW50IG1h eSBhcnJpdmUgYWZ0ZXIgZGVzdHJveWluZyB0aGUgd2luZG93LCBpbmRpY2F0ZWQgYnkKKyAgICAg Ly8gYSBudWxsIHN1cmZhY2UuCisgICAgIGlmICghc3VyZmFjZSkKK0BAIC02OTYsMTEgKzcwMSw2 IEBAIHZvaWQgUVdheWxhbmRJbnB1dERldmljZTo6UG9pbnRlcjo6cG9pbnRlcl9sZWF2ZSh1aW50 MzJfdCB0aW1lLCBzdHJ1Y3Qgd2xfc3VyZmFjCisgCisgICAgIGlmICghUVdheWxhbmRXaW5kb3c6 Om1vdXNlR3JhYigpKQorICAgICAgICAgc2V0RnJhbWVFdmVudChuZXcgTGVhdmVFdmVudCh3aW5k b3csIG1TdXJmYWNlUG9zLCBtR2xvYmFsUG9zKSk7CistCistICAgIGludmFsaWRhdGVGb2N1cygp OworLSAgICBtQnV0dG9ucyA9IFF0OjpOb0J1dHRvbjsKKy0KKy0gICAgbVBhcmVudC0+bVRpbWUg PSB0aW1lOworIH0KKyAKKyBjbGFzcyBNb3Rpb25FdmVudCA6IHB1YmxpYyBRV2F5bGFuZFBvaW50 ZXJFdmVudAorQEAgLTEzMDAsMTQgKzEzMDAsNiBAQCB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6 OktleWJvYXJkOjpoYW5kbGVGb2N1c0Rlc3Ryb3llZCgpCisgdm9pZCBRV2F5bGFuZElucHV0RGV2 aWNlOjpLZXlib2FyZDo6aGFuZGxlRm9jdXNMb3N0KCkKKyB7CisgICAgIG1Gb2N1cyA9IG51bGxw dHI7CistI2lmIFFUX0NPTkZJRyhjbGlwYm9hcmQpCistICAgIGlmIChhdXRvICpkYXRhRGV2aWNl ID0gbVBhcmVudC0+ZGF0YURldmljZSgpKQorLSAgICAgICAgZGF0YURldmljZS0+aW52YWxpZGF0 ZVNlbGVjdGlvbk9mZmVyKCk7CistI2VuZGlmCistI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVu dF9wcmltYXJ5X3NlbGVjdGlvbikKKy0gICAgaWYgKGF1dG8gKmRldmljZSA9IG1QYXJlbnQtPnBy aW1hcnlTZWxlY3Rpb25EZXZpY2UoKSkKKy0gICAgICAgIGRldmljZS0+aW52YWxpZGF0ZVNlbGVj dGlvbk9mZmVyKCk7CistI2VuZGlmCisgICAgIG1QYXJlbnQtPm1RRGlzcGxheS0+aGFuZGxlS2V5 Ym9hcmRGb2N1c0NoYW5nZWQobVBhcmVudCk7CisgICAgIG1SZXBlYXRUaW1lci5zdG9wKCk7Cisg fQorQEAgLTEzOTYsNiArMTM4OCw3IEBAIHZvaWQgUVdheWxhbmRJbnB1dERldmljZTo6VG91Y2g6 OnRvdWNoX2NhbmNlbCgpCisgICAgIGlmICh0b3VjaEV4dCkKKyAgICAgICAgIHRvdWNoRXh0LT50 b3VjaENhbmNlbGVkKCk7CisgCisrICAgIG1Gb2N1cyA9IG51bGxwdHI7CisgICAgIFFXaW5kb3dT eXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVRvdWNoQ2FuY2VsRXZlbnQobnVsbHB0ciwgbVBhcmVudC0+ bVRvdWNoRGV2aWNlKTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRpbnRlZ3JhdGlvbi5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGlu dGVncmF0aW9uLmNwcAoraW5kZXggYzUzY2NiNzguLjU0ODYxNjAwIDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb24uY3BwCitAQCAtMTI1LDYgKzEyNSw5IEBA IFFXYXlsYW5kSW50ZWdyYXRpb246OlFXYXlsYW5kSW50ZWdyYXRpb24oKQorICNlbmRpZgorIAor ICAgICByZWNvbmZpZ3VyZUlucHV0Q29udGV4dCgpOworKworKyAgICBRV2F5bGFuZFdpbmRvdzo6 Zml4ZWRUb3BsZXZlbFBvc2l0aW9ucyA9CisrICAgICAgICAgICAgIXFFbnZpcm9ubWVudFZhcmlh YmxlSXNTZXQoIlFUX1dBWUxBTkRfRElTQUJMRV9GSVhFRF9QT1NJVElPTlMiKTsKKyB9CisgCisg UVdheWxhbmRJbnRlZ3JhdGlvbjo6flFXYXlsYW5kSW50ZWdyYXRpb24oKQorQEAgLTE5MiwxNCAr MTk1LDE4IEBAIFFBYnN0cmFjdEV2ZW50RGlzcGF0Y2hlciAqUVdheWxhbmRJbnRlZ3JhdGlvbjo6 Y3JlYXRlRXZlbnREaXNwYXRjaGVyKCkgY29uc3QKKyAKKyB2b2lkIFFXYXlsYW5kSW50ZWdyYXRp b246OmluaXRpYWxpemUoKQorIHsKKysgICAgbURpc3BsYXktPmluaXRFdmVudFRocmVhZCgpOwor KworKyAgICAvLyBDYWxsIGFmdGVyIGV2ZW50RGlzcGF0Y2hlciBpcyBmdWxseSBjb25uZWN0ZWQs IGZvciBRV2F5bGFuZERpc3BsYXk6OmZvcmNlUm91bmRUcmlwKCkKKysgICAgbURpc3BsYXktPmlu aXRpYWxpemUoKTsKKysKKysgICAgLy8gQnV0IHRoZSBhYm91dFRvQmxvY2soKSBhbmQgYXdha2Uo KSBzaG91bGQgYmUgY29ubmVjdGVkIGFmdGVyIGluaXRpYWxpemVQbGF0Zm9ybSgpLgorKyAgICAv LyBPdGhlcndpc2UgdGhlIGNvbm5lY3RlZCBmbHVzaFJlcXVlc3RzKCkgbWF5IGNvbnN1bWVzIHVw IGFsbCBldmVudHMgYmVmb3JlIHByb2Nlc3NFdmVudHMgc3RhcnRzIHRvIHdhaXQsCisrICAgIC8v IHNvIHRoYXQgcHJvY2Vzc0V2ZW50cyhRRXZlbnRMb29wOjpXYWl0Rm9yTW9yZUV2ZW50cykgbWF5 IGJlIGJsb2NrZWQgaW4gdGhlIGZvcmNlUm91bmRUcmlwKCkuCisgICAgIFFBYnN0cmFjdEV2ZW50 RGlzcGF0Y2hlciAqZGlzcGF0Y2hlciA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OmV2ZW50RGlz cGF0Y2hlcjsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChkaXNwYXRjaGVyLCBTSUdOQUwoYWJvdXRU b0Jsb2NrKCkpLCBtRGlzcGxheS5kYXRhKCksIFNMT1QoZmx1c2hSZXF1ZXN0cygpKSk7CisgICAg IFFPYmplY3Q6OmNvbm5lY3QoZGlzcGF0Y2hlciwgU0lHTkFMKGF3YWtlKCkpLCBtRGlzcGxheS5k YXRhKCksIFNMT1QoZmx1c2hSZXF1ZXN0cygpKSk7CisgCistICAgIGludCBmZCA9IHdsX2Rpc3Bs YXlfZ2V0X2ZkKG1EaXNwbGF5LT53bF9kaXNwbGF5KCkpOworLSAgICBRU29ja2V0Tm90aWZpZXIg KnNuID0gbmV3IFFTb2NrZXROb3RpZmllcihmZCwgUVNvY2tldE5vdGlmaWVyOjpSZWFkLCBtRGlz cGxheS5kYXRhKCkpOworLSAgICBRT2JqZWN0Ojpjb25uZWN0KHNuLCBTSUdOQUwoYWN0aXZhdGVk KFFTb2NrZXREZXNjcmlwdG9yKSksIG1EaXNwbGF5LmRhdGEoKSwgU0xPVChmbHVzaFJlcXVlc3Rz KCkpKTsKKy0KKyAgICAgLy8gUXQgZG9lcyBub3Qgc3VwcG9ydCBydW5uaW5nIHdpdGggbm8gc2Ny ZWVucworICAgICBtRGlzcGxheS0+ZW5zdXJlU2NyZWVuKCk7CisgfQorQEAgLTI2Miw2ICsyNjks MTQgQEAgUVdheWxhbmREaXNwbGF5ICpRV2F5bGFuZEludGVncmF0aW9uOjpkaXNwbGF5KCkgY29u c3QKKyAgICAgcmV0dXJuIG1EaXNwbGF5LmRhdGEoKTsKKyB9CisgCisrUXQ6OktleWJvYXJkTW9k aWZpZXJzIFFXYXlsYW5kSW50ZWdyYXRpb246OnF1ZXJ5S2V5Ym9hcmRNb2RpZmllcnMoKSBjb25z dAorK3sKKysgICAgaWYgKGF1dG8gKnNlYXQgPSBtRGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNl KCkpIHsKKysgICAgICAgIHJldHVybiBzZWF0LT5tb2RpZmllcnMoKTsKKysgICAgfQorKyAgICBy ZXR1cm4gUXQ6Ok5vTW9kaWZpZXI7CisrfQorKworIFFMaXN0PGludD4gUVdheWxhbmRJbnRlZ3Jh dGlvbjo6cG9zc2libGVLZXlzKGNvbnN0IFFLZXlFdmVudCAqZXZlbnQpIGNvbnN0CisgeworICAg ICBpZiAoYXV0byAqc2VhdCA9IG1EaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKSkKK0BAIC00 NzksNyArNDk0LDcgQEAgdm9pZCBRV2F5bGFuZEludGVncmF0aW9uOjpyZWNvbmZpZ3VyZUlucHV0 Q29udGV4dCgpCisgICAgIH0KKyAjZW5kaWYKKyAKKy0gICAgcUNEZWJ1ZyhsY1FwYVdheWxhbmQp IDw8ICJ1c2luZyBpbnB1dCBtZXRob2Q6IiA8PCBpbnB1dENvbnRleHQoKS0+bWV0YU9iamVjdCgp LT5jbGFzc05hbWUoKTsKKysgICAgcUNEZWJ1ZyhsY1FwYVdheWxhbmQpIDw8ICJ1c2luZyBpbnB1 dCBtZXRob2Q6IiA8PCAoaW5wdXRDb250ZXh0KCkgPyBpbnB1dENvbnRleHQoKS0+bWV0YU9iamVj dCgpLT5jbGFzc05hbWUoKSA6ICI8bm9uZT4iKTsKKyB9CisgCisgUVdheWxhbmRTaGVsbEludGVn cmF0aW9uICpRV2F5bGFuZEludGVncmF0aW9uOjpjcmVhdGVTaGVsbEludGVncmF0aW9uKGNvbnN0 IFFTdHJpbmcgJmludGVncmF0aW9uTmFtZSkKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGludGVncmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kaW50ZWdyYXRpb25fcC5oCitpbmRleCBmZjcwYWUyNS4uNzNiODA2NTggMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uX3AuaAorKysrIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbl9wLmgKK0BAIC0xMDcsNiArMTA3 LDggQEAgcHVibGljOgorIAorICAgICBRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkoKSBjb25zdDsK KyAKKysgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIHF1ZXJ5S2V5Ym9hcmRNb2RpZmllcnMoKSBj b25zdCBvdmVycmlkZTsKKysKKyAgICAgUUxpc3Q8aW50PiBwb3NzaWJsZUtleXMoY29uc3QgUUtl eUV2ZW50ICpldmVudCkgY29uc3Qgb3ZlcnJpZGU7CisgCisgICAgIFFTdHJpbmdMaXN0IHRoZW1l TmFtZXMoKSBjb25zdCBvdmVycmlkZTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZHByaW1hcnlzZWxlY3Rpb252MS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZHByaW1hcnlzZWxlY3Rpb252MS5jcHAKK2luZGV4IDgzMmY5Njc4Li5lYTUwODc3MSAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVjdGlv bnYxLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRwcmltYXJ5c2VsZWN0 aW9udjEuY3BwCitAQCAtNTQsMTEgKzU0LDYgQEAgUVdheWxhbmRQcmltYXJ5U2VsZWN0aW9uRGV2 aWNlTWFuYWdlclYxOjpRV2F5bGFuZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VNYW5hZ2VyVjEKKyAg ICAgOiB6d3BfcHJpbWFyeV9zZWxlY3Rpb25fZGV2aWNlX21hbmFnZXJfdjEoZGlzcGxheS0+d2xf cmVnaXN0cnkoKSwgaWQsIHFNaW4odmVyc2lvbiwgdWludCgxKSkpCisgICAgICwgbV9kaXNwbGF5 KGRpc3BsYXkpCisgeworLSAgICAvLyBDcmVhdGUgZGV2aWNlcyBmb3IgYWxsIHNlYXRzLgorLSAg ICAvLyBUaGlzIG9ubHkgd29ya3MgaWYgd2UgZ2V0IHRoZSBnbG9iYWwgYmVmb3JlIGFsbCBkZXZp Y2VzCistICAgIGNvbnN0IGF1dG8gc2VhdHMgPSBtX2Rpc3BsYXktPmlucHV0RGV2aWNlcygpOwor LSAgICBmb3IgKGF1dG8gKnNlYXQgOiBzZWF0cykKKy0gICAgICAgIHNlYXQtPnNldFByaW1hcnlT ZWxlY3Rpb25EZXZpY2UoY3JlYXRlRGV2aWNlKHNlYXQpKTsKKyB9CisgCisgUVdheWxhbmRQcmlt YXJ5U2VsZWN0aW9uRGV2aWNlVjEgKlFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRldmljZU1hbmFn ZXJWMTo6Y3JlYXRlRGV2aWNlKFFXYXlsYW5kSW5wdXREZXZpY2UgKnNlYXQpCitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW4uY3BwIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRzY3JlZW4uY3BwCitpbmRleCA2Y2IzMzdkZS4uNTUzN2RhZmQgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbi5jcHAKKysrKyBi L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuLmNwcAorQEAgLTYwLDcgKzYwLDcg QEAgUVdheWxhbmRYZGdPdXRwdXRNYW5hZ2VyVjE6OlFXYXlsYW5kWGRnT3V0cHV0TWFuYWdlclYx KFFXYXlsYW5kRGlzcGxheSogZGlzcGxheSwKKyB9CisgCisgUVdheWxhbmRTY3JlZW46OlFXYXls YW5kU2NyZWVuKFFXYXlsYW5kRGlzcGxheSAqd2F5bGFuZERpc3BsYXksIGludCB2ZXJzaW9uLCB1 aW50MzJfdCBpZCkKKy0gICAgOiBRdFdheWxhbmQ6OndsX291dHB1dCh3YXlsYW5kRGlzcGxheS0+ d2xfcmVnaXN0cnkoKSwgaWQsIHFNaW4odmVyc2lvbiwgMikpCisrICAgIDogUXRXYXlsYW5kOjp3 bF9vdXRwdXQod2F5bGFuZERpc3BsYXktPndsX3JlZ2lzdHJ5KCksIGlkLCBxTWluKHZlcnNpb24s IDMpKQorICAgICAsIG1fb3V0cHV0SWQoaWQpCisgICAgICwgbVdheWxhbmREaXNwbGF5KHdheWxh bmREaXNwbGF5KQorICAgICAsIG1PdXRwdXROYW1lKFFTdHJpbmdMaXRlcmFsKCJTY3JlZW4lMSIp LmFyZyhpZCkpCitAQCAtNzIsNyArNzIsNyBAQCBRV2F5bGFuZFNjcmVlbjo6UVdheWxhbmRTY3Jl ZW4oUVdheWxhbmREaXNwbGF5ICp3YXlsYW5kRGlzcGxheSwgaW50IHZlcnNpb24sIHVpbgorICAg ICAgICAgcUNXYXJuaW5nKGxjUXBhV2F5bGFuZCkgPDwgIndsX291dHB1dCBkb25lIGV2ZW50IG5v dCBzdXBwb3J0ZWQgYnkgY29tcG9zaXRvciwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8PCAiUVNjcmVlbiBtYXkgbm90IHdvcmsgY29ycmVjdGx5IjsKKyAgICAgICAgIG1XYXls YW5kRGlzcGxheS0+Zm9yY2VSb3VuZFRyaXAoKTsgLy8gR2l2ZSB0aGUgY29tcG9zaXRvciBhIGNo YW5jZSB0byBzZW5kIGdlb21ldHJ5IGV0Yy4KKy0gICAgICAgIG1PdXRwdXREb25lID0gdHJ1ZTsg Ly8gRmFrZSB0aGUgZG9uZSBldmVudAorKyAgICAgICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBPdXRw dXREb25lRXZlbnQ7IC8vIEZha2UgdGhlIGRvbmUgZXZlbnQKKyAgICAgICAgIG1heWJlSW5pdGlh bGl6ZSgpOworICAgICB9CisgfQorQEAgLTgxLDE2ICs4MSwyOSBAQCBRV2F5bGFuZFNjcmVlbjo6 flFXYXlsYW5kU2NyZWVuKCkKKyB7CisgICAgIGlmICh6eGRnX291dHB1dF92MTo6aXNJbml0aWFs aXplZCgpKQorICAgICAgICAgenhkZ19vdXRwdXRfdjE6OmRlc3Ryb3koKTsKKysgICAgaWYgKHds X291dHB1dDo6aXNJbml0aWFsaXplZCgpICYmIHdsX291dHB1dF9nZXRfdmVyc2lvbih3bF9vdXRw dXQ6Om9iamVjdCgpKSA+PSBXTF9PVVRQVVRfUkVMRUFTRV9TSU5DRV9WRVJTSU9OKQorKyAgICAg ICAgd2xfb3V0cHV0OjpyZWxlYXNlKCk7CisrfQorKworK3VpbnQgUVdheWxhbmRTY3JlZW46OnJl cXVpcmVkRXZlbnRzKCkgY29uc3QKKyt7CisrICAgIHVpbnQgcmV0ID0gT3V0cHV0RG9uZUV2ZW50 OworKworKyAgICBpZiAobVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCkpIHsKKysg ICAgICAgIHJldCB8PSBYZGdPdXRwdXROYW1lRXZlbnQ7CisrCisrICAgICAgICBpZiAobVdheWxh bmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCktPnZlcnNpb24oKSA8IDMpCisrICAgICAgICAg ICAgcmV0IHw9IFhkZ091dHB1dERvbmVFdmVudDsKKysgICAgfQorKyAgICByZXR1cm4gcmV0Owor IH0KKyAKKyB2b2lkIFFXYXlsYW5kU2NyZWVuOjptYXliZUluaXRpYWxpemUoKQorIHsKKyAgICAg UV9BU1NFUlQoIW1Jbml0aWFsaXplZCk7CisgCistICAgIGlmICghbU91dHB1dERvbmUpCistICAg ICAgICByZXR1cm47CistCistICAgIGlmIChtV2F5bGFuZERpc3BsYXktPnhkZ091dHB1dE1hbmFn ZXIoKSAmJiAhbVhkZ091dHB1dERvbmUpCisrICAgIGNvbnN0IHVpbnQgcmVxdWlyZWRFdmVudHMg PSB0aGlzLT5yZXF1aXJlZEV2ZW50cygpOworKyAgICBpZiAoKG1Qcm9jZXNzZWRFdmVudHMgJiBy ZXF1aXJlZEV2ZW50cykgIT0gcmVxdWlyZWRFdmVudHMpCisgICAgICAgICByZXR1cm47CisgCisg ICAgIG1Jbml0aWFsaXplZCA9IHRydWU7CitAQCAtMjc2LDkgKzI4OSw4IEBAIHZvaWQgUVdheWxh bmRTY3JlZW46Om91dHB1dF9zY2FsZShpbnQzMl90IGZhY3RvcikKKyAKKyB2b2lkIFFXYXlsYW5k U2NyZWVuOjpvdXRwdXRfZG9uZSgpCisgeworLSAgICBtT3V0cHV0RG9uZSA9IHRydWU7CistICAg IGlmICh6eGRnX291dHB1dF92MTo6aXNJbml0aWFsaXplZCgpICYmIG1XYXlsYW5kRGlzcGxheS0+ eGRnT3V0cHV0TWFuYWdlcigpLT52ZXJzaW9uKCkgPj0gMykKKy0gICAgICAgIG1YZGdPdXRwdXRE b25lID0gdHJ1ZTsKKysgICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBPdXRwdXREb25lRXZlbnQ7Cisr CisgICAgIGlmIChtSW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgIHVwZGF0ZU91dHB1dFByb3BlcnRp ZXMoKTsKKyAgICAgICAgIGlmICh6eGRnX291dHB1dF92MTo6aXNJbml0aWFsaXplZCgpKQorQEAg LTMzOSw3ICszNTEsNyBAQCB2b2lkIFFXYXlsYW5kU2NyZWVuOjp6eGRnX291dHB1dF92MV9kb25l KCkKKyAgICAgaWYgKFFfVU5MSUtFTFkobVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2Vy KCktPnZlcnNpb24oKSA+PSAzKSkKKyAgICAgICAgIHFXYXJuaW5nKGxjUXBhV2F5bGFuZCkgPDwg Inp4ZGdfb3V0cHV0X3YxLmRvbmUgcmVjZWl2ZWQgb24gdmVyc2lvbiAzIG9yIG5ld2VyLCB0aGlz IGlzIG1vc3QgbGlrZWx5IGEgYnVnIGluIHRoZSBjb21wb3NpdG9yIjsKKyAKKy0gICAgbVhkZ091 dHB1dERvbmUgPSB0cnVlOworKyAgICBtUHJvY2Vzc2VkRXZlbnRzIHw9IFhkZ091dHB1dERvbmVF dmVudDsKKyAgICAgaWYgKG1Jbml0aWFsaXplZCkKKyAgICAgICAgIHVwZGF0ZVhkZ091dHB1dFBy b3BlcnRpZXMoKTsKKyAgICAgZWxzZQorQEAgLTM0OCw3ICszNjAsMTEgQEAgdm9pZCBRV2F5bGFu ZFNjcmVlbjo6enhkZ19vdXRwdXRfdjFfZG9uZSgpCisgCisgdm9pZCBRV2F5bGFuZFNjcmVlbjo6 enhkZ19vdXRwdXRfdjFfbmFtZShjb25zdCBRU3RyaW5nICZuYW1lKQorIHsKKysgICAgaWYgKFFf VU5MSUtFTFkobUluaXRpYWxpemVkKSkKKysgICAgICAgIHFXYXJuaW5nKGxjUXBhV2F5bGFuZCkg PDwgInp4ZGdfb3V0cHV0X3YxLm5hbWUgcmVjZWl2ZWQgYWZ0ZXIgb3V0cHV0IGhhcyBiZWVuIGlu aXRpYWxpemVkLCB0aGlzIGlzIG1vc3QgbGlrZWx5IGEgYnVnIGluIHRoZSBjb21wb3NpdG9yIjsK KysKKyAgICAgbU91dHB1dE5hbWUgPSBuYW1lOworKyAgICBtUHJvY2Vzc2VkRXZlbnRzIHw9IFhk Z091dHB1dE5hbWVFdmVudDsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFNjcmVlbjo6dXBkYXRlWGRn T3V0cHV0UHJvcGVydGllcygpCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRzY3JlZW5fcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW5fcC5o CitpbmRleCBkZjFjOTRmMi4uMDUwY2ZkYzAgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZHNjcmVlbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kc2NyZWVuX3AuaAorQEAgLTExNiw2ICsxMTYsMTMgQEAgcHVibGljOgorICAgICBzdGF0aWMg UVdheWxhbmRTY3JlZW4gKmZyb21XbE91dHB1dCg6OndsX291dHB1dCAqb3V0cHV0KTsKKyAKKyBw cml2YXRlOgorKyAgICBlbnVtIEV2ZW50IDogdWludCB7CisrICAgICAgICBYZGdPdXRwdXREb25l RXZlbnQgPSAweDEsCisrICAgICAgICBPdXRwdXREb25lRXZlbnQgPSAweDIsCisrICAgICAgICBY ZGdPdXRwdXROYW1lRXZlbnQgPSAweDQsCisrICAgIH07CisrICAgIHVpbnQgcmVxdWlyZWRFdmVu dHMoKSBjb25zdDsKKysKKyAgICAgdm9pZCBvdXRwdXRfbW9kZSh1aW50MzJfdCBmbGFncywgaW50 IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgcmVmcmVzaCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgb3V0 cHV0X2dlb21ldHJ5KGludDMyX3QgeCwgaW50MzJfdCB5LAorICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwKK0BAIC0xNDgsOCArMTU1LDcgQEAg cHJpdmF0ZToKKyAgICAgUVNpemUgbVBoeXNpY2FsU2l6ZTsKKyAgICAgUVN0cmluZyBtT3V0cHV0 TmFtZTsKKyAgICAgUXQ6OlNjcmVlbk9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24gPSBRdDo6UHJp bWFyeU9yaWVudGF0aW9uOworLSAgICBib29sIG1PdXRwdXREb25lID0gZmFsc2U7CistICAgIGJv b2wgbVhkZ091dHB1dERvbmUgPSBmYWxzZTsKKysgICAgdWludCBtUHJvY2Vzc2VkRXZlbnRzID0g MDsKKyAgICAgYm9vbCBtSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAKKyAjaWYgUVRfQ09ORklHKGN1 cnNvcikKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNobWJhY2tp bmdzdG9yZS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9y ZS5jcHAKK2luZGV4IGRjN2ZmNjcwLi40MWNmZmRmNyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kc2htYmFja2luZ3N0b3JlLmNwcAorKysrIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRzaG1iYWNraW5nc3RvcmUuY3BwCitAQCAtNTIsNiArNTIsNyBAQAor IAorICNpbmNsdWRlIDxRdFdheWxhbmRDbGllbnQvcHJpdmF0ZS93YXlsYW5kLXdheWxhbmQtY2xp ZW50LXByb3RvY29sLmg+CisgCisrI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHVuaXN0 ZC5oPgorICNpbmNsdWRlIDxzeXMvbW1hbi5oPgorIAorQEAgLTYxLDYgKzYyLDkgQEAKKyAjICBp Zm5kZWYgTUZEX0NMT0VYRUMKKyAjICAgIGRlZmluZSBNRkRfQ0xPRVhFQyAgICAgMHgwMDAxVQor ICMgIGVuZGlmCisrIyAgaWZuZGVmIE1GRF9BTExPV19TRUFMSU5HCisrIyAgICBkZWZpbmUgTUZE X0FMTE9XX1NFQUxJTkcgMHgwMDAyVQorKyMgIGVuZGlmCisgI2VuZGlmCisgCisgUVRfQkVHSU5f TkFNRVNQQUNFCitAQCAtNzQsOCArNzgsMTAgQEAgUVdheWxhbmRTaG1CdWZmZXI6OlFXYXlsYW5k U2htQnVmZmVyKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSwKKyAgICAgaW50IGFsbG9jID0gc3Ry aWRlICogc2l6ZS5oZWlnaHQoKTsKKyAgICAgaW50IGZkID0gLTE7CisgCistI2lmZGVmIFNZU19t ZW1mZF9jcmVhdGUKKy0gICAgZmQgPSBzeXNjYWxsKFNZU19tZW1mZF9jcmVhdGUsICJ3YXlsYW5k LXNobSIsIE1GRF9DTE9FWEVDKTsKKysjaWYgZGVmaW5lZChTWVNfbWVtZmRfY3JlYXRlKSAmJiBk ZWZpbmVkKEZfU0VBTF9TRUFMKQorKyAgICBmZCA9IHN5c2NhbGwoU1lTX21lbWZkX2NyZWF0ZSwg IndheWxhbmQtc2htIiwgTUZEX0NMT0VYRUMgfCBNRkRfQUxMT1dfU0VBTElORyk7CisrICAgIGlm IChmZCA+PSAwKQorKyAgICAgICAgZmNudGwoZmQsIEZfQUREX1NFQUxTLCBGX1NFQUxfU0hSSU5L IHwgRl9TRUFMX1NFQUwpOworICNlbmRpZgorIAorICAgICBRU2NvcGVkUG9pbnRlcjxRRmlsZT4g ZmlsZVBvaW50ZXI7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3 aW5kb3cuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3cuY3BwCitpbmRl eCBjYjgyODU3YS4uZmIyYzU5ZGMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZHdpbmRvdy5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2lu ZG93LmNwcAorQEAgLTc2LDcgKzc2LDYgQEAgUVdheWxhbmRXaW5kb3cgKlFXYXlsYW5kV2luZG93 OjptTW91c2VHcmFiID0gbnVsbHB0cjsKKyBRV2F5bGFuZFdpbmRvdzo6UVdheWxhbmRXaW5kb3co UVdpbmRvdyAqd2luZG93LCBRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpCisgICAgIDogUVBsYXRm b3JtV2luZG93KHdpbmRvdykKKyAgICAgLCBtRGlzcGxheShkaXNwbGF5KQorLSAgICAsIG1GcmFt ZVF1ZXVlKG1EaXNwbGF5LT5jcmVhdGVGcmFtZVF1ZXVlKCkpCisgICAgICwgbVJlc2l6ZUFmdGVy U3dhcChxRW52aXJvbm1lbnRWYXJpYWJsZUlzU2V0KCJRVF9XQVlMQU5EX1JFU0laRV9BRlRFUl9T V0FQIikpCisgeworICAgICB7CitAQCAtOTUsOSArOTQsNiBAQCBRV2F5bGFuZFdpbmRvdzo6UVdh eWxhbmRXaW5kb3coUVdpbmRvdyAqd2luZG93LCBRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpCisg CisgUVdheWxhbmRXaW5kb3c6On5RV2F5bGFuZFdpbmRvdygpCisgeworLSAgICBtRGlzcGxheS0+ ZGVzdHJveUZyYW1lUXVldWUobUZyYW1lUXVldWUpOworLSAgICBtRGlzcGxheS0+aGFuZGxlV2lu ZG93RGVzdHJveWVkKHRoaXMpOworLQorICAgICBkZWxldGUgbVdpbmRvd0RlY29yYXRpb247Cisg CisgICAgIGlmIChtU3VyZmFjZSkKK0BAIC0yNDMsNiArMjM5LDcgQEAgYm9vbCBRV2F5bGFuZFdp bmRvdzo6c2hvdWxkQ3JlYXRlU3ViU3VyZmFjZSgpIGNvbnN0CisgCisgdm9pZCBRV2F5bGFuZFdp bmRvdzo6cmVzZXQoKQorIHsKKysgICAgY2xvc2VDaGlsZFBvcHVwcygpOworICAgICBkZWxldGUg bVNoZWxsU3VyZmFjZTsKKyAgICAgbVNoZWxsU3VyZmFjZSA9IG51bGxwdHI7CisgICAgIGRlbGV0 ZSBtU3ViU3VyZmFjZVdpbmRvdzsKK0BAIC0yNTUsMTcgKzI1MiwyMiBAQCB2b2lkIFFXYXlsYW5k V2luZG93OjpyZXNldCgpCisgICAgICAgICBtU3VyZmFjZS5yZXNldCgpOworICAgICB9CisgCist ICAgIGlmIChtRnJhbWVDYWxsYmFjaykgeworLSAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveSht RnJhbWVDYWxsYmFjayk7CistICAgICAgICBtRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7CistICAg IH0KKysgICAgeworKyAgICAgICAgUU11dGV4TG9ja2VyIGxvY2soJm1GcmFtZVN5bmNNdXRleCk7 CisrICAgICAgICBpZiAobUZyYW1lQ2FsbGJhY2spIHsKKysgICAgICAgICAgICB3bF9jYWxsYmFj a19kZXN0cm95KG1GcmFtZUNhbGxiYWNrKTsKKysgICAgICAgICAgICBtRnJhbWVDYWxsYmFjayA9 IG51bGxwdHI7CisrICAgICAgICB9CisgCistICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVy LmludmFsaWRhdGUoKTsKKy0gICAgbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7Cisr ICAgICAgICBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7CisrICAgICAg ICBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2sgPSBmYWxzZTsKKysgICAgfQorICAgICBtRnJhbWVD YWxsYmFja1RpbWVkT3V0ID0gZmFsc2U7CisgCisgICAgIG1NYXNrID0gUVJlZ2lvbigpOworICAg ICBtUXVldWVkQnVmZmVyID0gbnVsbHB0cjsKKysKKysgICAgbURpc3BsYXktPmhhbmRsZVdpbmRv d0Rlc3Ryb3llZCh0aGlzKTsKKyB9CisgCisgUVdheWxhbmRXaW5kb3cgKlFXYXlsYW5kV2luZG93 Ojpmcm9tV2xTdXJmYWNlKDo6d2xfc3VyZmFjZSAqc3VyZmFjZSkKK0BAIC0zNTEsMTkgKzM1Mywy NSBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZXRHZW9tZXRyeV9oZWxwZXIoY29uc3QgUVJlY3Qg JnJlY3QpCisgICAgIH0KKyB9CisgCistdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnko Y29uc3QgUVJlY3QgJnJlY3QpCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnkoY29u c3QgUVJlY3QgJnIpCisgeworKyAgICBhdXRvIHJlY3QgPSByOworKyAgICBpZiAoZml4ZWRUb3Bs ZXZlbFBvc2l0aW9ucyAmJiAhUVBsYXRmb3JtV2luZG93OjpwYXJlbnQoKSAmJiB3aW5kb3coKS0+ dHlwZSgpICE9IFF0OjpQb3B1cAorKyAgICAgICAgJiYgd2luZG93KCktPnR5cGUoKSAhPSBRdDo6 VG9vbFRpcCkgeworKyAgICAgICAgcmVjdC5tb3ZlVG8oc2NyZWVuKCktPmdlb21ldHJ5KCkudG9w TGVmdCgpKTsKKysgICAgfQorICAgICBzZXRHZW9tZXRyeV9oZWxwZXIocmVjdCk7CisgCisgICAg IGlmICh3aW5kb3coKS0+aXNWaXNpYmxlKCkgJiYgcmVjdC5pc1ZhbGlkKCkpIHsKKyAgICAgICAg IGlmIChtV2luZG93RGVjb3JhdGlvbikKKyAgICAgICAgICAgICBtV2luZG93RGVjb3JhdGlvbi0+ dXBkYXRlKCk7CisgCistICAgICAgICBpZiAobVJlc2l6ZUFmdGVyU3dhcCAmJiB3aW5kb3dUeXBl KCkgPT0gRWdsICYmIG1TZW50SW5pdGlhbFJlc2l6ZSkKKysgICAgICAgIGlmIChtUmVzaXplQWZ0 ZXJTd2FwICYmIHdpbmRvd1R5cGUoKSA9PSBFZ2wgJiYgbVNlbnRJbml0aWFsUmVzaXplKSB7Cisr ICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2soJm1SZXNpemVMb2NrKTsKKyAgICAgICAgICAg ICBtUmVzaXplRGlydHkgPSB0cnVlOworLSAgICAgICAgZWxzZQorKyAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVHZW9tZXRyeUNoYW5n ZSh3aW5kb3coKSwgZ2VvbWV0cnkoKSk7CistCisrICAgICAgICB9CisgICAgICAgICBtU2VudElu aXRpYWxSZXNpemUgPSB0cnVlOworICAgICB9CisgICAgIFFSZWN0IGV4cG9zZUdlb21ldHJ5KFFQ b2ludCgpLCBnZW9tZXRyeSgpLnNpemUoKSk7CitAQCAtMzc0LDcgKzM4Miw3IEBAIHZvaWQgUVdh eWxhbmRXaW5kb3c6OnNldEdlb21ldHJ5KGNvbnN0IFFSZWN0ICZyZWN0KQorICAgICAgICAgbVNo ZWxsU3VyZmFjZS0+c2V0V2luZG93R2VvbWV0cnkod2luZG93Q29udGVudEdlb21ldHJ5KCkpOwor IAorICAgICBpZiAoaXNPcGFxdWUoKSAmJiBtTWFzay5pc0VtcHR5KCkpCistICAgICAgICBzZXRP cGFxdWVBcmVhKHJlY3QpOworKyAgICAgICAgc2V0T3BhcXVlQXJlYShRUmVjdChRUG9pbnQoMCwg MCksIHJlY3Quc2l6ZSgpKSk7CisgfQorIAorIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlc2l6ZUZy b21BcHBseUNvbmZpZ3VyZShjb25zdCBRU2l6ZSAmc2l6ZVdpdGhNYXJnaW5zLCBjb25zdCBRUG9p bnQgJm9mZnNldCkKK0BAIC0zOTksMjEgKzQwNyw2IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNl bmRFeHBvc2VFdmVudChjb25zdCBRUmVjdCAmcmVjdCkKKyAgICAgbUxhc3RFeHBvc2VHZW9tZXRy eSA9IHJlY3Q7CisgfQorIAorLQorLXN0YXRpYyBRVmVjdG9yPFFQb2ludGVyPFFXYXlsYW5kV2lu ZG93Pj4gYWN0aXZlUG9wdXBzOworLQorLXZvaWQgUVdheWxhbmRXaW5kb3c6OmNsb3NlUG9wdXBz KFFXYXlsYW5kV2luZG93ICpwYXJlbnQpCisteworLSAgICB3aGlsZSAoIWFjdGl2ZVBvcHVwcy5p c0VtcHR5KCkpIHsKKy0gICAgICAgIGF1dG8gcG9wdXAgPSBhY3RpdmVQb3B1cHMudGFrZUxhc3Qo KTsKKy0gICAgICAgIGlmIChwb3B1cC5pc051bGwoKSkKKy0gICAgICAgICAgICBjb250aW51ZTsK Ky0gICAgICAgIGlmIChwb3B1cC5kYXRhKCkgPT0gcGFyZW50KQorLSAgICAgICAgICAgIHJldHVy bjsKKy0gICAgICAgIHBvcHVwLT5yZXNldCgpOworLSAgICB9CistfQorLQorIFFQbGF0Zm9ybVNj cmVlbiAqUVdheWxhbmRXaW5kb3c6OmNhbGN1bGF0ZVNjcmVlbkZyb21TdXJmYWNlRXZlbnRzKCkg Y29uc3QKKyB7CisgICAgIFFSZWFkTG9ja2VyIGxvY2soJm1TdXJmYWNlTG9jayk7CitAQCAtNDMz LDEwICs0MjYsNyBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJs ZSkKKyAgICAgbGFzdFZpc2libGUgPSB2aXNpYmxlOworIAorICAgICBpZiAodmlzaWJsZSkgewor LSAgICAgICAgaWYgKHdpbmRvdygpLT50eXBlKCkgPT0gUXQ6OlBvcHVwIHx8IHdpbmRvdygpLT50 eXBlKCkgPT0gUXQ6OlRvb2xUaXApCistICAgICAgICAgICAgYWN0aXZlUG9wdXBzIDw8IHRoaXM7 CisgICAgICAgICBpbml0V2luZG93KCk7CistICAgICAgICBtRGlzcGxheS0+Zmx1c2hSZXF1ZXN0 cygpOworIAorICAgICAgICAgc2V0R2VvbWV0cnkod2luZG93R2VvbWV0cnkoKSk7CisgICAgICAg ICAvLyBEb24ndCBmbHVzaCB0aGUgZXZlbnRzIGhlcmUsIG9yIGVsc2UgdGhlIG5ld2x5IHZpc2li bGUgd2luZG93IG1heSBzdGFydCBkcmF3aW5nLCBidXQgc2luY2UKK0BAIC00NDQsNyArNDM0LDYg QEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCisgICAgICAg ICAvLyBRV2F5bGFuZFNobUJhY2tpbmdTdG9yZTo6YmVnaW5QYWludCgpLgorICAgICB9IGVsc2Ug eworICAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KCkpOworLSAgICAgICAgY2xvc2VQb3B1 cHModGhpcyk7CisgICAgICAgICByZXNldCgpOworICAgICB9CisgfQorQEAgLTU1NiwxMiArNTQ1 LDEyIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNlbmRSZWN1cnNpdmVFeHBvc2VFdmVudCgpCisg Cisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6YXR0YWNoKFFXYXlsYW5kQnVmZmVyICpidWZmZXIsIGlu dCB4LCBpbnQgeSkKKyB7CistICAgIFFfQVNTRVJUKCFidWZmZXItPmNvbW1pdHRlZCgpKTsKKyAg ICAgUVJlYWRMb2NrZXIgbG9ja2VyKCZtU3VyZmFjZUxvY2spOworICAgICBpZiAobVN1cmZhY2Ug PT0gbnVsbHB0cikKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgaWYgKGJ1ZmZlcikgeworKyAg ICAgICAgUV9BU1NFUlQoIWJ1ZmZlci0+Y29tbWl0dGVkKCkpOworICAgICAgICAgaGFuZGxlVXBk YXRlKCk7CisgICAgICAgICBidWZmZXItPnNldEJ1c3koKTsKKyAKK0BAIC01ODMsNyArNTcyLDEx IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmRhbWFnZShjb25zdCBRUmVjdCAmcmVjdCkKKyAgICAg aWYgKG1TdXJmYWNlID09IG51bGxwdHIpCisgICAgICAgICByZXR1cm47CisgCistICAgIG1TdXJm YWNlLT5kYW1hZ2UocmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0 KCkpOworKyAgICBjb25zdCBpbnQgcyA9IHNjYWxlKCk7CisrICAgIGlmIChtRGlzcGxheS0+Y29t cG9zaXRvclZlcnNpb24oKSA+PSA0KQorKyAgICAgICAgbVN1cmZhY2UtPmRhbWFnZV9idWZmZXIo cyAqIHJlY3QueCgpLCBzICogcmVjdC55KCksIHMgKiByZWN0LndpZHRoKCksIHMgKiByZWN0Lmhl aWdodCgpKTsKKysgICAgZWxzZQorKyAgICAgICAgbVN1cmZhY2UtPmRhbWFnZShyZWN0LngoKSwg cmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgfQorIAorIHZvaWQgUVdh eWxhbmRXaW5kb3c6OnNhZmVDb21taXQoUVdheWxhbmRCdWZmZXIgKmJ1ZmZlciwgY29uc3QgUVJl Z2lvbiAmZGFtYWdlKQorQEAgLTYxOSw4ICs2MTIsMTQgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6 Y29tbWl0KFFXYXlsYW5kQnVmZmVyICpidWZmZXIsIGNvbnN0IFFSZWdpb24gJmRhbWFnZSkKKyAg ICAgICAgIHJldHVybjsKKyAKKyAgICAgYXR0YWNoT2Zmc2V0KGJ1ZmZlcik7CistICAgIGZvciAo Y29uc3QgUVJlY3QgJnJlY3Q6IGRhbWFnZSkKKy0gICAgICAgIG1TdXJmYWNlLT5kYW1hZ2UocmVj dC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworKyAgICBpZiAo bURpc3BsYXktPmNvbXBvc2l0b3JWZXJzaW9uKCkgPj0gNCkgeworKyAgICAgICAgY29uc3QgaW50 IHMgPSBzY2FsZSgpOworKyAgICAgICAgZm9yIChjb25zdCBRUmVjdCAmcmVjdDogZGFtYWdlKQor KyAgICAgICAgICAgIG1TdXJmYWNlLT5kYW1hZ2VfYnVmZmVyKHMgKiByZWN0LngoKSwgcyAqIHJl Y3QueSgpLCBzICogcmVjdC53aWR0aCgpLCBzICogcmVjdC5oZWlnaHQoKSk7CisrICAgIH0gZWxz ZSB7CisrICAgICAgICBmb3IgKGNvbnN0IFFSZWN0ICZyZWN0OiBkYW1hZ2UpCisrICAgICAgICAg ICAgbVN1cmZhY2UtPmRhbWFnZShyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVj dC5oZWlnaHQoKSk7CisrICAgIH0KKyAgICAgUV9BU1NFUlQoIWJ1ZmZlci0+Y29tbWl0dGVkKCkp OworICAgICBidWZmZXItPnNldENvbW1pdHRlZCgpOworICAgICBtU3VyZmFjZS0+Y29tbWl0KCk7 CitAQCAtNjM1LDQyICs2MzQsNTMgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6Y29tbWl0KCkKKyAK KyBjb25zdCB3bF9jYWxsYmFja19saXN0ZW5lciBRV2F5bGFuZFdpbmRvdzo6Y2FsbGJhY2tMaXN0 ZW5lciA9IHsKKyAgICAgW10odm9pZCAqZGF0YSwgd2xfY2FsbGJhY2sgKmNhbGxiYWNrLCB1aW50 MzJfdCB0aW1lKSB7CistICAgICAgICBRX1VOVVNFRChjYWxsYmFjayk7CisgICAgICAgICBRX1VO VVNFRCh0aW1lKTsKKyAgICAgICAgIGF1dG8gKndpbmRvdyA9IHN0YXRpY19jYXN0PFFXYXlsYW5k V2luZG93Kj4oZGF0YSk7CistICAgICAgICB3aW5kb3ctPmhhbmRsZUZyYW1lQ2FsbGJhY2soKTsK KysgICAgICAgIHdpbmRvdy0+aGFuZGxlRnJhbWVDYWxsYmFjayhjYWxsYmFjayk7CisgICAgIH0K KyB9OworIAorLXZvaWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZUZyYW1lQ2FsbGJhY2soKQorK3Zv aWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZUZyYW1lQ2FsbGJhY2sod2xfY2FsbGJhY2sqIGNhbGxi YWNrKQorIHsKKysgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysg ICAgaWYgKCFtRnJhbWVDYWxsYmFjaykgeworKyAgICAgICAgLy8gVGhpcyBtZWFucyB0aGUgY2Fs bGJhY2sgaXMgYWxyZWFkeSB1bnNldCBieSBRV2F5bGFuZFdpbmRvdzo6cmVzZXQuCisrICAgICAg ICAvLyBUaGUgd2xfY2FsbGJhY2sgb2JqZWN0IHdpbGwgYmUgZGVzdHJveWVkIHRoZXJlIHRvby4K KysgICAgICAgIHJldHVybjsKKysgICAgfQorKyAgICBRX0FTU0VSVChjYWxsYmFjayA9PSBtRnJh bWVDYWxsYmFjayk7CisrICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3koY2FsbGJhY2spOworKyAgICBt RnJhbWVDYWxsYmFjayA9IG51bGxwdHI7CisrCisgICAgIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFj ayA9IGZhbHNlOworICAgICBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7 CisgCisgICAgIC8vIFRoZSByZXN0IGNhbiB3YWl0IHVudGlsIHdlIGNhbiBydW4gaXQgb24gdGhl IGNvcnJlY3QgdGhyZWFkCistICAgIGlmICghbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeSkgewor LSAgICAgICAgYXV0byBkb0hhbmRsZUV4cG9zZSA9IFt0aGlzXSgpIHsKKy0gICAgICAgICAgICBi b29sIHdhc0V4cG9zZWQgPSBpc0V4cG9zZWQoKTsKKy0gICAgICAgICAgICBtRnJhbWVDYWxsYmFj a1RpbWVkT3V0ID0gZmFsc2U7CistICAgICAgICAgICAgaWYgKCF3YXNFeHBvc2VkICYmIGlzRXhw b3NlZCgpKSAvLyBEaWQgc2V0dGluZyBtRnJhbWVDYWxsYmFja1RpbWVkT3V0IG1ha2UgdGhlIHdp bmRvdyBleHBvc2VkPworLSAgICAgICAgICAgICAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoUVBv aW50KCksIGdlb21ldHJ5KCkuc2l6ZSgpKSk7CistICAgICAgICAgICAgaWYgKHdhc0V4cG9zZWQg JiYgaGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3QoKSkKKy0gICAgICAgICAgICAgICAgZGVsaXZlclVw ZGF0ZVJlcXVlc3QoKTsKKy0KKy0gICAgICAgICAgICBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5 ID0gZmFsc2U7CistICAgICAgICB9OworKyAgICBhdXRvIGRvSGFuZGxlRXhwb3NlID0gW3RoaXNd KCkgeworKyAgICAgICAgbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeS5zdG9yZVJlbGVhc2UoZmFs c2UpOworKyAgICAgICAgYm9vbCB3YXNFeHBvc2VkID0gaXNFeHBvc2VkKCk7CisrICAgICAgICBt RnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gZmFsc2U7CisrICAgICAgICBpZiAoIXdhc0V4cG9zZWQg JiYgaXNFeHBvc2VkKCkpIC8vIERpZCBzZXR0aW5nIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgbWFr ZSB0aGUgd2luZG93IGV4cG9zZWQ/CisrICAgICAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0 KFFQb2ludCgpLCBnZW9tZXRyeSgpLnNpemUoKSkpOworKyAgICAgICAgaWYgKHdhc0V4cG9zZWQg JiYgaGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3QoKSkKKysgICAgICAgICAgICBkZWxpdmVyVXBkYXRl UmVxdWVzdCgpOworKyAgICB9OworIAorKyAgICBpZiAobVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVy eS50ZXN0QW5kU2V0QWNxdWlyZShmYWxzZSwgdHJ1ZSkpIHsKKyAgICAgICAgIC8vIFF1ZXVlZCBj b25uZWN0aW9uLCB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgY2FsbCBoYW5kbGVVcGRhdGUoKSBmcm9t IGluc2lkZSB3YWl0Rm9yRnJhbWVTeW5jKCkKKyAgICAgICAgIC8vIGluIHRoZSBzaW5nbGUtdGhy ZWFkZWQgY2FzZS4KKy0gICAgICAgIG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkgPSB0cnVlOwor ICAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCBkb0hhbmRsZUV4cG9zZSwg UXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworICAgICB9CisrCisrICAgIG1GcmFtZVN5bmNXYWl0Lm5v dGlmeV9hbGwoKTsKKyB9CisgCisgYm9vbCBRV2F5bGFuZFdpbmRvdzo6d2FpdEZvckZyYW1lU3lu YyhpbnQgdGltZW91dCkKKyB7CistICAgIFFNdXRleExvY2tlciBsb2NrZXIobUZyYW1lUXVldWUu bXV0ZXgpOworLSAgICBtRGlzcGxheS0+ZGlzcGF0Y2hRdWV1ZVdoaWxlKG1GcmFtZVF1ZXVlLnF1 ZXVlLCBbJl0oKSB7IHJldHVybiBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2s7IH0sIHRpbWVvdXQp OworKyAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKworKyAgICBR RGVhZGxpbmVUaW1lciBkZWFkbGluZSh0aW1lb3V0KTsKKysgICAgd2hpbGUgKG1XYWl0aW5nRm9y RnJhbWVDYWxsYmFjayAmJiBtRnJhbWVTeW5jV2FpdC53YWl0KCZtRnJhbWVTeW5jTXV0ZXgsIGRl YWRsaW5lKSkgeyB9CisgCisgICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spIHsKKyAg ICAgICAgIHFDRGVidWcobGNXYXlsYW5kQmFja2luZ3N0b3JlKSA8PCAiRGlkbid0IHJlY2VpdmUg ZnJhbWUgY2FsbGJhY2sgaW4gdGltZSwgd2luZG93IHNob3VsZCBub3cgYmUgaW5leHBvc2VkIjsK K0BAIC04NjgsNiArODc4LDE3IEBAIGJvb2wgUVdheWxhbmRXaW5kb3c6OmNyZWF0ZURlY29yYXRp b24oKQorICAgICAgICAgICAgIHN1YnN1cmYtPnNldF9wb3NpdGlvbihwb3MueCgpICsgbS5sZWZ0 KCksIHBvcy55KCkgKyBtLnRvcCgpKTsKKyAgICAgICAgIH0KKyAgICAgICAgIHNlbmRFeHBvc2VF dmVudChRUmVjdChRUG9pbnQoKSwgZ2VvbWV0cnkoKS5zaXplKCkpKTsKKysKKysgICAgICAgIC8v IFRoaXMgaXMgYSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIGJ1ZmZlciBpcyByZWNyZWF0ZWQsIGJ1 dCBzaW5jZQorKyAgICAgICAgLy8gdGhlIGNvbnRlbnQgcmVjdCByZW1haW5zIHRoZSBzYW1lLCB0 aGUgd2lkZ2V0cyByZW1haW4gdGhlIHNhbWUKKysgICAgICAgIC8vIHNpemUgYW5kIGFyZSBub3Qg cmVkcmF3biwgbGVhdmluZyB0aGUgbmV3IGJ1ZmZlciBlbXB0eS4gQXMgYSBzaW1wbGUKKysgICAg ICAgIC8vIHdvcmstYXJvdW5kLCB3ZSB0cmlnZ2VyIGEgZnVsbCBleHRyYSB1cGRhdGUgd2hlbmV2 ZXIgdGhlIGNsaWVudC1zaWRlCisrICAgICAgICAvLyB3aW5kb3cgZGVjb3JhdGlvbnMgYXJlIHRv Z2dsZWQgd2hpbGUgdGhlIHdpbmRvdyBpcyBzaG93aW5nLgorKyAgICAgICAgLy8gTm90ZTogY3Jl YXRlRGVjb3JhdGlvbigpIGlzIHNvbWV0aW1lcyBjYWxsZWQgZnJvbSB0aGUgcmVuZGVyIHRocmVh ZAorKyAgICAgICAgLy8gb2YgUXQgUXVpY2suIFRoaXMgaXMgZXNzZW50aWFsbHkgd3JvbmcgYW5k IGNvdWxkIHBvdGVudGlhbGx5IGNhdXNlIHByb2JsZW1zLAorKyAgICAgICAgLy8gYnV0IHVudGls IHRoZSB1bmRlcmx5aW5nIGlzc3VlIGhhcyBiZWVuIGZpeGVkLCB3ZSBoYXZlIHRvIHVzZSBpbnZv a2VNZXRob2QoKQorKyAgICAgICAgLy8gaGVyZSB0byBhdm9pZCBhc3NlcnRzLgorKyAgICAgICAg UU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh3aW5kb3coKSwgJlFXaW5kb3c6OnJlcXVlc3RVcGRh dGUpOworICAgICB9CisgCisgICAgIHJldHVybiBtV2luZG93RGVjb3JhdGlvbjsKK0BAIC0xMDIz LDYgKzEwNDQsMTMgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlU2NyZWVuc0NoYW5nZWQo KQorIAorICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVXaW5kb3dTY3JlZW5DaGFu Z2VkKHdpbmRvdygpLCBuZXdTY3JlZW4tPlFQbGF0Zm9ybVNjcmVlbjo6c2NyZWVuKCkpOworICAg ICBtTGFzdFJlcG9ydGVkU2NyZWVuID0gbmV3U2NyZWVuOworKyAgICBpZiAoZml4ZWRUb3BsZXZl bFBvc2l0aW9ucyAmJiAhUVBsYXRmb3JtV2luZG93OjpwYXJlbnQoKSAmJiB3aW5kb3coKS0+dHlw ZSgpICE9IFF0OjpQb3B1cAorKyAgICAgICAgJiYgd2luZG93KCktPnR5cGUoKSAhPSBRdDo6VG9v bFRpcAorKyAgICAgICAgJiYgZ2VvbWV0cnkoKS50b3BMZWZ0KCkgIT0gbmV3U2NyZWVuLT5nZW9t ZXRyeSgpLnRvcExlZnQoKSkgeworKyAgICAgICAgYXV0byBnZW9tZXRyeSA9IHRoaXMtPmdlb21l dHJ5KCk7CisrICAgICAgICBnZW9tZXRyeS5tb3ZlVG8obmV3U2NyZWVuLT5nZW9tZXRyeSgpLnRv cExlZnQoKSk7CisrICAgICAgICBzZXRHZW9tZXRyeShnZW9tZXRyeSk7CisrICAgIH0KKyAKKyAg ICAgaW50IHNjYWxlID0gbmV3U2NyZWVuLT5pc1BsYWNlaG9sZGVyKCkgPyAxIDogc3RhdGljX2Nh c3Q8UVdheWxhbmRTY3JlZW4gKj4obmV3U2NyZWVuKS0+c2NhbGUoKTsKKyAgICAgaWYgKHNjYWxl ICE9IG1TY2FsZSkgeworQEAgLTEwOTQsMTAgKzExMjIsMTggQEAgYm9vbCBRV2F5bGFuZFdpbmRv dzo6c2V0TW91c2VHcmFiRW5hYmxlZChib29sIGdyYWIpCisgICAgIHJldHVybiB0cnVlOworIH0K KyAKKytRdDo6V2luZG93U3RhdGVzIFFXYXlsYW5kV2luZG93Ojp3aW5kb3dTdGF0ZXMoKSBjb25z dAorK3sKKysgICAgcmV0dXJuIG1MYXN0UmVwb3J0ZWRXaW5kb3dTdGF0ZXM7CisrfQorKworIHZv aWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQoUXQ6OldpbmRvd1N0 YXRlcyBzdGF0ZXMpCisgeworICAgICBjcmVhdGVEZWNvcmF0aW9uKCk7CistICAgIFFXaW5kb3dT eXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVdpbmRvd1N0YXRlQ2hhbmdlZCh3aW5kb3coKSwgc3RhdGVz LCBtTGFzdFJlcG9ydGVkV2luZG93U3RhdGVzKTsKKysgICAgUXQ6OldpbmRvd1N0YXRlcyBzdGF0 ZXNXaXRob3V0QWN0aXZlID0gc3RhdGVzICYgflF0OjpXaW5kb3dBY3RpdmU7CisrICAgIFF0OjpX aW5kb3dTdGF0ZXMgbGFzdFN0YXRlc1dpdGhvdXRBY3RpdmUgPSBtTGFzdFJlcG9ydGVkV2luZG93 U3RhdGVzICYgflF0OjpXaW5kb3dBY3RpdmU7CisrICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6 OmhhbmRsZVdpbmRvd1N0YXRlQ2hhbmdlZCh3aW5kb3coKSwgc3RhdGVzV2l0aG91dEFjdGl2ZSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxh c3RTdGF0ZXNXaXRob3V0QWN0aXZlKTsKKyAgICAgbUxhc3RSZXBvcnRlZFdpbmRvd1N0YXRlcyA9 IHN0YXRlczsKKyB9CisgCitAQCAtMTEzOSwxOSArMTE3NSwyNCBAQCB2b2lkIFFXYXlsYW5kV2lu ZG93Ojp0aW1lckV2ZW50KFFUaW1lckV2ZW50ICpldmVudCkKKyAgICAgaWYgKGV2ZW50LT50aW1l cklkKCkgIT0gbUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCkKKyAgICAgICAgIHJl dHVybjsKKyAKKy0gICAgYm9vbCBjYWxsYmFja1RpbWVyRXhwaXJlZCA9IG1GcmFtZUNhbGxiYWNr RWxhcHNlZFRpbWVyLmhhc0V4cGlyZWQobUZyYW1lQ2FsbGJhY2tUaW1lb3V0KTsKKy0gICAgaWYg KCFtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pc1ZhbGlkKCkgfHwgY2FsbGJhY2tUaW1lckV4 cGlyZWQgKSB7CistICAgICAgICBraWxsVGltZXIobUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFs VGltZXJJZCk7CistICAgICAgICBtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0g LTE7CistICAgIH0KKy0gICAgaWYgKG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlzVmFsaWQo KSAmJiBjYWxsYmFja1RpbWVyRXhwaXJlZCkgeworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2tFbGFw c2VkVGltZXIuaW52YWxpZGF0ZSgpOworKyAgICB7CisrICAgICAgICBRTXV0ZXhMb2NrZXIgbG9j aygmbUZyYW1lU3luY011dGV4KTsKKyAKKy0gICAgICAgIHFDRGVidWcobGNXYXlsYW5kQmFja2lu Z3N0b3JlKSA8PCAiRGlkbid0IHJlY2VpdmUgZnJhbWUgY2FsbGJhY2sgaW4gdGltZSwgd2luZG93 IHNob3VsZCBub3cgYmUgaW5leHBvc2VkIjsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNrVGltZWRP dXQgPSB0cnVlOworLSAgICAgICAgbVdhaXRpbmdGb3JVcGRhdGUgPSBmYWxzZTsKKy0gICAgICAg IHNlbmRFeHBvc2VFdmVudChRUmVjdCgpKTsKKysgICAgICAgIGJvb2wgY2FsbGJhY2tUaW1lckV4 cGlyZWQgPSBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5oYXNFeHBpcmVkKG1GcmFtZUNhbGxi YWNrVGltZW91dCk7CisrICAgICAgICBpZiAoIW1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlz VmFsaWQoKSB8fCBjYWxsYmFja1RpbWVyRXhwaXJlZCApIHsKKysgICAgICAgICAgICBraWxsVGlt ZXIobUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCk7CisrICAgICAgICAgICAgbUZy YW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCA9IC0xOworKyAgICAgICAgfQorKyAgICAg ICAgaWYgKCFtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pc1ZhbGlkKCkgfHwgIWNhbGxiYWNr VGltZXJFeHBpcmVkKSB7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICAg ICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworICAgICB9CisrCisr ICAgIHFDRGVidWcobGNXYXlsYW5kQmFja2luZ3N0b3JlKSA8PCAiRGlkbid0IHJlY2VpdmUgZnJh bWUgY2FsbGJhY2sgaW4gdGltZSwgd2luZG93IHNob3VsZCBub3cgYmUgaW5leHBvc2VkIjsKKysg ICAgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCA9IHRydWU7CisrICAgIG1XYWl0aW5nRm9yVXBkYXRl ID0gZmFsc2U7CisrICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdCgpKTsKKyB9CisgCisgdm9pZCBR V2F5bGFuZFdpbmRvdzo6cmVxdWVzdFVwZGF0ZSgpCitAQCAtMTE2MCw4ICsxMjAxLDExIEBAIHZv aWQgUVdheWxhbmRXaW5kb3c6OnJlcXVlc3RVcGRhdGUoKQorICAgICBRX0FTU0VSVChoYXNQZW5k aW5nVXBkYXRlUmVxdWVzdCgpKTsgLy8gc2hvdWxkIGJlIHNldCBieSBRUEEKKyAKKyAgICAgLy8g SWYgd2UgaGF2ZSBhIGZyYW1lIGNhbGxiYWNrIGFsbCBpcyBnb29kIGFuZCB3aWxsIGJlIHRha2Vu IGNhcmUgb2YgdGhlcmUKKy0gICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykKKy0gICAg ICAgIHJldHVybjsKKysgICAgeworKyAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1l U3luY011dGV4KTsKKysgICAgICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCisrICAg ICAgICAgICAgcmV0dXJuOworKyAgICB9CisgCisgICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgY2Fs bGVkIGRlbGl2ZXJVcGRhdGVSZXF1ZXN0KCksIGJ1dCBoYXZlbid0IHNlZW4gYW55IGF0dGFjaCtj b21taXQvc3dhcCB5ZXQKKyAgICAgLy8gVGhpcyBpcyBhIHNvbWV3aGF0IHJlZHVuZGFudCBiZWhh dmlvciBhbmQgbWlnaHQgaW5kaWNhdGUgYSBidWcgaW4gdGhlIGNhbGxpbmcgY29kZSwgc28gbG9n CitAQCAtMTE3NCw3ICsxMjE4LDEyIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlcXVlc3RVcGRh dGUoKQorICAgICAvLyBzbyB1c2UgaW52b2tlTWV0aG9kIHRvIGRlbGF5IHRoZSBkZWxpdmVyeSBh IGJpdC4KKyAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCBbdGhpc10geworICAg ICAgICAgLy8gVGhpbmdzIG1pZ2h0IGhhdmUgY2hhbmdlZCBpbiB0aGUgbWVhbnRpbWUKKy0gICAg ICAgIGlmIChoYXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgpICYmICFtV2FpdGluZ0ZvckZyYW1lQ2Fs bGJhY2spCisrICAgICAgICB7CisrICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZy YW1lU3luY011dGV4KTsKKysgICAgICAgICAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNr KQorKyAgICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisrICAgICAgICBpZiAoaGFz UGVuZGluZ1VwZGF0ZVJlcXVlc3QoKSkKKyAgICAgICAgICAgICBkZWxpdmVyVXBkYXRlUmVxdWVz dCgpOworICAgICB9LCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgfQorQEAgLTExODUsMTkgKzEy MzQsMTggQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVxdWVzdFVwZGF0ZSgpCisgdm9pZCBRV2F5 bGFuZFdpbmRvdzo6aGFuZGxlVXBkYXRlKCkKKyB7CisgICAgIHFDRGVidWcobGNXYXlsYW5kQmFj a2luZ3N0b3JlKSA8PCAiaGFuZGxlVXBkYXRlIiA8PCBRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCk7 CisrCisgICAgIC8vIFRPRE86IFNob3VsZCBzeW5jIHN1YnN1cmZhY2VzIGF2b2lkIHJlcXVlc3Rp bmcgZnJhbWUgY2FsbGJhY2tzPworICAgICBRUmVhZExvY2tlciBsb2NrKCZtU3VyZmFjZUxvY2sp OworICAgICBpZiAoIW1TdXJmYWNlKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBpZiAobUZy YW1lQ2FsbGJhY2spIHsKKy0gICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3kobUZyYW1lQ2FsbGJh Y2spOworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOworLSAgICB9CisrICAgIFFN dXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRleCk7CisrICAgIGlmIChtV2FpdGluZ0Zv ckZyYW1lQ2FsbGJhY2spCisrICAgICAgICByZXR1cm47CisgCistICAgIFFNdXRleExvY2tlciBs b2NrZXIobUZyYW1lUXVldWUubXV0ZXgpOworICAgICBzdHJ1Y3QgOjp3bF9zdXJmYWNlICp3cmFw cGVkU3VyZmFjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8c3RydWN0IDo6d2xfc3VyZmFjZSAqPih3bF9w cm94eV9jcmVhdGVfd3JhcHBlcihtU3VyZmFjZS0+b2JqZWN0KCkpKTsKKy0gICAgd2xfcHJveHlf c2V0X3F1ZXVlKHJlaW50ZXJwcmV0X2Nhc3Q8d2xfcHJveHkgKj4od3JhcHBlZFN1cmZhY2UpLCBt RnJhbWVRdWV1ZS5xdWV1ZSk7CisrICAgIHdsX3Byb3h5X3NldF9xdWV1ZShyZWludGVycHJldF9j YXN0PHdsX3Byb3h5ICo+KHdyYXBwZWRTdXJmYWNlKSwgbURpc3BsYXktPmZyYW1lRXZlbnRRdWV1 ZSgpKTsKKyAgICAgbUZyYW1lQ2FsbGJhY2sgPSB3bF9zdXJmYWNlX2ZyYW1lKHdyYXBwZWRTdXJm YWNlKTsKKyAgICAgd2xfcHJveHlfd3JhcHBlcl9kZXN0cm95KHdyYXBwZWRTdXJmYWNlKTsKKyAg ICAgd2xfY2FsbGJhY2tfYWRkX2xpc3RlbmVyKG1GcmFtZUNhbGxiYWNrLCAmUVdheWxhbmRXaW5k b3c6OmNhbGxiYWNrTGlzdGVuZXIsIHRoaXMpOworQEAgLTEyMDcsNiArMTI1NSw4IEBAIHZvaWQg UVdheWxhbmRXaW5kb3c6OmhhbmRsZVVwZGF0ZSgpCisgICAgIC8vIFN0YXJ0IGEgdGltZXIgZm9y IGhhbmRsaW5nIHRoZSBjYXNlIHdoZW4gdGhlIGNvbXBvc2l0b3Igc3RvcHMgc2VuZGluZyBmcmFt ZSBjYWxsYmFja3MuCisgICAgIGlmIChtRnJhbWVDYWxsYmFja1RpbWVvdXQgPiAwKSB7CisgICAg ICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHRoaXMsIFt0aGlzXSB7CisrICAgICAgICAg ICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysKKyAgICAgICAgICAg ICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKSB7CisgICAgICAgICAgICAgICAgIGlmICht RnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkIDwgMCkKKyAgICAgICAgICAgICAgICAg ICAgIG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQgPSBzdGFydFRpbWVyKG1GcmFt ZUNhbGxiYWNrVGltZW91dCk7CitAQCAtMTI2Nyw2ICsxMzE3LDIwIEBAIHZvaWQgUVdheWxhbmRX aW5kb3c6OnNldE9wYXF1ZUFyZWEoY29uc3QgUVJlZ2lvbiAmb3BhcXVlQXJlYSkKKyAgICAgd2xf cmVnaW9uX2Rlc3Ryb3kocmVnaW9uKTsKKyB9CisgCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6YWRk Q2hpbGRQb3B1cChRV2F5bGFuZFdpbmRvdyAqc3VyZmFjZSkgeworKyAgICBtQ2hpbGRQb3B1cHMu YXBwZW5kKHN1cmZhY2UpOworK30KKysKKyt2b2lkIFFXYXlsYW5kV2luZG93OjpyZW1vdmVDaGls ZFBvcHVwKFFXYXlsYW5kV2luZG93ICpzdXJmYWNlKSB7CisrICAgIG1DaGlsZFBvcHVwcy5yZW1v dmVBbGwoc3VyZmFjZSk7CisrfQorKworK3ZvaWQgUVdheWxhbmRXaW5kb3c6OmNsb3NlQ2hpbGRQ b3B1cHMoKSB7CisrICAgIHdoaWxlICghbUNoaWxkUG9wdXBzLmlzRW1wdHkoKSkgeworKyAgICAg ICAgYXV0byBwb3B1cCA9IG1DaGlsZFBvcHVwcy50YWtlTGFzdCgpOworKyAgICAgICAgcG9wdXAt PnJlc2V0KCk7CisrICAgIH0KKyt9CisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1n aXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvd19wLmggYi9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvd19wLmgKK2luZGV4IDAxMzM3Y2ZmLi4yZjIxOWQ4YyAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93X3AuaAorKysr IGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3dfcC5oCitAQCAtOTgsNiArOTgs OSBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5kV2luZG93KFFXaW5kb3cgKndpbmRvdywgUVdheWxh bmREaXNwbGF5ICpkaXNwbGF5KTsKKyAgICAgflFXYXlsYW5kV2luZG93KCkgb3ZlcnJpZGU7Cisg CisrICAgIC8vIEtlZXAgVG9wbGV2ZWxzIHBvc2l0aW9uIG9uIHRoZSB0b3AgbGVmdCBjb3JuZXIg b2YgdGhlaXIgc2NyZWVuCisrICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBmaXhlZFRvcGxldmVsUG9z aXRpb25zID0gdHJ1ZTsKKysKKyAgICAgdmlydHVhbCBXaW5kb3dUeXBlIHdpbmRvd1R5cGUoKSBj b25zdCA9IDA7CisgICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVTaXplKCk7CisgICAgIFdJZCB3aW5J ZCgpIGNvbnN0IG92ZXJyaWRlOworQEAgLTE0OCw2ICsxNTEsNyBAQCBwdWJsaWM6CisgICAgIHZv aWQgc2V0V2luZG93U3RhdGUoUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXMpIG92ZXJyaWRlOworICAg ICB2b2lkIHNldFdpbmRvd0ZsYWdzKFF0OjpXaW5kb3dGbGFncyBmbGFncykgb3ZlcnJpZGU7Cisg ICAgIHZvaWQgaGFuZGxlV2luZG93U3RhdGVzQ2hhbmdlZChRdDo6V2luZG93U3RhdGVzIHN0YXRl cyk7CisrICAgIFF0OjpXaW5kb3dTdGF0ZXMgd2luZG93U3RhdGVzKCkgY29uc3Q7CisgCisgICAg IHZvaWQgcmFpc2UoKSBvdmVycmlkZTsKKyAgICAgdm9pZCBsb3dlcigpIG92ZXJyaWRlOworQEAg LTIwNiw2ICsyMTAsMTAgQEAgcHVibGljOgorICAgICB2b2lkIGhhbmRsZVVwZGF0ZSgpOworICAg ICB2b2lkIGRlbGl2ZXJVcGRhdGVSZXF1ZXN0KCkgb3ZlcnJpZGU7CisgCisrICAgIHZvaWQgYWRk Q2hpbGRQb3B1cChRV2F5bGFuZFdpbmRvdyogY2hpbGQpOworKyAgICB2b2lkIHJlbW92ZUNoaWxk UG9wdXAoUVdheWxhbmRXaW5kb3cqIGNoaWxkKTsKKysgICAgdm9pZCBjbG9zZUNoaWxkUG9wdXBz KCk7CisrCisgcHVibGljIHNsb3RzOgorICAgICB2b2lkIGFwcGx5Q29uZmlndXJlKCk7CisgCitA QCAtMjE1LDcgKzIyMywxMSBAQCBzaWduYWxzOgorIAorIHByb3RlY3RlZDoKKyAgICAgUVdheWxh bmREaXNwbGF5ICptRGlzcGxheSA9IG51bGxwdHI7CisrCisrICAgIC8vIG1TdXJmYWNlIGNhbiBi ZSB3cml0dGVuIGJ5IHRoZSBtYWluIHRocmVhZC4gT3RoZXIgdGhyZWFkcyBzaG91bGQgY2xhaW0g YSByZWFkIGxvY2sgZm9yIGFjY2VzcworKyAgICBtdXRhYmxlIFFSZWFkV3JpdGVMb2NrIG1TdXJm YWNlTG9jazsKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRTdXJmYWNlPiBtU3VyZmFjZTsK KysKKyAgICAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKm1TaGVsbFN1cmZhY2UgPSBudWxscHRyOwor ICAgICBRV2F5bGFuZFN1YlN1cmZhY2UgKm1TdWJTdXJmYWNlV2luZG93ID0gbnVsbHB0cjsKKyAg ICAgUVZlY3RvcjxRV2F5bGFuZFN1YlN1cmZhY2UgKj4gbUNoaWxkcmVuOworQEAgLTIyNSwxMyAr MjM3LDE0IEBAIHByb3RlY3RlZDoKKyAgICAgUXQ6Ok1vdXNlQnV0dG9ucyBtTW91c2VQcmVzc2Vk SW5Db250ZW50QXJlYSA9IFF0OjpOb0J1dHRvbjsKKyAKKyAgICAgV0lkIG1XaW5kb3dJZDsKKy0g ICAgYm9vbCBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2sgPSBmYWxzZTsKKyAgICAgYm9vbCBtRnJh bWVDYWxsYmFja1RpbWVkT3V0ID0gZmFsc2U7IC8vIFdoZXRoZXIgdGhlIGZyYW1lIGNhbGxiYWNr IGhhcyB0aW1lZCBvdXQKKy0gICAgYm9vbCBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gZmFs c2U7CisgICAgIGludCBtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0gLTE7Cist ICAgIFFFbGFwc2VkVGltZXIgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXI7CistICAgIHN0cnVj dCA6OndsX2NhbGxiYWNrICptRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7CistICAgIFFXYXlsYW5k RGlzcGxheTo6RnJhbWVRdWV1ZSBtRnJhbWVRdWV1ZTsKKysgICAgUUF0b21pY0ludCBtV2FpdGlu Z0ZvclVwZGF0ZURlbGl2ZXJ5ID0gZmFsc2U7CisrCisrICAgIGJvb2wgbVdhaXRpbmdGb3JGcmFt ZUNhbGxiYWNrID0gZmFsc2U7IC8vIFByb3RlY3RlZCBieSBtRnJhbWVTeW5jTXV0ZXgKKysgICAg UUVsYXBzZWRUaW1lciBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lcjsgLy8gUHJvdGVjdGVkIGJ5 IG1GcmFtZVN5bmNNdXRleAorKyAgICBzdHJ1Y3QgOjp3bF9jYWxsYmFjayAqbUZyYW1lQ2FsbGJh Y2sgPSBudWxscHRyOyAvLyBQcm90ZWN0ZWQgYnkgbUZyYW1lU3luY011dGV4CisrICAgIFFNdXRl eCBtRnJhbWVTeW5jTXV0ZXg7CisgICAgIFFXYWl0Q29uZGl0aW9uIG1GcmFtZVN5bmNXYWl0Owor IAorICAgICAvLyBUcnVlIHdoZW4gd2UgaGF2ZSBjYWxsZWQgZGVsaXZlclJlcXVlc3RVcGRhdGUs IGJ1dCB0aGUgY2xpZW50IGhhcyBub3QgeWV0IGF0dGFjaGVkIGEgbmV3IGJ1ZmZlcgorQEAgLTI2 MSw2ICsyNzQsOCBAQCBwcm90ZWN0ZWQ6CisgICAgIFFXYXlsYW5kQnVmZmVyICptUXVldWVkQnVm ZmVyID0gbnVsbHB0cjsKKyAgICAgUVJlZ2lvbiBtUXVldWVkQnVmZmVyRGFtYWdlOworIAorKyAg ICBRTGlzdDxRUG9pbnRlcjxRV2F5bGFuZFdpbmRvdz4+IG1DaGlsZFBvcHVwczsKKysKKyBwcml2 YXRlOgorICAgICB2b2lkIHNldEdlb21ldHJ5X2hlbHBlcihjb25zdCBRUmVjdCAmcmVjdCk7Cisg ICAgIHZvaWQgaW5pdFdpbmRvdygpOworQEAgLTI4MywxMiArMjk4LDEwIEBAIHByaXZhdGU6Cisg ICAgIFFSZWN0IG1MYXN0RXhwb3NlR2VvbWV0cnk7CisgCisgICAgIHN0YXRpYyBjb25zdCB3bF9j YWxsYmFja19saXN0ZW5lciBjYWxsYmFja0xpc3RlbmVyOworLSAgICB2b2lkIGhhbmRsZUZyYW1l Q2FsbGJhY2soKTsKKysgICAgdm9pZCBoYW5kbGVGcmFtZUNhbGxiYWNrKHN0cnVjdCA6OndsX2Nh bGxiYWNrKiBjYWxsYmFjayk7CisgCisgICAgIHN0YXRpYyBRV2F5bGFuZFdpbmRvdyAqbU1vdXNl R3JhYjsKKyAKKy0gICAgbXV0YWJsZSBRUmVhZFdyaXRlTG9jayBtU3VyZmFjZUxvY2s7CistCisg ICAgIGZyaWVuZCBjbGFzcyBRV2F5bGFuZFN1YlN1cmZhY2U7CisgfTsKKyAKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvc3JjL2NsaWVudC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5kc2hlbGxpbnRl Z3JhdGlvbl9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9zaGVsbGludGVncmF0aW9uL3F3YXls YW5kc2hlbGxpbnRlZ3JhdGlvbl9wLmgKK2luZGV4IGNjYWQwMDQ4Li40Y2M5YjNiOCAxMDA2NDQK Ky0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3NoZWxsaW50ZWdyYXRpb24vcXdheWxhbmRzaGVs bGludGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvc2hlbGxpbnRlZ3Jh dGlvbi9xd2F5bGFuZHNoZWxsaW50ZWdyYXRpb25fcC5oCitAQCAtNzMsMTEgKzczLDEwIEBAIHB1 YmxpYzoKKyAgICAgICAgIHJldHVybiB0cnVlOworICAgICB9CisgICAgIHZpcnR1YWwgUVdheWxh bmRTaGVsbFN1cmZhY2UgKmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpbmRvdyAqd2luZG93 KSA9IDA7CisrICAgIC8vIGtlcHQgZm9yIGJpbmFyeSBjb21wYXQgd2l0aCBsYXllci1zaGVsbC1x dAorICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRX aW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpIHsKKy0gICAgICAgIGlm IChuZXdGb2N1cykKKy0gICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0FjdGl2YXRl ZChuZXdGb2N1cyk7CistICAgICAgICBpZiAob2xkRm9jdXMpCistICAgICAgICAgICAgbV9kaXNw bGF5LT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChvbGRGb2N1cyk7CisrICAgICAgICBRX1VOVVNF RChuZXdGb2N1cyk7CisrICAgICAgICBRX1VOVVNFRChvbGRGb2N1cyk7CisgICAgIH0KKyAgICAg dmlydHVhbCB2b2lkICpuYXRpdmVSZXNvdXJjZUZvcldpbmRvdyhjb25zdCBRQnl0ZUFycmF5ICZy ZXNvdXJjZSwgUVdpbmRvdyAqd2luZG93KSB7CisgICAgICAgICBRX1VOVVNFRChyZXNvdXJjZSk7 CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jb21wb3NpdG9yL2NvbmZpZ3VyZS5qc29uIGIv cXR3YXlsYW5kL3NyYy9jb21wb3NpdG9yL2NvbmZpZ3VyZS5qc29uCitpbmRleCBiY2ZkNTIxNS4u ZGE5NWQwN2IgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NvbXBvc2l0b3IvY29uZmlndXJl Lmpzb24KKysrKyBiL3F0d2F5bGFuZC9zcmMvY29tcG9zaXRvci9jb25maWd1cmUuanNvbgorQEAg LTcsNiArNywzMSBAQAorICAgICAidGVzdERpciI6ICIuLi8uLi9jb25maWcudGVzdHMiLAorIAor ICAgICAibGlicmFyaWVzIjogeworKyAgICAgICAgIndheWxhbmQtY2xpZW50IjogeworKyAgICAg ICAgICAgICJsYWJlbCI6ICJXYXlsYW5kIGNsaWVudCBsaWJyYXJ5IiwKKysgICAgICAgICAgICAi aGVhZGVycyI6ICJ3YXlsYW5kLXZlcnNpb24uaCIsCisrICAgICAgICAgICAgInRlc3QiOiB7Cisr ICAgICAgICAgICAgICAgICJtYWluIjogWworKyAgICAgICAgICAgICAgICAgICAgIiNpZiBXQVlM QU5EX1ZFUlNJT05fTUFKT1IgPCAxIiwKKysgICAgICAgICAgICAgICAgICAgICIjIGVycm9yIFdh eWxhbmQgMS44LjAgb3IgaGlnaGVyIHJlcXVpcmVkIiwKKysgICAgICAgICAgICAgICAgICAgICIj ZW5kaWYiLAorKyAgICAgICAgICAgICAgICAgICAgIiNpZiBXQVlMQU5EX1ZFUlNJT05fTUFKT1Ig PT0gMSIsCisrICAgICAgICAgICAgICAgICAgICAiIyBpZiBXQVlMQU5EX1ZFUlNJT05fTUlOT1Ig PCA4IiwKKysgICAgICAgICAgICAgICAgICAgICIjICBlcnJvciBXYXlsYW5kIDEuOC4wIG9yIGhp Z2hlciByZXF1aXJlZCIsCisrICAgICAgICAgICAgICAgICAgICAiIyBlbmRpZiIsCisrICAgICAg ICAgICAgICAgICAgICAiIyBpZiBXQVlMQU5EX1ZFUlNJT05fTUlOT1IgPT0gOCIsCisrICAgICAg ICAgICAgICAgICAgICAiIyAgaWYgV0FZTEFORF9WRVJTSU9OX01JQ1JPIDwgMCIsCisrICAgICAg ICAgICAgICAgICAgICAiIyAgIGVycm9yIFdheWxhbmQgMS44LjAgb3IgaGlnaGVyIHJlcXVpcmVk IiwKKysgICAgICAgICAgICAgICAgICAgICIjICBlbmRpZiIsCisrICAgICAgICAgICAgICAgICAg ICAiIyBlbmRpZiIsCisrICAgICAgICAgICAgICAgICAgICAiI2VuZGlmIgorKyAgICAgICAgICAg ICAgICAgXQorKyAgICAgICAgICAgIH0sCisrICAgICAgICAgICAgInNvdXJjZXMiOiBbCisrICAg ICAgICAgICAgICAgIHsgInR5cGUiOiAicGtnQ29uZmlnIiwgImFyZ3MiOiAid2F5bGFuZC1jbGll bnQiIH0sCisrICAgICAgICAgICAgICAgICItbHdheWxhbmQtY2xpZW50IgorKyAgICAgICAgICAg IF0KKysgICAgICAgIH0sCisgICAgICAgICAid2F5bGFuZC1zZXJ2ZXIiOiB7CisgICAgICAgICAg ICAgImxhYmVsIjogIndheWxhbmQtc2VydmVyIiwKKyAgICAgICAgICAgICAiaGVhZGVycyI6ICJ3 YXlsYW5kLXZlcnNpb24uaCIsCitAQCAtMTUxLDggKzE3Niw3IEBACisgICAgICAgICAgICAgICAg ICAgICAiI2VuZGlmIgorICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgfSwKKy0gICAg ICAgICAgICAibGlicyI6ICItbGRybSIsCistICAgICAgICAgICAgInVzZSI6ICJlZ2wiCisrICAg ICAgICAgICAgInVzZSI6ICJkcm0gZWdsIgorICAgICAgICAgfSwKKyAgICAgICAgICJkbWFidWYt Y2xpZW50LWJ1ZmZlciI6IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAiTGludXggQ2xpZW50IGRt YS1idWYgQnVmZmVyIFNoYXJpbmciLAorQEAgLTE3Niw4ICsyMDAsNyBAQAorICAgICAgICAgICAg ICAgICAgICAgInJldHVybiAwOyIKKyAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgIH0s CistICAgICAgICAgICAgImxpYnMiOiAiLWxkcm0iLAorLSAgICAgICAgICAgICJ1c2UiOiAiZWds IgorKyAgICAgICAgICAgICJ1c2UiOiAiZHJtIGVnbCIKKyAgICAgICAgIH0sCisgICAgICAgICAi dnVsa2FuLXNlcnZlci1idWZmZXIiOiB7CisgICAgICAgICAgICAgImxhYmVsIjogIlZ1bGthbiBC dWZmZXIgU2hhcmluZyIsCitAQCAtMTk1LDcgKzIxOCw4IEBACisgICAgICAgICAgICAgICAgICAg ICAiZXhwb3J0QWxsb2NJbmZvLmhhbmRsZVR5cGVzID0gVktfRVhURVJOQUxfTUVNT1JZX0hBTkRM RV9UWVBFX09QQVFVRV9GRF9CSVRfS0hSOyIsCisgICAgICAgICAgICAgICAgICAgICAicmV0dXJu IDA7IgorICAgICAgICAgICAgICAgICBdCistICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0s CisrICAgICAgICAgICAgInVzZSI6ICJ3YXlsYW5kLWNsaWVudCIKKyAgICAgICAgIH0KKyAgICAg fSwKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xp ZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmNwcCBiL3F0d2F5bGFuZC9zcmMvaGFy ZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuY3Bw CitpbmRleCA3ODg5ZjU3NS4uNjQxNDA2NzIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2hh cmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmNw cAorKysrIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5k LWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5jcHAKK0BAIC00MCw2ICs0MCw3IEBACisgI2luY2x1ZGUg InF3YXlsYW5kZWdsd2luZG93LmgiCisgCisgI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2 YXRlL3F3YXlsYW5kc2NyZWVuX3AuaD4KKysjaW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZh dGUvcXdheWxhbmRzdXJmYWNlX3AuaD4KKyAjaW5jbHVkZSAicXdheWxhbmRnbGNvbnRleHQuaCIK KyAKKyAjaW5jbHVkZSA8UXRFZ2xTdXBwb3J0L3ByaXZhdGUvcWVnbGNvbnZlbmllbmNlX3AuaD4K K0BAIC0xMjQsNiArMTI1LDcgQEAgdm9pZCBRV2F5bGFuZEVnbFdpbmRvdzo6dXBkYXRlU3VyZmFj ZShib29sIGNyZWF0ZSkKKyAgICAgICAgIH0KKyAgICAgICAgIG1PZmZzZXQgPSBRUG9pbnQoKTsK KyAgICAgfSBlbHNlIHsKKysgICAgICAgIFFSZWFkTG9ja2VyIGxvY2tlcigmbVN1cmZhY2VMb2Nr KTsKKyAgICAgICAgIGlmIChtX3dheWxhbmRFZ2xXaW5kb3cpIHsKKyAgICAgICAgICAgICBpbnQg Y3VycmVudF93aWR0aCwgY3VycmVudF9oZWlnaHQ7CisgICAgICAgICAgICAgc3RhdGljIGJvb2wg ZGlzYWJsZVJlc2l6ZUNoZWNrID0gcWdldGVudigiUVRfV0FZTEFORF9ESVNBQkxFX1JFU0laRUNI RUNLIikudG9JbnQoKTsKK0BAIC0xMzEsMTQgKzEzMywxNiBAQCB2b2lkIFFXYXlsYW5kRWdsV2lu ZG93Ojp1cGRhdGVTdXJmYWNlKGJvb2wgY3JlYXRlKQorICAgICAgICAgICAgIGlmICghZGlzYWJs ZVJlc2l6ZUNoZWNrKSB7CisgICAgICAgICAgICAgICAgIHdsX2VnbF93aW5kb3dfZ2V0X2F0dGFj aGVkX3NpemUobV93YXlsYW5kRWdsV2luZG93LCAmY3VycmVudF93aWR0aCwgJmN1cnJlbnRfaGVp Z2h0KTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgaWYgKGRpc2FibGVSZXNpemVDaGVj ayB8fCAoY3VycmVudF93aWR0aCAhPSBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSB8fCBjdXJyZW50 X2hlaWdodCAhPSBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCkpKSB7CisrICAgICAgICAgICAgaWYg KGRpc2FibGVSZXNpemVDaGVjayB8fCAoY3VycmVudF93aWR0aCAhPSBzaXplV2l0aE1hcmdpbnMu d2lkdGgoKSB8fCBjdXJyZW50X2hlaWdodCAhPSBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCkpIHx8 IG1fcmVxdWVzdGVkU2l6ZSAhPSBzaXplV2l0aE1hcmdpbnMpIHsKKyAgICAgICAgICAgICAgICAg d2xfZWdsX3dpbmRvd19yZXNpemUobV93YXlsYW5kRWdsV2luZG93LCBzaXplV2l0aE1hcmdpbnMu d2lkdGgoKSwgc2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpLCBtT2Zmc2V0LngoKSwgbU9mZnNldC55 KCkpOworKyAgICAgICAgICAgICAgICBtX3JlcXVlc3RlZFNpemUgPSBzaXplV2l0aE1hcmdpbnM7 CisgICAgICAgICAgICAgICAgIG1PZmZzZXQgPSBRUG9pbnQoKTsKKyAKKyAgICAgICAgICAgICAg ICAgbV9yZXNpemUgPSB0cnVlOworICAgICAgICAgICAgIH0KKy0gICAgICAgIH0gZWxzZSBpZiAo Y3JlYXRlICYmIHdsU3VyZmFjZSgpKSB7CistICAgICAgICAgICAgbV93YXlsYW5kRWdsV2luZG93 ID0gd2xfZWdsX3dpbmRvd19jcmVhdGUod2xTdXJmYWNlKCksIHNpemVXaXRoTWFyZ2lucy53aWR0 aCgpLCBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCkpOworKyAgICAgICAgfSBlbHNlIGlmIChjcmVh dGUgJiYgbVN1cmZhY2UpIHsKKysgICAgICAgICAgICBtX3dheWxhbmRFZ2xXaW5kb3cgPSB3bF9l Z2xfd2luZG93X2NyZWF0ZShtU3VyZmFjZS0+b2JqZWN0KCksIHNpemVXaXRoTWFyZ2lucy53aWR0 aCgpLCBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCkpOworKyAgICAgICAgICAgIG1fcmVxdWVzdGVk U2l6ZSA9IHNpemVXaXRoTWFyZ2luczsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIGlmICghbV9l Z2xTdXJmYWNlICYmIG1fd2F5bGFuZEVnbFdpbmRvdyAmJiBjcmVhdGUpIHsKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3 YXlsYW5kZWdsd2luZG93LmggYi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xp ZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmgKK2luZGV4IDViMWY0ZDU2Li4wMDc5 ZGZlZiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGll bnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9o YXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5o CitAQCAtODgsNiArODgsNyBAQCBwcml2YXRlOgorICAgICBtdXRhYmxlIFFPcGVuR0xGcmFtZWJ1 ZmZlck9iamVjdCAqbV9jb250ZW50RkJPID0gbnVsbHB0cjsKKyAKKyAgICAgUVN1cmZhY2VGb3Jt YXQgbV9mb3JtYXQ7CisrICAgIFFTaXplIG1fcmVxdWVzdGVkU2l6ZTsKKyB9OworIAorIH0KK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY29tcG9zaXRvci9s aW51eC1kbWFidWYtdW5zdGFibGUtdjEvbGludXhkbWFidWYuaCBiL3F0d2F5bGFuZC9zcmMvaGFy ZHdhcmVpbnRlZ3JhdGlvbi9jb21wb3NpdG9yL2xpbnV4LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51 eGRtYWJ1Zi5oCitpbmRleCA1NmE3MTBjMy4uYzZhOGI2YzYgMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY29tcG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFi bGUtdjEvbGludXhkbWFidWYuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0 aW9uL2NvbXBvc2l0b3IvbGludXgtZG1hYnVmLXVuc3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmgKK0BA IC00MSw2ICs0MSw4IEBACisgI2luY2x1ZGUgPFF0Q29yZS9RVGV4dFN0cmVhbT4KKyAjaW5jbHVk ZSA8UXRHdWkvUU9wZW5HTFRleHR1cmU+CisgCisrI2luY2x1ZGUgPGFycmF5PgorKworICNpbmNs dWRlIDxFR0wvZWdsLmg+CisgI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKyAKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvZGVjb3JhdGlvbnMvYnJhZGllbnQvbWFpbi5jcHAgYi9x dHdheWxhbmQvc3JjL3BsdWdpbnMvZGVjb3JhdGlvbnMvYnJhZGllbnQvbWFpbi5jcHAKK2luZGV4 IGU3NWZkYTNjLi5mYTg4NTE0MyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9k ZWNvcmF0aW9ucy9icmFkaWVudC9tYWluLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5z L2RlY29yYXRpb25zL2JyYWRpZW50L21haW4uY3BwCitAQCAtMTY0LDEzICsxNjQsMTAgQEAgdm9p ZCBRV2F5bGFuZEJyYWRpZW50RGVjb3JhdGlvbjo6cGFpbnQoUVBhaW50RGV2aWNlICpkZXZpY2Up CisgICAgIC8vIFdpbmRvdyBpY29uCisgICAgIFFJY29uIGljb24gPSB3YXlsYW5kV2luZG93KCkt PndpbmRvd0ljb24oKTsKKyAgICAgaWYgKCFpY29uLmlzTnVsbCgpKSB7CistICAgICAgICBRUGl4 bWFwIHBpeG1hcCA9IGljb24ucGl4bWFwKFFTaXplKDEyOCwgMTI4KSk7CistICAgICAgICBRUGl4 bWFwIHNjYWxlZCA9IHBpeG1hcC5zY2FsZWQoMjIsIDIyLCBRdDo6SWdub3JlQXNwZWN0UmF0aW8s IFF0OjpTbW9vdGhUcmFuc2Zvcm1hdGlvbik7CistCisgICAgICAgICBRUmVjdEYgaWNvblJlY3Qo MCwgMCwgMjIsIDIyKTsKKy0gICAgICAgIHAuZHJhd1BpeG1hcChpY29uUmVjdC5hZGp1c3RlZCht YXJnaW5zKCkubGVmdCgpICsgQlVUVE9OX1NQQUNJTkcsIDQsCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbWFyZ2lucygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0 KSwKKy0gICAgICAgICAgICAgICAgICAgICBzY2FsZWQsIGljb25SZWN0KTsKKysgICAgICAgIGlj b25SZWN0LmFkanVzdChtYXJnaW5zKCkubGVmdCgpICsgQlVUVE9OX1NQQUNJTkcsIDQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgbWFyZ2lucygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0 KSwKKysgICAgICAgIGljb24ucGFpbnQoJnAsIGljb25SZWN0LnRvUmVjdCgpKTsKKyAgICAgfQor IAorICAgICAvLyBXaW5kb3cgdGl0bGUKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdp bnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1LmNwcCBi L3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5 bGFuZHhkZ3BvcHVwdjUuY3BwCitpbmRleCA4NWQyNWUzYy4uNjBiZGQ0OTEgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdh eWxhbmR4ZGdwb3B1cHY1LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50 ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NS5jcHAKK0BAIC00NywxOCAr NDcsMjEgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgbmFtZXNwYWNlIFF0V2F5bGFuZENsaWVu dCB7CisgCistUVdheWxhbmRYZGdQb3B1cFY1OjpRV2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6 eGRnX3BvcHVwX3Y1ICpwb3B1cCwgUVdheWxhbmRXaW5kb3cgKndpbmRvdykKKytRV2F5bGFuZFhk Z1BvcHVwVjU6OlFXYXlsYW5kWGRnUG9wdXBWNShzdHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVw LCBRV2F5bGFuZFdpbmRvdyogcGFyZW50LCBRV2F5bGFuZFdpbmRvdyAqd2luZG93KQorICAgICA6 IFFXYXlsYW5kU2hlbGxTdXJmYWNlKHdpbmRvdykKKyAgICAgLCBRdFdheWxhbmQ6OnhkZ19wb3B1 cF92NShwb3B1cCkKKysgICAgLCBtX3BhcmVudChwYXJlbnQpCisgICAgICwgbV93aW5kb3cod2lu ZG93KQorIHsKKyAgICAgaWYgKHdpbmRvdy0+ZGlzcGxheSgpLT53aW5kb3dFeHRlbnNpb24oKSkK KyAgICAgICAgIG1fZXh0ZW5kZWRXaW5kb3cgPSBuZXcgUVdheWxhbmRFeHRlbmRlZFN1cmZhY2Uo d2luZG93KTsKKysgICAgbV9wYXJlbnQtPmFkZENoaWxkUG9wdXAobV93aW5kb3cpOworIH0KKyAK KyBRV2F5bGFuZFhkZ1BvcHVwVjU6On5RV2F5bGFuZFhkZ1BvcHVwVjUoKQorIHsKKyAgICAgeGRn X3BvcHVwX2Rlc3Ryb3kob2JqZWN0KCkpOworKyAgICBtX3BhcmVudC0+cmVtb3ZlQ2hpbGRQb3B1 cChtX3dpbmRvdyk7CisgICAgIGRlbGV0ZSBtX2V4dGVuZGVkV2luZG93OworIH0KKyAKK2RpZmYg LS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwt djUvcXdheWxhbmR4ZGdwb3B1cHY1X3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGlu dGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjVfcC5oCitpbmRleCA3NDk0 ZjZhNi4uZDg1ZjEzMGIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxp bnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1X3AuaAorKysrIGIvcXR3 YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5k eGRncG9wdXB2NV9wLmgKK0BAIC03MCw3ICs3MCw3IEBAIGNsYXNzIFFfV0FZTEFORF9DTElFTlRf RVhQT1JUIFFXYXlsYW5kWGRnUG9wdXBWNSA6IHB1YmxpYyBRV2F5bGFuZFNoZWxsU3VyZmFjZQor IHsKKyAgICAgUV9PQkpFQ1QKKyBwdWJsaWM6CistICAgIFFXYXlsYW5kWGRnUG9wdXBWNShzdHJ1 Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVwLCBRV2F5bGFuZFdpbmRvdyAqd2luZG93KTsKKysgICAg UVdheWxhbmRYZGdQb3B1cFY1KHN0cnVjdCA6OnhkZ19wb3B1cF92NSAqcG9wdXAsIFFXYXlsYW5k V2luZG93KiBwYXJlbnQsIFFXYXlsYW5kV2luZG93ICp3aW5kb3cpOworICAgICB+UVdheWxhbmRY ZGdQb3B1cFY1KCkgb3ZlcnJpZGU7CisgCisgcHJvdGVjdGVkOgorQEAgLTc4LDYgKzc4LDcgQEAg cHJvdGVjdGVkOgorIAorIHByaXZhdGU6CisgICAgIFFXYXlsYW5kRXh0ZW5kZWRTdXJmYWNlICpt X2V4dGVuZGVkV2luZG93ID0gbnVsbHB0cjsKKysgICAgUVdheWxhbmRXaW5kb3cgKm1fcGFyZW50 ID0gbnVsbHB0cjsKKyAgICAgUVdheWxhbmRXaW5kb3cgKm1fd2luZG93ID0gbnVsbHB0cjsKKyB9 OworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9u L3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUuY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVn aW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NS5jcHAK K2luZGV4IDdlMjQyYzRhLi5kZWY4NDUyYSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUuY3Bw CisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwt djUvcXdheWxhbmR4ZGdzaGVsbHY1LmNwcAorQEAgLTg0LDcgKzg0LDcgQEAgUVdheWxhbmRYZGdQ b3B1cFY1ICpRV2F5bGFuZFhkZ1NoZWxsVjU6OmNyZWF0ZVhkZ1BvcHVwKFFXYXlsYW5kV2luZG93 ICp3aW5kb3csIFEKKyAgICAgaW50IHggPSBwb3NpdGlvbi54KCkgKyBwYXJlbnRXaW5kb3ctPmZy YW1lTWFyZ2lucygpLmxlZnQoKTsKKyAgICAgaW50IHkgPSBwb3NpdGlvbi55KCkgKyBwYXJlbnRX aW5kb3ctPmZyYW1lTWFyZ2lucygpLnRvcCgpOworIAorLSAgICBhdXRvIHBvcHVwID0gbmV3IFFX YXlsYW5kWGRnUG9wdXBWNShnZXRfeGRnX3BvcHVwKHdpbmRvdy0+d2xTdXJmYWNlKCksIHBhcmVu dFN1cmZhY2UsIHNlYXQsIG1fcG9wdXBTZXJpYWwsIHgsIHkpLCB3aW5kb3cpOworKyAgICBhdXRv IHBvcHVwID0gbmV3IFFXYXlsYW5kWGRnUG9wdXBWNShnZXRfeGRnX3BvcHVwKHdpbmRvdy0+d2xT dXJmYWNlKCksIHBhcmVudFN1cmZhY2UsIHNlYXQsIG1fcG9wdXBTZXJpYWwsIHgsIHkpLCBwYXJl bnRXaW5kb3csIHdpbmRvdyk7CisgICAgIG1fcG9wdXBzLmFwcGVuZCh3aW5kb3cpOworICAgICBR T2JqZWN0Ojpjb25uZWN0KHBvcHVwLCAmUVdheWxhbmRYZGdQb3B1cFY1OjpkZXN0cm95ZWQsIFt0 aGlzLCB3aW5kb3ddKCl7CisgICAgICAgICBtX3BvcHVwcy5yZW1vdmVPbmUod2luZG93KTsKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9w bHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWlu dGVncmF0aW9uLmNwcAoraW5kZXggNGUyNTk0OWYuLmNmYzYwOTM5IDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5k eGRnc2hlbGx2NWludGVncmF0aW9uLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9u LmNwcAorQEAgLTg1LDEzICs4NSw2IEBAIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpRV2F5bGFuZFhk Z1NoZWxsVjVJbnRlZ3JhdGlvbjo6Y3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kCisgICAgIHJl dHVybiBtX3hkZ1NoZWxsLT5jcmVhdGVYZGdTdXJmYWNlKHdpbmRvdyk7CisgfQorIAorLXZvaWQg UVdheWxhbmRYZGdTaGVsbFY1SW50ZWdyYXRpb246OmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2Vk KFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSB7Cist ICAgIGlmIChuZXdGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdQb3B1cFY1ICo+KG5l d0ZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpCistICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRv d0FjdGl2YXRlZChuZXdGb2N1cyk7CistICAgIGlmIChvbGRGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8 UVdheWxhbmRYZGdQb3B1cFY1ICo+KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpCistICAgICAg ICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG9sZEZvY3VzKTsKKy19CistCisg fQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdp bnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdy YXRpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNo ZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uX3AuaAoraW5kZXggY2U2YmRiOWUu LmFlZDg4NjcwIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uX3AuaAorKysr IGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3 YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uX3AuaAorQEAgLTY3LDcgKzY3LDYgQEAgcHVibGlj OgorICAgICBRV2F5bGFuZFhkZ1NoZWxsVjVJbnRlZ3JhdGlvbigpIHt9CisgICAgIGJvb2wgaW5p dGlhbGl6ZShRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOworICAgICBRV2F5bGFu ZFNoZWxsU3VyZmFjZSAqY3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kV2luZG93ICp3aW5kb3cp IG92ZXJyaWRlOworLSAgICB2b2lkIGhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5k V2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSBvdmVycmlkZTsKKyAK KyBwcml2YXRlOgorICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5bGFuZFhkZ1NoZWxsVjU+IG1feGRn U2hlbGw7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2Ni5jcHAgYi9xdHdheWxhbmQvc3JjL3Bs dWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2LmNw cAoraW5kZXggOGMzNzE2NjEuLjE1MWM3OGUzIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9w bHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2Ni5j cHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVs bC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjYuY3BwCitAQCAtMTc0LDYgKzE3NCw3IEBAIFFXYXlsYW5k WGRnU3VyZmFjZVY2OjpQb3B1cDo6UG9wdXAoUVdheWxhbmRYZGdTdXJmYWNlVjYgKnhkZ1N1cmZh Y2UsIFFXYXlsYW5kWGRnCisgICAgICwgbV94ZGdTdXJmYWNlKHhkZ1N1cmZhY2UpCisgICAgICwg bV9wYXJlbnQocGFyZW50KQorIHsKKysgICAgbV9wYXJlbnQtPndpbmRvdygpLT5hZGRDaGlsZFBv cHVwKG1feGRnU3VyZmFjZS0+d2luZG93KCkpOworIH0KKyAKKyBRV2F5bGFuZFhkZ1N1cmZhY2VW Njo6UG9wdXA6On5Qb3B1cCgpCitAQCAtMTgxLDYgKzE4Miw4IEBAIFFXYXlsYW5kWGRnU3VyZmFj ZVY2OjpQb3B1cDo6flBvcHVwKCkKKyAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAg IGRlc3Ryb3koKTsKKyAKKysgICAgbV9wYXJlbnQtPndpbmRvdygpLT5yZW1vdmVDaGlsZFBvcHVw KG1feGRnU3VyZmFjZS0+d2luZG93KCkpOworKworICAgICBpZiAobV9ncmFiYmluZykgeworICAg ICAgICAgYXV0byAqc2hlbGwgPSBtX3hkZ1N1cmZhY2UtPm1fc2hlbGw7CisgICAgICAgICBRX0FT U0VSVChzaGVsbC0+bV90b3Btb3N0R3JhYmJpbmdQb3B1cCA9PSB0aGlzKTsKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdh eWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9u LmNwcAoraW5kZXggMDMxNjQzMTYuLmU4ZGE4YmExIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Ny Yy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2 NmludGVncmF0aW9uLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uLmNwcAorQEAg LTY4LDIwICs2OCw2IEBAIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpRV2F5bGFuZFhkZ1NoZWxsVjZJ bnRlZ3JhdGlvbjo6Y3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kCisgICAgIHJldHVybiBtX3hk Z1NoZWxsLT5nZXRYZGdTdXJmYWNlKHdpbmRvdyk7CisgfQorIAorLXZvaWQgUVdheWxhbmRYZGdT aGVsbFY2SW50ZWdyYXRpb246OmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2lu ZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKQorLXsKKy0gICAgaWYgKG5l d0ZvY3VzKSB7CistICAgICAgICBhdXRvICp4ZGdTdXJmYWNlID0gcW9iamVjdF9jYXN0PFFXYXls YW5kWGRnU3VyZmFjZVY2ICo+KG5ld0ZvY3VzLT5zaGVsbFN1cmZhY2UoKSk7CistICAgICAgICBp ZiAoeGRnU3VyZmFjZSAmJiAheGRnU3VyZmFjZS0+aGFuZGxlc0FjdGl2ZVN0YXRlKCkpCistICAg ICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobmV3Rm9jdXMpOworLSAg ICB9CistICAgIGlmIChvbGRGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNl VjYgKj4ob2xkRm9jdXMtPnNoZWxsU3VyZmFjZSgpKSkgeworLSAgICAgICAgYXV0byAqeGRnU3Vy ZmFjZSA9IHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2VWNiAqPihvbGRGb2N1cy0+c2hl bGxTdXJmYWNlKCkpOworLSAgICAgICAgaWYgKHhkZ1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2UtPmhh bmRsZXNBY3RpdmVTdGF0ZSgpKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93 RGVhY3RpdmF0ZWQob2xkRm9jdXMpOworLSAgICB9CistfQorLQorIH0KKyAKKyBRVF9FTkRfTkFN RVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uX3AuaCBiL3F0d2F5 bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhk Z3NoZWxsdjZpbnRlZ3JhdGlvbl9wLmgKK2luZGV4IDI2MWY4Y2JiLi5jMWJjZDVjNiAxMDA2NDQK Ky0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12 Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMv cGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZp bnRlZ3JhdGlvbl9wLmgKK0BAIC02NSw3ICs2NSw2IEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmRY ZGdTaGVsbFY2SW50ZWdyYXRpb24oKSB7fQorICAgICBib29sIGluaXRpYWxpemUoUVdheWxhbmRE aXNwbGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKKyAgICAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKmNy ZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpbmRvdyAqd2luZG93KSBvdmVycmlkZTsKKy0gICAg dm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMs IFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykgb3ZlcnJpZGU7CisgCisgcHJpdmF0ZToKKyAgICAg UVNjb3BlZFBvaW50ZXI8UVdheWxhbmRYZGdTaGVsbFY2PiBtX3hkZ1NoZWxsOworZGlmZiAtLWdp dCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5 bGFuZHhkZ3NoZWxsLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9u L3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsLmNwcAoraW5kZXggZjNlM2MzMzAuLmZhNmQ1ODA4 IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRn LXNoZWxsL3F3YXlsYW5keGRnc2hlbGwuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMv c2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbC5jcHAKK0BAIC02Nywx MSArNjcsNiBAQCBRV2F5bGFuZFhkZ1N1cmZhY2U6OlRvcGxldmVsOjpUb3BsZXZlbChRV2F5bGFu ZFhkZ1N1cmZhY2UgKnhkZ1N1cmZhY2UpCisgCisgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZl bDo6flRvcGxldmVsKCkKKyB7CistICAgIGlmIChtX2FwcGxpZWQuc3RhdGVzICYgUXQ6OldpbmRv d0FjdGl2ZSkgeworLSAgICAgICAgUVdheWxhbmRXaW5kb3cgKndpbmRvdyA9IG1feGRnU3VyZmFj ZS0+d2luZG93KCk7CistICAgICAgICB3aW5kb3ctPmRpc3BsYXkoKS0+aGFuZGxlV2luZG93RGVh Y3RpdmF0ZWQod2luZG93KTsKKy0gICAgfQorLQorICAgICAvLyBUaGUgcHJvdG9jb2wgc3BlYyBy ZXF1aXJlcyB0aGF0IHRoZSBkZWNvcmF0aW9uIG9iamVjdCBpcyBkZWxldGVkIGJlZm9yZSB4ZGdf dG9wbGV2ZWwuCisgICAgIGRlbGV0ZSBtX2RlY29yYXRpb247CisgICAgIG1fZGVjb3JhdGlvbiA9 IG51bGxwdHI7CitAQCAtODUsMTYgKzgwLDE1IEBAIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpU b3BsZXZlbDo6YXBwbHlDb25maWd1cmUoKQorICAgICBpZiAoIShtX2FwcGxpZWQuc3RhdGVzICYg KFF0OjpXaW5kb3dNYXhpbWl6ZWR8UXQ6OldpbmRvd0Z1bGxTY3JlZW4pKSkKKyAgICAgICAgIG1f bm9ybWFsU2l6ZSA9IG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPndpbmRvd0ZyYW1lR2VvbWV0cnko KS5zaXplKCk7CisgCistICAgIGlmICgobV9wZW5kaW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3Rp dmUpICYmICEobV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpKQorKyAgICBpZiAo KG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSAmJiAhKG1fYXBwbGllZC5zdGF0 ZXMgJiBRdDo6V2luZG93QWN0aXZlKQorKyAgICAgICAgJiYgIW1feGRnU3VyZmFjZS0+bV93aW5k b3ctPmRpc3BsYXkoKS0+aXNLZXlib2FyZEF2YWlsYWJsZSgpKQorICAgICAgICAgbV94ZGdTdXJm YWNlLT5tX3dpbmRvdy0+ZGlzcGxheSgpLT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobV94ZGdTdXJm YWNlLT5tX3dpbmRvdyk7CisgCistICAgIGlmICghKG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2lu ZG93QWN0aXZlKSAmJiAobV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpKQorKyAg ICBpZiAoIShtX3BlbmRpbmcuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkgJiYgKG1fYXBwbGll ZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKQorKyAgICAgICAgJiYgIW1feGRnU3VyZmFjZS0+ bV93aW5kb3ctPmRpc3BsYXkoKS0+aXNLZXlib2FyZEF2YWlsYWJsZSgpKQorICAgICAgICAgbV94 ZGdTdXJmYWNlLT5tX3dpbmRvdy0+ZGlzcGxheSgpLT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZCht X3hkZ1N1cmZhY2UtPm1fd2luZG93KTsKKyAKKy0gICAgLy8gVE9ETzogbm9uZSBvZiB0aGUgb3Ro ZXIgcGx1Z2lucyBzZW5kIFdpbmRvd0FjdGl2ZSBlaXRoZXIsIGJ1dCBpcyBpdCBvbiBwdXJwb3Nl PworLSAgICBRdDo6V2luZG93U3RhdGVzIHN0YXRlc1dpdGhvdXRBY3RpdmUgPSBtX3BlbmRpbmcu c3RhdGVzICYgflF0OjpXaW5kb3dBY3RpdmU7CistCistICAgIG1feGRnU3VyZmFjZS0+bV93aW5k b3ctPmhhbmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQoc3RhdGVzV2l0aG91dEFjdGl2ZSk7CisrICAg IG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmhhbmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQobV9wZW5k aW5nLnN0YXRlcyk7CisgCisgICAgIGlmIChtX3BlbmRpbmcuc2l6ZS5pc0VtcHR5KCkpIHsKKyAg ICAgICAgIC8vIEFuIGVtcHR5IHNpemUgaW4gdGhlIGNvbmZpZ3VyZSBtZWFucyBpdCdzIHVwIHRv IHRoZSBjbGllbnQgdG8gY2hvb3NlIHRoZSBzaXplCitAQCAtMTA1LDggKzk5LDYgQEAgdm9pZCBR V2F5bGFuZFhkZ1N1cmZhY2U6OlRvcGxldmVsOjphcHBseUNvbmZpZ3VyZSgpCisgICAgICAgICBt X3hkZ1N1cmZhY2UtPm1fd2luZG93LT5yZXNpemVGcm9tQXBwbHlDb25maWd1cmUobV9wZW5kaW5n LnNpemUpOworICAgICB9CisgCistICAgIG1feGRnU3VyZmFjZS0+c2V0U2l6ZUhpbnRzKCk7Cist CisgICAgIG1fYXBwbGllZCA9IG1fcGVuZGluZzsKKyAgICAgcUNEZWJ1ZyhsY1FwYVdheWxhbmQp IDw8ICJBcHBsaWVkIHBlbmRpbmcgeGRnX3RvcGxldmVsIGNvbmZpZ3VyZSBldmVudDoiIDw8IG1f YXBwbGllZC5zaXplIDw8IG1fYXBwbGllZC5zdGF0ZXM7CisgfQorQEAgLTIwMywxMiArMTk1LDE3 IEBAIFF0V2F5bGFuZDo6eGRnX3RvcGxldmVsOjpyZXNpemVfZWRnZSBRV2F5bGFuZFhkZ1N1cmZh Y2U6OlRvcGxldmVsOjpjb252ZXJ0VG9SZXNpCisgICAgICAgICAgICAgICAgIHwgKChlZGdlcyAm IFF0OjpSaWdodEVkZ2UpID8gcmVzaXplX2VkZ2VfcmlnaHQgOiAwKSk7CisgfQorIAorLVFXYXls YW5kWGRnU3VyZmFjZTo6UG9wdXA6OlBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFj ZSwgUVdheWxhbmRYZGdTdXJmYWNlICpwYXJlbnQsCisrUVdheWxhbmRYZGdTdXJmYWNlOjpQb3B1 cDo6UG9wdXAoUVdheWxhbmRYZGdTdXJmYWNlICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFdpbmRvdyAq cGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0V2F5bGFuZDo6eGRn X3Bvc2l0aW9uZXIgKnBvc2l0aW9uZXIpCistICAgIDogeGRnX3BvcHVwKHhkZ1N1cmZhY2UtPmdl dF9wb3B1cChwYXJlbnQtPm9iamVjdCgpLCBwb3NpdGlvbmVyLT5vYmplY3QoKSkpCistICAgICwg bV94ZGdTdXJmYWNlKHhkZ1N1cmZhY2UpCisrICAgIDogbV94ZGdTdXJmYWNlKHhkZ1N1cmZhY2Up CisrICAgICwgbV9wYXJlbnRYZGdTdXJmYWNlKHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZh Y2UgKj4ocGFyZW50LT5zaGVsbFN1cmZhY2UoKSkpCisgICAgICwgbV9wYXJlbnQocGFyZW50KQor IHsKKysKKysgICAgaW5pdCh4ZGdTdXJmYWNlLT5nZXRfcG9wdXAobV9wYXJlbnRYZGdTdXJmYWNl ID8gbV9wYXJlbnRYZGdTdXJmYWNlLT5vYmplY3QoKSA6IG51bGxwdHIsIHBvc2l0aW9uZXItPm9i amVjdCgpKSk7CisrICAgIGlmIChtX3BhcmVudCkgeworKyAgICAgICAgbV9wYXJlbnQtPmFkZENo aWxkUG9wdXAobV94ZGdTdXJmYWNlLT53aW5kb3coKSk7CisrICAgIH0KKyB9CisgCisgUVdheWxh bmRYZGdTdXJmYWNlOjpQb3B1cDo6flBvcHVwKCkKK0BAIC0yMTYsMTAgKzIxMywyNCBAQCBRV2F5 bGFuZFhkZ1N1cmZhY2U6OlBvcHVwOjp+UG9wdXAoKQorICAgICBpZiAoaXNJbml0aWFsaXplZCgp KQorICAgICAgICAgZGVzdHJveSgpOworIAorKyAgICBpZiAobV9wYXJlbnQpIHsKKysgICAgICAg IG1fcGFyZW50LT5yZW1vdmVDaGlsZFBvcHVwKG1feGRnU3VyZmFjZS0+d2luZG93KCkpOworKyAg ICB9CisrCisgICAgIGlmIChtX2dyYWJiaW5nKSB7CisgICAgICAgICBhdXRvICpzaGVsbCA9IG1f eGRnU3VyZmFjZS0+bV9zaGVsbDsKKyAgICAgICAgIFFfQVNTRVJUKHNoZWxsLT5tX3RvcG1vc3RH cmFiYmluZ1BvcHVwID09IHRoaXMpOworLSAgICAgICAgc2hlbGwtPm1fdG9wbW9zdEdyYWJiaW5n UG9wdXAgPSBtX3BhcmVudC0+bV9wb3B1cDsKKysgICAgICAgIHNoZWxsLT5tX3RvcG1vc3RHcmFi YmluZ1BvcHVwID0gbV9wYXJlbnRYZGdTdXJmYWNlID8gbV9wYXJlbnRYZGdTdXJmYWNlLT5tX3Bv cHVwIDogbnVsbHB0cjsKKysgICAgICAgIG1fZ3JhYmJpbmcgPSBmYWxzZTsKKysKKysgICAgICAg IC8vIFN5bnRoZXNpemUgUXQgZW50ZXIvbGVhdmUgZXZlbnRzIGZvciBwb3B1cAorKyAgICAgICAg UVdpbmRvdyAqbGVhdmUgPSBudWxscHRyOworKyAgICAgICAgaWYgKG1feGRnU3VyZmFjZSAmJiBt X3hkZ1N1cmZhY2UtPndpbmRvdygpKQorKyAgICAgICAgICAgIGxlYXZlID0gbV94ZGdTdXJmYWNl LT53aW5kb3coKS0+d2luZG93KCk7CisrICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpo YW5kbGVMZWF2ZUV2ZW50KGxlYXZlKTsKKysKKysgICAgICAgIGlmIChRV2luZG93ICplbnRlciA9 IFFHdWlBcHBsaWNhdGlvbjo6dG9wTGV2ZWxBdChRQ3Vyc29yOjpwb3MoKSkpCisrICAgICAgICAg ICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlRW50ZXJFdmVudChlbnRlciwgZW50ZXIt Pm1hcEZyb21HbG9iYWwoUUN1cnNvcjo6cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSk7CisgICAgIH0K KyB9CisgCitAQCAtMjU3LDYgKzI2OCw3IEBAIFFXYXlsYW5kWGRnU3VyZmFjZTo6UVdheWxhbmRY ZGdTdXJmYWNlKFFXYXlsYW5kWGRnU2hlbGwgKnNoZWxsLCA6OnhkZ19zdXJmYWNlICpzCisgICAg ICAgICAgICAgICAgIG1fdG9wbGV2ZWwtPnNldF9wYXJlbnQocGFyZW50WGRnU3VyZmFjZS0+bV90 b3BsZXZlbC0+b2JqZWN0KCkpOworICAgICAgICAgfQorICAgICB9CisrICAgIHNldFNpemVIaW50 cygpOworIH0KKyAKKyBRV2F5bGFuZFhkZ1N1cmZhY2U6On5RV2F5bGFuZFhkZ1N1cmZhY2UoKQor QEAgLTQwMCw4ICs0MTIsNiBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6c2V0UG9wdXAoUVdh eWxhbmRXaW5kb3cgKnBhcmVudCkKKyB7CisgICAgIFFfQVNTRVJUKCFtX3RvcGxldmVsICYmICFt X3BvcHVwKTsKKyAKKy0gICAgYXV0byBwYXJlbnRYZGdTdXJmYWNlID0gc3RhdGljX2Nhc3Q8UVdh eWxhbmRYZGdTdXJmYWNlICo+KHBhcmVudC0+c2hlbGxTdXJmYWNlKCkpOworLQorICAgICBhdXRv IHBvc2l0aW9uZXIgPSBuZXcgUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lcihtX3NoZWxsLT5jcmVh dGVfcG9zaXRpb25lcigpKTsKKyAgICAgLy8gc2V0X3BvcHVwIGV4cGVjdHMgYSBwb3NpdGlvbiBy ZWxhdGl2ZSB0byB0aGUgcGFyZW50CisgICAgIFFQb2ludCB0cmFuc2llbnRQb3MgPSBtX3dpbmRv dy0+Z2VvbWV0cnkoKS50b3BMZWZ0KCk7IC8vIHRoaXMgaXMgYWJzb2x1dGUKK0BAIC00MTQsOCAr NDI0LDkgQEAgdm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OnNldFBvcHVwKFFXYXlsYW5kV2luZG93 ICpwYXJlbnQpCisgICAgIHBvc2l0aW9uZXItPnNldF9hbmNob3IoUXRXYXlsYW5kOjp4ZGdfcG9z aXRpb25lcjo6YW5jaG9yX3RvcF9sZWZ0KTsKKyAgICAgcG9zaXRpb25lci0+c2V0X2dyYXZpdHko UXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lcjo6Z3Jhdml0eV9ib3R0b21fcmlnaHQpOworICAgICBw b3NpdGlvbmVyLT5zZXRfc2l6ZShtX3dpbmRvdy0+Z2VvbWV0cnkoKS53aWR0aCgpLCBtX3dpbmRv dy0+Z2VvbWV0cnkoKS5oZWlnaHQoKSk7CistICAgIG1fcG9wdXAgPSBuZXcgUG9wdXAodGhpcywg cGFyZW50WGRnU3VyZmFjZSwgcG9zaXRpb25lcik7CisrICAgIG1fcG9wdXAgPSBuZXcgUG9wdXAo dGhpcywgcGFyZW50LCBwb3NpdGlvbmVyKTsKKyAgICAgcG9zaXRpb25lci0+ZGVzdHJveSgpOwor KworICAgICBkZWxldGUgcG9zaXRpb25lcjsKKyB9CisgCitAQCAtNDM3LDYgKzQ0OCwyMyBAQCB2 b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6c2V0R3JhYlBvcHVwKFFXYXlsYW5kV2luZG93ICpwYXJl bnQsIFFXYXlsYW5kSW5wdXREZXZpYworICAgICB9CisgICAgIHNldFBvcHVwKHBhcmVudCk7Cisg ICAgIG1fcG9wdXAtPmdyYWIoZGV2aWNlLCBzZXJpYWwpOworKworKyAgICAvLyBTeW50aGVzaXpl IFF0IGVudGVyL2xlYXZlIGV2ZW50cyBmb3IgcG9wdXAKKysgICAgaWYgKCFwYXJlbnQpCisrICAg ICAgICByZXR1cm47CisrICAgIFFXaW5kb3cgKmN1cnJlbnQgPSBRR3VpQXBwbGljYXRpb246OnRv cExldmVsQXQoUUN1cnNvcjo6cG9zKCkpOworKyAgICBRV2luZG93ICpsZWF2ZSA9IHBhcmVudC0+ d2luZG93KCk7CisrICAgIGlmIChjdXJyZW50ICE9IGxlYXZlKQorKyAgICAgICAgcmV0dXJuOwor KworKyAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVMZWF2ZUV2ZW50KGxlYXZlKTsK KysKKysgICAgUVdpbmRvdyAqZW50ZXIgPSBudWxscHRyOworKyAgICBpZiAobV9wb3B1cCAmJiBt X3BvcHVwLT5tX3hkZ1N1cmZhY2UgJiYgbV9wb3B1cC0+bV94ZGdTdXJmYWNlLT53aW5kb3coKSkK KysgICAgICAgIGVudGVyID0gbV9wb3B1cC0+bV94ZGdTdXJmYWNlLT53aW5kb3coKS0+d2luZG93 KCk7CisrCisrICAgIGlmIChlbnRlcikKKysgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6 OmhhbmRsZUVudGVyRXZlbnQoZW50ZXIsIGVudGVyLT5tYXBGcm9tR2xvYmFsKFFDdXJzb3I6OnBv cygpKSwgUUN1cnNvcjo6cG9zKCkpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6 eGRnX3N1cmZhY2VfY29uZmlndXJlKHVpbnQzMl90IHNlcmlhbCkKK2RpZmYgLS1naXQgYS9xdHdh eWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdz aGVsbF9wLmggYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwvcXdheWxhbmR4ZGdzaGVsbF9wLmgKK2luZGV4IDk2Nzg1MjA1Li40YjUxOGYwYSAxMDA2NDQK Ky0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9x d2F5bGFuZHhkZ3NoZWxsX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50 ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxfcC5oCitAQCAtMTMxLDE0ICsxMzEs MTUgQEAgcHJpdmF0ZToKKyAKKyAgICAgY2xhc3MgUG9wdXAgOiBwdWJsaWMgUXRXYXlsYW5kOjp4 ZGdfcG9wdXAgeworICAgICBwdWJsaWM6CistICAgICAgICBQb3B1cChRV2F5bGFuZFhkZ1N1cmZh Y2UgKnhkZ1N1cmZhY2UsIFFXYXlsYW5kWGRnU3VyZmFjZSAqcGFyZW50LCBRdFdheWxhbmQ6Onhk Z19wb3NpdGlvbmVyICpwb3NpdGlvbmVyKTsKKysgICAgICAgIFBvcHVwKFFXYXlsYW5kWGRnU3Vy ZmFjZSAqeGRnU3VyZmFjZSwgUVdheWxhbmRXaW5kb3cgKnBhcmVudCwgUXRXYXlsYW5kOjp4ZGdf cG9zaXRpb25lciAqcG9zaXRpb25lcik7CisgICAgICAgICB+UG9wdXAoKSBvdmVycmlkZTsKKyAK KyAgICAgICAgIHZvaWQgZ3JhYihRV2F5bGFuZElucHV0RGV2aWNlICpzZWF0LCB1aW50IHNlcmlh bCk7CisgICAgICAgICB2b2lkIHhkZ19wb3B1cF9wb3B1cF9kb25lKCkgb3ZlcnJpZGU7CisgCisg ICAgICAgICBRV2F5bGFuZFhkZ1N1cmZhY2UgKm1feGRnU3VyZmFjZSA9IG51bGxwdHI7CistICAg ICAgICBRV2F5bGFuZFhkZ1N1cmZhY2UgKm1fcGFyZW50ID0gbnVsbHB0cjsKKysgICAgICAgIFFX YXlsYW5kWGRnU3VyZmFjZSAqbV9wYXJlbnRYZGdTdXJmYWNlID0gbnVsbHB0cjsKKysgICAgICAg IFFXYXlsYW5kV2luZG93ICptX3BhcmVudCA9IG51bGxwdHI7CisgICAgICAgICBib29sIG1fZ3Jh YmJpbmcgPSBmYWxzZTsKKyAgICAgfTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3Bs dWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0 aW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVs bC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb24uY3BwCitpbmRleCA4NzY5ZDk3MS4uZGEwZGQ2 YTcgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94 ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uLmNwcAorKysrIGIvcXR3YXlsYW5k L3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxp bnRlZ3JhdGlvbi5jcHAKK0BAIC02OSwyMCArNjksNiBAQCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAq UVdheWxhbmRYZGdTaGVsbEludGVncmF0aW9uOjpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRX aQorICAgICByZXR1cm4gbV94ZGdTaGVsbC0+Z2V0WGRnU3VyZmFjZSh3aW5kb3cpOworIH0KKyAK Ky12b2lkIFFXYXlsYW5kWGRnU2hlbGxJbnRlZ3JhdGlvbjo6aGFuZGxlS2V5Ym9hcmRGb2N1c0No YW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMp CisteworLSAgICBpZiAobmV3Rm9jdXMpIHsKKy0gICAgICAgIGF1dG8gKnhkZ1N1cmZhY2UgPSBx b2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+KG5ld0ZvY3VzLT5zaGVsbFN1cmZhY2Uo KSk7CistICAgICAgICBpZiAoeGRnU3VyZmFjZSAmJiAheGRnU3VyZmFjZS0+aGFuZGxlc0FjdGl2 ZVN0YXRlKCkpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQo bmV3Rm9jdXMpOworLSAgICB9CistICAgIGlmIChvbGRGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8UVdh eWxhbmRYZGdTdXJmYWNlICo+KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpIHsKKy0gICAgICAg IGF1dG8gKnhkZ1N1cmZhY2UgPSBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+KG9s ZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSk7CistICAgICAgICBpZiAoeGRnU3VyZmFjZSAmJiAheGRn U3VyZmFjZS0+aGFuZGxlc0FjdGl2ZVN0YXRlKCkpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5o YW5kbGVXaW5kb3dEZWFjdGl2YXRlZChvbGRGb2N1cyk7CistICAgIH0KKy19CistCisgfQorIAor IFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hl bGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uX3AuaCBi L3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFu ZHhkZ3NoZWxsaW50ZWdyYXRpb25fcC5oCitpbmRleCBiNmNhYTZjOS4uMmY5MjlmOTggMTAwNjQ0 CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwv cXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVn aW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlv bl9wLmgKK0BAIC02NSw3ICs2NSw2IEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmRYZGdTaGVsbElu dGVncmF0aW9uKCkge30KKyAgICAgYm9vbCBpbml0aWFsaXplKFFXYXlsYW5kRGlzcGxheSAqZGlz cGxheSkgb3ZlcnJpZGU7CisgICAgIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpjcmVhdGVTaGVsbFN1 cmZhY2UoUVdheWxhbmRXaW5kb3cgKndpbmRvdykgb3ZlcnJpZGU7CistICAgIHZvaWQgaGFuZGxl S2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdp bmRvdyAqb2xkRm9jdXMpIG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFTY29wZWRQb2lu dGVyPFFXYXlsYW5kWGRnU2hlbGw+IG1feGRnU2hlbGw7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5k L3NyYy9zaGFyZWQvcXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlci5jcHAgYi9xdHdheWxh bmQvc3JjL3NoYXJlZC9xd2F5bGFuZGlucHV0bWV0aG9kZXZlbnRidWlsZGVyLmNwcAoraW5kZXgg NTI2ZDBlZjQuLmY1MGNjZjMwIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdh eWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlci5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvc2hh cmVkL3F3YXlsYW5kaW5wdXRtZXRob2RldmVudGJ1aWxkZXIuY3BwCitAQCAtMzksNyArMzksMTAg QEAKKyAKKyAjaW5jbHVkZSAicXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlcl9wLmgiCisg CisrI2luY2x1ZGUgPFFCcnVzaD4KKysjaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgorICNpbmNs dWRlIDxRSW5wdXRNZXRob2Q+CisrI2luY2x1ZGUgPFFQYWxldHRlPgorICNpbmNsdWRlIDxRVGV4 dENoYXJGb3JtYXQ+CisgCisgI2lmZGVmIFFUX0JVSUxEX1dBWUxBTkRDT01QT1NJVE9SX0xJQgor QEAgLTgxLDMyICs4NCwzOCBAQCB2b2lkIFFXYXlsYW5kSW5wdXRNZXRob2RFdmVudEJ1aWxkZXI6 OmFkZFByZWVkaXRTdHlsaW5nKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdAorICAgICBRVGV4dENo YXJGb3JtYXQgZm9ybWF0OworIAorICAgICBzd2l0Y2ggKHN0eWxlKSB7CistICAgIGNhc2UgMDoK Ky0gICAgY2FzZSAxOgorKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVf Tk9ORToKKysgICAgICAgIGJyZWFrOworKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVE SVRfU1RZTEVfREVGQVVMVDoKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NU WUxFX1VOREVSTElORToKKyAgICAgICAgIGZvcm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUpOwor ICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6U2luZ2xl VW5kZXJsaW5lKTsKKyAgICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9k RXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxl bmd0aCwgZm9ybWF0KSk7CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSAyOgorLSAgICBjYXNl IDM6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9BQ1RJVkU6Cisr ICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9JTkFDVElWRToKKyAgICAg ICAgIGZvcm1hdC5zZXRGb250V2VpZ2h0KFFGb250OjpCb2xkKTsKKyAgICAgICAgIGZvcm1hdC5z ZXRGb250VW5kZXJsaW5lKHRydWUpOworICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxl KFFUZXh0Q2hhckZvcm1hdDo6U2luZ2xlVW5kZXJsaW5lKTsKKyAgICAgICAgIG1fcHJlZWRpdFN0 eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVu dDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7CisgICAgICAgICBicmVhazsK Ky0gICAgY2FzZSA0OgorLSAgICAgICAgZm9ybWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7Cist ICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpTaW5nbGVV bmRlcmxpbmUpOworLSAgICAgICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRob2RF dmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVu Z3RoLCBmb3JtYXQpKTsKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxF X0hJR0hMSUdIVDoKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX1NF TEVDVElPTjoKKysgICAgICAgIHsKKysgICAgICAgICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGlu ZSh0cnVlKTsKKysgICAgICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFy Rm9ybWF0OjpTaW5nbGVVbmRlcmxpbmUpOworKyAgICAgICAgICAgIFFQYWxldHRlIHBhbGV0dGUg PSBxQXBwLT5wYWxldHRlKCk7CisrICAgICAgICAgICAgZm9ybWF0LnNldEJhY2tncm91bmQoUUJy dXNoKHBhbGV0dGUuY29sb3IoUVBhbGV0dGU6OkFjdGl2ZSwgUVBhbGV0dGU6OkhpZ2hsaWdodCkp KTsKKysgICAgICAgICAgICBmb3JtYXQuc2V0Rm9yZWdyb3VuZChRQnJ1c2gocGFsZXR0ZS5jb2xv cihRUGFsZXR0ZTo6QWN0aXZlLCBRUGFsZXR0ZTo6SGlnaGxpZ2h0ZWRUZXh0KSkpOworKyAgICAg ICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0 ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7 CisrICAgICAgICB9CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSA1OgorKyAgICBjYXNlIFpX UF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfSU5DT1JSRUNUOgorICAgICAgICAgZm9ybWF0 LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7CisgICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5 bGUoUVRleHRDaGFyRm9ybWF0OjpXYXZlVW5kZXJsaW5lKTsKKyAgICAgICAgIGZvcm1hdC5zZXRV bmRlcmxpbmVDb2xvcihRQ29sb3IoUXQ6OnJlZCkpOworICAgICAgICAgbV9wcmVlZGl0U3R5bGVz LmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpU ZXh0Rm9ybWF0LCBpbmRleCwgbGVuZ3RoLCBmb3JtYXQpKTsKKyAgICAgICAgIGJyZWFrOworLS8v ICAgIGNhc2UgUXRXYXlsYW5kOjp3bF90ZXh0X2lucHV0OjpwcmVlZGl0X3N0eWxlX3NlbGVjdGlv bjoKKy0vLyAgICBjYXNlIFF0V2F5bGFuZDo6d2xfdGV4dF9pbnB1dDo6cHJlZWRpdF9zdHlsZV9u b25lOgorICAgICBkZWZhdWx0OgorICAgICAgICAgYnJlYWs7CisgICAgIH0KK0BAIC0xNTMsNyAr MTYyLDcgQEAgUUlucHV0TWV0aG9kRXZlbnQgUVdheWxhbmRJbnB1dE1ldGhvZEV2ZW50QnVpbGRl cjo6YnVpbGRQcmVlZGl0KGNvbnN0IFFTdHJpbmcgJnQKKyAKKyAgICAgaWYgKG1fcHJlZWRpdEN1 cnNvciA8IDApIHsKKyAgICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50 OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OkN1cnNvciwgMCwgMCwgUVZhcmlhbnQoKSkp OworLSAgICB9IGVsc2UgaWYgKG1fcHJlZWRpdEN1cnNvciA+IDApIHsKKysgICAgfSBlbHNlIHsK KyAgICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUo UUlucHV0TWV0aG9kRXZlbnQ6OkN1cnNvciwgaW5kZXhGcm9tV2F5bGFuZCh0ZXh0LCBtX3ByZWVk aXRDdXJzb3IpLCAxLCBRVmFyaWFudCgpKSk7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdHdh eWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZG1pbWVoZWxwZXIuY3BwIGIvcXR3YXlsYW5kL3NyYy9z aGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNwcAoraW5kZXggYTVmZGQzNGQuLmUyZmUxOTI4IDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNwcAor KysrIGIvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNwcAorQEAgLTYw LDcgKzYwLDcgQEAgUUJ5dGVBcnJheSBRV2F5bGFuZE1pbWVIZWxwZXI6OmdldEJ5dGVBcnJheShR TWltZURhdGEgKm1pbWVEYXRhLCBjb25zdCBRU3RyaW5nICYKKyAgICAgICAgICAgICBidWYub3Bl bihRSU9EZXZpY2U6OlJlYWRXcml0ZSk7CisgICAgICAgICAgICAgUUJ5dGVBcnJheSBmbXQgPSAi Qk1QIjsKKyAgICAgICAgICAgICBpZiAobWltZVR5cGUuc3RhcnRzV2l0aChRTGF0aW4xU3RyaW5n KCJpbWFnZS8iKSkpIHsKKy0gICAgICAgICAgICAgICAgUUJ5dGVBcnJheSBpbWdGbXQgPSBtaW1l VHlwZS5taWQoNikudG9VcHBlcigpLnRvTGF0aW4xKCk7CisrICAgICAgICAgICAgICAgIFFCeXRl QXJyYXkgaW1nRm10ID0gbWltZVR5cGUubWlkKDYpLnRvTG93ZXIoKS50b0xhdGluMSgpOworICAg ICAgICAgICAgICAgICBpZiAoUUltYWdlV3JpdGVyOjpzdXBwb3J0ZWRJbWFnZUZvcm1hdHMoKS5j b250YWlucyhpbWdGbXQpKQorICAgICAgICAgICAgICAgICAgICAgZm10ID0gaW1nRm10OworICAg ICAgICAgICAgIH0KK0BAIC03NCw3ICs3NCw3IEBAIFFCeXRlQXJyYXkgUVdheWxhbmRNaW1lSGVs cGVyOjpnZXRCeXRlQXJyYXkoUU1pbWVEYXRhICptaW1lRGF0YSwgY29uc3QgUVN0cmluZyAmCisg ICAgICAgICBRTGlzdDxRVXJsPiB1cmxzID0gbWltZURhdGEtPnVybHMoKTsKKyAgICAgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgdXJscy5jb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgICBjb250 ZW50LmFwcGVuZCh1cmxzLmF0KGkpLnRvRW5jb2RlZCgpKTsKKy0gICAgICAgICAgICBjb250ZW50 LmFwcGVuZCgnXG4nKTsKKysgICAgICAgICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIpOworICAg ICAgICAgfQorICAgICB9IGVsc2UgeworICAgICAgICAgY29udGVudCA9IG1pbWVEYXRhLT5kYXRh KG1pbWVUeXBlKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvZGF0 YWRldmljZXYxL3RzdF9kYXRhZGV2aWNldjEuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xp ZW50L2RhdGFkZXZpY2V2MS90c3RfZGF0YWRldmljZXYxLmNwcAoraW5kZXggMTU2OGIzYjkuLjA2 NzQxMGQwIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFkZXZp Y2V2MS90c3RfZGF0YWRldmljZXYxLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xp ZW50L2RhdGFkZXZpY2V2MS90c3RfZGF0YWRldmljZXYxLmNwcAorQEAgLTM1LDcgKzM1LDcgQEAK KyAKKyB1c2luZyBuYW1lc3BhY2UgTW9ja0NvbXBvc2l0b3I7CisgCistY29uc3RleHByIGludCBk YXRhRGV2aWNlVmVyc2lvbiA9IDE7CisrY29uc3RleHByIGludCBkYXRhRGV2aWNlVmVyc2lvbiA9 IDM7CisgCisgY2xhc3MgRGF0YURldmljZUNvbXBvc2l0b3IgOiBwdWJsaWMgRGVmYXVsdENvbXBv c2l0b3IgeworIHB1YmxpYzoKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGll bnQvc2VhdHY1L3RzdF9zZWF0djUuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3Nl YXR2NS90c3Rfc2VhdHY1LmNwcAoraW5kZXggOTMxMmMyZTUuLjJlYTM4MmYxIDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNwcAorKysr IGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNwcAorQEAg LTczLDYgKzczLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBtdWx0aVRvdWNoKCk7Cisg ICAgIHZvaWQgbXVsdGlUb3VjaFVwQW5kTW90aW9uRnJhbWUoKTsKKyAgICAgdm9pZCB0YXBBbmRN b3ZlSW5TYW1lRnJhbWUoKTsKKysgICAgdm9pZCBjYW5jZWxUb3VjaCgpOworIH07CisgCisgdm9p ZCB0c3Rfc2VhdHY1OjpiaW5kc1RvU2VhdCgpCitAQCAtNjQ2LDUgKzY0NywzNCBAQCB2b2lkIHRz dF9zZWF0djU6OnRhcEFuZE1vdmVJblNhbWVGcmFtZSgpCisgICAgIFFUUllfQ09NUEFSRSh3aW5k b3cubV9ldmVudHMubGFzdCgpLnRvdWNoUG9pbnRzLmZpcnN0KCkuc3RhdGUoKSwgUXQ6OlRvdWNo UG9pbnRTdGF0ZTo6VG91Y2hQb2ludFJlbGVhc2VkKTsKKyB9CisgCisrdm9pZCB0c3Rfc2VhdHY1 OjpjYW5jZWxUb3VjaCgpCisreworKyAgICBUb3VjaFdpbmRvdyB3aW5kb3c7CisrICAgIFFDT01Q T1NJVE9SX1RSWV9WRVJJRlkoeGRnU3VyZmFjZSgpICYmIHhkZ1N1cmZhY2UoKS0+bV9jb21taXR0 ZWRDb25maWd1cmVTZXJpYWwpOworKworKyAgICBleGVjKFs9XSB7CisrICAgICAgICBhdXRvICp0 ID0gdG91Y2goKTsKKysgICAgICAgIGF1dG8gKmMgPSBjbGllbnQoKTsKKysgICAgICAgIHQtPnNl bmREb3duKHhkZ1RvcGxldmVsKCktPnN1cmZhY2UoKSwgezMyLCAzMn0sIDEpOworKyAgICAgICAg dC0+c2VuZEZyYW1lKGMpOworKyAgICAgICAgdC0+c2VuZENhbmNlbChjKTsKKysgICAgICAgIHQt PnNlbmRGcmFtZShjKTsKKysgICAgfSk7CisrCisrICAgIFFUUllfVkVSSUZZKCF3aW5kb3cubV9l dmVudHMuZW1wdHkoKSk7CisrICAgIHsKKysgICAgICAgIGF1dG8gZSA9IHdpbmRvdy5tX2V2ZW50 cy50YWtlRmlyc3QoKTsKKysgICAgICAgIFFDT01QQVJFKGUudHlwZSwgUUV2ZW50OjpUb3VjaEJl Z2luKTsKKysgICAgICAgIFFDT01QQVJFKGUudG91Y2hQb2ludFN0YXRlcywgUXQ6OlRvdWNoUG9p bnRQcmVzc2VkKTsKKysgICAgICAgIFFDT01QQVJFKGUudG91Y2hQb2ludHMubGVuZ3RoKCksIDEp OworKyAgICAgICAgUUNPTVBBUkUoZS50b3VjaFBvaW50cy5maXJzdCgpLnBvcygpLCBRUG9pbnRG KDMyLXdpbmRvdy5mcmFtZU1hcmdpbnMoKS5sZWZ0KCksIDMyLXdpbmRvdy5mcmFtZU1hcmdpbnMo KS50b3AoKSkpOworKyAgICB9CisrICAgIHsKKysgICAgICAgIGF1dG8gZSA9IHdpbmRvdy5tX2V2 ZW50cy50YWtlRmlyc3QoKTsKKysgICAgICAgIFFDT01QQVJFKGUudHlwZSwgUUV2ZW50OjpUb3Vj aENhbmNlbCk7CisrICAgICAgICBRQ09NUEFSRShlLnRvdWNoUG9pbnRzLmxlbmd0aCgpLCAwKTsK KysgICAgfQorK30KKysKKyBRQ09NUE9TSVRPUl9URVNUX01BSU4odHN0X3NlYXR2NSkKKyAjaW5j bHVkZSAidHN0X3NlYXR2NS5tb2MiCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8v Y2xpZW50L3NoYXJlZC9jb3JlY29tcG9zaXRvci5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9j bGllbnQvc2hhcmVkL2NvcmVjb21wb3NpdG9yLmNwcAoraW5kZXggNWM2YzgzYmEuLmZhOWI3NjYy IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlY29t cG9zaXRvci5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29y ZWNvbXBvc2l0b3IuY3BwCitAQCAtMjcsNiArMjcsNyBAQAorICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisgCisgI2luY2x1ZGUgImNvcmVjb21wb3NpdG9yLmgiCisrI2luY2x1ZGUgPHRocmVhZD4KKyAK KyBuYW1lc3BhY2UgTW9ja0NvbXBvc2l0b3IgeworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90 ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmNwcCBiL3F0d2F5bGFuZC90ZXN0 cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmNwcAoraW5kZXggMGQ5ODg1MjEuLmQx YTJlN2NiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9j b3JlcHJvdG9jb2wuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVk L2NvcmVwcm90b2NvbC5jcHAKK0BAIC00NTEsNiArNDUxLDEzIEBAIHZvaWQgVG91Y2g6OnNlbmRG cmFtZSh3bF9jbGllbnQgKmNsaWVudCkKKyAgICAgICAgIHNlbmRfZnJhbWUoci0+aGFuZGxlKTsK KyB9CisgCisrdm9pZCBUb3VjaDo6c2VuZENhbmNlbCh3bF9jbGllbnQgKmNsaWVudCkKKyt7Cisr ICAgIGNvbnN0IGF1dG8gdG91Y2hSZXNvdXJjZXMgPSByZXNvdXJjZU1hcCgpLnZhbHVlcyhjbGll bnQpOworKyAgICBmb3IgKGF1dG8gKnIgOiB0b3VjaFJlc291cmNlcykKKysgICAgICAgIHNlbmRf Y2FuY2VsKHItPmhhbmRsZSk7CisrfQorKworIHVpbnQgS2V5Ym9hcmQ6OnNlbmRFbnRlcihTdXJm YWNlICpzdXJmYWNlKQorIHsKKyAgICAgYXV0byBzZXJpYWwgPSBtX3NlYXQtPm1fY29tcG9zaXRv ci0+bmV4dFNlcmlhbCgpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVu dC9zaGFyZWQvY29yZXByb3RvY29sLmggYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hh cmVkL2NvcmVwcm90b2NvbC5oCitpbmRleCBhMWFmMTM3YS4uMjEwZDhkZGIgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5oCisrKysg Yi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5oCitAQCAt MTU4LDcgKzE1OCw3IEBAIGNsYXNzIFdsQ29tcG9zaXRvciA6IHB1YmxpYyBHbG9iYWwsIHB1Ymxp YyBRdFdheWxhbmRTZXJ2ZXI6OndsX2NvbXBvc2l0b3IKKyB7CisgICAgIFFfT0JKRUNUCisgcHVi bGljOgorLSAgICBleHBsaWNpdCBXbENvbXBvc2l0b3IoQ29yZUNvbXBvc2l0b3IgKmNvbXBvc2l0 b3IsIGludCB2ZXJzaW9uID0gMykKKysgICAgZXhwbGljaXQgV2xDb21wb3NpdG9yKENvcmVDb21w b3NpdG9yICpjb21wb3NpdG9yLCBpbnQgdmVyc2lvbiA9IDQpCisgICAgICAgICA6IFF0V2F5bGFu ZFNlcnZlcjo6d2xfY29tcG9zaXRvcihjb21wb3NpdG9yLT5tX2Rpc3BsYXksIHZlcnNpb24pCisg ICAgICAgICAsIG1fY29tcG9zaXRvcihjb21wb3NpdG9yKQorICAgICB7fQorQEAgLTM2NCw2ICsz NjQsNyBAQCBwdWJsaWM6CisgICAgIHVpbnQgc2VuZFVwKHdsX2NsaWVudCAqY2xpZW50LCBpbnQg aWQpOworICAgICB2b2lkIHNlbmRNb3Rpb24od2xfY2xpZW50ICpjbGllbnQsIGNvbnN0IFFQb2lu dEYgJnBvc2l0aW9uLCBpbnQgaWQpOworICAgICB2b2lkIHNlbmRGcmFtZSh3bF9jbGllbnQgKmNs aWVudCk7CisrICAgIHZvaWQgc2VuZENhbmNlbCh3bF9jbGllbnQgKmNsaWVudCk7CisgCisgICAg IFNlYXQgKm1fc2VhdCA9IG51bGxwdHI7CisgfTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVz dHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2NrY29tcG9zaXRvci5jcHAgYi9xdHdheWxhbmQv dGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2NrY29tcG9zaXRvci5jcHAKK2luZGV4IGE0 MTVjYmY1Li5iMWQzZDA3ZCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVu dC9zaGFyZWRfb2xkL21vY2tjb21wb3NpdG9yLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1 dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja2NvbXBvc2l0b3IuY3BwCitAQCAtMzQyLDcgKzM0Miw3 IEBAIENvbXBvc2l0b3I6OkNvbXBvc2l0b3IoTW9ja0NvbXBvc2l0b3IgKm1vY2tDb21wb3NpdG9y KQorICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICAgICB9CisgCistICAgIHdsX2dsb2Jh bF9jcmVhdGUobV9kaXNwbGF5LCAmd2xfY29tcG9zaXRvcl9pbnRlcmZhY2UsIDEsIHRoaXMsIGJp bmRDb21wb3NpdG9yKTsKKysgICAgd2xfZ2xvYmFsX2NyZWF0ZShtX2Rpc3BsYXksICZ3bF9jb21w b3NpdG9yX2ludGVyZmFjZSwgNCwgdGhpcywgYmluZENvbXBvc2l0b3IpOworIAorICAgICBtX2Rh dGFfZGV2aWNlX21hbmFnZXIucmVzZXQobmV3IERhdGFEZXZpY2VNYW5hZ2VyKHRoaXMsIG1fZGlz cGxheSkpOworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFy ZWRfb2xkL21vY2tzdXJmYWNlLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFy ZWRfb2xkL21vY2tzdXJmYWNlLmNwcAoraW5kZXggZTlkZjVmOTAuLmMzMjQ2ZTRhIDEwMDY0NAor LS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2Uu Y3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3Vy ZmFjZS5jcHAKK0BAIC0xMjUsNiArMTI1LDE2IEBAIHZvaWQgU3VyZmFjZTo6c3VyZmFjZV9kYW1h Z2UoUmVzb3VyY2UgKnJlc291cmNlLAorICAgICBRX1VOVVNFRChoZWlnaHQpOworIH0KKyAKKyt2 b2lkIFN1cmZhY2U6OnN1cmZhY2VfZGFtYWdlX2J1ZmZlcihSZXNvdXJjZSAqcmVzb3VyY2UsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB4LCBpbnQzMl90IHks IGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQorK3sKKysgICAgUV9VTlVTRUQocmVzb3Vy Y2UpOworKyAgICBRX1VOVVNFRCh4KTsKKysgICAgUV9VTlVTRUQoeSk7CisrICAgIFFfVU5VU0VE KHdpZHRoKTsKKysgICAgUV9VTlVTRUQoaGVpZ2h0KTsKKyt9CisrCisgdm9pZCBTdXJmYWNlOjpz dXJmYWNlX2ZyYW1lKFJlc291cmNlICpyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QgY2FsbGJhY2spCisgeworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0 cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmggYi9xdHdheWxhbmQvdGVzdHMv YXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5oCitpbmRleCA5NDlkYzIzZC4uZDE3 NjgzN2UgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29s ZC9tb2Nrc3VyZmFjZS5oCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVk X29sZC9tb2Nrc3VyZmFjZS5oCitAQCAtNjUsNiArNjUsOCBAQCBwcm90ZWN0ZWQ6CisgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHdsX3Jlc291cmNlICpidWZmZXIsIGludCB4LCBpbnQg eSkgb3ZlcnJpZGU7CisgICAgIHZvaWQgc3VyZmFjZV9kYW1hZ2UoUmVzb3VyY2UgKnJlc291cmNl LAorICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90 IHdpZHRoLCBpbnQzMl90IGhlaWdodCkgb3ZlcnJpZGU7CisrICAgIHZvaWQgc3VyZmFjZV9kYW1h Z2VfYnVmZmVyKFJlc291cmNlICpyZXNvdXJjZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0 KSBvdmVycmlkZTsKKyAgICAgdm9pZCBzdXJmYWNlX2ZyYW1lKFJlc291cmNlICpyZXNvdXJjZSwK KyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGNhbGxiYWNrKSBvdmVycmlkZTsKKyAg ICAgdm9pZCBzdXJmYWNlX2NvbW1pdChSZXNvdXJjZSAqcmVzb3VyY2UpIG92ZXJyaWRlOworZGlm ZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNl LmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNw cAoraW5kZXggOTVlNGU2MDkuLjYwYzY3MmNlIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3Rz L2F1dG8vY2xpZW50L3N1cmZhY2UvdHN0X3N1cmZhY2UuY3BwCisrKysgYi9xdHdheWxhbmQvdGVz dHMvYXV0by9jbGllbnQvc3VyZmFjZS90c3Rfc3VyZmFjZS5jcHAKK0BAIC0xMjksNiArMTI5LDEw IEBAIHZvaWQgdHN0X3N1cmZhY2U6OndhaXRGb3JGcmFtZUNhbGxiYWNrR2woKQorICAgICAvLyBN YWtlIHN1cmUgd2UgZm9sbG93IGZyYW1lIGNhbGxiYWNrcyBmb3Igc29tZSBmcmFtZXMKKyAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCA1OyArK2kpIHsKKyAgICAgICAgIHhkZ1BpbmdBbmRXYWl0Rm9y UG9uZygpOyAvLyBNYWtlIHN1cmUgdGhpbmdzIGhhdmUgaGFwcGVuZWQgb24gdGhlIGNsaWVudAor KyAgICAgICAgaWYgKCFxRW52aXJvbm1lbnRWYXJpYWJsZUludFZhbHVlKCJRVF9XQVlMQU5EX0RJ U0FCTEVfV0lORE9XREVDT1JBVElPTiIpICYmIGkgPT0gMCkgeworKyAgICAgICAgICAgIFFDT01Q QVJFKGJ1ZmZlclNweS5jb3VudCgpLCAxKTsKKysgICAgICAgICAgICBidWZmZXJTcHkucmVtb3Zl Rmlyc3QoKTsKKysgICAgICAgIH0KKyAgICAgICAgIGV4ZWMoWyZdIHsKKyAgICAgICAgICAgICBR VkVSSUZZKGJ1ZmZlclNweS5lbXB0eSgpKTsgLy8gTWFrZSBzdXJlIG5vIGV4dHJhIGJ1ZmZlcnMg aGF2ZSBhcnJpdmVkCisgICAgICAgICAgICAgUVZFUklGWSgheGRnVG9wbGV2ZWwoKS0+c3VyZmFj ZSgpLT5tX3dhaXRpbmdGcmFtZUNhbGxiYWNrcy5lbXB0eSgpKTsKK2RpZmYgLS1naXQgYS9xdHdh eWxhbmQvdGVzdHMvYXV0by9jbGllbnQveGRnc2hlbGwvdHN0X3hkZ3NoZWxsLmNwcCBiL3F0d2F5 bGFuZC90ZXN0cy9hdXRvL2NsaWVudC94ZGdzaGVsbC90c3RfeGRnc2hlbGwuY3BwCitpbmRleCAy Mjc3YmJiOC4uNzQ3ODc1YjQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGll bnQveGRnc2hlbGwvdHN0X3hkZ3NoZWxsLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8v Y2xpZW50L3hkZ3NoZWxsL3RzdF94ZGdzaGVsbC5jcHAKK0BAIC0zMSw2ICszMSw3IEBACisgI2lu Y2x1ZGUgPFF0R3VpL1FPcGVuR0xXaW5kb3c+CisgI2luY2x1ZGUgPFF0R3VpL3FwYS9xcGxhdGZv cm1uYXRpdmVpbnRlcmZhY2UuaD4KKyAjaW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUv d2F5bGFuZC13YXlsYW5kLWNsaWVudC1wcm90b2NvbC5oPgorKyNpbmNsdWRlIDxRdFdheWxhbmRD bGllbnQvcHJpdmF0ZS9xd2F5bGFuZHdpbmRvd19wLmg+CisgCisgdXNpbmcgbmFtZXNwYWNlIE1v Y2tDb21wb3NpdG9yOworIAorQEAgLTQ1LDYgKzQ2LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAg dm9pZCBjb25maWd1cmVTdGF0ZXMoKTsKKyAgICAgdm9pZCBwb3B1cCgpOworICAgICB2b2lkIHRv b2x0aXBPblBvcHVwKCk7CisrICAgIHZvaWQgdG9vbHRpcEFuZFNpYmxpbmdQb3B1cCgpOworICAg ICB2b2lkIHN3aXRjaFBvcHVwcygpOworICAgICB2b2lkIGhpZGVQb3B1cFBhcmVudCgpOworICAg ICB2b2lkIHBvbmdzKCk7CitAQCAtMTM4LDYgKzE0MCw3IEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjpj b25maWd1cmVTaXplKCkKKyAKKyB2b2lkIHRzdF94ZGdzaGVsbDo6Y29uZmlndXJlU3RhdGVzKCkK KyB7CisrICAgIFFWRVJJRlkocXB1dGVudigiUVRfV0FZTEFORF9GUkFNRV9DQUxMQkFDS19USU1F T1VUIiwgIjAiKSk7CisgICAgIFFSYXN0ZXJXaW5kb3cgd2luZG93OworICAgICB3aW5kb3cucmVz aXplKDY0LCA0OCk7CisgICAgIHdpbmRvdy5zaG93KCk7CitAQCAtMTU0LDkgKzE1NywxMiBAQCB2 b2lkIHRzdF94ZGdzaGVsbDo6Y29uZmlndXJlU3RhdGVzKCkKKyAgICAgLy8gVG9wbGV2ZWwgd2lu ZG93cyBkb24ndCBrbm93IHRoZWlyIHBvc2l0aW9uIG9uIHhkZy1zaGVsbAorIC8vICAgIFFDT01Q QVJFKHdpbmRvdy5mcmFtZUdlb21ldHJ5KCkudG9wTGVmdCgpLCBRUG9pbnQoKSk7IC8vIFRPRE86 IHRoaXMgZG9lc24ndCBjdXJyZW50bHkgd29yayB3aGVuIHdpbmRvdyBkZWNvcmF0aW9ucyBhcmUg ZW5hYmxlZAorIAorLS8vICAgIFFFWFBFQ1RfRkFJTCgiIiwgImNvbmZpZ3VyZSBoYXMgYWxyZWFk eSBiZWVuIGFja2VkLCB3ZSBzaG91bGRuJ3QgaGF2ZSB0byB3YWl0IGZvciBpc0FjdGl2ZSIsIENv bnRpbnVlKTsKKy0vLyAgICBRVkVSSUZZKHdpbmRvdy5pc0FjdGl2ZSgpKTsKKy0gICAgUVRSWV9W RVJJRlkod2luZG93LmlzQWN0aXZlKCkpOyAvLyBKdXN0IG1ha2Ugc3VyZSBpdCBldmVudHVhbGx5 IGdldCdzIHNldCBjb3JyZWN0bHkKKysgICAgLy8gd2luZG93LndpbmRvd3N0YXRlKCkgaXMgZHJp dmVuIGJ5IGtleWJvYXJkIGZvY3VzLCBob3dldmVyIGZvciBkZWNvcmF0aW9ucyB3ZSB3YW50IHRv IGZvbGxvdworKyAgICAvLyBYREdTaGVsbCB0aGlzIGlzIGludGVybmFsIHRvIFF0V2F5bGFuZCBz byBpdCBpcyBxdWVyaWVkIGRpcmVjdGx5CisrICAgIGF1dG8gd2F5bGFuZFdpbmRvdyA9IHN0YXRp Y19jYXN0PFF0V2F5bGFuZENsaWVudDo6UVdheWxhbmRXaW5kb3cgKj4od2luZG93LmhhbmRsZSgp KTsKKysgICAgUV9BU1NFUlQod2F5bGFuZFdpbmRvdyk7CisrICAgIFFUUllfVkVSSUZZKHdheWxh bmRXaW5kb3ctPndpbmRvd1N0YXRlcygpLnRlc3RGbGFnKAorKyAgICAgICAgICAgIFF0OjpXaW5k b3dBY3RpdmUpKTsgLy8gSnVzdCBtYWtlIHN1cmUgaXQgZXZlbnR1YWxseSBnZXQncyBzZXQgY29y cmVjdGx5CisgCisgICAgIGNvbnN0IFFTaXplIHNjcmVlblNpemUoNjQwLCA0ODApOworICAgICBj b25zdCB1aW50IG1heGltaXplZFNlcmlhbCA9IGV4ZWMoWz1dIHsKK0BAIC0xODYsNiArMTkyLDcg QEAgdm9pZCB0c3RfeGRnc2hlbGw6OmNvbmZpZ3VyZVN0YXRlcygpCisgICAgIFFDT01QQVJFKHdp bmRvdy53aW5kb3dTdGF0ZXMoKSwgUXQ6OldpbmRvd05vU3RhdGUpOworICAgICBRQ09NUEFSRSh3 aW5kb3cuZnJhbWVHZW9tZXRyeSgpLnNpemUoKSwgd2luZG93ZWRTaXplKTsKKyAvLyAgICBRQ09N UEFSRSh3aW5kb3cuZnJhbWVHZW9tZXRyeSgpLnRvcExlZnQoKSwgUVBvaW50KCkpOyAvLyBUT0RP OiB0aGlzIGRvZXNuJ3QgY3VycmVudGx5IHdvcmsgd2hlbiB3aW5kb3cgZGVjb3JhdGlvbnMgYXJl IGVuYWJsZWQKKysgICAgUVZFUklGWShxdW5zZXRlbnYoIlFUX1dBWUxBTkRfRlJBTUVfQ0FMTEJB Q0tfVElNRU9VVCIpKTsKKyB9CisgCisgdm9pZCB0c3RfeGRnc2hlbGw6OnBvcHVwKCkKK0BAIC0z NDAsNiArMzQ3LDkyIEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjp0b29sdGlwT25Qb3B1cCgpCisgICAg IFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1BvcHVwKDApLCBudWxscHRyKTsKKyB9CisgCisr dm9pZCB0c3RfeGRnc2hlbGw6OnRvb2x0aXBBbmRTaWJsaW5nUG9wdXAoKQorK3sKKysgICAgY2xh c3MgVG9vbFRpcCA6IHB1YmxpYyBRUmFzdGVyV2luZG93IHsKKysgICAgcHVibGljOgorKyAgICAg ICAgZXhwbGljaXQgVG9vbFRpcChRV2luZG93ICpwYXJlbnQpIHsKKysgICAgICAgICAgICBzZXRU cmFuc2llbnRQYXJlbnQocGFyZW50KTsKKysgICAgICAgICAgICBzZXRGbGFncyhRdDo6VG9vbFRp cCk7CisrICAgICAgICAgICAgcmVzaXplKDEwMCwgMTAwKTsKKysgICAgICAgICAgICBzaG93KCk7 CisrICAgICAgICB9CisrICAgICAgICB2b2lkIG1vdXNlUHJlc3NFdmVudChRTW91c2VFdmVudCAq ZXZlbnQpIG92ZXJyaWRlIHsKKysgICAgICAgICAgICBRUmFzdGVyV2luZG93Ojptb3VzZVByZXNz RXZlbnQoZXZlbnQpOworKyAgICAgICAgICAgIG1fcG9wdXAgPSBuZXcgUVJhc3RlcldpbmRvdzsK KysgICAgICAgICAgICBtX3BvcHVwLT5zZXRUcmFuc2llbnRQYXJlbnQodHJhbnNpZW50UGFyZW50 KCkpOworKyAgICAgICAgICAgIG1fcG9wdXAtPnNldEZsYWdzKFF0OjpQb3B1cCk7CisrICAgICAg ICAgICAgbV9wb3B1cC0+cmVzaXplKDEwMCwgMTAwKTsKKysgICAgICAgICAgICBtX3BvcHVwLT5z aG93KCk7CisrICAgICAgICB9CisrCisrICAgICAgICBRUmFzdGVyV2luZG93ICptX3BvcHVwID0g bnVsbHB0cjsKKysgICAgfTsKKysKKysgICAgY2xhc3MgV2luZG93IDogcHVibGljIFFSYXN0ZXJX aW5kb3cgeworKyAgICBwdWJsaWM6CisrICAgICAgICB2b2lkIG1vdXNlUHJlc3NFdmVudChRTW91 c2VFdmVudCAqZXZlbnQpIG92ZXJyaWRlIHsKKysgICAgICAgICAgICBRUmFzdGVyV2luZG93Ojpt b3VzZVByZXNzRXZlbnQoZXZlbnQpOworKyAgICAgICAgICAgIG1fdG9vbHRpcCA9IG5ldyBUb29s VGlwKHRoaXMpOworKyAgICAgICAgfQorKyAgICAgICAgVG9vbFRpcCAqbV90b29sdGlwID0gbnVs bHB0cjsKKysgICAgfTsKKysKKysgICAgV2luZG93IHdpbmRvdzsKKysgICAgd2luZG93LnJlc2l6 ZSgyMDAsIDIwMCk7CisrICAgIHdpbmRvdy5zaG93KCk7CisrCisrICAgIFFDT01QT1NJVE9SX1RS WV9WRVJJRlkoeGRnVG9wbGV2ZWwoKSk7CisrICAgIGV4ZWMoWz1dIHsgeGRnVG9wbGV2ZWwoKS0+ c2VuZENvbXBsZXRlQ29uZmlndXJlKCk7IH0pOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZ KHhkZ1RvcGxldmVsKCktPm1feGRnU3VyZmFjZS0+bV9jb21taXR0ZWRDb25maWd1cmVTZXJpYWwp OworKworKyAgICBleGVjKFs9XSB7CisrICAgICAgICBhdXRvICpzdXJmYWNlID0geGRnVG9wbGV2 ZWwoKS0+c3VyZmFjZSgpOworKyAgICAgICAgYXV0byAqcCA9IHBvaW50ZXIoKTsKKysgICAgICAg IGF1dG8gKmMgPSBjbGllbnQoKTsKKysgICAgICAgIHAtPnNlbmRFbnRlcihzdXJmYWNlLCB7MTAw LCAxMDB9KTsKKysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgICAgIHAtPnNlbmRCdXR0 b24oY2xpZW50KCksIEJUTl9MRUZULCBQb2ludGVyOjpidXR0b25fc3RhdGVfcHJlc3NlZCk7Cisr ICAgICAgICBwLT5zZW5kQnV0dG9uKGNsaWVudCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9u X3N0YXRlX3JlbGVhc2VkKTsKKysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgICAgIHAt PnNlbmRMZWF2ZShzdXJmYWNlKTsKKysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgfSk7 CisrCisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoKSk7CisrICAgIGV4ZWMo Wz1dIHsgeGRnUG9wdXAoKS0+c2VuZENvbXBsZXRlQ29uZmlndXJlKFFSZWN0KDEwMCwgMTAwLCAx MDAsIDEwMCkpOyB9KTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgpLT5t X3hkZ1N1cmZhY2UtPm1fY29tbWl0dGVkQ29uZmlndXJlU2VyaWFsKTsKKysgICAgUUNPTVBPU0lU T1JfVFJZX1ZFUklGWSgheGRnUG9wdXAoKS0+bV9ncmFiYmVkKTsKKysKKysgICAgZXhlYyhbPV0g eworKyAgICAgICAgYXV0byAqc3VyZmFjZSA9IHhkZ1BvcHVwKCktPnN1cmZhY2UoKTsKKysgICAg ICAgIGF1dG8gKnAgPSBwb2ludGVyKCk7CisrICAgICAgICBhdXRvICpjID0gY2xpZW50KCk7Cisr ICAgICAgICBwLT5zZW5kRW50ZXIoc3VyZmFjZSwgezEwMCwgMTAwfSk7CisrICAgICAgICBwLT5z ZW5kRnJhbWUoYyk7CisrICAgICAgICBwLT5zZW5kQnV0dG9uKGNsaWVudCgpLCBCVE5fTEVGVCwg UG9pbnRlcjo6YnV0dG9uX3N0YXRlX3ByZXNzZWQpOworKyAgICAgICAgcC0+c2VuZEJ1dHRvbihj bGllbnQoKSwgQlROX0xFRlQsIFBvaW50ZXI6OmJ1dHRvbl9zdGF0ZV9yZWxlYXNlZCk7CisrICAg ICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgIH0pOworKworKyAgICBRQ09NUE9TSVRPUl9UUllf VkVSSUZZKHhkZ1BvcHVwKDEpKTsKKysgICAgZXhlYyhbPV0geyB4ZGdQb3B1cCgxKS0+c2VuZENv bXBsZXRlQ29uZmlndXJlKFFSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOyB9KTsKKysgICAgUUNP TVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgxKS0+bV94ZGdTdXJmYWNlLT5tX2NvbW1pdHRl ZENvbmZpZ3VyZVNlcmlhbCk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAo MSktPm1fZ3JhYmJlZCk7CisrCisrICAgIC8vIENsb3NlIHRoZSBtaWRkbGUgdG9vbHRpcCAoaXQg c2hvdWxkIG5vdCBjbG9zZSB0aGUgc2libGluZyBwb3B1cCkKKysgICAgd2luZG93Lm1fdG9vbHRp cC0+Y2xvc2UoKTsKKysKKysgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnUG9wdXAoMSks IG51bGxwdHIpOworKyAgICAvLyBWZXJpZnkgdGhlIHJlbWFpbmluZyB4ZGcgc3VyZmFjZSBpcyBh IGdyYWIgcG9wdXAuLgorKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDApKTsK KysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgwKS0+bV9ncmFiYmVkKTsKKysK KysgICAgd2luZG93Lm1fdG9vbHRpcC0+bV9wb3B1cC0+Y2xvc2UoKTsKKysgICAgUUNPTVBPU0lU T1JfVFJZX0NPTVBBUkUoeGRnUG9wdXAoMSksIG51bGxwdHIpOworKyAgICBRQ09NUE9TSVRPUl9U UllfQ09NUEFSRSh4ZGdQb3B1cCgwKSwgbnVsbHB0cik7CisrfQorKworIC8vIFFUQlVHLTY1Njgw Cisgdm9pZCB0c3RfeGRnc2hlbGw6OnN3aXRjaFBvcHVwcygpCisgeworQEAgLTUwNSw3ICs1OTgs NyBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6bWluTWF4U2l6ZSgpCisgICAgIHdpbmRvdy5zaG93KCk7 CisgICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnVG9wbGV2ZWwoKSk7CisgCistICAgIGV4 ZWMoWz1dIHsgeGRnVG9wbGV2ZWwoKS0+c2VuZENvbXBsZXRlQ29uZmlndXJlKCk7IH0pOworKyAg ICAvLyB3ZSBkb24ndCByb3VuZHRyaXAgd2l0aCBvdXIgY29uZmlndXJhdGlvbiB0aGUgaW5pdGlh bCBjb21taXQgc2hvdWxkIGJlIGNvcnJlY3QKKyAKKyAgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBB UkUoeGRnVG9wbGV2ZWwoKS0+bV9jb21taXR0ZWQubWluU2l6ZSwgUVNpemUoMTAwLCAxMDApKTsK KyAgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnVG9wbGV2ZWwoKS0+bV9jb21taXR0ZWQu bWF4U2l6ZSwgUVNpemUoMTAwMCwgMTAwMCkpOworU3VibW9kdWxlIHF0d2ViY2hhbm5lbCA2MTg0 MjJlZS4uZjg5NDk2NTU6CitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVs L3FtZXRhb2JqZWN0cHVibGlzaGVyLmNwcCBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9x bWV0YW9iamVjdHB1Ymxpc2hlci5jcHAKK2luZGV4IDUzNmViNWMuLjg5OGQ3NjkgMTAwNjQ0Cist LS0gYS9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIuY3Bw CisrKysgYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIu Y3BwCitAQCAtMTg2LDggKzE4Niw2IEBAIFFfREVDTEFSRV9UWVBFSU5GTyhPdmVybG9hZFJlc29s dXRpb25DYW5kaWRhdGUsIFFfTU9WQUJMRV9UWVBFKTsKKyBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6 UU1ldGFPYmplY3RQdWJsaXNoZXIoUVdlYkNoYW5uZWwgKndlYkNoYW5uZWwpCisgICAgIDogUU9i amVjdCh3ZWJDaGFubmVsKQorICAgICAsIHdlYkNoYW5uZWwod2ViQ2hhbm5lbCkKKy0gICAgLCBz aWduYWxIYW5kbGVyKHRoaXMpCistICAgICwgY2xpZW50SXNJZGxlKGZhbHNlKQorICAgICAsIGJs b2NrVXBkYXRlcyhmYWxzZSkKKyAgICAgLCBwcm9wZXJ0eVVwZGF0ZXNJbml0aWFsaXplZChmYWxz ZSkKKyB7CitAQCAtMzAxLDE3ICsyOTksMTcgQEAgUUpzb25PYmplY3QgUU1ldGFPYmplY3RQdWJs aXNoZXI6OmNsYXNzSW5mb0Zvck9iamVjdChjb25zdCBRT2JqZWN0ICpvYmplY3QsIFFXZWIKKyAg ICAgcmV0dXJuIGRhdGE7CisgfQorIAorLXZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNldENs aWVudElzSWRsZShib29sIGlzSWRsZSkKKyt2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZXRD bGllbnRJc0lkbGUoYm9vbCBpc0lkbGUsIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRy YW5zcG9ydCkKKyB7CistICAgIGlmIChjbGllbnRJc0lkbGUgPT0gaXNJZGxlKSB7CistICAgICAg ICByZXR1cm47CistICAgIH0KKy0gICAgY2xpZW50SXNJZGxlID0gaXNJZGxlOworLSAgICBpZiAo IWlzSWRsZSAmJiB0aW1lci5pc0FjdGl2ZSgpKSB7CistICAgICAgICB0aW1lci5zdG9wKCk7Cist ICAgIH0gZWxzZSBpZiAoaXNJZGxlICYmICF0aW1lci5pc0FjdGl2ZSgpKSB7CistICAgICAgICB0 aW1lci5zdGFydChQUk9QRVJUWV9VUERBVEVfSU5URVJWQUwsIHRoaXMpOworLSAgICB9CisrICAg IHRyYW5zcG9ydFN0YXRlW3RyYW5zcG9ydF0uY2xpZW50SXNJZGxlID0gaXNJZGxlOworKyAgICBp ZiAoaXNJZGxlKQorKyAgICAgICAgc2VuZEVucXVldWVkUHJvcGVydHlVcGRhdGVzKHRyYW5zcG9y dCk7CisrfQorKworK2Jvb2wgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmlzQ2xpZW50SWRsZShRV2Vi Q2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisreworKyAgICBhdXRvIGZvdW5k ID0gdHJhbnNwb3J0U3RhdGUuZmluZCh0cmFuc3BvcnQpOworKyAgICByZXR1cm4gZm91bmQgIT0g dHJhbnNwb3J0U3RhdGUuZW5kKCkgJiYgZm91bmQudmFsdWUoKS5jbGllbnRJc0lkbGU7CisgfQor IAorIFFKc29uT2JqZWN0IFFNZXRhT2JqZWN0UHVibGlzaGVyOjppbml0aWFsaXplQ2xpZW50KFFX ZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkKK0BAIC0zMzMsNiArMzMxLDcg QEAgUUpzb25PYmplY3QgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmluaXRpYWxpemVDbGllbnQoUVdl YkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydAorIAorIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6 OmluaXRpYWxpemVQcm9wZXJ0eVVwZGF0ZXMoY29uc3QgUU9iamVjdCAqY29uc3Qgb2JqZWN0LCBj b25zdCBRSnNvbk9iamVjdCAmb2JqZWN0SW5mbykKKyB7CisrICAgIGF1dG8gKnNpZ25hbEhhbmRs ZXIgPSBzaWduYWxIYW5kbGVyRm9yKG9iamVjdCk7CisgICAgIGZvcmVhY2ggKGNvbnN0IFFKc29u VmFsdWUgJnByb3BlcnR5SW5mb1Zhciwgb2JqZWN0SW5mb1tLRVlfUFJPUEVSVElFU10udG9BcnJh eSgpKSB7CisgICAgICAgICBjb25zdCBRSnNvbkFycmF5ICZwcm9wZXJ0eUluZm8gPSBwcm9wZXJ0 eUluZm9WYXIudG9BcnJheSgpOworICAgICAgICAgaWYgKHByb3BlcnR5SW5mby5zaXplKCkgPCAy KSB7CitAQCAtMzUzLDE5ICszNTIsMTkgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW5p dGlhbGl6ZVByb3BlcnR5VXBkYXRlcyhjb25zdCBRT2JqZWN0ICpjb25zdCBvYmplY3QKKyAKKyAg ICAgICAgIC8vIE9ubHkgY29ubmVjdCBmb3IgYSBwcm9wZXJ0eSB1cGRhdGUgb25jZQorICAgICAg ICAgaWYgKGNvbm5lY3RlZFByb3BlcnRpZXMuaXNFbXB0eSgpKSB7CistICAgICAgICAgICAgc2ln bmFsSGFuZGxlci5jb25uZWN0VG8ob2JqZWN0LCBzaWduYWxJbmRleCk7CisrICAgICAgICAgICAg c2lnbmFsSGFuZGxlci0+Y29ubmVjdFRvKG9iamVjdCwgc2lnbmFsSW5kZXgpOworICAgICAgICAg fQorIAorICAgICAgICAgY29ubmVjdGVkUHJvcGVydGllcy5pbnNlcnQocHJvcGVydHlJbmRleCk7 CisgICAgIH0KKyAKKyAgICAgLy8gYWxzbyBhbHdheXMgY29ubmVjdCB0byBkZXN0cm95ZWQgc2ln bmFsCistICAgIHNpZ25hbEhhbmRsZXIuY29ubmVjdFRvKG9iamVjdCwgc19kZXN0cm95ZWRTaWdu YWxJbmRleCk7CisrICAgIHNpZ25hbEhhbmRsZXItPmNvbm5lY3RUbyhvYmplY3QsIHNfZGVzdHJv eWVkU2lnbmFsSW5kZXgpOworIH0KKyAKKyB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZW5k UGVuZGluZ1Byb3BlcnR5VXBkYXRlcygpCisgeworLSAgICBpZiAoYmxvY2tVcGRhdGVzIHx8ICFj bGllbnRJc0lkbGUgfHwgcGVuZGluZ1Byb3BlcnR5VXBkYXRlcy5pc0VtcHR5KCkpIHsKKysgICAg aWYgKGJsb2NrVXBkYXRlcykgeworICAgICAgICAgcmV0dXJuOworICAgICB9CisgCitAQCAtNDE1 LDE4ICs0MTQsMTkgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2VuZFBlbmRpbmdQcm9w ZXJ0eVVwZGF0ZXMoKQorIAorICAgICAvLyBkYXRhIGRvZXMgbm90IGNvbnRhaW4gc3BlY2lmaWMg dXBkYXRlcworICAgICBpZiAoIWRhdGEuaXNFbXB0eSgpKSB7CistICAgICAgICBzZXRDbGllbnRJ c0lkbGUoZmFsc2UpOworLQorICAgICAgICAgbWVzc2FnZVtLRVlfREFUQV0gPSBkYXRhOworLSAg ICAgICAgYnJvYWRjYXN0TWVzc2FnZShtZXNzYWdlKTsKKysgICAgICAgIGVucXVldWVCcm9hZGNh c3RNZXNzYWdlKG1lc3NhZ2UpOworICAgICB9CisgCisgICAgIC8vIHNlbmQgZXZlcnkgcHJvcGVy dHkgdXBkYXRlIHdoaWNoIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBicm9hZGNhc3RlZAorICAgICBj b25zdCBRSGFzaDxRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0KiwgUUpzb25BcnJheT46OmNv bnN0X2l0ZXJhdG9yIHN1ZW5kID0gc3BlY2lmaWNVcGRhdGVzLmNvbnN0RW5kKCk7CisgICAgIGZv ciAoUUhhc2g8UVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCosIFFKc29uQXJyYXk+Ojpjb25z dF9pdGVyYXRvciBpdCA9IHNwZWNpZmljVXBkYXRlcy5jb25zdEJlZ2luKCk7IGl0ICE9IHN1ZW5k OyArK2l0KSB7CisgICAgICAgICBtZXNzYWdlW0tFWV9EQVRBXSA9IGl0LnZhbHVlKCk7CistICAg ICAgICBpdC5rZXkoKS0+c2VuZE1lc3NhZ2UobWVzc2FnZSk7CisrICAgICAgICBlbnF1ZXVlTWVz c2FnZShtZXNzYWdlLCBpdC5rZXkoKSk7CisgICAgIH0KKysKKysgICAgZm9yIChhdXRvIHN0YXRl ID0gdHJhbnNwb3J0U3RhdGUuYmVnaW4oKTsgc3RhdGUgIT0gdHJhbnNwb3J0U3RhdGUuZW5kKCk7 ICsrc3RhdGUpCisrICAgICAgICBzZW5kRW5xdWV1ZWRQcm9wZXJ0eVVwZGF0ZXMoc3RhdGUua2V5 KCkpOworIH0KKyAKKyBRVmFyaWFudCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW52b2tlTWV0aG9k KFFPYmplY3QgKmNvbnN0IG9iamVjdCwgY29uc3QgUU1ldGFNZXRob2QgJm1ldGhvZCwKK0BAIC01 NzIsNyArNTcyLDcgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2lnbmFsRW1pdHRlZChj b25zdCBRT2JqZWN0ICpvYmplY3QsIGNvbnN0IGludCBzaWduYWwKKyAgICAgICAgIH0KKyAgICAg fSBlbHNlIHsKKyAgICAgICAgIHBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXNbb2JqZWN0XVtzaWduYWxJ bmRleF0gPSBhcmd1bWVudHM7CistICAgICAgICBpZiAoY2xpZW50SXNJZGxlICYmICFibG9ja1Vw ZGF0ZXMgJiYgIXRpbWVyLmlzQWN0aXZlKCkpIHsKKysgICAgICAgIGlmICghYmxvY2tVcGRhdGVz ICYmICF0aW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgICAgICAgdGltZXIuc3RhcnQoUFJPUEVS VFlfVVBEQVRFX0lOVEVSVkFMLCB0aGlzKTsKKyAgICAgICAgIH0KKyAgICAgfQorQEAgLTU5MCw3 ICs1OTAsNyBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpvYmplY3REZXN0cm95ZWQoY29u c3QgUU9iamVjdCAqb2JqZWN0KQorICAgICAvLyBvbmx5IHJlbW92ZSBmcm9tIGhhbmRsZXIgd2hl biB3ZSBpbml0aWFsaXplZCB0aGUgcHJvcGVydHkgdXBkYXRlcworICAgICAvLyBjZjogaHR0cHM6 Ly9idWdyZXBvcnRzLnF0LmlvL2Jyb3dzZS9RVEJVRy02MDI1MAorICAgICBpZiAocHJvcGVydHlV cGRhdGVzSW5pdGlhbGl6ZWQpIHsKKy0gICAgICAgIHNpZ25hbEhhbmRsZXIucmVtb3ZlKG9iamVj dCk7CisrICAgICAgICBzaWduYWxIYW5kbGVyRm9yKG9iamVjdCktPnJlbW92ZShvYmplY3QpOwor ICAgICAgICAgc2lnbmFsVG9Qcm9wZXJ0eU1hcC5yZW1vdmUob2JqZWN0KTsKKyAgICAgfQorICAg ICBwZW5kaW5nUHJvcGVydHlVcGRhdGVzLnJlbW92ZShvYmplY3QpOworQEAgLTg1Miw2ICs4NTIs NTIgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6YnJvYWRjYXN0TWVzc2FnZShjb25zdCBR SnNvbk9iamVjdCAmbWVzc2FnZSkgY29uc3QKKyAgICAgfQorIH0KKyAKKyt2b2lkIFFNZXRhT2Jq ZWN0UHVibGlzaGVyOjplbnF1ZXVlQnJvYWRjYXN0TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAm bWVzc2FnZSkKKyt7CisrICAgIGlmICh3ZWJDaGFubmVsLT5kX2Z1bmMoKS0+dHJhbnNwb3J0cy5p c0VtcHR5KCkpIHsKKysgICAgICAgIHFXYXJuaW5nKCJRV2ViQ2hhbm5lbCBpcyBub3QgY29ubmVj dGVkIHRvIGFueSB0cmFuc3BvcnRzLCBjYW5ub3Qgc2VuZCBtZXNzYWdlOiAlcyIsCisrICAgICAg ICAgICAgICAgICBRSnNvbkRvY3VtZW50KG1lc3NhZ2UpLnRvSnNvbigpLmNvbnN0RGF0YSgpKTsK KysgICAgICAgIHJldHVybjsKKysgICAgfQorKworKyAgICBmb3IgKGF1dG8gKnRyYW5zcG9ydCA6 IHdlYkNoYW5uZWwtPmRfZnVuYygpLT50cmFuc3BvcnRzKSB7CisrICAgICAgICBhdXRvICZzdGF0 ZSA9IHRyYW5zcG9ydFN0YXRlW3RyYW5zcG9ydF07CisrICAgICAgICBzdGF0ZS5xdWV1ZWRNZXNz YWdlcy5hcHBlbmQobWVzc2FnZSk7CisrICAgIH0KKyt9CisrCisrdm9pZCBRTWV0YU9iamVjdFB1 Ymxpc2hlcjo6ZW5xdWV1ZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVdlYkNoYW5uZWxBYnN0cmFj dFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorK3sKKysgICAgYXV0byAmc3RhdGUgPSB0cmFuc3BvcnRT dGF0ZVt0cmFuc3BvcnRdOworKyAgICBzdGF0ZS5xdWV1ZWRNZXNzYWdlcy5hcHBlbmQobWVzc2Fn ZSk7CisrfQorKworK3ZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNlbmRFbnF1ZXVlZFByb3Bl cnR5VXBkYXRlcyhRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisrewor KyAgICBhdXRvIGZvdW5kID0gdHJhbnNwb3J0U3RhdGUuZmluZCh0cmFuc3BvcnQpOworKyAgICBp ZiAoZm91bmQgIT0gdHJhbnNwb3J0U3RhdGUuZW5kKCkgJiYgZm91bmQudmFsdWUoKS5jbGllbnRJ c0lkbGUKKysgICAgICAgICYmICFmb3VuZC52YWx1ZSgpLnF1ZXVlZE1lc3NhZ2VzLmlzRW1wdHko KSkgeworKworKyAgICAgICAgLy8gSWYgdGhlIGNsaWVudCBpcyBjb25uZWN0ZWQgd2l0aCBhbiBp bi1wcm9jZXNzIHRyYW5zcG9ydCwgaXQgY2FuCisrICAgICAgICAvLyBoYXBwZW4gdGhhdCBhIG1l c3NhZ2UgdHJpZ2dlcnMgYSBzdWJzZXF1ZW50IHByb3BlcnR5IGNoYW5nZS4gSW4KKysgICAgICAg IC8vIHRoYXQgY2FzZSwgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgcXVldWVkIG1lc3NhZ2Vz IGhhdmUgYWxyZWFkeQorKyAgICAgICAgLy8gYmVlbiBjbGVhcmVkOyBvdGhlcndpc2UgdGhlIHJl Y3Vyc2l2ZSBjYWxsIHdpbGwgc2VuZCBldmVyeXRoaWcgYWdhaW4uCisrICAgICAgICAvLyBDYXNl IGluIHBvaW50OiBUaGUgcW1sd2ViY2hhbm5lbCB0ZXN0cyBmYWlsIGlmIHdlIGRvbid0IGNsZWFy IHRoZQorKyAgICAgICAgLy8gcXVldWVkIG1lc3NhZ2VzIGJlZm9yZSBzZW5kaW5nIHRoZW0gb3V0 LgorKyAgICAgICAgLy8gRm9yIHRoYXQgc2FtZSByZWFzb24gc2V0IHRoZSBjbGllbnQgdG8gImJ1 c3kiIChha2Egbm9uLWlkbGUpIGp1c3QKKysgICAgICAgIC8vIHJpZ2h0IGJlZm9yZSBzZW5kaW5n IG91dCB0aGUgbWVzc2FnZXM7IG90aGVyd2lzZSBhIHBvdGVudGlhbAorKyAgICAgICAgLy8gIklk bGUiIHR5cGUgbWVzc2FnZSB3aWxsIG5vdCBjb3JyZWN0bHkgcmVzdG9yZSB0aGUgSWRsZSBzdGF0 ZS4KKysgICAgICAgIGNvbnN0IGF1dG8gbWVzc2FnZXMgPSBzdGQ6Om1vdmUoZm91bmQudmFsdWUo KS5xdWV1ZWRNZXNzYWdlcyk7CisrICAgICAgICBRX0FTU0VSVChmb3VuZC52YWx1ZSgpLnF1ZXVl ZE1lc3NhZ2VzLmlzRW1wdHkoKSk7CisrICAgICAgICBmb3VuZC52YWx1ZSgpLmNsaWVudElzSWRs ZSA9IGZhbHNlOworKworKyAgICAgICAgZm9yIChjb25zdCBhdXRvICZtZXNzYWdlIDogbWVzc2Fn ZXMpIHsKKysgICAgICAgICAgICB0cmFuc3BvcnQtPnNlbmRNZXNzYWdlKG1lc3NhZ2UpOworKyAg ICAgICAgfQorKyAgICB9CisrfQorKworIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmhhbmRs ZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsIFFXZWJDaGFubmVsQWJzdHJhY3RU cmFuc3BvcnQgKnRyYW5zcG9ydCkKKyB7CisgICAgIGlmICghd2ViQ2hhbm5lbC0+ZF9mdW5jKCkt PnRyYW5zcG9ydHMuY29udGFpbnModHJhbnNwb3J0KSkgeworQEAgLTg2Niw3ICs5MTIsNyBAQCB2 b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpoYW5kbGVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0 ICZtZXNzYWdlLCBRV2ViQ2hhbm5lbAorIAorICAgICBjb25zdCBNZXNzYWdlVHlwZSB0eXBlID0g dG9UeXBlKG1lc3NhZ2UudmFsdWUoS0VZX1RZUEUpKTsKKyAgICAgaWYgKHR5cGUgPT0gVHlwZUlk bGUpIHsKKy0gICAgICAgIHNldENsaWVudElzSWRsZSh0cnVlKTsKKysgICAgICAgIHNldENsaWVu dElzSWRsZSh0cnVlLCB0cmFuc3BvcnQpOworICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gVHlwZUlu aXQpIHsKKyAgICAgICAgIGlmICghbWVzc2FnZS5jb250YWlucyhLRVlfSUQpKSB7CisgICAgICAg ICAgICAgcVdhcm5pbmcoIkpTT04gbWVzc2FnZSBvYmplY3QgaXMgbWlzc2luZyB0aGUgaWQgcHJv cGVydHk6ICVzIiwKK0BAIC05MTMsOSArOTU5LDkgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hl cjo6aGFuZGxlTWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSwgUVdlYkNoYW5uZWwK KyAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgIHRyYW5zcG9ydC0+c2VuZE1l c3NhZ2UoY3JlYXRlUmVzcG9uc2UobWVzc2FnZS52YWx1ZShLRVlfSUQpLCB3cmFwUmVzdWx0KHJl c3VsdCwgdHJhbnNwb3J0KSkpOworICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IFR5cGVDb25u ZWN0VG9TaWduYWwpIHsKKy0gICAgICAgICAgICBzaWduYWxIYW5kbGVyLmNvbm5lY3RUbyhvYmpl Y3QsIG1lc3NhZ2UudmFsdWUoS0VZX1NJR05BTCkudG9JbnQoLTEpKTsKKysgICAgICAgICAgICBz aWduYWxIYW5kbGVyRm9yKG9iamVjdCktPmNvbm5lY3RUbyhvYmplY3QsIG1lc3NhZ2UudmFsdWUo S0VZX1NJR05BTCkudG9JbnQoLTEpKTsKKyAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUeXBl RGlzY29ubmVjdEZyb21TaWduYWwpIHsKKy0gICAgICAgICAgICBzaWduYWxIYW5kbGVyLmRpc2Nv bm5lY3RGcm9tKG9iamVjdCwgbWVzc2FnZS52YWx1ZShLRVlfU0lHTkFMKS50b0ludCgtMSkpOwor KyAgICAgICAgICAgIHNpZ25hbEhhbmRsZXJGb3Iob2JqZWN0KS0+ZGlzY29ubmVjdEZyb20ob2Jq ZWN0LCBtZXNzYWdlLnZhbHVlKEtFWV9TSUdOQUwpLnRvSW50KC0xKSk7CisgICAgICAgICB9IGVs c2UgaWYgKHR5cGUgPT0gVHlwZVNldFByb3BlcnR5KSB7CisgICAgICAgICAgICAgc2V0UHJvcGVy dHkob2JqZWN0LCBtZXNzYWdlLnZhbHVlKEtFWV9QUk9QRVJUWSkudG9JbnQoLTEpLAorICAgICAg ICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UudmFsdWUoS0VZX1ZBTFVFKSk7CitAQCAtOTMxLDYg Kzk3Nyw3IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNldEJsb2NrVXBkYXRlcyhib29s IGJsb2NrKQorICAgICBibG9ja1VwZGF0ZXMgPSBibG9jazsKKyAKKyAgICAgaWYgKCFibG9ja1Vw ZGF0ZXMpIHsKKysgICAgICAgIHRpbWVyLnN0YXJ0KFBST1BFUlRZX1VQREFURV9JTlRFUlZBTCwg dGhpcyk7CisgICAgICAgICBzZW5kUGVuZGluZ1Byb3BlcnR5VXBkYXRlcygpOworICAgICB9IGVs c2UgaWYgKHRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgIHRpbWVyLnN0b3AoKTsKK0BAIC05 NDgsNCArOTk1LDE1IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnRpbWVyRXZlbnQoUVRp bWVyRXZlbnQgKmV2ZW50KQorICAgICB9CisgfQorIAorK1NpZ25hbEhhbmRsZXI8UU1ldGFPYmpl Y3RQdWJsaXNoZXI+ICpRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2lnbmFsSGFuZGxlckZvcihjb25z dCBRT2JqZWN0ICpvYmplY3QpCisreworKyAgICBhdXRvIHRocmVhZCA9IG9iamVjdC0+dGhyZWFk KCk7CisrICAgIGF1dG8gaXQgPSBzaWduYWxIYW5kbGVycy5maW5kKHRocmVhZCk7CisrICAgIGlm IChpdCA9PSBzaWduYWxIYW5kbGVycy5lbmQoKSkgeworKyAgICAgICAgaXQgPSBzaWduYWxIYW5k bGVycy5lbXBsYWNlKHRocmVhZCwgdGhpcykuZmlyc3Q7CisrICAgICAgICBpdC0+c2Vjb25kLm1v dmVUb1RocmVhZCh0aHJlYWQpOworKyAgICB9CisrICAgIHJldHVybiAmaXQtPnNlY29uZDsKKyt9 CisrCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC9zcmMvd2Vi Y2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlcl9wLmggYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNo YW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXJfcC5oCitpbmRleCBiYmQ5ODc1Li40NzEzZWYxIDEw MDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlz aGVyX3AuaAorKysrIGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVi bGlzaGVyX3AuaAorQEAgLTU5LDYgKzU5LDkgQEAKKyAjaW5jbHVkZSA8UUJhc2ljVGltZXI+Cisg I2luY2x1ZGUgPFFQb2ludGVyPgorICNpbmNsdWRlIDxRSnNvbk9iamVjdD4KKysjaW5jbHVkZSA8 UVF1ZXVlPgorKworKyNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgorIAorICNpbmNsdWRlICJxd2Vi Y2hhbm5lbGdsb2JhbC5oIgorIAorQEAgLTEwOSwxNyArMTEyLDM2IEBAIHB1YmxpYzoKKyAgICAg ICovCisgICAgIHZvaWQgYnJvYWRjYXN0TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2Fn ZSkgY29uc3Q7CisgCisrICAgIC8qKgorKyAgICAgKiBFbnF1ZXVlIHRoZSBnaXZlbiBAcCBtZXNz YWdlIHRvIGFsbCBrbm93biB0cmFuc3BvcnRzLgorKyAgICAgKi8KKysgICAgdm9pZCBlbnF1ZXVl QnJvYWRjYXN0TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSk7CisrCisrICAgIC8q KgorKyAgICAgKiBFbnF1ZXVlIHRoZSBnaXZlbiBAcCBtZXNzYWdlIHRvIEBwIHRyYW5zcG9ydC4K KysgICAgICovCisrICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1l c3NhZ2UsIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7CisrCisrICAg IC8qKgorKyAgICAgKiBJZiBjbGllbnQgZm9yIGdpdmVuIEBwIHRyYW5zcG9ydCBpcyBpZGxlLCBz ZW5kIHF1ZXVlZCBtZXNzYWdlZCB0byBAcCB0cmFuc3BvcnQgYW5kIHRoZW4gbWFyaworKyAgICAg KiB0aGUgY2xpZW50IGFzIG5vdCBpZGxlLgorKyAgICAgKi8KKysgICAgdm9pZCBzZW5kRW5xdWV1 ZWRQcm9wZXJ0eVVwZGF0ZXMoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0 KTsKKysKKyAgICAgLyoqCisgICAgICAqIFNlcmlhbGl6ZSB0aGUgUU1ldGFPYmplY3Qgb2YgQHAg b2JqZWN0IGFuZCByZXR1cm4gaXQgaW4gSlNPTiBmb3JtLgorICAgICAgKi8KKyAgICAgUUpzb25P YmplY3QgY2xhc3NJbmZvRm9yT2JqZWN0KGNvbnN0IFFPYmplY3QgKm9iamVjdCwgUVdlYkNoYW5u ZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KTsKKyAKKyAgICAgLyoqCistICAgICAqIFNl dCB0aGUgY2xpZW50IHRvIGlkbGUgb3IgYnVzeSwgYmFzZWQgb24gdGhlIHZhbHVlIG9mIEBwIGlz SWRsZS4KKy0gICAgICoKKy0gICAgICogV2hlbiB0aGUgdmFsdWUgY2hhbmdlZCwgc3RhcnQvc3Rv cCB0aGUgcHJvcGVydHkgdXBkYXRlIHRpbWVyIGFjY29yZGluZ2x5LgorKyAgICAgKiBTZXQgdGhl IGNsaWVudCB0byBpZGxlIG9yIGJ1c3kgZm9yIGEgc2luZ2xlIEBwIHRyYW5zcG9ydCwgYmFzZWQg b24gdGhlIHZhbHVlIG9mIEBwIGlzSWRsZS4KKysgICAgICovCisrICAgIHZvaWQgc2V0Q2xpZW50 SXNJZGxlKGJvb2wgaXNJZGxlLCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3Bv cnQpOworKworKyAgICAvKioKKysgICAgICogQ2hlY2sgdGhhdCBjbGllbnQgaXMgaWRsZSBmb3Ig QHAgdHJhbnNwb3J0LgorICAgICAgKi8KKy0gICAgdm9pZCBzZXRDbGllbnRJc0lkbGUoYm9vbCBp c0lkbGUpOworKyAgICBib29sIGlzQ2xpZW50SWRsZShRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNw b3J0ICp0cmFuc3BvcnQpOworIAorICAgICAvKioKKyAgICAgICogSW5pdGlhbGl6ZSBjbGllbnRz IGJ5IHNlbmRpbmcgdGhlbSB0aGUgY2xhc3MgaW5mb3JtYXRpb24gb2YgdGhlIHJlZ2lzdGVyZWQg b2JqZWN0cy4KK0BAIC0yNzIsMTAgKzI5NCwxOCBAQCBwcml2YXRlOgorICAgICBmcmllbmQgY2xh c3MgVGVzdFdlYkNoYW5uZWw7CisgCisgICAgIFFXZWJDaGFubmVsICp3ZWJDaGFubmVsOworLSAg ICBTaWduYWxIYW5kbGVyPFFNZXRhT2JqZWN0UHVibGlzaGVyPiBzaWduYWxIYW5kbGVyOworKyAg ICBzdGQ6OnVub3JkZXJlZF9tYXA8Y29uc3QgUVRocmVhZCosIFNpZ25hbEhhbmRsZXI8UU1ldGFP YmplY3RQdWJsaXNoZXI+PiBzaWduYWxIYW5kbGVyczsKKysgICAgU2lnbmFsSGFuZGxlcjxRTWV0 YU9iamVjdFB1Ymxpc2hlcj4gKnNpZ25hbEhhbmRsZXJGb3IoY29uc3QgUU9iamVjdCAqb2JqZWN0 KTsKKyAKKy0gICAgLy8gdHJ1ZSB3aGVuIHRoZSBjbGllbnQgaXMgaWRsZSwgZmFsc2Ugb3RoZXJ3 aXNlCistICAgIGJvb2wgY2xpZW50SXNJZGxlOworKyAgICBzdHJ1Y3QgVHJhbnNwb3J0U3RhdGUK KysgICAgeworKyAgICAgICAgVHJhbnNwb3J0U3RhdGUoKSA6IGNsaWVudElzSWRsZShmYWxzZSkg eyB9CisrICAgICAgICAvLyB0cnVlIHdoZW4gdGhlIGNsaWVudCBpcyBpZGxlLCBmYWxzZSBvdGhl cndpc2UKKysgICAgICAgIGJvb2wgY2xpZW50SXNJZGxlOworKyAgICAgICAgLy8gbWVzc2FnZXMg dG8gc2VuZAorKyAgICAgICAgUVF1ZXVlPFFKc29uT2JqZWN0PiBxdWV1ZWRNZXNzYWdlczsKKysg ICAgfTsKKysgICAgUUhhc2g8UVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqLCBUcmFuc3Bv cnRTdGF0ZT4gdHJhbnNwb3J0U3RhdGU7CisgCisgICAgIC8vIHRydWUgd2hlbiBubyBwcm9wZXJ0 eSB1cGRhdGVzIHNob3VsZCBiZSBzZW50LCBmYWxzZSBvdGhlcndpc2UKKyAgICAgYm9vbCBibG9j a1VwZGF0ZXM7CitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3NpZ25h bGhhbmRsZXJfcC5oIGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3NpZ25hbGhhbmRsZXJf cC5oCitpbmRleCAyN2FmYWRiLi5kNzczNzNjIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3Ny Yy93ZWJjaGFubmVsL3NpZ25hbGhhbmRsZXJfcC5oCisrKysgYi9xdHdlYmNoYW5uZWwvc3JjL3dl YmNoYW5uZWwvc2lnbmFsaGFuZGxlcl9wLmgKK0BAIC01Niw2ICs1Niw3IEBACisgI2luY2x1ZGUg PFFWZWN0b3I+CisgI2luY2x1ZGUgPFFNZXRhTWV0aG9kPgorICNpbmNsdWRlIDxRRGVidWc+Cisr I2luY2x1ZGUgPFFUaHJlYWQ+CisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCitAQCAtNzEsNiAr NzIsNyBAQCBzdGF0aWMgY29uc3QgaW50IHNfZGVzdHJveWVkU2lnbmFsSW5kZXggPSBRT2JqZWN0 OjpzdGF0aWNNZXRhT2JqZWN0LmluZGV4T2ZNZXRobworIHRlbXBsYXRlPGNsYXNzIFJlY2VpdmVy PgorIGNsYXNzIFNpZ25hbEhhbmRsZXIgOiBwdWJsaWMgUU9iamVjdAorIHsKKysgICAgUV9ESVNB QkxFX0NPUFkoU2lnbmFsSGFuZGxlcikKKyBwdWJsaWM6CisgICAgIFNpZ25hbEhhbmRsZXIoUmVj ZWl2ZXIgKnJlY2VpdmVyLCBRT2JqZWN0ICpwYXJlbnQgPSAwKTsKKyAKK0BAIC0yNjgsNiArMjcw LDcgQEAgaW50IFNpZ25hbEhhbmRsZXI8UmVjZWl2ZXI+OjpxdF9tZXRhY2FsbChRTWV0YU9iamVj dDo6Q2FsbCBjYWxsLCBpbnQgbWV0aG9kSWQsIHYKKyAgICAgaWYgKGNhbGwgPT0gUU1ldGFPYmpl Y3Q6Okludm9rZU1ldGFNZXRob2QpIHsKKyAgICAgICAgIGNvbnN0IFFPYmplY3QgKm9iamVjdCA9 IHNlbmRlcigpOworICAgICAgICAgUV9BU1NFUlQob2JqZWN0KTsKKysgICAgICAgIFFfQVNTRVJU KFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSA9PSBvYmplY3QtPnRocmVhZCgpKTsKKyAgICAgICAg IFFfQVNTRVJUKHNlbmRlclNpZ25hbEluZGV4KCkgPT0gbWV0aG9kSWQpOworICAgICAgICAgUV9B U1NFUlQobV9jb25uZWN0aW9uc0NvdW50ZXIuY29udGFpbnMob2JqZWN0KSk7CisgICAgICAgICBR X0FTU0VSVChtX2Nvbm5lY3Rpb25zQ291bnRlci52YWx1ZShvYmplY3QpLmNvbnRhaW5zKG1ldGhv ZElkKSk7CitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vcW1sL3Rlc3R3ZWJj aGFubmVsLmNwcCBiL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5lbC5j cHAKK2luZGV4IDk4OTE2ODcuLjNjYTgxYzIgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvdGVz dHMvYXV0by9xbWwvdGVzdHdlYmNoYW5uZWwuY3BwCisrKysgYi9xdHdlYmNoYW5uZWwvdGVzdHMv YXV0by9xbWwvdGVzdHdlYmNoYW5uZWwuY3BwCitAQCAtNDYsNyArNDYsMTEgQEAgVGVzdFdlYkNo YW5uZWw6On5UZXN0V2ViQ2hhbm5lbCgpCisgCisgYm9vbCBUZXN0V2ViQ2hhbm5lbDo6Y2xpZW50 SXNJZGxlKCkgY29uc3QKKyB7CistICAgIHJldHVybiBRV2ViQ2hhbm5lbDo6ZF9mdW5jKCktPnB1 Ymxpc2hlci0+Y2xpZW50SXNJZGxlOworKyAgICBmb3IgKGF1dG8gKnRyYW5zcG9ydCA6IFFXZWJD aGFubmVsOjpkX2Z1bmMoKS0+dHJhbnNwb3J0cykgeworKyAgICAgICAgaWYgKFFXZWJDaGFubmVs OjpkX2Z1bmMoKS0+cHVibGlzaGVyLT5pc0NsaWVudElkbGUodHJhbnNwb3J0KSkKKysgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKKysgICAgfQorKyAgICByZXR1cm4gZmFsc2U7CisgfQorIAorIFFU X0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJj aGFubmVsL3RzdF93ZWJjaGFubmVsLmNwcCBiL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNo YW5uZWwvdHN0X3dlYmNoYW5uZWwuY3BwCitpbmRleCAxODFkYTllLi4zN2Y5ODlhIDEwMDY0NAor LS0tIGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5j cHAKKysrKyBiL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5u ZWwuY3BwCitAQCAtNzg1LDcgKzc4NSw3IEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RUcmFu c3BvcnRXcmFwT2JqZWN0UHJvcGVydGllcygpCisgICAgIER1bW15VHJhbnNwb3J0ICpkdW1teVRy YW5zcG9ydCA9IG5ldyBEdW1teVRyYW5zcG9ydCh0aGlzKTsKKyAgICAgY2hhbm5lbC5jb25uZWN0 VG8oZHVtbXlUcmFuc3BvcnQpOworICAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPmlu aXRpYWxpemVDbGllbnQoZHVtbXlUcmFuc3BvcnQpOworLSAgICBjaGFubmVsLmRfZnVuYygpLT5w dWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlKTsKKysgICAgY2hhbm5lbC5kX2Z1bmMoKS0+ cHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgZHVtbXlUcmFuc3BvcnQpOworIAorICAg ICBRQ09NUEFSRShjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnRyYW5zcG9ydGVkV3JhcHBl ZE9iamVjdHMuc2l6ZSgpLCAwKTsKKyAKK0BAIC05NDMsOCArOTQzLDYgQEAgdm9pZCBUZXN0V2Vi Q2hhbm5lbDo6dGVzdEluZmluaXRlUmVjdXJzaW9uKCkKKyAKKyB2b2lkIFRlc3RXZWJDaGFubmVs Ojp0ZXN0QXN5bmNPYmplY3QoKQorIHsKKy0gICAgUVNLSVAoIlRoaXMgdGVzdCBpcyBicm9rZW4u IFNlZSBRVEJVRy04MDcyOSIpOworLQorICAgICBRV2ViQ2hhbm5lbCBjaGFubmVsOworICAgICBj aGFubmVsLmNvbm5lY3RUbyhtX2R1bW15VHJhbnNwb3J0KTsKKyAKK0BAIC05OTAsNiArOTg4LDUw IEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RBc3luY09iamVjdCgpCisgICAgIHRocmVhZC53 YWl0KCk7CisgfQorIAorK3ZvaWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RQcm9wZXJ0eU11bHRpcGxl VHJhbnNwb3J0cygpCisreworKyAgICBEdW1teVRyYW5zcG9ydCB0cmFuc3BvcnQxOworKyAgICBE dW1teVRyYW5zcG9ydCB0cmFuc3BvcnQyOworKworKyAgICBRV2ViQ2hhbm5lbCBjaGFubmVsOwor KyAgICBRTWV0YU9iamVjdFB1Ymxpc2hlciAqcHVibGlzaGVyID0gY2hhbm5lbC5kX2Z1bmMoKS0+ cHVibGlzaGVyOworKworKyAgICBUZXN0T2JqZWN0IHRlc3RPYmo7CisrICAgIHRlc3RPYmouc2V0 T2JqZWN0TmFtZSgidGVzdE9iamVjdCIpOworKyAgICBjaGFubmVsLnJlZ2lzdGVyT2JqZWN0KHRl c3RPYmoub2JqZWN0TmFtZSgpLCAmdGVzdE9iaik7CisrICAgIGNoYW5uZWwuY29ubmVjdFRvKCZ0 cmFuc3BvcnQxKTsKKysgICAgY2hhbm5lbC5jb25uZWN0VG8oJnRyYW5zcG9ydDIpOworKworKyAg ICB0ZXN0T2JqLnNldFByb3AoIkhlbGxvIik7CisrCisrICAgIHB1Ymxpc2hlci0+aW5pdGlhbGl6 ZUNsaWVudCgmdHJhbnNwb3J0MSk7CisrICAgIHB1Ymxpc2hlci0+aW5pdGlhbGl6ZUNsaWVudCgm dHJhbnNwb3J0Mik7CisrICAgIHB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFu c3BvcnQxKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9y dDEpLCB0cnVlKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5z cG9ydDIpLCBmYWxzZSk7CisrICAgIFFWRVJJRlkodHJhbnNwb3J0MS5tZXNzYWdlc1NlbnQoKS5p c0VtcHR5KCkpOworKyAgICBRVkVSSUZZKHRyYW5zcG9ydDIubWVzc2FnZXNTZW50KCkuaXNFbXB0 eSgpKTsKKysKKysgICAgdGVzdE9iai5zZXRQcm9wKCJXb3JsZCIpOworKyAgICBRVFJZX0NPTVBB UkVfV0lUSF9USU1FT1VUKHRyYW5zcG9ydDEubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAxdSwgMjAw MCk7CisrICAgIFFDT01QQVJFKHRyYW5zcG9ydDIubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAwdSk7 CisrICAgIHB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQyKTsKKysg ICAgUVRSWV9DT01QQVJFX1dJVEhfVElNRU9VVCh0cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLnNp emUoKSwgMXUsIDIwMDApOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgm dHJhbnNwb3J0MSksIGZhbHNlKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElk bGUoJnRyYW5zcG9ydDIpLCBmYWxzZSk7CisrCisrICAgIHRlc3RPYmouc2V0UHJvcCgiISEhIik7 CisrICAgIHB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQyKTsKKysg ICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCB0cnVlKTsK KysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDEpLCBmYWxz ZSk7CisrICAgIFFUUllfQ09NUEFSRV9XSVRIX1RJTUVPVVQodHJhbnNwb3J0Mi5tZXNzYWdlc1Nl bnQoKS5zaXplKCksIDJ1LCAyMDAwKTsKKysgICAgUUNPTVBBUkUodHJhbnNwb3J0MS5tZXNzYWdl c1NlbnQoKS5zaXplKCksIDF1KTsKKysgICAgcHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1 ZSwgJnRyYW5zcG9ydDEpOworKyAgICBRVFJZX0NPTVBBUkVfV0lUSF9USU1FT1VUKHRyYW5zcG9y dDEubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAydSwgMjAwMCk7CisrICAgIFFDT01QQVJFKHB1Ymxp c2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQxKSwgZmFsc2UpOworKyAgICBRQ09NUEFSRShw dWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MiksIGZhbHNlKTsKKyt9CisrCisgY2xh c3MgRnVuY3Rpb25XcmFwcGVyIDogcHVibGljIFFPYmplY3QKKyB7CisgICAgIFFfT0JKRUNUCitA QCAtMTA4Miw3ICsxMTI0LDcgQEAgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6YmVuY2hJbml0aWFsaXpl Q2xpZW50cygpCisgCisgICAgICAgICBwdWJsaXNoZXItPnByb3BlcnR5VXBkYXRlc0luaXRpYWxp emVkID0gZmFsc2U7CisgICAgICAgICBwdWJsaXNoZXItPnNpZ25hbFRvUHJvcGVydHlNYXAuY2xl YXIoKTsKKy0gICAgICAgIHB1Ymxpc2hlci0+c2lnbmFsSGFuZGxlci5jbGVhcigpOworKyAgICAg ICAgcHVibGlzaGVyLT5zaWduYWxIYW5kbGVycy5jbGVhcigpOworICAgICB9CisgfQorIAorQEAg LTExMDcsNyArMTE0OSw3IEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6OmJlbmNoUHJvcGVydHlVcGRh dGVzKCkKKyAgICAgICAgICAgICBvYmotPmNoYW5nZSgpOworICAgICAgICAgfQorIAorLSAgICAg ICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5jbGllbnRJc0lkbGUgPSB0cnVlOworKyAg ICAgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwg bV9kdW1teVRyYW5zcG9ydCk7CisgICAgICAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXIt PnNlbmRQZW5kaW5nUHJvcGVydHlVcGRhdGVzKCk7CisgICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEv cXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5oIGIvcXR3 ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5oCitpbmRleCBl YWUyMWY0Li5kZDRlNjkwIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2Vi Y2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5oCisrKysgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93 ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmgKK0BAIC0zNDgsNiArMzQ4LDcgQEAgcHJpdmF0ZSBz bG90czoKKyAgICAgdm9pZCB0ZXN0SnNvblRvVmFyaWFudCgpOworICAgICB2b2lkIHRlc3RJbmZp bml0ZVJlY3Vyc2lvbigpOworICAgICB2b2lkIHRlc3RBc3luY09iamVjdCgpOworKyAgICB2b2lk IHRlc3RQcm9wZXJ0eU11bHRpcGxlVHJhbnNwb3J0cygpOworICAgICB2b2lkIHRlc3REZWxldGlv bkR1cmluZ01ldGhvZEludm9jYXRpb25fZGF0YSgpOworICAgICB2b2lkIHRlc3REZWxldGlvbkR1 cmluZ01ldGhvZEludm9jYXRpb24oKTsKKyAKK1N1Ym1vZHVsZSBxdHdlYmVuZ2luZSBmMzI4MDU0 ZC4uLjM4ZTBkZjZjIChjb21taXRzIG5vdCBwcmVzZW50KQorU3VibW9kdWxlIHF0d2Vic29ja2V0 cyA2NTg1MDk1NC4uNjNmYjhkYTE6CitkaWZmIC0tZ2l0IGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJz b2NrZXRzL3F3ZWJzb2NrZXRkYXRhcHJvY2Vzc29yLmNwcCBiL3F0d2Vic29ja2V0cy9zcmMvd2Vi c29ja2V0cy9xd2Vic29ja2V0ZGF0YXByb2Nlc3Nvci5jcHAKK2luZGV4IDJhZmZkZDUuLjk1ZjEx OTQgMTAwNjQ0CistLS0gYS9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldGRh dGFwcm9jZXNzb3IuY3BwCisrKysgYi9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNv Y2tldGRhdGFwcm9jZXNzb3IuY3BwCitAQCAtMjczLDYgKzI3Myw3IEBAIHZvaWQgUVdlYlNvY2tl dERhdGFQcm9jZXNzb3I6OmNsZWFyKCkKKyAgICAgaWYgKCFtX3BDb252ZXJ0ZXJTdGF0ZSkKKyAg ICAgICAgIG1fcENvbnZlcnRlclN0YXRlID0gbmV3IFFUZXh0Q29kZWM6OkNvbnZlcnRlclN0YXRl KFFUZXh0Q29kZWM6OkNvbnZlcnRJbnZhbGlkVG9OdWxsIHwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFUZXh0Q29kZWM6Oklnbm9y ZUhlYWRlcik7CisrICAgIGZyYW1lLmNsZWFyKCk7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBh L3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0cHJvdG9jb2wuY3BwIGIvcXR3 ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRwcm90b2NvbC5jcHAKK2luZGV4IGRm ODdhOTMuLmQwNDY1ZjEgMTAwNjQ0CistLS0gYS9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMv cXdlYnNvY2tldHByb3RvY29sLmNwcAorKysrIGIvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRz L3F3ZWJzb2NrZXRwcm90b2NvbC5jcHAKK0BAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBRV2ViU29j a2V0UHJvdG9jb2w6Om1hc2soY2hhciAqcGF5bG9hZCwgcXVpbnQ2NCBzaXplLCBxdWludDMyIG1h c2tpbmdLZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aW50OCgobWFza2luZ0tl eSAmIDB4MDAwMEZGMDB1KSA+PiA4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVp bnQ4KChtYXNraW5nS2V5ICYgMHgwMDAwMDBGRnUpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgfTsKKy0gICAgaW50IGkgPSAwOworKyAgICBxdWludDY0IGkgPSAwOworICAgICB3aGlsZSAo c2l6ZS0tID4gMCkKKyAgICAgICAgICpwYXlsb2FkKysgXj0gbWFza1tpKysgJSA0XTsKKyB9CmRp ZmYgLS1naXQgYS9zcmNwa2dzL3F0NS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCmlu ZGV4IGE3OWQyNWU2OWRhOC4uNmRkZGNlN2YzZTQ2IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS90ZW1wbGF0ZQpAQCAtMiwxMSArMiwxMSBAQAogIwog IyByZXZidW1wIGxpYnF0eGRnIGFmdGVyIGJ1bXBpbmcgcGF0Y2ggdmVyc2lvbgogcGtnbmFtZT1x dDUKLXZlcnNpb249NS4xNS43KzIwMjIxMTE5Cit2ZXJzaW9uPTUuMTUuOAorcmV2aXNpb249MQor YnVpbGRfc3R5bGU9bWV0YQogIyBjb21taXQgZjhjOWZiMzA0YmMzZTUzYjNhYTA3Zjk2MmNkNzRl OTE2MGRlY2NjYwogIyBiYXNlIHJlcG86IGh0dHBzOi8vaW52ZW50LmtkZS5vcmcvcXQvcXQvcXQ1 Ci1yZXZpc2lvbj01Ci1idWlsZF9zdHlsZT1tZXRhCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIGNs YW5nIGZsZXggcGVybCBnbGliLWRldmVsIHBrZy1jb25maWcKICBweXRob24gcmUyYyBydWJ5IHdo aWNoIgogbWFrZWRlcGVuZHM9IlNETDItZGV2ZWwgVnVsa2FuLUhlYWRlcnMgYWxzYS1saWItZGV2 ZWwgZG91YmxlLWNvbnZlcnNpb24tZGV2ZWwKQEAgLTI5LDggKzI5LDkgQEAgaG9tZXBhZ2U9Imh0 dHBzOi8vcXQuaW8vIgogIyB0YXJiYWxsIGlzIGdlbmVyYXRlZCB3aXRoIGBnaXQgYXJjaGl2ZS1h bGwgcXQ1LSR2ZXJzaW9uLnRhci5nemAKICMgdG8ga2VlcCB0aGUgc2l6ZSBzbWFsbGVyIHF0d2Vi ZW5naW5lLCBxdHdlYnZpZXcsIHF0ZG9jZ2FsbGVyeSwgcXRhY3RpdmVxdCBhbmQgcXRwaW0KICMg Y2FuIGJlIG1hcmtlZCB3aXRoIHRoZSBleHBvcnQtaWdub3JlIGF0dHJpYnV0ZQotZGlzdGZpbGVz PSJodHRwczovL3ZvaWQuam9obm55bmF0b3IuZGV2L2Rpc3RmaWxlcy9xdDUtJHt2ZXJzaW9ufS50 YXIuZ3oiCi1jaGVja3N1bT05ZDU3YWY0NzFjNzgwMjlhMzYyMjc2YjdjOTkxMDhlYTAwOWY1MTFi YjliYTZmZjZjYjg4NGY2ZGRkMjU1ZTlmCisjZGlzdGZpbGVzPSJodHRwczovL3ZvaWQuam9obm55 bmF0b3IuZGV2L2Rpc3RmaWxlcy9xdDUtJHt2ZXJzaW9ufS50YXIuZ3oiCitkaXN0ZmlsZXM9Imh0 dHBzOi8vZG93bmxvYWQucXQuaW8vYXJjaGl2ZS9xdC81LjE1LyR7dmVyc2lvbn0vc2luZ2xlL3F0 LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9ufS50YXIueHoiCitjaGVja3N1bT03 NzZhOTMwMmMzMzY2NzFmOTQwNmE1M2JkMzBiOGUzNmY4MjU3NDJiMmVjNDRhNTdjMDgyMTdiZmYw ZmE4NmI5CiBweXRob25fdmVyc2lvbj0yICN1bnZlcmlmaWVkCiByZXBsYWNlcz0icXQ1LWRvYzw1 LjYuMCBxdDUtcXVpY2sxPDUuNi4wIHF0NS1xdWljazEtZGV2ZWw8NS42LjAgcXQ1LXdlYmtpdDw1 LjYuMCBxdDUtd2Via2l0LWRldmVsPDUuNi4wCiAgcXQ1LWVuZ2luaW88NS43LjEgcXQ1LWVuZ2lu aW8tZGV2ZWw8NS43LjEgcXQ1LXBsdWdpbi1ndGs8NS43LjEgcXQ1LWNhbnZhczNkPDUuMTMuMCIK QEAgLTI1MCw3ICsyNTEsNiBAQCBkb19jb25maWd1cmUoKSB7CiAJIyBvcHRzKz0iIC12IgogCW9w dHMrPSIgLXNraXAgcXR3ZWJlbmdpbmUiCiAJb3B0cys9IiAtc2tpcCBxdHdlYnZpZXciCi0Jb3B0 cys9IiAtc2tpcCBxdGRvY2dhbGxlcnkiCiAJb3B0cys9IiAtc2tpcCBxdHBpbSIKIAlvcHRzKz0i IC1za2lwIHF0c3lzdGVtcyIKIAlvcHRzKz0iIC1za2lwIHF0c3BlZWNoIgoKRnJvbSBlY2IyNDI0 MGI0NmZhNzljNTYxZjdkMjZkNGIxMzMxMDIxOTRiYjA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIz IDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzUvMTE1XSBxdDYtbXVsdGltZWRpYTog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDYtbXVsdGltZWRpYS90ZW1wbGF0ZSBiL3NyY3BrZ3Mv cXQ2LW11bHRpbWVkaWEvdGVtcGxhdGUKaW5kZXggYzYyMmI3YzllOGZjLi5mNzc3ODczOGY2ZDMg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9xdDYtbXVsdGltZWRpYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ3F0Ni1tdWx0aW1lZGlhJwogcGtnbmFtZT1xdDYtbXVsdGltZWRpYQogdmVyc2lvbj02 LjUuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3Vy ZV9hcmdzPSItRFFUX0ZFQVRVUkVfZ3N0cmVhbWVyPU9OIgogaG9zdG1ha2VkZXBlbmRzPSJwZXJs IHF0Ni1kZWNsYXJhdGl2ZS1ob3N0LXRvb2xzIHBrZy1jb25maWcgcXQ2LXNoYWRlcnRvb2xzIgoK RnJvbSA3NjdjOTBkM2I0NDVmMDdjZjk3MjJlOTM1YjJiMzJjODgwMTQ1NmM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzYvMTE1XSBxdGF2 OiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvcXRhdi90ZW1wbGF0ZSB8 IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0YXYvdGVtcGxhdGUgYi9zcmNwa2dzL3F0YXYvdGVtcGxh dGUKaW5kZXggMzRjMzBiMmMwYzc4Li4yZDAwYWQxMDQzNTUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv cXRhdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0YXYvdGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0YXYnCiBwa2duYW1lPXF0YXYKIHZlcnNpb249MS4x My4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1xbWFrZQogaG9zdG1ha2Vk ZXBlbmRzPSJxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMiCi1tYWtlZGVwZW5kcz0iZmZtcGVnLWRl dmVsIGxpYmFzcy1kZXZlbCBsaWJvcGVuYWwtZGV2ZWwKK21ha2VkZXBlbmRzPSJmZm1wZWc0LWRl dmVsIGxpYmFzcy1kZXZlbCBsaWJvcGVuYWwtZGV2ZWwKICBsaWJ2YS1nbHgtZGV2ZWwgbGliWHYt ZGV2ZWwgcHVsc2VhdWRpby1kZXZlbAogIHF0NS1kZWNsYXJhdGl2ZS1kZXZlbCBxdDUtc3ZnLWRl dmVsCiAgcXQ1LXF1aWNrY29udHJvbHMiCgpGcm9tIDllYTE5ZWI1ZDc4ZWIxMWNkYmZhMGU4ZWJm ZWU5OGMyZDBmMjA2YjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3Vi amVjdDogW1BBVENIIDA3Ny8xMTVdIHF0b3g6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9xdG94L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdG94L3RlbXBsYXRlIGIv c3JjcGtncy9xdG94L3RlbXBsYXRlCmluZGV4IDE2MDE5ZDdlYWVjOS4uNWNlYTBiMTFiNjk3IDEw MDY0NAotLS0gYS9zcmNwa2dzL3F0b3gvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdG94L3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXRveCcKIHBrZ25hbWU9 cXRveAogdmVyc2lvbj0xLjE3LjYKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxl PWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURVUERBVEVfQ0hFQ0s9T0ZGCiAgLURHSVRfREVTQ1JJ QkU9JHt2ZXJzaW9ufQoKRnJvbSAwNTZlNjgzZTE5ZDQ5OWI1NjM3YzYwZmU2MzEzODMyMDY1NDli OGVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwNzgvMTE1XSByZXRyb2FyY2g6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy9yZXRyb2FyY2gvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0 ZSBiL3NyY3BrZ3MvcmV0cm9hcmNoL3RlbXBsYXRlCmluZGV4IDI0MGQzZGY5ZGIwMC4uNmQwYjE2 YWUyNTk4IDEwMDY0NAotLS0gYS9zcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3JldHJvYXJjaC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ3JldHJvYXJjaCcKIHBrZ25hbWU9cmV0cm9hcmNoCiB2ZXJzaW9uPTEuMTQuMAotcmV2aXNp b249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y29uZmlndXJlCiBjb25maWd1cmVfYXJncz0i LS1wcmVmaXg9L3VzciAtLXN5c2NvbmZkaXI9L2V0YyAtLWVuYWJsZS1uZXR3b3JraW5nCiAgLS1l bmFibGUtdWRldiAtLWRpc2FibGUtYnVpbHRpbmZsYWMgLS1kaXNhYmxlLWJ1aWx0aW5nbHNsYW5n CgpGcm9tIDdjZGE4MjBiYTEyODcyNTgxM2M4YWU3YWY3MTU2NWQ4NWE2NzE1NDMgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3OS8xMTVdIHNj cmNweTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3NjcmNweS90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2NyY3B5L3RlbXBsYXRlIGIvc3JjcGtncy9zY3JjcHkvdGVt cGxhdGUKaW5kZXggZWU2ZTY5OGUzODdmLi44YWRhNWNhNDMyM2YgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3Mvc2NyY3B5L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2NyY3B5L3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc2NyY3B5JwogcGtnbmFtZT1zY3JjcHkKIHZl cnNpb249Mi4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogY29u ZmlndXJlX2FyZ3M9Ii1EY29tcGlsZV9zZXJ2ZXI9ZmFsc2UKICAtRHByZWJ1aWx0X3NlcnZlcj0v dXNyL3NoYXJlL3NjcmNweS9zY3JjcHktc2VydmVyLXYke3ZlcnNpb259IgoKRnJvbSAzODYxOTY1 MGE5MmJkOTIwYTdkMTY0NGE5NGU0NGQ0MDRkMTkyYzVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIz IDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODAvMTE1XSBzcGVrLWFsdGVybmF0aXZl OiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2 ZS90ZW1wbGF0ZSB8IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAz IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1w bGF0ZSBiL3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1wbGF0ZQppbmRleCBkNjUwODZiOGYw MDguLjA1MjQ2ZjFiOGQwYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1wbGF0ZQpAQCAtMSwxMSAr MSwxMSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc3Blay1hbHRlcm5hdGl2ZScKIHBrZ25hbWU9 c3Blay1hbHRlcm5hdGl2ZQogdmVyc2lvbj0wLjguMi4zCi1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIGdl dHRleHQtZGV2ZWwgaW50bHRvb2wgbGlidG9vbCBwa2ctY29uZmlnIHd4V2lkZ2V0cy1jb21tb24i Ci1tYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIHd4V2lkZ2V0cy1ndGszLWRldmVsIgotZGVwZW5k cz0iZmZtcGVnIgorbWFrZWRlcGVuZHM9ImZmbXBlZzQtZGV2ZWwgd3hXaWRnZXRzLWd0azMtZGV2 ZWwiCitkZXBlbmRzPSJmZm1wZWc0Igogc2hvcnRfZGVzYz0iQWNvdXN0aWMgc3BlY3RydW0gYW5h bHlzZXIiCiBtYWludGFpbmVyPSJLYXJ0aWsgU2luZ2ggPGthcnRpay55bndhQGdtYWlsLmNvbT4i CiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgoKRnJvbSBjYWNhZmQ5OTAyMzJjMTkzNmU2Yjgy ZGZkYWZjMmFlNjE0NTA0MzU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwODEvMTE1XSBzc3I6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMK Ci0tLQogc3JjcGtncy9zc3IvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGlu c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zc3IvdGVt cGxhdGUgYi9zcmNwa2dzL3Nzci90ZW1wbGF0ZQppbmRleCBiMDU1YjllYzA3NzQuLjM0NDhjYTEx MGViMCAxMDA2NDQKLS0tIGEvc3JjcGtncy9zc3IvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zc3Iv dGVtcGxhdGUKQEAgLTEsMTEgKzEsMTEgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3NzcicKIHBr Z25hbWU9c3NyCiB2ZXJzaW9uPTAuNC40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9z dHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9RVDU9T04iCiBob3N0bWFrZWRlcGVu ZHM9InBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZtcGVnLWRldmVs IGdsdS1kZXZlbCBqYWNrLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKK21ha2VkZXBlbmRzPSJhbHNh LWxpYi1kZXZlbCBmZm1wZWc0LWRldmVsIGdsdS1kZXZlbCBqYWNrLWRldmVsIHB1bHNlYXVkaW8t ZGV2ZWwKICBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXgxMWV4dHJhcy1kZXZlbCBsaWJYaW5lcmFtYS1k ZXZlbCB2NGwtdXRpbHMtZGV2ZWwiCiBkZXBlbmRzPSJkZXNrdG9wLWZpbGUtdXRpbHMgaGljb2xv ci1pY29uLXRoZW1lIgogc2hvcnRfZGVzYz0iU2ltcGxlIFNjcmVlbiBSZWNvcmRlciBmb3IgcHJv Z3JhbXMgYW5kIGdhbWVzIgoKRnJvbSAzNDRjYjZmMWM4NDAyZWUxZTFjYWE4ZjBlMDU2MGQwYWU1 YjVlNGMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwODIvMTE1XSBzdW1vOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mv c3Vtby90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZSBiL3NyY3BrZ3Mv c3Vtby90ZW1wbGF0ZQppbmRleCAwZjliOWVjODE1ZjUuLmEzZmUxMzRhYTVhYyAxMDA2NDQKLS0t IGEvc3JjcGtncy9zdW1vL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3N1bW8nCiBwa2duYW1lPXN1bW8KIHZl cnNpb249MS4xMi4wCi1yZXZpc2lvbj01CityZXZpc2lvbj02CiBidWlsZF9zdHlsZT1jbWFrZQog aG9zdG1ha2VkZXBlbmRzPSJsaWJnZGFsLXRvb2xzIHBrZy1jb25maWcgc3dpZyBweXRob24zLXNl dHVwdG9vbHMiCiBtYWtlZGVwZW5kcz0icHl0aG9uMy1kZXZlbCBmZm1wZWctZGV2ZWwgZm94LWRl dmVsIGdsMnBzLWRldmVsIGxpYmdkYWwtZGV2ZWwKCkZyb20gOTQyNDI5MzlkNjhkMTM4ZjhlMTA2 OTlhN2ZlN2MwNDFmMGFiOTRkYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDgzLzExNV0gc3luZmlnOiByZXZidW1wIGZvciBmZm1wZWctNi4w IGFuZCBtbHQ3CgotLS0KIHNyY3BrZ3Mvc3luZmlnL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCB8IDcx ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlICAg ICAgICAgICAgICB8ICA0ICstCiAyIGZpbGVzIGNoYW5nZWQsIDczIGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9m Zm1wZWc2LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2 LnBhdGNoIGIvc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTA3ODBiNDI3ODJmCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCkBAIC0wLDAgKzEsNzEg QEAKKy0tLSBhL3NyYy9tb2R1bGVzL21vZF9saWJhdmNvZGVjL3RyZ3RfYXYuY3BwCTIwMjItMTAt MjUgMDk6MTQ6MTIuMDAwMDAwMDAwIC0wNDAwCisrKysgYi9zcmMvbW9kdWxlcy9tb2RfbGliYXZj b2RlYy90cmd0X2F2LmNwcAkyMDIzLTA1LTA1IDIxOjM0OjE3Ljg5OTE5NDU1OSAtMDQwMAorQEAg LTM4LDYgKzQxLDcgQEAKKyBleHRlcm4gIkMiCisgeworICNpZmRlZiBIQVZFX0xJQkFWRk9STUFU X0FWRk9STUFUX0gKKysjCWluY2x1ZGUgPGxpYmF2Y29kZWMvYXZjb2RlYy5oPgorICMJaW5jbHVk ZSA8bGliYXZmb3JtYXQvYXZmb3JtYXQuaD4KKyAjZWxpZiBkZWZpbmVkKEhBVkVfQVZGT1JNQVRf SCkKKyAjCWluY2x1ZGUgPGF2Zm9ybWF0Lmg+CitAQCAtMTU1LDExICsxNTYsMTEgQEAKKyAgICAg fQorIAorIAlib29sIG9wZW5fdmlkZW9fc3RyZWFtKCkgeworLQkJaWYgKGF2Y29kZWNfb3BlbjIo dmlkZW9fY29udGV4dCwgTlVMTCwgTlVMTCkgPCAwKSB7CisrCQlpZiAoYXZjb2RlY19vcGVuMih2 aWRlb19jb250ZXh0LCBudWxscHRyLCBudWxscHRyKSA8IDApIHsKKyAJCQlzeW5maWc6OmVycm9y KCJUYXJnZXRfTGliQVZDb2RlYzogY291bGQgbm90IG9wZW4gdmlkZW8gY29kZWMiKTsKKyAJCQkv LyBzZWVtcyB0aGUgY2FsbGluZyBvZiBhdmNvZGVjX2ZyZWVfY29udGV4dCBhZnRlciBlcnJvciB3 aWxsIGNhdXNlIGNyYXNoCisgCQkJLy8gc28ganVzdCBmb3JnZXQgYWJvdXQgdGhpcyBjb250ZXh0 CistCQkJdmlkZW9fY29udGV4dCA9IE5VTEw7CisrCQkJdmlkZW9fY29udGV4dCA9IG51bGxwdHI7 CisgCQkJY2xvc2UoKTsKKyAJCQlyZXR1cm4gZmFsc2U7CisgICAgICAgICB9CitAQCAtMjM0LDE1 ICsyMzUsMjEgQEAKKyAJCWNsb3NlKCk7CisgCisgCQlpZiAoIWF2X3JlZ2lzdGVyZWQpIHsKKysj aWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTggLy8gRkZNUEVHIDwgNC4wCisgCQkJYXZf cmVnaXN0ZXJfYWxsKCk7CisrI2VuZGlmCisgCQkJYXZfcmVnaXN0ZXJlZCA9IHRydWU7CisgCQl9 CisgCisgCQkvLyBndWVzcyBmb3JtYXQKKy0JCUFWT3V0cHV0Rm9ybWF0ICpmb3JtYXQgPSBhdl9n dWVzc19mb3JtYXQoTlVMTCwgZmlsZW5hbWUuY19zdHIoKSwgTlVMTCk7CisrI2lmIExJQkFWQ09E RUNfVkVSU0lPTl9NQUpPUiA8IDU5IC8vIEZGTVBFRyA8IDUuMAorKwkJQVZPdXRwdXRGb3JtYXQq IGZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdChudWxscHRyLCBmaWxlbmFtZS5jX3N0cigpLCBudWxs cHRyKTsKKysjZWxzZQorKwkJY29uc3QgQVZPdXRwdXRGb3JtYXQqIGZvcm1hdCA9IGF2X2d1ZXNz X2Zvcm1hdChudWxscHRyLCBmaWxlbmFtZS5jX3N0cigpLCBudWxscHRyKTsKKysjZW5kaWYKKyAJ CWlmICghZm9ybWF0KSB7CisgCQkJc3luZmlnOjp3YXJuaW5nKCJUYXJnZXRfTGliQVZDb2RlYzog dW5hYmxlIHRvIGd1ZXNzIHRoZSBvdXRwdXQgZm9ybWF0LCBkZWZhdWx0aW5nIHRvIE1QRUciKTsK Ky0JCQlmb3JtYXQgPSBhdl9ndWVzc19mb3JtYXQoIm1wZWciLCBOVUxMLCBOVUxMKTsKKysJCQlm b3JtYXQgPSBhdl9ndWVzc19mb3JtYXQoIm1wZWciLCBudWxscHRyLCBudWxscHRyKTsKKyAJCX0K KyAJCWlmICghZm9ybWF0KSB7CisgCQkJc3luZmlnOjplcnJvcigiVGFyZ2V0X0xpYkFWQ29kZWM6 IHVuYWJsZSB0byBmaW5kICdtcGVnJyBvdXRwdXQgZm9ybWF0Iik7CitAQCAtMjU0LDYgKzI2MSw3 IEBACisgCQljb250ZXh0ID0gYXZmb3JtYXRfYWxsb2NfY29udGV4dCgpOworIAkJYXNzZXJ0KGNv bnRleHQpOworIAkJY29udGV4dC0+b2Zvcm1hdCA9IGZvcm1hdDsKKysjaWYgTElCQVZDT0RFQ19W RVJTSU9OX01BSk9SIDwgNTggLy8gRkZNUEVHIDwgNC4wCisgCQlpZiAoZmlsZW5hbWUuc2l6ZSgp ICsgMSA+IHNpemVvZihjb250ZXh0LT5maWxlbmFtZSkpIHsKKyAJCQlzeW5maWc6OmVycm9yKAor IAkJCQkiVGFyZ2V0X0xpYkFWQ29kZWM6IGZpbGVuYW1lIHRvbyBsb25nLCBtYXggbGVuZ3RoIGlz ICVkLCBmaWxlbmFtZSBpcyAnJXMnIiwKK0BAIC0yNjMsNiArMjcxLDE0IEBACisgCQkJcmV0dXJu IGZhbHNlOworIAkJfQorIAkJbWVtY3B5KGNvbnRleHQtPmZpbGVuYW1lLCBmaWxlbmFtZS5jX3N0 cigpLCBmaWxlbmFtZS5zaXplKCkgKyAxKTsKKysjZWxzZQorKwkJY29udGV4dC0+dXJsID0gYXZf c3RybmR1cChmaWxlbmFtZS5jX3N0cigpLCBmaWxlbmFtZS5zaXplKCkpOworKwkJaWYgKCFjb250 ZXh0LT51cmwpIHsKKysJCQlzeW5maWc6OmVycm9yKCJUYXJnZXRfTGliQVZDb2RlYzogY2Fubm90 IGFsbG9jYXRlIHNwYWNlIGZvciBmaWxlbmFtZSIpOworKwkJCWNsb3NlKCk7CisrCQkJcmV0dXJu IGZhbHNlOworKwkJfQorKyNlbmRpZgorIAorIAkJcGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7 CisgCQlhc3NlcnQocGFja2V0KTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3luZmlnL3RlbXBsYXRl IGIvc3JjcGtncy9zeW5maWcvdGVtcGxhdGUKaW5kZXggNWY1ZjViYjNmNGIyLi42ZTBkNzEzMTUw YWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3lu ZmlnL3RlbXBsYXRlCkBAIC02LDcgKzYsNyBAQCByZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUt Y29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS13aXRoLWJvb3N0LWxpYmRpcj0ke1hCUFNfQ1JP U1NfQkFTRX0vdXNyL2xpYiIKIGhvc3RtYWtlZGVwZW5kcz0iYm9vc3QtYnVpbGQgSW1hZ2VNYWdp Y2sgcGtnLWNvbmZpZyBpbnRsdG9vbCIKLW1ha2VkZXBlbmRzPSJFVEwgZ2V0dGV4dC1kZXZlbCBs aWJ4bWwrKy1kZXZlbCBtbHQtZGV2ZWwgbGlibWFnaWNrLWRldmVsCittYWtlZGVwZW5kcz0iRVRM IGdldHRleHQtZGV2ZWwgbGlieG1sKystZGV2ZWwgbWx0Ny1kZXZlbCBsaWJtYWdpY2stZGV2ZWwK ICBsaWJtbmctZGV2ZWwgYm9vc3QtYnVpbGQgYm9vc3QtZGV2ZWwgbGlib3BlbmV4ci1kZXZlbCBm Zm1wZWctZGV2ZWwiCiBkZXBlbmRzPSJJbWFnZU1hZ2ljayIKIHNob3J0X2Rlc2M9IkNMSSAyRCB2 ZWN0b3IgYW5kIHRpbWVsaW5lLWJhc2VkIGFuaW1hdGlvbiBzb2Z0d2FyZSIKQEAgLTIwLDcgKzIw LDcgQEAgQ1hYRkxBR1M9Ii1zdGQ9YysrMTEgLURIQVZFX0xPQ0FMRV9IPTEiCiAKIHN5bmZpZy1k ZXZlbF9wYWNrYWdlKCkgewogCWRlcGVuZHM9IiR7c291cmNlcGtnfT49JHt2ZXJzaW9ufV8ke3Jl dmlzaW9ufQotCSBsaWJvcGVuZXhyLWRldmVsIGxpYnhtbCsrLWRldmVsIG1sdC1kZXZlbCIKKwkg bGlib3BlbmV4ci1kZXZlbCBsaWJ4bWwrKy1kZXZlbCBtbHQ3LWRldmVsIgogCXNob3J0X2Rlc2Mr PSIgLSBkZXZlbG9wbWVudCBmaWxlcyIKIAlwa2dfaW5zdGFsbCgpIHsKIAkJdm1vdmUgdXNyL2Jp bi9zeW5maWctY29uZmlnCgpGcm9tIDBiODhlNGVmZDRiOTQ4OGFkNzJmMjU0MzYwNGJiNGViYTlm M2I3YjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IEZyaSwgNSBNYXkgMjAyMyAxMjo1Nzo1NyAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDg0LzExNV0gc3luZmlnc3R1ZGlvOiByZXZidW1wIGZvciBzeW5maWcgbWx0NwoKLS0tCiBz cmNwa2dzL3N5bmZpZ3N0dWRpby90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3luZmlnc3R1 ZGlvL3RlbXBsYXRlIGIvc3JjcGtncy9zeW5maWdzdHVkaW8vdGVtcGxhdGUKaW5kZXggOTEzNDkx NjllZDJiLi5hZjFjNWEyOTZlZjAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBA QAogIyBTaG91bGQgYmUga2VwdCBpbiBzeW5jIHdpdGggJ3N5bmZpZycgYW5kICdFVEwnCiBwa2du YW1lPXN5bmZpZ3N0dWRpbwogdmVyc2lvbj0xLjQuNAotcmV2aXNpb249MgorcmV2aXNpb249Mwog YnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS11cGRh dGUtbWltZWRiIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGludGx0b29sIGdldHRleHQg c3luZmlnIgoKRnJvbSA3OTJhYTI2MWE2YTUxODQ0ZjkxY2U3NjE1ZjM3NThlOGEwMmQwNzkyIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODUv MTE1XSB0Z19vd3Q6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy90Z19vd3Qv dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3RnX293dC90ZW1wbGF0ZSBiL3NyY3BrZ3MvdGdf b3d0L3RlbXBsYXRlCmluZGV4IDk3ZDE5NWRkYjM0YS4uNTUxNjE0YjI0OTU2IDEwMDY0NAotLS0g YS9zcmNwa2dzL3RnX293dC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3RnX293dC90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3RnX293dCcKIHBrZ25hbWU9dGdf b3d0CiB2ZXJzaW9uPTAuMC4wLjIwMjMwMTA3Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBfY29t bWl0PTUwOTg3MzBiOWViNjE3M2YwYjUyMDY4ZmUyNTU1YjdjMTAxNTEyM2EKIF9saWJ5dXZfY29t bWl0PTAwOTUwODQwZDFjOWJjYmIzZWI2ZWJjNWFhYzU3OTNlNzExNjZjOGIKIF9hYnNlaWxfY29t bWl0PThjMGI5NGU3OTNhNjY0OTVlMGIxZjM0YTVlYjI2YmQ3ZGM2NzJkYjAKCkZyb20gYmM2ZWE1 ZTIyYmEyMDQ1MDc4ZjQ1YzFkMDc1ZjdlNjM3ODdmM2U3NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg2LzExNV0gdGltZzogcmV2YnVtcCBm b3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3RpbWcvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3RpbWcvdGVtcGxhdGUgYi9zcmNwa2dzL3RpbWcvdGVtcGxhdGUKaW5kZXggMmEyYWI3NjNk MmZkLi44ZmI0MzI3NTM1ZWYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3RpbWcvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICd0aW1nJwogcGtnbmFtZT10aW1nCiB2ZXJzaW9uPTEuNC41Ci1yZXZpc2lvbj0xCityZXZp c2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9PUEVOU0xJ REVfU1VQUE9SVD1vZmYgLVduby1kZXYiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgZ2l0 IgoKRnJvbSA3MTg4ZWUxZGMyMjU5OWI5ZTZhZWM3NTczMTRjMDA0Mzk0YjZkMzQ0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODcvMTE1XSB0 dmhlYWRlbmQ6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy90dmhlYWRl bmQvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUgYi9z cmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZQppbmRleCBlNmIxNmQ3Y2NmM2IuLjQ2YjUyYjZmYjdm OSAxMDA2NDQKLS0tIGEvc3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90 dmhlYWRlbmQvdGVtcGxhdGUKQEAgLTEsMTQgKzEsMTQgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J3R2aGVhZGVuZCcKIHBrZ25hbWU9dHZoZWFkZW5kCiB2ZXJzaW9uPTQuMi44Ci1yZXZpc2lvbj02 CityZXZpc2lvbj03CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0i LS1lbmFibGUtZHZic2NhbiAtLWRpc2FibGUtZmZtcGVnX3N0YXRpYwogLS1kaXNhYmxlLWhkaG9t ZXJ1bl9zdGF0aWMgLS1kaXNhYmxlLWJpbnRyYXlfY2FjaGUgLS1kaXNhYmxlLWxpYngyNjRfc3Rh dGljCiAtLWRpc2FibGUtbGlieDI2NV9zdGF0aWMgLS1kaXNhYmxlLWxpYnZweF9zdGF0aWMgLS1k aXNhYmxlLWxpYnRoZW9yYV9zdGF0aWMKIC0tZGlzYWJsZS1saWJ2b3JiaXNfc3RhdGljIC0tZGlz YWJsZS1saWJmZGthYWNfc3RhdGljIgogaG9zdG1ha2VkZXBlbmRzPSJnZXR0ZXh0IHBrZy1jb25m aWcgcHl0aG9uIGdpdCB3aGljaCIKLW1ha2VkZXBlbmRzPSJhdmFoaS1saWJzLWRldmVsIG9wZW5z c2wtZGV2ZWwgemxpYi1kZXZlbCBsaWJjdXJsLWRldmVsIGZmbXBlZy1kZXZlbCIKK21ha2VkZXBl bmRzPSJhdmFoaS1saWJzLWRldmVsIG9wZW5zc2wtZGV2ZWwgemxpYi1kZXZlbCBsaWJjdXJsLWRl dmVsIGZmbXBlZzQtZGV2ZWwiCiBzaG9ydF9kZXNjPSJUViBzdHJlYW1pbmcgc2VydmVyIgogbWFp bnRhaW5lcj0ibGVtbWkgPGxlbW1pQG5lcmQybmVyZC5vcmc+IgogbGljZW5zZT0iR1BMLTMuMC1v bmx5IgoKRnJvbSBjN2I1MGZmZTNmYjEyOGU3NjNiMGFmZmI0MDEzOTE0OWE3NWJmYzUxIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODgvMTE1 XSB1bnBhcGVyOiB1cGRhdGUgdG8gNy4wLjAuCgotLS0KIHNyY3BrZ3MvdW5wYXBlci90ZW1wbGF0 ZSB8IDE2ICsrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyks IDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy91bnBhcGVyL3RlbXBsYXRlIGIv c3JjcGtncy91bnBhcGVyL3RlbXBsYXRlCmluZGV4IDM4ZWQ0N2E1ODQwMS4uMWZmOTEwZTcyMmFm IDEwMDY0NAotLS0gYS9zcmNwa2dzL3VucGFwZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy91bnBh cGVyL3RlbXBsYXRlCkBAIC0xLDEzICsxLDEzIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd1bnBh cGVyJwogcGtnbmFtZT11bnBhcGVyCi12ZXJzaW9uPTYuMQotcmV2aXNpb249MwotYnVpbGRfc3R5 bGU9Z251LWNvbmZpZ3VyZQordmVyc2lvbj03LjAuMAorcmV2aXNpb249MQorYnVpbGRfc3R5bGU9 bWVzb24KK2hvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBtZXNvbiBsaWJ4c2x0IgorbWFrZWRl cGVuZHM9ImZmbXBlZy1kZXZlbCBweXRob24zLVNwaGlueCIKK3Nob3J0X2Rlc2M9IlBvc3QtcHJv Y2Vzc2luZyB0b29sIGZvciBzY2FubmVkIHNoZWV0cyBvZiBwYXBlciIKIG1haW50YWluZXI9Ik9y cGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCi1ob3N0bWFrZWRlcGVuZHM9InBrZy1jb25m aWcgbGlieHNsdCIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwiCi1saWNlbnNlPSJHUEwtMiIK K2xpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93d3cuZmxhbWVl eWVzLmV1L3Byb2plY3RzL3VucGFwZXIiCi1zaG9ydF9kZXNjPSJBIHBvc3QtcHJvY2Vzc2luZyB0 b29sIGZvciBzY2FubmVkIHNoZWV0cyBvZiBwYXBlciIKIGRpc3RmaWxlcz0iaHR0cHM6Ly93d3cu ZmxhbWVleWVzLmV1L2ZpbGVzLyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1 bT0yMzdjODRmNWRhNTQ0YjNmNzcwOTgyN2Y5ZjEyYzM3YzM0NmNkZjAyOWIxMTI4ZmI0NjMzZjli YWZhNWNiOTMwCitjaGVja3N1bT0yNTc1ZmJiZjI2YzIyNzE5ZDFjYjg4MmI1OTYwMmM5OTAwYzdm NzQ3MTE4YWMxMzA4ODNmNjM0MTliZTQ2YTgwCgpGcm9tIGQ5OWM4NWRhNjkwMGUxYzg3NGRkYzZl YTYwMjEyODY5YTcxZjBjNjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAK U3ViamVjdDogW1BBVENIIDA4OS8xMTVdIHZiYS1tOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3MvdmJhLW0vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3ZiYS1tL3RlbXBs YXRlIGIvc3JjcGtncy92YmEtbS90ZW1wbGF0ZQppbmRleCBiYTE1M2UwYjU4Y2EuLmFhNjA5MzY0 NWU5NyAxMDA2NDQKLS0tIGEvc3JjcGtncy92YmEtbS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3Zi YS1tL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogcGtnbmFtZT12YmEtbQogcmV2ZXJ0cz0xMjky XzIKIHZlcnNpb249Mi4xLjUKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNt YWtlCiBjb25maWd1cmVfYXJncz0iLURFTkFCTEVfR1RLPVRSVUUgLURFTkFCTEVfRkZNUEVHPVRS VUUgLURFTkFCTEVfTElOSz1UUlVFIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIgogaG9zdG1h a2VkZXBlbmRzPSJnZXR0ZXh0IHBrZy1jb25maWcgdW56aXAgemlwIHlhc20gd3hXaWRnZXRzLWd0 azMtZGV2ZWwiCgpGcm9tIGZkN2MyNWIzMDVhNjM1OThiNGZmZTEyMTA4NTQ5OTlkN2UzMTUyNGYg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5 MC8xMTVdIHZpY2U6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy92aWNl L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmljZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mv dmljZS90ZW1wbGF0ZQppbmRleCAwOTI0NzY3Y2ZjZmIuLjU5ODFlNDUxNDlkMCAxMDA2NDQKLS0t IGEvc3JjcGtncy92aWNlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdmljZS90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3ZpY2UnCiBwa2duYW1lPXZpY2UKIHZl cnNpb249My41Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtY29uZmln dXJlCiBjb25maWd1cmVfYXJncz0iCiAJJCh2b3B0X2VuYWJsZSBzZGwyIHNkbHVpMikKQEAgLTI4 LDcgKzI4LDcgQEAgbWFrZWRlcGVuZHM9IgogCSQodm9wdF9pZiBndGszIGd0ayszLWRldmVsKQog CSQodm9wdF9pZiBndGszIHB1bHNlYXVkaW8tZGV2ZWwpCiAJJCh2b3B0X2lmIGd0azMgcGFuZ28t ZGV2ZWwpCi0JJCh2b3B0X2lmIGZmbXBlZyBmZm1wZWctZGV2ZWwpIgorCSQodm9wdF9pZiBmZm1w ZWcgZmZtcGVnNC1kZXZlbCkiCiBzaG9ydF9kZXNjPSJFbXVsYXRvciBmb3IgQzY0LCBDMTI4LCBD Qk0tSUksIFBFVCwgVklDMjAsIFBsdXM0IGFuZCBDMTYiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8 b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKCkZyb20g MzkzY2U3NjEzYzU0NzcxMTJhY2NkM2E2NjAzZWRhM2Q2MDVmMDhlNSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDkxLzExNV0gd2F5cGlwZTog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3dheXBpcGUvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL3dheXBpcGUvdGVtcGxhdGUgYi9zcmNwa2dzL3dheXBpcGUvdGVtcGxh dGUKaW5kZXggNWM0MTYxOTAwMDYwLi4xYTQ2ZmUyN2Y3ZDggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv d2F5cGlwZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3dheXBpcGUvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd3YXlwaXBlJwogcGtnbmFtZT13YXlwaXBlCiB2 ZXJzaW9uPTAuOC40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgog IyBsdG8gaXMgb2ZmIGJlY2F1c2UgaXQgY2F1c2VzIGxpbmtpbmcgZXJyb3JzIGluIGFybXY2bCBh bmQgYXJtdjdsIChkdWUgdG8gTkVPTikKIGNvbmZpZ3VyZV9hcmdzPSItRHdlcnJvcj1mYWxzZSAt RHdpdGhfZG1hYnVmPWVuYWJsZWQgLUR3aXRoX2x6ND1lbmFibGVkCgpGcm9tIDc1NmU0N2M4OGZl OGZmZTZiMDlhYTc2MmJlY2ZmYmE1ZmQzNzcwNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5Mi8xMTVdIHdmLXJlY29yZGVyOiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvd2YtcmVjb3JkZXIvdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBsYXRlIGIvc3JjcGtncy93Zi1yZWNvcmRlci90 ZW1wbGF0ZQppbmRleCBlMjc4ZWIwMDE2MDAuLjVkMDE0YTVmMjhhZiAxMDA2NDQKLS0tIGEvc3Jj cGtncy93Zi1yZWNvcmRlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnd2YtcmVjb3JkZXInCiBw a2duYW1lPXdmLXJlY29yZGVyCiB2ZXJzaW9uPTAuMy4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHNjZG9jIHdh eWxhbmQtZGV2ZWwiCiBtYWtlZGVwZW5kcz0id2F5bGFuZC1wcm90b2NvbHMgd2F5bGFuZC1kZXZl bCBmZm1wZWctZGV2ZWwgeDI2NC1kZXZlbAoKRnJvbSBkMmY4ZTk0MDM5ZDFjM2U3NjhlNWIyZTc5 M2ZiZDdiZTRhMGVkNzBiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwOTMvMTE1XSB4cHJhOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0K IHNyY3BrZ3MveHByYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MveHByYS90ZW1wbGF0ZSBi L3NyY3BrZ3MveHByYS90ZW1wbGF0ZQppbmRleCBlZThjZTRlYzc4YTkuLmMwMjQ4MmFkNGIzOSAx MDA2NDQKLS0tIGEvc3JjcGtncy94cHJhL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MveHByYS90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3hwcmEnCiBwa2duYW1l PXhwcmEKIHZlcnNpb249NC40LjUKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PXB5dGhvbjMtbW9kdWxlCiBtYWtlX2J1aWxkX2FyZ3M9Ii0td2l0aG91dC1jdWRhX2tlcm5lbHMg LS13aXRob3V0LWN1ZGFfcmVidWlsZCIKIG1ha2VfaW5zdGFsbF9hcmdzPSIkKHZvcHRfd2l0aCBk b2NzKSAke21ha2VfYnVpbGRfYXJnc30iCgpGcm9tIGEyNTYwYTVjMTg5YWEyMTM2M2YwMWM4ZmE0 MzBlNzFmY2M3M2ZiMjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMzEgTWFyIDIwMjMgMDk6MDc6NDAgLTA0MDAKU3Vi amVjdDogW1BBVENIIDA5NC8xMTVdIG52LWNvZGVjLWhlYWRlcnM6IHVwZGF0ZSB0byAxMi4wLjE2 LjAKCi0tLQogc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZp bGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbnYtY29kZWMtaGVhZGVycy90ZW1wbGF0ZSBiL3NyY3BrZ3MvbnYtY29kZWMtaGVh ZGVycy90ZW1wbGF0ZQppbmRleCAzZDQyMmE2MWU0ODkuLjI1MWUwNTdmODI2ZiAxMDA2NDQKLS0t IGEvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbnYtY29k ZWMtaGVhZGVycy90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J252LWNvZGVjLWhlYWRlcnMnCiBwa2duYW1lPW52LWNvZGVjLWhlYWRlcnMKLXZlcnNpb249MTEu MS41LjEKK3ZlcnNpb249MTIuMC4xNi4wCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1nbnUtbWFr ZWZpbGUKIHNob3J0X2Rlc2M9IkZGbXBlZyB2ZXJzaW9uIG9mIGhlYWRlcnMgcmVxdWlyZWQgdG8g aW50ZXJmYWNlIHdpdGggTnZpZGlhcyBjb2RlYyBBUElzIgpAQCAtOCw3ICs4LDcgQEAgbWFpbnRh aW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9Ik1JVCIKIGhv bWVwYWdlPSJodHRwOi8vZ2l0LnZpZGVvbGFuLm9yZy8/cD1mZm1wZWcvbnYtY29kZWMtaGVhZGVy cy5naXQiCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9GRm1wZWcvbnYtY29kZWMtaGVh ZGVycy9hcmNoaXZlL24ke3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPWQwOTVmYmQ1NmFhOTM3 NzI0NzFhMzIzYmUwZWJlNjU1MDRhMGY0M2YwNmM3NmEzMGI2ZDI1ZGE3N2IwNmFlOWMKK2NoZWNr c3VtPTJhMTUzM2I2NWY1NWY5ZGE1Mjk1NmZhZjA2MjdlZDNiNzQ4NjhhYzBjN2YyNjk5OTBlZGQy MTM2OTExM2I0OGYKIAogcG9zdF9pbnN0YWxsKCkgewogCXNlZCAtbiAnNCwyNXAnIGluY2x1ZGUv ZmZudmNvZGVjL252RW5jb2RlQVBJLmggPiBMSUNFTlNFCgpGcm9tIGNjNTMwNmQzZmU4YjdhMmI5 ZWVlZjVmZjZjODU4MWRkZmE3YzU2YjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMzEgTWFyIDIwMjMgMDk6MDg6NDAg LTA0MDAKU3ViamVjdDogW1BBVENIIDA5NS8xMTVdIG9wZW5pbWFnZWRlbm9pc2U6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9vcGVuaW1hZ2VkZW5vaXNlL3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9vcGVuaW1hZ2VkZW5vaXNlL3RlbXBsYXRlIGIvc3JjcGtncy9vcGVu aW1hZ2VkZW5vaXNlL3RlbXBsYXRlCmluZGV4IGRiNWNjZGIwNTVjYy4uY2I5MDA0NWFmYjYzIDEw MDY0NAotLS0gYS9zcmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9vcGVuaW1hZ2VkZW5vaXNlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnb3BlbmltYWdlZGVub2lzZScKIHBrZ25hbWU9b3BlbmltYWdlZGVub2lzZQogdmVy c2lvbj0xLjQuMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYXJjaHM9Ing4Nl82NCoiCiBidWls ZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJpc3BjIHB5dGhvbjMiCgpGcm9tIDIxMTg1 NjE4MGRlMDZlYzdmN2FlMmIxZTkzYmIxY2UxMjhmNDliOTQgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMyBBcHIgMjAy MyAyMzozMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk2LzExNV0gc2hvdGN1dDogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUgfCAxNiArKysr KysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2hvdGN1dC90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc2hv dGN1dC90ZW1wbGF0ZQppbmRleCA5OWViZjJlOGE1YWYuLmM0MTZjOTA2ZmY3MyAxMDA2NDQKLS0t IGEvc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2hvdGN1dC90ZW1wbGF0 ZQpAQCAtMSwyMCArMSwyMCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc2hvdGN1dCcKIHBrZ25h bWU9c2hvdGN1dAotdmVyc2lvbj0yMi4xMi4yMQotcmV2aXNpb249MQordmVyc2lvbj0yMy4wNS4x NAorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFNIT1RD VVRfVkVSU0lPTj0ke3ZlcnNpb259IgotaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS10 b29scy1kZXZlbCIKLW1ha2VkZXBlbmRzPSJtbHQ3LWRldmVsIHF0NS1kZWNsYXJhdGl2ZS1kZXZl bCBxdDUtbXVsdGltZWRpYS1kZXZlbAotIHF0NS1xdWlja2NvbnRyb2xzMi1kZXZlbCBxdDUtd2Vi c29ja2V0cy1kZXZlbCBxdDUtcGx1Z2luLW15c3FsIHF0NS1wbHVnaW4tb2RiYwotIHF0NS1wbHVn aW4tcGdzcWwgcXQ1LXBsdWdpbi1zcWxpdGUgcXQ1LXBsdWdpbi10ZHMiCi1kZXBlbmRzPSJmZm1w ZWcgZnJlaTByLXBsdWdpbnMgcXQ1LWdyYXBoaWNhbGVmZmVjdHMgcXQ1LXF1aWNrY29udHJvbHMi Citob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ2LXRvb2xzLWRldmVsIgorbWFrZWRlcGVu ZHM9Im1sdDctZGV2ZWwgcXQ2LWRlY2xhcmF0aXZlLWRldmVsIHF0Ni1tdWx0aW1lZGlhLWRldmVs CisgcXQ2LXdlYnNvY2tldHMtZGV2ZWwgcXQ2LXBsdWdpbi1teXNxbCBxdDYtcGx1Z2luLW9kYmMK KyBxdDYtcGx1Z2luLXBnc3FsIHF0Ni1wbHVnaW4tc3FsaXRlIgorZGVwZW5kcz0iZmZtcGVnIGZy ZWkwci1wbHVnaW5zIHF0Ni1kZWNsYXJhdGl2ZSIKIHNob3J0X2Rlc2M9IkZyZWUsIG9wZW4gc291 cmNlLCBjcm9zcy1wbGF0Zm9ybSB2aWRlbyBlZGl0b3IiCiBtYWludGFpbmVyPSJKb2huIDxtZUBq b2hubnluYXRvci5kZXY+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJo dHRwczovL3d3dy5zaG90Y3V0Lm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9naXRodWIuY29tL21s dGZyYW1ld29yay9zaG90Y3V0L3JlbGVhc2VzIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5j b20vbWx0ZnJhbWV3b3JrL3Nob3RjdXQvYXJjaGl2ZS92JHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVj a3N1bT0xYjlhNGY4N2IxNmE5NzUxZjljYjQxNTg4ZjIyYWY0YzAwZjA4NTEwNWQ4MmNmMjFkMDk1 ZDlmM2MyODBiYzg2CitjaGVja3N1bT05NDYzMmJkNjljYzhmM2IyY2JhMDY2OGI5ZThkMDUxNDkz ZWZhNWE5Yzk1NTRjMDI4MjJjMzQ2ZmU2NGMxY2UwCiAKIENYWEZMQUdTPSItREhBVkVfTE9DQUxF X0g9MSAtRFNIT1RDVVRfTk9VUEdSQURFIgoKRnJvbSBiMDY3M2RhYzZjM2FiMDlhYWY2YjhkM2Ix ZDY1MjIzYTMzNTM5OTNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBNb24sIDMgQXByIDIwMjMgMjM6MzM6MzAgLTA0MDAKU3Vi amVjdDogW1BBVENIIDA5Ny8xMTVdIHNoaWJva2VuMjogcmV2YnVtcCBmb3IgcXQ1LTUuMTUuOAoK LS0tCiBzcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNz LnBhdGNoIHwgMSArCiBzcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyks IDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL3NoaWJva2VuMi9wYXRj aGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaCBiL3Ny Y3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi5lZmNmMzI0OWJkODgKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNo aW5lcnktYnlwYXNzLnBhdGNoCkBAIC0wLDAgKzEgQEAKKy4uLy4uL3B5dGhvbjMtcHlzaWRlMi9w YXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUgYi9zcmNw a2dzL3NoaWJva2VuMi90ZW1wbGF0ZQppbmRleCAwODRlY2MzYmExZTEuLjJhMjE5OTg5OTdlYiAx MDA2NDQKLS0tIGEvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zaGli b2tlbjIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzaGli b2tlbjInCiBwa2duYW1lPXNoaWJva2VuMgogdmVyc2lvbj01LjE1LjcKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIF9wa2duYW1lPSJweXNpZGUtc2V0dXAtb3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9u fSIKIGJ1aWxkX3dya3NyYz0ic291cmNlcy9zaGlib2tlbjIiCiBidWlsZF9zdHlsZT1jbWFrZQoK RnJvbSBjYjhiMmVjNjY1MWEzNTVkYjc3MzUyMjJjNTIxYTlhYWU1NDk5YWI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBNb24s IDMgQXByIDIwMjMgMjM6MzM6NTMgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5OC8xMTVdIHB5dGhv bjMtcHlzaWRlMjogdXBkYXRlIHRvIDUuMTUuOAoKLS0tCiAuLi4vcGF0Y2hlcy9pbXBvcnRsaWIt bWFjaGluZXJ5LWJ5cGFzcy5wYXRjaCAgICAgIHwgMTUgKysrKysrKysrKysrKysrCiBzcmNwa2dz L3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgIHwgIDkgKysrKystLS0t CiAyIGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWIt bWFjaGluZXJ5LWJ5cGFzcy5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHl0aG9uMy1weXNp ZGUyL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggYi9zcmNwa2dzL3B5 dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjRjNDI5NTg0Nzc2Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWIt bWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApAQCAtMCwwICsxLDE1IEBACitVc2luZyB0aGlzIHByZXZl bnRzIGFuIGVycm9yIGFyb3VuZCBsaW5lIDIyMCBiZWxvdyBpdC4KKyJBdHRyaWJ1dGVFcnJvcjog bW9kdWxlICdpbXBvcnRsaWInIGhhcyBubyBhdHRyaWJ1dGUgJ21hY2hpbmVyeSciCitUaGUgb2xk IGJhY2t1cCBsb2dpYyBpcyBpbiBwbGFjZSBhbmQgY29tcGlsZXMgd2l0aG91dCBpc3N1ZXMuCist LS0gYS9zb3VyY2VzL3NoaWJva2VuMi9saWJzaGlib2tlbi9lbWJlZC9zaWduYXR1cmVfYm9vdHN0 cmFwLnB5CTIwMjMtMDQtMDIgMjM6MDk6MzQuNjg4OTEyNDAyIC0wNDAwCisrKysgYi9zb3VyY2Vz L3NoaWJva2VuMi9saWJzaGlib2tlbi9lbWJlZC9zaWduYXR1cmVfYm9vdHN0cmFwLnB5CTIwMjMt MDQtMDIgMjM6MTA6MDMuMzk1NTI5NTgyIC0wNDAwCitAQCAtMTcwLDkgKzE3MCw2IEBACisKKyAg ICAgIyAnemlwc3RyaW5nX3NlcXVlbmNlJyBjb21lcyBmcm9tIHNpZ25hdHVyZS5jcHAKKyAgICAg emlwYnl0ZXMgPSBiYXNlNjQuYjY0ZGVjb2RlKCcnLmpvaW4oemlwc3RyaW5nX3NlcXVlbmNlKSkK Ky0gICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA+PSAzOgorLSAgICAgICAgdnppcCA9IHppcGZp bGUuWmlwRmlsZShpby5CeXRlc0lPKHppcGJ5dGVzKSkKKy0gICAgICAgIHJldHVybiBzeXMubWV0 YV9wYXRoLCBFbWJlZGRhYmxlWmlwSW1wb3J0ZXIodnppcCkKKworICAgICAjIE9sZCB2ZXJzaW9u IGZvciBQeXRob24gMi43LCBvbmx5LgorICAgICBpbXBvcnQgb3MKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcHl0aG9uMy1weXNpZGUyL3RlbXBsYXRlIGIvc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVt cGxhdGUKaW5kZXggNTBlNmZmMjYwZDNiLi5iNTBlNjJiZDIxNWQgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvcHl0aG9uMy1weXNpZGUyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUy L3RlbXBsYXRlCkBAIC0xLDExICsxLDEyIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdweXRob24z LXB5c2lkZTInCiBwa2duYW1lPXB5dGhvbjMtcHlzaWRlMgotdmVyc2lvbj01LjE1LjUKLXJldmlz aW9uPTIKK3ZlcnNpb249NS4xNS44CityZXZpc2lvbj0xCiBfcGtnbmFtZT0icHlzaWRlLXNldHVw LW9wZW5zb3VyY2Utc3JjLSR7dmVyc2lvbn0iCiBidWlsZF93cmtzcmM9InNvdXJjZXMvcHlzaWRl MiIKIGJ1aWxkX3N0eWxlPWNtYWtlCi1jb25maWd1cmVfYXJncz0iLURQWVRIT05fRVhFQ1VUQUJM RT0vdXNyL2Jpbi9weXRob24iCitjb25maWd1cmVfYXJncz0iLURQWVRIT05fRVhFQ1VUQUJMRT0v dXNyL2Jpbi9weXRob24gLURDTUFLRV9CVUlMRF9UWVBFPU5vbmUKKyAtREJVSUxEX1RFU1RTPU9G RiIKIGhvc3RtYWtlZGVwZW5kcz0iY21ha2UgcHl0aG9uMyBzaGlib2tlbjIiCiBtYWtlZGVwZW5k cz0icHl0aG9uMy1kZXZlbCBsaWJzaGlib2tlbjItZGV2ZWwgcXQ1LWRldmVsCiAgcXQ1LW11bHRp bWVkaWEtZGV2ZWwgcXQ1LXRvb2xzLWRldmVsIHF0NS1wbHVnaW4tbXlzcWwgcXQ1LXBsdWdpbi1v ZGJjCkBAIC0yMyw3ICsyNCw3IEBAIG1haW50YWluZXI9InlvcGl0byA8cGllcnJlLmJvdXJnaW5A ZnJlZS5mcj4iCiBsaWNlbnNlPSJMR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczov L3dpa2kucXQuaW8vUXRfZm9yX1B5dGhvbiIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9kb3dubG9hZC5x dC5pby9vZmZpY2lhbF9yZWxlYXNlcy9RdEZvclB5dGhvbi9weXNpZGUyL1B5U2lkZTItJHt2ZXJz aW9ufS1zcmMvJHtfcGtnbmFtZX0udGFyLnh6IgotY2hlY2tzdW09MzkyMGE0ZmIzNTMzMDAyNjBj OWJjNDZmZjcwZjFmYjk3NWM1ZTdlZmEyMmU5ZDUxMjIyNTg4OTI4Y2UxOWIzMworY2hlY2tzdW09 MjM0MzYzMDJjOGRlYjViNGNiYzc2OWIyMDVkMDk2MDRlMzhiYTgzYjQwNzA4ZWZjY2I3YmQ4Yzlh ZjZmNmI1ZAogCiBidWlsZF9vcHRpb25zPSJ3ZWJlbmdpbmUiCiBkZXNjX29wdGlvbl93ZWJlbmdp bmU9IkJ1aWxkIFF0NSBXZWJFbmdpbmUgYmluZGluZ3MiCgpGcm9tIGY4NTcxMmYzMzdkMWYyNjI1 YmJlMWZjMDM5MDAyNTE1NjUwNDI0MmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBBcHIgMjAyMyAxMToxNDozNSAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk5LzExNV0ga29ucXVlcm9yOiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUg Y2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlIGIvc3JjcGtncy9rb25xdWVyb3IvdGVtcGxhdGUKaW5k ZXggZDhkMGU3M2E3OGFiLi5jNWJkYmE2MDFkM2MgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva29ucXVl cm9yL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlCkBAIC0xLDExICsx LDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdrb25xdWVyb3InCiBwa2duYW1lPWtvbnF1ZXJv cgogdmVyc2lvbj0yMy4wNC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1j bWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EREVTS1RPUFRPSlNPTl9FWEVDVVRBQkxFPS91c3IvYmlu L2Rlc2t0b3B0b2pzb24iCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMgcHl0 aG9uMyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2Uga2RvY3Rvb2xzCi1rY29yZWFkZG9ucyBrY29u ZmlnIGdldHRleHQiCisga2NvcmVhZGRvbnMga2NvbmZpZyBnZXR0ZXh0IgogbWFrZWRlcGVuZHM9 InF0NS1kZXZlbCBxdDUtd2ViZW5naW5lLWRldmVsIHF0NS1kZWNsYXJhdGl2ZS1kZXZlbAogIHF0 NS13ZWJjaGFubmVsLWRldmVsIHF0NS1sb2NhdGlvbi1kZXZlbCBrY211dGlscy1kZXZlbCBrZGVs aWJzNHN1cHBvcnQtZGV2ZWwKICBrYXJjaGl2ZS1kZXZlbCBraHRtbC1kZXZlbCBrZGVzdS1kZXZl bCBrYWN0aXZpdGllczUtZGV2ZWwiCgpGcm9tIDA1NDkzY2YxNDMzODQ1ZGE4NDc1MTZkZGE4Y2U1 YjljYzE3Mzc4YTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBBcHIgMjAyMyAxMToxNDo1OCAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMTAwLzExNV0gcXQ1LXNwZWVjaDogcmV2YnVtcCBmb3IgcXQ1LTUuMTUuOAoKLS0t CiBzcmNwa2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1zcGVl Y2gvdGVtcGxhdGUgYi9zcmNwa2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUKaW5kZXggM2VjZDEwZDUw NjUwLi4yZDdkNGQ0ZDI0NTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXNwZWVjaC90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdxdDUtc3BlZWNoJwogcGtnbmFtZT1xdDUtc3BlZWNoCiB2ZXJzaW9u PTUuMTUuNwotcmV2aXNpb249MgorcmV2aXNpb249MwogX2NvbW1pdD1kMzJmNGE0NzlkMzhhMTFm NTQ3NTk4MDA0Yjk3NWY0MzU2NDI0YTE2CiBidWlsZF9zdHlsZT1xbWFrZQogY29uZmlndXJlX2Fy Z3M9Ii0tIC1mbGl0ZSAtZmxpdGUtYWxzYSAtc3BlZWNoZCIKCkZyb20gNTM5MjY0YWYwMzhhNGVk YzZmNDU3NzRmNzFiYWFhMmU1ZjQ2ZGEzZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCA0IEFwciAyMDIzIDE4OjM4OjUw IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDEvMTE1XSBxdDUtc3R5bGVwbHVnaW5zOiByZXZidW1w IGZvciBxdDUtNS4xNS44CgotLS0KIHNyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZSB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1 LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZQppbmRleCA5NmVkOTdkMTJjZDIuLjMwZDkzNjYwYTJhNCAx MDA2NDQKLS0tIGEvc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ3F0NS1zdHlsZXBsdWdpbnMnCiBwa2duYW1lPXF0NS1zdHlsZXBsdWdpbnMKIHZl cnNpb249NS4wLjAKLXJldmlzaW9uPTIwCityZXZpc2lvbj0yMQogX2dpdHJldj0zMzVkYmVjZTEw M2UyY2JmNmM3Y2Y4MTlhYjY2NzJjMjk1NmIxN2IzCiBidWlsZF9zdHlsZT1xbWFrZQogaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZSIKCkZyb20gZjQz NThjMGQ3MzY5MGE2OGQzNmE5NjNmMjg1ZDc2MDRlYzJjNWU4ZSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAzMCBBcHIg MjAyMyAyMDoyMjoyNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTAyLzExNV0gZ3N0LXBsdWdpbnMt dWdseTE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nc3QtcGx1Z2lucy11 Z2x5MS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1wbHVnaW5zLXVnbHkxL3Rl bXBsYXRlIGIvc3JjcGtncy9nc3QtcGx1Z2lucy11Z2x5MS90ZW1wbGF0ZQppbmRleCBlMjU0ZmQ0 MGY4NjkuLjg1YWU2NGJjN2EwYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcGx1Z2lucy11Z2x5 MS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1wbHVnaW5zLXVnbHkxL3RlbXBsYXRlCkBAIC0x LDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LXBsdWdpbnMtdWdseTEnCiBwa2du YW1lPWdzdC1wbHVnaW5zLXVnbHkxCi12ZXJzaW9uPTEuMjAuMwordmVyc2lvbj0xLjIyLjIKIHJl dmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iLURhbXJuYj1kaXNh YmxlZCAtRGFtcndiZGVjPWRpc2FibGVkIC1Ec2lkcGxheT1kaXNhYmxlZCIKQEAgLTE1LDQgKzE1 LDQgQEAgbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vu c2U9IkxHUEwtMi4xLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVk ZXNrdG9wLm9yZyIKIGRpc3RmaWxlcz0iJHtob21lcGFnZX0vc3JjLyR7cGtnbmFtZS8xL30vJHtw a2duYW1lLzEvfS0ke3ZlcnNpb259LnRhci54eiIKLWNoZWNrc3VtPThjYWEyMDc4OWEwOWMzMDRi NDljZjU2M2QzM2NjYTk0MjFiMTg3NWI4NGZjYzE4N2U0YTM4NWZhMDFkNmFlZmQKK2NoZWNrc3Vt PThmMzBmNDRkYjBiZDA2MzcwOWJmNmZiZTU1MTM4ZTNhOThhZjBhYmNiNjFjMzYwZjM1NTgyYmJl MTBlODA2OTEKCkZyb20gNGQxYjBjNDU1YTVmNTI5YjNkZWU3YjU3MDRhNzc3MmUyYTAxZWNkMyBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogU3VuLCAzMCBBcHIgMjAyMyAyMDoyMjoyNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTAz LzExNV0gZ3N0LXJ0c3Atc2VydmVyOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlIHwgOCArKysrLS0tLQogMSBmaWxlIGNoYW5nZWQs IDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dz dC1ydHNwLXNlcnZlci90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRl CmluZGV4IDhjZWVhOGQzNGI0Yi4uOTgwZmQ3MmNkZDRjIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dz dC1ydHNwLXNlcnZlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1ydHNwLXNlcnZl cicKIHBrZ25hbWU9Z3N0LXJ0c3Atc2VydmVyCi12ZXJzaW9uPTEuMjAuMwotcmV2aXNpb249Mwor dmVyc2lvbj0xLjIyLjIKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRl cGVuZHM9InBrZy1jb25maWcgcHl0aG9uMyIKIG1ha2VkZXBlbmRzPSJnbGliLWRldmVsIGdzdC1w bHVnaW5zLWJhZDEtZGV2ZWwgZ29iamVjdC1pbnRyb3NwZWN0aW9uCkBAIC0xMCw1ICsxMCw1IEBA IHNob3J0X2Rlc2M9IkdTdHJlYW1lciBtdWx0aW1lZGlhIGdyYXBoIGZyYW1ld29yayAtIHJ0c3Ag c2VydmVyIgogbWFpbnRhaW5lcj0iMWlzN2FjMyA8aXNhYWMucWExM0BnbWFpbC5jb20+IgogbGlj ZW5zZT0iTEdQTC0yLjEtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9nc3RyZWFtZXIuZnJl ZWRlc2t0b3Aub3JnIgotZGlzdGZpbGVzPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5v cmcvc3JjL2dzdC1ydHNwLXNlcnZlci9nc3QtcnRzcC1zZXJ2ZXItJHt2ZXJzaW9ufS50YXIueHoi Ci1jaGVja3N1bT1lZTQwMjcxOGJlOWIxMjdmMGU1ZTY2Y2E0YzFiNGY0MmU0OTI2ZWM5M2JhMzA3 YjdjY2NhNWRjNmNjOTc5NGNhCitkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy8ke3BrZ25hbWV9 LyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIueHoiCitjaGVja3N1bT0yYmU0YWVjZmI4ODcxMDEw MGVhNzExNWVkMDIxNjQwM2U4MDk0MzQ0ZWJmMTQ2MDk0MjcxYjhkNGQ3MzgyOGJmCgpGcm9tIDk5 OTMxNDkwNTIxMzUwMzMyOThkZTUwYTM1OWQ5OTQ4M2VjZTI2NzIgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMzAgQXBy IDIwMjMgMjA6MjI6MjYgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwNC8xMTVdIGdzdC1saWJhdjog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZSB8 IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LWxp YmF2L3RlbXBsYXRlCmluZGV4IGYwODJiZDIxMWM2NS4uMDRjMzliZmYxNDg5IDEwMDY0NAotLS0g YS9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1saWJhdi90ZW1w bGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1saWJhdicKIHBr Z25hbWU9Z3N0LWxpYmF2Ci12ZXJzaW9uPTEuMjAuMwordmVyc2lvbj0xLjIyLjIKIHJldmlzaW9u PTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgeWFzbSIK QEAgLTExLDcgKzExLDcgQEAgbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgu b3JnPiIKIGxpY2Vuc2U9IkxHUEwtMi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ3N0 cmVhbWVyLmZyZWVkZXNrdG9wLm9yZyIKIGRpc3RmaWxlcz0iJHtob21lcGFnZX0vc3JjLyR7cGtn bmFtZX0vJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci54eiIKLWNoZWNrc3VtPTNmZWRkMTA1NjBm Y2RmYWExYjY0NjJjYmY3OWEzOGM0ZTdiNTdkN2YzOTAzNTkzOTNmYzBjZWY2ZGJmMjdkZmUKK2No ZWNrc3VtPWZjYWFmOTg3OGZlOGYzYmM4MjMxN2VmMTNhMTU1ODgyNGNiNjhkZjFmODk2OGM2Nzk3 ZjU1NmM1ZTMzYmNmZmQKIAogY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCiAJKi1tdXNs KSAjIFJlcXVpcmVkIGJ5IG11c2wgZm9yIE1fU1FSVDFfMgoKRnJvbSBmZjhhNmM2MGZkNTRiN2Ni MjM1MzhkNTBiMTFmMmVkMjU3NmYyN2MxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDcgTWF5IDIwMjMgMjA6MTQ6MTQg LTA0MDAKU3ViamVjdDogW1BBVENIIDEwNS8xMTVdIG1sdDc6IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUgICAgICAgICAgICAgfCAyICstCiBz cmNwa2dzL2dzdC1vbXgvdGVtcGxhdGUgICAgICAgICAgICAgICB8IDQgKystLQogc3JjcGtncy9n c3QtcGx1Z2lucy1iYXNlMS90ZW1wbGF0ZSAgICAgfCA0ICsrLS0KIHNyY3BrZ3MvZ3N0LXBsdWdp bnMtZ29vZDEvdGVtcGxhdGUgICAgIHwgNCArKy0tCiBzcmNwa2dzL2dzdDEtZWRpdGluZy1zZXJ2 aWNlcy90ZW1wbGF0ZSB8IDQgKystLQogc3JjcGtncy9nc3QxLXB5dGhvbjMvdGVtcGxhdGUgICAg ICAgICAgfCA2ICsrKy0tLQogc3JjcGtncy9nc3RyZWFtZXItdmFhcGkvdGVtcGxhdGUgICAgICAg fCA0ICsrLS0KIHNyY3BrZ3MvZ3N0cmVhbWVyMS90ZW1wbGF0ZSAgICAgICAgICAgIHwgNCArKy0t CiBzcmNwa2dzL21sdDcvdGVtcGxhdGUgICAgICAgICAgICAgICAgICB8IDIgKy0KIDkgZmlsZXMg Y2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQpp bmRleCAwNGMzOWJmZjE0ODkuLjhjNzJmYzNlOTdlZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3Qt bGliYXYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtbGliYXYnCiBwa2duYW1lPWdzdC1saWJh dgogdmVyc2lvbj0xLjIyLjIKLXJldmlzaW9uPTIKK3JldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1l c29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgeWFzbSIKIG1ha2VkZXBlbmRzPSJvcmMt ZGV2ZWwgZ3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwgZmZtcGVnLWRldmVsIgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9nc3Qtb214L3RlbXBsYXRlIGIvc3JjcGtncy9nc3Qtb214L3RlbXBsYXRlCmluZGV4 IDg5MzUzNWM0NjNkYS4uNWFkNTRjYzdiOWQ4IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1vbXgv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3Qtb214L3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LW9teCcKIHBrZ25hbWU9Z3N0LW9teAotdmVyc2lvbj0x LjIwLjMKK3ZlcnNpb249MS4yMi4yCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXNvbgogY29u ZmlndXJlX2FyZ3M9Ii1EZXhhbXBsZXM9ZGlzYWJsZWQgLUR0YXJnZXQ9Z2VuZXJpYyIKQEAgLTEx LDQgKzExLDQgQEAgbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIK IGxpY2Vuc2U9IkxHUEwtMi4xLW9ubHkiCiBob21lcGFnZT0iaHR0cHM6Ly9nc3RyZWFtZXIuZnJl ZWRlc2t0b3Aub3JnIgogZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9zcmMvJHtwa2duYW1lfS8ke3Br Z25hbWV9LSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09OGRiNDgwNDBiYjQxZjA5ZWRmOGQx N2ZmNmQxNmM1NDg4OGQ3Nzc3YmE0NTAxYzJjNjlmMDA4MzM1MGVhOWExNQorY2hlY2tzdW09MWIw YzU3ZjJjYzRkZGVlYzVlN2YwYzQzNmU1MDJmMDY2NjVjNGU5M2M3MzI2MTg1NWI5NGUwNGZjOTQz MzdiMgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtcGx1Z2lucy1iYXNlMS90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvZ3N0LXBsdWdpbnMtYmFzZTEvdGVtcGxhdGUKaW5kZXggMjllOGY3NmJkMWZlLi4yZjIw ZWE4MTk4NDkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFzZTEvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9nc3QtcGx1Z2lucy1iYXNlMS90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1wbHVnaW5zLWJhc2UxJwogcGtnbmFtZT1nc3QtcGx1 Z2lucy1iYXNlMQotdmVyc2lvbj0xLjIwLjMKK3ZlcnNpb249MS4yMi4yCiByZXZpc2lvbj0xCiBi dWlsZF9zdHlsZT1tZXNvbgogYnVpbGRfaGVscGVyPSJnaXIiCkBAIC0yMiw3ICsyMiw3IEBAIG1h aW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwt Mi4wLW9yLWxhdGVyLCBMR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJl YW1lci5mcmVlZGVza3RvcC5vcmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy8ke3BrZ25h bWUvMS99LyR7cGtnbmFtZS8xL30tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT03ZTMwYjNk ZDgxYTcwMzgwZmY3NTU0Zjk5ODQ3MWQ2OTk2ZmY3NmJiZTZmYzU0NDcwOTZmODUxZTI0NDczYzlm CitjaGVja3N1bT1lYjY1MTIwYzRlZTc5YjdhMTUzYzNjMTk3MmQ1YzAxNThjMjE1MTg3N2NjNTFl Yzc3MjViYmE1NzQ5Njc5ZDQ5CiAKIGJ1aWxkX29wdGlvbnM9ImNkcGFyYW5vaWEgZ2lyIHNuZGlv IHdheWxhbmQiCiBidWlsZF9vcHRpb25zX2RlZmF1bHQ9ImNkcGFyYW5vaWEgZ2lyIHdheWxhbmQi CmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1wbHVnaW5zLWdvb2QxL3RlbXBsYXRlIGIvc3JjcGtn cy9nc3QtcGx1Z2lucy1nb29kMS90ZW1wbGF0ZQppbmRleCAxZjVlNjIwY2UxZmQuLjVkMGZlMWJm ZTI4NCAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcGx1Z2lucy1nb29kMS90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL2dzdC1wbHVnaW5zLWdvb2QxL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LXBsdWdpbnMtZ29vZDEnCiBwa2duYW1lPWdzdC1wbHVnaW5z LWdvb2QxCi12ZXJzaW9uPTEuMjAuMwordmVyc2lvbj0xLjIyLjIKIHJldmlzaW9uPTEKIGJ1aWxk X3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iLURkdj1kaXNhYmxlZCAtRGR2MTM5ND1kaXNh YmxlZCAtRHNob3V0Mj1kaXNhYmxlZCAtRHF0NT1lbmFibGVkCkBAIC0yMiw3ICsyMiw3IEBAIG1h aW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJMR1BM LTIuMS1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5v cmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy8ke3BrZ25hbWUvMS99LyR7cGtnbmFtZS8x L30tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT1mOGYzYzIwNmJmNWNkYWJjMDA5NTM5MjBi NDdiMzU3NWFmMGVmMTVlOWY4NzFjMGI2OTY2ZjZkMGFhNTg2OGI3CitjaGVja3N1bT03YzhjYzU5 NDI1ZjJiMjMyZjYwY2E3ZDEzZTU2ZWRkNjE1ZGE0ZjcxMWU3M2RkMDFhN2NmZmE0NmU2YmMwY2Rk CiAKIGJ1aWxkX29wdGlvbnM9Imd0azMgd2F5bGFuZCIKIGJ1aWxkX29wdGlvbnNfZGVmYXVsdD0i Z3RrMyB3YXlsYW5kIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QxLWVkaXRpbmctc2VydmljZXMv dGVtcGxhdGUgYi9zcmNwa2dzL2dzdDEtZWRpdGluZy1zZXJ2aWNlcy90ZW1wbGF0ZQppbmRleCA2 NzNiNDY5NzBmMjQuLjEwMjQ0MGY3ZjI1MyAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QxLWVkaXRp bmctc2VydmljZXMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QxLWVkaXRpbmctc2VydmljZXMv dGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QxLWVkaXRp bmctc2VydmljZXMnCiBwa2duYW1lPWdzdDEtZWRpdGluZy1zZXJ2aWNlcwotdmVyc2lvbj0xLjIw LjMKK3ZlcnNpb249MS4yMi4yCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXNvbgogYnVpbGRf aGVscGVyPSJnaXIiCkBAIC0xMiw3ICsxMiw3IEBAIG1haW50YWluZXI9IlRveWFtIENveCA8VmFl bGF0ZXJuQGdtYWlsLmNvbT4iCiBsaWNlbnNlPSJMR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdl PSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBh Z2V9L3NyYy8ke3BrZ25hbWUvZ3N0MS9nc3R9LyR7cGtnbmFtZS9nc3QxL2dzdH0tJHt2ZXJzaW9u fS50YXIueHoiCi1jaGVja3N1bT01ZmQ4OTZkZTY5ZmJlMjQ0MjFlYjZiMGZmOGQyZjhiNGMzY2Jh M2YzMDI1Y2VhY2QzMDIxNzJmMzlhOGFiYWEyCitjaGVja3N1bT00NTNiMTQ2NGZjMzg1N2RlMjY5 YTdjYjBlYmQ5NjZhZmUwMjE3MWQ5N2JlZjY3MmEwYjhhMGE2ZDQzZTBjZWJmCiAKIGRvX2NoZWNr KCkgewogCTogIyBUZXN0cyBmYWlsIGluIG9sZGVyIHZlcnNpb25zIGFzIHdlbGwKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvZ3N0MS1weXRob24zL3RlbXBsYXRlIGIvc3JjcGtncy9nc3QxLXB5dGhvbjMv dGVtcGxhdGUKaW5kZXggM2Y1NjRhYzY0YjkzLi43ODllNDBmMDM2ZWEgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvZ3N0MS1weXRob24zL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0MS1weXRob24zL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0MS1weXRob24z JwogcGtnbmFtZT1nc3QxLXB5dGhvbjMKLXZlcnNpb249MS4yMC4zCi1yZXZpc2lvbj0yCit2ZXJz aW9uPTEuMjIuMgorcmV2aXNpb249MQogYnVpbGRfc3R5bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5k cz0icGtnLWNvbmZpZyBweXRob24zIgogbWFrZWRlcGVuZHM9ImxpYmdsaWItZGV2ZWwgcHl0aG9u My1kZXZlbCBweXRob24zLWdvYmplY3QtZGV2ZWwgZ3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwiCkBA IC0xMSw0ICsxMSw0IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9y Zz4iCiBsaWNlbnNlPSJMR1BMLTIuMS1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJl YW1lci5mcmVlZGVza3RvcC5vcmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy9nc3QtcHl0 aG9uL2dzdC1weXRob24tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT1kYjM0ODEyMGVhZTk1 NWI4Y2M0ZGUzNTYwYTdlYTA2ZTM2ZDZlMWRkYmFhOTlhN2FkOTZiNTk4NDY2MDFjZmRjCitjaGVj a3N1bT1iZWYyYjNkODJjZTRiZTQ2Yjc3NWIxYmI1NjMwNWMxMDAzZWUwMWI1MzVhNTNhODJmOWZl ODkyNDk3MjE1M2FkCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdHJlYW1lci12YWFwaS90ZW1wbGF0 ZSBiL3NyY3BrZ3MvZ3N0cmVhbWVyLXZhYXBpL3RlbXBsYXRlCmluZGV4IDNjYzRlMDU3NTU5YS4u MGE1ZWU4YjFjYTNmIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdHJlYW1lci12YWFwaS90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2dzdHJlYW1lci12YWFwaS90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdHJlYW1lci12YWFwaScKIHBrZ25hbWU9Z3N0cmVhbWVy LXZhYXBpCi12ZXJzaW9uPTEuMjAuMwordmVyc2lvbj0xLjIyLjIKIHJldmlzaW9uPTEKIGJ1aWxk X3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCkBAIC0xMSw3ICsxMSw3 IEBAIGxpY2Vuc2U9IkxHUEwtMi4xLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ3N0cmVh bWVyLmZyZWVkZXNrdG9wLm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNv bnRlbnQuY29tL0dTdHJlYW1lci9nc3RyZWFtZXItdmFhcGkvbWFzdGVyL0NoYW5nZUxvZyIKIGRp c3RmaWxlcz0iJHtob21lcGFnZX0vc3JjL2dzdHJlYW1lci12YWFwaS9nc3RyZWFtZXItdmFhcGkt JHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT02ZWU5OWViMzE2YWJkZGU5YWQzNzAwMjkxNWJk OGMzODY3OTE4ZjZmZGM3NGI3Y2YyYWM0YzFhZTBkNjkwYjQ1CitjaGVja3N1bT1kMmU2NDJmOTc0 NWY5N2Q5ZjczYTdmNTA4NWU3NjU5YTlhMzFmZTIwOWI3NzRlNmU0NWRhZTA0MWI0MzVkZjA2CiAK IHByZV9jaGVjaygpIHsKIAkjIFNlZW1zIHRvIG5lZWQgY2VydGFpbiBoYXJkd2FyZSB0byBwYXNz CmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdHJlYW1lcjEvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdHJl YW1lcjEvdGVtcGxhdGUKaW5kZXggYWU4YTQ5Y2IyMGU4Li41NzExNDhmMmZmMzMgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvZ3N0cmVhbWVyMS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdHJlYW1lcjEv dGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3RyZWFtZXIx JwogcGtnbmFtZT1nc3RyZWFtZXIxCi12ZXJzaW9uPTEuMjAuMwordmVyc2lvbj0xLjIyLjIKIHJl dmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29uCiBidWlsZF9oZWxwZXI9ImdpciIKQEAgLTE2LDcg KzE2LDcgQEAgbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxp Y2Vuc2U9IkxHUEwtMi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZy ZWVkZXNrdG9wLm9yZyIKIGRpc3RmaWxlcz0iJHtob21lcGFnZX0vc3JjL2dzdHJlYW1lci9nc3Ry ZWFtZXItJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT02MDdkYWY2NGJiYmQ1ZmIxOGFmOWQx N2UyMWMwZDIyYzRkNzAyZmZmZTgzYjIzY2IyMmQxYjFhZjJjYTIzYTJhCitjaGVja3N1bT1iMmFm ZTczNjAzOTIxYzYwOGJhNDg5NjlkYmI3ZDc0Mzc3Njc0NGJmZTVkODA1OWVjZTI0MTEzN2I3Zjg4 ZTIxCiAKIHByZV9jaGVjaygpIHsKIAkjIGdzdF9nc3RkYXRldGltZSBpcyBrbm93biB0byBmYWls IGFjY29yZGluZyB0byBMRlMKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWx0Ny90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvbWx0Ny90ZW1wbGF0ZQppbmRleCA5ZmI3ZjYwZDY5MmUuLmNjYTBlYjY4Y2ZjMyAxMDA2 NDQKLS0tIGEvc3JjcGtncy9tbHQ3L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWx0Ny90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21sdDcnCiBwa2duYW1lPW1s dDcKIHZlcnNpb249Ny4xNC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1j bWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EU1dJR19QWVRIT049T04iCiBob3N0bWFrZWRlcGVuZHM9 ImRveHlnZW4gcGtnLWNvbmZpZyBsYWRzcGEtc2RrIHN3aWcgcHl0aG9uMyB3aGljaAoKRnJvbSA3 ZjZiZGYwOGEyMmQyMzc2ZWYzODNhZDYwZTAzYmM3MzllZGNkNzk3IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDcgTWF5 IDIwMjMgMjA6MTU6MDMgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwNi8xMTVdIHF0Ni13ZWJlbmdp bmU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9xdDYtd2ViZW5naW5lL3Rl bXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlIGIvc3JjcGtn cy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlCmluZGV4IDRlMjJjYjZlODg2My4uZjk0OGRjOTE5YTE1 IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAncXQ2LXdlYmVuZ2luZScKIHBrZ25hbWU9cXQ2LXdlYmVuZ2luZQogdmVyc2lvbj02LjUu MAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9h cmdzPSIKICAtRFFUX0ZFQVRVUkVfd2ViZW5naW5lX3N5c3RlbV9mZm1wZWc9T04KCkZyb20gOWFh ODIyYjk2MTkxNDE3OTZhNDU1OGQ0YmYxYjg0MWZmNDE5MDBhZiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA3IE1heSAy MDIzIDIwOjE1OjI5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDcvMTE1XSB0cmFja2VyLW1pbmVy czogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3RyYWNrZXItbWluZXJzL3Rl bXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90cmFja2VyLW1pbmVycy90ZW1wbGF0ZSBiL3NyY3Br Z3MvdHJhY2tlci1taW5lcnMvdGVtcGxhdGUKaW5kZXggOGMwMDVkNjk3ZmE0Li5hNmU1YWE1Nzc3 MDIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdHJhY2tlci1taW5lcnMvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy90cmFja2VyLW1pbmVycy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ3RyYWNrZXItbWluZXJzJwogcGtnbmFtZT10cmFja2VyLW1pbmVycwogdmVyc2lv bj0zLjUuMAotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9bWVzb24KIGJ1aWxk X2hlbHBlcj1xZW11CiAjIG1pc3NpbmcgbGliZ3JzcyBmb3IgbWluZXJfcnNzCgpGcm9tIDcxMTUw YjYwOGY3NTA4Y2VmYzIzZDQ2NDY2OTFmY2RhZjgxM2YxMGUgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgNyBNYXkgMjAy MyAyMDoyMDo1OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTA4LzExNV0gbXBkOiByZXZidW1wIGZv ciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbXBkL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9tcGQvdGVtcGxhdGUgYi9zcmNwa2dzL21wZC90ZW1wbGF0ZQppbmRleCA5ZGJkNGM5MzVhY2Mu LjlmMDU4YjYyZGYyZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9tcGQvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9tcGQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdt cGQnCiBwa2duYW1lPW1wZAogdmVyc2lvbj0wLjIzLjEzCi1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1Eb3B1cz1lbmFibGVkIC1EbWlr bW9kPWVuYWJsZWQgLURuZWlnaGJvcj10cnVlCiAgLURzb3VuZGNsb3VkPWVuYWJsZWQgLURwaXBl PXRydWUgLUR0d29sYW1lPWVuYWJsZWQgLURiemlwMj1lbmFibGVkCgpGcm9tIDE3NThmNWQwYWIy ZmRjN2I1YWY3NzY0ZjYxNDI0MDA5MDYyZDRlYjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFRodSwgMTEgTWF5IDIwMjMgMTQ6 MDU6MTQgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwOS8xMTVdIG9wZW5tdzogcmV2YnVtcCBmb3Ig ZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL29wZW5tdy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3Mvb3Blbm13L3RlbXBsYXRlIGIvc3JjcGtncy9vcGVubXcvdGVtcGxhdGUKaW5kZXggZTM3NzFj N2FhZjFhLi4zY2JmMjBiMDY1NzcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRl CisrKyBiL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnb3Blbm13JwogcGtnbmFtZT1vcGVubXcKIHZlcnNpb249MC40Ny4wCi1yZXZp c2lvbj01CityZXZpc2lvbj02CiBidWlsZF9zdHlsZT1jbWFrZQogX3JlY2FzdF9jb21taXQ9ZTc1 YWRmODZmOTFlYjMwODIyMjAwODVlNDJkZGE2MjY3OWY5YTNlYQogX2J1bGxldF90YWc9My4xNwoK RnJvbSBhODk5NTMwZjlmNGE4ZDJjMjJmYzU1Njg0ZTQ1MjcwNWZmYjIyMTEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUaHUs IDExIE1heSAyMDIzIDE0OjA1OjM5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMTAvMTE1XSBmcmVl Y2FkOiByZXZidW1wIGZvciBxdDUtd2ViZW5naW5lLTUuMTUuMTMKCi0tLQogc3JjcGtncy9mcmVl Y2FkL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlIGIvc3JjcGtn cy9mcmVlY2FkL3RlbXBsYXRlCmluZGV4IGUzMDFmMzJkMzU0MC4uYTRhM2Y1Zjc2YjI5IDEwMDY0 NAotLS0gYS9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mcmVlY2FkL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZnJlZWNhZCcKIHBr Z25hbWU9ZnJlZWNhZAogdmVyc2lvbj0wLjIwLjIKLXJldmlzaW9uPTQKK3JldmlzaW9uPTUKIGJ1 aWxkX3N0eWxlPWNtYWtlCiAKIF9pbnN0X3ByZWZpeD0vdXNyL2xpYi8ke3BrZ25hbWV9CgpGcm9t IGI2MTk5NjEyZGZiNzI0YzZlMGYxYjk5YWY4NTI4NmZjNGRkZTQyMmQgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMjEg TWF5IDIwMjMgMTI6NDQ6MTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDExMS8xMTVdIGVsZWN0cm9u MjQ6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9lbGVjdHJvbjI0L3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjI0L3RlbXBsYXRlIGIvc3JjcGtncy9lbGVj dHJvbjI0L3RlbXBsYXRlCmluZGV4IGJkYWE1NmFkYzhhNi4uZmYzZDVlM2VmMzgxIDEwMDY0NAot LS0gYS9zcmNwa2dzL2VsZWN0cm9uMjQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0 L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZWxlY3Ryb24y NCcKIHBrZ25hbWU9ZWxlY3Ryb24yNAogdmVyc2lvbj0yNC4zLjAKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIF9ub2RldmVyPTE4LjE0LjAKIF9jaHJvbWl1bXZlcj0xMTIuMC41NjE1LjE2NQogYXJj aHM9Ing4Nl82NCogYWFyY2g2NCoiCgpGcm9tIGNmYzQ0YWQ2MzY3YWE3NGQ2ZjVhYTBmODE0MDcy NTQzZWNiOGQ4NDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFNhdCwgMyBKdW4gMjAyMyAwODoyMDoyMiAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMTEyLzExNV0gZ3RrNDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNw a2dzL2d0azQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2d0azQvdGVtcGxhdGUgYi9zcmNw a2dzL2d0azQvdGVtcGxhdGUKaW5kZXggNWZhZmE1MGY2ZjMzLi41ZTU1MjNhYTQ0MDMgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvZ3RrNC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2d0azQvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdndGs0JwogcGtnbmFtZT1ndGs0 CiB2ZXJzaW9uPTQuMTAuMwotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9bWVz b24KIGJ1aWxkX2hlbHBlcj0iZ2lyIgogY29uZmlndXJlX2FyZ3M9Ii1EbWFuLXBhZ2VzPXRydWUg LURndGtfZG9jPXRydWUKCkZyb20gOGVjZTUyY2YxZTgwYTZkNzY5MjczMDhlMmZmOGI2N2Y1ODI4 ZDk2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogU3VuLCA0IEp1biAyMDIzIDExOjI1OjUwIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAxMTMvMTE1XSBlbGVjdHJvbjE5OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3MvZWxlY3Ryb24xOS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1w bGF0ZSBiL3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZQppbmRleCAzMmNlMzAxZTczMGMuLmFi N2YzMDhmNWU4YSAxMDA2NDQKLS0tIGEvc3JjcGtncy9lbGVjdHJvbjE5L3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ2VsZWN0cm9uMTknCiBwa2duYW1lPWVsZWN0cm9uMTkKIHZlcnNpb249MTkuMC44 Ci1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBfbm9kZXZlcj0xNi4xNC4yCiBfY2hyb21pdW12ZXI9 MTAyLjAuNTAwNS4xMjUKIGFyY2hzPSJ4ODZfNjQqIGFhcmNoNjQqIHBwYzY0bGUqIgoKRnJvbSBj OGU5ODI5NGQ4YmQ4ZTcwZmIzMDYwMmI2Zjk1NmQyOTdmNTlmODM5IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDQgSnVu IDIwMjMgMTE6Mjg6MjYgLTA0MDAKU3ViamVjdDogW1BBVENIIDExNC8xMTVdIHNpcmlsOiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL3NpcmlsL3RlbXBsYXRlIGIvc3JjcGtncy9zaXJpbC90ZW1wbGF0ZQppbmRleCA4 NDMzMmY3OWQwNjAuLjYyNzUwZGQyNDc1NCAxMDA2NDQKLS0tIGEvc3JjcGtncy9zaXJpbC90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL3NpcmlsL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnc2lyaWwnCiBwa2duYW1lPXNpcmlsCiB2ZXJzaW9uPTAuOS4xMgotcmV2 aXNpb249MTAKK3JldmlzaW9uPTExCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBob3N0bWFr ZWRlcGVuZHM9InBrZy1jb25maWcgaW50bHRvb2wgYXV0b2NvbmYgYXV0b21ha2UgZ2V0dGV4dC1k ZXZlbCIKIG1ha2VkZXBlbmRzPSJmZnR3LWRldmVsIGxpYmNvbmZpZy1kZXZlbCBsaWJvcGVuY3Yt ZGV2ZWwgbGliZmZtczItZGV2ZWwKCkZyb20gMjZmYTEyOTgwODBmMGI5Y2M4OTVkYzhmY2EzMmUw YTlhMDM4Mjg0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA0IEp1biAyMDIzIDExOjI5OjA4IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAxMTUvMTE1XSB0ZWxlZ3JhbS1kZXNrdG9wOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90 ZW1wbGF0ZQppbmRleCBmMTE0YjIzNDFkYzUuLjlkYjlmODBjMWE1MyAxMDA2NDQKLS0tIGEvc3Jj cGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdGVsZWdyYW0tZGVz a3RvcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3RlbGVn cmFtLWRlc2t0b3AnCiBwa2duYW1lPXRlbGVncmFtLWRlc2t0b3AKIHZlcnNpb249NC44LjEKLXJl dmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPWNtYWtlCiBidWlsZF9oZWxwZXI9InFl bXUiCiBjb25maWd1cmVfYXJncz0iLURUREVTS1RPUF9BUElfSUQ9MjA5MjM1Cg== --===============5564677552230297569==--