From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 21322 invoked from network); 20 Nov 2023 23:00:53 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 20 Nov 2023 23:00:53 -0000 Content-Type: multipart/mixed; boundary="===============7133597287947133695==" 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: Tue, 21 Nov 2023 00:00:52 +0100 List-Id: Message-ID: <20231120230052.KGcOu6f2XzzOyAdxEdOH-fPbNH1bW-oo8xbVxacC24s@z> GitHub notification mails are now in MIME to allow UTF8. --===============7133597287947133695== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgemxpY2UgYWdhaW5zdCBtYXN0ZXIg b24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL3psaWNl L3ZvaWQtcGFja2FnZXMgZmZtcGVnNi1zcGxpdApodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51 eC92b2lkLXBhY2thZ2VzL3B1bGwvNDM3NjEKCmZmbXBlZzYgc3BsaXQKW2NpIHNraXBdDQoNCg0K IyMjIyBUZXN0aW5nIHRoZSBjaGFuZ2VzDQoNCi0gSSB0ZXN0ZWQgdGhlIGNoYW5nZXMgaW4gdGhp cyBQUjogKipZRVMqKg0KDQptYWluIHRlc3RpbmcgaGFzIGJlZW4gdmFhcGkgaW4gRmlyZWZveCBO aWdodGx5IGFuZCBlbmMvZGVjIGluIFNob3RjdXQgb24gSW50ZWwgQTc3MA0KDQojIyMjIE5ldyBw YWNrYWdlDQoNCi0gVGhpcyBuZXcgcGFja2FnZSBjb25mb3JtcyB0byB0aGUgW3BhY2thZ2UgcmVx dWlyZW1lbnRzXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Js b2IvbWFzdGVyL0NPTlRSSUJVVElORy5tZCNwYWNrYWdlLXJlcXVpcmVtZW50cyk6ICoqWUVTKioN Cg0KIyMjIyBMb2NhbCBidWlsZCB0ZXN0aW5nDQoNCi0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkg Zm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsICoqeDg2XzY0KioNCg0KIyMjIyBEaXNjdXNzaW9u DQoNCkNvbnRpbnVhdGlvbiBvZiBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBh Y2thZ2VzL3B1bGwvMzYzMTUNCg0KYGxpYmF2cmVzYW1wbGVgIGlzIGRlcHJlY2F0ZWQsIGJ1dCBt YXJrZWQgYXMgYSBkZXBlbmRlbmN5IHdoZW4gdHJ5aW5nIHRvIGJ1aWxkIG90aGVyIHBhY2thZ2Vz IGFuZCBpbnN0YWxsIGBmZm1wZWdgKDYpLiBJIHRoaW5rIHRoZSByaWdodCB3YXkgdG8gaGFuZGxl IHRoaXMgaXMgbWFrZSBhIG1ldGEgcGFja2FnZSBhbmQgdGhlIGFkZCB0byByZW1vdmFscz8NCg0K DQojIyMjIyBDb21taXQgbmFtaW5nIC8gbWlzYw0KDQp+fkNvbW1pdHMgYXJlICdkaXJ0eScgcmln aHQgbm93LCBydW5uaW5nIHdpdGggW2dzdHJlYW1lciAxLjIyLjEgdXBkYXRlc10oaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQyODYxKSBhbmQgW0ludGVs IE9wZW5DTF0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxs LzQzMDg0KS4gVGhpcyB3aWxsIGFsc28gbWFrZSBbaW50ZWwgcGFja2FnZXMgcHJdKGh0dHBzOi8v Z2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80MTEzMikgb2Jzb2xldGUu fn4gKHNlZSBSZXF1aXJlbWVudHMgYmVsb3cpDQoNCk1haW50YWluZXIgZm9yIHByZXZpb3VzIGZm bXBlZyg0KSB3YXMgb3JwaGFuZWQsIEkgY2FuIHB1dCBteSBuYW1lIGluIHRoZXJlIGlmIHRoYXQg bWF0dGVycywgdGhvdWdoIEkgZG9uJ3QgZXhhY3RseSBzZWUgbXlzZWxmIGtlZXBpbmcgdXAgb24g ZmZtcGVnLg0KDQpUaGlzIHVwZGF0ZXMgUVQ1IHdoaWNoIGxvb2tzIGxpa2UgaXQgaXMgdXN1YWxs eSBob3N0ZWQgYnkgSm9obm55LiBOb3Qgc3VyZSBpZiB0aGVyZSdzIGFueSByZWFzb24gdG8gc3Rh eSB0aGVyZSBvciB0aGVzZSBzb3VyY2VzIGFyZSBmaW5lLg0KDQojIyMjIyBTVElMTCBGRk1QRUc0 DQoNClRoZXNlIGFyZSBhIG1peCBvZiBlbXVsYXRvcnMsIGdhbWVzIGFuZC9vciBvbGRlciBwYWNr YWdlcy4NCg0KLSBhdHRyYWN0IChtdWx0aXBsZSBwYXRjaGVzIGluIG1hc3RlcikNCi0gYXVkYWNp dHkgKGh0dHBzOi8vZ2l0aHViLmNvbS9hdWRhY2l0eS9hdWRhY2l0eS9pc3N1ZXMvMjMwNSBhbmQg aHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9wb3J0bWVkaWEvd2lraS9wb3J0c21mLyBpcyAnYmV0 YScpDQotIGNjZXh0cmFjdG9yIChtYXN0ZXIgcGF0Y2hlcz8gbm8gcmVsZWFzZSkNCi0gdmljZQ0K LSBrb2RpDQotIG1sdCAob25seSBkZXAgbGVmdCBpcyBmbG93YmxhZGUpDQotIH5+c3luZmlnICht bHQpfn4gKHdvcmsgd2l0aCBtbHQ3LCBidW1wIHN5bmZpZ3N0dWRpbykNCi0gdHZoZWFkZW5kDQot IHNzcg0KLSB+fnNwZWstYWx0ZXJuYXRpdmV+fiAocmVwbGFjZSB3aXRoIHNwZWsteCkNCi0gcHBz c3BwDQotIG9saXZlDQotIG1vYw0KLSBtZWRpYXN0cmVhbWVyDQotIGxpYmV4dHJhY3Rvcg0KLSBp ZGpjDQotIGhlZGdld2Fycw0KLSB+fmZmbXBlZ3RodW1ibmFpbGVyfn4gKHBhdGNoZXMgZm9yIG1v dmllZGVjb2Rlci54eHggZmlsZXMpDQotIH5+ZmZtcGVndGh1bWJzfn4gKGxhdGVzdCBjb21waWxl cykNCi0gZGVhZGJlZWYNCi0gb214cGxheWVyDQotIHF0YXYgKGZvcmsgaGFzIGZmbXBlZyA1IHBh dGNoIC0gaHR0cHM6Ly9naXRodWIuY29tL2NtZ3VvL1F0QVYpDQotIGB2bGNgICh2bGM0IHdpbGwg c3VwcG9ydCBmZm1wZWc1LCB0aGVyZSdzIGEgcGF0Y2ggdG8gYnVpbGQgMy54IHdpdGggZmZtcGVn NSBidXQgaXQgd2lsbCBsYWNrIHZhYXBpKQ0KLSBgb3NnYCAoT3BlblNjZW5lR3JhcGggcGx1cyBg eGluZS1saWJgKQ0KDQoNCiMjIyMjIEhBVkUgTk9UIEJVSUxUIFlFVA0KDQotIG9teHBsYXllciAo cnBpIG9ubHk/IGZmbXBlZzQpDQotIGtvZGkgKGJpZywgYnV0IGZmbXBlZzQpDQoNCg0KIyMjIyMg VVBEQVRFRCAoZm9yIGZmbXBlZzYpDQoNCi0gfn5ibGVuZGVyOiB1cGRhdGUgdG8gMy41LjF+fiB+ fndpbGwgYmUgcmV2YnVtcCB3aXRofn4gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9p ZC1wYWNrYWdlcy9wdWxsLzQzOTkyDQotIHVucGFwZXI6IHVwZGF0ZSB0byA3LjAuMC4NCi0gZ3V2 Y3ZpZXc6IHVwZGF0ZSB0byAyLjAuOC4NCi0gcXQ1OiB1cGRhdGUgdG8gNS4xNS44DQotIHF0NS13 ZWJlbmdpbmU6IHVwZGF0ZSB0byA1LjE4LjEzDQotIHNoaWJva2VuMjogcmV2YnVtcCBmb3IgcXQ1 LjE1LjggKHBhdGNoKQ0KLSBweXRob24zLXB5c2lkZTI6IHVwZGF0ZSB0byA1LjE1LjggKHBhdGNo KQ0KLSBOZXcgcGFja2FnZTogc3BleC14IHJlcGxhY2VzIHNwZWstYWx0ZXJuYXRpdmUgZm9yIGZm bXBlZy02LjANCg0KDQojIyMjIyBSZXF1aXJlbWVudHMNCg0KLSB+fltnc3RyZWFtZXIgMS4yMi4y XShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDI4NjEp fn4gLSBhIGZldyBwYWNrYWdlcyB1c2UgZmZtcGVnLWRldmVsIGFuZCByZXF1aXJlIGEgcmV2YnVt cA0KDQotIH5+W0ludGVsIFBhY2thZ2VzXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92 b2lkLXBhY2thZ2VzL3B1bGwvNDExMzIpfn4gW0ludGVsIFBhY2thZ2VzIHYyXShodHRwczovL2dp dGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDczMzApIC0gZmZtcGVnNCB1 c2VzIGRpZmZlcmVudCBsaWJyYXJpZXMgdGhhbiA2IChsaWJtZnggLyBJbnRlbC1NZWRpYVNESyB2 cyBvbmx5IG9uZVZQTCB0aGF0IEludGVsIGlzIG1vdmluZyB0byksIGJvdGggYXJlIGluY2x1ZGVk IGhlcmUNCg0KLSB+fltzaG90Y3V0IDIzLjA1LjE0XShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1s aW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDQyNjApfn4NCg0KLSBodHRwczovL2dpdGh1Yi5jb20v dm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDQ3ODEgd2lsbCByZW1vdmUgZnJvbSB0aGlz IFBSCgpBIHBhdGNoIGZpbGUgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lk LXBhY2thZ2VzL3B1bGwvNDM3NjEucGF0Y2ggaXMgYXR0YWNoZWQ= --===============7133597287947133695== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ffmpeg6-split-43761.patch" RnJvbSBjMzVkZWI3OGI0OTA2Y2FkYTA1MWEzNTkxNTg5MTcyMjFhZWJjYThiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4s IDE1IE9jdCAyMDIzIDIxOjE2OjU2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDEvMTE1XSBmZm1w ZWc6IHVwZGF0ZSB0byA2LjAuMS4KCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMjYgKysrKystLS0KIHNyY3BrZ3MvZmZtcGVnL2ZpbGVzL2FsdGl2 ZWMucGF0Y2ggICAgICAgICAgICB8IDYwIC0tLS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9wYXRjaGVz L2FybXY1dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoICAgICB8IDE4IC0tLS0tLQogLi4uaC1saWJh dmNvZGVjLWxpYnN2dGF2MS10ZW5fYml0X2Zvcm1hdC5kaWZmIHwgNDAgLS0tLS0tLS0tLS0tLQog Li4uL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaCAgIHwgMjggLS0tLS0t LS0tCiBzcmNwa2dzL2ZmbXBlZy90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgfCAzOCAr KysrKystLS0tLS0KIDYgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgMTczIGRlbGV0 aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL2ZpbGVzL2FsdGl2ZWMu cGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL2FybXY1dGVs LWZsb2F0aW5nLXBvaW50LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcv cGF0Y2hlcy9wYXRjaC1saWJhdmNvZGVjLWxpYnN2dGF2MS10ZW5fYml0X2Zvcm1hdC5kaWZmCiBk ZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2Et cmVhZGVvbi12YWFwaS1idWcucGF0Y2gKCmRpZmYgLS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29t bW9uL3NobGlicwppbmRleCAyNDdiZmNhNzgxZjVkLi5jMjhhNTY3OTFkOWMxIDEwMDY0NAotLS0g YS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTM4NSwxNSArMzg1LDIzIEBA IGxpYmlkM3RhZy5zby4wIGxpYmlkM3RhZy0wLjE1LjFiXzEKIGxpYmdpZi5zby43IGdpZmxpYi01 LjEuMF8xCiBsaWJJbWxpYjIuc28uMSBpbWxpYjItMS40LjJfMQogbGlibXAzbGFtZS5zby4wIGxh bWUtMy45OC4yXzEKLWxpYmF2ZGV2aWNlLnNvLjU4IGxpYmF2ZGV2aWNlLTQuMF8xCi1saWJhdmZv cm1hdC5zby41OCBsaWJhdmZvcm1hdC00LjBfMQotbGlic3dzY2FsZS5zby41IGxpYnN3c2NhbGUt NC4wXzEKLWxpYnN3cmVzYW1wbGUuc28uMyBsaWJzd3Jlc2FtcGxlLTQuMF8xCi1saWJhdnJlc2Ft cGxlLnNvLjQgbGliYXZyZXNhbXBsZS00LjBfMQotbGlicG9zdHByb2Muc28uNTUgbGlicG9zdHBy b2MtNC4wXzEKLWxpYmF2Y29kZWMuc28uNTggbGliYXZjb2RlYy00LjBfMQotbGliYXZ1dGlsLnNv LjU2IGxpYmF2dXRpbC00LjBfMQotbGliYXZmaWx0ZXIuc28uNyBsaWJhdmZpbHRlci00LjBfMQor bGliYXZkZXZpY2Uuc28uNjAgbGliYXZkZXZpY2UtNi4wXzEKK2xpYmF2Zm9ybWF0LnNvLjYwIGxp YmF2Zm9ybWF0LTYuMF8xCitsaWJzd3NjYWxlLnNvLjcgbGlic3dzY2FsZS02LjBfMQorbGlic3dy ZXNhbXBsZS5zby40IGxpYnN3cmVzYW1wbGUtNi4wXzEKK2xpYnBvc3Rwcm9jLnNvLjU3IGxpYnBv c3Rwcm9jLTYuMF8xCitsaWJhdmNvZGVjLnNvLjYwIGxpYmF2Y29kZWMtNi4wXzEKK2xpYmF2dXRp bC5zby41OCBsaWJhdnV0aWwtNi4wXzEKK2xpYmF2ZmlsdGVyLnNvLjkgbGliYXZmaWx0ZXItNi4w XzEKK2xpYmF2ZGV2aWNlLnNvLjU4IGxpYmF2ZGV2aWNlNC00LjBfMQorbGliYXZmb3JtYXQuc28u NTggbGliYXZmb3JtYXQ0LTQuMF8xCitsaWJzd3NjYWxlLnNvLjUgbGlic3dzY2FsZTQtNC4wXzEK K2xpYnN3cmVzYW1wbGUuc28uMyBsaWJzd3Jlc2FtcGxlNC00LjBfMQorbGliYXZyZXNhbXBsZS5z by40IGxpYmF2cmVzYW1wbGU0LTQuMF8xCitsaWJwb3N0cHJvYy5zby41NSBsaWJwb3N0cHJvYzQt NC4wXzEKK2xpYmF2Y29kZWMuc28uNTggbGliYXZjb2RlYzQtNC4wXzEKK2xpYmF2dXRpbC5zby41 NiBsaWJhdnV0aWw0LTQuMF8xCitsaWJhdmZpbHRlci5zby43IGxpYmF2ZmlsdGVyNC00LjBfMQog bGliU0RMLTEuMi5zby4wIFNETC0xLjIuMTRfMQogbGliU0RMX2ltYWdlLTEuMi5zby4wIFNETF9p bWFnZS0xLjIuMTBfMQogbGlieDI2NC5zby4xNTcgeDI2NC0yMDE5MDUwNy4yMjQ1XzEKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZmZtcGVnL2ZpbGVzL2FsdGl2ZWMucGF0Y2ggYi9zcmNwa2dzL2ZmbXBl Zy9maWxlcy9hbHRpdmVjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzU3 MjAwNDYzMzIwLi4wMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmZtcGVnL2ZpbGVzL2FsdGl2 ZWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1yZXZlcnQgc29tZSBhbHRp dmVjIHNwZWNpZmljIGNoYW5nZSBvbiBhbGwgcHBjKiBleGNlcHQgcHBjNjRsZSoKLQotcTY2OiAi V2Ugc2hvdWxkIGFsc28gdGhyb3cgaW4gYSByZXZlcnQgb2YgRkZtcGVnL0ZGbXBlZ0AzYTU1N2M1 IGJ1dCBvbmx5Ci1jb25kaXRpb25hbGx5LCBmb3IgcHBjKiBidXQgbm90IHBwYzY0bGUqICh0aGUg bmV3IGNvZGUgaXMgdmFsaWQgZm9yCi1QT1dFUjggVlNYIHdoaWNoIExFIHRhcmdldHMgYXMgYSBi YXNlbGluZSBidXQgbm90IEJFKSIKLQotCi1UaGlzIHJldmVydHMgY29tbWl0IDNhNTU3YzVkODhi N2IxNWI1OTU0YmEyNzQzZmViYjA1NTU0OWI1MzYuCi0tLS0KLSBsaWJzd3NjYWxlL3BwYy95dXYy cmdiX2FsdGl2ZWMuYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrLS0tLQotIDEgZmlsZSBjaGFu Z2VkLCAyMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGli c3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMgYi9saWJzd3NjYWxlL3BwYy95dXYycmdiX2Fs dGl2ZWMuYwotaW5kZXggNTM2NTQ1MjkzZC4uYzFlMjg1MmFkYiAxMDA2NDQKLS0tLSBhL2xpYnN3 c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jCi0rKysgYi9saWJzd3NjYWxlL3BwYy95dXYycmdi X2FsdGl2ZWMuYwotQEAgLTMwNSw2ICszMDUsOSBAQCBzdGF0aWMgaW50IGFsdGl2ZWNfICMjIG5h bWUoU3dzQ29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgY2hhciAqKmluLCAgICAgICAgICBcCi0g ICAgIHZlY3RvciBzaWduZWQgc2hvcnQgUjEsIEcxLCBCMTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBSLCBHLCBC OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0rICAgIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICp5MWl2UCwg KnkyaXZQLCAqdWl2UCwgKnZpdlA7ICAgICAgICAgICAgICAgICAgXAotKyAgICB2ZWN0b3IgdW5z aWduZWQgY2hhciBhbGlnbl9wZXJtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHZlY3RvciBzaWduZWQgc2hv cnQgbENZICAgICAgID0gYy0+Q1k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxPWSAgICAgICA9IGMtPk9ZOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBsQ1JW ICAgICAgPSBjLT5DUlY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAt MzM1LDEzICszMzgsMjYgQEAgc3RhdGljIGludCBhbHRpdmVjXyAjIyBuYW1lKFN3c0NvbnRleHQg KmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAgICAgXAotICAgICAgICAgdmVjX2Rz dHN0KG91dGUsICgweDAyMDAwMDAyIHwgKCgodyAqIDMgKyAzMikgLyAzMikgPDwgMTYpKSwgMSk7 ICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBmb3IgKGogPSAwOyBq IDwgdyAvIDE2OyBqKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotLSAgICAgICAgICAgIHkwID0gdmVjX3hsKDAsIHkxaSk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB5MWl2UCA9IChjb25zdCB2 ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB5MWk7ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAg ICAgICAgICAgeTJpdlAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgeTJpOyAgICAg ICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHVpdlAgID0gKGNvbnN0IHZlY3RvciB1 bnNpZ25lZCBjaGFyICopIHVpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAg ICB2aXZQICA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB2aTsgICAgICAgICAgICAg ICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIGFsaWdu X3Blcm0gPSB2ZWNfbHZzbCgwLCB5MWkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSsgICAgICAgICAgICB5MCA9ICh2ZWN0b3IgdW5zaWduZWQgY2hhcikgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgdmVj X3Blcm0oeTFpdlBbMF0sIHkxaXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgXAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICB5MSA9IHZlY194bCgwLCB5Mmkp OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAg ICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHkyaSk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHkxID0gKHZlY3RvciB1bnNpZ25lZCBjaGFy KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAg ICAgICAgICB2ZWNfcGVybSh5Mml2UFswXSwgeTJpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAgICAg ICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICAgIHUgPSAodmVj dG9yIHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdWkpOyAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgdWkpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgdSA9ICh2ZWN0b3Igc2ln bmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg ICAgICAgICAgICAgICAgICAgdmVjX3Blcm0odWl2UFswXSwgdWl2UFsxXSwgYWxpZ25fcGVybSk7 ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAg ICAgdiA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpIHZlY194bCgwLCB2aSk7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB2aSk7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB2ID0g KHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh2aXZQWzBdLCB2aXZQWzFdLCBh bGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSAgICAgICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICB2ZWNfc3ViKHUs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLS0gCi0y LjI3LjAKLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9hcm12NXRlbC1mbG9h dGluZy1wb2ludC5wYXRjaCBiL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRp bmctcG9pbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhNTUxNzhjNzRm MGYuLjAwMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9hcm12NXRlbC1m bG9hdGluZy1wb2ludC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLS0tLSBh L2xpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMJMjAxNy0xMC0yNiAyMTowMzowMy4wMDAwMDAwMDAg KzAyMDAKLSsrKyBiL2xpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMJMjAxNy0xMS0yMSAxMTowNjo0 OS42MDIyODQ0MjIgKzAxMDAKLUBAIC0zOSw2ICszOSwxNSBAQAotICNlbmRpZgotICNpbmNsdWRl IDxmZW52Lmg+Ci0gCi0rI2lmIChGRV9BTExfRVhDRVBUID09IDApCi0rLyogRS5nLiBBUk0gc29m dCBmbG9hdCBkb2VzIG5vdCBkZWZpbmUgdGhlc2UgKi8KLSsjZGVmaW5lIEZFX0lOVkFMSUQgICAg MAotKyNkZWZpbmUgRkVfRElWQllaRVJPICAwCi0rI2RlZmluZSBGRV9PVkVSRkxPVyAgIDAKLSsj ZGVmaW5lIEZFX1VOREVSRkxPVyAgMAotKyNkZWZpbmUgRkVfSU5FWEFDVCAgICAwCi0rI2VuZGlm Ci0rCi0gI2lmIENPTkZJR19MSUJGT05UQ09ORklHCi0gI2luY2x1ZGUgPGZvbnRjb25maWcvZm9u dGNvbmZpZy5oPgotICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9w YXRjaC1saWJhdmNvZGVjLWxpYnN2dGF2MS10ZW5fYml0X2Zvcm1hdC5kaWZmIGIvc3JjcGtncy9m Zm1wZWcvcGF0Y2hlcy9wYXRjaC1saWJhdmNvZGVjLWxpYnN2dGF2MS10ZW5fYml0X2Zvcm1hdC5k aWZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTk0OGY3YThhMmRmLi4wMDAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJz dnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAK LSM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyBGcm9tIDAzMWYx NTYxY2QyODY1OTZjZGIzNzRkYTMyZjhhYTgxNmNlM2IxMzUgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCi0jIEZyb206IENocmlzdG9waGVyIERlZ2F3YSA8Y2hyaXN0b3BoZXIuZGVnYXdhQGludGVs LmNvbT4KLSMgRGF0ZTogVGh1LCAyMCBPY3QgMjAyMiAyMjo1NToyNyAtMDUwMAotIyBTdWJqZWN0 OiBbUEFUQ0hdIGF2Y29kZWMvbGlic3Z0YXYxOiByZW1vdmUgY29tcHJlc3NlZF90ZW5fYml0X2Zv cm1hdCBhbmQgc2ltcGxpZnkgYWxsb2NfYnVmZmVyCi0jCi0jIGNvbXByZXNzZWRfdGVuX2JpdF9m b3JtYXQgaGFzIGJlZW4gZGVwcmVjYXRlZCB1cHN0cmVhbSBhbmQgaGFzIG5vIGVmZmVjdAotIyBh bmQgY2FuIGJlIHJlbW92ZWQuIFBsdXMsIHRlY2huaWNhbGx5IGl0IHdhcyBuZXZlciB1c2VkIGlu IHRoZSBmaXJzdCBwbGFjZQotIyBzaW5jZSBpdCB3b3VsZCByZXF1aXJlIHRoZSBhcHAgKGZmbXBl ZykgdG8gc2V0IGl0IGFuZCBkbyBhZGRpdGlvbmFsCi0jIHByb2Nlc3Npbmcgb2YgdGhlIGlucHV0 IGZyYW1lcy4KLSMKLSMgQWxzbyBzaW1wbGlmeSBhbGxvY19idWZmZXIgYnkgcmVtb3ZpbmcgY2Fs Y3VsYXRpb25zIHJlbGF0aW5nIHRvIHRoZSBub24tZXhpc3RhbnQgcHJvY2Vzc2luZy4KLSMKLSMg U2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgRGVnYXdhIDxjaHJpc3RvcGhlci5kZWdhd2FAaW50 ZWwuY29tPgotIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g YS9saWJhdmNvZGVjL2xpYnN2dGF2MS5jCi0rKysgYi9saWJhdmNvZGVjL2xpYnN2dGF2MS5jCi1A QCAtMTI0LDE2ICsxMjQsMTIgQEAgc3RhdGljIGludCBzdnRfcHJpbnRfZXJyb3Iodm9pZCAqbG9n X2N0eCwgRWJFcnJvclR5cGUgZXJyLAotIAotIHN0YXRpYyBpbnQgYWxsb2NfYnVmZmVyKEViU3Z0 QXYxRW5jQ29uZmlndXJhdGlvbiAqY29uZmlnLCBTdnRDb250ZXh0ICpzdnRfZW5jKQotIHsKLS0g ICAgY29uc3QgaW50ICAgIHBhY2tfbW9kZV8xMGJpdCA9Ci0tICAgICAgICAoY29uZmlnLT5lbmNv ZGVyX2JpdF9kZXB0aCA+IDgpICYmIChjb25maWctPmNvbXByZXNzZWRfdGVuX2JpdF9mb3JtYXQg PT0gMCkgPyAxIDogMDsKLS0gICAgY29uc3Qgc2l6ZV90IGx1bWFfc2l6ZV84Yml0ICA9Ci0tICAg ICAgICBjb25maWctPnNvdXJjZV93aWR0aCAqIGNvbmZpZy0+c291cmNlX2hlaWdodCAqICgxIDw8 IHBhY2tfbW9kZV8xMGJpdCk7Ci0tICAgIGNvbnN0IHNpemVfdCBsdW1hX3NpemVfMTBiaXQgPQot LSAgICAgICAgKGNvbmZpZy0+ZW5jb2Rlcl9iaXRfZGVwdGggPiA4ICYmIHBhY2tfbW9kZV8xMGJp dCA9PSAwKSA/IGx1bWFfc2l6ZV84Yml0IDogMDsKLSsgICAgY29uc3Qgc2l6ZV90IGx1bWFfc2l6 ZSA9IGNvbmZpZy0+c291cmNlX3dpZHRoICogY29uZmlnLT5zb3VyY2VfaGVpZ2h0ICoKLSsgICAg ICAgIChjb25maWctPmVuY29kZXJfYml0X2RlcHRoID4gOCA/IDIgOiAxKTsKLSAKLSAgICAgRWJT dnRJT0Zvcm1hdCAqaW5fZGF0YTsKLSAKLS0gICAgc3Z0X2VuYy0+cmF3X3NpemUgPSAobHVtYV9z aXplXzhiaXQgKyBsdW1hX3NpemVfMTBiaXQpICogMyAvIDI7Ci0rICAgIHN2dF9lbmMtPnJhd19z aXplID0gbHVtYV9zaXplICogMyAvIDI7Ci0gCi0gICAgIC8vIGFsbG9jYXRlIGJ1ZmZlciBmb3Ig aW4gYW5kIG91dAotICAgICBzdnRfZW5jLT5pbl9idWYgICAgICAgICAgID0gYXZfbWFsbG9jeihz aXplb2YoKnN2dF9lbmMtPmluX2J1ZikpOwotLS0gCi1HaXRMYWIKLQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9mZm1wZWcvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0 Y2ggYi9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBp LWJ1Zy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBlM2Y2OGE0MTViOC4u MDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL3dvcmthcm91bmQtbWVz YS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAK LUZyb20gODExZDI5MDg0NDIwNmZjNzNkYzM5YzNlNWI2N2Q1ZDg5NWJhZWRmOCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IFJhaW5lciBIb2NoZWNrZXIgPGZlcm5ldG1lbnRhQG9ubGlu ZS5kZT4KLURhdGU6IFNhdCwgMjYgSmFuIDIwMTkgMTk6NDg6MzUgKzAxMDAKLVN1YmplY3Q6IFtQ QVRDSF0gYXZjb2RlYy92YWFwaV9oMjY0OiBza2lwIGRlY29kZSBpZiBwaWMgaGFzIG5vIHNsaWNl cwotCi1UaGlzIGZpeGVzIC8gd29ya2Fyb3VuZHMgaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9y Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA1MzY4LgotSXQgd2FzIGhpdCBmcmVxdWVudGx5IHdoZW4gd2F0 Y2hpbmcgaDI2NCBjaGFubmVscyByZWNlaXZlZCB2aWEgRFZCLVguCi1Db3JyZXNwb25kaW5nIGtv ZGkgYnVnOiBodHRwczovL2dpdGh1Yi5jb20veGJtYy94Ym1jL2lzc3Vlcy8xNTcwNAotLS0tCi0g bGliYXZjb2RlYy92YWFwaV9oMjY0LmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5z ZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMgYi9saWJh dmNvZGVjL3ZhYXBpX2gyNjQuYwotaW5kZXggNTg1NDU4N2EyNTUuLmYxMmZkYzQ1N2E0IDEwMDY0 NAotLS0tIGEvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMKLSsrKyBiL2xpYmF2Y29kZWMvdmFhcGlf aDI2NC5jCi1AQCAtMzE3LDYgKzMxNywxMSBAQCBzdGF0aWMgaW50IHZhYXBpX2gyNjRfZW5kX2Zy YW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKLSAgICAgSDI2NFNsaWNlQ29udGV4dCAqc2wgPSAm aC0+c2xpY2VfY3R4WzBdOwotICAgICBpbnQgcmV0OwotIAotKyAgICBpZiAocGljLT5uYl9zbGlj ZXMgPT0gMCkgewotKyAgICAgICAgcmV0ID0gQVZFUlJPUl9JTlZBTElEREFUQTsKLSsgICAgICAg IGdvdG8gZmluaXNoOwotKyAgICB9Ci0rCi0gICAgIHJldCA9IGZmX3ZhYXBpX2RlY29kZV9pc3N1 ZShhdmN0eCwgcGljKTsKLSAgICAgaWYgKHJldCA8IDApCi0gICAgICAgICBnb3RvIGZpbmlzaDsK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL3RlbXBsYXRlIGIvc3JjcGtncy9mZm1wZWcvdGVt cGxhdGUKaW5kZXggNTk2OGEwOWIxZjEyZC4uNzUxYzI0MTI2YzIyZCAxMDA2NDQKLS0tIGEvc3Jj cGtncy9mZm1wZWcvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mZm1wZWcvdGVtcGxhdGUKQEAgLTEs MTUgKzEsMTUgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZmbXBlZycKICMgYXVkYWNpdHkgYWxz byBuZWVkcyB0byBiZSBidW1wZWQgd2hlbiBhIG5ldyBmZm1wZWcgdmVyc2lvbiBidW1wcyBsaWJh dmZvcm1hdCdzIHNvbmFtZSEKIHBrZ25hbWU9ZmZtcGVnCi12ZXJzaW9uPTQuNC40Ci1yZXZpc2lv bj01Cit2ZXJzaW9uPTYuMC4xCityZXZpc2lvbj0xCiBzaG9ydF9kZXNjPSJEZWNvZGluZywgZW5j b2RpbmcgYW5kIHN0cmVhbWluZyBzb2Z0d2FyZSIKIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBo YW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9 Imh0dHBzOi8vd3d3LmZmbXBlZy5vcmciCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vcmF3LmdpdGh1YnVz ZXJjb250ZW50LmNvbS9GRm1wZWcvRkZtcGVnL21hc3Rlci9DaGFuZ2Vsb2ciCiBkaXN0ZmlsZXM9 Imh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvcmVsZWFzZXMvZmZtcGVnLSR7dmVyc2lvbn0udGFyLnh6 IgotY2hlY2tzdW09ZTgwYjM4MGQ1OTVjODA5MDYwZjY2Zjk2YTVkODQ5NTExZWY0YTc2YTI2Yjc2 ZWFjZjU3NzhiOTRjMzU3MDMwOQorY2hlY2tzdW09OWIxNmI4NzMxZDc4ZTU5NmI0YmUwZDcyMDQy OGNhNDJkZjY0MmJiMmQ3ODM0Mjg4MWZmN2Y1YmMyOWZjOTYyMwogCiBob3N0bWFrZWRlcGVuZHM9 InBrZy1jb25maWcgcGVybCIKIG1ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGJ6aXAyLWRldmVsIGZy ZWV0eXBlLWRldmVsIGFsc2EtbGliLWRldmVsIGxpYlhmaXhlcy1kZXZlbApAQCAtMjYsMTIgKzI2 LDEzIEBAIG1ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGJ6aXAyLWRldmVsIGZyZWV0eXBlLWRldmVs IGFsc2EtbGliLWRldmVsIGxpYlhmaXhlcy1kZXZlCiAgJCh2b3B0X2lmIHdlYnAgbGlid2VicC1k ZXZlbCkgJCh2b3B0X2lmIHNvZmEgbGlibXlzb2ZhLWRldmVsKQogICQodm9wdF9pZiBkcm0gbGli ZHJtLWRldmVsKSAkKHZvcHRfaWYgc3Z0YXYxIGxpYnN2dC1hdjEtZGV2ZWwpCiAgJCh2b3B0X2lm IHNydCBzcnQtZGV2ZWwpICQodm9wdF9pZiByaXN0IGxpYnJpc3QtZGV2ZWwpCi0gJCh2b3B0X2lm IHZ1bGthbiAndnVsa2FuLWxvYWRlciBWdWxrYW4tSGVhZGVycycpCisgJCh2b3B0X2lmIHZ1bGth biAndnVsa2FuLWxvYWRlciBWdWxrYW4tSGVhZGVycyBWdWxrYW4tVG9vbHMgVnVsa2FuLVZhbGlk YXRpb25MYXllcnMnKQorICQodm9wdF9pZiBvbmV2cGwgJ29uZXZwbCBvbmV2cGwtZGV2ZWwnKQog ICQodm9wdF9pZiBudmVuYyBudi1jb2RlYy1oZWFkZXJzKSAkKHZvcHRfaWYgbnZkZWMgbnYtY29k ZWMtaGVhZGVycykiCiBkZXBlbmRzPSJmZnBsYXk+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCiAK IGJ1aWxkX29wdGlvbnM9IngyNjUgdjRsMiB2YWFwaSB2ZHBhdSB2cHggZmRrX2FhYyBhb20gbnZl bmMgc25kaW8gcHVsc2VhdWRpbwotIGRhdjFkIHppbWcgd2VicCBzb2ZhIHZ1bGthbiBkcm0gc3Z0 YXYxIHNydCByaXN0IG52ZGVjIgorIGRhdjFkIHppbWcgd2VicCBzb2ZhIHZ1bGthbiBkcm0gc3Z0 YXYxIHNydCByaXN0IG52ZGVjIG9uZXZwbCIKIGJ1aWxkX29wdGlvbnNfZGVmYXVsdD0ieDI2NSB2 NGwyIHZweCBhb20gc25kaW8gcHVsc2VhdWRpbyBkYXYxZCB3ZWJwIHZ1bGthbiBkcm0gc3J0IHJp c3QiCiBkZXNjX29wdGlvbl9zcnQ9IkVuYWJsZSBzdXBwb3J0IGZvciBTUlQgKFNlY3VyZSwgUmVs aWFibGUsIFRyYW5zcG9ydCkiCiBkZXNjX29wdGlvbl9yaXN0PSJFbmFibGUgc3VwcG9ydCBmb3Ig UklTVCAoUmVsaWFibGUgSW50ZXJuZXQgU3RyZWFtIFRyYW5zcG9ydCkiCkBAIC0zOSw5ICs0MCwx MyBAQCBkZXNjX29wdGlvbl9zb2ZhPSJFbmFibGUgc3VwcG9ydCBmb3IgQUVTIFNPRkEiCiBkZXNj X29wdGlvbl93ZWJwPSJFbmFibGUgc3VwcG9ydCBmb3IgV2ViUCIKIAogY2FzZSAiJFhCUFNfVEFS R0VUX01BQ0hJTkUiIGluCi0JaTY4Nip8eDg2XzY0KikKLQkJaG9zdG1ha2VkZXBlbmRzKz0iIG5h c20iCisJaTY4NiopCiAJCWJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSBudmVu YyBudmRlYyIKKwkJaG9zdG1ha2VkZXBlbmRzKz0iIG5hc20iCisJCTs7CisJeDg2XzY0KikKKwkJ aG9zdG1ha2VkZXBlbmRzKz0iIG5hc20iCisJCWJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFw aSB2ZHBhdSBudmVuYyBudmRlYyBvbmV2cGwiCiAJCTs7CiAJcHBjNjQqKSBidWlsZF9vcHRpb25z X2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUiOzsKIAltaXBzKikgQ0ZMQUdTPSItbW5hbj1sZWdhY3ki OzsKQEAgLTExNSwxOCArMTIwLDE5IEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAkJJCh2b3B0X2VuYWJs ZSB4MjY1IGxpYngyNjUpIFwKIAkJJCh2b3B0X2VuYWJsZSB2NGwyIGxpYnY0bDIpIFwKIAkJJCh2 b3B0X2VuYWJsZSBhb20gbGliYW9tKSAkKHZvcHRfZW5hYmxlIHZhYXBpKSAkKHZvcHRfZW5hYmxl IHZkcGF1KSBcCi0JCS0tZW5hYmxlLWxpYmJzMmIgLS1lbmFibGUtYXZyZXNhbXBsZSAtLWVuYWJs ZS1saWJ2aWRzdGFiIFwKKwkJLS1lbmFibGUtbGliYnMyYiAtLWVuYWJsZS1saWJ2aWRzdGFiIFwK IAkJJCh2b3B0X2VuYWJsZSBkYXYxZCBsaWJkYXYxZCkgXAogCQkkKHZvcHRfZW5hYmxlIHppbWcg bGliemltZykgXAogCQkkKHZvcHRfZW5hYmxlIHdlYnAgbGlid2VicCkgXAogCQkkKHZvcHRfZW5h YmxlIHNvZmEgbGlibXlzb2ZhKSBcCiAJCSQodm9wdF9lbmFibGUgdnVsa2FuKSBcCisJCSQodm9w dF9lbmFibGUgb25ldnBsIGxpYnZwbCkgXAogCQkkKHZvcHRfZW5hYmxlIGRybSBsaWJkcm0pIFwK IAkJJCh2b3B0X2VuYWJsZSBzdnRhdjEgbGlic3Z0YXYxKSBcCiAJCSQodm9wdF9lbmFibGUgc3J0 IGxpYnNydCkgXAogCQkkKHZvcHRfZW5hYmxlIHJpc3QgbGlicmlzdCkgXAotCQkkKHZvcHRfaWYg bnZlbmMgJy0tZW5hYmxlLW52ZW5jJykgXAotCQkkKHZvcHRfaWYgbnZkZWMgJy0tZW5hYmxlLW52 ZGVjJykKKwkJJCh2b3B0X2VuYWJsZSBudmVuYyBudmVuYykgXAorCQkkKHZvcHRfZW5hYmxlIG52 ZGVjIG52ZGVjKQogfQogCiBkb19idWlsZCgpIHsKQEAgLTE1MywxMCArMTU5LDggQEAgbGliYXZk ZXZpY2VfcGFja2FnZSgpIHsKIH0KIAogbGliYXZyZXNhbXBsZV9wYWNrYWdlKCkgewotCXNob3J0 X2Rlc2M9IkZGbXBlZyBhdWRpbyByZXNhbXBsaW5nIGxpYnJhcnkiCi0JcGtnX2luc3RhbGwoKSB7 Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmF2cmVzYW1wbGUuc28uKiIKLQl9CisJc2hvcnRfZGVzYz0i UGFja2FnZSBkZXByZWNhdGVkLCByZW1vdmFsIG5lZWRlZCIKKwlidWlsZF9zdHlsZT1tZXRhCiB9 CiAKIGxpYmF2Zm9ybWF0X3BhY2thZ2UoKSB7CkBAIC0yMTAsMTUgKzIxNCwxMyBAQCBmZm1wZWct ZGV2ZWxfcGFja2FnZSgpIHsKIAkJbGliYXZmaWx0ZXI+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0K IAkJbGlicG9zdHByb2M+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KIAkJbGlic3dzY2FsZT49JHt2 ZXJzaW9ufV8ke3JldmlzaW9ufQotCQlsaWJzd3Jlc2FtcGxlPj0ke3ZlcnNpb259XyR7cmV2aXNp b259Ci0JCWxpYmF2cmVzYW1wbGU+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJCWxpYnN3cmVz YW1wbGU+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCiAJc2hvcnRfZGVzYys9IiAtIGRldmVsb3Bt ZW50IGZpbGVzIgotCisJY29uZmxpY3RzPSJmZm1wZWc0LWRldmVsIgogCWlmIFsgIiRYQlBTX1RB UkdFVF9NQUNISU5FIiA9ICJpNjg2IiBdOyB0aGVuCiAJCSMgL3Vzci9iaW4vc3RyaXA6IGVycm9y OiB0aGUgaW5wdXQgZmlsZSAnL2Rlc3RkaXIvL2ZmbXBlZy1kZXZlbC00LjQuNC91c3IvbGliL2xp YmF2ZmlsdGVyLmEodmZfYXRhZGVub2lzZS5vKScgaGFzIG5vIHNlY3Rpb25zCiAJCW5vc3RyaXBf ZmlsZXM9Ii91c3IvbGliL2xpYmF2ZmlsdGVyLmEiCiAJZmkKLQogCXBrZ19pbnN0YWxsKCkgewog CQl2bW92ZSB1c3IvaW5jbHVkZQogCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZwoKRnJvbSAxZGE5 M2FhZmJlNDlmZTQzZDVlY2JhYWI5MWNiNWFmNDYzMjZkNWVjIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDE1IE9jdCAy MDIzIDIxOjE4OjE0IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDIvMTE1XSBvcGVuc2hvdDogcmV2 YnVtcCBmb3IgZmZtcGVnNi4wCgotLS0KIHNyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL29wZW5zaG90L3RlbXBsYXRlIGIvc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0 ZQppbmRleCA4ZjQ3ODUxZWVmMzU0Li5hZmZiNjUyYTlkNTAwIDEwMDY0NAotLS0gYS9zcmNwa2dz L29wZW5zaG90L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVuc2hvdCcKIHBrZ25hbWU9b3BlbnNo b3QKIHZlcnNpb249My4wLjAKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPXB5 dGhvbjMtbW9kdWxlCiBob3N0bWFrZWRlcGVuZHM9InB5dGhvbjMgcHl0aG9uMy1zZXR1cHRvb2xz IgogbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBweXRob24zLVB5UXQ1IgoKRnJvbSBjYjI5MWM3 OTIyNzMwMzUxZjJkZmZmMmE4MTlmYTY3OWU4NWE2OGFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDE1IE9jdCAyMDIz IDIxOjE4OjM2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDMvMTE1XSBzdW1vOiByZXZidW1wIGZv ciBmZm1wZWc2LjAKCi0tLQogc3JjcGtncy9zdW1vL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9zdW1vL3RlbXBsYXRlIGIvc3JjcGtncy9zdW1vL3RlbXBsYXRlCmluZGV4IGEzZmUxMzRhYTVh Y2MuLmE3MzBhZmE5ZmFmYTkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3N1bW8vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdzdW1vJwogcGtnbmFtZT1zdW1vCiB2ZXJzaW9uPTEuMTIuMAotcmV2aXNpb249NgorcmV2 aXNpb249NwogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0ibGliZ2RhbC10b29s cyBwa2ctY29uZmlnIHN3aWcgcHl0aG9uMy1zZXR1cHRvb2xzIgogbWFrZWRlcGVuZHM9InB5dGhv bjMtZGV2ZWwgZmZtcGVnLWRldmVsIGZveC1kZXZlbCBnbDJwcy1kZXZlbCBsaWJnZGFsLWRldmVs CgpGcm9tIDM2NmJjYzljZGQ3NGFiNDU5N2M2ODRlYzJmNTVhNDU3Y2QzYzQ3NWEgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMTk6NTY6MjIgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNC8xMTVdIE5l dyBwYWNrYWdlOiBmZm1wZWc0LTQuNC40LgoKLS0tCiBzcmNwa2dzL2ZmbXBlZzQtZGV2ZWwgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9mZm1wZWc0L2ZpbGVzL2FsdGl2 ZWMucGF0Y2ggICAgICAgICAgIHwgIDYwICsrKysrCiAuLi4vcGF0Y2hlcy9hcm12NXRlbC1mbG9h dGluZy1wb2ludC5wYXRjaCAgICAgfCAgMTggKysKIC4uLmgtbGliYXZjb2RlYy1saWJzdnRhdjEt dGVuX2JpdF9mb3JtYXQuZGlmZiB8ICA0MCArKysKIC4uLi93b3JrYXJvdW5kLW1lc2EtcmVhZGVv bi12YWFwaS1idWcucGF0Y2ggICB8ICAyOCArKwogc3JjcGtncy9mZm1wZWc0L3RlbXBsYXRlICAg ICAgICAgICAgICAgICAgICAgIHwgMjQwICsrKysrKysrKysrKysrKysrKwogc3JjcGtncy9saWJh dmNvZGVjNCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZk ZXZpY2U0ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2Zmls dGVyNCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJhdmZvcm1h dDQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZyZXNhbXBs ZTQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2dXRpbDQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJwb3N0cHJvYzQgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGlic3dyZXNhbXBsZTQgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYnN3c2NhbGU0ICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogMTUgZmlsZXMgY2hhbmdlZCwgMzk2IGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2ZmbXBlZzQtZGV2ZWwKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZzQvZmlsZXMvYWx0aXZlYy5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5nLXBvaW50 LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvcGF0Y2gt bGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBp LWJ1Zy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZQog Y3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZjb2RlYzQKIGNyZWF0ZSBtb2RlIDEyMDAw MCBzcmNwa2dzL2xpYmF2ZGV2aWNlNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZm aWx0ZXI0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdmZvcm1hdDQKIGNyZWF0ZSBt b2RlIDEyMDAwMCBzcmNwa2dzL2xpYmF2cmVzYW1wbGU0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3Jj cGtncy9saWJhdnV0aWw0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJwb3N0cHJvYzQK IGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYnN3cmVzYW1wbGU0CiBjcmVhdGUgbW9kZSAx MjAwMDAgc3JjcGtncy9saWJzd3NjYWxlNAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC1k ZXZlbCBiL3NyY3BrZ3MvZmZtcGVnNC1kZXZlbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAw MDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9m Zm1wZWc0LWRldmVsCkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvZmlsZXMvYWx0aXZlYy5wYXRjaCBi L3NyY3BrZ3MvZmZtcGVnNC9maWxlcy9hbHRpdmVjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMDAuLjljNTcyMDA0NjMzMjAKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL2ZmbXBlZzQvZmlsZXMvYWx0aXZlYy5wYXRjaApAQCAtMCwwICsxLDYwIEBACityZXZl cnQgc29tZSBhbHRpdmVjIHNwZWNpZmljIGNoYW5nZSBvbiBhbGwgcHBjKiBleGNlcHQgcHBjNjRs ZSoKKworcTY2OiAiV2Ugc2hvdWxkIGFsc28gdGhyb3cgaW4gYSByZXZlcnQgb2YgRkZtcGVnL0ZG bXBlZ0AzYTU1N2M1IGJ1dCBvbmx5Citjb25kaXRpb25hbGx5LCBmb3IgcHBjKiBidXQgbm90IHBw YzY0bGUqICh0aGUgbmV3IGNvZGUgaXMgdmFsaWQgZm9yCitQT1dFUjggVlNYIHdoaWNoIExFIHRh cmdldHMgYXMgYSBiYXNlbGluZSBidXQgbm90IEJFKSIKKworCitUaGlzIHJldmVydHMgY29tbWl0 IDNhNTU3YzVkODhiN2IxNWI1OTU0YmEyNzQzZmViYjA1NTU0OWI1MzYuCistLS0KKyBsaWJzd3Nj YWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrLS0tLQor IDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZm IC0tZ2l0IGEvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMgYi9saWJzd3NjYWxlL3Bw Yy95dXYycmdiX2FsdGl2ZWMuYworaW5kZXggNTM2NTQ1MjkzZC4uYzFlMjg1MmFkYiAxMDA2NDQK Ky0tLSBhL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jCisrKysgYi9saWJzd3NjYWxl L3BwYy95dXYycmdiX2FsdGl2ZWMuYworQEAgLTMwNSw2ICszMDUsOSBAQCBzdGF0aWMgaW50IGFs dGl2ZWNfICMjIG5hbWUoU3dzQ29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgY2hhciAqKmluLCAg ICAgICAgICBcCisgICAgIHZlY3RvciBzaWduZWQgc2hvcnQgUjEsIEcxLCBCMTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICB2ZWN0b3IgdW5zaWduZWQg Y2hhciBSLCBHLCBCOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBj aGFyICp5MWl2UCwgKnkyaXZQLCAqdWl2UCwgKnZpdlA7ICAgICAgICAgICAgICAgICAgXAorKyAg ICB2ZWN0b3IgdW5zaWduZWQgY2hhciBhbGlnbl9wZXJtOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIHZlY3Rv ciBzaWduZWQgc2hvcnQgbENZICAgICAgID0gYy0+Q1k7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxPWSAgICAgICA9IGMtPk9Z OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgdmVjdG9yIHNpZ25l ZCBzaG9ydCBsQ1JWICAgICAgPSBjLT5DUlY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCitAQCAtMzM1LDEzICszMzgsMjYgQEAgc3RhdGljIGludCBhbHRpdmVjXyAjIyBuYW1l KFN3c0NvbnRleHQgKmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAgICAgXAorICAg ICAgICAgdmVjX2RzdHN0KG91dGUsICgweDAyMDAwMDAyIHwgKCgodyAqIDMgKyAzMikgLyAzMikg PDwgMTYpKSwgMSk7ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICBm b3IgKGogPSAwOyBqIDwgdyAvIDE2OyBqKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorLSAgICAgICAgICAgIHkwID0gdmVjX3hsKDAsIHkxaSk7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB5MWl2 UCA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB5MWk7ICAgICAgICAgICAgICAgICAg ICAgICBcCisrICAgICAgICAgICAgeTJpdlAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIg KikgeTJpOyAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHVpdlAgID0gKGNv bnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHVpOyAgICAgICAgICAgICAgICAgICAgICAgIFwK KysgICAgICAgICAgICB2aXZQICA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB2aTsg ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAg ICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB5MWkpOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB5MCA9ICh2ZWN0b3IgdW5zaWduZWQgY2hh cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAg ICAgICAgICAgdmVjX3Blcm0oeTFpdlBbMF0sIHkxaXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAg ICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICB5MSA9IHZl Y194bCgwLCB5MmkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisrICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHkyaSk7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHkxID0gKHZlY3RvciB1 bnNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysg ICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh5Mml2UFswXSwgeTJpdlBbMV0sIGFsaWduX3Bl cm0pOyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAg ICAgIHUgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdWkpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKysgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgdWkp OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgdSA9 ICh2ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgdmVjX3Blcm0odWl2UFswXSwgdWl2UFsxXSwg YWxpZ25fcGVybSk7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CistICAgICAgICAgICAgdiA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpIHZlY194bCgwLCB2aSk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNf bHZzbCgwLCB2aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAg ICAgICAgICB2ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh2aXZQWzBd LCB2aXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAg ICB2ZWNfc3ViKHUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorLS0gCisyLjI3LjAKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMv YXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAwLi45YTU1MTc4Yzc0ZjBmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9m Zm1wZWc0L3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2gKQEAgLTAsMCArMSwx OCBAQAorLS0tIGEvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTEwLTI2IDIxOjAzOjAz LjAwMDAwMDAwMCArMDIwMAorKysrIGIvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTEx LTIxIDExOjA2OjQ5LjYwMjI4NDQyMiArMDEwMAorQEAgLTM5LDYgKzM5LDE1IEBACisgI2VuZGlm CisgI2luY2x1ZGUgPGZlbnYuaD4KKyAKKysjaWYgKEZFX0FMTF9FWENFUFQgPT0gMCkKKysvKiBF LmcuIEFSTSBzb2Z0IGZsb2F0IGRvZXMgbm90IGRlZmluZSB0aGVzZSAqLworKyNkZWZpbmUgRkVf SU5WQUxJRCAgICAwCisrI2RlZmluZSBGRV9ESVZCWVpFUk8gIDAKKysjZGVmaW5lIEZFX09WRVJG TE9XICAgMAorKyNkZWZpbmUgRkVfVU5ERVJGTE9XICAwCisrI2RlZmluZSBGRV9JTkVYQUNUICAg IDAKKysjZW5kaWYKKysKKyAjaWYgQ09ORklHX0xJQkZPTlRDT05GSUcKKyAjaW5jbHVkZSA8Zm9u dGNvbmZpZy9mb250Y29uZmlnLmg+CisgI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBl ZzQvcGF0Y2hlcy9wYXRjaC1saWJhdmNvZGVjLWxpYnN2dGF2MS10ZW5fYml0X2Zvcm1hdC5kaWZm IGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVu X2JpdF9mb3JtYXQuZGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw Li5hYTk0OGY3YThhMmRmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNo ZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgpAQCAtMCww ICsxLDQwIEBACisjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMg RnJvbSAwMzFmMTU2MWNkMjg2NTk2Y2RiMzc0ZGEzMmY4YWE4MTZjZTNiMTM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQorIyBGcm9tOiBDaHJpc3RvcGhlciBEZWdhd2EgPGNocmlzdG9waGVyLmRl Z2F3YUBpbnRlbC5jb20+CisjIERhdGU6IFRodSwgMjAgT2N0IDIwMjIgMjI6NTU6MjcgLTA1MDAK KyMgU3ViamVjdDogW1BBVENIXSBhdmNvZGVjL2xpYnN2dGF2MTogcmVtb3ZlIGNvbXByZXNzZWRf dGVuX2JpdF9mb3JtYXQgYW5kIHNpbXBsaWZ5IGFsbG9jX2J1ZmZlcgorIworIyBjb21wcmVzc2Vk X3Rlbl9iaXRfZm9ybWF0IGhhcyBiZWVuIGRlcHJlY2F0ZWQgdXBzdHJlYW0gYW5kIGhhcyBubyBl ZmZlY3QKKyMgYW5kIGNhbiBiZSByZW1vdmVkLiBQbHVzLCB0ZWNobmljYWxseSBpdCB3YXMgbmV2 ZXIgdXNlZCBpbiB0aGUgZmlyc3QgcGxhY2UKKyMgc2luY2UgaXQgd291bGQgcmVxdWlyZSB0aGUg YXBwIChmZm1wZWcpIHRvIHNldCBpdCBhbmQgZG8gYWRkaXRpb25hbAorIyBwcm9jZXNzaW5nIG9m IHRoZSBpbnB1dCBmcmFtZXMuCisjCisjIEFsc28gc2ltcGxpZnkgYWxsb2NfYnVmZmVyIGJ5IHJl bW92aW5nIGNhbGN1bGF0aW9ucyByZWxhdGluZyB0byB0aGUgbm9uLWV4aXN0YW50IHByb2Nlc3Np bmcuCisjCisjIFNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIERlZ2F3YSA8Y2hyaXN0b3BoZXIu ZGVnYXdhQGludGVsLmNvbT4KKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGEvbGliYXZjb2RlYy9saWJzdnRhdjEuYworKysrIGIvbGliYXZjb2RlYy9saWJz dnRhdjEuYworQEAgLTEyNCwxNiArMTI0LDEyIEBAIHN0YXRpYyBpbnQgc3Z0X3ByaW50X2Vycm9y KHZvaWQgKmxvZ19jdHgsIEViRXJyb3JUeXBlIGVyciwKKyAKKyBzdGF0aWMgaW50IGFsbG9jX2J1 ZmZlcihFYlN2dEF2MUVuY0NvbmZpZ3VyYXRpb24gKmNvbmZpZywgU3Z0Q29udGV4dCAqc3Z0X2Vu YykKKyB7CistICAgIGNvbnN0IGludCAgICBwYWNrX21vZGVfMTBiaXQgPQorLSAgICAgICAgKGNv bmZpZy0+ZW5jb2Rlcl9iaXRfZGVwdGggPiA4KSAmJiAoY29uZmlnLT5jb21wcmVzc2VkX3Rlbl9i aXRfZm9ybWF0ID09IDApID8gMSA6IDA7CistICAgIGNvbnN0IHNpemVfdCBsdW1hX3NpemVfOGJp dCAgPQorLSAgICAgICAgY29uZmlnLT5zb3VyY2Vfd2lkdGggKiBjb25maWctPnNvdXJjZV9oZWln aHQgKiAoMSA8PCBwYWNrX21vZGVfMTBiaXQpOworLSAgICBjb25zdCBzaXplX3QgbHVtYV9zaXpl XzEwYml0ID0KKy0gICAgICAgIChjb25maWctPmVuY29kZXJfYml0X2RlcHRoID4gOCAmJiBwYWNr X21vZGVfMTBiaXQgPT0gMCkgPyBsdW1hX3NpemVfOGJpdCA6IDA7CisrICAgIGNvbnN0IHNpemVf dCBsdW1hX3NpemUgPSBjb25maWctPnNvdXJjZV93aWR0aCAqIGNvbmZpZy0+c291cmNlX2hlaWdo dCAqCisrICAgICAgICAoY29uZmlnLT5lbmNvZGVyX2JpdF9kZXB0aCA+IDggPyAyIDogMSk7Cisg CisgICAgIEViU3Z0SU9Gb3JtYXQgKmluX2RhdGE7CisgCistICAgIHN2dF9lbmMtPnJhd19zaXpl ID0gKGx1bWFfc2l6ZV84Yml0ICsgbHVtYV9zaXplXzEwYml0KSAqIDMgLyAyOworKyAgICBzdnRf ZW5jLT5yYXdfc2l6ZSA9IGx1bWFfc2l6ZSAqIDMgLyAyOworIAorICAgICAvLyBhbGxvY2F0ZSBi dWZmZXIgZm9yIGluIGFuZCBvdXQKKyAgICAgc3Z0X2VuYy0+aW5fYnVmICAgICAgICAgICA9IGF2 X21hbGxvY3ooc2l6ZW9mKCpzdnRfZW5jLT5pbl9idWYpKTsKKy0tIAorR2l0TGFiCisKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZh YXBpLWJ1Zy5wYXRjaCBiL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1y ZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAwLi4wMGUzZjY4YTQxNWI4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0 L3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNoCkBAIC0wLDAg KzEsMjggQEAKK0Zyb20gODExZDI5MDg0NDIwNmZjNzNkYzM5YzNlNWI2N2Q1ZDg5NWJhZWRmOCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJhaW5lciBIb2NoZWNrZXIgPGZlcm5ldG1l bnRhQG9ubGluZS5kZT4KK0RhdGU6IFNhdCwgMjYgSmFuIDIwMTkgMTk6NDg6MzUgKzAxMDAKK1N1 YmplY3Q6IFtQQVRDSF0gYXZjb2RlYy92YWFwaV9oMjY0OiBza2lwIGRlY29kZSBpZiBwaWMgaGFz IG5vIHNsaWNlcworCitUaGlzIGZpeGVzIC8gd29ya2Fyb3VuZHMgaHR0cHM6Ly9idWdzLmZyZWVk ZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1MzY4LgorSXQgd2FzIGhpdCBmcmVxdWVudGx5 IHdoZW4gd2F0Y2hpbmcgaDI2NCBjaGFubmVscyByZWNlaXZlZCB2aWEgRFZCLVguCitDb3JyZXNw b25kaW5nIGtvZGkgYnVnOiBodHRwczovL2dpdGh1Yi5jb20veGJtYy94Ym1jL2lzc3Vlcy8xNTcw NAorLS0tCisgbGliYXZjb2RlYy92YWFwaV9oMjY0LmMgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5n ZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9oMjY0 LmMgYi9saWJhdmNvZGVjL3ZhYXBpX2gyNjQuYworaW5kZXggNTg1NDU4N2EyNTUuLmYxMmZkYzQ1 N2E0IDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMKKysrKyBiL2xpYmF2Y29k ZWMvdmFhcGlfaDI2NC5jCitAQCAtMzE3LDYgKzMxNywxMSBAQCBzdGF0aWMgaW50IHZhYXBpX2gy NjRfZW5kX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKKyAgICAgSDI2NFNsaWNlQ29udGV4 dCAqc2wgPSAmaC0+c2xpY2VfY3R4WzBdOworICAgICBpbnQgcmV0OworIAorKyAgICBpZiAocGlj LT5uYl9zbGljZXMgPT0gMCkgeworKyAgICAgICAgcmV0ID0gQVZFUlJPUl9JTlZBTElEREFUQTsK KysgICAgICAgIGdvdG8gZmluaXNoOworKyAgICB9CisrCisgICAgIHJldCA9IGZmX3ZhYXBpX2Rl Y29kZV9pc3N1ZShhdmN0eCwgcGljKTsKKyAgICAgaWYgKHJldCA8IDApCisgICAgICAgICBnb3Rv IGZpbmlzaDsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZSBiL3NyY3BrZ3Mv ZmZtcGVnNC90ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw Li5mMmM4NTE2OTNkMzY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L3RlbXBs YXRlCkBAIC0wLDAgKzEsMjQwIEBACisjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWc0JworIyBh dWRhY2l0eSBhbHNvIG5lZWRzIHRvIGJlIGJ1bXBlZCB3aGVuIGEgbmV3IGZmbXBlZyB2ZXJzaW9u IGJ1bXBzIGxpYmF2Zm9ybWF0J3Mgc29uYW1lIQorcGtnbmFtZT1mZm1wZWc0Cit2ZXJzaW9uPTQu NC40CityZXZpc2lvbj0xCitzaG9ydF9kZXNjPSJEZWNvZGluZywgZW5jb2RpbmcgYW5kIHN0cmVh bWluZyBzb2Z0d2FyZSAtIGZmbXBlZzQgbGlicmFyaWVzIG9ubHkiCittYWludGFpbmVyPSJPcnBo YW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgorbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIK K2hvbWVwYWdlPSJodHRwczovL3d3dy5mZm1wZWcub3JnIgorY2hhbmdlbG9nPSJodHRwczovL3Jh dy5naXRodWJ1c2VyY29udGVudC5jb20vRkZtcGVnL0ZGbXBlZy9tYXN0ZXIvQ2hhbmdlbG9nIgor ZGlzdGZpbGVzPSJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2VzL2ZmbXBlZy0ke3ZlcnNp b259LnRhci54eiIKK2NoZWNrc3VtPWU4MGIzODBkNTk1YzgwOTA2MGY2NmY5NmE1ZDg0OTUxMWVm NGE3NmEyNmI3NmVhY2Y1Nzc4Yjk0YzM1NzAzMDkKKworaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29u ZmlnIHBlcmwiCittYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBiemlwMi1kZXZlbCBmcmVldHlwZS1k ZXZlbCBhbHNhLWxpYi1kZXZlbCBsaWJYZml4ZXMtZGV2ZWwKKyBsaWJYZXh0LWRldmVsIGxpYlh2 TUMtZGV2ZWwgbGlieGNiLWRldmVsIGxhbWUtZGV2ZWwgbGlidGhlb3JhLWRldmVsCisgbGlidm9y YmlzLWRldmVsIHgyNjQtZGV2ZWwgeHZpZGNvcmUtZGV2ZWwgamFjay1kZXZlbCBTREwyLWRldmVs CisgbGliY2Rpby1wYXJhbm9pYS1kZXZlbCBsaWJydG1wLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwg Z251dGxzLWRldmVsCisgc3BlZXgtZGV2ZWwgY2VsdC1kZXZlbCBoYXJmYnV6ei1kZXZlbCBsaWJh c3MtZGV2ZWwgb3B1cy1kZXZlbCBvY2wtaWNkLWRldmVsCisgbGliYnMyYi1kZXZlbCBsaWJ2aWRz dGFiLWRldmVsIHZtYWYtZGV2ZWwgJCh2b3B0X2lmIHB1bHNlYXVkaW8gcHVsc2VhdWRpby1kZXZl bCkKKyAkKHZvcHRfaWYgdmFhcGkgbGlidmEtZGV2ZWwpICQodm9wdF9pZiB2ZHBhdSBsaWJ2ZHBh dS1kZXZlbCkKKyAkKHZvcHRfaWYgeDI2NSB4MjY1LWRldmVsKSAkKHZvcHRfaWYgdjRsMiB2NGwt dXRpbHMtZGV2ZWwpCisgJCh2b3B0X2lmIGZka19hYWMgZmRrLWFhYy1kZXZlbCkgJCh2b3B0X2lm IHZweCBsaWJ2cHgtZGV2ZWwpCisgJCh2b3B0X2lmIGFvbSBsaWJhb20tZGV2ZWwpICQodm9wdF9p ZiBzbmRpbyBzbmRpby1kZXZlbCkKKyAkKHZvcHRfaWYgZGF2MWQgbGliZGF2MWQtZGV2ZWwpICQo dm9wdF9pZiB6aW1nIHppbWctZGV2ZWwpCisgJCh2b3B0X2lmIHdlYnAgbGlid2VicC1kZXZlbCkg JCh2b3B0X2lmIHNvZmEgbGlibXlzb2ZhLWRldmVsKQorICQodm9wdF9pZiBkcm0gbGliZHJtLWRl dmVsKSAkKHZvcHRfaWYgc3Z0YXYxIGxpYnN2dC1hdjEtZGV2ZWwpCisgJCh2b3B0X2lmIHNydCBz cnQtZGV2ZWwpICQodm9wdF9pZiByaXN0IGxpYnJpc3QtZGV2ZWwpCisgJCh2b3B0X2lmIHZ1bGth biAndnVsa2FuLWxvYWRlciBWdWxrYW4tSGVhZGVycycpCisgJCh2b3B0X2lmIG1meCAnbGlibWZ4 IGxpYm1meC1kZXZlbCcpCisgJCh2b3B0X2lmIG52ZW5jIG52LWNvZGVjLWhlYWRlcnMpICQodm9w dF9pZiBudmRlYyBudi1jb2RlYy1oZWFkZXJzKSIKKworYnVpbGRfb3B0aW9ucz0ieDI2NSB2NGwy IHZhYXBpIHZkcGF1IHZweCBmZGtfYWFjIGFvbSBudmVuYyBzbmRpbyBwdWxzZWF1ZGlvCisgZGF2 MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEgc3J0IHJpc3QgbnZkZWMgbWZ4Igor YnVpbGRfb3B0aW9uc19kZWZhdWx0PSJ4MjY1IHY0bDIgdnB4IGFvbSBzbmRpbyBwdWxzZWF1ZGlv IGRhdjFkIHdlYnAgdnVsa2FuIGRybSBzcnQgcmlzdCIKKworZGVzY19vcHRpb25fc3J0PSJFbmFi bGUgc3VwcG9ydCBmb3IgU1JUIChTZWN1cmUsIFJlbGlhYmxlLCBUcmFuc3BvcnQpIgorZGVzY19v cHRpb25fcmlzdD0iRW5hYmxlIHN1cHBvcnQgZm9yIFJJU1QgKFJlbGlhYmxlIEludGVybmV0IFN0 cmVhbSBUcmFuc3BvcnQpIgorZGVzY19vcHRpb25fc29mYT0iRW5hYmxlIHN1cHBvcnQgZm9yIEFF UyBTT0ZBIgorZGVzY19vcHRpb25fd2VicD0iRW5hYmxlIHN1cHBvcnQgZm9yIFdlYlAiCisKK2Nh c2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCWk2ODYqKQorCQkJaG9zdG1ha2VkZXBlbmRz Kz0iIG5hc20iCisJCQlidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUgbnZlbmMg bnZkZWMiCisJCQk7OworCXg4Nl82NCopCisJCQlob3N0bWFrZWRlcGVuZHMrPSIgbmFzbSIKKwkJ CWJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSBtZnggbnZlbmMgbnZkZWMiCisJ CQk7OworCXBwYzY0KikgYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1Ijs7CisJ bWlwcyopIENGTEFHUz0iLW1uYW49bGVnYWN5Ijs7Citlc2FjCisKK2lmIFsgIiRYQlBTX1RBUkdF VF9XT1JEU0laRSIgIT0gIjMyIiBdOyB0aGVuCisJYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHN2 dGF2MSIKK2ZpCisKK2lmIFsgIiRYQlBTX1RBUkdFVF9OT19BVE9NSUM4IiBdOyB0aGVuCisJbWFr ZWRlcGVuZHMrPSIgbGliYXRvbWljLWRldmVsIgorZmkKKworX2FwcGx5X3BhdGNoKCkgeworCWxv Y2FsIGFyZ3M9IiQxIiBwbmFtZT0iJChiYXNlbmFtZSAkMikiCisKKwlpZiBbICEgLWYgIi4ke3Bu YW1lfV9kb25lIiBdOyB0aGVuCisJCXBhdGNoIC1OICRhcmdzIC1pICQyCisJCXRvdWNoIC4ke3Bu YW1lfV9kb25lCisJZmkKK30KKworcG9zdF9wYXRjaCgpIHsKKwljYXNlICIkWEJQU19UQVJHRVRf TUFDSElORSIgaW4KKwkJcHBjNjRsZSopIDs7CisJCXBwYyopIF9hcHBseV9wYXRjaCAtcDEgJHtG SUxFU0RJUn0vYWx0aXZlYy5wYXRjaCA7OworCWVzYWMKKworCXZzZWQgLWkgbGliYXZmaWx0ZXIv dmZfbGlidm1hZi5jIC1lICdzIS91c3IvbG9jYWwvc2hhcmUvbW9kZWwvXCh2bWFmX3YwLjYuMVwp LnBrbCEvdXNyL3NoYXJlL3ZtYWYvXDEuanNvbiEnCit9CisKK2RvX2NvbmZpZ3VyZSgpIHsKKwkj IEZpeCBnY2Mgb24geDg2XzY0LW11c2wgb25seQorCWlmIFsgIiRYQlBTX1RBUkdFVF9NQUNISU5F IiA9ICJ4ODZfNjQtbXVzbCIgXTsgdGhlbgorCQl2c2VkIC1pIGNvbmZpZ3VyZSAtZSAicztfY2Zs YWdzX3NwZWVkPSctTzMnO19jZmxhZ3Nfc3BlZWQ9Jy1PMic7IgorCWZpCisKKwlpZiBbICIkQ1JP U1NfQlVJTEQiIF07IHRoZW4KKwkJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCQlh cm0qKSBfYXJjaD0iYXJtIjs7CisJCQlhYXJjaDY0KikgX2FyY2g9ImFhcmNoNjQiOzsKKwkJCW1p cHMqKSBfYXJjaD0ibWlwcyI7OworCQkJcHBjNjQqKSBfYXJjaD0icHBjNjQiOzsKKwkJCXBwYyop IF9hcmNoPSJwcGMiOzsKKwkJCSopIF9hcmNoPSIke1hCUFNfVEFSR0VUX01BQ0hJTkUlJS1tdXNs fSI7OworCQllc2FjCisKKwkJX2FyZ3MrPSIgLS1lbmFibGUtY3Jvc3MtY29tcGlsZQorCQkJLS1z eXNyb290PSRYQlBTX0NST1NTX0JBU0UKKwkJCS0tY3Jvc3MtcHJlZml4PSR7WEJQU19DUk9TU19U UklQTEVUfS0KKwkJCS0tdGFyZ2V0LW9zPWxpbnV4IC0tYXJjaD0ke19hcmNofSIKKwlmaQorCisJ Y2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCXBwY3xwcGMtbXVzbCkgX2FyZ3MrPSIg LS1kaXNhYmxlLWFsdGl2ZWMiOzsKKwllc2FjCisKKwlpZiBbICIkWEJQU19UQVJHRVRfTk9fQVRP TUlDOCIgXTsgdGhlbgorCQlfYXJncys9IiAtLWV4dHJhLWxpYnM9LWxhdG9taWMiCisJZmkKKwor CS4vY29uZmlndXJlIC0tcHJlZml4PS91c3IgLS1kaXNhYmxlLWRlYnVnIC0tZW5hYmxlLWdwbCAt LWVuYWJsZS1nbnV0bHMgXAorCQktLWRpc2FibGUtc3RyaXBwaW5nIFwKKwkJLS1lbmFibGUtbGli Y2RpbyAtLWVuYWJsZS12ZXJzaW9uMyAtLWVuYWJsZS1ydW50aW1lLWNwdWRldGVjdCBcCisJCS0t ZW5hYmxlLWxpYm1wM2xhbWUgLS1lbmFibGUtbGlidm9yYmlzIC0tZW5hYmxlLWxpYnh2aWQgXAor CQktLWVuYWJsZS1saWJ4MjY0ICQodm9wdF9lbmFibGUgdnB4IGxpYnZweCkgLS1lbmFibGUtbGli dGhlb3JhIFwKKwkJLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLXN0YXRpYyAtLWVuYWJsZS1saWJ4 Y2IgXAorCQkkKHZvcHRfZW5hYmxlIHB1bHNlYXVkaW8gbGlicHVsc2UpIC0tZW5hYmxlLWxpYmZy ZWV0eXBlIC0tZW5hYmxlLWxpYm1vZHBsdWcgXAorCQktLWVuYWJsZS1saWJzcGVleCAtLWVuYWJs ZS1saWJjZWx0IC0tZW5hYmxlLWxpYmFzcyBcCisJCS0tZW5hYmxlLWxpYm9wdXMgLS1lbmFibGUt bGlicnRtcCAtLWVuYWJsZS1saWJqYWNrIFwKKwkJJCh2b3B0X2lmIGZka19hYWMgJy0tZW5hYmxl LW5vbmZyZWUgLS1lbmFibGUtbGliZmRrLWFhYycpIFwKKwkJLS1kaXNhYmxlLWxpYm9wZW5jb3Jl X2Ftcm5iIC0tZGlzYWJsZS1saWJvcGVuY29yZV9hbXJ3YiBcCisJCS0tZGlzYWJsZS1saWJvcGVu anBlZyBcCisJCS0tZW5hYmxlLXBvc3Rwcm9jIC0tZW5hYmxlLW9wZW5jbCAke19hcmdzfSAtLWVu YWJsZS1saWJ2bWFmICR7X2FyZ3N9IFwKKwkJJCh2b3B0X2VuYWJsZSB4MjY1IGxpYngyNjUpIFwK KwkJJCh2b3B0X2VuYWJsZSB2NGwyIGxpYnY0bDIpIFwKKwkJJCh2b3B0X2VuYWJsZSBhb20gbGli YW9tKSAkKHZvcHRfZW5hYmxlIHZhYXBpKSAkKHZvcHRfZW5hYmxlIHZkcGF1KSBcCisJCS0tZW5h YmxlLWxpYmJzMmIgLS1lbmFibGUtYXZyZXNhbXBsZSAtLWVuYWJsZS1saWJ2aWRzdGFiIFwKKwkJ JCh2b3B0X2VuYWJsZSBkYXYxZCBsaWJkYXYxZCkgXAorCQkkKHZvcHRfZW5hYmxlIHppbWcgbGli emltZykgXAorCQkkKHZvcHRfZW5hYmxlIHdlYnAgbGlid2VicCkgXAorCQkkKHZvcHRfZW5hYmxl IHNvZmEgbGlibXlzb2ZhKSBcCisJCSQodm9wdF9lbmFibGUgdnVsa2FuKSBcCisJCSQodm9wdF9l bmFibGUgZHJtIGxpYmRybSkgXAorCQkkKHZvcHRfZW5hYmxlIHN2dGF2MSBsaWJzdnRhdjEpIFwK KwkJJCh2b3B0X2VuYWJsZSBzcnQgbGlic3J0KSBcCisJCSQodm9wdF9lbmFibGUgcmlzdCBsaWJy aXN0KSBcCisJCSQodm9wdF9lbmFibGUgbWZ4IGxpYm1meCkgXAorCQkkKHZvcHRfaWYgbnZlbmMg Jy0tZW5hYmxlLW52ZW5jJykgXAorCQkkKHZvcHRfaWYgbnZkZWMgJy0tZW5hYmxlLW52ZGVjJykK K30KKworZG9fYnVpbGQoKSB7CisJbWFrZSAke21ha2Vqb2JzfQorCW1ha2UgZG9jL2Zme21wZWcs cGxheX0uMQorfQorCitkb19pbnN0YWxsKCkgeworCW1ha2UgREVTVERJUj0ke0RFU1RESVJ9IGlu c3RhbGwgaW5zdGFsbC1tYW4KKwlybSAtcmYgJHtERVNURElSfS91c3IvYmluCit9CisKK2xpYmF2 Y29kZWM0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGNvZGVjIGxpYnJhcnkiCisJ cGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2Y29kZWMuc28uKiIKKwl9Cit9 CisKK2xpYmF2ZGV2aWNlNF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyBkZXZpY2Ug aGFuZGxpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGli YXZkZXZpY2Uuc28uKiIKKwl9Cit9CisKK2xpYmF2cmVzYW1wbGU0X3BhY2thZ2UoKSB7CisJc2hv cnRfZGVzYz0iRkZtcGVnIGF1ZGlvIHJlc2FtcGxpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgp IHsKKwkJdm1vdmUgInVzci9saWIvbGliYXZyZXNhbXBsZS5zby4qIgorCX0KK30KKworbGliYXZm b3JtYXQ0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGZpbGUgZm9ybWF0IGxpYnJh cnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2Zm9ybWF0LnNvLioi CisJfQorfQorCitsaWJhdnV0aWw0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIHV0 aWxpdHkgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYXZ1 dGlsLnNvLioiCisJfQorfQorCitsaWJhdmZpbHRlcjRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNj PSJGRm1wZWcgYXVkaW8vdmlkZW8gZmlsdGVyIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJ CXZtb3ZlICJ1c3IvbGliL2xpYmF2ZmlsdGVyLnNvLioiCisJfQorfQorCitsaWJwb3N0cHJvYzRf cGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgdmlkZW8gcG9zdHByb2Nlc3NpbmcgbGli cmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGlicG9zdHByb2Muc28u KiIKKwl9Cit9CisKK2xpYnN3c2NhbGU0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVn IHZpZGVvIHNjYWxpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9s aWIvbGlic3dzY2FsZS5zby4qIgorCX0KK30KKworbGlic3dyZXNhbXBsZTRfcGFja2FnZSgpIHsK KwlzaG9ydF9kZXNjPSJGRm1wZWcgdmlkZW8gcmVzYW1wbGluZyBsaWJyYXJ5IgorCXBrZ19pbnN0 YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJzd3Jlc2FtcGxlLnNvLioiCisJfQorfQorCitm Zm1wZWc0LWRldmVsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iCisJCWxpYmF2Y29kZWM0Pj0ke3Zl cnNpb259XyR7cmV2aXNpb259CisJCWxpYmF2ZGV2aWNlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9u fQorCQlsaWJhdmZvcm1hdDQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGliYXZ1dGlsND49 JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJhdmZpbHRlcjQ+PSR7dmVyc2lvbn1fJHtyZXZp c2lvbn0KKwkJbGlicG9zdHByb2M0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYnN3c2Nh bGU0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYnN3cmVzYW1wbGU0Pj0ke3ZlcnNpb259 XyR7cmV2aXNpb259CisJCWxpYmF2cmVzYW1wbGU0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259Igor CXNob3J0X2Rlc2MrPSIgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwljb25mbGljdHM9ImZmbXBlZy1k ZXZlbCIKKwlpZiBbICIkWEJQU19UQVJHRVRfTUFDSElORSIgPSAiaTY4NiIgXTsgdGhlbgorCQkj IC91c3IvYmluL3N0cmlwOiBlcnJvcjogdGhlIGlucHV0IGZpbGUgJy9kZXN0ZGlyLy9mZm1wZWct ZGV2ZWwtNC40LjQvdXNyL2xpYi9saWJhdmZpbHRlci5hKHZmX2F0YWRlbm9pc2UubyknIGhhcyBu byBzZWN0aW9ucworCQlub3N0cmlwX2ZpbGVzPSIvdXNyL2xpYi9saWJhdmZpbHRlci5hIgorCWZp CisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9pbmNsdWRlCisJCXZtb3ZlIHVzci9saWIv cGtnY29uZmlnCisJCXZtb3ZlICJ1c3IvbGliLyouYSIKKwkJdm1vdmUgInVzci9saWIvKi5zbyIK KwkJdm1vdmUgdXNyL3NoYXJlL2ZmbXBlZy9leGFtcGxlcworCQl2bW92ZSB1c3Ivc2hhcmUvbWFu L21hbjMKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2Y29kZWM0IGIvc3JjcGtncy9s aWJhdmNvZGVjNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44ODdm MzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJhdmNvZGVjNApAQCAtMCww ICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9saWJhdmRldmljZTQgYi9zcmNwa2dzL2xpYmF2ZGV2aWNlNApuZXcgZmlsZSBtb2Rl IDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9saWJhdmRldmljZTQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZmaWx0ZXI0IGIv c3JjcGtncy9saWJhdmZpbHRlcjQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAw MDAwMC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZmaWx0 ZXI0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2Zm9ybWF0NCBiL3NyY3BrZ3MvbGliYXZmb3JtYXQ0Cm5l dyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2Zm9ybWF0NApAQCAtMCwwICsxIEBACitmZm1w ZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJh dnJlc2FtcGxlNCBiL3NyY3BrZ3MvbGliYXZyZXNhbXBsZTQKbmV3IGZpbGUgbW9kZSAxMjAwMDAK aW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvbGliYXZyZXNhbXBsZTQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZ1dGlsNCBiL3NyY3BrZ3Mv bGliYXZ1dGlsNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44ODdm MzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJhdnV0aWw0CkBAIC0wLDAg KzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9z cmNwa2dzL2xpYnBvc3Rwcm9jNCBiL3NyY3BrZ3MvbGlicG9zdHByb2M0Cm5ldyBmaWxlIG1vZGUg MTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL2xpYnBvc3Rwcm9jNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJzd3Jlc2FtcGxlNCBi L3NyY3BrZ3MvbGlic3dyZXNhbXBsZTQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAw MDAwMDAwMC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGlic3dy ZXNhbXBsZTQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlic3dzY2FsZTQgYi9zcmNwa2dzL2xpYnN3c2NhbGU0 Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYnN3c2NhbGU0CkBAIC0wLDAgKzEgQEAKK2Zm bXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpGcm9tIDMzMDMxZDhiNjczNDdkN2Qy NTBlYjhjYjlmNTY1ODU0OWZhMzNlMDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6MDQg LTA0MDAKU3ViamVjdDogW1BBVENIIDAwNS8xMTVdIG9wZW5jdjogdXBkYXRlIHRvIDQuNy4wLgoK LS0tCiBjb21tb24vc2hsaWJzICAgICAgICAgICB8IDEwNCArKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0tCiBzcmNwa2dzL29wZW5jdi90ZW1wbGF0ZSB8ICAgOCArKy0tCiAy IGZpbGVzIGNoYW5nZWQsIDU2IGluc2VydGlvbnMoKyksIDU2IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2NvbW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IGMyOGE1Njc5MWQ5YzEu LjdiMjBlYzQzNTc4MWUgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMKKysrIGIvY29tbW9uL3No bGlicwpAQCAtMjA4NCw1OCArMjA4NCw1OCBAQCBsaWJjYXBzdG9uZS5zby41IGNhcHN0b25lLTUu MC4xXzEKIGxpYmhhdmVnZS5zby4yIGxpYmhhdmVnZWQtMS45LjExXzEKIGxpYm5paC5zby4xIGxp Ym5paC0xLjAuM18xCiBsaWJuaWgtZGJ1cy5zby4xIGxpYm5paC0xLjAuM18xCi1saWJvcGVuY3Zf cXVhbGl0eS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9yZWcuc28uNDA2IGxp Ym9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3VyZmFjZV9tYXRjaGluZy5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKLWxpYm9wZW5jdl94cGhvdG8uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1s aWJvcGVuY3ZfZnJlZXR5cGUuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZnV6 enkuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaGZzLnNvLjQwNiBsaWJvcGVu Y3YtNC42LjBfMQotbGlib3BlbmN2X2ltZ19oYXNoLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X2xpbmVfZGVzY3JpcHRvci5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9w ZW5jdl9zYWxpZW5jeS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9zdHJ1Y3R1 cmVkX2xpZ2h0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2FydWNvLnNvLjQw NiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Jnc2VnbS5zby40MDYgbGlib3BlbmN2LTQu Ni4wXzEKLWxpYm9wZW5jdl9iaW9pbnNwaXJlZC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxp Ym9wZW5jdl9jY2FsaWIuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZmFjZS5z by40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl90cmFja2luZy5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKLWxpYm9wZW5jdl94ZmVhdHVyZXMyZC5zby40MDYgbGlib3BlbmN2LTQuNi4w XzEKLWxpYm9wZW5jdl9vcHRmbG93LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2 X3hpbWdwcm9jLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3Bsb3Quc28uNDA2 IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfdGV4dC5zby40MDYgbGlib3BlbmN2LTQuNi4w XzEKLWxpYm9wZW5jdl9tbC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9vYmpk ZXRlY3Quc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZG5uLnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3NoYXBlLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X3N0aXRjaGluZy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9w aG90by5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl92aWRlby5zby40MDYgbGli b3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9jYWxpYjNkLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBf MQotbGlib3BlbmN2X2ZlYXR1cmVzMmQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVu Y3ZfZmxhbm4uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaGlnaGd1aS5zby40 MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl92aWRlb2lvLnNvLjQwNiBsaWJvcGVuY3Yt NC42LjBfMQotbGlib3BlbmN2X2ltZ2NvZGVjcy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxp Ym9wZW5jdl9pbWdwcm9jLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2NvcmUu c28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3VwZXJyZXMuc28uNDA2IGxpYm9w ZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfdmlkZW9zdGFiLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBf MQotbGlib3BlbmN2X2dhcGkuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfeG9i amRldGVjdC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9kYXRhc2V0cy5zby40 MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9kbm5fb2JqZGV0ZWN0LnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Rubl9zdXBlcnJlcy5zby40MDYgbGlib3BlbmN2LTQu Ni4wXzEKLWxpYm9wZW5jdl9kcG0uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zf cGhhc2VfdW53cmFwcGluZy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9zdGVy ZW8uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfcmFwaWQuc28uNDA2IGxpYm9w ZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaW50ZW5zaXR5X3RyYW5zZm9ybS5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9hbHBoYW1hdC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEK LWxpYm9wZW5jdl9iYXJjb2RlLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X21j Yy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKK2xpYm9wZW5jdl9xdWFsaXR5LnNvLjQwNyBsaWJv cGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3JlZy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xp Ym9wZW5jdl9zdXJmYWNlX21hdGNoaW5nLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3Bl bmN2X3hwaG90by5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mcmVldHlwZS5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mdXp6eS5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl9oZnMuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVu Y3ZfaW1nX2hhc2guc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfbGluZV9kZXNj cmlwdG9yLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3NhbGllbmN5LnNvLjQw NyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N0cnVjdHVyZWRfbGlnaHQuc28uNDA3IGxp Ym9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYXJ1Y28uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8x CitsaWJvcGVuY3ZfYmdzZWdtLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Jp b2luc3BpcmVkLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2NjYWxpYi5zby40 MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mYWNlLnNvLjQwNyBsaWJvcGVuY3YtNC43 LjBfMQorbGlib3BlbmN2X3RyYWNraW5nLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3Bl bmN2X3hmZWF0dXJlczJkLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X29wdGZs b3cuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfeGltZ3Byb2Muc28uNDA3IGxp Ym9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfcGxvdC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEK K2xpYm9wZW5jdl90ZXh0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X21sLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X29iamRldGVjdC5zby40MDcgbGlib3Bl bmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9kbm4uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3Zfc2hhcGUuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfc3RpdGNoaW5n LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3Bob3RvLnNvLjQwNyBsaWJvcGVu Y3YtNC43LjBfMQorbGlib3BlbmN2X3ZpZGVvLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGli b3BlbmN2X2NhbGliM2Quc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZmVhdHVy ZXMyZC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mbGFubi5zby40MDcgbGli b3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9oaWdoZ3VpLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBf MQorbGlib3BlbmN2X3ZpZGVvaW8uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zf aW1nY29kZWNzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ltZ3Byb2Muc28u NDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfY29yZS5zby40MDcgbGlib3BlbmN2LTQu Ny4wXzEKK2xpYm9wZW5jdl9zdXBlcnJlcy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9w ZW5jdl92aWRlb3N0YWIuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZ2FwaS5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl94b2JqZGV0ZWN0LnNvLjQwNyBsaWJv cGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2RhdGFzZXRzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBf MQorbGlib3BlbmN2X2Rubl9vYmpkZXRlY3Quc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3ZfZG5uX3N1cGVycmVzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Rw bS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9waGFzZV91bndyYXBwaW5nLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N0ZXJlby5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl9yYXBpZC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9w ZW5jdl9pbnRlbnNpdHlfdHJhbnNmb3JtLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3Bl bmN2X2FscGhhbWF0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2JhcmNvZGUu c28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfbWNjLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQogbGlidW5pY29uZi5zby40LjYgd3ZzdHJlYW1zLTQuNi4xXzIwCiBsaWJ3dmJhc2Uu c28uNC42IHd2c3RyZWFtcy00LjYuMV8yMAogbGlid3Z1dGlscy5zby40LjYgd3ZzdHJlYW1zLTQu Ni4xXzIwCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5jdi90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3Bl bmN2L3RlbXBsYXRlCmluZGV4IGFlYTRiZmMzYTI2NWMuLmNlOTRkZTk0MjRkMTggMTAwNjQ0Ci0t LSBhL3NyY3BrZ3Mvb3BlbmN2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3BlbmN2L3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3BlbmN2JwogcGtnbmFtZT1v cGVuY3YKLXZlcnNpb249NC42LjAKLXJldmlzaW9uPTYKK3ZlcnNpb249NC43LjAKK3JldmlzaW9u PTEKIGNyZWF0ZV93cmtzcmM9eWVzCiBidWlsZF93cmtzcmM9JHtwa2duYW1lfS0ke3ZlcnNpb259 CiBidWlsZF9zdHlsZT1jbWFrZQpAQCAtMjQsOCArMjQsOCBAQCBob21lcGFnZT0iaHR0cHM6Ly9v cGVuY3Yub3JnIgogY2hhbmdlbG9nPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi93 aWtpL0NoYW5nZUxvZyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVu Y3YvYXJjaGl2ZS8ke3ZlcnNpb259LnRhci5negogIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yv b3BlbmN2X2NvbnRyaWIvYXJjaGl2ZS8ke3ZlcnNpb259LnRhci5nej5jb250cmliLnRhci5neiIK LWNoZWNrc3VtPSIxZWMxY2JhNjVmOWYyMGZlNWE0MWZkYTE1ODZlMDFjNzBlYTBjOWE2ZDdiNjdj OWUxM2VkZjBjZmUyMjM5Mjc3Ci0gMTc3N2Q1ZmQyYjU5MDI5Y2Y1MzdlNWZkNmY4YWE2OGQ3MDcw NzU4MjJmOTBiZGU2ODNmY2RlMDg2Zjg1ZjdhNyIKK2NoZWNrc3VtPSI4ZGYwMDc5Y2RiZTE3OTc0 OGExOGQ0NDczMWFmNjJhMjQ1YTQ1ZWJmNTA4NTIyM2RjMDMxMzM5NTRjNjYyOTczCisgNDJkZjg0 MGNmOTA1NWU1OWQwZTIyYzI0OWNmYjE5ZjA0NzQzZTFiZGFkMTEzZDMxYjE1NzNkMzkzNGQ2MjU4 NCIKIHBhdGNoX2FyZ3M9Ii1OcDEgLWQgJHtidWlsZF93cmtzcmN9IgogIyB0ZXN0cyBoYW5nIGlu ZGVuZmluaXRlbHksIGV2ZW4gd2l0aCB0ZXN0IGRhdGEgaW5jbHVkZWQKIG1ha2VfY2hlY2s9bm8K CkZyb20gZjIyZDM4ZWVjYjZmOTgwZWE4ZDkzMmRiOTQ0MTc0ZmVlN2I5ZjIzZCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAxOTo1OTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA2LzExNV0gYWN0 aW9uYTogcmV2YnVtcCBmb3Igb3BlbmN2LTQuNy4wCgotLS0KIHNyY3BrZ3MvYWN0aW9uYS90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvYWN0aW9u YS90ZW1wbGF0ZQppbmRleCBjZjVmMGI3YTJhZTYxLi4wZDg5OTMxMWU2ZGY3IDEwMDY0NAotLS0g YS9zcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hY3Rpb25hL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYWN0aW9uYScKIHBrZ25hbWU9 YWN0aW9uYQogdmVyc2lvbj0zLjEwLjEKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0 eWxlPXFtYWtlCiBjb25maWd1cmVfYXJncz0iUEtHQ09ORklHX09QRU5DVj1vcGVuY3Y0IgogaG9z dG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1wbHVnaW4tbXlzcWwgcXQ1LXFtYWtlIHF0NS1o b3N0LXRvb2xzIgoKRnJvbSA2N2Y0OThmNGRmNWZiODA1OTBjODBiNzYzNzc4M2U2M2IwNDIxZDE1 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDE5OjU5OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw MDcvMTE1XSByZXRyb3NoYXJlOiByZXZidW1wIGZvciBvcGVuY3YtNC43LjAKCi0tLQogc3JjcGtn cy9yZXRyb3NoYXJlL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9yZXRyb3NoYXJlL3RlbXBs YXRlIGIvc3JjcGtncy9yZXRyb3NoYXJlL3RlbXBsYXRlCmluZGV4IGJiMTc1NjkyNzdhN2YuLjQ5 ZTJjMWNiZThhNTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmV0cm9zaGFyZS90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdyZXRyb3NoYXJlJwogcGtnbmFtZT1yZXRyb3NoYXJlCiB2ZXJzaW9uPTAuNi42 Ci1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1xbWFrZQogI1hYWCBicm9hZGNh c3QgZmVhdHVyZSByZXF1aXJlcyBhbiBhbmNpZW50IHVkcC1kaXNjb3ZlcnktY3BwIHdoaWNoIGVp dGhlciBuZWVkcwogIyB0byBiZSBmZXRjaGVkK3BhdGNoZWQgKEZUQkZTKSBoZXJlIG9yIHBhY2th Z2VkIDovCgpGcm9tIGRlODAxZjRlZWI5OWZkZjNlZTY5OGU2ZTc1MTBkYTAxNTljOTk2NzMgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwOC8x MTVdIHdhaWZ1MngtY29udmVydGVyLWNwcDogcmV2YnVtcCBmb3Igb3BlbmN2LTQuNy4wCgotLS0K IHNyY3BrZ3Mvd2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUgYi9zcmNwa2dzL3dhaWZ1MngtY29udmVy dGVyLWNwcC90ZW1wbGF0ZQppbmRleCAzNjFiOGEyM2I5NDk3Li5jNWFjMTdlYjU0ZWE0IDEwMDY0 NAotLS0gYS9zcmNwa2dzL3dhaWZ1MngtY29udmVydGVyLWNwcC90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3dhaWZ1MngtY29udmVydGVyLWNwcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3dhaWZ1MngtY29udmVydGVyLWNwcCcKIHBrZ25hbWU9d2FpZnUyeC1j b252ZXJ0ZXItY3BwCiB2ZXJzaW9uPTUuMi40Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWls ZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1ESU5TVEFMTF9NT0RFTFM9T04iCiBob3N0 bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIGNkM2Y4NzBlZTBmMzY1Yzc0NmQxYTEzOGVj ZTY2OWVmOGMzYWJkMmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDA6MzggLTA0MDAKU3Vi amVjdDogW1BBVENIIDAwOS8xMTVdIHZsYzogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0t CiBzcmNwa2dzL3ZsYy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmxjL3RlbXBsYXRlIGIv c3JjcGtncy92bGMvdGVtcGxhdGUKaW5kZXggYWJjNWVlYmEwMTU2NC4uNWYyOTFiMWI4MWUyMyAx MDA2NDQKLS0tIGEvc3JjcGtncy92bGMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy92bGMvdGVtcGxh dGUKQEAgLTI1LDcgKzI1LDcgQEAgbGliMzJkaXNhYmxlZD15ZXMKIGhvc3RtYWtlZGVwZW5kcz0i YXV0b21ha2UgbGlidG9vbCBwa2ctY29uZmlnIGZsZXggZ2V0dGV4dCBsaWJnY3J5cHQtZGV2ZWwK ICBsaXZlNTU1LWRldmVsIGdldHRleHQtZGV2ZWwgJCh2b3B0X2lmIGx1YSBsdWE1MikgJCh2b3B0 X2lmIGNocm9tZWNhc3QgcHJvdG9idWYpIgogbWFrZWRlcGVuZHM9IgotIGF2YWhpLWxpYnMtZGV2 ZWwgZGJ1cy1nbGliLWRldmVsIGZhYWQyLWRldmVsIGZmbXBlZy1kZXZlbCBmcmVlZm9udC10dGYK KyBhdmFoaS1saWJzLWRldmVsIGRidXMtZ2xpYi1kZXZlbCBmYWFkMi1kZXZlbCBmZm1wZWc0LWRl dmVsIGZyZWVmb250LXR0ZgogIGdudXRscy1kZXZlbCBqYWNrLWRldmVsIGxpYmE1Mi1kZXZlbCBs aWJhc3MtZGV2ZWwgbGliYmx1cmF5LWRldmVsCiAgbGliY2Rpby1kZXZlbCBsaWJkY2EtZGV2ZWwg bGliZHZicHNpLWRldmVsIGxpYmR2ZG5hdi1kZXZlbCBsaWJtYWQtZGV2ZWwKICBsaWJtYXRyb3Nr YS1kZXZlbCBsaWJtb2RwbHVnLWRldmVsIGxpYm1wY2RlYy1kZXZlbCBsaWJtcGVnMi1kZXZlbAoK RnJvbSBhM2Y0MWI3MGU4MjIwODQyMjFkMWVmYjExMzAyODI3ZTRlY2ZmZjk0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAwOjU1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTAvMTE1XSBvc2c6 IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9vc2cvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL29zZy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlCmluZGV4 IGE5ZWJiZDI4NzkzM2IuLjc1NTc5M2Y3ZTExYmYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3NnL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlCkBAIC04LDcgKzgsNyBAQCBidWlsZF9o ZWxwZXI9InFlbXUiCiBjb25maWd1cmVfYXJncz0iLURMSUJfUE9TVEZJWD0iCiBob3N0bWFrZWRl cGVuZHM9InBrZy1jb25maWcgeHJhbmRyIgogbWFrZWRlcGVuZHM9Ik1lc2FMaWItZGV2ZWwgZ3Rr Z2xleHQtZGV2ZWwgbGliY3VybC1kZXZlbCBnaWZsaWItZGV2ZWwgbGlicnN2Zy1kZXZlbAotIGph c3Blci1kZXZlbCB0aWZmLWRldmVsIGxpYmdkYWwtZGV2ZWwgbGliZ3RhLWRldmVsIGZmbXBlZy1k ZXZlbCB4aW5lLWxpYi1kZXZlbAorIGphc3Blci1kZXZlbCB0aWZmLWRldmVsIGxpYmdkYWwtZGV2 ZWwgbGliZ3RhLWRldmVsIGZmbXBlZzQtZGV2ZWwgeGluZS1saWItZGV2ZWwKICBTREwyLWRldmVs IGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsCiAgJCh2b3B0X2lmIG9wZW5leHIgbGlib3BlbmV4ci1k ZXZlbCkKICAkKHZvcHRfaWYgcG9wcGxlciBwb3BwbGVyLWdsaWItZGV2ZWwpCgpGcm9tIDVkY2Iy N2Q4NjNjYzZmZDI3NDM1ZjQxMjkxN2QyMTU5MjAyNDZjZGIgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIw MjMgMjA6MDE6MTMgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxMS8xMTVdIHhpbmUtbGliOiByZXZi dW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MveGluZS1saWIvdGVtcGxhdGUgfCA4 ICsrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MveGluZS1saWIvdGVtcGxhdGUgYi9zcmNwa2dzL3hpbmUt bGliL3RlbXBsYXRlCmluZGV4IDNiZTRkMDhlYWM3N2EuLmVkNjE5NGMxN2QxMWUgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MveGluZS1saWIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy94aW5lLWxpYi90ZW1w bGF0ZQpAQCAtMSwxNCArMSwxNCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAneGluZS1saWInCiBw a2duYW1lPXhpbmUtbGliCi12ZXJzaW9uPTEuMi4xMgotcmV2aXNpb249MwordmVyc2lvbj0xLjIu MTMKK3JldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdz PSItLWRpc2FibGUtdmNkIC0tZGlzYWJsZS1nbm9tZXZmcyAtLXdpdGhvdXQtZXNvdW5kIC0tZGlz YWJsZS1keHIzCiAgLS1kaXNhYmxlLW9zcyIKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgZ2V0 dGV4dC1kZXZlbCBsaWJ0b29sIHBrZy1jb25maWcgcGVybCIKIG1ha2VkZXBlbmRzPSIKICB6bGli LWRldmVsIGFsc2EtbGliLWRldmVsIGxpYnhjYi1kZXZlbCBsaWJTTS1kZXZlbCBsaWJYZXh0LWRl dmVsIGxpYlh2LWRldmVsCi0gbGliWHZNQy1kZXZlbCBsaWJhNTItZGV2ZWwgbGlibWFkLWRldmVs IGZmbXBlZy1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCisgbGliWHZNQy1kZXZlbCBsaWJhNTItZGV2 ZWwgbGlibWFkLWRldmVsIGZmbXBlZzQtZGV2ZWwgcHVsc2VhdWRpby1kZXZlbAogIGphY2stZGV2 ZWwgc2FtYmEtZGV2ZWwgbGliZmxhYy1kZXZlbCBsaWJtb2RwbHVnLWRldmVsIGxpYm1wY2RlYy1k ZXZlbAogIHNwZWV4LWRldmVsIGxpYnRoZW9yYS1kZXZlbCBsaWJ2b3JiaXMtZGV2ZWwgbGliZGNh LWRldmVsIGZhYWQyLWRldmVsCiAgbGliY2Rpby1kZXZlbCBsaWJibHVyYXktZGV2ZWwgYWFsaWIt ZGV2ZWwgbGliY2FjYS1kZXZlbCBsaWJYaW5lcmFtYS1kZXZlbApAQCAtMTksNyArMTksNyBAQCBs aWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyLCBMR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJo dHRwOi8vd3d3LnhpbmUtcHJvamVjdC5vcmciCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vc291cmNlZm9y Z2UubmV0L3Byb2plY3RzL3hpbmUvZmlsZXMveGluZS1saWIvJHt2ZXJzaW9ufS9SRUFETUUudHh0 L3ZpZXciCiBkaXN0ZmlsZXM9IiR7U09VUkNFRk9SR0VfU0lURX0veGluZS8ke3BrZ25hbWV9LSR7 dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09ZDYwNjI3MDQ2OGUxNTQwYzJhODljMGQ3ZjVmZGYx MWUxN2VjYzBjMjY5OGNjMGJjYjEwNjVmZjI2YWJlZTA5OAorY2hlY2tzdW09NWYxMGQ2ZDcxOGE0 YTUxYzE3ZWQxYjMyYjAzMWQ0ZjliODBiMDYxZTgyNzY1MzViMmJlMzFlNWFjNGI3NWU2ZgogCiBj YXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KIAlpNjg2LW11c2wpCgpGcm9tIGZlOWNiNWIx YjkyNWYyNTY5MGUyZTI4NDFiOTM3NzM0YTNkNDZjMzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxMi8xMTVdIGFyY2FuOiByZXZidW1wIGZv ciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYXJjYW4vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL2FyY2FuL3RlbXBsYXRlIGIvc3JjcGtncy9hcmNhbi90ZW1wbGF0ZQppbmRleCBlZmQwYWZl MTA1NzZkLi5iOTFlNjkwMGQ0MmExIDEwMDY0NAotLS0gYS9zcmNwa2dzL2FyY2FuL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvYXJjYW4vdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBACiAjICEhIGtlZXAg c3luY2VkIHdpdGg6IGFjZmdmcyBhY2xpcCBhbG9hZGltYWdlCiBwa2duYW1lPWFyY2FuCiB2ZXJz aW9uPTAuNi4yLjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGNyZWF0ZV93cmtzcmM9eWVzCiBi dWlsZF93cmtzcmM9YXJjYW4vc3JjCiBidWlsZF9zdHlsZT1jbWFrZQoKRnJvbSAzYzYwZjMxOGNm Y2JlZDQ5NDE5YjdkOWZkNDUwNTE3ZDA3YTQ2MWZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTMvMTE1XSBhdHRyYWN0OiByZXZidW1wIGZv ciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvYXR0cmFjdC90ZW1wbGF0ZSB8IDQgKystLQog MSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUgYi9zcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUK aW5kZXggMjYxNDRlOTMxYTNjNy4uZTc2MGJmMGQxOGFlYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9h dHRyYWN0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYXR0cmFjdC90ZW1wbGF0ZQpAQCAtMSwxMiAr MSwxMiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYXR0cmFjdCcKIHBrZ25hbWU9YXR0cmFjdAog dmVyc2lvbj0yLjYuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LW1h a2VmaWxlCiBtYWtlX2J1aWxkX2FyZ3M9IlZFUkJPU0U9MSIKIG1ha2VfdXNlX2Vudj15ZXMKIGhv c3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJTRk1MLWRldmVsIGZmbXBl Zy1kZXZlbCBmb250Y29uZmlnLWRldmVsIGdsdS1kZXZlbCBsaWJhcmNoaXZlLWRldmVsCittYWtl ZGVwZW5kcz0iU0ZNTC1kZXZlbCBmZm1wZWc0LWRldmVsIGZvbnRjb25maWctZGV2ZWwgZ2x1LWRl dmVsIGxpYmFyY2hpdmUtZGV2ZWwKICBsaWJjdXJsLWRldmVsIGxpYmpwZWctdHVyYm8tZGV2ZWwg eGluZS1saWIgcmFwaWRqc29uIGxpYlhyYW5kci1kZXZlbCIKIGRlcGVuZHM9ImdpdCIKIHNob3J0 X2Rlc2M9IkF0dHJhY3QtTW9kZSBpcyBhIGdyYXBoaWNhbCBmcm9udGVuZCBmb3IgZW11bGF0b3Jz IgoKRnJvbSAwNjBkMzk2NTI5YTlkOWQ5Y2I5YWM2ZTVlNDU2NjZiMTJjMzBmN2RjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTQvMTE1XSBh dWJpbzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2F1YmlvL3BhdGNoZXMv ZmZtcGVnNS5wYXRjaCB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvYXVi aW8vdGVtcGxhdGUgICAgICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMjYgaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYXVi aW8vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdWJpby9wYXRj aGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2F1YmlvL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5hYWNlNDFhNmU2ZDlhCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9hdWJpby9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAg LTAsMCArMSwyNSBAQAorRnJvbSA4YTA1NDIwZTVkZDhjN2I4YjI0NDdmODJkYzkxOTc2NTg3NjUx MWIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBCcm9zc2llciA8cGllbUBw aWVtLm9yZz4KK0RhdGU6IFR1ZSwgMjUgSmFuIDIwMjIgMTg6MzA6MjcgKzAxMDAKK1N1YmplY3Q6 IFtQQVRDSF0gW3NvdXJjZV9hdmNvZGVjXSBkZWZpbmUgRkZfQVBJX0xBVkZfQVZDVFggZm9yIGxp YmF2Y29kZWMgPgorIDU5LCB0aHggQGJlcm9saW51eCAoY2xvc2VzIGdoLTM1MykKKworLS0tCisg c3JjL2lvL3NvdXJjZV9hdmNvZGVjLmMgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNl cnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvaW8vc291cmNlX2F2Y29kZWMuYyBiL3NyYy9p by9zb3VyY2VfYXZjb2RlYy5jCitpbmRleCBlMGFlOTNiNS4uMTQyMWJkOWEgMTAwNjQ0CistLS0g YS9zcmMvaW8vc291cmNlX2F2Y29kZWMuYworKysrIGIvc3JjL2lvL3NvdXJjZV9hdmNvZGVjLmMK K0BAIC02OCw2ICs2OCwxMCBAQAorICNkZWZpbmUgQVVCSU9fQVZDT0RFQ19NQVhfQlVGRkVSX1NJ WkUgQVZfSU5QVVRfQlVGRkVSX01JTl9TSVpFCisgI2VuZGlmCisgCisrI2lmIExJQkFWQ09ERUNf VkVSU0lPTl9NQUpPUiA+PSA1OQorKyNkZWZpbmUgRkZfQVBJX0xBVkZfQVZDVFggMQorKyNlbmRp ZgorKworIHN0cnVjdCBfYXViaW9fc291cmNlX2F2Y29kZWNfdCB7CisgICB1aW50X3QgaG9wX3Np emU7CisgICB1aW50X3Qgc2FtcGxlcmF0ZTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXViaW8vdGVt cGxhdGUgYi9zcmNwa2dzL2F1YmlvL3RlbXBsYXRlCmluZGV4IGFkMWM0YjI1Njk5MTcuLjdkODc1 Y2MwMjU0MWEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXViaW8vdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9hdWJpby90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2F1 YmlvJwogcGtnbmFtZT1hdWJpbwogdmVyc2lvbj0wLjQuOQotcmV2aXNpb249MQorcmV2aXNpb249 MgogYnVpbGRfc3R5bGU9d2FmMwogIyBYWFggbGFzaCwgcHVyZSBhbmQgc3dpZyBzdXBwb3J0Lgog aG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHR4dDJtYW4iCgpGcm9tIDQwNzQxZDI3YTliYjkx M2EzNGVjNGZlMmI5YjUxZWFkZmM3NjEzOTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNS8xMTVdIGF1ZGFjaW91cy1wbHVnaW5zOiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIC4uLi9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2Zm bXBlZzUucGF0Y2ggICB8IDQzICsrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvYXVkYWNpb3Vz LXBsdWdpbnMvdGVtcGxhdGUgICAgICAgICAgICB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDQ0 IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9h dWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uNGU1ZTM0MDk5ZDcxYwotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAg KzEsNDMgQEAKK2NvbW1pdCAyOThhYTM3MWM1NmMyZjUyYzI1YTMzZDliZGVjNDkxOGIxMWNlYmRj CitBdXRob3I6IHRpYmVxdWFkb3JpYW4gPHRpYmVxdWFkb3JpYW5AcG9zdGVvLmRlPgorRGF0ZTog ICBTYXQgTWFyIDE5IDE4OjQwOjEyIDIwMjIgKzAxMDAKKworICAgIGF1ZGFjaW91cy1wbHVnaW5z OiByZWJ1aWxkIGFnYWluc3QgZmZtcGVnLTUuMAorCitkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdWRh Y2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZy01LjAucGF0Y2ggYi9zcmNwa2dzL2F1ZGFjaW91 cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnLTUuMC5wYXRjaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDAwMDAwMDAwMDAuLjYxN2MxMTIxNWIKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyY3Br Z3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWctNS4wLnBhdGNoCitAQCAtMCwwICsx LDMxIEBACisrRnJvbSBmNjBiZWI0MDBlZWIxZTQ3NzhiYmZkNzM4YmM0YTRjY2VmM2RlNTM5IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQorK0Zyb206IEpvaG4gTGluZGdyZW4gPGpvaG5AamxpbmRn cmVuLm5ldD4KKytEYXRlOiBTYXQsIDUgTWFyIDIwMjIgMTI6MDU6MzQgLTA1MDAKKytTdWJqZWN0 OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIEZGbXBlZyA1LjAKKysKKystLS0KKysgc3JjL2ZmYXVk aW8vZmZhdWRpby1jb3JlLmNjIHwgNCArKy0tCisrIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlv bnMoKyksIDIgZGVsZXRpb25zKC0pCisrCisrZGlmZiAtLWdpdCBhL3NyYy9mZmF1ZGlvL2ZmYXVk aW8tY29yZS5jYyBiL3NyYy9mZmF1ZGlvL2ZmYXVkaW8tY29yZS5jYworK2luZGV4IDE2ZGM2M2Uz YS4uYTJiOTVmZDZjIDEwMDY0NAorKy0tLSBhL3NyYy9mZmF1ZGlvL2ZmYXVkaW8tY29yZS5jYwor KysrKyBiL3NyYy9mZmF1ZGlvL2ZmYXVkaW8tY29yZS5jYworK0BAIC0yNzQsNyArMjc0LDcgQEAg c3RhdGljIEFWSW5wdXRGb3JtYXQgKiBnZXRfZm9ybWF0X2J5X2NvbnRlbnQgKGNvbnN0IGNoYXIg KiBuYW1lLCBWRlNGaWxlICYgZmlsZSkKKysgICAgICAgICBBVlByb2JlRGF0YSBkID0ge25hbWUs IGJ1ZiwgZmlsbGVkfTsKKysgICAgICAgICBzY29yZSA9IHRhcmdldDsKKysgCisrLSAgICAgICAg ZiA9IGF2X3Byb2JlX2lucHV0X2Zvcm1hdDIgKCYgZCwgdHJ1ZSwgJiBzY29yZSk7CisrKyAgICAg ICAgZiA9IChBVklucHV0Rm9ybWF0ICopIGF2X3Byb2JlX2lucHV0X2Zvcm1hdDIgKCYgZCwgdHJ1 ZSwgJiBzY29yZSk7CisrICAgICAgICAgaWYgKGYpCisrICAgICAgICAgICAgIGJyZWFrOworKyAK KytAQCAtMzQ3LDcgKzM0Nyw3IEBAIHN0YXRpYyBib29sIGZpbmRfY29kZWMgKEFWRm9ybWF0Q29u dGV4dCAqIGMsIENvZGVjSW5mbyAqIGNpbmZvKQorKyAjZW5kaWYKKysgICAgICAgICBpZiAoc3Ry ZWFtICYmIHN0cmVhbS0+Y29kZWNwYXIgJiYgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9 PSBBVk1FRElBX1RZUEVfQVVESU8pCisrICAgICAgICAgeworKy0gICAgICAgICAgICBBVkNvZGVj ICogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlciAoc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNf aWQpOworKysgICAgICAgICAgICBBVkNvZGVjICogY29kZWMgPSAoQVZDb2RlYyAqKSBhdmNvZGVj X2ZpbmRfZGVjb2RlciAoc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworKyAKKysgICAgICAg ICAgICAgaWYgKGNvZGVjKQorKyAgICAgICAgICAgICB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2F1 ZGFjaW91cy1wbHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy90ZW1w bGF0ZQppbmRleCAwNWU1M2E5YWRmNzhmLi40YjE5NjhlMDNkZTc4IDEwMDY0NAotLS0gYS9zcmNw a2dzL2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYXVkYWNpb3VzLXBs dWdpbnMvdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBACiAjS2VlcCBpbiBzeW5jIHdpdGggYXVkYWNp b3VzIQogcGtnbmFtZT1hdWRhY2lvdXMtcGx1Z2lucwogdmVyc2lvbj00LjMuMQotcmV2aXNpb249 MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSIkKHZvcHRf Ym9vbCBndGszIGd0aykgJCh2b3B0X2Jvb2wgZ3RrMykKICAkKHZvcHRfYm9vbCBxdCkgJCh2b3B0 X2Jvb2wgcXQgcXQ2KSIKCkZyb20gNTg1MWRkODhhYjU1YzVhODM2ODlkNTY4N2E5N2VkY2NhNGIx MTNlNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDE2LzExNV0gYXVkYWNpdHk6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3Jj cGtncy9hdWRhY2l0eS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0 aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2F1ZGFjaXR5L3Rl bXBsYXRlIGIvc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZQppbmRleCA3YjgzODExOWFiMjYxLi5m YjE1Zjc4MmFjMWY3IDEwMDY0NAotLS0gYS9zcmNwa2dzL2F1ZGFjaXR5L3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdhdWRhY2l0eScKIHBrZ25hbWU9YXVkYWNpdHkKIHZlcnNpb249My40LjIKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBidWlsZF9oZWxwZXI9ImNtYWtl LXd4V2lkZ2V0cy1ndGszIHFlbXUiCiBjb25maWd1cmVfYXJncz0iLURhdWRhY2l0eV91c2VfZmZt cGVnPWxvYWRlZCAtRGF1ZGFjaXR5X2xpYl9wcmVmZXJlbmNlPXN5c3RlbQpAQCAtMTIsNyArMTIs NyBAQCBjb25maWd1cmVfYXJncz0iLURhdWRhY2l0eV91c2VfZmZtcGVnPWxvYWRlZCAtRGF1ZGFj aXR5X2xpYl9wcmVmZXJlbmNlPXN5c3RlbQogIC1EYXVkYWNpdHlfaGFzX3VwZGF0ZXNfY2hlY2s9 T0ZGIC1EQVVEQUNJVFlfQlVJTERfTEVWRUw9MiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZp ZyBnZXR0ZXh0IHB5dGhvbjMiCiBtYWtlZGVwZW5kcz0id3hXaWRnZXRzLWd0azMtZGV2ZWwgZ3Rr KzMtZGV2ZWwgZXhwYXQtZGV2ZWwgbGFtZS1kZXZlbAotIGxpYnNveHItZGV2ZWwgcG9ydGF1ZGlv LWRldmVsIHNxbGl0ZS1kZXZlbCBmZm1wZWctZGV2ZWwKKyBsaWJzb3hyLWRldmVsIHBvcnRhdWRp by1kZXZlbCBzcWxpdGUtZGV2ZWwgZmZtcGVnNC1kZXZlbAogIGxpYmlkM3RhZy1kZXZlbCBsaWJt YWQtZGV2ZWwgdmFtcC1wbHVnaW4tc2RrLWRldmVsIGxpYm9nZy1kZXZlbAogIGxpYnZvcmJpcy1k ZXZlbCBsaWJmbGFjLWRldmVsIGxpbHYtZGV2ZWwgbHYyIHNlcmQtZGV2ZWwgc29yZC1kZXZlbAog IHNyYXRvbS1kZXZlbCBzdWlsLWRldmVsIHBvcnRtaWRpLWRldmVsIHNvdW5kdG91Y2gtZGV2ZWwg dHdvbGFtZS1kZXZlbAoKRnJvbSAxMWNjOTJhMTlmNGQyZmIwNGZlYjIyZDNkYTg0NjZjMWM4Mzky ZjkxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwMTcvMTE1XSBhdmlkZW11eDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2F2aWRlbXV4L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdmlkZW11eC90ZW1wbGF0ZSBi L3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUKaW5kZXggMjUzYTAyNDNlMjI1OS4uNTU3Mjg1OTgy ZDJiOCAxMDA2NDQKLS0tIGEvc3JjcGtncy9hdmlkZW11eC90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2F2aWRlbXV4L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn YXZpZGVtdXgnCiBwa2duYW1lPWF2aWRlbXV4CiB2ZXJzaW9uPTIuOC4wCi1yZXZpc2lvbj0yCity ZXZpc2lvbj0zCiAjIENhbid0IGJlIGNvbXBpbGVkIGZvciBhYXJjaDY0LCBhcm0qIG9yIG1pcHMq CiBhcmNocz0ieDg2XzY0KiBpNjg2KiIKIGhvc3RtYWtlZGVwZW5kcz0iY21ha2UgcGtnLWNvbmZp ZyBxdDUtaG9zdC10b29scyBxdDUtZGV2ZWwgdGFyIHlhc20iCgpGcm9tIDc3MDZlOTY2NDFjNjY1 NjNiOWQ2ZjI3NDE5NDk0MmUxYzRjYzVjNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxOC8xMTVdIGJsZW5kZXI6IHJldmJ1bXAgZm9yIGZm bXBlZy02LjAKCi0tLQogc3JjcGtncy9ibGVuZGVyL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUg Y2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvYmxlbmRlci90ZW1wbGF0ZSBiL3NyY3BrZ3MvYmxlbmRlci90ZW1wbGF0ZQppbmRleCAw NWZkYmY4Zjc0N2UyLi4wOTNkNmQyMDA0ZTk1IDEwMDY0NAotLS0gYS9zcmNwa2dzL2JsZW5kZXIv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9ibGVuZGVyL3RlbXBsYXRlCkBAIC05LDggKzksOCBAQCBj b25maWd1cmVfYXJncz0iLURXSVRIX0lOU1RBTExfUE9SVEFCTEU9T0ZGIC1EV0lUSF9QWVRIT05f SU5TVEFMTD1PRkYKICAtRFdJVEhfSkFDSz1PTiAtRFdJVEhfQ09ERUNfRkZNUEVHPU9OIC1EV0lU SF9DT0RFQ19TTkRGSUxFPU9OIC1EV0lUSF9PUEVOTVA9T04KICAtRFdJVEhfRkZUVzM9T04gLURX SVRIX01PRF9PQ0VBTlNJTT1PTiAtRFdJVEhfQ1lDTEVTX0VNQlJFRT1PRkYgLURXSVRIX09QRU5D T0xPUklPPU9OCiAgLURXSVRIX0lNQUdFX09QRU5FWFI9T04gLURXSVRIX0lNQUdFX09QRU5KUEVH PU9OIC1EV0lUSF9PUEVOU1VCRElWPU9OCi0gLURXSVRIX09QRU5DT0xMQURBPU9OIC1EV0lUSF9T WVNURU1fR0xFVz1PTiAtRFdJVEhfT1BFTlZEQj1PTiAtRFdJVEhfQUxFTUJJQz1PTgotIC1EV0lU SF9HSE9TVF9YMTE9T04gLURXSVRIX0dIT1NUX1dBWUxBTkQ9T04gLURXSVRIX0dIT1NUX0xJQkRF Q09SPU9OCisgLURXSVRIX09QRU5DT0xMQURBPU9OIC1EV0lUSF9PUEVOVkRCPU9OIC1EV0lUSF9B TEVNQklDPU9OCisgLURXSVRIX0dIT1NUX1gxMT1PTiAtRFdJVEhfR0hPU1RfV0FZTEFORD1PTiAt RFdJVEhfR0hPU1RfV0FZTEFORF9MSUJERUNPUj1PTgogIC1EV0lUSF9CVUlMRElORk89T0ZGIC1E UFlUSE9OX1ZFUlNJT049JHtweTNfdmVyfSAtRFBZVEhPTl9MSUJQQVRIPS91c3IvbGliCiAgLURQ WVRIT05fTElCUkFSWT1weXRob24ke3B5M192ZXJ9JHtweTNfYWJpdmVyfSAtRFBZVEhPTl9JTkNM VURFX0RJUlM9LyR7cHkzX2luY30KICAtRFdJVEhfU1lTVEVNX0xaTz1PTiAtRFdJVEhfU1lTVEVN X0VJR0VOMz1PTiAtRFdJVEhfU1lTVEVNX0ZSRUVUWVBFPU9OIgoKRnJvbSAwOTE5YjQ1MzllNWIz NWUxMDY3MjQwNDYxNDM4ZmMxZWRjZGM0NTViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTkvMTE1XSBjYW50YXRhOiByZXZidW1wIGZvciBm Zm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvY2FudGF0YS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvY2FudGF0YS90ZW1wbGF0ZSBiL3NyY3BrZ3MvY2FudGF0YS90ZW1wbGF0ZQppbmRleCA0YjQx N2Q4MGQ1YzJkLi44YTkwYWFhNGMwN2EyIDEwMDY0NAotLS0gYS9zcmNwa2dzL2NhbnRhdGEvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnY2FudGF0YScKIHBrZ25hbWU9Y2FudGF0YQogdmVyc2lvbj0yLjUu MAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVw ZW5kcz0icGtnLWNvbmZpZyBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMgcXQ1LXRvb2xzIgogbWFr ZWRlcGVuZHM9InF0NS1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXN2Zy1kZXZlbCBxdDUteG1s cGF0dGVybnMtZGV2ZWwKCkZyb20gZDIyY2JhMGY2NjgzMjE0YzI3ZjFhMjJjM2UxZTJhMDM4MGQy YmNkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDIwLzExNV0gY2NleHRyYWN0b3I6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQog c3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NjZXh0 cmFjdG9yL3RlbXBsYXRlIGIvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZQppbmRleCA5YWJj ZDgyODUyYjI3Li42ZWNjYWQ1ODg1YWY5IDEwMDY0NAotLS0gYS9zcmNwa2dzL2NjZXh0cmFjdG9y L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY2NleHRyYWN0b3IvdGVtcGxhdGUKQEAgLTEsMTIgKzEs MTIgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2NjZXh0cmFjdG9yJwogcGtnbmFtZT1jY2V4dHJh Y3RvcgogdmVyc2lvbj0wLjkzCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF93cmtzcmM9 ImxpbnV4IgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZW5h YmxlLW9jciAtLWVuYWJsZS1oYXJkc3VieCIKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgcGtn LWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJsZXB0b25pY2EtZGV2ZWwgdGVzc2VyYWN0LW9jci1kZXZl bCBmZm1wZWctZGV2ZWwiCittYWtlZGVwZW5kcz0ibGVwdG9uaWNhLWRldmVsIHRlc3NlcmFjdC1v Y3ItZGV2ZWwgZmZtcGVnNC1kZXZlbCIKIHNob3J0X2Rlc2M9IkV4dHJhY3Qgc3VidGl0bGVzIGZy b20gdmlkZW8gc3RyZWFtcyIKIG1haW50YWluZXI9Im5ld2JsdWVtb29uIDxibGF1bW9sY2hAbWFp bGJveC5vcmc+IgogbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKCkZyb20gMDJkMzdhZjZjODVl N2JlMDI5ODU5MzA2OGZhZDM5OTAwOTBkMmE3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDIxLzExNV0gY2hyb21hcHJpbnQ6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9jaHJvbWFwcmludC9wYXRjaGVzL2ZmbXBlZzUu cGF0Y2ggfCA1NjkgKysrKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9jaHJvbWFwcmludC90 ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgNTcwIGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Nocm9t YXByaW50L3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb21h cHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9jaHJvbWFwcmludC9wYXRjaGVz L2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4u YTlmZDMwN2EyM2M4YQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvY2hyb21hcHJpbnQvcGF0 Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsNTY5IEBACitGcm9tIDhjY2FkNjkzNzE3N2Ix YjkyZTQwYWI4ZjQ0NDdlYTI3YmFjMDA5YTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9t OiA9P1VURi04P3E/THVrPUMzPUExPUM1PUExPTIwTGFsaW5zaz1DMz1CRD89IDxsYWxpbnNreUBn bWFpbC5jb20+CitEYXRlOiBGcmksIDQgTm92IDIwMjIgMjE6NDc6MzggKzAxMDAKK1N1YmplY3Q6 IFtQQVRDSF0gVXNlIEZGbXBlZyA1LnggKCMxMjApCisKKyogVXNlIEZGbXBlZyA1LjEuMiBmb3Ig Q0kgYnVpbGRzCisKKyogQnVpbGQgb24gVWJ1bnR1IDIwLjA0CisKKyogVXBncmFkZSBjb2RlIHRv IEZGbXBlZyA1LnggQVBJcworCisqIE9ubHkgc2V0IEZGbXBlZyBpbmNsdWRlIGRpcnMgaWYgYnVp bGRpbmcgdG9vbHMKKworKiBObyBsb25nZXIgbmVlZGVkCisKKyogVXNlIHVidW50dSAyMC4wNAor LS0tCisgLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueW1sICAgICAgICAgICAgICAgICAgIHwgICA2 ICstCisgQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2 IC0tCisgcGFja2FnZS9idWlsZC5zaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0 ICstCisgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3IuaCAgICAgICAgICAgIHwgICAy IC0KKyBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmggfCAgNzIg LS0tLS0tLQorIHNyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaCB8 ICAxOCArLQorIHNyYy9hdWRpby9mZm1wZWdfYXVkaW9fcmVhZGVyLmggICAgICAgICAgICAgICB8 IDE5NyArKysrKysrKystLS0tLS0tLS0KKyB0ZXN0cy9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDYgKworIDggZmlsZXMgY2hhbmdlZCwgMTIyIGluc2VydGlvbnMo KyksIDE5OSBkZWxldGlvbnMoLSkKKyBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2F1ZGlvL2ZmbXBl Z19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBsZS5oCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3Rz LnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCBmOGQ2YTMyLi40ZGEyNDA1IDEwMDY0NAorLS0t IGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtODQsOSArODQsNiBA QCBmaW5kX3BhY2thZ2UoRkZtcGVnKQorIGlmKEZGTVBFR19MSUJSQVJJRVMpCisgCWNtYWtlX3B1 c2hfY2hlY2tfc3RhdGUoUkVTRVQpCisgCXNldChDTUFLRV9SRVFVSVJFRF9MSUJSQVJJRVMgJHtG Rk1QRUdfTElCUkFSSUVTfSAke0NNQUtFX1RIUkVBRF9MSUJTX0lOSVR9IC1sbSkKKy0JY2hlY2tf ZnVuY3Rpb25fZXhpc3RzKGF2X3BhY2tldF91bnJlZiBIQVZFX0FWX1BBQ0tFVF9VTlJFRikKKy0J Y2hlY2tfZnVuY3Rpb25fZXhpc3RzKGF2X2ZyYW1lX2FsbG9jIEhBVkVfQVZfRlJBTUVfQUxMT0Mp CistCWNoZWNrX2Z1bmN0aW9uX2V4aXN0cyhhdl9mcmFtZV9mcmVlIEhBVkVfQVZfRlJBTUVfRlJF RSkKKyAJY21ha2VfcG9wX2NoZWNrX3N0YXRlKCkKKyBlbmRpZigpCisKK0BAIC0xNjMsMTQgKzE2 MCwxMSBAQCBtZXNzYWdlKFNUQVRVUyAiVXNpbmcgJHtGRlRfTElCfSBmb3IgRkZUIGNhbGN1bGF0 aW9ucyIpCisgaWYoTk9UIEFVRElPX1BST0NFU1NPUl9MSUIpCisgCWlmKEZGTVBFR19MSUJTV1JF U0FNUExFX0ZPVU5EKQorIAkJc2V0KEFVRElPX1BST0NFU1NPUl9MSUIgInN3cmVzYW1wbGUiKQor LQllbHNlaWYoRkZNUEVHX0xJQkFWUkVTQU1QTEVfRk9VTkQpCistCQlzZXQoQVVESU9fUFJPQ0VT U09SX0xJQiAiYXZyZXNhbXBsZSIpCisgCWVuZGlmKCkKKyBlbmRpZigpCisKKyBpZihBVURJT19Q Uk9DRVNTT1JfTElCIFNUUkVRVUFMICJzd3Jlc2FtcGxlIikKKyAJaWYoRkZNUEVHX0xJQlNXUkVT QU1QTEVfRk9VTkQpCistCQlzZXQoVVNFX0FWUkVTQU1QTEUgT0ZGKQorIAkJc2V0KFVTRV9TV1JF U0FNUExFIE9OKQorIAkJc2V0KEFVRElPX1BST0NFU1NPUl9MSUJSQVJJRVMgJHtGRk1QRUdfTElC U1dSRVNBTVBMRV9MSUJSQVJJRVN9KQorIAkJc2V0KEFVRElPX1BST0NFU1NPUl9JTkNMVURFX0RJ UlMgJHtGRk1QRUdfTElCU1dSRVNBTVBMRV9JTkNMVURFX0RJUlN9KQorQEAgLTE3OCwxNiArMTcy LDYgQEAgaWYoQVVESU9fUFJPQ0VTU09SX0xJQiBTVFJFUVVBTCAic3dyZXNhbXBsZSIpCisgCQlt ZXNzYWdlKEZBVEFMX0VSUk9SICJTZWxlY3RlZCAke0FVRElPX1BST0NFU1NPUl9MSUJ9IGZvciBh dWRpbyBwcm9jZXNzaW5nLCBidXQgdGhlIGxpYnJhcnkgaXMgbm90IGZvdW5kIikKKyAJZW5kaWYo KQorIAltZXNzYWdlKFNUQVRVUyAiVXNpbmcgJHtBVURJT19QUk9DRVNTT1JfTElCfSBmb3IgYXVk aW8gY29udmVyc2lvbiIpCistZWxzZWlmKEFVRElPX1BST0NFU1NPUl9MSUIgU1RSRVFVQUwgImF2 cmVzYW1wbGUiKQorLQlpZihGRk1QRUdfTElCQVZSRVNBTVBMRV9GT1VORCkKKy0JCXNldChVU0Vf QVZSRVNBTVBMRSBPTikKKy0JCXNldChVU0VfU1dSRVNBTVBMRSBPRkYpCistCQlzZXQoQVVESU9f UFJPQ0VTU09SX0xJQlJBUklFUyAke0ZGTVBFR19MSUJBVlJFU0FNUExFX0xJQlJBUklFU30pCist CQlzZXQoQVVESU9fUFJPQ0VTU09SX0lOQ0xVREVfRElSUyAke0ZGTVBFR19MSUJBVlJFU0FNUExF X0lOQ0xVREVfRElSU30pCistCWVsc2UoKQorLQkJbWVzc2FnZShGQVRBTF9FUlJPUiAiU2VsZWN0 ZWQgJHtBVURJT19QUk9DRVNTT1JfTElCfSBmb3IgYXVkaW8gcHJvY2Vzc2luZywgYnV0IHRoZSBs aWJyYXJ5IGlzIG5vdCBmb3VuZCIpCistCWVuZGlmKCkKKy0JbWVzc2FnZShTVEFUVVMgIlVzaW5n ICR7QVVESU9fUFJPQ0VTU09SX0xJQn0gZm9yIGF1ZGlvIGNvbnZlcnNpb24iKQorIGVsc2UoKQor IAltZXNzYWdlKFNUQVRVUyAiQnVpbGRpbmcgd2l0aG91dCBhdWRpbyBjb252ZXJzaW9uIHN1cHBv cnQsIHBsZWFzZSBpbnN0YWxsIEZGbXBlZyB3aXRoIGxpYnN3cmVzYW1wbGUiKQorIGVuZGlmKCkK K2RpZmYgLS1naXQgYS9wYWNrYWdlL2J1aWxkLnNoIGIvcGFja2FnZS9idWlsZC5zaAoraW5kZXgg ZGE2MzFhZS4uYjQxZDM2ZSAxMDA3NTUKKy0tLSBhL3BhY2thZ2UvYnVpbGQuc2gKKysrKyBiL3Bh Y2thZ2UvYnVpbGQuc2gKK0BAIC03LDggKzcsOCBAQCBzZXQgLWV1eAorCisgQkFTRV9ESVI9JChj ZCAkKGRpcm5hbWUgJDApLy4uICYmIHB3ZCkKKworLUZGTVBFR19WRVJTSU9OPTQuNC4xCistRkZN UEVHX0JVSUxEX1RBRz12NC40LjEtMQorK0ZGTVBFR19WRVJTSU9OPTUuMS4yCisrRkZNUEVHX0JV SUxEX1RBRz12JHtGRk1QRUdfVkVSU0lPTn0tMQorCisgVE1QX0JVSUxEX0RJUj0kQkFTRV9ESVIv JChta3RlbXAgLWQgYnVpbGQuWFhYWFhYWFgpCisgdHJhcCAncm0gLXJmICRUTVBfQlVJTERfRElS JyBFWElUCitkaWZmIC0tZ2l0IGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3IuaCBi L3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yLmgKK2luZGV4IDc2MjhmYzcuLjM5ZjRm NmQgMTAwNjQ0CistLS0gYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oCisrKysg Yi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oCitAQCAtMTAsOCArMTAsNiBAQAor CisgI2lmIGRlZmluZWQoVVNFX1NXUkVTQU1QTEUpCisgI2luY2x1ZGUgImF1ZGlvL2ZmbXBlZ19h dWRpb19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oIgorLSNlbGlmIGRlZmluZWQoVVNFX0FWUkVTQU1Q TEUpCistI2luY2x1ZGUgImF1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBsZS5o IgorICNlbHNlCisgI2Vycm9yICJubyBhdWRpbyBwcm9jZXNzaW5nIGxpYnJhcnkiCisgI2VuZGlm CitkaWZmIC0tZ2l0IGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBs ZS5oIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBsZS5oCitkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IGJkODVmOTIuLjAwMDAwMDAKKy0tLSBhL3NyYy9h dWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaAorKysrIC9kZXYvbnVsbAor QEAgLTEsNzIgKzAsMCBAQAorLS8vIENvcHlyaWdodCAoQykgMjAxNiAgTHVrYXMgTGFsaW5za3kK Ky0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UsIHNlZSB0aGUgTElDRU5TRSBm aWxlIGZvciBkZXRhaWxzLgorLQorLSNpZm5kZWYgQ0hST01BUFJJTlRfQVVESU9fRkZNUEVHX0FV RElPX1BST0NFU1NPUl9BVlJFU0FNUExFX0hfCistI2RlZmluZSBDSFJPTUFQUklOVF9BVURJT19G Rk1QRUdfQVVESU9fUFJPQ0VTU09SX0FWUkVTQU1QTEVfSF8KKy0KKy1leHRlcm4gIkMiIHsKKy0j aW5jbHVkZSA8bGliYXZyZXNhbXBsZS9hdnJlc2FtcGxlLmg+CistfQorLQorLW5hbWVzcGFjZSBj aHJvbWFwcmludCB7CistCistY2xhc3MgRkZtcGVnQXVkaW9Qcm9jZXNzb3IgeworLXB1YmxpYzoK Ky0JRkZtcGVnQXVkaW9Qcm9jZXNzb3IoKSB7CistCQltX3Jlc2FtcGxlX2N0eCA9IGF2cmVzYW1w bGVfYWxsb2NfY29udGV4dCgpOworLQl9CistCistCX5GRm1wZWdBdWRpb1Byb2Nlc3NvcigpIHsK Ky0JCWF2cmVzYW1wbGVfZnJlZSgmbV9yZXNhbXBsZV9jdHgpOworLQl9CistCistCXZvaWQgU2V0 Q29tcGF0aWJsZU1vZGUoKSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgImZp bHRlcl9zaXplIiwgMTYsIDApOworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJw aGFzZV9zaGlmdCIsIDgsIDApOworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJs aW5lYXJfaW50ZXJwIiwgMSwgMCk7CistCQlhdl9vcHRfc2V0X2RvdWJsZShtX3Jlc2FtcGxlX2N0 eCwgImN1dG9mZiIsIDAuOCwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRJbnB1dENoYW5uZWxMYXlv dXQoaW50NjRfdCBjaGFubmVsX2xheW91dCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBs ZV9jdHgsICJpbl9jaGFubmVsX2xheW91dCIsIGNoYW5uZWxfbGF5b3V0LCAwKTsKKy0JfQorLQor LQl2b2lkIFNldElucHV0U2FtcGxlRm9ybWF0KEFWU2FtcGxlRm9ybWF0IHNhbXBsZV9mb3JtYXQp IHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAiaW5fc2FtcGxlX2ZtdCIsIHNh bXBsZV9mb3JtYXQsIDApOworLQl9CistCistCXZvaWQgU2V0SW5wdXRTYW1wbGVSYXRlKGludCBz YW1wbGVfcmF0ZSkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJpbl9zYW1w bGVfcmF0ZSIsIHNhbXBsZV9yYXRlLCAwKTsKKy0JfQorLQorLQl2b2lkIFNldE91dHB1dENoYW5u ZWxMYXlvdXQoaW50NjRfdCBjaGFubmVsX2xheW91dCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9y ZXNhbXBsZV9jdHgsICJvdXRfY2hhbm5lbF9sYXlvdXQiLCBjaGFubmVsX2xheW91dCwgMCk7Cist CX0KKy0KKy0Jdm9pZCBTZXRPdXRwdXRTYW1wbGVGb3JtYXQoQVZTYW1wbGVGb3JtYXQgc2FtcGxl X2Zvcm1hdCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJvdXRfc2FtcGxl X2ZtdCIsIHNhbXBsZV9mb3JtYXQsIDApOworLQl9CistCistCXZvaWQgU2V0T3V0cHV0U2FtcGxl UmF0ZShpbnQgc2FtcGxlX3JhdGUpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4 LCAib3V0X3NhbXBsZV9mbXQiLCBzYW1wbGVfcmF0ZSwgMCk7CistCX0KKy0KKy0JaW50IEluaXQo KSB7CistCQlyZXR1cm4gYXZyZXNhbXBsZV9vcGVuKG1fcmVzYW1wbGVfY3R4KTsKKy0JfQorLQor LQlpbnQgQ29udmVydCh1aW50OF90ICoqb3V0LCBpbnQgb3V0X2NvdW50LCBjb25zdCB1aW50OF90 ICoqaW4sIGludCBpbl9jb3VudCkgeworLQkJcmV0dXJuIGF2cmVzYW1wbGVfY29udmVydChtX3Jl c2FtcGxlX2N0eCwgb3V0LCAwLCBvdXRfY291bnQsICh1aW50OF90ICoqKSBpbiwgMCwgaW5fY291 bnQpOworLQl9CistCistCWludCBGbHVzaCh1aW50OF90ICoqb3V0LCBpbnQgb3V0X2NvdW50KSB7 CistCQlyZXR1cm4gYXZyZXNhbXBsZV9yZWFkKG1fcmVzYW1wbGVfY3R4LCBvdXQsIG91dF9jb3Vu dCk7CistCX0KKy0KKy1wcml2YXRlOgorLQlBVkF1ZGlvUmVzYW1wbGVDb250ZXh0ICptX3Jlc2Ft cGxlX2N0eCA9IG51bGxwdHI7CistfTsKKy0KKy19OyAvLyBuYW1lc3BhY2UgY2hyb21hcHJpbnQK Ky0KKy0jZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nv cl9zd3Jlc2FtcGxlLmggYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2Ft cGxlLmgKK2luZGV4IGI4NjI2NmIuLmIxZDRiZWEgMTAwNjQ0CistLS0gYS9zcmMvYXVkaW8vZmZt cGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2FtcGxlLmgKKysrKyBiL3NyYy9hdWRpby9mZm1wZWdf YXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaAorQEAgLTI4LDMwICsyOCwyOCBAQCBwdWJsaWM6 CisgCQlhdl9vcHRfc2V0X2RvdWJsZShtX3N3cl9jdHgsICJjdXRvZmYiLCAwLjgsIDApOworIAl9 CisKKy0Jdm9pZCBTZXRJbnB1dENoYW5uZWxMYXlvdXQoaW50NjRfdCBjaGFubmVsX2xheW91dCkg eworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAiaWNsIiwgY2hhbm5lbF9sYXlvdXQsIDAp OworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAiaWNoIiwgYXZfZ2V0X2NoYW5uZWxfbGF5 b3V0X25iX2NoYW5uZWxzKGNoYW5uZWxfbGF5b3V0KSwgMCk7CisrCXZvaWQgU2V0SW5wdXRDaGFu bmVsTGF5b3V0KEFWQ2hhbm5lbExheW91dCAqY2hhbm5lbF9sYXlvdXQpIHsKKysJCWF2X29wdF9z ZXRfaW50KG1fc3dyX2N0eCwgImluX2NoYW5uZWxfbGF5b3V0IiwgY2hhbm5lbF9sYXlvdXQtPnUu bWFzaywgMCk7CisgCX0KKworIAl2b2lkIFNldElucHV0U2FtcGxlRm9ybWF0KEFWU2FtcGxlRm9y bWF0IHNhbXBsZV9mb3JtYXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgImlzZiIs IHNhbXBsZV9mb3JtYXQsIDApOworKwkJYXZfb3B0X3NldF9zYW1wbGVfZm10KG1fc3dyX2N0eCwg ImluX3NhbXBsZV9mbXQiLCBzYW1wbGVfZm9ybWF0LCAwKTsKKyAJfQorCisgCXZvaWQgU2V0SW5w dXRTYW1wbGVSYXRlKGludCBzYW1wbGVfcmF0ZSkgeworLQkJYXZfb3B0X3NldF9pbnQobV9zd3Jf Y3R4LCAiaXNyIiwgc2FtcGxlX3JhdGUsIDApOworKwkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4 LCAiaW5fc2FtcGxlX3JhdGUiLCBzYW1wbGVfcmF0ZSwgMCk7CisgCX0KKworLQl2b2lkIFNldE91 dHB1dENoYW5uZWxMYXlvdXQoaW50NjRfdCBjaGFubmVsX2xheW91dCkgeworLQkJYXZfb3B0X3Nl dF9pbnQobV9zd3JfY3R4LCAib2NsIiwgY2hhbm5lbF9sYXlvdXQsIDApOworLQkJYXZfb3B0X3Nl dF9pbnQobV9zd3JfY3R4LCAib2NoIiwgYXZfZ2V0X2NoYW5uZWxfbGF5b3V0X25iX2NoYW5uZWxz KGNoYW5uZWxfbGF5b3V0KSwgMCk7CisrCXZvaWQgU2V0T3V0cHV0Q2hhbm5lbExheW91dChBVkNo YW5uZWxMYXlvdXQgKmNoYW5uZWxfbGF5b3V0KSB7CisrCQlhdl9vcHRfc2V0X2ludChtX3N3cl9j dHgsICJvdXRfY2hhbm5lbF9sYXlvdXQiLCBjaGFubmVsX2xheW91dC0+dS5tYXNrLCAwKTsKKyAJ fQorCisgCXZvaWQgU2V0T3V0cHV0U2FtcGxlRm9ybWF0KEFWU2FtcGxlRm9ybWF0IHNhbXBsZV9m b3JtYXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgIm9zZiIsIHNhbXBsZV9mb3Jt YXQsIDApOworKwkJYXZfb3B0X3NldF9zYW1wbGVfZm10KG1fc3dyX2N0eCwgIm91dF9zYW1wbGVf Zm10Iiwgc2FtcGxlX2Zvcm1hdCwgMCk7CisgCX0KKworIAl2b2lkIFNldE91dHB1dFNhbXBsZVJh dGUoaW50IHNhbXBsZV9yYXRlKSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJvc3Ii LCBzYW1wbGVfcmF0ZSwgMCk7CisrCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJvdXRfc2Ft cGxlX3JhdGUiLCBzYW1wbGVfcmF0ZSwgMCk7CisgCX0KKworIAlpbnQgSW5pdCgpIHsKK2RpZmYg LS1naXQgYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3JlYWRlci5oIGIvc3JjL2F1ZGlvL2ZmbXBl Z19hdWRpb19yZWFkZXIuaAoraW5kZXggNTU1MDE2NC4uMWM2YjM0NiAxMDA2NDQKKy0tLSBhL3Ny Yy9hdWRpby9mZm1wZWdfYXVkaW9fcmVhZGVyLmgKKysrKyBiL3NyYy9hdWRpby9mZm1wZWdfYXVk aW9fcmVhZGVyLmgKK0BAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKKyAJYm9vbCBSZWFkKGNvbnN0 IGludDE2X3QgKipkYXRhLCBzaXplX3QgKnNpemUpOworCisgCWJvb2wgSXNPcGVuKCkgY29uc3Qg eyByZXR1cm4gbV9vcGVuZWQ7IH0KKy0JYm9vbCBJc0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4g bV9maW5pc2hlZCAmJiAhbV9nb3RfZnJhbWU7IH0KKysJYm9vbCBJc0ZpbmlzaGVkKCkgY29uc3Qg eyByZXR1cm4gIW1faGFzX21vcmVfcGFja2V0cyAmJiAhbV9oYXNfbW9yZV9mcmFtZXM7IH0KKwor IAlzdGQ6OnN0cmluZyBHZXRFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KKyAJaW50 IEdldEVycm9yQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JfY29kZTsgfQorQEAgLTc0LDIw ICs3NCwxOSBAQCBwcml2YXRlOgorIAl1aW50OF90ICptX2NvbnZlcnRfYnVmZmVyWzFdID0geyBu dWxscHRyIH07CisgCWludCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMgPSAwOworCistCUFW SW5wdXRGb3JtYXQgKm1faW5wdXRfZm10ID0gbnVsbHB0cjsKKysJY29uc3QgQVZJbnB1dEZvcm1h dCAqbV9pbnB1dF9mbXQgPSBudWxscHRyOworIAlBVkRpY3Rpb25hcnkgKm1faW5wdXRfb3B0cyA9 IG51bGxwdHI7CisKKyAJQVZGb3JtYXRDb250ZXh0ICptX2Zvcm1hdF9jdHggPSBudWxscHRyOwor IAlBVkNvZGVjQ29udGV4dCAqbV9jb2RlY19jdHggPSBudWxscHRyOworLQlBVkZyYW1lICptX2Zy YW1lID0gbnVsbHB0cjsKKyAJaW50IG1fc3RyZWFtX2luZGV4ID0gLTE7CisgCXN0ZDo6c3RyaW5n IG1fZXJyb3I7CisgCWludCBtX2Vycm9yX2NvZGUgPSAwOworLQlib29sIG1fZmluaXNoZWQgPSBm YWxzZTsKKyAJYm9vbCBtX29wZW5lZCA9IGZhbHNlOworLQlpbnQgbV9nb3RfZnJhbWUgPSAwOwor LQlBVlBhY2tldCBtX3BhY2tldDsKKy0JQVZQYWNrZXQgbV9wYWNrZXQwOworKwlib29sIG1faGFz X21vcmVfcGFja2V0cyA9IHRydWU7CisrCWJvb2wgbV9oYXNfbW9yZV9mcmFtZXMgPSB0cnVlOwor KwlBVlBhY2tldCAqbV9wYWNrZXQgPSBudWxscHRyOworKwlBVkZyYW1lICptX2ZyYW1lID0gbnVs bHB0cjsKKworIAlpbnQgbV9vdXRwdXRfc2FtcGxlX3JhdGUgPSAwOworIAlpbnQgbV9vdXRwdXRf Y2hhbm5lbHMgPSAwOworQEAgLTk4LDE5ICs5NywxMiBAQCBwcml2YXRlOgorCisgaW5saW5lIEZG bXBlZ0F1ZGlvUmVhZGVyOjpGRm1wZWdBdWRpb1JlYWRlcigpIHsKKyAJYXZfbG9nX3NldF9sZXZl bChBVl9MT0dfUVVJRVQpOworLQorLQlhdl9pbml0X3BhY2tldCgmbV9wYWNrZXQpOworLQltX3Bh Y2tldC5kYXRhID0gbnVsbHB0cjsKKy0JbV9wYWNrZXQuc2l6ZSA9IDA7CistCistCW1fcGFja2V0 MCA9IG1fcGFja2V0OworIH0KKworIGlubGluZSBGRm1wZWdBdWRpb1JlYWRlcjo6fkZGbXBlZ0F1 ZGlvUmVhZGVyKCkgeworIAlDbG9zZSgpOworIAlhdl9kaWN0X2ZyZWUoJm1faW5wdXRfb3B0cyk7 CisgCWF2X2ZyZWVwKCZtX2NvbnZlcnRfYnVmZmVyWzBdKTsKKy0JYXZfcGFja2V0X3VucmVmKCZt X3BhY2tldDApOworIH0KKworIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpTZXRJbnB1 dEZvcm1hdChjb25zdCBjaGFyICpuYW1lKSB7CitAQCAtMTM1LDExICsxMjcsMTAgQEAgaW5saW5l IGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZpbGVfbmFt ZSkgeworCisgCUNsb3NlKCk7CisKKy0gICAgYXZfaW5pdF9wYWNrZXQoJm1fcGFja2V0KTsKKy0J bV9wYWNrZXQuZGF0YSA9IG51bGxwdHI7CistCW1fcGFja2V0LnNpemUgPSAwOworLQorLQltX3Bh Y2tldDAgPSBtX3BhY2tldDsKKysJbV9wYWNrZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKysJaWYg KCFtX3BhY2tldCkgeworKwkJcmV0dXJuIGZhbHNlOworKwl9CisKKyAJcmV0ID0gYXZmb3JtYXRf b3Blbl9pbnB1dCgmbV9mb3JtYXRfY3R4LCBmaWxlX25hbWUuY19zdHIoKSwgbV9pbnB1dF9mbXQs ICZtX2lucHV0X29wdHMpOworIAlpZiAocmV0IDwgMCkgeworQEAgLTE1MywyNiArMTQ0LDMxIEBA IGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5nICZm aWxlX25hbWUpIHsKKyAJCXJldHVybiBmYWxzZTsKKyAJfQorCistCUFWQ29kZWMgKmNvZGVjOwor Kwljb25zdCBBVkNvZGVjICpjb2RlYzsKKyAJcmV0ID0gYXZfZmluZF9iZXN0X3N0cmVhbShtX2Zv cm1hdF9jdHgsIEFWTUVESUFfVFlQRV9BVURJTywgLTEsIC0xLCAmY29kZWMsIDApOworIAlpZiAo cmV0IDwgMCkgeworIAkJU2V0RXJyb3IoIkNvdWxkIG5vdCBmaW5kIGFueSBhdWRpbyBzdHJlYW0g aW4gdGhlIGZpbGUiLCByZXQpOworIAkJcmV0dXJuIGZhbHNlOworIAl9CisgCW1fc3RyZWFtX2lu ZGV4ID0gcmV0OworKwlhdXRvIHN0cmVhbSA9IG1fZm9ybWF0X2N0eC0+c3RyZWFtc1ttX3N0cmVh bV9pbmRleF07CisKKy0JbV9jb2RlY19jdHggPSBtX2Zvcm1hdF9jdHgtPnN0cmVhbXNbbV9zdHJl YW1faW5kZXhdLT5jb2RlYzsKKysJbV9jb2RlY19jdHggPSBhdmNvZGVjX2FsbG9jX2NvbnRleHQz KGNvZGVjKTsKKyAJbV9jb2RlY19jdHgtPnJlcXVlc3Rfc2FtcGxlX2ZtdCA9IEFWX1NBTVBMRV9G TVRfUzE2OworCisrCXJldCA9IGF2Y29kZWNfcGFyYW1ldGVyc190b19jb250ZXh0KG1fY29kZWNf Y3R4LCBzdHJlYW0tPmNvZGVjcGFyKTsKKysJaWYgKHJldCA8IDApIHsKKysJCVNldEVycm9yKCJD b3VsZCBub3QgY29weSB0aGUgc3RyZWFtIHBhcmFtZXRlcnMiLCByZXQpOworKwkJcmV0dXJuIGZh bHNlOworKwl9CisrCisgCXJldCA9IGF2Y29kZWNfb3BlbjIobV9jb2RlY19jdHgsIGNvZGVjLCBu dWxscHRyKTsKKyAJaWYgKHJldCA8IDApIHsKKyAJCVNldEVycm9yKCJDb3VsZCBub3Qgb3BlbiB0 aGUgY29kZWMiLCByZXQpOworIAkJcmV0dXJuIGZhbHNlOworIAl9CisKKy0JaWYgKCFtX2NvZGVj X2N0eC0+Y2hhbm5lbF9sYXlvdXQpIHsKKy0JCW1fY29kZWNfY3R4LT5jaGFubmVsX2xheW91dCA9 IGF2X2dldF9kZWZhdWx0X2NoYW5uZWxfbGF5b3V0KG1fY29kZWNfY3R4LT5jaGFubmVscyk7Cist CX0KKysJYXZfZHVtcF9mb3JtYXQobV9mb3JtYXRfY3R4LCAwLCAiZm9vIiwgMCk7CisKKyAJbV9m cmFtZSA9IGF2X2ZyYW1lX2FsbG9jKCk7CisgCWlmICghbV9mcmFtZSkgeworQEAgLTE4MywxOSAr MTc5LDIzIEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNvbnN0IHN0ZDo6 c3RyaW5nICZmaWxlX25hbWUpIHsKKyAJCW1fb3V0cHV0X3NhbXBsZV9yYXRlID0gbV9jb2RlY19j dHgtPnNhbXBsZV9yYXRlOworIAl9CisKKy0JaWYgKCFtX291dHB1dF9jaGFubmVscykgeworLQkJ bV9vdXRwdXRfY2hhbm5lbHMgPSBtX2NvZGVjX2N0eC0+Y2hhbm5lbHM7CisrCUFWQ2hhbm5lbExh eW91dCBvdXRwdXRfY2hhbm5lbF9sYXlvdXQ7CisrCWlmIChtX291dHB1dF9jaGFubmVscykgewor KwkJYXZfY2hhbm5lbF9sYXlvdXRfZGVmYXVsdCgmb3V0cHV0X2NoYW5uZWxfbGF5b3V0LCBtX291 dHB1dF9jaGFubmVscyk7CisrCX0gZWxzZSB7CisrCQltX291dHB1dF9jaGFubmVscyA9IG1fY29k ZWNfY3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHM7CisrCQlhdl9jaGFubmVsX2xheW91dF9kZWZh dWx0KCZvdXRwdXRfY2hhbm5lbF9sYXlvdXQsIG1fb3V0cHV0X2NoYW5uZWxzKTsKKyAJfQorCist CWlmIChtX2NvZGVjX2N0eC0+c2FtcGxlX2ZtdCAhPSBBVl9TQU1QTEVfRk1UX1MxNiB8fCBtX2Nv ZGVjX2N0eC0+Y2hhbm5lbHMgIT0gbV9vdXRwdXRfY2hhbm5lbHMgfHwgbV9jb2RlY19jdHgtPnNh bXBsZV9yYXRlICE9IG1fb3V0cHV0X3NhbXBsZV9yYXRlKSB7CisrCWlmIChtX2NvZGVjX2N0eC0+ c2FtcGxlX2ZtdCAhPSBBVl9TQU1QTEVfRk1UX1MxNiB8fCBtX2NvZGVjX2N0eC0+Y2hfbGF5b3V0 Lm5iX2NoYW5uZWxzICE9IG1fb3V0cHV0X2NoYW5uZWxzIHx8IG1fY29kZWNfY3R4LT5zYW1wbGVf cmF0ZSAhPSBtX291dHB1dF9zYW1wbGVfcmF0ZSkgeworIAkJbV9jb252ZXJ0ZXIucmVzZXQobmV3 IEZGbXBlZ0F1ZGlvUHJvY2Vzc29yKCkpOworIAkJbV9jb252ZXJ0ZXItPlNldENvbXBhdGlibGVN b2RlKCk7CisgCQltX2NvbnZlcnRlci0+U2V0SW5wdXRTYW1wbGVGb3JtYXQobV9jb2RlY19jdHgt PnNhbXBsZV9mbXQpOworIAkJbV9jb252ZXJ0ZXItPlNldElucHV0U2FtcGxlUmF0ZShtX2NvZGVj X2N0eC0+c2FtcGxlX3JhdGUpOworLQkJbV9jb252ZXJ0ZXItPlNldElucHV0Q2hhbm5lbExheW91 dChtX2NvZGVjX2N0eC0+Y2hhbm5lbF9sYXlvdXQpOworKwkJbV9jb252ZXJ0ZXItPlNldElucHV0 Q2hhbm5lbExheW91dCgmKG1fY29kZWNfY3R4LT5jaF9sYXlvdXQpKTsKKyAJCW1fY29udmVydGVy LT5TZXRPdXRwdXRTYW1wbGVGb3JtYXQoQVZfU0FNUExFX0ZNVF9TMTYpOworIAkJbV9jb252ZXJ0 ZXItPlNldE91dHB1dFNhbXBsZVJhdGUobV9vdXRwdXRfc2FtcGxlX3JhdGUpOworLQkJbV9jb252 ZXJ0ZXItPlNldE91dHB1dENoYW5uZWxMYXlvdXQoYXZfZ2V0X2RlZmF1bHRfY2hhbm5lbF9sYXlv dXQobV9vdXRwdXRfY2hhbm5lbHMpKTsKKysJCW1fY29udmVydGVyLT5TZXRPdXRwdXRDaGFubmVs TGF5b3V0KCZvdXRwdXRfY2hhbm5lbF9sYXlvdXQpOworIAkJYXV0byByZXQgPSBtX2NvbnZlcnRl ci0+SW5pdCgpOworIAkJaWYgKHJldCAhPSAwKSB7CisgCQkJU2V0RXJyb3IoIkNvdWxkIG5vdCBj cmVhdGUgYW4gYXVkaW8gY29udmVydGVyIGluc3RhbmNlIiwgcmV0KTsKK0BAIC0yMDMsMTAgKzIw MywxMSBAQCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihjb25zdCBzdGQ6OnN0 cmluZyAmZmlsZV9uYW1lKSB7CisgCQl9CisgCX0KKworKwlhdl9jaGFubmVsX2xheW91dF91bmlu aXQoJm91dHB1dF9jaGFubmVsX2xheW91dCk7CisrCisgCW1fb3BlbmVkID0gdHJ1ZTsKKy0JbV9m aW5pc2hlZCA9IGZhbHNlOworLQltX2dvdF9mcmFtZSA9IDA7CistCW1fbmJfcGFja2V0cyA9IDA7 CisrCW1faGFzX21vcmVfcGFja2V0cyA9IHRydWU7CisrCW1faGFzX21vcmVfZnJhbWVzID0gdHJ1 ZTsKKyAJbV9kZWNvZGVfZXJyb3IgPSAwOworCisgCXJldHVybiB0cnVlOworQEAgLTIxNCw2ICsy MTUsNyBAQCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihjb25zdCBzdGQ6OnN0 cmluZyAmZmlsZV9uYW1lKSB7CisKKyBpbmxpbmUgdm9pZCBGRm1wZWdBdWRpb1JlYWRlcjo6Q2xv c2UoKSB7CisgCWF2X2ZyYW1lX2ZyZWUoJm1fZnJhbWUpOworKwlhdl9wYWNrZXRfZnJlZSgmbV9w YWNrZXQpOworCisgCW1fc3RyZWFtX2luZGV4ID0gLTE7CisKK0BAIC0yNTIsOTEgKzI1NCw5OCBA QCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6UmVhZChjb25zdCBpbnQxNl90ICoqZGF0 YSwgc2l6ZV90ICpzaXplKSB7CisgCQlyZXR1cm4gZmFsc2U7CisgCX0KKworKwkqZGF0YSA9IG51 bGxwdHI7CisrCSpzaXplID0gMDsKKysKKyAJaW50IHJldDsKKysJYm9vbCBuZWVkc19wYWNrZXQg PSBmYWxzZTsKKyAJd2hpbGUgKHRydWUpIHsKKy0JCXdoaWxlIChtX3BhY2tldC5zaXplIDw9IDAp IHsKKy0JCQlhdl9wYWNrZXRfdW5yZWYoJm1fcGFja2V0MCk7CistCQkJYXZfaW5pdF9wYWNrZXQo Jm1fcGFja2V0KTsKKy0JCQltX3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0JCQltX3BhY2tldC5z aXplID0gMDsKKy0JCQlyZXQgPSBhdl9yZWFkX2ZyYW1lKG1fZm9ybWF0X2N0eCwgJm1fcGFja2V0 KTsKKysJCXdoaWxlIChuZWVkc19wYWNrZXQgJiYgbV9wYWNrZXQtPnNpemUgPT0gMCkgeworKwkJ CXJldCA9IGF2X3JlYWRfZnJhbWUobV9mb3JtYXRfY3R4LCBtX3BhY2tldCk7CisgCQkJaWYgKHJl dCA8IDApIHsKKyAJCQkJaWYgKHJldCA9PSBBVkVSUk9SX0VPRikgeworLQkJCQkJbV9maW5pc2hl ZCA9IHRydWU7CisrCQkJCQluZWVkc19wYWNrZXQgPSBmYWxzZTsKKysJCQkJCW1faGFzX21vcmVf cGFja2V0cyA9IGZhbHNlOworIAkJCQkJYnJlYWs7CistCQkJCX0gZWxzZSB7CisrCQkJCX0KKysJ CQkJU2V0RXJyb3IoIkVycm9yIHJlYWRpbmcgZnJvbSB0aGUgYXVkaW8gc291cmNlIiwgcmV0KTsK KysJCQkJcmV0dXJuIGZhbHNlOworKwkJCX0KKysJCQlpZiAobV9wYWNrZXQtPnN0cmVhbV9pbmRl eCA9PSBtX3N0cmVhbV9pbmRleCkgeworKwkJCQluZWVkc19wYWNrZXQgPSBmYWxzZTsKKysJCQl9 IGVsc2UgeworKwkJCQlhdl9wYWNrZXRfdW5yZWYobV9wYWNrZXQpOworKwkJCX0KKysJCX0KKysK KysJCWlmIChtX3BhY2tldC0+c2l6ZSAhPSAwKSB7CisrCQkJcmV0ID0gYXZjb2RlY19zZW5kX3Bh Y2tldChtX2NvZGVjX2N0eCwgbV9wYWNrZXQpOworKwkJCWlmIChyZXQgPCAwKSB7CisrCQkJCWlm IChyZXQgIT0gQVZFUlJPUihFQUdBSU4pKSB7CisgCQkJCQlTZXRFcnJvcigiRXJyb3IgcmVhZGlu ZyBmcm9tIHRoZSBhdWRpbyBzb3VyY2UiLCByZXQpOworIAkJCQkJcmV0dXJuIGZhbHNlOworIAkJ CQl9CistCQkJfQorLQkJCW1fcGFja2V0MCA9IG1fcGFja2V0OworLQkJCWlmIChtX3BhY2tldC5z dHJlYW1faW5kZXggIT0gbV9zdHJlYW1faW5kZXgpIHsKKy0JCQkJbV9wYWNrZXQuZGF0YSA9IG51 bGxwdHI7CistCQkJCW1fcGFja2V0LnNpemUgPSAwOworIAkJCX0gZWxzZSB7CistCQkJCW1fbmJf cGFja2V0cysrOworKwkJCQlhdl9wYWNrZXRfdW5yZWYobV9wYWNrZXQpOworIAkJCX0KKyAJCX0K KworLQkJcmV0ID0gYXZjb2RlY19kZWNvZGVfYXVkaW80KG1fY29kZWNfY3R4LCBtX2ZyYW1lLCAm bV9nb3RfZnJhbWUsICZtX3BhY2tldCk7CisrCQlyZXQgPSBhdmNvZGVjX3JlY2VpdmVfZnJhbWUo bV9jb2RlY19jdHgsIG1fZnJhbWUpOworIAkJaWYgKHJldCA8IDApIHsKKy0JCQlpZiAobV9kZWNv ZGVfZXJyb3IpIHsKKy0JCQkJU2V0RXJyb3IoIkVycm9yIGRlY29kaW5nIGF1ZGlvIGZyYW1lIiwg bV9kZWNvZGVfZXJyb3IpOworLQkJCQlyZXR1cm4gZmFsc2U7CisrCQkJaWYgKHJldCA9PSBBVkVS Uk9SX0VPRikgeworKwkJCQltX2hhc19tb3JlX2ZyYW1lcyA9IGZhbHNlOworKwkJCX0gZWxzZSBp ZiAocmV0ID09IEFWRVJST1IoRUFHQUlOKSkgeworKwkJCQlpZiAobV9oYXNfbW9yZV9wYWNrZXRz KSB7CisrCQkJCQluZWVkc19wYWNrZXQgPSB0cnVlOworKwkJCQkJY29udGludWU7CisrCQkJCX0g ZWxzZSB7CisrCQkJCQltX2hhc19tb3JlX2ZyYW1lcyA9IGZhbHNlOworKwkJCQl9CisgCQkJfQor LQkJCW1fZGVjb2RlX2Vycm9yID0gcmV0OworLQkJCW1fcGFja2V0LmRhdGEgPSBudWxscHRyOwor LQkJCW1fcGFja2V0LnNpemUgPSAwOworLQkJCWNvbnRpbnVlOworKwkJCVNldEVycm9yKCJFcnJv ciBkZWNvZGluZyB0aGUgYXVkaW8gc291cmNlIiwgcmV0KTsKKysJCQlyZXR1cm4gZmFsc2U7Cisg CQl9CisKKy0JCWJyZWFrOworLQl9CistCistCW1fZGVjb2RlX2Vycm9yID0gMDsKKy0KKy0JY29u c3QgaW50IGRlY29kZWQgPSBzdGQ6Om1pbihyZXQsIG1fcGFja2V0LnNpemUpOworLQltX3BhY2tl dC5kYXRhICs9IGRlY29kZWQ7CistCW1fcGFja2V0LnNpemUgLT0gZGVjb2RlZDsKKy0KKy0JaWYg KG1fZ290X2ZyYW1lKSB7CistCQlpZiAobV9jb252ZXJ0ZXIpIHsKKy0JCQlpZiAobV9mcmFtZS0+ bmJfc2FtcGxlcyA+IG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcykgeworLQkJCQlpbnQgbGlu c2l6ZTsKKy0JCQkJYXZfZnJlZXAoJm1fY29udmVydF9idWZmZXJbMF0pOworLQkJCQltX2NvbnZl cnRfYnVmZmVyX25iX3NhbXBsZXMgPSBzdGQ6Om1heCgxMDI0ICogOCwgbV9mcmFtZS0+bmJfc2Ft cGxlcyk7CistCQkJCXJldCA9IGF2X3NhbXBsZXNfYWxsb2MobV9jb252ZXJ0X2J1ZmZlciwgJmxp bnNpemUsIG1fY29kZWNfY3R4LT5jaGFubmVscywgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVz LCBBVl9TQU1QTEVfRk1UX1MxNiwgMSk7CistCQkJCWlmIChyZXQgPCAwKSB7CistCQkJCQlTZXRF cnJvcigiQ291bGRuJ3QgYWxsb2NhdGUgYXVkaW8gY29udmVydGVyIGJ1ZmZlciIsIHJldCk7Cisr CQlpZiAobV9mcmFtZS0+bmJfc2FtcGxlcyA+IDApIHsKKysJCQlpZiAobV9jb252ZXJ0ZXIpIHsK KysJCQkJaWYgKG1fZnJhbWUtPm5iX3NhbXBsZXMgPiBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBs ZXMpIHsKKysJCQkJCWludCBsaW5zaXplOworKwkJCQkJYXZfZnJlZXAoJm1fY29udmVydF9idWZm ZXJbMF0pOworKwkJCQkJbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzID0gc3RkOjptYXgoMTAy NCAqIDgsIG1fZnJhbWUtPm5iX3NhbXBsZXMpOworKwkJCQkJcmV0ID0gYXZfc2FtcGxlc19hbGxv YyhtX2NvbnZlcnRfYnVmZmVyLCAmbGluc2l6ZSwgbV9jb2RlY19jdHgtPmNoX2xheW91dC5uYl9j aGFubmVscywgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzLCBBVl9TQU1QTEVfRk1UX1MxNiwg MSk7CisrCQkJCQlpZiAocmV0IDwgMCkgeworKwkJCQkJCVNldEVycm9yKCJDb3VsZG4ndCBhbGxv Y2F0ZSBhdWRpbyBjb252ZXJ0ZXIgYnVmZmVyIiwgcmV0KTsKKysJCQkJCQlyZXR1cm4gZmFsc2U7 CisrCQkJCQl9CisrCQkJCX0KKysJCQkJYXV0byBuYl9zYW1wbGVzID0gbV9jb252ZXJ0ZXItPkNv bnZlcnQobV9jb252ZXJ0X2J1ZmZlciwgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzLCAoY29u c3QgdWludDhfdCAqKikgbV9mcmFtZS0+ZGF0YSwgbV9mcmFtZS0+bmJfc2FtcGxlcyk7CisrCQkJ CWlmIChuYl9zYW1wbGVzIDwgMCkgeworKwkJCQkJU2V0RXJyb3IoIkNvdWxkbid0IGNvbnZlcnQg YXVkaW8iLCByZXQpOworIAkJCQkJcmV0dXJuIGZhbHNlOworIAkJCQl9CistCQkJfQorLQkJCWF1 dG8gbmJfc2FtcGxlcyA9IG1fY29udmVydGVyLT5Db252ZXJ0KG1fY29udmVydF9idWZmZXIsIG1f Y29udmVydF9idWZmZXJfbmJfc2FtcGxlcywgKGNvbnN0IHVpbnQ4X3QgKiopIG1fZnJhbWUtPmRh dGEsIG1fZnJhbWUtPm5iX3NhbXBsZXMpOworLQkJCWlmIChuYl9zYW1wbGVzIDwgMCkgeworLQkJ CQlTZXRFcnJvcigiQ291bGRuJ3QgY29udmVydCBhdWRpbyIsIHJldCk7CistCQkJCXJldHVybiBm YWxzZTsKKy0JCQl9CistCQkJKmRhdGEgPSAoY29uc3QgaW50MTZfdCAqKSBtX2NvbnZlcnRfYnVm ZmVyWzBdOworLQkJCSpzaXplID0gbmJfc2FtcGxlczsKKy0JCX0gZWxzZSB7CistCQkJKmRhdGEg PSAoY29uc3QgaW50MTZfdCAqKSBtX2ZyYW1lLT5kYXRhWzBdOworLQkJCSpzaXplID0gbV9mcmFt ZS0+bmJfc2FtcGxlczsKKy0JCX0KKy0JfSBlbHNlIHsKKy0JCWlmIChtX2ZpbmlzaGVkICYmIG1f Y29udmVydGVyKSB7CistCQkJYXV0byBuYl9zYW1wbGVzID0gbV9jb252ZXJ0ZXItPkZsdXNoKG1f Y29udmVydF9idWZmZXIsIG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcyk7CistCQkJaWYgKG5i X3NhbXBsZXMgPCAwKSB7CistCQkJCVNldEVycm9yKCJDb3VsZG4ndCBjb252ZXJ0IGF1ZGlvIiwg cmV0KTsKKy0JCQkJcmV0dXJuIGZhbHNlOworLQkJCX0gZWxzZSBpZiAobmJfc2FtcGxlcyA+IDAp IHsKKy0JCQkJbV9nb3RfZnJhbWUgPSAxOworIAkJCQkqZGF0YSA9IChjb25zdCBpbnQxNl90ICop IG1fY29udmVydF9idWZmZXJbMF07CisgCQkJCSpzaXplID0gbmJfc2FtcGxlczsKKysJCQl9IGVs c2UgeworKwkJCQkqZGF0YSA9IChjb25zdCBpbnQxNl90ICopIG1fZnJhbWUtPmRhdGFbMF07Cisr CQkJCSpzaXplID0gbV9mcmFtZS0+bmJfc2FtcGxlczsKKysJCQl9CisrCQl9IGVsc2UgeworKwkJ CWlmIChtX2NvbnZlcnRlcikgeworKwkJCQlpZiAoSXNGaW5pc2hlZCgpKSB7CisrCQkJCQlhdXRv IG5iX3NhbXBsZXMgPSBtX2NvbnZlcnRlci0+Rmx1c2gobV9jb252ZXJ0X2J1ZmZlciwgbV9jb252 ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzKTsKKysJCQkJCWlmIChuYl9zYW1wbGVzIDwgMCkgeworKwkJ CQkJCVNldEVycm9yKCJDb3VsZG4ndCBjb252ZXJ0IGF1ZGlvIiwgcmV0KTsKKysJCQkJCQlyZXR1 cm4gZmFsc2U7CisrCQkJCQl9IGVsc2UgaWYgKG5iX3NhbXBsZXMgPiAwKSB7CisrCQkJCQkJKmRh dGEgPSAoY29uc3QgaW50MTZfdCAqKSBtX2NvbnZlcnRfYnVmZmVyWzBdOworKwkJCQkJCSpzaXpl ID0gbmJfc2FtcGxlczsKKysJCQkJCX0KKysJCQkJfQorIAkJCX0KKyAJCX0KKy0JfQorCistCXJl dHVybiB0cnVlOworKwkJcmV0dXJuIHRydWU7CisrCX0KKyB9CisKKyBpbmxpbmUgdm9pZCBGRm1w ZWdBdWRpb1JlYWRlcjo6U2V0RXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSwgaW50IGVycm51bSkg eworZGlmZiAtLWdpdCBhL3Rlc3RzL0NNYWtlTGlzdHMudHh0IGIvdGVzdHMvQ01ha2VMaXN0cy50 eHQKK2luZGV4IGEyYjUxN2IuLjEyM2U2NDMgMTAwNjQ0CistLS0gYS90ZXN0cy9DTWFrZUxpc3Rz LnR4dAorKysrIGIvdGVzdHMvQ01ha2VMaXN0cy50eHQKK0BAIC0zOCw2ICszOCwxMiBAQCBzZXQo U1JDUworCisgaWYoQlVJTERfVE9PTFMpCisgCXNldChTUkNTICR7U1JDU30gLi4vc3JjL2F1ZGlv L2ZmbXBlZ19hdWRpb19yZWFkZXJfdGVzdC5jcHApCisrICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMo CisrICAgICAgICAke0ZGTVBFR19MSUJBVkZPUk1BVF9JTkNMVURFX0RJUlN9CisrICAgICAgICAk e0ZGTVBFR19MSUJBVkNPREVDX0lOQ0xVREVfRElSU30KKysgICAgICAgICR7RkZNUEVHX0xJQkFW VVRJTF9JTkNMVURFX0RJUlN9CisrICAgICAgICAke0FVRElPX1BST0NFU1NPUl9JTkNMVURFX0RJ UlN9CisrICAgICkKKyAJbGlua19saWJyYXJpZXMoZnBjYWxjX2xpYnMpCisgZW5kaWYoKQorCist LSAKKzIuMzguMQorCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUg Yi9zcmNwa2dzL2Nocm9tYXByaW50L3RlbXBsYXRlCmluZGV4IDdlZjc4Mzg5NDlmM2EuLjFmN2Ji YzcwYTIyYzggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9jaHJvbWFwcmludC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ2Nocm9tYXByaW50JwogcGtnbmFtZT1jaHJvbWFwcmludAogdmVyc2lvbj0xLjUu MQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9h cmdzPSItREJVSUxEX1RPT0xTPU9OIgogbWFrZV9jaGVja190YXJnZXQ9ImNoZWNrIgoKRnJvbSA3 NDFkNTZjMTE1OWVjMWU1ZGNjMmEzMmM4YmJmN2FiNjFmM2I1MzhlIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjIvMTE1XSBjaHJvbWl1bTog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4vcGF0Y2hlcy9jaHJvbWl1bS0xMTktZmZt cGVnLTQuNC5wYXRjaCAgICAgfCAyMCAtLS0tLS0tLQogc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVz L2ZmbXBlZzUucGF0Y2ggICAgICAgIHwgNDcgKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9j aHJvbWl1bS90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIDMgZmlsZXMgY2hh bmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2Nocm9taXVtLTExOS1mZm1wZWctNC40LnBhdGNo CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBlZzUucGF0 Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvY2hyb21pdW0tMTE5LWZm bXBlZy00LjQucGF0Y2ggYi9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvY2hyb21pdW0tMTE5LWZm bXBlZy00LjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0ZDA0YjE2NmJh MzcuLjAwMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2Nocm9taXVt LTExOS1mZm1wZWctNC40LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotLS0t IGEvbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYy5vcmlnCi0rKysgYi9tZWRpYS9maWx0 ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCi1AQCAtMzkwLDcgKzM5MCw3IEBACi0gCi0gICBzY29wZWRf cmVmcHRyPERlY29kZXJCdWZmZXI+IGJ1ZmZlcjsKLSAKLS0gICAgc2l6ZV90IHNpZGVfZGF0YV9z aXplID0gMDsKLSsgICAgaW50IHNpZGVfZGF0YV9zaXplID0gMDsKLSAgICAgdWludDhfdCogc2lk ZV9kYXRhID0gYXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCi0gICAgICAgICBwYWNrZXQuZ2V0KCks IEFWX1BLVF9EQVRBX01BVFJPU0tBX0JMT0NLQURESVRJT05BTCwgJnNpZGVfZGF0YV9zaXplKTsK LSAKLUBAIC00NTMsNyArNDUzLDcgQEAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwYWNrZXQtPnNpemUgLSBkYXRhX29mZnNldCk7Ci0gICAgIH0KLSAKLS0gICAgc2l6 ZV90IHNraXBfc2FtcGxlc19zaXplID0gMDsKLSsgICAgaW50IHNraXBfc2FtcGxlc19zaXplID0g MDsKLSAgICAgY29uc3QgdWludDMyX3QqIHNraXBfc2FtcGxlc19wdHIgPQotICAgICAgICAgcmVp bnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAot ICAgICAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfU0tJUF9TQU1QTEVTLCAmc2tp cF9zYW1wbGVzX3NpemUpKTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9m Zm1wZWc1LnBhdGNoIGIvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMjRlMmRhMzhlMzRjYQotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBA IC0wLDAgKzEsNDcgQEAKKy0tLSBhL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MJMjAy My0wMS0yMyAxNzozMzo1Ny4zNjYyMTM4MDUgKzAyMDAKKysrKyBiL21lZGlhL2ZpbHRlcnMvZmZt cGVnX2RlbXV4ZXIuY2MJMjAyMy0wMS0yMyAxNzo0MzowOS4yODM0MzY5ODMgKzAyMDAKK0BAIC05 MiwyNCArOTIsMTIgQEAKKyAKKyBzdGF0aWMgYmFzZTo6VGltZURlbHRhIEV4dHJhY3RTdGFydFRp bWUoQVZTdHJlYW0qIHN0cmVhbSkgeworICAgLy8gVGhlIGRlZmF1bHQgc3RhcnQgdGltZSBpcyB6 ZXJvLgorLSAgYmFzZTo6VGltZURlbHRhIHN0YXJ0X3RpbWU7CisrICBiYXNlOjpUaW1lRGVsdGEg c3RhcnRfdGltZSA9IGtOb1RpbWVzdGFtcDsKKyAKKyAgIC8vIEZpcnN0IHRyeSB0byB1c2UgIHRo ZSB8c3RhcnRfdGltZXwgdmFsdWUgYXMgaXMuCistICBpZiAoc3RyZWFtLT5zdGFydF90aW1lICE9 IGtOb0ZGbXBlZ1RpbWVzdGFtcCkKKysgIGlmIChzdHJlYW0tPnN0YXJ0X3RpbWUgIT0ga05vRkZt cGVnVGltZXN0YW1wKSAvLyBBVl9OT1BUU19WQUxVRQorICAgICBzdGFydF90aW1lID0gQ29udmVy dEZyb21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgc3RyZWFtLT5zdGFydF90aW1lKTsKKyAK Ky0gIC8vIE5leHQgdHJ5IHRvIHVzZSB0aGUgZmlyc3QgRFRTIHZhbHVlLCBmb3IgY29kZWNzIHdo ZXJlIHdlIGtub3cgUFRTID09IERUUworLSAgLy8gKGV4Y2x1ZGVzIGFsbCBIMjZ4IGNvZGVjcyku IFRoZSBzdGFydCB0aW1lIG11c3QgYmUgcmV0dXJuZWQgaW4gUFRTLgorLSAgaWYgKGF2X3N0cmVh bV9nZXRfZmlyc3RfZHRzKHN0cmVhbSkgIT0ga05vRkZtcGVnVGltZXN0YW1wICYmCistICAgICAg c3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfSEVWQyAmJgorLSAgICAg IHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0gyNjQgJiYKKy0gICAg ICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9NUEVHNCkgeworLSAg ICBjb25zdCBiYXNlOjpUaW1lRGVsdGEgZmlyc3RfcHRzID0KKy0gICAgICAgIENvbnZlcnRGcm9t VGltZUJhc2Uoc3RyZWFtLT50aW1lX2Jhc2UsIGF2X3N0cmVhbV9nZXRfZmlyc3RfZHRzKHN0cmVh bSkpOworLSAgICBpZiAoZmlyc3RfcHRzIDwgc3RhcnRfdGltZSkKKy0gICAgICBzdGFydF90aW1l ID0gZmlyc3RfcHRzOworLSAgfQorLQorICAgcmV0dXJuIHN0YXJ0X3RpbWU7CisgfQorIAorQEAg LTE1OTcsNyArMTU4NSw3IEBACisgICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6IHN0cmVhbXNf KSB7CisgICAgIGlmICghc3RyZWFtIHx8IHN0cmVhbS0+SXNFbmFibGVkKCkgIT0gZW5hYmxlZCkK KyAgICAgICBjb250aW51ZTsKKy0gICAgaWYgKGF2X3N0cmVhbV9nZXRfZmlyc3RfZHRzKHN0cmVh bS0+YXZfc3RyZWFtKCkpID09IGtJbnZhbGlkUFRTTWFya2VyKQorKyAgICBpZiAoc3RyZWFtLT5h dl9zdHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICBjb250aW51 ZTsKKyAgICAgaWYgKCFsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0gfHwKKyAgICAgICAgIHN0cmVh bS0+c3RhcnRfdGltZSgpIDwgbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFtLT5zdGFydF90aW1lKCkp IHsKK0BAIC0xNjE4LDcgKzE2MDYsNyBAQAorICAgICBpZiAoc3RyZWFtLT50eXBlKCkgIT0gRGVt dXhlclN0cmVhbTo6VklERU8pCisgICAgICAgY29udGludWU7CisgCistICAgIGlmIChhdl9zdHJl YW1fZ2V0X2ZpcnN0X2R0cyhzdHJlYW0tPmF2X3N0cmVhbSgpKSA9PSBrSW52YWxpZFBUU01hcmtl cikKKysgICAgaWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0gQVZfTk9QVFNf VkFMVUUpCisgICAgICAgY29udGludWU7CisgCisgICAgIGlmICghc3RyZWFtLT5Jc0VuYWJsZWQo KSkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUgYi9zcmNwa2dzL2Nocm9t aXVtL3RlbXBsYXRlCmluZGV4IGIwMjM5NDZmM2VjN2IuLmZlMzZhNmRjZTIwZDMgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jaHJvbWl1bS90ZW1w bGF0ZQpAQCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9Y2hyb21pdW0KICMgU2VlIGh0dHBzOi8vY2hy b21pdW1kYXNoLmFwcHNwb3QuY29tL3JlbGVhc2VzP3BsYXRmb3JtPUxpbnV4IGZvciB0aGUgbGF0 ZXN0IHZlcnNpb24KIHZlcnNpb249MTE5LjAuNjA0NS4xMDUKLXJldmlzaW9uPTMKK3JldmlzaW9u PTQKIGFyY2hzPSJpNjg2KiB4ODZfNjQqIGFhcmNoNjQqIGFybXY3bCoiCiBob3N0bWFrZWRlcGVu ZHM9IgogICQodm9wdF9pZiBjbGFuZyAiY2xhbmcgbGxkIGxsdm0xNSIpCgpGcm9tIDdiZjFhNDgy Y2Y2MmI0OWNhZTJkNGNmZDgxZTQzMDg4MjJlMDFmYWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyMy8xMTVdIGNtdXM6IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gg fCA0NyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtncy9jbXVzL3BhdGNoZXMvZmZt cGVnNi5wYXRjaCAgICAgfCAxMiArKysrKysrCiBzcmNwa2dzL2NtdXMvdGVtcGxhdGUgICAgICAg ICAgICAgICAgICB8ICAyICstCiAzIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDQ4 IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvY2hyb21pdW0vcGF0Y2hl cy9mZm1wZWc1LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jbXVzL3BhdGNoZXMv ZmZtcGVnNi5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9mZm1w ZWc1LnBhdGNoIGIvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0ZTJkYTM4ZTM0Y2EuLjAwMDAwMDAwMDAwMDAKLS0t IGEvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSw0NyArMCwwIEBACi0tLS0gYS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCTIw MjMtMDEtMjMgMTc6MzM6NTcuMzY2MjEzODA1ICswMjAwCi0rKysgYi9tZWRpYS9maWx0ZXJzL2Zm bXBlZ19kZW11eGVyLmNjCTIwMjMtMDEtMjMgMTc6NDM6MDkuMjgzNDM2OTgzICswMjAwCi1AQCAt OTIsMjQgKzkyLDEyIEBACi0gCi0gc3RhdGljIGJhc2U6OlRpbWVEZWx0YSBFeHRyYWN0U3RhcnRU aW1lKEFWU3RyZWFtKiBzdHJlYW0pIHsKLSAgIC8vIFRoZSBkZWZhdWx0IHN0YXJ0IHRpbWUgaXMg emVyby4KLS0gIGJhc2U6OlRpbWVEZWx0YSBzdGFydF90aW1lOwotKyAgYmFzZTo6VGltZURlbHRh IHN0YXJ0X3RpbWUgPSBrTm9UaW1lc3RhbXA7Ci0gCi0gICAvLyBGaXJzdCB0cnkgdG8gdXNlICB0 aGUgfHN0YXJ0X3RpbWV8IHZhbHVlIGFzIGlzLgotLSAgaWYgKHN0cmVhbS0+c3RhcnRfdGltZSAh PSBrTm9GRm1wZWdUaW1lc3RhbXApCi0rICBpZiAoc3RyZWFtLT5zdGFydF90aW1lICE9IGtOb0ZG bXBlZ1RpbWVzdGFtcCkgLy8gQVZfTk9QVFNfVkFMVUUKLSAgICAgc3RhcnRfdGltZSA9IENvbnZl cnRGcm9tVGltZUJhc2Uoc3RyZWFtLT50aW1lX2Jhc2UsIHN0cmVhbS0+c3RhcnRfdGltZSk7Ci0g Ci0tICAvLyBOZXh0IHRyeSB0byB1c2UgdGhlIGZpcnN0IERUUyB2YWx1ZSwgZm9yIGNvZGVjcyB3 aGVyZSB3ZSBrbm93IFBUUyA9PSBEVFMKLS0gIC8vIChleGNsdWRlcyBhbGwgSDI2eCBjb2RlY3Mp LiBUaGUgc3RhcnQgdGltZSBtdXN0IGJlIHJldHVybmVkIGluIFBUUy4KLS0gIGlmIChhdl9zdHJl YW1fZ2V0X2ZpcnN0X2R0cyhzdHJlYW0pICE9IGtOb0ZGbXBlZ1RpbWVzdGFtcCAmJgotLSAgICAg IHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0hFVkMgJiYKLS0gICAg ICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IMjY0ICYmCi0tICAg ICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfTVBFRzQpIHsKLS0g ICAgY29uc3QgYmFzZTo6VGltZURlbHRhIGZpcnN0X3B0cyA9Ci0tICAgICAgICBDb252ZXJ0RnJv bVRpbWVCYXNlKHN0cmVhbS0+dGltZV9iYXNlLCBhdl9zdHJlYW1fZ2V0X2ZpcnN0X2R0cyhzdHJl YW0pKTsKLS0gICAgaWYgKGZpcnN0X3B0cyA8IHN0YXJ0X3RpbWUpCi0tICAgICAgc3RhcnRfdGlt ZSA9IGZpcnN0X3B0czsKLS0gIH0KLS0KLSAgIHJldHVybiBzdGFydF90aW1lOwotIH0KLSAKLUBA IC0xNTk3LDcgKzE1ODUsNyBAQAotICAgZm9yIChjb25zdCBhdXRvJiBzdHJlYW0gOiBzdHJlYW1z XykgewotICAgICBpZiAoIXN0cmVhbSB8fCBzdHJlYW0tPklzRW5hYmxlZCgpICE9IGVuYWJsZWQp Ci0gICAgICAgY29udGludWU7Ci0tICAgIGlmIChhdl9zdHJlYW1fZ2V0X2ZpcnN0X2R0cyhzdHJl YW0tPmF2X3N0cmVhbSgpKSA9PSBrSW52YWxpZFBUU01hcmtlcikKLSsgICAgaWYgKHN0cmVhbS0+ YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0gQVZfTk9QVFNfVkFMVUUpCi0gICAgICAgY29udGlu dWU7Ci0gICAgIGlmICghbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFtIHx8Ci0gICAgICAgICBzdHJl YW0tPnN0YXJ0X3RpbWUoKSA8IGxvd2VzdF9zdGFydF90aW1lX3N0cmVhbS0+c3RhcnRfdGltZSgp KSB7Ci1AQCAtMTYxOCw3ICsxNjA2LDcgQEAKLSAgICAgaWYgKHN0cmVhbS0+dHlwZSgpICE9IERl bXV4ZXJTdHJlYW06OlZJREVPKQotICAgICAgIGNvbnRpbnVlOwotIAotLSAgICBpZiAoYXZfc3Ry ZWFtX2dldF9maXJzdF9kdHMoc3RyZWFtLT5hdl9zdHJlYW0oKSkgPT0ga0ludmFsaWRQVFNNYXJr ZXIpCi0rICAgIGlmIChzdHJlYW0tPmF2X3N0cmVhbSgpLT5zdGFydF90aW1lID09IEFWX05PUFRT X1ZBTFVFKQotICAgICAgIGNvbnRpbnVlOwotIAotICAgICBpZiAoIXN0cmVhbS0+SXNFbmFibGVk KCkpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoIGIvc3Jj cGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAwLi5mZmE5NWFiODExMTAxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApAQCAtMCwwICsxLDEyIEBACistLS0gYS9pcC9m Zm1wZWcuYworKysrIGIvaXAvZmZtcGVnLmMKK0BAIC0yMDIsOSArMjAyLDYgQEAgc3RhdGljIGlu dCBmZm1wZWdfb3BlbihzdHJ1Y3QgaW5wdXRfcGx1Z2luX2RhdGEgKmlwX2RhdGEpCisgCQkJYnJl YWs7CisgCQl9CisgCistCQlpZiAoY29kZWMtPmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9U UlVOQ0FURUQpCistCQkJY2MtPmZsYWdzIHw9IEFWX0NPREVDX0ZMQUdfVFJVTkNBVEVEOworLQor IAkJaWYgKGF2Y29kZWNfb3BlbjIoY2MsIGNvZGVjLCBOVUxMKSA8IDApIHsKKyAJCQlkX3ByaW50 KCJjb3VsZCBub3Qgb3BlbiBjb2RlYzogJWQsICVzXG4iLCBjYy0+Y29kZWNfaWQsIGF2Y29kZWNf Z2V0X25hbWUoY2MtPmNvZGVjX2lkKSk7CisgCQkJZXJyID0gLUlQX0VSUk9SX1VOU1VQUE9SVEVE X0ZJTEVfVFlQRTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY211cy90ZW1wbGF0ZSBiL3NyY3BrZ3Mv Y211cy90ZW1wbGF0ZQppbmRleCAwZDE0MzY3NDRmMWIyLi5hNmU0YjRmYTg2Y2I4IDEwMDY0NAot LS0gYS9zcmNwa2dzL2NtdXMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jbXVzL3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnY211cycKIHBrZ25hbWU9Y211cwog dmVyc2lvbj0yLjEwLjAKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPWNvbmZp Z3VyZQogY29uZmlndXJlX2FyZ3M9InByZWZpeD0vdXNyIExEPSRDQyIKIGhvc3RtYWtlZGVwZW5k cz0icGtnLWNvbmZpZyIKCkZyb20gNzZkZjQ0NGQ3NWVlZTNjM2UzZGI3MzQ0NDFiZDg4MDVmY2Uz ZTQxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDI0LzExNV0gY3lhbnJpcDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2N5YW5yaXAvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUgYi9z cmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUKaW5kZXggOTc5NmUzNDYxNjAxYS4uNWRiMzBlMDIwZDE3 ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9jeWFucmlwL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY3lh bnJpcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2N5YW5y aXAnCiBwa2duYW1lPWN5YW5yaXAKIHZlcnNpb249MC45LjAKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtl ZGVwZW5kcz0iZmZtcGVnLWRldmVsIGxpYmNkaW8tZGV2ZWwgbGliY2Rpby1wYXJhbm9pYS1kZXZl bCBsaWJjdXJsLWRldmVsIGxpYm11c2ljYnJhaW56NS1kZXZlbCIKCkZyb20gNjM1MjVkYjNkZmY4 OGJjMTljMWI3YjI4Y2VkODQ4NDNiYjA0MDk3OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI1LzExNV0gZGVhZGJlZWY6IHJldmJ1bXAgZm9y IGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0ZSB8IDQgKystLQog MSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlIGIvc3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0 ZQppbmRleCBmNWY0YmYyNGI4Y2I2Li43YjQ3ZTYxNWNkNDhlIDEwMDY0NAotLS0gYS9zcmNwa2dz L2RlYWRiZWVmL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUKQEAgLTEs MTQgKzEsMTQgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2RlYWRiZWVmJwogcGtnbmFtZT1kZWFk YmVlZgogdmVyc2lvbj0xLjguOAotcmV2aXNpb249MworcmV2aXNpb249NAogY3JlYXRlX3dya3Ny Yz15ZXMKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2Fi bGUtb3NzIC0tZGlzYWJsZS1sZm0gLS1kaXNhYmxlLW5vdGlmeSAtLWRpc2FibGUtZ3RrMiIKIGhv c3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgbGlidG9vbCBnZXR0ZXh0IGdldHRleHQtZGV2ZWwgaW50 bHRvb2wgcGtnLWNvbmZpZwogIHlhc20gY2xhbmcgZ2xpYi1kZXZlbCIKIG1ha2VkZXBlbmRzPSIK LSBhbHNhLWxpYi1kZXZlbCBkYnVzLWRldmVsIGZhYWQyLWRldmVsIGZmbXBlZy1kZXZlbCBndGsr My1kZXZlbCBpbWxpYjItZGV2ZWwKKyBhbHNhLWxpYi1kZXZlbCBkYnVzLWRldmVsIGZhYWQyLWRl dmVsIGZmbXBlZzQtZGV2ZWwgZ3RrKzMtZGV2ZWwgaW1saWIyLWRldmVsCiAgamFuc3Nvbi1kZXZl bCBsaWJjZGRiLWRldmVsIGxpYmNkaW8tZGV2ZWwgbGliY3VybC1kZXZlbCBsaWJmbGFjLWRldmVs CiAgbGlibWFkLWRldmVsIGxpYnBuZy1kZXZlbCBsaWJzYW1wbGVyYXRlLWRldmVsIGxpYnNuZGZp bGUtZGV2ZWwgbGlidm9yYmlzLWRldmVsCiAgbGliemlwLWRldmVsIG1wZzEyMy1kZXZlbCBvcHVz ZmlsZS1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsIHdhdnBhY2stZGV2ZWwiCgpGcm9tIDI1YTM5Zjcz OGJmMDBjNGNhMjY1YTYzMzA5ZjMwZWRhODk2ODAwY2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyNi8xMTVdIGRyb2lkY2FtLW9icy1wbHVn aW46IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1 Z2luL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3RlbXBs YXRlIGIvc3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3RlbXBsYXRlCmluZGV4IGZjOWM5YmY2 YjlkNTQuLmZiMDQ4MDc1NGRmNGQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZHJvaWRjYW0tb2JzLXBs dWdpbi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdkcm9pZGNhbS1vYnMtcGx1Z2lu JwogcGtnbmFtZT1kcm9pZGNhbS1vYnMtcGx1Z2luCiB2ZXJzaW9uPTIuMC4xCi1yZXZpc2lvbj0x CityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIG1ha2VfdXNlX2Vudj15ZXMK IG1ha2VfYnVpbGRfYXJncz0iQUxMT1dfU1RBVElDPW5vIgoKRnJvbSBjZTNmZWU1MjljNjA3M2M5 ODdkYjUwYzgxNTlmYTQ1N2FlMzY2MWIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjcvMTE1XSBkcm9pZGNhbTogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Ryb2lkY2FtL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9kcm9pZGNhbS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUKaW5kZXggMWMz ZjFiOGIxZmM2Ny4uMzJhOTIyMGI3OWE0ZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9kcm9pZGNhbS90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Ryb2lkY2FtL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnZHJvaWRjYW0nCiBwa2duYW1lPWRyb2lkY2FtCiB2ZXJzaW9u PTEuOC4yCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUK IG1ha2VfYnVpbGRfYXJncz0iVVNCTVVYRD0tbHVzYm11eGQtMi4wIEpQRUc9LWx0dXJib2pwZWci CiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIDZjNTlhODMxYjJhOWQyMzhlMGY3 ODJiZjI3ZjYzYzdlNDU0ZDk5NWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0 MDAKU3ViamVjdDogW1BBVENIIDAyOC8xMTVdIGZmbXBlZ3RodW1ibmFpbGVyOiByZXZidW1wIGZv ciBmZm1wZWctNi4wCgotLS0KIC4uLi9mZm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYu cGF0Y2ggICB8IDIwMiArKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvZmZtcGVndGh1bWJuYWls ZXIvdGVtcGxhdGUgICAgICAgICAgICB8ICAgNiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyMDUgaW5z ZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Zm bXBlZ3RodW1ibmFpbGVyL3BhdGNoZXMvZmZtcGVnNi5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoIGIvc3JjcGtncy9mZm1w ZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwMC4uMzYzZmYzNWEyODQxOQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCkBAIC0wLDAgKzEs MjAyIEBACistLS0gYS9saWJmZm1wZWd0aHVtYm5haWxlci9tb3ZpZWRlY29kZXIuY3BwCTIwMTct MTEtMjEgMTQ6MDY6NTcuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9saWJmZm1wZWd0aHVtYm5haWxl ci9tb3ZpZWRlY29kZXIuY3BwCTIwMjMtMDUtMDUgMTM6MTQ6NDcuOTQ2NTYwNjY4IC0wNDAwCitA QCAtNDEsMTEgKzQxLDYgQEAKKyBuYW1lc3BhY2UgZmZtcGVndGh1bWJuYWlsZXIKKyB7CisgCist c3RydWN0IFNpbGVuY2VMb2dMZXZlbAorLXsKKy0gICAgU2lsZW5jZUxvZ0xldmVsKCkgeyBhdl9s b2dfc2V0X2xldmVsKEFWX0xPR19RVUlFVCk7IH0KKy19OworLQorIE1vdmllRGVjb2Rlcjo6TW92 aWVEZWNvZGVyKEFWRm9ybWF0Q29udGV4dCogcGF2Q29udGV4dCkKKyA6IG1fVmlkZW9TdHJlYW0o LTEpCisgLCBtX3BGb3JtYXRDb250ZXh0KHBhdkNvbnRleHQpCitAQCAtNzAsOCArNjUsNiBAQAor IAorIHZvaWQgTW92aWVEZWNvZGVyOjppbml0aWFsaXplKGNvbnN0IHN0cmluZyYgZmlsZW5hbWUs IGJvb2wgcHJlZmVyRW1iZWRkZWRNZXRhZGF0YSkKKyB7CistICAgIGF2X3JlZ2lzdGVyX2FsbCgp OworLSAgICBhdmNvZGVjX3JlZ2lzdGVyX2FsbCgpOworICAgICBhdmZvcm1hdF9uZXR3b3JrX2lu aXQoKTsKKyAKKyAgICAgc3RyaW5nIGlucHV0RmlsZSA9IGZpbGVuYW1lID09ICItIiA/ICJwaXBl OiIgOiBmaWxlbmFtZTsKK0BAIC05Nyw4ICs5MCw3IEBACisgeworICAgICBpZiAobV9wVmlkZW9D b2RlY0NvbnRleHQpCisgICAgIHsKKy0gICAgICAgIGF2Y29kZWNfY2xvc2UobV9wVmlkZW9Db2Rl Y0NvbnRleHQpOworLSAgICAgICAgbV9wVmlkZW9Db2RlY0NvbnRleHQgPSBudWxscHRyOworKyAg ICAgICAgYXZjb2RlY19mcmVlX2NvbnRleHQoJm1fcFZpZGVvQ29kZWNDb250ZXh0KTsKKyAgICAg fQorIAorICAgICBpZiAoKCFtX0Zvcm1hdENvbnRleHRXYXNHaXZlbikgJiYgbV9wRm9ybWF0Q29u dGV4dCkKK0BAIC0xNTIsMTAgKzE0NCwxMCBAQAorICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g MDsgaSA8IG1fcEZvcm1hdENvbnRleHQtPm5iX3N0cmVhbXM7ICsraSkKKyAgICAgeworICAgICAg ICAgQVZTdHJlYW0gKnN0cmVhbSA9IG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV07CistICAg ICAgICBhdXRvIGN0eCA9IG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjOworLSAg ICAgICAgaWYgKGN0eC0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8pCisrICAgICAg ICBhdXRvIHBhciA9IG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyOworKyAg ICAgICAgaWYgKHBhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8pCisgICAgICAg ICB7CistICAgICAgICAgICAgaWYgKCFwcmVmZXJFbWJlZGRlZE1ldGFkYXRhIHx8ICFpc1N0aWxs SW1hZ2VDb2RlYyhjdHgtPmNvZGVjX2lkKSkKKysgICAgICAgICAgICBpZiAoIXByZWZlckVtYmVk ZGVkTWV0YWRhdGEgfHwgIWlzU3RpbGxJbWFnZUNvZGVjKHBhci0+Y29kZWNfaWQpKQorICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgdmlkZW9TdHJlYW1zLnB1c2hfYmFjayhpKTsKKyAg ICAgICAgICAgICAgICAgY29udGludWU7CitAQCAtMjAzLDggKzE5NSw3IEBACisgICAgIH0KKyAK KyAgICAgbV9wVmlkZW9TdHJlYW0gPSBtX3BGb3JtYXRDb250ZXh0LT5zdHJlYW1zW21fVmlkZW9T dHJlYW1dOworLSAgICBtX3BWaWRlb0NvZGVjQ29udGV4dCA9IG1fcFZpZGVvU3RyZWFtLT5jb2Rl YzsKKy0gICAgbV9wVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKG1fcFZpZGVvQ29k ZWNDb250ZXh0LT5jb2RlY19pZCk7CisrICAgIG1fcFZpZGVvQ29kZWMgPSBhdmNvZGVjX2ZpbmRf ZGVjb2RlcihtX3BWaWRlb1N0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAKKyAgICAgaWYg KG1fcFZpZGVvQ29kZWMgPT0gbnVsbHB0cikKKyAgICAgeworQEAgLTIxNCw2ICsyMDUsMjAgQEAK KyAgICAgICAgIHRocm93IGxvZ2ljX2Vycm9yKCJWaWRlbyBDb2RlYyBub3QgZm91bmQiKTsKKyAg ICAgfQorIAorKyAgICBtX3BWaWRlb0NvZGVjQ29udGV4dCA9IGF2Y29kZWNfYWxsb2NfY29udGV4 dDMobV9wVmlkZW9Db2RlYyk7CisrCisrICAgIGlmIChtX3BWaWRlb0NvZGVjQ29udGV4dCA9PSBu dWxscHRyKQorKyAgICB7CisrICAgICAgICBkZXN0cm95KCk7CisrICAgICAgICB0aHJvdyBsb2dp Y19lcnJvcigiQ291bGQgbm90IGFsbG9jYXRlIHZpZGVvIGNvZGVjIGNvbnRleHQiKTsKKysgICAg fQorKworKyAgICBpZiAoYXZjb2RlY19wYXJhbWV0ZXJzX3RvX2NvbnRleHQobV9wVmlkZW9Db2Rl Y0NvbnRleHQsIG1fcFZpZGVvU3RyZWFtLT5jb2RlY3BhcikgPCAwKQorKyAgICB7CisrICAgICAg ICBkZXN0cm95KCk7CisrICAgICAgICB0aHJvdyBsb2dpY19lcnJvcigiQ291bGQgbm90IGNvbmZp Z3VyZSB2aWRlbyBjb2RlYyBjb250ZXh0Iik7CisrICAgIH0KKysKKyAgICAgbV9wVmlkZW9Db2Rl Y0NvbnRleHQtPndvcmthcm91bmRfYnVncyA9IDE7CisgCisgICAgIGlmIChhdmNvZGVjX29wZW4y KG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BWaWRlb0NvZGVjLCBudWxscHRyKSA8IDApCitAQCAt Mzg2LDEzICszOTEsNiBAQAorIAorIHZvaWQgTW92aWVEZWNvZGVyOjppbml0aWFsaXplRmlsdGVy R3JhcGgoY29uc3QgQVZSYXRpb25hbCYgdGltZUJhc2UsIGNvbnN0IHN0ZDo6c3RyaW5nJiBzaXpl LCBib29sIG1haW50YWluQXNwZWN0UmF0aW8pCisgeworLSAgICBzdGF0aWMgY29uc3QgQVZQaXhl bEZvcm1hdCBwaXhlbEZvcm1hdHNbXSA9IHsgQVZfUElYX0ZNVF9SR0IyNCwgQVZfUElYX0ZNVF9O T05FIH07CistCistICAgIGF1dG8gZGVsID0gW10gKEFWQnVmZmVyU2lua1BhcmFtcyogcCkgeyBh dl9mcmVlcChwKTsgfTsKKy0gICAgc3RkOjp1bmlxdWVfcHRyPEFWQnVmZmVyU2lua1BhcmFtcywg ZGVjbHR5cGUoZGVsKT4gYnVmZmVyc2lua1BhcmFtcyhhdl9idWZmZXJzaW5rX3BhcmFtc19hbGxv YygpLCBkZWwpOworLQorLSAgICBhdmZpbHRlcl9yZWdpc3Rlcl9hbGwoKTsKKy0KKyAgICAgbV9w RmlsdGVyR3JhcGggPSBhdmZpbHRlcl9ncmFwaF9hbGxvYygpOworICAgICBhc3NlcnQobV9wRmls dGVyR3JhcGgpOworIAorQEAgLTQwNCwxMCArNDAyLDggQEAKKyAKKyAgICAgY2hlY2tSYyhhdmZp bHRlcl9ncmFwaF9jcmVhdGVfZmlsdGVyKCZtX3BGaWx0ZXJTb3VyY2UsIGF2ZmlsdGVyX2dldF9i eV9uYW1lKCJidWZmZXIiKSwgInRodW1iX2J1ZmZlciIsIHNzLnN0cigpLmNfc3RyKCksIG51bGxw dHIsIG1fcEZpbHRlckdyYXBoKSwKKyAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBmaWx0 ZXIgc291cmNlIik7CistICAgIGJ1ZmZlcnNpbmtQYXJhbXMtPnBpeGVsX2ZtdHMgPSBwaXhlbEZv cm1hdHM7CistICAgIGNoZWNrUmMoYXZmaWx0ZXJfZ3JhcGhfY3JlYXRlX2ZpbHRlcigmbV9wRmls dGVyU2luaywgYXZmaWx0ZXJfZ2V0X2J5X25hbWUoImJ1ZmZlcnNpbmsiKSwgInRodW1iX2J1ZmZl cnNpbmsiLCBudWxscHRyLCBidWZmZXJzaW5rUGFyYW1zLmdldCgpLCBtX3BGaWx0ZXJHcmFwaCks CisrICAgIGNoZWNrUmMoYXZmaWx0ZXJfZ3JhcGhfY3JlYXRlX2ZpbHRlcigmbV9wRmlsdGVyU2lu aywgYXZmaWx0ZXJfZ2V0X2J5X25hbWUoImJ1ZmZlcnNpbmsiKSwgInRodW1iX2J1ZmZlcnNpbmsi LCBudWxscHRyLCBudWxscHRyLCBtX3BGaWx0ZXJHcmFwaCksCisgICAgICAgICAgICAgIkZhaWxl ZCB0byBjcmVhdGUgZmlsdGVyIHNpbmsiKTsKKy0gICAgYnVmZmVyc2lua1BhcmFtcy5yZWxlYXNl KCk7CisgCisgICAgIEFWRmlsdGVyQ29udGV4dCogeWFkaWZGaWx0ZXIgPSBudWxscHRyOworICAg ICBpZiAobV9wRnJhbWUtPmludGVybGFjZWRfZnJhbWUgIT0gMCkKK0BAIC01MDAsMTUgKzQ5Niwx NSBAQAorICAgICB9CisgCisgICAgIGNoZWNrUmMoYXZfc2Vla19mcmFtZShtX3BGb3JtYXRDb250 ZXh0LCAtMSwgdGltZXN0YW1wLCAwKSwgIlNlZWtpbmcgaW4gdmlkZW8gZmFpbGVkIik7CistICAg IGF2Y29kZWNfZmx1c2hfYnVmZmVycyhtX3BGb3JtYXRDb250ZXh0LT5zdHJlYW1zW21fVmlkZW9T dHJlYW1dLT5jb2RlYyk7CisrICAgIGF2Y29kZWNfZmx1c2hfYnVmZmVycyhtX3BWaWRlb0NvZGVj Q29udGV4dCk7CisgCisgICAgIGludCBrZXlGcmFtZUF0dGVtcHRzID0gMDsKKy0gICAgYm9vbCBn b3RGcmFtZSA9IDA7CisrICAgIGJvb2wgZ290RnJhbWU7CisgCisgICAgIGRvCisgICAgIHsKKyAg ICAgICAgIGludCBjb3VudCA9IDA7CistICAgICAgICBnb3RGcmFtZSA9IDA7CisrICAgICAgICBn b3RGcmFtZSA9IGZhbHNlOworIAorICAgICAgICAgd2hpbGUgKCFnb3RGcmFtZSAmJiBjb3VudCA8 IDIwKQorICAgICAgICAgeworQEAgLTU1MiwxNyArNTQ4LDMzIEBACisgICAgICAgICByZXR1cm4g ZmFsc2U7CisgICAgIH0KKyAKKy0gICAgYXZfZnJhbWVfdW5yZWYobV9wRnJhbWUpOworLQorLSAg ICBpbnQgZnJhbWVGaW5pc2hlZDsKKysgICAgaW50IHJjID0gYXZjb2RlY19zZW5kX3BhY2tldCht X3BWaWRlb0NvZGVjQ29udGV4dCwgbV9wUGFja2V0KTsKKysgICAgaWYocmMgPT0gQVZFUlJPUihF QUdBSU4pKQorKyAgICB7CisrICAgICAgICByYyA9IDA7CisrICAgIH0KKyAKKy0gICAgaW50IGJ5 dGVzRGVjb2RlZCA9IGF2Y29kZWNfZGVjb2RlX3ZpZGVvMihtX3BWaWRlb0NvZGVjQ29udGV4dCwg bV9wRnJhbWUsICZmcmFtZUZpbmlzaGVkLCBtX3BQYWNrZXQpOworLSAgICBpZiAoYnl0ZXNEZWNv ZGVkIDwgMCkKKysgICAgaWYocmMgPT0gQVZFUlJPUl9FT0YpCisrICAgIHsKKysgICAgICAgIHJl dHVybiBmYWxzZTsKKysgICAgfQorKyAgICBlbHNlIGlmKHJjIDwgMCkKKyAgICAgeworLSAgICAg ICAgdGhyb3cgbG9naWNfZXJyb3IoIkZhaWxlZCB0byBkZWNvZGUgdmlkZW8gZnJhbWU6IGJ5dGVz RGVjb2RlZCA8IDAiKTsKKysgICAgICAgIHRocm93IGxvZ2ljX2Vycm9yKCJGYWlsZWQgdG8gZGVj b2RlIHZpZGVvIGZyYW1lOiBhdmNvZGVjX3NlbmRfcGFja2V0KCkgPCAwIik7CisgICAgIH0KKyAK Ky0gICAgcmV0dXJuIGZyYW1lRmluaXNoZWQgPiAwOworKyAgICByYyA9IGF2Y29kZWNfcmVjZWl2 ZV9mcmFtZShtX3BWaWRlb0NvZGVjQ29udGV4dCwgbV9wRnJhbWUpOworKyAgICBzd2l0Y2gocmMp CisrICAgIHsKKysgICAgICAgIGNhc2UgMDoKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKysK KysgICAgICAgIGNhc2UgQVZFUlJPUihFQUdBSU4pOgorKyAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKKysKKysgICAgICAgIGRlZmF1bHQ6CisrICAgICAgICAgICAgdGhyb3cgbG9naWNfZXJyb3Io IkZhaWxlZCB0byBkZWNvZGUgdmlkZW8gZnJhbWU6IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZSgpIDwg MCIpOworKyAgICB9CisgfQorIAorIGJvb2wgTW92aWVEZWNvZGVyOjpnZXRWaWRlb1BhY2tldCgp CitAQCAtNTcwLDggKzU4Miw2IEBACisgICAgIGJvb2wgZnJhbWVzQXZhaWxhYmxlID0gdHJ1ZTsK KyAgICAgYm9vbCBmcmFtZURlY29kZWQgPSBmYWxzZTsKKyAKKy0gICAgaW50IGF0dGVtcHRzID0g MDsKKy0KKyAgICAgaWYgKG1fcFBhY2tldCkKKyAgICAgeworICAgICAgICAgYXZfcGFja2V0X3Vu cmVmKG1fcFBhY2tldCk7CitAQCAtNTgwLDYgKzU5MCw3IEBACisgCisgICAgIG1fcFBhY2tldCA9 IG5ldyBBVlBhY2tldCgpOworIAorKworICAgICB3aGlsZSAoZnJhbWVzQXZhaWxhYmxlICYmICFm cmFtZURlY29kZWQpCisgICAgIHsKKyAgICAgICAgIGZyYW1lc0F2YWlsYWJsZSA9IGF2X3JlYWRf ZnJhbWUobV9wRm9ybWF0Q29udGV4dCwgbV9wUGFja2V0KSA+PSAwOworQEAgLTY0NCw3ICs2NTUs NyBAQAorIAorIGludDMyX3QgTW92aWVEZWNvZGVyOjpnZXRTdHJlYW1Sb3RhdGlvbigpCisgewor LSAgICBpbnQzMl90KiBtYXRyaXggPSByZWludGVycHJldF9jYXN0PGludDMyX3QqPihhdl9zdHJl YW1fZ2V0X3NpZGVfZGF0YShtX3BWaWRlb1N0cmVhbSwgQVZfUEtUX0RBVEFfRElTUExBWU1BVFJJ WCwgbnVsbHB0cikpOworKyAgICBhdXRvIG1hdHJpeCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJf dCo+KGF2X3N0cmVhbV9nZXRfc2lkZV9kYXRhKG1fcFZpZGVvU3RyZWFtLCBBVl9QS1RfREFUQV9E SVNQTEFZTUFUUklYLCBudWxscHRyKSk7CisgICAgIGlmIChtYXRyaXgpCisgICAgIHsKKyAgICAg ICAgIGF1dG8gYW5nbGUgPSBscm91bmQoYXZfZGlzcGxheV9yb3RhdGlvbl9nZXQobWF0cml4KSk7 CisKKy0tLSBhL2xpYmZmbXBlZ3RodW1ibmFpbGVyL21vdmllZGVjb2Rlci5oCTIwMTctMTEtMTIg MDQ6MjM6MzguMDAwMDAwMDAwIC0wNTAwCisrKysgYi9saWJmZm1wZWd0aHVtYm5haWxlci9tb3Zp ZWRlY29kZXIuaAkyMDIzLTA1LTA1IDEzOjI2OjA3LjA5NTUyOTkxMSAtMDQwMAorQEAgLTc4LDcg Kzc4LDcgQEAKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgbV9WaWRlb1N0cmVhbTsNCisg ICAgIEFWRm9ybWF0Q29udGV4dCogICAgICAgIG1fcEZvcm1hdENvbnRleHQ7DQorICAgICBBVkNv ZGVjQ29udGV4dCogICAgICAgICBtX3BWaWRlb0NvZGVjQ29udGV4dDsNCistICAgIEFWQ29kZWMq ICAgICAgICAgICAgICAgIG1fcFZpZGVvQ29kZWM7DQorKyAgICBjb25zdCBBVkNvZGVjKiAgICAg ICAgICBtX3BWaWRlb0NvZGVjOw0KKyAgICAgQVZGaWx0ZXJHcmFwaCogICAgICAgICAgbV9wRmls dGVyR3JhcGg7DQorICAgICBBVkZpbHRlckNvbnRleHQqICAgICAgICBtX3BGaWx0ZXJTb3VyY2U7 DQorICAgICBBVkZpbHRlckNvbnRleHQqICAgICAgICBtX3BGaWx0ZXJTaW5rOw0KZGlmZiAtLWdp dCBhL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2ZmbXBlZ3Ro dW1ibmFpbGVyL3RlbXBsYXRlCmluZGV4IDAzOWVlYTc2MjJiMzkuLjM1ZDU0NjAxOGQxMmEgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ2ZmbXBlZ3RodW1ibmFpbGVyJwogcGtnbmFtZT1mZm1wZWd0aHVtYm5haWxlcgog dmVyc2lvbj0yLjIuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UK IGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJsaWJwbmctZGV2ZWwg bGlianBlZy10dXJiby1kZXZlbCBmZm1wZWctZGV2ZWwiCkBAIC05LDggKzksOCBAQCBkZXBlbmRz PSJmZm1wZWciCiBzaG9ydF9kZXNjPSJMaWdodHdlaWdodCB2aWRlbyB0aHVtYm5haWxlciIKIG1h aW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwt Mi4wLW9yLWxhdGVyIgotaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9kaXJrdmRiLyR7cGtn bmFtZX0iCi1kaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3JlbGVhc2VzL2Rvd25sb2FkLyR7dmVyc2lv bn0vJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci5iejIiCitob21lcGFnZT0iaHR0cHM6Ly9naXRo dWIuY29tL2Rpcmt2ZGIiCitkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9LyR7cGtnbmFtZX0vcmVsZWFz ZXMvZG93bmxvYWQvJHt2ZXJzaW9ufS8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLmJ6MiIKIGNo ZWNrc3VtPTFjYjI0MDU5YzM4MjIzZjY1N2IzMDBjODRkZDgwNDkxYjcwNDBkNGI2OTQ3MWM0ZmVh NjliZTg2MmJjOTliNWIKIAogcG9zdF9pbnN0YWxsKCkgewoKRnJvbSAwZTJkZDZiMmRjMWU4MmY0 NGNkMmE2NTU3MDQ2MDVmMWQ0ZTkwNzNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjkvMTE1XSBmZm1wZWd0aHVtYnM6IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL2ZmbXBlZ3RodW1icy90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtcGVndGh1bWJzL3Rl bXBsYXRlCmluZGV4IDVmMGI5NDE0ZGFkYWYuLjExYjg4MTkzNTI4ZjQgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvZmZtcGVndGh1bWJzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZmZtcGVndGh1bWJzL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZmZtcGVndGh1bWJz JwogcGtnbmFtZT1mZm1wZWd0aHVtYnMKIHZlcnNpb249MjIuMTIuMQotcmV2aXNpb249MQorcmV2 aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0iZXh0cmEtY21ha2Ut bW9kdWxlcyBrY29yZWFkZG9ucyBrY29uZmlnLWRldmVsCiAgcGtnLWNvbmZpZyBxdDUtaG9zdC10 b29scyBxdDUtcW1ha2UgZ2V0dGV4dCIKCkZyb20gNDY1ZTNiYjg5NDNiZjY4YjZlMTAwMWRiNjYw OWMxZDJmOGYzY2FkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDMwLzExNV0gZmZtczI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9mZm1zMi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggfCA0MjQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogc3JjcGtncy9mZm1zMi90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgIDIg Ky0KIDIgZmlsZXMgY2hhbmdlZCwgNDI1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9m Zm1zMi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwMC4uMTQ3OWZhYmNhZmNiNAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZt czIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsNDI0IEBACitGcm9tIDQ1NjczMTQ5 ZTlhMmY1NTg2ODU1YWQ0NzJlMzA1OTA4NGVhYTM2YjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KK0Rh dGU6IFR1ZSwgNCBNYXkgMjAyMSAxNDo0MToyMSArMDEwMAorU3ViamVjdDogW1BBVENIXSBVc2Ug YXV0byBmb3IgQVZDb2RlYworCitUaGUgZ2VuaXVzZXMgb3ZlciBhdCBGRm1wZWcgZGVjaWRlZCB0 byBjb25zdGlmeSB0aGlzIEFQSSwgc28gb2xkCit2ZXJzaW9ucyBvZiB0aGUgbGlicmFyeSB3aWxs IHJldHVybiBBVkNvZGVjICosIHdoaWxlIG5ldyB2ZXJzaW9ucworb2YgdGhlIGxpYmFyeSB3aWxs IHJldHVybiBjb25zdCBBVkNvZGVjICosIHdoaWNoLCBpbiBDKyssIGFyZSBub3QKK09LIHRvIGNv bnZlcnQgYmV0d2Vlbi4KKworUmF0aGVyIHRoYW4gdXNlIHNvbWUgbWFjcm8gaGVsbCBpbiBmZm1z Y29tcGF0LmgsIHdlIGNhbiB3b3JrIGFyb3VuZAordGhpcyBieSB1c2luZyBhdXRvLgorCitHcm9z cy4KKworU2lnbmVkLW9mZi1ieTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVpdGVuaHVpc0Bn bWFpbC5jb20+CistLS0KKyBzcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAgfCAyICstCisgc3JjL2Nv cmUvaW5kZXhpbmcuY3BwICAgIHwgNiArKystLS0KKyBzcmMvY29yZS92aWRlb3NvdXJjZS5jcHAg fCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0p CisKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAgYi9zcmMvY29yZS9hdWRp b3NvdXJjZS5jcHAKK2luZGV4IGU0Y2U5N2MuLmFjMDk2NjYgMTAwNjQ0CistLS0gYS9zcmMvY29y ZS9hdWRpb3NvdXJjZS5jcHAKKysrKyBiL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAorQEAgLTQ2 OSw3ICs0NjksNyBAQCB2b2lkIEZGTVNfQXVkaW9Tb3VyY2U6Ok9wZW5GaWxlKCkgeworIAorICAg ICBMQVZGT3BlbkZpbGUoU291cmNlRmlsZS5jX3N0cigpLCBGb3JtYXRDb250ZXh0LCBUcmFja051 bWJlcik7CisgCistICAgIEFWQ29kZWMgKkNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9y bWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja051bWJlcl0tPmNvZGVjcGFyLT5jb2RlY19pZCk7Cisr ICAgIGF1dG8gKkNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3Ry ZWFtc1tUcmFja051bWJlcl0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisgICAgIGlmIChDb2RlYyA9 PSBudWxscHRyKQorICAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9ERUNP RElORywgRkZNU19FUlJPUl9DT0RFQywKKyAgICAgICAgICAgICAiQXVkaW8gY29kZWMgbm90IGZv dW5kIik7CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvaW5kZXhpbmcuY3BwIGIvc3JjL2NvcmUvaW5k ZXhpbmcuY3BwCitpbmRleCBlNTQ3YzVhLi41OWZiNGU4IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUv aW5kZXhpbmcuY3BwCisrKysgYi9zcmMvY29yZS9pbmRleGluZy5jcHAKK0BAIC0zODQsNyArMzg0 LDcgQEAgRkZNU19UcmFja1R5cGUgRkZNU19JbmRleGVyOjpHZXRUcmFja1R5cGUoaW50IFRyYWNr KSB7CisgfQorIAorIGNvbnN0IGNoYXIgKkZGTVNfSW5kZXhlcjo6R2V0VHJhY2tDb2RlYyhpbnQg VHJhY2spIHsKKy0gICAgQVZDb2RlYyAqY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3Jt YXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysgICAgYXV0 byAqY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1Ry YWNrXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAgcmV0dXJuIGNvZGVjID8gY29kZWMtPm5h bWUgOiBudWxscHRyOworIH0KKyAKK0BAIC00MDIsNyArNDAyLDcgQEAgRkZNU19JbmRleCAqRkZN U19JbmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAgIFVzZURUUyk7CisgCisgICAg ICAgICBpZiAoSW5kZXhNYXNrLmNvdW50KGkpICYmIEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0t PmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykgeworLSAgICAgICAg ICAgIEFWQ29kZWMgKlZpZGVvQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250 ZXh0LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworKyAgICAgICAgICAgIGF1dG8g KlZpZGVvQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1z W2ldLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworICAgICAgICAgICAgIGlmICghVmlkZW9Db2RlYykg eworICAgICAgICAgICAgICAgICBGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5kaXNjYXJkID0g QVZESVNDQVJEX0FMTDsKKyAgICAgICAgICAgICAgICAgSW5kZXhNYXNrLmVyYXNlKGkpOworQEAg LTQzMyw3ICs0MzMsNyBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7 CisgICAgICAgICAgICAgICAgIEluZGV4TWFzay5pbnNlcnQoaSk7CisgICAgICAgICAgICAgfQor ICAgICAgICAgfSBlbHNlIGlmIChJbmRleE1hc2suY291bnQoaSkgJiYgRm9ybWF0Q29udGV4dC0+ c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElPKSB7 CistICAgICAgICAgICAgQVZDb2RlYyAqQXVkaW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVy KEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAgICAg ICAgICAgYXV0byAqQXVkaW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRl eHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisgICAgICAgICAgICAgaWYgKEF1 ZGlvQ29kZWMgPT0gbnVsbHB0cikKKyAgICAgICAgICAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRp b24oRkZNU19FUlJPUl9DT0RFQywgRkZNU19FUlJPUl9VTlNVUFBPUlRFRCwKKyAgICAgICAgICAg ICAgICAgICAgICJBdWRpbyBjb2RlYyBub3QgZm91bmQiKTsKK2RpZmYgLS1naXQgYS9zcmMvY29y ZS92aWRlb3NvdXJjZS5jcHAgYi9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAKK2luZGV4IGI4ODk5 NzAuLjg5NTZjMjIgMTAwNjQ0CistLS0gYS9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAKKysrKyBi L3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAorQEAgLTE3MSw3ICsxNzEsNyBAQCBGRk1TX1ZpZGVv U291cmNlOjpGRk1TX1ZpZGVvU291cmNlKGNvbnN0IGNoYXIgKlNvdXJjZUZpbGUsIEZGTVNfSW5k ZXggJkluZGV4LCBpbgorIAorICAgICAgICAgTEFWRk9wZW5GaWxlKFNvdXJjZUZpbGUsIEZvcm1h dENvbnRleHQsIFZpZGVvVHJhY2spOworIAorLSAgICAgICAgQVZDb2RlYyAqQ29kZWMgPSBhdmNv ZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1ZpZGVvVHJhY2tdLT5jb2Rl Y3Bhci0+Y29kZWNfaWQpOworKyAgICAgICAgYXV0byAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVj b2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1ZpZGVvVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNf aWQpOworICAgICAgICAgaWYgKENvZGVjID09IG51bGxwdHIpCisgICAgICAgICAgICAgdGhyb3cg RkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9ERUNPRElORywgRkZNU19FUlJPUl9DT0RFQywKKyAg ICAgICAgICAgICAgICAgIlZpZGVvIGNvZGVjIG5vdCBmb3VuZCIpOworLS0gCisyLjQwLjAKKwor RnJvbSA5NmNiZjM4ZWE5MzgxODI5YTEzMTRmNDMyYTJjNjA0OTVkY2VmYWFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQorRnJvbTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVpdGVuaHVpc0Bn bWFpbC5jb20+CitEYXRlOiBUdWUsIDQgTWF5IDIwMjEgMTQ6MTI6NDEgKzAxMDAKK1N1YmplY3Q6 IFtQQVRDSF0gYWxsOiBVcGRhdGUgQVZQYWNrZXQgQVBJIHVzYWdlCisKK0FWUGFja2V0cyBtdXN0 IGFsbCBiZSBvbiB0aGUgaGVhcCBub3csIHNpbmNlIGl0IGlzIG5vIGxvbmdlcgorcGFydCBvZiB0 aGUgbGliYXYqIEFCSS4KKworU2lnbmVkLW9mZi1ieTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsu YnVpdGVuaHVpc0BnbWFpbC5jb20+CistLS0KKyBzcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAgfCAx NiArKysrKystLS0tCisgc3JjL2NvcmUvaW5kZXhpbmcuY3BwICAgIHwgNjMgKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9jb3JlL2luZGV4aW5nLmggICAgICB8 ICA0ICstLQorIHNyYy9jb3JlL3V0aWxzLmNwcCAgICAgICB8ICA2IC0tLS0KKyBzcmMvY29yZS91 dGlscy5oICAgICAgICAgfCAgMSAtCisgc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwIHwgMzAgKysr KysrKysrKy0tLS0tLS0tLQorIDYgZmlsZXMgY2hhbmdlZCwgNjQgaW5zZXJ0aW9ucygrKSwgNTYg ZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAgYi9z cmMvY29yZS9hdWRpb3NvdXJjZS5jcHAKK2luZGV4IDM3Y2Y5YWUuLmU0Y2U5N2MgMTAwNjQ0Cist LS0gYS9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAKKysrKyBiL3NyYy9jb3JlL2F1ZGlvc291cmNl LmNwcAorQEAgLTI4NSwxMCArMjg1LDE1IEBAIEZGTVNfQXVkaW9Tb3VyY2U6OkF1ZGlvQmxvY2sg KkZGTVNfQXVkaW9Tb3VyY2U6OkNhY2hlQmxvY2soQ2FjaGVJdGVyYXRvciAmcG9zKSB7CisgaW50 IEZGTVNfQXVkaW9Tb3VyY2U6OkRlY29kZU5leHRCbG9jayhDYWNoZUl0ZXJhdG9yICpwb3MpIHsK KyAgICAgQ3VycmVudEZyYW1lID0gJkZyYW1lc1tQYWNrZXROdW1iZXJdOworIAorLSAgICBBVlBh Y2tldCBQYWNrZXQ7CistICAgIGlmICghUmVhZFBhY2tldCgmUGFja2V0KSkKKysgICAgQVZQYWNr ZXQgKlBhY2tldCA9IGF2X3BhY2tldF9hbGxvYygpOworKyAgICBpZiAoIVBhY2tldCkKKysgICAg ICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfUEFSU0VSLCBGRk1TX0VSUk9SX0FM TE9DQVRJT05fRkFJTEVELAorKyAgICAgICAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUgcGFja2V0 LiIpOworKyAgICBpZiAoIVJlYWRQYWNrZXQoUGFja2V0KSkgeworKyAgICAgICAgYXZfcGFja2V0 X2ZyZWUoJlBhY2tldCk7CisgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9S X1BBUlNFUiwgRkZNU19FUlJPUl9VTktOT1dOLAorICAgICAgICAgICAgICJSZWFkUGFja2V0IHVu ZXhwZWN0ZWRseSBmYWlsZWQgdG8gcmVhZCBhIHBhY2tldCIpOworKyAgICB9CisgCisgICAgIC8v IFJlYWRQYWNrZXQgbWF5IGhhdmUgY2hhbmdlZCB0aGUgcGFja2V0IG51bWJlcgorICAgICBDdXJy ZW50RnJhbWUgPSAmRnJhbWVzW1BhY2tldE51bWJlcl07CitAQCAtMjk3LDggKzMwMiw5IEBAIGlu dCBGRk1TX0F1ZGlvU291cmNlOjpEZWNvZGVOZXh0QmxvY2soQ2FjaGVJdGVyYXRvciAqcG9zKSB7 CisgICAgIGludCBOdW1iZXJPZlNhbXBsZXMgPSAwOworICAgICBBdWRpb0Jsb2NrICpDYWNoZWRC bG9jayA9IG51bGxwdHI7CisgICAgIAorLSAgICBpbnQgUmV0ID0gYXZjb2RlY19zZW5kX3BhY2tl dChDb2RlY0NvbnRleHQsICZQYWNrZXQpOworLSAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7 CisrICAgIGludCBSZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0KENvZGVjQ29udGV4dCwgUGFja2V0 KTsKKysgICAgYXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisrICAgIGF2X3BhY2tldF9mcmVlKCZQ YWNrZXQpOworIAorICAgICBhdl9mcmFtZV91bnJlZihEZWNvZGVGcmFtZSk7CisgICAgIFJldCA9 IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZShDb2RlY0NvbnRleHQsIERlY29kZUZyYW1lKTsKK0BAIC01 MTMsOCArNTE5LDYgQEAgdm9pZCBGRk1TX0F1ZGlvU291cmNlOjpTZWVrKCkgeworIH0KKyAKKyBi b29sIEZGTVNfQXVkaW9Tb3VyY2U6OlJlYWRQYWNrZXQoQVZQYWNrZXQgKlBhY2tldCkgeworLSAg ICBJbml0TnVsbFBhY2tldCgqUGFja2V0KTsKKy0KKyAgICAgd2hpbGUgKGF2X3JlYWRfZnJhbWUo Rm9ybWF0Q29udGV4dCwgUGFja2V0KSA+PSAwKSB7CisgICAgICAgICBpZiAoUGFja2V0LT5zdHJl YW1faW5kZXggPT0gVHJhY2tOdW1iZXIpIHsKKyAgICAgICAgICAgICAvLyBSZXF1aXJlZCBiZWNh dXNlIG5vdCBhbGwgYXVkaW8gcGFja2V0cywgZXNwZWNpYWxseSBpbiBvZ2csIGhhdmUgYSBwdHMu IFVzZSB0aGUgcHJldmlvdXMgdmFsaWQgcGFja2V0J3MgcHRzIGluc3RlYWQuCitkaWZmIC0tZ2l0 IGEvc3JjL2NvcmUvaW5kZXhpbmcuY3BwIGIvc3JjL2NvcmUvaW5kZXhpbmcuY3BwCitpbmRleCAy M2ZiOTViLi5lNTQ3YzVhIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvaW5kZXhpbmcuY3BwCisrKysg Yi9zcmMvY29yZS9pbmRleGluZy5jcHAKK0BAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBGRk1TX0lu ZGV4ZXI6OkNoZWNrQXVkaW9Qcm9wZXJ0aWVzKGludCBUcmFjaywgQVZDb2RlY0NvbnRleHQgKkNv bnRleHQpIHsKKyAgICAgfQorIH0KKyAKKy12b2lkIEZGTVNfSW5kZXhlcjo6UGFyc2VWaWRlb1Bh Y2tldChTaGFyZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgJnBrdCwgaW50ICpS ZXBlYXRQaWN0LAorK3ZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFW Q29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAqcGt0LCBpbnQgKlJlcGVhdFBpY3QsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpGcmFtZVR5cGUsIGJvb2wg KkludmlzaWJsZSwgZW51bSBBVlBpY3R1cmVTdHJ1Y3R1cmUgKkxhc3RQaWNTdHJ1Y3QpIHsKKyAg ICAgaWYgKFZpZGVvQ29udGV4dC5QYXJzZXIpIHsKKyAgICAgICAgIHVpbnQ4X3QgKk9COworQEAg LTMzMCw4ICszMzAsOCBAQCB2b2lkIEZGTVNfSW5kZXhlcjo6UGFyc2VWaWRlb1BhY2tldChTaGFy ZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgJnBrdAorICAgICAgICAgYXZfcGFy c2VyX3BhcnNlMihWaWRlb0NvbnRleHQuUGFyc2VyLAorICAgICAgICAgICAgIFZpZGVvQ29udGV4 dC5Db2RlY0NvbnRleHQsCisgICAgICAgICAgICAgJk9CLCAmT0JTaXplLAorLSAgICAgICAgICAg IHBrdC5kYXRhLCBwa3Quc2l6ZSwKKy0gICAgICAgICAgICBwa3QucHRzLCBwa3QuZHRzLCBwa3Qu cG9zKTsKKysgICAgICAgICAgICBwa3QtPmRhdGEsIHBrdC0+c2l6ZSwKKysgICAgICAgICAgICBw a3QtPnB0cywgcGt0LT5kdHMsIHBrdC0+cG9zKTsKKyAKKyAgICAgICAgIC8vIEguMjY0IChQQUZG KSBhbmQgSEVWQyBtYXkgaGF2ZSBvbmUgZmllbGQgcGVyIHBhY2tldCwgc28gd2UgbmVlZCB0byB0 cmFjaworICAgICAgICAgLy8gd2hlbiB3ZSBoYXZlIGEgZnVsbCBvciBoYWxmIGZyYW1lIGF2YWls YWJsZSwgYW5kIG1hcmsgb25lIG9mIHRoZW0gYXMKK0BAIC0zNTEsMTUgKzM1MSwxNSBAQCB2b2lk IEZGTVNfSW5kZXhlcjo6UGFyc2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQgJlZpZGVvQ29u dGV4dCwgQVZQYWNrZXQgJnBrdAorIAorICAgICAgICAgKlJlcGVhdFBpY3QgPSBWaWRlb0NvbnRl eHQuUGFyc2VyLT5yZXBlYXRfcGljdDsKKyAgICAgICAgICpGcmFtZVR5cGUgPSBWaWRlb0NvbnRl eHQuUGFyc2VyLT5waWN0X3R5cGU7CistICAgICAgICAqSW52aXNpYmxlID0gKEluY29tcGxldGVG cmFtZSB8fCBWaWRlb0NvbnRleHQuUGFyc2VyLT5yZXBlYXRfcGljdCA8IDAgfHwgKHBrdC5mbGFn cyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpKTsKKysgICAgICAgICpJbnZpc2libGUgPSAoSW5jb21w bGV0ZUZyYW1lIHx8IFZpZGVvQ29udGV4dC5QYXJzZXItPnJlcGVhdF9waWN0IDwgMCB8fCAocGt0 LT5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpKTsKKyAgICAgfSBlbHNlIHsKKy0gICAgICAg ICpJbnZpc2libGUgPSAhIShwa3QuZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKTsKKysgICAg ICAgICpJbnZpc2libGUgPSAhIShwa3QtPmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCk7Cisg ICAgIH0KKyAKKyAgICAgaWYgKFZpZGVvQ29udGV4dC5Db2RlY0NvbnRleHQtPmNvZGVjX2lkID09 IEFWX0NPREVDX0lEX1ZQOCkKKy0gICAgICAgIFBhcnNlVlA4KHBrdC5kYXRhWzBdLCBJbnZpc2li bGUsIEZyYW1lVHlwZSk7CisrICAgICAgICBQYXJzZVZQOChwa3QtPmRhdGFbMF0sIEludmlzaWJs ZSwgRnJhbWVUeXBlKTsKKyAgICAgZWxzZSBpZiAoVmlkZW9Db250ZXh0LkNvZGVjQ29udGV4dC0+ Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5KQorLSAgICAgICAgUGFyc2VWUDkocGt0LmRhdGFb MF0sIEludmlzaWJsZSwgRnJhbWVUeXBlKTsKKysgICAgICAgIFBhcnNlVlA5KHBrdC0+ZGF0YVsw XSwgSW52aXNpYmxlLCBGcmFtZVR5cGUpOworIH0KKyAKKyB2b2lkIEZGTVNfSW5kZXhlcjo6RnJl ZSgpIHsKK0BAIC00NTgsMzIgKzQ1OCwzNiBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRv SW5kZXhpbmcoKSB7CisgICAgICAgICB9CisgICAgIH0KKyAKKy0gICAgQVZQYWNrZXQgUGFja2V0 OworLSAgICBJbml0TnVsbFBhY2tldChQYWNrZXQpOworKyAgICBBVlBhY2tldCAqUGFja2V0ID0g YXZfcGFja2V0X2FsbG9jKCk7CisrICAgIGlmICghUGFja2V0KQorKyAgICAgICAgdGhyb3cgRkZN U19FeGNlcHRpb24oRkZNU19FUlJPUl9DT0RFQywgRkZNU19FUlJPUl9BTExPQ0FUSU9OX0ZBSUxF RCwKKysgICAgICAgICAgICAiQ291bGQgbm90IGFsbG9jYXRlIHBhY2tldC4iKTsKKyAgICAgc3Rk Ojp2ZWN0b3I8aW50NjRfdD4gTGFzdFZhbGlkVFMoRm9ybWF0Q29udGV4dC0+bmJfc3RyZWFtcywg QVZfTk9QVFNfVkFMVUUpOworIAorICAgICBpbnQ2NF90IGZpbGVzaXplID0gYXZpb19zaXplKEZv cm1hdENvbnRleHQtPnBiKTsKKyAgICAgZW51bSBBVlBpY3R1cmVTdHJ1Y3R1cmUgTGFzdFBpY1N0 cnVjdCA9IEFWX1BJQ1RVUkVfU1RSVUNUVVJFX1VOS05PV047CistICAgIHdoaWxlIChhdl9yZWFk X2ZyYW1lKEZvcm1hdENvbnRleHQsICZQYWNrZXQpID49IDApIHsKKysgICAgd2hpbGUgKGF2X3Jl YWRfZnJhbWUoRm9ybWF0Q29udGV4dCwgUGFja2V0KSA+PSAwKSB7CisgICAgICAgICAvLyBVcGRh dGUgcHJvZ3Jlc3MKKyAgICAgICAgIC8vIEZvcm1hdENvbnRleHQtPnBiIGNhbiBhcHBhcmVudGx5 IGJlIE5VTEwgd2hlbiBvcGVuaW5nIGltYWdlcy4KKyAgICAgICAgIGlmIChJQyAmJiBGb3JtYXRD b250ZXh0LT5wYikgeworLSAgICAgICAgICAgIGlmICgoKklDKShGb3JtYXRDb250ZXh0LT5wYi0+ cG9zLCBmaWxlc2l6ZSwgSUNQcml2YXRlKSkKKysgICAgICAgICAgICBpZiAoKCpJQykoRm9ybWF0 Q29udGV4dC0+cGItPnBvcywgZmlsZXNpemUsIElDUHJpdmF0ZSkpIHsKKysgICAgICAgICAgICAg ICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7CisgICAgICAgICAgICAgICAgIHRocm93IEZGTVNf RXhjZXB0aW9uKEZGTVNfRVJST1JfQ0FOQ0VMTEVELCBGRk1TX0VSUk9SX1VTRVIsCisgICAgICAg ICAgICAgICAgICAgICAiQ2FuY2VsbGVkIGJ5IHVzZXIiKTsKKysgICAgICAgICAgICB9CisgICAg ICAgICB9CistICAgICAgICBpZiAoIUluZGV4TWFzay5jb3VudChQYWNrZXQuc3RyZWFtX2luZGV4 KSkgeworLSAgICAgICAgICAgIGF2X3BhY2tldF91bnJlZigmUGFja2V0KTsKKysgICAgICAgIGlm ICghSW5kZXhNYXNrLmNvdW50KFBhY2tldC0+c3RyZWFtX2luZGV4KSkgeworKyAgICAgICAgICAg IGF2X3BhY2tldF91bnJlZihQYWNrZXQpOworICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg ICAgfQorIAorLSAgICAgICAgaW50IFRyYWNrID0gUGFja2V0LnN0cmVhbV9pbmRleDsKKysgICAg ICAgIGludCBUcmFjayA9IFBhY2tldC0+c3RyZWFtX2luZGV4OworICAgICAgICAgRkZNU19UcmFj ayAmVHJhY2tJbmZvID0gKCpUcmFja0luZGljZXMpW1RyYWNrXTsKKy0gICAgICAgIGJvb2wgS2V5 RnJhbWUgPSAhIShQYWNrZXQuZmxhZ3MgJiBBVl9QS1RfRkxBR19LRVkpOworKyAgICAgICAgYm9v bCBLZXlGcmFtZSA9ICEhKFBhY2tldC0+ZmxhZ3MgJiBBVl9QS1RfRkxBR19LRVkpOworICAgICAg ICAgUmVhZFRTKFBhY2tldCwgTGFzdFZhbGlkVFNbVHJhY2tdLCAoKlRyYWNrSW5kaWNlcylbVHJh Y2tdLlVzZURUUyk7CisgCisgICAgICAgICBpZiAoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFj a10tPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykgeworLSAgICAg ICAgICAgIGludDY0X3QgUFRTID0gVHJhY2tJbmZvLlVzZURUUyA/IFBhY2tldC5kdHMgOiBQYWNr ZXQucHRzOworKyAgICAgICAgICAgIGludDY0X3QgUFRTID0gVHJhY2tJbmZvLlVzZURUUyA/IFBh Y2tldC0+ZHRzIDogUGFja2V0LT5wdHM7CisgICAgICAgICAgICAgaWYgKFBUUyA9PSBBVl9OT1BU U19WQUxVRSkgeworICAgICAgICAgICAgICAgICAvLyBWUHggYWx0LXJlZnMgYXJlIG91dHB1dCBh cyBwYWNrZXRzIHdoaWNoIGxhY2sgdGltZXN0bXBzIG9yIGR1cmF0aW9ucywgc2luY2UKKyAgICAg ICAgICAgICAgICAgLy8gdGhleSBhcmUgaW52aXNpYmxlLiBDdXJyZW50bHksIHRoZSB0aW1lc3Rh bXAgbWFuZ2xpbmcgY29kZSBpbiBsaWJhdmZvcm1hdAorQEAgLTQ5NSw5ICs0OTksMTEgQEAgRkZN U19JbmRleCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAgICAgICAv LyBGRk1TMiBjdXJyZW50bHkgc29ydHMgcGFja2V0cyBieSBQVFMsIHdoaWNoIHdpbGwgYnJlYWsg ZGVjb2RpbmcsIG90aGVyd2lzZS4KKyAgICAgICAgICAgICAgICAgYm9vbCBIYXNBbHRSZWZzID0g KEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZf Q09ERUNfSURfVlA4IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3Jt YXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVD X0lEX1ZQOSk7CistICAgICAgICAgICAgICAgIGlmIChQYWNrZXQuZHVyYXRpb24gPT0gMCAmJiAh SGFzQWx0UmVmcykKKysgICAgICAgICAgICAgICAgaWYgKFBhY2tldC0+ZHVyYXRpb24gPT0gMCAm JiAhSGFzQWx0UmVmcykgeworKyAgICAgICAgICAgICAgICAgICAgYXZfcGFja2V0X2ZyZWUoJlBh Y2tldCk7CisgICAgICAgICAgICAgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VS Uk9SX0lOREVYSU5HLCBGRk1TX0VSUk9SX1BBUlNFUiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAiSW52YWxpZCBwYWNrZXQgcHRzLCBkdHMsIGFuZCBkdXJhdGlvbiIpOworKyAgICAgICAgICAg ICAgICB9CisgCisgICAgICAgICAgICAgICAgIGlmIChUcmFja0luZm8uZW1wdHkoKSkKKyAgICAg ICAgICAgICAgICAgICAgIFBUUyA9IDA7CitAQCAtNTEzLDcgKzUxOSw3IEBAIEZGTVNfSW5kZXgg KkZGTVNfSW5kZXhlcjo6RG9JbmRleGluZygpIHsKKyAgICAgICAgICAgICBQYXJzZVZpZGVvUGFj a2V0KEFWQ29udGV4dHNbVHJhY2tdLCBQYWNrZXQsICZSZXBlYXRQaWN0LCAmRnJhbWVUeXBlLCAm SW52aXNpYmxlLCAmTGFzdFBpY1N0cnVjdCk7CisgCisgICAgICAgICAgICAgVHJhY2tJbmZvLkFk ZFZpZGVvRnJhbWUoUFRTLCBSZXBlYXRQaWN0LCBLZXlGcmFtZSwKKy0gICAgICAgICAgICAgICAg RnJhbWVUeXBlLCBQYWNrZXQucG9zLCBJbnZpc2libGUpOworKyAgICAgICAgICAgICAgICBGcmFt ZVR5cGUsIFBhY2tldC0+cG9zLCBJbnZpc2libGUpOworICAgICAgICAgfSBlbHNlIGlmIChGb3Jt YXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJ QV9UWVBFX0FVRElPKSB7CisgICAgICAgICAgICAgLy8gRm9yIHZpZGVvIHNlZWtpbmcgdGltZXN0 YW1wcyBhcmUgdXNlZCBvbmx5IGlmIGFsbCBwYWNrZXRzIGhhdmUKKyAgICAgICAgICAgICAvLyB0 aW1lc3RhbXBzLCB3aGlsZSBmb3IgYXVkaW8gdGhleSdyZSB1c2VkIGlmIGFueSBoYXZlIHRpbWVz dGFtcHMsCitAQCAtNTIyLDI4ICs1MjgsMjkgQEAgRkZNU19JbmRleCAqRkZNU19JbmRleGVyOjpE b0luZGV4aW5nKCkgeworICAgICAgICAgICAgICAgICBUcmFja0luZm8uSGFzVFMgPSB0cnVlOwor IAorICAgICAgICAgICAgIGludDY0X3QgU3RhcnRTYW1wbGUgPSBBVkNvbnRleHRzW1RyYWNrXS5D dXJyZW50U2FtcGxlOworLSAgICAgICAgICAgIHVpbnQzMl90IFNhbXBsZUNvdW50ID0gSW5kZXhB dWRpb1BhY2tldChUcmFjaywgJlBhY2tldCwgQVZDb250ZXh0c1tUcmFja10sICpUcmFja0luZGlj ZXMpOworKyAgICAgICAgICAgIHVpbnQzMl90IFNhbXBsZUNvdW50ID0gSW5kZXhBdWRpb1BhY2tl dChUcmFjaywgUGFja2V0LCBBVkNvbnRleHRzW1RyYWNrXSwgKlRyYWNrSW5kaWNlcyk7CisgICAg ICAgICAgICAgVHJhY2tJbmZvLlNhbXBsZVJhdGUgPSBBVkNvbnRleHRzW1RyYWNrXS5Db2RlY0Nv bnRleHQtPnNhbXBsZV9yYXRlOworIAorICAgICAgICAgICAgIFRyYWNrSW5mby5BZGRBdWRpb0Zy YW1lKExhc3RWYWxpZFRTW1RyYWNrXSwKKy0gICAgICAgICAgICAgICAgU3RhcnRTYW1wbGUsIFNh bXBsZUNvdW50LCBLZXlGcmFtZSwgUGFja2V0LnBvcywgUGFja2V0LmZsYWdzICYgQVZfUEtUX0ZM QUdfRElTQ0FSRCk7CisrICAgICAgICAgICAgICAgIFN0YXJ0U2FtcGxlLCBTYW1wbGVDb3VudCwg S2V5RnJhbWUsIFBhY2tldC0+cG9zLCBQYWNrZXQtPmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FS RCk7CisgICAgICAgICB9CisgCistICAgICAgICBpZiAoIShQYWNrZXQuZmxhZ3MgJiBBVl9QS1Rf RkxBR19ESVNDQVJEKSkKKy0gICAgICAgICAgICBUcmFja0luZm8uTGFzdER1cmF0aW9uID0gUGFj a2V0LmR1cmF0aW9uOworKyAgICAgICAgaWYgKCEoUGFja2V0LT5mbGFncyAmIEFWX1BLVF9GTEFH X0RJU0NBUkQpKQorKyAgICAgICAgICAgIFRyYWNrSW5mby5MYXN0RHVyYXRpb24gPSBQYWNrZXQt PmR1cmF0aW9uOworIAorLSAgICAgICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQpOworKyAgICAg ICAgYXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisgICAgIH0KKysgICAgYXZfcGFja2V0X2ZyZWUo JlBhY2tldCk7CisgCisgICAgIFRyYWNrSW5kaWNlcy0+RmluYWxpemUoQVZDb250ZXh0cywgRm9y bWF0Q29udGV4dC0+aWZvcm1hdC0+bmFtZSk7CisgICAgIHJldHVybiBUcmFja0luZGljZXMucmVs ZWFzZSgpOworIH0KKyAKKy12b2lkIEZGTVNfSW5kZXhlcjo6UmVhZFRTKGNvbnN0IEFWUGFja2V0 ICZQYWNrZXQsIGludDY0X3QgJlRTLCBib29sICZVc2VEVFMpIHsKKy0gICAgaWYgKCFVc2VEVFMg JiYgUGFja2V0LnB0cyAhPSBBVl9OT1BUU19WQUxVRSkKKy0gICAgICAgIFRTID0gUGFja2V0LnB0 czsKKyt2b2lkIEZGTVNfSW5kZXhlcjo6UmVhZFRTKGNvbnN0IEFWUGFja2V0ICpQYWNrZXQsIGlu dDY0X3QgJlRTLCBib29sICZVc2VEVFMpIHsKKysgICAgaWYgKCFVc2VEVFMgJiYgUGFja2V0LT5w dHMgIT0gQVZfTk9QVFNfVkFMVUUpCisrICAgICAgICBUUyA9IFBhY2tldC0+cHRzOworICAgICBp ZiAoVFMgPT0gQVZfTk9QVFNfVkFMVUUpCisgICAgICAgICBVc2VEVFMgPSB0cnVlOworLSAgICBp ZiAoVXNlRFRTICYmIFBhY2tldC5kdHMgIT0gQVZfTk9QVFNfVkFMVUUpCistICAgICAgICBUUyA9 IFBhY2tldC5kdHM7CisrICAgIGlmIChVc2VEVFMgJiYgUGFja2V0LT5kdHMgIT0gQVZfTk9QVFNf VkFMVUUpCisrICAgICAgICBUUyA9IFBhY2tldC0+ZHRzOworIH0KK2RpZmYgLS1naXQgYS9zcmMv Y29yZS9pbmRleGluZy5oIGIvc3JjL2NvcmUvaW5kZXhpbmcuaAoraW5kZXggM2NmYzNjMy4uNWMw Njg2OCAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2luZGV4aW5nLmgKKysrKyBiL3NyYy9jb3JlL2lu ZGV4aW5nLmgKK0BAIC04MCwxMCArODAsMTAgQEAgcHJpdmF0ZToKKyAgICAgaW50NjRfdCBGaWxl c2l6ZTsKKyAgICAgdWludDhfdCBEaWdlc3RbMjBdOworIAorLSAgICB2b2lkIFJlYWRUUyhjb25z dCBBVlBhY2tldCAmUGFja2V0LCBpbnQ2NF90ICZUUywgYm9vbCAmVXNlRFRTKTsKKysgICAgdm9p ZCBSZWFkVFMoY29uc3QgQVZQYWNrZXQgKlBhY2tldCwgaW50NjRfdCAmVFMsIGJvb2wgJlVzZURU Uyk7CisgICAgIHZvaWQgQ2hlY2tBdWRpb1Byb3BlcnRpZXMoaW50IFRyYWNrLCBBVkNvZGVjQ29u dGV4dCAqQ29udGV4dCk7CisgICAgIHVpbnQzMl90IEluZGV4QXVkaW9QYWNrZXQoaW50IFRyYWNr LCBBVlBhY2tldCAqUGFja2V0LCBTaGFyZWRBVkNvbnRleHQgJkNvbnRleHQsIEZGTVNfSW5kZXgg JlRyYWNrSW5kaWNlcyk7CistICAgIHZvaWQgUGFyc2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRl eHQgJlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgJnBrdCwgaW50ICpSZXBlYXRQaWN0LCBpbnQgKkZy YW1lVHlwZSwgYm9vbCAqSW52aXNpYmxlLCBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSAqTGFzdFBp Y1N0cnVjdCk7CisrICAgIHZvaWQgUGFyc2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQgJlZp ZGVvQ29udGV4dCwgQVZQYWNrZXQgKnBrdCwgaW50ICpSZXBlYXRQaWN0LCBpbnQgKkZyYW1lVHlw ZSwgYm9vbCAqSW52aXNpYmxlLCBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSAqTGFzdFBpY1N0cnVj dCk7CisgICAgIHZvaWQgRnJlZSgpOworIHB1YmxpYzoKKyAgICAgRkZNU19JbmRleGVyKGNvbnN0 IGNoYXIgKkZpbGVuYW1lKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS91dGlscy5jcHAgYi9zcmMv Y29yZS91dGlscy5jcHAKK2luZGV4IGNlNjc1MzMuLjhhMmU5OTcgMTAwNjQ0CistLS0gYS9zcmMv Y29yZS91dGlscy5jcHAKKysrKyBiL3NyYy9jb3JlL3V0aWxzLmNwcAorQEAgLTYyLDEyICs2Miw2 IEBAIHZvaWQgQ2xlYXJFcnJvckluZm8oRkZNU19FcnJvckluZm8gKkVycm9ySW5mbykgeworICAg ICB9CisgfQorIAorLXZvaWQgSW5pdE51bGxQYWNrZXQoQVZQYWNrZXQgJnBrdCkgeworLSAgICBh dl9pbml0X3BhY2tldCgmcGt0KTsKKy0gICAgcGt0LmRhdGEgPSBudWxscHRyOworLSAgICBwa3Qu c2l6ZSA9IDA7CistfQorLQorIHZvaWQgRmlsbEFQKEZGTVNfQXVkaW9Qcm9wZXJ0aWVzICZBUCwg QVZDb2RlY0NvbnRleHQgKkNUWCwgRkZNU19UcmFjayAmRnJhbWVzKSB7CisgICAgIEFQLlNhbXBs ZUZvcm1hdCA9IHN0YXRpY19jYXN0PEZGTVNfU2FtcGxlRm9ybWF0Pihhdl9nZXRfcGFja2VkX3Nh bXBsZV9mbXQoQ1RYLT5zYW1wbGVfZm10KSk7CisgICAgIEFQLkJpdHNQZXJTYW1wbGUgPSBhdl9n ZXRfYnl0ZXNfcGVyX3NhbXBsZShDVFgtPnNhbXBsZV9mbXQpICogODsKK2RpZmYgLS1naXQgYS9z cmMvY29yZS91dGlscy5oIGIvc3JjL2NvcmUvdXRpbHMuaAoraW5kZXggOTgxOWRjNy4uMDAzYWI3 OSAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL3V0aWxzLmgKKysrKyBiL3NyYy9jb3JlL3V0aWxzLmgK K0BAIC01OCw3ICs1OCw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxUPiBtYWtlX3VuaXF1ZShBcmdzJiYu Li4gYXJncykgeworIH0KKyAKKyB2b2lkIENsZWFyRXJyb3JJbmZvKEZGTVNfRXJyb3JJbmZvICpF cnJvckluZm8pOworLXZvaWQgSW5pdE51bGxQYWNrZXQoQVZQYWNrZXQgJnBrdCk7Cisgdm9pZCBG aWxsQVAoRkZNU19BdWRpb1Byb3BlcnRpZXMgJkFQLCBBVkNvZGVjQ29udGV4dCAqQ1RYLCBGRk1T X1RyYWNrICZGcmFtZXMpOworIAorIHZvaWQgTEFWRk9wZW5GaWxlKGNvbnN0IGNoYXIgKlNvdXJj ZUZpbGUsIEFWRm9ybWF0Q29udGV4dCAqJkZvcm1hdENvbnRleHQsIGludCBUcmFjayk7CitkaWZm IC0tZ2l0IGEvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwIGIvc3JjL2NvcmUvdmlkZW9zb3VyY2Uu Y3BwCitpbmRleCAwNmJkMTYxLi5iODg5OTcwIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvdmlkZW9z b3VyY2UuY3BwCisrKysgYi9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAKK0BAIC02NzMsMzAgKzY3 MywzNCBAQCB2b2lkIEZGTVNfVmlkZW9Tb3VyY2U6OkRlY29kZU5leHRGcmFtZShpbnQ2NF90ICZB U3RhcnRUaW1lLCBpbnQ2NF90ICZQb3MpIHsKKyAgICAgaWYgKEhhc1BlbmRpbmdEZWxheWVkRnJh bWVzKCkpCisgICAgICAgICByZXR1cm47CisgCistICAgIEFWUGFja2V0IFBhY2tldDsKKy0gICAg SW5pdE51bGxQYWNrZXQoUGFja2V0KTsKKy0KKy0gICAgd2hpbGUgKFJlYWRGcmFtZSgmUGFja2V0 KSA+PSAwKSB7CistICAgICAgICBpZiAoUGFja2V0LnN0cmVhbV9pbmRleCAhPSBWaWRlb1RyYWNr KSB7CistICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQpOworKyAgICBBVlBhY2tl dCAqUGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrICAgIGlmICghUGFja2V0KQorKyAgICAg ICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9ERUNPRElORywgRkZNU19FUlJPUl9B TExPQ0FUSU9OX0ZBSUxFRCwKKysgICAgICAgICAgICAiQ291bGQgbm90IGFsbG9jYXRlIHBhY2tl dC4iKTsKKysKKysgICAgd2hpbGUgKFJlYWRGcmFtZShQYWNrZXQpID49IDApIHsKKysgICAgICAg IGlmIChQYWNrZXQtPnN0cmVhbV9pbmRleCAhPSBWaWRlb1RyYWNrKSB7CisrICAgICAgICAgICAg YXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg ICB9CisgCisgICAgICAgICBpZiAoQVN0YXJ0VGltZSA8IDApCistICAgICAgICAgICAgQVN0YXJ0 VGltZSA9IEZyYW1lcy5Vc2VEVFMgPyBQYWNrZXQuZHRzIDogUGFja2V0LnB0czsKKysgICAgICAg ICAgICBBU3RhcnRUaW1lID0gRnJhbWVzLlVzZURUUyA/IFBhY2tldC0+ZHRzIDogUGFja2V0LT5w dHM7CisgCisgICAgICAgICBpZiAoUG9zIDwgMCkKKy0gICAgICAgICAgICBQb3MgPSBQYWNrZXQu cG9zOworKyAgICAgICAgICAgIFBvcyA9IFBhY2tldC0+cG9zOworIAorLSAgICAgICAgYm9vbCBG cmFtZUZpbmlzaGVkID0gRGVjb2RlUGFja2V0KCZQYWNrZXQpOworLSAgICAgICAgYXZfcGFja2V0 X3VucmVmKCZQYWNrZXQpOworLSAgICAgICAgaWYgKEZyYW1lRmluaXNoZWQpCisrICAgICAgICBi b29sIEZyYW1lRmluaXNoZWQgPSBEZWNvZGVQYWNrZXQoUGFja2V0KTsKKysgICAgICAgIGF2X3Bh Y2tldF91bnJlZihQYWNrZXQpOworKyAgICAgICAgaWYgKEZyYW1lRmluaXNoZWQpIHsKKysgICAg ICAgICAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAgICAgICAgICByZXR1cm47Cisr ICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgLy8gRmx1c2ggZmluYWwgZnJhbWVzCistICAgIElu aXROdWxsUGFja2V0KFBhY2tldCk7CistICAgIERlY29kZVBhY2tldCgmUGFja2V0KTsKKysgICAg RGVjb2RlUGFja2V0KFBhY2tldCk7CisrICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworIH0K KyAKKyBib29sIEZGTVNfVmlkZW9Tb3VyY2U6OlNlZWtUbyhpbnQgbiwgaW50IFNlZWtPZmZzZXQp IHsKKy0tIAorMi40MC4wCisKK0Zyb20gYmY5ZTAzZTllMDg1MzRjMDI0ZTVhNzQ0YTY0MzdjNGFh YzE2MDIwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlcmVrIEJ1aXRlbmh1aXMg PGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwuY29tPgorRGF0ZTogVHVlLCA0IE1heSAyMDIxIDE0OjIw OjQ3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBjb25maWd1cmU6IFJlbW92ZSBkZXByZWNh dGVkIEFQSSB1c2UKKworU2lnbmVkLW9mZi1ieTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVp dGVuaHVpc0BnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA0ICsrLS0KKyAxIGZpbGUg Y2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEv Y29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiMzVlZjgwYmMuLmQxOTcxNGQwZiAx MDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTAyLDEw ICsxMDIsMTAgQEAgQ0ZMQUdTPSIkX0NGTEFHUyAkRkZNUEVHX0NGTEFHUyIKKworIEFDX0RFRlVO KFtURVNUX0ZGTVBFR10sCisgICAgICAgICAgW0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dS QU0oW1sKKy0gICAgICAgICAgICAjaW5jbHVkZSA8bGliYXZjb2RlYy9hdmNvZGVjLmg+CisrICAg ICAgICAgICAgI2luY2x1ZGUgPGxpYmF2Zm9ybWF0L2F2Zm9ybWF0Lmg+CisgICAgICAgICAgICAg I2luY2x1ZGUgPGxpYnN3c2NhbGUvc3dzY2FsZS5oPgorICAgICAgICAgICAgIF1dLFtbCistICAg ICAgICAgICAgICAgIGF2Y29kZWNfcmVnaXN0ZXJfYWxsKCk7CisrICAgICAgICAgICAgICAgIGF2 Zm9ybWF0X25ldHdvcmtfaW5pdCgpOworICAgICAgICAgICAgICAgICBzd3NjYWxlX3ZlcnNpb24o KTsKKyAgICAgICAgICAgICBdXSldLCBbZXZhbCAkMT15ZXNdLCBbZXZhbCAkMT1ub10pCisgICAg ICAgICBdKQorCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXMyL3RlbXBsYXRlIGIvc3JjcGtncy9m Zm1zMi90ZW1wbGF0ZQppbmRleCAzNjVmNjRkMTBjYmFiLi4xNjQxZWNmNDNiZTViIDEwMDY0NAot LS0gYS9zcmNwa2dzL2ZmbXMyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZmZtczIvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1zMicKIHBrZ25hbWU9ZmZt czIKIHZlcnNpb249Mi40MAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251 LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZW5hYmxlLXNoYXJlZCAtLWRpc2FibGUtc3Rh dGljIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGF1dG9jb25mIGF1dG9tYWtlIGxpYnRv b2wiCgpGcm9tIGE1NGMxZGU5MDkzMDYwMGM3MDEwNTQ4Mzk3MjYwNGUzYzRmNDZmZWQgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzMS8xMTVd IGZyZWVyZHA6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL2ZyZWVyZHAvcGF0Y2hl cy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoICAgIHwgNDIgKysrKysrKysrKysrKysrKysrKwogMSBm aWxlIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9mcmVlcmRwL3BhdGNoZXMvZmZtcGVnNl9hYTJjYjlhYS5wYXRjaCBiL3NyY3BrZ3MvZnJl ZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEyY2I5YWEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwMC4uYTQzMjRkYTNhODgyMgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEyY2I5YWEucGF0Y2gKQEAgLTAsMCArMSw0 MiBAQAorRnJvbSBhYTJjYjlhYTVmZjU1NjI0MzM1OThiYTE2OGE0NjZlMDc1MmJjYTBlIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogYWthbGxhYmV0aCA8YWthbGxhYmV0aEBwb3N0ZW8u bmV0PgorRGF0ZTogVHVlLCAxNCBGZWIgMjAyMyAwNzo0ODo1NCArMDEwMAorU3ViamVjdDogW1BB VENIXSBGaXhlZCAjODY4NjogVXBkYXRlIGgyNjQgdG8gdXNlIG5ldyBGRk1QRUcgQVBJCisKKy0t LQorIGNoYW5uZWxzL3RzbWYvY2xpZW50L2ZmbXBlZy90c21mX2ZmbXBlZy5jIHwgMiArKworIGxp YmZyZWVyZHAvY29kZWMvaDI2NF9mZm1wZWcuYyAgICAgICAgICAgIHwgMiArKworIDIgZmlsZXMg Y2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jaGFubmVscy90c21mL2Ns aWVudC9mZm1wZWcvdHNtZl9mZm1wZWcuYyBiL2NoYW5uZWxzL3RzbWYvY2xpZW50L2ZmbXBlZy90 c21mX2ZmbXBlZy5jCitpbmRleCAzMzk0NjJkODY1Zi4uYmVlYTgwYjdhMWUgMTAwNjQ0CistLS0g YS9jaGFubmVscy90c21mL2NsaWVudC9mZm1wZWcvdHNtZl9mZm1wZWcuYworKysrIGIvY2hhbm5l bHMvdHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZtcGVnLmMKK0BAIC0yMzksOCArMjM5LDEwIEBA IHN0YXRpYyBCT09MIHRzbWZfZmZtcGVnX2luaXRfc3RyZWFtKElUU01GRGVjb2RlciogZGVjb2Rl ciwgY29uc3QgVFNfQU1fTUVESUFfVFlQCisgCQl9CisgCX0KKyAKKysjaWYgTElCQVZDT0RFQ19W RVJTSU9OX0lOVCA8IEFWX1ZFUlNJT05fSU5UKDU5LCAxOCwgMTAwKQorIAlpZiAobWRlY29kZXIt PmNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19DQVBfVFJVTkNBVEVEKQorIAkJbWRlY29k ZXItPmNvZGVjX2NvbnRleHQtPmZsYWdzIHw9IEFWX0NPREVDX0ZMQUdfVFJVTkNBVEVEOworKyNl bmRpZgorIAorIAlyZXR1cm4gVFJVRTsKKyB9CitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jb2Rl Yy9oMjY0X2ZmbXBlZy5jIGIvbGliZnJlZXJkcC9jb2RlYy9oMjY0X2ZmbXBlZy5jCitpbmRleCA4 YTIzZGIyNDczYy4uODk2YTMzMzAxOWIgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NvZGVjL2gy NjRfZmZtcGVnLmMKKysrKyBiL2xpYmZyZWVyZHAvY29kZWMvaDI2NF9mZm1wZWcuYworQEAgLTYx NSwxMCArNjE1LDEyIEBAIHN0YXRpYyBCT09MIGxpYmF2Y29kZWNfaW5pdChIMjY0X0NPTlRFWFQq IGgyNjQpCisgCQkJZ290byBFWENFUFRJT047CisgCQl9CisgCisrI2lmIExJQkFWQ09ERUNfVkVS U0lPTl9JTlQgPCBBVl9WRVJTSU9OX0lOVCg1OSwgMTgsIDEwMCkKKyAJCWlmIChzeXMtPmNvZGVj RGVjb2Rlci0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQX1RSVU5DQVRFRCkKKyAJCXsKKyAJ CQlzeXMtPmNvZGVjRGVjb2RlckNvbnRleHQtPmZsYWdzIHw9IEFWX0NPREVDX0ZMQUdfVFJVTkNB VEVEOworIAkJfQorKyNlbmRpZgorIAorICNpZmRlZiBXSVRIX1ZBQVBJCisgCgpGcm9tIGQ4ZmIy NDk0NzNlNzFkZjgwMDE3NjA4NmNlMGFiZDEwY2Y4NDJjNTAgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIw MjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzMi8xMTVdIGdlcmJlcmE6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlIGIvc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlCmlu ZGV4IGFlMTRmMzVjNzY3YzAuLjJkYzBhYzBjZTAzYjUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ2Vy YmVyYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dlcmJlcmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnZXJiZXJhJwogcGtnbmFtZT1nZXJiZXJhCiB2ZXJz aW9uPTEuMTIuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNv bmZpZ3VyZV9hcmdzPSItRFdJVEhfU1lTVEVNRD0wIC1EV0lUSF9BVkNPREVDPTEiCiBob3N0bWFr ZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIGY5ZGI0YmM1OWM3YzRjN2E0ODNhMTA2NmQ4NzYy OGFhY2RkMDMxMTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVj dDogW1BBVENIIDAzMy8xMTVdIGdvbGRlbmRpY3Q6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9nb2xkZW5kaWN0L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwg MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ29s ZGVuZGljdC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZQppbmRleCBmNGEw NTc1OWY2OTNkLi45N2Y0NDM0N2IwM2E2IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dvbGRlbmRpY3Qv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9nb2xkZW5kaWN0L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ29sZGVuZGljdCcKIHBrZ25hbWU9Z29sZGVuZGljdAog dmVyc2lvbj0xLjUuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9cW1ha2UK IGNvbmZpZ3VyZV9hcmdzPSJDT05GSUcrPXppbV9zdXBwb3J0IGdvbGRlbmRpY3QucHJvIgogaG9z dG1ha2VkZXBlbmRzPSJxdDUtcW1ha2UgcGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyIKQEAgLTEw LDcgKzEwLDcgQEAgbWFrZWRlcGVuZHM9InRpZmYtZGV2ZWwgcXQ1LWRldmVsIGxpYnZvcmJpcy1k ZXZlbCB6bGliLWRldmVsCiAgcXQ1LXdlYmtpdC1kZXZlbCBsem8tZGV2ZWwgYnppcDItZGV2ZWwg bGliYW8tZGV2ZWwgcXQ1LXN2Zy1kZXZlbAogIGxpYmViLWRldmVsIHF0NS14MTFleHRyYXMtZGV2 ZWwgZmZtcGVnLWRldmVsIGxpYmx6bWEtZGV2ZWwKICBxdDUtbXVsdGltZWRpYS1kZXZlbCIKLXNo b3J0X2Rlc2M9IkEgZmVhdHVyZS1yaWNoIGRpY3Rpb25hcnkgbG9va3VwIHByb2dyYW0iCitzaG9y dF9kZXNjPSJGZWF0dXJlLXJpY2ggZGljdGlvbmFyeSBsb29rdXAgcHJvZ3JhbSIKIG1haW50YWlu ZXI9IkpvaG4gPG1lQGpvaG5ueW5hdG9yLmRldj4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVy IgogaG9tZXBhZ2U9Imh0dHA6Ly9nb2xkZW5kaWN0Lm9yZy8iCgpGcm9tIDJmNWQ1NGQwMTlmZmIy YmJkOTVjMmVmMmNmNGMxNDJmYjMwNDA0NWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzNC8xMTVdIGdzdC1saWJhdjogcmV2YnVtcCBmb3Ig ZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlIGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKaW5k ZXggMzc0ODVmNmY2YTllOC4uZjYxMGU5NjZmMjNjZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3Qt bGliYXYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtbGliYXYnCiBwa2duYW1lPWdzdC1saWJh dgogdmVyc2lvbj0xLjIyLjUKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1l c29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgeWFzbSIKIG1ha2VkZXBlbmRzPSJvcmMt ZGV2ZWwgZ3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwgZmZtcGVnLWRldmVsIgoKRnJvbSA1ZjUyNjgz YWQ2MWQ4MDlhZTY0ODg2MjQ4YzkzNDkwOGVkNTZjYzIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIz IDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzUvMTE1XSBnc3QtcnRzcC1zZXJ2ZXI6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZSBiL3NyY3Br Z3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlCmluZGV4IGYyNjZmNDc3N2IzZWEuLjAxMTQ0NGVi MjY3MzkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnZ3N0LXJ0c3Atc2VydmVyJwogcGtnbmFtZT1nc3QtcnRzcC1zZXJ2ZXIK IHZlcnNpb249MS4yMi41Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNv bgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHB5dGhvbjMiCiBtYWtlZGVwZW5kcz0iZ2xp Yi1kZXZlbCBnc3QtcGx1Z2lucy1iYWQxLWRldmVsIGdvYmplY3QtaW50cm9zcGVjdGlvbgoKRnJv bSAxMmM1NDRkNGUwMjNhMWFjN2YxNmNlODJlNGZiNTU4NzcxOGUwZjNmIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzYvMTE1XSBndXZjdmll dzogdXBkYXRlIHRvIDIuMC44LgoKLS0tCiBzcmNwa2dzL2d1dmN2aWV3L3BhdGNoZXMvZml4LWlu Y2x1ZGUucGF0Y2ggfCAxMCArKysrKysrKysrCiBzcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRlICAg ICAgICAgICAgICAgICAgfCAgNyArKystLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlv bnMoKyksIDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9ndXZjdmll dy9wYXRjaGVzL2ZpeC1pbmNsdWRlLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ndXZjdmll dy9wYXRjaGVzL2ZpeC1pbmNsdWRlLnBhdGNoIGIvc3JjcGtncy9ndXZjdmlldy9wYXRjaGVzL2Zp eC1pbmNsdWRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAu LjUwM2MyYWYzYjc4YzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2d1dmN2aWV3L3BhdGNo ZXMvZml4LWluY2x1ZGUucGF0Y2gKQEAgLTAsMCArMSwxMCBAQAorLS0tIGEvZ3V2Y3ZpZXcvZ3V2 Y3ZpZXcuYworKysrIGIvZ3V2Y3ZpZXcvZ3V2Y3ZpZXcuYworQEAgLTI4LDYgKzI4LDcgQEAKKyAj aW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisgI2luY2x1 ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPGxvY2FsZS5oPgorIAorICNpbmNsdWRlICJndmlldy5o IgorICNpbmNsdWRlICJndmlld3Y0bDJjb3JlLmgiCmRpZmYgLS1naXQgYS9zcmNwa2dzL2d1dmN2 aWV3L3RlbXBsYXRlIGIvc3JjcGtncy9ndXZjdmlldy90ZW1wbGF0ZQppbmRleCBkNDJmZDM4ZmE0 YWQxLi44NmE3ZmQ2MTk2MTJjIDEwMDY0NAotLS0gYS9zcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvdGVtcGxhdGUKQEAgLTEsOCArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdndXZjdmlldycKIHBrZ25hbWU9Z3V2Y3ZpZXcKLXZlcnNpb249Mi4wLjcK LXJldmlzaW9uPTIKLWNyZWF0ZV93cmtzcmM9eWVzCit2ZXJzaW9uPTIuMC44CityZXZpc2lvbj0x CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLXN0 YXRpYyAtLWRpc2FibGUtZGViaWFuLW1lbnUiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcg aW50bHRvb2wgYXV0b2NvbmYgYXV0b21ha2UgbGlidG9vbCBnbGliLWRldmVsIgpAQCAtMTQsNyAr MTMsNyBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGlj ZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwOi8vZ3V2Y3ZpZXcuc291cmNl Zm9yZ2UubmV0LyIKIGRpc3RmaWxlcz0iJHtTT1VSQ0VGT1JHRV9TSVRFfS8ke3BrZ25hbWV9LyR7 cGtnbmFtZX0tc3JjLSR7dmVyc2lvbn0udGFyLmJ6MiIKLWNoZWNrc3VtPWY0N2Q1MWZiZDA2ZTQ0 ZWVhYTFhODJmNGExNTNjOTI3NTI3YzkwZDk0NTE0MTk3YTcwYjI5NTYwMjhjYzhhZDQKK2NoZWNr c3VtPWEyMWY0ZTQ0ODI4NjY2NmNmMjdiYWZlZjUyOTBjYzk1M2EwYTE3OTZiNzUyZTViYmU1MjEy NjZkYzEyMzBjODEKIAogcG9zdF9wYXRjaCgpIHsKIAlzZWQgJzMxYSNpbmNsdWRlIDxsb2NhbGUu aD4nIC1pICBndXZjdmlldy9ndXZjdmlldy5jCgpGcm9tIDcxMWZiNjIwMzI2Y2U1ODQyZGYxZTVk NWUzMjI1YmVmMzYzNDJiMDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAK U3ViamVjdDogW1BBVENIIDAzNy8xMTVdIGhhbmRicmFrZTogdXBkYXRlIHRvIDEuNi4xCgotLS0K IC4uLi9wYXRjaGVzL2ZpeC1taXNzaW5nLXgyNjUtbGluay1mbGFnLnBhdGNoICAgIHwgMTEgKysr KysrLS0tLS0KIC4uLi9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12cGwtaW5jbHVkZS5wYXRjaCAg IHwgMTUgKysrKysrKysrKysrKysrCiBzcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0ZSAgICAgICAg ICAgICAgICAgICAgICB8IDE3ICsrKysrKysrKystLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDMx IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvaGFuZGJyYWtlL3BhdGNoZXMvbGliaGItdnBsLWluY2x1ZGUucGF0Y2gKCmRpZmYgLS1naXQg YS9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2ZpeC1taXNzaW5nLXgyNjUtbGluay1mbGFnLnBh dGNoIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxpbmstZmxh Zy5wYXRjaAppbmRleCAyNmRiMDM4NjdhMGM4Li5kNmJiMmVkYTYyN2EzIDEwMDY0NAotLS0gYS9z cmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2ZpeC1taXNzaW5nLXgyNjUtbGluay1mbGFnLnBhdGNo CisrKyBiL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvZml4LW1pc3NpbmcteDI2NS1saW5rLWZs YWcucGF0Y2gKQEAgLTEsMTQgKzEsMTUgQEAKIC0tLSBhL2d0ay9jb25maWd1cmUuYWMKICsrKyBi L2d0ay9jb25maWd1cmUuYWMKIEBAIC0yMDMsNyArMjAzLDcgQEAKLSAKKwogIEFNX0NPTkRJVElP TkFMKFtNSU5HV10sIFt0ZXN0ICJ4JG1pbmd3X2ZsYWciID0gInh5ZXMiXSkKLSAKLS1IQl9MSUJT PSIkSEJfTElCUyAtbGhhbmRicmFrZSAtbGF2Zm9ybWF0IC1sYXZmaWx0ZXIgLWxhdmNvZGVjIC1s YXZ1dGlsIC1sZGF2MWQgLWxzd3Jlc2FtcGxlIC1scG9zdHByb2MgLWxkdmRuYXYgLWxkdmRyZWFk IC1sbXAzbGFtZSAtbHZvcmJpcyAtbHZvcmJpc2VuYyAtbG9nZyAtbHN3c2NhbGUgLWx0aGVvcmFl bmMgLWx0aGVvcmFkZWMgLWx2cHggLWx6IC1sYnoyIC1sYmx1cmF5IC1sYXNzIC1sZm9udGNvbmZp ZyAtbGZyZWV0eXBlIC1seG1sMiAtbGphbnNzb24gLWxvcHVzIC1sc3BlZXggLWx0dXJib2pwZWcg LWxsem1hIC1semltZyIKLStIQl9MSUJTPSIkSEJfTElCUyAtbGhhbmRicmFrZSAtbGF2Zm9ybWF0 IC1sYXZmaWx0ZXIgLWxhdmNvZGVjIC1sYXZ1dGlsIC1sZGF2MWQgLWxzd3Jlc2FtcGxlIC1scG9z dHByb2MgLWxkdmRuYXYgLWxkdmRyZWFkIC1sbXAzbGFtZSAtbHZvcmJpcyAtbHZvcmJpc2VuYyAt bG9nZyAtbHN3c2NhbGUgLWx0aGVvcmFlbmMgLWx0aGVvcmFkZWMgLWx2cHggLWx6IC1sYnoyIC1s Ymx1cmF5IC1sYXNzIC1sZm9udGNvbmZpZyAtbGZyZWV0eXBlIC1seG1sMiAtbGphbnNzb24gLWxv cHVzIC1sc3BlZXggLWx0dXJib2pwZWcgLWxsem1hIC1semltZyAtbGRsIgorCistSEJfTElCUz0i JEhCX0xJQlMgLWxoYW5kYnJha2UgLWxhdmZvcm1hdCAtbGF2ZmlsdGVyIC1sYXZjb2RlYyAtbGF2 dXRpbCAtbGRhdjFkIC1sc3dyZXNhbXBsZSAtbHBvc3Rwcm9jIC1sZHZkbmF2IC1sZHZkcmVhZCAt bG1wM2xhbWUgLWx2b3JiaXMgLWx2b3JiaXNlbmMgLWxvZ2cgLWxzd3NjYWxlIC1sdGhlb3JhZW5j IC1sdGhlb3JhZGVjIC1sdnB4IC1seiAtbGJ6MiAtbGJsdXJheSAtbGFzcyAtbGZvbnRjb25maWcg LWxmcmVldHlwZSAtbHhtbDIgLWxqYW5zc29uIC1sb3B1cyAtbHNwZWV4IC1sdHVyYm9qcGVnIC1s bHptYSAtbHppbWcgLWxTdnRBdjFFbmMiCisrSEJfTElCUz0iJEhCX0xJQlMgLWxoYW5kYnJha2Ug LWxhdmZvcm1hdCAtbGF2ZmlsdGVyIC1sYXZjb2RlYyAtbGF2dXRpbCAtbGRhdjFkIC1sc3dyZXNh bXBsZSAtbHBvc3Rwcm9jIC1sZHZkbmF2IC1sZHZkcmVhZCAtbG1wM2xhbWUgLWx2b3JiaXMgLWx2 b3JiaXNlbmMgLWxvZ2cgLWxzd3NjYWxlIC1sdGhlb3JhZW5jIC1sdGhlb3JhZGVjIC1sdnB4IC1s eiAtbGJ6MiAtbGJsdXJheSAtbGFzcyAtbGZvbnRjb25maWcgLWxmcmVldHlwZSAtbHhtbDIgLWxq YW5zc29uIC1sb3B1cyAtbHNwZWV4IC1sdHVyYm9qcGVnIC1sbHptYSAtbHppbWcgLWxTdnRBdjFF bmMgLWxkbCIKICBIQl9DUFBGTEFHUz0iJEhCX0NQUEZMQUdTICRIQklOQyIKLSAKKwogIFBLR19D SEVDS19NT0RVTEVTKFt4MjY0XSwgW3gyNjRdLCBzeXNfeDI2ND15ZXMsIHN5c194MjY0PW5vKQor CiAtLS0gYS90ZXN0L21vZHVsZS5kZWZzCiArKysgYi90ZXN0L21vZHVsZS5kZWZzCiBAQCAtNjks NiArNjksOSBAQApkaWZmIC0tZ2l0IGEvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12 cGwtaW5jbHVkZS5wYXRjaCBiL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvbGliaGItdnBsLWlu Y2x1ZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMjk4 ZjlmNGFiMjhmMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMv bGliaGItdnBsLWluY2x1ZGUucGF0Y2gKQEAgLTAsMCArMSwxNSBAQAorLS0tIGEvbGliaGIvbW9k dWxlLmRlZnMJMjAyMy0wMS0yMiAxMTozNjo0OS4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL2xpYmhi L21vZHVsZS5kZWZzCTIwMjMtMDQtMDMgMjI6Mzc6NTIuMzk1NDY3MDEwIC0wNDAwCitAQCAtNDYs MTEgKzQ2LDcgQEAKKyBMSUJIQi5HQ0MuSSArPSAkKExJQkhCLmJ1aWxkLykgJChDT05UUklCLmJ1 aWxkLylpbmNsdWRlCisgCisgaWZlcSAoMSwkKEZFQVRVUkUucXN2KSkKKy0gICAgaWZlcSAoJChI T1NULnN5c3RlbSksZnJlZWJzZCkpCistICAgICAgICBMSUJIQi5HQ0MuSSArPSAkKExPQ0FMQkFT RSkvaW5jbHVkZS92cGwKKy0gICAgZWxzZQorLSAgICAgICAgTElCSEIuR0NDLkkgKz0gJChDT05U UklCLmJ1aWxkLylpbmNsdWRlL3ZwbAorLSAgICBlbmRpZgorKyAgICBMSUJIQi5HQ0MuSSArPSAv dXNyL2luY2x1ZGUvdnBsCisgZW5kaWYKKyAKKyBpZm5lcSAoLCQoZmlsdGVyICQoSE9TVC5zeXN0 ZW0pLGZyZWVic2QgbmV0YnNkIG9wZW5ic2QpKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9oYW5kYnJh a2UvdGVtcGxhdGUgYi9zcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0ZQppbmRleCBjYTVlNDU3MWU0 OWMzLi5jMzJjYjFiZmEzMWY0IDEwMDY0NAotLS0gYS9zcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnaGFuZGJyYWtlJwogcGtnbmFtZT1oYW5kYnJha2UKLXZlcnNpb249 MS41LjEKK3ZlcnNpb249MS42LjEKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1 cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWZvcmNlIC0tZGlzYWJsZS1ndGstdXBkYXRlLWNoZWNrcyAt LWRpc2FibGUtZGYtZmV0Y2ggLS1oYXJkZW4KLSAkKHZvcHRfZW5hYmxlIGZka19hYWMgZmRrLWFh YykgJCh2b3B0X2VuYWJsZSBudmVuYykiCisgJCh2b3B0X2VuYWJsZSBmZGtfYWFjIGZkay1hYWMp ICQodm9wdF9lbmFibGUgbnZlbmMpICQodm9wdF9lbmFibGUgcXN2KSIKIG1ha2VfYnVpbGRfYXJn cz0iLUMgJHtYQlBTX1RSSVBMRVR9IgogbWFrZV9pbnN0YWxsX2FyZ3M9Ii1DICR7WEJQU19UUklQ TEVUfSIKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgY21ha2UgZ2V0dGV4dC1kZXZlbCBnbGli LWRldmVsIGludGx0b29sIGxpYnRvb2wgbTQgbWVzb24gbmFzbSBwa2ctY29uZmlnIHB5dGhvbjMi CkBAIC0xMiw4ICsxMiwxMSBAQCBtYWtlZGVwZW5kcz0iYnppcDItZGV2ZWwgZmZtcGVnLWRldmVs IGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsIGd0ayszLWRldmVsCiAgamFuc3Nvbi1kZXZlbCBsYW1l LWRldmVsIGxpYmFzcy1kZXZlbCBsaWJibHVyYXktZGV2ZWwgbGliZGF2MWQtZGV2ZWwKICBsaWJk dmRuYXYtZGV2ZWwgbGliZHZkcmVhZC1kZXZlbCBsaWJndWRldi1kZXZlbCBsaWJudW1hLWRldmVs CiAgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJ0aGVvcmEtZGV2ZWwgbGlidm9yYmlzLWRldmVsIGxp YnZweC1kZXZlbCBsaWJ4bWwyLWRldmVsCi0gb3B1cy1kZXZlbCBzcGVleC1kZXZlbCB4MjY0LWRl dmVsIHgyNjUtZGV2ZWwgemltZy1kZXZlbAorIG9wdXMtZGV2ZWwgc3BlZXgtZGV2ZWwgeDI2NC1k ZXZlbCB4MjY1LWRldmVsIHppbWctZGV2ZWwgbGlic3Z0LWF2MS1kZXZlbAogICQodm9wdF9pZiBm ZGtfYWFjIGZkay1hYWMtZGV2ZWwpCisgJCh2b3B0X2lmIHFzdiBsaWJ2YS1kZXZlbCkKKyAkKHZv cHRfaWYgcXN2IGxpYmRybS1kZXZlbCkKKyAkKHZvcHRfaWYgcXN2IG9uZXZwbC1kZXZlbCkKICAk KHZvcHRfaWYgbnZlbmMgbnYtY29kZWMtaGVhZGVycykiCiBkZXBlbmRzPSJkZXNrdG9wLWZpbGUt dXRpbHMgZ3N0LXBsdWdpbnMtZ29vZDEgaGljb2xvci1pY29uLXRoZW1lIgogc2hvcnRfZGVzYz0i TXVsdGl0aHJlYWRlZCB2aWRlbyB0cmFuc2NvZGVyIgpAQCAtMjEsMTUgKzI0LDE1IEBAIG1haW50 YWluZXI9IkVubm8gQm9sYW5kIDxnb3R0b3hAdm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwt Mi4wLW9ubHkiCiBob21lcGFnZT0iaHR0cHM6Ly9oYW5kYnJha2UuZnIvIgogZGlzdGZpbGVzPSJo dHRwczovL2dpdGh1Yi5jb20vSGFuZEJyYWtlL0hhbmRCcmFrZS9yZWxlYXNlcy9kb3dubG9hZC8k e3ZlcnNpb259L0hhbmRCcmFrZS0ke3ZlcnNpb259LXNvdXJjZS50YXIuYnoyIgotY2hlY2tzdW09 Mzk5OWZlMDZkNTMwOWM4MTk3OTlhNzNhOTY4YThlYzM4NDBlNzg0MGMyYjY0YWY4ZjVjZGI3ZmQ4 Yzk0MzBmMAorY2hlY2tzdW09OTRjY2ZlMDNkYjkxN2E5MTY1MDAwMGM1MTBmN2ZkNTNmODQ0ZGEx OWYxOWFkNGI0YmUxYjhmNmJjMzFhOGQ0Ywogbm9jcm9zcz15ZXMKIAotYnVpbGRfb3B0aW9ucz0i ZmRrX2FhYyBudmVuYyIKK2J1aWxkX29wdGlvbnM9ImZka19hYWMgbnZlbmMgcXN2IgogCiBjYXNl ICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KIAl4ODZfNjQqfGk2ODYqKQogCQlDRkxBR1M9Ii1t c3NlIgotCQlidWlsZF9vcHRpb25zX2RlZmF1bHQ9Im52ZW5jIgorCQlidWlsZF9vcHRpb25zX2Rl ZmF1bHQ9Im52ZW5jIHFzdiIKIAkJOzsKIGVzYWMKIApAQCAtMzcsNyArNDAsNyBAQCBwcmVfY29u ZmlndXJlKCkgewogCSMgdXNlIHN5c3RlbSBsaWJyYXJpZXMsIGRvbid0IGRvd25sb2FkIHRoZW0K IAlybSAtcmYgY29udHJpYi8KIAlmb3IgbW9kdWxlIGluIGZkay1hYWMgZmZtcGVnIGxpYmJsdXJh eSBsaWJkYXYxZCBsaWJkdmRuYXYgbGliZHZkcmVhZCBudmVuYyBcCi0JCXgyNjUgemltZzsgZG8K KwkJeDI2NSB6aW1nIHN2dC1hdjEgbGlidnBsOyBkbwogCSAgICB2c2VkIC1pICIvTU9EVUxFUyAr PSBjb250cmliXC8ke21vZHVsZX0vZCIgbWFrZS9pbmNsdWRlL21haW4uZGVmcwogCWRvbmUKIH0K CkZyb20gYzJiYWE4YWFhOGI4MmU3ZGU2Y2Q5YWY4Y2IzYmZkYTAzYTExZjUzYiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM4LzExNV0gaGVk Z2V3YXJzOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvaGVkZ2V3YXJz L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlIGIvc3Jj cGtncy9oZWRnZXdhcnMvdGVtcGxhdGUKaW5kZXggMTVhMWRmNmQ4ODYxZC4uZDFiNzI5MGJmZGMx OSAxMDA2NDQKLS0tIGEvc3JjcGtncy9oZWRnZXdhcnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9o ZWRnZXdhcnMvdGVtcGxhdGUKQEAgLTEsMTMgKzEsMTMgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J2hlZGdld2FycycKIHBrZ25hbWU9aGVkZ2V3YXJzCiB2ZXJzaW9uPTEuMC4yCi1yZXZpc2lvbj0x CityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1ETk9TRVJW RVI9MSAtRERBVEFfSU5TVEFMTF9ESVI9L3Vzci9zaGFyZS8ke3BrZ25hbWV9CiAgLURQSFlTRlNf U1lTVEVNPTEgLURNSU5JTUFMX0ZMQUdTPTEiCiBtYWtlX2NtZD1tYWtlCiBob3N0bWFrZWRlcGVu ZHM9Imx1YTUxIHBrZy1jb25maWcgcXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIgotbWFrZWRlcGVu ZHM9ImZmbXBlZy1kZXZlbCBsdWE1MS1kZXZlbCBwaHlzZnMtZGV2ZWwgcXQ1LXRvb2xzLWRldmVs IFNETDJfaW1hZ2UtZGV2ZWwKK21ha2VkZXBlbmRzPSJmZm1wZWc0LWRldmVsIGx1YTUxLWRldmVs IHBoeXNmcy1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwgU0RMMl9pbWFnZS1kZXZlbAogIFNETDJfbWl4 ZXItZGV2ZWwgU0RMMl9uZXQtZGV2ZWwgU0RMMl90dGYtZGV2ZWwiCiBkZXBlbmRzPSJsaWJmcmVl Z2x1dCIKIHNob3J0X2Rlc2M9IkZ1bm55IHR1cm4tYmFzZWQgYXJ0aWxsZXJ5IGdhbWUsIGZlYXR1 cmluZyBmaWdodGluZyBIZWRnZWhvZ3MhIgoKRnJvbSAyZTllYWZlYzZhZTY3NDYyMTIwNmIyMmFh YmIyYjNjNWE3Y2M2YTcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwMzkvMTE1XSBpZGpjOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgot LS0KIHNyY3BrZ3MvaWRqYy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaWRqYy90ZW1wbGF0 ZSBiL3NyY3BrZ3MvaWRqYy90ZW1wbGF0ZQppbmRleCBhOWNkZTA2NjVkNTViLi42ZjFkMjFjNTc4 MWZkIDEwMDY0NAotLS0gYS9zcmNwa2dzL2lkamMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9pZGpj L3RlbXBsYXRlCkBAIC01LDcgKzUsNyBAQCByZXZpc2lvbj01CiBidWlsZF9zdHlsZT1nbnUtY29u ZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgZ2l0IHB5dGhvbjMgYXV0b21ha2Ug Z2V0dGV4dC1kZXZlbCBsaWJ0b29sIgogbWFrZWRlcGVuZHM9ImxpYnZvcmJpcy1kZXZlbCBsaWJv Z2ctZGV2ZWwgamFjay1kZXZlbCBsaWJzYW1wbGVyYXRlLWRldmVsCi0gbGliZmxhYy1kZXZlbCBs aWJzbmRmaWxlLWRldmVsIG1wZzEyMy1kZXZlbCBmZm1wZWctZGV2ZWwgc3BlZXgtZGV2ZWwKKyBs aWJmbGFjLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwgbXBnMTIzLWRldmVsIGZmbXBlZzQtZGV2ZWwg c3BlZXgtZGV2ZWwKICBnbGliLWRldmVsIHBpeG1hbi1kZXZlbCBsYW1lLWRldmVsIHB5dGhvbjMt Z29iamVjdC1kZXZlbCBsaWJzaG91dC1pZGpjLWRldmVsCiAgb3B1cy1kZXZlbCB0d29sYW1lLWRl dmVsIHB5dGhvbjMtbXV0YWdlbiBweXRob24zLWRldmVsIgogZGVwZW5kcz0icHl0aG9uMy1nb2Jq ZWN0IHB5dGhvbjMtbXV0YWdlbiBkZXNrdG9wLWZpbGUtdXRpbHMgc2hhcmVkLW1pbWUtaW5mbyBw eXRob24zLWRidXMgamFjayIKCkZyb20gNzgwYTg5M2Y3YTllYmQxYzIwMjA4NDdmZTlkYmM4MWU2 Y2M1ZTA2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDQwLzExNV0ga2lkMzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgMTcgKysrKysrKysrKysrKysrKysKIDEgZmls ZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9r aWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2lkMy9wYXRj aGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjEzNWZjNTBlMDdjOWIKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0w LDAgKzEsMTcgQEAKKyMgaHR0cHM6Ly9hdXIuYXJjaGxpbnV4Lm9yZy9jZ2l0L2F1ci5naXQvZGlm Zi9mZm1wZWc1LnBhdGNoP2g9a2lkMy1jbGkmaWQ9MTI0MTBhNzQ5MDY2MTJlN2VmYzBlYzhmYmNl NzM5YjRhMGZlZjdlNworZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2Fjb3VzdGlkaW1wb3J0L2Zm bXBlZ2ZpbmdlcnByaW50ZGVjb2Rlci5jcHAgYi9zcmMvcGx1Z2lucy9hY291c3RpZGltcG9ydC9m Zm1wZWdmaW5nZXJwcmludGRlY29kZXIuY3BwCitpbmRleCBlMTU2ZDQyNC4uZTEyYjlhYmQgMTAw NjQ0CistLS0gYS9zcmMvcGx1Z2lucy9hY291c3RpZGltcG9ydC9mZm1wZWdmaW5nZXJwcmludGRl Y29kZXIuY3BwCisrKysgYi9zcmMvcGx1Z2lucy9hY291c3RpZGltcG9ydC9mZm1wZWdmaW5nZXJw cmludGRlY29kZXIuY3BwCitAQCAtMjMyLDcgKzIzMiwxMSBAQCBwcml2YXRlOgorICAgZnJpZW5k IGNsYXNzIEZvcm1hdDsKKyAgIGZyaWVuZCBjbGFzcyBDb252ZXJ0ZXI7CisgICBBVkNvZGVjQ29u dGV4dCogbV9wdHI7CisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9JTlQgPCBBVl9WRVJTSU9OX0lO VCg1OSwgMCwgMCkKKyAgIEFWQ29kZWMqIG1faW1wbDsKKysjZWxzZQorKyAgY29uc3QgQVZDb2Rl YyogbV9pbXBsOworKyNlbmRpZgorICAgQVZGcmFtZSogbV9mcmFtZTsKKyAgIGJvb2wgbV9vcGVu ZWQ7CisgfTsKCkZyb20gODNjZWMwNmIyYjY3ZTY1ZDY3YThkOTY4MmVlNzlhYTUzYmMzMGNmNyBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQx LzExNV0ga29kaTogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2tvZGkv dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tvZGkvdGVtcGxhdGUgYi9zcmNwa2dzL2tvZGkv dGVtcGxhdGUKaW5kZXggYWE1OTMyNDI1OGEwZC4uNmNmNjRkZmIyNzI5NCAxMDA2NDQKLS0tIGEv c3JjcGtncy9rb2RpL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva29kaS90ZW1wbGF0ZQpAQCAtNTQs NyArNTQsNyBAQCBtYWtlZGVwZW5kcz0iCiAgbGlibWFkLWRldmVsIGZvbnRjb25maWctZGV2ZWwg bGliWGluZXJhbWEtZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJtbXMtZGV2ZWwKICBlbmNh LWRldmVsIGJvb3N0LWRldmVsIGxpYmN1cmwtZGV2ZWwgbGlidmEtZGV2ZWwgbGlidmRwYXUtZGV2 ZWwgbGliYXNzLWRldmVsCiAgbGliYmx1ZXRvb3RoLWRldmVsIHlhamwtZGV2ZWwgbGlicGxpc3Qt ZGV2ZWwgbGlicnRtcC1kZXZlbCB0aW55eG1sLWRldmVsCi0gdGFnbGliLWRldmVsIGxpYmNhcC1k ZXZlbCBsYW1lLWRldmVsIGxpYmJsdXJheS1kZXZlbCBsaWJuZnMtZGV2ZWwgZmZtcGVnLWRldmVs CisgdGFnbGliLWRldmVsIGxpYmNhcC1kZXZlbCBsYW1lLWRldmVsIGxpYmJsdXJheS1kZXZlbCBs aWJuZnMtZGV2ZWwgZmZtcGVnNC1kZXZlbAogIGdpZmxpYi1kZXZlbCBsaWJ4c2x0LWRldmVsIGdu dXRscy1kZXZlbCBsaWJzc2gtZGV2ZWwgbGlibWljcm9odHRwZC1kZXZlbAogIGxpYmNlYy1kZXZl bCBkY2FkZWMtZGV2ZWwgZmxhdGJ1ZmZlcnMtZGV2ZWwgZm10LWRldmVsIGxjbXMyLWRldmVsCiAg bGliZnN0cmNtcC1kZXZlbCByYXBpZGpzb24gbGliY2Rpby1wYXJhbm9pYSBzcGRsb2cgbGlid2F5 bGFuZHBwLWRldmVsCgpGcm9tIGRlMGY2OTAzNjE4OGFiYzcwMjZhYWE0OWY1NjQ3ZTc2M2Y5OGQx MzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENI IDA0Mi8xMTVdIGtwaXBld2lyZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2twaXBld2lyZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRl IGIvc3JjcGtncy9rcGlwZXdpcmUvdGVtcGxhdGUKaW5kZXggYjJkM2Q4MGMxZGQxYS4uOTgxYzdi ODg5MGRlZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9rcGlwZXdpcmUvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9rcGlwZXdpcmUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdrcGlwZXdpcmUnCiBwa2duYW1lPWtwaXBld2lyZQogdmVyc2lvbj01LjI3LjkKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImV4 dHJhLWNtYWtlLW1vZHVsZXMgcGxhc21hLXdheWxhbmQtcHJvdG9jb2xzIGdldHRleHQKICBxdDUt cW1ha2UgcXQ1LWhvc3QtdG9vbHMgcGtnLWNvbmZpZyB3YXlsYW5kLWRldmVsIGtjb3JlYWRkb25z CgpGcm9tIDY2YzcwMmU0MjA3YzdlNzlhZDZjZWE3NTliOWEyNjAzNmI2ZTdlMTMgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0My8xMTVdIGxp YmV4dHJhY3RvcjogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2xpYmV4 dHJhY3Rvci90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliZXh0cmFjdG9yL3RlbXBsYXRl IGIvc3JjcGtncy9saWJleHRyYWN0b3IvdGVtcGxhdGUKaW5kZXggMDQ0YzY2M2EzYTBiOS4uYWNl ODhhZTEyOGRhNSAxMDA2NDQKLS0tIGEvc3JjcGtncy9saWJleHRyYWN0b3IvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9saWJleHRyYWN0b3IvdGVtcGxhdGUKQEAgLTcsNyArNyw3IEBAIGNvbmZpZ3Vy ZV9hcmdzPSItLWRpc2FibGUtc3RhdGljIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgog bWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZXhpdjItZGV2ZWwgdGlmZi1kZXZl bCBsaWJwbmctZGV2ZWwKICBsaWJqcGVnLXR1cmJvLWRldmVsIGxpYnZvcmJpcy1kZXZlbCBsaWJm bGFjLWRldmVsIGdpZmxpYi1kZXZlbCBsaWJtcGVnMi1kZXZlbAotIGZmbXBlZy1kZXZlbCBndGsr My1kZXZlbCBsaWJsdGRsLWRldmVsIGxpYmFyY2hpdmUtZGV2ZWwgZmlsZS1kZXZlbCBsaWJnc2Yt ZGV2ZWwiCisgZmZtcGVnNC1kZXZlbCBndGsrMy1kZXZlbCBsaWJsdGRsLWRldmVsIGxpYmFyY2hp dmUtZGV2ZWwgZmlsZS1kZXZlbCBsaWJnc2YtZGV2ZWwiCiBzaG9ydF9kZXNjPSJMaWJyYXJ5IHVz ZWQgdG8gZXh0cmFjdCBtZXRhIGRhdGEgZnJvbSBmaWxlcyIKIG1haW50YWluZXI9Ik1hcnRpbiBS aWVzZSA8Z3JhdWVoYWFyZUBnbXguZGU+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKCkZy b20gOTc4NjI5MGYyYWY1ZGNkM2E5ODNjZDcwZjlhYjAwM2M0NTk4MDhjNCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ0LzExNV0gbGlib3Bl bmFsOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbGlib3BlbmFsL3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJvcGVuYWwvdGVtcGxhdGUgYi9zcmNwa2dzL2xpYm9w ZW5hbC90ZW1wbGF0ZQppbmRleCA3NzIxOGY5ZTUzOWRmLi4zZjQ5ZWQ3NWExZmRjIDEwMDY0NAot LS0gYS9zcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xpYm9wZW5hbC90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xpYm9wZW5hbCcK IHBrZ25hbWU9bGlib3BlbmFsCiB2ZXJzaW9uPTEuMjIuMgotcmV2aXNpb249MQorcmV2aXNpb249 MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREFMU09GVF9FWEFNUExFUz1P RkYiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIGFmZTE4N2ZhYjhkMGU4YmUw ZDY2MjIyNTVlMzliYmQxYjkxZWUxZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDgg LTA0MDAKU3ViamVjdDogW1BBVENIIDA0NS8xMTVdIGxvdWRnYWluOiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgMTEg KysrKysrKysrKysKIHNyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUgICAgICAgICAgICAgIHwgIDIg Ky0KIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNw a2dzL2xvdWRnYWluL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAwLi4xNmQ0NTEwZWU5OGZhCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSwxMSBAQAorLS0t IGEvc3JjL3NjYW4uYwkyMDE5LTA5LTA2IDExOjMxOjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIGIv c3JjL3NjYW4uYwkyMDIzLTAzLTIzIDExOjE1OjQwLjg2Nzk2ODUyMSAtMDQwMAorQEAgLTY5LDgg KzY5LDYgQEAKKyAJICogSXQgaXMgbm93IHVzZWxlc3MKKyAJICogaHR0cHM6Ly9naXRodWIuY29t L0ZGbXBlZy9GRm1wZWcvYmxvYi83MGQyNTI2OGMyMWNiZWU1ZjA4MzA0ZGE5NWJlMWY2NDdjNjMw YzE1L2RvYy9BUEljaGFuZ2VzI0w4NgorIAkgKi8KKy0gIGlmIChhdmZvcm1hdF92ZXJzaW9uKCkg PCBBVl9WRVJTSU9OX0lOVCg1OCw5LDEwMCkpCistICAgIGF2X3JlZ2lzdGVyX2FsbCgpOworIAor IAlhdl9sb2dfc2V0X2NhbGxiYWNrKHNjYW5fYXZfbG9nKTsKKyAKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvbG91ZGdhaW4vdGVtcGxhdGUgYi9zcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlCmluZGV4IGRh NGYyZDU2ZTk0YzMuLjRkNmJmMjllZmI0ZmQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbG91ZGdhaW4v dGVtcGxhdGUKKysrIGIvc3JjcGtncy9sb3VkZ2Fpbi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xvdWRnYWluJwogcGtnbmFtZT1sb3VkZ2FpbgogdmVyc2lv bj0wLjYuOAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3Rt YWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJsaWJlYnVyMTI4LWRldmVsIHRh Z2xpYi1kZXZlbCBmZm1wZWctZGV2ZWwiCgpGcm9tIDAzM2M0MWVlZmNjMmUxYWUxZTJhMDdmMTYy MTZlOTBkODIwMGNhNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3Vi amVjdDogW1BBVENIIDA0Ni8xMTVdIG1lZGlhc3RyZWFtZXI6IHJldmJ1bXAgZm9yIGZmbXBlZzQt NC40LjMKCi0tLQogc3JjcGtncy9tZWRpYXN0cmVhbWVyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9tZWRpYXN0cmVhbWVyL3RlbXBsYXRlIGIvc3JjcGtncy9tZWRpYXN0cmVhbWVyL3RlbXBs YXRlCmluZGV4IDBmY2ZmYTc2NTNkMTguLjkyYWRhODg3NDNhOWIgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVt cGxhdGUKQEAgLTUsNyArNSw3IEBAIHJldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25m aWd1cmVfYXJncz0iLURFTkFCTEVfU1RSSUNUPTAgLURFTkFCTEVfVU5JVF9URVNUUz0wIgogaG9z dG1ha2VkZXBlbmRzPSJweXRob24zIgotbWFrZWRlcGVuZHM9ImJ6cnRwLWRldmVsIGZmbXBlZy1k ZXZlbCBnbGV3LWRldmVsIGxpYlh2LWRldmVsIGxpYnNydHAtZGV2ZWwKK21ha2VkZXBlbmRzPSJi enJ0cC1kZXZlbCBmZm1wZWc0LWRldmVsIGdsZXctZGV2ZWwgbGliWHYtZGV2ZWwgbGlic3J0cC1k ZXZlbAogIGxpYnVwbnAtZGV2ZWwgbGlidnB4LWRldmVsIG1iZWR0bHMtZGV2ZWwgb3B1cy1kZXZl bCBvcnRwLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKICBsaWJ0aGVvcmEtZGV2ZWwgc3BlZXgtZGV2 ZWwgdjRsLXV0aWxzLWRldmVsIGJjZzcyOS1kZXZlbCBiY21hdHJvc2thMi1kZXZlbCBsaWJnc20t ZGV2ZWwKICB6eGluZy1jcHAtZGV2ZWwiCgpGcm9tIDBkNmFhMDlhM2IyNDZkYzliZmY1NjBjYzA3 ZWIwZDlmZWRjZDBiNWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3Vi amVjdDogW1BBVENIIDA0Ny8xMTVdIG1nYmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9tZ2JhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tZ2JhL3RlbXBsYXRlIGIv c3JjcGtncy9tZ2JhL3RlbXBsYXRlCmluZGV4IDU1MTNlM2ZkMTZmM2YuLmY1Yzg3YTQ4OTMwMDIg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWdiYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21nYmEvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtZ2JhJwogcGtnbmFt ZT1tZ2JhCiB2ZXJzaW9uPTAuMTAuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5 bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUt cW1ha2UgZGVza3RvcC1maWxlLXV0aWxzIgogbWFrZWRlcGVuZHM9IlNETDItZGV2ZWwgZmZtcGVn LWRldmVsIGxpYmVkaXQtZGV2ZWwgbGliZXBveHktZGV2ZWwgbGlibWFnaWNrLWRldmVsCgpGcm9t IGExYzhjZWE0NTlmMWNhN2ZmNDk3ZmQyMWJmY2Q4YTI4ZGNhMGVlY2EgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA0OC8xMTVdIG1sdDogcmV2 YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL21sdC90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbWx0L3RlbXBsYXRlIGIvc3JjcGtncy9tbHQvdGVtcGxhdGUKaW5kZXggNzNl MzkxNWFhYWI5YS4uZWM1MDU0YmUzYjc1ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9tbHQvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9tbHQvdGVtcGxhdGUKQEAgLTgsNyArOCw3IEBAIGNvbmZpZ3VyZV9h cmdzPSItLXByZWZpeD0vdXNyIC0tbGliZGlyPS91c3IvbGliJFhCUFNfVEFSR0VUX1dPUkRTSVpF CiAgLS1zd2lnLWxhbmd1YWdlcz1weXRob24iCiBob3N0bWFrZWRlcGVuZHM9ImRveHlnZW4gcGtn LWNvbmZpZyBsYWRzcGEtc2RrIHN3aWcgcHl0aG9uMyB3aGljaCIKICMgWFhYOiBtb3ZpdCB2aWQu c3RhYgotbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZy1kZXZlbCBndGsrLWRldmVs IGphY2stZGV2ZWwgbGFkc3BhLXNkaworbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBl ZzQtZGV2ZWwgZ3RrKy1kZXZlbCBqYWNrLWRldmVsIGxhZHNwYS1zZGsKICBsaWJleGlmLWRldmVs IGxpYnNhbXBsZXJhdGUtZGV2ZWwgbGlieG1sMi1kZXZlbCBzb3gtZGV2ZWwgU0RMX2ltYWdlLWRl dmVsCiAgZmZ0dy1kZXZlbCBmcmVpMHItcGx1Z2lucyBweXRob24zLWRldmVsIHB1bHNlYXVkaW8t ZGV2ZWwgbW92aXQtZGV2ZWwKICBsaWJ2aWRzdGFiLWRldmVsIgoKRnJvbSAxNDhlMTE0Zjk1Y2Rk ZDZlYzNlMGMyZTdkNzNkODA1YmMwMzNhMzQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDkvMTE1XSBtb2M6IHJldmJ1bXAgZm9yIGZmbXBl ZzQtNC40LjMKCi0tLQogc3JjcGtncy9tb2MvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21v Yy90ZW1wbGF0ZSBiL3NyY3BrZ3MvbW9jL3RlbXBsYXRlCmluZGV4IDNhMDQ5MzJjOGYxZTYuLmQ4 ZGU4MTYwMjZiNjQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbW9jL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvbW9jL3RlbXBsYXRlCkBAIC00LDcgKzQsNyBAQCB2ZXJzaW9uPTIuNS4yCiByZXZpc2lvbj03 CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWci Ci1tYWtlZGVwZW5kcz0iZGItZGV2ZWwgbmN1cnNlcy1kZXZlbCBsaWJjdXJsLWRldmVsIHBvcHQt ZGV2ZWwgZmZtcGVnLWRldmVsCittYWtlZGVwZW5kcz0iZGItZGV2ZWwgbmN1cnNlcy1kZXZlbCBs aWJjdXJsLWRldmVsIHBvcHQtZGV2ZWwgZmZtcGVnNC1kZXZlbAogIGphY2stZGV2ZWwgYWxzYS1s aWItZGV2ZWwgbGlibHRkbC1kZXZlbCBsaWJmbGFjLWRldmVsIGxpYnZvcmJpcy1kZXZlbAogIGxp Ym1hZC1kZXZlbCBsaWJtcGNkZWMtZGV2ZWwgbGlibW9kcGx1Zy1kZXZlbCBsaWJpZDN0YWctZGV2 ZWwgZmFhZDItZGV2ZWwKICB0YWdsaWItZGV2ZWwgbGlic25kZmlsZS1kZXZlbCB3YXZwYWNrLWRl dmVsIHNwZWV4LWRldmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwKCkZyb20gZGVjOTdiZjJiZjllMWU4 YjNiMzc3NzE3MWZjMWRmMGUyNTJmYjc3OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0 OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDUwLzExNV0gbW90aW9uOiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3MvbW90aW9uL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9t b3Rpb24vdGVtcGxhdGUgYi9zcmNwa2dzL21vdGlvbi90ZW1wbGF0ZQppbmRleCA2MDdlYmViM2M3 YjI0Li5iZjYzYTkxZDk3NjRmIDEwMDY0NAotLS0gYS9zcmNwa2dzL21vdGlvbi90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL21vdGlvbi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ21vdGlvbicKIHBrZ25hbWU9bW90aW9uCiB2ZXJzaW9uPTQuNi4wCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBob3N0bWFrZWRlcGVu ZHM9ImF1dG9tYWtlIHBrZy1jb25maWcgZ2V0dGV4dC1kZXZlbCB0YXIiCiBtYWtlZGVwZW5kcz0i ZmZtcGVnLWRldmVsIGxpYm1pY3JvaHR0cGQtZGV2ZWwgdjRsLXV0aWxzLWRldmVsIGdldHRleHQt ZGV2ZWwiCgpGcm9tIGU1ZWJhOTFkMzZmYzMwYjBhMjZjZmE1N2RiYWI1NmUyMjhhNDUxNDYgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA1MS8x MTVdIG5vdGN1cnNlczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL25vdGN1 cnNlcy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRlIGIvc3Jj cGtncy9ub3RjdXJzZXMvdGVtcGxhdGUKaW5kZXggNmRkOGEwOTEzMTlmNy4uMzExMGMzMGM5YWZm MiAxMDA2NDQKLS0tIGEvc3JjcGtncy9ub3RjdXJzZXMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9u b3RjdXJzZXMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdu b3RjdXJzZXMnCiBwa2duYW1lPW5vdGN1cnNlcwogdmVyc2lvbj0zLjAuOQotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFVTRV9TVEFU SUM9T04gJCh2b3B0X2Jvb2wgbWFuIFVTRV9QQU5ET0MpIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnICQodm9wdF9pZiBtYW4gcGFuZG9jKSIKCkZyb20gOTY5ZWJlMjI3ZDllNTZmMTc4NWU5 ZjBlNDFlNzhiOGI1YjgwODM0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDUyLzExNV0gb2xpdmU6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40 LjMKCi0tLQogc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29s aXZlL3RlbXBsYXRlIGIvc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZQppbmRleCAxMmE0NjkzNmM5OTAw Li41YzI5MTdiOWM1MTI0IDEwMDY0NAotLS0gYS9zcmNwa2dzL29saXZlL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mvb2xpdmUvdGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ29saXZlJwogcGtnbmFtZT1vbGl2ZQogdmVyc2lvbj0wLjEuMgotcmV2aXNpb249Mgor cmV2aXNpb249MwogYnVpbGRfc3R5bGU9cW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0icXQ1LXFtYWtl IHF0NS1ob3N0LXRvb2xzIHBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0icXQ1LWRldmVsIHF0NS1t dWx0aW1lZGlhLWRldmVsIHF0NS1zdmctZGV2ZWwgZmZtcGVnLWRldmVsIGZyZWkwci1wbHVnaW5z IgorbWFrZWRlcGVuZHM9InF0NS1kZXZlbCBxdDUtbXVsdGltZWRpYS1kZXZlbCBxdDUtc3ZnLWRl dmVsIGZmbXBlZzQtZGV2ZWwgZnJlaTByLXBsdWdpbnMiCiBzaG9ydF9kZXNjPSJOb24tbGluZWFy IHZpZGVvIGVkaXRvciIKIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9y Zz4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgoKRnJvbSAzYWZjOGQ4ZjExM2M4ZTNiNzQ0 MWFiMzQ5NmQzZmNiZWMwODRmMjc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwNTMvMTE1XSBvbXhwbGF5ZXI6IHJldmJ1bXAgZm9yIGZmbXBl ZzQtNC40LjMKCi0tLQogc3JjcGtncy9vbXhwbGF5ZXIvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmls ZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9vbXhwbGF5ZXIvdGVtcGxhdGUgYi9zcmNwa2dzL29teHBsYXllci90ZW1wbGF0ZQpp bmRleCA5YTY2NjkwYzgzZWJiLi5hMjFiODc4ODc4MDM3IDEwMDY0NAotLS0gYS9zcmNwa2dzL29t eHBsYXllci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29teHBsYXllci90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29teHBsYXllcicKIHBrZ25hbWU9b214cGxh eWVyCiB2ZXJzaW9uPTIwMTkwMTAyCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBzaG9ydF9kZXNj PSJDb21tYW5kbGluZSBPTVggcGxheWVyIGZvciB0aGUgUmFzcGJlcnJ5IFBpIgogbWFpbnRhaW5l cj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3It bGF0ZXIiCkBAIC0xNSw3ICsxNSw3IEBAIGNoZWNrc3VtPWFmMmQ5NDUwZjg5NDc4NDJlYThjNDAx ZmU5ZjcxZWVjNDQ0MDEzZWJiZGVlMjlmMmFjODI4YzljNDkzYzEzMjkKIGFyY2hzPSJhcm12Nmwq IGFybXY3bCoiCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIGhvc3RtYWtlZGVwZW5kcz0icnVi eS1yb25uIHBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgcnBpLXVzZXJs YW5kLWRldmVsIHBjcmUtZGV2ZWwgYm9vc3QtZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgZmZtcGVnLWRl dmVsIGRidXMtZGV2ZWwiCittYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgcnBpLXVzZXJsYW5k LWRldmVsIHBjcmUtZGV2ZWwgYm9vc3QtZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgZmZtcGVnNC1kZXZl bCBkYnVzLWRldmVsIgogZGVwZW5kcz0iZnJlZWZvbnQtdHRmIgogCiBkb19idWlsZCgpIHsKCkZy b20gY2YyZmE0ZjE1NGQ2MWRkODY3YWRlZDYwMDk3NDhmOTM1NjQ5M2Q4NSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU0LzExNV0gb3BlbnRv b256OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvb3BlbnRvb256L3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vcGVudG9vbnovdGVtcGxhdGUgYi9zcmNwa2dzL29wZW50 b29uei90ZW1wbGF0ZQppbmRleCBlZTlmNzYwM2Y1NWZkLi4zZTgxODM0Y2EwZWRkIDEwMDY0NAot LS0gYS9zcmNwa2dzL29wZW50b29uei90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW50b29uei90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW50b29ueicK IHBrZ25hbWU9b3BlbnRvb256CiB2ZXJzaW9uPTEuNi4wCi1yZXZpc2lvbj0yCityZXZpc2lvbj0z CiBidWlsZF93cmtzcmM9InRvb256L3NvdXJjZXMiCiBidWlsZF9zdHlsZT1jbWFrZQogbWFrZV9j bWQ9bWFrZQoKRnJvbSA0MGVjZGUwYTJkZWU0MzAwYWJkN2I5OTgxOGFlMmMwYTQ3YTdlNjU1IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTUv MTE1XSBwaWFub2JhcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3BpYW5v YmFyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZSBiL3NyY3Br Z3MvcGlhbm9iYXIvdGVtcGxhdGUKaW5kZXggZTNmZWJiODIxYTQ1MS4uMWUzZGMxYmY5MzA4ZSAx MDA2NDQKLS0tIGEvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3BpYW5v YmFyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncGlhbm9i YXInCiBwa2duYW1lPXBpYW5vYmFyCiB2ZXJzaW9uPTIwMjIuMDQuMDEKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogbWFrZV9idWlsZF9hcmdzPSJWPTEi CiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIDcyYWZhZTBjYjM4NzAyYjUyODYx NDg4YWU4ZTc5NTM3OTMzOWFiODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0 MDAKU3ViamVjdDogW1BBVENIIDA1Ni8xMTVdIHBwc3NwcDogcmV2YnVtcCBmb3IgZmZtcGVnNC00 LjQuMwoKLS0tCiBzcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZSB8IDcgKysrLS0tLQogMSBmaWxlIGNo YW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3Bwc3NwcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcHBzc3BwL3RlbXBsYXRlCmluZGV4IDJjMGRl ZDQ5NmViOTguLjEyOTRlZjNhZTY2OWMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcHBzc3BwL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvcHBzc3BwL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAncHBzc3BwJwogcGtnbmFtZT1wcHNzcHAKIHZlcnNpb249MS4xNi42Ci1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBfZ2xzbGFuZ19jb21taXQ9YjM0ZjYxOWUxYzg1ODEwZGNi M2M1NzgxMDdkMmU0OGJhNGVlMmIzNwogX1NQSVJWX0Nyb3NzX2NvbW1pdD00MjEyZWVmNjdlZDBj YTA0OGNiNzI2YTY3NjcxODU1MDRlNzY5NWU1CiBfYXJtaXBzX2NvbW1pdD03YmQxZWM5M2Q0NTg2 OTg1YmExZWY0MjBiNDNiNWU2MjBmNjg2OTVlCkBAIC0xNSw3ICsxNSw3IEBAIGNvbmZpZ3VyZV9h cmdzPSItREhFQURMRVNTPTEgLURVU0VfU1lTVEVNX0ZGTVBFRz0xIC1EVU5JVFRFU1Q9T04KICAt RFVTSU5HX1FUX1VJPSQodm9wdF9pZiBxdCBPTiBPRkYpIC1EVVNFX1NZU1RFTV9aU1REPU9OCiAg LURBUk1JUFNfVVNFX1NURF9GSUxFU1lTVEVNPU9OIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29u ZmlnIHB5dGhvbjMgJCh2b3B0X2lmIHF0IHF0NS1ob3N0LXRvb2xzKSIKLW1ha2VkZXBlbmRzPSJ6 bGliLWRldmVsIGdsZXctZGV2ZWwgZmZtcGVnLWRldmVsIGxpYnppcC1kZXZlbAorbWFrZWRlcGVu ZHM9InpsaWItZGV2ZWwgZ2xldy1kZXZlbCBmZm1wZWc0LWRldmVsIGxpYnppcC1kZXZlbAogIHNu YXBweS1kZXZlbCByYXBpZGpzb24gbGlicG5nLWRldmVsIGxpYnpzdGQtZGV2ZWwKICAkKHZvcHRf aWYgc2RsMiAnU0RMMl90dGYtZGV2ZWwgU0RMMi1kZXZlbCcpICQodm9wdF9pZiB3YXlsYW5kIHdh eWxhbmQtZGV2ZWwpCiAgJCh2b3B0X2lmIHF0ICdxdDUtZGV2ZWwgcXQ1LW11bHRpbWVkaWEtZGV2 ZWwnKSIKQEAgLTcyLDcgKzcyLDcgQEAgcG9zdF9leHRyYWN0KCkgewogICAgICAgICBtdiAke3dy a3NyY30vcmNoZWV2b3MtJHtfcmNoZWV2b3NfY29tbWl0fSAke3dya3NyY30vZXh0L3JjaGVldm9z CiB9CiAKLXBvc3RfcGF0Y2goKXsKK3Bvc3RfcGF0Y2goKSB7CiAJIyBkaXNhYmxlIGdpdCB2ZXJz aW9uaW5nCiAJdnNlZCAtZSAnc3xmaW5kX3BhY2thZ2UoR2l0KXwjICZ8JyAtaSBnaXQtdmVyc2lv bi5jbWFrZQogfQpAQCAtODUsNyArODUsNiBAQCBwb3N0X2NvbmZpZ3VyZSgpIHsKIH0KIAogZG9f aW5zdGFsbCgpIHsKLQl2bGljZW5zZSBMSUNFTlNFLlRYVAogCXZpbnN0YWxsIGljb25zL2ljb24u c3ZnIDY0NCB1c3Ivc2hhcmUvcGl4bWFwcyBwcHNzcHAuc3ZnCiAJdmluc3RhbGwgUXQvUFBTU1BQ LmRlc2t0b3AgNjQ0IHVzci9zaGFyZS9hcHBsaWNhdGlvbnMKIAl2YmluIGJ1aWxkL1BQU1NQUEhl YWRsZXNzIHBwc3NwcC1oZWFkbGVzcwoKRnJvbSA0YmZmMTJiY2UyNjMxMWY5NjZhYmYwZDMzNzQ2 MWEwNTIwNDg1YTZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwNTcvMTE1XSBwcWl2OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3MvcHFpdi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHFpdi90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvcHFpdi90ZW1wbGF0ZQppbmRleCA1NDJmYzI3YTJkMzJhLi45MzA4ZDk0OWI2YTFjIDEw MDY0NAotLS0gYS9zcmNwa2dzL3BxaXYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9wcWl2L3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHFpdicKIHBrZ25hbWU9 cHFpdgogdmVyc2lvbj0yLjEyCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1n bnUtbWFrZWZpbGUKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJn bGliLWRldmVsIGd0ayszLWRldmVsICQodm9wdF9pZiBmZm1wZWcgZmZtcGVnLWRldmVsKQoKRnJv bSBmZGZiZTVkYzI1ZThjM2RlNWM2ZGM2OTRhNzk3OGU3ODY1MWEwYzM1IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTgvMTE1XSBxbW1wOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcW1tcC90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvcW1tcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcW1tcC90ZW1wbGF0ZQppbmRleCA1 Mzc4MWVhM2JjMjhhLi4yZGEwN2YxZTg3ZWFjIDEwMDY0NAotLS0gYS9zcmNwa2dzL3FtbXAvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9xbW1wL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAncW1tcCcKIHBrZ25hbWU9cW1tcAogdmVyc2lvbj0xLjYuMQotcmV2aXNp b249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFVT RV9IQUw6Qk9PTD1GQUxTRSAtRFFNTVBfREVGQVVMVF9VSTpTVFJJTkc9c2ltcGxlIgogaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZSIKCkZyb20gMGUx NWI2NzBjODE4YTc4OTc5NTE2OGUyMzQ5MGQ3YTcxYTkxZmVjNiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU5LzExNV0gcXQ1LXdlYmVuZ2lu ZTogdXBkYXRlIHRvIDUuMTUuMTUKCi0tLQogLi4uL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3Bw MTQucGF0Y2ggICAgICAgIHwgIDExICsrCiBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9m Zm1wZWc1LnBhdGNoICAgfCAxNzkgKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL3F0NS13ZWJl bmdpbmUvdGVtcGxhdGUgICAgICAgICAgICAgICAgfCAgMTAgKy0KIDMgZmlsZXMgY2hhbmdlZCwg MTk1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvY2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5w YXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Zm bXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9j aHJvbWl1bS1tZWRpYS1maWx0ZXJzLWNwcDE0LnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5l L3BhdGNoZXMvY2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4wNGFkYzU0MGYyY2JjCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvY2hyb21pdW0tbWVkaWEtZmlsdGVy cy1jcHAxNC5wYXRjaApAQCAtMCwwICsxLDExIEBACistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21p dW0vbWVkaWEvZmlsdGVycy9CVUlMRC5nbgkyMDIzLTAyLTI3IDEzOjMyOjU5LjAwMDAwMDAwMCAt MDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvQlVJTEQuZ24J MjAyMy0wNC0wMiAxNzoyMTozOS4yMDQwNjYzODQgLTA0MDAKK0BAIC05Niw2ICs5Niw4IEBACisg ICAgICIvL3VpL2dmeC9nZW9tZXRyeTpnZW9tZXRyeSIsCisgICBdCisgCisrICBjZmxhZ3NfY2Mg PSBbICItc3RkPWMrKzE0IiBdCisrCisgICBsaWJzID0gW10KKyAKKyAgIGlmIChwcm9wcmlldGFy eV9jb2RlY3MpIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Zm bXBlZzUucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9mZm1wZWc1LnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmFjNTVlMTYzNDQyM2EK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9mZm1wZWc1 LnBhdGNoCkBAIC0wLDAgKzEsMTc5IEBACistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVk aWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwkyMDIzLTA0LTAyIDE2OjUwOjU3LjczMjU0NzQ0 NiAtMDQwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVn X2RlbXV4ZXIuY2MJMjAyMy0wNC0wMiAxNjo1MDowOS40ODY0Nzg5OTUgLTA0MDAKK0BAIC01Nyw2 ICs1Nyw4IEBACisgCisgbmFtZXNwYWNlIHsKKyAKKytjb25zdGV4cHIgaW50NjRfdCBrUmVsYXRp dmVUc0Jhc2UgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PigweDdmZmVmZmZmZmZmZmZmZmYpOworKwor IHZvaWQgU2V0QVZTdHJlYW1EaXNjYXJkKEFWU3RyZWFtKiBzdHJlYW0sIEFWRGlzY2FyZCBkaXNj YXJkKSB7CisgICBEQ0hFQ0soc3RyZWFtKTsKKyAgIHN0cmVhbS0+ZGlzY2FyZCA9IGRpc2NhcmQ7 CitAQCAtOTAsMjQgKzkyLDEyIEBACisgCisgc3RhdGljIGJhc2U6OlRpbWVEZWx0YSBFeHRyYWN0 U3RhcnRUaW1lKEFWU3RyZWFtKiBzdHJlYW0pIHsKKyAgIC8vIFRoZSBkZWZhdWx0IHN0YXJ0IHRp bWUgaXMgemVyby4KKy0gIGJhc2U6OlRpbWVEZWx0YSBzdGFydF90aW1lOworKyAgYmFzZTo6VGlt ZURlbHRhIHN0YXJ0X3RpbWUgPSBrTm9UaW1lc3RhbXA7CisgCisgICAvLyBGaXJzdCB0cnkgdG8g dXNlICB0aGUgfHN0YXJ0X3RpbWV8IHZhbHVlIGFzIGlzLgorICAgaWYgKHN0cmVhbS0+c3RhcnRf dGltZSAhPSBrTm9GRm1wZWdUaW1lc3RhbXApCisgICAgIHN0YXJ0X3RpbWUgPSBDb252ZXJ0RnJv bVRpbWVCYXNlKHN0cmVhbS0+dGltZV9iYXNlLCBzdHJlYW0tPnN0YXJ0X3RpbWUpOworIAorLSAg Ly8gTmV4dCB0cnkgdG8gdXNlIHRoZSBmaXJzdCBEVFMgdmFsdWUsIGZvciBjb2RlY3Mgd2hlcmUg d2Uga25vdyBQVFMgPT0gRFRTCistICAvLyAoZXhjbHVkZXMgYWxsIEgyNnggY29kZWNzKS4gVGhl IHN0YXJ0IHRpbWUgbXVzdCBiZSByZXR1cm5lZCBpbiBQVFMuCistICBpZiAoc3RyZWFtLT5maXJz dF9kdHMgIT0ga05vRkZtcGVnVGltZXN0YW1wICYmCistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+ Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfSEVWQyAmJgorLSAgICAgIHN0cmVhbS0+Y29kZWNwYXIt PmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0gyNjQgJiYKKy0gICAgICBzdHJlYW0tPmNvZGVjcGFy LT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9NUEVHNCkgeworLSAgICBjb25zdCBiYXNlOjpUaW1l RGVsdGEgZmlyc3RfcHRzID0KKy0gICAgICAgIENvbnZlcnRGcm9tVGltZUJhc2Uoc3RyZWFtLT50 aW1lX2Jhc2UsIHN0cmVhbS0+Zmlyc3RfZHRzKTsKKy0gICAgaWYgKGZpcnN0X3B0cyA8IHN0YXJ0 X3RpbWUpCistICAgICAgc3RhcnRfdGltZSA9IGZpcnN0X3B0czsKKy0gIH0KKy0KKyAgIHJldHVy biBzdGFydF90aW1lOworIH0KKyAKK0BAIC00MDgsMTEgKzM5OCwxMSBAQAorICAgc2NvcGVkX3Jl ZnB0cjxEZWNvZGVyQnVmZmVyPiBidWZmZXI7CisgCisgICBpZiAodHlwZSgpID09IERlbXV4ZXJT dHJlYW06OlRFWFQpIHsKKy0gICAgaW50IGlkX3NpemUgPSAwOworKyAgICBzaXplX3QgaWRfc2l6 ZSA9IDA7CisgICAgIHVpbnQ4X3QqIGlkX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgK KyAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfV0VCVlRUX0lERU5USUZJRVIsICZp ZF9zaXplKTsKKyAKKy0gICAgaW50IHNldHRpbmdzX3NpemUgPSAwOworKyAgICBzaXplX3Qgc2V0 dGluZ3Nfc2l6ZSA9IDA7CisgICAgIHVpbnQ4X3QqIHNldHRpbmdzX2RhdGEgPSBhdl9wYWNrZXRf Z2V0X3NpZGVfZGF0YSgKKyAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfV0VCVlRU X1NFVFRJTkdTLCAmc2V0dGluZ3Nfc2l6ZSk7CisgCitAQCAtNDI0LDcgKzQxNCw3IEBACisgICAg IGJ1ZmZlciA9IERlY29kZXJCdWZmZXI6OkNvcHlGcm9tKHBhY2tldC0+ZGF0YSwgcGFja2V0LT5z aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlX2RhdGEuZGF0 YSgpLCBzaWRlX2RhdGEuc2l6ZSgpKTsKKyAgIH0gZWxzZSB7CistICAgIGludCBzaWRlX2RhdGFf c2l6ZSA9IDA7CisrICAgIHNpemVfdCBzaWRlX2RhdGFfc2l6ZSA9IDA7CisgICAgIHVpbnQ4X3Qq IHNpZGVfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAgICAgcGFja2V0Lmdl dCgpLCBBVl9QS1RfREFUQV9NQVRST1NLQV9CTE9DS0FERElUSU9OQUwsICZzaWRlX2RhdGFfc2l6 ZSk7CisgCitAQCAtNDg1LDcgKzQ3NSw3IEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGFja2V0LT5zaXplIC0gZGF0YV9vZmZzZXQpOworICAgICB9CisgCistICAg IGludCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7CisrICAgIHNpemVfdCBza2lwX3NhbXBsZXNfc2l6 ZSA9IDA7CisgICAgIGNvbnN0IHVpbnQzMl90KiBza2lwX3NhbXBsZXNfcHRyID0KKyAgICAgICAg IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0 YSgKKyAgICAgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1NLSVBfU0FNUExFUywg JnNraXBfc2FtcGxlc19zaXplKSk7CitAQCAtMTU4Nyw2ICsxNTc3LDggQEAKKyAgIGZvciAoY29u c3QgYXV0byYgc3RyZWFtIDogc3RyZWFtc18pIHsKKyAgICAgaWYgKCFzdHJlYW0gfHwgc3RyZWFt LT5Jc0VuYWJsZWQoKSAhPSBlbmFibGVkKQorICAgICAgIGNvbnRpbnVlOworKyAgICBpZiAoc3Ry ZWFtLT5hdl9zdHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxVRSkKKysgICAgICBj b250aW51ZTsKKyAgICAgaWYgKCFsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0gfHwKKyAgICAgICAg IHN0cmVhbS0+c3RhcnRfdGltZSgpIDwgbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFtLT5zdGFydF90 aW1lKCkpIHsKKyAgICAgICBsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0gPSBzdHJlYW0uZ2V0KCk7 CitAQCAtMTYwNCw2ICsxNTk2LDggQEAKKyAgICAgaWYgKHN0cmVhbSAmJiBzdHJlYW0tPnR5cGUo KSA9PSBEZW11eGVyU3RyZWFtOjpWSURFTyAmJgorICAgICAgICAgc3RyZWFtLT5Jc0VuYWJsZWQo KSkgeworICAgICAgIHZpZGVvX3N0cmVhbSA9IHN0cmVhbS5nZXQoKTsKKysgICAgICBpZiAoc3Ry ZWFtLT5hdl9zdHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxVRSkKKysgICAgICAg IGNvbnRpbnVlOworICAgICAgIGlmICh2aWRlb19zdHJlYW0tPnN0YXJ0X3RpbWUoKSA8PSBzZWVr X3RpbWUpIHsKKyAgICAgICAgIHJldHVybiB2aWRlb19zdHJlYW07CisgICAgICAgfQorZGlmZiAt TmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRp YS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5oIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmgKKy0tLSBhL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5oCTIwMjItMDUtMjMgMDY6Mzg6 NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZt cGVnL2ZmbXBlZ19jb21tb24uaAkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxNzE5Mjc4OCAtMDUwMAor QEAgLTI5LDYgKzI5LDcgQEAgZXh0ZXJuICJDIiB7CisgI2luY2x1ZGUgPGxpYmF2Zm9ybWF0L2F2 Zm9ybWF0Lmg+CisgI2luY2x1ZGUgPGxpYmF2Zm9ybWF0L2F2aW8uaD4KKyAjaW5jbHVkZSA8bGli YXZ1dGlsL2F2dXRpbC5oPgorKyNpbmNsdWRlIDxsaWJhdnV0aWwvY2hhbm5lbF9sYXlvdXQuaD4K KyAjaW5jbHVkZSA8bGliYXZ1dGlsL2ltZ3V0aWxzLmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9s b2cuaD4KKyAjaW5jbHVkZSA8bGliYXZ1dGlsL21hc3RlcmluZ19kaXNwbGF5X21ldGFkYXRhLmg+ CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL21lZGlhL2ZpbHRlcnMvYXVkaW9fZmlsZV9yZWFkZXIuY2MgcXR3ZWJlbmdpbmUtNS4xNS4x MC9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9hdWRpb19maWxlX3JlYWRlci5j YworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvYXVkaW9fZmlsZV9y ZWFkZXIuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNjCTIwMjIt MDctMTEgMjI6MTI6NDcuOTE3MTkyNzg4IC0wNTAwCitAQCAtODUsNyArODUsNyBAQCBib29sIEF1 ZGlvRmlsZVJlYWRlcjo6T3BlbkRlbXV4ZXIoKSB7CisgfQorIAorIGJvb2wgQXVkaW9GaWxlUmVh ZGVyOjpPcGVuRGVjb2RlcigpIHsKKy0gIEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2Rl Y29kZXIoY29kZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKysgIGNvbnN0IEFWQ29kZWMqIGNvZGVj ID0gYXZjb2RlY19maW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKyAgIGlm IChjb2RlYykgeworICAgICAvLyBNUDMgZGVjb2RlcyB0byBTMTZQIHdoaWNoIHdlIGRvbid0IHN1 cHBvcnQsIHRlbGwgaXQgdG8gdXNlIFMxNiBpbnN0ZWFkLgorICAgICBpZiAoY29kZWNfY29udGV4 dF8tPnNhbXBsZV9mbXQgPT0gQVZfU0FNUExFX0ZNVF9TMTZQKQorZGlmZiAtTmF1cnAgcXR3ZWJl bmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2Zm bXBlZ19hdWRpb19kZWNvZGVyLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2No cm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2F1ZGlvX2RlY29kZXIuY2MKKy0tLSBhL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRpb19kZWNvZGVyLmNjCTIw MjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hy b21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYwkyMDIyLTA3LTExIDIy OjEyOjQ3LjkxNzE5Mjc4OCAtMDUwMAorQEAgLTMyOSw3ICszMjksNyBAQCBib29sIEZGbXBlZ0F1 ZGlvRGVjb2Rlcjo6Q29uZmlndXJlRGVjb2RlCisgICAgIH0KKyAgIH0KKyAKKy0gIEFWQ29kZWMq IGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNvZGVjX2lkKTsK KysgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY29kZWNfY29u dGV4dF8tPmNvZGVjX2lkKTsKKyAgIGlmICghY29kZWMgfHwKKyAgICAgICBhdmNvZGVjX29wZW4y KGNvZGVjX2NvbnRleHRfLmdldCgpLCBjb2RlYywgJmNvZGVjX29wdGlvbnMpIDwgMCkgeworICAg ICBETE9HKEVSUk9SKSA8PCAiQ291bGQgbm90IGluaXRpYWxpemUgYXVkaW8gZGVjb2RlcjogIgor ZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19nbHVlLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2dsdWUuY2MKKy0tLSBhL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19nbHVlLmNjCTIwMjItMDUtMjMg MDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVk aWEvZmlsdGVycy9mZm1wZWdfZ2x1ZS5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5Mjc3OSAt MDUwMAorQEAgLTU5LDcgKzU5LDYgQEAgc3RhdGljIGludDY0X3QgQVZJT1NlZWtPcGVyYXRpb24o dm9pZCogbworIH0KKyAKKyB2b2lkIEZGbXBlZ0dsdWU6OkluaXRpYWxpemVGRm1wZWcoKSB7Cist ICBhdl9yZWdpc3Rlcl9hbGwoKTsKKyB9CisgCisgc3RhdGljIHZvaWQgTG9nQ29udGFpbmVyKGJv b2wgaXNfbG9jYWxfZmlsZSwKK0BAIC05NSw5ICs5NCw2IEBAIEZGbXBlZ0dsdWU6OkZGbXBlZ0ds dWUoRkZtcGVnVVJMUHJvdG9jb2wKKyAgIC8vIEVuYWJsZSBmYXN0LCBidXQgaW5hY2N1cmF0ZSBz ZWVrcyBmb3IgTVAzLgorICAgZm9ybWF0X2NvbnRleHRfLT5mbGFncyB8PSBBVkZNVF9GTEFHX0ZB U1RfU0VFSzsKKyAKKy0gIC8vIEVuc3VyZXMgd2UgY2FuIHJlYWQgb3V0IHZhcmlvdXMgbWV0YWRh dGEgYml0cyBsaWtlIHZwOCBhbHBoYS4KKy0gIGZvcm1hdF9jb250ZXh0Xy0+ZmxhZ3MgfD0gQVZG TVRfRkxBR19LRUVQX1NJREVfREFUQTsKKy0KKyAgIC8vIEVuc3VyZXMgZm9ybWF0IHBhcnNpbmcg ZXJyb3JzIHdpbGwgYmFpbCBvdXQuIEZyb20gYW4gYXVkaXQgb24gMTEvMjAxNywgYWxsCisgICAv LyBpbnN0YW5jZXMgd2VyZSByZWFsIGZhaWx1cmVzLiBTb2x2ZXMgYnVncyBsaWtlIGh0dHA6Ly9j cmJ1Zy5jb20vNzEwNzkxLgorICAgZm9ybWF0X2NvbnRleHRfLT5lcnJvcl9yZWNvZ25pdGlvbiB8 PSBBVl9FRl9FWFBMT0RFOworZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ192aWRlb19kZWNvZGVyLmNj IHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMv ZmZtcGVnX3ZpZGVvX2RlY29kZXIuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRp YS9maWx0ZXJzL2ZmbXBlZ192aWRlb19kZWNvZGVyLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAw MDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9m Zm1wZWdfdmlkZW9fZGVjb2Rlci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5Mjc3OSAtMDUw MAorQEAgLTM5MSw3ICszOTEsNyBAQCBib29sIEZGbXBlZ1ZpZGVvRGVjb2Rlcjo6Q29uZmlndXJl RGVjb2RlCisgICBpZiAoZGVjb2RlX25hbHVzXykKKyAgICAgY29kZWNfY29udGV4dF8tPmZsYWdz MiB8PSBBVl9DT0RFQ19GTEFHMl9DSFVOS1M7CisgCistICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29k ZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25zdCBBVkNv ZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19p ZCk7CisgICBpZiAoIWNvZGVjIHx8IGF2Y29kZWNfb3BlbjIoY29kZWNfY29udGV4dF8uZ2V0KCks IGNvZGVjLCBOVUxMKSA8IDApIHsKKyAgICAgUmVsZWFzZUZGbXBlZ1Jlc291cmNlcygpOworICAg ICByZXR1cm4gZmFsc2U7CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9jaGVja2VyLmNjIHF0 d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvbWVk aWFfZmlsZV9jaGVja2VyLmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmls dGVycy9tZWRpYV9maWxlX2NoZWNrZXIuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAg LTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL21lZGlhX2Zp bGVfY2hlY2tlci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5Mjc3OSAtMDUwMAorQEAgLTY4 LDcgKzY4LDcgQEAgYm9vbCBNZWRpYUZpbGVDaGVja2VyOjpTdGFydChiYXNlOjpUaW1lRAorICAg ICAgIGF1dG8gY29udGV4dCA9IEFWU3RyZWFtVG9BVkNvZGVjQ29udGV4dChmb3JtYXRfY29udGV4 dC0+c3RyZWFtc1tpXSk7CisgICAgICAgaWYgKCFjb250ZXh0KQorICAgICAgICAgY29udGludWU7 CistICAgICAgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihjcC0+Y29kZWNf aWQpOworKyAgICAgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIo Y3AtPmNvZGVjX2lkKTsKKyAgICAgICBpZiAoY29kZWMgJiYgYXZjb2RlY19vcGVuMihjb250ZXh0 LmdldCgpLCBjb2RlYywgbnVsbHB0cikgPj0gMCkgeworICAgICAgICAgYXV0byBsb29wID0gc3Rk OjptYWtlX3VuaXF1ZTxGRm1wZWdEZWNvZGluZ0xvb3A+KGNvbnRleHQuZ2V0KCkpOworICAgICAg ICAgc3RyZWFtX2NvbnRleHRzW2ldID0ge3N0ZDo6bW92ZShjb250ZXh0KSwgc3RkOjptb3ZlKGxv b3ApfTsKK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9o MjY0L2gyNjRfZGVjb2Rlcl9pbXBsLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv aDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2Rl Y29kZXJfaW1wbC5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv ZGluZy9jb2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3 LjkxODE5Mjc3OSAtMDUwMAorQEAgLTIwMyw3ICsyMDMsNyBAQCBpbnQzMl90IEgyNjREZWNvZGVy SW1wbDo6SW5pdERlY29kZShjb25zCisgICAvLyBhIHBvaW50ZXIgfHRoaXN8LgorICAgYXZfY29u dGV4dF8tPm9wYXF1ZSA9IHRoaXM7CisgCistICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmlu ZF9kZWNvZGVyKGF2X2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25zdCBBVkNvZGVjKiBjb2Rl YyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGF2X2NvbnRleHRfLT5jb2RlY19pZCk7CisgICBpZiAo IWNvZGVjKSB7CisgICAgIC8vIFRoaXMgaXMgYW4gaW5kaWNhdGlvbiB0aGF0IEZGbXBlZyBoYXMg bm90IGJlZW4gaW5pdGlhbGl6ZWQgb3IgaXQgaGFzIG5vdAorICAgICAvLyBiZWVuIGNvbXBpbGVk L2luaXRpYWxpemVkIHdpdGggdGhlIGNvcnJlY3Qgc2V0IG9mIGNvZGVjcy4KZGlmZiAtLWdpdCBh L3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90 ZW1wbGF0ZQppbmRleCA4NGRlNWIxMmVjZGRhLi5lMDA4MDdjZWQ5ZjJiIDEwMDY0NAotLS0gYS9z cmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5l L3RlbXBsYXRlCkBAIC0xLDkgKzEsOSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1LXdlYmVu Z2luZScKIHBrZ25hbWU9cXQ1LXdlYmVuZ2luZQotdmVyc2lvbj01LjE1LjExCi1yZXZpc2lvbj01 Cit2ZXJzaW9uPTUuMTUuMTUKK3JldmlzaW9uPTEKIF92ZXJzaW9uPSIke3ZlcnNpb259LWx0cyIK LV9jaHJvbWl1bV9jb21taXQ9YmUzNDllYWY2MmU3Nzk1NTc5MWQ3YmYyOWY4OTNmMWU4YTM3ZGFm NAorX2Nocm9taXVtX2NvbW1pdD1lNDhkZjc4MDNjN2M5OGIwYjI0NzFjOTQwNTdkMzJlNDRhMzAx YWQ1CiBhcmNocz0ieDg2XzY0KiBpNjg2KiBhcm12WzY3XSogcHBjNjQqIGFhcmNoNjQqIgogY3Jl YXRlX3dya3NyYz15ZXMKIGJ1aWxkX3N0eWxlPXFtYWtlCkBAIC0zMiw4ICszMiw4IEBAIGxpY2Vu c2U9IkdQTC0zLjAtb3ItbGF0ZXIsIExHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBz Oi8vcXQuaW8vIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vcXQvcXR3ZWJlbmdpbmUv YXJjaGl2ZS92JHtfdmVyc2lvbn0udGFyLmd6CiAgaHR0cHM6Ly9naXRodWIuY29tL3F0L3F0d2Vi ZW5naW5lLWNocm9taXVtL2FyY2hpdmUvJHtfY2hyb21pdW1fY29tbWl0fS50YXIuZ3oiCi1jaGVj a3N1bT0iYWE3NDY2MzU2YzQ1MGM1ZjU4NzBmOTc5YjkzY2Q3ZTdlNjJkYTExNjVjMzI4ZmZjYWIx YTk5MjhkYjE4YWQ2NwotIDZmNDdlZDhhYjhjYzA2MjQxMWY2ZjIwNmRhNjM1M2JjODI2M2Q2ZWQ2 ZDYyOTBjNjg5YTA1YzAxZDkxZjY0NmIiCitjaGVja3N1bT0iMWMyYTNiNmFlMzljOTM3MDY4YjM4 ZTNiZDFkNWE4ZjFlZDYxZWE2ODA0OTZmYzIyNWU2ZmQwZGUxMWUyYWY3YQorIGE5MTY4NjU2MmIx ZDRlOGIyMjBlMGJiY2JhYjVmZWI2NDYzMGUyZGU5NzRiMzVhYzAzNGJmMzg4YWY3NzFhNmMiCiAK IG5vX2dlbmVyaWNfcGtnY29uZmlnX2xpbms9eWVzCiBidWlsZF9vcHRpb25zPSJzbmRpbyBwaXBl d2lyZSIKCkZyb20gYjEyYTdmZjFlMDk0M2U2MzA1ZDYxYWJkOGRkODUwMDFlNDQyYTM3MyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYwLzEx NV0gcXQ1OiB1cGRhdGUgdG8gNS4xNS44CgotLS0KIC4uLmVyeXdoZXJlLW9wZW5zb3VyY2Utc3Jj LTUuMTUuOC1rZjUtMS5wYXRjaCB8IDEyOTEzICsrKysrKysrKysrKysrKysKIHNyY3BrZ3MvcXQ1 L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEzICstCiAyIGZpbGVzIGNo YW5nZWQsIDEyOTE5IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy9xdC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUu MTUuOC1rZjUtMS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvcXQtZXZl cnl3aGVyZS1vcGVuc291cmNlLXNyYy01LjE1Ljgta2Y1LTEucGF0Y2ggYi9zcmNwa2dzL3F0NS9w YXRjaGVzL3F0LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjk2NmM5OGJjZDNiYjEKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzL3F0LWV2ZXJ5d2hlcmUtb3BlbnNv dXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoCkBAIC0wLDAgKzEsMTI5MTMgQEAKK1N1Ym1pdHRl ZCBCeTogICAgICAgICAgICBQaWVycmUgTGFiYXN0aWUgPHBpZXJyZV9kb3RfbGFiYXN0aWVfYXRf bmV1Zl9kb3RfZnI+CitEYXRlOiAgICAgICAgICAgICAgICAgICAgMjAyMy0wMS0wNQorSW5pdGlh bCBQYWNrYWdlIFZlcnNpb246IDUuMTUuOAorVXBzdHJlYW0gU3RhdHVzOiAgICAgICAgIEFwcGxp ZWQgKGFjY29yZGluZyB0byBLREUpCitPcmlnaW46ICAgICAgICAgICAgICAgICAgS0RFIHBhdGNo IHNldAorRGVzY3JpcHRpb246ICAgICAgICAgICAgIFBhdGNoIHNldCBtYWludGFpbmVkIGJ5IHRo ZSBLREUgZm9sa3MKK3NlZSBodHRwczovL2RvdC5rZGUub3JnLzIwMjEvMDQvMDYvYW5ub3VuY2lu Zy1rZGVzLXF0LTUtcGF0Y2gtY29sbGVjdGlvbgorUGF0Y2ggZ2VuZXJhdGVkIHVzaW5nIHRoZSBw cm9jZWR1cmUgaW4KK2h0dHBzOi8vd2lraS5saW51eGZyb21zY3JhdGNoLm9yZy9ibGZzL3RpY2tl dC8xNzQ3NiNjb21tZW50OjMKKworU3VibW9kdWxlIHF0YmFzZSA0ZWU0ZmMxOC4uOWNmNTg2ZDY6 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvY29tbW9uL2FuZHJvaWQvcXBsYXRmb3JtZGVm cy5oIGIvcXRiYXNlL21rc3BlY3MvY29tbW9uL2FuZHJvaWQvcXBsYXRmb3JtZGVmcy5oCitpbmRl eCBmNzViYzQwOTNiLi4yYmQ1OTQxMGQ0IDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvY29t bW9uL2FuZHJvaWQvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVjcy9jb21tb24v YW5kcm9pZC9xcGxhdGZvcm1kZWZzLmgKK0BAIC0xNDQsMTEgKzE0NCw3IEBACisgI2RlZmluZSBR VF9TSUdOQUxfQVJHUyAgICAgICAgICBpbnQKKyAjZGVmaW5lIFFUX1NJR05BTF9JR05PUkUgICAg ICAgIFNJR19JR04KKyAKKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18gPj0g MikKKyAjZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbHNlCist I2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYKKyAKKyAjaWYgZGVm aW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDApCisgI2RlZmluZSBR VF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21r c3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5tayBiL3F0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL21hYy9z ZGsubWsKK2luZGV4IGYzMGI1ODMwYjQuLmEzMmNlYWNiNmMgMTAwNjQ0CistLS0gYS9xdGJhc2Uv bWtzcGVjcy9mZWF0dXJlcy9tYWMvc2RrLm1rCisrKysgYi9xdGJhc2UvbWtzcGVjcy9mZWF0dXJl cy9tYWMvc2RrLm1rCitAQCAtMSw2ICsxLDYgQEAKKyAKKyBpZmVxICgkKFFUX01BQ19TREtfTk9f VkVSU0lPTl9DSEVDSyksKQorLSAgICBDSEVDS19TREtfQ09NTUFORCA9IC91c3IvYmluL3hjcnVu IC0tc2RrICQoRVhQT1JUX1FNQUtFX01BQ19TREspIC1zaG93LXNkay12ZXJzaW9uIDI+JjEKKysg ICAgQ0hFQ0tfU0RLX0NPTU1BTkQgPSAvdXNyL2Jpbi94Y3J1biAtLXNkayAkKEVYUE9SVF9RTUFL RV9NQUNfU0RLKSAtc2hvdy1zZGstdmVyc2lvbiAyPi9kZXYvbnVsbAorICAgICBDVVJSRU5UX01B Q19TREtfVkVSU0lPTiA6PSAkKHNoZWxsIERFVkVMT1BFUl9ESVI9JChFWFBPUlRfUU1BS0VfWENP REVfREVWRUxPUEVSX1BBVEgpICQoQ0hFQ0tfU0RLX0NPTU1BTkQpKQorICAgICBpZm5lcSAoJChD VVJSRU5UX01BQ19TREtfVkVSU0lPTiksJChFWFBPUlRfUU1BS0VfTUFDX1NES19WRVJTSU9OKSkK KyAgICAgICAgICMgV2UgZG9uJ3Qgd2FudCB0byBjb21wbGFpbiBhYm91dCBvdXQgb2YgZGF0ZSBT REsgdW5sZXNzIHRoZSB0YXJnZXQgbmVlZHMgdG8gYmUgcmVtYWRlLgorZGlmZiAtLWdpdCBhL3F0 YmFzZS9ta3NwZWNzL2xpbnV4LWNsYW5nL3FwbGF0Zm9ybWRlZnMuaCBiL3F0YmFzZS9ta3NwZWNz L2xpbnV4LWNsYW5nL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggYTgxOGQ5NzNmMC4uYzFhYjcyZmJj NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWNsYW5nL3FwbGF0Zm9ybWRlZnMu aAorKysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgtY2xhbmcvcXBsYXRmb3JtZGVmcy5oCitAQCAt NzksMTQgKzc5LDYgQEAKKyAjZGVmaW5lIFFUX1VTRV9YT1BFTl9MRlNfRVhURU5TSU9OUworICNp bmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5oIgorIAorLSN1bmRlZiBRVF9T T0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18gPj0gMikK Ky0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbHNlCistI2Rl ZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYKKy0KKyAjaWYgZGVmaW5l ZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDApCisgI2RlZmluZSBRVF9T TlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCisgI2RlZmluZSBRVF9WU05QUklOVEYgICAg ICAgICAgICA6OnZzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWcr Ky9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9saW51eC1nKysvcXBsYXRmb3JtZGVm cy5oCitpbmRleCAxMzUyM2YwNzAyLi40ZDI3NTBkOWVjIDEwMDY0NAorLS0tIGEvcXRiYXNlL21r c3BlY3MvbGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvbGlu dXgtZysrL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTc5LDE0ICs3OSw2IEBACisgI2RlZmluZSBRVF9V U0VfWE9QRU5fTEZTX0VYVEVOU0lPTlMKKyAjaW5jbHVkZSAiLi4vY29tbW9uL3Bvc2l4L3FwbGF0 Zm9ybWRlZnMuaCIKKyAKKy0jdW5kZWYgUVRfU09DS0xFTl9UCistCistI2lmIGRlZmluZWQoX19H TElCQ19fKSAmJiAoX19HTElCQ19fIDwgMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAg ICAgIGludAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBzb2NrbGVu X3QKKy0jZW5kaWYKKy0KKyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NP VVJDRSA+PSA1MDApCisgI2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRm CisgI2RlZmluZSBRVF9WU05QUklOVEYgICAgICAgICAgICA6OnZzbnByaW50ZgorZGlmZiAtLWdp dCBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21r c3BlY3MvbGludXgtbGx2bS9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IGRjNzUwYWIxZWYuLmQzY2Mz OWI0N2YgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9saW51eC1sbHZtL3FwbGF0Zm9ybWRl ZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgtbGx2bS9xcGxhdGZvcm1kZWZzLmgKK0BA IC04MCwxNCArODAsNiBAQAorICNkZWZpbmUgUVRfVVNFX1hPUEVOX0xGU19FWFRFTlNJT05TCisg I2luY2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCistI3VuZGVmIFFU X1NPQ0tMRU5fVAorLQorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+PSAy KQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UKKy0j ZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAorLSNlbmRpZgorLQorICNpZiBkZWZp bmVkKF9YT1BFTl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5lIFFU X1NOUFJJTlRGICAgICAgICAgICAgIDo6c25wcmludGYKKyAjZGVmaW5lIFFUX1ZTTlBSSU5URiAg ICAgICAgICAgIDo6dnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvbGludXgt bHNiLWcrKy9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9saW51eC1sc2ItZysrL3Fw bGF0Zm9ybWRlZnMuaAoraW5kZXggNGM0ZTUzZGEyYS4uODNiYWZmYjNlMyAxMDA2NDQKKy0tLSBh L3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxzYi1nKysvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJh c2UvbWtzcGVjcy9saW51eC1sc2ItZysrL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTg1LDE2ICs4NSw5 IEBACisgI2luY2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCisgI3Vu ZGVmIFFUX09QRU5fTEFSR0VGSUxFCistI3VuZGVmIFFUX1NPQ0tMRU5fVAorIAorICNkZWZpbmUg UVRfT1BFTl9MQVJHRUZJTEUgICAgICAgMAorIAorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYg KF9fR0xJQkNfXyA+PSAyKQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgc29ja2xl bl90CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAorLSNlbmRp ZgorLQorICNpZm5kZWYgU0lPQ0dJRkJSREFERFIKKyAjICBkZWZpbmUgU0lPQ0dJRkJSREFERFIg MHg4OTE5CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvbHlueG9zLWcrKy9x cGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9seW54b3MtZysrL3FwbGF0Zm9ybWRlZnMu aAoraW5kZXggNDMzOWVhMmIyMy4uNjAwN2FmMDA1NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3Nw ZWNzL2x5bnhvcy1nKysvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVjcy9seW54 b3MtZysrL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTcyLDE0ICs3Miw2IEBACisgCisgI2luY2x1ZGUg Ii4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCistI3VuZGVmIFFUX1NPQ0tMRU5f VAorLQorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+PSAyKQorLSNkZWZp bmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5lIFFU X1NPQ0tMRU5fVCAgICAgICAgICAgIGludAorLSNlbmRpZgorLQorICNpZiBkZWZpbmVkKF9YT1BF Tl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5lIFFUX1NOUFJJTlRG ICAgICAgICAgICAgIDo6c25wcmludGYKKyAjZGVmaW5lIFFUX1ZTTlBSSU5URiAgICAgICAgICAg IDo6dnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy8zcmRwYXJ0eS9hbmdsZS9zcmMv bGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcCBiL3F0YmFzZS9zcmMvM3JkcGFydHkvYW5nbGUv c3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5jcHAKK2luZGV4IGMzYzE4NDI1OGYuLjMyYWYz ZjhmMjkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjLzNyZHBhcnR5L2FuZ2xlL3NyYy9saWJBTkdM RS9IYW5kbGVBbGxvY2F0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjLzNyZHBhcnR5L2FuZ2xlL3Ny Yy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwCitAQCAtMTAsNiArMTAsNyBAQAorICNpbmNs dWRlICJsaWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuaCIKKyAKKyAjaW5jbHVkZSA8YWxnb3JpdGht PgorKyNpbmNsdWRlIDxsaW1pdHM+CisgCisgI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorIAor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvM3JkcGFydHkvZm9ya2ZkL2ZvcmtmZF9saW51eC5jIGIv cXRiYXNlL3NyYy8zcmRwYXJ0eS9mb3JrZmQvZm9ya2ZkX2xpbnV4LmMKK2luZGV4IGZmZTBlOWE1 ZTIuLmIxZjU0MDhkMTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjLzNyZHBhcnR5L2ZvcmtmZC9m b3JrZmRfbGludXguYworKysrIGIvcXRiYXNlL3NyYy8zcmRwYXJ0eS9mb3JrZmQvZm9ya2ZkX2xp bnV4LmMKK0BAIC04Miw3ICs4Miw4IEBAIHN0YXRpYyBpbnQgc3lzX2Nsb25lKHVuc2lnbmVkIGxv bmcgY2xvbmVmbGFncywgaW50ICpwdGlkKQorICAgICByZXR1cm4gc3lzY2FsbChfX05SX2Nsb25l LCBjbG9uZWZsYWdzLCBjaGlsZF9zdGFjaywgc3RhY2tfc2l6ZSwgcHRpZCwgbmV3dGxzLCBjdGlk KTsKKyAjZWxpZiBkZWZpbmVkKF9fYXJjX18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5l ZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorICAgICBkZWZpbmVkKF9f bmRzMzJfXykgfHwgZGVmaW5lZChfX2hwcGFfXykgfHwgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwg ZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmlu ZWQoX194dGVuc2FfXykgfHwgZGVmaW5lZChfX2FscGhhX18pIHx8IGRlZmluZWQoX19yaXNjdikK KysgICAgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9feHRlbnNhX18pIHx8IGRlZmlu ZWQoX19hbHBoYV9fKSB8fCBkZWZpbmVkKF9fcmlzY3YpIHx8IFwKKysgICAgZGVmaW5lZChfX2xv b25nYXJjaF9fKQorICAgICAvKiBjdGlkIGFuZCBuZXd0bHMgYXJlIGludmVydGVkIG9uIENPTkZJ R19DTE9ORV9CQUNLV0FSRFMgYXJjaGl0ZWN0dXJlcywKKyAgICAgICogYnV0IHNpbmNlIGJvdGgg dmFsdWVzIGFyZSAwLCB0aGVyZSdzIG5vIGhhcm0uICovCisgICAgIHJldHVybiBzeXNjYWxsKF9f TlJfY2xvbmUsIGNsb25lZmxhZ3MsIGNoaWxkX3N0YWNrLCBwdGlkLCBjdGlkLCBuZXd0bHMpOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvYW5kcm9pZC9qYXIvc3JjL29yZy9xdHByb2plY3QvcXQ1 L2FuZHJvaWQvUXROYXRpdmUuamF2YSBiL3F0YmFzZS9zcmMvYW5kcm9pZC9qYXIvc3JjL29yZy9x dHByb2plY3QvcXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2YQoraW5kZXggNTc5MmI1YjJmNS4uMmY3 NDc1MGZjZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvYW5kcm9pZC9qYXIvc3JjL29yZy9xdHBy b2plY3QvcXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2YQorKysrIGIvcXRiYXNlL3NyYy9hbmRyb2lk L2phci9zcmMvb3JnL3F0cHJvamVjdC9xdDUvYW5kcm9pZC9RdE5hdGl2ZS5qYXZhCitAQCAtMTE2 LDYgKzExNiw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICBwdWJsaWMgc3RhdGljIFF0 VGhyZWFkIG1fcXRUaHJlYWQgPSBuZXcgUXRUaHJlYWQoKTsKKyAgICAgcHJpdmF0ZSBzdGF0aWMg SGFzaE1hcDxTdHJpbmcsIFVyaT4gbV9jYWNoZWRVcmlzID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBV cmk+KCk7CisgICAgIHByaXZhdGUgc3RhdGljIEFycmF5TGlzdDxTdHJpbmc+IG1fa25vd25EaXJz ID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisrICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0 cmluZyBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UgPSAiTm8gcGVybWlzc2lvbnMgdG8gb3BlbiBV cmkiOworIAorICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBSdW5uYWJsZSBydW5QZW5kaW5nQ3Bw UnVubmFibGVzUnVubmFibGUgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICBAT3ZlcnJpZGUK K0BAIC0xOTMsMTEgKzE5NCwxMCBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBpdGVyVXJpOworICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgICAg ICAvLyBBbmRyb2lkIDYgYW5kIGVhcmxpZXIgY291bGQgc3RpbGwgbWFuYWdlIHRvIG9wZW4gdGhl IGZpbGUgc28gd2UgY2FuIHJldHVybiB0aGUKKy0gICAgICAgICAgICAvLyBwYXJzZWQgdXJpIGhl cmUKKy0gICAgICAgICAgICBpZiAoQnVpbGQuVkVSU0lPTi5TREtfSU5UIDwgMjQpCistICAgICAg ICAgICAgICAgIHJldHVybiBwYXJzZWRVcmk7CistICAgICAgICAgICAgcmV0dXJuIG51bGw7Cisr ICAgICAgICAgICAgLy8gaWYgd2Ugb25seSBoYXZlIHRyYW5zaWVudCBwZXJtaXNzaW9ucyBvbiB1 cmkgYWxsIHRoZSBhYm92ZSB3aWxsIGZhaWwsCisrICAgICAgICAgICAgLy8gYnV0IHdlIHdpbGwg YmUgYWJsZSB0byByZWFkIHRoZSBmaWxlIGFueXdheSwgc28gY29udGludWUgd2l0aCB1cmkgaGVy ZSBhbnl3YXkKKysgICAgICAgICAgICAvLyBhbmQgY2hlY2sgZm9yIFNlY3VyaXR5RXhjZXB0aW9u cyBsYXRlcgorKyAgICAgICAgICAgIHJldHVybiBwYXJzZWRVcmk7CisgICAgICAgICB9IGNhdGNo IChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2Uo KTsKKyAgICAgICAgICAgICByZXR1cm4gbnVsbDsKK0BAIC0yNDQsNyArMjQ0LDcgQEAgcHVibGlj IGNsYXNzIFF0TmF0aXZlCisgICAgICAgICBpbnQgZXJyb3IgPSAtMTsKKyAKKyAgICAgICAgIGlm ICh1cmkgPT0gbnVsbCkgeworLSAgICAgICAgICAgIExvZy5lKFF0VEFHLCAib3BlbkZkRm9yQ29u dGVudFVybCgpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSIpOworKyAgICAgICAgICAgIExv Zy5lKFF0VEFHLCAib3BlbkZkRm9yQ29udGVudFVybCgpOiAiICsgTm9QZXJtaXNzaW9uRXJyb3JN ZXNzYWdlKTsKKyAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICB9CisgCitAQCAt MjU0LDEyICsyNTQsMTMgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICAgICAgcmV0 dXJuIGZkRGVzYy5kZXRhY2hGZCgpOworICAgICAgICAgfSBjYXRjaCAoRmlsZU5vdEZvdW5kRXhj ZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAg ICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2Vw dGlvbiBlKSB7CisgICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJvcGVuRmRGb3JDb250ZW50VXJs KCk6IEludmFsaWQgVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0g ICAgICAgICAgICByZXR1cm4gZXJyb3I7CisrICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2Vw dGlvbiBlKSB7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVz c2FnZSk7CisgICAgICAgICB9CisrICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgIH0KKyAKKyAg ICAgcHVibGljIHN0YXRpYyBsb25nIGdldFNpemUoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgY29u dGVudFVybCkKK0BAIC0yNzAsNyArMjcxLDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAg ICAgICAgICAgdXJpID0gZ2V0VXJpV2l0aFZhbGlkUGVybWlzc2lvbihjb250ZXh0LCBjb250ZW50 VXJsLCAiciIpOworIAorICAgICAgICAgaWYgKHVyaSA9PSBudWxsKSB7CistICAgICAgICAgICAg TG9nLmUoUXRUQUcsICJnZXRTaXplKCk6IE5vIHBlcm1pc3Npb25zIHRvIG9wZW4gVXJpIik7Cisr ICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAg ICAgICAgICAgcmV0dXJuIHNpemU7CisgICAgICAgICB9IGVsc2UgaWYgKCFtX2NhY2hlZFVyaXMu Y29udGFpbnNLZXkoY29udGVudFVybCkpIHsKKyAgICAgICAgICAgICBtX2NhY2hlZFVyaXMucHV0 KGNvbnRlbnRVcmwsIHVyaSk7CitAQCAtMjg4LDEyICsyODksMTMgQEAgcHVibGljIGNsYXNzIFF0 TmF0aXZlCisgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgewor ICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiZ2V0U2l6ZSgpOiBJbnZhbGlkIFVyaSIpOworICAg ICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIHNpemU7 CisgICAgICAgICB9ICBjYXRjaCAoVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24gZSkgewor ICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiZ2V0U2l6ZSgpOiBVbnN1cHBvcnRlZCBvcGVyYXRp b24gZm9yIGdpdmVuIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Cist ICAgICAgICAgICAgcmV0dXJuIHNpemU7CisrICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2Vw dGlvbiBlKSB7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVz c2FnZSk7CisgICAgICAgICB9CisrICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgfQorIAorICAg ICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gY2hlY2tGaWxlRXhpc3RzKENvbnRleHQgY29udGV4dCwg U3RyaW5nIGNvbnRlbnRVcmwpCitAQCAtMzAzLDcgKzMwNSw3IEBAIHB1YmxpYyBjbGFzcyBRdE5h dGl2ZQorICAgICAgICAgaWYgKHVyaSA9PSBudWxsKQorICAgICAgICAgICAgIHVyaSA9IGdldFVy aVdpdGhWYWxpZFBlcm1pc3Npb24oY29udGV4dCwgY29udGVudFVybCwgInIiKTsKKyAgICAgICAg IGlmICh1cmkgPT0gbnVsbCkgeworLSAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tGaWxl RXhpc3RzKCk6IE5vIHBlcm1pc3Npb25zIHRvIG9wZW4gVXJpIik7CisrICAgICAgICAgICAgTG9n LmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgcmV0dXJu IGV4aXN0czsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgaWYgKCFtX2NhY2hlZFVy aXMuY29udGFpbnNLZXkoY29udGVudFVybCkpCitAQCAtMzIxLDEyICszMjMsMTMgQEAgcHVibGlj IGNsYXNzIFF0TmF0aXZlCisgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRp b24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tGaWxlRXhpc3RzKCk6IElu dmFsaWQgVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAg ICAgICByZXR1cm4gZXhpc3RzOworICAgICAgICAgfSBjYXRjaCAoVW5zdXBwb3J0ZWRPcGVyYXRp b25FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tGaWxlRXhp c3RzKCk6IFVuc3VwcG9ydGVkIG9wZXJhdGlvbiBmb3IgZ2l2ZW4gVXJpIik7CisgICAgICAgICAg ICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrICAg ICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7CisrICAgICAgICAgICAgTG9nLmUo UXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICB9CisrICAgICAgICBy ZXR1cm4gZXhpc3RzOworICAgICB9CisgCisgICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBjaGVj a0lmV3JpdGFibGUoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgY29udGVudFVybCkKK0BAIC0zNDQs NyArMzQ3LDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICAgICAgdXJpID0gZ2V0 VXJpV2l0aFZhbGlkUGVybWlzc2lvbihjb250ZXh0LCBjb250ZW50VXJsLCAiciIpOworICAgICAg ICAgfQorICAgICAgICAgaWYgKHVyaSA9PSBudWxsKSB7CistICAgICAgICAgICAgTG9nLmUoUXRU QUcsICJpc0RpcigpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSIpOworKyAgICAgICAgICAg IExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgIHJl dHVybiBpc0RpcjsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgaWYgKCFtX2NhY2hl ZFVyaXMuY29udGFpbnNLZXkoY29udGVudFVybCkpCitAQCAtMzc0LDEyICszNzcsMTMgQEAgcHVi bGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNl cHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tJZkRpcigpOiBJbnZh bGlkIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgfSBjYXRjaCAoVW5zdXBwb3J0ZWRPcGVyYXRpb25F eGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tJZkRpcigpOiBV bnN1cHBvcnRlZCBvcGVyYXRpb24gZm9yIGdpdmVuIFVyaSIpOworICAgICAgICAgICAgIGUucHJp bnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICAgICAgfSBj YXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBO b1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgfQorKyAgICAgICAgcmV0dXJuIGZh bHNlOworICAgICB9CisgICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gbGlzdENvbnRlbnRzRnJv bVRyZWVVcmkoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgY29udGVudFVybCkKKyAgICAgeworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwu aCBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwuaAoraW5k ZXggOGY5YTkzODk1Mi4uYTk4ZGVkZWYyZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29uY3Vy cmVudC9xdGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwuaAorKysrIGIvcXRiYXNlL3NyYy9jb25jdXJy ZW50L3F0Y29uY3VycmVudHJlZHVjZWtlcm5lbC5oCitAQCAtMjEyLDExICsyMTIsMTMgQEAgcHVi bGljOgorIAorICAgICBpbmxpbmUgYm9vbCBzaG91bGRUaHJvdHRsZSgpCisgICAgIHsKKysgICAg ICAgIHN0ZDo6bG9ja19ndWFyZDxRTXV0ZXg+IGxvY2tlcihtdXRleCk7CisgICAgICAgICByZXR1 cm4gKHJlc3VsdHNNYXBTaXplID4gKFJlZHVjZVF1ZXVlVGhyb3R0bGVMaW1pdCAqIHRocmVhZENv dW50KSk7CisgICAgIH0KKyAKKyAgICAgaW5saW5lIGJvb2wgc2hvdWxkU3RhcnRUaHJlYWQoKQor ICAgICB7CisrICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8UU11dGV4PiBsb2NrZXIobXV0ZXgpOwor ICAgICAgICAgcmV0dXJuIChyZXN1bHRzTWFwU2l6ZSA8PSAoUmVkdWNlUXVldWVTdGFydExpbWl0 ICogdGhyZWFkQ291bnQpKTsKKyAgICAgfQorIH07CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9j b25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAgYi9xdGJhc2Uvc3JjL2NvbmN1 cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAoraW5kZXggZWE2Y2UzYWM0Mi4uN2Y5 MWEyYmE2OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0 aHJlYWRlbmdpbmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50 dGhyZWFkZW5naW5lLmNwcAorQEAgLTE3Niw2ICsxNzYsMzkgQEAgdm9pZCBUaHJlYWRFbmdpbmVC YXNlOjpzdGFydFNpbmdsZVRocmVhZGVkKCkKKyAgICAgZmluaXNoKCk7CisgfQorIAorK3ZvaWQg VGhyZWFkRW5naW5lQmFzZTo6c3RhcnRCbG9ja2luZygpCisreworKyAgICBzdGFydCgpOworKyAg ICBiYXJyaWVyLmFjcXVpcmUoKTsKKysgICAgc3RhcnRUaHJlYWRzKCk7CisrCisrICAgIGJvb2wg dGhyb3R0bGVkID0gZmFsc2U7CisrI2lmbmRlZiBRVF9OT19FWENFUFRJT05TCisrICAgIHRyeSB7 CisrI2VuZGlmCisrICAgICAgICB3aGlsZSAodGhyZWFkRnVuY3Rpb24oKSA9PSBUaHJvdHRsZVRo cmVhZCkgeworKyAgICAgICAgICAgIGlmICh0aHJlYWRUaHJvdHRsZUV4aXQoKSkgeworKyAgICAg ICAgICAgICAgICB0aHJvdHRsZWQgPSB0cnVlOworKyAgICAgICAgICAgICAgICBicmVhazsKKysg ICAgICAgICAgICB9CisrICAgICAgICB9CisrI2lmbmRlZiBRVF9OT19FWENFUFRJT05TCisrICAg IH0gY2F0Y2ggKFFFeGNlcHRpb24gJmUpIHsKKysgICAgICAgIGhhbmRsZUV4Y2VwdGlvbihlKTsK KysgICAgfSBjYXRjaCAoLi4uKSB7CisrICAgICAgICBoYW5kbGVFeGNlcHRpb24oUVVuaGFuZGxl ZEV4Y2VwdGlvbigpKTsKKysgICAgfQorKyNlbmRpZgorKworKyAgICBpZiAodGhyb3R0bGVkID09 IGZhbHNlKSB7CisrICAgICAgICBiYXJyaWVyLnJlbGVhc2UoKTsKKysgICAgfQorKworKyAgICBi YXJyaWVyLndhaXQoKTsKKysgICAgZmluaXNoKCk7CisrICAgIGV4Y2VwdGlvblN0b3JlLnRocm93 UG9zc2libGVFeGNlcHRpb24oKTsKKyt9CisrCisgdm9pZCBUaHJlYWRFbmdpbmVCYXNlOjpzdGFy dFRocmVhZCgpCisgeworICAgICBzdGFydFRocmVhZEludGVybmFsKCk7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5oIGIvcXRiYXNl L3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5oCitpbmRleCA3YzMwY2Vi ZGJjLi5hNGM4NTQ4Y2M0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29u Y3VycmVudHRocmVhZGVuZ2luZS5oCisrKysgYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25j dXJyZW50dGhyZWFkZW5naW5lLmgKK0BAIC05MSw2ICs5MSw3IEBAIHB1YmxpYzoKKyAgICAgVGhy ZWFkRW5naW5lQmFzZSgpOworICAgICB2aXJ0dWFsIH5UaHJlYWRFbmdpbmVCYXNlKCk7CisgICAg IHZvaWQgc3RhcnRTaW5nbGVUaHJlYWRlZCgpOworKyAgICB2b2lkIHN0YXJ0QmxvY2tpbmcoKTsK KyAgICAgdm9pZCBzdGFydFRocmVhZCgpOworICAgICBib29sIGlzQ2FuY2VsZWQoKTsKKyAgICAg dm9pZCB3YWl0Rm9yUmVzdW1lKCk7CitAQCAtMTQzLDYgKzE0NCwxNSBAQCBwdWJsaWM6CisgICAg ICAgICByZXR1cm4gcmVzdWx0KCk7CisgICAgIH0KKyAKKysgICAgLy8gUnVucyB0aGUgdXNlciBh bGdvcml0aG0gdXNpbmcgbXVsdGlwbGUgdGhyZWFkcy4KKysgICAgLy8gVGhpcyBmdW5jdGlvbiBi bG9ja3MgdW50aWwgdGhlIGFsZ29yaXRobSBpcyBmaW5pc2hlZCwKKysgICAgLy8gYW5kIHRoZW4g cmV0dXJucyB0aGUgcmVzdWx0LgorKyAgICBUICpzdGFydEJsb2NraW5nKCkKKysgICAgeworKyAg ICAgICAgVGhyZWFkRW5naW5lQmFzZTo6c3RhcnRCbG9ja2luZygpOworKyAgICAgICAgcmV0dXJu IHJlc3VsdCgpOworKyAgICB9CisrCisgICAgIC8vIFJ1bnMgdGhlIHVzZXIgYWxnb3JpdGhtIHVz aW5nIG11bHRpcGxlIHRocmVhZHMuCisgICAgIC8vIERvZXMgbm90IGJsb2NrLCByZXR1cm5zIGEg ZnV0dXJlLgorICAgICBRRnV0dXJlPFQ+IHN0YXJ0QXN5bmNocm9ub3VzbHkoKQorQEAgLTIyMyw2 ICsyMzMsMTMgQEAgY2xhc3MgVGhyZWFkRW5naW5lU3RhcnRlciA6IHB1YmxpYyBUaHJlYWRFbmdp bmVTdGFydGVyQmFzZTxUPgorIHB1YmxpYzoKKyAgICAgVGhyZWFkRW5naW5lU3RhcnRlcihUeXBl ZFRocmVhZEVuZ2luZSAqZW5nKQorICAgICAgICAgOiBCYXNlKGVuZykgeyB9CisrCisrICAgIFQg c3RhcnRCbG9ja2luZygpCisrICAgIHsKKysgICAgICAgIFQgdCA9ICp0aGlzLT50aHJlYWRFbmdp bmUtPnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGRlbGV0ZSB0aGlzLT50aHJlYWRFbmdpbmU7 CisrICAgICAgICByZXR1cm4gdDsKKysgICAgfQorIH07CisgCisgLy8gRnVsbCB0ZW1wbGF0ZSBz cGVjaWFsaXphdGlvbiB3aGVyZSBUIGlzIHZvaWQuCitAQCAtMjMyLDYgKzI0OSwxMiBAQCBjbGFz cyBUaHJlYWRFbmdpbmVTdGFydGVyPHZvaWQ+IDogcHVibGljIFRocmVhZEVuZ2luZVN0YXJ0ZXJC YXNlPHZvaWQ+CisgcHVibGljOgorICAgICBUaHJlYWRFbmdpbmVTdGFydGVyKFRocmVhZEVuZ2lu ZTx2b2lkPiAqX3RocmVhZEVuZ2luZSkKKyAgICAgICAgIDogVGhyZWFkRW5naW5lU3RhcnRlckJh c2U8dm9pZD4oX3RocmVhZEVuZ2luZSkge30KKysKKysgICAgdm9pZCBzdGFydEJsb2NraW5nKCkK KysgICAgeworKyAgICAgICAgdGhpcy0+dGhyZWFkRW5naW5lLT5zdGFydEJsb2NraW5nKCk7Cisr ICAgICAgICBkZWxldGUgdGhpcy0+dGhyZWFkRW5naW5lOworKyAgICB9CisgfTsKKyAKKyAvLyEg W3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS0xXQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29y ZWxpYi9hbmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGli L2FuaW1hdGlvbi9xdmFyaWFudGFuaW1hdGlvbi5jcHAKK2luZGV4IDk4YjAyZjAyMDIuLmVhYzE1 MjQxMDcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvYW5pbWF0aW9uL3F2YXJpYW50 YW5pbWF0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2FuaW1hdGlvbi9xdmFyaWFu dGFuaW1hdGlvbi5jcHAKK0BAIC0yNzYsNyArMjc2LDkgQEAgdm9pZCBRVmFyaWFudEFuaW1hdGlv blByaXZhdGU6OnNldEN1cnJlbnRWYWx1ZUZvclByb2dyZXNzKGNvbnN0IHFyZWFsIHByb2dyZXNz KQorIAorICAgICBjb25zdCBxcmVhbCBzdGFydFByb2dyZXNzID0gY3VycmVudEludGVydmFsLnN0 YXJ0LmZpcnN0OworICAgICBjb25zdCBxcmVhbCBlbmRQcm9ncmVzcyA9IGN1cnJlbnRJbnRlcnZh bC5lbmQuZmlyc3Q7CistICAgIGNvbnN0IHFyZWFsIGxvY2FsUHJvZ3Jlc3MgPSAocHJvZ3Jlc3Mg LSBzdGFydFByb2dyZXNzKSAvIChlbmRQcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jlc3MpOworKyAgICBj b25zdCBxcmVhbCBsb2NhbFByb2dyZXNzID0KKysgICAgICAgICAgICBxSXNOdWxsKHByb2dyZXNz IC0gc3RhcnRQcm9ncmVzcykgPyAwLjAgLy8gYXZvaWQgMC8wIGJlbG93CisrICAgICAgICAgICAg LyogZWxzZSAqLyAgICAgICAgICAgICAgICAgICAgICAgIDogKHByb2dyZXNzIC0gc3RhcnRQcm9n cmVzcykgLyAoZW5kUHJvZ3Jlc3MgLSBzdGFydFByb2dyZXNzKTsKKyAKKyAgICAgUVZhcmlhbnQg cmV0ID0gcS0+aW50ZXJwb2xhdGVkKGN1cnJlbnRJbnRlcnZhbC5zdGFydC5zZWNvbmQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50SW50ZXJ2YWwuZW5kLnNlY29u ZCwKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FuYW1lc3BhY2UuaCBi L3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcW5hbWVzcGFjZS5oCitpbmRleCBhZDQxNTBiMzE3 Li5iZjE5YjE2MjdiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xbmFt ZXNwYWNlLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcW5hbWVzcGFjZS5oCitA QCAtMTg2NCw3ICsxODY0LDcgQEAgcHVibGljOgorICAgICBRVF9RX0VOVU0oVGltZXJUeXBlKQor ICAgICBRVF9RX0VOVU0oU2Nyb2xsUGhhc2UpCisgICAgIFFUX1FfRU5VTShNb3VzZUV2ZW50U291 cmNlKQorLSAgICBRVF9RX0ZMQUcoTW91c2VFdmVudEZsYWcpCisrICAgIFFUX1FfRkxBRyhNb3Vz ZUV2ZW50RmxhZ3MpCisgICAgIFFUX1FfRU5VTShDaGVja3N1bVR5cGUpCisgICAgIFFUX1FfRU5V TShIaWdoRHBpU2NhbGVGYWN0b3JSb3VuZGluZ1BvbGljeSkKKyAgICAgUVRfUV9FTlVNKFRhYkZv Y3VzQmVoYXZpb3IpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xcmFu ZG9tLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcXJhbmRvbS5jcHAKK2luZGV4IDEw NjcyYzFmOTIuLjI1Zjg3YzdlNmEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xv YmFsL3FyYW5kb20uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FyYW5kb20u Y3BwCitAQCAtMzgzLDcgKzM4Myw2IEBAIHN0cnVjdCBRUmFuZG9tR2VuZXJhdG9yOjpTeXN0ZW1B bmRHbG9iYWxHZW5lcmF0b3JzCisgCisgICAgICAgICBjb25zdGV4cHIgU3lzdGVtQW5kR2xvYmFs R2VuZXJhdG9ycyBnID0ge307CisgICAgICAgICBRX1VOVVNFRChnKTsKKy0gICAgICAgIFFfU1RB VElDX0FTU0VSVChzdGQ6OmlzX2xpdGVyYWxfdHlwZTxTeXN0ZW1BbmRHbG9iYWxHZW5lcmF0b3Jz Pjo6dmFsdWUpOworICNlbmRpZgorICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9j b3JlbGliL2lvL3FidWZmZXIuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FidWZmZXIuY3Bw CitpbmRleCA1OTVmY2QyNzI0Li4wMzJjMGRkZDRiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9j b3JlbGliL2lvL3FidWZmZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWJ1ZmZl ci5jcHAKK0BAIC00MSw2ICs0MSw4IEBACisgI2luY2x1ZGUgPFF0Q29yZS9xbWV0YW9iamVjdC5o PgorICNpbmNsdWRlICJwcml2YXRlL3Fpb2RldmljZV9wLmgiCisgCisrI2luY2x1ZGUgPGxpbWl0 cz4KKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyAvKiogUUJ1ZmZlclByaXZhdGUgKiovCitA QCAtMzY2LDcgKzM2OCw5IEBAIHFpbnQ2NCBRQnVmZmVyOjpzaXplKCkgY29uc3QKKyBib29sIFFC dWZmZXI6OnNlZWsocWludDY0IHBvcykKKyB7CisgICAgIFFfRChRQnVmZmVyKTsKKy0gICAgaWYg KHBvcyA+IGQtPmJ1Zi0+c2l6ZSgpICYmIGlzV3JpdGFibGUoKSkgeworKyAgICBjb25zdCBhdXRv IG9sZEJ1ZlNpemUgPSBkLT5idWYtPnNpemUoKTsKKysgICAgY29uc3RleHByIHFpbnQ2NCBNYXhT ZWVrUG9zID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8ZGVjbHR5cGUob2xkQnVmU2l6ZSk+OjptYXgp KCk7CisrICAgIGlmIChwb3MgPD0gTWF4U2Vla1BvcyAmJiBwb3MgPiBvbGRCdWZTaXplICYmIGlz V3JpdGFibGUoKSkgeworICAgICAgICAgaWYgKHNlZWsoZC0+YnVmLT5zaXplKCkpKSB7CisgICAg ICAgICAgICAgY29uc3QgcWludDY0IGdhcFNpemUgPSBwb3MgLSBkLT5idWYtPnNpemUoKTsKKyAg ICAgICAgICAgICBpZiAod3JpdGUoUUJ5dGVBcnJheShnYXBTaXplLCAwKSkgIT0gZ2FwU2l6ZSkg eworQEAgLTM3Nyw3ICszODEsNyBAQCBib29sIFFCdWZmZXI6OnNlZWsocWludDY0IHBvcykKKyAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICB9CisgICAgIH0gZWxzZSBpZiAocG9z ID4gZC0+YnVmLT5zaXplKCkgfHwgcG9zIDwgMCkgeworLSAgICAgICAgcVdhcm5pbmcoIlFCdWZm ZXI6OnNlZWs6IEludmFsaWQgcG9zOiAlZCIsIGludChwb3MpKTsKKysgICAgICAgIHFXYXJuaW5n KCJRQnVmZmVyOjpzZWVrOiBJbnZhbGlkIHBvczogJWxsZCIsIHBvcyk7CisgICAgICAgICByZXR1 cm4gZmFsc2U7CisgICAgIH0KKyAgICAgcmV0dXJuIFFJT0RldmljZTo6c2Vlayhwb3MpOworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbWVuZ2luZV93aW4uY3Bw IGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtZW5naW5lX3dpbi5jcHAKK2luZGV4 IDgxZDNhNzE5ODYuLmM4NmVkMWY5YjAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIv aW8vcWZpbGVzeXN0ZW1lbmdpbmVfd2luLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lv L3FmaWxlc3lzdGVtZW5naW5lX3dpbi5jcHAKK0BAIC02NjQsMTQgKzY2NCwxNCBAQCBRRmlsZVN5 c3RlbUVudHJ5IFFGaWxlU3lzdGVtRW5naW5lOjphYnNvbHV0ZU5hbWUoY29uc3QgUUZpbGVTeXN0 ZW1FbnRyeSAmZW50cnkpCisgICAgIHJldHVybiBRRmlsZVN5c3RlbUVudHJ5KHJldCwgUUZpbGVT eXN0ZW1FbnRyeTo6RnJvbUludGVybmFsUGF0aCgpKTsKKyB9CisgCistI2lmIGRlZmluZWQoUV9D Q19NSU5HVykgJiYgV0lOVkVSIDwgMHgwNjAyIC8vICBXaW5kb3dzIDggb253YXJkcworKyNpZiBk ZWZpbmVkKFFfQ0NfTUlOR1cpICYmIFdJTlZFUiA8IDB4MDYwMiAmJiBfV0lOMzJfV0lOTlQgPCBf V0lOMzJfV0lOTlRfV0lOOCAvLyAgV2luZG93cyA4IG9ud2FyZHMKKyAKKyB0eXBlZGVmIHN0cnVj dCBfRklMRV9JRF9JTkZPIHsKKyAgICAgVUxPTkdMT05HIFZvbHVtZVNlcmlhbE51bWJlcjsKKyAg ICAgRklMRV9JRF8xMjggRmlsZUlkOworIH0gRklMRV9JRF9JTkZPLCAqUEZJTEVfSURfSU5GTzsK KyAKKy0jZW5kaWYgLy8gaWYgZGVmaW5lZCAoUV9DQ19NSU5HVykgJiYgV0lOVkVSIDwgMHgwNjAy CisrI2VuZGlmIC8vIGlmIGRlZmluZWQoUV9DQ19NSU5HVykgJiYgV0lOVkVSIDwgMHgwNjAyICYm IF9XSU4zMl9XSU5OVCA8IF9XSU4zMl9XSU5OVF9XSU44CisgCisgLy8gRmlsZSBJRCBmb3IgV2lu ZG93cyB1cCB0byB2ZXJzaW9uIDcgYW5kIEZBVDMyIGRyaXZlcworIHN0YXRpYyBpbmxpbmUgUUJ5 dGVBcnJheSBmaWxlSWQoSEFORExFIGhhbmRsZSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvaW8vcWZpbGVzeXN0ZW13YXRjaGVyX2lub3RpZnkuY3BwIGIvcXRiYXNlL3NyYy9jb3Jl bGliL2lvL3FmaWxlc3lzdGVtd2F0Y2hlcl9pbm90aWZ5LmNwcAoraW5kZXggOTRkOWQwNmJjYi4u MjdlMGIxM2IwYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3Rl bXdhdGNoZXJfaW5vdGlmeS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5 c3RlbXdhdGNoZXJfaW5vdGlmeS5jcHAKK0BAIC0zNjYsNyArMzY2LDkgQEAgdm9pZCBRSW5vdGlm eUZpbGVTeXN0ZW1XYXRjaGVyRW5naW5lOjpyZWFkRnJvbUlub3RpZnkoKQorICAgICAvLyBxRGVi dWcoIlFJbm90aWZ5RmlsZVN5c3RlbVdhdGNoZXJFbmdpbmU6OnJlYWRGcm9tSW5vdGlmeSIpOwor IAorICAgICBpbnQgYnVmZlNpemUgPSAwOworLSAgICBpb2N0bChpbm90aWZ5RmQsIEZJT05SRUFE LCAoY2hhciAqKSAmYnVmZlNpemUpOworKyAgICBpZiAoaW9jdGwoaW5vdGlmeUZkLCBGSU9OUkVB RCwgKGNoYXIgKikgJmJ1ZmZTaXplKSA9PSAtMSB8fCBidWZmU2l6ZSA9PSAwKQorKyAgICAgICAg cmV0dXJuOworKworICAgICBRVmFyTGVuZ3RoQXJyYXk8Y2hhciwgNDA5Nj4gYnVmZmVyKGJ1ZmZT aXplKTsKKyAgICAgYnVmZlNpemUgPSByZWFkKGlub3RpZnlGZCwgYnVmZmVyLmRhdGEoKSwgYnVm ZlNpemUpOworICAgICBjaGFyICphdCA9IGJ1ZmZlci5kYXRhKCk7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93aW4uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGli L2lvL3Fsb2NrZmlsZV93aW4uY3BwCitpbmRleCAyNzdmOGQ0MjMwLi4zOGVjZWY1NTUwIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93aW4uY3BwCisrKysgYi9x dGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWxvY2tmaWxlX3dpbi5jcHAKK0BAIC00OCw2ICs0OCw4IEBA CisgI2luY2x1ZGUgIlF0Q29yZS9xZGVidWcuaCIKKyAjaW5jbHVkZSAiUXRDb3JlL3F0aHJlYWQu aCIKKyAKKysjaW5jbHVkZSAicHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9wLmgiCisrCisgUVRfQkVH SU5fTkFNRVNQQUNFCisgCisgc3RhdGljIGlubGluZSBib29sIGZpbGVFeGlzdHMoY29uc3Qgd2No YXJfdCAqZmlsZU5hbWUpCitAQCAtMTUwLDcgKzE1Miw3IEBAIFFTdHJpbmcgUUxvY2tGaWxlUHJp dmF0ZTo6cHJvY2Vzc05hbWVCeVBpZChxaW50NjQgcGlkKQorICNpZiAhZGVmaW5lZChRX09TX1dJ TlJUKQorICAgICB0eXBlZGVmIERXT1JEIChXSU5BUEkgKkdldE1vZHVsZUZpbGVOYW1lRXhGdW5j KShIQU5ETEUsIEhNT0RVTEUsIExQVFNUUiwgRFdPUkQpOworIAorLSAgICBITU9EVUxFIGhQc2Fw aSA9IExvYWRMaWJyYXJ5QSgicHNhcGkiKTsKKysgICAgSE1PRFVMRSBoUHNhcGkgPSBRU3lzdGVt TGlicmFyeTo6bG9hZChMInBzYXBpIik7CisgICAgIGlmICghaFBzYXBpKQorICAgICAgICAgcmV0 dXJuIFFTdHJpbmcoKTsKKyAgICAgR2V0TW9kdWxlRmlsZU5hbWVFeEZ1bmMgcUdldE1vZHVsZUZp bGVOYW1lRXggPSByZWludGVycHJldF9jYXN0PEdldE1vZHVsZUZpbGVOYW1lRXhGdW5jPigKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcXByb2Nlc3NfdW5peC5jcHAgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvaW8vcXByb2Nlc3NfdW5peC5jcHAKK2luZGV4IDUwMzkwZTU3ZjUuLjE1 YzhmMzA3NDUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcXByb2Nlc3NfdW5p eC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xcHJvY2Vzc191bml4LmNwcAorQEAg LTEsNyArMSw3IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorICoqIENvcHlyaWdodCAo QykgMjAxNiBUaGUgUXQgQ29tcGFueSBMdGQuCistKiogQ29weXJpZ2h0IChDKSAyMDE2IEludGVs IENvcnBvcmF0aW9uLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBJbnRlbCBDb3Jwb3JhdGlvbi4K KyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlz IGZpbGUgaXMgcGFydCBvZiB0aGUgUXRDb3JlIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BA IC00MjIsMTQgKzQyMiwxNSBAQCB2b2lkIFFQcm9jZXNzUHJpdmF0ZTo6c3RhcnRQcm9jZXNzKCkK KyAgICAgLy8gQWRkIHRoZSBwcm9ncmFtIG5hbWUgdG8gdGhlIGFyZ3VtZW50IGxpc3QuCisgICAg IGFyZ3ZbMF0gPSBudWxscHRyOworICAgICBpZiAoIXByb2dyYW0uY29udGFpbnMoUUxhdGluMUNo YXIoJy8nKSkpIHsKKysgICAgICAgIC8vIGZpbmRFeGVjdXRhYmxlKCkgcmV0dXJucyBpdHMgYXJn dW1lbnQgaWYgaXQncyBhbiBhYnNvbHV0ZSBwYXRoLAorKyAgICAgICAgLy8gb3RoZXJ3aXNlIGl0 IHNlYXJjaGVzICRQQVRIOyByZXR1cm5zIGVtcHR5IGlmIG5vdCBmb3VuZCAod2UgaGFuZGxlCisr ICAgICAgICAvLyB0aGF0IGNhc2UgbXVjaCBsYXRlcikKKyAgICAgICAgIGNvbnN0IFFTdHJpbmcg JmV4ZUZpbGVQYXRoID0gUVN0YW5kYXJkUGF0aHM6OmZpbmRFeGVjdXRhYmxlKHByb2dyYW0pOwor LSAgICAgICAgaWYgKCFleGVGaWxlUGF0aC5pc0VtcHR5KCkpIHsKKy0gICAgICAgICAgICBjb25z dCBRQnl0ZUFycmF5ICZ0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShleGVGaWxlUGF0aCk7CistICAg ICAgICAgICAgYXJndlswXSA9IDo6c3RyZHVwKHRtcC5jb25zdERhdGEoKSk7CistICAgICAgICB9 CistICAgIH0KKy0gICAgaWYgKCFhcmd2WzBdKQorKyAgICAgICAgY29uc3QgUUJ5dGVBcnJheSAm dG1wID0gUUZpbGU6OmVuY29kZU5hbWUoZXhlRmlsZVBhdGgpOworKyAgICAgICAgYXJndlswXSA9 IDo6c3RyZHVwKHRtcC5jb25zdERhdGEoKSk7CisrICAgIH0gZWxzZSB7CisgICAgICAgICBhcmd2 WzBdID0gOjpzdHJkdXAoZW5jb2RlZFByb2dyYW1OYW1lLmNvbnN0RGF0YSgpKTsKKysgICAgfQor IAorICAgICAvLyBBZGQgZXZlcnkgYXJndW1lbnQgdG8gdGhlIGxpc3QKKyAgICAgZm9yIChpbnQg aSA9IDA7IGkgPCBhcmd1bWVudHMuY291bnQoKTsgKytpKQorQEAgLTk4MywxNSArOTg0LDE2IEBA IGJvb2wgUVByb2Nlc3NQcml2YXRlOjpzdGFydERldGFjaGVkKHFpbnQ2NCAqcGlkKQorICAgICAg ICAgICAgICAgICBlbnZwID0gX3FfZHVwRW52aXJvbm1lbnQoZW52aXJvbm1lbnQuZC5jb25zdERh dGEoKS0+dmFycywgJmVudmMpOworICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgICAgICBRQnl0 ZUFycmF5IHRtcDsKKyAgICAgICAgICAgICBpZiAoIXByb2dyYW0uY29udGFpbnMoUUxhdGluMUNo YXIoJy8nKSkpIHsKKysgICAgICAgICAgICAgICAgLy8gZmluZEV4ZWN1dGFibGUoKSByZXR1cm5z IGl0cyBhcmd1bWVudCBpZiBpdCdzIGFuIGFic29sdXRlIHBhdGgsCisrICAgICAgICAgICAgICAg IC8vIG90aGVyd2lzZSBpdCBzZWFyY2hlcyAkUEFUSDsgcmV0dXJucyBlbXB0eSBpZiBub3QgZm91 bmQgKHdlIGhhbmRsZQorKyAgICAgICAgICAgICAgICAvLyB0aGF0IGNhc2UgbXVjaCBsYXRlcikK KyAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmZXhlRmlsZVBhdGggPSBRU3RhbmRhcmRQ YXRoczo6ZmluZEV4ZWN1dGFibGUocHJvZ3JhbSk7CistICAgICAgICAgICAgICAgIGlmICghZXhl RmlsZVBhdGguaXNFbXB0eSgpKQorLSAgICAgICAgICAgICAgICAgICAgdG1wID0gUUZpbGU6OmVu Y29kZU5hbWUoZXhlRmlsZVBhdGgpOworKyAgICAgICAgICAgICAgICBjb25zdCBRQnl0ZUFycmF5 ICZ0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShleGVGaWxlUGF0aCk7CisrICAgICAgICAgICAgICAg IGFyZ3ZbMF0gPSA6OnN0cmR1cCh0bXAuY29uc3REYXRhKCkpOworKyAgICAgICAgICAgIH0gZWxz ZSB7CisrICAgICAgICAgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cChRRmlsZTo6ZW5jb2RlTmFt ZShwcm9ncmFtKSk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGlmICh0bXAuaXNFbXB0 eSgpKQorLSAgICAgICAgICAgICAgICB0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShwcm9ncmFtKTsK Ky0gICAgICAgICAgICBhcmd2WzBdID0gdG1wLmRhdGEoKTsKKyAKKyAgICAgICAgICAgICBpZiAo ZW52cCkKKyAgICAgICAgICAgICAgICAgcXRfc2FmZV9leGVjdmUoYXJndlswXSwgYXJndiwgZW52 cCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcWFic3RyYWN0 aXRlbW1vZGVsLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3FhYnN0cmFjdGl0 ZW1tb2RlbC5jcHAKK2luZGV4IDNhNzljNTAyYWYuLjk5N2E2MzRlNzYgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xYWJzdHJhY3RpdGVtbW9kZWwuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xYWJzdHJhY3RpdGVtbW9kZWwuY3BwCitA QCAtMzE5Niw5ICszMTk2LDggQEAgYm9vbCBRQWJzdHJhY3RJdGVtTW9kZWw6OmJlZ2luTW92ZUNv bHVtbnMoY29uc3QgUU1vZGVsSW5kZXggJnNvdXJjZVBhcmVudCwgaW50IHMKKyAgICAgZGVzdGlu YXRpb25DaGFuZ2UubmVlZHNBZGp1c3QgPSBkZXN0aW5hdGlvblBhcmVudC5pc1ZhbGlkKCkgJiYg ZGVzdGluYXRpb25QYXJlbnQucm93KCkgPj0gc291cmNlTGFzdCAmJiBkZXN0aW5hdGlvblBhcmVu dC5wYXJlbnQoKSA9PSBzb3VyY2VQYXJlbnQ7CisgICAgIGQtPmNoYW5nZXMucHVzaChkZXN0aW5h dGlvbkNoYW5nZSk7CisgCistICAgIGQtPml0ZW1zQWJvdXRUb0JlTW92ZWQoc291cmNlUGFyZW50 LCBzb3VyY2VGaXJzdCwgc291cmNlTGFzdCwgZGVzdGluYXRpb25QYXJlbnQsIGRlc3RpbmF0aW9u Q2hpbGQsIFF0OjpIb3Jpem9udGFsKTsKKy0KKyAgICAgZW1pdCBjb2x1bW5zQWJvdXRUb0JlTW92 ZWQoc291cmNlUGFyZW50LCBzb3VyY2VGaXJzdCwgc291cmNlTGFzdCwgZGVzdGluYXRpb25QYXJl bnQsIGRlc3RpbmF0aW9uQ2hpbGQsIFFQcml2YXRlU2lnbmFsKCkpOworKyAgICBkLT5pdGVtc0Fi b3V0VG9CZU1vdmVkKHNvdXJjZVBhcmVudCwgc291cmNlRmlyc3QsIHNvdXJjZUxhc3QsIGRlc3Rp bmF0aW9uUGFyZW50LCBkZXN0aW5hdGlvbkNoaWxkLCBRdDo6SG9yaXpvbnRhbCk7CisgICAgIHJl dHVybiB0cnVlOworIH0KKyAKK0BAIC0zMjMxLDcgKzMyMzAsNiBAQCB2b2lkIFFBYnN0cmFjdEl0 ZW1Nb2RlbDo6ZW5kTW92ZUNvbHVtbnMoKQorICAgICAgIGFkanVzdGVkU291cmNlID0gY3JlYXRl SW5kZXgoYWRqdXN0ZWRTb3VyY2Uucm93KCksIGFkanVzdGVkU291cmNlLmNvbHVtbigpICsgbnVt TW92ZWQsIGFkanVzdGVkU291cmNlLmludGVybmFsUG9pbnRlcigpKTsKKyAKKyAgICAgZC0+aXRl bXNNb3ZlZChhZGp1c3RlZFNvdXJjZSwgcmVtb3ZlQ2hhbmdlLmZpcnN0LCByZW1vdmVDaGFuZ2Uu bGFzdCwgYWRqdXN0ZWREZXN0aW5hdGlvbiwgaW5zZXJ0Q2hhbmdlLmZpcnN0LCBRdDo6SG9yaXpv bnRhbCk7CistCisgICAgIGVtaXQgY29sdW1uc01vdmVkKGFkanVzdGVkU291cmNlLCByZW1vdmVD aGFuZ2UuZmlyc3QsIHJlbW92ZUNoYW5nZS5sYXN0LCBhZGp1c3RlZERlc3RpbmF0aW9uLCBpbnNl cnRDaGFuZ2UuZmlyc3QsIFFQcml2YXRlU2lnbmFsKCkpOworIH0KKyAKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xc29ydGZpbHRlcnByb3h5bW9kZWwuY3BwIGIv cXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcXNvcnRmaWx0ZXJwcm94eW1vZGVsLmNwcAor aW5kZXggZGM2Mzc5ZDlmYi4uYzVlMjg3ZWU4NCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29y ZWxpYi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVycHJveHltb2RlbC5jcHAKKysrKyBiL3F0YmFzZS9z cmMvY29yZWxpYi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVycHJveHltb2RlbC5jcHAKK0BAIC05Mzks OCArOTM5LDkgQEAgdm9pZCBRU29ydEZpbHRlclByb3h5TW9kZWxQcml2YXRlOjppbnNlcnRfc291 cmNlX2l0ZW1zKAorICAgICAgICAgICAgICAgICBxLT5iZWdpbkluc2VydENvbHVtbnMocHJveHlf cGFyZW50LCBwcm94eV9zdGFydCwgcHJveHlfZW5kKTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAg IGZvciAoaW50IGkgPSAwOyBpIDwgc291cmNlX2l0ZW1zLnNpemUoKTsgKytpKQorLSAgICAgICAg ICAgIHByb3h5X3RvX3NvdXJjZS5pbnNlcnQocHJveHlfc3RhcnQgKyBpLCBzb3VyY2VfaXRlbXMu YXQoaSkpOworKyAgICAgICAgLy8gVE9ETzogdXNlIHRoZSByYW5nZSBRTGlzdDo6aW5zZXJ0KCkg b3ZlcmxvYWQgb25jZSBpdCBpcyBpbXBsZW1lbnRlZCAoUVRCVUctNTg2MzMpLgorKyAgICAgICAg cHJveHlfdG9fc291cmNlLmluc2VydChwcm94eV9zdGFydCwgc291cmNlX2l0ZW1zLnNpemUoKSwg MCk7CisrICAgICAgICBzdGQ6OmNvcHkoc291cmNlX2l0ZW1zLmNiZWdpbigpLCBzb3VyY2VfaXRl bXMuY2VuZCgpLCBwcm94eV90b19zb3VyY2UuYmVnaW4oKSArIHByb3h5X3N0YXJ0KTsKKyAKKyAg ICAgICAgIGJ1aWxkX3NvdXJjZV90b19wcm94eV9tYXBwaW5nKHByb3h5X3RvX3NvdXJjZSwgc291 cmNlX3RvX3Byb3h5KTsKKyAKK0BAIC0zMTIzLDggKzMxMjQsOSBAQCBib29sIFFTb3J0RmlsdGVy UHJveHlNb2RlbDo6ZmlsdGVyQWNjZXB0c1JvdyhpbnQgc291cmNlX3JvdywgY29uc3QgUU1vZGVs SW5kZXggJgorIAorICAgICBpZiAoZC0+ZmlsdGVyX2RhdGEuaXNFbXB0eSgpKQorICAgICAgICAg cmV0dXJuIHRydWU7CisrCisrICAgIGludCBjb2x1bW5fY291bnQgPSBkLT5tb2RlbC0+Y29sdW1u Q291bnQoc291cmNlX3BhcmVudCk7CisgICAgIGlmIChkLT5maWx0ZXJfY29sdW1uID09IC0xKSB7 CistICAgICAgICBpbnQgY29sdW1uX2NvdW50ID0gZC0+bW9kZWwtPmNvbHVtbkNvdW50KHNvdXJj ZV9wYXJlbnQpOworICAgICAgICAgZm9yIChpbnQgY29sdW1uID0gMDsgY29sdW1uIDwgY29sdW1u X2NvdW50OyArK2NvbHVtbikgeworICAgICAgICAgICAgIFFNb2RlbEluZGV4IHNvdXJjZV9pbmRl eCA9IGQtPm1vZGVsLT5pbmRleChzb3VyY2Vfcm93LCBjb2x1bW4sIHNvdXJjZV9wYXJlbnQpOwor ICAgICAgICAgICAgIFFTdHJpbmcga2V5ID0gZC0+bW9kZWwtPmRhdGEoc291cmNlX2luZGV4LCBk LT5maWx0ZXJfcm9sZSkudG9TdHJpbmcoKTsKK0BAIC0zMTMzLDkgKzMxMzUsMTAgQEAgYm9vbCBR U29ydEZpbHRlclByb3h5TW9kZWw6OmZpbHRlckFjY2VwdHNSb3coaW50IHNvdXJjZV9yb3csIGNv bnN0IFFNb2RlbEluZGV4ICYKKyAgICAgICAgIH0KKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgfQorLSAgICBRTW9kZWxJbmRleCBzb3VyY2VfaW5kZXggPSBkLT5tb2RlbC0+aW5kZXgoc291 cmNlX3JvdywgZC0+ZmlsdGVyX2NvbHVtbiwgc291cmNlX3BhcmVudCk7CistICAgIGlmICghc291 cmNlX2luZGV4LmlzVmFsaWQoKSkgLy8gdGhlIGNvbHVtbiBtYXkgbm90IGV4aXN0CisrCisrICAg IGlmIChkLT5maWx0ZXJfY29sdW1uID49IGNvbHVtbl9jb3VudCkgLy8gdGhlIGNvbHVtbiBtYXkg bm90IGV4aXN0CisgICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgUU1vZGVsSW5kZXggc291cmNl X2luZGV4ID0gZC0+bW9kZWwtPmluZGV4KHNvdXJjZV9yb3csIGQtPmZpbHRlcl9jb2x1bW4sIHNv dXJjZV9wYXJlbnQpOworICAgICBRU3RyaW5nIGtleSA9IGQtPm1vZGVsLT5kYXRhKHNvdXJjZV9p bmRleCwgZC0+ZmlsdGVyX3JvbGUpLnRvU3RyaW5nKCk7CisgICAgIHJldHVybiBkLT5maWx0ZXJf ZGF0YS5oYXNNYXRjaChrZXkpOworIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIv a2VybmVsL3Fjb3JlYXBwbGljYXRpb24uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9x Y29yZWFwcGxpY2F0aW9uLmNwcAoraW5kZXggY2EyODY0ZGY4My4uMTMyYjJlYWU1MiAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5jcHAKKysr KyBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5jcHAKK0BAIC0x MTU3LDcgKzExNTcsNyBAQCBzdGF0aWMgYm9vbCBkb05vdGlmeShRT2JqZWN0ICpyZWNlaXZlciwg UUV2ZW50ICpldmVudCkKKyBib29sIFFDb3JlQXBwbGljYXRpb25Qcml2YXRlOjpzZW5kVGhyb3Vn aEFwcGxpY2F0aW9uRXZlbnRGaWx0ZXJzKFFPYmplY3QgKnJlY2VpdmVyLCBRRXZlbnQgKmV2ZW50 KQorIHsKKyAgICAgLy8gV2UgY2FuJ3QgYWNjZXNzIHRoZSBhcHBsaWNhdGlvbiBldmVudCBmaWx0 ZXJzIG91dHNpZGUgb2YgdGhlIG1haW4gdGhyZWFkIChyYWNlIGNvbmRpdGlvbnMpCistICAgIFFf QVNTRVJUKHJlY2VpdmVyLT5kX2Z1bmMoKS0+dGhyZWFkRGF0YS5sb2FkUmVsYXhlZCgpLT50aHJl YWQubG9hZEFjcXVpcmUoKSA9PSBtYWluVGhyZWFkKCkpOworKyAgICBRX0FTU0VSVChyZWNlaXZl ci0+ZF9mdW5jKCktPnRocmVhZERhdGEubG9hZEFjcXVpcmUoKS0+dGhyZWFkLmxvYWRSZWxheGVk KCkgPT0gbWFpblRocmVhZCgpKTsKKyAKKyAgICAgaWYgKGV4dHJhRGF0YSkgeworICAgICAgICAg Ly8gYXBwbGljYXRpb24gZXZlbnQgZmlsdGVycyBhcmUgb25seSBjYWxsZWQgZm9yIG9iamVjdHMg aW4gdGhlIEdVSSB0aHJlYWQKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVs L3FvYmplY3QuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0LmNwcAoraW5k ZXggMWViNzkxMzhkOS4uMzZjZDc4MGVlMSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxp Yi9rZXJuZWwvcW9iamVjdC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9i amVjdC5jcHAKK0BAIC0xMDEwLDcgKzEwMTAsNyBAQCBRT2JqZWN0Ojp+UU9iamVjdCgpCisgICAg ICAgICBlbWl0IGRlc3Ryb3llZCh0aGlzKTsKKyAgICAgfQorIAorLSAgICBpZiAoZC0+ZGVjbGFy YXRpdmVEYXRhKSB7CisrICAgIGlmICghZC0+aXNEZWxldGluZ0NoaWxkcmVuICYmIGQtPmRlY2xh cmF0aXZlRGF0YSkgeworICAgICAgICAgaWYgKHN0YXRpY19jYXN0PFFBYnN0cmFjdERlY2xhcmF0 aXZlRGF0YUltcGwqPihkLT5kZWNsYXJhdGl2ZURhdGEpLT5vd25lZEJ5UW1sMSkgeworICAgICAg ICAgICAgIGlmIChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmRlc3Ryb3llZF9xbWwxKQorICAg ICAgICAgICAgICAgICBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmRlc3Ryb3llZF9xbWwxKGQt PmRlY2xhcmF0aXZlRGF0YSwgdGhpcyk7CitAQCAtMTU4MCw3ICsxNTgwLDcgQEAgdm9pZCBRT2Jq ZWN0Ojptb3ZlVG9UaHJlYWQoUVRocmVhZCAqdGFyZ2V0VGhyZWFkKQorIAorICAgICBRVGhyZWFk RGF0YSAqY3VycmVudERhdGEgPSBRVGhyZWFkRGF0YTo6Y3VycmVudCgpOworICAgICBRVGhyZWFk RGF0YSAqdGFyZ2V0RGF0YSA9IHRhcmdldFRocmVhZCA/IFFUaHJlYWREYXRhOjpnZXQyKHRhcmdl dFRocmVhZCkgOiBudWxscHRyOworLSAgICBRVGhyZWFkRGF0YSAqdGhpc1RocmVhZERhdGEgPSBk LT50aHJlYWREYXRhLmxvYWRSZWxheGVkKCk7CisrICAgIFFUaHJlYWREYXRhICp0aGlzVGhyZWFk RGF0YSA9IGQtPnRocmVhZERhdGEubG9hZEFjcXVpcmUoKTsKKyAgICAgaWYgKCF0aGlzVGhyZWFk RGF0YS0+dGhyZWFkLmxvYWRBY3F1aXJlKCkgJiYgY3VycmVudERhdGEgPT0gdGFyZ2V0RGF0YSkg eworICAgICAgICAgLy8gb25lIGV4Y2VwdGlvbiB0byB0aGUgcnVsZTogd2UgYWxsb3cgbW92aW5n IG9iamVjdHMgd2l0aCBubyB0aHJlYWQgYWZmaW5pdHkgdG8gdGhlIGN1cnJlbnQgdGhyZWFkCisg ICAgICAgICBjdXJyZW50RGF0YSA9IGQtPnRocmVhZERhdGE7CitAQCAtMjYyMCw3ICsyNjIwLDcg QEAgaW50IFFPYmplY3Q6OnJlY2VpdmVycyhjb25zdCBjaGFyICpzaWduYWwpIGNvbnN0CisgICAg ICAgICBpZiAoIWQtPmlzU2lnbmFsQ29ubmVjdGVkKHNpZ25hbF9pbmRleCkpCisgICAgICAgICAg ICAgcmV0dXJuIHJlY2VpdmVyczsKKyAKKy0gICAgICAgIGlmIChkLT5kZWNsYXJhdGl2ZURhdGEg JiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMpIHsKKysgICAgICAgIGlmICgh ZC0+aXNEZWxldGluZ0NoaWxkcmVuICYmIGQtPmRlY2xhcmF0aXZlRGF0YSAmJiBRQWJzdHJhY3RE ZWNsYXJhdGl2ZURhdGE6OnJlY2VpdmVycykgeworICAgICAgICAgICAgIHJlY2VpdmVycyArPSBR QWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnJlY2VpdmVycyhkLT5kZWNsYXJhdGl2ZURhdGEsIHRo aXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpZ25hbF9pbmRleCk7CisgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0X3AuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJu ZWwvcW9iamVjdF9wLmgKK2luZGV4IDBiODI3YTUyY2EuLjEzZmZiODg5OTkgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3RfcC5oCisrKysgYi9xdGJhc2Uvc3Jj L2NvcmVsaWIva2VybmVsL3FvYmplY3RfcC5oCitAQCAtNDQ0LDcgKzQ0NCw3IEBAIGlubGluZSB2 b2lkIFFPYmplY3RQcml2YXRlOjpjaGVja0ZvckluY29tcGF0aWJsZUxpYnJhcnlWZXJzaW9uKGlu dCB2ZXJzaW9uKSBjb25zCisgCisgaW5saW5lIGJvb2wgUU9iamVjdFByaXZhdGU6OmlzRGVjbGFy YXRpdmVTaWduYWxDb25uZWN0ZWQodWludCBzaWduYWxfaW5kZXgpIGNvbnN0CisgeworLSAgICBy ZXR1cm4gZGVjbGFyYXRpdmVEYXRhICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6aXNTaWdu YWxDb25uZWN0ZWQKKysgICAgcmV0dXJuICFpc0RlbGV0aW5nQ2hpbGRyZW4gJiYgZGVjbGFyYXRp dmVEYXRhICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6aXNTaWduYWxDb25uZWN0ZWQKKyAg ICAgICAgICAgICAmJiBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmlzU2lnbmFsQ29ubmVjdGVk KGRlY2xhcmF0aXZlRGF0YSwgcV9mdW5jKCksIHNpZ25hbF9pbmRleCk7CisgfQorIAorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcXRyYW5zbGF0b3IuY3BwIGIvcXRiYXNl L3NyYy9jb3JlbGliL2tlcm5lbC9xdHJhbnNsYXRvci5jcHAKK2luZGV4IDI4MTJmZmI3ZWEuLmJj MDE3N2M1ZWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3F0cmFuc2xh dG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xdHJhbnNsYXRvci5jcHAK K0BAIC05MDIsNyArOTAyLDcgQEAgc3RhdGljIFFTdHJpbmcgZ2V0TWVzc2FnZShjb25zdCB1Y2hh ciAqbSwgY29uc3QgdWNoYXIgKmVuZCwgY29uc3QgY2hhciAqY29udGV4dCwKKyAgICAgICAgICAg ICBnb3RvIGVuZDsKKyAgICAgICAgIGNhc2UgVGFnX1RyYW5zbGF0aW9uOiB7CisgICAgICAgICAg ICAgaW50IGxlbiA9IHJlYWQzMihtKTsKKy0gICAgICAgICAgICBpZiAobGVuICUgMSkKKysgICAg ICAgICAgICBpZiAobGVuICYgMSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsK KyAgICAgICAgICAgICBtICs9IDQ7CisgICAgICAgICAgICAgaWYgKCFudW1lcnVzLS0pIHsKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UuY3Bw IGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlLmNwcAoraW5kZXgg OWRlMjJjZWYzMy4uZmY4NjhhMzI2OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9t aW1ldHlwZXMvcW1pbWVkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1l dHlwZXMvcW1pbWVkYXRhYmFzZS5jcHAKK0BAIC0zODksMjAgKzM4OSwyMyBAQCBRTWltZVR5cGUg UU1pbWVEYXRhYmFzZVByaXZhdGU6Om1pbWVUeXBlRm9yRmlsZU5hbWVBbmREYXRhKGNvbnN0IFFT dHJpbmcgJmZpbGVOYQorICAgICAgICAgLy8gRGlzYW1iaWd1YXRlIGNvbmZsaWN0aW5nIGV4dGVu c2lvbnMgKGlmIG1hZ2ljIG1hdGNoaW5nIGZvdW5kIHNvbWV0aGluZykKKyAgICAgICAgIGlmIChj YW5kaWRhdGVCeURhdGEuaXNWYWxpZCgpICYmIG1hZ2ljQWNjdXJhY3kgPiAwKSB7CisgICAgICAg ICAgICAgY29uc3QgUVN0cmluZyBzbmlmZmVkTWltZSA9IGNhbmRpZGF0ZUJ5RGF0YS5uYW1lKCk7 CistICAgICAgICAgICAgLy8gSWYgdGhlIHNuaWZmZWRNaW1lIG1hdGNoZXMgYSBnbG9iIG1hdGNo LCB1c2UgaXQKKysgICAgICAgICAgICAvLyBJZiB0aGUgc25pZmZlZE1pbWUgbWF0Y2hlcyBhIGhp Z2hlc3Qtd2VpZ2h0IGdsb2IgbWF0Y2gsIHVzZSBpdAorICAgICAgICAgICAgIGlmIChjYW5kaWRh dGVzQnlOYW1lLm1fbWF0Y2hpbmdNaW1lVHlwZXMuY29udGFpbnMoc25pZmZlZE1pbWUpKSB7Cisg ICAgICAgICAgICAgICAgICphY2N1cmFjeVB0ciA9IDEwMDsKKyAgICAgICAgICAgICAgICAgcmV0 dXJuIGNhbmRpZGF0ZUJ5RGF0YTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgZm9yIChj b25zdCBRU3RyaW5nICZtIDogcUFzQ29uc3QoY2FuZGlkYXRlc0J5TmFtZS5tX21hdGNoaW5nTWlt ZVR5cGVzKSkgeworKyAgICAgICAgICAgIGZvciAoY29uc3QgUVN0cmluZyAmbSA6IHFBc0NvbnN0 KGNhbmRpZGF0ZXNCeU5hbWUubV9hbGxNYXRjaGluZ01pbWVUeXBlcykpIHsKKyAgICAgICAgICAg ICAgICAgaWYgKGluaGVyaXRzKG0sIHNuaWZmZWRNaW1lKSkgeworICAgICAgICAgICAgICAgICAg ICAgLy8gV2UgaGF2ZSBtYWdpYyArIHBhdHRlcm4gcG9pbnRpbmcgdG8gdGhpcywgc28gaXQncyBh IHByZXR0eSBnb29kIG1hdGNoCisgICAgICAgICAgICAgICAgICAgICAqYWNjdXJhY3lQdHIgPSAx MDA7CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWltZVR5cGVGb3JOYW1lKG0pOworICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICphY2N1cmFjeVB0 ciA9IG1hZ2ljQWNjdXJhY3k7CistICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUJ5RGF0YTsK KysgICAgICAgICAgICBpZiAoY2FuZGlkYXRlc0J5TmFtZS5tX2FsbE1hdGNoaW5nTWltZVR5cGVz LmlzRW1wdHkoKSkgeworKyAgICAgICAgICAgICAgICAvLyBObyBnbG9iLCB1c2UgbWFnaWMKKysg ICAgICAgICAgICAgICAgKmFjY3VyYWN5UHRyID0gbWFnaWNBY2N1cmFjeTsKKysgICAgICAgICAg ICAgICAgcmV0dXJuIGNhbmRpZGF0ZUJ5RGF0YTsKKysgICAgICAgICAgICB9CisgICAgICAgICB9 CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3Ft aW1lZ2xvYnBhdHRlcm4uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWds b2JwYXR0ZXJuLmNwcAoraW5kZXggYTgxMTEyZDIyNy4uZmE4ZjRjNTQ1ZCAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVnbG9icGF0dGVybi5jcHAKKysrKyBi L3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVnbG9icGF0dGVybi5jcHAKK0BAIC04 Myw3ICs4MywxMCBAQCB2b2lkIFFNaW1lR2xvYk1hdGNoUmVzdWx0OjphZGRNYXRjaChjb25zdCBR U3RyaW5nICZtaW1lVHlwZSwgaW50IHdlaWdodCwgY29uc3QgUQorICAgICB9CisgICAgIGlmICgh bV9tYXRjaGluZ01pbWVUeXBlcy5jb250YWlucyhtaW1lVHlwZSkpIHsKKyAgICAgICAgIG1fbWF0 Y2hpbmdNaW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKy0gICAgICAgIG1fYWxsTWF0Y2hpbmdN aW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKysgICAgICAgIGlmIChyZXBsYWNlKQorKyAgICAg ICAgICAgIG1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMucHJlcGVuZChtaW1lVHlwZSk7IC8vIGhpZ2hl c3Qtd2VpZ2h0IGZpcnN0CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgbV9hbGxNYXRjaGlu Z01pbWVUeXBlcy5hcHBlbmQobWltZVR5cGUpOworICAgICAgICAgbV9rbm93blN1ZmZpeExlbmd0 aCA9IGtub3duU3VmZml4TGVuZ3RoOworICAgICB9CisgfQorQEAgLTk0LDcgKzk3LDcgQEAgUU1p bWVHbG9iUGF0dGVybjo6UGF0dGVyblR5cGUgUU1pbWVHbG9iUGF0dGVybjo6ZGV0ZWN0UGF0dGVy blR5cGUoY29uc3QgUVN0cmluZworICAgICBpZiAoIXBhdHRlcm5MZW5ndGgpCisgICAgICAgICBy ZXR1cm4gT3RoZXJQYXR0ZXJuOworIAorLSAgICBjb25zdCBib29sIHN0YXJDb3VudCA9IHBhdHRl cm4uY291bnQoUUxhdGluMUNoYXIoJyonKSkgPT0gMTsKKysgICAgY29uc3QgaW50IHN0YXJDb3Vu dCA9IHBhdHRlcm4uY291bnQoUUxhdGluMUNoYXIoJyonKSk7CisgICAgIGNvbnN0IGJvb2wgaGFz U3F1YXJlQnJhY2tldCA9IHBhdHRlcm4uaW5kZXhPZihRTGF0aW4xQ2hhcignWycpKSAhPSAtMTsK KyAgICAgY29uc3QgYm9vbCBoYXNRdWVzdGlvbk1hcmsgPSBwYXR0ZXJuLmluZGV4T2YoUUxhdGlu MUNoYXIoJz8nKSkgIT0gLTE7CisgCitAQCAtMTA2LDEwICsxMDksMTAgQEAgUU1pbWVHbG9iUGF0 dGVybjo6UGF0dGVyblR5cGUgUU1pbWVHbG9iUGF0dGVybjo6ZGV0ZWN0UGF0dGVyblR5cGUoY29u c3QgUVN0cmluZworICAgICAgICAgICAgIC8vIFBhdHRlcm5zIGxpa2UgIlJFQURNRSoiICh3ZWxs IHRoaXMgaXMgY3VycmVudGx5IHRoZSBvbmx5IG9uZSBsaWtlIHRoYXQuLi4pCisgICAgICAgICAg ICAgaWYgKHBhdHRlcm4uYXQocGF0dGVybkxlbmd0aCAtIDEpID09IFFMYXRpbjFDaGFyKCcqJykp CisgICAgICAgICAgICAgICAgIHJldHVybiBQcmVmaXhQYXR0ZXJuOworLSAgICAgICAgfQorLSAg ICAgICAgLy8gTmFtZXMgd2l0aG91dCBhbnkgd2lsZGNhcmRzIGxpa2UgIlJFQURNRSIKKy0gICAg ICAgIGlmIChzdGFyQ291bnQgPT0gMCkKKysgICAgICAgIH0gZWxzZSBpZiAoc3RhckNvdW50ID09 IDApIHsKKysgICAgICAgICAgICAvLyBOYW1lcyB3aXRob3V0IGFueSB3aWxkY2FyZHMgbGlrZSAi UkVBRE1FIgorICAgICAgICAgICAgIHJldHVybiBMaXRlcmFsUGF0dGVybjsKKysgICAgICAgIH0K KyAgICAgfQorIAorICAgICBpZiAocGF0dGVybiA9PSBRTGF0aW4xU3RyaW5nKCJbMC05XVswLTld WzAtOV0udmRyIikpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9x bWltZXByb3ZpZGVyLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVwcm92 aWRlci5jcHAKK2luZGV4IDI1OGRkZGY4Y2IuLjQ2NDJkMGYyZDAgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lcHJvdmlkZXIuY3BwCisrKysgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lcHJvdmlkZXIuY3BwCitAQCAtMjQ0LDE1ICsyNDQs MTggQEAgdm9pZCBRTWltZUJpbmFyeVByb3ZpZGVyOjphZGRGaWxlTmFtZU1hdGNoZXMoY29uc3Qg UVN0cmluZyAmZmlsZU5hbWUsIFFNaW1lR2xvYk0KKyAgICAgY29uc3QgUVN0cmluZyBsb3dlckZp bGVOYW1lID0gZmlsZU5hbWUudG9Mb3dlcigpOworICAgICAvLyBDaGVjayBsaXRlcmFscyAoZS5n LiAiTWFrZWZpbGUiKQorICAgICBtYXRjaEdsb2JMaXN0KHJlc3VsdCwgbV9jYWNoZUZpbGUsIG1f Y2FjaGVGaWxlLT5nZXRVaW50MzIoUG9zTGl0ZXJhbExpc3RPZmZzZXQpLCBmaWxlTmFtZSk7Cist ICAgIC8vIENoZWNrIGNvbXBsZXggZ2xvYnMgKGUuZy4gImNhbGxncmluZC5vdXRbMC05XSoiKQor LSAgICBtYXRjaEdsb2JMaXN0KHJlc3VsdCwgbV9jYWNoZUZpbGUsIG1fY2FjaGVGaWxlLT5nZXRV aW50MzIoUG9zR2xvYkxpc3RPZmZzZXQpLCBmaWxlTmFtZSk7CisgICAgIC8vIENoZWNrIHRoZSB2 ZXJ5IGNvbW1vbiAqLnR4dCBjYXNlcyB3aXRoIHRoZSBzdWZmaXggdHJlZQorLSAgICBjb25zdCBp bnQgcmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc1Jl dmVyc2VTdWZmaXhUcmVlT2Zmc2V0KTsKKy0gICAgY29uc3QgaW50IG51bVJvb3RzID0gbV9jYWNo ZUZpbGUtPmdldFVpbnQzMihyZXZlcnNlU3VmZml4VHJlZU9mZnNldCk7CistICAgIGNvbnN0IGlu dCBmaXJzdFJvb3RPZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKHJldmVyc2VTdWZmaXhU cmVlT2Zmc2V0ICsgNCk7CistICAgIG1hdGNoU3VmZml4VHJlZShyZXN1bHQsIG1fY2FjaGVGaWxl LCBudW1Sb290cywgZmlyc3RSb290T2Zmc2V0LCBsb3dlckZpbGVOYW1lLCBsb3dlckZpbGVOYW1l Lmxlbmd0aCgpIC0gMSwgZmFsc2UpOworKyAgICBpZiAocmVzdWx0Lm1fbWF0Y2hpbmdNaW1lVHlw ZXMuaXNFbXB0eSgpKSB7CisrICAgICAgICBjb25zdCBpbnQgcmV2ZXJzZVN1ZmZpeFRyZWVPZmZz ZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc1JldmVyc2VTdWZmaXhUcmVlT2Zmc2V0KTsK KysgICAgICAgIGNvbnN0IGludCBudW1Sb290cyA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIocmV2 ZXJzZVN1ZmZpeFRyZWVPZmZzZXQpOworKyAgICAgICAgY29uc3QgaW50IGZpcnN0Um9vdE9mZnNl dCA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQgKyA0KTsK KysgICAgICAgIG1hdGNoU3VmZml4VHJlZShyZXN1bHQsIG1fY2FjaGVGaWxlLCBudW1Sb290cywg Zmlyc3RSb290T2Zmc2V0LCBsb3dlckZpbGVOYW1lLCBsb3dlckZpbGVOYW1lLmxlbmd0aCgpIC0g MSwgZmFsc2UpOworKyAgICAgICAgaWYgKHJlc3VsdC5tX21hdGNoaW5nTWltZVR5cGVzLmlzRW1w dHkoKSkKKysgICAgICAgICAgICBtYXRjaFN1ZmZpeFRyZWUocmVzdWx0LCBtX2NhY2hlRmlsZSwg bnVtUm9vdHMsIGZpcnN0Um9vdE9mZnNldCwgZmlsZU5hbWUsIGZpbGVOYW1lLmxlbmd0aCgpIC0g MSwgdHJ1ZSk7CisrICAgIH0KKysgICAgLy8gQ2hlY2sgY29tcGxleCBnbG9icyAoZS5nLiAiY2Fs bGdyaW5kLm91dFswLTldKiIgb3IgIlJFQURNRSoiKQorICAgICBpZiAocmVzdWx0Lm1fbWF0Y2hp bmdNaW1lVHlwZXMuaXNFbXB0eSgpKQorLSAgICAgICAgbWF0Y2hTdWZmaXhUcmVlKHJlc3VsdCwg bV9jYWNoZUZpbGUsIG51bVJvb3RzLCBmaXJzdFJvb3RPZmZzZXQsIGZpbGVOYW1lLCBmaWxlTmFt ZS5sZW5ndGgoKSAtIDEsIHRydWUpOworKyAgICAgICAgbWF0Y2hHbG9iTGlzdChyZXN1bHQsIG1f Y2FjaGVGaWxlLCBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc0dsb2JMaXN0T2Zmc2V0KSwgZmls ZU5hbWUpOworIH0KKyAKKyB2b2lkIFFNaW1lQmluYXJ5UHJvdmlkZXI6Om1hdGNoR2xvYkxpc3Qo UU1pbWVHbG9iTWF0Y2hSZXN1bHQgJnJlc3VsdCwgQ2FjaGVGaWxlICpjYWNoZUZpbGUsIGludCBv ZmYsIGNvbnN0IFFTdHJpbmcgJmZpbGVOYW1lKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29y ZWxpYi9zZXJpYWxpemF0aW9uL3Fqc29ucGFyc2VyLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9z ZXJpYWxpemF0aW9uL3Fqc29ucGFyc2VyLmNwcAoraW5kZXggMTdlNmYxMTFhYi4uMmU0MGI2Yzhm YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3Fqc29ucGFy c2VyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcWpzb25wYXJz ZXIuY3BwCitAQCAtMzc5LDEwICszNzksMzAgQEAgZXJyb3I6CisgICAgIHJldHVybiBRQ2JvclZh bHVlKCk7CisgfQorIAorKy8vIFdlIG5lZWQgdG8gcmV0YWluIHRoZSBfbGFzdF8gdmFsdWUgZm9y IGFueSBkdXBsaWNhdGUga2V5cyBhbmQgd2UgbmVlZCB0byBkZXJlZiBjb250YWluZXJzLgorKy8v IFRoZXJlZm9yZSB0aGUgbWFudWFsIGltcGxlbWVudGF0aW9uIG9mIHN0ZDo6dW5pcXVlKCkuCisr dGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIENvbXBhcmUsIHR5cGVuYW1lIEFz c2lnbj4KKytzdGF0aWMgSXRlcmF0b3IgY3VzdG9tQXNzaWduaW5nVW5pcXVlTGFzdChJdGVyYXRv ciBmaXJzdCwgSXRlcmF0b3IgbGFzdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBDb21wYXJlIGNvbXBhcmUsIEFzc2lnbiBhc3NpZ24pCisreworKyAgICBmaXJz dCA9IHN0ZDo6YWRqYWNlbnRfZmluZChmaXJzdCwgbGFzdCwgY29tcGFyZSk7CisrICAgIGlmIChm aXJzdCA9PSBsYXN0KQorKyAgICAgICAgcmV0dXJuIGxhc3Q7CisrCisrICAgIEl0ZXJhdG9yIHJl c3VsdCA9IGZpcnN0OworKyAgICB3aGlsZSAoKytmaXJzdCAhPSBsYXN0KSB7CisrICAgICAgICBp ZiAoIWNvbXBhcmUoKnJlc3VsdCwgKmZpcnN0KSkKKysgICAgICAgICAgICArK3Jlc3VsdDsKKysg ICAgICAgIGlmIChyZXN1bHQgIT0gZmlyc3QpCisrICAgICAgICAgICAgYXNzaWduKCpyZXN1bHQs ICpmaXJzdCk7CisrICAgIH0KKysKKysgICAgcmV0dXJuICsrcmVzdWx0OworK30KKysKKyBzdGF0 aWMgdm9pZCBzb3J0Q29udGFpbmVyKFFDYm9yQ29udGFpbmVyUHJpdmF0ZSAqY29udGFpbmVyKQor IHsKKyAgICAgdXNpbmcgRm9yd2FyZCA9IFFKc29uUHJpdmF0ZTo6S2V5SXRlcmF0b3I7CistICAg IHVzaW5nIFJldmVyc2UgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Rm9yd2FyZD47CisgICAgIHVz aW5nIFZhbHVlID0gRm9yd2FyZDo6dmFsdWVfdHlwZTsKKyAKKyAgICAgYXV0byBjb21wYXJlID0g W2NvbnRhaW5lcl0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKQorQEAgLTQyMCwxNyAr NDQwLDMxIEBAIHN0YXRpYyB2b2lkIHNvcnRDb250YWluZXIoUUNib3JDb250YWluZXJQcml2YXRl ICpjb250YWluZXIpCisgICAgICAgICB9CisgICAgIH07CisgCistICAgIHN0ZDo6c29ydChGb3J3 YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSksIEZvcndhcmQoY29udGFpbmVyLT5lbGVt ZW50cy5lbmQoKSksCistICAgICAgICAgICAgICBbJmNvbXBhcmVdKGNvbnN0IFZhbHVlICZhLCBj b25zdCBWYWx1ZSAmYikgeyByZXR1cm4gY29tcGFyZShhLCBiKSA8IDA7IH0pOworKyAgICAvLyBU aGUgZWxlbWVudHMnIGNvbnRhaW5lcnMgYXJlIG93bmVkIGJ5IHRoZSBvdXRlciBjb250YWluZXIs IG5vdCBieSB0aGUgZWxlbWVudHMgdGhlbXNlbHZlcy4KKysgICAgYXV0byBtb3ZlID0gW10oRm9y d2FyZDo6cmVmZXJlbmNlIHRhcmdldCwgRm9yd2FyZDo6cmVmZXJlbmNlIHNvdXJjZSkKKysgICAg eworKyAgICAgICAgUXRDYm9yOjpFbGVtZW50ICZ0YXJnZXRWYWx1ZSA9IHRhcmdldC52YWx1ZSgp OworKworKyAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBoYXMgYSBjb250YWluZXIsIGRlcmVmIGl0 IGJlZm9yZSBvdmVyd3JpdGluZywgc28gdGhhdCB3ZSBkb24ndCBsZWFrLgorKyAgICAgICAgaWYg KHRhcmdldFZhbHVlLmZsYWdzICYgUXRDYm9yOjpFbGVtZW50OjpJc0NvbnRhaW5lcikKKysgICAg ICAgICAgICB0YXJnZXRWYWx1ZS5jb250YWluZXItPmRlcmVmKCk7CisrCisrICAgICAgICAvLyBE byBub3QgbW92ZSwgc28gdGhhdCB3ZSBjYW4gY2xlYXIgdGhlIHZhbHVlIGFmdGVyd2FyZHMuCisr ICAgICAgICB0YXJnZXQgPSBzb3VyY2U7CisrCisrICAgICAgICAvLyBDbGVhciB0aGUgc291cmNl IHZhbHVlLCBzbyB0aGF0IHdlIGRvbid0IHN0b3JlIHRoZSBzYW1lIGNvbnRhaW5lciB0d2ljZS4K KysgICAgICAgIHNvdXJjZS52YWx1ZSgpID0gUXRDYm9yOjpFbGVtZW50KCk7CisrICAgIH07Cisr CisrICAgIHN0ZDo6c3RhYmxlX3NvcnQoCisrICAgICAgICAgICAgICAgIEZvcndhcmQoY29udGFp bmVyLT5lbGVtZW50cy5iZWdpbigpKSwgRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmVuZCgp KSwKKysgICAgICAgICAgICAgICAgWyZjb21wYXJlXShjb25zdCBWYWx1ZSAmYSwgY29uc3QgVmFs dWUgJmIpIHsgcmV0dXJuIGNvbXBhcmUoYSwgYikgPCAwOyB9KTsKKyAKKy0gICAgLy8gV2UgbmVl ZCB0byByZXRhaW4gdGhlIF9sYXN0XyB2YWx1ZSBmb3IgYW55IGR1cGxpY2F0ZSBrZXlzLiBUaGVy ZWZvcmUgdGhlIHJldmVyc2UgZGFuY2UgaGVyZS4KKy0gICAgYXV0byBpdCA9IHN0ZDo6dW5pcXVl KFJldmVyc2UoY29udGFpbmVyLT5lbGVtZW50cy5lbmQoKSksIFJldmVyc2UoY29udGFpbmVyLT5l bGVtZW50cy5iZWdpbigpKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIFsmY29tcGFyZV0o Y29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7CistICAgICAgICByZXR1cm4gY29tcGFy ZShhLCBiKSA9PSAwOworLSAgICB9KS5iYXNlKCkuZWxlbWVudHNJdGVyYXRvcigpOworKyAgICBG b3J3YXJkIHJlc3VsdCA9IGN1c3RvbUFzc2lnbmluZ1VuaXF1ZUxhc3QoCisrICAgICAgICAgICAg ICAgIEZvcndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5iZWdpbigpKSwgIEZvcndhcmQoY29udGFp bmVyLT5lbGVtZW50cy5lbmQoKSksCisrICAgICAgICAgICAgICAgIFsmY29tcGFyZV0oY29uc3Qg VmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7IHJldHVybiBjb21wYXJlKGEsIGIpID09IDA7IH0s IG1vdmUpOworIAorLSAgICAvLyBUaGUgZXJhc2UgZnJvbSBiZWdpbm5pbmcgaXMgZXhwZW5zaXZl IGJ1dCBob3BlZnVsbHkgcmFyZS4KKy0gICAgY29udGFpbmVyLT5lbGVtZW50cy5lcmFzZShjb250 YWluZXItPmVsZW1lbnRzLmJlZ2luKCksIGl0KTsKKysgICAgY29udGFpbmVyLT5lbGVtZW50cy5l cmFzZShyZXN1bHQuZWxlbWVudHNJdGVyYXRvcigpLCBjb250YWluZXItPmVsZW1lbnRzLmVuZCgp KTsKKyB9CisgCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRp b24vcXhtbHN0cmVhbS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xeG1s c3RyZWFtLmNwcAoraW5kZXggYjJmODQ2NTQ0ZC4uN2NkNDU3YmEzYSAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3F4bWxzdHJlYW0uY3BwCisrKysgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xeG1sc3RyZWFtLmNwcAorQEAgLTk4MCw3ICs5 ODAsNyBAQCBpbmxpbmUgdWludCBRWG1sU3RyZWFtUmVhZGVyUHJpdmF0ZTo6cGVla0NoYXIoKQor IGJvb2wgUVhtbFN0cmVhbVJlYWRlclByaXZhdGU6OnNjYW5VbnRpbChjb25zdCBjaGFyICpzdHIs IHNob3J0IHRva2VuVG9JbmplY3QpCisgeworICAgICBpbnQgcG9zID0gdGV4dEJ1ZmZlci5zaXpl KCk7CistICAgIGludCBvbGRMaW5lTnVtYmVyID0gbGluZU51bWJlcjsKKysgICAgY29uc3QgYXV0 byBvbGRMaW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAKKyAgICAgdWludCBjOworICAgICB3aGls ZSAoKGMgPSBnZXRDaGFyKCkpICE9IFN0cmVhbUVPRikgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvY29yZWxpYi90ZXh0L3FzdHJpbmcuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0 cmluZy5jcHAKK2luZGV4IDNlODhhYjQ4NTkuLjhkZWVhZTQ3YmIgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5nLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGli L3RleHQvcXN0cmluZy5jcHAKK0BAIC0xMjMxMiw3ICsxMjMxMiw3IEBAIHN0YXRpYyBxc2l6ZXR5 cGUgcUxhc3RJbmRleE9mKEhheXN0YWNrIGhheXN0YWNrMCwgcXNpemV0eXBlIGZyb20sCisgICAg IGNvbnN0IGF1dG8gbmVlZGxlID0gbmVlZGxlMC5kYXRhKCk7CisgICAgIGNvbnN0IGF1dG8gKmVu ZCA9IGhheXN0YWNrOworICAgICBoYXlzdGFjayArPSBmcm9tOworLSAgICBjb25zdCBzdGQ6OnNp emVfdCBzbF9taW51c18xID0gc2wgLSAxOworKyAgICBjb25zdCBzdGQ6OnNpemVfdCBzbF9taW51 c18xID0gc2wgPyBzbCAtIDEgOiAwOworICAgICBjb25zdCBhdXRvICpuID0gbmVlZGxlICsgc2xf bWludXNfMTsKKyAgICAgY29uc3QgYXV0byAqaCA9IGhheXN0YWNrICsgc2xfbWludXNfMTsKKyAg ICAgc3RkOjpzaXplX3QgaGFzaE5lZWRsZSA9IDAsIGhhc2hIYXlzdGFjayA9IDA7CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZ2l0ZXJhdG9yX3AuaCBiL3F0YmFz ZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmdpdGVyYXRvcl9wLmgKK2luZGV4IDIxOTU4OWI2ZTQu LjFkMGM2NmNjNzggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5n aXRlcmF0b3JfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5naXRlcmF0 b3JfcC5oCitAQCAtNjEsNiArNjEsOCBAQCBjbGFzcyBRU3RyaW5nSXRlcmF0b3IKKyB7CisgICAg IFFTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yIGksIHBvcywgZTsKKyAgICAgUV9TVEFUSUNfQVNTRVJU KChzdGQ6OmlzX3NhbWU8UVN0cmluZzo6Y29uc3RfaXRlcmF0b3IsIGNvbnN0IFFDaGFyICo+Ojp2 YWx1ZSkpOworKyAgICBzdGF0aWMgYm9vbCBsZXNzKGNvbnN0IFFDaGFyICpsaHMsIGNvbnN0IFFD aGFyICpyaHMpIG5vZXhjZXB0CisrICAgIHsgcmV0dXJuIHN0ZDo6bGVzczxRU3RyaW5nOjpjb25z dF9pdGVyYXRvcj57fShsaHMsIHJocyk7IH0KKyBwdWJsaWM6CisgICAgIGV4cGxpY2l0IFFTdHJp bmdJdGVyYXRvcihRU3RyaW5nVmlldyBzdHJpbmcsIHFzaXpldHlwZSBpZHggPSAwKQorICAgICAg ICAgOiBpKHN0cmluZy5iZWdpbigpKSwKK0BAIC05NSw3ICs5Nyw4IEBAIHB1YmxpYzoKKyAKKyAg ICAgaW5saW5lIHZvaWQgc2V0UG9zaXRpb24oUVN0cmluZzo6Y29uc3RfaXRlcmF0b3IgcG9zaXRp b24pCisgICAgIHsKKy0gICAgICAgIFFfQVNTRVJUX1goaSA8PSBwb3NpdGlvbiAmJiBwb3NpdGlv biA8PSBlLCBRX0ZVTkNfSU5GTywgInBvc2l0aW9uIG91dCBvZiBib3VuZHMiKTsKKysgICAgICAg IFFfQVNTRVJUX1goIWxlc3MocG9zaXRpb24sIGkpICYmICFsZXNzKGUsIHBvc2l0aW9uKSwKKysg ICAgICAgICAgICAgICAgICAgUV9GVU5DX0lORk8sICJwb3NpdGlvbiBvdXQgb2YgYm91bmRzIik7 CisgICAgICAgICBwb3MgPSBwb3NpdGlvbjsKKyAgICAgfQorIAorQEAgLTEwMyw3ICsxMDYsNyBA QCBwdWJsaWM6CisgCisgICAgIGlubGluZSBib29sIGhhc05leHQoKSBjb25zdAorICAgICB7Cist ICAgICAgICByZXR1cm4gcG9zIDwgZTsKKysgICAgICAgIHJldHVybiBsZXNzKHBvcywgZSk7Cisg ICAgIH0KKyAKKyAgICAgaW5saW5lIHZvaWQgYWR2YW5jZSgpCitAQCAtMTIwLDE2ICsxMjMsMjAg QEAgcHVibGljOgorICAgICB7CisgICAgICAgICBRX0FTU0VSVF9YKGhhc05leHQoKSwgUV9GVU5D X0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBuZXh0IGl0ZW0iKTsKKyAKKy0gICAgICAgIGlmIChR X1VOTElLRUxZKChwb3MrKyktPmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChRX1VO TElLRUxZKChwb3MrKyktPmlzSGlnaFN1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNT RVJUKGhhc05leHQoKSAmJiBwb3MtPmlzTG93U3Vycm9nYXRlKCkpOworICAgICAgICAgICAgICsr cG9zOworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIGlubGluZSB1aW50IHBlZWtOZXh0VW5j aGVja2VkKCkgY29uc3QKKyAgICAgeworICAgICAgICAgUV9BU1NFUlRfWChoYXNOZXh0KCksIFFf RlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgbmV4dCBpdGVtIik7CisgCistICAgICAgICBp ZiAoUV9VTkxJS0VMWShwb3MtPmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChRX1VO TElLRUxZKHBvcy0+aXNIaWdoU3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NFUlQo bGVzcyhwb3MgKyAxLCBlKSAmJiBwb3NbMV0uaXNMb3dTdXJyb2dhdGUoKSk7CisgICAgICAgICAg ICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQocG9zWzBdLCBwb3NbMV0pOworKyAgICAg ICAgfQorIAorICAgICAgICAgcmV0dXJuIHBvcy0+dW5pY29kZSgpOworICAgICB9CitAQCAtMTU1 LDggKzE2MiwxMCBAQCBwdWJsaWM6CisgICAgICAgICBRX0FTU0VSVF9YKGhhc05leHQoKSwgUV9G VU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBuZXh0IGl0ZW0iKTsKKyAKKyAgICAgICAgIGNv bnN0IFFDaGFyIGN1ciA9ICpwb3MrKzsKKy0gICAgICAgIGlmIChRX1VOTElLRUxZKGN1ci5pc0hp Z2hTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWShjdXIuaXNIaWdoU3Vycm9n YXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NFUlQoaGFzTmV4dCgpICYmIHBvcy0+aXNMb3dT dXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQo Y3VyLCAqcG9zKyspOworKyAgICAgICAgfQorICAgICAgICAgcmV0dXJuIGN1ci51bmljb2RlKCk7 CisgICAgIH0KKyAKK0BAIC0xNjYsNyArMTc1LDcgQEAgcHVibGljOgorIAorICAgICAgICAgY29u c3QgUUNoYXIgdWMgPSAqcG9zKys7CisgICAgICAgICBpZiAoUV9VTkxJS0VMWSh1Yy5pc1N1cnJv Z2F0ZSgpKSkgeworLSAgICAgICAgICAgIGlmIChRX0xJS0VMWSh1Yy5pc0hpZ2hTdXJyb2dhdGUo KSAmJiBwb3MgPCBlICYmIHBvcy0+aXNMb3dTdXJyb2dhdGUoKSkpCisrICAgICAgICAgICAgaWYg KFFfTElLRUxZKHVjLmlzSGlnaFN1cnJvZ2F0ZSgpICYmIGhhc05leHQoKSAmJiBwb3MtPmlzTG93 U3Vycm9nYXRlKCkpKQorICAgICAgICAgICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRv VWNzNCh1YywgKnBvcysrKTsKKyAgICAgICAgICAgICByZXR1cm4gaW52YWxpZEFzOworICAgICAg ICAgfQorQEAgLTE3OCw3ICsxODcsNyBAQCBwdWJsaWM6CisgCisgICAgIGlubGluZSBib29sIGhh c1ByZXZpb3VzKCkgY29uc3QKKyAgICAgeworLSAgICAgICAgcmV0dXJuIHBvcyA+IGk7CisrICAg ICAgICByZXR1cm4gbGVzcyhpLCBwb3MpOworICAgICB9CisgCisgICAgIGlubGluZSB2b2lkIHJl Y2VkZSgpCitAQCAtMTk2LDE2ICsyMDUsMjAgQEAgcHVibGljOgorICAgICB7CisgICAgICAgICBR X0FTU0VSVF9YKGhhc1ByZXZpb3VzKCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEg cHJldmlvdXMgaXRlbSIpOworIAorLSAgICAgICAgaWYgKFFfVU5MSUtFTFkoKC0tcG9zKS0+aXNM b3dTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWSgoLS1wb3MpLT5pc0xvd1N1 cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJUKGhhc1ByZXZpb3VzKCkgJiYgcG9z Wy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgLS1wb3M7CisrICAgICAgICB9 CisgICAgIH0KKyAKKyAgICAgaW5saW5lIHVpbnQgcGVla1ByZXZpb3VzVW5jaGVja2VkKCkgY29u c3QKKyAgICAgeworICAgICAgICAgUV9BU1NFUlRfWChoYXNQcmV2aW91cygpLCBRX0ZVTkNfSU5G TywgIml0ZXJhdG9yIGhhc24ndCBhIHByZXZpb3VzIGl0ZW0iKTsKKyAKKy0gICAgICAgIGlmIChR X1VOTElLRUxZKHBvc1stMV0uaXNMb3dTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJ S0VMWShwb3NbLTFdLmlzTG93U3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NFUlQo bGVzcyhpICsgMSwgcG9zKSAmJiBwb3NbLTJdLmlzSGlnaFN1cnJvZ2F0ZSgpKTsKKyAgICAgICAg ICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNChwb3NbLTJdLCBwb3NbLTFdKTsKKysg ICAgICAgIH0KKyAgICAgICAgIHJldHVybiBwb3NbLTFdLnVuaWNvZGUoKTsKKyAgICAgfQorIAor QEAgLTIzMCw4ICsyNDMsMTAgQEAgcHVibGljOgorICAgICAgICAgUV9BU1NFUlRfWChoYXNQcmV2 aW91cygpLCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIHByZXZpb3VzIGl0ZW0iKTsK KyAKKyAgICAgICAgIGNvbnN0IFFDaGFyIGN1ciA9ICotLXBvczsKKy0gICAgICAgIGlmIChRX1VO TElLRUxZKGN1ci5pc0xvd1N1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZKGN1 ci5pc0xvd1N1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJUKGhhc1ByZXZpb3Vz KCkgJiYgcG9zWy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgcmV0dXJuIFFD aGFyOjpzdXJyb2dhdGVUb1VjczQoKi0tcG9zLCBjdXIpOworKyAgICAgICAgfQorICAgICAgICAg cmV0dXJuIGN1ci51bmljb2RlKCk7CisgICAgIH0KKyAKK0BAIC0yNDEsNyArMjU2LDcgQEAgcHVi bGljOgorIAorICAgICAgICAgY29uc3QgUUNoYXIgdWMgPSAqLS1wb3M7CisgICAgICAgICBpZiAo UV9VTkxJS0VMWSh1Yy5pc1N1cnJvZ2F0ZSgpKSkgeworLSAgICAgICAgICAgIGlmIChRX0xJS0VM WSh1Yy5pc0xvd1N1cnJvZ2F0ZSgpICYmIHBvcyA+IGkgJiYgcG9zWy0xXS5pc0hpZ2hTdXJyb2dh dGUoKSkpCisrICAgICAgICAgICAgaWYgKFFfTElLRUxZKHVjLmlzTG93U3Vycm9nYXRlKCkgJiYg aGFzUHJldmlvdXMoKSAmJiBwb3NbLTFdLmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKyAgICAgICAgICAg ICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQoKi0tcG9zLCB1Yyk7CisgICAgICAg ICAgICAgcmV0dXJuIGludmFsaWRBczsKKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRleF9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFk L3FmdXRleF9wLmgKK2luZGV4IGYyODdiNzUyZDcuLmUyOTQ1Mzc3ODcgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRleF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvY29y ZWxpYi90aHJlYWQvcWZ1dGV4X3AuaAorQEAgLTUyLDYgKzUyLDcgQEAKKyAvLworIAorICNpbmNs dWRlIDxxZ2xvYmFsLmg+CisrI2luY2x1ZGUgPFF0Q29yZS9xdHNhbl9pbXBsLmg+CisgCisgUVRf QkVHSU5fTkFNRVNQQUNFCisgCitAQCAtMTA2LDE2ICsxMDcsMTMgQEAgbmFtZXNwYWNlIFF0TGlu dXhGdXRleCB7CisgICAgIGlubGluZSBpbnQgX3FfZnV0ZXgoaW50ICphZGRyLCBpbnQgb3AsIGlu dCB2YWwsIHF1aW50cHRyIHZhbDIgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCAq YWRkcjIgPSBudWxscHRyLCBpbnQgdmFsMyA9IDApIG5vZXhjZXB0CisgICAgIHsKKy0gICAgICAg IC8vIEEgZnV0ZXggY2FsbCBlbnN1cmVzIHRvdGFsIG9yZGVyaW5nIG9uIHRoZSBmdXRleCB3b3Jk cworLSAgICAgICAgLy8gKGluIGVpdGhlciBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgdGhlIGNhbGwp LiBJbnN0cnVjdCBUU0FOIGFjY29yZGluZ2x5LAorLSAgICAgICAgLy8gYXMgVFNBTiBkb2VzIG5v dCB1bmRlcnN0YW5kIHRoZSBmdXRleCgyKSBzeXNjYWxsLgorLSAgICAgICAgX3FfdHNhbl9yZWxl YXNlKGFkZHIsIGFkZHIyKTsKKysgICAgICAgIFF0VHNhbjo6ZnV0ZXhSZWxlYXNlKGFkZHIsIGFk ZHIyKTsKKyAKKyAgICAgICAgIC8vIHdlIHVzZSBfX05SX2Z1dGV4IGJlY2F1c2Ugc29tZSBsaWJj cyAobGlrZSBBbmRyb2lkJ3MgYmlvbmljKSBkb24ndAorICAgICAgICAgLy8gcHJvdmlkZSBTWVNf ZnV0ZXggZXRjLgorICAgICAgICAgaW50IHJlc3VsdCA9IHN5c2NhbGwoX19OUl9mdXRleCwgYWRk ciwgb3AgfCBGVVRFWF9QUklWQVRFX0ZMQUcsIHZhbCwgdmFsMiwgYWRkcjIsIHZhbDMpOworIAor LSAgICAgICAgX3FfdHNhbl9hY3F1aXJlKGFkZHIsIGFkZHIyKTsKKysgICAgICAgIFF0VHNhbjo6 ZnV0ZXhBY3F1aXJlKGFkZHIsIGFkZHIyKTsKKyAKKyAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg ICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5jcHAg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5jcHAKK2luZGV4IDMxMGQxY2IxNGYu LjcwOTcxMjJkOGUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRl eC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmNwcAorQEAgLTE1 Miw2ICsxNTIsNyBAQCBwdWJsaWM6CisgCisgLyohCisgICAgIFxlbnVtIFFNdXRleDo6UmVjdXJz aW9uTW9kZQorKyAgICBcb2Jzb2xldGUgVXNlIFFSZWN1cnNpdmVNdXRleCB0byBjcmVhdGUgYSBy ZWN1cnNpdmUgbXV0ZXguCisgCisgICAgIFx2YWx1ZSBSZWN1cnNpdmUgIEluIHRoaXMgbW9kZSwg YSB0aHJlYWQgY2FuIGxvY2sgdGhlIHNhbWUgbXV0ZXgKKyAgICAgICAgICAgICAgICAgICAgICAg bXVsdGlwbGUgdGltZXMgYW5kIHRoZSBtdXRleCB3b24ndCBiZSB1bmxvY2tlZAorQEAgLTE3Myw2 ICsxNzQsNyBAQCBwdWJsaWM6CisgCisgLyohCisgICAgIENvbnN0cnVjdHMgYSBuZXcgbXV0ZXgu IFRoZSBtdXRleCBpcyBjcmVhdGVkIGluIGFuIHVubG9ja2VkIHN0YXRlLgorKyAgICBcb2Jzb2xl dGUgVXNlIFFSZWN1cnNpdmVNdXRleCB0byBjcmVhdGUgYSByZWN1cnNpdmUgbXV0ZXguCisgCisg ICAgIElmIFxhIG1vZGUgaXMgUU11dGV4OjpSZWN1cnNpdmUsIGEgdGhyZWFkIGNhbiBsb2NrIHRo ZSBzYW1lIG11dGV4CisgICAgIG11bHRpcGxlIHRpbWVzIGFuZCB0aGUgbXV0ZXggd29uJ3QgYmUg dW5sb2NrZWQgdW50aWwgYQorQEAgLTE5Nyw3ICsxOTksNyBAQCBRTXV0ZXg6OlFNdXRleChSZWN1 cnNpb25Nb2RlIG1vZGUpCisgUU11dGV4Ojp+UU11dGV4KCkKKyB7CisgICAgIFFNdXRleERhdGEg KmQgPSBkX3B0ci5sb2FkUmVsYXhlZCgpOworLSAgICBpZiAoaXNSZWN1cnNpdmUoKSkgeworKyAg ICBpZiAoUUJhc2ljTXV0ZXg6OmlzUmVjdXJzaXZlKCkpIHsKKyAgICAgICAgIGRlbGV0ZSBzdGF0 aWNfY2FzdDxRUmVjdXJzaXZlTXV0ZXhQcml2YXRlICo+KGQpOworICAgICB9IGVsc2UgaWYgKGQp IHsKKyAjaWZuZGVmIFFUX0xJTlVYX0ZVVEVYCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3Jl bGliL3RocmVhZC9xbXV0ZXguaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmgK K2luZGV4IDczYzllMDA2NjMuLjFiYWU1NzNhMDMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGhyZWFkL3FtdXRleC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3Ft dXRleC5oCitAQCAtNDIsNiArNDIsNyBAQAorIAorICNpbmNsdWRlIDxRdENvcmUvcWdsb2JhbC5o PgorICNpbmNsdWRlIDxRdENvcmUvcWF0b21pYy5oPgorKyNpbmNsdWRlIDxRdENvcmUvcXRzYW5f aW1wbC5oPgorICNpbmNsdWRlIDxuZXc+CisgCisgI2lmIF9faGFzX2luY2x1ZGUoPGNocm9ubz4p CitAQCAtNzcsMTkgKzc4LDM3IEBAIHB1YmxpYzoKKyAKKyAgICAgLy8gQmFzaWNMb2NrYWJsZSBj b25jZXB0CisgICAgIGlubGluZSB2b2lkIGxvY2soKSBRVF9NVVRFWF9MT0NLX05PRVhDRVBUIHsK KysgICAgICAgIFF0VHNhbjo6bXV0ZXhQcmVMb2NrKHRoaXMsIDB1KTsKKysKKyAgICAgICAgIGlm ICghZmFzdFRyeUxvY2soKSkKKyAgICAgICAgICAgICBsb2NrSW50ZXJuYWwoKTsKKysKKysgICAg ICAgIFF0VHNhbjo6bXV0ZXhQb3N0TG9jayh0aGlzLCAwdSwgMCk7CisgICAgIH0KKyAKKyAgICAg Ly8gQmFzaWNMb2NrYWJsZSBjb25jZXB0CisgICAgIGlubGluZSB2b2lkIHVubG9jaygpIG5vZXhj ZXB0IHsKKyAgICAgICAgIFFfQVNTRVJUKGRfcHRyLmxvYWRSZWxheGVkKCkpOyAvL211dGV4IG11 c3QgYmUgbG9ja2VkCisrCisrICAgICAgICBRdFRzYW46Om11dGV4UHJlVW5sb2NrKHRoaXMsIDB1 KTsKKysKKyAgICAgICAgIGlmICghZmFzdFRyeVVubG9jaygpKQorICAgICAgICAgICAgIHVubG9j a0ludGVybmFsKCk7CisrCisrICAgICAgICBRdFRzYW46Om11dGV4UG9zdFVubG9jayh0aGlzLCAw dSk7CisgICAgIH0KKyAKKyAgICAgYm9vbCB0cnlMb2NrKCkgbm9leGNlcHQgeworLSAgICAgICAg cmV0dXJuIGZhc3RUcnlMb2NrKCk7CisrICAgICAgICB1bnNpZ25lZCB0c2FuRmxhZ3MgPSBRdFRz YW46OlRyeUxvY2s7CisrICAgICAgICBRdFRzYW46Om11dGV4UHJlTG9jayh0aGlzLCB0c2FuRmxh Z3MpOworKworKyAgICAgICAgY29uc3QgYm9vbCBzdWNjZXNzID0gZmFzdFRyeUxvY2soKTsKKysK KysgICAgICAgIGlmICghc3VjY2VzcykKKysgICAgICAgICAgICB0c2FuRmxhZ3MgfD0gUXRUc2Fu OjpUcnlMb2NrRmFpbGVkOworKyAgICAgICAgUXRUc2FuOjptdXRleFBvc3RMb2NrKHRoaXMsIHRz YW5GbGFncywgMCk7CisrCisrICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICAgfQorIAorICAg ICAvLyBMb2NrYWJsZSBjb25jZXB0CitAQCAtMTM0LDggKzE1MywxNiBAQCBwdWJsaWM6CisgI2Vs c2UKKyAgICAgUU11dGV4KCkgeyBkX3B0ci5zdG9yZVJlbGF4ZWQobnVsbHB0cik7IH0KKyAjZW5k aWYKKysjaWYgUVRfREVQUkVDQVRFRF9TSU5DRSg1LDE1KQorICAgICBlbnVtIFJlY3Vyc2lvbk1v ZGUgeyBOb25SZWN1cnNpdmUsIFJlY3Vyc2l2ZSB9OworKyAgICBRVF9ERVBSRUNBVEVEX1ZFUlNJ T05fWCg1LCAxNSwgIlVzZSBRUmVjdXJzaXZlTXV0ZXggaW5zdGVhZCBvZiBhIHJlY3Vyc2l2ZSBR TXV0ZXgiKQorICAgICBleHBsaWNpdCBRTXV0ZXgoUmVjdXJzaW9uTW9kZSBtb2RlKTsKKysKKysg ICAgUVRfREVQUkVDQVRFRF9WRVJTSU9OX1goNSwgMTUsICJVc2UgUVJlY3Vyc2l2ZU11dGV4IGlu c3RlYWQgb2YgYSByZWN1cnNpdmUgUU11dGV4IikKKysgICAgYm9vbCBpc1JlY3Vyc2l2ZSgpIGNv bnN0IG5vZXhjZXB0CisrICAgIHsgcmV0dXJuIFFCYXNpY011dGV4Ojppc1JlY3Vyc2l2ZSgpOyB9 CisrI2VuZGlmCisrCisgICAgIH5RTXV0ZXgoKTsKKyAKKyAgICAgLy8gQmFzaWNMb2NrYWJsZSBj b25jZXB0CitAQCAtMTY2LDkgKzE5Myw2IEBAIHB1YmxpYzoKKyAgICAgfQorICNlbmRpZgorIAor LSAgICBib29sIGlzUmVjdXJzaXZlKCkgY29uc3Qgbm9leGNlcHQKKy0gICAgeyByZXR1cm4gUUJh c2ljTXV0ZXg6OmlzUmVjdXJzaXZlKCk7IH0KKy0KKyBwcml2YXRlOgorICAgICBRX0RJU0FCTEVf Q09QWShRTXV0ZXgpCisgICAgIGZyaWVuZCBjbGFzcyBRTXV0ZXhMb2NrZXI7CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xcmVhZHdyaXRlbG9jay5jcHAgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvdGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNwcAoraW5kZXggOGMyODUwN2Q1YS4u OWRkODUwMzExNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXJlYWR3 cml0ZWxvY2suY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FyZWFkd3JpdGVs b2NrLmNwcAorQEAgLTE1NSw3ICsxNTUsNyBAQCBRUmVhZFdyaXRlTG9jazo6UVJlYWRXcml0ZUxv Y2soUmVjdXJzaW9uTW9kZSByZWN1cnNpb25Nb2RlKQorICovCisgUVJlYWRXcml0ZUxvY2s6On5R UmVhZFdyaXRlTG9jaygpCisgeworLSAgICBhdXRvIGQgPSBkX3B0ci5sb2FkUmVsYXhlZCgpOwor KyAgICBhdXRvIGQgPSBkX3B0ci5sb2FkQWNxdWlyZSgpOworICAgICBpZiAoaXNVbmNvbnRlbmRl ZExvY2tlZChkKSkgeworICAgICAgICAgcVdhcm5pbmcoIlFSZWFkV3JpdGVMb2NrOiBkZXN0cm95 aW5nIGxvY2tlZCBRUmVhZFdyaXRlTG9jayIpOworICAgICAgICAgcmV0dXJuOworQEAgLTQ0NSw3 ICs0NDUsNyBAQCB2b2lkIFFSZWFkV3JpdGVMb2NrOjp1bmxvY2soKQorIC8qISBcaW50ZXJuYWwg IEhlbHBlciBmb3IgUVdhaXRDb25kaXRpb246OndhaXQgKi8KKyBRUmVhZFdyaXRlTG9jazo6U3Rh dGVGb3JXYWl0Q29uZGl0aW9uIFFSZWFkV3JpdGVMb2NrOjpzdGF0ZUZvcldhaXRDb25kaXRpb24o KSBjb25zdAorIHsKKy0gICAgUVJlYWRXcml0ZUxvY2tQcml2YXRlICpkID0gZF9wdHIubG9hZFJl bGF4ZWQoKTsKKysgICAgUVJlYWRXcml0ZUxvY2tQcml2YXRlICpkID0gZF9wdHIubG9hZEFjcXVp cmUoKTsKKyAgICAgc3dpdGNoIChxdWludHB0cihkKSAmIFN0YXRlTWFzaykgeworICAgICBjYXNl IFN0YXRlTG9ja2VkRm9yUmVhZDogcmV0dXJuIExvY2tlZEZvclJlYWQ7CisgICAgIGNhc2UgU3Rh dGVMb2NrZWRGb3JXcml0ZTogcmV0dXJuIExvY2tlZEZvcldyaXRlOworQEAgLTQ1Myw2ICs0NTMs NyBAQCBRUmVhZFdyaXRlTG9jazo6U3RhdGVGb3JXYWl0Q29uZGl0aW9uIFFSZWFkV3JpdGVMb2Nr OjpzdGF0ZUZvcldhaXRDb25kaXRpb24oKSBjbworIAorICAgICBpZiAoIWQpCisgICAgICAgICBy ZXR1cm4gVW5sb2NrZWQ7CisrICAgIGNvbnN0IGF1dG8gbG9jayA9IHF0X3Njb3BlZF9sb2NrKGQt Pm11dGV4KTsKKyAgICAgaWYgKGQtPndyaXRlckNvdW50ID4gMSkKKyAgICAgICAgIHJldHVybiBS ZWN1cnNpdmVseUxvY2tlZDsKKyAgICAgZWxzZSBpZiAoZC0+d3JpdGVyQ291bnQgPT0gMSkKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FzZW1hcGhvcmUuY3BwIGIvcXRi YXNlL3NyYy9jb3JlbGliL3RocmVhZC9xc2VtYXBob3JlLmNwcAoraW5kZXggMWQwMWZjMWIyOC4u M2VjZGVlMzc0NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXNlbWFw aG9yZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXNlbWFwaG9yZS5jcHAK K0BAIC0zNTQsNyArMzU0LDEyIEBAIHZvaWQgUVNlbWFwaG9yZTo6cmVsZWFzZShpbnQgbikKKyAg ICAgICAgIHF1aW50cHRyIG5uID0gdW5zaWduZWQobik7CisgICAgICAgICBpZiAoZnV0ZXhIYXNX YWl0ZXJDb3VudCkKKyAgICAgICAgICAgICBubiB8PSBxdWludDY0KG5uKSA8PCAzMjsgICAgLy8g dG9rZW4gY291bnQgcmVwbGljYXRlZCBpbiBoaWdoIHdvcmQKKy0gICAgICAgIHF1aW50cHRyIHBy ZXZWYWx1ZSA9IHUuZmV0Y2hBbmRBZGRSZWxlYXNlKG5uKTsKKysgICAgICAgIHF1aW50cHRyIHBy ZXZWYWx1ZSA9IHUubG9hZFJlbGF4ZWQoKTsKKysgICAgICAgIHF1aW50cHRyIG5ld1ZhbHVlOwor KyAgICAgICAgZG8geyAvLyBsb29wIGp1c3QgdG8gZW5zdXJlIHRoZSBvcGVyYXRpb25zIGFyZSBk b25lIGF0b21pY2FsbHkKKysgICAgICAgICAgICBuZXdWYWx1ZSA9IHByZXZWYWx1ZSArIG5uOwor KyAgICAgICAgICAgIG5ld1ZhbHVlICY9IChmdXRleE5lZWRzV2FrZUFsbEJpdCAtIDEpOworKyAg ICAgICAgfSB3aGlsZSAoIXUudGVzdEFuZFNldFJlbGVhc2UocHJldlZhbHVlLCBuZXdWYWx1ZSwg cHJldlZhbHVlKSk7CisgICAgICAgICBpZiAoZnV0ZXhOZWVkc1dha2UocHJldlZhbHVlKSkgewor ICNpZmRlZiBGVVRFWF9PUAorICAgICAgICAgICAgIGlmIChmdXRleEhhc1dhaXRlckNvdW50KSB7 CitAQCAtMzc2LDcgKzM4MSw2IEBAIHZvaWQgUVNlbWFwaG9yZTo6cmVsZWFzZShpbnQgbikKKyAg ICAgICAgICAgICAgICAgcXVpbnQzMiBvcGFyZyA9IDA7CisgICAgICAgICAgICAgICAgIHF1aW50 MzIgY21wID0gRlVURVhfT1BfQ01QX05FOworICAgICAgICAgICAgICAgICBxdWludDMyIGNtcGFy ZyA9IDA7CistICAgICAgICAgICAgICAgIHUuZmV0Y2hBbmRBbmRSZWxlYXNlKGZ1dGV4TmVlZHNX YWtlQWxsQml0IC0gMSk7CisgICAgICAgICAgICAgICAgIGZ1dGV4V2FrZU9wKCpmdXRleExvdzMy KCZ1KSwgbiwgSU5UX01BWCwgKmZ1dGV4SGlnaDMyKCZ1KSwgRlVURVhfT1Aob3AsIG9wYXJnLCBj bXAsIGNtcGFyZykpOworICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgfQor QEAgLTM4OCw3ICszOTIsNiBAQCB2b2lkIFFTZW1hcGhvcmU6OnJlbGVhc2UoaW50IG4pCisgICAg ICAgICAgICAgLy8gICAgaXRzIGFjcXVpc2l0aW9uIGFueXdheSwgc28gaXQgaGFzIHRvIHdhaXQ7 CisgICAgICAgICAgICAgLy8gMikgaXQgZGlkIG5vdCBzZWUgdGhlIG5ldyBjb3VudGVyIHZhbHVl LCBpbiB3aGljaCBjYXNlIGl0cworICAgICAgICAgICAgIC8vICAgIGZ1dGV4V2FpdCB3aWxsIGZh aWwuCistICAgICAgICAgICAgdS5mZXRjaEFuZEFuZFJlbGVhc2UoZnV0ZXhOZWVkc1dha2VBbGxC aXQgLSAxKTsKKyAgICAgICAgICAgICBpZiAoZnV0ZXhIYXNXYWl0ZXJDb3VudCkgeworICAgICAg ICAgICAgICAgICBmdXRleFdha2VBbGwoKmZ1dGV4TG93MzIoJnUpKTsKKyAgICAgICAgICAgICAg ICAgZnV0ZXhXYWtlQWxsKCpmdXRleEhpZ2gzMigmdSkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFk L3F0aHJlYWRfcC5oCitpbmRleCBiMmQxNjI4ZTZlLi5mMzJmNmYwNDYwIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3AuaAorKysrIGIvcXRiYXNlL3NyYy9j b3JlbGliL3RocmVhZC9xdGhyZWFkX3AuaAorQEAgLTE3NCw3ICsxNzQsNyBAQCBwdWJsaWM6Cisg ICAgIGludCByZXR1cm5Db2RlOworIAorICAgICB1aW50IHN0YWNrU2l6ZTsKKy0gICAgUVRocmVh ZDo6UHJpb3JpdHkgcHJpb3JpdHk7CisrICAgIHN0ZDo6dW5kZXJseWluZ190eXBlPFFUaHJlYWQ6 OlByaW9yaXR5Pjo6dHlwZSBwcmlvcml0eTsKKyAKKyAgICAgc3RhdGljIFFUaHJlYWQgKnRocmVh ZEZvcklkKGludCBpZCk7CisgCitAQCAtMjEzLDYgKzIxMywxMyBAQCBwdWJsaWM6CisgICAgICAg ICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6aW5zdGFuY2UoKS0+cG9zdEV2ZW50KHFfcHRyLCBuZXcg UUV2ZW50KFFFdmVudDo6UXVpdCkpOworICAgICAgICAgfQorICAgICB9CisrCisrI2lmbmRlZiBR X09TX0lOVEVHUklUWQorK3ByaXZhdGU6CisrICAgIC8vIFVzZWQgaW4gUVRocmVhZChQcml2YXRl KTo6c3RhcnQgdG8gYXZvaWQgcmFjeSBhY2Nlc3MgdG8gUU9iamVjdDo6b2JqZWN0TmFtZSwKKysg ICAgLy8gdW5zZXQgYWZ0ZXJ3YXJkcy4gT24gSU5URUdSSVRZIHdlIHNldCB0aGUgdGhyZWFkIG5h bWUgYmVmb3JlIHN0YXJ0aW5nIGl0LgorKyAgICBRU3RyaW5nIG9iamVjdE5hbWU7CisrI2VuZGlm CisgfTsKKyAKKyAjZWxzZSAvLyBRVF9DT05GSUcodGhyZWFkKQorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF91bml4LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxp Yi90aHJlYWQvcXRocmVhZF91bml4LmNwcAoraW5kZXggNTZhOGUwYTAzOC4uNjEwMTE3YTY0MCAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF91bml4LmNwcAor KysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3VuaXguY3BwCitAQCAtMTY5 LDggKzE2OSw3IEBAIHN0YXRpYyB2b2lkIHNldF90aHJlYWRfZGF0YShRVGhyZWFkRGF0YSAqZGF0 YSkKKyAKKyBzdGF0aWMgdm9pZCBjbGVhcl90aHJlYWRfZGF0YSgpCisgeworLSAgICBjdXJyZW50 VGhyZWFkRGF0YSA9IG51bGxwdHI7CistICAgIHB0aHJlYWRfc2V0c3BlY2lmaWMoY3VycmVudF90 aHJlYWRfZGF0YV9rZXksIG51bGxwdHIpOworKyAgICBzZXRfdGhyZWFkX2RhdGEobnVsbHB0cik7 CisgfQorIAorIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorQEAgLTI5Niw3ICsyOTUsNyBAQCB2b2lk ICpRVGhyZWFkUHJpdmF0ZTo6c3RhcnQodm9pZCAqYXJnKQorICAgICAgICAgICAgIFFNdXRleExv Y2tlciBsb2NrZXIoJnRoci0+ZF9mdW5jKCktPm11dGV4KTsKKyAKKyAgICAgICAgICAgICAvLyBk byB3ZSBuZWVkIHRvIHJlc2V0IHRoZSB0aHJlYWQgcHJpb3JpdHk/CistICAgICAgICAgICAgaWYg KGludCh0aHItPmRfZnVuYygpLT5wcmlvcml0eSkgJiBUaHJlYWRQcmlvcml0eVJlc2V0RmxhZykg eworKyAgICAgICAgICAgIGlmICh0aHItPmRfZnVuYygpLT5wcmlvcml0eSAmIFRocmVhZFByaW9y aXR5UmVzZXRGbGFnKSB7CisgICAgICAgICAgICAgICAgIHRoci0+ZF9mdW5jKCktPnNldFByaW9y aXR5KFFUaHJlYWQ6OlByaW9yaXR5KHRoci0+ZF9mdW5jKCktPnByaW9yaXR5ICYgflRocmVhZFBy aW9yaXR5UmVzZXRGbGFnKSk7CisgICAgICAgICAgICAgfQorIAorQEAgLTMxNiwxMCArMzE1LDEw IEBAIHZvaWQgKlFUaHJlYWRQcml2YXRlOjpzdGFydCh2b2lkICphcmcpCisgICAgICAgICAgICAg Ly8gU2V0cyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCB0aHJlYWQuIFdlIGNhbiBvbmx5IGRvIHRo aXMKKyAgICAgICAgICAgICAvLyB3aGVuIHRoZSB0aHJlYWQgaXMgc3RhcnRpbmcsIGFzIHdlIGRv bid0IGhhdmUgYSBjcm9zcworICAgICAgICAgICAgIC8vIHBsYXRmb3JtIHdheSBvZiBzZXR0aW5n IHRoZSBuYW1lIG9mIGFuIGFyYml0cmFyeSB0aHJlYWQuCistICAgICAgICAgICAgaWYgKFFfTElL RUxZKHRoci0+b2JqZWN0TmFtZSgpLmlzRW1wdHkoKSkpCisrICAgICAgICAgICAgaWYgKFFfTElL RUxZKHRoci0+ZF9mdW5jKCktPm9iamVjdE5hbWUuaXNFbXB0eSgpKSkKKyAgICAgICAgICAgICAg ICAgc2V0Q3VycmVudFRocmVhZE5hbWUodGhyLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpKTsK KyAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIHNldEN1cnJlbnRUaHJlYWROYW1l KHRoci0+b2JqZWN0TmFtZSgpLnRvTG9jYWw4Qml0KCkpOworKyAgICAgICAgICAgICAgICBzZXRD dXJyZW50VGhyZWFkTmFtZShzdGQ6OmV4Y2hhbmdlKHRoci0+ZF9mdW5jKCktPm9iamVjdE5hbWUs IHt9KS50b0xvY2FsOEJpdCgpKTsKKyAgICAgICAgIH0KKyAjZW5kaWYKKyAKK0BAIC02NzEsNyAr NjcwLDcgQEAgdm9pZCBRVGhyZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0eSkKKyAgICAgICAg ICAgICAgICAgLy8gY291bGQgbm90IHNldCBzY2hlZHVsaW5nIGhpbnRzLCBmYWxsYmFjayB0byBp bmhlcml0aW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgLy8gd2UnbGwgdHJ5IGFnYWluIGZyb20g aW5zaWRlIHRoZSB0aHJlYWQKKyAgICAgICAgICAgICAgICAgcHRocmVhZF9hdHRyX3NldGluaGVy aXRzY2hlZCgmYXR0ciwgUFRIUkVBRF9JTkhFUklUX1NDSEVEKTsKKy0gICAgICAgICAgICAgICAg ZC0+cHJpb3JpdHkgPSBQcmlvcml0eShwcmlvcml0eSB8IFRocmVhZFByaW9yaXR5UmVzZXRGbGFn KTsKKysgICAgICAgICAgICAgICAgZC0+cHJpb3JpdHkgPSBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVy bHlpbmdfdHlwZTxRVGhyZWFkOjpQcmlvcml0eT46OnR5cGU+KHByaW9yaXR5KSB8IFRocmVhZFBy aW9yaXR5UmVzZXRGbGFnOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgIH0KK0BAIC03MDIsNyArNzAxLDEwIEBAIHZvaWQgUVRocmVhZDo6c3RhcnQoUHJpb3Jp dHkgcHJpb3JpdHkpCisgICAgICAgICBwdGhyZWFkX2F0dHJfc2V0dGhyZWFkbmFtZSgmYXR0ciwg bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKSk7CisgICAgIGVsc2UKKyAgICAgICAgIHB0aHJlYWRf YXR0cl9zZXR0aHJlYWRuYW1lKCZhdHRyLCBvYmplY3ROYW1lKCkudG9Mb2NhbDhCaXQoKSk7Cisr I2Vsc2UKKysgICAgZC0+b2JqZWN0TmFtZSA9IG9iamVjdE5hbWUoKTsKKyAjZW5kaWYKKysKKyAg ICAgcHRocmVhZF90IHRocmVhZElkOworICAgICBpbnQgY29kZSA9IHB0aHJlYWRfY3JlYXRlKCZ0 aHJlYWRJZCwgJmF0dHIsIFFUaHJlYWRQcml2YXRlOjpzdGFydCwgdGhpcyk7CisgICAgIGlmIChj b2RlID09IEVQRVJNKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9x dGhyZWFkX3dpbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfd2luLmNw cAoraW5kZXggYmM3MGUzMTc4YS4uNGU3Njk3MjQ5OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Y29yZWxpYi90aHJlYWQvcXRocmVhZF93aW4uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv dGhyZWFkL3F0aHJlYWRfd2luLmNwcAorQEAgLTM5NCwxMCArMzk0LDkgQEAgdW5zaWduZWQgaW50 IF9fc3RkY2FsbCBRVF9FTlNVUkVfU1RBQ0tfQUxJR05FRF9GT1JfU1NFIFFUaHJlYWRQcml2YXRl OjpzdGFydCh2b2kKKyAKKyAjaWYgIWRlZmluZWQoUVRfTk9fREVCVUcpICYmIGRlZmluZWQoUV9D Q19NU1ZDKSAmJiAhZGVmaW5lZChRX09TX1dJTlJUKQorICAgICAvLyBzZXRzIHRoZSBuYW1lIG9m IHRoZSBjdXJyZW50IHRocmVhZC4KKy0gICAgUUJ5dGVBcnJheSBvYmplY3ROYW1lID0gdGhyLT5v YmplY3ROYW1lKCkudG9Mb2NhbDhCaXQoKTsKKy0gICAgcXRfc2V0X3RocmVhZF9uYW1lKEhBTkRM RSgtMSksCistICAgICAgICAgICAgICAgICAgICAgICBvYmplY3ROYW1lLmlzRW1wdHkoKSA/Cist ICAgICAgICAgICAgICAgICAgICAgICB0aHItPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkgOiBv YmplY3ROYW1lLmNvbnN0RGF0YSgpKTsKKysgICAgcXRfc2V0X3RocmVhZF9uYW1lKEhBTkRMRSgt MSksIHRoci0+ZF9mdW5jKCktPm9iamVjdE5hbWUuaXNFbXB0eSgpCisrICAgICAgICAgICAgICAg ICAgICAgICAgPyB0aHItPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkKKysgICAgICAgICAgICAg ICAgICAgICAgICA6IHN0ZDo6ZXhjaGFuZ2UodGhyLT5kX2Z1bmMoKS0+b2JqZWN0TmFtZSwge30p LnRvTG9jYWw4Qml0KCkuY29uc3REYXRhKCkpOworICNlbmRpZgorIAorICAgICBlbWl0IHRoci0+ c3RhcnRlZChRVGhyZWFkOjpRUHJpdmF0ZVNpZ25hbCgpKTsKK0BAIC01MDMsNiArNTAyLDcgQEAg dm9pZCBRVGhyZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0eSkKKyAgICAgaWYgKGQtPnJ1bm5p bmcpCisgICAgICAgICByZXR1cm47CisgCisrICAgIGQtPm9iamVjdE5hbWUgPSBvYmplY3ROYW1l KCk7CisgICAgIGQtPnJ1bm5pbmcgPSB0cnVlOworICAgICBkLT5maW5pc2hlZCA9IGZhbHNlOwor ICAgICBkLT5leGl0ZWQgPSBmYWxzZTsKK0BAIC01NDgsNyArNTQ4LDcgQEAgdm9pZCBRVGhyZWFk OjpzdGFydChQcmlvcml0eSBwcmlvcml0eSkKKyAKKyAgICAgaW50IHByaW87CisgICAgIGQtPnBy aW9yaXR5ID0gcHJpb3JpdHk7CistICAgIHN3aXRjaCAoZC0+cHJpb3JpdHkpIHsKKysgICAgc3dp dGNoIChwcmlvcml0eSkgeworICAgICBjYXNlIElkbGVQcmlvcml0eToKKyAgICAgICAgIHByaW8g PSBUSFJFQURfUFJJT1JJVFlfSURMRTsKKyAgICAgICAgIGJyZWFrOworQEAgLTY4Niw3ICs2ODYs NyBAQCB2b2lkIFFUaHJlYWRQcml2YXRlOjpzZXRQcmlvcml0eShRVGhyZWFkOjpQcmlvcml0eSB0 aHJlYWRQcmlvcml0eSkKKyAKKyAgICAgaW50IHByaW87CisgICAgIHByaW9yaXR5ID0gdGhyZWFk UHJpb3JpdHk7CistICAgIHN3aXRjaCAocHJpb3JpdHkpIHsKKysgICAgc3dpdGNoICh0aHJlYWRQ cmlvcml0eSkgeworICAgICBjYXNlIFFUaHJlYWQ6OklkbGVQcmlvcml0eToKKyAgICAgICAgIHBy aW8gPSBUSFJFQURfUFJJT1JJVFlfSURMRTsKKyAgICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRzYW5faW1wbC5oIGIvcXRiYXNlL3NyYy9jb3Jl bGliL3RocmVhZC9xdHNhbl9pbXBsLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwMDAwLi41ODBhNzM4YjkxCistLS0gL2Rldi9udWxsCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvdGhyZWFkL3F0c2FuX2ltcGwuaAorQEAgLTAsMCArMSwxMTUgQEAKKysvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uLgor KyoqIENvcHlyaWdodCAoQykgMjAyMiBLbGFyw6RsdmRhbGVucyBEYXRha29uc3VsdCBBQiwgYSBL REFCIEdyb3VwIGNvbXBhbnksIGluZm9Aa2RhYi5jb20sIGF1dGhvciBHaXVzZXBwZSBEJ0FuZ2Vs byA8Z2l1c2VwcGUuZGFuZ2Vsb0BrZGFiLmNvbT4KKysqKiBDb250YWN0OiBodHRwczovL3d3dy5x dC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRDb3Jl IG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkxH UEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcg dmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFj Y29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3 aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdp dGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2Vl biB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNv bmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0 aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cu cXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0 aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0 aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dp bmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0dHBz Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1h eSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJsaWMg TGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJhbAor KyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHByb3Zl ZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVh cmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGluY2x1 ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xs b3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vu c2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisrCisrI2lmbmRlZiBRVFNBTl9JTVBMX0gKKysjZGVmaW5lIFFUU0FO X0lNUExfSAorKworKyNpbmNsdWRlIDxRdENvcmUvcWdsb2JhbC5oPgorKworKyNpZiAoX19oYXNf ZmVhdHVyZSh0aHJlYWRfc2FuaXRpemVyKSB8fCBkZWZpbmVkKF9fU0FOSVRJWkVfVEhSRUFEX18p KSAmJiBfX2hhc19pbmNsdWRlKDxzYW5pdGl6ZXIvdHNhbl9pbnRlcmZhY2UuaD4pCisrIyAgZGVm aW5lIFFUX0JVSUxESU5HX1VOREVSX1RTQU4KKysjICBpbmNsdWRlIDxzYW5pdGl6ZXIvdHNhbl9p bnRlcmZhY2UuaD4KKysjZW5kaWYKKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKytuYW1lc3Bh Y2UgUXRUc2FuIHsKKysjaWZkZWYgUVRfQlVJTERJTkdfVU5ERVJfVFNBTgorK2lubGluZSB2b2lk IGZ1dGV4QWNxdWlyZSh2b2lkICphZGRyLCB2b2lkICphZGRyMiA9IG51bGxwdHIpCisreworKyAg ICAvLyBBIGZ1dGV4IGNhbGwgZW5zdXJlcyB0b3RhbCBvcmRlcmluZyBvbiB0aGUgZnV0ZXggd29y ZHMKKysgICAgLy8gKGluIGVpdGhlciBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgdGhlIGNhbGwpLiBJ bnN0cnVjdCBUU0FOIGFjY29yZGluZ2x5LAorKyAgICAvLyBhcyBUU0FOIGRvZXMgbm90IHVuZGVy c3RhbmQgdGhlIGZ1dGV4KDIpIHN5c2NhbGwgKG9yIGVxdWl2YWxlbnQpLgorKyAgICA6Ol9fdHNh bl9hY3F1aXJlKGFkZHIpOworKyAgICBpZiAoYWRkcjIpCisrICAgICAgICA6Ol9fdHNhbl9hY3F1 aXJlKGFkZHIyKTsKKyt9CisrCisraW5saW5lIHZvaWQgZnV0ZXhSZWxlYXNlKHZvaWQgKmFkZHIs IHZvaWQgKmFkZHIyID0gbnVsbHB0cikKKyt7CisrICAgIGlmIChhZGRyMikKKysgICAgICAgIDo6 X190c2FuX3JlbGVhc2UoYWRkcjIpOworKyAgICA6Ol9fdHNhbl9yZWxlYXNlKGFkZHIpOworK30K KysKKytpbmxpbmUgdm9pZCBtdXRleFByZUxvY2sodm9pZCAqYWRkciwgdW5zaWduZWQgZmxhZ3Mp CisreworKyAgICA6Ol9fdHNhbl9tdXRleF9wcmVfbG9jayhhZGRyLCBmbGFncyk7CisrfQorKwor K2lubGluZSB2b2lkIG11dGV4UG9zdExvY2sodm9pZCAqYWRkciwgdW5zaWduZWQgZmxhZ3MsIGlu dCByZWN1cnNpb24pCisreworKyAgICA6Ol9fdHNhbl9tdXRleF9wb3N0X2xvY2soYWRkciwgZmxh Z3MsIHJlY3Vyc2lvbik7CisrfQorKworK2lubGluZSB2b2lkIG11dGV4UHJlVW5sb2NrKHZvaWQg KmFkZHIsIHVuc2lnbmVkIGZsYWdzKQorK3sKKysgICAgOjpfX3RzYW5fbXV0ZXhfcHJlX3VubG9j ayhhZGRyLCBmbGFncyk7CisrfQorKworK2lubGluZSB2b2lkIG11dGV4UG9zdFVubG9jayh2b2lk ICphZGRyLCB1bnNpZ25lZCBmbGFncykKKyt7CisrICAgIDo6X190c2FuX211dGV4X3Bvc3RfdW5s b2NrKGFkZHIsIGZsYWdzKTsKKyt9CisrCisrZW51bSA6IHVuc2lnbmVkIHsKKysgICAgTXV0ZXhX cml0ZVJlZW50cmFudCA9IDo6X190c2FuX211dGV4X3dyaXRlX3JlZW50cmFudCwKKysgICAgVHJ5 TG9jayA9IDo6X190c2FuX211dGV4X3RyeV9sb2NrLAorKyAgICBUcnlMb2NrRmFpbGVkID0gOjpf X3RzYW5fbXV0ZXhfdHJ5X2xvY2tfZmFpbGVkLAorK307CisrI2Vsc2UKKytpbmxpbmUgdm9pZCBm dXRleEFjcXVpcmUodm9pZCAqLCB2b2lkICogPSBudWxscHRyKSB7fQorK2lubGluZSB2b2lkIGZ1 dGV4UmVsZWFzZSh2b2lkICosIHZvaWQgKiA9IG51bGxwdHIpIHt9CisrCisrZW51bSA6IHVuc2ln bmVkIHsKKysgICAgTXV0ZXhXcml0ZVJlZW50cmFudCwKKysgICAgVHJ5TG9jaywKKysgICAgVHJ5 TG9ja0ZhaWxlZCwKKyt9OworK2lubGluZSB2b2lkIG11dGV4UHJlTG9jayh2b2lkICosIHVuc2ln bmVkKSB7fQorK2lubGluZSB2b2lkIG11dGV4UG9zdExvY2sodm9pZCAqLCB1bnNpZ25lZCwgaW50 KSB7fQorK2lubGluZSB2b2lkIG11dGV4UHJlVW5sb2NrKHZvaWQgKiwgdW5zaWduZWQpIHt9Cisr aW5saW5lIHZvaWQgbXV0ZXhQb3N0VW5sb2NrKHZvaWQgKiwgdW5zaWduZWQpIHt9CisrI2VuZGlm IC8vIFFUX0JVSUxESU5HX1VOREVSX1RTQU4KKyt9IC8vIG5hbWVzcGFjZSBRdFRzYW4KKysKKytR VF9FTkRfTkFNRVNQQUNFCisrCisrI2VuZGlmIC8vIFFUU0FOX0lNUExfSAorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHAgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3BwCitpbmRleCA4OGIw NThmNDEwLi4wZjFkYTRkYzliIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVh ZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVh ZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcAorQEAgLTIxMyw3ICsyMTMsNyBAQCBib29sIFFXYWl0 Q29uZGl0aW9uOjp3YWl0KFFNdXRleCAqbXV0ZXgsIFFEZWFkbGluZVRpbWVyIGRlYWRsaW5lKQor IHsKKyAgICAgaWYgKCEgbXV0ZXgpCisgICAgICAgICByZXR1cm4gZmFsc2U7CistICAgIGlmICht dXRleC0+aXNSZWN1cnNpdmUoKSkgeworKyAgICBpZiAoc3RhdGljX2Nhc3Q8UUJhc2ljTXV0ZXgg Kj4obXV0ZXgpLT5pc1JlY3Vyc2l2ZSgpKSB7CisgICAgICAgICBxV2FybmluZygiUVdhaXRDb25k aXRpb246IGNhbm5vdCB3YWl0IG9uIHJlY3Vyc2l2ZSBtdXRleGVzIik7CisgICAgICAgICByZXR1 cm4gZmFsc2U7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9x ZGF0ZXRpbWUuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcWRhdGV0aW1lLmNwcAoraW5k ZXggZWMxMjU2OWUzZi4uMmMwYjA5ODA3OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxp Yi90aW1lL3FkYXRldGltZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3FkYXRl dGltZS5jcHAKK0BAIC00Myw2ICs0Myw3IEBACisgI2lmIFFUX0NPTkZJRyhkYXRldGltZXBhcnNl cikKKyAjaW5jbHVkZSAicHJpdmF0ZS9xZGF0ZXRpbWVwYXJzZXJfcC5oIgorICNlbmRpZgorKyNp bmNsdWRlIDxwcml2YXRlL3FudW1lcmljX3AuaD4KKyAKKyAjaW5jbHVkZSAicWRhdGFzdHJlYW0u aCIKKyAjaW5jbHVkZSAicXNldC5oIgorQEAgLTE0MjksOSArMTQzMCwxMSBAQCBRRGF0ZSBRRGF0 ZTo6YWRkRGF5cyhxaW50NjQgbmRheXMpIGNvbnN0CisgICAgIGlmIChpc051bGwoKSkKKyAgICAg ICAgIHJldHVybiBRRGF0ZSgpOworIAorLSAgICAvLyBEdWUgdG8gbGltaXRzIG9uIG1pbkpkKCkg YW5kIG1heEpkKCkgd2Uga25vdyB0aGF0IGFueSBvdmVyZmxvdworLSAgICAvLyB3aWxsIGJlIGlu dmFsaWQgYW5kIGNhdWdodCBieSBmcm9tSnVsaWFuRGF5KCkuCistICAgIHJldHVybiBmcm9tSnVs aWFuRGF5KGpkICsgbmRheXMpOworKyAgICBxaW50NjQgcjsKKysgICAgaWYgKFFfVU5MSUtFTFko YWRkX292ZXJmbG93KGpkLCBuZGF5cywgJnIpKSkKKysgICAgICAgIHJldHVybiBRRGF0ZSgpOwor KyAgICBlbHNlCisrICAgICAgICByZXR1cm4gZnJvbUp1bGlhbkRheShyKTsKKyB9CisgCisgLyoh CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lLmNwcCBiL3F0 YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZS5jcHAKK2luZGV4IDAzMDllNDNlNTIuLjNk NDUxNjk2YTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmUu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmUuY3BwCitAQCAtMSw2 ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqCistKiogQ29weXJpZ2h0IChDKSAy MDEzIEpvaG4gTGF5dCA8amxheXRAa2RlLm9yZz4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjAgSm9o biBMYXl0IDxqbGF5dEBrZGUub3JnPgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xp Y2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdENvcmUgbW9kdWxl IG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTk3NSw5ICs5NzUsMTUgQEAgUUxpc3Q8UUJ5dGVBcnJh eT4gUVRpbWVab25lOjp3aW5kb3dzSWRUb0lhbmFJZHMoY29uc3QgUUJ5dGVBcnJheSAmd2luZG93 c0lkLAorIH0KKyAKKyAjaWZuZGVmIFFUX05PX0RBVEFTVFJFQU0KKysvLyBJbnZhbGlkLCBhcyBh biBJQU5BIElEOiB0b28gbG9uZywgc3RhcnRzIHdpdGggLSBhbmQgaGFzIG90aGVyIGludmFsaWQg Y2hhcmFjdGVycyBpbiBpdAorK3N0YXRpYyBpbmxpbmUgUVN0cmluZyBpbnZhbGlkSWQoKSB7IHJl dHVybiBRU3RyaW5nTGl0ZXJhbCgiLU5vIFRpbWUgWm9uZSBTcGVjaWZpZWQhIik7IH0KKysKKyBR RGF0YVN0cmVhbSAmb3BlcmF0b3I8PChRRGF0YVN0cmVhbSAmZHMsIGNvbnN0IFFUaW1lWm9uZSAm dHopCisgeworLSAgICB0ei5kLT5zZXJpYWxpemUoZHMpOworKyAgICBpZiAodHouaXNWYWxpZCgp KQorKyAgICAgICAgdHouZC0+c2VyaWFsaXplKGRzKTsKKysgICAgZWxzZQorKyAgICAgICAgZHMg PDwgaW52YWxpZElkKCk7CisgICAgIHJldHVybiBkczsKKyB9CisgCitAQCAtOTg1LDcgKzk5MSw5 IEBAIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KFFEYXRhU3RyZWFtICZkcywgUVRpbWVab25lICZ0 eikKKyB7CisgICAgIFFTdHJpbmcgaWFuYUlkOworICAgICBkcyA+PiBpYW5hSWQ7CistICAgIGlm IChpYW5hSWQgPT0gUUxhdGluMVN0cmluZygiT2Zmc2V0RnJvbVV0YyIpKSB7CisrICAgIGlmIChp YW5hSWQgPT0gaW52YWxpZElkKCkpIHsKKysgICAgICAgIHR6ID0gUVRpbWVab25lKCk7CisrICAg IH0gZWxzZSBpZiAoaWFuYUlkID09IFFMYXRpbjFTdHJpbmcoIk9mZnNldEZyb21VdGMiKSkgewor ICAgICAgICAgaW50IHV0Y09mZnNldDsKKyAgICAgICAgIFFTdHJpbmcgbmFtZTsKKyAgICAgICAg IFFTdHJpbmcgYWJicmV2aWF0aW9uOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90 aW1lL3F0aW1lem9uZXByaXZhdGVfdHouY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRp bWV6b25lcHJpdmF0ZV90ei5jcHAKK2luZGV4IGIxNjExZDdkZGIuLmE3YTZhNzJjY2YgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmVwcml2YXRlX3R6LmNwcAor KysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lcHJpdmF0ZV90ei5jcHAKK0BA IC00Miw2ICs0Miw3IEBACisgI2luY2x1ZGUgInF0aW1lem9uZS5oIgorICNpbmNsdWRlICJxdGlt ZXpvbmVwcml2YXRlX3AuaCIKKyAjaW5jbHVkZSAicHJpdmF0ZS9xbG9jYWxlX3Rvb2xzX3AuaCIK KysjaW5jbHVkZSAicHJpdmF0ZS9xbG9ja2luZ19wLmgiCisgCisgI2luY2x1ZGUgPFF0Q29yZS9R RGF0YVN0cmVhbT4KKyAjaW5jbHVkZSA8UXRDb3JlL1FEYXRlVGltZT4KK0BAIC02Miw2ICs2Mywx MCBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorKyNpZiBRVF9DT05GSUcoaWN1KQorK3N0 YXRpYyBRQmFzaWNNdXRleCBzX2ljdV9tdXRleDsKKysjZW5kaWYKKysKKyAvKgorICAgICBQcml2 YXRlCisgCitAQCAtNjcwLDYgKzY3NSw5IEBAIFFUelRpbWVab25lUHJpdmF0ZTo6flFUelRpbWVa b25lUHJpdmF0ZSgpCisgCisgUVR6VGltZVpvbmVQcml2YXRlICpRVHpUaW1lWm9uZVByaXZhdGU6 OmNsb25lKCkgY29uc3QKKyB7CisrI2lmIFFUX0NPTkZJRyhpY3UpCisrICAgIGNvbnN0IGF1dG8g bG9jayA9IHF0X3Njb3BlZF9sb2NrKHNfaWN1X211dGV4KTsKKysjZW5kaWYKKyAgICAgcmV0dXJu IG5ldyBRVHpUaW1lWm9uZVByaXZhdGUoKnRoaXMpOworIH0KKyAKK0BAIC05MTMsMTIgKzkyMSwx NCBAQCBRU3RyaW5nIFFUelRpbWVab25lUHJpdmF0ZTo6ZGlzcGxheU5hbWUocWludDY0IGF0TVNl Y3NTaW5jZUVwb2NoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBRTG9jYWxlICZsb2NhbGUpIGNvbnN0CisgeworICNpZiBRVF9DT05GSUcoaWN1KQorKyAg ICBhdXRvIGxvY2sgPSBxdF91bmlxdWVfbG9jayhzX2ljdV9tdXRleCk7CisgICAgIGlmICghbV9p Y3UpCisgICAgICAgICBtX2ljdSA9IG5ldyBRSWN1VGltZVpvbmVQcml2YXRlKG1faWQpOworICAg ICAvLyBUT0RPIHNtYWxsIHJpc2sgbWF5IG5vdCBtYXRjaCBpZiB0cmFuIHRpbWVzIGRpZmZlciBk dWUgdG8gb3V0ZGF0ZWQgZmlsZXMKKyAgICAgLy8gVE9ETyBTb21lIHZhbGlkIFRaIG5hbWVzIGFy ZSBub3QgdmFsaWQgSUNVIG5hbWVzLCB1c2UgdHJhbnNsYXRpb24gdGFibGU/CisgICAgIGlmICht X2ljdS0+aXNWYWxpZCgpKQorICAgICAgICAgcmV0dXJuIG1faWN1LT5kaXNwbGF5TmFtZShhdE1T ZWNzU2luY2VFcG9jaCwgbmFtZVR5cGUsIGxvY2FsZSk7CisrICAgIGxvY2sudW5sb2NrKCk7Cisg I2Vsc2UKKyAgICAgUV9VTlVTRUQobmFtZVR5cGUpCisgICAgIFFfVU5VU0VEKGxvY2FsZSkKK0BA IC05MzIsMTIgKzk0MiwxNCBAQCBRU3RyaW5nIFFUelRpbWVab25lUHJpdmF0ZTo6ZGlzcGxheU5h bWUoUVRpbWVab25lOjpUaW1lVHlwZSB0aW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgUUxvY2FsZSAmbG9jYWxlKSBjb25zdAorIHsKKyAjaWYg UVRfQ09ORklHKGljdSkKKysgICAgYXV0byBsb2NrID0gcXRfdW5pcXVlX2xvY2soc19pY3VfbXV0 ZXgpOworICAgICBpZiAoIW1faWN1KQorICAgICAgICAgbV9pY3UgPSBuZXcgUUljdVRpbWVab25l UHJpdmF0ZShtX2lkKTsKKyAgICAgLy8gVE9ETyBzbWFsbCByaXNrIG1heSBub3QgbWF0Y2ggaWYg dHJhbiB0aW1lcyBkaWZmZXIgZHVlIHRvIG91dGRhdGVkIGZpbGVzCisgICAgIC8vIFRPRE8gU29t ZSB2YWxpZCBUWiBuYW1lcyBhcmUgbm90IHZhbGlkIElDVSBuYW1lcywgdXNlIHRyYW5zbGF0aW9u IHRhYmxlPworICAgICBpZiAobV9pY3UtPmlzVmFsaWQoKSkKKyAgICAgICAgIHJldHVybiBtX2lj dS0+ZGlzcGxheU5hbWUodGltZVR5cGUsIG5hbWVUeXBlLCBsb2NhbGUpOworKyAgICBsb2NrLnVu bG9jaygpOworICNlbHNlCisgICAgIFFfVU5VU0VEKHRpbWVUeXBlKQorICAgICBRX1VOVVNFRChu YW1lVHlwZSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWFycmF5ZGF0 YS5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FhcnJheWRhdGEuaAoraW5kZXggZGNkOTU5 MjRjMS4uZDAxNzM5ZTdlNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9x YXJyYXlkYXRhLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xYXJyYXlkYXRhLmgK K0BAIC00Miw2ICs0Miw3IEBACisgCisgI2luY2x1ZGUgPFF0Q29yZS9xcmVmY291bnQuaD4KKyAj aW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPGNzdGRpbnQ+CisgCisgUVRfQkVHSU5fTkFN RVNQQUNFCisgCitAQCAtNTgsMTQgKzU5LDE0IEBAIHN0cnVjdCBRX0NPUkVfRVhQT1JUIFFBcnJh eURhdGEKKyAgICAgeworICAgICAgICAgUV9BU1NFUlQoc2l6ZSA9PSAwCisgICAgICAgICAgICAg ICAgIHx8IG9mZnNldCA8IDAgfHwgc2l6ZV90KG9mZnNldCkgPj0gc2l6ZW9mKFFBcnJheURhdGEp KTsKKy0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIgKj4odGhpcykgKyBvZmZz ZXQ7CisrICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+IChyZWludGVycHJl dF9jYXN0PHVpbnRwdHJfdD4odGhpcykgKyBvZmZzZXQpOworICAgICB9CisgCisgICAgIGNvbnN0 IHZvaWQgKmRhdGEoKSBjb25zdAorICAgICB7CisgICAgICAgICBRX0FTU0VSVChzaXplID09IDAK KyAgICAgICAgICAgICAgICAgfHwgb2Zmc2V0IDwgMCB8fCBzaXplX3Qob2Zmc2V0KSA+PSBzaXpl b2YoUUFycmF5RGF0YSkpOworLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg Y2hhciAqPih0aGlzKSArIG9mZnNldDsKKysgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0 PHZvaWQgKj4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSArIG9mZnNldCk7Cisg ICAgIH0KKyAKKyAgICAgLy8gVGhpcyByZWZlcnMgdG8gYXJyYXkgZGF0YSBtdXRhYmlsaXR5LCBu b3QgImhlYWRlciBkYXRhIiByZXByZXNlbnRlZCBieQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Y29yZWxpYi90b29scy9xZnJlZWxpc3RfcC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3Fm cmVlbGlzdF9wLmgKK2luZGV4IDViYTIzYjM0NGIuLjk5NzQxMDIxMzYgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0X3AuaAorKysrIGIvcXRiYXNlL3NyYy9j b3JlbGliL3Rvb2xzL3FmcmVlbGlzdF9wLmgKK0BAIC0xNjEsNyArMTYxLDcgQEAgY2xhc3MgUUZy ZWVMaXN0CisgICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgIHggLT0gc2l6 ZTsKKyAgICAgICAgIH0KKy0gICAgICAgIFFfQVNTRVJUKGZhbHNlKTsKKysgICAgICAgIFFfVU5S RUFDSEFCTEUoKTsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xdmVyc2lvbm51bWJlci5oIGIvcXRiYXNlL3NyYy9j b3JlbGliL3Rvb2xzL3F2ZXJzaW9ubnVtYmVyLmgKK2luZGV4IGQ0M2I4NmJhNTEuLjI4NDNmMmIw NDMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcXZlcnNpb25udW1iZXIu aAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3F2ZXJzaW9ubnVtYmVyLmgKK0BAIC0y NzMsMTAgKzI3MywxMCBAQCBwdWJsaWM6CisgCisgICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09S RV9FWFBPUlQgUVN0cmluZyB0b1N0cmluZygpIGNvbnN0OworICNpZiBRVF9TVFJJTkdWSUVXX0xF VkVMIDwgMgorLSAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRX0RF Q0xfUFVSRV9GVU5DVElPTiBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKGNvbnN0IFFTdHJpbmcg JnN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworKyAgICBRX1JFUVVJUkVEX1JF U1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKGNvbnN0 IFFTdHJpbmcgJnN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworICNlbmRpZgor LSAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRX0RFQ0xfUFVSRV9G VU5DVElPTiBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKFFMYXRpbjFTdHJpbmcgc3RyaW5nLCBp bnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CistICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09S RV9FWFBPUlQgc3RhdGljIFFfREVDTF9QVVJFX0ZVTkNUSU9OIFFWZXJzaW9uTnVtYmVyIGZyb21T dHJpbmcoUVN0cmluZ1ZpZXcgc3RyaW5nLCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7Cisr ICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFWZXJzaW9uTnVtYmVy IGZyb21TdHJpbmcoUUxhdGluMVN0cmluZyBzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxs cHRyKTsKKysgICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMgUVZlcnNp b25OdW1iZXIgZnJvbVN0cmluZyhRU3RyaW5nVmlldyBzdHJpbmcsIGludCAqc3VmZml4SW5kZXgg PSBudWxscHRyKTsKKyAKKyBwcml2YXRlOgorICNpZm5kZWYgUVRfTk9fREFUQVNUUkVBTQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVncmF0b3IuY3BwIGIvcXRiYXNlL3Ny Yy9kYnVzL3FkYnVzaW50ZWdyYXRvci5jcHAKK2luZGV4IDViNjZjZTk3MWIuLjI4YTNiMGZmZWEg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2RidXMvcWRidXNpbnRlZ3JhdG9yLmNwcAorKysrIGIv cXRiYXNlL3NyYy9kYnVzL3FkYnVzaW50ZWdyYXRvci5jcHAKK0BAIC0xMTM1LDcgKzExMzUsMTMg QEAgdm9pZCBRREJ1c0Nvbm5lY3Rpb25Qcml2YXRlOjpjbG9zZUNvbm5lY3Rpb24oKQorICAgICAg ICAgfQorICAgICB9CisgCistICAgIHFEZWxldGVBbGwocGVuZGluZ0NhbGxzKTsKKysgICAgZm9y IChhdXRvIGl0ID0gcGVuZGluZ0NhbGxzLmJlZ2luKCk7IGl0ICE9IHBlbmRpbmdDYWxscy5lbmQo KTsgKytpdCkgeworKyAgICAgICAgYXV0byBjYWxsID0gKml0OworKyAgICAgICAgaWYgKCFjYWxs LT5yZWYuZGVyZWYoKSkgeworKyAgICAgICAgICAgIGRlbGV0ZSBjYWxsOworKyAgICAgICAgfQor KyAgICB9CisrICAgIHBlbmRpbmdDYWxscy5jbGVhcigpOworIAorICAgICAvLyBEaXNjb25uZWN0 IGFsbCBzaWduYWxzIGZyb20gc2lnbmFsIGhvb2tzIGFuZCBmcm9tIHRoZSBvYmplY3QgdHJlZSB0 bworICAgICAvLyBhdm9pZCBRT2JqZWN0OjpkZXN0cm95ZWQgYmVpbmcgc2VudCB0byBkYnVzIGRh ZW1vbiB0aHJlYWQgd2hpY2ggaGFzCitAQCAtMjU4NCw2ICsyNTkwLDExIEBAIFFEQnVzQ29ubmVj dGlvblByaXZhdGU6OmZpbmRNZXRhT2JqZWN0KGNvbnN0IFFTdHJpbmcgJnNlcnZpY2UsIGNvbnN0 IFFTdHJpbmcgJnBhCisgICAgICAgICBpZiAobW8pCisgICAgICAgICAgICAgcmV0dXJuIG1vOwor ICAgICB9CisrICAgIGlmIChwYXRoLmlzRW1wdHkoKSkgeworKyAgICAgICAgZXJyb3IgPSBRREJ1 c0Vycm9yKFFEQnVzRXJyb3I6OkludmFsaWRPYmplY3RQYXRoLCBRTGF0aW4xU3RyaW5nKCJPYmpl Y3QgcGF0aCBjYW5ub3QgYmUgZW1wdHkiKSk7CisrICAgICAgICBsYXN0RXJyb3IgPSBlcnJvcjsK KysgICAgICAgIHJldHVybiBudWxscHRyOworKyAgICB9CisgCisgICAgIC8vIGludHJvc3BlY3Qg dGhlIHRhcmdldCBvYmplY3QKKyAgICAgUURCdXNNZXNzYWdlIG1zZyA9IFFEQnVzTWVzc2FnZTo6 Y3JlYXRlTWV0aG9kQ2FsbChzZXJ2aWNlLCBwYXRoLAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv ZGJ1cy9xZGJ1c21ldGFvYmplY3QuY3BwIGIvcXRiYXNlL3NyYy9kYnVzL3FkYnVzbWV0YW9iamVj dC5jcHAKK2luZGV4IDUyNjU1NjhmNDIuLjdlOWYwZjFhY2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2RidXMvcWRidXNtZXRhb2JqZWN0LmNwcAorKysrIGIvcXRiYXNlL3NyYy9kYnVzL3FkYnVz bWV0YW9iamVjdC5jcHAKK0BAIC0yMTAsNiArMjEwLDkgQEAgUURCdXNNZXRhT2JqZWN0R2VuZXJh dG9yOjpmaW5kVHlwZShjb25zdCBRQnl0ZUFycmF5ICZzaWduYXR1cmUsCisgICAgICAgICB9IGVs c2UgaWYgKHNpZ25hdHVyZSA9PSAiYXtzc30iKSB7CisgICAgICAgICAgICAgcmVzdWx0Lm5hbWUg PSAiUU1hcDxRU3RyaW5nLFFTdHJpbmc+IjsKKyAgICAgICAgICAgICB0eXBlID0gcU1ldGFUeXBl SWQ8UU1hcDxRU3RyaW5nLCBRU3RyaW5nPiA+KCk7CisrICAgICAgICB9IGVsc2UgaWYgKHNpZ25h dHVyZSA9PSAiYWF5IikgeworKyAgICAgICAgICAgIHJlc3VsdC5uYW1lID0gIlFCeXRlQXJyYXlM aXN0IjsKKysgICAgICAgICAgICB0eXBlID0gcU1ldGFUeXBlSWQ8UUJ5dGVBcnJheUxpc3Q+KCk7 CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIHJlc3VsdC5uYW1lID0gIntELUJ1cyB0 eXBlIFwiIiArIHNpZ25hdHVyZSArICJcIn0iOworICAgICAgICAgICAgIHR5cGUgPSByZWdpc3Rl ckNvbXBsZXhEQnVzVHlwZShyZXN1bHQubmFtZSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9n dWkvYWNjZXNzaWJsZS9xYWNjZXNzaWJsZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9hY2Nlc3NpYmxl L3FhY2Nlc3NpYmxlLmNwcAoraW5kZXggZDcwNWJmY2NiNS4uMGNhZjNjODA4YyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvZ3VpL2FjY2Vzc2libGUvcWFjY2Vzc2libGUuY3BwCisrKysgYi9xdGJh c2Uvc3JjL2d1aS9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlLmNwcAorQEAgLTU0LDYgKzU0LDcgQEAK KyAjaW5jbHVkZSA8UXRDb3JlL3FkZWJ1Zy5oPgorICNpbmNsdWRlIDxRdENvcmUvcWxvZ2dpbmdj YXRlZ29yeS5oPgorICNpbmNsdWRlIDxRdENvcmUvcW1ldGFvYmplY3QuaD4KKysjaW5jbHVkZSA8 UXRDb3JlL3ByaXZhdGUvcW1ldGFvYmplY3RfcC5oPgorICNpbmNsdWRlIDxRdENvcmUvcWhhc2gu aD4KKyAjaW5jbHVkZSA8cHJpdmF0ZS9xZmFjdG9yeWxvYWRlcl9wLmg+CisgCitAQCAtNjgxLDYg KzY4MiwyNSBAQCBRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGU6OnF1ZXJ5QWNjZXNz aWJsZUludGVyZmFjZShRT2JqZWN0ICpvYmplY3QpCisgICAgIC8vIENyZWF0ZSBhIFFBY2Nlc3Np YmxlSW50ZXJmYWNlIGZvciB0aGUgb2JqZWN0IGNsYXNzLiBTdGFydCBieSB0aGUgbW9zdAorICAg ICAvLyBkZXJpdmVkIGNsYXNzIGFuZCB3YWxrIHVwIHRoZSBjbGFzcyBoaWVyYXJjaHkuCisgICAg IGNvbnN0IFFNZXRhT2JqZWN0ICptbyA9IG9iamVjdC0+bWV0YU9iamVjdCgpOworKyAgICBjb25z dCBhdXRvICpvYmplY3RQcml2ID0gUU9iamVjdFByaXZhdGU6OmdldChvYmplY3QpOworKyAgICAv KgorKyAgICAgV2UgZG8gbm90IHdhbnQgdG8gY2FjaGUgZWFjaCBhbmQgZXZlcnkgUU1MIG1ldGFv YmplY3QgKEJ1dHRvbl9RTUxUWVBFXzEyNCwKKysgICAgIEJ1dHRvbl9RTUxUWVBFXzEyNSwgZXRj LikuIFRob3NlIGR5bmFtaWMgbWV0YW9iamVjdHMgc2hvdWxkbid0IGhhdmUgYW4KKysgICAgIGFj Y2Vzc2libGUgaW50ZXJmYWNlIGluIGFueSBjYXNlLiBJbnN0ZWFkLCB3ZSBzdGFydCB0aGUgd2hv bGUgY2hlY2tpbmcKKysgICAgIHdpdGggdGhlIGZpcnN0IG5vbi1keW5hbWljIG1ldGEtb2JqZWN0 LiBUbyBhdm9pZCBwb3RlbnRpYWwgcmVncmVzc2lvbnMKKysgICAgIGluIG90aGVyIGFyZWFzIG9m IFF0IHRoYXQgYWxzbyB1c2UgZHluYW1pYyBtZXRhb2JqZWN0cywgd2Ugb25seSBkbyB0aGlzCisr ICAgICBmb3Igb2JqZWN0cyB0aGF0IGFyZSBRTUwtcmVsYXRlZCAoYXBwcm94aW1hdGVkIGJ5IGNo ZWNraW5nIHdoZXRoZXIgdGhleQorKyAgICAgaGF2ZSBkZGF0YSBzZXQpLgorKyAgICAqLworKyAg ICBjb25zdCBib29sIHFtbFJlbGF0ZWQgPSAhb2JqZWN0UHJpdi0+aXNEZWxldGluZ0NoaWxkcmVu ICYmCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFByaXYtPmRlY2xhcmF0aXZl RGF0YTsKKysgICAgd2hpbGUgKHFtbFJlbGF0ZWQgJiYgbW8pIHsKKysgICAgICAgIGF1dG8gbW9w ID0gUU1ldGFPYmplY3RQcml2YXRlOjpnZXQobW8pOworKyAgICAgICAgaWYgKCFtb3AgfHwgISht b3AtPmZsYWdzICYgRHluYW1pY01ldGFPYmplY3QpKQorKyAgICAgICAgICAgIGJyZWFrOworKwor KyAgICAgICAgbW8gPSBtby0+c3VwZXJDbGFzcygpOworKyAgICB9OworICAgICB3aGlsZSAobW8p IHsKKyAgICAgICAgIGNvbnN0IFFTdHJpbmcgY24gPSBRTGF0aW4xU3RyaW5nKG1vLT5jbGFzc05h bWUoKSk7CisgCitAQCAtNjk2LDE0ICs3MTYsMTUgQEAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFB Y2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2UoUU9iamVjdCAqb2JqZWN0KQorICAg ICAgICAgLy8gRmluZCBhIFFBY2Nlc3NpYmxlUGx1Z2luIChmYWN0b3J5KSBmb3IgdGhlIGNsYXNz IG5hbWUuIElmIHRoZXJlJ3MKKyAgICAgICAgIC8vIG5vIGVudHJ5IGluIHRoZSBjYWNoZSB0cnkg dG8gY3JlYXRlIGl0IHVzaW5nIHRoZSBwbHVnaW4gbG9hZGVyLgorICAgICAgICAgaWYgKCFxQWNj ZXNzaWJsZVBsdWdpbnMoKS0+Y29udGFpbnMoY24pKSB7CisrICAgICAgICAgICAgUUFjY2Vzc2li bGVQbHVnaW4gKmZhY3RvcnkgPSBudWxscHRyOyAvLyAwIG1lYW5zICJubyBwbHVnaW4gZm91bmQi LiBUaGlzIGlzIGNhY2hlZCBhcyB3ZWxsLgorICAgICAgICAgICAgIGNvbnN0IGludCBpbmRleCA9 IGxvYWRlcigpLT5pbmRleE9mKGNuKTsKKy0gICAgICAgICAgICBpZiAoaW5kZXggIT0gLTEpIHsK Ky0gICAgICAgICAgICAgICAgUUFjY2Vzc2libGVQbHVnaW4gKmZhY3RvcnkgPSBxb2JqZWN0X2Nh c3Q8UUFjY2Vzc2libGVQbHVnaW4gKj4obG9hZGVyKCktPmluc3RhbmNlKGluZGV4KSk7CistICAg ICAgICAgICAgICAgIHFBY2Nlc3NpYmxlUGx1Z2lucygpLT5pbnNlcnQoY24sIGZhY3RvcnkpOwor LSAgICAgICAgICAgIH0KKysgICAgICAgICAgICBpZiAoaW5kZXggIT0gLTEpCisrICAgICAgICAg ICAgICAgIGZhY3RvcnkgPSBxb2JqZWN0X2Nhc3Q8UUFjY2Vzc2libGVQbHVnaW4gKj4obG9hZGVy KCktPmluc3RhbmNlKGluZGV4KSk7CisrICAgICAgICAgICAgcUFjY2Vzc2libGVQbHVnaW5zKCkt Pmluc2VydChjbiwgZmFjdG9yeSk7CisgICAgICAgICB9CisgCisgICAgICAgICAvLyBBdCB0aGlz IHBvaW50IHRoZSBjYWNoZSBzaG91bGQgY29udGFpbiBhIHZhbGlkIGZhY3RvcnkgcG9pbnRlciBv ciAwOgorKyAgICAgICAgUV9BU1NFUlQocUFjY2Vzc2libGVQbHVnaW5zKCktPmNvbnRhaW5zKGNu KSk7CisgICAgICAgICBRQWNjZXNzaWJsZVBsdWdpbiAqZmFjdG9yeSA9IHFBY2Nlc3NpYmxlUGx1 Z2lucygpLT52YWx1ZShjbik7CisgICAgICAgICBpZiAoZmFjdG9yeSkgeworICAgICAgICAgICAg IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpyZXN1bHQgPSBmYWN0b3J5LT5jcmVhdGUoY24sIG9iamVj dCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvY29uZmlndXJlLmpzb24gYi9xdGJhc2Uv c3JjL2d1aS9jb25maWd1cmUuanNvbgoraW5kZXggMWYwODc5NWM1Ny4uMTJjOTU3NDJkMiAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2NvbmZpZ3VyZS5qc29uCisrKysgYi9xdGJhc2Uvc3Jj L2d1aS9jb25maWd1cmUuanNvbgorQEAgLTgzNCw3ICs4MzQsOCBAQAorICAgICAgICAgICAgICAg ICAgICAgIi8vIGVtYmVkZGVkIGRldmljZXMsIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCB0 b2dldGhlciB3aXRoIFguIEVHTCBzdXBwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICIvLyBo YXMgdG8gYmUgZGlzYWJsZWQgaW4gcGx1Z2lucyBsaWtlIHhjYiBpbiB0aGlzIGNhc2Ugc2luY2Ug dGhlIG5hdGl2ZSBkaXNwbGF5LCIsCisgICAgICAgICAgICAgICAgICAgICAiLy8gd2luZG93IGFu ZCBwaXhtYXAgdHlwZXMgd2lsbCBiZSBkaWZmZXJlbnQgdGhhbiB3aGF0IGFuIFgtYmFzZWQgcGxh dGZvcm0iLAorLSAgICAgICAgICAgICAgICAgICAgIi8vIHBsdWdpbiB3b3VsZCBleHBlY3QuIgor KyAgICAgICAgICAgICAgICAgICAgIi8vIHBsdWdpbiB3b3VsZCBleHBlY3QuIiwKKysgICAgICAg ICAgICAgICAgICAgICIjZGVmaW5lIFVTRV9YMTEiCisgICAgICAgICAgICAgICAgIF0sCisgICAg ICAgICAgICAgICAgICJpbmNsdWRlIjogWyAiRUdML2VnbC5oIiwgIlgxMS9YbGliLmgiIF0sCisg ICAgICAgICAgICAgICAgICJtYWluIjogWworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2lt YWdlL3FibXBoYW5kbGVyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FibXBoYW5kbGVyLmNw cAoraW5kZXggOTZmMWU4Y2IxZC4uMGU3M2JiYmRiMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Z3VpL2ltYWdlL3FibXBoYW5kbGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWJt cGhhbmRsZXIuY3BwCitAQCAtMTUwLDE2ICsxNTAsNDIgQEAgc3RhdGljIFFEYXRhU3RyZWFtICZv cGVyYXRvcjw8KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBfSU5GT0hEUiAmYmkpCisgICAgIHJl dHVybiBzOworIH0KKyAKKy1zdGF0aWMgaW50IGNhbGNfc2hpZnQodWludCBtYXNrKQorK3N0YXRp YyB1aW50IGNhbGNfc2hpZnQodWludCBtYXNrKQorIHsKKy0gICAgaW50IHJlc3VsdCA9IDA7Cist ICAgIHdoaWxlIChtYXNrICYmICEobWFzayAmIDEpKSB7CisrICAgIHVpbnQgcmVzdWx0ID0gMDsK KysgICAgd2hpbGUgKChtYXNrID49IDB4MTAwKSB8fCAoIShtYXNrICYgMSkgJiYgbWFzaykpIHsK KyAgICAgICAgIHJlc3VsdCsrOworICAgICAgICAgbWFzayA+Pj0gMTsKKyAgICAgfQorICAgICBy ZXR1cm4gcmVzdWx0OworIH0KKyAKKytzdGF0aWMgdWludCBjYWxjX3NjYWxlKHVpbnQgbG93X21h c2spCisreworKyAgICB1aW50IHJlc3VsdCA9IDg7CisrICAgIHdoaWxlIChsb3dfbWFzayAmJiBy ZXN1bHQpIHsKKysgICAgICAgIHJlc3VsdC0tOworKyAgICAgICAgbG93X21hc2sgPj49IDE7Cisr ICAgIH0KKysgICAgcmV0dXJuIHJlc3VsdDsKKyt9CisrCisrc3RhdGljIGlubGluZSB1aW50IGFw cGx5X3NjYWxlKHVpbnQgdmFsdWUsIHVpbnQgc2NhbGUpCisreworKyAgICBpZiAoIShzY2FsZSAm IDB4MDcpKSAvLyByZXR1cm4gaW1tZWRpYXRlbHkgaWYgc2NhbGUgPT0gOCBvciAwCisrICAgICAg ICByZXR1cm4gdmFsdWU7CisrCisrICAgIHVpbnQgZmlsbGVkID0gOCAtIHNjYWxlOworKyAgICB1 aW50IHJlc3VsdCA9IHZhbHVlIDw8IHNjYWxlOworKworKyAgICBkbyB7CisrICAgICAgICByZXN1 bHQgfD0gcmVzdWx0ID4+IGZpbGxlZDsKKysgICAgICAgIGZpbGxlZCA8PD0gMTsKKysgICAgfSB3 aGlsZSAoZmlsbGVkIDwgOCk7CisrCisrICAgIHJldHVybiByZXN1bHQ7CisrfQorKworIHN0YXRp YyBib29sIHJlYWRfZGliX2ZpbGVoZWFkZXIoUURhdGFTdHJlYW0gJnMsIEJNUF9GSUxFSERSICZi ZikKKyB7CisgICAgIC8vIHJlYWQgQk1QIGZpbGUgaGVhZGVyCitAQCAtMjIyLDE0ICsyNDgsMTQg QEAgc3RhdGljIGJvb2wgcmVhZF9kaWJfYm9keShRRGF0YVN0cmVhbSAmcywgY29uc3QgQk1QX0lO Rk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0LAorICAgICB1aW50IGdyZWVuX21hc2sgPSAwOworICAg ICB1aW50IGJsdWVfbWFzayA9IDA7CisgICAgIHVpbnQgYWxwaGFfbWFzayA9IDA7CistICAgIGlu dCByZWRfc2hpZnQgPSAwOworLSAgICBpbnQgZ3JlZW5fc2hpZnQgPSAwOworLSAgICBpbnQgYmx1 ZV9zaGlmdCA9IDA7CistICAgIGludCBhbHBoYV9zaGlmdCA9IDA7CistICAgIGludCByZWRfc2Nh bGUgPSAwOworLSAgICBpbnQgZ3JlZW5fc2NhbGUgPSAwOworLSAgICBpbnQgYmx1ZV9zY2FsZSA9 IDA7CistICAgIGludCBhbHBoYV9zY2FsZSA9IDA7CisrICAgIHVpbnQgcmVkX3NoaWZ0ID0gMDsK KysgICAgdWludCBncmVlbl9zaGlmdCA9IDA7CisrICAgIHVpbnQgYmx1ZV9zaGlmdCA9IDA7Cisr ICAgIHVpbnQgYWxwaGFfc2hpZnQgPSAwOworKyAgICB1aW50IHJlZF9zY2FsZSA9IDA7CisrICAg IHVpbnQgZ3JlZW5fc2NhbGUgPSAwOworKyAgICB1aW50IGJsdWVfc2NhbGUgPSAwOworKyAgICB1 aW50IGFscGhhX3NjYWxlID0gMDsKKyAKKyAgICAgaWYgKCFkLT5pc1NlcXVlbnRpYWwoKSkKKyAg ICAgICAgIGQtPnNlZWsoc3RhcnRwb3MgKyBCTVBfRklMRUhEUl9TSVpFICsgYmkuYmlTaXplKTsg Ly8gZ290byBzdGFydCBvZiBjb2xvcm1hcCBvciBtYXNrcworQEAgLTMwOCwxOSArMzM0LDE5IEBA IHN0YXRpYyBib29sIHJlYWRfZGliX2JvZHkoUURhdGFTdHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZP SERSICZiaSwgcWludDY0IG9mZnNldCwKKyAgICAgICAgIHJlZF9zaGlmdCA9IGNhbGNfc2hpZnQo cmVkX21hc2spOworICAgICAgICAgaWYgKCgocmVkX21hc2sgPj4gcmVkX3NoaWZ0KSArIDEpID09 IDApCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgcmVkX3NjYWxlID0gMjU2 IC8gKChyZWRfbWFzayA+PiByZWRfc2hpZnQpICsgMSk7CisrICAgICAgICByZWRfc2NhbGUgPSBj YWxjX3NjYWxlKHJlZF9tYXNrID4+IHJlZF9zaGlmdCk7CisgICAgICAgICBncmVlbl9zaGlmdCA9 IGNhbGNfc2hpZnQoZ3JlZW5fbWFzayk7CisgICAgICAgICBpZiAoKChncmVlbl9tYXNrID4+IGdy ZWVuX3NoaWZ0KSArIDEpID09IDApCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAg ICAgZ3JlZW5fc2NhbGUgPSAyNTYgLyAoKGdyZWVuX21hc2sgPj4gZ3JlZW5fc2hpZnQpICsgMSk7 CisrICAgICAgICBncmVlbl9zY2FsZSA9IGNhbGNfc2NhbGUoZ3JlZW5fbWFzayA+PiBncmVlbl9z aGlmdCk7CisgICAgICAgICBibHVlX3NoaWZ0ID0gY2FsY19zaGlmdChibHVlX21hc2spOworICAg ICAgICAgaWYgKCgoYmx1ZV9tYXNrID4+IGJsdWVfc2hpZnQpICsgMSkgPT0gMCkKKyAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CistICAgICAgICBibHVlX3NjYWxlID0gMjU2IC8gKChibHVlX21h c2sgPj4gYmx1ZV9zaGlmdCkgKyAxKTsKKysgICAgICAgIGJsdWVfc2NhbGUgPSBjYWxjX3NjYWxl KGJsdWVfbWFzayA+PiBibHVlX3NoaWZ0KTsKKyAgICAgICAgIGFscGhhX3NoaWZ0ID0gY2FsY19z aGlmdChhbHBoYV9tYXNrKTsKKyAgICAgICAgIGlmICgoKGFscGhhX21hc2sgPj4gYWxwaGFfc2hp ZnQpICsgMSkgPT0gMCkKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CistICAgICAgICBhbHBo YV9zY2FsZSA9IDI1NiAvICgoYWxwaGFfbWFzayA+PiBhbHBoYV9zaGlmdCkgKyAxKTsKKysgICAg ICAgIGFscGhhX3NjYWxlID0gY2FsY19zY2FsZShhbHBoYV9tYXNrID4+IGFscGhhX3NoaWZ0KTsK KyAgICAgfSBlbHNlIGlmIChjb21wID09IEJNUF9SR0IgJiYgKG5iaXRzID09IDI0IHx8IG5iaXRz ID09IDMyKSkgeworICAgICAgICAgYmx1ZV9tYXNrID0gMHgwMDAwMDBmZjsKKyAgICAgICAgIGdy ZWVuX21hc2sgPSAweDAwMDBmZjAwOworQEAgLTMyOCwxNyArMzU0LDE1IEBAIHN0YXRpYyBib29s IHJlYWRfZGliX2JvZHkoUURhdGFTdHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSwgcWlu dDY0IG9mZnNldCwKKyAgICAgICAgIGJsdWVfc2hpZnQgPSAwOworICAgICAgICAgZ3JlZW5fc2hp ZnQgPSA4OworICAgICAgICAgcmVkX3NoaWZ0ID0gMTY7CistICAgICAgICBibHVlX3NjYWxlID0g Z3JlZW5fc2NhbGUgPSByZWRfc2NhbGUgPSAxOworKyAgICAgICAgYmx1ZV9zY2FsZSA9IGdyZWVu X3NjYWxlID0gcmVkX3NjYWxlID0gMDsKKyAgICAgfSBlbHNlIGlmIChjb21wID09IEJNUF9SR0Ig JiYgbmJpdHMgPT0gMTYpIHsKKyAgICAgICAgIGJsdWVfbWFzayA9IDB4MDAxZjsKKyAgICAgICAg IGdyZWVuX21hc2sgPSAweDAzZTA7CisgICAgICAgICByZWRfbWFzayA9IDB4N2MwMDsKKyAgICAg ICAgIGJsdWVfc2hpZnQgPSAwOworLSAgICAgICAgZ3JlZW5fc2hpZnQgPSAyOworLSAgICAgICAg cmVkX3NoaWZ0ID0gNzsKKy0gICAgICAgIHJlZF9zY2FsZSA9IDE7CistICAgICAgICBncmVlbl9z Y2FsZSA9IDE7CistICAgICAgICBibHVlX3NjYWxlID0gODsKKysgICAgICAgIGdyZWVuX3NoaWZ0 ID0gNTsKKysgICAgICAgIHJlZF9zaGlmdCA9IDEwOworKyAgICAgICAgYmx1ZV9zY2FsZSA9IGdy ZWVuX3NjYWxlID0gcmVkX3NjYWxlID0gMzsKKyAgICAgfQorIAorICNpZiAwCitAQCAtNTQ0LDEw ICs1NjgsMTAgQEAgc3RhdGljIGJvb2wgcmVhZF9kaWJfYm9keShRRGF0YVN0cmVhbSAmcywgY29u c3QgQk1QX0lORk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg YyB8PSAqKHVjaGFyKikoYisyKTw8MTY7CisgICAgICAgICAgICAgICAgIGlmIChuYml0cyA+IDI0 KQorICAgICAgICAgICAgICAgICAgICAgYyB8PSAqKHVjaGFyKikoYiszKTw8MjQ7CistICAgICAg ICAgICAgICAgICpwKysgPSBxUmdiYSgoKGMgJiByZWRfbWFzaykgPj4gcmVkX3NoaWZ0KSAqIHJl ZF9zY2FsZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChjICYg Z3JlZW5fbWFzaykgPj4gZ3JlZW5fc2hpZnQpICogZ3JlZW5fc2NhbGUsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYyAmIGJsdWVfbWFzaykgPj4gYmx1ZV9zaGlm dCkgKiBibHVlX3NjYWxlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0cmFuc3AgPyAoKGMgJiBhbHBoYV9tYXNrKSA+PiBhbHBoYV9zaGlmdCkgKiBhbHBoYV9zY2Fs ZSA6IDB4ZmYpOworKyAgICAgICAgICAgICAgICAqcCsrID0gcVJnYmEoYXBwbHlfc2NhbGUoKGMg JiByZWRfbWFzaykgPj4gcmVkX3NoaWZ0LCByZWRfc2NhbGUpLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYXBwbHlfc2NhbGUoKGMgJiBncmVlbl9tYXNrKSA+PiBncmVlbl9zaGlmdCwg Z3JlZW5fc2NhbGUpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHlfc2NhbGUo KGMgJiBibHVlX21hc2spID4+IGJsdWVfc2hpZnQsIGJsdWVfc2NhbGUpLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdHJhbnNwID8gYXBwbHlfc2NhbGUoKGMgJiBhbHBoYV9tYXNrKSA+ PiBhbHBoYV9zaGlmdCwgYWxwaGFfc2NhbGUpIDogMHhmZik7CisgICAgICAgICAgICAgICAgIGIg Kz0gbmJpdHMvODsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9ndWkvaW1hZ2UvcWltYWdlLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FpbWFn ZS5jcHAKK2luZGV4IDcxNTJhYzE2MDcuLjBkZjc3MjU2NGMgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2d1aS9pbWFnZS9xaW1hZ2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xaW1h Z2UuY3BwCitAQCAtNDY5NCw2ICs0Njk0LDggQEAgUUltYWdlIFFJbWFnZTo6c21vb3RoU2NhbGVk KGludCB3LCBpbnQgaCkgY29uc3QgeworIHN0YXRpYyBRSW1hZ2Ugcm90YXRlZDkwKGNvbnN0IFFJ bWFnZSAmaW1hZ2UpCisgeworICAgICBRSW1hZ2Ugb3V0KGltYWdlLmhlaWdodCgpLCBpbWFnZS53 aWR0aCgpLCBpbWFnZS5mb3JtYXQoKSk7CisrICAgIGlmIChvdXQuaXNOdWxsKCkpCisrICAgICAg ICByZXR1cm4gb3V0OworICAgICBjb3B5TWV0YWRhdGEoJm91dCwgaW1hZ2UpOworICAgICBpZiAo aW1hZ2UuY29sb3JDb3VudCgpID4gMCkKKyAgICAgICAgIG91dC5zZXRDb2xvclRhYmxlKGltYWdl LmNvbG9yVGFibGUoKSk7CitAQCAtNDcyMiw2ICs0NzI0LDggQEAgc3RhdGljIFFJbWFnZSByb3Rh dGVkMTgwKGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisgICAgICAgICByZXR1cm4gaW1hZ2UubWlycm9y ZWQodHJ1ZSwgdHJ1ZSk7CisgCisgICAgIFFJbWFnZSBvdXQoaW1hZ2Uud2lkdGgoKSwgaW1hZ2Uu aGVpZ2h0KCksIGltYWdlLmZvcm1hdCgpKTsKKysgICAgaWYgKG91dC5pc051bGwoKSkKKysgICAg ICAgIHJldHVybiBvdXQ7CisgICAgIGNvcHlNZXRhZGF0YSgmb3V0LCBpbWFnZSk7CisgICAgIGlm IChpbWFnZS5jb2xvckNvdW50KCkgPiAwKQorICAgICAgICAgb3V0LnNldENvbG9yVGFibGUoaW1h Z2UuY29sb3JUYWJsZSgpKTsKK0BAIC00NzM0LDYgKzQ3MzgsOCBAQCBzdGF0aWMgUUltYWdlIHJv dGF0ZWQxODAoY29uc3QgUUltYWdlICZpbWFnZSkKKyBzdGF0aWMgUUltYWdlIHJvdGF0ZWQyNzAo Y29uc3QgUUltYWdlICZpbWFnZSkKKyB7CisgICAgIFFJbWFnZSBvdXQoaW1hZ2UuaGVpZ2h0KCks IGltYWdlLndpZHRoKCksIGltYWdlLmZvcm1hdCgpKTsKKysgICAgaWYgKG91dC5pc051bGwoKSkK KysgICAgICAgIHJldHVybiBvdXQ7CisgICAgIGNvcHlNZXRhZGF0YSgmb3V0LCBpbWFnZSk7Cisg ICAgIGlmIChpbWFnZS5jb2xvckNvdW50KCkgPiAwKQorICAgICAgICAgb3V0LnNldENvbG9yVGFi bGUoaW1hZ2UuY29sb3JUYWJsZSgpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJu ZWwvcWN1cnNvci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWN1cnNvci5jcHAKK2luZGV4 IGQ2Y2NhZmY4ZWQuLjQ1NTA4ODI0MWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJu ZWwvcWN1cnNvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xY3Vyc29yLmNwcAor QEAgLTI1MSw3ICsyNTEsOCBAQCB2b2lkIFFDdXJzb3I6OnNldFBvcyhRU2NyZWVuICpzY3JlZW4s IGludCB4LCBpbnQgeSkKKyB7CisgICAgIGlmIChzY3JlZW4pIHsKKyAgICAgICAgIGlmIChRUGxh dGZvcm1DdXJzb3IgKmN1cnNvciA9IHNjcmVlbi0+aGFuZGxlKCktPmN1cnNvcigpKSB7CistICAg ICAgICAgICAgY29uc3QgUVBvaW50IGRldmljZVBvcyA9IFFIaWdoRHBpOjp0b05hdGl2ZVBpeGVs cyhRUG9pbnQoeCwgeSksIHNjcmVlbik7CisrICAgICAgICAgICAgY29uc3QgUVBvaW50IHBvcyh4 LCB5KTsKKysgICAgICAgICAgICBjb25zdCBRUG9pbnQgZGV2aWNlUG9zID0gUUhpZ2hEcGk6OnRv TmF0aXZlUGl4ZWxzKHBvcywgc2NyZWVuLT52aXJ0dWFsU2libGluZ0F0KHBvcykpOworICAgICAg ICAgICAgIC8vIE5lZWQgdG8gY2hlY2ssIHNpbmNlIHNvbWUgWCBzZXJ2ZXJzIGdlbmVyYXRlIG51 bGwgbW91c2UgbW92ZQorICAgICAgICAgICAgIC8vIGV2ZW50cywgY2F1c2luZyBsb29waW5nIGlu IGFwcGxpY2F0aW9ucyB3aGljaCBjYWxsIHNldFBvcygpIG9uCisgICAgICAgICAgICAgLy8gZXZl cnkgbW91c2UgbW92ZSBldmVudC4KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwv cWhpZ2hkcGlzY2FsaW5nLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xaGlnaGRwaXNjYWxp bmcuY3BwCitpbmRleCA5YmJmMjc3M2E5Li4zYWM0YTRkOGI2IDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9ndWkva2VybmVsL3FoaWdoZHBpc2NhbGluZy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3Vp L2tlcm5lbC9xaGlnaGRwaXNjYWxpbmcuY3BwCitAQCAtNTgwLDkgKzU4MCw4IEBAIHZvaWQgUUhp Z2hEcGlTY2FsaW5nOjpzZXRTY3JlZW5GYWN0b3IoUVNjcmVlbiAqc2NyZWVuLCBxcmVhbCBmYWN0 b3IpCisgICAgIGVsc2UKKyAgICAgICAgIHFOYW1lZFNjcmVlblNjYWxlRmFjdG9ycygpLT5pbnNl cnQobmFtZSwgZmFjdG9yKTsKKyAKKy0gICAgLy8gaGFjayB0byBmb3JjZSByZS1ldmFsdWF0aW9u IG9mIHNjcmVlbiBnZW9tZXRyeQorICAgICBpZiAoc2NyZWVuLT5oYW5kbGUoKSkKKy0gICAgICAg IHNjcmVlbi0+ZF9mdW5jKCktPnNldFBsYXRmb3JtU2NyZWVuKHNjcmVlbi0+aGFuZGxlKCkpOyAv LyB1cGRhdGVzIGdlb21ldHJpZXMgYmFzZWQgb24gc2NhbGUgZmFjdG9yCisrICAgICAgICBzY3Jl ZW4tPmRfZnVuYygpLT51cGRhdGVMb2dpY2FsRHBpKCk7CisgfQorIAorIFFQb2ludCBRSGlnaERw aVNjYWxpbmc6Om1hcFBvc2l0aW9uVG9OYXRpdmUoY29uc3QgUVBvaW50ICZwb3MsIGNvbnN0IFFQ bGF0Zm9ybVNjcmVlbiAqcGxhdGZvcm1TY3JlZW4pCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9n dWkva2VybmVsL3FrZXlzZXF1ZW5jZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWtleXNl cXVlbmNlLmNwcAoraW5kZXggYTc1YjhlZjkyMC4uNGYyZDI5NDczOSAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1 aS9rZXJuZWwvcWtleXNlcXVlbmNlLmNwcAorQEAgLTcwMSw2ICs3MDEsMTAgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCB7CisgICAgIHsgUXQ6OktleV9Ub3VjaHBhZFRvZ2dsZSwgIFFUX1RSQU5TTEFU RV9OT09QKCJRU2hvcnRjdXQiLCAiVG91Y2hwYWQgVG9nZ2xlIikgfSwKKyAgICAgeyBRdDo6S2V5 X1RvdWNocGFkT24sICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIlRvdWNocGFkIE9u IikgfSwKKyAgICAgeyBRdDo6S2V5X1RvdWNocGFkT2ZmLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFT aG9ydGN1dCIsICJUb3VjaHBhZCBPZmYiKSB9LAorKyAgICB7IFF0OjpLZXlfU2hpZnQsICBRVF9U UkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIlNoaWZ0IikgfSwKKysgICAgeyBRdDo6S2V5X0Nv bnRyb2wsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIkNvbnRyb2wiKSB9LAorKyAg ICB7IFF0OjpLZXlfQWx0LCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJBbHQiKSB9 LAorKyAgICB7IFF0OjpLZXlfTWV0YSwgIFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAi TWV0YSIpIH0sCisgCisgfTsKKyBzdGF0aWMgUV9DT05TVEVYUFIgaW50IG51bUtleU5hbWVzID0g c2l6ZW9mIGtleW5hbWUgLyBzaXplb2YgKmtleW5hbWU7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5l bC9xcGxhdGZvcm1zZXJ2aWNlcy5jcHAKK2luZGV4IGZkYzZhNmM0YWEuLmFjNDdmOThjNWQgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuY3BwCisr KysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuY3BwCitAQCAtNTUs NiArNTUsMTkgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgICAgIFxicmllZiBUaGUgUVBsYXRmb3Jt U2VydmljZXMgcHJvdmlkZXMgdGhlIGJhY2tlbmQgZm9yIGRlc2t0b3AtcmVsYXRlZCBmdW5jdGlv bmFsaXR5LgorICovCisgCisrLyohCisrICAgIFxlbnVtIFFQbGF0Zm9ybVNlcnZpY2VzOjpDYXBh YmlsaXR5CisrCisrICAgIENhcGFiaWxpdGllcyBhcmUgdXNlZCB0byBkZXRlcm1pbmUgYSBzcGVj aWZpYyBwbGF0Zm9ybSBzZXJ2aWNlJ3MgYXZhaWxhYmlsaXR5LgorKworKyAgICBcdmFsdWUgQ29s b3JQaWNraW5nRnJvbVNjcmVlbiBUaGUgcGxhdGZvcm0gbmF0aXZlbHkgc3VwcG9ydHMgY29sb3Ig cGlja2luZyBmcm9tIHNjcmVlbi4KKysgICAgVGhpcyBjYXBhYmlsaXR5IGluZGljYXRlcyB0aGF0 IHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyAib3BhcXVlIiBjb2xvciBwaWNraW5nLCB3aGVyZSB0aGUK KysgICAgcGxhdGZvcm0gaW1wbGVtZW50cyBhIGNvbXBsZXRlIHVzZXIgZXhwZXJpZW5jZSBmb3Ig Y29sb3IgcGlja2luZyBhbmQgb3V0cHV0cyBhIGNvbG9yLgorKyAgICBUaGlzIGlzIGluIGNvbnRy YXN0IHRvIHRoZSBhcHBsaWNhdGlvbiBpbXBsZW1lbnRpbmcgdGhlIGNvbG9yIHBpY2tpbmcgdXNl ciBleHBlcmllbmNlCisrICAgICh0YWtpbmcgY2FyZSBvZiBzaG93aW5nIGEgY3Jvc3MgaGFpciwg aW5zdHJ1Y3RpbmcgdGhlIHBsYXRmb3JtIGludGVncmF0aW9uIHRvIG9idGFpbgorKyAgICB0aGUg Y29sb3IgYXQgYSBnaXZlbiBwaXhlbCwgZXRjLikuIFRoZSByZWxhdGVkIHNlcnZpY2UgZnVuY3Rp b24gaXMgcGlja0NvbG9yKCkuCisrICovCisrCisgUVBsYXRmb3JtU2VydmljZXM6OlFQbGF0Zm9y bVNlcnZpY2VzKCkKKyB7IH0KKyAKK0BAIC04NSw1ICs5OCwxNiBAQCBRQnl0ZUFycmF5IFFQbGF0 Zm9ybVNlcnZpY2VzOjpkZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdAorICAgICByZXR1cm4gUUJ5 dGVBcnJheSgiVU5LTk9XTiIpOworIH0KKyAKKytRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIg KlFQbGF0Zm9ybVNlcnZpY2VzOjpjb2xvclBpY2tlcihRV2luZG93ICpwYXJlbnQpCisreworKyAg ICBRX1VOVVNFRChwYXJlbnQpOworKyAgICByZXR1cm4gbnVsbHB0cjsKKyt9CisrCisrYm9vbCBR UGxhdGZvcm1TZXJ2aWNlczo6aGFzQ2FwYWJpbGl0eShDYXBhYmlsaXR5IGNhcGFiaWxpdHkpIGNv bnN0CisreworKyAgICBRX1VOVVNFRChjYXBhYmlsaXR5KQorKyAgICByZXR1cm4gZmFsc2U7Cisr fQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJu ZWwvcXBsYXRmb3Jtc2VydmljZXMuaCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1z ZXJ2aWNlcy5oCitpbmRleCA1ZGU5NmNmYTdkLi5hOGIyYTRjZTcxIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmgKKysrKyBiL3F0YmFzZS9zcmMv Z3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5oCitAQCAtNTAsMTYgKzUwLDMyIEBACisgLy8K KyAKKyAjaW5jbHVkZSA8UXRHdWkvcXRndWlnbG9iYWwuaD4KKysjaW5jbHVkZSA8UXRDb3JlL3Fv YmplY3QuaD4KKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBjbGFzcyBRVXJsOworK2NsYXNz IFFXaW5kb3c7CisrCisrY2xhc3MgUV9HVUlfRVhQT1JUIFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBp Y2tlciA6IHB1YmxpYyBRT2JqZWN0CisreworKyAgICBRX09CSkVDVAorK3B1YmxpYzoKKysgICAg dXNpbmcgUU9iamVjdDo6UU9iamVjdDsKKysgICAgdmlydHVhbCB2b2lkIHBpY2tDb2xvcigpID0g MDsKKytRX1NJR05BTFM6CisrICAgIHZvaWQgY29sb3JQaWNrZWQoY29uc3QgUUNvbG9yICZjb2xv cik7CisrfTsKKyAKKyBjbGFzcyBRX0dVSV9FWFBPUlQgUVBsYXRmb3JtU2VydmljZXMKKyB7Cisg cHVibGljOgorICAgICBRX0RJU0FCTEVfQ09QWV9NT1ZFKFFQbGF0Zm9ybVNlcnZpY2VzKQorIAor KyAgICBlbnVtIENhcGFiaWxpdHkgeworKyAgICAgICAgQ29sb3JQaWNraW5nLAorKyAgICB9Owor KworICAgICBRUGxhdGZvcm1TZXJ2aWNlcygpOworICAgICB2aXJ0dWFsIH5RUGxhdGZvcm1TZXJ2 aWNlcygpIHsgfQorIAorQEAgLTY3LDYgKzgzLDEwIEBAIHB1YmxpYzoKKyAgICAgdmlydHVhbCBi b29sIG9wZW5Eb2N1bWVudChjb25zdCBRVXJsICZ1cmwpOworIAorICAgICB2aXJ0dWFsIFFCeXRl QXJyYXkgZGVza3RvcEVudmlyb25tZW50KCkgY29uc3Q7CisrCisrICAgIHZpcnR1YWwgYm9vbCBo YXNDYXBhYmlsaXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0eSkgY29uc3Q7CisrCisrICAgIHZpcnR1 YWwgUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpjb2xvclBpY2tlcihRV2luZG93ICpwYXJl bnQgPSBudWxscHRyKTsKKyB9OworIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuY3BwIGIvcXRiYXNlL3NyYy9ndWkv a2VybmVsL3FwbGF0Zm9ybXRoZW1lLmNwcAoraW5kZXggNzE1MjFjMDMzOS4uMjMyNTg3MzI0NSAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5jcHAKKysr KyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5jcHAKK0BAIC0xNjMsNiAr MTYzLDggQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgICAgIFx2YWx1ZSBTaG93U2hvcnRjdXRz SW5Db250ZXh0TWVudXMgKGJvb2wpIFdoZXRoZXIgdG8gZGlzcGxheSBzaG9ydGN1dCBrZXkgc2Vx dWVuY2VzIGluIGNvbnRleHQgbWVudXMuCisgCisrICAgIFx2YWx1ZSBCdXR0b25QcmVzc0tleXMg KFFMaXN0PFF0OjpLZXk+KSBBIGxpc3Qgb2Yga2V5cyB0aGF0IGNhbiBiZSB1c2VkIHRvIHByZXNz IGJ1dHRvbnMgdmlhIGtleWJvYXJkIGlucHV0LgorKworICAgICBcc2EgdGhlbWVIaW50KCksIFFT dHlsZTo6cGl4ZWxNZXRyaWMoKQorICovCisgCitAQCAtNTYzLDYgKzU2NSw4IEBAIFFWYXJpYW50 IFFQbGF0Zm9ybVRoZW1lOjpkZWZhdWx0VGhlbWVIaW50KFRoZW1lSGludCBoaW50KQorICAgICAg ICAgfQorICAgICBjYXNlIE1vdXNlUXVpY2tTZWxlY3Rpb25UaHJlc2hvbGQ6CisgICAgICAgICBy ZXR1cm4gUVZhcmlhbnQoMTApOworKyAgICBjYXNlIEJ1dHRvblByZXNzS2V5czoKKysgICAgICAg IHJldHVybiBRVmFyaWFudDo6ZnJvbVZhbHVlKFFMaXN0PFF0OjpLZXk+KHsgUXQ6OktleV9TcGFj ZSwgUXQ6OktleV9TZWxlY3QgfSkpOworICAgICB9CisgICAgIHJldHVybiBRVmFyaWFudCgpOwor IH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuaCBi L3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5oCitpbmRleCAzMTg1ZmM0NTQx Li43ZTZjOWQ1NzQwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9y bXRoZW1lLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5oCitA QCAtMTIwLDcgKzEyMCw4IEBAIHB1YmxpYzoKKyAgICAgICAgIFRvdWNoRG91YmxlVGFwRGlzdGFu Y2UsCisgICAgICAgICBTaG93U2hvcnRjdXRzSW5Db250ZXh0TWVudXMsCisgICAgICAgICBJY29u RmFsbGJhY2tTZWFyY2hQYXRocywKKy0gICAgICAgIE1vdXNlUXVpY2tTZWxlY3Rpb25UaHJlc2hv bGQKKysgICAgICAgIE1vdXNlUXVpY2tTZWxlY3Rpb25UaHJlc2hvbGQsCisrICAgICAgICBCdXR0 b25QcmVzc0tleXMKKyAgICAgfTsKKyAKKyAgICAgZW51bSBEaWFsb2dUeXBlIHsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9r ZXJuZWwvcXNjcmVlbi5jcHAKK2luZGV4IDhlMGViMzUxMTYuLjVkMTcyYTU4ZGQgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Z3VpL2tlcm5lbC9xc2NyZWVuLmNwcAorQEAgLTc3LDYgKzc3LDEyIEBAIFFTY3JlZW46OlFTY3Jl ZW4oUVBsYXRmb3JtU2NyZWVuICpzY3JlZW4pCisgICAgIGQtPnNldFBsYXRmb3JtU2NyZWVuKHNj cmVlbik7CisgfQorIAorK3ZvaWQgUVNjcmVlblByaXZhdGU6OnVwZGF0ZUxvZ2ljYWxEcGkoKQor K3sKKysgICAgbG9naWNhbERwaSA9IFFQbGF0Zm9ybVNjcmVlbjo6b3ZlcnJpZGVEcGkocGxhdGZv cm1TY3JlZW4tPmxvZ2ljYWxEcGkoKSk7CisrICAgIHVwZGF0ZUdlb21ldHJpZXNXaXRoU2lnbmFs cygpOyAvLyB1cGRhdGVzIGdlb21ldHJpZXMgYmFzZWQgb24gc2NhbGUgZmFjdG9yCisrfQorKwor IHZvaWQgUVNjcmVlblByaXZhdGU6OnVwZGF0ZUdlb21ldHJpZXNXaXRoU2lnbmFscygpCisgewor ICAgICBjb25zdCBRUmVjdCBvbGRHZW9tZXRyeSA9IGdlb21ldHJ5OworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9x c2NyZWVuX3AuaAoraW5kZXggN2RhNTQyYzI1ZS4uZTUwZmMzMTkwYiAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2Vy bmVsL3FzY3JlZW5fcC5oCitAQCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6CisgICAgICAgICBnZW9t ZXRyeSA9IHBsYXRmb3JtU2NyZWVuLT5kZXZpY2VJbmRlcGVuZGVudEdlb21ldHJ5KCk7CisgICAg ICAgICBhdmFpbGFibGVHZW9tZXRyeSA9IFFIaWdoRHBpOjpmcm9tTmF0aXZlKHBsYXRmb3JtU2Ny ZWVuLT5hdmFpbGFibGVHZW9tZXRyeSgpLCBRSGlnaERwaVNjYWxpbmc6OmZhY3RvcihwbGF0Zm9y bVNjcmVlbiksIGdlb21ldHJ5LnRvcExlZnQoKSk7CisgICAgIH0KKysgICAgdm9pZCB1cGRhdGVM b2dpY2FsRHBpKCk7CisgCisgICAgIHZvaWQgdXBkYXRlUHJpbWFyeU9yaWVudGF0aW9uKCk7Cisg ICAgIHZvaWQgdXBkYXRlR2VvbWV0cmllc1dpdGhTaWduYWxzKCk7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9ndWkvcGFpbnRpbmcvcWJsZW5kZnVuY3Rpb25zX3AuaCBiL3F0YmFzZS9zcmMvZ3Vp L3BhaW50aW5nL3FibGVuZGZ1bmN0aW9uc19wLmgKK2luZGV4IDA4MGRhOThlYzQuLjY5OTdkNjJi M2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xYmxlbmRmdW5jdGlvbnNf cC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xYmxlbmRmdW5jdGlvbnNfcC5oCitA QCAtMjQ2LDI1ICsyNDYsMzIgQEAgdm9pZCBxdF90cmFuc2Zvcm1faW1hZ2VfcmFzdGVyaXplKERl c3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IGR1ZHgsIGludCBkdmR4LCBpbnQgZHVkeSwgaW50IGR2ZHksIGludCB1MCwgaW50 IHYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbGVuZGVyIGJsZW5kZXIp CisgeworLSAgICBpbnQgZnJvbVkgPSBxTWF4KHFSb3VuZCh0b3BZKSwgY2xpcC50b3AoKSk7Cist ICAgIGludCB0b1kgPSBxTWluKHFSb3VuZChib3R0b21ZKSwgY2xpcC50b3AoKSArIGNsaXAuaGVp Z2h0KCkpOworKyAgICBxaW50NjQgZnJvbVkgPSBxTWF4KHFSb3VuZCh0b3BZKSwgY2xpcC50b3Ao KSk7CisrICAgIHFpbnQ2NCB0b1kgPSBxTWluKHFSb3VuZChib3R0b21ZKSwgY2xpcC50b3AoKSAr IGNsaXAuaGVpZ2h0KCkpOworICAgICBpZiAoZnJvbVkgPj0gdG9ZKQorICAgICAgICAgcmV0dXJu OworIAorICAgICBxcmVhbCBsZWZ0U2xvcGUgPSAoYm90dG9tTGVmdC54IC0gdG9wTGVmdC54KSAv IChib3R0b21MZWZ0LnkgLSB0b3BMZWZ0LnkpOworICAgICBxcmVhbCByaWdodFNsb3BlID0gKGJv dHRvbVJpZ2h0LnggLSB0b3BSaWdodC54KSAvIChib3R0b21SaWdodC55IC0gdG9wUmlnaHQueSk7 CistICAgIGludCBkeF9sID0gaW50KGxlZnRTbG9wZSAqIDB4MTAwMDApOworLSAgICBpbnQgZHhf ciA9IGludChyaWdodFNsb3BlICogMHgxMDAwMCk7CistICAgIGludCB4X2wgPSBpbnQoKHRvcExl ZnQueCArIChxcmVhbCgwLjUpICsgZnJvbVkgLSB0b3BMZWZ0LnkpICogbGVmdFNsb3BlICsgcXJl YWwoMC41KSkgKiAweDEwMDAwKTsKKy0gICAgaW50IHhfciA9IGludCgodG9wUmlnaHQueCArIChx cmVhbCgwLjUpICsgZnJvbVkgLSB0b3BSaWdodC55KSAqIHJpZ2h0U2xvcGUgKyBxcmVhbCgwLjUp KSAqIDB4MTAwMDApOworLQorLSAgICBpbnQgZnJvbVgsIHRvWCwgeDEsIHgyLCB1LCB2LCBpLCBp aTsKKysgICAgcWludDY0IGR4X2wgPSBxaW50NjQobGVmdFNsb3BlICogMHgxMDAwMCk7CisrICAg IHFpbnQ2NCBkeF9yID0gcWludDY0KHJpZ2h0U2xvcGUgKiAweDEwMDAwKTsKKysgICAgcWludDY0 IHhfbCA9IHFpbnQ2NCgodG9wTGVmdC54ICsgKHFyZWFsKDAuNSkgKyBmcm9tWSAtIHRvcExlZnQu eSkgKiBsZWZ0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4MTAwMDApOworKyAgICBxaW50NjQgeF9y ID0gcWludDY0KCh0b3BSaWdodC54ICsgKHFyZWFsKDAuNSkgKyBmcm9tWSAtIHRvcFJpZ2h0Lnkp ICogcmlnaHRTbG9wZSArIHFyZWFsKDAuNSkpICogMHgxMDAwMCk7CisrCisrICAgIHFpbnQ2NCBz b3VyY2VSZWN0VG9wID0gcWludDY0KHNvdXJjZVJlY3QudG9wKCkpOworKyAgICBxaW50NjQgc291 cmNlUmVjdExlZnQgPSBxaW50NjQoc291cmNlUmVjdC5sZWZ0KCkpOworKyAgICBxaW50NjQgc291 cmNlUmVjdFdpZHRoID0gcWludDY0KHNvdXJjZVJlY3Qud2lkdGgoKSk7CisrICAgIHFpbnQ2NCBz b3VyY2VSZWN0SGVpZ2h0ID0gcWludDY0KHNvdXJjZVJlY3QuaGVpZ2h0KCkpOworKyAgICBxaW50 NjQgY2xpcExlZnQgPSBxaW50NjQoY2xpcC5sZWZ0KCkpOworKyAgICBxaW50NjQgY2xpcFdpZHRo ID0gcWludDY0KGNsaXAud2lkdGgoKSk7CisrCisrICAgIHFpbnQ2NCBmcm9tWCwgdG9YLCB4MSwg eDIsIHUsIHYsIGksIGlpOworICAgICBEZXN0VCAqbGluZTsKKy0gICAgZm9yIChpbnQgeSA9IGZy b21ZOyB5IDwgdG9ZOyArK3kpIHsKKysgICAgZm9yIChxaW50NjQgeSA9IGZyb21ZOyB5IDwgdG9Z OyArK3kpIHsKKyAgICAgICAgIGxpbmUgPSByZWludGVycHJldF9jYXN0PERlc3RUICo+KHJlaW50 ZXJwcmV0X2Nhc3Q8dWNoYXIgKj4oZGVzdFBpeGVscykgKyB5ICogZGJwbCk7CisgCistICAgICAg ICBmcm9tWCA9IHFNYXgoeF9sID4+IDE2LCBjbGlwLmxlZnQoKSk7CistICAgICAgICB0b1ggPSBx TWluKHhfciA+PiAxNiwgY2xpcC5sZWZ0KCkgKyBjbGlwLndpZHRoKCkpOworKyAgICAgICAgZnJv bVggPSBxTWF4KHhfbCA+PiAxNiwgY2xpcExlZnQpOworKyAgICAgICAgdG9YID0gcU1pbih4X3Ig Pj4gMTYsIGNsaXBMZWZ0ICsgY2xpcFdpZHRoKTsKKyAgICAgICAgIGlmIChmcm9tWCA8IHRvWCkg eworICAgICAgICAgICAgIC8vIEJlY2F1c2Ugb2Ygcm91bmRpbmcsIHdlIGNhbiBnZXQgc291cmNl IGNvb3JkaW5hdGVzIG91dHNpZGUgdGhlIHNvdXJjZSBpbWFnZS4KKyAgICAgICAgICAgICAvLyBD bGFtcCB0aGVzZSBjb29yZGluYXRlcyB0byB0aGUgc291cmNlIHJlY3QgdG8gYXZvaWQgc2VnbWVu dGF0aW9uIGZhdWx0IGFuZAorQEAgLTI3NSwxMCArMjgyLDEwIEBAIHZvaWQgcXRfdHJhbnNmb3Jt X2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGwsCisgICAgICAgICAg ICAgdSA9IHgxICogZHVkeCArIHkgKiBkdWR5ICsgdTA7CisgICAgICAgICAgICAgdiA9IHgxICog ZHZkeCArIHkgKiBkdmR5ICsgdjA7CisgICAgICAgICAgICAgZm9yICg7IHgxIDwgdG9YOyArK3gx KSB7CistICAgICAgICAgICAgICAgIGludCB1dSA9IHUgPj4gMTY7CistICAgICAgICAgICAgICAg IGludCB2diA9IHYgPj4gMTY7CistICAgICAgICAgICAgICAgIGlmICh1dSA+PSBzb3VyY2VSZWN0 LmxlZnQoKSAmJiB1dSA8IHNvdXJjZVJlY3QubGVmdCgpICsgc291cmNlUmVjdC53aWR0aCgpCist ICAgICAgICAgICAgICAgICAgICAmJiB2diA+PSBzb3VyY2VSZWN0LnRvcCgpICYmIHZ2IDwgc291 cmNlUmVjdC50b3AoKSArIHNvdXJjZVJlY3QuaGVpZ2h0KCkpIHsKKysgICAgICAgICAgICAgICAg cWludDY0IHV1ID0gdSA+PiAxNjsKKysgICAgICAgICAgICAgICAgcWludDY0IHZ2ID0gdiA+PiAx NjsKKysgICAgICAgICAgICAgICAgaWYgKHV1ID49IHNvdXJjZVJlY3RMZWZ0ICYmIHV1IDwgc291 cmNlUmVjdExlZnQgKyBzb3VyY2VSZWN0V2lkdGgKKysgICAgICAgICAgICAgICAgICAgICYmIHZ2 ID49IHNvdXJjZVJlY3RUb3AgJiYgdnYgPCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVjdEhlaWdo dCkgeworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICAgdSArPSBkdWR4OworQEAgLTI5MCwxMCArMjk3LDEwIEBAIHZvaWQgcXRf dHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGwsCisg ICAgICAgICAgICAgdSA9ICh4MiAtIDEpICogZHVkeCArIHkgKiBkdWR5ICsgdTA7CisgICAgICAg ICAgICAgdiA9ICh4MiAtIDEpICogZHZkeCArIHkgKiBkdmR5ICsgdjA7CisgICAgICAgICAgICAg Zm9yICg7IHgyID4geDE7IC0teDIpIHsKKy0gICAgICAgICAgICAgICAgaW50IHV1ID0gdSA+PiAx NjsKKy0gICAgICAgICAgICAgICAgaW50IHZ2ID0gdiA+PiAxNjsKKy0gICAgICAgICAgICAgICAg aWYgKHV1ID49IHNvdXJjZVJlY3QubGVmdCgpICYmIHV1IDwgc291cmNlUmVjdC5sZWZ0KCkgKyBz b3VyY2VSZWN0LndpZHRoKCkKKy0gICAgICAgICAgICAgICAgICAgICYmIHZ2ID49IHNvdXJjZVJl Y3QudG9wKCkgJiYgdnYgPCBzb3VyY2VSZWN0LnRvcCgpICsgc291cmNlUmVjdC5oZWlnaHQoKSkg eworKyAgICAgICAgICAgICAgICBxaW50NjQgdXUgPSB1ID4+IDE2OworKyAgICAgICAgICAgICAg ICBxaW50NjQgdnYgPSB2ID4+IDE2OworKyAgICAgICAgICAgICAgICBpZiAodXUgPj0gc291cmNl UmVjdExlZnQgJiYgdXUgPCBzb3VyY2VSZWN0TGVmdCArIHNvdXJjZVJlY3RXaWR0aAorKyAgICAg ICAgICAgICAgICAgICAgJiYgdnYgPj0gc291cmNlUmVjdFRvcCAmJiB2diA8IHNvdXJjZVJlY3RU b3AgKyBzb3VyY2VSZWN0SGVpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB1IC09IGR1ZHg7CitAQCAtMzA4LDgg KzMxNSw4IEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBp eGVscywgaW50IGRicGwsCisgICAgICAgICAgICAgLy8gQmVnaW5uaW5nIG9mIHRoZSBzY2FuIGxp bmUsIHdpdGggcGVyLXBpeGVsIGNoZWNrcy4KKyAgICAgICAgICAgICBpID0geDEgLSBmcm9tWDsK KyAgICAgICAgICAgICB3aGlsZSAoaSkgeworLSAgICAgICAgICAgICAgICBpbnQgdXUgPSBxQm91 bmQoc291cmNlUmVjdC5sZWZ0KCksIHUgPj4gMTYsIHNvdXJjZVJlY3QubGVmdCgpICsgc291cmNl UmVjdC53aWR0aCgpIC0gMSk7CistICAgICAgICAgICAgICAgIGludCB2diA9IHFCb3VuZChzb3Vy Y2VSZWN0LnRvcCgpLCB2ID4+IDE2LCBzb3VyY2VSZWN0LnRvcCgpICsgc291cmNlUmVjdC5oZWln aHQoKSAtIDEpOworKyAgICAgICAgICAgICAgICBxaW50NjQgdXUgPSBxQm91bmQoc291cmNlUmVj dExlZnQsIHUgPj4gMTYsIHNvdXJjZVJlY3RMZWZ0ICsgc291cmNlUmVjdFdpZHRoIC0gMSk7Cisr ICAgICAgICAgICAgICAgIHFpbnQ2NCB2diA9IHFCb3VuZChzb3VyY2VSZWN0VG9wLCB2ID4+IDE2 LCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVjdEhlaWdodCAtIDEpOworICAgICAgICAgICAgICAg ICBibGVuZGVyLndyaXRlKGxpbmUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgU3JjVCAqPihyZWlu dGVycHJldF9jYXN0PGNvbnN0IHVjaGFyICo+KHNyY1BpeGVscykgKyB2diAqIHNicGwpW3V1XSk7 CisgICAgICAgICAgICAgICAgIHUgKz0gZHVkeDsKKyAgICAgICAgICAgICAgICAgdiArPSBkdmR4 OworQEAgLTM0OCw4ICszNTUsOCBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUo RGVzdFQgKmRlc3RQaXhlbHMsIGludCBkYnBsLAorICAgICAgICAgICAgIC8vIEVuZCBvZiB0aGUg c2NhbiBsaW5lLCB3aXRoIHBlci1waXhlbCBjaGVja3MuCisgICAgICAgICAgICAgaSA9IHRvWCAt IHgyOworICAgICAgICAgICAgIHdoaWxlIChpKSB7CistICAgICAgICAgICAgICAgIGludCB1dSA9 IHFCb3VuZChzb3VyY2VSZWN0LmxlZnQoKSwgdSA+PiAxNiwgc291cmNlUmVjdC5sZWZ0KCkgKyBz b3VyY2VSZWN0LndpZHRoKCkgLSAxKTsKKy0gICAgICAgICAgICAgICAgaW50IHZ2ID0gcUJvdW5k KHNvdXJjZVJlY3QudG9wKCksIHYgPj4gMTYsIHNvdXJjZVJlY3QudG9wKCkgKyBzb3VyY2VSZWN0 LmhlaWdodCgpIC0gMSk7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB1dSA9IHFCb3VuZChzb3Vy Y2VSZWN0TGVmdCwgdSA+PiAxNiwgc291cmNlUmVjdExlZnQgKyBzb3VyY2VSZWN0V2lkdGggLSAx KTsKKysgICAgICAgICAgICAgICAgcWludDY0IHZ2ID0gcUJvdW5kKHNvdXJjZVJlY3RUb3AsIHYg Pj4gMTYsIHNvdXJjZVJlY3RUb3AgKyBzb3VyY2VSZWN0SGVpZ2h0IC0gMSk7CisgICAgICAgICAg ICAgICAgIGJsZW5kZXIud3JpdGUobGluZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBTcmNUICo+ KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWNoYXIgKj4oc3JjUGl4ZWxzKSArIHZ2ICogc2JwbClb dXVdKTsKKyAgICAgICAgICAgICAgICAgdSArPSBkdWR4OworICAgICAgICAgICAgICAgICB2ICs9 IGR2ZHg7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWNvbG9ydHJjbHV0 X3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fjb2xvcnRyY2x1dF9wLmgKK2luZGV4IDc2 YTZhNjA4MDMuLjI0ZmQ1MjJlNmMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGlu Zy9xY29sb3J0cmNsdXRfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xY29sb3J0 cmNsdXRfcC5oCitAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKKyAgICAgICAgIHJldHVybiBR UmdiYTY0Ojpmcm9tUmdiYTY0KHIsIGcsIGIsIHFBbHBoYShyZ2IzMikgKiAyNTcpOworICNlbmRp ZgorICAgICB9CisrICAgIFFSZ2JhNjQgdG9MaW5lYXI2NChRUmdiYTY0KSBjb25zdCA9IGRlbGV0 ZTsKKyAKKyAgICAgUVJnYiB0b0xpbmVhcihRUmdiIHJnYjMyKSBjb25zdAorICAgICB7CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWRyYXdoZWxwZXIuY3BwIGIvcXRiYXNl L3NyYy9ndWkvcGFpbnRpbmcvcWRyYXdoZWxwZXIuY3BwCitpbmRleCBhNjE3OTM1MDhhLi41YmEy ZDI3N2I3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWRyYXdoZWxwZXIu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xZHJhd2hlbHBlci5jcHAKK0BAIC02 MDkxLDcgKzYwOTEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWxwaGFyZ2JibGVuZF9hcmdiMzIo cXVpbnQzMiAqZHN0LCB1aW50IGNvdmVyYWdlLCBjb25zdCBRUmdiYQorIHN0YXRpYyBpbmxpbmUg dm9pZCByZ2JCbGVuZFBpeGVsKFFSZ2JhNjQgJmRzdCwgaW50IGNvdmVyYWdlLCBRUmdiYTY0IHNs aW5lYXIsIGNvbnN0IFFDb2xvclRyY0x1dCAqY29sb3JQcm9maWxlKQorIHsKKyAgICAgLy8gRG8g YSBnYW1tYWNvcnJlY3RlZCBSR0IgYWxwaGFibGVuZC4uLgorLSAgICBjb25zdCBRUmdiYTY0IGRs aW5lYXIgPSBjb2xvclByb2ZpbGUgPyBjb2xvclByb2ZpbGUtPnRvTGluZWFyNjQoZHN0KSA6IGRz dDsKKysgICAgY29uc3QgUVJnYmE2NCBkbGluZWFyID0gY29sb3JQcm9maWxlID8gY29sb3JQcm9m aWxlLT50b0xpbmVhcihkc3QpIDogZHN0OworIAorICAgICBRUmdiYTY0IGJsZW5kID0gcmdiQmxl bmQoZGxpbmVhciwgc2xpbmVhciwgY292ZXJhZ2UpOworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXIuY3BwIGIvcXRiYXNlL3NyYy9ndWkv cGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlci5jcHAKK2luZGV4IDI4MzkyM2RlNTIuLmYwOGVi OWNiZWUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVf cmFzdGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jh c3Rlci5jcHAKK0BAIC01NjAsMzEgKzU2MCw2IEBAIHZvaWQgUVJhc3RlclBhaW50RW5naW5lOjp1 cGRhdGVNYXRyaXgoY29uc3QgUVRyYW5zZm9ybSAmbWF0cml4KQorICAgICBRUmFzdGVyUGFpbnRF bmdpbmVTdGF0ZSAqcyA9IHN0YXRlKCk7CisgICAgIC8vIEZBTENPTjogZ2V0IHJpZCBvZiB0aGlz IGxpbmUsIHNlZSBkcmF3SW1hZ2UgY2FsbCBiZWxvdy4KKyAgICAgcy0+bWF0cml4ID0gbWF0cml4 OworLSAgICBRVHJhbnNmb3JtOjpUcmFuc2Zvcm1hdGlvblR5cGUgdHhvcCA9IHMtPm1hdHJpeC50 eXBlKCk7CistCistICAgIHN3aXRjaCAodHhvcCkgeworLQorLSAgICBjYXNlIFFUcmFuc2Zvcm06 OlR4Tm9uZToKKy0gICAgICAgIHMtPmZsYWdzLmludF94Zm9ybSA9IHRydWU7CistICAgICAgICBi cmVhazsKKy0KKy0gICAgY2FzZSBRVHJhbnNmb3JtOjpUeFRyYW5zbGF0ZToKKy0gICAgICAgIHMt PmZsYWdzLmludF94Zm9ybSA9IHFyZWFsKGludChzLT5tYXRyaXguZHgoKSkpID09IHMtPm1hdHJp eC5keCgpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHFyZWFsKGludChzLT5tYXRy aXguZHkoKSkpID09IHMtPm1hdHJpeC5keSgpOworLSAgICAgICAgYnJlYWs7CistCistICAgIGNh c2UgUVRyYW5zZm9ybTo6VHhTY2FsZToKKy0gICAgICAgIHMtPmZsYWdzLmludF94Zm9ybSA9IHFy ZWFsKGludChzLT5tYXRyaXguZHgoKSkpID09IHMtPm1hdHJpeC5keCgpCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICYmIHFyZWFsKGludChzLT5tYXRyaXguZHkoKSkpID09IHMtPm1hdHJp eC5keSgpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHFyZWFsKGludChzLT5tYXRy aXgubTExKCkpKSA9PSBzLT5tYXRyaXgubTExKCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgJiYgcXJlYWwoaW50KHMtPm1hdHJpeC5tMjIoKSkpID09IHMtPm1hdHJpeC5tMjIoKTsKKy0g ICAgICAgIGJyZWFrOworLQorLSAgICBkZWZhdWx0OiAvLyBzaGVhciAvIHBlcnNwZWN0aXZlLi4u CistICAgICAgICBzLT5mbGFncy5pbnRfeGZvcm0gPSBmYWxzZTsKKy0gICAgICAgIGJyZWFrOwor LSAgICB9CistCisgICAgIHMtPmZsYWdzLnR4X25vc2hlYXIgPSBxdF9zY2FsZUZvclRyYW5zZm9y bShzLT5tYXRyaXgsICZzLT50eHNjYWxlKTsKKyAKKyAgICAgZW5zdXJlT3V0bGluZU1hcHBlcigp OworQEAgLTYxNyw3ICs1OTIsNiBAQCBRUmFzdGVyUGFpbnRFbmdpbmVTdGF0ZTo6UVJhc3RlclBh aW50RW5naW5lU3RhdGUoKQorICAgICBmbGFncy5iaWxpbmVhciA9IGZhbHNlOworICAgICBmbGFn cy5sZWdhY3lfcm91bmRpbmcgPSBmYWxzZTsKKyAgICAgZmxhZ3MuZmFzdF90ZXh0ID0gdHJ1ZTsK Ky0gICAgZmxhZ3MuaW50X3hmb3JtID0gdHJ1ZTsKKyAgICAgZmxhZ3MudHhfbm9zaGVhciA9IHRy dWU7CisgICAgIGZsYWdzLmZhc3RfaW1hZ2VzID0gdHJ1ZTsKKyAKK0BAIC0xNzkzLDcgKzE3Njcs NyBAQCB2b2lkIFFSYXN0ZXJQYWludEVuZ2luZTo6ZmlsbChjb25zdCBRVmVjdG9yUGF0aCAmcGF0 aCwgY29uc3QgUUJydXNoICZicnVzaCkKKyAgICAgUVJlY3RGIGNwUmVjdCA9IHBhdGguY29udHJv bFBvaW50UmVjdCgpOworICAgICBjb25zdCBRUmVjdEYgcGF0aERldmljZVJlY3QgPSBzLT5tYXRy aXgubWFwUmVjdChjcFJlY3QpOworICAgICAvLyBTa2lwIHBhdGhzIHRoYXQgYnkgY29uc2VydmF0 aXZlIGVzdGltYXRlcyBhcmUgY29tcGxldGVseSBvdXRzaWRlIHRoZSBwYWludCBkZXZpY2UuCist ICAgIGlmICghcGF0aERldmljZVJlY3QuaW50ZXJzZWN0cyhRUmVjdEYoZC0+ZGV2aWNlUmVjdCkp KQorKyAgICBpZiAoIXBhdGhEZXZpY2VSZWN0LmludGVyc2VjdHMoUVJlY3RGKGQtPmRldmljZVJl Y3QpKSB8fCAhcGF0aERldmljZVJlY3QuaXNWYWxpZCgpKQorICAgICAgICAgcmV0dXJuOworIAor ICAgICBQcm9jZXNzU3BhbnMgYmxlbmQgPSBkLT5nZXRCcnVzaEZ1bmMocGF0aERldmljZVJlY3Qs ICZzLT5icnVzaERhdGEpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fw YWludGVuZ2luZV9yYXN0ZXJfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5n aW5lX3Jhc3Rlcl9wLmgKK2luZGV4IDA4OWFhZGMzZjcuLmJmNzM2M2Q1YWEgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyX3AuaAorKysrIGIv cXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlcl9wLmgKK0BAIC0xMTEs NyArMTExLDYgQEAgcHVibGljOgorICAgICAgICAgdWludCBiaWxpbmVhciA6IDE7CisgICAgICAg ICB1aW50IGxlZ2FjeV9yb3VuZGluZyA6IDE7CisgICAgICAgICB1aW50IGZhc3RfdGV4dCA6IDE7 CistICAgICAgICB1aW50IGludF94Zm9ybSA6IDE7CisgICAgICAgICB1aW50IHR4X25vc2hlYXIg OiAxOworICAgICAgICAgdWludCBmYXN0X2ltYWdlcyA6IDE7CisgICAgIH07CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZXJwYXRoLmNwcCBiL3F0YmFzZS9zcmMv Z3VpL3BhaW50aW5nL3FwYWludGVycGF0aC5jcHAKK2luZGV4IGY5NTQ0YTMyNDEuLmQ4MGZhZmVh ZjEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlcnBhdGguY3Bw CisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlcnBhdGguY3BwCitAQCAtMTI1 Myw3ICsxMjUzLDcgQEAgdm9pZCBRUGFpbnRlclBhdGg6OmFkZFRleHQoY29uc3QgUVBvaW50RiAm cG9pbnQsIGNvbnN0IFFGb250ICZmLCBjb25zdCBRU3RyaW5nICYKKyAKKyAgICAgICAgIGlmIChz aS5hbmFseXNpcy5mbGFncyA8IFFTY3JpcHRBbmFseXNpczo6VGFiT3JPYmplY3QpIHsKKyAgICAg ICAgICAgICBRR2x5cGhMYXlvdXQgZ2x5cGhzID0gZW5nLT5zaGFwZWRHbHlwaHMoJnNpKTsKKy0g ICAgICAgICAgICBRRm9udEVuZ2luZSAqZmUgPSBmLmQtPmVuZ2luZUZvclNjcmlwdChzaS5hbmFs eXNpcy5zY3JpcHQpOworKyAgICAgICAgICAgIFFGb250RW5naW5lICpmZSA9IGVuZy0+Zm9udEVu Z2luZShzaSk7CisgICAgICAgICAgICAgUV9BU1NFUlQoZmUpOworICAgICAgICAgICAgIGZlLT5h ZGRPdXRsaW5lVG9QYXRoKHgsIHksIGdseXBocywgdGhpcywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaS5hbmFseXNpcy5iaWRpTGV2ZWwgJSAyCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhdGhjbGlwcGVyX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3Bh aW50aW5nL3FwYXRoY2xpcHBlcl9wLmgKK2luZGV4IDk0NDRhODdiNzEuLjE4ZjY0YzVlOGMgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGF0aGNsaXBwZXJfcC5oCisrKysg Yi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGF0aGNsaXBwZXJfcC5oCitAQCAtMTU2LDcgKzE1 Niw3IEBAIHB1YmxpYzoKKyAgICAgaW50IHZlcnRleChEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25z dDsKKyAKKyBwcml2YXRlOgorLSAgICBpbnQgbV9uZXh0WzJdWzJdOworKyAgICBpbnQgbV9uZXh0 WzJdWzJdID0geyB7IC0xLCAtMSB9LCB7IC0xLCAtMSB9IH07CisgfTsKKyAKKyBjbGFzcyBRUGF0 aFNlZ21lbnRzCitAQCAtMjk2LDEwICsyOTYsNiBAQCBpbmxpbmUgUVBhdGhFZGdlOjpRUGF0aEVk Z2UoaW50IGEsIGludCBiKQorICAgICAsIGFuZ2xlKDApCisgICAgICwgaW52QW5nbGUoMCkKKyB7 CistICAgIG1fbmV4dFswXVswXSA9IC0xOworLSAgICBtX25leHRbMV1bMF0gPSAtMTsKKy0gICAg bV9uZXh0WzBdWzBdID0gLTE7CistICAgIG1fbmV4dFsxXVswXSA9IC0xOworIH0KKyAKKyBpbmxp bmUgaW50IFFQYXRoRWRnZTo6bmV4dChUcmF2ZXJzYWwgdHJhdmVyc2FsLCBEaXJlY3Rpb24gZGly ZWN0aW9uKSBjb25zdAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwZGYu Y3BwIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBkZi5jcHAKK2luZGV4IDMwNjY3NDRmMWIu LjJjOGQzYzNiNTMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGRmLmNw cAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBkZi5jcHAKK0BAIC0yNzYwLDYgKzI3 NjAsOCBAQCBpbnQgUVBkZkVuZ2luZVByaXZhdGU6OmFkZEJydXNoUGF0dGVybihjb25zdCBRVHJh bnNmb3JtICZtLCBib29sICpzcGVjaWZ5Q29sb3IsCisgICAgICAgICByZXR1cm4gZ3JhZGllbnRC cnVzaChicnVzaCwgbWF0cml4LCBnU3RhdGVPYmplY3QpOworICAgICB9CisgCisrICAgIG1hdHJp eCA9IGJydXNoLnRyYW5zZm9ybSgpICogbWF0cml4OworKworICAgICBpZiAoKCFicnVzaC5pc09w YXF1ZSgpICYmIGJydXNoLnN0eWxlKCkgPCBRdDo6TGluZWFyR3JhZGllbnRQYXR0ZXJuKSB8fCBv cGFjaXR5ICE9IDEuMCkKKyAgICAgICAgICpnU3RhdGVPYmplY3QgPSBhZGRDb25zdGFudEFscGhh T2JqZWN0KHFSb3VuZChicnVzaC5jb2xvcigpLmFscGhhKCkgKiBvcGFjaXR5KSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFSb3VuZChwZW4uY29sb3Io KS5hbHBoYSgpICogb3BhY2l0eSkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50 aW5nL3FzdHJva2VyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FzdHJva2VyLmNwcAor aW5kZXggY2I1ZDM5NWU4MC4uM2I2MzU3YTg5MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3Vp L3BhaW50aW5nL3FzdHJva2VyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXN0 cm9rZXIuY3BwCitAQCAtMTE4Miw2ICsxMTgyLDcgQEAgdm9pZCBRRGFzaFN0cm9rZXI6OnByb2Nl c3NDdXJyZW50U3VicGF0aCgpCisgICAgICAgICAvLyBDaGVjayBpZiB0aGUgZW50aXJlIGxpbmUg c2hvdWxkIGJlIGNsaXBwZWQgYXdheSBvciBzaW1wbGlmaWVkCisgICAgICAgICBib29sIGNsaXBJ dCA9IGNsaXBwaW5nICYmICFsaW5lSW50ZXJzZWN0c1JlY3QocHJldiwgZSwgY2xpcF90bCwgY2xp cF9icik7CisgICAgICAgICBib29sIHNraXBEYXNoaW5nID0gZWxlbiAqIGludlN1bUxlbmd0aCA+ IHJlcGV0aXRpb25MaW1pdCgpOworKyAgICAgICAgaW50IG1heERhc2hlcyA9IGRhc2hDb3VudDsK KyAgICAgICAgIGlmIChza2lwRGFzaGluZyB8fCBjbGlwSXQpIHsKKyAgICAgICAgICAgICAvLyBD dXQgYXdheSBmdWxsIGRhc2ggc2VxdWVuY2VzLgorICAgICAgICAgICAgIGVsZW4gLT0gc3RkOjpm bG9vcihlbGVuICogaW52U3VtTGVuZ3RoKSAqIHN1bUxlbmd0aDsKK0BAIC0xMTk2LDcgKzExOTcs NyBAQCB2b2lkIFFEYXNoU3Ryb2tlcjo6cHJvY2Vzc0N1cnJlbnRTdWJwYXRoKCkKKyAgICAgICAg ICAgICAgICAgICAgIHBvcyA9IGVzdG9wOyAvLyBtb3ZlIHBvcyB0byBuZXh0IHBhdGggZWxlbWVu dAorICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICAgICAgIH0g ZWxzZSB7IC8vIERhc2ggaXMgb24gdGhpcyBsaW5lCistICAgICAgICAgICAgICAgICAgICBwb3Mg PSBkcG9zICsgZXN0YXJ0OworKyAgICAgICAgICAgICAgICAgICAgcG9zID0gLS1tYXhEYXNoZXMg PiAwID8gZHBvcyArIGVzdGFydCA6IGVzdG9wOworICAgICAgICAgICAgICAgICAgICAgZG9uZSA9 IHBvcyA+PSBlc3RvcDsKKyAgICAgICAgICAgICAgICAgICAgIGlmICgrK2lkYXNoID49IGRhc2hD b3VudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZGFzaCA9IDA7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXRfYXR0cmlidXRpb24uanNvbiBiL3F0YmFzZS9zcmMv Z3VpL3BhaW50aW5nL3F0X2F0dHJpYnV0aW9uLmpzb24KK2luZGV4IDdiMTZlOGMyMTEuLjBlODdk MzBhYTIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xdF9hdHRyaWJ1dGlv bi5qc29uCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xdF9hdHRyaWJ1dGlvbi5qc29u CitAQCAtMTAsNyArMTAsNyBAQAorICAgICAgICAgIkhvbWVwYWdlIjogImh0dHA6Ly93d3cuZnJl ZXR5cGUub3JnIiwKKyAgICAgICAgICJMaWNlbnNlIjogIkZyZWV0eXBlIFByb2plY3QgTGljZW5z ZSBvciBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2Mi4wIG9ubHkiLAorICAgICAgICAgIkxp Y2Vuc2VJZCI6ICJGVEwgb3IgR1BMLTIuMCIsCistICAgICAgICAiTGljZW5zZUZpbGUiOiAiLi4v Li4vM3JkcGFydHkvZnJlZXR5cGUvZG9jcy9MSUNFTlNFLlRYVCIsCisrICAgICAgICAiTGljZW5z ZUZpbGUiOiAiLi4vLi4vM3JkcGFydHkvZnJlZXR5cGUvTElDRU5TRS5UWFQiLAorICAgICAgICAg IkNvcHlyaWdodCI6ICJDb3B5cmlnaHQgMjAwMC0yMDE2IGJ5IERhdmlkIFR1cm5lciwgUm9iZXJ0 IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4iCisgICAgIH0sCisgICAgIHsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9wX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3Jo aS9xc2hhZGVyX3BfcC5oCitpbmRleCBlYzlkMjU5NzFmLi40YTVhN2E2ZDUxIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJfcF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3Vp L3JoaS9xc2hhZGVyX3BfcC5oCitAQCAtNjgsMTMgKzY4LDEzIEBAIHN0cnVjdCBRX0dVSV9FWFBP UlQgUVNoYWRlclByaXZhdGUKKyAgICAgeworICAgICB9CisgCistICAgIFFTaGFkZXJQcml2YXRl KGNvbnN0IFFTaGFkZXJQcml2YXRlICpvdGhlcikKKysgICAgUVNoYWRlclByaXZhdGUoY29uc3Qg UVNoYWRlclByaXZhdGUgJm90aGVyKQorICAgICAgICAgOiByZWYoMSksCistICAgICAgICAgIHFz YlZlcnNpb24ob3RoZXItPnFzYlZlcnNpb24pLAorLSAgICAgICAgICBzdGFnZShvdGhlci0+c3Rh Z2UpLAorLSAgICAgICAgICBkZXNjKG90aGVyLT5kZXNjKSwKKy0gICAgICAgICAgc2hhZGVycyhv dGhlci0+c2hhZGVycyksCistICAgICAgICAgIGJpbmRpbmdzKG90aGVyLT5iaW5kaW5ncykKKysg ICAgICAgICAgcXNiVmVyc2lvbihvdGhlci5xc2JWZXJzaW9uKSwKKysgICAgICAgICAgc3RhZ2Uo b3RoZXIuc3RhZ2UpLAorKyAgICAgICAgICBkZXNjKG90aGVyLmRlc2MpLAorKyAgICAgICAgICBz aGFkZXJzKG90aGVyLnNoYWRlcnMpLAorKyAgICAgICAgICBiaW5kaW5ncyhvdGhlci5iaW5kaW5n cykKKyAgICAgeworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcmhpL3Fz aGFkZXJkZXNjcmlwdGlvbl9wX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyZGVzY3Jp cHRpb25fcF9wLmgKK2luZGV4IGVjMmIwYjZiNGMuLjNkYTMzYThhMmIgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5oCisrKysgYi9xdGJhc2Uv c3JjL2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5oCitAQCAtNjMsMTYgKzYzLDE2IEBA IHN0cnVjdCBRX0dVSV9FWFBPUlQgUVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0ZQorICAgICAgICAg bG9jYWxTaXplWzBdID0gbG9jYWxTaXplWzFdID0gbG9jYWxTaXplWzJdID0gMDsKKyAgICAgfQor IAorLSAgICBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlKGNvbnN0IFFTaGFkZXJEZXNjcmlwdGlv blByaXZhdGUgKm90aGVyKQorKyAgICBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlKGNvbnN0IFFT aGFkZXJEZXNjcmlwdGlvblByaXZhdGUgJm90aGVyKQorICAgICAgICAgOiByZWYoMSksCistICAg ICAgICAgIGluVmFycyhvdGhlci0+aW5WYXJzKSwKKy0gICAgICAgICAgb3V0VmFycyhvdGhlci0+ b3V0VmFycyksCistICAgICAgICAgIHVuaWZvcm1CbG9ja3Mob3RoZXItPnVuaWZvcm1CbG9ja3Mp LAorLSAgICAgICAgICBwdXNoQ29uc3RhbnRCbG9ja3Mob3RoZXItPnB1c2hDb25zdGFudEJsb2Nr cyksCistICAgICAgICAgIHN0b3JhZ2VCbG9ja3Mob3RoZXItPnN0b3JhZ2VCbG9ja3MpLAorLSAg ICAgICAgICBjb21iaW5lZEltYWdlU2FtcGxlcnMob3RoZXItPmNvbWJpbmVkSW1hZ2VTYW1wbGVy cyksCistICAgICAgICAgIHN0b3JhZ2VJbWFnZXMob3RoZXItPnN0b3JhZ2VJbWFnZXMpLAorLSAg ICAgICAgICBsb2NhbFNpemUob3RoZXItPmxvY2FsU2l6ZSkKKysgICAgICAgICAgaW5WYXJzKG90 aGVyLmluVmFycyksCisrICAgICAgICAgIG91dFZhcnMob3RoZXIub3V0VmFycyksCisrICAgICAg ICAgIHVuaWZvcm1CbG9ja3Mob3RoZXIudW5pZm9ybUJsb2NrcyksCisrICAgICAgICAgIHB1c2hD b25zdGFudEJsb2NrcyhvdGhlci5wdXNoQ29uc3RhbnRCbG9ja3MpLAorKyAgICAgICAgICBzdG9y YWdlQmxvY2tzKG90aGVyLnN0b3JhZ2VCbG9ja3MpLAorKyAgICAgICAgICBjb21iaW5lZEltYWdl U2FtcGxlcnMob3RoZXIuY29tYmluZWRJbWFnZVNhbXBsZXJzKSwKKysgICAgICAgICAgc3RvcmFn ZUltYWdlcyhvdGhlci5zdG9yYWdlSW1hZ2VzKSwKKysgICAgICAgICAgbG9jYWxTaXplKG90aGVy LmxvY2FsU2l6ZSkKKyAgICAgeworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9n dWkvdGV4dC9xZm9udGRhdGFiYXNlLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcWZvbnRkYXRh YmFzZS5jcHAKK2luZGV4IGE2NTdhOGM1MTYuLjRmYzAxMDA5NTggMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS90 ZXh0L3Fmb250ZGF0YWJhc2UuY3BwCitAQCAtOTgzLDcgKzk4Myw3IEBAIFFGb250RW5naW5lICps b2FkU2luZ2xlRW5naW5lKGludCBzY3JpcHQsCisgICAgICAgICBpZiAoc3R5bGUtPmtleS5zdHJl dGNoICE9IDAgJiYgcmVxdWVzdC5zdHJldGNoICE9IDAKKyAgICAgICAgICAgICAmJiAocmVxdWVz dC5zdHlsZU5hbWUuaXNFbXB0eSgpIHx8IHJlcXVlc3Quc3R5bGVOYW1lICE9IHN0eWxlLT5zdHls ZU5hbWUpKSB7CisgICAgICAgICAgICAgZGVmLnN0cmV0Y2ggPSAocmVxdWVzdC5zdHJldGNoICog MTAwICsgc3R5bGUtPmtleS5zdHJldGNoIC8gMikgLyBzdHlsZS0+a2V5LnN0cmV0Y2g7CistICAg ICAgICB9IGVsc2UgeworKyAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnN0cmV0Y2ggPT0gUUZv bnQ6OkFueVN0cmV0Y2gpIHsKKyAgICAgICAgICAgICBkZWYuc3RyZXRjaCA9IDEwMDsKKyAgICAg ICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZG9jdW1lbnRs YXlvdXQuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGRvY3VtZW50bGF5b3V0LmNwcAor aW5kZXggZjNlNmVhMjEwMC4uNzIyNjdlOTM4MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3Vp L3RleHQvcXRleHRkb2N1bWVudGxheW91dC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3RleHQv cXRleHRkb2N1bWVudGxheW91dC5jcHAKK0BAIC0yMTIzLDcgKzIxMjMsNyBAQCB2b2lkIFFUZXh0 RG9jdW1lbnRMYXlvdXRQcml2YXRlOjpkcmF3TGlzdEl0ZW0oY29uc3QgUVBvaW50RiAmb2Zmc2V0 LCBRUGFpbnRlciAqcAorIHsKKyAgICAgUV9RKGNvbnN0IFFUZXh0RG9jdW1lbnRMYXlvdXQpOwor ICAgICBjb25zdCBRVGV4dEJsb2NrRm9ybWF0IGJsb2NrRm9ybWF0ID0gYmwuYmxvY2tGb3JtYXQo KTsKKy0gICAgY29uc3QgUVRleHRDaGFyRm9ybWF0IGNoYXJGb3JtYXQgPSBRVGV4dEN1cnNvcihi bCkuY2hhckZvcm1hdCgpOworKyAgICBjb25zdCBRVGV4dENoYXJGb3JtYXQgY2hhckZvcm1hdCA9 IGJsLmNoYXJGb3JtYXQoKTsKKyAgICAgUUZvbnQgZm9udChjaGFyRm9ybWF0LmZvbnQoKSk7Cisg ICAgIGlmIChxLT5wYWludERldmljZSgpKQorICAgICAgICAgZm9udCA9IFFGb250KGZvbnQsIHEt PnBhaW50RGV2aWNlKCkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRl bmdpbmUuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGVuZ2luZS5jcHAKK2luZGV4IGNl NGFiYWM0NzIuLmE2YzY2ZTVkMmQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0 ZXh0ZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGVuZ2luZS5jcHAK K0BAIC0xLDYgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKy0qKiBDb3B5cmln aHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBU aGUgUXQgQ29tcGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5z aW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0R3VpIG1vZHVsZSBvZiB0 aGUgUXQgVG9vbGtpdC4KK0BAIC0xNTY1LDYgKzE1NjUsMTIgQEAgdm9pZCBRVGV4dEVuZ2luZTo6 c2hhcGVUZXh0KGludCBpdGVtKSBjb25zdAorICAgICAgICAgLy8gT3ZlcndyaXRlIHdpdGggMCB0 b2tlbiB0byBpbmRpY2F0ZSBmYWlsdXJlCisgICAgICAgICBRR2x5cGhMYXlvdXQgZyA9IGF2YWls YWJsZUdseXBocygmc2kpOworICAgICAgICAgZy5nbHlwaHNbMF0gPSAwOworKyAgICAgICAgZy5h dHRyaWJ1dGVzWzBdLmNsdXN0ZXJTdGFydCA9IHRydWU7CisrCisrICAgICAgICB1c2hvcnQgKmxv Z19jbHVzdGVycyA9IGxvZ0NsdXN0ZXJzKCZzaSk7CisrICAgICAgICBmb3IgKGludCBpID0gMDsg aSA8IGl0ZW1MZW5ndGg7ICsraSkKKysgICAgICAgICAgICBsb2dfY2x1c3RlcnNbaV0gPSAwOwor KworICAgICAgICAgcmV0dXJuOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9n dWkvdXRpbC9xZGVza3RvcHNlcnZpY2VzLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcWRlc2t0 b3BzZXJ2aWNlcy5jcHAKK2luZGV4IGZiYjYzYTk0MDguLjRkNWZhZmFhYTcgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2d1aS91dGlsL3FkZXNrdG9wc2VydmljZXMuY3BwCisrKysgYi9xdGJhc2Uv c3JjL2d1aS91dGlsL3FkZXNrdG9wc2VydmljZXMuY3BwCitAQCAtNTQsNiArNTQsOCBAQAorICNp bmNsdWRlIDxxcGEvcXBsYXRmb3JtaW50ZWdyYXRpb24uaD4KKyAjaW5jbHVkZSA8cWRpci5oPgor IAorKyNpbmNsdWRlIDxRdENvcmUvcHJpdmF0ZS9xbG9ja2luZ19wLmg+CisrCisgUVRfQkVHSU5f TkFNRVNQQUNFCisgCisgY2xhc3MgUU9wZW5VcmxIYW5kbGVyUmVnaXN0cnkgOiBwdWJsaWMgUU9i amVjdAorQEAgLTgxLDYgKzgzLDcgQEAgUV9HTE9CQUxfU1RBVElDKFFPcGVuVXJsSGFuZGxlclJl Z2lzdHJ5LCBoYW5kbGVyUmVnaXN0cnkpCisgCisgdm9pZCBRT3BlblVybEhhbmRsZXJSZWdpc3Ry eTo6aGFuZGxlckRlc3Ryb3llZChRT2JqZWN0ICpoYW5kbGVyKQorIHsKKysgICAgY29uc3QgYXV0 byBsb2NrID0gcXRfc2NvcGVkX2xvY2sobXV0ZXgpOworICAgICBIYW5kbGVySGFzaDo6SXRlcmF0 b3IgaXQgPSBoYW5kbGVycy5iZWdpbigpOworICAgICB3aGlsZSAoaXQgIT0gaGFuZGxlcnMuZW5k KCkpIHsKKyAgICAgICAgIGlmIChpdC0+cmVjZWl2ZXIgPT0gaGFuZGxlcikgeworQEAgLTI5NCw3 ICsyOTcsOCBAQCB2b2lkIFFEZXNrdG9wU2VydmljZXM6OnNldFVybEhhbmRsZXIoY29uc3QgUVN0 cmluZyAmc2NoZW1lLCBRT2JqZWN0ICpyZWNlaXZlciwgYworICAgICBoLm5hbWUgPSBtZXRob2Q7 CisgICAgIHJlZ2lzdHJ5LT5oYW5kbGVycy5pbnNlcnQoc2NoZW1lLnRvTG93ZXIoKSwgaCk7Cisg ICAgIFFPYmplY3Q6OmNvbm5lY3QocmVjZWl2ZXIsIFNJR05BTChkZXN0cm95ZWQoUU9iamVjdCop KSwKKy0gICAgICAgICAgICAgICAgICAgICByZWdpc3RyeSwgU0xPVChoYW5kbGVyRGVzdHJveWVk KFFPYmplY3QqKSkpOworKyAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LCBTTE9UKGhhbmRs ZXJEZXN0cm95ZWQoUU9iamVjdCopKSwKKysgICAgICAgICAgICAgICAgICAgICBRdDo6RGlyZWN0 Q29ubmVjdGlvbik7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3V0 aWwvcXBrbWhhbmRsZXIuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdXRpbC9xcGttaGFuZGxlci5jcHAK K2luZGV4IGUwYzNiNzVlZmUuLjM0MTRmOWQ4YmEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1 aS91dGlsL3Fwa21oYW5kbGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdXRpbC9xcGttaGFu ZGxlci5jcHAKK0BAIC01Nyw3ICs1Nyw3IEBAIHN0cnVjdCBQa21UeXBlCisgICAgIHF1aW50MzIg Ynl0ZXNQZXJCbG9jazsKKyB9OworIAorLXN0YXRpYyBQa21UeXBlIHR5cGVNYXBbNV0gPSB7Cisr c3RhdGljIGNvbnN0ZXhwciBQa21UeXBlIHR5cGVNYXBbNV0gPSB7CisgICAgIHsgMHg4RDY0LCAg OCB9LCAgIC8vIEdMX0VUQzFfUkdCOF9PRVMKKyAgICAgeyAweDkyNzQsICA4IH0sICAgLy8gR0xf Q09NUFJFU1NFRF9SR0I4X0VUQzIKKyAgICAgeyAwLCAwIH0sICAgICAgICAgLy8gdW51c2VkIChv YnNvbGV0ZSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3Jr cmVwbHlmaWxlaW1wbC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVw bHlmaWxlaW1wbC5jcHAKK2luZGV4IGI2YmU5MzE0N2EuLjZlNjliNGM0ZDMgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlmaWxlaW1wbC5jcHAKKysr KyBiL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWZpbGVpbXBsLmNwcAor QEAgLTg5LDkgKzg5LDEwIEBAIFFOZXR3b3JrUmVwbHlGaWxlSW1wbDo6UU5ldHdvcmtSZXBseUZp bGVJbXBsKFFOZXR3b3JrQWNjZXNzTWFuYWdlciAqbWFuYWdlciwgY29uCisgICAgICAgICAvLyB3 ZSBoYW5kbGUgb25seSBsb2NhbCBmaWxlcworICAgICAgICAgUVN0cmluZyBtc2cgPSBRQ29yZUFw cGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFOZXR3b3JrQWNjZXNzRmlsZUJhY2tlbmQiLCAiUmVxdWVz dCBmb3Igb3BlbmluZyBub24tbG9jYWwgZmlsZSAlMSIpLmFyZyh1cmwudG9TdHJpbmcoKSk7Cisg ICAgICAgICBzZXRFcnJvcihRTmV0d29ya1JlcGx5OjpQcm90b2NvbEludmFsaWRPcGVyYXRpb25F cnJvciwgbXNnKTsKKysgICAgICAgIHNldEZpbmlzaGVkKHRydWUpOyAvLyBXZSdyZSBmaW5pc2hl ZCwgd2lsbCBlbWl0IGZpbmlzaGVkKCkgYWZ0ZXIgY3RvciBpcyBkb25lLgorICAgICAgICAgUU1l dGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCAiZXJyb3JPY2N1cnJlZCIsIFF0OjpRdWV1ZWRD b25uZWN0aW9uLAorICAgICAgICAgICAgIFFfQVJHKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJv ciwgUU5ldHdvcmtSZXBseTo6UHJvdG9jb2xJbnZhbGlkT3BlcmF0aW9uRXJyb3IpKTsKKy0gICAg ICAgIGZpbGVPcGVuRmluaXNoZWQoZmFsc2UpOworKyAgICAgICAgUU1ldGFPYmplY3Q6Omludm9r ZU1ldGhvZCh0aGlzLCBbdGhpc10oKXsgZmlsZU9wZW5GaW5pc2hlZChmYWxzZSk7IH0sIFF0OjpR dWV1ZWRDb25uZWN0aW9uKTsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorICNlbmRpZgorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWltcGwuY3Bw IGIvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5aW1wbC5jcHAKK2luZGV4 IGJjZGY2ZWUyZjEuLjNiNmRlYjgyYmQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsv YWNjZXNzL3FuZXR3b3JrcmVwbHlpbXBsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2Fj Y2Vzcy9xbmV0d29ya3JlcGx5aW1wbC5jcHAKK0BAIC02ODAsNyArNjgwLDcgQEAgdm9pZCBRTmV0 d29ya1JlcGx5SW1wbFByaXZhdGU6OmFwcGVuZERvd25zdHJlYW1EYXRhKFFJT0RldmljZSAqZGF0 YSkKKyAgICAgLy8gcmVhZCB1bnRpbCBFT0YgZnJvbSBkYXRhCisgICAgIGlmIChRX1VOTElLRUxZ KGNvcHlEZXZpY2UpKSB7CisgICAgICAgICBxQ3JpdGljYWwoIlFOZXR3b3JrUmVwbHlJbXBsOiBj b3B5IGZyb20gUUlPRGV2aWNlIGFscmVhZHkgaW4gcHJvZ3Jlc3MgLS0gIgorLSAgICAgICAgICAg ICAgICAgICJiYWNrZW5kIHByb2JseSBuZWVkcyB0byBiZSBmaXhlZCIpOworKyAgICAgICAgICAg ICAgICAgICJiYWNrZW5kIHByb2JhYmx5IG5lZWRzIHRvIGJlIGZpeGVkIik7CisgICAgICAgICBy ZXR1cm47CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVs L3FhdXRoZW50aWNhdG9yLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWF1dGhlbnRp Y2F0b3IuY3BwCitpbmRleCBkOWZlN2JjNDdiLi5jY2QwNGIyOTRhIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xYXV0aGVudGljYXRvci5jcHAKKysrKyBiL3F0YmFzZS9z cmMvbmV0d29yay9rZXJuZWwvcWF1dGhlbnRpY2F0b3IuY3BwCitAQCAtNTAsNiArNTAsNyBAQAor ICNpbmNsdWRlIDxxc3RyaW5nLmg+CisgI2luY2x1ZGUgPHFkYXRldGltZS5oPgorICNpbmNsdWRl IDxxcmFuZG9tLmg+CisrI2luY2x1ZGUgInByaXZhdGUvcXN5c3RlbWxpYnJhcnlfcC5oIgorIAor ICNpZmRlZiBRX09TX1dJTgorICNpbmNsdWRlIDxxbXV0ZXguaD4KK0BAIC0xNTYzLDcgKzE1NjQs NyBAQCBzdGF0aWMgYm9vbCBxX1NTUElfbGlicmFyeV9sb2FkKCkKKyAKKyAgICAgLy8gSW5pdGlh bGl6ZSBzZWN1cml0eSBpbnRlcmZhY2UKKyAgICAgaWYgKHBTZWN1cml0eUZ1bmN0aW9uVGFibGUg PT0gbnVsbHB0cikgeworLSAgICAgICAgc2VjdXJpdHlETExIYW5kbGUgPSBMb2FkTGlicmFyeShM InNlY3VyMzIuZGxsIik7CisrICAgICAgICBzZWN1cml0eURMTEhhbmRsZSA9IFFTeXN0ZW1MaWJy YXJ5Ojpsb2FkKEwic2VjdXIzMiIpOworICAgICAgICAgaWYgKHNlY3VyaXR5RExMSGFuZGxlICE9 IG51bGxwdHIpIHsKKyAgICAgICAgICAgICBJTklUX1NFQ1VSSVRZX0lOVEVSRkFDRSBwSW5pdFNl Y3VyaXR5SW50ZXJmYWNlID0KKyAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxJTklU X1NFQ1VSSVRZX0lOVEVSRkFDRT4oCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL2tl cm5lbC9xaG9zdGluZm9fdW5peC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3Fob3N0 aW5mb191bml4LmNwcAoraW5kZXggOWIwYTJlZTY2OS4uNzM2NzljOWVmMSAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWhvc3RpbmZvX3VuaXguY3BwCisrKysgYi9xdGJh c2Uvc3JjL25ldHdvcmsva2VybmVsL3Fob3N0aW5mb191bml4LmNwcAorQEAgLTEyMiw3ICsxMjIs NiBAQCBzdGF0aWMgUUZ1bmN0aW9uUG9pbnRlciByZXNvbHZlU3ltYm9sKFFMaWJyYXJ5ICZsaWIs IGNvbnN0IGNoYXIgKnN5bSkKKyAKKyBMaWJSZXNvbHY6OkxpYlJlc29sdigpCisgeworLSAgICBR TGlicmFyeSBsaWI7CisgI2lmZGVmIExJQlJFU09MVl9TTworICAgICBsaWIuc2V0RmlsZU5hbWUo UVN0cmluZ0xpdGVyYWwoTElCUkVTT0xWX1NPKSk7CisgICAgIGlmICghbGliLmxvYWQoKSkKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc29ja2V0L3Fzb2NrczVzb2NrZXRlbmdpbmUu Y3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NvY2tldC9xc29ja3M1c29ja2V0ZW5naW5lLmNwcAor aW5kZXggM2EwNDZmZDExNi4uOTdmYWRjYTBiMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0 d29yay9zb2NrZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0 d29yay9zb2NrZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5jcHAKK0BAIC0xMjk2LDcgKzEyOTYsNyBA QCB2b2lkIFFTb2NrczVTb2NrZXRFbmdpbmVQcml2YXRlOjpfcV91ZHBTb2NrZXRSZWFkTm90aWZp Y2F0aW9uKCkKKyAgICAgICAgIGludCBwb3MgPSAwOworICAgICAgICAgY29uc3QgY2hhciAqYnVm ID0gaW5CdWYuY29uc3REYXRhKCk7CisgICAgICAgICBpZiAoaW5CdWYuc2l6ZSgpIDwgNCkgewor LSAgICAgICAgICAgIFFTT0NLUzVfRF9ERUJVRyA8PCAiYnVndXMgdWRwIGRhdGEsIGRpc2NhcmRp bmciOworKyAgICAgICAgICAgIFFTT0NLUzVfRF9ERUJVRyA8PCAiYm9ndXMgdWRwIGRhdGEsIGRp c2NhcmRpbmciOworICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgIH0KKyAgICAgICAgIFFT b2NrczVSZXZpdmVkRGF0YWdyYW0gZGF0YWdyYW07CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9u ZXR3b3JrL3NzbC9xc3NsY29udGV4dF9vcGVuc3NsLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9z c2wvcXNzbGNvbnRleHRfb3BlbnNzbC5jcHAKK2luZGV4IGM5ZjIwMmY1NzMuLmM5OTJkYTlkOGUg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xjb250ZXh0X29wZW5zc2wu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xjb250ZXh0X29wZW5zc2wuY3Bw CitAQCAtNDA5LDcgKzQwOSw3IEBAIGluaXRfY29udGV4dDoKKyAgICAgICAgIGJyZWFrOworICAg ICBjYXNlIFFTc2w6OkR0bHNWMV8wT3JMYXRlcjoKKyAgICAgICAgIG1pblZlcnNpb24gPSBEVExT MV9WRVJTSU9OOworLSAgICAgICAgbWF4VmVyc2lvbiA9IERUTFNfTUFYX1ZFUlNJT047CisrICAg ICAgICBtYXhWZXJzaW9uID0gMDsKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIFFTc2w6OkR0 bHNWMV8yOgorICAgICAgICAgbWluVmVyc2lvbiA9IERUTFMxXzJfVkVSU0lPTjsKK0BAIC00MTcs NyArNDE3LDcgQEAgaW5pdF9jb250ZXh0OgorICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUVNz bDo6RHRsc1YxXzJPckxhdGVyOgorICAgICAgICAgbWluVmVyc2lvbiA9IERUTFMxXzJfVkVSU0lP TjsKKy0gICAgICAgIG1heFZlcnNpb24gPSBEVExTX01BWF9WRVJTSU9OOworKyAgICAgICAgbWF4 VmVyc2lvbiA9IDA7CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBRU3NsOjpUbHNWMV8zT3JM YXRlcjoKKyAjaWZkZWYgVExTMV8zX1ZFUlNJT04KK0BAIC00NTUsNyArNDU1LDcgQEAgaW5pdF9j b250ZXh0OgorICAgICB9CisgCisgICAgIC8vIEVuYWJsZSBidWcgd29ya2Fyb3VuZHMuCistICAg IGxvbmcgb3B0aW9ucyA9IFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6c2V0dXBPcGVuU3NsT3B0 aW9ucyhjb25maWd1cmF0aW9uLnByb3RvY29sKCksIGNvbmZpZ3VyYXRpb24uZC0+c3NsT3B0aW9u cyk7CisrICAgIHFzc2xvcHRpb25zIG9wdGlvbnMgPSBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6 OnNldHVwT3BlblNzbE9wdGlvbnMoY29uZmlndXJhdGlvbi5wcm90b2NvbCgpLCBjb25maWd1cmF0 aW9uLmQtPnNzbE9wdGlvbnMpOworICAgICBxX1NTTF9DVFhfc2V0X29wdGlvbnMoc3NsQ29udGV4 dC0+Y3R4LCBvcHRpb25zKTsKKyAKKyAgICAgLy8gVGVsbCBPcGVuU1NMIHRvIHJlbGVhc2UgbWVt b3J5IGVhcmx5CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsZGlmZmll aGVsbG1hbnBhcmFtZXRlcnNfb3BlbnNzbC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fz c2xkaWZmaWVoZWxsbWFucGFyYW1ldGVyc19vcGVuc3NsLmNwcAoraW5kZXggYWFmODc0MTEzMC4u YjU4OTM1MzcyYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGRpZmZp ZWhlbGxtYW5wYXJhbWV0ZXJzX29wZW5zc2wuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsv c3NsL3Fzc2xkaWZmaWVoZWxsbWFucGFyYW1ldGVyc19vcGVuc3NsLmNwcAorQEAgLTU5LDU3ICs1 OSw2IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCistI2lmZGVmIE9QRU5TU0xfTk9fREVQ UkVDQVRFRF8zXzAKKy0KKy1zdGF0aWMgaW50IHFfREhfY2hlY2soREggKmRoLCBpbnQgKnN0YXR1 cykKKy17CistICAgIC8vIERIX2NoZWNrIHdhcyBmaXJzdCBkZXByZWNhdGVkIGluIE9wZW5TU0wg My4wLjAsIGFzIGxvdy1sZXZlbAorLSAgICAvLyBBUEk7IHRoZSBFVlBfUEtFWSBmYW1pbHkgb2Yg ZnVuY3Rpb25zIHdhcyBhZHZpc2VkIGFzIGFuIGFsdGVybmF0aXZlLgorLSAgICAvLyBBcyBvZiBu b3cgRVZQX1BLRVlfcGFyYW1zX2NoZWNrIGVuZHMgdXAgY2FsbGluZyAuLi4gREhfY2hlY2ssCist ICAgIC8vIHdoaWNoIGlzIGdvb2QgZW5vdWdoLgorLQorLSAgICBRX0FTU0VSVChkaCk7CistICAg IFFfQVNTRVJUKHN0YXR1cyk7CistCistICAgIEVWUF9QS0VZICprZXkgPSBxX0VWUF9QS0VZX25l dygpOworLSAgICBpZiAoIWtleSkgeworLSAgICAgICAgcUNXYXJuaW5nKGxjU3NsLCAiRVZQX1BL RVlfbmV3IGZhaWxlZCIpOworLSAgICAgICAgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpsb2dB bmRDbGVhckVycm9yUXVldWUoKTsKKy0gICAgICAgIHJldHVybiAwOworLSAgICB9CistICAgIGNv bnN0IGF1dG8ga2V5RGVsZXRlciA9IHFTY29wZUd1YXJkKFtrZXldKCl7CistICAgICAgICBxX0VW UF9QS0VZX2ZyZWUoa2V5KTsKKy0gICAgfSk7CistICAgIGlmICghcV9FVlBfUEtFWV9zZXQxX0RI KGtleSwgZGgpKSB7CistICAgICAgICBxQ1dhcm5pbmcobGNTc2wsICJFVlBfUEtFWV9zZXQxX0RI IGZhaWxlZCIpOworLSAgICAgICAgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpsb2dBbmRDbGVh ckVycm9yUXVldWUoKTsKKy0gICAgICAgIHJldHVybiAwOworLSAgICB9CistCistICAgIEVWUF9Q S0VZX0NUWCAqa2V5Q3R4ID0gcV9FVlBfUEtFWV9DVFhfbmV3KGtleSwgbnVsbHB0cik7CistICAg IGlmICgha2V5Q3R4KSB7CistICAgICAgICBxQ1dhcm5pbmcobGNTc2wsICJFVlBfUEtFWV9DVFhf bmV3IGZhaWxlZCIpOworLSAgICAgICAgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpsb2dBbmRD bGVhckVycm9yUXVldWUoKTsKKy0gICAgICAgIHJldHVybiAwOworLSAgICB9CistICAgIGNvbnN0 IGF1dG8gY3R4RGVsZXRlciA9IHFTY29wZUd1YXJkKFtrZXlDdHhdeworLSAgICAgICAgcV9FVlBf UEtFWV9DVFhfZnJlZShrZXlDdHgpOworLSAgICB9KTsKKy0KKy0gICAgY29uc3QgaW50IHJlc3Vs dCA9IHFfRVZQX1BLRVlfcGFyYW1fY2hlY2soa2V5Q3R4KTsKKy0gICAgUVNzbFNvY2tldEJhY2tl bmRQcml2YXRlOjpsb2dBbmRDbGVhckVycm9yUXVldWUoKTsKKy0gICAgLy8gTm90ZTogdW5saWtl IERIX2NoZWNrLCB3ZSBjYW5ub3Qgb2J0YWluIHRoZSAnc3RhdHVzJywKKy0gICAgLy8gaWYgdGhl ICdyZXN1bHQnIGlzIDAgKGFjdHVhbGx5IHRoZSByZXN1bHQgaXMgMSBvbmx5CistICAgIC8vIGlm IHRoaXMgJ3N0YXR1cycgd2FzIDApLiBXZSBjb3VsZCBwcm9iYWJseSBjaGVjayB0aGUKKy0gICAg Ly8gZXJyb3JzIGZyb20gdGhlIGVycm9yIHF1ZXVlLCBidXQgaXQncyBub3QgbmVlZGVkIGFueXdh eQorLSAgICAvLyAtIHNlZSB0aGUgJ2lzU2FmZURIJyBiZWxvdywgaG93IGl0IHJldHVybnMgaW1t ZWRpYXRlbHkKKy0gICAgLy8gb24gMC4KKy0gICAgUV9VTlVTRUQoc3RhdHVzKQorLQorLSAgICBy ZXR1cm4gcmVzdWx0OworLX0KKy0jZW5kaWYgLy8gT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAor LQorIHN0YXRpYyBib29sIGlzU2FmZURIKERIICpkaCkKKyB7CisgICAgIGludCBzdGF0dXMgPSAw OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3Ns LmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsLmNwcAoraW5k ZXggMzdmYWQyYTY4Zi4uOGY2ODU4Yzg2NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29y ay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3Nz bC9xc3Nsc29ja2V0X29wZW5zc2wuY3BwCitAQCAtNTUwLDkgKzU1MCw5IEBAIHN0YXRpYyB2b2lk IHFfbG9hZENpcGhlcnNGb3JDb25uZWN0aW9uKFNTTCAqY29ubmVjdGlvbiwgUUxpc3Q8UVNzbENp cGhlcj4gJmNpcGhlCisgLy8gRGVmaW5lZCBpbiBxc3Nsc29ja2V0LmNwcAorIHZvaWQgcV9zZXRE ZWZhdWx0RHRsc0NpcGhlcnMoY29uc3QgUUxpc3Q8UVNzbENpcGhlcj4gJmNpcGhlcnMpOworIAor LWxvbmcgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpzZXR1cE9wZW5Tc2xPcHRpb25zKFFTc2w6 OlNzbFByb3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRpb25zIHNzbE9wdGlvbnMpCisrcXNz bG9wdGlvbnMgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpzZXR1cE9wZW5Tc2xPcHRpb25zKFFT c2w6OlNzbFByb3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRpb25zIHNzbE9wdGlvbnMpCisg eworLSAgICBsb25nIG9wdGlvbnM7CisrICAgIHFzc2xvcHRpb25zIG9wdGlvbnM7CisgICAgIGlm IChwcm90b2NvbCA9PSBRU3NsOjpUbHNWMVNzbFYzKQorICAgICAgICAgb3B0aW9ucyA9IFNTTF9P UF9BTEx8U1NMX09QX05PX1NTTHYyfFNTTF9PUF9OT19TU0x2MzsKKyAgICAgZWxzZSBpZiAocHJv dG9jb2wgPT0gUVNzbDo6U2VjdXJlUHJvdG9jb2xzKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv bmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3AuaCBiL3F0YmFzZS9zcmMvbmV0d29yay9z c2wvcXNzbHNvY2tldF9vcGVuc3NsX3AuaAoraW5kZXggNDEwM2RlMjNlOC4uNTU0NzU4OTI1NiAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3Au aAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfcC5oCitA QCAtMTA3LDYgKzEwNywxMiBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorKyNpZiBkZWZp bmVkKE9QRU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMK Kyt0eXBlZGVmIHVpbnQ2NF90IHFzc2xvcHRpb25zOworKyNlbHNlCisrdHlwZWRlZiB1bnNpZ25l ZCBsb25nIHFzc2xvcHRpb25zOworKyNlbmRpZgorKworIHN0cnVjdCBRU3NsRXJyb3JFbnRyeSB7 CisgICAgIGludCBjb2RlOworICAgICBpbnQgZGVwdGg7CitAQCAtMTcxLDcgKzE3Nyw3IEBAIHB1 YmxpYzoKKyAgICAgUVZlY3RvcjxRU3NsRXJyb3I+IG9jc3BFcnJvcnM7CisgICAgIFFCeXRlQXJy YXkgb2NzcFJlc3BvbnNlRGVyOworIAorLSAgICBRX0FVVE9URVNUX0VYUE9SVCBzdGF0aWMgbG9u ZyBzZXR1cE9wZW5Tc2xPcHRpb25zKFFTc2w6OlNzbFByb3RvY29sIHByb3RvY29sLCBRU3NsOjpT c2xPcHRpb25zIHNzbE9wdGlvbnMpOworKyAgICBRX0FVVE9URVNUX0VYUE9SVCBzdGF0aWMgcXNz bG9wdGlvbnMgc2V0dXBPcGVuU3NsT3B0aW9ucyhRU3NsOjpTc2xQcm90b2NvbCBwcm90b2NvbCwg UVNzbDo6U3NsT3B0aW9ucyBzc2xPcHRpb25zKTsKKyAgICAgc3RhdGljIFFTc2xDaXBoZXIgUVNz bENpcGhlcl9mcm9tX1NTTF9DSVBIRVIoY29uc3QgU1NMX0NJUEhFUiAqY2lwaGVyKTsKKyAgICAg c3RhdGljIFFMaXN0PFFTc2xDZXJ0aWZpY2F0ZT4gU1RBQ0tPRlg1MDlfdG9fUVNzbENlcnRpZmlj YXRlcyhTVEFDS19PRihYNTA5KSAqeDUwOSk7CisgICAgIHN0YXRpYyBRTGlzdDxRU3NsRXJyb3I+ IHZlcmlmeShjb25zdCBRTGlzdDxRU3NsQ2VydGlmaWNhdGU+ICZjZXJ0aWZpY2F0ZUNoYWluLCBj b25zdCBRU3RyaW5nICZob3N0TmFtZSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3Jr L3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9scy5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsv c3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzLmNwcAoraW5kZXggZTUzZmIyNzlmMC4uNDU5 Y2NkMGIxOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9v cGVuc3NsX3N5bWJvbHMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2Nr ZXRfb3BlbnNzbF9zeW1ib2xzLmNwcAorQEAgLTE0OCw3ICsxNDgsNiBAQCBERUZJTkVGVU5DKGlu dCwgRVZQX1BLRVlfdXBfcmVmLCBFVlBfUEtFWSAqYSwgYSwgcmV0dXJuIDAsIHJldHVybikKKyBE RUZJTkVGVU5DMihFVlBfUEtFWV9DVFggKiwgRVZQX1BLRVlfQ1RYX25ldywgRVZQX1BLRVkgKnBr ZXksIHBrZXksIEVOR0lORSAqZSwgZSwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyBERUZJTkVG VU5DKGludCwgRVZQX1BLRVlfcGFyYW1fY2hlY2ssIEVWUF9QS0VZX0NUWCAqY3R4LCBjdHgsIHJl dHVybiAwLCByZXR1cm4pCisgREVGSU5FRlVOQyh2b2lkLCBFVlBfUEtFWV9DVFhfZnJlZSwgRVZQ X1BLRVlfQ1RYICpjdHgsIGN0eCwgcmV0dXJuLCByZXR1cm4pCistREVGSU5FRlVOQyhpbnQsIEVW UF9QS0VZX2Jhc2VfaWQsIEVWUF9QS0VZICphLCBhLCByZXR1cm4gTklEX3VuZGVmLCByZXR1cm4p CisgREVGSU5FRlVOQyhpbnQsIFJTQV9iaXRzLCBSU0EgKmEsIGEsIHJldHVybiAwLCByZXR1cm4p CisgREVGSU5FRlVOQyhpbnQsIERTQV9iaXRzLCBEU0EgKmEsIGEsIHJldHVybiAwLCByZXR1cm4p CisgREVGSU5FRlVOQyhpbnQsIE9QRU5TU0xfc2tfbnVtLCBPUEVOU1NMX1NUQUNLICphLCBhLCBy ZXR1cm4gLTEsIHJldHVybikKK0BAIC0xNTgsNyArMTU3LDcgQEAgREVGSU5FRlVOQzIodm9pZCwg T1BFTlNTTF9za19wdXNoLCBPUEVOU1NMX1NUQUNLICphLCBhLCB2b2lkICpiLCBiLCByZXR1cm4s IERVTU0KKyBERUZJTkVGVU5DKHZvaWQsIE9QRU5TU0xfc2tfZnJlZSwgT1BFTlNTTF9TVEFDSyAq YSwgYSwgcmV0dXJuLCBEVU1NWUFSRykKKyBERUZJTkVGVU5DMih2b2lkICosIE9QRU5TU0xfc2tf dmFsdWUsIE9QRU5TU0xfU1RBQ0sgKmEsIGEsIGludCBiLCBiLCByZXR1cm4gbnVsbHB0ciwgcmV0 dXJuKQorIERFRklORUZVTkMoaW50LCBTU0xfc2Vzc2lvbl9yZXVzZWQsIFNTTCAqYSwgYSwgcmV0 dXJuIDAsIHJldHVybikKKy1ERUZJTkVGVU5DMih1bnNpZ25lZCBsb25nLCBTU0xfQ1RYX3NldF9v cHRpb25zLCBTU0xfQ1RYICpjdHgsIGN0eCwgdW5zaWduZWQgbG9uZyBvcCwgb3AsIHJldHVybiAw LCByZXR1cm4pCisrREVGSU5FRlVOQzIocXNzbG9wdGlvbnMsIFNTTF9DVFhfc2V0X29wdGlvbnMs IFNTTF9DVFggKmN0eCwgY3R4LCBxc3Nsb3B0aW9ucyBvcCwgb3AsIHJldHVybiAwLCByZXR1cm4p CisgREVGSU5FRlVOQyhpbnQsIFNTTF9DVFhfZ2V0X3NlY3VyaXR5X2xldmVsLCBjb25zdCBTU0xf Q1RYICpjdHgsIGN0eCwgcmV0dXJuIC0xLCByZXR1cm4pCisgREVGSU5FRlVOQzIodm9pZCwgU1NM X0NUWF9zZXRfc2VjdXJpdHlfbGV2ZWwsIFNTTF9DVFggKmN0eCwgY3R4LCBpbnQgbGV2ZWwsIGxl dmVsLCByZXR1cm4sIHJldHVybikKKyAjaWZkZWYgVExTMV8zX1ZFUlNJT04KK0BAIC0zNzEsNyAr MzcwLDE1IEBAIERFRklORUZVTkMoY29uc3QgU1NMX0NJUEhFUiAqLCBTU0xfZ2V0X2N1cnJlbnRf Y2lwaGVyLCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRyCisgREVGSU5FRlVOQyhpbnQsIFNTTF92 ZXJzaW9uLCBjb25zdCBTU0wgKmEsIGEsIHJldHVybiAwLCByZXR1cm4pCisgREVGSU5FRlVOQzIo aW50LCBTU0xfZ2V0X2Vycm9yLCBTU0wgKmEsIGEsIGludCBiLCBiLCByZXR1cm4gLTEsIHJldHVy bikKKyBERUZJTkVGVU5DKFNUQUNLX09GKFg1MDkpICosIFNTTF9nZXRfcGVlcl9jZXJ0X2NoYWlu LCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisrCisrI2lmIGRlZmluZWQoT1BF TlNTTF9WRVJTSU9OX01BSk9SKSAmJiBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworK0RFRklO RUZVTkMoWDUwOSAqLCBTU0xfZ2V0MV9wZWVyX2NlcnRpZmljYXRlLCBTU0wgKmEsIGEsIHJldHVy biBudWxscHRyLCByZXR1cm4pCisrREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX2dldF9iYXNlX2lk LCBjb25zdCBFVlBfUEtFWSAqcGtleSwgcGtleSwgcmV0dXJuIC0xLCByZXR1cm4pCisrI2Vsc2UK KyBERUZJTkVGVU5DKFg1MDkgKiwgU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlLCBTU0wgKmEsIGEs IHJldHVybiBudWxscHRyLCByZXR1cm4pCisrREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX2Jhc2Vf aWQsIEVWUF9QS0VZICphLCBhLCByZXR1cm4gTklEX3VuZGVmLCByZXR1cm4pCisrI2VuZGlmIC8v IE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrCisgREVGSU5FRlVOQyhsb25nLCBTU0xfZ2V0 X3ZlcmlmeV9yZXN1bHQsIGNvbnN0IFNTTCAqYSwgYSwgcmV0dXJuIC0xLCByZXR1cm4pCisgREVG SU5FRlVOQyhTU0wgKiwgU1NMX25ldywgU1NMX0NUWCAqYSwgYSwgcmV0dXJuIG51bGxwdHIsIHJl dHVybikKKyBERUZJTkVGVU5DKFNTTF9DVFggKiwgU1NMX2dldF9TU0xfQ1RYLCBTU0wgKmEsIGEs IHJldHVybiBudWxscHRyLCByZXR1cm4pCitAQCAtNDkyLDkgKzQ5OSw3IEBAIERFRklORUZVTkMo REggKiwgREhfbmV3LCBEVU1NWUFSRywgRFVNTVlBUkcsIHJldHVybiBudWxscHRyLCByZXR1cm4p CisgREVGSU5FRlVOQyh2b2lkLCBESF9mcmVlLCBESCAqZGgsIGRoLCByZXR1cm4sIERVTU1ZQVJH KQorIERFRklORUZVTkMzKERIICosIGQyaV9ESHBhcmFtcywgREgqKmEsIGEsIGNvbnN0IHVuc2ln bmVkIGNoYXIgKipwcCwgcHAsIGxvbmcgbGVuZ3RoLCBsZW5ndGgsIHJldHVybiBudWxscHRyLCBy ZXR1cm4pCisgREVGSU5FRlVOQzIoaW50LCBpMmRfREhwYXJhbXMsIERIICphLCBhLCB1bnNpZ25l ZCBjaGFyICoqcCwgcCwgcmV0dXJuIC0xLCByZXR1cm4pCistI2lmbmRlZiBPUEVOU1NMX05PX0RF UFJFQ0FURURfM18wCisgREVGSU5FRlVOQzIoaW50LCBESF9jaGVjaywgREggKmRoLCBkaCwgaW50 ICpjb2RlcywgY29kZXMsIHJldHVybiAwLCByZXR1cm4pCistI2VuZGlmIC8vIE9QRU5TU0xfTk9f REVQUkVDQVRFRF8zXzAKKyBERUZJTkVGVU5DMyhCSUdOVU0gKiwgQk5fYmluMmJuLCBjb25zdCB1 bnNpZ25lZCBjaGFyICpzLCBzLCBpbnQgbGVuLCBsZW4sIEJJR05VTSAqcmV0LCByZXQsIHJldHVy biBudWxscHRyLCByZXR1cm4pCisgCisgI2lmbmRlZiBPUEVOU1NMX05PX0VDCitAQCAtODY4LDcg Kzg3Myw2IEBAIGJvb2wgcV9yZXNvbHZlT3BlblNzbFN5bWJvbHMoKQorICAgICBSRVNPTFZFRlVO QyhFVlBfUEtFWV9DVFhfbmV3KQorICAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9wYXJhbV9jaGVj aykKKyAgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfQ1RYX2ZyZWUpCistICAgIFJFU09MVkVGVU5D KEVWUF9QS0VZX2Jhc2VfaWQpCisgICAgIFJFU09MVkVGVU5DKFJTQV9iaXRzKQorICAgICBSRVNP TFZFRlVOQyhPUEVOU1NMX3NrX25ld19udWxsKQorICAgICBSRVNPTFZFRlVOQyhPUEVOU1NMX3Nr X3B1c2gpCitAQCAtMTEwNyw3ICsxMTExLDE1IEBAIGJvb2wgcV9yZXNvbHZlT3BlblNzbFN5bWJv bHMoKQorICAgICBSRVNPTFZFRlVOQyhTU0xfdmVyc2lvbikKKyAgICAgUkVTT0xWRUZVTkMoU1NM X2dldF9lcnJvcikKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9wZWVyX2NlcnRfY2hhaW4pCisr CisrI2lmIGRlZmluZWQoT1BFTlNTTF9WRVJTSU9OX01BSk9SKSAmJiBPUEVOU1NMX1ZFUlNJT05f TUFKT1IgPj0gMworKyAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0MV9wZWVyX2NlcnRpZmljYXRlKQor KyAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9nZXRfYmFzZV9pZCkKKysjZWxzZQorICAgICBSRVNP TFZFRlVOQyhTU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUpCisrICAgIFJFU09MVkVGVU5DKEVWUF9Q S0VZX2Jhc2VfaWQpCisrI2VuZGlmIC8vIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrCisg ICAgIFJFU09MVkVGVU5DKFNTTF9nZXRfdmVyaWZ5X3Jlc3VsdCkKKyAgICAgUkVTT0xWRUZVTkMo U1NMX25ldykKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9TU0xfQ1RYKQorQEAgLTEyMDYsOSAr MTIxOCw3IEBAIGJvb2wgcV9yZXNvbHZlT3BlblNzbFN5bWJvbHMoKQorICAgICBSRVNPTFZFRlVO QyhESF9mcmVlKQorICAgICBSRVNPTFZFRlVOQyhkMmlfREhwYXJhbXMpCisgICAgIFJFU09MVkVG VU5DKGkyZF9ESHBhcmFtcykKKy0jaWZuZGVmIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyAg ICAgUkVTT0xWRUZVTkMoREhfY2hlY2spCistI2VuZGlmIC8vIE9QRU5TU0xfTk9fREVQUkVDQVRF RF8zXzAKKyAgICAgUkVTT0xWRUZVTkMoQk5fYmluMmJuKQorIAorICNpZm5kZWYgT1BFTlNTTF9O T19FQworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVu c3NsX3N5bWJvbHNfcC5oIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5z c2xfc3ltYm9sc19wLmgKK2luZGV4IDk1ZTg4OTdhM2IuLjI3YWVmZmExOGEgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzX3AuaAor KysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9sc19w LmgKK0BAIC0yMzcsNyArMjM3LDYgQEAgUV9BVVRPVEVTVF9FWFBPUlQgaW50IHFfRVZQX1BLRVlf dXBfcmVmKEVWUF9QS0VZICphKTsKKyBFVlBfUEtFWV9DVFggKnFfRVZQX1BLRVlfQ1RYX25ldyhF VlBfUEtFWSAqcGtleSwgRU5HSU5FICplKTsKKyB2b2lkIHFfRVZQX1BLRVlfQ1RYX2ZyZWUoRVZQ X1BLRVlfQ1RYICpjdHgpOworIGludCBxX0VWUF9QS0VZX3BhcmFtX2NoZWNrKEVWUF9QS0VZX0NU WCAqY3R4KTsKKy1pbnQgcV9FVlBfUEtFWV9iYXNlX2lkKEVWUF9QS0VZICphKTsKKyBpbnQgcV9S U0FfYml0cyhSU0EgKmEpOworIFFfQVVUT1RFU1RfRVhQT1JUIGludCBxX09QRU5TU0xfc2tfbnVt KE9QRU5TU0xfU1RBQ0sgKmEpOworIFFfQVVUT1RFU1RfRVhQT1JUIHZvaWQgcV9PUEVOU1NMX3Nr X3BvcF9mcmVlKE9QRU5TU0xfU1RBQ0sgKmEsIHZvaWQgKCpiKSh2b2lkICopKTsKK0BAIC0yNDYs NyArMjQ1LDcgQEAgUV9BVVRPVEVTVF9FWFBPUlQgdm9pZCBxX09QRU5TU0xfc2tfcHVzaChPUEVO U1NMX1NUQUNLICpzdCwgdm9pZCAqZGF0YSk7CisgUV9BVVRPVEVTVF9FWFBPUlQgdm9pZCBxX09Q RU5TU0xfc2tfZnJlZShPUEVOU1NMX1NUQUNLICphKTsKKyBRX0FVVE9URVNUX0VYUE9SVCB2b2lk ICogcV9PUEVOU1NMX3NrX3ZhbHVlKE9QRU5TU0xfU1RBQ0sgKmEsIGludCBiKTsKKyBpbnQgcV9T U0xfc2Vzc2lvbl9yZXVzZWQoU1NMICphKTsKKy11bnNpZ25lZCBsb25nIHFfU1NMX0NUWF9zZXRf b3B0aW9ucyhTU0xfQ1RYICpjdHgsIHVuc2lnbmVkIGxvbmcgb3ApOworK3Fzc2xvcHRpb25zIHFf U1NMX0NUWF9zZXRfb3B0aW9ucyhTU0xfQ1RYICpjdHgsIHFzc2xvcHRpb25zIG9wKTsKKyBpbnQg cV9PUEVOU1NMX2luaXRfc3NsKHVpbnQ2NF90IG9wdHMsIGNvbnN0IE9QRU5TU0xfSU5JVF9TRVRU SU5HUyAqc2V0dGluZ3MpOworIHNpemVfdCBxX1NTTF9nZXRfY2xpZW50X3JhbmRvbShTU0wgKmEs IHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxlbik7Cisgc2l6ZV90IHFfU1NMX1NFU1NJ T05fZ2V0X21hc3Rlcl9rZXkoY29uc3QgU1NMX1NFU1NJT04gKnNlc3Npb24sIHVuc2lnbmVkIGNo YXIgKm91dCwgc2l6ZV90IG91dGxlbik7CitAQCAtNTEwLDcgKzUwOSw2IEBAIGNvbnN0IFNTTF9D SVBIRVIgKnFfU1NMX2dldF9jdXJyZW50X2NpcGhlcihTU0wgKmEpOworIGludCBxX1NTTF92ZXJz aW9uKGNvbnN0IFNTTCAqYSk7CisgaW50IHFfU1NMX2dldF9lcnJvcihTU0wgKmEsIGludCBiKTsK KyBTVEFDS19PRihYNTA5KSAqcV9TU0xfZ2V0X3BlZXJfY2VydF9jaGFpbihTU0wgKmEpOworLVg1 MDkgKnFfU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKFNTTCAqYSk7CisgbG9uZyBxX1NTTF9nZXRf dmVyaWZ5X3Jlc3VsdChjb25zdCBTU0wgKmEpOworIFNTTCAqcV9TU0xfbmV3KFNTTF9DVFggKmEp OworIFNTTF9DVFggKnFfU1NMX2dldF9TU0xfQ1RYKFNTTCAqYSk7CitAQCAtNTgyLDEwICs1ODAs NyBAQCBESCAqcV9ESF9uZXcoKTsKKyB2b2lkIHFfREhfZnJlZShESCAqZGgpOworIERIICpxX2Qy aV9ESHBhcmFtcyhESCAqKmEsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKipwcCwgbG9uZyBsZW5ndGgp OworIGludCBxX2kyZF9ESHBhcmFtcyhESCAqYSwgdW5zaWduZWQgY2hhciAqKnApOworLQorLSNp Zm5kZWYgT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorIGludCBxX0RIX2NoZWNrKERIICpkaCwg aW50ICpjb2Rlcyk7CistI2VuZGlmIC8vIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyAKKyBC SUdOVU0gKnFfQk5fYmluMmJuKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMsIGludCBsZW4sIEJJR05V TSAqcmV0KTsKKyAjZGVmaW5lIHFfU1NMX0NUWF9zZXRfdG1wX2RoKGN0eCwgZGgpIHFfU1NMX0NU WF9jdHJsKChjdHgpLCBTU0xfQ1RSTF9TRVRfVE1QX0RILCAwLCAoY2hhciAqKWRoKQorQEAgLTc1 NCw2ICs3NDksMTcgQEAgdm9pZCBxX0NSWVBUT19mcmVlKHZvaWQgKnN0ciwgY29uc3QgY2hhciAq ZmlsZSwgaW50IGxpbmUpOworIGludCBxX1NTTF9DVFhfZ2V0X3NlY3VyaXR5X2xldmVsKGNvbnN0 IFNTTF9DVFggKmN0eCk7Cisgdm9pZCBxX1NTTF9DVFhfc2V0X3NlY3VyaXR5X2xldmVsKFNTTF9D VFggKmN0eCwgaW50IGxldmVsKTsKKyAKKysvLyBIZXJlIHdlIGhhdmUgdGhlIG9uZXMgdGhhdCBt YWtlIGRpZmZlcmVuY2UgYmV0d2VlbiBPcGVuU1NMIHByZS9wb3N0IHYzOgorKyNpZiBkZWZpbmVk KE9QRU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMKKytY NTA5ICpxX1NTTF9nZXQxX3BlZXJfY2VydGlmaWNhdGUoU1NMICphKTsKKysjZGVmaW5lIHFfU1NM X2dldF9wZWVyX2NlcnRpZmljYXRlIHFfU1NMX2dldDFfcGVlcl9jZXJ0aWZpY2F0ZQorK2ludCBx X0VWUF9QS0VZX2dldF9iYXNlX2lkKGNvbnN0IEVWUF9QS0VZICpwa2V5KTsKKysjZGVmaW5lIHFf RVZQX1BLRVlfYmFzZV9pZCBxX0VWUF9QS0VZX2dldF9iYXNlX2lkCisrI2Vsc2UKKytYNTA5ICpx X1NTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZShTU0wgKmEpOworK2ludCBxX0VWUF9QS0VZX2Jhc2Vf aWQoRVZQX1BLRVkgKmEpOworKyNlbmRpZiAvLyBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMwor KworIFFUX0VORF9OQU1FU1BBQ0UKKyAKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9xdF9lZ2xfcC5oIGIvcXRiYXNlL3NyYy9w bGF0Zm9ybXN1cHBvcnQvZWdsY29udmVuaWVuY2UvcXRfZWdsX3AuaAoraW5kZXggYmYzN2QwN2Zk OC4uZGJkNDJmYjc5OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2Vn bGNvbnZlbmllbmNlL3F0X2VnbF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L2VnbGNvbnZlbmllbmNlL3F0X2VnbF9wLmgKK0BAIC02MSw3ICs2MSwxMSBAQAorICMgaWYgIWRl ZmluZWQoUV9PU19JTlRFR1JJVFkpCisgIyAgZGVmaW5lIFdJTl9JTlRFUkZBQ0VfQ1VTVE9NICAg Ly8gTlYKKyAjIGVuZGlmIC8vIFFfT1NfSU5URUdSSVRZCistI2VuZGlmICAvLyBRVF9FR0xfTk9f WDExCisrI2Vsc2UgLy8gUVRfRUdMX05PX1gxMQorKy8vIElmIG9uZSBoYXMgYW4gZWdscGxhdGZv cm0uaCB3aXRoIGh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvRUdMLVJlZ2lzdHJ5L3B1 bGwvMTMwCisrLy8gdGhhdCBuZWVkcyBVU0VfWDExIHRvIGJlIGRlZmluZWQuCisrIyBkZWZpbmUg VVNFX1gxMQorKyNlbmRpZgorIAorICNpZmRlZiBRVF9FR0xfV0FZTEFORAorICMgZGVmaW5lIFdB WUxBTkQgLy8gTlYKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9mb250 ZGF0YWJhc2VzL2ZvbnRjb25maWcvcWZvbnRjb25maWdkYXRhYmFzZS5jcHAgYi9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRjb25maWcvcWZvbnRjb25maWdkYXRh YmFzZS5jcHAKK2luZGV4IDE1OWI0OTBjZTAuLjAwYWE4MGNkNTggMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRjb25maWcvcWZvbnRjb25m aWdkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ZvbnRkYXRh YmFzZXMvZm9udGNvbmZpZy9xZm9udGNvbmZpZ2RhdGFiYXNlLmNwcAorQEAgLTU2Nyw2ICs1Njcs OCBAQCB2b2lkIFFGb250Y29uZmlnRGF0YWJhc2U6OnBvcHVsYXRlRm9udERhdGFiYXNlKCkKKyAg ICAgICAgIGZvbnRzID0gRmNGb250TGlzdChudWxscHRyLCBwYXR0ZXJuLCBvcyk7CisgICAgICAg ICBGY09iamVjdFNldERlc3Ryb3kob3MpOworICAgICAgICAgRmNQYXR0ZXJuRGVzdHJveShwYXR0 ZXJuKTsKKysgICAgICAgIGlmICghZm9udHMpCisrICAgICAgICAgICAgcmV0dXJuOworICAgICB9 CisgCisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZm9udHMtPm5mb250OyBpKyspCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21t b24uY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jj b21tb24uY3BwCitpbmRleCBiNzEzYzE5NDQ3Li43Y2I5YThjNzlhIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb24uY3BwCisr KysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1v bi5jcHAKK0BAIC05NSw2ICs5NSw3IEBAIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgYXV0byBLZXlU YmwgPSBxTWFrZUFycmF5KAorICAgICAgICAgWGtiMlF0PFhLQl9LRVlfQ2xlYXIsICAgICAgICAg ICAgICAgICAgIFF0OjpLZXlfRGVsZXRlPiwKKyAgICAgICAgIFhrYjJRdDxYS0JfS0VZX1BhdXNl LCAgICAgICAgICAgICAgICAgICBRdDo6S2V5X1BhdXNlPiwKKyAgICAgICAgIFhrYjJRdDxYS0Jf S0VZX1ByaW50LCAgICAgICAgICAgICAgICAgICBRdDo6S2V5X1ByaW50PiwKKysgICAgICAgIFhr YjJRdDxYS0JfS0VZX1N5c19SZXEsICAgICAgICAgICAgICAgICBRdDo6S2V5X1N5c1JlcT4sCisg ICAgICAgICBYa2IyUXQ8MHgxMDA1RkY2MCwgICAgICAgICAgICAgICAgICAgICAgUXQ6OktleV9T eXNSZXE+LCAgICAgICAgIC8vIGhhcmRjb2RlZCBTdW4gU3lzUmVxCisgICAgICAgICBYa2IyUXQ8 MHgxMDA3ZmYwMCwgICAgICAgICAgICAgICAgICAgICAgUXQ6OktleV9TeXNSZXE+LCAgICAgICAg IC8vIGhhcmRjb2RlZCBYMzg2IFN5c1JlcQorIAorQEAgLTQ3MSw3ICs0NzIsNyBAQCBRVmVjdG9y PHhrYl9rZXlzeW1fdD4gUVhrYkNvbW1vbjo6dG9LZXlzeW0oUUtleUV2ZW50ICpldmVudCkKKyAg ICAgfSBlbHNlIGlmIChldmVudC0+bW9kaWZpZXJzKCkgJiBRdDo6S2V5cGFkTW9kaWZpZXIpIHsK KyAgICAgICAgIGlmIChxdEtleSA+PSBRdDo6S2V5XzAgJiYgcXRLZXkgPD0gUXQ6OktleV85KQor ICAgICAgICAgICAgIGtleXN5bXMuYXBwZW5kKFhLQl9LRVlfS1BfMCArIChxdEtleSAtIFF0OjpL ZXlfMCkpOworLSAgICB9IGVsc2UgaWYgKGlzTGF0aW4ocXRLZXkpICYmIGV2ZW50LT50ZXh0KCku aXNVcHBlcigpKSB7CisrICAgIH0gZWxzZSBpZiAoaXNMYXRpbjEocXRLZXkpICYmIGV2ZW50LT50 ZXh0KCkuaXNVcHBlcigpKSB7CisgICAgICAgICBrZXlzeW1zLmFwcGVuZChxdEtleSk7CisgICAg IH0KKyAKK0BAIC01MjMsNyArNTI0LDcgQEAgaW50IFFYa2JDb21tb246OmtleXN5bVRvUXRLZXko eGtiX2tleXN5bV90IGtleXN5bSwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlmaWUKKyAgICAg ICAgIC8vIFdpdGggc3RhbmRhcmQgc2hvcnRjdXRzIHdlIHNob3VsZCBwcmVmZXIgYSBsYXRpbiBj aGFyYWN0ZXIsIHRoaXMgaXMKKyAgICAgICAgIC8vIGZvciBjaGVja3MgbGlrZSAic29tZSBxa2V5 ZXZlbnQgPT0gUUtleVNlcXVlbmNlOjpDb3B5IiB0byB3b3JrIGV2ZW4KKyAgICAgICAgIC8vIHdo ZW4gdXNpbmcgZm9yIGV4YW1wbGUgJ3J1c3NpYW4nIGtleWJvYXJkIGxheW91dC4KKy0gICAgICAg IGlmICghUVhrYkNvbW1vbjo6aXNMYXRpbihrZXlzeW0pKSB7CisrICAgICAgICBpZiAoIVFYa2JD b21tb246OmlzTGF0aW4xKGtleXN5bSkpIHsKKyAgICAgICAgICAgICB4a2Jfa2V5c3ltX3QgbGF0 aW5LZXlzeW0gPSBRWGtiQ29tbW9uOjpsb29rdXBMYXRpbktleXN5bShzdGF0ZSwgY29kZSk7Cisg ICAgICAgICAgICAgaWYgKGxhdGluS2V5c3ltICE9IFhLQl9LRVlfTm9TeW1ib2wpCisgICAgICAg ICAgICAgICAgIGtleXN5bSA9IGxhdGluS2V5c3ltOworQEAgLTU0Niw3ICs1NDcsNyBAQCBzdGF0 aWMgaW50IGtleXN5bVRvUXRLZXlfaW50ZXJuYWwoeGtiX2tleXN5bV90IGtleXN5bSwgUXQ6Oktl eWJvYXJkTW9kaWZpZXJzIG1vZAorICAgICB9IGVsc2UgaWYgKGtleXN5bSA+PSBYS0JfS0VZX0tQ XzAgJiYga2V5c3ltIDw9IFhLQl9LRVlfS1BfOSkgeworICAgICAgICAgLy8gbnVtZXJpYyBrZXlw YWQga2V5cworICAgICAgICAgcXRLZXkgPSBRdDo6S2V5XzAgKyAoa2V5c3ltIC0gWEtCX0tFWV9L UF8wKTsKKy0gICAgfSBlbHNlIGlmIChRWGtiQ29tbW9uOjppc0xhdGluKGtleXN5bSkpIHsKKysg ICAgfSBlbHNlIGlmIChRWGtiQ29tbW9uOjppc0xhdGluMShrZXlzeW0pKSB7CisgICAgICAgICBx dEtleSA9IFFYa2JDb21tb246OnF4a2Jjb21tb25feGtiX2tleXN5bV90b191cHBlcihrZXlzeW0p OworICAgICB9IGVsc2UgeworICAgICAgICAgLy8gY2hlY2sgaWYgd2UgaGF2ZSBhIGRpcmVjdCBt YXBwaW5nCitAQCAtNjc4LDcgKzY3OSw3IEBAIFFMaXN0PGludD4gUVhrYkNvbW1vbjo6cG9zc2li bGVLZXlzKHhrYl9zdGF0ZSAqc3RhdGUsIGNvbnN0IFFLZXlFdmVudCAqZXZlbnQsCisgICAgICAg ICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbmVlZGVkTW9kcyA9IE1vZHNUYmxbaV07CisgICAgICAg ICBpZiAoKG1vZGlmaWVycyAmIG5lZWRlZE1vZHMpID09IG5lZWRlZE1vZHMpIHsKKyAgICAgICAg ICAgICBpZiAoaSA9PSA4KSB7CistICAgICAgICAgICAgICAgIGlmIChpc0xhdGluKGJhc2VRdEtl eSkpCisrICAgICAgICAgICAgICAgIGlmIChpc0xhdGluMShiYXNlUXRLZXkpKQorICAgICAgICAg ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgIC8vIGFkZCBhIGxhdGluIGtl eSBhcyBhIGZhbGwgYmFjayBrZXkKKyAgICAgICAgICAgICAgICAgc3ltID0gbG9va3VwTGF0aW5L ZXlzeW0oc3RhdGUsIGtleWNvZGUpOworQEAgLTczMyw3ICs3MzQsNyBAQCB2b2lkIFFYa2JDb21t b246OnZlcmlmeUhhc0xhdGluTGF5b3V0KHhrYl9rZXltYXAgKmtleW1hcCkKKyAgICAgZm9yICh4 a2JfbGF5b3V0X2luZGV4X3QgbGF5b3V0ID0gMDsgbGF5b3V0IDwgbGF5b3V0Q291bnQ7ICsrbGF5 b3V0KSB7CisgICAgICAgICBmb3IgKHhrYl9rZXljb2RlX3QgY29kZSA9IG1pbktleWNvZGU7IGNv ZGUgPCBtYXhLZXljb2RlOyArK2NvZGUpIHsKKyAgICAgICAgICAgICB4a2Jfa2V5bWFwX2tleV9n ZXRfc3ltc19ieV9sZXZlbChrZXltYXAsIGNvZGUsIGxheW91dCwgMCwgJmtleXN5bXMpOworLSAg ICAgICAgICAgIGlmIChrZXlzeW1zICYmIGlzTGF0aW4oa2V5c3ltc1swXSkpCisrICAgICAgICAg ICAgaWYgKGtleXN5bXMgJiYgaXNMYXRpbjEoa2V5c3ltc1swXSkpCisgICAgICAgICAgICAgICAg IG5yTGF0aW5LZXlzKys7CisgICAgICAgICAgICAgaWYgKG5yTGF0aW5LZXlzID4gMTApIC8vIGFy Yml0cmFyaWx5IGNob3NlbiB0aHJlc2hvbGQKKyAgICAgICAgICAgICAgICAgcmV0dXJuOworQEAg LTc2Niw3ICs3NjcsNyBAQCB4a2Jfa2V5c3ltX3QgUVhrYkNvbW1vbjo6bG9va3VwTGF0aW5LZXlz eW0oeGtiX3N0YXRlICpzdGF0ZSwgeGtiX2tleWNvZGVfdCBrZXljbworICAgICAgICAgeGtiX2xl dmVsX2luZGV4X3QgbGV2ZWwgPSB4a2Jfc3RhdGVfa2V5X2dldF9sZXZlbChzdGF0ZSwga2V5Y29k ZSwgbGF5b3V0KTsKKyAgICAgICAgIGlmICh4a2Jfa2V5bWFwX2tleV9nZXRfc3ltc19ieV9sZXZl bChrZXltYXAsIGtleWNvZGUsIGxheW91dCwgbGV2ZWwsICZzeW1zKSAhPSAxKQorICAgICAgICAg ICAgIGNvbnRpbnVlOworLSAgICAgICAgaWYgKGlzTGF0aW4oc3ltc1swXSkpIHsKKysgICAgICAg IGlmIChpc0xhdGluMShzeW1zWzBdKSkgeworICAgICAgICAgICAgIHN5bSA9IHN5bXNbMF07Cisg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9w bGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25fcC5oIGIvcXRiYXNlL3Ny Yy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25fcC5oCitpbmRleCA1 NjFlYWUwM2RiLi44Mzg5YmQ4ZjVhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1 cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25fcC5oCisrKysgYi9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbl9wLmgKK0BAIC05NCw4ICs5 NCw4IEBAIHB1YmxpYzoKKyAgICAgc3RhdGljIHZvaWQgdmVyaWZ5SGFzTGF0aW5MYXlvdXQoeGti X2tleW1hcCAqa2V5bWFwKTsKKyAgICAgc3RhdGljIHhrYl9rZXlzeW1fdCBsb29rdXBMYXRpbktl eXN5bSh4a2Jfc3RhdGUgKnN0YXRlLCB4a2Jfa2V5Y29kZV90IGtleWNvZGUpOworIAorLSAgICBz dGF0aWMgYm9vbCBpc0xhdGluKHhrYl9rZXlzeW1fdCBzeW0pIHsKKy0gICAgICAgIHJldHVybiAo KHN5bSA+PSAnYScgJiYgc3ltIDw9ICd6JykgfHwgKHN5bSA+PSAnQScgJiYgc3ltIDw9ICdaJykp OworKyAgICBzdGF0aWMgYm9vbCBpc0xhdGluMSh4a2Jfa2V5c3ltX3Qgc3ltKSB7CisrICAgICAg ICByZXR1cm4gc3ltIDw9IDB4ZmY7CisgICAgIH0KKyAgICAgc3RhdGljIGJvb2wgaXNLZXlwYWQo eGtiX2tleXN5bV90IHN5bSkgeworICAgICAgICAgcmV0dXJuIHN5bSA+PSBYS0JfS0VZX0tQX1Nw YWNlICYmIHN5bSA8PSBYS0JfS0VZX0tQXzk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0 Zm9ybXN1cHBvcnQva21zY29udmVuaWVuY2UvcWttc2RldmljZS5jcHAgYi9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC9rbXNjb252ZW5pZW5jZS9xa21zZGV2aWNlLmNwcAoraW5kZXggOGNkN2Y5 YjM2OC4uNDA2Zjg0NjYzZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L2ttc2NvbnZlbmllbmNlL3FrbXNkZXZpY2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC9rbXNjb252ZW5pZW5jZS9xa21zZGV2aWNlLmNwcAorQEAgLTMxOCw3ICszMTgsNyBA QCBRUGxhdGZvcm1TY3JlZW4gKlFLbXNEZXZpY2U6OmNyZWF0ZVNjcmVlbkZvckNvbm5lY3Rvcihk cm1Nb2RlUmVzUHRyIHJlc291cmNlcywKKyAKKyAgICAgaWYgKGN1cnJlbnQgPCAwICYmIGNydGNf bW9kZS5jbG9jayAhPSAwKSB7CisgICAgICAgICBtb2RlcyA8PCBjcnRjX21vZGU7CistICAgICAg ICBjdXJyZW50ID0gbW9kZS5zaXplKCkgLSAxOworKyAgICAgICAgY3VycmVudCA9IG1vZGVzLnNp emUoKSAtIDE7CisgICAgIH0KKyAKKyAgICAgaWYgKGNvbmZpZ3VyYXRpb24gPT0gT3V0cHV0Q29u ZmlnQ3VycmVudCkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51 eGFjY2Vzc2liaWxpdHkvYXRzcGlhZGFwdG9yLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBw b3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0b3IuY3BwCitpbmRleCA5MTUzZmQyMGJi Li4yNTVlYTVlMzNlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGlu dXhhY2Nlc3NpYmlsaXR5L2F0c3BpYWRhcHRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZv cm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0b3IuY3BwCitAQCAtMTk0LDYg KzE5NCw5IEBAIFFTdHJpbmcgQXRTcGlBZGFwdG9yOjppbnRyb3NwZWN0KGNvbnN0IFFTdHJpbmcg JnBhdGgpIGNvbnN0CisgICAgICAgICAgICAgICAgICIgICAgICA8YXJnIGRpcmVjdGlvbj1cIm91 dFwiIHR5cGU9XCIoc28pXCIvPlxuIgorICAgICAgICAgICAgICAgICAiICAgICAgPGFubm90YXRp b24gdmFsdWU9XCJRU3BpT2JqZWN0UmVmZXJlbmNlXCIgbmFtZT1cIm9yZy5xdHByb2plY3QuUXRE QnVzLlF0VHlwZU5hbWUuT3V0MFwiLz5cbiIKKyAgICAgICAgICAgICAgICAgIiAgICA8L21ldGhv ZD5cbiIKKysgICAgICAgICAgICAgICAgIiAgICA8bWV0aG9kIG5hbWU9XCJHZXRBY2Nlc3NpYmxl SWRcIj5cbiIKKysgICAgICAgICAgICAgICAgIiAgICAgIDxhcmcgZGlyZWN0aW9uPVwib3V0XCIg dHlwZT1cInNcIi8+XG4iCisrICAgICAgICAgICAgICAgICIgICAgPC9tZXRob2Q+XG4iCisgICAg ICAgICAgICAgICAgICIgIDwvaW50ZXJmYWNlPlxuIgorICAgICAgICAgICAgICAgICApOworIAor QEAgLTkxMyw4ICs5MTYsMTcgQEAgdm9pZCBBdFNwaUFkYXB0b3I6Om5vdGlmeShRQWNjZXNzaWJs ZUV2ZW50ICpldmVudCkKKyAgICAgfQorICAgICBjYXNlIFFBY2Nlc3NpYmxlOjpOYW1lQ2hhbmdl ZDogeworICAgICAgICAgaWYgKHNlbmRPYmplY3QgfHwgc2VuZE9iamVjdF9wcm9wZXJ0eV9jaGFu Z2UgfHwgc2VuZE9iamVjdF9wcm9wZXJ0eV9jaGFuZ2VfYWNjZXNzaWJsZV9uYW1lKSB7CistICAg ICAgICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShldmVudC0+YWNjZXNzaWJs ZUludGVyZmFjZSgpKTsKKy0gICAgICAgICAgICBRVmFyaWFudExpc3QgYXJncyA9IHBhY2tEQnVz U2lnbmFsQXJndW1lbnRzKFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtbmFtZSIpLCAwLCAwLCB2 YXJpYW50Rm9yUGF0aChwYXRoKSk7CisrICAgICAgICAgICAgUUFjY2Vzc2libGVJbnRlcmZhY2Ug KmlmYWNlID0gZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKTsKKysgICAgICAgICAgICBpZiAo IWlmYWNlKSB7CisrICAgICAgICAgICAgICAgIHFDRGVidWcobGNBY2Nlc3NpYmlsaXR5QXRzcGks CisrICAgICAgICAgICAgICAgICAgICAgICAgIk5hbWVDaGFuZ2VkIGV2ZW50IGZyb20gaW52YWxp ZCBhY2Nlc3NpYmxlLiIpOworKyAgICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICAgICAg fQorKworKyAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IHBhdGhGb3JJbnRlcmZhY2UoaWZhY2Up OworKyAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzID0gcGFja0RCdXNTaWduYWxBcmd1bWVu dHMoCisrICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtbmFtZSIpLCAw LCAwLAorKyAgICAgICAgICAgICAgICBRVmFyaWFudDo6ZnJvbVZhbHVlKFFEQnVzVmFyaWFudChp ZmFjZS0+dGV4dChRQWNjZXNzaWJsZTo6TmFtZSkpKSk7CisgICAgICAgICAgICAgc2VuZERCdXNT aWduYWwocGF0aCwgUUxhdGluMVN0cmluZyhBVFNQSV9EQlVTX0lOVEVSRkFDRV9FVkVOVF9PQkpF Q1QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIlByb3BlcnR5 Q2hhbmdlIiksIGFyZ3MpOworICAgICAgICAgfQorQEAgLTkyMiw4ICs5MzQsMTcgQEAgdm9pZCBB dFNwaUFkYXB0b3I6Om5vdGlmeShRQWNjZXNzaWJsZUV2ZW50ICpldmVudCkKKyAgICAgfQorICAg ICBjYXNlIFFBY2Nlc3NpYmxlOjpEZXNjcmlwdGlvbkNoYW5nZWQ6IHsKKyAgICAgICAgIGlmIChz ZW5kT2JqZWN0IHx8IHNlbmRPYmplY3RfcHJvcGVydHlfY2hhbmdlIHx8IHNlbmRPYmplY3RfcHJv cGVydHlfY2hhbmdlX2FjY2Vzc2libGVfZGVzY3JpcHRpb24pIHsKKy0gICAgICAgICAgICBRU3Ry aW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGV2ZW50LT5hY2Nlc3NpYmxlSW50ZXJmYWNlKCkp OworLSAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzID0gcGFja0RCdXNTaWduYWxBcmd1bWVu dHMoUUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1kZXNjcmlwdGlvbiIpLCAwLCAwLCB2YXJpYW50 Rm9yUGF0aChwYXRoKSk7CisrICAgICAgICAgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNl ID0gZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKTsKKysgICAgICAgICAgICBpZiAoIWlmYWNl KSB7CisrICAgICAgICAgICAgICAgIHFDRGVidWcobGNBY2Nlc3NpYmlsaXR5QXRzcGksCisrICAg ICAgICAgICAgICAgICAgICAgICAgIkRlc2NyaXB0aW9uQ2hhbmdlZCBldmVudCBmcm9tIGludmFs aWQgYWNjZXNzaWJsZS4iKTsKKysgICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgICAg IH0KKysKKysgICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGlmYWNl KTsKKysgICAgICAgICAgICBRVmFyaWFudExpc3QgYXJncyA9IHBhY2tEQnVzU2lnbmFsQXJndW1l bnRzKAorKyAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJhY2Nlc3NpYmxlLWRlc2NyaXB0 aW9uIiksIDAsIDAsCisrICAgICAgICAgICAgICAgIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNW YXJpYW50KGlmYWNlLT50ZXh0KFFBY2Nlc3NpYmxlOjpEZXNjcmlwdGlvbikpKSk7CisgICAgICAg ICAgICAgc2VuZERCdXNTaWduYWwocGF0aCwgUUxhdGluMVN0cmluZyhBVFNQSV9EQlVTX0lOVEVS RkFDRV9FVkVOVF9PQkpFQ1QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFT dHJpbmcoIlByb3BlcnR5Q2hhbmdlIiksIGFyZ3MpOworICAgICAgICAgfQorQEAgLTEwMzgsNyAr MTA1OSw5IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpub3RpZnkoUUFjY2Vzc2libGVFdmVudCAqZXZl bnQpCisgICAgICAgICAgICAgICAgIC8vIENvbWJvIEJveCB3aXRoIEFULVNQSSBsaWtlcyB0byBi ZSBzcGVjaWFsCisgICAgICAgICAgICAgICAgIC8vIEl0IHJlcXVpcmVzIGEgbmFtZS1jaGFuZ2Ug dG8gdXBkYXRlIGNhY2hlcyBhbmQgdGhlbiBzZWxlY3Rpb24tY2hhbmdlZAorICAgICAgICAgICAg ICAgICBRU3RyaW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGlmYWNlKTsKKy0gICAgICAgICAg ICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MxID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoUUxhdGlu MVN0cmluZygiYWNjZXNzaWJsZS1uYW1lIiksIDAsIDAsIHZhcmlhbnRGb3JQYXRoKHBhdGgpKTsK KysgICAgICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MxID0gcGFja0RCdXNTaWduYWxBcmd1 bWVudHMoCisrICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJhY2Nlc3NpYmxlLW5h bWUiKSwgMCwgMCwKKysgICAgICAgICAgICAgICAgICAgIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURC dXNWYXJpYW50KGlmYWNlLT50ZXh0KFFBY2Nlc3NpYmxlOjpOYW1lKSkpKTsKKyAgICAgICAgICAg ICAgICAgc2VuZERCdXNTaWduYWwocGF0aCwgUUxhdGluMVN0cmluZyhBVFNQSV9EQlVTX0lOVEVS RkFDRV9FVkVOVF9PQkpFQ1QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0 aW4xU3RyaW5nKCJQcm9wZXJ0eUNoYW5nZSIpLCBhcmdzMSk7CisgICAgICAgICAgICAgICAgIFFW YXJpYW50TGlzdCBhcmdzMiA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKFFTdHJpbmcoKSwgMCwg MCwgUVZhcmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoUVZhcmlhbnQoMCkpKSk7CitAQCAt MTM1OCw2ICsxMzgxLDI2IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpyZWdpc3RlckFwcGxpY2F0aW9u KCkKKyAgICAgZGVsZXRlIHJlZ2lzdHJ5OworIH0KKyAKKytuYW1lc3BhY2UgeworK1FTdHJpbmcg YWNjZXNzaWJsZUlkRm9yQWNjZXNzaWJsZShRQWNjZXNzaWJsZUludGVyZmFjZSAqYWNjZXNzaWJs ZSkKKyt7CisrICAgIFFTdHJpbmcgcmVzdWx0OworKyAgICB3aGlsZSAoYWNjZXNzaWJsZSkgewor KyAgICAgICAgaWYgKCFyZXN1bHQuaXNFbXB0eSgpKQorKyAgICAgICAgICAgIHJlc3VsdC5wcmVw ZW5kKFFMYXRpbjFDaGFyKCcuJykpOworKyAgICAgICAgaWYgKGF1dG8gb2JqID0gYWNjZXNzaWJs ZS0+b2JqZWN0KCkpIHsKKysgICAgICAgICAgICBjb25zdCBRU3RyaW5nIG5hbWUgPSBvYmotPm9i amVjdE5hbWUoKTsKKysgICAgICAgICAgICBpZiAoIW5hbWUuaXNFbXB0eSgpKQorKyAgICAgICAg ICAgICAgICByZXN1bHQucHJlcGVuZChuYW1lKTsKKysgICAgICAgICAgICBlbHNlCisrICAgICAg ICAgICAgICAgIHJlc3VsdC5wcmVwZW5kKFFTdHJpbmc6OmZyb21VdGY4KG9iai0+bWV0YU9iamVj dCgpLT5jbGFzc05hbWUoKSkpOworKyAgICAgICAgfQorKyAgICAgICAgYWNjZXNzaWJsZSA9IGFj Y2Vzc2libGUtPnBhcmVudCgpOworKyAgICB9CisrICAgIHJldHVybiByZXN1bHQ7CisrfQorK30g Ly8gbmFtZXNwYWNlCisrCisgLy8gQWNjZXNzaWJsZQorIGJvb2wgQXRTcGlBZGFwdG9yOjphY2Nl c3NpYmxlSW50ZXJmYWNlKFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppbnRlcmZhY2UsIGNvbnN0IFFT dHJpbmcgJmZ1bmN0aW9uLCBjb25zdCBRREJ1c01lc3NhZ2UgJm1lc3NhZ2UsIGNvbnN0IFFEQnVz Q29ubmVjdGlvbiAmY29ubmVjdGlvbikKKyB7CitAQCAtMTQ0MSw2ICsxNDg0LDkgQEAgYm9vbCBB dFNwaUFkYXB0b3I6OmFjY2Vzc2libGVJbnRlcmZhY2UoUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlu dGVyZmFjZSwgY29uc3QgUVMKKyAgICAgICAgICAgICBjaGlsZHJlbiA8PCByZWY7CisgICAgICAg ICB9CisgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWVzc2FnZS5jcmVhdGVSZXBseShRVmFyaWFu dDo6ZnJvbVZhbHVlKGNoaWxkcmVuKSkpOworKyAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uID09IFFM YXRpbjFTdHJpbmcoIkdldEFjY2Vzc2libGVJZCIpKSB7CisrICAgICAgICBzZW5kUmVwbHkoY29u bmVjdGlvbiwgbWVzc2FnZSwKKysgICAgICAgICAgICAgICAgICBRVmFyaWFudDo6ZnJvbVZhbHVl KFFEQnVzVmFyaWFudChhY2Nlc3NpYmxlSWRGb3JBY2Nlc3NpYmxlKGludGVyZmFjZSkpKSk7Cisg ICAgIH0gZWxzZSB7CisgICAgICAgICBxQ0RlYnVnKGxjQWNjZXNzaWJpbGl0eUF0c3BpKSA8PCAi V0FSTklORzogQXRTcGlBZGFwdG9yOjphY2Nlc3NpYmxlSW50ZXJmYWNlIGRvZXMgbm90IGltcGxl bWVudCAiIDw8IGZ1bmN0aW9uIDw8IG1lc3NhZ2UucGF0aCgpOworICAgICAgICAgcmV0dXJuIGZh bHNlOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNz aWJpbGl0eS9kYnVzY29ubmVjdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9s aW51eGFjY2Vzc2liaWxpdHkvZGJ1c2Nvbm5lY3Rpb24uY3BwCitpbmRleCA0NWRkYzhlNDk2Li5j YzczNGFiYzYzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhh Y2Nlc3NpYmlsaXR5L2RidXNjb25uZWN0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9y bXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2RidXNjb25uZWN0aW9uLmNwcAorQEAgLTY5LDYg KzY5LDIxIEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIERCdXNDb25uZWN0aW9uOjpEQnVzQ29ubmVj dGlvbihRT2JqZWN0ICpwYXJlbnQpCisgICAgIDogUU9iamVjdChwYXJlbnQpLCBtX2ExMXlDb25u ZWN0aW9uKFFTdHJpbmcoKSksIG1fZW5hYmxlZChmYWxzZSkKKyB7CisrICAgIC8vIElmIHRoZSBi dXMgaXMgZXhwbGljaXRseSBzZXQgdmlhIGVudiB2YXIgaXQgb3ZlcnJpZGVzIGV2ZXJ5dGhpbmcg ZWxzZS4KKysgICAgUUJ5dGVBcnJheSBhZGRyZXNzRW52ID0gcWdldGVudigiQVRfU1BJX0JVU19B RERSRVNTIik7CisrICAgIGlmICghYWRkcmVzc0Vudi5pc0VtcHR5KCkpIHsKKysgICAgICAgIC8v IE9ubHkgY29ubmVjdCBvbiBuZXh0IGxvb3AgcnVuLCBjb25uZWN0aW9ucyB0byBvdXIgZW5hYmxl ZCBzaWduYWwgYXJlCisrICAgICAgICAvLyBvbmx5IGVzdGFibGlzaGVkIGFmdGVyIHRoZSBjdG9y IHJldHVybnMuCisrICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKAorKyAgICAgICAg ICAgICAgICB0aGlzLAorKyAgICAgICAgICAgICAgICBbdGhpcywgYWRkcmVzc0Vudl0geworKyAg ICAgICAgICAgICAgICAgICAgbV9lbmFibGVkID0gdHJ1ZTsKKysgICAgICAgICAgICAgICAgICAg IGNvbm5lY3RBMTF5QnVzKFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoYWRkcmVzc0VudikpOworKyAg ICAgICAgICAgICAgICB9LAorKyAgICAgICAgICAgICAgICBRdDo6UXVldWVkQ29ubmVjdGlvbik7 CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKyAgICAgLy8gU3RhcnQgbW9uaXRvcmluZyBp ZiAib3JnLmExMXkuQnVzIiBpcyByZWdpc3RlcmVkIGFzIERCdXMgc2VydmljZS4KKyAgICAgUURC dXNDb25uZWN0aW9uIGMgPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKTsKKyAgICAgaWYg KCFjLmlzQ29ubmVjdGVkKCkpIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3Vw cG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlcy5jcHAgYi9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhz ZXJ2aWNlcy5jcHAKK2luZGV4IDFhM2NhYjI3NWQuLjJhYmUwMzkxMjYgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3Vu aXhzZXJ2aWNlcy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2Vz L2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzLmNwcAorQEAgLTUxLDYgKzUxLDkgQEAK KyAjaW5jbHVkZSA8UXRDb3JlL1FTdGFuZGFyZFBhdGhzPgorICNpbmNsdWRlIDxRdENvcmUvUVVy bD4KKyAKKysjaW5jbHVkZSA8UXRHdWkvUUd1aUFwcGxpY2F0aW9uPgorKyNpbmNsdWRlIDxRdEd1 aS9RV2luZG93PgorKworICNpZiBRVF9DT05GSUcoZGJ1cykKKyAvLyBUaGVzZSBRdENvcmUgaW5j bHVkZXMgYXJlIG5lZWRlZCBmb3IgeGRnLWRlc2t0b3AtcG9ydGFsIHN1cHBvcnQKKyAjaW5jbHVk ZSA8UXRDb3JlL3ByaXZhdGUvcWNvcmVfdW5peF9wLmg+CitAQCAtNTgsNiArNjEsOCBAQAorICNp bmNsdWRlIDxRdENvcmUvUUZpbGVJbmZvPgorICNpbmNsdWRlIDxRdENvcmUvUVVybFF1ZXJ5Pgor IAorKyNpbmNsdWRlIDxRdEd1aS9RQ29sb3I+CisrCisgI2luY2x1ZGUgPFF0REJ1cy9RREJ1c0Nv bm5lY3Rpb24+CisgI2luY2x1ZGUgPFF0REJ1cy9RREJ1c01lc3NhZ2U+CisgI2luY2x1ZGUgPFF0 REJ1cy9RREJ1c1BlbmRpbmdDYWxsPgorQEAgLTE0Miw2ICsxNDcsOCBAQCBzdGF0aWMgaW5saW5l IGJvb2wgZGV0ZWN0V2ViQnJvd3Nlcihjb25zdCBRQnl0ZUFycmF5ICZkZXNrdG9wLAorICAgICB9 CisgCisgICAgIGlmIChkZXNrdG9wID09IFFCeXRlQXJyYXkoIktERSIpKSB7CisrICAgICAgICBp ZiAoY2hlY2tFeGVjdXRhYmxlKFFTdHJpbmdMaXRlcmFsKCJrZGUtb3BlbjUiKSwgYnJvd3Nlcikp CisrICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAvLyBLb25xdWVyb3IgbGF1bmNo ZXIKKyAgICAgICAgIGlmIChjaGVja0V4ZWN1dGFibGUoUVN0cmluZ0xpdGVyYWwoImtmbWNsaWVu dCIpLCBicm93c2VyKSkgeworICAgICAgICAgICAgIGJyb3dzZXItPmFwcGVuZChRTGF0aW4xU3Ry aW5nKCIgZXhlYyIpKTsKK0BAIC0yOTYsOCArMzAzLDEzNSBAQCBzdGF0aWMgaW5saW5lIFFEQnVz TWVzc2FnZSB4ZGdEZXNrdG9wUG9ydGFsU2VuZEVtYWlsKGNvbnN0IFFVcmwgJnVybCkKKyAKKyAg ICAgcmV0dXJuIFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmNhbGwobWVzc2FnZSk7Cisg fQorKworK25hbWVzcGFjZSB7Cisrc3RydWN0IFhER0Rlc2t0b3BDb2xvcgorK3sKKysgICAgZG91 YmxlIHIgPSAwOworKyAgICBkb3VibGUgZyA9IDA7CisrICAgIGRvdWJsZSBiID0gMDsKKysKKysg ICAgUUNvbG9yIHRvUUNvbG9yKCkgY29uc3QKKysgICAgeworKyAgICAgICAgY29uc3RleHByIGF1 dG8gcmdiTWF4ID0gMjU1OworKyAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8aW50PihyICog cmdiTWF4KSwgc3RhdGljX2Nhc3Q8aW50PihnICogcmdiTWF4KSwKKysgICAgICAgICAgICAgICAg IHN0YXRpY19jYXN0PGludD4oYiAqIHJnYk1heCkgfTsKKysgICAgfQorK307CisrCisrY29uc3Qg UURCdXNBcmd1bWVudCAmb3BlcmF0b3I+Pihjb25zdCBRREJ1c0FyZ3VtZW50ICZhcmd1bWVudCwg WERHRGVza3RvcENvbG9yICZteVN0cnVjdCkKKyt7CisrICAgIGFyZ3VtZW50LmJlZ2luU3RydWN0 dXJlKCk7CisrICAgIGFyZ3VtZW50ID4+IG15U3RydWN0LnIgPj4gbXlTdHJ1Y3QuZyA+PiBteVN0 cnVjdC5iOworKyAgICBhcmd1bWVudC5lbmRTdHJ1Y3R1cmUoKTsKKysgICAgcmV0dXJuIGFyZ3Vt ZW50OworK30KKysKKytjbGFzcyBYZGdEZXNrdG9wUG9ydGFsQ29sb3JQaWNrZXIgOiBwdWJsaWMg UVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyCisreworKyAgICBRX09CSkVDVAorK3B1YmxpYzoK KysgICAgWGRnRGVza3RvcFBvcnRhbENvbG9yUGlja2VyKGNvbnN0IFFTdHJpbmcgJnBhcmVudFdp bmRvd0lkLCBRV2luZG93ICpwYXJlbnQpCisrICAgICAgICA6IFFQbGF0Zm9ybVNlcnZpY2VDb2xv clBpY2tlcihwYXJlbnQpLCBtX3BhcmVudFdpbmRvd0lkKHBhcmVudFdpbmRvd0lkKQorKyAgICB7 CisrICAgIH0KKysKKysgICAgdm9pZCBwaWNrQ29sb3IoKSBvdmVycmlkZQorKyAgICB7CisrICAg ICAgICAvLyBEQnVzIHNpZ25hdHVyZToKKysgICAgICAgIC8vIFBpY2tDb2xvciAoSU4gICBzICAg ICAgcGFyZW50X3dpbmRvdywKKysgICAgICAgIC8vICAgICAgICAgICAgSU4gICBhe3N2fSAgb3B0 aW9ucworKyAgICAgICAgLy8gICAgICAgICAgICBPVVQgIG8gICAgICBoYW5kbGUpCisrICAgICAg ICAvLyBPcHRpb25zOgorKyAgICAgICAgLy8gaGFuZGxlX3Rva2VuIChzKSAtICBBIHN0cmluZyB0 aGF0IHdpbGwgYmUgdXNlZCBhcyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBAaGFuZGxlLgorKwor KyAgICAgICAgUURCdXNNZXNzYWdlIG1lc3NhZ2UgPSBRREJ1c01lc3NhZ2U6OmNyZWF0ZU1ldGhv ZENhbGwoCisrICAgICAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3Au cG9ydGFsLkRlc2t0b3AiKSwgUVN0cmluZ0xpdGVyYWwoIi9vcmcvZnJlZWRlc2t0b3AvcG9ydGFs L2Rlc2t0b3AiKSwKKysgICAgICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVz a3RvcC5wb3J0YWwuU2NyZWVuc2hvdCIpLCBRU3RyaW5nTGl0ZXJhbCgiUGlja0NvbG9yIikpOwor KyAgICAgICAgbWVzc2FnZSA8PCBtX3BhcmVudFdpbmRvd0lkIDw8IFFWYXJpYW50TWFwKCk7Cisr CisrICAgICAgICBRREJ1c1BlbmRpbmdDYWxsIHBlbmRpbmdDYWxsID0gUURCdXNDb25uZWN0aW9u OjpzZXNzaW9uQnVzKCkuYXN5bmNDYWxsKG1lc3NhZ2UpOworKyAgICAgICAgYXV0byB3YXRjaGVy ID0gbmV3IFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyKHBlbmRpbmdDYWxsLCB0aGlzKTsKKysgICAg ICAgIGNvbm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyOjpmaW5pc2hlZCwg dGhpcywKKysgICAgICAgICAgICAgICAgW3RoaXNdKFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyICp3 YXRjaGVyKSB7CisrICAgICAgICAgICAgICAgICAgICB3YXRjaGVyLT5kZWxldGVMYXRlcigpOwor KyAgICAgICAgICAgICAgICAgICAgUURCdXNQZW5kaW5nUmVwbHk8UURCdXNPYmplY3RQYXRoPiBy ZXBseSA9ICp3YXRjaGVyOworKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcGx5LmlzRXJyb3Io KSkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJEQnVzIGNhbGwgdG8gcGlj ayBjb2xvciBmYWlsZWQ6ICVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBx UHJpbnRhYmxlKHJlcGx5LmVycm9yKCkubWVzc2FnZSgpKSk7CisrICAgICAgICAgICAgICAgICAg ICAgICAgUV9FTUlUIGNvbG9yUGlja2VkKHt9KTsKKysgICAgICAgICAgICAgICAgICAgIH0gZWxz ZSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVz KCkuY29ubmVjdCgKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmdMaXRl cmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLkRlc2t0b3AiKSwgcmVwbHkudmFsdWUoKS5wYXRo KCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3Jn LmZyZWVkZXNrdG9wLnBvcnRhbC5SZXF1ZXN0IiksIFFTdHJpbmdMaXRlcmFsKCJSZXNwb25zZSIp LCB0aGlzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xhbmctZm9ybWF0 IG9mZgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChnb3RDb2xvclJlc3Bv bnNlKHVpbnQsUVZhcmlhbnRNYXApKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ly8gY2xhbmctZm9ybWF0IG9uCisrICAgICAgICAgICAgICAgICAgICAgICAgKTsKKysgICAgICAg ICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgfSk7CisrICAgIH0KKysKKytwcml2YXRl IFFfU0xPVFM6CisrICAgIHZvaWQgZ290Q29sb3JSZXNwb25zZSh1aW50IHJlc3VsdCwgY29uc3Qg UVZhcmlhbnRNYXAgJm1hcCkKKysgICAgeworKyAgICAgICAgaWYgKHJlc3VsdCAhPSAwKQorKyAg ICAgICAgICAgIHJldHVybjsKKysgICAgICAgIFhER0Rlc2t0b3BDb2xvciBjb2xvcnt9OworKyAg ICAgICAgbWFwLnZhbHVlKFFTdHJpbmdMaXRlcmFsKCJjb2xvciIpKS52YWx1ZTxRREJ1c0FyZ3Vt ZW50PigpID4+IGNvbG9yOworKyAgICAgICAgUV9FTUlUIGNvbG9yUGlja2VkKGNvbG9yLnRvUUNv bG9yKCkpOworKyAgICAgICAgZGVsZXRlTGF0ZXIoKTsKKysgICAgfQorKworK3ByaXZhdGU6Cisr ICAgIGNvbnN0IFFTdHJpbmcgbV9wYXJlbnRXaW5kb3dJZDsKKyt9OworK30gLy8gbmFtZXNwYWNl CisrCisgI2VuZGlmIC8vIFFUX0NPTkZJRyhkYnVzKQorIAorK1FHZW5lcmljVW5peFNlcnZpY2Vz OjpRR2VuZXJpY1VuaXhTZXJ2aWNlcygpCisreworKyNpZiBRVF9DT05GSUcoZGJ1cykKKysgICAg aWYgKHFFbnZpcm9ubWVudFZhcmlhYmxlSW50VmFsdWUoIlFUX05PX1hER19ERVNLVE9QX1BPUlRB TCIpID4gMCkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrICAgIFFEQnVzTWVzc2FnZSBt ZXNzYWdlID0gUURCdXNNZXNzYWdlOjpjcmVhdGVNZXRob2RDYWxsKAorKyAgICAgICAgICAgIFFT dHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLkRlc2t0b3AiKSwgUVN0cmluZ0xp dGVyYWwoIi9vcmcvZnJlZWRlc2t0b3AvcG9ydGFsL2Rlc2t0b3AiKSwKKysgICAgICAgICAgICBR U3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLkRCdXMuUHJvcGVydGllcyIpLCBRU3RyaW5n TGl0ZXJhbCgiR2V0IikpOworKyAgICBtZXNzYWdlIDw8IFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJl ZWRlc2t0b3AucG9ydGFsLlNjcmVlbnNob3QiKQorKyAgICAgICAgICAgIDw8IFFTdHJpbmdMaXRl cmFsKCJ2ZXJzaW9uIik7CisrCisrICAgIFFEQnVzUGVuZGluZ0NhbGwgcGVuZGluZ0NhbGwgPSBR REJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5hc3luY0NhbGwobWVzc2FnZSk7CisrICAgIGF1 dG8gd2F0Y2hlciA9IG5ldyBRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcihwZW5kaW5nQ2FsbCk7Cisr ICAgIFFPYmplY3Q6OmNvbm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyOjpm aW5pc2hlZCwgd2F0Y2hlciwKKysgICAgICAgICAgICAgICAgICAgICBbdGhpc10oUURCdXNQZW5k aW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgd2F0 Y2hlci0+ZGVsZXRlTGF0ZXIoKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgUURCdXNQZW5k aW5nUmVwbHk8UVZhcmlhbnQ+IHJlcGx5ID0gKndhdGNoZXI7CisrICAgICAgICAgICAgICAgICAg ICAgICAgIGlmICghcmVwbHkuaXNFcnJvcigpICYmIHJlcGx5LnZhbHVlKCkudG9VSW50KCkgPj0g MikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faGFzU2NyZWVuc2hvdFBvcnRhbFdp dGhDb2xvclBpY2tpbmcgPSB0cnVlOworKyAgICAgICAgICAgICAgICAgICAgIH0pOworKworKyNl bmRpZgorK30KKysKKytRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIgKlFHZW5lcmljVW5peFNl cnZpY2VzOjpjb2xvclBpY2tlcihRV2luZG93ICpwYXJlbnQpCisreworKyNpZiBRVF9DT05GSUco ZGJ1cykKKysgICAgLy8gTWFrZSBkb3VibGUgc3VyZSB0aGF0IHdlIGFyZSBpbiBhIHdheWxhbmQg ZW52aXJvbm1lbnQuIEluIHBhcnRpY3VsYXIgY2hlY2sKKysgICAgLy8gV0FZTEFORF9ESVNQTEFZ IHNvIGFsc28gWFdheWxhbmQgYXBwcyBiZW5lZml0IGZyb20gcG9ydGFsLWJhc2VkIGNvbG9yIHBp Y2tpbmcuCisrICAgIC8vIE91dHNpZGUgd2F5bGFuZCB3ZSdsbCByYXRoZXIgcmVseSBvbiBvdGhl ciBtZWFucyB0aGFuIHRoZSBYREcgZGVza3RvcCBwb3J0YWwuCisrICAgIGlmICghcUVudmlyb25t ZW50VmFyaWFibGVJc0VtcHR5KCJXQVlMQU5EX0RJU1BMQVkiKQorKyAgICAgICAgfHwgUUd1aUFw cGxpY2F0aW9uOjpwbGF0Zm9ybU5hbWUoKS5zdGFydHNXaXRoKFFMYXRpbjFTdHJpbmcoIndheWxh bmQiKSkpIHsKKysgICAgICAgIHJldHVybiBuZXcgWGRnRGVza3RvcFBvcnRhbENvbG9yUGlja2Vy KHBvcnRhbFdpbmRvd0lkZW50aWZpZXIocGFyZW50KSwgcGFyZW50KTsKKysgICAgfQorKyAgICBy ZXR1cm4gbnVsbHB0cjsKKysjZWxzZQorKyAgICBRX1VOVVNFRChwYXJlbnQpOworKyAgICByZXR1 cm4gbnVsbHB0cjsKKysjZW5kaWYKKyt9CisrCisgUUJ5dGVBcnJheSBRR2VuZXJpY1VuaXhTZXJ2 aWNlczo6ZGVza3RvcEVudmlyb25tZW50KCkgY29uc3QKKyB7CisgICAgIHN0YXRpYyBjb25zdCBR Qnl0ZUFycmF5IHJlc3VsdCA9IGRldGVjdERlc2t0b3BFbnZpcm9ubWVudCgpOworQEAgLTM1Miw2 ICs0ODYsOCBAQCBib29sIFFHZW5lcmljVW5peFNlcnZpY2VzOjpvcGVuRG9jdW1lbnQoY29uc3Qg UVVybCAmdXJsKQorIH0KKyAKKyAjZWxzZQorK1FHZW5lcmljVW5peFNlcnZpY2VzOjpRR2VuZXJp Y1VuaXhTZXJ2aWNlcygpID0gZGVmYXVsdDsKKysKKyBRQnl0ZUFycmF5IFFHZW5lcmljVW5peFNl cnZpY2VzOjpkZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdAorIHsKKyAgICAgcmV0dXJuIFFCeXRl QXJyYXlMaXRlcmFsKCJVTktOT1dOIik7CitAQCAtMzcxLDYgKzUwNywzMCBAQCBib29sIFFHZW5l cmljVW5peFNlcnZpY2VzOjpvcGVuRG9jdW1lbnQoY29uc3QgUVVybCAmdXJsKQorICAgICByZXR1 cm4gZmFsc2U7CisgfQorIAorK1FQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAqUUdlbmVyaWNV bml4U2VydmljZXM6OmNvbG9yUGlja2VyKFFXaW5kb3cgKnBhcmVudCkKKyt7CisrICAgIFFfVU5V U0VEKHBhcmVudCk7CisrICAgIHJldHVybiBudWxscHRyOworK30KKysKKyAjZW5kaWYgLy8gUVRf Tk9fTVVMVElQUk9DRVNTCisgCisrUVN0cmluZyBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6cG9ydGFs V2luZG93SWRlbnRpZmllcihRV2luZG93ICp3aW5kb3cpCisreworKyAgICBpZiAoUUd1aUFwcGxp Y2F0aW9uOjpwbGF0Zm9ybU5hbWUoKSA9PSBRTGF0aW4xU3RyaW5nKCJ4Y2IiKSkKKysgICAgICAg IHJldHVybiBRU3RyaW5nTGl0ZXJhbCgieDExOiIpICsgUVN0cmluZzo6bnVtYmVyKHdpbmRvdy0+ d2luSWQoKSwgMTYpOworKyAgICByZXR1cm4gUVN0cmluZygpOworK30KKysKKytib29sIFFHZW5l cmljVW5peFNlcnZpY2VzOjpoYXNDYXBhYmlsaXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0eSkgY29u c3QKKyt7CisrICAgIHN3aXRjaCAoY2FwYWJpbGl0eSkgeworKyAgICBjYXNlIENhcGFiaWxpdHk6 OkNvbG9yUGlja2luZzoKKysgICAgICAgIHJldHVybiBtX2hhc1NjcmVlbnNob3RQb3J0YWxXaXRo Q29sb3JQaWNraW5nOworKyAgICB9CisrICAgIHJldHVybiBmYWxzZTsKKyt9CisrCisgUVRfRU5E X05BTUVTUEFDRQorKworKyNpbmNsdWRlICJxZ2VuZXJpY3VuaXhzZXJ2aWNlcy5tb2MiCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgv cWdlbmVyaWN1bml4c2VydmljZXNfcC5oIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2Vy dmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXNfcC5oCitpbmRleCA4YWMzZGU2 ZjAzLi4zMDkyNGU2NGJkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQv c2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXNfcC5oCisrKysgYi9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhz ZXJ2aWNlc19wLmgKK0BAIC01OSwxNiArNTksMjEgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgY2xh c3MgUUdlbmVyaWNVbml4U2VydmljZXMgOiBwdWJsaWMgUVBsYXRmb3JtU2VydmljZXMKKyB7Cisg cHVibGljOgorLSAgICBRR2VuZXJpY1VuaXhTZXJ2aWNlcygpIHt9CisrICAgIFFHZW5lcmljVW5p eFNlcnZpY2VzKCk7CisgCisgICAgIFFCeXRlQXJyYXkgZGVza3RvcEVudmlyb25tZW50KCkgY29u c3Qgb3ZlcnJpZGU7CisgCisrICAgIGJvb2wgaGFzQ2FwYWJpbGl0eShDYXBhYmlsaXR5IGNhcGFi aWxpdHkpIGNvbnN0IG92ZXJyaWRlOworICAgICBib29sIG9wZW5VcmwoY29uc3QgUVVybCAmdXJs KSBvdmVycmlkZTsKKyAgICAgYm9vbCBvcGVuRG9jdW1lbnQoY29uc3QgUVVybCAmdXJsKSBvdmVy cmlkZTsKKysgICAgUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpjb2xvclBpY2tlcihRV2lu ZG93ICpwYXJlbnQgPSBudWxscHRyKSBvdmVycmlkZTsKKysKKysgICAgdmlydHVhbCBRU3RyaW5n IHBvcnRhbFdpbmRvd0lkZW50aWZpZXIoUVdpbmRvdyAqd2luZG93KTsKKyAKKyBwcml2YXRlOgor ICAgICBRU3RyaW5nIG1fd2ViQnJvd3NlcjsKKyAgICAgUVN0cmluZyBtX2RvY3VtZW50TGF1bmNo ZXI7CisrICAgIGJvb2wgbV9oYXNTY3JlZW5zaG90UG9ydGFsV2l0aENvbG9yUGlja2luZyA9IGZh bHNlOworIH07CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv cGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25u ZWN0aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5p eC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNwcAoraW5kZXggMDk0NzBiY2NjNi4uY2M3 YzdkNGQ4YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9n ZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNwcAorKysrIGIvcXRiYXNl L3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVu dWNvbm5lY3Rpb24uY3BwCitAQCAtNjksNiArNjksNyBAQCBjb25zdCBRU3RyaW5nIE1lbnVCYXJQ YXRoID0gUUxhdGluMVN0cmluZygiL01lbnVCYXIiKTsKKyAqLworIFFEQnVzTWVudUNvbm5lY3Rp b246OlFEQnVzTWVudUNvbm5lY3Rpb24oUU9iamVjdCAqcGFyZW50LCBjb25zdCBRU3RyaW5nICZz ZXJ2aWNlTmFtZSkKKyAgICAgOiBRT2JqZWN0KHBhcmVudCkKKysgICAgLCBtX3NlcnZpY2VOYW1l KHNlcnZpY2VOYW1lKQorICAgICAsIG1fY29ubmVjdGlvbihzZXJ2aWNlTmFtZS5pc051bGwoKSA/ IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDogUURCdXNDb25uZWN0aW9uOjpjb25uZWN0VG9CdXMoUURCdXNDb25u ZWN0aW9uOjpTZXNzaW9uQnVzLCBzZXJ2aWNlTmFtZSkpCisgICAgICwgbV9kYnVzV2F0Y2hlcihu ZXcgUURCdXNTZXJ2aWNlV2F0Y2hlcihTdGF0dXNOb3RpZmllcldhdGNoZXJTZXJ2aWNlLCBtX2Nv bm5lY3Rpb24sIFFEQnVzU2VydmljZVdhdGNoZXI6OldhdGNoRm9yUmVnaXN0cmF0aW9uLCB0aGlz KSkKK0BAIC04Myw2ICs4NCwxMiBAQCBRREJ1c01lbnVDb25uZWN0aW9uOjpRREJ1c01lbnVDb25u ZWN0aW9uKFFPYmplY3QgKnBhcmVudCwgY29uc3QgUVN0cmluZyAmc2VydmljZQorICNlbmRpZgor IH0KKyAKKytRREJ1c01lbnVDb25uZWN0aW9uOjp+UURCdXNNZW51Q29ubmVjdGlvbigpCisrewor KyAgaWYgKCFtX3NlcnZpY2VOYW1lLmlzRW1wdHkoKSAmJiBtX2Nvbm5lY3Rpb24uaXNDb25uZWN0 ZWQoKSkKKysgICAgICBRREJ1c0Nvbm5lY3Rpb246OmRpc2Nvbm5lY3RGcm9tQnVzKG1fc2Vydmlj ZU5hbWUpOworK30KKysKKyB2b2lkIFFEQnVzTWVudUNvbm5lY3Rpb246OmRidXNFcnJvcihjb25z dCBRREJ1c0Vycm9yICZlcnJvcikKKyB7CisgICAgIHFXYXJuaW5nKCkgPDwgIlFEQnVzVHJheUlj b24gZW5jb3VudGVyZWQgYSBELUJ1cyBlcnJvcjoiIDw8IGVycm9yOworQEAgLTEwNSwxMyArMTEy LDcgQEAgdm9pZCBRREJ1c01lbnVDb25uZWN0aW9uOjp1bnJlZ2lzdGVyVHJheUljb25NZW51KFFE QnVzVHJheUljb24gKml0ZW0pCisgCisgYm9vbCBRREJ1c01lbnVDb25uZWN0aW9uOjpyZWdpc3Rl clRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pCisgeworLSAgICBib29sIHN1Y2Nlc3MgPSBj b25uZWN0aW9uKCkucmVnaXN0ZXJTZXJ2aWNlKGl0ZW0tPmluc3RhbmNlSWQoKSk7CistICAgIGlm ICghc3VjY2VzcykgeworLSAgICAgICAgcVdhcm5pbmcoKSA8PCAiZmFpbGVkIHRvIHJlZ2lzdGVy IHNlcnZpY2UiIDw8IGl0ZW0tPmluc3RhbmNlSWQoKTsKKy0gICAgICAgIHJldHVybiBmYWxzZTsK Ky0gICAgfQorLQorLSAgICBzdWNjZXNzID0gY29ubmVjdGlvbigpLnJlZ2lzdGVyT2JqZWN0KFN0 YXR1c05vdGlmaWVySXRlbVBhdGgsIGl0ZW0pOworKyAgICBib29sIHN1Y2Nlc3MgPSBjb25uZWN0 aW9uKCkucmVnaXN0ZXJPYmplY3QoU3RhdHVzTm90aWZpZXJJdGVtUGF0aCwgaXRlbSk7CisgICAg IGlmICghc3VjY2VzcykgeworICAgICAgICAgdW5yZWdpc3RlclRyYXlJY29uKGl0ZW0pOworICAg ICAgICAgcVdhcm5pbmcoKSA8PCAiZmFpbGVkIHRvIHJlZ2lzdGVyIiA8PCBpdGVtLT5pbnN0YW5j ZUlkKCkgPDwgU3RhdHVzTm90aWZpZXJJdGVtUGF0aDsKK0BAIC0xMjYsMjEgKzEyNywxOCBAQCBi b29sIFFEQnVzTWVudUNvbm5lY3Rpb246OnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAq aXRlbSkKKyAKKyBib29sIFFEQnVzTWVudUNvbm5lY3Rpb246OnJlZ2lzdGVyVHJheUljb25XaXRo V2F0Y2hlcihRREJ1c1RyYXlJY29uICppdGVtKQorIHsKKysgICAgUV9VTlVTRUQoaXRlbSk7Cisg ICAgIFFEQnVzTWVzc2FnZSByZWdpc3Rlck1ldGhvZCA9IFFEQnVzTWVzc2FnZTo6Y3JlYXRlTWV0 aG9kQ2FsbCgKKyAgICAgICAgICAgICAgICAgU3RhdHVzTm90aWZpZXJXYXRjaGVyU2VydmljZSwg U3RhdHVzTm90aWZpZXJXYXRjaGVyUGF0aCwgU3RhdHVzTm90aWZpZXJXYXRjaGVyU2VydmljZSwK KyAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiUmVnaXN0ZXJTdGF0dXNOb3RpZmllckl0 ZW0iKSk7CistICAgIHJlZ2lzdGVyTWV0aG9kLnNldEFyZ3VtZW50cyhRVmFyaWFudExpc3QoKSA8 PCBpdGVtLT5pbnN0YW5jZUlkKCkpOworKyAgICByZWdpc3Rlck1ldGhvZC5zZXRBcmd1bWVudHMo UVZhcmlhbnRMaXN0KCkgPDwgbV9jb25uZWN0aW9uLmJhc2VTZXJ2aWNlKCkpOworICAgICByZXR1 cm4gbV9jb25uZWN0aW9uLmNhbGxXaXRoQ2FsbGJhY2socmVnaXN0ZXJNZXRob2QsIHRoaXMsIFNJ R05BTCh0cmF5SWNvblJlZ2lzdGVyZWQoKSksIFNMT1QoZGJ1c0Vycm9yKFFEQnVzRXJyb3IpKSk7 CisgfQorIAorLWJvb2wgUURCdXNNZW51Q29ubmVjdGlvbjo6dW5yZWdpc3RlclRyYXlJY29uKFFE QnVzVHJheUljb24gKml0ZW0pCisrdm9pZCBRREJ1c01lbnVDb25uZWN0aW9uOjp1bnJlZ2lzdGVy VHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSkKKyB7CisgICAgIHVucmVnaXN0ZXJUcmF5SWNv bk1lbnUoaXRlbSk7CisgICAgIGNvbm5lY3Rpb24oKS51bnJlZ2lzdGVyT2JqZWN0KFN0YXR1c05v dGlmaWVySXRlbVBhdGgpOworLSAgICBib29sIHN1Y2Nlc3MgPSBjb25uZWN0aW9uKCkudW5yZWdp c3RlclNlcnZpY2UoaXRlbS0+aW5zdGFuY2VJZCgpKTsKKy0gICAgaWYgKCFzdWNjZXNzKQorLSAg ICAgICAgcVdhcm5pbmcoKSA8PCAiZmFpbGVkIHRvIHVucmVnaXN0ZXIgc2VydmljZSIgPDwgaXRl bS0+aW5zdGFuY2VJZCgpOworLSAgICByZXR1cm4gc3VjY2VzczsKKyB9CisgI2VuZGlmIC8vIFFU X05PX1NZU1RFTVRSQVlJQ09OCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1 cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5o IGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51 L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5oCitpbmRleCBmNDg0Nzk1ZmJiLi45N2JkZmFiYjg1IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4 L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRm b3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlv bl9wLmgKK0BAIC03MCw2ICs3MCw3IEBAIGNsYXNzIFFEQnVzTWVudUNvbm5lY3Rpb24gOiBwdWJs aWMgUU9iamVjdAorIAorIHB1YmxpYzoKKyAgICAgUURCdXNNZW51Q29ubmVjdGlvbihRT2JqZWN0 ICpwYXJlbnQgPSBudWxscHRyLCBjb25zdCBRU3RyaW5nICZzZXJ2aWNlTmFtZSA9IFFTdHJpbmco KSk7CisrICAgIH5RREJ1c01lbnVDb25uZWN0aW9uKCk7CisgICAgIFFEQnVzQ29ubmVjdGlvbiBj b25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisgICAgIFFEQnVzU2Vy dmljZVdhdGNoZXIgKmRidXNXYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9kYnVzV2F0Y2hlcjsg fQorICAgICBib29sIGlzU3RhdHVzTm90aWZpZXJIb3N0UmVnaXN0ZXJlZCgpIGNvbnN0IHsgcmV0 dXJuIG1fc3RhdHVzTm90aWZpZXJIb3N0UmVnaXN0ZXJlZDsgfQorQEAgLTc4LDcgKzc5LDcgQEAg cHVibGljOgorICAgICB2b2lkIHVucmVnaXN0ZXJUcmF5SWNvbk1lbnUoUURCdXNUcmF5SWNvbiAq aXRlbSk7CisgICAgIGJvb2wgcmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKTsK KyAgICAgYm9vbCByZWdpc3RlclRyYXlJY29uV2l0aFdhdGNoZXIoUURCdXNUcmF5SWNvbiAqaXRl bSk7CistICAgIGJvb2wgdW5yZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pOwor KyAgICB2b2lkIHVucmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKTsKKyAjZW5k aWYgLy8gUVRfTk9fU1lTVEVNVFJBWUlDT04KKyAKKyBRX1NJR05BTFM6CitAQCAtOTAsNiArOTEs NyBAQCBwcml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgZGJ1c0Vycm9yKGNvbnN0IFFEQnVzRXJy b3IgJmVycm9yKTsKKyAKKyBwcml2YXRlOgorKyAgICBRU3RyaW5nIG1fc2VydmljZU5hbWU7Cisg ICAgIFFEQnVzQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247CisgICAgIFFEQnVzU2VydmljZVdhdGNo ZXIgKm1fZGJ1c1dhdGNoZXI7CisgICAgIGJvb2wgbV9zdGF0dXNOb3RpZmllckhvc3RSZWdpc3Rl cmVkOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5l cmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlpY29uLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1z dXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlpY29uLmNwcAoraW5k ZXggYmVkZTcwOTc1YS4uNzZiZmVjNWU1YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZv cm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlpY29uLmNwcAor KysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXN0 cmF5L3FkYnVzdHJheWljb24uY3BwCitAQCAtNzEsOCArNzEsMTIgQEAgUV9MT0dHSU5HX0NBVEVH T1JZKHFMY1RyYXksICJxdC5xcGEudHJheSIpCisgc3RhdGljIFFTdHJpbmcgaWNvblRlbXBQYXRo KCkKKyB7CisgICAgIFFTdHJpbmcgdGVtcFBhdGggPSBRU3RhbmRhcmRQYXRoczo6d3JpdGFibGVM b2NhdGlvbihRU3RhbmRhcmRQYXRoczo6UnVudGltZUxvY2F0aW9uKTsKKy0gICAgaWYgKCF0ZW1w UGF0aC5pc0VtcHR5KCkpCisrICAgIGlmICghdGVtcFBhdGguaXNFbXB0eSgpKSB7CisrICAgICAg ICBRU3RyaW5nIGZsYXRwYWtJZCA9IHFFbnZpcm9ubWVudFZhcmlhYmxlKCJGTEFUUEFLX0lEIik7 CisrICAgICAgICBpZiAoIWZsYXRwYWtJZC5pc0VtcHR5KCkgJiYgUUZpbGVJbmZvOjpleGlzdHMo UUxhdGluMVN0cmluZygiLy5mbGF0cGFrLWluZm8iKSkpCisrICAgICAgICAgICAgdGVtcFBhdGgg Kz0gUUxhdGluMVN0cmluZygiL2FwcC8iKSArIGZsYXRwYWtJZDsKKyAgICAgICAgIHJldHVybiB0 ZW1wUGF0aDsKKysgICAgfQorIAorICAgICB0ZW1wUGF0aCA9IFFTdGFuZGFyZFBhdGhzOjp3cml0 YWJsZUxvY2F0aW9uKFFTdGFuZGFyZFBhdGhzOjpHZW5lcmljQ2FjaGVMb2NhdGlvbik7CisgCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4 L3FnZW5lcmljdW5peHRoZW1lcy5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVt ZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4dGhlbWVzLmNwcAoraW5kZXggY2IxYjM5ZGI2NC4u NmUwMWFmMDUyYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1l cy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXh0aGVtZXMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4dGhlbWVzLmNwcAor QEAgLTc1NSw2ICs3NTUsOSBAQCBRVmFyaWFudCBRR25vbWVUaGVtZTo6dGhlbWVIaW50KFFQbGF0 Zm9ybVRoZW1lOjpUaGVtZUhpbnQgaGludCkgY29uc3QKKyAgICAgICAgIHJldHVybiBRVmFyaWFu dChRQ2hhcigweDIwMjIpKTsKKyAgICAgY2FzZSBRUGxhdGZvcm1UaGVtZTo6VWlFZmZlY3RzOgor ICAgICAgICAgcmV0dXJuIFFWYXJpYW50KGludChIb3ZlckVmZmVjdCkpOworKyAgICBjYXNlIFFQ bGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXM6CisrICAgICAgICByZXR1cm4gUVZhcmlhbnQ6 OmZyb21WYWx1ZSgKKysgICAgICAgICAgICAgICAgUUxpc3Q8UXQ6OktleT4oeyBRdDo6S2V5X1Nw YWNlLCBRdDo6S2V5X1JldHVybiwgUXQ6OktleV9FbnRlciwgUXQ6OktleV9TZWxlY3QgfSkpOwor ICAgICBkZWZhdWx0OgorICAgICAgICAgYnJlYWs7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2FwaS9xZWdsZnNjdXJzb3IuY3BwIGIvcXRi YXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9hcGkvcWVnbGZzY3Vyc29yLmNwcAoraW5k ZXggOThlMDUxOTVlZS4uMWU5MmY0M2RlYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xmc2N1cnNvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xmc2N1cnNvci5jcHAKK0BAIC0zNDMsOCAr MzQzLDcgQEAgdm9pZCBRRWdsRlNDdXJzb3I6OnBhaW50T25TY3JlZW4oKQorICAgICAvLyBzY3Jl ZW5zIGFyZSBzaWJsaW5ncyBvZiBlYWNoIG90aGVyLiBXaGVuIG5vdCBlbmFibGVkLCB0aGUgc2li bGluZyBsaXN0CisgICAgIC8vIG9ubHkgY29udGFpbnMgbV9zY3JlZW4gaXRzZWxmLgorICAgICBm b3IgKFFQbGF0Zm9ybVNjcmVlbiAqc2NyZWVuIDogbV9zY3JlZW4tPnZpcnR1YWxTaWJsaW5ncygp KSB7CistICAgICAgICBpZiAoc2NyZWVuLT5nZW9tZXRyeSgpLmNvbnRhaW5zKGNyLnRvcExlZnQo KS50b1BvaW50KCkgKyBtX2N1cnNvci5ob3RTcG90KQorLSAgICAgICAgICAgICYmIFFPcGVuR0xD b250ZXh0OjpjdXJyZW50Q29udGV4dCgpLT5zY3JlZW4oKSA9PSBzY3JlZW4tPnNjcmVlbigpKQor KyAgICAgICAgaWYgKHNjcmVlbi0+Z2VvbWV0cnkoKS5jb250YWlucyhjci50b3BMZWZ0KCkudG9Q b2ludCgpICsgbV9jdXJzb3IuaG90U3BvdCkpCisgICAgICAgICB7CisgICAgICAgICAgICAgY3Iu dHJhbnNsYXRlKC1zY3JlZW4tPmdlb21ldHJ5KCkudG9wTGVmdCgpKTsKKyAgICAgICAgICAgICBj b25zdCBRU2l6ZSBzY3JlZW5TaXplID0gc2NyZWVuLT5nZW9tZXRyeSgpLnNpemUoKTsKK0BAIC00 NjgsMTEgKzQ2NywxMiBAQCB2b2lkIFFFZ2xGU0N1cnNvcjo6ZHJhdyhjb25zdCBRUmVjdEYgJnIp CisgeworICAgICBTdGF0ZVNhdmVyIHN0YXRlU2F2ZXI7CisgCistICAgIFFFZ2xGU0N1cnNvckRh dGEgJmdmeCA9IHN0YXRpY19jYXN0PFFFZ2xGU0NvbnRleHQqPihRT3BlbkdMQ29udGV4dDo6Y3Vy cmVudENvbnRleHQoKS0+aGFuZGxlKCkpLT5jdXJzb3JEYXRhOworLSAgICBpZiAoIWdmeC5wcm9n cmFtKSB7CistICAgICAgICAvLyBvbmUgdGltZSBpbml0aWFsaXphdGlvbgorKyAgICAvLyBvbmUg dGltZSBpbml0aWFsaXphdGlvbgorKyAgICBpZiAoIVFPcGVuR0xGdW5jdGlvbnM6OmRfcHRyKQor ICAgICAgICAgaW5pdGlhbGl6ZU9wZW5HTEZ1bmN0aW9ucygpOworIAorKyAgICBRRWdsRlNDdXJz b3JEYXRhICZnZnggPSBzdGF0aWNfY2FzdDxRRWdsRlNDb250ZXh0Kj4oUU9wZW5HTENvbnRleHQ6 OmN1cnJlbnRDb250ZXh0KCktPmhhbmRsZSgpKS0+Y3Vyc29yRGF0YTsKKysgICAgaWYgKCFnZngu cHJvZ3JhbSkgeworICAgICAgICAgY3JlYXRlU2hhZGVyUHJvZ3JhbXMoKTsKKyAKKyAgICAgICAg IGlmICghZ2Z4LmF0bGFzVGV4dHVyZSkgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRpb24vZWdsZnNfa21zX3N1cHBvcnQvcWVn bGZza21zZXZlbnRyZWFkZXIuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xm cy9kZXZpY2VpbnRlZ3JhdGlvbi9lZ2xmc19rbXNfc3VwcG9ydC9xZWdsZnNrbXNldmVudHJlYWRl ci5jcHAKK2luZGV4IDY0NWEwYWUyZTkuLjNlMGU0MDZmMWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2RldmljZWludGVncmF0aW9uL2VnbGZzX2ttc19z dXBwb3J0L3FlZ2xmc2ttc2V2ZW50cmVhZGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5z L3BsYXRmb3Jtcy9lZ2xmcy9kZXZpY2VpbnRlZ3JhdGlvbi9lZ2xmc19rbXNfc3VwcG9ydC9xZWds ZnNrbXNldmVudHJlYWRlci5jcHAKK0BAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBRRWdsRlNLbXNF dmVudFJlYWRlcjo6Y3JlYXRlKFFFZ2xGU0ttc0RldmljZSAqZGV2aWNlKQorIAorICAgICBtX2Rl dmljZSA9IGRldmljZTsKKyAKKy0gICAgcUNEZWJ1ZyhxTGNFZ2xmc0ttc0RlYnVnLCAiSW5pdGFs aXppbmcgZXZlbnQgcmVhZGVyIGZvciBkZXZpY2UgJXAgZmQgJWQiLAorKyAgICBxQ0RlYnVnKHFM Y0VnbGZzS21zRGVidWcsICJJbml0aWFsaXppbmcgZXZlbnQgcmVhZGVyIGZvciBkZXZpY2UgJXAg ZmQgJWQiLAorICAgICAgICAgICAgIG1fZGV2aWNlLCBtX2RldmljZS0+ZmQoKSk7CisgCisgICAg IG1fdGhyZWFkID0gbmV3IFFFZ2xGU0ttc0V2ZW50UmVhZGVyVGhyZWFkKG1fZGV2aWNlLT5mZCgp KTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9x b2Zmc2NyZWVuaW50ZWdyYXRpb24uY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9v ZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmNwcAoraW5kZXggMTQxZmI2OGEyMy4uZDQy OTRkNDI1YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2Ny ZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5jcHAKK0BAIC0xMjIsMTEg KzEyMiwxMyBAQCBRT2Zmc2NyZWVuSW50ZWdyYXRpb246OlFPZmZzY3JlZW5JbnRlZ3JhdGlvbigp CisgI2VuZGlmCisgICAgIG1fc2VydmljZXMucmVzZXQobmV3IFFQbGF0Zm9ybVNlcnZpY2VzKTsK KyAKKy0gICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlU2NyZWVuQWRkZWQobmV3IFFP ZmZzY3JlZW5TY3JlZW4pOworKyAgICBtX3NjcmVlbiA9IG5ldyBRT2Zmc2NyZWVuU2NyZWVuOwor KyAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVTY3JlZW5BZGRlZChtX3NjcmVlbik7 CisgfQorIAorIFFPZmZzY3JlZW5JbnRlZ3JhdGlvbjo6flFPZmZzY3JlZW5JbnRlZ3JhdGlvbigp CisgeworKyAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVTY3JlZW5SZW1vdmVkKG1f c2NyZWVuKTsKKyB9CisgCisgdm9pZCBRT2Zmc2NyZWVuSW50ZWdyYXRpb246OmluaXRpYWxpemUo KQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3Fv ZmZzY3JlZW5pbnRlZ3JhdGlvbi5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZz Y3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmgKK2luZGV4IDBlYTkwZjZjMmYuLmZlMDBmZGUw N2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9x b2Zmc2NyZWVuaW50ZWdyYXRpb24uaAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt cy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmgKK0BAIC04NCw2ICs4NCw3IEBAIHBy b3RlY3RlZDoKKyAjZW5kaWYKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVBsYXRmb3JtSW5wdXRDb250 ZXh0PiBtX2lucHV0Q29udGV4dDsKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVBsYXRmb3JtU2Vydmlj ZXM+IG1fc2VydmljZXM7CisrICAgIFFQbGF0Zm9ybVNjcmVlbiAqbV9zY3JlZW47CisgICAgIG11 dGFibGUgUVNjb3BlZFBvaW50ZXI8UVBsYXRmb3JtTmF0aXZlSW50ZXJmYWNlPiBtX25hdGl2ZUlu dGVyZmFjZTsKKyB9OworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXMvd2luZG93cy9xd2luZG93c2dsY29udGV4dC5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxh dGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NnbGNvbnRleHQuY3BwCitpbmRleCA2ZmE1YThhMmIzLi4x ZjQ5ZjBhZWZkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5k b3dzL3F3aW5kb3dzZ2xjb250ZXh0LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy93aW5kb3dzL3F3aW5kb3dzZ2xjb250ZXh0LmNwcAorQEAgLTQ4LDYgKzQ4LDcgQEAKKyAj aW5jbHVkZSA8cXBhL3FwbGF0Zm9ybW5hdGl2ZWludGVyZmFjZS5oPgorICNpbmNsdWRlIDxRdFBs YXRmb3JtSGVhZGVycy9xd2dsbmF0aXZlY29udGV4dC5oPgorIAorKyNpbmNsdWRlIDxwcml2YXRl L3FzeXN0ZW1saWJyYXJ5X3AuaD4KKyAjaW5jbHVkZSA8YWxnb3JpdGhtPgorIAorICNpbmNsdWRl IDx3aW5nZGkuaD4KK0BAIC0xNjIsMTkgKzE2MywyNSBAQCBRRnVuY3Rpb25Qb2ludGVyIFFXaW5k b3dzT3BlbmdsMzJETEw6OnJlc29sdmUoY29uc3QgY2hhciAqbmFtZSkKKyAKKyBib29sIFFXaW5k b3dzT3BlbmdsMzJETEw6OmluaXQoYm9vbCBzb2Z0d2FyZVJlbmRlcmluZykKKyB7CistICAgIGNv bnN0IFFCeXRlQXJyYXkgb3BlbmdsMzIgPSBRQnl0ZUFycmF5TGl0ZXJhbCgib3BlbmdsMzIuZGxs Iik7CistICAgIGNvbnN0IFFCeXRlQXJyYXkgc3dvcGVuZ2wgPSBRQnl0ZUFycmF5TGl0ZXJhbCgi b3BlbmdsMzJzdy5kbGwiKTsKKysgICAgY29uc3QgUUJ5dGVBcnJheSBvcGVuZ2wzMiA9IFFCeXRl QXJyYXlMaXRlcmFsKCJvcGVuZ2wzMiIpOworKyAgICBjb25zdCBRQnl0ZUFycmF5IHN3b3Blbmds ID0gUUJ5dGVBcnJheUxpdGVyYWwoIm9wZW5nbDMyc3ciKTsKKysgICAgYm9vbCB1c2VTeXN0ZW1M aWIgPSBmYWxzZTsKKyAKKyAgICAgUUJ5dGVBcnJheSBvcGVuZ2xEbGwgPSBxZ2V0ZW52KCJRVF9P UEVOR0xfRExMIik7CistICAgIGlmIChvcGVuZ2xEbGwuaXNFbXB0eSgpKQorKyAgICBpZiAob3Bl bmdsRGxsLmlzRW1wdHkoKSkgeworICAgICAgICAgb3BlbmdsRGxsID0gc29mdHdhcmVSZW5kZXJp bmcgPyBzd29wZW5nbCA6IG9wZW5nbDMyOworKyAgICAgICAgdXNlU3lzdGVtTGliID0gIXNvZnR3 YXJlUmVuZGVyaW5nOworKyAgICB9CisgCisgICAgIG9wZW5nbERsbCA9IG9wZW5nbERsbC50b0xv d2VyKCk7CisgICAgIG1fbm9uT3BlbmdsMzIgPSBvcGVuZ2xEbGwgIT0gb3BlbmdsMzI7CisgCisg ICAgIHFDRGVidWcobGNRcGFHbCkgPDwgIlF0OiBVc2luZyBXR0wgYW5kIE9wZW5HTCBmcm9tIiA8 PCBvcGVuZ2xEbGw7CisgCistICAgIG1fbGliID0gOjpMb2FkTGlicmFyeUEob3BlbmdsRGxsLmNv bnN0RGF0YSgpKTsKKysgICAgaWYgKHVzZVN5c3RlbUxpYikKKysgICAgICAgIG1fbGliID0gUVN5 c3RlbUxpYnJhcnk6OmxvYWQoKHdjaGFyX3QqKShRU3RyaW5nOjpmcm9tTGF0aW4xKG9wZW5nbERs bCkudXRmMTYoKSkpOworKyAgICBlbHNlCisrICAgICAgICBtX2xpYiA9IExvYWRMaWJyYXJ5QShv cGVuZ2xEbGwuY29uc3REYXRhKCkpOworICAgICBpZiAoIW1fbGliKSB7CisgICAgICAgICBxRXJy bm9XYXJuaW5nKDo6R2V0TGFzdEVycm9yKCksICJGYWlsZWQgdG8gbG9hZCAlcyIsIG9wZW5nbERs bC5jb25zdERhdGEoKSk7CisgICAgICAgICByZXR1cm4gZmFsc2U7CitAQCAtMTg0LDcgKzE5MSw3 IEBAIGJvb2wgUVdpbmRvd3NPcGVuZ2wzMkRMTDo6aW5pdChib29sIHNvZnR3YXJlUmVuZGVyaW5n KQorICAgICAgICAgLy8gTG9hZCBvcGVuZ2wzMi5kbGwgYWx3YXlzLiBHREkgZnVuY3Rpb25zIGxp a2UgQ2hvb3NlUGl4ZWxGb3JtYXQgZG8KKyAgICAgICAgIC8vIEdldE1vZHVsZUhhbmRsZSBmb3Ig b3BlbmdsMzIuZGxsIGFuZCBiZWhhdmUgZGlmZmVyZW50bHkgKGFuZCBjYWxsIGJhY2sgaW50bwor ICAgICAgICAgLy8gb3BlbmdsMzIpIHdoZW4gdGhlIG1vZHVsZSBpcyBwcmVzZW50LiBUaGlzIGlz IGZpbmUgZm9yIGR1bW15IGNvbnRleHRzIGFuZCB3aW5kb3dzLgorLSAgICAgICAgOjpMb2FkTGli cmFyeUEoIm9wZW5nbDMyLmRsbCIpOworKyAgICAgICAgUVN5c3RlbUxpYnJhcnk6OmxvYWQoTCJv cGVuZ2wzMiIpOworICAgICB9CisgCisgICAgIHdnbENyZWF0ZUNvbnRleHQgPSByZWludGVycHJl dF9jYXN0PEhHTFJDIChXSU5BUEkgKikoSERDKT4ocmVzb2x2ZSgid2dsQ3JlYXRlQ29udGV4dCIp KTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdp bmRvd3NvcGVuZ2x0ZXN0ZXIuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5k b3dzL3F3aW5kb3dzb3BlbmdsdGVzdGVyLmNwcAoraW5kZXggZDdkMTg2ZTgwNC4uOWViNDAxMWJm MiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2lu ZG93c29wZW5nbHRlc3Rlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMv d2luZG93cy9xd2luZG93c29wZW5nbHRlc3Rlci5jcHAKK0BAIC00OSw2ICs0OSw3IEBACisgI2lu Y2x1ZGUgPFF0Q29yZS9xc3RhbmRhcmRwYXRocy5oPgorICNpbmNsdWRlIDxRdENvcmUvcWxpYnJh cnlpbmZvLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xaGFzaC5oPgorKyNpbmNsdWRlIDxwcml2YXRl L3FzeXN0ZW1saWJyYXJ5X3AuaD4KKyAKKyAjaWZuZGVmIFFUX05PX09QRU5HTAorICNpbmNsdWRl IDxwcml2YXRlL3FvcGVuZ2xfcC5oPgorQEAgLTM5Niw3ICszOTcsNyBAQCBib29sIFFXaW5kb3dz T3BlbkdMVGVzdGVyOjp0ZXN0RGVza3RvcEdMKCkKKyAKKyAgICAgLy8gVGVzdCAjMTogTG9hZCBv cGVuZ2wzMi5kbGwgYW5kIHRyeSB0byByZXNvbHZlIGFuIE9wZW5HTCAyIGZ1bmN0aW9uLgorICAg ICAvLyBUaGlzIHdpbGwgdHlwaWNhbGx5IGZhaWwgb24gc3lzdGVtcyB0aGF0IGRvIG5vdCBoYXZl IGEgcmVhbCBPcGVuR0wgZHJpdmVyLgorLSAgICBsaWIgPSBMb2FkTGlicmFyeUEoIm9wZW5nbDMy LmRsbCIpOworKyAgICBsaWIgPSBRU3lzdGVtTGlicmFyeTo6bG9hZChMIm9wZW5nbDMyIik7Cisg ICAgIGlmIChsaWIpIHsKKyAgICAgICAgIENyZWF0ZUNvbnRleHQgPSByZWludGVycHJldF9jYXN0 PENyZWF0ZUNvbnRleHRUeXBlPigKKyAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PFFGdW5j dGlvblBvaW50ZXI+KDo6R2V0UHJvY0FkZHJlc3MobGliLCAid2dsQ3JlYXRlQ29udGV4dCIpKSk7 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvbmF0aXZlcGFp bnRpbmcvcXRlc3NlbGxhdG9yLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNi L25hdGl2ZXBhaW50aW5nL3F0ZXNzZWxsYXRvci5jcHAKK2luZGV4IDFhZmEwMGNmYzkuLjExOGFm NmNlNzMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9uYXRp dmVwYWludGluZy9xdGVzc2VsbGF0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxh dGZvcm1zL3hjYi9uYXRpdmVwYWludGluZy9xdGVzc2VsbGF0b3IuY3BwCitAQCAtNDEsNiArNDEs NyBAQAorIAorICNpbmNsdWRlIDxRUmVjdD4KKyAjaW5jbHVkZSA8UUxpc3Q+CisrI2luY2x1ZGUg PFFNYXA+CisgI2luY2x1ZGUgPFFEZWJ1Zz4KKyAKKyAjaW5jbHVkZSA8cW1hdGguaD4KK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29ubmVjdGlvbi5j cHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29ubmVjdGlvbi5jcHAK K2luZGV4IDllMmEzN2E2YTEuLmU2ZTE3NWExMTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Bs dWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29ubmVjdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2Jjb25uZWN0aW9uLmNwcAorQEAgLTQ4OCwxMiArNDg4 LDEyIEBAIHZvaWQgUVhjYkNvbm5lY3Rpb246OnByaW50WGNiRXJyb3IoY29uc3QgY2hhciAqbWVz c2FnZSwgeGNiX2dlbmVyaWNfZXJyb3JfdCAqZXJyCisgICAgIHVpbnQgY2xhbXBlZF9lcnJvcl9j b2RlID0gcU1pbjx1aW50PihlcnJvci0+ZXJyb3JfY29kZSwgKHNpemVvZih4Y2JfZXJyb3JzKSAv IHNpemVvZih4Y2JfZXJyb3JzWzBdKSkgLSAxKTsKKyAgICAgdWludCBjbGFtcGVkX21ham9yX2Nv ZGUgPSBxTWluPHVpbnQ+KGVycm9yLT5tYWpvcl9jb2RlLCAoc2l6ZW9mKHhjYl9wcm90b2NvbF9y ZXF1ZXN0X2NvZGVzKSAvIHNpemVvZih4Y2JfcHJvdG9jb2xfcmVxdWVzdF9jb2Rlc1swXSkpIC0g MSk7CisgCistICAgIHFDV2FybmluZyhsY1FwYVhjYiwgIiVzOiAlZCAoJXMpLCBzZXF1ZW5jZTog JWQsIHJlc291cmNlIGlkOiAlZCwgbWFqb3IgY29kZTogJWQgKCVzKSwgbWlub3IgY29kZTogJWQi LAorLSAgICAgICAgICAgICBtZXNzYWdlLAorLSAgICAgICAgICAgICBpbnQoZXJyb3ItPmVycm9y X2NvZGUpLCB4Y2JfZXJyb3JzW2NsYW1wZWRfZXJyb3JfY29kZV0sCistICAgICAgICAgICAgIGlu dChlcnJvci0+c2VxdWVuY2UpLCBpbnQoZXJyb3ItPnJlc291cmNlX2lkKSwKKy0gICAgICAgICAg ICAgaW50KGVycm9yLT5tYWpvcl9jb2RlKSwgeGNiX3Byb3RvY29sX3JlcXVlc3RfY29kZXNbY2xh bXBlZF9tYWpvcl9jb2RlXSwKKy0gICAgICAgICAgICAgaW50KGVycm9yLT5taW5vcl9jb2RlKSk7 CisrICAgIHFDRGVidWcobGNRcGFYY2IsICIlczogJWQgKCVzKSwgc2VxdWVuY2U6ICVkLCByZXNv dXJjZSBpZDogJWQsIG1ham9yIGNvZGU6ICVkICglcyksIG1pbm9yIGNvZGU6ICVkIiwKKysgICAg ICAgICAgICBtZXNzYWdlLAorKyAgICAgICAgICAgIGludChlcnJvci0+ZXJyb3JfY29kZSksIHhj Yl9lcnJvcnNbY2xhbXBlZF9lcnJvcl9jb2RlXSwKKysgICAgICAgICAgICBpbnQoZXJyb3ItPnNl cXVlbmNlKSwgaW50KGVycm9yLT5yZXNvdXJjZV9pZCksCisrICAgICAgICAgICAgaW50KGVycm9y LT5tYWpvcl9jb2RlKSwgeGNiX3Byb3RvY29sX3JlcXVlc3RfY29kZXNbY2xhbXBlZF9tYWpvcl9j b2RlXSwKKysgICAgICAgICAgICBpbnQoZXJyb3ItPm1pbm9yX2NvZGUpKTsKKyB9CisgCisgc3Rh dGljIFF0OjpNb3VzZUJ1dHRvbnMgdHJhbnNsYXRlTW91c2VCdXR0b25zKGludCBzKQorQEAgLTcw Miw2ICs3MDIsOCBAQCB2b2lkIFFYY2JDb25uZWN0aW9uOjpoYW5kbGVYY2JFdmVudCh4Y2JfZ2Vu ZXJpY19ldmVudF90ICpldmVudCkKKyAgICAgICAgICAgICBRWGNiVmlydHVhbERlc2t0b3AgKnZp cnR1YWxEZXNrdG9wID0gdmlydHVhbERlc2t0b3BGb3JSb290V2luZG93KHByb3BlcnR5Tm90aWZ5 LT53aW5kb3cpOworICAgICAgICAgICAgIGlmICh2aXJ0dWFsRGVza3RvcCkKKyAgICAgICAgICAg ICAgICAgdmlydHVhbERlc2t0b3AtPnVwZGF0ZVdvcmtBcmVhKCk7CisrICAgICAgICB9IGVsc2Ug aWYgKHByb3BlcnR5Tm90aWZ5LT5hdG9tID09IGF0b20oUVhjYkF0b206Ol9ORVRfU1VQUE9SVEVE KSkgeworKyAgICAgICAgICAgIG1fd21TdXBwb3J0LT51cGRhdGVOZXRXTUF0b21zKCk7CisgICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgIEhBTkRMRV9QTEFURk9STV9XSU5ET1dfRVZFTlQo eGNiX3Byb3BlcnR5X25vdGlmeV9ldmVudF90LCB3aW5kb3csIGhhbmRsZVByb3BlcnR5Tm90aWZ5 RXZlbnQpOworICAgICAgICAgfQorQEAgLTc1MCw3ICs3NTIsNyBAQCB2b2lkIFFYY2JDb25uZWN0 aW9uOjpoYW5kbGVYY2JFdmVudCh4Y2JfZ2VuZXJpY19ldmVudF90ICpldmVudCkKKyAgICAgICAg ICAgICAgICAgY2FzZSBYQ0JfWEtCX05FV19LRVlCT0FSRF9OT1RJRlk6IHsKKyAgICAgICAgICAg ICAgICAgICAgIHhjYl94a2JfbmV3X2tleWJvYXJkX25vdGlmeV9ldmVudF90ICpldiA9ICZ4a2Jf ZXZlbnQtPm5ld19rZXlib2FyZF9ub3RpZnk7CisgICAgICAgICAgICAgICAgICAgICBpZiAoZXYt PmNoYW5nZWQgJiBYQ0JfWEtCX05LTl9ERVRBSUxfS0VZQ09ERVMpCistICAgICAgICAgICAgICAg ICAgICAgICAgbV9rZXlib2FyZC0+dXBkYXRlS2V5bWFwKGV2KTsKKysgICAgICAgICAgICAgICAg ICAgICAgICBtX2tleWJvYXJkLT51cGRhdGVLZXltYXAoKTsKKyAgICAgICAgICAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmludGVncmF0 aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JpbnRlZ3JhdGlv bi5jcHAKK2luZGV4IDc2ODY5Y2VkNjAuLjAyZDJlZWJiNTYgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50ZWdyYXRpb24uY3BwCisrKysgYi9xdGJh c2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50ZWdyYXRpb24uY3BwCitAQCAtMjc0 LDggKzI3NCw3IEBAIFFQbGF0Zm9ybVdpbmRvdyAqUVhjYkludGVncmF0aW9uOjpjcmVhdGVGb3Jl aWduV2luZG93KFFXaW5kb3cgKndpbmRvdywgV0lkIG5hdGl2CisgI2lmbmRlZiBRVF9OT19PUEVO R0wKKyBRUGxhdGZvcm1PcGVuR0xDb250ZXh0ICpRWGNiSW50ZWdyYXRpb246OmNyZWF0ZVBsYXRm b3JtT3BlbkdMQ29udGV4dChRT3BlbkdMQ29udGV4dCAqY29udGV4dCkgY29uc3QKKyB7CistICAg IFFYY2JTY3JlZW4gKnNjcmVlbiA9IHN0YXRpY19jYXN0PFFYY2JTY3JlZW4gKj4oY29udGV4dC0+ c2NyZWVuKCktPmhhbmRsZSgpKTsKKy0gICAgUVhjYkdsSW50ZWdyYXRpb24gKmdsSW50ZWdyYXRp b24gPSBzY3JlZW4tPmNvbm5lY3Rpb24oKS0+Z2xJbnRlZ3JhdGlvbigpOworKyAgICBRWGNiR2xJ bnRlZ3JhdGlvbiAqZ2xJbnRlZ3JhdGlvbiA9IGRlZmF1bHRDb25uZWN0aW9uKCktPmdsSW50ZWdy YXRpb24oKTsKKyAgICAgaWYgKCFnbEludGVncmF0aW9uKSB7CisgICAgICAgICBxV2FybmluZygi UVhjYkludGVncmF0aW9uOiBDYW5ub3QgY3JlYXRlIHBsYXRmb3JtIE9wZW5HTCBjb250ZXh0LCBu ZWl0aGVyIEdMWCBub3IgRUdMIGFyZSBlbmFibGVkIik7CisgICAgICAgICByZXR1cm4gbnVsbHB0 cjsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5 Ym9hcmQuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJk LmNwcAoraW5kZXggZWZlY2Q3ZTJkMS4uZTgyODYzODFhMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5jcHAKKysrKyBiL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5jcHAKK0BAIC0zNjUsMTcgKzM2 NSw2IEBAIHZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoeGNiX21hcHBpbmdfbm90aWZ5 X2V2ZW50X3QgKmV2ZW50KQorICAgICB1cGRhdGVLZXltYXAoKTsKKyB9CisgCistdm9pZCBRWGNi S2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCh4Y2JfeGtiX25ld19rZXlib2FyZF9ub3RpZnlfZXZlbnRf dCAqZXZlbnQpCisteworLSAgICBpZiAoIWV2ZW50KQorLSAgICAgICAgcmV0dXJuOworLQorLSAg ICBpZiAoZXZlbnQtPmRldmljZUlEICE9IGV2ZW50LT5vbGREZXZpY2VJRCkKKy0gICAgICAgIG1f Y29uZmlnID0gZmFsc2U7CistCistICAgIHVwZGF0ZUtleW1hcCgpOworLX0KKy0KKyB2b2lkIFFY Y2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkKKyB7CisgICAgIEtleXN5bU1vZGlmaWVyTWFwIGtl eXN5bU1vZHM7CitAQCAtMzgzLDYgKzM3Miw4IEBAIHZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVL ZXltYXAoKQorICAgICAgICAga2V5c3ltTW9kcyA9IGtleXN5bXNUb01vZGlmaWVycygpOworICAg ICB1cGRhdGVNb2RpZmllcnMoa2V5c3ltTW9kcyk7CisgCisrICAgIG1fY29uZmlnID0gdHJ1ZTsK KysKKyAgICAgaWYgKCFtX3hrYkNvbnRleHQpIHsKKyAgICAgICAgIG1feGtiQ29udGV4dC5yZXNl dCh4a2JfY29udGV4dF9uZXcoWEtCX0NPTlRFWFRfTk9fREVGQVVMVF9JTkNMVURFUykpOworICAg ICAgICAgaWYgKCFtX3hrYkNvbnRleHQpIHsKK0BAIC0zOTgsMTMgKzM4OSw4IEBAIHZvaWQgUVhj YktleWJvYXJkOjp1cGRhdGVLZXltYXAoKQorICAgICBpZiAoY29ubmVjdGlvbigpLT5oYXNYS0Io KSkgeworICAgICAgICAgbV94a2JLZXltYXAucmVzZXQoeGtiX3gxMV9rZXltYXBfbmV3X2Zyb21f ZGV2aWNlKG1feGtiQ29udGV4dC5nZXQoKSwgeGNiX2Nvbm5lY3Rpb24oKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlX2Rldmlj ZV9pZCwgWEtCX0tFWU1BUF9DT01QSUxFX05PX0ZMQUdTKSk7CistICAgICAgICBpZiAobV94a2JL ZXltYXApIHsKKy0gICAgICAgICAgICBpZiAobV9jb25maWcpCistICAgICAgICAgICAgICAgIG1f eGtiU3RhdGUucmVzZXQoeGtiX3N0YXRlX25ldyhtX3hrYktleW1hcC5nZXQoKSkpOworLSAgICAg ICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgbV94a2JTdGF0ZS5yZXNldCh4a2JfeDExX3N0 YXRlX25ld19mcm9tX2RldmljZShtX3hrYktleW1hcC5nZXQoKSwgeGNiX2Nvbm5lY3Rpb24oKSwg Y29yZV9kZXZpY2VfaWQpKTsKKy0KKy0gICAgICAgIH0KKysgICAgICAgIGlmIChtX3hrYktleW1h cCkKKysgICAgICAgICAgICBtX3hrYlN0YXRlLnJlc2V0KHhrYl94MTFfc3RhdGVfbmV3X2Zyb21f ZGV2aWNlKG1feGtiS2V5bWFwLmdldCgpLCB4Y2JfY29ubmVjdGlvbigpLCBjb3JlX2RldmljZV9p ZCkpOworICAgICB9IGVsc2UgeworICAgICAgICAgbV94a2JLZXltYXAucmVzZXQoa2V5bWFwRnJv bUNvcmUoa2V5c3ltTW9kcykpOworICAgICAgICAgaWYgKG1feGtiS2V5bWFwKQorQEAgLTQyNSw4 ICs0MTEsNiBAQCB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkKKyAgICAgdXBkYXRl WEtCTW9kcygpOworIAorICAgICBRWGtiQ29tbW9uOjp2ZXJpZnlIYXNMYXRpbkxheW91dChtX3hr YktleW1hcC5nZXQoKSk7CistCistICAgIG1fY29uZmlnID0gdHJ1ZTsKKyB9CisgCisgUUxpc3Q8 aW50PiBRWGNiS2V5Ym9hcmQ6OnBvc3NpYmxlS2V5cyhjb25zdCBRS2V5RXZlbnQgKmV2ZW50KSBj b25zdAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2Jr ZXlib2FyZC5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJk LmgKK2luZGV4IGI2NTJjODVmZTMuLjBlZTA4YWVmZjIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuaAorKysrIGIvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmgKK0BAIC02OSw3ICs2OSw2IEBAIHB1 YmxpYzoKKyAKKyAgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIHRyYW5zbGF0ZU1vZGlmaWVycyhp bnQgcykgY29uc3Q7CisgICAgIHZvaWQgdXBkYXRlS2V5bWFwKHhjYl9tYXBwaW5nX25vdGlmeV9l dmVudF90ICpldmVudCk7CistICAgIHZvaWQgdXBkYXRlS2V5bWFwKHhjYl94a2JfbmV3X2tleWJv YXJkX25vdGlmeV9ldmVudF90ICpldmVudCk7CisgICAgIHZvaWQgdXBkYXRlS2V5bWFwKCk7Cisg ICAgIFFMaXN0PGludD4gcG9zc2libGVLZXlzKGNvbnN0IFFLZXlFdmVudCAqZXZlbnQpIGNvbnN0 OworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3 aW5kb3cuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5j cHAKK2luZGV4IGZmZGE3YjZhNTcuLjg2M2U5NjFmNGMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmNwcAorKysrIGIvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5jcHAKK0BAIC01NjQsMTEgKzU2NCw2IEBA IHZvaWQgUVhjYldpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJlY3QgJnJlY3QpCisgeworICAg ICBRUGxhdGZvcm1XaW5kb3c6OnNldEdlb21ldHJ5KHJlY3QpOworIAorLSAgICBpZiAoc2hvdWxk RGVmZXJUYXNrKFRhc2s6OlNldEdlb21ldHJ5KSkgeworLSAgICAgICAgbV9kZWZlcnJlZEdlb21l dHJ5ID0gcmVjdDsKKy0gICAgICAgIHJldHVybjsKKy0gICAgfQorLQorICAgICBwcm9wYWdhdGVT aXplSGludHMoKTsKKyAKKyAgICAgUVhjYlNjcmVlbiAqY3VycmVudFNjcmVlbiA9IHhjYlNjcmVl bigpOworQEAgLTY5Myw5ICs2ODgsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldFZpc2libGUoYm9v bCB2aXNpYmxlKQorIAorIHZvaWQgUVhjYldpbmRvdzo6c2hvdygpCisgeworLSAgICBpZiAoc2hv dWxkRGVmZXJUYXNrKFRhc2s6Ok1hcCkpCistICAgICAgICByZXR1cm47CistCisgICAgIGlmICh3 aW5kb3coKS0+aXNUb3BMZXZlbCgpKSB7CisgCisgICAgICAgICAvLyB1cGRhdGUgV01fTk9STUFM X0hJTlRTCitAQCAtNzA2LDcgKzY5OCw3IEBAIHZvaWQgUVhjYldpbmRvdzo6c2hvdygpCisgICAg ICAgICBpZiAoaXNUcmFuc2llbnQod2luZG93KCkpKSB7CisgICAgICAgICAgICAgY29uc3QgUVdp bmRvdyAqdHAgPSB3aW5kb3coKS0+dHJhbnNpZW50UGFyZW50KCk7CisgICAgICAgICAgICAgaWYg KHRwICYmIHRwLT5oYW5kbGUoKSkKKy0gICAgICAgICAgICAgICAgdHJhbnNpZW50WGNiUGFyZW50 ID0gc3RhdGljX2Nhc3Q8Y29uc3QgUVhjYldpbmRvdyAqPih0cC0+aGFuZGxlKCkpLT53aW5JZCgp OworKyAgICAgICAgICAgICAgICB0cmFuc2llbnRYY2JQYXJlbnQgPSB0cC0+aGFuZGxlKCktPndp bklkKCk7CisgICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBjbGllbnQgbGVhZGVyIGlmIHRoZXJl IGlzIG5vIHRyYW5zaWVudCBwYXJlbnQsIGVsc2UgbW9kYWwgZGlhbG9ncyBjYW4KKyAgICAgICAg ICAgICAvLyBiZSBoaWRkZW4gYnkgdGhlaXIgcGFyZW50cy4KKyAgICAgICAgICAgICBpZiAoIXRy YW5zaWVudFhjYlBhcmVudCkKK0BAIC03NDYsMTAgKzczOCw2IEBAIHZvaWQgUVhjYldpbmRvdzo6 c2hvdygpCisgCisgdm9pZCBRWGNiV2luZG93OjpoaWRlKCkKKyB7CistICAgIGlmIChzaG91bGRE ZWZlclRhc2soVGFzazo6VW5tYXApKQorLSAgICAgICAgcmV0dXJuOworLQorLSAgICBtX3dtU3Rh dGVWYWxpZCA9IGZhbHNlOworICAgICB4Y2JfdW5tYXBfd2luZG93KHhjYl9jb25uZWN0aW9uKCks IG1fd2luZG93KTsKKyAKKyAgICAgLy8gc2VuZCBzeW50aGV0aWMgVW5tYXBOb3RpZnkgZXZlbnQg YWNjb3JkaW5nIHRvIGljY2NtIDQuMS40CitAQCAtOTA5LDkgKzg5Nyw2IEBAIFFYY2JXaW5kb3c6 Ok5ldFdtU3RhdGVzIFFYY2JXaW5kb3c6Om5ldFdtU3RhdGVzKCkKKyAKKyB2b2lkIFFYY2JXaW5k b3c6OnNldFdpbmRvd0ZsYWdzKFF0OjpXaW5kb3dGbGFncyBmbGFncykKKyB7CistICAgIGlmIChz aG91bGREZWZlclRhc2soVGFzazo6U2V0V2luZG93RmxhZ3MpKQorLSAgICAgICAgcmV0dXJuOwor LQorICAgICBRdDo6V2luZG93VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8UXQ6OldpbmRvd1R5cGU+ KGludChmbGFncyAmIFF0OjpXaW5kb3dUeXBlX01hc2spKTsKKyAKKyAgICAgaWYgKHR5cGUgPT0g UXQ6OlRvb2xUaXApCitAQCAtOTQxLDggKzkyNiw2IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0V2lu ZG93RmxhZ3MoUXQ6OldpbmRvd0ZsYWdzIGZsYWdzKQorIAorICAgICBzZXRUcmFuc3BhcmVudEZv ck1vdXNlRXZlbnRzKGZsYWdzICYgUXQ6OldpbmRvd1RyYW5zcGFyZW50Rm9ySW5wdXQpOworICAg ICB1cGRhdGVEb2VzTm90QWNjZXB0Rm9jdXMoZmxhZ3MgJiBRdDo6V2luZG93RG9lc05vdEFjY2Vw dEZvY3VzKTsKKy0KKy0gICAgbV9pc1dtTWFuYWdlZFdpbmRvdyA9ICEoZmxhZ3MgJiBRdDo6WDEx QnlwYXNzV2luZG93TWFuYWdlckhpbnQpOworIH0KKyAKKyB2b2lkIFFYY2JXaW5kb3c6OnNldE1v dGlmV21IaW50cyhRdDo6V2luZG93RmxhZ3MgZmxhZ3MpCitAQCAtMTE0Miw5ICsxMTI1LDYgQEAg dm9pZCBRWGNiV2luZG93OjpzZXRXaW5kb3dTdGF0ZShRdDo6V2luZG93U3RhdGVzIHN0YXRlKQor ICAgICBpZiAoc3RhdGUgPT0gbV93aW5kb3dTdGF0ZSkKKyAgICAgICAgIHJldHVybjsKKyAKKy0g ICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpTZXRXaW5kb3dTdGF0ZSkpCistICAgICAgICBy ZXR1cm47CistCisgICAgIC8vIHVuc2V0IG9sZCBzdGF0ZQorICAgICBpZiAobV93aW5kb3dTdGF0 ZSAmIFF0OjpXaW5kb3dNaW5pbWl6ZWQpCisgICAgICAgICB4Y2JfbWFwX3dpbmRvdyh4Y2JfY29u bmVjdGlvbigpLCBtX3dpbmRvdyk7CitAQCAtMTM1MCw2ICsxMzMwLDEyIEBAIHZvaWQgUVhjYldp bmRvdzo6c2V0V2luZG93SWNvbihjb25zdCBRSWNvbiAmaWNvbikKKyAgICAgfQorIAorICAgICBp ZiAoIWljb25fZGF0YS5pc0VtcHR5KCkpIHsKKysgICAgICAgIC8vIElnbm9yZSBpY29uIGV4Y2Vl ZGluZyBtYXhpbXVtIHhjYiByZXF1ZXN0IGxlbmd0aAorKyAgICAgICAgaWYgKGljb25fZGF0YS5z aXplKCkgPiB4Y2JfZ2V0X21heGltdW1fcmVxdWVzdF9sZW5ndGgoeGNiX2Nvbm5lY3Rpb24oKSkp IHsKKysgICAgICAgICAgICBxV2FybmluZygiSWdub3Jpbmcgd2luZG93IGljb246IFNpemUgJWxs dSBleGNlZWRzIG1heGltdW0geGNiIHJlcXVlc3QgbGVuZ3RoICV1LiIsCisrICAgICAgICAgICAg ICAgICAgICAgaWNvbl9kYXRhLnNpemUoKSwgeGNiX2dldF9tYXhpbXVtX3JlcXVlc3RfbGVuZ3Ro KHhjYl9jb25uZWN0aW9uKCkpKTsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9Cisg ICAgICAgICB4Y2JfY2hhbmdlX3Byb3BlcnR5KHhjYl9jb25uZWN0aW9uKCksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFhDQl9QUk9QX01PREVfUkVQTEFDRSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbV93aW5kb3csCitAQCAtMTYzOSw3ICsxNjI1LDcgQEAgdm9pZCBRWGNi V2luZG93OjpzZXRXbVdpbmRvd1R5cGUoUVhjYldpbmRvd0Z1bmN0aW9uczo6V21XaW5kb3dUeXBl cyB0eXBlcywgUXQ6OlcKKyAgICAgICAgIGJyZWFrOworICAgICB9CisgCistICAgIGlmICgoZmxh Z3MgJiBRdDo6RnJhbWVsZXNzV2luZG93SGludCkgJiYgISh0eXBlICYgUVhjYldpbmRvd0Z1bmN0 aW9uczo6S2RlT3ZlcnJpZGUpKSB7CisrICAgIGlmICgoZmxhZ3MgJiBRdDo6RnJhbWVsZXNzV2lu ZG93SGludCkgJiYgISh0eXBlcyAmIFFYY2JXaW5kb3dGdW5jdGlvbnM6OktkZU92ZXJyaWRlKSkg eworICAgICAgICAgLy8gb3ZlcnJpZGUgbmV0d20gdHlwZSAtIHF1aWNrIGFuZCBlYXN5IGZvciBL REUgbm9ib3JkZXIKKyAgICAgICAgIGF0b21zLmFwcGVuZChhdG9tKFFYY2JBdG9tOjpfS0RFX05F VF9XTV9XSU5ET1dfVFlQRV9PVkVSUklERSkpOworICAgICB9CitAQCAtMTg5NCwxMCArMTg4MCw2 IEBAIHZvaWQgUVhjYldpbmRvdzo6aGFuZGxlVW5tYXBOb3RpZnlFdmVudChjb25zdCB4Y2JfdW5t YXBfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorICAgICBpZiAoZXZlbnQtPndpbmRvdyA9PSBtX3dp bmRvdykgeworICAgICAgICAgbV9tYXBwZWQgPSBmYWxzZTsKKyAgICAgICAgIFFXaW5kb3dTeXN0 ZW1JbnRlcmZhY2U6OmhhbmRsZUV4cG9zZUV2ZW50KHdpbmRvdygpLCBRUmVnaW9uKCkpOworLSAg ICAgICAgaWYgKCFtX2lzV21NYW5hZ2VkV2luZG93IHx8IHBhcmVudCgpKSB7CistICAgICAgICAg ICAgbV93bVN0YXRlVmFsaWQgPSB0cnVlOworLSAgICAgICAgICAgIGhhbmRsZURlZmVycmVkVGFz a3MoKTsKKy0gICAgICAgIH0KKyAgICAgfQorIH0KKyAKK0BAIC0yMjEyLDk4ICsyMTk0LDMwIEBA IHZvaWQgUVhjYldpbmRvdzo6aGFuZGxlTGVhdmVOb3RpZnlFdmVudChjb25zdCB4Y2JfbGVhdmVf bm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorICAgICBoYW5kbGVMZWF2ZU5vdGlmeUV2ZW50KGV2ZW50 LT5yb290X3gsIGV2ZW50LT5yb290X3ksIGV2ZW50LT5tb2RlLCBldmVudC0+ZGV0YWlsLCBldmVu dC0+dGltZSk7CisgfQorIAorLWJvb2wgUVhjYldpbmRvdzo6c2hvdWxkRGVmZXJUYXNrKFRhc2sg dGFzaykKKy17CistICAgIGlmIChtX3dtU3RhdGVWYWxpZCkKKy0gICAgICAgIHJldHVybiBmYWxz ZTsKKy0KKy0gICAgbV9kZWZlcnJlZFRhc2tzLmFwcGVuZCh0YXNrKTsKKy0gICAgcmV0dXJuIHRy dWU7CistfQorLQorLXZvaWQgUVhjYldpbmRvdzo6aGFuZGxlRGVmZXJyZWRUYXNrcygpCistewor LSAgICBRX0FTU0VSVChtX3dtU3RhdGVWYWxpZCA9PSB0cnVlKTsKKy0gICAgaWYgKG1fZGVmZXJy ZWRUYXNrcy5pc0VtcHR5KCkpCistICAgICAgICByZXR1cm47CistCistICAgIGJvb2wgbWFwID0g ZmFsc2U7CistICAgIGJvb2wgdW5tYXAgPSBmYWxzZTsKKy0KKy0gICAgUVZlY3RvcjxUYXNrPiB0 YXNrczsKKy0gICAgZm9yIChhdXRvIHRhc2tJdCA9IG1fZGVmZXJyZWRUYXNrcy5yYmVnaW4oKTsg dGFza0l0ICE9IG1fZGVmZXJyZWRUYXNrcy5yZW5kKCk7ICsrdGFza0l0KSB7CistICAgICAgICBp ZiAoIXRhc2tzLmNvbnRhaW5zKCp0YXNrSXQpKQorLSAgICAgICAgICAgIHRhc2tzLnByZXBlbmQo KnRhc2tJdCk7CistICAgIH0KKy0KKy0gICAgZm9yIChUYXNrIHRhc2sgOiB0YXNrcykgeworLSAg ICAgICAgc3dpdGNoICh0YXNrKSB7CistICAgICAgICBjYXNlIFRhc2s6Ok1hcDoKKy0gICAgICAg ICAgICBtYXAgPSB0cnVlOworLSAgICAgICAgICAgIHVubWFwID0gZmFsc2U7CistICAgICAgICAg ICAgYnJlYWs7CistICAgICAgICBjYXNlIFRhc2s6OlVubWFwOgorLSAgICAgICAgICAgIHVubWFw ID0gdHJ1ZTsKKy0gICAgICAgICAgICBtYXAgPSBmYWxzZTsKKy0gICAgICAgICAgICBicmVhazsK Ky0gICAgICAgIGNhc2UgVGFzazo6U2V0R2VvbWV0cnk6CistICAgICAgICAgICAgc2V0R2VvbWV0 cnkobV9kZWZlcnJlZEdlb21ldHJ5KTsKKy0gICAgICAgICAgICBicmVhazsKKy0gICAgICAgIGNh c2UgVGFzazo6U2V0V2luZG93RmxhZ3M6CistICAgICAgICAgICAgc2V0V2luZG93RmxhZ3Mod2lu ZG93KCktPmZsYWdzKCkpOworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgY2FzZSBUYXNr OjpTZXRXaW5kb3dTdGF0ZToKKy0gICAgICAgICAgICBzZXRXaW5kb3dTdGF0ZSh3aW5kb3coKS0+ d2luZG93U3RhdGUoKSk7CistICAgICAgICAgICAgYnJlYWs7CistICAgICAgICB9CistICAgIH0K Ky0gICAgbV9kZWZlcnJlZFRhc2tzLmNsZWFyKCk7CistCistICAgIGlmIChtYXApIHsKKy0gICAg ICAgIFFfQVNTRVJUKHVubWFwID09IGZhbHNlKTsKKy0gICAgICAgIHNob3coKTsKKy0gICAgfQor LSAgICBpZiAodW5tYXApIHsKKy0gICAgICAgIFFfQVNTRVJUKG1hcCA9PSBmYWxzZSk7CistICAg ICAgICBoaWRlKCk7CistICAgIH0KKy19CistCisgdm9pZCBRWGNiV2luZG93OjpoYW5kbGVQcm9w ZXJ0eU5vdGlmeUV2ZW50KGNvbnN0IHhjYl9wcm9wZXJ0eV9ub3RpZnlfZXZlbnRfdCAqZXZlbnQp CisgeworICAgICBjb25uZWN0aW9uKCktPnNldFRpbWUoZXZlbnQtPnRpbWUpOworIAorLSAgICBj b25zdCBib29sIHdtU3RhdGVDaGFuZ2VkID0gZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6 V01fU1RBVEUpOworLSAgICBjb25zdCBib29sIG5ldFdtU3RhdGVDaGFuZ2VkID0gZXZlbnQtPmF0 b20gPT0gYXRvbShRWGNiQXRvbTo6X05FVF9XTV9TVEFURSk7CistICAgIGlmIChuZXRXbVN0YXRl Q2hhbmdlZCB8fCB3bVN0YXRlQ2hhbmdlZCkgeworLSAgICAgICAgaWYgKHdtU3RhdGVDaGFuZ2Vk ICYmICFtX3dtU3RhdGVWYWxpZCAmJiBtX2lzV21NYW5hZ2VkV2luZG93KSB7CistICAgICAgICAg ICAgLy8gSUNDQ00gNC4xLjQKKy0gICAgICAgICAgICAvLyBDbGllbnRzIHRoYXQgd2FudCB0byBy ZS11c2UgYSBjbGllbnQgd2luZG93IChlLmcuIGJ5IG1hcHBpbmcgaXQgYWdhaW4pCistICAgICAg ICAgICAgLy8gYWZ0ZXIgd2l0aGRyYXdpbmcgaXQgbXVzdCB3YWl0IGZvciB0aGUgd2l0aGRyYXdh bCB0byBiZSBjb21wbGV0ZSBiZWZvcmUKKy0gICAgICAgICAgICAvLyBwcm9jZWVkaW5nLiBUaGUg cHJlZmVycmVkIG1ldGhvZCBmb3IgZG9pbmcgdGhpcyBpcyBmb3IgY2xpZW50cyB0byB3YWl0IGZv cgorLSAgICAgICAgICAgIC8vIGEgd2luZG93IG1hbmFnZXIgdG8gdXBkYXRlIG9yIHJlbW92ZSB0 aGUgV01fU1RBVEUgcHJvcGVydHkuCistICAgICAgICAgICAgbV93bVN0YXRlVmFsaWQgPSB0cnVl OworLSAgICAgICAgICAgIGhhbmRsZURlZmVycmVkVGFza3MoKTsKKy0gICAgICAgIH0KKy0gICAg ICAgIGlmIChldmVudC0+c3RhdGUgPT0gWENCX1BST1BFUlRZX0RFTEVURSkKKysgICAgY29uc3Qg Ym9vbCBwcm9wZXJ0eURlbGV0ZWQgPSBldmVudC0+c3RhdGUgPT0gWENCX1BST1BFUlRZX0RFTEVU RTsKKysKKysgICAgaWYgKGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206Ol9ORVRfV01fU1RB VEUpIHx8IGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206OldNX1NUQVRFKSkgeworKyAgICAg ICAgaWYgKHByb3BlcnR5RGVsZXRlZCkKKyAgICAgICAgICAgICByZXR1cm47CisgCistICAgICAg ICBpZiAod21TdGF0ZUNoYW5nZWQpIHsKKysgICAgICAgIFF0OjpXaW5kb3dTdGF0ZXMgbmV3U3Rh dGUgPSBRdDo6V2luZG93Tm9TdGF0ZTsKKysKKysgICAgICAgIGlmIChldmVudC0+YXRvbSA9PSBh dG9tKFFYY2JBdG9tOjpXTV9TVEFURSkpIHsgLy8gV01fU1RBVEU6IFF1aWNrIGNoZWNrIGZvciAn TWluaW1pemUnLgorICAgICAgICAgICAgIGF1dG8gcmVwbHkgPSBRX1hDQl9SRVBMWSh4Y2JfZ2V0 X3Byb3BlcnR5LCB4Y2JfY29ubmVjdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAwLCBtX3dpbmRvdywgYXRvbShRWGNiQXRvbTo6V01fU1RBVEUpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYQ0JfQVRPTV9BTlksIDAsIDEwMjQpOwor ICAgICAgICAgICAgIGlmIChyZXBseSAmJiByZXBseS0+Zm9ybWF0ID09IDMyICYmIHJlcGx5LT50 eXBlID09IGF0b20oUVhjYkF0b206OldNX1NUQVRFKSkgeworLSAgICAgICAgICAgICAgICBhdXRv IGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBxdWludDMyICo+KHhjYl9nZXRfcHJvcGVydHlfdmFs dWUocmVwbHkuZ2V0KCkpKTsKKy0gICAgICAgICAgICAgICAgaWYgKHJlcGx5LT5sZW5ndGggIT0g MCkgeworLSAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCBjaGFuZ2VkVG9XaXRoZHJhd24g PSBkYXRhWzBdID09IFhDQl9JQ0NDTV9XTV9TVEFURV9XSVRIRFJBV047CistICAgICAgICAgICAg ICAgICAgICBjb25zdCBib29sIGNoYW5nZWRUb0ljb25pYyA9IGRhdGFbMF0gPT0gWENCX0lDQ0NN X1dNX1NUQVRFX0lDT05JQzsKKy0gICAgICAgICAgICAgICAgICAgIG1fbWluaW1pemVkID0gY2hh bmdlZFRvSWNvbmljIHx8IChjaGFuZ2VkVG9XaXRoZHJhd24gJiYgbV9taW5pbWl6ZWQpOworLSAg ICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGNvbnN0IHF1aW50MzIgKmRhdGEgPSAo Y29uc3QgcXVpbnQzMiAqKXhjYl9nZXRfcHJvcGVydHlfdmFsdWUocmVwbHkuZ2V0KCkpOworKyAg ICAgICAgICAgICAgICBpZiAocmVwbHktPmxlbmd0aCAhPSAwKQorKyAgICAgICAgICAgICAgICAg ICAgbV9taW5pbWl6ZWQgPSAoZGF0YVswXSA9PSBYQ0JfSUNDQ01fV01fU1RBVEVfSUNPTklDCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoZGF0YVswXSA9PSBYQ0JfSUND Q01fV01fU1RBVEVfV0lUSERSQVdOICYmIG1fbWluaW1pemVkKSk7CisgICAgICAgICAgICAgfQor ICAgICAgICAgfQorIAorLSAgICAgICAgLy8gX05FVF9XTV9TVEFURSBoYW5kbGluZworLSAgICAg ICAgUXQ6OldpbmRvd1N0YXRlcyBuZXdTdGF0ZSA9IFF0OjpXaW5kb3dOb1N0YXRlOworICAgICAg ICAgY29uc3QgTmV0V21TdGF0ZXMgc3RhdGVzID0gbmV0V21TdGF0ZXMoKTsKKyAgICAgICAgIC8v IF9ORVRfV01fU1RBVEVfSElEREVOIHNob3VsZCBiZSBzZXQgYnkgdGhlIFdpbmRvdyBNYW5hZ2Vy IHRvIGluZGljYXRlIHRoYXQgYSB3aW5kb3cgd291bGQKKyAgICAgICAgIC8vIG5vdCBiZSB2aXNp YmxlIG9uIHRoZSBzY3JlZW4gaWYgaXRzIGRlc2t0b3Avdmlld3BvcnQgd2VyZSBhY3RpdmUgYW5k IGl0cyBjb29yZGluYXRlcyB3ZXJlCitAQCAtMjMyNSw2ICsyMjM5LDcgQEAgdm9pZCBRWGNiV2lu ZG93OjpoYW5kbGVQcm9wZXJ0eU5vdGlmeUV2ZW50KGNvbnN0IHhjYl9wcm9wZXJ0eV9ub3RpZnlf ZXZlbnRfdCAqZXYKKyAgICAgICAgICAgICBpZiAoKG1fd2luZG93U3RhdGUgJiBRdDo6V2luZG93 TWluaW1pemVkKSAmJiBjb25uZWN0aW9uKCktPm1vdXNlR3JhYmJlcigpID09IHRoaXMpCisgICAg ICAgICAgICAgICAgIGNvbm5lY3Rpb24oKS0+c2V0TW91c2VHcmFiYmVyKG51bGxwdHIpOworICAg ICAgICAgfQorKyAgICAgICAgcmV0dXJuOworICAgICB9IGVsc2UgaWYgKGV2ZW50LT5hdG9tID09 IGF0b20oUVhjYkF0b206Ol9ORVRfRlJBTUVfRVhURU5UUykpIHsKKyAgICAgICAgIG1fZGlydHlG cmFtZU1hcmdpbnMgPSB0cnVlOworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVn aW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy94Y2IvcXhjYndpbmRvdy5oCitpbmRleCA1NWFmOTI3OWIxLi42ZjVjMWY1ZWQ5IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5oCisr KysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmgKK0BAIC03 NCwxNCArNzQsNiBAQCBwdWJsaWM6CisgCisgICAgIFFfREVDTEFSRV9GTEFHUyhOZXRXbVN0YXRl cywgTmV0V21TdGF0ZSkKKyAKKy0gICAgZW51bSBUYXNrIHsKKy0gICAgICAgIE1hcCwKKy0gICAg ICAgIFVubWFwLAorLSAgICAgICAgU2V0R2VvbWV0cnksCistICAgICAgICBTZXRXaW5kb3dGbGFn cywKKy0gICAgICAgIFNldFdpbmRvd1N0YXRlCistICAgIH07CistCisgICAgIFFYY2JXaW5kb3co UVdpbmRvdyAqd2luZG93KTsKKyAgICAgflFYY2JXaW5kb3coKTsKKyAKK0BAIC0xNTEsOSArMTQz LDYgQEAgcHVibGljOgorIAorICAgICBRWGNiV2luZG93ICp0b1dpbmRvdygpIG92ZXJyaWRlOwor IAorLSAgICBib29sIHNob3VsZERlZmVyVGFzayhUYXNrIHRhc2spOworLSAgICB2b2lkIGhhbmRs ZURlZmVycmVkVGFza3MoKTsKKy0KKyAgICAgdm9pZCBoYW5kbGVNb3VzZUV2ZW50KHhjYl90aW1l c3RhbXBfdCB0aW1lLCBjb25zdCBRUG9pbnQgJmxvY2FsLCBjb25zdCBRUG9pbnQgJmdsb2JhbCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RpZmll cnMsIFFFdmVudDo6VHlwZSB0eXBlLCBRdDo6TW91c2VFdmVudFNvdXJjZSBzb3VyY2UpOworIAor QEAgLTI5MiwxMSArMjgxLDYgQEAgcHJvdGVjdGVkOgorICAgICBpbnQgbV9zd2FwSW50ZXJ2YWwg PSAtMTsKKyAKKyAgICAgcXJlYWwgbV9zaXplSGludHNTY2FsZUZhY3RvciA9IDEuMDsKKy0KKy0g ICAgYm9vbCBtX3dtU3RhdGVWYWxpZCA9IHRydWU7CistICAgIFFWZWN0b3I8VGFzaz4gbV9kZWZl cnJlZFRhc2tzOworLSAgICBib29sIG1faXNXbU1hbmFnZWRXaW5kb3cgPSB0cnVlOworLSAgICBR UmVjdCBtX2RlZmVycmVkR2VvbWV0cnk7CisgfTsKKyAKKyBjbGFzcyBRWGNiRm9yZWlnbldpbmRv dyA6IHB1YmxpYyBRWGNiV2luZG93CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3JtdGhlbWVzL2d0azMvcWd0azNtZW51LmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXRoZW1lcy9ndGszL3FndGszbWVudS5jcHAKK2luZGV4IGQ5ZDExN2ZhZWIuLjY0MGI0OWRh YTAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMvZ3RrMy9x Z3RrM21lbnUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMvZ3Rr My9xZ3RrM21lbnUuY3BwCitAQCAtODUsNiArODUsNyBAQCBRR3RrM01lbnVJdGVtOjpRR3RrM01l bnVJdGVtKCkKKyAgICAgICBtX2NoZWNrYWJsZShmYWxzZSksCisgICAgICAgbV9jaGVja2VkKGZh bHNlKSwKKyAgICAgICBtX2VuYWJsZWQodHJ1ZSksCisrICAgICAgbV9leGNsdXNpdmUoZmFsc2Up LAorICAgICAgIG1fdW5kZXJsaW5lKGZhbHNlKSwKKyAgICAgICBtX2ludmFsaWQodHJ1ZSksCisg ICAgICAgbV9tZW51KG51bGxwdHIpLAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxv Zy5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRh bC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2cuY3BwCitpbmRleCAwMDQ4YmJjMWU2Li4zOTZl N2Y2ZDFjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hk Z2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nLmNwcAorKysrIGIvcXRi YXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0 b3Bwb3J0YWxmaWxlZGlhbG9nLmNwcAorQEAgLTEwMiwxNSArMTAyLDEyIEBAIGNvbnN0IFFEQnVz QXJndW1lbnQgJm9wZXJhdG9yID4+KGNvbnN0IFFEQnVzQXJndW1lbnQgJmFyZywgUVhkZ0Rlc2t0 b3BQb3J0YWxGaWxlCisgY2xhc3MgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZQor IHsKKyBwdWJsaWM6CistICAgIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUoUVBs YXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZykKKysgICAgUVhkZ0Rlc2t0 b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZShRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRp dmVGaWxlRGlhbG9nLCB1aW50IGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbikKKyAgICAgICAgIDog bmF0aXZlRmlsZURpYWxvZyhuYXRpdmVGaWxlRGlhbG9nKQorKyAgICAgICAgLCBmaWxlQ2hvb3Nl clBvcnRhbFZlcnNpb24oZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKQorICAgICB7IH0KKyAKKy0g ICAgV0lkIHdpbklkID0gMDsKKy0gICAgYm9vbCBkaXJlY3RvcnlNb2RlID0gZmFsc2U7CistICAg IGJvb2wgbW9kYWwgPSBmYWxzZTsKKy0gICAgYm9vbCBtdWx0aXBsZUZpbGVzID0gZmFsc2U7Cist ICAgIGJvb2wgc2F2ZUZpbGUgPSBmYWxzZTsKKysgICAgUUV2ZW50TG9vcCBsb29wOworICAgICBR U3RyaW5nIGFjY2VwdExhYmVsOworICAgICBRU3RyaW5nIGRpcmVjdG9yeTsKKyAgICAgUVN0cmlu ZyB0aXRsZTsKK0BAIC0xMjEsMTkgKzExOCwyNyBAQCBwdWJsaWM6CisgICAgIFFTdHJpbmcgc2Vs ZWN0ZWRNaW1lVHlwZUZpbHRlcjsKKyAgICAgUVN0cmluZyBzZWxlY3RlZE5hbWVGaWx0ZXI7Cisg ICAgIFFTdHJpbmdMaXN0IHNlbGVjdGVkRmlsZXM7CistICAgIFFQbGF0Zm9ybUZpbGVEaWFsb2dI ZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cgPSBudWxscHRyOworKyAgICBzdGQ6OnVuaXF1ZV9wdHI8 UVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlcj4gbmF0aXZlRmlsZURpYWxvZzsKKysgICAgdWludCBm aWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPSAwOworKyAgICBib29sIGZhaWxlZFRvT3BlbiA9IGZh bHNlOworKyAgICBib29sIGRpcmVjdG9yeU1vZGUgPSBmYWxzZTsKKysgICAgYm9vbCBtdWx0aXBs ZUZpbGVzID0gZmFsc2U7CisrICAgIGJvb2wgc2F2ZUZpbGUgPSBmYWxzZTsKKyB9OworIAorLVFY ZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKFFQ bGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cpCisrUVhkZ0Rlc2t0b3BQ b3J0YWxGaWxlRGlhbG9nOjpRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coUVBsYXRmb3JtRmls ZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZywgdWludCBmaWxlQ2hvb3NlclBvcnRhbFZl cnNpb24pCisgICAgIDogUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlcigpCistICAgICwgZF9wdHIo bmV3IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUobmF0aXZlRmlsZURpYWxvZykp CisrICAgICwgZF9wdHIobmV3IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUobmF0 aXZlRmlsZURpYWxvZywgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKSkKKyB7CisgICAgIFFfRChR WGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworIAorICAgICBpZiAoZC0+bmF0aXZlRmlsZURp YWxvZykgeworLSAgICAgICAgY29ubmVjdChkLT5uYXRpdmVGaWxlRGlhbG9nLCBTSUdOQUwoYWNj ZXB0KCkpLCB0aGlzLCBTSUdOQUwoYWNjZXB0KCkpKTsKKy0gICAgICAgIGNvbm5lY3QoZC0+bmF0 aXZlRmlsZURpYWxvZywgU0lHTkFMKHJlamVjdCgpKSwgdGhpcywgU0lHTkFMKHJlamVjdCgpKSk7 CisrICAgICAgICBjb25uZWN0KGQtPm5hdGl2ZUZpbGVEaWFsb2cuZ2V0KCksIFNJR05BTChhY2Nl cHQoKSksIHRoaXMsIFNJR05BTChhY2NlcHQoKSkpOworKyAgICAgICAgY29ubmVjdChkLT5uYXRp dmVGaWxlRGlhbG9nLmdldCgpLCBTSUdOQUwocmVqZWN0KCkpLCB0aGlzLCBTSUdOQUwocmVqZWN0 KCkpKTsKKyAgICAgfQorKworKyAgICBkLT5sb29wLmNvbm5lY3QodGhpcywgU0lHTkFMKGFjY2Vw dCgpKSwgU0xPVChxdWl0KCkpKTsKKysgICAgZC0+bG9vcC5jb25uZWN0KHRoaXMsIFNJR05BTChy ZWplY3QoKSksIFNMT1QocXVpdCgpKSk7CisgfQorIAorIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURp YWxvZzo6flFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZygpCitAQCAtMTc3LDcgKzE4Miw3IEBA IHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjppbml0aWFsaXplRGlhbG9nKCkKKyAg ICAgc2V0RGlyZWN0b3J5KG9wdGlvbnMoKS0+aW5pdGlhbERpcmVjdG9yeSgpKTsKKyB9CisgCist dm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6Om9wZW5Qb3J0YWwoKQorK3ZvaWQgUVhk Z0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKFF0OjpXaW5kb3dGbGFncyB3aW5k b3dGbGFncywgUXQ6OldpbmRvd01vZGFsaXR5IHdpbmRvd01vZGFsaXR5LCBRV2luZG93ICpwYXJl bnQpCisgeworICAgICBRX0QoUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKK0BAIC0x ODUsMTMgKzE5MCwxMyBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6b3BlblBv cnRhbCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIi9vcmcvZnJlZWRlc2t0b3AvcG9ydGFsL2Rlc2t0b3Ai KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUUxhdGluMVN0cmluZygib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5GaWxlQ2hvb3NlciIp LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkLT5zYXZlRmlsZSA/IFFMYXRpbjFTdHJpbmcoIlNhdmVGaWxlIikgOiBRTGF0aW4xU3Ry aW5nKCJPcGVuRmlsZSIpKTsKKy0gICAgUVN0cmluZyBwYXJlbnRXaW5kb3dJZCA9IFFMYXRpbjFT dHJpbmcoIngxMToiKSArIFFTdHJpbmc6Om51bWJlcihkLT53aW5JZCwgMTYpOworKyAgICBRU3Ry aW5nIHBhcmVudFdpbmRvd0lkID0gUUxhdGluMVN0cmluZygieDExOiIpICsgUVN0cmluZzo6bnVt YmVyKHBhcmVudCA/IHBhcmVudC0+d2luSWQoKSA6IDAsIDE2KTsKKyAKKyAgICAgUVZhcmlhbnRN YXAgb3B0aW9uczsKKyAgICAgaWYgKCFkLT5hY2NlcHRMYWJlbC5pc0VtcHR5KCkpCisgICAgICAg ICBvcHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJhY2NlcHRfbGFiZWwiKSwgZC0+YWNjZXB0 TGFiZWwpOworIAorLSAgICBvcHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJtb2RhbCIpLCBk LT5tb2RhbCk7CisrICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRpbjFTdHJpbmcoIm1vZGFsIiksIHdp bmRvd01vZGFsaXR5ICE9IFF0OjpOb25Nb2RhbCk7CisgICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRp bjFTdHJpbmcoIm11bHRpcGxlIiksIGQtPm11bHRpcGxlRmlsZXMpOworICAgICBvcHRpb25zLmlu c2VydChRTGF0aW4xU3RyaW5nKCJkaXJlY3RvcnkiKSwgZC0+ZGlyZWN0b3J5TW9kZSk7CisgCitA QCAtMjkwLDEwICsyOTUsMTggQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6Om9w ZW5Qb3J0YWwoKQorIAorICAgICBRREJ1c1BlbmRpbmdDYWxsIHBlbmRpbmdDYWxsID0gUURCdXND b25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuYXN5bmNDYWxsKG1lc3NhZ2UpOworICAgICBRREJ1c1Bl bmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hlciA9IG5ldyBRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcihw ZW5kaW5nQ2FsbCk7CistICAgIGNvbm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVuZGluZ0NhbGxXYXRj aGVyOjpmaW5pc2hlZCwgdGhpcywgW3RoaXNdIChRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlciAqd2F0 Y2hlcikgeworKyAgICBjb25uZWN0KHdhdGNoZXIsICZRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcjo6 ZmluaXNoZWQsIHRoaXMsIFs9XSAoUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIpIHsK KyAgICAgICAgIFFEQnVzUGVuZGluZ1JlcGx5PFFEQnVzT2JqZWN0UGF0aD4gcmVwbHkgPSAqd2F0 Y2hlcjsKKy0gICAgICAgIGlmIChyZXBseS5pc0Vycm9yKCkpIHsKKy0gICAgICAgICAgICBRX0VN SVQgcmVqZWN0KCk7CisrICAgICAgICAvLyBBbnkgZXJyb3IgbWVhbnMgdGhlIGRpYWxvZyBpcyBu b3Qgc2hvd24gYW5kIHdlIG5lZWQgdG8gZmFsbGJhY2sKKysgICAgICAgIGQtPmZhaWxlZFRvT3Bl biA9IHJlcGx5LmlzRXJyb3IoKTsKKysgICAgICAgIGlmIChkLT5mYWlsZWRUb09wZW4pIHsKKysg ICAgICAgICAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZykgeworKyAgICAgICAgICAgICAgICBk LT5uYXRpdmVGaWxlRGlhbG9nLT5zaG93KHdpbmRvd0ZsYWdzLCB3aW5kb3dNb2RhbGl0eSwgcGFy ZW50KTsKKysgICAgICAgICAgICAgICAgaWYgKGQtPmxvb3AuaXNSdW5uaW5nKCkpCisrICAgICAg ICAgICAgICAgICAgICBkLT5uYXRpdmVGaWxlRGlhbG9nLT5leGVjKCk7CisrICAgICAgICAgICAg fSBlbHNlIHsKKysgICAgICAgICAgICAgICAgUV9FTUlUIHJlamVjdCgpOworKyAgICAgICAgICAg IH0KKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgUURCdXNDb25uZWN0aW9uOjpzZXNz aW9uQnVzKCkuY29ubmVjdChudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVwbHkudmFsdWUoKS5wYXRoKCksCitAQCAtMzAyLDYgKzMx NSw3IEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTE9UKGdv dFJlc3BvbnNlKHVpbnQsUVZhcmlhbnRNYXApKSk7CisgICAgICAgICB9CisrICAgICAgICB3YXRj aGVyLT5kZWxldGVMYXRlcigpOworICAgICB9KTsKKyB9CisgCitAQCAtMzI2LDcgKzM0MCw3IEBA IFFVcmwgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpkaXJlY3RvcnkoKSBjb25zdAorIHsK KyAgICAgUV9EKGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7CisgCistICAgIGlm IChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVE aWFsb2dPcHRpb25zOjpEaXJlY3RvcnkgfHwgb3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxl RGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5T25seSkpCisrICAgIGlmIChkLT5uYXRpdmVGaWxlRGlh bG9nICYmIHVzZU5hdGl2ZUZpbGVEaWFsb2coKSkKKyAgICAgICAgIHJldHVybiBkLT5uYXRpdmVG aWxlRGlhbG9nLT5kaXJlY3RvcnkoKTsKKyAKKyAgICAgcmV0dXJuIGQtPmRpcmVjdG9yeTsKK0BA IC0zNDgsNyArMzYyLDcgQEAgUUxpc3Q8UVVybD4gUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9n OjpzZWxlY3RlZEZpbGVzKCkgY29uc3QKKyB7CisgICAgIFFfRChjb25zdCBRWGRnRGVza3RvcFBv cnRhbEZpbGVEaWFsb2cpOworIAorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiAob3B0 aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5IHx8IG9w dGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkp KQorKyAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVGaWxlRGlhbG9nKCkp CisgICAgICAgICByZXR1cm4gZC0+bmF0aXZlRmlsZURpYWxvZy0+c2VsZWN0ZWRGaWxlcygpOwor IAorICAgICBRTGlzdDxRVXJsPiBmaWxlczsKK0BAIC00MDMsMTYgKzQxNywxMyBAQCB2b2lkIFFY ZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6ZXhlYygpCisgeworICAgICBRX0QoUVhkZ0Rlc2t0 b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKKy0gICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYg KG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeSB8 fCBvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnlP bmx5KSkgeworKyAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVGaWxlRGlh bG9nKCkpIHsKKyAgICAgICAgIGQtPm5hdGl2ZUZpbGVEaWFsb2ctPmV4ZWMoKTsKKyAgICAgICAg IHJldHVybjsKKyAgICAgfQorIAorICAgICAvLyBIQUNLIHdlIGhhdmUgdG8gYXZvaWQgcmV0dXJu aW5nIHVudGlsIHdlIGVtaXQgdGhhdCB0aGUgZGlhbG9nIHdhcyBhY2NlcHRlZCBvciByZWplY3Rl ZAorLSAgICBRRXZlbnRMb29wIGxvb3A7CistICAgIGxvb3AuY29ubmVjdCh0aGlzLCBTSUdOQUwo YWNjZXB0KCkpLCBTTE9UKHF1aXQoKSkpOworLSAgICBsb29wLmNvbm5lY3QodGhpcywgU0lHTkFM KHJlamVjdCgpKSwgU0xPVChxdWl0KCkpKTsKKy0gICAgbG9vcC5leGVjKCk7CisrICAgIGQtPmxv b3AuZXhlYygpOworIH0KKyAKKyB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6aGlk ZSgpCitAQCAtNDI5LDEzICs0NDAsMTAgQEAgYm9vbCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFs b2c6OnNob3coUXQ6OldpbmRvd0ZsYWdzIHdpbmRvd0ZsYWdzLCBRdDo6V2luZG93TW8KKyAKKyAg ICAgaW5pdGlhbGl6ZURpYWxvZygpOworIAorLSAgICBkLT5tb2RhbCA9IHdpbmRvd01vZGFsaXR5 ICE9IFF0OjpOb25Nb2RhbDsKKy0gICAgZC0+d2luSWQgPSBwYXJlbnQgPyBwYXJlbnQtPndpbklk KCkgOiAwOworLQorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiAob3B0aW9ucygpLT5m aWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5IHx8IG9wdGlvbnMoKS0+ ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpKQorKyAgICBp ZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVGaWxlRGlhbG9nKE9wZW5GYWxsYmFj aykpCisgICAgICAgICByZXR1cm4gZC0+bmF0aXZlRmlsZURpYWxvZy0+c2hvdyh3aW5kb3dGbGFn cywgd2luZG93TW9kYWxpdHksIHBhcmVudCk7CisgCistICAgIG9wZW5Qb3J0YWwoKTsKKysgICAg b3BlblBvcnRhbCh3aW5kb3dGbGFncywgd2luZG93TW9kYWxpdHksIHBhcmVudCk7CisgCisgICAg IHJldHVybiB0cnVlOworIH0KK0BAIC00NjUsNCArNDczLDIxIEBAIHZvaWQgUVhkZ0Rlc2t0b3BQ b3J0YWxGaWxlRGlhbG9nOjpnb3RSZXNwb25zZSh1aW50IHJlc3BvbnNlLCBjb25zdCBRVmFyaWFu dE1hcCAmCisgICAgIH0KKyB9CisgCisrYm9vbCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6 OnVzZU5hdGl2ZUZpbGVEaWFsb2coUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpGYWxsYmFj a1R5cGUgZmFsbGJhY2tUeXBlKSBjb25zdAorK3sKKysgICAgUV9EKGNvbnN0IFFYZGdEZXNrdG9w UG9ydGFsRmlsZURpYWxvZyk7CisrCisrICAgIGlmIChkLT5mYWlsZWRUb09wZW4gJiYgZmFsbGJh Y2tUeXBlICE9IE9wZW5GYWxsYmFjaykKKysgICAgICAgIHJldHVybiB0cnVlOworKworKyAgICBp ZiAoZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uIDwgMykgeworKyAgICAgICAgaWYgKG9wdGlv bnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeSkKKysgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMoKS0+ZmlsZU1v ZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpCisrICAgICAgICAgICAg cmV0dXJuIHRydWU7CisrICAgIH0KKysKKysgICAgcmV0dXJuIGZhbHNlOworK30KKysKKyBRVF9F TkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhl bWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nX3AuaCBiL3F0 YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNr dG9wcG9ydGFsZmlsZWRpYWxvZ19wLmgKK2luZGV4IDRmNGRlOTZlY2YuLjY1ZTIyYTVjZjIgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBv cnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2dfcC5oCisrKysgYi9xdGJhc2Uvc3JjL3Bs dWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZp bGVkaWFsb2dfcC5oCitAQCAtNTEsNiArNTEsMTEgQEAgY2xhc3MgUVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nIDogcHVibGljIFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIKKyAgICAgUV9PQkpF Q1QKKyAgICAgUV9ERUNMQVJFX1BSSVZBVEUoUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKQor IHB1YmxpYzoKKysgICAgZW51bSBGYWxsYmFja1R5cGUgeworKyAgICAgICAgR2VuZXJpY0ZhbGxi YWNrLAorKyAgICAgICAgT3BlbkZhbGxiYWNrCisrICAgIH07CisrCisgICAgIGVudW0gQ29uZGl0 aW9uVHlwZSA6IHVpbnQgeworICAgICAgICAgR2xvYmFsUGF0dGVybiA9IDAsCisgICAgICAgICBN aW1lVHlwZSA9IDEKK0BAIC02OSw3ICs3NCw3IEBAIHB1YmxpYzoKKyAgICAgfTsKKyAgICAgdHlw ZWRlZiBRVmVjdG9yPEZpbHRlcj4gRmlsdGVyTGlzdDsKKyAKKy0gICAgUVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cg PSBudWxscHRyKTsKKysgICAgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKFFQbGF0Zm9ybUZp bGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cgPSBudWxscHRyLCB1aW50IGZpbGVDaG9v c2VyUG9ydGFsVmVyc2lvbiA9IDApOworICAgICB+UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9n KCk7CisgCisgICAgIGJvb2wgZGVmYXVsdE5hbWVGaWx0ZXJEaXNhYmxlcygpIGNvbnN0IG92ZXJy aWRlOworQEAgLTkyLDcgKzk3LDggQEAgcHJpdmF0ZSBRX1NMT1RTOgorIAorIHByaXZhdGU6Cisg ICAgIHZvaWQgaW5pdGlhbGl6ZURpYWxvZygpOworLSAgICB2b2lkIG9wZW5Qb3J0YWwoKTsKKysg ICAgdm9pZCBvcGVuUG9ydGFsKFF0OjpXaW5kb3dGbGFncyB3aW5kb3dGbGFncywgUXQ6OldpbmRv d01vZGFsaXR5IHdpbmRvd01vZGFsaXR5LCBRV2luZG93ICpwYXJlbnQpOworKyAgICBib29sIHVz ZU5hdGl2ZUZpbGVEaWFsb2coRmFsbGJhY2tUeXBlIGZhbGxiYWNrVHlwZSA9IEdlbmVyaWNGYWxs YmFjaykgY29uc3Q7CisgCisgICAgIFFTY29wZWRQb2ludGVyPFFYZGdEZXNrdG9wUG9ydGFsRmls ZURpYWxvZ1ByaXZhdGU+IGRfcHRyOworIH07CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVn aW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWx0aGVt ZS5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRh bC9xeGRnZGVza3RvcHBvcnRhbHRoZW1lLmNwcAoraW5kZXggZmIzMjRhZmJkOC4uYjgwOTUwMzEy MiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNr dG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsdGhlbWUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3Bs dWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbHRo ZW1lLmNwcAorQEAgLTExMSw2ICsxMTEsNyBAQCBRWGRnRGVza3RvcFBvcnRhbFRoZW1lOjpRWGRn RGVza3RvcFBvcnRhbFRoZW1lKCkKKyAgICAgICAgIGlmIChyZXBseS5pc1ZhbGlkKCkpIHsKKyAg ICAgICAgICAgICBkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPSByZXBseS52YWx1ZSgpLnRv VUludCgpOworICAgICAgICAgfQorKyAgICAgICAgd2F0Y2hlci0+ZGVsZXRlTGF0ZXIoKTsKKyAg ICAgfSk7CisgfQorIAorQEAgLTE1MiwxMSArMTUzLDEyIEBAIFFQbGF0Zm9ybURpYWxvZ0hlbHBl ciogUVhkZ0Rlc2t0b3BQb3J0YWxUaGVtZTo6Y3JlYXRlUGxhdGZvcm1EaWFsb2dIZWxwZXIoRGlh bG9nCisgeworICAgICBRX0QoY29uc3QgUVhkZ0Rlc2t0b3BQb3J0YWxUaGVtZSk7CisgCistICAg IGlmICh0eXBlID09IEZpbGVEaWFsb2cpIHsKKysgICAgaWYgKHR5cGUgPT0gRmlsZURpYWxvZyAm JiBkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pIHsKKyAgICAgICAgIC8vIE9sZGVyIHZlcnNp b25zIG9mIEZpbGVDaG9vc2VyIHBvcnRhbCBkb24ndCBzdXBwb3J0IG9wZW5pbmcgZGlyZWN0b3Jp ZXMsIHRoZXJlZm9yZSB3ZSBmYWxsYmFjaworICAgICAgICAgLy8gdG8gbmF0aXZlIGZpbGUgZGlh bG9nIG9wZW5lZCBpbnNpZGUgdGhlIHNhbmRib3ggdG8gb3BlbiBhIGRpcmVjdG9yeS4KKy0gICAg ICAgIGlmIChkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPCAzICYmIGQtPmJhc2VUaGVtZS0+ dXNlUGxhdGZvcm1OYXRpdmVEaWFsb2codHlwZSkpCistICAgICAgICAgICAgcmV0dXJuIG5ldyBR WGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coc3RhdGljX2Nhc3Q8UVBsYXRmb3JtRmlsZURpYWxv Z0hlbHBlcio+KGQtPmJhc2VUaGVtZS0+Y3JlYXRlUGxhdGZvcm1EaWFsb2dIZWxwZXIodHlwZSkp KTsKKysgICAgICAgIGlmIChkLT5iYXNlVGhlbWUtPnVzZVBsYXRmb3JtTmF0aXZlRGlhbG9nKHR5 cGUpKQorKyAgICAgICAgICAgIHJldHVybiBuZXcgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9n KHN0YXRpY19jYXN0PFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIqPihkLT5iYXNlVGhlbWUtPmNy ZWF0ZVBsYXRmb3JtRGlhbG9nSGVscGVyKHR5cGUpKSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24p OworIAorICAgICAgICAgcmV0dXJuIG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c7Cisg ICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMv cWN1cHNwcmludGVuZ2luZS5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1 cHMvcWN1cHNwcmludGVuZ2luZS5jcHAKK2luZGV4IDQzZDVlMTE5YWQuLjFmOWNiYzQ1NjUgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmlu dGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9x Y3Vwc3ByaW50ZW5naW5lLmNwcAorQEAgLTg5LDggKzg5LDEwIEBAIHZvaWQgUUN1cHNQcmludEVu Z2luZTo6c2V0UHJvcGVydHkoUHJpbnRFbmdpbmVQcm9wZXJ0eUtleSBrZXksIGNvbnN0IFFWYXJp YW50ICZ2CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBQUEtfRHVwbGV4OiB7CisgICAgICAg ICBRUHJpbnQ6OkR1cGxleE1vZGUgbW9kZSA9IFFQcmludDo6RHVwbGV4TW9kZSh2YWx1ZS50b0lu dCgpKTsKKy0gICAgICAgIGlmIChtb2RlICE9IGQtPmR1cGxleCAmJiBkLT5tX3ByaW50RGV2aWNl LnN1cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMobW9kZSkpCisrICAgICAgICBpZiAoZC0+ bV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5zKG1vZGUpKSB7Cisg ICAgICAgICAgICAgZC0+ZHVwbGV4ID0gbW9kZTsKKysgICAgICAgICAgICBkLT5kdXBsZXhSZXF1 ZXN0ZWRFeHBsaWNpdGx5ID0gdHJ1ZTsKKysgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworICAg ICB9CisgICAgIGNhc2UgUFBLX1ByaW50ZXJOYW1lOgorQEAgLTI3Nyw5ICsyNzksMTIgQEAgdm9p ZCBRQ3Vwc1ByaW50RW5naW5lUHJpdmF0ZTo6Y2hhbmdlUHJpbnRlcihjb25zdCBRU3RyaW5nICZu ZXdQcmludGVyKQorICAgICBtX3ByaW50RGV2aWNlLnN3YXAocHJpbnREZXZpY2UpOworICAgICBw cmludGVyTmFtZSA9IG1fcHJpbnREZXZpY2UuaWQoKTsKKyAKKy0gICAgLy8gQ2hlY2sgaWYgbmV3 IHByaW50ZXIgc3VwcG9ydHMgY3VycmVudCBzZXR0aW5ncywgb3RoZXJ3aXNlIHVzIGRlZmF1bHRz CistICAgIGlmIChkdXBsZXggIT0gUVByaW50OjpEdXBsZXhBdXRvICYmICFtX3ByaW50RGV2aWNl LnN1cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMoZHVwbGV4KSkKKysgICAgLy8gaW4gY2Fz ZSBhIGR1cGxleCB2YWx1ZSB3YXMgZXhwbGljaXRseSBzZXQsIGNoZWNrIGlmIG5ldyBwcmludGVy IHN1cHBvcnRzIGN1cnJlbnQgdmFsdWUsCisrICAgIC8vIG90aGVyd2lzZSB1c2UgZGV2aWNlIGRl ZmF1bHQKKysgICAgaWYgKCFkdXBsZXhSZXF1ZXN0ZWRFeHBsaWNpdGx5IHx8ICFtX3ByaW50RGV2 aWNlLnN1cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMoZHVwbGV4KSkgeworICAgICAgICAg ZHVwbGV4ID0gbV9wcmludERldmljZS5kZWZhdWx0RHVwbGV4TW9kZSgpOworKyAgICAgICAgZHVw bGV4UmVxdWVzdGVkRXhwbGljaXRseSA9IGZhbHNlOworKyAgICB9CisgICAgIFFQcmludDo6Q29s b3JNb2RlIGNvbG9yTW9kZSA9IGdyYXlzY2FsZSA/IFFQcmludDo6R3JheVNjYWxlIDogUVByaW50 OjpDb2xvcjsKKyAgICAgaWYgKCFtX3ByaW50RGV2aWNlLnN1cHBvcnRlZENvbG9yTW9kZXMoKS5j b250YWlucyhjb2xvck1vZGUpKQorICAgICAgICAgZ3JheXNjYWxlID0gbV9wcmludERldmljZS5k ZWZhdWx0Q29sb3JNb2RlKCkgPT0gUVByaW50OjpHcmF5U2NhbGU7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmVfcC5oIGIv cXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmVfcC5o CitpbmRleCBjMDIxYjBjNjQzLi44ZjgxZmU0NzhkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9w bHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmVfcC5oCisrKysgYi9xdGJh c2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZV9wLmgKK0BA IC0xMDAsNiArMTAwLDcgQEAgcHJpdmF0ZToKKyAgICAgUVN0cmluZ0xpc3QgY3Vwc09wdGlvbnM7 CisgICAgIFFTdHJpbmcgY3Vwc1RlbXBGaWxlOworICAgICBRUHJpbnQ6OkR1cGxleE1vZGUgZHVw bGV4OworKyAgICBib29sIGR1cGxleFJlcXVlc3RlZEV4cGxpY2l0bHkgPSBmYWxzZTsKKyB9Owor IAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvc3Fs ZHJpdmVycy9pYmFzZS9xc3FsX2liYXNlLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2 ZXJzL2liYXNlL3FzcWxfaWJhc2UuY3BwCitpbmRleCA2N2U3MTU0ZmE2Li40MDg3NjE1MmU1IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvaWJhc2UvcXNxbF9pYmFz ZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL2liYXNlL3FzcWxfaWJh c2UuY3BwCitAQCAtODE3LDcgKzgxNyw3IEBAIGJvb2wgUUlCYXNlUmVzdWx0UHJpdmF0ZTo6d3Jp dGVBcnJheShpbnQgY29sdW1uLCBjb25zdCBRTGlzdDxRVmFyaWFudD4gJmxpc3QpCisgICAgIGJh LnJlc2l6ZShpbnQoYnVmTGVuKSk7CisgCisgICAgIGlmIChsaXN0LnNpemUoKSA+IGFycmF5U2l6 ZSkgeworLSAgICAgICAgZXJyb3IgPSBRTGF0aW4xU3RyaW5nKCJBcnJheSBzaXplIG1pc3NtYXRj aDogc2l6ZSBvZiAlMSBpcyAlMiwgc2l6ZSBvZiBwcm92aWRlZCBsaXN0IGlzICUzIik7CisrICAg ICAgICBlcnJvciA9IFFMYXRpbjFTdHJpbmcoIkFycmF5IHNpemUgbWlzbWF0Y2g6IHNpemUgb2Yg JTEgaXMgJTIsIHNpemUgb2YgcHJvdmlkZWQgbGlzdCBpcyAlMyIpOworICAgICAgICAgZXJyb3Ig PSBlcnJvci5hcmcoUUxhdGluMVN0cmluZyhzcWxuYW1lKSkuYXJnKGFycmF5U2l6ZSkuYXJnKGxp c3Quc2l6ZSgpKTsKKyAgICAgICAgIHEtPnNldExhc3RFcnJvcihRU3FsRXJyb3IoZXJyb3IsIFFM YXRpbjFTdHJpbmcoIiIpLCBRU3FsRXJyb3I6OlN0YXRlbWVudEVycm9yKSk7CisgICAgICAgICBy ZXR1cm4gZmFsc2U7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMv bXlzcWwvcXNxbF9teXNxbC5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9teXNx bC9xc3FsX215c3FsLmNwcAoraW5kZXggN2NhMDU1ZWVhMi4uNmJjOWQ0Njc1NSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL215c3FsL3FzcWxfbXlzcWwuY3BwCisr KysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9teXNxbC9xc3FsX215c3FsLmNwcAor QEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CisgICAgIHN0cnVjdCBRTXlGaWVsZAorICAgICB7 CisgICAgICAgICBjaGFyICpvdXRGaWVsZCA9IG51bGxwdHI7CistICAgICAgICBNWVNRTF9GSUVM RCAqbXlGaWVsZCA9IG51bGxwdHI7CisrICAgICAgICBjb25zdCBNWVNRTF9GSUVMRCAqbXlGaWVs ZCA9IG51bGxwdHI7CisgICAgICAgICBRTWV0YVR5cGU6OlR5cGUgdHlwZSA9IFFNZXRhVHlwZTo6 VW5rbm93blR5cGU7CisgICAgICAgICBteV9ib29sIG51bGxJbmRpY2F0b3IgPSBmYWxzZTsKKyAg ICAgICAgIHVsb25nIGJ1Zkxlbmd0aCA9IDB1bDsKK0BAIC0zNjEsNyArMzYxLDcgQEAgc3RhdGlj IGJvb2wgcUlzSW50ZWdlcihpbnQgdCkKKyB2b2lkIFFNWVNRTFJlc3VsdFByaXZhdGU6OmJpbmRC bG9icygpCisgeworICAgICBpbnQgaTsKKy0gICAgTVlTUUxfRklFTEQgKmZpZWxkSW5mbzsKKysg ICAgY29uc3QgTVlTUUxfRklFTEQgKmZpZWxkSW5mbzsKKyAgICAgTVlTUUxfQklORCAqYmluZDsK KyAKKyAgICAgZm9yKGkgPSAwOyBpIDwgZmllbGRzLmNvdW50KCk7ICsraSkgeworQEAgLTM3OSw3 ICszNzksNiBAQCB2b2lkIFFNWVNRTFJlc3VsdFByaXZhdGU6OmJpbmRCbG9icygpCisgYm9vbCBR TVlTUUxSZXN1bHRQcml2YXRlOjpiaW5kSW5WYWx1ZXMoKQorIHsKKyAgICAgTVlTUUxfQklORCAq YmluZDsKKy0gICAgY2hhciAqZmllbGQ7CisgICAgIGludCBpID0gMDsKKyAKKyAgICAgaWYgKCFt ZXRhKQorQEAgLTM5MiwzNSArMzkxLDM0IEBAIGJvb2wgUU1ZU1FMUmVzdWx0UHJpdmF0ZTo6Ymlu ZEluVmFsdWVzKCkKKyAgICAgaW5CaW5kcyA9IG5ldyBNWVNRTF9CSU5EW2ZpZWxkcy5zaXplKCld OworICAgICBtZW1zZXQoaW5CaW5kcywgMCwgZmllbGRzLnNpemUoKSAqIHNpemVvZihNWVNRTF9C SU5EKSk7CisgCistICAgIE1ZU1FMX0ZJRUxEICpmaWVsZEluZm87CisrICAgIGNvbnN0IE1ZU1FM X0ZJRUxEICpmaWVsZEluZm87CisgCisgICAgIHdoaWxlKChmaWVsZEluZm8gPSBteXNxbF9mZXRj aF9maWVsZChtZXRhKSkpIHsKKysgICAgICAgIGJpbmQgPSAmaW5CaW5kc1tpXTsKKysKKyAgICAg ICAgIFFNeUZpZWxkICZmID0gZmllbGRzW2ldOworICAgICAgICAgZi5teUZpZWxkID0gZmllbGRJ bmZvOworLQorKyAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0aCA9IGYuYnVmTGVuZ3RoID0gZmll bGRJbmZvLT5sZW5ndGggKyAxOworKyAgICAgICAgYmluZC0+YnVmZmVyX3R5cGUgPSBmaWVsZElu Zm8tPnR5cGU7CisgICAgICAgICBmLnR5cGUgPSBxRGVjb2RlTVlTUUxUeXBlKGZpZWxkSW5mby0+ dHlwZSwgZmllbGRJbmZvLT5mbGFncyk7CisgICAgICAgICBpZiAocUlzQmxvYihmaWVsZEluZm8t PnR5cGUpKSB7CisgICAgICAgICAgICAgLy8gdGhlIHNpemUgb2YgYSBibG9iLWZpZWxkIGlzIGF2 YWlsYWJsZSBhcyBzb29uIGFzIHdlIGNhbGwKKyAgICAgICAgICAgICAvLyBteXNxbF9zdG10X3N0 b3JlX3Jlc3VsdCgpCisgICAgICAgICAgICAgLy8gYWZ0ZXIgbXlzcWxfc3RtdF9leGVjKCkgaW4g UU1ZU1FMUmVzdWx0OjpleGVjKCkKKy0gICAgICAgICAgICBmaWVsZEluZm8tPmxlbmd0aCA9IDA7 CisrICAgICAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0aCA9IGYuYnVmTGVuZ3RoID0gMDsKKyAg ICAgICAgICAgICBoYXNCbG9icyA9IHRydWU7CisgICAgICAgICB9IGVsc2UgaWYgKHFJc0ludGVn ZXIoZi50eXBlKSkgeworLSAgICAgICAgICAgIGZpZWxkSW5mby0+bGVuZ3RoID0gODsKKysgICAg ICAgICAgICBiaW5kLT5idWZmZXJfbGVuZ3RoID0gZi5idWZMZW5ndGggPSA4OworICAgICAgICAg fSBlbHNlIHsKKy0gICAgICAgICAgICBmaWVsZEluZm8tPnR5cGUgPSBNWVNRTF9UWVBFX1NUUklO RzsKKysgICAgICAgICAgICBiaW5kLT5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOwor ICAgICAgICAgfQorLSAgICAgICAgYmluZCA9ICZpbkJpbmRzW2ldOworLSAgICAgICAgZmllbGQg PSBuZXcgY2hhcltmaWVsZEluZm8tPmxlbmd0aCArIDFdOworLSAgICAgICAgbWVtc2V0KGZpZWxk LCAwLCBmaWVsZEluZm8tPmxlbmd0aCArIDEpOworIAorLSAgICAgICAgYmluZC0+YnVmZmVyX3R5 cGUgPSBmaWVsZEluZm8tPnR5cGU7CistICAgICAgICBiaW5kLT5idWZmZXIgPSBmaWVsZDsKKy0g ICAgICAgIGJpbmQtPmJ1ZmZlcl9sZW5ndGggPSBmLmJ1Zkxlbmd0aCA9IGZpZWxkSW5mby0+bGVu Z3RoICsgMTsKKyAgICAgICAgIGJpbmQtPmlzX251bGwgPSAmZi5udWxsSW5kaWNhdG9yOworICAg ICAgICAgYmluZC0+bGVuZ3RoID0gJmYuYnVmTGVuZ3RoOworICAgICAgICAgYmluZC0+aXNfdW5z aWduZWQgPSBmaWVsZEluZm8tPmZsYWdzICYgVU5TSUdORURfRkxBRyA/IDEgOiAwOworLSAgICAg ICAgZi5vdXRGaWVsZD1maWVsZDsKKysKKysgICAgICAgIGNoYXIgKmZpZWxkID0gbmV3IGNoYXJb YmluZC0+YnVmZmVyX2xlbmd0aCArIDFde307CisrICAgICAgICBiaW5kLT5idWZmZXIgPSBmLm91 dEZpZWxkID0gZmllbGQ7CisgCisgICAgICAgICArK2k7CisgICAgIH0KK0BAIC0xMzY5LDIwICsx MzY3LDIwIEBAIGJvb2wgUU1ZU1FMRHJpdmVyOjpvcGVuKGNvbnN0IFFTdHJpbmcmIGRiLAorICAg ICB9CisgCisgI2lmIE1ZU1FMX1ZFUlNJT05fSUQgPj0gNTAwMDcKKy0gICAgaWYgKG15c3FsX2dl dF9jbGllbnRfdmVyc2lvbigpID49IDUwNTAzICYmIG15c3FsX2dldF9zZXJ2ZXJfdmVyc2lvbihk LT5teXNxbCkgPj0gNTA1MDMpIHsKKy0gICAgICAgIC8vIGZvcmNlIHRoZSBjb21tdW5pY2F0aW9u IHRvIGJlIHV0ZjhtYjQgKG9ubHkgdXRmOG1iNCBzdXBwb3J0cyA0LWJ5dGUgY2hhcmFjdGVycykK Ky0gICAgICAgIG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQtPm15c3FsLCAidXRmOG1iNCIpOwor KyAgICAvLyBmb3JjZSB0aGUgY29tbXVuaWNhdGlvbiB0byBiZSB1dGY4bWI0IChvbmx5IHV0Zjht YjQgc3VwcG9ydHMgNC1ieXRlIGNoYXJhY3RlcnMpCisrICAgIGlmIChteXNxbF9zZXRfY2hhcmFj dGVyX3NldChkLT5teXNxbCwgInV0ZjhtYjQiKSkgeworKyAgICAgICAgLy8gdGhpcyBmYWlsZWQs IHRyeSBmb3JjaW5nIGl0IHRvIHV0ZiAoQk1QIG9ubHkpCisrICAgICAgICBpZiAobXlzcWxfc2V0 X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4IikpCisrICAgICAgICAgICAgcVdhcm5pbmco KSA8PCAiTXlTUUw6IFVuYWJsZSB0byBzZXQgdGhlIGNsaWVudCBjaGFyYWN0ZXIgc2V0IHRvIHV0 ZjguIjsKKyAjaWYgUVRfQ09ORklHKHRleHRjb2RlYykKKy0gICAgICAgIGQtPnRjID0gUVRleHRD b2RlYzo6Y29kZWNGb3JOYW1lKCJVVEYtOCIpOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAg IGQtPnRjID0gY29kZWMoZC0+bXlzcWwpOworICNlbmRpZgorLSAgICB9IGVsc2UKKy0gICAgewor LSAgICAgICAgLy8gZm9yY2UgdGhlIGNvbW11bmljYXRpb24gdG8gYmUgdXRmOAorLSAgICAgICAg bXlzcWxfc2V0X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4Iik7CisrICAgIH0KKyAjaWYg UVRfQ09ORklHKHRleHRjb2RlYykKKy0gICAgICAgIGQtPnRjID0gY29kZWMoZC0+bXlzcWwpOwor KyAgICBlbHNlCisrICAgICAgICBkLT50YyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZSgiVVRG LTgiKTsKKyAjZW5kaWYKKy0gICAgfQorICNlbmRpZiAgLy8gTVlTUUxfVkVSU0lPTl9JRCA+PSA1 MDAwNworIAorICAgICBkLT5wcmVwYXJlZFF1ZXJ5c0VuYWJsZWQgPSBjaGVja1ByZXBhcmVkUXVl cmllcyhkLT5teXNxbCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9pbWFnZXMvcHJpbnQtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9pbWFnZXMvcHJpbnRlci0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZy b20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludC0yNC5wbmcKK3JlbmFtZSB0 byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50ZXItMjQucG5nCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnQtMzIucG5n IGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnRlci0zMi5wbmcK K3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFs b2dzL2ltYWdlcy9wcmludC0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvaW1hZ2VzL3ByaW50ZXItMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1 cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLXNpZGVkLTI0LnBuZyBiL3F0YmFzZS9zcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTI0LnBuZworc2lt aWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv aW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0yNC5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTI0LnBuZworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0zMi5w bmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLWZh Y2luZy0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMzIucG5nCityZW5hbWUgdG8g c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0zMi5wbmcK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3 LXBhZ2UtbXVsdGktMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvdmlldy1wYWdlcy1vdmVydmlldy0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVu YW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2UtbXVsdGkt MjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBh Z2VzLW92ZXJ2aWV3LTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTMyLnBuZworc2ltaWxh cml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1h Z2VzL3ZpZXctcGFnZS1tdWx0aS0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW9uZS0yNC5wbmcg Yi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLXNpbmds ZS0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3Vw cG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25lLTI0LnBuZworcmVuYW1lIHRvIHNyYy9w cmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMjQucG5nCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdl LW9uZS0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3 LXBhZ2VzLXNpbmdsZS0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20g c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25lLTMyLnBuZworcmVu YW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUt MzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvZml0LXBhZ2UtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvem9vbS1maXQtcGFnZS0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZy b20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFnZS0yNC5wbmcKK3JlbmFt ZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXBhZ2UtMjQucG5n CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0 LXBhZ2UtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9v bS1maXQtcGFnZS0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3Jj L3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFnZS0zMi5wbmcKK3JlbmFtZSB0byBz cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXBhZ2UtMzIucG5nCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXdpZHRo LTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0 LXdpZHRoLTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC13aWR0aC0yNC5wbmcKK3JlbmFtZSB0byBzcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXdpZHRoLTI0LnBuZworZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC13aWR0aC0z Mi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC13 aWR0aC0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtd2lkdGgtMzIucG5nCityZW5hbWUgdG8gc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC13aWR0aC0zMi5wbmcKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdlc2V0dXBkaWFsb2dfdW5p eC5jcHAgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdlc2V0dXBkaWFsb2df dW5peC5jcHAKK2luZGV4IDc4ZTViOGQxZWYuLjJhMjg1MTY3MTkgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdlc2V0dXBkaWFsb2dfdW5peC5jcHAKKysr KyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXBhZ2VzZXR1cGRpYWxvZ191bml4 LmNwcAorQEAgLTUzMiw2ICs1MzIsNyBAQCB2b2lkIFFQYWdlU2V0dXBXaWRnZXQ6OnVwZGF0ZVdp ZGdldCgpCisgdm9pZCBRUGFnZVNldHVwV2lkZ2V0OjpzZXR1cFByaW50ZXIoKSBjb25zdAorIHsK KyAgICAgbV9wcmludGVyLT5zZXRQYWdlTGF5b3V0KG1fcGFnZUxheW91dCk7CisrICAgIG1fcHJp bnRlci0+c2V0UGFnZU9yaWVudGF0aW9uKG1fcGFnZUxheW91dC5vcmllbnRhdGlvbigpKTsKKyAj aWYgUVRfQ09ORklHKGN1cHMpCisgICAgIFFDVVBTU3VwcG9ydDo6UGFnZXNQZXJTaGVldCBwYWdl c1BlclNoZWV0ID0gcXZhcmlhbnRfY2FzdDxRQ1VQU1N1cHBvcnQ6OlBhZ2VzUGVyU2hlZXQ+KG1f dWkucGFnZXNQZXJTaGVldENvbWJvLT5jdXJyZW50RGF0YSgpCisgKTsKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZy5xcmMgYi9xdGJhc2Uv c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZy5xcmMKK2luZGV4IDVhNTc5YmFh NTUuLjEwYjhlMWQzNDEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFs b2dzL3FwcmludGRpYWxvZy5xcmMKKysrKyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvcXByaW50ZGlhbG9nLnFyYworQEAgLTEsOSArMSw5IEBACisgPCFET0NUWVBFIFJDQz48UkND IHZlcnNpb249IjEuMCI+CisgPHFyZXNvdXJjZSBwcmVmaXg9Ii9xdC1wcm9qZWN0Lm9yZy9kaWFs b2dzL3FwcmludHByZXZpZXdkaWFsb2ciPgorLTxmaWxlPmltYWdlcy9maXQtcGFnZS0yNC5wbmc8 L2ZpbGU+CistPGZpbGU+aW1hZ2VzL2ZpdC1wYWdlLTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFn ZXMvZml0LXdpZHRoLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvZml0LXdpZHRoLTMyLnBu ZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvem9vbS1maXQtcGFnZS0yNC5wbmc8L2ZpbGU+CisrPGZp bGU+aW1hZ2VzL3pvb20tZml0LXBhZ2UtMzIucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy96b29t LWZpdC13aWR0aC0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3pvb20tZml0LXdpZHRoLTMy LnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvZ28tZmlyc3QtMjQucG5nPC9maWxlPgorIDxmaWxl PmltYWdlcy9nby1maXJzdC0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL2dvLWxhc3QtMjQu cG5nPC9maWxlPgorQEAgLTE4LDE0ICsxOCwxNCBAQAorIDxmaWxlPmltYWdlcy9sYXlvdXQtcG9y dHJhaXQtMzIucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy9wYWdlLXNldHVwLTI0LnBuZzwvZmls ZT4KKyA8ZmlsZT5pbWFnZXMvcGFnZS1zZXR1cC0zMi5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2Vz L3ByaW50LTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvcHJpbnQtMzIucG5nPC9maWxlPgor LTxmaWxlPmltYWdlcy92aWV3LXBhZ2UtbXVsdGktMjQucG5nPC9maWxlPgorLTxmaWxlPmltYWdl cy92aWV3LXBhZ2UtbXVsdGktMzIucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2Ut b25lLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLW9uZS0zMi5wbmc8L2Zp bGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0yNC5wbmc8L2ZpbGU+CistPGZpbGU+ aW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ByaW50 ZXItMjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy9wcmludGVyLTMyLnBuZzwvZmlsZT4KKys8 ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1h Z2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMzIucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92aWV3 LXBhZ2VzLXNpbmdsZS0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMtc2lu Z2xlLTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1mYWNpbmctMjQucG5n PC9maWxlPgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0zMi5wbmc8L2ZpbGU+Cisg PGZpbGU+aW1hZ2VzL3pvb20taW4tMjQucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy96b29tLWlu LTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvem9vbS1vdXQtMjQucG5nPC9maWxlPgorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nX3Vu aXguY3BwIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2dfdW5p eC5jcHAKK2luZGV4IGM1Yjg0NWY0ZWMuLjVhNWJhMWQwYTggMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZ191bml4LmNwcAorKysrIGIvcXRi YXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2dfdW5peC5jcHAKK0BAIC03 MDIsMTMgKzcwMiwxNCBAQCB2b2lkIFFQcmludERpYWxvZ1ByaXZhdGU6OnNlbGVjdFByaW50ZXIo Y29uc3QgUVByaW50ZXI6Ok91dHB1dEZvcm1hdCBvdXRwdXRGb3JtYQorICAgICAgICAgZWxzZQor ICAgICAgICAgICAgIG9wdGlvbnMuZ3JheXNjYWxlLT5zZXRDaGVja2VkKHRydWUpOworIAorLSAg ICAgICAgLy8ga2VlcCBkdXBsZXggdmFsdWUgZXhwbGljaXRseSBzZXQgYnkgdXNlciwgaWYgYW55 LCBhbmQgc2VsZWN0ZWQgcHJpbnRlciBzdXBwb3J0cyBpdDsKKy0gICAgICAgIC8vIHVzZSBkZXZp Y2UgZGVmYXVsdCBvdGhlcndpc2UKKysgICAgICAgIC8vIGR1cGxleCBwcmlvcml0aWVzIHRvIGJl IGFzIGZvbGxvd3M6CisrICAgICAgICAvLyAxKSBhIHVzZXItc2VsZWN0ZWQgZHVwbGV4IHZhbHVl IGluIHRoZSBkaWFsb2cgaGFzIGhpZ2hlc3QgcHJvcml0eQorKyAgICAgICAgLy8gMikgZHVwbGV4 IHZhbHVlIHNldCBpbiB0aGUgUVByaW50ZXIKKyAgICAgICAgIFFQcmludDo6RHVwbGV4TW9kZSBk dXBsZXg7CisgICAgICAgICBpZiAoZXhwbGljaXREdXBsZXhNb2RlICE9IFFQcmludDo6RHVwbGV4 QXV0byAmJiBzdXBwb3J0ZWREdXBsZXhNb2RlLmNvbnRhaW5zKGV4cGxpY2l0RHVwbGV4TW9kZSkp CisgICAgICAgICAgICAgZHVwbGV4ID0gZXhwbGljaXREdXBsZXhNb2RlOworICAgICAgICAgZWxz ZQorLSAgICAgICAgICAgIGR1cGxleCA9IHRvcC0+ZC0+bV9jdXJyZW50UHJpbnREZXZpY2UuZGVm YXVsdER1cGxleE1vZGUoKTsKKysgICAgICAgICAgICBkdXBsZXggPSBzdGF0aWNfY2FzdDxRUHJp bnQ6OkR1cGxleE1vZGU+KHAtPmR1cGxleCgpKTsKKyAgICAgICAgIHN3aXRjaCAoZHVwbGV4KSB7 CisgICAgICAgICBjYXNlIFFQcmludDo6RHVwbGV4Tm9uZToKKyAgICAgICAgICAgICBvcHRpb25z Lm5vRHVwbGV4LT5zZXRDaGVja2VkKHRydWUpOyBicmVhazsKK0BAIC0xMjQyLDEwICsxMjQzLDEw IEBAIHZvaWQgUVVuaXhQcmludFdpZGdldFByaXZhdGU6Ol9xX3ByaW50ZXJDaGFuZ2VkKGludCBp bmRleCkKKyAgICAgICAgICAgICBRU3RyaW5nIGZpbGVuYW1lID0gd2lkZ2V0LmZpbGVuYW1lLT50 ZXh0KCk7CisgICAgICAgICAgICAgd2lkZ2V0LmZpbGVuYW1lLT5zZXRUZXh0KGZpbGVuYW1lKTsK KyAgICAgICAgICAgICB3aWRnZXQubE91dHB1dC0+c2V0RW5hYmxlZCh0cnVlKTsKKy0gICAgICAg ICAgICBpZiAob3B0aW9uc1BhbmUpCistICAgICAgICAgICAgICAgIG9wdGlvbnNQYW5lLT5zZWxl Y3RQcmludGVyKFFQcmludGVyOjpQZGZGb3JtYXQpOworICAgICAgICAgICAgIHByaW50ZXItPnNl dE91dHB1dEZvcm1hdChRUHJpbnRlcjo6UGRmRm9ybWF0KTsKKyAgICAgICAgICAgICBtX2N1cnJl bnRQcmludERldmljZSA9IFFQcmludERldmljZSgpOworKyAgICAgICAgICAgIGlmIChvcHRpb25z UGFuZSkKKysgICAgICAgICAgICAgICAgb3B0aW9uc1BhbmUtPnNlbGVjdFByaW50ZXIoUVByaW50 ZXI6OlBkZkZvcm1hdCk7CisgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgfQorICAgICB9 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRwcmV2 aWV3ZGlhbG9nLmNwcCBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50cHJl dmlld2RpYWxvZy5jcHAKK2luZGV4IDM5NTc1ZDVmNTcuLjIzYjdlODk1MzggMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFs b2cuY3BwCitAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgUVByaW50UHJldmlld0RpYWxvZ1ByaXZh dGU6OmluaXQoUVByaW50ZXIgKl9wcmludGVyKQorIHN0YXRpYyBpbmxpbmUgdm9pZCBxdF9zZXR1 cEFjdGlvbkljb24oUUFjdGlvbiAqYWN0aW9uLCBRTGF0aW4xU3RyaW5nIG5hbWUpCisgeworICAg ICBRTGF0aW4xU3RyaW5nIGltYWdlUHJlZml4KCI6L3F0LXByb2plY3Qub3JnL2RpYWxvZ3MvcXBy aW50cHJldmlld2RpYWxvZy9pbWFnZXMvIik7CistICAgIFFJY29uIGljb247CisrICAgIFFJY29u IGljb24gPSBRSWNvbjo6ZnJvbVRoZW1lKG5hbWUpOworICAgICBpY29uLmFkZEZpbGUoaW1hZ2VQ cmVmaXggKyBuYW1lICsgUUxhdGluMVN0cmluZygiLTI0LnBuZyIpLCBRU2l6ZSgyNCwgMjQpKTsK KyAgICAgaWNvbi5hZGRGaWxlKGltYWdlUHJlZml4ICsgbmFtZSArIFFMYXRpbjFTdHJpbmcoIi0z Mi5wbmciKSwgUVNpemUoMzIsIDMyKSk7CisgICAgIGFjdGlvbi0+c2V0SWNvbihpY29uKTsKK0BA IC0zODMsOCArMzgzLDggQEAgdm9pZCBRUHJpbnRQcmV2aWV3RGlhbG9nUHJpdmF0ZTo6c2V0dXBB Y3Rpb25zKCkKKyAgICAgZml0UGFnZUFjdGlvbi0+c2V0T2JqZWN0TmFtZShRTGF0aW4xU3RyaW5n KCJmaXRQYWdlQWN0aW9uIikpOworICAgICBmaXRXaWR0aEFjdGlvbi0+c2V0Q2hlY2thYmxlKHRy dWUpOworICAgICBmaXRQYWdlQWN0aW9uLT5zZXRDaGVja2FibGUodHJ1ZSk7CistICAgIHF0X3Nl dHVwQWN0aW9uSWNvbihmaXRXaWR0aEFjdGlvbiwgUUxhdGluMVN0cmluZygiZml0LXdpZHRoIikp OworLSAgICBxdF9zZXR1cEFjdGlvbkljb24oZml0UGFnZUFjdGlvbiwgUUxhdGluMVN0cmluZygi Zml0LXBhZ2UiKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihmaXRXaWR0aEFjdGlvbiwgUUxh dGluMVN0cmluZygiem9vbS1maXQtd2lkdGgiKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihm aXRQYWdlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ6b29tLWZpdC1wYWdlIikpOworICAgICBRT2Jq ZWN0Ojpjb25uZWN0KGZpdEdyb3VwLCBTSUdOQUwodHJpZ2dlcmVkKFFBY3Rpb24qKSksIHEsIFNM T1QoX3FfZml0KFFBY3Rpb24qKSkpOworIAorICAgICAvLyBab29tCitAQCAtNDEwLDkgKzQxMCw5 IEBAIHZvaWQgUVByaW50UHJldmlld0RpYWxvZ1ByaXZhdGU6OnNldHVwQWN0aW9ucygpCisgICAg IHNpbmdsZU1vZGVBY3Rpb24gPSBtb2RlR3JvdXAtPmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9u Ojp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdEaWFsb2ciLCAiU2hvdyBzaW5nbGUgcGFnZSIpKTsK KyAgICAgZmFjaW5nTW9kZUFjdGlvbiA9IG1vZGVHcm91cC0+YWRkQWN0aW9uKFFDb3JlQXBwbGlj YXRpb246OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxvZyIsICJTaG93IGZhY2luZyBwYWdl cyIpKTsKKyAgICAgb3ZlcnZpZXdNb2RlQWN0aW9uID0gbW9kZUdyb3VwLT5hZGRBY3Rpb24oUUNv cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwgIlNob3cgb3Zl cnZpZXcgb2YgYWxsIHBhZ2VzIikpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24oc2luZ2xlTW9k ZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlLW9uZSIpKTsKKy0gICAgcXRfc2V0dXBB Y3Rpb25JY29uKGZhY2luZ01vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZS1zaWRl ZCIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKG92ZXJ2aWV3TW9kZUFjdGlvbiwgUUxhdGlu MVN0cmluZygidmlldy1wYWdlLW11bHRpIikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24oc2lu Z2xlTW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlcy1zaW5nbGUiKSk7CisrICAg IHF0X3NldHVwQWN0aW9uSWNvbihmYWNpbmdNb2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ2aWV3 LXBhZ2VzLWZhY2luZyIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25JY29uKG92ZXJ2aWV3TW9kZUFj dGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlcy1vdmVydmlldyIpKTsKKyAgICAgc2luZ2xl TW9kZUFjdGlvbi0+c2V0T2JqZWN0TmFtZShRTGF0aW4xU3RyaW5nKCJzaW5nbGVNb2RlQWN0aW9u IikpOworICAgICBmYWNpbmdNb2RlQWN0aW9uLT5zZXRPYmplY3ROYW1lKFFMYXRpbjFTdHJpbmco ImZhY2luZ01vZGVBY3Rpb24iKSk7CisgICAgIG92ZXJ2aWV3TW9kZUFjdGlvbi0+c2V0T2JqZWN0 TmFtZShRTGF0aW4xU3RyaW5nKCJvdmVydmlld01vZGVBY3Rpb24iKSk7CitAQCAtNDI2LDcgKzQy Niw3IEBAIHZvaWQgUVByaW50UHJldmlld0RpYWxvZ1ByaXZhdGU6OnNldHVwQWN0aW9ucygpCisg ICAgIHByaW50ZXJHcm91cCA9IG5ldyBRQWN0aW9uR3JvdXAocSk7CisgICAgIHByaW50QWN0aW9u ID0gcHJpbnRlckdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJR UHJpbnRQcmV2aWV3RGlhbG9nIiwgIlByaW50IikpOworICAgICBwYWdlU2V0dXBBY3Rpb24gPSBw cmludGVyR3JvdXAtPmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFQcmlu dFByZXZpZXdEaWFsb2ciLCAiUGFnZSBzZXR1cCIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29u KHByaW50QWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJwcmludCIpKTsKKysgICAgcXRfc2V0dXBBY3Rp b25JY29uKHByaW50QWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJwcmludGVyIikpOworICAgICBxdF9z ZXR1cEFjdGlvbkljb24ocGFnZVNldHVwQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJwYWdlLXNldHVw IikpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHByaW50QWN0aW9uLCBTSUdOQUwodHJpZ2dlcmVk KGJvb2wpKSwgcSwgU0xPVChfcV9wcmludCgpKSk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QocGFn ZVNldHVwQWN0aW9uLCBTSUdOQUwodHJpZ2dlcmVkKGJvb2wpKSwgcSwgU0xPVChfcV9wYWdlU2V0 dXAoKSkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvc3FsL2tlcm5lbC9xc3FscXVlcnkuY3Bw IGIvcXRiYXNlL3NyYy9zcWwva2VybmVsL3FzcWxxdWVyeS5jcHAKK2luZGV4IDMyYzYxNjZjNzku LjYwYWZlZjEwYzMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5 LmNwcAorKysrIGIvcXRiYXNlL3NyYy9zcWwva2VybmVsL3FzcWxxdWVyeS5jcHAKK0BAIC0xLDYg KzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKy0qKiBDb3B5cmlnaHQgKEMpIDIw MTYgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgUXQgQ29t cGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoq CisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0U3FsIG1vZHVsZSBvZiB0aGUgUXQgVG9v bGtpdC4KK0BAIC0zNzcsNiArMzc3LDEwIEBAIGJvb2wgUVNxbFF1ZXJ5OjpleGVjKGNvbnN0IFFT dHJpbmcmIHF1ZXJ5KQorICAgICBRRWxhcHNlZFRpbWVyIHQ7CisgICAgIHQuc3RhcnQoKTsKKyAj ZW5kaWYKKysgICAgaWYgKCFkcml2ZXIoKSkgeworKyAgICAgICAgcVdhcm5pbmcoIlFTcWxRdWVy eTo6ZXhlYzogY2FsbGVkIGJlZm9yZSBkcml2ZXIgaGFzIGJlZW4gc2V0IHVwIik7CisrICAgICAg ICByZXR1cm4gZmFsc2U7CisrICAgIH0KKyAgICAgaWYgKGQtPnJlZi5sb2FkUmVsYXhlZCgpICE9 IDEpIHsKKyAgICAgICAgIGJvb2wgZm8gPSBpc0ZvcndhcmRPbmx5KCk7CisgICAgICAgICAqdGhp cyA9IFFTcWxRdWVyeShkcml2ZXIoKS0+Y3JlYXRlUmVzdWx0KCkpOworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwIGIvcXRiYXNlL3Ny Yy90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKK2luZGV4IDhlZmI5YzUzZDQu LmNlMDYyZjY2ZDcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFic3RyYWN0aXRl bW1vZGVsdGVzdGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy90ZXN0bGliL3FhYnN0cmFjdGl0ZW1t b2RlbHRlc3Rlci5jcHAKK0BAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBRQWJzdHJhY3RJdGVtTW9k ZWxUZXN0ZXJQcml2YXRlOjpwYXJlbnQoKQorIAorICAgICAvLyBDb21tb24gZXJyb3IgdGVzdCAj MiwgbWFrZSBzdXJlIHRoYXQgYSBzZWNvbmQgbGV2ZWwgaW5kZXggaGFzIGEgcGFyZW50CisgICAg IC8vIHRoYXQgaXMgdGhlIGZpcnN0IGxldmVsIGluZGV4LgorLSAgICBpZiAobW9kZWwtPnJvd0Nv dW50KHRvcEluZGV4KSA+IDApIHsKKysgICAgaWYgKG1vZGVsLT5yb3dDb3VudCh0b3BJbmRleCkg PiAwICYmIG1vZGVsLT5jb2x1bW5Db3VudCh0b3BJbmRleCkgPiAwKSB7CisgICAgICAgICBRTW9k ZWxJbmRleCBjaGlsZEluZGV4ID0gbW9kZWwtPmluZGV4KDAsIDAsIHRvcEluZGV4KTsKKyAgICAg ICAgIE1PREVMVEVTVEVSX1ZFUklGWShjaGlsZEluZGV4LmlzVmFsaWQoKSk7CisgICAgICAgICBN T0RFTFRFU1RFUl9DT01QQVJFKG1vZGVsLT5wYXJlbnQoY2hpbGRJbmRleCksIHRvcEluZGV4KTsK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFzY2lpa2V5LmNwcCBiL3F0YmFzZS9z cmMvdGVzdGxpYi9xYXNjaWlrZXkuY3BwCitpbmRleCA5YTMwOGRhMmJjLi45MzQ5OGIyNTZmIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy90ZXN0bGliL3Fhc2NpaWtleS5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvdGVzdGxpYi9xYXNjaWlrZXkuY3BwCitAQCAtNDk4LDYgKzQ5OCwxMSBAQCBjaGFyIFFU ZXN0OjprZXlUb0FzY2lpKFF0OjpLZXkga2V5KQorICAgICBjYXNlIFF0OjpLZXlfTGF1bmNoRSA6 IHJldHVybiAwOyAvLyA9IDB4MTBiMCwKKyAgICAgY2FzZSBRdDo6S2V5X0xhdW5jaEYgOiByZXR1 cm4gMDsgLy8gPSAweDEwYjEsCisgCisrICAgIC8vIEtleXBhZCBuYXZpZ2F0aW9uIGtleXMKKysg ICAgY2FzZSBRdDo6S2V5X1NlbGVjdCA6IHJldHVybiAwOyAvLyA9IDB4MDEwMTAwMDAKKysgICAg Y2FzZSBRdDo6S2V5X1llcyA6IHJldHVybiAwOyAvLyA9IDB4MDEwMTAwMDEKKysgICAgY2FzZSBR dDo6S2V5X05vIDogcmV0dXJuIDA7IC8vID0gMHgwMTAxMDAwMgorKworICAgICBkZWZhdWx0OiBR VEVTVF9BU1NFUlQoZmFsc2UpOyByZXR1cm4gMDsKKyAgICAgfQorIH0KK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3BwIGIvcXRiYXNlL3NyYy90ZXN0bGliL3F0 ZXN0cmVzdWx0LmNwcAoraW5kZXggODgwMjhhYWM2ZS4uMmU4OTkzMDc3NiAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvdGVzdGxpYi9xdGVzdHJlc3VsdC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvdGVz dGxpYi9xdGVzdHJlc3VsdC5jcHAKK0BAIC0yNTEsNyArMjUxLDggQEAgYm9vbCBRVGVzdFJlc3Vs dDo6dmVyaWZ5KGJvb2wgc3RhdGVtZW50LCBjb25zdCBjaGFyICpzdGF0ZW1lbnRTdHIsCisgewor ICAgICBRVEVTVF9BU1NFUlQoc3RhdGVtZW50U3RyKTsKKyAKKy0gICAgY2hhciBtc2dbMTAyNF0g PSB7J1wwJ307CisrICAgIGNoYXIgbXNnWzEwMjRdOworKyAgICBtc2dbMF0gPSAnXDAnOworIAor ICAgICBpZiAoUVRlc3RMb2c6OnZlcmJvc2VMZXZlbCgpID49IDIpIHsKKyAgICAgICAgIHFzbnBy aW50Zihtc2csIDEwMjQsICJRVkVSSUZZKCVzKSIsIHN0YXRlbWVudFN0cik7CitAQCAtMzA5LDcg KzMxMCw4IEBAIHN0YXRpYyBib29sIGNvbXBhcmVIZWxwZXIoYm9vbCBzdWNjZXNzLCBjb25zdCBj aGFyICpmYWlsdXJlTXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNWYWx1 ZXMgPSB0cnVlKQorIHsKKyAgICAgY29uc3Qgc2l6ZV90IG1heE1zZ0xlbiA9IDEwMjQ7CistICAg IGNoYXIgbXNnW21heE1zZ0xlbl0gPSB7J1wwJ307CisrICAgIGNoYXIgbXNnW21heE1zZ0xlbl07 CisrICAgIG1zZ1swXSA9ICdcMCc7CisgCisgICAgIFFURVNUX0FTU0VSVChleHBlY3RlZCk7Cisg ICAgIFFURVNUX0FTU0VSVChhY3R1YWwpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0 cy9kaWFsb2dzL3Fjb2xvcmRpYWxvZy5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvZGlhbG9ncy9x Y29sb3JkaWFsb2cuY3BwCitpbmRleCA0MjQ3NzMxMjc1Li5jYjMyNWJlODVjIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9nLmNwcAorKysrIGIvcXRi YXNlL3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9nLmNwcAorQEAgLTc4LDcgKzc4LDEw IEBACisgI2luY2x1ZGUgInF3aW5kb3cuaCIKKyAKKyAjaW5jbHVkZSAicHJpdmF0ZS9xZGlhbG9n X3AuaCIKKysjaW5jbHVkZSAicHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oIgorIAorKyNpbmNs dWRlIDxxcGEvcXBsYXRmb3Jtc2VydmljZXMuaD4KKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybWlu dGVncmF0aW9uLmg+CisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKyAKKyBRVF9CRUdJTl9OQU1FU1BB Q0UKK0BAIC0xNjExLDYgKzE2MTQsMjAgQEAgdm9pZCBRQ29sb3JEaWFsb2dQcml2YXRlOjpfcV9u ZXdTdGFuZGFyZChpbnQgciwgaW50IGMpCisgdm9pZCBRQ29sb3JEaWFsb2dQcml2YXRlOjpfcV9w aWNrU2NyZWVuQ29sb3IoKQorIHsKKyAgICAgUV9RKFFDb2xvckRpYWxvZyk7CisrCisrICAgIGF1 dG8gKnBsYXRmb3JtU2VydmljZXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUlu dGVncmF0aW9uKCktPnNlcnZpY2VzKCk7CisrICAgIGlmIChwbGF0Zm9ybVNlcnZpY2VzLT5oYXND YXBhYmlsaXR5KFFQbGF0Zm9ybVNlcnZpY2VzOjpDYXBhYmlsaXR5OjpDb2xvclBpY2tpbmcpKSB7 CisrICAgICAgICBpZiAoYXV0byAqY29sb3JQaWNrZXIgPSBwbGF0Zm9ybVNlcnZpY2VzLT5jb2xv clBpY2tlcihxLT53aW5kb3dIYW5kbGUoKSkpIHsKKysgICAgICAgICAgICBxLT5jb25uZWN0KGNv bG9yUGlja2VyLCAmUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyOjpjb2xvclBpY2tlZCwgcSwK KysgICAgICAgICAgICAgICAgICAgICAgIFtxLCBjb2xvclBpY2tlcl0oY29uc3QgUUNvbG9yICZj b2xvcikgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yUGlja2VyLT5kZWxldGVM YXRlcigpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHEtPnNldEN1cnJlbnRDb2xvcihj b2xvcik7CisrICAgICAgICAgICAgICAgICAgICAgICB9KTsKKysgICAgICAgICAgICBjb2xvclBp Y2tlci0+cGlja0NvbG9yKCk7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAg ICB9CisrCisgICAgIGlmICghY29sb3JQaWNraW5nRXZlbnRGaWx0ZXIpCisgICAgICAgICBjb2xv clBpY2tpbmdFdmVudEZpbHRlciA9IG5ldyBRQ29sb3JQaWNraW5nRXZlbnRGaWx0ZXIodGhpcywg cSk7CisgICAgIHEtPmluc3RhbGxFdmVudEZpbHRlcihjb2xvclBpY2tpbmdFdmVudEZpbHRlcik7 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xYWJzdHJhY3RpdGVt ZGVsZWdhdGUuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xYWJzdHJhY3RpdGVt ZGVsZWdhdGUuY3BwCitpbmRleCBlMTIwODE3ZWRjLi44ZWEzNmI1NDI3IDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xYWJzdHJhY3RpdGVtZGVsZWdhdGUuY3BwCisr KysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FhYnN0cmFjdGl0ZW1kZWxlZ2F0ZS5j cHAKK0BAIC00MDAsMTIgKzQwMCw3IEBAIGJvb2wgUUFic3RyYWN0SXRlbURlbGVnYXRlOjpoZWxw RXZlbnQoUUhlbHBFdmVudCAqZXZlbnQsCisgICAgICAgICBjb25zdCBRU3RyaW5nIHRvb2x0aXAg PSBpbmRleC5pc1ZhbGlkKCkgPworICAgICAgICAgICAgICAgZC0+dGV4dEZvclJvbGUoUXQ6OlRv b2xUaXBSb2xlLCBpbmRleC5kYXRhKFF0OjpUb29sVGlwUm9sZSksIG9wdGlvbi5sb2NhbGUsIHBy ZWNpc2lvbikgOgorICAgICAgICAgICAgICAgUVN0cmluZygpOworLSAgICAgICAgUVJlY3QgcmVj dDsKKy0gICAgICAgIGlmIChpbmRleC5pc1ZhbGlkKCkpIHsKKy0gICAgICAgICAgICBjb25zdCBR UmVjdCByID0gdmlldy0+dmlzdWFsUmVjdChpbmRleCk7CistICAgICAgICAgICAgcmVjdCA9IFFS ZWN0KHZpZXctPm1hcFRvR2xvYmFsKHIudG9wTGVmdCgpKSwgci5zaXplKCkpOworLSAgICAgICAg fQorLSAgICAgICAgUVRvb2xUaXA6OnNob3dUZXh0KGhlLT5nbG9iYWxQb3MoKSwgdG9vbHRpcCwg dmlldywgcmVjdCk7CisrICAgICAgICBRVG9vbFRpcDo6c2hvd1RleHQoaGUtPmdsb2JhbFBvcygp LCB0b29sdGlwLCB2aWV3LT52aWV3cG9ydCgpLCBvcHRpb24ucmVjdCk7CisgICAgICAgICBldmVu dC0+c2V0QWNjZXB0ZWQoIXRvb2x0aXAuaXNFbXB0eSgpKTsKKyAgICAgICAgIGJyZWFrOworICAg ICAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWxpc3R2 aWV3LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWxpc3R2aWV3LmNwcAoraW5k ZXggMmIzNDQ3NjY0Mi4uZWViZmFhMDMwZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0 cy9pdGVtdmlld3MvcWxpc3R2aWV3LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12 aWV3cy9xbGlzdHZpZXcuY3BwCitAQCAtMzM4Niw2ICszMzg2LDcgQEAgdm9pZCBRSWNvbk1vZGVW aWV3QmFzZTo6dXBkYXRlQ29udGVudHNTaXplKCkKKyAqLworIHZvaWQgUUxpc3RWaWV3OjpjdXJy ZW50Q2hhbmdlZChjb25zdCBRTW9kZWxJbmRleCAmY3VycmVudCwgY29uc3QgUU1vZGVsSW5kZXgg JnByZXZpb3VzKQorIHsKKysgICAgUUFic3RyYWN0SXRlbVZpZXc6OmN1cnJlbnRDaGFuZ2VkKGN1 cnJlbnQsIHByZXZpb3VzKTsKKyAjaWZuZGVmIFFUX05PX0FDQ0VTU0lCSUxJVFkKKyAgICAgaWYg KFFBY2Nlc3NpYmxlOjppc0FjdGl2ZSgpKSB7CisgICAgICAgICBpZiAoY3VycmVudC5pc1ZhbGlk KCkpIHsKK0BAIC0zMzk2LDcgKzMzOTcsNiBAQCB2b2lkIFFMaXN0Vmlldzo6Y3VycmVudENoYW5n ZWQoY29uc3QgUU1vZGVsSW5kZXggJmN1cnJlbnQsIGNvbnN0IFFNb2RlbEluZGV4ICZwcgorICAg ICAgICAgfQorICAgICB9CisgI2VuZGlmCistICAgIFFBYnN0cmFjdEl0ZW1WaWV3OjpjdXJyZW50 Q2hhbmdlZChjdXJyZW50LCBwcmV2aW91cyk7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy5jcHAgYi9xdGJhc2Uvc3JjL3dp ZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcuY3BwCitpbmRleCA5MzRhYzU4MWIyLi5mNzliYjI0 MjQ5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3 LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3LmNwcAor QEAgLTEwMTMsNiArMTAxMyw3IEBAIHZvaWQgUVRhYmxlVmlld1ByaXZhdGU6OmRyYXdDZWxsKFFQ YWludGVyICpwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25WaWV3SXRlbSAmCisgaW50IFFUYWJs ZVZpZXdQcml2YXRlOjp3aWR0aEhpbnRGb3JJbmRleChjb25zdCBRTW9kZWxJbmRleCAmaW5kZXgs IGludCBoaW50LCBjb25zdCBRU3R5bGVPcHRpb25WaWV3SXRlbSAmb3B0aW9uKSBjb25zdAorIHsK KyAgICAgUV9RKGNvbnN0IFFUYWJsZVZpZXcpOworKyAgICBjb25zdCBpbnQgb2xkSGludCA9IGhp bnQ7CisgICAgIFFXaWRnZXQgKmVkaXRvciA9IGVkaXRvckZvckluZGV4KGluZGV4KS53aWRnZXQu ZGF0YSgpOworICAgICBpZiAoZWRpdG9yICYmIHBlcnNpc3RlbnQuY29udGFpbnMoZWRpdG9yKSkg eworICAgICAgICAgaGludCA9IHFNYXgoaGludCwgZWRpdG9yLT5zaXplSGludCgpLndpZHRoKCkp OworQEAgLTEwMjEsNiArMTAyMiwxNyBAQCBpbnQgUVRhYmxlVmlld1ByaXZhdGU6OndpZHRoSGlu dEZvckluZGV4KGNvbnN0IFFNb2RlbEluZGV4ICZpbmRleCwgaW50IGhpbnQsIGNvbgorICAgICAg ICAgaGludCA9IHFCb3VuZChtaW4sIGhpbnQsIG1heCk7CisgICAgIH0KKyAgICAgaGludCA9IHFN YXgoaGludCwgcS0+aXRlbURlbGVnYXRlKGluZGV4KS0+c2l6ZUhpbnQob3B0aW9uLCBpbmRleCku d2lkdGgoKSk7CisrCisrICAgIGlmIChoYXNTcGFucygpKSB7CisrICAgICAgICBhdXRvIHNwYW4g PSBzcGFucy5zcGFuQXQoaW5kZXguY29sdW1uKCksIGluZGV4LnJvdygpKTsKKysgICAgICAgIGlm IChzcGFuICYmIHNwYW4tPm1fbGVmdCA9PSBpbmRleC5jb2x1bW4oKSAmJiBzcGFuLT5tX3RvcCA9 PSBpbmRleC5yb3coKSkgeworKyAgICAgICAgICAgIC8vIHNwYW5zIGFyZSBzY3Jld2VkIHVwIHdo ZW4gc2VjdGlvbnMgYXJlIG1vdmVkCisrICAgICAgICAgICAgY29uc3QgYXV0byBsZWZ0ID0gbG9n aWNhbENvbHVtbihzcGFuLT5tX2xlZnQpOworKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBp IDw9IHNwYW4tPndpZHRoKCk7ICsraSkKKysgICAgICAgICAgICAgICBoaW50IC09IHEtPmNvbHVt bldpZHRoKHZpc3VhbENvbHVtbihsZWZ0ICsgaSkpOworKyAgICAgICAgfQorKyAgICAgICAgaGlu dCA9IHN0ZDo6bWF4KGhpbnQsIG9sZEhpbnQpOworKyAgICB9CisgICAgIHJldHVybiBoaW50Owor IH0KKyAKK0BAIC0xMDUzLDYgKzEwNjUsMTEgQEAgaW50IFFUYWJsZVZpZXdQcml2YXRlOjpoZWln aHRIaW50Rm9ySW5kZXgoY29uc3QgUU1vZGVsSW5kZXggJmluZGV4LCBpbnQgaGludCwgUVMKKyAg ICAgICAgIG9wdGlvbi5yZWN0LnNldEhlaWdodChoZWlnaHQpOworICAgICAgICAgb3B0aW9uLnJl Y3Quc2V0WChxLT5jb2x1bW5WaWV3cG9ydFBvc2l0aW9uKGluZGV4LmNvbHVtbigpKSk7CisgICAg ICAgICBvcHRpb24ucmVjdC5zZXRXaWR0aChxLT5jb2x1bW5XaWR0aChpbmRleC5jb2x1bW4oKSkp OworKyAgICAgICAgaWYgKGhhc1NwYW5zKCkpIHsKKysgICAgICAgICAgICBhdXRvIHNwYW4gPSBz cGFucy5zcGFuQXQoaW5kZXguY29sdW1uKCksIGluZGV4LnJvdygpKTsKKysgICAgICAgICAgICBp ZiAoc3BhbiAmJiBzcGFuLT5tX2xlZnQgPT0gaW5kZXguY29sdW1uKCkgJiYgc3Bhbi0+bV90b3Ag PT0gaW5kZXgucm93KCkpCisrICAgICAgICAgICAgICAgIG9wdGlvbi5yZWN0LnNldFdpZHRoKHN0 ZDo6bWF4KG9wdGlvbi5yZWN0LndpZHRoKCksIHZpc3VhbFNwYW5SZWN0KCpzcGFuKS53aWR0aCgp KSk7CisrICAgICAgICB9CisgICAgICAgICAvLyAxcHggbGVzcyBzcGFjZSB3aGVuIGdyaWQgaXMg c2hvd24gKHNlZSBkcmF3Q2VsbCkKKyAgICAgICAgIGlmIChzaG93R3JpZCkKKyAgICAgICAgICAg ICBvcHRpb24ucmVjdC5zZXRXaWR0aChvcHRpb24ucmVjdC53aWR0aCgpIC0gMSk7CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmggYi9xdGJhc2Uvc3JjL3dp ZGdldHMva2VybmVsL3FhY3Rpb24uaAoraW5kZXggMjU4YTFlYTBhMC4uNzM3YzFlODI4NSAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcWFjdGlvbi5oCisrKysgYi9xdGJh c2Uvc3JjL3dpZGdldHMva2VybmVsL3FhY3Rpb24uaAorQEAgLTgxLDcgKzgxLDcgQEAgY2xhc3Mg UV9XSURHRVRTX0VYUE9SVCBRQWN0aW9uIDogcHVibGljIFFPYmplY3QKKyAgICAgUV9QUk9QRVJU WShNZW51Um9sZSBtZW51Um9sZSBSRUFEIG1lbnVSb2xlIFdSSVRFIHNldE1lbnVSb2xlIE5PVElG WSBjaGFuZ2VkKQorICAgICBRX1BST1BFUlRZKGJvb2wgaWNvblZpc2libGVJbk1lbnUgUkVBRCBp c0ljb25WaXNpYmxlSW5NZW51IFdSSVRFIHNldEljb25WaXNpYmxlSW5NZW51IE5PVElGWSBjaGFu Z2VkKQorICAgICBRX1BST1BFUlRZKGJvb2wgc2hvcnRjdXRWaXNpYmxlSW5Db250ZXh0TWVudSBS RUFEIGlzU2hvcnRjdXRWaXNpYmxlSW5Db250ZXh0TWVudSBXUklURSBzZXRTaG9ydGN1dFZpc2li bGVJbkNvbnRleHRNZW51IE5PVElGWSBjaGFuZ2VkKQorLSAgICBRX1BST1BFUlRZKFByaW9yaXR5 IHByaW9yaXR5IFJFQUQgcHJpb3JpdHkgV1JJVEUgc2V0UHJpb3JpdHkpCisrICAgIFFfUFJPUEVS VFkoUHJpb3JpdHkgcHJpb3JpdHkgUkVBRCBwcmlvcml0eSBXUklURSBzZXRQcmlvcml0eSBOT1RJ RlkgY2hhbmdlZCkKKyAKKyBwdWJsaWM6CisgICAgIC8vIG5vdGUgdGhpcyBpcyBjb3BpZWQgaW50 byBxcGxhdGZvcm1tZW51LmgsIHdoaWNoIG11c3Qgc3RheSBpbiBzeW5jCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0 cy9rZXJuZWwvcXdpZGdldC5jcHAKK2luZGV4IDllYmExZTAwMWUuLjI2ZjZkMjdlMTggMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXQuY3BwCisrKysgYi9xdGJh c2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXQuY3BwCitAQCAtNTI5Niw3ICs1Mjk2LDcgQEAg dm9pZCBRV2lkZ2V0UHJpdmF0ZTo6ZHJhd1dpZGdldChRUGFpbnREZXZpY2UgKnBkZXYsIGNvbnN0 IFFSZWdpb24gJnJnbiwgY29uc3QgUVAKKyAgICAgICAgIFFXaWRnZXRFZmZlY3RTb3VyY2VQcml2 YXRlICpzb3VyY2VkID0gc3RhdGljX2Nhc3Q8UVdpZGdldEVmZmVjdFNvdXJjZVByaXZhdGUgKj4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc291cmNlLT5kX2Z1bmMoKSk7CisgICAgICAgICBpZiAoIXNvdXJjZWQtPmNvbnRleHQpIHsK Ky0gICAgICAgICAgICBjb25zdCBRUmVnaW9uIGVmZmVjdFJnbihyZ24uYm91bmRpbmdSZWN0KCkp OworKyAgICAgICAgICAgIGNvbnN0IFFSZWdpb24gZWZmZWN0UmduKChmbGFncyAmIFVzZUVmZmVj dFJlZ2lvbkJvdW5kcykgPyByZ24uYm91bmRpbmdSZWN0KCkgOiByZ24pOworICAgICAgICAgICAg IFFXaWRnZXRQYWludENvbnRleHQgY29udGV4dChwZGV2LCBlZmZlY3RSZ24sIG9mZnNldCwgZmxh Z3MsIHNoYXJlZFBhaW50ZXIsIHJlcGFpbnRNYW5hZ2VyKTsKKyAgICAgICAgICAgICBzb3VyY2Vk LT5jb250ZXh0ID0gJmNvbnRleHQ7CisgICAgICAgICAgICAgaWYgKCFzaGFyZWRQYWludGVyKSB7 CitAQCAtNTMyOCw2ICs1MzI4LDcgQEAgdm9pZCBRV2lkZ2V0UHJpdmF0ZTo6ZHJhd1dpZGdldChR UGFpbnREZXZpY2UgKnBkZXYsIGNvbnN0IFFSZWdpb24gJnJnbiwgY29uc3QgUVAKKyAgICAgICAg IH0KKyAgICAgfQorICNlbmRpZiAvLyBRVF9DT05GSUcoZ3JhcGhpY3NlZmZlY3QpCisrICAgIGZs YWdzID0gZmxhZ3MgJiB+VXNlRWZmZWN0UmVnaW9uQm91bmRzOworIAorICAgICBjb25zdCBib29s IGFsc29PblNjcmVlbiA9IGZsYWdzICYgRHJhd1BhaW50T25TY3JlZW47CisgICAgIGNvbnN0IGJv b2wgcmVjdXJzaXZlID0gZmxhZ3MgJiBEcmF3UmVjdXJzaXZlOworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldF9wLmggYi9xdGJhc2Uvc3JjL3dpZGdldHMva2Vy bmVsL3F3aWRnZXRfcC5oCitpbmRleCBlZWY2YjhmYTJjLi5jNDMyZjRiNWQ1IDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0X3AuaAorKysrIGIvcXRiYXNlL3Ny Yy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0X3AuaAorQEAgLTIyOSw3ICsyMjksOCBAQCBwdWJsaWM6 CisgICAgICAgICBEb250U3VidHJhY3RPcGFxdWVDaGlsZHJlbiA9IDB4MTAsCisgICAgICAgICBE b250RHJhd09wYXF1ZUNoaWxkcmVuID0gMHgyMCwKKyAgICAgICAgIERvbnREcmF3TmF0aXZlQ2hp bGRyZW4gPSAweDQwLAorLSAgICAgICAgRG9udFNldENvbXBvc2l0aW9uTW9kZSA9IDB4ODAKKysg ICAgICAgIERvbnRTZXRDb21wb3NpdGlvbk1vZGUgPSAweDgwLAorKyAgICAgICAgVXNlRWZmZWN0 UmVnaW9uQm91bmRzID0gMHgxMDAKKyAgICAgfTsKKyAgICAgUV9ERUNMQVJFX0ZMQUdTKERyYXdX aWRnZXRGbGFncywgRHJhd1dpZGdldEZsYWcpCisgICAgIFFfRkxBRyhEcmF3V2lkZ2V0RmxhZ3Mp CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWludG1h bmFnZXIuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWludG1hbmFn ZXIuY3BwCitpbmRleCAwMjg4MGIzNGRhLi4wZDQ0ZTEzMjZkIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWludG1hbmFnZXIuY3BwCisrKysgYi9xdGJh c2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRyZXBhaW50bWFuYWdlci5jcHAKK0BAIC0xMDE4 LDcgKzEwMTgsOCBAQCB2b2lkIFFXaWRnZXRSZXBhaW50TWFuYWdlcjo6cGFpbnRBbmRGbHVzaCgp CisgCisgICAgIC8vIFBhaW50IHRoZSByZXN0IHdpdGggY29tcG9zaXRpb24uCisgICAgIGlmIChy ZXBhaW50QWxsV2lkZ2V0cyB8fCAhZGlydHlDb3B5LmlzRW1wdHkoKSkgeworLSAgICAgICAgUVdp ZGdldFByaXZhdGU6OkRyYXdXaWRnZXRGbGFncyBmbGFncyA9IFFXaWRnZXRQcml2YXRlOjpEcmF3 QXNSb290IHwgUVdpZGdldFByaXZhdGU6OkRyYXdSZWN1cnNpdmU7CisrICAgICAgICBRV2lkZ2V0 UHJpdmF0ZTo6RHJhd1dpZGdldEZsYWdzIGZsYWdzID0gUVdpZGdldFByaXZhdGU6OkRyYXdBc1Jv b3QgfCBRV2lkZ2V0UHJpdmF0ZTo6RHJhd1JlY3Vyc2l2ZQorKyAgICAgICAgICAgICAgICB8IFFX aWRnZXRQcml2YXRlOjpVc2VFZmZlY3RSZWdpb25Cb3VuZHM7CisgICAgICAgICB0bHctPmRfZnVu YygpLT5kcmF3V2lkZ2V0KHN0b3JlLT5wYWludERldmljZSgpLCBkaXJ0eUNvcHksIFFQb2ludCgp LCBmbGFncywgbnVsbHB0ciwgdGhpcyk7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3dpZGdldHMvc3R5bGVzL3FmdXNpb25zdHlsZS5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMv c3R5bGVzL3FmdXNpb25zdHlsZS5jcHAKK2luZGV4IGY0MzQ1ZDk3YzQuLjk2MjkxMmM4MzggMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5bGVzL3FmdXNpb25zdHlsZS5jcHAKKysr KyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9zdHlsZXMvcWZ1c2lvbnN0eWxlLmNwcAorQEAgLTE3NzIs MTQgKzE3NzIsNiBAQCB2b2lkIFFGdXNpb25TdHlsZTo6ZHJhd0NvbnRyb2woQ29udHJvbEVsZW1l bnQgZWxlbWVudCwgY29uc3QgUVN0eWxlT3B0aW9uICpvcHRpbworICAgICAgICAgICAgIHByb3h5 KCktPmRyYXdDb250cm9sKENFX1B1c2hCdXR0b25MYWJlbCwgJnN1Ym9wdCwgcGFpbnRlciwgd2lk Z2V0KTsKKyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIENFX1B1c2hCdXR0 b25MYWJlbDoKKy0gICAgICAgIGlmIChjb25zdCBRU3R5bGVPcHRpb25CdXR0b24gKmJ1dHRvbiA9 IHFzdHlsZW9wdGlvbl9jYXN0PGNvbnN0IFFTdHlsZU9wdGlvbkJ1dHRvbiAqPihvcHRpb24pKSB7 CistICAgICAgICAgICAgUVN0eWxlT3B0aW9uQnV0dG9uIGIoKmJ1dHRvbik7CistICAgICAgICAg ICAgLy8gbm8gUE1fQnV0dG9uU2hpZnRIb3Jpem9udGFsIGFuZCBQTV9CdXR0b25TaGlmdFZlcnRp Y2FsIGZvciBmdXNpb24gc3R5bGUKKy0gICAgICAgICAgICBiLnN0YXRlICY9IH4oU3RhdGVfT24g fCBTdGF0ZV9TdW5rZW4pOworLSAgICAgICAgICAgIFFDb21tb25TdHlsZTo6ZHJhd0NvbnRyb2wo ZWxlbWVudCwgJmIsIHBhaW50ZXIsIHdpZGdldCk7CistICAgICAgICB9CistICAgICAgICBicmVh azsKKyAgICAgY2FzZSBDRV9NZW51QmFyRW1wdHlBcmVhOgorICAgICAgICAgcGFpbnRlci0+c2F2 ZSgpOworICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3V0aWwvcWNvbXBs ZXRlci5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvdXRpbC9xY29tcGxldGVyLmNwcAoraW5kZXgg MThiMjQwNjNkOC4uZWY3MjA3YThhMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy91 dGlsL3Fjb21wbGV0ZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvdXRpbC9xY29tcGxl dGVyLmNwcAorQEAgLTExMjAsNiArMTEyMCw4IEBAIHZvaWQgUUNvbXBsZXRlcjo6c2V0TW9kZWwo UUFic3RyYWN0SXRlbU1vZGVsICptb2RlbCkKKyB7CisgICAgIFFfRChRQ29tcGxldGVyKTsKKyAg ICAgUUFic3RyYWN0SXRlbU1vZGVsICpvbGRNb2RlbCA9IGQtPnByb3h5LT5zb3VyY2VNb2RlbCgp OworKyAgICBpZiAob2xkTW9kZWwgPT0gbW9kZWwpCisrICAgICAgICByZXR1cm47CisgI2lmIFFU X0NPTkZJRyhmaWxlc3lzdGVtbW9kZWwpCisgICAgIGlmIChxb2JqZWN0X2Nhc3Q8Y29uc3QgUUZp bGVTeXN0ZW1Nb2RlbCAqPihvbGRNb2RlbCkpCisgICAgICAgICBzZXRDb21wbGV0aW9uUm9sZShR dDo6RWRpdFJvbGUpOyAvLyBRVEJVRy01NDY0MiwgY2xlYXIgRmlsZU5hbWVSb2xlIHNldCBieSBR RmlsZVN5c3RlbU1vZGVsCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMv cWFic3RyYWN0YnV0dG9uLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFj dGJ1dHRvbi5jcHAKK2luZGV4IGExMjhiMjM5NTAuLmRjNDBiZjYyZmIgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24uY3BwCisrKysgYi9xdGJh c2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24uY3BwCitAQCAtNTYsNiArNTYs NyBAQAorICNpZm5kZWYgUVRfTk9fQUNDRVNTSUJJTElUWQorICNpbmNsdWRlICJxYWNjZXNzaWJs ZS5oIgorICNlbmRpZgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKyAKKyAjaW5j bHVkZSA8YWxnb3JpdGhtPgorIAorQEAgLTEwNzYsMTkgKzEwNzcsMTkgQEAgdm9pZCBRQWJzdHJh Y3RCdXR0b246OmtleVByZXNzRXZlbnQoUUtleUV2ZW50ICplKQorIHsKKyAgICAgUV9EKFFBYnN0 cmFjdEJ1dHRvbik7CisgICAgIGJvb2wgbmV4dCA9IHRydWU7CistICAgIHN3aXRjaCAoZS0+a2V5 KCkpIHsKKy0gICAgY2FzZSBRdDo6S2V5X0VudGVyOgorLSAgICBjYXNlIFF0OjpLZXlfUmV0dXJu OgorLSAgICAgICAgZS0+aWdub3JlKCk7CistICAgICAgICBicmVhazsKKy0gICAgY2FzZSBRdDo6 S2V5X1NlbGVjdDoKKy0gICAgY2FzZSBRdDo6S2V5X1NwYWNlOgorLSAgICAgICAgaWYgKCFlLT5p c0F1dG9SZXBlYXQoKSkgeworLSAgICAgICAgICAgIHNldERvd24odHJ1ZSk7CistICAgICAgICAg ICAgcmVwYWludCgpOworLSAgICAgICAgICAgIGQtPmVtaXRQcmVzc2VkKCk7CistICAgICAgICB9 CistICAgICAgICBicmVhazsKKysKKysgICAgY29uc3QgYXV0byBrZXkgPSBzdGF0aWNfY2FzdDxR dDo6S2V5PihlLT5rZXkoKSk7CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1 aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9u UHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZh bHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5z KGtleSkgJiYgIWUtPmlzQXV0b1JlcGVhdCgpKSB7CisrICAgICAgICBzZXREb3duKHRydWUpOwor KyAgICAgICAgcmVwYWludCgpOworKyAgICAgICAgZC0+ZW1pdFByZXNzZWQoKTsKKysgICAgICAg IHJldHVybjsKKysgICAgfQorKworKyAgICBzd2l0Y2ggKGtleSkgeworICAgICBjYXNlIFF0OjpL ZXlfVXA6CisgICAgICAgICBuZXh0ID0gZmFsc2U7CisgICAgICAgICBRX0ZBTExUSFJPVUdIKCk7 CitAQCAtMTE1MywxNSArMTE1NCwxNSBAQCB2b2lkIFFBYnN0cmFjdEJ1dHRvbjo6a2V5UmVsZWFz ZUV2ZW50KFFLZXlFdmVudCAqZSkKKyAgICAgaWYgKCFlLT5pc0F1dG9SZXBlYXQoKSkKKyAgICAg ICAgIGQtPnJlcGVhdFRpbWVyLnN0b3AoKTsKKyAKKy0gICAgc3dpdGNoIChlLT5rZXkoKSkgewor LSAgICBjYXNlIFF0OjpLZXlfU2VsZWN0OgorLSAgICBjYXNlIFF0OjpLZXlfU3BhY2U6CistICAg ICAgICBpZiAoIWUtPmlzQXV0b1JlcGVhdCgpICYmIGQtPmRvd24pCistICAgICAgICAgICAgZC0+ Y2xpY2soKTsKKy0gICAgICAgIGJyZWFrOworLSAgICBkZWZhdWx0OgorLSAgICAgICAgZS0+aWdu b3JlKCk7CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9u UHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0 OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKHN0YXRpY19jYXN0 PFF0OjpLZXk+KGUtPmtleSgpKSkgJiYgIWUtPmlzQXV0b1JlcGVhdCgpICYmIGQtPmRvd24pIHsK KysgICAgICAgIGQtPmNsaWNrKCk7CisrICAgICAgICByZXR1cm47CisgICAgIH0KKysKKysgICAg ZS0+aWdub3JlKCk7CisgfQorIAorIC8qIVxyZWltcAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv d2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0 cy9xY29tYm9ib3guY3BwCitpbmRleCA3YTQ5NmMyN2UwLi4wYTNkOTY2NDdiIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94LmNwcAorKysrIGIvcXRiYXNl L3NyYy93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94LmNwcAorQEAgLTMzNTIsNyArMzM1MiwyMyBA QCB2b2lkIFFDb21ib0JveDo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQgKmUpCisgCisgICAgIE1v dmUgbW92ZSA9IE5vTW92ZTsKKyAgICAgaW50IG5ld0luZGV4ID0gY3VycmVudEluZGV4KCk7Cist ICAgIHN3aXRjaCAoZS0+a2V5KCkpIHsKKysKKysgICAgYm9vbCBwcmVzc0xpa2VCdXR0b24gPSAh ZC0+bGluZUVkaXQ7CisrI2lmZGVmIFFUX0tFWVBBRF9OQVZJR0FUSU9OCisrICAgIHByZXNzTGlr ZUJ1dHRvbiB8PSBRQXBwbGljYXRpb25Qcml2YXRlOjprZXlwYWROYXZpZ2F0aW9uRW5hYmxlZCgp ICYmICFoYXNFZGl0Rm9jdXMoKTsKKysjZW5kaWYKKysgICAgYXV0byBrZXkgPSBzdGF0aWNfY2Fz dDxRdDo6S2V5PihlLT5rZXkoKSk7CisrICAgIGlmIChwcmVzc0xpa2VCdXR0b24pIHsKKysgICAg ICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6 cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6 OktleT4+KCk7CisrICAgICAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKGtleSkpIHsK KysgICAgICAgICAgICBzaG93UG9wdXAoKTsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAg ICB9CisrICAgIH0KKysKKysgICAgc3dpdGNoIChrZXkpIHsKKyAgICAgY2FzZSBRdDo6S2V5X1Vw OgorICAgICAgICAgaWYgKGUtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmllcikKKyAg ICAgICAgICAgICBicmVhazsgLy8gcGFzcyB0byBsaW5lIGVkaXQgZm9yIGF1dG8gY29tcGxldGlv bgorQEAgLTMzOTQsMjYgKzM0MTAsMTEgQEAgdm9pZCBRQ29tYm9Cb3g6OmtleVByZXNzRXZlbnQo UUtleUV2ZW50ICplKQorICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgIH0KKyAgICAgICAg IGJyZWFrOworLSAgICBjYXNlIFF0OjpLZXlfU3BhY2U6CistICAgICAgICBpZiAoIWQtPmxpbmVF ZGl0KSB7CistICAgICAgICAgICAgc2hvd1BvcHVwKCk7CistICAgICAgICAgICAgcmV0dXJuOwor LSAgICAgICAgfQorLSAgICAgICAgYnJlYWs7CistICAgIGNhc2UgUXQ6OktleV9FbnRlcjoKKy0g ICAgY2FzZSBRdDo6S2V5X1JldHVybjoKKyAgICAgY2FzZSBRdDo6S2V5X0VzY2FwZToKKyAgICAg ICAgIGlmICghZC0+bGluZUVkaXQpCisgICAgICAgICAgICAgZS0+aWdub3JlKCk7CisgICAgICAg ICBicmVhazsKKyAjaWZkZWYgUVRfS0VZUEFEX05BVklHQVRJT04KKy0gICAgY2FzZSBRdDo6S2V5 X1NlbGVjdDoKKy0gICAgICAgIGlmIChRQXBwbGljYXRpb25Qcml2YXRlOjprZXlwYWROYXZpZ2F0 aW9uRW5hYmxlZCgpCistICAgICAgICAgICAgICAgICYmICghaGFzRWRpdEZvY3VzKCkgfHwgIWQt PmxpbmVFZGl0KSkgeworLSAgICAgICAgICAgIHNob3dQb3B1cCgpOworLSAgICAgICAgICAgIHJl dHVybjsKKy0gICAgICAgIH0KKy0gICAgICAgIGJyZWFrOworICAgICBjYXNlIFF0OjpLZXlfTGVm dDoKKyAgICAgY2FzZSBRdDo6S2V5X1JpZ2h0OgorICAgICAgICAgaWYgKFFBcHBsaWNhdGlvblBy aXZhdGU6OmtleXBhZE5hdmlnYXRpb25FbmFibGVkKCkgJiYgIWhhc0VkaXRGb2N1cygpKQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FkYXRldGltZWVkaXRfcC5oIGIv cXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1lZWRpdF9wLmgKK2luZGV4IGQzNmI2 ZjhmOWEuLmUwZGY1YjUxNTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0 cy9xZGF0ZXRpbWVlZGl0X3AuaAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWRh dGV0aW1lZWRpdF9wLmgKK0BAIC0xLDYgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisg KioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTggVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHly aWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0cHM6Ly93 d3cucXQuaW8vbGljZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0 V2lkZ2V0cyBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRn ZXRzL3Fncm91cGJveC5jcHAKK2luZGV4IDAyYTBiZWQzMjUuLjNmM2VjY2MzNzAgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3guY3BwCisrKysgYi9xdGJh c2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3guY3BwCitAQCAtNTQsNiArNTQsOCBAQAor ICNpbmNsdWRlICJxYWNjZXNzaWJsZS5oIgorICNlbmRpZgorICNpbmNsdWRlIDxwcml2YXRlL3F3 aWRnZXRfcC5oPgorKyNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNhdGlvbl9wLmg+CisrI2lu Y2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorIAorICNpbmNsdWRlICJxZGVidWcuaCIKKyAK K0BAIC0zNjAsNyArMzYyLDEwIEBAIGJvb2wgUUdyb3VwQm94OjpldmVudChRRXZlbnQgKmUpCisg ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgY2FzZSBRRXZlbnQ6OktleVByZXNzOiB7CisgICAg ICAgICBRS2V5RXZlbnQgKmsgPSBzdGF0aWNfY2FzdDxRS2V5RXZlbnQqPihlKTsKKy0gICAgICAg IGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYgKGstPmtleSgpID09IFF0OjpLZXlfU2VsZWN0IHx8 IGstPmtleSgpID09IFF0OjpLZXlfU3BhY2UpKSB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRv blByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQ bGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAgICAg aWYgKCFrLT5pc0F1dG9SZXBlYXQoKSAmJiBidXR0b25QcmVzc0tleXMuY29udGFpbnMoc3RhdGlj X2Nhc3Q8UXQ6OktleT4oay0+a2V5KCkpKSkgeworICAgICAgICAgICAgIGQtPnByZXNzZWRDb250 cm9sID0gUVN0eWxlOjpTQ19Hcm91cEJveENoZWNrQm94OworICAgICAgICAgICAgIHVwZGF0ZShz dHlsZSgpLT5zdWJDb250cm9sUmVjdChRU3R5bGU6OkNDX0dyb3VwQm94LCAmYm94LCBRU3R5bGU6 OlNDX0dyb3VwQm94Q2hlY2tCb3gsIHRoaXMpKTsKKyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK K0BAIC0zNjksNyArMzc0LDEwIEBAIGJvb2wgUUdyb3VwQm94OjpldmVudChRRXZlbnQgKmUpCisg ICAgIH0KKyAgICAgY2FzZSBRRXZlbnQ6OktleVJlbGVhc2U6IHsKKyAgICAgICAgIFFLZXlFdmVu dCAqayA9IHN0YXRpY19jYXN0PFFLZXlFdmVudCo+KGUpOworLSAgICAgICAgaWYgKCFrLT5pc0F1 dG9SZXBlYXQoKSAmJiAoay0+a2V5KCkgPT0gUXQ6OktleV9TZWxlY3QgfHwgay0+a2V5KCkgPT0g UXQ6OktleV9TcGFjZSkpIHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0g UUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6 OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoIWstPmlzQXV0 b1JlcGVhdCgpICYmIGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhzdGF0aWNfY2FzdDxRdDo6S2V5 PihrLT5rZXkoKSkpKSB7CisgICAgICAgICAgICAgYm9vbCB0b2dnbGUgPSAoZC0+cHJlc3NlZENv bnRyb2wgPT0gUVN0eWxlOjpTQ19Hcm91cEJveExhYmVsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfHwgZC0+cHJlc3NlZENvbnRyb2wgPT0gUVN0eWxlOjpTQ19Hcm91cEJveENoZWNrQm94 KTsKKyAgICAgICAgICAgICBkLT5wcmVzc2VkQ29udHJvbCA9IFFTdHlsZTo6U0NfTm9uZTsKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xbGFiZWwuY3BwIGIvcXRiYXNl L3NyYy93aWRnZXRzL3dpZGdldHMvcWxhYmVsLmNwcAoraW5kZXggMzBmZjgwY2JiMC4uY2YyNjA1 YzE3YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FsYWJlbC5jcHAK KysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FsYWJlbC5jcHAKK0BAIC00MjEsOSAr NDIxLDYgQEAgdm9pZCBRTGFiZWw6OnNldFBpeG1hcChjb25zdCBRUGl4bWFwICZwaXhtYXApCisg ICAgICAgICBkLT5waXhtYXAgPSBuZXcgUVBpeG1hcChwaXhtYXApOworICAgICB9CisgCistICAg IGlmIChkLT5waXhtYXAtPmRlcHRoKCkgPT0gMSAmJiAhZC0+cGl4bWFwLT5tYXNrKCkpCistICAg ICAgICBkLT5waXhtYXAtPnNldE1hc2soKigoUUJpdG1hcCAqKWQtPnBpeG1hcCkpOworLQorICAg ICBkLT51cGRhdGVMYWJlbCgpOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdl dHMvd2lkZ2V0cy9xdG9vbGJhcmFyZWFsYXlvdXQuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dp ZGdldHMvcXRvb2xiYXJhcmVhbGF5b3V0LmNwcAoraW5kZXggNDkzYzA5NGNjMS4uZDVmNGI1OTAx NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3F0b29sYmFyYXJlYWxh eW91dC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3F0b29sYmFyYXJlYWxh eW91dC5jcHAKK0BAIC0xMzY3LDcgKzEzNjcsNyBAQCBib29sIFFUb29sQmFyQXJlYUxheW91dDo6 cmVzdG9yZVN0YXRlKFFEYXRhU3RyZWFtICZzdHJlYW0sIGNvbnN0IFFMaXN0PFFUb29sQmFyKgor ICAgICAgICAgICAgICAgICBpdGVtLndpZGdldEl0ZW0gPSBuZXcgUVdpZGdldEl0ZW1WMih0b29s QmFyKTsKKyAgICAgICAgICAgICAgICAgdG9vbEJhci0+c2V0T3JpZW50YXRpb24oZmxvYXRpbmcg PyAoKHNob3duICYgMikgPyBRdDo6VmVydGljYWwgOiBRdDo6SG9yaXpvbnRhbCkgOiBkb2NrLm8p OworICAgICAgICAgICAgICAgICB0b29sQmFyLT5zZXRWaXNpYmxlKHNob3duICYgMSk7CistICAg ICAgICAgICAgICAgIHRvb2xCYXItPmRfZnVuYygpLT5zZXRXaW5kb3dTdGF0ZShmbG9hdGluZywg dHJ1ZSwgcmVjdCk7CisrICAgICAgICAgICAgICAgIHRvb2xCYXItPmRfZnVuYygpLT5zZXRXaW5k b3dTdGF0ZShmbG9hdGluZywgZmFsc2UsIHJlY3QpOworIAorICAgICAgICAgICAgICAgICBpdGVt LnByZWZlcnJlZFNpemUgPSBpdGVtLnNpemU7CisgICAgICAgICAgICAgICAgIGxpbmUudG9vbEJh ckl0ZW1zLmFwcGVuZChpdGVtKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb25j dXJyZW50L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0X3F0Y29uY3VycmVudGl0ZXJhdGVr ZXJuZWwuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnRpdGVy YXRla2VybmVsL3RzdF9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsLmNwcAoraW5kZXggMjEyYzBh MmUxMy4uM2M3N2IxYmEwYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJl bnQvcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5l bC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50aXRl cmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC5jcHAKK0BAIC0xMjYsOCAr MTI2LDcgQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6 Omluc3RhbnRpYXRlKCkKKyB7CistICAgIGF1dG8gZnV0dXJlID0gc3RhcnRUaHJlYWRFbmdpbmUo bmV3IFByaW50Rm9yKDAsIDQwKSkuc3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICBmdXR1cmUu d2FpdEZvckZpbmlzaGVkKCk7CisrICAgIHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBQcmludEZvcigw LCA0MCkpLnN0YXJ0QmxvY2tpbmcoKTsKKyAgICAgUUNPTVBBUkUoaXRlcmF0aW9ucy5sb2FkUmVs YXhlZCgpLCA0MCk7CisgfQorIAorQEAgLTE2NiwxMCArMTY1LDggQEAgdm9pZCB0c3RfUXRDb25j dXJyZW50SXRlcmF0ZUtlcm5lbDo6c3RyZXNzdGVzdCgpCisgICAgIGNvbnN0IGludCB0aW1lcyA9 IDUwOworICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRpbWVzOyArK2kpIHsKKyAgICAgICAgIGNv dW50ZXIuc3RvcmVSZWxheGVkKDApOworLSAgICAgICAgLy8gVGhyZWFkRW5naW5lIHdpbGwgZGVs ZXRlIGYgd2hlbiBpdCBmaW5pc2hlcworLSAgICAgICAgYXV0byBmID0gbmV3IENvdW50Rm9yKDAs IGl0ZXJhdGlvbnMpOworLSAgICAgICAgYXV0byBmdXR1cmUgPSBmLT5zdGFydEFzeW5jaHJvbm91 c2x5KCk7CistICAgICAgICBmdXR1cmUud2FpdEZvckZpbmlzaGVkKCk7CisrICAgICAgICBDb3Vu dEZvciBmKDAsIGl0ZXJhdGlvbnMpOworKyAgICAgICAgZi5zdGFydEJsb2NraW5nKCk7CisgICAg ICAgICBRQ09NUEFSRShjb3VudGVyLmxvYWRSZWxheGVkKCksIGl0ZXJhdGlvbnMpOworICAgICB9 CisgfQorQEAgLTE3NywxMSArMTc0LDggQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50SXRlcmF0ZUtl cm5lbDo6c3RyZXNzdGVzdCgpCisgdm9pZCB0c3RfUXRDb25jdXJyZW50SXRlcmF0ZUtlcm5lbDo6 bm9JdGVyYXRpb25zKCkKKyB7CisgICAgIGNvbnN0IGludCB0aW1lcyA9IDIwMDAwOworLSAgICBm b3IgKGludCBpID0gMDsgaSA8IHRpbWVzOyArK2kpIHsKKy0gICAgICAgIGF1dG8gZnV0dXJlID0g c3RhcnRUaHJlYWRFbmdpbmUobmV3IEl0ZXJhdGVLZXJuZWw8VGVzdEl0ZXJhdG9yLCB2b2lkPigw LCAwKSkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3RhcnRBc3luY2hyb25vdXNs eSgpOworLSAgICAgICAgZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgpOworLSAgICB9CisrICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgdGltZXM7ICsraSkKKysgICAgICAgIHN0YXJ0VGhyZWFkRW5naW5l KG5ldyBJdGVyYXRlS2VybmVsPFRlc3RJdGVyYXRvciwgdm9pZD4oMCwgMCkpLnN0YXJ0QmxvY2tp bmcoKTsKKyB9CisgCisgUU11dGV4IHRocmVhZHNNdXRleDsKK0BAIC0yMzYsMTAgKzIzMCw4IEBA IHZvaWQgdHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6OnRocm90dGxpbmcoKQorIAorICAg ICB0aHJlYWRzLmNsZWFyKCk7CisgCistICAgIC8vIFRocmVhZEVuZ2luZSB3aWxsIGRlbGV0ZSBm IHdoZW4gaXQgZmluaXNoZXMKKy0gICAgYXV0byBmID0gbmV3IFRocm90dGxlRm9yKDAsIHRvdGFs SXRlcmF0aW9ucyk7CistICAgIGF1dG8gZnV0dXJlID0gZi0+c3RhcnRBc3luY2hyb25vdXNseSgp OworLSAgICBmdXR1cmUud2FpdEZvckZpbmlzaGVkKCk7CisrICAgIFRocm90dGxlRm9yIGYoMCwg dG90YWxJdGVyYXRpb25zKTsKKysgICAgZi5zdGFydEJsb2NraW5nKCk7CisgCisgICAgIFFDT01Q QVJFKGl0ZXJhdGlvbnMubG9hZFJlbGF4ZWQoKSwgdG90YWxJdGVyYXRpb25zKTsKKyAKK2RpZmYg LS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVu Z2luZS90c3RfcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRv L2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lL3RzdF9xdGNvbmN1cnJlbnR0aHJl YWRlbmdpbmUuY3BwCitpbmRleCBhYzdiZTdhY2RkLi44MWJjNjRjOGQ5IDEwMDY0NAorLS0tIGEv cXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUvdHN0 X3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2Nv bmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lL3RzdF9xdGNvbmN1cnJlbnR0aHJlYWRl bmdpbmUuY3BwCitAQCAtNjUsOSArNjUsMTYgQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29u Y3VycmVudFRocmVhZEVuZ2luZTo6cnVuRGlyZWN0bHkoKQorIHsKKy0gICAgUHJpbnRVc2VyICpl bmdpbmUgPSBuZXcgUHJpbnRVc2VyKCk7CistICAgIFFGdXR1cmU8dm9pZD4gZiA9IGVuZ2luZS0+ c3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICBmLndhaXRGb3JGaW5pc2hlZCgpOworKyAgICB7 CisrICAgICAgICBQcmludFVzZXIgZW5naW5lOworKyAgICAgICAgZW5naW5lLnN0YXJ0U2luZ2xl VGhyZWFkZWQoKTsKKysgICAgICAgIGVuZ2luZS5zdGFydEJsb2NraW5nKCk7CisrICAgIH0KKysg ICAgeworKyAgICAgICAgUHJpbnRVc2VyICplbmdpbmUgPSBuZXcgUHJpbnRVc2VyKCk7CisrICAg ICAgICBRRnV0dXJlPHZvaWQ+IGYgPSBlbmdpbmUtPnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKysg ICAgICAgIGYud2FpdEZvckZpbmlzaGVkKCk7CisrICAgIH0KKyB9CisgCisgY2xhc3MgU3RyaW5n UmVzdWx0VXNlciA6IHB1YmxpYyBUaHJlYWRFbmdpbmU8UVN0cmluZz4KK0BAIC05OSwxMCArMTA2 LDggQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6cmVz dWx0KCkKKyB7CistICAgIC8vIFRocmVhZEVuZ2luZSB3aWxsIGRlbGV0ZSAnZW5naW5lJyB3aGVu IGl0IGZpbmlzaGVzCistICAgIGF1dG8gZW5naW5lID0gbmV3IFN0cmluZ1Jlc3VsdFVzZXIoKTsK Ky0gICAgYXV0byBmdXR1cmUgPSBlbmdpbmUtPnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAg UUNPTVBBUkUoZnV0dXJlLnJlc3VsdCgpLCBRU3RyaW5nKCJGb28iKSk7CisrICAgIFN0cmluZ1Jl c3VsdFVzZXIgZW5naW5lOworKyAgICBRQ09NUEFSRSgqZW5naW5lLnN0YXJ0QmxvY2tpbmcoKSwg UVN0cmluZygiRm9vIikpOworIH0KKyAKKyBjbGFzcyBWb2lkUmVzdWx0VXNlciA6IHB1YmxpYyBU aHJlYWRFbmdpbmU8dm9pZD4KK0BAIC0xMjgsOSArMTMzLDE3IEBAIHB1YmxpYzoKKyAKKyB2b2lk IHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OnJ1blRocm91Z2hTdGFydGVyKCkKKyB7Cist ICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXI8UVN0cmluZz4gc3RhcnRlciA9IHN0YXJ0VGhyZWFkRW5n aW5lKG5ldyBTdHJpbmdSZXN1bHRVc2VyKCkpOworLSAgICBRRnV0dXJlPFFTdHJpbmc+IGYgPSBz dGFydGVyLnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgUUNPTVBBUkUoZi5yZXN1bHQoKSwg UVN0cmluZygiRm9vIikpOworKyAgICB7CisrICAgICAgICBUaHJlYWRFbmdpbmVTdGFydGVyPFFT dHJpbmc+IHN0YXJ0ZXIgPSBzdGFydFRocmVhZEVuZ2luZShuZXcgU3RyaW5nUmVzdWx0VXNlcigp KTsKKysgICAgICAgIFFGdXR1cmU8UVN0cmluZz4gIGYgPSBzdGFydGVyLnN0YXJ0QXN5bmNocm9u b3VzbHkoKTsKKysgICAgICAgIFFDT01QQVJFKGYucmVzdWx0KCksIFFTdHJpbmcoIkZvbyIpKTsK KysgICAgfQorKworKyAgICB7CisrICAgICAgICBUaHJlYWRFbmdpbmVTdGFydGVyPFFTdHJpbmc+ IHN0YXJ0ZXIgPSBzdGFydFRocmVhZEVuZ2luZShuZXcgU3RyaW5nUmVzdWx0VXNlcigpKTsKKysg ICAgICAgIFFTdHJpbmcgc3RyID0gc3RhcnRlci5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBR Q09NUEFSRShzdHIsIFFTdHJpbmcoIkZvbyIpKTsKKysgICAgfQorIH0KKyAKKyBjbGFzcyBDYW5j ZWxVc2VyIDogcHVibGljIFRocmVhZEVuZ2luZTx2b2lkPgorQEAgLTIxMyw2ICsyMjYsMTIgQEAg dm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjp0aHJvdHRsZSgpCisgICAgICAgICBm LndhaXRGb3JGaW5pc2hlZCgpOworICAgICAgICAgUUNPTVBBUkUoY291bnQubG9hZFJlbGF4ZWQo KSwgMCk7CisgICAgIH0KKysKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXRzOyArK2kp IHsKKysgICAgICAgIFRocm90dGxlQWx3YXlzVXNlciB0OworKyAgICAgICAgdC5zdGFydEJsb2Nr aW5nKCk7CisrICAgICAgICBRQ09NUEFSRShjb3VudC5sb2FkUmVsYXhlZCgpLCAwKTsKKysgICAg fQorIH0KKyAKKyBRU2V0PFFUaHJlYWQgKj4gdGhyZWFkczsKK0BAIC0yNDksMTcgKzI2OCwzNSBA QCB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OnRocmVhZENvdW50KCkKKyB7Cisg ICAgIGNvbnN0IGludCByZXBlYXRzID0gMTA7CisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVw ZWF0czsgKytpKSB7CisrICAgICAgICBUaHJlYWRDb3VudFVzZXIgdDsKKysgICAgICAgIHQuc3Rh cnRCbG9ja2luZygpOworKyAgICAgICAgaW50IGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworKyAg ICAgICAgaW50IGNvdW50X2V4cGVjdGVkID0gUVRocmVhZFBvb2w6Omdsb2JhbEluc3RhbmNlKCkt Pm1heFRocmVhZENvdW50KCkgKyAxOyAvLyArMSBmb3IgdGhlIG1haW4gdGhyZWFkLgorKyAgICAg ICAgaWYgKGNvdW50ICE9IGNvdW50X2V4cGVjdGVkKQorKyAgICAgICAgICAgIFFFWFBFQ1RfRkFJ TCgiIiwgIlFUQlVHLTIzMzMzIiwgQWJvcnQpOworKyAgICAgICAgUUNPTVBBUkUoY291bnQsIGNv dW50X2V4cGVjdGVkKTsKKysKKyAgICAgICAgIChuZXcgVGhyZWFkQ291bnRVc2VyKCkpLT5zdGFy dEFzeW5jaHJvbm91c2x5KCkud2FpdEZvckZpbmlzaGVkKCk7CistICAgICAgICBjb25zdCBhdXRv IGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworLSAgICAgICAgY29uc3QgYXV0byBtYXhUaHJlYWRD b3VudCA9IFFUaHJlYWRQb29sOjpnbG9iYWxJbnN0YW5jZSgpLT5tYXhUaHJlYWRDb3VudCgpOwor LSAgICAgICAgUVZFUklGWShjb3VudCA8PSBtYXhUaHJlYWRDb3VudCk7CistICAgICAgICBRVkVS SUZZKCF0aHJlYWRzLmNvbnRhaW5zKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSkpOworKyAgICAg ICAgY291bnQgPSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBjb3VudF9leHBlY3RlZCA9IFFU aHJlYWRQb29sOjpnbG9iYWxJbnN0YW5jZSgpLT5tYXhUaHJlYWRDb3VudCgpOworKyAgICAgICAg aWYgKGNvdW50ICE9IGNvdW50X2V4cGVjdGVkKQorKyAgICAgICAgICAgIFFFWFBFQ1RfRkFJTCgi IiwgIlFUQlVHLTIzMzMzIiwgQWJvcnQpOworKyAgICAgICAgUUNPTVBBUkUoY291bnQsIGNvdW50 X2V4cGVjdGVkKTsKKyAgICAgfQorIAorICAgICAvLyBTZXQgdGhlIGZpbmlzaCBmbGFnIGltbWVk aWF0ZWx5LCB0aGlzIHNob3VsZCBnaXZlIHVzIG9uZSB0aHJlYWQgb25seS4KKyAgICAgZm9yIChp bnQgaSA9IDA7IGkgPCByZXBlYXRzOyArK2kpIHsKKysgICAgICAgIFRocmVhZENvdW50VXNlciB0 KHRydWUgLypmaW5pc2hJbW1lZGlhdGVseSovKTsKKysgICAgICAgIHQuc3RhcnRCbG9ja2luZygp OworKyAgICAgICAgaW50IGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworKyAgICAgICAgaWYgKGNv dW50ICE9IDEpCisrICAgICAgICAgICAgUUVYUEVDVF9GQUlMKCIiLCAiUVRCVUctMjMzMzMiLCBB Ym9ydCk7CisrICAgICAgICBRQ09NUEFSRShjb3VudCwgMSk7CisrCisgICAgICAgICAobmV3IFRo cmVhZENvdW50VXNlcih0cnVlIC8qZmluaXNoSW1tZWRpYXRlbHkqLykpLT5zdGFydEFzeW5jaHJv bm91c2x5KCkud2FpdEZvckZpbmlzaGVkKCk7CistICAgICAgICBjb25zdCBhdXRvIGNvdW50ID0g dGhyZWFkcy5jb3VudCgpOworKyAgICAgICAgY291bnQgPSB0aHJlYWRzLmNvdW50KCk7CisrICAg ICAgICBpZiAoY291bnQgIT0gMSkKKysgICAgICAgICAgICBRRVhQRUNUX0ZBSUwoIiIsICJRVEJV Ry0yMzMzMyIsIEFib3J0KTsKKyAgICAgICAgIFFDT01QQVJFKGNvdW50LCAxKTsKKyAgICAgICAg IFFWRVJJRlkoIXRocmVhZHMuY29udGFpbnMoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpKSk7Cisg ICAgIH0KK0BAIC00MDAsNiArNDM3LDcgQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3Vy cmVudFRocmVhZEVuZ2luZTo6ZXhjZXB0aW9ucygpCisgeworKyAgICAvLyBBc3luY2hyb25vdXMg bW9kZToKKyAgICAgeworICAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKyAgICAgICAgIHRy eSAgeworQEAgLTQxMiw2ICs0NTAsMzIgQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5n aW5lOjpleGNlcHRpb25zKCkKKyAgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3QgZ2V0 IGV4Y2VwdGlvbiIpOworICAgICB9CisgCisrICAgIC8vIEJsb2NraW5nIG1vZGU6CisrICAgIC8v IHRlc3QgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9tIGEgd29ya2VyIHRocmVhZC4KKysgICAg eworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysgICAgICAgIHRyeSAgeworKyAgICAg ICAgICAgIFF0Q29uY3VycmVudEV4Y2VwdGlvblRocm93ZXIgZShRVGhyZWFkOjpjdXJyZW50VGhy ZWFkKCkpOworKyAgICAgICAgICAgIGUuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgfSBjYXRj aCAoY29uc3QgUUV4Y2VwdGlvbiAmKSB7CisrICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsKKysg ICAgICAgIH0KKysgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlv biIpOworKyAgICB9CisrCisrICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9t IHRoZSBtYWluIHRocmVhZCAoZGlmZmVyZW50IGNvZGUgcGF0aCkKKysgICAgeworKyAgICAgICAg Ym9vbCBjYXVnaHQgPSBmYWxzZTsKKysgICAgICAgIHRyeSAgeworKyAgICAgICAgICAgIFF0Q29u Y3VycmVudEV4Y2VwdGlvblRocm93ZXIgZSgwKTsKKysgICAgICAgICAgICBlLnN0YXJ0QmxvY2tp bmcoKTsKKysgICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFFeGNlcHRpb24gJikgeworKyAgICAgICAg ICAgIGNhdWdodCA9IHRydWU7CisrICAgICAgICB9CisrICAgICAgICBRVkVSSUZZMihjYXVnaHQs ICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKysgICAgfQorKworKyAgICAvLyBBc3luY2hyb25v dXMgbW9kZToKKyAgICAgeworICAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKyAgICAgICAg IHRyeSAgeworQEAgLTQyMyw2ICs0ODcsMzEgQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFk RW5naW5lOjpleGNlcHRpb25zKCkKKyAgICAgICAgIH0KKyAgICAgICAgIFFWRVJJRlkyKGNhdWdo dCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworICAgICB9CisrCisrICAgIC8vIEJsb2NraW5n IG1vZGU6CisrICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9tIGEgd29ya2Vy IHRocmVhZC4KKysgICAgeworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysgICAgICAg IHRyeSAgeworKyAgICAgICAgICAgIFVucmVsYXRlZEV4Y2VwdGlvblRocm93ZXIgZShRVGhyZWFk OjpjdXJyZW50VGhyZWFkKCkpOworKyAgICAgICAgICAgIGUuc3RhcnRCbG9ja2luZygpOworKyAg ICAgICAgfSBjYXRjaCAoY29uc3QgUVVuaGFuZGxlZEV4Y2VwdGlvbiAmKSB7CisrICAgICAgICAg ICAgY2F1Z2h0ID0gdHJ1ZTsKKysgICAgICAgIH0KKysgICAgICAgIFFWRVJJRlkyKGNhdWdodCwg ImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworKyAgICB9CisrCisrICAgIC8vIHRlc3QgdGhyb3dp bmcgdGhlIGV4Y2VwdGlvbiBmcm9tIHRoZSBtYWluIHRocmVhZCAoZGlmZmVyZW50IGNvZGUgcGF0 aCkKKysgICAgeworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysgICAgICAgIHRyeSAg eworKyAgICAgICAgICAgIFVucmVsYXRlZEV4Y2VwdGlvblRocm93ZXIgZSgwKTsKKysgICAgICAg ICAgICBlLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFVbmhhbmRs ZWRFeGNlcHRpb24gJikgeworKyAgICAgICAgICAgIGNhdWdodCA9IHRydWU7CisrICAgICAgICB9 CisrICAgICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKysg ICAgfQorIH0KKyAKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3Jl bGliL2lvL3FidWZmZXIvdHN0X3FidWZmZXIuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxp Yi9pby9xYnVmZmVyL3RzdF9xYnVmZmVyLmNwcAoraW5kZXggNDk2ODc0MjExMC4uZjRjM2ZiNzEx ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWJ1ZmZlci90c3Rf cWJ1ZmZlci5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWJ1ZmZlci90 c3RfcWJ1ZmZlci5jcHAKK0BAIC00Miw2ICs0Miw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZv aWQgd3JpdGVCbG9ja19kYXRhKCk7CisgICAgIHZvaWQgd3JpdGVCbG9jaygpOworICAgICB2b2lk IHNlZWsoKTsKKysgICAgdm9pZCBpbnZhbGlkU2Vla3MoKTsKKyAgICAgdm9pZCBzZWVrVGVzdF9k YXRhKCk7CisgICAgIHZvaWQgc2Vla1Rlc3QoKTsKKyAgICAgdm9pZCByZWFkX3Jhd2RhdGEoKTsK K0BAIC0yODYsNiArMjg3LDI5IEBAIHZvaWQgdHN0X1FCdWZmZXI6OnNlZWsoKQorICAgICBRQ09N UEFSRShidWZmZXIuc2l6ZSgpLCBwb3MpOworIH0KKyAKKyt2b2lkIHRzdF9RQnVmZmVyOjppbnZh bGlkU2Vla3MoKQorK3sKKysgICAgaWYgY29uc3RleHByIChzaXplb2YocXNpemV0eXBlKSA9PSBz aXplb2YocWludDY0KSkgeworKyAgICAgICAgLy8gc2l6ZW9mKHFzaXpldHlwZSkgPT0gc2l6ZW9m KHFpbnQ2NCksIHNvICsxIHdvdWxkIG92ZXJmbG93CisrICAgICAgICBRU0tJUCgiVGhpcyBpcyBh IDMyLWJpdC1vbmx5IHRlc3QuIik7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBRQnVmZmVyIGJ1 ZmZlcjsKKysgICAgICAgIGJ1ZmZlci5vcGVuKFFJT0RldmljZTo6V3JpdGVPbmx5KTsKKysgICAg ICAgIFFDT01QQVJFKGJ1ZmZlci5idWZmZXIoKS5zaXplKCksIHFzaXpldHlwZSgwKSk7CisrICAg ICAgICBRQ09NUEFSRShidWZmZXIucG9zKCksIHFpbnQ2NCgwKSk7CisrICAgICAgICBjb25zdGV4 cHIgcWludDY0IE1heFFCeXRlQXJyYXlDYXBhY2l0eSA9IChzdGQ6Om51bWVyaWNfbGltaXRzPHFz aXpldHlwZT46Om1heCkoKTsKKysgICAgICAgIC8vIHRoaXMgc2hvdWxkIGZhaWwgZmFzdCwgbm90 IGFmdGVyIHRyeWluZyB0byBhbGxvY2F0ZSBuZWFybHkgMiBHaUIgb2YgZGF0YSwKKysgICAgICAg IC8vIHBvdGVudGlhbGx5IGNyYXNoaW5nIGluIHRoZSBwcm9jZXNzOgorKyAgICAgICAgUVZFUklG WSghYnVmZmVyLnNlZWsoMiAqIE1heFFCeXRlQXJyYXlDYXBhY2l0eSAtIDEpKTsKKysgICAgICAg IFFDT01QQVJFKGJ1ZmZlci5idWZmZXIoKS5zaXplKCksIHFzaXpldHlwZSgwKSk7CisrICAgICAg ICBRQ09NUEFSRShidWZmZXIucG9zKCksIHFpbnQ2NCgwKSk7CisrICAgICAgICAvLyBkaXR0bzoK KysgICAgICAgIFFWRVJJRlkoIWJ1ZmZlci5zZWVrKE1heFFCeXRlQXJyYXlDYXBhY2l0eSArIDEp KTsKKysgICAgICAgIFFDT01QQVJFKGJ1ZmZlci5idWZmZXIoKS5zaXplKCksIHFzaXpldHlwZSgw KSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIucG9zKCksIHFpbnQ2NCgwKSk7CisrICAgIH0K Kyt9CisrCisgdm9pZCB0c3RfUUJ1ZmZlcjo6c2Vla1Rlc3RfZGF0YSgpCisgeworICAgICB3cml0 ZUJsb2NrX2RhdGEoKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lv L3Fpb2RldmljZS90c3RfcWlvZGV2aWNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIv aW8vcWlvZGV2aWNlL3RzdF9xaW9kZXZpY2UuY3BwCitpbmRleCBkYTUzMjc1OTRjLi40YTA0ZTBm N2M2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xaW9kZXZpY2Uv dHN0X3Fpb2RldmljZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWlv ZGV2aWNlL3RzdF9xaW9kZXZpY2UuY3BwCitAQCAtNTYxLDcgKzU2MSw4IEBAIHByb3RlY3RlZDoK KyAgICAgcWludDY0IHJlYWREYXRhKGNoYXIgKmRhdGEsIHFpbnQ2NCBtYXhTaXplKSBvdmVycmlk ZQorICAgICB7CisgICAgICAgICBtYXhTaXplID0gcU1pbihtYXhTaXplLCBxaW50NjQoYnVmLT5z aXplKCkgLSBvZmZzZXQpKTsKKy0gICAgICAgIG1lbWNweShkYXRhLCBidWYtPmNvbnN0RGF0YSgp ICsgb2Zmc2V0LCBtYXhTaXplKTsKKysgICAgICAgIGlmIChtYXhTaXplID4gMCkKKysgICAgICAg ICAgICBtZW1jcHkoZGF0YSwgYnVmLT5jb25zdERhdGEoKSArIG9mZnNldCwgbWF4U2l6ZSk7Cisg ICAgICAgICBvZmZzZXQgKz0gbWF4U2l6ZTsKKyAgICAgICAgIHJldHVybiBtYXhTaXplOworICAg ICB9CitAQCAtNjA0LDEzICs2MDUsMTUgQEAgcHJvdGVjdGVkOgorICAgICBxaW50NjQgcmVhZERh dGEoY2hhciAqZGF0YSwgcWludDY0IG1heFNpemUpIG92ZXJyaWRlCisgICAgIHsKKyAgICAgICAg IG1heFNpemUgPSBxTWluKG1heFNpemUsIHFpbnQ2NChidWYuc2l6ZSgpIC0gcG9zKCkpKTsKKy0g ICAgICAgIG1lbWNweShkYXRhLCBidWYuY29uc3REYXRhKCkgKyBwb3MoKSwgbWF4U2l6ZSk7Cisr ICAgICAgICBpZiAobWF4U2l6ZSA+IDApCisrICAgICAgICAgICAgbWVtY3B5KGRhdGEsIGJ1Zi5j b25zdERhdGEoKSArIHBvcygpLCBtYXhTaXplKTsKKyAgICAgICAgIHJldHVybiBtYXhTaXplOwor ICAgICB9CisgICAgIHFpbnQ2NCB3cml0ZURhdGEoY29uc3QgY2hhciAqZGF0YSwgcWludDY0IG1h eFNpemUpIG92ZXJyaWRlCisgICAgIHsKKyAgICAgICAgIG1heFNpemUgPSBxTWluKG1heFNpemUs IHFpbnQ2NChidWYuc2l6ZSgpIC0gcG9zKCkpKTsKKy0gICAgICAgIG1lbWNweShidWYuZGF0YSgp ICsgcG9zKCksIGRhdGEsIG1heFNpemUpOworKyAgICAgICAgaWYgKG1heFNpemUgPiAwKQorKyAg ICAgICAgICAgIG1lbWNweShidWYuZGF0YSgpICsgcG9zKCksIGRhdGEsIG1heFNpemUpOworICAg ICAgICAgcmV0dXJuIG1heFNpemU7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVz dHMvYXV0by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAgYi9xdGJhc2UvdGVz dHMvYXV0by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAKK2luZGV4IGRiNjBi ZWFkNjQuLmYzNDVhNDQ0MTQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGli L2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2Nv cmVsaWIvaW8vcXByb2Nlc3MvdHN0X3Fwcm9jZXNzLmNwcAorQEAgLTEsNyArMSw4IEBACisgLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKyAqKgorICoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29t cGFueSBMdGQuCistKiogQ29weXJpZ2h0IChDKSAyMDIwIEludGVsIENvcnBvcmF0aW9uLgorKyoq IENvcHlyaWdodCAoQykgMjAyMCBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29weXJpZ2h0IChD KSAyMDIyIEludGVsIENvcnBvcmF0aW9uLgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0Lmlv L2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0ZXN0IHN1aXRl IG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTE1MCw2ICsxNTEsOCBAQCBwcml2YXRlIHNsb3RzOgor ICAgICB2b2lkIHN0YXJ0U3RvcFN0YXJ0U3RvcEJ1ZmZlcnMoKTsKKyAgICAgdm9pZCBwcm9jZXNz RXZlbnRzSW5BUmVhZHlSZWFkU2xvdF9kYXRhKCk7CisgICAgIHZvaWQgcHJvY2Vzc0V2ZW50c0lu QVJlYWR5UmVhZFNsb3QoKTsKKysgICAgdm9pZCBzdGFydEZyb21DdXJyZW50V29ya2luZ0Rpcl9k YXRhKCk7CisrICAgIHZvaWQgc3RhcnRGcm9tQ3VycmVudFdvcmtpbmdEaXIoKTsKKyAKKyAgICAg Ly8ga2VlcCB0aGVzZSBhdCB0aGUgZW5kLCBzaW5jZSB0aGV5IHVzZSBsb3RzIG9mIHByb2Nlc3Nl cyBhbmQgc29tZXRpbWVzCisgICAgIC8vIGNhdXNlZCBvYnNjdXJlIGZhaWx1cmVzIHRvIG9jY3Vy IGluIHRlc3RzIHRoYXQgZm9sbG93ZWQgdGhlbSAoZXNwLiBvbiB0aGUgTWFjKQorQEAgLTI3MzEs NSArMjczNCw5NCBAQCB2b2lkIHRzdF9RUHJvY2Vzczo6ZmluaXNoUHJvY2Vzc0JlZm9yZVJlYWRp bmdEb25lX2RlcHJlY2F0ZWQoKQorIAorICNlbmRpZgorIAorK2VudW0gY2xhc3MgQ2hkaXJNb2Rl IHsKKysgICAgTm9uZSA9IDAsCisrICAgIEluUGFyZW50LAorKyAgICBJbkNoaWxkCisrfTsKKytR X0RFQ0xBUkVfTUVUQVRZUEUoQ2hkaXJNb2RlKQorKworK3ZvaWQgdHN0X1FQcm9jZXNzOjpzdGFy dEZyb21DdXJyZW50V29ya2luZ0Rpcl9kYXRhKCkKKyt7CisrICAgIHFSZWdpc3Rlck1ldGFUeXBl PENoZGlyTW9kZT4oKTsKKysgICAgUVRlc3Q6OmFkZENvbHVtbjxRU3RyaW5nPigicHJvZ3JhbVBy ZWZpeCIpOworKyAgICBRVGVzdDo6YWRkQ29sdW1uPENoZGlyTW9kZT4oImNoZGlyTW9kZSIpOwor KyAgICBRVGVzdDo6YWRkQ29sdW1uPGJvb2w+KCJzdWNjZXNzIik7CisrCisrICAgIGNvbnN0ZXhw ciBib29sIElzV2luZG93cyA9IHRydWUKKysjaWZkZWYgUV9PU19VTklYCisrICAgICAgICAgICAg JiYgZmFsc2UKKysjZW5kaWYKKysgICAgICAgICAgICA7CisrCisrICAgIC8vIGJhc2VsaW5lOiB0 cnlpbmcgdG8gZXhlY3V0ZSB0aGUgZGlyZWN0b3J5LCB0aGlzIGNhbid0IHBvc3NpYmx5IHN1Y2Nl ZWQhCisrICAgIFFUZXN0OjpuZXdSb3coInBsYWluLXNhbWUtY3dkIikgPDwgUVN0cmluZygpIDw8 IENoZGlyTW9kZTo6Tm9uZSA8PCBmYWxzZTsKKysKKysgICAgLy8gY3Jvc3MtcGxhdGZvcm0gYmVo YXZpb3I6IG5laXRoZXIgT1Mgc2VhcmNoZXMgdGhlIHNldFdvcmtpbmdEaXJlY3RvcnkoKQorKyAg ICAvLyBkaXIgd2l0aG91dCAiLi8iCisrICAgIFFUZXN0OjpuZXdSb3coInBsYWluLWNoaWxkLWNo ZGlyIikgPDwgUVN0cmluZygpIDw8IENoZGlyTW9kZTo6SW5DaGlsZCA8PCBmYWxzZTsKKysKKysg ICAgLy8gY3Jvc3MtcGxhdGZvcm0gYmVoYXZpb3I6IGJvdGggT1NlcyBzZWFyY2ggdGhlIHBhcmVu dCdzIENXRCB3aXRoICIuLyIKKysgICAgUVRlc3Q6Om5ld1JvdygicHJlZml4ZWQtcGFyZW50LWNo ZGlyIikgPDwgIi4vIiA8PCBDaGRpck1vZGU6OkluUGFyZW50IDw8IHRydWU7CisrCisrICAgIC8v IG9wcG9zaXRlIGJlaGF2aW9yczogV2luZG93cyBzZWFyY2hlcyB0aGUgcGFyZW50J3MgQ1dEIGFu ZCBVbml4IHNlYXJjaGVzCisrICAgIC8vIHRoZSBjaGlsZCdzIHdpdGggIi4vIgorKyAgICBRVGVz dDo6bmV3Um93KCJwcmVmaXhlZC1jaGlsZC1jaGRpciIpIDw8ICIuLyIgPDwgQ2hkaXJNb2RlOjpJ bkNoaWxkIDw8ICFJc1dpbmRvd3M7CisrCisrICAgIC8vIFdpbmRvd3Mgc2VhcmNoZXMgdGhlIHBh cmVudCdzIENXRCB3aXRob3V0ICIuLyIKKysgICAgUVRlc3Q6Om5ld1JvdygicGxhaW4tcGFyZW50 LWNoZGlyIikgPDwgUVN0cmluZygpIDw8IENoZGlyTW9kZTo6SW5QYXJlbnQgPDwgSXNXaW5kb3dz OworK30KKysKKyt2b2lkIHRzdF9RUHJvY2Vzczo6c3RhcnRGcm9tQ3VycmVudFdvcmtpbmdEaXIo KQorK3sKKysgICAgUUZFVENIKFFTdHJpbmcsIHByb2dyYW1QcmVmaXgpOworKyAgICBRRkVUQ0go Q2hkaXJNb2RlLCBjaGRpck1vZGUpOworKyAgICBRRkVUQ0goYm9vbCwgc3VjY2Vzcyk7CisrCisr ICAgIFFQcm9jZXNzIHByb2Nlc3M7CisrICAgIHFSZWdpc3Rlck1ldGFUeXBlPFFQcm9jZXNzOjpQ cm9jZXNzRXJyb3I+KCk7CisrICAgIFFTaWduYWxTcHkgZXJyb3JTcHkoJnByb2Nlc3MsICZRUHJv Y2Vzczo6ZXJyb3JPY2N1cnJlZCk7CisrICAgIFFWRVJJRlkoZXJyb3JTcHkuaXNWYWxpZCgpKTsK KysKKysgICAgLy8gYm90aCB0aGUgZGlyIG5hbWUgYW5kIHRoZSBleGVjdXRhYmxlIG5hbWUKKysg ICAgY29uc3QgUVN0cmluZyB0YXJnZXQgPSBRU3RyaW5nTGl0ZXJhbCgidGVzdFByb2Nlc3NOb3Jt YWwiKTsKKysgICAgcHJvY2Vzcy5zZXRQcm9ncmFtKHByb2dyYW1QcmVmaXggKyB0YXJnZXQpOwor KworKyNpZmRlZiBRX09TX1VOSVgKKysgICAgLy8gUmVzZXQgUEFUSCwgdG8gYmUgc3VyZSBpdCBk b2Vzbid0IGNvbnRhaW4gLiBvciB0aGUgZW1wdHkgcGF0aC4KKysgICAgLy8gV2UgY2FuJ3QgZG8g dGhpcyBvbiBXaW5kb3dzIGJlY2F1c2UgRExMcyBhcmUgc2VhcmNoZWQgaW4gUEFUSAorKyAgICAv LyBhbmQgV2luZG93cyBhbHdheXMgc2VhcmNoZXMgIi4iIGFueXdheS4KKysgICAgYXV0byByZXN0 b3JlRW52ID0gcVNjb3BlR3VhcmQoW29sZCA9IHFnZXRlbnYoIlBBVEgiKV0geworKyAgICAgICAg cXB1dGVudigiUEFUSCIsIG9sZCk7CisrICAgIH0pOworKyAgICBxcHV0ZW52KCJQQVRIIiwgIi8i KTsKKysjZW5kaWYKKysKKysgICAgc3dpdGNoIChjaGRpck1vZGUpIHsKKysgICAgY2FzZSBDaGRp ck1vZGU6OkluUGFyZW50OiB7CisrICAgICAgICBhdXRvIHJlc3RvcmVDd2QgPSBxU2NvcGVHdWFy ZChbb2xkID0gUURpcjo6Y3VycmVudFBhdGgoKV0geworKyAgICAgICAgICAgIFFEaXI6OnNldEN1 cnJlbnQob2xkKTsKKysgICAgICAgIH0pOworKyAgICAgICAgUVZFUklGWShRRGlyOjpzZXRDdXJy ZW50KHRhcmdldCkpOworKyAgICAgICAgcHJvY2Vzcy5zdGFydCgpOworKyAgICAgICAgYnJlYWs7 CisrICAgIH0KKysgICAgY2FzZSBDaGRpck1vZGU6OkluQ2hpbGQ6CisrICAgICAgICBwcm9jZXNz LnNldFdvcmtpbmdEaXJlY3RvcnkodGFyZ2V0KTsKKysgICAgICAgIFFfRkFMTFRIUk9VR0goKTsK KysgICAgY2FzZSBDaGRpck1vZGU6Ok5vbmU6CisrICAgICAgICBwcm9jZXNzLnN0YXJ0KCk7Cisr ICAgICAgICBicmVhazsKKysgICAgfQorKworKyAgICBRQ09NUEFSRShwcm9jZXNzLndhaXRGb3JT dGFydGVkKCksIHN1Y2Nlc3MpOworKyAgICBRQ09NUEFSRShlcnJvclNweS5jb3VudCgpLCBpbnQo IXN1Y2Nlc3MpKTsKKysgICAgaWYgKHN1Y2Nlc3MpIHsKKysgICAgICAgIFFWRVJJRlkocHJvY2Vz cy53YWl0Rm9yRmluaXNoZWQoKSk7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBRQ09NUEFSRShw cm9jZXNzLmVycm9yKCksIFFQcm9jZXNzOjpGYWlsZWRUb1N0YXJ0KTsKKysgICAgfQorK30KKysK KyBRVEVTVF9NQUlOKHRzdF9RUHJvY2VzcykKKyAjaW5jbHVkZSAidHN0X3Fwcm9jZXNzLm1vYyIK K2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2l0ZW1tb2RlbHMvcWNvbmNh dGVuYXRldGFibGVzcHJveHltb2RlbC90c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5j cHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFi bGVzcHJveHltb2RlbC90c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5jcHAKK2luZGV4 IGUxZWE3YTQ1NTIuLjkwOTcyY2FhNTcgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9j b3JlbGliL2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC90c3RfcWNvbmNh dGVuYXRldGFibGVzcHJveHltb2RlbC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVs aWIvaXRlbW1vZGVscy9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsL3RzdF9xY29uY2F0ZW5h dGV0YWJsZXNwcm94eW1vZGVsLmNwcAorQEAgLTExNyw2ICsxMTcsNyBAQCBwcml2YXRlIFFfU0xP VFM6CisgICAgIHZvaWQgc2hvdWxkUHJvcGFnYXRlRHJvcEFmdGVyTGFzdFJvd19kYXRhKCk7Cisg ICAgIHZvaWQgc2hvdWxkUHJvcGFnYXRlRHJvcEFmdGVyTGFzdFJvdygpOworICAgICB2b2lkIHF0 YnVnOTE3ODgoKTsKKysgICAgdm9pZCBxdGJ1ZzkxODc4KCk7CisgCisgcHJpdmF0ZToKKyAgICAg UVN0YW5kYXJkSXRlbU1vZGVsIG1vZDsKK0BAIC04NDMsNiArODQ0LDIyIEBAIHZvaWQgdHN0X1FD b25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWw6OnF0YnVnOTE3ODgoKQorICAgICBRQ09NUEFSRShw cm94eUNvbmNhdC5jb2x1bW5Db3VudCgpLCAwKTsKKyB9CisgCisrdm9pZCB0c3RfUUNvbmNhdGVu YXRlVGFibGVzUHJveHlNb2RlbDo6cXRidWc5MTg3OCgpCisreworKyAgICBRU3RhbmRhcmRJdGVt TW9kZWwgbTsKKysgICAgbS5zZXRSb3dDb3VudCg0KTsKKysgICAgbS5zZXRDb2x1bW5Db3VudCg0 KTsKKysKKysgICAgUUNvbmNhdGVuYXRlVGFibGVzUHJveHlNb2RlbCBwbTsKKysgICAgUVNvcnRG aWx0ZXJQcm94eU1vZGVsIHByb3h5RmlsdGVyOworKyAgICBwcm94eUZpbHRlci5zZXRTb3VyY2VN b2RlbCgmcG0pOworKyAgICBwcm94eUZpbHRlci5zZXRGaWx0ZXJGaXhlZFN0cmluZygic29tZXRo aW5nIik7CisrICAgIHBtLmFkZFNvdXJjZU1vZGVsKCZtKTsgIC8vIFRoaXMgc2hvdWxkIG5vdCBh c3NlcnQKKysKKysgICAgUUNPTVBBUkUocG0uY29sdW1uQ291bnQoKSwgNCk7CisrICAgIFFDT01Q QVJFKHBtLnJvd0NvdW50KCksIDQpOworK30KKysKKyBRVEVTVF9HVUlMRVNTX01BSU4odHN0X1FD b25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWwpCisgCisgI2luY2x1ZGUgInRzdF9xY29uY2F0ZW5h dGV0YWJsZXNwcm94eW1vZGVsLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9j b3JlbGliL2tlcm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRv L2NvcmVsaWIva2VybmVsL3FvYmplY3QvdHN0X3FvYmplY3QuY3BwCitpbmRleCA5YmQ2NmMwODM1 Li5lZDRhMGJhZTVkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9rZXJu ZWwvcW9iamVjdC90c3RfcW9iamVjdC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVs aWIva2VybmVsL3FvYmplY3QvdHN0X3FvYmplY3QuY3BwCitAQCAtMTU4LDYgKzE1OCw3IEBAIHBy aXZhdGUgc2xvdHM6CisgICAgIHZvaWQgbnVsbFJlY2VpdmVyKCk7CisgICAgIHZvaWQgZnVuY3Rv clJlZmVyZW5jZXNDb25uZWN0aW9uKCk7CisgICAgIHZvaWQgZGlzY29ubmVjdERpc2Nvbm5lY3Rz KCk7CisrICAgIHZvaWQgZGVjbGFyYXRpdmVEYXRhKCk7CisgfTsKKyAKKyBzdHJ1Y3QgUU9iamVj dENyZWF0ZWRPblNodXRkb3duCitAQCAtNzY3OSw1ICs3NjgwLDgxIEBAIHZvaWQgdHN0X1FPYmpl Y3Q6OmRpc2Nvbm5lY3REaXNjb25uZWN0cygpCisgUV9TVEFUSUNfQVNTRVJUKFF0UHJpdmF0ZTo6 SGFzUV9PQkpFQ1RfTWFjcm88dHN0X1FPYmplY3Q+OjpWYWx1ZSk7CisgUV9TVEFUSUNfQVNTRVJU KCFRdFByaXZhdGU6Okhhc1FfT0JKRUNUX01hY3JvPFNpYmxpbmdEZWxldGVyPjo6VmFsdWUpOwor IAorKyNpZmRlZiBRVF9CVUlMRF9JTlRFUk5BTAorKy8qCisrICAgIFNpbmNlIFFPYmplY3RQcml2 YXRlIHN0b3JlcyB0aGUgZGVjbGFyYXRpdmVEYXRhIHBvaW50ZXIgaW4gYSB1bmlvbiB3aXRoIHRo ZSBwb2ludGVyCisrICAgIHRvIHRoZSBjdXJyZW50bHkgZGVzdHJveWVkIGNoaWxkLCBjYWxscyB0 byB0aGUgUXREZWNsYXJhdGl2ZSBoYW5kbGVycyBuZWVkIHRvIGJlCisrICAgIGNvcnJlY3RseSBn dWFyZGVkLiBRVEJVRy0xMDUyODYKKysqLworK25hbWVzcGFjZSBRdERlY2xhcmF0aXZlIHsKKytz dGF0aWMgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhICp0aGVEYXRhOworKworK3N0YXRpYyB2b2lk IGRlc3Ryb3llZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGEgKmRhdGEsIFFPYmplY3QgKikKKyt7 CisrICAgIFFDT01QQVJFKGRhdGEsIHRoZURhdGEpOworK30KKytzdGF0aWMgdm9pZCBzaWduYWxF bWl0dGVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqZGF0YSwgUU9iamVjdCAqLCBpbnQsIHZv aWQgKiopCisreworKyAgICBRQ09NUEFSRShkYXRhLCB0aGVEYXRhKTsKKyt9CisrLy8gd2UgY2Fu J3QgdXNlIFFDT01QQVJFIGluIHRoZSBuZXh0IHR3byBmdW5jdGlvbnMsIGFzIHRoZXkgZG9uJ3Qg cmV0dXJuIHZvaWQKKytzdGF0aWMgaW50IHJlY2VpdmVycyhRQWJzdHJhY3REZWNsYXJhdGl2ZURh dGEgKmRhdGEsIGNvbnN0IFFPYmplY3QgKiwgaW50KQorK3sKKysgICAgUVRlc3Q6OnFDb21wYXJl KGRhdGEsIHRoZURhdGEsICJkYXRhIiwgInRoZURhdGEiLCBfX0ZJTEVfXywgX19MSU5FX18pOwor KyAgICByZXR1cm4gMDsKKyt9Cisrc3RhdGljIGJvb2wgaXNTaWduYWxDb25uZWN0ZWQoUUFic3Ry YWN0RGVjbGFyYXRpdmVEYXRhICpkYXRhLCBjb25zdCBRT2JqZWN0ICosIGludCkKKyt7CisrICAg IFFUZXN0OjpxQ29tcGFyZShkYXRhLCB0aGVEYXRhLCAiZGF0YSIsICJ0aGVEYXRhIiwgX19GSUxF X18sIF9fTElORV9fKTsKKysgICAgcmV0dXJuIHRydWU7CisrfQorKworK2NsYXNzIE9iamVjdCA6 IHB1YmxpYyBRT2JqZWN0CisreworKyAgICBRX09CSkVDVAorK3B1YmxpYzoKKysgICAgdXNpbmcg UU9iamVjdDo6UU9iamVjdDsKKysgICAgfk9iamVjdCgpCisrICAgIHsKKysgICAgICAgIGlmIChP YmplY3QgKnAgPSBzdGF0aWNfY2FzdDxPYmplY3QgKj4ocGFyZW50KCkpKQorKyAgICAgICAgICAg IHAtPmVtaXRTaWduYWwoKTsKKysgICAgfQorKworKyAgICB2b2lkIGVtaXRTaWduYWwoKQorKyAg ICB7CisrICAgICAgICBlbWl0IHRoZVNpZ25hbCgpOworKyAgICB9CisrCisrc2lnbmFsczoKKysg ICAgdm9pZCB0aGVTaWduYWwoKTsKKyt9OworKworK30KKysjZW5kaWYKKysKKyt2b2lkIHRzdF9R T2JqZWN0OjpkZWNsYXJhdGl2ZURhdGEoKQorK3sKKysjaWZkZWYgUVRfQlVJTERfSU5URVJOQUwK KysgICAgUVNjb3BlZFZhbHVlUm9sbGJhY2sgZGVzdHJveWVkKFFBYnN0cmFjdERlY2xhcmF0aXZl RGF0YTo6ZGVzdHJveWVkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXRE ZWNsYXJhdGl2ZTo6ZGVzdHJveWVkKTsKKysgICAgUVNjb3BlZFZhbHVlUm9sbGJhY2sgc2lnbmFs RW1pdHRlZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnNpZ25hbEVtaXR0ZWQsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXREZWNsYXJhdGl2ZTo6c2lnbmFsRW1p dHRlZCk7CisrICAgIFFTY29wZWRWYWx1ZVJvbGxiYWNrIHJlY2VpdmVycyhRQWJzdHJhY3REZWNs YXJhdGl2ZURhdGE6OnJlY2VpdmVycywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFF0RGVjbGFyYXRpdmU6OnJlY2VpdmVycyk7CisrICAgIFFTY29wZWRWYWx1ZVJvbGxiYWNr IGlzU2lnbmFsQ29ubmVjdGVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6aXNTaWduYWxDb25u ZWN0ZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0RGVj bGFyYXRpdmU6OmlzU2lnbmFsQ29ubmVjdGVkKTsKKysKKysgICAgUXREZWNsYXJhdGl2ZTo6T2Jq ZWN0IHA7CisrICAgIFFPYmplY3RQcml2YXRlICpwcml2ID0gUU9iamVjdFByaXZhdGU6OmdldCgm cCk7CisrICAgIHByaXYtPmRlY2xhcmF0aXZlRGF0YSA9IFF0RGVjbGFyYXRpdmU6OnRoZURhdGEg PSBuZXcgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOworKworKyAgICBjb25uZWN0KCZwLCAmUXRE ZWNsYXJhdGl2ZTo6T2JqZWN0Ojp0aGVTaWduYWwsICZwLCBbXXsKKysgICAgfSk7CisrCisrICAg IFF0RGVjbGFyYXRpdmU6Ok9iamVjdCAqY2hpbGQgPSBuZXcgUXREZWNsYXJhdGl2ZTo6T2JqZWN0 OworKyAgICBjaGlsZC0+c2V0UGFyZW50KCZwKTsKKysjZW5kaWYKKyt9CisrCisgUVRFU1RfTUFJ Tih0c3RfUU9iamVjdCkKKyAjaW5jbHVkZSAidHN0X3FvYmplY3QubW9jIgorZGlmZiAtLWdpdCBh L3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UvdHN0X3Ft aW1lZGF0YWJhc2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9taW1ldHlwZXMvcW1p bWVkYXRhYmFzZS90c3RfcW1pbWVkYXRhYmFzZS5jcHAKK2luZGV4IDBlYTQyMmVjYmMuLjFhMzI1 NjUzNGIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBlcy9x bWltZWRhdGFiYXNlL3RzdF9xbWltZWRhdGFiYXNlLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS90c3RfcW1pbWVkYXRhYmFzZS5jcHAK K0BAIC03MCwxNSArNzAsMTUgQEAgc3RhdGljIGlubGluZSBRU3RyaW5nIHRlc3RTdWl0ZVdhcm5p bmcoKQorIAorICAgICBRU3RyaW5nIHJlc3VsdDsKKyAgICAgUVRleHRTdHJlYW0gc3RyKCZyZXN1 bHQpOworLSAgICBzdHIgPDwgIlxuQ2Fubm90IGZpbmQgdGhlIHNoYXJlZC1taW1lLWluZm8gdGVz dCBzdWl0ZVxuc3RhcnRpbmcgZnJvbTogIgorKyAgICBzdHIgPDwgIlxuQ2Fubm90IGZpbmQgdGhl IHNoYXJlZC1taW1lLWluZm8gdGVzdCBzdWl0ZVxuaW4gdGhlIHBhcmVudCBvZjogIgorICAgICAg ICAgPDwgUURpcjo6dG9OYXRpdmVTZXBhcmF0b3JzKFFEaXI6OmN1cnJlbnRQYXRoKCkpIDw8ICJc biIKKyAgICAgICAgICAgICJjZCAiIDw8IFFEaXI6OnRvTmF0aXZlU2VwYXJhdG9ycyhRU3RyaW5n TGl0ZXJhbCgidGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlIikpIDw8 ICJcbiIKKy0gICAgICAgICAgICJ3Z2V0IGh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94ZGcv c2hhcmVkLW1pbWUtaW5mby9zbmFwc2hvdC9SZWxlYXNlLTEtMTAuemlwXG4iCistICAgICAgICAg ICAidW56aXAgUmVsZWFzZS0xLTEwLnppcFxuIjsKKysgICAgICAgICAgICJ3Z2V0IGh0dHBzOi8v Z2l0bGFiLmZyZWVkZXNrdG9wLm9yZy94ZGcvc2hhcmVkLW1pbWUtaW5mby8tL2FyY2hpdmUvMi4x L3NoYXJlZC1taW1lLWluZm8tMi4xLnppcFxuIgorKyAgICAgICAgICAgInVuemlwIHNoYXJlZC1t aW1lLWluZm8tMi4xLnppcFxuIjsKKyAjaWZkZWYgUV9PU19XSU4KKy0gICAgc3RyIDw8ICJta2Rp ciB0ZXN0ZmlsZXNcbnhjb3B5IC9zIFJlbGVhc2UtMS0xMCBzLW0taVxuIjsKKysgICAgc3RyIDw8 ICJta2RpciB0ZXN0ZmlsZXNcbnhjb3B5IC9zIHNoYXJlZC1taW1lLWluZm8tMi4xIHMtbS1pXG4i OworICNlbHNlCistICAgIHN0ciA8PCAibG4gLXMgUmVsZWFzZS0xLTEwIHMtbS1pXG4iOworKyAg ICBzdHIgPDwgImxuIC1zIHNoYXJlZC1taW1lLWluZm8tMi4xIHMtbS1pXG4iOworICNlbmRpZgor ICAgICByZXR1cm4gcmVzdWx0OworIH0KK0BAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCB0c3RfUU1p bWVEYXRhYmFzZTo6aW5pdFRlc3RDYXNlKCkKKyAgICAgUVZFUklGWTIoY29weVJlc291cmNlRmls ZSh4bWxGaWxlTmFtZSwgeG1sVGFyZ2V0RmlsZU5hbWUsICZlcnJvck1lc3NhZ2UpLCBxUHJpbnRh YmxlKGVycm9yTWVzc2FnZSkpOworICNlbmRpZgorIAorLSAgICBtX3Rlc3RTdWl0ZSA9IFFGSU5E VEVTVERBVEEoInMtbS1pL3Rlc3RzIik7CisrICAgIG1fdGVzdFN1aXRlID0gUUZJTkRURVNUREFU QSgicy1tLWkvdGVzdHMvbWltZS1kZXRlY3Rpb24iKTsKKyAgICAgaWYgKG1fdGVzdFN1aXRlLmlz RW1wdHkoKSkKKyAgICAgICAgIHFXYXJuaW5nKCIlcyIsIHFQcmludGFibGUodGVzdFN1aXRlV2Fy bmluZygpKSk7CisgCitAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgdHN0X1FNaW1lRGF0YWJhc2U6 OmFsbE1pbWVUeXBlcygpCisgICAgIFFWRVJJRlkoIWxzdC5pc0VtcHR5KCkpOworIAorICAgICAv LyBIYXJkY29kaW5nIHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGNoZWNrIGJvdGggcHJvdmlkZXJz IGZpbmQgdGhlIHNhbWUgbnVtYmVyIG9mIG1pbWV0eXBlcy4KKy0gICAgUUNPTVBBUkUobHN0LmNv dW50KCksIDc3OSk7CisrICAgIFFDT01QQVJFKGxzdC5jb3VudCgpLCA4MTEpOworIAorICAgICBm b3JlYWNoIChjb25zdCBRTWltZVR5cGUgJm1pbWUsIGxzdCkgeworICAgICAgICAgY29uc3QgUVN0 cmluZyBuYW1lID0gbWltZS5uYW1lKCk7CitAQCAtNjMxLDEwICs2MzEsOSBAQCB2b2lkIHRzdF9R TWltZURhdGFiYXNlOjpzdWZmaXhlc19kYXRhKCkKKyAKKyAgICAgUVRlc3Q6Om5ld1JvdygibWlt ZXR5cGUgd2l0aCBhIHNpbmdsZSBwYXR0ZXJuIikgPDwgImFwcGxpY2F0aW9uL3BkZiIgPDwgIiou cGRmIiA8PCAicGRmIjsKKyAgICAgUVRlc3Q6Om5ld1JvdygibWltZXR5cGUgd2l0aCBtdWx0aXBs ZSBwYXR0ZXJucyIpIDw8ICJhcHBsaWNhdGlvbi94LWtwcmVzZW50ZXIiIDw8ICIqLmtwcjsqLmtw dCIgPDwgImtwciI7CistICAgIFFUZXN0OjpuZXdSb3coImpwZWciKSA8PCAiaW1hZ2UvanBlZyIg PDwgIiouanBlOyouanBnOyouanBlZyIgPDwgImpwZWciOworLSAgICAvL2lmIChLTWltZVR5cGU6 OnNoYXJlZE1pbWVJbmZvVmVyc2lvbigpID4gS0RFX01BS0VfVkVSU0lPTigwLCA2MCwgMCkpIHsK Ky0gICAgICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggbWFueSBwYXR0ZXJucyIpIDw8 ICJhcHBsaWNhdGlvbi92bmQud29yZHBlcmZlY3QiIDw8ICIqLndwOyoud3A0Oyoud3A1Oyoud3A2 Oyoud3BkOyoud3BwIiA8PCAid3AiOworLSAgICAvL30KKysgICAgLy8gVGhlIHByZWZlcnJlZCBz dWZmaXggZm9yIGltYWdlL2pwZWcgaXMgKi5qcGcsIGFzIHBlciBodHRwczovL2J1Z3Mua2RlLm9y Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NzM3CisrICAgIFFUZXN0OjpuZXdSb3coImpwZWciKSA8PCAi aW1hZ2UvanBlZyIgPDwgIiouanBlOyouanBnOyouanBlZyIgPDwgImpwZyI7CisrICAgIFFUZXN0 OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggbWFueSBwYXR0ZXJucyIpIDw8ICJhcHBsaWNhdGlvbi92 bmQud29yZHBlcmZlY3QiIDw8ICIqLndwOyoud3A0Oyoud3A1Oyoud3A2Oyoud3BkOyoud3BwIiA8 PCAid3AiOworICAgICBRVGVzdDo6bmV3Um93KCJvYXNpcyB0ZXh0IG1pbWV0eXBlIikgPDwgImFw cGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dCIgPDwgIioub2R0IiA8PCAib2R0 IjsKKyAgICAgUVRlc3Q6Om5ld1Jvdygib2FzaXMgcHJlc2VudGF0aW9uIG1pbWV0eXBlIikgPDwg ImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uIiA8PCAiKi5v ZHAiIDw8ICJvZHAiOworICAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIG11bHRpcGxl IHBhdHRlcm5zIikgPDwgInRleHQvcGxhaW4iIDw8ICIqLmFzYzsqLnR4dDsqLHYiIDw8ICJ0eHQi OworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9q c29uL3RzdF9xdGpzb24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9zZXJpYWxpemF0 aW9uL2pzb24vdHN0X3F0anNvbi5jcHAKK2luZGV4IDNlNThkZDAzY2MuLmM4ZjgyZWY1ZDUgMTAw NjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3NlcmlhbGl6YXRpb24vanNvbi90 c3RfcXRqc29uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9zZXJpYWxpemF0 aW9uL2pzb24vdHN0X3F0anNvbi5jcHAKK0BAIC0xNzYsNiArMTc2LDggQEAgcHJpdmF0ZSBRX1NM T1RTOgorICAgICB2b2lkIGZyb21Ub1ZhcmlhbnRDb252ZXJzaW9uc19kYXRhKCk7CisgICAgIHZv aWQgZnJvbVRvVmFyaWFudENvbnZlcnNpb25zKCk7CisgCisrICAgIHZvaWQgbm9MZWFrT25OYW1l Q2xhc2goKTsKKysKKyBwcml2YXRlOgorICAgICBRU3RyaW5nIHRlc3REYXRhRGlyOworIH07CitA QCAtMzY4NSw1ICszNjg3LDIzIEBAIHZvaWQgdHN0X1F0SnNvbjo6ZnJvbVRvVmFyaWFudENvbnZl cnNpb25zKCkKKyAgICAgfQorIH0KKyAKKyt2b2lkIHRzdF9RdEpzb246Om5vTGVha09uTmFtZUNs YXNoKCkKKyt7CisrICAgIFFKc29uRG9jdW1lbnQgZG9jID0gUUpzb25Eb2N1bWVudDo6ZnJvbUpz b24oIntcIlwiOntcIlwiOjB9LFwiXCI6MH0iKTsKKysgICAgUVZFUklGWSghZG9jLmlzTnVsbCgp KTsKKysgICAgY29uc3QgUUpzb25PYmplY3Qgb2JqID0gZG9jLm9iamVjdCgpOworKworKyAgICAv LyBSZW1vdmVkIHRoZSBkdXBsaWNhdGUga2V5LgorKyAgICBRQ09NUEFSRShvYmoubGVuZ3RoKCks IDEpOworKworKyAgICAvLyBSZXRhaW5lZCB0aGUgbGFzdCBvZiB0aGUgZHVwbGljYXRlcy4KKysg ICAgY29uc3QgUUpzb25WYWx1ZSB2YWwgPSBvYmouYmVnaW4oKS52YWx1ZSgpOworKyAgICBRVkVS SUZZKHZhbC5pc0RvdWJsZSgpKTsKKysgICAgUUNPTVBBUkUodmFsLnRvRG91YmxlKCksIDAuMCk7 CisrCisrICAgIC8vIEl0IHNob3VsZCBub3QgbGVhay4KKysgICAgLy8gSW4gcGFydGljdWxhciBp dCBzaG91bGQgbm90IGZvcmdldCB0byBkZXJlZiB0aGUgY29udGFpbmVyIGZvciB0aGUgaW5uZXIg b2JqZWN0LgorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RdEpzb24pCisgI2luY2x1ZGUgInRzdF9x dGpzb24ubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvdGltZS9x dGltZXpvbmUvdHN0X3F0aW1lem9uZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3Rp bWUvcXRpbWV6b25lL3RzdF9xdGltZXpvbmUuY3BwCitpbmRleCBhNTliNThkNTdmLi4yNDFjM2U4 NGFjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi90aW1lL3F0aW1lem9u ZS90c3RfcXRpbWV6b25lLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi90aW1l L3F0aW1lem9uZS90c3RfcXRpbWV6b25lLmNwcAorQEAgLTYzLDYgKzYzLDcgQEAgcHJpdmF0ZSBz bG90czoKKyAgICAgdm9pZCBpc1ZhbGlkSWRfZGF0YSgpOworICAgICB2b2lkIGlzVmFsaWRJZCgp OworICAgICB2b2lkIG1hbGZvcm1lZCgpOworKyAgICB2b2lkIHNlcmlhbGl6ZSgpOworICAgICAv LyBCYWNrZW5kIHRlc3RzCisgICAgIHZvaWQgdXRjVGVzdCgpOworICAgICB2b2lkIGljdVRlc3Qo KTsKK0BAIC05NDcsNiArOTQ4LDMzIEBAIHZvaWQgdHN0X1FUaW1lWm9uZTo6bWFsZm9ybWVkKCkK KyAgICAgICAgIGJhcmYub2Zmc2V0RnJvbVV0Yyhub3cpOworIH0KKyAKKyt2b2lkIHRzdF9RVGlt ZVpvbmU6OnNlcmlhbGl6ZSgpCisreworKyAgICBpbnQgcGFydHMgPSAwOworKyNpZm5kZWYgUVRf Tk9fREVCVUdfU1RSRUFNCisrICAgIHFEZWJ1ZygpIDw8IFFUaW1lWm9uZSgpOyAvLyB0byB2ZXJp Znkgbm8gY3Jhc2gKKysgICAgcGFydHMrKzsKKysjZW5kaWYKKysjaWZuZGVmIFFUX05PX0RBVEFT VFJFQU0KKysgICAgUUJ5dGVBcnJheSBibG9iOworKyAgICB7CisrICAgICAgICBRRGF0YVN0cmVh bSBzdHJlYW0oJmJsb2IsIFFJT0RldmljZTo6V3JpdGVPbmx5KTsKKysgICAgICAgIHN0cmVhbSA8 PCBRVGltZVpvbmUoIkV1cm9wZS9Pc2xvIikgPDwgUVRpbWVab25lKDQyMCkgPDwgUVRpbWVab25l KCkgPDwgcWludDY0KC0xKTsKKysgICAgfQorKyAgICBRRGF0YVN0cmVhbSBzdHJlYW0oJmJsb2Is IFFJT0RldmljZTo6UmVhZE9ubHkpOworKyAgICBRVGltZVpvbmUgaW52YWxpZCwgb2Zmc2V0LCBv c2xvOworKyAgICBxaW50NjQgbWludXNvbmU7CisrICAgIHN0cmVhbSA+PiBvc2xvID4+IG9mZnNl dCA+PiBpbnZhbGlkID4+IG1pbnVzb25lOworKyAgICBRQ09NUEFSRShvc2xvLCBRVGltZVpvbmUo IkV1cm9wZS9Pc2xvIikpOworKyAgICBRQ09NUEFSRShvZmZzZXQsIFFUaW1lWm9uZSg0MjApKTsK KysgICAgUVZFUklGWSghaW52YWxpZC5pc1ZhbGlkKCkpOworKyAgICBRQ09NUEFSRShtaW51c29u ZSwgcWludDY0KC0xKSk7CisrICAgIHBhcnRzKys7CisrI2VuZGlmCisrICAgIGlmICghcGFydHMp CisrICAgICAgICBRU0tJUCgiTm8gc2VyaWFsaXphdGlvbiBlbmFibGVkIik7CisrfQorKworIHZv aWQgdHN0X1FUaW1lWm9uZTo6dXRjVGVzdCgpCisgeworICNpZmRlZiBRVF9CVUlMRF9JTlRFUk5B TAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2RidXMvcWRidXNpbnRlcmZhY2UvdHN0 X3FkYnVzaW50ZXJmYWNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2RidXMvcWRidXNpbnRlcmZh Y2UvdHN0X3FkYnVzaW50ZXJmYWNlLmNwcAoraW5kZXggMDU0ODBjNmRkMi4uNzBmNGM3NTc1NiAx MDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2RidXMvcWRidXNpbnRlcmZhY2UvdHN0X3Fk YnVzaW50ZXJmYWNlLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZGJ1cy9xZGJ1c2ludGVy ZmFjZS90c3RfcWRidXNpbnRlcmZhY2UuY3BwCitAQCAtMzI0LDYgKzMyNCwxMyBAQCB2b2lkIHRz dF9RREJ1c0ludGVyZmFjZTo6bm90VmFsaWQoKQorIAorICAgICBRVkVSSUZZKCFpbnRlcmZhY2Uu aXNWYWxpZCgpKTsKKyAgICAgUVZFUklGWSghUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCgmaW50 ZXJmYWNlLCAiTGlzdE5hbWVzIiwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pKTsKKysKKysgICAgLy8g V2l0aCBhIGNvbm5lY3Rpb24sIGJ1dCBlbXB0eS9udWxsIHNlcnZpY2UgYW5kIHBhdGggc3BlY2lm aWVkCisrICAgIFFEQnVzQ29ubmVjdGlvbiBjb24gPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25C dXMoKTsKKysgICAgUVZFUklGWShjb24uaXNDb25uZWN0ZWQoKSk7CisrICAgIFFEQnVzSW50ZXJm YWNlIGlmYWNlKHt9LCB7fSwge30sIGNvbik7CisrICAgIFFWRVJJRlkoIWlmYWNlLmlzVmFsaWQo KSk7CisrICAgIFFWRVJJRlkoIVFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QoJmludGVyZmFjZSwg Ikxpc3ROYW1lcyIsIFF0OjpEaXJlY3RDb25uZWN0aW9uKSk7CisgfQorIAorIHZvaWQgdHN0X1FE QnVzSW50ZXJmYWNlOjpub3RWYWxpZERlcml2ZWQoKQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0 cy9hdXRvL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlL3RzdF9xa2V5c2VxdWVuY2UuY3BwIGIvcXRi YXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UvdHN0X3FrZXlzZXF1ZW5jZS5j cHAKK2luZGV4IDg3NDQ2OGM5NTQuLjA0Y2ViNGFiNjUgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVz dHMvYXV0by9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS90c3RfcWtleXNlcXVlbmNlLmNwcAorKysr IGIvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UvdHN0X3FrZXlzZXF1 ZW5jZS5jcHAKK0BAIC01MDcsNiArNTA3LDEwIEBAIHZvaWQgdHN0X1FLZXlTZXF1ZW5jZTo6dG9T dHJpbmdGcm9tS2V5Y29kZV9kYXRhKCkKKyAgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCtBbHQrTnVt K0RlbCIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6Q29udHJvbE1vZGlmaWVyIHwgUXQ6OkFsdE1vZGlm aWVyIHwgUXQ6OktleXBhZE1vZGlmaWVyIHwgUXQ6OktleV9EZWxldGUpIDw8ICJDdHJsK0FsdCtO dW0rRGVsIjsKKyAgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCtJbnMiKSA8PCBRS2V5U2VxdWVuY2Uo UXQ6OkNvbnRyb2xNb2RpZmllciB8IFF0OjpLZXlfSW5zZXJ0KSA8PCAiQ3RybCtJbnMiOworICAg ICBRVGVzdDo6bmV3Um93KCJDdHJsK051bStJbnMoMSkiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6Oktl eV9JbnNlcnQgfCBRdDo6S2V5cGFkTW9kaWZpZXIgfCBRdDo6Q29udHJvbE1vZGlmaWVyKSA8PCAi Q3RybCtOdW0rSW5zIjsKKysgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCIpIDw8IFFLZXlTZXF1ZW5j ZShRdDo6S2V5X0NvbnRyb2wpIDw8ICJDb250cm9sIjsKKysgICAgUVRlc3Q6Om5ld1JvdygiQWx0 IikgPDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfQWx0KSA8PCAiQWx0IjsKKysgICAgUVRlc3Q6Om5l d1JvdygiU2hpZnQiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OktleV9TaGlmdCkgPDwgIlNoaWZ0IjsK KysgICAgUVRlc3Q6Om5ld1JvdygiTWV0YSIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6S2V5X01ldGEp IDw8ICJNZXRhIjsKKyB9CisgCisgdm9pZCB0c3RfUUtleVNlcXVlbmNlOjp0b1N0cmluZ0Zyb21L ZXljb2RlKCkKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9ndWkvdGV4dC9xZm9udGRh dGFiYXNlL3RzdF9xZm9udGRhdGFiYXNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS90ZXh0 L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2UuY3BwCitpbmRleCAxNWUwZWNhZGFhLi5i NGVjYTc0MjgzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL3RleHQvcWZvbnRk YXRhYmFzZS90c3RfcWZvbnRkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2d1 aS90ZXh0L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2UuY3BwCitAQCAtODEsNiArODEs OCBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHJlZ2lzdGVyT3BlblR5cGVQcmVmZXJyZWRO YW1lc1N5c3RlbSgpOworICAgICB2b2lkIHJlZ2lzdGVyT3BlblR5cGVQcmVmZXJyZWROYW1lc0Fw cGxpY2F0aW9uKCk7CisgCisrICAgIHZvaWQgc3RyZXRjaFJlc3BlY3RlZCgpOworKworIHByaXZh dGU6CisgICAgIFFTdHJpbmcgbV9sZWRGb250OworICAgICBRU3RyaW5nIG1fdGVzdEZvbnQ7CitA QCAtMzU1LDYgKzM1NywyOCBAQCBzdGF0aWMgUVN0cmluZyB0ZXN0U3RyaW5nKCkKKyAgICAgcmV0 dXJuIFFTdHJpbmdMaXRlcmFsKCJmb28gYmFyIik7CisgfQorIAorK3ZvaWQgdHN0X1FGb250RGF0 YWJhc2U6OnN0cmV0Y2hSZXNwZWN0ZWQoKQorK3sKKysgICAgaW50IGl0YWxpY0lkID0gUUZvbnRE YXRhYmFzZTo6YWRkQXBwbGljYXRpb25Gb250KG1fdGVzdEZvbnRJdGFsaWMpOworKyAgICBRVkVS SUZZKGl0YWxpY0lkICE9IC0xKTsKKysKKysgICAgUVZFUklGWSghUUZvbnREYXRhYmFzZTo6YXBw bGljYXRpb25Gb250RmFtaWxpZXMoaXRhbGljSWQpLmlzRW1wdHkoKSk7CisrCisrICAgIFFTdHJp bmcgaXRhbGljRm9udE5hbWUgPSBRRm9udERhdGFiYXNlOjphcHBsaWNhdGlvbkZvbnRGYW1pbGll cyhpdGFsaWNJZCkuZmlyc3QoKTsKKysKKysgICAgUUZvbnQgaXRhbGljRm9udCA9IFFGb250RGF0 YWJhc2UoKS5mb250KGl0YWxpY0ZvbnROYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVN0cmluZzo6ZnJvbUxhdGluMSgiSXRhbGljIiksIDE0KTsKKysg ICAgUVZFUklGWShpdGFsaWNGb250Lml0YWxpYygpKTsKKysKKysgICAgUUZvbnQgaXRhbGljU3Ry ZXRjaGVkRm9udCA9IGl0YWxpY0ZvbnQ7CisrICAgIGl0YWxpY1N0cmV0Y2hlZEZvbnQuc2V0U3Ry ZXRjaCggNDAwICk7CisrCisrICAgIFFWRVJJRlkoUUZvbnRNZXRyaWNzRihpdGFsaWNGb250KS5o b3Jpem9udGFsQWR2YW5jZShRU3RyaW5nTGl0ZXJhbCgiZm9vYmFyIikpIDwKKysgICAgICAgICAg ICBRRm9udE1ldHJpY3NGKGl0YWxpY1N0cmV0Y2hlZEZvbnQpLmhvcml6b250YWxBZHZhbmNlKFFT dHJpbmdMaXRlcmFsKCJmb29iYXIiKSkpOworKworKyAgICBRRm9udERhdGFiYXNlOjpyZW1vdmVB cHBsaWNhdGlvbkZvbnQoaXRhbGljSWQpOworK30KKysKKyB2b2lkIHRzdF9RRm9udERhdGFiYXNl Ojpjb25kZW5zZWRGb250V2lkdGhOb0ZvbnRNZXJnaW5nKCkKKyB7CisgICAgIGludCByZWd1bGFy Rm9udElkID0gUUZvbnREYXRhYmFzZTo6YWRkQXBwbGljYXRpb25Gb250KG1fdGVzdEZvbnQpOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVw bHkvdHN0X3FuZXR3b3JrcmVwbHkuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9hY2Nl c3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdvcmtyZXBseS5jcHAKK2luZGV4IDNkNGEwOTRjNDMu LmI0MjNlMTFhOTkgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL2FjY2Vz cy9xbmV0d29ya3JlcGx5L3RzdF9xbmV0d29ya3JlcGx5LmNwcAorKysrIGIvcXRiYXNlL3Rlc3Rz L2F1dG8vbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdvcmtyZXBseS5jcHAK K0BAIC0yODEsNiArMjgxLDcgQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIGlvR2V0RnJv bUZpbGVTcGVjaWFsKCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRmlsZV9kYXRhKCk7CisgICAgIHZv aWQgaW9HZXRGcm9tRmlsZSgpOworKyAgICB2b2lkIGlvR2V0RnJvbUZpbGVVcmwoKTsKKyAgICAg dm9pZCBpb0dldEZyb21GdHBfZGF0YSgpOworICAgICB2b2lkIGlvR2V0RnJvbUZ0cCgpOworICAg ICB2b2lkIGlvR2V0RnJvbUZ0cFdpdGhSZXVzZSgpOworQEAgLTMzMDAsNiArMzMwMSwxOCBAQCB2 b2lkIHRzdF9RTmV0d29ya1JlcGx5Ojppb0dldEZyb21GaWxlKCkKKyAgICAgUUNPTVBBUkUocmVh ZGVyLmRhdGEsIGRhdGEpOworIH0KKyAKKyt2b2lkIHRzdF9RTmV0d29ya1JlcGx5Ojppb0dldEZy b21GaWxlVXJsKCkKKyt7CisrICAgIC8vIFRoaXMgaW1tZWRpYXRlbHkgZmFpbHMgb24gbm9uLXdp bmRvd3MgcGxhdGZvcm1zOgorKyAgICBRTmV0d29ya1JlcXVlc3QgcmVxdWVzdChRVXJsKCJmaWxl Oi8vdW5jLXNlcnZlci9zb21lL3BhdGgiKSk7CisrICAgIFFOZXR3b3JrUmVwbHlQdHIgcmVwbHko bWFuYWdlci5nZXQocmVxdWVzdCkpOworKyAgICBRU2lnbmFsU3B5IGZpbmlzaGVkU3B5KHJlcGx5 LmdldCgpLCAmUU5ldHdvcmtSZXBseTo6ZmluaXNoZWQpOworKyAgICAvLyBRVEJVRy0xMDU2MTg6 IFRoaXMgd291bGQsIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3JtcywgbmV2ZXIgaGFwcGVuIGJlY2F1 c2UgdGhlIHNpZ25hbAorKyAgICAvLyB3YXMgZW1pdHRlZCBiZWZvcmUgdGhlIGNvbnN0cnVjdG9y IGZpbmlzaGVkLCBsZWF2aW5nIG5vIGNoYW5jZSBhdCBhbGwgdG8gY29ubmVjdCB0byB0aGUKKysg ICAgLy8gc2lnbmFsCisrICAgIFFWRVJJRlkoZmluaXNoZWRTcHkud2FpdCgpKTsKKyt9CisrCisg dm9pZCB0c3RfUU5ldHdvcmtSZXBseTo6aW9HZXRGcm9tRnRwX2RhdGEoKQorIHsKKyAgICAgUVRl c3Q6OmFkZENvbHVtbjxRU3RyaW5nPigiZmlsZU5hbWUiKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv dGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmNlcnQgYi9xdGJh c2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmNlcnQKK2lu ZGV4IDA2OWZhNmIzNDEuLjRjYzRkOWE1ZWEgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0 by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmNlcnQKKysrKyBiL3F0YmFzZS90 ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2UuY2VydAorQEAgLTEs NzUgKzEsMzQgQEAKKy1DZXJ0aWZpY2F0ZToKKy0gICAgRGF0YToKKy0gICAgICAgIFZlcnNpb246 IDMgKDB4MikKKy0gICAgICAgIFNlcmlhbCBOdW1iZXI6IDAgKDB4MCkKKy0gICAgICAgIFNpZ25h dHVyZSBBbGdvcml0aG06IHNoYTFXaXRoUlNBRW5jcnlwdGlvbgorLSAgICAgICAgSXNzdWVyOiBD PU5PLCBTVD1Pc2xvLCBMPU55ZGFsZW4sIE89Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz dWJzaWRpYXJ5KC1pZXMpLCBPVT1EZXZlbG9wbWVudCwgQ049Zmx1a2UudHJvbGwubm8vZW1haWxB ZGRyZXNzPWFoYW5zc2VuQHRyb2xsdGVjaC5jb20KKy0gICAgICAgIFZhbGlkaXR5CistICAgICAg ICAgICAgTm90IEJlZm9yZTogRGVjICA0IDAxOjEwOjMyIDIwMDcgR01UCistICAgICAgICAgICAg Tm90IEFmdGVyIDogQXByIDIxIDAxOjEwOjMyIDIwMzUgR01UCistICAgICAgICBTdWJqZWN0OiBD PU5PLCBTVD1Pc2xvLCBPPU5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt aWVzKSwgT1U9RGV2ZWxvcG1lbnQsIENOPWZsdWtlLnRyb2xsLm5vCistICAgICAgICBTdWJqZWN0 IFB1YmxpYyBLZXkgSW5mbzoKKy0gICAgICAgICAgICBQdWJsaWMgS2V5IEFsZ29yaXRobTogcnNh RW5jcnlwdGlvbgorLSAgICAgICAgICAgIFJTQSBQdWJsaWMgS2V5OiAoMTAyNCBiaXQpCistICAg ICAgICAgICAgICAgIE1vZHVsdXMgKDEwMjQgYml0KToKKy0gICAgICAgICAgICAgICAgICAgIDAw OmE3OmM4OmEwOjRhOmM0OjE5OjA1OjFiOjY2OmJhOjMyOmUyOmQyOmYxOgorLSAgICAgICAgICAg ICAgICAgICAgMWM6NmY6MTc6ODI6ZTQ6Mzk6MmU6MDE6NTE6OTA6ZGI6MDQ6MzQ6MzI6MTE6Cist ICAgICAgICAgICAgICAgICAgICAyMTpjMjowZDo2Zjo1OTpkODo1Mzo5MDo1NDozZjo4Mzo4Zjph OTpkMzpiMzoKKy0gICAgICAgICAgICAgICAgICAgIGQ1OmVlOjFhOjliOjgwOmFlOmMzOjI1OmM5 OjVlOmE1OmFmOjRiOjYwOjA1OgorLSAgICAgICAgICAgICAgICAgICAgYWE6YTA6ZDE6OTE6MDE6 MWY6Y2E6MDQ6ODM6ZTM6NTg6MWM6OTk6MzI6NDU6CistICAgICAgICAgICAgICAgICAgICA4NDo3 MDo3Mjo1ODowMzo5ODo0YTo2Mzo4Yjo0MTpmNTowODo0OTpkMjo5MToKKy0gICAgICAgICAgICAg ICAgICAgIDAyOjYwOjZiOmU0OjY0OmZlOmRkOmEwOmFhOjc0OjA4OmU5OjM0OjRjOjkxOgorLSAg ICAgICAgICAgICAgICAgICAgNWY6MTI6M2Q6Mzc6NGQ6NTQ6MmM6YWQ6N2Y6NWI6OTg6NjA6MzY6 MDI6OGM6CistICAgICAgICAgICAgICAgICAgICAzYjpmNjo0NTpmMzoyNzo2YTo5Yjo5NDo5ZAor LSAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCistICAgICAgICBYNTA5 djMgZXh0ZW5zaW9uczoKKy0gICAgICAgICAgICBYNTA5djMgQmFzaWMgQ29uc3RyYWludHM6IAor LSAgICAgICAgICAgICAgICBDQTpGQUxTRQorLSAgICAgICAgICAgIE5ldHNjYXBlIENvbW1lbnQ6 IAorLSAgICAgICAgICAgICAgICBPcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZQorLSAgICAg ICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiAKKy0gICAgICAgICAgICAgICAg MjE6ODU6MDQ6M0Q6MjM6MDE6NjY6RTU6Rjc6OUY6MUE6ODQ6MjQ6OEE6QUY6MEE6Nzk6RjQ6RTU6 QUMKKy0gICAgICAgICAgICBYNTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlmaWVyOiAKKy0gICAg ICAgICAgICAgICAgRGlyTmFtZTovQz1OTy9TVD1Pc2xvL0w9TnlkYWxlbi9PPU5va2lhIENvcnBv cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS9PVT1EZXZlbG9wbWVudC9DTj1mbHVr ZS50cm9sbC5uby9lbWFpbEFkZHJlc3M9YWhhbnNzZW5AdHJvbGx0ZWNoLmNvbQorLSAgICAgICAg ICAgICAgICBzZXJpYWw6OEU6QTg6QjQ6RTg6OTE6Qjc6NTQ6MkUKKy0KKy0gICAgU2lnbmF0dXJl IEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCistICAgICAgICA2ZDo1Nzo1ZjpkMTow NTo0MzpmMDo2MjowNTplYzoyYTo3MTphNTpkYzoxOTowODpmMjpjNDoKKy0gICAgICAgIGE2OmJk OmJiOjI1OmQ5OmNhOjg5OjAxOjBlOmU0OmNmOjFmOmMxOjhjOmM4OjI0OjE4OjM1OgorLSAgICAg ICAgNTM6NTk6N2I6YzA6NDM6YjQ6MzI6ZTY6OTg6YjI6YTY6ZWY6MTU6MDU6MGI6NDg6NWY6ZTE6 CistICAgICAgICBhMDowYzo5NzphOTphMTo3NzpkODozNToxODozMDpiYzphOTo4ZjpkMzpiNzo1 NDpjNzpmMToKKy0gICAgICAgIGE5OjllOjVkOmU2OjE5OmJmOmY2OjNjOjViOjJiOmQ4OmU0OjNl OjYyOjE4Ojg4OjhiOmQzOgorLSAgICAgICAgMjQ6ZTE6NDA6OWI6MGM6ZTY6Mjk6MTY6NjI6YWI6 ZWE6MDU6MjQ6NzA6MzY6YWE6NTU6OTM6CistICAgICAgICBlZjowMjo4MToxYjoyMzoxMDphMjow NDplYjo1Njo5NTo3NTpmYzpmODo5NDpiMTo1ZDo0MjoKKy0gICAgICAgIGM1OjNmOjM2OjQ0Ojg1 OjVkOjNhOjJlOjkwOjQ2OjhhOmEyOmI5OjZmOjg3OmFlOjBjOjE1OgorLSAgICAgICAgNDA6MTk6 MzE6OTA6ZmM6M2I6MjU6YmI6YWU6ZjE6NjY6MTM6MGQ6ODU6OTA6ZDk6NDk6MzQ6CistICAgICAg ICA4ZjpmMjo1ZDpmOTo3YTpkYjo0ZDo1ZDoyNzpmNjo3Njo5ZDozNTo4YzowNjphNjo0YzphMzoK Ky0gICAgICAgIGIxOmIyOmI2OjZmOjFkOmQ3OmEzOjAwOmZkOjcyOmViOjllOmVhOjQ0OmExOmFm OjIxOjM0OgorLSAgICAgICAgN2Q6Yzc6NDI6ZTI6NDk6OTE6MTk6OGI6YzA6YWQ6YmE6ODI6ODA6 YTg6NzE6NzA6ZjQ6MzU6CistICAgICAgICAzMTo5MTo2Mzo4NDoyMDo5NTplOTo2MDphZjo2NDo4 YjpjYzpmZjozZDo4YTo3Njo3NDozZDoKKy0gICAgICAgIGM4OjU1OjZkOmU0OjhlOmMzOjJiOjFj OmU4OjQyOjE4OmFlOjlmOmU2OjZiOjljOjM0OjA2OgorLSAgICAgICAgZWM6NmE6ZjI6YzMKKyAt LS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KKy1NSUlFRXpDQ0F2dWdBd0lCQWdJQkFEQU5CZ2tx aGtpRzl3MEJBUVVGQURDQm5ERUxNQWtHQTFVRUJoTUNUazh4CistRFRBTEJnTlZCQWdUQkU5emJH OHhFREFPQmdOVkJBY1RCMDU1WkdGc1pXNHhGakFVQmdOVkJBb1REVlJ5YjJ4cworLWRHVmphQ0JC VTBFeEZEQVNCZ05WQkFzVEMwUmxkbVZzYjNCdFpXNTBNUmN3RlFZRFZRUURFdzVtYkhWclpTNTAK Ky1jbTlzYkM1dWJ6RWxNQ01HQ1NxR1NJYjNEUUVKQVJZV1lXaGhibk56Wlc1QWRISnZiR3gwWldO b0xtTnZiVEFlCistRncwd056RXlNRFF3TVRFd016SmFGdzB6TlRBME1qRXdNVEV3TXpKYU1HTXhD ekFKQmdOVkJBWVRBazVQTVEwdworLUN3WURWUVFJRXdSUGMyeHZNUll3RkFZRFZRUUtFdzFVY205 c2JIUmxZMmdnUVZOQk1SUXdFZ1lEVlFRTEV3dEUKKy1aWFpsYkc5d2JXVnVkREVYTUJVR0ExVUVB eE1PWm14MWEyVXVkSEp2Ykd3dWJtOHdnWjh3RFFZSktvWklodmNOCistQVFFQkJRQURnWTBBTUlH SkFvR0JBS2ZJb0VyRUdRVWJacm95NHRMeEhHOFhndVE1TGdGUmtOc0VORElSSWNJTgorLWIxbllV NUJVUDRPUHFkT3oxZTRhbTRDdXd5WEpYcVd2UzJBRnFxRFJrUUVmeWdTRDQxZ2NtVEpGaEhCeVdB T1kKKy1TbU9MUWZVSVNkS1JBbUJyNUdUKzNhQ3FkQWpwTkV5Ulh4STlOMDFVTEsxL1c1aGdOZ0tN Ty9aRjh5ZHFtNVNkCistQWdNQkFBR2pnZ0VhTUlJQkZqQUpCZ05WSFJNRUFqQUFNQ3dHQ1dDR1NB R0crRUlCRFFRZkZoMVBjR1Z1VTFOTQorLUlFZGxibVZ5WVhSbFpDQkRaWEowYVdacFkyRjBaVEFk QmdOVkhRNEVGZ1FVSVlVRVBTTUJadVgzbnhxRUpJcXYKKy1Dbm4wNWF3d2dic0dBMVVkSXdTQnN6 Q0JzS0dCb3FTQm56Q0JuREVMTUFrR0ExVUVCaE1DVGs4eERUQUxCZ05WCistQkFnVEJFOXpiRzh4 RURBT0JnTlZCQWNUQjA1NVpHRnNaVzR4RmpBVUJnTlZCQW9URFZSeWIyeHNkR1ZqYUNCQgorLVUw RXhGREFTQmdOVkJBc1RDMFJsZG1Wc2IzQnRaVzUwTVJjd0ZRWURWUVFERXc1bWJIVnJaUzUwY205 c2JDNXUKKy1iekVsTUNNR0NTcUdTSWIzRFFFSkFSWVdZV2hoYm5OelpXNUFkSEp2Ykd4MFpXTm9M bU52YllJSkFJNm90T2lSCistdDFRdU1BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQnRWMS9SQlVQ d1lnWHNLbkdsM0JrSThzU212YnNsMmNxSgorLUFRN2t6eC9Cak1na0dEVlRXWHZBUTdReTVwaXlw dThWQlF0SVgrR2dESmVwb1hmWU5SZ3d2S21QMDdkVXgvR3AKKy1ubDNtR2IvMlBGc3IyT1ErWWhp SWk5TWs0VUNiRE9ZcEZtS3I2Z1VrY0RhcVZaUHZBb0ViSXhDaUJPdFdsWFg4CistK0pTeFhVTEZQ elpFaFYwNkxwQkdpcUs1YjRldURCVkFHVEdRL0RzbHU2N3haaE1OaFpEWlNUU1A4bDM1ZXR0Tgor LVhTZjJkcDAxakFhbVRLT3hzclp2SGRlakFQMXk2NTdxUktHdklUUjl4MExpU1pFWmk4Q3R1b0tB cUhGdzlEVXgKKy1rV09FSUpYcFlLOWtpOHovUFlwMmREM0lWVzNranNNckhPaENHSzZmNW11Y05B YnNhdkxECisrTUlJRjZ6Q0NBOU9nQXdJQkFnSVVmbzlhbUp0SkdXcVdFNmYrU2tBTzg1emtHcjR3 RFFZSktvWklodmNOQVFFTAorK0JRQXdnWU14Q3pBSkJnTlZCQVlUQWs1UE1RMHdDd1lEVlFRSURB UlBjMnh2TVEwd0N3WURWUVFIREFSUGMyeHYKKytNUmN3RlFZRFZRUUtEQTVVYUdVZ1VYUWdRMjl0 Y0dGdWVURU1NQW9HQTFVRUN3d0RVaVpFTVJJd0VBWURWUVFECisrREFsSU1pQlVaWE4wWlhJeEd6 QVpCZ2txaGtpRzl3MEJDUUVXREcxcGJtbHRhVUJ4ZEM1cGJ6QWdGdzB5TURFdworK01qWXhNakF4 TXpGYUdBOHlNVEl3TVRBd01qRXlNREV6TVZvd2dZTXhDekFKQmdOVkJBWVRBazVQTVEwd0N3WUQK KytWUVFJREFSUGMyeHZNUTB3Q3dZRFZRUUhEQVJQYzJ4dk1SY3dGUVlEVlFRS0RBNVVhR1VnVVhR Z1EyOXRjR0Z1CisrZVRFTU1Bb0dBMVVFQ3d3RFVpWkVNUkl3RUFZRFZRUUREQWxJTWlCVVpYTjBa WEl4R3pBWkJna3Foa2lHOXcwQgorK0NRRVdERzFwYm1sdGFVQnhkQzVwYnpDQ0FpSXdEUVlKS29a SWh2Y05BUUVCQlFBRGdnSVBBRENDQWdvQ2dnSUIKKytBT2lVcDUrRTRibG91S0g3cStyVk5SOE5v WVgyWGtCVytxK3JweTF6dTVzc1JTemJxeEFqRHg5ZGtodDdRbG5mCisrVmxEVDAwSnZwT1dkZXVQ b241OTE1ZWRRUnNZNFVubDZtS0gyOXJhM090VWExL3lDSlhzR1ZKVEtDajdrNEJ4YgorKzVtWnpi L2ZUbFpudE1MZFRJQk1mVWJ3NjJGS2lyMVdqS0ljSjlmQ29HOEphR2VLVk80Umg1cDBlemQ0VVVV SWQKKytyMUJYbDVOcWRxeTJ2VE1zRURuak9zRDNlZ2t2OEkyU0tONE82bi9DM3dXWXBNT1dZWmtH b1ppS3o3ckpzL2kvCisrZXo3YnNWN0psd2R6VGxocEp6a2NPU1ZGQlA2SmxFT3hUTk54WjF3dEt5 N1B0Wkdtc1NTQVRxMmU2K2J3MzhBZQorK09wMFhuenpxY0dqdEREb2ZCbVQ3T0Z6WldqUzlWWlM2 K0RPT2UyUUhXbGUxbkNIY0h5SDRrdTZJUmxzcjl4a1IKKytOQUlsT2ZudkhIeHFKVWVub2VhWjRv UURqQ0JLUzFLWHlnSk8vdEw3QkxUUVZuL3hLMUVtUHZLTm5qeldrNHRSCisrUG5pYlVoaHM1NjM1 cXBPVS9ZUHFGQmgxSmpWcnVaYnNXY0RBaFJjZXcwdXhPTlhPYTlFKzRsdHRROXlTWWExQQorK0x2 V3FKdUFYN2d1MkJzQk1MeXFmbTgxMVluQTdDSUZNeU8rSGxxbWtMRmZ2NUwveElSQVhSN2wyNllH TzBWd1gKKytDR2pNZno0TlZQTU1rZTRuQjdxYTlOa3BYUUJRS01tczNRemQ1SlcwSHk5UnVqNU84 R1BjRlptVjB0d2pkMXVKCisrUEQvY0Fqa1dMYVhqZE5zSjE2UVdjMm5naFFSUzZIWXFLUlg2aitD WE94dXBBZ01CQUFHalV6QlJNQjBHQTFVZAorK0RnUVdCQlJTQ09VNThqOU5KWmtNYW10NjIzcXlD cmhOM1RBZkJnTlZIU01FR0RBV2dCUlNDT1U1OGo5Tkpaa00KKythbXQ2MjNxeUNyaE4zVEFQQmdO VkhSTUJBZjhFQlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUNBUUNxCisrcTRqeHNXZU5E djVOcTE0aEp0RjlIQitaTDY0emNadFJqSlAxWWdOczBRcHBLSUNtalBPTDJuSU1HbUkvaktycwor KzBlR0FMLzlYWE5WSFB4bTFPUE9uY3ZpbU1NbVU2ZW1aZnBNZEV0VGZLUDQzK1BnOUhnS1JqTG9R cDQwNnZHZVEKKys4a2kvbWJCaHJJdFZQZ0VtM3R1MkFGQTAyWFRZaStZeENJOWtSWkxHa00zRmJn dE91VExQbDBaOXkra2lQYzlGCisrdUNTQzAzYW5CRXF2K3ZEU0k4K3dPRHltUS9JSjNKeXoxbHhJ UkRmcDRxQWVrbXkwalUyYzkxVk9ISEVtT21xcQorK2txeWdHRlJkd2JlOTltOXlQNjNyNnEwYjVL M1gyVW5KNmJuczBobVR3VGhZd3BWUFhMVThqZGFUZGRiTXVrTjIKKysvRWY5NlRzdzhuV09FT1BN eVNIT1RJUGd3eVpScDI2YjBrQTlFbWhMd09QNDAxU3hYVlFDbVNSbXR3TmFnbXRnCisrakpLbVpv WUJOKy8vRDQ1aWJLOHo2UTBvT205UCtXaGYvdVVYZWhjUnhCeHlWM3h6N2swd0tHUWJIai9kZHdj eQorK0lVb0lONGxyQWxpYitsSzE3MGtUS04zNTJQRG1ycG8yZ21JelBFc2Z1cktBSU1TZWxEbDZI K2tpaDE2QnRaOHkKKytOejZmaDlTb3FyZzNPU0F3YXJlOHB4VjdrNTFjckJNb1BMTjc4S29SVjhN RkNLNEs3RmRkcTRyUklTcTZoaVhxCisrcjFuc2pvRVB1S005aHVwcm1aVlplOXQ1WWNEYTJJK3di M0lpRTN1d3BaYkFkYUxEeVE1bjZGL3Fwc2lJa1pYbgorK2d0Y0Y3b3FwRzVvWXJ3Q2NaNTN5L2V6 VWdVZzdQbFN6Mlh3QUd2UXRnZz09CisgLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorZGlmZiAt LWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1 a2Uua2V5IGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9m bHVrZS5rZXkKK2luZGV4IDlkMTY2NGQ2MDkuLjMzN2NlNTQxYTYgMTAwNjQ0CistLS0gYS9xdGJh c2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmtleQorKysr IGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5r ZXkKK0BAIC0xLDE1ICsxLDUyIEBACistLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQor LU1JSUNYQUlCQUFLQmdRQ255S0JLeEJrRkcyYTZNdUxTOFJ4dkY0TGtPUzRCVVpEYkJEUXlFU0hD RFc5WjJGT1EKKy1WRCtEajZuVHM5WHVHcHVBcnNNbHlWNmxyMHRnQmFxZzBaRUJIOG9FZytOWUhK a3lSWVJ3Y2xnRG1FcGppMEgxCistQ0VuU2tRSmdhK1JrL3QyZ3FuUUk2VFJNa1Y4U1BUZE5WQ3l0 ZjF1WVlEWUNqRHYyUmZNbmFwdVVuUUlEQVFBQgorLUFvR0FORnpMa2FuVGVTR05GTTB1dHRCaXBG VDlGNGEwMGRxSHo2Sm5PN3pYQVQyNkk1cjhzVTFwcVFCYjZ1THoKKy0vK1F6NVp3azhSVUFRY3NN UmdKZXR1UFFVYjBKWmpGNkR1djI0aE5henFYQkN1N0FaelVlbmphZndtS0MvOHJpCistS3BYM2ZU d3F6ZnppLy9GS0dnYlhRODB5eWtTU2xpREwza24vZHJBVHhzTENnUUVDUVFEWGhFRldMSjB2Vlox cworLTFFa2YrM05JVEUrRFIxNlgrTFE0VzZ2eUVIQWpUYmFOV3RjVEtkQVdMQTJsNk40V0FBUFlT aTZhd20rek14eDQKKy1Wb21WVHNqZEFrRUF4MHorZTduYXRMZUZjcnJxOHBiVSt3YTZTQVAxVmZo UVdLaXR4TDFlN3UvUU85ME5DcHhFCistb1FZS3pNa21tcE9PRmpRd0VNQXkxZHZGTWJtNExIbGV3 UUpBQy9rc0RCYVVjUUhIcWprdEN0clViOHJWakF5VworLUE4bHNjY2tlQjJmRVl5RzVKNmRKVmFZ NENsTk9PczV5TURTMkFmazFGNkgveEt2dFEvNUN6SW5BL1FKQVREdWIKKy1LK0JQVThqTzlxK2dw dUlpM1ZJWmR1cHNzVkdtQ2dPYlZDSExha0c0dU8wNHk5SXlQaFY5bEE5dEFMdG9JZjRjCistVkl2 djVmV0dYQnJaNDhrWkFRSkJBSm1WQ2R6UXhkOUxaSTV2eGlqVUNqNUVJNGUreDVEUnFWVXZ5UDhL Q1pyQworLUFpTnlvRFA4NVQraEJaYVNYSzNhWUdwVndlbHlqM2J2bzFHclROd05XTHc9CistLS0t LS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0KKystLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0tLS0K KytNSUlKUWdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NTd3dnZ2tvQWdFQUFvSUNBUURvbEtl ZmhPRzVhTGloCisrKzZ2cTFUVWZEYUdGOWw1QVZ2cXZxNmN0Yzd1YkxFVXMyNnNRSXc4ZlhaSWJl MEpaMzFaUTA5TkNiNlRsblhyagorKzZKK2ZkZVhuVUViR09GSjVlcGloOXZhMnR6clZHdGY4Z2lW N0JsU1V5Z28rNU9BY1crWm1jMi8zMDVXWjdUQzMKKytVeUFUSDFHOE90aFNvcTlWb3lpSENmWHdx QnZDV2huaWxUdUVZZWFkSHMzZUZGRkNIYTlRVjVlVGFuYXN0cjB6CisrTEJBNTR6ckE5M29KTC9D TmtpamVEdXAvd3Q4Rm1LVERsbUdaQnFHWWlzKzZ5YlA0djNzKzI3RmV5WmNIYzA1WQorK2FTYzVI RGtsUlFUK2laUkRzVXpUY1dkY0xTc3V6N1dScHJFa2dFNnRudXZtOE4vQUhqcWRGNTg4Nm5CbzdR dzYKKytId1prK3poYzJWbzB2VldVdXZnempudGtCMXBYdFp3aDNCOGgrSkx1aUVaYksvY1pFVFFD SlRuNTd4eDhhaVZICisrcDZIbW1lS0VBNHdnU2t0U2w4b0NUdjdTK3dTMDBGWi84U3RSSmo3eWpa NDgxcE9MVVQ1NG0xSVliT2V0K2FxVAorK2xQMkQ2aFFZZFNZMWE3bVc3Rm5Bd0lVWEhzTkxzVGpW em12UlB1SmJiVVBja21HdFFDNzFxaWJnRis0THRnYkEKKytUQzhxbjV2TmRXSndPd2lCVE1qdmg1 YXBwQ3hYNytTLzhTRVFGMGU1ZHVtQmp0RmNGd2hvekg4K0RWVHpESkh1CisrSndlNm12VFpLVjBB VUNqSnJOME0zZVNWdEI4dlVibytUdkJqM0JXWmxkTGNJM2RiaVR3LzNBSTVGaTJsNDNUYgorK0Nk ZWtGbk5wNElVRVV1aDJLaWtWK28vZ2x6c2JxUUlEQVFBQkFvSUNBRncxcTZ0cjVJNDh2WTdERity WHN1TG4KKys1WlVXRTFJUTZmekI0bHI3Mm5Kdi85RUVHbk1nWXp0OVBwTVVzRDZ2ZENwQmdTMkMw KzZSSEFyRnpKdE5BK1JNCisraUhMSUc3Szc3MDJ2ZXlyL3hCeC9Nd2lTbE1lTXYvWHBrRnhWSTZF NnNrTUdHMnMzQU1YeEt2SlR5NUNwUngrSQorK2VRRnlMRytZYTFYMmxnSmVzL3ErL0NwQUhrT2pD T3BjTHlTUUM1Tlo3NHE3MzRWN25TZG1uK1pzM3RZRWgrTy8KKytlaXV3VFAvajViMzhUZTV2VlRx RHhUY2lKUG1sam1YTEN3YTBOMTAwbFdsYmNwdnc4cWJxaVRJMkptM1hDYlVFCisrQXpIalc5dm1y RjNjUlMxZlh4S0ZHU2h3M1NScWxrYnhqZmVXb2k4cURQVUJTNG04TE9yOHFHOVdvNU5mb24wegor K3pMUDRiY2kzekhEdlZjYWFacnJzVUJzL3laYmcrRGdrYTFEbVg3ZWttZWNjcjJ5VGRLREZnUHVw WVV5eFZiVGwKKythOVpMSnlzakZEN3JnQnYxWmNsSG9uTHA2VmJtK1pvVHF2dGVvNGlrQXk2TDlS dEJXSjIzWEVLMzRQa1AvK2M1CisrMnZXWmFPcm5qU2VCSGJGY2U4Y2RKU3hxV3BQK2VTQ0k1STlY YkRyWUZJc1EvZ3FLZ3R6REt5MmloSjJZOFNUTAorK3lPNGh5RlBGanhjK0dnNC9QMlBwbVQ1Q1ky dHk0NE0wQldzK0pHVzk2Q0pQcnJwbGYybG1RVVFKajVMWlk2NlgKKytaLzRDOUw3Wll0S1orYnM1 U3ZVNDZ5V3VnQXZRWlgyMlhtOXhMWFd5VlhSZHgzYmorM00zZkRuRjlkaS96ZGJoCisrQ2dMeDdv V1BOclhjN0ZDYWpubjlBb0lCQVFENUZNWXdScHc5TldUOVdEeFF3eCtjU0k0SWNiZDg4QnlUVzYz UworK0x6ZVJ3WkEwSjkvU2Z3TythQlJ1cHpjOUdrR1hDaVpjR013M0FHc0N0aWc4eUZsdzhFNUtu ek43S2xmdERNbk0KKys5TlV4eHpsUjhWd0t5TG5aZkc3c0RUbDA1N1psVXVqbnFobXQvRjhGN2RJ eTdGVk8xZEUvOG5uZ0ErRllUQ09HCisrVVpkR2p3eUJEbERNMEpKZFVXR1kzeHNsdXRjcENETjVt elNUS2p5OWRyTXZJbUFzaFJhd3hSRjZXQnBuN3ZyMgorK25DNnZjaXFmeDFNengxdnlrMEptMGls YXlkRGRMTUFEanQvaUw0TmtyMEJFczRrK1V6UWlLRHdwOGd1N2FiUTEKKytlQmZ4ZDlJYXI0aHRR YTJJMUV3bDZQMDFHL3ErWll3Z0hoSjlSVm40QXhRWGVmSUxBb0lCQVFEdkNvdU9SZFFYCisrQzh3 c3lwN013WGxGLzNOUWVOTjUvK0IybWhieHJCT2Y3UG1NQ1hMbmtSV2Nqd0p0enlwV0ZxSjBzcWFp LzIrMAorK2JxYk1jalg1bWFUOHN0VDJzaGwzelhlL0VqdDJlM1RCWXBjMXR5dXNlczhLYjVCTVU4 aHU2dFRkM0cyQ01YcEQKKytkVDZEVmVtSlpDVHR3ajlhQk5JeFNpenZsZ01vbEpuQ3B6aFBubGZI U0k2RStnM20vTFRUbzNId2JqTVN3L1VxCisraXJnak9wSTJ3U0JCNkxaUFNnanZmY1lQUnlXVWsx Nkw0QTV1U1gwY0FEbm92REZMYTUvaDB3SnZOL09vQ1NRZworK3JMQ1hHNUUxOEV5TDVXYzU4QkNZ MVp2eG1qRzNsUXRnUHhZdTJKd2MzNlIveS9KS2x4VzVzdUVSNVpOcGJiRDQKKyt1T3lUdDJWeE1R MmJBb0lCQVFDNStNelJGcWRvL0FqZkw1WTVKcmJmVlR6WENURGEwOXhDR2QxNlpVNjBRVFdOCisr KzRlZC9yK28xc1VLcVVjUkZCMk16RU0vMkRRQmpRcFpCL0NiRVd2V2ExWEpXWHh5cFhib3d2ZVpV K1FxT25tTgorK3VRdmo4V0x5QTNvK1BORjllOVF2YXV3Q3JIcG44VnB4YnRQV3VhWW9LblVGcmVG WlpReEhoUEd4UkJJUzJKT1oKKytlRHJUOFphV25rQ2toMUFacDVzbVE3MUxPcHJTbG1Lcmc0amQx R2pDVk14UVI1TjVLWGJ0eXYwT1RDWi9VRnFLCisrMmFSQnNNUHlKZ2thQkNoa1pQTFJjS3djKy93 bFFSeDFmSFFiMTRETlRBcE14b1hGTzdlT3dxbU9rcEF0OWl5bAorK1NCSXdvUzBVVUk1YWI4OCti Qm1YTnZLY3VGZE51UTRub3dUSlVuOXBBb0lCQURNTmtJTEJYU3ZTNURlSXl1TzIKKytTcDF0a29a VVYrNU5mUFkzc01ESzNLSWliYVcvK3QrRU9CWm80TDd0S1FDYjh2UnpsMjFtbXNmeGZnUmFQRGJq CisrM3IzdHY5ZzBiNFlMeHhCeTUycEZzY2ovc29YUmFpMTdTUzdVWndBMlFLK1h6Z0RZYkRjTE5D Nm1Jc1RRRzRHeAorK2RzV2szL3pzM0t1VVNRYWVobXdyV0srZklVSzM4YzFwTEs4djdMb3hyTGtx eGxId1owNFJ0aEh3OEtUdGhIN1gKKytQbmwxSjBMRjhDU2VPeWZXTFN1UFVma1QwR0V6cHRuTkhw RWJhSGZRTTZSNmVhR2hWSlBGNkFabWU0eTZZWWdnCisrbTJpaGhTdDFuMFhWRVdwSFlXanhGeTNt SzJtejc1dW5GQzRMTStORVkycDJ6dVVRb0N3N05qblkzUVlyZkNueAorK3JSTUNnZ0VBWGVYc01T TEZqanl1b0w3aUtiQXhvNTJIRC9QMGZCb3k1OEx5UmN3Zk5WcjBsdllhbjRwWUV4K28KKytLaWpJ aDlLMTZQcVhaWEtNQTl2MDAzQit1bG1GOGJKN1NkZENaNU5Hdm5GaFVURGU0RGRUS2dwMlJ1d1Ez QnNjCisrM3NrUElEYmhWRVR5T0xDdHlzMzRVU0hycThVLzBEbEdZM2VMUmZ4dzlHbmJLeFNCR2Ev S0V1L3FRTFBOVW81MAorKzd4SFpEZzdHS2VDM2txTkplcUtNOXJrcDBWeklHa0VuYUQ5MTI3TGVO RG1FUkRmZnR4SnpGb0MvVEh2VUJMZlUKKys2U3VzMlpZd1JFOFZGdktDMzBRNDV0L2M1NFgzSXVo WXZBdWlDdVRteWZFNHJ1eXp5T3dLemhVa2VlTHExQVBYCisrZzB2ZUZieWZ6bEowcThxekQvaWZm cXFJYTJaU21RPT0KKystLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3Rlc3RzL2F1dG8vb3RoZXIvcWFjY2Vzc2liaWxpdHlsaW51eC90c3RfcWFjY2Vzc2liaWxp dHlsaW51eC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9vdGhlci9xYWNjZXNzaWJpbGl0eWxpbnV4 L3RzdF9xYWNjZXNzaWJpbGl0eWxpbnV4LmNwcAoraW5kZXggN2JhMzcxNWUxMy4uNzUyYWExMjJm NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL290aGVyL3FhY2Nlc3NpYmlsaXR5bGlu dXgvdHN0X3FhY2Nlc3NpYmlsaXR5bGludXguY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9v dGhlci9xYWNjZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNjZXNzaWJpbGl0eWxpbnV4LmNwcAorQEAg LTE3OSw2ICsxNzksNyBAQCB2b2lkIHRzdF9RQWNjZXNzaWJpbGl0eUxpbnV4Ojppbml0VGVzdENh c2UoKQorICAgICBRVkVSSUZZKCFhZGRyZXNzLmlzRW1wdHkoKSk7CisgCisgICAgIG1fd2luZG93 ID0gbmV3IEFjY2Vzc2libGVUZXN0V2luZG93KCk7CisrICAgIG1fd2luZG93LT5zZXRPYmplY3RO YW1lKCJtYWluV2luZG93Il9MMSk7CisgICAgIG1fd2luZG93LT5zaG93KCk7CisgCisgICAgIFFW RVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZChtX3dpbmRvdykpOworQEAgLTIzNiw4 ICsyMzcsMTEgQEAgYm9vbCBoYXNTdGF0ZShRREJ1c0ludGVyZmFjZSAqaW50ZXJmYWNlLCBBdHNw aVN0YXRlVHlwZSBzdGF0ZSkKKyB2b2lkIHRzdF9RQWNjZXNzaWJpbGl0eUxpbnV4Ojp0ZXN0TGFi ZWwoKQorIHsKKyAgICAgUUxhYmVsICpsID0gbmV3IFFMYWJlbChtX3dpbmRvdyk7CisrICAgIGwt PnNldE9iamVjdE5hbWUoInRoZU9iamVjdE5hbWUiX0wxKTsKKyAgICAgbC0+c2V0VGV4dCgiSGVs bG8gQTExeSIpOworICAgICBtX3dpbmRvdy0+YWRkV2lkZ2V0KGwpOworKyAgICBhdXRvIGExMXlF bXB0eSA9IG5ldyBRTGFiZWwobV93aW5kb3cpOworKyAgICBtX3dpbmRvdy0+YWRkV2lkZ2V0KGwp OworIAorICAgICAvLyBBcHBsaWNhdGlvbgorICAgICBRQ09NUEFSRShnZXRQYXJlbnQobWFpbldp bmRvdyksIFFMYXRpbjFTdHJpbmcoQVRTUElfREJVU19QQVRIX1JPT1QpKTsKK0BAIC0yNDksNiAr MjUzLDggQEAgdm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlMaW51eDo6dGVzdExhYmVsKCkKKyAgICAg UUNPTVBBUkUoZ2V0Q2hpbGRyZW4obGFiZWxJbnRlcmZhY2UpLmNvdW50KCksIDApOworICAgICBR Q09NUEFSRShsYWJlbEludGVyZmFjZS0+Y2FsbChRREJ1czo6QmxvY2ssICJHZXRSb2xlTmFtZSIp LmFyZ3VtZW50cygpLmZpcnN0KCkudG9TdHJpbmcoKSwgUUxhdGluMVN0cmluZygibGFiZWwiKSk7 CisgICAgIFFDT01QQVJFKGxhYmVsSW50ZXJmYWNlLT5jYWxsKFFEQnVzOjpCbG9jaywgIkdldFJv bGUiKS5hcmd1bWVudHMoKS5maXJzdCgpLnRvVUludCgpLCAyOXUpOworKyAgICBRQ09NUEFSRShs YWJlbEludGVyZmFjZS0+Y2FsbChRREJ1czo6QmxvY2ssICJHZXRBY2Nlc3NpYmxlSWQiKS5hcmd1 bWVudHMoKS5maXJzdCgpLnRvU3RyaW5nKCksCisrICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmco Im1haW5XaW5kb3cudGhlT2JqZWN0TmFtZSIpKTsKKyAgICAgUUNPTVBBUkUoZ2V0UGFyZW50KGxh YmVsSW50ZXJmYWNlKSwgbWFpbldpbmRvdy0+cGF0aCgpKTsKKyAgICAgUVZFUklGWSghaGFzU3Rh dGUobGFiZWxJbnRlcmZhY2UsIEFUU1BJX1NUQVRFX0VESVRBQkxFKSk7CisgICAgIFFWRVJJRlko aGFzU3RhdGUobGFiZWxJbnRlcmZhY2UsIEFUU1BJX1NUQVRFX1JFQURfT05MWSkpOworQEAgLTI1 Niw3ICsyNjIsMTIgQEAgdm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlMaW51eDo6dGVzdExhYmVsKCkK KyAgICAgbC0+c2V0VGV4dCgiTmV3IHRleHQiKTsKKyAgICAgUUNPTVBBUkUobGFiZWxJbnRlcmZh Y2UtPnByb3BlcnR5KCJOYW1lIikudG9TdHJpbmcoKSwgbC0+dGV4dCgpKTsKKyAKKysgICAgYXV0 byAqYTExeUVtcHR5SW50ZXJmYWNlID0gZ2V0SW50ZXJmYWNlKGNoaWxkcmVuLmF0KDEpLCAib3Jn LmExMXkuYXRzcGkuQWNjZXNzaWJsZSIpOworKyAgICBRQ09NUEFSRShhMTF5RW1wdHlJbnRlcmZh Y2UtPmNhbGwoUURCdXM6OkJsb2NrLCAiR2V0QWNjZXNzaWJsZUlkIikuYXJndW1lbnRzKCkuZmly c3QoKS50b1N0cmluZygpLAorKyAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJtYWluV2luZG93 LlFMYWJlbCIpKTsKKysKKyAgICAgbV93aW5kb3ctPmNsZWFyQ2hpbGRyZW4oKTsKKysgICAgZGVs ZXRlIGExMXlFbXB0eUludGVyZmFjZTsKKyAgICAgZGVsZXRlIGxhYmVsSW50ZXJmYWNlOworIH0K KyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9zcWwva2VybmVsL3FzcWxxdWVyeS90 c3RfcXNxbHF1ZXJ5LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5 L3RzdF9xc3FscXVlcnkuY3BwCitpbmRleCA3NmRmNjFjODkyLi42ZDZkNjViNzkxIDEwMDY0NAor LS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vc3FsL2tlcm5lbC9xc3FscXVlcnkvdHN0X3FzcWxxdWVy eS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5L3RzdF9x c3FscXVlcnkuY3BwCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoq CistKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb3B5cmln aHQgKEMpIDIwMjIgVGhlIFF0IENvbXBhbnkgTHRkLgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3 LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0ZXN0 IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTY4LDYgKzY4LDggQEAgcHJpdmF0ZSBzbG90 czoKKyAgICAgdm9pZCBxdWVyeV9leGVjKCk7CisgICAgIHZvaWQgZXhlY0Vycm9yUmVjb3Zlcnlf ZGF0YSgpIHsgZ2VuZXJpY19kYXRhKCk7IH0KKyAgICAgdm9pZCBleGVjRXJyb3JSZWNvdmVyeSgp OworKyAgICB2b2lkIHByZW1hdHVyZUV4ZWNfZGF0YSgpIHsgZ2VuZXJpY19kYXRhKCk7IH0KKysg ICAgdm9pZCBwcmVtYXR1cmVFeGVjKCk7CisgICAgIHZvaWQgZmlyc3RfZGF0YSgpIHsgZ2VuZXJp Y19kYXRhKCk7IH0KKyAgICAgdm9pZCBmaXJzdCgpOworICAgICB2b2lkIG5leHRfZGF0YSgpIHsg Z2VuZXJpY19kYXRhKCk7IH0KK0BAIC0yNzcwLDYgKzI3NzIsMzUgQEAgdm9pZCB0c3RfUVNxbFF1 ZXJ5OjpleGVjRXJyb3JSZWNvdmVyeSgpCisgICAgIFFWRVJJRllfU1FMKCBxLCBleGVjKCkgKTsK KyB9CisgCisrdm9pZCB0c3RfUVNxbFF1ZXJ5OjpwcmVtYXR1cmVFeGVjKCkKKyt7CisrICAgIFFG RVRDSChRU3RyaW5nLCBkYk5hbWUpOworKyAgICAvLyBXZSBvbmx5IHdhbnQgdGhlIGVuZ2luZSBu YW1lLCBmb3IgYWRkRGF0YWJhc2UoKToKKysgICAgaW50IGN1dCA9IGRiTmFtZS5pbmRleE9mKFFD aGFyKCdAJykpOworKyAgICBpZiAoY3V0IDwgMCkKKysgICAgICAgIFFTS0lQKCJGYWlsZWQgdG8g cGFyc2UgZGF0YWJhc2UgdHlwZSBvdXQgb2YgbmFtZSIpOworKyAgICBkYk5hbWUudHJ1bmNhdGUo Y3V0KTsKKysgICAgY3V0ID0gZGJOYW1lLmluZGV4T2YoUUNoYXIoJ18nKSk7CisrICAgIGlmIChj dXQgPj0gMCkKKysgICAgICAgIGRiTmFtZSA9IGRiTmFtZS5taWQoY3V0ICsgMSk7CisrCisrICAg IGF1dG8gZGIgPSBRU3FsRGF0YWJhc2U6OmFkZERhdGFiYXNlKGRiTmFtZSk7CisrICAgIFFTcWxR dWVyeSBxKGRiKTsKKysKKysgICAgUVRlc3Q6Omlnbm9yZU1lc3NhZ2UoUXRXYXJuaW5nTXNnLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAiUVNxbERhdGFiYXNlUHJpdmF0ZTo6cmVtb3ZlRGF0 YWJhc2U6IGNvbm5lY3Rpb24gIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAiJ3F0X3NxbF9k ZWZhdWx0X2Nvbm5lY3Rpb24nIGlzIHN0aWxsIGluIHVzZSwgYWxsICIKKysgICAgICAgICAgICAg ICAgICAgICAgICAgInF1ZXJpZXMgd2lsbCBjZWFzZSB0byB3b3JrLiIpOworKyAgICBRVGVzdDo6 aWdub3JlTWVzc2FnZShRdFdhcm5pbmdNc2csCisrICAgICAgICAgICAgICAgICAgICAgICAgICJR U3FsRGF0YWJhc2VQcml2YXRlOjphZGREYXRhYmFzZTogZHVwbGljYXRlIGNvbm5lY3Rpb24gbmFt ZSAiCisrICAgICAgICAgICAgICAgICAgICAgICAgICIncXRfc3FsX2RlZmF1bHRfY29ubmVjdGlv bicsIG9sZCBjb25uZWN0aW9uIHJlbW92ZWQuIik7CisrICAgIGF1dG8gb3RoZXJEYiA9IFFTcWxE YXRhYmFzZTo6YWRkRGF0YWJhc2UoZGJOYW1lKTsKKysKKysgICAgUVRlc3Q6Omlnbm9yZU1lc3Nh Z2UoUXRXYXJuaW5nTXNnLCAiUVNxbFF1ZXJ5OjpleGVjOiBjYWxsZWQgYmVmb3JlIGRyaXZlciBo YXMgYmVlbiBzZXQgdXAiKTsKKysgICAgLy8gUVRCVUctMTAwMDM3OiBzaG91bGRuJ3QgY3Jhc2gg IQorKyAgICBRVkVSSUZZKCFxLmV4ZWMoInNlbGVjdCBzdHVmZiBmcm9tIFRoZVZvaWQiKSk7Cisr fQorKworIHZvaWQgdHN0X1FTcWxRdWVyeTo6bGFzdEluc2VydElkKCkKKyB7CisgICAgIFFGRVRD SCggUVN0cmluZywgZGJOYW1lICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdGVz dGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIvdHN0X3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rl ci5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rl ci90c3RfcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAoraW5kZXggNGFhM2Y4ZDYwYi4uZDIw NTBhNjFhYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rlc3RsaWIvcWFic3RyYWN0 aXRlbW1vZGVsdGVzdGVyL3RzdF9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCisrKysgYi9x dGJhc2UvdGVzdHMvYXV0by90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci90c3RfcWFi c3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAorQEAgLTExNSw2ICsxMTUsMTAgQEAgdm9pZCB0c3Rf UUFic3RyYWN0SXRlbU1vZGVsVGVzdGVyOjpzdGFuZGFyZEl0ZW1Nb2RlbFplcm9Db2x1bW5zKCkK KyAgICAgLy8gUVRCVUctOTI4ODYKKyAgICAgbW9kZWwuaW5zZXJ0Um93cygwLCA1KTsKKyAgICAg bW9kZWwucmVtb3ZlUm93cygxLCAyKTsKKysKKysgICAgY29uc3QgUU1vZGVsSW5kZXggcGFyZW50 SW5kZXggPSBtb2RlbC5pbmRleCgwLCAwKTsKKysgICAgbW9kZWwuaW5zZXJ0Um93cygwLCA1LCBw YXJlbnRJbmRleCk7CisrICAgIG1vZGVsLnJlbW92ZVJvd3MoMSwgMiwgcGFyZW50SW5kZXgpOwor IH0KKyAKKyB2b2lkIHRzdF9RQWJzdHJhY3RJdGVtTW9kZWxUZXN0ZXI6OnRlc3RJbnNlcnRUaHJv dWdoUHJveHkoKQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9hbGxt b2NzX2Jhc2VsaW5lX2luLmpzb24gYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvYWxsbW9j c19iYXNlbGluZV9pbi5qc29uCitpbmRleCAxMmE0YTIyYTE5Li5jZTUxOGU3OGZiIDEwMDY0NAor LS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL2FsbG1vY3NfYmFzZWxpbmVfaW4uanNv bgorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL2FsbG1vY3NfYmFzZWxpbmVfaW4u anNvbgorQEAgLTY2OCw1MCArNjY4LDYgQEAKKyAgICAgICAgICJpbnB1dEZpbGUiOiAidGFzazE5 MjU1Mi5oIiwKKyAgICAgICAgICJvdXRwdXRSZXZpc2lvbiI6IDY3CisgICAgIH0sCistICAgIHsK Ky0gICAgICAgICJjbGFzc2VzIjogWworLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAg ImNsYXNzTmFtZSI6ICJJbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uIiwKKy0gICAgICAg ICAgICAgICAgIm9iamVjdCI6IHRydWUsCistICAgICAgICAgICAgICAgICJxdWFsaWZpZWRDbGFz c05hbWUiOiAiSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbiIsCistICAgICAgICAgICAg ICAgICJzbG90cyI6IFsKKy0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAg ICAgICAgICAiYWNjZXNzIjogInB1YmxpYyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5h bWUiOiAiYSIsCistICAgICAgICAgICAgICAgICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIK Ky0gICAgICAgICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAg ICAgICAgICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAg ICAgICAgICJuYW1lIjogImIiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5UeXBl IjogInZvaWQiCistICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAgICAgICAg eworLSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAg ICAgICAgICAgICAgICAgICAibmFtZSI6ICJjIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAi cmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAgICAgICAgfSwKKy0gICAgICAgICAg ICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1YmxpYyIs CistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZCIsCistICAgICAgICAgICAgICAg ICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAgICAgICAgICAgICAgIH0sCist ICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyI6 ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImUiLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiCistICAgICAgICAgICAgICAg ICAgICB9CistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICJzdXBlckNsYXNz ZXMiOiBbCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAg ImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlFP YmplY3QiCistICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIF0KKy0gICAg ICAgICAgICB9CistICAgICAgICBdLAorLSAgICAgICAgImlucHV0RmlsZSI6ICJ0YXNrMTg5OTk2 LmgiLAorLSAgICAgICAgIm91dHB1dFJldmlzaW9uIjogNjcKKy0gICAgfSwKKyAgICAgeworICAg ICAgICAgImNsYXNzZXMiOiBbCisgICAgICAgICAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL3Rvb2xzL21vYy9tb2MucHJvIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9j L21vYy5wcm8KK2luZGV4IGMzMjRiM2E4Y2QuLjRhY2ViNzhkYzAgMTAwNjQ0CistLS0gYS9xdGJh c2UvdGVzdHMvYXV0by90b29scy9tb2MvbW9jLnBybworKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8v dG9vbHMvbW9jL21vYy5wcm8KK0BAIC0xNSw3ICsxNSw3IEBAIGNyb3NzX2NvbXBpbGU6IERFRklO RVMgKz0gTU9DX0NST1NTX0NPTVBJTEVECisgSEVBREVSUyArPSB1c2luZy1uYW1lc3BhY2VzLmgg bm8ta2V5d29yZHMuaCB0YXNrODc4ODMuaCBjLWNvbW1lbnRzLmggYmFja3NsYXNoLW5ld2xpbmVz Lmggb2xkc3R5bGUtY2FzdHMuaCBcCisgICAgICAgICAgICBzbG90cy13aXRoLXZvaWQtdGVtcGxh dGUuaCBxaW52b2thYmxlLmggbmFtZXNwYWNlZC1mbGFncy5oIHRyaWdyYXBocy5oIFwKKyAgICAg ICAgICAgIGVzY2FwZXMtaW4tc3RyaW5nLWxpdGVyYWxzLmggY3N0eWxlLWVudW1zLmggcXByaXZh dGVzbG90cy5oIGdhZGdldHdpdGhub2VudW1zLmggXAorLSAgICAgICAgICAgZGlyLWluLWluY2x1 ZGUtcGF0aC5oIHNpbmdsZV9mdW5jdGlvbl9rZXl3b3JkLmggdGFzazE5MjU1Mi5oIHRhc2sxODk5 OTYuaCBcCisrICAgICAgICAgICBkaXItaW4taW5jbHVkZS1wYXRoLmggc2luZ2xlX2Z1bmN0aW9u X2tleXdvcmQuaCB0YXNrMTkyNTUyLmggXAorICAgICAgICAgICAgdGFzazIzNDkwOS5oIHRhc2sy NDAzNjguaCBwdXJlLXZpcnR1YWwtc2lnbmFscy5oIGN4eDExLWVudW1zLmggXAorICAgICAgICAg ICAgY3h4MTEtZmluYWwtY2xhc3Nlcy5oIFwKKyAgICAgICAgICAgIGN4eDExLWV4cGxpY2l0LW92 ZXJyaWRlLWNvbnRyb2wuaCBcCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMv bW9jL3Rhc2sxODk5OTYuaCBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90YXNrMTg5OTk2 LmgKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggZjk0YTA1MWIzYS4uMDAwMDAwMDAw MAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3Rhc2sxODk5OTYuaAorKysrIC9k ZXYvbnVsbAorQEAgLTEsNDcgKzAsMCBAQAorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistKioKKy0q KiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorLSoqIENvbnRhY3Q6IGh0 dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKy0qKgorLSoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IHRoZSB0ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorLSoqCistKiogJFFUX0JFR0lOX0xJ Q0VOU0U6R1BMLUVYQ0VQVCQKKy0qKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKy0qKiBMaWNl bnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBm aWxlIGluCistKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVt ZW50IHByb3ZpZGVkIHdpdGggdGhlCistKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGlu IGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCistKiogYSB3cml0dGVuIGFn cmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVy bXMKKy0qKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0 aW9ucy4gRm9yIGZ1cnRoZXIKKy0qKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBh dCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorLSoqCistKiogR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgVXNhZ2UKKy0qKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVz ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKy0qKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKy0qKiBGb3VuZGF0 aW9uIHdpdGggZXhjZXB0aW9ucyBhcyBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwz LUVYQ0VQVAorLSoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVh c2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKy0qKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCistKiogYmUgbWV0OiBo dHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKy0qKgorLSoqICRRVF9F TkRfTElDRU5TRSQKKy0qKgorLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistLy8gaW5saW5lIGZ1bmN0 aW9ucyBjYW4gaGF2ZSB0aHJvdyBkZWNsYXJhdGlvbnMKKy0KKy0jaWZuZGVmIFRBU0sxODk5OTZf SAorLSNkZWZpbmUgVEFTSzE4OTk5Nl9ICistCistI2luY2x1ZGUgPFFPYmplY3Q+CistCistY2xh c3MgSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbiA6IHB1YmxpYyBRT2JqZWN0Cistewor LSAgICBRX09CSkVDVAorLQorLXB1YmxpYyBzbG90czoKKy0gICAgdm9pZCBhKCkgdGhyb3coKSB7 IH0KKy0gICAgdm9pZCBiKCkgY29uc3QgdGhyb3coKSB7IH0KKy0gICAgdm9pZCBjKCkgdGhyb3co KTsKKy0gICAgdm9pZCBkKCkgdGhyb3coaW50KSB7IH0KKy0gICAgdm9pZCBlKCkgY29uc3QgdGhy b3coaW50LGRvdWJsZSkgeyB9CistfTsKKy0KKy0jZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJhc2Uv dGVzdHMvYXV0by90b29scy9tb2MvdHN0X21vYy5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by90b29s cy9tb2MvdHN0X21vYy5jcHAKK2luZGV4IGM3MTZhZWFkMjEuLjE1ZGQ5ZTQxZTUgMTAwNjQ0Cist LS0gYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdHN0X21vYy5jcHAKKysrKyBiL3F0YmFz ZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90c3RfbW9jLmNwcAorQEAgLTYzMSw3ICs2MzEsNiBAQCBw dWJsaWM6CisgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBpbml0VGVzdENhc2UoKTsKKyAKKy0g ICAgdm9pZCBzbG90V2l0aEV4Y2VwdGlvbigpIHRocm93KE15U3RydWN0KTsKKyAgICAgdm9pZCBk b250U3RyaXBOYW1lc3BhY2VzKCk7CisgICAgIHZvaWQgb2xkU3R5bGVDYXN0cygpOworICAgICB2 b2lkIHdhcm5PbkV4dHJhU2lnbmFsU2xvdFF1YWxpZmlhY3Rpb24oKTsKK0BAIC02NzMsNyArNjcy LDYgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB0ZW1wbGF0ZUd0R3QoKTsKKyAgICAgdm9p ZCBxcHJpdmF0ZXNsb3RzKCk7CisgICAgIHZvaWQgcXByaXZhdGVwcm9wZXJ0aWVzKCk7CistICAg IHZvaWQgaW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbigpOworICAgICB2b2lkIHdhcm5P blByb3BlcnR5V2l0aG91dFJFQUQoKTsKKyAgICAgdm9pZCBjb25zdHJ1Y3RvcnMoKTsKKyAgICAg dm9pZCB0eXBlbmFtZVdpdGhVbnNpZ25lZCgpOworQEAgLTc4NCwxMiArNzgyLDYgQEAgdm9pZCB0 c3RfTW9jOjppbml0VGVzdENhc2UoKQorICNlbmRpZgorIH0KKyAKKy12b2lkIHRzdF9Nb2M6OnNs b3RXaXRoRXhjZXB0aW9uKCkgdGhyb3coTXlTdHJ1Y3QpCisteworLSAgICAvLyBiZSBoYXBweQor LSAgICBRVkVSSUZZKHRydWUpOworLX0KKy0KKyB2b2lkIHRzdF9Nb2M6OmRvbnRTdHJpcE5hbWVz cGFjZXMoKQorIHsKKyAgICAgU2VuZGVyIHNlbmRlcjsKK0BAIC04MjQsNyArODE2LDcgQEAgdm9p ZCB0c3RfTW9jOjpvbGRTdHlsZUNhc3RzKCkKKyAKKyAgICAgUVN0cmluZ0xpc3QgYXJnczsKKyAg ICAgYXJncyA8PCAiLWMiIDw8ICIteCIgPDwgImMrKyIgPDwgIi1Xb2xkLXN0eWxlLWNhc3QiIDw8 ICItSSIgPDwgIi4iCistICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIg PDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxMSIgPDwgIi0iOworKyAgICAg ICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICIt ZlBJQyIgPDwgIi1zdGQ9YysrMXoiIDw8ICItIjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwgYXJn cyk7CisgICAgIFFWRVJJRlkocHJvYy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJvYy53cml0 ZShtb2NPdXQpOworQEAgLTg5NCw3ICs4ODYsNyBAQCB2b2lkIHRzdF9Nb2M6OmlucHV0RmlsZU5h bWVXaXRoRG90c0J1dE5vRXh0ZW5zaW9uKCkKKyAKKyAgICAgUVN0cmluZ0xpc3QgYXJnczsKKyAg ICAgYXJncyA8PCAiLWMiIDw8ICIteCIgPDwgImMrKyIgPDwgIi1JIiA8PCAiLi4iCistICAgICAg ICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIgPDwgIi1m UElDIiA8PCAiLXN0ZD1jKysxMSIgPDwgIi0iOworKyAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNs dWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMXoi IDw8ICItIjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwgYXJncyk7CisgICAgIFFWRVJJRlkocHJv Yy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJvYy53cml0ZShtb2NPdXQpOworQEAgLTExNzQs NyArMTE2Niw3IEBAIHZvaWQgdHN0X01vYzo6aWdub3JlT3B0aW9uQ2xhc2hlcygpCisgICAgIFFT dHJpbmdMaXN0IGdjY0FyZ3M7CisgICAgIGdjY0FyZ3MgPDwgIi1jIiA8PCAiLXgiIDw8ICJjKysi IDw8ICItSSIgPDwgIi4uIgorICAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAi LUkiIDw8IGluY2x1ZGVEaXIgPDwgIi1vIiA8PCAiL2Rldi9udWxsIgorLSAgICAgICAgIDw8ICIt ZlBJQyIgPDwgIi1zdGQ9YysrMTEiIDw8ICAiLSI7CisrICAgICAgICAgPDwgIi1mUElDIiA8PCAi LXN0ZD1jKysxeiIgPDwgICItIjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwgZ2NjQXJncyk7Cisg ICAgIFFWRVJJRlkocHJvYy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJvYy53cml0ZShtb2NP dXQpOworQEAgLTE1OTMsMjEgKzE1ODUsNiBAQCB2b2lkIHRzdF9Nb2M6OnFwcml2YXRlcHJvcGVy dGllcygpCisgCisgfQorIAorLSNpbmNsdWRlICJ0YXNrMTg5OTk2LmgiCistCistdm9pZCBJbmxp bmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uOjpjKCkgdGhyb3coKSB7fQorLQorLXZvaWQgdHN0 X01vYzo6aW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbigpCisteworLSAgICBJbmxpbmVT bG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uIHRzdDsKKy0gICAgY29uc3QgUU1ldGFPYmplY3QgKm1v YmogPSB0c3QubWV0YU9iamVjdCgpOworLSAgICBRVkVSSUZZKG1vYmotPmluZGV4T2ZTbG90KCJh KCkiKSAhPSAtMSk7CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhPZlNsb3QoImIoKSIpICE9IC0x KTsKKy0gICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgiYygpIikgIT0gLTEpOworLSAgICBR VkVSSUZZKG1vYmotPmluZGV4T2ZTbG90KCJkKCkiKSAhPSAtMSk7CistICAgIFFWRVJJRlkobW9i ai0+aW5kZXhPZlNsb3QoImUoKSIpICE9IC0xKTsKKy19CistCisgdm9pZCB0c3RfTW9jOjp3YXJu T25Qcm9wZXJ0eVdpdGhvdXRSRUFEKCkKKyB7CisgI2lmZGVmIE1PQ19DUk9TU19DT01QSUxFRAor QEAgLTE4NjksNyArMTg0Niw3IEBAIHZvaWQgdHN0X01vYzo6bm90aWZ5RXJyb3IoKQorIAorICAg ICBRU3RyaW5nTGlzdCBhcmdzOworICAgICBhcmdzIDw8ICItYyIgPDwgIi14IiA8PCAiYysrIiA8 PCAiLUkiIDw8ICIuIgorLSAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8i IDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMTEiIDw8ICItIjsKKysgICAg ICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAi LWZQSUMiIDw8ICItc3RkPWMrKzF6IiA8PCAiLSI7CisgICAgIHByb2Muc3RhcnQoImdjYyIsIGFy Z3MpOworICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0ZWQoKSk7CisgICAgIHByb2Mud3Jp dGUobW9jT3V0KTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12 aWV3cy9xaGVhZGVydmlldy90c3RfcWhlYWRlcnZpZXcuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8v d2lkZ2V0cy9pdGVtdmlld3MvcWhlYWRlcnZpZXcvdHN0X3FoZWFkZXJ2aWV3LmNwcAoraW5kZXgg YzM1NWVlOTY2NS4uODhjMDlkZThlMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dp ZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2aWV3L3RzdF9xaGVhZGVydmlldy5jcHAKKysrKyBiL3F0 YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2aWV3L3RzdF9xaGVhZGVy dmlldy5jcHAKK0BAIC0yNTEsNiArMjUxLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB0 ZXN0UmVzZXRDYWNoZWRTaXplSGludCgpOworICAgICB2b2lkIHN0YXR1c1RpcHMoKTsKKyAgICAg dm9pZCB0ZXN0UmVtb3ZpbmdDb2x1bW5zVmlhTGF5b3V0Q2hhbmdlZCgpOworKyAgICB2b2lkIHRl c3RNb2RlbE1vdmluZ0NvbHVtbnMoKTsKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgc2V0dXBU ZXN0RGF0YShib29sIHVzZV9yZXNldF9tb2RlbCA9IGZhbHNlKTsKK0BAIC0zNjAsNiArMzYxLDEy IEBAIHB1YmxpYzoKKyAgICAgICAgIGVuZFJlbW92ZUNvbHVtbnMoKTsKKyAgICAgfQorIAorKyAg ICB2b2lkIG1vdmVDb2x1bW4oaW50IGZyb20sIGludCB0bykKKysgICAgeworKyAgICAgICAgYmVn aW5Nb3ZlQ29sdW1ucyhRTW9kZWxJbmRleCgpLCBmcm9tLCBmcm9tLCBRTW9kZWxJbmRleCgpLCB0 byk7CisrICAgICAgICBlbmRNb3ZlQ29sdW1ucygpOworKyAgICB9CisrCisgICAgIHZvaWQgY2xl YW51cCgpCisgICAgIHsKKyAgICAgICAgIGVtaXQgbGF5b3V0QWJvdXRUb0JlQ2hhbmdlZCgpOwor QEAgLTM2MjcsNSArMzYzNCwxOCBAQCB2b2lkIHRzdF9RSGVhZGVyVmlldzo6dGVzdFJlbW92aW5n Q29sdW1uc1ZpYUxheW91dENoYW5nZWQoKQorICAgICAvLyBUaGUgbWFpbiBwb2ludCBvZiB0aGlz IHRlc3QgaXMgdGhhdCB0aGUgc2VjdGlvbi1zaXplIHJlc3RvcmluZyBjb2RlIGRpZG4ndCBnbyBv dXQgb2YgYm91bmRzLgorIH0KKyAKKyt2b2lkIHRzdF9RSGVhZGVyVmlldzo6dGVzdE1vZGVsTW92 aW5nQ29sdW1ucygpCisreworKyAgICBRdFRlc3RNb2RlbCBtb2RlbCgxMCwgMTApOworKyAgICBR SGVhZGVyVmlldyBodihRdDo6SG9yaXpvbnRhbCk7CisrICAgIGh2LnNldE1vZGVsKCZtb2RlbCk7 CisrICAgIGh2LnJlc2l6ZVNlY3Rpb25zKFFIZWFkZXJWaWV3OjpSZXNpemVUb0NvbnRlbnRzKTsK KysgICAgaHYuc2hvdygpOworKworKyAgICBRUGVyc2lzdGVudE1vZGVsSW5kZXggaW5kZXgzID0g bW9kZWwuaW5kZXgoMCwgMyk7CisrICAgIG1vZGVsLm1vdmVDb2x1bW4oMywgMSk7CisrICAgIFFD T01QQVJFKGluZGV4My5jb2x1bW4oKSwgMSk7CisrfQorKworIFFURVNUX01BSU4odHN0X1FIZWFk ZXJWaWV3KQorICNpbmNsdWRlICJ0c3RfcWhlYWRlcnZpZXcubW9jIgorZGlmZiAtLWdpdCBhL3F0 YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcvdHN0X3F0YWJsZXZp ZXcuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy90 c3RfcXRhYmxldmlldy5jcHAKK2luZGV4IDc2MTM1N2IyNTIuLjA2YmI3MDYwNzQgMTAwNjQ0Cist LS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3L3RzdF9x dGFibGV2aWV3LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3Mv cXRhYmxldmlldy90c3RfcXRhYmxldmlldy5jcHAKK0BAIC0zOTcsNiArMzk3LDcgQEAgcHJpdmF0 ZSBzbG90czoKKyAgICAgdm9pZCBjaGVja0hlYWRlck1pblNpemUoKTsKKyAKKyAgICAgdm9pZCBy ZXNpemVUb0NvbnRlbnRzKCk7CisrICAgIHZvaWQgcmVzaXplVG9Db250ZW50c1NwYW5zKCk7Cisg CisgICAgIHZvaWQgdGFiRm9jdXMoKTsKKyAgICAgdm9pZCBiaWdNb2RlbCgpOworQEAgLTM3MjEs NiArMzcyMiw3MCBAQCB2b2lkIHRzdF9RVGFibGVWaWV3OjpyZXNpemVUb0NvbnRlbnRzKCkKKyAK KyB9CisgCisrCisrY2xhc3MgU3Bhbk1vZGVsIDogcHVibGljIFFBYnN0cmFjdFRhYmxlTW9kZWwK Kyt7CisrcHVibGljOgorKyAgICBTcGFuTW9kZWwoYm9vbCBzZWN0aW9uc01vdmVkKQorKyAgICAg ICAgOiBfc2VjdGlvbnNNb3ZlZChzZWN0aW9uc01vdmVkKQorKyAgICB7fQorKyAgICBpbnQgY29s dW1uQ291bnQoY29uc3QgUU1vZGVsSW5kZXggJiA9IHt9KSBjb25zdCBvdmVycmlkZSB7IHJldHVy biAyOyB9CisrICAgIGludCByb3dDb3VudChjb25zdCBRTW9kZWxJbmRleCAmID0ge30pIGNvbnN0 IG92ZXJyaWRlIHsgcmV0dXJuIDE7IH0KKysgICAgUVZhcmlhbnQgZGF0YShjb25zdCBRTW9kZWxJ bmRleCAmaWR4LCBpbnQgcm9sZSA9IFF0OjpEaXNwbGF5Um9sZSkgY29uc3Qgb3ZlcnJpZGUKKysg ICAgeworKyAgICAgICAgaWYgKHJvbGUgIT0gUXQ6OkRpc3BsYXlSb2xlKQorKyAgICAgICAgICAg IHJldHVybiBRVmFyaWFudCgpOworKyAgICAgICAgY29uc3QgaW50IGNvbCA9IF9zZWN0aW9uc01v dmVkID8gMSAtIGlkeC5jb2x1bW4oKSA6IGlkeC5jb2x1bW4oKTsKKysgICAgICAgIGlmIChjb2wg PT0gMCkKKysgICAgICAgICAgICByZXR1cm4gIkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBj b25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlk dW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiI7CisrICAgICAgICByZXR1cm4g UVZhcmlhbnQoKTsKKysgICAgfQorK3ByaXZhdGU6CisrICAgIGJvb2wgX3NlY3Rpb25zTW92ZWQ7 CisrfTsKKysKKysKKyt2b2lkIHRzdF9RVGFibGVWaWV3OjpyZXNpemVUb0NvbnRlbnRzU3BhbnMo KQorK3sKKysgICAgU3Bhbk1vZGVsIG1vZGVsMShmYWxzZSk7CisrICAgIFNwYW5Nb2RlbCBtb2Rl bDIodHJ1ZSk7CisrICAgIFFUYWJsZVZpZXcgdmlldzEsIHZpZXcyLCB2aWV3MzsKKysgICAgdmll dzEuc2V0TW9kZWwoJm1vZGVsMSk7CisrICAgIHZpZXcyLnNldE1vZGVsKCZtb2RlbDIpOworKyAg ICB2aWV3Mi5ob3Jpem9udGFsSGVhZGVyKCktPm1vdmVTZWN0aW9uKDAsIDEpOworKyAgICB2aWV3 My5zZXRNb2RlbCgmbW9kZWwxKTsKKysKKysgICAgdmlldzEuc2V0U3BhbigwLCAwLCAxLCAyKTsK KysgICAgdmlldzIuc2V0U3BhbigwLCAxLCAxLCAyKTsKKysgICAgdmlldzEuc2hvdygpOworKyAg ICB2aWV3Mi5zaG93KCk7CisrICAgIHZpZXczLnNob3coKTsKKysgICAgUVZFUklGWShRVGVzdDo6 cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3MSkpOworKyAgICBRVkVSSUZZKFFUZXN0OjpxV2Fp dEZvcldpbmRvd0V4cG9zZWQoJnZpZXcyKSk7CisrICAgIFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9y V2luZG93RXhwb3NlZCgmdmlldzMpKTsKKysgICAgdmlldzEuc2V0Q29sdW1uV2lkdGgoMCwgMTAw KTsKKysgICAgdmlldzEuc2V0Q29sdW1uV2lkdGgoMSwgMTAwKTsKKysgICAgdmlldzIuc2V0Q29s dW1uV2lkdGgoMCwgMTAwKTsKKysgICAgdmlldzIuc2V0Q29sdW1uV2lkdGgoMSwgMTAwKTsKKysg ICAgdmlldzMuc2V0Q29sdW1uV2lkdGgoMCwgMjAwKTsKKysKKysgICAgdmlldzEucmVzaXplUm93 VG9Db250ZW50cygwKTsKKysgICAgdmlldzIucmVzaXplUm93VG9Db250ZW50cygwKTsKKysgICAg dmlldzMucmVzaXplUm93VG9Db250ZW50cygwKTsKKysgICAgUUNPTVBBUkUodmlldzEucm93SGVp Z2h0KDApLCB2aWV3My5yb3dIZWlnaHQoMCkpOworKyAgICBRQ09NUEFSRSh2aWV3Mi5yb3dIZWln aHQoMCksIHZpZXczLnJvd0hlaWdodCgwKSk7CisrCisrICAgIHZpZXczLnJlc2l6ZUNvbHVtblRv Q29udGVudHMoMCk7CisrICAgIHZpZXczLnJlc2l6ZVJvd1RvQ29udGVudHMoMCk7CisrICAgIC8v IGhlaWdodCBzaG91bGQgYmUgb25seSAxIHRleHQgbGluZSBmb3IgZWFzeSB0ZXN0aW5nCisrICAg IHZpZXcxLnNldFJvd0hlaWdodCgwLCB2aWV3My52ZXJ0aWNhbEhlYWRlcigpLT5zZWN0aW9uU2l6 ZSgwKSk7CisrICAgIHZpZXcyLnNldFJvd0hlaWdodCgwLCB2aWV3My52ZXJ0aWNhbEhlYWRlcigp LT5zZWN0aW9uU2l6ZSgwKSk7CisrICAgIHZpZXcxLnJlc2l6ZUNvbHVtblRvQ29udGVudHMoMCk7 CisrICAgIHZpZXcyLnJlc2l6ZUNvbHVtblRvQ29udGVudHMoMSk7CisrICAgIFFDT01QQVJFKHZp ZXcxLmNvbHVtbldpZHRoKDApLCB2aWV3My5jb2x1bW5XaWR0aCgwKSAtIHZpZXcxLmNvbHVtbldp ZHRoKDEpKTsKKysgICAgUUNPTVBBUkUodmlldzIuY29sdW1uV2lkdGgoMCksIHZpZXczLmNvbHVt bldpZHRoKDApIC0gdmlldzIuY29sdW1uV2lkdGgoMSkpOworK30KKysKKyBRVF9CRUdJTl9OQU1F U1BBQ0UKKyBleHRlcm4gYm9vbCBRX1dJREdFVFNfRVhQT1JUIHF0X3RhYl9hbGxfd2lkZ2V0cygp OyAvLyBxYXBwbGljYXRpb24uY3BwCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0 YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMva2VybmVsL3FhcHBsaWNhdGlvbi90c3RfcWFwcGxpY2F0 aW9uLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMva2VybmVsL3FhcHBsaWNhdGlvbi90 c3RfcWFwcGxpY2F0aW9uLmNwcAoraW5kZXggYTNiOGVmNzhkOC4uNDk1NWNlYmQ1ZCAxMDA2NDQK Ky0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMva2VybmVsL3FhcHBsaWNhdGlvbi90c3Rf cWFwcGxpY2F0aW9uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9rZXJuZWwv cWFwcGxpY2F0aW9uL3RzdF9xYXBwbGljYXRpb24uY3BwCitAQCAtMTQ5OCw3ICsxNDk4LDcgQEAg dm9pZCB0c3RfUUFwcGxpY2F0aW9uOjpkZXNrdG9wU2V0dGluZ3NBd2FyZSgpCisgICAgIGVudmly b25tZW50ICs9IFFMYXRpbjFTdHJpbmcoIlFUX01BQ19ESVNBQkxFX0ZPUkVHUk9VTkRfQVBQTElD QVRJT05fVFJBTlNGT1JNPTEiKTsKKyAgICAgdGVzdFByb2Nlc3Muc2V0RW52aXJvbm1lbnQoZW52 aXJvbm1lbnQpOworICNlbmRpZgorLSAgICB0ZXN0UHJvY2Vzcy5zdGFydCgiZGVza3RvcHNldHRp bmdzYXdhcmVfaGVscGVyIik7CisrICAgIHRlc3RQcm9jZXNzLnN0YXJ0KCIuL2Rlc2t0b3BzZXR0 aW5nc2F3YXJlX2hlbHBlciIpOworICAgICBRVkVSSUZZMih0ZXN0UHJvY2Vzcy53YWl0Rm9yU3Rh cnRlZCgpLAorICAgICAgICAgICAgICBxUHJpbnRhYmxlKFFTdHJpbmc6OmZyb21MYXRpbjEoIkNh bm5vdCBzdGFydCAnZGVza3RvcHNldHRpbmdzYXdhcmVfaGVscGVyJzogJTEiKS5hcmcodGVzdFBy b2Nlc3MuZXJyb3JTdHJpbmcoKSkpKTsKKyAgICAgUVZFUklGWSh0ZXN0UHJvY2Vzcy53YWl0Rm9y RmluaXNoZWQoMTAwMDApKTsKK0BAIC0yNDUyLDcgKzI0NTIsNyBAQCB2b2lkIHRzdF9RQXBwbGlj YXRpb246OnF0YnVnXzEyNjczKCkKKyAjaWYgUVRfQ09ORklHKHByb2Nlc3MpCisgICAgIFFQcm9j ZXNzIHRlc3RQcm9jZXNzOworICAgICBRU3RyaW5nTGlzdCBhcmd1bWVudHM7CistICAgIHRlc3RQ cm9jZXNzLnN0YXJ0KCJtb2RhbF9oZWxwZXIiLCBhcmd1bWVudHMpOworKyAgICB0ZXN0UHJvY2Vz cy5zdGFydCgiLi9tb2RhbF9oZWxwZXIiLCBhcmd1bWVudHMpOworICAgICBRVkVSSUZZMih0ZXN0 UHJvY2Vzcy53YWl0Rm9yU3RhcnRlZCgpLAorICAgICAgICAgICAgICBxUHJpbnRhYmxlKFFTdHJp bmc6OmZyb21MYXRpbjEoIkNhbm5vdCBzdGFydCAnbW9kYWxfaGVscGVyJzogJTEiKS5hcmcodGVz dFByb2Nlc3MuZXJyb3JTdHJpbmcoKSkpKTsKKyAgICAgUVZFUklGWSh0ZXN0UHJvY2Vzcy53YWl0 Rm9yRmluaXNoZWQoMjAwMDApKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRn ZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uL3RzdF9xYWJzdHJhY3RidXR0b24uY3BwIGIvcXRi YXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi90c3RfcWFic3Ry YWN0YnV0dG9uLmNwcAoraW5kZXggZWIxMDhhNDBkZS4uZGNhNTUyOGMxYiAxMDA2NDQKKy0tLSBh L3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24vdHN0X3Fh YnN0cmFjdGJ1dHRvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0 cy9xYWJzdHJhY3RidXR0b24vdHN0X3FhYnN0cmFjdGJ1dHRvbi5jcHAKK0BAIC00MSw2ICs0MSw3 IEBACisgCisgI2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKyAjaW5jbHVk ZSA8cXBhL3FwbGF0Zm9ybWludGVncmF0aW9uLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10 aGVtZS5oPgorIAorIGNsYXNzIHRzdF9RQWJzdHJhY3RCdXR0b24gOiBwdWJsaWMgUU9iamVjdAor IHsKK0BAIC03Niw2ICs3Nyw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQga2V5TmF2aWdh dGlvbigpOworICNlbmRpZgorIAorKyAgICB2b2lkIGJ1dHRvblByZXNzS2V5cygpOworKworIHBy b3RlY3RlZCBzbG90czoKKyAgICAgdm9pZCBvbkNsaWNrZWQoKTsKKyAgICAgdm9pZCBvblRvZ2ds ZWQoIGJvb2wgb24gKTsKK0BAIC0yNjksNyArMjcyLDEzIEBAIHZvaWQgdHN0X1FBYnN0cmFjdEJ1 dHRvbjo6c2V0QXV0b1JlcGVhdCgpCisgICAgICAgICBRQ09NUEFSRShwcmVzc19jb3VudCwgY2xp Y2tfY291bnQpOworICAgICAgICAgUVZFUklGWShjbGlja19jb3VudCA+IDEpOworICAgICAgICAg YnJlYWs7CistICAgIGNhc2UgNDoKKysgICAgY2FzZSA0OiB7CisrICAgICAgICBjb25zdCBhdXRv IGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUo KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVI aW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAg ICAgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAg ICAgICAgICAgIFFTS0lQKCJwbGF0Zm9ybSB0aGVtZSBoYXMgS2V5X0VudGVyIGluIEJ1dHRvblBy ZXNzS2V5cyIpOworKyAgICAgICAgfQorICAgICAgICAgLy8gY2hlY2sgdGhhdCBwcmVzc2luZyBF TlRFUiBoYXMgbm8gZWZmZWN0IHdoZW4gYXV0b3JlcGVhdCBpcyBmYWxzZQorICAgICAgICAgdGVz dFdpZGdldC0+c2V0RG93biggZmFsc2UgKTsKKyAgICAgICAgIHRlc3RXaWRnZXQtPnNldEF1dG9S ZXBlYXQoIGZhbHNlICk7CitAQCAtMjg2LDcgKzI5NSwxNCBAQCB2b2lkIHRzdF9RQWJzdHJhY3RC dXR0b246OnNldEF1dG9SZXBlYXQoKQorIAorICAgICAgICAgUVZFUklGWSggY2xpY2tfY291bnQg PT0gMCApOworICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgNToKKysgICAgfQorKyAgICBjYXNl IDU6IHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0 aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNz S2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFs dWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRh aW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICAgICAgUVNLSVAoInBsYXRmb3JtIHRoZW1l IGhhcyBLZXlfRW50ZXIgaW4gQnV0dG9uUHJlc3NLZXlzIik7CisrICAgICAgICB9CisgICAgICAg ICAvLyBjaGVjayB0aGF0IHByZXNzaW5nIEVOVEVSIGhhcyBubyBlZmZlY3Qgd2hlbiBhdXRvcmVw ZWF0IGlzIHRydWUKKyAgICAgICAgIHRlc3RXaWRnZXQtPnNldERvd24oIGZhbHNlICk7CisgICAg ICAgICB0ZXN0V2lkZ2V0LT5zZXRBdXRvUmVwZWF0KCB0cnVlICk7CitAQCAtMzA0LDYgKzMyMCw3 IEBAIHZvaWQgdHN0X1FBYnN0cmFjdEJ1dHRvbjo6c2V0QXV0b1JlcGVhdCgpCisgCisgICAgICAg ICBRVkVSSUZZKCBjbGlja19jb3VudCA9PSAwICk7CisgICAgICAgICBicmVhazsKKysgICAgfQor ICAgICBjYXNlIDY6CisgICAgICAgICAvLyB2ZXJpZnkgYXV0b3JlcGVhdCBpcyBvZmYgYnkgZGVm YXVsdC4KKyAgICAgICAgIE15QnV0dG9uIHRtcCggMCk7CitAQCAtNjUxLDUgKzY2OCwxNiBAQCB2 b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OmtleU5hdmlnYXRpb24oKQorIH0KKyAjZW5kaWYKKyAK Kyt2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OmJ1dHRvblByZXNzS2V5cygpCisreworKyAgICBj b25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRm b3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50 aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBidXR0b25QcmVzc0tleXMubGVuZ3RoKCk7ICsraSkgewor KyAgICAgICAgUVRlc3Q6OmtleUNsaWNrKHRlc3RXaWRnZXQsIGJ1dHRvblByZXNzS2V5c1tpXSk7 CisrICAgICAgICBRQ09NUEFSRShjbGlja19jb3VudCwgaSArIDEpOworKyAgICB9CisrfQorKwor IFFURVNUX01BSU4odHN0X1FBYnN0cmFjdEJ1dHRvbikKKyAjaW5jbHVkZSAidHN0X3FhYnN0cmFj dGJ1dHRvbi5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRn ZXRzL3Fjb21ib2JveC90c3RfcWNvbWJvYm94LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdl dHMvd2lkZ2V0cy9xY29tYm9ib3gvdHN0X3Fjb21ib2JveC5jcHAKK2luZGV4IDMyNDM3MDUwZjUu LjQ2YjVhZjZkNjMgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdl dHMvcWNvbWJvYm94L3RzdF9xY29tYm9ib3guY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94L3RzdF9xY29tYm9ib3guY3BwCitAQCAtMTY4LDYgKzE2 OCw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgY2hlY2tNZW51SXRlbVBvc1doZW5TdHls ZVNoZWV0SXNTZXQoKTsKKyAgICAgdm9pZCBjaGVja0VtYmVkZGVkTGluZUVkaXRXaGVuU3R5bGVT aGVldElzU2V0KCk7CisgICAgIHZvaWQgcHJvcGFnYXRlU3R5bGVDaGFuZ2VzKCk7CisrICAgIHZv aWQgYnV0dG9uUHJlc3NLZXlzKCk7CisgCisgcHJpdmF0ZToKKyAgICAgUGxhdGZvcm1JbnB1dENv bnRleHQgbV9wbGF0Zm9ybUlucHV0Q29udGV4dDsKK0BAIC0xNjgyLDYgKzE2ODMsMTYgQEAgdm9p ZCB0c3RfUUNvbWJvQm94OjpzZXRNb2RlbCgpCisgICAgIFFDT01QQVJFKGJveC5yb290TW9kZWxJ bmRleCgpLCByb290TW9kZWxJbmRleCk7CisgICAgIGJveC5zZXRNb2RlbChib3gubW9kZWwoKSk7 CisgICAgIFFDT01QQVJFKGJveC5yb290TW9kZWxJbmRleCgpLCByb290TW9kZWxJbmRleCk7Cisr CisrICAgIC8vIGNoZWNrIHRoYXQgc2V0dGluZyB0aGUgc2FtZSBtb2RlbCBhcyB0aGUgY29tcGxl dGVyJ3MgZG9lc24ndCBjcmFzaAorKyAgICBRQ29tcGxldGVyICpjb21wbGV0ZXIgPSBuZXcgUUNv bXBsZXRlcigmYm94KTsKKysgICAgYm94LnNldEVkaXRhYmxlKHRydWUpOworKyAgICBib3guc2V0 Q29tcGxldGVyKGNvbXBsZXRlcik7CisrICAgIGF1dG8gKmxpc3RNb2RlbCA9IG5ldyBRU3RyaW5n TGlzdE1vZGVsKHsgIm9uZSIsICJ0d28iIH0sIGNvbXBsZXRlcik7CisrICAgIGNvbXBsZXRlci0+ c2V0TW9kZWwobGlzdE1vZGVsKTsKKysgICAgUUNPTVBBUkUobGlzdE1vZGVsLT5yb3dDb3VudCgp LCAyKTsgLy8gbWFrZSBzdXJlIGl0IHdhc24ndCBkZWxldGVkCisrICAgIGJveC5zZXRNb2RlbChs aXN0TW9kZWwpOworKyAgICBRQ09NUEFSRShsaXN0TW9kZWwtPnJvd0NvdW50KCksIDIpOyAvLyBt YWtlIHN1cmUgaXQgd2Fzbid0IGRlbGV0ZWQKKyB9CisgCisgdm9pZCB0c3RfUUNvbWJvQm94Ojpz ZXRDdXN0b21Nb2RlbEFuZFZpZXcoKQorQEAgLTM2MzIsNSArMzY0MywyNCBAQCB2b2lkIHRzdF9R Q29tYm9Cb3g6OnByb3BhZ2F0ZVN0eWxlQ2hhbmdlcygpCisgICAgIFFWRVJJRlkoZnJhbWVTdHls ZS5pbnF1aXJlZCk7CisgfQorIAorK3ZvaWQgdHN0X1FDb21ib0JveDo6YnV0dG9uUHJlc3NLZXlz KCkKKyt7CisrICAgIFFDb21ib0JveCBjb21ib0JveDsKKysgICAgY29tYm9Cb3guc2V0RWRpdGFi bGUoZmFsc2UpOworKyAgICBjb21ib0JveC5hZGRJdGVtKFFTdHJpbmc6Om51bWJlcigxKSk7Cisr ICAgIGNvbWJvQm94LmFkZEl0ZW0oUVN0cmluZzo6bnVtYmVyKDIpKTsKKysgICAgY29uc3QgYXV0 byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1l KCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50 KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGZvciAo aW50IGkgPSAwOyBpIDwgYnV0dG9uUHJlc3NLZXlzLmxlbmd0aCgpOyArK2kpIHsKKysgICAgICAg IFFUZXN0OjprZXlDbGljaygmY29tYm9Cb3gsIGJ1dHRvblByZXNzS2V5c1tpXSk7CisrICAgICAg ICAvLyBPbiBzb21lIHBsYXRmb3JtcywgYSB3aW5kb3cgd2lsbCBub3QgYmUgaW1tZWRpYXRlbHkg dmlzaWJsZSwKKysgICAgICAgIC8vIGJ1dCB0YWtlIHNvbWUgZXZlbnQtbG9vcCBpdGVyYXRpb25z IHRvIGNvbXBsZXRlLgorKyAgICAgICAgLy8gVXNpbmcgUVRSWV9WRVJJRlkgdG8gZGVhbCB3aXRo IHRoYXQuCisrICAgICAgICBRVFJZX1ZFUklGWShjb21ib0JveC52aWV3KCktPmlzVmlzaWJsZSgp KTsKKysgICAgICAgIGNvbWJvQm94LmhpZGVQb3B1cCgpOworKyAgICB9CisrfQorKworIFFURVNU X01BSU4odHN0X1FDb21ib0JveCkKKyAjaW5jbHVkZSAidHN0X3Fjb21ib2JveC5tb2MiCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1 dHRvbi9xY29tbWFuZGxpbmtidXR0b24ucHJvIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93 aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9xY29tbWFuZGxpbmtidXR0b24ucHJvCitpbmRleCBi ZTNjZmNkMTA0Li5jMjI4ZmRmY2NhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lk Z2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9xY29tbWFuZGxpbmtidXR0b24ucHJvCisr KysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9u L3Fjb21tYW5kbGlua2J1dHRvbi5wcm8KK0BAIC0xLDYgKzEsNiBAQAorIENPTkZJRyArPSB0ZXN0 Y2FzZQorIFRBUkdFVCA9IHRzdF9xY29tbWFuZGxpbmtidXR0b24KKy1RVCArPSB3aWRnZXRzIHRl c3RsaWIKKytRVCArPSB3aWRnZXRzIHRlc3RsaWIgZ3VpLXByaXZhdGUKKyBTT1VSQ0VTICArPSB0 c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcAorIAorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vdHN0X3Fjb21tYW5kbGlu a2J1dHRvbi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRs aW5rYnV0dG9uL3RzdF9xY29tbWFuZGxpbmtidXR0b24uY3BwCitpbmRleCAwMDQ0ZDMzYzY2Li40 Y2YwNjI5NmU0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRz L3Fjb21tYW5kbGlua2J1dHRvbi90c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcAorKysrIGIvcXRi YXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi90c3RfcWNv bW1hbmRsaW5rYnV0dG9uLmNwcAorQEAgLTQwLDYgKzQwLDkgQEAKKyAjaW5jbHVkZSA8UUdyaWRM YXlvdXQ+CisgI2luY2x1ZGUgPFFQYWludGVyPgorIAorKyNpbmNsdWRlIDxwcml2YXRlL3FndWlh cHBsaWNhdGlvbl9wLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorKworIGNs YXNzIHRzdF9RQ29tbWFuZExpbmtCdXR0b24gOiBwdWJsaWMgUU9iamVjdAorIHsKKyAgICAgUV9P QkpFQ1QKK0BAIC0yMjMsNiArMjI2LDEzIEBAIHZvaWQgdHN0X1FDb21tYW5kTGlua0J1dHRvbjo6 c2V0QXV0b1JlcGVhdCgpCisgICAgIC8vIGNoZWNrIHRoYXQgcHJlc3NpbmcgRU5URVIgaGFzIG5v IGVmZmVjdAorICAgICByZXNldENvdW50ZXJzKCk7CisgICAgIHRlc3RXaWRnZXQtPnNldERvd24o IGZhbHNlICk7CisrICAgIC8vIFNraXAgYWZ0ZXIgcmVzZXQgaWYgQnV0dG9uUHJlc3NLZXlzIGhh cyBLZXlfRW50ZXIKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGlj YXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tl eXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxp c3Q8UXQ6OktleT4+KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6Oktl eV9FbnRlcikpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorICAgICB0ZXN0V2lkZ2V0LT5z ZXRBdXRvUmVwZWF0KCBmYWxzZSApOworICAgICBRVGVzdDo6a2V5UHJlc3MoIHRlc3RXaWRnZXQs IFF0OjpLZXlfRW50ZXIgKTsKKyAKK0BAIC0yNTUsNiArMjY1LDE0IEBAIHZvaWQgdHN0X1FDb21t YW5kTGlua0J1dHRvbjo6cHJlc3NlZCgpCisgICAgIFFDT01QQVJFKCBwcmVzc19jb3VudCwgKHVp bnQpMSApOworICAgICBRQ09NUEFSRSggcmVsZWFzZV9jb3VudCwgKHVpbnQpMSApOworIAorKyAg ICAvLyBTa2lwIGlmIEJ1dHRvblByZXNzS2V5cyBoYXMgS2V5X0VudGVyCisrICAgIGNvbnN0IGF1 dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVt ZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGlu dChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAo YnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICByZXR1 cm47CisrICAgIH0KKysKKyAgICAgUVRlc3Q6OmtleVByZXNzKCB0ZXN0V2lkZ2V0LFF0OjpLZXlf RW50ZXIgKTsKKyAgICAgUUNPTVBBUkUoIHByZXNzX2NvdW50LCAodWludCkxICk7CisgICAgIFFD T01QQVJFKCByZWxlYXNlX2NvdW50LCAodWludCkxICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBib3gucHJvIGIvcXRiYXNl L3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBib3gucHJvCitpbmRl eCA0YTVlNzZmZjY1Li5hMjM1ZmExZmFjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8v d2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBib3gucHJvCisrKysgYi9xdGJhc2UvdGVz dHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3Fncm91cGJveC5wcm8KK0BAIC0xLDYg KzEsNiBAQAorIENPTkZJRyArPSB0ZXN0Y2FzZQorIFRBUkdFVCA9IHRzdF9xZ3JvdXBib3gKKy1R VCArPSB3aWRnZXRzIHRlc3RsaWIKKytRVCArPSB3aWRnZXRzIHRlc3RsaWIgZ3VpLXByaXZhdGUK KyBTT1VSQ0VTICArPSB0c3RfcWdyb3VwYm94LmNwcAorIAorIAorZGlmZiAtLWdpdCBhL3F0YmFz ZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvdHN0X3Fncm91cGJveC5jcHAg Yi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3RzdF9xZ3JvdXBi b3guY3BwCitpbmRleCA0ZmI1ZDI2MmNhLi5kOGQ3NTYyYjczIDEwMDY0NAorLS0tIGEvcXRiYXNl L3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC90c3RfcWdyb3VwYm94LmNwcAor KysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC90c3RfcWdy b3VwYm94LmNwcAorQEAgLTM1LDYgKzM1LDkgQEAKKyAjaW5jbHVkZSA8UVJhZGlvQnV0dG9uPgor ICNpbmNsdWRlIDxRRGlhbG9nPgorIAorKyNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNhdGlv bl9wLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorKworICNpbmNsdWRlICJx Z3JvdXBib3guaCIKKyAKKyBjbGFzcyB0c3RfUUdyb3VwQm94IDogcHVibGljIFFPYmplY3QKK0BA IC02OSw2ICs3Miw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgcHJvcGFnYXRlRm9jdXMo KTsKKyAgICAgdm9pZCB0YXNrX1FUQlVHXzE5MTcwX2lnbm9yZU1vdXNlUmVsZWFzZUV2ZW50KCk7 CisgICAgIHZvaWQgdGFza19RVEJVR18xNTUxOV9wcm9wYWdhdGVNb3VzZUV2ZW50cygpOworKyAg ICB2b2lkIGJ1dHRvblByZXNzS2V5cygpOworIAorIHByaXZhdGU6CisgICAgIGJvb2wgY2hlY2tl ZDsKK0BAIC02MTAsNiArNjE0LDIwIEBAIHZvaWQgdHN0X1FHcm91cEJveDo6dGFza19RVEJVR18x NTUxOV9wcm9wYWdhdGVNb3VzZUV2ZW50cygpCisgICAgIFFDT01QQVJFKHBhcmVudC5tb3VzZU1v dmVkLCB0cnVlKTsKKyB9CisgCisrdm9pZCB0c3RfUUdyb3VwQm94OjpidXR0b25QcmVzc0tleXMo KQorK3sKKysgICAgUUdyb3VwQm94IGdyb3VwQm94OworKyAgICBncm91cEJveC5zZXRDaGVja2Fi bGUodHJ1ZSk7CisrICAgIFFTaWduYWxTcHkgY2xpY2tlZFNweSgmZ3JvdXBCb3gsICZRR3JvdXBC b3g6OmNsaWNrZWQpOworKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBs aWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNz S2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxR TGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBidXR0b25QcmVzc0tl eXMubGVuZ3RoKCk7ICsraSkgeworKyAgICAgICAgUVRlc3Q6OmtleUNsaWNrKCZncm91cEJveCwg YnV0dG9uUHJlc3NLZXlzW2ldKTsKKysgICAgICAgIFFDT01QQVJFKGNsaWNrZWRTcHkubGVuZ3Ro KCksIGkgKyAxKTsKKysgICAgfQorK30KKysKKyB2b2lkIHRzdF9RR3JvdXBCb3g6OnNlbmRNb3Vz ZU1vdmVFdmVudChRV2lkZ2V0ICp3aWRnZXQsIGNvbnN0IFFQb2ludCAmbG9jYWxQb3MpCisgewor ICAgICAvLyBTZW5kIGEgTW91c2VNb3ZlIGV2ZW50IHdpdGhvdXQgYWN0dWFsbHkgbW92aW5nIHRo ZSBwb2ludGVyCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRz L3FwdXNoYnV0dG9uL3FwdXNoYnV0dG9uLnBybyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMv d2lkZ2V0cy9xcHVzaGJ1dHRvbi9xcHVzaGJ1dHRvbi5wcm8KK2luZGV4IDM1M2FkMDZjYTIuLmU1 NWY2MTQ4ZjIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMv cXB1c2hidXR0b24vcXB1c2hidXR0b24ucHJvCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRn ZXRzL3dpZGdldHMvcXB1c2hidXR0b24vcXB1c2hidXR0b24ucHJvCitAQCAtMSw2ICsxLDYgQEAK KyBDT05GSUcgKz0gdGVzdGNhc2UKKyBUQVJHRVQgPSB0c3RfcXB1c2hidXR0b24KKy1RVCArPSB3 aWRnZXRzIHRlc3RsaWIKKytRVCArPSB3aWRnZXRzIHRlc3RsaWIgZ3VpLXByaXZhdGUKKyBTT1VS Q0VTICArPSB0c3RfcXB1c2hidXR0b24uY3BwCisgCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3RzdF9xcHVzaGJ1dHRvbi5jcHAg Yi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vdHN0X3FwdXNo YnV0dG9uLmNwcAoraW5kZXggZTgxODUxNGE3OS4uNDA0M2U5MzI2YSAxMDA2NDQKKy0tLSBhL3F0 YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi90c3RfcXB1c2hidXR0 b24uY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0 b24vdHN0X3FwdXNoYnV0dG9uLmNwcAorQEAgLTQxLDYgKzQxLDkgQEAKKyAjaW5jbHVkZSA8UVN0 eWxlRmFjdG9yeT4KKyAjaW5jbHVkZSA8UVRhYldpZGdldD4KKyAKKysjaW5jbHVkZSA8cHJpdmF0 ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4K KysKKyBjbGFzcyB0c3RfUVB1c2hCdXR0b24gOiBwdWJsaWMgUU9iamVjdAorIHsKKyBRX09CSkVD VAorQEAgLTIxMiw2ICsyMTUsMTMgQEAgdm9pZCB0c3RfUVB1c2hCdXR0b246OmF1dG9SZXBlYXQo KQorICAgICAvLyBjaGVjayB0aGF0IHByZXNzaW5nIEVOVEVSIGhhcyBubyBlZmZlY3QKKyAgICAg cmVzZXRDb3VudGVycygpOworICAgICB0ZXN0V2lkZ2V0LT5zZXREb3duKCBmYWxzZSApOworKyAg ICAvLyBTa2lwIGFmdGVyIHJlc2V0IGlmIEJ1dHRvblByZXNzS2V5cyBoYXMgS2V5X0VudGVyCisr ICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6 cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+Pigp OworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7Cisr ICAgICAgICByZXR1cm47CisrICAgIH0KKyAgICAgdGVzdFdpZGdldC0+c2V0QXV0b1JlcGVhdCgg ZmFsc2UgKTsKKyAgICAgUVRlc3Q6OmtleVByZXNzKCB0ZXN0V2lkZ2V0LCBRdDo6S2V5X0VudGVy ICk7CisgCitAQCAtMjQ3LDYgKzI1NywxNCBAQCB2b2lkIHRzdF9RUHVzaEJ1dHRvbjo6cHJlc3Nl ZCgpCisgICAgIFFDT01QQVJFKCBwcmVzc19jb3VudCwgKHVpbnQpMSApOworICAgICBRQ09NUEFS RSggcmVsZWFzZV9jb3VudCwgKHVpbnQpMSApOworIAorKyAgICAvLyBTa2lwIGlmIEJ1dHRvblBy ZXNzS2V5cyBoYXMgS2V5X0VudGVyCisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0g UUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0 dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRh aW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKyAgICAg UVRlc3Q6OmtleVByZXNzKCB0ZXN0V2lkZ2V0LFF0OjpLZXlfRW50ZXIgKTsKKyAgICAgUUNPTVBB UkUoIHByZXNzX2NvdW50LCAodWludCkxICk7CisgICAgIFFDT01QQVJFKCByZWxlYXNlX2NvdW50 LCAodWludCkxICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL21hbnVhbC9yaGkvY3ViZW1h cF9yZW5kZXIvYnVpbGRzaGFkZXIuYmF0IGIvcXRiYXNlL3Rlc3RzL21hbnVhbC9yaGkvY3ViZW1h cF9yZW5kZXIvYnVpbGRzaGFkZXIuYmF0CitvbGQgbW9kZSAxMDA3NTUKK25ldyBtb2RlIDEwMDY0 NAorU3VibW9kdWxlIHF0Y29ubmVjdGl2aXR5IGU5NTdkNDgxLi4wNTYyOTRjMDoKK2RpZmYgLS1n aXQgYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL2JsdWV6L2hjaW1hbmFnZXIuY3BwIGIv cXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9ibHVlei9oY2ltYW5hZ2VyLmNwcAoraW5kZXgg ZTI2MzVmYWUuLmE4YjhlM2I5IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0 b290aC9ibHVlei9oY2ltYW5hZ2VyLmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0 b290aC9ibHVlei9oY2ltYW5hZ2VyLmNwcAorQEAgLTU2Myw5ICs1NjMsMTEgQEAgdm9pZCBIY2lN YW5hZ2VyOjpoYW5kbGVIY2lBY2xQYWNrZXQoY29uc3QgcXVpbnQ4ICpkYXRhLCBpbnQgc2l6ZSkK KyAKKyB2b2lkIEhjaU1hbmFnZXI6OmhhbmRsZUxlTWV0YUV2ZW50KGNvbnN0IHF1aW50OCAqZGF0 YSkKKyB7CistICAgIC8vIFNwZWMgdjQuMiwgVm9sIDIsIHBhcnQgRSwgNy43LjY1ZmYKKysgICAg Ly8gU3BlYyB2NS4zLCBWb2wgNCwgcGFydCBFLCA3LjcuNjUuKgorICAgICBzd2l0Y2ggKCpkYXRh KSB7CistICAgIGNhc2UgMHgxOiB7CisrICAgIGNhc2UgMHgxOiAvLyBIQ0lfTEVfQ29ubmVjdGlv bl9Db21wbGV0ZQorKyAgICBjYXNlIDB4QTogLy8gSENJX0xFX0VuaGFuY2VkX0Nvbm5lY3Rpb25f Q29tcGxldGUKKysgICAgeworICAgICAgICAgY29uc3QgcXVpbnQxNiBoYW5kbGUgPSBidF9nZXRf bGUxNihkYXRhICsgMik7CisgICAgICAgICBlbWl0IGNvbm5lY3Rpb25Db21wbGV0ZShoYW5kbGUp OworICAgICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0 b290aC9xYmx1ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFnZW50X2JsdWV6LmNwcCBiL3F0Y29ubmVj dGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3ZlcnlhZ2VudF9ibHVl ei5jcHAKK2luZGV4IDZhOTMxNDNiLi40YTE4Y2ZjNyAxMDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2 aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3ZlcnlhZ2VudF9ibHVlei5j cHAKKysrKyBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZpY2Vk aXNjb3ZlcnlhZ2VudF9ibHVlei5jcHAKK0BAIC0zMjAsNyArMzIwLDEwIEBAIHZvaWQgUUJsdWV0 b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudFByaXZhdGU6Ol9xX2ZpbmlzaFNkcFNjYW4oUUJsdWV0 b290aFNlcnZpY2VECisgICAgICAgICAgICAgZm9yIChjb25zdCBRQmx1ZXRvb3RoVXVpZCAmaWQg OiBzZXJ2aWNlQ2xhc3NVdWlkcykgeworICAgICAgICAgICAgICAgICBpZiAoaWQubWluaW11bVNp emUoKSA9PSAxNikgeworICAgICAgICAgICAgICAgICAgICAgc2VydmljZUluZm8uc2V0U2Vydmlj ZVV1aWQoaWQpOworLSAgICAgICAgICAgICAgICAgICAgc2VydmljZUluZm8uc2V0U2VydmljZU5h bWUoUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6dHIoIkN1c3RvbSBTZXJ2aWNlIikp OworKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2VJbmZvLnNlcnZpY2VOYW1lKCkuaXNF bXB0eSgpKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZUluZm8uc2V0U2Vydmlj ZU5hbWUoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUJsdWV0b290aFNl cnZpY2VEaXNjb3ZlcnlBZ2VudDo6dHIoIkN1c3RvbSBTZXJ2aWNlIikpOworKyAgICAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgUUJsdWV0b290aFNlcnZpY2VJbmZvOjpT ZXF1ZW5jZSBtb2RTZXEgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlSW5m by5hdHRyaWJ1dGUoUUJsdWV0b290aFNlcnZpY2VJbmZvOjpTZXJ2aWNlQ2xhc3NJZHMpLnZhbHVl PFFCbHVldG9vdGhTZXJ2aWNlSW5mbzo6U2VxdWVuY2U+KCk7CisgICAgICAgICAgICAgICAgICAg ICBtb2RTZXEucmVtb3ZlT25lKFFWYXJpYW50Ojpmcm9tVmFsdWUoaWQpKTsKK0BAIC0zMzQsOCAr MzM3LDEwIEBAIHZvaWQgUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudFByaXZhdGU6Ol9x X2ZpbmlzaFNkcFNjYW4oUUJsdWV0b290aFNlcnZpY2VECisgICAgICAgICAgICAgICAgIHFDRGVi dWcoUVRfQlRfQkxVRVopIDw8ICJEaXNjb3ZlcmVkIHNlcnZpY2VzIiA8PCBkaXNjb3ZlcmVkRGV2 aWNlcy5hdCgwKS5hZGRyZXNzKCkudG9TdHJpbmcoKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8PCBzZXJ2aWNlSW5mby5zZXJ2aWNlTmFtZSgpIDw8IHNlcnZpY2VJbmZv LnNlcnZpY2VVdWlkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg Ij4+PiIgPDwgc2VydmljZUluZm8uc2VydmljZUNsYXNzVXVpZHMoKTsKKy0KKy0gICAgICAgICAg ICAgICAgZW1pdCBxLT5zZXJ2aWNlRGlzY292ZXJlZChzZXJ2aWNlSW5mbyk7CisrICAgICAgICAg ICAgICAgIC8vIFVzZSBxdWV1ZWQgY29ubmVjdGlvbiB0byBhbGxvdyB1cyBmaW5pc2ggdGhlIHNl cnZpY2UgbG9vcGluZzsgdGhlIGFwcGxpY2F0aW9uCisrICAgICAgICAgICAgICAgIC8vIG1pZ2h0 IGNhbGwgc3RvcCgpIHdoZW4gaXQgaGFzIGRldGVjdGVkIHRoZSBzZXJ2aWNlLW9mLWludGVyZXN0 LgorKyAgICAgICAgICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHEsICJzZXJ2aWNl RGlzY292ZXJlZCIsIFF0OjpRdWV1ZWRDb25uZWN0aW9uLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFfQVJHKFFCbHVldG9vdGhTZXJ2aWNlSW5mbywgc2Vydmlj ZUluZm8pKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgIH0KK2RpZmYgLS1naXQg YS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXQuY3BwIGIvcXRj b25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0LmNwcAoraW5kZXggZTRk ODU0NDcuLmFhZGQ0NzU1IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290 aC9xYmx1ZXRvb3Roc29ja2V0LmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290 aC9xYmx1ZXRvb3Roc29ja2V0LmNwcAorQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIFFCbHVldG9v dGhTb2NrZXQ6OnNldFNvY2tldFN0YXRlKFFCbHVldG9vdGhTb2NrZXQ6OlNvY2tldFN0YXRlIHN0 YXRlKQorIGJvb2wgUUJsdWV0b290aFNvY2tldDo6Y2FuUmVhZExpbmUoKSBjb25zdAorIHsKKyAg ICAgUV9EKGNvbnN0IFFCbHVldG9vdGhTb2NrZXRCYXNlKTsKKy0gICAgcmV0dXJuIGQtPmNhblJl YWRMaW5lKCk7CisrICAgIHJldHVybiBkLT5jYW5SZWFkTGluZSgpIHx8IFFJT0RldmljZTo6Y2Fu UmVhZExpbmUoKTsKKyB9CisgCisgLyohCitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvc3Jj L2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1cy5jcHAgYi9xdGNvbm5lY3Rpdml0 eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXRfYmx1ZXpkYnVzLmNwcAoraW5kZXggMDg0 YWE5NTguLmQ2YWExN2E3IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290 aC9xYmx1ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1cy5jcHAKKysrKyBiL3F0Y29ubmVjdGl2aXR5L3Ny Yy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldF9ibHVlemRidXMuY3BwCitAQCAtMjg0LDYgKzI4 NCwxMCBAQCB2b2lkIFFCbHVldG9vdGhTb2NrZXRQcml2YXRlQmx1ZXpEQnVzOjpjb25uZWN0VG9T ZXJ2aWNlKAorICAgICAgICAgcmV0dXJuOworICAgICB9CisgCisrICAgIGlmIChzZXJ2aWNlLnNv Y2tldFByb3RvY29sKCkgIT0gUUJsdWV0b290aFNlcnZpY2VJbmZvOjpQcm90b2NvbDo6VW5rbm93 blByb3RvY29sKQorKyAgICAgICAgc29ja2V0VHlwZSA9IHNlcnZpY2Uuc29ja2V0UHJvdG9jb2wo KTsKKysgICAgcUNEZWJ1ZyhRVF9CVF9CTFVFWikgPDwgIlNvY2tldCBwcm90b2NvbCB1c2VkOiIg PDwgc29ja2V0VHlwZTsKKysKKyAgICAgY29ubmVjdFRvU2VydmljZShzZXJ2aWNlLmRldmljZSgp LmFkZHJlc3MoKSwgdGFyZ2V0U2VydmljZSwgb3Blbk1vZGUpOworIH0KKyAKK2RpZmYgLS1naXQg YS9xdGNvbm5lY3Rpdml0eS90ZXN0cy9hdXRvL3FibHVldG9vdGhzb2NrZXQvdHN0X3FibHVldG9v dGhzb2NrZXQuY3BwIGIvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1ZXRvb3Roc29ja2V0 L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNwcAoraW5kZXggMDViYzFhMGYuLmE3YjVlZjFmIDEwMDY0 NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1ZXRvb3Roc29ja2V0L3RzdF9x Ymx1ZXRvb3Roc29ja2V0LmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1 ZXRvb3Roc29ja2V0L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNwcAorQEAgLTE0Miw3ICsxNDIsNyBA QCB2b2lkIHRzdF9RQmx1ZXRvb3RoU29ja2V0Ojppbml0VGVzdENhc2UoKQorICAgICBxRGVidWco KSA8PCAiU3RhcnRpbmcgZGlzY292ZXJ5IjsKKyAKKyAgICAgc2RhLT5zZXRVdWlkRmlsdGVyKFFC bHVldG9vdGhVdWlkKFFTdHJpbmcoVEVTVF9TRVJWSUNFX1VVSUQpKSk7CistICAgIHNkYS0+c3Rh cnQoUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6TWluaW1hbERpc2NvdmVyeSk7Cisr ICAgIHNkYS0+c3RhcnQoUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6RnVsbERpc2Nv dmVyeSk7CisgCisgICAgIGZvciAoaW50IGNvbm5lY3RUaW1lID0gTWF4Q29ubmVjdFRpbWU7ICFk b25lX2Rpc2NvdmVyeSAmJiBjb25uZWN0VGltZSA+IDA7IGNvbm5lY3RUaW1lIC09IDEwMDApCisg ICAgICAgICBRVGVzdDo6cVdhaXQoMTAwMCk7CitTdWJtb2R1bGUgcXRkZWNsYXJhdGl2ZSBmNTcw MWYwZC4uOGRlZmU3YmY6CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2NvbW1v bi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvY29tbW9u L3FxbWxqc2ZpeGVkcG9vbGFycmF5X3AuaAoraW5kZXggYjY1Yjk5NGQ2Yy4uMTVhOGNkNjg3OCAx MDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9jb21tb24vcXFtbGpzZml4ZWRwb29s YXJyYXlfcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvY29tbW9uL3FxbWxqc2ZpeGVk cG9vbGFycmF5X3AuaAorQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgorICAgICAgICAgaWYgKFFU eXBlSW5mbzxUPjo6aXNDb21wbGV4KSB7CisgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg PCBjb3VudDsgKytpKQorICAgICAgICAgICAgICAgICBuZXcgKGRhdGEgKyBpKSBUKHZlY3Rvci5h dChpKSk7CistICAgICAgICB9IGVsc2UgeworKyAgICAgICAgfSBlbHNlIGlmIChjb3VudCkgewor ICAgICAgICAgICAgIG1lbWNweShkYXRhLCBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4odmVjdG9y LmNvbnN0RGF0YSgpKSwgY291bnQgKiBzaXplb2YoVCkpOworICAgICAgICAgfQorICAgICB9Citk aWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2pzcnVudGltZS9xdjRxb2JqZWN0d3Jh cHBlci5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFvYmplY3R3cmFw cGVyLmNwcAoraW5kZXggZTU3Y2RkODI3OC4uOTQ2MTM1OThhZiAxMDA2NDQKKy0tLSBhL3F0ZGVj bGFyYXRpdmUvc3JjL3FtbC9qc3J1bnRpbWUvcXY0cW9iamVjdHdyYXBwZXIuY3BwCisrKysgYi9x dGRlY2xhcmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFvYmplY3R3cmFwcGVyLmNwcAorQEAg LTExNDUsOCArMTE0NSw3IEBAIHZvaWQgSGVhcDo6UU9iamVjdFdyYXBwZXI6Om1hcmtPYmplY3Rz KEhlYXA6OkJhc2UgKnRoYXQsIFFWNDo6TWFya1N0YWNrICptYXJrU3RhCisgdm9pZCBRT2JqZWN0 V3JhcHBlcjo6ZGVzdHJveU9iamVjdChib29sIGxhc3RDYWxsKQorIHsKKyAgICAgSGVhcDo6UU9i amVjdFdyYXBwZXIgKmggPSBkKCk7CistICAgIGlmICghaC0+aW50ZXJuYWxDbGFzcykKKy0gICAg ICAgIHJldHVybjsgLy8gZGVzdHJveU9iamVjdCBhbHJlYWR5IGdvdCBjYWxsZWQKKysgICAgUV9B U1NFUlQoaC0+aW50ZXJuYWxDbGFzcyk7CisgCisgICAgIGlmIChoLT5vYmplY3QoKSkgeworICAg ICAgICAgUVFtbERhdGEgKmRkYXRhID0gUVFtbERhdGE6OmdldChoLT5vYmplY3QoKSwgZmFsc2Up OworQEAgLTExNzYsNyArMTE3NSw3IEBAIHZvaWQgUU9iamVjdFdyYXBwZXI6OmRlc3Ryb3lPYmpl Y3QoYm9vbCBsYXN0Q2FsbCkKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBoLT5+RGF0YSgp OworKyAgICBoLT5kZXN0cm95KCk7CisgfQorIAorIAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRp dmUvc3JjL3FtbC9tZW1vcnkvcXY0bW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL21lbW9y eS9xdjRtbS5jcHAKK2luZGV4IDA2Y2FmMDRlNWEuLmRhMTQ5YTY3YzQgMTAwNjQ0CistLS0gYS9x dGRlY2xhcmF0aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1tLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2 ZS9zcmMvcW1sL21lbW9yeS9xdjRtbS5jcHAKK0BAIC05ODEsNyArOTgxLDcgQEAgdm9pZCBNZW1v cnlNYW5hZ2VyOjpzd2VlcChib29sIGxhc3RTd2VlcCwgQ2xhc3NEZXN0cm95U3RhdHNDYWxsYmFj ayBjbGFzc0NvdW50UHQKKyAKKyAgICAgaWYgKE11bHRpcGx5V3JhcHBlZFFPYmplY3RNYXAgKm11 bHRpcGx5V3JhcHBlZFFPYmplY3RzID0gZW5naW5lLT5tX211bHRpcGx5V3JhcHBlZFFPYmplY3Rz KSB7CisgICAgICAgICBmb3IgKE11bHRpcGx5V3JhcHBlZFFPYmplY3RNYXA6Okl0ZXJhdG9yIGl0 ID0gbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IG11bHRpcGx5V3JhcHBl ZFFPYmplY3RzLT5lbmQoKTspIHsKKy0gICAgICAgICAgICBpZiAoIWl0LnZhbHVlKCkuaXNOdWxs T3JVbmRlZmluZWQoKSkKKysgICAgICAgICAgICBpZiAoaXQudmFsdWUoKS5pc051bGxPclVuZGVm aW5lZCgpKQorICAgICAgICAgICAgICAgICBpdCA9IG11bHRpcGx5V3JhcHBlZFFPYmplY3RzLT5l cmFzZShpdCk7CisgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICArK2l0OworZGlm ZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbC5j cHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWwuY3BwCitp bmRleCAyMDc5YThlZDA0Li5hNTc3Y2IyMzUxIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9z cmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorQEAgLTM4OSw2ICszODksMTIgQEAg dm9pZCBRUW1sRGVsZWdhdGVNb2RlbFByaXZhdGU6OmNvbm5lY3RUb0Fic3RyYWN0SXRlbU1vZGVs KCkKKyAgICAgICAgICAgICAgICAgICAgICAgcSwgIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9x X3Jvd3NSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisgICAgIHFtbG9iamVjdF9jb25u ZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwocm93c0Fib3V0VG9CZVJlbW92ZWQo UU1vZGVsSW5kZXgsaW50LGludCkpLAorICAgICAgICAgICAgICAgICAgICAgICBxLCAgUVFtbERl bGVnYXRlTW9kZWwsIFNMT1QoX3Ffcm93c0Fib3V0VG9CZVJlbW92ZWQoUU1vZGVsSW5kZXgsaW50 LGludCkpKTsKKysgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJhY3RJdGVtTW9kZWws IFNJR05BTChjb2x1bW5zSW5zZXJ0ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLAorKyAgICAgICAg ICAgICAgICAgICAgICBxLCBRUW1sRGVsZWdhdGVNb2RlbCwgU0xPVChfcV9jb2x1bW5zSW5zZXJ0 ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBR QWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChjb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQs aW50KSksCisrICAgICAgICAgICAgICAgICAgICAgIHEsIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9U KF9xX2NvbHVtbnNSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIHFtbG9iamVj dF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoY29sdW1uc01vdmVkKFFN b2RlbEluZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSksCisrICAgICAgICAgICAgICAgICAg ICAgIHEsIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2NvbHVtbnNNb3ZlZChRTW9kZWxJbmRl eCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpKTsKKyAgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWlt LCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChkYXRhQ2hhbmdlZChRTW9kZWxJbmRleCxRTW9k ZWxJbmRleCxRVmVjdG9yPGludD4pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgcSwgUVFtbERl bGVnYXRlTW9kZWwsIFNMT1QoX3FfZGF0YUNoYW5nZWQoUU1vZGVsSW5kZXgsUU1vZGVsSW5kZXgs UVZlY3RvcjxpbnQ+KSkpOworICAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0 ZW1Nb2RlbCwgU0lHTkFMKHJvd3NNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4 LGludCkpLAorQEAgLTQxMyw2ICs0MTksMTIgQEAgdm9pZCBRUW1sRGVsZWdhdGVNb2RlbFByaXZh dGU6OmRpc2Nvbm5lY3RGcm9tQWJzdHJhY3RJdGVtTW9kZWwoKQorICAgICAgICAgICAgICAgICAg ICAgICAgIHEsIFNMT1QoX3Ffcm93c0Fib3V0VG9CZVJlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGlu dCkpKTsKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChyb3dzUmVtb3ZlZChR TW9kZWxJbmRleCxpbnQsaW50KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgcSwgU0xPVChf cV9yb3dzUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAgICBRT2JqZWN0OjpkaXNj b25uZWN0KGFpbSwgU0lHTkFMKGNvbHVtbnNJbnNlcnRlZChRTW9kZWxJbmRleCxpbnQsaW50KSks IHEsCisrICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChfcV9jb2x1bW5zSW5zZXJ0ZWQoUU1v ZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05B TChjb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSksIHEsCisrICAgICAgICAgICAg ICAgICAgICAgICAgU0xPVChfcV9jb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkp OworKyAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKGNvbHVtbnNNb3ZlZChRTW9k ZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpLCBxLAorKyAgICAgICAgICAgICAgICAg ICAgICAgIFNMT1QoX3FfY29sdW1uc01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1vZGVsSW5k ZXgsaW50KSkpOworICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKGRhdGFDaGFu Z2VkKFFNb2RlbEluZGV4LFFNb2RlbEluZGV4LFFWZWN0b3I8aW50PikpLAorICAgICAgICAgICAg ICAgICAgICAgICAgIHEsIFNMT1QoX3FfZGF0YUNoYW5nZWQoUU1vZGVsSW5kZXgsUU1vZGVsSW5k ZXgsUVZlY3RvcjxpbnQ+KSkpOworICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFM KHJvd3NNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpLAorQEAgLTE5 NzMsNiArMTk4NSwzOCBAQCB2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9yb3dzTW92ZWQoCisg ICAgIH0KKyB9CisgCisrdm9pZCBRUW1sRGVsZWdhdGVNb2RlbDo6X3FfY29sdW1uc0luc2VydGVk KGNvbnN0IFFNb2RlbEluZGV4ICZwYXJlbnQsIGludCBiZWdpbiwgaW50IGVuZCkKKyt7CisrICAg IFFfRChRUW1sRGVsZWdhdGVNb2RlbCk7CisrICAgIFFfVU5VU0VEKGVuZCk7CisrICAgIGlmIChw YXJlbnQgPT0gZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4ICYmIGJlZ2luID09IDApIHsKKysg ICAgICAgIC8vIG1hcmsgYWxsIGl0ZW1zIGFzIGNoYW5nZWQKKysgICAgICAgIF9xX2l0ZW1zQ2hh bmdlZCgwLCBkLT5tX2NvdW50LCBRVmVjdG9yPGludD4oKSk7CisrICAgIH0KKyt9CisrCisrdm9p ZCBRUW1sRGVsZWdhdGVNb2RlbDo6X3FfY29sdW1uc1JlbW92ZWQoY29uc3QgUU1vZGVsSW5kZXgg JnBhcmVudCwgaW50IGJlZ2luLCBpbnQgZW5kKQorK3sKKysgICAgUV9EKFFRbWxEZWxlZ2F0ZU1v ZGVsKTsKKysgICAgUV9VTlVTRUQoZW5kKTsKKysgICAgaWYgKHBhcmVudCA9PSBkLT5tX2FkYXB0 b3JNb2RlbC5yb290SW5kZXggJiYgYmVnaW4gPT0gMCkgeworKyAgICAgICAgLy8gbWFyayBhbGwg aXRlbXMgYXMgY2hhbmdlZAorKyAgICAgICAgX3FfaXRlbXNDaGFuZ2VkKDAsIGQtPm1fY291bnQs IFFWZWN0b3I8aW50PigpKTsKKysgICAgfQorK30KKysKKyt2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVs OjpfcV9jb2x1bW5zTW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJnBhcmVudCwgaW50IHN0YXJ0LCBp bnQgZW5kLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBR TW9kZWxJbmRleCAmZGVzdGluYXRpb24sIGludCBjb2x1bW4pCisreworKyAgICBRX0QoUVFtbERl bGVnYXRlTW9kZWwpOworKyAgICBRX1VOVVNFRChlbmQpOworKyAgICBpZiAoKHBhcmVudCA9PSBk LT5tX2FkYXB0b3JNb2RlbC5yb290SW5kZXggJiYgc3RhcnQgPT0gMCkKKysgICAgICAgIHx8IChk ZXN0aW5hdGlvbiA9PSBkLT5tX2FkYXB0b3JNb2RlbC5yb290SW5kZXggJiYgY29sdW1uID09IDAp KSB7CisrICAgICAgICAvLyBtYXJrIGFsbCBpdGVtcyBhcyBjaGFuZ2VkCisrICAgICAgICBfcV9p dGVtc0NoYW5nZWQoMCwgZC0+bV9jb3VudCwgUVZlY3RvcjxpbnQ+KCkpOworKyAgICB9CisrfQor KworIHZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX2RhdGFDaGFuZ2VkKGNvbnN0IFFNb2RlbElu ZGV4ICZiZWdpbiwgY29uc3QgUU1vZGVsSW5kZXggJmVuZCwgY29uc3QgUVZlY3RvcjxpbnQ+ICZy b2xlcykKKyB7CisgICAgIFFfRChRUW1sRGVsZWdhdGVNb2RlbCk7CitkaWZmIC0tZ2l0IGEvcXRk ZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaCBiL3F0ZGVjbGFy YXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbF9wLmgKK2luZGV4IDhhYWI0YmFk Y2EuLmQxNDBiZmJhYWYgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMv cXFtbGRlbGVnYXRlbW9kZWxfcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMv cXFtbGRlbGVnYXRlbW9kZWxfcC5oCitAQCAtMTUyLDYgKzE1Miw5IEBAIHByaXZhdGUgUV9TTE9U UzoKKyAgICAgdm9pZCBfcV9pdGVtc01vdmVkKGludCBmcm9tLCBpbnQgdG8sIGludCBjb3VudCk7 CisgICAgIHZvaWQgX3FfbW9kZWxSZXNldCgpOworICAgICB2b2lkIF9xX3Jvd3NJbnNlcnRlZChj b25zdCBRTW9kZWxJbmRleCAmLGludCxpbnQpOworKyAgICB2b2lkIF9xX2NvbHVtbnNJbnNlcnRl ZChjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQsIGludCk7CisrICAgIHZvaWQgX3FfY29sdW1uc1Jl bW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJiwgaW50LCBpbnQpOworKyAgICB2b2lkIF9xX2NvbHVt bnNNb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQsIGludCwgY29uc3QgUU1vZGVsSW5kZXgg JiwgaW50KTsKKyAgICAgdm9pZCBfcV9yb3dzQWJvdXRUb0JlUmVtb3ZlZChjb25zdCBRTW9kZWxJ bmRleCAmcGFyZW50LCBpbnQgYmVnaW4sIGludCBlbmQpOworICAgICB2b2lkIF9xX3Jvd3NSZW1v dmVkKGNvbnN0IFFNb2RlbEluZGV4ICYsaW50LGludCk7CisgICAgIHZvaWQgX3Ffcm93c01vdmVk KGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCwgaW50LCBjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQp OworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vz c2libGVxdWlja2l0ZW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9x YWNjZXNzaWJsZXF1aWNraXRlbS5jcHAKK2luZGV4IDg1NzE5ZmRjODAuLjc4ZTJhYjMwMmMgMTAw NjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxl cXVpY2tpdGVtLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9x YWNjZXNzaWJsZXF1aWNraXRlbS5jcHAKK0BAIC00Niw2ICs0Niw3IEBACisgI2luY2x1ZGUgIlF0 UXVpY2svcHJpdmF0ZS9xcXVpY2t0ZXh0aW5wdXRfcC5oIgorICNpbmNsdWRlICJRdFF1aWNrL3By aXZhdGUvcXF1aWNrYWNjZXNzaWJsZWF0dGFjaGVkX3AuaCIKKyAjaW5jbHVkZSAiUXRRdWljay9x cXVpY2t0ZXh0ZG9jdW1lbnQuaCIKKysjaW5jbHVkZSAiUXRRdWljay9xcXVpY2tyZW5kZXJjb250 cm9sLmgiCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmls aXR5KQorQEAgLTU3LDcgKzU4LDE5IEBAIFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpRQWNjZXNzaWJs ZVF1aWNrSXRlbShRUXVpY2tJdGVtICppdGVtKQorIAorIFFXaW5kb3cgKlFBY2Nlc3NpYmxlUXVp Y2tJdGVtOjp3aW5kb3coKSBjb25zdAorIHsKKy0gICAgcmV0dXJuIGl0ZW0oKS0+d2luZG93KCk7 CisrICAgIFFRdWlja1dpbmRvdyAqd2luZG93ID0gaXRlbSgpLT53aW5kb3coKTsKKysKKysgICAg Ly8gRm9yIFFRdWlja1dpZGdldCB0aGUgYWJvdmUgd2luZG93IHdpbGwgYmUgdGhlIG9mZnNjcmVl biBRUXVpY2tXaW5kb3csCisrICAgIC8vIHdoaWNoIGlzIG5vdCBhIHBhcnQgb2YgdGhlIGFjY2Vz c2liaWxpdHkgdHJlZS4gRGV0ZWN0IHRoaXMgY2FzZSBhbmQKKysgICAgLy8gcmV0dXJuIHRoZSB3 aW5kb3cgZm9yIHRoZSBRUXVpY2tXaWRnZXQgaW5zdGVhZC4KKysgICAgaWYgKHdpbmRvdyAmJiAh d2luZG93LT5oYW5kbGUoKSkgeworKyAgICAgICAgaWYgKFFRdWlja1JlbmRlckNvbnRyb2wgKnJl bmRlckNvbnRyb2wgPSBRUXVpY2tXaW5kb3dQcml2YXRlOjpnZXQod2luZG93KS0+cmVuZGVyQ29u dHJvbCkgeworKyAgICAgICAgICAgIGlmIChRV2luZG93ICpyZW5kZXJXaW5kb3cgPSByZW5kZXJD b250cm9sLT5yZW5kZXJXaW5kb3cobnVsbHB0cikpCisrICAgICAgICAgICAgICAgIHJldHVybiBy ZW5kZXJXaW5kb3c7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgcmV0dXJuIHdpbmRvdzsK KyB9CisgCisgaW50IFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpjaGlsZENvdW50KCkgY29uc3QKK0BA IC0xMTMsMTkgKzEyNiwxNSBAQCBRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlj a0l0ZW06OmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdAorIFFBY2Nlc3NpYmxlSW50ZXJmYWNl ICpRQWNjZXNzaWJsZVF1aWNrSXRlbTo6cGFyZW50KCkgY29uc3QKKyB7CisgICAgIFFRdWlja0l0 ZW0gKnBhcmVudCA9IGl0ZW0oKS0+cGFyZW50SXRlbSgpOworLSAgICBRUXVpY2tXaW5kb3cgKndp bmRvdyA9IGl0ZW0oKS0+d2luZG93KCk7CistICAgIFFRdWlja0l0ZW0gKmNpID0gd2luZG93ID8g d2luZG93LT5jb250ZW50SXRlbSgpIDogbnVsbHB0cjsKKysgICAgUVF1aWNrV2luZG93ICppdGVt V2luZG93ID0gaXRlbSgpLT53aW5kb3coKTsKKysgICAgUVF1aWNrSXRlbSAqY2kgPSBpdGVtV2lu ZG93ID8gaXRlbVdpbmRvdy0+Y29udGVudEl0ZW0oKSA6IG51bGxwdHI7CisgICAgIHdoaWxlIChw YXJlbnQgJiYgIVFRdWlja0l0ZW1Qcml2YXRlOjpnZXQocGFyZW50KS0+aXNBY2Nlc3NpYmxlICYm IHBhcmVudCAhPSBjaSkKKyAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50SXRlbSgpOwor IAorICAgICBpZiAocGFyZW50KSB7CisgICAgICAgICBpZiAocGFyZW50ID09IGNpKSB7CistICAg ICAgICAgICAgLy8gSnVtcCBvdXQgdG8gdGhlIHNjZW5lIHdpZGdldCBpZiB0aGUgcGFyZW50IGlz IHRoZSByb290IGl0ZW0uCistICAgICAgICAgICAgLy8gVGhlcmUgYXJlIHR3byByb290IGl0ZW1z LCBRUXVpY2tXaW5kb3c6OnJvb3RJdGVtIGFuZAorLSAgICAgICAgICAgIC8vIFFRdWlja1ZpZXc6 OmRlY2xhcmF0aXZlUm9vdC4gVGhlIGZvcm1lciBpcyB0aGUgdHJ1ZSByb290IGl0ZW0sCistICAg ICAgICAgICAgLy8gYnV0IGlzIG5vdCBhIHBhcnQgb2YgdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4g Q2hlY2sgaWYgd2UgaGl0CistICAgICAgICAgICAgLy8gaXQgaGVyZSBhbmQgcmV0dXJuIGFuIGlu dGVyZmFjZSBmb3IgdGhlIHNjZW5lIGluc3RlYWQuCistICAgICAgICAgICAgcmV0dXJuIFFBY2Nl c3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2Uod2luZG93KTsKKysgICAgICAgICAgICAv LyBKdW1wIG91dCB0byB0aGUgd2luZG93IGlmIHRoZSBwYXJlbnQgaXMgdGhlIHJvb3QgaXRlbQor KyAgICAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNl KHdpbmRvdygpKTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgd2hpbGUgKHBhcmVu dCAmJiAhcGFyZW50LT5kX2Z1bmMoKS0+aXNBY2Nlc3NpYmxlKQorICAgICAgICAgICAgICAgICBw YXJlbnQgPSBwYXJlbnQtPnBhcmVudEl0ZW0oKTsKK0BAIC0xODgsNyArMTk3LDcgQEAgUUFjY2Vz c2libGU6OlN0YXRlIFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpzdGF0ZSgpIGNvbnN0CisgICAgIFFS ZWN0IHZpZXdSZWN0XyA9IHZpZXdSZWN0KCk7CisgICAgIFFSZWN0IGl0ZW1SZWN0ID0gcmVjdCgp OworIAorLSAgICBpZiAodmlld1JlY3RfLmlzTnVsbCgpIHx8IGl0ZW1SZWN0LmlzTnVsbCgpIHx8 ICFpdGVtKCktPndpbmRvdygpIHx8ICFpdGVtKCktPndpbmRvdygpLT5pc1Zpc2libGUoKSB8fCFp dGVtKCktPmlzVmlzaWJsZSgpIHx8IHFGdXp6eUlzTnVsbChpdGVtKCktPm9wYWNpdHkoKSkpCisr ICAgIGlmICh2aWV3UmVjdF8uaXNOdWxsKCkgfHwgaXRlbVJlY3QuaXNOdWxsKCkgfHwgIXdpbmRv dygpIHx8ICF3aW5kb3coKS0+aXNWaXNpYmxlKCkgfHwhaXRlbSgpLT5pc1Zpc2libGUoKSB8fCBx RnV6enlJc051bGwoaXRlbSgpLT5vcGFjaXR5KCkpKQorICAgICAgICAgc3RhdGUuaW52aXNpYmxl ID0gdHJ1ZTsKKyAgICAgaWYgKCF2aWV3UmVjdF8uaW50ZXJzZWN0cyhpdGVtUmVjdCkpCisgICAg ICAgICBzdGF0ZS5vZmZzY3JlZW4gPSB0cnVlOworQEAgLTIwMSw2ICsyMTAsMTAgQEAgUUFjY2Vz c2libGU6OlN0YXRlIFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpzdGF0ZSgpIGNvbnN0CisgICAgIGlm IChyb2xlKCkgPT0gUUFjY2Vzc2libGU6OkVkaXRhYmxlVGV4dCkKKyAgICAgICAgIGlmIChhdXRv IHRpID0gcW9iamVjdF9jYXN0PFFRdWlja1RleHRJbnB1dCAqPihpdGVtKCkpKQorICAgICAgICAg ICAgIHN0YXRlLnBhc3N3b3JkRWRpdCA9IHRpLT5lY2hvTW9kZSgpICE9IFFRdWlja1RleHRJbnB1 dDo6Tm9ybWFsOworKyAgICBpZiAoIWl0ZW0oKS0+aXNFbmFibGVkKCkpIHsKKysgICAgICAgIHN0 YXRlLmZvY3VzYWJsZSA9IGZhbHNlOworKyAgICAgICAgc3RhdGUuZGlzYWJsZWQgPSB0cnVlOwor KyAgICB9CisgICAgIHJldHVybiBzdGF0ZTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNrdmlld19wLmggYi9xdGRl Y2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2t2aWV3X3AuaAor aW5kZXggMzlmZmNhZjM5Yy4uOGJhYTAxMzMwYyAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5oCisrKysgYi9xdGRl Y2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2t2aWV3X3AuaAor QEAgLTU4LDcgKzU4LDcgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgI2lmIFFUX0NPTkZJRyhh Y2Nlc3NpYmlsaXR5KQorIAorLWNsYXNzIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cgOiBwdWJsaWMg UUFjY2Vzc2libGVPYmplY3QKKytjbGFzcyBRX1FVSUNLX0VYUE9SVCBRQWNjZXNzaWJsZVF1aWNr V2luZG93IDogcHVibGljIFFBY2Nlc3NpYmxlT2JqZWN0CisgeworIHB1YmxpYzoKKyAgICAgUUFj Y2Vzc2libGVRdWlja1dpbmRvdyhRUXVpY2tXaW5kb3cgKm9iamVjdCk7CitkaWZmIC0tZ2l0IGEv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrZHJhZy5jcHAgYi9xdGRlY2xhcmF0 aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tkcmFnLmNwcAoraW5kZXggODMyMWZjZmVlZC4uMzgz MDc4YjNiOSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlj a2RyYWcuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tkcmFn LmNwcAorQEAgLTQ4MSw3ICs0ODEsOSBAQCB2b2lkIFFRdWlja0RyYWdBdHRhY2hlZDo6c2V0S2V5 cyhjb25zdCBRU3RyaW5nTGlzdCAma2V5cykKKyAgICAgXHFtbGF0dGFjaGVkcHJvcGVydHkgc3Ry aW5nbGlzdCBRdFF1aWNrOjpEcmFnOjptaW1lRGF0YQorICAgICBcc2luY2UgNS4yCisgCistICAg IFRoaXMgcHJvcGVydHkgaG9sZHMgYSBtYXAgb2YgbWltZURhdGEgdGhhdCBpcyB1c2VkIGR1cmlu ZyBzdGFydERyYWcuCisrICAgIFRoaXMgcHJvcGVydHkgaG9sZHMgYSBtYXAgZnJvbSBtaW1lIHR5 cGUgdG8gZGF0YSB0aGF0IGlzIHVzZWQgZHVyaW5nIHN0YXJ0RHJhZy4KKysgICAgVGhlIG1pbWUg ZGF0YSBuZWVkcyB0byBiZSBhIFxjIHN0cmluZywgb3IgYW4gXGMgQXJyYXlCdWZmZXIgd2l0aCB0 aGUgZGF0YSBlbmNvZGVkCisrICAgIGFjY29yZGluZyB0byB0aGUgbWltZSB0eXBlLgorICovCisg CisgUVZhcmlhbnRNYXAgUVF1aWNrRHJhZ0F0dGFjaGVkOjptaW1lRGF0YSgpIGNvbnN0CitAQCAt NzY2LDggKzc2OCwxMiBAQCBRdDo6RHJvcEFjdGlvbiBRUXVpY2tEcmFnQXR0YWNoZWRQcml2YXRl OjpzdGFydERyYWcoUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdAorICAgICBRRHJhZyAqZHJh ZyA9IG5ldyBRRHJhZyhzb3VyY2UgPyBzb3VyY2UgOiBxKTsKKyAgICAgUU1pbWVEYXRhICptaW1l RGF0YSA9IG5ldyBRTWltZURhdGEoKTsKKyAKKy0gICAgZm9yIChhdXRvIGl0ID0gZXh0ZXJuYWxN aW1lRGF0YS5jYmVnaW4oKSwgZW5kID0gZXh0ZXJuYWxNaW1lRGF0YS5jZW5kKCk7IGl0ICE9IGVu ZDsgKytpdCkKKy0gICAgICAgIG1pbWVEYXRhLT5zZXREYXRhKGl0LmtleSgpLCBpdC52YWx1ZSgp LnRvU3RyaW5nKCkudG9VdGY4KCkpOworKyAgICBmb3IgKGF1dG8gaXQgPSBleHRlcm5hbE1pbWVE YXRhLmNiZWdpbigpLCBlbmQgPSBleHRlcm5hbE1pbWVEYXRhLmNlbmQoKTsgaXQgIT0gZW5kOyAr K2l0KSB7CisrICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8UU1ldGFUeXBlOjpUeXBlPihpdC52YWx1 ZSgpLnR5cGUoKSkgPT0gUU1ldGFUeXBlOjpRQnl0ZUFycmF5KQorKyAgICAgICAgICAgIG1pbWVE YXRhLT5zZXREYXRhKGl0LmtleSgpLCBpdC52YWx1ZSgpLnRvQnl0ZUFycmF5KCkpOworKyAgICAg ICAgZWxzZQorKyAgICAgICAgICAgIG1pbWVEYXRhLT5zZXREYXRhKGl0LmtleSgpLCBpdC52YWx1 ZSgpLnRvU3RyaW5nKCkudG9VdGY4KCkpOworKyAgICB9CisgCisgICAgIGRyYWctPnNldE1pbWVE YXRhKG1pbWVEYXRhKTsKKyAgICAgaWYgKHBpeG1hcExvYWRlci5pc1JlYWR5KCkpIHsKK2RpZmYg LS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtLmNwcCBiL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW0uY3BwCitpbmRleCA3NWYxNDU3 ODE2Li5kZWMwYWUxOWFlIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRl bXMvcXF1aWNraXRlbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3Fx dWlja2l0ZW0uY3BwCitAQCAtNTksNiArNTksNyBAQAorICNpbmNsdWRlIDxRdENvcmUvcHJpdmF0 ZS9xbnVtZXJpY19wLmg+CisgI2luY2x1ZGUgPFF0R3VpL3FwYS9xcGxhdGZvcm10aGVtZS5oPgor ICNpbmNsdWRlIDxRdENvcmUvcWxvZ2dpbmdjYXRlZ29yeS5oPgorKyNpbmNsdWRlIDxRdENvcmUv cHJpdmF0ZS9xZHVwbGljYXRldHJhY2tlcl9wLmg+CisgCisgI2luY2x1ZGUgPHByaXZhdGUvcXFt bGdsb2JhbF9wLmg+CisgI2luY2x1ZGUgPHByaXZhdGUvcXFtbGVuZ2luZV9wLmg+CitAQCAtMjMy Niw2ICsyMzI3LDcgQEAgUVF1aWNrSXRlbTo6UVF1aWNrSXRlbShRUXVpY2tJdGVtUHJpdmF0ZSAm ZGQsIFFRdWlja0l0ZW0gKnBhcmVudCkKKyBRUXVpY2tJdGVtOjp+UVF1aWNrSXRlbSgpCisgewor ICAgICBRX0QoUVF1aWNrSXRlbSk7CisrICAgIGQtPmluRGVzdHJ1Y3RvciA9IHRydWU7CisgCisg ICAgIGlmIChkLT53aW5kb3dSZWZDb3VudCA+IDEpCisgICAgICAgICBkLT53aW5kb3dSZWZDb3Vu dCA9IDE7IC8vIE1ha2Ugc3VyZSB3aW5kb3cgaXMgc2V0IHRvIG51bGwgaW4gbmV4dCBjYWxsIHRv IGRlcmVmV2luZG93KCkuCitAQCAtMjUyNiw2ICsyNTI4LDcgQEAgUVF1aWNrSXRlbSogUVF1aWNr SXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbihRUXVpY2tJdGVtICppdGVt LCBib28KKyAgICAgUVF1aWNrSXRlbSAqY3VycmVudCA9IGl0ZW07CisgICAgIHFDRGVidWcoREJH X0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFp bjogc3RhcnRJdGVtOiIgPDwgc3RhcnRJdGVtOworICAgICBxQ0RlYnVnKERCR19GT0NVUykgPDwg IlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46IGZpcnN0RnJv bUl0ZW06IiA8PCBmaXJzdEZyb21JdGVtOworKyAgICBRRHVwbGljYXRlVHJhY2tlcjxRUXVpY2tJ dGVtICo+IGN5Y2xlRGV0ZWN0b3I7CisgICAgIGRvIHsKKyAgICAgICAgIHFDRGVidWcoREJHX0ZP Q1VTKSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbjog Y3VycmVudDoiIDw8IGN1cnJlbnQ7CisgICAgICAgICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFR dWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46IGZyb206IiA8PCBm cm9tOworQEAgLTI1OTIsNyArMjU5NSwxMCBAQCBRUXVpY2tJdGVtKiBRUXVpY2tJdGVtUHJpdmF0 ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluKFFRdWlja0l0ZW0gKml0ZW0sIGJvbworICAg ICAgICAgLy8gdHJhdmVyc2VkIGFsbCBvZiB0aGUgY2hhaW4gKGJ5IGNvbXBhcmUgdGhlIFtjdXJy ZW50XSBpdGVtIHdpdGggW3N0YXJ0SXRlbV0pCisgICAgICAgICAvLyBTaW5jZSB0aGUgW3N0YXJ0 SXRlbV0gbWlnaHQgYmUgcHJvbW90ZWQgdG8gaXRzIHBhcmVudCBpZiBpdCBpcyBpbnZpc2libGUs CisgICAgICAgICAvLyB3ZSBzdGlsbCBoYXZlIHRvIGNoZWNrIFtjdXJyZW50XSBpdGVtIHdpdGgg b3JpZ2luYWwgc3RhcnQgaXRlbQorLSAgICAgICAgaWYgKChjdXJyZW50ID09IHN0YXJ0SXRlbSB8 fCBjdXJyZW50ID09IG9yaWdpbmFsU3RhcnRJdGVtKSAmJiBmcm9tID09IGZpcnN0RnJvbUl0ZW0p IHsKKysgICAgICAgIC8vIFdlIG1pZ2h0IGFsc28gcnVuIGludG8gYSBjeWNsZSBiZWZvcmUgd2Ug cmVhY2ggZmlyc3RGcm9tSXRlbSBhZ2FpbgorKyAgICAgICAgLy8gYnV0IG5vdGUgdGhhdCB3ZSBo YXZlIHRvIGlnbm9yZSBjdXJyZW50IGlmIHdlIGFyZSBtZWFudCB0byBza2lwIGl0CisrICAgICAg ICBpZiAoKChjdXJyZW50ID09IHN0YXJ0SXRlbSB8fCBjdXJyZW50ID09IG9yaWdpbmFsU3RhcnRJ dGVtKSAmJiBmcm9tID09IGZpcnN0RnJvbUl0ZW0pIHx8CisrICAgICAgICAgICAgICAgICghc2tp cCAmJiBjeWNsZURldGVjdG9yLmhhc1NlZW4oY3VycmVudCkpKSB7CisgICAgICAgICAgICAgLy8g d3JhcHBlZCBhcm91bmQsIGF2b2lkIGVuZGxlc3MgbG9vcHMKKyAgICAgICAgICAgICBpZiAoaXRl bSA9PSBjb250ZW50SXRlbSkgeworICAgICAgICAgICAgICAgICBxQ0RlYnVnKERCR19GT0NVUykg PDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46IGxvb3Bl ZCwgcmV0dXJuIGNvbnRlbnRJdGVtIjsKK0BAIC0yNjg5LDkgKzI2OTUsOCBAQCB2b2lkIFFRdWlj a0l0ZW06OnNldFBhcmVudEl0ZW0oUVF1aWNrSXRlbSAqcGFyZW50SXRlbSkKKyAKKyAgICAgICAg IGNvbnN0IGJvb2wgd2FzVmlzaWJsZSA9IGlzVmlzaWJsZSgpOworICAgICAgICAgb3AtPnJlbW92 ZUNoaWxkKHRoaXMpOworLSAgICAgICAgaWYgKHdhc1Zpc2libGUpIHsKKysgICAgICAgIGlmICh3 YXNWaXNpYmxlICYmICFvcC0+aW5EZXN0cnVjdG9yKQorICAgICAgICAgICAgIGVtaXQgb2xkUGFy ZW50SXRlbS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgpOworLSAgICAgICAgfQorICAgICB9IGVs c2UgaWYgKGQtPndpbmRvdykgeworICAgICAgICAgUVF1aWNrV2luZG93UHJpdmF0ZTo6Z2V0KGQt PndpbmRvdyktPnBhcmVudGxlc3NJdGVtcy5yZW1vdmUodGhpcyk7CisgICAgIH0KK0BAIC0yNzY4 LDggKzI3NzMsOSBAQCB2b2lkIFFRdWlja0l0ZW06OnNldFBhcmVudEl0ZW0oUVF1aWNrSXRlbSAq cGFyZW50SXRlbSkKKyAKKyAgICAgZC0+aXRlbUNoYW5nZShJdGVtUGFyZW50SGFzQ2hhbmdlZCwg ZC0+cGFyZW50SXRlbSk7CisgCistICAgIGVtaXQgcGFyZW50Q2hhbmdlZChkLT5wYXJlbnRJdGVt KTsKKy0gICAgaWYgKGlzVmlzaWJsZSgpICYmIGQtPnBhcmVudEl0ZW0pCisrICAgIGlmICghZC0+ aW5EZXN0cnVjdG9yKQorKyAgICAgICAgZW1pdCBwYXJlbnRDaGFuZ2VkKGQtPnBhcmVudEl0ZW0p OworKyAgICBpZiAoaXNWaXNpYmxlKCkgJiYgZC0+cGFyZW50SXRlbSAmJiAhUVF1aWNrSXRlbVBy aXZhdGU6OmdldChkLT5wYXJlbnRJdGVtKS0+aW5EZXN0cnVjdG9yKQorICAgICAgICAgZW1pdCBk LT5wYXJlbnRJdGVtLT52aXNpYmxlQ2hpbGRyZW5DaGFuZ2VkKCk7CisgfQorIAorQEAgLTI5NjUs NyArMjk3MSw4IEBAIHZvaWQgUVF1aWNrSXRlbVByaXZhdGU6OnJlbW92ZUNoaWxkKFFRdWlja0l0 ZW0gKmNoaWxkKQorIAorICAgICBpdGVtQ2hhbmdlKFFRdWlja0l0ZW06Okl0ZW1DaGlsZFJlbW92 ZWRDaGFuZ2UsIGNoaWxkKTsKKyAKKy0gICAgZW1pdCBxLT5jaGlsZHJlbkNoYW5nZWQoKTsKKysg ICAgaWYgKCFpbkRlc3RydWN0b3IpCisrICAgICAgICBlbWl0IHEtPmNoaWxkcmVuQ2hhbmdlZCgp OworIH0KKyAKKyB2b2lkIFFRdWlja0l0ZW1Qcml2YXRlOjpyZWZXaW5kb3coUVF1aWNrV2luZG93 ICpjKQorQEAgLTMxOTQsNiArMzIwMSw3IEBAIFFRdWlja0l0ZW1Qcml2YXRlOjpRUXVpY2tJdGVt UHJpdmF0ZSgpCisgICAgICwgdG91Y2hFbmFibGVkKGZhbHNlKQorICNlbmRpZgorICAgICAsIGhh c0N1cnNvckhhbmRsZXIoZmFsc2UpCisrICAgICwgaW5EZXN0cnVjdG9yKGZhbHNlKQorICAgICAs IGRpcnR5QXR0cmlidXRlcygwKQorICAgICAsIG5leHREaXJ0eUl0ZW0obnVsbHB0cikKKyAgICAg LCBwcmV2RGlydHlJdGVtKG51bGxwdHIpCitAQCAtNTEyMCw2ICs1MTI4LDEzIEBAIHZvaWQgUVF1 aWNrSXRlbTo6Y29tcG9uZW50Q29tcGxldGUoKQorICAgICAgICAgZC0+YWRkVG9EaXJ0eUxpc3Qo KTsKKyAgICAgICAgIFFRdWlja1dpbmRvd1ByaXZhdGU6OmdldChkLT53aW5kb3cpLT5kaXJ0eUl0 ZW0odGhpcyk7CisgICAgIH0KKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrICAg IGlmIChkLT5pc0FjY2Vzc2libGUgJiYgZC0+ZWZmZWN0aXZlVmlzaWJsZSkgeworKyAgICAgICAg UUFjY2Vzc2libGVFdmVudCBldih0aGlzLCBRQWNjZXNzaWJsZTo6T2JqZWN0U2hvdyk7CisrICAg ICAgICBRQWNjZXNzaWJsZTo6dXBkYXRlQWNjZXNzaWJpbGl0eSgmZXYpOworKyAgICB9CisrI2Vu ZGlmCisgfQorIAorIFFRdWlja1N0YXRlR3JvdXAgKlFRdWlja0l0ZW1Qcml2YXRlOjpfc3RhdGVz KCkKK0BAIC02MTA2LDkgKzYxMjEsMTEgQEAgYm9vbCBRUXVpY2tJdGVtUHJpdmF0ZTo6c2V0RWZm ZWN0aXZlVmlzaWJsZVJlY3VyKGJvb2wgbmV3RWZmZWN0aXZlVmlzaWJsZSkKKyAgICAgICAgIFFB Y2Nlc3NpYmxlOjp1cGRhdGVBY2Nlc3NpYmlsaXR5KCZldik7CisgICAgIH0KKyAjZW5kaWYKKy0g ICAgZW1pdCBxLT52aXNpYmxlQ2hhbmdlZCgpOworLSAgICBpZiAoY2hpbGRWaXNpYmlsaXR5Q2hh bmdlZCkKKy0gICAgICAgIGVtaXQgcS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgpOworKyAgICBp ZiAoIWluRGVzdHJ1Y3RvcikgeworKyAgICAgICAgZW1pdCBxLT52aXNpYmxlQ2hhbmdlZCgpOwor KyAgICAgICAgaWYgKGNoaWxkVmlzaWJpbGl0eUNoYW5nZWQpCisrICAgICAgICAgICAgZW1pdCBx LT52aXNpYmxlQ2hpbGRyZW5DaGFuZ2VkKCk7CisrICAgIH0KKyAKKyAgICAgcmV0dXJuIHRydWU7 ICAgIC8vIGVmZmVjdGl2ZSB2aXNpYmlsaXR5IERJRCBjaGFuZ2UKKyB9CitAQCAtNjE1Nyw2ICs2 MTc0LDE1IEBAIHZvaWQgUVF1aWNrSXRlbVByaXZhdGU6OnNldEVmZmVjdGl2ZUVuYWJsZVJlY3Vy KFFRdWlja0l0ZW0gKnNjb3BlLCBib29sIG5ld0VmZmVjCisgICAgIH0KKyAKKyAgICAgaXRlbUNo YW5nZShRUXVpY2tJdGVtOjpJdGVtRW5hYmxlZEhhc0NoYW5nZWQsIGVmZmVjdGl2ZUVuYWJsZSk7 CisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKyAgICBpZiAoaXNBY2Nlc3NpYmxlKSB7 CisrICAgICAgICBRQWNjZXNzaWJsZTo6U3RhdGUgY2hhbmdlZFN0YXRlOworKyAgICAgICAgY2hh bmdlZFN0YXRlLmRpc2FibGVkID0gdHJ1ZTsKKysgICAgICAgIGNoYW5nZWRTdGF0ZS5mb2N1c2Fi bGUgPSB0cnVlOworKyAgICAgICAgUUFjY2Vzc2libGVTdGF0ZUNoYW5nZUV2ZW50IGV2KHEsIGNo YW5nZWRTdGF0ZSk7CisrICAgICAgICBRQWNjZXNzaWJsZTo6dXBkYXRlQWNjZXNzaWJpbGl0eSgm ZXYpOworKyAgICB9CisrI2VuZGlmCisgICAgIGVtaXQgcS0+ZW5hYmxlZENoYW5nZWQoKTsKKyB9 CisgCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRl bV9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtX3AuaAoraW5k ZXggODQxZDkxYmI0MC4uYWRlOGZiNjFmMiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW1fcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj ay9pdGVtcy9xcXVpY2tpdGVtX3AuaAorQEAgLTQ3Miw2ICs0NzIsNyBAQCBwdWJsaWM6CisgICAg IGJvb2wgcmVwbGF5aW5nUHJlc3NFdmVudDoxOworICAgICBib29sIHRvdWNoRW5hYmxlZDoxOwor ICAgICBib29sIGhhc0N1cnNvckhhbmRsZXI6MTsKKysgICAgcXVpbnQzMiBpbkRlc3RydWN0b3I6 MTsgLy8gaGFzIGVudGVyZWQgflFRdWlja0l0ZW0KKyAKKyAgICAgZW51bSBEaXJ0eVR5cGUgewor ICAgICAgICAgVHJhbnNmb3JtT3JpZ2luICAgICAgICAgPSAweDAwMDAwMDAxLAorZGlmZiAtLWdp dCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNwcCBiL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNwcAoraW5kZXggMDEw YTAxNTJlMS4uZjhhZDE2OGExNyAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr L2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2sv aXRlbXMvcXF1aWNraXRlbXZpZXcuY3BwCitAQCAtMTc4NSw3ICsxNzg1LDcgQEAgdm9pZCBRUXVp Y2tJdGVtVmlld1ByaXZhdGU6OnJlZmlsbChxcmVhbCBmcm9tLCBxcmVhbCB0bykKKyAKKyAgICAg ZG8geworICAgICAgICAgYnVmZmVyUGF1c2Uuc3RvcCgpOworLSAgICAgICAgaWYgKGN1cnJlbnRD aGFuZ2VzLmhhc1BlbmRpbmdDaGFuZ2VzKCkgfHwgYnVmZmVyZWRDaGFuZ2VzLmhhc1BlbmRpbmdD aGFuZ2VzKCkpIHsKKysgICAgICAgIGlmIChjdXJyZW50Q2hhbmdlcy5oYXNQZW5kaW5nQ2hhbmdl cygpIHx8IGJ1ZmZlcmVkQ2hhbmdlcy5oYXNQZW5kaW5nQ2hhbmdlcygpIHx8IGN1cnJlbnRDaGFu Z2VzLmFjdGl2ZSkgeworICAgICAgICAgICAgIGN1cnJlbnRDaGFuZ2VzLnJlc2V0KCk7CisgICAg ICAgICAgICAgYnVmZmVyZWRDaGFuZ2VzLnJlc2V0KCk7CisgICAgICAgICAgICAgcmVsZWFzZVZp c2libGVJdGVtcyhyZXVzYWJsZUZsYWcpOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrL2l0ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1 aWNrL2l0ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaAoraW5kZXggZmJhMzgzZTI2OC4uMGQ2MzYx ODYyMiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja21v dXNlYXJlYV9wX3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNr bW91c2VhcmVhX3BfcC5oCitAQCAtNjEsNyArNjEsNiBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAK KyBjbGFzcyBRUXVpY2tNb3VzZUV2ZW50OworIGNsYXNzIFFRdWlja01vdXNlQXJlYTsKKy1jbGFz cyBRUXVpY2tQb2ludGVyTWFzazsKKyBjbGFzcyBRUXVpY2tNb3VzZUFyZWFQcml2YXRlIDogcHVi bGljIFFRdWlja0l0ZW1Qcml2YXRlCisgeworICAgICBRX0RFQ0xBUkVfUFVCTElDKFFRdWlja01v dXNlQXJlYSkKK0BAIC0xMDAsNyArOTksNiBAQCBwdWJsaWM6CisgI2lmIFFUX0NPTkZJRyhxdWlj a19kcmFnYW5kZHJvcCkKKyAgICAgUVF1aWNrRHJhZyAqZHJhZzsKKyAjZW5kaWYKKy0gICAgUVBv aW50ZXI8UVF1aWNrUG9pbnRlck1hc2s+IG1hc2s7CisgICAgIFFQb2ludEYgc3RhcnRTY2VuZTsK KyAgICAgUVBvaW50RiB0YXJnZXRTdGFydFBvczsKKyAgICAgUVBvaW50RiBsYXN0UG9zOworZGlm ZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja3RleHQuY3BwIGIv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrdGV4dC5jcHAKK2luZGV4IDYyMzAx ODY5MzMuLmU4MjNjYTEwOTUgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9p dGVtcy9xcXVpY2t0ZXh0LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMv cXF1aWNrdGV4dC5jcHAKK0BAIC0yMTY4LDcgKzIxNjgsNyBAQCB2b2lkIFFRdWlja1RleHQ6OnJl c2V0TWF4aW11bUxpbmVDb3VudCgpCisgICAgIDxpbWcgc3JjPSIiIGFsaWduPSJ0b3AsbWlkZGxl LGJvdHRvbSIgd2lkdGg9IiIgaGVpZ2h0PSIiPiAtIGlubGluZSBpbWFnZXMKKyAgICAgPG9sIHR5 cGU9IiI+LCA8dWwgdHlwZT0iIj4gYW5kIDxsaT4gLSBvcmRlcmVkIGFuZCB1bm9yZGVyZWQgbGlz dHMKKyAgICAgPHByZT48L3ByZT4gLSBwcmVmb3JtYXR0ZWQKKy0gICAgJmd0OyAmbHQ7ICZhbXA7 CisrICAgICZndDsgJmx0OyAmYW1wOyAmcXVvdDsgJm5ic3A7ICZhcG9zOworICAgICBcZW5kY29k ZQorIAorICAgICBcYyBUZXh0LlN0eWxlZFRleHQgcGFyc2VyIGlzIHN0cmljdCwgcmVxdWlyaW5n IHRhZ3MgdG8gYmUgY29ycmVjdGx5IG5lc3RlZC4KK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZl L3NyYy9xdWljay9zY2VuZWdyYXBoL3FzZ3JoaWRpc3RhbmNlZmllbGRnbHlwaGNhY2hlLmNwcCBi L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3NjZW5lZ3JhcGgvcXNncmhpZGlzdGFuY2VmaWVsZGds eXBoY2FjaGUuY3BwCitpbmRleCBlYjRkYjBmODVlLi4yMzI1YTI2NjViIDEwMDY0NAorLS0tIGEv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svc2NlbmVncmFwaC9xc2dyaGlkaXN0YW5jZWZpZWxkZ2x5 cGhjYWNoZS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3NjZW5lZ3JhcGgvcXNn cmhpZGlzdGFuY2VmaWVsZGdseXBoY2FjaGUuY3BwCitAQCAtNDQ2LDcgKzQ0Niw3IEBAIGJvb2wg UVNHUmhpRGlzdGFuY2VGaWVsZEdseXBoQ2FjaGU6OmxvYWRQcmVnZW5lcmF0ZWRDYWNoZShjb25z dCBRUmF3Rm9udCAmZm9udCkKKyAKKyAgICAgICAgIGNvbnN0IGNoYXIgKnRleHR1cmVSZWNvcmQg PSBhbGxvY2F0b3JEYXRhOworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXh0dXJlQ291 bnQ7ICsraSwgdGV4dHVyZVJlY29yZCArPSBRdGRmOjpUZXh0dXJlUmVjb3JkU2l6ZSkgeworLSAg ICAgICAgICAgIGlmICh0ZXh0dXJlUmVjb3JkICsgUXRkZjo6VGV4dHVyZVJlY29yZFNpemUgPiBx dGRmVGFibGVFbmQpIHsKKysgICAgICAgICAgICBpZiAocXRkZlRhYmxlRW5kIC0gdGV4dHVyZVJl Y29yZCA8IFF0ZGY6OlRleHR1cmVSZWNvcmRTaXplKSB7CisgICAgICAgICAgICAgICAgIHFXYXJu aW5nKCJxdGRmIHRhYmxlIHRvbyBzbWFsbCBpbiBmb250ICclcycuIiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgcVByaW50YWJsZShmb250LmZhbWlseU5hbWUoKSkpOworICAgICAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CitAQCAtNDYyLDcgKzQ2Miw3IEBAIGJvb2wgUVNHUmhpRGlzdGFu Y2VGaWVsZEdseXBoQ2FjaGU6OmxvYWRQcmVnZW5lcmF0ZWRDYWNoZShjb25zdCBRUmF3Rm9udCAm Zm9udCkKKyAKKyAgICAgICAgIGNvbnN0IGNoYXIgKmdseXBoUmVjb3JkID0gdGV4dHVyZVJlY29y ZDsKKyAgICAgICAgIGZvciAocXVpbnQzMiBpID0gMDsgaSA8IGdseXBoQ291bnQ7ICsraSwgZ2x5 cGhSZWNvcmQgKz0gUXRkZjo6R2x5cGhSZWNvcmRTaXplKSB7CistICAgICAgICAgICAgaWYgKGds eXBoUmVjb3JkICsgUXRkZjo6R2x5cGhSZWNvcmRTaXplID4gcXRkZlRhYmxlRW5kKSB7CisrICAg ICAgICAgICAgaWYgKHF0ZGZUYWJsZUVuZCAtIGdseXBoUmVjb3JkIDwgUXRkZjo6IEdseXBoUmVj b3JkU2l6ZSkgeworICAgICAgICAgICAgICAgICBxV2FybmluZygicXRkZiB0YWJsZSB0b28gc21h bGwgaW4gZm9udCAnJXMnLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHFQcmludGFibGUo Zm9udC5mYW1pbHlOYW1lKCkpKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworQEAg LTUxMiw4ICs1MTIsOCBAQCBib29sIFFTR1JoaURpc3RhbmNlRmllbGRHbHlwaENhY2hlOjpsb2Fk UHJlZ2VuZXJhdGVkQ2FjaGUoY29uc3QgUVJhd0ZvbnQgJmZvbnQpCisgCisgICAgICAgICAgICAg aW50IHdpZHRoID0gdGV4SW5mby0+YWxsb2NhdGVkQXJlYS53aWR0aCgpOworICAgICAgICAgICAg IGludCBoZWlnaHQgPSB0ZXhJbmZvLT5hbGxvY2F0ZWRBcmVhLmhlaWdodCgpOworLSAgICAgICAg ICAgIHFpbnQ2NCBzaXplID0gd2lkdGggKiBoZWlnaHQ7CistICAgICAgICAgICAgaWYgKHJlaW50 ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPih0ZXh0dXJlRGF0YSArIHNpemUpID4gcXRkZlRhYmxl RW5kKSB7CisrICAgICAgICAgICAgcWludDY0IHNpemUgPSBxaW50NjQod2lkdGgpICogaGVpZ2h0 OworKyAgICAgICAgICAgIGlmIChxdGRmVGFibGVFbmQgLSByZWludGVycHJldF9jYXN0PGNvbnN0 IGNoYXIgKj4odGV4dHVyZURhdGEpIDwgc2l6ZSkgeworICAgICAgICAgICAgICAgICBxV2Fybmlu ZygicXRkZiB0YWJsZSB0b28gc21hbGwgaW4gZm9udCAnJXMnLiIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgIHFQcmludGFibGUoZm9udC5mYW1pbHlOYW1lKCkpKTsKKyAgICAgICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3V0 aWwvcXF1aWNrc3R5bGVkdGV4dC5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay91dGlsL3Fx dWlja3N0eWxlZHRleHQuY3BwCitpbmRleCBkNTMxZmM5MjA1Li5hMjVhZjkwNDE0IDEwMDY0NAor LS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9xcXVpY2tzdHlsZWR0ZXh0LmNwcAor KysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9xcXVpY2tzdHlsZWR0ZXh0LmNwcAor QEAgLTU2NCw2ICs1NjQsOCBAQCB2b2lkIFFRdWlja1N0eWxlZFRleHRQcml2YXRlOjpwYXJzZUVu dGl0eShjb25zdCBRQ2hhciAqJmNoLCBjb25zdCBRU3RyaW5nICZ0ZXh0SQorICAgICAgICAgICAg ICAgICB0ZXh0T3V0ICs9IFFDaGFyKDYwKTsKKyAgICAgICAgICAgICBlbHNlIGlmIChlbnRpdHkg PT0gUUxhdGluMVN0cmluZygiYW1wIikpCisgICAgICAgICAgICAgICAgIHRleHRPdXQgKz0gUUNo YXIoMzgpOworKyAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0eSA9PSBRTGF0aW4xU3RyaW5nKCJh cG9zIikpCisrICAgICAgICAgICAgICAgIHRleHRPdXQgKz0gUUNoYXIoMzkpOworICAgICAgICAg ICAgIGVsc2UgaWYgKGVudGl0eSA9PSBRTGF0aW4xU3RyaW5nKCJxdW90IikpCisgICAgICAgICAg ICAgICAgIHRleHRPdXQgKz0gUUNoYXIoMzQpOworICAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0 eSA9PSBRTGF0aW4xU3RyaW5nKCJuYnNwIikpCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3BwIGIvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3BwCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uOGExYzkwMTg4MAorLS0tIC9kZXYvbnVsbAor KysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRn ZXQuY3BwCitAQCAtMCwwICsxLDExMCBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysq KiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0 dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IHRoZSBRdFF1aWNrIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJ Tl9MSUNFTlNFOkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5z ZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmls ZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVu dCBwcm92aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBh Y2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3Jl ZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1z CisrKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlv bnMuIEZvciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQg aHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkg YmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUK KysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBp bmNsdWRlZCBpbiB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3 IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBi ZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgor KyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwg dGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBH TlUgR2VuZXJhbAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVy c2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGlj ZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRp b24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BM MworKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2 aWV3IHRoZSBmb2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczov L3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5n bnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQK KysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2luY2x1ZGUgInFhY2Nlc3NpYmxlcXVp Y2t3aWRnZXRfcC5oIgorKworKyNpbmNsdWRlICJxcXVpY2t3aWRnZXRfcC5oIgorKworK1FUX0JF R0lOX05BTUVTUEFDRQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysKKytRQWNj ZXNzaWJsZVF1aWNrV2lkZ2V0OjpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0KFFRdWlja1dpZGdldCog d2lkZ2V0KQorKzogUUFjY2Vzc2libGVXaWRnZXQod2lkZ2V0KQorKywgbV9hY2Nlc3NpYmxlV2lu ZG93KFFRdWlja1dpZGdldFByaXZhdGU6OmdldCh3aWRnZXQpLT5vZmZzY3JlZW5XaW5kb3cpCisr eworKyAgICAvLyBOT1RFOiBtX2FjY2Vzc2libGVXaW5kb3cgaXMgYSBRQWNjZXNzaWJsZVF1aWNr V2luZG93LCBhbmQgbm90IGEKKysgICAgLy8gUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVl bldpbmRvdyAoZGVmaW5lZCBiZWxvdykuIFRoaXMgbWVhbnMKKysgICAgLy8gaXQgd2lsbCByZXR1 cm4gdGhlIFF1aWNrIGl0ZW0gY2hpbGQgaW50ZXJmYWNlcywgd2hpY2ggaXMgd2hhdCdzIG5lZWRl ZCBoZXJlCisrICAgIC8vICh1bmxpa2UgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldp bmRvdywgd2hpY2ggd2lsbCByZXBvcnQgMCBjaGlsZHJlbikuCisrfQorKworK1FBY2Nlc3NpYmxl SW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjpjaGlsZChpbnQgaW5kZXgpIGNvbnN0 CisreworKyAgICByZXR1cm4gbV9hY2Nlc3NpYmxlV2luZG93LmNoaWxkKGluZGV4KTsKKyt9Cisr CisraW50IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6OmNoaWxkQ291bnQoKSBjb25zdAorK3sKKysg ICAgcmV0dXJuIG1fYWNjZXNzaWJsZVdpbmRvdy5jaGlsZENvdW50KCk7CisrfQorKworK2ludCBR QWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjppbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRl cmZhY2UgKmlmYWNlKSBjb25zdAorK3sKKysgICAgcmV0dXJuIG1fYWNjZXNzaWJsZVdpbmRvdy5p bmRleE9mQ2hpbGQoaWZhY2UpOworK30KKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vz c2libGVRdWlja1dpZGdldDo6Y2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0CisreworKyAgICBy ZXR1cm4gbV9hY2Nlc3NpYmxlV2luZG93LmNoaWxkQXQoeCwgeSk7CisrfQorKworK1FBY2Nlc3Np YmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZz Y3JlZW5XaW5kb3coUVF1aWNrV2luZG93ICp3aW5kb3cpCisrOlFBY2Nlc3NpYmxlUXVpY2tXaW5k b3cod2luZG93KQorK3sKKysKKyt9CisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3Np YmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OmNoaWxkKGludCBpbmRleCkgY29uc3QKKyt7 CisrICAgIFFfVU5VU0VEKGluZGV4KTsKKysgICAgcmV0dXJuIG51bGxwdHI7CisrfQorKworK2lu dCBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpjaGlsZENvdW50KCkgY29u c3QKKyt7CisrICAgIHJldHVybiAwOworK30KKysKKytpbnQgUUFjY2Vzc2libGVRdWlja1dpZGdl dE9mZnNjcmVlbldpbmRvdzo6aW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNl ICppZmFjZSkgY29uc3QKKyt7CisrICAgIFFfVU5VU0VEKGlmYWNlKTsKKysgICAgcmV0dXJuIC0x OworK30KKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja1dpZGdldE9m ZnNjcmVlbldpbmRvdzo6UUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6Y2hp bGRBdChpbnQgeCwgaW50IHkpIGNvbnN0CisreworKyAgICBRX1VOVVNFRCh4KTsKKysgICAgUV9V TlVTRUQoeSk7CisrICAgIHJldHVybiBudWxscHRyOworK30KKysKKysjZW5kaWYgLy8gYWNjZXNz aWJpbGl0eQorKworK1FUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZl L3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmggYi9xdGRlY2xhcmF0 aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmgKK25ldyBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43YzJhYjkzMGUwCistLS0gL2Rldi9udWxs CisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dp ZGdldF9wLmgKK0BAIC0wLDAgKzEsOTUgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyoqCisr KiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb250YWN0OiBo dHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFydCBv ZiB0aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRfQkVH SU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExpY2Vu c2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZp bGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1l bnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4g YWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdy ZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJt cworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRp b25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0 IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5 IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisrKiogR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl CisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMg aW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmll dyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cworKyoqIHdpbGwg YmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCisrKioK KysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHks IHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQorKyoqIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUg R05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZl cnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRhdGlvbi4gVGhlIGxp Y2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0 aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQ TDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJl dmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJlIG1ldDogaHR0cHM6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiogaHR0cHM6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRfRU5EX0xJQ0VOU0Uk CisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpZm5kZWYgUUFDQ0VTU0lCTEVRVUlD S1dJREdFVF9ICisrI2RlZmluZSBRQUNDRVNTSUJMRVFVSUNLV0lER0VUX0gKKysKKysvLworKy8v ICBXIEEgUiBOIEkgTiBHCisrLy8gIC0tLS0tLS0tLS0tLS0KKysvLworKy8vIFRoaXMgZmlsZSBp cyBub3QgcGFydCBvZiB0aGUgUXQgQVBJLiAgSXQgZXhpc3RzIHB1cmVseSBhcyBhbgorKy8vIGlt cGxlbWVudGF0aW9uIGRldGFpbC4gIFRoaXMgaGVhZGVyIGZpbGUgbWF5IGNoYW5nZSBmcm9tIHZl cnNpb24gdG8KKysvLyB2ZXJzaW9uIHdpdGhvdXQgbm90aWNlLCBvciBldmVuIGJlIHJlbW92ZWQu CisrLy8KKysvLyBXZSBtZWFuIGl0LgorKy8vCisrCisrI2luY2x1ZGUgInFxdWlja3dpZGdldC5o IgorKyNpbmNsdWRlIDxRdFdpZGdldHMvcWFjY2Vzc2libGV3aWRnZXQuaD4KKysKKysjaW5jbHVk ZSA8cHJpdmF0ZS9xYWNjZXNzaWJsZXF1aWNrdmlld19wLmg+CisrCisrUVRfQkVHSU5fTkFNRVNQ QUNFCisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKworKy8vIFRoZXNlIGNsYXNz ZXMgaW1wbGVtZW50IHRoZSBRUXVpY2tXaWdldCBhY2Nlc3NpYmlsaXR5IHN3aXRjaGFyb28sCisr Ly8gd2hlcmUgdGhlIGNoaWxkIGl0ZW1zIG9mIHRoZSBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5k b3cgYXJlIHJlcG9ydGVkCisrLy8gYXMgY2hpbGQgYWNjZXNzaWJsZSBpbnRlcmZhY2VzIG9mIHRo ZSBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0LgorK2NsYXNzIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6 IHB1YmxpYyBRQWNjZXNzaWJsZVdpZGdldAorK3sKKytwdWJsaWM6CisrICAgIFFBY2Nlc3NpYmxl UXVpY2tXaWRnZXQoUVF1aWNrV2lkZ2V0KiB3aWRnZXQpOworKworKyAgICBRQWNjZXNzaWJsZUlu dGVyZmFjZSAqY2hpbGQoaW50IGluZGV4KSBjb25zdCBvdmVycmlkZTsKKysgICAgaW50IGNoaWxk Q291bnQoKSBjb25zdCBvdmVycmlkZTsKKysgICAgaW50IGluZGV4T2ZDaGlsZChjb25zdCBRQWNj ZXNzaWJsZUludGVyZmFjZSAqaWZhY2UpIGNvbnN0IG92ZXJyaWRlOworKyAgICBRQWNjZXNzaWJs ZUludGVyZmFjZSAqY2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0IG92ZXJyaWRlOworKworK3By aXZhdGU6CisrICAgIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cgbV9hY2Nlc3NpYmxlV2luZG93Owor KyAgICBRX0RJU0FCTEVfQ09QWShRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0KQorK307CisrCisrY2xh c3MgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzogcHVibGljIFFBY2Nlc3Np YmxlUXVpY2tXaW5kb3cKKyt7CisrcHVibGljOgorKyAgICBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0 T2Zmc2NyZWVuV2luZG93KFFRdWlja1dpbmRvdyAqd2luZG93KTsKKysgICAgUUFjY2Vzc2libGVJ bnRlcmZhY2UgKmNoaWxkKGludCBpbmRleCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIGludCBjaGls ZENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIGludCBpbmRleE9mQ2hpbGQoY29uc3QgUUFj Y2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlKSBjb25zdCBvdmVycmlkZTsKKysgICAgUUFjY2Vzc2li bGVJbnRlcmZhY2UgKmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdCBvdmVycmlkZTsKKyt9Owor KworKyNlbmRpZiAvLyBhY2Nlc3NpYmlsaXR5CisrCisrUVRfRU5EX05BTUVTUEFDRQorKworKyNl bmRpZgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNz aWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdl dHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnkuY3BwCituZXcgZmlsZSBtb2RlIDEwMDY0 NAoraW5kZXggMDAwMDAwMDAwMC4uN2JhODhhMTc2OQorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5 LmNwcAorQEAgLTAsMCArMSw2MCBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysqKiBD b3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0dHBz Oi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBRdFF1aWNrIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9M SUNFTlNFOkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVz IGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBp bgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBw cm92aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2Nv cmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1l bnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisr KiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMu IEZvciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0 cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUg dXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysq KiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNs dWRlZCBpbiB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRo ZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBt ZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoq IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhp cyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJh bCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUg R2VuZXJhbAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lv biBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5z ZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24g YW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMwor KyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3 IHRoZSBmb2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysq KgorKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2luY2x1ZGUgInFhY2Nlc3NpYmxlcXVpY2t3 aWRnZXRmYWN0b3J5X3AuaCIKKysjaW5jbHVkZSAicWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmgi CisrCisrUVRfQkVHSU5fTkFNRVNQQUNFCisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5 KQorKworK1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpxQWNjZXNzaWJsZVF1aWNrV2lkZ2V0RmFjdG9y eShjb25zdCBRU3RyaW5nICZjbGFzc25hbWUsIFFPYmplY3QgKm9iamVjdCkKKyt7CisrICAgIGlm IChjbGFzc25hbWUgPT0gUUxhdGluMVN0cmluZygiUVF1aWNrV2lkZ2V0IikpIHsKKysgICAgICAg IHJldHVybiBuZXcgUUFjY2Vzc2libGVRdWlja1dpZGdldChxb2JqZWN0X2Nhc3Q8UVF1aWNrV2lk Z2V0ICo+KG9iamVjdCkpOworKyAgICB9IGVsc2UgaWYgKGNsYXNzbmFtZSA9PSBRTGF0aW4xU3Ry aW5nKCJRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3ciKSkgeworKyAgICAgICAgcmV0dXJuIG5l dyBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KHFvYmplY3RfY2FzdDxRUXVp Y2tXaW5kb3cgKj4ob2JqZWN0KSk7CisrICAgIH0KKysgICAgcmV0dXJuIDA7CisrfQorKworKyNl bmRpZiAvLyBhY2Nlc3NpYmlsaXR5CisrCisrUVRfRU5EX05BTUVTUEFDRQorKworZGlmZiAtLWdp dCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0 ZmFjdG9yeV9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVx dWlja3dpZGdldGZhY3RvcnlfcC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAw MDAwMC4uOGM2M2IwOWY4MQorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMv cXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaAorQEAgLTAsMCAr MSw2NiBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysqKiBDb3B5cmlnaHQgKEMpIDIw MjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xp Y2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFF1aWNrIG1vZHVs ZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwkCisr KiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQg Y29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFjY29yZGFu Y2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRo ZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhl IHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3Ug YW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNvbmRpdGlv bnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCisr KiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8v Y29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBV c2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNp b24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFu ZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0aGUKKysq KiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5m b3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1 c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJhbAorKyoqIFB1 YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHByb3ZlZCBieSB0 aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBp biB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGluY2x1ZGVkIGlu IHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcK KysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vu c2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dw bC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisrCisrI2luY2x1ZGUgPFF0R3VpL3FhY2Nlc3NpYmxlLmg+CisrCisrI2lmbmRl ZiBRQUNDRVNTSUJMRVFVSUNLV0lER0VURkFDVE9SWV9ICisrI2RlZmluZSBRQUNDRVNTSUJMRVFV SUNLV0lER0VURkFDVE9SWV9ICisrCisrLy8KKysvLyAgVyBBIFIgTiBJIE4gRworKy8vICAtLS0t LS0tLS0tLS0tCisrLy8KKysvLyBUaGlzIGZpbGUgaXMgbm90IHBhcnQgb2YgdGhlIFF0IEFQSS4g IEl0IGV4aXN0cyBwdXJlbHkgYXMgYW4KKysvLyBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBUaGlz IGhlYWRlciBmaWxlIG1heSBjaGFuZ2UgZnJvbSB2ZXJzaW9uIHRvCisrLy8gdmVyc2lvbiB3aXRo b3V0IG5vdGljZSwgb3IgZXZlbiBiZSByZW1vdmVkLgorKy8vCisrLy8gV2UgbWVhbiBpdC4KKysv LworKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0 eSkKKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqcUFjY2Vzc2libGVRdWlja1dpZGdldEZhY3Rv cnkoY29uc3QgUVN0cmluZyAmY2xhc3NuYW1lLCBRT2JqZWN0ICpvYmplY3QpOworKworKyNlbmRp ZgorKworK1FUX0VORF9OQU1FU1BBQ0UKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGRlY2xh cmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0LmNwcCBiL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXQuY3BwCitpbmRleCAzOTc4MGY4ZGUzLi45Yzk3 YjQzNTE4IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlj a3dpZGdldC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3 aWRnZXQuY3BwCitAQCAtMzksNiArMzksNyBAQAorIAorICNpbmNsdWRlICJxcXVpY2t3aWRnZXQu aCIKKyAjaW5jbHVkZSAicXF1aWNrd2lkZ2V0X3AuaCIKKysjaW5jbHVkZSAicWFjY2Vzc2libGVx dWlja3dpZGdldGZhY3RvcnlfcC5oIgorIAorICNpbmNsdWRlICJwcml2YXRlL3FxdWlja3dpbmRv d19wLmgiCisgI2luY2x1ZGUgInByaXZhdGUvcXF1aWNraXRlbV9wLmgiCitAQCAtNzUsOSArNzYs MTYgQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKytRUXVpY2tXaWRnZXRPZmZzY3JlZW5X aW5kb3c6OlFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhRUXVpY2tXaW5kb3dQcml2YXRlICZk ZCwgUVF1aWNrUmVuZGVyQ29udHJvbCAqY29udHJvbCkKKys6UVF1aWNrV2luZG93KGRkLCBjb250 cm9sKQorK3sKKysgICAgc2V0VGl0bGUoUVN0cmluZzo6ZnJvbUxhdGluMSgiT2Zmc2NyZWVuIikp OworKyAgICBzZXRPYmplY3ROYW1lKFFTdHJpbmc6OmZyb21MYXRpbjEoIlFRdWlja09mZlNjcmVl bldpbmRvdyIpKTsKKyt9CisrCisgLy8gb3ZlcnJpZGUgc2V0VmlzYmxlIHRvIHByZXZlbnQgYWNj aWRlbnRhbCBvZmZzY3JlZW4gd2luZG93IGJlaW5nIGNyZWF0ZWQKKyAvLyBieSBiYXNlIGNsYXNz LgorLWNsYXNzIFFRdWlja09mZmNyZWVuV2luZG93UHJpdmF0ZTogcHVibGljIFFRdWlja1dpbmRv d1ByaXZhdGUgeworK2NsYXNzIFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvd1ByaXZhdGU6IHB1 YmxpYyBRUXVpY2tXaW5kb3dQcml2YXRlIHsKKyBwdWJsaWM6CisgICAgIHZvaWQgc2V0VmlzaWJs ZShib29sIHZpc2libGUpIG92ZXJyaWRlIHsKKyAgICAgICAgIFFfUShRV2luZG93KTsKK0BAIC0x MDUsOSArMTEzLDggQEAgdm9pZCBRUXVpY2tXaWRnZXRQcml2YXRlOjppbml0KFFRbWxFbmdpbmUq IGUpCisgICAgIFFfUShRUXVpY2tXaWRnZXQpOworIAorICAgICByZW5kZXJDb250cm9sID0gbmV3 IFFRdWlja1dpZGdldFJlbmRlckNvbnRyb2wocSk7CistICAgIG9mZnNjcmVlbldpbmRvdyA9IG5l dyBRUXVpY2tXaW5kb3coKm5ldyBRUXVpY2tPZmZjcmVlbldpbmRvd1ByaXZhdGUoKSxyZW5kZXJD b250cm9sKTsKKy0gICAgb2Zmc2NyZWVuV2luZG93LT5zZXRUaXRsZShRU3RyaW5nOjpmcm9tTGF0 aW4xKCJPZmZzY3JlZW4iKSk7CistICAgIG9mZnNjcmVlbldpbmRvdy0+c2V0T2JqZWN0TmFtZShR U3RyaW5nOjpmcm9tTGF0aW4xKCJRUXVpY2tPZmZTY3JlZW5XaW5kb3ciKSk7CisrICAgIG9mZnNj cmVlbldpbmRvdyA9IG5ldyBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3coKm5ldyBRUXVpY2tX aWRnZXRPZmZzY3JlZW5XaW5kb3dQcml2YXRlKCksIHJlbmRlckNvbnRyb2wpOworKyAgICBvZmZz Y3JlZW5XaW5kb3ctPnNldFNjcmVlbihxLT5zY3JlZW4oKSk7CisgICAgIC8vIERvIG5vdCBjYWxs IGNyZWF0ZSgpIG9uIG9mZnNjcmVlbldpbmRvdy4KKyAKKyAgICAgLy8gQ2hlY2sgaWYgdGhlIFNv ZnR3YXJlIEFkYXB0YXRpb24gaXMgYmVpbmcgdXNlZAorQEAgLTEzOCw2ICsxNDUsMTAgQEAgdm9p ZCBRUXVpY2tXaWRnZXRQcml2YXRlOjppbml0KFFRbWxFbmdpbmUqIGUpCisgICAgIFFXaWRnZXQ6 OmNvbm5lY3Qob2Zmc2NyZWVuV2luZG93LCAmUVF1aWNrV2luZG93Ojpmb2N1c09iamVjdENoYW5n ZWQsIHEsICZRUXVpY2tXaWRnZXQ6OnByb3BhZ2F0ZUZvY3VzT2JqZWN0Q2hhbmdlZCk7CisgICAg IFFPYmplY3Q6OmNvbm5lY3QocmVuZGVyQ29udHJvbCwgU0lHTkFMKHJlbmRlclJlcXVlc3RlZCgp KSwgcSwgU0xPVCh0cmlnZ2VyVXBkYXRlKCkpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChyZW5k ZXJDb250cm9sLCBTSUdOQUwoc2NlbmVDaGFuZ2VkKCkpLCBxLCBTTE9UKHRyaWdnZXJVcGRhdGUo KSkpOworKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysgICAgUUFjY2Vzc2libGU6 Omluc3RhbGxGYWN0b3J5KCZxQWNjZXNzaWJsZVF1aWNrV2lkZ2V0RmFjdG9yeSk7CisrI2VuZGlm CisgfQorIAorIHZvaWQgUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6ZW5zdXJlRW5naW5lKCkgY29uc3QK K0BAIC05MDEsOSArOTEyLDcgQEAgdm9pZCBRUXVpY2tXaWRnZXRQcml2YXRlOjpjcmVhdGVDb250 ZXh0KCkKKyAKKyAgICAgICAgIGNvbnRleHQgPSBuZXcgUU9wZW5HTENvbnRleHQ7CisgICAgICAg ICBjb250ZXh0LT5zZXRGb3JtYXQob2Zmc2NyZWVuV2luZG93LT5yZXF1ZXN0ZWRGb3JtYXQoKSk7 CistICAgICAgICBjb25zdCBRV2luZG93ICp3aW4gPSBxLT53aW5kb3coKS0+d2luZG93SGFuZGxl KCk7CistICAgICAgICBpZiAod2luICYmIHdpbi0+c2NyZWVuKCkpCistICAgICAgICAgICAgY29u dGV4dC0+c2V0U2NyZWVuKHdpbi0+c2NyZWVuKCkpOworKyAgICAgICAgY29udGV4dC0+c2V0U2Ny ZWVuKHEtPnNjcmVlbigpKTsKKyAgICAgICAgIFFPcGVuR0xDb250ZXh0ICpzaGFyZUNvbnRleHQg PSBxdF9nbF9nbG9iYWxfc2hhcmVfY29udGV4dCgpOworICAgICAgICAgaWYgKCFzaGFyZUNvbnRl eHQpCisgICAgICAgICAgICAgc2hhcmVDb250ZXh0ID0gUVdpZGdldFByaXZhdGU6OmdldChxLT53 aW5kb3coKSktPnNoYXJlQ29udGV4dCgpOworQEAgLTE1MjAsMTkgKzE1MjksMTYgQEAgYm9vbCBR UXVpY2tXaWRnZXQ6OmV2ZW50KFFFdmVudCAqZSkKKyAgICAgICAgIGQtPmhhbmRsZVdpbmRvd0No YW5nZSgpOworICAgICAgICAgYnJlYWs7CisgCistICAgIGNhc2UgUUV2ZW50OjpTY3JlZW5DaGFu Z2VJbnRlcm5hbDoKKy0gICAgICAgIGlmIChRV2luZG93ICp3aW5kb3cgPSB0aGlzLT53aW5kb3co KS0+d2luZG93SGFuZGxlKCkpIHsKKy0gICAgICAgICAgICBRU2NyZWVuICpuZXdTY3JlZW4gPSB3 aW5kb3ctPnNjcmVlbigpOworLQorLSAgICAgICAgICAgIGlmIChkLT5vZmZzY3JlZW5XaW5kb3cp CistICAgICAgICAgICAgICAgIGQtPm9mZnNjcmVlbldpbmRvdy0+c2V0U2NyZWVuKG5ld1NjcmVl bik7CistICAgICAgICAgICAgaWYgKGQtPm9mZnNjcmVlblN1cmZhY2UpCistICAgICAgICAgICAg ICAgIGQtPm9mZnNjcmVlblN1cmZhY2UtPnNldFNjcmVlbihuZXdTY3JlZW4pOworKyAgICBjYXNl IFFFdmVudDo6U2NyZWVuQ2hhbmdlSW50ZXJuYWw6IHsKKysgICAgICAgIFFTY3JlZW4gKm5ld1Nj cmVlbiA9IHNjcmVlbigpOworKyAgICAgICAgaWYgKGQtPm9mZnNjcmVlbldpbmRvdykKKysgICAg ICAgICAgICBkLT5vZmZzY3JlZW5XaW5kb3ctPnNldFNjcmVlbihuZXdTY3JlZW4pOworKyAgICAg ICAgaWYgKGQtPm9mZnNjcmVlblN1cmZhY2UpCisrICAgICAgICAgICAgZC0+b2Zmc2NyZWVuU3Vy ZmFjZS0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisgI2lmIFFUX0NPTkZJRyhvcGVuZ2wpCistICAg ICAgICAgICAgaWYgKGQtPmNvbnRleHQpCistICAgICAgICAgICAgICAgIGQtPmNvbnRleHQtPnNl dFNjcmVlbihuZXdTY3JlZW4pOworKyAgICAgICAgaWYgKGQtPmNvbnRleHQpCisrICAgICAgICAg ICAgZC0+Y29udGV4dC0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisgI2VuZGlmCistICAgICAgICB9 CisgCisgICAgICAgICBpZiAoZC0+dXNlU29mdHdhcmVSZW5kZXJlcgorICNpZiBRVF9DT05GSUco b3BlbmdsKQorQEAgLTE1NDUsNyArMTU1MSw3IEBAIGJvb2wgUVF1aWNrV2lkZ2V0OjpldmVudChR RXZlbnQgKmUpCisgICAgICAgICAgICAgZC0+cmVuZGVyKHRydWUpOworICAgICAgICAgfQorICAg ICAgICAgYnJlYWs7CistCisrICAgIH0KKyAgICAgY2FzZSBRRXZlbnQ6OlNob3c6CisgICAgIGNh c2UgUUV2ZW50OjpNb3ZlOgorICAgICAgICAgZC0+dXBkYXRlUG9zaXRpb24oKTsKK2RpZmYgLS1n aXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0X3AuaCBiL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXRfcC5oCitpbmRleCA4ODFm N2Y5MjIwLi4xYTk0NmJjYzcxIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3 aWRnZXRzL3FxdWlja3dpZGdldF9wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lk Z2V0cy9xcXVpY2t3aWRnZXRfcC5oCitAQCAtMTQ4LDYgKzE0OCwxNCBAQCBwdWJsaWM6CisgICAg IGJvb2wgZm9yY2VGdWxsVXBkYXRlOworIH07CisgCisrY2xhc3MgUVF1aWNrV2lkZ2V0T2Zmc2Ny ZWVuV2luZG93OiBwdWJsaWMgUVF1aWNrV2luZG93CisreworKyAgICBRX09CSkVDVAorKworK3B1 YmxpYzoKKysgICAgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KFFRdWlja1dpbmRvd1ByaXZh dGUgJmRkLCBRUXVpY2tSZW5kZXJDb250cm9sICpjb250cm9sKTsKKyt9OworKworIFFUX0VORF9O QU1FU1BBQ0UKKyAKKyAjZW5kaWYgLy8gUVF1aWNrV2lkZ2V0X1BfSAorZGlmZiAtLWdpdCBhL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlja3dpZGdldHMucHJvIGIvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3F1aWNrd2lkZ2V0cy5wcm8KK2luZGV4IDI0MzhlNTc3YWUu Ljg1ZDE1NmI4YTMgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMv cXVpY2t3aWRnZXRzLnBybworKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3F1 aWNrd2lkZ2V0cy5wcm8KK0BAIC03LDkgKzcsMTMgQEAgREVGSU5FUyAgICs9IFFUX05PX1VSTF9D QVNUX0ZST01fU1RSSU5HIFFUX05PX0lOVEVHRVJfRVZFTlRfQ09PUkRJTkFURVMgUVRfTk9fRk8K KyBIRUFERVJTICs9IFwKKyAgICAgcXF1aWNrd2lkZ2V0LmggXAorICAgICBxcXVpY2t3aWRnZXRf cC5oIFwKKy0gICAgcXRxdWlja3dpZGdldHNnbG9iYWwuaAorKyAgICBxdHF1aWNrd2lkZ2V0c2ds b2JhbC5oIFwKKysgICAgcWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmggXAorKyAgICBxYWNjZXNz aWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmgKKyAKKyBTT1VSQ0VTICs9IFwKKy0gICAgcXF1aWNr d2lkZ2V0LmNwcAorKyAgICBxcXVpY2t3aWRnZXQuY3BwIFwKKysgICAgcWFjY2Vzc2libGVxdWlj a3dpZGdldC5jcHAgXAorKyAgICBxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeS5jcHAKKyAK KyBsb2FkKHF0X21vZHVsZSkKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8v cW1sL3Fqc2VuZ2luZS90c3RfcWpzZW5naW5lLmNwcCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0 by9xbWwvcWpzZW5naW5lL3RzdF9xanNlbmdpbmUuY3BwCitpbmRleCAzYjdkNzRkZjYzLi5iNzVi ZjgyMGQ1IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xanNlbmdp bmUvdHN0X3Fqc2VuZ2luZS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwv cWpzZW5naW5lL3RzdF9xanNlbmdpbmUuY3BwCitAQCAtMTAyLDYgKzEwMiw3IEBAIHByaXZhdGUg c2xvdHM6CisgICAgIHZvaWQgdmFsdWVDb252ZXJzaW9uX1JlZ3VsYXJFeHByZXNzaW9uKCk7Cisg ICAgIHZvaWQgY2FzdFdpdGhNdWx0aXBsZUluaGVyaXRhbmNlKCk7CisgICAgIHZvaWQgY29sbGVj dEdhcmJhZ2UoKTsKKysgICAgdm9pZCBjb2xsZWN0R2FyYmFnZU5lc3RlZFdyYXBwZXJzVHdvRW5n aW5lcygpOworICAgICB2b2lkIGdjV2l0aE5lc3RlZERhdGFTdHJ1Y3R1cmUoKTsKKyAgICAgdm9p ZCBzdGFja3RyYWNlKCk7CisgICAgIHZvaWQgbnVtYmVyUGFyc2luZ19kYXRhKCk7CitAQCAtMTgw OSw2ICsxODEwLDQ0IEBAIHZvaWQgdHN0X1FKU0VuZ2luZTo6Y29sbGVjdEdhcmJhZ2UoKQorICAg ICBRVkVSSUZZKHB0ci5pc051bGwoKSk7CisgfQorIAorK2NsYXNzIFRlc3RPYmplY3RDb250YWlu ZXIgOiBwdWJsaWMgUU9iamVjdAorK3sKKysgICAgUV9PQkpFQ1QKKysgICAgUV9QUk9QRVJUWShR T2JqZWN0ICpkdW1teSBNRU1CRVIgbV9kdW1teSBDT05TVEFOVCkKKysKKytwdWJsaWM6CisrICAg IFRlc3RPYmplY3RDb250YWluZXIoKSA6IG1fZHVtbXkobmV3IFFPYmplY3QodGhpcykpIHt9Cisr CisrcHJpdmF0ZToKKysgICAgUU9iamVjdCAqbV9kdW1teTsKKyt9OworKworK3ZvaWQgdHN0X1FK U0VuZ2luZTo6Y29sbGVjdEdhcmJhZ2VOZXN0ZWRXcmFwcGVyc1R3b0VuZ2luZXMoKQorK3sKKysg ICAgUUpTRW5naW5lIGVuZ2luZTE7CisrICAgIFFKU0VuZ2luZSBlbmdpbmUyOworKworKyAgICBU ZXN0T2JqZWN0Q29udGFpbmVyIGNvbnRhaW5lcjsKKysgICAgUVFtbEVuZ2luZTo6c2V0T2JqZWN0 T3duZXJzaGlwKCZjb250YWluZXIsIFFRbWxFbmdpbmU6OkNwcE93bmVyc2hpcCk7CisrCisrICAg IGVuZ2luZTEuZ2xvYmFsT2JqZWN0KCkuc2V0UHJvcGVydHkoImZvb2JhciIsIGVuZ2luZTEubmV3 UU9iamVjdCgmY29udGFpbmVyKSk7CisrICAgIGVuZ2luZTIuZ2xvYmFsT2JqZWN0KCkuc2V0UHJv cGVydHkoImZvb2JhciIsIGVuZ2luZTIubmV3UU9iamVjdCgmY29udGFpbmVyKSk7CisrCisrICAg IGVuZ2luZTEuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXogPSA0MiIpOworKyAgICBlbmdpbmUy LmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6ID0gNDMiKTsKKysKKysgICAgUUNPTVBBUkUoZW5n aW5lMS5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiIpLnRvSW50KCksIDQyKTsKKysgICAgUUNP TVBBUkUoZW5naW5lMi5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiIpLnRvSW50KCksIDQzKTsK KysKKysgICAgZW5naW5lMS5jb2xsZWN0R2FyYmFnZSgpOworKyAgICBlbmdpbmUyLmNvbGxlY3RH YXJiYWdlKCk7CisrCisrICAgIC8vIFRoZSBHQyBzaG91bGQgbm90IGNvbGxlY3QgZHVtbXkgb2Jq ZWN0IHdyYXBwZXJzIG5laXRoZXIgaW4gZW5naW5lMSBub3IgZW5naW5lMiwgd2UKKysgICAgLy8g dmVyaWZ5IHRoYXQgYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgYmF6IHByb3BlcnR5IHN0aWxsIGhh cyBpdHMgcHJldmlvdXMgdmFsdWUuCisrICAgIFFDT01QQVJFKGVuZ2luZTEuZXZhbHVhdGUoImZv b2Jhci5kdW1teS5iYXoiKS50b0ludCgpLCA0Mik7CisrICAgIFFDT01QQVJFKGVuZ2luZTIuZXZh bHVhdGUoImZvb2Jhci5kdW1teS5iYXoiKS50b0ludCgpLCA0Myk7CisrfQorKworIHZvaWQgdHN0 X1FKU0VuZ2luZTo6Z2NXaXRoTmVzdGVkRGF0YVN0cnVjdHVyZSgpCisgeworICAgICAvLyBUaGUg R0MgbXVzdCBiZSBhYmxlIHRvIHRyYXZlcnNlIGRlZXBseSBuZXN0ZWQgb2JqZWN0cywgb3RoZXJ3 aXNlIHRoaXMKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxk ZWxlZ2F0ZW1vZGVsL2RhdGEvcmVkcmF3VXBvbkNvbHVtbkNoYW5nZS5xbWwgYi9xdGRlY2xhcmF0 aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL2RhdGEvcmVkcmF3VXBvbkNvbHVt bkNoYW5nZS5xbWwKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yMDYx MzNiYjM5CistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1s L3FxbWxkZWxlZ2F0ZW1vZGVsL2RhdGEvcmVkcmF3VXBvbkNvbHVtbkNoYW5nZS5xbWwKK0BAIC0w LDAgKzEsMTEgQEAKKytpbXBvcnQgUXRRdWljayAyLjgKKysKKytMaXN0VmlldyB7CisrICAgIGlk OiByb290CisrICAgIHdpZHRoOiAyMDAKKysgICAgaGVpZ2h0OiAyMDAKKysKKysgICAgZGVsZWdh dGU6IFRleHQgeworKyAgICAgICAgdGV4dDogZGlzcGxheQorKyAgICB9CisrfQorZGlmZiAtLWdp dCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvdHN0X3Fx bWxkZWxlZ2F0ZW1vZGVsLmNwcCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRl bGVnYXRlbW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAoraW5kZXggMzVmMWUyYzk0ZC4u MTcyMjQ0NzgzMCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFt bGRlbGVnYXRlbW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorKysrIGIvcXRkZWNsYXJh dGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC90c3RfcXFtbGRlbGVnYXRlbW9k ZWwuY3BwCitAQCAtMjcsNiArMjcsOCBAQAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgCisgI2lu Y2x1ZGUgPFF0VGVzdC9xdGVzdC5oPgorKyNpbmNsdWRlIDxRdENvcmUvUUNvbmNhdGVuYXRlVGFi bGVzUHJveHlNb2RlbD4KKysjaW5jbHVkZSA8UXRHdWkvUVN0YW5kYXJkSXRlbU1vZGVsPgorICNp bmNsdWRlIDxRdFFtbC9xcW1sY29tcG9uZW50Lmg+CisgI2luY2x1ZGUgPFF0UW1sTW9kZWxzL3By aXZhdGUvcXFtbGRlbGVnYXRlbW9kZWxfcC5oPgorICNpbmNsdWRlIDxRdFF1aWNrL3FxdWlja3Zp ZXcuaD4KK0BAIC00Nyw2ICs0OSw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgZmlsdGVy T25Hcm91cF9yZW1vdmVXaGVuQ29tcGxldGVkKCk7CisgICAgIHZvaWQgcXRidWdfODYwMTcoKTsK KyAgICAgdm9pZCBjb250ZXh0QWNjZXNzZWRCeUhhbmRsZXIoKTsKKysgICAgdm9pZCByZWRyYXdV cG9uQ29sdW1uQ2hhbmdlKCk7CisgfTsKKyAKKyBjbGFzcyBBYnN0cmFjdEl0ZW1Nb2RlbCA6IHB1 YmxpYyBRQWJzdHJhY3RJdGVtTW9kZWwKK0BAIC0xODYsNiArMTg5LDMwIEBAIHZvaWQgdHN0X1FR bWxEZWxlZ2F0ZU1vZGVsOjpjb250ZXh0QWNjZXNzZWRCeUhhbmRsZXIoKQorICAgICBRVkVSSUZZ KHJvb3QtPnByb3BlcnR5KCJ3b3JrcyIpLnRvQm9vbCgpKTsKKyB9CisgCisrdm9pZCB0c3RfUVFt bERlbGVnYXRlTW9kZWw6OnJlZHJhd1Vwb25Db2x1bW5DaGFuZ2UoKQorK3sKKysgICAgUVN0YW5k YXJkSXRlbU1vZGVsIG0xOworKyAgICBtMS5hcHBlbmRSb3coeworKyAgICAgICAgICAgIG5ldyBR U3RhbmRhcmRJdGVtKCJCYW5hbmEiKSwKKysgICAgICAgICAgICBuZXcgUVN0YW5kYXJkSXRlbSgi Q29jb251dCIpLAorKyAgICB9KTsKKysKKysgICAgUVF1aWNrVmlldyB2aWV3KHRlc3RGaWxlVXJs KCJyZWRyYXdVcG9uQ29sdW1uQ2hhbmdlLnFtbCIpKTsKKysgICAgUUNPTVBBUkUodmlldy5zdGF0 dXMoKSwgUVF1aWNrVmlldzo6UmVhZHkpOworKyAgICB2aWV3LnNob3coKTsKKysgICAgUVF1aWNr SXRlbSAqcm9vdCA9IHZpZXcucm9vdE9iamVjdCgpOworKyAgICByb290LT5zZXRQcm9wZXJ0eSgi bW9kZWwiLCBRVmFyaWFudDo6ZnJvbVZhbHVlPFFPYmplY3QgKj4oJm0xKSk7CisrCisrICAgIFFP YmplY3QgKml0ZW0gPSByb290LT5wcm9wZXJ0eSgiY3VycmVudEl0ZW0iKS52YWx1ZTxRT2JqZWN0 ICo+KCk7CisrICAgIFFWRVJJRlkoaXRlbSk7CisrICAgIFFDT01QQVJFKGl0ZW0tPnByb3BlcnR5 KCJ0ZXh0IikudG9TdHJpbmcoKSwgIkJhbmFuYSIpOworKworKyAgICBRVkVSSUZZKHJvb3QpOwor KyAgICBtMS5yZW1vdmVDb2x1bW4oMCk7CisrCisrICAgIFFDT01QQVJFKGl0ZW0tPnByb3BlcnR5 KCJ0ZXh0IikudG9TdHJpbmcoKSwgIkNvY29udXQiKTsKKyt9CisrCisgUVRFU1RfTUFJTih0c3Rf UVFtbERlbGVnYXRlTW9kZWwpCisgCisgI2luY2x1ZGUgInRzdF9xcW1sZGVsZWdhdGVtb2RlbC5t b2MiCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3Rf cXY0bW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0bW0u Y3BwCitpbmRleCA1ZDYzNWFhNjNiLi44MjRmZDg5ZTViIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJh dGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0bW0uY3BwCisrKysgYi9xdGRlY2xhcmF0 aXZlL3Rlc3RzL2F1dG8vcW1sL3F2NG1tL3RzdF9xdjRtbS5jcHAKK0BAIC03NiwxMCArNzYsMTAg QEAgdm9pZCB0c3RfcXY0bW06Om11bHRpV3JhcHBlZFFPYmplY3RzKCkKKyAgICAgICAgIFFDT01Q QVJFKGVuZ2luZTEubWVtb3J5TWFuYWdlci0+bV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFs dWUuc2l6ZSgpLCAxKTsKKyAgICAgICAgIFFDT01QQVJFKGVuZ2luZTIubWVtb3J5TWFuYWdlci0+ bV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuc2l6ZSgpLCAwKTsKKyAKKy0gICAgICAg IC8vIE1vdmVzIHRoZSBhZGRpdGlvbmFsIFdlYWtWYWx1ZSBmcm9tIG1fbXVsdGlwbHlXcmFwcGVk UU9iamVjdHMgdG8KKy0gICAgICAgIC8vIG1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVl LiBJdCdzIHN0aWxsIGFsaXZlIGFmdGVyIGFsbC4KKysgICAgICAgIC8vIFRoZSBhZGRpdGlvbmFs IFdlYWtWYWx1ZSBmcm9tIG1fbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMgaGFzbid0IGJlZW4gbW92 ZWQKKysgICAgICAgIC8vIHRvIG1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlIHlldC4g SXQncyBzdGlsbCBhbGl2ZSBhZnRlciBhbGwuCisgICAgICAgICBlbmdpbmUxLm1lbW9yeU1hbmFn ZXItPnJ1bkdDKCk7CistICAgICAgICBRQ09NUEFSRShlbmdpbmUxLm1lbW9yeU1hbmFnZXItPm1f cGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLnNpemUoKSwgMik7CisrICAgICAgICBRQ09N UEFSRShlbmdpbmUxLm1lbW9yeU1hbmFnZXItPm1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZh bHVlLnNpemUoKSwgMSk7CisgCisgICAgICAgICAvLyBlbmdpbmUyIGRvZXNuJ3Qgb3duIHRoZSBv YmplY3QgYXMgZW5naW5lMSB3YXMgdGhlIGZpcnN0IHRvIHdyYXAgaXQgYWJvdmUuCisgICAgICAg ICAvLyBUaGVyZWZvcmUsIG5vIGVmZmVjdCBoZXJlLgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRp dmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi9kYXRhL2FjdGl2ZUZvY3VzT25UYWJfaW5m aW5pdGVMb29wMy5xbWwgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRl bTIvZGF0YS9hY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcDMucW1sCituZXcgZmlsZSBtb2Rl IDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uODg5ZTQ4MGYzYgorLS0tIC9kZXYvbnVsbAorKysr IGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL2RhdGEvYWN0aXZl Rm9jdXNPblRhYl9pbmZpbml0ZUxvb3AzLnFtbAorQEAgLTAsMCArMSwxMyBAQAorK2ltcG9ydCBR dFF1aWNrIDIuNgorKworK0l0ZW0geworKyAgICB2aXNpYmxlOiB0cnVlCisrICAgIEl0ZW0gewor KyAgICAgICAgdmlzaWJsZTogZmFsc2UKKysgICAgICAgIEl0ZW0geworKyAgICAgICAgICAgIG9i amVjdE5hbWU6ICJoaWRkZW5DaGlsZCIKKysgICAgICAgICAgICBhY3RpdmVGb2N1c09uVGFiOiB0 cnVlCisrICAgICAgICAgICAgZm9jdXM6IHRydWUKKysgICAgICAgIH0KKysgICAgfQorK30KK2Rp ZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvdHN0 X3FxdWlja2l0ZW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0 ZW0yL3RzdF9xcXVpY2tpdGVtLmNwcAoraW5kZXggYzhmMjUxZGJlMS4uYzhlZjM2ZWU2OCAxMDA2 NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi90c3Rf cXF1aWNraXRlbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVp Y2tpdGVtMi90c3RfcXF1aWNraXRlbS5jcHAKK0BAIC02Nyw2ICs2Nyw3IEBAIHByaXZhdGUgc2xv dHM6CisgICAgIHZvaWQgYWN0aXZlRm9jdXNPblRhYjEwKCk7CisgICAgIHZvaWQgYWN0aXZlRm9j dXNPblRhYl9pbmZpbml0ZUxvb3BfZGF0YSgpOworICAgICB2b2lkIGFjdGl2ZUZvY3VzT25UYWJf aW5maW5pdGVMb29wKCk7CisrICAgIHZvaWQgYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3BD b250cm9scygpOworIAorICAgICB2b2lkIG5leHRJdGVtSW5Gb2N1c0NoYWluKCk7CisgICAgIHZv aWQgbmV4dEl0ZW1JbkZvY3VzQ2hhaW4yKCk7CitAQCAtMTA1Nyw2ICsxMDU4LDE3IEBAIHZvaWQg dHN0X1FRdWlja0l0ZW06OmFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wKCkKKyAgICAgUUNP TVBBUkUoaXRlbSwgd2luZG93LT5yb290T2JqZWN0KCkpOworIH0KKyAKKysKKyt2b2lkIHRzdF9R UXVpY2tJdGVtOjphY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcENvbnRyb2xzKCkKKyt7Cisr ICAgIGF1dG8gc291cmNlID0gdGVzdEZpbGVVcmwoImFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVM b29wMy5xbWwiKTsKKysgICAgUVNjb3BlZFBvaW50ZXI8UVF1aWNrVmlldz53aW5kb3cobmV3IFFR dWlja1ZpZXcoKSk7CisrICAgIHdpbmRvdy0+c2V0U291cmNlKHNvdXJjZSk7CisrICAgIHdpbmRv dy0+c2hvdygpOworKyAgICBRVkVSSUZZKHdpbmRvdy0+ZXJyb3JzKCkuaXNFbXB0eSgpKTsKKysg ICAgUVRlc3Q6OmtleUNsaWNrKHdpbmRvdy5nZXQoKSwgUXQ6OktleV9UYWIpOyAvLyBzaG91bGQg bm90IGhhbmcKKyt9CisrCisgdm9pZCB0c3RfUVF1aWNrSXRlbTo6bmV4dEl0ZW1JbkZvY3VzQ2hh aW4oKQorIHsKKyAgICAgaWYgKCFxdF90YWJfYWxsX3dpZGdldHMoKSkKK1N1Ym1vZHVsZSBxdGRv YyBjMGM3YmYwNy4uLjc5ZDZlZjY5OgorU3VibW9kdWxlIHF0aW1hZ2Vmb3JtYXRzIDJkY2YyODk5 Li5hYmU0NGMwZjoKK2RpZmYgLS1naXQgYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFn ZWZvcm1hdHMvaWNucy9xaWNuc2hhbmRsZXIuY3BwIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdp bnMvaW1hZ2Vmb3JtYXRzL2ljbnMvcWljbnNoYW5kbGVyLmNwcAoraW5kZXggZGRlNzgzYy4uMWJm OTA3NCAxMDA2NDQKKy0tLSBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0 cy9pY25zL3FpY25zaGFuZGxlci5jcHAKKysrKyBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5z L2ltYWdlZm9ybWF0cy9pY25zL3FpY25zaGFuZGxlci5jcHAKK0BAIC00NjIsOCArNDYyLDEyIEBA IHN0YXRpYyBib29sIHBhcnNlSWNvbkVudHJ5SW5mbyhJQ05TRW50cnkgJmljb24pCisgICAgIGlm IChpc0ljb25Db21wcmVzc2VkKGljb24pKQorICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgIC8v IEljb24gZGVwdGg6CistICAgIGlmICghZGVwdGguaXNFbXB0eSgpKQorLSAgICAgICAgaWNvbi5k ZXB0aCA9IElDTlNFbnRyeTo6RGVwdGgoZGVwdGgudG9VSW50KCkpOworKyAgICBpZiAoIWRlcHRo LmlzRW1wdHkoKSkgeworKyAgICAgICAgY29uc3QgdWludCBkZXB0aFVJbnQgPSBkZXB0aC50b1VJ bnQoKTsKKysgICAgICAgIGlmIChkZXB0aFVJbnQgPiAzMikKKysgICAgICAgICAgICByZXR1cm4g ZmFsc2U7CisrICAgICAgICBpY29uLmRlcHRoID0gSUNOU0VudHJ5OjpEZXB0aChkZXB0aFVJbnQp OworKyAgICB9CisgICAgIC8vIFRyeSBtb25vIGlmIGRlcHRoIG5vdCBmb3VuZAorICAgICBpZiAo aWNvbi5kZXB0aCA9PSBJQ05TRW50cnk6OkRlcHRoVW5rbm93bikKKyAgICAgICAgIGljb24uZGVw dGggPSBJQ05TRW50cnk6OkRlcHRoTW9ubzsKK0BAIC01MTUsNiArNTE5LDkgQEAgc3RhdGljIGJv b2wgcGFyc2VJY29uRW50cnlJbmZvKElDTlNFbnRyeSAmaWNvbikKKyAgICAgICAgIH0KKyAgICAg ICAgIGljb24uaGVpZ2h0ID0gaWNvbi53aWR0aDsKKyAgICAgfQorKyAgICAvLyBTYW5pdHkgY2hl Y2sKKysgICAgaWYgKGljb24ud2lkdGggPT0gMCB8fCBpY29uLndpZHRoID4gNDA5NikKKysgICAg ICAgIHJldHVybiBmYWxzZTsKKyAgICAgcmV0dXJuIHRydWU7CisgfQorIAorQEAgLTY4NSw3ICs2 OTIsNyBAQCBib29sIFFJQ05TSGFuZGxlcjo6Y2FuUmVhZCgpIGNvbnN0CisgYm9vbCBRSUNOU0hh bmRsZXI6OnJlYWQoUUltYWdlICpvdXRJbWFnZSkKKyB7CisgICAgIFFJbWFnZSBpbWc7CistICAg IGlmICghZW5zdXJlU2Nhbm5lZCgpKSB7CisrICAgIGlmICghZW5zdXJlU2Nhbm5lZCgpIHx8IG1f Y3VycmVudEljb25JbmRleCA+PSBtX2ljb25zLnNpemUoKSkgeworICAgICAgICAgcVdhcm5pbmco IlFJQ05TSGFuZGxlcjo6cmVhZCgpOiBUaGUgZGV2aWNlIHdhc24ndCBwYXJzZWQgcHJvcGVybHkh Iik7CisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KK0BAIC04OTIsNyArODk5LDcgQEAg Ym9vbCBRSUNOU0hhbmRsZXI6OnNjYW5EZXZpY2UoKQorICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKKyAKKyAgICAgICAgIGNvbnN0IHFpbnQ2NCBibG9ja0RhdGFPZmZzZXQgPSBkZXZpY2UoKS0+ cG9zKCk7CistICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxpZChibG9ja0hlYWRlcikpIHsK KysgICAgICAgIGlmICghaXNCbG9ja0hlYWRlclZhbGlkKGJsb2NrSGVhZGVyLCBJQ05TQmxvY2tI ZWFkZXJTaXplICsgZmlsZWxlbmd0aCAtIGJsb2NrRGF0YU9mZnNldCkpIHsKKyAgICAgICAgICAg ICBxV2FybmluZygiUUlDTlNIYW5kbGVyOjpzY2FuRGV2aWNlKCk6IEZhaWxlZCwgYmFkIGhlYWRl ciBhdCBwb3MgJXMuIE9TVHlwZSBcIiVzXCIsIGxlbmd0aCAldSIsCisgICAgICAgICAgICAgICAg ICAgICAgUUJ5dGVBcnJheTo6bnVtYmVyKGJsb2NrRGF0YU9mZnNldCkuY29uc3REYXRhKCksCisg ICAgICAgICAgICAgICAgICAgICAgbmFtZUZyb21PU1R5cGUoYmxvY2tIZWFkZXIub3N0eXBlKS5j b25zdERhdGEoKSwgYmxvY2tIZWFkZXIubGVuZ3RoKTsKK0BAIC05MjcsMTEgKzkzNCwxNCBAQCBi b29sIFFJQ05TSGFuZGxlcjo6c2NhbkRldmljZSgpCisgICAgICAgICBjYXNlIElDTlNCbG9ja0hl YWRlcjo6VHlwZU9kcnA6CisgICAgICAgICAgICAgLy8gSWNucyBjb250YWluZXIgc2VlbXMgdG8g aGF2ZSBhbiBlbWJlZGRlZCBpY29uIHZhcmlhbnQgY29udGFpbmVyCisgICAgICAgICAgICAgLy8g TGV0J3Mgc3RhcnQgYSBzY2FuIGZvciBlbnRyaWVzCistICAgICAgICAgICAgd2hpbGUgKGRldmlj ZSgpLT5wb3MoKSA8IG5leHRCbG9ja09mZnNldCkgeworKyAgICAgICAgICAgIHdoaWxlICghc3Ry ZWFtLmF0RW5kKCkgJiYgZGV2aWNlKCktPnBvcygpIDwgbmV4dEJsb2NrT2Zmc2V0KSB7CisgICAg ICAgICAgICAgICAgIElDTlNCbG9ja0hlYWRlciBpY29uOworICAgICAgICAgICAgICAgICBzdHJl YW0gPj4gaWNvbjsKKysgICAgICAgICAgICAgICAgaWYgKHN0cmVhbS5zdGF0dXMoKSAhPSBRRGF0 YVN0cmVhbTo6T2spCisrICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg ICAgICAgICAgIC8vIENoZWNrIGZvciBpbmNvcnJlY3QgdmFyaWFudCBlbnRyeSBoZWFkZXIgYW5k IHN0b3Agc2NhbgorLSAgICAgICAgICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxpZChpY29u LCBibG9ja0RhdGFMZW5ndGgpKQorKyAgICAgICAgICAgICAgICBxdWludDY0IHJlbWFpbmluZyA9 IGJsb2NrRGF0YUxlbmd0aCAtIChkZXZpY2UoKS0+cG9zKCkgLSBibG9ja0RhdGFPZmZzZXQpOwor KyAgICAgICAgICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxpZChpY29uLCBJQ05TQmxvY2tI ZWFkZXJTaXplICsgcmVtYWluaW5nKSkKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgICAgICAgICBpZiAoIWFkZEVudHJ5KGljb24sIGRldmljZSgpLT5wb3MoKSwgYmxvY2tI ZWFkZXIub3N0eXBlKSkKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKK0BAIC0x MDAzLDcgKzEwMTMsNyBAQCBib29sIFFJQ05TSGFuZGxlcjo6c2NhbkRldmljZSgpCisgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgcmV0dXJuIHRydWU7CisrICAg IHJldHVybiAobV9pY29ucy5zaXplKCkgPiAwKTsKKyB9CisgCisgY29uc3QgSUNOU0VudHJ5ICZR SUNOU0hhbmRsZXI6OmdldEljb25NYXNrKGNvbnN0IElDTlNFbnRyeSAmaWNvbikgY29uc3QKK2Rp ZmYgLS1naXQgYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvanAyL3Fq cDJoYW5kbGVyLmNwcCBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9q cDIvcWpwMmhhbmRsZXIuY3BwCitpbmRleCA1MDgyMDIzLi5jYjM0Mzc0IDEwMDY0NAorLS0tIGEv cXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2pwMi9xanAyaGFuZGxlci5j cHAKKysrKyBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9qcDIvcWpw MmhhbmRsZXIuY3BwCitAQCAtNDMsNiArNDMsNyBAQAorICNpbmNsdWRlICJxaW1hZ2UuaCIKKyAj aW5jbHVkZSAicXZhcmlhbnQuaCIKKyAjaW5jbHVkZSAicWNvbG9yLmgiCisrI2luY2x1ZGUgInFp bWFnZXJlYWRlci5oIgorIAorICNpbmNsdWRlIDxqYXNwZXIvamFzcGVyLmg+CisgI2luY2x1ZGUg PG1hdGguaD4gLy8gZm9yIHBvdworQEAgLTMzMywxNiArMzM0LDQ2IEBAIHByaXZhdGU6CisgSnBl ZzIwMDBKYXNwZXJSZWFkZXI6OkpwZWcyMDAwSmFzcGVyUmVhZGVyKFFJT0RldmljZSAqaW9kLCBT dWJGb3JtYXQgZm9ybWF0KQorICAgICA6IGphc3Blck9rKHRydWUpLCBpb0RldmljZShpb2QpLCBm b3JtYXQoZm9ybWF0KSwgaGFzQWxwaGEoZmFsc2UpCisgeworKyNpZiBKQVNfVkVSU0lPTl9NQUpP UiA8IDMKKyAgICAgaWYgKGphc19pbml0KCkpIHsKKyAgICAgICAgIGphc3Blck9rID0gZmFsc2U7 CisgICAgICAgICBxRGVidWcoIkphc3BlciBMaWJyYXJ5IGluaXRpYWxpemF0aW9uIGZhaWxlZCIp OworICAgICB9CisrI2Vsc2UKKysgICAgamFzX2NvbmZfY2xlYXIoKTsKKysjaWYgUVRfVkVSU0lP TiA+PSBRVF9WRVJTSU9OX0NIRUNLKDYsIDAsIDApCisrICAgIGphc19jb25mX3NldF9tYXhfbWVt X3VzYWdlKFFJbWFnZVJlYWRlcjo6YWxsb2NhdGlvbkxpbWl0KCkgKiAxMDI0ICogMTAyNCk7Cisr I2Vsc2UKKysgICAgLy8gMTI4TUIgc2VlbXMgdG8gYmUgZW5vdWdoLgorKyAgICBqYXNfY29uZl9z ZXRfbWF4X21lbV91c2FnZSgxMjggKiAxMDI0ICogMTAyNCk7CisrI2VuZGlmCisrICAgIGlmIChq YXNfaW5pdF9saWJyYXJ5KCkpIHsKKysgICAgICAgIGphc3Blck9rID0gZmFsc2U7CisrICAgICAg ICBxRGVidWcoIkphc3BlciBsaWJyYXJ5IGluaXRpYWxpemF0aW9uIGZhaWxlZCIpOworKyAgICB9 CisrICAgIGlmIChqYXNfaW5pdF90aHJlYWQoKSkgeworKyAgICAgICAgamFzX2NsZWFudXBfbGli cmFyeSgpOworKyAgICAgICAgamFzcGVyT2sgPSBmYWxzZTsKKysgICAgICAgIHFEZWJ1ZygiSmFz cGVyIHRocmVhZCBpbml0aWFsaXphdGlvbiBmYWlsZWQiKTsKKysgICAgfQorKyNlbmRpZgorIH0K KyAKKyBKcGVnMjAwMEphc3BlclJlYWRlcjo6fkpwZWcyMDAwSmFzcGVyUmVhZGVyKCkKKyB7Cisr I2lmIEpBU19WRVJTSU9OX01BSk9SIDwgMworICAgICBpZiAoamFzcGVyT2spCisgICAgICAgICBq YXNfY2xlYW51cCgpOworKyNlbHNlCisrICAgIGlmIChqYXNwZXJPaykgeworKyAgICAgICAgaWYg KGphc19jbGVhbnVwX3RocmVhZCgpKSB7CisrICAgICAgICAgICAgcURlYnVnKCJKYXNwZXIgdGhy ZWFkIGNsZWFudXAgZmFpbGVkIik7CisrICAgICAgICB9CisrICAgICAgICBpZiAoamFzX2NsZWFu dXBfbGlicmFyeSgpKSB7CisrICAgICAgICAgICAgcURlYnVnKCJKYXNwZXIgbGlicmFyeSBjbGVh bnVwIGZhaWxlZCIpOworKyAgICAgICAgfQorKyAgICB9CisrI2VuZGlmCisgfQorIAorIC8qISBc aW50ZXJuYWwKK0BAIC04NTcsNyArODg4LDcgQEAgYm9vbCBKcGVnMjAwMEphc3BlclJlYWRlcjo6 d3JpdGUoY29uc3QgUUltYWdlICZpbWFnZSwgaW50IHF1YWxpdHkpCisgICAgIH0KKyAKKyAgICAg Ly8gT3BlbiBhbiBlbXB0eSBqYXNwZXIgc3RyZWFtIHRoYXQgZ3Jvd3MgYXV0b21hdGljYWxseQor LSAgICBqYXNfc3RyZWFtX3QgKiBtZW1vcnlfc3RyZWFtID0gamFzX3N0cmVhbV9tZW1vcGVuKDAs IC0xKTsKKysgICAgamFzX3N0cmVhbV90ICogbWVtb3J5X3N0cmVhbSA9IGphc19zdHJlYW1fbWVt b3BlbigwLCAwKTsKKyAKKyAgICAgLy8gSmFzcGVyIHdhbnRzIGEgbm9uLWNvbnN0IHN0cmluZy4K KyAgICAgY2hhciAqc3RyID0gcXN0cmR1cChqYXNwZXJGb3JtYXRTdHJpbmcudG9MYXRpbjEoKS5j b25zdERhdGEoKSk7CitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1h Z2Vmb3JtYXRzL3RpZmYvcXRpZmZoYW5kbGVyLmNwcCBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVn aW5zL2ltYWdlZm9ybWF0cy90aWZmL3F0aWZmaGFuZGxlci5jcHAKK2luZGV4IDEzODY3NTAuLmFj ODk1NmMgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1h dHMvdGlmZi9xdGlmZmhhbmRsZXIuY3BwCisrKysgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lu cy9pbWFnZWZvcm1hdHMvdGlmZi9xdGlmZmhhbmRsZXIuY3BwCitAQCAtMzYxLDYgKzM2MSw4IEBA IGJvb2wgUVRpZmZIYW5kbGVyOjpyZWFkKFFJbWFnZSAqaW1hZ2UpCisgICAgIH0KKyAKKyAgICAg VElGRiAqY29uc3QgdGlmZiA9IGQtPnRpZmY7CisrICAgIGlmIChUSUZGSXNUaWxlZCh0aWZmKSAm JiBUSUZGVGlsZVNpemU2NCh0aWZmKSA+IHVpbnQ2NF90KGltYWdlLT5zaXplSW5CeXRlcygpKSkg Ly8gQ29ycnVwdCBpbWFnZQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICBjb25zdCBxdWlu dDMyIHdpZHRoID0gZC0+c2l6ZS53aWR0aCgpOworICAgICBjb25zdCBxdWludDMyIGhlaWdodCA9 IGQtPnNpemUuaGVpZ2h0KCk7CisgCitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZvcm1hdHMvc3JjL3Bs dWdpbnMvaW1hZ2Vmb3JtYXRzL3dlYnAvcXdlYnBoYW5kbGVyLmNwcCBiL3F0aW1hZ2Vmb3JtYXRz L3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy93ZWJwL3F3ZWJwaGFuZGxlci5jcHAKK2luZGV4IDgy ZDM4Y2IuLmQwMmViMDUgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9p bWFnZWZvcm1hdHMvd2VicC9xd2VicGhhbmRsZXIuY3BwCisrKysgYi9xdGltYWdlZm9ybWF0cy9z cmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvd2VicC9xd2VicGhhbmRsZXIuY3BwCitAQCAtNDUsNiAr NDUsNyBAQAorICNpbmNsdWRlIDxxZGVidWcuaD4KKyAjaW5jbHVkZSA8cXBhaW50ZXIuaD4KKyAj aW5jbHVkZSA8cXZhcmlhbnQuaD4KKysjaW5jbHVkZSA8UXRFbmRpYW4+CisgCisgc3RhdGljIGNv bnN0IGludCByaWZmSGVhZGVyU2l6ZSA9IDEyOyAvLyBSSUZGX0hFQURFUl9TSVpFIGZyb20gd2Vi cC9mb3JtYXRfY29uc3RhbnRzLmgKKyAKK0BAIC0xMDIsMjEgKzEwMywyMyBAQCBib29sIFFXZWJw SGFuZGxlcjo6ZW5zdXJlU2Nhbm5lZCgpIGNvbnN0CisgCisgICAgIG1fc2NhblN0YXRlID0gU2Nh bkVycm9yOworIAorLSAgICBpZiAoZGV2aWNlKCktPmlzU2VxdWVudGlhbCgpKSB7CistICAgICAg ICBxV2FybmluZygpIDw8ICJTZXF1ZW50aWFsIGRldmljZXMgYXJlIG5vdCBzdXBwb3J0ZWQiOwor KyAgICBRV2VicEhhbmRsZXIgKnRoYXQgPSBjb25zdF9jYXN0PFFXZWJwSGFuZGxlciAqPih0aGlz KTsKKysgICAgY29uc3QgaW50IGhlYWRlckJ5dGVzTmVlZGVkID0gc2l6ZW9mKFdlYlBCaXRzdHJl YW1GZWF0dXJlcyk7CisrICAgIFFCeXRlQXJyYXkgaGVhZGVyID0gZGV2aWNlKCktPnBlZWsoaGVh ZGVyQnl0ZXNOZWVkZWQpOworKyAgICBpZiAoaGVhZGVyLnNpemUoKSA8IGhlYWRlckJ5dGVzTmVl ZGVkKQorICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICB9CisgCistICAgIHFpbnQ2NCBvbGRQ b3MgPSBkZXZpY2UoKS0+cG9zKCk7CistICAgIGRldmljZSgpLT5zZWVrKDApOworLQorLSAgICBR V2VicEhhbmRsZXIgKnRoYXQgPSBjb25zdF9jYXN0PFFXZWJwSGFuZGxlciAqPih0aGlzKTsKKy0g ICAgUUJ5dGVBcnJheSBoZWFkZXIgPSBkZXZpY2UoKS0+cGVlayhzaXplb2YoV2ViUEJpdHN0cmVh bUZlYXR1cmVzKSk7CisrICAgIC8vIFdlIGRvIG5vIHJhbmRvbSBhY2Nlc3MgZHVyaW5nIGRlY29k aW5nLCBqdXN0IGEgcmVhZEFsbCgpIG9mIHRoZSB3aG9sZSBpbWFnZSBmaWxlLiBTbyBpZgorKyAg ICAvLyBpZiBpdCBpcyBhbGwgYXZhaWxhYmxlIGFscmVhZHksIHdlIGNhbiBhY2NlcHQgYSBzZXF1 ZW50aWFsIGRldmljZS4gVGhlIHJpZmYgaGVhZGVyIGNvbnRhaW5zCisrICAgIC8vIHRoZSBmaWxl IHNpemUgbWludXMgOCBieXRlcyBoZWFkZXIKKysgICAgcWludDY0IGJ5dGVTaXplID0gcUZyb21M aXR0bGVFbmRpYW48cXVpbnQzMj4oaGVhZGVyLmNvbnN0RGF0YSgpICsgNCk7CisrICAgIGlmIChk ZXZpY2UoKS0+aXNTZXF1ZW50aWFsKCkgJiYgZGV2aWNlKCktPmJ5dGVzQXZhaWxhYmxlKCkgPCBi eXRlU2l6ZSArIDgpIHsKKysgICAgICAgIHFXYXJuaW5nKCkgPDwgIlFXZWJwSGFuZGxlcjogSW5z dWZmaWNpZW50IGRhdGEgYXZhaWxhYmxlIGluIHNlcXVlbnRpYWwgZGV2aWNlIjsKKysgICAgICAg IHJldHVybiBmYWxzZTsKKysgICAgfQorICAgICBpZiAoV2ViUEdldEZlYXR1cmVzKChjb25zdCB1 aW50OF90KiloZWFkZXIuY29uc3REYXRhKCksIGhlYWRlci5zaXplKCksICYodGhhdC0+bV9mZWF0 dXJlcykpID09IFZQOF9TVEFUVVNfT0spIHsKKyAgICAgICAgIGlmIChtX2ZlYXR1cmVzLmhhc19h bmltYXRpb24pIHsKKyAgICAgICAgICAgICAvLyBGb3IgYW5pbWF0aW9uLCB3ZSBoYXZlIHRvIHJl YWQgYW5kIHNjYW4gd2hvbGUgZmlsZSB0byBkZXRlcm1pbmUgbG9vcCBjb3VudCBhbmQgaW1hZ2Vz IGNvdW50CistICAgICAgICAgICAgZGV2aWNlKCktPnNlZWsob2xkUG9zKTsKKy0KKyAgICAgICAg ICAgICBpZiAodGhhdC0+ZW5zdXJlRGVtdXhlcigpKSB7CisgICAgICAgICAgICAgICAgIHRoYXQt Pm1fbG9vcCA9IFdlYlBEZW11eEdldEkobV9kZW11eGVyLCBXRUJQX0ZGX0xPT1BfQ09VTlQpOwor ICAgICAgICAgICAgICAgICB0aGF0LT5tX2ZyYW1lQ291bnQgPSBXZWJQRGVtdXhHZXRJKG1fZGVt dXhlciwgV0VCUF9GRl9GUkFNRV9DT1VOVCk7CitAQCAtMTI2LDE3ICsxMjksMTMgQEAgYm9vbCBR V2VicEhhbmRsZXI6OmVuc3VyZVNjYW5uZWQoKSBjb25zdAorICAgICAgICAgICAgICAgICBpZiAo dGhhdC0+bV9mZWF0dXJlcy5oYXNfYWxwaGEpCisgICAgICAgICAgICAgICAgICAgICB0aGF0LT5t X2NvbXBvc2l0ZWQtPmZpbGwoUXQ6OnRyYW5zcGFyZW50KTsKKyAKKy0gICAgICAgICAgICAgICAg Ly8gV2UgZG8gbm90IHJlc2V0IGRldmljZSBwb3NpdGlvbiBzaW5jZSB3ZSBoYXZlIHJlYWQgaW4g YWxsIGRhdGEKKyAgICAgICAgICAgICAgICAgbV9zY2FuU3RhdGUgPSBTY2FuU3VjY2VzczsKKy0g ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgfQorICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICBtX3NjYW5TdGF0ZSA9IFNjYW5TdWNjZXNzOworICAgICAgICAg fQorICAgICB9CisgCistICAgIGRldmljZSgpLT5zZWVrKG9sZFBvcyk7CistCisgICAgIHJldHVy biBtX3NjYW5TdGF0ZSA9PSBTY2FuU3VjY2VzczsKKyB9CisgCitAQCAtMTU5LDcgKzE1OCw3IEBA IGJvb2wgUVdlYnBIYW5kbGVyOjplbnN1cmVEZW11eGVyKCkKKyAKKyBib29sIFFXZWJwSGFuZGxl cjo6cmVhZChRSW1hZ2UgKmltYWdlKQorIHsKKy0gICAgaWYgKCFlbnN1cmVTY2FubmVkKCkgfHwg ZGV2aWNlKCktPmlzU2VxdWVudGlhbCgpIHx8ICFlbnN1cmVEZW11eGVyKCkpCisrICAgIGlmICgh ZW5zdXJlU2Nhbm5lZCgpIHx8ICFlbnN1cmVEZW11eGVyKCkpCisgICAgICAgICByZXR1cm4gZmFs c2U7CisgCisgICAgIFFSZWN0IHByZXZGcmFtZVJlY3Q7CitTdWJtb2R1bGUgcXRsb2NhdGlvbiA5 OGE1YzUxMS4uZjk5MWUyOGM6CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24v Y29uZmlndXJlLmpzb24gYi9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9jb25maWd1cmUuanNvbgor aW5kZXggNmQwMWE5YTMuLmQxZTYyM2ExIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvbG9j YXRpb24vY29uZmlndXJlLmpzb24KKysrKyBiL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2NvbmZp Z3VyZS5qc29uCitAQCAtOSw3ICs5LDcgQEAKKyAgICAgICAgICAgICAibGFiZWwiOiAiUXQubGFi cy5sb2NhdGlvbiBleHBlcmltZW50YWwgUU1MIHBsdWdpbiIsCisgICAgICAgICAgICAgInB1cnBv c2UiOiAiUHJvdmlkZXMgZXhwZXJpbWVudGFsIFF0TG9jYXRpb24gUU1MIHR5cGVzIiwKKyAgICAg ICAgICAgICAic2VjdGlvbiI6ICJMb2NhdGlvbiIsCistICAgICAgICAgICAgImNvbmRpdGlvbiI6 ICJjb25maWcub3BlbmdsIiwKKysgICAgICAgICAgICAiY29uZGl0aW9uIjogImZlYXR1cmVzLm9w ZW5nbCIsCisgICAgICAgICAgICAgIm91dHB1dCI6IFsgInByaXZhdGVGZWF0dXJlIiBdCisgICAg ICAgICB9LAorICAgICAgICAgImdlb3NlcnZpY2VzX29zbSI6IHsKK2RpZmYgLS1naXQgYS9xdGxv Y2F0aW9uL3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFwb2JqZWN0cXNnc3VwcG9ydC5jcHAg Yi9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFwb2JqZWN0cXNnc3VwcG9y dC5jcHAKK2luZGV4IGE5Nzg1NzNkLi4xMWUxNDY2ZiAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24v c3JjL2xvY2F0aW9uL2xhYnMvcXNnL3FnZW9tYXBvYmplY3Rxc2dzdXBwb3J0LmNwcAorKysrIGIv cXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vbGFicy9xc2cvcWdlb21hcG9iamVjdHFzZ3N1cHBvcnQu Y3BwCitAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgUUdlb01hcE9iamVjdFFTR1N1cHBvcnQ6OnVw ZGF0ZU1hcE9iamVjdHMoUVNHTm9kZSAqcm9vdCwgUVF1aWNrV2luZG93ICp3aW5kCisgICAgIGlm ICghcm9vdCkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgaWYgKG1fbWFwT2JqZWN0c1Jvb3RO b2RlICYmIG1fbWFwT2JqZWN0c1Jvb3ROb2RlLT5wYXJlbnQoKSkKKysgICAgaWYgKG1fbWFwT2Jq ZWN0c1Jvb3ROb2RlICYmICFtX21hcE9iamVjdHNSb290Tm9kZS0+cGFyZW50KCkpCisgICAgICAg ICByb290LT5hcHBlbmRDaGlsZE5vZGUobV9tYXBPYmplY3RzUm9vdE5vZGUuZ2V0KCkpOworIAor ICAgICBpZiAoIW1fbWFwT2JqZWN0c1Jvb3ROb2RlKSB7CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlv bi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb2NvZGluZ21hbmFnZXJlbmdpbmVfZXNy aS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvY29kaW5n bWFuYWdlcmVuZ2luZV9lc3JpLmNwcAoraW5kZXggNWE0MDQ2N2UuLmQxMjNjNmE4IDEwMDY0NAor LS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb2NvZGluZ21h bmFnZXJlbmdpbmVfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2Vy dmljZXMvZXNyaS9nZW9jb2RpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitAQCAtNTksOCArNTks MTAgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgc3RhdGljIGNvbnN0IFFTdHJpbmcga1ByZWZpeEVz cmkoUVN0cmluZ0xpdGVyYWwoImVzcmkuIikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtQYXJh bVVzZXJBZ2VudChrUHJlZml4RXNyaSArIFFTdHJpbmdMaXRlcmFsKCJ1c2VyYWdlbnQiKSk7Cisg Cistc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybEdlb2NvZGUoUVN0cmluZ0xpdGVyYWwoImh0dHA6 Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNl cnZlci9maW5kQWRkcmVzc0NhbmRpZGF0ZXMiKSk7Cistc3RhdGljIGNvbnN0IFFTdHJpbmcga1Vy bFJldmVyc2VHZW9jb2RlKFFTdHJpbmdMaXRlcmFsKCJodHRwOi8vZ2VvY29kZS5hcmNnaXMuY29t L2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXIvcmV2ZXJzZUdlb2NvZGUi KSk7Cisrc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybEdlb2NvZGUoUVN0cmluZ0xpdGVyYWwoImh0 dHBzOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzLyIKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV29ybGQvR2VvY29kZVNl cnZlci9maW5kQWRkcmVzc0NhbmRpZGF0ZXMiKSk7Cisrc3RhdGljIGNvbnN0IFFTdHJpbmcga1Vy bFJldmVyc2VHZW9jb2RlKFFTdHJpbmdMaXRlcmFsKAorKyAgICAgICAgImh0dHBzOi8vZ2VvY29k ZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXIvcmV2 ZXJzZUdlb2NvZGUiKSk7CisgCisgc3RhdGljIFFTdHJpbmcgYWRkcmVzc1RvUXVlcnkoY29uc3Qg UUdlb0FkZHJlc3MgJmFkZHJlc3MpCisgeworZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3Bs dWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZWpzb25wYXJzZXJfZXNyaS5jcHAgYi9xdGxv Y2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVqc29ucGFyc2VyX2Vz cmkuY3BwCitpbmRleCAxNzQ5MmQ5NC4uOTZjMTJiMWIgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9u L3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVqc29ucGFyc2VyX2VzcmkuY3Bw CisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVq c29ucGFyc2VyX2VzcmkuY3BwCitAQCAtNDYsNyArNDYsOCBAQAorIAorIFFUX0JFR0lOX05BTUVT UEFDRQorIAorLS8vIEpTT04gcmVmZXJlbmNlOiBodHRwOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20v ZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2aWNlX3dpdGhfc3luY2hyb25vdXNf ZXhlY3V0aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKysvLyBKU09OIHJlZmVyZW5jZToKKysvLyBo dHRwczovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpLyMvUm91 dGVfc2VydmljZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAwMDAwMzYwMDAwMDAv CisgCisgc3RhdGljIGNvbnN0IFFTdHJpbmcga0Vycm9yTWVzc2FnZShRU3RyaW5nTGl0ZXJhbCgi RXJyb3IgJTE6ICUyLiIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrRXJyb3JKc29uKFFTdHJp bmdMaXRlcmFsKCJFcnJvcjogaW52YWxpZGUgSlNPTiBkb2N1bWVudC4iKSk7CitkaWZmIC0tZ2l0 IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlcmVwbHlf ZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91 dGVyZXBseV9lc3JpLmNwcAoraW5kZXggOGNhZGZiMjkuLjkyYjZiYjEzIDEwMDY0NAorLS0tIGEv cXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlcmVwbHlfZXNy aS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9y b3V0ZXJlcGx5X2VzcmkuY3BwCitAQCAtNDQsNyArNDQsOCBAQAorIAorIFFUX0JFR0lOX05BTUVT UEFDRQorIAorLS8vIEpTT04gcmVmZXJlbmNlOiBodHRwOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20v ZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2aWNlX3dpdGhfc3luY2hyb25vdXNf ZXhlY3V0aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKysvLyBKU09OIHJlZmVyZW5jZToKKysvLyBo dHRwczovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpLyMvUm91 dGVfc2VydmljZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAwMDAwMzYwMDAwMDAv CisgCisgR2VvUm91dGVSZXBseUVzcmk6Okdlb1JvdXRlUmVwbHlFc3JpKFFOZXR3b3JrUmVwbHkg KnJlcGx5LCBjb25zdCBRR2VvUm91dGVSZXF1ZXN0ICZyZXF1ZXN0LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRT2JqZWN0ICpwYXJlbnQpIDoKK2RpZmYgLS1naXQgYS9x dGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGluZ21hbmFnZXJl bmdpbmVfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2Vzcmkv Z2Vvcm91dGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDBlNmJjMmM3Li5lZDYxM2Y0 YiAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9n ZW9yb3V0aW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1 Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitA QCAtNDgsNyArNDgsOCBAQCBzdGF0aWMgY29uc3QgUVN0cmluZyBrUHJlZml4RXNyaShRU3RyaW5n TGl0ZXJhbCgiZXNyaS4iKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga1BhcmFtVXNlckFnZW50 KGtQcmVmaXhFc3JpICsgUVN0cmluZ0xpdGVyYWwoInVzZXJhZ2VudCIpKTsKKyBzdGF0aWMgY29u c3QgUVN0cmluZyBrUGFyYW1Ub2tlbihrUHJlZml4RXNyaSArIFFTdHJpbmdMaXRlcmFsKCJ0b2tl biIpKTsKKyAKKy1zdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsUm91dGluZyhRU3RyaW5nTGl0ZXJh bCgiaHR0cDovL3JvdXRlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvUm91 dGUvTkFTZXJ2ZXIvUm91dGVfV29ybGQvc29sdmUiKSk7Cisrc3RhdGljIGNvbnN0IFFTdHJpbmcg a1VybFJvdXRpbmcoUVN0cmluZ0xpdGVyYWwoCisrICAgICAgICAiaHR0cHM6Ly9yb3V0ZS5hcmNn aXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL1JvdXRlL05BU2VydmVyL1JvdXRlX1dv cmxkL3NvbHZlIikpOworIAorIEdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaTo6R2VvUm91dGlu Z01hbmFnZXJFbmdpbmVFc3JpKGNvbnN0IFFWYXJpYW50TWFwICZwYXJhbWV0ZXJzLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHZW9T ZXJ2aWNlUHJvdmlkZXI6OkVycm9yICplcnJvciwKK0BAIC03MCw3ICs3MSw4IEBAIEdlb1JvdXRp bmdNYW5hZ2VyRW5naW5lRXNyaTo6fkdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaSgpCisgewor IH0KKyAKKy0vLyBSRVNUIHJlZmVyZW5jZTogaHR0cDovL3Jlc291cmNlcy5hcmNnaXMuY29tL2Vu L2hlbHAvYXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIzMDAwMDAwMzYwMDAwMDAKKysv LyBSRVNUIHJlZmVyZW5jZToKKysvLyBodHRwczovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hl bHAvYXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIzMDAwMDAwMzYwMDAwMDAKKyAKKyBR R2VvUm91dGVSZXBseSAqR2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpOjpjYWxjdWxhdGVSb3V0 ZShjb25zdCBRR2VvUm91dGVSZXF1ZXN0ICZyZXF1ZXN0KQorIHsKK0BAIC0xMjUsNyArMTI3LDcg QEAgdm9pZCBHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6OnJlcGx5RXJyb3IoUUdlb1JvdXRl UmVwbHk6OkVycm9yIGVycm9yQ29kZSwgY28KKyBRU3RyaW5nIEdlb1JvdXRpbmdNYW5hZ2VyRW5n aW5lRXNyaTo6cHJlZmVyZWREaXJlY3Rpb25MYW5nYWdlKCkKKyB7CisgICAgIC8vIGxpc3Qgb2Yg c3VwcG9ydGVkIGxhbmdhZ2VzIGlzIGRlZmluZWQgaW46CistICAgIC8vIGh0dHA6Ly9yZXNvdXJj ZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS9pbmRleC5odG1sIy8vMDJyMzAw MDAwMDM2MDAwMDAwCisrICAgIC8vIGh0dHBzOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVs cC9hcmNnaXMtcmVzdC1hcGkvaW5kZXguaHRtbCMvLzAycjMwMDAwMDAzNjAwMDAwMAorICAgICBj b25zdCBRU3RyaW5nTGlzdCBzdXBwb3J0ZWRMYW5ndWFnZXMgPSB7CisgICAgICAgICAiYXIiLCAv LyBHZW5lcmF0ZSBkaXJlY3Rpb25zIGluIEFyYWJpYworICAgICAgICAgImNzIiwgLy8gR2VuZXJh dGUgZGlyZWN0aW9ucyBpbiBDemVjaAorZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdp bnMvZ2Vvc2VydmljZXMvZXNyaS9nZW90aWxlZG1hcHBpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3Bw IGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3RpbGVkbWFwcGlu Z21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDVkMTU4MzVkLi4yNDE0OGY5NSAxMDA2NDQK Ky0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW90aWxlZG1h cHBpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5z L2dlb3NlcnZpY2VzL2VzcmkvZ2VvdGlsZWRtYXBwaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAor QEAgLTIzMCw3ICsyMzAsOCBAQCBRR2VvTWFwICpHZW9UaWxlZE1hcHBpbmdNYW5hZ2VyRW5naW5l RXNyaTo6Y3JlYXRlTWFwKCkKKyAvLyAke3l9ID0gWQorIC8vICR7dG9rZW59ID0gVG9rZW4KKyAK Ky0vLyB0ZW1wbGF0ZSA9ICdodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMv cmVzdC9zZXJ2aWNlcy9Xb3JsZF9Ub3BvX01hcC9NYXBTZXJ2ZXIvdGlsZS97e3p9fS97e3l9fS97 e3h9fS5wbmcnCisrLy8gdGVtcGxhdGUgPQorKy8vICdodHRwczovL3NlcnZpY2VzLmFyY2dpc29u bGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVG9wb19NYXAvTWFwU2VydmVyL3Rp bGUve3t6fX0ve3t5fX0ve3t4fX0ucG5nJworIAorIGJvb2wgR2VvVGlsZWRNYXBwaW5nTWFuYWdl ckVuZ2luZUVzcmk6OmluaXRpYWxpemVNYXBTb3VyY2VzKFFHZW9TZXJ2aWNlUHJvdmlkZXI6OkVy cm9yICplcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRU3RyaW5nICplcnJvclN0cmluZywKK2RpZmYgLS1naXQgYS9xdGxv Y2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvbWFwcy5qc29uIGIvcXRsb2NhdGlv bi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL21hcHMuanNvbgoraW5kZXggODE2N2FlN2Qu Ljg2MmUwODdkIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNl cy9lc3JpL21hcHMuanNvbgorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNl cy9lc3JpL21hcHMuanNvbgorQEAgLTYsOCArNiw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0 aW9uIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgU3RyZWV0IE1hcCIsCisgICAgICAgICAgICAgIm1v YmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAg InVybCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2 aWNlcy9Xb3JsZF9TdHJlZXRfTWFwL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdo dFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0u aHRtbD9pZD0zYjkzMzM3OTgzZTk0MzZmOGRiOTUwZTM4YTg2MjlhZic+RXNyaTwvYT4gY29udHJp YnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxp bmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1N0cmVldF9NYXAvTWFwU2VydmVyIiwK KysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93 d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0zYjkzMzM3OTgzZTk0MzZmOGRiOTUwZTM4 YTg2MjlhZic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAg IHsKK0BAIC0xNiw4ICsxNiw4IEBACisgICAgICAgICAgICAgIiI6ICJBcmNHSVMgT25saW5lIFdv cmxkIEltYWdlcnkiLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAgICAg ICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNn aXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX0ltYWdlcnkvTWFwU2VydmVy IiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDov L3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTEwZGYyMjc5Zjk2ODRlNGE5ZjZhN2Yw OGZlYmFjMmE5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJo dHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxk X0ltYWdlcnkvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29w eTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0xMGRm MjI3OWY5Njg0ZTRhOWY2YTdmMDhmZWJhYzJhOSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAg ICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC0yNiw4ICsyNiw4IEBACisgICAgICAgICAgICAg ImRlc2NyaXB0aW9uIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgVGVycmFpbiBCYXNlIiwKKyAgICAg ICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCist ICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lT L3Jlc3Qvc2VydmljZXMvV29ybGRfVGVycmFpbl9CYXNlL01hcFNlcnZlciIsCistICAgICAgICAg ICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNv bS9ob21lL2l0ZW0uaHRtbD9pZD1jNjFhZDhhYjAxN2Q0OWUxYTgyZjU4MGVlMTI5ODkzMSc+RXNy aTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIu YXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9UZXJyYWluX0Jhc2Uv TWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJl Zj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1jNjFhZDhhYjAxN2Q0 OWUxYTgyZjU4MGVlMTI5ODkzMSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwK KyAKKyAgICAgICAgIHsKK0BAIC0zNiw4ICszNiw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0 aW9uIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgVG9wb2dyYXBoeSIsCisgICAgICAgICAgICAgIm1v YmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAg InVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2Vydmlj ZXMvV29ybGRfVG9wb19NYXAvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4 dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1s P2lkPTMwZTVmZTMxNDljMzRkZjFiYTkyMmU2ZjViYmY4MDhmJz5Fc3JpPC9hPiBjb250cmlidXRv cnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29t L0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RvcG9fTWFwL01hcFNlcnZlciIsCisrICAgICAg ICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dp cy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MzBlNWZlMzE0OWMzNGRmMWJhOTIyZTZmNWJiZjgwOGYn PkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAt NDYsOCArNDYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIG1hcCBwcmVz ZW50cyBsYW5kIGNvdmVyIGFuZCBkZXRhaWxlZCB0b3BvZ3JhcGhpYyBtYXBzIGZvciB0aGUgVW5p dGVkIFN0YXRlcy4iLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAgICAg ICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFy Y2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvVVNBX1RvcG9fTWFwcy9NYXBTZXJ2 ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRw Oi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9OTljZDVmYmQ5ODkzNDAyODgwMmI0 Zjc5N2M0YjE3MzInPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjog Imh0dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9V U0FfVG9wb19NYXBzL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAi JmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9 OTljZDVmYmQ5ODkzNDAyODgwMmI0Zjc5N2M0YjE3MzInPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIK KyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtNTYsOCArNTYsOCBAQAorICAgICAgICAg ICAgICJkZXNjcmlwdGlvbiI6ICJOYXRpb25hbCBHZW9ncmFwaGljIFdvcmxkIE1hcCIsCisgICAg ICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAor LSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJj R0lTL3Jlc3Qvc2VydmljZXMvTmF0R2VvX1dvcmxkX01hcC9NYXBTZXJ2ZXIiLAorLSAgICAgICAg ICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5j b20vaG9tZS9pdGVtLmh0bWw/aWQ9YjliMWI0MjIxOTg5NDRmYmJkNTI1MGIzMjQxNjkxYjYnPkVz cmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2Vydmlj ZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9OYXRHZW9fV29ybGRfTWFw L01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhy ZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YjliMWI0MjIxOTg5 NDRmYmJkNTI1MGIzMjQxNjkxYjYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0s CisgCisgICAgICAgICB7CitAQCAtNjYsOCArNjYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlw dGlvbiI6ICJUaGVtYXRpYyBjb250ZW50IHByb3ZpZGluZyBhIG5ldXRyYWwgYmFja2dyb3VuZCB3 aXRoIG1pbmltYWwgY29sb3JzIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogdHJ1ZSwKKyAgICAg ICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2 aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL0NhbnZhcy9Xb3JsZF9M aWdodF9HcmF5X0Jhc2UvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6 ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lk PWVkNzEyY2IxZGIzZTRiYWU5ZTg1MzI5MDQwZmI5YTQ5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMi CisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20v QXJjR0lTL3Jlc3Qvc2VydmljZXMvQ2FudmFzL1dvcmxkX0xpZ2h0X0dyYXlfQmFzZS9NYXBTZXJ2 ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRw czovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWVkNzEyY2IxZGIzZTRiYWU5ZTg1 MzI5MDQwZmI5YTQ5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAg ICAgICAgeworQEAgLTc2LDggKzc2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi TmF0dXJhbCBFYXJ0aCBwaHlzaWNhbCBtYXAgZm9yIHRoZSB3b3JsZCIsCisgICAgICAgICAgICAg Im1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAg ICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3Nl cnZpY2VzL1dvcmxkX1BoeXNpY2FsX01hcC9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5 cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9p dGVtLmh0bWw/aWQ9YzRlYzcyMmExY2QzNGNmMGEyMzkwNGFhZGY4OTIzYTAnPkVzcmk8L2E+IGNv bnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29u bGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfUGh5c2ljYWxfTWFwL01hcFNlcnZl ciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBz Oi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YzRlYzcyMmExY2QzNGNmMGEyMzkw NGFhZGY4OTIzYTAnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAg ICAgICB7CitAQCAtODYsOCArODYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQ b3J0cmF5cyBzdXJmYWNlIGVsZXZhdGlvbiBhcyBzaGFkZWQgcmVsaWVmIiwKKyAgICAgICAgICAg ICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAg ICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qv c2VydmljZXMvV29ybGRfU2hhZGVkX1JlbGllZi9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJj b3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9t ZS9pdGVtLmh0bWw/aWQ9OWM1MzcwZDBiNTRmNGRlMWI0OGEzNzkyZDczNzdmZjInPkVzcmk8L2E+ IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFyY2dp c29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfU2hhZGVkX1JlbGllZi9NYXBT ZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdo dHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTljNTM3MGQwYjU0ZjRkZTFi NDhhMzc5MmQ3Mzc3ZmYyJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAor ICAgICAgICAgeworQEAgLTk2LDggKzk2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24i OiAiVGhpcyBtYXAgaXMgZGVzaWduZWQgdG8gYmUgdXNlZCBhcyBhIGJhc2VtYXAgYnkgbWFyaW5l IEdJUyBwcm9mZXNzaW9uYWxzIGFuZCBhcyBhIHJlZmVyZW5jZSBtYXAgYnkgYW55b25lIGludGVy ZXN0ZWQgaW4gb2NlYW4gZGF0YSIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAg ICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3Nl cnZlci5hcmNnaXNvbmxpbmUuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL09jZWFuL1dvcmxkX09j ZWFuX0Jhc2UvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29w eTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTFlMTI2 ZTc1MjBmOTQ2NmM5Y2EyOGI4ZjI4YjVlNTAwJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAg ICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL2FyY2dpcy9y ZXN0L3NlcnZpY2VzL09jZWFuL1dvcmxkX09jZWFuX0Jhc2UvTWFwU2VydmVyIiwKKysgICAgICAg ICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lz LmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0xZTEyNmU3NTIwZjk0NjZjOWNhMjhiOGYyOGI1ZTUwMCc+ RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC0x MDYsOCArMTA2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlbWF0aWMgY29u dGVudCBwcm92aWRpbmcgYSBuZXV0cmFsIGJhY2tncm91bmQgd2l0aCBtaW5pbWFsIGNvbG9ycyIs CisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IHRy dWUsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNv bS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9DYW52YXMvV29ybGRfRGFya19HcmF5X0Jhc2UvTWFwU2Vy dmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0 cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWEyODRhOWI5OWIzNDQ2YTM5MTBk NDE0NGE1MDk5MGY2Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6 ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMv Q2FudmFzL1dvcmxkX0RhcmtfR3JheV9CYXNlL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNv cHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9t ZS9pdGVtLmh0bWw/aWQ9YTI4NGE5Yjk5YjM0NDZhMzkxMGQ0MTQ0YTUwOTkwZjYnPkVzcmk8L2E+ IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtMTE2LDggKzEx Niw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRlTG9ybWXigJlzIHRvcG9ncmFw aGljIGJhc2VtYXAgaXMgYSBzZWFtbGVzcyBnbG9iYWwgZGF0YSBzZXQgdGhhdCBwb3J0cmF5cyB0 cmFuc3BvcnRhdGlvbiwgaHlkcm9ncmFwaHksIGp1cmlzZGljdGlvbiBib3VuZGFyaWVzLCBhbmQg bWFqb3IgZ2VvZ3JhcGhpYyBmZWF0dXJlcyIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNl LAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0 cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1NwZWNpYWx0 eS9EZUxvcm1lX1dvcmxkX0Jhc2VfTWFwL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHly aWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0 ZW0uaHRtbD9pZD1iMTY1YzNkZjQ1M2U0YmU2YjVhYzRmZGIyNDFlZmZiZSc+RXNyaTwvYT4gY29u dHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25s aW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9TcGVjaWFsdHkvRGVMb3JtZV9Xb3JsZF9CYXNl X01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8 YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWIxNjVjM2Rm NDUzZTRiZTZiNWFjNGZkYjI0MWVmZmJlJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAg ICB9CisgICAgIF0KKyB9CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9z ZXJ2aWNlcy9lc3JpL3BsYWNlbWFuYWdlcmVuZ2luZV9lc3JpLmNwcCBiL3F0bG9jYXRpb24vc3Jj L3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2lu ZGV4IDM4NThkZGY1Li5hZjY2ZjI4ZSAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdp bnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVfZXNyaS5jcHAKKysrKyBiL3F0 bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVf ZXNyaS5jcHAKK0BAIC02Myw4ICs2MywxMCBAQCBzdGF0aWMgY29uc3QgUVN0cmluZyBrQ291bnRy aWVzS2V5KFFTdHJpbmdMaXRlcmFsKCJkZXRhaWxlZENvdW50cmllcyIpKTsKKyBzdGF0aWMgY29u c3QgUVN0cmluZyBrTG9jYWxpemVkTmFtZXNLZXkoUVN0cmluZ0xpdGVyYWwoImxvY2FsaXplZE5h bWVzIikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtNYXhMb2NhdGlvbnNLZXkoUVN0cmluZ0xp dGVyYWwoIm1heExvY2F0aW9ucyIpKTsKKyAKKy1zdGF0aWMgY29uc3QgUVVybCBrVXJsR2VvY29k ZVNlcnZlcigiaHR0cDovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9X b3JsZC9HZW9jb2RlU2VydmVyP2Y9cGpzb24iKTsKKy1zdGF0aWMgY29uc3QgUVVybCBrVXJsRmlu ZEFkZHJlc3NDYW5kaWRhdGVzKCJodHRwOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0 L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIik7Cisr c3RhdGljIGNvbnN0IFFVcmwga1VybEdlb2NvZGVTZXJ2ZXIoCisrICAgICAgICAiaHR0cHM6Ly9n ZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZl cj9mPXBqc29uIik7Cisrc3RhdGljIGNvbnN0IFFVcmwga1VybEZpbmRBZGRyZXNzQ2FuZGlkYXRl cygiaHR0cHM6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQv IgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdlb2NvZGVT ZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIik7CisgCisgUGxhY2VNYW5hZ2VyRW5naW5lRXNy aTo6UGxhY2VNYW5hZ2VyRW5naW5lRXNyaShjb25zdCBRVmFyaWFudE1hcCAmcGFyYW1ldGVycywg UUdlb1NlcnZpY2VQcm92aWRlcjo6RXJyb3IgKmVycm9yLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyAqZXJyb3JTdHJpbmcpIDoKK1N1Ym1v ZHVsZSBxdG11bHRpbWVkaWEgZjAzNDQwNzkuLjBkN2NjMzNhOgorZGlmZiAtLWdpdCBhL3F0bXVs dGltZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRpb2lucHV0X3B1bHNlLmNwcCBiL3F0 bXVsdGltZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRpb2lucHV0X3B1bHNlLmNwcAor aW5kZXggMmI1MzI1MTMyLi5iNjhiNGFmMWIgMTAwNjQ0CistLS0gYS9xdG11bHRpbWVkaWEvc3Jj L3BsdWdpbnMvcHVsc2VhdWRpby9xYXVkaW9pbnB1dF9wdWxzZS5jcHAKKysrKyBiL3F0bXVsdGlt ZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRpb2lucHV0X3B1bHNlLmNwcAorQEAgLTQw Miw2ICs0MDIsOCBAQCBpbnQgUVB1bHNlQXVkaW9JbnB1dDo6Ynl0ZXNSZWFkeSgpIGNvbnN0Cisg CisgcWludDY0IFFQdWxzZUF1ZGlvSW5wdXQ6OnJlYWQoY2hhciAqZGF0YSwgcWludDY0IGxlbikK KyB7CisrICAgIFFfQVNTRVJUKGRhdGEgIT0gbnVsbHB0ciB8fCBsZW4gPT0gMCk7CisrCisgICAg IG1fYnl0ZXNBdmFpbGFibGUgPSBjaGVja0J5dGVzUmVhZHkoKTsKKyAKKyAgICAgc2V0RXJyb3Io UUF1ZGlvOjpOb0Vycm9yKTsKK0BAIC00MTEsNyArNDEzLDggQEAgcWludDY0IFFQdWxzZUF1ZGlv SW5wdXQ6OnJlYWQoY2hhciAqZGF0YSwgcWludDY0IGxlbikKKyAKKyAgICAgaWYgKCFtX3B1bGxN b2RlICYmICFtX3RlbXBCdWZmZXIuaXNFbXB0eSgpKSB7CisgICAgICAgICByZWFkQnl0ZXMgPSBx TWluKHN0YXRpY19jYXN0PGludD4obGVuKSwgbV90ZW1wQnVmZmVyLnNpemUoKSk7CistICAgICAg ICBtZW1jcHkoZGF0YSwgbV90ZW1wQnVmZmVyLmNvbnN0RGF0YSgpLCByZWFkQnl0ZXMpOworKyAg ICAgICAgaWYgKHJlYWRCeXRlcykKKysgICAgICAgICAgICBtZW1jcHkoZGF0YSwgbV90ZW1wQnVm ZmVyLmNvbnN0RGF0YSgpLCByZWFkQnl0ZXMpOworICAgICAgICAgbV90b3RhbFRpbWVWYWx1ZSAr PSByZWFkQnl0ZXM7CisgCisgICAgICAgICBpZiAocmVhZEJ5dGVzIDwgbV90ZW1wQnVmZmVyLnNp emUoKSkgeworQEAgLTUwMiw5ICs1MDUsMTAgQEAgcWludDY0IFFQdWxzZUF1ZGlvSW5wdXQ6OnJl YWQoY2hhciAqZGF0YSwgcWludDY0IGxlbikKKyAKKyB2b2lkIFFQdWxzZUF1ZGlvSW5wdXQ6OmFw cGx5Vm9sdW1lKGNvbnN0IHZvaWQgKnNyYywgdm9pZCAqZGVzdCwgaW50IGxlbikKKyB7CisrICAg IFFfQVNTRVJUKChzcmMgJiYgZGVzdCkgfHwgbGVuID09IDApOworICAgICBpZiAobV92b2x1bWUg PCAxLmYpCisgICAgICAgICBRQXVkaW9IZWxwZXJJbnRlcm5hbDo6cU11bHRpcGx5U2FtcGxlcyht X3ZvbHVtZSwgbV9mb3JtYXQsIHNyYywgZGVzdCwgbGVuKTsKKy0gICAgZWxzZQorKyAgICBlbHNl IGlmIChsZW4pCisgICAgICAgICBtZW1jcHkoZGVzdCwgc3JjLCBsZW4pOworIH0KKyAKK1N1Ym1v ZHVsZSBxdHBpbSAwMmVmZWY1ZS4uLmY5YThmMGZjIChjb21taXRzIG5vdCBwcmVzZW50KQorU3Vi bW9kdWxlIHF0cXVpY2szZCBiODVjZjYyMi4uNDdkZWZjOGI6CitkaWZmIC0tZ2l0IGEvcXRxdWlj azNkL3NyYy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2ltcC9hc3NpbXAucHJvIGIvcXRxdWlj azNkL3NyYy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2ltcC9hc3NpbXAucHJvCitpbmRleCBj YTVjNDk5ZS4uMTc0YTA3NWIgMTAwNjQ0CistLS0gYS9xdHF1aWNrM2Qvc3JjL3BsdWdpbnMvYXNz ZXRpbXBvcnRlcnMvYXNzaW1wL2Fzc2ltcC5wcm8KKysrKyBiL3F0cXVpY2szZC9zcmMvcGx1Z2lu cy9hc3NldGltcG9ydGVycy9hc3NpbXAvYXNzaW1wLnBybworQEAgLTEwLDcgKzEwLDcgQEAgUVRf Rk9SX0NPTkZJRyArPSBhc3NldGltcG9ydGVycy1wcml2YXRlCisgaW5jbHVkZSgkJE9VVF9QV0Qv Li4vcXRhc3NldGltcG9ydGVycy1jb25maWcucHJpKQorIAorIHF0Q29uZmlnKHN5c3RlbS1hc3Np bXApOiFpZihjcm9zc19jb21waWxlOmhvc3RfYnVpbGQpIHsKKy0gICAgUU1BS0VfVVNFX1BSSVZB VEUgKz0gYXNzaW1wCisrICAgIFFNQUtFX1VTRV9QUklWQVRFICs9IHF1aWNrM2QtYXNzaW1wCisg fSBlbHNlIHsKKyAgICAgaW5jbHVkZSguLi8uLi8uLi8zcmRwYXJ0eS9hc3NpbXAvYXNzaW1wLnBy aSkKKyB9CitTdWJtb2R1bGUgcXRxdWlja2NvbnRyb2xzMiAzYTY1N2RjMC4uNTZjZTgyMzM6Citk aWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvaW1wb3J0cy9wbGF0Zm9ybS93aWRnZXRz L3F3aWRnZXRwbGF0Zm9ybW1lbnUuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvaW1wb3J0cy9w bGF0Zm9ybS93aWRnZXRzL3F3aWRnZXRwbGF0Zm9ybW1lbnUuY3BwCitpbmRleCBlNWZlNzM0Zjcu LmUzNjkyMjc3NSAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL2ltcG9ydHMvcGxh dGZvcm0vd2lkZ2V0cy9xd2lkZ2V0cGxhdGZvcm1tZW51LmNwcAorKysrIGIvcXRxdWlja2NvbnRy b2xzMi9zcmMvaW1wb3J0cy9wbGF0Zm9ybS93aWRnZXRzL3F3aWRnZXRwbGF0Zm9ybW1lbnUuY3Bw CitAQCAtMzgsNiArMzgsNyBAQAorICNpbmNsdWRlICJxd2lkZ2V0cGxhdGZvcm1tZW51aXRlbV9w LmgiCisgCisgI2luY2x1ZGUgPFF0R3VpL3F3aW5kb3cuaD4KKysjaW5jbHVkZSA8UXRHdWkvcHJp dmF0ZS9xaGlnaGRwaXNjYWxpbmdfcC5oPgorICNpbmNsdWRlIDxRdFdpZGdldHMvcW1lbnUuaD4K KyAjaW5jbHVkZSA8UXRXaWRnZXRzL3FhY3Rpb24uaD4KKyAKK0BAIC0xNDUsNyArMTQ2LDcgQEAg dm9pZCBRV2lkZ2V0UGxhdGZvcm1NZW51OjpzaG93UG9wdXAoY29uc3QgUVdpbmRvdyAqd2luZG93 LCBjb25zdCBRUmVjdCAmdGFyZ2V0UmUKKyAKKyAgICAgUVBvaW50IHRhcmdldFBvcyA9IHRhcmdl dFJlY3QuYm90dG9tTGVmdCgpOworICAgICBpZiAod2luZG93KQorLSAgICAgICAgdGFyZ2V0UG9z ID0gd2luZG93LT5tYXBUb0dsb2JhbCh0YXJnZXRQb3MpOworKyAgICAgICAgdGFyZ2V0UG9zID0g d2luZG93LT5tYXBUb0dsb2JhbChRSGlnaERwaTo6ZnJvbU5hdGl2ZUxvY2FsUG9zaXRpb24odGFy Z2V0UG9zLCB3aW5kb3cpKTsKKyAKKyAgICAgY29uc3QgUVdpZGdldFBsYXRmb3JtTWVudUl0ZW0g KndpZGdldEl0ZW0gPSBxb2JqZWN0X2Nhc3Q8Y29uc3QgUVdpZGdldFBsYXRmb3JtTWVudUl0ZW0g Kj4oaXRlbSk7CisgICAgIG1fbWVudS0+cG9wdXAodGFyZ2V0UG9zLCB3aWRnZXRJdGVtID8gd2lk Z2V0SXRlbS0+YWN0aW9uKCkgOiBudWxscHRyKTsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJv bHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b24uY3BwIGIvcXRxdWlj a2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uLmNwcAor aW5kZXggOTUwZTRlMDk5Li5iODFmYmVhMGIgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMy L3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b24uY3BwCisrKysgYi9xdHF1 aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b24uY3Bw CitAQCAtMzg3LDYgKzM4NywxNyBAQCB2b2lkIFFRdWlja0Fic3RyYWN0QnV0dG9uUHJpdmF0ZTo6 aXRlbUltcGxpY2l0SGVpZ2h0Q2hhbmdlZChRUXVpY2tJdGVtICppdGVtKQorICAgICAgICAgZW1p dCBxLT5pbXBsaWNpdEluZGljYXRvckhlaWdodENoYW5nZWQoKTsKKyB9CisgCisrdm9pZCBRUXVp Y2tBYnN0cmFjdEJ1dHRvblByaXZhdGU6Oml0ZW1EZXN0cm95ZWQoUVF1aWNrSXRlbSAqaXRlbSkK Kyt7CisrICAgIFFfUShRUXVpY2tBYnN0cmFjdEJ1dHRvbik7CisrICAgIFFRdWlja0NvbnRyb2xQ cml2YXRlOjppdGVtRGVzdHJveWVkKGl0ZW0pOworKyAgICBpZiAoaXRlbSA9PSBpbmRpY2F0b3Ip IHsKKysgICAgICAgIGluZGljYXRvciA9IG51bGxwdHI7CisrICAgICAgICBlbWl0IHEtPmltcGxp Y2l0SW5kaWNhdG9yV2lkdGhDaGFuZ2VkKCk7CisrICAgICAgICBlbWl0IHEtPmltcGxpY2l0SW5k aWNhdG9ySGVpZ2h0Q2hhbmdlZCgpOworKyAgICB9CisrfQorKworIFFRdWlja0Fic3RyYWN0QnV0 dG9uICpRUXVpY2tBYnN0cmFjdEJ1dHRvblByaXZhdGU6OmZpbmRDaGVja2VkQnV0dG9uKCkgY29u c3QKKyB7CisgICAgIFFfUShjb25zdCBRUXVpY2tBYnN0cmFjdEJ1dHRvbik7CitAQCAtMTE3Niw2 ICsxMTg3LDEyIEBAIFFBY2Nlc3NpYmxlOjpSb2xlIFFRdWlja0Fic3RyYWN0QnV0dG9uOjphY2Nl c3NpYmxlUm9sZSgpIGNvbnN0CisgICAgIH0KKyAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpCdXR0 b247CisgfQorKworK3ZvaWQgUVF1aWNrQWJzdHJhY3RCdXR0b246OmFjY2Vzc2libGVQcmVzc0Fj dGlvbigpCisreworKyAgICBRX0QoUVF1aWNrQWJzdHJhY3RCdXR0b24pOworKyAgICBkLT50cmln Z2VyKCk7CisrfQorICNlbmRpZgorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9x dHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25f cC5oIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0 YnV0dG9uX3AuaAoraW5kZXggMGZhNDg5ODBlLi5hYjY2MjIwZDAgMTAwNjQ0CistLS0gYS9xdHF1 aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcC5o CisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJh Y3RidXR0b25fcC5oCitAQCAtMjA5LDYgKzIwOSw3IEBAIHByb3RlY3RlZDoKKyAjaWYgUVRfQ09O RklHKGFjY2Vzc2liaWxpdHkpCisgICAgIHZvaWQgYWNjZXNzaWJpbGl0eUFjdGl2ZUNoYW5nZWQo Ym9vbCBhY3RpdmUpIG92ZXJyaWRlOworICAgICBRQWNjZXNzaWJsZTo6Um9sZSBhY2Nlc3NpYmxl Um9sZSgpIGNvbnN0IG92ZXJyaWRlOworKyAgICBRX0lOVk9LQUJMRSB2b2lkIGFjY2Vzc2libGVQ cmVzc0FjdGlvbigpOworICNlbmRpZgorIAorIHByaXZhdGU6CitkaWZmIC0tZ2l0IGEvcXRxdWlj a2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3BfcC5o IGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0 dG9uX3BfcC5oCitpbmRleCA5MjkxYzFhODcuLmI3Mjk3MjBmMiAxMDA2NDQKKy0tLSBhL3F0cXVp Y2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wX3Au aAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3Ry YWN0YnV0dG9uX3BfcC5oCitAQCAtMTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoKKyAKKyAgICAgdm9p ZCBpdGVtSW1wbGljaXRXaWR0aENoYW5nZWQoUVF1aWNrSXRlbSAqaXRlbSkgb3ZlcnJpZGU7Cisg ICAgIHZvaWQgaXRlbUltcGxpY2l0SGVpZ2h0Q2hhbmdlZChRUXVpY2tJdGVtICppdGVtKSBvdmVy cmlkZTsKKysgICAgdm9pZCBpdGVtRGVzdHJveWVkKFFRdWlja0l0ZW0gKml0ZW0pIG92ZXJyaWRl OworIAorICAgICAvLyBjb3BpZWQgZnJvbSBxYWJzdHJhY3RidXR0b24uY3BwCisgICAgIHN0YXRp YyBjb25zdCBpbnQgQVVUT19SRVBFQVRfREVMQVkgPSAzMDA7CitkaWZmIC0tZ2l0IGEvcXRxdWlj a2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5jcHAgYi9xdHF1aWNr Y29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWN0aW9uLmNwcAoraW5kZXggMjA0 MWU3NzQxLi44NjEwY2RmYWUgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlj a3RlbXBsYXRlczIvcXF1aWNrYWN0aW9uLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMv cXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5jcHAKK0BAIC0xNDUsNyArMTQ1LDcgQEAgaW50 IFFRdWlja0FjdGlvblByaXZhdGU6OlNob3J0Y3V0RW50cnk6OnNob3J0Y3V0SWQoKSBjb25zdAor IAorIHZvaWQgUVF1aWNrQWN0aW9uUHJpdmF0ZTo6U2hvcnRjdXRFbnRyeTo6Z3JhYihjb25zdCBR S2V5U2VxdWVuY2UgJnNob3J0Y3V0LCBib29sIGVuYWJsZWQpCisgeworLSAgICBpZiAoc2hvcnRj dXQuaXNFbXB0eSgpKQorKyAgICBpZiAoc2hvcnRjdXQuaXNFbXB0eSgpIHx8IG1fc2hvcnRjdXRJ ZCkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgUXQ6OlNob3J0Y3V0Q29udGV4dCBjb250ZXh0 ID0gUXQ6OldpbmRvd1Nob3J0Y3V0OyAvLyBUT0RPCitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRy b2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5jcHAgYi9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udGFpbmVyLmNwcAoraW5kZXggZjM4 YzJiMDljLi42ZWVkMmEwMjQgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlj a3RlbXBsYXRlczIvcXF1aWNrY29udGFpbmVyLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9z cmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5jcHAKK0BAIC0yMjUsNiArMjI1LDcg QEAgdm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjpjbGVhbnVwKCkKKyAgICAgUU9iamVjdDo6 ZGlzY29ubmVjdChjb250ZW50TW9kZWwsICZRUW1sT2JqZWN0TW9kZWw6OmNvdW50Q2hhbmdlZCwg cSwgJlFRdWlja0NvbnRhaW5lcjo6Y291bnRDaGFuZ2VkKTsKKyAgICAgUU9iamVjdDo6ZGlzY29u bmVjdChjb250ZW50TW9kZWwsICZRUW1sT2JqZWN0TW9kZWw6OmNoaWxkcmVuQ2hhbmdlZCwgcSwg JlFRdWlja0NvbnRhaW5lcjo6Y29udGVudENoaWxkcmVuQ2hhbmdlZCk7CisgICAgIGRlbGV0ZSBj b250ZW50TW9kZWw7CisrICAgIGNvbnRlbnRNb2RlbCA9IG51bGxwdHI7CisgfQorIAorIFFRdWlj a0l0ZW0gKlFRdWlja0NvbnRhaW5lclByaXZhdGU6Oml0ZW1BdChpbnQgaW5kZXgpIGNvbnN0CitA QCAtNDM2LDcgKzQzNyw3IEBAIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6Y29udGVudENo aWxkcmVuX2NsZWFyKFFRbWxMaXN0UHJvcGVydHk8UVF1aWNrSXRlbT4KKyB2b2lkIFFRdWlja0Nv bnRhaW5lclByaXZhdGU6OnVwZGF0ZUNvbnRlbnRXaWR0aCgpCisgeworICAgICBRX1EoUVF1aWNr Q29udGFpbmVyKTsKKy0gICAgaWYgKGhhc0NvbnRlbnRXaWR0aCB8fCBxRnV6enlDb21wYXJlKGNv bnRlbnRXaWR0aCwgaW1wbGljaXRDb250ZW50V2lkdGgpKQorKyAgICBpZiAoaGFzQ29udGVudFdp ZHRoIHx8IHFGdXp6eUNvbXBhcmUoY29udGVudFdpZHRoLCBpbXBsaWNpdENvbnRlbnRXaWR0aCkg fHwgIWNvbnRlbnRNb2RlbCkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgY29udGVudFdpZHRo ID0gaW1wbGljaXRDb250ZW50V2lkdGg7CitAQCAtNDQ2LDcgKzQ0Nyw3IEBAIHZvaWQgUVF1aWNr Q29udGFpbmVyUHJpdmF0ZTo6dXBkYXRlQ29udGVudFdpZHRoKCkKKyB2b2lkIFFRdWlja0NvbnRh aW5lclByaXZhdGU6OnVwZGF0ZUNvbnRlbnRIZWlnaHQoKQorIHsKKyAgICAgUV9RKFFRdWlja0Nv bnRhaW5lcik7CistICAgIGlmIChoYXNDb250ZW50SGVpZ2h0IHx8IHFGdXp6eUNvbXBhcmUoY29u dGVudEhlaWdodCwgaW1wbGljaXRDb250ZW50SGVpZ2h0KSkKKysgICAgaWYgKGhhc0NvbnRlbnRI ZWlnaHQgfHwgcUZ1enp5Q29tcGFyZShjb250ZW50SGVpZ2h0LCBpbXBsaWNpdENvbnRlbnRIZWln aHQpIHx8ICFjb250ZW50TW9kZWwpCisgICAgICAgICByZXR1cm47CisgCisgICAgIGNvbnRlbnRI ZWlnaHQgPSBpbXBsaWNpdENvbnRlbnRIZWlnaHQ7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRy b2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2wuY3BwIGIvcXRxdWlja2NvbnRy b2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2wuY3BwCitpbmRleCBiYmJkMGU2 MjIuLjFmNGI0NzM0MyAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVt cGxhdGVzMi9xcXVpY2tjb250cm9sLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVp Y2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2wuY3BwCitAQCAtODQ1LDYgKzg0NSwxMyBAQCB2b2lk IFFRdWlja0NvbnRyb2xQcml2YXRlOjpleGVjdXRlQmFja2dyb3VuZChib29sIGNvbXBsZXRlKQor ICAgICAgICAgcXVpY2tDb21wbGV0ZURlZmVycmVkKHEsIGJhY2tncm91bmROYW1lKCksIGJhY2tn cm91bmQpOworIH0KKyAKKysvKgorKyAgICBcaW50ZXJuYWwKKysKKysgICAgSGlkZXMgYW4gaXRl bSB0aGF0IHdhcyByZXBsYWNlZCBieSBhIG5ld2VyIG9uZSwgcmF0aGVyIHRoYW4KKysgICAgZGVs ZXRpbmcgaXQsIGFzIHRoZSBpdGVtIGlzIHR5cGljYWxseSBjcmVhdGVkIGluIFFNTCBhbmQgaGVu Y2UKKysgICAgd2UgZG9uJ3Qgb3duIGl0LgorKyovCisgdm9pZCBRUXVpY2tDb250cm9sUHJpdmF0 ZTo6aGlkZU9sZEl0ZW0oUVF1aWNrSXRlbSAqaXRlbSkKKyB7CisgICAgIGlmICghaXRlbSkKK0BA IC04NjMsNiArODcwLDI5IEBAIHZvaWQgUVF1aWNrQ29udHJvbFByaXZhdGU6OmhpZGVPbGRJdGVt KFFRdWlja0l0ZW0gKml0ZW0pCisgI2VuZGlmCisgfQorIAorKy8qCisrICAgIFxpbnRlcm5hbAor KworKyAgICBOYW1lZCAidW5oaWRlIiBiZWNhdXNlIGl0J3MgdXNlZCBmb3IgY2FzZXMgd2hlcmUg YW4gaXRlbQorKyAgICB0aGF0IHdhcyBwcmV2aW91c2x5IGhpZGRlbiBieSBcbCBoaWRlT2xkSXRl bSgpIHdhbnRzIHRvIGJlCisrICAgIHNob3duIGJ5IGEgY29udHJvbCBhZ2Fpbiwgc3VjaCBhcyBh IFNjcm9sbEJhciBpbiBTY3JvbGxWaWV3LgorKyovCisrdm9pZCBRUXVpY2tDb250cm9sUHJpdmF0 ZTo6dW5oaWRlT2xkSXRlbShRUXVpY2tDb250cm9sICpjb250cm9sLCBRUXVpY2tJdGVtICppdGVt KQorK3sKKysgICAgUV9BU1NFUlQoaXRlbSk7CisrICAgIHFDRGVidWcobGNJdGVtTWFuYWdlbWVu dCkgPDwgInVuaGlkaW5nIG9sZCBpdGVtIiA8PCBpdGVtOworKworKyAgICBpdGVtLT5zZXRWaXNp YmxlKHRydWUpOworKyAgICBpdGVtLT5zZXRQYXJlbnRJdGVtKGNvbnRyb2wpOworKworKyNpZiBR VF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysgICAgLy8gQWRkIHRoZSBpdGVtIGJhY2sgaW4gdG8g dGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4KKysgICAgUVF1aWNrQWNjZXNzaWJsZUF0dGFjaGVkICph Y2Nlc3NpYmxlID0gYWNjZXNzaWJsZUF0dGFjaGVkKGl0ZW0pOworKyAgICBpZiAoYWNjZXNzaWJs ZSkKKysgICAgICAgIGFjY2Vzc2libGUtPnNldElnbm9yZWQoZmFsc2UpOworKyNlbmRpZgorK30K KysKKyB2b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjp1cGRhdGVCYXNlbGluZU9mZnNldCgpCisg eworICAgICBRX1EoUVF1aWNrQ29udHJvbCk7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xz Mi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmggYi9xdHF1aWNrY29udHJv bHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbF9wX3AuaAoraW5kZXggOGU5Nzkw NzllLi5hNmU2MjRjOTEgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3Rl bXBsYXRlczIvcXF1aWNrY29udHJvbF9wX3AuaAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMv cXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmgKK0BAIC0xNzMsNiArMTczLDcgQEAg cHVibGljOgorICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUJhY2tncm91bmQoYm9vbCBjb21wbGV0 ZSA9IGZhbHNlKTsKKyAKKyAgICAgc3RhdGljIHZvaWQgaGlkZU9sZEl0ZW0oUVF1aWNrSXRlbSAq aXRlbSk7CisrICAgIHN0YXRpYyB2b2lkIHVuaGlkZU9sZEl0ZW0oUVF1aWNrQ29udHJvbCAqY29u dHJvbCwgUVF1aWNrSXRlbSAqaXRlbSk7CisgCisgICAgIHZvaWQgdXBkYXRlQmFzZWxpbmVPZmZz ZXQoKTsKKyAKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRl czIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNr dGVtcGxhdGVzMi9xcXVpY2tkaWFsb2didXR0b25ib3guY3BwCitpbmRleCBlNmRiMTRlYjUuLjYx OTdkMTU0NyAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVz Mi9xcXVpY2tkaWFsb2didXR0b25ib3guY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9x dWlja3RlbXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNwcAorQEAgLTIzNyw3ICsyMzcs NyBAQCBzdGF0aWMgUVJlY3RGIGFsaWduZWRSZWN0KFF0OjpMYXlvdXREaXJlY3Rpb24gZGlyZWN0 aW9uLCBRdDo6QWxpZ25tZW50IGFsaWdubWVudAorIHZvaWQgUVF1aWNrRGlhbG9nQnV0dG9uQm94 UHJpdmF0ZTo6cmVzaXplQ29udGVudCgpCisgeworICAgICBRX1EoUVF1aWNrRGlhbG9nQnV0dG9u Qm94KTsKKy0gICAgaWYgKCFjb250ZW50SXRlbSkKKysgICAgaWYgKCFjb250ZW50SXRlbSB8fCAh Y29udGVudE1vZGVsKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBRUmVjdEYgZ2VvbWV0cnkg PSBxLT5ib3VuZGluZ1JlY3QoKS5hZGp1c3RlZChxLT5sZWZ0UGFkZGluZygpLCBxLT50b3BQYWRk aW5nKCksIC1xLT5yaWdodFBhZGRpbmcoKSwgLXEtPmJvdHRvbVBhZGRpbmcoKSk7CitAQCAtMzIy LDYgKzMyMiw5IEBAIHZvaWQgUVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6dXBkYXRlTGF5 b3V0KCkKKyBxcmVhbCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjpnZXRDb250ZW50V2lk dGgoKSBjb25zdAorIHsKKyAgICAgUV9RKGNvbnN0IFFRdWlja0RpYWxvZ0J1dHRvbkJveCk7Cisr ICAgIGlmICghY29udGVudE1vZGVsKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisgICAgIGNvbnN0 IGludCBjb3VudCA9IGNvbnRlbnRNb2RlbC0+Y291bnQoKTsKKyAgICAgY29uc3QgcXJlYWwgdG90 YWxTcGFjaW5nID0gcU1heCgwLCBjb3VudCAtIDEpICogc3BhY2luZzsKKyAgICAgcXJlYWwgdG90 YWxXaWR0aCA9IHRvdGFsU3BhY2luZzsKK0BAIC0zNDEsNiArMzQ0LDkgQEAgcXJlYWwgUVF1aWNr RGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6Z2V0Q29udGVudFdpZHRoKCkgY29uc3QKKyBxcmVhbCBR UXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjpnZXRDb250ZW50SGVpZ2h0KCkgY29uc3QKKyB7 CisgICAgIFFfUShjb25zdCBRUXVpY2tEaWFsb2dCdXR0b25Cb3gpOworKyAgICBpZiAoIWNvbnRl bnRNb2RlbCkKKysgICAgICAgIHJldHVybiAwOworKworICAgICBjb25zdCBpbnQgY291bnQgPSBj b250ZW50TW9kZWwtPmNvdW50KCk7CisgICAgIHFyZWFsIG1heEhlaWdodCA9IDA7CisgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250 cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVybGF5LmNwcCBiL3F0cXVpY2tjb250 cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVybGF5LmNwcAoraW5kZXggOTFiZDU5 MTg0Li4wY2U1MThmODQgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3Rl bXBsYXRlczIvcXF1aWNrb3ZlcmxheS5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1 aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVybGF5LmNwcAorQEAgLTM5OSw4ICszOTksMTEgQEAgdm9p ZCBRUXVpY2tPdmVybGF5OjppdGVtQ2hhbmdlKEl0ZW1DaGFuZ2UgY2hhbmdlLCBjb25zdCBJdGVt Q2hhbmdlRGF0YSAmZGF0YSkKKyAgICAgUV9EKFFRdWlja092ZXJsYXkpOworICAgICBRUXVpY2tJ dGVtOjppdGVtQ2hhbmdlKGNoYW5nZSwgZGF0YSk7CisgCistICAgIGlmIChjaGFuZ2UgPT0gSXRl bUNoaWxkQWRkZWRDaGFuZ2UgfHwgY2hhbmdlID09IEl0ZW1DaGlsZFJlbW92ZWRDaGFuZ2UpCisr ICAgIGlmIChjaGFuZ2UgPT0gSXRlbUNoaWxkQWRkZWRDaGFuZ2UgfHwgY2hhbmdlID09IEl0ZW1D aGlsZFJlbW92ZWRDaGFuZ2UpIHsKKyAgICAgICAgIHNldFZpc2libGUoIWQtPmFsbERyYXdlcnMu aXNFbXB0eSgpIHx8ICFjaGlsZEl0ZW1zKCkuaXNFbXB0eSgpKTsKKysgICAgICAgIGlmIChkYXRh Lml0ZW0tPnBhcmVudCgpID09IGQtPm1vdXNlR3JhYmJlclBvcHVwKQorKyAgICAgICAgICAgIGQt PnNldE1vdXNlR3JhYmJlclBvcHVwKG51bGxwdHIpOworKyAgICB9CisgfQorIAorIHZvaWQgUVF1 aWNrT3ZlcmxheTo6Z2VvbWV0cnlDaGFuZ2VkKGNvbnN0IFFSZWN0RiAmbmV3R2VvbWV0cnksIGNv bnN0IFFSZWN0RiAmb2xkR2VvbWV0cnkpCitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9z cmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAgYi9xdHF1aWNrY29udHJvbHMy L3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrc2Nyb2xsYmFyLmNwcAoraW5kZXggNGUyZjUwOWRi Li4xYzRiMzA4Y2QgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBs YXRlczIvcXF1aWNrc2Nyb2xsYmFyLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVp Y2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAKK0BAIC03OTcsNiArNzk3LDE0IEBAIHZv aWQgUVF1aWNrU2Nyb2xsQmFyQXR0YWNoZWRQcml2YXRlOjppbml0SG9yaXpvbnRhbCgpCisgICAg IGlmIChwYXJlbnQgJiYgcGFyZW50ID09IGZsaWNrYWJsZS0+cGFyZW50SXRlbSgpKQorICAgICAg ICAgaG9yaXpvbnRhbC0+c3RhY2tBZnRlcihmbGlja2FibGUpOworIAorKyAgICAvLyBJZiBhIHNj cm9sbCBiYXIgd2FzIHByZXZpb3VzbHkgaGlkZGVuIChkdWUgdG8gZS5nLiBzZXR0aW5nIGEgbmV3 IGNvbnRlbnRJdGVtCisrICAgIC8vIG9uIGEgU2Nyb2xsVmlldyksIHdlIG5lZWQgdG8gbWFrZSBz dXJlIHRoYXQgd2UgdW4taGlkZSBpdC4KKysgICAgLy8gV2UgZG9uJ3QgYm90aGVyIGNoZWNraW5n IGlmIHRoZSBpdGVtIGlzIGFjdHVhbGx5IHRoZSBvbGQgb25lLCBiZWNhdXNlCisrICAgIC8vIGlm IGl0J3Mgbm90LCBhbGwgb2YgdGhlIHRoaW5ncyB0aGUgZnVuY3Rpb24gZG9lcyAoc2V0dGluZyBw YXJlbnQsIHZpc2liaWxpdHksIGV0Yy4pCisrICAgIC8vIHNob3VsZCBiZSBuby1vcHMgYW55d2F5 LgorKyAgICBpZiAoYXV0byBjb250cm9sID0gcW9iamVjdF9jYXN0PFFRdWlja0NvbnRyb2wqPihx X3B0ci0+cGFyZW50KCkpKQorKyAgICAgICAgUVF1aWNrQ29udHJvbFByaXZhdGU6OnVuaGlkZU9s ZEl0ZW0oY29udHJvbCwgaG9yaXpvbnRhbCk7CisrCisgICAgIGxheW91dEhvcml6b250YWwoKTsK KyAgICAgaG9yaXpvbnRhbC0+c2V0U2l6ZShhcmVhLT5wcm9wZXJ0eSgid2lkdGhSYXRpbyIpLnRv UmVhbCgpKTsKKyAgICAgaG9yaXpvbnRhbC0+c2V0UG9zaXRpb24oYXJlYS0+cHJvcGVydHkoInhQ b3NpdGlvbiIpLnRvUmVhbCgpKTsKK0BAIC04MTgsNiArODI2LDkgQEAgdm9pZCBRUXVpY2tTY3Jv bGxCYXJBdHRhY2hlZFByaXZhdGU6OmluaXRWZXJ0aWNhbCgpCisgICAgIGlmIChwYXJlbnQgJiYg cGFyZW50ID09IGZsaWNrYWJsZS0+cGFyZW50SXRlbSgpKQorICAgICAgICAgdmVydGljYWwtPnN0 YWNrQWZ0ZXIoZmxpY2thYmxlKTsKKyAKKysgICAgaWYgKGF1dG8gY29udHJvbCA9IHFvYmplY3Rf Y2FzdDxRUXVpY2tDb250cm9sKj4ocV9wdHItPnBhcmVudCgpKSkKKysgICAgICAgIFFRdWlja0Nv bnRyb2xQcml2YXRlOjp1bmhpZGVPbGRJdGVtKGNvbnRyb2wsIHZlcnRpY2FsKTsKKysKKyAgICAg bGF5b3V0VmVydGljYWwoKTsKKyAgICAgdmVydGljYWwtPnNldFNpemUoYXJlYS0+cHJvcGVydHko ImhlaWdodFJhdGlvIikudG9SZWFsKCkpOworICAgICB2ZXJ0aWNhbC0+c2V0UG9zaXRpb24oYXJl YS0+cHJvcGVydHkoInlQb3NpdGlvbiIpLnRvUmVhbCgpKTsKK2RpZmYgLS1naXQgYS9xdHF1aWNr Y29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc2Nyb2xsdmlldy5xbWwgYi9x dHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc2Nyb2xsdmlldy5x bWwKK2luZGV4IDBlOGIwODM1Mi4uY2Q0OTMxMTg0IDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRy b2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3Njcm9sbHZpZXcucW1sCisrKysgYi9x dHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc2Nyb2xsdmlldy5x bWwKK0BAIC01NzYsNCArNTc2LDUxIEBAIFRlc3RDYXNlIHsKKyAgICAgICAgIHZlcmlmeShuZXdI b3Jpem9udGFsU2Nyb2xsQmFyLnZpc2libGUpCisgICAgICAgICB2ZXJpZnkoIW9sZEhvcml6b250 YWxTY3JvbGxCYXIudmlzaWJsZSkKKyAgICAgfQorKworKyAgICBDb21wb25lbnQgeworKyAgICAg ICAgaWQ6IGJpbmRpbmdUb0NvbnRlbnRJdGVtQW5kU3RhbmRhbG9uZUZsaWNrYWJsZQorKworKyAg ICAgICAgSXRlbSB7CisrICAgICAgICAgICAgd2lkdGg6IDIwMAorKyAgICAgICAgICAgIGhlaWdo dDogMjAwCisrCisrICAgICAgICAgICAgcHJvcGVydHkgYWxpYXMgc2Nyb2xsVmlldzogc2Nyb2xs VmlldworKworKyAgICAgICAgICAgIFNjcm9sbFZpZXcgeworKyAgICAgICAgICAgICAgICBpZDog c2Nyb2xsVmlldworKyAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorKyAgICAg ICAgICAgICAgICBjb250ZW50SXRlbTogbGlzdFZpZXcKKysKKysgICAgICAgICAgICAgICAgcHJv cGVydHkgSXRlbSBzb21lQmluZGluZzogY29udGVudEl0ZW0KKysgICAgICAgICAgICB9CisrICAg ICAgICAgICAgTGlzdFZpZXcgeworKyAgICAgICAgICAgICAgICBpZDogbGlzdFZpZXcKKysgICAg ICAgICAgICAgICAgbW9kZWw6IDEwCisrICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBJdGVtRGVs ZWdhdGUgeworKyAgICAgICAgICAgICAgICAgICAgdGV4dDogbW9kZWxEYXRhCisrICAgICAgICAg ICAgICAgICAgICB3aWR0aDogbGlzdFZpZXcud2lkdGgKKysgICAgICAgICAgICAgICAgfQorKyAg ICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgfQorKworKyAgICAvLyBUZXN0cyB0aGF0IHNj cm9sbCBiYXJzIHNob3cgdXAgZm9yIGEgU2Nyb2xsVmlldyB3aGVyZQorKyAgICAvLyAtIGl0cyBj b250ZW50SXRlbSBpcyBkZWNsYXJlZCBhcyBhIHN0YW5kYWxvbmUsIHNlcGFyYXRlIGl0ZW0KKysg ICAgLy8gLSB0aGVyZSBpcyBhIGJpbmRpbmcgdG8gY29udGVudEl0ZW0gKHdoaWNoIGNhdXNlcyBh IGRlZmF1bHQgRmxpY2thYmxlIHRvIGJlIGNyZWF0ZWQpCisrICAgIGZ1bmN0aW9uIHRlc3RfYmlu ZGluZ1RvQ29udGVudEl0ZW1BbmRTdGFuZGFsb25lRmxpY2thYmxlKCkgeworKyAgICAgICAgbGV0 IHJvb3QgPSBjcmVhdGVUZW1wb3JhcnlPYmplY3QoYmluZGluZ1RvQ29udGVudEl0ZW1BbmRTdGFu ZGFsb25lRmxpY2thYmxlLCB0ZXN0Q2FzZSkKKysgICAgICAgIHZlcmlmeShyb290KQorKworKyAg ICAgICAgbGV0IGNvbnRyb2wgPSByb290LnNjcm9sbFZpZXcKKysgICAgICAgIGxldCB2ZXJ0aWNh bFNjcm9sbEJhciA9IGNvbnRyb2wuU2Nyb2xsQmFyLnZlcnRpY2FsCisrICAgICAgICBsZXQgaG9y aXpvbnRhbFNjcm9sbEJhciA9IGNvbnRyb2wuU2Nyb2xsQmFyLmhvcml6b250YWwKKysgICAgICAg IGNvbXBhcmUodmVydGljYWxTY3JvbGxCYXIucGFyZW50LCBjb250cm9sKQorKyAgICAgICAgY29t cGFyZShob3Jpem9udGFsU2Nyb2xsQmFyLnBhcmVudCwgY29udHJvbCkKKysgICAgICAgIHZlcmlm eSh2ZXJ0aWNhbFNjcm9sbEJhci52aXNpYmxlKQorKyAgICAgICAgdmVyaWZ5KGhvcml6b250YWxT Y3JvbGxCYXIudmlzaWJsZSkKKysKKysgICAgICAgIG1vdXNlRHJhZyh2ZXJ0aWNhbFNjcm9sbEJh ciwgdmVydGljYWxTY3JvbGxCYXIud2lkdGggLyAyLCB2ZXJ0aWNhbFNjcm9sbEJhci5oZWlnaHQg LyAyLCAwLCA1MCkKKysgICAgICAgIHZlcmlmeSh2ZXJ0aWNhbFNjcm9sbEJhci5hY3RpdmUpCisr ICAgICAgICB2ZXJpZnkoaG9yaXpvbnRhbFNjcm9sbEJhci5hY3RpdmUpCisrICAgIH0KKyB9Citk aWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0 X3N3aXRjaC5xbWwgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90 c3Rfc3dpdGNoLnFtbAoraW5kZXggYjNmYWI0MWNhLi4xMGI2YmFhMDIgMTAwNjQ0CistLS0gYS9x dHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc3dpdGNoLnFtbAor KysrIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3N3aXRj aC5xbWwKK0BAIC02MDgsNCArNjA4LDI3IEBAIFRlc3RDYXNlIHsKKyAgICAgICAgIG1vdXNlQ2xp Y2soY29udHJvbC5pbmRpY2F0b3IpCisgICAgICAgICB2ZXJpZnkoY29udHJvbC5hY3RpdmVGb2N1 cykKKyAgICAgfQorKworKyAgICBDb21wb25lbnQgeworKyAgICAgICAgaWQ6IGRlbGV0aW9uT3Jk ZXIxCisrICAgICAgICBJdGVtIHsKKysgICAgICAgICAgICBJbWFnZSB7IGlkOiBpbm5lckltYWdl IH0KKysgICAgICAgICAgICBTd2l0Y2ggeyBpbmRpY2F0b3I6IGlubmVySW1hZ2UgfQorKyAgICAg ICAgfQorKyAgICB9CisrCisrICAgIENvbXBvbmVudCB7CisrICAgICAgICBpZDogZGVsZXRpb25P cmRlcjIKKysgICAgICAgIEl0ZW0geworKyAgICAgICAgICAgIFN3aXRjaCB7IGluZGljYXRvcjog aW5uZXJJbWFnZSB9CisrICAgICAgICAgICAgSW1hZ2UgeyBpZDogaW5uZXJJbWFnZSB9CisrICAg ICAgICB9CisrICAgIH0KKysKKysgICAgZnVuY3Rpb24gdGVzdF9kZWxldGlvbk9yZGVyKCkgewor KyAgICAgICAgdmFyIGNvbnRyb2wxID0gY3JlYXRlVGVtcG9yYXJ5T2JqZWN0KGRlbGV0aW9uT3Jk ZXIxLCB0ZXN0Q2FzZSkKKysgICAgICAgIHZlcmlmeShjb250cm9sMSkKKysgICAgICAgIHZhciBj b250cm9sMiA9IGNyZWF0ZVRlbXBvcmFyeU9iamVjdChkZWxldGlvbk9yZGVyMiwgdGVzdENhc2Up CisrICAgICAgICB2ZXJpZnkoY29udHJvbDIpCisrICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvcXRx dWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL2RhdGEvcmVsZWFzZUFmdGVyRXhp dFRyYW5zaXRpb24ucW1sIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVw L2RhdGEvcmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24ucW1sCituZXcgZmlsZSBtb2RlIDEwMDY0 NAoraW5kZXggMDAwMDAwMDAwLi45ZTQ1OThiOWYKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0cXVp Y2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC9kYXRhL3JlbGVhc2VBZnRlckV4aXRU cmFuc2l0aW9uLnFtbAorQEAgLTAsMCArMSw3OCBAQAorKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisr KioKKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRh Y3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSB0ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorKyoqCisrKiogJFFUX0JF R0lOX0xJQ0VOU0U6QlNEJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExpY2Vu c2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZp bGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1l bnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4g YWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdy ZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJt cworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRp b25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0 IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBCU0QgTGljZW5zZSBVc2Fn ZQorKyoqIEFsdGVybmF0aXZlbHksIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEJTRCBsaWNlbnNlCisrKiogYXMgZm9sbG93czoKKysqKgorKyoqICJSZWRpc3Ry aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv dXQKKysqKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnMgYXJlCisrKiogbWV0OgorKyoqICAgKiBSZWRpc3RyaWJ1dGlvbnMg b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyoqICAgICBu b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt ZXIuCisrKiogICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrKiogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyoqICAgICB0aGUgZG9jdW1l bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisrKiogICAg IGRpc3RyaWJ1dGlvbi4KKysqKiAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBUaGUgUXQgQ29tcGFu eSBMdGQgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKysqKiAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1 c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisrKiogICAgIGZyb20g dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K KysqKgorKyoqCisrKiogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworKyoqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisrKiogTElNSVRFRCBUTywg VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S CisrKiogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI QUxMIFRIRSBDT1BZUklHSFQKKysqKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysqKiBTUEVDSUFMLCBFWEVNUExB UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisrKiogTElN SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T UyBPRiBVU0UsCisrKiogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisrKiogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKyoqIChJTkNMVURJ TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF IFVTRQorKyoqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC SUxJVFkgT0YgU1VDSCBEQU1BR0UuIgorKyoqCisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisr KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKysKKytpbXBvcnQgUXRRdWljayAyLjE1CisraW1wb3J0IFF0 UXVpY2suQ29udHJvbHMgMi4xNQorKworK0FwcGxpY2F0aW9uV2luZG93IHsKKysgICAgaWQ6IHdp bmRvdworKyAgICB3aWR0aDogNDAwCisrICAgIGhlaWdodDogNDAwCisrICAgIHRpdGxlOiAicmVs ZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24iCisrCisrICAgIHByb3BlcnR5IGFsaWFzIHBvcHVwOiBw b3B1cAorKyAgICBwcm9wZXJ0eSBhbGlhcyBtb2RhbFBvcHVwOiBtb2RhbFBvcHVwCisrCisrICAg IFBvcHVwIHsKKysgICAgICAgIGlkOiBwb3B1cAorKyAgICAgICAgeTogcGFyZW50LmhlaWdodCAt IGhlaWdodAorKyAgICAgICAgd2lkdGg6IDUwCisrICAgICAgICBoZWlnaHQ6IDUwCisrICAgIH0K KysKKysgICAgUG9wdXAgeworKyAgICAgICAgaWQ6IG1vZGFsUG9wdXAKKysgICAgICAgIG1vZGFs OiB0cnVlCisrICAgICAgICB5OiBwYXJlbnQuaGVpZ2h0IC0gaGVpZ2h0CisrICAgICAgICB3aWR0 aDogNTAKKysgICAgICAgIGhlaWdodDogNTAKKysgICAgICAgIGV4aXQ6ICBUcmFuc2l0aW9uIHsg UGF1c2VBbmltYXRpb24geyBkdXJhdGlvbjogMTAwIH0gfQorKyAgICB9CisrfQorZGlmZiAtLWdp dCBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC90c3RfcXF1aWNrcG9w dXAuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL3RzdF9xcXVp Y2twb3B1cC5jcHAKK2luZGV4IDU0OTUyZDEyOC4uM2Q1MGUyZGQ0IDEwMDY0NAorLS0tIGEvcXRx dWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL3RzdF9xcXVpY2twb3B1cC5jcHAK KysrKyBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC90c3RfcXF1aWNr cG9wdXAuY3BwCitAQCAtMTAwLDYgKzEwMCw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQg aW52aXNpYmxlVG9vbFRpcE9wZW4oKTsKKyAgICAgdm9pZCBjZW50ZXJJbk92ZXJsYXlXaXRoaW5T dGFja1ZpZXdJdGVtKCk7CisgICAgIHZvaWQgZGVzdHJveUR1cmluZ0V4aXRUcmFuc2l0aW9uKCk7 CisrICAgIHZvaWQgcmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24oKTsKKyB9OworIAorIHZvaWQg dHN0X1FRdWlja1BvcHVwOjppbml0VGVzdENhc2UoKQorQEAgLTE1NzUsNiArMTU3NiwzNCBAQCB2 b2lkIHRzdF9RUXVpY2tQb3B1cDo6ZGVzdHJveUR1cmluZ0V4aXRUcmFuc2l0aW9uKCkKKyAgICAg UVZFUklGWSghYnV0dG9uLT5pc0Rvd24oKSk7CisgfQorIAorK3ZvaWQgdHN0X1FRdWlja1BvcHVw OjpyZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbigpCisreworKyAgICBRUXVpY2tBcHBsaWNhdGlv bkhlbHBlciBoZWxwZXIodGhpcywgInJlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uLnFtbCIpOwor KyAgICBRVkVSSUZZMihoZWxwZXIucmVhZHksIGhlbHBlci5mYWlsdXJlTWVzc2FnZSgpKTsKKysK KysgICAgUVF1aWNrV2luZG93ICp3aW5kb3cgPSBoZWxwZXIud2luZG93OworKyAgICB3aW5kb3ct PnNob3coKTsKKysgICAgUVZFUklGWShRVGVzdDo6cVdhaXRGb3JXaW5kb3dBY3RpdmUod2luZG93 KSk7CisrCisrICAgIFFRdWlja092ZXJsYXkgKm92ZXJsYXkgPSBRUXVpY2tPdmVybGF5OjpvdmVy bGF5KHdpbmRvdyk7CisrICAgIFFRdWlja1BvcHVwICptb2RhbFBvcHVwID0gd2luZG93LT5wcm9w ZXJ0eSgibW9kYWxQb3B1cCIpLnZhbHVlPFFRdWlja1BvcHVwICo+KCk7CisrICAgIFFRdWlja1Bv cHVwICpwb3B1cCA9IHdpbmRvdy0+cHJvcGVydHkoInBvcHVwIikudmFsdWU8UVF1aWNrUG9wdXAg Kj4oKTsKKysKKysgICAgbW9kYWxQb3B1cC0+b3BlbigpOworKyAgICBRVFJZX1ZFUklGWShtb2Rh bFBvcHVwLT5pc09wZW5lZCgpKTsKKysKKysgICAgUVRlc3Q6Om1vdXNlUHJlc3Mod2luZG93LCBR dDo6TGVmdEJ1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIsIFFQb2ludCgxLCAxKSk7CisrICAgIC8vIHdh aXQgdW50aWwgdGhlIHRyYW5zaXRpb24gaXMgZmluaXNoZWQgYW5kIHRoZSBvdmVybGF5IGhpZGVz IGl0c2VsZgorKyAgICBRVFJZX1ZFUklGWSghb3ZlcmxheS0+aXNWaXNpYmxlKCkpOworKyAgICBR VGVzdDo6bW91c2VSZWxlYXNlKHdpbmRvdywgUXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlmaWVy LCBRUG9pbnQoMSwgMSkpOworKworKyAgICBwb3B1cC0+b3BlbigpOworKyAgICBRVFJZX1ZFUklG WShwb3B1cC0+aXNPcGVuZWQoKSk7CisrICAgIFFUZXN0Ojptb3VzZUNsaWNrKHdpbmRvdywgUXQ6 OkxlZnRCdXR0b24sIFF0OjpOb01vZGlmaWVyLCBRUG9pbnQoMSwgMSkpOworKyAgICBRVFJZX1ZF UklGWSghcG9wdXAtPmlzT3BlbmVkKCkpOworK30KKysKKysKKyBRVEVTVF9RVUlDS0NPTlRST0xT X01BSU4odHN0X1FRdWlja1BvcHVwKQorIAorICNpbmNsdWRlICJ0c3RfcXF1aWNrcG9wdXAubW9j IgorU3VibW9kdWxlIHF0c2NyaXB0IDViZTk1Zjk2Li4uNGQ4ZTRiZDIgKGNvbW1pdHMgbm90IHBy ZXNlbnQpCitTdWJtb2R1bGUgcXRzcGVlY2ggMTdmYzlmZGUuLjI1NTg0NWUyOgorZGlmZiAtLWdp dCBhL3F0c3BlZWNoL3NyYy9wbHVnaW5zL3R0cy9zcGVlY2hkaXNwYXRjaGVyL3F0ZXh0dG9zcGVl Y2hfc3BlZWNoZC5jcHAgYi9xdHNwZWVjaC9zcmMvcGx1Z2lucy90dHMvc3BlZWNoZGlzcGF0Y2hl ci9xdGV4dHRvc3BlZWNoX3NwZWVjaGQuY3BwCitpbmRleCA2ZWI3NGI4Li5iY2M3ZGQxIDEwMDY0 NAorLS0tIGEvcXRzcGVlY2gvc3JjL3BsdWdpbnMvdHRzL3NwZWVjaGRpc3BhdGNoZXIvcXRleHR0 b3NwZWVjaF9zcGVlY2hkLmNwcAorKysrIGIvcXRzcGVlY2gvc3JjL3BsdWdpbnMvdHRzL3NwZWVj aGRpc3BhdGNoZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hkLmNwcAorQEAgLTM1Nyw3ICszNTcsOSBA QCBRVmVjdG9yPFFMb2NhbGU+IFFUZXh0VG9TcGVlY2hFbmdpbmVTcGVlY2hkOjphdmFpbGFibGVM b2NhbGVzKCkgY29uc3QKKyAKKyBRVmVjdG9yPFFWb2ljZT4gUVRleHRUb1NwZWVjaEVuZ2luZVNw ZWVjaGQ6OmF2YWlsYWJsZVZvaWNlcygpIGNvbnN0CisgeworLSAgICByZXR1cm4gbV92b2ljZXMu dmFsdWVzKG1fY3VycmVudExvY2FsZS5uYW1lKCkpLnRvVmVjdG9yKCk7CisrICAgIFFMaXN0PFFW b2ljZT4gcmVzdWx0TGlzdCA9IG1fdm9pY2VzLnZhbHVlcyhtX2N1cnJlbnRMb2NhbGUubmFtZSgp KTsKKysgICAgc3RkOjpyZXZlcnNlKHJlc3VsdExpc3QuYmVnaW4oKSwgcmVzdWx0TGlzdC5lbmQo KSk7CisrICAgIHJldHVybiByZXN1bHRMaXN0LnRvVmVjdG9yKCk7CisgfQorIAorIC8vIFdlIGhh dmUgbm8gd2F5IG9mIGtub3dpbmcgb3VyIG93biBjbGllbnRfaWQgc2luY2Ugc3BlZWNoLWRpc3Bh dGNoZXIgc2VlbXMgdG8gYmUgaW5jb21wbGV0ZQorU3VibW9kdWxlIHF0c3ZnIDBjMDU3ODBlLi5h N2EwZjI0OToKK2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvc3Zn L3Fzdmdpb2hhbmRsZXIuY3BwIGIvcXRzdmcvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3N2Zy9x c3ZnaW9oYW5kbGVyLmNwcAoraW5kZXggNTYxZTc3ZS4uMTJlMDU3NCAxMDA2NDQKKy0tLSBhL3F0 c3ZnL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcvcXN2Z2lvaGFuZGxlci5jcHAKKysrKyBi L3F0c3ZnL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcvcXN2Z2lvaGFuZGxlci5jcHAKK0BA IC0xOTEsNiArMTkxLDggQEAgYm9vbCBRU3ZnSU9IYW5kbGVyOjpyZWFkKFFJbWFnZSAqaW1hZ2Up CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgaWYgKCFmaW5hbFNpemUuaXNF bXB0eSgpKSB7CisrICAgICAgICAgICAgaWYgKHFNYXgoZmluYWxTaXplLndpZHRoKCksIGZpbmFs U2l6ZS5oZWlnaHQoKSkgPiAweGZmZmYpCisrICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsg Ly8gQXNzdW1lIGNvcnJ1cHRlZCBmaWxlCisgICAgICAgICAgICAgaW1hZ2UtPmZpbGwoZC0+YmFj a0NvbG9yLnJnYmEoKSk7CisgICAgICAgICAgICAgUVBhaW50ZXIgcChpbWFnZSk7CisgICAgICAg ICAgICAgZC0+ci5yZW5kZXIoJnAsIGJvdW5kcyk7CitkaWZmIC0tZ2l0IGEvcXRzdmcvc3JjL3N2 Zy9xc3ZnaGFuZGxlci5jcHAgYi9xdHN2Zy9zcmMvc3ZnL3FzdmdoYW5kbGVyLmNwcAoraW5kZXgg YTVmODc3Zi4uOGRkYTU2MyAxMDA2NDQKKy0tLSBhL3F0c3ZnL3NyYy9zdmcvcXN2Z2hhbmRsZXIu Y3BwCisrKysgYi9xdHN2Zy9zcmMvc3ZnL3FzdmdoYW5kbGVyLmNwcAorQEAgLTEzOTMsOSArMTM5 MywxMCBAQCBzdGF0aWMgdm9pZCBwYXJzZUZvbnQoUVN2Z05vZGUgKm5vZGUsCisgICAgICAgICBj YXNlIEZvbnRTaXplTm9uZToKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGNhc2UgRm9u dFNpemVWYWx1ZTogeworLSAgICAgICAgICAgIFFTdmdIYW5kbGVyOjpMZW5ndGhUeXBlIGR1bW15 OyAvLyBzaG91bGQgYWx3YXlzIGJlIHBpeGVsIHNpemUKKy0gICAgICAgICAgICBmb250U3R5bGUt PnNldFNpemUocU1pbihwYXJzZUxlbmd0aChhdHRyaWJ1dGVzLmZvbnRTaXplLCBkdW1teSwgaGFu ZGxlciksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXJlYWwoMHhmZmZm KSkpOworKyAgICAgICAgICAgIFFTdmdIYW5kbGVyOjpMZW5ndGhUeXBlIHR5cGU7CisrICAgICAg ICAgICAgcXJlYWwgZnMgPSBwYXJzZUxlbmd0aChhdHRyaWJ1dGVzLmZvbnRTaXplLCB0eXBlLCBo YW5kbGVyKTsKKysgICAgICAgICAgICBmcyA9IGNvbnZlcnRUb1BpeGVscyhmcywgdHJ1ZSwgdHlw ZSk7CisrICAgICAgICAgICAgZm9udFN0eWxlLT5zZXRTaXplKHFNaW4oZnMsIHFyZWFsKDB4ZmZm ZikpKTsKKyAgICAgICAgIH0KKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGRlZmF1bHQ6 CitAQCAtMjUxMyw2ICsyNTE0LDggQEAgc3RhdGljIGJvb2wgcGFyc2VBbmltYXRlVHJhbnNmb3Jt Tm9kZShRU3ZnTm9kZSAqcGFyZW50LAorICAgICAgICAgICAgICsrczsKKyAgICAgICAgIH0KKyAg ICAgfQorKyAgICBpZiAodmFscy5jb3VudCgpICUgMyAhPSAwKQorKyAgICAgICAgcmV0dXJuIGZh bHNlOworIAorICAgICBib29sIG9rID0gdHJ1ZTsKKyAgICAgaW50IGJlZ2luID0gcGFyc2VDbG9j a1ZhbHVlKGJlZ2luU3RyLCAmb2spOworQEAgLTI1NzYsNiArMjU3OSw4IEBAIHN0YXRpYyBRU3Zn Tm9kZSAqY3JlYXRlQ2lyY2xlTm9kZShRU3ZnTm9kZSAqcGFyZW50LAorICAgICBxcmVhbCBuY3gg PSB0b0RvdWJsZShjeCk7CisgICAgIHFyZWFsIG5jeSA9IHRvRG91YmxlKGN5KTsKKyAgICAgcXJl YWwgbnIgID0gdG9Eb3VibGUocik7CisrICAgIGlmIChuciA8IDAuMCkKKysgICAgICAgIHJldHVy biBudWxscHRyOworIAorICAgICBRUmVjdEYgcmVjdChuY3gtbnIsIG5jeS1uciwgbnIqMiwgbnIq Mik7CisgICAgIFFTdmdOb2RlICpjaXJjbGUgPSBuZXcgUVN2Z0NpcmNsZShwYXJlbnQsIHJlY3Qp OworQEAgLTMwNDYsMTUgKzMwNTEsMTYgQEAgc3RhdGljIFFTdmdTdHlsZVByb3BlcnR5ICpjcmVh dGVSYWRpYWxHcmFkaWVudE5vZGUoUVN2Z05vZGUgKm5vZGUsCisgCisgICAgIHFyZWFsIG5jeCA9 IDAuNTsKKyAgICAgcXJlYWwgbmN5ID0gMC41OworLSAgICBxcmVhbCBuciAgPSAwLjU7CisgICAg IGlmICghY3guaXNFbXB0eSgpKQorICAgICAgICAgbmN4ID0gdG9Eb3VibGUoY3gpOworICAgICBp ZiAoIWN5LmlzRW1wdHkoKSkKKyAgICAgICAgIG5jeSA9IHRvRG91YmxlKGN5KTsKKysKKysgICAg cXJlYWwgbnIgPSAwLjA7CisgICAgIGlmICghci5pc0VtcHR5KCkpCisgICAgICAgICBuciA9IHRv RG91YmxlKHIpOworLSAgICBpZiAobnIgPCAwLjUpCistICAgICAgICBuciA9IDAuNTsKKysgICAg aWYgKG5yIDw9IDAuMCkKKysgICAgICAgIHJldHVybiBudWxscHRyOworIAorICAgICBxcmVhbCBu ZnggPSBuY3g7CisgICAgIGlmICghZnguaXNFbXB0eSgpKQorQEAgLTMzNTAsNyArMzM1Niw5IEBA IHN0YXRpYyBRU3ZnTm9kZSAqY3JlYXRlVGV4dE5vZGUoUVN2Z05vZGUgKnBhcmVudCwKKyAgICAg Ly8jIyMgZWRpdGFibGUgYW5kIHJvdGF0ZSBub3QgaGFuZGxlZAorICAgICBRU3ZnSGFuZGxlcjo6 TGVuZ3RoVHlwZSB0eXBlOworICAgICBxcmVhbCBueCA9IHBhcnNlTGVuZ3RoKHgsIHR5cGUsIGhh bmRsZXIpOworKyAgICBueCA9IGNvbnZlcnRUb1BpeGVscyhueCwgdHJ1ZSwgdHlwZSk7CisgICAg IHFyZWFsIG55ID0gcGFyc2VMZW5ndGgoeSwgdHlwZSwgaGFuZGxlcik7CisrICAgIG55ID0gY29u dmVydFRvUGl4ZWxzKG55LCB0cnVlLCB0eXBlKTsKKyAKKyAgICAgUVN2Z05vZGUgKnRleHQgPSBu ZXcgUVN2Z1RleHQocGFyZW50LCBRUG9pbnRGKG54LCBueSkpOworICAgICByZXR1cm4gdGV4dDsK K0BAIC0zNjkxLDkgKzM2OTksNyBAQCB2b2lkIFFTdmdIYW5kbGVyOjpwYXJzZSgpCisgICAgICAg ICBjYXNlIFFYbWxTdHJlYW1SZWFkZXI6OkVuZEVsZW1lbnQ6CisgICAgICAgICAgICAgZW5kRWxl bWVudCh4bWwtPm5hbWUoKSk7CisgICAgICAgICAgICAgKytyZW1haW5pbmdVbmZpbmlzaGVkRWxl bWVudHM7CistICAgICAgICAgICAgLy8gaWYgd2UgYXJlIHVzaW5nIHNvbWVib2R5IGVsc2UncyBx eG1sc3RyZWFtcmVhZGVyCistICAgICAgICAgICAgLy8gd2Ugc2hvdWxkIG5vdCByZWFkIHVudGls IHRoZSBlbmQgb2YgdGhlIHN0cmVhbQorLSAgICAgICAgICAgIGRvbmUgPSAhbV9vd25zUmVhZGVy ICYmICh4bWwtPm5hbWUoKSA9PSBRTGF0aW4xU3RyaW5nKCJzdmciKSk7CisrICAgICAgICAgICAg ZG9uZSA9ICh4bWwtPm5hbWUoKSA9PSBRTGF0aW4xU3RyaW5nKCJzdmciKSk7CisgICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgICBjYXNlIFFYbWxTdHJlYW1SZWFkZXI6OkNoYXJhY3RlcnM6Cisg ICAgICAgICAgICAgY2hhcmFjdGVycyh4bWwtPnRleHQoKSk7CitkaWZmIC0tZ2l0IGEvcXRzdmcv c3JjL3N2Zy9xc3Znc3RydWN0dXJlLmNwcCBiL3F0c3ZnL3NyYy9zdmcvcXN2Z3N0cnVjdHVyZS5j cHAKK2luZGV4IGI4OTYwOGIuLjg5YzllNGUgMTAwNjQ0CistLS0gYS9xdHN2Zy9zcmMvc3ZnL3Fz dmdzdHJ1Y3R1cmUuY3BwCisrKysgYi9xdHN2Zy9zcmMvc3ZnL3FzdmdzdHJ1Y3R1cmUuY3BwCitA QCAtMjU1LDkgKzI1NSwxMyBAQCBpbmxpbmUgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRTdmdGZWF0 dXJlKGNvbnN0IFFTdHJpbmcgJnN0cikKKyAgICAgfTsKKyAKKyAgICAgaWYgKHN0ci5sZW5ndGgo KSA8PSBNQVhfV09SRF9MRU5HVEggJiYgc3RyLmxlbmd0aCgpID49IE1JTl9XT1JEX0xFTkdUSCkg eworKyAgICAgICAgY29uc3QgY2hhcjE2X3QgdW5pY29kZTQ0ID0gc3RyLmF0KDQ0KS51bmljb2Rl KCk7CisrICAgICAgICBjb25zdCBjaGFyMTZfdCB1bmljb2RlNDUgPSBzdHIuYXQoNDUpLnVuaWNv ZGUoKTsKKysgICAgICAgIGlmICh1bmljb2RlNDQgPj0gc2l6ZW9mKGFzc29fdmFsdWVzKSB8fCB1 bmljb2RlNDUgPj0gc2l6ZW9mKGFzc29fdmFsdWVzKSkKKysgICAgICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgICAgICBjb25zdCBpbnQga2V5ID0gc3RyLmxlbmd0aCgpCistICAgICAgICAgICAg ICAgICAgICAgICAgKyBhc3NvX3ZhbHVlc1tzdHIuYXQoNDUpLnVuaWNvZGUoKV0KKy0gICAgICAg ICAgICAgICAgICAgICAgICArIGFzc29fdmFsdWVzW3N0ci5hdCg0NCkudW5pY29kZSgpXTsKKysg ICAgICAgICAgICAgICAgICAgICAgICArIGFzc29fdmFsdWVzW3VuaWNvZGU0NV0KKysgICAgICAg ICAgICAgICAgICAgICAgICArIGFzc29fdmFsdWVzW3VuaWNvZGU0NF07CisgICAgICAgICBpZiAo a2V5IDw9IE1BWF9IQVNIX1ZBTFVFICYmIGtleSA+PSAwKQorICAgICAgICAgICAgIHJldHVybiBz dHIgPT0gUUxhdGluMVN0cmluZyh3b3JkbGlzdFtrZXldKTsKKyAgICAgfQorZGlmZiAtLWdpdCBh L3F0c3ZnL3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAgYi9xdHN2Zy9zcmMvc3ZnL3Fzdmd0 aW55ZG9jdW1lbnQuY3BwCitpbmRleCA2M2QwNzk3Li4xOWU3MTU0IDEwMDY0NAorLS0tIGEvcXRz dmcvc3JjL3N2Zy9xc3ZndGlueWRvY3VtZW50LmNwcAorKysrIGIvcXRzdmcvc3JjL3N2Zy9xc3Zn dGlueWRvY3VtZW50LmNwcAorQEAgLTQzMyw4ICs0MzMsMTYgQEAgdm9pZCBRU3ZnVGlueURvY3Vt ZW50OjpkcmF3KFFQYWludGVyICpwLCBRU3ZnRXh0cmFTdGF0ZXMgJikKKyAgICAgZHJhdyhwKTsK KyB9CisgCisrc3RhdGljIGJvb2wgaXNWYWxpZE1hdHJpeChjb25zdCBRVHJhbnNmb3JtICZ0cmFu c2Zvcm0pCisreworKyAgICBxcmVhbCBkZXRlcm1pbmFudCA9IHRyYW5zZm9ybS5kZXRlcm1pbmFu dCgpOworKyAgICByZXR1cm4gcUlzRmluaXRlKGRldGVybWluYW50KTsKKyt9CisrCisgdm9pZCBR U3ZnVGlueURvY3VtZW50OjptYXBTb3VyY2VUb1RhcmdldChRUGFpbnRlciAqcCwgY29uc3QgUVJl Y3RGICZ0YXJnZXRSZWN0LCBjb25zdCBRUmVjdEYgJnNvdXJjZVJlY3QpCisgeworKyAgICBRVHJh bnNmb3JtIG9sZFRyYW5zZm9ybSA9IHAtPndvcmxkVHJhbnNmb3JtKCk7CisrCisgICAgIFFSZWN0 RiB0YXJnZXQgPSB0YXJnZXRSZWN0OworICAgICBpZiAodGFyZ2V0LmlzRW1wdHkoKSkgeworICAg ICAgICAgUVBhaW50RGV2aWNlICpkZXYgPSBwLT5kZXZpY2UoKTsKK0BAIC00ODcsNiArNDk1LDkg QEAgdm9pZCBRU3ZnVGlueURvY3VtZW50OjptYXBTb3VyY2VUb1RhcmdldChRUGFpbnRlciAqcCwg Y29uc3QgUVJlY3RGICZ0YXJnZXRSZWN0LAorICAgICAgICAgfQorICNlbmRpZgorICAgICB9Cisr CisrICAgIGlmICghaXNWYWxpZE1hdHJpeChwLT53b3JsZFRyYW5zZm9ybSgpKSkKKysgICAgICAg IHAtPnNldFdvcmxkVHJhbnNmb3JtKG9sZFRyYW5zZm9ybSk7CisgfQorIAorIFFSZWN0RiBRU3Zn VGlueURvY3VtZW50Ojpib3VuZHNPbkVsZW1lbnQoY29uc3QgUVN0cmluZyAmaWQpIGNvbnN0Citk aWZmIC0tZ2l0IGEvcXRzdmcvdGVzdHMvYXV0by9xc3ZncmVuZGVyZXIvdHN0X3FzdmdyZW5kZXJl ci5jcHAgYi9xdHN2Zy90ZXN0cy9hdXRvL3FzdmdyZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNw cAoraW5kZXggMzZjNzZlYy4uZGI3MWUwMiAxMDA2NDQKKy0tLSBhL3F0c3ZnL3Rlc3RzL2F1dG8v cXN2Z3JlbmRlcmVyL3RzdF9xc3ZncmVuZGVyZXIuY3BwCisrKysgYi9xdHN2Zy90ZXN0cy9hdXRv L3FzdmdyZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNwcAorQEAgLTg2LDYgKzg2LDggQEAgcHJp dmF0ZSBzbG90czoKKyAgICAgdm9pZCBvc3NfZnV6el8yMzczMSgpOworICAgICB2b2lkIG9zc19m dXp6XzI0MTMxKCk7CisgICAgIHZvaWQgb3NzX2Z1enpfMjQ3MzgoKTsKKysgICAgdm9pZCBpbGxl Z2FsQW5pbWF0ZVRyYW5zZm9ybV9kYXRhKCk7CisrICAgIHZvaWQgaWxsZWdhbEFuaW1hdGVUcmFu c2Zvcm0oKTsKKyAKKyAjaWZuZGVmIFFUX05PX0NPTVBSRVNTCisgICAgIHZvaWQgdGVzdEd6TG9h ZGluZygpOworQEAgLTE2NDYsNSArMTY0OCwyMiBAQCB2b2lkIHRzdF9RU3ZnUmVuZGVyZXI6Om9z c19mdXp6XzI0NzM4KCkKKyAgICAgUVN2Z1JlbmRlcmVyKCkubG9hZChRQnl0ZUFycmF5KCI8c3Zn PjxwYXRoIGQ9XCJhIDIgMWUtMjEyLi4uLi5cIj4iKSk7CisgfQorIAorK3ZvaWQgdHN0X1FTdmdS ZW5kZXJlcjo6aWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm1fZGF0YSgpCisreworKyAgICBRVGVzdDo6 YWRkQ29sdW1uPFFCeXRlQXJyYXk+KCJzdmciKTsKKysKKysgICAgUVRlc3Q6Om5ld1JvdygiY2Fz ZTEiKSA8PCBRQnl0ZUFycmF5KCI8c3ZnPjxhbmltYXRlVHJhbnNmb3JtIHR5cGU9XCJyb3RhdGVc IiBiZWdpbj1cIjFcIiBkdXI9XCIyXCIgdmFsdWVzPVwiOCwwLDUsMFwiPiIpOworKyAgICBRVGVz dDo6bmV3Um93KCJjYXNlMiIpIDw8IFFCeXRlQXJyYXkoIjxzdmc+PGFuaW1hdGVUcmFuc2Zvcm0g dHlwZT1cInJvdGF0ZVwiIGJlZ2luPVwiMVwiIGR1cj1cIjJcIiB2YWx1ZXM9XCIxLDJcIj4iKTsK KysgICAgUVRlc3Q6Om5ld1JvdygiY2FzZTMiKSA8PCBRQnl0ZUFycmF5KCI8c3ZnPjxhbmltYXRl VHJhbnNmb3JtIHR5cGU9XCJyb3RhdGVcIiBiZWdpbj1cIjFcIiBkdXI9XCIyXCIgZnJvbT1cIi4u IDUgMlwiIHRvPVwiZlwiPiIpOworKyAgICBRVGVzdDo6bmV3Um93KCJjYXNlNCIpIDw8IFFCeXRl QXJyYXkoIjxzdmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlwZT1cInNjYWxlXCIgYmVnaW49XCIxXCIg ZHVyPVwiMlwiIGJ5PVwiLS0sLi5cIj4iKTsKKyt9CisrCisrdm9pZCB0c3RfUVN2Z1JlbmRlcmVy OjppbGxlZ2FsQW5pbWF0ZVRyYW5zZm9ybSgpCisreworKyAgICBRRkVUQ0goUUJ5dGVBcnJheSwg c3ZnKTsKKysgICAgUVN2Z1JlbmRlcmVyIHJlbmRlcmVyOworKyAgICBRVkVSSUZZKCFyZW5kZXJl ci5sb2FkKHN2ZykpOyAvLyBhbHNvIHNob3VsZG4ndCBhc3NlcnQKKyt9CisrCisgUVRFU1RfTUFJ Tih0c3RfUVN2Z1JlbmRlcmVyKQorICNpbmNsdWRlICJ0c3RfcXN2Z3JlbmRlcmVyLm1vYyIKK1N1 Ym1vZHVsZSBxdHRvb2xzIDY5MTRmN2M4Li4wOTBlNTI2ZToKK2RpZmYgLS1naXQgYS9xdHRvb2xz L3NyYy9hc3Npc3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVscGdlbmVyYXRvci5jcHAgYi9xdHRvb2xz L3NyYy9hc3Npc3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVscGdlbmVyYXRvci5jcHAKK2luZGV4IGZl YWIxZTJkNS4uY2JmYjgyNTA3IDEwMDY0NAorLS0tIGEvcXR0b29scy9zcmMvYXNzaXN0YW50L3Fo ZWxwZ2VuZXJhdG9yL2hlbHBnZW5lcmF0b3IuY3BwCisrKysgYi9xdHRvb2xzL3NyYy9hc3Npc3Rh bnQvcWhlbHBnZW5lcmF0b3IvaGVscGdlbmVyYXRvci5jcHAKK0BAIC00NDUsNyArNDQ1LDkgQEAg Ym9vbCBIZWxwR2VuZXJhdG9yUHJpdmF0ZTo6aW5zZXJ0RmlsZXMoY29uc3QgUVN0cmluZ0xpc3Qg JmZpbGVzLCBjb25zdCBRU3RyaW5nICYKKyAgICAgaWYgKGZpbHRlclNldElkIDwgMCkKKyAgICAg ICAgIHJldHVybiBmYWxzZTsKKyAgICAgKytmaWx0ZXJTZXRJZDsKKy0gICAgZm9yIChpbnQgYXR0 SWQgOiBxQXNDb25zdChmaWx0ZXJBdHRzKSkgeworKyAgICBRTGlzdDxpbnQ+IGF0dFZhbHVlcyA9 IGZpbHRlckF0dHMudmFsdWVzKCk7CisrICAgIHN0ZDo6c29ydChhdHRWYWx1ZXMuYmVnaW4oKSwg YXR0VmFsdWVzLmVuZCgpKTsKKysgICAgZm9yIChpbnQgYXR0SWQgOiBxQXNDb25zdChhdHRWYWx1 ZXMpKSB7CisgICAgICAgICBtX3F1ZXJ5LT5wcmVwYXJlKFFMYXRpbjFTdHJpbmcoIklOU0VSVCBJ TlRPIEZpbGVBdHRyaWJ1dGVTZXRUYWJsZSAiCisgICAgICAgICAgICAgIlZBTFVFUyg/LCA/KSIp KTsKKyAgICAgICAgIG1fcXVlcnktPmJpbmRWYWx1ZSgwLCBmaWx0ZXJTZXRJZCk7CitTdWJtb2R1 bGUgcXR3YXlsYW5kIGRmYjAxMjljLi4yOTA0ZTFiMzoKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQv c3JjL2NsaWVudC9jb25maWd1cmUuanNvbiBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2NvbmZpZ3Vy ZS5qc29uCitpbmRleCAyZjQyNDU4MC4uMjkyMjIzNTcgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQv c3JjL2NsaWVudC9jb25maWd1cmUuanNvbgorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvY29u ZmlndXJlLmpzb24KK0BAIC0xNDksOCArMTQ5LDcgQEAKKyAgICAgICAgICAgICAgICAgICAgICIj ZW5kaWYiCisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICB9LAorLSAgICAgICAgICAg ICJsaWJzIjogIi1sZHJtIiwKKy0gICAgICAgICAgICAidXNlIjogImVnbCIKKysgICAgICAgICAg ICAidXNlIjogImRybSBlZ2wiCisgICAgICAgICB9LAorICAgICAgICAgInZ1bGthbi1zZXJ2ZXIt YnVmZmVyIjogeworICAgICAgICAgICAgICJsYWJlbCI6ICJWdWxrYW4gQnVmZmVyIFNoYXJpbmci LAorQEAgLTE2OCw3ICsxNjcsOCBAQAorICAgICAgICAgICAgICAgICAgICAgImV4cG9ydEFsbG9j SW5mby5oYW5kbGVUeXBlcyA9IFZLX0VYVEVSTkFMX01FTU9SWV9IQU5ETEVfVFlQRV9PUEFRVUVf RkRfQklUX0tIUjsiLAorICAgICAgICAgICAgICAgICAgICAgInJldHVybiAwOyIKKyAgICAgICAg ICAgICAgICAgXQorLSAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9LAorKyAgICAgICAgICAg ICJ1c2UiOiAid2F5bGFuZC1jbGllbnQiCisgICAgICAgICB9LAorICAgICAgICAgImVnbF8xXzUt d2F5bGFuZCI6IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAiRUdMIDEuNSB3aXRoIFdheWxhbmQg UGxhdGZvcm0iLAorQEAgLTE4Myw3ICsxODMsNyBAQAorICAgICAgICAgICAgICAgICAgICAgImVn bEdldFBsYXRmb3JtRGlzcGxheShFR0xfUExBVEZPUk1fV0FZTEFORF9FWFQsIChzdHJ1Y3Qgd2xf ZGlzcGxheSAqKShudWxscHRyKSwgbnVsbHB0cik7IgorICAgICAgICAgICAgICAgICBdCisgICAg ICAgICAgICAgfSwKKy0gICAgICAgICAgICAidXNlIjogImVnbCIKKysgICAgICAgICAgICAidXNl IjogImVnbCB3YXlsYW5kLWNsaWVudCIKKyAgICAgICAgIH0KKyAgICAgfSwKKyAKK2RpZmYgLS1n aXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24u Y3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9u LmNwcAoraW5kZXggMTI1YjFlMTkuLmVkY2NmZTYzIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmNwcAorKysrIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmNwcAorQEAgLTc0 LDcgKzc0LDEwIEBAIHZvaWQgUVdheWxhbmRDbGllbnRFeHRlbnNpb25Qcml2YXRlOjpoYW5kbGVS ZWdpc3RyeUdsb2JhbCh2b2lkICpkYXRhLCA6OndsX3JlZ2lzCisgdm9pZCBRV2F5bGFuZENsaWVu dEV4dGVuc2lvbjo6YWRkUmVnaXN0cnlMaXN0ZW5lcigpCisgeworICAgICBRX0QoUVdheWxhbmRD bGllbnRFeHRlbnNpb24pOworLSAgICBkLT53YXlsYW5kSW50ZWdyYXRpb24tPmRpc3BsYXkoKS0+ YWRkUmVnaXN0cnlMaXN0ZW5lcigmUVdheWxhbmRDbGllbnRFeHRlbnNpb25Qcml2YXRlOjpoYW5k bGVSZWdpc3RyeUdsb2JhbCwgdGhpcyk7CisrICAgIGlmICghZC0+cmVnaXN0ZXJlZCkgeworKyAg ICAgICAgZC0+d2F5bGFuZEludGVncmF0aW9uLT5kaXNwbGF5KCktPmFkZFJlZ2lzdHJ5TGlzdGVu ZXIoJlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZTo6aGFuZGxlUmVnaXN0cnlHbG9iYWws IHRoaXMpOworKyAgICAgICAgZC0+cmVnaXN0ZXJlZCA9IHRydWU7CisrICAgIH0KKyB9CisgCisg UVdheWxhbmRDbGllbnRFeHRlbnNpb246OlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKGNvbnN0IGlu dCB2ZXIpCitAQCAtODgsNiArOTEsMTMgQEAgUVdheWxhbmRDbGllbnRFeHRlbnNpb246OlFXYXls YW5kQ2xpZW50RXh0ZW5zaW9uKGNvbnN0IGludCB2ZXIpCisgICAgIFFNZXRhT2JqZWN0OjppbnZv a2VNZXRob2QodGhpcywgImFkZFJlZ2lzdHJ5TGlzdGVuZXIiLCBRdDo6UXVldWVkQ29ubmVjdGlv bik7CisgfQorIAorK1FXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjp+UVdheWxhbmRDbGllbnRFeHRl bnNpb24oKQorK3sKKysgICAgUV9EKFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKTsKKysgICAgaWYg KGQtPnJlZ2lzdGVyZWQgJiYgIVFDb3JlQXBwbGljYXRpb246OmNsb3NpbmdEb3duKCkpCisrICAg ICAgICBkLT53YXlsYW5kSW50ZWdyYXRpb24tPmRpc3BsYXkoKS0+cmVtb3ZlTGlzdGVuZXIoJlFX YXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZTo6aGFuZGxlUmVnaXN0cnlHbG9iYWwsIHRoaXMp OworK30KKysKKyBRdFdheWxhbmRDbGllbnQ6OlFXYXlsYW5kSW50ZWdyYXRpb24gKlFXYXlsYW5k Q2xpZW50RXh0ZW5zaW9uOjppbnRlZ3JhdGlvbigpIGNvbnN0CisgeworICAgICBRX0QoY29uc3Qg UVdheWxhbmRDbGllbnRFeHRlbnNpb24pOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5oIGIvcXR3YXlsYW5kL3NyYy9jbGll bnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmgKK2luZGV4IDk4MjcyZTU3Li41YmQy ODM5OCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNs aWVudGV4dGVuc2lvbi5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxh bmRjbGllbnRleHRlbnNpb24uaAorQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgUV9XQVlMQU5EX0NM SUVOVF9FWFBPUlQgUVdheWxhbmRDbGllbnRFeHRlbnNpb24gOiBwdWJsaWMgUU9iamVjdAorICAg ICBRX1BST1BFUlRZKGJvb2wgYWN0aXZlIFJFQUQgaXNBY3RpdmUgTk9USUZZIGFjdGl2ZUNoYW5n ZWQpCisgcHVibGljOgorICAgICBRV2F5bGFuZENsaWVudEV4dGVuc2lvbihjb25zdCBpbnQgdmVy c2lvbik7CisrICAgIH5RV2F5bGFuZENsaWVudEV4dGVuc2lvbigpOworIAorICAgICBRdFdheWxh bmRDbGllbnQ6OlFXYXlsYW5kSW50ZWdyYXRpb24gKmludGVncmF0aW9uKCkgY29uc3Q7CisgICAg IGludCB2ZXJzaW9uKCkgY29uc3Q7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQv Z2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50 L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbl9wLmgKK2luZGV4IDY5Y2M0NmEwLi45MDkx ZWZiZSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNs aWVudGV4dGVuc2lvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5 bGFuZGNsaWVudGV4dGVuc2lvbl9wLmgKK0BAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKKyAgICAg UXRXYXlsYW5kQ2xpZW50OjpRV2F5bGFuZEludGVncmF0aW9uICp3YXlsYW5kSW50ZWdyYXRpb24g PSBudWxscHRyOworICAgICBpbnQgdmVyc2lvbiA9IC0xOworICAgICBib29sIGFjdGl2ZSA9IGZh bHNlOworKyAgICBib29sIHJlZ2lzdGVyZWQgPSBmYWxzZTsKKyB9OworIAorIGNsYXNzIFFfV0FZ TEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uVGVtcGxhdGVQcml2YXRl IDogcHVibGljIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZQorZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZS5jcHAgYi9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2UuY3BwCitpbmRleCA3ZTJlMzMwOC4uZTNlNjBlZDUg MTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2UuY3Bw CisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2UuY3BwCitAQCAt NzIsNiArNzIsOCBAQCBRV2F5bGFuZERhdGFEZXZpY2U6OlFXYXlsYW5kRGF0YURldmljZShRV2F5 bGFuZERhdGFEZXZpY2VNYW5hZ2VyICptYW5hZ2VyLCBRV2F5bAorIAorIFFXYXlsYW5kRGF0YURl dmljZTo6flFXYXlsYW5kRGF0YURldmljZSgpCisgeworKyAgICBpZiAod2xfZGF0YV9kZXZpY2Vf Z2V0X3ZlcnNpb24ob2JqZWN0KCkpID49IFdMX0RBVEFfREVWSUNFX1JFTEVBU0VfU0lOQ0VfVkVS U0lPTikKKysgICAgICAgIHJlbGVhc2UoKTsKKyB9CisgCisgUVdheWxhbmREYXRhT2ZmZXIgKlFX YXlsYW5kRGF0YURldmljZTo6c2VsZWN0aW9uT2ZmZXIoKSBjb25zdAorQEAgLTExMCw3ICsxMTIs NyBAQCBRV2F5bGFuZERhdGFPZmZlciAqUVdheWxhbmREYXRhRGV2aWNlOjpkcmFnT2ZmZXIoKSBj b25zdAorICAgICByZXR1cm4gbV9kcmFnT2ZmZXIuZGF0YSgpOworIH0KKyAKKy1ib29sIFFXYXls YW5kRGF0YURldmljZTo6c3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURhdGEsIFFXYXlsYW5kV2lu ZG93ICppY29uKQorK2Jvb2wgUVdheWxhbmREYXRhRGV2aWNlOjpzdGFydERyYWcoUU1pbWVEYXRh ICptaW1lRGF0YSwgUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMsIFFXYXlsYW5kV2lu ZG93ICppY29uKQorIHsKKyAgICAgYXV0byAqc2VhdCA9IG1fZGlzcGxheS0+Y3VycmVudElucHV0 RGV2aWNlKCk7CisgICAgIGF1dG8gKm9yaWdpbiA9IHNlYXQtPnBvaW50ZXJGb2N1cygpOworQEAg LTEyMyw3ICsxMjUsMjggQEAgYm9vbCBRV2F5bGFuZERhdGFEZXZpY2U6OnN0YXJ0RHJhZyhRTWlt ZURhdGEgKm1pbWVEYXRhLCBRV2F5bGFuZFdpbmRvdyAqaWNvbikKKyAgICAgfQorIAorICAgICBt X2RyYWdTb3VyY2UucmVzZXQobmV3IFFXYXlsYW5kRGF0YVNvdXJjZShtX2Rpc3BsYXktPmRuZFNl bGVjdGlvbkhhbmRsZXIoKSwgbWltZURhdGEpKTsKKysKKysgICAgaWYgKHdsX2RhdGFfZGV2aWNl X2dldF92ZXJzaW9uKG9iamVjdCgpKSA+PSAzKQorKyAgICAgICAgbV9kcmFnU291cmNlLT5zZXRf YWN0aW9ucyhkcm9wQWN0aW9uc1RvV2woc3VwcG9ydGVkQWN0aW9ucykpOworKworICAgICBjb25u ZWN0KG1fZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5bGFuZERhdGFTb3VyY2U6OmNhbmNlbGxlZCwg dGhpcywgJlFXYXlsYW5kRGF0YURldmljZTo6ZHJhZ1NvdXJjZUNhbmNlbGxlZCk7CisrICAgIGNv bm5lY3QobV9kcmFnU291cmNlLmRhdGEoKSwgJlFXYXlsYW5kRGF0YVNvdXJjZTo6ZG5kUmVzcG9u c2VVcGRhdGVkLCB0aGlzLCBbdGhpc10oYm9vbCBhY2NlcHRlZCwgUXQ6OkRyb3BBY3Rpb24gYWN0 aW9uKSB7CisrICAgICAgICAgICAgYXV0byBkcmFnID0gc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFn ICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygp KTsKKysgICAgICAgICAgICAvLyBpbiBvbGQgdmVyc2lvbnMgZHJvcCBhY3Rpb24gaXMgbm90IHNl dCwgc28gd2UgZ3Vlc3MKKysgICAgICAgICAgICBpZiAod2xfZGF0YV9zb3VyY2VfZ2V0X3ZlcnNp b24obV9kcmFnU291cmNlLT5vYmplY3QoKSkgPCAzKSB7CisrICAgICAgICAgICAgICAgIGRyYWct PnNldFJlc3BvbnNlKGFjY2VwdGVkKTsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAg ICAgICAgICBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSByZXNwb25zZShhY2NlcHRlZCwgYWN0aW9u KTsKKysgICAgICAgICAgICAgICAgZHJhZy0+c2V0UmVzcG9uc2UocmVzcG9uc2UpOworKyAgICAg ICAgICAgIH0KKysgICAgfSk7CisrICAgIGNvbm5lY3QobV9kcmFnU291cmNlLmRhdGEoKSwgJlFX YXlsYW5kRGF0YVNvdXJjZTo6ZG5kRHJvcHBlZCwgdGhpcywgW10oYm9vbCBhY2NlcHRlZCwgUXQ6 OkRyb3BBY3Rpb24gYWN0aW9uKSB7CisrICAgICAgICBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSBy ZXNwb25zZShhY2NlcHRlZCwgYWN0aW9uKTsKKysgICAgICAgIHN0YXRpY19jYXN0PFFXYXlsYW5k RHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRy YWcoKSktPnNldERyb3BSZXNwb25zZShyZXNwb25zZSk7CisrICAgIH0pOworKyAgICBjb25uZWN0 KG1fZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5bGFuZERhdGFTb3VyY2U6OmZpbmlzaGVkLCB0aGlz LCBbXSgpIHsKKysgICAgICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGlj YXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSktPmZpbmlzaERyYWco KTsKKysgICAgfSk7CisgCisgICAgIHN0YXJ0X2RyYWcobV9kcmFnU291cmNlLT5vYmplY3QoKSwg b3JpZ2luLT53bFN1cmZhY2UoKSwgaWNvbi0+d2xTdXJmYWNlKCksIG1fZGlzcGxheS0+Y3VycmVu dElucHV0RGV2aWNlKCktPnNlcmlhbCgpKTsKKyAgICAgcmV0dXJuIHRydWU7CitAQCAtMTUyLDcg KzE3NSw3IEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9kcm9wKCkKKyAg ICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBkcmFnLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAg IH0gZWxzZSBpZiAobV9kcmFnT2ZmZXIpIHsKKyAgICAgICAgIGRyYWdEYXRhID0gbV9kcmFnT2Zm ZXItPm1pbWVEYXRhKCk7CistICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkNvcHlBY3Rp b24gfCBRdDo6TW92ZUFjdGlvbiB8IFF0OjpMaW5rQWN0aW9uOworKyAgICAgICAgc3VwcG9ydGVk QWN0aW9ucyA9IG1fZHJhZ09mZmVyLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0gZWxzZSB7 CisgICAgICAgICByZXR1cm47CisgICAgIH0KK0BAIC0xNjIsNyArMTg1LDExIEBAIHZvaWQgUVdh eWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9kcm9wKCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFH dWlBcHBsaWNhdGlvbjo6a2V5Ym9hcmRNb2RpZmllcnMoKSk7CisgCisgICAgIGlmIChkcmFnKSB7 CistICAgICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJp dmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5maW5pc2hEcmFnKHJlc3BvbnNl KTsKKysgICAgICAgIGF1dG8gZHJhZyA9ICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1 aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpOworKyAg ICAgICAgZHJhZy0+c2V0RHJvcFJlc3BvbnNlKHJlc3BvbnNlKTsKKysgICAgICAgIGRyYWctPmZp bmlzaERyYWcoKTsKKysgICAgfSBlbHNlIGlmIChtX2RyYWdPZmZlcikgeworKyAgICAgICAgbV9k cmFnT2ZmZXItPmZpbmlzaCgpOworICAgICB9CisgfQorIAorQEAgLTE4Niw3ICsyMTMsNyBAQCB2 b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfZW50ZXIodWludDMyX3Qgc2VyaWFs LCB3bF9zdXJmYWNlICpzdXJmYWNlLAorICAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IGRyYWct PnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfSBlbHNlIGlmIChtX2RyYWdPZmZlcikgeworICAg ICAgICAgZHJhZ0RhdGEgPSBtX2RyYWdPZmZlci0+bWltZURhdGEoKTsKKy0gICAgICAgIHN1cHBv cnRlZEFjdGlvbnMgPSBRdDo6Q29weUFjdGlvbiB8IFF0OjpNb3ZlQWN0aW9uIHwgUXQ6OkxpbmtB Y3Rpb247CisrICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gbV9kcmFnT2ZmZXItPnN1cHBvcnRl ZEFjdGlvbnMoKTsKKyAgICAgfQorIAorICAgICBjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25z ZSAmcmVzcG9uc2UgPSBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVEcmFnKG1fZHJhZ1dp bmRvdywgZHJhZ0RhdGEsIG1fZHJhZ1BvaW50LCBzdXBwb3J0ZWRBY3Rpb25zLAorQEAgLTE5Nywx MSArMjI0LDcgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX2VudGVyKHVp bnQzMl90IHNlcmlhbCwgd2xfc3VyZmFjZSAqc3VyZmFjZSwKKyAgICAgICAgIHN0YXRpY19jYXN0 PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0 aW9uKCktPmRyYWcoKSktPnNldFJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgfQorIAorLSAgICBp ZiAocmVzcG9uc2UuaXNBY2NlcHRlZCgpKSB7CistICAgICAgICB3bF9kYXRhX29mZmVyX2FjY2Vw dChtX2RyYWdPZmZlci0+b2JqZWN0KCksIG1fZW50ZXJTZXJpYWwsIG1fZHJhZ09mZmVyLT5maXJz dEZvcm1hdCgpLnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAg IHdsX2RhdGFfb2ZmZXJfYWNjZXB0KG1fZHJhZ09mZmVyLT5vYmplY3QoKSwgbV9lbnRlclNlcmlh bCwgbnVsbHB0cik7CistICAgIH0KKysgICAgc2VuZFJlc3BvbnNlKHN1cHBvcnRlZEFjdGlvbnMs IHJlc3BvbnNlKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNl X2xlYXZlKCkKK0BAIC0yMzUsMTAgKzI1OCwxMCBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6 ZGF0YV9kZXZpY2VfbW90aW9uKHVpbnQzMl90IHRpbWUsIHdsX2ZpeGVkX3QgeCwgd2xfZml4ZQor ICAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IGRyYWctPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAg ICAgfSBlbHNlIHsKKyAgICAgICAgIGRyYWdEYXRhID0gbV9kcmFnT2ZmZXItPm1pbWVEYXRhKCk7 CistICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkNvcHlBY3Rpb24gfCBRdDo6TW92ZUFj dGlvbiB8IFF0OjpMaW5rQWN0aW9uOworKyAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IG1fZHJh Z09mZmVyLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0KKyAKKy0gICAgUVBsYXRmb3JtRHJh Z1F0UmVzcG9uc2UgcmVzcG9uc2UgPSBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVEcmFn KG1fZHJhZ1dpbmRvdywgZHJhZ0RhdGEsIG1fZHJhZ1BvaW50LCBzdXBwb3J0ZWRBY3Rpb25zLAor KyAgICBjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSByZXNwb25zZSA9IFFXaW5kb3dTeXN0 ZW1JbnRlcmZhY2U6OmhhbmRsZURyYWcobV9kcmFnV2luZG93LCBkcmFnRGF0YSwgbV9kcmFnUG9p bnQsIHN1cHBvcnRlZEFjdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRR3VpQXBwbGljYXRpb246 Om1vdXNlQnV0dG9ucygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUd1aUFwcGxpY2F0aW9uOjprZXli b2FyZE1vZGlmaWVycygpKTsKKyAKK0BAIC0yNDYsMTEgKzI2OSw3IEBAIHZvaWQgUVdheWxhbmRE YXRhRGV2aWNlOjpkYXRhX2RldmljZV9tb3Rpb24odWludDMyX3QgdGltZSwgd2xfZml4ZWRfdCB4 LCB3bF9maXhlCisgICAgICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxp Y2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5zZXRSZXNwb25z ZShyZXNwb25zZSk7CisgICAgIH0KKyAKKy0gICAgaWYgKHJlc3BvbnNlLmlzQWNjZXB0ZWQoKSkg eworLSAgICAgICAgd2xfZGF0YV9vZmZlcl9hY2NlcHQobV9kcmFnT2ZmZXItPm9iamVjdCgpLCBt X2VudGVyU2VyaWFsLCBtX2RyYWdPZmZlci0+Zmlyc3RGb3JtYXQoKS50b1V0ZjgoKS5jb25zdERh dGEoKSk7CistICAgIH0gZWxzZSB7CistICAgICAgICB3bF9kYXRhX29mZmVyX2FjY2VwdChtX2Ry YWdPZmZlci0+b2JqZWN0KCksIG1fZW50ZXJTZXJpYWwsIG51bGxwdHIpOworLSAgICB9CisrICAg IHNlbmRSZXNwb25zZShzdXBwb3J0ZWRBY3Rpb25zLCByZXNwb25zZSk7CisgfQorICNlbmRpZiAv LyBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgCitAQCAtMjc3LDE0ICsyOTYsMTAgQEAgdm9pZCBR V2F5bGFuZERhdGFEZXZpY2U6OnNlbGVjdGlvblNvdXJjZUNhbmNlbGxlZCgpCisgI2lmIFFUX0NP TkZJRyhkcmFnYW5kZHJvcCkKKyB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZHJhZ1NvdXJjZUNh bmNlbGxlZCgpCisgeworKyAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxp Y2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5maW5pc2hEcmFn KCk7CisgICAgIG1fZHJhZ1NvdXJjZS5yZXNldCgpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kRGF0 YURldmljZTo6ZHJhZ1NvdXJjZVRhcmdldENoYW5nZWQoY29uc3QgUVN0cmluZyAmbWltZVR5cGUp CisteworLSAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJp dmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT51cGRhdGVUYXJnZXQobWltZVR5 cGUpOworLX0KKy0KKyBRUG9pbnQgUVdheWxhbmREYXRhRGV2aWNlOjpjYWxjdWxhdGVEcmFnUG9z aXRpb24oaW50IHgsIGludCB5LCBRV2luZG93ICp3bmQpIGNvbnN0CisgeworICAgICBRUG9pbnQg cG50KHdsX2ZpeGVkX3RvX2ludCh4KSwgd2xfZml4ZWRfdG9faW50KHkpKTsKK0BAIC0yOTcsNiAr MzEyLDMzIEBAIFFQb2ludCBRV2F5bGFuZERhdGFEZXZpY2U6OmNhbGN1bGF0ZURyYWdQb3NpdGlv bihpbnQgeCwgaW50IHksIFFXaW5kb3cgKnduZCkgY29uCisgICAgIH0KKyAgICAgcmV0dXJuIHBu dDsKKyB9CisrCisrdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OnNlbmRSZXNwb25zZShRdDo6RHJv cEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucywgY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2Ug JnJlc3BvbnNlKQorK3sKKysgICAgaWYgKHJlc3BvbnNlLmlzQWNjZXB0ZWQoKSkgeworKyAgICAg ICAgaWYgKHdsX2RhdGFfZGV2aWNlX2dldF92ZXJzaW9uKG9iamVjdCgpKSA+PSAzKQorKyAgICAg ICAgICAgIG1fZHJhZ09mZmVyLT5zZXRfYWN0aW9ucyhkcm9wQWN0aW9uc1RvV2woc3VwcG9ydGVk QWN0aW9ucyksIGRyb3BBY3Rpb25zVG9XbChyZXNwb25zZS5hY2NlcHRlZEFjdGlvbigpKSk7Cisr CisrICAgICAgICBtX2RyYWdPZmZlci0+YWNjZXB0KG1fZW50ZXJTZXJpYWwsIG1fZHJhZ09mZmVy LT5maXJzdEZvcm1hdCgpKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIG1fZHJhZ09mZmVyLT5h Y2NlcHQobV9lbnRlclNlcmlhbCwgUVN0cmluZygpKTsKKysgICAgfQorK30KKysKKytpbnQgUVdh eWxhbmREYXRhRGV2aWNlOjpkcm9wQWN0aW9uc1RvV2woUXQ6OkRyb3BBY3Rpb25zIGFjdGlvbnMp CisreworKworKyAgICBpbnQgd2xBY3Rpb25zID0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRf QUNUSU9OX05PTkU7CisrICAgIGlmIChhY3Rpb25zICYgUXQ6OkNvcHlBY3Rpb24pCisrICAgICAg ICB3bEFjdGlvbnMgfD0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX0NPUFk7Cisr ICAgIGlmIChhY3Rpb25zICYgKFF0OjpNb3ZlQWN0aW9uIHwgUXQ6OlRhcmdldE1vdmVBY3Rpb24p KQorKyAgICAgICAgd2xBY3Rpb25zIHw9IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElP Tl9NT1ZFOworKworKyAgICAvLyB3YXlsYW5kIGRvZXMgbm90IHN1cHBvcnQgTGlua0FjdGlvbiBh dCB0aGUgdGltZSBvZiB3cml0aW5nCisrICAgIHJldHVybiB3bEFjdGlvbnM7CisrfQorKworKwor ICNlbmRpZiAvLyBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgCisgfQorZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZV9wLmggYi9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VfcC5oCitpbmRleCAxNmMzYWQyOC4uODAxZGNjMmMg MTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VfcC5o CisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VfcC5oCitAQCAt NjQsNiArNjQsNyBAQCBRVF9SRVFVSVJFX0NPTkZJRyh3YXlsYW5kX2RhdGFkZXZpY2UpOworIFFU X0JFR0lOX05BTUVTUEFDRQorIAorIGNsYXNzIFFNaW1lRGF0YTsKKytjbGFzcyBRUGxhdGZvcm1E cmFnUXRSZXNwb25zZTsKKyBjbGFzcyBRV2luZG93OworIAorIG5hbWVzcGFjZSBRdFdheWxhbmRD bGllbnQgeworQEAgLTg5LDcgKzkwLDcgQEAgcHVibGljOgorIAorICNpZiBRVF9DT05GSUcoZHJh Z2FuZGRyb3ApCisgICAgIFFXYXlsYW5kRGF0YU9mZmVyICpkcmFnT2ZmZXIoKSBjb25zdDsKKy0g ICAgYm9vbCBzdGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0YSwgUVdheWxhbmRXaW5kb3cgKmlj b24pOworKyAgICBib29sIHN0YXJ0RHJhZyhRTWltZURhdGEgKm1pbWVEYXRhLCBRdDo6RHJvcEFj dGlvbnMgc3VwcG9ydGVkQWN0aW9ucywgUVdheWxhbmRXaW5kb3cgKmljb24pOworICAgICB2b2lk IGNhbmNlbERyYWcoKTsKKyAjZW5kaWYKKyAKK0BAIC0xMDksMTMgKzExMCwxNiBAQCBwcml2YXRl IFFfU0xPVFM6CisgCisgI2lmIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkKKyAgICAgdm9pZCBkcmFn U291cmNlQ2FuY2VsbGVkKCk7CistICAgIHZvaWQgZHJhZ1NvdXJjZVRhcmdldENoYW5nZWQoY29u c3QgUVN0cmluZyAmbWltZVR5cGUpOworICNlbmRpZgorIAorIHByaXZhdGU6CisgI2lmIFFUX0NP TkZJRyhkcmFnYW5kZHJvcCkKKyAgICAgUVBvaW50IGNhbGN1bGF0ZURyYWdQb3NpdGlvbihpbnQg eCwgaW50IHksIFFXaW5kb3cgKnduZCkgY29uc3Q7CisgI2VuZGlmCisrICAgIHZvaWQgc2VuZFJl c3BvbnNlKFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rpb25zLCBjb25zdCBRUGxhdGZvcm1E cmFnUXRSZXNwb25zZSAmcmVzcG9uc2UpOworKworKyAgICBzdGF0aWMgaW50IGRyb3BBY3Rpb25z VG9XbChRdDo6RHJvcEFjdGlvbnMgZHJvcEFjdGlvbnMpOworKworIAorICAgICBRV2F5bGFuZERp c3BsYXkgKm1fZGlzcGxheSA9IG51bGxwdHI7CisgICAgIFFXYXlsYW5kSW5wdXREZXZpY2UgKm1f aW5wdXREZXZpY2UgPSBudWxscHRyOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXIuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkYXRhZGV2aWNlbWFuYWdlci5jcHAKK2luZGV4IDM1ZDY3MzA3Li42ZGM0Zjc3ZiAxMDA2 NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXIu Y3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2Vy LmNwcAorQEAgLTUwLDggKzUwLDggQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgbmFtZXNwYWNl IFF0V2F5bGFuZENsaWVudCB7CisgCistUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcjo6UVdheWxh bmREYXRhRGV2aWNlTWFuYWdlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIHVpbnQzMl90IGlk KQorLSAgICA6IHdsX2RhdGFfZGV2aWNlX21hbmFnZXIoZGlzcGxheS0+d2xfcmVnaXN0cnkoKSwg aWQsIDEpCisrUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcjo6UVdheWxhbmREYXRhRGV2aWNlTWFu YWdlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIGludCB2ZXJzaW9uLCB1aW50MzJfdCBpZCkK KysgICAgOiB3bF9kYXRhX2RldmljZV9tYW5hZ2VyKGRpc3BsYXktPndsX3JlZ2lzdHJ5KCksIGlk LCBxTWluKHZlcnNpb24sIDMpKQorICAgICAsIG1fZGlzcGxheShkaXNwbGF5KQorIHsKKyAgICAg Ly8gQ3JlYXRlIHRyYW5zZmVyIGRldmljZXMgZm9yIGFsbCBpbnB1dCBkZXZpY2VzLgorZGlmZiAt LWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXJfcC5o IGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlcl9wLmgKK2lu ZGV4IGJkMDVjMGZiLi41MTBkOWJlNCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXJfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaAorQEAgLTY4LDcgKzY4LDcgQEAgY2xhc3Mg UVdheWxhbmRJbnB1dERldmljZTsKKyBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9SVCBRV2F5 bGFuZERhdGFEZXZpY2VNYW5hZ2VyIDogcHVibGljIFF0V2F5bGFuZDo6d2xfZGF0YV9kZXZpY2Vf bWFuYWdlcgorIHsKKyBwdWJsaWM6CistICAgIFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIoUVdh eWxhbmREaXNwbGF5ICpkaXNwbGF5LCB1aW50MzJfdCBpZCk7CisrICAgIFFXYXlsYW5kRGF0YURl dmljZU1hbmFnZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCBpbnQgdmVyc2lvbiwgdWludDMy X3QgaWQpOworICAgICB+UVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcigpIG92ZXJyaWRlOworIAor ICAgICBRV2F5bGFuZERhdGFEZXZpY2UgKmdldERhdGFEZXZpY2UoUVdheWxhbmRJbnB1dERldmlj ZSAqaW5wdXREZXZpY2UpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZGF0YW9mZmVyLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVy LmNwcAoraW5kZXggMjI5N2U4YTEuLmZlMGVhOGM5IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXIuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRhdGFvZmZlci5jcHAKK0BAIC04Miw2ICs4MiwxNSBAQCBRTWltZURhdGEgKlFX YXlsYW5kRGF0YU9mZmVyOjptaW1lRGF0YSgpCisgICAgIHJldHVybiBtX21pbWVEYXRhLmRhdGEo KTsKKyB9CisgCisrUXQ6OkRyb3BBY3Rpb25zIFFXYXlsYW5kRGF0YU9mZmVyOjpzdXBwb3J0ZWRB Y3Rpb25zKCkgY29uc3QKKyt7CisrICAgIGlmICh3bF9kYXRhX29mZmVyX2dldF92ZXJzaW9uKGNv bnN0X2Nhc3Q8Ojp3bF9kYXRhX29mZmVyKj4ob2JqZWN0KCkpKSA8IDMpIHsKKysgICAgICAgIHJl dHVybiBRdDo6TW92ZUFjdGlvbiB8IFF0OjpDb3B5QWN0aW9uOworKyAgICB9CisrCisrICAgIHJl dHVybiBtX3N1cHBvcnRlZEFjdGlvbnM7CisrfQorKworIHZvaWQgUVdheWxhbmREYXRhT2ZmZXI6 OnN0YXJ0UmVjZWl2aW5nKGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlLCBpbnQgZmQpCisgeworICAg ICByZWNlaXZlKG1pbWVUeXBlLCBmZCk7CitAQCAtOTMsNiArMTAyLDIyIEBAIHZvaWQgUVdheWxh bmREYXRhT2ZmZXI6OmRhdGFfb2ZmZXJfb2ZmZXIoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKQor ICAgICBtX21pbWVEYXRhLT5hcHBlbmRGb3JtYXQobWltZV90eXBlKTsKKyB9CisgCisrdm9pZCBR V2F5bGFuZERhdGFPZmZlcjo6ZGF0YV9vZmZlcl9hY3Rpb24odWludDMyX3QgZG5kX2FjdGlvbikK Kyt7CisrICAgIFFfVU5VU0VEKGRuZF9hY3Rpb24pOworKyAgICAvLyBUaGlzIGlzIHRoZSBjb21w b3NpdG9yIHRlbGxpbmcgdGhlIGRyYWcgdGFyZ2V0IHdoYXQgYWN0aW9uIGl0IHNob3VsZCBwZXJm b3JtCisrICAgIC8vIEl0IGRvZXMgbm90IG1hcCBuaWNlbHkgaW50byBRdCBmaW5hbCBkcm9wIHNl bWFudGljcywgb3RoZXIgdGhhbiBwcmV0ZW5kaW5nIHRoZXJlIGlzIG9ubHkgb25lIHN1cHBvcnRl ZCBhY3Rpb24/CisrfQorKworK3ZvaWQgUVdheWxhbmREYXRhT2ZmZXI6OmRhdGFfb2ZmZXJfc291 cmNlX2FjdGlvbnModWludDMyX3Qgc291cmNlX2FjdGlvbnMpCisreworKyAgICBtX3N1cHBvcnRl ZEFjdGlvbnMgPSBRdDo6RHJvcEFjdGlvbnMoKTsKKysgICAgaWYgKHNvdXJjZV9hY3Rpb25zICYg V0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX01PVkUpCisrICAgICAgICBtX3N1cHBv cnRlZEFjdGlvbnMgfD0gUXQ6Ok1vdmVBY3Rpb247CisrICAgIGlmIChzb3VyY2VfYWN0aW9ucyAm IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9DT1BZKQorKyAgICAgICAgbV9zdXBw b3J0ZWRBY3Rpb25zIHw9IFF0OjpDb3B5QWN0aW9uOworK30KKysKKyBRV2F5bGFuZE1pbWVEYXRh OjpRV2F5bGFuZE1pbWVEYXRhKFFXYXlsYW5kQWJzdHJhY3REYXRhT2ZmZXIgKmRhdGFPZmZlcikK KyAgICAgOiBtX2RhdGFPZmZlcihkYXRhT2ZmZXIpCisgeworQEAgLTE2MywxNyArMTg4LDE4IEBA IFFWYXJpYW50IFFXYXlsYW5kTWltZURhdGE6OnJldHJpZXZlRGF0YV9zeXMoY29uc3QgUVN0cmlu ZyAmbWltZVR5cGUsIFFWYXJpYW50OjpUCisgCisgaW50IFFXYXlsYW5kTWltZURhdGE6OnJlYWRE YXRhKGludCBmZCwgUUJ5dGVBcnJheSAmZGF0YSkgY29uc3QKKyB7CistICAgIGZkX3NldCByZWFk c2V0OworLSAgICBGRF9aRVJPKCZyZWFkc2V0KTsKKy0gICAgRkRfU0VUKGZkLCAmcmVhZHNldCk7 CistICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVvdXQ7CisrICAgIHN0cnVjdCBwb2xsZmQgcmVhZHNl dDsKKysgICAgcmVhZHNldC5mZCA9IGZkOworKyAgICByZWFkc2V0LmV2ZW50cyA9IFBPTExJTjsK KysgICAgc3RydWN0IHRpbWVzcGVjIHRpbWVvdXQ7CisgICAgIHRpbWVvdXQudHZfc2VjID0gMTsK Ky0gICAgdGltZW91dC50dl91c2VjID0gMDsKKysgICAgdGltZW91dC50dl9uc2VjID0gMDsKKysK KyAKKyAgICAgUV9GT1JFVkVSIHsKKy0gICAgICAgIGludCByZWFkeSA9IHNlbGVjdChGRF9TRVRT SVpFLCAmcmVhZHNldCwgbnVsbHB0ciwgbnVsbHB0ciwgJnRpbWVvdXQpOworKyAgICAgICAgaW50 IHJlYWR5ID0gcXRfc2FmZV9wb2xsKCZyZWFkc2V0LCAxLCAmdGltZW91dCk7CisgICAgICAgICBp ZiAocmVhZHkgPCAwKSB7CistICAgICAgICAgICAgcVdhcm5pbmcoKSA8PCAiUVdheWxhbmREYXRh T2ZmZXI6IHNlbGVjdCgpIGZhaWxlZCI7CisrICAgICAgICAgICAgcVdhcm5pbmcoKSA8PCAiUVdh eWxhbmREYXRhT2ZmZXI6IHF0X3NhZmVfcG9sbCgpIGZhaWxlZCI7CisgICAgICAgICAgICAgcmV0 dXJuIC0xOworICAgICAgICAgfSBlbHNlIGlmIChyZWFkeSA9PSAwKSB7CisgICAgICAgICAgICAg cVdhcm5pbmcoIlFXYXlsYW5kRGF0YU9mZmVyOiB0aW1lb3V0IHJlYWRpbmcgZnJvbSBwaXBlIik7 CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXJfcC5o IGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXJfcC5oCitpbmRleCA5Y2Yx NDgzYy4uNmY2NjczOTggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGRhdGFvZmZlcl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9m ZmVyX3AuaAorQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgorICAgICBleHBsaWNpdCBRV2F5bGFu ZERhdGFPZmZlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIHN0cnVjdCA6OndsX2RhdGFfb2Zm ZXIgKm9mZmVyKTsKKyAgICAgflFXYXlsYW5kRGF0YU9mZmVyKCkgb3ZlcnJpZGU7CisgICAgIFFN aW1lRGF0YSAqbWltZURhdGEoKSBvdmVycmlkZTsKKysgICAgUXQ6OkRyb3BBY3Rpb25zIHN1cHBv cnRlZEFjdGlvbnMoKSBjb25zdDsKKyAKKyAgICAgUVN0cmluZyBmaXJzdEZvcm1hdCgpIGNvbnN0 OworIAorQEAgLTg5LDEwICs5MCwxMyBAQCBwdWJsaWM6CisgCisgcHJvdGVjdGVkOgorICAgICB2 b2lkIGRhdGFfb2ZmZXJfb2ZmZXIoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKSBvdmVycmlkZTsK KysgICAgdm9pZCBkYXRhX29mZmVyX3NvdXJjZV9hY3Rpb25zKHVpbnQzMl90IHNvdXJjZV9hY3Rp b25zKSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRhX29mZmVyX2FjdGlvbih1aW50MzJfdCBkbmRf YWN0aW9uKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRV2F5bGFuZERpc3BsYXkgKm1f ZGlzcGxheSA9IG51bGxwdHI7CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kTWltZURhdGE+ IG1fbWltZURhdGE7CisrICAgIFF0OjpEcm9wQWN0aW9ucyBtX3N1cHBvcnRlZEFjdGlvbnM7Cisg fTsKKyAKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFz b3VyY2UuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlLmNwcAor aW5kZXggZjQ1MTIyZmIuLjU1OTljYmQ0IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRkYXRhc291cmNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkYXRhc291cmNlLmNwcAorQEAgLTEwMSw3ICsxMDEsMzIgQEAgdm9pZCBRV2F5bGFuZERh dGFTb3VyY2U6OmRhdGFfc291cmNlX3NlbmQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlLCBpbnQz Ml90IGZkKQorIAorIHZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV90YXJnZXQo Y29uc3QgUVN0cmluZyAmbWltZV90eXBlKQorIHsKKy0gICAgUV9FTUlUIHRhcmdldENoYW5nZWQo bWltZV90eXBlKTsKKysgICAgbV9hY2NlcHRlZCA9ICFtaW1lX3R5cGUuaXNFbXB0eSgpOworKyAg ICBRX0VNSVQgZG5kUmVzcG9uc2VVcGRhdGVkKG1fYWNjZXB0ZWQsIG1fZHJvcEFjdGlvbik7Cisr fQorKworK3ZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV9hY3Rpb24odWludDMy X3QgYWN0aW9uKQorK3sKKysgICAgUXQ6OkRyb3BBY3Rpb24gcXRBY3Rpb24gPSBRdDo6SWdub3Jl QWN0aW9uOworKworKyAgICBpZiAoYWN0aW9uID09IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5E X0FDVElPTl9NT1ZFKQorKyAgICAgICAgcXRBY3Rpb24gPSBRdDo6TW92ZUFjdGlvbjsKKysgICAg ZWxzZSBpZiAoYWN0aW9uID09IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9DT1BZ KQorKyAgICAgICAgcXRBY3Rpb24gPSBRdDo6Q29weUFjdGlvbjsKKysKKysgICAgbV9kcm9wQWN0 aW9uID0gcXRBY3Rpb247CisrICAgIFFfRU1JVCBkbmRSZXNwb25zZVVwZGF0ZWQobV9hY2NlcHRl ZCwgbV9kcm9wQWN0aW9uKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZERhdGFTb3VyY2U6OmRhdGFf c291cmNlX2RuZF9maW5pc2hlZCgpCisreworKyAgICBRX0VNSVQgZmluaXNoZWQoKTsKKyt9Cisr Cisrdm9pZCBRV2F5bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX2RuZF9kcm9wX3BlcmZvcm1l ZCgpCisreworKworKyAgICBRX0VNSVQgZG5kRHJvcHBlZChtX2FjY2VwdGVkLCBtX2Ryb3BBY3Rp b24pOworIH0KKyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRkYXRhc291cmNlX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJj ZV9wLmgKK2luZGV4IDI1YWZmZjc5Li45NmYwN2JjMyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmgKK0BAIC03NywxNyArNzcsMjUgQEAgcHVibGljOgor ICAgICBRTWltZURhdGEgKm1pbWVEYXRhKCkgY29uc3Q7CisgCisgUV9TSUdOQUxTOgorLSAgICB2 b2lkIHRhcmdldENoYW5nZWQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKTsKKyAgICAgdm9pZCBj YW5jZWxsZWQoKTsKKysgICAgdm9pZCBmaW5pc2hlZCgpOworKworKyAgICB2b2lkIGRuZFJlc3Bv bnNlVXBkYXRlZChib29sIGFjY2VwdGVkLCBRdDo6RHJvcEFjdGlvbiBhY3Rpb24pOworKyAgICB2 b2lkIGRuZERyb3BwZWQoYm9vbCBhY2NlcHRlZCwgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uKTsKKyAK KyBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgZGF0YV9zb3VyY2VfY2FuY2VsbGVkKCkgb3ZlcnJpZGU7 CisgICAgIHZvaWQgZGF0YV9zb3VyY2Vfc2VuZChjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUsIGlu dDMyX3QgZmQpIG92ZXJyaWRlOworICAgICB2b2lkIGRhdGFfc291cmNlX3RhcmdldChjb25zdCBR U3RyaW5nICZtaW1lX3R5cGUpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfc291cmNlX2RuZF9k cm9wX3BlcmZvcm1lZCgpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfc291cmNlX2RuZF9maW5p c2hlZCgpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfc291cmNlX2FjdGlvbih1aW50MzJfdCBh Y3Rpb24pIG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFXYXlsYW5kRGlzcGxheSAqbV9k aXNwbGF5ID0gbnVsbHB0cjsKKyAgICAgUU1pbWVEYXRhICptX21pbWVfZGF0YSA9IG51bGxwdHI7 CisrICAgIGJvb2wgbV9hY2NlcHRlZCA9IGZhbHNlOworKyAgICBRdDo6RHJvcEFjdGlvbiBtX2Ry b3BBY3Rpb24gPSBRdDo6SWdub3JlQWN0aW9uOworIH07CisgCisgfQorZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheS5jcHAgYi9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGRpc3BsYXkuY3BwCitpbmRleCBmMTBjMWY3OS4uYzAxZTIzOGIgMTAwNjQ0 CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXkuY3BwCisrKysgYi9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXkuY3BwCitAQCAtODUsMTAgKzg1LDIw MyBAQAorIAorICNpbmNsdWRlIDxlcnJuby5oPgorIAorKyNpbmNsdWRlIDx0dXBsZT4gLy8gZm9y IHN0ZDo6dGllCisrCisrc3RhdGljIHZvaWQgY2hlY2tXYXlsYW5kRXJyb3Ioc3RydWN0IHdsX2Rp c3BsYXkgKmRpc3BsYXkpCisreworKyAgICBpbnQgZWNvZGUgPSB3bF9kaXNwbGF5X2dldF9lcnJv cihkaXNwbGF5KTsKKysgICAgaWYgKChlY29kZSA9PSBFUElQRSB8fCBlY29kZSA9PSBFQ09OTlJF U0VUKSkgeworKyAgICAgICAgLy8gc3BlY2lhbCBjYXNlIHRoaXMgdG8gcHJvdmlkZSBhIG5pY2Vy IGVycm9yCisrICAgICAgICBxV2FybmluZygiVGhlIFdheWxhbmQgY29ubmVjdGlvbiBicm9rZS4g RGlkIHRoZSBXYXlsYW5kIGNvbXBvc2l0b3IgZGllPyIpOworKyAgICB9IGVsc2UgeworKyAgICAg ICAgcVdhcm5pbmcoIlRoZSBXYXlsYW5kIGNvbm5lY3Rpb24gZXhwZXJpZW5jZWQgYSBmYXRhbCBl cnJvcjogJXMiLCBzdHJlcnJvcihlY29kZSkpOworKyAgICB9CisrICAgIF9leGl0KDEpOworK30K KysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBuYW1lc3BhY2UgUXRXYXlsYW5kQ2xpZW50IHsK KyAKKytjbGFzcyBFdmVudFRocmVhZCA6IHB1YmxpYyBRVGhyZWFkCisreworKyAgICBRX09CSkVD VAorK3B1YmxpYzoKKysgICAgZW51bSBPcGVyYXRpbmdNb2RlIHsKKysgICAgICAgIEVtaXRUb0Rp c3BhdGNoLCAvLyBFbWl0IHRoZSBzaWduYWwsIGFsbG93IGRpc3BhdGNoaW5nIGluIGEgZGlmZmVy bnQgdGhyZWFkLgorKyAgICAgICAgU2VsZkRpc3BhdGNoLCAvLyBEaXNwYXRjaCB0aGUgZXZlbnRz IGluc2lkZSB0aGlzIHRocmVhZC4KKysgICAgfTsKKysKKysgICAgRXZlbnRUaHJlYWQoc3RydWN0 IHdsX2Rpc3BsYXkgKiB3bCwgc3RydWN0IHdsX2V2ZW50X3F1ZXVlICogZXZfcXVldWUsCisrICAg ICAgICAgICAgICAgIE9wZXJhdGluZ01vZGUgbW9kZSkKKysgICAgICAgIDogbV9mZCh3bF9kaXNw bGF5X2dldF9mZCh3bCkpCisrICAgICAgICAsIG1fcGlwZWZkeyAtMSwgLTEgfQorKyAgICAgICAg LCBtX3dsZGlzcGxheSh3bCkKKysgICAgICAgICwgbV93bGV2cXVldWUoZXZfcXVldWUpCisrICAg ICAgICAsIG1fbW9kZShtb2RlKQorKyAgICAgICAgLCBtX3JlYWRpbmcodHJ1ZSkKKysgICAgICAg ICwgbV9xdWl0dGluZyhmYWxzZSkKKysgICAgeworKyAgICAgICAgc2V0T2JqZWN0TmFtZShRU3Ry aW5nTGl0ZXJhbCgiV2F5bGFuZEV2ZW50VGhyZWFkIikpOworKyAgICB9CisrCisrICAgIHZvaWQg cmVhZEFuZERpc3BhdGNoRXZlbnRzKCkKKysgICAgeworKyAgICAgICAgLyoKKysgICAgICAgICAq IERpc3BhdGNoIHBlbmRpbmcgZXZlbnRzIGFuZCBmbHVzaCB0aGUgcmVxdWVzdHMgYXQgbGVhc3Qg b25jZS4gSWYgdGhlIGV2ZW50IHRocmVhZAorKyAgICAgICAgICogaXMgbm90IHJlYWRpbmcsIHRy eSB0byBjYWxsIF9wcmVwYXJlX3JlYWQoKSB0byBhbGxvdyB0aGUgZXZlbnQgdGhyZWFkIHRvIHBv bGwoKS4KKysgICAgICAgICAqIElmIHRoYXQgZmFpbHMsIHJlLXRyeSBkaXNwYXRjaCAmIGZsdXNo IGFnYWluIHVudGlsIF9wcmVwYXJlX3JlYWQoKSBpcyBzdWNjZXNzZnVsLgorKyAgICAgICAgICoK KysgICAgICAgICAqIFRoaXMgYWxsb3cgYW55IGNhbGwgdG8gcmVhZEFuZERpc3BhdGNoRXZlbnRz KCkgdG8gc3RhcnQgZXZlbnQgdGhyZWFkJ3MgcG9sbGluZywKKysgICAgICAgICAqIG5vdCBvbmx5 IHRoZSBvbmUgaXNzdWVkIGZyb20gZXZlbnQgdGhyZWFkJ3Mgd2FpdEZvclJlYWRpbmcoKSwgd2hp Y2ggbWVhbnMgZnVuY3Rpb25zCisrICAgICAgICAgKiBjYWxsZWQgZnJvbSBkaXNwYXRjaF9wZW5k aW5nKCkgY2FuIHNhZmVseSBzcGluIGFuIGV2ZW50IGxvb3AuCisrICAgICAgICAgKi8KKysgICAg ICAgIGZvciAoOzspIHsKKysgICAgICAgICAgICBpZiAoZGlzcGF0Y2hRdWV1ZVBlbmRpbmcoKSA8 IDApIHsKKysgICAgICAgICAgICAgICAgY2hlY2tXYXlsYW5kRXJyb3IobV93bGRpc3BsYXkpOwor KyAgICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAg IHdsX2Rpc3BsYXlfZmx1c2gobV93bGRpc3BsYXkpOworKworKyAgICAgICAgICAgIC8vIFdlIGhh dmUgdG8gY2hlY2sgaWYgZXZlbnQgdGhyZWFkIGlzIHJlYWRpbmcgZXZlcnkgdGltZSB3ZSBkaXNw YXRjaAorKyAgICAgICAgICAgIC8vIHNvbWV0aGluZywgYXMgdGhhdCBtYXkgcmVjdXJzaXZlbHkg Y2FsbCB0aGlzIGZ1bmN0aW9uLgorKyAgICAgICAgICAgIGlmIChtX3JlYWRpbmcubG9hZEFjcXVp cmUoKSkKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICAgICAgaWYgKHByZXBh cmVSZWFkUXVldWUoKSA9PSAwKSB7CisrICAgICAgICAgICAgICAgIFFNdXRleExvY2tlciBsKCZt X211dGV4KTsKKysgICAgICAgICAgICAgICAgbV9yZWFkaW5nLnN0b3JlUmVsZWFzZSh0cnVlKTsK KysgICAgICAgICAgICAgICAgbV9jb25kLndha2VPbmUoKTsKKysgICAgICAgICAgICAgICAgYnJl YWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIHZvaWQgc3Rv cCgpCisrICAgIHsKKysgICAgICAgIC8vIFdlIGhhdmUgdG8gYm90aCB3cml0ZSB0byB0aGUgcGlw ZSBhbmQgc2V0IHRoZSBmbGFnLCBhcyB0aGUgdGhyZWFkIG1heSBiZQorKyAgICAgICAgLy8gZWl0 aGVyIGluIHRoZSBwb2xsKCkgb3Igd2FpdGluZyBmb3IgX3ByZXBhcmVfcmVhZCgpLgorKyAgICAg ICAgaWYgKG1fcGlwZWZkWzFdICE9IC0xICYmIHdyaXRlKG1fcGlwZWZkWzFdLCAiXDAiLCAxKSA9 PSAtMSkKKysgICAgICAgICAgICBxV2FybmluZygiRmFpbGVkIHRvIHdyaXRlIHRvIHRoZSBwaXBl OiAlcy4iLCBzdHJlcnJvcihlcnJubykpOworKworKyAgICAgICAgeworKyAgICAgICAgICAgIFFN dXRleExvY2tlciBsKCZtX211dGV4KTsKKysgICAgICAgICAgICBtX3F1aXR0aW5nID0gdHJ1ZTsK KysgICAgICAgICAgICBtX2NvbmQud2FrZU9uZSgpOworKyAgICAgICAgfQorKworKyAgICAgICAg d2FpdCgpOworKyAgICB9CisrCisrUV9TSUdOQUxTOgorKyAgICB2b2lkIG5lZWRSZWFkQW5kRGlz cGF0Y2goKTsKKysKKytwcm90ZWN0ZWQ6CisrICAgIHZvaWQgcnVuKCkgb3ZlcnJpZGUKKysgICAg eworKyAgICAgICAgLy8gd2UgdXNlIHRoaXMgcGlwZSB0byBtYWtlIHRoZSBsb29wIGV4aXQgb3Ro ZXJ3aXNlIGlmIHdlIHNpbXBseSB1c2VkIGEgZmxhZyBvbiB0aGUgbG9vcCBjb25kaXRpb24sIGlm IHN0b3AoKSBnZXRzCisrICAgICAgICAvLyBjYWxsZWQgd2hpbGUgcG9sbCgpIGlzIGJsb2NraW5n IHRoZSB0aHJlYWQgd2lsbCBuZXZlciBxdWl0IHNpbmNlIHRoZXJlIGFyZSBubyB3YXlsYW5kIG1l c3NhZ2VzIGNvbWluZyBhbnltb3JlLgorKyAgICAgICAgc3RydWN0IFBpcGUKKysgICAgICAgIHsK KysgICAgICAgICAgICBQaXBlKGludCAqZmRzKQorKyAgICAgICAgICAgICAgICA6IGZkcyhmZHMp CisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBpZiAocXRfc2FmZV9waXBlKGZkcykg IT0gMCkKKysgICAgICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJQaXBlIGNyZWF0aW9uIGZhaWxl ZC4gUXVpdHRpbmcgbWF5IGhhbmcuIik7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH5Q aXBlKCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGlmIChmZHNbMF0gIT0gLTEp IHsKKysgICAgICAgICAgICAgICAgICAgIGNsb3NlKGZkc1swXSk7CisrICAgICAgICAgICAgICAg ICAgICBjbG9zZShmZHNbMV0pOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQor KworKyAgICAgICAgICAgIGludCAqZmRzOworKyAgICAgICAgfSBwaXBlKG1fcGlwZWZkKTsKKysK KysgICAgICAgIC8vIE1ha2UgdGhlIG1haW4gdGhyZWFkIGNhbGwgd2xfcHJlcGFyZV9yZWFkKCks IGRpc3BhdGNoIHRoZSBwZW5kaW5nIG1lc3NhZ2VzIGFuZCBmbHVzaCB0aGUKKysgICAgICAgIC8v IG91dGJvdW5kIG9uZXMuIFdhaXQgdW50aWwgaXQncyBkb25lIGJlZm9yZSBwcm9jZWVkaW5nLCB1 bmxlc3Mgd2UncmUgdG9sZCB0byBxdWl0LgorKyAgICAgICAgd2hpbGUgKHdhaXRGb3JSZWFkaW5n KCkpIHsKKysgICAgICAgICAgICBwb2xsZmQgZmRzWzJdID0geyB7IG1fZmQsIFBPTExJTiwgMCB9 LCB7IG1fcGlwZWZkWzBdLCBQT0xMSU4sIDAgfSB9OworKyAgICAgICAgICAgIHBvbGwoZmRzLCAy LCAtMSk7CisrCisrICAgICAgICAgICAgaWYgKGZkc1sxXS5yZXZlbnRzICYgUE9MTElOKSB7Cisr ICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IHJlYWxseSBjYXJlIHRvIHJlYWQgdGhlIGJ5dGUg dGhhdCB3YXMgd3JpdHRlbiBoZXJlIHNpbmNlIHdlJ3JlIGNsb3NpbmcgZG93bgorKyAgICAgICAg ICAgICAgICB3bF9kaXNwbGF5X2NhbmNlbF9yZWFkKG1fd2xkaXNwbGF5KTsKKysgICAgICAgICAg ICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIGlmIChmZHNbMF0u cmV2ZW50cyAmIFBPTExJTikKKysgICAgICAgICAgICAgICAgd2xfZGlzcGxheV9yZWFkX2V2ZW50 cyhtX3dsZGlzcGxheSk7CisrICAgICAgICAgICAgICAgIC8vIFRoZSBwb2xsbCB3YXMgc3VjY2Vz ZnVsbCBhbmQgdGhlIGV2ZW50IHRocmVhZCBkaWQgdGhlIHdsX2Rpc3BsYXlfcmVhZF9ldmVudHMo KS4gT24gdGhlIG5leHQgaXRlcmF0aW9uIG9mIHRoZSBsb29wCisrICAgICAgICAgICAgICAgIC8v IHRoZSBldmVudCBzZW50IHRvIHRoZSBtYWluIHRocmVhZCB3aWxsIGNhdXNlIGl0IHRvIGRpc3Bh dGNoIHRoZSBtZXNzYWdlcyBqdXN0IHJlYWQsIHVubGVzcyB0aGUgbG9vcCBleGl0cyBpbiB3aGlj aAorKyAgICAgICAgICAgICAgICAvLyBjYXNlIHdlIGRvbid0IGNhcmUgYW55bW9yZSBhYm91dCB0 aGVtLgorKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAgICAgd2xfZGlzcGxheV9jYW5j ZWxfcmVhZChtX3dsZGlzcGxheSk7CisrICAgICAgICB9CisrICAgIH0KKysKKytwcml2YXRlOgor KyAgICBib29sIHdhaXRGb3JSZWFkaW5nKCkKKysgICAgeworKyAgICAgICAgUV9BU1NFUlQoUVRo cmVhZDo6Y3VycmVudFRocmVhZCgpID09IHRoaXMpOworKworKyAgICAgICAgbV9yZWFkaW5nLnN0 b3JlUmVsZWFzZShmYWxzZSk7CisrCisrICAgICAgICBpZiAobV9tb2RlID09IFNlbGZEaXNwYXRj aCkgeworKyAgICAgICAgICAgIHJlYWRBbmREaXNwYXRjaEV2ZW50cygpOworKyAgICAgICAgfSBl bHNlIHsKKysgICAgICAgICAgICBRX0VNSVQgbmVlZFJlYWRBbmREaXNwYXRjaCgpOworKworKyAg ICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrKCZtX211dGV4KTsKKysgICAgICAgICAgICAvLyBt X3JlYWRpbmcgbWlnaHQgYmUgc2V0IGZyb20gb3VyIGVtaXQgb3Igc29tZSBvdGhlciBpbnZvY2F0 aW9uIG9mCisrICAgICAgICAgICAgLy8gcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkuCisrICAgICAg ICAgICAgd2hpbGUgKCFtX3JlYWRpbmcubG9hZFJlbGF4ZWQoKSAmJiAhbV9xdWl0dGluZykKKysg ICAgICAgICAgICAgICAgbV9jb25kLndhaXQoJm1fbXV0ZXgpOworKyAgICAgICAgfQorKworKyAg ICAgICAgcmV0dXJuICFtX3F1aXR0aW5nOworKyAgICB9CisrCisrICAgIGludCBkaXNwYXRjaFF1 ZXVlUGVuZGluZygpCisrICAgIHsKKysgICAgICAgIGlmIChtX3dsZXZxdWV1ZSkKKysgICAgICAg ICAgICByZXR1cm4gd2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1fd2xkaXNwbGF5 LCBtX3dsZXZxdWV1ZSk7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgcmV0dXJuIHdsX2Rp c3BsYXlfZGlzcGF0Y2hfcGVuZGluZyhtX3dsZGlzcGxheSk7CisrICAgIH0KKysKKysgICAgaW50 IHByZXBhcmVSZWFkUXVldWUoKQorKyAgICB7CisrICAgICAgICBpZiAobV93bGV2cXVldWUpCisr ICAgICAgICAgICAgcmV0dXJuIHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkX3F1ZXVlKG1fd2xkaXNw bGF5LCBtX3dsZXZxdWV1ZSk7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgcmV0dXJuIHds X2Rpc3BsYXlfcHJlcGFyZV9yZWFkKG1fd2xkaXNwbGF5KTsKKysgICAgfQorKworKyAgICBpbnQg bV9mZDsKKysgICAgaW50IG1fcGlwZWZkWzJdOworKyAgICB3bF9kaXNwbGF5ICptX3dsZGlzcGxh eTsKKysgICAgd2xfZXZlbnRfcXVldWUgKm1fd2xldnF1ZXVlOworKyAgICBPcGVyYXRpbmdNb2Rl IG1fbW9kZTsKKysKKysgICAgLyogQ29uY3VycmVuY3kgbm90ZSB3aGVuIG9wZXJhdGluZyBpbiBF bWl0VG9EaXNwYXRjaCBtb2RlOgorKyAgICAgKiBtX3JlYWRpbmcgaXMgc2V0IHRvIGZhbHNlIGlu c2lkZSBldmVudCB0aHJlYWQncyB3YWl0Rm9yUmVhZGluZygpLCBhbmQgaXMKKysgICAgICogc2V0 IHRvIHRydWUgaW5zaWRlIG1haW4gdGhyZWFkJ3MgcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkuCisr ICAgICAqIFRoZSBsb2NrIGlzIG5vdCB0YWtlbiB3aGVuIHNldHRpbmcgbV9yZWFkaW5nIHRvIGZh bHNlLCBhcyB0aGUgbWFpbiB0aHJlYWQKKysgICAgICogaXMgbm90IGFjdGl2ZWx5IHdhaXRpbmcg Zm9yIGl0IHRvIHR1cm4gZmFsc2UuIEhvd2V2ZXIsIHRoZSBsb2NrIGlzIHRha2VuCisrICAgICAq IGluc2lkZSByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKSBiZWZvcmUgc2V0dGluZyBtX3JlYWRpbmcg dG8gdHJ1ZSwKKysgICAgICogYXMgdGhlIGV2ZW50IHRocmVhZCBpcyBhY3RpdmVseSB3YWl0aW5n IGZvciBpdCB1bmRlciB0aGUgd2FpdCBjb25kaXRpb24uCisrICAgICAqLworKworKyAgICBRQXRv bWljSW50ZWdlcjxib29sPiBtX3JlYWRpbmc7CisrICAgIGJvb2wgbV9xdWl0dGluZzsKKysgICAg UU11dGV4IG1fbXV0ZXg7CisrICAgIFFXYWl0Q29uZGl0aW9uIG1fY29uZDsKKyt9OworKworIFFf TE9HR0lOR19DQVRFR09SWShsY1FwYVdheWxhbmQsICJxdC5xcGEud2F5bGFuZCIpOyAvLyBmb3Ig Z2VuZXJhbCAodW5jYXRlZ29yaXplZCkgV2F5bGFuZCBwbGF0Zm9ybSBsb2dnaW5nCisgCisgc3Ry dWN0IHdsX3N1cmZhY2UgKlFXYXlsYW5kRGlzcGxheTo6Y3JlYXRlU3VyZmFjZSh2b2lkICpoYW5k bGUpCitAQCAtMTU4LDE3ICszNTEsMTYgQEAgUVdheWxhbmREaXNwbGF5OjpRV2F5bGFuZERpc3Bs YXkoUVdheWxhbmRJbnRlZ3JhdGlvbiAqd2F5bGFuZEludGVncmF0aW9uKQorICAgICBpZiAoIW1Y a2JDb250ZXh0KQorICAgICAgICAgcUNXYXJuaW5nKGxjUXBhV2F5bGFuZCwgImZhaWxlZCB0byBj cmVhdGUgeGtiIGNvbnRleHQiKTsKKyAjZW5kaWYKKy0KKy0gICAgZm9yY2VSb3VuZFRyaXAoKTsK Ky0KKy0gICAgaWYgKCFtV2FpdGluZ1NjcmVlbnMuaXNFbXB0eSgpKSB7CistICAgICAgICAvLyBH aXZlIHdsX291dHB1dC5kb25lIGFuZCB6eGRnX291dHB1dF92MS5kb25lIGV2ZW50cyBhIGNoYW5j ZSB0byBhcnJpdmUKKy0gICAgICAgIGZvcmNlUm91bmRUcmlwKCk7CistICAgIH0KKyB9CisgCisg UVdheWxhbmREaXNwbGF5Ojp+UVdheWxhbmREaXNwbGF5KHZvaWQpCisgeworKyAgICBpZiAobV9l dmVudFRocmVhZCkKKysgICAgICAgIG1fZXZlbnRUaHJlYWQtPnN0b3AoKTsKKysKKysgICAgaWYg KG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkKQorKyAgICAgICAgbV9mcmFtZUV2ZW50UXVldWVUaHJl YWQtPnN0b3AoKTsKKysKKyAgICAgaWYgKG1TeW5jQ2FsbGJhY2spCisgICAgICAgICB3bF9jYWxs YmFja19kZXN0cm95KG1TeW5jQ2FsbGJhY2spOworIAorQEAgLTE4Nyw2ICszNzksMjEgQEAgUVdh eWxhbmREaXNwbGF5Ojp+UVdheWxhbmREaXNwbGF5KHZvaWQpCisgI2VuZGlmCisgICAgIGlmICht RGlzcGxheSkKKyAgICAgICAgIHdsX2Rpc3BsYXlfZGlzY29ubmVjdChtRGlzcGxheSk7CisrCisr ICAgIGlmIChtX2ZyYW1lRXZlbnRRdWV1ZSkKKysgICAgICAgIHdsX2V2ZW50X3F1ZXVlX2Rlc3Ry b3kobV9mcmFtZUV2ZW50UXVldWUpOworK30KKysKKysvLyBTdGVwcyB3aGljaCBpcyBjYWxsZWQg anVzdCBhZnRlciBjb25zdHJ1Y3Rvci4gVGhpcyBzZXBhcmF0ZXMgcmVnaXN0cnlfZ2xvYmFsKCkg b3V0IG9mIHRoZSBjb25zdHJ1Y3RvcgorKy8vIHNvIHRoYXQgZmFjdG9yeSBmdW5jdGlvbnMgaW4g aW50ZWdyYXRpb24gY2FuIGJlIG92ZXJyaWRkZW4uCisrdm9pZCBRV2F5bGFuZERpc3BsYXk6Omlu aXRpYWxpemUoKQorK3sKKysgICAgZm9yY2VSb3VuZFRyaXAoKTsKKysKKysgICAgaWYgKCFtV2Fp dGluZ1NjcmVlbnMuaXNFbXB0eSgpKSB7CisrICAgICAgICAvLyBHaXZlIHdsX291dHB1dC5kb25l IGFuZCB6eGRnX291dHB1dF92MS5kb25lIGV2ZW50cyBhIGNoYW5jZSB0byBhcnJpdmUKKysgICAg ICAgIGZvcmNlUm91bmRUcmlwKCk7CisrICAgIH0KKyB9CisgCisgdm9pZCBRV2F5bGFuZERpc3Bs YXk6OmVuc3VyZVNjcmVlbigpCitAQCAtMjAzLDk4ICs0MTAsMzcgQEAgdm9pZCBRV2F5bGFuZERp c3BsYXk6OmVuc3VyZVNjcmVlbigpCisgCisgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmNoZWNrRXJy b3IoKSBjb25zdAorIHsKKy0gICAgaW50IGVjb2RlID0gd2xfZGlzcGxheV9nZXRfZXJyb3IobURp c3BsYXkpOworLSAgICBpZiAoKGVjb2RlID09IEVQSVBFIHx8IGVjb2RlID09IEVDT05OUkVTRVQp KSB7CistICAgICAgICAvLyBzcGVjaWFsIGNhc2UgdGhpcyB0byBwcm92aWRlIGEgbmljZXIgZXJy b3IKKy0gICAgICAgIHFXYXJuaW5nKCJUaGUgV2F5bGFuZCBjb25uZWN0aW9uIGJyb2tlLiBEaWQg dGhlIFdheWxhbmQgY29tcG9zaXRvciBkaWU/Iik7CistICAgIH0gZWxzZSB7CistICAgICAgICBx V2FybmluZygiVGhlIFdheWxhbmQgY29ubmVjdGlvbiBleHBlcmllbmNlZCBhIGZhdGFsIGVycm9y OiAlcyIsIHN0cmVycm9yKGVjb2RlKSk7CistICAgIH0KKy0gICAgX2V4aXQoMSk7CisrICAgIGNo ZWNrV2F5bGFuZEVycm9yKG1EaXNwbGF5KTsKKyB9CisgCisrLy8gQ2FsbGVkIGluIG1haW4gdGhy ZWFkLCBlaXRoZXIgZnJvbSBxdWV1ZWQgc2lnbmFsIG9yIGRpcmVjdGx5LgorIHZvaWQgUVdheWxh bmREaXNwbGF5OjpmbHVzaFJlcXVlc3RzKCkKKyB7CistICAgIGlmICh3bF9kaXNwbGF5X3ByZXBh cmVfcmVhZChtRGlzcGxheSkgPT0gMCkgeworLSAgICAgICAgd2xfZGlzcGxheV9yZWFkX2V2ZW50 cyhtRGlzcGxheSk7CistICAgIH0KKy0KKy0gICAgaWYgKHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcGVu ZGluZyhtRGlzcGxheSkgPCAwKQorLSAgICAgICAgY2hlY2tFcnJvcigpOworLQorLSAgICB7Cist ICAgICAgICBRUmVhZExvY2tlciBsb2NrZXIoJm1fZnJhbWVRdWV1ZUxvY2spOworLSAgICAgICAg Zm9yIChjb25zdCBGcmFtZVF1ZXVlICZxIDogbUV4dGVybmFsUXVldWVzKSB7CistICAgICAgICAg ICAgUU11dGV4TG9ja2VyIGxvY2tlcihxLm11dGV4KTsKKy0gICAgICAgICAgICB3aGlsZSAod2xf ZGlzcGxheV9wcmVwYXJlX3JlYWRfcXVldWUobURpc3BsYXksIHEucXVldWUpICE9IDApCistICAg ICAgICAgICAgICAgIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVuZGluZyhtRGlzcGxheSwg cS5xdWV1ZSk7CistICAgICAgICAgICAgd2xfZGlzcGxheV9yZWFkX2V2ZW50cyhtRGlzcGxheSk7 CistICAgICAgICAgICAgd2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1EaXNwbGF5 LCBxLnF1ZXVlKTsKKy0gICAgICAgIH0KKy0gICAgfQorLQorLSAgICB3bF9kaXNwbGF5X2ZsdXNo KG1EaXNwbGF5KTsKKy19CistCistdm9pZCBRV2F5bGFuZERpc3BsYXk6OmJsb2NraW5nUmVhZEV2 ZW50cygpCisteworLSAgICBpZiAod2xfZGlzcGxheV9kaXNwYXRjaChtRGlzcGxheSkgPCAwKQor LSAgICAgICAgY2hlY2tFcnJvcigpOworLX0KKy0KKy12b2lkIFFXYXlsYW5kRGlzcGxheTo6ZGVz dHJveUZyYW1lUXVldWUoY29uc3QgUVdheWxhbmREaXNwbGF5OjpGcmFtZVF1ZXVlICZxKQorLXsK Ky0gICAgUVdyaXRlTG9ja2VyIGxvY2tlcigmbV9mcmFtZVF1ZXVlTG9jayk7CistICAgIGF1dG8g aXQgPSBzdGQ6OmZpbmRfaWYobUV4dGVybmFsUXVldWVzLmJlZ2luKCksCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgbUV4dGVybmFsUXVldWVzLmVuZCgpLAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIFsmcV0gKGNvbnN0IFFXYXlsYW5kRGlzcGxheTo6RnJhbWVRdWV1ZSAmb3RoZXIp eyByZXR1cm4gb3RoZXIucXVldWUgPT0gcS5xdWV1ZTsgfSk7CistICAgIFFfQVNTRVJUKGl0ICE9 IG1FeHRlcm5hbFF1ZXVlcy5lbmQoKSk7CistICAgIG1FeHRlcm5hbFF1ZXVlcy5lcmFzZShpdCk7 CistICAgIGlmIChxLnF1ZXVlICE9IG51bGxwdHIpCistICAgICAgICB3bF9ldmVudF9xdWV1ZV9k ZXN0cm95KHEucXVldWUpOworLSAgICBkZWxldGUgcS5tdXRleDsKKysgICAgbV9ldmVudFRocmVh ZC0+cmVhZEFuZERpc3BhdGNoRXZlbnRzKCk7CisgfQorIAorLVFXYXlsYW5kRGlzcGxheTo6RnJh bWVRdWV1ZSBRV2F5bGFuZERpc3BsYXk6OmNyZWF0ZUZyYW1lUXVldWUoKQorKy8vIFdlIGhhdmUg dG8gd2FpdCB1bnRpbCB3ZSBoYXZlIGFuIGV2ZW50RGlzcGF0Y2hlciBiZWZvcmUgY3JlYXRpbmcg dGhlIGV2ZW50VGhyZWFkLAorKy8vIG90aGVyd2lzZSBmb3JjZVJvdW5kVHJpcCgpIG1heSBibG9j ayBpbnNpZGUgX2V2ZW50c19yZWFkKCkgYmVjYXVzZSBldmVudFRocmVhZCBpcworKy8vIHBvbGxp bmcuCisrdm9pZCBRV2F5bGFuZERpc3BsYXk6OmluaXRFdmVudFRocmVhZCgpCisgeworLSAgICBR V3JpdGVMb2NrZXIgbG9ja2VyKCZtX2ZyYW1lUXVldWVMb2NrKTsKKy0gICAgRnJhbWVRdWV1ZSBx e2NyZWF0ZUV2ZW50UXVldWUoKX07CistICAgIG1FeHRlcm5hbFF1ZXVlcy5hcHBlbmQocSk7Cist ICAgIHJldHVybiBxOworLX0KKysgICAgbV9ldmVudFRocmVhZC5yZXNldCgKKysgICAgICAgICAg ICBuZXcgRXZlbnRUaHJlYWQobURpc3BsYXksIC8qIGRlZmF1bHQgcXVldWUgKi8gbnVsbHB0ciwg RXZlbnRUaHJlYWQ6OkVtaXRUb0Rpc3BhdGNoKSk7CisrICAgIGNvbm5lY3QobV9ldmVudFRocmVh ZC5nZXQoKSwgJkV2ZW50VGhyZWFkOjpuZWVkUmVhZEFuZERpc3BhdGNoLCB0aGlzLAorKyAgICAg ICAgICAgICZRV2F5bGFuZERpc3BsYXk6OmZsdXNoUmVxdWVzdHMsIFF0OjpRdWV1ZWRDb25uZWN0 aW9uKTsKKysgICAgbV9ldmVudFRocmVhZC0+c3RhcnQoKTsKKyAKKy13bF9ldmVudF9xdWV1ZSAq UVdheWxhbmREaXNwbGF5OjpjcmVhdGVFdmVudFF1ZXVlKCkKKy17CistICAgIHJldHVybiB3bF9k aXNwbGF5X2NyZWF0ZV9xdWV1ZShtRGlzcGxheSk7CisrICAgIC8vIHdsX2Rpc3BsYXlfZGlzY29u bmVjdCgpIGZyZWUgdGhpcy4KKysgICAgbV9mcmFtZUV2ZW50UXVldWUgPSB3bF9kaXNwbGF5X2Ny ZWF0ZV9xdWV1ZShtRGlzcGxheSk7CisrICAgIG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkLnJlc2V0 KAorKyAgICAgICAgICAgIG5ldyBFdmVudFRocmVhZChtRGlzcGxheSwgbV9mcmFtZUV2ZW50UXVl dWUsIEV2ZW50VGhyZWFkOjpTZWxmRGlzcGF0Y2gpKTsKKysgICAgbV9mcmFtZUV2ZW50UXVldWVU aHJlYWQtPnN0YXJ0KCk7CisgfQorIAorLXZvaWQgUVdheWxhbmREaXNwbGF5OjpkaXNwYXRjaFF1 ZXVlV2hpbGUod2xfZXZlbnRfcXVldWUgKnF1ZXVlLCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKCk+IGNv bmRpdGlvbiwgaW50IHRpbWVvdXQpCisrdm9pZCBRV2F5bGFuZERpc3BsYXk6OmJsb2NraW5nUmVh ZEV2ZW50cygpCisgeworLSAgICBpZiAoIWNvbmRpdGlvbigpKQorLSAgICAgICAgcmV0dXJuOwor LQorLSAgICBRRWxhcHNlZFRpbWVyIHRpbWVyOworLSAgICB0aW1lci5zdGFydCgpOworLSAgICBz dHJ1Y3QgcG9sbGZkIHBGZCA9IHF0X21ha2VfcG9sbGZkKHdsX2Rpc3BsYXlfZ2V0X2ZkKG1EaXNw bGF5KSwgUE9MTElOKTsKKy0gICAgd2hpbGUgKHRpbWVvdXQgPT0gLTEgfHwgdGltZXIuZWxhcHNl ZCgpIDwgdGltZW91dCkgeworLSAgICAgICAgd2hpbGUgKHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFk X3F1ZXVlKG1EaXNwbGF5LCBxdWV1ZSkgIT0gMCkKKy0gICAgICAgICAgICB3bF9kaXNwbGF5X2Rp c3BhdGNoX3F1ZXVlX3BlbmRpbmcobURpc3BsYXksIHF1ZXVlKTsKKy0KKy0gICAgICAgIHdsX2Rp c3BsYXlfZmx1c2gobURpc3BsYXkpOworLQorLSAgICAgICAgY29uc3QgaW50IHJlbWFpbmluZyA9 IHFNYXgodGltZW91dCAtIHRpbWVyLmVsYXBzZWQoKSwgMGxsKTsKKy0gICAgICAgIGNvbnN0IGlu dCBwb2xsVGltZW91dCA9IHRpbWVvdXQgPT0gLTEgPyAtMSA6IHJlbWFpbmluZzsKKy0gICAgICAg IGlmIChxdF9wb2xsX21zZWNzKCZwRmQsIDEsIHBvbGxUaW1lb3V0KSA+IDApCistICAgICAgICAg ICAgd2xfZGlzcGxheV9yZWFkX2V2ZW50cyhtRGlzcGxheSk7CistICAgICAgICBlbHNlCistICAg ICAgICAgICAgd2xfZGlzcGxheV9jYW5jZWxfcmVhZChtRGlzcGxheSk7CistCistICAgICAgICBp ZiAod2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1EaXNwbGF5LCBxdWV1ZSkgPCAw KQorLSAgICAgICAgICAgIGNoZWNrRXJyb3IoKTsKKy0KKy0gICAgICAgIGlmICghY29uZGl0aW9u KCkpCistICAgICAgICAgICAgYnJlYWs7CistICAgIH0KKysgICAgaWYgKHdsX2Rpc3BsYXlfZGlz cGF0Y2gobURpc3BsYXkpIDwgMCkKKysgICAgICAgIGNoZWNrV2F5bGFuZEVycm9yKG1EaXNwbGF5 KTsKKyB9CisgCisgUVdheWxhbmRTY3JlZW4gKlFXYXlsYW5kRGlzcGxheTo6c2NyZWVuRm9yT3V0 cHV0KHN0cnVjdCB3bF9vdXRwdXQgKm91dHB1dCkgY29uc3QKK0BAIC0zNDUsNyArNDkxLDcgQEAg dm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlZ2lzdHJ5X2dsb2JhbCh1aW50MzJfdCBpZCwgY29uc3Qg UVN0cmluZyAmaW50ZXJmYWNlLCB1aW4KKyAgICAgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0 ZXJhbCgid2xfb3V0cHV0IikpIHsKKyAgICAgICAgIG1XYWl0aW5nU2NyZWVucyA8PCBuZXcgUVdh eWxhbmRTY3JlZW4odGhpcywgdmVyc2lvbiwgaWQpOworICAgICB9IGVsc2UgaWYgKGludGVyZmFj ZSA9PSBRU3RyaW5nTGl0ZXJhbCgid2xfY29tcG9zaXRvciIpKSB7CistICAgICAgICBtQ29tcG9z aXRvclZlcnNpb24gPSBxTWluKChpbnQpdmVyc2lvbiwgMyk7CisrICAgICAgICBtQ29tcG9zaXRv clZlcnNpb24gPSBxTWluKChpbnQpdmVyc2lvbiwgNCk7CisgICAgICAgICBtQ29tcG9zaXRvci5p bml0KHJlZ2lzdHJ5LCBpZCwgbUNvbXBvc2l0b3JWZXJzaW9uKTsKKyAgICAgfSBlbHNlIGlmIChp bnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoIndsX3NobSIpKSB7CisgICAgICAgICBtU2htLnJl c2V0KG5ldyBRV2F5bGFuZFNobSh0aGlzLCB2ZXJzaW9uLCBpZCkpOworQEAgLTM1NCw3ICs1MDAs NyBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6cmVnaXN0cnlfZ2xvYmFsKHVpbnQzMl90IGlkLCBj b25zdCBRU3RyaW5nICZpbnRlcmZhY2UsIHVpbgorICAgICAgICAgbUlucHV0RGV2aWNlcy5hcHBl bmQoaW5wdXREZXZpY2UpOworICNpZiBRVF9DT05GSUcod2F5bGFuZF9kYXRhZGV2aWNlKQorICAg ICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgid2xfZGF0YV9kZXZpY2Vf bWFuYWdlciIpKSB7CistICAgICAgICBtRG5kU2VsZWN0aW9uSGFuZGxlci5yZXNldChuZXcgUVdh eWxhbmREYXRhRGV2aWNlTWFuYWdlcih0aGlzLCBpZCkpOworKyAgICAgICAgbURuZFNlbGVjdGlv bkhhbmRsZXIucmVzZXQobmV3IFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIodGhpcywgdmVyc2lv biwgaWQpKTsKKyAjZW5kaWYKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xp dGVyYWwoInF0X3N1cmZhY2VfZXh0ZW5zaW9uIikpIHsKKyAgICAgICAgIG1XaW5kb3dFeHRlbnNp b24ucmVzZXQobmV3IFF0V2F5bGFuZDo6cXRfc3VyZmFjZV9leHRlbnNpb24ocmVnaXN0cnksIGlk LCAxKSk7CitAQCAtMzY5LDYgKzUxNSw4IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpyZWdpc3Ry eV9nbG9iYWwodWludDMyX3QgaWQsIGNvbnN0IFFTdHJpbmcgJmludGVyZmFjZSwgdWluCisgI2lm IFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5X3NlbGVjdGlvbikKKyAgICAgfSBlbHNl IGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoInp3cF9wcmltYXJ5X3NlbGVjdGlvbl9k ZXZpY2VfbWFuYWdlcl92MSIpKSB7CisgICAgICAgICBtUHJpbWFyeVNlbGVjdGlvbk1hbmFnZXIu cmVzZXQobmV3IFFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRldmljZU1hbmFnZXJWMSh0aGlzLCBp ZCwgMSkpOworKyAgICAgICAgZm9yIChRV2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmljZSA6 IHFBc0NvbnN0KG1JbnB1dERldmljZXMpKQorKyAgICAgICAgICAgIGlucHV0RGV2aWNlLT5zZXRQ cmltYXJ5U2VsZWN0aW9uRGV2aWNlKG1QcmltYXJ5U2VsZWN0aW9uTWFuYWdlci0+Y3JlYXRlRGV2 aWNlKGlucHV0RGV2aWNlKSk7CisgI2VuZGlmCisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09 IFFTdHJpbmdMaXRlcmFsKCJ6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YyIikgJiYgIW1DbGllbnRT aWRlSW5wdXRDb250ZXh0UmVxdWVzdGVkKSB7CisgICAgICAgICBtVGV4dElucHV0TWFuYWdlci5y ZXNldChuZXcgUXRXYXlsYW5kOjp6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YyKHJlZ2lzdHJ5LCBp ZCwgMSkpOworQEAgLTQyNyw2ICs1NzUsMTMgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlZ2lz dHJ5X2dsb2JhbF9yZW1vdmUodWludDMyX3QgaWQpCisgICAgICAgICAgICAgICAgICAgICBpbnB1 dERldmljZS0+c2V0VGV4dElucHV0KG51bGxwdHIpOworICAgICAgICAgICAgICAgICBtV2F5bGFu ZEludGVncmF0aW9uLT5yZWNvbmZpZ3VyZUlucHV0Q29udGV4dCgpOworICAgICAgICAgICAgIH0K KysjaWYgUVRfQ09ORklHKHdheWxhbmRfY2xpZW50X3ByaW1hcnlfc2VsZWN0aW9uKQorKyAgICAg ICAgICAgIGlmIChnbG9iYWwuaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ6d3BfcHJpbWFy eV9zZWxlY3Rpb25fZGV2aWNlX21hbmFnZXJfdjEiKSkgeworKyAgICAgICAgICAgICAgICBtUHJp bWFyeVNlbGVjdGlvbk1hbmFnZXIucmVzZXQoKTsKKysgICAgICAgICAgICAgICAgZm9yIChRV2F5 bGFuZElucHV0RGV2aWNlICppbnB1dERldmljZSA6IHFBc0NvbnN0KG1JbnB1dERldmljZXMpKQor KyAgICAgICAgICAgICAgICAgICAgaW5wdXREZXZpY2UtPnNldFByaW1hcnlTZWxlY3Rpb25EZXZp Y2UobnVsbHB0cik7CisrICAgICAgICAgICAgfQorKyNlbmRpZgorICAgICAgICAgICAgIG1HbG9i YWxzLnJlbW92ZUF0KGkpOworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorQEAgLTQ1 Miw5ICs2MDcsMTAgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmFkZFJlZ2lzdHJ5TGlzdGVuZXIo UmVnaXN0cnlMaXN0ZW5lciBsaXN0ZW5lciwgdm9pZCAqZGF0YSkKKyAKKyB2b2lkIFFXYXlsYW5k RGlzcGxheTo6cmVtb3ZlTGlzdGVuZXIoUmVnaXN0cnlMaXN0ZW5lciBsaXN0ZW5lciwgdm9pZCAq ZGF0YSkKKyB7CistICAgIHN0ZDo6cmVtb3ZlX2lmKG1SZWdpc3RyeUxpc3RlbmVycy5iZWdpbigp LCBtUmVnaXN0cnlMaXN0ZW5lcnMuZW5kKCksIFs9XShMaXN0ZW5lciBsKXsKKysgICAgYXV0byBp dGVyID0gc3RkOjpyZW1vdmVfaWYobVJlZ2lzdHJ5TGlzdGVuZXJzLmJlZ2luKCksIG1SZWdpc3Ry eUxpc3RlbmVycy5lbmQoKSwgWz1dKExpc3RlbmVyIGwpeworICAgICAgICAgcmV0dXJuIChsLmxp c3RlbmVyID09IGxpc3RlbmVyICYmIGwuZGF0YSA9PSBkYXRhKTsKKyAgICAgfSk7CisrICAgIG1S ZWdpc3RyeUxpc3RlbmVycy5lcmFzZShpdGVyLCBtUmVnaXN0cnlMaXN0ZW5lcnMuZW5kKCkpOwor IH0KKyAKKyB1aW50MzJfdCBRV2F5bGFuZERpc3BsYXk6OmN1cnJlbnRUaW1lTWlsbGlzZWMoKQor QEAgLTQ2Nyw1MCArNjIzLDkgQEAgdWludDMyX3QgUVdheWxhbmREaXNwbGF5OjpjdXJyZW50VGlt ZU1pbGxpc2VjKCkKKyAgICAgcmV0dXJuIDA7CisgfQorIAorLXN0YXRpYyB2b2lkCistc3luY19j YWxsYmFjayh2b2lkICpkYXRhLCBzdHJ1Y3Qgd2xfY2FsbGJhY2sgKmNhbGxiYWNrLCB1aW50MzJf dCBzZXJpYWwpCisteworLSAgICBRX1VOVVNFRChzZXJpYWwpCistICAgIGJvb2wgKmRvbmUgPSBz dGF0aWNfY2FzdDxib29sICo+KGRhdGEpOworLQorLSAgICAqZG9uZSA9IHRydWU7CistCistICAg IC8vIElmIHRoZSB3bF9jYWxsYmFjayBkb25lIGV2ZW50IGlzIHJlY2VpdmVkIGFmdGVyIHRoZSBj b25kaXRpb24gY2hlY2sgaW4gdGhlIHdoaWxlIGxvb3AgaW4KKy0gICAgLy8gZm9yY2VSb3VuZFRy aXAoKSwgYnV0IGJlZm9yZSB0aGUgY2FsbCB0byBwcm9jZXNzRXZlbnRzLCB0aGUgY2FsbCB0byBw cm9jZXNzRXZlbnRzIG1heSBibG9jaworLSAgICAvLyBmb3JldmVyIGlmIG5vIG1vcmUgZXZlbnRz IGFyZSBwb3N0ZWQgKGV2ZW50aG91Z2ggdGhlIGNhbGxiYWNrIGlzIGhhbmRsZWQgaW4gcmVzcG9u c2UgdG8gdGhlCistICAgIC8vIGFib3V0VG9CbG9jayBzaWduYWwpLiBIZW5jZSwgd2Ugd2FrZSB1 cCB0aGUgZXZlbnQgZGlzcGF0Y2hlciBzbyBmb3JjZVJvdW5kVHJpcCBtYXkgcmV0dXJuLgorLSAg ICAvLyAoUVRCVUctNjQ2OTYpCistICAgIGlmIChhdXRvICpkaXNwYXRjaGVyID0gUVRocmVhZDo6 Y3VycmVudFRocmVhZCgpLT5ldmVudERpc3BhdGNoZXIoKSkKKy0gICAgICAgIGRpc3BhdGNoZXIt Pndha2VVcCgpOworLQorLSAgICB3bF9jYWxsYmFja19kZXN0cm95KGNhbGxiYWNrKTsKKy19Cist Cistc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9jYWxsYmFja19saXN0ZW5lciBzeW5jX2xpc3RlbmVy ID0geworLSAgICBzeW5jX2NhbGxiYWNrCistfTsKKy0KKyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6 Zm9yY2VSb3VuZFRyaXAoKQorIHsKKy0gICAgLy8gd2xfZGlzcGxheV9yb3VuZHRyaXAoKSB3b3Jr cyBvbiB0aGUgbWFpbiBxdWV1ZSBvbmx5LAorLSAgICAvLyBidXQgd2UgdXNlIGEgc2VwYXJhdGUg b25lLCBzbyBiYXNpY2FsbHkgcmVpbXBsZW1lbnQgaXQgaGVyZQorLSAgICBpbnQgcmV0ID0gMDsK Ky0gICAgYm9vbCBkb25lID0gZmFsc2U7CistICAgIHdsX2NhbGxiYWNrICpjYWxsYmFjayA9IHds X2Rpc3BsYXlfc3luYyhtRGlzcGxheSk7CistICAgIHdsX2NhbGxiYWNrX2FkZF9saXN0ZW5lcihj YWxsYmFjaywgJnN5bmNfbGlzdGVuZXIsICZkb25lKTsKKy0gICAgZmx1c2hSZXF1ZXN0cygpOwor LSAgICBpZiAoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpLT5ldmVudERpc3BhdGNoZXIoKSkgewor LSAgICAgICAgd2hpbGUgKCFkb25lICYmIHJldCA+PSAwKSB7CistICAgICAgICAgICAgUVRocmVh ZDo6Y3VycmVudFRocmVhZCgpLT5ldmVudERpc3BhdGNoZXIoKS0+cHJvY2Vzc0V2ZW50cyhRRXZl bnRMb29wOjpXYWl0Rm9yTW9yZUV2ZW50cyk7CistICAgICAgICAgICAgcmV0ID0gd2xfZGlzcGxh eV9kaXNwYXRjaF9wZW5kaW5nKG1EaXNwbGF5KTsKKy0gICAgICAgIH0KKy0gICAgfSBlbHNlIHsK Ky0gICAgICAgIHdoaWxlICghZG9uZSAmJiByZXQgPj0gMCkKKy0gICAgICAgICAgICByZXQgPSB3 bF9kaXNwbGF5X2Rpc3BhdGNoKG1EaXNwbGF5KTsKKy0gICAgfQorLQorLSAgICBpZiAocmV0ID09 IC0xICYmICFkb25lKQorLSAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShjYWxsYmFjayk7Cisr ICAgICB3bF9kaXNwbGF5X3JvdW5kdHJpcChtRGlzcGxheSk7CisgfQorIAorIGJvb2wgUVdheWxh bmREaXNwbGF5OjpzdXBwb3J0c1dpbmRvd0RlY29yYXRpb24oKSBjb25zdAorQEAgLTU3NCwxNCAr Njg5LDEwIEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdl ZChRV2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmljCisgICAgIGlmIChtTGFzdEtleWJvYXJk Rm9jdXMgPT0ga2V5Ym9hcmRGb2N1cykKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgaWYgKG1X YXlsYW5kSW50ZWdyYXRpb24tPm1TaGVsbEludGVncmF0aW9uKSB7CistICAgICAgICBtV2F5bGFu ZEludGVncmF0aW9uLT5tU2hlbGxJbnRlZ3JhdGlvbi0+aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5n ZWQoa2V5Ym9hcmRGb2N1cywgbUxhc3RLZXlib2FyZEZvY3VzKTsKKy0gICAgfSBlbHNlIHsKKy0g ICAgICAgIGlmIChrZXlib2FyZEZvY3VzKQorLSAgICAgICAgICAgIGhhbmRsZVdpbmRvd0FjdGl2 YXRlZChrZXlib2FyZEZvY3VzKTsKKy0gICAgICAgIGlmIChtTGFzdEtleWJvYXJkRm9jdXMpCist ICAgICAgICAgICAgaGFuZGxlV2luZG93RGVhY3RpdmF0ZWQobUxhc3RLZXlib2FyZEZvY3VzKTsK Ky0gICAgfQorKyAgICBpZiAoa2V5Ym9hcmRGb2N1cykKKysgICAgICAgIGhhbmRsZVdpbmRvd0Fj dGl2YXRlZChrZXlib2FyZEZvY3VzKTsKKysgICAgaWYgKG1MYXN0S2V5Ym9hcmRGb2N1cykKKysg ICAgICAgIGhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG1MYXN0S2V5Ym9hcmRGb2N1cyk7CisgCisg ICAgIG1MYXN0S2V5Ym9hcmRGb2N1cyA9IGtleWJvYXJkRm9jdXM7CisgfQorQEAgLTYwMCw2ICs3 MTEsMTkgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmhhbmRsZVdheWxhbmRTeW5jKCkKKyAgICAg UVdpbmRvdyAqYWN0aXZlV2luZG93ID0gbUFjdGl2ZVdpbmRvd3MuZW1wdHkoKSA/IG51bGxwdHIg OiBtQWN0aXZlV2luZG93cy5sYXN0KCktPndpbmRvdygpOworICAgICBpZiAoYWN0aXZlV2luZG93 ICE9IFFHdWlBcHBsaWNhdGlvbjo6Zm9jdXNXaW5kb3coKSkKKyAgICAgICAgIFFXaW5kb3dTeXN0 ZW1JbnRlcmZhY2U6OmhhbmRsZVdpbmRvd0FjdGl2YXRlZChhY3RpdmVXaW5kb3cpOworKworKyAg ICBpZiAoIWFjdGl2ZVdpbmRvdykgeworKyAgICAgICAgaWYgKGxhc3RJbnB1dERldmljZSgpKSB7 CisrI2lmIFFUX0NPTkZJRyhjbGlwYm9hcmQpCisrICAgICAgICAgICAgaWYgKGF1dG8gKmRhdGFE ZXZpY2UgPSBsYXN0SW5wdXREZXZpY2UoKS0+ZGF0YURldmljZSgpKQorKyAgICAgICAgICAgICAg ICBkYXRhRGV2aWNlLT5pbnZhbGlkYXRlU2VsZWN0aW9uT2ZmZXIoKTsKKysjZW5kaWYKKysjaWYg UVRfQ09ORklHKHdheWxhbmRfY2xpZW50X3ByaW1hcnlfc2VsZWN0aW9uKQorKyAgICAgICAgICAg IGlmIChhdXRvICpkZXZpY2UgPSBsYXN0SW5wdXREZXZpY2UoKS0+cHJpbWFyeVNlbGVjdGlvbkRl dmljZSgpKQorKyAgICAgICAgICAgICAgICBkZXZpY2UtPmludmFsaWRhdGVTZWxlY3Rpb25PZmZl cigpOworKyNlbmRpZgorKyAgICAgICAgfQorKyAgICB9CisgfQorIAorIGNvbnN0IHdsX2NhbGxi YWNrX2xpc3RlbmVyIFFXYXlsYW5kRGlzcGxheTo6c3luY0NhbGxiYWNrTGlzdGVuZXIgPSB7CitA QCAtNjI2LDYgKzc1MCwxMyBAQCBRV2F5bGFuZElucHV0RGV2aWNlICpRV2F5bGFuZERpc3BsYXk6 OmRlZmF1bHRJbnB1dERldmljZSgpIGNvbnN0CisgICAgIHJldHVybiBtSW5wdXREZXZpY2VzLmlz RW1wdHkoKSA/IDAgOiBtSW5wdXREZXZpY2VzLmZpcnN0KCk7CisgfQorIAorK2Jvb2wgUVdheWxh bmREaXNwbGF5Ojppc0tleWJvYXJkQXZhaWxhYmxlKCkgY29uc3QKKyt7CisrICAgIHJldHVybiBz dGQ6OmFueV9vZigKKysgICAgICAgICAgICBtSW5wdXREZXZpY2VzLmNvbnN0QmVnaW4oKSwgbUlu cHV0RGV2aWNlcy5jb25zdEVuZCgpLAorKyAgICAgICAgICAgIFt0aGlzXShjb25zdCBRV2F5bGFu ZElucHV0RGV2aWNlICpkZXZpY2UpIHsgcmV0dXJuIGRldmljZS0+a2V5Ym9hcmQoKSAhPSBudWxs cHRyOyB9KTsKKyt9CisrCisgI2lmIFFUX0NPTkZJRyhjdXJzb3IpCisgCisgUVdheWxhbmRDdXJz b3IgKlFXYXlsYW5kRGlzcGxheTo6d2F5bGFuZEN1cnNvcigpCitAQCAtNjUyLDQgKzc4Myw2IEBA IFFXYXlsYW5kQ3Vyc29yVGhlbWUgKlFXYXlsYW5kRGlzcGxheTo6bG9hZEN1cnNvclRoZW1lKGNv bnN0IFFTdHJpbmcgJm5hbWUsIGludCBwCisgCisgfSAvLyBuYW1lc3BhY2UgUXRXYXlsYW5kQ2xp ZW50CisgCisrI2luY2x1ZGUgInF3YXlsYW5kZGlzcGxheS5tb2MiCisrCisgUVRfRU5EX05BTUVT UEFDRQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheV9w LmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXlfcC5oCitpbmRleCAzYjA5 MmJjOC4uNDJiYzY2MWQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGRpc3BsYXlfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXlf cC5oCitAQCAtMTA5LDYgKzEwOSw3IEBAIGNsYXNzIFFXYXlsYW5kU3VyZmFjZTsKKyBjbGFzcyBR V2F5bGFuZFNoZWxsSW50ZWdyYXRpb247CisgY2xhc3MgUVdheWxhbmRDdXJzb3I7CisgY2xhc3Mg UVdheWxhbmRDdXJzb3JUaGVtZTsKKytjbGFzcyBFdmVudFRocmVhZDsKKyAKKyB0eXBlZGVmIHZv aWQgKCpSZWdpc3RyeUxpc3RlbmVyKSh2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCB3bF9yZWdpc3RyeSAqcmVnaXN0cnksCitAQCAtMTIwLDE1ICsx MjEsMTEgQEAgY2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9FWFBPUlQgUVdheWxhbmREaXNwbGF5IDog cHVibGljIFFPYmplY3QsIHB1YmxpYyBRdFdheWxhbmQKKyAgICAgUV9PQkpFQ1QKKyAKKyBwdWJs aWM6CistICAgIHN0cnVjdCBGcmFtZVF1ZXVlIHsKKy0gICAgICAgIEZyYW1lUXVldWUod2xfZXZl bnRfcXVldWUgKnEgPSBudWxscHRyKSA6IHF1ZXVlKHEpLCBtdXRleChuZXcgUU11dGV4KSB7fQor LSAgICAgICAgd2xfZXZlbnRfcXVldWUgKnF1ZXVlOworLSAgICAgICAgUU11dGV4ICptdXRleDsK Ky0gICAgfTsKKy0KKyAgICAgUVdheWxhbmREaXNwbGF5KFFXYXlsYW5kSW50ZWdyYXRpb24gKndh eWxhbmRJbnRlZ3JhdGlvbik7CisgICAgIH5RV2F5bGFuZERpc3BsYXkodm9pZCkgb3ZlcnJpZGU7 CisgCisrICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworKworICNpZiBRVF9DT05GSUcoeGtiY29tbW9u KQorICAgICBzdHJ1Y3QgeGtiX2NvbnRleHQgKnhrYkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBt WGtiQ29udGV4dC5nZXQoKTsgfQorICNlbmRpZgorQEAgLTIxMCwxMSArMjA3LDExIEBAIHB1Ymxp YzoKKyAgICAgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZElucHV0RGV2 aWNlICppbnB1dERldmljZSk7CisgICAgIHZvaWQgaGFuZGxlV2luZG93RGVzdHJveWVkKFFXYXls YW5kV2luZG93ICp3aW5kb3cpOworIAorLSAgICB3bF9ldmVudF9xdWV1ZSAqY3JlYXRlRXZlbnRR dWV1ZSgpOworLSAgICBGcmFtZVF1ZXVlIGNyZWF0ZUZyYW1lUXVldWUoKTsKKy0gICAgdm9pZCBk ZXN0cm95RnJhbWVRdWV1ZShjb25zdCBGcmFtZVF1ZXVlICZxKTsKKy0gICAgdm9pZCBkaXNwYXRj aFF1ZXVlV2hpbGUod2xfZXZlbnRfcXVldWUgKnF1ZXVlLCBzdGQ6OmZ1bmN0aW9uPGJvb2woKT4g Y29uZGl0aW9uLCBpbnQgdGltZW91dCA9IC0xKTsKKysgICAgd2xfZXZlbnRfcXVldWUgKmZyYW1l RXZlbnRRdWV1ZSgpIHsgcmV0dXJuIG1fZnJhbWVFdmVudFF1ZXVlOyB9OworKworKyAgICBib29s IGlzS2V5Ym9hcmRBdmFpbGFibGUoKSBjb25zdDsKKyAKKysgICAgdm9pZCBpbml0RXZlbnRUaHJl YWQoKTsKKyBwdWJsaWMgc2xvdHM6CisgICAgIHZvaWQgYmxvY2tpbmdSZWFkRXZlbnRzKCk7Cisg ICAgIHZvaWQgZmx1c2hSZXF1ZXN0cygpOworQEAgLTIzNyw2ICsyMzQsOSBAQCBwcml2YXRlOgor ICAgICB9OworIAorICAgICBzdHJ1Y3Qgd2xfZGlzcGxheSAqbURpc3BsYXkgPSBudWxscHRyOwor KyAgICBRU2NvcGVkUG9pbnRlcjxFdmVudFRocmVhZD4gbV9ldmVudFRocmVhZDsKKysgICAgd2xf ZXZlbnRfcXVldWUgKm1fZnJhbWVFdmVudFF1ZXVlID0gbnVsbHB0cjsKKysgICAgUVNjb3BlZFBv aW50ZXI8RXZlbnRUaHJlYWQ+IG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkOworICAgICBRdFdheWxh bmQ6OndsX2NvbXBvc2l0b3IgbUNvbXBvc2l0b3I7CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXls YW5kU2htPiBtU2htOworICAgICBRTGlzdDxRV2F5bGFuZFNjcmVlbiAqPiBtV2FpdGluZ1NjcmVl bnM7CitAQCAtMjczLDExICsyNzMsOSBAQCBwcml2YXRlOgorICAgICBRV2F5bGFuZElucHV0RGV2 aWNlICptTGFzdElucHV0RGV2aWNlID0gbnVsbHB0cjsKKyAgICAgUVBvaW50ZXI8UVdheWxhbmRX aW5kb3c+IG1MYXN0SW5wdXRXaW5kb3c7CisgICAgIFFQb2ludGVyPFFXYXlsYW5kV2luZG93PiBt TGFzdEtleWJvYXJkRm9jdXM7CistICAgIFFWZWN0b3I8UVdheWxhbmRXaW5kb3cgKj4gbUFjdGl2 ZVdpbmRvd3M7CistICAgIFFWZWN0b3I8RnJhbWVRdWV1ZT4gbUV4dGVybmFsUXVldWVzOworKyAg ICBRTGlzdDxRV2F5bGFuZFdpbmRvdyAqPiBtQWN0aXZlV2luZG93czsKKyAgICAgc3RydWN0IHds X2NhbGxiYWNrICptU3luY0NhbGxiYWNrID0gbnVsbHB0cjsKKyAgICAgc3RhdGljIGNvbnN0IHds X2NhbGxiYWNrX2xpc3RlbmVyIHN5bmNDYWxsYmFja0xpc3RlbmVyOworLSAgICBRUmVhZFdyaXRl TG9jayBtX2ZyYW1lUXVldWVMb2NrOworIAorICAgICBib29sIG1DbGllbnRTaWRlSW5wdXRDb250 ZXh0UmVxdWVzdGVkID0gIVFQbGF0Zm9ybUlucHV0Q29udGV4dEZhY3Rvcnk6OnJlcXVlc3RlZCgp LmlzTnVsbCgpOworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k ZG5kLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kLmNwcAoraW5kZXggNjUz NWFhMTYuLjdjNTNmNWZhIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRkbmQuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZC5jcHAKK0BA IC02Niw3ICs2Niw3IEBAIHZvaWQgUVdheWxhbmREcmFnOjpzdGFydERyYWcoKQorIHsKKyAgICAg UUJhc2ljRHJhZzo6c3RhcnREcmFnKCk7CisgICAgIFFXYXlsYW5kV2luZG93ICppY29uID0gc3Rh dGljX2Nhc3Q8UVdheWxhbmRXaW5kb3cgKj4oc2hhcGVkUGl4bWFwV2luZG93KCktPmhhbmRsZSgp KTsKKy0gICAgaWYgKG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPmRhdGFEZXZpY2Uo KS0+c3RhcnREcmFnKGRyYWcoKS0+bWltZURhdGEoKSwgaWNvbikpIHsKKysgICAgaWYgKG1fZGlz cGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPmRhdGFEZXZpY2UoKS0+c3RhcnREcmFnKGRyYWco KS0+bWltZURhdGEoKSwgZHJhZygpLT5zdXBwb3J0ZWRBY3Rpb25zKCksIGljb24pKSB7CisgICAg ICAgICBpY29uLT5hZGRBdHRhY2hPZmZzZXQoLWRyYWcoKS0+aG90U3BvdCgpKTsKKyAgICAgfSBl bHNlIHsKKyAgICAgICAgIC8vIENhbmNlbGxpbmcgaW1tZWRpYXRlbHkgZG9lcyBub3Qgd29yaywg c2luY2UgdGhlIGV2ZW50IGxvb3AgZm9yIFFEcmFnOjpleGVjIGlzIHN0YXJ0ZWQKK0BAIC04MCw2 ICs4MCw5IEBAIHZvaWQgUVdheWxhbmREcmFnOjpjYW5jZWwoKQorICAgICBRQmFzaWNEcmFnOjpj YW5jZWwoKTsKKyAKKyAgICAgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+ZGF0YURl dmljZSgpLT5jYW5jZWxEcmFnKCk7CisrCisrICAgIGlmIChkcmFnKCkpCisrICAgICAgICBkcmFn KCktPmRlbGV0ZUxhdGVyKCk7CisgfQorIAorIHZvaWQgUVdheWxhbmREcmFnOjptb3ZlKGNvbnN0 IFFQb2ludCAmZ2xvYmFsUG9zLCBRdDo6TW91c2VCdXR0b25zIGIsIFF0OjpLZXlib2FyZE1vZGlm aWVycyBtb2RzKQorQEAgLTEwMywzMyArMTA2LDQxIEBAIHZvaWQgUVdheWxhbmREcmFnOjplbmRE cmFnKCkKKyAgICAgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+aGFuZGxlRW5kRHJh ZygpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kRHJhZzo6dXBkYXRlVGFyZ2V0KGNvbnN0IFFTdHJp bmcgJm1pbWVUeXBlKQorK3ZvaWQgUVdheWxhbmREcmFnOjpzZXRSZXNwb25zZShib29sIGFjY2Vw dGVkKQorIHsKKy0gICAgc2V0Q2FuRHJvcCghbWltZVR5cGUuaXNFbXB0eSgpKTsKKy0KKy0gICAg aWYgKGNhbkRyb3AoKSkgeworLSAgICAgICAgdXBkYXRlQ3Vyc29yKGRlZmF1bHRBY3Rpb24oZHJh ZygpLT5zdXBwb3J0ZWRBY3Rpb25zKCksIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCkt Pm1vZGlmaWVycygpKSk7CistICAgIH0gZWxzZSB7CistICAgICAgICB1cGRhdGVDdXJzb3IoUXQ6 Oklnbm9yZUFjdGlvbik7CistICAgIH0KKysgICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBmb3Ig b2xkIERhdGFEZXZpY2VzIHdoZXJlIHRoZSBkcmFnIGFjdGlvbiBpcyBub3QgY29tbXVuaWNhdGVk CisrICAgIFF0OjpEcm9wQWN0aW9uIGFjdGlvbiA9IGRlZmF1bHRBY3Rpb24oZHJhZygpLT5zdXBw b3J0ZWRBY3Rpb25zKCksIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPm1vZGlmaWVy cygpKTsKKysgICAgc2V0UmVzcG9uc2UoUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UoYWNjZXB0ZWQs IGFjdGlvbikpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kRHJhZzo6c2V0UmVzcG9uc2UoY29uc3Qg UVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlKQorK3ZvaWQgUVdheWxhbmREcmFnOjpz ZXRSZXNwb25zZShjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpCisgewor ICAgICBzZXRDYW5Ecm9wKHJlc3BvbnNlLmlzQWNjZXB0ZWQoKSk7CisgCisgICAgIGlmIChjYW5E cm9wKCkpIHsKKy0gICAgICAgIHVwZGF0ZUN1cnNvcihkZWZhdWx0QWN0aW9uKGRyYWcoKS0+c3Vw cG9ydGVkQWN0aW9ucygpLCBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5tb2RpZmll cnMoKSkpOworKyAgICAgICAgdXBkYXRlQ3Vyc29yKHJlc3BvbnNlLmFjY2VwdGVkQWN0aW9uKCkp OworICAgICB9IGVsc2UgeworICAgICAgICAgdXBkYXRlQ3Vyc29yKFF0OjpJZ25vcmVBY3Rpb24p OworICAgICB9CisgfQorIAorLXZvaWQgUVdheWxhbmREcmFnOjpmaW5pc2hEcmFnKGNvbnN0IFFQ bGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSkKKyt2b2lkIFFXYXlsYW5kRHJhZzo6c2V0 RHJvcFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSkKKyB7 CisgICAgIHNldEV4ZWN1dGVkRHJvcEFjdGlvbihyZXNwb25zZS5hY2NlcHRlZEFjdGlvbigpKTsK Kyt9CisrCisrdm9pZCBRV2F5bGFuZERyYWc6OmZpbmlzaERyYWcoKQorK3sKKyAgICAgUUtleUV2 ZW50IGV2ZW50KFFFdmVudDo6S2V5UHJlc3MsIFF0OjpLZXlfRXNjYXBlLCBRdDo6Tm9Nb2RpZmll cik7CisgICAgIGV2ZW50RmlsdGVyKHNoYXBlZFBpeG1hcFdpbmRvdygpLCAmZXZlbnQpOworKwor KyAgICBpZiAoZHJhZygpKQorKyAgICAgICAgZHJhZygpLT5kZWxldGVMYXRlcigpOworK30KKysK Kytib29sIFFXYXlsYW5kRHJhZzo6b3duc0RyYWdPYmplY3QoKSBjb25zdAorK3sKKysgICAgcmV0 dXJuIHRydWU7CisgfQorIAorIH0KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGRuZF9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZF9wLmgKK2lu ZGV4IDQ3NGZlMmFiLi40NmY2MjlhYyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kZG5kX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmRf cC5oCitAQCAtNzEsOSArNzEsMTAgQEAgcHVibGljOgorICAgICBRV2F5bGFuZERyYWcoUVdheWxh bmREaXNwbGF5ICpkaXNwbGF5KTsKKyAgICAgflFXYXlsYW5kRHJhZygpIG92ZXJyaWRlOworIAor LSAgICB2b2lkIHVwZGF0ZVRhcmdldChjb25zdCBRU3RyaW5nICZtaW1lVHlwZSk7CistICAgIHZv aWQgc2V0UmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlKTsK Ky0gICAgdm9pZCBmaW5pc2hEcmFnKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNw b25zZSk7CisrICAgIHZvaWQgc2V0UmVzcG9uc2UoYm9vbCBhY2NlcHRlZCk7CisrICAgIHZvaWQg c2V0UmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKTsKKysg ICAgdm9pZCBzZXREcm9wUmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJl c3BvbnNlKTsKKysgICAgdm9pZCBmaW5pc2hEcmFnKCk7CisgCisgcHJvdGVjdGVkOgorICAgICB2 b2lkIHN0YXJ0RHJhZygpIG92ZXJyaWRlOworQEAgLTgyLDYgKzgzLDcgQEAgcHJvdGVjdGVkOgor ICAgICB2b2lkIGRyb3AoY29uc3QgUVBvaW50ICZnbG9iYWxQb3MsIFF0OjpNb3VzZUJ1dHRvbnMg YiwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZHMpIG92ZXJyaWRlOworICAgICB2b2lkIGVuZERy YWcoKSBvdmVycmlkZTsKKyAKKysgICAgYm9vbCBvd25zRHJhZ09iamVjdCgpIGNvbnN0IG92ZXJy aWRlOworIAorIHByaXZhdGU6CisgICAgIFFXYXlsYW5kRGlzcGxheSAqbV9kaXNwbGF5ID0gbnVs bHB0cjsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGlucHV0ZGV2 aWNlLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW5wdXRkZXZpY2UuY3BwCitp bmRleCA2MTNmZTg2Mi4uNGI5MGRlODQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGlucHV0ZGV2aWNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRpbnB1dGRldmljZS5jcHAKK0BAIC02ODUsNiArNjg1LDExIEBAIHB1YmxpYzoKKyAKKyB2 b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OlBvaW50ZXI6OnBvaW50ZXJfbGVhdmUodWludDMyX3Qg dGltZSwgc3RydWN0IHdsX3N1cmZhY2UgKnN1cmZhY2UpCisgeworKyAgICBpbnZhbGlkYXRlRm9j dXMoKTsKKysgICAgbUJ1dHRvbnMgPSBRdDo6Tm9CdXR0b247CisrCisrICAgIG1QYXJlbnQtPm1U aW1lID0gdGltZTsKKysKKyAgICAgLy8gVGhlIGV2ZW50IG1heSBhcnJpdmUgYWZ0ZXIgZGVzdHJv eWluZyB0aGUgd2luZG93LCBpbmRpY2F0ZWQgYnkKKyAgICAgLy8gYSBudWxsIHN1cmZhY2UuCisg ICAgIGlmICghc3VyZmFjZSkKK0BAIC02OTYsMTEgKzcwMSw2IEBAIHZvaWQgUVdheWxhbmRJbnB1 dERldmljZTo6UG9pbnRlcjo6cG9pbnRlcl9sZWF2ZSh1aW50MzJfdCB0aW1lLCBzdHJ1Y3Qgd2xf c3VyZmFjCisgCisgICAgIGlmICghUVdheWxhbmRXaW5kb3c6Om1vdXNlR3JhYigpKQorICAgICAg ICAgc2V0RnJhbWVFdmVudChuZXcgTGVhdmVFdmVudCh3aW5kb3csIG1TdXJmYWNlUG9zLCBtR2xv YmFsUG9zKSk7CistCistICAgIGludmFsaWRhdGVGb2N1cygpOworLSAgICBtQnV0dG9ucyA9IFF0 OjpOb0J1dHRvbjsKKy0KKy0gICAgbVBhcmVudC0+bVRpbWUgPSB0aW1lOworIH0KKyAKKyBjbGFz cyBNb3Rpb25FdmVudCA6IHB1YmxpYyBRV2F5bGFuZFBvaW50ZXJFdmVudAorQEAgLTEzMDAsMTQg KzEzMDAsNiBAQCB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OktleWJvYXJkOjpoYW5kbGVGb2N1 c0Rlc3Ryb3llZCgpCisgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpLZXlib2FyZDo6aGFuZGxl Rm9jdXNMb3N0KCkKKyB7CisgICAgIG1Gb2N1cyA9IG51bGxwdHI7CistI2lmIFFUX0NPTkZJRyhj bGlwYm9hcmQpCistICAgIGlmIChhdXRvICpkYXRhRGV2aWNlID0gbVBhcmVudC0+ZGF0YURldmlj ZSgpKQorLSAgICAgICAgZGF0YURldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlvbk9mZmVyKCk7Cist I2VuZGlmCistI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5X3NlbGVjdGlvbikK Ky0gICAgaWYgKGF1dG8gKmRldmljZSA9IG1QYXJlbnQtPnByaW1hcnlTZWxlY3Rpb25EZXZpY2Uo KSkKKy0gICAgICAgIGRldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlvbk9mZmVyKCk7CistI2VuZGlm CisgICAgIG1QYXJlbnQtPm1RRGlzcGxheS0+aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQobVBh cmVudCk7CisgICAgIG1SZXBlYXRUaW1lci5zdG9wKCk7CisgfQorQEAgLTEzOTYsNiArMTM4OCw3 IEBAIHZvaWQgUVdheWxhbmRJbnB1dERldmljZTo6VG91Y2g6OnRvdWNoX2NhbmNlbCgpCisgICAg IGlmICh0b3VjaEV4dCkKKyAgICAgICAgIHRvdWNoRXh0LT50b3VjaENhbmNlbGVkKCk7CisgCisr ICAgIG1Gb2N1cyA9IG51bGxwdHI7CisgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRs ZVRvdWNoQ2FuY2VsRXZlbnQobnVsbHB0ciwgbVBhcmVudC0+bVRvdWNoRGV2aWNlKTsKKyB9Cisg CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbi5j cHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uLmNwcAoraW5kZXgg YzUzY2NiNzguLjU0ODYxNjAwIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k aW50ZWdyYXRpb24uY3BwCitAQCAtMTI1LDYgKzEyNSw5IEBAIFFXYXlsYW5kSW50ZWdyYXRpb246 OlFXYXlsYW5kSW50ZWdyYXRpb24oKQorICNlbmRpZgorIAorICAgICByZWNvbmZpZ3VyZUlucHV0 Q29udGV4dCgpOworKworKyAgICBRV2F5bGFuZFdpbmRvdzo6Zml4ZWRUb3BsZXZlbFBvc2l0aW9u cyA9CisrICAgICAgICAgICAgIXFFbnZpcm9ubWVudFZhcmlhYmxlSXNTZXQoIlFUX1dBWUxBTkRf RElTQUJMRV9GSVhFRF9QT1NJVElPTlMiKTsKKyB9CisgCisgUVdheWxhbmRJbnRlZ3JhdGlvbjo6 flFXYXlsYW5kSW50ZWdyYXRpb24oKQorQEAgLTE5MiwxNCArMTk1LDE4IEBAIFFBYnN0cmFjdEV2 ZW50RGlzcGF0Y2hlciAqUVdheWxhbmRJbnRlZ3JhdGlvbjo6Y3JlYXRlRXZlbnREaXNwYXRjaGVy KCkgY29uc3QKKyAKKyB2b2lkIFFXYXlsYW5kSW50ZWdyYXRpb246OmluaXRpYWxpemUoKQorIHsK KysgICAgbURpc3BsYXktPmluaXRFdmVudFRocmVhZCgpOworKworKyAgICAvLyBDYWxsIGFmdGVy IGV2ZW50RGlzcGF0Y2hlciBpcyBmdWxseSBjb25uZWN0ZWQsIGZvciBRV2F5bGFuZERpc3BsYXk6 OmZvcmNlUm91bmRUcmlwKCkKKysgICAgbURpc3BsYXktPmluaXRpYWxpemUoKTsKKysKKysgICAg Ly8gQnV0IHRoZSBhYm91dFRvQmxvY2soKSBhbmQgYXdha2UoKSBzaG91bGQgYmUgY29ubmVjdGVk IGFmdGVyIGluaXRpYWxpemVQbGF0Zm9ybSgpLgorKyAgICAvLyBPdGhlcndpc2UgdGhlIGNvbm5l Y3RlZCBmbHVzaFJlcXVlc3RzKCkgbWF5IGNvbnN1bWVzIHVwIGFsbCBldmVudHMgYmVmb3JlIHBy b2Nlc3NFdmVudHMgc3RhcnRzIHRvIHdhaXQsCisrICAgIC8vIHNvIHRoYXQgcHJvY2Vzc0V2ZW50 cyhRRXZlbnRMb29wOjpXYWl0Rm9yTW9yZUV2ZW50cykgbWF5IGJlIGJsb2NrZWQgaW4gdGhlIGZv cmNlUm91bmRUcmlwKCkuCisgICAgIFFBYnN0cmFjdEV2ZW50RGlzcGF0Y2hlciAqZGlzcGF0Y2hl ciA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OmV2ZW50RGlzcGF0Y2hlcjsKKyAgICAgUU9iamVj dDo6Y29ubmVjdChkaXNwYXRjaGVyLCBTSUdOQUwoYWJvdXRUb0Jsb2NrKCkpLCBtRGlzcGxheS5k YXRhKCksIFNMT1QoZmx1c2hSZXF1ZXN0cygpKSk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QoZGlz cGF0Y2hlciwgU0lHTkFMKGF3YWtlKCkpLCBtRGlzcGxheS5kYXRhKCksIFNMT1QoZmx1c2hSZXF1 ZXN0cygpKSk7CisgCistICAgIGludCBmZCA9IHdsX2Rpc3BsYXlfZ2V0X2ZkKG1EaXNwbGF5LT53 bF9kaXNwbGF5KCkpOworLSAgICBRU29ja2V0Tm90aWZpZXIgKnNuID0gbmV3IFFTb2NrZXROb3Rp ZmllcihmZCwgUVNvY2tldE5vdGlmaWVyOjpSZWFkLCBtRGlzcGxheS5kYXRhKCkpOworLSAgICBR T2JqZWN0Ojpjb25uZWN0KHNuLCBTSUdOQUwoYWN0aXZhdGVkKFFTb2NrZXREZXNjcmlwdG9yKSks IG1EaXNwbGF5LmRhdGEoKSwgU0xPVChmbHVzaFJlcXVlc3RzKCkpKTsKKy0KKyAgICAgLy8gUXQg ZG9lcyBub3Qgc3VwcG9ydCBydW5uaW5nIHdpdGggbm8gc2NyZWVucworICAgICBtRGlzcGxheS0+ ZW5zdXJlU2NyZWVuKCk7CisgfQorQEAgLTI2Miw2ICsyNjksMTQgQEAgUVdheWxhbmREaXNwbGF5 ICpRV2F5bGFuZEludGVncmF0aW9uOjpkaXNwbGF5KCkgY29uc3QKKyAgICAgcmV0dXJuIG1EaXNw bGF5LmRhdGEoKTsKKyB9CisgCisrUXQ6OktleWJvYXJkTW9kaWZpZXJzIFFXYXlsYW5kSW50ZWdy YXRpb246OnF1ZXJ5S2V5Ym9hcmRNb2RpZmllcnMoKSBjb25zdAorK3sKKysgICAgaWYgKGF1dG8g KnNlYXQgPSBtRGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCkpIHsKKysgICAgICAgIHJldHVy biBzZWF0LT5tb2RpZmllcnMoKTsKKysgICAgfQorKyAgICByZXR1cm4gUXQ6Ok5vTW9kaWZpZXI7 CisrfQorKworIFFMaXN0PGludD4gUVdheWxhbmRJbnRlZ3JhdGlvbjo6cG9zc2libGVLZXlzKGNv bnN0IFFLZXlFdmVudCAqZXZlbnQpIGNvbnN0CisgeworICAgICBpZiAoYXV0byAqc2VhdCA9IG1E aXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKSkKK0BAIC00NzksNyArNDk0LDcgQEAgdm9pZCBR V2F5bGFuZEludGVncmF0aW9uOjpyZWNvbmZpZ3VyZUlucHV0Q29udGV4dCgpCisgICAgIH0KKyAj ZW5kaWYKKyAKKy0gICAgcUNEZWJ1ZyhsY1FwYVdheWxhbmQpIDw8ICJ1c2luZyBpbnB1dCBtZXRo b2Q6IiA8PCBpbnB1dENvbnRleHQoKS0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKTsKKysgICAg cUNEZWJ1ZyhsY1FwYVdheWxhbmQpIDw8ICJ1c2luZyBpbnB1dCBtZXRob2Q6IiA8PCAoaW5wdXRD b250ZXh0KCkgPyBpbnB1dENvbnRleHQoKS0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKSA6ICI8 bm9uZT4iKTsKKyB9CisgCisgUVdheWxhbmRTaGVsbEludGVncmF0aW9uICpRV2F5bGFuZEludGVn cmF0aW9uOjpjcmVhdGVTaGVsbEludGVncmF0aW9uKGNvbnN0IFFTdHJpbmcgJmludGVncmF0aW9u TmFtZSkKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0 aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb25fcC5oCitp bmRleCBmZjcwYWUyNS4uNzNiODA2NTggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGludGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRpbnRlZ3JhdGlvbl9wLmgKK0BAIC0xMDcsNiArMTA3LDggQEAgcHVibGljOgorIAorICAg ICBRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkoKSBjb25zdDsKKyAKKysgICAgUXQ6OktleWJvYXJk TW9kaWZpZXJzIHF1ZXJ5S2V5Ym9hcmRNb2RpZmllcnMoKSBjb25zdCBvdmVycmlkZTsKKysKKyAg ICAgUUxpc3Q8aW50PiBwb3NzaWJsZUtleXMoY29uc3QgUUtleUV2ZW50ICpldmVudCkgY29uc3Qg b3ZlcnJpZGU7CisgCisgICAgIFFTdHJpbmdMaXN0IHRoZW1lTmFtZXMoKSBjb25zdCBvdmVycmlk ZTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHByaW1hcnlzZWxl Y3Rpb252MS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHByaW1hcnlzZWxlY3Rp b252MS5jcHAKK2luZGV4IDgzMmY5Njc4Li5lYTUwODc3MSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVjdGlvbnYxLmNwcAorKysrIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRwcmltYXJ5c2VsZWN0aW9udjEuY3BwCitAQCAtNTQsMTEg KzU0LDYgQEAgUVdheWxhbmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlTWFuYWdlclYxOjpRV2F5bGFu ZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VNYW5hZ2VyVjEKKyAgICAgOiB6d3BfcHJpbWFyeV9zZWxl Y3Rpb25fZGV2aWNlX21hbmFnZXJfdjEoZGlzcGxheS0+d2xfcmVnaXN0cnkoKSwgaWQsIHFNaW4o dmVyc2lvbiwgdWludCgxKSkpCisgICAgICwgbV9kaXNwbGF5KGRpc3BsYXkpCisgeworLSAgICAv LyBDcmVhdGUgZGV2aWNlcyBmb3IgYWxsIHNlYXRzLgorLSAgICAvLyBUaGlzIG9ubHkgd29ya3Mg aWYgd2UgZ2V0IHRoZSBnbG9iYWwgYmVmb3JlIGFsbCBkZXZpY2VzCistICAgIGNvbnN0IGF1dG8g c2VhdHMgPSBtX2Rpc3BsYXktPmlucHV0RGV2aWNlcygpOworLSAgICBmb3IgKGF1dG8gKnNlYXQg OiBzZWF0cykKKy0gICAgICAgIHNlYXQtPnNldFByaW1hcnlTZWxlY3Rpb25EZXZpY2UoY3JlYXRl RGV2aWNlKHNlYXQpKTsKKyB9CisgCisgUVdheWxhbmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlVjEg KlFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRldmljZU1hbmFnZXJWMTo6Y3JlYXRlRGV2aWNlKFFX YXlsYW5kSW5wdXREZXZpY2UgKnNlYXQpCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRzY3JlZW4uY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3Jl ZW4uY3BwCitpbmRleCA2Y2IzMzdkZS4uNTUzN2RhZmQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kc2NyZWVuLmNwcAorQEAgLTYwLDcgKzYwLDcgQEAgUVdheWxhbmRYZGdPdXRwdXRN YW5hZ2VyVjE6OlFXYXlsYW5kWGRnT3V0cHV0TWFuYWdlclYxKFFXYXlsYW5kRGlzcGxheSogZGlz cGxheSwKKyB9CisgCisgUVdheWxhbmRTY3JlZW46OlFXYXlsYW5kU2NyZWVuKFFXYXlsYW5kRGlz cGxheSAqd2F5bGFuZERpc3BsYXksIGludCB2ZXJzaW9uLCB1aW50MzJfdCBpZCkKKy0gICAgOiBR dFdheWxhbmQ6OndsX291dHB1dCh3YXlsYW5kRGlzcGxheS0+d2xfcmVnaXN0cnkoKSwgaWQsIHFN aW4odmVyc2lvbiwgMikpCisrICAgIDogUXRXYXlsYW5kOjp3bF9vdXRwdXQod2F5bGFuZERpc3Bs YXktPndsX3JlZ2lzdHJ5KCksIGlkLCBxTWluKHZlcnNpb24sIDMpKQorICAgICAsIG1fb3V0cHV0 SWQoaWQpCisgICAgICwgbVdheWxhbmREaXNwbGF5KHdheWxhbmREaXNwbGF5KQorICAgICAsIG1P dXRwdXROYW1lKFFTdHJpbmdMaXRlcmFsKCJTY3JlZW4lMSIpLmFyZyhpZCkpCitAQCAtNzIsNyAr NzIsNyBAQCBRV2F5bGFuZFNjcmVlbjo6UVdheWxhbmRTY3JlZW4oUVdheWxhbmREaXNwbGF5ICp3 YXlsYW5kRGlzcGxheSwgaW50IHZlcnNpb24sIHVpbgorICAgICAgICAgcUNXYXJuaW5nKGxjUXBh V2F5bGFuZCkgPDwgIndsX291dHB1dCBkb25lIGV2ZW50IG5vdCBzdXBwb3J0ZWQgYnkgY29tcG9z aXRvciwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiUVNjcmVlbiBtYXkg bm90IHdvcmsgY29ycmVjdGx5IjsKKyAgICAgICAgIG1XYXlsYW5kRGlzcGxheS0+Zm9yY2VSb3Vu ZFRyaXAoKTsgLy8gR2l2ZSB0aGUgY29tcG9zaXRvciBhIGNoYW5jZSB0byBzZW5kIGdlb21ldHJ5 IGV0Yy4KKy0gICAgICAgIG1PdXRwdXREb25lID0gdHJ1ZTsgLy8gRmFrZSB0aGUgZG9uZSBldmVu dAorKyAgICAgICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBPdXRwdXREb25lRXZlbnQ7IC8vIEZha2Ug dGhlIGRvbmUgZXZlbnQKKyAgICAgICAgIG1heWJlSW5pdGlhbGl6ZSgpOworICAgICB9CisgfQor QEAgLTgxLDE2ICs4MSwyOSBAQCBRV2F5bGFuZFNjcmVlbjo6flFXYXlsYW5kU2NyZWVuKCkKKyB7 CisgICAgIGlmICh6eGRnX291dHB1dF92MTo6aXNJbml0aWFsaXplZCgpKQorICAgICAgICAgenhk Z19vdXRwdXRfdjE6OmRlc3Ryb3koKTsKKysgICAgaWYgKHdsX291dHB1dDo6aXNJbml0aWFsaXpl ZCgpICYmIHdsX291dHB1dF9nZXRfdmVyc2lvbih3bF9vdXRwdXQ6Om9iamVjdCgpKSA+PSBXTF9P VVRQVVRfUkVMRUFTRV9TSU5DRV9WRVJTSU9OKQorKyAgICAgICAgd2xfb3V0cHV0OjpyZWxlYXNl KCk7CisrfQorKworK3VpbnQgUVdheWxhbmRTY3JlZW46OnJlcXVpcmVkRXZlbnRzKCkgY29uc3QK Kyt7CisrICAgIHVpbnQgcmV0ID0gT3V0cHV0RG9uZUV2ZW50OworKworKyAgICBpZiAobVdheWxh bmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCkpIHsKKysgICAgICAgIHJldCB8PSBYZGdPdXRw dXROYW1lRXZlbnQ7CisrCisrICAgICAgICBpZiAobVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRN YW5hZ2VyKCktPnZlcnNpb24oKSA8IDMpCisrICAgICAgICAgICAgcmV0IHw9IFhkZ091dHB1dERv bmVFdmVudDsKKysgICAgfQorKyAgICByZXR1cm4gcmV0OworIH0KKyAKKyB2b2lkIFFXYXlsYW5k U2NyZWVuOjptYXliZUluaXRpYWxpemUoKQorIHsKKyAgICAgUV9BU1NFUlQoIW1Jbml0aWFsaXpl ZCk7CisgCistICAgIGlmICghbU91dHB1dERvbmUpCistICAgICAgICByZXR1cm47CistCistICAg IGlmIChtV2F5bGFuZERpc3BsYXktPnhkZ091dHB1dE1hbmFnZXIoKSAmJiAhbVhkZ091dHB1dERv bmUpCisrICAgIGNvbnN0IHVpbnQgcmVxdWlyZWRFdmVudHMgPSB0aGlzLT5yZXF1aXJlZEV2ZW50 cygpOworKyAgICBpZiAoKG1Qcm9jZXNzZWRFdmVudHMgJiByZXF1aXJlZEV2ZW50cykgIT0gcmVx dWlyZWRFdmVudHMpCisgICAgICAgICByZXR1cm47CisgCisgICAgIG1Jbml0aWFsaXplZCA9IHRy dWU7CitAQCAtMjc2LDkgKzI4OSw4IEBAIHZvaWQgUVdheWxhbmRTY3JlZW46Om91dHB1dF9zY2Fs ZShpbnQzMl90IGZhY3RvcikKKyAKKyB2b2lkIFFXYXlsYW5kU2NyZWVuOjpvdXRwdXRfZG9uZSgp CisgeworLSAgICBtT3V0cHV0RG9uZSA9IHRydWU7CistICAgIGlmICh6eGRnX291dHB1dF92MTo6 aXNJbml0aWFsaXplZCgpICYmIG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0TWFuYWdlcigpLT52 ZXJzaW9uKCkgPj0gMykKKy0gICAgICAgIG1YZGdPdXRwdXREb25lID0gdHJ1ZTsKKysgICAgbVBy b2Nlc3NlZEV2ZW50cyB8PSBPdXRwdXREb25lRXZlbnQ7CisrCisgICAgIGlmIChtSW5pdGlhbGl6 ZWQpIHsKKyAgICAgICAgIHVwZGF0ZU91dHB1dFByb3BlcnRpZXMoKTsKKyAgICAgICAgIGlmICh6 eGRnX291dHB1dF92MTo6aXNJbml0aWFsaXplZCgpKQorQEAgLTMzOSw3ICszNTEsNyBAQCB2b2lk IFFXYXlsYW5kU2NyZWVuOjp6eGRnX291dHB1dF92MV9kb25lKCkKKyAgICAgaWYgKFFfVU5MSUtF TFkobVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCktPnZlcnNpb24oKSA+PSAzKSkK KyAgICAgICAgIHFXYXJuaW5nKGxjUXBhV2F5bGFuZCkgPDwgInp4ZGdfb3V0cHV0X3YxLmRvbmUg cmVjZWl2ZWQgb24gdmVyc2lvbiAzIG9yIG5ld2VyLCB0aGlzIGlzIG1vc3QgbGlrZWx5IGEgYnVn IGluIHRoZSBjb21wb3NpdG9yIjsKKyAKKy0gICAgbVhkZ091dHB1dERvbmUgPSB0cnVlOworKyAg ICBtUHJvY2Vzc2VkRXZlbnRzIHw9IFhkZ091dHB1dERvbmVFdmVudDsKKyAgICAgaWYgKG1Jbml0 aWFsaXplZCkKKyAgICAgICAgIHVwZGF0ZVhkZ091dHB1dFByb3BlcnRpZXMoKTsKKyAgICAgZWxz ZQorQEAgLTM0OCw3ICszNjAsMTEgQEAgdm9pZCBRV2F5bGFuZFNjcmVlbjo6enhkZ19vdXRwdXRf djFfZG9uZSgpCisgCisgdm9pZCBRV2F5bGFuZFNjcmVlbjo6enhkZ19vdXRwdXRfdjFfbmFtZShj b25zdCBRU3RyaW5nICZuYW1lKQorIHsKKysgICAgaWYgKFFfVU5MSUtFTFkobUluaXRpYWxpemVk KSkKKysgICAgICAgIHFXYXJuaW5nKGxjUXBhV2F5bGFuZCkgPDwgInp4ZGdfb3V0cHV0X3YxLm5h bWUgcmVjZWl2ZWQgYWZ0ZXIgb3V0cHV0IGhhcyBiZWVuIGluaXRpYWxpemVkLCB0aGlzIGlzIG1v c3QgbGlrZWx5IGEgYnVnIGluIHRoZSBjb21wb3NpdG9yIjsKKysKKyAgICAgbU91dHB1dE5hbWUg PSBuYW1lOworKyAgICBtUHJvY2Vzc2VkRXZlbnRzIHw9IFhkZ091dHB1dE5hbWVFdmVudDsKKyB9 CisgCisgdm9pZCBRV2F5bGFuZFNjcmVlbjo6dXBkYXRlWGRnT3V0cHV0UHJvcGVydGllcygpCitk aWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW5fcC5oIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW5fcC5oCitpbmRleCBkZjFjOTRmMi4uMDUw Y2ZkYzAgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbl9w LmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuX3AuaAorQEAgLTEx Niw2ICsxMTYsMTMgQEAgcHVibGljOgorICAgICBzdGF0aWMgUVdheWxhbmRTY3JlZW4gKmZyb21X bE91dHB1dCg6OndsX291dHB1dCAqb3V0cHV0KTsKKyAKKyBwcml2YXRlOgorKyAgICBlbnVtIEV2 ZW50IDogdWludCB7CisrICAgICAgICBYZGdPdXRwdXREb25lRXZlbnQgPSAweDEsCisrICAgICAg ICBPdXRwdXREb25lRXZlbnQgPSAweDIsCisrICAgICAgICBYZGdPdXRwdXROYW1lRXZlbnQgPSAw eDQsCisrICAgIH07CisrICAgIHVpbnQgcmVxdWlyZWRFdmVudHMoKSBjb25zdDsKKysKKyAgICAg dm9pZCBvdXRwdXRfbW9kZSh1aW50MzJfdCBmbGFncywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBp bnQgcmVmcmVzaCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgb3V0cHV0X2dlb21ldHJ5KGludDMyX3Qg eCwgaW50MzJfdCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHdpZHRoLCBp bnQzMl90IGhlaWdodCwKK0BAIC0xNDgsOCArMTU1LDcgQEAgcHJpdmF0ZToKKyAgICAgUVNpemUg bVBoeXNpY2FsU2l6ZTsKKyAgICAgUVN0cmluZyBtT3V0cHV0TmFtZTsKKyAgICAgUXQ6OlNjcmVl bk9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24gPSBRdDo6UHJpbWFyeU9yaWVudGF0aW9uOworLSAg ICBib29sIG1PdXRwdXREb25lID0gZmFsc2U7CistICAgIGJvb2wgbVhkZ091dHB1dERvbmUgPSBm YWxzZTsKKysgICAgdWludCBtUHJvY2Vzc2VkRXZlbnRzID0gMDsKKyAgICAgYm9vbCBtSW5pdGlh bGl6ZWQgPSBmYWxzZTsKKyAKKyAjaWYgUVRfQ09ORklHKGN1cnNvcikKK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5jcHAgYi9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5jcHAKK2luZGV4IGRjN2ZmNjcw Li40MWNmZmRmNyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2ht YmFja2luZ3N0b3JlLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzaG1i YWNraW5nc3RvcmUuY3BwCitAQCAtNTIsNiArNTIsNyBAQAorIAorICNpbmNsdWRlIDxRdFdheWxh bmRDbGllbnQvcHJpdmF0ZS93YXlsYW5kLXdheWxhbmQtY2xpZW50LXByb3RvY29sLmg+CisgCisr I2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxzeXMv bW1hbi5oPgorIAorQEAgLTYxLDYgKzYyLDkgQEAKKyAjICBpZm5kZWYgTUZEX0NMT0VYRUMKKyAj ICAgIGRlZmluZSBNRkRfQ0xPRVhFQyAgICAgMHgwMDAxVQorICMgIGVuZGlmCisrIyAgaWZuZGVm IE1GRF9BTExPV19TRUFMSU5HCisrIyAgICBkZWZpbmUgTUZEX0FMTE9XX1NFQUxJTkcgMHgwMDAy VQorKyMgIGVuZGlmCisgI2VuZGlmCisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCitAQCAtNzQsOCAr NzgsMTAgQEAgUVdheWxhbmRTaG1CdWZmZXI6OlFXYXlsYW5kU2htQnVmZmVyKFFXYXlsYW5kRGlz cGxheSAqZGlzcGxheSwKKyAgICAgaW50IGFsbG9jID0gc3RyaWRlICogc2l6ZS5oZWlnaHQoKTsK KyAgICAgaW50IGZkID0gLTE7CisgCistI2lmZGVmIFNZU19tZW1mZF9jcmVhdGUKKy0gICAgZmQg PSBzeXNjYWxsKFNZU19tZW1mZF9jcmVhdGUsICJ3YXlsYW5kLXNobSIsIE1GRF9DTE9FWEVDKTsK KysjaWYgZGVmaW5lZChTWVNfbWVtZmRfY3JlYXRlKSAmJiBkZWZpbmVkKEZfU0VBTF9TRUFMKQor KyAgICBmZCA9IHN5c2NhbGwoU1lTX21lbWZkX2NyZWF0ZSwgIndheWxhbmQtc2htIiwgTUZEX0NM T0VYRUMgfCBNRkRfQUxMT1dfU0VBTElORyk7CisrICAgIGlmIChmZCA+PSAwKQorKyAgICAgICAg ZmNudGwoZmQsIEZfQUREX1NFQUxTLCBGX1NFQUxfU0hSSU5LIHwgRl9TRUFMX1NFQUwpOworICNl bmRpZgorIAorICAgICBRU2NvcGVkUG9pbnRlcjxRRmlsZT4gZmlsZVBvaW50ZXI7CitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3cuY3BwIGIvcXR3YXlsYW5k L3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3cuY3BwCitpbmRleCBjYjgyODU3YS4uZmIyYzU5ZGMg MTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvdy5jcHAKKysr KyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93LmNwcAorQEAgLTc2LDcgKzc2 LDYgQEAgUVdheWxhbmRXaW5kb3cgKlFXYXlsYW5kV2luZG93OjptTW91c2VHcmFiID0gbnVsbHB0 cjsKKyBRV2F5bGFuZFdpbmRvdzo6UVdheWxhbmRXaW5kb3coUVdpbmRvdyAqd2luZG93LCBRV2F5 bGFuZERpc3BsYXkgKmRpc3BsYXkpCisgICAgIDogUVBsYXRmb3JtV2luZG93KHdpbmRvdykKKyAg ICAgLCBtRGlzcGxheShkaXNwbGF5KQorLSAgICAsIG1GcmFtZVF1ZXVlKG1EaXNwbGF5LT5jcmVh dGVGcmFtZVF1ZXVlKCkpCisgICAgICwgbVJlc2l6ZUFmdGVyU3dhcChxRW52aXJvbm1lbnRWYXJp YWJsZUlzU2V0KCJRVF9XQVlMQU5EX1JFU0laRV9BRlRFUl9TV0FQIikpCisgeworICAgICB7CitA QCAtOTUsOSArOTQsNiBAQCBRV2F5bGFuZFdpbmRvdzo6UVdheWxhbmRXaW5kb3coUVdpbmRvdyAq d2luZG93LCBRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpCisgCisgUVdheWxhbmRXaW5kb3c6On5R V2F5bGFuZFdpbmRvdygpCisgeworLSAgICBtRGlzcGxheS0+ZGVzdHJveUZyYW1lUXVldWUobUZy YW1lUXVldWUpOworLSAgICBtRGlzcGxheS0+aGFuZGxlV2luZG93RGVzdHJveWVkKHRoaXMpOwor LQorICAgICBkZWxldGUgbVdpbmRvd0RlY29yYXRpb247CisgCisgICAgIGlmIChtU3VyZmFjZSkK K0BAIC0yNDMsNiArMjM5LDcgQEAgYm9vbCBRV2F5bGFuZFdpbmRvdzo6c2hvdWxkQ3JlYXRlU3Vi U3VyZmFjZSgpIGNvbnN0CisgCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVzZXQoKQorIHsKKysg ICAgY2xvc2VDaGlsZFBvcHVwcygpOworICAgICBkZWxldGUgbVNoZWxsU3VyZmFjZTsKKyAgICAg bVNoZWxsU3VyZmFjZSA9IG51bGxwdHI7CisgICAgIGRlbGV0ZSBtU3ViU3VyZmFjZVdpbmRvdzsK K0BAIC0yNTUsMTcgKzI1MiwyMiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXNldCgpCisgICAg ICAgICBtU3VyZmFjZS5yZXNldCgpOworICAgICB9CisgCistICAgIGlmIChtRnJhbWVDYWxsYmFj aykgeworLSAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShtRnJhbWVDYWxsYmFjayk7CistICAg ICAgICBtRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7CistICAgIH0KKysgICAgeworKyAgICAgICAg UU11dGV4TG9ja2VyIGxvY2soJm1GcmFtZVN5bmNNdXRleCk7CisrICAgICAgICBpZiAobUZyYW1l Q2FsbGJhY2spIHsKKysgICAgICAgICAgICB3bF9jYWxsYmFja19kZXN0cm95KG1GcmFtZUNhbGxi YWNrKTsKKysgICAgICAgICAgICBtRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7CisrICAgICAgICB9 CisgCistICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmludmFsaWRhdGUoKTsKKy0gICAg bVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7CisrICAgICAgICBtRnJhbWVDYWxsYmFj a0VsYXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7CisrICAgICAgICBtV2FpdGluZ0ZvckZyYW1lQ2Fs bGJhY2sgPSBmYWxzZTsKKysgICAgfQorICAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gZmFs c2U7CisgCisgICAgIG1NYXNrID0gUVJlZ2lvbigpOworICAgICBtUXVldWVkQnVmZmVyID0gbnVs bHB0cjsKKysKKysgICAgbURpc3BsYXktPmhhbmRsZVdpbmRvd0Rlc3Ryb3llZCh0aGlzKTsKKyB9 CisgCisgUVdheWxhbmRXaW5kb3cgKlFXYXlsYW5kV2luZG93Ojpmcm9tV2xTdXJmYWNlKDo6d2xf c3VyZmFjZSAqc3VyZmFjZSkKK0BAIC0zNTEsMTkgKzM1MywyNSBAQCB2b2lkIFFXYXlsYW5kV2lu ZG93OjpzZXRHZW9tZXRyeV9oZWxwZXIoY29uc3QgUVJlY3QgJnJlY3QpCisgICAgIH0KKyB9Cisg Cistdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJlY3QgJnJlY3QpCisr dm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJlY3QgJnIpCisgeworKyAg ICBhdXRvIHJlY3QgPSByOworKyAgICBpZiAoZml4ZWRUb3BsZXZlbFBvc2l0aW9ucyAmJiAhUVBs YXRmb3JtV2luZG93OjpwYXJlbnQoKSAmJiB3aW5kb3coKS0+dHlwZSgpICE9IFF0OjpQb3B1cAor KyAgICAgICAgJiYgd2luZG93KCktPnR5cGUoKSAhPSBRdDo6VG9vbFRpcCkgeworKyAgICAgICAg cmVjdC5tb3ZlVG8oc2NyZWVuKCktPmdlb21ldHJ5KCkudG9wTGVmdCgpKTsKKysgICAgfQorICAg ICBzZXRHZW9tZXRyeV9oZWxwZXIocmVjdCk7CisgCisgICAgIGlmICh3aW5kb3coKS0+aXNWaXNp YmxlKCkgJiYgcmVjdC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgIGlmIChtV2luZG93RGVjb3JhdGlv bikKKyAgICAgICAgICAgICBtV2luZG93RGVjb3JhdGlvbi0+dXBkYXRlKCk7CisgCistICAgICAg ICBpZiAobVJlc2l6ZUFmdGVyU3dhcCAmJiB3aW5kb3dUeXBlKCkgPT0gRWdsICYmIG1TZW50SW5p dGlhbFJlc2l6ZSkKKysgICAgICAgIGlmIChtUmVzaXplQWZ0ZXJTd2FwICYmIHdpbmRvd1R5cGUo KSA9PSBFZ2wgJiYgbVNlbnRJbml0aWFsUmVzaXplKSB7CisrICAgICAgICAgICAgUU11dGV4TG9j a2VyIGxvY2soJm1SZXNpemVMb2NrKTsKKyAgICAgICAgICAgICBtUmVzaXplRGlydHkgPSB0cnVl OworLSAgICAgICAgZWxzZQorKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBRV2luZG93 U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVHZW9tZXRyeUNoYW5nZSh3aW5kb3coKSwgZ2VvbWV0cnko KSk7CistCisrICAgICAgICB9CisgICAgICAgICBtU2VudEluaXRpYWxSZXNpemUgPSB0cnVlOwor ICAgICB9CisgICAgIFFSZWN0IGV4cG9zZUdlb21ldHJ5KFFQb2ludCgpLCBnZW9tZXRyeSgpLnNp emUoKSk7CitAQCAtMzc0LDcgKzM4Miw3IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNldEdlb21l dHJ5KGNvbnN0IFFSZWN0ICZyZWN0KQorICAgICAgICAgbVNoZWxsU3VyZmFjZS0+c2V0V2luZG93 R2VvbWV0cnkod2luZG93Q29udGVudEdlb21ldHJ5KCkpOworIAorICAgICBpZiAoaXNPcGFxdWUo KSAmJiBtTWFzay5pc0VtcHR5KCkpCistICAgICAgICBzZXRPcGFxdWVBcmVhKHJlY3QpOworKyAg ICAgICAgc2V0T3BhcXVlQXJlYShRUmVjdChRUG9pbnQoMCwgMCksIHJlY3Quc2l6ZSgpKSk7Cisg fQorIAorIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlc2l6ZUZyb21BcHBseUNvbmZpZ3VyZShjb25z dCBRU2l6ZSAmc2l6ZVdpdGhNYXJnaW5zLCBjb25zdCBRUG9pbnQgJm9mZnNldCkKK0BAIC0zOTks MjEgKzQwNyw2IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNlbmRFeHBvc2VFdmVudChjb25zdCBR UmVjdCAmcmVjdCkKKyAgICAgbUxhc3RFeHBvc2VHZW9tZXRyeSA9IHJlY3Q7CisgfQorIAorLQor LXN0YXRpYyBRVmVjdG9yPFFQb2ludGVyPFFXYXlsYW5kV2luZG93Pj4gYWN0aXZlUG9wdXBzOwor LQorLXZvaWQgUVdheWxhbmRXaW5kb3c6OmNsb3NlUG9wdXBzKFFXYXlsYW5kV2luZG93ICpwYXJl bnQpCisteworLSAgICB3aGlsZSAoIWFjdGl2ZVBvcHVwcy5pc0VtcHR5KCkpIHsKKy0gICAgICAg IGF1dG8gcG9wdXAgPSBhY3RpdmVQb3B1cHMudGFrZUxhc3QoKTsKKy0gICAgICAgIGlmIChwb3B1 cC5pc051bGwoKSkKKy0gICAgICAgICAgICBjb250aW51ZTsKKy0gICAgICAgIGlmIChwb3B1cC5k YXRhKCkgPT0gcGFyZW50KQorLSAgICAgICAgICAgIHJldHVybjsKKy0gICAgICAgIHBvcHVwLT5y ZXNldCgpOworLSAgICB9CistfQorLQorIFFQbGF0Zm9ybVNjcmVlbiAqUVdheWxhbmRXaW5kb3c6 OmNhbGN1bGF0ZVNjcmVlbkZyb21TdXJmYWNlRXZlbnRzKCkgY29uc3QKKyB7CisgICAgIFFSZWFk TG9ja2VyIGxvY2soJm1TdXJmYWNlTG9jayk7CitAQCAtNDMzLDEwICs0MjYsNyBAQCB2b2lkIFFX YXlsYW5kV2luZG93OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKKyAgICAgbGFzdFZpc2libGUg PSB2aXNpYmxlOworIAorICAgICBpZiAodmlzaWJsZSkgeworLSAgICAgICAgaWYgKHdpbmRvdygp LT50eXBlKCkgPT0gUXQ6OlBvcHVwIHx8IHdpbmRvdygpLT50eXBlKCkgPT0gUXQ6OlRvb2xUaXAp CistICAgICAgICAgICAgYWN0aXZlUG9wdXBzIDw8IHRoaXM7CisgICAgICAgICBpbml0V2luZG93 KCk7CistICAgICAgICBtRGlzcGxheS0+Zmx1c2hSZXF1ZXN0cygpOworIAorICAgICAgICAgc2V0 R2VvbWV0cnkod2luZG93R2VvbWV0cnkoKSk7CisgICAgICAgICAvLyBEb24ndCBmbHVzaCB0aGUg ZXZlbnRzIGhlcmUsIG9yIGVsc2UgdGhlIG5ld2x5IHZpc2libGUgd2luZG93IG1heSBzdGFydCBk cmF3aW5nLCBidXQgc2luY2UKK0BAIC00NDQsNyArNDM0LDYgQEAgdm9pZCBRV2F5bGFuZFdpbmRv dzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCisgICAgICAgICAvLyBRV2F5bGFuZFNobUJhY2tp bmdTdG9yZTo6YmVnaW5QYWludCgpLgorICAgICB9IGVsc2UgeworICAgICAgICAgc2VuZEV4cG9z ZUV2ZW50KFFSZWN0KCkpOworLSAgICAgICAgY2xvc2VQb3B1cHModGhpcyk7CisgICAgICAgICBy ZXNldCgpOworICAgICB9CisgfQorQEAgLTU1NiwxMiArNTQ1LDEyIEBAIHZvaWQgUVdheWxhbmRX aW5kb3c6OnNlbmRSZWN1cnNpdmVFeHBvc2VFdmVudCgpCisgCisgdm9pZCBRV2F5bGFuZFdpbmRv dzo6YXR0YWNoKFFXYXlsYW5kQnVmZmVyICpidWZmZXIsIGludCB4LCBpbnQgeSkKKyB7CistICAg IFFfQVNTRVJUKCFidWZmZXItPmNvbW1pdHRlZCgpKTsKKyAgICAgUVJlYWRMb2NrZXIgbG9ja2Vy KCZtU3VyZmFjZUxvY2spOworICAgICBpZiAobVN1cmZhY2UgPT0gbnVsbHB0cikKKyAgICAgICAg IHJldHVybjsKKyAKKyAgICAgaWYgKGJ1ZmZlcikgeworKyAgICAgICAgUV9BU1NFUlQoIWJ1ZmZl ci0+Y29tbWl0dGVkKCkpOworICAgICAgICAgaGFuZGxlVXBkYXRlKCk7CisgICAgICAgICBidWZm ZXItPnNldEJ1c3koKTsKKyAKK0BAIC01ODMsNyArNTcyLDExIEBAIHZvaWQgUVdheWxhbmRXaW5k b3c6OmRhbWFnZShjb25zdCBRUmVjdCAmcmVjdCkKKyAgICAgaWYgKG1TdXJmYWNlID09IG51bGxw dHIpCisgICAgICAgICByZXR1cm47CisgCistICAgIG1TdXJmYWNlLT5kYW1hZ2UocmVjdC54KCks IHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworKyAgICBjb25zdCBpbnQg cyA9IHNjYWxlKCk7CisrICAgIGlmIChtRGlzcGxheS0+Y29tcG9zaXRvclZlcnNpb24oKSA+PSA0 KQorKyAgICAgICAgbVN1cmZhY2UtPmRhbWFnZV9idWZmZXIocyAqIHJlY3QueCgpLCBzICogcmVj dC55KCksIHMgKiByZWN0LndpZHRoKCksIHMgKiByZWN0LmhlaWdodCgpKTsKKysgICAgZWxzZQor KyAgICAgICAgbVN1cmZhY2UtPmRhbWFnZShyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgo KSwgcmVjdC5oZWlnaHQoKSk7CisgfQorIAorIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNhZmVDb21t aXQoUVdheWxhbmRCdWZmZXIgKmJ1ZmZlciwgY29uc3QgUVJlZ2lvbiAmZGFtYWdlKQorQEAgLTYx OSw4ICs2MTIsMTQgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6Y29tbWl0KFFXYXlsYW5kQnVmZmVy ICpidWZmZXIsIGNvbnN0IFFSZWdpb24gJmRhbWFnZSkKKyAgICAgICAgIHJldHVybjsKKyAKKyAg ICAgYXR0YWNoT2Zmc2V0KGJ1ZmZlcik7CistICAgIGZvciAoY29uc3QgUVJlY3QgJnJlY3Q6IGRh bWFnZSkKKy0gICAgICAgIG1TdXJmYWNlLT5kYW1hZ2UocmVjdC54KCksIHJlY3QueSgpLCByZWN0 LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworKyAgICBpZiAobURpc3BsYXktPmNvbXBvc2l0b3JW ZXJzaW9uKCkgPj0gNCkgeworKyAgICAgICAgY29uc3QgaW50IHMgPSBzY2FsZSgpOworKyAgICAg ICAgZm9yIChjb25zdCBRUmVjdCAmcmVjdDogZGFtYWdlKQorKyAgICAgICAgICAgIG1TdXJmYWNl LT5kYW1hZ2VfYnVmZmVyKHMgKiByZWN0LngoKSwgcyAqIHJlY3QueSgpLCBzICogcmVjdC53aWR0 aCgpLCBzICogcmVjdC5oZWlnaHQoKSk7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBmb3IgKGNv bnN0IFFSZWN0ICZyZWN0OiBkYW1hZ2UpCisrICAgICAgICAgICAgbVN1cmZhY2UtPmRhbWFnZShy ZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisrICAgIH0K KyAgICAgUV9BU1NFUlQoIWJ1ZmZlci0+Y29tbWl0dGVkKCkpOworICAgICBidWZmZXItPnNldENv bW1pdHRlZCgpOworICAgICBtU3VyZmFjZS0+Y29tbWl0KCk7CitAQCAtNjM1LDQyICs2MzQsNTMg QEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6Y29tbWl0KCkKKyAKKyBjb25zdCB3bF9jYWxsYmFja19s aXN0ZW5lciBRV2F5bGFuZFdpbmRvdzo6Y2FsbGJhY2tMaXN0ZW5lciA9IHsKKyAgICAgW10odm9p ZCAqZGF0YSwgd2xfY2FsbGJhY2sgKmNhbGxiYWNrLCB1aW50MzJfdCB0aW1lKSB7CistICAgICAg ICBRX1VOVVNFRChjYWxsYmFjayk7CisgICAgICAgICBRX1VOVVNFRCh0aW1lKTsKKyAgICAgICAg IGF1dG8gKndpbmRvdyA9IHN0YXRpY19jYXN0PFFXYXlsYW5kV2luZG93Kj4oZGF0YSk7CistICAg ICAgICB3aW5kb3ctPmhhbmRsZUZyYW1lQ2FsbGJhY2soKTsKKysgICAgICAgIHdpbmRvdy0+aGFu ZGxlRnJhbWVDYWxsYmFjayhjYWxsYmFjayk7CisgICAgIH0KKyB9OworIAorLXZvaWQgUVdheWxh bmRXaW5kb3c6OmhhbmRsZUZyYW1lQ2FsbGJhY2soKQorK3ZvaWQgUVdheWxhbmRXaW5kb3c6Omhh bmRsZUZyYW1lQ2FsbGJhY2sod2xfY2FsbGJhY2sqIGNhbGxiYWNrKQorIHsKKysgICAgUU11dGV4 TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysgICAgaWYgKCFtRnJhbWVDYWxsYmFj aykgeworKyAgICAgICAgLy8gVGhpcyBtZWFucyB0aGUgY2FsbGJhY2sgaXMgYWxyZWFkeSB1bnNl dCBieSBRV2F5bGFuZFdpbmRvdzo6cmVzZXQuCisrICAgICAgICAvLyBUaGUgd2xfY2FsbGJhY2sg b2JqZWN0IHdpbGwgYmUgZGVzdHJveWVkIHRoZXJlIHRvby4KKysgICAgICAgIHJldHVybjsKKysg ICAgfQorKyAgICBRX0FTU0VSVChjYWxsYmFjayA9PSBtRnJhbWVDYWxsYmFjayk7CisrICAgIHds X2NhbGxiYWNrX2Rlc3Ryb3koY2FsbGJhY2spOworKyAgICBtRnJhbWVDYWxsYmFjayA9IG51bGxw dHI7CisrCisgICAgIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZhbHNlOworICAgICBtRnJh bWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7CisgCisgICAgIC8vIFRoZSByZXN0 IGNhbiB3YWl0IHVudGlsIHdlIGNhbiBydW4gaXQgb24gdGhlIGNvcnJlY3QgdGhyZWFkCistICAg IGlmICghbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeSkgeworLSAgICAgICAgYXV0byBkb0hhbmRs ZUV4cG9zZSA9IFt0aGlzXSgpIHsKKy0gICAgICAgICAgICBib29sIHdhc0V4cG9zZWQgPSBpc0V4 cG9zZWQoKTsKKy0gICAgICAgICAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gZmFsc2U7Cist ICAgICAgICAgICAgaWYgKCF3YXNFeHBvc2VkICYmIGlzRXhwb3NlZCgpKSAvLyBEaWQgc2V0dGlu ZyBtRnJhbWVDYWxsYmFja1RpbWVkT3V0IG1ha2UgdGhlIHdpbmRvdyBleHBvc2VkPworLSAgICAg ICAgICAgICAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoUVBvaW50KCksIGdlb21ldHJ5KCkuc2l6 ZSgpKSk7CistICAgICAgICAgICAgaWYgKHdhc0V4cG9zZWQgJiYgaGFzUGVuZGluZ1VwZGF0ZVJl cXVlc3QoKSkKKy0gICAgICAgICAgICAgICAgZGVsaXZlclVwZGF0ZVJlcXVlc3QoKTsKKy0KKy0g ICAgICAgICAgICBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gZmFsc2U7CistICAgICAgICB9 OworKyAgICBhdXRvIGRvSGFuZGxlRXhwb3NlID0gW3RoaXNdKCkgeworKyAgICAgICAgbVdhaXRp bmdGb3JVcGRhdGVEZWxpdmVyeS5zdG9yZVJlbGVhc2UoZmFsc2UpOworKyAgICAgICAgYm9vbCB3 YXNFeHBvc2VkID0gaXNFeHBvc2VkKCk7CisrICAgICAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0 ID0gZmFsc2U7CisrICAgICAgICBpZiAoIXdhc0V4cG9zZWQgJiYgaXNFeHBvc2VkKCkpIC8vIERp ZCBzZXR0aW5nIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgbWFrZSB0aGUgd2luZG93IGV4cG9zZWQ/ CisrICAgICAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KFFQb2ludCgpLCBnZW9tZXRyeSgp LnNpemUoKSkpOworKyAgICAgICAgaWYgKHdhc0V4cG9zZWQgJiYgaGFzUGVuZGluZ1VwZGF0ZVJl cXVlc3QoKSkKKysgICAgICAgICAgICBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpOworKyAgICB9Owor IAorKyAgICBpZiAobVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeS50ZXN0QW5kU2V0QWNxdWlyZShm YWxzZSwgdHJ1ZSkpIHsKKyAgICAgICAgIC8vIFF1ZXVlZCBjb25uZWN0aW9uLCB0byBtYWtlIHN1 cmUgd2UgZG9uJ3QgY2FsbCBoYW5kbGVVcGRhdGUoKSBmcm9tIGluc2lkZSB3YWl0Rm9yRnJhbWVT eW5jKCkKKyAgICAgICAgIC8vIGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgY2FzZS4KKy0gICAgICAg IG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkgPSB0cnVlOworICAgICAgICAgUU1ldGFPYmplY3Q6 Omludm9rZU1ldGhvZCh0aGlzLCBkb0hhbmRsZUV4cG9zZSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24p OworICAgICB9CisrCisrICAgIG1GcmFtZVN5bmNXYWl0Lm5vdGlmeV9hbGwoKTsKKyB9CisgCisg Ym9vbCBRV2F5bGFuZFdpbmRvdzo6d2FpdEZvckZyYW1lU3luYyhpbnQgdGltZW91dCkKKyB7Cist ICAgIFFNdXRleExvY2tlciBsb2NrZXIobUZyYW1lUXVldWUubXV0ZXgpOworLSAgICBtRGlzcGxh eS0+ZGlzcGF0Y2hRdWV1ZVdoaWxlKG1GcmFtZVF1ZXVlLnF1ZXVlLCBbJl0oKSB7IHJldHVybiBt V2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2s7IH0sIHRpbWVvdXQpOworKyAgICBRTXV0ZXhMb2NrZXIg bG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKworKyAgICBRRGVhZGxpbmVUaW1lciBkZWFkbGlu ZSh0aW1lb3V0KTsKKysgICAgd2hpbGUgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayAmJiBtRnJh bWVTeW5jV2FpdC53YWl0KCZtRnJhbWVTeW5jTXV0ZXgsIGRlYWRsaW5lKSkgeyB9CisgCisgICAg IGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spIHsKKyAgICAgICAgIHFDRGVidWcobGNXYXls YW5kQmFja2luZ3N0b3JlKSA8PCAiRGlkbid0IHJlY2VpdmUgZnJhbWUgY2FsbGJhY2sgaW4gdGlt ZSwgd2luZG93IHNob3VsZCBub3cgYmUgaW5leHBvc2VkIjsKK0BAIC04NjgsNiArODc4LDE3IEBA IGJvb2wgUVdheWxhbmRXaW5kb3c6OmNyZWF0ZURlY29yYXRpb24oKQorICAgICAgICAgICAgIHN1 YnN1cmYtPnNldF9wb3NpdGlvbihwb3MueCgpICsgbS5sZWZ0KCksIHBvcy55KCkgKyBtLnRvcCgp KTsKKyAgICAgICAgIH0KKyAgICAgICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdChRUG9pbnQoKSwg Z2VvbWV0cnkoKS5zaXplKCkpKTsKKysKKysgICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIGNh c2Ugd2hlcmUgdGhlIGJ1ZmZlciBpcyByZWNyZWF0ZWQsIGJ1dCBzaW5jZQorKyAgICAgICAgLy8g dGhlIGNvbnRlbnQgcmVjdCByZW1haW5zIHRoZSBzYW1lLCB0aGUgd2lkZ2V0cyByZW1haW4gdGhl IHNhbWUKKysgICAgICAgIC8vIHNpemUgYW5kIGFyZSBub3QgcmVkcmF3biwgbGVhdmluZyB0aGUg bmV3IGJ1ZmZlciBlbXB0eS4gQXMgYSBzaW1wbGUKKysgICAgICAgIC8vIHdvcmstYXJvdW5kLCB3 ZSB0cmlnZ2VyIGEgZnVsbCBleHRyYSB1cGRhdGUgd2hlbmV2ZXIgdGhlIGNsaWVudC1zaWRlCisr ICAgICAgICAvLyB3aW5kb3cgZGVjb3JhdGlvbnMgYXJlIHRvZ2dsZWQgd2hpbGUgdGhlIHdpbmRv dyBpcyBzaG93aW5nLgorKyAgICAgICAgLy8gTm90ZTogY3JlYXRlRGVjb3JhdGlvbigpIGlzIHNv bWV0aW1lcyBjYWxsZWQgZnJvbSB0aGUgcmVuZGVyIHRocmVhZAorKyAgICAgICAgLy8gb2YgUXQg UXVpY2suIFRoaXMgaXMgZXNzZW50aWFsbHkgd3JvbmcgYW5kIGNvdWxkIHBvdGVudGlhbGx5IGNh dXNlIHByb2JsZW1zLAorKyAgICAgICAgLy8gYnV0IHVudGlsIHRoZSB1bmRlcmx5aW5nIGlzc3Vl IGhhcyBiZWVuIGZpeGVkLCB3ZSBoYXZlIHRvIHVzZSBpbnZva2VNZXRob2QoKQorKyAgICAgICAg Ly8gaGVyZSB0byBhdm9pZCBhc3NlcnRzLgorKyAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1l dGhvZCh3aW5kb3coKSwgJlFXaW5kb3c6OnJlcXVlc3RVcGRhdGUpOworICAgICB9CisgCisgICAg IHJldHVybiBtV2luZG93RGVjb3JhdGlvbjsKK0BAIC0xMDIzLDYgKzEwNDQsMTMgQEAgdm9pZCBR V2F5bGFuZFdpbmRvdzo6aGFuZGxlU2NyZWVuc0NoYW5nZWQoKQorIAorICAgICBRV2luZG93U3lz dGVtSW50ZXJmYWNlOjpoYW5kbGVXaW5kb3dTY3JlZW5DaGFuZ2VkKHdpbmRvdygpLCBuZXdTY3Jl ZW4tPlFQbGF0Zm9ybVNjcmVlbjo6c2NyZWVuKCkpOworICAgICBtTGFzdFJlcG9ydGVkU2NyZWVu ID0gbmV3U2NyZWVuOworKyAgICBpZiAoZml4ZWRUb3BsZXZlbFBvc2l0aW9ucyAmJiAhUVBsYXRm b3JtV2luZG93OjpwYXJlbnQoKSAmJiB3aW5kb3coKS0+dHlwZSgpICE9IFF0OjpQb3B1cAorKyAg ICAgICAgJiYgd2luZG93KCktPnR5cGUoKSAhPSBRdDo6VG9vbFRpcAorKyAgICAgICAgJiYgZ2Vv bWV0cnkoKS50b3BMZWZ0KCkgIT0gbmV3U2NyZWVuLT5nZW9tZXRyeSgpLnRvcExlZnQoKSkgewor KyAgICAgICAgYXV0byBnZW9tZXRyeSA9IHRoaXMtPmdlb21ldHJ5KCk7CisrICAgICAgICBnZW9t ZXRyeS5tb3ZlVG8obmV3U2NyZWVuLT5nZW9tZXRyeSgpLnRvcExlZnQoKSk7CisrICAgICAgICBz ZXRHZW9tZXRyeShnZW9tZXRyeSk7CisrICAgIH0KKyAKKyAgICAgaW50IHNjYWxlID0gbmV3U2Ny ZWVuLT5pc1BsYWNlaG9sZGVyKCkgPyAxIDogc3RhdGljX2Nhc3Q8UVdheWxhbmRTY3JlZW4gKj4o bmV3U2NyZWVuKS0+c2NhbGUoKTsKKyAgICAgaWYgKHNjYWxlICE9IG1TY2FsZSkgeworQEAgLTEw OTQsMTAgKzExMjIsMTggQEAgYm9vbCBRV2F5bGFuZFdpbmRvdzo6c2V0TW91c2VHcmFiRW5hYmxl ZChib29sIGdyYWIpCisgICAgIHJldHVybiB0cnVlOworIH0KKyAKKytRdDo6V2luZG93U3RhdGVz IFFXYXlsYW5kV2luZG93Ojp3aW5kb3dTdGF0ZXMoKSBjb25zdAorK3sKKysgICAgcmV0dXJuIG1M YXN0UmVwb3J0ZWRXaW5kb3dTdGF0ZXM7CisrfQorKworIHZvaWQgUVdheWxhbmRXaW5kb3c6Omhh bmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQoUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXMpCisgeworICAg ICBjcmVhdGVEZWNvcmF0aW9uKCk7CistICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRs ZVdpbmRvd1N0YXRlQ2hhbmdlZCh3aW5kb3coKSwgc3RhdGVzLCBtTGFzdFJlcG9ydGVkV2luZG93 U3RhdGVzKTsKKysgICAgUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXNXaXRob3V0QWN0aXZlID0gc3Rh dGVzICYgflF0OjpXaW5kb3dBY3RpdmU7CisrICAgIFF0OjpXaW5kb3dTdGF0ZXMgbGFzdFN0YXRl c1dpdGhvdXRBY3RpdmUgPSBtTGFzdFJlcG9ydGVkV2luZG93U3RhdGVzICYgflF0OjpXaW5kb3dB Y3RpdmU7CisrICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVdpbmRvd1N0YXRlQ2hh bmdlZCh3aW5kb3coKSwgc3RhdGVzV2l0aG91dEFjdGl2ZSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RTdGF0ZXNXaXRob3V0QWN0aXZl KTsKKyAgICAgbUxhc3RSZXBvcnRlZFdpbmRvd1N0YXRlcyA9IHN0YXRlczsKKyB9CisgCitAQCAt MTEzOSwxOSArMTE3NSwyNCBAQCB2b2lkIFFXYXlsYW5kV2luZG93Ojp0aW1lckV2ZW50KFFUaW1l ckV2ZW50ICpldmVudCkKKyAgICAgaWYgKGV2ZW50LT50aW1lcklkKCkgIT0gbUZyYW1lQ2FsbGJh Y2tDaGVja0ludGVydmFsVGltZXJJZCkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgYm9vbCBj YWxsYmFja1RpbWVyRXhwaXJlZCA9IG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmhhc0V4cGly ZWQobUZyYW1lQ2FsbGJhY2tUaW1lb3V0KTsKKy0gICAgaWYgKCFtRnJhbWVDYWxsYmFja0VsYXBz ZWRUaW1lci5pc1ZhbGlkKCkgfHwgY2FsbGJhY2tUaW1lckV4cGlyZWQgKSB7CistICAgICAgICBr aWxsVGltZXIobUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCk7CistICAgICAgICBt RnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0gLTE7CistICAgIH0KKy0gICAgaWYg KG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlzVmFsaWQoKSAmJiBjYWxsYmFja1RpbWVyRXhw aXJlZCkgeworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgp OworKyAgICB7CisrICAgICAgICBRTXV0ZXhMb2NrZXIgbG9jaygmbUZyYW1lU3luY011dGV4KTsK KyAKKy0gICAgICAgIHFDRGVidWcobGNXYXlsYW5kQmFja2luZ3N0b3JlKSA8PCAiRGlkbid0IHJl Y2VpdmUgZnJhbWUgY2FsbGJhY2sgaW4gdGltZSwgd2luZG93IHNob3VsZCBub3cgYmUgaW5leHBv c2VkIjsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSB0cnVlOworLSAgICAgICAg bVdhaXRpbmdGb3JVcGRhdGUgPSBmYWxzZTsKKy0gICAgICAgIHNlbmRFeHBvc2VFdmVudChRUmVj dCgpKTsKKysgICAgICAgIGJvb2wgY2FsbGJhY2tUaW1lckV4cGlyZWQgPSBtRnJhbWVDYWxsYmFj a0VsYXBzZWRUaW1lci5oYXNFeHBpcmVkKG1GcmFtZUNhbGxiYWNrVGltZW91dCk7CisrICAgICAg ICBpZiAoIW1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlzVmFsaWQoKSB8fCBjYWxsYmFja1Rp bWVyRXhwaXJlZCApIHsKKysgICAgICAgICAgICBraWxsVGltZXIobUZyYW1lQ2FsbGJhY2tDaGVj a0ludGVydmFsVGltZXJJZCk7CisrICAgICAgICAgICAgbUZyYW1lQ2FsbGJhY2tDaGVja0ludGVy dmFsVGltZXJJZCA9IC0xOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFtRnJhbWVDYWxsYmFj a0VsYXBzZWRUaW1lci5pc1ZhbGlkKCkgfHwgIWNhbGxiYWNrVGltZXJFeHBpcmVkKSB7CisrICAg ICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgbUZyYW1lQ2FsbGJhY2tFbGFw c2VkVGltZXIuaW52YWxpZGF0ZSgpOworICAgICB9CisrCisrICAgIHFDRGVidWcobGNXYXlsYW5k QmFja2luZ3N0b3JlKSA8PCAiRGlkbid0IHJlY2VpdmUgZnJhbWUgY2FsbGJhY2sgaW4gdGltZSwg d2luZG93IHNob3VsZCBub3cgYmUgaW5leHBvc2VkIjsKKysgICAgbUZyYW1lQ2FsbGJhY2tUaW1l ZE91dCA9IHRydWU7CisrICAgIG1XYWl0aW5nRm9yVXBkYXRlID0gZmFsc2U7CisrICAgIHNlbmRF eHBvc2VFdmVudChRUmVjdCgpKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVxdWVz dFVwZGF0ZSgpCitAQCAtMTE2MCw4ICsxMjAxLDExIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJl cXVlc3RVcGRhdGUoKQorICAgICBRX0FTU0VSVChoYXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgpKTsg Ly8gc2hvdWxkIGJlIHNldCBieSBRUEEKKyAKKyAgICAgLy8gSWYgd2UgaGF2ZSBhIGZyYW1lIGNh bGxiYWNrIGFsbCBpcyBnb29kIGFuZCB3aWxsIGJlIHRha2VuIGNhcmUgb2YgdGhlcmUKKy0gICAg aWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykKKy0gICAgICAgIHJldHVybjsKKysgICAgewor KyAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysgICAgICAg IGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCisrICAgICAgICAgICAgcmV0dXJuOworKyAg ICB9CisgCisgICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgY2FsbGVkIGRlbGl2ZXJVcGRhdGVSZXF1 ZXN0KCksIGJ1dCBoYXZlbid0IHNlZW4gYW55IGF0dGFjaCtjb21taXQvc3dhcCB5ZXQKKyAgICAg Ly8gVGhpcyBpcyBhIHNvbWV3aGF0IHJlZHVuZGFudCBiZWhhdmlvciBhbmQgbWlnaHQgaW5kaWNh dGUgYSBidWcgaW4gdGhlIGNhbGxpbmcgY29kZSwgc28gbG9nCitAQCAtMTE3NCw3ICsxMjE4LDEy IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlcXVlc3RVcGRhdGUoKQorICAgICAvLyBzbyB1c2Ug aW52b2tlTWV0aG9kIHRvIGRlbGF5IHRoZSBkZWxpdmVyeSBhIGJpdC4KKyAgICAgUU1ldGFPYmpl Y3Q6Omludm9rZU1ldGhvZCh0aGlzLCBbdGhpc10geworICAgICAgICAgLy8gVGhpbmdzIG1pZ2h0 IGhhdmUgY2hhbmdlZCBpbiB0aGUgbWVhbnRpbWUKKy0gICAgICAgIGlmIChoYXNQZW5kaW5nVXBk YXRlUmVxdWVzdCgpICYmICFtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCisrICAgICAgICB7Cisr ICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysgICAg ICAgICAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKQorKyAgICAgICAgICAgICAgICBy ZXR1cm47CisrICAgICAgICB9CisrICAgICAgICBpZiAoaGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3Qo KSkKKyAgICAgICAgICAgICBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpOworICAgICB9LCBRdDo6UXVl dWVkQ29ubmVjdGlvbik7CisgfQorQEAgLTExODUsMTkgKzEyMzQsMTggQEAgdm9pZCBRV2F5bGFu ZFdpbmRvdzo6cmVxdWVzdFVwZGF0ZSgpCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlVXBk YXRlKCkKKyB7CisgICAgIHFDRGVidWcobGNXYXlsYW5kQmFja2luZ3N0b3JlKSA8PCAiaGFuZGxl VXBkYXRlIiA8PCBRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCk7CisrCisgICAgIC8vIFRPRE86IFNo b3VsZCBzeW5jIHN1YnN1cmZhY2VzIGF2b2lkIHJlcXVlc3RpbmcgZnJhbWUgY2FsbGJhY2tzPwor ICAgICBRUmVhZExvY2tlciBsb2NrKCZtU3VyZmFjZUxvY2spOworICAgICBpZiAoIW1TdXJmYWNl KQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBpZiAobUZyYW1lQ2FsbGJhY2spIHsKKy0gICAg ICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3kobUZyYW1lQ2FsbGJhY2spOworLSAgICAgICAgbUZyYW1l Q2FsbGJhY2sgPSBudWxscHRyOworLSAgICB9CisrICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1G cmFtZVN5bmNNdXRleCk7CisrICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCisrICAg ICAgICByZXR1cm47CisgCistICAgIFFNdXRleExvY2tlciBsb2NrZXIobUZyYW1lUXVldWUubXV0 ZXgpOworICAgICBzdHJ1Y3QgOjp3bF9zdXJmYWNlICp3cmFwcGVkU3VyZmFjZSA9IHJlaW50ZXJw cmV0X2Nhc3Q8c3RydWN0IDo6d2xfc3VyZmFjZSAqPih3bF9wcm94eV9jcmVhdGVfd3JhcHBlciht U3VyZmFjZS0+b2JqZWN0KCkpKTsKKy0gICAgd2xfcHJveHlfc2V0X3F1ZXVlKHJlaW50ZXJwcmV0 X2Nhc3Q8d2xfcHJveHkgKj4od3JhcHBlZFN1cmZhY2UpLCBtRnJhbWVRdWV1ZS5xdWV1ZSk7Cisr ICAgIHdsX3Byb3h5X3NldF9xdWV1ZShyZWludGVycHJldF9jYXN0PHdsX3Byb3h5ICo+KHdyYXBw ZWRTdXJmYWNlKSwgbURpc3BsYXktPmZyYW1lRXZlbnRRdWV1ZSgpKTsKKyAgICAgbUZyYW1lQ2Fs bGJhY2sgPSB3bF9zdXJmYWNlX2ZyYW1lKHdyYXBwZWRTdXJmYWNlKTsKKyAgICAgd2xfcHJveHlf d3JhcHBlcl9kZXN0cm95KHdyYXBwZWRTdXJmYWNlKTsKKyAgICAgd2xfY2FsbGJhY2tfYWRkX2xp c3RlbmVyKG1GcmFtZUNhbGxiYWNrLCAmUVdheWxhbmRXaW5kb3c6OmNhbGxiYWNrTGlzdGVuZXIs IHRoaXMpOworQEAgLTEyMDcsNiArMTI1NSw4IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmhhbmRs ZVVwZGF0ZSgpCisgICAgIC8vIFN0YXJ0IGEgdGltZXIgZm9yIGhhbmRsaW5nIHRoZSBjYXNlIHdo ZW4gdGhlIGNvbXBvc2l0b3Igc3RvcHMgc2VuZGluZyBmcmFtZSBjYWxsYmFja3MuCisgICAgIGlm IChtRnJhbWVDYWxsYmFja1RpbWVvdXQgPiAwKSB7CisgICAgICAgICBRTWV0YU9iamVjdDo6aW52 b2tlTWV0aG9kKHRoaXMsIFt0aGlzXSB7CisrICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tl cigmbUZyYW1lU3luY011dGV4KTsKKysKKyAgICAgICAgICAgICBpZiAobVdhaXRpbmdGb3JGcmFt ZUNhbGxiYWNrKSB7CisgICAgICAgICAgICAgICAgIGlmIChtRnJhbWVDYWxsYmFja0NoZWNrSW50 ZXJ2YWxUaW1lcklkIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgIG1GcmFtZUNhbGxiYWNrQ2hl Y2tJbnRlcnZhbFRpbWVySWQgPSBzdGFydFRpbWVyKG1GcmFtZUNhbGxiYWNrVGltZW91dCk7CitA QCAtMTI2Nyw2ICsxMzE3LDIwIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNldE9wYXF1ZUFyZWEo Y29uc3QgUVJlZ2lvbiAmb3BhcXVlQXJlYSkKKyAgICAgd2xfcmVnaW9uX2Rlc3Ryb3kocmVnaW9u KTsKKyB9CisgCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6YWRkQ2hpbGRQb3B1cChRV2F5bGFuZFdp bmRvdyAqc3VyZmFjZSkgeworKyAgICBtQ2hpbGRQb3B1cHMuYXBwZW5kKHN1cmZhY2UpOworK30K KysKKyt2b2lkIFFXYXlsYW5kV2luZG93OjpyZW1vdmVDaGlsZFBvcHVwKFFXYXlsYW5kV2luZG93 ICpzdXJmYWNlKSB7CisrICAgIG1DaGlsZFBvcHVwcy5yZW1vdmVBbGwoc3VyZmFjZSk7CisrfQor KworK3ZvaWQgUVdheWxhbmRXaW5kb3c6OmNsb3NlQ2hpbGRQb3B1cHMoKSB7CisrICAgIHdoaWxl ICghbUNoaWxkUG9wdXBzLmlzRW1wdHkoKSkgeworKyAgICAgICAgYXV0byBwb3B1cCA9IG1DaGls ZFBvcHVwcy50YWtlTGFzdCgpOworKyAgICAgICAgcG9wdXAtPnJlc2V0KCk7CisrICAgIH0KKyt9 CisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZHdpbmRvd19wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdp bmRvd19wLmgKK2luZGV4IDAxMzM3Y2ZmLi4yZjIxOWQ4YyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93X3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmR3aW5kb3dfcC5oCitAQCAtOTgsNiArOTgsOSBAQCBwdWJsaWM6CisgICAgIFFX YXlsYW5kV2luZG93KFFXaW5kb3cgKndpbmRvdywgUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KTsK KyAgICAgflFXYXlsYW5kV2luZG93KCkgb3ZlcnJpZGU7CisgCisrICAgIC8vIEtlZXAgVG9wbGV2 ZWxzIHBvc2l0aW9uIG9uIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlaXIgc2NyZWVuCisrICAg IHN0YXRpYyBpbmxpbmUgYm9vbCBmaXhlZFRvcGxldmVsUG9zaXRpb25zID0gdHJ1ZTsKKysKKyAg ICAgdmlydHVhbCBXaW5kb3dUeXBlIHdpbmRvd1R5cGUoKSBjb25zdCA9IDA7CisgICAgIHZpcnR1 YWwgdm9pZCBlbnN1cmVTaXplKCk7CisgICAgIFdJZCB3aW5JZCgpIGNvbnN0IG92ZXJyaWRlOwor QEAgLTE0OCw2ICsxNTEsNyBAQCBwdWJsaWM6CisgICAgIHZvaWQgc2V0V2luZG93U3RhdGUoUXQ6 OldpbmRvd1N0YXRlcyBzdGF0ZXMpIG92ZXJyaWRlOworICAgICB2b2lkIHNldFdpbmRvd0ZsYWdz KFF0OjpXaW5kb3dGbGFncyBmbGFncykgb3ZlcnJpZGU7CisgICAgIHZvaWQgaGFuZGxlV2luZG93 U3RhdGVzQ2hhbmdlZChRdDo6V2luZG93U3RhdGVzIHN0YXRlcyk7CisrICAgIFF0OjpXaW5kb3dT dGF0ZXMgd2luZG93U3RhdGVzKCkgY29uc3Q7CisgCisgICAgIHZvaWQgcmFpc2UoKSBvdmVycmlk ZTsKKyAgICAgdm9pZCBsb3dlcigpIG92ZXJyaWRlOworQEAgLTIwNiw2ICsyMTAsMTAgQEAgcHVi bGljOgorICAgICB2b2lkIGhhbmRsZVVwZGF0ZSgpOworICAgICB2b2lkIGRlbGl2ZXJVcGRhdGVS ZXF1ZXN0KCkgb3ZlcnJpZGU7CisgCisrICAgIHZvaWQgYWRkQ2hpbGRQb3B1cChRV2F5bGFuZFdp bmRvdyogY2hpbGQpOworKyAgICB2b2lkIHJlbW92ZUNoaWxkUG9wdXAoUVdheWxhbmRXaW5kb3cq IGNoaWxkKTsKKysgICAgdm9pZCBjbG9zZUNoaWxkUG9wdXBzKCk7CisrCisgcHVibGljIHNsb3Rz OgorICAgICB2b2lkIGFwcGx5Q29uZmlndXJlKCk7CisgCitAQCAtMjE1LDcgKzIyMywxMSBAQCBz aWduYWxzOgorIAorIHByb3RlY3RlZDoKKyAgICAgUVdheWxhbmREaXNwbGF5ICptRGlzcGxheSA9 IG51bGxwdHI7CisrCisrICAgIC8vIG1TdXJmYWNlIGNhbiBiZSB3cml0dGVuIGJ5IHRoZSBtYWlu IHRocmVhZC4gT3RoZXIgdGhyZWFkcyBzaG91bGQgY2xhaW0gYSByZWFkIGxvY2sgZm9yIGFjY2Vz cworKyAgICBtdXRhYmxlIFFSZWFkV3JpdGVMb2NrIG1TdXJmYWNlTG9jazsKKyAgICAgUVNjb3Bl ZFBvaW50ZXI8UVdheWxhbmRTdXJmYWNlPiBtU3VyZmFjZTsKKysKKyAgICAgUVdheWxhbmRTaGVs bFN1cmZhY2UgKm1TaGVsbFN1cmZhY2UgPSBudWxscHRyOworICAgICBRV2F5bGFuZFN1YlN1cmZh Y2UgKm1TdWJTdXJmYWNlV2luZG93ID0gbnVsbHB0cjsKKyAgICAgUVZlY3RvcjxRV2F5bGFuZFN1 YlN1cmZhY2UgKj4gbUNoaWxkcmVuOworQEAgLTIyNSwxMyArMjM3LDE0IEBAIHByb3RlY3RlZDoK KyAgICAgUXQ6Ok1vdXNlQnV0dG9ucyBtTW91c2VQcmVzc2VkSW5Db250ZW50QXJlYSA9IFF0OjpO b0J1dHRvbjsKKyAKKyAgICAgV0lkIG1XaW5kb3dJZDsKKy0gICAgYm9vbCBtV2FpdGluZ0ZvckZy YW1lQ2FsbGJhY2sgPSBmYWxzZTsKKyAgICAgYm9vbCBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0g ZmFsc2U7IC8vIFdoZXRoZXIgdGhlIGZyYW1lIGNhbGxiYWNrIGhhcyB0aW1lZCBvdXQKKy0gICAg Ym9vbCBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gZmFsc2U7CisgICAgIGludCBtRnJhbWVD YWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0gLTE7CistICAgIFFFbGFwc2VkVGltZXIgbUZy YW1lQ2FsbGJhY2tFbGFwc2VkVGltZXI7CistICAgIHN0cnVjdCA6OndsX2NhbGxiYWNrICptRnJh bWVDYWxsYmFjayA9IG51bGxwdHI7CistICAgIFFXYXlsYW5kRGlzcGxheTo6RnJhbWVRdWV1ZSBt RnJhbWVRdWV1ZTsKKysgICAgUUF0b21pY0ludCBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0g ZmFsc2U7CisrCisrICAgIGJvb2wgbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7IC8v IFByb3RlY3RlZCBieSBtRnJhbWVTeW5jTXV0ZXgKKysgICAgUUVsYXBzZWRUaW1lciBtRnJhbWVD YWxsYmFja0VsYXBzZWRUaW1lcjsgLy8gUHJvdGVjdGVkIGJ5IG1GcmFtZVN5bmNNdXRleAorKyAg ICBzdHJ1Y3QgOjp3bF9jYWxsYmFjayAqbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOyAvLyBQcm90 ZWN0ZWQgYnkgbUZyYW1lU3luY011dGV4CisrICAgIFFNdXRleCBtRnJhbWVTeW5jTXV0ZXg7Cisg ICAgIFFXYWl0Q29uZGl0aW9uIG1GcmFtZVN5bmNXYWl0OworIAorICAgICAvLyBUcnVlIHdoZW4g d2UgaGF2ZSBjYWxsZWQgZGVsaXZlclJlcXVlc3RVcGRhdGUsIGJ1dCB0aGUgY2xpZW50IGhhcyBu b3QgeWV0IGF0dGFjaGVkIGEgbmV3IGJ1ZmZlcgorQEAgLTI2MSw2ICsyNzQsOCBAQCBwcm90ZWN0 ZWQ6CisgICAgIFFXYXlsYW5kQnVmZmVyICptUXVldWVkQnVmZmVyID0gbnVsbHB0cjsKKyAgICAg UVJlZ2lvbiBtUXVldWVkQnVmZmVyRGFtYWdlOworIAorKyAgICBRTGlzdDxRUG9pbnRlcjxRV2F5 bGFuZFdpbmRvdz4+IG1DaGlsZFBvcHVwczsKKysKKyBwcml2YXRlOgorICAgICB2b2lkIHNldEdl b21ldHJ5X2hlbHBlcihjb25zdCBRUmVjdCAmcmVjdCk7CisgICAgIHZvaWQgaW5pdFdpbmRvdygp OworQEAgLTI4MywxMiArMjk4LDEwIEBAIHByaXZhdGU6CisgICAgIFFSZWN0IG1MYXN0RXhwb3Nl R2VvbWV0cnk7CisgCisgICAgIHN0YXRpYyBjb25zdCB3bF9jYWxsYmFja19saXN0ZW5lciBjYWxs YmFja0xpc3RlbmVyOworLSAgICB2b2lkIGhhbmRsZUZyYW1lQ2FsbGJhY2soKTsKKysgICAgdm9p ZCBoYW5kbGVGcmFtZUNhbGxiYWNrKHN0cnVjdCA6OndsX2NhbGxiYWNrKiBjYWxsYmFjayk7Cisg CisgICAgIHN0YXRpYyBRV2F5bGFuZFdpbmRvdyAqbU1vdXNlR3JhYjsKKyAKKy0gICAgbXV0YWJs ZSBRUmVhZFdyaXRlTG9jayBtU3VyZmFjZUxvY2s7CistCisgICAgIGZyaWVuZCBjbGFzcyBRV2F5 bGFuZFN1YlN1cmZhY2U7CisgfTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5kc2hlbGxpbnRlZ3JhdGlvbl9wLmggYi9xdHdheWxh bmQvc3JjL2NsaWVudC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5kc2hlbGxpbnRlZ3JhdGlvbl9w LmgKK2luZGV4IGNjYWQwMDQ4Li40Y2M5YjNiOCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3NoZWxsaW50ZWdyYXRpb24vcXdheWxhbmRzaGVsbGludGVncmF0aW9uX3AuaAorKysr IGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvc2hlbGxpbnRlZ3JhdGlvbi9xd2F5bGFuZHNoZWxsaW50 ZWdyYXRpb25fcC5oCitAQCAtNzMsMTEgKzczLDEwIEBAIHB1YmxpYzoKKyAgICAgICAgIHJldHVy biB0cnVlOworICAgICB9CisgICAgIHZpcnR1YWwgUVdheWxhbmRTaGVsbFN1cmZhY2UgKmNyZWF0 ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpbmRvdyAqd2luZG93KSA9IDA7CisrICAgIC8vIGtlcHQg Zm9yIGJpbmFyeSBjb21wYXQgd2l0aCBsYXllci1zaGVsbC1xdAorICAgICB2aXJ0dWFsIHZvaWQg aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5 bGFuZFdpbmRvdyAqb2xkRm9jdXMpIHsKKy0gICAgICAgIGlmIChuZXdGb2N1cykKKy0gICAgICAg ICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0FjdGl2YXRlZChuZXdGb2N1cyk7CistICAgICAg ICBpZiAob2xkRm9jdXMpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dEZWFj dGl2YXRlZChvbGRGb2N1cyk7CisrICAgICAgICBRX1VOVVNFRChuZXdGb2N1cyk7CisrICAgICAg ICBRX1VOVVNFRChvbGRGb2N1cyk7CisgICAgIH0KKyAgICAgdmlydHVhbCB2b2lkICpuYXRpdmVS ZXNvdXJjZUZvcldpbmRvdyhjb25zdCBRQnl0ZUFycmF5ICZyZXNvdXJjZSwgUVdpbmRvdyAqd2lu ZG93KSB7CisgICAgICAgICBRX1VOVVNFRChyZXNvdXJjZSk7CitkaWZmIC0tZ2l0IGEvcXR3YXls YW5kL3NyYy9jb21wb3NpdG9yL2NvbmZpZ3VyZS5qc29uIGIvcXR3YXlsYW5kL3NyYy9jb21wb3Np dG9yL2NvbmZpZ3VyZS5qc29uCitpbmRleCBiY2ZkNTIxNS4uZGE5NWQwN2IgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvc3JjL2NvbXBvc2l0b3IvY29uZmlndXJlLmpzb24KKysrKyBiL3F0d2F5bGFu ZC9zcmMvY29tcG9zaXRvci9jb25maWd1cmUuanNvbgorQEAgLTcsNiArNywzMSBAQAorICAgICAi dGVzdERpciI6ICIuLi8uLi9jb25maWcudGVzdHMiLAorIAorICAgICAibGlicmFyaWVzIjogewor KyAgICAgICAgIndheWxhbmQtY2xpZW50IjogeworKyAgICAgICAgICAgICJsYWJlbCI6ICJXYXls YW5kIGNsaWVudCBsaWJyYXJ5IiwKKysgICAgICAgICAgICAiaGVhZGVycyI6ICJ3YXlsYW5kLXZl cnNpb24uaCIsCisrICAgICAgICAgICAgInRlc3QiOiB7CisrICAgICAgICAgICAgICAgICJtYWlu IjogWworKyAgICAgICAgICAgICAgICAgICAgIiNpZiBXQVlMQU5EX1ZFUlNJT05fTUFKT1IgPCAx IiwKKysgICAgICAgICAgICAgICAgICAgICIjIGVycm9yIFdheWxhbmQgMS44LjAgb3IgaGlnaGVy IHJlcXVpcmVkIiwKKysgICAgICAgICAgICAgICAgICAgICIjZW5kaWYiLAorKyAgICAgICAgICAg ICAgICAgICAgIiNpZiBXQVlMQU5EX1ZFUlNJT05fTUFKT1IgPT0gMSIsCisrICAgICAgICAgICAg ICAgICAgICAiIyBpZiBXQVlMQU5EX1ZFUlNJT05fTUlOT1IgPCA4IiwKKysgICAgICAgICAgICAg ICAgICAgICIjICBlcnJvciBXYXlsYW5kIDEuOC4wIG9yIGhpZ2hlciByZXF1aXJlZCIsCisrICAg ICAgICAgICAgICAgICAgICAiIyBlbmRpZiIsCisrICAgICAgICAgICAgICAgICAgICAiIyBpZiBX QVlMQU5EX1ZFUlNJT05fTUlOT1IgPT0gOCIsCisrICAgICAgICAgICAgICAgICAgICAiIyAgaWYg V0FZTEFORF9WRVJTSU9OX01JQ1JPIDwgMCIsCisrICAgICAgICAgICAgICAgICAgICAiIyAgIGVy cm9yIFdheWxhbmQgMS44LjAgb3IgaGlnaGVyIHJlcXVpcmVkIiwKKysgICAgICAgICAgICAgICAg ICAgICIjICBlbmRpZiIsCisrICAgICAgICAgICAgICAgICAgICAiIyBlbmRpZiIsCisrICAgICAg ICAgICAgICAgICAgICAiI2VuZGlmIgorKyAgICAgICAgICAgICAgICAgXQorKyAgICAgICAgICAg IH0sCisrICAgICAgICAgICAgInNvdXJjZXMiOiBbCisrICAgICAgICAgICAgICAgIHsgInR5cGUi OiAicGtnQ29uZmlnIiwgImFyZ3MiOiAid2F5bGFuZC1jbGllbnQiIH0sCisrICAgICAgICAgICAg ICAgICItbHdheWxhbmQtY2xpZW50IgorKyAgICAgICAgICAgIF0KKysgICAgICAgIH0sCisgICAg ICAgICAid2F5bGFuZC1zZXJ2ZXIiOiB7CisgICAgICAgICAgICAgImxhYmVsIjogIndheWxhbmQt c2VydmVyIiwKKyAgICAgICAgICAgICAiaGVhZGVycyI6ICJ3YXlsYW5kLXZlcnNpb24uaCIsCitA QCAtMTUxLDggKzE3Niw3IEBACisgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmIgorICAgICAg ICAgICAgICAgICBdCisgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAibGlicyI6ICItbGRy bSIsCistICAgICAgICAgICAgInVzZSI6ICJlZ2wiCisrICAgICAgICAgICAgInVzZSI6ICJkcm0g ZWdsIgorICAgICAgICAgfSwKKyAgICAgICAgICJkbWFidWYtY2xpZW50LWJ1ZmZlciI6IHsKKyAg ICAgICAgICAgICAibGFiZWwiOiAiTGludXggQ2xpZW50IGRtYS1idWYgQnVmZmVyIFNoYXJpbmci LAorQEAgLTE3Niw4ICsyMDAsNyBAQAorICAgICAgICAgICAgICAgICAgICAgInJldHVybiAwOyIK KyAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgImxpYnMi OiAiLWxkcm0iLAorLSAgICAgICAgICAgICJ1c2UiOiAiZWdsIgorKyAgICAgICAgICAgICJ1c2Ui OiAiZHJtIGVnbCIKKyAgICAgICAgIH0sCisgICAgICAgICAidnVsa2FuLXNlcnZlci1idWZmZXIi OiB7CisgICAgICAgICAgICAgImxhYmVsIjogIlZ1bGthbiBCdWZmZXIgU2hhcmluZyIsCitAQCAt MTk1LDcgKzIxOCw4IEBACisgICAgICAgICAgICAgICAgICAgICAiZXhwb3J0QWxsb2NJbmZvLmhh bmRsZVR5cGVzID0gVktfRVhURVJOQUxfTUVNT1JZX0hBTkRMRV9UWVBFX09QQVFVRV9GRF9CSVRf S0hSOyIsCisgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIDA7IgorICAgICAgICAgICAgICAg ICBdCistICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0sCisrICAgICAgICAgICAgInVzZSI6 ICJ3YXlsYW5kLWNsaWVudCIKKyAgICAgICAgIH0KKyAgICAgfSwKKyAKK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXls YW5kZWdsd2luZG93LmNwcCBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGll bnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuY3BwCitpbmRleCA3ODg5ZjU3NS4uNjQx NDA2NzIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xp ZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmNwcAorKysrIGIvcXR3YXlsYW5kL3Ny Yy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRv dy5jcHAKK0BAIC00MCw2ICs0MCw3IEBACisgI2luY2x1ZGUgInF3YXlsYW5kZWdsd2luZG93Lmgi CisgCisgI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRlL3F3YXlsYW5kc2NyZWVuX3Au aD4KKysjaW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvcXdheWxhbmRzdXJmYWNlX3Au aD4KKyAjaW5jbHVkZSAicXdheWxhbmRnbGNvbnRleHQuaCIKKyAKKyAjaW5jbHVkZSA8UXRFZ2xT dXBwb3J0L3ByaXZhdGUvcWVnbGNvbnZlbmllbmNlX3AuaD4KK0BAIC0xMjQsNiArMTI1LDcgQEAg dm9pZCBRV2F5bGFuZEVnbFdpbmRvdzo6dXBkYXRlU3VyZmFjZShib29sIGNyZWF0ZSkKKyAgICAg ICAgIH0KKyAgICAgICAgIG1PZmZzZXQgPSBRUG9pbnQoKTsKKyAgICAgfSBlbHNlIHsKKysgICAg ICAgIFFSZWFkTG9ja2VyIGxvY2tlcigmbVN1cmZhY2VMb2NrKTsKKyAgICAgICAgIGlmIChtX3dh eWxhbmRFZ2xXaW5kb3cpIHsKKyAgICAgICAgICAgICBpbnQgY3VycmVudF93aWR0aCwgY3VycmVu dF9oZWlnaHQ7CisgICAgICAgICAgICAgc3RhdGljIGJvb2wgZGlzYWJsZVJlc2l6ZUNoZWNrID0g cWdldGVudigiUVRfV0FZTEFORF9ESVNBQkxFX1JFU0laRUNIRUNLIikudG9JbnQoKTsKK0BAIC0x MzEsMTQgKzEzMywxNiBAQCB2b2lkIFFXYXlsYW5kRWdsV2luZG93Ojp1cGRhdGVTdXJmYWNlKGJv b2wgY3JlYXRlKQorICAgICAgICAgICAgIGlmICghZGlzYWJsZVJlc2l6ZUNoZWNrKSB7CisgICAg ICAgICAgICAgICAgIHdsX2VnbF93aW5kb3dfZ2V0X2F0dGFjaGVkX3NpemUobV93YXlsYW5kRWds V2luZG93LCAmY3VycmVudF93aWR0aCwgJmN1cnJlbnRfaGVpZ2h0KTsKKyAgICAgICAgICAgICB9 CistICAgICAgICAgICAgaWYgKGRpc2FibGVSZXNpemVDaGVjayB8fCAoY3VycmVudF93aWR0aCAh PSBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSB8fCBjdXJyZW50X2hlaWdodCAhPSBzaXplV2l0aE1h cmdpbnMuaGVpZ2h0KCkpKSB7CisrICAgICAgICAgICAgaWYgKGRpc2FibGVSZXNpemVDaGVjayB8 fCAoY3VycmVudF93aWR0aCAhPSBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSB8fCBjdXJyZW50X2hl aWdodCAhPSBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCkpIHx8IG1fcmVxdWVzdGVkU2l6ZSAhPSBz aXplV2l0aE1hcmdpbnMpIHsKKyAgICAgICAgICAgICAgICAgd2xfZWdsX3dpbmRvd19yZXNpemUo bV93YXlsYW5kRWdsV2luZG93LCBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSwgc2l6ZVdpdGhNYXJn aW5zLmhlaWdodCgpLCBtT2Zmc2V0LngoKSwgbU9mZnNldC55KCkpOworKyAgICAgICAgICAgICAg ICBtX3JlcXVlc3RlZFNpemUgPSBzaXplV2l0aE1hcmdpbnM7CisgICAgICAgICAgICAgICAgIG1P ZmZzZXQgPSBRUG9pbnQoKTsKKyAKKyAgICAgICAgICAgICAgICAgbV9yZXNpemUgPSB0cnVlOwor ICAgICAgICAgICAgIH0KKy0gICAgICAgIH0gZWxzZSBpZiAoY3JlYXRlICYmIHdsU3VyZmFjZSgp KSB7CistICAgICAgICAgICAgbV93YXlsYW5kRWdsV2luZG93ID0gd2xfZWdsX3dpbmRvd19jcmVh dGUod2xTdXJmYWNlKCksIHNpemVXaXRoTWFyZ2lucy53aWR0aCgpLCBzaXplV2l0aE1hcmdpbnMu aGVpZ2h0KCkpOworKyAgICAgICAgfSBlbHNlIGlmIChjcmVhdGUgJiYgbVN1cmZhY2UpIHsKKysg ICAgICAgICAgICBtX3dheWxhbmRFZ2xXaW5kb3cgPSB3bF9lZ2xfd2luZG93X2NyZWF0ZShtU3Vy ZmFjZS0+b2JqZWN0KCksIHNpemVXaXRoTWFyZ2lucy53aWR0aCgpLCBzaXplV2l0aE1hcmdpbnMu aGVpZ2h0KCkpOworKyAgICAgICAgICAgIG1fcmVxdWVzdGVkU2l6ZSA9IHNpemVXaXRoTWFyZ2lu czsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIGlmICghbV9lZ2xTdXJmYWNlICYmIG1fd2F5bGFu ZEVnbFdpbmRvdyAmJiBjcmVhdGUpIHsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2hhcmR3 YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmggYi9x dHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXls YW5kZWdsd2luZG93LmgKK2luZGV4IDViMWY0ZDU2Li4wMDc5ZGZlZiAxMDA2NDQKKy0tLSBhL3F0 d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxh bmRlZ2x3aW5kb3cuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2Ns aWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5oCitAQCAtODgsNiArODgsNyBAQCBw cml2YXRlOgorICAgICBtdXRhYmxlIFFPcGVuR0xGcmFtZWJ1ZmZlck9iamVjdCAqbV9jb250ZW50 RkJPID0gbnVsbHB0cjsKKyAKKyAgICAgUVN1cmZhY2VGb3JtYXQgbV9mb3JtYXQ7CisrICAgIFFT aXplIG1fcmVxdWVzdGVkU2l6ZTsKKyB9OworIAorIH0KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQv c3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY29tcG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFibGUt djEvbGludXhkbWFidWYuaCBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jb21w b3NpdG9yL2xpbnV4LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51eGRtYWJ1Zi5oCitpbmRleCA1NmE3 MTBjMy4uYzZhOGI2YzYgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdy YXRpb24vY29tcG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFibGUtdjEvbGludXhkbWFidWYuaAor KysrIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NvbXBvc2l0b3IvbGludXgt ZG1hYnVmLXVuc3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmgKK0BAIC00MSw2ICs0MSw4IEBACisgI2lu Y2x1ZGUgPFF0Q29yZS9RVGV4dFN0cmVhbT4KKyAjaW5jbHVkZSA8UXRHdWkvUU9wZW5HTFRleHR1 cmU+CisgCisrI2luY2x1ZGUgPGFycmF5PgorKworICNpbmNsdWRlIDxFR0wvZWdsLmg+CisgI2lu Y2x1ZGUgPEVHTC9lZ2xleHQuaD4KKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdp bnMvZGVjb3JhdGlvbnMvYnJhZGllbnQvbWFpbi5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMv ZGVjb3JhdGlvbnMvYnJhZGllbnQvbWFpbi5jcHAKK2luZGV4IGU3NWZkYTNjLi5mYTg4NTE0MyAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9kZWNvcmF0aW9ucy9icmFkaWVudC9t YWluLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL2RlY29yYXRpb25zL2JyYWRpZW50 L21haW4uY3BwCitAQCAtMTY0LDEzICsxNjQsMTAgQEAgdm9pZCBRV2F5bGFuZEJyYWRpZW50RGVj b3JhdGlvbjo6cGFpbnQoUVBhaW50RGV2aWNlICpkZXZpY2UpCisgICAgIC8vIFdpbmRvdyBpY29u CisgICAgIFFJY29uIGljb24gPSB3YXlsYW5kV2luZG93KCktPndpbmRvd0ljb24oKTsKKyAgICAg aWYgKCFpY29uLmlzTnVsbCgpKSB7CistICAgICAgICBRUGl4bWFwIHBpeG1hcCA9IGljb24ucGl4 bWFwKFFTaXplKDEyOCwgMTI4KSk7CistICAgICAgICBRUGl4bWFwIHNjYWxlZCA9IHBpeG1hcC5z Y2FsZWQoMjIsIDIyLCBRdDo6SWdub3JlQXNwZWN0UmF0aW8sIFF0OjpTbW9vdGhUcmFuc2Zvcm1h dGlvbik7CistCisgICAgICAgICBRUmVjdEYgaWNvblJlY3QoMCwgMCwgMjIsIDIyKTsKKy0gICAg ICAgIHAuZHJhd1BpeG1hcChpY29uUmVjdC5hZGp1c3RlZChtYXJnaW5zKCkubGVmdCgpICsgQlVU VE9OX1NQQUNJTkcsIDQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bWFyZ2lucygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0KSwKKy0gICAgICAgICAgICAgICAg ICAgICBzY2FsZWQsIGljb25SZWN0KTsKKysgICAgICAgIGljb25SZWN0LmFkanVzdChtYXJnaW5z KCkubGVmdCgpICsgQlVUVE9OX1NQQUNJTkcsIDQsCisrICAgICAgICAgICAgICAgICAgICAgICAg bWFyZ2lucygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0KSwKKysgICAgICAgIGljb24ucGFp bnQoJnAsIGljb25SZWN0LnRvUmVjdCgpKTsKKyAgICAgfQorIAorICAgICAvLyBXaW5kb3cgdGl0 bGUKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94 ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1LmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lu cy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjUuY3BwCitp bmRleCA4NWQyNWUzYy4uNjBiZGQ0OTEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdp bnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1LmNwcAor KysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1 L3F3YXlsYW5keGRncG9wdXB2NS5jcHAKK0BAIC00NywxOCArNDcsMjEgQEAgUVRfQkVHSU5fTkFN RVNQQUNFCisgCisgbmFtZXNwYWNlIFF0V2F5bGFuZENsaWVudCB7CisgCistUVdheWxhbmRYZGdQ b3B1cFY1OjpRV2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6eGRnX3BvcHVwX3Y1ICpwb3B1cCwg UVdheWxhbmRXaW5kb3cgKndpbmRvdykKKytRV2F5bGFuZFhkZ1BvcHVwVjU6OlFXYXlsYW5kWGRn UG9wdXBWNShzdHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVwLCBRV2F5bGFuZFdpbmRvdyogcGFy ZW50LCBRV2F5bGFuZFdpbmRvdyAqd2luZG93KQorICAgICA6IFFXYXlsYW5kU2hlbGxTdXJmYWNl KHdpbmRvdykKKyAgICAgLCBRdFdheWxhbmQ6OnhkZ19wb3B1cF92NShwb3B1cCkKKysgICAgLCBt X3BhcmVudChwYXJlbnQpCisgICAgICwgbV93aW5kb3cod2luZG93KQorIHsKKyAgICAgaWYgKHdp bmRvdy0+ZGlzcGxheSgpLT53aW5kb3dFeHRlbnNpb24oKSkKKyAgICAgICAgIG1fZXh0ZW5kZWRX aW5kb3cgPSBuZXcgUVdheWxhbmRFeHRlbmRlZFN1cmZhY2Uod2luZG93KTsKKysgICAgbV9wYXJl bnQtPmFkZENoaWxkUG9wdXAobV93aW5kb3cpOworIH0KKyAKKyBRV2F5bGFuZFhkZ1BvcHVwVjU6 On5RV2F5bGFuZFhkZ1BvcHVwVjUoKQorIHsKKyAgICAgeGRnX3BvcHVwX2Rlc3Ryb3kob2JqZWN0 KCkpOworKyAgICBtX3BhcmVudC0+cmVtb3ZlQ2hpbGRQb3B1cChtX3dpbmRvdyk7CisgICAgIGRl bGV0ZSBtX2V4dGVuZGVkV2luZG93OworIH0KKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3Jj L3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1 X3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12 NS9xd2F5bGFuZHhkZ3BvcHVwdjVfcC5oCitpbmRleCA3NDk0ZjZhNi4uZDg1ZjEzMGIgMTAwNjQ0 CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwt djUvcXdheWxhbmR4ZGdwb3B1cHY1X3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NV9wLmgKK0BAIC03 MCw3ICs3MCw3IEBAIGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kWGRnUG9w dXBWNSA6IHB1YmxpYyBRV2F5bGFuZFNoZWxsU3VyZmFjZQorIHsKKyAgICAgUV9PQkpFQ1QKKyBw dWJsaWM6CistICAgIFFXYXlsYW5kWGRnUG9wdXBWNShzdHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBv cHVwLCBRV2F5bGFuZFdpbmRvdyAqd2luZG93KTsKKysgICAgUVdheWxhbmRYZGdQb3B1cFY1KHN0 cnVjdCA6OnhkZ19wb3B1cF92NSAqcG9wdXAsIFFXYXlsYW5kV2luZG93KiBwYXJlbnQsIFFXYXls YW5kV2luZG93ICp3aW5kb3cpOworICAgICB+UVdheWxhbmRYZGdQb3B1cFY1KCkgb3ZlcnJpZGU7 CisgCisgcHJvdGVjdGVkOgorQEAgLTc4LDYgKzc4LDcgQEAgcHJvdGVjdGVkOgorIAorIHByaXZh dGU6CisgICAgIFFXYXlsYW5kRXh0ZW5kZWRTdXJmYWNlICptX2V4dGVuZGVkV2luZG93ID0gbnVs bHB0cjsKKysgICAgUVdheWxhbmRXaW5kb3cgKm1fcGFyZW50ID0gbnVsbHB0cjsKKyAgICAgUVdh eWxhbmRXaW5kb3cgKm1fd2luZG93ID0gbnVsbHB0cjsKKyB9OworIAorZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFu ZHhkZ3NoZWxsdjUuY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24v eGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NS5jcHAKK2luZGV4IDdlMjQyYzRhLi5kZWY4 NDUyYSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9u L3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUuY3BwCisrKysgYi9xdHdheWxhbmQvc3Jj L3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1 LmNwcAorQEAgLTg0LDcgKzg0LDcgQEAgUVdheWxhbmRYZGdQb3B1cFY1ICpRV2F5bGFuZFhkZ1No ZWxsVjU6OmNyZWF0ZVhkZ1BvcHVwKFFXYXlsYW5kV2luZG93ICp3aW5kb3csIFEKKyAgICAgaW50 IHggPSBwb3NpdGlvbi54KCkgKyBwYXJlbnRXaW5kb3ctPmZyYW1lTWFyZ2lucygpLmxlZnQoKTsK KyAgICAgaW50IHkgPSBwb3NpdGlvbi55KCkgKyBwYXJlbnRXaW5kb3ctPmZyYW1lTWFyZ2lucygp LnRvcCgpOworIAorLSAgICBhdXRvIHBvcHVwID0gbmV3IFFXYXlsYW5kWGRnUG9wdXBWNShnZXRf eGRnX3BvcHVwKHdpbmRvdy0+d2xTdXJmYWNlKCksIHBhcmVudFN1cmZhY2UsIHNlYXQsIG1fcG9w dXBTZXJpYWwsIHgsIHkpLCB3aW5kb3cpOworKyAgICBhdXRvIHBvcHVwID0gbmV3IFFXYXlsYW5k WGRnUG9wdXBWNShnZXRfeGRnX3BvcHVwKHdpbmRvdy0+d2xTdXJmYWNlKCksIHBhcmVudFN1cmZh Y2UsIHNlYXQsIG1fcG9wdXBTZXJpYWwsIHgsIHkpLCBwYXJlbnRXaW5kb3csIHdpbmRvdyk7Cisg ICAgIG1fcG9wdXBzLmFwcGVuZCh3aW5kb3cpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHBvcHVw LCAmUVdheWxhbmRYZGdQb3B1cFY1OjpkZXN0cm95ZWQsIFt0aGlzLCB3aW5kb3ddKCl7CisgICAg ICAgICBtX3BvcHVwcy5yZW1vdmVPbmUod2luZG93KTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQv c3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVs bHY1aW50ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uLmNwcAoraW5kZXgg NGUyNTk0OWYuLmNmYzYwOTM5IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9u LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNo ZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uLmNwcAorQEAgLTg1LDEzICs4NSw2 IEBAIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpRV2F5bGFuZFhkZ1NoZWxsVjVJbnRlZ3JhdGlvbjo6 Y3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kCisgICAgIHJldHVybiBtX3hkZ1NoZWxsLT5jcmVh dGVYZGdTdXJmYWNlKHdpbmRvdyk7CisgfQorIAorLXZvaWQgUVdheWxhbmRYZGdTaGVsbFY1SW50 ZWdyYXRpb246OmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdG b2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSB7CistICAgIGlmIChuZXdGb2N1cyAmJiBx b2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdQb3B1cFY1ICo+KG5ld0ZvY3VzLT5zaGVsbFN1cmZhY2Uo KSkpCistICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0FjdGl2YXRlZChuZXdGb2N1cyk7 CistICAgIGlmIChvbGRGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdQb3B1cFY1ICo+ KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpCistICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdp bmRvd0RlYWN0aXZhdGVkKG9sZEZvY3VzKTsKKy19CistCisgfQorIAorIFFUX0VORF9OQU1FU1BB Q0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94 ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb25fcC5oIGIvcXR3YXlsYW5k L3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hl bGx2NWludGVncmF0aW9uX3AuaAoraW5kZXggY2U2YmRiOWUuLmFlZDg4NjcwIDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3 YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVn aW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVn cmF0aW9uX3AuaAorQEAgLTY3LDcgKzY3LDYgQEAgcHVibGljOgorICAgICBRV2F5bGFuZFhkZ1No ZWxsVjVJbnRlZ3JhdGlvbigpIHt9CisgICAgIGJvb2wgaW5pdGlhbGl6ZShRV2F5bGFuZERpc3Bs YXkgKmRpc3BsYXkpIG92ZXJyaWRlOworICAgICBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqY3JlYXRl U2hlbGxTdXJmYWNlKFFXYXlsYW5kV2luZG93ICp3aW5kb3cpIG92ZXJyaWRlOworLSAgICB2b2lk IGhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdh eWxhbmRXaW5kb3cgKm9sZEZvY3VzKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRU2Nv cGVkUG9pbnRlcjxRV2F5bGFuZFhkZ1NoZWxsVjU+IG1feGRnU2hlbGw7CitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXls YW5keGRnc2hlbGx2Ni5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlv bi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2LmNwcAoraW5kZXggOGMzNzE2NjEuLjE1 MWM3OGUzIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2Ni5jcHAKKysrKyBiL3F0d2F5bGFuZC9z cmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxs djYuY3BwCitAQCAtMTc0LDYgKzE3NCw3IEBAIFFXYXlsYW5kWGRnU3VyZmFjZVY2OjpQb3B1cDo6 UG9wdXAoUVdheWxhbmRYZGdTdXJmYWNlVjYgKnhkZ1N1cmZhY2UsIFFXYXlsYW5kWGRnCisgICAg ICwgbV94ZGdTdXJmYWNlKHhkZ1N1cmZhY2UpCisgICAgICwgbV9wYXJlbnQocGFyZW50KQorIHsK KysgICAgbV9wYXJlbnQtPndpbmRvdygpLT5hZGRDaGlsZFBvcHVwKG1feGRnU3VyZmFjZS0+d2lu ZG93KCkpOworIH0KKyAKKyBRV2F5bGFuZFhkZ1N1cmZhY2VWNjo6UG9wdXA6On5Qb3B1cCgpCitA QCAtMTgxLDYgKzE4Miw4IEBAIFFXYXlsYW5kWGRnU3VyZmFjZVY2OjpQb3B1cDo6flBvcHVwKCkK KyAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgIGRlc3Ryb3koKTsKKyAKKysgICAg bV9wYXJlbnQtPndpbmRvdygpLT5yZW1vdmVDaGlsZFBvcHVwKG1feGRnU3VyZmFjZS0+d2luZG93 KCkpOworKworICAgICBpZiAobV9ncmFiYmluZykgeworICAgICAgICAgYXV0byAqc2hlbGwgPSBt X3hkZ1N1cmZhY2UtPm1fc2hlbGw7CisgICAgICAgICBRX0FTU0VSVChzaGVsbC0+bV90b3Btb3N0 R3JhYmJpbmdQb3B1cCA9PSB0aGlzKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdp bnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdy YXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNo ZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uLmNwcAoraW5kZXggMDMxNjQzMTYu LmU4ZGE4YmExIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uLmNwcAorKysr IGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3 YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uLmNwcAorQEAgLTY4LDIwICs2OCw2IEBAIFFXYXls YW5kU2hlbGxTdXJmYWNlICpRV2F5bGFuZFhkZ1NoZWxsVjZJbnRlZ3JhdGlvbjo6Y3JlYXRlU2hl bGxTdXJmYWNlKFFXYXlsYW5kCisgICAgIHJldHVybiBtX3hkZ1NoZWxsLT5nZXRYZGdTdXJmYWNl KHdpbmRvdyk7CisgfQorIAorLXZvaWQgUVdheWxhbmRYZGdTaGVsbFY2SW50ZWdyYXRpb246Omhh bmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxh bmRXaW5kb3cgKm9sZEZvY3VzKQorLXsKKy0gICAgaWYgKG5ld0ZvY3VzKSB7CistICAgICAgICBh dXRvICp4ZGdTdXJmYWNlID0gcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZVY2ICo+KG5l d0ZvY3VzLT5zaGVsbFN1cmZhY2UoKSk7CistICAgICAgICBpZiAoeGRnU3VyZmFjZSAmJiAheGRn U3VyZmFjZS0+aGFuZGxlc0FjdGl2ZVN0YXRlKCkpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5o YW5kbGVXaW5kb3dBY3RpdmF0ZWQobmV3Rm9jdXMpOworLSAgICB9CistICAgIGlmIChvbGRGb2N1 cyAmJiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlVjYgKj4ob2xkRm9jdXMtPnNoZWxs U3VyZmFjZSgpKSkgeworLSAgICAgICAgYXV0byAqeGRnU3VyZmFjZSA9IHFvYmplY3RfY2FzdDxR V2F5bGFuZFhkZ1N1cmZhY2VWNiAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpOworLSAgICAg ICAgaWYgKHhkZ1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2UtPmhhbmRsZXNBY3RpdmVTdGF0ZSgpKQor LSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQob2xkRm9jdXMp OworLSAgICB9CistfQorLQorIH0KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXls YW5keGRnc2hlbGx2NmludGVncmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVs bGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbl9w LmgKK2luZGV4IDI2MWY4Y2JiLi5jMWJjZDVjNiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMv cGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZp bnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbl9wLmgKK0BAIC02 NSw3ICs2NSw2IEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmRYZGdTaGVsbFY2SW50ZWdyYXRpb24o KSB7fQorICAgICBib29sIGluaXRpYWxpemUoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KSBvdmVy cmlkZTsKKyAgICAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5 bGFuZFdpbmRvdyAqd2luZG93KSBvdmVycmlkZTsKKy0gICAgdm9pZCBoYW5kbGVLZXlib2FyZEZv Y3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRG b2N1cykgb3ZlcnJpZGU7CisgCisgcHJpdmF0ZToKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxh bmRYZGdTaGVsbFY2PiBtX3hkZ1NoZWxsOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsLmNwcCBiL3F0 d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhk Z3NoZWxsLmNwcAoraW5kZXggZjNlM2MzMzAuLmZhNmQ1ODA4IDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hl bGwuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGct c2hlbGwvcXdheWxhbmR4ZGdzaGVsbC5jcHAKK0BAIC02NywxMSArNjcsNiBAQCBRV2F5bGFuZFhk Z1N1cmZhY2U6OlRvcGxldmVsOjpUb3BsZXZlbChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1cmZh Y2UpCisgCisgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6flRvcGxldmVsKCkKKyB7Cist ICAgIGlmIChtX2FwcGxpZWQuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkgeworLSAgICAgICAg UVdheWxhbmRXaW5kb3cgKndpbmRvdyA9IG1feGRnU3VyZmFjZS0+d2luZG93KCk7CistICAgICAg ICB3aW5kb3ctPmRpc3BsYXkoKS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQod2luZG93KTsKKy0g ICAgfQorLQorICAgICAvLyBUaGUgcHJvdG9jb2wgc3BlYyByZXF1aXJlcyB0aGF0IHRoZSBkZWNv cmF0aW9uIG9iamVjdCBpcyBkZWxldGVkIGJlZm9yZSB4ZGdfdG9wbGV2ZWwuCisgICAgIGRlbGV0 ZSBtX2RlY29yYXRpb247CisgICAgIG1fZGVjb3JhdGlvbiA9IG51bGxwdHI7CitAQCAtODUsMTYg KzgwLDE1IEBAIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6YXBwbHlDb25maWd1 cmUoKQorICAgICBpZiAoIShtX2FwcGxpZWQuc3RhdGVzICYgKFF0OjpXaW5kb3dNYXhpbWl6ZWR8 UXQ6OldpbmRvd0Z1bGxTY3JlZW4pKSkKKyAgICAgICAgIG1fbm9ybWFsU2l6ZSA9IG1feGRnU3Vy ZmFjZS0+bV93aW5kb3ctPndpbmRvd0ZyYW1lR2VvbWV0cnkoKS5zaXplKCk7CisgCistICAgIGlm ICgobV9wZW5kaW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpICYmICEobV9hcHBsaWVkLnN0 YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpKQorKyAgICBpZiAoKG1fcGVuZGluZy5zdGF0ZXMgJiBR dDo6V2luZG93QWN0aXZlKSAmJiAhKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZl KQorKyAgICAgICAgJiYgIW1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmRpc3BsYXkoKS0+aXNLZXli b2FyZEF2YWlsYWJsZSgpKQorICAgICAgICAgbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+ZGlzcGxh eSgpLT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobV94ZGdTdXJmYWNlLT5tX3dpbmRvdyk7CisgCist ICAgIGlmICghKG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSAmJiAobV9hcHBs aWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpKQorKyAgICBpZiAoIShtX3BlbmRpbmcuc3Rh dGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkgJiYgKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2luZG93 QWN0aXZlKQorKyAgICAgICAgJiYgIW1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmRpc3BsYXkoKS0+ aXNLZXlib2FyZEF2YWlsYWJsZSgpKQorICAgICAgICAgbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+ ZGlzcGxheSgpLT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChtX3hkZ1N1cmZhY2UtPm1fd2luZG93 KTsKKyAKKy0gICAgLy8gVE9ETzogbm9uZSBvZiB0aGUgb3RoZXIgcGx1Z2lucyBzZW5kIFdpbmRv d0FjdGl2ZSBlaXRoZXIsIGJ1dCBpcyBpdCBvbiBwdXJwb3NlPworLSAgICBRdDo6V2luZG93U3Rh dGVzIHN0YXRlc1dpdGhvdXRBY3RpdmUgPSBtX3BlbmRpbmcuc3RhdGVzICYgflF0OjpXaW5kb3dB Y3RpdmU7CistCistICAgIG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmhhbmRsZVdpbmRvd1N0YXRl c0NoYW5nZWQoc3RhdGVzV2l0aG91dEFjdGl2ZSk7CisrICAgIG1feGRnU3VyZmFjZS0+bV93aW5k b3ctPmhhbmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQobV9wZW5kaW5nLnN0YXRlcyk7CisgCisgICAg IGlmIChtX3BlbmRpbmcuc2l6ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgIC8vIEFuIGVtcHR5IHNp emUgaW4gdGhlIGNvbmZpZ3VyZSBtZWFucyBpdCdzIHVwIHRvIHRoZSBjbGllbnQgdG8gY2hvb3Nl IHRoZSBzaXplCitAQCAtMTA1LDggKzk5LDYgQEAgdm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OlRv cGxldmVsOjphcHBseUNvbmZpZ3VyZSgpCisgICAgICAgICBtX3hkZ1N1cmZhY2UtPm1fd2luZG93 LT5yZXNpemVGcm9tQXBwbHlDb25maWd1cmUobV9wZW5kaW5nLnNpemUpOworICAgICB9CisgCist ICAgIG1feGRnU3VyZmFjZS0+c2V0U2l6ZUhpbnRzKCk7CistCisgICAgIG1fYXBwbGllZCA9IG1f cGVuZGluZzsKKyAgICAgcUNEZWJ1ZyhsY1FwYVdheWxhbmQpIDw8ICJBcHBsaWVkIHBlbmRpbmcg eGRnX3RvcGxldmVsIGNvbmZpZ3VyZSBldmVudDoiIDw8IG1fYXBwbGllZC5zaXplIDw8IG1fYXBw bGllZC5zdGF0ZXM7CisgfQorQEAgLTIwMywxMiArMTk1LDE3IEBAIFF0V2F5bGFuZDo6eGRnX3Rv cGxldmVsOjpyZXNpemVfZWRnZSBRV2F5bGFuZFhkZ1N1cmZhY2U6OlRvcGxldmVsOjpjb252ZXJ0 VG9SZXNpCisgICAgICAgICAgICAgICAgIHwgKChlZGdlcyAmIFF0OjpSaWdodEVkZ2UpID8gcmVz aXplX2VkZ2VfcmlnaHQgOiAwKSk7CisgfQorIAorLVFXYXlsYW5kWGRnU3VyZmFjZTo6UG9wdXA6 OlBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSwgUVdheWxhbmRYZGdTdXJmYWNl ICpwYXJlbnQsCisrUVdheWxhbmRYZGdTdXJmYWNlOjpQb3B1cDo6UG9wdXAoUVdheWxhbmRYZGdT dXJmYWNlICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFdpbmRvdyAqcGFyZW50LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXIgKnBvc2l0aW9u ZXIpCistICAgIDogeGRnX3BvcHVwKHhkZ1N1cmZhY2UtPmdldF9wb3B1cChwYXJlbnQtPm9iamVj dCgpLCBwb3NpdGlvbmVyLT5vYmplY3QoKSkpCistICAgICwgbV94ZGdTdXJmYWNlKHhkZ1N1cmZh Y2UpCisrICAgIDogbV94ZGdTdXJmYWNlKHhkZ1N1cmZhY2UpCisrICAgICwgbV9wYXJlbnRYZGdT dXJmYWNlKHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4ocGFyZW50LT5zaGVsbFN1 cmZhY2UoKSkpCisgICAgICwgbV9wYXJlbnQocGFyZW50KQorIHsKKysKKysgICAgaW5pdCh4ZGdT dXJmYWNlLT5nZXRfcG9wdXAobV9wYXJlbnRYZGdTdXJmYWNlID8gbV9wYXJlbnRYZGdTdXJmYWNl LT5vYmplY3QoKSA6IG51bGxwdHIsIHBvc2l0aW9uZXItPm9iamVjdCgpKSk7CisrICAgIGlmICht X3BhcmVudCkgeworKyAgICAgICAgbV9wYXJlbnQtPmFkZENoaWxkUG9wdXAobV94ZGdTdXJmYWNl LT53aW5kb3coKSk7CisrICAgIH0KKyB9CisgCisgUVdheWxhbmRYZGdTdXJmYWNlOjpQb3B1cDo6 flBvcHVwKCkKK0BAIC0yMTYsMTAgKzIxMywyNCBAQCBRV2F5bGFuZFhkZ1N1cmZhY2U6OlBvcHVw Ojp+UG9wdXAoKQorICAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgICAgICAgZGVzdHJveSgp OworIAorKyAgICBpZiAobV9wYXJlbnQpIHsKKysgICAgICAgIG1fcGFyZW50LT5yZW1vdmVDaGls ZFBvcHVwKG1feGRnU3VyZmFjZS0+d2luZG93KCkpOworKyAgICB9CisrCisgICAgIGlmIChtX2dy YWJiaW5nKSB7CisgICAgICAgICBhdXRvICpzaGVsbCA9IG1feGRnU3VyZmFjZS0+bV9zaGVsbDsK KyAgICAgICAgIFFfQVNTRVJUKHNoZWxsLT5tX3RvcG1vc3RHcmFiYmluZ1BvcHVwID09IHRoaXMp OworLSAgICAgICAgc2hlbGwtPm1fdG9wbW9zdEdyYWJiaW5nUG9wdXAgPSBtX3BhcmVudC0+bV9w b3B1cDsKKysgICAgICAgIHNoZWxsLT5tX3RvcG1vc3RHcmFiYmluZ1BvcHVwID0gbV9wYXJlbnRY ZGdTdXJmYWNlID8gbV9wYXJlbnRYZGdTdXJmYWNlLT5tX3BvcHVwIDogbnVsbHB0cjsKKysgICAg ICAgIG1fZ3JhYmJpbmcgPSBmYWxzZTsKKysKKysgICAgICAgIC8vIFN5bnRoZXNpemUgUXQgZW50 ZXIvbGVhdmUgZXZlbnRzIGZvciBwb3B1cAorKyAgICAgICAgUVdpbmRvdyAqbGVhdmUgPSBudWxs cHRyOworKyAgICAgICAgaWYgKG1feGRnU3VyZmFjZSAmJiBtX3hkZ1N1cmZhY2UtPndpbmRvdygp KQorKyAgICAgICAgICAgIGxlYXZlID0gbV94ZGdTdXJmYWNlLT53aW5kb3coKS0+d2luZG93KCk7 CisrICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVMZWF2ZUV2ZW50KGxlYXZl KTsKKysKKysgICAgICAgIGlmIChRV2luZG93ICplbnRlciA9IFFHdWlBcHBsaWNhdGlvbjo6dG9w TGV2ZWxBdChRQ3Vyc29yOjpwb3MoKSkpCisrICAgICAgICAgICAgUVdpbmRvd1N5c3RlbUludGVy ZmFjZTo6aGFuZGxlRW50ZXJFdmVudChlbnRlciwgZW50ZXItPm1hcEZyb21HbG9iYWwoUUN1cnNv cjo6cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSk7CisgICAgIH0KKyB9CisgCitAQCAtMjU3LDYgKzI2 OCw3IEBAIFFXYXlsYW5kWGRnU3VyZmFjZTo6UVdheWxhbmRYZGdTdXJmYWNlKFFXYXlsYW5kWGRn U2hlbGwgKnNoZWxsLCA6OnhkZ19zdXJmYWNlICpzCisgICAgICAgICAgICAgICAgIG1fdG9wbGV2 ZWwtPnNldF9wYXJlbnQocGFyZW50WGRnU3VyZmFjZS0+bV90b3BsZXZlbC0+b2JqZWN0KCkpOwor ICAgICAgICAgfQorICAgICB9CisrICAgIHNldFNpemVIaW50cygpOworIH0KKyAKKyBRV2F5bGFu ZFhkZ1N1cmZhY2U6On5RV2F5bGFuZFhkZ1N1cmZhY2UoKQorQEAgLTQwMCw4ICs0MTIsNiBAQCB2 b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6c2V0UG9wdXAoUVdheWxhbmRXaW5kb3cgKnBhcmVudCkK KyB7CisgICAgIFFfQVNTRVJUKCFtX3RvcGxldmVsICYmICFtX3BvcHVwKTsKKyAKKy0gICAgYXV0 byBwYXJlbnRYZGdTdXJmYWNlID0gc3RhdGljX2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+KHBh cmVudC0+c2hlbGxTdXJmYWNlKCkpOworLQorICAgICBhdXRvIHBvc2l0aW9uZXIgPSBuZXcgUXRX YXlsYW5kOjp4ZGdfcG9zaXRpb25lcihtX3NoZWxsLT5jcmVhdGVfcG9zaXRpb25lcigpKTsKKyAg ICAgLy8gc2V0X3BvcHVwIGV4cGVjdHMgYSBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgcGFyZW50 CisgICAgIFFQb2ludCB0cmFuc2llbnRQb3MgPSBtX3dpbmRvdy0+Z2VvbWV0cnkoKS50b3BMZWZ0 KCk7IC8vIHRoaXMgaXMgYWJzb2x1dGUKK0BAIC00MTQsOCArNDI0LDkgQEAgdm9pZCBRV2F5bGFu ZFhkZ1N1cmZhY2U6OnNldFBvcHVwKFFXYXlsYW5kV2luZG93ICpwYXJlbnQpCisgICAgIHBvc2l0 aW9uZXItPnNldF9hbmNob3IoUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lcjo6YW5jaG9yX3RvcF9s ZWZ0KTsKKyAgICAgcG9zaXRpb25lci0+c2V0X2dyYXZpdHkoUXRXYXlsYW5kOjp4ZGdfcG9zaXRp b25lcjo6Z3Jhdml0eV9ib3R0b21fcmlnaHQpOworICAgICBwb3NpdGlvbmVyLT5zZXRfc2l6ZSht X3dpbmRvdy0+Z2VvbWV0cnkoKS53aWR0aCgpLCBtX3dpbmRvdy0+Z2VvbWV0cnkoKS5oZWlnaHQo KSk7CistICAgIG1fcG9wdXAgPSBuZXcgUG9wdXAodGhpcywgcGFyZW50WGRnU3VyZmFjZSwgcG9z aXRpb25lcik7CisrICAgIG1fcG9wdXAgPSBuZXcgUG9wdXAodGhpcywgcGFyZW50LCBwb3NpdGlv bmVyKTsKKyAgICAgcG9zaXRpb25lci0+ZGVzdHJveSgpOworKworICAgICBkZWxldGUgcG9zaXRp b25lcjsKKyB9CisgCitAQCAtNDM3LDYgKzQ0OCwyMyBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFj ZTo6c2V0R3JhYlBvcHVwKFFXYXlsYW5kV2luZG93ICpwYXJlbnQsIFFXYXlsYW5kSW5wdXREZXZp YworICAgICB9CisgICAgIHNldFBvcHVwKHBhcmVudCk7CisgICAgIG1fcG9wdXAtPmdyYWIoZGV2 aWNlLCBzZXJpYWwpOworKworKyAgICAvLyBTeW50aGVzaXplIFF0IGVudGVyL2xlYXZlIGV2ZW50 cyBmb3IgcG9wdXAKKysgICAgaWYgKCFwYXJlbnQpCisrICAgICAgICByZXR1cm47CisrICAgIFFX aW5kb3cgKmN1cnJlbnQgPSBRR3VpQXBwbGljYXRpb246OnRvcExldmVsQXQoUUN1cnNvcjo6cG9z KCkpOworKyAgICBRV2luZG93ICpsZWF2ZSA9IHBhcmVudC0+d2luZG93KCk7CisrICAgIGlmIChj dXJyZW50ICE9IGxlYXZlKQorKyAgICAgICAgcmV0dXJuOworKworKyAgICBRV2luZG93U3lzdGVt SW50ZXJmYWNlOjpoYW5kbGVMZWF2ZUV2ZW50KGxlYXZlKTsKKysKKysgICAgUVdpbmRvdyAqZW50 ZXIgPSBudWxscHRyOworKyAgICBpZiAobV9wb3B1cCAmJiBtX3BvcHVwLT5tX3hkZ1N1cmZhY2Ug JiYgbV9wb3B1cC0+bV94ZGdTdXJmYWNlLT53aW5kb3coKSkKKysgICAgICAgIGVudGVyID0gbV9w b3B1cC0+bV94ZGdTdXJmYWNlLT53aW5kb3coKS0+d2luZG93KCk7CisrCisrICAgIGlmIChlbnRl cikKKysgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUVudGVyRXZlbnQoZW50 ZXIsIGVudGVyLT5tYXBGcm9tR2xvYmFsKFFDdXJzb3I6OnBvcygpKSwgUUN1cnNvcjo6cG9zKCkp OworIH0KKyAKKyB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6eGRnX3N1cmZhY2VfY29uZmlndXJl KHVpbnQzMl90IHNlcmlhbCkKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hl bGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbF9wLmggYi9xdHdheWxhbmQv c3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbF9w LmgKK2luZGV4IDk2Nzg1MjA1Li40YjUxOGYwYSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMv cGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsX3AuaAor KysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3 YXlsYW5keGRnc2hlbGxfcC5oCitAQCAtMTMxLDE0ICsxMzEsMTUgQEAgcHJpdmF0ZToKKyAKKyAg ICAgY2xhc3MgUG9wdXAgOiBwdWJsaWMgUXRXYXlsYW5kOjp4ZGdfcG9wdXAgeworICAgICBwdWJs aWM6CistICAgICAgICBQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1cmZhY2UsIFFXYXls YW5kWGRnU3VyZmFjZSAqcGFyZW50LCBRdFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyICpwb3NpdGlv bmVyKTsKKysgICAgICAgIFBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSwgUVdh eWxhbmRXaW5kb3cgKnBhcmVudCwgUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lciAqcG9zaXRpb25l cik7CisgICAgICAgICB+UG9wdXAoKSBvdmVycmlkZTsKKyAKKyAgICAgICAgIHZvaWQgZ3JhYihR V2F5bGFuZElucHV0RGV2aWNlICpzZWF0LCB1aW50IHNlcmlhbCk7CisgICAgICAgICB2b2lkIHhk Z19wb3B1cF9wb3B1cF9kb25lKCkgb3ZlcnJpZGU7CisgCisgICAgICAgICBRV2F5bGFuZFhkZ1N1 cmZhY2UgKm1feGRnU3VyZmFjZSA9IG51bGxwdHI7CistICAgICAgICBRV2F5bGFuZFhkZ1N1cmZh Y2UgKm1fcGFyZW50ID0gbnVsbHB0cjsKKysgICAgICAgIFFXYXlsYW5kWGRnU3VyZmFjZSAqbV9w YXJlbnRYZGdTdXJmYWNlID0gbnVsbHB0cjsKKysgICAgICAgIFFXYXlsYW5kV2luZG93ICptX3Bh cmVudCA9IG51bGxwdHI7CisgICAgICAgICBib29sIG1fZ3JhYmJpbmcgPSBmYWxzZTsKKyAgICAg fTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlv bi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uLmNwcCBiL3F0d2F5bGFuZC9z cmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50 ZWdyYXRpb24uY3BwCitpbmRleCA4NzY5ZDk3MS4uZGEwZGQ2YTcgMTAwNjQ0CistLS0gYS9xdHdh eWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdz aGVsbGludGVncmF0aW9uLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50 ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbi5jcHAKK0BAIC02 OSwyMCArNjksNiBAQCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqUVdheWxhbmRYZGdTaGVsbEludGVn cmF0aW9uOjpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaQorICAgICByZXR1cm4gbV94ZGdT aGVsbC0+Z2V0WGRnU3VyZmFjZSh3aW5kb3cpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kWGRnU2hl bGxJbnRlZ3JhdGlvbjo6aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cg Km5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpCisteworLSAgICBpZiAobmV3Rm9j dXMpIHsKKy0gICAgICAgIGF1dG8gKnhkZ1N1cmZhY2UgPSBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRY ZGdTdXJmYWNlICo+KG5ld0ZvY3VzLT5zaGVsbFN1cmZhY2UoKSk7CistICAgICAgICBpZiAoeGRn U3VyZmFjZSAmJiAheGRnU3VyZmFjZS0+aGFuZGxlc0FjdGl2ZVN0YXRlKCkpCistICAgICAgICAg ICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobmV3Rm9jdXMpOworLSAgICB9Cist ICAgIGlmIChvbGRGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+KG9s ZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpIHsKKy0gICAgICAgIGF1dG8gKnhkZ1N1cmZhY2UgPSBx b2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2Uo KSk7CistICAgICAgICBpZiAoeGRnU3VyZmFjZSAmJiAheGRnU3VyZmFjZS0+aGFuZGxlc0FjdGl2 ZVN0YXRlKCkpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRl ZChvbGRGb2N1cyk7CistICAgIH0KKy19CistCisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lu cy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb25f cC5oCitpbmRleCBiNmNhYTZjOS4uMmY5MjlmOTggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3Jj L3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVn cmF0aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24v eGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbl9wLmgKK0BAIC02NSw3ICs2NSw2 IEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmRYZGdTaGVsbEludGVncmF0aW9uKCkge30KKyAgICAg Ym9vbCBpbml0aWFsaXplKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7CisgICAg IFFXYXlsYW5kU2hlbGxTdXJmYWNlICpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaW5kb3cg KndpbmRvdykgb3ZlcnJpZGU7CistICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQo UVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpIG92ZXJy aWRlOworIAorIHByaXZhdGU6CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kWGRnU2hlbGw+ IG1feGRnU2hlbGw7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRp bnB1dG1ldGhvZGV2ZW50YnVpbGRlci5jcHAgYi9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFu ZGlucHV0bWV0aG9kZXZlbnRidWlsZGVyLmNwcAoraW5kZXggNTI2ZDBlZjQuLmY1MGNjZjMwIDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50 YnVpbGRlci5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kaW5wdXRtZXRo b2RldmVudGJ1aWxkZXIuY3BwCitAQCAtMzksNyArMzksMTAgQEAKKyAKKyAjaW5jbHVkZSAicXdh eWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlcl9wLmgiCisgCisrI2luY2x1ZGUgPFFCcnVzaD4K KysjaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgorICNpbmNsdWRlIDxRSW5wdXRNZXRob2Q+Cisr I2luY2x1ZGUgPFFQYWxldHRlPgorICNpbmNsdWRlIDxRVGV4dENoYXJGb3JtYXQ+CisgCisgI2lm ZGVmIFFUX0JVSUxEX1dBWUxBTkRDT01QT1NJVE9SX0xJQgorQEAgLTgxLDMyICs4NCwzOCBAQCB2 b2lkIFFXYXlsYW5kSW5wdXRNZXRob2RFdmVudEJ1aWxkZXI6OmFkZFByZWVkaXRTdHlsaW5nKHVp bnQzMl90IGluZGV4LCB1aW50MzJfdAorICAgICBRVGV4dENoYXJGb3JtYXQgZm9ybWF0OworIAor ICAgICBzd2l0Y2ggKHN0eWxlKSB7CistICAgIGNhc2UgMDoKKy0gICAgY2FzZSAxOgorKyAgICBj YXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfTk9ORToKKysgICAgICAgIGJyZWFr OworKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfREVGQVVMVDoKKysg ICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX1VOREVSTElORToKKyAgICAg ICAgIGZvcm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUpOworICAgICAgICAgZm9ybWF0LnNldFVu ZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6U2luZ2xlVW5kZXJsaW5lKTsKKyAgICAgICAg IG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5w dXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7CisgICAg ICAgICBicmVhazsKKy0gICAgY2FzZSAyOgorLSAgICBjYXNlIDM6CisrICAgIGNhc2UgWldQX1RF WFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9BQ1RJVkU6CisrICAgIGNhc2UgWldQX1RFWFRfSU5Q VVRfVjJfUFJFRURJVF9TVFlMRV9JTkFDVElWRToKKyAgICAgICAgIGZvcm1hdC5zZXRGb250V2Vp Z2h0KFFGb250OjpCb2xkKTsKKyAgICAgICAgIGZvcm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUp OworICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6U2lu Z2xlVW5kZXJsaW5lKTsKKyAgICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0 aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgs IGxlbmd0aCwgZm9ybWF0KSk7CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSA0OgorLSAgICAg ICAgZm9ybWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7CistICAgICAgICBmb3JtYXQuc2V0VW5k ZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpTaW5nbGVVbmRlcmxpbmUpOworLSAgICAgICAg bV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1 dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVuZ3RoLCBmb3JtYXQpKTsKKysgICAg Y2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX0hJR0hMSUdIVDoKKysgICAgY2Fz ZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX1NFTEVDVElPTjoKKysgICAgICAgIHsK KysgICAgICAgICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGluZSh0cnVlKTsKKysgICAgICAgICAg ICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpTaW5nbGVVbmRlcmxp bmUpOworKyAgICAgICAgICAgIFFQYWxldHRlIHBhbGV0dGUgPSBxQXBwLT5wYWxldHRlKCk7Cisr ICAgICAgICAgICAgZm9ybWF0LnNldEJhY2tncm91bmQoUUJydXNoKHBhbGV0dGUuY29sb3IoUVBh bGV0dGU6OkFjdGl2ZSwgUVBhbGV0dGU6OkhpZ2hsaWdodCkpKTsKKysgICAgICAgICAgICBmb3Jt YXQuc2V0Rm9yZWdyb3VuZChRQnJ1c2gocGFsZXR0ZS5jb2xvcihRUGFsZXR0ZTo6QWN0aXZlLCBR UGFsZXR0ZTo6SGlnaGxpZ2h0ZWRUZXh0KSkpOworKyAgICAgICAgICAgIG1fcHJlZWRpdFN0eWxl cy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6 VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7CisrICAgICAgICB9CisgICAgICAg ICBicmVhazsKKy0gICAgY2FzZSA1OgorKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVE SVRfU1RZTEVfSU5DT1JSRUNUOgorICAgICAgICAgZm9ybWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1 ZSk7CisgICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpX YXZlVW5kZXJsaW5lKTsKKyAgICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVDb2xvcihRQ29sb3Io UXQ6OnJlZCkpOworICAgICAgICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRob2RF dmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVu Z3RoLCBmb3JtYXQpKTsKKyAgICAgICAgIGJyZWFrOworLS8vICAgIGNhc2UgUXRXYXlsYW5kOjp3 bF90ZXh0X2lucHV0OjpwcmVlZGl0X3N0eWxlX3NlbGVjdGlvbjoKKy0vLyAgICBjYXNlIFF0V2F5 bGFuZDo6d2xfdGV4dF9pbnB1dDo6cHJlZWRpdF9zdHlsZV9ub25lOgorICAgICBkZWZhdWx0Ogor ICAgICAgICAgYnJlYWs7CisgICAgIH0KK0BAIC0xNTMsNyArMTYyLDcgQEAgUUlucHV0TWV0aG9k RXZlbnQgUVdheWxhbmRJbnB1dE1ldGhvZEV2ZW50QnVpbGRlcjo6YnVpbGRQcmVlZGl0KGNvbnN0 IFFTdHJpbmcgJnQKKyAKKyAgICAgaWYgKG1fcHJlZWRpdEN1cnNvciA8IDApIHsKKyAgICAgICAg IGF0dHJpYnV0ZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0 aG9kRXZlbnQ6OkN1cnNvciwgMCwgMCwgUVZhcmlhbnQoKSkpOworLSAgICB9IGVsc2UgaWYgKG1f cHJlZWRpdEN1cnNvciA+IDApIHsKKysgICAgfSBlbHNlIHsKKyAgICAgICAgIGF0dHJpYnV0ZXMu YXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OkN1 cnNvciwgaW5kZXhGcm9tV2F5bGFuZCh0ZXh0LCBtX3ByZWVkaXRDdXJzb3IpLCAxLCBRVmFyaWFu dCgpKSk7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5 bGFuZG1pbWVoZWxwZXIuY3BwIGIvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRtaW1laGVs cGVyLmNwcAoraW5kZXggYTVmZGQzNGQuLmUyZmUxOTI4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5k L3NyYy9zaGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9z aGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNwcAorQEAgLTYwLDcgKzYwLDcgQEAgUUJ5dGVBcnJh eSBRV2F5bGFuZE1pbWVIZWxwZXI6OmdldEJ5dGVBcnJheShRTWltZURhdGEgKm1pbWVEYXRhLCBj b25zdCBRU3RyaW5nICYKKyAgICAgICAgICAgICBidWYub3BlbihRSU9EZXZpY2U6OlJlYWRXcml0 ZSk7CisgICAgICAgICAgICAgUUJ5dGVBcnJheSBmbXQgPSAiQk1QIjsKKyAgICAgICAgICAgICBp ZiAobWltZVR5cGUuc3RhcnRzV2l0aChRTGF0aW4xU3RyaW5nKCJpbWFnZS8iKSkpIHsKKy0gICAg ICAgICAgICAgICAgUUJ5dGVBcnJheSBpbWdGbXQgPSBtaW1lVHlwZS5taWQoNikudG9VcHBlcigp LnRvTGF0aW4xKCk7CisrICAgICAgICAgICAgICAgIFFCeXRlQXJyYXkgaW1nRm10ID0gbWltZVR5 cGUubWlkKDYpLnRvTG93ZXIoKS50b0xhdGluMSgpOworICAgICAgICAgICAgICAgICBpZiAoUUlt YWdlV3JpdGVyOjpzdXBwb3J0ZWRJbWFnZUZvcm1hdHMoKS5jb250YWlucyhpbWdGbXQpKQorICAg ICAgICAgICAgICAgICAgICAgZm10ID0gaW1nRm10OworICAgICAgICAgICAgIH0KK0BAIC03NCw3 ICs3NCw3IEBAIFFCeXRlQXJyYXkgUVdheWxhbmRNaW1lSGVscGVyOjpnZXRCeXRlQXJyYXkoUU1p bWVEYXRhICptaW1lRGF0YSwgY29uc3QgUVN0cmluZyAmCisgICAgICAgICBRTGlzdDxRVXJsPiB1 cmxzID0gbWltZURhdGEtPnVybHMoKTsKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdXJs cy5jb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCh1cmxzLmF0KGkp LnRvRW5jb2RlZCgpKTsKKy0gICAgICAgICAgICBjb250ZW50LmFwcGVuZCgnXG4nKTsKKysgICAg ICAgICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIpOworICAgICAgICAgfQorICAgICB9IGVsc2Ug eworICAgICAgICAgY29udGVudCA9IG1pbWVEYXRhLT5kYXRhKG1pbWVUeXBlKTsKK2RpZmYgLS1n aXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvZGF0YWRldmljZXYxL3RzdF9kYXRhZGV2 aWNldjEuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFkZXZpY2V2MS90c3Rf ZGF0YWRldmljZXYxLmNwcAoraW5kZXggMTU2OGIzYjkuLjA2NzQxMGQwIDEwMDY0NAorLS0tIGEv cXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFkZXZpY2V2MS90c3RfZGF0YWRldmljZXYx LmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFkZXZpY2V2MS90c3Rf ZGF0YWRldmljZXYxLmNwcAorQEAgLTM1LDcgKzM1LDcgQEAKKyAKKyB1c2luZyBuYW1lc3BhY2Ug TW9ja0NvbXBvc2l0b3I7CisgCistY29uc3RleHByIGludCBkYXRhRGV2aWNlVmVyc2lvbiA9IDE7 CisrY29uc3RleHByIGludCBkYXRhRGV2aWNlVmVyc2lvbiA9IDM7CisgCisgY2xhc3MgRGF0YURl dmljZUNvbXBvc2l0b3IgOiBwdWJsaWMgRGVmYXVsdENvbXBvc2l0b3IgeworIHB1YmxpYzoKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2VhdHY1L3RzdF9zZWF0djUu Y3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNwcAor aW5kZXggOTMxMmMyZTUuLjJlYTM4MmYxIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1 dG8vY2xpZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1 dG8vY2xpZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNwcAorQEAgLTczLDYgKzczLDcgQEAgcHJpdmF0 ZSBzbG90czoKKyAgICAgdm9pZCBtdWx0aVRvdWNoKCk7CisgICAgIHZvaWQgbXVsdGlUb3VjaFVw QW5kTW90aW9uRnJhbWUoKTsKKyAgICAgdm9pZCB0YXBBbmRNb3ZlSW5TYW1lRnJhbWUoKTsKKysg ICAgdm9pZCBjYW5jZWxUb3VjaCgpOworIH07CisgCisgdm9pZCB0c3Rfc2VhdHY1OjpiaW5kc1Rv U2VhdCgpCitAQCAtNjQ2LDUgKzY0NywzNCBAQCB2b2lkIHRzdF9zZWF0djU6OnRhcEFuZE1vdmVJ blNhbWVGcmFtZSgpCisgICAgIFFUUllfQ09NUEFSRSh3aW5kb3cubV9ldmVudHMubGFzdCgpLnRv dWNoUG9pbnRzLmZpcnN0KCkuc3RhdGUoKSwgUXQ6OlRvdWNoUG9pbnRTdGF0ZTo6VG91Y2hQb2lu dFJlbGVhc2VkKTsKKyB9CisgCisrdm9pZCB0c3Rfc2VhdHY1OjpjYW5jZWxUb3VjaCgpCisrewor KyAgICBUb3VjaFdpbmRvdyB3aW5kb3c7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRn U3VyZmFjZSgpICYmIHhkZ1N1cmZhY2UoKS0+bV9jb21taXR0ZWRDb25maWd1cmVTZXJpYWwpOwor KworKyAgICBleGVjKFs9XSB7CisrICAgICAgICBhdXRvICp0ID0gdG91Y2goKTsKKysgICAgICAg IGF1dG8gKmMgPSBjbGllbnQoKTsKKysgICAgICAgIHQtPnNlbmREb3duKHhkZ1RvcGxldmVsKCkt PnN1cmZhY2UoKSwgezMyLCAzMn0sIDEpOworKyAgICAgICAgdC0+c2VuZEZyYW1lKGMpOworKyAg ICAgICAgdC0+c2VuZENhbmNlbChjKTsKKysgICAgICAgIHQtPnNlbmRGcmFtZShjKTsKKysgICAg fSk7CisrCisrICAgIFFUUllfVkVSSUZZKCF3aW5kb3cubV9ldmVudHMuZW1wdHkoKSk7CisrICAg IHsKKysgICAgICAgIGF1dG8gZSA9IHdpbmRvdy5tX2V2ZW50cy50YWtlRmlyc3QoKTsKKysgICAg ICAgIFFDT01QQVJFKGUudHlwZSwgUUV2ZW50OjpUb3VjaEJlZ2luKTsKKysgICAgICAgIFFDT01Q QVJFKGUudG91Y2hQb2ludFN0YXRlcywgUXQ6OlRvdWNoUG9pbnRQcmVzc2VkKTsKKysgICAgICAg IFFDT01QQVJFKGUudG91Y2hQb2ludHMubGVuZ3RoKCksIDEpOworKyAgICAgICAgUUNPTVBBUkUo ZS50b3VjaFBvaW50cy5maXJzdCgpLnBvcygpLCBRUG9pbnRGKDMyLXdpbmRvdy5mcmFtZU1hcmdp bnMoKS5sZWZ0KCksIDMyLXdpbmRvdy5mcmFtZU1hcmdpbnMoKS50b3AoKSkpOworKyAgICB9Cisr ICAgIHsKKysgICAgICAgIGF1dG8gZSA9IHdpbmRvdy5tX2V2ZW50cy50YWtlRmlyc3QoKTsKKysg ICAgICAgIFFDT01QQVJFKGUudHlwZSwgUUV2ZW50OjpUb3VjaENhbmNlbCk7CisrICAgICAgICBR Q09NUEFSRShlLnRvdWNoUG9pbnRzLmxlbmd0aCgpLCAwKTsKKysgICAgfQorK30KKysKKyBRQ09N UE9TSVRPUl9URVNUX01BSU4odHN0X3NlYXR2NSkKKyAjaW5jbHVkZSAidHN0X3NlYXR2NS5tb2Mi CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlY29t cG9zaXRvci5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVjb21w b3NpdG9yLmNwcAoraW5kZXggNWM2YzgzYmEuLmZhOWI3NjYyIDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlY29tcG9zaXRvci5jcHAKKysrKyBiL3F0 d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZWNvbXBvc2l0b3IuY3BwCitAQCAt MjcsNiArMjcsNyBAQAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgCisgI2luY2x1ZGUgImNvcmVj b21wb3NpdG9yLmgiCisrI2luY2x1ZGUgPHRocmVhZD4KKyAKKyBuYW1lc3BhY2UgTW9ja0NvbXBv c2l0b3IgeworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFy ZWQvY29yZXByb3RvY29sLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQv Y29yZXByb3RvY29sLmNwcAoraW5kZXggMGQ5ODg1MjEuLmQxYTJlN2NiIDEwMDY0NAorLS0tIGEv cXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuY3BwCisrKysg Yi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5jcHAKK0BA IC00NTEsNiArNDUxLDEzIEBAIHZvaWQgVG91Y2g6OnNlbmRGcmFtZSh3bF9jbGllbnQgKmNsaWVu dCkKKyAgICAgICAgIHNlbmRfZnJhbWUoci0+aGFuZGxlKTsKKyB9CisgCisrdm9pZCBUb3VjaDo6 c2VuZENhbmNlbCh3bF9jbGllbnQgKmNsaWVudCkKKyt7CisrICAgIGNvbnN0IGF1dG8gdG91Y2hS ZXNvdXJjZXMgPSByZXNvdXJjZU1hcCgpLnZhbHVlcyhjbGllbnQpOworKyAgICBmb3IgKGF1dG8g KnIgOiB0b3VjaFJlc291cmNlcykKKysgICAgICAgIHNlbmRfY2FuY2VsKHItPmhhbmRsZSk7Cisr fQorKworIHVpbnQgS2V5Ym9hcmQ6OnNlbmRFbnRlcihTdXJmYWNlICpzdXJmYWNlKQorIHsKKyAg ICAgYXV0byBzZXJpYWwgPSBtX3NlYXQtPm1fY29tcG9zaXRvci0+bmV4dFNlcmlhbCgpOworZGlm ZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29s LmggYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5oCitp bmRleCBhMWFmMTM3YS4uMjEwZDhkZGIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0 by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5oCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0 by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5oCitAQCAtMTU4LDcgKzE1OCw3IEBAIGNsYXNz IFdsQ29tcG9zaXRvciA6IHB1YmxpYyBHbG9iYWwsIHB1YmxpYyBRdFdheWxhbmRTZXJ2ZXI6Onds X2NvbXBvc2l0b3IKKyB7CisgICAgIFFfT0JKRUNUCisgcHVibGljOgorLSAgICBleHBsaWNpdCBX bENvbXBvc2l0b3IoQ29yZUNvbXBvc2l0b3IgKmNvbXBvc2l0b3IsIGludCB2ZXJzaW9uID0gMykK KysgICAgZXhwbGljaXQgV2xDb21wb3NpdG9yKENvcmVDb21wb3NpdG9yICpjb21wb3NpdG9yLCBp bnQgdmVyc2lvbiA9IDQpCisgICAgICAgICA6IFF0V2F5bGFuZFNlcnZlcjo6d2xfY29tcG9zaXRv cihjb21wb3NpdG9yLT5tX2Rpc3BsYXksIHZlcnNpb24pCisgICAgICAgICAsIG1fY29tcG9zaXRv cihjb21wb3NpdG9yKQorICAgICB7fQorQEAgLTM2NCw2ICszNjQsNyBAQCBwdWJsaWM6CisgICAg IHVpbnQgc2VuZFVwKHdsX2NsaWVudCAqY2xpZW50LCBpbnQgaWQpOworICAgICB2b2lkIHNlbmRN b3Rpb24od2xfY2xpZW50ICpjbGllbnQsIGNvbnN0IFFQb2ludEYgJnBvc2l0aW9uLCBpbnQgaWQp OworICAgICB2b2lkIHNlbmRGcmFtZSh3bF9jbGllbnQgKmNsaWVudCk7CisrICAgIHZvaWQgc2Vu ZENhbmNlbCh3bF9jbGllbnQgKmNsaWVudCk7CisgCisgICAgIFNlYXQgKm1fc2VhdCA9IG51bGxw dHI7CisgfTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVk X29sZC9tb2NrY29tcG9zaXRvci5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hh cmVkX29sZC9tb2NrY29tcG9zaXRvci5jcHAKK2luZGV4IGE0MTVjYmY1Li5iMWQzZDA3ZCAxMDA2 NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tjb21w b3NpdG9yLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQv bW9ja2NvbXBvc2l0b3IuY3BwCitAQCAtMzQyLDcgKzM0Miw3IEBAIENvbXBvc2l0b3I6OkNvbXBv c2l0b3IoTW9ja0NvbXBvc2l0b3IgKm1vY2tDb21wb3NpdG9yKQorICAgICAgICAgZXhpdChFWElU X0ZBSUxVUkUpOworICAgICB9CisgCistICAgIHdsX2dsb2JhbF9jcmVhdGUobV9kaXNwbGF5LCAm d2xfY29tcG9zaXRvcl9pbnRlcmZhY2UsIDEsIHRoaXMsIGJpbmRDb21wb3NpdG9yKTsKKysgICAg d2xfZ2xvYmFsX2NyZWF0ZShtX2Rpc3BsYXksICZ3bF9jb21wb3NpdG9yX2ludGVyZmFjZSwgNCwg dGhpcywgYmluZENvbXBvc2l0b3IpOworIAorICAgICBtX2RhdGFfZGV2aWNlX21hbmFnZXIucmVz ZXQobmV3IERhdGFEZXZpY2VNYW5hZ2VyKHRoaXMsIG1fZGlzcGxheSkpOworIAorZGlmZiAtLWdp dCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmNw cCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmNw cAoraW5kZXggZTlkZjVmOTAuLmMzMjQ2ZTRhIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3Rz L2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuY3BwCisrKysgYi9xdHdheWxhbmQv dGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5jcHAKK0BAIC0xMjUsNiAr MTI1LDE2IEBAIHZvaWQgU3VyZmFjZTo6c3VyZmFjZV9kYW1hZ2UoUmVzb3VyY2UgKnJlc291cmNl LAorICAgICBRX1VOVVNFRChoZWlnaHQpOworIH0KKyAKKyt2b2lkIFN1cmZhY2U6OnN1cmZhY2Vf ZGFtYWdlX2J1ZmZlcihSZXNvdXJjZSAqcmVzb3VyY2UsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMy X3QgaGVpZ2h0KQorK3sKKysgICAgUV9VTlVTRUQocmVzb3VyY2UpOworKyAgICBRX1VOVVNFRCh4 KTsKKysgICAgUV9VTlVTRUQoeSk7CisrICAgIFFfVU5VU0VEKHdpZHRoKTsKKysgICAgUV9VTlVT RUQoaGVpZ2h0KTsKKyt9CisrCisgdm9pZCBTdXJmYWNlOjpzdXJmYWNlX2ZyYW1lKFJlc291cmNl ICpyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgY2FsbGJh Y2spCisgeworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRf b2xkL21vY2tzdXJmYWNlLmggYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29s ZC9tb2Nrc3VyZmFjZS5oCitpbmRleCA5NDlkYzIzZC4uZDE3NjgzN2UgMTAwNjQ0CistLS0gYS9x dHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5oCisrKysg Yi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5oCitA QCAtNjUsNiArNjUsOCBAQCBwcm90ZWN0ZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IHdsX3Jlc291cmNlICpidWZmZXIsIGludCB4LCBpbnQgeSkgb3ZlcnJpZGU7CisgICAgIHZv aWQgc3VyZmFjZV9kYW1hZ2UoUmVzb3VyY2UgKnJlc291cmNlLAorICAgICAgICAgICAgICAgICAg ICAgICAgIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo dCkgb3ZlcnJpZGU7CisrICAgIHZvaWQgc3VyZmFjZV9kYW1hZ2VfYnVmZmVyKFJlc291cmNlICpy ZXNvdXJjZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB4LCBpbnQz Ml90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICAgdm9p ZCBzdXJmYWNlX2ZyYW1lKFJlc291cmNlICpyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQzMl90IGNhbGxiYWNrKSBvdmVycmlkZTsKKyAgICAgdm9pZCBzdXJmYWNlX2NvbW1p dChSZXNvdXJjZSAqcmVzb3VyY2UpIG92ZXJyaWRlOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90 ZXN0cy9hdXRvL2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNwcCBiL3F0d2F5bGFuZC90ZXN0 cy9hdXRvL2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNwcAoraW5kZXggOTVlNGU2MDkuLjYw YzY3MmNlIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3N1cmZhY2Uv dHN0X3N1cmZhY2UuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc3VyZmFj ZS90c3Rfc3VyZmFjZS5jcHAKK0BAIC0xMjksNiArMTI5LDEwIEBAIHZvaWQgdHN0X3N1cmZhY2U6 OndhaXRGb3JGcmFtZUNhbGxiYWNrR2woKQorICAgICAvLyBNYWtlIHN1cmUgd2UgZm9sbG93IGZy YW1lIGNhbGxiYWNrcyBmb3Igc29tZSBmcmFtZXMKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1 OyArK2kpIHsKKyAgICAgICAgIHhkZ1BpbmdBbmRXYWl0Rm9yUG9uZygpOyAvLyBNYWtlIHN1cmUg dGhpbmdzIGhhdmUgaGFwcGVuZWQgb24gdGhlIGNsaWVudAorKyAgICAgICAgaWYgKCFxRW52aXJv bm1lbnRWYXJpYWJsZUludFZhbHVlKCJRVF9XQVlMQU5EX0RJU0FCTEVfV0lORE9XREVDT1JBVElP TiIpICYmIGkgPT0gMCkgeworKyAgICAgICAgICAgIFFDT01QQVJFKGJ1ZmZlclNweS5jb3VudCgp LCAxKTsKKysgICAgICAgICAgICBidWZmZXJTcHkucmVtb3ZlRmlyc3QoKTsKKysgICAgICAgIH0K KyAgICAgICAgIGV4ZWMoWyZdIHsKKyAgICAgICAgICAgICBRVkVSSUZZKGJ1ZmZlclNweS5lbXB0 eSgpKTsgLy8gTWFrZSBzdXJlIG5vIGV4dHJhIGJ1ZmZlcnMgaGF2ZSBhcnJpdmVkCisgICAgICAg ICAgICAgUVZFUklGWSgheGRnVG9wbGV2ZWwoKS0+c3VyZmFjZSgpLT5tX3dhaXRpbmdGcmFtZUNh bGxiYWNrcy5lbXB0eSgpKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGll bnQveGRnc2hlbGwvdHN0X3hkZ3NoZWxsLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVu dC94ZGdzaGVsbC90c3RfeGRnc2hlbGwuY3BwCitpbmRleCAyMjc3YmJiOC4uNzQ3ODc1YjQgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQveGRnc2hlbGwvdHN0X3hkZ3No ZWxsLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3hkZ3NoZWxsL3RzdF94 ZGdzaGVsbC5jcHAKK0BAIC0zMSw2ICszMSw3IEBACisgI2luY2x1ZGUgPFF0R3VpL1FPcGVuR0xX aW5kb3c+CisgI2luY2x1ZGUgPFF0R3VpL3FwYS9xcGxhdGZvcm1uYXRpdmVpbnRlcmZhY2UuaD4K KyAjaW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvd2F5bGFuZC13YXlsYW5kLWNsaWVu dC1wcm90b2NvbC5oPgorKyNpbmNsdWRlIDxRdFdheWxhbmRDbGllbnQvcHJpdmF0ZS9xd2F5bGFu ZHdpbmRvd19wLmg+CisgCisgdXNpbmcgbmFtZXNwYWNlIE1vY2tDb21wb3NpdG9yOworIAorQEAg LTQ1LDYgKzQ2LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBjb25maWd1cmVTdGF0ZXMo KTsKKyAgICAgdm9pZCBwb3B1cCgpOworICAgICB2b2lkIHRvb2x0aXBPblBvcHVwKCk7CisrICAg IHZvaWQgdG9vbHRpcEFuZFNpYmxpbmdQb3B1cCgpOworICAgICB2b2lkIHN3aXRjaFBvcHVwcygp OworICAgICB2b2lkIGhpZGVQb3B1cFBhcmVudCgpOworICAgICB2b2lkIHBvbmdzKCk7CitAQCAt MTM4LDYgKzE0MCw3IEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjpjb25maWd1cmVTaXplKCkKKyAKKyB2 b2lkIHRzdF94ZGdzaGVsbDo6Y29uZmlndXJlU3RhdGVzKCkKKyB7CisrICAgIFFWRVJJRlkocXB1 dGVudigiUVRfV0FZTEFORF9GUkFNRV9DQUxMQkFDS19USU1FT1VUIiwgIjAiKSk7CisgICAgIFFS YXN0ZXJXaW5kb3cgd2luZG93OworICAgICB3aW5kb3cucmVzaXplKDY0LCA0OCk7CisgICAgIHdp bmRvdy5zaG93KCk7CitAQCAtMTU0LDkgKzE1NywxMiBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6Y29u ZmlndXJlU3RhdGVzKCkKKyAgICAgLy8gVG9wbGV2ZWwgd2luZG93cyBkb24ndCBrbm93IHRoZWly IHBvc2l0aW9uIG9uIHhkZy1zaGVsbAorIC8vICAgIFFDT01QQVJFKHdpbmRvdy5mcmFtZUdlb21l dHJ5KCkudG9wTGVmdCgpLCBRUG9pbnQoKSk7IC8vIFRPRE86IHRoaXMgZG9lc24ndCBjdXJyZW50 bHkgd29yayB3aGVuIHdpbmRvdyBkZWNvcmF0aW9ucyBhcmUgZW5hYmxlZAorIAorLS8vICAgIFFF WFBFQ1RfRkFJTCgiIiwgImNvbmZpZ3VyZSBoYXMgYWxyZWFkeSBiZWVuIGFja2VkLCB3ZSBzaG91 bGRuJ3QgaGF2ZSB0byB3YWl0IGZvciBpc0FjdGl2ZSIsIENvbnRpbnVlKTsKKy0vLyAgICBRVkVS SUZZKHdpbmRvdy5pc0FjdGl2ZSgpKTsKKy0gICAgUVRSWV9WRVJJRlkod2luZG93LmlzQWN0aXZl KCkpOyAvLyBKdXN0IG1ha2Ugc3VyZSBpdCBldmVudHVhbGx5IGdldCdzIHNldCBjb3JyZWN0bHkK KysgICAgLy8gd2luZG93LndpbmRvd3N0YXRlKCkgaXMgZHJpdmVuIGJ5IGtleWJvYXJkIGZvY3Vz LCBob3dldmVyIGZvciBkZWNvcmF0aW9ucyB3ZSB3YW50IHRvIGZvbGxvdworKyAgICAvLyBYREdT aGVsbCB0aGlzIGlzIGludGVybmFsIHRvIFF0V2F5bGFuZCBzbyBpdCBpcyBxdWVyaWVkIGRpcmVj dGx5CisrICAgIGF1dG8gd2F5bGFuZFdpbmRvdyA9IHN0YXRpY19jYXN0PFF0V2F5bGFuZENsaWVu dDo6UVdheWxhbmRXaW5kb3cgKj4od2luZG93LmhhbmRsZSgpKTsKKysgICAgUV9BU1NFUlQod2F5 bGFuZFdpbmRvdyk7CisrICAgIFFUUllfVkVSSUZZKHdheWxhbmRXaW5kb3ctPndpbmRvd1N0YXRl cygpLnRlc3RGbGFnKAorKyAgICAgICAgICAgIFF0OjpXaW5kb3dBY3RpdmUpKTsgLy8gSnVzdCBt YWtlIHN1cmUgaXQgZXZlbnR1YWxseSBnZXQncyBzZXQgY29ycmVjdGx5CisgCisgICAgIGNvbnN0 IFFTaXplIHNjcmVlblNpemUoNjQwLCA0ODApOworICAgICBjb25zdCB1aW50IG1heGltaXplZFNl cmlhbCA9IGV4ZWMoWz1dIHsKK0BAIC0xODYsNiArMTkyLDcgQEAgdm9pZCB0c3RfeGRnc2hlbGw6 OmNvbmZpZ3VyZVN0YXRlcygpCisgICAgIFFDT01QQVJFKHdpbmRvdy53aW5kb3dTdGF0ZXMoKSwg UXQ6OldpbmRvd05vU3RhdGUpOworICAgICBRQ09NUEFSRSh3aW5kb3cuZnJhbWVHZW9tZXRyeSgp LnNpemUoKSwgd2luZG93ZWRTaXplKTsKKyAvLyAgICBRQ09NUEFSRSh3aW5kb3cuZnJhbWVHZW9t ZXRyeSgpLnRvcExlZnQoKSwgUVBvaW50KCkpOyAvLyBUT0RPOiB0aGlzIGRvZXNuJ3QgY3VycmVu dGx5IHdvcmsgd2hlbiB3aW5kb3cgZGVjb3JhdGlvbnMgYXJlIGVuYWJsZWQKKysgICAgUVZFUklG WShxdW5zZXRlbnYoIlFUX1dBWUxBTkRfRlJBTUVfQ0FMTEJBQ0tfVElNRU9VVCIpKTsKKyB9Cisg Cisgdm9pZCB0c3RfeGRnc2hlbGw6OnBvcHVwKCkKK0BAIC0zNDAsNiArMzQ3LDkyIEBAIHZvaWQg dHN0X3hkZ3NoZWxsOjp0b29sdGlwT25Qb3B1cCgpCisgICAgIFFDT01QT1NJVE9SX1RSWV9DT01Q QVJFKHhkZ1BvcHVwKDApLCBudWxscHRyKTsKKyB9CisgCisrdm9pZCB0c3RfeGRnc2hlbGw6OnRv b2x0aXBBbmRTaWJsaW5nUG9wdXAoKQorK3sKKysgICAgY2xhc3MgVG9vbFRpcCA6IHB1YmxpYyBR UmFzdGVyV2luZG93IHsKKysgICAgcHVibGljOgorKyAgICAgICAgZXhwbGljaXQgVG9vbFRpcChR V2luZG93ICpwYXJlbnQpIHsKKysgICAgICAgICAgICBzZXRUcmFuc2llbnRQYXJlbnQocGFyZW50 KTsKKysgICAgICAgICAgICBzZXRGbGFncyhRdDo6VG9vbFRpcCk7CisrICAgICAgICAgICAgcmVz aXplKDEwMCwgMTAwKTsKKysgICAgICAgICAgICBzaG93KCk7CisrICAgICAgICB9CisrICAgICAg ICB2b2lkIG1vdXNlUHJlc3NFdmVudChRTW91c2VFdmVudCAqZXZlbnQpIG92ZXJyaWRlIHsKKysg ICAgICAgICAgICBRUmFzdGVyV2luZG93Ojptb3VzZVByZXNzRXZlbnQoZXZlbnQpOworKyAgICAg ICAgICAgIG1fcG9wdXAgPSBuZXcgUVJhc3RlcldpbmRvdzsKKysgICAgICAgICAgICBtX3BvcHVw LT5zZXRUcmFuc2llbnRQYXJlbnQodHJhbnNpZW50UGFyZW50KCkpOworKyAgICAgICAgICAgIG1f cG9wdXAtPnNldEZsYWdzKFF0OjpQb3B1cCk7CisrICAgICAgICAgICAgbV9wb3B1cC0+cmVzaXpl KDEwMCwgMTAwKTsKKysgICAgICAgICAgICBtX3BvcHVwLT5zaG93KCk7CisrICAgICAgICB9Cisr CisrICAgICAgICBRUmFzdGVyV2luZG93ICptX3BvcHVwID0gbnVsbHB0cjsKKysgICAgfTsKKysK KysgICAgY2xhc3MgV2luZG93IDogcHVibGljIFFSYXN0ZXJXaW5kb3cgeworKyAgICBwdWJsaWM6 CisrICAgICAgICB2b2lkIG1vdXNlUHJlc3NFdmVudChRTW91c2VFdmVudCAqZXZlbnQpIG92ZXJy aWRlIHsKKysgICAgICAgICAgICBRUmFzdGVyV2luZG93Ojptb3VzZVByZXNzRXZlbnQoZXZlbnQp OworKyAgICAgICAgICAgIG1fdG9vbHRpcCA9IG5ldyBUb29sVGlwKHRoaXMpOworKyAgICAgICAg fQorKyAgICAgICAgVG9vbFRpcCAqbV90b29sdGlwID0gbnVsbHB0cjsKKysgICAgfTsKKysKKysg ICAgV2luZG93IHdpbmRvdzsKKysgICAgd2luZG93LnJlc2l6ZSgyMDAsIDIwMCk7CisrICAgIHdp bmRvdy5zaG93KCk7CisrCisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnVG9wbGV2ZWwo KSk7CisrICAgIGV4ZWMoWz1dIHsgeGRnVG9wbGV2ZWwoKS0+c2VuZENvbXBsZXRlQ29uZmlndXJl KCk7IH0pOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1RvcGxldmVsKCktPm1feGRn U3VyZmFjZS0+bV9jb21taXR0ZWRDb25maWd1cmVTZXJpYWwpOworKworKyAgICBleGVjKFs9XSB7 CisrICAgICAgICBhdXRvICpzdXJmYWNlID0geGRnVG9wbGV2ZWwoKS0+c3VyZmFjZSgpOworKyAg ICAgICAgYXV0byAqcCA9IHBvaW50ZXIoKTsKKysgICAgICAgIGF1dG8gKmMgPSBjbGllbnQoKTsK KysgICAgICAgIHAtPnNlbmRFbnRlcihzdXJmYWNlLCB7MTAwLCAxMDB9KTsKKysgICAgICAgIHAt PnNlbmRGcmFtZShjKTsKKysgICAgICAgIHAtPnNlbmRCdXR0b24oY2xpZW50KCksIEJUTl9MRUZU LCBQb2ludGVyOjpidXR0b25fc3RhdGVfcHJlc3NlZCk7CisrICAgICAgICBwLT5zZW5kQnV0dG9u KGNsaWVudCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9uX3N0YXRlX3JlbGVhc2VkKTsKKysg ICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgICAgIHAtPnNlbmRMZWF2ZShzdXJmYWNlKTsK KysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgfSk7CisrCisrICAgIFFDT01QT1NJVE9S X1RSWV9WRVJJRlkoeGRnUG9wdXAoKSk7CisrICAgIGV4ZWMoWz1dIHsgeGRnUG9wdXAoKS0+c2Vu ZENvbXBsZXRlQ29uZmlndXJlKFFSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOyB9KTsKKysgICAg UUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgpLT5tX3hkZ1N1cmZhY2UtPm1fY29tbWl0 dGVkQ29uZmlndXJlU2VyaWFsKTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSgheGRnUG9w dXAoKS0+bV9ncmFiYmVkKTsKKysKKysgICAgZXhlYyhbPV0geworKyAgICAgICAgYXV0byAqc3Vy ZmFjZSA9IHhkZ1BvcHVwKCktPnN1cmZhY2UoKTsKKysgICAgICAgIGF1dG8gKnAgPSBwb2ludGVy KCk7CisrICAgICAgICBhdXRvICpjID0gY2xpZW50KCk7CisrICAgICAgICBwLT5zZW5kRW50ZXIo c3VyZmFjZSwgezEwMCwgMTAwfSk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgICAg ICBwLT5zZW5kQnV0dG9uKGNsaWVudCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9uX3N0YXRl X3ByZXNzZWQpOworKyAgICAgICAgcC0+c2VuZEJ1dHRvbihjbGllbnQoKSwgQlROX0xFRlQsIFBv aW50ZXI6OmJ1dHRvbl9zdGF0ZV9yZWxlYXNlZCk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7 CisrICAgIH0pOworKworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDEpKTsK KysgICAgZXhlYyhbPV0geyB4ZGdQb3B1cCgxKS0+c2VuZENvbXBsZXRlQ29uZmlndXJlKFFSZWN0 KDEwMCwgMTAwLCAxMDAsIDEwMCkpOyB9KTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4 ZGdQb3B1cCgxKS0+bV94ZGdTdXJmYWNlLT5tX2NvbW1pdHRlZENvbmZpZ3VyZVNlcmlhbCk7Cisr ICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMSktPm1fZ3JhYmJlZCk7CisrCisr ICAgIC8vIENsb3NlIHRoZSBtaWRkbGUgdG9vbHRpcCAoaXQgc2hvdWxkIG5vdCBjbG9zZSB0aGUg c2libGluZyBwb3B1cCkKKysgICAgd2luZG93Lm1fdG9vbHRpcC0+Y2xvc2UoKTsKKysKKysgICAg UUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnUG9wdXAoMSksIG51bGxwdHIpOworKyAgICAvLyBW ZXJpZnkgdGhlIHJlbWFpbmluZyB4ZGcgc3VyZmFjZSBpcyBhIGdyYWIgcG9wdXAuLgorKyAgICBR Q09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDApKTsKKysgICAgUUNPTVBPU0lUT1JfVFJZ X1ZFUklGWSh4ZGdQb3B1cCgwKS0+bV9ncmFiYmVkKTsKKysKKysgICAgd2luZG93Lm1fdG9vbHRp cC0+bV9wb3B1cC0+Y2xvc2UoKTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnUG9w dXAoMSksIG51bGxwdHIpOworKyAgICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdQb3B1cCgw KSwgbnVsbHB0cik7CisrfQorKworIC8vIFFUQlVHLTY1NjgwCisgdm9pZCB0c3RfeGRnc2hlbGw6 OnN3aXRjaFBvcHVwcygpCisgeworQEAgLTUwNSw3ICs1OTgsNyBAQCB2b2lkIHRzdF94ZGdzaGVs bDo6bWluTWF4U2l6ZSgpCisgICAgIHdpbmRvdy5zaG93KCk7CisgICAgIFFDT01QT1NJVE9SX1RS WV9WRVJJRlkoeGRnVG9wbGV2ZWwoKSk7CisgCistICAgIGV4ZWMoWz1dIHsgeGRnVG9wbGV2ZWwo KS0+c2VuZENvbXBsZXRlQ29uZmlndXJlKCk7IH0pOworKyAgICAvLyB3ZSBkb24ndCByb3VuZHRy aXAgd2l0aCBvdXIgY29uZmlndXJhdGlvbiB0aGUgaW5pdGlhbCBjb21taXQgc2hvdWxkIGJlIGNv cnJlY3QKKyAKKyAgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnVG9wbGV2ZWwoKS0+bV9j b21taXR0ZWQubWluU2l6ZSwgUVNpemUoMTAwLCAxMDApKTsKKyAgICAgUUNPTVBPU0lUT1JfVFJZ X0NPTVBBUkUoeGRnVG9wbGV2ZWwoKS0+bV9jb21taXR0ZWQubWF4U2l6ZSwgUVNpemUoMTAwMCwg MTAwMCkpOworU3VibW9kdWxlIHF0d2ViY2hhbm5lbCA2MTg0MjJlZS4uZjg5NDk2NTU6CitkaWZm IC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVy LmNwcCBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlci5j cHAKK2luZGV4IDUzNmViNWMuLjg5OGQ3NjkgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvc3Jj L3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIuY3BwCisrKysgYi9xdHdlYmNoYW5uZWwv c3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIuY3BwCitAQCAtMTg2LDggKzE4Niw2 IEBAIFFfREVDTEFSRV9UWVBFSU5GTyhPdmVybG9hZFJlc29sdXRpb25DYW5kaWRhdGUsIFFfTU9W QUJMRV9UWVBFKTsKKyBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6UU1ldGFPYmplY3RQdWJsaXNoZXIo UVdlYkNoYW5uZWwgKndlYkNoYW5uZWwpCisgICAgIDogUU9iamVjdCh3ZWJDaGFubmVsKQorICAg ICAsIHdlYkNoYW5uZWwod2ViQ2hhbm5lbCkKKy0gICAgLCBzaWduYWxIYW5kbGVyKHRoaXMpCist ICAgICwgY2xpZW50SXNJZGxlKGZhbHNlKQorICAgICAsIGJsb2NrVXBkYXRlcyhmYWxzZSkKKyAg ICAgLCBwcm9wZXJ0eVVwZGF0ZXNJbml0aWFsaXplZChmYWxzZSkKKyB7CitAQCAtMzAxLDE3ICsy OTksMTcgQEAgUUpzb25PYmplY3QgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmNsYXNzSW5mb0Zvck9i amVjdChjb25zdCBRT2JqZWN0ICpvYmplY3QsIFFXZWIKKyAgICAgcmV0dXJuIGRhdGE7CisgfQor IAorLXZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNldENsaWVudElzSWRsZShib29sIGlzSWRs ZSkKKyt2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZXRDbGllbnRJc0lkbGUoYm9vbCBpc0lk bGUsIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkKKyB7CistICAgIGlm IChjbGllbnRJc0lkbGUgPT0gaXNJZGxlKSB7CistICAgICAgICByZXR1cm47CistICAgIH0KKy0g ICAgY2xpZW50SXNJZGxlID0gaXNJZGxlOworLSAgICBpZiAoIWlzSWRsZSAmJiB0aW1lci5pc0Fj dGl2ZSgpKSB7CistICAgICAgICB0aW1lci5zdG9wKCk7CistICAgIH0gZWxzZSBpZiAoaXNJZGxl ICYmICF0aW1lci5pc0FjdGl2ZSgpKSB7CistICAgICAgICB0aW1lci5zdGFydChQUk9QRVJUWV9V UERBVEVfSU5URVJWQUwsIHRoaXMpOworLSAgICB9CisrICAgIHRyYW5zcG9ydFN0YXRlW3RyYW5z cG9ydF0uY2xpZW50SXNJZGxlID0gaXNJZGxlOworKyAgICBpZiAoaXNJZGxlKQorKyAgICAgICAg c2VuZEVucXVldWVkUHJvcGVydHlVcGRhdGVzKHRyYW5zcG9ydCk7CisrfQorKworK2Jvb2wgUU1l dGFPYmplY3RQdWJsaXNoZXI6OmlzQ2xpZW50SWRsZShRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNw b3J0ICp0cmFuc3BvcnQpCisreworKyAgICBhdXRvIGZvdW5kID0gdHJhbnNwb3J0U3RhdGUuZmlu ZCh0cmFuc3BvcnQpOworKyAgICByZXR1cm4gZm91bmQgIT0gdHJhbnNwb3J0U3RhdGUuZW5kKCkg JiYgZm91bmQudmFsdWUoKS5jbGllbnRJc0lkbGU7CisgfQorIAorIFFKc29uT2JqZWN0IFFNZXRh T2JqZWN0UHVibGlzaGVyOjppbml0aWFsaXplQ2xpZW50KFFXZWJDaGFubmVsQWJzdHJhY3RUcmFu c3BvcnQgKnRyYW5zcG9ydCkKK0BAIC0zMzMsNiArMzMxLDcgQEAgUUpzb25PYmplY3QgUU1ldGFP YmplY3RQdWJsaXNoZXI6OmluaXRpYWxpemVDbGllbnQoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5z cG9ydAorIAorIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmluaXRpYWxpemVQcm9wZXJ0eVVw ZGF0ZXMoY29uc3QgUU9iamVjdCAqY29uc3Qgb2JqZWN0LCBjb25zdCBRSnNvbk9iamVjdCAmb2Jq ZWN0SW5mbykKKyB7CisrICAgIGF1dG8gKnNpZ25hbEhhbmRsZXIgPSBzaWduYWxIYW5kbGVyRm9y KG9iamVjdCk7CisgICAgIGZvcmVhY2ggKGNvbnN0IFFKc29uVmFsdWUgJnByb3BlcnR5SW5mb1Zh ciwgb2JqZWN0SW5mb1tLRVlfUFJPUEVSVElFU10udG9BcnJheSgpKSB7CisgICAgICAgICBjb25z dCBRSnNvbkFycmF5ICZwcm9wZXJ0eUluZm8gPSBwcm9wZXJ0eUluZm9WYXIudG9BcnJheSgpOwor ICAgICAgICAgaWYgKHByb3BlcnR5SW5mby5zaXplKCkgPCAyKSB7CitAQCAtMzUzLDE5ICszNTIs MTkgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW5pdGlhbGl6ZVByb3BlcnR5VXBkYXRl cyhjb25zdCBRT2JqZWN0ICpjb25zdCBvYmplY3QKKyAKKyAgICAgICAgIC8vIE9ubHkgY29ubmVj dCBmb3IgYSBwcm9wZXJ0eSB1cGRhdGUgb25jZQorICAgICAgICAgaWYgKGNvbm5lY3RlZFByb3Bl cnRpZXMuaXNFbXB0eSgpKSB7CistICAgICAgICAgICAgc2lnbmFsSGFuZGxlci5jb25uZWN0VG8o b2JqZWN0LCBzaWduYWxJbmRleCk7CisrICAgICAgICAgICAgc2lnbmFsSGFuZGxlci0+Y29ubmVj dFRvKG9iamVjdCwgc2lnbmFsSW5kZXgpOworICAgICAgICAgfQorIAorICAgICAgICAgY29ubmVj dGVkUHJvcGVydGllcy5pbnNlcnQocHJvcGVydHlJbmRleCk7CisgICAgIH0KKyAKKyAgICAgLy8g YWxzbyBhbHdheXMgY29ubmVjdCB0byBkZXN0cm95ZWQgc2lnbmFsCistICAgIHNpZ25hbEhhbmRs ZXIuY29ubmVjdFRvKG9iamVjdCwgc19kZXN0cm95ZWRTaWduYWxJbmRleCk7CisrICAgIHNpZ25h bEhhbmRsZXItPmNvbm5lY3RUbyhvYmplY3QsIHNfZGVzdHJveWVkU2lnbmFsSW5kZXgpOworIH0K KyAKKyB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZW5kUGVuZGluZ1Byb3BlcnR5VXBkYXRl cygpCisgeworLSAgICBpZiAoYmxvY2tVcGRhdGVzIHx8ICFjbGllbnRJc0lkbGUgfHwgcGVuZGlu Z1Byb3BlcnR5VXBkYXRlcy5pc0VtcHR5KCkpIHsKKysgICAgaWYgKGJsb2NrVXBkYXRlcykgewor ICAgICAgICAgcmV0dXJuOworICAgICB9CisgCitAQCAtNDE1LDE4ICs0MTQsMTkgQEAgdm9pZCBR TWV0YU9iamVjdFB1Ymxpc2hlcjo6c2VuZFBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMoKQorIAorICAg ICAvLyBkYXRhIGRvZXMgbm90IGNvbnRhaW4gc3BlY2lmaWMgdXBkYXRlcworICAgICBpZiAoIWRh dGEuaXNFbXB0eSgpKSB7CistICAgICAgICBzZXRDbGllbnRJc0lkbGUoZmFsc2UpOworLQorICAg ICAgICAgbWVzc2FnZVtLRVlfREFUQV0gPSBkYXRhOworLSAgICAgICAgYnJvYWRjYXN0TWVzc2Fn ZShtZXNzYWdlKTsKKysgICAgICAgIGVucXVldWVCcm9hZGNhc3RNZXNzYWdlKG1lc3NhZ2UpOwor ICAgICB9CisgCisgICAgIC8vIHNlbmQgZXZlcnkgcHJvcGVydHkgdXBkYXRlIHdoaWNoIGlzIG5v dCBzdXBwb3NlZCB0byBiZSBicm9hZGNhc3RlZAorICAgICBjb25zdCBRSGFzaDxRV2ViQ2hhbm5l bEFic3RyYWN0VHJhbnNwb3J0KiwgUUpzb25BcnJheT46OmNvbnN0X2l0ZXJhdG9yIHN1ZW5kID0g c3BlY2lmaWNVcGRhdGVzLmNvbnN0RW5kKCk7CisgICAgIGZvciAoUUhhc2g8UVdlYkNoYW5uZWxB YnN0cmFjdFRyYW5zcG9ydCosIFFKc29uQXJyYXk+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNwZWNp ZmljVXBkYXRlcy5jb25zdEJlZ2luKCk7IGl0ICE9IHN1ZW5kOyArK2l0KSB7CisgICAgICAgICBt ZXNzYWdlW0tFWV9EQVRBXSA9IGl0LnZhbHVlKCk7CistICAgICAgICBpdC5rZXkoKS0+c2VuZE1l c3NhZ2UobWVzc2FnZSk7CisrICAgICAgICBlbnF1ZXVlTWVzc2FnZShtZXNzYWdlLCBpdC5rZXko KSk7CisgICAgIH0KKysKKysgICAgZm9yIChhdXRvIHN0YXRlID0gdHJhbnNwb3J0U3RhdGUuYmVn aW4oKTsgc3RhdGUgIT0gdHJhbnNwb3J0U3RhdGUuZW5kKCk7ICsrc3RhdGUpCisrICAgICAgICBz ZW5kRW5xdWV1ZWRQcm9wZXJ0eVVwZGF0ZXMoc3RhdGUua2V5KCkpOworIH0KKyAKKyBRVmFyaWFu dCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW52b2tlTWV0aG9kKFFPYmplY3QgKmNvbnN0IG9iamVj dCwgY29uc3QgUU1ldGFNZXRob2QgJm1ldGhvZCwKK0BAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBR TWV0YU9iamVjdFB1Ymxpc2hlcjo6c2lnbmFsRW1pdHRlZChjb25zdCBRT2JqZWN0ICpvYmplY3Qs IGNvbnN0IGludCBzaWduYWwKKyAgICAgICAgIH0KKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIHBl bmRpbmdQcm9wZXJ0eVVwZGF0ZXNbb2JqZWN0XVtzaWduYWxJbmRleF0gPSBhcmd1bWVudHM7Cist ICAgICAgICBpZiAoY2xpZW50SXNJZGxlICYmICFibG9ja1VwZGF0ZXMgJiYgIXRpbWVyLmlzQWN0 aXZlKCkpIHsKKysgICAgICAgIGlmICghYmxvY2tVcGRhdGVzICYmICF0aW1lci5pc0FjdGl2ZSgp KSB7CisgICAgICAgICAgICAgdGltZXIuc3RhcnQoUFJPUEVSVFlfVVBEQVRFX0lOVEVSVkFMLCB0 aGlzKTsKKyAgICAgICAgIH0KKyAgICAgfQorQEAgLTU5MCw3ICs1OTAsNyBAQCB2b2lkIFFNZXRh T2JqZWN0UHVibGlzaGVyOjpvYmplY3REZXN0cm95ZWQoY29uc3QgUU9iamVjdCAqb2JqZWN0KQor ICAgICAvLyBvbmx5IHJlbW92ZSBmcm9tIGhhbmRsZXIgd2hlbiB3ZSBpbml0aWFsaXplZCB0aGUg cHJvcGVydHkgdXBkYXRlcworICAgICAvLyBjZjogaHR0cHM6Ly9idWdyZXBvcnRzLnF0LmlvL2Jy b3dzZS9RVEJVRy02MDI1MAorICAgICBpZiAocHJvcGVydHlVcGRhdGVzSW5pdGlhbGl6ZWQpIHsK Ky0gICAgICAgIHNpZ25hbEhhbmRsZXIucmVtb3ZlKG9iamVjdCk7CisrICAgICAgICBzaWduYWxI YW5kbGVyRm9yKG9iamVjdCktPnJlbW92ZShvYmplY3QpOworICAgICAgICAgc2lnbmFsVG9Qcm9w ZXJ0eU1hcC5yZW1vdmUob2JqZWN0KTsKKyAgICAgfQorICAgICBwZW5kaW5nUHJvcGVydHlVcGRh dGVzLnJlbW92ZShvYmplY3QpOworQEAgLTg1Miw2ICs4NTIsNTIgQEAgdm9pZCBRTWV0YU9iamVj dFB1Ymxpc2hlcjo6YnJvYWRjYXN0TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSkg Y29uc3QKKyAgICAgfQorIH0KKyAKKyt2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjplbnF1ZXVl QnJvYWRjYXN0TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSkKKyt7CisrICAgIGlm ICh3ZWJDaGFubmVsLT5kX2Z1bmMoKS0+dHJhbnNwb3J0cy5pc0VtcHR5KCkpIHsKKysgICAgICAg IHFXYXJuaW5nKCJRV2ViQ2hhbm5lbCBpcyBub3QgY29ubmVjdGVkIHRvIGFueSB0cmFuc3BvcnRz LCBjYW5ub3Qgc2VuZCBtZXNzYWdlOiAlcyIsCisrICAgICAgICAgICAgICAgICBRSnNvbkRvY3Vt ZW50KG1lc3NhZ2UpLnRvSnNvbigpLmNvbnN0RGF0YSgpKTsKKysgICAgICAgIHJldHVybjsKKysg ICAgfQorKworKyAgICBmb3IgKGF1dG8gKnRyYW5zcG9ydCA6IHdlYkNoYW5uZWwtPmRfZnVuYygp LT50cmFuc3BvcnRzKSB7CisrICAgICAgICBhdXRvICZzdGF0ZSA9IHRyYW5zcG9ydFN0YXRlW3Ry YW5zcG9ydF07CisrICAgICAgICBzdGF0ZS5xdWV1ZWRNZXNzYWdlcy5hcHBlbmQobWVzc2FnZSk7 CisrICAgIH0KKyt9CisrCisrdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6ZW5xdWV1ZU1lc3Nh Z2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0 KQorK3sKKysgICAgYXV0byAmc3RhdGUgPSB0cmFuc3BvcnRTdGF0ZVt0cmFuc3BvcnRdOworKyAg ICBzdGF0ZS5xdWV1ZWRNZXNzYWdlcy5hcHBlbmQobWVzc2FnZSk7CisrfQorKworK3ZvaWQgUU1l dGFPYmplY3RQdWJsaXNoZXI6OnNlbmRFbnF1ZXVlZFByb3BlcnR5VXBkYXRlcyhRV2ViQ2hhbm5l bEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisreworKyAgICBhdXRvIGZvdW5kID0gdHJh bnNwb3J0U3RhdGUuZmluZCh0cmFuc3BvcnQpOworKyAgICBpZiAoZm91bmQgIT0gdHJhbnNwb3J0 U3RhdGUuZW5kKCkgJiYgZm91bmQudmFsdWUoKS5jbGllbnRJc0lkbGUKKysgICAgICAgICYmICFm b3VuZC52YWx1ZSgpLnF1ZXVlZE1lc3NhZ2VzLmlzRW1wdHkoKSkgeworKworKyAgICAgICAgLy8g SWYgdGhlIGNsaWVudCBpcyBjb25uZWN0ZWQgd2l0aCBhbiBpbi1wcm9jZXNzIHRyYW5zcG9ydCwg aXQgY2FuCisrICAgICAgICAvLyBoYXBwZW4gdGhhdCBhIG1lc3NhZ2UgdHJpZ2dlcnMgYSBzdWJz ZXF1ZW50IHByb3BlcnR5IGNoYW5nZS4gSW4KKysgICAgICAgIC8vIHRoYXQgY2FzZSwgd2UgbmVl ZCB0byBlbnN1cmUgdGhhdCB0aGUgcXVldWVkIG1lc3NhZ2VzIGhhdmUgYWxyZWFkeQorKyAgICAg ICAgLy8gYmVlbiBjbGVhcmVkOyBvdGhlcndpc2UgdGhlIHJlY3Vyc2l2ZSBjYWxsIHdpbGwgc2Vu ZCBldmVyeXRoaWcgYWdhaW4uCisrICAgICAgICAvLyBDYXNlIGluIHBvaW50OiBUaGUgcW1sd2Vi Y2hhbm5lbCB0ZXN0cyBmYWlsIGlmIHdlIGRvbid0IGNsZWFyIHRoZQorKyAgICAgICAgLy8gcXVl dWVkIG1lc3NhZ2VzIGJlZm9yZSBzZW5kaW5nIHRoZW0gb3V0LgorKyAgICAgICAgLy8gRm9yIHRo YXQgc2FtZSByZWFzb24gc2V0IHRoZSBjbGllbnQgdG8gImJ1c3kiIChha2Egbm9uLWlkbGUpIGp1 c3QKKysgICAgICAgIC8vIHJpZ2h0IGJlZm9yZSBzZW5kaW5nIG91dCB0aGUgbWVzc2FnZXM7IG90 aGVyd2lzZSBhIHBvdGVudGlhbAorKyAgICAgICAgLy8gIklkbGUiIHR5cGUgbWVzc2FnZSB3aWxs IG5vdCBjb3JyZWN0bHkgcmVzdG9yZSB0aGUgSWRsZSBzdGF0ZS4KKysgICAgICAgIGNvbnN0IGF1 dG8gbWVzc2FnZXMgPSBzdGQ6Om1vdmUoZm91bmQudmFsdWUoKS5xdWV1ZWRNZXNzYWdlcyk7Cisr ICAgICAgICBRX0FTU0VSVChmb3VuZC52YWx1ZSgpLnF1ZXVlZE1lc3NhZ2VzLmlzRW1wdHkoKSk7 CisrICAgICAgICBmb3VuZC52YWx1ZSgpLmNsaWVudElzSWRsZSA9IGZhbHNlOworKworKyAgICAg ICAgZm9yIChjb25zdCBhdXRvICZtZXNzYWdlIDogbWVzc2FnZXMpIHsKKysgICAgICAgICAgICB0 cmFuc3BvcnQtPnNlbmRNZXNzYWdlKG1lc3NhZ2UpOworKyAgICAgICAgfQorKyAgICB9CisrfQor KworIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmhhbmRsZU1lc3NhZ2UoY29uc3QgUUpzb25P YmplY3QgJm1lc3NhZ2UsIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkK KyB7CisgICAgIGlmICghd2ViQ2hhbm5lbC0+ZF9mdW5jKCktPnRyYW5zcG9ydHMuY29udGFpbnMo dHJhbnNwb3J0KSkgeworQEAgLTg2Niw3ICs5MTIsNyBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlz aGVyOjpoYW5kbGVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLCBRV2ViQ2hhbm5l bAorIAorICAgICBjb25zdCBNZXNzYWdlVHlwZSB0eXBlID0gdG9UeXBlKG1lc3NhZ2UudmFsdWUo S0VZX1RZUEUpKTsKKyAgICAgaWYgKHR5cGUgPT0gVHlwZUlkbGUpIHsKKy0gICAgICAgIHNldENs aWVudElzSWRsZSh0cnVlKTsKKysgICAgICAgIHNldENsaWVudElzSWRsZSh0cnVlLCB0cmFuc3Bv cnQpOworICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gVHlwZUluaXQpIHsKKyAgICAgICAgIGlmICgh bWVzc2FnZS5jb250YWlucyhLRVlfSUQpKSB7CisgICAgICAgICAgICAgcVdhcm5pbmcoIkpTT04g bWVzc2FnZSBvYmplY3QgaXMgbWlzc2luZyB0aGUgaWQgcHJvcGVydHk6ICVzIiwKK0BAIC05MTMs OSArOTU5LDkgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aGFuZGxlTWVzc2FnZShjb25z dCBRSnNvbk9iamVjdCAmbWVzc2FnZSwgUVdlYkNoYW5uZWwKKyAgICAgICAgICAgICAgICAgcmV0 dXJuOworICAgICAgICAgICAgIHRyYW5zcG9ydC0+c2VuZE1lc3NhZ2UoY3JlYXRlUmVzcG9uc2Uo bWVzc2FnZS52YWx1ZShLRVlfSUQpLCB3cmFwUmVzdWx0KHJlc3VsdCwgdHJhbnNwb3J0KSkpOwor ICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IFR5cGVDb25uZWN0VG9TaWduYWwpIHsKKy0gICAg ICAgICAgICBzaWduYWxIYW5kbGVyLmNvbm5lY3RUbyhvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZ X1NJR05BTCkudG9JbnQoLTEpKTsKKysgICAgICAgICAgICBzaWduYWxIYW5kbGVyRm9yKG9iamVj dCktPmNvbm5lY3RUbyhvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1NJR05BTCkudG9JbnQoLTEp KTsKKyAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUeXBlRGlzY29ubmVjdEZyb21TaWduYWwp IHsKKy0gICAgICAgICAgICBzaWduYWxIYW5kbGVyLmRpc2Nvbm5lY3RGcm9tKG9iamVjdCwgbWVz c2FnZS52YWx1ZShLRVlfU0lHTkFMKS50b0ludCgtMSkpOworKyAgICAgICAgICAgIHNpZ25hbEhh bmRsZXJGb3Iob2JqZWN0KS0+ZGlzY29ubmVjdEZyb20ob2JqZWN0LCBtZXNzYWdlLnZhbHVlKEtF WV9TSUdOQUwpLnRvSW50KC0xKSk7CisgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gVHlwZVNl dFByb3BlcnR5KSB7CisgICAgICAgICAgICAgc2V0UHJvcGVydHkob2JqZWN0LCBtZXNzYWdlLnZh bHVlKEtFWV9QUk9QRVJUWSkudG9JbnQoLTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1l c3NhZ2UudmFsdWUoS0VZX1ZBTFVFKSk7CitAQCAtOTMxLDYgKzk3Nyw3IEBAIHZvaWQgUU1ldGFP YmplY3RQdWJsaXNoZXI6OnNldEJsb2NrVXBkYXRlcyhib29sIGJsb2NrKQorICAgICBibG9ja1Vw ZGF0ZXMgPSBibG9jazsKKyAKKyAgICAgaWYgKCFibG9ja1VwZGF0ZXMpIHsKKysgICAgICAgIHRp bWVyLnN0YXJ0KFBST1BFUlRZX1VQREFURV9JTlRFUlZBTCwgdGhpcyk7CisgICAgICAgICBzZW5k UGVuZGluZ1Byb3BlcnR5VXBkYXRlcygpOworICAgICB9IGVsc2UgaWYgKHRpbWVyLmlzQWN0aXZl KCkpIHsKKyAgICAgICAgIHRpbWVyLnN0b3AoKTsKK0BAIC05NDgsNCArOTk1LDE1IEBAIHZvaWQg UU1ldGFPYmplY3RQdWJsaXNoZXI6OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQgKmV2ZW50KQorICAg ICB9CisgfQorIAorK1NpZ25hbEhhbmRsZXI8UU1ldGFPYmplY3RQdWJsaXNoZXI+ICpRTWV0YU9i amVjdFB1Ymxpc2hlcjo6c2lnbmFsSGFuZGxlckZvcihjb25zdCBRT2JqZWN0ICpvYmplY3QpCisr eworKyAgICBhdXRvIHRocmVhZCA9IG9iamVjdC0+dGhyZWFkKCk7CisrICAgIGF1dG8gaXQgPSBz aWduYWxIYW5kbGVycy5maW5kKHRocmVhZCk7CisrICAgIGlmIChpdCA9PSBzaWduYWxIYW5kbGVy cy5lbmQoKSkgeworKyAgICAgICAgaXQgPSBzaWduYWxIYW5kbGVycy5lbXBsYWNlKHRocmVhZCwg dGhpcykuZmlyc3Q7CisrICAgICAgICBpdC0+c2Vjb25kLm1vdmVUb1RocmVhZCh0aHJlYWQpOwor KyAgICB9CisrICAgIHJldHVybiAmaXQtPnNlY29uZDsKKyt9CisrCisgUVRfRU5EX05BTUVTUEFD RQorZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1 Ymxpc2hlcl9wLmggYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJs aXNoZXJfcC5oCitpbmRleCBiYmQ5ODc1Li40NzEzZWYxIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFu bmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyX3AuaAorKysrIGIvcXR3ZWJj aGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyX3AuaAorQEAgLTU5LDYg KzU5LDkgQEAKKyAjaW5jbHVkZSA8UUJhc2ljVGltZXI+CisgI2luY2x1ZGUgPFFQb2ludGVyPgor ICNpbmNsdWRlIDxRSnNvbk9iamVjdD4KKysjaW5jbHVkZSA8UVF1ZXVlPgorKworKyNpbmNsdWRl IDx1bm9yZGVyZWRfbWFwPgorIAorICNpbmNsdWRlICJxd2ViY2hhbm5lbGdsb2JhbC5oIgorIAor QEAgLTEwOSwxNyArMTEyLDM2IEBAIHB1YmxpYzoKKyAgICAgICovCisgICAgIHZvaWQgYnJvYWRj YXN0TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSkgY29uc3Q7CisgCisrICAgIC8q KgorKyAgICAgKiBFbnF1ZXVlIHRoZSBnaXZlbiBAcCBtZXNzYWdlIHRvIGFsbCBrbm93biB0cmFu c3BvcnRzLgorKyAgICAgKi8KKysgICAgdm9pZCBlbnF1ZXVlQnJvYWRjYXN0TWVzc2FnZShjb25z dCBRSnNvbk9iamVjdCAmbWVzc2FnZSk7CisrCisrICAgIC8qKgorKyAgICAgKiBFbnF1ZXVlIHRo ZSBnaXZlbiBAcCBtZXNzYWdlIHRvIEBwIHRyYW5zcG9ydC4KKysgICAgICovCisrICAgIHZvaWQg ZW5xdWV1ZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsIFFXZWJDaGFubmVsQWJz dHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7CisrCisrICAgIC8qKgorKyAgICAgKiBJZiBjbGll bnQgZm9yIGdpdmVuIEBwIHRyYW5zcG9ydCBpcyBpZGxlLCBzZW5kIHF1ZXVlZCBtZXNzYWdlZCB0 byBAcCB0cmFuc3BvcnQgYW5kIHRoZW4gbWFyaworKyAgICAgKiB0aGUgY2xpZW50IGFzIG5vdCBp ZGxlLgorKyAgICAgKi8KKysgICAgdm9pZCBzZW5kRW5xdWV1ZWRQcm9wZXJ0eVVwZGF0ZXMoUVdl YkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KTsKKysKKyAgICAgLyoqCisgICAg ICAqIFNlcmlhbGl6ZSB0aGUgUU1ldGFPYmplY3Qgb2YgQHAgb2JqZWN0IGFuZCByZXR1cm4gaXQg aW4gSlNPTiBmb3JtLgorICAgICAgKi8KKyAgICAgUUpzb25PYmplY3QgY2xhc3NJbmZvRm9yT2Jq ZWN0KGNvbnN0IFFPYmplY3QgKm9iamVjdCwgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAq dHJhbnNwb3J0KTsKKyAKKyAgICAgLyoqCistICAgICAqIFNldCB0aGUgY2xpZW50IHRvIGlkbGUg b3IgYnVzeSwgYmFzZWQgb24gdGhlIHZhbHVlIG9mIEBwIGlzSWRsZS4KKy0gICAgICoKKy0gICAg ICogV2hlbiB0aGUgdmFsdWUgY2hhbmdlZCwgc3RhcnQvc3RvcCB0aGUgcHJvcGVydHkgdXBkYXRl IHRpbWVyIGFjY29yZGluZ2x5LgorKyAgICAgKiBTZXQgdGhlIGNsaWVudCB0byBpZGxlIG9yIGJ1 c3kgZm9yIGEgc2luZ2xlIEBwIHRyYW5zcG9ydCwgYmFzZWQgb24gdGhlIHZhbHVlIG9mIEBwIGlz SWRsZS4KKysgICAgICovCisrICAgIHZvaWQgc2V0Q2xpZW50SXNJZGxlKGJvb2wgaXNJZGxlLCBR V2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworKworKyAgICAvKioKKysg ICAgICogQ2hlY2sgdGhhdCBjbGllbnQgaXMgaWRsZSBmb3IgQHAgdHJhbnNwb3J0LgorICAgICAg Ki8KKy0gICAgdm9pZCBzZXRDbGllbnRJc0lkbGUoYm9vbCBpc0lkbGUpOworKyAgICBib29sIGlz Q2xpZW50SWRsZShRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworIAor ICAgICAvKioKKyAgICAgICogSW5pdGlhbGl6ZSBjbGllbnRzIGJ5IHNlbmRpbmcgdGhlbSB0aGUg Y2xhc3MgaW5mb3JtYXRpb24gb2YgdGhlIHJlZ2lzdGVyZWQgb2JqZWN0cy4KK0BAIC0yNzIsMTAg KzI5NCwxOCBAQCBwcml2YXRlOgorICAgICBmcmllbmQgY2xhc3MgVGVzdFdlYkNoYW5uZWw7Cisg CisgICAgIFFXZWJDaGFubmVsICp3ZWJDaGFubmVsOworLSAgICBTaWduYWxIYW5kbGVyPFFNZXRh T2JqZWN0UHVibGlzaGVyPiBzaWduYWxIYW5kbGVyOworKyAgICBzdGQ6OnVub3JkZXJlZF9tYXA8 Y29uc3QgUVRocmVhZCosIFNpZ25hbEhhbmRsZXI8UU1ldGFPYmplY3RQdWJsaXNoZXI+PiBzaWdu YWxIYW5kbGVyczsKKysgICAgU2lnbmFsSGFuZGxlcjxRTWV0YU9iamVjdFB1Ymxpc2hlcj4gKnNp Z25hbEhhbmRsZXJGb3IoY29uc3QgUU9iamVjdCAqb2JqZWN0KTsKKyAKKy0gICAgLy8gdHJ1ZSB3 aGVuIHRoZSBjbGllbnQgaXMgaWRsZSwgZmFsc2Ugb3RoZXJ3aXNlCistICAgIGJvb2wgY2xpZW50 SXNJZGxlOworKyAgICBzdHJ1Y3QgVHJhbnNwb3J0U3RhdGUKKysgICAgeworKyAgICAgICAgVHJh bnNwb3J0U3RhdGUoKSA6IGNsaWVudElzSWRsZShmYWxzZSkgeyB9CisrICAgICAgICAvLyB0cnVl IHdoZW4gdGhlIGNsaWVudCBpcyBpZGxlLCBmYWxzZSBvdGhlcndpc2UKKysgICAgICAgIGJvb2wg Y2xpZW50SXNJZGxlOworKyAgICAgICAgLy8gbWVzc2FnZXMgdG8gc2VuZAorKyAgICAgICAgUVF1 ZXVlPFFKc29uT2JqZWN0PiBxdWV1ZWRNZXNzYWdlczsKKysgICAgfTsKKysgICAgUUhhc2g8UVdl YkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqLCBUcmFuc3BvcnRTdGF0ZT4gdHJhbnNwb3J0U3Rh dGU7CisgCisgICAgIC8vIHRydWUgd2hlbiBubyBwcm9wZXJ0eSB1cGRhdGVzIHNob3VsZCBiZSBz ZW50LCBmYWxzZSBvdGhlcndpc2UKKyAgICAgYm9vbCBibG9ja1VwZGF0ZXM7CitkaWZmIC0tZ2l0 IGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3NpZ25hbGhhbmRsZXJfcC5oIGIvcXR3ZWJj aGFubmVsL3NyYy93ZWJjaGFubmVsL3NpZ25hbGhhbmRsZXJfcC5oCitpbmRleCAyN2FmYWRiLi5k NzczNzNjIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3NpZ25hbGhh bmRsZXJfcC5oCisrKysgYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvc2lnbmFsaGFuZGxl cl9wLmgKK0BAIC01Niw2ICs1Niw3IEBACisgI2luY2x1ZGUgPFFWZWN0b3I+CisgI2luY2x1ZGUg PFFNZXRhTWV0aG9kPgorICNpbmNsdWRlIDxRRGVidWc+CisrI2luY2x1ZGUgPFFUaHJlYWQ+Cisg CisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCitAQCAtNzEsNiArNzIsNyBAQCBzdGF0aWMgY29uc3Qg aW50IHNfZGVzdHJveWVkU2lnbmFsSW5kZXggPSBRT2JqZWN0OjpzdGF0aWNNZXRhT2JqZWN0Lmlu ZGV4T2ZNZXRobworIHRlbXBsYXRlPGNsYXNzIFJlY2VpdmVyPgorIGNsYXNzIFNpZ25hbEhhbmRs ZXIgOiBwdWJsaWMgUU9iamVjdAorIHsKKysgICAgUV9ESVNBQkxFX0NPUFkoU2lnbmFsSGFuZGxl cikKKyBwdWJsaWM6CisgICAgIFNpZ25hbEhhbmRsZXIoUmVjZWl2ZXIgKnJlY2VpdmVyLCBRT2Jq ZWN0ICpwYXJlbnQgPSAwKTsKKyAKK0BAIC0yNjgsNiArMjcwLDcgQEAgaW50IFNpZ25hbEhhbmRs ZXI8UmVjZWl2ZXI+OjpxdF9tZXRhY2FsbChRTWV0YU9iamVjdDo6Q2FsbCBjYWxsLCBpbnQgbWV0 aG9kSWQsIHYKKyAgICAgaWYgKGNhbGwgPT0gUU1ldGFPYmplY3Q6Okludm9rZU1ldGFNZXRob2Qp IHsKKyAgICAgICAgIGNvbnN0IFFPYmplY3QgKm9iamVjdCA9IHNlbmRlcigpOworICAgICAgICAg UV9BU1NFUlQob2JqZWN0KTsKKysgICAgICAgIFFfQVNTRVJUKFFUaHJlYWQ6OmN1cnJlbnRUaHJl YWQoKSA9PSBvYmplY3QtPnRocmVhZCgpKTsKKyAgICAgICAgIFFfQVNTRVJUKHNlbmRlclNpZ25h bEluZGV4KCkgPT0gbWV0aG9kSWQpOworICAgICAgICAgUV9BU1NFUlQobV9jb25uZWN0aW9uc0Nv dW50ZXIuY29udGFpbnMob2JqZWN0KSk7CisgICAgICAgICBRX0FTU0VSVChtX2Nvbm5lY3Rpb25z Q291bnRlci52YWx1ZShvYmplY3QpLmNvbnRhaW5zKG1ldGhvZElkKSk7CitkaWZmIC0tZ2l0IGEv cXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vcW1sL3Rlc3R3ZWJjaGFubmVsLmNwcCBiL3F0d2ViY2hh bm5lbC90ZXN0cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5lbC5jcHAKK2luZGV4IDk4OTE2ODcuLjNj YTgxYzIgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by9xbWwvdGVzdHdlYmNo YW5uZWwuY3BwCisrKysgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by9xbWwvdGVzdHdlYmNoYW5u ZWwuY3BwCitAQCAtNDYsNyArNDYsMTEgQEAgVGVzdFdlYkNoYW5uZWw6On5UZXN0V2ViQ2hhbm5l bCgpCisgCisgYm9vbCBUZXN0V2ViQ2hhbm5lbDo6Y2xpZW50SXNJZGxlKCkgY29uc3QKKyB7Cist ICAgIHJldHVybiBRV2ViQ2hhbm5lbDo6ZF9mdW5jKCktPnB1Ymxpc2hlci0+Y2xpZW50SXNJZGxl OworKyAgICBmb3IgKGF1dG8gKnRyYW5zcG9ydCA6IFFXZWJDaGFubmVsOjpkX2Z1bmMoKS0+dHJh bnNwb3J0cykgeworKyAgICAgICAgaWYgKFFXZWJDaGFubmVsOjpkX2Z1bmMoKS0+cHVibGlzaGVy LT5pc0NsaWVudElkbGUodHJhbnNwb3J0KSkKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKysg ICAgfQorKyAgICByZXR1cm4gZmFsc2U7CisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYg LS1naXQgYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVs LmNwcCBiL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwu Y3BwCitpbmRleCAxODFkYTllLi4zN2Y5ODlhIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3Rl c3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5jcHAKKysrKyBiL3F0d2ViY2hhbm5l bC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuY3BwCitAQCAtNzg1LDcgKzc4 NSw3IEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RUcmFuc3BvcnRXcmFwT2JqZWN0UHJvcGVy dGllcygpCisgICAgIER1bW15VHJhbnNwb3J0ICpkdW1teVRyYW5zcG9ydCA9IG5ldyBEdW1teVRy YW5zcG9ydCh0aGlzKTsKKyAgICAgY2hhbm5lbC5jb25uZWN0VG8oZHVtbXlUcmFuc3BvcnQpOwor ICAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPmluaXRpYWxpemVDbGllbnQoZHVtbXlU cmFuc3BvcnQpOworLSAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnNldENsaWVudElz SWRsZSh0cnVlKTsKKysgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5zZXRDbGllbnRJ c0lkbGUodHJ1ZSwgZHVtbXlUcmFuc3BvcnQpOworIAorICAgICBRQ09NUEFSRShjaGFubmVsLmRf ZnVuYygpLT5wdWJsaXNoZXItPnRyYW5zcG9ydGVkV3JhcHBlZE9iamVjdHMuc2l6ZSgpLCAwKTsK KyAKK0BAIC05NDMsOCArOTQzLDYgQEAgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6dGVzdEluZmluaXRl UmVjdXJzaW9uKCkKKyAKKyB2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0QXN5bmNPYmplY3QoKQor IHsKKy0gICAgUVNLSVAoIlRoaXMgdGVzdCBpcyBicm9rZW4uIFNlZSBRVEJVRy04MDcyOSIpOwor LQorICAgICBRV2ViQ2hhbm5lbCBjaGFubmVsOworICAgICBjaGFubmVsLmNvbm5lY3RUbyhtX2R1 bW15VHJhbnNwb3J0KTsKKyAKK0BAIC05OTAsNiArOTg4LDUwIEBAIHZvaWQgVGVzdFdlYkNoYW5u ZWw6OnRlc3RBc3luY09iamVjdCgpCisgICAgIHRocmVhZC53YWl0KCk7CisgfQorIAorK3ZvaWQg VGVzdFdlYkNoYW5uZWw6OnRlc3RQcm9wZXJ0eU11bHRpcGxlVHJhbnNwb3J0cygpCisreworKyAg ICBEdW1teVRyYW5zcG9ydCB0cmFuc3BvcnQxOworKyAgICBEdW1teVRyYW5zcG9ydCB0cmFuc3Bv cnQyOworKworKyAgICBRV2ViQ2hhbm5lbCBjaGFubmVsOworKyAgICBRTWV0YU9iamVjdFB1Ymxp c2hlciAqcHVibGlzaGVyID0gY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyOworKworKyAgICBU ZXN0T2JqZWN0IHRlc3RPYmo7CisrICAgIHRlc3RPYmouc2V0T2JqZWN0TmFtZSgidGVzdE9iamVj dCIpOworKyAgICBjaGFubmVsLnJlZ2lzdGVyT2JqZWN0KHRlc3RPYmoub2JqZWN0TmFtZSgpLCAm dGVzdE9iaik7CisrICAgIGNoYW5uZWwuY29ubmVjdFRvKCZ0cmFuc3BvcnQxKTsKKysgICAgY2hh bm5lbC5jb25uZWN0VG8oJnRyYW5zcG9ydDIpOworKworKyAgICB0ZXN0T2JqLnNldFByb3AoIkhl bGxvIik7CisrCisrICAgIHB1Ymxpc2hlci0+aW5pdGlhbGl6ZUNsaWVudCgmdHJhbnNwb3J0MSk7 CisrICAgIHB1Ymxpc2hlci0+aW5pdGlhbGl6ZUNsaWVudCgmdHJhbnNwb3J0Mik7CisrICAgIHB1 Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQxKTsKKysgICAgUUNPTVBB UkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDEpLCB0cnVlKTsKKysgICAgUUNP TVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCBmYWxzZSk7CisrICAg IFFWRVJJRlkodHJhbnNwb3J0MS5tZXNzYWdlc1NlbnQoKS5pc0VtcHR5KCkpOworKyAgICBRVkVS SUZZKHRyYW5zcG9ydDIubWVzc2FnZXNTZW50KCkuaXNFbXB0eSgpKTsKKysKKysgICAgdGVzdE9i ai5zZXRQcm9wKCJXb3JsZCIpOworKyAgICBRVFJZX0NPTVBBUkVfV0lUSF9USU1FT1VUKHRyYW5z cG9ydDEubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAxdSwgMjAwMCk7CisrICAgIFFDT01QQVJFKHRy YW5zcG9ydDIubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAwdSk7CisrICAgIHB1Ymxpc2hlci0+c2V0 Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQyKTsKKysgICAgUVRSWV9DT01QQVJFX1dJVEhf VElNRU9VVCh0cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMXUsIDIwMDApOworKyAg ICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MSksIGZhbHNlKTsK KysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCBmYWxz ZSk7CisrCisrICAgIHRlc3RPYmouc2V0UHJvcCgiISEhIik7CisrICAgIHB1Ymxpc2hlci0+c2V0 Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQyKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVy LT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCB0cnVlKTsKKysgICAgUUNPTVBBUkUocHVibGlz aGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDEpLCBmYWxzZSk7CisrICAgIFFUUllfQ09NUEFS RV9XSVRIX1RJTUVPVVQodHJhbnNwb3J0Mi5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDJ1LCAyMDAw KTsKKysgICAgUUNPTVBBUkUodHJhbnNwb3J0MS5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDF1KTsK KysgICAgcHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgJnRyYW5zcG9ydDEpOworKyAg ICBRVFJZX0NPTVBBUkVfV0lUSF9USU1FT1VUKHRyYW5zcG9ydDEubWVzc2FnZXNTZW50KCkuc2l6 ZSgpLCAydSwgMjAwMCk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0 cmFuc3BvcnQxKSwgZmFsc2UpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRs ZSgmdHJhbnNwb3J0MiksIGZhbHNlKTsKKyt9CisrCisgY2xhc3MgRnVuY3Rpb25XcmFwcGVyIDog cHVibGljIFFPYmplY3QKKyB7CisgICAgIFFfT0JKRUNUCitAQCAtMTA4Miw3ICsxMTI0LDcgQEAg dm9pZCBUZXN0V2ViQ2hhbm5lbDo6YmVuY2hJbml0aWFsaXplQ2xpZW50cygpCisgCisgICAgICAg ICBwdWJsaXNoZXItPnByb3BlcnR5VXBkYXRlc0luaXRpYWxpemVkID0gZmFsc2U7CisgICAgICAg ICBwdWJsaXNoZXItPnNpZ25hbFRvUHJvcGVydHlNYXAuY2xlYXIoKTsKKy0gICAgICAgIHB1Ymxp c2hlci0+c2lnbmFsSGFuZGxlci5jbGVhcigpOworKyAgICAgICAgcHVibGlzaGVyLT5zaWduYWxI YW5kbGVycy5jbGVhcigpOworICAgICB9CisgfQorIAorQEAgLTExMDcsNyArMTE0OSw3IEBAIHZv aWQgVGVzdFdlYkNoYW5uZWw6OmJlbmNoUHJvcGVydHlVcGRhdGVzKCkKKyAgICAgICAgICAgICBv YmotPmNoYW5nZSgpOworICAgICAgICAgfQorIAorLSAgICAgICAgY2hhbm5lbC5kX2Z1bmMoKS0+ cHVibGlzaGVyLT5jbGllbnRJc0lkbGUgPSB0cnVlOworKyAgICAgICAgY2hhbm5lbC5kX2Z1bmMo KS0+cHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgbV9kdW1teVRyYW5zcG9ydCk7Cisg ICAgICAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnNlbmRQZW5kaW5nUHJvcGVydHlV cGRhdGVzKCk7CisgICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1 dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5oIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8v d2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5oCitpbmRleCBlYWUyMWY0Li5kZDRlNjkwIDEwMDY0 NAorLS0tIGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5l bC5oCisrKysgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFu bmVsLmgKK0BAIC0zNDgsNiArMzQ4LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB0ZXN0 SnNvblRvVmFyaWFudCgpOworICAgICB2b2lkIHRlc3RJbmZpbml0ZVJlY3Vyc2lvbigpOworICAg ICB2b2lkIHRlc3RBc3luY09iamVjdCgpOworKyAgICB2b2lkIHRlc3RQcm9wZXJ0eU11bHRpcGxl VHJhbnNwb3J0cygpOworICAgICB2b2lkIHRlc3REZWxldGlvbkR1cmluZ01ldGhvZEludm9jYXRp b25fZGF0YSgpOworICAgICB2b2lkIHRlc3REZWxldGlvbkR1cmluZ01ldGhvZEludm9jYXRpb24o KTsKKyAKK1N1Ym1vZHVsZSBxdHdlYmVuZ2luZSBmMzI4MDU0ZC4uLjM4ZTBkZjZjIChjb21taXRz IG5vdCBwcmVzZW50KQorU3VibW9kdWxlIHF0d2Vic29ja2V0cyA2NTg1MDk1NC4uNjNmYjhkYTE6 CitkaWZmIC0tZ2l0IGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRkYXRh cHJvY2Vzc29yLmNwcCBiL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0ZGF0 YXByb2Nlc3Nvci5jcHAKK2luZGV4IDJhZmZkZDUuLjk1ZjExOTQgMTAwNjQ0CistLS0gYS9xdHdl YnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldGRhdGFwcm9jZXNzb3IuY3BwCisrKysg Yi9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldGRhdGFwcm9jZXNzb3IuY3Bw CitAQCAtMjczLDYgKzI3Myw3IEBAIHZvaWQgUVdlYlNvY2tldERhdGFQcm9jZXNzb3I6OmNsZWFy KCkKKyAgICAgaWYgKCFtX3BDb252ZXJ0ZXJTdGF0ZSkKKyAgICAgICAgIG1fcENvbnZlcnRlclN0 YXRlID0gbmV3IFFUZXh0Q29kZWM6OkNvbnZlcnRlclN0YXRlKFFUZXh0Q29kZWM6OkNvbnZlcnRJ bnZhbGlkVG9OdWxsIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFUZXh0Q29kZWM6Oklnbm9yZUhlYWRlcik7CisrICAgIGZyYW1l LmNsZWFyKCk7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0d2Vic29ja2V0cy9zcmMvd2Vi c29ja2V0cy9xd2Vic29ja2V0cHJvdG9jb2wuY3BwIGIvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2Nr ZXRzL3F3ZWJzb2NrZXRwcm90b2NvbC5jcHAKK2luZGV4IGRmODdhOTMuLmQwNDY1ZjEgMTAwNjQ0 CistLS0gYS9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldHByb3RvY29sLmNw cAorKysrIGIvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRwcm90b2NvbC5j cHAKK0BAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBRV2ViU29ja2V0UHJvdG9jb2w6Om1hc2soY2hh ciAqcGF5bG9hZCwgcXVpbnQ2NCBzaXplLCBxdWludDMyIG1hc2tpbmdLZXkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHF1aW50OCgobWFza2luZ0tleSAmIDB4MDAwMEZGMDB1KSA+PiA4 KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpbnQ4KChtYXNraW5nS2V5ICYgMHgw MDAwMDBGRnUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKy0gICAgaW50IGkgPSAw OworKyAgICBxdWludDY0IGkgPSAwOworICAgICB3aGlsZSAoc2l6ZS0tID4gMCkKKyAgICAgICAg ICpwYXlsb2FkKysgXj0gbWFza1tpKysgJSA0XTsKKyB9CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0 NS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCmluZGV4IGY4NzlkZjNhM2U3MDYuLmEw ZDMwMzZhZjc5YTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvcXQ1L3RlbXBsYXRlCkBAIC0yLDExICsyLDExIEBACiAjCiAjIHJldmJ1bXAgbGlicXR4ZGcg YWZ0ZXIgYnVtcGluZyBwYXRjaCB2ZXJzaW9uCiBwa2duYW1lPXF0NQotdmVyc2lvbj01LjE1Ljcr MjAyMjExMTkKK3ZlcnNpb249NS4xNS44CityZXZpc2lvbj0xCitidWlsZF9zdHlsZT1tZXRhCiAj IGNvbW1pdCBmOGM5ZmIzMDRiYzNlNTNiM2FhMDdmOTYyY2Q3NGU5MTYwZGVjY2NjCiAjIGJhc2Ug cmVwbzogaHR0cHM6Ly9pbnZlbnQua2RlLm9yZy9xdC9xdC9xdDUKLXJldmlzaW9uPTgKLWJ1aWxk X3N0eWxlPW1ldGEKIGhvc3RtYWtlZGVwZW5kcz0iY21ha2UgY2xhbmcgZmxleCBwZXJsIGdsaWIt ZGV2ZWwgcGtnLWNvbmZpZwogIHB5dGhvbjMgcmUyYyBydWJ5IHdoaWNoIgogbWFrZWRlcGVuZHM9 IlNETDItZGV2ZWwgVnVsa2FuLUhlYWRlcnMgYWxzYS1saWItZGV2ZWwgZG91YmxlLWNvbnZlcnNp b24tZGV2ZWwKQEAgLTI5LDkgKzI5LDkgQEAgaG9tZXBhZ2U9Imh0dHBzOi8vcXQuaW8vIgogIyB0 YXJiYWxsIGlzIGdlbmVyYXRlZCB3aXRoIGBnaXQgYXJjaGl2ZS1hbGwgcXQ1LSR2ZXJzaW9uLnRh ci5nemAKICMgdG8ga2VlcCB0aGUgc2l6ZSBzbWFsbGVyIHF0d2ViZW5naW5lLCBxdHdlYnZpZXcs IHF0ZG9jZ2FsbGVyeSwgcXRhY3RpdmVxdCBhbmQgcXRwaW0KICMgY2FuIGJlIG1hcmtlZCB3aXRo IHRoZSBleHBvcnQtaWdub3JlIGF0dHJpYnV0ZQotZGlzdGZpbGVzPSJodHRwczovL3ZvaWQuam9o bm55bmF0b3IuZGV2L2Rpc3RmaWxlcy9xdDUtJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT05 ZDU3YWY0NzFjNzgwMjlhMzYyMjc2YjdjOTkxMDhlYTAwOWY1MTFiYjliYTZmZjZjYjg4NGY2ZGRk MjU1ZTlmCi1weXRob25fdmVyc2lvbj0zCitkaXN0ZmlsZXM9Imh0dHBzOi8vZG93bmxvYWQucXQu aW8vYXJjaGl2ZS9xdC81LjE1LyR7dmVyc2lvbn0vc2luZ2xlL3F0LWV2ZXJ5d2hlcmUtb3BlbnNv dXJjZS1zcmMtJHt2ZXJzaW9ufS50YXIueHoiCitjaGVja3N1bT03NzZhOTMwMmMzMzY2NzFmOTQw NmE1M2JkMzBiOGUzNmY4MjU3NDJiMmVjNDRhNTdjMDgyMTdiZmYwZmE4NmI5CitweXRob25fdmVy c2lvbj0yICN1bnZlcmlmaWVkCiByZXBsYWNlcz0icXQ1LWRvYzw1LjYuMCBxdDUtcXVpY2sxPDUu Ni4wIHF0NS1xdWljazEtZGV2ZWw8NS42LjAgcXQ1LXdlYmtpdDw1LjYuMCBxdDUtd2Via2l0LWRl dmVsPDUuNi4wCiAgcXQ1LWVuZ2luaW88NS43LjEgcXQ1LWVuZ2luaW8tZGV2ZWw8NS43LjEgcXQ1 LXBsdWdpbi1ndGs8NS43LjEgcXQ1LWNhbnZhczNkPDUuMTMuMCIKIGxpYjMybW9kZT1mdWxsCkBA IC0yNDYsNyArMjQ2LDYgQEAgZG9fY29uZmlndXJlKCkgewogCSMgb3B0cys9IiAtdiIKIAlvcHRz Kz0iIC1za2lwIHF0d2ViZW5naW5lIgogCW9wdHMrPSIgLXNraXAgcXR3ZWJ2aWV3IgotCW9wdHMr PSIgLXNraXAgcXRkb2NnYWxsZXJ5IgogCW9wdHMrPSIgLXNraXAgcXRwaW0iCiAJb3B0cys9IiAt c2tpcCBxdHN5c3RlbXMiCiAJb3B0cys9IiAtc2tpcCBxdHNwZWVjaCIKCkZyb20gYTlkODM0MTZm ZWEzYTY1MTEyZDJiNjUyOWJkOTBjOTg0ZTBlZGZiYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYxLzExNV0gcXRhdjogcmV2YnVtcCBmb3Ig ZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3F0YXYvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3F0YXYvdGVtcGxhdGUgYi9zcmNwa2dzL3F0YXYvdGVtcGxhdGUKaW5kZXggNzc1ZDVhMTM5 YTllZi4uMmQwMGFkMTA0MzU1ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdGF2L3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvcXRhdi90ZW1wbGF0ZQpAQCAtNCw3ICs0LDcgQEAgdmVyc2lvbj0xLjEzLjAK IHJldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXFtYWtlCiBob3N0bWFrZWRlcGVuZHM9InF0NS1xbWFr ZSBxdDUtaG9zdC10b29scyIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbGliYXNzLWRldmVs IGxpYm9wZW5hbC1kZXZlbAorbWFrZWRlcGVuZHM9ImZmbXBlZzQtZGV2ZWwgbGliYXNzLWRldmVs IGxpYm9wZW5hbC1kZXZlbAogIGxpYnZhLWdseC1kZXZlbCBsaWJYdi1kZXZlbCBwdWxzZWF1ZGlv LWRldmVsCiAgcXQ1LWRlY2xhcmF0aXZlLWRldmVsIHF0NS1zdmctZGV2ZWwKICBxdDUtcXVpY2tj b250cm9scyIKCkZyb20gMTQzOWZkNjAwN2YyN2YyYWQ5MzEyYzk3Y2E0MjFiNTY4ZTdmZGI3YyBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYy LzExNV0gcXRveDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3F0b3gvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0b3gvdGVtcGxhdGUgYi9zcmNwa2dzL3F0b3gvdGVt cGxhdGUKaW5kZXggMzljNjQzZmVjZGI1YS4uYmI3MGU3ZjUxMjQwYSAxMDA2NDQKLS0tIGEvc3Jj cGtncy9xdG94L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXRveC90ZW1wbGF0ZQpAQCAtMSw3ICsx LDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0b3gnCiBwa2duYW1lPXF0b3gKIHZlcnNpb249 MS4xNy42Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmln dXJlX2FyZ3M9Ii1EVVBEQVRFX0NIRUNLPU9GRgogIC1ER0lUX0RFU0NSSUJFPSR7dmVyc2lvbn0K CkZyb20gOWI3MTZhY2UxMGQ2MGViMzk2YWIyMzk1ODA2NzUyOTQxNTRjYzdkNiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYzLzExNV0gcmV0 cm9hcmNoOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcmV0cm9hcmNoL3Rl bXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9yZXRyb2FyY2gvdGVtcGxhdGUgYi9zcmNwa2dzL3Jl dHJvYXJjaC90ZW1wbGF0ZQppbmRleCBjYjMxMjVjNWRiZjFhLi5jNjVjMjZmN2JmMDMzIDEwMDY0 NAotLS0gYS9zcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3JldHJvYXJj aC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3JldHJvYXJj aCcKIHBrZ25hbWU9cmV0cm9hcmNoCiB2ZXJzaW9uPTEuMTYuMC4zCi1yZXZpc2lvbj0zCityZXZp c2lvbj00CiBidWlsZF9zdHlsZT1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLXByZWZpeD0v dXNyIC0tc3lzY29uZmRpcj0vZXRjIC0tZW5hYmxlLW5ldHdvcmtpbmcKICAtLWVuYWJsZS11ZGV2 IC0tZGlzYWJsZS1idWlsdGluZmxhYyAtLWRpc2FibGUtYnVpbHRpbmdsc2xhbmcKCkZyb20gNDNh MWExMDRiNzVkNGRjMjNhYWI4NmVjN2M3NGQxOWZlZjkzOTAxOSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY0LzExNV0gc2NyY3B5OiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc2NyY3B5L3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9zY3JjcHkvdGVtcGxhdGUgYi9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZQppbmRl eCBhYzE4YmMwMzQxOGNlLi5mMzlhN2Y2NzhhYjM1IDEwMDY0NAotLS0gYS9zcmNwa2dzL3NjcmNw eS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3NjcmNweScKIHBrZ25hbWU9c2NyY3B5CiB2ZXJzaW9uPTIu MS4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJl X2FyZ3M9Ii1EY29tcGlsZV9zZXJ2ZXI9ZmFsc2UKICAtRHByZWJ1aWx0X3NlcnZlcj0vdXNyL3No YXJlL3NjcmNweS9zY3JjcHktc2VydmVyLXYke3ZlcnNpb259IgoKRnJvbSA2ZjIyNTA2YjhiZDY3 OTgyYWMyYjk0ZmU4NWY4MDRjZDI3NzU4MjQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDE3IE9jdCAyMDIzIDA4OjU0 OjExIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjUvMTE1XSBOZXcgcGFja2FnZTogc3BleC14IHJl cGxhY2VzIHNwZWstYWx0ZXJuYXRpdmUgZm9yCiBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc3Bl ay1hbHRlcm5hdGl2ZSAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKIHNyY3BrZ3Mve3NwZWst YWx0ZXJuYXRpdmUgPT4gc3Blay14fS90ZW1wbGF0ZSB8IDIyICsrKysrKysrKysrKy0tLS0tLS0K IDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUKIHJlbmFtZSBzcmNwa2dzL3tz cGVrLWFsdGVybmF0aXZlID0+IHNwZWsteH0vdGVtcGxhdGUgKDUyJSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUgYi9zcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUKbmV3IGZp bGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uNzY2NDgyMzZkYTcwMQotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZQpAQCAtMCwwICsxIEBACitzcGVr LXgKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NwZWst YWx0ZXJuYXRpdmUvdGVtcGxhdGUgYi9zcmNwa2dzL3NwZWsteC90ZW1wbGF0ZQpzaW1pbGFyaXR5 IGluZGV4IDUyJQpyZW5hbWUgZnJvbSBzcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUvdGVtcGxhdGUK cmVuYW1lIHRvIHNyY3BrZ3Mvc3Blay14L3RlbXBsYXRlCmluZGV4IGQ3YjU1Yzc3NmIxZDQuLjNk ZWQ2YzJjMzIzZTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL3NwZWsteC90ZW1wbGF0ZQpAQCAtMSwxOCArMSwxOCBAQAotIyBUZW1w bGF0ZSBmaWxlIGZvciAnc3Blay1hbHRlcm5hdGl2ZScKLXBrZ25hbWU9c3Blay1hbHRlcm5hdGl2 ZQotdmVyc2lvbj0wLjguMi4zCi1yZXZpc2lvbj0yCisjIFRlbXBsYXRlIGZpbGUgZm9yICdzcGVr LXgnCitwa2duYW1lPXNwZWsteAordmVyc2lvbj0wLjkuMworcmV2aXNpb249MQogYnVpbGRfc3R5 bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBnZXR0ZXh0LWRldmVs IGludGx0b29sIGxpYnRvb2wgcGtnLWNvbmZpZwogIHd4V2lkZ2V0cy1jb21tb24gd3hXaWRnZXRz LWd0azMtZGV2ZWwiCiBtYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIHd4V2lkZ2V0cy1ndGszLWRl dmVsIgogZGVwZW5kcz0iZmZtcGVnIgogc2hvcnRfZGVzYz0iQWNvdXN0aWMgc3BlY3RydW0gYW5h bHlzZXIiCi1tYWludGFpbmVyPSJLYXJ0aWsgU2luZ2ggPGthcnRpay55bndhQGdtYWlsLmNvbT4i CittYWludGFpbmVyPSJ6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPiIKIGxpY2Vuc2U9IkdQTC0z LjAtb3ItbGF0ZXIiCi1ob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL3dpdGhtb3J0ZW4vc3Bl ay1hbHRlcm5hdGl2ZSIKLWRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL3dpdGhtb3J0ZW4v c3Blay1hbHRlcm5hdGl2ZS9hcmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09IjAw N2JhNGI4NGEzMTBiMDc4ZTM3OGFhODRjOGU4MDc4M2RiNTgyMTQzN2E3NTdhNDg4YzNlY2VjMzc3 ZTZiMmEiCitob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL01pa2VXYW5nMDAwMDAwL3NwZWst eCIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL01pa2VXYW5nMDAwMDAwL3NwZWsteC9h cmNoaXZlL3Yke3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPSI3ZjRiMTA5OTAzMzMzY2RkMzEw YWIyYjkxNzZmMGRjNDlhNTY1ODkxMzc2ZTI4MWEyMzNkMzQyY2VkZjkwZWY3IgogCiBDWFhGTEFH Uz0iLURfTEFSR0VGSUxFX1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IgogCkBAIC0yMiwz ICsyMiw5IEBAIGV4cG9ydCBXWF9DT05GSUdfTkFNRT0id3gtY29uZmlnLWd0azMiCiBwcmVfY29u ZmlndXJlKCkgewogCU5PQ09ORklHVVJFPTEgLi9hdXRvZ2VuLnNoCiB9CisKK3NwZWstYWx0ZXJu YXRpdmVfcGFja2FnZSgpIHsKKwlkZXBlbmRzPSJzcGVrLXgiCisJc2hvcnRfZGVzYys9IiAtIHRy YW5zaXRpb25hbCBkdW1teSBwYWNrYWdlIgorCWJ1aWxkX3N0eWxlPW1ldGEKK30KCkZyb20gOWRl ZjY2MjFhNGFlZTk3MGJjNWI1ZmE2ZTA2MmRjOTEyZjBlYmM2OSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY2LzExNV0gc3NyOiByZXZidW1w IGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvc3NyL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9zc3IvdGVtcGxhdGUgYi9zcmNwa2dzL3Nzci90ZW1wbGF0ZQppbmRleCA4NDJiMjQy M2FhZDEwLi4zNDQ4Y2ExMTBlYjBjIDEwMDY0NAotLS0gYS9zcmNwa2dzL3Nzci90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3Nzci90ZW1wbGF0ZQpAQCAtNSw3ICs1LDcgQEAgcmV2aXNpb249MgogYnVp bGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfUVQ1PU9OIgogaG9zdG1ha2Vk ZXBlbmRzPSJwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZy1k ZXZlbCBnbHUtZGV2ZWwgamFjay1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCittYWtlZGVwZW5kcz0i YWxzYS1saWItZGV2ZWwgZmZtcGVnNC1kZXZlbCBnbHUtZGV2ZWwgamFjay1kZXZlbCBwdWxzZWF1 ZGlvLWRldmVsCiAgcXQ1LXRvb2xzLWRldmVsIHF0NS14MTFleHRyYXMtZGV2ZWwgbGliWGluZXJh bWEtZGV2ZWwgdjRsLXV0aWxzLWRldmVsIgogZGVwZW5kcz0iZGVza3RvcC1maWxlLXV0aWxzIGhp Y29sb3ItaWNvbi10aGVtZSIKIHNob3J0X2Rlc2M9IlNpbXBsZSBTY3JlZW4gUmVjb3JkZXIgZm9y IHByb2dyYW1zIGFuZCBnYW1lcyIKCkZyb20gOWVmNmE4NDAyYjljYWQyZTIxOWZlZWFhZDIwNjJi OGNhOWMyYmJmOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDY3LzExNV0gc3luZmlnOiByZXZidW1wIGZvciBmZm1wZWctNi4wIGFuZCBtbHQ3 CgotLS0KIHNyY3BrZ3Mvc3luZmlnL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCB8IDcxICsrKysrKysr KysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlICAgICAgICAgICAg ICB8ICA0ICstCiAyIGZpbGVzIGNoYW5nZWQsIDczIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBh dGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoIGIv c3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMDAuLjEwNzgwYjQyNzgyZjQKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL3N5bmZpZy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKQEAgLTAsMCArMSw3MSBAQAorLS0t IGEvc3JjL21vZHVsZXMvbW9kX2xpYmF2Y29kZWMvdHJndF9hdi5jcHAJMjAyMi0xMC0yNSAwOTox NDoxMi4wMDAwMDAwMDAgLTA0MDAKKysrKyBiL3NyYy9tb2R1bGVzL21vZF9saWJhdmNvZGVjL3Ry Z3RfYXYuY3BwCTIwMjMtMDUtMDUgMjE6MzQ6MTcuODk5MTk0NTU5IC0wNDAwCitAQCAtMzgsNiAr NDEsNyBAQAorIGV4dGVybiAiQyIKKyB7CisgI2lmZGVmIEhBVkVfTElCQVZGT1JNQVRfQVZGT1JN QVRfSAorKyMJaW5jbHVkZSA8bGliYXZjb2RlYy9hdmNvZGVjLmg+CisgIwlpbmNsdWRlIDxsaWJh dmZvcm1hdC9hdmZvcm1hdC5oPgorICNlbGlmIGRlZmluZWQoSEFWRV9BVkZPUk1BVF9IKQorICMJ aW5jbHVkZSA8YXZmb3JtYXQuaD4KK0BAIC0xNTUsMTEgKzE1NiwxMSBAQAorICAgICB9CisgCisg CWJvb2wgb3Blbl92aWRlb19zdHJlYW0oKSB7CistCQlpZiAoYXZjb2RlY19vcGVuMih2aWRlb19j b250ZXh0LCBOVUxMLCBOVUxMKSA8IDApIHsKKysJCWlmIChhdmNvZGVjX29wZW4yKHZpZGVvX2Nv bnRleHQsIG51bGxwdHIsIG51bGxwdHIpIDwgMCkgeworIAkJCXN5bmZpZzo6ZXJyb3IoIlRhcmdl dF9MaWJBVkNvZGVjOiBjb3VsZCBub3Qgb3BlbiB2aWRlbyBjb2RlYyIpOworIAkJCS8vIHNlZW1z IHRoZSBjYWxsaW5nIG9mIGF2Y29kZWNfZnJlZV9jb250ZXh0IGFmdGVyIGVycm9yIHdpbGwgY2F1 c2UgY3Jhc2gKKyAJCQkvLyBzbyBqdXN0IGZvcmdldCBhYm91dCB0aGlzIGNvbnRleHQKKy0JCQl2 aWRlb19jb250ZXh0ID0gTlVMTDsKKysJCQl2aWRlb19jb250ZXh0ID0gbnVsbHB0cjsKKyAJCQlj bG9zZSgpOworIAkJCXJldHVybiBmYWxzZTsKKyAgICAgICAgIH0KK0BAIC0yMzQsMTUgKzIzNSwy MSBAQAorIAkJY2xvc2UoKTsKKyAKKyAJCWlmICghYXZfcmVnaXN0ZXJlZCkgeworKyNpZiBMSUJB VkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1OCAvLyBGRk1QRUcgPCA0LjAKKyAJCQlhdl9yZWdpc3Rl cl9hbGwoKTsKKysjZW5kaWYKKyAJCQlhdl9yZWdpc3RlcmVkID0gdHJ1ZTsKKyAJCX0KKyAKKyAJ CS8vIGd1ZXNzIGZvcm1hdAorLQkJQVZPdXRwdXRGb3JtYXQgKmZvcm1hdCA9IGF2X2d1ZXNzX2Zv cm1hdChOVUxMLCBmaWxlbmFtZS5jX3N0cigpLCBOVUxMKTsKKysjaWYgTElCQVZDT0RFQ19WRVJT SU9OX01BSk9SIDwgNTkgLy8gRkZNUEVHIDwgNS4wCisrCQlBVk91dHB1dEZvcm1hdCogZm9ybWF0 ID0gYXZfZ3Vlc3NfZm9ybWF0KG51bGxwdHIsIGZpbGVuYW1lLmNfc3RyKCksIG51bGxwdHIpOwor KyNlbHNlCisrCQljb25zdCBBVk91dHB1dEZvcm1hdCogZm9ybWF0ID0gYXZfZ3Vlc3NfZm9ybWF0 KG51bGxwdHIsIGZpbGVuYW1lLmNfc3RyKCksIG51bGxwdHIpOworKyNlbmRpZgorIAkJaWYgKCFm b3JtYXQpIHsKKyAJCQlzeW5maWc6Ondhcm5pbmcoIlRhcmdldF9MaWJBVkNvZGVjOiB1bmFibGUg dG8gZ3Vlc3MgdGhlIG91dHB1dCBmb3JtYXQsIGRlZmF1bHRpbmcgdG8gTVBFRyIpOworLQkJCWZv cm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdCgibXBlZyIsIE5VTEwsIE5VTEwpOworKwkJCWZvcm1hdCA9 IGF2X2d1ZXNzX2Zvcm1hdCgibXBlZyIsIG51bGxwdHIsIG51bGxwdHIpOworIAkJfQorIAkJaWYg KCFmb3JtYXQpIHsKKyAJCQlzeW5maWc6OmVycm9yKCJUYXJnZXRfTGliQVZDb2RlYzogdW5hYmxl IHRvIGZpbmQgJ21wZWcnIG91dHB1dCBmb3JtYXQiKTsKK0BAIC0yNTQsNiArMjYxLDcgQEAKKyAJ CWNvbnRleHQgPSBhdmZvcm1hdF9hbGxvY19jb250ZXh0KCk7CisgCQlhc3NlcnQoY29udGV4dCk7 CisgCQljb250ZXh0LT5vZm9ybWF0ID0gZm9ybWF0OworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05f TUFKT1IgPCA1OCAvLyBGRk1QRUcgPCA0LjAKKyAJCWlmIChmaWxlbmFtZS5zaXplKCkgKyAxID4g c2l6ZW9mKGNvbnRleHQtPmZpbGVuYW1lKSkgeworIAkJCXN5bmZpZzo6ZXJyb3IoCisgCQkJCSJU YXJnZXRfTGliQVZDb2RlYzogZmlsZW5hbWUgdG9vIGxvbmcsIG1heCBsZW5ndGggaXMgJWQsIGZp bGVuYW1lIGlzICclcyciLAorQEAgLTI2Myw2ICsyNzEsMTQgQEAKKyAJCQlyZXR1cm4gZmFsc2U7 CisgCQl9CisgCQltZW1jcHkoY29udGV4dC0+ZmlsZW5hbWUsIGZpbGVuYW1lLmNfc3RyKCksIGZp bGVuYW1lLnNpemUoKSArIDEpOworKyNlbHNlCisrCQljb250ZXh0LT51cmwgPSBhdl9zdHJuZHVw KGZpbGVuYW1lLmNfc3RyKCksIGZpbGVuYW1lLnNpemUoKSk7CisrCQlpZiAoIWNvbnRleHQtPnVy bCkgeworKwkJCXN5bmZpZzo6ZXJyb3IoIlRhcmdldF9MaWJBVkNvZGVjOiBjYW5ub3QgYWxsb2Nh dGUgc3BhY2UgZm9yIGZpbGVuYW1lIik7CisrCQkJY2xvc2UoKTsKKysJCQlyZXR1cm4gZmFsc2U7 CisrCQl9CisrI2VuZGlmCisgCisgCQlwYWNrZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKyAJCWFz c2VydChwYWNrZXQpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zeW5maWcvdGVtcGxhdGUgYi9zcmNw a2dzL3N5bmZpZy90ZW1wbGF0ZQppbmRleCBkNGQzZTM0MWEyMGJmLi43MDNjZmQ3ZWJhYzg0IDEw MDY0NAotLS0gYS9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3N5bmZpZy90 ZW1wbGF0ZQpAQCAtNiw3ICs2LDcgQEAgcmV2aXNpb249NAogYnVpbGRfc3R5bGU9Z251LWNvbmZp Z3VyZQogY29uZmlndXJlX2FyZ3M9Ii0td2l0aC1ib29zdC1saWJkaXI9JHtYQlBTX0NST1NTX0JB U0V9L3Vzci9saWIiCiBob3N0bWFrZWRlcGVuZHM9ImJvb3N0LWJ1aWxkIEltYWdlTWFnaWNrIHBr Zy1jb25maWcgaW50bHRvb2wiCi1tYWtlZGVwZW5kcz0iRVRMIGdldHRleHQtZGV2ZWwgbGlieG1s KystZGV2ZWwgbWx0LWRldmVsIGxpYm1hZ2ljay1kZXZlbAorbWFrZWRlcGVuZHM9IkVUTCBnZXR0 ZXh0LWRldmVsIGxpYnhtbCsrLWRldmVsIG1sdDctZGV2ZWwgbGlibWFnaWNrLWRldmVsCiAgbGli bW5nLWRldmVsIGJvb3N0LWJ1aWxkIGJvb3N0LWRldmVsIGxpYm9wZW5leHItZGV2ZWwgZmZtcGVn LWRldmVsIgogZGVwZW5kcz0iSW1hZ2VNYWdpY2siCiBzaG9ydF9kZXNjPSJDTEkgMkQgdmVjdG9y IGFuZCB0aW1lbGluZS1iYXNlZCBhbmltYXRpb24gc29mdHdhcmUiCkBAIC0yMCw3ICsyMCw3IEBA IENYWEZMQUdTPSItc3RkPWMrKzExIC1ESEFWRV9MT0NBTEVfSD0xIgogCiBzeW5maWctZGV2ZWxf cGFja2FnZSgpIHsKIAlkZXBlbmRzPSIke3NvdXJjZXBrZ30+PSR7dmVyc2lvbn1fJHtyZXZpc2lv bn0KLQkgbGlib3BlbmV4ci1kZXZlbCBsaWJ4bWwrKy1kZXZlbCBtbHQtZGV2ZWwiCisJIGxpYm9w ZW5leHItZGV2ZWwgbGlieG1sKystZGV2ZWwgbWx0Ny1kZXZlbCIKIAlzaG9ydF9kZXNjKz0iIC0g ZGV2ZWxvcG1lbnQgZmlsZXMiCiAJcGtnX2luc3RhbGwoKSB7CiAJCXZtb3ZlIHVzci9iaW4vc3lu ZmlnLWNvbmZpZwoKRnJvbSBjYmQ3MmFlMTJhMmE2MDhjMWU1OWQzMzFkMGFmNzY1MmIzMDhmZDBj IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw NjgvMTE1XSB0aW1nOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdGltZy90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZSBiL3NyY3BrZ3MvdGltZy90 ZW1wbGF0ZQppbmRleCAyYTJhYjc2M2QyZmRkLi44ZmI0MzI3NTM1ZWY5IDEwMDY0NAotLS0gYS9z cmNwa2dzL3RpbWcvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90aW1nL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndGltZycKIHBrZ25hbWU9dGltZwogdmVyc2lv bj0xLjQuNQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZp Z3VyZV9hcmdzPSItRFdJVEhfT1BFTlNMSURFX1NVUFBPUlQ9b2ZmIC1Xbm8tZGV2IgogaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIGdpdCIKCkZyb20gMWJlYTFmMmZjMzc1Y2Q1NTlmNjJhMDdi YjkxNmE1YTA1MWQ4NzRlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDY5LzExNV0gdHZoZWFkZW5kOiByZXZidW1wIGZvciBmZm1wZWc0LTQu NC4zCgotLS0KIHNyY3BrZ3MvdHZoZWFkZW5kL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90 dmhlYWRlbmQvdGVtcGxhdGUgYi9zcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZQppbmRleCA5YWVh N2RlNGVjNzA1Li4wMTJkMzFjNDg3OWZmIDEwMDY0NAotLS0gYS9zcmNwa2dzL3R2aGVhZGVuZC90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZQpAQCAtOCw3ICs4LDcgQEAg Y29uZmlndXJlX2FyZ3M9Ii0tZW5hYmxlLWR2YnNjYW4gLS1kaXNhYmxlLWZmbXBlZ19zdGF0aWMK IC0tZGlzYWJsZS1saWJ4MjY1X3N0YXRpYyAtLWRpc2FibGUtbGlidnB4X3N0YXRpYyAtLWRpc2Fi bGUtbGlidGhlb3JhX3N0YXRpYwogLS1kaXNhYmxlLWxpYnZvcmJpc19zdGF0aWMgLS1kaXNhYmxl LWxpYmZka2FhY19zdGF0aWMiCiBob3N0bWFrZWRlcGVuZHM9ImdldHRleHQgcGtnLWNvbmZpZyBw eXRob24zIGdpdCB3aGljaCIKLW1ha2VkZXBlbmRzPSJhdmFoaS1saWJzLWRldmVsIG9wZW5zc2wt ZGV2ZWwgemxpYi1kZXZlbCBsaWJjdXJsLWRldmVsIGZmbXBlZy1kZXZlbCIKK21ha2VkZXBlbmRz PSJhdmFoaS1saWJzLWRldmVsIG9wZW5zc2wtZGV2ZWwgemxpYi1kZXZlbCBsaWJjdXJsLWRldmVs IGZmbXBlZzQtZGV2ZWwiCiBzaG9ydF9kZXNjPSJUViBzdHJlYW1pbmcgc2VydmVyIgogbWFpbnRh aW5lcj0ibGVtbWkgPGxlbW1pQG5lcmQybmVyZC5vcmc+IgogbGljZW5zZT0iR1BMLTMuMC1vbmx5 IgoKRnJvbSA1YzE3ZDhkMTNjYmQ4YjMzNmU5OTY5OTIyNDg4NDVjYzJhMjE0ZGNiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzAvMTE1XSB1 bnBhcGVyOiB1cGRhdGUgdG8gNy4wLjAuCgotLS0KIHNyY3BrZ3MvdW5wYXBlci90ZW1wbGF0ZSB8 IDE2ICsrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDgg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy91bnBhcGVyL3RlbXBsYXRlIGIvc3Jj cGtncy91bnBhcGVyL3RlbXBsYXRlCmluZGV4IDM4ZWQ0N2E1ODQwMTYuLjFmZjkxMGU3MjJhZmMg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdW5wYXBlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3VucGFw ZXIvdGVtcGxhdGUKQEAgLTEsMTMgKzEsMTMgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3VucGFw ZXInCiBwa2duYW1lPXVucGFwZXIKLXZlcnNpb249Ni4xCi1yZXZpc2lvbj0zCi1idWlsZF9zdHls ZT1nbnUtY29uZmlndXJlCit2ZXJzaW9uPTcuMC4wCityZXZpc2lvbj0xCitidWlsZF9zdHlsZT1t ZXNvbgoraG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIG1lc29uIGxpYnhzbHQiCittYWtlZGVw ZW5kcz0iZmZtcGVnLWRldmVsIHB5dGhvbjMtU3BoaW54Igorc2hvcnRfZGVzYz0iUG9zdC1wcm9j ZXNzaW5nIHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVyIgogbWFpbnRhaW5lcj0iT3Jw aGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKLWhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZp ZyBsaWJ4c2x0IgotbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCIKLWxpY2Vuc2U9IkdQTC0yIgor bGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3d3dy5mbGFtZWV5 ZXMuZXUvcHJvamVjdHMvdW5wYXBlciIKLXNob3J0X2Rlc2M9IkEgcG9zdC1wcm9jZXNzaW5nIHRv b2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVyIgogZGlzdGZpbGVzPSJodHRwczovL3d3dy5m bGFtZWV5ZXMuZXUvZmlsZXMvJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci54eiIKLWNoZWNrc3Vt PTIzN2M4NGY1ZGE1NDRiM2Y3NzA5ODI3ZjlmMTJjMzdjMzQ2Y2RmMDI5YjExMjhmYjQ2MzNmOWJh ZmE1Y2I5MzAKK2NoZWNrc3VtPTI1NzVmYmJmMjZjMjI3MTlkMWNiODgyYjU5NjAyYzk5MDBjN2Y3 NDcxMThhYzEzMDg4M2Y2MzQxOWJlNDZhODAKCkZyb20gMGM0ZTQ5OTUwOGI5YjdjNTA2NDkwYTBh YzRjZTE3MjBmYjQzZWFmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDcxLzExNV0gdmJhLW06IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy92YmEtbS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmJhLW0vdGVtcGxh dGUgYi9zcmNwa2dzL3ZiYS1tL3RlbXBsYXRlCmluZGV4IDljNzFjZWZlM2Y4ZGQuLjIyMjNkMjk3 YzMxZjUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdmJhLW0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy92 YmEtbS90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9dmJhLW0KIHJldmVydHM9MTI5 Ml8yCiB2ZXJzaW9uPTIuMS43Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1j bWFrZQogY29uZmlndXJlX2FyZ3M9Ii1ERU5BQkxFX0dUSz1UUlVFIC1ERU5BQkxFX0ZGTVBFRz1U UlVFIC1ERU5BQkxFX0xJTks9VFJVRSAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSIKIGhvc3Rt YWtlZGVwZW5kcz0iZ2V0dGV4dCBwa2ctY29uZmlnIHVuemlwIHppcCB5YXNtIHd4V2lkZ2V0cy1n dGszLWRldmVsIgoKRnJvbSBmNjk0NGI2YTc5NmExNDdkNGUyMjcyOGFiZDIyNzYyNDIyNGRmMmFm IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw NzIvMTE1XSB2aWNlOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvdmlj ZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmljZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvdmlj ZS90ZW1wbGF0ZQppbmRleCBiMWY4NjZkMzUwOTVlLi40YmVhYjJjNWY5ZWJkIDEwMDY0NAotLS0g YS9zcmNwa2dzL3ZpY2UvdGVtcGxhdGUKKysrIGIvc3JjcGtncy92aWNlL3RlbXBsYXRlCkBAIC0y Niw3ICsyNiw3IEBAIG1ha2VkZXBlbmRzPSIKIAkkKHZvcHRfaWYgZ3RrMyBndGsrMy1kZXZlbCkK IAkkKHZvcHRfaWYgZ3RrMyBwdWxzZWF1ZGlvLWRldmVsKQogCSQodm9wdF9pZiBndGszIHBhbmdv LWRldmVsKQotCSQodm9wdF9pZiBmZm1wZWcgZmZtcGVnLWRldmVsKSIKKwkkKHZvcHRfaWYgZmZt cGVnIGZmbXBlZzQtZGV2ZWwpIgogc2hvcnRfZGVzYz0iRW11bGF0b3IgZm9yIEM2NCwgQzEyOCwg Q0JNLUlJLCBQRVQsIFZJQzIwLCBQbHVzNCBhbmQgQzE2IgogbWFpbnRhaW5lcj0iT3JwaGFuZWQg PG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCgpGcm9t IDkwMjQ5YThjNTdhMzEzOGZjY2FhOTkyYTg4N2VkNWM3NzMzZjQ5YzggTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3My8xMTVdIHdheXBpcGU6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy93YXlwaXBlL3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy93YXlwaXBlL3RlbXBsYXRlIGIvc3JjcGtncy93YXlwaXBlL3RlbXBs YXRlCmluZGV4IDZkYTg4YjIxYmYyYTEuLjRkYTgwNTg0MDBiNTggMTAwNjQ0Ci0tLSBhL3NyY3Br Z3Mvd2F5cGlwZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3dheXBpcGUvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd3YXlwaXBlJwogcGtnbmFtZT13YXlwaXBl CiB2ZXJzaW9uPTAuOC42Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNv bgogIyBsdG8gaXMgb2ZmIGJlY2F1c2UgaXQgY2F1c2VzIGxpbmtpbmcgZXJyb3JzIGluIGFybXY2 bCBhbmQgYXJtdjdsIChkdWUgdG8gTkVPTikKIGNvbmZpZ3VyZV9hcmdzPSItRHdlcnJvcj1mYWxz ZSAtRHdpdGhfZG1hYnVmPWVuYWJsZWQgLUR3aXRoX2x6ND1lbmFibGVkCgpGcm9tIGJmNWYxMWE4 YzNkOGE5MDU3MzhhZDE2YzI0YWYwNTA2MGQyNTI2NzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3NC8xMTVdIHhwcmE6IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy94cHJhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy94cHJhL3RlbXBsYXRlIGIvc3JjcGtncy94cHJhL3RlbXBsYXRlCmluZGV4IDM5NDcxOGI1NmY2 ODYuLjM0ZmJmZjliMmYxYWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MveHByYS90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3hwcmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICd4cHJhJwogcGtnbmFtZT14cHJhCiB2ZXJzaW9uPTUuMC4zCi1yZXZpc2lvbj0xCityZXZp c2lvbj0yCiBidWlsZF9zdHlsZT1weXRob24zLW1vZHVsZQogbWFrZV9idWlsZF9hcmdzPSItLXdp dGhvdXQtY3VkYV9rZXJuZWxzIC0td2l0aG91dC1jdWRhX3JlYnVpbGQiCiBtYWtlX2luc3RhbGxf YXJncz0iJCh2b3B0X3dpdGggZG9jcykgJHttYWtlX2J1aWxkX2FyZ3N9IgoKRnJvbSBiODNjZGQ2 ZTYwZDg0ZWJlMTc1Y2NiZGMxMjg0NmMwMmViMDBmM2UxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBGcmksIDMxIE1hciAyMDIz IDA5OjA3OjQwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzUvMTE1XSBudi1jb2RlYy1oZWFkZXJz OiB1cGRhdGUgdG8gMTIuMC4xNi4wCgotLS0KIHNyY3BrZ3MvbnYtY29kZWMtaGVhZGVycy90ZW1w bGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUgYi9z cmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUKaW5kZXggM2Q0MjJhNjFlNDg5MS4uMjUx ZTA1N2Y4MjZmYiAxMDA2NDQKLS0tIGEvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvbnYtY29kZWMtaGVhZGVycy90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ252LWNvZGVjLWhlYWRlcnMnCiBwa2duYW1lPW52LWNvZGVj LWhlYWRlcnMKLXZlcnNpb249MTEuMS41LjEKK3ZlcnNpb249MTIuMC4xNi4wCiByZXZpc2lvbj0x CiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIHNob3J0X2Rlc2M9IkZGbXBlZyB2ZXJzaW9uIG9m IGhlYWRlcnMgcmVxdWlyZWQgdG8gaW50ZXJmYWNlIHdpdGggTnZpZGlhcyBjb2RlYyBBUElzIgpA QCAtOCw3ICs4LDcgQEAgbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3Jn PiIKIGxpY2Vuc2U9Ik1JVCIKIGhvbWVwYWdlPSJodHRwOi8vZ2l0LnZpZGVvbGFuLm9yZy8/cD1m Zm1wZWcvbnYtY29kZWMtaGVhZGVycy5naXQiCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNv bS9GRm1wZWcvbnYtY29kZWMtaGVhZGVycy9hcmNoaXZlL24ke3ZlcnNpb259LnRhci5neiIKLWNo ZWNrc3VtPWQwOTVmYmQ1NmFhOTM3NzI0NzFhMzIzYmUwZWJlNjU1MDRhMGY0M2YwNmM3NmEzMGI2 ZDI1ZGE3N2IwNmFlOWMKK2NoZWNrc3VtPTJhMTUzM2I2NWY1NWY5ZGE1Mjk1NmZhZjA2MjdlZDNi NzQ4NjhhYzBjN2YyNjk5OTBlZGQyMTM2OTExM2I0OGYKIAogcG9zdF9pbnN0YWxsKCkgewogCXNl ZCAtbiAnNCwyNXAnIGluY2x1ZGUvZmZudmNvZGVjL252RW5jb2RlQVBJLmggPiBMSUNFTlNFCgpG cm9tIDM3ZWNmM2JhNWUxYmI2NmM0ZjJhMDRhZDY1YTliYWFiMTA2ODU4NGIgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZyaSwg MzEgTWFyIDIwMjMgMDk6MDg6NDAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3Ni8xMTVdIG9wZW5p bWFnZWRlbm9pc2U6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9vcGVuaW1h Z2VkZW5vaXNlL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vcGVuaW1hZ2VkZW5vaXNlL3Rl bXBsYXRlIGIvc3JjcGtncy9vcGVuaW1hZ2VkZW5vaXNlL3RlbXBsYXRlCmluZGV4IGI3OTI4MTNk YmE3YzIuLjEwOWRlYjE3MWMzZjcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3BlbmltYWdlZGVub2lz ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVuaW1hZ2VkZW5vaXNlJwogcGtnbmFt ZT1vcGVuaW1hZ2VkZW5vaXNlCiB2ZXJzaW9uPTEuNC4zCi1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBhcmNocz0ieDg2XzY0KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9Imlz cGMgcHl0aG9uMyIKCkZyb20gMTg2ZjQ1YzE1ZWY5MGFmY2JmZmE3NzhjOTQyNWQ0MGRkODgyNTkz ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogTW9uLCAzIEFwciAyMDIzIDIzOjMxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw NzcvMTE1XSBzaG90Y3V0OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc2hv dGN1dC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2hvdGN1dC90ZW1wbGF0ZSBiL3NyY3Br Z3Mvc2hvdGN1dC90ZW1wbGF0ZQppbmRleCAzMzE0MWZiZDg2MmQ3Li5mNDZjYjUzYjZiZmI5IDEw MDY0NAotLS0gYS9zcmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zaG90Y3V0 L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc2hvdGN1dCcK IHBrZ25hbWU9c2hvdGN1dAogdmVyc2lvbj0yMy4wOS4yOQotcmV2aXNpb249MQorcmV2aXNpb249 MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFNIT1RDVVRfVkVSU0lPTj0k e3ZlcnNpb259IgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0Ni10b29scy1kZXZlbCIK CkZyb20gODYyNjIxZjQwYWU3MTQ3M2Q4ZTk0MTg5NjE2YmM1ODEwYWFiYmY0NiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogTW9u LCAzIEFwciAyMDIzIDIzOjMzOjMwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzgvMTE1XSBzaGli b2tlbjI6IHJldmJ1bXAgZm9yIHF0NS01LjE1LjgKCi0tLQogc3JjcGtncy9zaGlib2tlbjIvcGF0 Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaCB8IDEgKwogc3JjcGtncy9zaGli b2tlbjIvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KIDIg ZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9k ZSAxMjAwMDAgc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5 cGFzcy5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0 bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggYi9zcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL2lt cG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4 IDAwMDAwMDAwMDAwMDAuLmVmY2YzMjQ5YmQ4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L3NoaWJva2VuMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCkBAIC0w LDAgKzEgQEAKKy4uLy4uL3B5dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5l cnktYnlwYXNzLnBhdGNoClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUgYi9zcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZQpp bmRleCA4ODNkNmEwODRkODY4Li5mM2MwNmVjMjQ1YTFmIDEwMDY0NAotLS0gYS9zcmNwa2dzL3No aWJva2VuMi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3NoaWJva2VuMicKIHBrZ25hbWU9c2hpYm9r ZW4yCiB2ZXJzaW9uPTUuMTUuMTAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIF9wa2duYW1lPSJw eXNpZGUtc2V0dXAtb3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9ufSIKIGJ1aWxkX3dya3NyYz0ic291 cmNlcy9zaGlib2tlbjIiCiBidWlsZF9zdHlsZT1jbWFrZQoKRnJvbSAzOTcwNzkyZjFhMmY4NDQ3 ODAxNzliYmQzZjI1ZTM5MmVkOGE0ZWFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBNb24sIDMgQXByIDIwMjMgMjM6MzM6NTMg LTA0MDAKU3ViamVjdDogW1BBVENIIDA3OS8xMTVdIHB5dGhvbjMtcHlzaWRlMjogcmV2YnVtcCBm b3IgcXQ1LTUuMTUuOAoKLS0tCiAuLi4vcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFz cy5wYXRjaCAgICAgIHwgMTUgKysrKysrKysrKysrKysrCiBzcmNwa2dzL3B5dGhvbjMtcHlzaWRl Mi90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTYg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv cHl0aG9uMy1weXNpZGUyL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gK CmRpZmYgLS1naXQgYS9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1t YWNoaW5lcnktYnlwYXNzLnBhdGNoIGIvc3JjcGtncy9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9p bXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAwLi42NGM0Mjk1ODQ3NzZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRj aApAQCAtMCwwICsxLDE1IEBACitVc2luZyB0aGlzIHByZXZlbnRzIGFuIGVycm9yIGFyb3VuZCBs aW5lIDIyMCBiZWxvdyBpdC4KKyJBdHRyaWJ1dGVFcnJvcjogbW9kdWxlICdpbXBvcnRsaWInIGhh cyBubyBhdHRyaWJ1dGUgJ21hY2hpbmVyeSciCitUaGUgb2xkIGJhY2t1cCBsb2dpYyBpcyBpbiBw bGFjZSBhbmQgY29tcGlsZXMgd2l0aG91dCBpc3N1ZXMuCistLS0gYS9zb3VyY2VzL3NoaWJva2Vu Mi9saWJzaGlib2tlbi9lbWJlZC9zaWduYXR1cmVfYm9vdHN0cmFwLnB5CTIwMjMtMDQtMDIgMjM6 MDk6MzQuNjg4OTEyNDAyIC0wNDAwCisrKysgYi9zb3VyY2VzL3NoaWJva2VuMi9saWJzaGlib2tl bi9lbWJlZC9zaWduYXR1cmVfYm9vdHN0cmFwLnB5CTIwMjMtMDQtMDIgMjM6MTA6MDMuMzk1NTI5 NTgyIC0wNDAwCitAQCAtMTcwLDkgKzE3MCw2IEBACisKKyAgICAgIyAnemlwc3RyaW5nX3NlcXVl bmNlJyBjb21lcyBmcm9tIHNpZ25hdHVyZS5jcHAKKyAgICAgemlwYnl0ZXMgPSBiYXNlNjQuYjY0 ZGVjb2RlKCcnLmpvaW4oemlwc3RyaW5nX3NlcXVlbmNlKSkKKy0gICAgaWYgc3lzLnZlcnNpb25f aW5mb1swXSA+PSAzOgorLSAgICAgICAgdnppcCA9IHppcGZpbGUuWmlwRmlsZShpby5CeXRlc0lP KHppcGJ5dGVzKSkKKy0gICAgICAgIHJldHVybiBzeXMubWV0YV9wYXRoLCBFbWJlZGRhYmxlWmlw SW1wb3J0ZXIodnppcCkKKworICAgICAjIE9sZCB2ZXJzaW9uIGZvciBQeXRob24gMi43LCBvbmx5 LgorICAgICBpbXBvcnQgb3MKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3Rl bXBsYXRlIGIvc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxhdGUKaW5kZXggMjQ5ZWZhOTA5 ODg0Mi4uNTI2MjY0MzZjZTc1ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9weXRob24zLXB5c2lkZTIv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdweXRob24zLXB5c2lkZTInCiBwa2duYW1lPXB5 dGhvbjMtcHlzaWRlMgogdmVyc2lvbj01LjE1LjEwCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBf cGtnbmFtZT0icHlzaWRlLXNldHVwLW9wZW5zb3VyY2Utc3JjLSR7dmVyc2lvbn0iCiBidWlsZF93 cmtzcmM9InNvdXJjZXMvcHlzaWRlMiIKIGJ1aWxkX3N0eWxlPWNtYWtlCgpGcm9tIGYwMDYyMTM2 ZWJhNTVkNjZkYjc0MjFjZWMyNDRiNTgwOGEyZjBkYWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBBcHIgMjAyMyAx MToxNDozNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDgwLzExNV0ga29ucXVlcm9yOiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlIHwgNCArKy0t CiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlIGIvc3JjcGtncy9rb25xdWVyb3IvdGVt cGxhdGUKaW5kZXggYWJmYTU5ZTZiN2RlZC4uM2NjMjljMTJkYzFkYiAxMDA2NDQKLS0tIGEvc3Jj cGtncy9rb25xdWVyb3IvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9rb25xdWVyb3IvdGVtcGxhdGUK QEAgLTEsMTEgKzEsMTEgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2tvbnF1ZXJvcicKIHBrZ25h bWU9a29ucXVlcm9yCiB2ZXJzaW9uPTIzLjA4LjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1 aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURERVNLVE9QVE9KU09OX0VYRUNVVEFC TEU9L3Vzci9iaW4vZGVza3RvcHRvanNvbiIKIGhvc3RtYWtlZGVwZW5kcz0iZXh0cmEtY21ha2Ut bW9kdWxlcyBweXRob24zIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZSBrZG9jdG9vbHMKLWtjb3Jl YWRkb25zIGtjb25maWcgZ2V0dGV4dCIKKyBrY29yZWFkZG9ucyBrY29uZmlnIGdldHRleHQiCiBt YWtlZGVwZW5kcz0icXQ1LWRldmVsIHF0NS13ZWJlbmdpbmUtZGV2ZWwgcXQ1LWRlY2xhcmF0aXZl LWRldmVsCiAgcXQ1LXdlYmNoYW5uZWwtZGV2ZWwgcXQ1LWxvY2F0aW9uLWRldmVsIGtjbXV0aWxz LWRldmVsIGtkZWxpYnM0c3VwcG9ydC1kZXZlbAogIGthcmNoaXZlLWRldmVsIGtodG1sLWRldmVs IGtkZXN1LWRldmVsIGthY3Rpdml0aWVzNS1kZXZlbCIKCkZyb20gMGRjODdmOGIxOWM1M2M3MjJm ZDcyMThmM2MwYjJkZTM0Nzg5MzdkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCA0IEFwciAyMDIzIDExOjE0OjU4IC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwODEvMTE1XSBxdDUtc3BlZWNoOiByZXZidW1wIGZvciBxdDUt NS4xNS44CgotLS0KIHNyY3BrZ3MvcXQ1LXNwZWVjaC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcXQ1LXNwZWVjaC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1LXNwZWVjaC90ZW1wbGF0ZQppbmRl eCAzZWNkMTBkNTA2NTBjLi4yZDdkNGQ0ZDI0NTM1IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS1z cGVlY2gvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1LXNwZWVjaCcKIHBrZ25hbWU9cXQ1LXNw ZWVjaAogdmVyc2lvbj01LjE1LjcKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIF9jb21taXQ9ZDMy ZjRhNDc5ZDM4YTExZjU0NzU5ODAwNGI5NzVmNDM1NjQyNGExNgogYnVpbGRfc3R5bGU9cW1ha2UK IGNvbmZpZ3VyZV9hcmdzPSItLSAtZmxpdGUgLWZsaXRlLWFsc2EgLXNwZWVjaGQiCgpGcm9tIDNh YmI4ZDEzMzFlOWRhNWFkZTNlNTI5YzIxNTNhZWZiNGE3OTk4OTggTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBBcHIg MjAyMyAxODozODo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDgyLzExNV0gcXQ1LXN0eWxlcGx1 Z2luczogcmV2YnVtcCBmb3IgcXQ1LTUuMTUuOAoKLS0tCiBzcmNwa2dzL3F0NS1zdHlsZXBsdWdp bnMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUg Yi9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUKaW5kZXggOTZlZDk3ZDEyY2QyNC4u MzBkOTM2NjBhMmE0ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0NS1zdHlsZXBsdWdpbnMnCiBwa2duYW1lPXF0NS1z dHlsZXBsdWdpbnMKIHZlcnNpb249NS4wLjAKLXJldmlzaW9uPTIwCityZXZpc2lvbj0yMQogX2dp dHJldj0zMzVkYmVjZTEwM2UyY2JmNmM3Y2Y4MTlhYjY2NzJjMjk1NmIxN2IzCiBidWlsZF9zdHls ZT1xbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1x bWFrZSIKCkZyb20gZGYyNGZkZjRkMDIzMzI5YTU1N2MyMmQ4ZjNhMjAzNzc2MTNhN2FkNiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogU3VuLCA3IE1heSAyMDIzIDIwOjE1OjAzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODMvMTE1 XSBxdDYtd2ViZW5naW5lOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcXQ2 LXdlYmVuZ2luZS90ZW1wbGF0ZSB8IDEgKwogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlIGIvc3JjcGtncy9x dDYtd2ViZW5naW5lL3RlbXBsYXRlCmluZGV4IDk4Y2RjNjgwNDgxYjMuLmYzM2E3MWJkMmEwZGMg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L3F0Ni13ZWJlbmdpbmUvdGVtcGxhdGUKQEAgLTE1OCw2ICsxNTgsNyBAQCBwcmVfaW5zdGFsbCgp IHsKIH0KIAogcG9zdF9pbnN0YWxsKCkgeworCXZsaWNlbnNlIExJQ0VOU0VTL0JTRC0zLUNsYXVz ZS50eHQKIAlsb2NhbCBfZmlsZQogCWZpbmQgIiR7REVTVERJUn0iL3Vzci9saWIvcXQ2L2V4YW1w bGVzIFwKIAkJLXBhdGggJyovbGliL3F0Ni8qKi9saWIvcXQ2LyonIC10eXBlIGYgfAoKRnJvbSBi NmRjNGU5YmJiY2U5M2M1NWZlNGU5NzhlMDJjNWUwNWY3NjZmNTY2IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTYXQsIDMgSnVu IDIwMjMgMDg6MjA6MjIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4NC8xMTVdIGd0azQ6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9ndGs0L3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9ndGs0L3RlbXBsYXRlIGIvc3JjcGtncy9ndGs0L3RlbXBsYXRlCmluZGV4IDZhNGUy MDM1N2E4NmYuLmVjMGMxM2QyY2M1YjAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3RrNC90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2d0azQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdndGs0JwogcGtnbmFtZT1ndGs0CiB2ZXJzaW9uPTQuMTIuMwotcmV2aXNpb249 MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KIGJ1aWxkX2hlbHBlcj0iZ2lyIgogY29u ZmlndXJlX2FyZ3M9Ii1EbWFuLXBhZ2VzPXRydWUgLURkb2N1bWVudGF0aW9uPXRydWUgLURidWls ZC10ZXN0cz1mYWxzZQoKRnJvbSBiYzE4Nzk4ZDU2NGI0YTQ0ZWNjNDZjNDJjN2RjNjE2Zjc2Nzgx ZjJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBTdW4sIDQgSnVuIDIwMjMgMTE6Mjg6MjYgLTA0MDAKU3ViamVjdDogW1BBVENI IDA4NS8xMTVdIHNpcmlsOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc2ly aWwvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NpcmlsL3RlbXBsYXRlIGIvc3JjcGtncy9z aXJpbC90ZW1wbGF0ZQppbmRleCA4NDMzMmY3OWQwNjBkLi42Mjc1MGRkMjQ3NTQ4IDEwMDY0NAot LS0gYS9zcmNwa2dzL3NpcmlsL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzaXJpbCcKIHBrZ25hbWU9c2ly aWwKIHZlcnNpb249MC45LjEyCi1yZXZpc2lvbj0xMAorcmV2aXNpb249MTEKIGJ1aWxkX3N0eWxl PWdudS1jb25maWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBpbnRsdG9vbCBhdXRv Y29uZiBhdXRvbWFrZSBnZXR0ZXh0LWRldmVsIgogbWFrZWRlcGVuZHM9ImZmdHctZGV2ZWwgbGli Y29uZmlnLWRldmVsIGxpYm9wZW5jdi1kZXZlbCBsaWJmZm1zMi1kZXZlbAoKRnJvbSA2ZDgxYTYx YjI4NDJmZjVkYzJlMzIyM2EzNWIwMmMyMTg4OTdiMjNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUaHUsIDIyIEp1biAyMDIz IDEwOjI1OjAyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODYvMTE1XSBrZGVubGl2ZTogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2tkZW5saXZlL3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9rZGVubGl2ZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mva2RlbmxpdmUvdGVtcGxhdGUK aW5kZXggZWM1ZmU3NTg2MDk0OC4uZTY5ZWNmZjMxZjI3MiAxMDA2NDQKLS0tIGEvc3JjcGtncy9r ZGVubGl2ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tkZW5saXZlL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAna2RlbmxpdmUnCiBwa2duYW1lPWtkZW5saXZl CiB2ZXJzaW9uPTIzLjA4LjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNt YWtlCiBob3N0bWFrZWRlcGVuZHM9IgogIGV4dHJhLWNtYWtlLW1vZHVsZXMga2NvbmZpZyBrY29y ZWFkZG9ucyBrZG9jdG9vbHMgcGtnLWNvbmZpZyBweXRob24zCgpGcm9tIDFkMzg2YzVhMzlkMjk0 MGU3MWE0MjYyM2U4ZWQ0Y2JiMTFkMjkzODYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAxMToxNzoz NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg3LzExNV0gREVMRVRFOiBpbnRlbF9wYWNrYWdlcwoK LS0tCiBjb21tb24vc2hsaWJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIg Kwogc3JjcGtncy9pbnRlbC1nbW1saWIvdGVtcGxhdGUgICAgICAgICAgICAgICAgIHwgICAyICst CiAuLi5tbW9uLUVuYWJsZS1NTUMtaW4tZnJlZS1rZXJuZWwtYnVpbGQucGF0Y2ggfCAxMjUgKysr KysrKysrKysrKysrKysrCiBzcmNwa2dzL2ludGVsLW1lZGlhLWRyaXZlci90ZW1wbGF0ZSAgICAg ICAgICAgfCAgIDYgKy0KIHNyY3BrZ3MvaW50ZWwtbWVkaWEtc2RrL3BhdGNoZXMvbXVzbC5wYXRj aCAgICB8ICAxNCArKwogc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdGVtcGxhdGUgICAgICAgICAg ICAgIHwgIDM3ICsrKysrKwogc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdXBkYXRlICAgICAgICAg ICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGlibWZ4ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYm1meC1kZXZlbCAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDEgKwogc3JjcGtncy9vbmV2cGwtZGV2ZWwgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAxICsKIHNyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS1kZXZlbCAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmNwa2dzL29uZXZwbC1pbnRlbC1ncHUvdGVtcGxhdGUgICAgICAgICAgICAgfCAg MjcgKysrKwogc3JjcGtncy9vbmV2cGwvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwg IDM0ICsrKysrCiAxMyBmaWxlcyBjaGFuZ2VkLCAyNDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ludGVsLW1lZGlhLWRyaXZlci9wYXRj aGVzLzAwMDEtTWVkaWEtQ29tbW9uLUVuYWJsZS1NTUMtaW4tZnJlZS1rZXJuZWwtYnVpbGQucGF0 Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ludGVsLW1lZGlhLXNkay9wYXRjaGVzL211 c2wucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ludGVsLW1lZGlhLXNkay90ZW1w bGF0ZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaW50ZWwtbWVkaWEtc2RrL3VwZGF0ZQog Y3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGlibWZ4CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3Jj cGtncy9saWJtZngtZGV2ZWwKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL29uZXZwbC1kZXZl bAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS1kZXZlbAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS90ZW1wbGF0ZQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3Mvb25ldnBsL3RlbXBsYXRlCgpkaWZmIC0tZ2l0IGEvY29tbW9u L3NobGlicyBiL2NvbW1vbi9zaGxpYnMKaW5kZXggN2IyMGVjNDM1NzgxZS4uNzlhZmY5OTA3ZmYz OCAxMDA2NDQKLS0tIGEvY29tbW9uL3NobGlicworKysgYi9jb21tb24vc2hsaWJzCkBAIC00MjU0 LDYgKzQyNTQsOCBAQCBsaWJnc29hcHNzbCsrLTIuOC4xMjQuc28gZ3NvYXAtMi44LjEyNF8xCiBs aWJqeGwuc28uMC44IGxpYmp4bC0wLjguMl8xCiBsaWJqeGxfZGVjLnNvLjAuOCBsaWJqeGwtMC44 LjJfMQogbGlianhsX3RocmVhZHMuc28uMC44IGxpYmp4bC0wLjguMl8xCitsaWJtZnguc28uMSBs aWJtZngtMjIuNi40XzEKK2xpYnZwbC5zby4yIG9uZXZwbC0yMDIzLjEuMl8xCiBsaWJ0ZXh0LWVu Z2luZS0wLjEuc28uMCB0ZXh0LWVuZ2luZS0wLjEuMV8xCiBsaWJ2bWFmLnNvLjEgdm1hZi0yLjMu MV8xCiBsaWJsYzMuc28uMSBsaWJsYzMtMS4wLjNfMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRl bC1nbW1saWIvdGVtcGxhdGUgYi9zcmNwa2dzL2ludGVsLWdtbWxpYi90ZW1wbGF0ZQppbmRleCBi OWRmNjQyZjYzMjBmLi4zZDY0YmU3NDE1Mjk4IDEwMDY0NAotLS0gYS9zcmNwa2dzL2ludGVsLWdt bWxpYi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ludGVsLWdtbWxpYi90ZW1wbGF0ZQpAQCAtMTQs NyArMTQsNyBAQCBidWlsZF9zdHlsZT1jbWFrZQogIyBjb21waWxlcnMgZmxhZyBpbiB1c2UuCiBj b25maWd1cmVfYXJncz0iLVduby1kZXYiCiBzaG9ydF9kZXNjPSJJbnRlbCBHcmFwaGljcyBNZW1v cnkgTWFuYWdlbWVudCBMaWJyYXJ5IgotbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lk bGludXgub3JnPiIKK21haW50YWluZXI9IlN0ZWZhbm8gUmFnbmkgPHN0M3I0Z0Bwcm90b25tYWls LmNvbT4iCiBsaWNlbnNlPSJNSVQiCiBob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL2ludGVs L2dtbWxpYiIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2dtbWxpYi9hcmNo aXZlL2ludGVsLWdtbWxpYi0ke3ZlcnNpb259LnRhci5neiIKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv aW50ZWwtbWVkaWEtZHJpdmVyL3BhdGNoZXMvMDAwMS1NZWRpYS1Db21tb24tRW5hYmxlLU1NQy1p bi1mcmVlLWtlcm5lbC1idWlsZC5wYXRjaCBiL3NyY3BrZ3MvaW50ZWwtbWVkaWEtZHJpdmVyL3Bh dGNoZXMvMDAwMS1NZWRpYS1Db21tb24tRW5hYmxlLU1NQy1pbi1mcmVlLWtlcm5lbC1idWlsZC5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi41MjVmYjY4ODcy MmM4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvcGF0Y2hl cy8wMDAxLU1lZGlhLUNvbW1vbi1FbmFibGUtTU1DLWluLWZyZWUta2VybmVsLWJ1aWxkLnBhdGNo CkBAIC0wLDAgKzEsMTI1IEBACitGcm9tIGU2OGZlYWI3ZGIwMzY4MzhkOTUyMWJhM2I5ZjAwNzE3 YzM3YzAyNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYXlZYW5nIDxqYXkueWFu Z0BpbnRlbC5jb20+CitEYXRlOiBUdWUsIDIxIE1hciAyMDIzIDE3OjE3OjU1ICswODAwCitTdWJq ZWN0OiBbUEFUQ0hdIFtNZWRpYSBDb21tb25dIEVuYWJsZSBNTUMgaW4gZnJlZSBrZXJuZWwgYnVp bGQKKworQWRkIG1tYyBidWlsZCBkZWZpbml0aW9uIGluIGZyZWUga2VybmVsIGJ1aWxkCistLS0K KyBtZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9jb2RlYy9oYWwvbWVkaWFfc3Jjcy5jbWFrZSAg ICAgICAgICB8IDIgKy0KKyBtZWRpYV9kcml2ZXIvY21ha2UvbGludXgvbWVkaWFfZmVhdHVyZV9m bGFnc19saW51eC5jbWFrZSAgICAgICB8IDMgKy0tCisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlf Ynh0L21lZGlhX2ludGVyZmFjZXNfZzlfYnh0LmNwcCAgICAgICAgfCAyICstCisgLi4uL21lZGlh X2ludGVyZmFjZXNfbTlfY2ZsL21lZGlhX2ludGVyZmFjZXNfZzlfY2ZsLmNwcCAgICAgICAgfCAy ICstCisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlfZ2xrL21lZGlhX2ludGVyZmFjZXNfZzlfZ2xr LmNwcCAgICAgICAgfCAyICstCisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlfa2JsL21lZGlhX2lu dGVyZmFjZXNfZzlfa2JsLmNwcCAgICAgICAgfCAyICstCisgLi4uL21lZGlhX2ludGVyZmFjZXNf bTlfc2tsL21lZGlhX2ludGVyZmFjZXNfZzlfc2tsLmNwcCAgICAgICAgfCAyICstCisgNyBmaWxl cyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQg YS9tZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9jb2RlYy9oYWwvbWVkaWFfc3Jjcy5jbWFrZSBi L21lZGlhX2RyaXZlci9hZ25vc3RpYy9nZW45L2NvZGVjL2hhbC9tZWRpYV9zcmNzLmNtYWtlCitp bmRleCA4YmIzNmJhZmUuLjc4OTAyYTIyZCAxMDA2NDQKKy0tLSBhL21lZGlhX2RyaXZlci9hZ25v c3RpYy9nZW45L2NvZGVjL2hhbC9tZWRpYV9zcmNzLmNtYWtlCisrKysgYi9tZWRpYV9kcml2ZXIv YWdub3N0aWMvZ2VuOS9jb2RlYy9oYWwvbWVkaWFfc3Jjcy5jbWFrZQorQEAgLTI3LDcgKzI3LDcg QEAgc2V0KFRNUF8xX0hFQURFUlNfCisgICAgICR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vY29k ZWNoYWxfaHdfZzlfWC5oCisgKQorIAorLWlmKCR7TU1DX1N1cHBvcnRlZH0gU1RSRVFVQUwgInll cyIpCisraWYoJHtNTUNfU3VwcG9ydGVkfSBTVFJFUVVBTCAieWVzIiBBTkQgRU5BQkxFX05PTkZS RUVfS0VSTkVMUyBBTkQgRU5BQkxFX0tFUk5FTFMpCisgICAgIHNldChUTVBfMV9TT1VSQ0VTXwor ICAgICAgICAgJHtUTVBfMV9TT1VSQ0VTX30KKyAgICAgICAgICR7Q01BS0VfQ1VSUkVOVF9MSVNU X0RJUn0vY29kZWNoYWxfbWVtZGVjb21wX2c5LmNwcAorZGlmZiAtLWdpdCBhL21lZGlhX2RyaXZl ci9jbWFrZS9saW51eC9tZWRpYV9mZWF0dXJlX2ZsYWdzX2xpbnV4LmNtYWtlIGIvbWVkaWFfZHJp dmVyL2NtYWtlL2xpbnV4L21lZGlhX2ZlYXR1cmVfZmxhZ3NfbGludXguY21ha2UKK2luZGV4IGRl MGNhODUzZi4uODEyMWVhNjBjIDEwMDY0NAorLS0tIGEvbWVkaWFfZHJpdmVyL2NtYWtlL2xpbnV4 L21lZGlhX2ZlYXR1cmVfZmxhZ3NfbGludXguY21ha2UKKysrKyBiL21lZGlhX2RyaXZlci9jbWFr ZS9saW51eC9tZWRpYV9mZWF0dXJlX2ZsYWdzX2xpbnV4LmNtYWtlCitAQCAtMzUsNyArMzUsNiBA QCBpZihOT1QgRU5BQkxFX0tFUk5FTFMgT1IgTk9UIEVOQUJMRV9OT05GUkVFX0tFUk5FTFMpCisg ICAgIGJzX3NldF9pZl91bmRlZmluZWQoSEVWQ19FbmNvZGVfVk1FX1N1cHBvcnRlZCAibm8iKQor ICAgICBic19zZXRfaWZfdW5kZWZpbmVkKE1QRUcyX0VuY29kZV9WTUVfU3VwcG9ydGVkICJubyIp CisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoQ01SVF9IRVZDX0VOQ19GRUlfU3VwcG9ydGVkICJu byIpCistICAgIGJzX3NldF9pZl91bmRlZmluZWQoTU1DX1N1cHBvcnRlZCAibm8iKQorICAgICBi c19zZXRfaWZfdW5kZWZpbmVkKFZDMV9EZWNvZGVfU3VwcG9ydGVkICJubyIpCisgICAgIGJzX3Nl dF9pZl91bmRlZmluZWQoRGVjb2RlX1Byb2Nlc3NpbmdfU3VwcG9ydGVkICJubyIpCisgICAgIGJz X3NldF9pZl91bmRlZmluZWQoS2VybmVsX0F1dG9fRGVub2lzZV9TdXBwb3J0ZWQgIm5vIikKK0BA IC00Niw3ICs0NSw2IEBAIGVsc2UoKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKEhFVkNfRW5j b2RlX1ZNRV9TdXBwb3J0ZWQgIiR7RW5jb2RlX1ZNRV9TdXBwb3J0ZWR9IikKKyAgICAgYnNfc2V0 X2lmX3VuZGVmaW5lZChNUEVHMl9FbmNvZGVfVk1FX1N1cHBvcnRlZCAiJHtFbmNvZGVfVk1FX1N1 cHBvcnRlZH0iKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKENNUlRfSEVWQ19FTkNfRkVJX1N1 cHBvcnRlZCAieWVzIikKKy0gICAgYnNfc2V0X2lmX3VuZGVmaW5lZChNTUNfU3VwcG9ydGVkICJ5 ZXMiKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKFZDMV9EZWNvZGVfU3VwcG9ydGVkICJ5ZXMi KQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKERlY29kZV9Qcm9jZXNzaW5nX1N1cHBvcnRlZCAi eWVzIikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChLZXJuZWxfQXV0b19EZW5vaXNlX1N1cHBv cnRlZCAieWVzIikKK0BAIC02NCw2ICs2Miw3IEBAIGJzX3NldF9pZl91bmRlZmluZWQoVlA5X0Rl Y29kZV9TdXBwb3J0ZWQgInllcyIpCisgYnNfc2V0X2lmX3VuZGVmaW5lZChWUF9TRkNfU3VwcG9y dGVkICJ5ZXMiKQorIGJzX3NldF9pZl91bmRlZmluZWQoQ29tbW9uX0VuY29kZV9TdXBwb3J0ZWQg InllcyIpCisgYnNfc2V0X2lmX3VuZGVmaW5lZChNZWRpYV9TY2FsYWJpbGl0eV9TdXBwb3J0ZWQg InllcyIpCisrYnNfc2V0X2lmX3VuZGVmaW5lZChNTUNfU3VwcG9ydGVkICJ5ZXMiKQorIAorICMg ZmVhdHVyZXMgY29udHJvbGxlZCBieSBnbG9iYWwgZmxhZyBFbmNvZGVfVkRFbmNfU3VwcG9ydGVk CisgYnNfc2V0X2lmX3VuZGVmaW5lZChBVkNfRW5jb2RlX1ZERW5jX1N1cHBvcnRlZCAiJHtFbmNv ZGVfVkRFbmNfU3VwcG9ydGVkfSIpCitkaWZmIC0tZ2l0IGEvbWVkaWFfZHJpdmVyL21lZGlhX2lu dGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2J4dC9tZWRpYV9pbnRlcmZhY2VzX2c5X2J4dC5j cHAgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfYnh0 L21lZGlhX2ludGVyZmFjZXNfZzlfYnh0LmNwcAoraW5kZXggM2YzMDZlZTJhLi44ZTRjMGY1MzIg MTAwNjQ0CistLS0gYS9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFj ZXNfbTlfYnh0L21lZGlhX2ludGVyZmFjZXNfZzlfYnh0LmNwcAorKysrIGIvbWVkaWFfZHJpdmVy L21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2J4dC9tZWRpYV9pbnRlcmZhY2Vz X2c5X2J4dC5jcHAKK0BAIC0xMzUsNyArMTM1LDcgQEAgTU9TX1NUQVRVUyBNaHdJbnRlcmZhY2Vz RzlCeHQ6OkluaXRpYWxpemUoCisgCisgICAgIHJldHVybiBNT1NfU1RBVFVTX1NVQ0NFU1M7Cisg fQorLSNpZmRlZiBfTU1DX1NVUFBPUlRFRAorKyNpZiBkZWZpbmVkKF9NTUNfU1VQUE9SVEVEKSAm JiBkZWZpbmVkKEVOQUJMRV9LRVJORUxTKSAmJiAhZGVmaW5lZChfRlVMTF9PUEVOX1NPVVJDRSkK KyBzdGF0aWMgYm9vbCBieHRSZWdpc3RlcmVkTW1kID0KKyAgICAgTWVkaWFGYWN0b3J5PHVpbnQz Ml90LCBNbWREZXZpY2U+OjoKKyAgICAgUmVnaXN0ZXI8TW1kRGV2aWNlRzlCeHQ+KCh1aW50MzJf dClJR0ZYX0JST1hUT04pOworZGlmZiAtLWdpdCBhL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZh Y2UvbWVkaWFfaW50ZXJmYWNlc19tOV9jZmwvbWVkaWFfaW50ZXJmYWNlc19nOV9jZmwuY3BwIGIv bWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2NmbC9tZWRp YV9pbnRlcmZhY2VzX2c5X2NmbC5jcHAKK2luZGV4IGI4ZmExZWVjMC4uODRlMGZhZDFkIDEwMDY0 NAorLS0tIGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205 X2NmbC9tZWRpYV9pbnRlcmZhY2VzX2c5X2NmbC5jcHAKKysrKyBiL21lZGlhX2RyaXZlci9tZWRp YV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9jZmwvbWVkaWFfaW50ZXJmYWNlc19nOV9j ZmwuY3BwCitAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgYm9vbCBjZmxSZWdpc3RlcmVkTWh3ID0K KyAgICAgTWVkaWFGYWN0b3J5PHVpbnQzMl90LCBNaHdJbnRlcmZhY2VzPjo6CisgICAgIFJlZ2lz dGVyPE1od0ludGVyZmFjZXNHOUtibD4oKHVpbnQzMl90KUlHRlhfQ09GRkVFTEFLRSk7CisgCist I2lmZGVmIF9NTUNfU1VQUE9SVEVECisrI2lmIGRlZmluZWQoX01NQ19TVVBQT1JURUQpICYmIGRl ZmluZWQoRU5BQkxFX0tFUk5FTFMpICYmICFkZWZpbmVkKF9GVUxMX09QRU5fU09VUkNFKQorIHN0 YXRpYyBib29sIGNmbFJlZ2lzdGVyZWRNbWQgPQorICAgICBNZWRpYUZhY3Rvcnk8dWludDMyX3Qs IE1tZERldmljZT46OgorICAgICBSZWdpc3RlcjxNbWREZXZpY2VHOUtibD4oKHVpbnQzMl90KUlH RlhfQ09GRkVFTEFLRSk7CitkaWZmIC0tZ2l0IGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFj ZS9tZWRpYV9pbnRlcmZhY2VzX205X2dsay9tZWRpYV9pbnRlcmZhY2VzX2c5X2dsay5jcHAgYi9t ZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfZ2xrL21lZGlh X2ludGVyZmFjZXNfZzlfZ2xrLmNwcAoraW5kZXggZGU4MWU2MDkxLi4yNjM4Y2IzYTYgMTAwNjQ0 CistLS0gYS9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlf Z2xrL21lZGlhX2ludGVyZmFjZXNfZzlfZ2xrLmNwcAorKysrIGIvbWVkaWFfZHJpdmVyL21lZGlh X2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2dsay9tZWRpYV9pbnRlcmZhY2VzX2c5X2ds ay5jcHAKK0BAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBib29sIGdsa1JlZ2lzdGVyZWRNaHcgPQor ICAgICBNZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1od0ludGVyZmFjZXM+OjoKKyAgICAgUmVnaXN0 ZXI8TWh3SW50ZXJmYWNlc0c5S2JsPigodWludDMyX3QpSUdGWF9HRU1JTklMQUtFKTsKKyAKKy0j aWZkZWYgX01NQ19TVVBQT1JURUQKKysjaWYgZGVmaW5lZChfTU1DX1NVUFBPUlRFRCkgJiYgZGVm aW5lZChFTkFCTEVfS0VSTkVMUykgJiYgIWRlZmluZWQoX0ZVTExfT1BFTl9TT1VSQ0UpCisgc3Rh dGljIGJvb2wgZ2xrUmVnaXN0ZXJlZE1tZCA9CisgICAgIE1lZGlhRmFjdG9yeTx1aW50MzJfdCwg TW1kRGV2aWNlPjo6CisgICAgIFJlZ2lzdGVyPE1tZERldmljZUc5S2JsPigodWludDMyX3QpSUdG WF9HRU1JTklMQUtFKTsKK2RpZmYgLS1naXQgYS9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNl L21lZGlhX2ludGVyZmFjZXNfbTlfa2JsL21lZGlhX2ludGVyZmFjZXNfZzlfa2JsLmNwcCBiL21l ZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9rYmwvbWVkaWFf aW50ZXJmYWNlc19nOV9rYmwuY3BwCitpbmRleCA5OWQ3ODYxODUuLjRlOWM2ZTdmMSAxMDA2NDQK Ky0tLSBhL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9r YmwvbWVkaWFfaW50ZXJmYWNlc19nOV9rYmwuY3BwCisrKysgYi9tZWRpYV9kcml2ZXIvbWVkaWFf aW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfa2JsL21lZGlhX2ludGVyZmFjZXNfZzlfa2Js LmNwcAorQEAgLTEzMSw3ICsxMzEsNyBAQCBNT1NfU1RBVFVTIE1od0ludGVyZmFjZXNHOUtibDo6 SW5pdGlhbGl6ZSgKKyAKKyAgICAgcmV0dXJuIE1PU19TVEFUVVNfU1VDQ0VTUzsKKyB9CistI2lm ZGVmIF9NTUNfU1VQUE9SVEVECisrI2lmIGRlZmluZWQoX01NQ19TVVBQT1JURUQpICYmIGRlZmlu ZWQoRU5BQkxFX0tFUk5FTFMpICYmICFkZWZpbmVkKF9GVUxMX09QRU5fU09VUkNFKQorIHN0YXRp YyBib29sIGtibFJlZ2lzdGVyZWRNbWQgPQorICAgICBNZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1t ZERldmljZT46OgorICAgICBSZWdpc3RlcjxNbWREZXZpY2VHOUtibD4oKHVpbnQzMl90KUlHRlhf S0FCWUxBS0UpOworZGlmZiAtLWdpdCBhL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVk aWFfaW50ZXJmYWNlc19tOV9za2wvbWVkaWFfaW50ZXJmYWNlc19nOV9za2wuY3BwIGIvbWVkaWFf ZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X3NrbC9tZWRpYV9pbnRl cmZhY2VzX2c5X3NrbC5jcHAKK2luZGV4IGUyNTIwZWRmNy4uNGIwMDEyYzY0IDEwMDY0NAorLS0t IGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X3NrbC9t ZWRpYV9pbnRlcmZhY2VzX2c5X3NrbC5jcHAKKysrKyBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRl cmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9za2wvbWVkaWFfaW50ZXJmYWNlc19nOV9za2wuY3Bw CitAQCAtMTM5LDcgKzEzOSw3IEBAIE1PU19TVEFUVVMgTWh3SW50ZXJmYWNlc0c5U2tsOjpJbml0 aWFsaXplKAorIAorICAgICByZXR1cm4gTU9TX1NUQVRVU19TVUNDRVNTOworIH0KKy0jaWZkZWYg X01NQ19TVVBQT1JURUQKKysjaWYgZGVmaW5lZChfTU1DX1NVUFBPUlRFRCkgJiYgZGVmaW5lZChF TkFCTEVfS0VSTkVMUykgJiYgIWRlZmluZWQoX0ZVTExfT1BFTl9TT1VSQ0UpCisgc3RhdGljIGJv b2wgc2tsUmVnaXN0ZXJlZE1tZCA9CisgICAgIE1lZGlhRmFjdG9yeTx1aW50MzJfdCwgTW1kRGV2 aWNlPjo6CisgICAgIFJlZ2lzdGVyPE1tZERldmljZUc5U2tsPigodWludDMyX3QpSUdGWF9TS1lM QUtFKTsKKy0tIAorMi40MC4wCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW50ZWwtbWVkaWEtZHJp dmVyL3RlbXBsYXRlIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvdGVtcGxhdGUKaW5kZXgg MDZiN2MxOWEwYmEwNy4uMTczNWI5MGM2NWNlNSAxMDA2NDQKLS0tIGEvc3JjcGtncy9pbnRlbC1t ZWRpYS1kcml2ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvdGVt cGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdpbnRlbC1tZWRpYS1k cml2ZXInCiBwa2duYW1lPWludGVsLW1lZGlhLWRyaXZlcgotdmVyc2lvbj0yMy4zLjUKK3ZlcnNp b249MjIuNi40CiByZXZpc2lvbj0xCiBhcmNocz0ieDg2XzY0KiIKIGJ1aWxkX3N0eWxlPWNtYWtl CkBAIC04LDExICs4LDExIEBAIGNvbmZpZ3VyZV9hcmdzPSItV25vLWRldiAtREVOQUJMRV9OT05G UkVFX0tFUk5FTFM9JCh2b3B0X2lmIG5vbmZyZWUgT04gT0ZGKSIKIGhvc3RtYWtlZGVwZW5kcz0i cGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJsaWJ2YS1kZXZlbCBsaWJYMTEtZGV2ZWwgaW50ZWwt Z21tbGliLWRldmVsIGxpYnBjaWFjY2Vzcy1kZXZlbCIKIHNob3J0X2Rlc2M9IkludGVsIE1lZGlh IERyaXZlciBmb3IgVkFBUEkgKEJyb2Fkd2VsbCspIgotbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9y cGhhbkB2b2lkbGludXgub3JnPiIKK21haW50YWluZXI9IlN0ZWZhbm8gUmFnbmkgPHN0M3I0Z0Bw cm90b25tYWlsLmNvbT4iCiBsaWNlbnNlPSJNSVQsIEJTRC0zLUNsYXVzZSIKIGhvbWVwYWdlPSJo dHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVyIgogZGlzdGZpbGVzPSJodHRwczov L2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVyL2FyY2hpdmUvaW50ZWwtbWVkaWEtJHt2ZXJz aW9ufS50YXIuZ3oiCi1jaGVja3N1bT02N2ZkMTU2NTRiYjNjNTk2ZmViOGM4NWU4MTIyMWRlNTYz MmUxMWY1OTg0MjFjMzVhZGM0NDUzZDcyN2YwMTMwCitjaGVja3N1bT0wYzA0YjlkNzRiOTJkZTQx ZmQ0MDliNjI5MTNjZTRhZmQ3OTkyMzZjMGI2YmMxOTgzYTQ5Njk5MDc2NGU1ZDkwCiAKIGJ1aWxk X29wdGlvbnM9Im5vbmZyZWUiCiBkZXNjX29wdGlvbl9ub25mcmVlPSJFbmFibGUgbm9uZnJlZSBr ZXJuZWxzIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvcGF0Y2hlcy9tdXNs LnBhdGNoIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvcGF0Y2hlcy9tdXNsLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjRhZTcwOTI0Yjc0NGYKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL2ludGVsLW1lZGlhLXNkay9wYXRjaGVzL211c2wucGF0Y2gK QEAgLTAsMCArMSwxNCBAQAorLS0tIGEvdG9vbHMvdHJhY2VyL3RyYWNlci90cmFjZXJfbGludXgu Y3BwCTIwMjItMTEtMTggMDM6MDI6NTkuMDAwMDAwMDAwIC0wNTAwCisrKysgYi90b29scy90cmFj ZXIvdHJhY2VyL3RyYWNlcl9saW51eC5jcHAJMjAyMi0xMi0xOCAwMTo0NDo1MS4zNDE1NDI1NzIg LTA1MDAKK0BAIC0zMiw2ICszMiwxMSBAQAorICNpbmNsdWRlIDxkbGZjbi5oPgorICNpbmNsdWRl ICJ0cmFjZXIuaCIKKworKyNpZm5kZWYgUlRMRF9ERUVQQklORAorKy8vIG11c2wgbmVpdGhlciBk ZWZpbmVzIG5vciBjYW4gdXNlIFJUTERfREVFUEJJTkQKKysjZGVmaW5lIFJUTERfREVFUEJJTkQg MAorKyNlbmRpZgorKworICNpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICAjZGVmaW5lIExJQk1G WEhXICJsaWJtZnhodzMyLnNvLjEiCisgI2VsaWYgZGVmaW5lZChfX3g4Nl82NF9fKQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdGVtcGxhdGUgYi9zcmNwa2dzL2ludGVsLW1l ZGlhLXNkay90ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw Li43YWVhYjUxODAyZjhlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1z ZGsvdGVtcGxhdGUKQEAgLTAsMCArMSwzNyBAQAorIyBUZW1wbGF0ZSBmaWxlIGZvciAnaW50ZWwt bWVkaWEtc2RrJworcGtnbmFtZT1pbnRlbC1tZWRpYS1zZGsKK3ZlcnNpb249MjIuNi40CityZXZp c2lvbj0xCithcmNocz0ieDg2XzY0KiIKK2J1aWxkX3N0eWxlPWNtYWtlCitjb25maWd1cmVfYXJn cz0iLVduby1kZXYgLURCVUlMRF9TQU1QTEVTPU9GRiAtREJVSUxEX1RFU1RTPU9OIgoraG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIgorbWFrZWRlcGVuZHM9ImxpYnZhLWRldmVsIGxpYmRybS1k ZXZlbCBpbnRlbC1nbW1saWItZGV2ZWwiCitzaG9ydF9kZXNjPSJJbnRlbCBNZWRpYSBTREsiCitt YWludGFpbmVyPSJTdGVmYW5vIFJhZ25pIDxzdDNyNGdAcHJvdG9ubWFpbC5jb20+IgorbGljZW5z ZT0iTUlULCBCU0QtMy1DbGF1c2UiCitob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL0ludGVs LU1lZGlhLVNESy9NZWRpYVNESyIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL0ludGVs LU1lZGlhLVNESy9NZWRpYVNESy9hcmNoaXZlL3JlZnMvdGFncy9pbnRlbC1tZWRpYXNkay0ke3Zl cnNpb259LnRhci5neiIKK2NoZWNrc3VtPTE5N2FjZDA1NmY4MWU5ZmYxYzI3MDY4ZDUwZThjODRj MjAxNGQ5NGM3YWMxN2NhZDY5ZDVjMmQ2MWU0NDVmZDMKKworcG9zdF9pbnN0YWxsKCkgeworCXZs aWNlbnNlIExJQ0VOU0UKK30KKworbGlibWZ4X3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iJHttYWtl ZGVwZW5kc30gJHtzb3VyY2Vwa2d9LSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJc2hvcnRfZGVz Yz0iSW50ZWwgTWVkaWFTREsgbWZ4IGxpYiIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNy L2xpYi9tZngKKwkJdm1vdmUgInVzci9saWIvbGlibWZ4Ki5zbyoiCisJfQorfQorCitsaWJtZngt ZGV2ZWxfcGFja2FnZSgpIHsKKwlkZXBlbmRzPSIke21ha2VkZXBlbmRzfSAke3NvdXJjZXBrZ30t JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmls ZXMiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9pbmNsdWRlCisJCXZtb3ZlIHVzci9s aWIvcGtnY29uZmlnCisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsv dXBkYXRlIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdXBkYXRlCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjQzNGEyYmM2N2Y3YTEKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL2ludGVsLW1lZGlhLXNkay91cGRhdGUKQEAgLTAsMCArMSBAQAorcGtnbmFtZT1p bnRlbC1tZWRpYQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJtZnggYi9zcmNwa2dzL2xpYm1meApu ZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44ZmZjNzA5OWMyMjcyCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJtZngKQEAgLTAsMCArMSBAQAoraW50ZWwtbWVk aWEtc2RrClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9s aWJtZngtZGV2ZWwgYi9zcmNwa2dzL2xpYm1meC1kZXZlbApuZXcgZmlsZSBtb2RlIDEyMDAwMApp bmRleCAwMDAwMDAwMDAwMDAwLi44ZmZjNzA5OWMyMjcyCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9saWJtZngtZGV2ZWwKQEAgLTAsMCArMSBAQAoraW50ZWwtbWVkaWEtc2RrClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vbmV2cGwtZGV2ZWwgYi9z cmNwa2dzL29uZXZwbC1kZXZlbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAw MDAwLi5lMjMwNjUwMGI0ODcxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9vbmV2cGwtZGV2 ZWwKQEAgLTAsMCArMSBAQAorb25ldnBsClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1LWRldmVsIGIvc3JjcGtncy9vbmV2cGwt aW50ZWwtZ3B1LWRldmVsCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAu LjQ3OTIwY2VlY2Y5MTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL29uZXZwbC1pbnRlbC1n cHUtZGV2ZWwKQEAgLTAsMCArMSBAQAorb25ldnBsLWludGVsLWdwdQpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS90ZW1wbGF0 ZSBiL3NyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS90ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAwLi5mMTRhY2I3MjhhNTRkCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1L3RlbXBsYXRlCkBAIC0wLDAgKzEsMjcgQEAKKyMgVGVt cGxhdGUgZmlsZSBmb3IgJ29uZXZwbC1pbnRlbC1ncHUnCitwa2duYW1lPW9uZXZwbC1pbnRlbC1n cHUKK3ZlcnNpb249MjIuNi40CityZXZpc2lvbj0xCithcmNocz0ieDg2XzY0KiIKK2J1aWxkX3N0 eWxlPWNtYWtlCitjb25maWd1cmVfYXJncz0iLVduby1kZXYgLURDTUFLRV9CVUlMRF9UWVBFPVJl bGVhc2UiCitob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHBrZy1jb25maWciCittYWtlZGVwZW5kcz0i bGliZHJtLWRldmVsIGxpYnZhLWRldmVsIG9uZXZwbC1kZXZlbCIKK3Nob3J0X2Rlc2M9IlJ1bnRp bWUgaW1wbGVtZW50YXRpb24gb2Ygb25lVlBMIEFQSSBmb3IgSW50ZWwgR2VuIEdQVXMiCittYWlu dGFpbmVyPSJ6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPiIKK2xpY2Vuc2U9Ik1JVCIKK2hvbWVw YWdlPSJodHRwczovL2dpdGh1Yi5jb20vb25lYXBpLXNyYy9vbmVWUEwtaW50ZWwtZ3B1IgorY2hh bmdlbG9nPSJodHRwczovL2dpdGh1Yi5jb20vb25lYXBpLXNyYy9vbmVWUEwtaW50ZWwtZ3B1L2Js b2IvbWFpbi9DSEFOR0VMT0cubWQiCitkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9vbmVh cGktc3JjL29uZVZQTC1pbnRlbC1ncHUvYXJjaGl2ZS9yZWZzL3RhZ3MvaW50ZWwtb25ldnBsLSR7 dmVyc2lvbn0udGFyLmd6IgorY2hlY2tzdW09NzRiMDk3OWRjYjJhZjFiN2M2OGVkYjhjYmNiMDJk NTM5ZGU1MTEwOTBiMTJmYWM1MDY1MmNiYWNkNzA3YzRlNgorCitwb3N0X2luc3RhbGwoKSB7CisJ dmxpY2Vuc2UgTElDRU5TRQorfQorCitvbmV2cGwtaW50ZWwtZ3B1LWRldmVsX3BhY2thZ2UoKSB7 CisJc2hvcnRfZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgorCXBrZ19pbnN0YWxsKCkgewor CQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCX0KK30KZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb25l dnBsL3RlbXBsYXRlIGIvc3JjcGtncy9vbmV2cGwvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uODVjN2MyZGE4NWNlOQotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3Mvb25ldnBsL3RlbXBsYXRlCkBAIC0wLDAgKzEsMzQgQEAKKyMgVGVtcGxhdGUgZmls ZSBmb3IgJ29uZXZwbCcKK3BrZ25hbWU9b25ldnBsCit2ZXJzaW9uPTIwMjMuMS4yCityZXZpc2lv bj0xCithcmNocz0ieDg2XzY0KiIKK2J1aWxkX3N0eWxlPWNtYWtlCitjb25maWd1cmVfYXJncz0i CisJLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgLVduby1kZXYKKwktREJVSUxEX1BZVEhPTl9C SU5ESU5HOkJPT0w9J09GRicKKwktREJVSUxEX0VYQU1QTEVTOkJPT0w9J09GRicKKwktREJVSUxE X1RFU1RTOkJPT0w9J09OJworCS1ESU5TVEFMTF9FWEFNUExFX0NPREU6Qk9PTD0nT0ZGJyIKK2hv c3RtYWtlZGVwZW5kcz0iY21ha2UgbGliWDExIHB5dGhvbiB3YXlsYW5kLXByb3RvY29scyBwa2ct Y29uZmlnIgorbWFrZWRlcGVuZHM9ImxpYnZhLWRldmVsIGxpYlgxMS1kZXZlbCB3YXlsYW5kLWRl dmVsIgorc2hvcnRfZGVzYz0iSW50ZWwgb25lQVBJIFZpZGVvIFByb2Nlc3NpbmcgbGlicmFyeSIK K21haW50YWluZXI9InpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+IgorbGljZW5zZT0iTUlUIgor aG9tZXBhZ2U9Imh0dHBzOi8vd3d3LmludGVsLmNvbS9jb250ZW50L3d3dy91cy9lbi9kZXZlbG9w ZXIvdG9vbHMvb25lYXBpL29uZXZwbC5odG1sIgorZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5j b20vb25lYXBpLXNyYy9vbmVWUEwvYXJjaGl2ZS92JHt2ZXJzaW9ufS8ke3BrZ25hbWV9LSR7dmVy c2lvbn0udGFyLmd6IgorY2hlY2tzdW09YjIyNjFjY2ExNzRjZTE4MTVmM2Q0N2M2NDc5MjFhYjE3 ZjY4MjY3YzY5YzFlMjQ0NGZmMjdhYWI3ZDE5OWNiYgorCitwb3N0X2luc3RhbGwoKSB7CisJdmxp Y2Vuc2UgTElDRU5TRQorfQorCitvbmV2cGwtZGV2ZWxfcGFja2FnZSgpIHsKKwlkZXBlbmRzPSIk e21ha2VkZXBlbmRzfSAke3NvdXJjZXBrZ30tJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlzaG9y dF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3Zl IHVzci9pbmNsdWRlCisJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCisJCXZtb3ZlICJ1c3IvbGli Lyouc28iCisJfQorfQoKRnJvbSA0YTViODFmYzUwZTFhZDM5YzRhZjU1ZjU4MzViYjM4MWZjNTQz N2E1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBTYXQsIDggSnVsIDIwMjMgMjA6MjA6NTkgLTA0MDAKU3ViamVjdDogW1BBVENI IDA4OC8xMTVdIHRyYWNrZXItbWluZXJzOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3MvdHJhY2tlci1taW5lcnMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3RyYWNrZXIt bWluZXJzL3RlbXBsYXRlIGIvc3JjcGtncy90cmFja2VyLW1pbmVycy90ZW1wbGF0ZQppbmRleCAw Yjk3ZjQ3NDg5ZjgxLi5mMTk2ZDJiZjllNGE0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3RyYWNrZXIt bWluZXJzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdHJhY2tlci1taW5lcnMvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0cmFja2VyLW1pbmVycycKIHBrZ25h bWU9dHJhY2tlci1taW5lcnMKIHZlcnNpb249My42LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IGJ1aWxkX3N0eWxlPW1lc29uCiBidWlsZF9oZWxwZXI9cWVtdQogIyBtaXNzaW5nIGxpYmdyc3Mg Zm9yIG1pbmVyX3JzcwoKRnJvbSAwYTdmNDQ2ZjBmZmExM2QwODU5MWYyMWUzMDgwZjg3NmRmYWE5 YWIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBTYXQsIDggSnVsIDIwMjMgMjA6MjE6MjEgLTA0MDAKU3ViamVjdDogW1BBVENI IDA4OS8xMTVdIG1wZDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21wZC90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbXBkL3RlbXBsYXRlIGIvc3JjcGtncy9tcGQvdGVt cGxhdGUKaW5kZXggNjQ1YzFiNzc4ZTQwNy4uNjAyODdjYzlmNmUzYyAxMDA2NDQKLS0tIGEvc3Jj cGtncy9tcGQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tcGQvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtcGQnCiBwa2duYW1lPW1wZAogdmVyc2lvbj0wLjIz LjE0Ci1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJl X2FyZ3M9Ii1Eb3B1cz1lbmFibGVkIC1EbWlrbW9kPWVuYWJsZWQgLURuZWlnaGJvcj10cnVlCiAg LURzb3VuZGNsb3VkPWVuYWJsZWQgLURwaXBlPXRydWUgLUR0d29sYW1lPWVuYWJsZWQgLURiemlw Mj1lbmFibGVkCgpGcm9tIGU0MDlmOGU1Yjc4ZDFlOTNhMTM1NTdlMjBjYmMyOWQ0YTI3OGYzZjUg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6MTA6MDIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5 MC8xMTVdIHRnX293dDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3RnX293 dC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlIGIvc3JjcGtncy90 Z19vd3QvdGVtcGxhdGUKaW5kZXggNTBiYzgzMTBiODg1OS4uYzkzMjYyZDVjNWRlNiAxMDA2NDQK LS0tIGEvc3JjcGtncy90Z19vd3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90Z19vd3QvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0Z19vd3QnCiBwa2duYW1l PXRnX293dAogdmVyc2lvbj0wLjAuMC4yMDIzMDkyMQotcmV2aXNpb249MQorcmV2aXNpb249Mgog X2NvbW1pdD0zYmIzZDc1NzY4MWU2Y2M1MTM1YWVjNjUyOWE3NTNkYzNkY2RjZmI5CiBfbGlieXV2 X2NvbW1pdD0wNDgyMWQxZTdkNjA4NDU1MjVlOGRiNTVjN2JjZDQxZWY1YmU5NDA2CiBfYWJzZWls X2NvbW1pdD04YzBiOTRlNzkzYTY2NDk1ZTBiMWYzNGE1ZWIyNmJkN2RjNjcyZGIwCgpGcm9tIGYx MmUyN2I4NThjODRjNTk1ZjA4MGRiNjU0Njk4NGY1NjRlNzM0ODEgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAgQXVn IDIwMjMgMDk6MTA6NDQgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5MS8xMTVdIHRlbGVncmFtLWRl c2t0b3A6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy90ZWxlZ3JhbS1kZXNr dG9wL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRl IGIvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlCmluZGV4IDliZDk0Y2UzNzgxZmYu LmQzM2ZjNjJiMTBlMzggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL3RlbGVncmFtLWRlc2t0b3AvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0ZWxlZ3JhbS1kZXNrdG9wJwogcGtnbmFtZT10ZWxl Z3JhbS1kZXNrdG9wCiB2ZXJzaW9uPTQuMTEuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9Y21ha2UKIGJ1aWxkX2hlbHBlcj0icWVtdSBnaXIiCiBjb25maWd1cmVfYXJncz0i LURUREVTS1RPUF9BUElfSUQ9MjA5MjM1CgpGcm9tIDFjZGM4OTE2ZDJjMjA4YTRiNzYyYTVjNmEy MjljZWZhNGRiNzkxZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6MTE6NDUgLTA0MDAKU3Vi amVjdDogW1BBVENIIDA5Mi8xMTVdIGdzdC1wbHVnaW5zLWJhZDE6IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlIGIvc3JjcGtncy9nc3QtcGx1Z2lucy1i YWQxL3RlbXBsYXRlCmluZGV4IDJiZjJmNGIwNjQyZmUuLjBmYWZjYjY1NTUzOTUgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1w bHVnaW5zLWJhZDEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdnc3QtcGx1Z2lucy1iYWQxJwogcGtnbmFtZT1nc3QtcGx1Z2lucy1iYWQxCiB2ZXJzaW9uPTEu MjIuNQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfaGVscGVyPSJnaXIiCiBidWlsZF9z dHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EcGFja2FnZS1vcmlnaW49aHR0cHM6Ly92b2lk bGludXgub3JnIC1EZG9jPWRpc2FibGVkCgpGcm9tIDIwNTU0NzlmYjBkYmU5MTEwYzM4NTcwZWFi ODQwYzEyMTkwZTRjZDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6MTI6MDkgLTA0MDAKU3Vi amVjdDogW1BBVENIIDA5My8xMTVdIG9wZW5tdzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL29wZW5tdy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3Blbm13L3RlbXBs YXRlIGIvc3JjcGtncy9vcGVubXcvdGVtcGxhdGUKaW5kZXggMGFiZjVmZjdjZGJlYy4uYjU3MTgw ZjFhNDQ0NiAxMDA2NDQKLS0tIGEvc3JjcGtncy9vcGVubXcvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9vcGVubXcvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdv cGVubXcnCiBwa2duYW1lPW9wZW5tdwogdmVyc2lvbj0wLjQ4LjAKLXJldmlzaW9uPTIKK3Jldmlz aW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBfcmVjYXN0X2NvbW1pdD1lNzVhZGY4NmY5MWViMzA4 MjIyMDA4NWU0MmRkYTYyNjc5ZjlhM2VhCiBfYnVsbGV0X3RhZz0zLjE3CgpGcm9tIGVjODU2ODAx OTc5M2IyYWYyODg2YjZiNjY2ZjVjM2JkYmFjYzJiODcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMg MDk6MTQ6NTMgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5NC8xMTVdIGxtczogcmV2YnVtcCBmb3Ig ZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2xtcy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv bG1zL3RlbXBsYXRlIGIvc3JjcGtncy9sbXMvdGVtcGxhdGUKaW5kZXggZTM1OGY3NTkwMmE5OC4u M2IyMWM0NThkZTUxOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9sbXMvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9sbXMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICds bXMnCiBwa2duYW1lPWxtcwogdmVyc2lvbj0zLjQyLjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVw ZW5kcz0id3QtZGV2ZWwgZmZtcGVnLWRldmVsIGJvb3N0LWRldmVsIGxpYmNvbmZpZysrLWRldmVs IHRhZ2xpYi1kZXZlbCBwYW0tZGV2ZWwgbGliZ3JhcGhpY3NtYWdpY2stZGV2ZWwgZ3Rlc3QtZGV2 ZWwgbGliYXJjaGl2ZS1kZXZlbCIKCkZyb20gMDQyN2M2ZjE3MDZiZWNkMTViYTk4NjJiOTlkODZi MzllOTM5Zjk4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAzMCBBdWcgMjAyMyAwOToxODoxOCAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDk1LzExNV0gZnJlZWNhZDogcmV2YnVtcCBmb3IgcXQ1LTUuMTUuOAoKLS0tCiBz cmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8wMDEtaW5jbHVkZS5wYXRjaCAgICAgfCAxMTIgLS0tLS0t LS0tLS0tLS0tLS0tCiAuLi4vMTU0LXJldmVydC1ndWktdG1wLXJlZGlyZWN0LXN0ZGVyci5wYXRj aCAgfCAgNjggLS0tLS0tLS0tLS0KIC4uLmQ2M2M4YzliMTI4MDk3OGJlODQxZDA0ZTY4YTBhNTVj Y2ViOS5wYXRjaCB8ICAzMCAtLS0tLQogc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlICAgICAgICAg ICAgICAgICAgICAgIHwgIDEzICstCiA0IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwg MjE2IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZnJlZWNhZC9wYXRj aGVzLzAwMS1pbmNsdWRlLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mcmVlY2Fk L3BhdGNoZXMvMTU0LXJldmVydC1ndWktdG1wLXJlZGlyZWN0LXN0ZGVyci5wYXRjaAogZGVsZXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzL2ZlMDJkNjNjOGM5YjEyODA5Nzhi ZTg0MWQwNGU2OGEwYTU1Y2NlYjkucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVjYWQv cGF0Y2hlcy8wMDEtaW5jbHVkZS5wYXRjaCBiL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzAwMS1p bmNsdWRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGI1YWY1NDk5OWI5 Li4wMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzAwMS1pbmNsdWRl LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLUZyb20gOWE0MTg0NWE0MTcx ODk3NzY3NDEyOTdjNTBhMzgyN2NlMjkyYmM0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZy b206IFV3ZSA8ZG9ub3ZhbHlAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgotRGF0ZTogU3VuLCAz IEp1bCAyMDIyIDIyOjUxOjE2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFtQYXJ0XSBPQ0NFcnJv ci5oOiByZW1vdmUgdW5uZWVkZWQgaW5jbHVkZXMKLQotLSBhbHNvIHNvcnQgaW5jbHVkZXMKLS0t LQotIHNyYy9Nb2QvUGFydC9BcHAvT0NDRXJyb3IuaCAgICAgICAgICAgICB8IDM2ICsrKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KLSBzcmMvTW9kL1BhcnQvQXBwL09mZnNldEN1cnZlUHlJbXAuY3Bw ICAgfCAxMiArKysrLS0tLS0KLSBzcmMvTW9kL1BhcnQvQXBwL09mZnNldFN1cmZhY2VQeUltcC5j cHAgfCAxMCArKystLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA0NiBk ZWxldGlvbnMoLSkKLQotLS0tIGEvc3JjL01vZC9QYXJ0L0FwcC9PQ0NFcnJvci5oCi0rKysgYi9z cmMvTW9kL1BhcnQvQXBwL09DQ0Vycm9yLmgKLUBAIC0yMywzNiArMjMsOCBAQAotICNpZm5kZWYg X09DQ0Vycm9yX2hfDQotICNkZWZpbmUgX09DQ0Vycm9yX2hfDQotIA0KLS0jIGluY2x1ZGUgPFN0 YW5kYXJkX1ZlcnNpb24uaHh4Pg0KLSAjIGluY2x1ZGUgPFN0YW5kYXJkX0ZhaWx1cmUuaHh4Pg0K LS0jIGluY2x1ZGUgPFN0YW5kYXJkX0Fib3J0aXZlVHJhbnNhY3Rpb24uaHh4Pg0KLS0jIGluY2x1 ZGUgPFN0YW5kYXJkX0NvbnN0cnVjdGlvbkVycm9yLmh4eD4NCi0tIyBpZiBPQ0NfVkVSU0lPTl9I RVggPj0gMHgwNjA1MDANCi0tIyBpbmNsdWRlIDxTdGFuZGFyZF9EZWZpbmVFeGNlcHRpb24uaHh4 Pg0KLS0jIGVuZGlmDQotLSMgaW5jbHVkZSA8U3RhbmRhcmRfRGltZW5zaW9uRXJyb3IuaHh4Pg0K LS0jIGluY2x1ZGUgPFN0YW5kYXJkX0RpbWVuc2lvbk1pc21hdGNoLmh4eD4NCi0tIyBpbmNsdWRl IDxTdGFuZGFyZF9EaXZpZGVCeVplcm8uaHh4Pg0KLS0jIGluY2x1ZGUgPFN0YW5kYXJkX0RvbWFp bkVycm9yLmh4eD4NCi0tIyBpbmNsdWRlIDxTdGFuZGFyZF9JbW11dGFibGVPYmplY3QuaHh4Pg0K LS0jIGluY2x1ZGUgPFN0YW5kYXJkX0xpY2Vuc2VFcnJvci5oeHg+DQotLSMgaW5jbHVkZSA8U3Rh bmRhcmRfTGljZW5zZU5vdEZvdW5kLmh4eD4NCi0tIyBpbmNsdWRlIDxTdGFuZGFyZF9NdWx0aXBs eURlZmluZWQuaHh4Pg0KLS0jIGluY2x1ZGUgPFN0YW5kYXJkX05lZ2F0aXZlVmFsdWUuaHh4Pg0K LS0jIGluY2x1ZGUgPFN0YW5kYXJkX05vTW9yZU9iamVjdC5oeHg+DQotLSMgaW5jbHVkZSA8U3Rh bmRhcmRfTm9TdWNoT2JqZWN0Lmh4eD4NCi0tIyBpbmNsdWRlIDxTdGFuZGFyZF9Ob3RJbXBsZW1l bnRlZC5oeHg+DQotLSMgaW5jbHVkZSA8U3RhbmRhcmRfTnVsbE9iamVjdC5oeHg+DQotLSMgaW5j bHVkZSA8U3RhbmRhcmRfTnVsbFZhbHVlLmh4eD4NCi0tIyBpbmNsdWRlIDxTdGFuZGFyZF9OdW1l cmljRXJyb3IuaHh4Pg0KLS0jIGluY2x1ZGUgPFN0YW5kYXJkX091dE9mTWVtb3J5Lmh4eD4NCi0t IyBpbmNsdWRlIDxTdGFuZGFyZF9PdXRPZlJhbmdlLmh4eD4NCi0tIyBpbmNsdWRlIDxTdGFuZGFy ZF9PdmVyZmxvdy5oeHg+DQotLSMgaW5jbHVkZSA8U3RhbmRhcmRfUHJvZ3JhbUVycm9yLmh4eD4N Ci0tIyBpbmNsdWRlIDxTdGFuZGFyZF9SYW5nZUVycm9yLmh4eD4NCi0tIyBpbmNsdWRlIDxTdGFu ZGFyZF9Ub29NYW55VXNlcnMuaHh4Pg0KLS0jIGluY2x1ZGUgPFN0YW5kYXJkX1R5cGVNaXNtYXRj aC5oeHg+DQotLSMgaW5jbHVkZSA8U3RhbmRhcmRfVW5kZXJmbG93Lmh4eD4NCi0rIyBpbmNsdWRl IDxTdGFuZGFyZF9WZXJzaW9uLmh4eD4NCi0gDQotICNpbmNsdWRlIDxNb2QvUGFydC9QYXJ0R2xv YmFsLmg+DQotICNpbmNsdWRlIDxCYXNlL0NvbnNvbGUuaD4NCi1AQCAtODgsNCArNjAsMyBAQCBQ YXJ0RXhwb3J0IGV4dGVybiBQeU9iamVjdCogUGFydEV4Y2VwdGlvCi0gDQotICNkZWZpbmUgUFlf Q0FUQ0hfT0NDIF9QWV9DQVRDSF9PQ0MocmV0dXJuKE5VTEwpKQ0KLSAjZW5kaWYgIC8vIF9PQ0NF cnJvcl9oXw0KLS0NCi0tLS0gYS9zcmMvTW9kL1BhcnQvQXBwL09mZnNldEN1cnZlUHlJbXAuY3Bw Ci0rKysgYi9zcmMvTW9kL1BhcnQvQXBwL09mZnNldEN1cnZlUHlJbXAuY3BwCi1AQCAtMjAsMjAg KzIwLDIwIEBACi0gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0K LSANCi0tDQotICNpbmNsdWRlICJQcmVDb21waWxlZC5oIg0KLSAjaWZuZGVmIF9QcmVDb21wXw0K LSAjIGluY2x1ZGUgPEdlb21fT2Zmc2V0Q3VydmUuaHh4Pg0KLSAjZW5kaWYNCi0gDQotLSNpbmNs dWRlICJPQ0NFcnJvci5oIg0KLS0jaW5jbHVkZSAiR2VvbWV0cnkuaCINCi0rI2luY2x1ZGUgPEJh c2UvR2VvbWV0cnlQeUNYWC5oPg0KLSsjaW5jbHVkZSA8QmFzZS9WZWN0b3IzRC5oPg0KLSsjaW5j bHVkZSA8QmFzZS9WZWN0b3JQeS5oPg0KLSsNCi0gI2luY2x1ZGUgIk9mZnNldEN1cnZlUHkuaCIN Ci0gI2luY2x1ZGUgIk9mZnNldEN1cnZlUHkuY3BwIg0KLSsjaW5jbHVkZSAiR2VvbWV0cnkuaCIN Ci0rI2luY2x1ZGUgIk9DQ0Vycm9yLmgiDQotIA0KLS0jaW5jbHVkZSA8QmFzZS9HZW9tZXRyeVB5 Q1hYLmg+DQotLSNpbmNsdWRlIDxCYXNlL1ZlY3RvclB5Lmg+DQotLSNpbmNsdWRlIDxCYXNlL1Zl Y3RvcjNELmg+DQotIA0KLSB1c2luZyBuYW1lc3BhY2UgUGFydDsNCi0gDQotLS0tIGEvc3JjL01v ZC9QYXJ0L0FwcC9PZmZzZXRTdXJmYWNlUHlJbXAuY3BwCi0rKysgYi9zcmMvTW9kL1BhcnQvQXBw L09mZnNldFN1cmZhY2VQeUltcC5jcHAKLUBAIC0yMCwyMCArMjAsMTYgQEAKLSAgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqDQotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotIA0KLS0NCi0gI2luY2x1ZGUgIlBy ZUNvbXBpbGVkLmgiDQotICNpZm5kZWYgX1ByZUNvbXBfDQotICMgaW5jbHVkZSA8R2VvbV9PZmZz ZXRTdXJmYWNlLmh4eD4NCi0gIyBpbmNsdWRlIDxtZW1vcnk+DQotICNlbmRpZg0KLSANCi0tI2lu Y2x1ZGUgPEJhc2UvVmVjdG9yUHkuaD4NCi0tI2luY2x1ZGUgPEJhc2UvVmVjdG9yM0QuaD4NCi0t DQotICNpbmNsdWRlICJPQ0NFcnJvci5oIg0KLS0jaW5jbHVkZSAiR2VvbWV0cnkuaCINCi0tI2lu Y2x1ZGUgPE1vZC9QYXJ0L0FwcC9PZmZzZXRTdXJmYWNlUHkuaD4NCi0tI2luY2x1ZGUgPE1vZC9Q YXJ0L0FwcC9PZmZzZXRTdXJmYWNlUHkuY3BwPg0KLSsjaW5jbHVkZSAiT2Zmc2V0U3VyZmFjZVB5 LmgiDQotKyNpbmNsdWRlICJPZmZzZXRTdXJmYWNlUHkuY3BwIg0KLSsNCi0gDQotIHVzaW5nIG5h bWVzcGFjZSBQYXJ0Ow0KLSANCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8x NTQtcmV2ZXJ0LWd1aS10bXAtcmVkaXJlY3Qtc3RkZXJyLnBhdGNoIGIvc3JjcGtncy9mcmVlY2Fk L3BhdGNoZXMvMTU0LXJldmVydC1ndWktdG1wLXJlZGlyZWN0LXN0ZGVyci5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZhOWFkYWJkZWM4My4uMDAwMDAwMDAwMDAwMAotLS0g YS9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8xNTQtcmV2ZXJ0LWd1aS10bXAtcmVkaXJlY3Qtc3Rk ZXJyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotc2VlIGh0dHBzOi8vZ2l0 aHViLmNvbS9GcmVlQ0FEL0ZyZWVDQUQvY29tbWl0L2NmZTk0YjAwZDM0MzRmM2UyYzhiNTExNGQy OTA5ZjYyOGMzMzBmYTgjY29tbWl0Y29tbWVudC03MTQxMzQwNwotCi11cHN0cmVhbTogeWVzCi0K LUZyb20gN2IzNzdhMjE2YjkxODU5NjBlNGNlZTk4MGE2NTA0ZGMxYTc1NWY1MCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IHdtYXllciA8d21heWVyQHVzZXJzLnNvdXJjZWZvcmdlLm5l dD4KLURhdGU6IFdlZCwgMjkgSnVuIDIwMjIgMTU6MTk6MTggKzAyMDAKLVN1YmplY3Q6IFtQQVRD SF0gR3VpOiByZW1vdmUgd29ya2Fyb3VuZCBmb3Igc3BuYXYgMC4yMyBkdWUgdG8gYnVpbGQgZmFp bHVyZQotIHdpdGggbXVzbCBsaWJjCi0KLS0tLQotIHNyYy9HdWkvM0Rjb25uZXhpb24vR3VpTmF0 aXZlRXZlbnRMaW51eC5jcHAgfCAyNyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hh bmdlZCwgMjcgZGVsZXRpb25zKC0pCi0KLS0tLSBhL3NyYy9HdWkvM0Rjb25uZXhpb24vR3VpTmF0 aXZlRXZlbnRMaW51eC5jcHAKLSsrKyBiL3NyYy9HdWkvM0Rjb25uZXhpb24vR3VpTmF0aXZlRXZl bnRMaW51eC5jcHAKLUBAIC0yMSw0MiArMjEsMTcgQEAKLSAgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwot IAotICNpbmNsdWRlIDxGQ0NvbmZpZy5oPgotLSNpbmNsdWRlIDxjc3RkaW8+Ci0gCi0gI2luY2x1 ZGUgIkd1aU5hdGl2ZUV2ZW50TGludXguaCIKLSAKLSAjaW5jbHVkZSAiR3VpQXBwbGljYXRpb25O YXRpdmVFdmVudEF3YXJlLmgiCi0gI2luY2x1ZGUgPEJhc2UvQ29uc29sZS5oPgotLSNpbmNsdWRl IDxCYXNlL0ZpbGVJbmZvLmg+Ci0gI2luY2x1ZGUgPFFNYWluV2luZG93PgotIAotICNpbmNsdWRl IDxRU29ja2V0Tm90aWZpZXI+Ci0gCi0gI2luY2x1ZGUgPHNwbmF2Lmg+Ci0gCi0tbmFtZXNwYWNl IHsKLS1jbGFzcyBSZWRpcmVjdFN0ZEVycgotLXsKLS1wdWJsaWM6Ci0tICAgIFJlZGlyZWN0U3Rk RXJyKCkKLS0gICAgICAgIDogZmkoQmFzZTo6RmlsZUluZm86OmdldFRlbXBGaWxlTmFtZSgpKQot LSAgICAgICAgLCBmaWxlKHN0ZGVycikKLS0gICAgewotLSAgICAgICAgc3RkZXJyID0gZm9wZW4o ZmkuZmlsZVBhdGgoKS5jX3N0cigpLCAidyIpOwotLSAgICB9Ci0tICAgIH5SZWRpcmVjdFN0ZEVy cigpCi0tICAgIHsKLS0gICAgICAgIGZjbG9zZShzdGRlcnIpOwotLSAgICAgICAgZmkuZGVsZXRl RmlsZSgpOwotLSAgICAgICAgc3RkZXJyID0gZmlsZTsKLS0gICAgfQotLQotLXByaXZhdGU6Ci0t ICAgIEJhc2U6OkZpbGVJbmZvIGZpOwotLSAgICBGSUxFKiBmaWxlOwotLX07Ci0tfQotLQotIEd1 aTo6R3VpTmF0aXZlRXZlbnQ6Okd1aU5hdGl2ZUV2ZW50KEd1aTo6R1VJQXBwbGljYXRpb25OYXRp dmVFdmVudEF3YXJlICphcHApCi0gOiBHdWlBYnN0cmFjdE5hdGl2ZUV2ZW50KGFwcCkKLSB7Ci1A QCAtNzIsOCArNDcsNiBAQCBHdWk6Okd1aU5hdGl2ZUV2ZW50Ojp+R3VpTmF0aXZlRXZlbnQoKQot IAotIHZvaWQgR3VpOjpHdWlOYXRpdmVFdmVudDo6aW5pdFNwYWNlYmFsbChRTWFpbldpbmRvdyAq d2luZG93KQotIHsKLS0gICAgLy8gdG1wLiByZWRpcmVjdCBzdGRlcnIgdG8gYSBmaWxlIHRvIHN1 cHByZXNzIGFuIGVycm9yIG1lc3NhZ2UgZnJvbSBzcG5hdl9vcGVuKCkKLS0gICAgUmVkaXJlY3RT dGRFcnIgZXJyOwotICAgICBRX1VOVVNFRCh3aW5kb3cpCi0gICAgIGlmIChzcG5hdl9vcGVuKCkg PT0gLTEpIHsKLSAgICAgICAgIEJhc2U6OkNvbnNvbGUoKS5Mb2coIkNvdWxkbid0IGNvbm5lY3Qg dG8gc3BhY2VuYXYgZGFlbW9uLiBQbGVhc2UgaWdub3JlIGlmIHlvdSBkb24ndCBoYXZlIGEgc3Bh Y2Vtb3VzZS5cbiIpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvZmUwMmQ2 M2M4YzliMTI4MDk3OGJlODQxZDA0ZTY4YTBhNTVjY2ViOS5wYXRjaCBiL3NyY3BrZ3MvZnJlZWNh ZC9wYXRjaGVzL2ZlMDJkNjNjOGM5YjEyODA5NzhiZTg0MWQwNGU2OGEwYTU1Y2NlYjkucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0YWNmMzcwY2EwYTQuLjAwMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvZmUwMmQ2M2M4YzliMTI4MDk3OGJlODQx ZDA0ZTY4YTBhNTVjY2ViOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZy b20gZmUwMmQ2M2M4YzliMTI4MDk3OGJlODQxZDA0ZTY4YTBhNTVjY2ViOSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IFJveS0wNDMgPDcwNTIwNjMzK1JveS0wNDNAdXNlcnMubm9yZXBs eS5naXRodWIuY29tPgotRGF0ZTogVGh1LCAyOSBEZWMgMjAyMiAyMzoyMDozOCArMDEwMAotU3Vi amVjdDogW1BBVENIXSBEcmFmdDogdXBkYXRlIGluc3BlY3QuZ2V0YXJnc3BlYyB0byBpbnNwZWN0 LmdldGZ1bGxhcmdzcGVjCi0gKCM4MTAxKQotCi0tLS0KLSBzcmMvTW9kL0RyYWZ0L2RyYWZ0Z3Vp dG9vbHMvZ3VpX3NuYXBwZXIucHkgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRp b25zKCspLCAyIGRlbGV0aW9ucygtKQotCi0tLS0gYS9zcmMvTW9kL0RyYWZ0L2RyYWZ0Z3VpdG9v bHMvZ3VpX3NuYXBwZXIucHkKLSsrKyBiL3NyYy9Nb2QvRHJhZnQvZHJhZnRndWl0b29scy9ndWlf c25hcHBlci5weQotQEAgLTE0MjYsNyArMTQyNiw3IEBAIGNsYXNzIFNuYXBwZXI6Ci0gICAgICAg ICAgICAgR3VpLlNuYXBwZXIub2ZmKCkKLSAgICAgICAgICAgICBzZWxmLnVpLm9mZlVpKCkKLSAg ICAgICAgICAgICBpZiBjYWxsYmFjazoKLS0gICAgICAgICAgICAgICAgaWYgbGVuKGluc3BlY3Qu Z2V0YXJnc3BlYyhjYWxsYmFjaykuYXJncykgPiAxOgotKyAgICAgICAgICAgICAgICBpZiBsZW4o aW5zcGVjdC5nZXRmdWxsYXJnc3BlYyhjYWxsYmFjaykuYXJncykgPiAxOgotICAgICAgICAgICAg ICAgICAgICAgb2JqID0gTm9uZQotICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5zbmFwSW5m byBhbmQgKCJPYmplY3QiIGluIHNlbGYuc25hcEluZm8pIGFuZCBzZWxmLnNuYXBJbmZvWyJPYmpl Y3QiXToKLSAgICAgICAgICAgICAgICAgICAgICAgICBvYmogPSBBcHAuQWN0aXZlRG9jdW1lbnQu Z2V0T2JqZWN0KHNlbGYuc25hcEluZm9bIk9iamVjdCJdKQotQEAgLTE0NDUsNyArMTQ0NSw3IEBA IGNsYXNzIFNuYXBwZXI6Ci0gICAgICAgICAgICAgR3VpLlNuYXBwZXIub2ZmKCkKLSAgICAgICAg ICAgICBzZWxmLnVpLm9mZlVpKCkKLSAgICAgICAgICAgICBpZiBjYWxsYmFjazoKLS0gICAgICAg ICAgICAgICAgaWYgbGVuKGluc3BlY3QuZ2V0YXJnc3BlYyhjYWxsYmFjaykuYXJncykgPiAxOgot KyAgICAgICAgICAgICAgICBpZiBsZW4oaW5zcGVjdC5nZXRmdWxsYXJnc3BlYyhjYWxsYmFjayku YXJncykgPiAxOgotICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soTm9uZSwgTm9uZSkKLSAg ICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKE5vbmUp CmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUgYi9zcmNwa2dzL2ZyZWVjYWQv dGVtcGxhdGUKaW5kZXggYzEzNTcwMWUzOGI5YS4uZjhjNWI5Y2Y5MDZjNyAxMDA2NDQKLS0tIGEv c3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZnJlZWNhZC90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZyZWVjYWQnCiBwa2duYW1lPWZy ZWVjYWQKLXZlcnNpb249MC4yMC4yCi1yZXZpc2lvbj03Cit2ZXJzaW9uPTAuMjEuMQorcmV2aXNp b249MgogYnVpbGRfd3Jrc3JjPSJGcmVlQ0FELSR7dmVyc2lvbn0iCiBidWlsZF9zdHlsZT1jbWFr ZQogcHljb21waWxlX2RpcnM9InVzci9saWIvJHtwa2duYW1lfS9Nb2QiCkBAIC0yMyw5ICsyMywx MCBAQCBtYWtlZGVwZW5kcz0icHl0aG9uMy1kZXZlbCBib29zdC1kZXZlbCBsaWJ4ZXJjZXMtYy1k ZXZlbCB6bGliLWRldmVsIG9jY3QtZGV2ZWwKICB2dGstZGV2ZWwgaGRmNS1kZXZlbCBvcGVubXBp LWRldmVsIGxpYm1lZC1kZXZlbCBlaWdlbiBkb3VibGUtY29udmVyc2lvbi1kZXZlbAogIGNvaW4z LWRldmVsIGxpYnNoaWJva2VuMi1kZXZlbCBsaWJzcG5hdi1kZXZlbCBweXNpZGUyLXRvb2xzCiAg bGlibHo0LWRldmVsIGxpYnB5c2lkZTItcHl0aG9uMy1kZXZlbCBweXRob24zLW1hdHBsb3RsaWIg bmV0Y2RmLWRldmVsCi0ganNvbmNwcC1kZXZlbCBxdDUtZGV2ZWwgcXQ1LXN2Zy1kZXZlbCBxdDUt dG9vbHMtZGV2ZWwgcXQ1LXdlYmtpdC1kZXZlbAotIHF0NS14bWxwYXR0ZXJucy1kZXZlbCBjb2lu My1kb2MgZ2xldy1kZXZlbCBweXRob24zLXBpdnkiCi1kZXBlbmRzPSJweXRob24zLW1hdHBsb3Rs aWIgcHl0aG9uMy1weXNpZGUyLXdlYmVuZ2luZSBweXRob24zLXBpdnkiCisganNvbmNwcC1kZXZl bCBxdDUtZGV2ZWwgcXQ1LXN2Zy1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXdlYmVuZ2luZS1k ZXZlbAorIHF0NS14bWxwYXR0ZXJucy1kZXZlbCBxdDUtZGVjbGFyYXRpdmUtZGV2ZWwgcXQ1LXdl YmNoYW5uZWwtZGV2ZWwgcXQ1LWxvY2F0aW9uLWRldmVsCisgY29pbjMtZG9jIGdsZXctZGV2ZWwg cHl0aG9uMy1waXZ5IgorZGVwZW5kcz0icHl0aG9uMy1tYXRwbG90bGliIHB5dGhvbjMtcHlzaWRl Mi13ZWJlbmdpbmUgcHl0aG9uMy1waXZ5IHB5dGhvbjMtR2l0UHl0aG9uIHB5dGhvbjMtTWFya2Rv d24iCiBzaG9ydF9kZXNjPSJHZW5lcmFsIHB1cnBvc2UgM0QgQ0FEIG1vZGVsZXIiCiBtYWludGFp bmVyPSJ5b3BpdG8gPHBpZXJyZS5ib3VyZ2luQGZyZWUuZnI+IgogbGljZW5zZT0iTEdQTC0yLjAt b3ItbGF0ZXIiCkBAIC0zNSw3ICszNiw3IEBAIGRpc3RmaWxlcz0iCiAgaHR0cHM6Ly9naXRodWIu Y29tL0ZyZWVDQUQvRnJlZUNBRC9hcmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6CiAgJHtTT1VSQ0VG T1JHRV9TSVRFfS9jeHgvcHljeHgtJHtfcHljeHh2ZXJ9LnRhci5negogIgotY2hlY2tzdW09IjQ2 OTIyZjNhNDc3ZTc0MmUxYTg5Y2Q1MzQ2NjkyZDYzYWViYjJiNjdhZjg4N2IzZTQ2M2UwOTRhNGFl MDU1ZGEKK2NoZWNrc3VtPSJlOWIxZmQwMzIzZjEwMTI2OGM3ZjNiZTUyZGI0MmU0YTI5MjIyZjJl MzA2YWU2YzRhNmZjMzA5Y2I0MThkMzVhCiAgNGI5MWUxZTExNDFjMjNmYmQ1MDM5ZGY2MzVjNGJi NmU3NTYzMjE2ODU0OGY1NmI4M2NlMTc3MTkzYzBjOThjNiIKIHB5dGhvbl92ZXJzaW9uPTMKIHBh dGNoX2FyZ3M9Ii1OcDEgLWQgJHtidWlsZF93cmtzcmN9IgoKRnJvbSAzYmU4YWY1MDM4ZGNmZThj NDljZGIxZmY1YjVjNThiMGI0ZTUwYjBhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDE1IE9jdCAyMDIzIDIxOjQ3OjE4 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTYvMTE1XSBsaWJvcGVuc2hvdDogcmV2YnVtcCBmb3Ig ZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGlib3BlbnNob3QvdGVtcGxh dGUKaW5kZXggOGU1N2M1ZjU5MjE2OS4uN2E4ZjQ1MjBlNzg5MiAxMDA2NDQKLS0tIGEvc3JjcGtn cy9saWJvcGVuc2hvdC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGlib3BlbnNob3QnCiBwa2du YW1lPWxpYm9wZW5zaG90CiB2ZXJzaW9uPTAuMy4wCi1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBi dWlsZF9zdHlsZT1jbWFrZQogIyBCdWlsZHMgZmFpbCB3aXRoIFJ1YnktMi40LjEKIGNvbmZpZ3Vy ZV9hcmdzPSItREVOQUJMRV9SVUJZPU9GRiAtRFVTRV9TWVNURU1fSlNPTkNQUD1PTiIKCkZyb20g NmI2MWM0ZDc1M2FiZTljOGVlODRlOGU1YWZiMGQzZWRiMjYxOTNhNCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCA4IE5v diAyMDIzIDEwOjEwOjMwIC0wNTAwClN1YmplY3Q6IFtQQVRDSCAwOTcvMTE1XSBvcGVuaW1hZ2Vp bzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vcGVuaW1hZ2Vpby90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3Bl bmltYWdlaW8vdGVtcGxhdGUKaW5kZXggM2NlM2Y5ZTQ5ZDM1MC4uMjdkMjEzMWJjMGE2MSAxMDA2 NDQKLS0tIGEvc3JjcGtncy9vcGVuaW1hZ2Vpby90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW5p bWFnZWlvL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3Bl bmltYWdlaW8nCiBwa2duYW1lPW9wZW5pbWFnZWlvCiB2ZXJzaW9uPTIuNC45LjAKLXJldmlzaW9u PTcKK3JldmlzaW9uPTgKIGJ1aWxkX3N0eWxlPWNtYWtlCiBidWlsZF9oZWxwZXI9cWVtdQogY29u ZmlndXJlX2FyZ3M9Ii1EVVNFX1FUPTAgLURVU0VfUFlUSE9OPTAgLURPSUlPX0JVSUxEX1RFU1RT PTAKCkZyb20gNzIxOTYxNmI1Y2QyZmNhMTUzOGJjZWZkYzJmZDExZTY2YWNmNWIwNiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCA4IE5vdiAyMDIzIDEwOjExOjU3IC0wNTAwClN1YmplY3Q6IFtQQVRDSCAwOTgvMTE1XSBz eW5maWdzdHVkaW86IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9zeW5maWdz dHVkaW8vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3N5bmZpZ3N0dWRpby90ZW1wbGF0ZSBi L3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlCmluZGV4IDA5ZTQ0MmRhOWE2ODAuLjJiYzAx N2NlZGNhNmIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogIyBTaG91bGQg YmUga2VwdCBpbiBzeW5jIHdpdGggJ3N5bmZpZycgYW5kICdFVEwnCiBwa2duYW1lPXN5bmZpZ3N0 dWRpbwogdmVyc2lvbj0xLjQuNAotcmV2aXNpb249NAorcmV2aXNpb249NQogYnVpbGRfc3R5bGU9 Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS11cGRhdGUtbWltZWRiIgog aG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGludGx0b29sIGdldHRleHQgc3luZmlnIgoKRnJv bSBiYzg4MjMzMTZlMWQwMThlZGFiY2JjN2Y2ZjQyNDFjMWUzOGQ4OTM4IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDgg Tm92IDIwMjMgMTA6MTI6MzIgLTA1MDAKU3ViamVjdDogW1BBVENIIDA5OS8xMTVdIGdtaWM6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nbWljL3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9nbWljL3RlbXBsYXRlIGIvc3JjcGtncy9nbWljL3RlbXBsYXRlCmluZGV4IDgw ODk1M2U5YjU0M2MuLmQ4NTQ4MDhmODZhYTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ21pYy90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2dtaWMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdnbWljJwogcGtnbmFtZT1nbWljCiB2ZXJzaW9uPTMuMS42Ci1yZXZpc2lv bj01CityZXZpc2lvbj02CiBfemFydF9oYXNoPTM0ZWJmNmNjZTBiYWZiOThhYmU1N2NlYzgzYzRh MDJjZDFhYmVjYTAKIGNyZWF0ZV93cmtzcmM9eWVzCiBidWlsZF93cmtzcmM9InNyYyIKCkZyb20g NGJkYzMxZGViZTU2NDc3ZDZjOTlmNGQ3ZDM5YTdhYmQzNTAzMWY3MCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAxMCBO b3YgMjAyMyAxNDo1MzoxMCAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTAwLzExNV0gbWl4eHg6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9taXh4eC90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbWl4eHgvdGVtcGxhdGUgYi9zcmNwa2dzL21peHh4L3RlbXBsYXRlCmluZGV4 IDY5MjE5OTZlNGU3N2IuLjZhNzliMzI4YzFhYmYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWl4eHgv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9taXh4eC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ21peHh4JwogcGtnbmFtZT1taXh4eAogdmVyc2lvbj0yLjMuMwot cmV2aXNpb249NgorcmV2aXNpb249NwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdz PSItRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSIKIGhvc3RtYWtlZGVwZW5kcz0iZXh0cmEtY21h a2UtbW9kdWxlcyBwa2ctY29uZmlnIHByb3RvYnVmIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZSIK CkZyb20gNGVkOWVkZDczY2EyY2YzMjk1YjM2ZGQ5OWYxMWM1MmQwMjdkMGVkMCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJp LCAxMCBOb3YgMjAyMyAxNDo1MzoyOCAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTAxLzExNV0gbXVz aWtjdWJlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbXVzaWtjdWJlL3Rl bXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxhdGUgYi9zcmNwa2dzL211 c2lrY3ViZS90ZW1wbGF0ZQppbmRleCBkOWU2MTg2ZTY2OTdiLi42Mzc5NTJkNTBhY2EzIDEwMDY0 NAotLS0gYS9zcmNwa2dzL211c2lrY3ViZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL211c2lrY3Vi ZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ211c2lrY3Vi ZScKIHBrZ25hbWU9bXVzaWtjdWJlCiB2ZXJzaW9uPTMuMC4wCi1yZXZpc2lvbj0zCityZXZpc2lv bj00CiBidWlsZF9zdHlsZT1jbWFrZQogbWFrZV9jbWQ9bWFrZQogY29uZmlndXJlX2FyZ3M9Ii1E Tk9fTkNVUlNFU1c9MSIKCkZyb20gMmVjZmE5ZjVkMjQwMzdhYmM5NjA4MzJkZTk4YmZmOTNmMjAz N2FhMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogRnJpLCAxMCBOb3YgMjAyMyAxNDo1Mzo0NSAtMDUwMApTdWJqZWN0OiBbUEFU Q0ggMTAyLzExNV0gZWxlY3Ryb24yNDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNw a2dzL2VsZWN0cm9uMjQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMjQvdGVt cGxhdGUgYi9zcmNwa2dzL2VsZWN0cm9uMjQvdGVtcGxhdGUKaW5kZXggYTljODY1YzE5Yzk4OS4u Yjg2MTNlNDM2MmJjNyAxMDA2NDQKLS0tIGEvc3JjcGtncy9lbGVjdHJvbjI0L3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvZWxlY3Ryb24yNC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ2VsZWN0cm9uMjQnCiBwa2duYW1lPWVsZWN0cm9uMjQKIHZlcnNpb249MjQu My4wCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBfbm9kZXZlcj0xOC4xNC4wCiBfY2hyb21pdW12 ZXI9MTEyLjAuNTYxNS4xNjUKIGFyY2hzPSJ4ODZfNjQqIGFhcmNoNjQqIgoKRnJvbSBhZGRiYzY4 OTc3MTA3MDc4NTVhOTNlOTA2MDRkYzZkNDU0NDAzNDQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBGcmksIDEwIE5vdiAyMDIz IDE0OjU0OjAwIC0wNTAwClN1YmplY3Q6IFtQQVRDSCAxMDMvMTE1XSBlbGVjdHJvbjE5OiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZWxlY3Ryb24xOS90 ZW1wbGF0ZQppbmRleCBiMThiYzc5MmM4MjIxLi4yOWZiMzRlMjU0ZWVhIDEwMDY0NAotLS0gYS9z cmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9lbGVjdHJvbjE5L3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZWxlY3Ryb24xOScKIHBr Z25hbWU9ZWxlY3Ryb24xOQogdmVyc2lvbj0xOS4wLjgKLXJldmlzaW9uPTQKK3JldmlzaW9uPTUK IF9ub2RldmVyPTE2LjE0LjIKIF9jaHJvbWl1bXZlcj0xMDIuMC41MDA1LjEyNQogYXJjaHM9Ing4 Nl82NCogYWFyY2g2NCogcHBjNjRsZSoiCgpGcm9tIGYwYTFmZjZiNTk0YzRjMWIwOGRkMDAyY2Uy OGE4MTc3MTYyMzcyZDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTAgTm92IDIwMjMgMTQ6NTQ6MTMgLTA1MDAKU3Vi amVjdDogW1BBVENIIDEwNC8xMTVdIHdmLXJlY29yZGVyOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3Mvd2YtcmVjb3JkZXIvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3dm LXJlY29yZGVyL3RlbXBsYXRlIGIvc3JjcGtncy93Zi1yZWNvcmRlci90ZW1wbGF0ZQppbmRleCAw OGY5ODZiMDMxMDA2Li42M2M0NWNmNGI4MTRkIDEwMDY0NAotLS0gYS9zcmNwa2dzL3dmLXJlY29y ZGVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvd2YtcmVjb3JkZXIvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd3Zi1yZWNvcmRlcicKIHBrZ25hbWU9d2YtcmVj b3JkZXIKIHZlcnNpb249MC40LjEKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxl PW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgc2Nkb2Mgd2F5bGFuZC1kZXZlbCIK IG1ha2VkZXBlbmRzPSJ3YXlsYW5kLXByb3RvY29scyB3YXlsYW5kLWRldmVsIGZmbXBlZy1kZXZl bCBsaWJnYm0tZGV2ZWwgeDI2NC1kZXZlbAoKRnJvbSBiYWNiNDNlMWQzOTdiN2Y0ZTE4ZGM5NmI4 YzczNDFhMzRhYzg3YTcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBGcmksIDEwIE5vdiAyMDIzIDE0OjU0OjI2IC0wNTAwClN1 YmplY3Q6IFtQQVRDSCAxMDUvMTE1XSBvYnM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9vYnMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29icy90ZW1wbGF0ZSBiL3Ny Y3BrZ3Mvb2JzL3RlbXBsYXRlCmluZGV4IGIzNDNmMTEzMWJmY2YuLmEyNWE2NzQzM2UyODUgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3Mvb2JzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb2JzL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb2JzJwogcGtnbmFtZT1vYnMK IHZlcnNpb249MzAuMC4wCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBhcmNocz0iaTY4NiogeDg2 XzY0KiBwcGM2NGxlKiBhYXJjaDY0KiByaXNjdjY0KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25m aWd1cmVfYXJncz0iLURPQlNfVkVSU0lPTl9PVkVSUklERT0ke3ZlcnNpb259IC1ERU5BQkxFX0pB Q0s9T04KCkZyb20gODA2NjI2YWFhZGI4ZmNlMzkyOGUwOTdmNzYwYTgxNTA1NzE0NGFkMiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAxMCBOb3YgMjAyMyAxNDo1NDozNiAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTA2LzEx NV0gbWx0NzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21sdDcvdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL21sdDcvdGVtcGxhdGUgYi9zcmNwa2dzL21sdDcvdGVtcGxh dGUKaW5kZXggOThmMzAyYWQzYTUxNi4uN2ViOGMwMGZhMTU4MCAxMDA2NDQKLS0tIGEvc3JjcGtn cy9tbHQ3L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWx0Ny90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21sdDcnCiBwa2duYW1lPW1sdDcKIHZlcnNpb249Ny4y MC4wCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJl X2FyZ3M9Ii1EU1dJR19QWVRIT049T04gLURNT0RfUVQ2PU9OIgogaG9zdG1ha2VkZXBlbmRzPSJk b3h5Z2VuIHBrZy1jb25maWcgbGFkc3BhLXNkayBzd2lnIHB5dGhvbjMgd2hpY2gKCkZyb20gZjUy NWM0YjhiMWY2MDhkYmZmZjhkYmE3ZDdjMWU3YmY3NTE0MTU0NiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAxMCBOb3Yg MjAyMyAxNDo1NDo0OCAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTA3LzExNV0gcXQ2LW11bHRpbWVk aWE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9xdDYtbXVsdGltZWRpYS90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxhdGUgYi9zcmNw a2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlCmluZGV4IDY3YTU3N2UxMzAwZmUuLjFkYTYyNmVj ZjUxNWEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9xdDYtbXVsdGltZWRpYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ3F0Ni1tdWx0aW1lZGlhJwogcGtnbmFtZT1xdDYtbXVsdGltZWRpYQogdmVy c2lvbj02LjYuMAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNv bmZpZ3VyZV9hcmdzPSItRFFUX0ZFQVRVUkVfZ3N0cmVhbWVyPU9OIgogaG9zdG1ha2VkZXBlbmRz PSJwZXJsIHF0Ni1kZWNsYXJhdGl2ZS1ob3N0LXRvb2xzIHBrZy1jb25maWcgcXQ2LXNoYWRlcnRv b2xzIgoKRnJvbSBlMzUwNzlmOGRhMTM2NmJlM2NkODI0MWE5YzZjY2U1NTFiZDY3YWFjIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBGcmksIDEwIE5vdiAyMDIzIDE1OjAwOjE1IC0wNTAwClN1YmplY3Q6IFtQQVRDSCAxMDgvMTE1 XSBiYXJlc2lwOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYmFyZXNpcC90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYmFy ZXNpcC90ZW1wbGF0ZQppbmRleCAxMmM4OTU0ZWY3YjliLi5iMTZiNjdiZWFiOGQyIDEwMDY0NAot LS0gYS9zcmNwa2dzL2JhcmVzaXAvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9iYXJlc2lwL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYmFyZXNpcCcKIHBrZ25h bWU9YmFyZXNpcAogdmVyc2lvbj0zLjYuMAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRf c3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBnbGliLWRldmVsIgogbWFr ZWRlcGVuZHM9ImxpYmdzbS1kZXZlbCBsaWJwbmctZGV2ZWwgb3BlbnNzbC1kZXZlbCBsaWJzbmRm aWxlLWRldmVsCgpGcm9tIGY5Nzk1MTgzYjM4YzZmZDI3ODdjZWUzOWE4NTk3OTVjYzdjNjM0Zjcg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTAgTm92IDIwMjMgMTU6MDI6MzAgLTA1MDAKU3ViamVjdDogW1BBVENIIDEw OS8xMTVdIFFNUGxheTI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9RTVBs YXkyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9RTVBsYXkyL3RlbXBsYXRlIGIvc3JjcGtn cy9RTVBsYXkyL3RlbXBsYXRlCmluZGV4IDQ2YzgwZjY0YTEzNDkuLjk0MjI1OGNlNjBmYjcgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvUU1QbGF5Mi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL1FNUGxheTIv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdRTVBsYXkyJwog cGtnbmFtZT1RTVBsYXkyCiB2ZXJzaW9uPTIzLjEwLjIyCi1yZXZpc2lvbj0yCityZXZpc2lvbj0z CiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1xbWFr ZSBxdDUtaG9zdC10b29scyIKIG1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBmZm1wZWctZGV2 ZWwgbGliYXNzLWRldmVsIGxpYmNkaW8tZGV2ZWwgbGliZ21lLWRldmVsCgpGcm9tIDgwYjJhYjIy NzJhZjE2YmUwYzU4YTc1NTI4MDI1OTM0MTYxZTZhNDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTAgTm92IDIwMjMg MTU6MDI6MzQgLTA1MDAKU3ViamVjdDogW1BBVENIIDExMC8xMTVdIGFsc2EtcGx1Z2luczogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Fsc2EtcGx1Z2lucy90ZW1wbGF0ZSB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtncy9hbHNhLXBs dWdpbnMvdGVtcGxhdGUKaW5kZXggYTU3MDhhN2Q4MmE4Zi4uN2JmZGFkMDQ2YzQ4MyAxMDA2NDQK LS0tIGEvc3JjcGtncy9hbHNhLXBsdWdpbnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hbHNhLXBs dWdpbnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhbHNh LXBsdWdpbnMnCiBwa2duYW1lPWFsc2EtcGx1Z2lucwogdmVyc2lvbj0xLjIuNy4xCi1yZXZpc2lv bj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJn cz0iLS1kaXNhYmxlLW1hZW1vLXBsdWdpbiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIK CkZyb20gNmZhMDY0NjRkM2FhOGZiOWViMzAyNmQ0NWZkZGJiODZkZWIzMGE0MiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJp LCAxMCBOb3YgMjAyMyAxNTowMjozOSAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTExLzExNV0gZG9s cGhpbi1lbXU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9kb2xwaGluLWVt dS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxhdGUgYi9zcmNw a2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlCmluZGV4IDA3MDk5M2FhYzMxZDIuLjk2ZWRmNTBkM2U0 YTEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9kb2xwaGluLWVtdS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ2RvbHBoaW4tZW11JwogcGtnbmFtZT1kb2xwaGluLWVtdQogdmVyc2lvbj01LjAuMTkzNjgK LXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIF9kb2xwaGluX2NvbW1pdD1kYWRiZWI0YmFlN2U3ZmEy M2FmMmI0NmUwYWRkNDE0MzA5NGRjMTA3CiBfbWdiYV9jb21taXQ9NDRlMDc0YTE1ZTk2NTE0ODFm N2Y2NTJhYzAwNmE3YzlkNThjYmViOQogX2dvb2dsZXRlc3RfY29tbWl0PWJlMDNkMDBmNWYwY2Mz YTk5N2QxYTM2OGJlZThhMWZlOTM2NTFmNDgKCkZyb20gYzViZDI4MzU3NzNiNjc2OWRmMjNhNmI4 ODcyYTQ1NTlmNmFhNjYwYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAxMCBOb3YgMjAyMyAxNTowMjo0MyAtMDUwMApT dWJqZWN0OiBbUEFUQ0ggMTEyLzExNV0gbWluaWRsbmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWluaWRs bmEvdGVtcGxhdGUgYi9zcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlCmluZGV4IDVmYTkyOWYzYTBj MTIuLjc0Mjk5MWVjZDA0YWYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWluaWRsbmEvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ21pbmlkbG5hJwogcGtnbmFtZT1taW5pZGxuYQogdmVyc2lvbj0xLjMuMwot cmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmln dXJlX2FyZ3M9IgogIC0tc2JpbmRpcj0vdXNyL2JpbgoKRnJvbSBlZjRhNGNkOGU5YzkwYzQ1OWRj M2M4ODFmNWRjOGYwNTNiY2FjODJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBNb24sIDIwIE5vdiAyMDIzIDE3OjU3OjQ3IC0w NTAwClN1YmplY3Q6IFtQQVRDSCAxMTMvMTE1XSBtcHY6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9tcHYvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21wdi90ZW1wbGF0 ZSBiL3NyY3BrZ3MvbXB2L3RlbXBsYXRlCmluZGV4IDQ5NDhkMWUzMzJjYjguLjFhYzFiMTY3YWYx ODkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbXB2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbXB2L3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbXB2JwogcGtnbmFt ZT1tcHYKIHZlcnNpb249MC4zNi4wCi1yZXZpc2lvbj00CityZXZpc2lvbj01CiBidWlsZF9zdHls ZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EY2RkYT1lbmFibGVkIC1EZHZiaW49ZW5hYmxlZCAt RGR2ZG5hdj1lbmFibGVkCiAgLURsaWJtcHY9dHJ1ZSAtRGNwbHVnaW5zPWVuYWJsZWQKCkZyb20g ZjZmYjJhNGM3Yjk5ODlhNjA5NzNmODc0ZTM3MGU3OWRlMWVmYzA0MyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAyMCBO b3YgMjAyMyAxNzo1OToyOSAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTE0LzExNV0gcWltZ3Y6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9xaW1ndi90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUgYi9zcmNwa2dzL3FpbWd2L3RlbXBsYXRlCmluZGV4 IGRkMzQxZGZlMWJmY2UuLjhhN2UxYzA4MWVmMTIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcWltZ3Yv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ3FpbWd2JwogcGtnbmFtZT1xaW1ndgogdmVyc2lvbj0xLjAuMgot cmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdz PSIkKHZvcHRfaWYgdmlkZW8gLURWSURFT19TVVBQT1JUPU9OIC1EVklERU9fU1VQUE9SVD1PRkYp CiAgJCh2b3B0X2lmIHNjYWxlIC1ET1BFTkNWX1NVUFBPUlQ9T04gLURPUEVOQ1ZfU1VQUE9SVD1P RkYpCgpGcm9tIDcyYzI4OWY2Yjk4NDk4N2FmNjY0OTRmYjVkMDJjZWZjMmQ3ZTM0YjAgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IE1vbiwgMjAgTm92IDIwMjMgMTg6MDA6MzYgLTA1MDAKU3ViamVjdDogW1BBVENIIDExNS8xMTVd IGtmaWxlbWV0YWRhdGE1OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mva2Zp bGVtZXRhZGF0YTUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3Rl bXBsYXRlIGIvc3JjcGtncy9rZmlsZW1ldGFkYXRhNS90ZW1wbGF0ZQppbmRleCBlMjk0YWU1YWY5 NDdjLi4xNDUzYjM3NzIwYWUxIDEwMDY0NAotLS0gYS9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3Mva2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdrZmlsZW1ldGFkYXRhNScKIHBrZ25hbWU9a2ZpbGVt ZXRhZGF0YTUKIHZlcnNpb249NS4xMTEuMAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRf c3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0ia2NvcmVhZGRvbnMgZXh0cmEtY21ha2UtbW9k dWxlcyBwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZQogIGdldHRleHQga2NvcmVh ZGRvbnMgcHl0aG9uMyIK --===============7133597287947133695==--