From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Vince Salvino Newsgroups: gmane.emacs.bugs Subject: bug#51404: Support system dark mode on Windows 10 Date: Tue, 26 Oct 2021 18:20:35 +0000 Message-ID: References: <834k93zxyo.fsf@gnu.org> <838ryfyawv.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_002_CH2PR12MB4231BF93A366641B94D7A636A5849CH2PR12MB4231namp_" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="11886"; mail-complaints-to="usenet@ciao.gmane.io" Cc: "51404@debbugs.gnu.org" <51404@debbugs.gnu.org> To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Oct 26 20:47:32 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mfRTv-0002ry-Iv for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 26 Oct 2021 20:47:31 +0200 Original-Received: from localhost ([::1]:39478 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mfRTu-00056k-5u for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 26 Oct 2021 14:47:30 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:55992) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mfR4J-0000nI-2x for bug-gnu-emacs@gnu.org; Tue, 26 Oct 2021 14:21:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:35992) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mfR4I-0005xI-PR for bug-gnu-emacs@gnu.org; Tue, 26 Oct 2021 14:21:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mfR4I-0007wl-Hj for bug-gnu-emacs@gnu.org; Tue, 26 Oct 2021 14:21:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Vince Salvino Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 26 Oct 2021 18:21:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51404 X-GNU-PR-Package: emacs Original-Received: via spool by 51404-submit@debbugs.gnu.org id=B51404.163527244630499 (code B ref 51404); Tue, 26 Oct 2021 18:21:02 +0000 Original-Received: (at 51404) by debbugs.gnu.org; 26 Oct 2021 18:20:46 +0000 Original-Received: from localhost ([127.0.0.1]:47538 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mfR42-0007vr-2S for submit@debbugs.gnu.org; Tue, 26 Oct 2021 14:20:46 -0400 Original-Received: from mail-bn8nam12on2074.outbound.protection.outlook.com ([40.107.237.74]:26848 helo=NAM12-BN8-obe.outbound.protection.outlook.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mfR40-0007vc-AI for 51404@debbugs.gnu.org; Tue, 26 Oct 2021 14:20:44 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FEmjLJyJQHl8jj8ZvV0wL8/zUFAR4BmYo+4ihdoMg/f5FA4GY2rjq3hhZ4WrCXSQjDgOCEsk6uCxYpVsNnX8b9saGtFD7cu0SWzac1esfWnhju+P2XB6BAQplv++OJyYMeupWZf+Fx+L5MC9LUaTZlKLigWeuyrKZKCOU8EjBnf/6UeICXfmFtCYtTnKD9qu2E/dVtsQ6vivXF9Ix5/Wbf2d12S0PCwiraivE8WOkzser8BPSkK2m2zBzGZ/r4hi1a6rAQgfG//ZdZLMMBZbGy14Y0mBDQ2Mdwv7mDO1KhXttqOeub0Fvn192YJjBa9/ELJPfSsWujFLmLDRElx+8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tyiGOIAMRL/aMC3rkRXt91XaQBkS4HJ93MopFaTtLH0=; b=IpiDsQJ0nIdJho1NVIJuwlxh1sXhH3ju9tnWU7MWGXFo8hNQ0QqsnriAzQFPDnG61LeSt3OlGHY4VN90n7Vw/42+Xc93moZY3Mf9jfco83D1WJ6XnMQ0yc4eXa9W1Zogac0yvvEiDBQX2TV68qqJQ/64wFeSegxbxKM+e8i0WKN7o1FpePGnolO4z5uPwPRh4NXuX8SITzg7Dczn4Evs6nDuDhHOj8q/EOk6eH1pvx/azdeq+DG54aYA6ceBZy48topIWB9+dnCHeqyhjKYMXc5VQqIpClo5tfD0UsJppW/AiONDliFs+jf/Mida6Q8kJatenH5UaQPf+JwqKuwiOw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=coderedcorp.com; dmarc=pass action=none header.from=coderedcorp.com; dkim=pass header.d=coderedcorp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=coderedcorp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tyiGOIAMRL/aMC3rkRXt91XaQBkS4HJ93MopFaTtLH0=; b=q8DhPzItlXaEceh/rf/FbzlIS8FvP6K1mFmRggWfdCAPK5aDeU9zSo3p7AAi2kOAslVi2yaDMpodkJHTDj7iBowOKCRe98iZ5VoUkiSWINpRb2BJjrYoLcQZbXoSHRe3dEsKN75KlfBhTrijlJKswW4wyRcRPijmt9jugAP+f14= Original-Received: from CH2PR12MB4231.namprd12.prod.outlook.com (2603:10b6:610:7d::24) by CH2PR12MB4021.namprd12.prod.outlook.com (2603:10b6:610:2b::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.14; Tue, 26 Oct 2021 18:20:36 +0000 Original-Received: from CH2PR12MB4231.namprd12.prod.outlook.com ([fe80::55e4:7d22:a6df:970b]) by CH2PR12MB4231.namprd12.prod.outlook.com ([fe80::55e4:7d22:a6df:970b%5]) with mapi id 15.20.4649.014; Tue, 26 Oct 2021 18:20:36 +0000 Thread-Topic: bug#51404: Support system dark mode on Windows 10 Thread-Index: AdfKJC1fFkosmLKeRpu5RIGxKoA2egATeE0VAAVMuSAAARwnVAACGfog In-Reply-To: <838ryfyawv.fsf@gnu.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes authentication-results: gnu.org; dkim=none (message not signed) header.d=none;gnu.org; dmarc=none action=none header.from=coderedcorp.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 09f3a8c4-0c84-45e7-258c-08d998ad4e52 x-ms-traffictypediagnostic: CH2PR12MB4021: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: M0fKjSPN/Nv2WeVohTOQAgK8sz/9y4HEfSe0z47sTJw6FEyxd2GRhgYpDMdfLAvTxTEHvLYhfyfJhqtnb13YgajI6Hb0ogI73VvlXkgbnYhgvdVi3l41vTA7LrXenzeDHR5snnyS6TJVXGULmrBw+ZJKpQ480PE50gzN37C1xQIhbg8gIHJ7OSoeSphTTeC8WNbwulhjIEsoGcHueXtmklaWMhePR6FMxxOhBQd0Plb6BPxJmR6XPGpyxqPpvOaidlGophKIhIFhdVaLSK0N9radtoRP7aPH5hfT7pYT33biYu/7YxheyFDXNrtCV93aq5ibNfmbofISVKkTpWsVRXbHeNSUGp6x/zeYSmSQYXdiiAeZz77etmbucb6PAjTnH/E49mKH8KF3s+HuKE/AH1IJHklp4+P/dt847re1UPHBI+6ovfUljelws63nfb56NKpddKbvhiiuR8bk0LNPEVveY4s+jP/wUDXGO3JAmOOMJKe/FIjQaPSKLFGuPiRi16p9/R13mWN4UC0cy4HHdz73G4e0RMsbvk8xlYFtjf7TjwROsloZUFBtdQrz/X4dqiCgHGlNPpQqzrdCNOjWh3OdwUQ3q5VM7z+Ju9DN+f32FZioqO0uP0W3YZwH/Xuss81k/dKwr2X7nLf1wdm6wglnqqdbJUmNiduS7+aWvGedCmXUUFghtIV6i+KSNl8ItSzW70qx7AsYTeGTyWK08FJGoDD2JdoTe3958BLQABrkNTihVBYddaS8Fwlrw nmVE4amADwcKAQOwfmE+X1uRgEuMWapkV2Pr7iNpeHr12A= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR12MB4231.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(136003)(376002)(396003)(39830400003)(346002)(966005)(8676002)(508600001)(66556008)(66946007)(66446008)(66476007)(7696005)(64756008)(316002)(6916009)(83380400001)(8936002)(52536014)(186003)(86362001)(99936003)(76116006)(33656002)(71200400001)(6506007)(53546011)(2906002)(38100700002)(26005)(122000001)(4326008)(9686003)(66574015)(55016002)(5660300002)(38070700005); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: G2GOdIkRgMUxnPNHuMCKOpFNTkNAYkPC05vLMInWMYamcixF0A4/nlIhIOm5ZwbcdikDMFPcFwLBG4mrp9+m2PIS/tvVZWYzmTgxkMOldSboDIj0hLXIxRbnZ+flu0sH8QDxPmF3MmrlQGCvKwV6CfRk0+h+CIb+OxibEPG2YomX+PydYpkqxh+88Fkp0GJM9kYm+Y+CC+HsUBTT2nv3JQYFfBwGM0NHuY6VKG2iOEpwzXGSj1HftHwP9rX+msMfKaI0dw4x/DwbIM8jNVDlX1G6ZnTN9oX9ksm5kN2MOAslnVaJhYy0ztlaJKj9AV3N+uHvmFNLAEo1VqV7tClgtTeMgrwqouj+ra5jVmVlzkVr4ZZpOSYcgYOtoMHtwREYZqGvGFMF0rYMF2O1992jvk5ul8BZ5MCZDejL+ZxBtzoa0gsX0lYh8pP8azhu2BoQHu/heNd96W63FEc8s0xLJltLeoQjlQ5qeNAI/s/CiHjytLRzy2GDaydNQHlRHeSMoRNdFeWe/VRvYidXEo+ZcHvxPSiDgvStNDdWytvM21P7U4LGf/dFk3JcurzrsTwpZdZbHk6mU8d5Q22Q6RXvV2L92tIiG0eTV0gJYyHjElCKxOoBZFueCnYb1cGMu3NaVDgfAMD59oOFnffycDSwul9Vy+iu4VeaBpUmdrwXpCwvoRvZ7pFglBvwjgiod0FWzQbyN9CRK5Ywh3c6y2gwMkDZ0BlizmKJqUzsTQWbGkuMGRMup6FpGK3JX5 f2zqHuNliQAS1OKbOTvbLaXrqhlzni9nuJL7ppu+lr6BHgORxLRy/K7UTYhzO/z2ZT2xWN62/7lOcmbQSWQ65uN9fwE6GmyFBW X-OriginatorOrg: coderedcorp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB4231.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 09f3a8c4-0c84-45e7-258c-08d998ad4e52 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Oct 2021 18:20:35.9430 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9c94adb1-2ce8-484f-be82-c9b5127d4cb1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: HUU41ZFohWmT3NN3h6FlJC2a+Ku7uYlfD/ZvIwuqwWmfhIJJ0mVU3MR18WUIYg3n0vh8evEbEFkpYsmWf83kwQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4021 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:218397 Archived-At: --_002_CH2PR12MB4231BF93A366641B94D7A636A5849CH2PR12MB4231namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Attached is the patch with some of your comments resolved. Regarding exposing DARK_MODE_APP_NAME to lisp, I am staunchly against that.= If users want to potentially segfault their emacs, or make the frame invis= ible/unusable, they are more than welcome to play with the C code. Regarding toggling dark mode from within lisp, I think that is a decent ide= a, and left a TODO in the relevant place in the code. Help would be appreci= ated here. The current functionality is not "unconditional" per se, it foll= ows the user-configurable OS setting (which is light by default, so no visu= al change from previous versions of Emacs). The manual has been updated wit= h a relevant note. Vince Salvino -----Original Message----- From: Eli Zaretskii =20 Sent: Tuesday, October 26, 2021 1:06 PM To: Vince Salvino Cc: 51404@debbugs.gnu.org Subject: Re: bug#51404: Support system dark mode on Windows 10 > From: Vince Salvino > CC: "51404@debbugs.gnu.org" <51404@debbugs.gnu.org> > Date: Tue, 26 Oct 2021 16:49:34 +0000 >=20 > > > +#define DARK_MODE_APP_NAME L"DarkMode_Explorer" >=20 > > Can we make this exposed to Lisp, rather than hard-coded? Hard-coding = a specific application for a theme sounds un-Emacsy. People could want to = experiment with other apps. >=20 > Given that this is not so much a preference, as an undocumented magic str= ing in Win32, I think anyone who wants to play with this is going to requir= e knowledge of C and gdb to experiment, to risk causing erratic and unknown= behavior. So I would be inclined to keep it in C. These "undocumented" strings are all over the Internet, so... Here are some examples that people may wish trying: https://stackoverflow.com/questions/19712368/c-winapi-old-styled-window https://developercommunity.visualstudio.com/t/tree-controls-not-displayed= -correctly-in-windows-1/423037 And this is just from a couple of minutes of searching the Internet. > > +/* Applies the Windows system theme (light or dark) to a window=20 > > +handle. */ static void w32_applytheme(HWND hwnd) { > > + if (w32_darkmode) { > > + /* Set window theme to that of a built-in Windows app (Explorer) > > + because it has dark scroll bars and other UI elements. */ >=20 > > Likewise here: it should be able to control this behavior by a user opt= ion. We cannot assume that every Emacs user will automatically want to fol= low the system theme. >=20 > I agree this would be a "nice to have", but the current functionality is = in-line with behavior on other systems (GTK, macOS, etc. i.e. the applicati= on has no say in window decorations which are controlled by the window mana= ger). If we did add an elisp setting it should default to the registry valu= e at runtime. I also have no idea how to create an elisp setting and read i= t in C. Examples or contributions to this patch would be helpful. The GTK behavior is a bad example, so I'd rather not follow it. Doesn't the patch in its current form unconditionally change the appearance= of Emacs in some cases? I think it does, and that means we will have comp= laints about unexpected change in behavior. You can also bet on someone di= sliking the result. So I think this has to be customizable; let me know if= you need help in doing that. --_002_CH2PR12MB4231BF93A366641B94D7A636A5849CH2PR12MB4231namp_ Content-Type: application/octet-stream; name="0001-Support-system-dark-mode-on-Windows-10-version-2004-.patch" Content-Description: 0001-Support-system-dark-mode-on-Windows-10-version-2004-.patch Content-Disposition: attachment; filename="0001-Support-system-dark-mode-on-Windows-10-version-2004-.patch"; size=10781; creation-date="Tue, 26 Oct 2021 18:13:08 GMT"; modification-date="Tue, 26 Oct 2021 18:02:09 GMT" Content-Transfer-Encoding: base64 RnJvbSAyY2M3ZWJlOWVkN2RhYjBlMjQ0M2E2ODMwY2Q2YTA2ZDU3ODMxZDE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaW5jZSBTYWx2aW5vIDxzYWx2aW5vQGNvZGVyZWRjb3JwLmNv bT4KRGF0ZTogTW9uLCAyNSBPY3QgMjAyMSAyMjoxODo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0hd IFN1cHBvcnQgc3lzdGVtIGRhcmsgbW9kZSBvbiBXaW5kb3dzIDEwIHZlcnNpb24gMjAwNCBhbmQK IGhpZ2hlci4KCi0tLQogZG9jL2VtYWNzL21zZG9zLnRleGkgfCAgNyArKysrCiBldGMvTkVXUyAg ICAgICAgICAgICB8ICA4ICsrKysrCiBzcmMvdzMyLmMgICAgICAgICAgICB8IDIzICsrKysrKyst LS0tLQogc3JjL3czMi5oICAgICAgICAgICAgfCAgNSArLS0KIHNyYy93MzJmbnMuYyAgICAgICAg IHwgODUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIDUgZmls ZXMgY2hhbmdlZCwgMTE2IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RvYy9lbWFjcy9tc2Rvcy50ZXhpIGIvZG9jL2VtYWNzL21zZG9zLnRleGkKaW5kZXggMGY4 ZjQyOWIzZi4uMTlhZGM1MjU2YyAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL21zZG9zLnRleGkKKysr IGIvZG9jL2VtYWNzL21zZG9zLnRleGkKQEAgLTExODEsNiArMTE4MSwxMyBAQCBXaW5kb3dzIE1p c2MKIGNsaWNrLXRvLWZvY3VzIHBvbGljeS4KIEBlbmQgaWZub3R0ZXgKIAorICBPbiBXaW5kb3dz IDEwICh2ZXJzaW9uIDIwMDQgYW5kIGhpZ2hlcikgYW5kIFdpbmRvd3MgMTEsIEVtYWNzIHRpdGxl CitiYXJzIGFuZCBzY3JvbGwgYmFycyB3aWxsIGZvbGxvdyB0aGUgc3lzdGVtIExpZ2h0IG9yIERh cmsgbW9kZSwKK3NpbWlsYXIgdG8gb3RoZXIgcHJvZ3JhbXMgc3VjaCBhcyBFeHBsb3JlciBhbmQg Q29tbWFuZCBQcm9tcHQuIFRvCitjaGFuZ2UgdGhlIGNvbG9yIG1vZGU6IFdpbmRvd3MgU2V0dGlu Z3MgPiBQZXJzb25hbGl6YXRpb24gPiBDb2xvcnMgPgorQ2hvb3NlIHlvdXIgY29sb3IgKG9yIENo b29zZSB5b3VyIGRlZmF1bHQgYXBwIG1vZGUpOyB0aGVuIHJlc3RhcnQKK0VtYWNzLgorCiBAaWZu b3R0ZXgKIEBpbmNsdWRlIG1zZG9zLXh0cmEudGV4aQogQGVuZCBpZm5vdHRleApkaWZmIC0tZ2l0 IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCA2ZDMyNTY5NTllLi44ZThlZmM1OTgyIDEwMDY0 NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAtNzMsNiArNzMsMTQgQEAgSW1hZ2Ug c3BlY2lmaWVycyBjYW4gbm93IHVzZSAnOnR5cGUgd2VicCcuCiAqKiogJ2Rpc3BsYXktYnVmZmVy JyBub3cgY2FuIHNldCB1cCB0aGUgYm9keSBzaXplIG9mIHRoZSBjaG9zZW4gd2luZG93LgogRm9y IGV4YW1wbGUsIGFuIGFsaXN0IGVudHJ5IGFzICcod2luZG93LXdpZHRoIC4gKGJvZHktY29sdW1u cyAuIDQwKSknCiB3aWxsIG1ha2UgdGhlIGJvZHkgb2YgdGhlIGNob3NlbiB3aW5kb3cgNDAgY29s dW1ucyB3aWRlLgorCisqKiBNUy1XaW5kb3dzCisKKysrKworKioqIFN1cHBvcnRzIE9TIGRhcmsg dGhlbWUgb24gV2luZG93cyAxMCAodmVyc2lvbiAyMDA0IGFuZCBoaWdoZXIpLgorR3JhcGhpY2Fs IGZyYW1lcyBub3cgdXNlIHRoZSBhcHByb3ByaWF0ZSBsaWdodCBvciBkYXJrIHRpdGxlIGJhciBh bmQKK3Njcm9sbCBiYXJzLCBiYXNlZCBvbiB0aGUgdXNlcidzIFdpbmRvd3MgY29sb3Igc2V0dGlu Z3MuCisKIAwKICogRWRpdGluZyBDaGFuZ2VzIGluIEVtYWNzIDI5LjEKIApkaWZmIC0tZ2l0IGEv c3JjL3czMi5jIGIvc3JjL3czMi5jCmluZGV4IDlmZTY5OGQyOGQuLjM2OWU3ZWU0ZTEgMTAwNjQ0 Ci0tLSBhL3NyYy93MzIuYworKysgYi9zcmMvdzMyLmMKQEAgLTI4MjAsOCArMjgyMCwxNSBAQCBz eXNfcHV0ZW52IChjaGFyICpzdHIpCiAKICNkZWZpbmUgUkVHX1JPT1QgIlNPRlRXQVJFXFxHTlVc XEVtYWNzIgogCisvKiBRdWVyeSBhIHZhbHVlIGZyb20gdGhlIFdpbmRvd3MgUmVnaXN0cnkgKHVu ZGVyIEhLQ1UgYW5kIEhLTE0pLAorICAgd2hlcmUgYGtleWAgaXMgdGhlIHJlZ2lzdHJ5IGtleSwg YG5hbWVgIGlzIHRoZSBuYW1lLCBhbmQgYGxwZHd0eXBlYAorICAgaXMgYSBwb2ludGVyIHRvIHRo ZSByZXR1cm4gdmFsdWUncyB0eXBlLiBgbHB3ZHR5cGVgIGNhbiBiZSBOVUxMIGlmCisgICB5b3Ug ZG8gbm90IGNhcmUgYWJvdXQgdGhlIHR5cGUuCisKKyAgIFJldHVybnM6IHBvaW50ZXIgdG8gdGhl IHZhbHVlLCBvciBudWxsIHBvaW50ZXIgaWYgdGhlIGtleS9uYW1lIGRvZXMKKyAgIG5vdCBleGlz dC4gKi8KIExQQllURQotdzMyX2dldF9yZXNvdXJjZSAoY29uc3QgY2hhciAqa2V5LCBMUERXT1JE IGxwZHd0eXBlKQordzMyX2dldF9yZXNvdXJjZSAoY29uc3QgY2hhciAqa2V5LCBjb25zdCBjaGFy ICpuYW1lLCBMUERXT1JEIGxwZHd0eXBlKQogewogICBMUEJZVEUgbHB2YWx1ZTsKICAgSEtFWSBo cm9vdGtleSA9IE5VTEw7CkBAIC0yODMwLDEzICsyODM3LDEzIEBAIHczMl9nZXRfcmVzb3VyY2Ug KGNvbnN0IGNoYXIgKmtleSwgTFBEV09SRCBscGR3dHlwZSkKICAgLyogQ2hlY2sgYm90aCB0aGUg Y3VycmVudCB1c2VyIGFuZCB0aGUgbG9jYWwgbWFjaGluZSB0byBzZWUgaWYKICAgICAgd2UgaGF2 ZSBhbnkgcmVzb3VyY2VzLiAgKi8KIAotICBpZiAoUmVnT3BlbktleUV4IChIS0VZX0NVUlJFTlRf VVNFUiwgUkVHX1JPT1QsIDAsIEtFWV9SRUFELCAmaHJvb3RrZXkpID09IEVSUk9SX1NVQ0NFU1Mp CisgIGlmIChSZWdPcGVuS2V5RXggKEhLRVlfQ1VSUkVOVF9VU0VSLCBrZXksIDAsIEtFWV9SRUFE LCAmaHJvb3RrZXkpID09IEVSUk9SX1NVQ0NFU1MpCiAgICAgewogICAgICAgbHB2YWx1ZSA9IE5V TEw7CiAKLSAgICAgIGlmIChSZWdRdWVyeVZhbHVlRXggKGhyb290a2V5LCBrZXksIE5VTEwsIE5V TEwsIE5VTEwsICZjYkRhdGEpID09IEVSUk9SX1NVQ0NFU1MKKyAgICAgIGlmIChSZWdRdWVyeVZh bHVlRXggKGhyb290a2V5LCBuYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCAmY2JEYXRhKSA9PSBFUlJP Ul9TVUNDRVNTCiAJICAmJiAobHB2YWx1ZSA9IHhtYWxsb2MgKGNiRGF0YSkpICE9IE5VTEwKLQkg ICYmIFJlZ1F1ZXJ5VmFsdWVFeCAoaHJvb3RrZXksIGtleSwgTlVMTCwgbHBkd3R5cGUsIGxwdmFs dWUsICZjYkRhdGEpID09IEVSUk9SX1NVQ0NFU1MpCisJICAmJiBSZWdRdWVyeVZhbHVlRXggKGhy b290a2V5LCBuYW1lLCBOVUxMLCBscGR3dHlwZSwgbHB2YWx1ZSwgJmNiRGF0YSkgPT0gRVJST1Jf U1VDQ0VTUykKIAl7CiAgICAgICAgICAgUmVnQ2xvc2VLZXkgKGhyb290a2V5KTsKIAkgIHJldHVy biAobHB2YWx1ZSk7CkBAIC0yODQ3LDEzICsyODU0LDEzIEBAIHczMl9nZXRfcmVzb3VyY2UgKGNv bnN0IGNoYXIgKmtleSwgTFBEV09SRCBscGR3dHlwZSkKICAgICAgIFJlZ0Nsb3NlS2V5IChocm9v dGtleSk7CiAgICAgfQogCi0gIGlmIChSZWdPcGVuS2V5RXggKEhLRVlfTE9DQUxfTUFDSElORSwg UkVHX1JPT1QsIDAsIEtFWV9SRUFELCAmaHJvb3RrZXkpID09IEVSUk9SX1NVQ0NFU1MpCisgIGlm IChSZWdPcGVuS2V5RXggKEhLRVlfTE9DQUxfTUFDSElORSwga2V5LCAwLCBLRVlfUkVBRCwgJmhy b290a2V5KSA9PSBFUlJPUl9TVUNDRVNTKQogICAgIHsKICAgICAgIGxwdmFsdWUgPSBOVUxMOwog Ci0gICAgICBpZiAoUmVnUXVlcnlWYWx1ZUV4IChocm9vdGtleSwga2V5LCBOVUxMLCBOVUxMLCBO VUxMLCAmY2JEYXRhKSA9PSBFUlJPUl9TVUNDRVNTCisgICAgICBpZiAoUmVnUXVlcnlWYWx1ZUV4 IChocm9vdGtleSwgbmFtZSwgTlVMTCwgTlVMTCwgTlVMTCwgJmNiRGF0YSkgPT0gRVJST1JfU1VD Q0VTUwogCSAgJiYgKGxwdmFsdWUgPSB4bWFsbG9jIChjYkRhdGEpKSAhPSBOVUxMCi0JICAmJiBS ZWdRdWVyeVZhbHVlRXggKGhyb290a2V5LCBrZXksIE5VTEwsIGxwZHd0eXBlLCBscHZhbHVlLCAm Y2JEYXRhKSA9PSBFUlJPUl9TVUNDRVNTKQorCSAgJiYgUmVnUXVlcnlWYWx1ZUV4IChocm9vdGtl eSwgbmFtZSwgTlVMTCwgbHBkd3R5cGUsIGxwdmFsdWUsICZjYkRhdGEpID09IEVSUk9SX1NVQ0NF U1MpCiAJewogICAgICAgICAgIFJlZ0Nsb3NlS2V5IChocm9vdGtleSk7CiAJICByZXR1cm4gKGxw dmFsdWUpOwpAQCAtMzA3Nyw3ICszMDg0LDcgQEAgI2RlZmluZSBTRVRfRU5WX0JVRl9TSVpFICg0 ICogTUFYX1BBVEgpCS8qIHRvIGNvdmVyIEVNQUNTTE9BRFBBVEggKi8KIAkgICAgaW50IGRvbnRf ZnJlZSA9IDA7CiAJICAgIGNoYXIgYnVmY1tTRVRfRU5WX0JVRl9TSVpFXTsKIAotCSAgICBpZiAo KGxwdmFsID0gdzMyX2dldF9yZXNvdXJjZSAoZW52X3ZhcnNbaV0ubmFtZSwgJmR3VHlwZSkpID09 IE5VTEwKKwkgICAgaWYgKChscHZhbCA9IHczMl9nZXRfcmVzb3VyY2UgKFJFR19ST09ULCBlbnZf dmFyc1tpXS5uYW1lLCAmZHdUeXBlKSkgPT0gTlVMTAogCQkvKiBBbHNvIGlnbm9yZSBlbXB0eSBl bnZpcm9ubWVudCB2YXJpYWJsZXMuICAqLwogCQl8fCAqbHB2YWwgPT0gMCkKIAkgICAgICB7CmRp ZmYgLS1naXQgYS9zcmMvdzMyLmggYi9zcmMvdzMyLmgKaW5kZXggZmZhMTQ1YjE0OC4uZWMwZjM3 MTIzZSAxMDA2NDQKLS0tIGEvc3JjL3czMi5oCisrKyBiL3NyYy93MzIuaApAQCAtMTYxLDggKzE2 MSw5IEBAICNkZWZpbmUgRklMRV9TRVJJQUwgICAgICAgICAgICAgMHgwODAwCiBleHRlcm4gdm9p ZCByZXNldF9zdGFuZGFyZF9oYW5kbGVzIChpbnQgaW4sIGludCBvdXQsCiAJCQkJICAgIGludCBl cnIsIEhBTkRMRSBoYW5kbGVzWzRdKTsKIAotLyogUmV0dXJuIHRoZSBzdHJpbmcgcmVzb3VyY2Ug YXNzb2NpYXRlZCB3aXRoIEtFWSBvZiB0eXBlIFRZUEUuICAqLwotZXh0ZXJuIExQQllURSB3MzJf Z2V0X3Jlc291cmNlIChjb25zdCBjaGFyICoga2V5LCBMUERXT1JEIHR5cGUpOworLyogUXVlcnkg V2luZG93cyBSZWdpc3RyeSBhbmQgcmV0dXJuIHRoZSByZXNvdXJjZSBhc3NvY2lhdGVkCisgICBh c3NvY2lhdGVkIHdpdGggS0VZIGFuZCBOQU1FIG9mIHR5cGUgVFlQRS4gICovCitleHRlcm4gTFBC WVRFIHczMl9nZXRfcmVzb3VyY2UgKGNvbnN0IGNoYXIgKiBrZXksIGNvbnN0IGNoYXIgKiBuYW1l LCBMUERXT1JEIHR5cGUpOwogCiBleHRlcm4gdm9pZCByZWxlYXNlX2xpc3Rlbl90aHJlYWRzICh2 b2lkKTsKIGV4dGVybiB2b2lkIGluaXRfbnRwcm9jIChpbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL3cz MmZucy5jIGIvc3JjL3czMmZucy5jCmluZGV4IDE0ZDExNTRhMmIuLmRiZDhhMDFmZGMgMTAwNjQ0 Ci0tLSBhL3NyYy93MzJmbnMuYworKysgYi9zcmMvdzMyZm5zLmMKQEAgLTczLDYgKzczLDE1IEBA ICNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4MDYwMAogI2luY2x1ZGUgPGltbS5oPgogI2luY2x1ZGUg PHdpbmRvd3N4Lmg+CiAKKy8qCisgIEludGVybmFsL3VuZG9jdW1lbnRlZCBjb25zdGFudHMgZm9y IFdpbmRvd3MgRGFyayBtb2RlLgorICBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQv V2luZG93c0FwcFNESy9pc3N1ZXMvNDEKKyovCisjZGVmaW5lIERBUktfTU9ERV9BUFBfTkFNRSBM IkRhcmtNb2RlX0V4cGxvcmVyIgorI2lmbmRlZiBEV01XQV9VU0VfSU1NRVJTSVZFX0RBUktfTU9E RQorI2RlZmluZSBEV01XQV9VU0VfSU1NRVJTSVZFX0RBUktfTU9ERSAyMAorI2VuZGlmCisKICNp Zm5kZWYgRk9GX05PX0NPTk5FQ1RFRF9FTEVNRU5UUwogI2RlZmluZSBGT0ZfTk9fQ09OTkVDVEVE X0VMRU1FTlRTIDB4MjAwMAogI2VuZGlmCkBAIC0xODUsNiArMTk0LDExIEBAIERFQ0xBUkVfSEFO RExFKEhNT05JVE9SKTsKIHR5cGVkZWYgSFJFU1VMVCAoV0lOQVBJICpTZXRUaHJlYWREZXNjcmlw dGlvbl9Qcm9jKQogICAoSEFORExFIGhUaHJlYWQsIFBDV1NUUiBscFRocmVhZERlc2NyaXB0aW9u KTsKIAordHlwZWRlZiBIUkVTVUxUIChXSU5BUEkgKiBTZXRXaW5kb3dUaGVtZV9Qcm9jKQorICAo SU4gSFdORCBod25kLCBJTiBMUENXU1RSIHBzelN1YkFwcE5hbWUsIElOIExQQ1dTVFIgcHN6U3Vi SWRMaXN0KTsKK3R5cGVkZWYgSFJFU1VMVCAoV0lOQVBJICogRHdtU2V0V2luZG93QXR0cmlidXRl X1Byb2MpCisgIChIV05EIGh3bmQsIERXT1JEIGR3QXR0cmlidXRlLCBJTiBMUENWT0lEIHB2QXR0 cmlidXRlLCBEV09SRCBjYkF0dHJpYnV0ZSk7CisKIFRyYWNrTW91c2VFdmVudF9Qcm9jIHRyYWNr X21vdXNlX2V2ZW50X2ZuID0gTlVMTDsKIEltbUdldENvbXBvc2l0aW9uU3RyaW5nX1Byb2MgZ2V0 X2NvbXBvc2l0aW9uX3N0cmluZ19mbiA9IE5VTEw7CiBJbW1HZXRDb250ZXh0X1Byb2MgZ2V0X2lt ZV9jb250ZXh0X2ZuID0gTlVMTDsKQEAgLTE5OSw2ICsyMTMsOCBAQCBERUNMQVJFX0hBTkRMRShI TU9OSVRPUik7CiBHZXRUaXRsZUJhckluZm9fUHJvYyBnZXRfdGl0bGVfYmFyX2luZm9fZm4gPSBO VUxMOwogSXNEZWJ1Z2dlclByZXNlbnRfUHJvYyBpc19kZWJ1Z2dlcl9wcmVzZW50ID0gTlVMTDsK IFNldFRocmVhZERlc2NyaXB0aW9uX1Byb2Mgc2V0X3RocmVhZF9kZXNjcmlwdGlvbiA9IE5VTEw7 CitTZXRXaW5kb3dUaGVtZV9Qcm9jIFNldFdpbmRvd1RoZW1lX2ZuID0gTlVMTDsKK0R3bVNldFdp bmRvd0F0dHJpYnV0ZV9Qcm9jIER3bVNldFdpbmRvd0F0dHJpYnV0ZV9mbiA9IE5VTEw7CiAKIGV4 dGVybiBBcHBlbmRNZW51V19Qcm9jIHVuaWNvZGVfYXBwZW5kX21lbnU7CiAKQEAgLTI1Miw2ICsy NjgsOSBAQCAjZGVmaW5lIE1FTlVfRlJFRV9ERUxBWSAxMDAwCiBpbnQgdzMyX21pbm9yX3ZlcnNp b247CiBpbnQgdzMyX2J1aWxkX251bWJlcjsKIAorLyogSWYgdGhlIE9TIGlzIHNldCB0byB1c2Ug ZGFyayBtb2RlLiAqLworQk9PTCB3MzJfZGFya21vZGUgPSBGQUxTRTsKKwogLyogRGlzdGluZ3Vp c2ggYmV0d2VlbiBXaW5kb3dzIE5UIGFuZCBXaW5kb3dzIDk1LiAgKi8KIGludCBvc19zdWJ0eXBl OwogCkBAIC0yMjc5LDEwICsyMjk4LDM0IEBAIHczMl9pbml0X2NsYXNzIChISU5TVEFOQ0UgaGlu c3QpCiAgICAgfQogfQogCisvKiBBcHBsaWVzIHRoZSBXaW5kb3dzIHN5c3RlbSB0aGVtZSAobGln aHQgb3IgZGFyaykgdG8gYSB3aW5kb3cgaGFuZGxlLiAqLworc3RhdGljIHZvaWQKK3czMl9hcHBs eXRoZW1lIChIV05EIGh3bmQpCit7CisgIGlmICh3MzJfZGFya21vZGUpCisgICAgeworICAgICAg LyogU2V0IHdpbmRvdyB0aGVtZSB0byB0aGF0IG9mIGEgYnVpbHQtaW4gV2luZG93cyBhcHAgKEV4 cGxvcmVyKQorCSBiZWNhdXNlIGl0IGhhcyBkYXJrIHNjcm9sbCBiYXJzIGFuZCBvdGhlciBVSSBl bGVtZW50cy4gKi8KKyAgICAgIGlmIChTZXRXaW5kb3dUaGVtZV9mbikKKwl7CisJICBTZXRXaW5k b3dUaGVtZV9mbiAoaHduZCwgREFSS19NT0RFX0FQUF9OQU1FLCBOVUxMKTsKKwl9CisgICAgICAv KiBTZXQgdGhlIHRpdGxlYmFyIHRvIHN5c3RlbSBkYXJrIG1vZGUuICovCisgICAgICBpZiAoRHdt U2V0V2luZG93QXR0cmlidXRlX2ZuKQorCXsKKwkgIER3bVNldFdpbmRvd0F0dHJpYnV0ZV9mbgor CSAgICAoaHduZCwKKwkgICAgIERXTVdBX1VTRV9JTU1FUlNJVkVfREFSS19NT0RFLAorCSAgICAg JnczMl9kYXJrbW9kZSwKKwkgICAgIHNpemVvZih3MzJfZGFya21vZGUpKTsKKwl9CisgICAgfQor fQorCiBzdGF0aWMgSFdORAogdzMyX2NyZWF0ZXZzY3JvbGxiYXIgKHN0cnVjdCBmcmFtZSAqZiwg c3RydWN0IHNjcm9sbF9iYXIgKiBiYXIpCiB7Ci0gIHJldHVybiBDcmVhdGVXaW5kb3cgKCJTQ1JP TExCQVIiLCAiIiwKKyAgSFdORCBod25kID0gQ3JlYXRlV2luZG93ICgiU0NST0xMQkFSIiwgIiIs CiAJCSAgICAgICAvKiBDbGlwIHNpYmxpbmdzIHNvIHdlIGRvbid0IGRyYXcgb3ZlciBjaGlsZAog CQkJICBmcmFtZXMuICBBcHBhcmVudGx5IHRoaXMgaXMgbm90IGFsd2F5cwogCQkJICBzdWZmaWNp ZW50IHNvIHdlIGFsc28gdHJ5IHRvIG1ha2UgYmFyIHdpbmRvd3MKQEAgLTIyOTEsMTIgKzIzMzQs MTUgQEAgdzMyX2NyZWF0ZXZzY3JvbGxiYXIgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IHNjcm9s bF9iYXIgKiBiYXIpCiAJCSAgICAgICAvKiBQb3NpdGlvbiBhbmQgc2l6ZSBvZiBzY3JvbGwgYmFy LiAgKi8KIAkJICAgICAgIGJhci0+bGVmdCwgYmFyLT50b3AsIGJhci0+d2lkdGgsIGJhci0+aGVp Z2h0LAogCQkgICAgICAgRlJBTUVfVzMyX1dJTkRPVyAoZiksIE5VTEwsIGhpbnN0LCBOVUxMKTsK KyAgaWYgKGh3bmQpCisgICAgdzMyX2FwcGx5dGhlbWUgKGh3bmQpOworICByZXR1cm4gaHduZDsK IH0KIAogc3RhdGljIEhXTkQKIHczMl9jcmVhdGVoc2Nyb2xsYmFyIChzdHJ1Y3QgZnJhbWUgKmYs IHN0cnVjdCBzY3JvbGxfYmFyICogYmFyKQogewotICByZXR1cm4gQ3JlYXRlV2luZG93ICgiU0NS T0xMQkFSIiwgIiIsCisgIEhXTkQgaHduZCA9IENyZWF0ZVdpbmRvdyAoIlNDUk9MTEJBUiIsICIi LAogCQkgICAgICAgLyogQ2xpcCBzaWJsaW5ncyBzbyB3ZSBkb24ndCBkcmF3IG92ZXIgY2hpbGQK IAkJCSAgZnJhbWVzLiAgQXBwYXJlbnRseSB0aGlzIGlzIG5vdCBhbHdheXMKIAkJCSAgc3VmZmlj aWVudCBzbyB3ZSBhbHNvIHRyeSB0byBtYWtlIGJhciB3aW5kb3dzCkBAIC0yMzA1LDYgKzIzNTEs OSBAQCB3MzJfY3JlYXRlaHNjcm9sbGJhciAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3Qgc2Nyb2xs X2JhciAqIGJhcikKIAkJICAgICAgIC8qIFBvc2l0aW9uIGFuZCBzaXplIG9mIHNjcm9sbCBiYXIu ICAqLwogCQkgICAgICAgYmFyLT5sZWZ0LCBiYXItPnRvcCwgYmFyLT53aWR0aCwgYmFyLT5oZWln aHQsCiAJCSAgICAgICBGUkFNRV9XMzJfV0lORE9XIChmKSwgTlVMTCwgaGluc3QsIE5VTEwpOwor ICBpZiAoaHduZCkKKyAgICB3MzJfYXBwbHl0aGVtZSAoaHduZCk7CisgIHJldHVybiBod25kOwog fQogCiBzdGF0aWMgdm9pZApAQCAtMjM5MCw2ICsyNDM5LDkgQEAgdzMyX2NyZWF0ZXdpbmRvdyAo c3RydWN0IGZyYW1lICpmLCBpbnQgKmNvb3JkcykKICAgICAgIC8qIEVuYWJsZSBkcmFnLW4tZHJv cC4gICovCiAgICAgICBEcmFnQWNjZXB0RmlsZXMgKGh3bmQsIFRSVUUpOwogCisgICAgICAvKiBF bmFibGUgc3lzdGVtIGxpZ2h0L2RhcmsgdGhlbWUuICovCisgICAgICB3MzJfYXBwbHl0aGVtZSAo aHduZCk7CisKICAgICAgIC8qIERvIHRoaXMgdG8gZGlzY2FyZCB0aGUgZGVmYXVsdCBzZXR0aW5n IHNwZWNpZmllZCBieSBvdXIgcGFyZW50LiAqLwogICAgICAgU2hvd1dpbmRvdyAoaHduZCwgU1df SElERSk7CiAKQEAgLTExMDI4LDYgKzExMDgwLDM1IEBAIGdsb2JhbHNfb2ZfdzMyZm5zICh2b2lk KQogICBzZXRfdGhyZWFkX2Rlc2NyaXB0aW9uID0gKFNldFRocmVhZERlc2NyaXB0aW9uX1Byb2Mp CiAgICAgZ2V0X3Byb2NfYWRkciAoaG1fa2VybmVsMzIsICJTZXRUaHJlYWREZXNjcmlwdGlvbiIp OwogCisgIC8qIFN1cHBvcnQgT1MgZGFyayBtb2RlIG9uIFdpbmRvd3MgMTAgdmVyc2lvbiAyMDA0 IGFuZCBoaWdoZXIuCisgICAgIEZvciBmdXR1cmUgd3JldGNoZXMgd2hvIG1heSBuZWVkIHRvIHVu ZGVyc3RhbmQgV2luZG93cyBidWlsZCBudW1iZXJzOgorICAgICBodHRwczovL2RvY3MubWljcm9z b2Z0LmNvbS9lbi11cy93aW5kb3dzL3JlbGVhc2UtaGVhbHRoL3JlbGVhc2UtaW5mb3JtYXRpb24K KyAgKi8KKyAgaWYgKHczMl9tYWpvcl92ZXJzaW9uID49IDEwICYmIHczMl9idWlsZF9udW1iZXIg Pj0gMTkwNDEKKyAgICAgICYmIG9zX3N1YnR5cGUgPT0gT1NfU1VCVFlQRV9OVCkKKyAgICB7Cisg ICAgICAvKiBMb2FkIGR3bWFwaSBhbmQgdXh0aGVtZSwgd2hpY2ggd2lsbCBiZSBuZWVkZWQgdG8g c2V0IHdpbmRvdyB0aGVtZXMuICovCisgICAgICBITU9EVUxFIGR3bWFwaV9saWIgPSBMb2FkTGli cmFyeSgiZHdtYXBpLmRsbCIpOworICAgICAgRHdtU2V0V2luZG93QXR0cmlidXRlX2ZuID0gKER3 bVNldFdpbmRvd0F0dHJpYnV0ZV9Qcm9jKQorCWdldF9wcm9jX2FkZHIgKGR3bWFwaV9saWIsICJE d21TZXRXaW5kb3dBdHRyaWJ1dGUiKTsKKyAgICAgIEhNT0RVTEUgdXh0aGVtZV9saWIgPSBMb2Fk TGlicmFyeSgidXh0aGVtZS5kbGwiKTsKKyAgICAgIFNldFdpbmRvd1RoZW1lX2ZuID0gKFNldFdp bmRvd1RoZW1lX1Byb2MpCisJZ2V0X3Byb2NfYWRkciAodXh0aGVtZV9saWIsICJTZXRXaW5kb3dU aGVtZSIpOworCisgICAgICAvKiBDaGVjayBXaW5kb3dzIFJlZ2lzdHJ5IGZvciBzeXN0ZW0gdGhl bWUuIERXT1JEIHNldCB0byAwIG9yIDEuCisJIFRPRE86ICJOaWNlIHRvIGhhdmUiIHdvdWxkIGJl IHRvIGNyZWF0ZSBhIGxpc3Agc2V0dGluZyAod2hpY2gKKwkgZGVmYXVsdHMgdG8gdGhpcyBXaW5k b3dzIFJlZ2lzdHJ5IHZhbHVlKSwgdGhlbiByZWFkIHRoYXQgbGlzcAorCSB2YWx1ZSBoZXJlIGlu c3RlYWQuIFRoaXMgd291bGQgYWxsb3cgdGhlIHVzZXIgdG8gZm9yY2libHkKKwkgb3ZlcnJpZGUg dGhlIHN5c3RlbSB0aGVtZSAod2hpY2ggaXMgYWxzbyB1c2VyLWNvbmZpZ3VyYWJsZSBpbgorCSBX aW5kb3dzIHNldHRpbmdzOyBzZWUgTVMtV2luZG93cyBzZWN0aW9uIGluIEVtYWNzIG1hbnVhbCku ICovCisgICAgICBMUEJZVEUgdmFsID0gdzMyX2dldF9yZXNvdXJjZQorCSgiU29mdHdhcmVcXE1p Y3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFRoZW1lc1xcUGVyc29uYWxpemUiLAor CSAiQXBwc1VzZUxpZ2h0VGhlbWUiLAorCSBOVUxMKTsKKyAgICAgIGlmICh2YWwgJiYgKERXT1JE KSp2YWwgPT0gMCkKKwl3MzJfZGFya21vZGUgPSBUUlVFOworICAgIH0KKwogICBleGNlcHRfY29k ZSA9IDA7CiAgIGV4Y2VwdF9hZGRyID0gMDsKICNpZm5kZWYgQ1lHV0lOCi0tIAoyLjMzLjAud2lu ZG93cy4yCgo= --_002_CH2PR12MB4231BF93A366641B94D7A636A5849CH2PR12MB4231namp_--