Received: (at 79859) by debbugs.gnu.org; 21 Dec 2025 15:29:24 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Dec 21 10:29:24 2025 Received: from localhost ([127.0.0.1]:37205 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vXLN5-0004zJ-HM for submit <at> debbugs.gnu.org; Sun, 21 Dec 2025 10:29:24 -0500 Received: from mail-ua1-x92a.google.com ([2607:f8b0:4864:20::92a]:55743) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vXLN2-0004yk-Jh for 79859 <at> debbugs.gnu.org; Sun, 21 Dec 2025 10:29:21 -0500 Received: by mail-ua1-x92a.google.com with SMTP id a1e0cc1a2514c-93723104137so831546241.3 for <79859 <at> debbugs.gnu.org>; Sun, 21 Dec 2025 07:29:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766330955; x=1766935755; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=vlEVMfHL4Em/hPIF4R2UAtgoOaBk9soY0dQwNg95Y5k=; b=ZJYCHEdr6CDXtI9Ab3enXbEKnJkvXRLCpJqJv+uTKXxgn+N6bwYNvHQEIlFimG2m8Z H36DErY/sWKp9cjTKrHuehyW3lacj8Tcvc8UTIU3wHuUF1GD1RcbXPbzEe5YAjkV8zhY 2yB3YKYCC8PwIARZRiX0EQF8qr+CRRHE3x2Pl0o6HcePAC3kNypyhQTCjUYDVwP+y8K8 OulKpSQyrCDZmkPrGjIcPp6TyYNg5L7xIJCke3xJHypd3ZAfZf4qK4kixvZVwtq4+Sxe NoeEGrjyfVZ7GiextUygst67DxMCO2u7m1fYkN+aQHkOdBjbCjQPvV/hgtG2E3YXeTh6 rCBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766330955; x=1766935755; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=vlEVMfHL4Em/hPIF4R2UAtgoOaBk9soY0dQwNg95Y5k=; b=GXoVbCKcU/Oax5swNSZol08NBXUrH5SWGIorqmVAK2UyJJq4kdzDd6iHgO+nNbHY0o hGDs3taQBUm5CUjHIn1P1ZQEDZExvkXV01/C69EfLuGGVfq49Sh9ogksQqrwhGGy1BJI c/kYh+IPuK0H/d8dtBz11rG1inLchMGjHPzHZK64xSI6Vj5INsSZ9oDWq4ywYoL5BM1+ d//UcDL3Klpn3+Aq2YOcXKcqasbZiVP6BMv63cJvSTjRo4KjP/oCT5yU5Va3w+jx6Kse N7muyLacyM1A5T7TLpx/lu5jVhB2kkF7+M6wK5EEXPVS5vj/21CcL/DOy1jYkBjUa8k8 SDOQ== X-Forwarded-Encrypted: i=1; AJvYcCW7mTuBf1P13hY0SbQpAtbI476XaR317JVLcSkmSPgQqMZKjaeuP5dUg85G6+NwIztbj6dH5g==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yye0oT4/5G/hVYStB0RkY52dDJAyuqQOF3/m9+M5El0UOhSlt87 Piew/kSediimTvtXH6J3lhsMqketOkorS3qH1hGSvdZIC+n501Y957AC5eTe82v/gY3Kuz0juF0 /1Oqi85RZHF45XfIsXNEFk7LHj0eoc4U= X-Gm-Gg: AY/fxX7QFVEeKmW23az+XWk69zru0MqRhU7NV+Mk0XwR5ewb8iTNiOkFc3aO2xTcXcW Ijj/CmxlNQ1N5sebUmLyPVIKHb9AUiZGUs8bUXGwS3ca5rEUyuT6xEDwrK5njww1uRReUHA6E2m FIXE/CinjANCG4/DRrrFcSRaONUcOgaUlYPwsY95ETEqSccjd5scjCXmp88k7acIzzWUIyeeH58 Lja2jDzyh6LOpAmfEHY6ynvW7A9fO2uJxddSBqIZZwtAQlPHh22CXS9mcJu7dGeiDuHVvM= X-Google-Smtp-Source: AGHT+IHCHC4EF9hdOQMDI16P87nr3mun5NAFNrbETLv/nvtB83muGEMo0f6HpO7RueLjAvdR9b/Jwe/LY82TzaLOyxQ= X-Received: by 2002:a05:6102:290f:b0:5e1:866c:4f8e with SMTP id ada2fe7eead31-5eb1a83832cmr2206699137.39.1766330954791; Sun, 21 Dec 2025 07:29:14 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN> <jwv7buss9jh.fsf-monnier+emacs@HIDDEN> <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN> <jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN> <CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN> <CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN> <jwvqzstjc9w.fsf-monnier+emacs@HIDDEN> <CAN+1HbqfpV7aDTRVxvqBkvA0AYJvPHmDYxzfc2xR5rYYD1dtBg@HIDDEN> <jwvy0n1hqyl.fsf-monnier+emacs@HIDDEN> <CAN+1HbrfokZqoYOuDEKWNVSSwZ-AkACtSM3FBoM=45i5DHFP=Q@HIDDEN> <jwv8qf0la6m.fsf-monnier+emacs@HIDDEN> <CAN+1HboxBTprW3zP9HrQmOCjySkaduR=wEv8CkO-Wj_+rY55Wg@HIDDEN> <87bjjtjyjp.fsf@HIDDEN> <CAN+1HbrgCjP4xDEd8cardzySO2WkC=bMVtX4mftaoe7ONsbWnw@HIDDEN> <jwvo6ntdmdo.fsf-monnier+emacs@HIDDEN> <CAN+1HbrFMvrT=+9wjckjbnR7dkgYe_+AcpSG+vRFA46M5sg2rA@HIDDEN> <CAN+1HbrR3tc+r84e71VbCksUqgWh_zxFoSjNSZan2DbAn3E9rQ@HIDDEN> <871pkob4i6.fsf@HIDDEN> <CAN+1HbocNLA1R=OyPXzjOWq4_uwBynzQTYwZW5PKHdzfw5Fa1A@HIDDEN> <87o6ns9g5u.fsf@HIDDEN> <CAN+1Hbr9CiwiPyxCHUQ66kDe3i4vN6RgOZr0tG8MStQV8ByzUw@HIDDEN> In-Reply-To: <CAN+1Hbr9CiwiPyxCHUQ66kDe3i4vN6RgOZr0tG8MStQV8ByzUw@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sun, 21 Dec 2025 10:29:03 -0500 X-Gm-Features: AQt7F2oPg8GT0aqTPToRTyz6VCY21pC69DEShWFIVtD7DX7a4AitS7BVTDRFfAw Message-ID: <CAN+1HbqT9b9bU0TvLzkE=EiX1du5=bzNgjqkTFCJnQ02eX0-_g@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Michael Albinus <michael.albinus@HIDDEN> Content-Type: multipart/mixed; boundary="0000000000001de7b3064677f969" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, Stefan Monnier <monnier@HIDDEN>, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --0000000000001de7b3064677f969 Content-Type: multipart/alternative; boundary="0000000000001de7b1064677f967" --0000000000001de7b1064677f967 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Dec 21, 2025 at 8:59=E2=80=AFAM St=C3=A9phane Marks <shipmints@gmai= l.com> wrote: > On Sun, Dec 21, 2025 at 7:24=E2=80=AFAM Michael Albinus <michael.albinus@= gmx.de> > wrote: > >> St=C3=A9phane Marks <shipmints@HIDDEN> writes: >> >> Hi St=C3=A9phane, >> >> > Here's the patch rebased on master as of just now with bug# added. >> >> Thanks. I've pushed it to master. Also some few typos are fixed. >> >> > How about we leave this bug open and I'll submit a small patch to >> > demote the error? >> >> Sure. >> > > Patch attached that demotes the error to warning and fixes a missing > boundp condition for w32-initialized. > Amended to use bound-and-true-p. -St=C3=A9phane --0000000000001de7b1064677f967 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sun, Dec 21, 2025 at 8:59=E2=80=AFAM St=C3=A9phane Marks <<a href=3D"= mailto:shipmints@HIDDEN">shipmints@HIDDEN</a>> wrote:</span></div>= </div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=3D= "gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2= 04,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div style= =3D"font-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-= serif">On Sun, Dec 21, 2025 at 7:24=E2=80=AFAM Michael Albinus <<a href= =3D"mailto:michael.albinus@HIDDEN" target=3D"_blank">michael.albinus@HIDDEN= </a>> wrote:</span></div></div><div class=3D"gmail_quote"><blockquote cl= ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid= rgb(204,204,204);padding-left:1ex">St=C3=A9phane Marks <<a href=3D"mail= to:shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> write= s:<br> <br> Hi St=C3=A9phane,<br> <br> > Here's the patch rebased on master as of just now with bug# added.= <br> <br> Thanks. I've pushed it to master. Also some few typos are fixed.<br> <br> > How about we leave this bug open and I'll submit a small patch to<= br> > demote the error?<br> <br> Sure.<br></blockquote><div><br></div><div style=3D"font-family:monospace">P= atch attached that demotes the error to warning and fixes a missing boundp = condition for w32-initialized.<br></div></div></div></blockquote><div><br><= /div><div class=3D"gmail_default" style=3D"font-family:monospace">Amended t= o use bound-and-true-p.</div><div class=3D"gmail_default" style=3D"font-fam= ily:monospace"><br></div><div class=3D"gmail_default" style=3D"font-family:= monospace">-St=C3=A9phane=C2=A0</div></div></div> --0000000000001de7b1064677f967-- --0000000000001de7b3064677f969 Content-Type: application/octet-stream; name="0001-Minor-updates-to-system-taskbar-bug-79859.patch" Content-Disposition: attachment; filename="0001-Minor-updates-to-system-taskbar-bug-79859.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mjfvu59r0> X-Attachment-Id: f_mjfvu59r0 RnJvbSAxZTE4OWM2ZTNiMDRhNDNkYjExMmY1ZDU4ZDQxOGVjMzg0ZDNlMzE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFN1biwgMjEgRGVjIDIwMjUgMDg6NTA6MjAgLTA1MDAK U3ViamVjdDogW1BBVENIXSA7IE1pbm9yIHVwZGF0ZXMgdG8gc3lzdGVtLXRhc2tiYXIgKGJ1ZyM3 OTg1OSkKCiogbGlzcC9zeXN0ZW0tdGFza2Jhci5lbCAoc3lzdGVtLXRhc2tiYXItLXNldC1iYWNr LWVuZCk6IEFkZApib3VuZHAgY29uZGl0aW9uIGZvciB3MzItaW5pdGlhbGl6ZWQuCihzeXN0ZW0t dGFza2Jhci0tZW5hYmxlKTogQWRkIHN1Y2Nlc3MgcmV0dXJuIHZhbHVlIHRvIGFsbAptZXRob2Rz LiAgRGVtb3RlIGVycm9yIHRvIHdhcm5pbmcgaW4gdGhlIGRidXMgbWV0aG9kLgotLS0KIGxpc3Av c3lzdGVtLXRhc2tiYXIuZWwgfCAyNSArKysrKysrKysrKysrKysrLS0tLS0tLS0tCiAxIGZpbGUg Y2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9s aXNwL3N5c3RlbS10YXNrYmFyLmVsIGIvbGlzcC9zeXN0ZW0tdGFza2Jhci5lbAppbmRleCA4YmFh N2M2M2I2Ny4uMWVlZDJjNjExOTAgMTAwNjQ0Ci0tLSBhL2xpc3Avc3lzdGVtLXRhc2tiYXIuZWwK KysrIGIvbGlzcC9zeXN0ZW0tdGFza2Jhci5lbApAQCAtMjE4LDcgKzIxOCw3IEBAIHN5c3RlbS10 YXNrYmFyLS1zZXQtYmFjay1lbmQKICAgOzsgYnVpbGQgaGF2ZSB0aGUgZGJ1cyBmZWF0dXJlLgog ICAoc2V0cSBzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQKICAgICAgICAgKGNvbmQgKChib3VuZHAg J25zLXZlcnNpb24tc3RyaW5nKSAnbnMpCi0gICAgICAgICAgICAgICh3MzItaW5pdGlhbGl6ZWQg J3czMikKKyAgICAgICAgICAgICAgKChib3VuZC1hbmQtdHJ1ZS1wICd3MzItaW5pdGlhbGl6ZWQp ICd3MzIpCiAgICAgICAgICAgICAgICgoYW5kIChmZWF0dXJlcCAnZGJ1c2JpbmQpCiAgICAgICAg ICAgICAgICAgICAgIChtZW1iZXIgIm9yZy5mcmVlZGVza3RvcC5sb2dpbjEiCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGRidXMtbGlzdC1hY3RpdmF0YWJsZS1uYW1lcyA6c3lzdGVtKSkp CkBAIC0yMjYsNyArMjI2LDggQEAgc3lzdGVtLXRhc2tiYXItLXNldC1iYWNrLWVuZAogICAgICAg ICAgICAgICAodCBuaWwpKSkpCiAKIChjbC1kZWZnZW5lcmljIHN5c3RlbS10YXNrYmFyLS1lbmFi bGUgKCkKLSAgIkVuYWJsZSB0aGUgc3lzdGVtIHRhc2tiYXIgYmFjayBlbmQuIikKKyAgIkVuYWJs ZSB0aGUgc3lzdGVtIHRhc2tiYXIgYmFjayBlbmQuCitSZXR1cm4gdCBpZiB0aGUgYmFjayBlbmQg aXMgaW5pdGlhbGl6ZWQsIG9yIG5pbC4iKQogCiAoY2wtZGVmZ2VuZXJpYyBzeXN0ZW0tdGFza2Jh ci0tZGlzYWJsZSAoKQogICAiRGlzYWJsZSB0aGUgc3lzdGVtIHRhc2tiYXIgYmFjayBlbmQuIikK QEAgLTMyNCwxMSArMzI1LDE2IEBAIHN5c3RlbS10YXNrYmFyLWRidXMtcGluZy1zZXJ2aWNlCiAK IChjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItLWVuYWJsZSAoJmNvbnRleHQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAo ZXFsICdkYnVzKSkpCi0gICh1bmxlc3MgKHN5c3RlbS10YXNrYmFyLWRidXMtcGluZy1zZXJ2aWNl KQotICAgIChlcnJvciAiRC1CdXMgc2VydmljZSBgJXMnIHVuYXZhaWxhYmxlIiBzeXN0ZW0tdGFz a2Jhci0tZGJ1cy1zZXJ2aWNlKSkKLSAgKHdoZW4gc3lzdGVtLXRhc2tiYXItY2xlYXItYXR0ZW50 aW9uLW9uLWZyYW1lLWZvY3VzCi0gICAgKGFkZC1mdW5jdGlvbiA6YWZ0ZXIgYWZ0ZXItZm9jdXMt Y2hhbmdlLWZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgICAjJ3N5c3RlbS10YXNrYmFyLS1kYnVz LWNsZWFyLWF0dGVudGlvbi1vbi1mcmFtZS1mb2N1cykpKQorICAoaWYgKHN5c3RlbS10YXNrYmFy LWRidXMtcGluZy1zZXJ2aWNlKQorICAgICAgKHByb2duCisgICAgICAgICh3aGVuIHN5c3RlbS10 YXNrYmFyLWNsZWFyLWF0dGVudGlvbi1vbi1mcmFtZS1mb2N1cworICAgICAgICAgIChhZGQtZnVu Y3Rpb24gOmFmdGVyIGFmdGVyLWZvY3VzLWNoYW5nZS1mdW5jdGlvbgorICAgICAgICAgICAgICAg ICAgICAgICAgIydzeXN0ZW0tdGFza2Jhci0tZGJ1cy1jbGVhci1hdHRlbnRpb24tb24tZnJhbWUt Zm9jdXMpKQorICAgICAgICB0KQorICAgIChkaXNwbGF5LXdhcm5pbmcgJ3N5c3RlbS10YXNrYmFy LWRidXMKKyAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQtbWVzc2FnZSAiRC1CdXMgc2Vydmlj ZSBgJXMnIHVuYXZhaWxhYmxlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN5c3RlbS10YXNrYmFyLS1kYnVzLXNlcnZpY2UpKQorICAgIG5pbCkpCiAKIChjbC1kZWZtZXRo b2Qgc3lzdGVtLXRhc2tiYXItLWRpc2FibGUgKCZjb250ZXh0CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ2RidXMp KSkKQEAgLTM5NSw3ICs0MDEsNyBAQCBzeXN0ZW0tdGFza2Jhci0tcHJvZ3Jlc3MKIAogKGNsLWRl Zm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tZW5hYmxlICgmY29udGV4dAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ25z KSkpCi0gIChpZ25vcmUpKQorICB0KQogCiAoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFyLS1k aXNhYmxlICgmY29udGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICducykpKQpAQCAtNDYxLDcgKzQ2Nyw4IEBA IHN5c3RlbS10YXNrYmFyLS1lbmFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICd3MzIpKSkKICAgOzsgQ2xlYXIg c3lzdGVtIHRhc2tiYXIgaW5kaWNhdG9ycyBmb3IgYSBmcmFtZSB3aGVuIGl0IGlzIGRlbGV0ZWQu CiAgIChhZGQtaG9vayAnZGVsZXRlLWZyYW1lLWZ1bmN0aW9ucwotICAgICAgICAgICAgIydzeXN0 ZW0tdGFza2Jhci0tdzMyLWNsZWFyLWZyYW1lLWluZGljYXRvcnMpKQorICAgICAgICAgICAgIydz eXN0ZW0tdGFza2Jhci0tdzMyLWNsZWFyLWZyYW1lLWluZGljYXRvcnMpCisgIHQpCiAKIChjbC1k ZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItLWRpc2FibGUgKCZjb250ZXh0CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwg J3czMikpKQotLSAKMi40Ny4xCgo= --0000000000001de7b3064677f969--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 21 Dec 2025 13:59:41 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Dec 21 08:59:41 2025 Received: from localhost ([127.0.0.1]:35480 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vXJyG-0007ls-Lo for submit <at> debbugs.gnu.org; Sun, 21 Dec 2025 08:59:41 -0500 Received: from mail-vs1-xe31.google.com ([2607:f8b0:4864:20::e31]:60881) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vXJyE-0007lZ-5z for 79859 <at> debbugs.gnu.org; Sun, 21 Dec 2025 08:59:38 -0500 Received: by mail-vs1-xe31.google.com with SMTP id ada2fe7eead31-5e9d2ce035cso1439106137.1 for <79859 <at> debbugs.gnu.org>; Sun, 21 Dec 2025 05:59:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766325572; x=1766930372; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=UgRXMd4oWyyIxayp4Oq2irmrQmLIqsmYk814li49rYc=; b=nqY6XRLbruzdgG+N20Gzx/sNDJShu4rYEMYUhxSaQ5Bj5fncmClpmS9RryIh6iT4rK uOxqJMQBsxbq4PJeZqvDuWP2aQW9Nq/JQ2f0f+HJ7Cexsp4EAikMBiUzht5JlZbqKF/i eyoE0h3S2jT8QsLBckliph4WSvAnQ2FiB++dEQLpVKw3/cZlchqIAfT3ljkf2M2jhBC1 CqVpS7orZKrXEATkog8DmfFjOASUT7YdXc5IV9iZH7ynpKys9pvIhUUoPpEQplOC+7qe XQL/9Hnb82Q0O3Y9TG7jEg+memkOW4EtmG8KQSLLFeSHnWIEhRNbtuBxrWyyUYxzFiKP FZjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766325572; x=1766930372; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=UgRXMd4oWyyIxayp4Oq2irmrQmLIqsmYk814li49rYc=; b=rOJfyFbDQfU/4/4Y6JKr2e5K0eKANZsxaP/4nl91vdky+p08X1CqnSsOAxcBD2AsaB oC+c5Y/G4lS8Ra6AceQ6cIRnT5H1gGkp3QSCSRCxlahnnWPd0+zEr7EoUmLwyHZzRzl0 yN8fNOE5Vi4lwJSxgY+AgGc3PGyHoDzwSj9EwuSygLeynkKIv5iv/hzOEMt8YHubUhD5 2I7GGFWRjGemk3zqzhMMGTF+RXwNVpNYwHdq/7HnJnLD1VpMOsaLbsdAhWNn6V5Djvl6 euChuCa84bFFLCIuM0H4n0jsMs9uoIrejcLtNEmNUboabswS2iNWYT0439TnzzQNXCXO JjmQ== X-Forwarded-Encrypted: i=1; AJvYcCXbVRAwxsxH8LsJc5lKuakB2O6tadi/KL5h5PLGkqJZe/B8Txp+oMj7Tk5EXKVz2CjhiFt71A==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yxo1l5vO30U4dyQzhmRdgysxc+CXtvA6OI/RcQdk1R/ep0c1klL zqoXSRljFvuPEE4irUgiAyitVzgfwm/85vvJNobWu9yiS6yM59ibr2FEsIXhBWp47uUtmkqETQY YL0tVdw3cSe0UoRWIhjvfyQS2vR63MPU= X-Gm-Gg: AY/fxX6TEZJYespO9EN2DHYa5sIVdNzyno0eB6Pz0RAGqv15SjxK4UJoUG1/83SvQDw LCJnu5JYVYg85Pzv1BAVEry5DwSya1XA3oa6ij2uvJFLe7AXrtzaqwJ1gAhmsPLXIKjWFAMTc7+ y6erDsKnPmFe0sLXjnew+5R3EELNI1z6/HCo7RqKBLVkj4N3onSkNa3asNIW2Nn4JMKVAmjfZs6 FFNF18gkRIr5UsmPkHnmKyGHoxXX+TJHonWWdnNdm/g/HVMba/u3k5byZPa4sqZXtdGsTLjegm/ YQv9Hw== X-Google-Smtp-Source: AGHT+IEUYZj1Nrag680wUrg8alveyA5rDY8vjHUgJGT02c1zlD80pxjTYtGrfHI/tLAYpvktb9uf19IJHKRlzfglJu8= X-Received: by 2002:a05:6102:26c2:b0:5db:d60a:6b1f with SMTP id ada2fe7eead31-5eb1a7e431bmr2567353137.23.1766325572412; Sun, 21 Dec 2025 05:59:32 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN> <jwv7buss9jh.fsf-monnier+emacs@HIDDEN> <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN> <jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN> <CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN> <CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN> <jwvqzstjc9w.fsf-monnier+emacs@HIDDEN> <CAN+1HbqfpV7aDTRVxvqBkvA0AYJvPHmDYxzfc2xR5rYYD1dtBg@HIDDEN> <jwvy0n1hqyl.fsf-monnier+emacs@HIDDEN> <CAN+1HbrfokZqoYOuDEKWNVSSwZ-AkACtSM3FBoM=45i5DHFP=Q@HIDDEN> <jwv8qf0la6m.fsf-monnier+emacs@HIDDEN> <CAN+1HboxBTprW3zP9HrQmOCjySkaduR=wEv8CkO-Wj_+rY55Wg@HIDDEN> <87bjjtjyjp.fsf@HIDDEN> <CAN+1HbrgCjP4xDEd8cardzySO2WkC=bMVtX4mftaoe7ONsbWnw@HIDDEN> <jwvo6ntdmdo.fsf-monnier+emacs@HIDDEN> <CAN+1HbrFMvrT=+9wjckjbnR7dkgYe_+AcpSG+vRFA46M5sg2rA@HIDDEN> <CAN+1HbrR3tc+r84e71VbCksUqgWh_zxFoSjNSZan2DbAn3E9rQ@HIDDEN> <871pkob4i6.fsf@HIDDEN> <CAN+1HbocNLA1R=OyPXzjOWq4_uwBynzQTYwZW5PKHdzfw5Fa1A@HIDDEN> <87o6ns9g5u.fsf@HIDDEN> In-Reply-To: <87o6ns9g5u.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sun, 21 Dec 2025 08:59:20 -0500 X-Gm-Features: AQt7F2qhpxzEcsfv4AbH4lQ-dFsALsGdKJih1Tnr9N4dU3ITk9pfu_el4c2jM3g Message-ID: <CAN+1Hbr9CiwiPyxCHUQ66kDe3i4vN6RgOZr0tG8MStQV8ByzUw@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Michael Albinus <michael.albinus@HIDDEN> Content-Type: multipart/mixed; boundary="0000000000004d5233064676b83c" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, Stefan Monnier <monnier@HIDDEN>, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --0000000000004d5233064676b83c Content-Type: multipart/alternative; boundary="0000000000004d5231064676b83a" --0000000000004d5231064676b83a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Dec 21, 2025 at 7:24=E2=80=AFAM Michael Albinus <michael.albinus@gm= x.de> wrote: > St=C3=A9phane Marks <shipmints@HIDDEN> writes: > > Hi St=C3=A9phane, > > > Here's the patch rebased on master as of just now with bug# added. > > Thanks. I've pushed it to master. Also some few typos are fixed. > > > How about we leave this bug open and I'll submit a small patch to > > demote the error? > > Sure. > Patch attached that demotes the error to warning and fixes a missing boundp condition for w32-initialized. -St=C3=A9phane --0000000000004d5231064676b83a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sun, Dec 21, 2025 at 7:24=E2=80=AFAM Michael Albinus <<a href=3D"mail= to:michael.albinus@HIDDEN">michael.albinus@HIDDEN</a>> wrote:</span></di= v></div><div class=3D"gmail_quote gmail_quote_container"><blockquote class= =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg= b(204,204,204);padding-left:1ex">St=C3=A9phane Marks <<a href=3D"mailto:= shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> writes:<= br> <br> Hi St=C3=A9phane,<br> <br> > Here's the patch rebased on master as of just now with bug# added.= <br> <br> Thanks. I've pushed it to master. Also some few typos are fixed.<br> <br> > How about we leave this bug open and I'll submit a small patch to<= br> > demote the error?<br> <br> Sure.<br></blockquote><div><br></div><div class=3D"gmail_default" style=3D"= font-family:monospace">Patch attached that demotes the error to warning and= fixes a missing boundp condition for w32-initialized.</div><div class=3D"g= mail_default" style=3D"font-family:monospace"><br></div><div class=3D"gmail= _default" style=3D"font-family:monospace">-St=C3=A9phane=C2=A0</div></div><= /div> --0000000000004d5231064676b83a-- --0000000000004d5233064676b83c Content-Type: application/octet-stream; name="0001-Minor-updates-to-system-taskbar-bug-79859.patch" Content-Disposition: attachment; filename="0001-Minor-updates-to-system-taskbar-bug-79859.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mjfsmpxu0> X-Attachment-Id: f_mjfsmpxu0 RnJvbSA3MzU5ZjJiYzViNmNhOWY1NDk0YjliNTM2ZWRjZmMxOGUwNzNmYjI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFN1biwgMjEgRGVjIDIwMjUgMDg6NTA6MjAgLTA1MDAK U3ViamVjdDogW1BBVENIXSA7IE1pbm9yIHVwZGF0ZXMgdG8gc3lzdGVtLXRhc2tiYXIgKGJ1ZyM3 OTg1OSkKCiogbGlzcC9zeXN0ZW0tdGFza2Jhci5lbCAoc3lzdGVtLXRhc2tiYXItLXNldC1iYWNr LWVuZCk6IEFkZApib3VuZHAgY29uZGl0aW9uIGZvciB3MzItaW5pdGlhbGl6ZWQuCihzeXN0ZW0t dGFza2Jhci0tZW5hYmxlKTogQWRkIHN1Y2Nlc3MgcmV0dXJuIHZhbHVlIHRvIGFsbAptZXRob2Rz LiAgRGVtb3RlIGVycm9yIHRvIHdhcm5pbmcgaW4gdGhlIGRidXMgbWV0aG9kLgotLS0KIGxpc3Av c3lzdGVtLXRhc2tiYXIuZWwgfCAyNiArKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogMSBmaWxl IGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv bGlzcC9zeXN0ZW0tdGFza2Jhci5lbCBiL2xpc3Avc3lzdGVtLXRhc2tiYXIuZWwKaW5kZXggOGJh YTdjNjNiNjcuLjE5NDg1NmE0MDMwIDEwMDY0NAotLS0gYS9saXNwL3N5c3RlbS10YXNrYmFyLmVs CisrKyBiL2xpc3Avc3lzdGVtLXRhc2tiYXIuZWwKQEAgLTIxOCw3ICsyMTgsOCBAQCBzeXN0ZW0t dGFza2Jhci0tc2V0LWJhY2stZW5kCiAgIDs7IGJ1aWxkIGhhdmUgdGhlIGRidXMgZmVhdHVyZS4K ICAgKHNldHEgc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kCiAgICAgICAgIChjb25kICgoYm91bmRw ICducy12ZXJzaW9uLXN0cmluZykgJ25zKQotICAgICAgICAgICAgICAodzMyLWluaXRpYWxpemVk ICd3MzIpCisgICAgICAgICAgICAgICgoYW5kIChib3VuZHAgJ3czMi1pbml0aWFsaXplZCkKKyAg ICAgICAgICAgICAgICAgICAgdzMyLWluaXRpYWxpemVkKSAndzMyKQogICAgICAgICAgICAgICAo KGFuZCAoZmVhdHVyZXAgJ2RidXNiaW5kKQogICAgICAgICAgICAgICAgICAgICAobWVtYmVyICJv cmcuZnJlZWRlc2t0b3AubG9naW4xIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYnVz LWxpc3QtYWN0aXZhdGFibGUtbmFtZXMgOnN5c3RlbSkpKQpAQCAtMjI2LDcgKzIyNyw4IEBAIHN5 c3RlbS10YXNrYmFyLS1zZXQtYmFjay1lbmQKICAgICAgICAgICAgICAgKHQgbmlsKSkpKQogCiAo Y2wtZGVmZ2VuZXJpYyBzeXN0ZW0tdGFza2Jhci0tZW5hYmxlICgpCi0gICJFbmFibGUgdGhlIHN5 c3RlbSB0YXNrYmFyIGJhY2sgZW5kLiIpCisgICJFbmFibGUgdGhlIHN5c3RlbSB0YXNrYmFyIGJh Y2sgZW5kLgorUmV0dXJuIHQgaWYgdGhlIGJhY2sgZW5kIGlzIGluaXRpYWxpemVkLCBvciBuaWwu IikKIAogKGNsLWRlZmdlbmVyaWMgc3lzdGVtLXRhc2tiYXItLWRpc2FibGUgKCkKICAgIkRpc2Fi bGUgdGhlIHN5c3RlbSB0YXNrYmFyIGJhY2sgZW5kLiIpCkBAIC0zMjQsMTEgKzMyNiwxNiBAQCBz eXN0ZW0tdGFza2Jhci1kYnVzLXBpbmctc2VydmljZQogCiAoY2wtZGVmbWV0aG9kIHN5c3RlbS10 YXNrYmFyLS1lbmFibGUgKCZjb250ZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAnZGJ1cykpKQotICAodW5sZXNz IChzeXN0ZW0tdGFza2Jhci1kYnVzLXBpbmctc2VydmljZSkKLSAgICAoZXJyb3IgIkQtQnVzIHNl cnZpY2UgYCVzJyB1bmF2YWlsYWJsZSIgc3lzdGVtLXRhc2tiYXItLWRidXMtc2VydmljZSkpCi0g ICh3aGVuIHN5c3RlbS10YXNrYmFyLWNsZWFyLWF0dGVudGlvbi1vbi1mcmFtZS1mb2N1cwotICAg IChhZGQtZnVuY3Rpb24gOmFmdGVyIGFmdGVyLWZvY3VzLWNoYW5nZS1mdW5jdGlvbgotICAgICAg ICAgICAgICAgICAgIydzeXN0ZW0tdGFza2Jhci0tZGJ1cy1jbGVhci1hdHRlbnRpb24tb24tZnJh bWUtZm9jdXMpKSkKKyAgKGlmIChzeXN0ZW0tdGFza2Jhci1kYnVzLXBpbmctc2VydmljZSkKKyAg ICAgIChwcm9nbgorICAgICAgICAod2hlbiBzeXN0ZW0tdGFza2Jhci1jbGVhci1hdHRlbnRpb24t b24tZnJhbWUtZm9jdXMKKyAgICAgICAgICAoYWRkLWZ1bmN0aW9uIDphZnRlciBhZnRlci1mb2N1 cy1jaGFuZ2UtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICMnc3lzdGVtLXRhc2ti YXItLWRidXMtY2xlYXItYXR0ZW50aW9uLW9uLWZyYW1lLWZvY3VzKSkKKyAgICAgICAgdCkKKyAg ICAoZGlzcGxheS13YXJuaW5nICdzeXN0ZW0tdGFza2Jhci1kYnVzCisgICAgICAgICAgICAgICAg ICAgICAoZm9ybWF0LW1lc3NhZ2UgIkQtQnVzIHNlcnZpY2UgYCVzJyB1bmF2YWlsYWJsZSIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1z ZXJ2aWNlKSkKKyAgICBuaWwpKQogCiAoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFyLS1kaXNh YmxlICgmY29udGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5 c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICdkYnVzKSkpCkBAIC0zOTUsNyArNDAyLDcgQEAg c3lzdGVtLXRhc2tiYXItLXByb2dyZXNzCiAKIChjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXIt LWVuYWJsZSAoJmNvbnRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICducykpKQotICAoaWdub3JlKSkKKyAgdCkK IAogKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tZGlzYWJsZSAoJmNvbnRleHQKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1l bmQgKGVxbCAnbnMpKSkKQEAgLTQ2MSw3ICs0NjgsOCBAQCBzeXN0ZW0tdGFza2Jhci0tZW5hYmxl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0t YmFjay1lbmQgKGVxbCAndzMyKSkpCiAgIDs7IENsZWFyIHN5c3RlbSB0YXNrYmFyIGluZGljYXRv cnMgZm9yIGEgZnJhbWUgd2hlbiBpdCBpcyBkZWxldGVkLgogICAoYWRkLWhvb2sgJ2RlbGV0ZS1m cmFtZS1mdW5jdGlvbnMKLSAgICAgICAgICAgICMnc3lzdGVtLXRhc2tiYXItLXczMi1jbGVhci1m cmFtZS1pbmRpY2F0b3JzKSkKKyAgICAgICAgICAgICMnc3lzdGVtLXRhc2tiYXItLXczMi1jbGVh ci1mcmFtZS1pbmRpY2F0b3JzKQorICB0KQogCiAoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFy LS1kaXNhYmxlICgmY29udGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICd3MzIpKSkKLS0gCjIuNDcuMQoK --0000000000004d5233064676b83c--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 21 Dec 2025 12:24:26 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Dec 21 07:24:26 2025 Received: from localhost ([127.0.0.1]:34989 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vXIU5-0008Ow-Ol for submit <at> debbugs.gnu.org; Sun, 21 Dec 2025 07:24:26 -0500 Received: from mout.gmx.net ([212.227.15.15]:50911) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>) id 1vXIU3-0008Oa-0I for 79859 <at> debbugs.gnu.org; Sun, 21 Dec 2025 07:24:23 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1766319855; x=1766924655; i=michael.albinus@HIDDEN; bh=HVlT+yPMDPKvLq8Eolry6KgYQJ5Fn9CsbrfP2WTKeKU=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=XeuF8qZjURWhTpGGGgDflZAdbE1/bMqnkj6zTuCSETz/UOwzINnbR3W7h26+JbSu Uv35W2iaRrf8kuSsCK4qkZ+3XUtlatMZKWYbLAMuWO1RjvejW49qWimaiFsojaVGh IFgJvz2qBbrM8FxsJQjr4AB7Z/TL6pmmTHKXFCWPCnHaIuZaqN1k/Xmm02x3aGIw6 tosxhuIDmQ8QeWH92xC+7YV42R+/GDeM/L/MeCjSBj2DamXzyIXfWPJsEOWiTkr6C rQqOU1wWAn4obesQ3CU7m6r7UmX0qo5WwNfgyEt0t4H0AddHZl6QKYAzlTt/4dIrk BNSWjZxpiXo9NyZBTg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.37.61]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MWRRZ-1vUC3g1GHb-00R8R5; Sun, 21 Dec 2025 13:24:15 +0100 From: Michael Albinus <michael.albinus@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support In-Reply-To: <CAN+1HbocNLA1R=OyPXzjOWq4_uwBynzQTYwZW5PKHdzfw5Fa1A@HIDDEN> References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN> <jwv7buss9jh.fsf-monnier+emacs@HIDDEN> <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN> <jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN> <CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN> <CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN> <jwvqzstjc9w.fsf-monnier+emacs@HIDDEN> <CAN+1HbqfpV7aDTRVxvqBkvA0AYJvPHmDYxzfc2xR5rYYD1dtBg@HIDDEN> <jwvy0n1hqyl.fsf-monnier+emacs@HIDDEN> <CAN+1HbrfokZqoYOuDEKWNVSSwZ-AkACtSM3FBoM=45i5DHFP=Q@HIDDEN> <jwv8qf0la6m.fsf-monnier+emacs@HIDDEN> <CAN+1HboxBTprW3zP9HrQmOCjySkaduR=wEv8CkO-Wj_+rY55Wg@HIDDEN> <87bjjtjyjp.fsf@HIDDEN> <CAN+1HbrgCjP4xDEd8cardzySO2WkC=bMVtX4mftaoe7ONsbWnw@HIDDEN> <jwvo6ntdmdo.fsf-monnier+emacs@HIDDEN> <CAN+1HbrFMvrT=+9wjckjbnR7dkgYe_+AcpSG+vRFA46M5sg2rA@HIDDEN> <CAN+1HbrR3tc+r84e71VbCksUqgWh_zxFoSjNSZan2DbAn3E9rQ@HIDDEN> <871pkob4i6.fsf@HIDDEN> <CAN+1HbocNLA1R=OyPXzjOWq4_uwBynzQTYwZW5PKHdzfw5Fa1A@HIDDEN> Date: Sun, 21 Dec 2025 13:24:13 +0100 Message-ID: <87o6ns9g5u.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:ZB8KBkpOh5wf8pHIQNnTau/Bb0B/Gh6ntrszgkLNNvoDr9h47V/ hSBu3Y5opznIE2kHFHE1CbyQ8IspgfRS+7tCNzS7y8ZYK0HOFQKssbw1q0WQo0IDJssn5OE CceHqo9QAIn4T/ZjNq2SC2lLcrgj0jPxS29c/fOpJjA9BZuLnNgAIcFXIi1MESqj/7zR6VC FL7zXr8EBKTYR9++H1TBg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:Pc2aXSrDmfg=;cZ6svDoq9fBeomeoY87O0oxm40e y6hXPfc/ALjfzILAp2sO5zhGFXZJjPK3J6JgZO9KSll1TwcHc8QL6ug32L2pEZBy8m2RfrEig n0F4BQ+Mce79s1vGfnZDQQeHoZh0Vua4ZaPzzdXIvUegmT8jK7xhBwVt+DOIkQtwver8G8n/X mRTpfeuTbRYumUmqptzU6kiw1Ul7CSUYMHdNCkbWFb+5o9+KsvsR6VpvRqjPoTU9bhDWNBvFo 1p40NRjB2xY3LjW0TQbmlzc+f+Gy1pVwrqMjzPGm8PnJELKtv+WgdW7IYoHJ0dQyLpAHqQrKU j5NLfccMxjoapC3jk60O40fxEWSvWVnINWL9Y15FTHWoMqumHRYcOg0Dh+t8xBbSWxxpLsfL+ vRjQk/OlYhoRk7FiuQDpeFp+RZ0950FxhmNuLLTe886WrkR6+DHWjCgOd2tE5gSeMTxsW2eqB a7YIxhDph9TW6DHgPlZwnu6ki5UBAs/Bg7BTswTcNg9WvtDmE48tUEYO25PeKuejWPR0CFLCv zzI4oyR6TLsrlrWoNHnxRpAUtLUXxDOKAcnCceJO8i86zf7WYztKn6v4pk7IIGB7fBix5KqMk ZoPZRKvwOrbkYy0JGM/AePkSNA9F6TD1Q5hh7k92MGI4lXA/vB6vOrjt6c1Pos5qau/S/iAvJ V3zmXw4LJQq89zhqt3AMEmxNQ83ojL4OHly6nNCQCut/Bz9DP8LzCs0bu+rZbw3dGsL9datOL Om6oVjOSb2HKs7Om50ilp2L4R85M9GFF1RuS5CouT6b/mdeqZnoV0LKiy77cGvI+GUP5vq43a 0aJDCvUgi08GD8PMQ4xJxG+yjDX/i43w8BIE9tWxZyqpWafAywU10u64CqgyV98XGjEvOuKst HBZ1G20byBdoFEDFRV0NAezbwSP0u05c3V0R8hcpCPUCwXP9AaJdNpSm08pGHAAGEGHgboFKi bOSbHVwNYALG8xsXEmfXTt1MY1d3BqVHNJrJu3U/XsKXdez77Wvd2TgCdzEK30bVI7GX6030c TSQFeetYryvXQZt6uxO/jGYCjf5e/rQRuuJ1TwWuEgyDWYleDPZqr0UVS2uyMCjfc4ZI9l6mW YYVuODL8P4Q7tTJRCJNDMjqqkwzxImXogdIKnSU58vi5JiAVsRIGN8IQvpZtY2KdCDEPvaWAT i27lfGiypPelHlFZokCmsb2JA0F4CN1SAZeqgfkQl35fDATyBPT5zK+SWfxKYaps3VHIbm4Th Z9yq6sTXl/xTztbg5tgXt3PJPpj2TOmlsNRW2rcCdHDT5yO2unpZ+9RHu77DXd9/OHCbtojE8 xHAhCXigZYbVoKoKqJU0Qn+DKxx1iHbcP82nMUsZpwAYxdmo3UJnT/EKRFYo+mO+JaFKoC6i3 9vFSW4gjgcxnRqMCfigYx1XWcJtDGg8lFNM6DSYTnJOj08jvOukaWDoEjwm2onlJuF7fviqK4 T3WR2uErpu9oljKG86eR1M6vyFKt6i3AxO3gC7UtkCXKfVx4yU3vw+OgNBlsoA0tD4ThuDpgW buxE1wX3t9sefY0VHuqg5zyoFOXlV+FYV8vEKG/PhNyO0GmmNZD9rwPnN5NQ56GHJqsh3Ambc ETZD84fqKy5wmR60+0CLB2/7hQMhYjcOUUUejTpxzGXeJHQq/D4LXPEQcXMwm+LtDHSmLy/yJ VlP7l67AqKUNy6Fuy3plhE3GwyLYT85Wq1sK3OMNj2bbsxYZrKVzhb3qbHh2ZKq2dVM2XqJZr g6HQ9bbREkvtjdDOjU8Jv5Q0a+1sIUomSTyFiY+tKdB3wE1kEXRLhk0xSZPUBt03FjAv95+d5 dcbbZ0ARbEVz7RwhqFKzrc4CAyvvlY/qb5fZPLYtCfc3DcO8J/91zgva9fkzXkNmpq5pYSn+T OV7bF+ktITywkKOTLd0CTN/CISECOwyhgg8kUw4pLSsyt+teFfJIGoG4qQxEhZsaWL0PkYeiw WbQmcX3j7rb0JVaaNHuUdh37Ko1qUM94MlRtHZsF92lOx+vFKcy1f953nN1v9YIzr+980hLSE BT8GF/cQZfytrnaTStYt3by+bYSkuphLtlfvCR7IoQ/Y2Oog27KDeQCUVNcePx6T6Q0h9Vzhu jUak9yNVI20q7cDy9sSV1Zu72UjXtjoxstWOVpjc55NYWdxebFaGNheo56sQ7pqVhxo4Yu7Er sMfsQMAjYgPOwVDU7SopQZs5Kh8Kxc3GmsSpu971K+xr/UN147u8JaqsFGDzC9ALS7j/Cvzag 8QRb/bl8F+FLnketS9tlpevqnHQLAVOQWAUa37gYRqbplQSzMoJcKfAJF1cYpy6MeTsAaDZfu 90sg7sTTuQYJP6GLpcZmUaS1nRpwGGFnROIPHJbUcRf0mOHy46pTNzl1uh2IkD1hJc3WG3xGb f5go74zdGj5mZUNgQkxBdEP0ZK5xGW18SkwNeMrmRkZWg11JAik6MVvz/5ESAt824P1o/99of ZHc0ef8bH5R8yxyuifGA7gGT5x9JFN9Et59asW5A7RVq/N6RVhX4/ZfJ7TS2TmxXr/D+WguTr D5WnOL8h7xhJTy5NHM2HD6oHreHuB3PHSCL2aGtd2Xv5uNGSv3LyZmLWwMScLuk1JDUhnOn74 /bId4of5Xrl/RtzE4SUBycAtcPGj72JvdPVjKmE0dyL2R1rkrUUrGQ7FrySD7vlxhoRzhMoif gm/N9upSWb76UBMdKJi4Q0MvwsaCTPyW+oPbH1m14muoGWnEG4RDgFdzlsLzaD6s+TWSpbUeW fOkLNl+CbegrIOYVvUW//5Uvuk9nPNEblSDpdl0/wFuimJsFl4bUbr/dz3kYlDDjxecH7g3N0 10IPssHkeUUfNuy6yRMExzuP2401pr0gbgXfgMnkOoPbkAoF0QkNqNKwS/3p4lca2vw8z8fOD BNuG0/MqhJsKqxw/+XbtXBWVzhfapziGyq4mBWgtwqzz0uXhjq3PVrbEMyAOt+5uPom7uWW7u 76KpJ11RkhLQSkcGGoOco6ynxH2eCjm08NYngYT8acJdbA9L9O0kPrsKvneLf4fSWDQQmQKoT 6snND1sf/GFwwHDPOk7PNyo0wQ1hwQhQzUhMoYYyVPqZYhpyO81OguSzYM03Mqa6QgEX0eMyu 8k4EHTTOhzhR+Z5CY/4l6kWag4o9n+kKpCROyHZYf11xJxKvHNyVXcKO/g4xXNJwFy8uz+Ald MJ6CYv2AGV+Doy2UuJ55MSUQJAVCFLzF1Yk644Ide0xO92yU7xarU4GnMIc7eUtQHdp/PPbJ+ LJfq/NiqByt8KbNuwWDd7LXezUrcbCU2ulCNmWqJHY1pTALL3hBPe2Q9A2zfymywGidyeyt31 6ecVev1eudpqrA1reExN/SGBmSABrVfzYebttuZSmBjob5NRNw3TwSOSSGPOSXrdH0YJJcuVq 7uX7/VH8sWPTzsgFnAZpD/rE3O35M/7OqPYRpnev3vgEMQYfxPujJ5factAkIKwdJPb3xBkY+ vJuNtn5lqqCGbM3hV1EgMj7XAc4UurgqJ9XXRAN1i6CLCU4j9jLLIQuM7kjrV72criG2Z1B55 kR8+CRi8h4fLWsUSopHxeseLsldYjYvrJ3kYMH4WdR85bE+DBxKx5WkdKyPsr49mdiHdHjxA6 XwD/PD2pIJa8QB9Hpi/gpLxrLg9G3rqzt5TT0h8EtnaJa/NZU7OnhZ7CpWWFBx/ivc2qiHqfT mv12YYfCJLmSNERqXCEOK+AsPh5gHy3CZ9ei1NWcgycuDHwYcNmgMJxSywfald2V2fR8JIJVx wo4Otf46vlyLnUTfZoifUEOyFAkVWyJgSwdzBw9gtYCSIdFIbYeREVPJOdn1A31D5bGTyxexw bVdTVnY5cD0qOdUNlxHByF/Gzhicc7Ml8I0IhQIpBjQ0OLuMfS2n9ifkkQ/+IQ2eH7XDZEXob erjWOchLe0qo9wswB6GtQzv7T6kJzdb2zWSyfV4mPJGYFdXA74QBlB5D3HmiLLYxEtyGBzqz9 zaDcUqdCMtyqyTO4hWbSJVUmlllOea2uvDOhs2bqDMMv8OplzbYMwALiSNnbZJCPdKFuL9FhO LJ2wGtvYZeQUSyvFw/yCFhaSBHMwzU3j91EdD1T6yLw68Xq3fmcFdq3At3sO/IrJ8gpBp98Vm nWRk4WWPT0VDLnwhaPnKjkiuOy0c7mLsXaWWlmpX7EKgTjMHE83ry3849noZqaBL58enTZZrQ WLHwPglRWGgsoAnCXpqiFIFqbwr+RDnGnugRC7mkl5UxnljSZF+7fj18fI5r2CF0D+pt/m4mR niRV8JWw/9p2Cm7MJFr+VdIFH7orW/x2WqDewfVFr6ovmib/+Sz9cm2b1OSYZmJmQKPo4FA6A tcdH8m12yMWth1G42NqstBjy0KVixIaEGBfpoA+KY29MobzYBvyIurLByn7Ig2/AdTvJMBDi8 zA1PMrz2F4vjVqefx/a00/8rP/HRFyskpztCSI5uOg6iWvYLw1AQTVXofOGhLS4Dw+LWXiyiQ qTIwe6MOowcdwC5lzuL/+jfWdNwkGYpoOCqeh7zrrnLbYKrlVebsPd+3PNSd4+HWf0ZEs4a1o tkL82XyCYhdVzodWHvj3xD34dsZbRucKtHJEOeqnD2fiKt1237kfUHnP6/QKPjrX4y/nwmmgs UkXb4PkzLfqc+0Ebd0V4LnYfRwEjHbvOkDnsHl4JlHFptJfpd1VQ/zr62izJsoa6c582ihqz3 /tsjxbxsE72JBGSoWc/2UEeQEN0qWXoucLhtxn8ZUoGyGS2R9Fpo5BBduJkme/pzO7v5PzAGF vyU1T4fey9p1fxhBVRU6WlJ+G9N/4RCg6DX4iHKklivmrd5mg5LTA31SccLa7NQ4df3Kchf72 /NnKzTYK+Zptd8JT9dH6XZytDDKy+lYX7INQS1KvO8QWf7lhFJPAzEesYT9Z7uO3kbH1+TBf8 677/XY9CDLMzv8LKRzRcViA4HIxLM/IzW7JTqHsD08C3cwEyb/ontvDrnpz3PCzB0jGdg/x44 0Q4e+Ck/dtjzyeuo8XCW37eC3d7WGwQeW3q1ZgxBo5dH/M7YW+Cl46nyRqAWZoJdI8dQ0U3wd 6IQeRMXN3zZTZ2/uxpwbyAjM0hCwcQJ2bf4mYyZDlj+cPZgiyqHnCi7nFyEdQAcxf6VznpONa PgnVUs8AMA/HIhNXAsJ6SfSXIIoB3uvTpifZLN X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, Stefan Monnier <monnier@HIDDEN>, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) St=C3=A9phane Marks <shipmints@HIDDEN> writes: Hi St=C3=A9phane, > Here's the patch rebased on master as of just now with bug# added. Thanks. I've pushed it to master. Also some few typos are fixed. > How about we leave this bug open and I'll submit a small patch to > demote the error? Sure. > -St=C3=A9phane=20 Best regards, Michael.
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 21 Dec 2025 11:51:54 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Dec 21 06:51:54 2025 Received: from localhost ([127.0.0.1]:34781 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vXHyb-0006iN-Tt for submit <at> debbugs.gnu.org; Sun, 21 Dec 2025 06:51:54 -0500 Received: from mail-vs1-xe32.google.com ([2607:f8b0:4864:20::e32]:48531) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vXHyY-0006hv-IW for 79859 <at> debbugs.gnu.org; Sun, 21 Dec 2025 06:51:51 -0500 Received: by mail-vs1-xe32.google.com with SMTP id ada2fe7eead31-5dbe6be1ac5so1214771137.1 for <79859 <at> debbugs.gnu.org>; Sun, 21 Dec 2025 03:51:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766317905; x=1766922705; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=jK2hxliNINRZmssEKbkPSYm9n1UN83+E7OzKBKUic5M=; b=OjbIcOqo2zXSqdkD60y3LfFDB3pyeq5m9RlGcOITSQeBl/pm0Uo322jmQH0kvp+iOe 9k+1DXait0iM2j2Et8Tt2XcEj97zDHPrDE8In7wj19940zghYuIa9BgmpkryBBBxI6c9 kKAQ7NtjSftRbKVlalLeNd1lOGb3Mk5m0oFp51hchGbcxBbKHKFp8A3hvQPcENwLzEuu B7G9sKBGbVZOKuMGxkb/vTbjkvD81eAzWCjSv3xlt+1rL2ro7GM9oZpop05uo6/bRqFD HflHgVTDiFUBekxPP+eD39A/8WD3OoY664Y8X2paJtixudEkSXQsZxXCFsXNdwhMCFFY SL8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766317905; x=1766922705; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=jK2hxliNINRZmssEKbkPSYm9n1UN83+E7OzKBKUic5M=; b=bDjtavCPV9V1S/fXAYzbgrWLXZx68Lb4LMoGl2Rt0h80q5zpQsmtZPyrtJsMLmpL6k 7hcoH/Y2stU5SXd4EwVAkAPBK2vyiGi6H4dd12N/XYOvwSIrDfjVqb1mELK6YopQ3y3X DywPBUDOBlXrtoQljHwa932LX8kocdfSTtxbdU7pPoID8AZg88jXrCVMEd/eDByMAuce TMi4ffwfYqumWe/MHBxhFgXEJzJt1DSK66itxKmzqEJSklhrP25rUAX8w+AlwVDr/oxf 1H0jt0XmnoTB+arGiqkXevGIkEPidoFKdRNEs0mvjFlNboshFQIu85QsJXcSKDly6v0h 50mg== X-Forwarded-Encrypted: i=1; AJvYcCVV0Zvv4mRxZiAS9KyJ4+bsE4Uid/AOSxkxwUQj678NYmLr2mpdK22cibnIWoj1v5kQKHAxHw==@debbugs.gnu.org X-Gm-Message-State: AOJu0YyMcr8kRdL6r+/h+bsU1GIGH8up7jcriyFM0r12NYGrYCNOv36H E9EPJrHxQnLH3DA+5Tt7iLgufz/fxBlM5zVT962JO3QY3YzN3ukKj69K6ZNQNJqI7eP4rvPZBEr usgQr5Zov62Z28czKcHJwjJh41BdnuEw= X-Gm-Gg: AY/fxX7jsQ2RXoLMb3Kq4aDQaI4bCPEO8j4gbPkMAxLd8eq4PD44Dn/XVYa2x6tiBMZ NHcGaZLBVfd0pVJpo56o3prz1x3zSFXl95zgE6Du94PRj9GsO117XLpSRGdDpB3OY5Ur29WObTD S72Z75bB7l2us75P4OuYsSKgSF5w414Pa6xFNj0/MXwmKOcQTwsbJhsdSSwtM/XQG+93juFJ3zM +XS4KpVgGEl94kgUxTPBs/zjMltd5pFG0D4FkuupQGNeFq2nGICQDQjwToBLHfd2rv+jdA= X-Google-Smtp-Source: AGHT+IEUkLHgk+nB8d/gCmiVp43yUR9q9QULakFjSdjZOkTIqO6LT1zERggEksFDQrxguzk46Sj+IrVOS15XWTCFaLQ= X-Received: by 2002:a05:6102:b0b:b0:5db:33f9:adce with SMTP id ada2fe7eead31-5eb1a85a24dmr2379980137.41.1766317904826; Sun, 21 Dec 2025 03:51:44 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86ikedavlh.fsf@HIDDEN> <CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN> <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN> <jwv7buss9jh.fsf-monnier+emacs@HIDDEN> <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN> <jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN> <CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN> <CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN> <jwvqzstjc9w.fsf-monnier+emacs@HIDDEN> <CAN+1HbqfpV7aDTRVxvqBkvA0AYJvPHmDYxzfc2xR5rYYD1dtBg@HIDDEN> <jwvy0n1hqyl.fsf-monnier+emacs@HIDDEN> <CAN+1HbrfokZqoYOuDEKWNVSSwZ-AkACtSM3FBoM=45i5DHFP=Q@HIDDEN> <jwv8qf0la6m.fsf-monnier+emacs@HIDDEN> <CAN+1HboxBTprW3zP9HrQmOCjySkaduR=wEv8CkO-Wj_+rY55Wg@HIDDEN> <87bjjtjyjp.fsf@HIDDEN> <CAN+1HbrgCjP4xDEd8cardzySO2WkC=bMVtX4mftaoe7ONsbWnw@HIDDEN> <jwvo6ntdmdo.fsf-monnier+emacs@HIDDEN> <CAN+1HbrFMvrT=+9wjckjbnR7dkgYe_+AcpSG+vRFA46M5sg2rA@HIDDEN> <CAN+1HbrR3tc+r84e71VbCksUqgWh_zxFoSjNSZan2DbAn3E9rQ@HIDDEN> <871pkob4i6.fsf@HIDDEN> In-Reply-To: <871pkob4i6.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sun, 21 Dec 2025 06:51:33 -0500 X-Gm-Features: AQt7F2rJ3cQS_Thova5uc4wOn2aDs6hqGEYnooqdoOBOeDpb3eEEYhGocn5HgMk Message-ID: <CAN+1HbocNLA1R=OyPXzjOWq4_uwBynzQTYwZW5PKHdzfw5Fa1A@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Michael Albinus <michael.albinus@HIDDEN> Content-Type: multipart/mixed; boundary="000000000000473a4d064674ef28" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, Stefan Monnier <monnier@HIDDEN>, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --000000000000473a4d064674ef28 Content-Type: multipart/alternative; boundary="000000000000473a4c064674ef26" --000000000000473a4c064674ef26 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Dec 21, 2025 at 3:53=E2=80=AFAM Michael Albinus <michael.albinus@gm= x.de> wrote: > St=C3=A9phane Marks <shipmints@HIDDEN> writes: > > Hi St=C3=A9phane, > > > I'm good to go if Albinus is happy. > > The patch is almost OK. I've tried to submit it, but it failed: > > --8<---------------cut here---------------start------------->8--- > # git am ~/XXX > Applying: System GUI taskbar and progress reporter hooks > error: patch failed: etc/NEWS:3579 > error: etc/NEWS: patch does not apply > Patch failed at 0001 System GUI taskbar and progress reporter hooks > hint: Use 'git am --show-current-patch=3Ddiff' to see the failed patch > hint: When you have resolved this problem, run "git am --continue". > hint: If you prefer to skip this patch, run "git am --skip" instead. > hint: To restore the original branch and stop patching, run "git am > --abort". > hint: Disable this message with "git config set advice.mergeConflict fals= e" > --8<---------------cut here---------------end--------------->8--- > > Please rebase the patch on mster. And please add the bug number to the > commit message. > > > I think I did want to demote the mode error to a warning. So one more > > round. > > We can do this, of course. But I would really prefer to commit the patch > as-it-is. Otherwise, reviews of your further changes will be too > expensive. > Here's the patch rebased on master as of just now with bug# added. How about we leave this bug open and I'll submit a small patch to demote the error? -St=C3=A9phane --000000000000473a4c064674ef26 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sun, Dec 21, 2025 at 3:53=E2=80=AFAM Michael Albinus <<a href=3D"mail= to:michael.albinus@HIDDEN">michael.albinus@HIDDEN</a>> wrote:</span></di= v></div><div class=3D"gmail_quote gmail_quote_container"><blockquote class= =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg= b(204,204,204);padding-left:1ex">St=C3=A9phane Marks <<a href=3D"mailto:= shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> writes:<= br> <br> Hi St=C3=A9phane,<br> <br> >=C2=A0 =C2=A0 =C2=A0I'm good to go if Albinus is happy. <br> <br> The patch is almost OK. I've tried to submit it, but it failed:<br> <br> --8<---------------cut here---------------start------------->8---<br> # git am ~/XXX<br> Applying: System GUI taskbar and progress reporter hooks<br> error: patch failed: etc/NEWS:3579<br> error: etc/NEWS: patch does not apply<br> Patch failed at 0001 System GUI taskbar and progress reporter hooks<br> hint: Use 'git am --show-current-patch=3Ddiff' to see the failed pa= tch<br> hint: When you have resolved this problem, run "git am --continue"= ;.<br> hint: If you prefer to skip this patch, run "git am --skip" inste= ad.<br> hint: To restore the original branch and stop patching, run "git am --= abort".<br> hint: Disable this message with "git config set advice.mergeConflict f= alse"<br> --8<---------------cut here---------------end--------------->8---<br> <br> Please rebase the patch on mster. And please add the bug number to the<br> commit message.<br> <br> > I think I did want to demote the mode error to a warning. So one more<= br> > round. <br> <br> We can do this, of course. But I would really prefer to commit the patch<br= > as-it-is. Otherwise, reviews of your further changes will be too<br> expensive.<br></blockquote><div><br></div><div class=3D"gmail_default" styl= e=3D"font-family:monospace">Here's the patch rebased on master as of ju= st now with bug# added.</div><div class=3D"gmail_default" style=3D"font-fam= ily:monospace"><br></div><div class=3D"gmail_default" style=3D"font-family:= monospace">How about we leave this bug open and I'll submit a small pat= ch to demote the error?</div><div class=3D"gmail_default" style=3D"font-fam= ily:monospace"><br></div><div class=3D"gmail_default" style=3D"font-family:= monospace">-St=C3=A9phane=C2=A0</div></div></div> --000000000000473a4c064674ef26-- --000000000000473a4d064674ef28 Content-Type: application/octet-stream; name="0001-System-GUI-taskbar-and-progress-reporter-hooks-bug-7.patch" Content-Disposition: attachment; filename="0001-System-GUI-taskbar-and-progress-reporter-hooks-bug-7.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mjfo1h1y0> X-Attachment-Id: f_mjfo1h1y0 RnJvbSBhNTMwYTBjZTZjMGIyMWQyZWY4NzM2ZTdjODg3ZWE4MThhNjcxNGRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFRodSwgMjAgTm92IDIwMjUgMTI6NTQ6NDAgLTA1MDAK U3ViamVjdDogW1BBVENIXSBTeXN0ZW0gR1VJIHRhc2tiYXIgYW5kIHByb2dyZXNzIHJlcG9ydGVy IGhvb2tzIChidWcjNzk4NTkpCgpJbXBsZW1lbnQgc3lzdGVtIEdVSSB0YXNrYmFyL2RvY2svbGF1 bmNoZXIgaWNvbiBiYWRnZSwgaWNvbgpwcm9ncmVzcyBpbmRpY2F0b3IsIGljb24gYXR0ZW50aW9u IGFsZXJ0IGZlYXR1cmVzIGZvciBELUJ1cwpwbGF0Zm9ybXMgKHRlc3RlZCBvbiBLREUgYW5kIEdO T01FKSwgTlMgKG1hY09TL0dOVXN0ZXApLApNUy1XaW5kb3dzLgoKQWRkICdwcm9ncmVzcy1yZXBv cnRlci11cGRhdGUtZnVuY3Rpb25zJyBhYm5vcm1hbCBob29rIHRvIGZhY2lsaXRhdGUKdGFza2Jh ciBwcm9ncmVzcyBkaXNwbGF5LCBhbmQgb3RoZXIgY3VzdG9tIHByb2dyZXNzIHJlcG9ydGVycy4K VGhlIGRlZmF1bHQgZnVuY3Rpb24gbGlzdCBpcyAncHJvZ3Jlc3MtcmVwb3J0ZXItZWNoby1hcmVh JyB3aGljaAppcyBiYWNrd2FyZCBjb21wYXRpYmxlLgoKKiBsaXNwL3N1YnIuZWwgKHByb2dyZXNz LXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMpOgpOZXcgZGVmdmFyLgoocHJvZ3Jlc3MtcmVwb3J0 ZXItZWNoby1hcmVhKTogTmV3IGRlZnVuLgoocHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRlKTog UnVuCnByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMgZm9yIGJvdGggbnVtZXJpY2Fs IGFuZApwdWxzaW5nIHJlcG9ydGVycy4KKHByb2dyZXNzLXJlcG9ydGVyLWRvbmUpOiBSdW4gcHJv Z3Jlc3MtcmVwb3J0ZXItZG9uZS1mdW5jdGlvbnMuCiogbGlzcC9zeXN0ZW0tdGFza2Jhci5lbDog TmV3IGZpbGUuCiogc3JjL25zZm5zLm0gKEZuc19iYWRnZSwgRm5zX3Byb2dyZXNzX2luZGljYXRv cikKKEZuc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uKTogTmV3IGZ1bmN0aW9uLgooc3ltc19vZl9u c2Zucyk6IEFkZCBkZWZzdWJyIFNuc19iYWRnZSwKU25zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24s IFNuc19wcm9ncmVzc19pbmRpY2F0b3IuIEFkZCBERUZTWU0KUWluZm9ybWF0aW9uYWwsIFFjcml0 aWNhbC4KKiBzcmMvdzMyZm5zLmMgKHJnYl9saXN0X3RvX2NvbG9ycmVmLCBGdzMyX2JhZGdlKQoo RnczMl9yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uLCBGdzMyX3Byb2dyZXNzX2luZGljYXRvcik6IE5l dwpmdW5jdGlvbi4KKHN5bXNfb2ZfdzMyZm5zKTogQWRkIGRlZnN1YnIgU3czMl9iYWRnZSwKU3cz Ml9wcm9ncmVzc19pbmRpY2F0b3IsIFN3MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbi4gQWRkIERF RlNZTQpRaW5mb3JtYXRpb25hbCwgUWNyaXRpY2FsLgoqIGRvYy9lbWFjcy9mcmFtZXMudGV4aTog VXNlciBkb2N1bWVudGF0aW9uLgoqIGRvYy9saXNwcmVmL29zLnRleGk6IFByb2dyYW1tZXIgZG9j dW1lbnRhdGlvbi4KKiBldGMvTkVXUzogQW5ub3VuY2Ugc3lzdGVtLXRhc2tiYXItbW9kZS4gIEFu bm91bmNlIHByb2dyZXNzCnJlcG9ydGVyIGNhbGxiYWNrIGVuaGFuY2VtZW50cy4KLS0tCiBkb2Mv ZW1hY3MvZnJhbWVzLnRleGkgIHwgIDcwICsrKysrKwogZG9jL2xpc3ByZWYvb3MudGV4aSAgICB8 IDEyMiArKysrKysrKysrCiBldGMvTkVXUyAgICAgICAgICAgICAgIHwgIDIyICsrCiBsaXNwL3N1 YnIuZWwgICAgICAgICAgIHwgIDgzICsrKysrLS0KIGxpc3Avc3lzdGVtLXRhc2tiYXIuZWwgfCA1 MzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9uc2Zucy5t ICAgICAgICAgICAgfCAxMjggKysrKysrKysrKwogc3JjL3czMmZucy5jICAgICAgICAgICB8IDMy NyArKysrKysrKysrKysrKysrKysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDEyNjMgaW5zZXJ0 aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGlzcC9zeXN0ZW0t dGFza2Jhci5lbAoKZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9mcmFtZXMudGV4aSBiL2RvYy9lbWFj cy9mcmFtZXMudGV4aQppbmRleCA1YjExYWYyYjE3Zi4uMWIxZjBjYThkYjIgMTAwNjQ0Ci0tLSBh L2RvYy9lbWFjcy9mcmFtZXMudGV4aQorKysgYi9kb2MvZW1hY3MvZnJhbWVzLnRleGkKQEAgLTU4 LDYgKzU4LDcgQEAgRnJhbWVzCiAqIE1lbnUgQmFyczo6ICAgICAgICAgICBFbmFibGluZyBhbmQg ZGlzYWJsaW5nIHRoZSBtZW51IGJhci4KICogVG9vbCBCYXJzOjogICAgICAgICAgIEVuYWJsaW5n IGFuZCBkaXNhYmxpbmcgdGhlIHRvb2wgYmFyLgogKiBUYWIgQmFyczo6ICAgICAgICAgICAgRW5h YmxpbmcgYW5kIGRpc2FibGluZyB0aGUgdGFiIGJhci4KKyogU3lzdGVtIFRhc2tiYXI6OiAgICAg IFVzaW5nIHN5c3RlbSBHVUkgdGFza2JhciBmZWF0dXJlcy4KICogRGlhbG9nIEJveGVzOjogICAg ICAgIENvbnRyb2xsaW5nIHVzZSBvZiBkaWFsb2cgYm94ZXMuCiAqIFRvb2x0aXBzOjogICAgICAg ICAgICBEaXNwbGF5aW5nIGluZm9ybWF0aW9uIGF0IHRoZSBjdXJyZW50IG1vdXNlIHBvc2l0aW9u LgogKiBNb3VzZSBBdm9pZGFuY2U6OiAgICAgUHJldmVudGluZyB0aGUgbW91c2UgcG9pbnRlciBm cm9tIG9ic2N1cmluZyB0ZXh0LgpAQCAtMTYzMSw2ICsxNjMyLDc1IEBAIFRhYiBCYXJzCiAgIEl0 J3MgcG9zc2libGUgdG8gY3VzdG9taXplIHRoZSBpdGVtcyBkaXNwbGF5ZWQgb24gdGhlIHRhYiBi YXIKIGJ5IHRoZSB1c2VyIG9wdGlvbiBAY29kZXt0YWItYmFyLWZvcm1hdH0uCiAKK0Bub2RlIFN5 c3RlbSBUYXNrYmFyCitAc2VjdGlvbiBVc2luZyBTeXN0ZW0gR1VJIFRhc2tiYXIgRmVhdHVyZXMK K0BjaW5kZXggc3lzdGVtIHRhc2tiYXIKK0BjaW5kZXggbW9kZSwgc3lzdGVtIHRhc2tiYXIKKwor ICBFbWFjcyBjYW4gdXNlIHlvdXIgR1VJIHN5c3RlbSB0YXNrYmFyIHRvIGRpc3BsYXkgYSBiYWRn ZSBvdmVybGF5IG9uCit0aGUgRW1hY3MgdGFza2JhciBpY29uLCBhIHByb2dyZXNzIGJhciByZXBv cnQsIGFuZCBhbGVydCB0aGUgdXNlciB0aGF0CithbiBFbWFjcyBzZXNzaW9uIG5lZWRzIGF0dGVu dGlvbi4gIE5vdGU6IFRoZSBzeXN0ZW0gdGFza2JhciBtaWdodCBiZQorY2FsbGVkIHRoZSBkb2Nr LCB0aGUgbGF1bmNoZXIsIG9yIHNvbWV0aGluZyBzaW1pbGFyLgorCitAY2luZGV4IHN5c3RlbSB0 YXNrYmFyLCBHTlUvTGludXgKK09uIEdOVS9MaW51eCBlbGlnaWJsZSBHVUkgZGVza3RvcHMsIHN5 c3RlbSB0YXNrYmFyIGVmZmVjdHMgd2lsbCBhcHBlYXIKK29uIHRoZSBkZXNrdG9wIGRlc3RpbmF0 aW9ucyBkZXRlcm1pbmVkIGJ5IHlvdXIgc2hlbGwgZXh0ZW5zaW9uLCBtb3N0CitvZnRlbiB0aGUg YXBwbGljYXRpb24gbGF1bmNoZXIgb3IgZG9jayBwYW5lbCwgb3IgdGhlIHRvcCBwYW5lbC4gIEVm ZmVjdHMKK2FyZSBnbG9iYWwgZm9yIGFuIEVtYWNzIGluc3RhbmNlLgorCitOb3RlOiBUaGUgR05V L0xpbnV4IGltcGxlbWVudGF0aW9uIHNlbmRzIHN5c3RlbSB0YXNrYmFyIG1lc3NhZ2VzIHRvIHRo ZQorR1VJIHVzaW5nIEQtQnVzLiAgWW91IG1heSBuZWVkIHRvIGluc3RhbGwgb3IgY29uZmlndXJl IHNoZWxsIGV4dGVuc2lvbnMKK3N1Y2ggYXMgQHVybHtodHRwczovL2V4dGVuc2lvbnMuZ25vbWUu b3JnL2V4dGVuc2lvbi8zMDcvZGFzaC10by1kb2NrL30KK3RoYXQgaW1wbGVtZW50IFVidW50dSdz IFVuaXR5IEQtQnVzIGxhdW5jaGVyIHNwZWMgd2hpY2ggeW91IGNhbiByZWFkCittb3JlIGFib3V0 IGhlcmUgQHVybHtodHRwczovL3dpa2kudWJ1bnR1LmNvbS9Vbml0eS9MYXVuY2hlckFQSX0uCitA eHJlZntUb3AsLCwgZGJ1cywgVGhlIEQtQnVzIE1hbnVhbH0uCisKK0BjaW5kZXggc3lzdGVtIHRh c2tiYXIsIG1hY09TL0dOVXN0ZXAKK0BjaW5kZXggc3lzdGVtIHRhc2tiYXIsIE5TCitPbiBtYWNP Uy9HTlVzdGVwIDEwLjUrLCBzeXN0ZW0gdGFza2JhciBlZmZlY3RzIGFwcGVhciBvbiB0aGUgRG9j ayBhbmQgaW4KK3RoZSBBcHAgU3dpdGNoZXIuICBFZmZlY3RzIGFyZSBnbG9iYWwgZm9yIGFuIEVt YWNzIGluc3RhbmNlLgorbWFjT1MvR05Vc3RlcCBuZWVkIG5vIHNwZWNpYWwgY29uZmlndXJhdGlv bi4KKworQGNpbmRleCBzeXN0ZW0gdGFza2JhciwgTVMtV2luZG93cworT24gTVMtV2luZG93cyA3 KywgdGFza2JhciBlZmZlY3RzIGFwcGVhciBvbiB0aGUgV2luZG93cyBzeXN0ZW0gdGFza2Jhci4K K0VmZmVjdHMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZnJhbWUgZnJvbSB3aGljaCB0aGV5IGFy ZSBpbml0aWF0ZWQuCitNUy1XaW5kb3dzIG5lZWRzIG5vIHNwZWNpYWwgY29uZmlndXJhdGlvbi4K KworQGZpbmRleCBzeXN0ZW0tdGFza2Jhci1tb2RlCisgIFlvdSBtdXN0IGluaXRpYWxpemUgc3lz dGVtLXRhc2tiYXIgYmVmb3JlIHVzaW5nIGl0LiAgVG8gZG8gdGhhdCwgdHlwZQorQGtiZHtNLXgg c3lzdGVtLXRhc2tiYXItbW9kZX0uCisKK0B2aW5kZXggc3lzdGVtLXRhc2tiYXItdXNlLXByb2dy ZXNzLXJlcG9ydGVyCisgIFRoZSB1c2VyIG9wdGlvbiBAY29kZXtzeXN0ZW0tdGFza2Jhci11c2Ut cHJvZ3Jlc3MtcmVwb3J0ZXJ9IGludGVncmF0ZXMKK0Bjb2Rle3N5c3RlbS10YXNrYmFyLW1vZGV9 IHdpdGggRW1hY3MgcHJvZ3Jlc3MgcmVwb3J0IGZ1bmN0aW9ucywgd2hpY2gKK21hbnkgbG9uZ2Vy LXJ1bm5pbmcgZnVuY3Rpb25zIHVzZSB0byBpbmRpY2F0ZSB0aGUgcHJvZ3Jlc3Mgb2YgdGhlaXIK K3dvcmsuICBQcm9ncmVzcyByZXBvcnRzIHdpbGwgYXBwZWFyIGluIHRoZSBlY2hvIGFyZWEgYW5k IG9uIHRoZSBzeXN0ZW0KK3Rhc2tiYXIgRW1hY3MgaWNvbi4gIFRoaXMgdmFyaWFibGUgZGVmYXVs dHMgdG8gQGNvZGV7dH0uICBDdXN0b21pemUgdGhpcwordmFyaWFibGUgYmVmb3JlIGVuYWJsaW5n IEBjb2Rle3N5c3RlbS10YXNrYmFyLW1vZGV9LiAgQHhyZWZ7UHJvZ3Jlc3MsLCwKK2VsaXNwfQor CitAdmluZGV4IHN5c3RlbS10YXNrYmFyLWNsZWFyLWF0dGVudGlvbi1vbi1mcmFtZS1mb2N1cwor ICBUaGUgdXNlciBvcHRpb24gQGNvZGV7c3lzdGVtLXRhc2tiYXItY2xlYXItYXR0ZW50aW9uLW9u LWZyYW1lLWZvY3VzfQordHVybnMgb24gYSBoZWxwZXIgdXNlZnVsIG9uIEdOVS9MaW51eCBELUJ1 cyBwbGF0Zm9ybXMgd2hpY2gKK2F1dG9tYXRpY2FsbHkgY2xlYXJzIHRoZSBzeXN0ZW0gdGFza2Jh ciBhdHRlbnRpb24gaW5kaWNhdG9yIHdoZW4gYW55CitFbWFjcyBmcmFtZSBpcyBmb2N1c2VkLiAg VGhpcyBoYXMgbm8gZWZmZWN0IG9uIG1hY09TL0dOVXN0ZXAgb3IKK01TLVdpbmRvd3MuICBJdCBk ZWZhdWx0cyB0byBAY29kZXt0fS4gIEN1c3RvbWl6ZSB0aGlzIHZhcmlhYmxlIGJlZm9yZQorZW5h YmxpbmcgQGNvZGV7c3lzdGVtLXRhc2tiYXItbW9kZX0uCisKK0B2aW5kZXggc3lzdGVtLXRhc2ti YXItZGJ1cy1kZXNrdG9wLWZpbGUtbmFtZQorICBUaGUgdXNlciBvcHRpb24gQGNvZGV7c3lzdGVt LXRhc2tiYXItZGJ1cy1kZXNrdG9wLWZpbGUtbmFtZX0gaGVscHMKK0QtQnVzIG9uIEdOVS9MaW51 eCBpZGVudGlmeSBsYXVuY2hlZCBpbnN0YW5jZSBvZiBFbWFjcy4gIEl0IGRlZmF1bHRzIHRvCitA c2FtcHtlbWFjc2NsaWVudH0gYW5kIG1heSBuZWVkIHRvIGJlIGNoYW5nZWQgdG8gQHNhbXB7ZW1h Y3N9IGRlcGVuZGluZworb24geW91ciBHTlUvTGludXggY29uZmlndXJhdGlvbi4KKworQHZpbmRl eCBzeXN0ZW0tdGFza2Jhci1kYnVzLXRpbWVvdXQKKyAgVGhlIHVzZXIgb3B0aW9uIEBjb2Rle3N5 c3RlbS10YXNrYmFyLWRidXMtdGltZW91dH0gaXMgYQordHJvdWJsZXNob290aW5nIHRvb2wgYW5k IGl0IGxpa2VseSBkb2VzIG5vdCBuZWVkIHRvIGJlIGN1c3RvbWl6ZWQuICBJdAorZGVmYXVsdHMg dG8gQGNvZGV7bmlsfSB3aGljaCB1c2VzIHRoZSBELUJ1cyBkZWZhdWx0IHRpbWVvdXQgd2hpY2gg aXMKKzI1LDAwMG1zIG9yIDI1cy4KKworQHhyZWZ7U3lzdGVtIFRhc2tiYXIsLCwgZWxpc3AsIFRo ZSBFbWFjcyBMaXNwIFJlZmVyZW5jZSBNYW51YWx9CisKIEBub2RlIERpYWxvZyBCb3hlcwogQHNl Y3Rpb24gVXNpbmcgRGlhbG9nIEJveGVzCiBAY2luZGV4IGRpYWxvZyBib3hlcwpkaWZmIC0tZ2l0 IGEvZG9jL2xpc3ByZWYvb3MudGV4aSBiL2RvYy9saXNwcmVmL29zLnRleGkKaW5kZXggNDRkZDNi YmI2M2MuLjAyZmVmZWEzNWFiIDEwMDY0NAotLS0gYS9kb2MvbGlzcHJlZi9vcy50ZXhpCisrKyBi L2RvYy9saXNwcmVmL29zLnRleGkKQEAgLTM0LDYgKzM0LDcgQEAgU3lzdGVtIEludGVyZmFjZQog KiBCYXRjaCBNb2RlOjogICAgICAgICAgUnVubmluZyBFbWFjcyB3aXRob3V0IHRlcm1pbmFsIGlu dGVyYWN0aW9uLgogKiBTZXNzaW9uIE1hbmFnZW1lbnQ6OiAgU2F2aW5nIGFuZCByZXN0b3Jpbmcg c3RhdGUgd2l0aCBYIFNlc3Npb24gTWFuYWdlbWVudC4KICogRGVza3RvcCBOb3RpZmljYXRpb25z OjogRGVza3RvcCBub3RpZmljYXRpb25zLgorKiBTeXN0ZW0gVGFza2Jhcjo6ICAgICAgQ29udHJv bGxpbmcgc3lzdGVtIEdVSSB0YXNrYmFyIGZlYXR1cmVzLgogKiBGaWxlIE5vdGlmaWNhdGlvbnM6 OiAgRmlsZSBub3RpZmljYXRpb25zLgogKiBEeW5hbWljIExpYnJhcmllczo6ICAgT24tZGVtYW5k IGxvYWRpbmcgb2Ygc3VwcG9ydCBsaWJyYXJpZXMuCiAqIFNlY3VyaXR5IENvbnNpZGVyYXRpb25z OjogUnVubmluZyBFbWFjcyBpbiBhbiB1bmZyaWVuZGx5IGVudmlyb25tZW50LgpAQCAtMzM3MSw2 ICszMzcyLDEyNyBAQCBEZXNrdG9wIE5vdGlmaWNhdGlvbnMKIGRpc3JlZ2FyZGVkLgogQGVuZCBk ZWZ1bgogCitAbm9kZSBTeXN0ZW0gVGFza2JhcgorQHNlY3Rpb24gQ29udHJvbGxpbmcgU3lzdGVt IEdVSSBUYXNrYmFyIEZlYXR1cmVzCitAY2luZGV4IHN5c3RlbSB0YXNrYmFyCitAY2luZGV4IG1v ZGUsIHN5c3RlbSB0YXNrYmFyCisKKyAgQHhyZWZ7U3lzdGVtIFRhc2tiYXIsLCwgZW1hY3MsIFRo ZSBHTlUgRW1hY3MgTWFudWFsfSwgZm9yIGFuIG92ZXJ2aWV3CithbmQgY29uZmlndXJhdGlvbi4K KworQGRlZnVuIHN5c3RlbS10YXNrYmFyLWJhZGdlICZvcHRpb25hbCBjb3VudAorVGhpcyBmdW5j dGlvbiBkaXNwbGF5cyBAdmFye2NvdW50fSBhcyBhbiBvdmVybGF5IG9uIHRoZSBzeXN0ZW0gdGFz a2JhcgorRW1hY3MgaWNvbi4KKworSWYgQHZhcntjb3VudH0gaXMgYW4gaW50ZWdlciwgZGlzcGxh eSB0aGF0LgorCitJZiBAdmFye2NvdW50fSBpcyBhIHN0cmluZyBvbiBiYWNrIGVuZHMgdGhhdCBz dXBwb3J0IHN0cmluZ3MsIGRpc3BsYXkKK3RoYXQuICBUaGUgc3RyaW5nIHNob3VsZCBiZSBzaG9y dC4KKworT24gYmFjayBlbmRzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHN0cmluZ3MsIGNvbnZlcnQg QHZhcntjb3VudH0gdG8gYW4KK2ludGVnZXIsIG9yIEBjb2Rle25pbH0gaWYgdGhhdCBmYWlscy4K KworSWYgQHZhcntjb3VudH0gaXMgQGNvZGV7bmlsfSBvciBhbiBlbXB0eSBzdHJpbmcsIHJlbW92 ZSB0aGUgY291bnRlciBvcgorc2hvcnQgc3RyaW5nLgorCitEaXNwbGF5IHRoZSBzeXN0ZW0gdGFz a2JhciBpY29uIGJhZGdlIHNldCB0byBAdmFye2NvdW50fS4gIElmCitAdmFye2NvdW50fSBpcyBA Y29kZXtuaWx9LCBjbGVhciB0aGUgYmFkZ2UuICBAdmFye2NvdW50fSBpcyB0eXBpY2FsbHkgYW4K K2ludGVnZXIuCisKK0lmIEB2YXJ7Y291bnR9IGlzIGEgc3RyaW5nLCBpdCBpcyBjb252ZXJ0ZWQg dG8gYW4gaW50ZWdlciBvbiBzeXN0ZW1zCit0aGF0IGRvIG5vdCBzdXBwb3J0IHN0cmluZyBiYWRn ZXMsIHN1Y2ggYXMgR05VL0xpbnV4IEQtQnVzLCBhbmQgdGhlCitiYWRnZSB3aWxsIGJlIGNsZWFy ZWQgaWYgdGhlIHN0cmluZyBpcyBhbiBpbnZhbGlkIGludGVnZXIKK3JlcHJlc2VudGF0aW9uLiAg T24gc3lzdGVtcyB0aGF0IHN1cHBvcnQgc3RyaW5ncywgc3VjaCBhcyBtYWNPUy9HTlVzdGVwCith bmQgTVMtV2luZG93cywgdGhlIGJhZGdlIGlzIHNldCB0byB0aGUgc3RyaW5nIGFuZCBkaXNwbGF5 ZWQsIGFuZCBtYXkgYmUKK3RydW5jYXRlZCB0byBmaXQgdGhlIHZpc3VhbCBzcGFjZSBhbGxvY2F0 ZWQgYnkgdGhlIHN5c3RlbS4gIEluIGFueSBjYXNlLAoraWYgdGhlIHN0cmluZyBpcyBlbXB0eSwg Y2xlYXIgdGhlIGJhZGdlLgorQGVuZCBkZWZ1bgorCitAZGVmdW4gc3lzdGVtLXRhc2tiYXItYXR0 ZW50aW9uICZvcHRpb25hbCB1cmdlbmN5IHRpbWVvdXQKK1RoaXMgZnVuY3Rpb24gZmxhc2hlcyBv ciBib3VuY2VzIHN5c3RlbSB0YXNrYmFyIEVtYWNzIGljb24gYW5kL29yIGl0cworZnJhbWUgdG8g YWxlcnQgdGhlIHVzZXIuCisKK0B2YXJ7dXJnZW5jeX0gY2FuIGJlIG9uZSBvZiB0aGUgc3ltYm9s cyBAY29kZXtpbmZvcm1hdGlvbmFsfSwgb3IKK0Bjb2Rle2NyaXRpY2FsfS4KKworSWYgQHZhcnt1 cmdlbmN5fSBpcyBAY29kZXtuaWx9LCBjbGVhciB0aGUgYXR0ZW50aW9uIGluZGljYXRvci4KKwor VGhlIGF0dGVudGlvbiBpbmRpY2F0b3IgaXMgY2xlYXJlZCBieSB0aGUgZWFybGllc3Qgb2YgYnJp bmdpbmcgdGhlIEVtYWNzCitHVUkgaW50byBmb2N1cywgb3IgYWZ0ZXIgQHZhcnt0aW1lb3V0fSBz ZWNvbmRzLiAgSWYgQHZhcnt0aW1lb3V0fSBpcworQGNvZGV7bmlsfSwgdGhlIHN5c3RlbSBHVUkg YmVoYXZpb3IgaGFzIHByaW9yaXR5LgorCitPbiBzb21lIGJhY2sgZW5kcywgQGNvZGV7Y3JpdGlj YWx9IGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMKK0Bjb2Rle2luZm9ybWF0aW9uYWx9LgorCitPbiBz b21lIGJhY2sgZW5kcywgYXR0ZW50aW9uIHdpbGwgYmUgZGlzcGxheWVkCitvbmx5IGlmIEVtYWNz IGlzIG5vdCB0aGUgY3VycmVudGx5IGZvY3VzZWQgYXBwbGljYXRpb24uCitAZW5kIGRlZnVuCisK K0BkZWZ1biBzeXN0ZW0tdGFza2Jhci1wcm9ncmVzcyAmb3B0aW9uYWwgcHJvZ3Jlc3MKKyAgVGhp cyBmdW5jdGlvbiBkaXNwbGF5cyBhIHByb2dyZXNzIGluZGljYXRvciBvdmVybGF5IG9uIHRoZSBz eXN0ZW0KK3Rhc2tiYXIgRW1hY3MgaWNvbi4KKworQHZhcntwcm9ncmVzc30gaXMgYSBmbG9hdCBp biB0aGUgcmFuZ2UgMC4wIHRvIDEuMC4gIElmIEB2YXJ7cHJvZ3Jlc3N9IGlzCitAY29kZXtuaWx9 LCByZW1vdmUgdGhlIHByb2dyZXNzIGluZGljYXRvci4KKworSXQgaXMgY29udmVuaWVudCB0byB1 c2UgdGhlIGJ1aWx0LWluIHByb2dyZXNzIHJlcG9ydGVyIGZ1bmN0aW9ucyB3aGljaCwKK3doZW4g QGNvZGV7c3lzdGVtLXRhc2tiYXItbW9kZX0gaXMgZW5hYmxlZCwgaW50ZWdyYXRlIHdpdGgKK0Bj b2Rle3N5c3RlbS10YXNrYmFyLXByb2dyZXNzfSBieSBkZWZhdWx0LiAgQHhyZWZ7UHJvZ3Jlc3N9 CitAZW5kIGRlZnVuCisKK0Bub2luZGVudAorRXhhbXBsZXMgb2Ygc3lzdGVtLXRhc2tiYXIgZnVu Y3Rpb25zOgorCitAbGlzcAorQGdyb3VwCis7OyBFbmFibGUgYW5kIGluaXRpYWxpemUgc3lzdGVt LXRhc2tiYXItbW9kZSBiZWZvcmUgY2FsbGluZyBpdHMKKzs7IHBhY2thZ2UgZnVuY3Rpb25zLgor KHN5c3RlbS10YXNrYmFyLW1vZGUpCisKKzs7IERpc3BsYXkgYSBiYWRnZSBpbnRlZ2VyIG9uIHRo ZSB0YXNrYmFyIGljb24uCisoc3lzdGVtLXRhc2tiYXItYmFkZ2UgZW1hY3MtbWFqb3ItdmVyc2lv bikKKworOzsgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlciBpcyBjb252ZXJ0 ZWQgdG8gYW4KKzs7IGludGVnZXIgb24gR05VL0xpbnV4LgorKHN5c3RlbS10YXNrYmFyLWJhZGdl ICIzMSIpCisKKzs7IFNob3J0IHN0cmluZ3MgYXJlIGRpc3BsYXllZCBvbiBtYWNPUy9HTlVzdGVw IGFuZCBNUy1XaW5kb3dzLgorKHN5c3RlbS10YXNrYmFyLWJhZGdlICJUZXN0IikKKworOzsgQ2xl YXIgdGhlIGJhZGdlLgorKHN5c3RlbS10YXNrYmFyLWJhZGdlKQorQGVuZCBncm91cAorCitAZ3Jv dXAKKzs7IEdldCB0aGUgdXNlcidzIGF0dGVudGlvbiBhbmQgY2xlYXIgdGhlIHJlcXVlc3QgYWZ0 ZXIgMyBzZWNvbmRzLgorKHN5c3RlbS10YXNrYmFyLWF0dGVudGlvbiAnaW5mb3JtYXRpb25hbCAz KQorCis7OyBHZXQgdGhlIHVzZXIncyBhdHRlbnRpb24gYW5kIGNsZWFyIHdoZW4gRW1hY3MgaXMg Zm9jdXNlZC4KKyhzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gJ2NyaXRpY2FsKQorCis7OyBDbGVh ciB0aGUgYXR0ZW50aW9uIHJlcXVlc3QuCisoc3lzdGVtLXRhc2tiYXItYXR0ZW50aW9uKQorQGVu ZCBncm91cAorCitAZ3JvdXAKKzs7IE1ha2Ugc3VyZSBzeXN0ZW0tdGFza2JhciBpcyBpbnRlZ3Jh dGVkIHdpdGggcHJvZ3Jlc3MtcmVwb3J0ZXIuCisoc2V0b3B0IHN5c3RlbS10YXNrYmFyLXVzZS1w cm9ncmVzcy1yZXBvcnRlciB0KSA7IHQgaXMgdGhlIGRlZmF1bHQKKyhzeXN0ZW0tdGFza2Jhci1t b2RlKQorCis7OyBSZXBvcnQgYGRvdGltZXNgIHByb2dyZXNzIG9uIHRoZSB0YXNrYmFyIGljb24u CisoZG90aW1lcy13aXRoLXByb2dyZXNzLXJlcG9ydGVyCisgICAgKGkgMTApCisgICAgIkNvdW50 aW5nIGZyb20gMSB0byAxMC4uLiIKKyAgKHNsZWVwLWZvciAxKSkKKworOzsgUmVwb3J0IGBkb2xp c3RgIHByb2dyZXNzIG9uIHRoZSB0YXNrYmFyIGljb24uCisoZG9saXN0LXdpdGgtcHJvZ3Jlc3Mt cmVwb3J0ZXIKKyAgICAoaSAobWFrZS1saXN0IDEwIHQpKQorICAgICJQcm9ncmVzcyBmcm9tIDEg dG8gMTAgZWxlbWVudHMuLi4iCisgIChzbGVlcC1mb3IgMSkpCitAZW5kIGdyb3VwCitAZW5kIGxp c3AKKwogQG5vZGUgRmlsZSBOb3RpZmljYXRpb25zCiBAc2VjdGlvbiBOb3RpZmljYXRpb25zIG9u IEZpbGUgQ2hhbmdlcwogQGNpbmRleCBmaWxlIG5vdGlmaWNhdGlvbnMKZGlmZiAtLWdpdCBhL2V0 Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggMTIyNzYwYjdhODUuLmE2MGNiMzgzZGJkIDEwMDY0NAot LS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAtMzI4NCw2ICszMjg0LDIxIEBAIFRoaXMg bGlicmFyeSBwcm92aWRlcyBmdW5jdGlvbnMgdG8gdGhyb3R0bGUgb3IgZGVib3VuY2UgRW1hY3Mg TGlzcAogZnVuY3Rpb25zLiAgVGhpcyBpcyB1c2VmdWwgZm9yIGNvcnJhbGxpbmcgb3ZlcmVhZ2Vy IGNvZGUgdGhhdCBpcyBzbG93CiBhbmQgYmxvY2tzIEVtYWNzLCBvciBkb2VzIG5vdCBwcm92aWRl IHdheXMgdG8gbGltaXQgaG93IG9mdGVuIGl0IHJ1bnMuCiAKKysrKworKiogTmV3IG1vZGUgJ3N5 c3RlbS10YXNrYmFyLW1vZGUnLgorVGhpcyBpcyBhIGdsb2JhbCBtaW5vciBtb2RlIGFuZCBjb21w YW5pb24gZnVuY3Rpb25zIHRoYXQgaW50ZWdyYXRlIEVtYWNzCit3aXRoIHN5c3RlbSBHVUkgdGFz a2JhcnMgKGFsc28gY2FsbGVkIGRvY2tzIG9yIGxhdW5jaGVycyBvciBzb21ldGhpbmcKK3NpbWls YXIpIHRvIGRpc3BsYXkgYSB0YXNrYmFyIGljb24gImJhZGdlIiBvdmVybGF5LCBhIHByb2dyZXNz IGJhcgorcmVwb3J0IG92ZXJsYXksIGFsZXJ0IHRoZSB1c2VyIHRoYXQgYW4gRW1hY3Mgc2Vzc2lv biBuZWVkcyBhdHRlbnRpb24sCitvZnRlbiBieSBmbGFzaGluZyBvciBib3VuY2luZyB0aGUgRW1h Y3MgYXBwbGljYXRpb24gaWNvbi4gIFN1cHBvcnRlZAorY2FwYWJsZSBzeXN0ZW1zIGFyZSBHTlUv TGludXggdmlhIEQtQnVzLCBtYWNPUy9HTlVzdGVwIDEwLjUrLCBNUy1XaW5kb3dzCis3Ky4KKwor T24gR05VL0xpbnV4IHN5c3RlbXMsIHNoZWxsIGV4dGVuc2lvbnMgb3Igc2ltaWxhciBoZWxwZXJz IHN1Y2ggYXMKKyJkYXNoLXRvLWRvY2siIG1heSBiZSByZXF1aXJlZC4gIFNlZQorPGh0dHBzOi8v ZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzMwNy9kYXNoLXRvLWRvY2svPiBhbmQKKzxo dHRwczovL3dpa2kudWJ1bnR1LmNvbS9Vbml0eS9MYXVuY2hlckFQST4uCisKIAwKICogSW5jb21w YXRpYmxlIExpc3AgQ2hhbmdlcyBpbiBFbWFjcyAzMS4xCiAKQEAgLTM3NDgsNiArMzc2MywxMyBA QCBXaGVuIHRoZSB0aGVtZSBpcyBzZXQgb24gUEdUSywgQW5kcm9pZCwgb3IgTVMtV2luZG93cyBz eXN0ZW1zLAogdmFyaWFibGUgJ3Rvb2xraXQtdGhlbWUnIGFzIGVpdGhlciBzeW1ib2wgJ2Rhcmsn IG9yICdsaWdodCcsIGJ1dCBtYXkgYmUKIGV4dGVuZGVkIHRvIGVuY29tcGFzcyBvdGhlciB0b29s a2l0LXNwZWNpZmljIHN5bWJvbHMgaW4gdGhlIGZ1dHVyZS4KIAorKysrCisqKiBQcm9ncmVzcyBy ZXBvcnRlciBjYWxsYmFja3MuCisnbWFrZS1wcm9ncmVzcy1yZXBvcnRlcicgbm93IGFjY2VwdHMg b3B0aW9uYWwgYXJndW1lbnRzIFVQREFURS1DQUxMQkFDSywKK2NhbGxlZCBvbiBwcm9ncmVzcyBz dGVwcywgYW5kIERPTkUtQ0FMTEJBQ0ssIGNhbGxlZCB3aGVuIHRoZSBwcm9ncmVzcworcmVwb3J0 ZXIgaXMgZG9uZS4gIFNlZSB0aGUgJ21ha2UtcHJvZ3Jlc3MtcmVwb3J0ZXInIGRvY3N0cmluZyBm b3IgYSBmdWxsCitzcGVjaWZpY2F0aW9uIG9mIHRoZXNlIG5ldyBvcHRpb25hbCBhcmd1bWVudHMu CisKIAwKICogQ2hhbmdlcyBpbiBFbWFjcyAzMS4xIG9uIE5vbi1GcmVlIE9wZXJhdGluZyBTeXN0 ZW1zCiAKZGlmZiAtLWdpdCBhL2xpc3Avc3Vici5lbCBiL2xpc3Avc3Vici5lbAppbmRleCBmY2Y5 MzFiNjRlOS4uMzcyMDBmMGM5NjEgMTAwNjQ0Ci0tLSBhL2xpc3Avc3Vici5lbAorKysgYi9saXNw L3N1YnIuZWwKQEAgLTY5NzQsMTkgKzY5NzQsMzMgQEAgc2V0LXRyYW5zaWVudC1tYXAKIDs7IGRp Z2l0cyBvZiBwcmVjaXNpb24sIGl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBoZXJlLiAgT24gdGhl IG90aGVyCiA7OyBoYW5kLCBpdCBncmVhdGx5IHNpbXBsaWZpZXMgdGhlIGNvZGUuCiAKKyhkZWZ2 YXIgcHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlLWZ1bmN0aW9ucyAobGlzdCAjJ3Byb2dyZXNzLXJl cG9ydGVyLWVjaG8tYXJlYSkKKyAgIlNwZWNpYWwgaG9vayBydW4gb24gcHJvZ3Jlc3MtcmVwb3J0 ZXIgdXBkYXRlcy4KK0VhY2ggZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czoK K1JFUE9SVEVSIGlzIHRoZSByZXN1bHQgb2YgYSBjYWxsIHRvIGBtYWtlLXByb2dyZXNzLXJlcG9y dGVyJy4KK1NUQVRFIGNhbiBiZSBvbmUgb2Y6CistIEEgZmxvYXQgcmVwcmVzZW50aW5nIHRoZSBw ZXJjZW50YWdlIGNvbXBsZXRlIGluIHRoZSByYW5nZSAwLjAtMS4wCitmb3IgYSBudW1lcmljIHJl cG9ydGVyLgorLSBBbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgaW5kZXggd2hpY2ggY3ljbGVz IHRocm91Z2ggdGhlIHJhbmdlIDAtMworZm9yIGEgcHVsc2luZyByZXBvcnRlci4KKy0gVGhlIHN5 bWJvbCBgZG9uZScgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcHJvZ3Jlc3MgcmVwb3J0ZXIgaXMgY29t cGxldGUuIikKKwogKGRlZnN1YnN0IHByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZSAocmVwb3J0ZXIg Jm9wdGlvbmFsIHZhbHVlIHN1ZmZpeCkKLSAgIlJlcG9ydCBwcm9ncmVzcyBvZiBhbiBvcGVyYXRp b24gaW4gdGhlIGVjaG8gYXJlYS4KKyAgIlJlcG9ydCBwcm9ncmVzcyBvZiBhbiBvcGVyYXRpb24s IGJ5IGRlZmF1bHQsIGluIHRoZSBlY2hvIGFyZWEuCiBSRVBPUlRFUiBzaG91bGQgYmUgdGhlIHJl c3VsdCBvZiBhIGNhbGwgdG8gYG1ha2UtcHJvZ3Jlc3MtcmVwb3J0ZXInLgogCiBJZiBSRVBPUlRF UiBpcyBhIG51bWVyaWNhbCBwcm9ncmVzcyByZXBvcnRlci0tLWkuZS4gaWYgaXQgd2FzCi0gbWFk ZSB1c2luZyBub24tbmlsIE1JTi1WQUxVRSBhbmQgTUFYLVZBTFVFIGFyZ3VtZW50cyB0bwotIGBt YWtlLXByb2dyZXNzLXJlcG9ydGVyJy0tLXRoZW4gVkFMVUUgc2hvdWxkIGJlIGEgbnVtYmVyIGJl dHdlZW4KLSBNSU4tVkFMVUUgYW5kIE1BWC1WQUxVRS4KK21hZGUgdXNpbmcgbm9uLW5pbCBNSU4t VkFMVUUgYW5kIE1BWC1WQUxVRSBhcmd1bWVudHMgdG8KK2BtYWtlLXByb2dyZXNzLXJlcG9ydGVy Jy0tLXRoZW4gVkFMVUUgc2hvdWxkIGJlIGEgbnVtYmVyIGJldHdlZW4KK01JTi1WQUxVRSBhbmQg TUFYLVZBTFVFLgorCitPcHRpb25hbCBhcmd1bWVudCBTVUZGSVggaXMgYSBzdHJpbmcgdG8gYmUg ZGlzcGxheWVkIGFmdGVyIFJFUE9SVEVSJ3MKK21haW4gbWVzc2FnZSBhbmQgcHJvZ3Jlc3MgdGV4 dC4gIElmIFJFUE9SVEVSIGlzIGEgbm9uLW51bWVyaWNhbAorcmVwb3J0ZXIsIHRoZW4gVkFMVUUg c2hvdWxkIGJlIG5pbCwgb3IgYSBzdHJpbmcgdG8gdXNlIGluc3RlYWQgb2YKK1NVRkZJWC4gIFNV RkZJWCBpcyBjb25zaWRlcmVkIG9ic29sZXRlIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0 dXJlLgogCi1PcHRpb25hbCBhcmd1bWVudCBTVUZGSVggaXMgYSBzdHJpbmcgdG8gYmUgZGlzcGxh eWVkIGFmdGVyCi1SRVBPUlRFUidzIG1haW4gbWVzc2FnZSBhbmQgcHJvZ3Jlc3MgdGV4dC4gIElm IFJFUE9SVEVSIGlzIGEKLW5vbi1udW1lcmljYWwgcmVwb3J0ZXIsIHRoZW4gVkFMVUUgc2hvdWxk IGJlIG5pbCwgb3IgYSBzdHJpbmcgdG8KLXVzZSBpbnN0ZWFkIG9mIFNVRkZJWC4KK1NlZSBgcHJv Z3Jlc3MtcmVwb3J0ZXItdXBkYXRlLWZ1bmN0aW9ucycgZm9yIHRoZSBsaXN0IG9mIGZ1bmN0aW9u cworY2FsbGVkIG9uIGVhY2ggdXBkYXRlLgogCiBUaGlzIGZ1bmN0aW9uIGlzIHJlbGF0aXZlbHkg aW5leHBlbnNpdmUuICBJZiB0aGUgY2hhbmdlIHNpbmNlCiBsYXN0IHVwZGF0ZSBpcyB0b28gc21h bGwgb3IgaW5zdWZmaWNpZW50IHRpbWUgaGFzIHBhc3NlZCwgaXQgZG9lcwpAQCAtNzA0NSw2ICs3 MDU5LDEwIEBAIG1ha2UtcHJvZ3Jlc3MtcmVwb3J0ZXIKIAogKGRlZmFsaWFzICdwcm9ncmVzcy1y ZXBvcnRlci1tYWtlICMnbWFrZS1wcm9ncmVzcy1yZXBvcnRlcikKIAorKGRlZnVuIHByb2dyZXNz LXJlcG9ydGVyLXRleHQgKHJlcG9ydGVyKQorICAiUmV0dXJuIFJFUE9SVEVSJ3MgdGV4dC4iCisg IChhcmVmIChjZHIgcmVwb3J0ZXIpIDMpKQorCiAoZGVmdW4gcHJvZ3Jlc3MtcmVwb3J0ZXItZm9y Y2UtdXBkYXRlIChyZXBvcnRlciAmb3B0aW9uYWwgdmFsdWUgbmV3LW1lc3NhZ2Ugc3VmZml4KQog ICAiUmVwb3J0IHByb2dyZXNzIG9mIGFuIG9wZXJhdGlvbiBpbiB0aGUgZWNobyBhcmVhIHVuY29u ZGl0aW9uYWxseS4KIApAQCAtNzA2MCwxMiArNzA3OCwyOSBAQCBwcm9ncmVzcy1yZXBvcnRlci1m b3JjZS11cGRhdGUKIChkZWZ2YXIgcHJvZ3Jlc3MtcmVwb3J0ZXItLXB1bHNlLWNoYXJhY3RlcnMg WyItIiAiXFwiICJ8IiAiLyJdCiAgICJDaGFyYWN0ZXJzIHRvIHVzZSBmb3IgcHVsc2luZyBwcm9n cmVzcyByZXBvcnRlcnMuIikKIAorKGRlZnVuIHByb2dyZXNzLXJlcG9ydGVyLWVjaG8tYXJlYSAo cmVwb3J0ZXIgc3RhdGUpCisgICJQcm9ncmVzcyByZXBvcnRlciBlY2hvIGFyZWEgdXBkYXRlIGZ1 bmN0aW9uLgorUkVQT1JURVIgYW5kIFNUQVRFIGFyZSB0aGUgc2FtZSBhcyBpbgorYHByb2dyZXNz LXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMnLiIKKyAgKGxldCAoKHRleHQgKHByb2dyZXNzLXJl cG9ydGVyLXRleHQgcmVwb3J0ZXIpKSkKKyAgICAocGNhc2Ugc3RhdGUKKyAgICAgICgocHJlZCBm bG9hdHApCisgICAgICAgKGlmIChwbHVzcCBzdGF0ZSkKKyAgICAgICAgICAgKG1lc3NhZ2UgIiVz JWQlJSIgdGV4dCAoKiBzdGF0ZSAxMDAuMCkpCisgICAgICAgICAobWVzc2FnZSAiJXMiIHRleHQp KSkKKyAgICAgICgocHJlZCBpbnRlZ2VycCkKKyAgICAgICAobGV0ICgobWVzc2FnZS1sb2ctbWF4 IG5pbCkKKyAgICAgICAgICAgICAocHVsc2UtY2hhciAoYXJlZiBwcm9ncmVzcy1yZXBvcnRlci0t cHVsc2UtY2hhcmFjdGVycworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlKSkp CisgICAgICAgICAobWVzc2FnZSAiJXMgJXMiIHRleHQgcHVsc2UtY2hhcikpKQorICAgICAgKCdk b25lCisgICAgICAgKG1lc3NhZ2UgIiVzZG9uZSIgdGV4dCkpKSkpCisKIChkZWZ1biBwcm9ncmVz cy1yZXBvcnRlci1kby11cGRhdGUgKHJlcG9ydGVyIHZhbHVlICZvcHRpb25hbCBzdWZmaXgpCi0g IChsZXQqICgocGFyYW1ldGVycyAgIChjZHIgcmVwb3J0ZXIpKQotCSAodXBkYXRlLXRpbWUgIChh cmVmIHBhcmFtZXRlcnMgMCkpCi0JIChtaW4tdmFsdWUgICAgKGFyZWYgcGFyYW1ldGVycyAxKSkK LQkgKG1heC12YWx1ZSAgICAoYXJlZiBwYXJhbWV0ZXJzIDIpKQotCSAodGV4dCAgICAgICAgIChh cmVmIHBhcmFtZXRlcnMgMykpCisgIChsZXQqICgocGFyYW1ldGVycyAgICAgIChjZHIgcmVwb3J0 ZXIpKQorCSAodXBkYXRlLXRpbWUgICAgIChhcmVmIHBhcmFtZXRlcnMgMCkpCisJIChtaW4tdmFs dWUgICAgICAgKGFyZWYgcGFyYW1ldGVycyAxKSkKKwkgKG1heC12YWx1ZSAgICAgICAoYXJlZiBw YXJhbWV0ZXJzIDIpKQogCSAoZW5vdWdoLXRpbWUtcGFzc2VkCiAJICA7OyBTZWUgaWYgZW5vdWdo IHRpbWUgaGFzIHBhc3NlZCBzaW5jZSB0aGUgbGFzdCB1cGRhdGUuCiAJICAob3IgKG5vdCB1cGRh dGUtdGltZSkKQEAgLTcwOTgsOSArNzEzMyw5IEBAIHByb2dyZXNzLXJlcG9ydGVyLWRvLXVwZGF0 ZQogICAgICAgICAgICAgICAgKGlmIHN1ZmZpeAogICAgICAgICAgICAgICAgICAgIChhc2V0IHBh cmFtZXRlcnMgNiBzdWZmaXgpCiAgICAgICAgICAgICAgICAgIChzZXRxIHN1ZmZpeCAob3IgKGFy ZWYgcGFyYW1ldGVycyA2KSAiIikpKQotICAgICAgICAgICAgICAgKGlmIChwbHVzcCBwZXJjZW50 YWdlKQotICAgICAgICAgICAgICAgICAgIChtZXNzYWdlICIlcyVkJSUgJXMiIHRleHQgcGVyY2Vu dGFnZSBzdWZmaXgpCi0gICAgICAgICAgICAgICAgIChtZXNzYWdlICIlcyAlcyIgdGV4dCBzdWZm aXgpKSkpKQorICAgICAgICAgICAgICAgKHJ1bi1ob29rLXdpdGgtYXJncyAncHJvZ3Jlc3MtcmVw b3J0ZXItdXBkYXRlLWZ1bmN0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXBvcnRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLyBwZXJjZW50 YWdlIDEwMC4wKSkpKSkKIAkgIDs7IFB1bHNpbmcgaW5kaWNhdG9yCiAJICAoZW5vdWdoLXRpbWUt cGFzc2VkCiAgICAgICAgICAgICh3aGVuIChhbmQgdmFsdWUgKG5vdCBzdWZmaXgpKQpAQCAtNzEw OCwxNiArNzE0MywxOCBAQCBwcm9ncmVzcy1yZXBvcnRlci1kby11cGRhdGUKICAgICAgICAgICAg KGlmIHN1ZmZpeAogICAgICAgICAgICAgICAgKGFzZXQgcGFyYW1ldGVycyA2IHN1ZmZpeCkKICAg ICAgICAgICAgICAoc2V0cSBzdWZmaXggKG9yIChhcmVmIHBhcmFtZXRlcnMgNikgIiIpKSkKLSAg ICAgICAgICAgKGxldCogKChpbmRleCAobW9kICgxKyAoY2FyIHJlcG9ydGVyKSkgNCkpCi0gICAg ICAgICAgICAgICAgICAobWVzc2FnZS1sb2ctbWF4IG5pbCkKLSAgICAgICAgICAgICAgICAgIChw dWxzZS1jaGFyIChhcmVmIHByb2dyZXNzLXJlcG9ydGVyLS1wdWxzZS1jaGFyYWN0ZXJzCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCkpKQorICAgICAgICAgICAobGV0 ICgoaW5kZXggKG1vZCAoMSsgKGNhciByZXBvcnRlcikpIDQpKSkKIAkgICAgIChzZXRjYXIgcmVw b3J0ZXIgaW5kZXgpCi0gICAgICAgICAgICAgKG1lc3NhZ2UgIiVzICVzICVzIiB0ZXh0IHB1bHNl LWNoYXIgc3VmZml4KSkpKSkpCisgICAgICAgICAgICAgKHJ1bi1ob29rLXdpdGgtYXJncyAncHJv Z3Jlc3MtcmVwb3J0ZXItdXBkYXRlLWZ1bmN0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVwb3J0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4 KSkpKSkpCiAKIChkZWZ1biBwcm9ncmVzcy1yZXBvcnRlci1kb25lIChyZXBvcnRlcikKLSAgIlBy aW50IHJlcG9ydGVyJ3MgbWVzc2FnZSBmb2xsb3dlZCBieSB3b3JkIFwiZG9uZVwiIGluIGVjaG8g YXJlYS4iCi0gIChtZXNzYWdlICIlc2RvbmUiIChhcmVmIChjZHIgcmVwb3J0ZXIpIDMpKSkKKyAg IlByaW50IHJlcG9ydGVyJ3MgbWVzc2FnZSBmb2xsb3dlZCBieSB3b3JkIFwiZG9uZVwiIGluIGVj aG8gYXJlYS4KK0NhbGwgdGhlIGZ1bmN0aW9ucyBvbiBgcHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRl LWZ1bmN0aW9uc2AuIgorICAocnVuLWhvb2std2l0aC1hcmdzICdwcm9ncmVzcy1yZXBvcnRlci11 cGRhdGUtZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZXIKKyAgICAgICAg ICAgICAgICAgICAgICAnZG9uZSkpCiAKIChkZWZtYWNybyBkb3RpbWVzLXdpdGgtcHJvZ3Jlc3Mt cmVwb3J0ZXIgKHNwZWMgcmVwb3J0ZXItb3ItbWVzc2FnZSAmcmVzdCBib2R5KQogICAiTG9vcCBh IGNlcnRhaW4gbnVtYmVyIG9mIHRpbWVzIGFuZCByZXBvcnQgcHJvZ3Jlc3MgaW4gdGhlIGVjaG8g YXJlYS4KZGlmZiAtLWdpdCBhL2xpc3Avc3lzdGVtLXRhc2tiYXIuZWwgYi9saXNwL3N5c3RlbS10 YXNrYmFyLmVsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43ODcyZDUy NzU0OQotLS0gL2Rldi9udWxsCisrKyBiL2xpc3Avc3lzdGVtLXRhc2tiYXIuZWwKQEAgLTAsMCAr MSw1MzQgQEAKKzs7OyBzeXN0ZW0tdGFza2Jhci5lbCAtLS0gU3lzdGVtIEdVSSB0YXNrYmFyL2Rv Y2svbGF1bmNoZXIgc3RhdHVzIGRpc3BsYXkgLSotIGxleGljYWwtYmluZGluZzogdCAtKi0KKwor OzsgQ29weXJpZ2h0IChDKSAyMDI1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCis7 OyBBdXRob3I6IFN0ZXBoYW5lIE1hcmtzCis7OyBNYWludGFpbmVyOiBlbWFjcy1kZXZlbEBnbnUu b3JnCis7OyBLZXl3b3JkczogY29udmVuaWVuY2UKKzs7IFBhY2thZ2UtUmVxdWlyZXM6ICgoZW1h Y3MgIjMxLjEiKSkKKworOzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEVtYWNzLgorCis7OyBH TlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCis7OyAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorCis7OyBHTlUgRW1hY3MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKzs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7OyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCis7OyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCis7OyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor OzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgorCis7OzsgQ29tbWVudGFyeToKKworOzsgVXNlIHRoaXMgcGFja2FnZSB0 byBkaXNwbGF5IGEgdGFza2JhciBpY29uICJiYWRnZSIgb3ZlcmxheSwgYQorOzsgcHJvZ3Jlc3Mg YmFyIHJlcG9ydCBvdmVybGF5LCBvciBhbGVydCB0aGUgdXNlciB0aGF0IGFuIEVtYWNzIHNlc3Np b24KKzs7IG5lZWRzIGF0dGVudGlvbiwgb2Z0ZW4gYnkgZmxhc2hpbmcgb3IgYm91bmNpbmcgdGhl IEVtYWNzIGFwcGxpY2F0aW9uCis7OyBpY29uLgorOzsKKzs7IE5vdGU6IFRoZSB0ZXJtIHRhc2ti YXIgaXMgaW5jbHVzaXZlIG9mIGRvY2sgb3IgbGF1bmNoZXIgb3Igc29tZSBvdGhlcgorOzsgdGVy bWlub2xvZ3kgYXMgbWF5IGJlIHVzZWQgZm9yIHlvdXIgc3lzdGVtLgorOzsKKzs7IE9uIEdOVS9M aW51eCwgdGhlIHZpc2libGUgZWZmZWN0cyB3aWxsIGFwcGVhciBvbiB0aGUgZGVzdGluYXRpb25z Cis7OyBkZXRlcm1pbmVkIGJ5IHlvdXIgc2hlbGwgZXh0ZW5zaW9uLCBtb3N0IG9mdGVuIHRoZSBh cHBsaWNhdGlvbgorOzsgbGF1bmNoZXIgb3IgZG9jayBwYW5lbCwgb3IgdGhlIHRvcCBwYW5lbC4g IEVmZmVjdHMgYXJlIGdsb2JhbCBmb3IgYW4KKzs7IEVtYWNzIGluc3RhbmNlLgorOzsKKzs7IE9u IG1hY09TL0dOVXN0ZXAsIHRoZSBlZmZlY3RzIHdpbGwgYXBwZWFyIG9uIHRoZSBEb2NrIGFuZCBp biB0aGUgQXBwCis7OyBTd2l0Y2hlci4gIEVmZmVjdHMgYXJlIGdsb2JhbCBmb3IgYW4gRW1hY3Mg aW5zdGFuY2UuCis7OworOzsgT24gTVMtV2luZG93cywgdGhlIGVmZmVjdHMgYXBwZWFyIG9uIHRo ZSB0YXNrYmFyLiAgRWZmZWN0cyBhcmUKKzs7IGFzc29jaWF0ZWQgd2l0aCB0aGUgZnJhbWUgZnJv bSB3aGljaCB0aGV5IGFyZSBpbml0aWF0ZWQuCisKKzs7OyBVc2FnZToKKworOzsgVGhlIGdsb2Jh bCBtaW5vciBtb2RlIGBzeXN0ZW0tdGFza2Jhci1tb2RlJyBpbml0aWFsaXplcyB0aGUgR1VJCis7 OyBwbGF0Zm9ybSBiYWNrLWVuZCBhbmQgbXVzdCBiZSBlbmFibGVkIGJlZm9yZSB1c2luZyB0aGUg ZnVuY3Rpb25zCis7OyBiZWxvdy4KKzs7Cis7OyBgc3lzdGVtLXRhc2tiYXItYmFkZ2UnIG92ZXJs YXlzIGEgY291bnQsIHdoaWNoIGlzIGFuIGludGVnZXIsIG9uIHRoZQorOzsgRW1hY3MgdGFza2Jh ciBpY29uLiAgWW91IGNhbiB1c2UgdGhpcywgZm9yIGV4YW1wbGUsIHRvIGluZGljYXRlIHRoZQor OzsgbnVtYmVyIG9mIHVucmVhZCBlbWFpbCBtZXNzYWdlcy4gIE9uIEdOVS9MaW51eCwgdGhlIGNv dW50IG11c3QgYmUgYW4KKzs7IGludGVnZXIgb3IgbmlsLiAgT24gbWFjT1MvR05Vc3RlcCwgdGhl IGNvdW50IG1heSBiZSBhbiBpbnRlZ2VyIG9yIGEKKzs7IHN0cmluZywgd2hpY2ggdGhlIG9wZXJh dGluZyBzeXN0ZW0gd2lsbCBhYmJyZXZpYXRlIGlmIHRvbyBsb25nLiAgT24KKzs7IE1TLVdpbmRv d3MsIHRoZSB0YXNrYmFyIGJhZGdlIHdpbGwgYmUgYWJicmV2aWF0ZWQgdG8gdGhyZWUKKzs7IGNo YXJhY3RlcnM7IGlmIHRoZSBjb3VudCBpcyBhbiBpbnRlZ2VyIG91dHNpZGUgdGhlIHJhbmdlIC05 OSB0byA5OSwKKzs7IGl0IGlzIHNob3duIGFzICItOTkiIG9yICI5OSsiLCBpZiBjb3VudCBpcyBh IHN0cmluZyBsb25nZXIgdGhhbiAzCis7OyBjaGFyYWN0ZXJzIGl0IGlzIHRydW5jYXRlZC4KKzs7 Cis7OyBgc3lzdGVtLXRhc2tiYXItYXR0ZW50aW9uJyBmbGFzaGVzIG9yIGJvdW5jZXMgdGhlIEVt YWNzIHRhc2tiYXIgaWNvbgorOzsgdG8gaW5kaWNhdGUgdGhhdCB5b3VyIEVtYWNzIHNlc3Npb24g d2FudHMgYXR0ZW50aW9uLiAgSXRzIGJlaGF2aW9ycworOzsgYXJlIGJhY2stZW5kIHNwZWNpZmlj LgorOzsKKzs7IGBzeXN0ZW0tdGFza2Jhci1wcm9ncmVzcycgb3ZlcmxheXMgYSBncmFwaGljYWwg cHJvZ3Jlc3MgYmFyIG9uIHRoZQorOzsgRW1hY3MgdGFza2JhciBpY29uIHRvIGlsbHVzdHJhdGUg cHJvZ3Jlc3Mgb2YgYSBwb3RlbnRpYWxseQorOzsgbG9uZy1ydW5uaW5nIG9wZXJhdGlvbi4KKzs7 Cis7OyBXaGVuIGBzeXN0ZW0tdGFza2Jhci1tb2RlJyBpcyBlbmFibGVkLCBFbWFjcyBwcm9ncmVz cyByZXBvcnRlcnMgd2lsbAorOzsgYmUgZW5oYW5jZWQgdG8gZGlzcGxheSB0YXNrYmFyIEdVSSBw cm9ncmVzcyBiYXJzLiAgQ3VzdG9taXplCis7OyBgc3lzdGVtLXRhc2tiYXItdXNlLXByb2dyZXNz LXJlcG9ydGVyJyBpZiB5b3Ugd2FudCB0byBkaXNhYmxlIHRoaXMKKzs7IGJlZm9yZSBlbmFibGlu ZyBzeXN0ZW0tdGFza2Jhci1tb2RlLgorOzsKKzs7IE9uIEdOVS9MaW51eCBzeXN0ZW1zLCB0YXNr YmFyIGVmZmVjdHMgd2lsbCBhcHBlYXIgb24gdGhlIEdVSQorOzsgd2luZG93LXN5c3RlbSBkZXN0 aW5hdGlvbnMgZGV0ZXJtaW5lZCBieSB5b3VyIHNoZWxsIGV4dGVuc2lvbiwgbW9zdAorOzsgb2Z0 ZW4gdGhlIGFwcGxpY2F0aW9uIGxhdW5jaGVyIG9yIGRvY2sgcGFuZWwsIG9yIHRoZSB0b3AgcGFu ZWwuCis7OyBUYXNrYmFyIGVmZmVjdHMgYXJlIGdsb2JhbCBmb3IgYW4gRW1hY3MgaW5zdGFuY2Uu ICBUaGUgR05VL0xpbnV4Cis7OyBpbXBsZW1lbnRhdGlvbiBzZW5kcyB0YXNrYmFyIG1lc3NhZ2Vz IHRvIHRoZSBzeXN0ZW0gR1VJIHVzaW5nIEQtQnVzLgorOzsgWW91IG1heSBuZWVkIHRvIGluc3Rh bGwgb3IgY29uZmlndXJlIHNoZWxsIGV4dGVuc2lvbnMgc3VjaCBhcworOzsgaHR0cHM6Ly9leHRl bnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vMzA3L2Rhc2gtdG8tZG9jay8gdGhhdAorOzsgaW1w bGVtZW50IFVidW50dSdzIFVuaXR5IEQtQnVzIGxhdW5jaGVyIHNwZWMgd2hpY2ggeW91IGNhbiBy ZWFkIG1vcmUKKzs7IGFib3V0IGhlcmUgaHR0cHM6Ly93aWtpLnVidW50dS5jb20vVW5pdHkvTGF1 bmNoZXJBUEkuCis7OworOzsgWW91ciBMaW51eCBFbWFjcyBpbnN0YW5jZSBzaG91bGQgYmUgbGF1 bmNoZWQgdmlhIGFuIGFwcHJvcHJpYXRlIHNoZWxsCis7OyAiZGVza3RvcCIgZmlsZSBzdWNoIGFz IHRob3NlIGRpc3RyaWJ1dGVkIHdpdGggRW1hY3M7IGUuZy4sCis7OyAiZXRjL2VtYWNzY2xpZW50 LmRlc2t0b3AiIGFzIGRvY3VtZW50ZWQgaGVyZQorOzsgaHR0cHM6Ly9zcGVjaWZpY2F0aW9ucy5m cmVlZGVza3RvcC5vcmcvZGVza3RvcC1lbnRyeS9sYXRlc3QvIGFuZAorOzsgd2hpY2ggeW91ciBH VUkgc3lzdGVtIHNob3VsZCBpbXBsZW1lbnQuCis7OworOzsgT24gbWFjT1MvR05Vc3RlcCAxMC41 KywgdGFza2JhciBlZmZlY3RzIGFwcGVhciBvbiB0aGUgRG9jayBhbmQgaW4gdGhlCis7OyBBcHAg U3dpdGNoZXIuICBFZmZlY3RzIGFyZSBnbG9iYWwgZm9yIGFuIEVtYWNzIGluc3RhbmNlLgorOzsg bWFjT1MvR05Vc3RlcCBpcyBpbXBsZW1lbnRlZCB2aWEgaXRzIG5hdGl2ZSBBUEkgYW5kIG5lZWRz IG5vIHNwZWNpYWwKKzs7IGNvbmZpZ3VyYXRpb24uCis7OworOzsgT24gTVMtV2luZG93cyA3Kywg dGFza2JhciBlZmZlY3RzIGFwcGVhciBvbiB0aGUgV2luZG93cyB0YXNrYmFyLgorOzsgRWZmZWN0 cyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBmcmFtZSBmcm9tIHdoaWNoIHRoZXkgYXJlIGluaXRp YXRlZC4KKzs7IE1TLVdpbmRvd3MgaXMgaW1wbGVtZW50ZWQgdmlhIGl0cyBuYXRpdmUgQVBJIGFu ZCBuZWVkcyBubyBzcGVjaWFsCis7OyBjb25maWd1cmF0aW9uLgorOzsKKzs7IFRvIGFkZCBzdXBw b3J0IGZvciBhZGRpdGlvbmFsIHN5c3RlbXMsIHByb3ZpZGUgYSBiYWNrIGVuZCB0aGF0Cis7OyBp bXBsZW1lbnRzIHRoZSBjbC1nZW5lcmljIGZ1bmN0aW9ucyBiZWxvdy4KKworOzs7IENvZGU6CisK KyhyZXF1aXJlICdkYnVzKQorCisoZGVmZ3JvdXAgc3lzdGVtLXRhc2tiYXIgbmlsCisgICJTeXN0 ZW0gR1VJIHRhc2tiYXIgaWNvbiBiYWRnZSwgcHJvZ3Jlc3MgcmVwb3J0LCBhbGVydGluZy4iCisg IDpncm91cCAnY29udmVuaWVuY2UKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmY3VzdG9tIHN5 c3RlbS10YXNrYmFyLXVzZS1wcm9ncmVzcy1yZXBvcnRlciB0CisgICJTdXBwbGVtZW50IHByb2dy ZXNzLXJlcG9ydGVycyB3aXRoIEdVSSB0YXNrYmFyIGljb24gcHJvZ3Jlc3MgYmFycy4KK1NldCB0 aGlzIGJlZm9yZSBlbmFibGluZyBgc3lzdGVtLXRhc2tiYXItbW9kZScuIgorICA6dHlwZSAnYm9v bGVhbgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZjdXN0b20gc3lzdGVtLXRhc2tiYXItY2xl YXItYXR0ZW50aW9uLW9uLWZyYW1lLWZvY3VzIHQKKyAgIkNsZWFyIHRoZSBpY29uIGF0dGVudGlv biBpbmRpY2F0b3Igd2hlbiBhbnkgR1VJIGZyYW1lIGlzIGZvY3VzZWQuCitCYWNrIGVuZHMgdGhh dCBhdXRvbWF0aWNhbGx5IGNsZWFyIHRoZSBhdHRlbnRpb24gaW5kaWNhdG9yLCBzdWNoIGFzCitt YWNPUy9HTlVzdGVwIGFuZCBNUy1XaW5kb3dzLCBpZ25vcmUgdGhpcyBvcHRpb24uIgorICA6dHlw ZSAnYm9vbGVhbgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZjdXN0b20gc3lzdGVtLXRhc2ti YXItZGJ1cy1kZXNrdG9wLWZpbGUtbmFtZSAiZW1hY3NjbGllbnQiCisgICJELUJ1cyBkZXNrdG9w IGZpbGUgYmFzZSBuYW1lIGZvciB0aGUgc3lzdGVtIHRhc2tiYXIgZGVzdGluYXRpb24uCitUaGlz IHNob3VsZCBiZSB0aGUgYmFzZSBuYW1lIG9mIHRoZSBkZXNrdG9wIGZpbGUgdXNlZCB0byBsYXVu Y2ggYW4gRW1hY3MKK2luc3RhbmNlLiAgRm9yIGV4YW1wbGUsIGlmIHlvdXIgbGF1bmNoZXIgZGVz a3RvcCBmaWxlIGlzIGNhbGxlZAorXCJlbWFjcy5kZXNrdG9wXCIsIHRoaXMgb3B0aW9uIHNob3Vs ZCBiZSBcImVtYWNzXCIuIgorICA6dHlwZSAnc3RyaW5nCisgIDp2ZXJzaW9uICIzMS4xIikKKwor KGRlZmN1c3RvbSBzeXN0ZW0tdGFza2Jhci1kYnVzLXRpbWVvdXQgbmlsCisgICJOdW1iZXIgb2Yg bWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIEQtQnVzIHJlc3BvbnNlcy4KK0lmIG5pbCwgdXNlIHRo ZSBELUJ1cyBkZWZhdWx0IHRpbWVvdXQgd2hpY2ggaXMgMjUsMDAwIChpLmUuLCAyNXMpLgorCitJ ZiB5b3VyIEQtQnVzIGRlc2t0b3AgZXh0ZW5zaW9uIG5lZWRzIGV4dHJhIHRpbWUgdG8gcmVzcG9u ZCwgaW4gd2hpY2gKK2Nhc2UgYHN5c3RlbS10YXNrYmFyLW1vZGUnIG1pZ2h0IG5vdCBpbml0aWFs aXplIG9yIHJlbGF0ZWQgZnVuY3Rpb25zCittaWdodCBub3QgdGFrZSB2aXNpYmxlIGVmZmVjdCwg YmluZCB0aGlzIHRvIGEgdmFsdWUgaGlnaGVyIHRoYW4gMjUsMDAwCit0byBmaW5kIHdoYXQgd29y a3MgZm9yIHlvdXIgc3lzdGVtLiIKKyAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIkRlZmF1 bHQiIG5pbCkgbmF0bnVtKQorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZ1biBzeXN0ZW0tdGFz a2Jhci1wcm9ncmVzcy1yZXBvcnRlci1pbnN0YWxsICgpCisgICJJbnN0YWxsIHN5c3RlbS10YXNr YmFyIHByb2dyZXNzIHJlcG9ydGVyLiIKKyAgKGFkZC1ob29rICdwcm9ncmVzcy1yZXBvcnRlci11 cGRhdGUtZnVuY3Rpb25zCisgICAgICAgICAgICAjJ3N5c3RlbS10YXNrYmFyLS1wcm9ncmVzcy1y ZXBvcnRlci11cGRhdGUpKQorCisoZGVmdW4gc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MtcmVwb3J0 ZXItcmVtb3ZlICgpCisgICJSZW1vdmUgc3lzdGVtLXRhc2tiYXIgcHJvZ3Jlc3MgcmVwb3J0ZXIu IgorICAocmVtb3ZlLWhvb2sgJ3Byb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMKKyAg ICAgICAgICAgICAgICMnc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZSkp CisKKyhkZWZ2YXIgc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIG5pbAorICAiR2VuZXJpYyB0YXNr YmFyIG1ldGhvZCBzeXN0ZW0gZGlzcGF0Y2hlci4iKQorCis7OzsjIyNhdXRvbG9hZAorKGRlZmlu ZS1taW5vci1tb2RlIHN5c3RlbS10YXNrYmFyLW1vZGUKKyAgIlN5c3RlbSBHVUkgdGFza2JhciBp Y29uIGJhZGdlLCBwcm9ncmVzcyByZXBvcnQsIGFsZXJ0aW5nLiIKKyAgOmdsb2JhbCB0CisgICh3 aGVuIG5vbmludGVyYWN0aXZlCisgICAgKHdhcm4gIkJhdGNoIG1vZGUgZG9lcyBub3Qgc3VwcG9y dCBgc3lzdGVtLXRhc2tiYXInIikpCisgIChjb25kIChzeXN0ZW0tdGFza2Jhci1tb2RlCisgICAg ICAgICAoaWYgKHN5c3RlbS10YXNrYmFyLS1zZXQtYmFjay1lbmQpCisgICAgICAgICAgICAgKHN5 c3RlbS10YXNrYmFyLS1lbmFibGUpCisgICAgICAgICAgICh3YXJuICJTeXN0ZW0gZG9lcyBub3Qg c3VwcG9ydCBgc3lzdGVtLXRhc2tiYXInIikpCisgICAgICAgICAod2hlbiBzeXN0ZW0tdGFza2Jh ci11c2UtcHJvZ3Jlc3MtcmVwb3J0ZXIKKyAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLXByb2dy ZXNzLXJlcG9ydGVyLWluc3RhbGwpKSkKKyAgICAgICAgKHQKKyAgICAgICAgIChzeXN0ZW0tdGFz a2Jhci1wcm9ncmVzcy1yZXBvcnRlci1yZW1vdmUpCisgICAgICAgICAod2hlbiBzeXN0ZW0tdGFz a2Jhci0tYmFjay1lbmQKKyAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWRnZSBuaWwpCisg ICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYXR0ZW50aW9uIG5pbCkKKyAgICAgICAgICAgKHN5 c3RlbS10YXNrYmFyLS1wcm9ncmVzcyBuaWwpCisgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0t ZGlzYWJsZSkKKyAgICAgICAgICAgKHNldHEgc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIG5pbCkp KSkpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci1iYWRnZSAoJm9wdGlvbmFsIGNvdW50KQorICAi RGlzcGxheSBDT1VOVCBhcyBhbiBvdmVybGF5IG9uIHRoZSBzeXN0ZW0gdGFza2JhciBFbWFjcyBp Y29uLgorSWYgQ09VTlQgaXMgYW4gaW50ZWdlciwgZGlzcGxheSB0aGF0LgorSWYgQ09VTlQgaXMg YSBzdHJpbmcgb24gYmFjayBlbmRzIHRoYXQgc3VwcG9ydCBzdHJpbmdzLCBkaXNwbGF5IHRoYXQu CitUaGUgc3RyaW5nIHNob3VsZCBiZSBzaG9ydC4KK09uIGJhY2sgZW5kcyB3aGljaCBkbyBub3Qg c3VwcG9ydCBzdHJpbmdzLCBjb252ZXJ0IENPVU5UIHRvIGFuIGludGVnZXIKK3VzaW5nIGBzdHJp bmctdG8tbnVtYmVyJyBhbmQgdGVzdGluZyBgaW50ZWdlcnAnLCBvciBuaWwgaWYgdGhhdCBmYWls cy4KK0lmIENPVU5UIGlzIG5pbCBvciBhbiBlbXB0eSBzdHJpbmcsIHJlbW92ZSB0aGUgY291bnRl ci4iCisgICh3aGVuIHN5c3RlbS10YXNrYmFyLW1vZGUKKyAgICAoc3lzdGVtLXRhc2tiYXItLWJh ZGdlIGNvdW50KSkpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gKCZvcHRpb25h bCB1cmdlbmN5IHRpbWVvdXQpCisgICJGbGFzaCB0aGUgc3lzdGVtIHRhc2tiYXIgaWNvbiBhbmQv b3IgZnJhbWUgdG8gYWxlcnQgdGhlIHVzZXIuCitVUkdFTkNZIGNhbiBiZSBvbmUgb2YgdGhlIHN5 bWJvbHMgYGluZm9ybWF0aW9uYWwnLCBvciBgY3JpdGljYWwnLgorSWYgVVJHRU5DWSBpcyBuaWws IGNsZWFyIHRoZSBhdHRlbnRpb24gaW5kaWNhdG9yLgorCitUaGUgYXR0ZW50aW9uIGluZGljYXRv ciBpcyBjbGVhcmVkIGJ5IHRoZSBlYXJsaWVzdCBvZiBicmluZ2luZyB0aGUgRW1hY3MKK0dVSSBp bnRvIGZvY3VzLCBvciBhZnRlciBUSU1FT1VUIHNlY29uZHMuICBJZiBUSU1FT1VUIGlzIG5pbCwg dGhlIHN5c3RlbQorR1VJIGJlaGF2aW9yIGhhcyBwcmlvcml0eS4KKworT24gc29tZSBiYWNrIGVu ZHMsIGBjcml0aWNhbCcgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBgaW5mb3JtYXRpb25hbCcuIgor ICAod2hlbiBzeXN0ZW0tdGFza2Jhci1tb2RlCisgICAgKHN5c3RlbS10YXNrYmFyLS1hdHRlbnRp b24gdXJnZW5jeSB0aW1lb3V0KSkpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci1wcm9ncmVzcyAo Jm9wdGlvbmFsIHByb2dyZXNzKQorICAiRGlzcGxheSBhIHByb2dyZXNzIGluZGljYXRvciBvdmVy bGF5IG9uIHRoZSBzeXN0ZW0gdGFza2JhciBpY29uLgorUFJPR1JFU1MgaXMgYSBmbG9hdCBpbiB0 aGUgcmFuZ2UgMC4wIHRvIDEuMC4KK0lmIFBST0dSRVNTIGlzIG5pbCwgcmVtb3ZlIHRoZSBwcm9n cmVzcyBpbmRpY2F0b3IuIgorICAod2hlbiBzeXN0ZW0tdGFza2Jhci1tb2RlCisgICAgKHN5c3Rl bS10YXNrYmFyLS1wcm9ncmVzcyBwcm9ncmVzcykpKQorCisMCis7OyBJbnRlcm5hbCBpbXBsZW1l bnRhdGlvbi4KKworKGRlZnZhciB3MzItaW5pdGlhbGl6ZWQpCisKKyhkZWZ1biBzeXN0ZW0tdGFz a2Jhci0tc2V0LWJhY2stZW5kICgpCisgICJEZXRlcm1pbmUgdGFza2JhciBob3N0IHN5c3RlbSB0 eXBlLiIKKyAgOzsgT3JkZXIgbWF0dGVycyB0byBhY2NvbW1vZGF0ZSB0aGUgY2FzZXMgd2hlcmUg YW4gTlMgb3IgTVMtV2luZG93cworICA7OyBidWlsZCBoYXZlIHRoZSBkYnVzIGZlYXR1cmUuCisg IChzZXRxIHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZAorICAgICAgICAoY29uZCAoKGJvdW5kcCAn bnMtdmVyc2lvbi1zdHJpbmcpICducykKKyAgICAgICAgICAgICAgKHczMi1pbml0aWFsaXplZCAn dzMyKQorICAgICAgICAgICAgICAoKGFuZCAoZmVhdHVyZXAgJ2RidXNiaW5kKQorICAgICAgICAg ICAgICAgICAgICAobWVtYmVyICJvcmcuZnJlZWRlc2t0b3AubG9naW4xIgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChkYnVzLWxpc3QtYWN0aXZhdGFibGUtbmFtZXMgOnN5c3RlbSkpKQor ICAgICAgICAgICAgICAgJ2RidXMpCisgICAgICAgICAgICAgICh0IG5pbCkpKSkKKworKGNsLWRl ZmdlbmVyaWMgc3lzdGVtLXRhc2tiYXItLWVuYWJsZSAoKQorICAiRW5hYmxlIHRoZSBzeXN0ZW0t dGFza2JhciBiYWNrIGVuZC4iKQorCisoY2wtZGVmZ2VuZXJpYyBzeXN0ZW0tdGFza2Jhci0tZGlz YWJsZSAoKQorICAiRGlzYWJsZSB0aGUgc3lzdGVtLXRhc2tiYXIgYmFjayBlbmQuIikKKworKGNs LWRlZmdlbmVyaWMgc3lzdGVtLXRhc2tiYXItLWJhZGdlICgmb3B0aW9uYWwgY291bnQpCisgICJE aXNwbGF5IENPVU5UIGFzIGFuIG92ZXJsYXkgb24gdGhlIHN5c3RlbSB0YXNrYmFyIEVtYWNzIGlj b24uCitJZiBDT1VOVCBpcyBhbiBpbnRlZ2VyLCBkaXNwbGF5IHRoYXQuCitJZiBDT1VOVCBpcyBh IHN0cmluZyBvbiBiYWNrIGVuZHMgdGhhdCBzdXBwb3J0IHN0cmluZ3MsIGRpc3BsYXkgdGhhdC4K K1RoZSBzdHJpbmcgc2hvdWxkIGJlIHNob3J0LgorT24gYmFjayBlbmRzIHdoaWNoIGRvIG5vdCBz dXBwb3J0IHN0cmluZ3MsIGNvbnZlcnQgQ09VTlQgdG8gYW4gaW50ZWdlcgordXNpbmcgYHN0cmlu Zy10by1udW1iZXInIGFuZCB0ZXN0aW5nIGBpbnRlZ2VycCcsIG9yIG5pbCBpZiB0aGF0IGZhaWxz LgorSWYgQ09VTlQgaXMgbmlsIG9yIGFuIGVtcHR5IHN0cmluZywgcmVtb3ZlIHRoZSBjb3VudGVy LiIpCisKKyhjbC1kZWZnZW5lcmljIHN5c3RlbS10YXNrYmFyLS1hdHRlbnRpb24gKCZvcHRpb25h bCB1cmdlbmN5IHRpbWVvdXQpCisgICJGbGFzaCB0aGUgc3lzdGVtIHRhc2tiYXIgaWNvbiBhbmQv b3IgZnJhbWUgdG8gYWxlcnQgdGhlIHVzZXIuCitVUkdFTkNZIGNhbiBiZSBvbmUgb2YgdGhlIHN5 bWJvbHMgYGluZm9ybWF0aW9uYWwnLCBvciBgY3JpdGljYWwnLgorSWYgVVJHRU5DWSBpcyBuaWws IGNsZWFyIHRoZSBhdHRlbnRpb24gaW5kaWNhdG9yLgorCitUaGUgYXR0ZW50aW9uIGluZGljYXRv ciBpcyBjbGVhcmVkIGJ5IHRoZSBlYXJsaWVzdCBvZiBicmluZ2luZyB0aGUgRW1hY3MKK0dVSSBp bnRvIGZvY3VzLCBvciBhZnRlciBUSU1FT1VUIHNlY29uZHMuICBJZiBUSU1FT1VUIGlzIG5pbCwg dGhlIHN5c3RlbQorR1VJIGJlaGF2aW9yIGhhcyBwcmlvcml0eS4KKworT24gc29tZSBiYWNrIGVu ZHMsIGBjcml0aWNhbCcgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBgaW5mb3JtYXRpb25hbCcuCisK K09uIHNvbWUgYmFjayBlbmRzLCBhdHRlbnRpb24gd2lsbCBiZSBkaXNwbGF5ZWQgb25seSBpZiBF bWFjcyBpcyBub3QgdGhlCitjdXJyZW50bHkgZm9jdXNlZCBhcHBsaWNhdGlvbi4iKQorCisoY2wt ZGVmZ2VuZXJpYyBzeXN0ZW0tdGFza2Jhci0tcHJvZ3Jlc3MgKCZvcHRpb25hbCBwcm9ncmVzcykK KyAgIkRpc3BsYXkgYSBwcm9ncmVzcyBpbmRpY2F0b3Igb3ZlcmxheSBvbiB0aGUgc3lzdGVtIHRh c2tiYXIgaWNvbi4KK1BST0dSRVNTIGlzIGEgZmxvYXQgaW4gdGhlIHJhbmdlIDAuMCB0byAxLjAu CitJZiBQUk9HUkVTUyBpcyBuaWwsIHJlbW92ZSB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yLiIpCisK KyhkZWZ1biBzeXN0ZW0tdGFza2Jhci0tdmFsaWRhdGUtcHJvZ3Jlc3MgKHByb2dyZXNzKQorICAi UmV0dXJuIFBST0dSRVNTIGFzIGEgZmxvYXQgaW4gdGhlIHJhbmdlIDAuMCB0byAxLjAsIG9yIG5p bC4iCisgICh3aGVuIChuYXRudW1wIHByb2dyZXNzKQorICAgIChzZXRxIHByb2dyZXNzIChmbG9h dCBwcm9ncmVzcykpKQorICAod2hlbiAoYW5kIHByb2dyZXNzICg+PSBwcm9ncmVzcyAwLjApICg8 PSBwcm9ncmVzcyAxLjApKQorICAgIHByb2dyZXNzKSkKKworDAorOzsgYHByb2dyZXNzLXJlcG9y dGVyJyBzdXBwb3J0LgorCisoZGVmdW4gc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzLXJlcG9ydGVy LXVwZGF0ZSAoX3JlcG9ydGVyIHN0YXRlKQorICAiUHJvZ3Jlc3MgcmVwb3J0ZXIgc3lzdGVtLXRh c2tiYXIgdXBkYXRlIGZ1bmN0aW9uLgorUkVQT1JURVIgYW5kIFNUQVRFIGFyZSB0aGUgc2FtZSBh cyBpbgorYHByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMnLiIKKyAgKHdoZW4gc3lz dGVtLXRhc2tiYXItbW9kZQorICAgIChwY2FzZSBzdGF0ZQorICAgICAgKChwcmVkIGZsb2F0cCkK KyAgICAgICAoc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzIHN0YXRlKSkKKyAgICAgICgocHJlZCBp bnRlZ2VycCkKKyAgICAgICAoc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzICgvICgxKyBzdGF0ZSkg NC4wKSkpCisgICAgICAoJ2RvbmUKKyAgICAgICAoc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzIG5p bCkpKSkpCisKKwwKKzs7IEQtQnVzIHN1cHBvcnQuCisKKyhkZWZjb25zdCBzeXN0ZW0tdGFza2Jh ci0tZGJ1cy1zZXJ2aWNlICJjb20uY2Fub25pY2FsLlVuaXR5IikKKyhkZWZjb25zdCBzeXN0ZW0t dGFza2Jhci0tZGJ1cy1pbnRlcmZhY2UgImNvbS5jYW5vbmljYWwuVW5pdHkuTGF1bmNoZXJFbnRy eSIpCisKKyhkZWZ2YXIgc3lzdGVtLXRhc2tiYXItLWRidXMtYXR0ZW50aW9uIG5pbAorICAiTm9u LW5pbCB3aGVuIGF0dGVudGlvbiBpcyByZXF1ZXN0ZWQuIikKKworKGRlZnVuIHN5c3RlbS10YXNr YmFyLS1kYnVzLXNlbmQtc2lnbmFsIChtZXNzYWdlKQorICAiU2VuZCBNRVNTQUdFIHRvIHRoZSBE LUJ1cyBzeXN0ZW0gdGFza2JhciBzZXJ2aWNlLiIKKyAgKGxldCAoKGFwcC11cmkKKyAgICAgICAg IChmb3JtYXQgImFwcGxpY2F0aW9uOi8vJXMuZGVza3RvcCIKKyAgICAgICAgICAgICAgICAgc3lz dGVtLXRhc2tiYXItZGJ1cy1kZXNrdG9wLWZpbGUtbmFtZSkpKQorICAgIChkYnVzLXNlbmQtc2ln bmFsCisgICAgIDpzZXNzaW9uCisgICAgIHN5c3RlbS10YXNrYmFyLS1kYnVzLXNlcnZpY2UKKyAg ICAgIi8iCisgICAgIHN5c3RlbS10YXNrYmFyLS1kYnVzLWludGVyZmFjZQorICAgICAiVXBkYXRl IgorICAgICBhcHAtdXJpCisgICAgIG1lc3NhZ2UpKSkKKworKGRlZnVuIHN5c3RlbS10YXNrYmFy LS1kYnVzLWNsZWFyLWF0dGVudGlvbi1vbi1mcmFtZS1mb2N1cyAoKQorICAiQ2xlYXIgYW4gYWN0 aXZlIEQtQnVzIGF0dGVudGlvbiByZXF1ZXN0IGlmIGFueSBmcmFtZSBpcyBmb2N1c2VkLiIKKyAg KHdoZW4gKGFuZCBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1hdHRlbnRpb24KKyAgICAgICAgICAgICAo Y2F0Y2ggOmNsZWFyCisgICAgICAgICAgICAgICAoZG9saXN0IChmcmFtZSAoZnJhbWUtbGlzdCkp CisgICAgICAgICAgICAgICAgICh3aGVuIChlcSAoZnJhbWUtZm9jdXMtc3RhdGUgZnJhbWUpIHQp CisgICAgICAgICAgICAgICAgICAgKHRocm93IDpjbGVhciB0KSkpKSkKKyAgICAoc3lzdGVtLXRh c2tiYXItYXR0ZW50aW9uIG5pbCkpKQorCisoZGVmdW4gc3lzdGVtLXRhc2tiYXItZGJ1cy1waW5n LXNlcnZpY2UgKCkKKyAgIlJldHVybiBub24tbmlsIGlmIGBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1z ZXJ2aWNlJyByZXNwb25kcy4KK1JldHVybiBuaWwgaWYgbm8gcmVzcG9uc2Ugd2l0aGluIGBzeXN0 ZW0tdGFza2Jhci1kYnVzLXRpbWVvdXQnLiIKKyAgKGRidXMtcGluZworICAgOnNlc3Npb24KKyAg IHN5c3RlbS10YXNrYmFyLS1kYnVzLXNlcnZpY2UKKyAgIHN5c3RlbS10YXNrYmFyLWRidXMtdGlt ZW91dCkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItLWVuYWJsZSAoJmNvbnRleHQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1i YWNrLWVuZCAoZXFsICdkYnVzKSkpCisgICh1bmxlc3MgKHN5c3RlbS10YXNrYmFyLWRidXMtcGlu Zy1zZXJ2aWNlKQorICAgIChlcnJvciAiRC1CdXMgc2VydmljZSBgJXMnIHVuYXZhaWxhYmxlIiBz eXN0ZW0tdGFza2Jhci0tZGJ1cy1zZXJ2aWNlKSkKKyAgKHdoZW4gc3lzdGVtLXRhc2tiYXItY2xl YXItYXR0ZW50aW9uLW9uLWZyYW1lLWZvY3VzCisgICAgKGFkZC1mdW5jdGlvbiA6YWZ0ZXIgYWZ0 ZXItZm9jdXMtY2hhbmdlLWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAjJ3N5c3RlbS10YXNr YmFyLS1kYnVzLWNsZWFyLWF0dGVudGlvbi1vbi1mcmFtZS1mb2N1cykpKQorCisoY2wtZGVmbWV0 aG9kIHN5c3RlbS10YXNrYmFyLS1kaXNhYmxlICgmY29udGV4dAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICdkYnVz KSkpCisgIChyZW1vdmUtZnVuY3Rpb24gYWZ0ZXItZm9jdXMtY2hhbmdlLWZ1bmN0aW9uCisgICAg ICAgICAgICAgICAgICAgIydzeXN0ZW0tdGFza2Jhci0tZGJ1cy1jbGVhci1hdHRlbnRpb24tb24t ZnJhbWUtZm9jdXMpKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFyLS1iYWRnZSAoJmNv bnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2ti YXItLWJhY2stZW5kIChlcWwgJ2RidXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZvcHRpb25hbCBjb3VudCkKKyAgIkRpc3BsYXkgQ09VTlQgYXMgYW4gb3ZlcmxheSBv biB0aGUgc3lzdGVtIHRhc2tiYXIgRW1hY3MgaWNvbi4KK0lmIENPVU5UIGlzIGFuIGludGVnZXIs IGRpc3BsYXkgdGhhdC4gIElmIENPVU5UIGlzIGEgc3RyaW5nLCBjb252ZXJ0IGl0Cit0byBhbiBp bnRlZ2VyLCBvciBuaWwgaWYgdGhhdCBmYWlscy4gIElmIENPVU5UIGlzIGFueSBvdGhlciB0eXBl LCB1c2UKK25pbC4gIElmIENPVU5UIGlzIG5pbCBvciBhbiBlbXB0eSBzdHJpbmcsIHJlbW92ZSB0 aGUgYmFkZ2UuCitOb3RlOiBUaGUgVW5pdHkgRC1CdXMgcHJvdG9jb2wgc3VwcG9ydHMgb25seSBp bnRlZ2VyIGJhZGdlcy4iCisgIChjb25kICgoc3RyaW5ncCBjb3VudCkKKyAgICAgICAgIChpZiAo c3RyaW5nLWVtcHR5LXAgY291bnQpCisgICAgICAgICAgICAgKHNldHEgY291bnQgbmlsKQorICAg ICAgICAgICAobGV0ICgoY291bnQtMSAoc3RyaW5nLXRvLW51bWJlciBjb3VudCkpKQorICAgICAg ICAgICAgIChzZXRxIGNvdW50IChpZiAoaW50ZWdlcnAgY291bnQtMSkgY291bnQtMSBuaWwpKSkp KQorICAgICAgICAoKG5vdCAoaW50ZWdlcnAgY291bnQpKQorICAgICAgICAgKHNldHEgY291bnQg bmlsKSkpCisgIChzeXN0ZW0tdGFza2Jhci0tZGJ1cy1zZW5kLXNpZ25hbAorICAgYCgoOmRpY3Qt ZW50cnkgImNvdW50LXZpc2libGUiCisgICAgICAgICAgICAgICAgICAoOnZhcmlhbnQgOmJvb2xl YW4gLChub3QgKG51bGwgY291bnQpKSkpCisgICAgICg6ZGljdC1lbnRyeSAiY291bnQiCisgICAg ICAgICAgICAgICAgICAoOnZhcmlhbnQgOnVpbnQzMiAsKGlmIChudWxsIGNvdW50KSAwCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCkpKSkpKQorCisoY2wtZGVm bWV0aG9kIHN5c3RlbS10YXNrYmFyLS1hdHRlbnRpb24gKCZjb250ZXh0CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVx bCAnZGJ1cykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRp b25hbCB1cmdlbmN5IHRpbWVvdXQpCisgICJSZXF1ZXN0IFVSR0VOQ1kgdXNlciBhdHRlbnRpb24g b24gdGhlIHN5c3RlbSB0YXNrYmFyIEVtYWNzIGljb24uCitUaGUgcmVxdWVzdCB3aWxsIHRpbWUg b3V0IHdpdGhpbiB0aGUgVElNRU9VVCBzZWNvbmRzIGludGVydmFsLgorVGhlIFVuaXR5IEQtQnVz IHByb3RvY29sIGRvZXMgbm90IHN1cHBvcnQgZGlmZmVyZW50aWF0ZWQgdXJnZW5jaWVzLiIKKyAg KHNldHEgc3lzdGVtLXRhc2tiYXItLWRidXMtYXR0ZW50aW9uIHVyZ2VuY3kpCisgIChzeXN0ZW0t dGFza2Jhci0tZGJ1cy1zZW5kLXNpZ25hbAorICAgYCgoOmRpY3QtZW50cnkgInVyZ2VudCIKKyAg ICAgICAgICAgICAgICAgICg6dmFyaWFudCA6Ym9vbGVhbiAsKG5vdCAobnVsbCB1cmdlbmN5KSkp KSkpCisgICh3aGVuIChhbmQgdXJnZW5jeSB0aW1lb3V0KQorICAgIChydW4td2l0aC10aW1lcgor ICAgICB0aW1lb3V0CisgICAgIG5pbAorICAgICAjJ3N5c3RlbS10YXNrYmFyLWF0dGVudGlvbiBu aWwpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tcHJvZ3Jlc3MgKCZjb250ZXh0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFy LS1iYWNrLWVuZCAoZXFsICdkYnVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmb3B0aW9uYWwgcHJvZ3Jlc3MpCisgICJEaXNwbGF5IGEgcHJvZ3Jlc3MgYmFyIG92 ZXJsYXkgb24gdGhlIHN5c3RlbSB0YXNrYmFyIGljb24uCitQUk9HUkVTUyBpcyBhIGZsb2F0IGlu IHRoZSByYW5nZSAwLjAgdG8gMS4wLgorSWYgUFJPR1JFU1MgaXMgbmlsLCByZW1vdmUgdGhlIHBy b2dyZXNzIGJhci4iCisgIChzZXRxIHByb2dyZXNzIChzeXN0ZW0tdGFza2Jhci0tdmFsaWRhdGUt cHJvZ3Jlc3MgcHJvZ3Jlc3MpKQorICAoc3lzdGVtLXRhc2tiYXItLWRidXMtc2VuZC1zaWduYWwK KyAgIGAoKDpkaWN0LWVudHJ5ICJwcm9ncmVzcy12aXNpYmxlIgorICAgICAgICAgICAgICAgICAg KDp2YXJpYW50IDpib29sZWFuICwobm90IChudWxsIHByb2dyZXNzKSkpKQorICAgICAoOmRpY3Qt ZW50cnkgInByb2dyZXNzIgorICAgICAgICAgICAgICAgICAgKDp2YXJpYW50IDpkb3VibGUgLChp ZiAobnVsbCBwcm9ncmVzcykgMCBwcm9ncmVzcykpKSkpKQorCisMCis7OyBtYWNPUy9HTlVzdGVw IE5TIHN1cHBvcnQuCisKKyhkZWNsYXJlLWZ1bmN0aW9uIG5zLWJhZGdlICJuc2Zucy5tIikKKyhk ZWNsYXJlLWZ1bmN0aW9uIG5zLXJlcXVlc3QtdXNlci1hdHRlbnRpb24gIm5zZm5zLm0iKQorKGRl Y2xhcmUtZnVuY3Rpb24gbnMtcHJvZ3Jlc3MtaW5kaWNhdG9yICJuc2Zucy5tIikKKworKGNsLWRl Zm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tZW5hYmxlICgmY29udGV4dAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ25z KSkpCisgIChpZ25vcmUpKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFyLS1kaXNhYmxl ICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3Rl bS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICducykpKQorICAoaWdub3JlKSkKKworKGNsLWRlZm1l dGhvZCBzeXN0ZW0tdGFza2Jhci0tYmFkZ2UgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICducykpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbmFsIGNvdW50KQorICAi RGlzcGxheSBDT1VOVCBhcyBhbiBvdmVybGF5IG9uIHRoZSBEb2NrIGJhZGdlLgorSWYgQ09VTlQg aXMgYW4gaW50ZWdlciBvciBhIG5vbi1lbXB0eSBzdHJpbmcsIGRpc3BsYXkgdGhhdC4gIElmIENP VU5UIGlzCituaWwgb3IgYW4gZW1wdHkgc3RyaW5nLCBjbGVhciB0aGUgYmFkZ2Ugb3ZlcmxheS4K K05vdGU6IE5TIHdpbGwgYWJicmV2aWF0ZSBsb25nIHN0cmluZ3MgdG8gZml0IHRoZSBiYWRnZSdz IGFsbG9jYXRlZAorc3BhY2UuIgorICAoY29uZCAoKHN0cmluZ3AgY291bnQpCisgICAgICAgICAo d2hlbiAoc3RyaW5nLWVtcHR5LXAgY291bnQpCisgICAgICAgICAgIChzZXRxIGNvdW50IG5pbCkp KQorICAgICAgICAoKGludGVnZXJwIGNvdW50KQorICAgICAgICAgKHNldHEgY291bnQgKG51bWJl ci10by1zdHJpbmcgY291bnQpKSkKKyAgICAgICAgKHQgKHNldHEgY291bnQgbmlsKSkpCisgIChu cy1iYWRnZSBjb3VudCkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItLWF0dGVudGlv biAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5 c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICducykpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCB1cmdlbmN5IHRpbWVvdXQpCisgICJSZXF1ZXN0 IFVSR0VOQ1kgdXNlciBhdHRlbnRpb24gb24gdGhlIERvY2suCitUaGUgYXR0ZW50aW9uIGluZGlj YXRvciB3aWxsIGJlIGNsZWFyZWQgYWZ0ZXIgVElNRU9VVCBzZWNvbmRzLiIKKyAgKG5zLXJlcXVl c3QtdXNlci1hdHRlbnRpb24gdXJnZW5jeSkKKyAgKHdoZW4gKGFuZCB1cmdlbmN5IHRpbWVvdXQp CisgICAgKHJ1bi13aXRoLXRpbWVyCisgICAgIHRpbWVvdXQKKyAgICAgbmlsCisgICAgICMnc3lz dGVtLXRhc2tiYXItYXR0ZW50aW9uIG5pbCkpKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNr YmFyLS1wcm9ncmVzcyAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ25zKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgcHJvZ3Jlc3MpCisgICJEaXNw bGF5IGEgcHJvZ3Jlc3MgYmFyIG92ZXJsYXkgb24gdGhlIERvY2sgYW5kIEFwcCBTd2l0Y2hlci4K K1BST0dSRVNTIGlzIGEgZmxvYXQgaW4gdGhlIHJhbmdlIDAuMCB0byAxLjAuCitJZiBQUk9HUkVT UyBpcyBuaWwsIHJlbW92ZSB0aGUgcHJvZ3Jlc3MgYmFyLiIKKyAgKG5zLXByb2dyZXNzLWluZGlj YXRvciAoc3lzdGVtLXRhc2tiYXItLXZhbGlkYXRlLXByb2dyZXNzIHByb2dyZXNzKSkpCisKKwwK Kzs7IE1TLVdpbmRvd3Mgc3VwcG9ydC4KKworKGRlY2xhcmUtZnVuY3Rpb24gdzMyLWJhZGdlICJ3 MzJmbnMuYyIpCisoZGVjbGFyZS1mdW5jdGlvbiB3MzItcmVxdWVzdC11c2VyLWF0dGVudGlvbiAi dzMyZm5zLmMiKQorKGRlY2xhcmUtZnVuY3Rpb24gdzMyLXByb2dyZXNzLWluZGljYXRvciAidzMy Zm5zLmMiKQorCisoZGVmdmFyIHN5c3RlbS10YXNrYmFyLXczMi1iYWRnZS1iYWNrZ3JvdW5kICIj ZTc1ODU3IiA7IHJlZGlzaAorICAidzMyIGJhZGdlIGJhY2tncm91bmQgUkdCIHRyaXBsZSBzdHJp bmcuIikKKworKGRlZnZhciBzeXN0ZW0tdGFza2Jhci13MzItYmFkZ2UtZm9yZWdyb3VuZCAiI2Zm ZmZmZiIgOyB3aGl0ZQorICAidzMyIGJhZGdlIGZvcmVncm91bmQgUkdCIHRyaXBsZSBzdHJpbmcu IikKKworKGRlZnVuIHN5c3RlbS10YXNrYmFyLS13MzItY2xlYXItZnJhbWUtaW5kaWNhdG9ycyAo ZnJhbWUpCisgIDs7IE5PVEU6IFVwZGF0ZSB0aGUgYmVsb3cgaWYgYWRkaW5nIG5ldyB3MzIgc3lz dGVtLXRhc2tiYXIgZnVuY3Rpb25zLgorICAod2l0aC1zZWxlY3RlZC1mcmFtZSBmcmFtZQorICAg IChzeXN0ZW0tdGFza2Jhci1iYWRnZSBuaWwpCisgICAgKHN5c3RlbS10YXNrYmFyLWF0dGVudGlv biBuaWwpCisgICAgKHN5c3RlbS10YXNrYmFyLXByb2dyZXNzIG5pbCkpKQorCisoY2wtZGVmbWV0 aG9kIHN5c3RlbS10YXNrYmFyLS1lbmFibGUgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAndzMyKSkp CisgIDs7IENsZWFyIHN5c3RlbS10YXNrYmFyIGluZGljYXRvcnMgZm9yIGEgZnJhbWUgd2hlbiBp dCBpcyBkZWxldGVkLgorICAoYWRkLWhvb2sgJ2RlbGV0ZS1mcmFtZS1mdW5jdGlvbnMKKyAgICAg ICAgICAgICMnc3lzdGVtLXRhc2tiYXItLXczMi1jbGVhci1mcmFtZS1pbmRpY2F0b3JzKSkKKwor KGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tZGlzYWJsZSAoJmNvbnRleHQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQg KGVxbCAndzMyKSkpCisgIChyZW1vdmUtaG9vayAnZGVsZXRlLWZyYW1lLWZ1bmN0aW9ucworICAg ICAgICAgICAgICAgIydzeXN0ZW0tdGFza2Jhci0tdzMyLWNsZWFyLWZyYW1lLWluZGljYXRvcnMp KQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFyLS1iYWRnZSAoJmNvbnRleHQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5k IChlcWwgJ3czMikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlv bmFsIGNvdW50KQorICAiRGlzcGxheSBhIENPVU5UIG92ZXJsYXkgb24gdGhlIHN5c3RlbSB0YXNr YmFyIGljb24uCitUaGUgdGFza2JhciBpY29uIHRhcmdldCBpcyBhc3NvY2lhdGVkIHdpdGggdGhl IHNlbGVjdGVkIGZyYW1lLgorCitJZiBDT1VOVCBpcyBhbiBpbnRlZ2VyIG9yIGEgbm9uLWVtcHR5 IHN0cmluZywgZGlzcGxheSB0aGF0LiAgSWYgQ09VTlQgaXMKK25pbCBvciBhbiBlbXB0eSBzdHJp bmcsIGNsZWFyIHRoZSBiYWRnZS4KKworRHVlIHRvIE1TLVdpbmRvd3MgaWNvbiBvdmVybGF5IHNp emUgbGltaXRhdGlvbnMsIGlmIENPVU5UIGlzIGFuIGludGVnZXIKK2FuZCBpcyBvdXRzaWRlIHRo ZSByYW5nZSAtOTkgdG8gOTksIGRpc3BsYXkgXCItOTlcIiBhbmQgXCI5OStcIiwKK3Jlc3BlY3Rp dmVseSwgaWYgQ09VTlQgaXMgYSBzdHJpbmcgbG9uZ2VyIHRoYW4gMiBjaGFyYWN0ZXJzIHRydW5j YXRlIGl0Cit1c2luZyBgdHJ1bmNhdGUtc3RyaW5nLXRvLXdpZHRoJy4KKworQ29uc3VsdCBgc3lz dGVtLXRhc2tiYXItdzMyLWJhZGdlLWJhY2tncm91bmQnIGFuZAorYHN5c3RlbS10YXNrYmFyLXcz Mi1iYWRnZS1mb3JlZ3JvdW5kJyBmb3IgdGhlIGJhY2tncm91bmQgYW5kIGZvcmVncm91bmQKK2Nv bG9ycyBmb3IgdGhlIHBhaW50ZWQgb3ZlcmxheS4iCisgIChjb25kICgoc3RyaW5ncCBjb3VudCkK KyAgICAgICAgIChpZiAoc3RyaW5nLWVtcHR5LXAgY291bnQpCisgICAgICAgICAgICAgKHNldHEg Y291bnQgbmlsKQorICAgICAgICAgICAod2hlbiAobGVuZ3RoPiBjb3VudCAyKQorICAgICAgICAg ICAgIChzZXRxIGNvdW50ICh0cnVuY2F0ZS1zdHJpbmctdG8td2lkdGggY291bnQgMyAwIG5pbCB0 KSkpKSkKKyAgICAgICAgKChpbnRlZ2VycCBjb3VudCkKKyAgICAgICAgIChpZiAoYW5kICg+IGNv dW50IC0xMDApCisgICAgICAgICAgICAgICAgICAoPCBjb3VudCAxMDApKQorICAgICAgICAgICAg IChzZXRxIGNvdW50IChudW1iZXItdG8tc3RyaW5nIGNvdW50KSkKKyAgICAgICAgICAgKGlmICg8 IGNvdW50IDApCisgICAgICAgICAgICAgICAoc2V0cSBjb3VudCAiLTk5IikKKyAgICAgICAgICAg ICAoc2V0cSBjb3VudCAiOTkrIikpKSkKKyAgICAgICAgKHQgKHNldHEgY291bnQgbmlsKSkpCisg ICh3MzItYmFkZ2UgY291bnQKKyAgICAgICAgICAgICBzeXN0ZW0tdGFza2Jhci13MzItYmFkZ2Ut YmFja2dyb3VuZAorICAgICAgICAgICAgIHN5c3RlbS10YXNrYmFyLXczMi1iYWRnZS1mb3JlZ3Jv dW5kKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tYXR0ZW50aW9uICgmY29udGV4 dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2ti YXItLWJhY2stZW5kIChlcWwgJ3czMikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZvcHRpb25hbCB1cmdlbmN5IHRpbWVvdXQpCisgICJSZXF1ZXN0IFVSR0VOQ1kg dXNlciBhdHRlbnRpb24gb24gdGhlIHN5c3RlbSB0YXNrYmFyIGljb24uCitJbmRpY2F0ZSB0aGUg aWNvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHNlbGVjdGVkIGZyYW1lLgorSWYgVVJHRU5DWSBpcyB0 aGUgc3ltYm9sIGBpbmZvcm1hdGlvbmFsJywgZmxhc2ggdGhlIHRhc2tiYXIgaWNvbi4KK0lmIFVS R0VOQ1kgaXMgdGhlIHN5bWJvbCBgY3JpdGljYWwnLCBmbGFzaCB0aGUgdGFza2JhciBpY29uIGFu ZCB0aGUKK01TLVdpbmRvd3Mgd2luZG93IGZyYW1lLgorQ2xlYXIgYXR0ZW50aW9uIGluZGljYXRv ciBhZnRlciBUSU1FT1VUIHNlY29uZHMuICBJZiBUSU1FT1VUIGlzIG5pbCwKK2RlZmF1bHQgdG8g TVMtV2luZG93cyBkZWZhdWx0IGJlaGF2aW9yLiIKKyAgKHczMi1yZXF1ZXN0LXVzZXItYXR0ZW50 aW9uIHVyZ2VuY3kpCisgICh3aGVuIChhbmQgdXJnZW5jeSB0aW1lb3V0KQorICAgIChydW4td2l0 aC10aW1lcgorICAgICB0aW1lb3V0CisgICAgIG5pbAorICAgICAjJ3N5c3RlbS10YXNrYmFyLWF0 dGVudGlvbiBuaWwpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tcHJvZ3Jlc3Mg KCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3Rl bS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICd3MzIpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZvcHRpb25hbCBwcm9ncmVzcykKKyAgIkRpc3BsYXkgYSBwcm9ncmVz cyBiYXIgb24gdGhlIHN5c3RlbSB0YXNrYmFyIGljb24uCitQUk9HUkVTUyBpcyBhIGZsb2F0IGlu IHRoZSByYW5nZSAwLjAgdG8gMS4wLgorSWYgUFJPR1JFU1MgaXMgbmlsLCByZW1vdmUgdGhlIHBy b2dyZXNzIGJhci4iCisgICh3MzItcHJvZ3Jlc3MtaW5kaWNhdG9yIChzeXN0ZW0tdGFza2Jhci0t dmFsaWRhdGUtcHJvZ3Jlc3MgcHJvZ3Jlc3MpKSkKKworDAorCisocHJvdmlkZSAnc3lzdGVtLXRh c2tiYXIpCisKKzs7OyBzeXN0ZW0tdGFza2Jhci5lbCBlbmRzIGhlcmUKZGlmZiAtLWdpdCBhL3Ny Yy9uc2Zucy5tIGIvc3JjL25zZm5zLm0KaW5kZXggMzUyOGM0YWNkNTAuLjJiOTRiMzJlNTljIDEw MDY0NAotLS0gYS9zcmMvbnNmbnMubQorKysgYi9zcmMvbnNmbnMubQpAQCAtMzY3NCw2ICszNjc0 LDEyOSBAQCBUaGUgcG9zaXRpb24gaXMgcmV0dXJuZWQgYXMgYSBjb25zIGNlbGwgKFggLiBZKSBv ZiB0aGUKICAgcmV0dXJuIFFuaWw7CiB9CiAKK0RFRlVOICgibnMtYmFkZ2UiLCBGbnNfYmFkZ2Us IFNuc19iYWRnZSwgMSwgMSwgMCwKKyAgICAgICBkb2M6IC8qIFNldCB0aGUgYXBwIGljb24gYmFk Z2UgdG8gQkFER0UuCitCQURHRSBzaG91bGQgYmUgYSBzdHJpbmcgc2hvcnQgZW5vdWdoIHRvIGRp c3BsYXkgbmljZWx5IGluIHRoZSBzaG9ydAorc3BhY2UgaW50ZW5kZWQgZm9yIGJhZGdlcy4KK0lm IEJBREdFIGlzIG5pbCwgY2xlYXIgdGhlIGFwcCBiYWRnZS4gICovKQorICAoTGlzcF9PYmplY3Qg YmFkZ2UpCit7CisgIGJsb2NrX2lucHV0ICgpOworICBpZiAoTklMUCAoYmFkZ2UpKQorICAgIFtb TlNBcHAgZG9ja1RpbGVdIHNldEJhZGdlTGFiZWw6IG5pbF07CisgIGVsc2UKKyAgICB7CisgICAg ICBDSEVDS19TVFJJTkcgKGJhZGdlKTsKKyAgICAgIFtbTlNBcHAgZG9ja1RpbGVdIHNldEJhZGdl TGFiZWw6CisJCQkgIFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzogU1NEQVRBIChiYWRn ZSldXTsKKyAgICB9CisgIHVuYmxvY2tfaW5wdXQgKCk7CisgIHJldHVybiBRbmlsOworfQorCisv KiBVc2UgLTEgdG8gaW5kaWNhdGUgbm8gYWN0aXZlIHJlcXVlc3QuICAqLworc3RhdGljIE5TSW50 ZWdlciBuc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uX2lkID0gLTE7CisKK0RFRlVOICgibnMtcmVx dWVzdC11c2VyLWF0dGVudGlvbiIsCisgICAgICAgRm5zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24s CisgICAgICAgU25zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24sCisgICAgICAgMSwgMSwgMCwKKyAg ICAgICBkb2M6IC8qIEJvdW5jZSB0aGUgYXBwIGRvY2sgaWNvbiB0byByZXF1ZXN0IHVzZXIgYXR0 ZW50aW9uLgorSWYgVVJHRU5DWSBuaWwsIGNhbmNlbCB0aGUgb3V0c3RhbmRpbmcgcmVxdWVzdCwg aWYgYW55LgorSWYgVVJHRU5DWSBpcyB0aGUgc3ltYm9sIGBpbmZvcm1hdGlvbmFsJywgYm91bmNp bmcgbGFzdHMgYSBmZXcgc2Vjb25kcy4KK0lmIFVSR0VOQ1kgaXMgdGhlIHN5bWJvbCBgY3JpdGlj YWwnLCBib3VuY2luZyBsYXN0cyB1bnRpbCBFbWFjcyBpcworZm9jdXNlZC4gICovKQorICAoTGlz cF9PYmplY3QgdXJnZW5jeSkKK3sKKyAgYmxvY2tfaW5wdXQgKCk7CisgIGlmIChuc19yZXF1ZXN0 X3VzZXJfYXR0ZW50aW9uX2lkICE9IC0xKQorICAgIHsKKyAgICAgIFtOU0FwcCBjYW5jZWxVc2Vy QXR0ZW50aW9uUmVxdWVzdDogbnNfcmVxdWVzdF91c2VyX2F0dGVudGlvbl9pZF07CisgICAgICBu c19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uX2lkID0gLTE7CisgICAgfQorICBpZiAoIU5JTFAgKHVy Z2VuY3kpICYmIFNZTUJPTFAgKHVyZ2VuY3kpKQorICAgIHsKKyAgICAgIGlmIChFUSAodXJnZW5j eSwgUWluZm9ybWF0aW9uYWwpKQorCW5zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb25faWQgPSBbTlNB cHAgcmVxdWVzdFVzZXJBdHRlbnRpb246CisJCQkJCQlOU0luZm9ybWF0aW9uYWxSZXF1ZXN0XTsK KyAgICAgIGVsc2UgaWYgKEVRICh1cmdlbmN5LCBRY3JpdGljYWwpKQorCW5zX3JlcXVlc3RfdXNl cl9hdHRlbnRpb25faWQgPSBbTlNBcHAgcmVxdWVzdFVzZXJBdHRlbnRpb246CisJCQkJCQlOU0Ny aXRpY2FsUmVxdWVzdF07CisgICAgfQorICB1bmJsb2NrX2lucHV0ICgpOworICByZXR1cm4gUW5p bDsKK30KKworREVGVU4gKCJucy1wcm9ncmVzcy1pbmRpY2F0b3IiLAorICAgICAgIEZuc19wcm9n cmVzc19pbmRpY2F0b3IsCisgICAgICAgU25zX3Byb2dyZXNzX2luZGljYXRvciwKKyAgICAgICAx LCAxLCAwLAorICAgICAgIGRvYzogLyogQm91bmNlIHRoZSBhcHAgZG9jayBpY29uIHRvIHJlcXVl c3QgdXNlciBhdHRlbnRpb24uCitQUk9HUkVTUyBpcyBhIGZsb2F0IGJldHdlZW4gMC4wIGFuZCAx LjAuCitJZiBQUk9HUkVTUyBpcyBuaWwsIHJlbW92ZSB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yLiAg Ki8pCisgIChMaXNwX09iamVjdCBwcm9ncmVzcykKK3sKKyAgYmxvY2tfaW5wdXQgKCk7CisgIE5T RG9ja1RpbGUgKmRvY2tfdGlsZSA9IFtOU0FwcCBkb2NrVGlsZV07CisgIC8qIFVzZSBOU0xldmVs SW5kaWNhdG9yIHdpdGggcmVsaWFibGUgcmVkcmF3cywgbm90IE5TUHJvZ3Jlc3NJbmRpY2F0b3Iu ICAqLworICBOU0xldmVsSW5kaWNhdG9yICpsZXZlbF9pbmRpY2F0b3I7CisgIC8qIFJldXNlIHRo ZSBpbmRpY2F0b3Igc3VidmlldyBvciBjcmVhdGUgb25lLiAqLworICBpZiAoZG9ja190aWxlLmNv bnRlbnRWaWV3CisgICAgICAmJiBbW2RvY2tfdGlsZS5jb250ZW50VmlldyBzdWJ2aWV3c10gY291 bnRdID4gMAorICAgICAgJiYgW1tbZG9ja190aWxlLmNvbnRlbnRWaWV3IHN1YnZpZXdzXSBsYXN0 T2JqZWN0XQorICAgICAgICAgICAgICAgICAgICAgICAgaXNLaW5kT2ZDbGFzczpbTlNMZXZlbElu ZGljYXRvciBjbGFzc11dKQorICAgIGxldmVsX2luZGljYXRvciA9CisgICAgICAoTlNMZXZlbElu ZGljYXRvciAqKVtbW2RvY2tfdGlsZSBjb250ZW50Vmlld10gc3Vidmlld3NdIGxhc3RPYmplY3Rd OworICAgIGVsc2UKKyAgICAgIHsKKwlpZiAoIWRvY2tfdGlsZS5jb250ZW50VmlldykKKwkgIHsK KwkgICAgTlNJbWFnZVZpZXcqIGltYWdlX3ZpZXcgPSBbW05TSW1hZ2VWaWV3IGFsbG9jXSBpbml0 XTsKKwkgICAgW2ltYWdlX3ZpZXcgc2V0SW1hZ2U6IFtOU0FwcCBhcHBsaWNhdGlvbkljb25JbWFn ZV1dOworCSAgICBbZG9ja190aWxlIHNldENvbnRlbnRWaWV3OiBpbWFnZV92aWV3XTsKKwkgIH0K KwkvKiBTZXQgd2lkdGggdG8gdGhlIHdpZHRoIG9mIHRoZSBhcHBsaWNhdGlvbiBpY29uLCBhbmQg aGVpZ2h0IHRvCisJICAgJSBvZiB0aGUgaWNvbiBoZWlnaHQgdG8gcmVzcGVjdCBzY2FsZWQgaWNv bnMuICAqLworCWZsb2F0IHdpZHRoID0gW1tOU0FwcCBhcHBsaWNhdGlvbkljb25JbWFnZV0gc2l6 ZV0ud2lkdGg7CisJZmxvYXQgaGVpZ2h0ID0gMC4xMCAqIFtbTlNBcHAgYXBwbGljYXRpb25JY29u SW1hZ2VdIHNpemVdLmhlaWdodDsKKwlsZXZlbF9pbmRpY2F0b3IgPQorCSAgW1tOU0xldmVsSW5k aWNhdG9yIGFsbG9jXSBpbml0V2l0aEZyYW1lOgorCQkJCSAgICAgIE5TTWFrZVJlY3QgKDAuMCwg MC4wLAorCQkJCQkJICB3aWR0aCwgaGVpZ2h0KV07CisJW2xldmVsX2luZGljYXRvciBzZXRXYW50 c0xheWVyOiBZRVNdOyAvKiBQZXJmb3JtYW5jZS4gICovCisJW2xldmVsX2luZGljYXRvciBzZXRF bmFibGVkOiBOT107IC8qIElnbm9yZSBtb3VzZSBpbnB1dC4gICovCisJW2xldmVsX2luZGljYXRv ciBzZXRMZXZlbEluZGljYXRvclN0eWxlOgorCQkJICAgTlNMZXZlbEluZGljYXRvclN0eWxlQ29u dGludW91c0NhcGFjaXR5XTsKKwkvKiBNYXRjaCBOU1Byb2dyZXNzSW5kaWNhdG9yIGNvbG9yLiAg Ki8KKwlbbGV2ZWxfaW5kaWNhdG9yIHNldEZpbGxDb2xvcjogW05TQ29sb3IgY29udHJvbEFjY2Vu dENvbG9yXV07CisJW2xldmVsX2luZGljYXRvciBzZXRNaW5WYWx1ZTogMC4wXTsKKwlbbGV2ZWxf aW5kaWNhdG9yIHNldE1heFZhbHVlOiAxLjBdOworCS8qIFRoZSBjb250ZW50VmlldyB0YWtlcyBv d25lcnNoaXAuICAqLworCVtkb2NrX3RpbGUuY29udGVudFZpZXcgYWRkU3VidmlldzogbGV2ZWxf aW5kaWNhdG9yXTsKKyAgICAgIH0KKyAgZG91YmxlIHByb2dyZXNzX3ZhbHVlOworICBCT09MIGhp ZGUgPSAoTklMUCAocHJvZ3Jlc3MpCisJICAgICAgIHx8ICghTklMUCAocHJvZ3Jlc3MpICYmICEo RkxPQVRQIChwcm9ncmVzcykpKSk7CisgIGlmICghaGlkZSkKKyAgICB7CisgICAgICBwcm9ncmVz c192YWx1ZSA9IFhGTE9BVF9EQVRBIChwcm9ncmVzcyk7CisgICAgICBoaWRlID0gKHByb2dyZXNz X3ZhbHVlIDwgMC4wIHx8IHByb2dyZXNzX3ZhbHVlID4gMS4wKTsKKyAgICB9CisgIGlmIChoaWRl KQorICAgIHsKKyAgICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0RG91YmxlVmFsdWU6IDAuMF07Cisg ICAgICBbbGV2ZWxfaW5kaWNhdG9yIHNldEhpZGRlbjogWUVTXTsKKyAgICB9CisgIGVsc2UKKyAg ICB7CisgICAgICBbbGV2ZWxfaW5kaWNhdG9yIHNldERvdWJsZVZhbHVlOiBwcm9ncmVzc192YWx1 ZV07CisgICAgICBbbGV2ZWxfaW5kaWNhdG9yIHNldEhpZGRlbjogTk9dOworICAgIH0KKyAgW2Rv Y2tfdGlsZSBkaXNwbGF5XTsKKyAgdW5ibG9ja19pbnB1dCAoKTsKKyAgcmV0dXJuIFFuaWw7Cit9 CisKICNpZmRlZiBOU19JTVBMX0NPQ09BCiAKIERFRlVOICgibnMtc2VuZC1pdGVtcyIsCkBAIC0z OTU3LDYgKzQwODAsOSBAQCAtIChMaXNwX09iamVjdClsaXNwU3RyaW5nCiAgIGRlZnN1YnIgKCZT bnNfc2V0X21vdXNlX2Fic29sdXRlX3BpeGVsX3Bvc2l0aW9uKTsKICAgZGVmc3ViciAoJlNuc19t b3VzZV9hYnNvbHV0ZV9waXhlbF9wb3NpdGlvbik7CiAgIGRlZnN1YnIgKCZTbnNfc2hvd19jaGFy YWN0ZXJfcGFsZXR0ZSk7CisgIGRlZnN1YnIgKCZTbnNfYmFkZ2UpOworICBkZWZzdWJyICgmU25z X3JlcXVlc3RfdXNlcl9hdHRlbnRpb24pOworICBkZWZzdWJyICgmU25zX3Byb2dyZXNzX2luZGlj YXRvcik7CiAjaWZkZWYgTlNfSU1QTF9DT0NPQQogICBkZWZzdWJyICgmU25zX3NlbmRfaXRlbXMp OwogI2VuZGlmCkBAIC00MDIzLDQgKzQxNDksNiBAQCAtIChMaXNwX09iamVjdClsaXNwU3RyaW5n CiAgIERFRlNZTSAoUWFzc3FfZGVsZXRlX2FsbCwgImFzc3EtZGVsZXRlLWFsbCIpOwogICBERUZT WU0gKFFydW5fYXRfdGltZSwgInJ1bi1hdC10aW1lIik7CiAgIERFRlNZTSAoUXhfaGlkZV90aXAs ICJ4LWhpZGUtdGlwIik7CisgIERFRlNZTSAoUWluZm9ybWF0aW9uYWwsICJpbmZvcm1hdGlvbmFs Iik7CisgIERFRlNZTSAoUWNyaXRpY2FsLCAiY3JpdGljYWwiKTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy93MzJmbnMuYyBiL3NyYy93MzJmbnMuYwppbmRleCBmN2JmNjExMDk5MS4uYjFmNTc5OWQxYzUg MTAwNjQ0Ci0tLSBhL3NyYy93MzJmbnMuYworKysgYi9zcmMvdzMyZm5zLmMKQEAgLTM1LDcgKzM1 LDEyIEBAICNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4MDYwMAogI2luY2x1ZGUgPGMtY3R5cGUuaD4K IAogI2RlZmluZSBDT0JKTUFDUk9TIC8qIEFzayBmb3IgQyBkZWZpbml0aW9ucyBmb3IgQ09NLiAg Ki8KKyNpZiAhZGVmaW5lZCBNSU5HV19XNjQgJiYgIWRlZmluZWQgQ1lHV0lOCisjIGRlZmluZSBJ TklUR1VJRAorI2VuZGlmCisjaW5jbHVkZSA8aW5pdGd1aWQuaD4KICNpbmNsdWRlIDxzaGxvYmou aD4KKyNpbmNsdWRlIDxzaG9iamlkbC5oPgogI2luY2x1ZGUgPG9sZWlkbC5oPgogI2luY2x1ZGUg PG9iamlkbC5oPgogI2luY2x1ZGUgPG9sZTIuaD4KQEAgLTIzMiw2ICsyMzcsOCBAQCAjZGVmaW5l IENDSERFVklDRU5BTUUgMzIKIHR5cGVkZWYgQk9PTCAoV0lOQVBJICogU2V0R2VzdHVyZUNvbmZp Z19wcm9jKSAoSFdORCwgRFdPUkQsIFVJTlQsCiAJCQkJCSAgICAgICBFbWFjc19QR0VTVFVSRUNP TkZJRywgVUlOVCk7CiAKK3R5cGVkZWYgQk9PTCAoV0lOQVBJICogRmxhc2hXaW5kb3dFeF9Qcm9j KSAoUEZMQVNIV0lORk8gcGZ3aSk7CisKIHN0YXRpYyBUcmFja01vdXNlRXZlbnRfUHJvYyB0cmFj a19tb3VzZV9ldmVudF9mbiA9IE5VTEw7CiBzdGF0aWMgSW1tR2V0Q29tcG9zaXRpb25TdHJpbmdf UHJvYyBnZXRfY29tcG9zaXRpb25fc3RyaW5nX2ZuID0gTlVMTDsKIHN0YXRpYyBJbW1HZXRDb250 ZXh0X1Byb2MgZ2V0X2ltZV9jb250ZXh0X2ZuID0gTlVMTDsKQEAgLTI1NCw2ICsyNjEsNyBAQCAj ZGVmaW5lIENDSERFVklDRU5BTUUgMzIKIHN0YXRpYyBXVFNSZWdpc3RlclNlc3Npb25Ob3RpZmlj YXRpb25fUHJvYyBXVFNSZWdpc3RlclNlc3Npb25Ob3RpZmljYXRpb25fZm4gPSBOVUxMOwogc3Rh dGljIFJlZ2lzdGVyVG91Y2hXaW5kb3dfcHJvYyBSZWdpc3RlclRvdWNoV2luZG93X2ZuID0gTlVM TDsKIHN0YXRpYyBTZXRHZXN0dXJlQ29uZmlnX3Byb2MgU2V0R2VzdHVyZUNvbmZpZ19mbiA9IE5V TEw7CitzdGF0aWMgRmxhc2hXaW5kb3dFeF9Qcm9jIGZsYXNoX3dpbmRvd19leF9mbiA9IE5VTEw7 CiAKIGV4dGVybiBBcHBlbmRNZW51V19Qcm9jIHVuaWNvZGVfYXBwZW5kX21lbnU7CiAKQEAgLTEx MDA4LDYgKzExMDE2LDMxMyBAQCBERUZVTiAoInczMi1zeXN0ZW0taWRsZS10aW1lIiwgRnczMl9z eXN0ZW1faWRsZV90aW1lLCBTdzMyX3N5c3RlbV9pZGxlX3RpbWUsCiAKICNlbmRpZgogCisMCisj aWZkZWYgV0lORE9XU05UCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCQkgICAgIFRhc2tiYXIgSW5kaWNh dG9ycworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIE1JTkdXX1c2NAorICAvKiBtaW5ndy5v cmcncyBNaW5HVyBkb2Vzbid0IGhhdmUgdGhpcyBzdHVmZi4gICovCisgIERFRklORV9HVUlEKENM U0lEX1Rhc2tiYXJMaXN0LCAweDU2ZmRmMzQ0LCAweGZkNmQsIDB4MTFkMCwgMHg5NSwweDhhLCAw eDAwLDB4NjAsMHg5NywweGM5LDB4YTAsMHg5MCk7CisgIERFRklORV9HVUlEKElJRF9JVGFza2Jh ckxpc3QzLCAweGVhMWFmYjkxLCAweDllMjgsIDB4NGI4NiwgMHg5MCwweGU5LCAweDllLDB4OWYs MHg4YSwweDVlLDB4ZWYsMHhhZik7CisjZW5kaWYKKworREVGVU4gKCJ3MzItYmFkZ2UiLAorICAg ICAgIEZ3MzJfYmFkZ2UsCisgICAgICAgU3czMl9iYWRnZSwKKyAgICAgICAzLCAzLCAwLAorICAg ICAgIGRvYzogLyogRGlzcGxheSBhIHRhc2tiYXIgaWNvbiBvdmVybGF5IGltYWdlIG9uIHRoZSBz ZWxlY3RlZCBmcmFtZS4KK0JBREdFIGlzIGEgc3RyaW5nLiAgSWYgQkFER0UgaXMgbmlsLCByZW1v dmUgdGhlIG92ZXJsYXkuICBEbyBub3RoaW5nIGlmCitXaW5kb3dzIGRvZXMgbm90IHN1cHBvcnQg dGhlIElUYXNrYmFyTGlzdDMgaW50ZXJmYWNlIGFuZCByZXR1cm4gbmlsLAorb3RoZXJ3aXNlIHJl dHVybiB0LiAgRG8gbm90aGluZyBpZiB0aGUgc2VsZWN0ZWQgZnJhbWUgaXMgbm90ICh5ZXQpCith c3NvY2lhdGVkIHdpdGggYSB3aW5kb3cgaGFuZGxlLiAgQkFDS0dST1VORCBhbmQgRk9SRUdST1VO RCBhcmUgUkdCCit0cmlwbGV0IHN0cmluZ3Mgb2YgdGhlIGZvcm0gXCIjUlJHR0JCXCIuICAqLykK KyAgKExpc3BfT2JqZWN0IGJhZGdlLCBMaXNwX09iamVjdCBiYWNrZ3JvdW5kLCBMaXNwX09iamVj dCBmb3JlZ3JvdW5kKQoreworICBzdHJ1Y3QgZnJhbWUgKnNmID0gU0VMRUNURURfRlJBTUUgKCk7 CisgIEhXTkQgaHduZCA9IE5VTEw7CisKKyAgaWYgKEZSQU1FX1czMl9QIChzZikgJiYgRlJBTUVf TElWRV9QIChzZikpCisgICAgaHduZCA9IEZSQU1FX1czMl9XSU5ET1cgKHNmKTsKKworICBpZiAo aHduZCA9PSBOVUxMKQorICAgIHJldHVybiBRbmlsOworCisgIENvSW5pdGlhbGl6ZSAoTlVMTCk7 CisgIElUYXNrYmFyTGlzdDMgKnRhc2tfYmFyX2xpc3QgPSBOVUxMOworICBIUkVTVUxUIHIgPSBD b0NyZWF0ZUluc3RhbmNlKCZDTFNJRF9UYXNrYmFyTGlzdCwKKwkJCSAgICAgICBOVUxMLAorCQkJ ICAgICAgIENMU0NUWF9JTlBST0NfU0VSVkVSLAorCQkJICAgICAgICZJSURfSVRhc2tiYXJMaXN0 MywKKwkJCSAgICAgICAodm9pZCAqKikmdGFza19iYXJfbGlzdCk7CisgIGlmIChyICE9IFNfT0sp CisgICAgcmV0dXJuIFFuaWw7CisKKyAgaWYgKCFOSUxQIChiYWRnZSkgJiYgU1RSSU5HUCAoYmFk Z2UpCisgICAgICAmJiBTVFJJTkdQIChiYWNrZ3JvdW5kKSAmJiBTVFJJTkdQIChmb3JlZ3JvdW5k KSkKKyAgICB7CisgICAgICBDT0xPUlJFRiBiZ19yZ2I7CisgICAgICBDT0xPUlJFRiBmZ19yZ2I7 CisgICAgICB1bnNpZ25lZCBzaG9ydCByLCBnLCBiOworICAgICAgaWYgKHBhcnNlX2NvbG9yX3Nw ZWMgKFNTREFUQSAoYmFja2dyb3VuZCksICZyLCAmZywgJmIpKQorCWJnX3JnYiA9IFJHQiAociwg YiwgYik7CisgICAgICBlbHNlCisJcmV0dXJuIFFuaWw7CisgICAgICBpZiAocGFyc2VfY29sb3Jf c3BlYyAoU1NEQVRBIChmb3JlZ3JvdW5kKSwgJnIsICZnLCAmYikpCisJZmdfcmdiID0gUkdCIChy LCBiLCBiKTsKKyAgICAgIGVsc2UKKwlyZXR1cm4gUW5pbDsKKworICAgICAgLyogUHJlcGFyZSBh IHN0cmluZyBmb3IgZHJhd2luZyBhbmQgYXMgYWx0LXRleHQuICAqLworICAgICAgTGlzcF9PYmpl Y3QgYmFkZ2VfdXRmOCA9IEVOQ09ERV9VVEZfOCAoYmFkZ2UpOworICAgICAgaW50IHdpZGVfbGVu ID0gcE11bHRpQnl0ZVRvV2lkZUNoYXIgKENQX1VURjgsIDAsCisJCQkJCSAgIFNTREFUQSAoYmFk Z2VfdXRmOCksCisJCQkJCSAgIC0xLCBOVUxMLCAwKTsKKyAgICAgIHdjaGFyX3QgKmJhZGdlX3cg PSBhbGxvY2EgKCh3aWRlX2xlbiArIDEpICogc2l6ZW9mICh3Y2hhcl90KSk7CisgICAgICBwTXVs dGlCeXRlVG9XaWRlQ2hhciAoQ1BfVVRGOCwgMCwgU1NEQVRBIChiYWRnZV91dGY4KSwgLTEsCisJ CQkgICAgKExQV1NUUikgYmFkZ2VfdywKKwkJCSAgICB3aWRlX2xlbik7CisKKyAgICAgIC8qIFVz ZSB0aGUgc21hbGwgaWNvbiBzaXplIFdpbmRvd3Mgc3VnZ2VzdHMgdG8gbm90IGhhcmQgY29kZSAx NngxNi4gICovCisgICAgICBpbnQgaWNvbl93aWR0aCA9IEdldFN5c3RlbU1ldHJpY3MgKFNNX0NY U01JQ09OKTsKKyAgICAgIGludCBpY29uX2hlaWdodCA9IEdldFN5c3RlbU1ldHJpY3MgKFNNX0NY U01JQ09OKTsKKworICAgICAgSERDIGh3bmRfZGMgPSBHZXREQyAoaHduZCk7CisgICAgICBIREMg ZGMgPSBDcmVhdGVDb21wYXRpYmxlREMgKGh3bmRfZGMpOworCisgICAgICBCSVRNQVBWNUhFQURF UiBiaTsKKyAgICAgIG1lbXNldCAoJmJpLCAwLCBzaXplb2YgKGJpKSk7CisgICAgICBiaS5iVjVT aXplID0gc2l6ZW9mIChiaSk7CisgICAgICBiaS5iVjVXaWR0aCA9IGljb25fd2lkdGg7CisgICAg ICBiaS5iVjVIZWlnaHQgPSAtaWNvbl9oZWlnaHQ7IC8qIE5lZ2F0aXZlIGZvciBhIHRvcC1kb3du IERJQi4gICovCisgICAgICBiaS5iVjVQbGFuZXMgPSAxOworICAgICAgYmkuYlY1Qml0Q291bnQg PSAzMjsKKyAgICAgIGJpLmJWNUNvbXByZXNzaW9uID0gQklfQklURklFTERTOyAgLyogRW5hYmxl IHRoZSBtYXNrcyBiZWxvdy4gICovCisgICAgICBiaS5iVjVSZWRNYXNrICAgPSAgMHgwMEZGMDAw MDsKKyAgICAgIGJpLmJWNUdyZWVuTWFzayA9ICAweDAwMDBGRjAwOworICAgICAgYmkuYlY1Qmx1 ZU1hc2sgID0gIDB4MDAwMDAwRkY7CisgICAgICBiaS5iVjVBbHBoYU1hc2sgPSAgMHhGRjAwMDAw MDsKKworICAgICAgRFdPUkQgKmJpdG1hcF9waXhlbHM7CisgICAgICBIQklUTUFQIGJpdG1hcCA9 IENyZWF0ZURJQlNlY3Rpb24gKGRjLCAoQklUTUFQSU5GTyAqKSAmYmksCisJCQkJCSBESUJfUkdC X0NPTE9SUywKKwkJCQkJICh2b2lkICoqKSAmYml0bWFwX3BpeGVscywKKwkJCQkJIE5VTEwsIDAp OworICAgICAgSEdESU9CSiBvbGRfYml0bWFwID0gU2VsZWN0T2JqZWN0KGRjLCBiaXRtYXApOwor CisgICAgICAvKiBEcmF3IGEgY2lyY2xlIGZpbGxlZCB3aXRoIGJnLiAgKi8KKyAgICAgIEhCUlVT SCBiZ19icnVzaCA9IENyZWF0ZVNvbGlkQnJ1c2ggKGJnX3JnYik7CisgICAgICBIR0RJT0JKIG9s ZF9icnVzaCA9IFNlbGVjdE9iamVjdCAoZGMsIGJnX2JydXNoKTsKKyAgICAgIEVsbGlwc2UgKGRj LCAwLCAwLCBpY29uX3dpZHRoLCBpY29uX2hlaWdodCk7CisgICAgICBTZWxlY3RPYmplY3QgKGRj LCBvbGRfYnJ1c2gpOworICAgICAgRGVsZXRlT2JqZWN0IChiZ19icnVzaCk7CisKKyAgICAgIC8q IERlcml2ZSBhIGZvbnQgc2NhbGVkIHRvIGZpdCB0aGUgaWNvbi4gIEZpcnN0IGZpbmQgdGhlIHN5 c3RlbSdzCisJIGJhc2UgZm9udC4gIFRoZW4gc2NhbGUgaXQgdG8gZml0IGljb25faGVpZ2h0LiAg Ki8KKyAgICAgIEhGT05UIGJhc2VfZm9udDsKKyAgICAgIEJPT0wgY2xlYW5fdXBfYmFzZV9mb250 ID0gRkFMU0U7CisgICAgICBpZiAoc3lzdGVtX3BhcmFtZXRlcnNfaW5mb193X2ZuKQorCXsKKwkg IE5PTkNMSUVOVE1FVFJJQ1MgbmNtOworCSAgbWVtc2V0ICgmbmNtLCAwLCBzaXplb2YgKG5jbSkp OworCSAgbmNtLmNiU2l6ZSA9IHNpemVvZiAobmNtKTsKKwkgIFN5c3RlbVBhcmFtZXRlcnNJbmZv IChTUElfR0VUTk9OQ0xJRU5UTUVUUklDUywgc2l6ZW9mIChuY20pLCAmbmNtLCAwKTsKKwkgIGJh c2VfZm9udCA9IENyZWF0ZUZvbnRJbmRpcmVjdCAoJm5jbS5sZlNtQ2FwdGlvbkZvbnQpOworCSAg Y2xlYW5fdXBfYmFzZV9mb250ID0gVFJVRTsKKwl9CisgICAgICBlbHNlCisJYmFzZV9mb250ID0g KEhGT05UKSBHZXRTdG9ja09iamVjdCAoREVGQVVMVF9HVUlfRk9OVCk7CisgICAgICBpZiAoY2xl YW5fdXBfYmFzZV9mb250KQorCURlbGV0ZU9iamVjdCAoYmFzZV9mb250KTsKKworICAgICAgTE9H Rk9OVCBsZjsKKyAgICAgIEdldE9iamVjdCAoYmFzZV9mb250LCBzaXplb2YgKGxmKSwgJmxmKTsK KyAgICAgIGxmLmxmV2VpZ2h0ID0gRldfQk9MRDsKKyAgICAgIGxmLmxmT3V0UHJlY2lzaW9uID0g T1VUX09VVExJTkVfUFJFQ0lTOworICAgICAgLyogQ2xlYXJUeXBlIHF1YWxpdHkgbmVlZHMgb3Bx YXVlLCBidXQgd2UgZHJhdyB0cmFuc3BhcmVudC4gICovCisgICAgICBsZi5sZlF1YWxpdHkgPSBB TlRJQUxJQVNFRF9RVUFMSVRZOworICAgICAgLyogTmVnYXRpdmUgbGZIZWlnaHQgaW5kaWNhdGVz IHBpeGVsIHVuaXRzIHZzLiBwb3NpdGl2ZSBpbiBwb2ludHMuCisJIFVzZSB0aGUgTE9HUElYRUxT WSBweC9pbiBvZiB0aGUgcHJpbWFyeSBtb25pdG9yLiAgKi8KKyAgICAgIGxmLmxmSGVpZ2h0ID0g LU11bERpdihpY29uX2hlaWdodCAvIDIsIC8qIEZpdCB+MyBjaGFycy4gICovCisJCQkgICAgNzIs CisJCQkgICAgR2V0RGV2aWNlQ2FwcyAoR2V0REMgKE5VTEwpLCBMT0dQSVhFTFNZKSk7CisgICAg ICAvKiBFbnN1cmUgbGZIZWlnaHQgcGl4ZWwgaW50ZXJwcmV0YXRpb24uICAqLworICAgICAgaW50 IG9sZF9tYXBfbW9kZSA9IFNldE1hcE1vZGUgKGRjLCBNTV9URVhUKTsKKyAgICAgIEhGT05UIHNj YWxlZF9mb250ID0gQ3JlYXRlRm9udEluZGlyZWN0ICgmbGYpOworICAgICAgSEdESU9CSiBvbGRf Zm9udCA9IFNlbGVjdE9iamVjdCAoZGMsIHNjYWxlZF9mb250KTsKKyAgICAgIFNldE1hcE1vZGUg KGRjLCBvbGRfbWFwX21vZGUpOworCisgICAgICAvKiBEcmF3IGJhZGdlIHRleHQuICAqLworICAg ICAgU2V0QmtNb2RlIChkYywgVFJBTlNQQVJFTlQpOworICAgICAgU2V0VGV4dENvbG9yIChkYywg ZmdfcmdiKTsKKyAgICAgIFJFQ1QgcmVjdDsKKyAgICAgIHJlY3QubGVmdCA9IHJlY3QudG9wID0g MDsKKyAgICAgIHJlY3QucmlnaHQgPSBpY29uX3dpZHRoOworICAgICAgcmVjdC5ib3R0b20gPSBp Y29uX2hlaWdodDsKKyAgICAgIERyYXdUZXh0IChkYywgU1NEQVRBIChiYWRnZV91dGY4KSwKKwkJ LTEsIC8qIEluZGljYXRlIG51bGwtdGVybWluYXRlZCBzdHJpbmcuICAqLworCQkmcmVjdCwKKwkJ RFRfQ0VOVEVSIHwgRFRfVkNFTlRFUiB8IERUX1NJTkdMRUxJTkUgfCBEVF9OT0NMSVApOworICAg ICAgU2VsZWN0T2JqZWN0IChkYywgb2xkX2ZvbnQpOworICAgICAgRGVsZXRlT2JqZWN0IChzY2Fs ZWRfZm9udCk7CisKKyAgICAgIC8qIE1ha2UgdGhlIGNpcmNsZSBhbmQgaXRzIHRleHQgb3BhcXVl IGJ5IHNldHRpbmcgdGhlIGFscGhhCisJIGNoYW5uZWwgb24gZWFjaCBwaXhlbCBmYWxsaW5nIHdp dGhpbiB0aGUgY2lyY2xlLiAgKi8KKyAgICAgIGludCBjaXJjbGVfY2VudGVyX3ggPSBpY29uX3dp ZHRoIC8gMjsKKyAgICAgIGludCBjaXJjbGVfY2VudGVyX3kgPSBpY29uX2hlaWdodCAvIDI7Cisg ICAgICBpbnQgY2lyY2xlX3JhZGl1cyA9IChpY29uX3dpZHRoIDwgaWNvbl9oZWlnaHQKKwkJCSAg ID8gaWNvbl93aWR0aAorCQkJICAgOiBpY29uX2hlaWdodCkgLyAyIC0gMjsKKyAgICAgIGludCBj aXJjbGVfcmFkaXVzX3NxID0gY2lyY2xlX3JhZGl1cyAqIGNpcmNsZV9yYWRpdXM7CisgICAgICBE V09SRCAqcGl4ZWw7CisgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGljb25faGVpZ2h0OyArK3kp CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgaWNvbl93aWR0aDsgKyt4KQorCSAgeworICAg ICAgICAgICAgaW50IGR4ID0geCAtIGNpcmNsZV9jZW50ZXJfeDsKKyAgICAgICAgICAgIGludCBk eSA9IHkgLSBjaXJjbGVfY2VudGVyX3k7CisgICAgICAgICAgICBpZiAoZHggKiBkeCArIGR5ICog ZHkgPD0gY2lyY2xlX3JhZGl1c19zcSkKKwkgICAgICB7CisJCSAgcGl4ZWwgPSBiaXRtYXBfcGl4 ZWxzICsgKHkgKiBpY29uX3dpZHRoICsgeCk7CisJCSAgKnBpeGVsIHw9IDB4ZmYwMDAwMDA7IC8q IEZsaXAgdGhlIDB4QUFSUkdHQkIgYWxwaGEgY2hhbm5lbC4gICovCisJICAgICAgfQorCSAgfQor CisgICAgICAvKiBEdW1teSBtb25vY2hyb21lIGJpdG1hcCBtYXNrLCBpZ25vcmVkIHdoZW4gdGhl IGNvbG9yIGJpdG1hcCBoYXMKKwkgYW4gYWxwaGEgY2hhbm5lbCwgYnV0IG5lZWRlZCB0byBzYXRp c2Z5IENyZWF0ZUljb25JbmRpcmVjdC4gICovCisgICAgICBIQklUTUFQIG1hc2tfYml0bWFwID0g Q3JlYXRlQml0bWFwIChpY29uX3dpZHRoLCBpY29uX2hlaWdodCwgMSwgMSwgTlVMTCk7CisKKyAg ICAgIC8qIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dzL3dpbjMyL2Fw aS93aW51c2VyL25mLXdpbnVzZXItY3JlYXRlaWNvbmluZGlyZWN0CisJIGhibU1hc2sgYW5kIGhi bUNvbG9yIG1lbWJlcnMgb2YgdGhlIElDT05JTkZPIHN0cnVjdHVyZSBzaG91bGQKKwkgbm90IGFs cmVhZHkgYmUgc2VsZWN0ZWQgaW50byBhIGRldmljZSBjb250ZXh0LiAgKi8KKyAgICAgIFNlbGVj dE9iamVjdCAoZGMsIG9sZF9iaXRtYXApOworCisgICAgICBJQ09OSU5GTyBpY29uX2luZm87Cisg ICAgICBtZW1zZXQgKCZpY29uX2luZm8sIDAsIHNpemVvZiAoaWNvbl9pbmZvKSk7CisgICAgICBp Y29uX2luZm8uZkljb24gPSBUUlVFOworICAgICAgaWNvbl9pbmZvLmhibU1hc2sgPSBtYXNrX2Jp dG1hcDsKKyAgICAgIGljb25faW5mby5oYm1Db2xvciA9IGJpdG1hcDsKKworICAgICAgSElDT04g aWNvbiA9IENyZWF0ZUljb25JbmRpcmVjdCAoJmljb25faW5mbyk7CisgICAgICB0YXNrX2Jhcl9s aXN0LT5scFZ0YmwtPlNldE92ZXJsYXlJY29uICh0YXNrX2Jhcl9saXN0LCBod25kLCBpY29uLCBi YWRnZV93KTsKKworICAgICAgRGVzdHJveUljb24gKGljb24pOworICAgICAgRGVsZXRlT2JqZWN0 IChtYXNrX2JpdG1hcCk7CisgICAgICBEZWxldGVPYmplY3QgKGJpdG1hcCk7CisgICAgICBEZWxl dGVEQyAoZGMpOworICAgICAgUmVsZWFzZURDIChod25kLCBod25kX2RjKTsKKyAgICB9CisgIGVs c2UKKyAgICB0YXNrX2Jhcl9saXN0LT5scFZ0YmwtPlNldE92ZXJsYXlJY29uICh0YXNrX2Jhcl9s aXN0LCBod25kLCBOVUxMLCBOVUxMKTsKKworICB0YXNrX2Jhcl9saXN0LT5scFZ0YmwtPlJlbGVh c2UodGFza19iYXJfbGlzdCk7CisgIHJldHVybiBRdDsKK30KKworREVGVU4gKCJ3MzItcmVxdWVz dC11c2VyLWF0dGVudGlvbiIsCisgICAgICAgRnczMl9yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uLAor ICAgICAgIFN3MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbiwKKyAgICAgICAxLCAxLCAwLAorICAg ICAgIGRvYzogLyogRmxhc2ggdGhlIHNlbGVjdGVkIGZyYW1lJ3MgdGFza2JhciBpY29uIGFuZC9v ciBpdHMgd2luZG93LgorSWYgVVJHRU5DWSBpcyBuaWwsIGNhbmNlbCB0aGUgcmVxdWVzdCwgaWYg YW55LiAgSWYgVVJHRU5DWSBpcyB0aGUgc3ltYm9sCitgaW5mb3JtYXRpb25hbCcsIGZsYXNoIHRo ZSB0YXNrYmFyIGljb24uICBJZiBVUkdFTkNZIGlzIHRoZSBzeW1ib2wKK2Bjcml0aWNhbCcsIGZs YXNoIHRoZSB0YXNrYmFyIGljb24gYW5kIHRoZSBmcmFtZS4gIFdpbmRvd3Mgc3RvcHMKK2ZsYXNo aW5nIGlmIHRoZSB1c2VyIGZvY3VzZXMgdGhlIGZyYW1lLiAgRG8gbm90aGluZyBpZiBXaW5kb3dz IGRvZXMgbm90CitzdXBwb3J0IEZsYXNoV2luZG93RXggYW5kIHJldHVybiBuaWwsIG90aGVyd2lz ZSByZXR1cm4gdC4gIERvIG5vdGhpbmcgaWYKK3RoZSBmcmFtZSBpcyBub3QgKHlldCkgYXNzb2Np YXRlZCB3aXRoIGEgd2luZG93IGhhbmRsZS4gICovKQorICAoTGlzcF9PYmplY3QgdXJnZW5jeSkK K3sKKyAgaWYgKGZsYXNoX3dpbmRvd19leF9mbiA9PSBOVUxMKQorICAgIHJldHVybiBRbmlsOwor CisgIHN0cnVjdCBmcmFtZSAqc2YgPSBTRUxFQ1RFRF9GUkFNRSAoKTsKKyAgSFdORCBod25kID0g TlVMTDsKKworICBpZiAoRlJBTUVfVzMyX1AgKHNmKSAmJiBGUkFNRV9MSVZFX1AgKHNmKSkKKyAg ICBod25kID0gRlJBTUVfVzMyX1dJTkRPVyAoc2YpOworCisgIGlmIChod25kID09IE5VTEwpCisg ICAgcmV0dXJuIFFuaWw7CisKKyAgRkxBU0hXSU5GTyBmbGFzaF9pbmZvOworICBmbGFzaF9pbmZv LmNiU2l6ZSA9IHNpemVvZihmbGFzaF9pbmZvKTsKKyAgZmxhc2hfaW5mby51Q291bnQgPSAwOwor ICBmbGFzaF9pbmZvLmR3VGltZW91dCA9IDA7CisgIGZsYXNoX2luZm8uaHduZCA9IGh3bmQ7Cisg IGlmICghTklMUCAodXJnZW5jeSkgJiYgU1lNQk9MUCAodXJnZW5jeSkpCisgICAgeworICAgICAg LyogVGhlIGludGVuZGVkIGNhbGxlciwgJ3N5c3RlbS10YXNrYmFyLWF0dGVudGlvbicsIGhhcyBh bgorCSBvcHRpb25hbCB0aW1lciB0byBjbGVhciB0aGUgYXR0ZW50aW9uIGluZGljYXRvciBzbyB0 aGlzIHdpbGwKKwkgZmxhc2ggdW50aWwgY2xlYXJlZCB2aWEgdGhlIHRpbWVyLCBvciB0aGUgd2lu ZG93IGNvbWVzIHRvIHRoZQorCSBmb3JlZ3JvdW5kLiAgRm9yIGluZm9ybWF0aW9uYWwgYXR0ZW50 aW9uLCBmbGFzaCB0aGUgdHJheSBpY29uLgorCSBGb3IgY3JpdGljYWwgYXR0ZW50aW9uLCBmbGFz aCB0aGUgdHJheSBpY29uIGFuZCB0aGUgd2luZG93LiAgKi8KKyAgICAgIGlmIChFUSAodXJnZW5j eSwgUWluZm9ybWF0aW9uYWwpKQorCWZsYXNoX2luZm8uZHdGbGFncyA9IEZMQVNIV19UUkFZIHwg RkxBU0hXX1RJTUVSTk9GRzsKKyAgICAgIGVsc2UgaWYgKEVRICh1cmdlbmN5LCBRY3JpdGljYWwp KQorCWZsYXNoX2luZm8uZHdGbGFncyA9IEZMQVNIV19BTEwgfCBGTEFTSFdfVElNRVJOT0ZHOwor ICAgIH0KKyAgZWxzZQorICAgIGZsYXNoX2luZm8uZHdGbGFncyA9IEZMQVNIV19TVE9QOworCisg IGZsYXNoX3dpbmRvd19leF9mbiAoJmZsYXNoX2luZm8pOworICByZXR1cm4gUXQ7Cit9CisKK0RF RlVOICgidzMyLXByb2dyZXNzLWluZGljYXRvciIsCisgICAgICAgRnczMl9wcm9ncmVzc19pbmRp Y2F0b3IsCisgICAgICAgU3czMl9wcm9ncmVzc19pbmRpY2F0b3IsCisgICAgICAgMSwgMSwgMCwK KyAgICAgICBkb2M6IC8qIFNob3cgYSBwcm9ncmVzcyBiYXIgb24gdGhlIHNlbGVjdGVkIGZyYW1l J3MgdGFza2JhciBpY29uLgorUFJPR1JFU1MgaXMgYSBmbG9hdCBpbiB0aGUgcmFuZ2UgMC4wIHRv IDEuMC4gIElmIFBST0dSRVNTIGlzIG5pbCwgcmVtb3ZlCit0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9y LiAgRG8gbm90aGluZyBpZiBXaW5kb3dzIGRvZXMgbm90IHN1cHBvcnQgdGhlCitJVGFza2Jhckxp c3QzIGludGVyZmFjZSBhbmQgcmV0dXJuIG5pbCwgb3RoZXJ3aXNlIHJldHVybiB0LiAgRG8gbm90 aGluZworaWYgdGhlIHNlbGVjdGVkIGZyYW1lIGlzIG5vdCAoeWV0KSBhc3NvY2lhdGVkIHdpdGgg YSB3aW5kb3cgaGFuZGxlICAqLykKKyAgKExpc3BfT2JqZWN0IHByb2dyZXNzKQoreworICBzdHJ1 Y3QgZnJhbWUgKnNmID0gU0VMRUNURURfRlJBTUUgKCk7CisgIEhXTkQgaHduZCA9IE5VTEw7CisK KyAgaWYgKEZSQU1FX1czMl9QIChzZikgJiYgRlJBTUVfTElWRV9QIChzZikpCisgICAgaHduZCA9 IEZSQU1FX1czMl9XSU5ET1cgKHNmKTsKKworICBpZiAoaHduZCA9PSBOVUxMKQorICAgIHJldHVy biBRbmlsOworCisgIENvSW5pdGlhbGl6ZSAoTlVMTCk7CisgIElUYXNrYmFyTGlzdDMgKnRhc2tf YmFyX2xpc3QgPSBOVUxMOworICBIUkVTVUxUIHIgPSBDb0NyZWF0ZUluc3RhbmNlKCZDTFNJRF9U YXNrYmFyTGlzdCwKKwkJCSAgICAgICBOVUxMLAorCQkJICAgICAgIENMU0NUWF9JTlBST0NfU0VS VkVSLAorCQkJICAgICAgICZJSURfSVRhc2tiYXJMaXN0MywKKwkJCSAgICAgICAodm9pZCAqKikm dGFza19iYXJfbGlzdCk7CisgIGlmIChyICE9IFNfT0spCisgICAgcmV0dXJuIFFuaWw7CisKKyAg LyogU2NhbGUgdGFzayBiYXIgcHJvZ3Jlc3MgZnJvbSAwLjAtMS4wIHRvIDAtMTAwLiAgKi8KKyAg VUxPTkdMT05HIGFkal9wcm9ncmVzcyA9IDA7CisgIGlmICghTklMUCAocHJvZ3Jlc3MpICYmIEZM T0FUUCAocHJvZ3Jlc3MpKQorICAgICAgYWRqX3Byb2dyZXNzID0gKFVMT05HTE9ORykgKDEwMC4w ICoKKwkJCQkgIFhGTE9BVF9EQVRBIChwcm9ncmVzcykpOworICBpZiAoYWRqX3Byb2dyZXNzID4g MCkKKyAgICB7CisgICAgICB0YXNrX2Jhcl9saXN0LT5scFZ0YmwtPlNldFByb2dyZXNzU3RhdGUg KHRhc2tfYmFyX2xpc3QsCisJCQkJCSAgICAgICBod25kLCBUQlBGX05PUk1BTCk7CisgICAgICB0 YXNrX2Jhcl9saXN0LT5scFZ0YmwtPlNldFByb2dyZXNzVmFsdWUgKHRhc2tfYmFyX2xpc3QsCisJ CQkJCSAgICAgICBod25kLCBhZGpfcHJvZ3Jlc3MsIDEwMCk7CisgICAgfQorICBlbHNlCisgICAg eworICAgICAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5TZXRQcm9ncmVzc1N0YXRlICh0YXNrX2Jh cl9saXN0LAorCQkJCQkgICAgICAgaHduZCwgVEJQRl9OT1BST0dSRVNTKTsKKyAgICB9CisKKyAg dGFza19iYXJfbGlzdC0+bHBWdGJsLT5SZWxlYXNlKHRhc2tfYmFyX2xpc3QpOworICByZXR1cm4g UXQ7Cit9CisKKyNlbmRpZiAvKiBXSU5ET1dTTlQgKi8KKwogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAJCQkg ICAgSW5pdGlhbGl6YXRpb24KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTExNTA5LDYgKzExODI0LDE1 IEBAIHN5bXNfb2ZfdzMyZm5zICh2b2lkKQogICBERUZTWU0gKFFjYXBzbG9jaywgImNhcHNsb2Nr Iik7CiAgIERFRlNZTSAoUWtwX251bWxvY2ssICJrcC1udW1sb2NrIik7CiAgIERFRlNZTSAoUXNj cm9sbCwgInNjcm9sbCIpOworCisgICNpZmRlZiBXSU5ET1dTTlQKKyAgLyogVGFza2JhciBpbmRp Y2F0b3JzIHN1cHBvcnQuICAqLworICBkZWZzdWJyICgmU3czMl9iYWRnZSk7CisgIGRlZnN1YnIg KCZTdzMyX3Byb2dyZXNzX2luZGljYXRvcik7CisgIGRlZnN1YnIgKCZTdzMyX3JlcXVlc3RfdXNl cl9hdHRlbnRpb24pOworICBERUZTWU0gKFFpbmZvcm1hdGlvbmFsLCAiaW5mb3JtYXRpb25hbCIp OworICBERUZTWU0gKFFjcml0aWNhbCwgImNyaXRpY2FsIik7CisgICNlbmRpZgogfQogCiAMCkBA IC0xMTc5Nyw2ICsxMjEyMSw5IEBAIGdsb2JhbHNfb2ZfdzMyZm5zICh2b2lkKQogICBTZXRHZXN0 dXJlQ29uZmlnX2ZuCiAgICAgPSAoU2V0R2VzdHVyZUNvbmZpZ19wcm9jKSBnZXRfcHJvY19hZGRy ICh1c2VyMzJfbGliLAogCQkJCQkgICAgICJTZXRHZXN0dXJlQ29uZmlnIik7CisgIGZsYXNoX3dp bmRvd19leF9mbgorICAgID0gKEZsYXNoV2luZG93RXhfUHJvYykgZ2V0X3Byb2NfYWRkciAodXNl cjMyX2xpYiwKKwkJCQkJICAiRmxhc2hXaW5kb3dFeCIpOwogCiAgIHsKICAgICBITU9EVUxFIGlt bTMyX2xpYiA9IEdldE1vZHVsZUhhbmRsZSAoImltbTMyLmRsbCIpOwotLSAKMi40Ny4xCgo= --000000000000473a4d064674ef28--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 21 Dec 2025 08:53:24 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Dec 21 03:53:24 2025 Received: from localhost ([127.0.0.1]:33320 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vXFBs-0004by-43 for submit <at> debbugs.gnu.org; Sun, 21 Dec 2025 03:53:24 -0500 Received: from mout.gmx.net ([212.227.17.20]:53841) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>) id 1vXFBq-0004bg-Gj for 79859 <at> debbugs.gnu.org; Sun, 21 Dec 2025 03:53:23 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1766307187; x=1766911987; i=michael.albinus@HIDDEN; bh=J1qT8gQJpOEQr+mhRZKoKHL1wfww7OFLwVoinuuUVAc=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=DFmoj0sVYnmqOn9BTJ5/2ml2n4sPC0jEzezrugiuPXrwz23chmxo3N6/UV1t9RUZ mu96JvjO4Y2sx23ytQUS1i6bW+FNWejsmnv0521qAGUftR5sJU717chet6eudcPa8 lYj1uW5XyCg7yYYwbF579GT10zreItgOc3BJI9zwb94LqnmuagdHLffWKC/otP5dm dvCR1AhKcAzV9RyfnBcCta/94F3AUxTH8eXYJNsy4xdSBLqOfPXyO1T0x9HMnVFPw h3tHpVBzUfRgpWCdFAruwx+sHtaLUPhsB8QTrXjQ6gwJEpDIHGHvus7RHTyzWM7Kr vjhACS4D++u49tU9tQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.37.61]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MUXpQ-1vOTj935I8-00UHeG; Sun, 21 Dec 2025 09:53:07 +0100 From: Michael Albinus <michael.albinus@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support In-Reply-To: <CAN+1HbrR3tc+r84e71VbCksUqgWh_zxFoSjNSZan2DbAn3E9rQ@HIDDEN> References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86ikedavlh.fsf@HIDDEN> <CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN> <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN> <jwv7buss9jh.fsf-monnier+emacs@HIDDEN> <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN> <jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN> <CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN> <CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN> <jwvqzstjc9w.fsf-monnier+emacs@HIDDEN> <CAN+1HbqfpV7aDTRVxvqBkvA0AYJvPHmDYxzfc2xR5rYYD1dtBg@HIDDEN> <jwvy0n1hqyl.fsf-monnier+emacs@HIDDEN> <CAN+1HbrfokZqoYOuDEKWNVSSwZ-AkACtSM3FBoM=45i5DHFP=Q@HIDDEN> <jwv8qf0la6m.fsf-monnier+emacs@HIDDEN> <CAN+1HboxBTprW3zP9HrQmOCjySkaduR=wEv8CkO-Wj_+rY55Wg@HIDDEN> <87bjjtjyjp.fsf@HIDDEN> <CAN+1HbrgCjP4xDEd8cardzySO2WkC=bMVtX4mftaoe7ONsbWnw@HIDDEN> <jwvo6ntdmdo.fsf-monnier+emacs@HIDDEN> <CAN+1HbrFMvrT=+9wjckjbnR7dkgYe_+AcpSG+vRFA46M5sg2rA@HIDDEN> <CAN+1HbrR3tc+r84e71VbCksUqgWh_zxFoSjNSZan2DbAn3E9rQ@HIDDEN> Date: Sun, 21 Dec 2025 09:53:05 +0100 Message-ID: <871pkob4i6.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:uu9Kccc8HY6wawzG5Z+Oc9n34mt6oY9f9qyvy/Cn3ZNEs941NUX f7MbZ+Hy4gi22DHF8R9bgDhbw9yPT9/pYjBbP/c1cckmX9toiP2Vs/iFKDKUDhGI+pDPSmH sgBkCbcRGThTYd8Y1Maj5FiWwVk05a+xwoIBxhjXwX8Mr4MnXJwE9JuwtppqtNT/F4KDfqg 5pAI/XWRoWc/W5fnflJiQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:lorDyBmwD5Y=;AKSb0iockTrCzcZfexkOhIu+so9 RmVQB0oEwL2/h8NOnthh85AZ7wAeOvC2cBebnhQ2yTAkFx/pII0AcMu0xVaCdIlOMKpYzhrE/ 495EXWWxumA1drXz3fVtYR2sJDC7vtgREL1gWfJpn/i/acF1+Sf0yep6BccT305ygXsD4ADb+ DokJe61aEnpQ21XsaELIpM1E50J3vfrFQH7VPAkubmnOBKs4L0qyvFOkITZrQPexGHYs9iie2 tdJGTpgXudy/CMbBXK7cjgUk6i/dVF8zuMBHyjG2DJY7rNef9X7iCH1gmO6BqbGGjSnrW0zA7 /006QpR5DOp+lA7i5b0SzURzipb5398C+PFTK6e6aoXqWnpnuIxUmX1EKV3cZSvXHbnGlbPyp CrT+R219+q/BLCQUB5wS0jWKEXP/+uxATj3jTSyahKmtccrMM3X5uG78yTRX6PJ5RrOAzHyPC CeOKd1LsA3w7BIW2yIrLdzn4dA8VwycFZhAh9bOtZdx9UKDXGacueQbsPOQb0DguPg4WW3g8n 4rEdAq1ieFGnZdU+Q/9luOTYYCjMDSHIW3OmMCpl0h4miFkCc7e8HzBHYIjuCIIZ/kchPxkHH 4XJ2DvvUhlbX9yy3SVQAW4w3FIRkLD9k0wHFvVxiLLZja+DOB3i7gStHHTL1aLrBre+zvj80f gU/r0WI7YMMKiQlbI5Rqpr7fQT4hPblBvhi05/MhJLpT+H4JmTR/FP87DXzH4dZPYoUTqaaJr H5YnYdUQMeO4TIh12SJI33tDhJR/0adympASQzUiJdtMjLvyf+/qNbBkkoO14EAT2QTeWjBsT B+KhP8PMm66ojDY8Nd06tLYhLWgpd+Idt0we5cUEe1hG2Mn+O7rocKi0jhrRDV9BeSzQQGww3 7W0hajLoylUpDedBmqOL8dOVealBQR8mm7EhwuBrZo/JAtxTbXhzCkAZyNRf4j9mBC/d4a7kZ K2u2S5gfy/tE47gO7l4vv+Ff4302WphN6Y+EDuJMFcdhLqbMJPYg9dtJHPqQsdZ/arD/qhrpA z8pZDKijoCIhk0ynC9tv1+0tf1UuEKEp/lt++5iffKN2ygUj7SbU7p+Ty24rFKWAQ0sc3C+6d zWDROpCyBo44sUMzKPXgy+gqrRK4/kfefCP44CuSaKKmkqRQNZ6ImixTEhpyfDQ0Q/xyABri4 1PxqzPP9GKEIEW9cJ3gtHtIIUJFw/4DwXVfriTWB1jOiGDZrzkW00jMFQAOJeJoABEDyQy0dP wOsvk+5L5UEZIPcpCmwUP1rXGq4U3P5brMdRqdBBGwaNnB7ERLW12tjmT3nnr1Fr2xBsBfi2+ jMOqUvgSx6V+KtRdBRwlNfyVqSAKMqlASGkXQpbdAYkNJ8I6rdTMIUqaLNhFqX4k/ANIZsn/o XIKltUilho3OAblu1uC664hhEH4EgtySEhQMxWDKAsKeQhfRH1M2ntmJnmsBfyQss/g2BEJmr TQtR9DcEfwVFV1JF6gAzXmbhD8XC4e6/cUZuUd98RiP2jxnZ4wYGgfwnytL9J4lX+WM8SSQsY yT+G2H7eg84PAiUAypz7uEob/R+KQkTY2TA6VNp/UIdnHUShZLQoeKkkxmp2Nm1Yoe3/ophcr waCjj51sKJWUA95YPtjCLKxk0Q7kWKBAPDx9/vCNtxMQr2ZowYMZ9gDCxxXQ6w4GnupvyLwXm 4M7jWHzNdJiNOsT08XmBrib24UoM/MDCJkXBXra8kVozvu40HzhI/FAMjPGEen8pm8/fzRf48 COMTU/xdlIug7wIpMe/5anSvcXnNCEWWS0a+WKmvsbLIFWTHHHjV2sj5cvMEM/ci2cSh9utWS TtpG6BYHbPxp30fjJ5g1ts2B+yMcflnWc3lC/ker3W9crjWzb7XA3s8IdFf/6rFfaBdu6i17S 02dTR/OOjQsOQQg3fB3IarNyOPZbapDYSmaEjF6MMDD0lzHrItmuw90/EL2HX/7flEdxisE64 FkFeB82jlNlCK/nz9urwf3BE3tC6/GHdNa2/pY8OWM75NN8Ob0V8q9AEuI9byhs9cKGwumJdh 0+qLGkOm1q6FzEl6iOCnzV+ZrMT8rtnuuKGigrzxm0CEZn1IFbadLrb+UFj9TK+MeFIUgwhrm hxTFNq3LfJ4FwLsoK6YP/Ui1mSC+nYKiPD9v5CLGHXtm3ebmPatQWFD7Yk6kuBan6OkageDwI 1/R1WkEL9okuxZFyJ/ebI5c0C8uyw/nYNDTOA79gkZOtqthcrksGeeVowgkJLoTxA/bI88urQ 9upLfEjwefROaXwVziWGy3W/wy0FnyDzNZBCaMwJZFZaxyDBRMjw8AE/x6t+v/wVQ3eZQkLAm 7BWexJceFIGcYrI6bH+0SXbELHWKThSP/3z3HLnv8v9gNrab5hdlucAuYpPOSB8nvkVdmSqTi ewZXZAxhok3bJNdh27ub+5mVg/NolKvYgsutJhSdak32CKfyw2J8tQGlWlGDbS7mIOPWLFRL7 RpKPn/SSwfv/Uvhn5FmGEbqsL5gis3mz66zOV1aOjyEX55DGwfF1i9HDkp9/k5AViDQOoQU3m Zq/cKAaNBcIbpxKsLEvlFedZ10vALF7NOc6uH/6gstnYbIuZqYoX+m3Zt8Nm/IyjryeDp/0JP O4pIzGLKXtbHbR49oaZHuWlTPddtW8Xpue1cY8DyzsLL8WCoxQTJBzZN1TrSYs5EVuMGQhxp7 YXF1DSbpn2jdUBjXONs4PtbhcFuJZi+aj4DVuKRl6zjcwDtEk5ax9OUjUUgk4e51gLcNnbe4p XDx6jr/bOlXzp5d9PAkA5IyqmtB8xbq9MtTpCODHcWJ0MMfeTaZSneta44tiJPEx8A7NOo2TN E41GfN4lm+Rk7A4Qb7c/vVfdj+Q5FfdRXQsIpLEJFynLmOI34/4Za3Jgs62kIfeam/8c3R732 BXbjCOb+kTx1+HN348z4WKcqKuy3f5ZK3UyxoSGXtM+TxXIAwQs4adNSdorGez1IQSkaAi23R idGco54RPT9ol8n5lQH3e+uv1MQlQjliWx6/ie3VW1g5xEwlK/yyKV2ropJ3eucciuo6e8XTK Ngt1CNNQAILOTaY7fXIUBaA3ubZndufpnwZvRu4yp0F6/i094Rqqp+rXpvl1o+OoswDpj8nBh zeL1pfy9OBjN7xCILFtni2ObdGNGDkI5Ofi/i+wrZNd6eQFnYSZbY6ygM2Y9eNinB9sJtaoZR Stl/fq7oKVNZ0LUNzuWZLoNesX9Zz18NSx/9zp7xglV2OYsCq61bYN2XWW3kdhr8bkHK39DWw tfvBFWJzwDr5WoHI/qvbscnN4HBGkRetjQtIwkAzYri9K8r/vYrLmMvhf0dZ/Pu83IU1YbZ2v MqGbtOZ9z3zzg+hqnMdcVhfaCMBI3V10CyU6wE4+lenn7kNm+0F1VOeFS6oy1wqMTVax41KE+ jhZSew+8b7YPyeO7r0Vg4BU675aPAoJEAaLu99gWCh7XCQxMX6wmcDmhwH3pg2n+GBOvPCUCd v1ts6qT3rSiIItdPstEQSd6rPjZtnI9wRL9pForcxBwdRiEABXqY98EZb8mbAvs5gJpMnpls5 gfbZfxsm/scUa8tjruMMK+4+y1bCroMtg86eJTWh8619m25F/fPsicITE7E7/VNbmi2C7VtK7 D0lENwsJj8JiMTamTeIs6CGd6iZPnjkzucCBRX6Dd/RN2N/DsMly2SQ+WA+AFcHIgrlVe3kqR YrdQ9MWYqHjXxkUMragVxiK7OqG01ViU3SEywUPA+yZnuWYMD208DMzEi/T1aWLf29y+vA917 ctsOSL8pC3TDSCJvPWS7w9L0lKvFvDHunySIj5H8HEYUD3o/nmgC6krpZ6GUv8TToE4gjniuz un9ZpUaup83H8yxg7WYkJK838xmLKz+uSMUnC0eAUUu+7jfrOlDVsR7pPA6/P38X1LDHHO/RP elzQJrD/Ttwet16CZ8I96uc4OxzPPMwXUf8TWnhdza9J2XIZ3g5hsVjlwro1rGYrqEsh3Z6om z/xXvsvYJyWfUXIgPHFyjSph/foFltwXxFFrZHi2CYkkR5Wk1zQVityCbFzfrM1QFHvwFyUJD w0OFifo7rIldWoyfyyL5x/LbAOXjs1GHixtgeUwQLtuGftVGmS55724sUdfre+G/rFYHdu22n yg6F2LY47kkPzc4BZUqcBLwfqG5hAE2Ap0NQn4XHtNNc++SvqwytIBcxIgbgIP52IOPaW5Boi 1C2xS7zj6pLCr4tSQCzY8PCPf0PGBvnfytHrfdvK/w9UDiGrDJYyACzD4KmIvpQQdCrNxitYP aex1qREY7OsBVQgLtZ7ESo2ASn8jSBNmQMDL9K7sltNRjVT5QSuj+9n5KdAXrd0Py5F1vo0vy Atn/Fhx5khGgjt+Zt/n898PkvhW/g9gEvkqEzYWdoz1JLOMHSe64SHVbrAB8N1PjFdMY3gMKd lF1sD4Z07RbQuPvdSoVnY4DBj56fI5T+BYCZrPvTygkfPNm3iPluu/bOFkyPV+mkpwwgmgNgd rgzGDeZ89Av/gfpMTsR/BB31jtE7alyr0RHv6hNZzjXkm3wwcj3JUTOC2DLDo/IFKI7T6jilL iL9Vdamba0BxwL9RQPzePPII+8VLRo/lcHxJMtb0UPiEwJaljx8BATNKaF/DojwepMovhKw6h +uo3T+9leIIKbQsFMdtJ1V8aaT8AGBvgCX9PXLn/2uGZrtpLEOpntw+uQYp2meo8Wtroa5tKO AQB23hhLkITILods1EXgxppCxzFsGUAKbkn/qwp97XAJoWH3hlSnQX25Nw/picSFEBuNc8Ozy yuO5VeBcUeI1VxPCa2d9aZrcFqjVnxJ3axz6RZt5BvC22MFjCqFoTSva81VRj38kOTCsseBzO C6Q24whBAYnnbVDhx98IpVLssGIzTs4I4BY0Z1aF8wv5BNjSIcYMLbbor1ih4+zYr0UOpQ09X xKzUra9kKtzBB8qQbzpgasmdoHtLw1vu7j2BkFfLZH3WDnamTtPZMQSeEhV+v0Na6298RNodD pC50PC51o/bYhkmKN4XUBQcgrOEO+pLDFL7TtE9kx3aApip8MKSC1hoBSQrJwVnWkN4XaBhiy QEcFSj5+WINjPSJ1Ly+OX0n28kCP6dphxaRXODsT9MhTW7pktlaLnJwY+TEkr2xqtaF9xAbGG yjk7ApTKM4iI/hVs4V+GgD5Dy7tP7LCuGqXSecpV1knC4t6ITL15LucNjZNA== X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, Stefan Monnier <monnier@HIDDEN>, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) St=C3=A9phane Marks <shipmints@HIDDEN> writes: Hi St=C3=A9phane, > I'm good to go if Albinus is happy.=20 The patch is almost OK. I've tried to submit it, but it failed: --8<---------------cut here---------------start------------->8--- # git am ~/XXX Applying: System GUI taskbar and progress reporter hooks error: patch failed: etc/NEWS:3579 error: etc/NEWS: patch does not apply Patch failed at 0001 System GUI taskbar and progress reporter hooks hint: Use 'git am --show-current-patch=3Ddiff' to see the failed patch hint: When you have resolved this problem, run "git am --continue". hint: If you prefer to skip this patch, run "git am --skip" instead. hint: To restore the original branch and stop patching, run "git am --abort= ". hint: Disable this message with "git config set advice.mergeConflict false" --8<---------------cut here---------------end--------------->8--- Please rebase the patch on mster. And please add the bug number to the commit message. > I think I did want to demote the mode error to a warning. So one more > round.=20 We can do this, of course. But I would really prefer to commit the patch as-it-is. Otherwise, reviews of your further changes will be too expensive. Best regards, Michael.
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 20 Dec 2025 22:16:11 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Dec 20 17:16:11 2025 Received: from localhost ([127.0.0.1]:55451 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vX5FD-00051t-92 for submit <at> debbugs.gnu.org; Sat, 20 Dec 2025 17:16:11 -0500 Received: from mail-vs1-xe2c.google.com ([2607:f8b0:4864:20::e2c]:45555) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vX5F5-000511-SM for 79859 <at> debbugs.gnu.org; Sat, 20 Dec 2025 17:16:08 -0500 Received: by mail-vs1-xe2c.google.com with SMTP id ada2fe7eead31-5dbe6304b79so989818137.3 for <79859 <at> debbugs.gnu.org>; Sat, 20 Dec 2025 14:16:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766268958; x=1766873758; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=tVveO6fbzzrrxca2IZCbNvwD6IqmsYbEuY7TNmoPCLw=; b=REtxaB+40jvWyc5wsm4r83jtXE+1Z9R0h3p8pXT4aQvUTsoh5PUYKUg4A+rFH5VoE+ uvtoCj839dxgRUVKBV8kgH7Y4xf9o0WIrwzs9Vg/RB6Bg8zksfQM7oPdnUajLCc24Mwk IDuhIRMZXv2HCKqyP3YX7ek1VOyCckZfeT5LxOwpPoRvWwrllfn1We2BtB+VpYtiB5uI os+8MM/gDlFdKnDKH1zH0ZktGKqKhfyXsTSVJwfKoNxdwbflRwtXgkHni+rqHYYoCnib YQNSwWHwMh5RutRuZG7dyehxjL8C0sKD4nBlEabU5Jc63JhDviWfbj0hXQeZaAUCYduo 9mUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766268958; x=1766873758; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=tVveO6fbzzrrxca2IZCbNvwD6IqmsYbEuY7TNmoPCLw=; b=qak55/8aCxNPCVg55sobq1ymFnXl/VwcdKAHqfgr/v+t8OQdfX1qBbc8kHe4wjhObl oV8w2Kf/Ts/OUnB14b23pyTYnvKfn5YlbicBsPTm+vnTxJsVz8nAw9YcFJfcHLGoaWVz hATFpPsxg8kRtyNx54p4h6I/zSgrQkAvZgMLvFEGQbKeBoBOSz97KKpDesrnyr1Qk0k+ aDKHHvdzDxIhvmRv/5n4Yx3063W1ATonqEcNkYcmhJfIWn6k37gynl/yRIrk+0yqh8hs ZBNQFTY0b+UIhxhs03+0IOpfIO9sf//bRdJlxZgcnR1Js5/xNlTLe5OgkMFiQy31uDrJ wYiQ== X-Forwarded-Encrypted: i=1; AJvYcCXr7tXwEn9htOph8H/wDsRpxM3hagltq8d7mI9FXD+PZP/P8+RUpXy7DsKeYjnxlZV/ENMNcQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yz+lCeGqNeKx8+YFpO1hJ7BG7B7vKJEaNjueElWKQo3pg3fxewF FtKfPpvgHdIjSxRk4hdC+L751xP/dptgtCoarl7nrZnR3JZBDgoGUt/PXtWzh64N90jXXlSyJ/z QOAsys+K2ePbS9HVuKRGzaOYb4sIOPow= X-Gm-Gg: AY/fxX6E9fpXb8ch4z2473f3Q4+9lPpvOp0j8gCb6oDLLhuKmch5H/sar8Mq777014S vnh8RjWBuw+5D1lM7pv65oTOZ93z66PEl5cRHgyutUcAI27aU6z6rMZ+quR1HBBk0xH1yUw/HvU 4Ex9jhBZag0OtAjbn6Wlc8ydUDgmPcgN5ovaGxg2G9mcmqoae75Yl6ULBtWrCjPGjYaIZA8DDqC 2yLfxlGO+z9GOWL18S0uguKVghqr+f/7IC/F47yHsotZNviq9OQl0V8a7JblELYXZ+490gO1ATA Y+TfWyFXl2qdgkKVLtqiyKoZVz0= X-Google-Smtp-Source: AGHT+IGbfHl0Ywu4xeeRzWr/F0HdQAwcBg4Ruy3ShAzmTjh8i/MZ6M54wcfEH/HsHz3r2Hi6JmAAcxyIUkunQdmPL3A= X-Received: by 2002:a05:6102:2922:b0:59e:68dd:4167 with SMTP id ada2fe7eead31-5eb1a6171d7mr2020096137.7.1766268958008; Sat, 20 Dec 2025 14:15:58 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <86ikedavlh.fsf@HIDDEN> <CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN> <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN> <jwv7buss9jh.fsf-monnier+emacs@HIDDEN> <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN> <jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN> <CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN> <CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN> <jwvqzstjc9w.fsf-monnier+emacs@HIDDEN> <CAN+1HbqfpV7aDTRVxvqBkvA0AYJvPHmDYxzfc2xR5rYYD1dtBg@HIDDEN> <jwvy0n1hqyl.fsf-monnier+emacs@HIDDEN> <CAN+1HbrfokZqoYOuDEKWNVSSwZ-AkACtSM3FBoM=45i5DHFP=Q@HIDDEN> <jwv8qf0la6m.fsf-monnier+emacs@HIDDEN> <CAN+1HboxBTprW3zP9HrQmOCjySkaduR=wEv8CkO-Wj_+rY55Wg@HIDDEN> <87bjjtjyjp.fsf@HIDDEN> <CAN+1HbrgCjP4xDEd8cardzySO2WkC=bMVtX4mftaoe7ONsbWnw@HIDDEN> <jwvo6ntdmdo.fsf-monnier+emacs@HIDDEN> <CAN+1HbrFMvrT=+9wjckjbnR7dkgYe_+AcpSG+vRFA46M5sg2rA@HIDDEN> In-Reply-To: <CAN+1HbrFMvrT=+9wjckjbnR7dkgYe_+AcpSG+vRFA46M5sg2rA@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sat, 20 Dec 2025 17:15:47 -0500 X-Gm-Features: AQt7F2oOIuOHUz1YNJ5twB8dZtldg6WMZ99cPg5NnJtoVZZs5CjQoP_TWnl_p2o Message-ID: <CAN+1HbrR3tc+r84e71VbCksUqgWh_zxFoSjNSZan2DbAn3E9rQ@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Stefan Monnier <monnier@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000d1eb3d06466989f5" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, Michael Albinus <michael.albinus@HIDDEN>, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --000000000000d1eb3d06466989f5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Dec 20, 2025 at 16:44 St=C3=A9phane Marks <shipmints@HIDDEN> wro= te: > > > On Sat, Dec 20, 2025 at 13:44 Stefan Monnier <monnier@HIDDEN> > wrote: > >> > Some of these I dunno how I missed them. Thank you and gosh bless you= r >> > eagle eyes and attention to detail. >> > >> > Patch attached. >> >> AFAIC, this is good to go, >> >> >> Stefan > > > I'm good to go if Albinus is happy. > I think I did want to demote the mode error to a warning. So one more round. > --000000000000d1eb3d06466989f5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"auto"><span style=3D"font-family:-apple-system,sans-serif">On S= at, Dec 20, 2025 at 16:44 St=C3=A9phane Marks <<a href=3D"mailto:shipmin= ts@HIDDEN">shipmints@HIDDEN</a>> wrote:</span><br></div><div dir= =3D"auto"><div class=3D"gmail_quote gmail_quote_container"><blockquote clas= s=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;pad= ding-left:1ex"><div><br></div><div><br><div class=3D"gmail_quote"></div></d= iv><div><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On= Sat, Dec 20, 2025 at 13:44 Stefan Monnier <<a href=3D"mailto:monnier@ir= o.umontreal.ca" target=3D"_blank">monnier@HIDDEN</a>> wrote:<b= r></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border= -left:1px #ccc solid;padding-left:1ex" dir=3D"auto">> Some of these I du= nno how I missed them.=C2=A0 Thank you and gosh bless your<br> > eagle eyes and attention to detail.<br> ><br> > Patch attached.<br> <br> AFAIC, this is good to go,<br> <br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 Stefan</blockquote><div dir=3D"auto"><br></div>= </div></div><div><div class=3D"gmail_quote"><div dir=3D"auto">I'm good = to go if Albinus is happy.=C2=A0</div></div></div></blockquote><div dir=3D"= auto"><br></div><div dir=3D"auto">I think I did want to demote the mode err= or to a warning. So one more round.=C2=A0</div><blockquote class=3D"gmail_q= uote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1e= x"><div><div class=3D"gmail_quote"><div dir=3D"auto"></div></div></div> </blockquote></div></div> --000000000000d1eb3d06466989f5--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 20 Dec 2025 21:45:23 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Dec 20 16:45:22 2025 Received: from localhost ([127.0.0.1]:55170 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vX4lM-00030O-5e for submit <at> debbugs.gnu.org; Sat, 20 Dec 2025 16:45:22 -0500 Received: from mail-ua1-x932.google.com ([2607:f8b0:4864:20::932]:42493) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vX4lH-0002yn-Tt for 79859 <at> debbugs.gnu.org; Sat, 20 Dec 2025 16:45:17 -0500 Received: by mail-ua1-x932.google.com with SMTP id a1e0cc1a2514c-93f523bba52so1678000241.1 for <79859 <at> debbugs.gnu.org>; Sat, 20 Dec 2025 13:45:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766267110; x=1766871910; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=omSliF8OeyXz/WeDRHbNCKZszCda/6yWd2HhQy9N19Y=; b=AhGT2QlYvyVZgzUnhD+8EsM+yAGzYJ18qVqeESV/cGsg5b9q61qHQKoqlmEArYGZEH mJD+U4nmLU/wBzBCQyv81Cl9p8d79P1QR82TCJQTeZh9vRi5/memyn0xPQxF2QjnS0Ag 2+R94IClpNgL7sHiho0sBvVwmysBLuDC3zVSVaz6u3gk27UiCfrk5e4l3GtnHIobF9Sm hSMgQIDfqMOM+cvX/OuiWeAYQWWmA8nmK8+Tsi38HGY0YYsOXLUVO0RsBDThPNWSg+ZW zFzHj/7IGVeigwDPVs5ftUbHrZko4pVqaQwPpDHpCK4QZlz4fbYUJOHfB7JU71pmcfTQ UtLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766267110; x=1766871910; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=omSliF8OeyXz/WeDRHbNCKZszCda/6yWd2HhQy9N19Y=; b=XqRNLPqvV7gqlJo6Xtc/ZG+bd+mylbDrRJocmkcnlRkTjhAnlK1FHcS0JXbg/s0rKg tweKUpdirrSyaCxgaGtqeOkhgUUqfcw7RSchMg+qpM2xp6Bujyoh72LbYZ0zF24eaxLv B0tlesCLruKmTvb0ZhOjjlixQj1oVFTDBWCvEqebWP/WyO9TTH2hLHGH5Qw/+Pdyflo0 D8YjZeVNNGfQoQJWrs0TmAwx3UgB/pIflq5LCfmjE6DZz0nnavFmT6+iObBvGLNezTiK Ay8Y9GBsapbNWZTp8S8GZ/uhxtbJroPrr8VL708hTaQcx3Twvh58LP2bz6OpWFrSSsNl EJFA== X-Forwarded-Encrypted: i=1; AJvYcCU08//4LGSK2pDc5ktTH1RJI3VSLHmWGHh+iUsHFuFuBkzHqc+8UMg5DPkMqS2ACB5JSNBxrg==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzHF9XC2kTrocPnJ8mUeV4thkWJo939y3nc/xRJaB8qVqqYNBtZ rSsGUF+aEdD7tN2Xi8TRJNiAl3YUcHDuIdGeg4EP8RDLO9iVcUAot+/7XdskmKq0P0NwYPrQawa iQZ1hgMXYTpYCA+COLrwNVucJXvc/48g= X-Gm-Gg: AY/fxX5ajFHZjRUCiSxWuIFwfsdK9Fyj5PFNgHK1ClJu5QZaMK5WwbldTxkK0mANPf0 bq61h0C8cwzwX44f8xBzMOTxQSZLKiIe1ghx9QZ1hFfXMrWcqChegyDgNFdve9M4/Dj9shX7DBl UVQ9FGHxf7JhnP4swmjCiw/LSH5UDoxl51QT2CSo5+GNTiZ9XVWwc2TI2loo5qnov+Y8EsjWODA aP3I02D7uHW9AhxEBRt3xm7EYM7m6LVUqWwjD3MiDDmSdLLXNwzRRTXa438XrOq2oLiArVR616W +tB2W1/WEqQiehEdi8D9+vvvm10= X-Google-Smtp-Source: AGHT+IFVZtdHxF2Pik9wger19/Na3fMlMr5VCoBKoUK3JxWxN7ImieyYrmWhWsSCYTT0Ys/3WMFSf6j2JEgfI5Odh0M= X-Received: by 2002:a05:6102:5681:b0:5db:f031:84e5 with SMTP id ada2fe7eead31-5eb1874196cmr2677296137.21.1766267110161; Sat, 20 Dec 2025 13:45:10 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <86ikedavlh.fsf@HIDDEN> <CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN> <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN> <jwv7buss9jh.fsf-monnier+emacs@HIDDEN> <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN> <jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN> <CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN> <CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN> <jwvqzstjc9w.fsf-monnier+emacs@HIDDEN> <CAN+1HbqfpV7aDTRVxvqBkvA0AYJvPHmDYxzfc2xR5rYYD1dtBg@HIDDEN> <jwvy0n1hqyl.fsf-monnier+emacs@HIDDEN> <CAN+1HbrfokZqoYOuDEKWNVSSwZ-AkACtSM3FBoM=45i5DHFP=Q@HIDDEN> <jwv8qf0la6m.fsf-monnier+emacs@HIDDEN> <CAN+1HboxBTprW3zP9HrQmOCjySkaduR=wEv8CkO-Wj_+rY55Wg@HIDDEN> <87bjjtjyjp.fsf@HIDDEN> <CAN+1HbrgCjP4xDEd8cardzySO2WkC=bMVtX4mftaoe7ONsbWnw@HIDDEN> <jwvo6ntdmdo.fsf-monnier+emacs@HIDDEN> In-Reply-To: <jwvo6ntdmdo.fsf-monnier+emacs@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sat, 20 Dec 2025 16:44:59 -0500 X-Gm-Features: AQt7F2rT3YSfIPCJriZ4nZd7gNhoSYqzR3f7-Ek5Sqf2-LEBZLasg6aJ1lnYGUI Message-ID: <CAN+1HbrFMvrT=+9wjckjbnR7dkgYe_+AcpSG+vRFA46M5sg2rA@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Stefan Monnier <monnier@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000ae000f0646691ba8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, Michael Albinus <michael.albinus@HIDDEN>, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --000000000000ae000f0646691ba8 Content-Type: text/plain; charset="UTF-8" On Sat, Dec 20, 2025 at 13:44 Stefan Monnier <monnier@HIDDEN> wrote: > > Some of these I dunno how I missed them. Thank you and gosh bless your > > eagle eyes and attention to detail. > > > > Patch attached. > > AFAIC, this is good to go, > > > Stefan I'm good to go if Albinus is happy. --000000000000ae000f0646691ba8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div><br></div><div><br><div class=3D"gmail_quote gmail_quote_container"><d= iv dir=3D"ltr" class=3D"gmail_attr">On Sat, Dec 20, 2025 at 13:44 Stefan Mo= nnier <<a href=3D"mailto:monnier@HIDDEN">monnier@HIDDEN= .ca</a>> wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"marg= in:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex" dir=3D"auto">>= ; Some of these I dunno how I missed them.=C2=A0 Thank you and gosh bless y= our<br> > eagle eyes and attention to detail.<br> ><br> > Patch attached.<br> <br> AFAIC, this is good to go,<br> <br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 Stefan</blockquote><div dir=3D"auto"><br></div>= <div dir=3D"auto">I'm good to go if Albinus is happy.=C2=A0</div></div>= </div> --000000000000ae000f0646691ba8--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 20 Dec 2025 18:44:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Dec 20 13:44:33 2025
Received: from localhost ([127.0.0.1]:53153 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vX1wP-000467-8O
for submit <at> debbugs.gnu.org; Sat, 20 Dec 2025 13:44:33 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:55079)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vX1wM-00045r-SA
for 79859 <at> debbugs.gnu.org; Sat, 20 Dec 2025 13:44:31 -0500
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 693C310013E;
Sat, 20 Dec 2025 13:44:25 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1766256264;
bh=KExvrNIMF6nd3G/mYiyeDa7Kt761EH/TTji67jRRZBE=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=RAi9lMEDicOKIiIFojG58LzqS/wuk3+nSuqKeyhZx0JxbBNd57zRLdYeM4ogJQKyN
XK8XXPVpqBKEEvhzm5RYmvh6gsJEUoE+1ZJgqKWPrieeYsVTzojVlUNUrokNP58gKM
tYY3alq0bwLEUl1Rxzd8TyJUTR98WSbg/+ofblFM0AQie9AgRVpQSKGyBJXFY8oX6o
uTU4o2528OZbUT63NBdywt7ER/JoMvNsrhv3dMRKD/6SCRmD02V4gmlNYZgN/uumD+
7nSacCc6YW6vxLCIJ40A9UPZLd/LydYfzoMLdcjuxM2+3I0MjzexBqg3Lx/4zZ4eAc
Yc4lS8cOnTj9A==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id A3CB910002E;
Sat, 20 Dec 2025 13:44:24 -0500 (EST)
Received: from pastel (104-195-235-55.cpe.teksavvy.com [104.195.235.55])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 514EA120280;
Sat, 20 Dec 2025 13:44:24 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: =?windows-1252?Q?St=E9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
In-Reply-To: <CAN+1HbrgCjP4xDEd8cardzySO2WkC=bMVtX4mftaoe7ONsbWnw@HIDDEN>
Message-ID: <jwvo6ntdmdo.fsf-monnier+emacs@HIDDEN>
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN>
<86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN>
<86ikedavlh.fsf@HIDDEN>
<CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN>
<jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN>
<CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN>
<jwv7buss9jh.fsf-monnier+emacs@HIDDEN>
<CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN>
<jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN>
<CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN>
<CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN>
<jwvqzstjc9w.fsf-monnier+emacs@HIDDEN>
<CAN+1HbqfpV7aDTRVxvqBkvA0AYJvPHmDYxzfc2xR5rYYD1dtBg@HIDDEN>
<jwvy0n1hqyl.fsf-monnier+emacs@HIDDEN>
<CAN+1HbrfokZqoYOuDEKWNVSSwZ-AkACtSM3FBoM=45i5DHFP=Q@HIDDEN>
<jwv8qf0la6m.fsf-monnier+emacs@HIDDEN>
<CAN+1HboxBTprW3zP9HrQmOCjySkaduR=wEv8CkO-Wj_+rY55Wg@HIDDEN>
<87bjjtjyjp.fsf@HIDDEN>
<CAN+1HbrgCjP4xDEd8cardzySO2WkC=bMVtX4mftaoe7ONsbWnw@HIDDEN>
Date: Sat, 20 Dec 2025 13:44:22 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.033 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>,
Michael Albinus <michael.albinus@HIDDEN>, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> Some of these I dunno how I missed them. Thank you and gosh bless your
> eagle eyes and attention to detail.
>
> Patch attached.
AFAIC, this is good to go,
Stefan
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 20 Dec 2025 16:58:40 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Dec 20 11:58:40 2025
Received: from localhost ([127.0.0.1]:51836 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vX0Hu-0002HU-SQ
for submit <at> debbugs.gnu.org; Sat, 20 Dec 2025 11:58:39 -0500
Received: from mail-vs1-xe2e.google.com ([2607:f8b0:4864:20::e2e]:52651)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1vX0Hr-0002HE-5d
for 79859 <at> debbugs.gnu.org; Sat, 20 Dec 2025 11:58:36 -0500
Received: by mail-vs1-xe2e.google.com with SMTP id
ada2fe7eead31-5dd6fbe5091so887986137.1
for <79859 <at> debbugs.gnu.org>; Sat, 20 Dec 2025 08:58:35 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1766249909; x=1766854709; darn=debbugs.gnu.org;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:from:to:cc:subject:date:message-id:reply-to;
bh=8Qhxr35nqu+GD05sfTBOVv9Oy/kKqLpIyHklUyCKGrc=;
b=L85txcr/5AMjwv+ylq4cB5TSbHGD66+6axcX8Ge7pxkvnR8Tbb3ykYeD7g7VJmI6mP
vtzAh1ephlGYvm0HFCo5aLzmq1otzhIAYnce+xkyIz/ED3V6n0+Bq/+zOCRFIJwsmpVR
npip+4oFMwUX2KrcU8GZjN6xrWAfiEeDAdoaAQ8S9RiEg8hvEwsCXKzpOuKdTxpw3WB/
seR/7B2Q1HEivP+qhMUeZPIbI9gdg8vctWZP0mA70DVTrfG+pHMJ7zd9V1Nvp0XkpiwY
0sbLdY0cuc/wK9o+SMDFvZFr8w6g6jTL/i5aj7kO38fKi6qi7Owj02IdY86UMZvICuKh
piZw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1766249909; x=1766854709;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=8Qhxr35nqu+GD05sfTBOVv9Oy/kKqLpIyHklUyCKGrc=;
b=WQymS8v/S1ymbIDNOKciFV/a1HZxwQgQaKRa6PqqctLTiWlFMq7p5/Xhp4MMj/m6kS
HXnYiqazf0nI/7GxAXh4c1oFn4eCb+5SNsxHksCt/RoV8iHjt6gotdRY7udYC9EnKMCe
LMwNcMJVfXDDtwPy5L3PfzPUPl4K/zw4MKqN7VegB7TOZ2O7DCc0q7dbn/Jmo3gzWCjv
J+FCPKnm7G4/lDjU83RuFuyAD7Axx59gSjeYpStNTaJ6tpyt5sa2XHmCoWVY+/0yH5nV
DD5ydxho9lItcFJ2L3qhWLNlr13g2tFb21RQmofa514t7F38nXjAfyb3vVa+EGvOv5gC
3qig==
X-Forwarded-Encrypted: i=1;
AJvYcCWgq1dfOvC9vBmIIvC4ZJvTIElJm0Ih0MJE0BQG0Ol1DzltcFmdjRNeH248ARVWEWQIAZbP8g==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yy0dtOUdXavZFQsQaLVpFKzHOJ/0Iwb3EzzP/yw7IAZp6zrkvZI
tPffRrL1j8yRxfab0KO/MSYjrO+8GAANnDu9O5gYGDegPxz39qUpyBLsf4p9XFDay/aE618vjLd
4FapUyvg7M8WPvrGNtLmscNxLgk65Ddk=
X-Gm-Gg: AY/fxX4pOw+25Up8Ine1j6sLUW45HAD5+nLmuzf7vI3Rqi+f5ZlBqRLeuNl0e5Hst7w
OseR9N3MbT232RIgZ424cIP5CyeFxnlrIOihJWWAiMv1KgqIiyvej36kwJkt/qpM1amzPsIZL12
eHchRnIuNbGw2yQzW2Ml7ZMyJmu0pFTrBM3N92pk3dYDanU5HnUSrMs0QeirTQMuIP8uyad7AUI
nytdCNXP9QXXHylUigi2wl2HU7PMZkYmqV1nszpXFdFkKZJq6HVWHpOyfNh9zrLTbEdZTc=
X-Google-Smtp-Source: AGHT+IH3WcS/DRODZUzO0vlElas1C+FZUdNfhsFDcns/HSXRh8Cu1QrM+cezFrWKrFSlM0KSL1FphhnRMMLNSVY1H/c=
X-Received: by 2002:a05:6102:8002:b0:5db:f440:f1b7 with SMTP id
ada2fe7eead31-5eb1a811382mr2248402137.32.1766249909318; Sat, 20 Dec 2025
08:58:29 -0800 (PST)
MIME-Version: 1.0
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
<87pl932wqd.fsf@HIDDEN>
<CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN>
<86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN>
<86ikedavlh.fsf@HIDDEN>
<CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN>
<jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN>
<CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN>
<jwv7buss9jh.fsf-monnier+emacs@HIDDEN>
<CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN>
<jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN>
<CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN>
<CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN>
<jwvqzstjc9w.fsf-monnier+emacs@HIDDEN>
<CAN+1HbqfpV7aDTRVxvqBkvA0AYJvPHmDYxzfc2xR5rYYD1dtBg@HIDDEN>
<jwvy0n1hqyl.fsf-monnier+emacs@HIDDEN>
<CAN+1HbrfokZqoYOuDEKWNVSSwZ-AkACtSM3FBoM=45i5DHFP=Q@HIDDEN>
<jwv8qf0la6m.fsf-monnier+emacs@HIDDEN>
<CAN+1HboxBTprW3zP9HrQmOCjySkaduR=wEv8CkO-Wj_+rY55Wg@HIDDEN>
<87bjjtjyjp.fsf@HIDDEN>
In-Reply-To: <87bjjtjyjp.fsf@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Sat, 20 Dec 2025 11:58:17 -0500
X-Gm-Features: AQt7F2pddDivfC-wE4CPyjtAOU-Fl4ZWKFwmZHP1v60nt9hEsgTeYfV6ZW_PUZs
Message-ID: <CAN+1HbrgCjP4xDEd8cardzySO2WkC=bMVtX4mftaoe7ONsbWnw@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
To: Michael Albinus <michael.albinus@HIDDEN>
Content-Type: multipart/mixed; boundary="0000000000006e21c00646651a1a"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>,
Stefan Monnier <monnier@HIDDEN>, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
--0000000000006e21c00646651a1a
Content-Type: multipart/alternative; boundary="0000000000006e21be0646651a18"
--0000000000006e21be0646651a18
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Sat, Dec 20, 2025 at 4:24=E2=80=AFAM Michael Albinus <michael.albinus@gm=
x.de>
wrote:
> St=C3=A9phane Marks <shipmints@HIDDEN> writes:
>
> Hi St=C3=A9phane,
>
> I have some few documentation remarks.
>
> > diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi
> > index 5b11af2b17f..f330c7135c4 100644
> > --- a/doc/emacs/frames.texi
> > +++ b/doc/emacs/frames.texi
>
> In the text (not in @code{}), use consistently either "system taskbar",
> "system-taskbar", "taskbar". Personally, I prefer the former. This
> should happen also in the other files.
>
> > +Note: The GNU/Linux implementation sends taskbar messages to the syste=
m
> > +GUI using D-Bus. You may need to install or configure shell extension=
s
> > +such as @file{https://extensions.gnome.org/extension/307/dash-to-dock/=
}
> > +that implement Ubuntu's Unity D-Bus launcher spec which you can read
> > +more about here @file{https://wiki.ubuntu.com/Unity/LauncherAPI}.
> > +@xref{Top,,, dbus, The D-Bus Manual}.
>
> Please use @url{} instead of @file{}.
>
> > +@vindex system-taskbar-use-progress-reporter
> > + The variable @code{system-taskbar-use-progress-reporter} integrates
>
> The user option @code{system-taskbar-use-progress-reporter} ...
>
> > +@vindex system-taskbar-clear-attention-on-frame-focus
> > + The variable @code{system-taskbar-clear-attention-on-frame-focus}
>
> The user option @code{system-taskbar-clear-attention-on-frame-focus} ...
>
> > +@vindex system-taskbar-dbus-desktop-file-name
> > + The variable @code{system-taskbar-dbus-desktop-file-name} helps D-Bu=
s
>
> The user option @code{system-taskbar-dbus-desktop-file-name} ...
>
> > +@vindex system-taskbar-dbus-timeout
> > + The variable @code{system-taskbar-dbus-timeout} is a troubleshooting
>
> The user option @code{system-taskbar-dbus-timeout} ...
>
> > diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
> > index 44dd3bbb63c..bd14f85d915 100644
> > --- a/doc/lispref/os.texi
> > +++ b/doc/lispref/os.texi
>
> > +On back ends which do not support strings, convert @var{count} to an
> > +integer, or nil if that fails.
>
> @code{nil}
>
> > +If @var{count} is nil or an empty string, remove the counter or short
> > +string.
>
> @code{nil}
>
> > +@defun system-taskbar-attention &optional urgency timeout
> > +
> > +If @var{urgency} is nil, clear the attention indicator.
>
> @code{nil}
>
> > +GUI into focus, or after @var{timeout} seconds. If @var{timeout} is
> > +nil, the system GUI behavior has priority.
>
> @code{nil}
>
> > +@defun system-taskbar-progress &optional progress
> > +
> > +@var{progress} is a float in the range 0.0 to 1.0. If @var{progress} =
is
> > +nil, remove the progress indicator.
>
> @code{nil}
>
> > +@code{system-taskbar-progress} by default. @xref{Progress}
>
> @xref{Progress}.
>
> > diff --git a/etc/NEWS b/etc/NEWS
> > index fdb1ee02819..676144dff12 100644
> > --- a/etc/NEWS
> > +++ b/etc/NEWS
> > ++++
> > +*** New mode 'system-taskbar-mode'.
>
> ** New mode 'system-taskbar-mode'.
>
> > diff --git a/lisp/subr.el b/lisp/subr.el
> > index fcf931b64e9..e69ef18a1bb 100644
> > --- a/lisp/subr.el
> > +++ b/lisp/subr.el
> > (defun progress-reporter-force-update (reporter &optional value
> new-message suffix)
> > "Report progress of an operation in the echo area unconditionally.
> >
> > -REPORTER, VALUE, and SUFFIX are the same as in
> `progress-reporter-update'.
> > -NEW-MESSAGE, if non-nil, sets a new message for the reporter."
> > + REPORTER, VALUE, and SUFFIX are the same as in
> `progress-reporter-update'.
> > + NEW-MESSAGE, if non-nil, sets a new message for the reporter."
>
> Do not indent the docstring lines.
>
> > +(defun progress-reporter-echo-area (reporter state)
> > + "Progress reporter echo area update function.
> > +REPORTER and STATE are the same as in
> > +`progress-reporter-update-functions`."
>
> `progress-reporter-update-functions'
>
> > --- /dev/null
> > +++ b/lisp/system-taskbar.el
> > @@ -0,0 +1,534 @@
> > +;; When `system-taskbar-mode` is enabled, Emacs progress reporters wil=
l
>
> `system-taskbar-mode'
>
> > +;; be enhanced to display taskbar GUI progress bars. Customize
> > +;; `system-taskbar-use-progress-reporter` if you want to disable this
> > +;; before enabling system-taskbar-mode.
>
> `system-taskbar-use-progress-reporter'
>
> > +;; @file{https://extensions.gnome.org/extension/307/dash-to-dock/} tha=
t
>
> https://extensions.gnome.org/extension/307/dash-to-dock/
>
> > +;; implement Ubuntu's Unity D-Bus launcher spec which you can read mor=
e
> > +;; about here @file{https://wiki.ubuntu.com/Unity/LauncherAPI}.
>
> https://wiki.ubuntu.com/Unity/LauncherAPI
>
> > +(defcustom system-taskbar-dbus-timeout nil
> > + "Number of milliseconds to wait for D-Bus responses.
> > +If nil, use the `dbus` default timeout which is 25,000 (i.e., 25s).
>
> D-Bus
>
> > +If your D-Bus desktop extension needs extra time to respond, in which
> > +case `system-taskbar-mode` might not initialize or related functions
>
> `system-taskbar-mode'
>
> > +(defun system-taskbar--progress-reporter-update (_reporter state)
> > + "Progress reporter system-taskbar update function.
> > +REPORTER and STATE are the same as in
> > +`progress-reporter-update-functions`."
>
> `progress-reporter-update-functions'
>
> > +Due to MS-Windows icon overlay size limitations, if COUNT is an intege=
r
> > +and is outside the range -99 to 99, display \"-99\" and \"99+\",
> > +respectively, if COUNT is a string longer than 2 characters truncate i=
t
> > +using `truncate-string-to-width`.
>
> `truncate-string-to-width'
>
> > +Consult `system-taskbar-w32-badge-background` and
> > +`system-taskbar-w32-badge-foreground` for the background and foregroun=
d
> > +colors for the painted overlay."
>
> `system-taskbar-w32-badge-background'
> `system-taskbar-w32-badge-foreground'
>
> > diff --git a/src/nsfns.m b/src/nsfns.m
> > index 3528c4acd50..1a8f95c14ef 100644
> > --- a/src/nsfns.m
> > +++ b/src/nsfns.m
> > +DEFUN ("ns-progress-indicator",
> > + Fns_progress_indicator,
> > + Sns_progress_indicator,
> > + 1, 1, 0,
> > + doc: /* Bounce the app dock icon to request user attention.
> > + PROGRESS is a float between 0.0 and 1.0.
> > + If PROGRESS is nil, remove the progress indicator. */)
>
> Do not indent the docstring lines.
>
Some of these I dunno how I missed them. Thank you and gosh bless your
eagle eyes and attention to detail.
Patch attached.
-St=C3=A9phane
--0000000000006e21be0646651a18
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">=
On Sat, Dec 20, 2025 at 4:24=E2=80=AFAM Michael Albinus <<a href=3D"mail=
to:michael.albinus@HIDDEN">michael.albinus@HIDDEN</a>> wrote:</span></di=
v></div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex">St=C3=A9phane Marks <<a href=3D"mailto:=
shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> writes:<=
br>
<br>
Hi St=C3=A9phane,<br>
<br>
I have some few documentation remarks.<br>
<br>
> diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi<br>
> index 5b11af2b17f..f330c7135c4 100644<br>
> --- a/doc/emacs/frames.texi<br>
> +++ b/doc/emacs/frames.texi<br>
<br>
In the text (not in @code{}), use consistently either "system taskbar&=
quot;,<br>
"system-taskbar", "taskbar". Personally, I prefer the f=
ormer. This<br>
should happen also in the other files.<br>
<br>
> +Note: The GNU/Linux implementation sends taskbar messages to the syst=
em<br>
> +GUI using D-Bus.=C2=A0 You may need to install or configure shell ext=
ensions<br>
> +such as @file{<a href=3D"https://extensions.gnome.org/extension/307/d=
ash-to-dock/" rel=3D"noreferrer" target=3D"_blank">https://extensions.gnome=
.org/extension/307/dash-to-dock/</a>}<br>
> +that implement Ubuntu's Unity D-Bus launcher spec which you can r=
ead<br>
> +more about here @file{<a href=3D"https://wiki.ubuntu.com/Unity/Launch=
erAPI" rel=3D"noreferrer" target=3D"_blank">https://wiki.ubuntu.com/Unity/L=
auncherAPI</a>}.<br>
> +@xref{Top,,, dbus, The D-Bus Manual}.<br>
<br>
Please use @url{} instead of @file{}.<br>
<br>
> +@vindex system-taskbar-use-progress-reporter<br>
> +=C2=A0 The variable @code{system-taskbar-use-progress-reporter} integ=
rates<br>
<br>
The user option @code{system-taskbar-use-progress-reporter} ...<br>
<br>
> +@vindex system-taskbar-clear-attention-on-frame-focus<br>
> +=C2=A0 The variable @code{system-taskbar-clear-attention-on-frame-foc=
us}<br>
<br>
The user option @code{system-taskbar-clear-attention-on-frame-focus} ...<br=
>
<br>
> +@vindex system-taskbar-dbus-desktop-file-name<br>
> +=C2=A0 The variable @code{system-taskbar-dbus-desktop-file-name} help=
s D-Bus<br>
<br>
The user option @code{system-taskbar-dbus-desktop-file-name} ...<br>
<br>
> +@vindex system-taskbar-dbus-timeout<br>
> +=C2=A0 The variable @code{system-taskbar-dbus-timeout} is a troublesh=
ooting<br>
<br>
The user option @code{system-taskbar-dbus-timeout} ...<br>
<br>
> diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi<br>
> index 44dd3bbb63c..bd14f85d915 100644<br>
> --- a/doc/lispref/os.texi<br>
> +++ b/doc/lispref/os.texi<br>
<br>
> +On back ends which do not support strings, convert @var{count} to an<=
br>
> +integer, or nil if that fails.<br>
<br>
@code{nil}<br>
<br>
> +If @var{count} is nil or an empty string, remove the counter or short=
<br>
> +string.<br>
<br>
@code{nil}<br>
<br>
> +@defun system-taskbar-attention &optional urgency timeout<br>
> +<br>
> +If @var{urgency} is nil, clear the attention indicator.<br>
<br>
@code{nil}<br>
<br>
> +GUI into focus, or after @var{timeout} seconds.=C2=A0 If @var{timeout=
} is<br>
> +nil, the system GUI behavior has priority.<br>
<br>
@code{nil}<br>
<br>
> +@defun system-taskbar-progress &optional progress<br>
> +<br>
> +@var{progress} is a float in the range 0.0 to 1.0.=C2=A0 If @var{prog=
ress} is<br>
> +nil, remove the progress indicator.<br>
<br>
@code{nil}<br>
<br>
> +@code{system-taskbar-progress} by default.=C2=A0 @xref{Progress}<br>
<br>
@xref{Progress}.<br>
<br>
> diff --git a/etc/NEWS b/etc/NEWS<br>
> index fdb1ee02819..676144dff12 100644<br>
> --- a/etc/NEWS<br>
> +++ b/etc/NEWS<br>
> ++++<br>
> +*** New mode 'system-taskbar-mode'.<br>
<br>
** New mode 'system-taskbar-mode'.<br>
<br>
> diff --git a/lisp/subr.el b/lisp/subr.el<br>
> index fcf931b64e9..e69ef18a1bb 100644<br>
> --- a/lisp/subr.el<br>
> +++ b/lisp/subr.el<br>
>=C2=A0 (defun progress-reporter-force-update (reporter &optional va=
lue new-message suffix)<br>
>=C2=A0 =C2=A0 "Report progress of an operation in the echo area un=
conditionally.<br>
><br>
> -REPORTER, VALUE, and SUFFIX are the same as in `progress-reporter-upd=
ate'.<br>
> -NEW-MESSAGE, if non-nil, sets a new message for the reporter."<b=
r>
> +=C2=A0 REPORTER, VALUE, and SUFFIX are the same as in `progress-repor=
ter-update'.<br>
> +=C2=A0 NEW-MESSAGE, if non-nil, sets a new message for the reporter.&=
quot;<br>
<br>
Do not indent the docstring lines.<br>
<br>
> +(defun progress-reporter-echo-area (reporter state)<br>
> +=C2=A0 "Progress reporter echo area update function.<br>
> +REPORTER and STATE are the same as in<br>
> +`progress-reporter-update-functions`."<br>
<br>
`progress-reporter-update-functions'<br>
<br>
> --- /dev/null<br>
> +++ b/lisp/system-taskbar.el<br>
> @@ -0,0 +1,534 @@<br>
> +;; When `system-taskbar-mode` is enabled, Emacs progress reporters wi=
ll<br>
<br>
`system-taskbar-mode'<br>
<br>
> +;; be enhanced to display taskbar GUI progress bars.=C2=A0 Customize<=
br>
> +;; `system-taskbar-use-progress-reporter` if you want to disable this=
<br>
> +;; before enabling system-taskbar-mode.<br>
<br>
`system-taskbar-use-progress-reporter'<br>
<br>
> +;; @file{<a href=3D"https://extensions.gnome.org/extension/307/dash-t=
o-dock/" rel=3D"noreferrer" target=3D"_blank">https://extensions.gnome.org/=
extension/307/dash-to-dock/</a>} that<br>
<br>
<a href=3D"https://extensions.gnome.org/extension/307/dash-to-dock/" rel=3D=
"noreferrer" target=3D"_blank">https://extensions.gnome.org/extension/307/d=
ash-to-dock/</a><br>
<br>
> +;; implement Ubuntu's Unity D-Bus launcher spec which you can rea=
d more<br>
> +;; about here @file{<a href=3D"https://wiki.ubuntu.com/Unity/Launcher=
API" rel=3D"noreferrer" target=3D"_blank">https://wiki.ubuntu.com/Unity/Lau=
ncherAPI</a>}.<br>
<br>
<a href=3D"https://wiki.ubuntu.com/Unity/LauncherAPI" rel=3D"noreferrer" ta=
rget=3D"_blank">https://wiki.ubuntu.com/Unity/LauncherAPI</a><br>
<br>
> +(defcustom system-taskbar-dbus-timeout nil<br>
> +=C2=A0 "Number of milliseconds to wait for D-Bus responses.<br>
> +If nil, use the `dbus` default timeout which is 25,000 (i.e., 25s).<b=
r>
<br>
D-Bus<br>
<br>
> +If your D-Bus desktop extension needs extra time to respond, in which=
<br>
> +case `system-taskbar-mode` might not initialize or related functions<=
br>
<br>
`system-taskbar-mode'<br>
<br>
> +(defun system-taskbar--progress-reporter-update (_reporter state)<br>
> +=C2=A0 "Progress reporter system-taskbar update function.<br>
> +REPORTER and STATE are the same as in<br>
> +`progress-reporter-update-functions`."<br>
<br>
`progress-reporter-update-functions'<br>
<br>
> +Due to MS-Windows icon overlay size limitations, if COUNT is an integ=
er<br>
> +and is outside the range -99 to 99, display \"-99\" and \&q=
uot;99+\",<br>
> +respectively, if COUNT is a string longer than 2 characters truncate =
it<br>
> +using `truncate-string-to-width`.<br>
<br>
`truncate-string-to-width'<br>
<br>
> +Consult `system-taskbar-w32-badge-background` and<br>
> +`system-taskbar-w32-badge-foreground` for the background and foregrou=
nd<br>
> +colors for the painted overlay."<br>
<br>
`system-taskbar-w32-badge-background'<br>
`system-taskbar-w32-badge-foreground'<br>
<br>
> diff --git a/src/nsfns.m b/src/nsfns.m<br>
> index 3528c4acd50..1a8f95c14ef 100644<br>
> --- a/src/nsfns.m<br>
> +++ b/src/nsfns.m<br>
> +DEFUN ("ns-progress-indicator",<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Fns_progress_indicator,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Sns_progress_indicator,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A01, 1, 0,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0doc: /* Bounce the app dock icon to reques=
t user attention.<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 PROGRESS is a float between=
0.0 and 1.0.<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 If PROGRESS is nil, remove =
the progress indicator.=C2=A0 */)<br>
<br>
Do not indent the docstring lines.<br></blockquote><div><br></div><div clas=
s=3D"gmail_default" style=3D"font-family:monospace">Some of these I dunno h=
ow I missed them.=C2=A0 Thank you and gosh bless your eagle eyes and attent=
ion to detail.</div><div class=3D"gmail_default" style=3D"font-family:monos=
pace"><br></div><div class=3D"gmail_default" style=3D"font-family:monospace=
">Patch attached.</div><div class=3D"gmail_default" style=3D"font-family:mo=
nospace"><br></div><div class=3D"gmail_default" style=3D"font-family:monosp=
ace">-St=C3=A9phane=C2=A0</div></div></div>
--0000000000006e21be0646651a18--
--0000000000006e21c00646651a1a
Content-Type: application/octet-stream;
name="0001-System-GUI-taskbar-and-progress-reporter-hooks.patch"
Content-Disposition: attachment;
filename="0001-System-GUI-taskbar-and-progress-reporter-hooks.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_mjejkra70>
X-Attachment-Id: f_mjejkra70
RnJvbSBlNmRjOTYwYTAyYjdlZGFlZjQyMzk3YzRiNDdmNjk4NTBlNDdiMzA5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo
aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFRodSwgMjAgTm92IDIwMjUgMTI6NTQ6NDAgLTA1MDAK
U3ViamVjdDogW1BBVENIXSBTeXN0ZW0gR1VJIHRhc2tiYXIgYW5kIHByb2dyZXNzIHJlcG9ydGVy
IGhvb2tzCgpJbXBsZW1lbnQgc3lzdGVtIEdVSSB0YXNrYmFyL2RvY2svbGF1bmNoZXIgaWNvbiBi
YWRnZSwgaWNvbgpwcm9ncmVzcyBpbmRpY2F0b3IsIGljb24gYXR0ZW50aW9uIGFsZXJ0IGZlYXR1
cmVzIGZvciBELUJ1cwpwbGF0Zm9ybXMgKHRlc3RlZCBvbiBLREUgYW5kIEdOT01FKSwgTlMgKG1h
Y09TL0dOVXN0ZXApLApNUy1XaW5kb3dzLgoKQWRkICdwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUt
ZnVuY3Rpb25zJyBhYm5vcm1hbCBob29rIHRvIGZhY2lsaXRhdGUKdGFza2JhciBwcm9ncmVzcyBk
aXNwbGF5LCBhbmQgb3RoZXIgY3VzdG9tIHByb2dyZXNzIHJlcG9ydGVycy4KVGhlIGRlZmF1bHQg
ZnVuY3Rpb24gbGlzdCBpcyAncHJvZ3Jlc3MtcmVwb3J0ZXItZWNoby1hcmVhJyB3aGljaAppcyBi
YWNrd2FyZCBjb21wYXRpYmxlLgoKKiBsaXNwL3N1YnIuZWwgKHByb2dyZXNzLXJlcG9ydGVyLXVw
ZGF0ZS1mdW5jdGlvbnMpOgpOZXcgZGVmdmFyLgoocHJvZ3Jlc3MtcmVwb3J0ZXItZWNoby1hcmVh
KTogTmV3IGRlZnVuLgoocHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRlKTogUnVuCnByb2dyZXNz
LXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMgZm9yIGJvdGggbnVtZXJpY2FsIGFuZApwdWxzaW5n
IHJlcG9ydGVycy4KKHByb2dyZXNzLXJlcG9ydGVyLWRvbmUpOiBSdW4gcHJvZ3Jlc3MtcmVwb3J0
ZXItZG9uZS1mdW5jdGlvbnMuCiogbGlzcC9zeXN0ZW0tdGFza2Jhci5lbDogTmV3IGZpbGUuCiog
c3JjL25zZm5zLm0gKEZuc19iYWRnZSwgRm5zX3Byb2dyZXNzX2luZGljYXRvcikKKEZuc19yZXF1
ZXN0X3VzZXJfYXR0ZW50aW9uKTogTmV3IGZ1bmN0aW9uLgooc3ltc19vZl9uc2Zucyk6IEFkZCBk
ZWZzdWJyIFNuc19iYWRnZSwKU25zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24sIFNuc19wcm9ncmVz
c19pbmRpY2F0b3IuIEFkZCBERUZTWU0KUWluZm9ybWF0aW9uYWwsIFFjcml0aWNhbC4KKiBzcmMv
dzMyZm5zLmMgKHJnYl9saXN0X3RvX2NvbG9ycmVmLCBGdzMyX2JhZGdlKQooRnczMl9yZXF1ZXN0
X3VzZXJfYXR0ZW50aW9uLCBGdzMyX3Byb2dyZXNzX2luZGljYXRvcik6IE5ldwpmdW5jdGlvbi4K
KHN5bXNfb2ZfdzMyZm5zKTogQWRkIGRlZnN1YnIgU3czMl9iYWRnZSwKU3czMl9wcm9ncmVzc19p
bmRpY2F0b3IsIFN3MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbi4gQWRkIERFRlNZTQpRaW5mb3Jt
YXRpb25hbCwgUWNyaXRpY2FsLgoqIGRvYy9lbWFjcy9mcmFtZXMudGV4aTogVXNlciBkb2N1bWVu
dGF0aW9uLgoqIGRvYy9saXNwcmVmL29zLnRleGk6IFByb2dyYW1tZXIgZG9jdW1lbnRhdGlvbi4K
KiBldGMvTkVXUzogQW5ub3VuY2Ugc3lzdGVtLXRhc2tiYXItbW9kZS4gIEFubm91bmNlIHByb2dy
ZXNzCnJlcG9ydGVyIGNhbGxiYWNrIGVuaGFuY2VtZW50cy4KLS0tCiBkb2MvZW1hY3MvZnJhbWVz
LnRleGkgIHwgIDcwICsrKysrKwogZG9jL2xpc3ByZWYvb3MudGV4aSAgICB8IDEyMiArKysrKysr
KysrCiBldGMvTkVXUyAgICAgICAgICAgICAgIHwgIDIyICsrCiBsaXNwL3N1YnIuZWwgICAgICAg
ICAgIHwgIDgzICsrKysrLS0KIGxpc3Avc3lzdGVtLXRhc2tiYXIuZWwgfCA1MzQgKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9uc2Zucy5tICAgICAgICAgICAg
fCAxMjggKysrKysrKysrKwogc3JjL3czMmZucy5jICAgICAgICAgICB8IDMyNyArKysrKysrKysr
KysrKysrKysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDEyNjMgaW5zZXJ0aW9ucygrKSwgMjMg
ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGlzcC9zeXN0ZW0tdGFza2Jhci5lbAoK
ZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9mcmFtZXMudGV4aSBiL2RvYy9lbWFjcy9mcmFtZXMudGV4
aQppbmRleCA1YjExYWYyYjE3Zi4uMWIxZjBjYThkYjIgMTAwNjQ0Ci0tLSBhL2RvYy9lbWFjcy9m
cmFtZXMudGV4aQorKysgYi9kb2MvZW1hY3MvZnJhbWVzLnRleGkKQEAgLTU4LDYgKzU4LDcgQEAg
RnJhbWVzCiAqIE1lbnUgQmFyczo6ICAgICAgICAgICBFbmFibGluZyBhbmQgZGlzYWJsaW5nIHRo
ZSBtZW51IGJhci4KICogVG9vbCBCYXJzOjogICAgICAgICAgIEVuYWJsaW5nIGFuZCBkaXNhYmxp
bmcgdGhlIHRvb2wgYmFyLgogKiBUYWIgQmFyczo6ICAgICAgICAgICAgRW5hYmxpbmcgYW5kIGRp
c2FibGluZyB0aGUgdGFiIGJhci4KKyogU3lzdGVtIFRhc2tiYXI6OiAgICAgIFVzaW5nIHN5c3Rl
bSBHVUkgdGFza2JhciBmZWF0dXJlcy4KICogRGlhbG9nIEJveGVzOjogICAgICAgIENvbnRyb2xs
aW5nIHVzZSBvZiBkaWFsb2cgYm94ZXMuCiAqIFRvb2x0aXBzOjogICAgICAgICAgICBEaXNwbGF5
aW5nIGluZm9ybWF0aW9uIGF0IHRoZSBjdXJyZW50IG1vdXNlIHBvc2l0aW9uLgogKiBNb3VzZSBB
dm9pZGFuY2U6OiAgICAgUHJldmVudGluZyB0aGUgbW91c2UgcG9pbnRlciBmcm9tIG9ic2N1cmlu
ZyB0ZXh0LgpAQCAtMTYzMSw2ICsxNjMyLDc1IEBAIFRhYiBCYXJzCiAgIEl0J3MgcG9zc2libGUg
dG8gY3VzdG9taXplIHRoZSBpdGVtcyBkaXNwbGF5ZWQgb24gdGhlIHRhYiBiYXIKIGJ5IHRoZSB1
c2VyIG9wdGlvbiBAY29kZXt0YWItYmFyLWZvcm1hdH0uCiAKK0Bub2RlIFN5c3RlbSBUYXNrYmFy
CitAc2VjdGlvbiBVc2luZyBTeXN0ZW0gR1VJIFRhc2tiYXIgRmVhdHVyZXMKK0BjaW5kZXggc3lz
dGVtIHRhc2tiYXIKK0BjaW5kZXggbW9kZSwgc3lzdGVtIHRhc2tiYXIKKworICBFbWFjcyBjYW4g
dXNlIHlvdXIgR1VJIHN5c3RlbSB0YXNrYmFyIHRvIGRpc3BsYXkgYSBiYWRnZSBvdmVybGF5IG9u
Cit0aGUgRW1hY3MgdGFza2JhciBpY29uLCBhIHByb2dyZXNzIGJhciByZXBvcnQsIGFuZCBhbGVy
dCB0aGUgdXNlciB0aGF0CithbiBFbWFjcyBzZXNzaW9uIG5lZWRzIGF0dGVudGlvbi4gIE5vdGU6
IFRoZSBzeXN0ZW0gdGFza2JhciBtaWdodCBiZQorY2FsbGVkIHRoZSBkb2NrLCB0aGUgbGF1bmNo
ZXIsIG9yIHNvbWV0aGluZyBzaW1pbGFyLgorCitAY2luZGV4IHN5c3RlbSB0YXNrYmFyLCBHTlUv
TGludXgKK09uIEdOVS9MaW51eCBlbGlnaWJsZSBHVUkgZGVza3RvcHMsIHN5c3RlbSB0YXNrYmFy
IGVmZmVjdHMgd2lsbCBhcHBlYXIKK29uIHRoZSBkZXNrdG9wIGRlc3RpbmF0aW9ucyBkZXRlcm1p
bmVkIGJ5IHlvdXIgc2hlbGwgZXh0ZW5zaW9uLCBtb3N0CitvZnRlbiB0aGUgYXBwbGljYXRpb24g
bGF1bmNoZXIgb3IgZG9jayBwYW5lbCwgb3IgdGhlIHRvcCBwYW5lbC4gIEVmZmVjdHMKK2FyZSBn
bG9iYWwgZm9yIGFuIEVtYWNzIGluc3RhbmNlLgorCitOb3RlOiBUaGUgR05VL0xpbnV4IGltcGxl
bWVudGF0aW9uIHNlbmRzIHN5c3RlbSB0YXNrYmFyIG1lc3NhZ2VzIHRvIHRoZQorR1VJIHVzaW5n
IEQtQnVzLiAgWW91IG1heSBuZWVkIHRvIGluc3RhbGwgb3IgY29uZmlndXJlIHNoZWxsIGV4dGVu
c2lvbnMKK3N1Y2ggYXMgQHVybHtodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lv
bi8zMDcvZGFzaC10by1kb2NrL30KK3RoYXQgaW1wbGVtZW50IFVidW50dSdzIFVuaXR5IEQtQnVz
IGxhdW5jaGVyIHNwZWMgd2hpY2ggeW91IGNhbiByZWFkCittb3JlIGFib3V0IGhlcmUgQHVybHto
dHRwczovL3dpa2kudWJ1bnR1LmNvbS9Vbml0eS9MYXVuY2hlckFQSX0uCitAeHJlZntUb3AsLCwg
ZGJ1cywgVGhlIEQtQnVzIE1hbnVhbH0uCisKK0BjaW5kZXggc3lzdGVtIHRhc2tiYXIsIG1hY09T
L0dOVXN0ZXAKK0BjaW5kZXggc3lzdGVtIHRhc2tiYXIsIE5TCitPbiBtYWNPUy9HTlVzdGVwIDEw
LjUrLCBzeXN0ZW0gdGFza2JhciBlZmZlY3RzIGFwcGVhciBvbiB0aGUgRG9jayBhbmQgaW4KK3Ro
ZSBBcHAgU3dpdGNoZXIuICBFZmZlY3RzIGFyZSBnbG9iYWwgZm9yIGFuIEVtYWNzIGluc3RhbmNl
LgorbWFjT1MvR05Vc3RlcCBuZWVkIG5vIHNwZWNpYWwgY29uZmlndXJhdGlvbi4KKworQGNpbmRl
eCBzeXN0ZW0gdGFza2JhciwgTVMtV2luZG93cworT24gTVMtV2luZG93cyA3KywgdGFza2JhciBl
ZmZlY3RzIGFwcGVhciBvbiB0aGUgV2luZG93cyBzeXN0ZW0gdGFza2Jhci4KK0VmZmVjdHMgYXJl
IGFzc29jaWF0ZWQgd2l0aCB0aGUgZnJhbWUgZnJvbSB3aGljaCB0aGV5IGFyZSBpbml0aWF0ZWQu
CitNUy1XaW5kb3dzIG5lZWRzIG5vIHNwZWNpYWwgY29uZmlndXJhdGlvbi4KKworQGZpbmRleCBz
eXN0ZW0tdGFza2Jhci1tb2RlCisgIFlvdSBtdXN0IGluaXRpYWxpemUgc3lzdGVtLXRhc2tiYXIg
YmVmb3JlIHVzaW5nIGl0LiAgVG8gZG8gdGhhdCwgdHlwZQorQGtiZHtNLXggc3lzdGVtLXRhc2ti
YXItbW9kZX0uCisKK0B2aW5kZXggc3lzdGVtLXRhc2tiYXItdXNlLXByb2dyZXNzLXJlcG9ydGVy
CisgIFRoZSB1c2VyIG9wdGlvbiBAY29kZXtzeXN0ZW0tdGFza2Jhci11c2UtcHJvZ3Jlc3MtcmVw
b3J0ZXJ9IGludGVncmF0ZXMKK0Bjb2Rle3N5c3RlbS10YXNrYmFyLW1vZGV9IHdpdGggRW1hY3Mg
cHJvZ3Jlc3MgcmVwb3J0IGZ1bmN0aW9ucywgd2hpY2gKK21hbnkgbG9uZ2VyLXJ1bm5pbmcgZnVu
Y3Rpb25zIHVzZSB0byBpbmRpY2F0ZSB0aGUgcHJvZ3Jlc3Mgb2YgdGhlaXIKK3dvcmsuICBQcm9n
cmVzcyByZXBvcnRzIHdpbGwgYXBwZWFyIGluIHRoZSBlY2hvIGFyZWEgYW5kIG9uIHRoZSBzeXN0
ZW0KK3Rhc2tiYXIgRW1hY3MgaWNvbi4gIFRoaXMgdmFyaWFibGUgZGVmYXVsdHMgdG8gQGNvZGV7
dH0uICBDdXN0b21pemUgdGhpcwordmFyaWFibGUgYmVmb3JlIGVuYWJsaW5nIEBjb2Rle3N5c3Rl
bS10YXNrYmFyLW1vZGV9LiAgQHhyZWZ7UHJvZ3Jlc3MsLCwKK2VsaXNwfQorCitAdmluZGV4IHN5
c3RlbS10YXNrYmFyLWNsZWFyLWF0dGVudGlvbi1vbi1mcmFtZS1mb2N1cworICBUaGUgdXNlciBv
cHRpb24gQGNvZGV7c3lzdGVtLXRhc2tiYXItY2xlYXItYXR0ZW50aW9uLW9uLWZyYW1lLWZvY3Vz
fQordHVybnMgb24gYSBoZWxwZXIgdXNlZnVsIG9uIEdOVS9MaW51eCBELUJ1cyBwbGF0Zm9ybXMg
d2hpY2gKK2F1dG9tYXRpY2FsbHkgY2xlYXJzIHRoZSBzeXN0ZW0gdGFza2JhciBhdHRlbnRpb24g
aW5kaWNhdG9yIHdoZW4gYW55CitFbWFjcyBmcmFtZSBpcyBmb2N1c2VkLiAgVGhpcyBoYXMgbm8g
ZWZmZWN0IG9uIG1hY09TL0dOVXN0ZXAgb3IKK01TLVdpbmRvd3MuICBJdCBkZWZhdWx0cyB0byBA
Y29kZXt0fS4gIEN1c3RvbWl6ZSB0aGlzIHZhcmlhYmxlIGJlZm9yZQorZW5hYmxpbmcgQGNvZGV7
c3lzdGVtLXRhc2tiYXItbW9kZX0uCisKK0B2aW5kZXggc3lzdGVtLXRhc2tiYXItZGJ1cy1kZXNr
dG9wLWZpbGUtbmFtZQorICBUaGUgdXNlciBvcHRpb24gQGNvZGV7c3lzdGVtLXRhc2tiYXItZGJ1
cy1kZXNrdG9wLWZpbGUtbmFtZX0gaGVscHMKK0QtQnVzIG9uIEdOVS9MaW51eCBpZGVudGlmeSBs
YXVuY2hlZCBpbnN0YW5jZSBvZiBFbWFjcy4gIEl0IGRlZmF1bHRzIHRvCitAc2FtcHtlbWFjc2Ns
aWVudH0gYW5kIG1heSBuZWVkIHRvIGJlIGNoYW5nZWQgdG8gQHNhbXB7ZW1hY3N9IGRlcGVuZGlu
Zworb24geW91ciBHTlUvTGludXggY29uZmlndXJhdGlvbi4KKworQHZpbmRleCBzeXN0ZW0tdGFz
a2Jhci1kYnVzLXRpbWVvdXQKKyAgVGhlIHVzZXIgb3B0aW9uIEBjb2Rle3N5c3RlbS10YXNrYmFy
LWRidXMtdGltZW91dH0gaXMgYQordHJvdWJsZXNob290aW5nIHRvb2wgYW5kIGl0IGxpa2VseSBk
b2VzIG5vdCBuZWVkIHRvIGJlIGN1c3RvbWl6ZWQuICBJdAorZGVmYXVsdHMgdG8gQGNvZGV7bmls
fSB3aGljaCB1c2VzIHRoZSBELUJ1cyBkZWZhdWx0IHRpbWVvdXQgd2hpY2ggaXMKKzI1LDAwMG1z
IG9yIDI1cy4KKworQHhyZWZ7U3lzdGVtIFRhc2tiYXIsLCwgZWxpc3AsIFRoZSBFbWFjcyBMaXNw
IFJlZmVyZW5jZSBNYW51YWx9CisKIEBub2RlIERpYWxvZyBCb3hlcwogQHNlY3Rpb24gVXNpbmcg
RGlhbG9nIEJveGVzCiBAY2luZGV4IGRpYWxvZyBib3hlcwpkaWZmIC0tZ2l0IGEvZG9jL2xpc3By
ZWYvb3MudGV4aSBiL2RvYy9saXNwcmVmL29zLnRleGkKaW5kZXggNDRkZDNiYmI2M2MuLjAyZmVm
ZWEzNWFiIDEwMDY0NAotLS0gYS9kb2MvbGlzcHJlZi9vcy50ZXhpCisrKyBiL2RvYy9saXNwcmVm
L29zLnRleGkKQEAgLTM0LDYgKzM0LDcgQEAgU3lzdGVtIEludGVyZmFjZQogKiBCYXRjaCBNb2Rl
OjogICAgICAgICAgUnVubmluZyBFbWFjcyB3aXRob3V0IHRlcm1pbmFsIGludGVyYWN0aW9uLgog
KiBTZXNzaW9uIE1hbmFnZW1lbnQ6OiAgU2F2aW5nIGFuZCByZXN0b3Jpbmcgc3RhdGUgd2l0aCBY
IFNlc3Npb24gTWFuYWdlbWVudC4KICogRGVza3RvcCBOb3RpZmljYXRpb25zOjogRGVza3RvcCBu
b3RpZmljYXRpb25zLgorKiBTeXN0ZW0gVGFza2Jhcjo6ICAgICAgQ29udHJvbGxpbmcgc3lzdGVt
IEdVSSB0YXNrYmFyIGZlYXR1cmVzLgogKiBGaWxlIE5vdGlmaWNhdGlvbnM6OiAgRmlsZSBub3Rp
ZmljYXRpb25zLgogKiBEeW5hbWljIExpYnJhcmllczo6ICAgT24tZGVtYW5kIGxvYWRpbmcgb2Yg
c3VwcG9ydCBsaWJyYXJpZXMuCiAqIFNlY3VyaXR5IENvbnNpZGVyYXRpb25zOjogUnVubmluZyBF
bWFjcyBpbiBhbiB1bmZyaWVuZGx5IGVudmlyb25tZW50LgpAQCAtMzM3MSw2ICszMzcyLDEyNyBA
QCBEZXNrdG9wIE5vdGlmaWNhdGlvbnMKIGRpc3JlZ2FyZGVkLgogQGVuZCBkZWZ1bgogCitAbm9k
ZSBTeXN0ZW0gVGFza2JhcgorQHNlY3Rpb24gQ29udHJvbGxpbmcgU3lzdGVtIEdVSSBUYXNrYmFy
IEZlYXR1cmVzCitAY2luZGV4IHN5c3RlbSB0YXNrYmFyCitAY2luZGV4IG1vZGUsIHN5c3RlbSB0
YXNrYmFyCisKKyAgQHhyZWZ7U3lzdGVtIFRhc2tiYXIsLCwgZW1hY3MsIFRoZSBHTlUgRW1hY3Mg
TWFudWFsfSwgZm9yIGFuIG92ZXJ2aWV3CithbmQgY29uZmlndXJhdGlvbi4KKworQGRlZnVuIHN5
c3RlbS10YXNrYmFyLWJhZGdlICZvcHRpb25hbCBjb3VudAorVGhpcyBmdW5jdGlvbiBkaXNwbGF5
cyBAdmFye2NvdW50fSBhcyBhbiBvdmVybGF5IG9uIHRoZSBzeXN0ZW0gdGFza2JhcgorRW1hY3Mg
aWNvbi4KKworSWYgQHZhcntjb3VudH0gaXMgYW4gaW50ZWdlciwgZGlzcGxheSB0aGF0LgorCitJ
ZiBAdmFye2NvdW50fSBpcyBhIHN0cmluZyBvbiBiYWNrIGVuZHMgdGhhdCBzdXBwb3J0IHN0cmlu
Z3MsIGRpc3BsYXkKK3RoYXQuICBUaGUgc3RyaW5nIHNob3VsZCBiZSBzaG9ydC4KKworT24gYmFj
ayBlbmRzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHN0cmluZ3MsIGNvbnZlcnQgQHZhcntjb3VudH0g
dG8gYW4KK2ludGVnZXIsIG9yIEBjb2Rle25pbH0gaWYgdGhhdCBmYWlscy4KKworSWYgQHZhcntj
b3VudH0gaXMgQGNvZGV7bmlsfSBvciBhbiBlbXB0eSBzdHJpbmcsIHJlbW92ZSB0aGUgY291bnRl
ciBvcgorc2hvcnQgc3RyaW5nLgorCitEaXNwbGF5IHRoZSBzeXN0ZW0gdGFza2JhciBpY29uIGJh
ZGdlIHNldCB0byBAdmFye2NvdW50fS4gIElmCitAdmFye2NvdW50fSBpcyBAY29kZXtuaWx9LCBj
bGVhciB0aGUgYmFkZ2UuICBAdmFye2NvdW50fSBpcyB0eXBpY2FsbHkgYW4KK2ludGVnZXIuCisK
K0lmIEB2YXJ7Y291bnR9IGlzIGEgc3RyaW5nLCBpdCBpcyBjb252ZXJ0ZWQgdG8gYW4gaW50ZWdl
ciBvbiBzeXN0ZW1zCit0aGF0IGRvIG5vdCBzdXBwb3J0IHN0cmluZyBiYWRnZXMsIHN1Y2ggYXMg
R05VL0xpbnV4IEQtQnVzLCBhbmQgdGhlCitiYWRnZSB3aWxsIGJlIGNsZWFyZWQgaWYgdGhlIHN0
cmluZyBpcyBhbiBpbnZhbGlkIGludGVnZXIKK3JlcHJlc2VudGF0aW9uLiAgT24gc3lzdGVtcyB0
aGF0IHN1cHBvcnQgc3RyaW5ncywgc3VjaCBhcyBtYWNPUy9HTlVzdGVwCithbmQgTVMtV2luZG93
cywgdGhlIGJhZGdlIGlzIHNldCB0byB0aGUgc3RyaW5nIGFuZCBkaXNwbGF5ZWQsIGFuZCBtYXkg
YmUKK3RydW5jYXRlZCB0byBmaXQgdGhlIHZpc3VhbCBzcGFjZSBhbGxvY2F0ZWQgYnkgdGhlIHN5
c3RlbS4gIEluIGFueSBjYXNlLAoraWYgdGhlIHN0cmluZyBpcyBlbXB0eSwgY2xlYXIgdGhlIGJh
ZGdlLgorQGVuZCBkZWZ1bgorCitAZGVmdW4gc3lzdGVtLXRhc2tiYXItYXR0ZW50aW9uICZvcHRp
b25hbCB1cmdlbmN5IHRpbWVvdXQKK1RoaXMgZnVuY3Rpb24gZmxhc2hlcyBvciBib3VuY2VzIHN5
c3RlbSB0YXNrYmFyIEVtYWNzIGljb24gYW5kL29yIGl0cworZnJhbWUgdG8gYWxlcnQgdGhlIHVz
ZXIuCisKK0B2YXJ7dXJnZW5jeX0gY2FuIGJlIG9uZSBvZiB0aGUgc3ltYm9scyBAY29kZXtpbmZv
cm1hdGlvbmFsfSwgb3IKK0Bjb2Rle2NyaXRpY2FsfS4KKworSWYgQHZhcnt1cmdlbmN5fSBpcyBA
Y29kZXtuaWx9LCBjbGVhciB0aGUgYXR0ZW50aW9uIGluZGljYXRvci4KKworVGhlIGF0dGVudGlv
biBpbmRpY2F0b3IgaXMgY2xlYXJlZCBieSB0aGUgZWFybGllc3Qgb2YgYnJpbmdpbmcgdGhlIEVt
YWNzCitHVUkgaW50byBmb2N1cywgb3IgYWZ0ZXIgQHZhcnt0aW1lb3V0fSBzZWNvbmRzLiAgSWYg
QHZhcnt0aW1lb3V0fSBpcworQGNvZGV7bmlsfSwgdGhlIHN5c3RlbSBHVUkgYmVoYXZpb3IgaGFz
IHByaW9yaXR5LgorCitPbiBzb21lIGJhY2sgZW5kcywgQGNvZGV7Y3JpdGljYWx9IGhhcyB0aGUg
c2FtZSBlZmZlY3QgYXMKK0Bjb2Rle2luZm9ybWF0aW9uYWx9LgorCitPbiBzb21lIGJhY2sgZW5k
cywgYXR0ZW50aW9uIHdpbGwgYmUgZGlzcGxheWVkCitvbmx5IGlmIEVtYWNzIGlzIG5vdCB0aGUg
Y3VycmVudGx5IGZvY3VzZWQgYXBwbGljYXRpb24uCitAZW5kIGRlZnVuCisKK0BkZWZ1biBzeXN0
ZW0tdGFza2Jhci1wcm9ncmVzcyAmb3B0aW9uYWwgcHJvZ3Jlc3MKKyAgVGhpcyBmdW5jdGlvbiBk
aXNwbGF5cyBhIHByb2dyZXNzIGluZGljYXRvciBvdmVybGF5IG9uIHRoZSBzeXN0ZW0KK3Rhc2ti
YXIgRW1hY3MgaWNvbi4KKworQHZhcntwcm9ncmVzc30gaXMgYSBmbG9hdCBpbiB0aGUgcmFuZ2Ug
MC4wIHRvIDEuMC4gIElmIEB2YXJ7cHJvZ3Jlc3N9IGlzCitAY29kZXtuaWx9LCByZW1vdmUgdGhl
IHByb2dyZXNzIGluZGljYXRvci4KKworSXQgaXMgY29udmVuaWVudCB0byB1c2UgdGhlIGJ1aWx0
LWluIHByb2dyZXNzIHJlcG9ydGVyIGZ1bmN0aW9ucyB3aGljaCwKK3doZW4gQGNvZGV7c3lzdGVt
LXRhc2tiYXItbW9kZX0gaXMgZW5hYmxlZCwgaW50ZWdyYXRlIHdpdGgKK0Bjb2Rle3N5c3RlbS10
YXNrYmFyLXByb2dyZXNzfSBieSBkZWZhdWx0LiAgQHhyZWZ7UHJvZ3Jlc3N9CitAZW5kIGRlZnVu
CisKK0Bub2luZGVudAorRXhhbXBsZXMgb2Ygc3lzdGVtLXRhc2tiYXIgZnVuY3Rpb25zOgorCitA
bGlzcAorQGdyb3VwCis7OyBFbmFibGUgYW5kIGluaXRpYWxpemUgc3lzdGVtLXRhc2tiYXItbW9k
ZSBiZWZvcmUgY2FsbGluZyBpdHMKKzs7IHBhY2thZ2UgZnVuY3Rpb25zLgorKHN5c3RlbS10YXNr
YmFyLW1vZGUpCisKKzs7IERpc3BsYXkgYSBiYWRnZSBpbnRlZ2VyIG9uIHRoZSB0YXNrYmFyIGlj
b24uCisoc3lzdGVtLXRhc2tiYXItYmFkZ2UgZW1hY3MtbWFqb3ItdmVyc2lvbikKKworOzsgQSBz
dHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlciBpcyBjb252ZXJ0ZWQgdG8gYW4KKzs7
IGludGVnZXIgb24gR05VL0xpbnV4LgorKHN5c3RlbS10YXNrYmFyLWJhZGdlICIzMSIpCisKKzs7
IFNob3J0IHN0cmluZ3MgYXJlIGRpc3BsYXllZCBvbiBtYWNPUy9HTlVzdGVwIGFuZCBNUy1XaW5k
b3dzLgorKHN5c3RlbS10YXNrYmFyLWJhZGdlICJUZXN0IikKKworOzsgQ2xlYXIgdGhlIGJhZGdl
LgorKHN5c3RlbS10YXNrYmFyLWJhZGdlKQorQGVuZCBncm91cAorCitAZ3JvdXAKKzs7IEdldCB0
aGUgdXNlcidzIGF0dGVudGlvbiBhbmQgY2xlYXIgdGhlIHJlcXVlc3QgYWZ0ZXIgMyBzZWNvbmRz
LgorKHN5c3RlbS10YXNrYmFyLWF0dGVudGlvbiAnaW5mb3JtYXRpb25hbCAzKQorCis7OyBHZXQg
dGhlIHVzZXIncyBhdHRlbnRpb24gYW5kIGNsZWFyIHdoZW4gRW1hY3MgaXMgZm9jdXNlZC4KKyhz
eXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gJ2NyaXRpY2FsKQorCis7OyBDbGVhciB0aGUgYXR0ZW50
aW9uIHJlcXVlc3QuCisoc3lzdGVtLXRhc2tiYXItYXR0ZW50aW9uKQorQGVuZCBncm91cAorCitA
Z3JvdXAKKzs7IE1ha2Ugc3VyZSBzeXN0ZW0tdGFza2JhciBpcyBpbnRlZ3JhdGVkIHdpdGggcHJv
Z3Jlc3MtcmVwb3J0ZXIuCisoc2V0b3B0IHN5c3RlbS10YXNrYmFyLXVzZS1wcm9ncmVzcy1yZXBv
cnRlciB0KSA7IHQgaXMgdGhlIGRlZmF1bHQKKyhzeXN0ZW0tdGFza2Jhci1tb2RlKQorCis7OyBS
ZXBvcnQgYGRvdGltZXNgIHByb2dyZXNzIG9uIHRoZSB0YXNrYmFyIGljb24uCisoZG90aW1lcy13
aXRoLXByb2dyZXNzLXJlcG9ydGVyCisgICAgKGkgMTApCisgICAgIkNvdW50aW5nIGZyb20gMSB0
byAxMC4uLiIKKyAgKHNsZWVwLWZvciAxKSkKKworOzsgUmVwb3J0IGBkb2xpc3RgIHByb2dyZXNz
IG9uIHRoZSB0YXNrYmFyIGljb24uCisoZG9saXN0LXdpdGgtcHJvZ3Jlc3MtcmVwb3J0ZXIKKyAg
ICAoaSAobWFrZS1saXN0IDEwIHQpKQorICAgICJQcm9ncmVzcyBmcm9tIDEgdG8gMTAgZWxlbWVu
dHMuLi4iCisgIChzbGVlcC1mb3IgMSkpCitAZW5kIGdyb3VwCitAZW5kIGxpc3AKKwogQG5vZGUg
RmlsZSBOb3RpZmljYXRpb25zCiBAc2VjdGlvbiBOb3RpZmljYXRpb25zIG9uIEZpbGUgQ2hhbmdl
cwogQGNpbmRleCBmaWxlIG5vdGlmaWNhdGlvbnMKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRj
L05FV1MKaW5kZXggZmRiMWVlMDI4MTkuLmQzYTkyMDZjZWRiIDEwMDY0NAotLS0gYS9ldGMvTkVX
UworKysgYi9ldGMvTkVXUwpAQCAtMzE1MSw2ICszMTUxLDIxIEBAIFRoaXMgbGlicmFyeSBwcm92
aWRlcyBmdW5jdGlvbnMgdG8gdGhyb3R0bGUgb3IgZGVib3VuY2UgRW1hY3MgTGlzcAogZnVuY3Rp
b25zLiAgVGhpcyBpcyB1c2VmdWwgZm9yIGNvcnJhbGxpbmcgb3ZlcmVhZ2VyIGNvZGUgdGhhdCBp
cyBzbG93CiBhbmQgYmxvY2tzIEVtYWNzLCBvciBkb2VzIG5vdCBwcm92aWRlIHdheXMgdG8gbGlt
aXQgaG93IG9mdGVuIGl0IHJ1bnMuCiAKKysrKworKiogTmV3IG1vZGUgJ3N5c3RlbS10YXNrYmFy
LW1vZGUnLgorVGhpcyBpcyBhIGdsb2JhbCBtaW5vciBtb2RlIGFuZCBjb21wYW5pb24gZnVuY3Rp
b25zIHRoYXQgaW50ZWdyYXRlIEVtYWNzCit3aXRoIHN5c3RlbSBHVUkgdGFza2JhcnMgKGFsc28g
Y2FsbGVkIGRvY2tzIG9yIGxhdW5jaGVycyBvciBzb21ldGhpbmcKK3NpbWlsYXIpIHRvIGRpc3Bs
YXkgYSB0YXNrYmFyIGljb24gImJhZGdlIiBvdmVybGF5LCBhIHByb2dyZXNzIGJhcgorcmVwb3J0
IG92ZXJsYXksIGFsZXJ0IHRoZSB1c2VyIHRoYXQgYW4gRW1hY3Mgc2Vzc2lvbiBuZWVkcyBhdHRl
bnRpb24sCitvZnRlbiBieSBmbGFzaGluZyBvciBib3VuY2luZyB0aGUgRW1hY3MgYXBwbGljYXRp
b24gaWNvbi4gIFN1cHBvcnRlZAorY2FwYWJsZSBzeXN0ZW1zIGFyZSBHTlUvTGludXggdmlhIEQt
QnVzLCBtYWNPUy9HTlVzdGVwIDEwLjUrLCBNUy1XaW5kb3dzCis3Ky4KKworT24gR05VL0xpbnV4
IHN5c3RlbXMsIHNoZWxsIGV4dGVuc2lvbnMgb3Igc2ltaWxhciBoZWxwZXJzIHN1Y2ggYXMKKyJk
YXNoLXRvLWRvY2siIG1heSBiZSByZXF1aXJlZC4gIFNlZQorPGh0dHBzOi8vZXh0ZW5zaW9ucy5n
bm9tZS5vcmcvZXh0ZW5zaW9uLzMwNy9kYXNoLXRvLWRvY2svPiBhbmQKKzxodHRwczovL3dpa2ku
dWJ1bnR1LmNvbS9Vbml0eS9MYXVuY2hlckFQST4uCisKIAwKICogSW5jb21wYXRpYmxlIExpc3Ag
Q2hhbmdlcyBpbiBFbWFjcyAzMS4xCiAKQEAgLTM1NzksNiArMzU5NCwxMyBAQCBFbWFjcyB3aGVu
IGJ1aWx0IHdpdGggdGhlIHB1cmUgR1RLIHRvb2xraXQgbm93IHJlc3BlY3RzIGRlc2t0b3AKIGRh
cmsgYW5kIGxpZ2h0IG1vZGVzIGZvciBkcmF3aW5nIGEgR1RLIHRvb2xiYXIgYW5kIHdpZGdldHMs
CiBhdXRvbWF0aWNhbGx5IHRvZ2dsaW5nIGJldHdlZW4gdGhlbS4KIAorKysrCisqKiBQcm9ncmVz
cyByZXBvcnRlciBjYWxsYmFja3MuCisnbWFrZS1wcm9ncmVzcy1yZXBvcnRlcicgbm93IGFjY2Vw
dHMgb3B0aW9uYWwgYXJndW1lbnRzIFVQREFURS1DQUxMQkFDSywKK2NhbGxlZCBvbiBwcm9ncmVz
cyBzdGVwcywgYW5kIERPTkUtQ0FMTEJBQ0ssIGNhbGxlZCB3aGVuIHRoZSBwcm9ncmVzcworcmVw
b3J0ZXIgaXMgZG9uZS4gIFNlZSB0aGUgJ21ha2UtcHJvZ3Jlc3MtcmVwb3J0ZXInIGRvY3N0cmlu
ZyBmb3IgYSBmdWxsCitzcGVjaWZpY2F0aW9uIG9mIHRoZXNlIG5ldyBvcHRpb25hbCBhcmd1bWVu
dHMuCisKIAwKICogQ2hhbmdlcyBpbiBFbWFjcyAzMS4xIG9uIE5vbi1GcmVlIE9wZXJhdGluZyBT
eXN0ZW1zCiAKZGlmZiAtLWdpdCBhL2xpc3Avc3Vici5lbCBiL2xpc3Avc3Vici5lbAppbmRleCBm
Y2Y5MzFiNjRlOS4uMzcyMDBmMGM5NjEgMTAwNjQ0Ci0tLSBhL2xpc3Avc3Vici5lbAorKysgYi9s
aXNwL3N1YnIuZWwKQEAgLTY5NzQsMTkgKzY5NzQsMzMgQEAgc2V0LXRyYW5zaWVudC1tYXAKIDs7
IGRpZ2l0cyBvZiBwcmVjaXNpb24sIGl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlciBoZXJlLiAgT24g
dGhlIG90aGVyCiA7OyBoYW5kLCBpdCBncmVhdGx5IHNpbXBsaWZpZXMgdGhlIGNvZGUuCiAKKyhk
ZWZ2YXIgcHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlLWZ1bmN0aW9ucyAobGlzdCAjJ3Byb2dyZXNz
LXJlcG9ydGVyLWVjaG8tYXJlYSkKKyAgIlNwZWNpYWwgaG9vayBydW4gb24gcHJvZ3Jlc3MtcmVw
b3J0ZXIgdXBkYXRlcy4KK0VhY2ggZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50
czoKK1JFUE9SVEVSIGlzIHRoZSByZXN1bHQgb2YgYSBjYWxsIHRvIGBtYWtlLXByb2dyZXNzLXJl
cG9ydGVyJy4KK1NUQVRFIGNhbiBiZSBvbmUgb2Y6CistIEEgZmxvYXQgcmVwcmVzZW50aW5nIHRo
ZSBwZXJjZW50YWdlIGNvbXBsZXRlIGluIHRoZSByYW5nZSAwLjAtMS4wCitmb3IgYSBudW1lcmlj
IHJlcG9ydGVyLgorLSBBbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgaW5kZXggd2hpY2ggY3lj
bGVzIHRocm91Z2ggdGhlIHJhbmdlIDAtMworZm9yIGEgcHVsc2luZyByZXBvcnRlci4KKy0gVGhl
IHN5bWJvbCBgZG9uZScgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcHJvZ3Jlc3MgcmVwb3J0ZXIgaXMg
Y29tcGxldGUuIikKKwogKGRlZnN1YnN0IHByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZSAocmVwb3J0
ZXIgJm9wdGlvbmFsIHZhbHVlIHN1ZmZpeCkKLSAgIlJlcG9ydCBwcm9ncmVzcyBvZiBhbiBvcGVy
YXRpb24gaW4gdGhlIGVjaG8gYXJlYS4KKyAgIlJlcG9ydCBwcm9ncmVzcyBvZiBhbiBvcGVyYXRp
b24sIGJ5IGRlZmF1bHQsIGluIHRoZSBlY2hvIGFyZWEuCiBSRVBPUlRFUiBzaG91bGQgYmUgdGhl
IHJlc3VsdCBvZiBhIGNhbGwgdG8gYG1ha2UtcHJvZ3Jlc3MtcmVwb3J0ZXInLgogCiBJZiBSRVBP
UlRFUiBpcyBhIG51bWVyaWNhbCBwcm9ncmVzcyByZXBvcnRlci0tLWkuZS4gaWYgaXQgd2FzCi0g
bWFkZSB1c2luZyBub24tbmlsIE1JTi1WQUxVRSBhbmQgTUFYLVZBTFVFIGFyZ3VtZW50cyB0bwot
IGBtYWtlLXByb2dyZXNzLXJlcG9ydGVyJy0tLXRoZW4gVkFMVUUgc2hvdWxkIGJlIGEgbnVtYmVy
IGJldHdlZW4KLSBNSU4tVkFMVUUgYW5kIE1BWC1WQUxVRS4KK21hZGUgdXNpbmcgbm9uLW5pbCBN
SU4tVkFMVUUgYW5kIE1BWC1WQUxVRSBhcmd1bWVudHMgdG8KK2BtYWtlLXByb2dyZXNzLXJlcG9y
dGVyJy0tLXRoZW4gVkFMVUUgc2hvdWxkIGJlIGEgbnVtYmVyIGJldHdlZW4KK01JTi1WQUxVRSBh
bmQgTUFYLVZBTFVFLgorCitPcHRpb25hbCBhcmd1bWVudCBTVUZGSVggaXMgYSBzdHJpbmcgdG8g
YmUgZGlzcGxheWVkIGFmdGVyIFJFUE9SVEVSJ3MKK21haW4gbWVzc2FnZSBhbmQgcHJvZ3Jlc3Mg
dGV4dC4gIElmIFJFUE9SVEVSIGlzIGEgbm9uLW51bWVyaWNhbAorcmVwb3J0ZXIsIHRoZW4gVkFM
VUUgc2hvdWxkIGJlIG5pbCwgb3IgYSBzdHJpbmcgdG8gdXNlIGluc3RlYWQgb2YKK1NVRkZJWC4g
IFNVRkZJWCBpcyBjb25zaWRlcmVkIG9ic29sZXRlIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiB0aGUg
ZnV0dXJlLgogCi1PcHRpb25hbCBhcmd1bWVudCBTVUZGSVggaXMgYSBzdHJpbmcgdG8gYmUgZGlz
cGxheWVkIGFmdGVyCi1SRVBPUlRFUidzIG1haW4gbWVzc2FnZSBhbmQgcHJvZ3Jlc3MgdGV4dC4g
IElmIFJFUE9SVEVSIGlzIGEKLW5vbi1udW1lcmljYWwgcmVwb3J0ZXIsIHRoZW4gVkFMVUUgc2hv
dWxkIGJlIG5pbCwgb3IgYSBzdHJpbmcgdG8KLXVzZSBpbnN0ZWFkIG9mIFNVRkZJWC4KK1NlZSBg
cHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlLWZ1bmN0aW9ucycgZm9yIHRoZSBsaXN0IG9mIGZ1bmN0
aW9ucworY2FsbGVkIG9uIGVhY2ggdXBkYXRlLgogCiBUaGlzIGZ1bmN0aW9uIGlzIHJlbGF0aXZl
bHkgaW5leHBlbnNpdmUuICBJZiB0aGUgY2hhbmdlIHNpbmNlCiBsYXN0IHVwZGF0ZSBpcyB0b28g
c21hbGwgb3IgaW5zdWZmaWNpZW50IHRpbWUgaGFzIHBhc3NlZCwgaXQgZG9lcwpAQCAtNzA0NSw2
ICs3MDU5LDEwIEBAIG1ha2UtcHJvZ3Jlc3MtcmVwb3J0ZXIKIAogKGRlZmFsaWFzICdwcm9ncmVz
cy1yZXBvcnRlci1tYWtlICMnbWFrZS1wcm9ncmVzcy1yZXBvcnRlcikKIAorKGRlZnVuIHByb2dy
ZXNzLXJlcG9ydGVyLXRleHQgKHJlcG9ydGVyKQorICAiUmV0dXJuIFJFUE9SVEVSJ3MgdGV4dC4i
CisgIChhcmVmIChjZHIgcmVwb3J0ZXIpIDMpKQorCiAoZGVmdW4gcHJvZ3Jlc3MtcmVwb3J0ZXIt
Zm9yY2UtdXBkYXRlIChyZXBvcnRlciAmb3B0aW9uYWwgdmFsdWUgbmV3LW1lc3NhZ2Ugc3VmZml4
KQogICAiUmVwb3J0IHByb2dyZXNzIG9mIGFuIG9wZXJhdGlvbiBpbiB0aGUgZWNobyBhcmVhIHVu
Y29uZGl0aW9uYWxseS4KIApAQCAtNzA2MCwxMiArNzA3OCwyOSBAQCBwcm9ncmVzcy1yZXBvcnRl
ci1mb3JjZS11cGRhdGUKIChkZWZ2YXIgcHJvZ3Jlc3MtcmVwb3J0ZXItLXB1bHNlLWNoYXJhY3Rl
cnMgWyItIiAiXFwiICJ8IiAiLyJdCiAgICJDaGFyYWN0ZXJzIHRvIHVzZSBmb3IgcHVsc2luZyBw
cm9ncmVzcyByZXBvcnRlcnMuIikKIAorKGRlZnVuIHByb2dyZXNzLXJlcG9ydGVyLWVjaG8tYXJl
YSAocmVwb3J0ZXIgc3RhdGUpCisgICJQcm9ncmVzcyByZXBvcnRlciBlY2hvIGFyZWEgdXBkYXRl
IGZ1bmN0aW9uLgorUkVQT1JURVIgYW5kIFNUQVRFIGFyZSB0aGUgc2FtZSBhcyBpbgorYHByb2dy
ZXNzLXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMnLiIKKyAgKGxldCAoKHRleHQgKHByb2dyZXNz
LXJlcG9ydGVyLXRleHQgcmVwb3J0ZXIpKSkKKyAgICAocGNhc2Ugc3RhdGUKKyAgICAgICgocHJl
ZCBmbG9hdHApCisgICAgICAgKGlmIChwbHVzcCBzdGF0ZSkKKyAgICAgICAgICAgKG1lc3NhZ2Ug
IiVzJWQlJSIgdGV4dCAoKiBzdGF0ZSAxMDAuMCkpCisgICAgICAgICAobWVzc2FnZSAiJXMiIHRl
eHQpKSkKKyAgICAgICgocHJlZCBpbnRlZ2VycCkKKyAgICAgICAobGV0ICgobWVzc2FnZS1sb2ct
bWF4IG5pbCkKKyAgICAgICAgICAgICAocHVsc2UtY2hhciAoYXJlZiBwcm9ncmVzcy1yZXBvcnRl
ci0tcHVsc2UtY2hhcmFjdGVycworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRl
KSkpCisgICAgICAgICAobWVzc2FnZSAiJXMgJXMiIHRleHQgcHVsc2UtY2hhcikpKQorICAgICAg
KCdkb25lCisgICAgICAgKG1lc3NhZ2UgIiVzZG9uZSIgdGV4dCkpKSkpCisKIChkZWZ1biBwcm9n
cmVzcy1yZXBvcnRlci1kby11cGRhdGUgKHJlcG9ydGVyIHZhbHVlICZvcHRpb25hbCBzdWZmaXgp
Ci0gIChsZXQqICgocGFyYW1ldGVycyAgIChjZHIgcmVwb3J0ZXIpKQotCSAodXBkYXRlLXRpbWUg
IChhcmVmIHBhcmFtZXRlcnMgMCkpCi0JIChtaW4tdmFsdWUgICAgKGFyZWYgcGFyYW1ldGVycyAx
KSkKLQkgKG1heC12YWx1ZSAgICAoYXJlZiBwYXJhbWV0ZXJzIDIpKQotCSAodGV4dCAgICAgICAg
IChhcmVmIHBhcmFtZXRlcnMgMykpCisgIChsZXQqICgocGFyYW1ldGVycyAgICAgIChjZHIgcmVw
b3J0ZXIpKQorCSAodXBkYXRlLXRpbWUgICAgIChhcmVmIHBhcmFtZXRlcnMgMCkpCisJIChtaW4t
dmFsdWUgICAgICAgKGFyZWYgcGFyYW1ldGVycyAxKSkKKwkgKG1heC12YWx1ZSAgICAgICAoYXJl
ZiBwYXJhbWV0ZXJzIDIpKQogCSAoZW5vdWdoLXRpbWUtcGFzc2VkCiAJICA7OyBTZWUgaWYgZW5v
dWdoIHRpbWUgaGFzIHBhc3NlZCBzaW5jZSB0aGUgbGFzdCB1cGRhdGUuCiAJICAob3IgKG5vdCB1
cGRhdGUtdGltZSkKQEAgLTcwOTgsOSArNzEzMyw5IEBAIHByb2dyZXNzLXJlcG9ydGVyLWRvLXVw
ZGF0ZQogICAgICAgICAgICAgICAgKGlmIHN1ZmZpeAogICAgICAgICAgICAgICAgICAgIChhc2V0
IHBhcmFtZXRlcnMgNiBzdWZmaXgpCiAgICAgICAgICAgICAgICAgIChzZXRxIHN1ZmZpeCAob3Ig
KGFyZWYgcGFyYW1ldGVycyA2KSAiIikpKQotICAgICAgICAgICAgICAgKGlmIChwbHVzcCBwZXJj
ZW50YWdlKQotICAgICAgICAgICAgICAgICAgIChtZXNzYWdlICIlcyVkJSUgJXMiIHRleHQgcGVy
Y2VudGFnZSBzdWZmaXgpCi0gICAgICAgICAgICAgICAgIChtZXNzYWdlICIlcyAlcyIgdGV4dCBz
dWZmaXgpKSkpKQorICAgICAgICAgICAgICAgKHJ1bi1ob29rLXdpdGgtYXJncyAncHJvZ3Jlc3Mt
cmVwb3J0ZXItdXBkYXRlLWZ1bmN0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXBvcnRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLyBwZXJj
ZW50YWdlIDEwMC4wKSkpKSkKIAkgIDs7IFB1bHNpbmcgaW5kaWNhdG9yCiAJICAoZW5vdWdoLXRp
bWUtcGFzc2VkCiAgICAgICAgICAgICh3aGVuIChhbmQgdmFsdWUgKG5vdCBzdWZmaXgpKQpAQCAt
NzEwOCwxNiArNzE0MywxOCBAQCBwcm9ncmVzcy1yZXBvcnRlci1kby11cGRhdGUKICAgICAgICAg
ICAgKGlmIHN1ZmZpeAogICAgICAgICAgICAgICAgKGFzZXQgcGFyYW1ldGVycyA2IHN1ZmZpeCkK
ICAgICAgICAgICAgICAoc2V0cSBzdWZmaXggKG9yIChhcmVmIHBhcmFtZXRlcnMgNikgIiIpKSkK
LSAgICAgICAgICAgKGxldCogKChpbmRleCAobW9kICgxKyAoY2FyIHJlcG9ydGVyKSkgNCkpCi0g
ICAgICAgICAgICAgICAgICAobWVzc2FnZS1sb2ctbWF4IG5pbCkKLSAgICAgICAgICAgICAgICAg
IChwdWxzZS1jaGFyIChhcmVmIHByb2dyZXNzLXJlcG9ydGVyLS1wdWxzZS1jaGFyYWN0ZXJzCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCkpKQorICAgICAgICAgICAo
bGV0ICgoaW5kZXggKG1vZCAoMSsgKGNhciByZXBvcnRlcikpIDQpKSkKIAkgICAgIChzZXRjYXIg
cmVwb3J0ZXIgaW5kZXgpCi0gICAgICAgICAgICAgKG1lc3NhZ2UgIiVzICVzICVzIiB0ZXh0IHB1
bHNlLWNoYXIgc3VmZml4KSkpKSkpCisgICAgICAgICAgICAgKHJ1bi1ob29rLXdpdGgtYXJncyAn
cHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlLWZ1bmN0aW9ucworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVwb3J0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
ZGV4KSkpKSkpCiAKIChkZWZ1biBwcm9ncmVzcy1yZXBvcnRlci1kb25lIChyZXBvcnRlcikKLSAg
IlByaW50IHJlcG9ydGVyJ3MgbWVzc2FnZSBmb2xsb3dlZCBieSB3b3JkIFwiZG9uZVwiIGluIGVj
aG8gYXJlYS4iCi0gIChtZXNzYWdlICIlc2RvbmUiIChhcmVmIChjZHIgcmVwb3J0ZXIpIDMpKSkK
KyAgIlByaW50IHJlcG9ydGVyJ3MgbWVzc2FnZSBmb2xsb3dlZCBieSB3b3JkIFwiZG9uZVwiIGlu
IGVjaG8gYXJlYS4KK0NhbGwgdGhlIGZ1bmN0aW9ucyBvbiBgcHJvZ3Jlc3MtcmVwb3J0ZXItdXBk
YXRlLWZ1bmN0aW9uc2AuIgorICAocnVuLWhvb2std2l0aC1hcmdzICdwcm9ncmVzcy1yZXBvcnRl
ci11cGRhdGUtZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZXIKKyAgICAg
ICAgICAgICAgICAgICAgICAnZG9uZSkpCiAKIChkZWZtYWNybyBkb3RpbWVzLXdpdGgtcHJvZ3Jl
c3MtcmVwb3J0ZXIgKHNwZWMgcmVwb3J0ZXItb3ItbWVzc2FnZSAmcmVzdCBib2R5KQogICAiTG9v
cCBhIGNlcnRhaW4gbnVtYmVyIG9mIHRpbWVzIGFuZCByZXBvcnQgcHJvZ3Jlc3MgaW4gdGhlIGVj
aG8gYXJlYS4KZGlmZiAtLWdpdCBhL2xpc3Avc3lzdGVtLXRhc2tiYXIuZWwgYi9saXNwL3N5c3Rl
bS10YXNrYmFyLmVsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43ODcy
ZDUyNzU0OQotLS0gL2Rldi9udWxsCisrKyBiL2xpc3Avc3lzdGVtLXRhc2tiYXIuZWwKQEAgLTAs
MCArMSw1MzQgQEAKKzs7OyBzeXN0ZW0tdGFza2Jhci5lbCAtLS0gU3lzdGVtIEdVSSB0YXNrYmFy
L2RvY2svbGF1bmNoZXIgc3RhdHVzIGRpc3BsYXkgLSotIGxleGljYWwtYmluZGluZzogdCAtKi0K
KworOzsgQ29weXJpZ2h0IChDKSAyMDI1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor
Cis7OyBBdXRob3I6IFN0ZXBoYW5lIE1hcmtzCis7OyBNYWludGFpbmVyOiBlbWFjcy1kZXZlbEBn
bnUub3JnCis7OyBLZXl3b3JkczogY29udmVuaWVuY2UKKzs7IFBhY2thZ2UtUmVxdWlyZXM6ICgo
ZW1hY3MgIjMxLjEiKSkKKworOzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEVtYWNzLgorCis7
OyBHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yIG1vZGlmeQorOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCis7OyAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCis7OyBHTlUgRW1hY3MgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKzs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7OyBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCis7OyBH
TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCis7OyBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251
Lm9yZy9saWNlbnNlcy8+LgorCis7OzsgQ29tbWVudGFyeToKKworOzsgVXNlIHRoaXMgcGFja2Fn
ZSB0byBkaXNwbGF5IGEgdGFza2JhciBpY29uICJiYWRnZSIgb3ZlcmxheSwgYQorOzsgcHJvZ3Jl
c3MgYmFyIHJlcG9ydCBvdmVybGF5LCBvciBhbGVydCB0aGUgdXNlciB0aGF0IGFuIEVtYWNzIHNl
c3Npb24KKzs7IG5lZWRzIGF0dGVudGlvbiwgb2Z0ZW4gYnkgZmxhc2hpbmcgb3IgYm91bmNpbmcg
dGhlIEVtYWNzIGFwcGxpY2F0aW9uCis7OyBpY29uLgorOzsKKzs7IE5vdGU6IFRoZSB0ZXJtIHRh
c2tiYXIgaXMgaW5jbHVzaXZlIG9mIGRvY2sgb3IgbGF1bmNoZXIgb3Igc29tZSBvdGhlcgorOzsg
dGVybWlub2xvZ3kgYXMgbWF5IGJlIHVzZWQgZm9yIHlvdXIgc3lzdGVtLgorOzsKKzs7IE9uIEdO
VS9MaW51eCwgdGhlIHZpc2libGUgZWZmZWN0cyB3aWxsIGFwcGVhciBvbiB0aGUgZGVzdGluYXRp
b25zCis7OyBkZXRlcm1pbmVkIGJ5IHlvdXIgc2hlbGwgZXh0ZW5zaW9uLCBtb3N0IG9mdGVuIHRo
ZSBhcHBsaWNhdGlvbgorOzsgbGF1bmNoZXIgb3IgZG9jayBwYW5lbCwgb3IgdGhlIHRvcCBwYW5l
bC4gIEVmZmVjdHMgYXJlIGdsb2JhbCBmb3IgYW4KKzs7IEVtYWNzIGluc3RhbmNlLgorOzsKKzs7
IE9uIG1hY09TL0dOVXN0ZXAsIHRoZSBlZmZlY3RzIHdpbGwgYXBwZWFyIG9uIHRoZSBEb2NrIGFu
ZCBpbiB0aGUgQXBwCis7OyBTd2l0Y2hlci4gIEVmZmVjdHMgYXJlIGdsb2JhbCBmb3IgYW4gRW1h
Y3MgaW5zdGFuY2UuCis7OworOzsgT24gTVMtV2luZG93cywgdGhlIGVmZmVjdHMgYXBwZWFyIG9u
IHRoZSB0YXNrYmFyLiAgRWZmZWN0cyBhcmUKKzs7IGFzc29jaWF0ZWQgd2l0aCB0aGUgZnJhbWUg
ZnJvbSB3aGljaCB0aGV5IGFyZSBpbml0aWF0ZWQuCisKKzs7OyBVc2FnZToKKworOzsgVGhlIGds
b2JhbCBtaW5vciBtb2RlIGBzeXN0ZW0tdGFza2Jhci1tb2RlJyBpbml0aWFsaXplcyB0aGUgR1VJ
Cis7OyBwbGF0Zm9ybSBiYWNrLWVuZCBhbmQgbXVzdCBiZSBlbmFibGVkIGJlZm9yZSB1c2luZyB0
aGUgZnVuY3Rpb25zCis7OyBiZWxvdy4KKzs7Cis7OyBgc3lzdGVtLXRhc2tiYXItYmFkZ2UnIG92
ZXJsYXlzIGEgY291bnQsIHdoaWNoIGlzIGFuIGludGVnZXIsIG9uIHRoZQorOzsgRW1hY3MgdGFz
a2JhciBpY29uLiAgWW91IGNhbiB1c2UgdGhpcywgZm9yIGV4YW1wbGUsIHRvIGluZGljYXRlIHRo
ZQorOzsgbnVtYmVyIG9mIHVucmVhZCBlbWFpbCBtZXNzYWdlcy4gIE9uIEdOVS9MaW51eCwgdGhl
IGNvdW50IG11c3QgYmUgYW4KKzs7IGludGVnZXIgb3IgbmlsLiAgT24gbWFjT1MvR05Vc3RlcCwg
dGhlIGNvdW50IG1heSBiZSBhbiBpbnRlZ2VyIG9yIGEKKzs7IHN0cmluZywgd2hpY2ggdGhlIG9w
ZXJhdGluZyBzeXN0ZW0gd2lsbCBhYmJyZXZpYXRlIGlmIHRvbyBsb25nLiAgT24KKzs7IE1TLVdp
bmRvd3MsIHRoZSB0YXNrYmFyIGJhZGdlIHdpbGwgYmUgYWJicmV2aWF0ZWQgdG8gdGhyZWUKKzs7
IGNoYXJhY3RlcnM7IGlmIHRoZSBjb3VudCBpcyBhbiBpbnRlZ2VyIG91dHNpZGUgdGhlIHJhbmdl
IC05OSB0byA5OSwKKzs7IGl0IGlzIHNob3duIGFzICItOTkiIG9yICI5OSsiLCBpZiBjb3VudCBp
cyBhIHN0cmluZyBsb25nZXIgdGhhbiAzCis7OyBjaGFyYWN0ZXJzIGl0IGlzIHRydW5jYXRlZC4K
Kzs7Cis7OyBgc3lzdGVtLXRhc2tiYXItYXR0ZW50aW9uJyBmbGFzaGVzIG9yIGJvdW5jZXMgdGhl
IEVtYWNzIHRhc2tiYXIgaWNvbgorOzsgdG8gaW5kaWNhdGUgdGhhdCB5b3VyIEVtYWNzIHNlc3Np
b24gd2FudHMgYXR0ZW50aW9uLiAgSXRzIGJlaGF2aW9ycworOzsgYXJlIGJhY2stZW5kIHNwZWNp
ZmljLgorOzsKKzs7IGBzeXN0ZW0tdGFza2Jhci1wcm9ncmVzcycgb3ZlcmxheXMgYSBncmFwaGlj
YWwgcHJvZ3Jlc3MgYmFyIG9uIHRoZQorOzsgRW1hY3MgdGFza2JhciBpY29uIHRvIGlsbHVzdHJh
dGUgcHJvZ3Jlc3Mgb2YgYSBwb3RlbnRpYWxseQorOzsgbG9uZy1ydW5uaW5nIG9wZXJhdGlvbi4K
Kzs7Cis7OyBXaGVuIGBzeXN0ZW0tdGFza2Jhci1tb2RlJyBpcyBlbmFibGVkLCBFbWFjcyBwcm9n
cmVzcyByZXBvcnRlcnMgd2lsbAorOzsgYmUgZW5oYW5jZWQgdG8gZGlzcGxheSB0YXNrYmFyIEdV
SSBwcm9ncmVzcyBiYXJzLiAgQ3VzdG9taXplCis7OyBgc3lzdGVtLXRhc2tiYXItdXNlLXByb2dy
ZXNzLXJlcG9ydGVyJyBpZiB5b3Ugd2FudCB0byBkaXNhYmxlIHRoaXMKKzs7IGJlZm9yZSBlbmFi
bGluZyBzeXN0ZW0tdGFza2Jhci1tb2RlLgorOzsKKzs7IE9uIEdOVS9MaW51eCBzeXN0ZW1zLCB0
YXNrYmFyIGVmZmVjdHMgd2lsbCBhcHBlYXIgb24gdGhlIEdVSQorOzsgd2luZG93LXN5c3RlbSBk
ZXN0aW5hdGlvbnMgZGV0ZXJtaW5lZCBieSB5b3VyIHNoZWxsIGV4dGVuc2lvbiwgbW9zdAorOzsg
b2Z0ZW4gdGhlIGFwcGxpY2F0aW9uIGxhdW5jaGVyIG9yIGRvY2sgcGFuZWwsIG9yIHRoZSB0b3Ag
cGFuZWwuCis7OyBUYXNrYmFyIGVmZmVjdHMgYXJlIGdsb2JhbCBmb3IgYW4gRW1hY3MgaW5zdGFu
Y2UuICBUaGUgR05VL0xpbnV4Cis7OyBpbXBsZW1lbnRhdGlvbiBzZW5kcyB0YXNrYmFyIG1lc3Nh
Z2VzIHRvIHRoZSBzeXN0ZW0gR1VJIHVzaW5nIEQtQnVzLgorOzsgWW91IG1heSBuZWVkIHRvIGlu
c3RhbGwgb3IgY29uZmlndXJlIHNoZWxsIGV4dGVuc2lvbnMgc3VjaCBhcworOzsgaHR0cHM6Ly9l
eHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vMzA3L2Rhc2gtdG8tZG9jay8gdGhhdAorOzsg
aW1wbGVtZW50IFVidW50dSdzIFVuaXR5IEQtQnVzIGxhdW5jaGVyIHNwZWMgd2hpY2ggeW91IGNh
biByZWFkIG1vcmUKKzs7IGFib3V0IGhlcmUgaHR0cHM6Ly93aWtpLnVidW50dS5jb20vVW5pdHkv
TGF1bmNoZXJBUEkuCis7OworOzsgWW91ciBMaW51eCBFbWFjcyBpbnN0YW5jZSBzaG91bGQgYmUg
bGF1bmNoZWQgdmlhIGFuIGFwcHJvcHJpYXRlIHNoZWxsCis7OyAiZGVza3RvcCIgZmlsZSBzdWNo
IGFzIHRob3NlIGRpc3RyaWJ1dGVkIHdpdGggRW1hY3M7IGUuZy4sCis7OyAiZXRjL2VtYWNzY2xp
ZW50LmRlc2t0b3AiIGFzIGRvY3VtZW50ZWQgaGVyZQorOzsgaHR0cHM6Ly9zcGVjaWZpY2F0aW9u
cy5mcmVlZGVza3RvcC5vcmcvZGVza3RvcC1lbnRyeS9sYXRlc3QvIGFuZAorOzsgd2hpY2ggeW91
ciBHVUkgc3lzdGVtIHNob3VsZCBpbXBsZW1lbnQuCis7OworOzsgT24gbWFjT1MvR05Vc3RlcCAx
MC41KywgdGFza2JhciBlZmZlY3RzIGFwcGVhciBvbiB0aGUgRG9jayBhbmQgaW4gdGhlCis7OyBB
cHAgU3dpdGNoZXIuICBFZmZlY3RzIGFyZSBnbG9iYWwgZm9yIGFuIEVtYWNzIGluc3RhbmNlLgor
OzsgbWFjT1MvR05Vc3RlcCBpcyBpbXBsZW1lbnRlZCB2aWEgaXRzIG5hdGl2ZSBBUEkgYW5kIG5l
ZWRzIG5vIHNwZWNpYWwKKzs7IGNvbmZpZ3VyYXRpb24uCis7OworOzsgT24gTVMtV2luZG93cyA3
KywgdGFza2JhciBlZmZlY3RzIGFwcGVhciBvbiB0aGUgV2luZG93cyB0YXNrYmFyLgorOzsgRWZm
ZWN0cyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBmcmFtZSBmcm9tIHdoaWNoIHRoZXkgYXJlIGlu
aXRpYXRlZC4KKzs7IE1TLVdpbmRvd3MgaXMgaW1wbGVtZW50ZWQgdmlhIGl0cyBuYXRpdmUgQVBJ
IGFuZCBuZWVkcyBubyBzcGVjaWFsCis7OyBjb25maWd1cmF0aW9uLgorOzsKKzs7IFRvIGFkZCBz
dXBwb3J0IGZvciBhZGRpdGlvbmFsIHN5c3RlbXMsIHByb3ZpZGUgYSBiYWNrIGVuZCB0aGF0Cis7
OyBpbXBsZW1lbnRzIHRoZSBjbC1nZW5lcmljIGZ1bmN0aW9ucyBiZWxvdy4KKworOzs7IENvZGU6
CisKKyhyZXF1aXJlICdkYnVzKQorCisoZGVmZ3JvdXAgc3lzdGVtLXRhc2tiYXIgbmlsCisgICJT
eXN0ZW0gR1VJIHRhc2tiYXIgaWNvbiBiYWRnZSwgcHJvZ3Jlc3MgcmVwb3J0LCBhbGVydGluZy4i
CisgIDpncm91cCAnY29udmVuaWVuY2UKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmY3VzdG9t
IHN5c3RlbS10YXNrYmFyLXVzZS1wcm9ncmVzcy1yZXBvcnRlciB0CisgICJTdXBwbGVtZW50IHBy
b2dyZXNzLXJlcG9ydGVycyB3aXRoIEdVSSB0YXNrYmFyIGljb24gcHJvZ3Jlc3MgYmFycy4KK1Nl
dCB0aGlzIGJlZm9yZSBlbmFibGluZyBgc3lzdGVtLXRhc2tiYXItbW9kZScuIgorICA6dHlwZSAn
Ym9vbGVhbgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZjdXN0b20gc3lzdGVtLXRhc2tiYXIt
Y2xlYXItYXR0ZW50aW9uLW9uLWZyYW1lLWZvY3VzIHQKKyAgIkNsZWFyIHRoZSBpY29uIGF0dGVu
dGlvbiBpbmRpY2F0b3Igd2hlbiBhbnkgR1VJIGZyYW1lIGlzIGZvY3VzZWQuCitCYWNrIGVuZHMg
dGhhdCBhdXRvbWF0aWNhbGx5IGNsZWFyIHRoZSBhdHRlbnRpb24gaW5kaWNhdG9yLCBzdWNoIGFz
CittYWNPUy9HTlVzdGVwIGFuZCBNUy1XaW5kb3dzLCBpZ25vcmUgdGhpcyBvcHRpb24uIgorICA6
dHlwZSAnYm9vbGVhbgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZjdXN0b20gc3lzdGVtLXRh
c2tiYXItZGJ1cy1kZXNrdG9wLWZpbGUtbmFtZSAiZW1hY3NjbGllbnQiCisgICJELUJ1cyBkZXNr
dG9wIGZpbGUgYmFzZSBuYW1lIGZvciB0aGUgc3lzdGVtIHRhc2tiYXIgZGVzdGluYXRpb24uCitU
aGlzIHNob3VsZCBiZSB0aGUgYmFzZSBuYW1lIG9mIHRoZSBkZXNrdG9wIGZpbGUgdXNlZCB0byBs
YXVuY2ggYW4gRW1hY3MKK2luc3RhbmNlLiAgRm9yIGV4YW1wbGUsIGlmIHlvdXIgbGF1bmNoZXIg
ZGVza3RvcCBmaWxlIGlzIGNhbGxlZAorXCJlbWFjcy5kZXNrdG9wXCIsIHRoaXMgb3B0aW9uIHNo
b3VsZCBiZSBcImVtYWNzXCIuIgorICA6dHlwZSAnc3RyaW5nCisgIDp2ZXJzaW9uICIzMS4xIikK
KworKGRlZmN1c3RvbSBzeXN0ZW0tdGFza2Jhci1kYnVzLXRpbWVvdXQgbmlsCisgICJOdW1iZXIg
b2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIEQtQnVzIHJlc3BvbnNlcy4KK0lmIG5pbCwgdXNl
IHRoZSBELUJ1cyBkZWZhdWx0IHRpbWVvdXQgd2hpY2ggaXMgMjUsMDAwIChpLmUuLCAyNXMpLgor
CitJZiB5b3VyIEQtQnVzIGRlc2t0b3AgZXh0ZW5zaW9uIG5lZWRzIGV4dHJhIHRpbWUgdG8gcmVz
cG9uZCwgaW4gd2hpY2gKK2Nhc2UgYHN5c3RlbS10YXNrYmFyLW1vZGUnIG1pZ2h0IG5vdCBpbml0
aWFsaXplIG9yIHJlbGF0ZWQgZnVuY3Rpb25zCittaWdodCBub3QgdGFrZSB2aXNpYmxlIGVmZmVj
dCwgYmluZCB0aGlzIHRvIGEgdmFsdWUgaGlnaGVyIHRoYW4gMjUsMDAwCit0byBmaW5kIHdoYXQg
d29ya3MgZm9yIHlvdXIgc3lzdGVtLiIKKyAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIkRl
ZmF1bHQiIG5pbCkgbmF0bnVtKQorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZ1biBzeXN0ZW0t
dGFza2Jhci1wcm9ncmVzcy1yZXBvcnRlci1pbnN0YWxsICgpCisgICJJbnN0YWxsIHN5c3RlbS10
YXNrYmFyIHByb2dyZXNzIHJlcG9ydGVyLiIKKyAgKGFkZC1ob29rICdwcm9ncmVzcy1yZXBvcnRl
ci11cGRhdGUtZnVuY3Rpb25zCisgICAgICAgICAgICAjJ3N5c3RlbS10YXNrYmFyLS1wcm9ncmVz
cy1yZXBvcnRlci11cGRhdGUpKQorCisoZGVmdW4gc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MtcmVw
b3J0ZXItcmVtb3ZlICgpCisgICJSZW1vdmUgc3lzdGVtLXRhc2tiYXIgcHJvZ3Jlc3MgcmVwb3J0
ZXIuIgorICAocmVtb3ZlLWhvb2sgJ3Byb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMK
KyAgICAgICAgICAgICAgICMnc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzLXJlcG9ydGVyLXVwZGF0
ZSkpCisKKyhkZWZ2YXIgc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIG5pbAorICAiR2VuZXJpYyB0
YXNrYmFyIG1ldGhvZCBzeXN0ZW0gZGlzcGF0Y2hlci4iKQorCis7OzsjIyNhdXRvbG9hZAorKGRl
ZmluZS1taW5vci1tb2RlIHN5c3RlbS10YXNrYmFyLW1vZGUKKyAgIlN5c3RlbSBHVUkgdGFza2Jh
ciBpY29uIGJhZGdlLCBwcm9ncmVzcyByZXBvcnQsIGFsZXJ0aW5nLiIKKyAgOmdsb2JhbCB0Cisg
ICh3aGVuIG5vbmludGVyYWN0aXZlCisgICAgKHdhcm4gIkJhdGNoIG1vZGUgZG9lcyBub3Qgc3Vw
cG9ydCBgc3lzdGVtLXRhc2tiYXInIikpCisgIChjb25kIChzeXN0ZW0tdGFza2Jhci1tb2RlCisg
ICAgICAgICAoaWYgKHN5c3RlbS10YXNrYmFyLS1zZXQtYmFjay1lbmQpCisgICAgICAgICAgICAg
KHN5c3RlbS10YXNrYmFyLS1lbmFibGUpCisgICAgICAgICAgICh3YXJuICJTeXN0ZW0gZG9lcyBu
b3Qgc3VwcG9ydCBgc3lzdGVtLXRhc2tiYXInIikpCisgICAgICAgICAod2hlbiBzeXN0ZW0tdGFz
a2Jhci11c2UtcHJvZ3Jlc3MtcmVwb3J0ZXIKKyAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLXBy
b2dyZXNzLXJlcG9ydGVyLWluc3RhbGwpKSkKKyAgICAgICAgKHQKKyAgICAgICAgIChzeXN0ZW0t
dGFza2Jhci1wcm9ncmVzcy1yZXBvcnRlci1yZW1vdmUpCisgICAgICAgICAod2hlbiBzeXN0ZW0t
dGFza2Jhci0tYmFjay1lbmQKKyAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWRnZSBuaWwp
CisgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYXR0ZW50aW9uIG5pbCkKKyAgICAgICAgICAg
KHN5c3RlbS10YXNrYmFyLS1wcm9ncmVzcyBuaWwpCisgICAgICAgICAgIChzeXN0ZW0tdGFza2Jh
ci0tZGlzYWJsZSkKKyAgICAgICAgICAgKHNldHEgc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIG5p
bCkpKSkpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci1iYWRnZSAoJm9wdGlvbmFsIGNvdW50KQor
ICAiRGlzcGxheSBDT1VOVCBhcyBhbiBvdmVybGF5IG9uIHRoZSBzeXN0ZW0gdGFza2JhciBFbWFj
cyBpY29uLgorSWYgQ09VTlQgaXMgYW4gaW50ZWdlciwgZGlzcGxheSB0aGF0LgorSWYgQ09VTlQg
aXMgYSBzdHJpbmcgb24gYmFjayBlbmRzIHRoYXQgc3VwcG9ydCBzdHJpbmdzLCBkaXNwbGF5IHRo
YXQuCitUaGUgc3RyaW5nIHNob3VsZCBiZSBzaG9ydC4KK09uIGJhY2sgZW5kcyB3aGljaCBkbyBu
b3Qgc3VwcG9ydCBzdHJpbmdzLCBjb252ZXJ0IENPVU5UIHRvIGFuIGludGVnZXIKK3VzaW5nIGBz
dHJpbmctdG8tbnVtYmVyJyBhbmQgdGVzdGluZyBgaW50ZWdlcnAnLCBvciBuaWwgaWYgdGhhdCBm
YWlscy4KK0lmIENPVU5UIGlzIG5pbCBvciBhbiBlbXB0eSBzdHJpbmcsIHJlbW92ZSB0aGUgY291
bnRlci4iCisgICh3aGVuIHN5c3RlbS10YXNrYmFyLW1vZGUKKyAgICAoc3lzdGVtLXRhc2tiYXIt
LWJhZGdlIGNvdW50KSkpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gKCZvcHRp
b25hbCB1cmdlbmN5IHRpbWVvdXQpCisgICJGbGFzaCB0aGUgc3lzdGVtIHRhc2tiYXIgaWNvbiBh
bmQvb3IgZnJhbWUgdG8gYWxlcnQgdGhlIHVzZXIuCitVUkdFTkNZIGNhbiBiZSBvbmUgb2YgdGhl
IHN5bWJvbHMgYGluZm9ybWF0aW9uYWwnLCBvciBgY3JpdGljYWwnLgorSWYgVVJHRU5DWSBpcyBu
aWwsIGNsZWFyIHRoZSBhdHRlbnRpb24gaW5kaWNhdG9yLgorCitUaGUgYXR0ZW50aW9uIGluZGlj
YXRvciBpcyBjbGVhcmVkIGJ5IHRoZSBlYXJsaWVzdCBvZiBicmluZ2luZyB0aGUgRW1hY3MKK0dV
SSBpbnRvIGZvY3VzLCBvciBhZnRlciBUSU1FT1VUIHNlY29uZHMuICBJZiBUSU1FT1VUIGlzIG5p
bCwgdGhlIHN5c3RlbQorR1VJIGJlaGF2aW9yIGhhcyBwcmlvcml0eS4KKworT24gc29tZSBiYWNr
IGVuZHMsIGBjcml0aWNhbCcgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBgaW5mb3JtYXRpb25hbCcu
IgorICAod2hlbiBzeXN0ZW0tdGFza2Jhci1tb2RlCisgICAgKHN5c3RlbS10YXNrYmFyLS1hdHRl
bnRpb24gdXJnZW5jeSB0aW1lb3V0KSkpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci1wcm9ncmVz
cyAoJm9wdGlvbmFsIHByb2dyZXNzKQorICAiRGlzcGxheSBhIHByb2dyZXNzIGluZGljYXRvciBv
dmVybGF5IG9uIHRoZSBzeXN0ZW0gdGFza2JhciBpY29uLgorUFJPR1JFU1MgaXMgYSBmbG9hdCBp
biB0aGUgcmFuZ2UgMC4wIHRvIDEuMC4KK0lmIFBST0dSRVNTIGlzIG5pbCwgcmVtb3ZlIHRoZSBw
cm9ncmVzcyBpbmRpY2F0b3IuIgorICAod2hlbiBzeXN0ZW0tdGFza2Jhci1tb2RlCisgICAgKHN5
c3RlbS10YXNrYmFyLS1wcm9ncmVzcyBwcm9ncmVzcykpKQorCisMCis7OyBJbnRlcm5hbCBpbXBs
ZW1lbnRhdGlvbi4KKworKGRlZnZhciB3MzItaW5pdGlhbGl6ZWQpCisKKyhkZWZ1biBzeXN0ZW0t
dGFza2Jhci0tc2V0LWJhY2stZW5kICgpCisgICJEZXRlcm1pbmUgdGFza2JhciBob3N0IHN5c3Rl
bSB0eXBlLiIKKyAgOzsgT3JkZXIgbWF0dGVycyB0byBhY2NvbW1vZGF0ZSB0aGUgY2FzZXMgd2hl
cmUgYW4gTlMgb3IgTVMtV2luZG93cworICA7OyBidWlsZCBoYXZlIHRoZSBkYnVzIGZlYXR1cmUu
CisgIChzZXRxIHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZAorICAgICAgICAoY29uZCAoKGJvdW5k
cCAnbnMtdmVyc2lvbi1zdHJpbmcpICducykKKyAgICAgICAgICAgICAgKHczMi1pbml0aWFsaXpl
ZCAndzMyKQorICAgICAgICAgICAgICAoKGFuZCAoZmVhdHVyZXAgJ2RidXNiaW5kKQorICAgICAg
ICAgICAgICAgICAgICAobWVtYmVyICJvcmcuZnJlZWRlc2t0b3AubG9naW4xIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChkYnVzLWxpc3QtYWN0aXZhdGFibGUtbmFtZXMgOnN5c3RlbSkp
KQorICAgICAgICAgICAgICAgJ2RidXMpCisgICAgICAgICAgICAgICh0IG5pbCkpKSkKKworKGNs
LWRlZmdlbmVyaWMgc3lzdGVtLXRhc2tiYXItLWVuYWJsZSAoKQorICAiRW5hYmxlIHRoZSBzeXN0
ZW0tdGFza2JhciBiYWNrIGVuZC4iKQorCisoY2wtZGVmZ2VuZXJpYyBzeXN0ZW0tdGFza2Jhci0t
ZGlzYWJsZSAoKQorICAiRGlzYWJsZSB0aGUgc3lzdGVtLXRhc2tiYXIgYmFjayBlbmQuIikKKwor
KGNsLWRlZmdlbmVyaWMgc3lzdGVtLXRhc2tiYXItLWJhZGdlICgmb3B0aW9uYWwgY291bnQpCisg
ICJEaXNwbGF5IENPVU5UIGFzIGFuIG92ZXJsYXkgb24gdGhlIHN5c3RlbSB0YXNrYmFyIEVtYWNz
IGljb24uCitJZiBDT1VOVCBpcyBhbiBpbnRlZ2VyLCBkaXNwbGF5IHRoYXQuCitJZiBDT1VOVCBp
cyBhIHN0cmluZyBvbiBiYWNrIGVuZHMgdGhhdCBzdXBwb3J0IHN0cmluZ3MsIGRpc3BsYXkgdGhh
dC4KK1RoZSBzdHJpbmcgc2hvdWxkIGJlIHNob3J0LgorT24gYmFjayBlbmRzIHdoaWNoIGRvIG5v
dCBzdXBwb3J0IHN0cmluZ3MsIGNvbnZlcnQgQ09VTlQgdG8gYW4gaW50ZWdlcgordXNpbmcgYHN0
cmluZy10by1udW1iZXInIGFuZCB0ZXN0aW5nIGBpbnRlZ2VycCcsIG9yIG5pbCBpZiB0aGF0IGZh
aWxzLgorSWYgQ09VTlQgaXMgbmlsIG9yIGFuIGVtcHR5IHN0cmluZywgcmVtb3ZlIHRoZSBjb3Vu
dGVyLiIpCisKKyhjbC1kZWZnZW5lcmljIHN5c3RlbS10YXNrYmFyLS1hdHRlbnRpb24gKCZvcHRp
b25hbCB1cmdlbmN5IHRpbWVvdXQpCisgICJGbGFzaCB0aGUgc3lzdGVtIHRhc2tiYXIgaWNvbiBh
bmQvb3IgZnJhbWUgdG8gYWxlcnQgdGhlIHVzZXIuCitVUkdFTkNZIGNhbiBiZSBvbmUgb2YgdGhl
IHN5bWJvbHMgYGluZm9ybWF0aW9uYWwnLCBvciBgY3JpdGljYWwnLgorSWYgVVJHRU5DWSBpcyBu
aWwsIGNsZWFyIHRoZSBhdHRlbnRpb24gaW5kaWNhdG9yLgorCitUaGUgYXR0ZW50aW9uIGluZGlj
YXRvciBpcyBjbGVhcmVkIGJ5IHRoZSBlYXJsaWVzdCBvZiBicmluZ2luZyB0aGUgRW1hY3MKK0dV
SSBpbnRvIGZvY3VzLCBvciBhZnRlciBUSU1FT1VUIHNlY29uZHMuICBJZiBUSU1FT1VUIGlzIG5p
bCwgdGhlIHN5c3RlbQorR1VJIGJlaGF2aW9yIGhhcyBwcmlvcml0eS4KKworT24gc29tZSBiYWNr
IGVuZHMsIGBjcml0aWNhbCcgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBgaW5mb3JtYXRpb25hbCcu
CisKK09uIHNvbWUgYmFjayBlbmRzLCBhdHRlbnRpb24gd2lsbCBiZSBkaXNwbGF5ZWQgb25seSBp
ZiBFbWFjcyBpcyBub3QgdGhlCitjdXJyZW50bHkgZm9jdXNlZCBhcHBsaWNhdGlvbi4iKQorCiso
Y2wtZGVmZ2VuZXJpYyBzeXN0ZW0tdGFza2Jhci0tcHJvZ3Jlc3MgKCZvcHRpb25hbCBwcm9ncmVz
cykKKyAgIkRpc3BsYXkgYSBwcm9ncmVzcyBpbmRpY2F0b3Igb3ZlcmxheSBvbiB0aGUgc3lzdGVt
IHRhc2tiYXIgaWNvbi4KK1BST0dSRVNTIGlzIGEgZmxvYXQgaW4gdGhlIHJhbmdlIDAuMCB0byAx
LjAuCitJZiBQUk9HUkVTUyBpcyBuaWwsIHJlbW92ZSB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yLiIp
CisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci0tdmFsaWRhdGUtcHJvZ3Jlc3MgKHByb2dyZXNzKQor
ICAiUmV0dXJuIFBST0dSRVNTIGFzIGEgZmxvYXQgaW4gdGhlIHJhbmdlIDAuMCB0byAxLjAsIG9y
IG5pbC4iCisgICh3aGVuIChuYXRudW1wIHByb2dyZXNzKQorICAgIChzZXRxIHByb2dyZXNzIChm
bG9hdCBwcm9ncmVzcykpKQorICAod2hlbiAoYW5kIHByb2dyZXNzICg+PSBwcm9ncmVzcyAwLjAp
ICg8PSBwcm9ncmVzcyAxLjApKQorICAgIHByb2dyZXNzKSkKKworDAorOzsgYHByb2dyZXNzLXJl
cG9ydGVyJyBzdXBwb3J0LgorCisoZGVmdW4gc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzLXJlcG9y
dGVyLXVwZGF0ZSAoX3JlcG9ydGVyIHN0YXRlKQorICAiUHJvZ3Jlc3MgcmVwb3J0ZXIgc3lzdGVt
LXRhc2tiYXIgdXBkYXRlIGZ1bmN0aW9uLgorUkVQT1JURVIgYW5kIFNUQVRFIGFyZSB0aGUgc2Ft
ZSBhcyBpbgorYHByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMnLiIKKyAgKHdoZW4g
c3lzdGVtLXRhc2tiYXItbW9kZQorICAgIChwY2FzZSBzdGF0ZQorICAgICAgKChwcmVkIGZsb2F0
cCkKKyAgICAgICAoc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzIHN0YXRlKSkKKyAgICAgICgocHJl
ZCBpbnRlZ2VycCkKKyAgICAgICAoc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzICgvICgxKyBzdGF0
ZSkgNC4wKSkpCisgICAgICAoJ2RvbmUKKyAgICAgICAoc3lzdGVtLXRhc2tiYXItLXByb2dyZXNz
IG5pbCkpKSkpCisKKwwKKzs7IEQtQnVzIHN1cHBvcnQuCisKKyhkZWZjb25zdCBzeXN0ZW0tdGFz
a2Jhci0tZGJ1cy1zZXJ2aWNlICJjb20uY2Fub25pY2FsLlVuaXR5IikKKyhkZWZjb25zdCBzeXN0
ZW0tdGFza2Jhci0tZGJ1cy1pbnRlcmZhY2UgImNvbS5jYW5vbmljYWwuVW5pdHkuTGF1bmNoZXJF
bnRyeSIpCisKKyhkZWZ2YXIgc3lzdGVtLXRhc2tiYXItLWRidXMtYXR0ZW50aW9uIG5pbAorICAi
Tm9uLW5pbCB3aGVuIGF0dGVudGlvbiBpcyByZXF1ZXN0ZWQuIikKKworKGRlZnVuIHN5c3RlbS10
YXNrYmFyLS1kYnVzLXNlbmQtc2lnbmFsIChtZXNzYWdlKQorICAiU2VuZCBNRVNTQUdFIHRvIHRo
ZSBELUJ1cyBzeXN0ZW0gdGFza2JhciBzZXJ2aWNlLiIKKyAgKGxldCAoKGFwcC11cmkKKyAgICAg
ICAgIChmb3JtYXQgImFwcGxpY2F0aW9uOi8vJXMuZGVza3RvcCIKKyAgICAgICAgICAgICAgICAg
c3lzdGVtLXRhc2tiYXItZGJ1cy1kZXNrdG9wLWZpbGUtbmFtZSkpKQorICAgIChkYnVzLXNlbmQt
c2lnbmFsCisgICAgIDpzZXNzaW9uCisgICAgIHN5c3RlbS10YXNrYmFyLS1kYnVzLXNlcnZpY2UK
KyAgICAgIi8iCisgICAgIHN5c3RlbS10YXNrYmFyLS1kYnVzLWludGVyZmFjZQorICAgICAiVXBk
YXRlIgorICAgICBhcHAtdXJpCisgICAgIG1lc3NhZ2UpKSkKKworKGRlZnVuIHN5c3RlbS10YXNr
YmFyLS1kYnVzLWNsZWFyLWF0dGVudGlvbi1vbi1mcmFtZS1mb2N1cyAoKQorICAiQ2xlYXIgYW4g
YWN0aXZlIEQtQnVzIGF0dGVudGlvbiByZXF1ZXN0IGlmIGFueSBmcmFtZSBpcyBmb2N1c2VkLiIK
KyAgKHdoZW4gKGFuZCBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1hdHRlbnRpb24KKyAgICAgICAgICAg
ICAoY2F0Y2ggOmNsZWFyCisgICAgICAgICAgICAgICAoZG9saXN0IChmcmFtZSAoZnJhbWUtbGlz
dCkpCisgICAgICAgICAgICAgICAgICh3aGVuIChlcSAoZnJhbWUtZm9jdXMtc3RhdGUgZnJhbWUp
IHQpCisgICAgICAgICAgICAgICAgICAgKHRocm93IDpjbGVhciB0KSkpKSkKKyAgICAoc3lzdGVt
LXRhc2tiYXItYXR0ZW50aW9uIG5pbCkpKQorCisoZGVmdW4gc3lzdGVtLXRhc2tiYXItZGJ1cy1w
aW5nLXNlcnZpY2UgKCkKKyAgIlJldHVybiBub24tbmlsIGlmIGBzeXN0ZW0tdGFza2Jhci0tZGJ1
cy1zZXJ2aWNlJyByZXNwb25kcy4KK1JldHVybiBuaWwgaWYgbm8gcmVzcG9uc2Ugd2l0aGluIGBz
eXN0ZW0tdGFza2Jhci1kYnVzLXRpbWVvdXQnLiIKKyAgKGRidXMtcGluZworICAgOnNlc3Npb24K
KyAgIHN5c3RlbS10YXNrYmFyLS1kYnVzLXNlcnZpY2UKKyAgIHN5c3RlbS10YXNrYmFyLWRidXMt
dGltZW91dCkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItLWVuYWJsZSAoJmNvbnRl
eHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFy
LS1iYWNrLWVuZCAoZXFsICdkYnVzKSkpCisgICh1bmxlc3MgKHN5c3RlbS10YXNrYmFyLWRidXMt
cGluZy1zZXJ2aWNlKQorICAgIChlcnJvciAiRC1CdXMgc2VydmljZSBgJXMnIHVuYXZhaWxhYmxl
IiBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1zZXJ2aWNlKSkKKyAgKHdoZW4gc3lzdGVtLXRhc2tiYXIt
Y2xlYXItYXR0ZW50aW9uLW9uLWZyYW1lLWZvY3VzCisgICAgKGFkZC1mdW5jdGlvbiA6YWZ0ZXIg
YWZ0ZXItZm9jdXMtY2hhbmdlLWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAjJ3N5c3RlbS10
YXNrYmFyLS1kYnVzLWNsZWFyLWF0dGVudGlvbi1vbi1mcmFtZS1mb2N1cykpKQorCisoY2wtZGVm
bWV0aG9kIHN5c3RlbS10YXNrYmFyLS1kaXNhYmxlICgmY29udGV4dAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICdk
YnVzKSkpCisgIChyZW1vdmUtZnVuY3Rpb24gYWZ0ZXItZm9jdXMtY2hhbmdlLWZ1bmN0aW9uCisg
ICAgICAgICAgICAgICAgICAgIydzeXN0ZW0tdGFza2Jhci0tZGJ1cy1jbGVhci1hdHRlbnRpb24t
b24tZnJhbWUtZm9jdXMpKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFyLS1iYWRnZSAo
JmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRh
c2tiYXItLWJhY2stZW5kIChlcWwgJ2RidXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZvcHRpb25hbCBjb3VudCkKKyAgIkRpc3BsYXkgQ09VTlQgYXMgYW4gb3Zlcmxh
eSBvbiB0aGUgc3lzdGVtIHRhc2tiYXIgRW1hY3MgaWNvbi4KK0lmIENPVU5UIGlzIGFuIGludGVn
ZXIsIGRpc3BsYXkgdGhhdC4gIElmIENPVU5UIGlzIGEgc3RyaW5nLCBjb252ZXJ0IGl0Cit0byBh
biBpbnRlZ2VyLCBvciBuaWwgaWYgdGhhdCBmYWlscy4gIElmIENPVU5UIGlzIGFueSBvdGhlciB0
eXBlLCB1c2UKK25pbC4gIElmIENPVU5UIGlzIG5pbCBvciBhbiBlbXB0eSBzdHJpbmcsIHJlbW92
ZSB0aGUgYmFkZ2UuCitOb3RlOiBUaGUgVW5pdHkgRC1CdXMgcHJvdG9jb2wgc3VwcG9ydHMgb25s
eSBpbnRlZ2VyIGJhZGdlcy4iCisgIChjb25kICgoc3RyaW5ncCBjb3VudCkKKyAgICAgICAgIChp
ZiAoc3RyaW5nLWVtcHR5LXAgY291bnQpCisgICAgICAgICAgICAgKHNldHEgY291bnQgbmlsKQor
ICAgICAgICAgICAobGV0ICgoY291bnQtMSAoc3RyaW5nLXRvLW51bWJlciBjb3VudCkpKQorICAg
ICAgICAgICAgIChzZXRxIGNvdW50IChpZiAoaW50ZWdlcnAgY291bnQtMSkgY291bnQtMSBuaWwp
KSkpKQorICAgICAgICAoKG5vdCAoaW50ZWdlcnAgY291bnQpKQorICAgICAgICAgKHNldHEgY291
bnQgbmlsKSkpCisgIChzeXN0ZW0tdGFza2Jhci0tZGJ1cy1zZW5kLXNpZ25hbAorICAgYCgoOmRp
Y3QtZW50cnkgImNvdW50LXZpc2libGUiCisgICAgICAgICAgICAgICAgICAoOnZhcmlhbnQgOmJv
b2xlYW4gLChub3QgKG51bGwgY291bnQpKSkpCisgICAgICg6ZGljdC1lbnRyeSAiY291bnQiCisg
ICAgICAgICAgICAgICAgICAoOnZhcmlhbnQgOnVpbnQzMiAsKGlmIChudWxsIGNvdW50KSAwCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCkpKSkpKQorCisoY2wt
ZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFyLS1hdHRlbnRpb24gKCZjb250ZXh0CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQg
KGVxbCAnZGJ1cykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZv
cHRpb25hbCB1cmdlbmN5IHRpbWVvdXQpCisgICJSZXF1ZXN0IFVSR0VOQ1kgdXNlciBhdHRlbnRp
b24gb24gdGhlIHN5c3RlbSB0YXNrYmFyIEVtYWNzIGljb24uCitUaGUgcmVxdWVzdCB3aWxsIHRp
bWUgb3V0IHdpdGhpbiB0aGUgVElNRU9VVCBzZWNvbmRzIGludGVydmFsLgorVGhlIFVuaXR5IEQt
QnVzIHByb3RvY29sIGRvZXMgbm90IHN1cHBvcnQgZGlmZmVyZW50aWF0ZWQgdXJnZW5jaWVzLiIK
KyAgKHNldHEgc3lzdGVtLXRhc2tiYXItLWRidXMtYXR0ZW50aW9uIHVyZ2VuY3kpCisgIChzeXN0
ZW0tdGFza2Jhci0tZGJ1cy1zZW5kLXNpZ25hbAorICAgYCgoOmRpY3QtZW50cnkgInVyZ2VudCIK
KyAgICAgICAgICAgICAgICAgICg6dmFyaWFudCA6Ym9vbGVhbiAsKG5vdCAobnVsbCB1cmdlbmN5
KSkpKSkpCisgICh3aGVuIChhbmQgdXJnZW5jeSB0aW1lb3V0KQorICAgIChydW4td2l0aC10aW1l
cgorICAgICB0aW1lb3V0CisgICAgIG5pbAorICAgICAjJ3N5c3RlbS10YXNrYmFyLWF0dGVudGlv
biBuaWwpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tcHJvZ3Jlc3MgKCZjb250
ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNr
YmFyLS1iYWNrLWVuZCAoZXFsICdkYnVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmb3B0aW9uYWwgcHJvZ3Jlc3MpCisgICJEaXNwbGF5IGEgcHJvZ3Jlc3MgYmFy
IG92ZXJsYXkgb24gdGhlIHN5c3RlbSB0YXNrYmFyIGljb24uCitQUk9HUkVTUyBpcyBhIGZsb2F0
IGluIHRoZSByYW5nZSAwLjAgdG8gMS4wLgorSWYgUFJPR1JFU1MgaXMgbmlsLCByZW1vdmUgdGhl
IHByb2dyZXNzIGJhci4iCisgIChzZXRxIHByb2dyZXNzIChzeXN0ZW0tdGFza2Jhci0tdmFsaWRh
dGUtcHJvZ3Jlc3MgcHJvZ3Jlc3MpKQorICAoc3lzdGVtLXRhc2tiYXItLWRidXMtc2VuZC1zaWdu
YWwKKyAgIGAoKDpkaWN0LWVudHJ5ICJwcm9ncmVzcy12aXNpYmxlIgorICAgICAgICAgICAgICAg
ICAgKDp2YXJpYW50IDpib29sZWFuICwobm90IChudWxsIHByb2dyZXNzKSkpKQorICAgICAoOmRp
Y3QtZW50cnkgInByb2dyZXNzIgorICAgICAgICAgICAgICAgICAgKDp2YXJpYW50IDpkb3VibGUg
LChpZiAobnVsbCBwcm9ncmVzcykgMCBwcm9ncmVzcykpKSkpKQorCisMCis7OyBtYWNPUy9HTlVz
dGVwIE5TIHN1cHBvcnQuCisKKyhkZWNsYXJlLWZ1bmN0aW9uIG5zLWJhZGdlICJuc2Zucy5tIikK
KyhkZWNsYXJlLWZ1bmN0aW9uIG5zLXJlcXVlc3QtdXNlci1hdHRlbnRpb24gIm5zZm5zLm0iKQor
KGRlY2xhcmUtZnVuY3Rpb24gbnMtcHJvZ3Jlc3MtaW5kaWNhdG9yICJuc2Zucy5tIikKKworKGNs
LWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tZW5hYmxlICgmY29udGV4dAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwg
J25zKSkpCisgIChpZ25vcmUpKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFyLS1kaXNh
YmxlICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5
c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICducykpKQorICAoaWdub3JlKSkKKworKGNsLWRl
Zm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tYmFkZ2UgKCZjb250ZXh0CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICducykp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbmFsIGNvdW50KQor
ICAiRGlzcGxheSBDT1VOVCBhcyBhbiBvdmVybGF5IG9uIHRoZSBEb2NrIGJhZGdlLgorSWYgQ09V
TlQgaXMgYW4gaW50ZWdlciBvciBhIG5vbi1lbXB0eSBzdHJpbmcsIGRpc3BsYXkgdGhhdC4gIElm
IENPVU5UIGlzCituaWwgb3IgYW4gZW1wdHkgc3RyaW5nLCBjbGVhciB0aGUgYmFkZ2Ugb3Zlcmxh
eS4KK05vdGU6IE5TIHdpbGwgYWJicmV2aWF0ZSBsb25nIHN0cmluZ3MgdG8gZml0IHRoZSBiYWRn
ZSdzIGFsbG9jYXRlZAorc3BhY2UuIgorICAoY29uZCAoKHN0cmluZ3AgY291bnQpCisgICAgICAg
ICAod2hlbiAoc3RyaW5nLWVtcHR5LXAgY291bnQpCisgICAgICAgICAgIChzZXRxIGNvdW50IG5p
bCkpKQorICAgICAgICAoKGludGVnZXJwIGNvdW50KQorICAgICAgICAgKHNldHEgY291bnQgKG51
bWJlci10by1zdHJpbmcgY291bnQpKSkKKyAgICAgICAgKHQgKHNldHEgY291bnQgbmlsKSkpCisg
IChucy1iYWRnZSBjb3VudCkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItLWF0dGVu
dGlvbiAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICducykpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCB1cmdlbmN5IHRpbWVvdXQpCisgICJSZXF1
ZXN0IFVSR0VOQ1kgdXNlciBhdHRlbnRpb24gb24gdGhlIERvY2suCitUaGUgYXR0ZW50aW9uIGlu
ZGljYXRvciB3aWxsIGJlIGNsZWFyZWQgYWZ0ZXIgVElNRU9VVCBzZWNvbmRzLiIKKyAgKG5zLXJl
cXVlc3QtdXNlci1hdHRlbnRpb24gdXJnZW5jeSkKKyAgKHdoZW4gKGFuZCB1cmdlbmN5IHRpbWVv
dXQpCisgICAgKHJ1bi13aXRoLXRpbWVyCisgICAgIHRpbWVvdXQKKyAgICAgbmlsCisgICAgICMn
c3lzdGVtLXRhc2tiYXItYXR0ZW50aW9uIG5pbCkpKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS10
YXNrYmFyLS1wcm9ncmVzcyAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ25zKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgcHJvZ3Jlc3MpCisgICJE
aXNwbGF5IGEgcHJvZ3Jlc3MgYmFyIG92ZXJsYXkgb24gdGhlIERvY2sgYW5kIEFwcCBTd2l0Y2hl
ci4KK1BST0dSRVNTIGlzIGEgZmxvYXQgaW4gdGhlIHJhbmdlIDAuMCB0byAxLjAuCitJZiBQUk9H
UkVTUyBpcyBuaWwsIHJlbW92ZSB0aGUgcHJvZ3Jlc3MgYmFyLiIKKyAgKG5zLXByb2dyZXNzLWlu
ZGljYXRvciAoc3lzdGVtLXRhc2tiYXItLXZhbGlkYXRlLXByb2dyZXNzIHByb2dyZXNzKSkpCisK
KwwKKzs7IE1TLVdpbmRvd3Mgc3VwcG9ydC4KKworKGRlY2xhcmUtZnVuY3Rpb24gdzMyLWJhZGdl
ICJ3MzJmbnMuYyIpCisoZGVjbGFyZS1mdW5jdGlvbiB3MzItcmVxdWVzdC11c2VyLWF0dGVudGlv
biAidzMyZm5zLmMiKQorKGRlY2xhcmUtZnVuY3Rpb24gdzMyLXByb2dyZXNzLWluZGljYXRvciAi
dzMyZm5zLmMiKQorCisoZGVmdmFyIHN5c3RlbS10YXNrYmFyLXczMi1iYWRnZS1iYWNrZ3JvdW5k
ICIjZTc1ODU3IiA7IHJlZGlzaAorICAidzMyIGJhZGdlIGJhY2tncm91bmQgUkdCIHRyaXBsZSBz
dHJpbmcuIikKKworKGRlZnZhciBzeXN0ZW0tdGFza2Jhci13MzItYmFkZ2UtZm9yZWdyb3VuZCAi
I2ZmZmZmZiIgOyB3aGl0ZQorICAidzMyIGJhZGdlIGZvcmVncm91bmQgUkdCIHRyaXBsZSBzdHJp
bmcuIikKKworKGRlZnVuIHN5c3RlbS10YXNrYmFyLS13MzItY2xlYXItZnJhbWUtaW5kaWNhdG9y
cyAoZnJhbWUpCisgIDs7IE5PVEU6IFVwZGF0ZSB0aGUgYmVsb3cgaWYgYWRkaW5nIG5ldyB3MzIg
c3lzdGVtLXRhc2tiYXIgZnVuY3Rpb25zLgorICAod2l0aC1zZWxlY3RlZC1mcmFtZSBmcmFtZQor
ICAgIChzeXN0ZW0tdGFza2Jhci1iYWRnZSBuaWwpCisgICAgKHN5c3RlbS10YXNrYmFyLWF0dGVu
dGlvbiBuaWwpCisgICAgKHN5c3RlbS10YXNrYmFyLXByb2dyZXNzIG5pbCkpKQorCisoY2wtZGVm
bWV0aG9kIHN5c3RlbS10YXNrYmFyLS1lbmFibGUgKCZjb250ZXh0CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAndzMy
KSkpCisgIDs7IENsZWFyIHN5c3RlbS10YXNrYmFyIGluZGljYXRvcnMgZm9yIGEgZnJhbWUgd2hl
biBpdCBpcyBkZWxldGVkLgorICAoYWRkLWhvb2sgJ2RlbGV0ZS1mcmFtZS1mdW5jdGlvbnMKKyAg
ICAgICAgICAgICMnc3lzdGVtLXRhc2tiYXItLXczMi1jbGVhci1mcmFtZS1pbmRpY2F0b3JzKSkK
KworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tZGlzYWJsZSAoJmNvbnRleHQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1l
bmQgKGVxbCAndzMyKSkpCisgIChyZW1vdmUtaG9vayAnZGVsZXRlLWZyYW1lLWZ1bmN0aW9ucwor
ICAgICAgICAgICAgICAgIydzeXN0ZW0tdGFza2Jhci0tdzMyLWNsZWFyLWZyYW1lLWluZGljYXRv
cnMpKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFyLS1iYWRnZSAoJmNvbnRleHQKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2st
ZW5kIChlcWwgJ3czMikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9w
dGlvbmFsIGNvdW50KQorICAiRGlzcGxheSBhIENPVU5UIG92ZXJsYXkgb24gdGhlIHN5c3RlbSB0
YXNrYmFyIGljb24uCitUaGUgdGFza2JhciBpY29uIHRhcmdldCBpcyBhc3NvY2lhdGVkIHdpdGgg
dGhlIHNlbGVjdGVkIGZyYW1lLgorCitJZiBDT1VOVCBpcyBhbiBpbnRlZ2VyIG9yIGEgbm9uLWVt
cHR5IHN0cmluZywgZGlzcGxheSB0aGF0LiAgSWYgQ09VTlQgaXMKK25pbCBvciBhbiBlbXB0eSBz
dHJpbmcsIGNsZWFyIHRoZSBiYWRnZS4KKworRHVlIHRvIE1TLVdpbmRvd3MgaWNvbiBvdmVybGF5
IHNpemUgbGltaXRhdGlvbnMsIGlmIENPVU5UIGlzIGFuIGludGVnZXIKK2FuZCBpcyBvdXRzaWRl
IHRoZSByYW5nZSAtOTkgdG8gOTksIGRpc3BsYXkgXCItOTlcIiBhbmQgXCI5OStcIiwKK3Jlc3Bl
Y3RpdmVseSwgaWYgQ09VTlQgaXMgYSBzdHJpbmcgbG9uZ2VyIHRoYW4gMiBjaGFyYWN0ZXJzIHRy
dW5jYXRlIGl0Cit1c2luZyBgdHJ1bmNhdGUtc3RyaW5nLXRvLXdpZHRoJy4KKworQ29uc3VsdCBg
c3lzdGVtLXRhc2tiYXItdzMyLWJhZGdlLWJhY2tncm91bmQnIGFuZAorYHN5c3RlbS10YXNrYmFy
LXczMi1iYWRnZS1mb3JlZ3JvdW5kJyBmb3IgdGhlIGJhY2tncm91bmQgYW5kIGZvcmVncm91bmQK
K2NvbG9ycyBmb3IgdGhlIHBhaW50ZWQgb3ZlcmxheS4iCisgIChjb25kICgoc3RyaW5ncCBjb3Vu
dCkKKyAgICAgICAgIChpZiAoc3RyaW5nLWVtcHR5LXAgY291bnQpCisgICAgICAgICAgICAgKHNl
dHEgY291bnQgbmlsKQorICAgICAgICAgICAod2hlbiAobGVuZ3RoPiBjb3VudCAyKQorICAgICAg
ICAgICAgIChzZXRxIGNvdW50ICh0cnVuY2F0ZS1zdHJpbmctdG8td2lkdGggY291bnQgMyAwIG5p
bCB0KSkpKSkKKyAgICAgICAgKChpbnRlZ2VycCBjb3VudCkKKyAgICAgICAgIChpZiAoYW5kICg+
IGNvdW50IC0xMDApCisgICAgICAgICAgICAgICAgICAoPCBjb3VudCAxMDApKQorICAgICAgICAg
ICAgIChzZXRxIGNvdW50IChudW1iZXItdG8tc3RyaW5nIGNvdW50KSkKKyAgICAgICAgICAgKGlm
ICg8IGNvdW50IDApCisgICAgICAgICAgICAgICAoc2V0cSBjb3VudCAiLTk5IikKKyAgICAgICAg
ICAgICAoc2V0cSBjb3VudCAiOTkrIikpKSkKKyAgICAgICAgKHQgKHNldHEgY291bnQgbmlsKSkp
CisgICh3MzItYmFkZ2UgY291bnQKKyAgICAgICAgICAgICBzeXN0ZW0tdGFza2Jhci13MzItYmFk
Z2UtYmFja2dyb3VuZAorICAgICAgICAgICAgIHN5c3RlbS10YXNrYmFyLXczMi1iYWRnZS1mb3Jl
Z3JvdW5kKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tYXR0ZW50aW9uICgmY29u
dGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRh
c2tiYXItLWJhY2stZW5kIChlcWwgJ3czMikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZvcHRpb25hbCB1cmdlbmN5IHRpbWVvdXQpCisgICJSZXF1ZXN0IFVSR0VO
Q1kgdXNlciBhdHRlbnRpb24gb24gdGhlIHN5c3RlbSB0YXNrYmFyIGljb24uCitJbmRpY2F0ZSB0
aGUgaWNvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHNlbGVjdGVkIGZyYW1lLgorSWYgVVJHRU5DWSBp
cyB0aGUgc3ltYm9sIGBpbmZvcm1hdGlvbmFsJywgZmxhc2ggdGhlIHRhc2tiYXIgaWNvbi4KK0lm
IFVSR0VOQ1kgaXMgdGhlIHN5bWJvbCBgY3JpdGljYWwnLCBmbGFzaCB0aGUgdGFza2JhciBpY29u
IGFuZCB0aGUKK01TLVdpbmRvd3Mgd2luZG93IGZyYW1lLgorQ2xlYXIgYXR0ZW50aW9uIGluZGlj
YXRvciBhZnRlciBUSU1FT1VUIHNlY29uZHMuICBJZiBUSU1FT1VUIGlzIG5pbCwKK2RlZmF1bHQg
dG8gTVMtV2luZG93cyBkZWZhdWx0IGJlaGF2aW9yLiIKKyAgKHczMi1yZXF1ZXN0LXVzZXItYXR0
ZW50aW9uIHVyZ2VuY3kpCisgICh3aGVuIChhbmQgdXJnZW5jeSB0aW1lb3V0KQorICAgIChydW4t
d2l0aC10aW1lcgorICAgICB0aW1lb3V0CisgICAgIG5pbAorICAgICAjJ3N5c3RlbS10YXNrYmFy
LWF0dGVudGlvbiBuaWwpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tcHJvZ3Jl
c3MgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5
c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICd3MzIpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCBwcm9ncmVzcykKKyAgIkRpc3BsYXkgYSBwcm9n
cmVzcyBiYXIgb24gdGhlIHN5c3RlbSB0YXNrYmFyIGljb24uCitQUk9HUkVTUyBpcyBhIGZsb2F0
IGluIHRoZSByYW5nZSAwLjAgdG8gMS4wLgorSWYgUFJPR1JFU1MgaXMgbmlsLCByZW1vdmUgdGhl
IHByb2dyZXNzIGJhci4iCisgICh3MzItcHJvZ3Jlc3MtaW5kaWNhdG9yIChzeXN0ZW0tdGFza2Jh
ci0tdmFsaWRhdGUtcHJvZ3Jlc3MgcHJvZ3Jlc3MpKSkKKworDAorCisocHJvdmlkZSAnc3lzdGVt
LXRhc2tiYXIpCisKKzs7OyBzeXN0ZW0tdGFza2Jhci5lbCBlbmRzIGhlcmUKZGlmZiAtLWdpdCBh
L3NyYy9uc2Zucy5tIGIvc3JjL25zZm5zLm0KaW5kZXggMzUyOGM0YWNkNTAuLjJiOTRiMzJlNTlj
IDEwMDY0NAotLS0gYS9zcmMvbnNmbnMubQorKysgYi9zcmMvbnNmbnMubQpAQCAtMzY3NCw2ICsz
Njc0LDEyOSBAQCBUaGUgcG9zaXRpb24gaXMgcmV0dXJuZWQgYXMgYSBjb25zIGNlbGwgKFggLiBZ
KSBvZiB0aGUKICAgcmV0dXJuIFFuaWw7CiB9CiAKK0RFRlVOICgibnMtYmFkZ2UiLCBGbnNfYmFk
Z2UsIFNuc19iYWRnZSwgMSwgMSwgMCwKKyAgICAgICBkb2M6IC8qIFNldCB0aGUgYXBwIGljb24g
YmFkZ2UgdG8gQkFER0UuCitCQURHRSBzaG91bGQgYmUgYSBzdHJpbmcgc2hvcnQgZW5vdWdoIHRv
IGRpc3BsYXkgbmljZWx5IGluIHRoZSBzaG9ydAorc3BhY2UgaW50ZW5kZWQgZm9yIGJhZGdlcy4K
K0lmIEJBREdFIGlzIG5pbCwgY2xlYXIgdGhlIGFwcCBiYWRnZS4gICovKQorICAoTGlzcF9PYmpl
Y3QgYmFkZ2UpCit7CisgIGJsb2NrX2lucHV0ICgpOworICBpZiAoTklMUCAoYmFkZ2UpKQorICAg
IFtbTlNBcHAgZG9ja1RpbGVdIHNldEJhZGdlTGFiZWw6IG5pbF07CisgIGVsc2UKKyAgICB7Cisg
ICAgICBDSEVDS19TVFJJTkcgKGJhZGdlKTsKKyAgICAgIFtbTlNBcHAgZG9ja1RpbGVdIHNldEJh
ZGdlTGFiZWw6CisJCQkgIFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzogU1NEQVRBIChi
YWRnZSldXTsKKyAgICB9CisgIHVuYmxvY2tfaW5wdXQgKCk7CisgIHJldHVybiBRbmlsOworfQor
CisvKiBVc2UgLTEgdG8gaW5kaWNhdGUgbm8gYWN0aXZlIHJlcXVlc3QuICAqLworc3RhdGljIE5T
SW50ZWdlciBuc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uX2lkID0gLTE7CisKK0RFRlVOICgibnMt
cmVxdWVzdC11c2VyLWF0dGVudGlvbiIsCisgICAgICAgRm5zX3JlcXVlc3RfdXNlcl9hdHRlbnRp
b24sCisgICAgICAgU25zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24sCisgICAgICAgMSwgMSwgMCwK
KyAgICAgICBkb2M6IC8qIEJvdW5jZSB0aGUgYXBwIGRvY2sgaWNvbiB0byByZXF1ZXN0IHVzZXIg
YXR0ZW50aW9uLgorSWYgVVJHRU5DWSBuaWwsIGNhbmNlbCB0aGUgb3V0c3RhbmRpbmcgcmVxdWVz
dCwgaWYgYW55LgorSWYgVVJHRU5DWSBpcyB0aGUgc3ltYm9sIGBpbmZvcm1hdGlvbmFsJywgYm91
bmNpbmcgbGFzdHMgYSBmZXcgc2Vjb25kcy4KK0lmIFVSR0VOQ1kgaXMgdGhlIHN5bWJvbCBgY3Jp
dGljYWwnLCBib3VuY2luZyBsYXN0cyB1bnRpbCBFbWFjcyBpcworZm9jdXNlZC4gICovKQorICAo
TGlzcF9PYmplY3QgdXJnZW5jeSkKK3sKKyAgYmxvY2tfaW5wdXQgKCk7CisgIGlmIChuc19yZXF1
ZXN0X3VzZXJfYXR0ZW50aW9uX2lkICE9IC0xKQorICAgIHsKKyAgICAgIFtOU0FwcCBjYW5jZWxV
c2VyQXR0ZW50aW9uUmVxdWVzdDogbnNfcmVxdWVzdF91c2VyX2F0dGVudGlvbl9pZF07CisgICAg
ICBuc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uX2lkID0gLTE7CisgICAgfQorICBpZiAoIU5JTFAg
KHVyZ2VuY3kpICYmIFNZTUJPTFAgKHVyZ2VuY3kpKQorICAgIHsKKyAgICAgIGlmIChFUSAodXJn
ZW5jeSwgUWluZm9ybWF0aW9uYWwpKQorCW5zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb25faWQgPSBb
TlNBcHAgcmVxdWVzdFVzZXJBdHRlbnRpb246CisJCQkJCQlOU0luZm9ybWF0aW9uYWxSZXF1ZXN0
XTsKKyAgICAgIGVsc2UgaWYgKEVRICh1cmdlbmN5LCBRY3JpdGljYWwpKQorCW5zX3JlcXVlc3Rf
dXNlcl9hdHRlbnRpb25faWQgPSBbTlNBcHAgcmVxdWVzdFVzZXJBdHRlbnRpb246CisJCQkJCQlO
U0NyaXRpY2FsUmVxdWVzdF07CisgICAgfQorICB1bmJsb2NrX2lucHV0ICgpOworICByZXR1cm4g
UW5pbDsKK30KKworREVGVU4gKCJucy1wcm9ncmVzcy1pbmRpY2F0b3IiLAorICAgICAgIEZuc19w
cm9ncmVzc19pbmRpY2F0b3IsCisgICAgICAgU25zX3Byb2dyZXNzX2luZGljYXRvciwKKyAgICAg
ICAxLCAxLCAwLAorICAgICAgIGRvYzogLyogQm91bmNlIHRoZSBhcHAgZG9jayBpY29uIHRvIHJl
cXVlc3QgdXNlciBhdHRlbnRpb24uCitQUk9HUkVTUyBpcyBhIGZsb2F0IGJldHdlZW4gMC4wIGFu
ZCAxLjAuCitJZiBQUk9HUkVTUyBpcyBuaWwsIHJlbW92ZSB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9y
LiAgKi8pCisgIChMaXNwX09iamVjdCBwcm9ncmVzcykKK3sKKyAgYmxvY2tfaW5wdXQgKCk7Cisg
IE5TRG9ja1RpbGUgKmRvY2tfdGlsZSA9IFtOU0FwcCBkb2NrVGlsZV07CisgIC8qIFVzZSBOU0xl
dmVsSW5kaWNhdG9yIHdpdGggcmVsaWFibGUgcmVkcmF3cywgbm90IE5TUHJvZ3Jlc3NJbmRpY2F0
b3IuICAqLworICBOU0xldmVsSW5kaWNhdG9yICpsZXZlbF9pbmRpY2F0b3I7CisgIC8qIFJldXNl
IHRoZSBpbmRpY2F0b3Igc3VidmlldyBvciBjcmVhdGUgb25lLiAqLworICBpZiAoZG9ja190aWxl
LmNvbnRlbnRWaWV3CisgICAgICAmJiBbW2RvY2tfdGlsZS5jb250ZW50VmlldyBzdWJ2aWV3c10g
Y291bnRdID4gMAorICAgICAgJiYgW1tbZG9ja190aWxlLmNvbnRlbnRWaWV3IHN1YnZpZXdzXSBs
YXN0T2JqZWN0XQorICAgICAgICAgICAgICAgICAgICAgICAgaXNLaW5kT2ZDbGFzczpbTlNMZXZl
bEluZGljYXRvciBjbGFzc11dKQorICAgIGxldmVsX2luZGljYXRvciA9CisgICAgICAoTlNMZXZl
bEluZGljYXRvciAqKVtbW2RvY2tfdGlsZSBjb250ZW50Vmlld10gc3Vidmlld3NdIGxhc3RPYmpl
Y3RdOworICAgIGVsc2UKKyAgICAgIHsKKwlpZiAoIWRvY2tfdGlsZS5jb250ZW50VmlldykKKwkg
IHsKKwkgICAgTlNJbWFnZVZpZXcqIGltYWdlX3ZpZXcgPSBbW05TSW1hZ2VWaWV3IGFsbG9jXSBp
bml0XTsKKwkgICAgW2ltYWdlX3ZpZXcgc2V0SW1hZ2U6IFtOU0FwcCBhcHBsaWNhdGlvbkljb25J
bWFnZV1dOworCSAgICBbZG9ja190aWxlIHNldENvbnRlbnRWaWV3OiBpbWFnZV92aWV3XTsKKwkg
IH0KKwkvKiBTZXQgd2lkdGggdG8gdGhlIHdpZHRoIG9mIHRoZSBhcHBsaWNhdGlvbiBpY29uLCBh
bmQgaGVpZ2h0IHRvCisJICAgJSBvZiB0aGUgaWNvbiBoZWlnaHQgdG8gcmVzcGVjdCBzY2FsZWQg
aWNvbnMuICAqLworCWZsb2F0IHdpZHRoID0gW1tOU0FwcCBhcHBsaWNhdGlvbkljb25JbWFnZV0g
c2l6ZV0ud2lkdGg7CisJZmxvYXQgaGVpZ2h0ID0gMC4xMCAqIFtbTlNBcHAgYXBwbGljYXRpb25J
Y29uSW1hZ2VdIHNpemVdLmhlaWdodDsKKwlsZXZlbF9pbmRpY2F0b3IgPQorCSAgW1tOU0xldmVs
SW5kaWNhdG9yIGFsbG9jXSBpbml0V2l0aEZyYW1lOgorCQkJCSAgICAgIE5TTWFrZVJlY3QgKDAu
MCwgMC4wLAorCQkJCQkJICB3aWR0aCwgaGVpZ2h0KV07CisJW2xldmVsX2luZGljYXRvciBzZXRX
YW50c0xheWVyOiBZRVNdOyAvKiBQZXJmb3JtYW5jZS4gICovCisJW2xldmVsX2luZGljYXRvciBz
ZXRFbmFibGVkOiBOT107IC8qIElnbm9yZSBtb3VzZSBpbnB1dC4gICovCisJW2xldmVsX2luZGlj
YXRvciBzZXRMZXZlbEluZGljYXRvclN0eWxlOgorCQkJICAgTlNMZXZlbEluZGljYXRvclN0eWxl
Q29udGludW91c0NhcGFjaXR5XTsKKwkvKiBNYXRjaCBOU1Byb2dyZXNzSW5kaWNhdG9yIGNvbG9y
LiAgKi8KKwlbbGV2ZWxfaW5kaWNhdG9yIHNldEZpbGxDb2xvcjogW05TQ29sb3IgY29udHJvbEFj
Y2VudENvbG9yXV07CisJW2xldmVsX2luZGljYXRvciBzZXRNaW5WYWx1ZTogMC4wXTsKKwlbbGV2
ZWxfaW5kaWNhdG9yIHNldE1heFZhbHVlOiAxLjBdOworCS8qIFRoZSBjb250ZW50VmlldyB0YWtl
cyBvd25lcnNoaXAuICAqLworCVtkb2NrX3RpbGUuY29udGVudFZpZXcgYWRkU3VidmlldzogbGV2
ZWxfaW5kaWNhdG9yXTsKKyAgICAgIH0KKyAgZG91YmxlIHByb2dyZXNzX3ZhbHVlOworICBCT09M
IGhpZGUgPSAoTklMUCAocHJvZ3Jlc3MpCisJICAgICAgIHx8ICghTklMUCAocHJvZ3Jlc3MpICYm
ICEoRkxPQVRQIChwcm9ncmVzcykpKSk7CisgIGlmICghaGlkZSkKKyAgICB7CisgICAgICBwcm9n
cmVzc192YWx1ZSA9IFhGTE9BVF9EQVRBIChwcm9ncmVzcyk7CisgICAgICBoaWRlID0gKHByb2dy
ZXNzX3ZhbHVlIDwgMC4wIHx8IHByb2dyZXNzX3ZhbHVlID4gMS4wKTsKKyAgICB9CisgIGlmICho
aWRlKQorICAgIHsKKyAgICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0RG91YmxlVmFsdWU6IDAuMF07
CisgICAgICBbbGV2ZWxfaW5kaWNhdG9yIHNldEhpZGRlbjogWUVTXTsKKyAgICB9CisgIGVsc2UK
KyAgICB7CisgICAgICBbbGV2ZWxfaW5kaWNhdG9yIHNldERvdWJsZVZhbHVlOiBwcm9ncmVzc192
YWx1ZV07CisgICAgICBbbGV2ZWxfaW5kaWNhdG9yIHNldEhpZGRlbjogTk9dOworICAgIH0KKyAg
W2RvY2tfdGlsZSBkaXNwbGF5XTsKKyAgdW5ibG9ja19pbnB1dCAoKTsKKyAgcmV0dXJuIFFuaWw7
Cit9CisKICNpZmRlZiBOU19JTVBMX0NPQ09BCiAKIERFRlVOICgibnMtc2VuZC1pdGVtcyIsCkBA
IC0zOTU3LDYgKzQwODAsOSBAQCAtIChMaXNwX09iamVjdClsaXNwU3RyaW5nCiAgIGRlZnN1YnIg
KCZTbnNfc2V0X21vdXNlX2Fic29sdXRlX3BpeGVsX3Bvc2l0aW9uKTsKICAgZGVmc3ViciAoJlNu
c19tb3VzZV9hYnNvbHV0ZV9waXhlbF9wb3NpdGlvbik7CiAgIGRlZnN1YnIgKCZTbnNfc2hvd19j
aGFyYWN0ZXJfcGFsZXR0ZSk7CisgIGRlZnN1YnIgKCZTbnNfYmFkZ2UpOworICBkZWZzdWJyICgm
U25zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24pOworICBkZWZzdWJyICgmU25zX3Byb2dyZXNzX2lu
ZGljYXRvcik7CiAjaWZkZWYgTlNfSU1QTF9DT0NPQQogICBkZWZzdWJyICgmU25zX3NlbmRfaXRl
bXMpOwogI2VuZGlmCkBAIC00MDIzLDQgKzQxNDksNiBAQCAtIChMaXNwX09iamVjdClsaXNwU3Ry
aW5nCiAgIERFRlNZTSAoUWFzc3FfZGVsZXRlX2FsbCwgImFzc3EtZGVsZXRlLWFsbCIpOwogICBE
RUZTWU0gKFFydW5fYXRfdGltZSwgInJ1bi1hdC10aW1lIik7CiAgIERFRlNZTSAoUXhfaGlkZV90
aXAsICJ4LWhpZGUtdGlwIik7CisgIERFRlNZTSAoUWluZm9ybWF0aW9uYWwsICJpbmZvcm1hdGlv
bmFsIik7CisgIERFRlNZTSAoUWNyaXRpY2FsLCAiY3JpdGljYWwiKTsKIH0KZGlmZiAtLWdpdCBh
L3NyYy93MzJmbnMuYyBiL3NyYy93MzJmbnMuYwppbmRleCA2NzllODE5N2ZkOC4uMWEyZmM5ZTg4
NDIgMTAwNjQ0Ci0tLSBhL3NyYy93MzJmbnMuYworKysgYi9zcmMvdzMyZm5zLmMKQEAgLTM1LDcg
KzM1LDEyIEBAICNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4MDYwMAogI2luY2x1ZGUgPGMtY3R5cGUu
aD4KIAogI2RlZmluZSBDT0JKTUFDUk9TIC8qIEFzayBmb3IgQyBkZWZpbml0aW9ucyBmb3IgQ09N
LiAgKi8KKyNpZiAhZGVmaW5lZCBNSU5HV19XNjQgJiYgIWRlZmluZWQgQ1lHV0lOCisjIGRlZmlu
ZSBJTklUR1VJRAorI2VuZGlmCisjaW5jbHVkZSA8aW5pdGd1aWQuaD4KICNpbmNsdWRlIDxzaGxv
YmouaD4KKyNpbmNsdWRlIDxzaG9iamlkbC5oPgogI2luY2x1ZGUgPG9sZWlkbC5oPgogI2luY2x1
ZGUgPG9iamlkbC5oPgogI2luY2x1ZGUgPG9sZTIuaD4KQEAgLTIzNyw2ICsyNDIsOCBAQCBERUNM
QVJFX0hBTkRMRShITU9OSVRPUik7CiB0eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFNldEdlc3R1cmVD
b25maWdfcHJvYykgKEhXTkQsIERXT1JELCBVSU5ULAogCQkJCQkgICAgICAgRW1hY3NfUEdFU1RV
UkVDT05GSUcsIFVJTlQpOwogCit0eXBlZGVmIEJPT0wgKFdJTkFQSSAqIEZsYXNoV2luZG93RXhf
UHJvYykgKFBGTEFTSFdJTkZPIHBmd2kpOworCiBzdGF0aWMgVHJhY2tNb3VzZUV2ZW50X1Byb2Mg
dHJhY2tfbW91c2VfZXZlbnRfZm4gPSBOVUxMOwogc3RhdGljIEltbUdldENvbXBvc2l0aW9uU3Ry
aW5nX1Byb2MgZ2V0X2NvbXBvc2l0aW9uX3N0cmluZ19mbiA9IE5VTEw7CiBzdGF0aWMgSW1tR2V0
Q29udGV4dF9Qcm9jIGdldF9pbWVfY29udGV4dF9mbiA9IE5VTEw7CkBAIC0yNTksNiArMjY2LDcg
QEAgREVDTEFSRV9IQU5ETEUoSE1PTklUT1IpOwogc3RhdGljIFdUU1JlZ2lzdGVyU2Vzc2lvbk5v
dGlmaWNhdGlvbl9Qcm9jIFdUU1JlZ2lzdGVyU2Vzc2lvbk5vdGlmaWNhdGlvbl9mbiA9IE5VTEw7
CiBzdGF0aWMgUmVnaXN0ZXJUb3VjaFdpbmRvd19wcm9jIFJlZ2lzdGVyVG91Y2hXaW5kb3dfZm4g
PSBOVUxMOwogc3RhdGljIFNldEdlc3R1cmVDb25maWdfcHJvYyBTZXRHZXN0dXJlQ29uZmlnX2Zu
ID0gTlVMTDsKK3N0YXRpYyBGbGFzaFdpbmRvd0V4X1Byb2MgZmxhc2hfd2luZG93X2V4X2ZuID0g
TlVMTDsKIAogZXh0ZXJuIEFwcGVuZE1lbnVXX1Byb2MgdW5pY29kZV9hcHBlbmRfbWVudTsKIApA
QCAtMTEwMTAsNiArMTEwMTgsMzEzIEBAIERFRlVOICgidzMyLXN5c3RlbS1pZGxlLXRpbWUiLCBG
dzMyX3N5c3RlbV9pZGxlX3RpbWUsIFN3MzJfc3lzdGVtX2lkbGVfdGltZSwKIAogI2VuZGlmCiAK
KwwKKyNpZmRlZiBXSU5ET1dTTlQKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisJCSAgICAgVGFza2JhciBJ
bmRpY2F0b3JzCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgTUlOR1dfVzY0CisgIC8qIG1p
bmd3Lm9yZydzIE1pbkdXIGRvZXNuJ3QgaGF2ZSB0aGlzIHN0dWZmLiAgKi8KKyAgREVGSU5FX0dV
SUQoQ0xTSURfVGFza2Jhckxpc3QsIDB4NTZmZGYzNDQsIDB4ZmQ2ZCwgMHgxMWQwLCAweDk1LDB4
OGEsIDB4MDAsMHg2MCwweDk3LDB4YzksMHhhMCwweDkwKTsKKyAgREVGSU5FX0dVSUQoSUlEX0lU
YXNrYmFyTGlzdDMsIDB4ZWExYWZiOTEsIDB4OWUyOCwgMHg0Yjg2LCAweDkwLDB4ZTksIDB4OWUs
MHg5ZiwweDhhLDB4NWUsMHhlZiwweGFmKTsKKyNlbmRpZgorCitERUZVTiAoInczMi1iYWRnZSIs
CisgICAgICAgRnczMl9iYWRnZSwKKyAgICAgICBTdzMyX2JhZGdlLAorICAgICAgIDMsIDMsIDAs
CisgICAgICAgZG9jOiAvKiBEaXNwbGF5IGEgdGFza2JhciBpY29uIG92ZXJsYXkgaW1hZ2Ugb24g
dGhlIHNlbGVjdGVkIGZyYW1lLgorQkFER0UgaXMgYSBzdHJpbmcuICBJZiBCQURHRSBpcyBuaWws
IHJlbW92ZSB0aGUgb3ZlcmxheS4gIERvIG5vdGhpbmcgaWYKK1dpbmRvd3MgZG9lcyBub3Qgc3Vw
cG9ydCB0aGUgSVRhc2tiYXJMaXN0MyBpbnRlcmZhY2UgYW5kIHJldHVybiBuaWwsCitvdGhlcndp
c2UgcmV0dXJuIHQuICBEbyBub3RoaW5nIGlmIHRoZSBzZWxlY3RlZCBmcmFtZSBpcyBub3QgKHll
dCkKK2Fzc29jaWF0ZWQgd2l0aCBhIHdpbmRvdyBoYW5kbGUuICBCQUNLR1JPVU5EIGFuZCBGT1JF
R1JPVU5EIGFyZSBSR0IKK3RyaXBsZXQgc3RyaW5ncyBvZiB0aGUgZm9ybSBcIiNSUkdHQkJcIi4g
ICovKQorICAoTGlzcF9PYmplY3QgYmFkZ2UsIExpc3BfT2JqZWN0IGJhY2tncm91bmQsIExpc3Bf
T2JqZWN0IGZvcmVncm91bmQpCit7CisgIHN0cnVjdCBmcmFtZSAqc2YgPSBTRUxFQ1RFRF9GUkFN
RSAoKTsKKyAgSFdORCBod25kID0gTlVMTDsKKworICBpZiAoRlJBTUVfVzMyX1AgKHNmKSAmJiBG
UkFNRV9MSVZFX1AgKHNmKSkKKyAgICBod25kID0gRlJBTUVfVzMyX1dJTkRPVyAoc2YpOworCisg
IGlmIChod25kID09IE5VTEwpCisgICAgcmV0dXJuIFFuaWw7CisKKyAgQ29Jbml0aWFsaXplIChO
VUxMKTsKKyAgSVRhc2tiYXJMaXN0MyAqdGFza19iYXJfbGlzdCA9IE5VTEw7CisgIEhSRVNVTFQg
ciA9IENvQ3JlYXRlSW5zdGFuY2UoJkNMU0lEX1Rhc2tiYXJMaXN0LAorCQkJICAgICAgIE5VTEws
CisJCQkgICAgICAgQ0xTQ1RYX0lOUFJPQ19TRVJWRVIsCisJCQkgICAgICAgJklJRF9JVGFza2Jh
ckxpc3QzLAorCQkJICAgICAgICh2b2lkICoqKSZ0YXNrX2Jhcl9saXN0KTsKKyAgaWYgKHIgIT0g
U19PSykKKyAgICByZXR1cm4gUW5pbDsKKworICBpZiAoIU5JTFAgKGJhZGdlKSAmJiBTVFJJTkdQ
IChiYWRnZSkKKyAgICAgICYmIFNUUklOR1AgKGJhY2tncm91bmQpICYmIFNUUklOR1AgKGZvcmVn
cm91bmQpKQorICAgIHsKKyAgICAgIENPTE9SUkVGIGJnX3JnYjsKKyAgICAgIENPTE9SUkVGIGZn
X3JnYjsKKyAgICAgIHVuc2lnbmVkIHNob3J0IHIsIGcsIGI7CisgICAgICBpZiAocGFyc2VfY29s
b3Jfc3BlYyAoU1NEQVRBIChiYWNrZ3JvdW5kKSwgJnIsICZnLCAmYikpCisJYmdfcmdiID0gUkdC
IChyLCBiLCBiKTsKKyAgICAgIGVsc2UKKwlyZXR1cm4gUW5pbDsKKyAgICAgIGlmIChwYXJzZV9j
b2xvcl9zcGVjIChTU0RBVEEgKGZvcmVncm91bmQpLCAmciwgJmcsICZiKSkKKwlmZ19yZ2IgPSBS
R0IgKHIsIGIsIGIpOworICAgICAgZWxzZQorCXJldHVybiBRbmlsOworCisgICAgICAvKiBQcmVw
YXJlIGEgc3RyaW5nIGZvciBkcmF3aW5nIGFuZCBhcyBhbHQtdGV4dC4gICovCisgICAgICBMaXNw
X09iamVjdCBiYWRnZV91dGY4ID0gRU5DT0RFX1VURl84IChiYWRnZSk7CisgICAgICBpbnQgd2lk
ZV9sZW4gPSBwTXVsdGlCeXRlVG9XaWRlQ2hhciAoQ1BfVVRGOCwgMCwKKwkJCQkJICAgU1NEQVRB
IChiYWRnZV91dGY4KSwKKwkJCQkJICAgLTEsIE5VTEwsIDApOworICAgICAgd2NoYXJfdCAqYmFk
Z2VfdyA9IGFsbG9jYSAoKHdpZGVfbGVuICsgMSkgKiBzaXplb2YgKHdjaGFyX3QpKTsKKyAgICAg
IHBNdWx0aUJ5dGVUb1dpZGVDaGFyIChDUF9VVEY4LCAwLCBTU0RBVEEgKGJhZGdlX3V0ZjgpLCAt
MSwKKwkJCSAgICAoTFBXU1RSKSBiYWRnZV93LAorCQkJICAgIHdpZGVfbGVuKTsKKworICAgICAg
LyogVXNlIHRoZSBzbWFsbCBpY29uIHNpemUgV2luZG93cyBzdWdnZXN0cyB0byBub3QgaGFyZCBj
b2RlIDE2eDE2LiAgKi8KKyAgICAgIGludCBpY29uX3dpZHRoID0gR2V0U3lzdGVtTWV0cmljcyAo
U01fQ1hTTUlDT04pOworICAgICAgaW50IGljb25faGVpZ2h0ID0gR2V0U3lzdGVtTWV0cmljcyAo
U01fQ1hTTUlDT04pOworCisgICAgICBIREMgaHduZF9kYyA9IEdldERDIChod25kKTsKKyAgICAg
IEhEQyBkYyA9IENyZWF0ZUNvbXBhdGlibGVEQyAoaHduZF9kYyk7CisKKyAgICAgIEJJVE1BUFY1
SEVBREVSIGJpOworICAgICAgbWVtc2V0ICgmYmksIDAsIHNpemVvZiAoYmkpKTsKKyAgICAgIGJp
LmJWNVNpemUgPSBzaXplb2YgKGJpKTsKKyAgICAgIGJpLmJWNVdpZHRoID0gaWNvbl93aWR0aDsK
KyAgICAgIGJpLmJWNUhlaWdodCA9IC1pY29uX2hlaWdodDsgLyogTmVnYXRpdmUgZm9yIGEgdG9w
LWRvd24gRElCLiAgKi8KKyAgICAgIGJpLmJWNVBsYW5lcyA9IDE7CisgICAgICBiaS5iVjVCaXRD
b3VudCA9IDMyOworICAgICAgYmkuYlY1Q29tcHJlc3Npb24gPSBCSV9CSVRGSUVMRFM7ICAvKiBF
bmFibGUgdGhlIG1hc2tzIGJlbG93LiAgKi8KKyAgICAgIGJpLmJWNVJlZE1hc2sgICA9ICAweDAw
RkYwMDAwOworICAgICAgYmkuYlY1R3JlZW5NYXNrID0gIDB4MDAwMEZGMDA7CisgICAgICBiaS5i
VjVCbHVlTWFzayAgPSAgMHgwMDAwMDBGRjsKKyAgICAgIGJpLmJWNUFscGhhTWFzayA9ICAweEZG
MDAwMDAwOworCisgICAgICBEV09SRCAqYml0bWFwX3BpeGVsczsKKyAgICAgIEhCSVRNQVAgYml0
bWFwID0gQ3JlYXRlRElCU2VjdGlvbiAoZGMsIChCSVRNQVBJTkZPICopICZiaSwKKwkJCQkJIERJ
Ql9SR0JfQ09MT1JTLAorCQkJCQkgKHZvaWQgKiopICZiaXRtYXBfcGl4ZWxzLAorCQkJCQkgTlVM
TCwgMCk7CisgICAgICBIR0RJT0JKIG9sZF9iaXRtYXAgPSBTZWxlY3RPYmplY3QoZGMsIGJpdG1h
cCk7CisKKyAgICAgIC8qIERyYXcgYSBjaXJjbGUgZmlsbGVkIHdpdGggYmcuICAqLworICAgICAg
SEJSVVNIIGJnX2JydXNoID0gQ3JlYXRlU29saWRCcnVzaCAoYmdfcmdiKTsKKyAgICAgIEhHRElP
Qkogb2xkX2JydXNoID0gU2VsZWN0T2JqZWN0IChkYywgYmdfYnJ1c2gpOworICAgICAgRWxsaXBz
ZSAoZGMsIDAsIDAsIGljb25fd2lkdGgsIGljb25faGVpZ2h0KTsKKyAgICAgIFNlbGVjdE9iamVj
dCAoZGMsIG9sZF9icnVzaCk7CisgICAgICBEZWxldGVPYmplY3QgKGJnX2JydXNoKTsKKworICAg
ICAgLyogRGVyaXZlIGEgZm9udCBzY2FsZWQgdG8gZml0IHRoZSBpY29uLiAgRmlyc3QgZmluZCB0
aGUgc3lzdGVtJ3MKKwkgYmFzZSBmb250LiAgVGhlbiBzY2FsZSBpdCB0byBmaXQgaWNvbl9oZWln
aHQuICAqLworICAgICAgSEZPTlQgYmFzZV9mb250OworICAgICAgQk9PTCBjbGVhbl91cF9iYXNl
X2ZvbnQgPSBGQUxTRTsKKyAgICAgIGlmIChzeXN0ZW1fcGFyYW1ldGVyc19pbmZvX3dfZm4pCisJ
eworCSAgTk9OQ0xJRU5UTUVUUklDUyBuY207CisJICBtZW1zZXQgKCZuY20sIDAsIHNpemVvZiAo
bmNtKSk7CisJICBuY20uY2JTaXplID0gc2l6ZW9mIChuY20pOworCSAgU3lzdGVtUGFyYW1ldGVy
c0luZm8gKFNQSV9HRVROT05DTElFTlRNRVRSSUNTLCBzaXplb2YgKG5jbSksICZuY20sIDApOwor
CSAgYmFzZV9mb250ID0gQ3JlYXRlRm9udEluZGlyZWN0ICgmbmNtLmxmU21DYXB0aW9uRm9udCk7
CisJICBjbGVhbl91cF9iYXNlX2ZvbnQgPSBUUlVFOworCX0KKyAgICAgIGVsc2UKKwliYXNlX2Zv
bnQgPSAoSEZPTlQpIEdldFN0b2NrT2JqZWN0IChERUZBVUxUX0dVSV9GT05UKTsKKyAgICAgIGlm
IChjbGVhbl91cF9iYXNlX2ZvbnQpCisJRGVsZXRlT2JqZWN0IChiYXNlX2ZvbnQpOworCisgICAg
ICBMT0dGT05UIGxmOworICAgICAgR2V0T2JqZWN0IChiYXNlX2ZvbnQsIHNpemVvZiAobGYpLCAm
bGYpOworICAgICAgbGYubGZXZWlnaHQgPSBGV19CT0xEOworICAgICAgbGYubGZPdXRQcmVjaXNp
b24gPSBPVVRfT1VUTElORV9QUkVDSVM7CisgICAgICAvKiBDbGVhclR5cGUgcXVhbGl0eSBuZWVk
cyBvcHFhdWUsIGJ1dCB3ZSBkcmF3IHRyYW5zcGFyZW50LiAgKi8KKyAgICAgIGxmLmxmUXVhbGl0
eSA9IEFOVElBTElBU0VEX1FVQUxJVFk7CisgICAgICAvKiBOZWdhdGl2ZSBsZkhlaWdodCBpbmRp
Y2F0ZXMgcGl4ZWwgdW5pdHMgdnMuIHBvc2l0aXZlIGluIHBvaW50cy4KKwkgVXNlIHRoZSBMT0dQ
SVhFTFNZIHB4L2luIG9mIHRoZSBwcmltYXJ5IG1vbml0b3IuICAqLworICAgICAgbGYubGZIZWln
aHQgPSAtTXVsRGl2KGljb25faGVpZ2h0IC8gMiwgLyogRml0IH4zIGNoYXJzLiAgKi8KKwkJCSAg
ICA3MiwKKwkJCSAgICBHZXREZXZpY2VDYXBzIChHZXREQyAoTlVMTCksIExPR1BJWEVMU1kpKTsK
KyAgICAgIC8qIEVuc3VyZSBsZkhlaWdodCBwaXhlbCBpbnRlcnByZXRhdGlvbi4gICovCisgICAg
ICBpbnQgb2xkX21hcF9tb2RlID0gU2V0TWFwTW9kZSAoZGMsIE1NX1RFWFQpOworICAgICAgSEZP
TlQgc2NhbGVkX2ZvbnQgPSBDcmVhdGVGb250SW5kaXJlY3QgKCZsZik7CisgICAgICBIR0RJT0JK
IG9sZF9mb250ID0gU2VsZWN0T2JqZWN0IChkYywgc2NhbGVkX2ZvbnQpOworICAgICAgU2V0TWFw
TW9kZSAoZGMsIG9sZF9tYXBfbW9kZSk7CisKKyAgICAgIC8qIERyYXcgYmFkZ2UgdGV4dC4gICov
CisgICAgICBTZXRCa01vZGUgKGRjLCBUUkFOU1BBUkVOVCk7CisgICAgICBTZXRUZXh0Q29sb3Ig
KGRjLCBmZ19yZ2IpOworICAgICAgUkVDVCByZWN0OworICAgICAgcmVjdC5sZWZ0ID0gcmVjdC50
b3AgPSAwOworICAgICAgcmVjdC5yaWdodCA9IGljb25fd2lkdGg7CisgICAgICByZWN0LmJvdHRv
bSA9IGljb25faGVpZ2h0OworICAgICAgRHJhd1RleHQgKGRjLCBTU0RBVEEgKGJhZGdlX3V0Zjgp
LAorCQktMSwgLyogSW5kaWNhdGUgbnVsbC10ZXJtaW5hdGVkIHN0cmluZy4gICovCisJCSZyZWN0
LAorCQlEVF9DRU5URVIgfCBEVF9WQ0VOVEVSIHwgRFRfU0lOR0xFTElORSB8IERUX05PQ0xJUCk7
CisgICAgICBTZWxlY3RPYmplY3QgKGRjLCBvbGRfZm9udCk7CisgICAgICBEZWxldGVPYmplY3Qg
KHNjYWxlZF9mb250KTsKKworICAgICAgLyogTWFrZSB0aGUgY2lyY2xlIGFuZCBpdHMgdGV4dCBv
cGFxdWUgYnkgc2V0dGluZyB0aGUgYWxwaGEKKwkgY2hhbm5lbCBvbiBlYWNoIHBpeGVsIGZhbGxp
bmcgd2l0aGluIHRoZSBjaXJjbGUuICAqLworICAgICAgaW50IGNpcmNsZV9jZW50ZXJfeCA9IGlj
b25fd2lkdGggLyAyOworICAgICAgaW50IGNpcmNsZV9jZW50ZXJfeSA9IGljb25faGVpZ2h0IC8g
MjsKKyAgICAgIGludCBjaXJjbGVfcmFkaXVzID0gKGljb25fd2lkdGggPCBpY29uX2hlaWdodAor
CQkJICAgPyBpY29uX3dpZHRoCisJCQkgICA6IGljb25faGVpZ2h0KSAvIDIgLSAyOworICAgICAg
aW50IGNpcmNsZV9yYWRpdXNfc3EgPSBjaXJjbGVfcmFkaXVzICogY2lyY2xlX3JhZGl1czsKKyAg
ICAgIERXT1JEICpwaXhlbDsKKyAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaWNvbl9oZWlnaHQ7
ICsreSkKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBpY29uX3dpZHRoOyArK3gpCisJICB7
CisgICAgICAgICAgICBpbnQgZHggPSB4IC0gY2lyY2xlX2NlbnRlcl94OworICAgICAgICAgICAg
aW50IGR5ID0geSAtIGNpcmNsZV9jZW50ZXJfeTsKKyAgICAgICAgICAgIGlmIChkeCAqIGR4ICsg
ZHkgKiBkeSA8PSBjaXJjbGVfcmFkaXVzX3NxKQorCSAgICAgIHsKKwkJICBwaXhlbCA9IGJpdG1h
cF9waXhlbHMgKyAoeSAqIGljb25fd2lkdGggKyB4KTsKKwkJICAqcGl4ZWwgfD0gMHhmZjAwMDAw
MDsgLyogRmxpcCB0aGUgMHhBQVJSR0dCQiBhbHBoYSBjaGFubmVsLiAgKi8KKwkgICAgICB9CisJ
ICB9CisKKyAgICAgIC8qIER1bW15IG1vbm9jaHJvbWUgYml0bWFwIG1hc2ssIGlnbm9yZWQgd2hl
biB0aGUgY29sb3IgYml0bWFwIGhhcworCSBhbiBhbHBoYSBjaGFubmVsLCBidXQgbmVlZGVkIHRv
IHNhdGlzZnkgQ3JlYXRlSWNvbkluZGlyZWN0LiAgKi8KKyAgICAgIEhCSVRNQVAgbWFza19iaXRt
YXAgPSBDcmVhdGVCaXRtYXAgKGljb25fd2lkdGgsIGljb25faGVpZ2h0LCAxLCAxLCBOVUxMKTsK
KworICAgICAgLyogaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3Mvd2lu
MzIvYXBpL3dpbnVzZXIvbmYtd2ludXNlci1jcmVhdGVpY29uaW5kaXJlY3QKKwkgaGJtTWFzayBh
bmQgaGJtQ29sb3IgbWVtYmVycyBvZiB0aGUgSUNPTklORk8gc3RydWN0dXJlIHNob3VsZAorCSBu
b3QgYWxyZWFkeSBiZSBzZWxlY3RlZCBpbnRvIGEgZGV2aWNlIGNvbnRleHQuICAqLworICAgICAg
U2VsZWN0T2JqZWN0IChkYywgb2xkX2JpdG1hcCk7CisKKyAgICAgIElDT05JTkZPIGljb25faW5m
bzsKKyAgICAgIG1lbXNldCAoJmljb25faW5mbywgMCwgc2l6ZW9mIChpY29uX2luZm8pKTsKKyAg
ICAgIGljb25faW5mby5mSWNvbiA9IFRSVUU7CisgICAgICBpY29uX2luZm8uaGJtTWFzayA9IG1h
c2tfYml0bWFwOworICAgICAgaWNvbl9pbmZvLmhibUNvbG9yID0gYml0bWFwOworCisgICAgICBI
SUNPTiBpY29uID0gQ3JlYXRlSWNvbkluZGlyZWN0ICgmaWNvbl9pbmZvKTsKKyAgICAgIHRhc2tf
YmFyX2xpc3QtPmxwVnRibC0+U2V0T3ZlcmxheUljb24gKHRhc2tfYmFyX2xpc3QsIGh3bmQsIGlj
b24sIGJhZGdlX3cpOworCisgICAgICBEZXN0cm95SWNvbiAoaWNvbik7CisgICAgICBEZWxldGVP
YmplY3QgKG1hc2tfYml0bWFwKTsKKyAgICAgIERlbGV0ZU9iamVjdCAoYml0bWFwKTsKKyAgICAg
IERlbGV0ZURDIChkYyk7CisgICAgICBSZWxlYXNlREMgKGh3bmQsIGh3bmRfZGMpOworICAgIH0K
KyAgZWxzZQorICAgIHRhc2tfYmFyX2xpc3QtPmxwVnRibC0+U2V0T3ZlcmxheUljb24gKHRhc2tf
YmFyX2xpc3QsIGh3bmQsIE5VTEwsIE5VTEwpOworCisgIHRhc2tfYmFyX2xpc3QtPmxwVnRibC0+
UmVsZWFzZSh0YXNrX2Jhcl9saXN0KTsKKyAgcmV0dXJuIFF0OworfQorCitERUZVTiAoInczMi1y
ZXF1ZXN0LXVzZXItYXR0ZW50aW9uIiwKKyAgICAgICBGdzMyX3JlcXVlc3RfdXNlcl9hdHRlbnRp
b24sCisgICAgICAgU3czMl9yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uLAorICAgICAgIDEsIDEsIDAs
CisgICAgICAgZG9jOiAvKiBGbGFzaCB0aGUgc2VsZWN0ZWQgZnJhbWUncyB0YXNrYmFyIGljb24g
YW5kL29yIGl0cyB3aW5kb3cuCitJZiBVUkdFTkNZIGlzIG5pbCwgY2FuY2VsIHRoZSByZXF1ZXN0
LCBpZiBhbnkuICBJZiBVUkdFTkNZIGlzIHRoZSBzeW1ib2wKK2BpbmZvcm1hdGlvbmFsJywgZmxh
c2ggdGhlIHRhc2tiYXIgaWNvbi4gIElmIFVSR0VOQ1kgaXMgdGhlIHN5bWJvbAorYGNyaXRpY2Fs
JywgZmxhc2ggdGhlIHRhc2tiYXIgaWNvbiBhbmQgdGhlIGZyYW1lLiAgV2luZG93cyBzdG9wcwor
Zmxhc2hpbmcgaWYgdGhlIHVzZXIgZm9jdXNlcyB0aGUgZnJhbWUuICBEbyBub3RoaW5nIGlmIFdp
bmRvd3MgZG9lcyBub3QKK3N1cHBvcnQgRmxhc2hXaW5kb3dFeCBhbmQgcmV0dXJuIG5pbCwgb3Ro
ZXJ3aXNlIHJldHVybiB0LiAgRG8gbm90aGluZyBpZgordGhlIGZyYW1lIGlzIG5vdCAoeWV0KSBh
c3NvY2lhdGVkIHdpdGggYSB3aW5kb3cgaGFuZGxlLiAgKi8pCisgIChMaXNwX09iamVjdCB1cmdl
bmN5KQoreworICBpZiAoZmxhc2hfd2luZG93X2V4X2ZuID09IE5VTEwpCisgICAgcmV0dXJuIFFu
aWw7CisKKyAgc3RydWN0IGZyYW1lICpzZiA9IFNFTEVDVEVEX0ZSQU1FICgpOworICBIV05EIGh3
bmQgPSBOVUxMOworCisgIGlmIChGUkFNRV9XMzJfUCAoc2YpICYmIEZSQU1FX0xJVkVfUCAoc2Yp
KQorICAgIGh3bmQgPSBGUkFNRV9XMzJfV0lORE9XIChzZik7CisKKyAgaWYgKGh3bmQgPT0gTlVM
TCkKKyAgICByZXR1cm4gUW5pbDsKKworICBGTEFTSFdJTkZPIGZsYXNoX2luZm87CisgIGZsYXNo
X2luZm8uY2JTaXplID0gc2l6ZW9mKGZsYXNoX2luZm8pOworICBmbGFzaF9pbmZvLnVDb3VudCA9
IDA7CisgIGZsYXNoX2luZm8uZHdUaW1lb3V0ID0gMDsKKyAgZmxhc2hfaW5mby5od25kID0gaHdu
ZDsKKyAgaWYgKCFOSUxQICh1cmdlbmN5KSAmJiBTWU1CT0xQICh1cmdlbmN5KSkKKyAgICB7Cisg
ICAgICAvKiBUaGUgaW50ZW5kZWQgY2FsbGVyLCAnc3lzdGVtLXRhc2tiYXItYXR0ZW50aW9uJywg
aGFzIGFuCisJIG9wdGlvbmFsIHRpbWVyIHRvIGNsZWFyIHRoZSBhdHRlbnRpb24gaW5kaWNhdG9y
IHNvIHRoaXMgd2lsbAorCSBmbGFzaCB1bnRpbCBjbGVhcmVkIHZpYSB0aGUgdGltZXIsIG9yIHRo
ZSB3aW5kb3cgY29tZXMgdG8gdGhlCisJIGZvcmVncm91bmQuICBGb3IgaW5mb3JtYXRpb25hbCBh
dHRlbnRpb24sIGZsYXNoIHRoZSB0cmF5IGljb24uCisJIEZvciBjcml0aWNhbCBhdHRlbnRpb24s
IGZsYXNoIHRoZSB0cmF5IGljb24gYW5kIHRoZSB3aW5kb3cuICAqLworICAgICAgaWYgKEVRICh1
cmdlbmN5LCBRaW5mb3JtYXRpb25hbCkpCisJZmxhc2hfaW5mby5kd0ZsYWdzID0gRkxBU0hXX1RS
QVkgfCBGTEFTSFdfVElNRVJOT0ZHOworICAgICAgZWxzZSBpZiAoRVEgKHVyZ2VuY3ksIFFjcml0
aWNhbCkpCisJZmxhc2hfaW5mby5kd0ZsYWdzID0gRkxBU0hXX0FMTCB8IEZMQVNIV19USU1FUk5P
Rkc7CisgICAgfQorICBlbHNlCisgICAgZmxhc2hfaW5mby5kd0ZsYWdzID0gRkxBU0hXX1NUT1A7
CisKKyAgZmxhc2hfd2luZG93X2V4X2ZuICgmZmxhc2hfaW5mbyk7CisgIHJldHVybiBRdDsKK30K
KworREVGVU4gKCJ3MzItcHJvZ3Jlc3MtaW5kaWNhdG9yIiwKKyAgICAgICBGdzMyX3Byb2dyZXNz
X2luZGljYXRvciwKKyAgICAgICBTdzMyX3Byb2dyZXNzX2luZGljYXRvciwKKyAgICAgICAxLCAx
LCAwLAorICAgICAgIGRvYzogLyogU2hvdyBhIHByb2dyZXNzIGJhciBvbiB0aGUgc2VsZWN0ZWQg
ZnJhbWUncyB0YXNrYmFyIGljb24uCitQUk9HUkVTUyBpcyBhIGZsb2F0IGluIHRoZSByYW5nZSAw
LjAgdG8gMS4wLiAgSWYgUFJPR1JFU1MgaXMgbmlsLCByZW1vdmUKK3RoZSBwcm9ncmVzcyBpbmRp
Y2F0b3IuICBEbyBub3RoaW5nIGlmIFdpbmRvd3MgZG9lcyBub3Qgc3VwcG9ydCB0aGUKK0lUYXNr
YmFyTGlzdDMgaW50ZXJmYWNlIGFuZCByZXR1cm4gbmlsLCBvdGhlcndpc2UgcmV0dXJuIHQuICBE
byBub3RoaW5nCitpZiB0aGUgc2VsZWN0ZWQgZnJhbWUgaXMgbm90ICh5ZXQpIGFzc29jaWF0ZWQg
d2l0aCBhIHdpbmRvdyBoYW5kbGUgICovKQorICAoTGlzcF9PYmplY3QgcHJvZ3Jlc3MpCit7Cisg
IHN0cnVjdCBmcmFtZSAqc2YgPSBTRUxFQ1RFRF9GUkFNRSAoKTsKKyAgSFdORCBod25kID0gTlVM
TDsKKworICBpZiAoRlJBTUVfVzMyX1AgKHNmKSAmJiBGUkFNRV9MSVZFX1AgKHNmKSkKKyAgICBo
d25kID0gRlJBTUVfVzMyX1dJTkRPVyAoc2YpOworCisgIGlmIChod25kID09IE5VTEwpCisgICAg
cmV0dXJuIFFuaWw7CisKKyAgQ29Jbml0aWFsaXplIChOVUxMKTsKKyAgSVRhc2tiYXJMaXN0MyAq
dGFza19iYXJfbGlzdCA9IE5VTEw7CisgIEhSRVNVTFQgciA9IENvQ3JlYXRlSW5zdGFuY2UoJkNM
U0lEX1Rhc2tiYXJMaXN0LAorCQkJICAgICAgIE5VTEwsCisJCQkgICAgICAgQ0xTQ1RYX0lOUFJP
Q19TRVJWRVIsCisJCQkgICAgICAgJklJRF9JVGFza2Jhckxpc3QzLAorCQkJICAgICAgICh2b2lk
ICoqKSZ0YXNrX2Jhcl9saXN0KTsKKyAgaWYgKHIgIT0gU19PSykKKyAgICByZXR1cm4gUW5pbDsK
KworICAvKiBTY2FsZSB0YXNrIGJhciBwcm9ncmVzcyBmcm9tIDAuMC0xLjAgdG8gMC0xMDAuICAq
LworICBVTE9OR0xPTkcgYWRqX3Byb2dyZXNzID0gMDsKKyAgaWYgKCFOSUxQIChwcm9ncmVzcykg
JiYgRkxPQVRQIChwcm9ncmVzcykpCisgICAgICBhZGpfcHJvZ3Jlc3MgPSAoVUxPTkdMT05HKSAo
MTAwLjAgKgorCQkJCSAgWEZMT0FUX0RBVEEgKHByb2dyZXNzKSk7CisgIGlmIChhZGpfcHJvZ3Jl
c3MgPiAwKQorICAgIHsKKyAgICAgIHRhc2tfYmFyX2xpc3QtPmxwVnRibC0+U2V0UHJvZ3Jlc3NT
dGF0ZSAodGFza19iYXJfbGlzdCwKKwkJCQkJICAgICAgIGh3bmQsIFRCUEZfTk9STUFMKTsKKyAg
ICAgIHRhc2tfYmFyX2xpc3QtPmxwVnRibC0+U2V0UHJvZ3Jlc3NWYWx1ZSAodGFza19iYXJfbGlz
dCwKKwkJCQkJICAgICAgIGh3bmQsIGFkal9wcm9ncmVzcywgMTAwKTsKKyAgICB9CisgIGVsc2UK
KyAgICB7CisgICAgICB0YXNrX2Jhcl9saXN0LT5scFZ0YmwtPlNldFByb2dyZXNzU3RhdGUgKHRh
c2tfYmFyX2xpc3QsCisJCQkJCSAgICAgICBod25kLCBUQlBGX05PUFJPR1JFU1MpOworICAgIH0K
KworICB0YXNrX2Jhcl9saXN0LT5scFZ0YmwtPlJlbGVhc2UodGFza19iYXJfbGlzdCk7CisgIHJl
dHVybiBRdDsKK30KKworI2VuZGlmIC8qIFdJTkRPV1NOVCAqLworCiAvKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
IAkJCSAgICBJbml0aWFsaXphdGlvbgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMTE1MTEsNiArMTE4
MjYsMTUgQEAgc3ltc19vZl93MzJmbnMgKHZvaWQpCiAgIERFRlNZTSAoUWNhcHNsb2NrLCAiY2Fw
c2xvY2siKTsKICAgREVGU1lNIChRa3BfbnVtbG9jaywgImtwLW51bWxvY2siKTsKICAgREVGU1lN
IChRc2Nyb2xsLCAic2Nyb2xsIik7CisKKyAgI2lmZGVmIFdJTkRPV1NOVAorICAvKiBUYXNrYmFy
IGluZGljYXRvcnMgc3VwcG9ydC4gICovCisgIGRlZnN1YnIgKCZTdzMyX2JhZGdlKTsKKyAgZGVm
c3ViciAoJlN3MzJfcHJvZ3Jlc3NfaW5kaWNhdG9yKTsKKyAgZGVmc3ViciAoJlN3MzJfcmVxdWVz
dF91c2VyX2F0dGVudGlvbik7CisgIERFRlNZTSAoUWluZm9ybWF0aW9uYWwsICJpbmZvcm1hdGlv
bmFsIik7CisgIERFRlNZTSAoUWNyaXRpY2FsLCAiY3JpdGljYWwiKTsKKyAgI2VuZGlmCiB9CiAK
IAwKQEAgLTExNzk5LDYgKzEyMTIzLDkgQEAgZ2xvYmFsc19vZl93MzJmbnMgKHZvaWQpCiAgIFNl
dEdlc3R1cmVDb25maWdfZm4KICAgICA9IChTZXRHZXN0dXJlQ29uZmlnX3Byb2MpIGdldF9wcm9j
X2FkZHIgKHVzZXIzMl9saWIsCiAJCQkJCSAgICAgIlNldEdlc3R1cmVDb25maWciKTsKKyAgZmxh
c2hfd2luZG93X2V4X2ZuCisgICAgPSAoRmxhc2hXaW5kb3dFeF9Qcm9jKSBnZXRfcHJvY19hZGRy
ICh1c2VyMzJfbGliLAorCQkJCQkgICJGbGFzaFdpbmRvd0V4Iik7CiAKICAgewogICAgIEhNT0RV
TEUgaW1tMzJfbGliID0gR2V0TW9kdWxlSGFuZGxlICgiaW1tMzIuZGxsIik7Ci0tIAoyLjQ3LjEK
Cg==
--0000000000006e21c00646651a1a--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 20 Dec 2025 09:24:57 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Dec 20 04:24:57 2025
Received: from localhost ([127.0.0.1]:46598 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vWtCq-0003A5-Kb
for submit <at> debbugs.gnu.org; Sat, 20 Dec 2025 04:24:57 -0500
Received: from mout.gmx.net ([212.227.15.18]:58159)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>)
id 1vWtCn-00039q-VS
for 79859 <at> debbugs.gnu.org; Sat, 20 Dec 2025 04:24:55 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de;
s=s31663417; t=1766222683; x=1766827483; i=michael.albinus@HIDDEN;
bh=nfwmNBrRTiUxgi7wbijY5R2LMhLKk27a2WWm7saRYEM=;
h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date:
Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc:
content-transfer-encoding:content-type:date:from:message-id:
mime-version:reply-to:subject:to;
b=CQX0VwMCW1/2iPAOi3VmlsSAEC1BKIxyxqrA+OIJcc4YgNnBszSgsXpS+6N+mEo6
IT7q2oEWI6vxZfrqWAO1UYbexAl4tfafNrjeV5OnAfJVxNtfbN290xuk1Bg1cFN3O
bJCs4XzdEBzjrDgKxhpS2rwnIZpy+ON9tT+3ifjJOT5iW2LK2Ds7V1d1kCHr8p+I2
pG1zqQPDiCHQUfEgm2N5o203eGHTeTlTWWp9z0toOeb+nXV7dXkTigsJoVw9oTJ1W
hONkcgWwFkpzxomk2BYgl+uNzRVQ/Q1DfAve/NrdduSm7Uwjl63Otk4E1eeck7T+1
yeZtUs41/rHXStkL9w==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from gandalf.gmx.de ([185.89.37.61]) by mail.gmx.net (mrgmx004
[212.227.17.190]) with ESMTPSA (Nemesis) id 1MqaxO-1wJPJ52kCW-00jw0T; Sat, 20
Dec 2025 10:24:43 +0100
From: Michael Albinus <michael.albinus@HIDDEN>
To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
In-Reply-To: <CAN+1HboxBTprW3zP9HrQmOCjySkaduR=wEv8CkO-Wj_+rY55Wg@HIDDEN>
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
<87pl932wqd.fsf@HIDDEN>
<CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN>
<86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN>
<86ikedavlh.fsf@HIDDEN>
<CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN>
<jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN>
<CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN>
<jwv7buss9jh.fsf-monnier+emacs@HIDDEN>
<CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN>
<jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN>
<CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN>
<CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN>
<jwvqzstjc9w.fsf-monnier+emacs@HIDDEN>
<CAN+1HbqfpV7aDTRVxvqBkvA0AYJvPHmDYxzfc2xR5rYYD1dtBg@HIDDEN>
<jwvy0n1hqyl.fsf-monnier+emacs@HIDDEN>
<CAN+1HbrfokZqoYOuDEKWNVSSwZ-AkACtSM3FBoM=45i5DHFP=Q@HIDDEN>
<jwv8qf0la6m.fsf-monnier+emacs@HIDDEN>
<CAN+1HboxBTprW3zP9HrQmOCjySkaduR=wEv8CkO-Wj_+rY55Wg@HIDDEN>
Date: Sat, 20 Dec 2025 10:24:42 +0100
Message-ID: <87bjjtjyjp.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:DcAXNW3Wudpi5n8XsdeQfcpj7p1+j22fwjUxy0K/r9cyed4qpPh
l+p+3ws8Pamp4mA3xPmvns6SyKppWrVzzP7Ift/KRMhSdcZau0DpYEW2TO2uQtfetX5PtIy
0+EQdIg4xe8yRaM5Yupn6Rv0aNl4j0aj6qnL2c+PcopX8Dr1kGmkFnFi7tAGkoHPtmEvKPd
kE2IrqkbDfQP5zTFDywpg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:aVp98OuFxyY=;CSeuDR/t7OSKW+CH5D0b9cx5RIy
6gUJ1SnmjGSsD6SuvYesMC5tNKEuQEmFlo1GXstmL7hBX6kiFj9EFMIHF0j/iGmPrmYtwDLir
NUEobKclWuWC7LX+BudLSdB6/Zc3WtbM4BFsvOQ+xqSsDFUNzQ0OqK7ZDDSUzJOEi3qkg4+dD
oDc+lBwjz9N1UHAB9uokvfhy0mSsWZGwGQGTg6exxNLVyURbU2odq/kQAHcvYJYmeDLFWfkvf
bzQrJXTZlAD3efM1AgcwUO1nSmPays/FUx8i5PF+v8qE1P7VPvcP5kdNYhksCAMbg+U0EifVI
SkRjKXROeID5Z4BTGA2riIwq2ekh/Ldf+qHKBziofAZNi4amtOHVoIrOoFiKr3UIqrGnXO8oW
oHMqSzWNlwhrt23NXps6CJecQSXbO+y8SaZZqWUuCSk3YjVuNiMzQaAR3BUclDnw98IOTSEth
mNS3t847Wp/fZrEZQ57Rt0ykIdU/sOUcvMIApHmRHlmpwGO5Di/LR1qF5Aq5WMKFVoLk/hW6P
qPLVZRrpNAmXco2inlwLvydX6ectRVRJez7OwYzXbPL1dPGIQnDS3VN4xquTsVDu94qlklqFo
BpTgLVBYH8j+0ASZXHLYwYO4Uy5xtuvyrO1FiYxKxZDgSdKnSPGD/Jt/2pV6hZIof0i6KZpZH
mo1Ed6FuectITXQ2FhH+gWcDCc4xI4TQsWkbZTbFlZ+9EdPI4WderkXGqw+PTm4frK09I6m8w
h1cXaLwZiMGqzUtSs2qp7pEW2C67W7IINNeSXC/FMATMl6CkSQx3wOotYJIDXMuT6LjLIOS0M
7tSxBzsaaqZIrqA7vmFEosSgH94P3yKrqFUJwlqrnjpiLEEdgkHLexhqpFmsX8xB93QgJ48VI
pTIRZo2qxY2aOIJJ+l32V8B3w+oIoXOzFBylAbeZ4+DCLp71/s6PRaQKT1cRHioqpPTciNZdt
ee2fdSP7wxEH+ClZhQreLOWv9M0eYq7CkWHA4VgId9n6m4kQGgJ2/sey4wVmdkaJuCO3keF3R
yOiNrYX4t2tXcvEKixmnvgBx+9EWl5J5Fk6OIvNWqv4OSzKnGN0YCBsvUJTinthUp2yavyU4X
VjGmLNGh8Re2BFef5xDLfVJ6PBNtTumP3j9+vc6JN0MnVKXxN6jGrP5KcFAaMfU8Emavo43qy
jB5GwfSrpcuVPp4O5KWCozxSHoOcEkbMTR0cbWFTqvP7QNFiEp3Z0tCQueE5WB6ABKJXPeGzp
kBNCFDapPCG5JkNuAtwomsXUpzGsx3VgQv4rXTMTaHmn6CO16d/mLkFQO6KbdvFaAoNmJkJh3
/kRc1sL6ribgiJoaPXoRriAdtpDLGtyDH0c8cxbKugP8mSQIPlQ1itWIOPujyTMqn9eddCiDb
j1bjN4anOAjO9grjpNgNqew/J9Xshd9NMv7GuGrZ/Hh5AEgsM3OGpNPcDXH44mpZ6rer86IAs
UZE40tBz+euN5rbZKhweHK6mTSDLu9+p7JpvKcIxhsNg30yvFLpan5840BdcarwN4Owj/mSY9
FejDkmv7POkYNlnOgI1kBke14EQWRURPoY83Y06UCq3aKWglSPgZP7CSwXFgoS1uzIG4r8/zA
4sU9iWU175E31cufWpTTuibiI6Cl+Lim3EPj4iozPdKDXlPLLJXVOp9Vc0/DZjJ5eyrANAx2p
oHcwCGS37+sifDxJb+MizUX4hBfbamqR3Xh096giNiZbQ8cVZJqQCh0Edk6ak/0iwJ5Dw5fHv
hu9Nb0Gir7VpuYDj1b3HQS2TYlILvYUBNsjSjgNEQlzBAGtJOO/TVGNpUZZAptoLNW7HQ4aW8
UDXaMFTHrMttsoIRgdPgUyHLLykwfktRHXzahtkhIEsT9H1LzkT5AtMzGxKNqz4IxcqVVDtd3
tV4CB1XW1dqhtSvQ+zjAQGQMUChfeuSzA4txw1X+nT+mW8Og6vh/vzvNV5MSa5yN8kBVhrcrA
WsZs3WF+hptDTCNDuabrpBkMa1uF0XD+u4zo+1thAtAIRSwVxxQgb8tFHV/1VUQcgcz8mv1X5
gujat1xhxR3cJzsn3QMvW+Q3ZAqXqoZkVDeMoWClvazEIeyq7hVPVXili+rI/d5oEr9q8+IOZ
cNuw77TXNURm6L8Zwrl39r8rKCVkEOgrY0SVa+TCl79nrsc0s+O7bpaMIhxeae2J3/t4rktaT
0FpKmzhQUsuyQXxRaIdFavnzJFqvjkZqHRCIF/HGKC4a/OF24Ai5WBPce+dhjpc3t/v3gdrxx
O8PfImOCcXn/WV1HYppOGCbvr1O7+DOkQKX1cj1R8u+sQoxu3hpGwSTMxj4rmfjzmn4a41QQz
+88rbLfleqNPnTZrRceS4aCZFcyDuFXOvDbrNZR91hOHD0x/aZW/ZAzrCekiQOQEQSzlG2L1U
CGS0GP5neckVbn1RHVzYAK1oMsSTW24QtH7x6nFyer11Ojw3lMSXmvS+pLtU/IZrCR50+jpby
E+askr9aXhHcWSoNvHLjHRMbsmaCMQk9i60W+ZO9UlEVgOgKvQRCdBwb2tOthwWopdXARF1bI
V8CN/NuRQU8mgcXLU27Qa0dFcq5Q0Zrx90Q2vIEoZah8t44ydLcMA0LIMzpL1bFfCLnkICGhm
1eBqGho3abJhYOeWJSBgzSd9fB63B8kVncqFhDnnFfTXTOSMCQtNeJcqKDO4gEJDx2MtbcxRP
lSH5PnsF/PQWLCuLOtwTkl9Z0czMxTHo6fHKmmHg+ccOk8za9ACe2uc1qbZgJKdzMXASquqLy
VuJz/H6uA/sHq/4JcIQ7a8Mg2v7z1LmQLqy0Y3G/ZdchqcOjfV21O1FUIkX7BscoGIDRf+VK9
nXSHmXvoXsrpfrnwvHXZ2GM61AAp3NNkO3pEL0im4sXdIUd2LPkwt5N78kD/g9Cq6hE5TEIgi
/w8xxZ9/lNAitCZL5SGPnD5fmZ1rhd3GDj+WL7MtYXgDgwR8SyL9RWL9XJI3Ixl2+xfipnwnV
/1+PJ/r34qrSPw7MBy7O1pqT6WPFoDLtPRXGcdjNk4jAFn/0L21I42o6lG2F0Hyurc3RjA/nj
fVZ6kO5JjPlpzaRG16hQOMaaEvVVqg7WQksKD+btAzyv62pfDqKasR2Z3qsxhna0y1KAP3V0T
GTwvV2kLCoVbuebRsCHA/xC3U2wgIzy9sDza0SfmaZqW0hRcanEx63+JiTY36f+VlgV0CiF9O
rwp8gY6HXmpfaux8iOEekiD9vW3CZkKF8Lqqs7sYw2MVSmC1BnipG6ZT0BvBioCZRuKhDmuzG
R46JoJNMRt2Vt75RjwGat5dQFrzvfC4QOMA0kErO7fMSa123Oqw6+lfQaWBbr0pIYoXtI4HmC
IwBdTuF+ZP5DKA/uhpKJPjUBiEqybPKLh9qWriwOGfPBWpDtMoqBNU4OvND5gChZjzAsH7Wq+
eFz//zrBGMGqIgEPZQW8XhiJcQmKynsC/mbDh5VABq2E5BXmCR3h7RfIwL570Ce0OahK8miSH
tJU3nB4OO/sOw/m9vNLV7jP9r/o4jNPzoSx36VPqHiG/vMBD19IJR8OpEv3zjZCYhgM3X2y6c
mZpoEMTNcOTlnB4jNLL4SZSpuV4tkatlg/rWBh7Q2td4yagOB45qJbmkSpBFaxiJacBYm0sRU
H3vIcQHR4jW5TCbdEzo9bYHc/non9VWasDmAYRYVDvyP0dtuqymZ/sKWTuwAsB6SmdP36gX2E
mXsKnM3ajjy1BybSK7EaRD9bByRQfuEtZYtiYmmZs9jdzySQBCZzbkGn8kfhyizHKRSJFbxXV
ah3SjdyQ3KyS6PYbH4SeNZVsYTO9KILkx+q1AJbBKJ0iM5DRY/OLOT0D2WQHnwWal9MqM/Kjg
qAjyDYhGtdgl7o31UX5Baa8kx5xu4VsdRlaB9fz64XHsb//xcr3JnzHxMlLAapSKOfl6WOTPF
9GbtoZvs3V/Je9p6gHzpZdtrn8nyoM9l31LRJP8Jm4HijoGfpmfdfHhnCXssW0ozLWJLd7FPC
/Cgoiwyte/M1aQ8QP7EY4aM8tlP1HnmFaNdda+7mcXRs8UE70cOiRsvMZU+b3Vqw0TFYKZNum
DnJ2heqIFJ3XDiWoPRsRFnGqB8snu82IcrRkYMaRI9xgjJ3tQgBFOSgSpV+aeqSC4i4IKGXzC
zJL5Ia1/XCw7CnUTxMyG3duAM2v7EaBeeomGJh/bL2PBoMXDo+fG6P5sx67VafP49C39jZymj
YjFlRY9/u7qPYCIz6v19r5QJDQFktTtl4UkN2wHeGOPR0BUk+HlqZPhuWveFg5sYEJE9G4Qd1
ywTX0KCBY1PKT1NsBQoUeLSvP7qdGTYe8vY1oJ5LG1gc5zHY2/FR5T/3cNpvFJ6MKFvAyYTZS
BK46hcai/RUWCuqMJma0GOJK94RXbNR9gP+eR8FrTpO2skVYLdWtLLI6afydnG5xUpgJJjPL8
mAFYIvB0xVUmziRIWUae2ny+yAmlAwcx81rPS/sLH86LPQNAtjRwmvNEZyhcYHXDzUtrCK72X
K2pdHAoGKJ3RB3OAdWSw97lualXpteZ7oMKhlkQ88slYIea3ghi/PGKJYL4Y+blF4Q8wkp0J3
LJ43fTRd2J7JChpAGbLFYqHU+x+trN9VtFGC+ZQc7wOYFT9eCyEIxm26TtVAau+1njW4PkPVv
c7zitXyRbIp6suL1wK+Nwa9rtQVxHtuI0zLX5+CocHWtI7vdwxrJLpJ69usrVD3HBjLOZgKKq
cu+xla7R/XlUHTnM+YAF6jpuIQhEax9mVPs5XYIx/r6RtYgeAop+rerFtWzXb40CPZ5GvyM/O
KPZyNldLYYc4y7InUl5XRTvcpqH/TM/bYhssIfT8CdAfkQdkIuoS7BAm6OmWUKCwKWRvCIE4f
gkGHB4f2cZFbBXbnJBCn7XJfaRpsnKOrxk7QwBV6GyWCQuF37ECyb5G4y9n+0pvElw0gmAGQu
MXJBuNrsGheP0k0MyuoncsOj35RhWsJbC+mNVUmctgIdE0oo5hygwWFa1w20Zw1r+ArdvkFjP
FhU9hay9/vszqje8Lg6IJcnVKIGbKKh96A/VnXyRKsZ8JNxWSejj58TGoTH5m+2xJi97sYFsA
jNH6/fA7jp7efShpC9lxqF3uTrCM5CWKrQpFbsKxGbkkUb9Svq3dFmtrp7hd7yAWv+wkrSkTw
PtZhUMX33qZmPLf7I0iRRsMoZHWQT+/0WHNPcel8mTnwuiPsFHv1MI6xcmRpPEdbGVk456T6v
U7YLC+VYSSXJVFb9UfLRvlOPXFELUKAtYDvUk5g0TodTqmK3mKA==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>,
Stefan Monnier <monnier@HIDDEN>, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
St=C3=A9phane Marks <shipmints@HIDDEN> writes:
Hi St=C3=A9phane,
I have some few documentation remarks.
> diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi
> index 5b11af2b17f..f330c7135c4 100644
> --- a/doc/emacs/frames.texi
> +++ b/doc/emacs/frames.texi
In the text (not in @code{}), use consistently either "system taskbar",
"system-taskbar", "taskbar". Personally, I prefer the former. This
should happen also in the other files.
> +Note: The GNU/Linux implementation sends taskbar messages to the system
> +GUI using D-Bus. You may need to install or configure shell extensions
> +such as @file{https://extensions.gnome.org/extension/307/dash-to-dock/}
> +that implement Ubuntu's Unity D-Bus launcher spec which you can read
> +more about here @file{https://wiki.ubuntu.com/Unity/LauncherAPI}.
> +@xref{Top,,, dbus, The D-Bus Manual}.
Please use @url{} instead of @file{}.
> +@vindex system-taskbar-use-progress-reporter
> + The variable @code{system-taskbar-use-progress-reporter} integrates
The user option @code{system-taskbar-use-progress-reporter} ...
> +@vindex system-taskbar-clear-attention-on-frame-focus
> + The variable @code{system-taskbar-clear-attention-on-frame-focus}
The user option @code{system-taskbar-clear-attention-on-frame-focus} ...
> +@vindex system-taskbar-dbus-desktop-file-name
> + The variable @code{system-taskbar-dbus-desktop-file-name} helps D-Bus
The user option @code{system-taskbar-dbus-desktop-file-name} ...
> +@vindex system-taskbar-dbus-timeout
> + The variable @code{system-taskbar-dbus-timeout} is a troubleshooting
The user option @code{system-taskbar-dbus-timeout} ...
> diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
> index 44dd3bbb63c..bd14f85d915 100644
> --- a/doc/lispref/os.texi
> +++ b/doc/lispref/os.texi
> +On back ends which do not support strings, convert @var{count} to an
> +integer, or nil if that fails.
@code{nil}
> +If @var{count} is nil or an empty string, remove the counter or short
> +string.
@code{nil}
> +@defun system-taskbar-attention &optional urgency timeout
> +
> +If @var{urgency} is nil, clear the attention indicator.
@code{nil}
> +GUI into focus, or after @var{timeout} seconds. If @var{timeout} is
> +nil, the system GUI behavior has priority.
@code{nil}
> +@defun system-taskbar-progress &optional progress
> +
> +@var{progress} is a float in the range 0.0 to 1.0. If @var{progress} is
> +nil, remove the progress indicator.
@code{nil}
> +@code{system-taskbar-progress} by default. @xref{Progress}
@xref{Progress}.
> diff --git a/etc/NEWS b/etc/NEWS
> index fdb1ee02819..676144dff12 100644
> --- a/etc/NEWS
> +++ b/etc/NEWS
> ++++
> +*** New mode 'system-taskbar-mode'.
** New mode 'system-taskbar-mode'.
> diff --git a/lisp/subr.el b/lisp/subr.el
> index fcf931b64e9..e69ef18a1bb 100644
> --- a/lisp/subr.el
> +++ b/lisp/subr.el
> (defun progress-reporter-force-update (reporter &optional value new-mess=
age suffix)
> "Report progress of an operation in the echo area unconditionally.
>
> -REPORTER, VALUE, and SUFFIX are the same as in `progress-reporter-update=
'.
> -NEW-MESSAGE, if non-nil, sets a new message for the reporter."
> + REPORTER, VALUE, and SUFFIX are the same as in `progress-reporter-upda=
te'.
> + NEW-MESSAGE, if non-nil, sets a new message for the reporter."
Do not indent the docstring lines.
> +(defun progress-reporter-echo-area (reporter state)
> + "Progress reporter echo area update function.
> +REPORTER and STATE are the same as in
> +`progress-reporter-update-functions`."
`progress-reporter-update-functions'
> --- /dev/null
> +++ b/lisp/system-taskbar.el
> @@ -0,0 +1,534 @@
> +;; When `system-taskbar-mode` is enabled, Emacs progress reporters will
`system-taskbar-mode'
> +;; be enhanced to display taskbar GUI progress bars. Customize
> +;; `system-taskbar-use-progress-reporter` if you want to disable this
> +;; before enabling system-taskbar-mode.
`system-taskbar-use-progress-reporter'
> +;; @file{https://extensions.gnome.org/extension/307/dash-to-dock/} that
https://extensions.gnome.org/extension/307/dash-to-dock/
> +;; implement Ubuntu's Unity D-Bus launcher spec which you can read more
> +;; about here @file{https://wiki.ubuntu.com/Unity/LauncherAPI}.
https://wiki.ubuntu.com/Unity/LauncherAPI
> +(defcustom system-taskbar-dbus-timeout nil
> + "Number of milliseconds to wait for D-Bus responses.
> +If nil, use the `dbus` default timeout which is 25,000 (i.e., 25s).
D-Bus
> +If your D-Bus desktop extension needs extra time to respond, in which
> +case `system-taskbar-mode` might not initialize or related functions
`system-taskbar-mode'
> +(defun system-taskbar--progress-reporter-update (_reporter state)
> + "Progress reporter system-taskbar update function.
> +REPORTER and STATE are the same as in
> +`progress-reporter-update-functions`."
`progress-reporter-update-functions'
> +Due to MS-Windows icon overlay size limitations, if COUNT is an integer
> +and is outside the range -99 to 99, display \"-99\" and \"99+\",
> +respectively, if COUNT is a string longer than 2 characters truncate it
> +using `truncate-string-to-width`.
`truncate-string-to-width'
> +Consult `system-taskbar-w32-badge-background` and
> +`system-taskbar-w32-badge-foreground` for the background and foreground
> +colors for the painted overlay."
`system-taskbar-w32-badge-background'
`system-taskbar-w32-badge-foreground'
> diff --git a/src/nsfns.m b/src/nsfns.m
> index 3528c4acd50..1a8f95c14ef 100644
> --- a/src/nsfns.m
> +++ b/src/nsfns.m
> +DEFUN ("ns-progress-indicator",
> + Fns_progress_indicator,
> + Sns_progress_indicator,
> + 1, 1, 0,
> + doc: /* Bounce the app dock icon to request user attention.
> + PROGRESS is a float between 0.0 and 1.0.
> + If PROGRESS is nil, remove the progress indicator. */)
Do not indent the docstring lines.
> -St=C3=A9phane
Best regards, Michael.
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 19 Dec 2025 21:22:23 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 19 16:22:23 2025 Received: from localhost ([127.0.0.1]:42698 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vWhvb-00041S-46 for submit <at> debbugs.gnu.org; Fri, 19 Dec 2025 16:22:23 -0500 Received: from mail-ua1-x92a.google.com ([2607:f8b0:4864:20::92a]:49561) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vWhvX-000417-Rn for 79859 <at> debbugs.gnu.org; Fri, 19 Dec 2025 16:22:20 -0500 Received: by mail-ua1-x92a.google.com with SMTP id a1e0cc1a2514c-93f5b804d4aso567387241.3 for <79859 <at> debbugs.gnu.org>; Fri, 19 Dec 2025 13:22:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766179334; x=1766784134; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=pgZ4xdTwARo5YPAR6oYdE9MWhmJLofIzl1doFk1SwJA=; b=K1P2hgJAeLIKUqfN1JFPSFopSzwi7K5n/96O49EOKDJV8dHI+Sgj4DY7Mi/fUHdRaT GysYTbKAqSS13U5zd7oOl/zgVhRDHB5r4YCzI4hjtthfhR9b3qVDYWXznaJMmTHYzXkZ NoDS28cK2sf/81dc5SRUBegjNfA3XXk4ZZOPwaF1wg2fDwsQhQVhs74RZo4EyxEgPyXX Ag5x6vdXiHgw2pVUFeGHTFPDP7WoIJDByvSAiBF+9VD3YSSC/kZKujSnfI/+UI/Wboq0 gAXVPA4zZL053CGJCdkuj0NtWXApI80Bev2DkGwyitayZmUw00G7ez3VEQOdE47WxjGs hv6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766179334; x=1766784134; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=pgZ4xdTwARo5YPAR6oYdE9MWhmJLofIzl1doFk1SwJA=; b=ScqOtTSKaQY1Ab5VLik8e9TTaS3lk1fj10AP9TDIH9DnRVKbQouDZiD8QhJuve/CP2 pAi4wm5vkB8VqzV2AW3HYSajqC+IDMifAhFGpm2oT/Ayrz8yiRkDil2VZcMiH7IHSb8R d7spp6HUuR0bDS7yVlM85rXiH1OPDNy2WlDbdR9JQo16e/zWWRKxoRPrrkKDCdsaFnSU u9ngzmgjOnTxF7wOjtMn2z4JwFDvRN7Tsgazu8VQWNXuavT89IxMn00IVddh7ykdiHvJ C1x4ky+whOp65H1wh6IzEfOIXhG+kV1fkxABubK1LWzNL7pLio479hi/LOP8lZOqv6pE EwCw== X-Forwarded-Encrypted: i=1; AJvYcCURG8/nTfTLn2+No4W8PDol3o8Zb/aXqeBlmbYZTxrmAKuDj2Znj/oo3iU+y7tojBGV9DbmRQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzMoQkiXvtcS7OyDkt6hV7Z9dRu2ehW4pI09dCEbsfRevU6B3+7 wbmQKiBXscggWMrWXTHG4PE2yyBHkGimXjiaBbu852VquthJ4sv1pft/plqXI88JEmfYiM3s2+i WeHACe3lQV7OV4knWr/evawmnKyFsh+0= X-Gm-Gg: AY/fxX4Rn162JxrumVP7FJ3TzD9AbwzsygsRNrm0d2Bv3GcP6Q1fFPYVHZTw2nyDKbO KmyNCqMbJhLp0XW7pS/QIx9TV08y20jouJzEHRrEK3/UquPZPdSBqM+oaJYF8w0U6EJo3em2X1F Ii4uhvAjliem45Jf/ZIowRTLMXyblsQuCwaE45y/BcozY2jJQ/pivPePmtvMSDStwU9oveehIaq RvT0dx3+HCVlx9FU/VilWyEks72fysGFIeT93HM2nEIIR3LlcQPXfktENOGnCv19/RjRnk= X-Google-Smtp-Source: AGHT+IGmdxq9VEPyvoLoCw8cGwuS7elkxfwKbqNkWBmHyhnxIMCu5z84VknGKVlG/xJXjwoTDu00tbZBwbskfQPdl4s= X-Received: by 2002:a05:6102:4485:b0:5de:50d:f5a5 with SMTP id ada2fe7eead31-5eb1a86ec8amr1187239137.44.1766179333987; Fri, 19 Dec 2025 13:22:13 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <86ikedavlh.fsf@HIDDEN> <CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN> <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN> <jwv7buss9jh.fsf-monnier+emacs@HIDDEN> <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN> <jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN> <CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN> <CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN> <jwvqzstjc9w.fsf-monnier+emacs@HIDDEN> <CAN+1HbqfpV7aDTRVxvqBkvA0AYJvPHmDYxzfc2xR5rYYD1dtBg@HIDDEN> <jwvy0n1hqyl.fsf-monnier+emacs@HIDDEN> <CAN+1HbrfokZqoYOuDEKWNVSSwZ-AkACtSM3FBoM=45i5DHFP=Q@HIDDEN> <jwv8qf0la6m.fsf-monnier+emacs@HIDDEN> In-Reply-To: <jwv8qf0la6m.fsf-monnier+emacs@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Fri, 19 Dec 2025 16:22:02 -0500 X-Gm-Features: AQt7F2oM9TDNZVqGGhGV2ySqr4bJuhEj1ZkfqHofCotYMyd3xvW6-MY7x71EdmY Message-ID: <CAN+1HboxBTprW3zP9HrQmOCjySkaduR=wEv8CkO-Wj_+rY55Wg@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Stefan Monnier <monnier@HIDDEN> Content-Type: multipart/mixed; boundary="000000000000cffbbe064654ab1c" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --000000000000cffbbe064654ab1c Content-Type: multipart/alternative; boundary="000000000000cffbbc064654ab1a" --000000000000cffbbc064654ab1a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Dec 17, 2025 at 10:52=E2=80=AFPM Stefan Monnier <monnier@HIDDEN= eal.ca> wrote: > > If we agree on the code, I have to finish the documentation. > > Sounds good to me, thanks. > Patch attached with user and programmer documentation located where Eli suggested (with xrefs!). -St=C3=A9phane --000000000000cffbbc064654ab1a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Wed, Dec 17, 2025 at 10:52=E2=80=AFPM Stefan Monnier <<a href=3D"mail= to:monnier@HIDDEN">monnier@HIDDEN</a>> wrote:</span>= </div></div><div class=3D"gmail_quote gmail_quote_container"><blockquote cl= ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid= rgb(204,204,204);padding-left:1ex">> If we agree on the code, I have to= finish the documentation.<br> <br> Sounds good to me, thanks.<br></blockquote><div><br></div><div class=3D"gma= il_default" style=3D"font-family:monospace">Patch attached with user and pr= ogrammer documentation located where Eli suggested (with xrefs!).</div><div= class=3D"gmail_default" style=3D"font-family:monospace"><br></div><div cla= ss=3D"gmail_default" style=3D"font-family:monospace">-St=C3=A9phane=C2=A0</= div></div></div> --000000000000cffbbc064654ab1a-- --000000000000cffbbe064654ab1c Content-Type: application/octet-stream; name="0001-System-GUI-taskbar-and-progress-reporter-hooks.patch" Content-Disposition: attachment; filename="0001-System-GUI-taskbar-and-progress-reporter-hooks.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mjddjnyp0> X-Attachment-Id: f_mjddjnyp0 RnJvbSBhNWFiN2VlY2Y2NzU3NWI4NjVjOTVlOGQyOThkM2E1Y2VkYjllNzA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFRodSwgMjAgTm92IDIwMjUgMTI6NTQ6NDAgLTA1MDAK U3ViamVjdDogW1BBVENIXSBTeXN0ZW0gR1VJIHRhc2tiYXIgYW5kIHByb2dyZXNzIHJlcG9ydGVy IGhvb2tzCgpJbXBsZW1lbnQgc3lzdGVtIEdVSSB0YXNrYmFyL2RvY2svbGF1bmNoZXIgaWNvbiBi YWRnZSwgaWNvbgpwcm9ncmVzcyBpbmRpY2F0b3IsIGljb24gYXR0ZW50aW9uIGFsZXJ0IGZlYXR1 cmVzIGZvciBELUJ1cwpwbGF0Zm9ybXMgKHRlc3RlZCBvbiBLREUgYW5kIEdOT01FKSwgTlMgKG1h Y09TL0dOVXN0ZXApLApNUy1XaW5kb3dzLgoKQWRkICdwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUt ZnVuY3Rpb25zJyBhYm5vcm1hbCBob29rIHRvIGZhY2lsaXRhdGUKdGFza2JhciBwcm9ncmVzcyBk aXNwbGF5LCBhbmQgb3RoZXIgY3VzdG9tIHByb2dyZXNzIHJlcG9ydGVycy4KVGhlIGRlZmF1bHQg ZnVuY3Rpb24gbGlzdCBpcyAncHJvZ3Jlc3MtcmVwb3J0ZXItZWNoby1hcmVhJyB3aGljaAppcyBi YWNrd2FyZCBjb21wYXRpYmxlLgoKKiBsaXNwL3N1YnIuZWwgKHByb2dyZXNzLXJlcG9ydGVyLXVw ZGF0ZS1mdW5jdGlvbnMpOgpOZXcgZGVmdmFyLgoocHJvZ3Jlc3MtcmVwb3J0ZXItZWNoby1hcmVh KTogTmV3IGRlZnVuLgoocHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRlKTogUnVuCnByb2dyZXNz LXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMgZm9yIGJvdGggbnVtZXJpY2FsIGFuZApwdWxzaW5n IHJlcG9ydGVycy4KKHByb2dyZXNzLXJlcG9ydGVyLWRvbmUpOiBSdW4gcHJvZ3Jlc3MtcmVwb3J0 ZXItZG9uZS1mdW5jdGlvbnMuCiogbGlzcC9zeXN0ZW0tdGFza2Jhci5lbDogTmV3IGZpbGUuCiog c3JjL25zZm5zLm0gKEZuc19iYWRnZSwgRm5zX3Byb2dyZXNzX2luZGljYXRvcikKKEZuc19yZXF1 ZXN0X3VzZXJfYXR0ZW50aW9uKTogTmV3IGZ1bmN0aW9uLgooc3ltc19vZl9uc2Zucyk6IEFkZCBk ZWZzdWJyIFNuc19iYWRnZSwKU25zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24sIFNuc19wcm9ncmVz c19pbmRpY2F0b3IuIEFkZCBERUZTWU0KUWluZm9ybWF0aW9uYWwsIFFjcml0aWNhbC4KKiBzcmMv dzMyZm5zLmMgKHJnYl9saXN0X3RvX2NvbG9ycmVmLCBGdzMyX2JhZGdlKQooRnczMl9yZXF1ZXN0 X3VzZXJfYXR0ZW50aW9uLCBGdzMyX3Byb2dyZXNzX2luZGljYXRvcik6IE5ldwpmdW5jdGlvbi4K KHN5bXNfb2ZfdzMyZm5zKTogQWRkIGRlZnN1YnIgU3czMl9iYWRnZSwKU3czMl9wcm9ncmVzc19p bmRpY2F0b3IsIFN3MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbi4gQWRkIERFRlNZTQpRaW5mb3Jt YXRpb25hbCwgUWNyaXRpY2FsLgoqIGRvYy9lbWFjcy9mcmFtZXMudGV4aTogVXNlciBkb2N1bWVu dGF0aW9uLgoqIGRvYy9saXNwcmVmL29zLnRleGk6IFByb2dyYW1tZXIgZG9jdW1lbnRhdGlvbi4K KiBldGMvTkVXUzogQW5ub3VuY2Ugc3lzdGVtLXRhc2tiYXItbW9kZS4gIEFubm91bmNlIHByb2dy ZXNzCnJlcG9ydGVyIGNhbGxiYWNrIGVuaGFuY2VtZW50cy4KLS0tCiBkb2MvZW1hY3MvZnJhbWVz LnRleGkgIHwgIDY5ICsrKysrKwogZG9jL2xpc3ByZWYvb3MudGV4aSAgICB8IDEyMSArKysrKysr KysrCiBldGMvTkVXUyAgICAgICAgICAgICAgIHwgIDIyICsrCiBsaXNwL3N1YnIuZWwgICAgICAg ICAgIHwgIDg3ICsrKysrLS0KIGxpc3Avc3lzdGVtLXRhc2tiYXIuZWwgfCA1MzQgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9uc2Zucy5tICAgICAgICAgICAg fCAxMjggKysrKysrKysrKwogc3JjL3czMmZucy5jICAgICAgICAgICB8IDMyNyArKysrKysrKysr KysrKysrKysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDEyNjMgaW5zZXJ0aW9ucygrKSwgMjUg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGlzcC9zeXN0ZW0tdGFza2Jhci5lbAoK ZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9mcmFtZXMudGV4aSBiL2RvYy9lbWFjcy9mcmFtZXMudGV4 aQppbmRleCA1YjExYWYyYjE3Zi4uZjMzMGM3MTM1YzQgMTAwNjQ0Ci0tLSBhL2RvYy9lbWFjcy9m cmFtZXMudGV4aQorKysgYi9kb2MvZW1hY3MvZnJhbWVzLnRleGkKQEAgLTU4LDYgKzU4LDcgQEAg RnJhbWVzCiAqIE1lbnUgQmFyczo6ICAgICAgICAgICBFbmFibGluZyBhbmQgZGlzYWJsaW5nIHRo ZSBtZW51IGJhci4KICogVG9vbCBCYXJzOjogICAgICAgICAgIEVuYWJsaW5nIGFuZCBkaXNhYmxp bmcgdGhlIHRvb2wgYmFyLgogKiBUYWIgQmFyczo6ICAgICAgICAgICAgRW5hYmxpbmcgYW5kIGRp c2FibGluZyB0aGUgdGFiIGJhci4KKyogU3lzdGVtIFRhc2tiYXI6OiAgICAgIFVzaW5nIHN5c3Rl bSBHVUkgdGFza2JhciBmZWF0dXJlcy4KICogRGlhbG9nIEJveGVzOjogICAgICAgIENvbnRyb2xs aW5nIHVzZSBvZiBkaWFsb2cgYm94ZXMuCiAqIFRvb2x0aXBzOjogICAgICAgICAgICBEaXNwbGF5 aW5nIGluZm9ybWF0aW9uIGF0IHRoZSBjdXJyZW50IG1vdXNlIHBvc2l0aW9uLgogKiBNb3VzZSBB dm9pZGFuY2U6OiAgICAgUHJldmVudGluZyB0aGUgbW91c2UgcG9pbnRlciBmcm9tIG9ic2N1cmlu ZyB0ZXh0LgpAQCAtMTYzMSw2ICsxNjMyLDc0IEBAIFRhYiBCYXJzCiAgIEl0J3MgcG9zc2libGUg dG8gY3VzdG9taXplIHRoZSBpdGVtcyBkaXNwbGF5ZWQgb24gdGhlIHRhYiBiYXIKIGJ5IHRoZSB1 c2VyIG9wdGlvbiBAY29kZXt0YWItYmFyLWZvcm1hdH0uCiAKK0Bub2RlIFN5c3RlbSBUYXNrYmFy CitAc2VjdGlvbiBVc2luZyBTeXN0ZW0gR1VJIFRhc2tiYXIgRmVhdHVyZXMKK0BjaW5kZXggc3lz dGVtIHRhc2tiYXIKK0BjaW5kZXggbW9kZSwgc3lzdGVtIHRhc2tiYXIKKworICBFbWFjcyBjYW4g dXNlIHlvdXIgc3lzdGVtJ3MgR1VJIHRhc2tiYXIgdG8gZGlzcGxheSBhIGJhZGdlIG92ZXJsYXkg b24KK3RoZSBFbWFjcyB0YXNrYmFyIGljb24sIGEgcHJvZ3Jlc3MgYmFyIHJlcG9ydCwgYW5kIGFs ZXJ0IHRoZSB1c2VyIHRoYXQKK2FuIEVtYWNzIHNlc3Npb24gbmVlZHMgYXR0ZW50aW9uLiAgTm90 ZTogVGhlIHRhc2tiYXIgb24geW91ciBzeXN0ZW0KK21pZ2h0IGJlIGNhbGxlZCB0aGUgZG9jaywg dGhlIGxhdW5jaGVyLCBvciBzb21ldGhpbmcgc2ltaWxhci4KKworQGNpbmRleCBzeXN0ZW0gdGFz a2JhciwgR05VL0xpbnV4CitPbiBHTlUvTGludXggZWxpZ2libGUgR1VJIGRlc2t0b3BzLCB0YXNr YmFyIGVmZmVjdHMgd2lsbCBhcHBlYXIgb24gdGhlCitkZXNrdG9wIGRlc3RpbmF0aW9ucyBkZXRl cm1pbmVkIGJ5IHlvdXIgc2hlbGwgZXh0ZW5zaW9uLCBtb3N0IG9mdGVuIHRoZQorYXBwbGljYXRp b24gbGF1bmNoZXIgb3IgZG9jayBwYW5lbCwgb3IgdGhlIHRvcCBwYW5lbC4gIFRhc2tiYXIgZWZm ZWN0cworYXJlIGdsb2JhbCBmb3IgYW4gRW1hY3MgaW5zdGFuY2UuCisKK05vdGU6IFRoZSBHTlUv TGludXggaW1wbGVtZW50YXRpb24gc2VuZHMgdGFza2JhciBtZXNzYWdlcyB0byB0aGUgc3lzdGVt CitHVUkgdXNpbmcgRC1CdXMuICBZb3UgbWF5IG5lZWQgdG8gaW5zdGFsbCBvciBjb25maWd1cmUg c2hlbGwgZXh0ZW5zaW9ucworc3VjaCBhcyBAZmlsZXtodHRwczovL2V4dGVuc2lvbnMuZ25vbWUu b3JnL2V4dGVuc2lvbi8zMDcvZGFzaC10by1kb2NrL30KK3RoYXQgaW1wbGVtZW50IFVidW50dSdz IFVuaXR5IEQtQnVzIGxhdW5jaGVyIHNwZWMgd2hpY2ggeW91IGNhbiByZWFkCittb3JlIGFib3V0 IGhlcmUgQGZpbGV7aHR0cHM6Ly93aWtpLnVidW50dS5jb20vVW5pdHkvTGF1bmNoZXJBUEl9Lgor QHhyZWZ7VG9wLCwsIGRidXMsIFRoZSBELUJ1cyBNYW51YWx9LgorCitAY2luZGV4IHN5c3RlbSB0 YXNrYmFyLCBtYWNPUy9HTlVzdGVwCitAY2luZGV4IHN5c3RlbSB0YXNrYmFyLCBOUworT24gbWFj T1MvR05Vc3RlcCAxMC41KywgdGFza2JhciBlZmZlY3RzIGFwcGVhciBvbiB0aGUgRG9jayBhbmQg aW4gdGhlCitBcHAgU3dpdGNoZXIuICBFZmZlY3RzIGFyZSBnbG9iYWwgZm9yIGFuIEVtYWNzIGlu c3RhbmNlLiAgbWFjT1MvR05Vc3RlcAorbmVlZCBubyBzcGVjaWFsIGNvbmZpZ3VyYXRpb24uCisK K0BjaW5kZXggc3lzdGVtIHRhc2tiYXIsIE1TLVdpbmRvd3MKK09uIE1TLVdpbmRvd3MgNyssIHRh c2tiYXIgZWZmZWN0cyBhcHBlYXIgb24gdGhlIFdpbmRvd3MgdGFza2Jhci4KK0VmZmVjdHMgYXJl IGFzc29jaWF0ZWQgd2l0aCB0aGUgZnJhbWUgZnJvbSB3aGljaCB0aGV5IGFyZSBpbml0aWF0ZWQu CitNUy1XaW5kb3dzIG5lZWRzIG5vIHNwZWNpYWwgY29uZmlndXJhdGlvbi4KKworQGZpbmRleCBz eXN0ZW0tdGFza2Jhci1tb2RlCisgIFlvdSBtdXN0IGluaXRpYWxpemUgc3lzdGVtLXRhc2tiYXIg YmVmb3JlIHVzaW5nIGl0LiAgVG8gZG8gdGhhdCwgdHlwZQorQGtiZHtNLXggc3lzdGVtLXRhc2ti YXItbW9kZX0uCisKK0B2aW5kZXggc3lzdGVtLXRhc2tiYXItdXNlLXByb2dyZXNzLXJlcG9ydGVy CisgIFRoZSB2YXJpYWJsZSBAY29kZXtzeXN0ZW0tdGFza2Jhci11c2UtcHJvZ3Jlc3MtcmVwb3J0 ZXJ9IGludGVncmF0ZXMKK3N5c3RlbS10YXNrYmFyIHdpdGggRW1hY3MgcHJvZ3Jlc3MgcmVwb3J0 IGZ1bmN0aW9ucywgd2hpY2ggbWFueQorbG9uZ2VyLXJ1bm5pbmcgZnVuY3Rpb25zIHVzZSB0byBp bmRpY2F0ZSB0aGVpciB3b3JrIHByb2dyZXNzLiAgUHJvZ3Jlc3MKK3JlcG9ydHMgd2lsbCBhcHBl YXIgaW4gdGhlIGVjaG8gYXJlYSBhbmQgb24gdGhlIHN5c3RlbSB0YXNrYmFyIEVtYWNzCitpY29u LiAgVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byBAY29kZXt0fS4gIEN1c3RvbWl6ZSB0aGlzIHZh cmlhYmxlCitiZWZvcmUgZW5hYmxpbmcgQGNvZGV7c3lzdGVtLXRhc2tiYXItbW9kZX0uICBAeHJl ZntQcm9ncmVzcywsLCBlbGlzcH0KKworQHZpbmRleCBzeXN0ZW0tdGFza2Jhci1jbGVhci1hdHRl bnRpb24tb24tZnJhbWUtZm9jdXMKKyAgVGhlIHZhcmlhYmxlIEBjb2Rle3N5c3RlbS10YXNrYmFy LWNsZWFyLWF0dGVudGlvbi1vbi1mcmFtZS1mb2N1c30KK3R1cm5zIG9uIGEgaGVscGVyIHVzZWZ1 bCBvbiBHTlUvTGludXggRC1CdXMgcGxhdGZvcm1zIHdoaWNoCithdXRvbWF0aWNhbGx5IGNsZWFy cyB0aGUgdGFza2JhciBhdHRlbnRpb24gaW5kaWNhdG9yIHdoZW4gYW55IEVtYWNzCitmcmFtZSBp cyBmb2N1c2VkLiAgVGhpcyBoYXMgbm8gZWZmZWN0IG9uIG1hY09TL0dOVXN0ZXAgb3IgTVMtV2lu ZG93cy4KK0l0IGRlZmF1bHRzIHRvIEBjb2Rle3R9LiAgQ3VzdG9taXplIHRoaXMgdmFyaWFibGUg YmVmb3JlIGVuYWJsaW5nCitAY29kZXtzeXN0ZW0tdGFza2Jhci1tb2RlfS4KKworQHZpbmRleCBz eXN0ZW0tdGFza2Jhci1kYnVzLWRlc2t0b3AtZmlsZS1uYW1lCisgIFRoZSB2YXJpYWJsZSBAY29k ZXtzeXN0ZW0tdGFza2Jhci1kYnVzLWRlc2t0b3AtZmlsZS1uYW1lfSBoZWxwcyBELUJ1cworb24g R05VL0xpbnV4IGlkZW50aWZ5IGxhdW5jaGVkIGluc3RhbmNlIG9mIEVtYWNzLiAgSXQgZGVmYXVs dHMgdG8KK0BzYW1we2VtYWNzY2xpZW50fSBhbmQgbWF5IG5lZWQgdG8gYmUgY2hhbmdlZCB0byBA c2FtcHtlbWFjc30gZGVwZW5kaW5nCitvbiB5b3VyIEdOVS9MaW51eCBjb25maWd1cmF0aW9uLgor CitAdmluZGV4IHN5c3RlbS10YXNrYmFyLWRidXMtdGltZW91dAorICBUaGUgdmFyaWFibGUgQGNv ZGV7c3lzdGVtLXRhc2tiYXItZGJ1cy10aW1lb3V0fSBpcyBhIHRyb3VibGVzaG9vdGluZwordG9v bCBhbmQgaXQgbGlrZWx5IGRvZXMgbm90IG5lZWQgdG8gYmUgY3VzdG9taXplZC4gIEl0IGRlZmF1 bHRzIHRvCitAY29kZXtuaWx9IHdoaWNoIHVzZXMgdGhlIEQtQnVzIGRlZmF1bHQgdGltZW91dCB3 aGljaCBpcyAyNSwwMDBtcyBvcgorMjVzLgorCitAeHJlZntTeXN0ZW0gVGFza2JhciwsLCBlbGlz cCwgVGhlIEVtYWNzIExpc3AgUmVmZXJlbmNlIE1hbnVhbH0KKwogQG5vZGUgRGlhbG9nIEJveGVz CiBAc2VjdGlvbiBVc2luZyBEaWFsb2cgQm94ZXMKIEBjaW5kZXggZGlhbG9nIGJveGVzCmRpZmYg LS1naXQgYS9kb2MvbGlzcHJlZi9vcy50ZXhpIGIvZG9jL2xpc3ByZWYvb3MudGV4aQppbmRleCA0 NGRkM2JiYjYzYy4uYmQxNGY4NWQ5MTUgMTAwNjQ0Ci0tLSBhL2RvYy9saXNwcmVmL29zLnRleGkK KysrIGIvZG9jL2xpc3ByZWYvb3MudGV4aQpAQCAtMzQsNiArMzQsNyBAQCBTeXN0ZW0gSW50ZXJm YWNlCiAqIEJhdGNoIE1vZGU6OiAgICAgICAgICBSdW5uaW5nIEVtYWNzIHdpdGhvdXQgdGVybWlu YWwgaW50ZXJhY3Rpb24uCiAqIFNlc3Npb24gTWFuYWdlbWVudDo6ICBTYXZpbmcgYW5kIHJlc3Rv cmluZyBzdGF0ZSB3aXRoIFggU2Vzc2lvbiBNYW5hZ2VtZW50LgogKiBEZXNrdG9wIE5vdGlmaWNh dGlvbnM6OiBEZXNrdG9wIG5vdGlmaWNhdGlvbnMuCisqIFN5c3RlbSBUYXNrYmFyOjogICAgICBD b250cm9sbGluZyBzeXN0ZW0gR1VJIHRhc2tiYXIgZmVhdHVyZXMuCiAqIEZpbGUgTm90aWZpY2F0 aW9uczo6ICBGaWxlIG5vdGlmaWNhdGlvbnMuCiAqIER5bmFtaWMgTGlicmFyaWVzOjogICBPbi1k ZW1hbmQgbG9hZGluZyBvZiBzdXBwb3J0IGxpYnJhcmllcy4KICogU2VjdXJpdHkgQ29uc2lkZXJh dGlvbnM6OiBSdW5uaW5nIEVtYWNzIGluIGFuIHVuZnJpZW5kbHkgZW52aXJvbm1lbnQuCkBAIC0z MzcxLDYgKzMzNzIsMTI2IEBAIERlc2t0b3AgTm90aWZpY2F0aW9ucwogZGlzcmVnYXJkZWQuCiBA ZW5kIGRlZnVuCiAKK0Bub2RlIFN5c3RlbSBUYXNrYmFyCitAc2VjdGlvbiBDb250cm9sbGluZyBT eXN0ZW0gR1VJIFRhc2tiYXIgRmVhdHVyZXMKK0BjaW5kZXggc3lzdGVtIHRhc2tiYXIKK0BjaW5k ZXggbW9kZSwgc3lzdGVtIHRhc2tiYXIKKworICBAeHJlZntTeXN0ZW0gVGFza2JhciwsLCBlbWFj cywgVGhlIEdOVSBFbWFjcyBNYW51YWx9LCBmb3IgYW4gb3ZlcnZpZXcKK2FuZCBjb25maWd1cmF0 aW9uLgorCitAZGVmdW4gc3lzdGVtLXRhc2tiYXItYmFkZ2UgJm9wdGlvbmFsIGNvdW50CitUaGlz IGZ1bmN0aW9uIGRpc3BsYXlzIEB2YXJ7Y291bnR9IGFzIGFuIG92ZXJsYXkgb24gdGhlIHN5c3Rl bSB0YXNrYmFyCitFbWFjcyBpY29uLgorCitJZiBAdmFye2NvdW50fSBpcyBhbiBpbnRlZ2VyLCBk aXNwbGF5IHRoYXQuCisKK0lmIEB2YXJ7Y291bnR9IGlzIGEgc3RyaW5nIG9uIGJhY2sgZW5kcyB0 aGF0IHN1cHBvcnQgc3RyaW5ncywgZGlzcGxheQordGhhdC4gIFRoZSBzdHJpbmcgc2hvdWxkIGJl IHNob3J0LgorCitPbiBiYWNrIGVuZHMgd2hpY2ggZG8gbm90IHN1cHBvcnQgc3RyaW5ncywgY29u dmVydCBAdmFye2NvdW50fSB0byBhbgoraW50ZWdlciwgb3IgbmlsIGlmIHRoYXQgZmFpbHMuCisK K0lmIEB2YXJ7Y291bnR9IGlzIG5pbCBvciBhbiBlbXB0eSBzdHJpbmcsIHJlbW92ZSB0aGUgY291 bnRlciBvciBzaG9ydAorc3RyaW5nLgorCitEaXNwbGF5IHRoZSB0YXNrYmFyIGljb24gYmFkZ2Ug c2V0IHRvIEB2YXJ7Y291bnR9LiAgSWYgQHZhcntjb3VudH0gaXMKK0Bjb2Rle25pbH0sIGNsZWFy IHRoZSBiYWRnZS4gIEB2YXJ7Y291bnR9IGlzIHR5cGljYWxseSBhbiBpbnRlZ2VyLgorCitJZiBA dmFye2NvdW50fSBpcyBhIHN0cmluZywgaXQgaXMgY29udmVydGVkIHRvIGFuIGludGVnZXIgb24g c3lzdGVtcwordGhhdCBkbyBub3Qgc3VwcG9ydCBzdHJpbmcgYmFkZ2VzLCBzdWNoIGFzIEdOVS9M aW51eCBELUJ1cywgYW5kIHRoZQorYmFkZ2Ugd2lsbCBiZSBjbGVhcmVkIGlmIHRoZSBzdHJpbmcg aXMgYW4gaW52YWxpZCBpbnRlZ2VyCityZXByZXNlbnRhdGlvbi4gIE9uIHN5c3RlbXMgdGhhdCBz dXBwb3J0IHN0cmluZ3MsIHN1Y2ggYXMgbWFjT1MvR05Vc3RlcAorYW5kIE1TLVdpbmRvd3MsIHRo ZSBiYWRnZSBpcyBzZXQgdG8gdGhlIHN0cmluZyBhbmQgZGlzcGxheWVkLCBhbmQgbWF5IGJlCit0 cnVuY2F0ZWQgdG8gZml0IHRoZSB2aXN1YWwgc3BhY2UgYWxsb2NhdGVkIGJ5IHRoZSBzeXN0ZW0u ICBJbiBhbnkgY2FzZSwKK2lmIHRoZSBzdHJpbmcgaXMgZW1wdHksIGNsZWFyIHRoZSBiYWRnZS4K K0BlbmQgZGVmdW4KKworQGRlZnVuIHN5c3RlbS10YXNrYmFyLWF0dGVudGlvbiAmb3B0aW9uYWwg dXJnZW5jeSB0aW1lb3V0CitUaGlzIGZ1bmN0aW9uIGZsYXNoZXMgb3IgYm91bmNlcyBzeXN0ZW0g dGFza2JhciBFbWFjcyBpY29uIGFuZC9vciBpdHMKK2ZyYW1lIHRvIGFsZXJ0IHRoZSB1c2VyLgor CitAdmFye3VyZ2VuY3l9IGNhbiBiZSBvbmUgb2YgdGhlIHN5bWJvbHMgQGNvZGV7aW5mb3JtYXRp b25hbH0sIG9yCitAY29kZXtjcml0aWNhbH0uCisKK0lmIEB2YXJ7dXJnZW5jeX0gaXMgbmlsLCBj bGVhciB0aGUgYXR0ZW50aW9uIGluZGljYXRvci4KKworVGhlIGF0dGVudGlvbiBpbmRpY2F0b3Ig aXMgY2xlYXJlZCBieSB0aGUgZWFybGllc3Qgb2YgYnJpbmdpbmcgdGhlIEVtYWNzCitHVUkgaW50 byBmb2N1cywgb3IgYWZ0ZXIgQHZhcnt0aW1lb3V0fSBzZWNvbmRzLiAgSWYgQHZhcnt0aW1lb3V0 fSBpcworbmlsLCB0aGUgc3lzdGVtIEdVSSBiZWhhdmlvciBoYXMgcHJpb3JpdHkuCisKK09uIHNv bWUgYmFjayBlbmRzLCBAY29kZXtjcml0aWNhbH0gaGFzIHRoZSBzYW1lIGVmZmVjdCBhcworQGNv ZGV7aW5mb3JtYXRpb25hbH0uCisKK09uIHNvbWUgYmFjayBlbmRzLCBhdHRlbnRpb24gd2lsbCBi ZSBkaXNwbGF5ZWQKK29ubHkgaWYgRW1hY3MgaXMgbm90IHRoZSBjdXJyZW50bHkgZm9jdXNlZCBh cHBsaWNhdGlvbi4KK0BlbmQgZGVmdW4KKworQGRlZnVuIHN5c3RlbS10YXNrYmFyLXByb2dyZXNz ICZvcHRpb25hbCBwcm9ncmVzcworICBUaGlzIGZ1bmN0aW9uIGRpc3BsYXlzIGEgcHJvZ3Jlc3Mg aW5kaWNhdG9yIG92ZXJsYXkgb24gdGhlIHN5c3RlbQordGFza2JhciBFbWFjcyBpY29uLgorCitA dmFye3Byb2dyZXNzfSBpcyBhIGZsb2F0IGluIHRoZSByYW5nZSAwLjAgdG8gMS4wLiAgSWYgQHZh cntwcm9ncmVzc30gaXMKK25pbCwgcmVtb3ZlIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IuCisKK0l0 IGlzIGNvbnZlbmllbnQgdG8gdXNlIHRoZSBidWlsdC1pbiBwcm9ncmVzcyByZXBvcnRlciBmdW5j dGlvbnMgd2hpY2gsCit3aGVuIEBjb2Rle3N5c3RlbS10YXNrYmFyLW1vZGV9IGlzIGVuYWJsZWQs IGludGVncmF0ZSB3aXRoCitAY29kZXtzeXN0ZW0tdGFza2Jhci1wcm9ncmVzc30gYnkgZGVmYXVs dC4gIEB4cmVme1Byb2dyZXNzfQorQGVuZCBkZWZ1bgorCitAbm9pbmRlbnQKK0V4YW1wbGVzIG9m IHN5c3RlbS10YXNrYmFyIGZ1bmN0aW9uczoKKworQGxpc3AKK0Bncm91cAorOzsgRW5hYmxlIGFu ZCBpbml0aWFsaXplIHN5c3RlbS10YXNrYmFyLW1vZGUgYmVmb3JlIGNhbGxpbmcgaXRzCis7OyBw YWNrYWdlIGZ1bmN0aW9ucy4KKyhzeXN0ZW0tdGFza2Jhci1tb2RlKQorCis7OyBEaXNwbGF5IGEg YmFkZ2UgaW50ZWdlciBvbiB0aGUgdGFza2JhciBpY29uLgorKHN5c3RlbS10YXNrYmFyLWJhZGdl IGVtYWNzLW1ham9yLXZlcnNpb24pCisKKzs7IEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFu IGludGVnZXIgaXMgY29udmVydGVkIHRvIGFuCis7OyBpbnRlZ2VyIG9uIEdOVS9MaW51eC4KKyhz eXN0ZW0tdGFza2Jhci1iYWRnZSAiMzEiKQorCis7OyBTaG9ydCBzdHJpbmdzIGFyZSBkaXNwbGF5 ZWQgb24gbWFjT1MvR05Vc3RlcCBhbmQgTVMtV2luZG93cy4KKyhzeXN0ZW0tdGFza2Jhci1iYWRn ZSAiVGVzdCIpCisKKzs7IENsZWFyIHRoZSBiYWRnZS4KKyhzeXN0ZW0tdGFza2Jhci1iYWRnZSkK K0BlbmQgZ3JvdXAKKworQGdyb3VwCis7OyBHZXQgdGhlIHVzZXIncyBhdHRlbnRpb24gYW5kIGNs ZWFyIHRoZSByZXF1ZXN0IGFmdGVyIDMgc2Vjb25kcy4KKyhzeXN0ZW0tdGFza2Jhci1hdHRlbnRp b24gJ2luZm9ybWF0aW9uYWwgMykKKworOzsgR2V0IHRoZSB1c2VyJ3MgYXR0ZW50aW9uIGFuZCBj bGVhciB3aGVuIEVtYWNzIGlzIGZvY3VzZWQuCisoc3lzdGVtLXRhc2tiYXItYXR0ZW50aW9uICdj cml0aWNhbCkKKworOzsgQ2xlYXIgdGhlIGF0dGVudGlvbiByZXF1ZXN0LgorKHN5c3RlbS10YXNr YmFyLWF0dGVudGlvbikKK0BlbmQgZ3JvdXAKKworQGdyb3VwCis7OyBNYWtlIHN1cmUgc3lzdGVt LXRhc2tiYXIgaXMgaW50ZWdyYXRlZCB3aXRoIHByb2dyZXNzLXJlcG9ydGVyLgorKHNldG9wdCBz eXN0ZW0tdGFza2Jhci11c2UtcHJvZ3Jlc3MtcmVwb3J0ZXIgdCkgOyB0IGlzIHRoZSBkZWZhdWx0 Cisoc3lzdGVtLXRhc2tiYXItbW9kZSkKKworOzsgUmVwb3J0IGBkb3RpbWVzYCBwcm9ncmVzcyBv biB0aGUgdGFza2JhciBpY29uLgorKGRvdGltZXMtd2l0aC1wcm9ncmVzcy1yZXBvcnRlcgorICAg IChpIDEwKQorICAgICJDb3VudGluZyBmcm9tIDEgdG8gMTAuLi4iCisgIChzbGVlcC1mb3IgMSkp CisKKzs7IFJlcG9ydCBgZG9saXN0YCBwcm9ncmVzcyBvbiB0aGUgdGFza2JhciBpY29uLgorKGRv bGlzdC13aXRoLXByb2dyZXNzLXJlcG9ydGVyCisgICAgKGkgKG1ha2UtbGlzdCAxMCB0KSkKKyAg ICAiUHJvZ3Jlc3MgZnJvbSAxIHRvIDEwIGVsZW1lbnRzLi4uIgorICAoc2xlZXAtZm9yIDEpKQor QGVuZCBncm91cAorQGVuZCBsaXNwCisKIEBub2RlIEZpbGUgTm90aWZpY2F0aW9ucwogQHNlY3Rp b24gTm90aWZpY2F0aW9ucyBvbiBGaWxlIENoYW5nZXMKIEBjaW5kZXggZmlsZSBub3RpZmljYXRp b25zCmRpZmYgLS1naXQgYS9ldGMvTkVXUyBiL2V0Yy9ORVdTCmluZGV4IGZkYjFlZTAyODE5Li42 NzYxNDRkZmYxMiAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIvZXRjL05FV1MKQEAgLTMxNTEs NiArMzE1MSwyMSBAQCBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgZnVuY3Rpb25zIHRvIHRocm90dGxl IG9yIGRlYm91bmNlIEVtYWNzIExpc3AKIGZ1bmN0aW9ucy4gIFRoaXMgaXMgdXNlZnVsIGZvciBj b3JyYWxsaW5nIG92ZXJlYWdlciBjb2RlIHRoYXQgaXMgc2xvdwogYW5kIGJsb2NrcyBFbWFjcywg b3IgZG9lcyBub3QgcHJvdmlkZSB3YXlzIHRvIGxpbWl0IGhvdyBvZnRlbiBpdCBydW5zLgogCisr KysKKyoqKiBOZXcgbW9kZSAnc3lzdGVtLXRhc2tiYXItbW9kZScuCitUaGlzIGlzIGEgZ2xvYmFs IG1pbm9yIG1vZGUgYW5kIGNvbXBhbmlvbiBmdW5jdGlvbnMgdGhhdCBpbnRlZ3JhdGUgRW1hY3MK K3dpdGggc3lzdGVtIEdVSSB0YXNrYmFycyAoYWxzbyBjYWxsZWQgZG9ja3Mgb3IgbGF1bmNoZXJz IG9yIHNvbWV0aGluZworc2ltaWxhcikgdG8gZGlzcGxheSBhIHRhc2tiYXIgaWNvbiAiYmFkZ2Ui IG92ZXJsYXksIGEgcHJvZ3Jlc3MgYmFyCityZXBvcnQgb3ZlcmxheSwgYWxlcnQgdGhlIHVzZXIg dGhhdCBhbiBFbWFjcyBzZXNzaW9uIG5lZWRzIGF0dGVudGlvbiwKK29mdGVuIGJ5IGZsYXNoaW5n IG9yIGJvdW5jaW5nIHRoZSBFbWFjcyBhcHBsaWNhdGlvbiBpY29uLiAgU3VwcG9ydGVkCitjYXBh YmxlIHN5c3RlbXMgYXJlIEdOVS9MaW51eCB2aWEgRC1CdXMsIG1hY09TL0dOVXN0ZXAgMTAuNSss IE1TLVdpbmRvd3MKKzcrLgorCitPbiBHTlUvTGludXggc3lzdGVtcywgc2hlbGwgZXh0ZW5zaW9u cyBvciBzaW1pbGFyIGhlbHBlcnMgc3VjaCBhcworImRhc2gtdG8tZG9jayIgbWF5IGJlIHJlcXVp cmVkLiAgU2VlCis8aHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vMzA3L2Rh c2gtdG8tZG9jay8+IGFuZAorPGh0dHBzOi8vd2lraS51YnVudHUuY29tL1VuaXR5L0xhdW5jaGVy QVBJPi4KKwogDAogKiBJbmNvbXBhdGlibGUgTGlzcCBDaGFuZ2VzIGluIEVtYWNzIDMxLjEKIApA QCAtMzU3OSw2ICszNTk0LDEzIEBAIEVtYWNzIHdoZW4gYnVpbHQgd2l0aCB0aGUgcHVyZSBHVEsg dG9vbGtpdCBub3cgcmVzcGVjdHMgZGVza3RvcAogZGFyayBhbmQgbGlnaHQgbW9kZXMgZm9yIGRy YXdpbmcgYSBHVEsgdG9vbGJhciBhbmQgd2lkZ2V0cywKIGF1dG9tYXRpY2FsbHkgdG9nZ2xpbmcg YmV0d2VlbiB0aGVtLgogCisrKysKKyoqIFByb2dyZXNzIHJlcG9ydGVyIGNhbGxiYWNrcy4KKydt YWtlLXByb2dyZXNzLXJlcG9ydGVyJyBub3cgYWNjZXB0cyBvcHRpb25hbCBhcmd1bWVudHMgVVBE QVRFLUNBTExCQUNLLAorY2FsbGVkIG9uIHByb2dyZXNzIHN0ZXBzLCBhbmQgRE9ORS1DQUxMQkFD SywgY2FsbGVkIHdoZW4gdGhlIHByb2dyZXNzCityZXBvcnRlciBpcyBkb25lLiAgU2VlIHRoZSAn bWFrZS1wcm9ncmVzcy1yZXBvcnRlcicgZG9jc3RyaW5nIGZvciBhIGZ1bGwKK3NwZWNpZmljYXRp b24gb2YgdGhlc2UgbmV3IG9wdGlvbmFsIGFyZ3VtZW50cy4KKwogDAogKiBDaGFuZ2VzIGluIEVt YWNzIDMxLjEgb24gTm9uLUZyZWUgT3BlcmF0aW5nIFN5c3RlbXMKIApkaWZmIC0tZ2l0IGEvbGlz cC9zdWJyLmVsIGIvbGlzcC9zdWJyLmVsCmluZGV4IGZjZjkzMWI2NGU5Li5lNjllZjE4YTFiYiAx MDA2NDQKLS0tIGEvbGlzcC9zdWJyLmVsCisrKyBiL2xpc3Avc3Vici5lbApAQCAtNjk3NCwxOSAr Njk3NCwzMyBAQCBzZXQtdHJhbnNpZW50LW1hcAogOzsgZGlnaXRzIG9mIHByZWNpc2lvbiwgaXQg ZG9lc24ndCByZWFsbHkgbWF0dGVyIGhlcmUuICBPbiB0aGUgb3RoZXIKIDs7IGhhbmQsIGl0IGdy ZWF0bHkgc2ltcGxpZmllcyB0aGUgY29kZS4KIAorKGRlZnZhciBwcm9ncmVzcy1yZXBvcnRlci11 cGRhdGUtZnVuY3Rpb25zIChsaXN0ICMncHJvZ3Jlc3MtcmVwb3J0ZXItZWNoby1hcmVhKQorICAi U3BlY2lhbCBob29rIHJ1biBvbiBwcm9ncmVzcy1yZXBvcnRlciB1cGRhdGVzLgorRWFjaCBmdW5j dGlvbiBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOgorUkVQT1JURVIgaXMgdGhlIHJlc3Vs dCBvZiBhIGNhbGwgdG8gYG1ha2UtcHJvZ3Jlc3MtcmVwb3J0ZXInLgorU1RBVEUgY2FuIGJlIG9u ZSBvZjoKKy0gQSBmbG9hdCByZXByZXNlbnRpbmcgdGhlIHBlcmNlbnRhZ2UgY29tcGxldGUgaW4g dGhlIHJhbmdlIDAuMC0xLjAKK2ZvciBhIG51bWVyaWMgcmVwb3J0ZXIuCistIEFuIGludGVnZXIg cmVwcmVzZW50aW5nIHRoZSBpbmRleCB3aGljaCBjeWNsZXMgdGhyb3VnaCB0aGUgcmFuZ2UgMC0z Citmb3IgYSBwdWxzaW5nIHJlcG9ydGVyLgorLSBUaGUgc3ltYm9sIGBkb25lJyB0byBpbmRpY2F0 ZSB0aGF0IHRoZSBwcm9ncmVzcyByZXBvcnRlciBpcyBjb21wbGV0ZS4iKQorCiAoZGVmc3Vic3Qg cHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlIChyZXBvcnRlciAmb3B0aW9uYWwgdmFsdWUgc3VmZml4 KQotICAiUmVwb3J0IHByb2dyZXNzIG9mIGFuIG9wZXJhdGlvbiBpbiB0aGUgZWNobyBhcmVhLgor ICAiUmVwb3J0IHByb2dyZXNzIG9mIGFuIG9wZXJhdGlvbiwgYnkgZGVmYXVsdCwgaW4gdGhlIGVj aG8gYXJlYS4KIFJFUE9SVEVSIHNob3VsZCBiZSB0aGUgcmVzdWx0IG9mIGEgY2FsbCB0byBgbWFr ZS1wcm9ncmVzcy1yZXBvcnRlcicuCiAKIElmIFJFUE9SVEVSIGlzIGEgbnVtZXJpY2FsIHByb2dy ZXNzIHJlcG9ydGVyLS0taS5lLiBpZiBpdCB3YXMKLSBtYWRlIHVzaW5nIG5vbi1uaWwgTUlOLVZB TFVFIGFuZCBNQVgtVkFMVUUgYXJndW1lbnRzIHRvCi0gYG1ha2UtcHJvZ3Jlc3MtcmVwb3J0ZXIn LS0tdGhlbiBWQUxVRSBzaG91bGQgYmUgYSBudW1iZXIgYmV0d2VlbgotIE1JTi1WQUxVRSBhbmQg TUFYLVZBTFVFLgorbWFkZSB1c2luZyBub24tbmlsIE1JTi1WQUxVRSBhbmQgTUFYLVZBTFVFIGFy Z3VtZW50cyB0bworYG1ha2UtcHJvZ3Jlc3MtcmVwb3J0ZXInLS0tdGhlbiBWQUxVRSBzaG91bGQg YmUgYSBudW1iZXIgYmV0d2VlbgorTUlOLVZBTFVFIGFuZCBNQVgtVkFMVUUuCisKK09wdGlvbmFs IGFyZ3VtZW50IFNVRkZJWCBpcyBhIHN0cmluZyB0byBiZSBkaXNwbGF5ZWQgYWZ0ZXIgUkVQT1JU RVIncworbWFpbiBtZXNzYWdlIGFuZCBwcm9ncmVzcyB0ZXh0LiAgSWYgUkVQT1JURVIgaXMgYSBu b24tbnVtZXJpY2FsCityZXBvcnRlciwgdGhlbiBWQUxVRSBzaG91bGQgYmUgbmlsLCBvciBhIHN0 cmluZyB0byB1c2UgaW5zdGVhZCBvZgorU1VGRklYLiAgU1VGRklYIGlzIGNvbnNpZGVyZWQgb2Jz b2xldGUgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuCiAKLU9wdGlvbmFsIGFyZ3Vt ZW50IFNVRkZJWCBpcyBhIHN0cmluZyB0byBiZSBkaXNwbGF5ZWQgYWZ0ZXIKLVJFUE9SVEVSJ3Mg bWFpbiBtZXNzYWdlIGFuZCBwcm9ncmVzcyB0ZXh0LiAgSWYgUkVQT1JURVIgaXMgYQotbm9uLW51 bWVyaWNhbCByZXBvcnRlciwgdGhlbiBWQUxVRSBzaG91bGQgYmUgbmlsLCBvciBhIHN0cmluZyB0 bwotdXNlIGluc3RlYWQgb2YgU1VGRklYLgorU2VlIGBwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUt ZnVuY3Rpb25zJyBmb3IgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zCitjYWxsZWQgb24gZWFjaCB1cGRh dGUuCiAKIFRoaXMgZnVuY3Rpb24gaXMgcmVsYXRpdmVseSBpbmV4cGVuc2l2ZS4gIElmIHRoZSBj aGFuZ2Ugc2luY2UKIGxhc3QgdXBkYXRlIGlzIHRvbyBzbWFsbCBvciBpbnN1ZmZpY2llbnQgdGlt ZSBoYXMgcGFzc2VkLCBpdCBkb2VzCkBAIC03MDQ1LDExICs3MDU5LDE1IEBAIG1ha2UtcHJvZ3Jl c3MtcmVwb3J0ZXIKIAogKGRlZmFsaWFzICdwcm9ncmVzcy1yZXBvcnRlci1tYWtlICMnbWFrZS1w cm9ncmVzcy1yZXBvcnRlcikKIAorKGRlZnVuIHByb2dyZXNzLXJlcG9ydGVyLXRleHQgKHJlcG9y dGVyKQorICAiUmV0dXJuIFJFUE9SVEVSJ3MgdGV4dC4iCisgIChhcmVmIChjZHIgcmVwb3J0ZXIp IDMpKQorCiAoZGVmdW4gcHJvZ3Jlc3MtcmVwb3J0ZXItZm9yY2UtdXBkYXRlIChyZXBvcnRlciAm b3B0aW9uYWwgdmFsdWUgbmV3LW1lc3NhZ2Ugc3VmZml4KQogICAiUmVwb3J0IHByb2dyZXNzIG9m IGFuIG9wZXJhdGlvbiBpbiB0aGUgZWNobyBhcmVhIHVuY29uZGl0aW9uYWxseS4KIAotUkVQT1JU RVIsIFZBTFVFLCBhbmQgU1VGRklYIGFyZSB0aGUgc2FtZSBhcyBpbiBgcHJvZ3Jlc3MtcmVwb3J0 ZXItdXBkYXRlJy4KLU5FVy1NRVNTQUdFLCBpZiBub24tbmlsLCBzZXRzIGEgbmV3IG1lc3NhZ2Ug Zm9yIHRoZSByZXBvcnRlci4iCisgIFJFUE9SVEVSLCBWQUxVRSwgYW5kIFNVRkZJWCBhcmUgdGhl IHNhbWUgYXMgaW4gYHByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZScuCisgIE5FVy1NRVNTQUdFLCBp ZiBub24tbmlsLCBzZXRzIGEgbmV3IG1lc3NhZ2UgZm9yIHRoZSByZXBvcnRlci4iCiAgIChsZXQg KChwYXJhbWV0ZXJzIChjZHIgcmVwb3J0ZXIpKSkKICAgICAod2hlbiBuZXctbWVzc2FnZQogICAg ICAgKGFzZXQgcGFyYW1ldGVycyAzIG5ldy1tZXNzYWdlKSkKQEAgLTcwNjAsMTIgKzcwNzgsMjkg QEAgcHJvZ3Jlc3MtcmVwb3J0ZXItZm9yY2UtdXBkYXRlCiAoZGVmdmFyIHByb2dyZXNzLXJlcG9y dGVyLS1wdWxzZS1jaGFyYWN0ZXJzIFsiLSIgIlxcIiAifCIgIi8iXQogICAiQ2hhcmFjdGVycyB0 byB1c2UgZm9yIHB1bHNpbmcgcHJvZ3Jlc3MgcmVwb3J0ZXJzLiIpCiAKKyhkZWZ1biBwcm9ncmVz cy1yZXBvcnRlci1lY2hvLWFyZWEgKHJlcG9ydGVyIHN0YXRlKQorICAiUHJvZ3Jlc3MgcmVwb3J0 ZXIgZWNobyBhcmVhIHVwZGF0ZSBmdW5jdGlvbi4KK1JFUE9SVEVSIGFuZCBTVEFURSBhcmUgdGhl IHNhbWUgYXMgaW4KK2Bwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUtZnVuY3Rpb25zYC4iCisgIChs ZXQgKCh0ZXh0IChwcm9ncmVzcy1yZXBvcnRlci10ZXh0IHJlcG9ydGVyKSkpCisgICAgKHBjYXNl IHN0YXRlCisgICAgICAoKHByZWQgZmxvYXRwKQorICAgICAgIChpZiAocGx1c3Agc3RhdGUpCisg ICAgICAgICAgIChtZXNzYWdlICIlcyVkJSUiIHRleHQgKCogc3RhdGUgMTAwLjApKQorICAgICAg ICAgKG1lc3NhZ2UgIiVzIiB0ZXh0KSkpCisgICAgICAoKHByZWQgaW50ZWdlcnApCisgICAgICAg KGxldCAoKG1lc3NhZ2UtbG9nLW1heCBuaWwpCisgICAgICAgICAgICAgKHB1bHNlLWNoYXIgKGFy ZWYgcHJvZ3Jlc3MtcmVwb3J0ZXItLXB1bHNlLWNoYXJhY3RlcnMKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdGF0ZSkpKQorICAgICAgICAgKG1lc3NhZ2UgIiVzICVzIiB0ZXh0IHB1 bHNlLWNoYXIpKSkKKyAgICAgICgnZG9uZQorICAgICAgIChtZXNzYWdlICIlc2RvbmUiIHRleHQp KSkpKQorCiAoZGVmdW4gcHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRlIChyZXBvcnRlciB2YWx1 ZSAmb3B0aW9uYWwgc3VmZml4KQotICAobGV0KiAoKHBhcmFtZXRlcnMgICAoY2RyIHJlcG9ydGVy KSkKLQkgKHVwZGF0ZS10aW1lICAoYXJlZiBwYXJhbWV0ZXJzIDApKQotCSAobWluLXZhbHVlICAg IChhcmVmIHBhcmFtZXRlcnMgMSkpCi0JIChtYXgtdmFsdWUgICAgKGFyZWYgcGFyYW1ldGVycyAy KSkKLQkgKHRleHQgICAgICAgICAoYXJlZiBwYXJhbWV0ZXJzIDMpKQorICAobGV0KiAoKHBhcmFt ZXRlcnMgICAgICAoY2RyIHJlcG9ydGVyKSkKKwkgKHVwZGF0ZS10aW1lICAgICAoYXJlZiBwYXJh bWV0ZXJzIDApKQorCSAobWluLXZhbHVlICAgICAgIChhcmVmIHBhcmFtZXRlcnMgMSkpCisJICht YXgtdmFsdWUgICAgICAgKGFyZWYgcGFyYW1ldGVycyAyKSkKIAkgKGVub3VnaC10aW1lLXBhc3Nl ZAogCSAgOzsgU2VlIGlmIGVub3VnaCB0aW1lIGhhcyBwYXNzZWQgc2luY2UgdGhlIGxhc3QgdXBk YXRlLgogCSAgKG9yIChub3QgdXBkYXRlLXRpbWUpCkBAIC03MDk4LDkgKzcxMzMsOSBAQCBwcm9n cmVzcy1yZXBvcnRlci1kby11cGRhdGUKICAgICAgICAgICAgICAgIChpZiBzdWZmaXgKICAgICAg ICAgICAgICAgICAgICAoYXNldCBwYXJhbWV0ZXJzIDYgc3VmZml4KQogICAgICAgICAgICAgICAg ICAoc2V0cSBzdWZmaXggKG9yIChhcmVmIHBhcmFtZXRlcnMgNikgIiIpKSkKLSAgICAgICAgICAg ICAgIChpZiAocGx1c3AgcGVyY2VudGFnZSkKLSAgICAgICAgICAgICAgICAgICAobWVzc2FnZSAi JXMlZCUlICVzIiB0ZXh0IHBlcmNlbnRhZ2Ugc3VmZml4KQotICAgICAgICAgICAgICAgICAobWVz c2FnZSAiJXMgJXMiIHRleHQgc3VmZml4KSkpKSkKKyAgICAgICAgICAgICAgIChydW4taG9vay13 aXRoLWFyZ3MgJ3Byb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKC8gcGVyY2VudGFnZSAxMDAuMCkpKSkpCiAJICA7OyBQdWxzaW5nIGluZGlj YXRvcgogCSAgKGVub3VnaC10aW1lLXBhc3NlZAogICAgICAgICAgICAod2hlbiAoYW5kIHZhbHVl IChub3Qgc3VmZml4KSkKQEAgLTcxMDgsMTYgKzcxNDMsMTggQEAgcHJvZ3Jlc3MtcmVwb3J0ZXIt ZG8tdXBkYXRlCiAgICAgICAgICAgIChpZiBzdWZmaXgKICAgICAgICAgICAgICAgIChhc2V0IHBh cmFtZXRlcnMgNiBzdWZmaXgpCiAgICAgICAgICAgICAgKHNldHEgc3VmZml4IChvciAoYXJlZiBw YXJhbWV0ZXJzIDYpICIiKSkpCi0gICAgICAgICAgIChsZXQqICgoaW5kZXggKG1vZCAoMSsgKGNh ciByZXBvcnRlcikpIDQpKQotICAgICAgICAgICAgICAgICAgKG1lc3NhZ2UtbG9nLW1heCBuaWwp Ci0gICAgICAgICAgICAgICAgICAocHVsc2UtY2hhciAoYXJlZiBwcm9ncmVzcy1yZXBvcnRlci0t cHVsc2UtY2hhcmFjdGVycwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5k ZXgpKSkKKyAgICAgICAgICAgKGxldCAoKGluZGV4IChtb2QgKDErIChjYXIgcmVwb3J0ZXIpKSA0 KSkpCiAJICAgICAoc2V0Y2FyIHJlcG9ydGVyIGluZGV4KQotICAgICAgICAgICAgIChtZXNzYWdl ICIlcyAlcyAlcyIgdGV4dCBwdWxzZS1jaGFyIHN1ZmZpeCkpKSkpKQorICAgICAgICAgICAgIChy dW4taG9vay13aXRoLWFyZ3MgJ3Byb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydGVyCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbmRleCkpKSkpKQogCiAoZGVmdW4gcHJvZ3Jlc3MtcmVwb3J0ZXIt ZG9uZSAocmVwb3J0ZXIpCi0gICJQcmludCByZXBvcnRlcidzIG1lc3NhZ2UgZm9sbG93ZWQgYnkg d29yZCBcImRvbmVcIiBpbiBlY2hvIGFyZWEuIgotICAobWVzc2FnZSAiJXNkb25lIiAoYXJlZiAo Y2RyIHJlcG9ydGVyKSAzKSkpCisgICJQcmludCByZXBvcnRlcidzIG1lc3NhZ2UgZm9sbG93ZWQg Ynkgd29yZCBcImRvbmVcIiBpbiBlY2hvIGFyZWEuCitDYWxsIHRoZSBmdW5jdGlvbnMgb24gYHBy b2dyZXNzLXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnNgLiIKKyAgKHJ1bi1ob29rLXdpdGgtYXJn cyAncHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlLWZ1bmN0aW9ucworICAgICAgICAgICAgICAgICAg ICAgIHJlcG9ydGVyCisgICAgICAgICAgICAgICAgICAgICAgJ2RvbmUpKQogCiAoZGVmbWFjcm8g ZG90aW1lcy13aXRoLXByb2dyZXNzLXJlcG9ydGVyIChzcGVjIHJlcG9ydGVyLW9yLW1lc3NhZ2Ug JnJlc3QgYm9keSkKICAgIkxvb3AgYSBjZXJ0YWluIG51bWJlciBvZiB0aW1lcyBhbmQgcmVwb3J0 IHByb2dyZXNzIGluIHRoZSBlY2hvIGFyZWEuCmRpZmYgLS1naXQgYS9saXNwL3N5c3RlbS10YXNr YmFyLmVsIGIvbGlzcC9zeXN0ZW0tdGFza2Jhci5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uODk2NmNkYTBjNjcKLS0tIC9kZXYvbnVsbAorKysgYi9saXNwL3N5c3Rl bS10YXNrYmFyLmVsCkBAIC0wLDAgKzEsNTM0IEBACis7Ozsgc3lzdGVtLXRhc2tiYXIuZWwgLS0t IFN5c3RlbSBHVUkgdGFza2Jhci9kb2NrL2xhdW5jaGVyIHN0YXR1cyBkaXNwbGF5IC0qLSBsZXhp Y2FsLWJpbmRpbmc6IHQgLSotCisKKzs7IENvcHlyaWdodCAoQykgMjAyNSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKworOzsgQXV0aG9yOiBTdGVwaGFuZSBNYXJrcworOzsgTWFpbnRh aW5lcjogZW1hY3MtZGV2ZWxAZ251Lm9yZworOzsgS2V5d29yZHM6IGNvbnZlbmllbmNlCis7OyBQ YWNrYWdlLVJlcXVpcmVzOiAoKGVtYWNzICIzMS4xIikpCisKKzs7IFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIEdOVSBFbWFjcy4KKworOzsgR05VIEVtYWNzIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKzs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorOzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworOzsgR05VIEVtYWNz IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKzs7IGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBz ZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworOzs7IENvbW1lbnRhcnk6CisK Kzs7IFVzZSB0aGlzIHBhY2thZ2UgdG8gZGlzcGxheSBhIHRhc2tiYXIgaWNvbiAiYmFkZ2UiIG92 ZXJsYXksIGEKKzs7IHByb2dyZXNzIGJhciByZXBvcnQgb3ZlcmxheSwgb3IgYWxlcnQgdGhlIHVz ZXIgdGhhdCBhbiBFbWFjcyBzZXNzaW9uCis7OyBuZWVkcyBhdHRlbnRpb24sIG9mdGVuIGJ5IGZs YXNoaW5nIG9yIGJvdW5jaW5nIHRoZSBFbWFjcyBhcHBsaWNhdGlvbgorOzsgaWNvbi4KKzs7Cis7 OyBOb3RlOiBUaGUgdGVybSB0YXNrYmFyIGlzIGluY2x1c2l2ZSBvZiBkb2NrIG9yIGxhdW5jaGVy IG9yIHNvbWUgb3RoZXIKKzs7IHRlcm1pbm9sb2d5IGFzIG1heSBiZSB1c2VkIGZvciB5b3VyIHN5 c3RlbS4KKzs7Cis7OyBPbiBHTlUvTGludXgsIHRoZSB2aXNpYmxlIGVmZmVjdHMgd2lsbCBhcHBl YXIgb24gdGhlIGRlc3RpbmF0aW9ucworOzsgZGV0ZXJtaW5lZCBieSB5b3VyIHNoZWxsIGV4dGVu c2lvbiwgbW9zdCBvZnRlbiB0aGUgYXBwbGljYXRpb24KKzs7IGxhdW5jaGVyIG9yIGRvY2sgcGFu ZWwsIG9yIHRoZSB0b3AgcGFuZWwuICBFZmZlY3RzIGFyZSBnbG9iYWwgZm9yIGFuCis7OyBFbWFj cyBpbnN0YW5jZS4KKzs7Cis7OyBPbiBtYWNPUy9HTlVzdGVwLCB0aGUgZWZmZWN0cyB3aWxsIGFw cGVhciBvbiB0aGUgRG9jayBhbmQgaW4gdGhlIEFwcAorOzsgU3dpdGNoZXIuICBFZmZlY3RzIGFy ZSBnbG9iYWwgZm9yIGFuIEVtYWNzIGluc3RhbmNlLgorOzsKKzs7IE9uIE1TLVdpbmRvd3MsIHRo ZSBlZmZlY3RzIGFwcGVhciBvbiB0aGUgdGFza2Jhci4gIEVmZmVjdHMgYXJlCis7OyBhc3NvY2lh dGVkIHdpdGggdGhlIGZyYW1lIGZyb20gd2hpY2ggdGhleSBhcmUgaW5pdGlhdGVkLgorCis7Ozsg VXNhZ2U6CisKKzs7IFRoZSBnbG9iYWwgbWlub3IgbW9kZSBgc3lzdGVtLXRhc2tiYXItbW9kZScg aW5pdGlhbGl6ZXMgdGhlIEdVSQorOzsgcGxhdGZvcm0gYmFjay1lbmQgYW5kIG11c3QgYmUgZW5h YmxlZCBiZWZvcmUgdXNpbmcgdGhlIGZ1bmN0aW9ucworOzsgYmVsb3cuCis7OworOzsgYHN5c3Rl bS10YXNrYmFyLWJhZGdlJyBvdmVybGF5cyBhIGNvdW50LCB3aGljaCBpcyBhbiBpbnRlZ2VyLCBv biB0aGUKKzs7IEVtYWNzIHRhc2tiYXIgaWNvbi4gIFlvdSBjYW4gdXNlIHRoaXMsIGZvciBleGFt cGxlLCB0byBpbmRpY2F0ZSB0aGUKKzs7IG51bWJlciBvZiB1bnJlYWQgZW1haWwgbWVzc2FnZXMu ICBPbiBHTlUvTGludXgsIHRoZSBjb3VudCBtdXN0IGJlIGFuCis7OyBpbnRlZ2VyIG9yIG5pbC4g IE9uIG1hY09TL0dOVXN0ZXAsIHRoZSBjb3VudCBtYXkgYmUgYW4gaW50ZWdlciBvciBhCis7OyBz dHJpbmcsIHdoaWNoIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHdpbGwgYWJicmV2aWF0ZSBpZiB0b28g bG9uZy4gIE9uCis7OyBNUy1XaW5kb3dzLCB0aGUgdGFza2JhciBiYWRnZSB3aWxsIGJlIGFiYnJl dmlhdGVkIHRvIHRocmVlCis7OyBjaGFyYWN0ZXJzOyBpZiB0aGUgY291bnQgaXMgYW4gaW50ZWdl ciBvdXRzaWRlIHRoZSByYW5nZSAtOTkgdG8gOTksCis7OyBpdCBpcyBzaG93biBhcyAiLTk5IiBv ciAiOTkrIiwgaWYgY291bnQgaXMgYSBzdHJpbmcgbG9uZ2VyIHRoYW4gMworOzsgY2hhcmFjdGVy cyBpdCBpcyB0cnVuY2F0ZWQuCis7OworOzsgYHN5c3RlbS10YXNrYmFyLWF0dGVudGlvbicgZmxh c2hlcyBvciBib3VuY2VzIHRoZSBFbWFjcyB0YXNrYmFyIGljb24KKzs7IHRvIGluZGljYXRlIHRo YXQgeW91ciBFbWFjcyBzZXNzaW9uIHdhbnRzIGF0dGVudGlvbi4gIEl0cyBiZWhhdmlvcnMKKzs7 IGFyZSBiYWNrLWVuZCBzcGVjaWZpYy4KKzs7Cis7OyBgc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3Mn IG92ZXJsYXlzIGEgZ3JhcGhpY2FsIHByb2dyZXNzIGJhciBvbiB0aGUKKzs7IEVtYWNzIHRhc2ti YXIgaWNvbiB0byBpbGx1c3RyYXRlIHByb2dyZXNzIG9mIGEgcG90ZW50aWFsbHkKKzs7IGxvbmct cnVubmluZyBvcGVyYXRpb24uCis7OworOzsgV2hlbiBgc3lzdGVtLXRhc2tiYXItbW9kZWAgaXMg ZW5hYmxlZCwgRW1hY3MgcHJvZ3Jlc3MgcmVwb3J0ZXJzIHdpbGwKKzs7IGJlIGVuaGFuY2VkIHRv IGRpc3BsYXkgdGFza2JhciBHVUkgcHJvZ3Jlc3MgYmFycy4gIEN1c3RvbWl6ZQorOzsgYHN5c3Rl bS10YXNrYmFyLXVzZS1wcm9ncmVzcy1yZXBvcnRlcmAgaWYgeW91IHdhbnQgdG8gZGlzYWJsZSB0 aGlzCis7OyBiZWZvcmUgZW5hYmxpbmcgc3lzdGVtLXRhc2tiYXItbW9kZS4KKzs7Cis7OyBPbiBH TlUvTGludXggc3lzdGVtcywgdGFza2JhciBlZmZlY3RzIHdpbGwgYXBwZWFyIG9uIHRoZSBHVUkK Kzs7IHdpbmRvdy1zeXN0ZW0gZGVzdGluYXRpb25zIGRldGVybWluZWQgYnkgeW91ciBzaGVsbCBl eHRlbnNpb24sIG1vc3QKKzs7IG9mdGVuIHRoZSBhcHBsaWNhdGlvbiBsYXVuY2hlciBvciBkb2Nr IHBhbmVsLCBvciB0aGUgdG9wIHBhbmVsLgorOzsgVGFza2JhciBlZmZlY3RzIGFyZSBnbG9iYWwg Zm9yIGFuIEVtYWNzIGluc3RhbmNlLiAgVGhlIEdOVS9MaW51eAorOzsgaW1wbGVtZW50YXRpb24g c2VuZHMgdGFza2JhciBtZXNzYWdlcyB0byB0aGUgc3lzdGVtIEdVSSB1c2luZyBELUJ1cy4KKzs7 IFlvdSBtYXkgbmVlZCB0byBpbnN0YWxsIG9yIGNvbmZpZ3VyZSBzaGVsbCBleHRlbnNpb25zIHN1 Y2ggYXMKKzs7IEBmaWxle2h0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzMw Ny9kYXNoLXRvLWRvY2svfSB0aGF0Cis7OyBpbXBsZW1lbnQgVWJ1bnR1J3MgVW5pdHkgRC1CdXMg bGF1bmNoZXIgc3BlYyB3aGljaCB5b3UgY2FuIHJlYWQgbW9yZQorOzsgYWJvdXQgaGVyZSBAZmls ZXtodHRwczovL3dpa2kudWJ1bnR1LmNvbS9Vbml0eS9MYXVuY2hlckFQSX0uCis7OworOzsgWW91 ciBMaW51eCBFbWFjcyBpbnN0YW5jZSBzaG91bGQgYmUgbGF1bmNoZWQgdmlhIGFuIGFwcHJvcHJp YXRlIHNoZWxsCis7OyAiZGVza3RvcCIgZmlsZSBzdWNoIGFzIHRob3NlIGRpc3RyaWJ1dGVkIHdp dGggRW1hY3M7IGUuZy4sCis7OyAiZXRjL2VtYWNzY2xpZW50LmRlc2t0b3AiIGFzIGRvY3VtZW50 ZWQgaGVyZQorOzsgaHR0cHM6Ly9zcGVjaWZpY2F0aW9ucy5mcmVlZGVza3RvcC5vcmcvZGVza3Rv cC1lbnRyeS9sYXRlc3QvIGFuZAorOzsgd2hpY2ggeW91ciBHVUkgc3lzdGVtIHNob3VsZCBpbXBs ZW1lbnQuCis7OworOzsgT24gbWFjT1MvR05Vc3RlcCAxMC41KywgdGFza2JhciBlZmZlY3RzIGFw cGVhciBvbiB0aGUgRG9jayBhbmQgaW4gdGhlCis7OyBBcHAgU3dpdGNoZXIuICBFZmZlY3RzIGFy ZSBnbG9iYWwgZm9yIGFuIEVtYWNzIGluc3RhbmNlLgorOzsgbWFjT1MvR05Vc3RlcCBpcyBpbXBs ZW1lbnRlZCB2aWEgaXRzIG5hdGl2ZSBBUEkgYW5kIG5lZWRzIG5vIHNwZWNpYWwKKzs7IGNvbmZp Z3VyYXRpb24uCis7OworOzsgT24gTVMtV2luZG93cyA3KywgdGFza2JhciBlZmZlY3RzIGFwcGVh ciBvbiB0aGUgV2luZG93cyB0YXNrYmFyLgorOzsgRWZmZWN0cyBhcmUgYXNzb2NpYXRlZCB3aXRo IHRoZSBmcmFtZSBmcm9tIHdoaWNoIHRoZXkgYXJlIGluaXRpYXRlZC4KKzs7IE1TLVdpbmRvd3Mg aXMgaW1wbGVtZW50ZWQgdmlhIGl0cyBuYXRpdmUgQVBJIGFuZCBuZWVkcyBubyBzcGVjaWFsCis7 OyBjb25maWd1cmF0aW9uLgorOzsKKzs7IFRvIGFkZCBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIHN5 c3RlbXMsIHByb3ZpZGUgYSBiYWNrIGVuZCB0aGF0Cis7OyBpbXBsZW1lbnRzIHRoZSBjbC1nZW5l cmljIGZ1bmN0aW9ucyBiZWxvdy4KKworOzs7IENvZGU6CisKKyhyZXF1aXJlICdkYnVzKQorCiso ZGVmZ3JvdXAgc3lzdGVtLXRhc2tiYXIgbmlsCisgICJTeXN0ZW0gR1VJIHRhc2tiYXIgaWNvbiBi YWRnZSwgcHJvZ3Jlc3MgcmVwb3J0LCBhbGVydGluZy4iCisgIDpncm91cCAnY29udmVuaWVuY2UK KyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmY3VzdG9tIHN5c3RlbS10YXNrYmFyLXVzZS1wcm9n cmVzcy1yZXBvcnRlciB0CisgICJTdXBwbGVtZW50IHByb2dyZXNzLXJlcG9ydGVycyB3aXRoIEdV SSB0YXNrYmFyIGljb24gcHJvZ3Jlc3MgYmFycy4KK1NldCB0aGlzIGJlZm9yZSBlbmFibGluZyBg c3lzdGVtLXRhc2tiYXItbW9kZScuIgorICA6dHlwZSAnYm9vbGVhbgorICA6dmVyc2lvbiAiMzEu MSIpCisKKyhkZWZjdXN0b20gc3lzdGVtLXRhc2tiYXItY2xlYXItYXR0ZW50aW9uLW9uLWZyYW1l LWZvY3VzIHQKKyAgIkNsZWFyIHRoZSBpY29uIGF0dGVudGlvbiBpbmRpY2F0b3Igd2hlbiBhbnkg R1VJIGZyYW1lIGlzIGZvY3VzZWQuCitCYWNrIGVuZHMgdGhhdCBhdXRvbWF0aWNhbGx5IGNsZWFy IHRoZSBhdHRlbnRpb24gaW5kaWNhdG9yLCBzdWNoIGFzCittYWNPUy9HTlVzdGVwIGFuZCBNUy1X aW5kb3dzLCBpZ25vcmUgdGhpcyBvcHRpb24uIgorICA6dHlwZSAnYm9vbGVhbgorICA6dmVyc2lv biAiMzEuMSIpCisKKyhkZWZjdXN0b20gc3lzdGVtLXRhc2tiYXItZGJ1cy1kZXNrdG9wLWZpbGUt bmFtZSAiZW1hY3NjbGllbnQiCisgICJELUJ1cyBkZXNrdG9wIGZpbGUgYmFzZSBuYW1lIGZvciB0 aGUgc3lzdGVtIHRhc2tiYXIgZGVzdGluYXRpb24uCitUaGlzIHNob3VsZCBiZSB0aGUgYmFzZSBu YW1lIG9mIHRoZSBkZXNrdG9wIGZpbGUgdXNlZCB0byBsYXVuY2ggYW4gRW1hY3MKK2luc3RhbmNl LiAgRm9yIGV4YW1wbGUsIGlmIHlvdXIgbGF1bmNoZXIgZGVza3RvcCBmaWxlIGlzIGNhbGxlZAor XCJlbWFjcy5kZXNrdG9wXCIsIHRoaXMgb3B0aW9uIHNob3VsZCBiZSBcImVtYWNzXCIuIgorICA6 dHlwZSAnc3RyaW5nCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmN1c3RvbSBzeXN0ZW0tdGFz a2Jhci1kYnVzLXRpbWVvdXQgbmlsCisgICJOdW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQg Zm9yIEQtQnVzIHJlc3BvbnNlcy4KK0lmIG5pbCwgdXNlIHRoZSBgZGJ1c2AgZGVmYXVsdCB0aW1l b3V0IHdoaWNoIGlzIDI1LDAwMCAoaS5lLiwgMjVzKS4KKworSWYgeW91ciBELUJ1cyBkZXNrdG9w IGV4dGVuc2lvbiBuZWVkcyBleHRyYSB0aW1lIHRvIHJlc3BvbmQsIGluIHdoaWNoCitjYXNlIGBz eXN0ZW0tdGFza2Jhci1tb2RlYCBtaWdodCBub3QgaW5pdGlhbGl6ZSBvciByZWxhdGVkIGZ1bmN0 aW9ucworbWlnaHQgbm90IHRha2UgdmlzaWJsZSBlZmZlY3QsIGJpbmQgdGhpcyB0byBhIHZhbHVl IGhpZ2hlciB0aGFuIDI1LDAwMAordG8gZmluZCB3aGF0IHdvcmtzIGZvciB5b3VyIHN5c3RlbS4i CisgIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJEZWZhdWx0IiBuaWwpIG5hdG51bSkKKyAg OnZlcnNpb24gIjMxLjEiKQorCisoZGVmdW4gc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MtcmVwb3J0 ZXItaW5zdGFsbCAoKQorICAiSW5zdGFsbCBzeXN0ZW0tdGFza2JhciBwcm9ncmVzcyByZXBvcnRl ci4iCisgIChhZGQtaG9vayAncHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlLWZ1bmN0aW9ucworICAg ICAgICAgICAgIydzeXN0ZW0tdGFza2Jhci0tcHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlKSkKKwor KGRlZnVuIHN5c3RlbS10YXNrYmFyLXByb2dyZXNzLXJlcG9ydGVyLXJlbW92ZSAoKQorICAiUmVt b3ZlIHN5c3RlbS10YXNrYmFyIHByb2dyZXNzIHJlcG9ydGVyLiIKKyAgKHJlbW92ZS1ob29rICdw cm9ncmVzcy1yZXBvcnRlci11cGRhdGUtZnVuY3Rpb25zCisgICAgICAgICAgICAgICAjJ3N5c3Rl bS10YXNrYmFyLS1wcm9ncmVzcy1yZXBvcnRlci11cGRhdGUpKQorCisoZGVmdmFyIHN5c3RlbS10 YXNrYmFyLS1iYWNrLWVuZCBuaWwKKyAgIkdlbmVyaWMgdGFza2JhciBtZXRob2Qgc3lzdGVtIGRp c3BhdGNoZXIuIikKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZpbmUtbWlub3ItbW9kZSBzeXN0ZW0t dGFza2Jhci1tb2RlCisgICJTeXN0ZW0gR1VJIHRhc2tiYXIgaWNvbiBiYWRnZSwgcHJvZ3Jlc3Mg cmVwb3J0LCBhbGVydGluZy4iCisgIDpnbG9iYWwgdAorICAod2hlbiBub25pbnRlcmFjdGl2ZQor ICAgICh3YXJuICJCYXRjaCBtb2RlIGRvZXMgbm90IHN1cHBvcnQgYHN5c3RlbS10YXNrYmFyJyIp KQorICAoY29uZCAoc3lzdGVtLXRhc2tiYXItbW9kZQorICAgICAgICAgKGlmIChzeXN0ZW0tdGFz a2Jhci0tc2V0LWJhY2stZW5kKQorICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tZW5hYmxl KQorICAgICAgICAgICAod2FybiAiU3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgYHN5c3RlbS10YXNr YmFyJyIpKQorICAgICAgICAgKHdoZW4gc3lzdGVtLXRhc2tiYXItdXNlLXByb2dyZXNzLXJlcG9y dGVyCisgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci1wcm9ncmVzcy1yZXBvcnRlci1pbnN0YWxs KSkpCisgICAgICAgICh0CisgICAgICAgICAoc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MtcmVwb3J0 ZXItcmVtb3ZlKQorICAgICAgICAgKHdoZW4gc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kCisgICAg ICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFkZ2UgbmlsKQorICAgICAgICAgICAoc3lzdGVtLXRh c2tiYXItLWF0dGVudGlvbiBuaWwpCisgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tcHJvZ3Jl c3MgbmlsKQorICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWRpc2FibGUpCisgICAgICAgICAg IChzZXRxIHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCBuaWwpKSkpKQorCisoZGVmdW4gc3lzdGVt LXRhc2tiYXItYmFkZ2UgKCZvcHRpb25hbCBjb3VudCkKKyAgIkRpc3BsYXkgQ09VTlQgYXMgYW4g b3ZlcmxheSBvbiB0aGUgc3lzdGVtIHRhc2tiYXIgRW1hY3MgaWNvbi4KK0lmIENPVU5UIGlzIGFu IGludGVnZXIsIGRpc3BsYXkgdGhhdC4KK0lmIENPVU5UIGlzIGEgc3RyaW5nIG9uIGJhY2sgZW5k cyB0aGF0IHN1cHBvcnQgc3RyaW5ncywgZGlzcGxheSB0aGF0LgorVGhlIHN0cmluZyBzaG91bGQg YmUgc2hvcnQuCitPbiBiYWNrIGVuZHMgd2hpY2ggZG8gbm90IHN1cHBvcnQgc3RyaW5ncywgY29u dmVydCBDT1VOVCB0byBhbiBpbnRlZ2VyCit1c2luZyBgc3RyaW5nLXRvLW51bWJlcicgYW5kIHRl c3RpbmcgYGludGVnZXJwJywgb3IgbmlsIGlmIHRoYXQgZmFpbHMuCitJZiBDT1VOVCBpcyBuaWwg b3IgYW4gZW1wdHkgc3RyaW5nLCByZW1vdmUgdGhlIGNvdW50ZXIuIgorICAod2hlbiBzeXN0ZW0t dGFza2Jhci1tb2RlCisgICAgKHN5c3RlbS10YXNrYmFyLS1iYWRnZSBjb3VudCkpKQorCisoZGVm dW4gc3lzdGVtLXRhc2tiYXItYXR0ZW50aW9uICgmb3B0aW9uYWwgdXJnZW5jeSB0aW1lb3V0KQor ICAiRmxhc2ggdGhlIHN5c3RlbSB0YXNrYmFyIGljb24gYW5kL29yIGZyYW1lIHRvIGFsZXJ0IHRo ZSB1c2VyLgorVVJHRU5DWSBjYW4gYmUgb25lIG9mIHRoZSBzeW1ib2xzIGBpbmZvcm1hdGlvbmFs Jywgb3IgYGNyaXRpY2FsJy4KK0lmIFVSR0VOQ1kgaXMgbmlsLCBjbGVhciB0aGUgYXR0ZW50aW9u IGluZGljYXRvci4KKworVGhlIGF0dGVudGlvbiBpbmRpY2F0b3IgaXMgY2xlYXJlZCBieSB0aGUg ZWFybGllc3Qgb2YgYnJpbmdpbmcgdGhlIEVtYWNzCitHVUkgaW50byBmb2N1cywgb3IgYWZ0ZXIg VElNRU9VVCBzZWNvbmRzLiAgSWYgVElNRU9VVCBpcyBuaWwsIHRoZSBzeXN0ZW0KK0dVSSBiZWhh dmlvciBoYXMgcHJpb3JpdHkuCisKK09uIHNvbWUgYmFjayBlbmRzLCBgY3JpdGljYWwnIGhhcyB0 aGUgc2FtZSBlZmZlY3QgYXMgYGluZm9ybWF0aW9uYWwnLiIKKyAgKHdoZW4gc3lzdGVtLXRhc2ti YXItbW9kZQorICAgIChzeXN0ZW0tdGFza2Jhci0tYXR0ZW50aW9uIHVyZ2VuY3kgdGltZW91dCkp KQorCisoZGVmdW4gc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MgKCZvcHRpb25hbCBwcm9ncmVzcykK KyAgIkRpc3BsYXkgYSBwcm9ncmVzcyBpbmRpY2F0b3Igb3ZlcmxheSBvbiB0aGUgc3lzdGVtIHRh c2tiYXIgaWNvbi4KK1BST0dSRVNTIGlzIGEgZmxvYXQgaW4gdGhlIHJhbmdlIDAuMCB0byAxLjAu CitJZiBQUk9HUkVTUyBpcyBuaWwsIHJlbW92ZSB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yLiIKKyAg KHdoZW4gc3lzdGVtLXRhc2tiYXItbW9kZQorICAgIChzeXN0ZW0tdGFza2Jhci0tcHJvZ3Jlc3Mg cHJvZ3Jlc3MpKSkKKworDAorOzsgSW50ZXJuYWwgaW1wbGVtZW50YXRpb24uCisKKyhkZWZ2YXIg dzMyLWluaXRpYWxpemVkKQorCisoZGVmdW4gc3lzdGVtLXRhc2tiYXItLXNldC1iYWNrLWVuZCAo KQorICAiRGV0ZXJtaW5lIHRhc2tiYXIgaG9zdCBzeXN0ZW0gdHlwZS4iCisgIDs7IE9yZGVyIG1h dHRlcnMgdG8gYWNjb21tb2RhdGUgdGhlIGNhc2VzIHdoZXJlIGFuIE5TIG9yIE1TLVdpbmRvd3MK KyAgOzsgYnVpbGQgaGF2ZSB0aGUgZGJ1cyBmZWF0dXJlLgorICAoc2V0cSBzeXN0ZW0tdGFza2Jh ci0tYmFjay1lbmQKKyAgICAgICAgKGNvbmQgKChib3VuZHAgJ25zLXZlcnNpb24tc3RyaW5nKSAn bnMpCisgICAgICAgICAgICAgICh3MzItaW5pdGlhbGl6ZWQgJ3czMikKKyAgICAgICAgICAgICAg KChhbmQgKGZlYXR1cmVwICdkYnVzYmluZCkKKyAgICAgICAgICAgICAgICAgICAgKG1lbWJlciAi b3JnLmZyZWVkZXNrdG9wLmxvZ2luMSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGJ1 cy1saXN0LWFjdGl2YXRhYmxlLW5hbWVzIDpzeXN0ZW0pKSkKKyAgICAgICAgICAgICAgICdkYnVz KQorICAgICAgICAgICAgICAodCBuaWwpKSkpCisKKyhjbC1kZWZnZW5lcmljIHN5c3RlbS10YXNr YmFyLS1lbmFibGUgKCkKKyAgIkVuYWJsZSB0aGUgc3lzdGVtLXRhc2tiYXIgYmFjayBlbmQuIikK KworKGNsLWRlZmdlbmVyaWMgc3lzdGVtLXRhc2tiYXItLWRpc2FibGUgKCkKKyAgIkRpc2FibGUg dGhlIHN5c3RlbS10YXNrYmFyIGJhY2sgZW5kLiIpCisKKyhjbC1kZWZnZW5lcmljIHN5c3RlbS10 YXNrYmFyLS1iYWRnZSAoJm9wdGlvbmFsIGNvdW50KQorICAiRGlzcGxheSBDT1VOVCBhcyBhbiBv dmVybGF5IG9uIHRoZSBzeXN0ZW0gdGFza2JhciBFbWFjcyBpY29uLgorSWYgQ09VTlQgaXMgYW4g aW50ZWdlciwgZGlzcGxheSB0aGF0LgorSWYgQ09VTlQgaXMgYSBzdHJpbmcgb24gYmFjayBlbmRz IHRoYXQgc3VwcG9ydCBzdHJpbmdzLCBkaXNwbGF5IHRoYXQuCitUaGUgc3RyaW5nIHNob3VsZCBi ZSBzaG9ydC4KK09uIGJhY2sgZW5kcyB3aGljaCBkbyBub3Qgc3VwcG9ydCBzdHJpbmdzLCBjb252 ZXJ0IENPVU5UIHRvIGFuIGludGVnZXIKK3VzaW5nIGBzdHJpbmctdG8tbnVtYmVyJyBhbmQgdGVz dGluZyBgaW50ZWdlcnAnLCBvciBuaWwgaWYgdGhhdCBmYWlscy4KK0lmIENPVU5UIGlzIG5pbCBv ciBhbiBlbXB0eSBzdHJpbmcsIHJlbW92ZSB0aGUgY291bnRlci4iKQorCisoY2wtZGVmZ2VuZXJp YyBzeXN0ZW0tdGFza2Jhci0tYXR0ZW50aW9uICgmb3B0aW9uYWwgdXJnZW5jeSB0aW1lb3V0KQor ICAiRmxhc2ggdGhlIHN5c3RlbSB0YXNrYmFyIGljb24gYW5kL29yIGZyYW1lIHRvIGFsZXJ0IHRo ZSB1c2VyLgorVVJHRU5DWSBjYW4gYmUgb25lIG9mIHRoZSBzeW1ib2xzIGBpbmZvcm1hdGlvbmFs Jywgb3IgYGNyaXRpY2FsJy4KK0lmIFVSR0VOQ1kgaXMgbmlsLCBjbGVhciB0aGUgYXR0ZW50aW9u IGluZGljYXRvci4KKworVGhlIGF0dGVudGlvbiBpbmRpY2F0b3IgaXMgY2xlYXJlZCBieSB0aGUg ZWFybGllc3Qgb2YgYnJpbmdpbmcgdGhlIEVtYWNzCitHVUkgaW50byBmb2N1cywgb3IgYWZ0ZXIg VElNRU9VVCBzZWNvbmRzLiAgSWYgVElNRU9VVCBpcyBuaWwsIHRoZSBzeXN0ZW0KK0dVSSBiZWhh dmlvciBoYXMgcHJpb3JpdHkuCisKK09uIHNvbWUgYmFjayBlbmRzLCBgY3JpdGljYWwnIGhhcyB0 aGUgc2FtZSBlZmZlY3QgYXMgYGluZm9ybWF0aW9uYWwnLgorCitPbiBzb21lIGJhY2sgZW5kcywg YXR0ZW50aW9uIHdpbGwgYmUgZGlzcGxheWVkIG9ubHkgaWYgRW1hY3MgaXMgbm90IHRoZQorY3Vy cmVudGx5IGZvY3VzZWQgYXBwbGljYXRpb24uIikKKworKGNsLWRlZmdlbmVyaWMgc3lzdGVtLXRh c2tiYXItLXByb2dyZXNzICgmb3B0aW9uYWwgcHJvZ3Jlc3MpCisgICJEaXNwbGF5IGEgcHJvZ3Jl c3MgaW5kaWNhdG9yIG92ZXJsYXkgb24gdGhlIHN5c3RlbSB0YXNrYmFyIGljb24uCitQUk9HUkVT UyBpcyBhIGZsb2F0IGluIHRoZSByYW5nZSAwLjAgdG8gMS4wLgorSWYgUFJPR1JFU1MgaXMgbmls LCByZW1vdmUgdGhlIHByb2dyZXNzIGluZGljYXRvci4iKQorCisoZGVmdW4gc3lzdGVtLXRhc2ti YXItLXZhbGlkYXRlLXByb2dyZXNzIChwcm9ncmVzcykKKyAgIlJldHVybiBQUk9HUkVTUyBhcyBh IGZsb2F0IGluIHRoZSByYW5nZSAwLjAgdG8gMS4wLCBvciBuaWwuIgorICAod2hlbiAobmF0bnVt cCBwcm9ncmVzcykKKyAgICAoc2V0cSBwcm9ncmVzcyAoZmxvYXQgcHJvZ3Jlc3MpKSkKKyAgKHdo ZW4gKGFuZCBwcm9ncmVzcyAoPj0gcHJvZ3Jlc3MgMC4wKSAoPD0gcHJvZ3Jlc3MgMS4wKSkKKyAg ICBwcm9ncmVzcykpCisKKwwKKzs7IGBwcm9ncmVzcy1yZXBvcnRlcicgc3VwcG9ydC4KKworKGRl ZnVuIHN5c3RlbS10YXNrYmFyLS1wcm9ncmVzcy1yZXBvcnRlci11cGRhdGUgKF9yZXBvcnRlciBz dGF0ZSkKKyAgIlByb2dyZXNzIHJlcG9ydGVyIHN5c3RlbS10YXNrYmFyIHVwZGF0ZSBmdW5jdGlv bi4KK1JFUE9SVEVSIGFuZCBTVEFURSBhcmUgdGhlIHNhbWUgYXMgaW4KK2Bwcm9ncmVzcy1yZXBv cnRlci11cGRhdGUtZnVuY3Rpb25zYC4iCisgICh3aGVuIHN5c3RlbS10YXNrYmFyLW1vZGUKKyAg ICAocGNhc2Ugc3RhdGUKKyAgICAgICgocHJlZCBmbG9hdHApCisgICAgICAgKHN5c3RlbS10YXNr YmFyLS1wcm9ncmVzcyBzdGF0ZSkpCisgICAgICAoKHByZWQgaW50ZWdlcnApCisgICAgICAgKHN5 c3RlbS10YXNrYmFyLS1wcm9ncmVzcyAoLyAoMSsgc3RhdGUpIDQuMCkpKQorICAgICAgKCdkb25l CisgICAgICAgKHN5c3RlbS10YXNrYmFyLS1wcm9ncmVzcyBuaWwpKSkpKQorCisMCis7OyBELUJ1 cyBzdXBwb3J0LgorCisoZGVmY29uc3Qgc3lzdGVtLXRhc2tiYXItLWRidXMtc2VydmljZSAiY29t LmNhbm9uaWNhbC5Vbml0eSIpCisoZGVmY29uc3Qgc3lzdGVtLXRhc2tiYXItLWRidXMtaW50ZXJm YWNlICJjb20uY2Fub25pY2FsLlVuaXR5LkxhdW5jaGVyRW50cnkiKQorCisoZGVmdmFyIHN5c3Rl bS10YXNrYmFyLS1kYnVzLWF0dGVudGlvbiBuaWwKKyAgIk5vbi1uaWwgd2hlbiBhdHRlbnRpb24g aXMgcmVxdWVzdGVkLiIpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1zZW5kLXNpZ25h bCAobWVzc2FnZSkKKyAgIlNlbmQgTUVTU0FHRSB0byB0aGUgRC1CdXMgc3lzdGVtIHRhc2tiYXIg c2VydmljZS4iCisgIChsZXQgKChhcHAtdXJpCisgICAgICAgICAoZm9ybWF0ICJhcHBsaWNhdGlv bjovLyVzLmRlc2t0b3AiCisgICAgICAgICAgICAgICAgIHN5c3RlbS10YXNrYmFyLWRidXMtZGVz a3RvcC1maWxlLW5hbWUpKSkKKyAgICAoZGJ1cy1zZW5kLXNpZ25hbAorICAgICA6c2Vzc2lvbgor ICAgICBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1zZXJ2aWNlCisgICAgICIvIgorICAgICBzeXN0ZW0t dGFza2Jhci0tZGJ1cy1pbnRlcmZhY2UKKyAgICAgIlVwZGF0ZSIKKyAgICAgYXBwLXVyaQorICAg ICBtZXNzYWdlKSkpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1jbGVhci1hdHRlbnRp b24tb24tZnJhbWUtZm9jdXMgKCkKKyAgIkNsZWFyIGFuIGFjdGl2ZSBELUJ1cyBhdHRlbnRpb24g cmVxdWVzdCBpZiBhbnkgZnJhbWUgaXMgZm9jdXNlZC4iCisgICh3aGVuIChhbmQgc3lzdGVtLXRh c2tiYXItLWRidXMtYXR0ZW50aW9uCisgICAgICAgICAgICAgKGNhdGNoIDpjbGVhcgorICAgICAg ICAgICAgICAgKGRvbGlzdCAoZnJhbWUgKGZyYW1lLWxpc3QpKQorICAgICAgICAgICAgICAgICAo d2hlbiAoZXEgKGZyYW1lLWZvY3VzLXN0YXRlIGZyYW1lKSB0KQorICAgICAgICAgICAgICAgICAg ICh0aHJvdyA6Y2xlYXIgdCkpKSkpCisgICAgKHN5c3RlbS10YXNrYmFyLWF0dGVudGlvbiBuaWwp KSkKKworKGRlZnVuIHN5c3RlbS10YXNrYmFyLWRidXMtcGluZy1zZXJ2aWNlICgpCisgICJSZXR1 cm4gbm9uLW5pbCBpZiBgc3lzdGVtLXRhc2tiYXItLWRidXMtc2VydmljZScgcmVzcG9uZHMuCitS ZXR1cm4gbmlsIGlmIG5vIHJlc3BvbnNlIHdpdGhpbiBgc3lzdGVtLXRhc2tiYXItZGJ1cy10aW1l b3V0Jy4iCisgIChkYnVzLXBpbmcKKyAgIDpzZXNzaW9uCisgICBzeXN0ZW0tdGFza2Jhci0tZGJ1 cy1zZXJ2aWNlCisgICBzeXN0ZW0tdGFza2Jhci1kYnVzLXRpbWVvdXQpKQorCisoY2wtZGVmbWV0 aG9kIHN5c3RlbS10YXNrYmFyLS1lbmFibGUgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAnZGJ1cykp KQorICAodW5sZXNzIChzeXN0ZW0tdGFza2Jhci1kYnVzLXBpbmctc2VydmljZSkKKyAgICAoZXJy b3IgIkQtQnVzIHNlcnZpY2UgYCVzJyB1bmF2YWlsYWJsZSIgc3lzdGVtLXRhc2tiYXItLWRidXMt c2VydmljZSkpCisgICh3aGVuIHN5c3RlbS10YXNrYmFyLWNsZWFyLWF0dGVudGlvbi1vbi1mcmFt ZS1mb2N1cworICAgIChhZGQtZnVuY3Rpb24gOmFmdGVyIGFmdGVyLWZvY3VzLWNoYW5nZS1mdW5j dGlvbgorICAgICAgICAgICAgICAgICAgIydzeXN0ZW0tdGFza2Jhci0tZGJ1cy1jbGVhci1hdHRl bnRpb24tb24tZnJhbWUtZm9jdXMpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0t ZGlzYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAnZGJ1cykpKQorICAocmVtb3ZlLWZ1bmN0 aW9uIGFmdGVyLWZvY3VzLWNoYW5nZS1mdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICMnc3lz dGVtLXRhc2tiYXItLWRidXMtY2xlYXItYXR0ZW50aW9uLW9uLWZyYW1lLWZvY3VzKSkKKworKGNs LWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tYmFkZ2UgKCZjb250ZXh0CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICdk YnVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgY291 bnQpCisgICJEaXNwbGF5IENPVU5UIGFzIGFuIG92ZXJsYXkgb24gdGhlIHN5c3RlbSB0YXNrYmFy IEVtYWNzIGljb24uCitJZiBDT1VOVCBpcyBhbiBpbnRlZ2VyLCBkaXNwbGF5IHRoYXQuICBJZiBD T1VOVCBpcyBhIHN0cmluZywgY29udmVydCBpdAordG8gYW4gaW50ZWdlciwgb3IgbmlsIGlmIHRo YXQgZmFpbHMuICBJZiBDT1VOVCBpcyBhbnkgb3RoZXIgdHlwZSwgdXNlCituaWwuICBJZiBDT1VO VCBpcyBuaWwgb3IgYW4gZW1wdHkgc3RyaW5nLCByZW1vdmUgdGhlIGJhZGdlLgorTm90ZTogVGhl IFVuaXR5IEQtQnVzIHByb3RvY29sIHN1cHBvcnRzIG9ubHkgaW50ZWdlciBiYWRnZXMuIgorICAo Y29uZCAoKHN0cmluZ3AgY291bnQpCisgICAgICAgICAoaWYgKHN0cmluZy1lbXB0eS1wIGNvdW50 KQorICAgICAgICAgICAgIChzZXRxIGNvdW50IG5pbCkKKyAgICAgICAgICAgKGxldCAoKGNvdW50 LTEgKHN0cmluZy10by1udW1iZXIgY291bnQpKSkKKyAgICAgICAgICAgICAoc2V0cSBjb3VudCAo aWYgKGludGVnZXJwIGNvdW50LTEpIGNvdW50LTEgbmlsKSkpKSkKKyAgICAgICAgKChub3QgKGlu dGVnZXJwIGNvdW50KSkKKyAgICAgICAgIChzZXRxIGNvdW50IG5pbCkpKQorICAoc3lzdGVtLXRh c2tiYXItLWRidXMtc2VuZC1zaWduYWwKKyAgIGAoKDpkaWN0LWVudHJ5ICJjb3VudC12aXNpYmxl IgorICAgICAgICAgICAgICAgICAgKDp2YXJpYW50IDpib29sZWFuICwobm90IChudWxsIGNvdW50 KSkpKQorICAgICAoOmRpY3QtZW50cnkgImNvdW50IgorICAgICAgICAgICAgICAgICAgKDp2YXJp YW50IDp1aW50MzIgLChpZiAobnVsbCBjb3VudCkgMAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY291bnQpKSkpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jh ci0tYXR0ZW50aW9uICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ2RidXMpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgdXJnZW5jeSB0aW1lb3V0 KQorICAiUmVxdWVzdCBVUkdFTkNZIHVzZXIgYXR0ZW50aW9uIG9uIHRoZSBzeXN0ZW0gdGFza2Jh ciBFbWFjcyBpY29uLgorVGhlIHJlcXVlc3Qgd2lsbCB0aW1lIG91dCB3aXRoaW4gdGhlIFRJTUVP VVQgc2Vjb25kcyBpbnRlcnZhbC4KK1RoZSBVbml0eSBELUJ1cyBwcm90b2NvbCBkb2VzIG5vdCBz dXBwb3J0IGRpZmZlcmVudGlhdGVkIHVyZ2VuY2llcy4iCisgIChzZXRxIHN5c3RlbS10YXNrYmFy LS1kYnVzLWF0dGVudGlvbiB1cmdlbmN5KQorICAoc3lzdGVtLXRhc2tiYXItLWRidXMtc2VuZC1z aWduYWwKKyAgIGAoKDpkaWN0LWVudHJ5ICJ1cmdlbnQiCisgICAgICAgICAgICAgICAgICAoOnZh cmlhbnQgOmJvb2xlYW4gLChub3QgKG51bGwgdXJnZW5jeSkpKSkpKQorICAod2hlbiAoYW5kIHVy Z2VuY3kgdGltZW91dCkKKyAgICAocnVuLXdpdGgtdGltZXIKKyAgICAgdGltZW91dAorICAgICBu aWwKKyAgICAgIydzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gbmlsKSkpCisKKyhjbC1kZWZtZXRo b2Qgc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzICgmY29udGV4dAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAnZGJ1 cykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbmFsIHBy b2dyZXNzKQorICAiRGlzcGxheSBhIHByb2dyZXNzIGJhciBvdmVybGF5IG9uIHRoZSBzeXN0ZW0g dGFza2JhciBpY29uLgorUFJPR1JFU1MgaXMgYSBmbG9hdCBpbiB0aGUgcmFuZ2UgMC4wIHRvIDEu MC4KK0lmIFBST0dSRVNTIGlzIG5pbCwgcmVtb3ZlIHRoZSBwcm9ncmVzcyBiYXIuIgorICAoc2V0 cSBwcm9ncmVzcyAoc3lzdGVtLXRhc2tiYXItLXZhbGlkYXRlLXByb2dyZXNzIHByb2dyZXNzKSkK KyAgKHN5c3RlbS10YXNrYmFyLS1kYnVzLXNlbmQtc2lnbmFsCisgICBgKCg6ZGljdC1lbnRyeSAi cHJvZ3Jlc3MtdmlzaWJsZSIKKyAgICAgICAgICAgICAgICAgICg6dmFyaWFudCA6Ym9vbGVhbiAs KG5vdCAobnVsbCBwcm9ncmVzcykpKSkKKyAgICAgKDpkaWN0LWVudHJ5ICJwcm9ncmVzcyIKKyAg ICAgICAgICAgICAgICAgICg6dmFyaWFudCA6ZG91YmxlICwoaWYgKG51bGwgcHJvZ3Jlc3MpIDAg cHJvZ3Jlc3MpKSkpKSkKKworDAorOzsgbWFjT1MvR05Vc3RlcCBOUyBzdXBwb3J0LgorCisoZGVj bGFyZS1mdW5jdGlvbiBucy1iYWRnZSAibnNmbnMubSIpCisoZGVjbGFyZS1mdW5jdGlvbiBucy1y ZXF1ZXN0LXVzZXItYXR0ZW50aW9uICJuc2Zucy5tIikKKyhkZWNsYXJlLWZ1bmN0aW9uIG5zLXBy b2dyZXNzLWluZGljYXRvciAibnNmbnMubSIpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2ti YXItLWVuYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICducykpKQorICAoaWdub3JlKSkKKwor KGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tZGlzYWJsZSAoJmNvbnRleHQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQg KGVxbCAnbnMpKSkKKyAgKGlnbm9yZSkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXIt LWJhZGdlICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz eXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAnbnMpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZvcHRpb25hbCBjb3VudCkKKyAgIkRpc3BsYXkgQ09VTlQgYXMgYW4g b3ZlcmxheSBvbiB0aGUgRG9jayBiYWRnZS4KK0lmIENPVU5UIGlzIGFuIGludGVnZXIgb3IgYSBu b24tZW1wdHkgc3RyaW5nLCBkaXNwbGF5IHRoYXQuICBJZiBDT1VOVCBpcworbmlsIG9yIGFuIGVt cHR5IHN0cmluZywgY2xlYXIgdGhlIGJhZGdlIG92ZXJsYXkuCitOb3RlOiBOUyB3aWxsIGFiYnJl dmlhdGUgbG9uZyBzdHJpbmdzIHRvIGZpdCB0aGUgYmFkZ2UncyBhbGxvY2F0ZWQKK3NwYWNlLiIK KyAgKGNvbmQgKChzdHJpbmdwIGNvdW50KQorICAgICAgICAgKHdoZW4gKHN0cmluZy1lbXB0eS1w IGNvdW50KQorICAgICAgICAgICAoc2V0cSBjb3VudCBuaWwpKSkKKyAgICAgICAgKChpbnRlZ2Vy cCBjb3VudCkKKyAgICAgICAgIChzZXRxIGNvdW50IChudW1iZXItdG8tc3RyaW5nIGNvdW50KSkp CisgICAgICAgICh0IChzZXRxIGNvdW50IG5pbCkpKQorICAobnMtYmFkZ2UgY291bnQpKQorCiso Y2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFyLS1hdHRlbnRpb24gKCZjb250ZXh0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1l bmQgKGVxbCAnbnMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm b3B0aW9uYWwgdXJnZW5jeSB0aW1lb3V0KQorICAiUmVxdWVzdCBVUkdFTkNZIHVzZXIgYXR0ZW50 aW9uIG9uIHRoZSBEb2NrLgorVGhlIGF0dGVudGlvbiBpbmRpY2F0b3Igd2lsbCBiZSBjbGVhcmVk IGFmdGVyIFRJTUVPVVQgc2Vjb25kcy4iCisgIChucy1yZXF1ZXN0LXVzZXItYXR0ZW50aW9uIHVy Z2VuY3kpCisgICh3aGVuIChhbmQgdXJnZW5jeSB0aW1lb3V0KQorICAgIChydW4td2l0aC10aW1l cgorICAgICB0aW1lb3V0CisgICAgIG5pbAorICAgICAjJ3N5c3RlbS10YXNrYmFyLWF0dGVudGlv biBuaWwpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tcHJvZ3Jlc3MgKCZjb250 ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNr YmFyLS1iYWNrLWVuZCAoZXFsICducykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJm9wdGlvbmFsIHByb2dyZXNzKQorICAiRGlzcGxheSBhIHByb2dyZXNzIGJhciBv dmVybGF5IG9uIHRoZSBEb2NrIGFuZCBBcHAgU3dpdGNoZXIuCitQUk9HUkVTUyBpcyBhIGZsb2F0 IGluIHRoZSByYW5nZSAwLjAgdG8gMS4wLgorSWYgUFJPR1JFU1MgaXMgbmlsLCByZW1vdmUgdGhl IHByb2dyZXNzIGJhci4iCisgIChucy1wcm9ncmVzcy1pbmRpY2F0b3IgKHN5c3RlbS10YXNrYmFy LS12YWxpZGF0ZS1wcm9ncmVzcyBwcm9ncmVzcykpKQorCisMCis7OyBNUy1XaW5kb3dzIHN1cHBv cnQuCisKKyhkZWNsYXJlLWZ1bmN0aW9uIHczMi1iYWRnZSAidzMyZm5zLmMiKQorKGRlY2xhcmUt ZnVuY3Rpb24gdzMyLXJlcXVlc3QtdXNlci1hdHRlbnRpb24gInczMmZucy5jIikKKyhkZWNsYXJl LWZ1bmN0aW9uIHczMi1wcm9ncmVzcy1pbmRpY2F0b3IgInczMmZucy5jIikKKworKGRlZnZhciBz eXN0ZW0tdGFza2Jhci13MzItYmFkZ2UtYmFja2dyb3VuZCAiI2U3NTg1NyIgOyByZWRpc2gKKyAg InczMiBiYWRnZSBiYWNrZ3JvdW5kIFJHQiB0cmlwbGUgc3RyaW5nLiIpCisKKyhkZWZ2YXIgc3lz dGVtLXRhc2tiYXItdzMyLWJhZGdlLWZvcmVncm91bmQgIiNmZmZmZmYiIDsgd2hpdGUKKyAgIncz MiBiYWRnZSBmb3JlZ3JvdW5kIFJHQiB0cmlwbGUgc3RyaW5nLiIpCisKKyhkZWZ1biBzeXN0ZW0t dGFza2Jhci0tdzMyLWNsZWFyLWZyYW1lLWluZGljYXRvcnMgKGZyYW1lKQorICA7OyBOT1RFOiBV cGRhdGUgdGhlIGJlbG93IGlmIGFkZGluZyBuZXcgdzMyIHN5c3RlbS10YXNrYmFyIGZ1bmN0aW9u cy4KKyAgKHdpdGgtc2VsZWN0ZWQtZnJhbWUgZnJhbWUKKyAgICAoc3lzdGVtLXRhc2tiYXItYmFk Z2UgbmlsKQorICAgIChzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gbmlsKQorICAgIChzeXN0ZW0t dGFza2Jhci1wcm9ncmVzcyBuaWwpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0t ZW5hYmxlICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo c3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ3czMikpKQorICA7OyBDbGVhciBzeXN0ZW0t dGFza2JhciBpbmRpY2F0b3JzIGZvciBhIGZyYW1lIHdoZW4gaXQgaXMgZGVsZXRlZC4KKyAgKGFk ZC1ob29rICdkZWxldGUtZnJhbWUtZnVuY3Rpb25zCisgICAgICAgICAgICAjJ3N5c3RlbS10YXNr YmFyLS13MzItY2xlYXItZnJhbWUtaW5kaWNhdG9ycykpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVt LXRhc2tiYXItLWRpc2FibGUgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ3czMikpKQorICAocmVt b3ZlLWhvb2sgJ2RlbGV0ZS1mcmFtZS1mdW5jdGlvbnMKKyAgICAgICAgICAgICAgICMnc3lzdGVt LXRhc2tiYXItLXczMi1jbGVhci1mcmFtZS1pbmRpY2F0b3JzKSkKKworKGNsLWRlZm1ldGhvZCBz eXN0ZW0tdGFza2Jhci0tYmFkZ2UgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICd3MzIpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCBjb3VudCkKKyAgIkRpc3Bs YXkgYSBDT1VOVCBvdmVybGF5IG9uIHRoZSBzeXN0ZW0gdGFza2JhciBpY29uLgorVGhlIHRhc2ti YXIgaWNvbiB0YXJnZXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZWxlY3RlZCBmcmFtZS4KKwor SWYgQ09VTlQgaXMgYW4gaW50ZWdlciBvciBhIG5vbi1lbXB0eSBzdHJpbmcsIGRpc3BsYXkgdGhh dC4gIElmIENPVU5UIGlzCituaWwgb3IgYW4gZW1wdHkgc3RyaW5nLCBjbGVhciB0aGUgYmFkZ2Uu CisKK0R1ZSB0byBNUy1XaW5kb3dzIGljb24gb3ZlcmxheSBzaXplIGxpbWl0YXRpb25zLCBpZiBD T1VOVCBpcyBhbiBpbnRlZ2VyCithbmQgaXMgb3V0c2lkZSB0aGUgcmFuZ2UgLTk5IHRvIDk5LCBk aXNwbGF5IFwiLTk5XCIgYW5kIFwiOTkrXCIsCityZXNwZWN0aXZlbHksIGlmIENPVU5UIGlzIGEg c3RyaW5nIGxvbmdlciB0aGFuIDIgY2hhcmFjdGVycyB0cnVuY2F0ZSBpdAordXNpbmcgYHRydW5j YXRlLXN0cmluZy10by13aWR0aGAuCisKK0NvbnN1bHQgYHN5c3RlbS10YXNrYmFyLXczMi1iYWRn ZS1iYWNrZ3JvdW5kYCBhbmQKK2BzeXN0ZW0tdGFza2Jhci13MzItYmFkZ2UtZm9yZWdyb3VuZGAg Zm9yIHRoZSBiYWNrZ3JvdW5kIGFuZCBmb3JlZ3JvdW5kCitjb2xvcnMgZm9yIHRoZSBwYWludGVk IG92ZXJsYXkuIgorICAoY29uZCAoKHN0cmluZ3AgY291bnQpCisgICAgICAgICAoaWYgKHN0cmlu Zy1lbXB0eS1wIGNvdW50KQorICAgICAgICAgICAgIChzZXRxIGNvdW50IG5pbCkKKyAgICAgICAg ICAgKHdoZW4gKGxlbmd0aD4gY291bnQgMikKKyAgICAgICAgICAgICAoc2V0cSBjb3VudCAodHJ1 bmNhdGUtc3RyaW5nLXRvLXdpZHRoIGNvdW50IDMgMCBuaWwgdCkpKSkpCisgICAgICAgICgoaW50 ZWdlcnAgY291bnQpCisgICAgICAgICAoaWYgKGFuZCAoPiBjb3VudCAtMTAwKQorICAgICAgICAg ICAgICAgICAgKDwgY291bnQgMTAwKSkKKyAgICAgICAgICAgICAoc2V0cSBjb3VudCAobnVtYmVy LXRvLXN0cmluZyBjb3VudCkpCisgICAgICAgICAgIChpZiAoPCBjb3VudCAwKQorICAgICAgICAg ICAgICAgKHNldHEgY291bnQgIi05OSIpCisgICAgICAgICAgICAgKHNldHEgY291bnQgIjk5KyIp KSkpCisgICAgICAgICh0IChzZXRxIGNvdW50IG5pbCkpKQorICAodzMyLWJhZGdlIGNvdW50Cisg ICAgICAgICAgICAgc3lzdGVtLXRhc2tiYXItdzMyLWJhZGdlLWJhY2tncm91bmQKKyAgICAgICAg ICAgICBzeXN0ZW0tdGFza2Jhci13MzItYmFkZ2UtZm9yZWdyb3VuZCkpCisKKyhjbC1kZWZtZXRo b2Qgc3lzdGVtLXRhc2tiYXItLWF0dGVudGlvbiAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICd3 MzIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwg dXJnZW5jeSB0aW1lb3V0KQorICAiUmVxdWVzdCBVUkdFTkNZIHVzZXIgYXR0ZW50aW9uIG9uIHRo ZSBzeXN0ZW0gdGFza2JhciBpY29uLgorSW5kaWNhdGUgdGhlIGljb24gYXNzb2NpYXRlZCB3aXRo IHRoZSBzZWxlY3RlZCBmcmFtZS4KK0lmIFVSR0VOQ1kgaXMgdGhlIHN5bWJvbCBgaW5mb3JtYXRp b25hbCcsIGZsYXNoIHRoZSB0YXNrYmFyIGljb24uCitJZiBVUkdFTkNZIGlzIHRoZSBzeW1ib2wg YGNyaXRpY2FsJywgZmxhc2ggdGhlIHRhc2tiYXIgaWNvbiBhbmQgdGhlCitNUy1XaW5kb3dzIHdp bmRvdyBmcmFtZS4KK0NsZWFyIGF0dGVudGlvbiBpbmRpY2F0b3IgYWZ0ZXIgVElNRU9VVCBzZWNv bmRzLiAgSWYgVElNRU9VVCBpcyBuaWwsCitkZWZhdWx0IHRvIE1TLVdpbmRvd3MgZGVmYXVsdCBi ZWhhdmlvci4iCisgICh3MzItcmVxdWVzdC11c2VyLWF0dGVudGlvbiB1cmdlbmN5KQorICAod2hl biAoYW5kIHVyZ2VuY3kgdGltZW91dCkKKyAgICAocnVuLXdpdGgtdGltZXIKKyAgICAgdGltZW91 dAorICAgICBuaWwKKyAgICAgIydzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gbmlsKSkpCisKKyhj bC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzICgmY29udGV4dAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQg KGVxbCAndzMyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0 aW9uYWwgcHJvZ3Jlc3MpCisgICJEaXNwbGF5IGEgcHJvZ3Jlc3MgYmFyIG9uIHRoZSBzeXN0ZW0g dGFza2JhciBpY29uLgorUFJPR1JFU1MgaXMgYSBmbG9hdCBpbiB0aGUgcmFuZ2UgMC4wIHRvIDEu MC4KK0lmIFBST0dSRVNTIGlzIG5pbCwgcmVtb3ZlIHRoZSBwcm9ncmVzcyBiYXIuIgorICAodzMy LXByb2dyZXNzLWluZGljYXRvciAoc3lzdGVtLXRhc2tiYXItLXZhbGlkYXRlLXByb2dyZXNzIHBy b2dyZXNzKSkpCisKKwwKKworKHByb3ZpZGUgJ3N5c3RlbS10YXNrYmFyKQorCis7Ozsgc3lzdGVt LXRhc2tiYXIuZWwgZW5kcyBoZXJlCmRpZmYgLS1naXQgYS9zcmMvbnNmbnMubSBiL3NyYy9uc2Zu cy5tCmluZGV4IDM1MjhjNGFjZDUwLi4xYThmOTVjMTRlZiAxMDA2NDQKLS0tIGEvc3JjL25zZm5z Lm0KKysrIGIvc3JjL25zZm5zLm0KQEAgLTM2NzQsNiArMzY3NCwxMjkgQEAgVGhlIHBvc2l0aW9u IGlzIHJldHVybmVkIGFzIGEgY29ucyBjZWxsIChYIC4gWSkgb2YgdGhlCiAgIHJldHVybiBRbmls OwogfQogCitERUZVTiAoIm5zLWJhZGdlIiwgRm5zX2JhZGdlLCBTbnNfYmFkZ2UsIDEsIDEsIDAs CisgICAgICAgZG9jOiAvKiBTZXQgdGhlIGFwcCBpY29uIGJhZGdlIHRvIEJBREdFLgorQkFER0Ug c2hvdWxkIGJlIGEgc3RyaW5nIHNob3J0IGVub3VnaCB0byBkaXNwbGF5IG5pY2VseSBpbiB0aGUg c2hvcnQKK3NwYWNlIGludGVuZGVkIGZvciBiYWRnZXMuCitJZiBCQURHRSBpcyBuaWwsIGNsZWFy IHRoZSBhcHAgYmFkZ2UuICAqLykKKyAgKExpc3BfT2JqZWN0IGJhZGdlKQoreworICBibG9ja19p bnB1dCAoKTsKKyAgaWYgKE5JTFAgKGJhZGdlKSkKKyAgICBbW05TQXBwIGRvY2tUaWxlXSBzZXRC YWRnZUxhYmVsOiBuaWxdOworICBlbHNlCisgICAgeworICAgICAgQ0hFQ0tfU1RSSU5HIChiYWRn ZSk7CisgICAgICBbW05TQXBwIGRvY2tUaWxlXSBzZXRCYWRnZUxhYmVsOgorCQkJICBbTlNTdHJp bmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6IFNTREFUQSAoYmFkZ2UpXV07CisgICAgfQorICB1bmJs b2NrX2lucHV0ICgpOworICByZXR1cm4gUW5pbDsKK30KKworLyogVXNlIC0xIHRvIGluZGljYXRl IG5vIGFjdGl2ZSByZXF1ZXN0LiAgKi8KK3N0YXRpYyBOU0ludGVnZXIgbnNfcmVxdWVzdF91c2Vy X2F0dGVudGlvbl9pZCA9IC0xOworCitERUZVTiAoIm5zLXJlcXVlc3QtdXNlci1hdHRlbnRpb24i LAorICAgICAgIEZuc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uLAorICAgICAgIFNuc19yZXF1ZXN0 X3VzZXJfYXR0ZW50aW9uLAorICAgICAgIDEsIDEsIDAsCisgICAgICAgZG9jOiAvKiBCb3VuY2Ug dGhlIGFwcCBkb2NrIGljb24gdG8gcmVxdWVzdCB1c2VyIGF0dGVudGlvbi4KK0lmIFVSR0VOQ1kg bmlsLCBjYW5jZWwgdGhlIG91dHN0YW5kaW5nIHJlcXVlc3QsIGlmIGFueS4KK0lmIFVSR0VOQ1kg aXMgdGhlIHN5bWJvbCBgaW5mb3JtYXRpb25hbCcsIGJvdW5jaW5nIGxhc3RzIGEgZmV3IHNlY29u ZHMuCitJZiBVUkdFTkNZIGlzIHRoZSBzeW1ib2wgYGNyaXRpY2FsJywgYm91bmNpbmcgbGFzdHMg dW50aWwgRW1hY3MgaXMKK2ZvY3VzZWQuICAqLykKKyAgKExpc3BfT2JqZWN0IHVyZ2VuY3kpCit7 CisgIGJsb2NrX2lucHV0ICgpOworICBpZiAobnNfcmVxdWVzdF91c2VyX2F0dGVudGlvbl9pZCAh PSAtMSkKKyAgICB7CisgICAgICBbTlNBcHAgY2FuY2VsVXNlckF0dGVudGlvblJlcXVlc3Q6IG5z X3JlcXVlc3RfdXNlcl9hdHRlbnRpb25faWRdOworICAgICAgbnNfcmVxdWVzdF91c2VyX2F0dGVu dGlvbl9pZCA9IC0xOworICAgIH0KKyAgaWYgKCFOSUxQICh1cmdlbmN5KSAmJiBTWU1CT0xQICh1 cmdlbmN5KSkKKyAgICB7CisgICAgICBpZiAoRVEgKHVyZ2VuY3ksIFFpbmZvcm1hdGlvbmFsKSkK Kwluc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uX2lkID0gW05TQXBwIHJlcXVlc3RVc2VyQXR0ZW50 aW9uOgorCQkJCQkJTlNJbmZvcm1hdGlvbmFsUmVxdWVzdF07CisgICAgICBlbHNlIGlmIChFUSAo dXJnZW5jeSwgUWNyaXRpY2FsKSkKKwluc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uX2lkID0gW05T QXBwIHJlcXVlc3RVc2VyQXR0ZW50aW9uOgorCQkJCQkJTlNDcml0aWNhbFJlcXVlc3RdOworICAg IH0KKyAgdW5ibG9ja19pbnB1dCAoKTsKKyAgcmV0dXJuIFFuaWw7Cit9CisKK0RFRlVOICgibnMt cHJvZ3Jlc3MtaW5kaWNhdG9yIiwKKyAgICAgICBGbnNfcHJvZ3Jlc3NfaW5kaWNhdG9yLAorICAg ICAgIFNuc19wcm9ncmVzc19pbmRpY2F0b3IsCisgICAgICAgMSwgMSwgMCwKKyAgICAgICBkb2M6 IC8qIEJvdW5jZSB0aGUgYXBwIGRvY2sgaWNvbiB0byByZXF1ZXN0IHVzZXIgYXR0ZW50aW9uLgor CSAgICAgICBQUk9HUkVTUyBpcyBhIGZsb2F0IGJldHdlZW4gMC4wIGFuZCAxLjAuCisJICAgICAg IElmIFBST0dSRVNTIGlzIG5pbCwgcmVtb3ZlIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IuICAqLykK KyAgKExpc3BfT2JqZWN0IHByb2dyZXNzKQoreworICBibG9ja19pbnB1dCAoKTsKKyAgTlNEb2Nr VGlsZSAqZG9ja190aWxlID0gW05TQXBwIGRvY2tUaWxlXTsKKyAgLyogVXNlIE5TTGV2ZWxJbmRp Y2F0b3Igd2l0aCByZWxpYWJsZSByZWRyYXdzLCBub3QgTlNQcm9ncmVzc0luZGljYXRvci4gICov CisgIE5TTGV2ZWxJbmRpY2F0b3IgKmxldmVsX2luZGljYXRvcjsKKyAgLyogUmV1c2UgdGhlIGlu ZGljYXRvciBzdWJ2aWV3IG9yIGNyZWF0ZSBvbmUuICovCisgIGlmIChkb2NrX3RpbGUuY29udGVu dFZpZXcKKyAgICAgICYmIFtbZG9ja190aWxlLmNvbnRlbnRWaWV3IHN1YnZpZXdzXSBjb3VudF0g PiAwCisgICAgICAmJiBbW1tkb2NrX3RpbGUuY29udGVudFZpZXcgc3Vidmlld3NdIGxhc3RPYmpl Y3RdCisgICAgICAgICAgICAgICAgICAgICAgICBpc0tpbmRPZkNsYXNzOltOU0xldmVsSW5kaWNh dG9yIGNsYXNzXV0pCisgICAgbGV2ZWxfaW5kaWNhdG9yID0KKyAgICAgIChOU0xldmVsSW5kaWNh dG9yICopW1tbZG9ja190aWxlIGNvbnRlbnRWaWV3XSBzdWJ2aWV3c10gbGFzdE9iamVjdF07Cisg ICAgZWxzZQorICAgICAgeworCWlmICghZG9ja190aWxlLmNvbnRlbnRWaWV3KQorCSAgeworCSAg ICBOU0ltYWdlVmlldyogaW1hZ2VfdmlldyA9IFtbTlNJbWFnZVZpZXcgYWxsb2NdIGluaXRdOwor CSAgICBbaW1hZ2VfdmlldyBzZXRJbWFnZTogW05TQXBwIGFwcGxpY2F0aW9uSWNvbkltYWdlXV07 CisJICAgIFtkb2NrX3RpbGUgc2V0Q29udGVudFZpZXc6IGltYWdlX3ZpZXddOworCSAgfQorCS8q IFNldCB3aWR0aCB0byB0aGUgd2lkdGggb2YgdGhlIGFwcGxpY2F0aW9uIGljb24sIGFuZCBoZWln aHQgdG8KKwkgICAlIG9mIHRoZSBpY29uIGhlaWdodCB0byByZXNwZWN0IHNjYWxlZCBpY29ucy4g ICovCisJZmxvYXQgd2lkdGggPSBbW05TQXBwIGFwcGxpY2F0aW9uSWNvbkltYWdlXSBzaXplXS53 aWR0aDsKKwlmbG9hdCBoZWlnaHQgPSAwLjEwICogW1tOU0FwcCBhcHBsaWNhdGlvbkljb25JbWFn ZV0gc2l6ZV0uaGVpZ2h0OworCWxldmVsX2luZGljYXRvciA9CisJICBbW05TTGV2ZWxJbmRpY2F0 b3IgYWxsb2NdIGluaXRXaXRoRnJhbWU6CisJCQkJICAgICAgTlNNYWtlUmVjdCAoMC4wLCAwLjAs CisJCQkJCQkgIHdpZHRoLCBoZWlnaHQpXTsKKwlbbGV2ZWxfaW5kaWNhdG9yIHNldFdhbnRzTGF5 ZXI6IFlFU107IC8qIFBlcmZvcm1hbmNlLiAgKi8KKwlbbGV2ZWxfaW5kaWNhdG9yIHNldEVuYWJs ZWQ6IE5PXTsgLyogSWdub3JlIG1vdXNlIGlucHV0LiAgKi8KKwlbbGV2ZWxfaW5kaWNhdG9yIHNl dExldmVsSW5kaWNhdG9yU3R5bGU6CisJCQkgICBOU0xldmVsSW5kaWNhdG9yU3R5bGVDb250aW51 b3VzQ2FwYWNpdHldOworCS8qIE1hdGNoIE5TUHJvZ3Jlc3NJbmRpY2F0b3IgY29sb3IuICAqLwor CVtsZXZlbF9pbmRpY2F0b3Igc2V0RmlsbENvbG9yOiBbTlNDb2xvciBjb250cm9sQWNjZW50Q29s b3JdXTsKKwlbbGV2ZWxfaW5kaWNhdG9yIHNldE1pblZhbHVlOiAwLjBdOworCVtsZXZlbF9pbmRp Y2F0b3Igc2V0TWF4VmFsdWU6IDEuMF07CisJLyogVGhlIGNvbnRlbnRWaWV3IHRha2VzIG93bmVy c2hpcC4gICovCisJW2RvY2tfdGlsZS5jb250ZW50VmlldyBhZGRTdWJ2aWV3OiBsZXZlbF9pbmRp Y2F0b3JdOworICAgICAgfQorICBkb3VibGUgcHJvZ3Jlc3NfdmFsdWU7CisgIEJPT0wgaGlkZSA9 IChOSUxQIChwcm9ncmVzcykKKwkgICAgICAgfHwgKCFOSUxQIChwcm9ncmVzcykgJiYgIShGTE9B VFAgKHByb2dyZXNzKSkpKTsKKyAgaWYgKCFoaWRlKQorICAgIHsKKyAgICAgIHByb2dyZXNzX3Zh bHVlID0gWEZMT0FUX0RBVEEgKHByb2dyZXNzKTsKKyAgICAgIGhpZGUgPSAocHJvZ3Jlc3NfdmFs dWUgPCAwLjAgfHwgcHJvZ3Jlc3NfdmFsdWUgPiAxLjApOworICAgIH0KKyAgaWYgKGhpZGUpCisg ICAgeworICAgICAgW2xldmVsX2luZGljYXRvciBzZXREb3VibGVWYWx1ZTogMC4wXTsKKyAgICAg IFtsZXZlbF9pbmRpY2F0b3Igc2V0SGlkZGVuOiBZRVNdOworICAgIH0KKyAgZWxzZQorICAgIHsK KyAgICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0RG91YmxlVmFsdWU6IHByb2dyZXNzX3ZhbHVlXTsK KyAgICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0SGlkZGVuOiBOT107CisgICAgfQorICBbZG9ja190 aWxlIGRpc3BsYXldOworICB1bmJsb2NrX2lucHV0ICgpOworICByZXR1cm4gUW5pbDsKK30KKwog I2lmZGVmIE5TX0lNUExfQ09DT0EKIAogREVGVU4gKCJucy1zZW5kLWl0ZW1zIiwKQEAgLTM5NTcs NiArNDA4MCw5IEBAIC0gKExpc3BfT2JqZWN0KWxpc3BTdHJpbmcKICAgZGVmc3ViciAoJlNuc19z ZXRfbW91c2VfYWJzb2x1dGVfcGl4ZWxfcG9zaXRpb24pOwogICBkZWZzdWJyICgmU25zX21vdXNl X2Fic29sdXRlX3BpeGVsX3Bvc2l0aW9uKTsKICAgZGVmc3ViciAoJlNuc19zaG93X2NoYXJhY3Rl cl9wYWxldHRlKTsKKyAgZGVmc3ViciAoJlNuc19iYWRnZSk7CisgIGRlZnN1YnIgKCZTbnNfcmVx dWVzdF91c2VyX2F0dGVudGlvbik7CisgIGRlZnN1YnIgKCZTbnNfcHJvZ3Jlc3NfaW5kaWNhdG9y KTsKICNpZmRlZiBOU19JTVBMX0NPQ09BCiAgIGRlZnN1YnIgKCZTbnNfc2VuZF9pdGVtcyk7CiAj ZW5kaWYKQEAgLTQwMjMsNCArNDE0OSw2IEBAIC0gKExpc3BfT2JqZWN0KWxpc3BTdHJpbmcKICAg REVGU1lNIChRYXNzcV9kZWxldGVfYWxsLCAiYXNzcS1kZWxldGUtYWxsIik7CiAgIERFRlNZTSAo UXJ1bl9hdF90aW1lLCAicnVuLWF0LXRpbWUiKTsKICAgREVGU1lNIChReF9oaWRlX3RpcCwgIngt aGlkZS10aXAiKTsKKyAgREVGU1lNIChRaW5mb3JtYXRpb25hbCwgImluZm9ybWF0aW9uYWwiKTsK KyAgREVGU1lNIChRY3JpdGljYWwsICJjcml0aWNhbCIpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL3cz MmZucy5jIGIvc3JjL3czMmZucy5jCmluZGV4IDY3OWU4MTk3ZmQ4Li4xYTJmYzllODg0MiAxMDA2 NDQKLS0tIGEvc3JjL3czMmZucy5jCisrKyBiL3NyYy93MzJmbnMuYwpAQCAtMzUsNyArMzUsMTIg QEAgI2RlZmluZSBfV0lOMzJfV0lOTlQgMHgwNjAwCiAjaW5jbHVkZSA8Yy1jdHlwZS5oPgogCiAj ZGVmaW5lIENPQkpNQUNST1MgLyogQXNrIGZvciBDIGRlZmluaXRpb25zIGZvciBDT00uICAqLwor I2lmICFkZWZpbmVkIE1JTkdXX1c2NCAmJiAhZGVmaW5lZCBDWUdXSU4KKyMgZGVmaW5lIElOSVRH VUlECisjZW5kaWYKKyNpbmNsdWRlIDxpbml0Z3VpZC5oPgogI2luY2x1ZGUgPHNobG9iai5oPgor I2luY2x1ZGUgPHNob2JqaWRsLmg+CiAjaW5jbHVkZSA8b2xlaWRsLmg+CiAjaW5jbHVkZSA8b2Jq aWRsLmg+CiAjaW5jbHVkZSA8b2xlMi5oPgpAQCAtMjM3LDYgKzI0Miw4IEBAIERFQ0xBUkVfSEFO RExFKEhNT05JVE9SKTsKIHR5cGVkZWYgQk9PTCAoV0lOQVBJICogU2V0R2VzdHVyZUNvbmZpZ19w cm9jKSAoSFdORCwgRFdPUkQsIFVJTlQsCiAJCQkJCSAgICAgICBFbWFjc19QR0VTVFVSRUNPTkZJ RywgVUlOVCk7CiAKK3R5cGVkZWYgQk9PTCAoV0lOQVBJICogRmxhc2hXaW5kb3dFeF9Qcm9jKSAo UEZMQVNIV0lORk8gcGZ3aSk7CisKIHN0YXRpYyBUcmFja01vdXNlRXZlbnRfUHJvYyB0cmFja19t b3VzZV9ldmVudF9mbiA9IE5VTEw7CiBzdGF0aWMgSW1tR2V0Q29tcG9zaXRpb25TdHJpbmdfUHJv YyBnZXRfY29tcG9zaXRpb25fc3RyaW5nX2ZuID0gTlVMTDsKIHN0YXRpYyBJbW1HZXRDb250ZXh0 X1Byb2MgZ2V0X2ltZV9jb250ZXh0X2ZuID0gTlVMTDsKQEAgLTI1OSw2ICsyNjYsNyBAQCBERUNM QVJFX0hBTkRMRShITU9OSVRPUik7CiBzdGF0aWMgV1RTUmVnaXN0ZXJTZXNzaW9uTm90aWZpY2F0 aW9uX1Byb2MgV1RTUmVnaXN0ZXJTZXNzaW9uTm90aWZpY2F0aW9uX2ZuID0gTlVMTDsKIHN0YXRp YyBSZWdpc3RlclRvdWNoV2luZG93X3Byb2MgUmVnaXN0ZXJUb3VjaFdpbmRvd19mbiA9IE5VTEw7 CiBzdGF0aWMgU2V0R2VzdHVyZUNvbmZpZ19wcm9jIFNldEdlc3R1cmVDb25maWdfZm4gPSBOVUxM Oworc3RhdGljIEZsYXNoV2luZG93RXhfUHJvYyBmbGFzaF93aW5kb3dfZXhfZm4gPSBOVUxMOwog CiBleHRlcm4gQXBwZW5kTWVudVdfUHJvYyB1bmljb2RlX2FwcGVuZF9tZW51OwogCkBAIC0xMTAx MCw2ICsxMTAxOCwzMTMgQEAgREVGVU4gKCJ3MzItc3lzdGVtLWlkbGUtdGltZSIsIEZ3MzJfc3lz dGVtX2lkbGVfdGltZSwgU3czMl9zeXN0ZW1faWRsZV90aW1lLAogCiAjZW5kaWYKIAorDAorI2lm ZGVmIFdJTkRPV1NOVAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwkJICAgICBUYXNrYmFyIEluZGljYXRv cnMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBNSU5HV19XNjQKKyAgLyogbWluZ3cub3Jn J3MgTWluR1cgZG9lc24ndCBoYXZlIHRoaXMgc3R1ZmYuICAqLworICBERUZJTkVfR1VJRChDTFNJ RF9UYXNrYmFyTGlzdCwgMHg1NmZkZjM0NCwgMHhmZDZkLCAweDExZDAsIDB4OTUsMHg4YSwgMHgw MCwweDYwLDB4OTcsMHhjOSwweGEwLDB4OTApOworICBERUZJTkVfR1VJRChJSURfSVRhc2tiYXJM aXN0MywgMHhlYTFhZmI5MSwgMHg5ZTI4LCAweDRiODYsIDB4OTAsMHhlOSwgMHg5ZSwweDlmLDB4 OGEsMHg1ZSwweGVmLDB4YWYpOworI2VuZGlmCisKK0RFRlVOICgidzMyLWJhZGdlIiwKKyAgICAg ICBGdzMyX2JhZGdlLAorICAgICAgIFN3MzJfYmFkZ2UsCisgICAgICAgMywgMywgMCwKKyAgICAg ICBkb2M6IC8qIERpc3BsYXkgYSB0YXNrYmFyIGljb24gb3ZlcmxheSBpbWFnZSBvbiB0aGUgc2Vs ZWN0ZWQgZnJhbWUuCitCQURHRSBpcyBhIHN0cmluZy4gIElmIEJBREdFIGlzIG5pbCwgcmVtb3Zl IHRoZSBvdmVybGF5LiAgRG8gbm90aGluZyBpZgorV2luZG93cyBkb2VzIG5vdCBzdXBwb3J0IHRo ZSBJVGFza2Jhckxpc3QzIGludGVyZmFjZSBhbmQgcmV0dXJuIG5pbCwKK290aGVyd2lzZSByZXR1 cm4gdC4gIERvIG5vdGhpbmcgaWYgdGhlIHNlbGVjdGVkIGZyYW1lIGlzIG5vdCAoeWV0KQorYXNz b2NpYXRlZCB3aXRoIGEgd2luZG93IGhhbmRsZS4gIEJBQ0tHUk9VTkQgYW5kIEZPUkVHUk9VTkQg YXJlIFJHQgordHJpcGxldCBzdHJpbmdzIG9mIHRoZSBmb3JtIFwiI1JSR0dCQlwiLiAgKi8pCisg IChMaXNwX09iamVjdCBiYWRnZSwgTGlzcF9PYmplY3QgYmFja2dyb3VuZCwgTGlzcF9PYmplY3Qg Zm9yZWdyb3VuZCkKK3sKKyAgc3RydWN0IGZyYW1lICpzZiA9IFNFTEVDVEVEX0ZSQU1FICgpOwor ICBIV05EIGh3bmQgPSBOVUxMOworCisgIGlmIChGUkFNRV9XMzJfUCAoc2YpICYmIEZSQU1FX0xJ VkVfUCAoc2YpKQorICAgIGh3bmQgPSBGUkFNRV9XMzJfV0lORE9XIChzZik7CisKKyAgaWYgKGh3 bmQgPT0gTlVMTCkKKyAgICByZXR1cm4gUW5pbDsKKworICBDb0luaXRpYWxpemUgKE5VTEwpOwor ICBJVGFza2Jhckxpc3QzICp0YXNrX2Jhcl9saXN0ID0gTlVMTDsKKyAgSFJFU1VMVCByID0gQ29D cmVhdGVJbnN0YW5jZSgmQ0xTSURfVGFza2Jhckxpc3QsCisJCQkgICAgICAgTlVMTCwKKwkJCSAg ICAgICBDTFNDVFhfSU5QUk9DX1NFUlZFUiwKKwkJCSAgICAgICAmSUlEX0lUYXNrYmFyTGlzdDMs CisJCQkgICAgICAgKHZvaWQgKiopJnRhc2tfYmFyX2xpc3QpOworICBpZiAociAhPSBTX09LKQor ICAgIHJldHVybiBRbmlsOworCisgIGlmICghTklMUCAoYmFkZ2UpICYmIFNUUklOR1AgKGJhZGdl KQorICAgICAgJiYgU1RSSU5HUCAoYmFja2dyb3VuZCkgJiYgU1RSSU5HUCAoZm9yZWdyb3VuZCkp CisgICAgeworICAgICAgQ09MT1JSRUYgYmdfcmdiOworICAgICAgQ09MT1JSRUYgZmdfcmdiOwor ICAgICAgdW5zaWduZWQgc2hvcnQgciwgZywgYjsKKyAgICAgIGlmIChwYXJzZV9jb2xvcl9zcGVj IChTU0RBVEEgKGJhY2tncm91bmQpLCAmciwgJmcsICZiKSkKKwliZ19yZ2IgPSBSR0IgKHIsIGIs IGIpOworICAgICAgZWxzZQorCXJldHVybiBRbmlsOworICAgICAgaWYgKHBhcnNlX2NvbG9yX3Nw ZWMgKFNTREFUQSAoZm9yZWdyb3VuZCksICZyLCAmZywgJmIpKQorCWZnX3JnYiA9IFJHQiAociwg YiwgYik7CisgICAgICBlbHNlCisJcmV0dXJuIFFuaWw7CisKKyAgICAgIC8qIFByZXBhcmUgYSBz dHJpbmcgZm9yIGRyYXdpbmcgYW5kIGFzIGFsdC10ZXh0LiAgKi8KKyAgICAgIExpc3BfT2JqZWN0 IGJhZGdlX3V0ZjggPSBFTkNPREVfVVRGXzggKGJhZGdlKTsKKyAgICAgIGludCB3aWRlX2xlbiA9 IHBNdWx0aUJ5dGVUb1dpZGVDaGFyIChDUF9VVEY4LCAwLAorCQkJCQkgICBTU0RBVEEgKGJhZGdl X3V0ZjgpLAorCQkJCQkgICAtMSwgTlVMTCwgMCk7CisgICAgICB3Y2hhcl90ICpiYWRnZV93ID0g YWxsb2NhICgod2lkZV9sZW4gKyAxKSAqIHNpemVvZiAod2NoYXJfdCkpOworICAgICAgcE11bHRp Qnl0ZVRvV2lkZUNoYXIgKENQX1VURjgsIDAsIFNTREFUQSAoYmFkZ2VfdXRmOCksIC0xLAorCQkJ ICAgIChMUFdTVFIpIGJhZGdlX3csCisJCQkgICAgd2lkZV9sZW4pOworCisgICAgICAvKiBVc2Ug dGhlIHNtYWxsIGljb24gc2l6ZSBXaW5kb3dzIHN1Z2dlc3RzIHRvIG5vdCBoYXJkIGNvZGUgMTZ4 MTYuICAqLworICAgICAgaW50IGljb25fd2lkdGggPSBHZXRTeXN0ZW1NZXRyaWNzIChTTV9DWFNN SUNPTik7CisgICAgICBpbnQgaWNvbl9oZWlnaHQgPSBHZXRTeXN0ZW1NZXRyaWNzIChTTV9DWFNN SUNPTik7CisKKyAgICAgIEhEQyBod25kX2RjID0gR2V0REMgKGh3bmQpOworICAgICAgSERDIGRj ID0gQ3JlYXRlQ29tcGF0aWJsZURDIChod25kX2RjKTsKKworICAgICAgQklUTUFQVjVIRUFERVIg Ymk7CisgICAgICBtZW1zZXQgKCZiaSwgMCwgc2l6ZW9mIChiaSkpOworICAgICAgYmkuYlY1U2l6 ZSA9IHNpemVvZiAoYmkpOworICAgICAgYmkuYlY1V2lkdGggPSBpY29uX3dpZHRoOworICAgICAg YmkuYlY1SGVpZ2h0ID0gLWljb25faGVpZ2h0OyAvKiBOZWdhdGl2ZSBmb3IgYSB0b3AtZG93biBE SUIuICAqLworICAgICAgYmkuYlY1UGxhbmVzID0gMTsKKyAgICAgIGJpLmJWNUJpdENvdW50ID0g MzI7CisgICAgICBiaS5iVjVDb21wcmVzc2lvbiA9IEJJX0JJVEZJRUxEUzsgIC8qIEVuYWJsZSB0 aGUgbWFza3MgYmVsb3cuICAqLworICAgICAgYmkuYlY1UmVkTWFzayAgID0gIDB4MDBGRjAwMDA7 CisgICAgICBiaS5iVjVHcmVlbk1hc2sgPSAgMHgwMDAwRkYwMDsKKyAgICAgIGJpLmJWNUJsdWVN YXNrICA9ICAweDAwMDAwMEZGOworICAgICAgYmkuYlY1QWxwaGFNYXNrID0gIDB4RkYwMDAwMDA7 CisKKyAgICAgIERXT1JEICpiaXRtYXBfcGl4ZWxzOworICAgICAgSEJJVE1BUCBiaXRtYXAgPSBD cmVhdGVESUJTZWN0aW9uIChkYywgKEJJVE1BUElORk8gKikgJmJpLAorCQkJCQkgRElCX1JHQl9D T0xPUlMsCisJCQkJCSAodm9pZCAqKikgJmJpdG1hcF9waXhlbHMsCisJCQkJCSBOVUxMLCAwKTsK KyAgICAgIEhHRElPQkogb2xkX2JpdG1hcCA9IFNlbGVjdE9iamVjdChkYywgYml0bWFwKTsKKwor ICAgICAgLyogRHJhdyBhIGNpcmNsZSBmaWxsZWQgd2l0aCBiZy4gICovCisgICAgICBIQlJVU0gg YmdfYnJ1c2ggPSBDcmVhdGVTb2xpZEJydXNoIChiZ19yZ2IpOworICAgICAgSEdESU9CSiBvbGRf YnJ1c2ggPSBTZWxlY3RPYmplY3QgKGRjLCBiZ19icnVzaCk7CisgICAgICBFbGxpcHNlIChkYywg MCwgMCwgaWNvbl93aWR0aCwgaWNvbl9oZWlnaHQpOworICAgICAgU2VsZWN0T2JqZWN0IChkYywg b2xkX2JydXNoKTsKKyAgICAgIERlbGV0ZU9iamVjdCAoYmdfYnJ1c2gpOworCisgICAgICAvKiBE ZXJpdmUgYSBmb250IHNjYWxlZCB0byBmaXQgdGhlIGljb24uICBGaXJzdCBmaW5kIHRoZSBzeXN0 ZW0ncworCSBiYXNlIGZvbnQuICBUaGVuIHNjYWxlIGl0IHRvIGZpdCBpY29uX2hlaWdodC4gICov CisgICAgICBIRk9OVCBiYXNlX2ZvbnQ7CisgICAgICBCT09MIGNsZWFuX3VwX2Jhc2VfZm9udCA9 IEZBTFNFOworICAgICAgaWYgKHN5c3RlbV9wYXJhbWV0ZXJzX2luZm9fd19mbikKKwl7CisJICBO T05DTElFTlRNRVRSSUNTIG5jbTsKKwkgIG1lbXNldCAoJm5jbSwgMCwgc2l6ZW9mIChuY20pKTsK KwkgIG5jbS5jYlNpemUgPSBzaXplb2YgKG5jbSk7CisJICBTeXN0ZW1QYXJhbWV0ZXJzSW5mbyAo U1BJX0dFVE5PTkNMSUVOVE1FVFJJQ1MsIHNpemVvZiAobmNtKSwgJm5jbSwgMCk7CisJICBiYXNl X2ZvbnQgPSBDcmVhdGVGb250SW5kaXJlY3QgKCZuY20ubGZTbUNhcHRpb25Gb250KTsKKwkgIGNs ZWFuX3VwX2Jhc2VfZm9udCA9IFRSVUU7CisJfQorICAgICAgZWxzZQorCWJhc2VfZm9udCA9IChI Rk9OVCkgR2V0U3RvY2tPYmplY3QgKERFRkFVTFRfR1VJX0ZPTlQpOworICAgICAgaWYgKGNsZWFu X3VwX2Jhc2VfZm9udCkKKwlEZWxldGVPYmplY3QgKGJhc2VfZm9udCk7CisKKyAgICAgIExPR0ZP TlQgbGY7CisgICAgICBHZXRPYmplY3QgKGJhc2VfZm9udCwgc2l6ZW9mIChsZiksICZsZik7Cisg ICAgICBsZi5sZldlaWdodCA9IEZXX0JPTEQ7CisgICAgICBsZi5sZk91dFByZWNpc2lvbiA9IE9V VF9PVVRMSU5FX1BSRUNJUzsKKyAgICAgIC8qIENsZWFyVHlwZSBxdWFsaXR5IG5lZWRzIG9wcWF1 ZSwgYnV0IHdlIGRyYXcgdHJhbnNwYXJlbnQuICAqLworICAgICAgbGYubGZRdWFsaXR5ID0gQU5U SUFMSUFTRURfUVVBTElUWTsKKyAgICAgIC8qIE5lZ2F0aXZlIGxmSGVpZ2h0IGluZGljYXRlcyBw aXhlbCB1bml0cyB2cy4gcG9zaXRpdmUgaW4gcG9pbnRzLgorCSBVc2UgdGhlIExPR1BJWEVMU1kg cHgvaW4gb2YgdGhlIHByaW1hcnkgbW9uaXRvci4gICovCisgICAgICBsZi5sZkhlaWdodCA9IC1N dWxEaXYoaWNvbl9oZWlnaHQgLyAyLCAvKiBGaXQgfjMgY2hhcnMuICAqLworCQkJICAgIDcyLAor CQkJICAgIEdldERldmljZUNhcHMgKEdldERDIChOVUxMKSwgTE9HUElYRUxTWSkpOworICAgICAg LyogRW5zdXJlIGxmSGVpZ2h0IHBpeGVsIGludGVycHJldGF0aW9uLiAgKi8KKyAgICAgIGludCBv bGRfbWFwX21vZGUgPSBTZXRNYXBNb2RlIChkYywgTU1fVEVYVCk7CisgICAgICBIRk9OVCBzY2Fs ZWRfZm9udCA9IENyZWF0ZUZvbnRJbmRpcmVjdCAoJmxmKTsKKyAgICAgIEhHRElPQkogb2xkX2Zv bnQgPSBTZWxlY3RPYmplY3QgKGRjLCBzY2FsZWRfZm9udCk7CisgICAgICBTZXRNYXBNb2RlIChk Yywgb2xkX21hcF9tb2RlKTsKKworICAgICAgLyogRHJhdyBiYWRnZSB0ZXh0LiAgKi8KKyAgICAg IFNldEJrTW9kZSAoZGMsIFRSQU5TUEFSRU5UKTsKKyAgICAgIFNldFRleHRDb2xvciAoZGMsIGZn X3JnYik7CisgICAgICBSRUNUIHJlY3Q7CisgICAgICByZWN0LmxlZnQgPSByZWN0LnRvcCA9IDA7 CisgICAgICByZWN0LnJpZ2h0ID0gaWNvbl93aWR0aDsKKyAgICAgIHJlY3QuYm90dG9tID0gaWNv bl9oZWlnaHQ7CisgICAgICBEcmF3VGV4dCAoZGMsIFNTREFUQSAoYmFkZ2VfdXRmOCksCisJCS0x LCAvKiBJbmRpY2F0ZSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLiAgKi8KKwkJJnJlY3QsCisJCURU X0NFTlRFUiB8IERUX1ZDRU5URVIgfCBEVF9TSU5HTEVMSU5FIHwgRFRfTk9DTElQKTsKKyAgICAg IFNlbGVjdE9iamVjdCAoZGMsIG9sZF9mb250KTsKKyAgICAgIERlbGV0ZU9iamVjdCAoc2NhbGVk X2ZvbnQpOworCisgICAgICAvKiBNYWtlIHRoZSBjaXJjbGUgYW5kIGl0cyB0ZXh0IG9wYXF1ZSBi eSBzZXR0aW5nIHRoZSBhbHBoYQorCSBjaGFubmVsIG9uIGVhY2ggcGl4ZWwgZmFsbGluZyB3aXRo aW4gdGhlIGNpcmNsZS4gICovCisgICAgICBpbnQgY2lyY2xlX2NlbnRlcl94ID0gaWNvbl93aWR0 aCAvIDI7CisgICAgICBpbnQgY2lyY2xlX2NlbnRlcl95ID0gaWNvbl9oZWlnaHQgLyAyOworICAg ICAgaW50IGNpcmNsZV9yYWRpdXMgPSAoaWNvbl93aWR0aCA8IGljb25faGVpZ2h0CisJCQkgICA/ IGljb25fd2lkdGgKKwkJCSAgIDogaWNvbl9oZWlnaHQpIC8gMiAtIDI7CisgICAgICBpbnQgY2ly Y2xlX3JhZGl1c19zcSA9IGNpcmNsZV9yYWRpdXMgKiBjaXJjbGVfcmFkaXVzOworICAgICAgRFdP UkQgKnBpeGVsOworICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBpY29uX2hlaWdodDsgKyt5KQor ICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGljb25fd2lkdGg7ICsreCkKKwkgIHsKKyAgICAg ICAgICAgIGludCBkeCA9IHggLSBjaXJjbGVfY2VudGVyX3g7CisgICAgICAgICAgICBpbnQgZHkg PSB5IC0gY2lyY2xlX2NlbnRlcl95OworICAgICAgICAgICAgaWYgKGR4ICogZHggKyBkeSAqIGR5 IDw9IGNpcmNsZV9yYWRpdXNfc3EpCisJICAgICAgeworCQkgIHBpeGVsID0gYml0bWFwX3BpeGVs cyArICh5ICogaWNvbl93aWR0aCArIHgpOworCQkgICpwaXhlbCB8PSAweGZmMDAwMDAwOyAvKiBG bGlwIHRoZSAweEFBUlJHR0JCIGFscGhhIGNoYW5uZWwuICAqLworCSAgICAgIH0KKwkgIH0KKwor ICAgICAgLyogRHVtbXkgbW9ub2Nocm9tZSBiaXRtYXAgbWFzaywgaWdub3JlZCB3aGVuIHRoZSBj b2xvciBiaXRtYXAgaGFzCisJIGFuIGFscGhhIGNoYW5uZWwsIGJ1dCBuZWVkZWQgdG8gc2F0aXNm eSBDcmVhdGVJY29uSW5kaXJlY3QuICAqLworICAgICAgSEJJVE1BUCBtYXNrX2JpdG1hcCA9IENy ZWF0ZUJpdG1hcCAoaWNvbl93aWR0aCwgaWNvbl9oZWlnaHQsIDEsIDEsIE5VTEwpOworCisgICAg ICAvKiBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93aW4zMi9hcGkv d2ludXNlci9uZi13aW51c2VyLWNyZWF0ZWljb25pbmRpcmVjdAorCSBoYm1NYXNrIGFuZCBoYm1D b2xvciBtZW1iZXJzIG9mIHRoZSBJQ09OSU5GTyBzdHJ1Y3R1cmUgc2hvdWxkCisJIG5vdCBhbHJl YWR5IGJlIHNlbGVjdGVkIGludG8gYSBkZXZpY2UgY29udGV4dC4gICovCisgICAgICBTZWxlY3RP YmplY3QgKGRjLCBvbGRfYml0bWFwKTsKKworICAgICAgSUNPTklORk8gaWNvbl9pbmZvOworICAg ICAgbWVtc2V0ICgmaWNvbl9pbmZvLCAwLCBzaXplb2YgKGljb25faW5mbykpOworICAgICAgaWNv bl9pbmZvLmZJY29uID0gVFJVRTsKKyAgICAgIGljb25faW5mby5oYm1NYXNrID0gbWFza19iaXRt YXA7CisgICAgICBpY29uX2luZm8uaGJtQ29sb3IgPSBiaXRtYXA7CisKKyAgICAgIEhJQ09OIGlj b24gPSBDcmVhdGVJY29uSW5kaXJlY3QgKCZpY29uX2luZm8pOworICAgICAgdGFza19iYXJfbGlz dC0+bHBWdGJsLT5TZXRPdmVybGF5SWNvbiAodGFza19iYXJfbGlzdCwgaHduZCwgaWNvbiwgYmFk Z2Vfdyk7CisKKyAgICAgIERlc3Ryb3lJY29uIChpY29uKTsKKyAgICAgIERlbGV0ZU9iamVjdCAo bWFza19iaXRtYXApOworICAgICAgRGVsZXRlT2JqZWN0IChiaXRtYXApOworICAgICAgRGVsZXRl REMgKGRjKTsKKyAgICAgIFJlbGVhc2VEQyAoaHduZCwgaHduZF9kYyk7CisgICAgfQorICBlbHNl CisgICAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5TZXRPdmVybGF5SWNvbiAodGFza19iYXJfbGlz dCwgaHduZCwgTlVMTCwgTlVMTCk7CisKKyAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5SZWxlYXNl KHRhc2tfYmFyX2xpc3QpOworICByZXR1cm4gUXQ7Cit9CisKK0RFRlVOICgidzMyLXJlcXVlc3Qt dXNlci1hdHRlbnRpb24iLAorICAgICAgIEZ3MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbiwKKyAg ICAgICBTdzMyX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24sCisgICAgICAgMSwgMSwgMCwKKyAgICAg ICBkb2M6IC8qIEZsYXNoIHRoZSBzZWxlY3RlZCBmcmFtZSdzIHRhc2tiYXIgaWNvbiBhbmQvb3Ig aXRzIHdpbmRvdy4KK0lmIFVSR0VOQ1kgaXMgbmlsLCBjYW5jZWwgdGhlIHJlcXVlc3QsIGlmIGFu eS4gIElmIFVSR0VOQ1kgaXMgdGhlIHN5bWJvbAorYGluZm9ybWF0aW9uYWwnLCBmbGFzaCB0aGUg dGFza2JhciBpY29uLiAgSWYgVVJHRU5DWSBpcyB0aGUgc3ltYm9sCitgY3JpdGljYWwnLCBmbGFz aCB0aGUgdGFza2JhciBpY29uIGFuZCB0aGUgZnJhbWUuICBXaW5kb3dzIHN0b3BzCitmbGFzaGlu ZyBpZiB0aGUgdXNlciBmb2N1c2VzIHRoZSBmcmFtZS4gIERvIG5vdGhpbmcgaWYgV2luZG93cyBk b2VzIG5vdAorc3VwcG9ydCBGbGFzaFdpbmRvd0V4IGFuZCByZXR1cm4gbmlsLCBvdGhlcndpc2Ug cmV0dXJuIHQuICBEbyBub3RoaW5nIGlmCit0aGUgZnJhbWUgaXMgbm90ICh5ZXQpIGFzc29jaWF0 ZWQgd2l0aCBhIHdpbmRvdyBoYW5kbGUuICAqLykKKyAgKExpc3BfT2JqZWN0IHVyZ2VuY3kpCit7 CisgIGlmIChmbGFzaF93aW5kb3dfZXhfZm4gPT0gTlVMTCkKKyAgICByZXR1cm4gUW5pbDsKKwor ICBzdHJ1Y3QgZnJhbWUgKnNmID0gU0VMRUNURURfRlJBTUUgKCk7CisgIEhXTkQgaHduZCA9IE5V TEw7CisKKyAgaWYgKEZSQU1FX1czMl9QIChzZikgJiYgRlJBTUVfTElWRV9QIChzZikpCisgICAg aHduZCA9IEZSQU1FX1czMl9XSU5ET1cgKHNmKTsKKworICBpZiAoaHduZCA9PSBOVUxMKQorICAg IHJldHVybiBRbmlsOworCisgIEZMQVNIV0lORk8gZmxhc2hfaW5mbzsKKyAgZmxhc2hfaW5mby5j YlNpemUgPSBzaXplb2YoZmxhc2hfaW5mbyk7CisgIGZsYXNoX2luZm8udUNvdW50ID0gMDsKKyAg Zmxhc2hfaW5mby5kd1RpbWVvdXQgPSAwOworICBmbGFzaF9pbmZvLmh3bmQgPSBod25kOworICBp ZiAoIU5JTFAgKHVyZ2VuY3kpICYmIFNZTUJPTFAgKHVyZ2VuY3kpKQorICAgIHsKKyAgICAgIC8q IFRoZSBpbnRlbmRlZCBjYWxsZXIsICdzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24nLCBoYXMgYW4K Kwkgb3B0aW9uYWwgdGltZXIgdG8gY2xlYXIgdGhlIGF0dGVudGlvbiBpbmRpY2F0b3Igc28gdGhp cyB3aWxsCisJIGZsYXNoIHVudGlsIGNsZWFyZWQgdmlhIHRoZSB0aW1lciwgb3IgdGhlIHdpbmRv dyBjb21lcyB0byB0aGUKKwkgZm9yZWdyb3VuZC4gIEZvciBpbmZvcm1hdGlvbmFsIGF0dGVudGlv biwgZmxhc2ggdGhlIHRyYXkgaWNvbi4KKwkgRm9yIGNyaXRpY2FsIGF0dGVudGlvbiwgZmxhc2gg dGhlIHRyYXkgaWNvbiBhbmQgdGhlIHdpbmRvdy4gICovCisgICAgICBpZiAoRVEgKHVyZ2VuY3ks IFFpbmZvcm1hdGlvbmFsKSkKKwlmbGFzaF9pbmZvLmR3RmxhZ3MgPSBGTEFTSFdfVFJBWSB8IEZM QVNIV19USU1FUk5PRkc7CisgICAgICBlbHNlIGlmIChFUSAodXJnZW5jeSwgUWNyaXRpY2FsKSkK KwlmbGFzaF9pbmZvLmR3RmxhZ3MgPSBGTEFTSFdfQUxMIHwgRkxBU0hXX1RJTUVSTk9GRzsKKyAg ICB9CisgIGVsc2UKKyAgICBmbGFzaF9pbmZvLmR3RmxhZ3MgPSBGTEFTSFdfU1RPUDsKKworICBm bGFzaF93aW5kb3dfZXhfZm4gKCZmbGFzaF9pbmZvKTsKKyAgcmV0dXJuIFF0OworfQorCitERUZV TiAoInczMi1wcm9ncmVzcy1pbmRpY2F0b3IiLAorICAgICAgIEZ3MzJfcHJvZ3Jlc3NfaW5kaWNh dG9yLAorICAgICAgIFN3MzJfcHJvZ3Jlc3NfaW5kaWNhdG9yLAorICAgICAgIDEsIDEsIDAsCisg ICAgICAgZG9jOiAvKiBTaG93IGEgcHJvZ3Jlc3MgYmFyIG9uIHRoZSBzZWxlY3RlZCBmcmFtZSdz IHRhc2tiYXIgaWNvbi4KK1BST0dSRVNTIGlzIGEgZmxvYXQgaW4gdGhlIHJhbmdlIDAuMCB0byAx LjAuICBJZiBQUk9HUkVTUyBpcyBuaWwsIHJlbW92ZQordGhlIHByb2dyZXNzIGluZGljYXRvci4g IERvIG5vdGhpbmcgaWYgV2luZG93cyBkb2VzIG5vdCBzdXBwb3J0IHRoZQorSVRhc2tiYXJMaXN0 MyBpbnRlcmZhY2UgYW5kIHJldHVybiBuaWwsIG90aGVyd2lzZSByZXR1cm4gdC4gIERvIG5vdGhp bmcKK2lmIHRoZSBzZWxlY3RlZCBmcmFtZSBpcyBub3QgKHlldCkgYXNzb2NpYXRlZCB3aXRoIGEg d2luZG93IGhhbmRsZSAgKi8pCisgIChMaXNwX09iamVjdCBwcm9ncmVzcykKK3sKKyAgc3RydWN0 IGZyYW1lICpzZiA9IFNFTEVDVEVEX0ZSQU1FICgpOworICBIV05EIGh3bmQgPSBOVUxMOworCisg IGlmIChGUkFNRV9XMzJfUCAoc2YpICYmIEZSQU1FX0xJVkVfUCAoc2YpKQorICAgIGh3bmQgPSBG UkFNRV9XMzJfV0lORE9XIChzZik7CisKKyAgaWYgKGh3bmQgPT0gTlVMTCkKKyAgICByZXR1cm4g UW5pbDsKKworICBDb0luaXRpYWxpemUgKE5VTEwpOworICBJVGFza2Jhckxpc3QzICp0YXNrX2Jh cl9saXN0ID0gTlVMTDsKKyAgSFJFU1VMVCByID0gQ29DcmVhdGVJbnN0YW5jZSgmQ0xTSURfVGFz a2Jhckxpc3QsCisJCQkgICAgICAgTlVMTCwKKwkJCSAgICAgICBDTFNDVFhfSU5QUk9DX1NFUlZF UiwKKwkJCSAgICAgICAmSUlEX0lUYXNrYmFyTGlzdDMsCisJCQkgICAgICAgKHZvaWQgKiopJnRh c2tfYmFyX2xpc3QpOworICBpZiAociAhPSBTX09LKQorICAgIHJldHVybiBRbmlsOworCisgIC8q IFNjYWxlIHRhc2sgYmFyIHByb2dyZXNzIGZyb20gMC4wLTEuMCB0byAwLTEwMC4gICovCisgIFVM T05HTE9ORyBhZGpfcHJvZ3Jlc3MgPSAwOworICBpZiAoIU5JTFAgKHByb2dyZXNzKSAmJiBGTE9B VFAgKHByb2dyZXNzKSkKKyAgICAgIGFkal9wcm9ncmVzcyA9IChVTE9OR0xPTkcpICgxMDAuMCAq CisJCQkJICBYRkxPQVRfREFUQSAocHJvZ3Jlc3MpKTsKKyAgaWYgKGFkal9wcm9ncmVzcyA+IDAp CisgICAgeworICAgICAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5TZXRQcm9ncmVzc1N0YXRlICh0 YXNrX2Jhcl9saXN0LAorCQkJCQkgICAgICAgaHduZCwgVEJQRl9OT1JNQUwpOworICAgICAgdGFz a19iYXJfbGlzdC0+bHBWdGJsLT5TZXRQcm9ncmVzc1ZhbHVlICh0YXNrX2Jhcl9saXN0LAorCQkJ CQkgICAgICAgaHduZCwgYWRqX3Byb2dyZXNzLCAxMDApOworICAgIH0KKyAgZWxzZQorICAgIHsK KyAgICAgIHRhc2tfYmFyX2xpc3QtPmxwVnRibC0+U2V0UHJvZ3Jlc3NTdGF0ZSAodGFza19iYXJf bGlzdCwKKwkJCQkJICAgICAgIGh3bmQsIFRCUEZfTk9QUk9HUkVTUyk7CisgICAgfQorCisgIHRh c2tfYmFyX2xpc3QtPmxwVnRibC0+UmVsZWFzZSh0YXNrX2Jhcl9saXN0KTsKKyAgcmV0dXJuIFF0 OworfQorCisjZW5kaWYgLyogV0lORE9XU05UICovCisKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCQkJICAg IEluaXRpYWxpemF0aW9uCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0xMTUxMSw2ICsxMTgyNiwxNSBA QCBzeW1zX29mX3czMmZucyAodm9pZCkKICAgREVGU1lNIChRY2Fwc2xvY2ssICJjYXBzbG9jayIp OwogICBERUZTWU0gKFFrcF9udW1sb2NrLCAia3AtbnVtbG9jayIpOwogICBERUZTWU0gKFFzY3Jv bGwsICJzY3JvbGwiKTsKKworICAjaWZkZWYgV0lORE9XU05UCisgIC8qIFRhc2tiYXIgaW5kaWNh dG9ycyBzdXBwb3J0LiAgKi8KKyAgZGVmc3ViciAoJlN3MzJfYmFkZ2UpOworICBkZWZzdWJyICgm U3czMl9wcm9ncmVzc19pbmRpY2F0b3IpOworICBkZWZzdWJyICgmU3czMl9yZXF1ZXN0X3VzZXJf YXR0ZW50aW9uKTsKKyAgREVGU1lNIChRaW5mb3JtYXRpb25hbCwgImluZm9ybWF0aW9uYWwiKTsK KyAgREVGU1lNIChRY3JpdGljYWwsICJjcml0aWNhbCIpOworICAjZW5kaWYKIH0KIAogDApAQCAt MTE3OTksNiArMTIxMjMsOSBAQCBnbG9iYWxzX29mX3czMmZucyAodm9pZCkKICAgU2V0R2VzdHVy ZUNvbmZpZ19mbgogICAgID0gKFNldEdlc3R1cmVDb25maWdfcHJvYykgZ2V0X3Byb2NfYWRkciAo dXNlcjMyX2xpYiwKIAkJCQkJICAgICAiU2V0R2VzdHVyZUNvbmZpZyIpOworICBmbGFzaF93aW5k b3dfZXhfZm4KKyAgICA9IChGbGFzaFdpbmRvd0V4X1Byb2MpIGdldF9wcm9jX2FkZHIgKHVzZXIz Ml9saWIsCisJCQkJCSAgIkZsYXNoV2luZG93RXgiKTsKIAogICB7CiAgICAgSE1PRFVMRSBpbW0z Ml9saWIgPSBHZXRNb2R1bGVIYW5kbGUgKCJpbW0zMi5kbGwiKTsKLS0gCjIuNDcuMQoK --000000000000cffbbe064654ab1c--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 18 Dec 2025 03:52:07 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 17 22:52:07 2025
Received: from localhost ([127.0.0.1]:48101 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vW53f-00019q-8l
for submit <at> debbugs.gnu.org; Wed, 17 Dec 2025 22:52:07 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:63303)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vW53d-00019E-P9
for 79859 <at> debbugs.gnu.org; Wed, 17 Dec 2025 22:52:06 -0500
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id AEC6181C28;
Wed, 17 Dec 2025 22:51:59 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1766029918;
bh=s0JTKHG04TlITYj1EbGSu6XlI6u4GWROmir+U4x7seg=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=cg8mIeiHkURC0RYMyiCsalLF+0hj5aOTXPTc4iV4KJOLL1nic0kUh5VN7y5Qm819j
azmcA+OQw4pMyKZ1DbmP1v6NOL0rt/Ud4rM57i6FLghzdIll2Awhg2CkqLYgSe0eap
0L7+Ql95AiTqz2L0OJW5XYHBb2FROFGvvrXpwMNdpBkTl1SEIJbH0U4hf9/VTVKbL1
nntdD8k0mMb+BjQ2YU/QUJfVG5+cwuuIT84VnQuHhQJnEGMBZgQlHaTfcWdUszpGVO
arvVzUYPA9dDu6yoTSE0sTZ84A++lAERhRjEkdtf232PLXBXMz4ilJEA8YK+Z/c6cG
/biWAFfMlc+iQ==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 8B7808092C;
Wed, 17 Dec 2025 22:51:58 -0500 (EST)
Received: from pastel (104-195-240-239.cpe.teksavvy.com [104.195.240.239])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 45EFB120312;
Wed, 17 Dec 2025 22:51:58 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: =?windows-1252?Q?St=E9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
In-Reply-To: <CAN+1HbrfokZqoYOuDEKWNVSSwZ-AkACtSM3FBoM=45i5DHFP=Q@HIDDEN>
Message-ID: <jwv8qf0la6m.fsf-monnier+emacs@HIDDEN>
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<86bjkxhuca.fsf@HIDDEN>
<CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
<87pl932wqd.fsf@HIDDEN>
<CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN>
<86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN>
<86ikedavlh.fsf@HIDDEN>
<CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN>
<jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN>
<CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN>
<jwv7buss9jh.fsf-monnier+emacs@HIDDEN>
<CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN>
<jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN>
<CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN>
<CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN>
<jwvqzstjc9w.fsf-monnier+emacs@HIDDEN>
<CAN+1HbqfpV7aDTRVxvqBkvA0AYJvPHmDYxzfc2xR5rYYD1dtBg@HIDDEN>
<jwvy0n1hqyl.fsf-monnier+emacs@HIDDEN>
<CAN+1HbrfokZqoYOuDEKWNVSSwZ-AkACtSM3FBoM=45i5DHFP=Q@HIDDEN>
Date: Wed, 17 Dec 2025 22:51:56 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.126 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>,
michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> If we agree on the code, I have to finish the documentation.
Sounds good to me, thanks.
Stefan
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 17 Dec 2025 21:08:06 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 17 16:08:06 2025 Received: from localhost ([127.0.0.1]:46544 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vVykf-0005JT-6D for submit <at> debbugs.gnu.org; Wed, 17 Dec 2025 16:08:06 -0500 Received: from mail-ua1-x931.google.com ([2607:f8b0:4864:20::931]:56375) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vVykc-0005Iw-94 for 79859 <at> debbugs.gnu.org; Wed, 17 Dec 2025 16:08:03 -0500 Received: by mail-ua1-x931.google.com with SMTP id a1e0cc1a2514c-9413e5ee53eso2573826241.0 for <79859 <at> debbugs.gnu.org>; Wed, 17 Dec 2025 13:08:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766005676; x=1766610476; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=dGK77TZXfXx1jzl84IwBFXwYxflhLHvruhJ/JqV0OdI=; b=f60uG3Yzvtmob5PhEMDOygq84VAWWAs0MTz3K8BtXX8Hx71lls54Cxu3OO4r7gOOw8 UCHjHY+Doauhhc9W/qyqmLPu9/hRe6D7XmA5w/hmKQxWs/X/eo2TgmBLkeGuUUVO5vl1 7s/KV6A243UJmNRfJjakYwQgITKPTplXgDUxk/fMCXMyyr9uk8PyMaP845sumCUxBotJ 1drqbZOmVbuTrN/QrIavbG+n7WblDwih+Eil1L+c+luINyMby1g1JRum2w0j1o6Q2bUB dY7/+0SqZdgGSbEe42CDTHFdtZa7J/KNkntjf9JhgMd0S1FTKjOF9uUXkU+IKoQN5KPe XFyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766005676; x=1766610476; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=dGK77TZXfXx1jzl84IwBFXwYxflhLHvruhJ/JqV0OdI=; b=P+7i2mgyKBnDeFU329HvKxaWKpmJr+Yj5sVUIa7abHWz78iE1zOkro39wlGkIKFi3m TPAcWDSYmixAdaWZDIsOKHdcygMFXbxMtst2ZNb2Wu7Js4Ejv7CIDdf+PLj43DeE2SMu R+j/Puef5Z0cPGaWa+Vi6ERpCZNnpXR+Pz0dx+DRUqhKYZ3rDOhQLQ9InG3zYVaj40FW FuOx6vs286nVWW8LL/II0PaAafb5rQ8v6I3oZBUKtvyTuWSpxdYitpAfv/qHzILtutla /jyCLGYJnbNSVNVBxB/qARrv1Jl/t+cgBl7ocktEh0N5eefcnFIUEwHffh6K5EvgRL7E kc8w== X-Forwarded-Encrypted: i=1; AJvYcCVJnRy55KGJamFERyB1/ZzHNKP4hFS8OpgXw1ScvRK9pLJoBf4qFP2XHctVp/z25o5iq7lGGg==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yx3dOajomJW+LSrH0aGElhSnOTdw9DaIn7ta6FmWGtMbFHAFp8r n2U2z9GNn/MzCMuT/vkMEUu1rmEF7Gk84UnY9JexEIoQvWv+b37BxI4oXsT9vQE3KTLgg40XIJ8 X9YQ35CvjZaknQiVCoZYmJMM6OaNyFhI= X-Gm-Gg: AY/fxX4WU9QqoCRZQ9jZPGo+KU7Sv+RXsFelcj4+O7iScwzji0Xq3TUEA8xrusB8L+s PcYJXEcLWfGRCiZgfQrCmi434iwaz09Zjk0ONUrwQPLZIpIJIx07LWZpNbuNvrUhxcykYXSbNWi 1Y4nUfyKeoiA+MLIoqsz/XbLmQs8Sc+e1r5zN9DzoaqL46fu1aMKW0izkiBGLXjPZ+OXpOHQeid 55J3F3RO5T19kzBfpcECO540vGqytsLHEPXKlBxuNLT7vf71wAtB0Pnit1Qy1K8eTM7mzI= X-Google-Smtp-Source: AGHT+IElA3yiL/qi6JY728PM268oPKzKxPwWPerFDayHPLgzg/PO9dEXA21VjXEohambmSqYnFgLkZqBGrYUWM9KWBU= X-Received: by 2002:a05:6102:945:b0:5db:331e:4c1f with SMTP id ada2fe7eead31-5e8276a1336mr7236739137.16.1766005676485; Wed, 17 Dec 2025 13:07:56 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <86ikedavlh.fsf@HIDDEN> <CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN> <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN> <jwv7buss9jh.fsf-monnier+emacs@HIDDEN> <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN> <jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN> <CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN> <CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN> <jwvqzstjc9w.fsf-monnier+emacs@HIDDEN> <CAN+1HbqfpV7aDTRVxvqBkvA0AYJvPHmDYxzfc2xR5rYYD1dtBg@HIDDEN> <jwvy0n1hqyl.fsf-monnier+emacs@HIDDEN> In-Reply-To: <jwvy0n1hqyl.fsf-monnier+emacs@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Wed, 17 Dec 2025 16:07:44 -0500 X-Gm-Features: AQt7F2pWZa80nmM1Ke8Jn-akoRF6yZXS8dEac2tfLI7NTCP55cxVxOtYNUyu_Jo Message-ID: <CAN+1HbrfokZqoYOuDEKWNVSSwZ-AkACtSM3FBoM=45i5DHFP=Q@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Stefan Monnier <monnier@HIDDEN> Content-Type: multipart/mixed; boundary="00000000000004cc6f06462c3d99" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --00000000000004cc6f06462c3d99 Content-Type: multipart/alternative; boundary="00000000000004cc6e06462c3d97" --00000000000004cc6e06462c3d97 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Dec 17, 2025 at 2:15=E2=80=AFPM Stefan Monnier <monnier@HIDDEN= al.ca> wrote: > >> > If someone configures the hook on their own > >> What do you mean by that, exactly? > >> It could mean: > >> - They call `add-hook` themselves. > > I meant this. > > I think we should not support this. I.e. the users who do that would > deserve whichever broken behavior may follow. > Agreed. >> Depends what behavior we're looking for. > >> > >> Do we want to have the two boolean options be independent, or do we > >> want `system-taskbar-use-progress-reporter` to be a config option of > >> `system-taskbar-mode` which has an effect only when that mode > >> is enabled? > >> > >> I think this is the only choice we need to make. After that, it's > >> a small matter of making the code reflect that choice. > >> > > > > I think the most flexible thing to do would be to keep them independent > and > > ensure that the system-taskbar progress reporter function does nothing > when > > the mode is not enabled. > > Hmm... "keep them independent" and "does nothing when the mode is not > enabled" are mutually exclusive in my book, so I don't know what you mean= . > We're saying the same thing in my mind, just in different words, mine being less precise. To keep this simpler I've removed the setter in the defcustom and updated the docstring to say it should be set before the mode is enabled. >> +;; The global minor mode `system-taskbar-mode' initializes the GUI > >> +;; platform back-end and must be enabled before using the functions > >> +;; below. > >> +;; > >> +;; `system-taskbar-badge' overlays a count, which is an integer, on t= he > >> > >> `system-taskbar-mode` is a user option, so a library/package is not > >> allowed to enable/disable it. > >> So the current setup forces all libraries/packages to test > >> `system-taskbar-mode` before calling `system-taskbar-badge/attention`. > >> Wouldn't it be more convenient for those functions to do silently > >> nothing when `system-taskbar-mode` is nil rather than signal > >> a `no-applicable-method` error? > >> > > > > Yes, we can do that and that is one suggestion I made at least for > > the progress reporter being on the new hook but can do for all the > features. > > > > Thanks for your assistance with all this. > > Yes, the more I think about it the more I get the impression that > `system-taskbar-mode` should be the overall control and the rest should > have no effect when that's nil. > Done. > [ Note: it's common (almost standard practice) for hook functions > installed by minor modes to check that the minor mode is still enabled > when they run, even though the test is usually redundant because > disabling the mode removes the hook function: it tends to bring better > behavior when the state is inconsistent, so you can e.g. temporarily > or locally disable a mode just by let-binding the var to nil to > setting it buffer-locally to nil. ] > Done. BTW, maybe to avoid requiring the backend code to test > `system-taskbar-mode`, > the API entry points like `system-taskbar-badge/attention` should be > separate from the generic (backend) functions, so they can check > `system-taskbar-mode` before calling the generic (backend) function. > Done. It adds a trivial amount of code but is still a touch less complex than testing the mode everywhere else. I've refined a few other things while at it like disabling the mode also clears all taskbar indicators. If we agree on the code, I have to finish the documentation. Revised patch attached sans documentation. -St=C3=A9phane --00000000000004cc6e06462c3d97 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Wed, Dec 17, 2025 at 2:15=E2=80=AFPM Stefan Monnier <<a href=3D"mailt= o:monnier@HIDDEN">monnier@HIDDEN</a>> wrote:</span><= /div></div><div class=3D"gmail_quote gmail_quote_container"><blockquote cla= ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid = rgb(204,204,204);padding-left:1ex">>> > If someone configures the = hook on their own<br> >> What do you mean by that, exactly?<br> >> It could mean:<br> >> - They call `add-hook` themselves.<br> > I meant this.<br> <br> I think we should not support this.=C2=A0 I.e. the users who do that would<= br> deserve whichever broken behavior may follow.<br></blockquote><div><br></di= v><div><div class=3D"gmail_default" style=3D"font-family:monospace">Agreed.= </div></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margi= n:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex= "> >> Depends what behavior we're looking for.<br> >><br> >> Do we want to have the two boolean options be independent, or do w= e<br> >> want `system-taskbar-use-progress-reporter` to be a config option = of<br> >> `system-taskbar-mode` which has an effect only when that mode<br> >> is enabled?<br> >><br> >> I think this is the only choice we need to make.=C2=A0 After that,= it's<br> >> a small matter of making the code reflect that choice.<br> >><br> ><br> > I think the most flexible thing to do would be to keep them independen= t and<br> > ensure that the system-taskbar progress reporter function does nothing= when<br> > the mode is not enabled.<br> <br> Hmm... "keep them independent" and "does nothing when the mo= de is not<br> enabled" are mutually exclusive in my book, so I don't know what y= ou mean.<br></blockquote><div><br></div><div><div class=3D"gmail_default" s= tyle=3D"font-family:monospace">We're saying the same thing in my mind, = just in different words,=C2=A0mine being less precise.=C2=A0 To keep this s= impler I've removed the setter in the defcustom and updated the docstri= ng to say it should be set before the mode is enabled.</div></div><div clas= s=3D"gmail_default" style=3D"font-family:monospace"><br></div><blockquote c= lass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px soli= d rgb(204,204,204);padding-left:1ex"> >> +;; The global minor mode `system-taskbar-mode' initializes th= e GUI<br> >> +;; platform back-end and must be enabled before using the functio= ns<br> >> +;; below.<br> >> +;;<br> >> +;; `system-taskbar-badge' overlays a count, which is an integ= er, on the<br> >><br> >> `system-taskbar-mode` is a user option, so a library/package is no= t<br> >> allowed to enable/disable it.<br> >> So the current setup forces all libraries/packages to test<br> >> `system-taskbar-mode` before calling `system-taskbar-badge/attenti= on`.<br> >> Wouldn't it be more convenient for those functions to do silen= tly<br> >> nothing when `system-taskbar-mode` is nil rather than signal<br> >> a `no-applicable-method` error?<br> >><br> ><br> > Yes, we can do that and that is one suggestion I made at least for<br> > the progress reporter being on the new hook but can do for all the fea= tures.<br> ><br> > Thanks for your assistance with all this.<br> <br> Yes, the more I think about it the more I get the impression that<br> `system-taskbar-mode` should be the overall control and the rest should<br> have no effect when that's nil.<br></blockquote><div><br></div><div><di= v class=3D"gmail_default" style=3D"font-family:monospace">Done.</div></div>= <div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px = 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> [ Note: it's common (almost standard practice) for hook functions<br> =C2=A0 installed by minor modes to check that the minor mode is still enabl= ed<br> =C2=A0 when they run, even though the test is usually redundant because<br> =C2=A0 disabling the mode removes the hook function: it tends to bring bett= er<br> =C2=A0 behavior when the state is inconsistent, so you can e.g. temporarily= <br> =C2=A0 or locally disable a mode just by let-binding the var to nil to<br> =C2=A0 setting it buffer-locally to nil.=C2=A0 ]<br></blockquote><div><br><= /div><div><div class=3D"gmail_default" style=3D"font-family:monospace">Done= .</div></div><div class=3D"gmail_default" style=3D"font-family:monospace"><= br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8e= x;border-left:1px solid rgb(204,204,204);padding-left:1ex"> BTW, maybe to avoid requiring the backend code to test `system-taskbar-mode= `,<br> the API entry points like `system-taskbar-badge/attention` should be<br> separate from the generic (backend) functions, so they can check<br> `system-taskbar-mode` before calling the generic (backend) function.<br></b= lockquote><div><br></div><div class=3D"gmail_default" style=3D"font-family:= monospace">Done.=C2=A0 It adds a trivial amount of code but is still a touc= h less complex than testing the mode everywhere else.</div><div class=3D"gm= ail_default" style=3D"font-family:monospace"><br></div><div class=3D"gmail_= default" style=3D"font-family:monospace">I've refined a few other thing= s while at it like disabling the mode also clears all taskbar indicators.</= div><div class=3D"gmail_default" style=3D"font-family:monospace"><br></div>= <div class=3D"gmail_default" style=3D"font-family:monospace">If we agree=C2= =A0on the code, I have to finish the documentation.</div><div class=3D"gmai= l_default" style=3D"font-family:monospace"><br></div><div class=3D"gmail_de= fault" style=3D"font-family:monospace">Revised patch attached sans document= ation.</div><div class=3D"gmail_default" style=3D"font-family:monospace"><b= r></div><div class=3D"gmail_default" style=3D"font-family:monospace">-St=C3= =A9phane=C2=A0</div></div></div> --00000000000004cc6e06462c3d97-- --00000000000004cc6f06462c3d99 Content-Type: application/octet-stream; name="0001-System-GUI-taskbar-and-progress-reporter-hooks.patch" Content-Disposition: attachment; filename="0001-System-GUI-taskbar-and-progress-reporter-hooks.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mjai69pl0> X-Attachment-Id: f_mjai69pl0 RnJvbSBlNjc1ODFhZjIwY2Y4ZWMzMDQ1ZGZkOTg0ODc4OGUwYWVhNzE5MTZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFRodSwgMjAgTm92IDIwMjUgMTI6NTQ6NDAgLTA1MDAK U3ViamVjdDogW1BBVENIXSBTeXN0ZW0gR1VJIHRhc2tiYXIgYW5kIHByb2dyZXNzIHJlcG9ydGVy IGhvb2tzCgpJbXBsZW1lbnQgc3lzdGVtIEdVSSB0YXNrYmFyL2RvY2svbGF1bmNoZXIgaWNvbiBi YWRnZSwgaWNvbgpwcm9ncmVzcyBpbmRpY2F0b3IsIGljb24gYXR0ZW50aW9uIGFsZXJ0IGZlYXR1 cmVzIGZvciBELUJ1cwpwbGF0Zm9ybXMgKHRlc3RlZCBvbiBLREUgYW5kIEdOT01FKSwgTlMgKG1h Y09TL0dOVXN0ZXApLApNUy1XaW5kb3dzLgoKQWRkICdwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUt ZnVuY3Rpb25zJyBhYm5vcm1hbCBob29rIHRvIGZhY2lsaXRhdGUKdGFza2JhciBwcm9ncmVzcyBk aXNwbGF5LCBhbmQgb3RoZXIgY3VzdG9tIHByb2dyZXNzIHJlcG9ydGVycy4KVGhlIGRlZmF1bHQg ZnVuY3Rpb24gbGlzdCBpcyAncHJvZ3Jlc3MtcmVwb3J0ZXItZWNoby1hcmVhJyB3aGljaAppcyBi YWNrd2FyZCBjb21wYXRpYmxlLgoKKiBsaXNwL3N1YnIuZWwgKHByb2dyZXNzLXJlcG9ydGVyLXVw ZGF0ZS1mdW5jdGlvbnMpOgpOZXcgZGVmdmFyLgoocHJvZ3Jlc3MtcmVwb3J0ZXItZWNoby1hcmVh KTogTmV3IGRlZnVuLgoocHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRlKTogUnVuCnByb2dyZXNz LXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMgZm9yIGJvdGggbnVtZXJpY2FsIGFuZApwdWxzaW5n IHJlcG9ydGVycy4KKHByb2dyZXNzLXJlcG9ydGVyLWRvbmUpOiBSdW4gcHJvZ3Jlc3MtcmVwb3J0 ZXItZG9uZS1mdW5jdGlvbnMuCiogbGlzcC9zeXN0ZW0tdGFza2Jhci5lbDogTmV3IGZpbGUuCiog c3JjL25zZm5zLm0gKEZuc19iYWRnZSwgRm5zX3Byb2dyZXNzX2luZGljYXRvcikKKEZuc19yZXF1 ZXN0X3VzZXJfYXR0ZW50aW9uKTogTmV3IGZ1bmN0aW9uLgooc3ltc19vZl9uc2Zucyk6IEFkZCBk ZWZzdWJyIFNuc19iYWRnZSwKU25zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24sIFNuc19wcm9ncmVz c19pbmRpY2F0b3IuIEFkZCBERUZTWU0KUWluZm9ybWF0aW9uYWwsIFFjcml0aWNhbC4KKiBzcmMv dzMyZm5zLmMgKHJnYl9saXN0X3RvX2NvbG9ycmVmLCBGdzMyX2JhZGdlKQooRnczMl9yZXF1ZXN0 X3VzZXJfYXR0ZW50aW9uLCBGdzMyX3Byb2dyZXNzX2luZGljYXRvcik6IE5ldwpmdW5jdGlvbi4K KHN5bXNfb2ZfdzMyZm5zKTogQWRkIGRlZnN1YnIgU3czMl9iYWRnZSwKU3czMl9wcm9ncmVzc19p bmRpY2F0b3IsIFN3MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbi4gQWRkIERFRlNZTQpRaW5mb3Jt YXRpb25hbCwgUWNyaXRpY2FsLgoqIHN5c3RlbS10YXNiYXIudGV4aTogTmV3IGZpbGUgKFdJTEwg QkUgTUVSR0VEIElOVE8gRU1BQ1MgQU5ECkVMSVNQIE1BTlVBTCkuCiogZXRjL05FV1M6IEFubm91 bmNlIHN5c3RlbS10YXNrYmFyLW1vZGUuICBBbm5vdW5jZSBwcm9ncmVzcwpyZXBvcnRlciBjYWxs YmFjayBlbmhhbmNlbWVudHMuCi0tLQogZXRjL05FV1MgICAgICAgICAgICAgICB8ICAyMiArKwog bGlzcC9zdWJyLmVsICAgICAgICAgICB8ICA4NyArKysrKy0tCiBsaXNwL3N5c3RlbS10YXNrYmFy LmVsIHwgNTMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMv bnNmbnMubSAgICAgICAgICAgIHwgMTI4ICsrKysrKysrKysKIHNyYy93MzJmbnMuYyAgICAgICAg ICAgfCAzMjcgKysrKysrKysrKysrKysrKysrKysrKysrKwogc3lzdGVtLXRhc2tiYXIudGV4aSAg ICB8IDI1NCArKysrKysrKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAxMzIzIGluc2Vy dGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpc3Avc3lzdGVt LXRhc2tiYXIuZWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXN0ZW0tdGFza2Jhci50ZXhpCgpkaWZm IC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCBmZGIxZWUwMjgxOS4uNjc2MTQ0ZGZm MTIgMTAwNjQ0Ci0tLSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdTCkBAIC0zMTUxLDYgKzMxNTEs MjEgQEAgVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIGZ1bmN0aW9ucyB0byB0aHJvdHRsZSBvciBkZWJv dW5jZSBFbWFjcyBMaXNwCiBmdW5jdGlvbnMuICBUaGlzIGlzIHVzZWZ1bCBmb3IgY29ycmFsbGlu ZyBvdmVyZWFnZXIgY29kZSB0aGF0IGlzIHNsb3cKIGFuZCBibG9ja3MgRW1hY3MsIG9yIGRvZXMg bm90IHByb3ZpZGUgd2F5cyB0byBsaW1pdCBob3cgb2Z0ZW4gaXQgcnVucy4KIAorKysrCisqKiog TmV3IG1vZGUgJ3N5c3RlbS10YXNrYmFyLW1vZGUnLgorVGhpcyBpcyBhIGdsb2JhbCBtaW5vciBt b2RlIGFuZCBjb21wYW5pb24gZnVuY3Rpb25zIHRoYXQgaW50ZWdyYXRlIEVtYWNzCit3aXRoIHN5 c3RlbSBHVUkgdGFza2JhcnMgKGFsc28gY2FsbGVkIGRvY2tzIG9yIGxhdW5jaGVycyBvciBzb21l dGhpbmcKK3NpbWlsYXIpIHRvIGRpc3BsYXkgYSB0YXNrYmFyIGljb24gImJhZGdlIiBvdmVybGF5 LCBhIHByb2dyZXNzIGJhcgorcmVwb3J0IG92ZXJsYXksIGFsZXJ0IHRoZSB1c2VyIHRoYXQgYW4g RW1hY3Mgc2Vzc2lvbiBuZWVkcyBhdHRlbnRpb24sCitvZnRlbiBieSBmbGFzaGluZyBvciBib3Vu Y2luZyB0aGUgRW1hY3MgYXBwbGljYXRpb24gaWNvbi4gIFN1cHBvcnRlZAorY2FwYWJsZSBzeXN0 ZW1zIGFyZSBHTlUvTGludXggdmlhIEQtQnVzLCBtYWNPUy9HTlVzdGVwIDEwLjUrLCBNUy1XaW5k b3dzCis3Ky4KKworT24gR05VL0xpbnV4IHN5c3RlbXMsIHNoZWxsIGV4dGVuc2lvbnMgb3Igc2lt aWxhciBoZWxwZXJzIHN1Y2ggYXMKKyJkYXNoLXRvLWRvY2siIG1heSBiZSByZXF1aXJlZC4gIFNl ZQorPGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzMwNy9kYXNoLXRvLWRv Y2svPiBhbmQKKzxodHRwczovL3dpa2kudWJ1bnR1LmNvbS9Vbml0eS9MYXVuY2hlckFQST4uCisK IAwKICogSW5jb21wYXRpYmxlIExpc3AgQ2hhbmdlcyBpbiBFbWFjcyAzMS4xCiAKQEAgLTM1Nzks NiArMzU5NCwxMyBAQCBFbWFjcyB3aGVuIGJ1aWx0IHdpdGggdGhlIHB1cmUgR1RLIHRvb2xraXQg bm93IHJlc3BlY3RzIGRlc2t0b3AKIGRhcmsgYW5kIGxpZ2h0IG1vZGVzIGZvciBkcmF3aW5nIGEg R1RLIHRvb2xiYXIgYW5kIHdpZGdldHMsCiBhdXRvbWF0aWNhbGx5IHRvZ2dsaW5nIGJldHdlZW4g dGhlbS4KIAorKysrCisqKiBQcm9ncmVzcyByZXBvcnRlciBjYWxsYmFja3MuCisnbWFrZS1wcm9n cmVzcy1yZXBvcnRlcicgbm93IGFjY2VwdHMgb3B0aW9uYWwgYXJndW1lbnRzIFVQREFURS1DQUxM QkFDSywKK2NhbGxlZCBvbiBwcm9ncmVzcyBzdGVwcywgYW5kIERPTkUtQ0FMTEJBQ0ssIGNhbGxl ZCB3aGVuIHRoZSBwcm9ncmVzcworcmVwb3J0ZXIgaXMgZG9uZS4gIFNlZSB0aGUgJ21ha2UtcHJv Z3Jlc3MtcmVwb3J0ZXInIGRvY3N0cmluZyBmb3IgYSBmdWxsCitzcGVjaWZpY2F0aW9uIG9mIHRo ZXNlIG5ldyBvcHRpb25hbCBhcmd1bWVudHMuCisKIAwKICogQ2hhbmdlcyBpbiBFbWFjcyAzMS4x IG9uIE5vbi1GcmVlIE9wZXJhdGluZyBTeXN0ZW1zCiAKZGlmZiAtLWdpdCBhL2xpc3Avc3Vici5l bCBiL2xpc3Avc3Vici5lbAppbmRleCBmY2Y5MzFiNjRlOS4uZTY5ZWYxOGExYmIgMTAwNjQ0Ci0t LSBhL2xpc3Avc3Vici5lbAorKysgYi9saXNwL3N1YnIuZWwKQEAgLTY5NzQsMTkgKzY5NzQsMzMg QEAgc2V0LXRyYW5zaWVudC1tYXAKIDs7IGRpZ2l0cyBvZiBwcmVjaXNpb24sIGl0IGRvZXNuJ3Qg cmVhbGx5IG1hdHRlciBoZXJlLiAgT24gdGhlIG90aGVyCiA7OyBoYW5kLCBpdCBncmVhdGx5IHNp bXBsaWZpZXMgdGhlIGNvZGUuCiAKKyhkZWZ2YXIgcHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlLWZ1 bmN0aW9ucyAobGlzdCAjJ3Byb2dyZXNzLXJlcG9ydGVyLWVjaG8tYXJlYSkKKyAgIlNwZWNpYWwg aG9vayBydW4gb24gcHJvZ3Jlc3MtcmVwb3J0ZXIgdXBkYXRlcy4KK0VhY2ggZnVuY3Rpb24gaXMg Y2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czoKK1JFUE9SVEVSIGlzIHRoZSByZXN1bHQgb2YgYSBj YWxsIHRvIGBtYWtlLXByb2dyZXNzLXJlcG9ydGVyJy4KK1NUQVRFIGNhbiBiZSBvbmUgb2Y6Cist IEEgZmxvYXQgcmVwcmVzZW50aW5nIHRoZSBwZXJjZW50YWdlIGNvbXBsZXRlIGluIHRoZSByYW5n ZSAwLjAtMS4wCitmb3IgYSBudW1lcmljIHJlcG9ydGVyLgorLSBBbiBpbnRlZ2VyIHJlcHJlc2Vu dGluZyB0aGUgaW5kZXggd2hpY2ggY3ljbGVzIHRocm91Z2ggdGhlIHJhbmdlIDAtMworZm9yIGEg cHVsc2luZyByZXBvcnRlci4KKy0gVGhlIHN5bWJvbCBgZG9uZScgdG8gaW5kaWNhdGUgdGhhdCB0 aGUgcHJvZ3Jlc3MgcmVwb3J0ZXIgaXMgY29tcGxldGUuIikKKwogKGRlZnN1YnN0IHByb2dyZXNz LXJlcG9ydGVyLXVwZGF0ZSAocmVwb3J0ZXIgJm9wdGlvbmFsIHZhbHVlIHN1ZmZpeCkKLSAgIlJl cG9ydCBwcm9ncmVzcyBvZiBhbiBvcGVyYXRpb24gaW4gdGhlIGVjaG8gYXJlYS4KKyAgIlJlcG9y dCBwcm9ncmVzcyBvZiBhbiBvcGVyYXRpb24sIGJ5IGRlZmF1bHQsIGluIHRoZSBlY2hvIGFyZWEu CiBSRVBPUlRFUiBzaG91bGQgYmUgdGhlIHJlc3VsdCBvZiBhIGNhbGwgdG8gYG1ha2UtcHJvZ3Jl c3MtcmVwb3J0ZXInLgogCiBJZiBSRVBPUlRFUiBpcyBhIG51bWVyaWNhbCBwcm9ncmVzcyByZXBv cnRlci0tLWkuZS4gaWYgaXQgd2FzCi0gbWFkZSB1c2luZyBub24tbmlsIE1JTi1WQUxVRSBhbmQg TUFYLVZBTFVFIGFyZ3VtZW50cyB0bwotIGBtYWtlLXByb2dyZXNzLXJlcG9ydGVyJy0tLXRoZW4g VkFMVUUgc2hvdWxkIGJlIGEgbnVtYmVyIGJldHdlZW4KLSBNSU4tVkFMVUUgYW5kIE1BWC1WQUxV RS4KK21hZGUgdXNpbmcgbm9uLW5pbCBNSU4tVkFMVUUgYW5kIE1BWC1WQUxVRSBhcmd1bWVudHMg dG8KK2BtYWtlLXByb2dyZXNzLXJlcG9ydGVyJy0tLXRoZW4gVkFMVUUgc2hvdWxkIGJlIGEgbnVt YmVyIGJldHdlZW4KK01JTi1WQUxVRSBhbmQgTUFYLVZBTFVFLgorCitPcHRpb25hbCBhcmd1bWVu dCBTVUZGSVggaXMgYSBzdHJpbmcgdG8gYmUgZGlzcGxheWVkIGFmdGVyIFJFUE9SVEVSJ3MKK21h aW4gbWVzc2FnZSBhbmQgcHJvZ3Jlc3MgdGV4dC4gIElmIFJFUE9SVEVSIGlzIGEgbm9uLW51bWVy aWNhbAorcmVwb3J0ZXIsIHRoZW4gVkFMVUUgc2hvdWxkIGJlIG5pbCwgb3IgYSBzdHJpbmcgdG8g dXNlIGluc3RlYWQgb2YKK1NVRkZJWC4gIFNVRkZJWCBpcyBjb25zaWRlcmVkIG9ic29sZXRlIGFu ZCBtYXkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLgogCi1PcHRpb25hbCBhcmd1bWVudCBTVUZG SVggaXMgYSBzdHJpbmcgdG8gYmUgZGlzcGxheWVkIGFmdGVyCi1SRVBPUlRFUidzIG1haW4gbWVz c2FnZSBhbmQgcHJvZ3Jlc3MgdGV4dC4gIElmIFJFUE9SVEVSIGlzIGEKLW5vbi1udW1lcmljYWwg cmVwb3J0ZXIsIHRoZW4gVkFMVUUgc2hvdWxkIGJlIG5pbCwgb3IgYSBzdHJpbmcgdG8KLXVzZSBp bnN0ZWFkIG9mIFNVRkZJWC4KK1NlZSBgcHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlLWZ1bmN0aW9u cycgZm9yIHRoZSBsaXN0IG9mIGZ1bmN0aW9ucworY2FsbGVkIG9uIGVhY2ggdXBkYXRlLgogCiBU aGlzIGZ1bmN0aW9uIGlzIHJlbGF0aXZlbHkgaW5leHBlbnNpdmUuICBJZiB0aGUgY2hhbmdlIHNp bmNlCiBsYXN0IHVwZGF0ZSBpcyB0b28gc21hbGwgb3IgaW5zdWZmaWNpZW50IHRpbWUgaGFzIHBh c3NlZCwgaXQgZG9lcwpAQCAtNzA0NSwxMSArNzA1OSwxNSBAQCBtYWtlLXByb2dyZXNzLXJlcG9y dGVyCiAKIChkZWZhbGlhcyAncHJvZ3Jlc3MtcmVwb3J0ZXItbWFrZSAjJ21ha2UtcHJvZ3Jlc3Mt cmVwb3J0ZXIpCiAKKyhkZWZ1biBwcm9ncmVzcy1yZXBvcnRlci10ZXh0IChyZXBvcnRlcikKKyAg IlJldHVybiBSRVBPUlRFUidzIHRleHQuIgorICAoYXJlZiAoY2RyIHJlcG9ydGVyKSAzKSkKKwog KGRlZnVuIHByb2dyZXNzLXJlcG9ydGVyLWZvcmNlLXVwZGF0ZSAocmVwb3J0ZXIgJm9wdGlvbmFs IHZhbHVlIG5ldy1tZXNzYWdlIHN1ZmZpeCkKICAgIlJlcG9ydCBwcm9ncmVzcyBvZiBhbiBvcGVy YXRpb24gaW4gdGhlIGVjaG8gYXJlYSB1bmNvbmRpdGlvbmFsbHkuCiAKLVJFUE9SVEVSLCBWQUxV RSwgYW5kIFNVRkZJWCBhcmUgdGhlIHNhbWUgYXMgaW4gYHByb2dyZXNzLXJlcG9ydGVyLXVwZGF0 ZScuCi1ORVctTUVTU0FHRSwgaWYgbm9uLW5pbCwgc2V0cyBhIG5ldyBtZXNzYWdlIGZvciB0aGUg cmVwb3J0ZXIuIgorICBSRVBPUlRFUiwgVkFMVUUsIGFuZCBTVUZGSVggYXJlIHRoZSBzYW1lIGFz IGluIGBwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUnLgorICBORVctTUVTU0FHRSwgaWYgbm9uLW5p bCwgc2V0cyBhIG5ldyBtZXNzYWdlIGZvciB0aGUgcmVwb3J0ZXIuIgogICAobGV0ICgocGFyYW1l dGVycyAoY2RyIHJlcG9ydGVyKSkpCiAgICAgKHdoZW4gbmV3LW1lc3NhZ2UKICAgICAgIChhc2V0 IHBhcmFtZXRlcnMgMyBuZXctbWVzc2FnZSkpCkBAIC03MDYwLDEyICs3MDc4LDI5IEBAIHByb2dy ZXNzLXJlcG9ydGVyLWZvcmNlLXVwZGF0ZQogKGRlZnZhciBwcm9ncmVzcy1yZXBvcnRlci0tcHVs c2UtY2hhcmFjdGVycyBbIi0iICJcXCIgInwiICIvIl0KICAgIkNoYXJhY3RlcnMgdG8gdXNlIGZv ciBwdWxzaW5nIHByb2dyZXNzIHJlcG9ydGVycy4iKQogCisoZGVmdW4gcHJvZ3Jlc3MtcmVwb3J0 ZXItZWNoby1hcmVhIChyZXBvcnRlciBzdGF0ZSkKKyAgIlByb2dyZXNzIHJlcG9ydGVyIGVjaG8g YXJlYSB1cGRhdGUgZnVuY3Rpb24uCitSRVBPUlRFUiBhbmQgU1RBVEUgYXJlIHRoZSBzYW1lIGFz IGluCitgcHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlLWZ1bmN0aW9uc2AuIgorICAobGV0ICgodGV4 dCAocHJvZ3Jlc3MtcmVwb3J0ZXItdGV4dCByZXBvcnRlcikpKQorICAgIChwY2FzZSBzdGF0ZQor ICAgICAgKChwcmVkIGZsb2F0cCkKKyAgICAgICAoaWYgKHBsdXNwIHN0YXRlKQorICAgICAgICAg ICAobWVzc2FnZSAiJXMlZCUlIiB0ZXh0ICgqIHN0YXRlIDEwMC4wKSkKKyAgICAgICAgIChtZXNz YWdlICIlcyIgdGV4dCkpKQorICAgICAgKChwcmVkIGludGVnZXJwKQorICAgICAgIChsZXQgKCht ZXNzYWdlLWxvZy1tYXggbmlsKQorICAgICAgICAgICAgIChwdWxzZS1jaGFyIChhcmVmIHByb2dy ZXNzLXJlcG9ydGVyLS1wdWxzZS1jaGFyYWN0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RhdGUpKSkKKyAgICAgICAgIChtZXNzYWdlICIlcyAlcyIgdGV4dCBwdWxzZS1jaGFy KSkpCisgICAgICAoJ2RvbmUKKyAgICAgICAobWVzc2FnZSAiJXNkb25lIiB0ZXh0KSkpKSkKKwog KGRlZnVuIHByb2dyZXNzLXJlcG9ydGVyLWRvLXVwZGF0ZSAocmVwb3J0ZXIgdmFsdWUgJm9wdGlv bmFsIHN1ZmZpeCkKLSAgKGxldCogKChwYXJhbWV0ZXJzICAgKGNkciByZXBvcnRlcikpCi0JICh1 cGRhdGUtdGltZSAgKGFyZWYgcGFyYW1ldGVycyAwKSkKLQkgKG1pbi12YWx1ZSAgICAoYXJlZiBw YXJhbWV0ZXJzIDEpKQotCSAobWF4LXZhbHVlICAgIChhcmVmIHBhcmFtZXRlcnMgMikpCi0JICh0 ZXh0ICAgICAgICAgKGFyZWYgcGFyYW1ldGVycyAzKSkKKyAgKGxldCogKChwYXJhbWV0ZXJzICAg ICAgKGNkciByZXBvcnRlcikpCisJICh1cGRhdGUtdGltZSAgICAgKGFyZWYgcGFyYW1ldGVycyAw KSkKKwkgKG1pbi12YWx1ZSAgICAgICAoYXJlZiBwYXJhbWV0ZXJzIDEpKQorCSAobWF4LXZhbHVl ICAgICAgIChhcmVmIHBhcmFtZXRlcnMgMikpCiAJIChlbm91Z2gtdGltZS1wYXNzZWQKIAkgIDs7 IFNlZSBpZiBlbm91Z2ggdGltZSBoYXMgcGFzc2VkIHNpbmNlIHRoZSBsYXN0IHVwZGF0ZS4KIAkg IChvciAobm90IHVwZGF0ZS10aW1lKQpAQCAtNzA5OCw5ICs3MTMzLDkgQEAgcHJvZ3Jlc3MtcmVw b3J0ZXItZG8tdXBkYXRlCiAgICAgICAgICAgICAgICAoaWYgc3VmZml4CiAgICAgICAgICAgICAg ICAgICAgKGFzZXQgcGFyYW1ldGVycyA2IHN1ZmZpeCkKICAgICAgICAgICAgICAgICAgKHNldHEg c3VmZml4IChvciAoYXJlZiBwYXJhbWV0ZXJzIDYpICIiKSkpCi0gICAgICAgICAgICAgICAoaWYg KHBsdXNwIHBlcmNlbnRhZ2UpCi0gICAgICAgICAgICAgICAgICAgKG1lc3NhZ2UgIiVzJWQlJSAl cyIgdGV4dCBwZXJjZW50YWdlIHN1ZmZpeCkKLSAgICAgICAgICAgICAgICAgKG1lc3NhZ2UgIiVz ICVzIiB0ZXh0IHN1ZmZpeCkpKSkpCisgICAgICAgICAgICAgICAocnVuLWhvb2std2l0aC1hcmdz ICdwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUtZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlcG9ydGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICgvIHBlcmNlbnRhZ2UgMTAwLjApKSkpKQogCSAgOzsgUHVsc2luZyBpbmRpY2F0b3IKIAkg IChlbm91Z2gtdGltZS1wYXNzZWQKICAgICAgICAgICAgKHdoZW4gKGFuZCB2YWx1ZSAobm90IHN1 ZmZpeCkpCkBAIC03MTA4LDE2ICs3MTQzLDE4IEBAIHByb2dyZXNzLXJlcG9ydGVyLWRvLXVwZGF0 ZQogICAgICAgICAgICAoaWYgc3VmZml4CiAgICAgICAgICAgICAgICAoYXNldCBwYXJhbWV0ZXJz IDYgc3VmZml4KQogICAgICAgICAgICAgIChzZXRxIHN1ZmZpeCAob3IgKGFyZWYgcGFyYW1ldGVy cyA2KSAiIikpKQotICAgICAgICAgICAobGV0KiAoKGluZGV4IChtb2QgKDErIChjYXIgcmVwb3J0 ZXIpKSA0KSkKLSAgICAgICAgICAgICAgICAgIChtZXNzYWdlLWxvZy1tYXggbmlsKQotICAgICAg ICAgICAgICAgICAgKHB1bHNlLWNoYXIgKGFyZWYgcHJvZ3Jlc3MtcmVwb3J0ZXItLXB1bHNlLWNo YXJhY3RlcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4KSkpCisg ICAgICAgICAgIChsZXQgKChpbmRleCAobW9kICgxKyAoY2FyIHJlcG9ydGVyKSkgNCkpKQogCSAg ICAgKHNldGNhciByZXBvcnRlciBpbmRleCkKLSAgICAgICAgICAgICAobWVzc2FnZSAiJXMgJXMg JXMiIHRleHQgcHVsc2UtY2hhciBzdWZmaXgpKSkpKSkKKyAgICAgICAgICAgICAocnVuLWhvb2st d2l0aC1hcmdzICdwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUtZnVuY3Rpb25zCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRlcgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW5kZXgpKSkpKSkKIAogKGRlZnVuIHByb2dyZXNzLXJlcG9ydGVyLWRvbmUgKHJl cG9ydGVyKQotICAiUHJpbnQgcmVwb3J0ZXIncyBtZXNzYWdlIGZvbGxvd2VkIGJ5IHdvcmQgXCJk b25lXCIgaW4gZWNobyBhcmVhLiIKLSAgKG1lc3NhZ2UgIiVzZG9uZSIgKGFyZWYgKGNkciByZXBv cnRlcikgMykpKQorICAiUHJpbnQgcmVwb3J0ZXIncyBtZXNzYWdlIGZvbGxvd2VkIGJ5IHdvcmQg XCJkb25lXCIgaW4gZWNobyBhcmVhLgorQ2FsbCB0aGUgZnVuY3Rpb25zIG9uIGBwcm9ncmVzcy1y ZXBvcnRlci11cGRhdGUtZnVuY3Rpb25zYC4iCisgIChydW4taG9vay13aXRoLWFyZ3MgJ3Byb2dy ZXNzLXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICByZXBv cnRlcgorICAgICAgICAgICAgICAgICAgICAgICdkb25lKSkKIAogKGRlZm1hY3JvIGRvdGltZXMt d2l0aC1wcm9ncmVzcy1yZXBvcnRlciAoc3BlYyByZXBvcnRlci1vci1tZXNzYWdlICZyZXN0IGJv ZHkpCiAgICJMb29wIGEgY2VydGFpbiBudW1iZXIgb2YgdGltZXMgYW5kIHJlcG9ydCBwcm9ncmVz cyBpbiB0aGUgZWNobyBhcmVhLgpkaWZmIC0tZ2l0IGEvbGlzcC9zeXN0ZW0tdGFza2Jhci5lbCBi L2xpc3Avc3lzdGVtLXRhc2tiYXIuZWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmFiYjcyOTk5ZGE2Ci0tLSAvZGV2L251bGwKKysrIGIvbGlzcC9zeXN0ZW0tdGFza2Jh ci5lbApAQCAtMCwwICsxLDUzMCBAQAorOzs7IHN5c3RlbS10YXNrYmFyLmVsIC0tLSBTeXN0ZW0g R1VJIHRhc2tiYXIvZG9jay9sYXVuY2hlciBzdGF0dXMgZGlzcGxheSAtKi0gbGV4aWNhbC1iaW5k aW5nOiB0IC0qLQorCis7OyBDb3B5cmlnaHQgKEMpIDIwMjUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisKKzs7IEF1dGhvcjogU3RlcGhhbmUgTWFya3MKKzs7IE1haW50YWluZXI6IGVt YWNzLWRldmVsQGdudS5vcmcKKzs7IEtleXdvcmRzOiBjb252ZW5pZW5jZQorOzsgUGFja2FnZS1S ZXF1aXJlczogKChlbWFjcyAiMzEuMSIpKQorCis7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUg RW1hY3MuCisKKzs7IEdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7OyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorOzsgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKzs7IChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKzs7IEdOVSBFbWFjcyBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7 IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK Kzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCis7OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRw czovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50YXJ5OgorCis7OyBVc2Ug dGhpcyBwYWNrYWdlIHRvIGRpc3BsYXkgYSB0YXNrYmFyIGljb24gImJhZGdlIiBvdmVybGF5LCBh Cis7OyBwcm9ncmVzcyBiYXIgcmVwb3J0IG92ZXJsYXksIG9yIGFsZXJ0IHRoZSB1c2VyIHRoYXQg YW4gRW1hY3Mgc2Vzc2lvbgorOzsgbmVlZHMgYXR0ZW50aW9uLCBvZnRlbiBieSBmbGFzaGluZyBv ciBib3VuY2luZyB0aGUgRW1hY3MgYXBwbGljYXRpb24KKzs7IGljb24uCis7OworOzsgTm90ZTog VGhlIHRlcm0gdGFza2JhciBpcyBpbmNsdXNpdmUgb2YgZG9jayBvciBsYXVuY2hlciBvciBzb21l IG90aGVyCis7OyB0ZXJtaW5vbG9neSBhcyBtYXkgYmUgdXNlZCBmb3IgeW91ciBzeXN0ZW0uCis7 OworOzsgT24gR05VL0xpbnV4LCB0aGUgdmlzaWJsZSBlZmZlY3RzIHdpbGwgYXBwZWFyIG9uIHRo ZSBkZXN0aW5hdGlvbnMKKzs7IGRldGVybWluZWQgYnkgeW91ciBzaGVsbCBleHRlbnNpb24sIG1v c3Qgb2Z0ZW4gdGhlIGFwcGxpY2F0aW9uCis7OyBsYXVuY2hlciBvciBkb2NrIHBhbmVsLCBvciB0 aGUgdG9wIHBhbmVsLiAgRWZmZWN0cyBhcmUgZ2xvYmFsIGZvciBhbgorOzsgRW1hY3MgaW5zdGFu Y2UuCis7OworOzsgT24gbWFjT1MvR05Vc3RlcCwgdGhlIGVmZmVjdHMgd2lsbCBhcHBlYXIgb24g dGhlIERvY2sgYW5kIGluIHRoZSBBcHAKKzs7IFN3aXRjaGVyLiAgRWZmZWN0cyBhcmUgZ2xvYmFs IGZvciBhbiBFbWFjcyBpbnN0YW5jZS4KKzs7Cis7OyBPbiBNUy1XaW5kb3dzLCB0aGUgZWZmZWN0 cyBhcHBlYXIgb24gdGhlIHRhc2tiYXIuICBFZmZlY3RzIGFyZQorOzsgYXNzb2NpYXRlZCB3aXRo IHRoZSBmcmFtZSBmcm9tIHdoaWNoIHRoZXkgYXJlIGluaXRpYXRlZC4KKworOzs7IFVzYWdlOgor Cis7OyBUaGUgZ2xvYmFsIG1pbm9yIG1vZGUgYHN5c3RlbS10YXNrYmFyLW1vZGUnIGluaXRpYWxp emVzIHRoZSBHVUkKKzs7IHBsYXRmb3JtIGJhY2stZW5kIGFuZCBtdXN0IGJlIGVuYWJsZWQgYmVm b3JlIHVzaW5nIHRoZSBmdW5jdGlvbnMKKzs7IGJlbG93LgorOzsKKzs7IGBzeXN0ZW0tdGFza2Jh ci1iYWRnZScgb3ZlcmxheXMgYSBjb3VudCwgd2hpY2ggaXMgYW4gaW50ZWdlciwgb24gdGhlCis7 OyBFbWFjcyB0YXNrYmFyIGljb24uICBZb3UgY2FuIHVzZSB0aGlzLCBmb3IgZXhhbXBsZSwgdG8g aW5kaWNhdGUgdGhlCis7OyBudW1iZXIgb2YgdW5yZWFkIGVtYWlsIG1lc3NhZ2VzLiAgT24gR05V L0xpbnV4LCB0aGUgY291bnQgbXVzdCBiZSBhbgorOzsgaW50ZWdlciBvciBuaWwuICBPbiBtYWNP Uy9HTlVzdGVwLCB0aGUgY291bnQgbWF5IGJlIGFuIGludGVnZXIgb3IgYQorOzsgc3RyaW5nLCB3 aGljaCB0aGUgb3BlcmF0aW5nIHN5c3RlbSB3aWxsIGFiYnJldmlhdGUgaWYgdG9vIGxvbmcuICBP bgorOzsgTVMtV2luZG93cywgdGhlIHRhc2tiYXIgYmFkZ2Ugd2lsbCBiZSBhYmJyZXZpYXRlZCB0 byB0aHJlZQorOzsgY2hhcmFjdGVyczsgaWYgdGhlIGNvdW50IGlzIGFuIGludGVnZXIgb3V0c2lk ZSB0aGUgcmFuZ2UgLTk5IHRvIDk5LAorOzsgaXQgaXMgc2hvd24gYXMgIi05OSIgb3IgIjk5KyIs IGlmIGNvdW50IGlzIGEgc3RyaW5nIGxvbmdlciB0aGFuIDMKKzs7IGNoYXJhY3RlcnMgaXQgaXMg dHJ1bmNhdGVkLgorOzsKKzs7IGBzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24nIGZsYXNoZXMgb3Ig Ym91bmNlcyB0aGUgRW1hY3MgdGFza2JhciBpY29uCis7OyB0byBpbmRpY2F0ZSB0aGF0IHlvdXIg RW1hY3Mgc2Vzc2lvbiB3YW50cyBhdHRlbnRpb24uICBJdHMgYmVoYXZpb3JzCis7OyBhcmUgYmFj ay1lbmQgc3BlY2lmaWMuCis7OworOzsgYHN5c3RlbS10YXNrYmFyLXByb2dyZXNzJyBvdmVybGF5 cyBhIGdyYXBoaWNhbCBwcm9ncmVzcyBiYXIgb24gdGhlCis7OyBFbWFjcyB0YXNrYmFyIGljb24g dG8gaWxsdXN0cmF0ZSBwcm9ncmVzcyBvZiBhIHBvdGVudGlhbGx5Cis7OyBsb25nLXJ1bm5pbmcg b3BlcmF0aW9uLgorOzsKKzs7IFdoZW4gYHN5c3RlbS10YXNrYmFyLW1vZGVgIGlzIGVuYWJsZWQs IEVtYWNzIHByb2dyZXNzIHJlcG9ydGVycyB3aWxsCis7OyBiZSBlbmhhbmNlZCB0byBkaXNwbGF5 IHRhc2tiYXIgR1VJIHByb2dyZXNzIGJhcnMuICBDdXN0b21pemUKKzs7IGBzeXN0ZW0tdGFza2Jh ci11c2UtcHJvZ3Jlc3MtcmVwb3J0ZXJgIGlmIHlvdSB3YW50IHRvIGRpc2FibGUgdGhpcworOzsg YmVmb3JlIGVuYWJsaW5nIHN5c3RlbS10YXNrYmFyLW1vZGUuCis7OworOzsgT24gR05VL0xpbnV4 IHN5c3RlbXMsIHRhc2tiYXIgZWZmZWN0cyB3aWxsIGFwcGVhciBvbiB0aGUgR1VJCis7OyB3aW5k b3ctc3lzdGVtIGRlc3RpbmF0aW9ucyBkZXRlcm1pbmVkIGJ5IHlvdXIgc2hlbGwgZXh0ZW5zaW9u LCBtb3N0Cis7OyBvZnRlbiB0aGUgYXBwbGljYXRpb24gbGF1bmNoZXIgb3IgZG9jayBwYW5lbCwg b3IgdGhlIHRvcCBwYW5lbC4KKzs7IFRhc2tiYXIgZWZmZWN0cyBhcmUgZ2xvYmFsIGZvciBhbiBF bWFjcyBpbnN0YW5jZS4gIFRoZSBHTlUvTGludXgKKzs7IGltcGxlbWVudGF0aW9uIHNlbmRzIHRh c2tiYXIgbWVzc2FnZXMgdG8gdGhlIHN5c3RlbSBHVUkgdXNpbmcgRC1CdXMuCis7OyBZb3UgbWF5 IG5lZWQgdG8gaW5zdGFsbCBvciBjb25maWd1cmUgc2hlbGwgZXh0ZW5zaW9ucyBzdWNoIGFzCis7 OyBAZmlsZXtodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8zMDcvZGFzaC10 by1kb2NrL30gdGhhdAorOzsgaW1wbGVtZW50IFVidW50dSdzIFVuaXR5IEQtQnVzIGxhdW5jaGVy IHNwZWMgd2hpY2ggeW91IGNhbiByZWFkIG1vcmUKKzs7IGFib3V0IGhlcmUgQGZpbGV7aHR0cHM6 Ly93aWtpLnVidW50dS5jb20vVW5pdHkvTGF1bmNoZXJBUEl9LgorOzsKKzs7IFlvdXIgTGludXgg RW1hY3MgaW5zdGFuY2Ugc2hvdWxkIGJlIGxhdW5jaGVkIHZpYSBhbiBhcHByb3ByaWF0ZSBzaGVs bAorOzsgImRlc2t0b3AiIGZpbGUgc3VjaCBhcyB0aG9zZSBkaXN0cmlidXRlZCB3aXRoIEVtYWNz OyBlLmcuLAorOzsgImV0Yy9lbWFjc2NsaWVudC5kZXNrdG9wIiBhcyBkb2N1bWVudGVkIGhlcmUK Kzs7IGh0dHBzOi8vc3BlY2lmaWNhdGlvbnMuZnJlZWRlc2t0b3Aub3JnL2Rlc2t0b3AtZW50cnkv bGF0ZXN0LyBhbmQKKzs7IHdoaWNoIHlvdXIgR1VJIHN5c3RlbSBzaG91bGQgaW1wbGVtZW50Lgor OzsKKzs7IE9uIG1hY09TL0dOVXN0ZXAgMTAuNSssIHRhc2tiYXIgZWZmZWN0cyBhcHBlYXIgb24g dGhlIERvY2sgYW5kIGluIHRoZQorOzsgQXBwIFN3aXRjaGVyLiAgRWZmZWN0cyBhcmUgZ2xvYmFs IGZvciBhbiBFbWFjcyBpbnN0YW5jZS4KKzs7IG1hY09TL0dOVXN0ZXAgaXMgaW1wbGVtZW50ZWQg dmlhIGl0cyBuYXRpdmUgQVBJIGFuZCBuZWVkcyBubyBzcGVjaWFsCis7OyBjb25maWd1cmF0aW9u LgorOzsKKzs7IE9uIE1TLVdpbmRvd3MgNyssIHRhc2tiYXIgZWZmZWN0cyBhcHBlYXIgb24gdGhl IFdpbmRvd3MgdGFza2Jhci4KKzs7IEVmZmVjdHMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZnJh bWUgZnJvbSB3aGljaCB0aGV5IGFyZSBpbml0aWF0ZWQuCis7OyBNUy1XaW5kb3dzIGlzIGltcGxl bWVudGVkIHZpYSBpdHMgbmF0aXZlIEFQSSBhbmQgbmVlZHMgbm8gc3BlY2lhbAorOzsgY29uZmln dXJhdGlvbi4KKzs7Cis7OyBUbyBhZGQgc3VwcG9ydCBmb3IgYWRkaXRpb25hbCBzeXN0ZW1zLCBw cm92aWRlIGEgYmFjayBlbmQgdGhhdAorOzsgaW1wbGVtZW50cyB0aGUgY2wtZ2VuZXJpYyBmdW5j dGlvbnMgYmVsb3cuCisKKzs7OyBDb2RlOgorCisocmVxdWlyZSAnZGJ1cykKKworKGRlZmdyb3Vw IHN5c3RlbS10YXNrYmFyIG5pbAorICAiU3lzdGVtIEdVSSB0YXNrYmFyIGljb24gYmFkZ2UsIHBy b2dyZXNzIHJlcG9ydCwgYWxlcnRpbmcuIgorICA6Z3JvdXAgJ2NvbnZlbmllbmNlCisgIDp2ZXJz aW9uICIzMS4xIikKKworKGRlZmN1c3RvbSBzeXN0ZW0tdGFza2Jhci11c2UtcHJvZ3Jlc3MtcmVw b3J0ZXIgdAorICAiU3VwcGxlbWVudCBwcm9ncmVzcy1yZXBvcnRlcnMgd2l0aCBHVUkgdGFza2Jh ciBpY29uIHByb2dyZXNzIGJhcnMuCitTZXQgdGhpcyBiZWZvcmUgZW5hYmxpbmcgYHN5c3RlbS10 YXNrYmFyLW1vZGUnLiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAgOnZlcnNpb24gIjMxLjEiKQorCiso ZGVmY3VzdG9tIHN5c3RlbS10YXNrYmFyLWNsZWFyLWF0dGVudGlvbi1vbi1mcmFtZS1mb2N1cyB0 CisgICJDbGVhciB0aGUgaWNvbiBhdHRlbnRpb24gaW5kaWNhdG9yIHdoZW4gYW55IEdVSSBmcmFt ZSBpcyBmb2N1c2VkLgorQmFjayBlbmRzIHRoYXQgYXV0b21hdGljYWxseSBjbGVhciB0aGUgYXR0 ZW50aW9uIGluZGljYXRvciwgc3VjaCBhcworbWFjT1MvR05Vc3RlcCBhbmQgTVMtV2luZG93cywg aWdub3JlIHRoaXMgb3B0aW9uLiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAgOnZlcnNpb24gIjMxLjEi KQorCisoZGVmY3VzdG9tIHN5c3RlbS10YXNrYmFyLWRidXMtZGVza3RvcC1maWxlLW5hbWUgImVt YWNzY2xpZW50IgorICAiRC1CdXMgZGVza3RvcCBmaWxlIGJhc2UgbmFtZSBmb3IgdGhlIHN5c3Rl bSB0YXNrYmFyIGRlc3RpbmF0aW9uLgorVGhpcyBzaG91bGQgYmUgdGhlIGJhc2UgbmFtZSBvZiB0 aGUgZGVza3RvcCBmaWxlIHVzZWQgdG8gbGF1bmNoIGFuIEVtYWNzCitpbnN0YW5jZS4gIEZvciBl eGFtcGxlLCBpZiB5b3VyIGxhdW5jaGVyIGRlc2t0b3AgZmlsZSBpcyBjYWxsZWQKK1wiZW1hY3Mu ZGVza3RvcFwiLCB0aGlzIG9wdGlvbiBzaG91bGQgYmUgXCJlbWFjc1wiLiIKKyAgOnR5cGUgJ3N0 cmluZworICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZjdXN0b20gc3lzdGVtLXRhc2tiYXItZGJ1 cy10aW1lb3V0IG5pbAorICAiTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciBELUJ1 cyByZXNwb25zZXMuCitJZiBuaWwsIHVzZSB0aGUgYGRidXNgIGRlZmF1bHQgdGltZW91dCB3aGlj aCBpcyAyNSwwMDAgKGkuZS4sIDI1cykuCisKK0lmIHlvdXIgRC1CdXMgZGVza3RvcCBleHRlbnNp b24gbmVlZHMgZXh0cmEgdGltZSB0byByZXNwb25kLCBpbiB3aGljaAorY2FzZSBgc3lzdGVtLXRh c2tiYXItbW9kZWAgbWlnaHQgbm90IGluaXRpYWxpemUgb3IgcmVsYXRlZCBmdW5jdGlvbnMKK21p Z2h0IG5vdCB0YWtlIHZpc2libGUgZWZmZWN0LCBiaW5kIHRoaXMgdG8gYSB2YWx1ZSBoaWdoZXIg dGhhbiAyNSwwMDAKK3RvIGZpbmQgd2hhdCB3b3JrcyBmb3IgeW91ciBzeXN0ZW0uIgorICA6dHlw ZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiRGVmYXVsdCIgbmlsKSBuYXRudW0pCisgIDp2ZXJzaW9u ICIzMS4xIikKKworKGRlZnVuIHN5c3RlbS10YXNrYmFyLXByb2dyZXNzLXJlcG9ydGVyLWluc3Rh bGwgKCkKKyAgIkluc3RhbGwgc3lzdGVtLXRhc2tiYXIgcHJvZ3Jlc3MgcmVwb3J0ZXIuIgorICAo YWRkLWhvb2sgJ3Byb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMKKyAgICAgICAgICAg ICMnc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZSkpCisKKyhkZWZ1biBz eXN0ZW0tdGFza2Jhci1wcm9ncmVzcy1yZXBvcnRlci1yZW1vdmUgKCkKKyAgIlJlbW92ZSBzeXN0 ZW0tdGFza2JhciBwcm9ncmVzcyByZXBvcnRlci4iCisgIChyZW1vdmUtaG9vayAncHJvZ3Jlc3Mt cmVwb3J0ZXItdXBkYXRlLWZ1bmN0aW9ucworICAgICAgICAgICAgICAgIydzeXN0ZW0tdGFza2Jh ci0tcHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlKSkKKworKGRlZnZhciBzeXN0ZW0tdGFza2Jhci0t YmFjay1lbmQgbmlsCisgICJHZW5lcmljIHRhc2tiYXIgbWV0aG9kIHN5c3RlbSBkaXNwYXRjaGVy LiIpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVmaW5lLW1pbm9yLW1vZGUgc3lzdGVtLXRhc2tiYXIt bW9kZQorICAiU3lzdGVtIEdVSSB0YXNrYmFyIGljb24gYmFkZ2UsIHByb2dyZXNzIHJlcG9ydCwg YWxlcnRpbmcuIgorICA6Z2xvYmFsIHQKKyAgKHdoZW4gbm9uaW50ZXJhY3RpdmUKKyAgICAod2Fy biAiQmF0Y2ggbW9kZSBkb2VzIG5vdCBzdXBwb3J0IGBzeXN0ZW0tdGFza2JhciciKSkKKyAgKGNv bmQgKHN5c3RlbS10YXNrYmFyLW1vZGUKKyAgICAgICAgIChpZiAoc3lzdGVtLXRhc2tiYXItLXNl dC1iYWNrLWVuZCkKKyAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWVuYWJsZSkKKyAgICAg ICAgICAgKHdhcm4gIlN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGBzeXN0ZW0tdGFza2JhciciKSkK KyAgICAgICAgICh3aGVuIHN5c3RlbS10YXNrYmFyLXVzZS1wcm9ncmVzcy1yZXBvcnRlcgorICAg ICAgICAgICAoc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MtcmVwb3J0ZXItaW5zdGFsbCkpKQorICAg ICAgICAodAorICAgICAgICAgKHN5c3RlbS10YXNrYmFyLXByb2dyZXNzLXJlcG9ydGVyLXJlbW92 ZSkKKyAgICAgICAgICh3aGVuIHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZAorICAgICAgICAgICAo c3lzdGVtLXRhc2tiYXItLWJhZGdlIG5pbCkKKyAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1h dHRlbnRpb24gbmlsKQorICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzIG5pbCkK KyAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1kaXNhYmxlKQorICAgICAgICAgICAoc2V0cSBz eXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgbmlsKSkpKSkKKworKGRlZnVuIHN5c3RlbS10YXNrYmFy LWJhZGdlICgmb3B0aW9uYWwgY291bnQpCisgICJEaXNwbGF5IENPVU5UIGFzIGFuIG92ZXJsYXkg b24gdGhlIHN5c3RlbSB0YXNrYmFyIEVtYWNzIGljb24uCitJZiBDT1VOVCBpcyBhbiBpbnRlZ2Vy LCBkaXNwbGF5IHRoYXQuCitJZiBDT1VOVCBpcyBhIHN0cmluZyBvbiBiYWNrIGVuZHMgdGhhdCBz dXBwb3J0IHN0cmluZ3MsIGRpc3BsYXkgdGhhdC4KK1RoZSBzdHJpbmcgc2hvdWxkIGJlIHNob3J0 LgorT24gYmFjayBlbmRzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHN0cmluZ3MsIGNvbnZlcnQgQ09V TlQgdG8gYW4gaW50ZWdlcgordXNpbmcgYHN0cmluZy10by1udW1iZXInIGFuZCB0ZXN0aW5nIGBp bnRlZ2VycCcsIG9yIG5pbCBpZiB0aGF0IGZhaWxzLgorSWYgQ09VTlQgaXMgbmlsIG9yIGFuIGVt cHR5IHN0cmluZywgcmVtb3ZlIHRoZSBjb3VudGVyLiIKKyAgKHdoZW4gc3lzdGVtLXRhc2tiYXIt bW9kZQorICAgIChzeXN0ZW0tdGFza2Jhci0tYmFkZ2UgY291bnQpKSkKKworKGRlZnVuIHN5c3Rl bS10YXNrYmFyLWF0dGVudGlvbiAoJm9wdGlvbmFsIHVyZ2VuY3kgdGltZW91dCkKKyAgIkZsYXNo IHRoZSBzeXN0ZW0gdGFza2JhciBpY29uIGFuZC9vciBmcmFtZSB0byBhbGVydCB0aGUgdXNlci4K K1VSR0VOQ1kgY2FuIGJlIG9uZSBvZiB0aGUgc3ltYm9scyBgaW5mb3JtYXRpb25hbCcsIG9yIGBj cml0aWNhbCcuCitJZiBVUkdFTkNZIGlzIG5pbCwgY2xlYXIgdGhlIGF0dGVudGlvbiBpbmRpY2F0 b3IuCisKK1RoZSBhdHRlbnRpb24gaW5kaWNhdG9yIGlzIGNsZWFyZWQgYnkgdGhlIGVhcmxpZXN0 IG9mIGJyaW5naW5nIHRoZSBFbWFjcworR1VJIGludG8gZm9jdXMsIG9yIGFmdGVyIFRJTUVPVVQg c2Vjb25kcy4gIElmIFRJTUVPVVQgaXMgbmlsLCB0aGUgc3lzdGVtCitHVUkgYmVoYXZpb3IgaGFz IHByaW9yaXR5LgorCitPbiBzb21lIGJhY2sgZW5kcywgYGNyaXRpY2FsJyBoYXMgdGhlIHNhbWUg ZWZmZWN0IGFzIGBpbmZvcm1hdGlvbmFsJy4iCisgICh3aGVuIHN5c3RlbS10YXNrYmFyLW1vZGUK KyAgICAoc3lzdGVtLXRhc2tiYXItLWF0dGVudGlvbiB1cmdlbmN5IHRpbWVvdXQpKSkKKworKGRl ZnVuIHN5c3RlbS10YXNrYmFyLXByb2dyZXNzICgmb3B0aW9uYWwgcHJvZ3Jlc3MpCisgICJEaXNw bGF5IGEgcHJvZ3Jlc3MgaW5kaWNhdG9yIG92ZXJsYXkgb24gdGhlIHN5c3RlbSB0YXNrYmFyIGlj b24uCitQUk9HUkVTUyBpcyBhIGZsb2F0IGluIHRoZSByYW5nZSAwLjAgdG8gMS4wLgorSWYgUFJP R1JFU1MgaXMgbmlsLCByZW1vdmUgdGhlIHByb2dyZXNzIGluZGljYXRvci4iCisgICh3aGVuIHN5 c3RlbS10YXNrYmFyLW1vZGUKKyAgICAoc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzIHByb2dyZXNz KSkpCisKKwwKKzs7IEludGVybmFsIGltcGxlbWVudGF0aW9uLgorCisoZGVmdmFyIHczMi1pbml0 aWFsaXplZCkKKworKGRlZnVuIHN5c3RlbS10YXNrYmFyLS1zZXQtYmFjay1lbmQgKCkKKyAgIkRl dGVybWluZSB0YXNrYmFyIGhvc3Qgc3lzdGVtIHR5cGUuIgorICA7OyBPcmRlciBtYXR0ZXJzIHRv IGFjY29tbW9kYXRlIHRoZSBjYXNlcyB3aGVyZSBhbiBOUyBvciBNUy1XaW5kb3dzCisgIDs7IGJ1 aWxkIGhhdmUgdGhlIGRidXMgZmVhdHVyZS4KKyAgKHNldHEgc3lzdGVtLXRhc2tiYXItLWJhY2st ZW5kCisgICAgICAgIChjb25kICgoYm91bmRwICducy12ZXJzaW9uLXN0cmluZykgJ25zKQorICAg ICAgICAgICAgICAodzMyLWluaXRpYWxpemVkICd3MzIpCisgICAgICAgICAgICAgICgoYW5kIChm ZWF0dXJlcCAnZGJ1c2JpbmQpCisgICAgICAgICAgICAgICAgICAgIChtZW1iZXIgIm9yZy5mcmVl ZGVza3RvcC5sb2dpbjEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRidXMtbGlzdC1h Y3RpdmF0YWJsZS1uYW1lcyA6c3lzdGVtKSkpCisgICAgICAgICAgICAgICAnZGJ1cykKKyAgICAg ICAgICAgICAgKHQgbmlsKSkpKQorCisoY2wtZGVmZ2VuZXJpYyBzeXN0ZW0tdGFza2Jhci0tZW5h YmxlICgpCisgICJFbmFibGUgdGhlIHN5c3RlbS10YXNrYmFyIGJhY2sgZW5kLiIpCisKKyhjbC1k ZWZnZW5lcmljIHN5c3RlbS10YXNrYmFyLS1kaXNhYmxlICgpCisgICJEaXNhYmxlIHRoZSBzeXN0 ZW0tdGFza2JhciBiYWNrIGVuZC4iKQorCisoY2wtZGVmZ2VuZXJpYyBzeXN0ZW0tdGFza2Jhci0t YmFkZ2UgKCZvcHRpb25hbCBjb3VudCkKKyAgIkRpc3BsYXkgQ09VTlQgYXMgYW4gb3ZlcmxheSBv biB0aGUgc3lzdGVtIHRhc2tiYXIgRW1hY3MgaWNvbi4KK0lmIENPVU5UIGlzIGFuIGludGVnZXIs IGRpc3BsYXkgdGhhdC4KK0lmIENPVU5UIGlzIGEgc3RyaW5nIG9uIGJhY2sgZW5kcyB0aGF0IHN1 cHBvcnQgc3RyaW5ncywgZGlzcGxheSB0aGF0LgorVGhlIHN0cmluZyBzaG91bGQgYmUgc2hvcnQu CitPbiBiYWNrIGVuZHMgd2hpY2ggZG8gbm90IHN1cHBvcnQgc3RyaW5ncywgY29udmVydCBDT1VO VCB0byBhbiBpbnRlZ2VyCit1c2luZyBgc3RyaW5nLXRvLW51bWJlcicgYW5kIHRlc3RpbmcgYGlu dGVnZXJwJywgb3IgbmlsIGlmIHRoYXQgZmFpbHMuCitJZiBDT1VOVCBpcyBuaWwgb3IgYW4gZW1w dHkgc3RyaW5nLCByZW1vdmUgdGhlIGNvdW50ZXIuIikKKworKGNsLWRlZmdlbmVyaWMgc3lzdGVt LXRhc2tiYXItLWF0dGVudGlvbiAoJm9wdGlvbmFsIHVyZ2VuY3kgdGltZW91dCkKKyAgIkZsYXNo IHRoZSBzeXN0ZW0gdGFza2JhciBpY29uIGFuZC9vciBmcmFtZSB0byBhbGVydCB0aGUgdXNlci4K K1VSR0VOQ1kgY2FuIGJlIG9uZSBvZiB0aGUgc3ltYm9scyBgaW5mb3JtYXRpb25hbCcsIG9yIGBj cml0aWNhbCcuCitJZiBVUkdFTkNZIGlzIG5pbCwgY2xlYXIgdGhlIGF0dGVudGlvbiBpbmRpY2F0 b3IuCisKK1RoZSBhdHRlbnRpb24gaW5kaWNhdG9yIGlzIGNsZWFyZWQgYnkgdGhlIGVhcmxpZXN0 IG9mIGJyaW5naW5nIHRoZSBFbWFjcworR1VJIGludG8gZm9jdXMsIG9yIGFmdGVyIFRJTUVPVVQg c2Vjb25kcy4gIElmIFRJTUVPVVQgaXMgbmlsLCB0aGUgc3lzdGVtCitHVUkgYmVoYXZpb3IgaGFz IHByaW9yaXR5LgorCitPbiBzb21lIGJhY2sgZW5kcywgYGNyaXRpY2FsJyBoYXMgdGhlIHNhbWUg ZWZmZWN0IGFzIGBpbmZvcm1hdGlvbmFsJy4iKQorCisoY2wtZGVmZ2VuZXJpYyBzeXN0ZW0tdGFz a2Jhci0tcHJvZ3Jlc3MgKCZvcHRpb25hbCBwcm9ncmVzcykKKyAgIkRpc3BsYXkgYSBwcm9ncmVz cyBpbmRpY2F0b3Igb3ZlcmxheSBvbiB0aGUgc3lzdGVtIHRhc2tiYXIgaWNvbi4KK1BST0dSRVNT IGlzIGEgZmxvYXQgaW4gdGhlIHJhbmdlIDAuMCB0byAxLjAuCitJZiBQUk9HUkVTUyBpcyBuaWws IHJlbW92ZSB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yLiIpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jh ci0tdmFsaWRhdGUtcHJvZ3Jlc3MgKHByb2dyZXNzKQorICAiUmV0dXJuIFBST0dSRVNTIGFzIGEg ZmxvYXQgaW4gdGhlIHJhbmdlIDAuMCB0byAxLjAsIG9yIG5pbC4iCisgICh3aGVuIChuYXRudW1w IHByb2dyZXNzKQorICAgIChzZXRxIHByb2dyZXNzIChmbG9hdCBwcm9ncmVzcykpKQorICAod2hl biAoYW5kIHByb2dyZXNzICg+PSBwcm9ncmVzcyAwLjApICg8PSBwcm9ncmVzcyAxLjApKQorICAg IHByb2dyZXNzKSkKKworDAorOzsgYHByb2dyZXNzLXJlcG9ydGVyJyBzdXBwb3J0LgorCisoZGVm dW4gc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZSAoX3JlcG9ydGVyIHN0 YXRlKQorICAiUHJvZ3Jlc3MgcmVwb3J0ZXIgc3lzdGVtLXRhc2tiYXIgdXBkYXRlIGZ1bmN0aW9u LgorUkVQT1JURVIgYW5kIFNUQVRFIGFyZSB0aGUgc2FtZSBhcyBpbgorYHByb2dyZXNzLXJlcG9y dGVyLXVwZGF0ZS1mdW5jdGlvbnNgLiIKKyAgKHBjYXNlIHN0YXRlCisgICAgKChwcmVkIGZsb2F0 cCkKKyAgICAgKHN5c3RlbS10YXNrYmFyLXByb2dyZXNzIHN0YXRlKSkKKyAgICAoKHByZWQgaW50 ZWdlcnApCisgICAgIChzeXN0ZW0tdGFza2Jhci1wcm9ncmVzcyAoLyAoMSsgc3RhdGUpIDQuMCkp KQorICAgICgnZG9uZQorICAgICAoc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MgbmlsKSkpKQorCisM Cis7OyBELUJ1cyBzdXBwb3J0LgorCisoZGVmY29uc3Qgc3lzdGVtLXRhc2tiYXItLWRidXMtc2Vy dmljZSAiY29tLmNhbm9uaWNhbC5Vbml0eSIpCisoZGVmY29uc3Qgc3lzdGVtLXRhc2tiYXItLWRi dXMtaW50ZXJmYWNlICJjb20uY2Fub25pY2FsLlVuaXR5LkxhdW5jaGVyRW50cnkiKQorCisoZGVm dmFyIHN5c3RlbS10YXNrYmFyLS1kYnVzLWF0dGVudGlvbiBuaWwKKyAgIk5vbi1uaWwgd2hlbiBh dHRlbnRpb24gaXMgcmVxdWVzdGVkLiIpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1z ZW5kLXNpZ25hbCAobWVzc2FnZSkKKyAgIlNlbmQgTUVTU0FHRSB0byB0aGUgRC1CdXMgc3lzdGVt IHRhc2tiYXIgc2VydmljZS4iCisgIChsZXQgKChhcHAtdXJpCisgICAgICAgICAoZm9ybWF0ICJh cHBsaWNhdGlvbjovLyVzLmRlc2t0b3AiCisgICAgICAgICAgICAgICAgIHN5c3RlbS10YXNrYmFy LWRidXMtZGVza3RvcC1maWxlLW5hbWUpKSkKKyAgICAoZGJ1cy1zZW5kLXNpZ25hbAorICAgICA6 c2Vzc2lvbgorICAgICBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1zZXJ2aWNlCisgICAgICIvIgorICAg ICBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1pbnRlcmZhY2UKKyAgICAgIlVwZGF0ZSIKKyAgICAgYXBw LXVyaQorICAgICBtZXNzYWdlKSkpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1jbGVh ci1hdHRlbnRpb24tb24tZnJhbWUtZm9jdXMgKCkKKyAgIkNsZWFyIGFuIGFjdGl2ZSBELUJ1cyBh dHRlbnRpb24gcmVxdWVzdCBpZiBhbnkgZnJhbWUgaXMgZm9jdXNlZC4iCisgICh3aGVuIChhbmQg c3lzdGVtLXRhc2tiYXItLWRidXMtYXR0ZW50aW9uCisgICAgICAgICAgICAgKGNhdGNoIDpjbGVh cgorICAgICAgICAgICAgICAgKGRvbGlzdCAoZnJhbWUgKGZyYW1lLWxpc3QpKQorICAgICAgICAg ICAgICAgICAod2hlbiAoZXEgKGZyYW1lLWZvY3VzLXN0YXRlIGZyYW1lKSB0KQorICAgICAgICAg ICAgICAgICAgICh0aHJvdyA6Y2xlYXIgdCkpKSkpCisgICAgKHN5c3RlbS10YXNrYmFyLWF0dGVu dGlvbiBuaWwpKSkKKworKGRlZnVuIHN5c3RlbS10YXNrYmFyLWRidXMtcGluZy1zZXJ2aWNlICgp CisgICJSZXR1cm4gbm9uLW5pbCBpZiBgc3lzdGVtLXRhc2tiYXItLWRidXMtc2VydmljZScgcmVz cG9uZHMuCitSZXR1cm4gbmlsIGlmIG5vIHJlc3BvbnNlIHdpdGhpbiBgc3lzdGVtLXRhc2tiYXIt ZGJ1cy10aW1lb3V0Jy4iCisgIChkYnVzLXBpbmcKKyAgIDpzZXNzaW9uCisgICBzeXN0ZW0tdGFz a2Jhci0tZGJ1cy1zZXJ2aWNlCisgICBzeXN0ZW0tdGFza2Jhci1kYnVzLXRpbWVvdXQpKQorCiso Y2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFyLS1lbmFibGUgKCZjb250ZXh0CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVx bCAnZGJ1cykpKQorICAodW5sZXNzIChzeXN0ZW0tdGFza2Jhci1kYnVzLXBpbmctc2VydmljZSkK KyAgICAoZXJyb3IgIkQtQnVzIHNlcnZpY2UgYCVzJyB1bmF2YWlsYWJsZSIgc3lzdGVtLXRhc2ti YXItLWRidXMtc2VydmljZSkpCisgICh3aGVuIHN5c3RlbS10YXNrYmFyLWNsZWFyLWF0dGVudGlv bi1vbi1mcmFtZS1mb2N1cworICAgIChhZGQtZnVuY3Rpb24gOmFmdGVyIGFmdGVyLWZvY3VzLWNo YW5nZS1mdW5jdGlvbgorICAgICAgICAgICAgICAgICAgIydzeXN0ZW0tdGFza2Jhci0tZGJ1cy1j bGVhci1hdHRlbnRpb24tb24tZnJhbWUtZm9jdXMpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0t dGFza2Jhci0tZGlzYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAnZGJ1cykpKQorICAocmVt b3ZlLWZ1bmN0aW9uIGFmdGVyLWZvY3VzLWNoYW5nZS1mdW5jdGlvbgorICAgICAgICAgICAgICAg ICAgICMnc3lzdGVtLXRhc2tiYXItLWRidXMtY2xlYXItYXR0ZW50aW9uLW9uLWZyYW1lLWZvY3Vz KSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tYmFkZ2UgKCZjb250ZXh0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVu ZCAoZXFsICdkYnVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0 aW9uYWwgY291bnQpCisgICJEaXNwbGF5IENPVU5UIGFzIGFuIG92ZXJsYXkgb24gdGhlIHN5c3Rl bSB0YXNrYmFyIEVtYWNzIGljb24uCitJZiBDT1VOVCBpcyBhbiBpbnRlZ2VyLCBkaXNwbGF5IHRo YXQuICBJZiBDT1VOVCBpcyBhIHN0cmluZywgY29udmVydCBpdAordG8gYW4gaW50ZWdlciwgb3Ig bmlsIGlmIHRoYXQgZmFpbHMuICBJZiBDT1VOVCBpcyBhbnkgb3RoZXIgdHlwZSwgdXNlCituaWwu ICBJZiBDT1VOVCBpcyBuaWwgb3IgYW4gZW1wdHkgc3RyaW5nLCByZW1vdmUgdGhlIGJhZGdlLgor Tm90ZTogVGhlIFVuaXR5IEQtQnVzIHByb3RvY29sIHN1cHBvcnRzIG9ubHkgaW50ZWdlciBiYWRn ZXMuIgorICAoY29uZCAoKHN0cmluZ3AgY291bnQpCisgICAgICAgICAoaWYgKHN0cmluZy1lbXB0 eS1wIGNvdW50KQorICAgICAgICAgICAgIChzZXRxIGNvdW50IG5pbCkKKyAgICAgICAgICAgKGxl dCAoKGNvdW50LTEgKHN0cmluZy10by1udW1iZXIgY291bnQpKSkKKyAgICAgICAgICAgICAoc2V0 cSBjb3VudCAoaWYgKGludGVnZXJwIGNvdW50LTEpIGNvdW50LTEgbmlsKSkpKSkKKyAgICAgICAg KChub3QgKGludGVnZXJwIGNvdW50KSkKKyAgICAgICAgIChzZXRxIGNvdW50IG5pbCkpKQorICAo c3lzdGVtLXRhc2tiYXItLWRidXMtc2VuZC1zaWduYWwKKyAgIGAoKDpkaWN0LWVudHJ5ICJjb3Vu dC12aXNpYmxlIgorICAgICAgICAgICAgICAgICAgKDp2YXJpYW50IDpib29sZWFuICwobm90IChu dWxsIGNvdW50KSkpKQorICAgICAoOmRpY3QtZW50cnkgImNvdW50IgorICAgICAgICAgICAgICAg ICAgKDp2YXJpYW50IDp1aW50MzIgLChpZiAobnVsbCBjb3VudCkgMAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY291bnQpKSkpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0 ZW0tdGFza2Jhci0tYXR0ZW50aW9uICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ2RidXMpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgdXJnZW5j eSB0aW1lb3V0KQorICAiUmVxdWVzdCBVUkdFTkNZIHVzZXIgYXR0ZW50aW9uIG9uIHRoZSBzeXN0 ZW0gdGFza2JhciBFbWFjcyBpY29uLgorVGhlIHJlcXVlc3Qgd2lsbCB0aW1lIG91dCB3aXRoaW4g dGhlIFRJTUVPVVQgc2Vjb25kcyBpbnRlcnZhbC4KK1RoZSBVbml0eSBELUJ1cyBwcm90b2NvbCBk b2VzIG5vdCBzdXBwb3J0IGRpZmZlcmVudGlhdGVkIHVyZ2VuY2llcy4iCisgIChzZXRxIHN5c3Rl bS10YXNrYmFyLS1kYnVzLWF0dGVudGlvbiB1cmdlbmN5KQorICAoc3lzdGVtLXRhc2tiYXItLWRi dXMtc2VuZC1zaWduYWwKKyAgIGAoKDpkaWN0LWVudHJ5ICJ1cmdlbnQiCisgICAgICAgICAgICAg ICAgICAoOnZhcmlhbnQgOmJvb2xlYW4gLChub3QgKG51bGwgdXJnZW5jeSkpKSkpKQorICAod2hl biAoYW5kIHVyZ2VuY3kgdGltZW91dCkKKyAgICAocnVuLXdpdGgtdGltZXIKKyAgICAgdGltZW91 dAorICAgICBuaWwKKyAgICAgIydzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gbmlsKSkpCisKKyhj bC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzICgmY29udGV4dAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQg KGVxbCAnZGJ1cykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9w dGlvbmFsIHByb2dyZXNzKQorICAiRGlzcGxheSBhIHByb2dyZXNzIGJhciBvdmVybGF5IG9uIHRo ZSBzeXN0ZW0gdGFza2JhciBpY29uLgorUFJPR1JFU1MgaXMgYSBmbG9hdCBpbiB0aGUgcmFuZ2Ug MC4wIHRvIDEuMC4KK0lmIFBST0dSRVNTIGlzIG5pbCwgcmVtb3ZlIHRoZSBwcm9ncmVzcyBiYXIu IgorICAoc2V0cSBwcm9ncmVzcyAoc3lzdGVtLXRhc2tiYXItLXZhbGlkYXRlLXByb2dyZXNzIHBy b2dyZXNzKSkKKyAgKHN5c3RlbS10YXNrYmFyLS1kYnVzLXNlbmQtc2lnbmFsCisgICBgKCg6ZGlj dC1lbnRyeSAicHJvZ3Jlc3MtdmlzaWJsZSIKKyAgICAgICAgICAgICAgICAgICg6dmFyaWFudCA6 Ym9vbGVhbiAsKG5vdCAobnVsbCBwcm9ncmVzcykpKSkKKyAgICAgKDpkaWN0LWVudHJ5ICJwcm9n cmVzcyIKKyAgICAgICAgICAgICAgICAgICg6dmFyaWFudCA6ZG91YmxlICwoaWYgKG51bGwgcHJv Z3Jlc3MpIDAgcHJvZ3Jlc3MpKSkpKSkKKworDAorOzsgbWFjT1MvR05Vc3RlcCBOUyBzdXBwb3J0 LgorCisoZGVjbGFyZS1mdW5jdGlvbiBucy1iYWRnZSAibnNmbnMubSIpCisoZGVjbGFyZS1mdW5j dGlvbiBucy1yZXF1ZXN0LXVzZXItYXR0ZW50aW9uICJuc2Zucy5tIikKKyhkZWNsYXJlLWZ1bmN0 aW9uIG5zLXByb2dyZXNzLWluZGljYXRvciAibnNmbnMubSIpCisKKyhjbC1kZWZtZXRob2Qgc3lz dGVtLXRhc2tiYXItLWVuYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICducykpKQorICAoaWdu b3JlKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tZGlzYWJsZSAoJmNvbnRleHQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0t YmFjay1lbmQgKGVxbCAnbnMpKSkKKyAgKGlnbm9yZSkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVt LXRhc2tiYXItLWJhZGdlICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAnbnMpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCBjb3VudCkKKyAgIkRpc3BsYXkgQ09V TlQgYXMgYW4gb3ZlcmxheSBvbiB0aGUgRG9jayBiYWRnZS4KK0lmIENPVU5UIGlzIGFuIGludGVn ZXIgb3IgYSBub24tZW1wdHkgc3RyaW5nLCBkaXNwbGF5IHRoYXQuICBJZiBDT1VOVCBpcworbmls IG9yIGFuIGVtcHR5IHN0cmluZywgY2xlYXIgdGhlIGJhZGdlIG92ZXJsYXkuCitOb3RlOiBOUyB3 aWxsIGFiYnJldmlhdGUgbG9uZyBzdHJpbmdzIHRvIGZpdCB0aGUgYmFkZ2UncyBhbGxvY2F0ZWQK K3NwYWNlLiIKKyAgKGNvbmQgKChzdHJpbmdwIGNvdW50KQorICAgICAgICAgKHdoZW4gKHN0cmlu Zy1lbXB0eS1wIGNvdW50KQorICAgICAgICAgICAoc2V0cSBjb3VudCBuaWwpKSkKKyAgICAgICAg KChpbnRlZ2VycCBjb3VudCkKKyAgICAgICAgIChzZXRxIGNvdW50IChudW1iZXItdG8tc3RyaW5n IGNvdW50KSkpCisgICAgICAgICh0IChzZXRxIGNvdW50IG5pbCkpKQorICAobnMtYmFkZ2UgY291 bnQpKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFyLS1hdHRlbnRpb24gKCZjb250ZXh0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jh ci0tYmFjay1lbmQgKGVxbCAnbnMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmb3B0aW9uYWwgdXJnZW5jeSB0aW1lb3V0KQorICAiUmVxdWVzdCBVUkdFTkNZIHVz ZXIgYXR0ZW50aW9uIG9uIHRoZSBEb2NrLgorVGhlIGF0dGVudGlvbiBpbmRpY2F0b3Igd2lsbCBi ZSBjbGVhcmVkIGFmdGVyIFRJTUVPVVQgc2Vjb25kcy4iCisgIChucy1yZXF1ZXN0LXVzZXItYXR0 ZW50aW9uIHVyZ2VuY3kpCisgICh3aGVuIChhbmQgdXJnZW5jeSB0aW1lb3V0KQorICAgIChydW4t d2l0aC10aW1lcgorICAgICB0aW1lb3V0CisgICAgIG5pbAorICAgICAjJ3N5c3RlbS10YXNrYmFy LWF0dGVudGlvbiBuaWwpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tcHJvZ3Jl c3MgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5 c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICducykpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJm9wdGlvbmFsIHByb2dyZXNzKQorICAiRGlzcGxheSBhIHByb2dy ZXNzIGJhciBvdmVybGF5IG9uIHRoZSBEb2NrIGFuZCBBcHAgU3dpdGNoZXIuCitQUk9HUkVTUyBp cyBhIGZsb2F0IGluIHRoZSByYW5nZSAwLjAgdG8gMS4wLgorSWYgUFJPR1JFU1MgaXMgbmlsLCBy ZW1vdmUgdGhlIHByb2dyZXNzIGJhci4iCisgIChucy1wcm9ncmVzcy1pbmRpY2F0b3IgKHN5c3Rl bS10YXNrYmFyLS12YWxpZGF0ZS1wcm9ncmVzcyBwcm9ncmVzcykpKQorCisMCis7OyBNUy1XaW5k b3dzIHN1cHBvcnQuCisKKyhkZWNsYXJlLWZ1bmN0aW9uIHczMi1iYWRnZSAidzMyZm5zLmMiKQor KGRlY2xhcmUtZnVuY3Rpb24gdzMyLXJlcXVlc3QtdXNlci1hdHRlbnRpb24gInczMmZucy5jIikK KyhkZWNsYXJlLWZ1bmN0aW9uIHczMi1wcm9ncmVzcy1pbmRpY2F0b3IgInczMmZucy5jIikKKwor KGRlZnZhciBzeXN0ZW0tdGFza2Jhci13MzItYmFkZ2UtYmFja2dyb3VuZCAiI2U3NTg1NyIgOyBy ZWRpc2gKKyAgInczMiBiYWRnZSBiYWNrZ3JvdW5kIFJHQiB0cmlwbGUgc3RyaW5nLiIpCisKKyhk ZWZ2YXIgc3lzdGVtLXRhc2tiYXItdzMyLWJhZGdlLWZvcmVncm91bmQgIiNmZmZmZmYiIDsgd2hp dGUKKyAgInczMiBiYWRnZSBmb3JlZ3JvdW5kIFJHQiB0cmlwbGUgc3RyaW5nLiIpCisKKyhkZWZ1 biBzeXN0ZW0tdGFza2Jhci0tdzMyLWNsZWFyLWZyYW1lLWluZGljYXRvcnMgKGZyYW1lKQorICA7 OyBOT1RFOiBVcGRhdGUgdGhlIGJlbG93IGlmIGFkZGluZyBuZXcgdzMyIHN5c3RlbS10YXNrYmFy IGZ1bmN0aW9ucy4KKyAgKHdpdGgtc2VsZWN0ZWQtZnJhbWUgZnJhbWUKKyAgICAoc3lzdGVtLXRh c2tiYXItYmFkZ2UgbmlsKQorICAgIChzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gbmlsKQorICAg IChzeXN0ZW0tdGFza2Jhci1wcm9ncmVzcyBuaWwpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0t dGFza2Jhci0tZW5hYmxlICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ3czMikpKQorICA7OyBDbGVh ciBzeXN0ZW0tdGFza2JhciBpbmRpY2F0b3JzIGZvciBhIGZyYW1lIHdoZW4gaXQgaXMgZGVsZXRl ZC4KKyAgKGFkZC1ob29rICdkZWxldGUtZnJhbWUtZnVuY3Rpb25zCisgICAgICAgICAgICAjJ3N5 c3RlbS10YXNrYmFyLS13MzItY2xlYXItZnJhbWUtaW5kaWNhdG9ycykpCisKKyhjbC1kZWZtZXRo b2Qgc3lzdGVtLXRhc2tiYXItLWRpc2FibGUgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ3czMikp KQorICAocmVtb3ZlLWhvb2sgJ2RlbGV0ZS1mcmFtZS1mdW5jdGlvbnMKKyAgICAgICAgICAgICAg ICMnc3lzdGVtLXRhc2tiYXItLXczMi1jbGVhci1mcmFtZS1pbmRpY2F0b3JzKSkKKworKGNsLWRl Zm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tYmFkZ2UgKCZjb250ZXh0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICd3MzIp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCBjb3VudCkK KyAgIkRpc3BsYXkgYSBDT1VOVCBvdmVybGF5IG9uIHRoZSBzeXN0ZW0gdGFza2JhciBpY29uLgor VGhlIHRhc2tiYXIgaWNvbiB0YXJnZXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZWxlY3RlZCBm cmFtZS4KKworSWYgQ09VTlQgaXMgYW4gaW50ZWdlciBvciBhIG5vbi1lbXB0eSBzdHJpbmcsIGRp c3BsYXkgdGhhdC4gIElmIENPVU5UIGlzCituaWwgb3IgYW4gZW1wdHkgc3RyaW5nLCBjbGVhciB0 aGUgYmFkZ2UuCisKK0R1ZSB0byBNUy1XaW5kb3dzIGljb24gb3ZlcmxheSBzaXplIGxpbWl0YXRp b25zLCBpZiBDT1VOVCBpcyBhbiBpbnRlZ2VyCithbmQgaXMgb3V0c2lkZSB0aGUgcmFuZ2UgLTk5 IHRvIDk5LCBkaXNwbGF5IFwiLTk5XCIgYW5kIFwiOTkrXCIsCityZXNwZWN0aXZlbHksIGlmIENP VU5UIGlzIGEgc3RyaW5nIGxvbmdlciB0aGFuIDIgY2hhcmFjdGVycyB0cnVuY2F0ZSBpdAordXNp bmcgYHRydW5jYXRlLXN0cmluZy10by13aWR0aGAuCisKK0NvbnN1bHQgYHN5c3RlbS10YXNrYmFy LXczMi1iYWRnZS1iYWNrZ3JvdW5kYCBhbmQKK2BzeXN0ZW0tdGFza2Jhci13MzItYmFkZ2UtZm9y ZWdyb3VuZGAgZm9yIHRoZSBiYWNrZ3JvdW5kIGFuZCBmb3JlZ3JvdW5kCitjb2xvcnMgZm9yIHRo ZSBwYWludGVkIG92ZXJsYXkuIgorICAoY29uZCAoKHN0cmluZ3AgY291bnQpCisgICAgICAgICAo aWYgKHN0cmluZy1lbXB0eS1wIGNvdW50KQorICAgICAgICAgICAgIChzZXRxIGNvdW50IG5pbCkK KyAgICAgICAgICAgKHdoZW4gKGxlbmd0aD4gY291bnQgMikKKyAgICAgICAgICAgICAoc2V0cSBj b3VudCAodHJ1bmNhdGUtc3RyaW5nLXRvLXdpZHRoIGNvdW50IDMgMCBuaWwgdCkpKSkpCisgICAg ICAgICgoaW50ZWdlcnAgY291bnQpCisgICAgICAgICAoaWYgKGFuZCAoPiBjb3VudCAtMTAwKQor ICAgICAgICAgICAgICAgICAgKDwgY291bnQgMTAwKSkKKyAgICAgICAgICAgICAoc2V0cSBjb3Vu dCAobnVtYmVyLXRvLXN0cmluZyBjb3VudCkpCisgICAgICAgICAgIChpZiAoPCBjb3VudCAwKQor ICAgICAgICAgICAgICAgKHNldHEgY291bnQgIi05OSIpCisgICAgICAgICAgICAgKHNldHEgY291 bnQgIjk5KyIpKSkpCisgICAgICAgICh0IChzZXRxIGNvdW50IG5pbCkpKQorICAodzMyLWJhZGdl IGNvdW50CisgICAgICAgICAgICAgc3lzdGVtLXRhc2tiYXItdzMyLWJhZGdlLWJhY2tncm91bmQK KyAgICAgICAgICAgICBzeXN0ZW0tdGFza2Jhci13MzItYmFkZ2UtZm9yZWdyb3VuZCkpCisKKyhj bC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItLWF0dGVudGlvbiAoJmNvbnRleHQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVu ZCAoZXFsICd3MzIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm b3B0aW9uYWwgdXJnZW5jeSB0aW1lb3V0KQorICAiUmVxdWVzdCBVUkdFTkNZIHVzZXIgYXR0ZW50 aW9uIG9uIHRoZSBzeXN0ZW0gdGFza2JhciBpY29uLgorSW5kaWNhdGUgdGhlIGljb24gYXNzb2Np YXRlZCB3aXRoIHRoZSBzZWxlY3RlZCBmcmFtZS4KK0lmIFVSR0VOQ1kgaXMgdGhlIHN5bWJvbCBg aW5mb3JtYXRpb25hbCcsIGZsYXNoIHRoZSB0YXNrYmFyIGljb24uCitJZiBVUkdFTkNZIGlzIHRo ZSBzeW1ib2wgYGNyaXRpY2FsJywgZmxhc2ggdGhlIHRhc2tiYXIgaWNvbiBhbmQgdGhlCitNUy1X aW5kb3dzIHdpbmRvdyBmcmFtZS4KK0NsZWFyIGF0dGVudGlvbiBpbmRpY2F0b3IgYWZ0ZXIgVElN RU9VVCBzZWNvbmRzLiAgSWYgVElNRU9VVCBpcyBuaWwsCitkZWZhdWx0IHRvIE1TLVdpbmRvd3Mg ZGVmYXVsdCBiZWhhdmlvci4iCisgICh3MzItcmVxdWVzdC11c2VyLWF0dGVudGlvbiB1cmdlbmN5 KQorICAod2hlbiAoYW5kIHVyZ2VuY3kgdGltZW91dCkKKyAgICAocnVuLXdpdGgtdGltZXIKKyAg ICAgdGltZW91dAorICAgICBuaWwKKyAgICAgIydzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gbmls KSkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzICgmY29udGV4dAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0t YmFjay1lbmQgKGVxbCAndzMyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmb3B0aW9uYWwgcHJvZ3Jlc3MpCisgICJEaXNwbGF5IGEgcHJvZ3Jlc3MgYmFyIG9uIHRo ZSBzeXN0ZW0gdGFza2JhciBpY29uLgorUFJPR1JFU1MgaXMgYSBmbG9hdCBpbiB0aGUgcmFuZ2Ug MC4wIHRvIDEuMC4KK0lmIFBST0dSRVNTIGlzIG5pbCwgcmVtb3ZlIHRoZSBwcm9ncmVzcyBiYXIu IgorICAodzMyLXByb2dyZXNzLWluZGljYXRvciAoc3lzdGVtLXRhc2tiYXItLXZhbGlkYXRlLXBy b2dyZXNzIHByb2dyZXNzKSkpCisKKwwKKworKHByb3ZpZGUgJ3N5c3RlbS10YXNrYmFyKQorCis7 Ozsgc3lzdGVtLXRhc2tiYXIuZWwgZW5kcyBoZXJlCmRpZmYgLS1naXQgYS9zcmMvbnNmbnMubSBi L3NyYy9uc2Zucy5tCmluZGV4IDM1MjhjNGFjZDUwLi4xYThmOTVjMTRlZiAxMDA2NDQKLS0tIGEv c3JjL25zZm5zLm0KKysrIGIvc3JjL25zZm5zLm0KQEAgLTM2NzQsNiArMzY3NCwxMjkgQEAgVGhl IHBvc2l0aW9uIGlzIHJldHVybmVkIGFzIGEgY29ucyBjZWxsIChYIC4gWSkgb2YgdGhlCiAgIHJl dHVybiBRbmlsOwogfQogCitERUZVTiAoIm5zLWJhZGdlIiwgRm5zX2JhZGdlLCBTbnNfYmFkZ2Us IDEsIDEsIDAsCisgICAgICAgZG9jOiAvKiBTZXQgdGhlIGFwcCBpY29uIGJhZGdlIHRvIEJBREdF LgorQkFER0Ugc2hvdWxkIGJlIGEgc3RyaW5nIHNob3J0IGVub3VnaCB0byBkaXNwbGF5IG5pY2Vs eSBpbiB0aGUgc2hvcnQKK3NwYWNlIGludGVuZGVkIGZvciBiYWRnZXMuCitJZiBCQURHRSBpcyBu aWwsIGNsZWFyIHRoZSBhcHAgYmFkZ2UuICAqLykKKyAgKExpc3BfT2JqZWN0IGJhZGdlKQorewor ICBibG9ja19pbnB1dCAoKTsKKyAgaWYgKE5JTFAgKGJhZGdlKSkKKyAgICBbW05TQXBwIGRvY2tU aWxlXSBzZXRCYWRnZUxhYmVsOiBuaWxdOworICBlbHNlCisgICAgeworICAgICAgQ0hFQ0tfU1RS SU5HIChiYWRnZSk7CisgICAgICBbW05TQXBwIGRvY2tUaWxlXSBzZXRCYWRnZUxhYmVsOgorCQkJ ICBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6IFNTREFUQSAoYmFkZ2UpXV07CisgICAg fQorICB1bmJsb2NrX2lucHV0ICgpOworICByZXR1cm4gUW5pbDsKK30KKworLyogVXNlIC0xIHRv IGluZGljYXRlIG5vIGFjdGl2ZSByZXF1ZXN0LiAgKi8KK3N0YXRpYyBOU0ludGVnZXIgbnNfcmVx dWVzdF91c2VyX2F0dGVudGlvbl9pZCA9IC0xOworCitERUZVTiAoIm5zLXJlcXVlc3QtdXNlci1h dHRlbnRpb24iLAorICAgICAgIEZuc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uLAorICAgICAgIFNu c19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uLAorICAgICAgIDEsIDEsIDAsCisgICAgICAgZG9jOiAv KiBCb3VuY2UgdGhlIGFwcCBkb2NrIGljb24gdG8gcmVxdWVzdCB1c2VyIGF0dGVudGlvbi4KK0lm IFVSR0VOQ1kgbmlsLCBjYW5jZWwgdGhlIG91dHN0YW5kaW5nIHJlcXVlc3QsIGlmIGFueS4KK0lm IFVSR0VOQ1kgaXMgdGhlIHN5bWJvbCBgaW5mb3JtYXRpb25hbCcsIGJvdW5jaW5nIGxhc3RzIGEg ZmV3IHNlY29uZHMuCitJZiBVUkdFTkNZIGlzIHRoZSBzeW1ib2wgYGNyaXRpY2FsJywgYm91bmNp bmcgbGFzdHMgdW50aWwgRW1hY3MgaXMKK2ZvY3VzZWQuICAqLykKKyAgKExpc3BfT2JqZWN0IHVy Z2VuY3kpCit7CisgIGJsb2NrX2lucHV0ICgpOworICBpZiAobnNfcmVxdWVzdF91c2VyX2F0dGVu dGlvbl9pZCAhPSAtMSkKKyAgICB7CisgICAgICBbTlNBcHAgY2FuY2VsVXNlckF0dGVudGlvblJl cXVlc3Q6IG5zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb25faWRdOworICAgICAgbnNfcmVxdWVzdF91 c2VyX2F0dGVudGlvbl9pZCA9IC0xOworICAgIH0KKyAgaWYgKCFOSUxQICh1cmdlbmN5KSAmJiBT WU1CT0xQICh1cmdlbmN5KSkKKyAgICB7CisgICAgICBpZiAoRVEgKHVyZ2VuY3ksIFFpbmZvcm1h dGlvbmFsKSkKKwluc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uX2lkID0gW05TQXBwIHJlcXVlc3RV c2VyQXR0ZW50aW9uOgorCQkJCQkJTlNJbmZvcm1hdGlvbmFsUmVxdWVzdF07CisgICAgICBlbHNl IGlmIChFUSAodXJnZW5jeSwgUWNyaXRpY2FsKSkKKwluc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9u X2lkID0gW05TQXBwIHJlcXVlc3RVc2VyQXR0ZW50aW9uOgorCQkJCQkJTlNDcml0aWNhbFJlcXVl c3RdOworICAgIH0KKyAgdW5ibG9ja19pbnB1dCAoKTsKKyAgcmV0dXJuIFFuaWw7Cit9CisKK0RF RlVOICgibnMtcHJvZ3Jlc3MtaW5kaWNhdG9yIiwKKyAgICAgICBGbnNfcHJvZ3Jlc3NfaW5kaWNh dG9yLAorICAgICAgIFNuc19wcm9ncmVzc19pbmRpY2F0b3IsCisgICAgICAgMSwgMSwgMCwKKyAg ICAgICBkb2M6IC8qIEJvdW5jZSB0aGUgYXBwIGRvY2sgaWNvbiB0byByZXF1ZXN0IHVzZXIgYXR0 ZW50aW9uLgorCSAgICAgICBQUk9HUkVTUyBpcyBhIGZsb2F0IGJldHdlZW4gMC4wIGFuZCAxLjAu CisJICAgICAgIElmIFBST0dSRVNTIGlzIG5pbCwgcmVtb3ZlIHRoZSBwcm9ncmVzcyBpbmRpY2F0 b3IuICAqLykKKyAgKExpc3BfT2JqZWN0IHByb2dyZXNzKQoreworICBibG9ja19pbnB1dCAoKTsK KyAgTlNEb2NrVGlsZSAqZG9ja190aWxlID0gW05TQXBwIGRvY2tUaWxlXTsKKyAgLyogVXNlIE5T TGV2ZWxJbmRpY2F0b3Igd2l0aCByZWxpYWJsZSByZWRyYXdzLCBub3QgTlNQcm9ncmVzc0luZGlj YXRvci4gICovCisgIE5TTGV2ZWxJbmRpY2F0b3IgKmxldmVsX2luZGljYXRvcjsKKyAgLyogUmV1 c2UgdGhlIGluZGljYXRvciBzdWJ2aWV3IG9yIGNyZWF0ZSBvbmUuICovCisgIGlmIChkb2NrX3Rp bGUuY29udGVudFZpZXcKKyAgICAgICYmIFtbZG9ja190aWxlLmNvbnRlbnRWaWV3IHN1YnZpZXdz XSBjb3VudF0gPiAwCisgICAgICAmJiBbW1tkb2NrX3RpbGUuY29udGVudFZpZXcgc3Vidmlld3Nd IGxhc3RPYmplY3RdCisgICAgICAgICAgICAgICAgICAgICAgICBpc0tpbmRPZkNsYXNzOltOU0xl dmVsSW5kaWNhdG9yIGNsYXNzXV0pCisgICAgbGV2ZWxfaW5kaWNhdG9yID0KKyAgICAgIChOU0xl dmVsSW5kaWNhdG9yICopW1tbZG9ja190aWxlIGNvbnRlbnRWaWV3XSBzdWJ2aWV3c10gbGFzdE9i amVjdF07CisgICAgZWxzZQorICAgICAgeworCWlmICghZG9ja190aWxlLmNvbnRlbnRWaWV3KQor CSAgeworCSAgICBOU0ltYWdlVmlldyogaW1hZ2VfdmlldyA9IFtbTlNJbWFnZVZpZXcgYWxsb2Nd IGluaXRdOworCSAgICBbaW1hZ2VfdmlldyBzZXRJbWFnZTogW05TQXBwIGFwcGxpY2F0aW9uSWNv bkltYWdlXV07CisJICAgIFtkb2NrX3RpbGUgc2V0Q29udGVudFZpZXc6IGltYWdlX3ZpZXddOwor CSAgfQorCS8qIFNldCB3aWR0aCB0byB0aGUgd2lkdGggb2YgdGhlIGFwcGxpY2F0aW9uIGljb24s IGFuZCBoZWlnaHQgdG8KKwkgICAlIG9mIHRoZSBpY29uIGhlaWdodCB0byByZXNwZWN0IHNjYWxl ZCBpY29ucy4gICovCisJZmxvYXQgd2lkdGggPSBbW05TQXBwIGFwcGxpY2F0aW9uSWNvbkltYWdl XSBzaXplXS53aWR0aDsKKwlmbG9hdCBoZWlnaHQgPSAwLjEwICogW1tOU0FwcCBhcHBsaWNhdGlv bkljb25JbWFnZV0gc2l6ZV0uaGVpZ2h0OworCWxldmVsX2luZGljYXRvciA9CisJICBbW05TTGV2 ZWxJbmRpY2F0b3IgYWxsb2NdIGluaXRXaXRoRnJhbWU6CisJCQkJICAgICAgTlNNYWtlUmVjdCAo MC4wLCAwLjAsCisJCQkJCQkgIHdpZHRoLCBoZWlnaHQpXTsKKwlbbGV2ZWxfaW5kaWNhdG9yIHNl dFdhbnRzTGF5ZXI6IFlFU107IC8qIFBlcmZvcm1hbmNlLiAgKi8KKwlbbGV2ZWxfaW5kaWNhdG9y IHNldEVuYWJsZWQ6IE5PXTsgLyogSWdub3JlIG1vdXNlIGlucHV0LiAgKi8KKwlbbGV2ZWxfaW5k aWNhdG9yIHNldExldmVsSW5kaWNhdG9yU3R5bGU6CisJCQkgICBOU0xldmVsSW5kaWNhdG9yU3R5 bGVDb250aW51b3VzQ2FwYWNpdHldOworCS8qIE1hdGNoIE5TUHJvZ3Jlc3NJbmRpY2F0b3IgY29s b3IuICAqLworCVtsZXZlbF9pbmRpY2F0b3Igc2V0RmlsbENvbG9yOiBbTlNDb2xvciBjb250cm9s QWNjZW50Q29sb3JdXTsKKwlbbGV2ZWxfaW5kaWNhdG9yIHNldE1pblZhbHVlOiAwLjBdOworCVts ZXZlbF9pbmRpY2F0b3Igc2V0TWF4VmFsdWU6IDEuMF07CisJLyogVGhlIGNvbnRlbnRWaWV3IHRh a2VzIG93bmVyc2hpcC4gICovCisJW2RvY2tfdGlsZS5jb250ZW50VmlldyBhZGRTdWJ2aWV3OiBs ZXZlbF9pbmRpY2F0b3JdOworICAgICAgfQorICBkb3VibGUgcHJvZ3Jlc3NfdmFsdWU7CisgIEJP T0wgaGlkZSA9IChOSUxQIChwcm9ncmVzcykKKwkgICAgICAgfHwgKCFOSUxQIChwcm9ncmVzcykg JiYgIShGTE9BVFAgKHByb2dyZXNzKSkpKTsKKyAgaWYgKCFoaWRlKQorICAgIHsKKyAgICAgIHBy b2dyZXNzX3ZhbHVlID0gWEZMT0FUX0RBVEEgKHByb2dyZXNzKTsKKyAgICAgIGhpZGUgPSAocHJv Z3Jlc3NfdmFsdWUgPCAwLjAgfHwgcHJvZ3Jlc3NfdmFsdWUgPiAxLjApOworICAgIH0KKyAgaWYg KGhpZGUpCisgICAgeworICAgICAgW2xldmVsX2luZGljYXRvciBzZXREb3VibGVWYWx1ZTogMC4w XTsKKyAgICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0SGlkZGVuOiBZRVNdOworICAgIH0KKyAgZWxz ZQorICAgIHsKKyAgICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0RG91YmxlVmFsdWU6IHByb2dyZXNz X3ZhbHVlXTsKKyAgICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0SGlkZGVuOiBOT107CisgICAgfQor ICBbZG9ja190aWxlIGRpc3BsYXldOworICB1bmJsb2NrX2lucHV0ICgpOworICByZXR1cm4gUW5p bDsKK30KKwogI2lmZGVmIE5TX0lNUExfQ09DT0EKIAogREVGVU4gKCJucy1zZW5kLWl0ZW1zIiwK QEAgLTM5NTcsNiArNDA4MCw5IEBAIC0gKExpc3BfT2JqZWN0KWxpc3BTdHJpbmcKICAgZGVmc3Vi ciAoJlNuc19zZXRfbW91c2VfYWJzb2x1dGVfcGl4ZWxfcG9zaXRpb24pOwogICBkZWZzdWJyICgm U25zX21vdXNlX2Fic29sdXRlX3BpeGVsX3Bvc2l0aW9uKTsKICAgZGVmc3ViciAoJlNuc19zaG93 X2NoYXJhY3Rlcl9wYWxldHRlKTsKKyAgZGVmc3ViciAoJlNuc19iYWRnZSk7CisgIGRlZnN1YnIg KCZTbnNfcmVxdWVzdF91c2VyX2F0dGVudGlvbik7CisgIGRlZnN1YnIgKCZTbnNfcHJvZ3Jlc3Nf aW5kaWNhdG9yKTsKICNpZmRlZiBOU19JTVBMX0NPQ09BCiAgIGRlZnN1YnIgKCZTbnNfc2VuZF9p dGVtcyk7CiAjZW5kaWYKQEAgLTQwMjMsNCArNDE0OSw2IEBAIC0gKExpc3BfT2JqZWN0KWxpc3BT dHJpbmcKICAgREVGU1lNIChRYXNzcV9kZWxldGVfYWxsLCAiYXNzcS1kZWxldGUtYWxsIik7CiAg IERFRlNZTSAoUXJ1bl9hdF90aW1lLCAicnVuLWF0LXRpbWUiKTsKICAgREVGU1lNIChReF9oaWRl X3RpcCwgIngtaGlkZS10aXAiKTsKKyAgREVGU1lNIChRaW5mb3JtYXRpb25hbCwgImluZm9ybWF0 aW9uYWwiKTsKKyAgREVGU1lNIChRY3JpdGljYWwsICJjcml0aWNhbCIpOwogfQpkaWZmIC0tZ2l0 IGEvc3JjL3czMmZucy5jIGIvc3JjL3czMmZucy5jCmluZGV4IDY3OWU4MTk3ZmQ4Li4xYTJmYzll ODg0MiAxMDA2NDQKLS0tIGEvc3JjL3czMmZucy5jCisrKyBiL3NyYy93MzJmbnMuYwpAQCAtMzUs NyArMzUsMTIgQEAgI2RlZmluZSBfV0lOMzJfV0lOTlQgMHgwNjAwCiAjaW5jbHVkZSA8Yy1jdHlw ZS5oPgogCiAjZGVmaW5lIENPQkpNQUNST1MgLyogQXNrIGZvciBDIGRlZmluaXRpb25zIGZvciBD T00uICAqLworI2lmICFkZWZpbmVkIE1JTkdXX1c2NCAmJiAhZGVmaW5lZCBDWUdXSU4KKyMgZGVm aW5lIElOSVRHVUlECisjZW5kaWYKKyNpbmNsdWRlIDxpbml0Z3VpZC5oPgogI2luY2x1ZGUgPHNo bG9iai5oPgorI2luY2x1ZGUgPHNob2JqaWRsLmg+CiAjaW5jbHVkZSA8b2xlaWRsLmg+CiAjaW5j bHVkZSA8b2JqaWRsLmg+CiAjaW5jbHVkZSA8b2xlMi5oPgpAQCAtMjM3LDYgKzI0Miw4IEBAIERF Q0xBUkVfSEFORExFKEhNT05JVE9SKTsKIHR5cGVkZWYgQk9PTCAoV0lOQVBJICogU2V0R2VzdHVy ZUNvbmZpZ19wcm9jKSAoSFdORCwgRFdPUkQsIFVJTlQsCiAJCQkJCSAgICAgICBFbWFjc19QR0VT VFVSRUNPTkZJRywgVUlOVCk7CiAKK3R5cGVkZWYgQk9PTCAoV0lOQVBJICogRmxhc2hXaW5kb3dF eF9Qcm9jKSAoUEZMQVNIV0lORk8gcGZ3aSk7CisKIHN0YXRpYyBUcmFja01vdXNlRXZlbnRfUHJv YyB0cmFja19tb3VzZV9ldmVudF9mbiA9IE5VTEw7CiBzdGF0aWMgSW1tR2V0Q29tcG9zaXRpb25T dHJpbmdfUHJvYyBnZXRfY29tcG9zaXRpb25fc3RyaW5nX2ZuID0gTlVMTDsKIHN0YXRpYyBJbW1H ZXRDb250ZXh0X1Byb2MgZ2V0X2ltZV9jb250ZXh0X2ZuID0gTlVMTDsKQEAgLTI1OSw2ICsyNjYs NyBAQCBERUNMQVJFX0hBTkRMRShITU9OSVRPUik7CiBzdGF0aWMgV1RTUmVnaXN0ZXJTZXNzaW9u Tm90aWZpY2F0aW9uX1Byb2MgV1RTUmVnaXN0ZXJTZXNzaW9uTm90aWZpY2F0aW9uX2ZuID0gTlVM TDsKIHN0YXRpYyBSZWdpc3RlclRvdWNoV2luZG93X3Byb2MgUmVnaXN0ZXJUb3VjaFdpbmRvd19m biA9IE5VTEw7CiBzdGF0aWMgU2V0R2VzdHVyZUNvbmZpZ19wcm9jIFNldEdlc3R1cmVDb25maWdf Zm4gPSBOVUxMOworc3RhdGljIEZsYXNoV2luZG93RXhfUHJvYyBmbGFzaF93aW5kb3dfZXhfZm4g PSBOVUxMOwogCiBleHRlcm4gQXBwZW5kTWVudVdfUHJvYyB1bmljb2RlX2FwcGVuZF9tZW51Owog CkBAIC0xMTAxMCw2ICsxMTAxOCwzMTMgQEAgREVGVU4gKCJ3MzItc3lzdGVtLWlkbGUtdGltZSIs IEZ3MzJfc3lzdGVtX2lkbGVfdGltZSwgU3czMl9zeXN0ZW1faWRsZV90aW1lLAogCiAjZW5kaWYK IAorDAorI2lmZGVmIFdJTkRPV1NOVAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwkJICAgICBUYXNrYmFy IEluZGljYXRvcnMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBNSU5HV19XNjQKKyAgLyog bWluZ3cub3JnJ3MgTWluR1cgZG9lc24ndCBoYXZlIHRoaXMgc3R1ZmYuICAqLworICBERUZJTkVf R1VJRChDTFNJRF9UYXNrYmFyTGlzdCwgMHg1NmZkZjM0NCwgMHhmZDZkLCAweDExZDAsIDB4OTUs MHg4YSwgMHgwMCwweDYwLDB4OTcsMHhjOSwweGEwLDB4OTApOworICBERUZJTkVfR1VJRChJSURf SVRhc2tiYXJMaXN0MywgMHhlYTFhZmI5MSwgMHg5ZTI4LCAweDRiODYsIDB4OTAsMHhlOSwgMHg5 ZSwweDlmLDB4OGEsMHg1ZSwweGVmLDB4YWYpOworI2VuZGlmCisKK0RFRlVOICgidzMyLWJhZGdl IiwKKyAgICAgICBGdzMyX2JhZGdlLAorICAgICAgIFN3MzJfYmFkZ2UsCisgICAgICAgMywgMywg MCwKKyAgICAgICBkb2M6IC8qIERpc3BsYXkgYSB0YXNrYmFyIGljb24gb3ZlcmxheSBpbWFnZSBv biB0aGUgc2VsZWN0ZWQgZnJhbWUuCitCQURHRSBpcyBhIHN0cmluZy4gIElmIEJBREdFIGlzIG5p bCwgcmVtb3ZlIHRoZSBvdmVybGF5LiAgRG8gbm90aGluZyBpZgorV2luZG93cyBkb2VzIG5vdCBz dXBwb3J0IHRoZSBJVGFza2Jhckxpc3QzIGludGVyZmFjZSBhbmQgcmV0dXJuIG5pbCwKK290aGVy d2lzZSByZXR1cm4gdC4gIERvIG5vdGhpbmcgaWYgdGhlIHNlbGVjdGVkIGZyYW1lIGlzIG5vdCAo eWV0KQorYXNzb2NpYXRlZCB3aXRoIGEgd2luZG93IGhhbmRsZS4gIEJBQ0tHUk9VTkQgYW5kIEZP UkVHUk9VTkQgYXJlIFJHQgordHJpcGxldCBzdHJpbmdzIG9mIHRoZSBmb3JtIFwiI1JSR0dCQlwi LiAgKi8pCisgIChMaXNwX09iamVjdCBiYWRnZSwgTGlzcF9PYmplY3QgYmFja2dyb3VuZCwgTGlz cF9PYmplY3QgZm9yZWdyb3VuZCkKK3sKKyAgc3RydWN0IGZyYW1lICpzZiA9IFNFTEVDVEVEX0ZS QU1FICgpOworICBIV05EIGh3bmQgPSBOVUxMOworCisgIGlmIChGUkFNRV9XMzJfUCAoc2YpICYm IEZSQU1FX0xJVkVfUCAoc2YpKQorICAgIGh3bmQgPSBGUkFNRV9XMzJfV0lORE9XIChzZik7CisK KyAgaWYgKGh3bmQgPT0gTlVMTCkKKyAgICByZXR1cm4gUW5pbDsKKworICBDb0luaXRpYWxpemUg KE5VTEwpOworICBJVGFza2Jhckxpc3QzICp0YXNrX2Jhcl9saXN0ID0gTlVMTDsKKyAgSFJFU1VM VCByID0gQ29DcmVhdGVJbnN0YW5jZSgmQ0xTSURfVGFza2Jhckxpc3QsCisJCQkgICAgICAgTlVM TCwKKwkJCSAgICAgICBDTFNDVFhfSU5QUk9DX1NFUlZFUiwKKwkJCSAgICAgICAmSUlEX0lUYXNr YmFyTGlzdDMsCisJCQkgICAgICAgKHZvaWQgKiopJnRhc2tfYmFyX2xpc3QpOworICBpZiAociAh PSBTX09LKQorICAgIHJldHVybiBRbmlsOworCisgIGlmICghTklMUCAoYmFkZ2UpICYmIFNUUklO R1AgKGJhZGdlKQorICAgICAgJiYgU1RSSU5HUCAoYmFja2dyb3VuZCkgJiYgU1RSSU5HUCAoZm9y ZWdyb3VuZCkpCisgICAgeworICAgICAgQ09MT1JSRUYgYmdfcmdiOworICAgICAgQ09MT1JSRUYg ZmdfcmdiOworICAgICAgdW5zaWduZWQgc2hvcnQgciwgZywgYjsKKyAgICAgIGlmIChwYXJzZV9j b2xvcl9zcGVjIChTU0RBVEEgKGJhY2tncm91bmQpLCAmciwgJmcsICZiKSkKKwliZ19yZ2IgPSBS R0IgKHIsIGIsIGIpOworICAgICAgZWxzZQorCXJldHVybiBRbmlsOworICAgICAgaWYgKHBhcnNl X2NvbG9yX3NwZWMgKFNTREFUQSAoZm9yZWdyb3VuZCksICZyLCAmZywgJmIpKQorCWZnX3JnYiA9 IFJHQiAociwgYiwgYik7CisgICAgICBlbHNlCisJcmV0dXJuIFFuaWw7CisKKyAgICAgIC8qIFBy ZXBhcmUgYSBzdHJpbmcgZm9yIGRyYXdpbmcgYW5kIGFzIGFsdC10ZXh0LiAgKi8KKyAgICAgIExp c3BfT2JqZWN0IGJhZGdlX3V0ZjggPSBFTkNPREVfVVRGXzggKGJhZGdlKTsKKyAgICAgIGludCB3 aWRlX2xlbiA9IHBNdWx0aUJ5dGVUb1dpZGVDaGFyIChDUF9VVEY4LCAwLAorCQkJCQkgICBTU0RB VEEgKGJhZGdlX3V0ZjgpLAorCQkJCQkgICAtMSwgTlVMTCwgMCk7CisgICAgICB3Y2hhcl90ICpi YWRnZV93ID0gYWxsb2NhICgod2lkZV9sZW4gKyAxKSAqIHNpemVvZiAod2NoYXJfdCkpOworICAg ICAgcE11bHRpQnl0ZVRvV2lkZUNoYXIgKENQX1VURjgsIDAsIFNTREFUQSAoYmFkZ2VfdXRmOCks IC0xLAorCQkJICAgIChMUFdTVFIpIGJhZGdlX3csCisJCQkgICAgd2lkZV9sZW4pOworCisgICAg ICAvKiBVc2UgdGhlIHNtYWxsIGljb24gc2l6ZSBXaW5kb3dzIHN1Z2dlc3RzIHRvIG5vdCBoYXJk IGNvZGUgMTZ4MTYuICAqLworICAgICAgaW50IGljb25fd2lkdGggPSBHZXRTeXN0ZW1NZXRyaWNz IChTTV9DWFNNSUNPTik7CisgICAgICBpbnQgaWNvbl9oZWlnaHQgPSBHZXRTeXN0ZW1NZXRyaWNz IChTTV9DWFNNSUNPTik7CisKKyAgICAgIEhEQyBod25kX2RjID0gR2V0REMgKGh3bmQpOworICAg ICAgSERDIGRjID0gQ3JlYXRlQ29tcGF0aWJsZURDIChod25kX2RjKTsKKworICAgICAgQklUTUFQ VjVIRUFERVIgYmk7CisgICAgICBtZW1zZXQgKCZiaSwgMCwgc2l6ZW9mIChiaSkpOworICAgICAg YmkuYlY1U2l6ZSA9IHNpemVvZiAoYmkpOworICAgICAgYmkuYlY1V2lkdGggPSBpY29uX3dpZHRo OworICAgICAgYmkuYlY1SGVpZ2h0ID0gLWljb25faGVpZ2h0OyAvKiBOZWdhdGl2ZSBmb3IgYSB0 b3AtZG93biBESUIuICAqLworICAgICAgYmkuYlY1UGxhbmVzID0gMTsKKyAgICAgIGJpLmJWNUJp dENvdW50ID0gMzI7CisgICAgICBiaS5iVjVDb21wcmVzc2lvbiA9IEJJX0JJVEZJRUxEUzsgIC8q IEVuYWJsZSB0aGUgbWFza3MgYmVsb3cuICAqLworICAgICAgYmkuYlY1UmVkTWFzayAgID0gIDB4 MDBGRjAwMDA7CisgICAgICBiaS5iVjVHcmVlbk1hc2sgPSAgMHgwMDAwRkYwMDsKKyAgICAgIGJp LmJWNUJsdWVNYXNrICA9ICAweDAwMDAwMEZGOworICAgICAgYmkuYlY1QWxwaGFNYXNrID0gIDB4 RkYwMDAwMDA7CisKKyAgICAgIERXT1JEICpiaXRtYXBfcGl4ZWxzOworICAgICAgSEJJVE1BUCBi aXRtYXAgPSBDcmVhdGVESUJTZWN0aW9uIChkYywgKEJJVE1BUElORk8gKikgJmJpLAorCQkJCQkg RElCX1JHQl9DT0xPUlMsCisJCQkJCSAodm9pZCAqKikgJmJpdG1hcF9waXhlbHMsCisJCQkJCSBO VUxMLCAwKTsKKyAgICAgIEhHRElPQkogb2xkX2JpdG1hcCA9IFNlbGVjdE9iamVjdChkYywgYml0 bWFwKTsKKworICAgICAgLyogRHJhdyBhIGNpcmNsZSBmaWxsZWQgd2l0aCBiZy4gICovCisgICAg ICBIQlJVU0ggYmdfYnJ1c2ggPSBDcmVhdGVTb2xpZEJydXNoIChiZ19yZ2IpOworICAgICAgSEdE SU9CSiBvbGRfYnJ1c2ggPSBTZWxlY3RPYmplY3QgKGRjLCBiZ19icnVzaCk7CisgICAgICBFbGxp cHNlIChkYywgMCwgMCwgaWNvbl93aWR0aCwgaWNvbl9oZWlnaHQpOworICAgICAgU2VsZWN0T2Jq ZWN0IChkYywgb2xkX2JydXNoKTsKKyAgICAgIERlbGV0ZU9iamVjdCAoYmdfYnJ1c2gpOworCisg ICAgICAvKiBEZXJpdmUgYSBmb250IHNjYWxlZCB0byBmaXQgdGhlIGljb24uICBGaXJzdCBmaW5k IHRoZSBzeXN0ZW0ncworCSBiYXNlIGZvbnQuICBUaGVuIHNjYWxlIGl0IHRvIGZpdCBpY29uX2hl aWdodC4gICovCisgICAgICBIRk9OVCBiYXNlX2ZvbnQ7CisgICAgICBCT09MIGNsZWFuX3VwX2Jh c2VfZm9udCA9IEZBTFNFOworICAgICAgaWYgKHN5c3RlbV9wYXJhbWV0ZXJzX2luZm9fd19mbikK Kwl7CisJICBOT05DTElFTlRNRVRSSUNTIG5jbTsKKwkgIG1lbXNldCAoJm5jbSwgMCwgc2l6ZW9m IChuY20pKTsKKwkgIG5jbS5jYlNpemUgPSBzaXplb2YgKG5jbSk7CisJICBTeXN0ZW1QYXJhbWV0 ZXJzSW5mbyAoU1BJX0dFVE5PTkNMSUVOVE1FVFJJQ1MsIHNpemVvZiAobmNtKSwgJm5jbSwgMCk7 CisJICBiYXNlX2ZvbnQgPSBDcmVhdGVGb250SW5kaXJlY3QgKCZuY20ubGZTbUNhcHRpb25Gb250 KTsKKwkgIGNsZWFuX3VwX2Jhc2VfZm9udCA9IFRSVUU7CisJfQorICAgICAgZWxzZQorCWJhc2Vf Zm9udCA9IChIRk9OVCkgR2V0U3RvY2tPYmplY3QgKERFRkFVTFRfR1VJX0ZPTlQpOworICAgICAg aWYgKGNsZWFuX3VwX2Jhc2VfZm9udCkKKwlEZWxldGVPYmplY3QgKGJhc2VfZm9udCk7CisKKyAg ICAgIExPR0ZPTlQgbGY7CisgICAgICBHZXRPYmplY3QgKGJhc2VfZm9udCwgc2l6ZW9mIChsZiks ICZsZik7CisgICAgICBsZi5sZldlaWdodCA9IEZXX0JPTEQ7CisgICAgICBsZi5sZk91dFByZWNp c2lvbiA9IE9VVF9PVVRMSU5FX1BSRUNJUzsKKyAgICAgIC8qIENsZWFyVHlwZSBxdWFsaXR5IG5l ZWRzIG9wcWF1ZSwgYnV0IHdlIGRyYXcgdHJhbnNwYXJlbnQuICAqLworICAgICAgbGYubGZRdWFs aXR5ID0gQU5USUFMSUFTRURfUVVBTElUWTsKKyAgICAgIC8qIE5lZ2F0aXZlIGxmSGVpZ2h0IGlu ZGljYXRlcyBwaXhlbCB1bml0cyB2cy4gcG9zaXRpdmUgaW4gcG9pbnRzLgorCSBVc2UgdGhlIExP R1BJWEVMU1kgcHgvaW4gb2YgdGhlIHByaW1hcnkgbW9uaXRvci4gICovCisgICAgICBsZi5sZkhl aWdodCA9IC1NdWxEaXYoaWNvbl9oZWlnaHQgLyAyLCAvKiBGaXQgfjMgY2hhcnMuICAqLworCQkJ ICAgIDcyLAorCQkJICAgIEdldERldmljZUNhcHMgKEdldERDIChOVUxMKSwgTE9HUElYRUxTWSkp OworICAgICAgLyogRW5zdXJlIGxmSGVpZ2h0IHBpeGVsIGludGVycHJldGF0aW9uLiAgKi8KKyAg ICAgIGludCBvbGRfbWFwX21vZGUgPSBTZXRNYXBNb2RlIChkYywgTU1fVEVYVCk7CisgICAgICBI Rk9OVCBzY2FsZWRfZm9udCA9IENyZWF0ZUZvbnRJbmRpcmVjdCAoJmxmKTsKKyAgICAgIEhHRElP Qkogb2xkX2ZvbnQgPSBTZWxlY3RPYmplY3QgKGRjLCBzY2FsZWRfZm9udCk7CisgICAgICBTZXRN YXBNb2RlIChkYywgb2xkX21hcF9tb2RlKTsKKworICAgICAgLyogRHJhdyBiYWRnZSB0ZXh0LiAg Ki8KKyAgICAgIFNldEJrTW9kZSAoZGMsIFRSQU5TUEFSRU5UKTsKKyAgICAgIFNldFRleHRDb2xv ciAoZGMsIGZnX3JnYik7CisgICAgICBSRUNUIHJlY3Q7CisgICAgICByZWN0LmxlZnQgPSByZWN0 LnRvcCA9IDA7CisgICAgICByZWN0LnJpZ2h0ID0gaWNvbl93aWR0aDsKKyAgICAgIHJlY3QuYm90 dG9tID0gaWNvbl9oZWlnaHQ7CisgICAgICBEcmF3VGV4dCAoZGMsIFNTREFUQSAoYmFkZ2VfdXRm OCksCisJCS0xLCAvKiBJbmRpY2F0ZSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLiAgKi8KKwkJJnJl Y3QsCisJCURUX0NFTlRFUiB8IERUX1ZDRU5URVIgfCBEVF9TSU5HTEVMSU5FIHwgRFRfTk9DTElQ KTsKKyAgICAgIFNlbGVjdE9iamVjdCAoZGMsIG9sZF9mb250KTsKKyAgICAgIERlbGV0ZU9iamVj dCAoc2NhbGVkX2ZvbnQpOworCisgICAgICAvKiBNYWtlIHRoZSBjaXJjbGUgYW5kIGl0cyB0ZXh0 IG9wYXF1ZSBieSBzZXR0aW5nIHRoZSBhbHBoYQorCSBjaGFubmVsIG9uIGVhY2ggcGl4ZWwgZmFs bGluZyB3aXRoaW4gdGhlIGNpcmNsZS4gICovCisgICAgICBpbnQgY2lyY2xlX2NlbnRlcl94ID0g aWNvbl93aWR0aCAvIDI7CisgICAgICBpbnQgY2lyY2xlX2NlbnRlcl95ID0gaWNvbl9oZWlnaHQg LyAyOworICAgICAgaW50IGNpcmNsZV9yYWRpdXMgPSAoaWNvbl93aWR0aCA8IGljb25faGVpZ2h0 CisJCQkgICA/IGljb25fd2lkdGgKKwkJCSAgIDogaWNvbl9oZWlnaHQpIC8gMiAtIDI7CisgICAg ICBpbnQgY2lyY2xlX3JhZGl1c19zcSA9IGNpcmNsZV9yYWRpdXMgKiBjaXJjbGVfcmFkaXVzOwor ICAgICAgRFdPUkQgKnBpeGVsOworICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBpY29uX2hlaWdo dDsgKyt5KQorICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGljb25fd2lkdGg7ICsreCkKKwkg IHsKKyAgICAgICAgICAgIGludCBkeCA9IHggLSBjaXJjbGVfY2VudGVyX3g7CisgICAgICAgICAg ICBpbnQgZHkgPSB5IC0gY2lyY2xlX2NlbnRlcl95OworICAgICAgICAgICAgaWYgKGR4ICogZHgg KyBkeSAqIGR5IDw9IGNpcmNsZV9yYWRpdXNfc3EpCisJICAgICAgeworCQkgIHBpeGVsID0gYml0 bWFwX3BpeGVscyArICh5ICogaWNvbl93aWR0aCArIHgpOworCQkgICpwaXhlbCB8PSAweGZmMDAw MDAwOyAvKiBGbGlwIHRoZSAweEFBUlJHR0JCIGFscGhhIGNoYW5uZWwuICAqLworCSAgICAgIH0K KwkgIH0KKworICAgICAgLyogRHVtbXkgbW9ub2Nocm9tZSBiaXRtYXAgbWFzaywgaWdub3JlZCB3 aGVuIHRoZSBjb2xvciBiaXRtYXAgaGFzCisJIGFuIGFscGhhIGNoYW5uZWwsIGJ1dCBuZWVkZWQg dG8gc2F0aXNmeSBDcmVhdGVJY29uSW5kaXJlY3QuICAqLworICAgICAgSEJJVE1BUCBtYXNrX2Jp dG1hcCA9IENyZWF0ZUJpdG1hcCAoaWNvbl93aWR0aCwgaWNvbl9oZWlnaHQsIDEsIDEsIE5VTEwp OworCisgICAgICAvKiBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93 aW4zMi9hcGkvd2ludXNlci9uZi13aW51c2VyLWNyZWF0ZWljb25pbmRpcmVjdAorCSBoYm1NYXNr IGFuZCBoYm1Db2xvciBtZW1iZXJzIG9mIHRoZSBJQ09OSU5GTyBzdHJ1Y3R1cmUgc2hvdWxkCisJ IG5vdCBhbHJlYWR5IGJlIHNlbGVjdGVkIGludG8gYSBkZXZpY2UgY29udGV4dC4gICovCisgICAg ICBTZWxlY3RPYmplY3QgKGRjLCBvbGRfYml0bWFwKTsKKworICAgICAgSUNPTklORk8gaWNvbl9p bmZvOworICAgICAgbWVtc2V0ICgmaWNvbl9pbmZvLCAwLCBzaXplb2YgKGljb25faW5mbykpOwor ICAgICAgaWNvbl9pbmZvLmZJY29uID0gVFJVRTsKKyAgICAgIGljb25faW5mby5oYm1NYXNrID0g bWFza19iaXRtYXA7CisgICAgICBpY29uX2luZm8uaGJtQ29sb3IgPSBiaXRtYXA7CisKKyAgICAg IEhJQ09OIGljb24gPSBDcmVhdGVJY29uSW5kaXJlY3QgKCZpY29uX2luZm8pOworICAgICAgdGFz a19iYXJfbGlzdC0+bHBWdGJsLT5TZXRPdmVybGF5SWNvbiAodGFza19iYXJfbGlzdCwgaHduZCwg aWNvbiwgYmFkZ2Vfdyk7CisKKyAgICAgIERlc3Ryb3lJY29uIChpY29uKTsKKyAgICAgIERlbGV0 ZU9iamVjdCAobWFza19iaXRtYXApOworICAgICAgRGVsZXRlT2JqZWN0IChiaXRtYXApOworICAg ICAgRGVsZXRlREMgKGRjKTsKKyAgICAgIFJlbGVhc2VEQyAoaHduZCwgaHduZF9kYyk7CisgICAg fQorICBlbHNlCisgICAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5TZXRPdmVybGF5SWNvbiAodGFz a19iYXJfbGlzdCwgaHduZCwgTlVMTCwgTlVMTCk7CisKKyAgdGFza19iYXJfbGlzdC0+bHBWdGJs LT5SZWxlYXNlKHRhc2tfYmFyX2xpc3QpOworICByZXR1cm4gUXQ7Cit9CisKK0RFRlVOICgidzMy LXJlcXVlc3QtdXNlci1hdHRlbnRpb24iLAorICAgICAgIEZ3MzJfcmVxdWVzdF91c2VyX2F0dGVu dGlvbiwKKyAgICAgICBTdzMyX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24sCisgICAgICAgMSwgMSwg MCwKKyAgICAgICBkb2M6IC8qIEZsYXNoIHRoZSBzZWxlY3RlZCBmcmFtZSdzIHRhc2tiYXIgaWNv biBhbmQvb3IgaXRzIHdpbmRvdy4KK0lmIFVSR0VOQ1kgaXMgbmlsLCBjYW5jZWwgdGhlIHJlcXVl c3QsIGlmIGFueS4gIElmIFVSR0VOQ1kgaXMgdGhlIHN5bWJvbAorYGluZm9ybWF0aW9uYWwnLCBm bGFzaCB0aGUgdGFza2JhciBpY29uLiAgSWYgVVJHRU5DWSBpcyB0aGUgc3ltYm9sCitgY3JpdGlj YWwnLCBmbGFzaCB0aGUgdGFza2JhciBpY29uIGFuZCB0aGUgZnJhbWUuICBXaW5kb3dzIHN0b3Bz CitmbGFzaGluZyBpZiB0aGUgdXNlciBmb2N1c2VzIHRoZSBmcmFtZS4gIERvIG5vdGhpbmcgaWYg V2luZG93cyBkb2VzIG5vdAorc3VwcG9ydCBGbGFzaFdpbmRvd0V4IGFuZCByZXR1cm4gbmlsLCBv dGhlcndpc2UgcmV0dXJuIHQuICBEbyBub3RoaW5nIGlmCit0aGUgZnJhbWUgaXMgbm90ICh5ZXQp IGFzc29jaWF0ZWQgd2l0aCBhIHdpbmRvdyBoYW5kbGUuICAqLykKKyAgKExpc3BfT2JqZWN0IHVy Z2VuY3kpCit7CisgIGlmIChmbGFzaF93aW5kb3dfZXhfZm4gPT0gTlVMTCkKKyAgICByZXR1cm4g UW5pbDsKKworICBzdHJ1Y3QgZnJhbWUgKnNmID0gU0VMRUNURURfRlJBTUUgKCk7CisgIEhXTkQg aHduZCA9IE5VTEw7CisKKyAgaWYgKEZSQU1FX1czMl9QIChzZikgJiYgRlJBTUVfTElWRV9QIChz ZikpCisgICAgaHduZCA9IEZSQU1FX1czMl9XSU5ET1cgKHNmKTsKKworICBpZiAoaHduZCA9PSBO VUxMKQorICAgIHJldHVybiBRbmlsOworCisgIEZMQVNIV0lORk8gZmxhc2hfaW5mbzsKKyAgZmxh c2hfaW5mby5jYlNpemUgPSBzaXplb2YoZmxhc2hfaW5mbyk7CisgIGZsYXNoX2luZm8udUNvdW50 ID0gMDsKKyAgZmxhc2hfaW5mby5kd1RpbWVvdXQgPSAwOworICBmbGFzaF9pbmZvLmh3bmQgPSBo d25kOworICBpZiAoIU5JTFAgKHVyZ2VuY3kpICYmIFNZTUJPTFAgKHVyZ2VuY3kpKQorICAgIHsK KyAgICAgIC8qIFRoZSBpbnRlbmRlZCBjYWxsZXIsICdzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24n LCBoYXMgYW4KKwkgb3B0aW9uYWwgdGltZXIgdG8gY2xlYXIgdGhlIGF0dGVudGlvbiBpbmRpY2F0 b3Igc28gdGhpcyB3aWxsCisJIGZsYXNoIHVudGlsIGNsZWFyZWQgdmlhIHRoZSB0aW1lciwgb3Ig dGhlIHdpbmRvdyBjb21lcyB0byB0aGUKKwkgZm9yZWdyb3VuZC4gIEZvciBpbmZvcm1hdGlvbmFs IGF0dGVudGlvbiwgZmxhc2ggdGhlIHRyYXkgaWNvbi4KKwkgRm9yIGNyaXRpY2FsIGF0dGVudGlv biwgZmxhc2ggdGhlIHRyYXkgaWNvbiBhbmQgdGhlIHdpbmRvdy4gICovCisgICAgICBpZiAoRVEg KHVyZ2VuY3ksIFFpbmZvcm1hdGlvbmFsKSkKKwlmbGFzaF9pbmZvLmR3RmxhZ3MgPSBGTEFTSFdf VFJBWSB8IEZMQVNIV19USU1FUk5PRkc7CisgICAgICBlbHNlIGlmIChFUSAodXJnZW5jeSwgUWNy aXRpY2FsKSkKKwlmbGFzaF9pbmZvLmR3RmxhZ3MgPSBGTEFTSFdfQUxMIHwgRkxBU0hXX1RJTUVS Tk9GRzsKKyAgICB9CisgIGVsc2UKKyAgICBmbGFzaF9pbmZvLmR3RmxhZ3MgPSBGTEFTSFdfU1RP UDsKKworICBmbGFzaF93aW5kb3dfZXhfZm4gKCZmbGFzaF9pbmZvKTsKKyAgcmV0dXJuIFF0Owor fQorCitERUZVTiAoInczMi1wcm9ncmVzcy1pbmRpY2F0b3IiLAorICAgICAgIEZ3MzJfcHJvZ3Jl c3NfaW5kaWNhdG9yLAorICAgICAgIFN3MzJfcHJvZ3Jlc3NfaW5kaWNhdG9yLAorICAgICAgIDEs IDEsIDAsCisgICAgICAgZG9jOiAvKiBTaG93IGEgcHJvZ3Jlc3MgYmFyIG9uIHRoZSBzZWxlY3Rl ZCBmcmFtZSdzIHRhc2tiYXIgaWNvbi4KK1BST0dSRVNTIGlzIGEgZmxvYXQgaW4gdGhlIHJhbmdl IDAuMCB0byAxLjAuICBJZiBQUk9HUkVTUyBpcyBuaWwsIHJlbW92ZQordGhlIHByb2dyZXNzIGlu ZGljYXRvci4gIERvIG5vdGhpbmcgaWYgV2luZG93cyBkb2VzIG5vdCBzdXBwb3J0IHRoZQorSVRh c2tiYXJMaXN0MyBpbnRlcmZhY2UgYW5kIHJldHVybiBuaWwsIG90aGVyd2lzZSByZXR1cm4gdC4g IERvIG5vdGhpbmcKK2lmIHRoZSBzZWxlY3RlZCBmcmFtZSBpcyBub3QgKHlldCkgYXNzb2NpYXRl ZCB3aXRoIGEgd2luZG93IGhhbmRsZSAgKi8pCisgIChMaXNwX09iamVjdCBwcm9ncmVzcykKK3sK KyAgc3RydWN0IGZyYW1lICpzZiA9IFNFTEVDVEVEX0ZSQU1FICgpOworICBIV05EIGh3bmQgPSBO VUxMOworCisgIGlmIChGUkFNRV9XMzJfUCAoc2YpICYmIEZSQU1FX0xJVkVfUCAoc2YpKQorICAg IGh3bmQgPSBGUkFNRV9XMzJfV0lORE9XIChzZik7CisKKyAgaWYgKGh3bmQgPT0gTlVMTCkKKyAg ICByZXR1cm4gUW5pbDsKKworICBDb0luaXRpYWxpemUgKE5VTEwpOworICBJVGFza2Jhckxpc3Qz ICp0YXNrX2Jhcl9saXN0ID0gTlVMTDsKKyAgSFJFU1VMVCByID0gQ29DcmVhdGVJbnN0YW5jZSgm Q0xTSURfVGFza2Jhckxpc3QsCisJCQkgICAgICAgTlVMTCwKKwkJCSAgICAgICBDTFNDVFhfSU5Q Uk9DX1NFUlZFUiwKKwkJCSAgICAgICAmSUlEX0lUYXNrYmFyTGlzdDMsCisJCQkgICAgICAgKHZv aWQgKiopJnRhc2tfYmFyX2xpc3QpOworICBpZiAociAhPSBTX09LKQorICAgIHJldHVybiBRbmls OworCisgIC8qIFNjYWxlIHRhc2sgYmFyIHByb2dyZXNzIGZyb20gMC4wLTEuMCB0byAwLTEwMC4g ICovCisgIFVMT05HTE9ORyBhZGpfcHJvZ3Jlc3MgPSAwOworICBpZiAoIU5JTFAgKHByb2dyZXNz KSAmJiBGTE9BVFAgKHByb2dyZXNzKSkKKyAgICAgIGFkal9wcm9ncmVzcyA9IChVTE9OR0xPTkcp ICgxMDAuMCAqCisJCQkJICBYRkxPQVRfREFUQSAocHJvZ3Jlc3MpKTsKKyAgaWYgKGFkal9wcm9n cmVzcyA+IDApCisgICAgeworICAgICAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5TZXRQcm9ncmVz c1N0YXRlICh0YXNrX2Jhcl9saXN0LAorCQkJCQkgICAgICAgaHduZCwgVEJQRl9OT1JNQUwpOwor ICAgICAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5TZXRQcm9ncmVzc1ZhbHVlICh0YXNrX2Jhcl9s aXN0LAorCQkJCQkgICAgICAgaHduZCwgYWRqX3Byb2dyZXNzLCAxMDApOworICAgIH0KKyAgZWxz ZQorICAgIHsKKyAgICAgIHRhc2tfYmFyX2xpc3QtPmxwVnRibC0+U2V0UHJvZ3Jlc3NTdGF0ZSAo dGFza19iYXJfbGlzdCwKKwkJCQkJICAgICAgIGh3bmQsIFRCUEZfTk9QUk9HUkVTUyk7CisgICAg fQorCisgIHRhc2tfYmFyX2xpc3QtPmxwVnRibC0+UmVsZWFzZSh0YXNrX2Jhcl9saXN0KTsKKyAg cmV0dXJuIFF0OworfQorCisjZW5kaWYgLyogV0lORE9XU05UICovCisKIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgogCQkJICAgIEluaXRpYWxpemF0aW9uCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0xMTUxMSw2ICsx MTgyNiwxNSBAQCBzeW1zX29mX3czMmZucyAodm9pZCkKICAgREVGU1lNIChRY2Fwc2xvY2ssICJj YXBzbG9jayIpOwogICBERUZTWU0gKFFrcF9udW1sb2NrLCAia3AtbnVtbG9jayIpOwogICBERUZT WU0gKFFzY3JvbGwsICJzY3JvbGwiKTsKKworICAjaWZkZWYgV0lORE9XU05UCisgIC8qIFRhc2ti YXIgaW5kaWNhdG9ycyBzdXBwb3J0LiAgKi8KKyAgZGVmc3ViciAoJlN3MzJfYmFkZ2UpOworICBk ZWZzdWJyICgmU3czMl9wcm9ncmVzc19pbmRpY2F0b3IpOworICBkZWZzdWJyICgmU3czMl9yZXF1 ZXN0X3VzZXJfYXR0ZW50aW9uKTsKKyAgREVGU1lNIChRaW5mb3JtYXRpb25hbCwgImluZm9ybWF0 aW9uYWwiKTsKKyAgREVGU1lNIChRY3JpdGljYWwsICJjcml0aWNhbCIpOworICAjZW5kaWYKIH0K IAogDApAQCAtMTE3OTksNiArMTIxMjMsOSBAQCBnbG9iYWxzX29mX3czMmZucyAodm9pZCkKICAg U2V0R2VzdHVyZUNvbmZpZ19mbgogICAgID0gKFNldEdlc3R1cmVDb25maWdfcHJvYykgZ2V0X3By b2NfYWRkciAodXNlcjMyX2xpYiwKIAkJCQkJICAgICAiU2V0R2VzdHVyZUNvbmZpZyIpOworICBm bGFzaF93aW5kb3dfZXhfZm4KKyAgICA9IChGbGFzaFdpbmRvd0V4X1Byb2MpIGdldF9wcm9jX2Fk ZHIgKHVzZXIzMl9saWIsCisJCQkJCSAgIkZsYXNoV2luZG93RXgiKTsKIAogICB7CiAgICAgSE1P RFVMRSBpbW0zMl9saWIgPSBHZXRNb2R1bGVIYW5kbGUgKCJpbW0zMi5kbGwiKTsKZGlmZiAtLWdp dCBhL3N5c3RlbS10YXNrYmFyLnRleGkgYi9zeXN0ZW0tdGFza2Jhci50ZXhpCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mOWU5MjBkNjkxYwotLS0gL2Rldi9udWxsCisr KyBiL3N5c3RlbS10YXNrYmFyLnRleGkKQEAgLTAsMCArMSwyNTQgQEAKK1xpbnB1dCB0ZXhpbmZv ICAgIEBjIC0qLXRleGluZm8tKi0KKworQHNldGZpbGVuYW1lIC4uLy4uL2luZm8vZG9jay1tb2Rl LmluZm8KK0BzZXR0aXRsZSBTeXN0ZW0gR1VJIFRhc2tiYXIgRmVhdHVyZXMKK0BpbmNsdWRlIGRv Y3N0eWxlLnRleGkKKworQGNvcHlpbmcKK1RoaXMgZmlsZSBkZXNjcmliZXMgRW1hY3Mgc3lzdGVt IEdVSSB0YXNrYmFyIGludGVncmF0aW9uLgorCitDb3B5cmlnaHQgQGNvcHlyaWdodHt9IDIwMjUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK0BxdW90YXRpb24KK1Blcm1pc3Npb24g aXMgZ3JhbnRlZCB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhpcyBkb2N1bWVu dAordW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2Us IFZlcnNpb24gMS4zIG9yCithbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgd2l0aCBubworSW52YXJpYW50IFNlY3Rpb25zLCB3aXRoIHRo ZSBGcm9udC1Db3ZlciBUZXh0cyBiZWluZyBgYEEgR05VIE1hbnVhbCwnJworYW5kIHdpdGggdGhl IEJhY2stQ292ZXIgVGV4dHMgYXMgaW4gKGEpIGJlbG93LiAgQSBjb3B5IG9mIHRoZSBsaWNlbnNl IGlzCitpbmNsdWRlZCBpbiB0aGUgc2VjdGlvbiBlbnRpdGxlZCBgYEdOVSBGcmVlIERvY3VtZW50 YXRpb24gTGljZW5zZScnLgorCisoYSkgVGhlIEZTRidzIEJhY2stQ292ZXIgVGV4dCBpczogYGBZ b3UgaGF2ZSB0aGUgZnJlZWRvbSB0byBjb3B5IGFuZAorbW9kaWZ5IHRoaXMgR05VIG1hbnVhbC4n JworQGVuZCBxdW90YXRpb24KK0BlbmQgY29weWluZworCitAZGlyY2F0ZWdvcnkgRW1hY3MgbWlz YyBmZWF0dXJlcworQGRpcmVudHJ5CisqIFN5c3RlbSBHVUkgVGFza2JhcjogKHRhc2tiYXIpLiAg ICAgICBTeXN0ZW0gR1VJIHRhc2tiYXIgaW50ZWdyYXRpb24uCitAZW5kIGRpcmVudHJ5CisKK0B0 aXRsZXBhZ2UKK0B0aXRsZSBTeXN0ZW0gR1VJIFRhc2tiYXIgSW50ZWdyYXRpb24KK0BwYWdlCitA dnNraXAgMHB0IHBsdXMgMWZpbGxsCitAaW5zZXJ0Y29weWluZworQGVuZCB0aXRsZXBhZ2UKKwor QGNvbnRlbnRzCisKK0BpZm5vdHRleAorQG5vZGUgVG9wCitAdG9wIEVtYWNzIFN5c3RlbSBHVUkg VGFza2JhciBJbnRlZ3JhdGlvbgorVGhpcyBtYW51YWwgZGVzY3JpYmVzIEVtYWNzIHN5c3RlbSBH VUkgdGFza2JhciBpbnRlZ3JhdGlvbi4KKworVGhlIEBkZm57c3lzdGVtLXRhc2tiYXJ9IHBhY2th Z2UgYWRkcyBFbWFjcyBpbnRlZ3JhdGlvbiB3aXRoIHN5c3RlbSBHVUkKK3Rhc2tiYXIgKGFsc28g Y2FsbGVkIGRvY2tzIG9yIGxhdW5jaGVycyBvciBzb21ldGhpbmcgc2ltaWxhcikgdG8gZGlzcGxh eQorYSB0YXNrYmFyIGljb24gImJhZGdlIiBvdmVybGF5LCBhIHByb2dyZXNzIGJhciByZXBvcnQg b3ZlcmxheSwgYWxlcnQgdGhlCit1c2VyIHRoYXQgYW4gRW1hY3Mgc2Vzc2lvbiBuZWVkcyBhdHRl bnRpb24sIG9mdGVuIGJ5IGZsYXNoaW5nIG9yCitib3VuY2luZyB0aGUgRW1hY3MgYXBwbGljYXRp b24gaWNvbi4gIFRhc2tiYXIgY2FwYWJsZSBzeXN0ZW1zIGFyZQorR05VL0xpbnV4IHZpYSBELUJ1 cywgbWFjT1MvR05Vc3RlcCAxMC41KywgTVMtV2luZG93cyA3Ky4KKworT24gR05VL0xpbnV4LCB0 aGUgdmlzaWJsZSBlZmZlY3RzIHdpbGwgYXBwZWFyIG9uIHRoZSBkZXN0aW5hdGlvbnMKK2RldGVy bWluZWQgYnkgeW91ciBzaGVsbCBleHRlbnNpb24sIG1vc3Qgb2Z0ZW4gdGhlIGFwcGxpY2F0aW9u IGxhdW5jaGVyCitvciBkb2NrIHBhbmVsLCBvciB0aGUgdG9wIHBhbmVsLiAgRWZmZWN0cyBhcmUg Z2xvYmFsIGZvciBhbiBFbWFjcworaW5zdGFuY2UuCisKK09uIG1hY09TL0dOVXN0ZXAsIHRoZSBl ZmZlY3RzIHdpbGwgYXBwZWFyIG9uIHRoZSBEb2NrIGFuZCBpbiB0aGUgQXBwCitTd2l0Y2hlci4g IEVmZmVjdHMgYXJlIGdsb2JhbCBmb3IgYW4gRW1hY3MgaW5zdGFuY2UuCisKK09uIE1TLVdpbmRv d3MsIHRoZSBlZmZlY3RzIGFwcGVhciBvbiB0aGUgdGFza2Jhci4gIEVmZmVjdHMgYXJlCithc3Nv Y2lhdGVkIHdpdGggdGhlIGZyYW1lIGZyb20gd2hpY2ggdGhleSBhcmUgaW5pdGlhdGVkLgorCitA aW5zZXJ0Y29weWluZworCitAbWVudQorKiBPdmVydmlldzo6ICAgICAgICAgICAgICAgICAgICBP dmVydmlldyBvZiBzeXN0ZW0gR1VJIHRhc2tiYXIgaW50ZWdyYXRpb24KKyogUHJlcmVxdWlzaXRl czo6CisqIFVzZXIgT3B0aW9uczo6CisqIEZ1bmN0aW9uIFJlZmVyZW5jZTo6CisqIFN5c3RlbSBU YXNrYmFyIFVzYWdlIEV4YW1wbGVzOjoKKyogR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNl OjogIFRoZSBsaWNlbnNlIGZvciB0aGlzIGRvY3VtZW50YXRpb24uCisqIEZ1bmN0aW9uIEluZGV4 OjoKKyogVmFyaWFibGUgSW5kZXg6OgorQGVuZCBtZW51CitAZW5kIGlmbm90dGV4CisKK0Bub2Rl IE92ZXJ2aWV3CitAY2hhcHRlciBPdmVydmlldworCitUaGUgU3lzdGVtIFRhc2tiYXIgcGFja2Fn ZSBwcm92aWRlcyB0aGVzZSBzeXN0ZW0gR1VJIHRhc2tiYXIgZmVhdHVyZXM6CisKK0BpdGVtaXpl IEBidWxsZXQKK0BpdGVtIEljb24gYmFkZ2UKK0BpdGVtIEljb24gcHJvZ3Jlc3MgaW5kaWNhdG9y CitAaXRlbSBJY29uIGF0dGVudGlvbiBhbGVydAorQGVuZCBpdGVtaXplCisKK0Bub2RlIFByZXJl cXVpc2l0ZXMKK0BjaGFwdGVyIFByZXJlcXVpc2l0ZXMKKworbWFjT1MvR05Vc3RlcCwgYW5kIE1T LVdpbmRvd3MgdXNlcnMgbmVlZCBubyBzcGVjaWFsIGNvbmZpZ3VyYXRpb24uCisKK09uIEdOVS9M aW51eCBzeXN0ZW1zLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgdmlhIEQtQnVzIHRvIGNvbnRyb2wg R1VJCitzaGVsbHMgYW5kL29yIHNoZWxsIGV4dGVuc2lvbnMgc3VjaCBhcworQGZpbGV7aHR0cHM6 Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vMzA3L2Rhc2gtdG8tZG9jay99IHRoYXQK K2ltcGxlbWVudCBVYnVudHUncyBVbml0eSBsYXVuY2hlciBzcGVjIHdoaWNoIHlvdSBjYW4gcmVh ZCBtb3JlIGFib3V0CitoZXJlIEBmaWxle2h0dHBzOi8vd2lraS51YnVudHUuY29tL1VuaXR5L0xh dW5jaGVyQVBJfS4KKworQG5vZGUgVXNlciBPcHRpb25zCitAY2hhcHRlciBVc2VyIE9wdGlvbnMK KworQGRlZm9wdCBzeXN0ZW0tdGFza2Jhci11c2UtcHJvZ3Jlc3MtcmVwb3J0ZXIKK1RoZSB2YXJp YWJsZSBAY29kZXtzeXN0ZW0tdGFza2Jhci11c2UtcHJvZ3Jlc3MtcmVwb3J0ZXJ9IGlzIHVzZWQg dG8KK3N1cHBsZW1lbnQgYnVpbHQtaW4gcHJvZ3Jlc3MgcmVwb3J0cyB3aXRoIEdVSSB0YXNrYmFy IGljb24gcHJvZ3Jlc3MgYmFycworaW4gYWRkaXRpb24gdG8gdGhlIGRlZmF1bHQgZWNobyBhcmVh IHJlcG9ydHMuICBJdCBkZWZhdWx0cyB0byBAY29kZXt0fS4KKysrKyBAeHJlZntQcm9ncmVzcyws IERpc3BsYXksIGVsaXNwLCBUaGUgRW1hY3MgTGlzcCBSZWZlcmVuY2UgTWFudWFsfS4KK0BlbmQg ZGVmb3B0CisKK0BkZWZvcHQgc3lzdGVtLXRhc2tiYXItY2xlYXItYXR0ZW50aW9uLW9uLWZyYW1l LWZvY3VzCitUaGUgdmFyaWFibGUgQGNvZGV7c3lzdGVtLXRhc2tiYXItY2xlYXItYXR0ZW50aW9u LW9uLWZyYW1lLWZvY3VzfSBjYW4gYmUKK2N1c3RvbWl6ZWQgdG8gY2xlYXIgdGhlIHRhc2tiYXIg aWNvbiBhdHRlbnRpb24gaW5kaWNhdG9yIHdoZW4gYW55IEVtYWNzCitHVUkgZnJhbWUgaXMgZm9j dXNlZC4gIFRoaXMgaXMgaW1wbGVtZW50ZWQgZm9yIEdOVS9MaW51eCwgYW5kIGlzIGlnbm9yZWQK K29uIE1TLVdpbmRvd3MgYW5kIG1hY09TL0dOVXN0ZXAgd2hpY2ggYXV0b21hdGljYWxseSBjbGVh ciB0aGUgYXR0ZW50aW9uCitpbmRpY2F0b3IuICBJdCBkZWZhdWx0cyB0byBAY29kZXt0fS4gIEN1 c3RvbWl6ZSB0aGlzIGJlZm9yZSBlbmFibGluZworQGNvZGV7c3lzdGVtLXRhc2tiYXItbW9kZX0u CitAZW5kIGRlZm9wdAorCitAZGVmb3B0IHN5c3RlbS10YXNrYmFyLWRidXMtZGVza3RvcC1maWxl LW5hbWUKK1RoZSB2YXJpYWJsZSBAY29kZXtzeXN0ZW0tdGFza2Jhci1kYnVzLWRlc2t0b3AtZmls ZS1uYW1lfSBpcyBjb25zdWx0ZWQKK29uIEdOVS9MaW51eCBELUJ1cyBzeXN0ZW1zLCBhbmQgY2Fu IGJlIGN1c3RvbWl6ZWQgdG8gaW5kaWNhdGUgd2hpY2gKK2Rlc2t0b3AgZmlsZSBuYW1lIGlkZW50 aWZpZXMgeW91ciBFbWFjcyBpbnN0YW5jZS4gIEl0IGRlZmF1bHRzIHRvIHRoZQorZGVza3RvcCBm aWxlIGJhc2UgbmFtZSBAY29kZXsiZW1hY3NjbGllbnQifSBhbmQgbWlnaHQgbmVlZCB0byBiZSBz ZXQgdG8KK0Bjb2RleyJlbWFjcyJ9IG9uIHlvdXIgc3lzdGVtLiAgRW1hY3MgaW5zdGFsbGVkIGJ5 IExpbnV4IGRpc3RyaWJ1dGlvbnMKK2NhbiB2YXJ5IG9uIHRoZWlyIG5hbWluZyBzY2hlbWUgYW5k IG9mdGVuIGluY2x1ZGUgZGVza3RvcCBmaWxlcyBmb3IKK2JvdGguCitAZW5kIGRlZm9wdAorCitA ZGVmb3B0IHN5c3RlbS10YXNrYmFyLWRidXMtdGltZW91dAorVGhlIHZhcmlhYmxlIEBjb2Rle3N5 c3RlbS10YXNrYmFyLWRidXMtdGltZW91dH0gaXMgY29uc3VsdGVkIG9uCitHTlUvTGludXggRC1C dXMgc3lzdGVtcywgYW5kIGNhbiBiZSBjdXN0b21pemVkIHRvIHNwZWNpZnkgdGhlIG51bWJlciBv ZgorbWlsbGlzZWNvbmRzIEVtYWNzIHdpbGwgd2FpdCBmb3IgRC1CdXMgcmVzcG9uc2VzIGJlZm9y ZSB0aW1pbmcgb3V0IGFuZAorY29uc2lkZXJpbmcgbWVzc2FnZXMgdW5kZWxpdmVyYWJsZS4gIEl0 IGRlZmF1bHRzIHRvIG5pbCB3aGljaCB3aWxsIHVzZQordGhlIEQtQnVzIHBhY2thZ2UgZGVmYXVs dCBvZiAyNTAwMCBtaWxsaXNlY29uZHMsIHdoaWNoIHNlZSwKK0BweHJlZntUb3AsLCwgZGJ1cywg RC1CdXMgaW50ZWdyYXRpb24gaW4gRW1hY3N9LgorQGVuZCBkZWZvcHQKKworQG5vZGUgRnVuY3Rp b24gUmVmZXJlbmNlCitAY2hhcHRlciBGdW5jdGlvbiBSZWZlcmVuY2UKKworQGRlZmZuIHN5c3Rl bS10YXNrYmFyLW1vZGUKK0Bjb2Rle3N5c3RlbS10YXNrYmFyLW1vZGV9IG11c3QgYmUgZW5hYmxl ZCB0byBpbml0aWFsaXplIHRoZSBzeXN0ZW0gYmFjaworZW5kIGJlZm9yZSBjYWxsaW5nIGFueSBv ZiB0aGlzIHBhY2thZ2UncyBmdW5jdGlvbnMuICBPbiBhIEdOVS9MaW51eAorRC1CdXMgc3lzdGVt LCB0aGUgcmVxdWlyZWQgRC1CdXMgcHJvdG9jb2wgaXMgcHJvYmVkIGFuZCBpZiBub3QKK2F2YWls YWJsZSwgYW4gZXJyb3IgaXMgc2lnbmFsZWQuCitAZW5kIGRlZmZuCisKK0BkZWZ1biBzeXN0ZW0t dGFza2Jhci1iYWRnZSAmb3B0aW9uYWwgY291bnQKK0Rpc3BsYXkgdGhlIHRhc2tiYXIgaWNvbiBi YWRnZSBzZXQgdG8gQHZhcntjb3VudH0uICBJZiBAdmFye2NvdW50fSBpcworQGNvZGV7bmlsfSwg Y2xlYXIgdGhlIGJhZGdlLiAgQHZhcntjb3VudH0gaXMgdHlwaWNhbGx5IGFuIGludGVnZXIuCisK K0lmIEB2YXJ7Y291bnR9IGlzIGEgc3RyaW5nLCBpdCBpcyBjb252ZXJ0ZWQgdG8gYW4gaW50ZWdl ciBvbiBzeXN0ZW1zCit0aGF0IGRvIG5vdCBzdXBwb3J0IHN0cmluZyBiYWRnZXMsIHN1Y2ggYXMg R05VL0xpbnV4IEQtQnVzLCBhbmQgdGhlCitiYWRnZSB3aWxsIGJlIGNsZWFyZWQgaWYgdGhlIHN0 cmluZyBpcyBhbiBpbnZhbGlkIGludGVnZXIKK3JlcHJlc2VudGF0aW9uLiAgT24gc3lzdGVtcyB0 aGF0IHN1cHBvcnQgc3RyaW5ncywgc3VjaCBhcyBtYWNPUy9HTlVzdGVwCithbmQgTVMtV2luZG93 cywgdGhlIGJhZGdlIGlzIHNldCB0byB0aGUgc3RyaW5nIGFuZCBkaXNwbGF5ZWQsIGFuZCBtYXkg YmUKK3RydW5jYXRlZCB0byBmaXQgdGhlIHZpc3VhbCBzcGFjZSBhbGxvY2F0ZWQgYnkgdGhlIHN5 c3RlbS4gIEluIGFueSBjYXNlLAoraWYgdGhlIHN0cmluZyBpcyBlbXB0eSwgY2xlYXIgdGhlIGJh ZGdlLgorQGVuZCBkZWZ1bgorCitAZGVmdW4gc3lzdGVtLXRhc2tiYXItYXR0ZW50aW9uICZvcHRp b25hbCB1cmdlbmN5IHRpbWVvdXQKK0Rpc3BsYXkgYSB0YXNrYmFyIGljb24gYWxlcnQuICBUaGlz IHdpbGwgcmVzdWx0IGluIGEgYm91bmNpbmcgb3IKK2ZsYXNoaW5nIHRhc2tiYXIgaWNvbi4gIE9u IHNvbWUgYmFjayBlbmRzLCBhdHRlbnRpb24gd2lsbCBiZSBkaXNwbGF5ZWQKK29ubHkgaWYgRW1h Y3MgaXMgbm90IHRoZSBjdXJyZW50bHkgZm9jdXNlZCBhcHBsaWNhdGlvbi4KKworSWYgQHZhcnt1 cmdlbmN5fSBpcyB0aGUgc3ltYm9sIEBjb2Rle2luZm9ybWF0aW9uYWx9LCBub3JtYWwgYXR0ZW50 aW9uIGlzCityZXF1ZXN0ZWQuICBJZiBAdmFye3VyZ2VuY3l9IGlzIHRoZSBzeW1ib2wgQGNvZGV7 Y3JpdGljYWx9LCB1cmdlbnQKK2F0dGVudGlvbiBpcyByZXF1ZXN0ZWQuICBJZiBAdmFye3VyZ2Vu dH0gaXMgQGNvZGV7bmlsfSwgY2xlYXIgdGhlCithdHRlbnRpb24gaW5kaWNhdG9yLgorCitFbWFj cyB3YWl0cyBAdmFye3RpbWVvdXR9IHNlY29uZHMgYmVmb3JlIGF1dG9tYXRpY2FsbHkgcmVtb3Zp bmcgdGhlCitpbmRpY2F0b3IuICBJZiBAdmFye3RpbWVvdXR9IGlzIEBjb2Rle25pbH0sIHRoZSBh dHRlbnRpb24gaW5kaWNhdG9yIHdpbGwKK2JlIGNsZWFyZWQgYnkgdGhlIHN5c3RlbSBvciBieSBj YWxsaW5nIHRoaXMgZnVuY3Rpb24gYWdhaW4gcGFzc2luZyBhCitAY29kZXtuaWx9IHVyZ2VuY3ku CisKK09uIHNvbWUgYmFjayBlbmRzLCBhbiBAY29kZXtpbmZvcm1hdGlvbmFsfSBhdHRlbnRpb24g cmVxdWVzdCB3aWxsIHRpbWUKK291dCBhdXRvbWF0aWNhbGx5LiAgSW4gY29udHJhc3QsIGEgQGNv ZGV7Y3JpdGljYWx9IHJlcXVlc3QgcmVxdWlyZXMgdGhhdAordGhlIHVzZXIgYnJpbmcgRW1hY3Mg aW50byBmb2N1cyBhbmQgd2lsbCBub3QgdGltZSBvdXQuICBPbiBzb21lIGJhY2sKK2VuZHMsIEBj b2Rle2NyaXRpY2FsfSBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIEBjb2Rle2luZm9ybWF0aW9uYWx9 LgorQGVuZCBkZWZ1bgorCitAZGVmdW4gc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MgJm9wdGlvbmFs IHByb2dyZXNzCitTZXQgdGhlIHRhc2tiYXIgaWNvbiB0byBpbmRpY2F0ZSBwcm9ncmVzcyBvZiBh IGxvbmctcnVubmluZyBvcGVyYXRpb24uCitUYXNrYmFyIHByb2dyZXNzIGlzIHR5cGljYWxseSBy ZXByZXNlbnRlZCBhcyBhIGdyYXBoaWNhbCBiYXIgdGhhdAorZnJhY3Rpb25hbGx5IHNwYW5zIHRo ZSB0YXNrYmFyIGljb24uICBAdmFye3Byb2dyZXNzfSBpcyBhIGZsb2F0IGluIHRoZQorcmFuZ2Ug MC4wIHRvIDEuMC4gIElmIEB2YXJ7cHJvZ3Jlc3N9IGlzIG5pbCwgcmVtb3ZlIHRoZSBwcm9ncmVz cworaW5kaWNhdG9yLiAgVGhlIGJ1aWx0LWluIHByb2dyZXNzIHJlcG9ydGVyIHNob3VsZCBiZSBw cmVmZXJyZWQgb3ZlcgorbWFudWFsbHkgaW5kaWNhdGluZyBwcm9ncmVzcy4KKysrKworQHhyZWZ7 UHJvZ3Jlc3MsLCBEaXNwbGF5LCBlbGlzcCwgVGhlIEVtYWNzIExpc3AgUmVmZXJlbmNlIE1hbnVh bH0uCitAZW5kIGRlZnVuCisKK0Bub2RlIFN5c3RlbSBUYXNrYmFyIFVzYWdlIEV4YW1wbGVzCitA Y2hhcHRlciBTeXN0ZW0gVGFza2JhciBVc2FnZSBFeGFtcGxlcworCitAbGlzcAorQGdyb3VwCis7 OyBFbmFibGUgYW5kIGluaXRpYWxpemUgc3lzdGVtLXRhc2tiYXItbW9kZSBiZWZvcmUgY2FsbGlu ZyBpdHMKKzs7IGNvbXBhbmlvbiBmdW5jdGlvbnMuCisoc3lzdGVtLXRhc2tiYXItbW9kZSkKKwor OzsgRGlzcGxheSBhIGJhZGdlIG9uIHRoZSB0YXNrYmFyIGljb24uCisoc3lzdGVtLXRhc2tiYXIt YmFkZ2UgZW1hY3MtbWFqb3ItdmVyc2lvbikKKyhzeXN0ZW0tdGFza2Jhci1iYWRnZSAiMzEiKSA7 IGNvbnZlcnRlZCB0byBpbnRlZ2VyIG9uIEdOVS9MaW51eAorKHN5c3RlbS10YXNrYmFyLWJhZGdl ICJUZXN0IikgOyB3b3JrcyBvbiBtYWNPUy9HTlVzdGVwIGFuZCBNUy1XaW5kb3dzCisKKzs7IENs ZWFyIHRoZSBiYWRnZS4KKyhzeXN0ZW0tdGFza2Jhci1iYWRnZSBuaWwpCis7OyBPciBqdXN0Ciso c3lzdGVtLXRhc2tiYXItYmFkZ2UpCitAZW5kIGdyb3VwCisKK0Bncm91cAorOzsgR2V0IHRoZSB1 c2VyJ3MgYXR0ZW50aW9uLgorKHN5c3RlbS10YXNrYmFyLWF0dGVudGlvbiAnaW5mb3JtYXRpb25h bCAzKSA7IGNsZWFyIHRoZSByZXF1ZXN0IGFmdGVyIDMgc2Vjb25kcworKHN5c3RlbS10YXNrYmFy LWF0dGVudGlvbiAnY3JpdGljYWwpIDsgY2xlYXIgd2hlbiB0aGUgRW1hY3MgYXBwbGljYXRpb24g aXMgZm9jdXNlZAorCis7OyBDbGVhciB0aGUgYXR0ZW50aW9uIHJlcXVlc3QuCisoc3lzdGVtLXRh c2tiYXItYXR0ZW50aW9uIG5pbCkKKzs7IE9yIGp1c3QKKyhzeXN0ZW0tdGFza2Jhci1hdHRlbnRp b24pCitAZW5kIGdyb3VwCisKK0Bncm91cAorOzsgRW5hYmxlIHRhc2tiYXIgaWNvbiBwcm9ncmVz cyBmZWVkYmFjay4KKyhzZXRvcHQgc3lzdGVtLXRhc2tiYXItdXNlLXByb2dyZXNzLXJlcG9ydGVy IHQpIDsgdGhpcyBpcyB0aGUgZGVmYXVsdAorCis7OyBSZXBvcnQgYGRvdGltZXNgIHByb2dyZXNz IG9uIHRoZSB0YXNrYmFyIGljb24uCisoZG90aW1lcy13aXRoLXByb2dyZXNzLXJlcG9ydGVyCisg ICAgKGkgMTApCisgICAgIkNvdW50aW5nIGZyb20gMSB0byAxMC4uLiIKKyAgKHNsZWVwLWZvciAx KSkKKworOzsgUmVwb3J0IGBkb2xpc3RgIHByb2dyZXNzIG9uIHRoZSB0YXNrYmFyIGljb24uCiso ZG9saXN0LXdpdGgtcHJvZ3Jlc3MtcmVwb3J0ZXIKKyAgICAoaSAobWFrZS1saXN0IDEwIHQpKQor ICAgICJQcm9ncmVzcyBmcm9tIDEgdG8gMTAgZWxlbWVudHMuLi4iCisgIChzbGVlcC1mb3IgMSkp CitAZW5kIGdyb3VwCitAZW5kIGxpc3AKKworQG5vZGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBM aWNlbnNlCitAYXBwZW5kaXggR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlCitAaW5jbHVk ZSBkb2NsaWNlbnNlLnRleGkKKworQG5vZGUgRnVuY3Rpb24gSW5kZXgKK0B1bm51bWJlcmVkIEZ1 bmN0aW9uIEluZGV4CitAcHJpbnRpbmRleCBmbgorCitAbm9kZSBWYXJpYWJsZSBJbmRleAorQHVu bnVtYmVyZWQgVmFyaWFibGUgSW5kZXgKK0BwcmludGluZGV4IHZyCisKK0BieWUKKworQGMgRW5k OgotLSAKMi40Ny4xCgo= --00000000000004cc6f06462c3d99--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 17 Dec 2025 19:15:23 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 17 14:15:23 2025
Received: from localhost ([127.0.0.1]:45817 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vVwza-0007UR-Pu
for submit <at> debbugs.gnu.org; Wed, 17 Dec 2025 14:15:23 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:63186)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vVwzZ-0007Qa-0m
for 79859 <at> debbugs.gnu.org; Wed, 17 Dec 2025 14:15:21 -0500
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 6FA3D441050;
Wed, 17 Dec 2025 14:15:15 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1765998913;
bh=Xdrshg6mV91XeOqtgZSo3ch6EK3EE75Y9lgxMKgifOo=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=X+uJlwHGHQNT1KmneHXM0N+bcACSwWoCEVJvAgUcZ+6Lw/8BeWfY5wrUkMjYjSToy
6kepiapEPZFSvmKoTksJqxz3HLGgGRvF2RZiyr68az910l8P1eXLQze4Xa9Jw9mW7Q
3q/PMTaGX9NrcAbQkQkKMl3sUI97WoGxS0matKpAvCUI/l8bR6lSPOaJRCA6VcSYl/
Q2sQ/CvRJbCyPkl5JJW1McjSNkqrhJ6MVrjGKjMQ5rAO6hl0XJcrxEhYS1N+AkQK6B
4QWjjzZNfA1M+RZIyb3TwhzKKgRqmPY/mzkgj3NqPcvLxM1x17lEYjMmRNkx/7jSoT
Fq0OyAcEPrPrQ==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id A3E7C440B0D;
Wed, 17 Dec 2025 14:15:13 -0500 (EST)
Received: from asado (unknown [23.233.149.155])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 7D057120477;
Wed, 17 Dec 2025 14:15:13 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: =?windows-1252?Q?St=E9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
In-Reply-To: <CAN+1HbqfpV7aDTRVxvqBkvA0AYJvPHmDYxzfc2xR5rYYD1dtBg@HIDDEN>
Message-ID: <jwvy0n1hqyl.fsf-monnier+emacs@HIDDEN>
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<86bjkxhuca.fsf@HIDDEN>
<CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
<87pl932wqd.fsf@HIDDEN>
<CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN>
<86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN>
<86ikedavlh.fsf@HIDDEN>
<CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN>
<jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN>
<CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN>
<jwv7buss9jh.fsf-monnier+emacs@HIDDEN>
<CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN>
<jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN>
<CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN>
<CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN>
<jwvqzstjc9w.fsf-monnier+emacs@HIDDEN>
<CAN+1HbqfpV7aDTRVxvqBkvA0AYJvPHmDYxzfc2xR5rYYD1dtBg@HIDDEN>
Date: Wed, 17 Dec 2025 14:15:12 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.011 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>,
michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
>> > If someone configures the hook on their own
>> What do you mean by that, exactly?
>> It could mean:
>> - They call `add-hook` themselves.
> I meant this.
I think we should not support this. I.e. the users who do that would
deserve whichever broken behavior may follow.
>> Depends what behavior we're looking for.
>>
>> Do we want to have the two boolean options be independent, or do we
>> want `system-taskbar-use-progress-reporter` to be a config option of
>> `system-taskbar-mode` which has an effect only when that mode
>> is enabled?
>>
>> I think this is the only choice we need to make. After that, it's
>> a small matter of making the code reflect that choice.
>>
>
> I think the most flexible thing to do would be to keep them independent and
> ensure that the system-taskbar progress reporter function does nothing when
> the mode is not enabled.
Hmm... "keep them independent" and "does nothing when the mode is not
enabled" are mutually exclusive in my book, so I don't know what you mean.
>> +;; The global minor mode `system-taskbar-mode' initializes the GUI
>> +;; platform back-end and must be enabled before using the functions
>> +;; below.
>> +;;
>> +;; `system-taskbar-badge' overlays a count, which is an integer, on the
>>
>> `system-taskbar-mode` is a user option, so a library/package is not
>> allowed to enable/disable it.
>> So the current setup forces all libraries/packages to test
>> `system-taskbar-mode` before calling `system-taskbar-badge/attention`.
>> Wouldn't it be more convenient for those functions to do silently
>> nothing when `system-taskbar-mode` is nil rather than signal
>> a `no-applicable-method` error?
>>
>
> Yes, we can do that and that is one suggestion I made at least for
> the progress reporter being on the new hook but can do for all the features.
>
> Thanks for your assistance with all this.
Yes, the more I think about it the more I get the impression that
`system-taskbar-mode` should be the overall control and the rest should
have no effect when that's nil.
[ Note: it's common (almost standard practice) for hook functions
installed by minor modes to check that the minor mode is still enabled
when they run, even though the test is usually redundant because
disabling the mode removes the hook function: it tends to bring better
behavior when the state is inconsistent, so you can e.g. temporarily
or locally disable a mode just by let-binding the var to nil to
setting it buffer-locally to nil. ]
BTW, maybe to avoid requiring the backend code to test `system-taskbar-mode`,
the API entry points like `system-taskbar-badge/attention` should be
separate from the generic (backend) functions, so they can check
`system-taskbar-mode` before calling the generic (backend) function.
Stefan
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 17 Dec 2025 17:35:29 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 17 12:35:29 2025 Received: from localhost ([127.0.0.1]:45028 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vVvQu-0001gT-Cx for submit <at> debbugs.gnu.org; Wed, 17 Dec 2025 12:35:29 -0500 Received: from mail-vs1-xe30.google.com ([2607:f8b0:4864:20::e30]:46138) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vVvQr-0001df-Ch for 79859 <at> debbugs.gnu.org; Wed, 17 Dec 2025 12:35:26 -0500 Received: by mail-vs1-xe30.google.com with SMTP id ada2fe7eead31-5e55bd6f5bbso4056696137.0 for <79859 <at> debbugs.gnu.org>; Wed, 17 Dec 2025 09:35:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765992920; x=1766597720; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=3ng8FkIeXNQBWdYqonVCwRNn9vKrQrrxzTto8Wtl5Oc=; b=Jxs7yqYaSGjeNBnfjh20hts61zGgRIGIXF1WZlREOOhOLHFSSLRhF1NLUP8+C0/llI LOKR137oHkns87Foe2PJ97XKLFMe1PF0OIlCmsHiNRbrzWrlQhTCuivSitv3bJGu0hmO dxWjap9x3C+Lp7rWNehBrukBeOjaVdijFFK023dEhmxbbRDZcSvPhnSFSJyPnSry7LFd M5UfZj3gKViUkRfw+VZAyR2RdjqM7aSqYxS40W6y11nm1m0RLTt2qO2DMtk4VQvJH1J7 pD62ljdkfeD2Xw8hk8VVD1/9XlHjtsc5kXHU9sW0Ec6B8ySvfZ2+p6oFC0kSDsNEXBdj XNpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765992920; x=1766597720; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=3ng8FkIeXNQBWdYqonVCwRNn9vKrQrrxzTto8Wtl5Oc=; b=iRy8xh9vixjIKika+fIWA3yR6Hf1kGOcGH/aCivWPBh+6NJTQVYwQ0DozMBBRcbliB uZbkc49qfTDA/htHjIe3Dyh7zjAsNeKxed1kxXEdaCwdH7rH8LgkeY4wDRgVzQNNGv3T TCl+/ijRs+GKAmkyvYWihNuIwooqObyk+zLDHIjFE/b9rpJUoKmXxy3iuC72TmvNYIPc aggrkGvhFidkgiyMsAusNKr3HlUrSPzJOH/tpoT8Fm8AUNFoTbMN9YHsgWGTr6qvcdp3 YFO+081ClSKzPqBjY2lkvlkAgwJ16AtEW5cp7i81CjunwC4nycVONHI25O6qt7wcTp7F cBfQ== X-Forwarded-Encrypted: i=1; AJvYcCWsm4rwDiF/j2F6H1XYg+L7RjU5XWQdW2wC7JXVvFkaVCStZQTKcUVM/HmJqF1qaVmLNpiLSQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yx6XgR9SOv2YFM6w0USjCKilgo7KUQioGdylXuR9aa2wC/HcaYm B3fS6CaPtr/xREOYy1PnKodGpDKlDuzZKlqGGC9oaEUSjJDwcFjhCd7sPcMbEx3BUsvt8gWbnYC nDJOJPu+gSxuSsBk6gkra1JTym13HSzw= X-Gm-Gg: AY/fxX7DtjDd6IO4sXZpwZeCIdIiWSTGVeVWtK8gkMfwIzUpAmpeYR0QOYLys1gRse1 EsyYxfiZ7QzY9aOsURmrD7k33z5mI0PBMAFVm105XFhTSHvHJUNWof3Wo7ySkTVZe/ZXqMTnpi+ xV9MoGf/yLK5JBnmiM/tspznHcDFK5IBS5kaYkUD0O03fWOZNapINnsdp5qCWHBJ7WUTO8JFPC3 Yc/cAw2gZap8SmbdNThxcJTKjbyuoNUs4aToappuNTjUy8tWBnxiLfvc88LSnPxzSZfW+U= X-Google-Smtp-Source: AGHT+IF8aWClKXE7oZadJtUf4pci3Ck0fOAQfal4VArumu9gXuSL/c6R/qCe6k4Lp3cHK+5CKVHC/JktuYWoV/z7UbY= X-Received: by 2002:a05:6102:14a1:b0:5df:af0f:308c with SMTP id ada2fe7eead31-5e827854ca8mr7230264137.38.1765992919618; Wed, 17 Dec 2025 09:35:19 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <86ikedavlh.fsf@HIDDEN> <CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN> <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN> <jwv7buss9jh.fsf-monnier+emacs@HIDDEN> <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN> <jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN> <CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN> <CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN> <jwvqzstjc9w.fsf-monnier+emacs@HIDDEN> In-Reply-To: <jwvqzstjc9w.fsf-monnier+emacs@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Wed, 17 Dec 2025 12:35:08 -0500 X-Gm-Features: AQt7F2q_hLxbIL96qQnvYuX3fcp1rMciJiXZtJe4fHHb6dghC0ZYhkr3dihtAkU Message-ID: <CAN+1HbqfpV7aDTRVxvqBkvA0AYJvPHmDYxzfc2xR5rYYD1dtBg@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Stefan Monnier <monnier@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000a6589f0646294407" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --000000000000a6589f0646294407 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Dec 17, 2025 at 12:09=E2=80=AFPM Stefan Monnier <monnier@HIDDEN= eal.ca> wrote: > > I'm having second thoughts about removing the system-taskbar user optio= n > > that causes progress-reporter hooks to be installed when the mode is > > enabled and removes them when the mode is disabled. > > I'm not sure what you mean. > AFAICT the code you sent has 2 boolean user options: > > - `system-taskbar-mode`. > - `system-taskbar-use-progress-reporter`. > > one is implemented as a `defcustom` and the other as a global minor mode > (which is a `defcustom` complemented with a function/command to set it). > The `defcustom` actually also has a function to set it (the one passed > via `:set`) but it's not named and not defined as a command. > > They work independently and control independent (tho related) behaviors. > > > If someone configures the hook on their own > > What do you mean by that, exactly? > It could mean: > > - They call `add-hook` themselves. > I meant this. - They call `system-taskbar-progress-reporter-install`. > - They set `system-taskbar-use-progress-reporter` via `setopt` or the > Custom UI. > - ... > > [ BTW, shouldn't `system-taskbar-progress-reporter-install/remove` > have a "--" in their name. ] > > > to install system-taskbar into the new progress-reporter hook, and > > then they disable system-taskbar mode, progress reporters will fail > > In which sense will they fail and why? > The progress reporter functions are stateless so those will work assuming the dbus endpoints are available (w32 and ns are native apis so will always work). Attention is stateful in the dbus case if system-taskbar-clear-attention-on-frame-focus is non-nil. The badge functions are stateless with the same dbus endpoint caveat. Enabling the mode with a dbus back end validates that the endpoint is available and signals an error if it is not (perhaps this should be a warning to avoid interrupting init). Another option would be skip the check and advise users that the functions will do nothing (dbus calls will time out) without an available dbus endpoint. We could leave the dbus endpoint ping function in place for them to use as a troubleshooting tool. > > and same for installing the hook and > > forgetting to enable the mode. Either we should keep the option and th= e > > automation, or we check inside the system-taskbar callback if the mode = is > > disabled and do nothing. > > > > What do you think? > > Depends what behavior we're looking for. > > Do we want to have the two boolean options be independent, or do we > want `system-taskbar-use-progress-reporter` to be a config option of > `system-taskbar-mode` which has an effect only when that mode > is enabled? > > I think this is the only choice we need to make. After that, it's > a small matter of making the code reflect that choice. > I think the most flexible thing to do would be to keep them independent and ensure that the system-taskbar progress reporter function does nothing when the mode is not enabled. BTW, another question: > > +;; The global minor mode `system-taskbar-mode' initializes the GUI > +;; platform back-end and must be enabled before using the functions > +;; below. > +;; > +;; `system-taskbar-badge' overlays a count, which is an integer, on the > > `system-taskbar-mode` is a user option, so a library/package is not > allowed to enable/disable it. > So the current setup forces all libraries/packages to test > `system-taskbar-mode` before calling `system-taskbar-badge/attention`. > Wouldn't it be more convenient for those functions to do silently > nothing when `system-taskbar-mode` is nil rather than signal > a `no-applicable-method` error? > Yes, we can do that and that is one suggestion I made at least for the progress reporter being on the new hook but can do for all the features= . Thanks for your assistance with all this. -St=C3=A9phane --000000000000a6589f0646294407 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Wed, Dec 17, 2025 at 12:09=E2=80=AFPM Stefan Monnier <<a href=3D"mail= to:monnier@HIDDEN">monnier@HIDDEN</a>> wrote:</span>= </div></div><div class=3D"gmail_quote gmail_quote_container"><blockquote cl= ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid= rgb(204,204,204);padding-left:1ex">> I'm having second thoughts abo= ut removing the system-taskbar user option<br> > that causes progress-reporter hooks to be installed when the mode is<b= r> > enabled and removes them when the mode is disabled.<br> <br> I'm not sure what you mean.<br> AFAICT the code you sent has 2 boolean user options:<br> <br> - `system-taskbar-mode`.<br> - `system-taskbar-use-progress-reporter`.<br> <br> one is implemented as a `defcustom` and the other as a global minor mode<br= > (which is a `defcustom` complemented with a function/command to set it).<br= > The `defcustom` actually also has a function to set it (the one passed<br> via `:set`) but it's not named and not defined as a command.<br> <br> They work independently and control independent (tho related) behaviors.<br= > <br> > If someone configures the hook on their own<br> <br> What do you mean by that, exactly?<br> It could mean:<br> <br> - They call `add-hook` themselves.<br></blockquote><div><br></div><div><div= class=3D"gmail_default" style=3D"font-family:monospace">I meant=C2=A0this.= </div></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margi= n:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex= "> - They call `system-taskbar-progress-reporter-install`.<br> - They set `system-taskbar-use-progress-reporter` via `setopt` or the<br> =C2=A0 Custom UI.<br> - ...<br> <br> [ BTW, shouldn't `system-taskbar-progress-reporter-install/remove`<br> =C2=A0 have a "--" in their name.=C2=A0 ]<br> <br> > to install system-taskbar into the new progress-reporter hook, and<br> > then they disable system-taskbar mode, progress reporters will fail<br= > <br> In which sense will they fail and why?<br></blockquote><div><br></div><div>= <div class=3D"gmail_default" style=3D"font-family:monospace">The progress r= eporter functions are stateless so those will work assuming the dbus endpoi= nts are available (w32 and ns are native apis so will always work).=C2=A0 A= ttention is stateful in the dbus case if=C2=A0system-taskbar-clear-attentio= n-on-frame-focus is non-nil.=C2=A0 The badge functions are stateless with t= he same dbus endpoint caveat.</div><div class=3D"gmail_default" style=3D"fo= nt-family:monospace"><br></div><div class=3D"gmail_default" style=3D"font-f= amily:monospace">Enabling the mode with a dbus back end validates that the = endpoint is available and signals an error if it is not (perhaps this shoul= d be a warning to avoid interrupting init).=C2=A0 Another option would be s= kip the check and advise users that the functions will do nothing (dbus cal= ls will time out) without an available dbus endpoint.=C2=A0 We could leave = the dbus endpoint ping function in place for them to use as a troubleshooti= ng tool.</div><div class=3D"gmail_default" style=3D"font-family:monospace">= </div></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0= .8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> > and same for installing the hook and<br> > forgetting to enable the mode.=C2=A0 Either we should keep the option = and the<br> > automation, or we check inside the system-taskbar callback if the mode= is<br> > disabled and do nothing.<br> ><br> > What do you think?<br> <br> Depends what behavior we're looking for.<br> <br> Do we want to have the two boolean options be independent, or do we<br> want `system-taskbar-use-progress-reporter` to be a config option of<br> `system-taskbar-mode` which has an effect only when that mode<br> is enabled?<br> <br> I think this is the only choice we need to make.=C2=A0 After that, it's= <br> a small matter of making the code reflect that choice.<br></blockquote><div= ><br></div><div><div class=3D"gmail_default" style=3D"font-family:monospace= ">I think the most flexible thing to do would be to keep them independent a= nd ensure that the system-taskbar progress reporter function does nothing w= hen the mode is not enabled.</div></div><div><br></div><blockquote class=3D= "gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2= 04,204,204);padding-left:1ex"> BTW, another question:<br> <br> +;; The global minor mode `system-taskbar-mode' initializes the GUI<br> +;; platform back-end and must be enabled before using the functions<br> +;; below.<br> +;;<br> +;; `system-taskbar-badge' overlays a count, which is an integer, on th= e<br> <br> `system-taskbar-mode` is a user option, so a library/package is not<br> allowed to enable/disable it.<br> So the current setup forces all libraries/packages to test<br> `system-taskbar-mode` before calling `system-taskbar-badge/attention`.<br> Wouldn't it be more convenient for those functions to do silently<br> nothing when `system-taskbar-mode` is nil rather than signal<br> a `no-applicable-method` error?<br></blockquote><div><br></div><div class= =3D"gmail_default" style=3D"font-family:monospace">Yes, we can do that and = that is one suggestion I made at least for the=C2=A0progress reporter being= on the new=C2=A0hook but can do for all the features.</div><div class=3D"g= mail_default" style=3D"font-family:monospace"><br></div><div class=3D"gmail= _default" style=3D"font-family:monospace">Thanks for your assistance with a= ll this.</div><div class=3D"gmail_default" style=3D"font-family:monospace">= <br></div><div class=3D"gmail_default" style=3D"font-family:monospace">-St= =C3=A9phane=C2=A0</div></div></div> --000000000000a6589f0646294407--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 17 Dec 2025 17:09:56 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 17 12:09:56 2025
Received: from localhost ([127.0.0.1]:44798 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vVv2C-00009R-1G
for submit <at> debbugs.gnu.org; Wed, 17 Dec 2025 12:09:56 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:31109)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vVv2A-00009B-0I
for 79859 <at> debbugs.gnu.org; Wed, 17 Dec 2025 12:09:54 -0500
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id EBCC644104D;
Wed, 17 Dec 2025 12:09:47 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1765991386;
bh=5M3nvDBwIsxN/bSdbavP6MqHX8WWnbleBexoRCRPSg0=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=CrQBCYRaTRl17adKOu8Q2XiAzmbG9fK+ZrpDGqEQ/T5Xabjr9y8xvkS90l3FjqiUr
7HGPCG2JoZ3Wbl59rzw+ORIbYPzkloo50wj2DBntGBRNjW3pb5LuFiXCYaezAVIYo1
OnEayg/gZnnzeCfP8C5wukfzKDGDPsydUKFkd8UFEVvXJBBQs5EPl7fTmktCrwF8f6
c4FQvqP85QQc7b3aDQglbGZAywiVnf6mmnNmlsWIvGv8p8plgo0CL/+OnJPglFXPSa
Dp63LnNL1v3nVBlWRMIZe84cMxzcMmMXQdQyeHT8lGgfPPHLduHrzW1OEexx3S4sdR
53jHyBglDMerg==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 88747440BF3;
Wed, 17 Dec 2025 12:09:46 -0500 (EST)
Received: from asado (unknown [23.233.149.155])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 1CBB712089A;
Wed, 17 Dec 2025 12:09:36 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: =?windows-1252?Q?St=E9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
In-Reply-To: <CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN>
Message-ID: <jwvqzstjc9w.fsf-monnier+emacs@HIDDEN>
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<86bjkxhuca.fsf@HIDDEN>
<CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
<87pl932wqd.fsf@HIDDEN>
<CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN>
<86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN>
<86ikedavlh.fsf@HIDDEN>
<CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN>
<jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN>
<CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN>
<jwv7buss9jh.fsf-monnier+emacs@HIDDEN>
<CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN>
<jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN>
<CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN>
<CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN>
Date: Wed, 17 Dec 2025 12:09:29 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.022 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>,
michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> I'm having second thoughts about removing the system-taskbar user option
> that causes progress-reporter hooks to be installed when the mode is
> enabled and removes them when the mode is disabled.
I'm not sure what you mean.
AFAICT the code you sent has 2 boolean user options:
- `system-taskbar-mode`.
- `system-taskbar-use-progress-reporter`.
one is implemented as a `defcustom` and the other as a global minor mode
(which is a `defcustom` complemented with a function/command to set it).
The `defcustom` actually also has a function to set it (the one passed
via `:set`) but it's not named and not defined as a command.
They work independently and control independent (tho related) behaviors.
> If someone configures the hook on their own
What do you mean by that, exactly?
It could mean:
- They call `add-hook` themselves.
- They call `system-taskbar-progress-reporter-install`.
- They set `system-taskbar-use-progress-reporter` via `setopt` or the
Custom UI.
- ...
[ BTW, shouldn't `system-taskbar-progress-reporter-install/remove`
have a "--" in their name. ]
> to install system-taskbar into the new progress-reporter hook, and
> then they disable system-taskbar mode, progress reporters will fail
In which sense will they fail and why?
> and same for installing the hook and
> forgetting to enable the mode. Either we should keep the option and the
> automation, or we check inside the system-taskbar callback if the mode is
> disabled and do nothing.
>
> What do you think?
Depends what behavior we're looking for.
Do we want to have the two boolean options be independent, or do we
want `system-taskbar-use-progress-reporter` to be a config option of
`system-taskbar-mode` which has an effect only when that mode
is enabled?
I think this is the only choice we need to make. After that, it's
a small matter of making the code reflect that choice.
BTW, another question:
+;; The global minor mode `system-taskbar-mode' initializes the GUI
+;; platform back-end and must be enabled before using the functions
+;; below.
+;;
+;; `system-taskbar-badge' overlays a count, which is an integer, on the
`system-taskbar-mode` is a user option, so a library/package is not
allowed to enable/disable it.
So the current setup forces all libraries/packages to test
`system-taskbar-mode` before calling `system-taskbar-badge/attention`.
Wouldn't it be more convenient for those functions to do silently
nothing when `system-taskbar-mode` is nil rather than signal
a `no-applicable-method` error?
Stefan
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 17 Dec 2025 13:40:48 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 17 08:40:47 2025 Received: from localhost ([127.0.0.1]:41610 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vVrln-0002oX-Bd for submit <at> debbugs.gnu.org; Wed, 17 Dec 2025 08:40:47 -0500 Received: from mail-ua1-x92c.google.com ([2607:f8b0:4864:20::92c]:60566) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vVrlj-0002oG-3b for 79859 <at> debbugs.gnu.org; Wed, 17 Dec 2025 08:40:45 -0500 Received: by mail-ua1-x92c.google.com with SMTP id a1e0cc1a2514c-93f5905e60eso3503954241.0 for <79859 <at> debbugs.gnu.org>; Wed, 17 Dec 2025 05:40:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765978837; x=1766583637; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=lAUugSgzfEPw0yr0E2pFCqCNx1AVXETMqgbpJ5B6H0A=; b=fEPh3aNtEHhUm0i3FR7AxdTW31okE9EjVRIXAkm4xgDfa3wUHwngvR1Fv26glqyRuJ BfE4Lehn1779Pyy4b2XRKDVLdgeCD3+jSCI+KrtcB/DX6+QWPCnjZjedctfUNkItRNSi PBVbdvKK1BLyP1trwd5OFFOnxC467xCuhdBiw/CPwKENQMhSIDsR+M//lHtCp2yw0PJv C7s8GikA5pX2zTZ1jX9IB7P6tN7qGrjoFTx4S8N3JrjX9AgjrhJ8s/woVfZpfcsGF5YK r2z06UvVTv++LfDofXuGWZNl1cx6ZkVJyVysLgZ5f6wfuma57Yk/kDpWmHMvbbs5pwQj cJTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765978837; x=1766583637; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=lAUugSgzfEPw0yr0E2pFCqCNx1AVXETMqgbpJ5B6H0A=; b=PFbjzFSxqImZH6ocKIAgp8sPM8R2KnUu5CDH67ShLxHGhWgKF8rp3FCKrvfdWQeqr9 XURNNKDjODiWbeUCtZvHjIjnt5ECin6/LJg+7WUTk1cwID5NGE0FVmrkon6YcS+oe+rl yWepz7mERr0rgUjS+oo0wF1BjSPE+URaF5L0r0TKTZhEs+Pg9oWA88SnTWqz4H+d0gCo XHLUzLL7XPP9vk1N7Fqx7tu0PYI3xFwB5n/z3ViOV5cUwW/cLqClLfclb8+BAvXwkRn9 p0aDgptWA9j7Itlr+HyoG/tLECchzXiAQtoltoutrWXU9miVgaZSkzBgSA55DNWrCW2L SRiw== X-Forwarded-Encrypted: i=1; AJvYcCU4Cx5fN4Z8PRCgENdHrR5NZZFDYRZJiLJdABABazj/aYkSCNjH645+yxgqePKbgE48Iz+SLA==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwHQSV2V98lkao3EapNu7zhKIcI3pljDD0g8fXYfyOQqPC+cSKv QnVPEft/wr49T5SpHdljz58kd2BonksW1U6JxF2wNU7hC3TdOz3c5BNfFdz1VzM5rJu4D47c8oi ffTcUb3nFcAlxWyLZdYdPZN28qZ4TUgA= X-Gm-Gg: AY/fxX745kYtOkzpvD2GWqqi5f8myyNFdkGhY/SQ7m6YQYULnMNiZPoK7aVOhVgiOQk vrwukr2ISQ5+24C63KIT/aVDHoeh1+vaf4Q9G0FRH5nY+JWxXlX8xyZ0hJ5Zw4TIcCpAYs553r/ 5fGeP2WLy5JJbkPVqxAQ4VfDp9wZP+9Hg67LZeEyof9kUHXLgzJWqWo2iz5cCyL7KenNXY11wcF lLSguQKU8yF4CSHnVQ6KjbuZcxxqptl1nBxh+hxD7yOvjchHSicCPjSUacJoj6nlugiiv4= X-Google-Smtp-Source: AGHT+IEP8B0RDOdFa5vFuOZ5lR7ztXWzNA1oFCAxblGXJDpNOe4mpKl0vqNzOJay4rzF5AdpB9gPUi0Agp4QifDn4Hg= X-Received: by 2002:a05:6102:e09:b0:5db:e32d:a3f4 with SMTP id ada2fe7eead31-5e827475e69mr7329736137.2.1765978837180; Wed, 17 Dec 2025 05:40:37 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <86ikedavlh.fsf@HIDDEN> <CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN> <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN> <jwv7buss9jh.fsf-monnier+emacs@HIDDEN> <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN> <jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN> <CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN> <CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN> In-Reply-To: <CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Wed, 17 Dec 2025 08:40:25 -0500 X-Gm-Features: AQt7F2r_iugvfsuUXnbB3Vr0FNqr2vMq4wEk_DYpheKO1_Rt2V5dm4OfbrnjPEc Message-ID: <CAN+1HbrFmUVSJfFt2Rn_zDuPF5Nu-JFvzBfsDLAqQXXQPX=qBQ@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Stefan Monnier <monnier@HIDDEN> Content-Type: multipart/alternative; boundary="00000000000045655c064625fd4a" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --00000000000045655c064625fd4a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Dec 15, 2025 at 7:01=E2=80=AFPM St=C3=A9phane Marks <shipmints@gmai= l.com> wrote: > On Fri, Dec 12, 2025 at 2:52=E2=80=AFPM St=C3=A9phane Marks <shipmints@gm= ail.com> > wrote: > >> On Fri, Dec 12, 2025 at 11:04=E2=80=AFAM Stefan Monnier <monnier@HIDDEN= ntreal.ca> >> wrote: >> >>> >>> Indeed, you're right. But then why touch the progress reporter at all >>> in `system-taskbar-mode`? >>> >> >> This made more sense using the version of progress-reporter callbacks. >> Now that it's just a hook, I'll document this as a user configuration >> option and remove the system-taskbar hooker upper. >> > > I'm having second thoughts about removing the system-taskbar user option > that causes progress-reporter hooks to be installed when the mode is > enabled and removes them when the mode is disabled. > > If someone configures the hook on their own to install system-taskbar int= o > the new progress-reporter hook, and then they disable system-taskbar mode= , > progress reporters will fail and same for installing the hook and > forgetting to enable the mode. Either we should keep the option and the > automation, or we check inside the system-taskbar callback if the mode is > disabled and do nothing. > > What do you think? > Once we agree on one approach or the other, I can finish the patch and the documentation. --00000000000045655c064625fd4a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Mon, Dec 15, 2025 at 7:01=E2=80=AFPM St=C3=A9phane Marks <<a href=3D"= mailto:shipmints@HIDDEN">shipmints@HIDDEN</a>> wrote:</span></div>= </div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=3D= "gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2= 04,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div style= =3D"font-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-= serif">On Fri, Dec 12, 2025 at 2:52=E2=80=AFPM St=C3=A9phane Marks <<a h= ref=3D"mailto:shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a= >> wrote:</span></div></div><div class=3D"gmail_quote"><blockquote class= =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg= b(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div sty= le=3D"font-family:monospace"><span style=3D"font-family:Arial,Helvetica,san= s-serif">On Fri, Dec 12, 2025 at 11:04=E2=80=AFAM Stefan Monnier <<a hre= f=3D"mailto:monnier@HIDDEN" target=3D"_blank">monnier@HIDDEN= al.ca</a>> wrote:</span></div></div><div class=3D"gmail_quote"><blockquo= te class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px = solid rgb(204,204,204);padding-left:1ex"><br></blockquote><blockquote class= =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg= b(204,204,204);padding-left:1ex"> Indeed, you're right.=C2=A0 But then why touch the progress reporter at= all<br> in `system-taskbar-mode`?<br></blockquote><div><br></div><div><div style=3D= "font-family:monospace">This made more sense using the version of progress-= reporter callbacks.=C2=A0 Now that it's just a hook, I'll document = this as a user configuration option and remove the system-taskbar hooker up= per.</div></div></div></div></blockquote><div><br></div><div><div style=3D"= font-family:monospace">I'm having second thoughts about removing the sy= stem-taskbar user option that causes progress-reporter hooks to be installe= d when the mode is enabled and removes them when the mode is disabled.</div= ><div style=3D"font-family:monospace"><br></div><div style=3D"font-family:m= onospace">If someone configures the hook on their own to install system-tas= kbar into the new progress-reporter hook, and then they disable system-task= bar mode, progress reporters will fail and same for installing the hook and= forgetting to enable the mode.=C2=A0 Either we should keep the option and = the automation, or we check inside the system-taskbar callback if the mode = is disabled and do nothing.</div><br></div><div><div style=3D"font-family:m= onospace">What=C2=A0do you think?</div></div></div></div></blockquote><div>= <br></div><div class=3D"gmail_default" style=3D"font-family:monospace">Once= we agree on one approach or the other, I can finish the patch and the docu= mentation.</div></div></div> --00000000000045655c064625fd4a--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 16 Dec 2025 00:02:09 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Dec 15 19:02:09 2025 Received: from localhost ([127.0.0.1]:46137 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vVIW0-0001T6-Ov for submit <at> debbugs.gnu.org; Mon, 15 Dec 2025 19:02:09 -0500 Received: from mail-ua1-x936.google.com ([2607:f8b0:4864:20::936]:56460) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vVIVv-0001ST-Pk for 79859 <at> debbugs.gnu.org; Mon, 15 Dec 2025 19:02:06 -0500 Received: by mail-ua1-x936.google.com with SMTP id a1e0cc1a2514c-9413e5ee53eso1373201241.0 for <79859 <at> debbugs.gnu.org>; Mon, 15 Dec 2025 16:02:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765843318; x=1766448118; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=KLqbMipHNkoQaWJxOToMoKXyVyvH9Ci7ycjQfD4/RCY=; b=jViaNTzDbkOCGlJCfbQseNX5lbKWigL7GhFVGbwugkQeyo+NO1/T5KixUf0VhEuoyP MoGUSRlTSv1VtvuxXXWvNJN/bL48ucDfTmH8jxHRQpxX0D8jxM/ENUsuWj+sZiJ4p++6 Cqpd61WCowVSBJ2qUGMBOHpuQzWHP1Gd0NkFKI4KjH+1aQcgxrtbowlOJesV0go1bEZN Q6F2A3w88DW2fC9MmFq7DpDKUSvLoCKz12f5cwi2f2T4F/oegTu8/4/+j1SzyZziqu7l b1L2f4ZvtB7Lk3/k4/MFOwCxcb2D9Dkq+EcaSkSZvHCaTO6ck4v6FJksS9TtUAmge4JJ avKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765843318; x=1766448118; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=KLqbMipHNkoQaWJxOToMoKXyVyvH9Ci7ycjQfD4/RCY=; b=GwWtv6YXvTR0jMJ+C8gnc2vyL5Epzv/YbLvPiMWsIIjcVzFonnNBEL8+1wSuRMwWEq SOXIfTkIdf1mfNo6CusGQB902+IMgLsU69/1bXwfU+sK3Mcxdx/8MN4kWEHGFTIz8mv8 PZpbYD1eyXhqeRI19AMXSp4VhdNdxVDzkoIkY08uJblTclV8KhQu9PoiN2KaVQiEtjRm b0dBVEgKyehSuWmnTLHHSaFHCCNJ3wgHqw4kW0PfTW7aTk1C5x6DdJwlK1uruX3jNViL t2/vDsJW3mIHt7GvbbC1Gecoqpq6/sKU7gLsm/136od8sgF0VLWbSMxGlwryFpjLz4RK Pakw== X-Forwarded-Encrypted: i=1; AJvYcCWQEJSwE+Fsg2VfTJ/DLgG66QKgU2h5N0fzGljGRS6iWnmOv6g3b2sLkMxn0rTKN7efIHBPRA==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzuHAVxCOwwpmqNx15id0wu3LruW6xX/S4EhKDnIPUyWpMkMat2 7PWSpybYrHhUwhRdTPNkkIqGVfRthQMLk0/GlVBhJHj/ybOgEFu9GNr4QqyPe9QaEjjWD0aAcCp KSTXwboncOTgRiOmu73s1xO1NZvpNL7Q= X-Gm-Gg: AY/fxX4HjkH5qj/otAXrI6I5J0LDe+XD/DMaG3y0r3yH3VXJsEdan8P6qD12h5oLROs 7ZGnRuZ1Xd5vyYlS+uOJiC6Chq80CRlrmkfMxnpMsZdBWBpTh0f1xpOzl1yLxVun8wl4kWvosgc /7TCpIzzTgHYngaZnGoQjnSxkHnKOuCQL/njcimMIRTYtM62LHyMwP/wpbVDKMzVfh2NJr73wY5 bJRc0SDtUMRVB0rAMpqa8MkWS+5zxyeVZ8vEqugJiJuPwioP7eX8MgyuQk8n79ZJigxq3I= X-Google-Smtp-Source: AGHT+IGFPGLphpvnMOC6tZ9XThNRYdIiy9oMocrAPRlwXGukZwn+aa5L9kzpXVPQ/irAabIbyeMdTKrUuqpLDcPc8x8= X-Received: by 2002:a05:6102:41a1:b0:5db:fce3:af72 with SMTP id ada2fe7eead31-5e8276a0ae4mr5247101137.11.1765843318084; Mon, 15 Dec 2025 16:01:58 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <86ikedavlh.fsf@HIDDEN> <CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN> <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN> <jwv7buss9jh.fsf-monnier+emacs@HIDDEN> <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN> <jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN> <CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN> In-Reply-To: <CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Mon, 15 Dec 2025 19:01:46 -0500 X-Gm-Features: AQt7F2psOkKp12AJERz6Bng_Zn03PQl6fJFFholbvgb4WVLLMQSqAQs95vfo1jc Message-ID: <CAN+1Hbq=g-uS3DPvJazbtvcVGDJoUDC3yju26C5Y7RMfkJbVNA@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Stefan Monnier <monnier@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000b4186b0646066fec" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --000000000000b4186b0646066fec Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Dec 12, 2025 at 2:52=E2=80=AFPM St=C3=A9phane Marks <shipmints@gmai= l.com> wrote: > On Fri, Dec 12, 2025 at 11:04=E2=80=AFAM Stefan Monnier <monnier@HIDDEN= treal.ca> > wrote: > >> >> Indeed, you're right. But then why touch the progress reporter at all >> in `system-taskbar-mode`? >> > > This made more sense using the version of progress-reporter callbacks. > Now that it's just a hook, I'll document this as a user configuration > option and remove the system-taskbar hooker upper. > I'm having second thoughts about removing the system-taskbar user option that causes progress-reporter hooks to be installed when the mode is enabled and removes them when the mode is disabled. If someone configures the hook on their own to install system-taskbar into the new progress-reporter hook, and then they disable system-taskbar mode, progress reporters will fail and same for installing the hook and forgetting to enable the mode. Either we should keep the option and the automation, or we check inside the system-taskbar callback if the mode is disabled and do nothing. What do you think? -St=C3=A9phane --000000000000b4186b0646066fec Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Fri, Dec 12, 2025 at 2:52=E2=80=AFPM St=C3=A9phane Marks <<a href=3D"= mailto:shipmints@HIDDEN">shipmints@HIDDEN</a>> wrote:</span></div>= </div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=3D= "gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2= 04,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div style= =3D"font-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-= serif">On Fri, Dec 12, 2025 at 11:04=E2=80=AFAM Stefan Monnier <<a href= =3D"mailto:monnier@HIDDEN" target=3D"_blank">monnier@HIDDEN= l.ca</a>> wrote:</span></div></div><div class=3D"gmail_quote"><blockquot= e class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px s= olid rgb(204,204,204);padding-left:1ex"><br></blockquote><blockquote class= =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg= b(204,204,204);padding-left:1ex"> Indeed, you're right.=C2=A0 But then why touch the progress reporter at= all<br> in `system-taskbar-mode`?<br></blockquote><div><br></div><div><div style=3D= "font-family:monospace">This made more sense using the version of progress-= reporter callbacks.=C2=A0 Now that it's just a hook, I'll document = this as a user configuration option and remove the system-taskbar hooker up= per.</div></div></div></div></blockquote><div><br></div><div><div class=3D"= gmail_default" style=3D"font-family:monospace">I'm having second though= ts about removing the system-taskbar user option that causes progress-repor= ter hooks to be installed when the mode is enabled and removes them when th= e mode is disabled.</div><div class=3D"gmail_default" style=3D"font-family:= monospace"><br></div><div class=3D"gmail_default" style=3D"font-family:mono= space">If someone configures the hook on their own to install system-taskba= r into the new progress-reporter hook, and then they disable system-taskbar= mode, progress reporters will fail and same for installing the hook and fo= rgetting to enable the mode.=C2=A0 Either we should keep the option and the= automation, or we check inside the system-taskbar callback if the mode is = disabled and do nothing.</div><br></div><div><div class=3D"gmail_default" s= tyle=3D"font-family:monospace">What=C2=A0do you think?</div><div class=3D"g= mail_default" style=3D"font-family:monospace"><br></div><div class=3D"gmail= _default" style=3D"font-family:monospace">-St=C3=A9phane=C2=A0</div><br></d= iv><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bord= er-left:1px solid rgb(204,204,204);padding-left:1ex"> </blockquote></div></div> --000000000000b4186b0646066fec--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 12 Dec 2025 19:53:09 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 12 14:53:09 2025
Received: from localhost ([127.0.0.1]:59634 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vU9CO-0004pR-EF
for submit <at> debbugs.gnu.org; Fri, 12 Dec 2025 14:53:09 -0500
Received: from mail-ua1-x92b.google.com ([2607:f8b0:4864:20::92b]:50213)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1vU9CL-0004ou-3l
for 79859 <at> debbugs.gnu.org; Fri, 12 Dec 2025 14:53:05 -0500
Received: by mail-ua1-x92b.google.com with SMTP id
a1e0cc1a2514c-93f5729f159so917223241.0
for <79859 <at> debbugs.gnu.org>; Fri, 12 Dec 2025 11:53:05 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1765569179; x=1766173979; darn=debbugs.gnu.org;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:from:to:cc:subject:date:message-id:reply-to;
bh=A0rfRArSKlWQLmiQczwrgppeTCPwR71RUns6WZEAvJk=;
b=eJK/iRWyFRaQ969ZZZhgwGv6IYRsdsdlVUcviUiRjHj88G2BKd38e8ZKEEr5H1ObbS
ygS71c1hEz8ZkkQTGNQB0m0N6/zoOVIRtu6Hh4XOKih7SOXstYKYGi4VroRrP+qt+3CR
v6xLqrAu+Wr9uZDXlMfyAc4lEET/4cb4YgDr/KR1FZPREWYJtCI73Og7Xl51G6SPwoxj
X6axLDfQPM71lrBWhZAHexX8Ea43AkZaRiVnmUN2EWDBUFNvz4sjGMf7jFSSOdaVPUQ+
/YWsvrW+q6bkvA8/m7iJVjeOtF7pqmgyBVPKM9t8xaLIsPoiFfQT69TVTX5YaqsqT2Ak
b63g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1765569179; x=1766173979;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=A0rfRArSKlWQLmiQczwrgppeTCPwR71RUns6WZEAvJk=;
b=hQyUa5UmmtTzj6m9yS+Go5fmAy15/Wi+Pfpo2x0dbvqBUxZEiTmwtxPJOFLSVNnt6O
FqxP6kJa9ZpfTvASx4ST+bv67G5AZDB8csjtnypWh6fZyFxuT+hd85prmp3F3+f74bPA
23sv8mnumRyF9jnysX39qrwB9MZvT9WCfICcS0wDpQHrbA7hBUkntMzGWQgzZ8ogcbaz
9oKP+5zD4l8kWIKjLi6N+wAak3cwloKX0eT96rjTC7O5YUON5fcD3gA7hG53VSQVd+CZ
GL+HnwiRigHVNh9GXpUgJnOJHuyJTakWdaamCTrDIp3skiDiDPE758CApE35NCaRvmZU
HVnw==
X-Forwarded-Encrypted: i=1;
AJvYcCW7o3IpYzMzHk2iOec6QXB+ggM/K2nYv2eK4lAVexQTqAP8wPVlfrqMa7YItJv07T//92IYVw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yz135N0rzpHeutEBGhtwq1/oRkOzQumKEaDHrP+1I+UcO85Qvnl
SV3/gZOFoYmEw2Cb9LZEG7tbuA0jcSbd4RWzFgcGrkL6M+etWL03Hw2QOXAqJAHqhAOGQUbKMoi
HlrwoIm2uKXAOM2fGKMqtEn2/94UUbmg=
X-Gm-Gg: AY/fxX4PYTRPN23HPzs7nGFnVpIBdax79cv+tz1fC40U6e5twe/ZTmtchqG7xUoBK2H
/20BEMu9tGmSh1xRdU5rPViL5FnjXnSGhORWmxS/+mW0t9ja4AYhYQbIup7TzWej8Nh6fXyPYmZ
X7zT11TRx6uZOxUcNPJaX3sfCzT5uU2ecISwlrmywo1YE4HGLYubms3+uDOlV4gIbzwzZyRg4YA
6ASUUBWWijC5FjzSV0wtc99VTu+LBgkizZwWfp+xyL09a9bY2yhZyHZufa+7Tsrm0Dgf3a4
X-Google-Smtp-Source: AGHT+IExg0tGTP20TDWLgTDMygHzwg4R1NJWa6xiOnRnHaFEwPJEFyDw2o6EjjOLRXEYBU3fpbzQ9sGYN/UuTP8eLAA=
X-Received: by 2002:a05:6102:91b:b0:5db:efcb:72 with SMTP id
ada2fe7eead31-5e82747249dmr1325549137.6.1765569179285; Fri, 12 Dec 2025
11:52:59 -0800 (PST)
MIME-Version: 1.0
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<86bjkxhuca.fsf@HIDDEN>
<CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
<87pl932wqd.fsf@HIDDEN>
<CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN>
<86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN>
<86ikedavlh.fsf@HIDDEN>
<CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN>
<jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN>
<CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN>
<jwv7buss9jh.fsf-monnier+emacs@HIDDEN>
<CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN>
<jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN>
In-Reply-To: <jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Fri, 12 Dec 2025 14:52:48 -0500
X-Gm-Features: AQt7F2qAPMQ7mV8PPpiY9C3WpEtbkq-4l4epJmd27Z1U36auwabbXnSpUewc0Vw
Message-ID: <CAN+1HboPcQebo4+v1hGppGWgrK4DHSDMMc3M83uf6pZnm_DKOw@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
To: Stefan Monnier <monnier@HIDDEN>
Content-Type: multipart/alternative; boundary="000000000000c1fb1b0645c69b61"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>,
michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
--000000000000c1fb1b0645c69b61
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Fri, Dec 12, 2025 at 11:04=E2=80=AFAM Stefan Monnier <monnier@HIDDEN=
eal.ca>
wrote:
> >> >> (defvar progress-reporter-update-functions nil
> >> >> "Special hook run on progress-reporter updates.
> >> >> These functions are called with two arguments (REPORTER STATE)
> >> >> and their return value is ignored. STATE can be:
> >> >> - `done', when the job is, well, done.
> >> >> - An integer in the range 0-3 (for pulsing reporters).
> >> >> - A float between 0 and 1 (for numeric reporters).")
> >> >
> >> > Could do. I'd prefer avoiding type-of conditionals and perhaps it
> could be
> >> > reporter state value. I'll take a stab at that.
> >>
> >> I think an `integerp` conditional is clean. It's Lisp's way to mimic
> >> algebraic data types. When the data type is more complex, we use
> >> a heavier encoding (typically a `cons` cell with a symbol in the `car`
> >> that stands for the tag), but for simple cases it's the most idiomatic
> >> way to design an API, taking advantage of Lisp's dynamic types.
>
> FWIW, I'm still bothered by this "two args, only one of them used at
> a time" design. For me, such dependencies between arguments is a code
> smell.
>
I trust your sense of smell.
>> AFAICT it will display the progress reporter in the taskbar even tho
> >> `system-taskbar-use-progress-reporter` says not to.
> > I'm guessing you haven't run the code. I don't experience that
> condition.
> > If you (setopt system-taskbar-use-progress-reporter nil) or set it nil =
in
> > advance of enabling the mode, the hook will not have system-taskbar
> > functions on it.
>
> Indeed, you're right. But then why touch the progress reporter at all
> in `system-taskbar-mode`?
>
This made more sense using the version of progress-reporter callbacks. Now
that it's just a hook, I'll document this as a user configuration option
and remove the system-taskbar hooker upper.
> +(defvar progress-reporter-update-functions (list
> #'progress-reporter-echo-area)
> > + "Special hook run on progress-reporter updates.
> > +Each function is called with six arguments:
> > +REPORTER is the result of a call to `make-progress-reporter'.
> > +STATE is the symbol `update' or `done'.
> > +PERCENTAGE is a number in the range 0-100, or nil for a pulsing
> reporter.
> > +INDEX is a number in the range 0-3, or nil for a numeric reporter.
> > +TEXT is the progress reporter message text.
> > +SUFFIX is an optional string to print at the end of the update
> message.")
>
> I think we can remove the TEXT argument and provide
> a `progress-reporter-text` accessor instead.
> [ `tramp-progress-reporter-update` could use it as well. ]
>
> Also, now we have 3 arguments for the "state" since neither PERCENTAGE
> nor INDEX are used when STATE is `done`.
>
> If we merge it all into a single argument, it'll simplify callers and
> callees.
> E.g.:
>
> (pcase state
> ('done ...)
> ((pred floatp) ...)
> ((pred integerp) ...))
>
> instead of your current
>
> (pcase state
> ('done ...)
> ('update
> (cond (percentage ...)
> (index ...))))
>
Fine with me. I'll update in the next go-round. Might be Monday if I
can't get to it this weekend (family event).
> (defun progress-reporter-done (reporter)
> > - "Print reporter's message followed by word \"done\" in echo area."
> > - (message "%sdone" (aref (cdr reporter) 3)))
> > + "Print reporter's message followed by word \"done\" in echo area.
> > +Call the functions on `progress-reporter-update-functions`."
> > + (run-hook-with-args 'progress-reporter-update-functions
> > + reporter
> > + 'done
> > + nil ; percentage
> > + nil ; index
> > + (aref (cdr reporter) 3) ; text
> > + ;; suffix
> > + nil))
>
> About SUFFIX: grepping through Emacs' source code, I can't find a single
> use of `process-reporter-update` which uses the SUFFIX argument.
> So I think we should plan for the possible removal of that feature and
> not pass SUFFIX here at all, so as to make sure the hook functions are
> all prepared for a future where SUFFIX may not be provided by
> `process-reporter-do-update` either.
>
I did a quick survey of non-core packages and github and I didn't see any
SUFFIX use there either. Good time to consider it deprecated and I can
update docstrings to say that.
-St=C3=A9phane
--000000000000c1fb1b0645c69b61
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">=
On Fri, Dec 12, 2025 at 11:04=E2=80=AFAM Stefan Monnier <<a href=3D"mail=
to:monnier@HIDDEN">monnier@HIDDEN</a>> wrote:</span>=
</div></div><div class=3D"gmail_quote gmail_quote_container"><blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid=
rgb(204,204,204);padding-left:1ex">>> >>=C2=A0 =C2=A0 =C2=A0(d=
efvar progress-reporter-update-functions nil<br>
>> >>=C2=A0 =C2=A0 =C2=A0 =C2=A0"Special hook run on progr=
ess-reporter updates.<br>
>> >>=C2=A0 =C2=A0 =C2=A0These functions are called with two ar=
guments (REPORTER STATE)<br>
>> >>=C2=A0 =C2=A0 =C2=A0and their return value is ignored.=C2=
=A0 STATE can be:<br>
>> >>=C2=A0 =C2=A0 =C2=A0- `done', when the job is, well, d=
one.<br>
>> >>=C2=A0 =C2=A0 =C2=A0- An integer in the range 0-3 (for pul=
sing reporters).<br>
>> >>=C2=A0 =C2=A0 =C2=A0- A float between 0 and 1 (for numeric=
reporters).")<br>
>> ><br>
>> > Could do.=C2=A0 I'd prefer avoiding type-of conditionals =
and perhaps it could be<br>
>> > reporter state value.=C2=A0 I'll take a stab at that.<br>
>><br>
>> I think an `integerp` conditional is clean.=C2=A0 It's Lisp=
9;s way to mimic<br>
>> algebraic data types.=C2=A0 When the data type is more complex, we=
use<br>
>> a heavier encoding (typically a `cons` cell with a symbol in the `=
car`<br>
>> that stands for the tag), but for simple cases it's the most i=
diomatic<br>
>> way to design an API, taking advantage of Lisp's dynamic types=
.<br>
<br>
FWIW, I'm still bothered by this "two args, only one of them used =
at<br>
a time" design.=C2=A0 For me, such dependencies between arguments is a=
code smell.<br></blockquote><div><br></div><div class=3D"gmail_default" st=
yle=3D"font-family:monospace">I trust your sense of smell.</div><div class=
=3D"gmail_default" style=3D"font-family:monospace"><br></div><blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid=
rgb(204,204,204);padding-left:1ex">
>> AFAICT it will display the progress reporter in the taskbar even t=
ho<br>
>> `system-taskbar-use-progress-reporter` says not to.<br>
> I'm guessing you haven't run the code.=C2=A0 I don't exper=
ience that condition.<br>
> If you (setopt system-taskbar-use-progress-reporter nil) or set it nil=
in<br>
> advance of enabling the mode, the hook will not have system-taskbar<br=
>
> functions on it.<br>
<br>
Indeed, you're right.=C2=A0 But then why touch the progress reporter at=
all<br>
in `system-taskbar-mode`?<br></blockquote><div><br></div><div><div class=3D=
"gmail_default" style=3D"font-family:monospace">This made more sense using =
the version of progress-reporter callbacks.=C2=A0 Now that it's just a =
hook, I'll document this as a user configuration option and remove the =
system-taskbar hooker upper.</div></div><div class=3D"gmail_default" style=
=3D"font-family:monospace"><br></div><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddin=
g-left:1ex">
> +(defvar progress-reporter-update-functions (list #'progress-repor=
ter-echo-area)<br>
> +=C2=A0 "Special hook run on progress-reporter updates.<br>
> +Each function is called with six arguments:<br>
> +REPORTER is the result of a call to `make-progress-reporter'.<br>
> +STATE is the symbol `update' or `done'.<br>
> +PERCENTAGE is a number in the range 0-100, or nil for a pulsing repor=
ter.<br>
> +INDEX is a number in the range 0-3, or nil for a numeric reporter.<br=
>
> +TEXT is the progress reporter message text.<br>
> +SUFFIX is an optional string to print at the end of the update messag=
e.")<br>
<br>
I think we can remove the TEXT argument and provide<br>
a `progress-reporter-text` accessor instead.<br>
[ `tramp-progress-reporter-update` could use it as well.=C2=A0 ]<br>
<br>
Also, now we have 3 arguments for the "state" since neither PERCE=
NTAGE<br>
nor INDEX are used when STATE is `done`.<br>
<br>
If we merge it all into a single argument, it'll simplify callers and c=
allees.<br>
E.g.:<br>
<br>
=C2=A0 =C2=A0 (pcase state<br>
=C2=A0 =C2=A0 =C2=A0 ('done ...)<br>
=C2=A0 =C2=A0 =C2=A0 ((pred floatp) ...)<br>
=C2=A0 =C2=A0 =C2=A0 ((pred integerp) ...))<br>
<br>
instead of your current<br>
<br>
=C2=A0 =C2=A0 (pcase state<br>
=C2=A0 =C2=A0 =C2=A0 ('done ...)<br>
=C2=A0 =C2=A0 =C2=A0 ('update<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0(cond (percentage ...)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(index ...))))<br></blockqu=
ote><div><br></div><div><div class=3D"gmail_default" style=3D"font-family:m=
onospace">Fine with me.=C2=A0 I'll update in the next go-round.=C2=A0 M=
ight be Monday if I can't get to it this weekend (family event).</div><=
/div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0=
px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
>=C2=A0 (defun progress-reporter-done (reporter)<br>
> -=C2=A0 "Print reporter's message followed by word \"don=
e\" in echo area."<br>
> -=C2=A0 (message "%sdone" (aref (cdr reporter) 3)))<br>
> +=C2=A0 "Print reporter's message followed by word \"don=
e\" in echo area.<br>
> +Call the functions on `progress-reporter-update-functions`."<br>
> +=C2=A0 (run-hook-with-args 'progress-reporter-update-functions<br=
>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 reporter<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 'done<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 nil ; percentage<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 nil ; index<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 (aref (cdr reporter) 3) ; text<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 ;; suffix<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 nil))<br>
<br>
About SUFFIX: grepping through Emacs' source code, I can't find a s=
ingle<br>
use of `process-reporter-update` which uses the SUFFIX argument.<br>
So I think we should plan for the possible removal of that feature and<br>
not pass SUFFIX here at all, so as to make sure the hook functions are<br>
all prepared for a future where SUFFIX may not be provided by<br>
`process-reporter-do-update` either.<br></blockquote><div><br></div><div cl=
ass=3D"gmail_default" style=3D"font-family:monospace">I did a quick survey =
of non-core packages and github and I didn't see any SUFFIX use there e=
ither.=C2=A0 Good time to consider it deprecated and I can update docstring=
s to say that.</div><div class=3D"gmail_default" style=3D"font-family:monos=
pace"><br></div><div class=3D"gmail_default" style=3D"font-family:monospace=
">-St=C3=A9phane</div></div></div>
--000000000000c1fb1b0645c69b61--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 12 Dec 2025 19:41:19 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 12 14:41:19 2025 Received: from localhost ([127.0.0.1]:59595 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vU90w-0001XB-KB for submit <at> debbugs.gnu.org; Fri, 12 Dec 2025 14:41:18 -0500 Received: from mail-vs1-xe2d.google.com ([2607:f8b0:4864:20::e2d]:48335) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vU90u-0001Wx-6e for 79859 <at> debbugs.gnu.org; Fri, 12 Dec 2025 14:41:16 -0500 Received: by mail-vs1-xe2d.google.com with SMTP id ada2fe7eead31-5dbd150efe8so591487137.0 for <79859 <at> debbugs.gnu.org>; Fri, 12 Dec 2025 11:41:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765568470; x=1766173270; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=AE3KmXFRCMYch6C1D+aJwPKWGGaKpNpz14xSyUk9LD8=; b=O5hXUs772WitNRRiWWwT0VpJ4mNDlnLIAkPQXnr+Nn777MJCSAkQDvIYKbHjVGJ24H HqMUPqRVhJ8HDoMcczvd8AFII2jMUydeb5Bz8aeJyK4ohsJKtLrbE4hSqoai7mQd6SLv E1Dsjdcvdi45oE8/NBI7k/PWnQmAtgtP1Vm2vbrPSf+r2+3cwcgYTg6jVhAr3MZLtyI/ yf2BAVfY+RDpG0PtMJxi6JxE5VcQPECvRbi9GE9LijcttQFI8jgpuUtn/EZfP4oqXckE iTVZOeX7WBp6eO2ghzLppE35x8DX/7BFD5zkRqEzU8tUb5YwHkOy9XZ0PAVqCoXg4tAQ dDOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765568470; x=1766173270; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=AE3KmXFRCMYch6C1D+aJwPKWGGaKpNpz14xSyUk9LD8=; b=dVTYh57m0rjWemR2d59TEOuYxBgyKvD3l5YvU+2ejGUjDpQpV/dfohXKU96g3o1gme 83O58rDpvZXxqsPEvLUp333/tjc0jlHD6PuICg8oLX3rO0xtN1QsHnVXbCSqZMJUJtI+ 37KvEb7Xh+hqkpnfLOIJMNB9a/T41K8kRkFbQ/tMuyZvii7MAfbuK40shjJmWqTaNgAU eYGBTp3EF7vngjR3GgVHJpb+8aDiNbirkY7E5Ui620GJYaMPOb4LpRSWbEyuviaXLtFx 7ZaRsCYGDGjBz3xygLbGF8sdWtXtSdpRmK2XJzVtC0EdBra1pp+90makSiOvD7zUe+5v Z6bQ== X-Forwarded-Encrypted: i=1; AJvYcCXfUxaGVw6V5JebfV2OulU8y+nwnEiDiK2dIJaeYvFldDb3Pzd46SPcK0TxJ2Is0Z0dQx7Maw==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yw1xzyrp7BiDEWwzNM2EPmdl7XD7M3cmyHiG7DPVS5oS+RWJDC5 ku2yMDAvhkb3Be0GxWiNy9ryV6EXdEffm52ChOHd5DsspeuUCRTLmxCGXPYwH0Z+/nyBiwdVOlw OyrodOv5SSua048GyWPvS8FOVWTK8M6c= X-Gm-Gg: AY/fxX7RCHJSHbTi5t+6oPr9SeOaCyPGV7LspK3Xyz+fkcg4RhsOMD5HWUa91zYep7H Zn7NcCbcFiX+1GP8qjEvQ0+/0sOqClIli/TASzj8UP7jG7zhMGjV+E0jwTks6nrP0ANOUIIy3tb LrJdwrA0Wiy9+K6kT0e+j2Ex8UnPEQVFtICXKuVEyyCnmJYAGDqvz86sNya6cnmNsgdGuEcX0cs vMp3hVsYUbF+cwGanaNndC9z/xtoJX4sQ1mwPA3jZaK9RILvdH/wmgK4pgj9tEbvGChQ5QS X-Google-Smtp-Source: AGHT+IHn7M+BfcwH7NA/5U17X/nQXDFpwhXoEitwyhJ4DzJysDVrtgi+jN2cmuX3iPV2cRi3SETmgqpwLqTtjv7WNCs= X-Received: by 2002:a05:6102:5a89:b0:5d7:de24:5b3e with SMTP id ada2fe7eead31-5e82748ab60mr1122170137.6.1765568470342; Fri, 12 Dec 2025 11:41:10 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <86ikedavlh.fsf@HIDDEN> <CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN> <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN> <jwv7buss9jh.fsf-monnier+emacs@HIDDEN> <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN> <jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN> <87y0n7ptce.fsf@HIDDEN> In-Reply-To: <87y0n7ptce.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Fri, 12 Dec 2025 14:40:59 -0500 X-Gm-Features: AQt7F2pXYolI2uoM94DSwMXjGJEDuxJi8nAdS7keRCYUidY5jrUqL0Cfru8yiIk Message-ID: <CAN+1Hbq7aKgByHjWkw9Rb-B=AzakhxtVvnvbdH2hg_ryKfmg=A@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Michael Albinus <michael.albinus@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000805ef30645c6710a" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, Stefan Monnier <monnier@HIDDEN>, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --000000000000805ef30645c6710a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Dec 12, 2025 at 11:18=E2=80=AFAM Michael Albinus <michael.albinus@g= mx.de> wrote: > Stefan Monnier <monnier@HIDDEN> writes: > > > I think we can remove the TEXT argument and provide > > a `progress-reporter-text` accessor instead. > > [ `tramp-progress-reporter-update` could use it as well. ] > > Modulo backward compatibility. > I just read took a quick look at the tramp code and it uses the progress-reporter infrastructure. Using the updated progress reporter, if one adds the system taskbar progress update function to the new hook progress-reporter-update-functions, it will work for tramp with no changes. --000000000000805ef30645c6710a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Fri, Dec 12, 2025 at 11:18=E2=80=AFAM Michael Albinus <<a href=3D"mai= lto:michael.albinus@HIDDEN">michael.albinus@HIDDEN</a>> wrote:</span></d= iv></div><div class=3D"gmail_quote gmail_quote_container"><blockquote class= =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg= b(204,204,204);padding-left:1ex">Stefan Monnier <<a href=3D"mailto:monni= er@HIDDEN" target=3D"_blank">monnier@HIDDEN</a>> wri= tes:<br> <br> > I think we can remove the TEXT argument and provide<br> > a `progress-reporter-text` accessor instead.<br> > [ `tramp-progress-reporter-update` could use it as well.=C2=A0 ]<br> <br> Modulo backward compatibility.<br></blockquote><div><br></div><div class=3D= "gmail_default" style=3D""><font face=3D"monospace">I just read took a quic= k look at the tramp code and it uses the progress-reporter infrastructure.= =C2=A0=C2=A0Using the updated progress reporter, if one adds the system tas= kbar progress update function to the new hook=C2=A0progress-reporter-update= -functions, it will work for tramp with no changes.=C2=A0 </font></div></di= v></div> --000000000000805ef30645c6710a--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 12 Dec 2025 16:18:06 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 12 11:18:06 2025 Received: from localhost ([127.0.0.1]:58396 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vU5qH-0006RB-KT for submit <at> debbugs.gnu.org; Fri, 12 Dec 2025 11:18:05 -0500 Received: from mout.gmx.net ([212.227.17.20]:52213) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>) id 1vU5qE-0006Qb-BA for 79859 <at> debbugs.gnu.org; Fri, 12 Dec 2025 11:18:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1765556274; x=1766161074; i=michael.albinus@HIDDEN; bh=HS8s7E4UGCSBHLkaU0iylLddZN7SFKa5hLsKfPttCuw=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:cc:content-transfer-encoding: content-type:date:from:message-id:mime-version:reply-to:subject: to; b=OAhhIzyaW4hXSMyEEsrIkLL3xWIiU2YRirFEocK5qWvnBdIHJVdaLJ5rgdm3HwFE r8573owMQPeVDa7XZFjAgdukV9bvzf8+fy9dJZ1fo9zWH1Jf0DPIT8pePzk8VfxhZ TATrDdGEzO6gx5A2I07Zy3Pn1BH0RtyASLLEJwtW9TP2jatfBKGTbrHmska8E0vJN 1B2fDtW0Xvyr+Cr2Zz2IZRWOJPel/N4IeUZEYLsBE1D/yfcnPiIw6RUhBeGDfFt23 R+3NkVlax8DzyjL2z8h402qp2/ExlF43rb7eJvFVp742sPplX2TT/8aYgyi8Dhsiw 1FqkGbH9w79GXVdAeQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.37.61]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N4QsY-1wBeP13vfi-00sUDS; Fri, 12 Dec 2025 17:17:54 +0100 From: Michael Albinus <michael.albinus@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support In-Reply-To: <jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN> References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <86ikedavlh.fsf@HIDDEN> <CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN> <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN> <jwv7buss9jh.fsf-monnier+emacs@HIDDEN> <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN> <jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN> Date: Fri, 12 Dec 2025 17:17:53 +0100 Message-ID: <87y0n7ptce.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:cfKeW9aEGWV3ilZlbCrHLfa2A1LkLLqWDla+J4b7wYqXvw7Kozm BOZ2jnG/SI3JaFKjLz/UbVGAJn15rLWDO8jEC/faik9mD12F2HgeKYeEDY9ugU19f4x8C0H IgMFv1JZnugqVM72Iz77HijuIZSpbD/SaBce4dfZtv1D2otp16tAizmU1GVzw0SbOGyKx+a 0fU3i3Fc+W+hVe3449kJg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:YJje0KCCszI=;qAhf4Zi3jEqPuo2lezc5RADKisc GnhOPU2vhU4nJf4dqAhvcuxHXpsJ6gsGIHs/MoCkfFtSOz+Uv0SH9NGm9QdFPBbby40s9q7Np iAwxQ0RcalGPMTXAaJsZgBXHCgfUhEb8Sk/UwHZoNKy0AilJqXJlDde4HM+2CgL7je2DJ1sW7 /drWY4DtG6taXJd1t1ALLkbBQB+tDQAbbVlexqlQ6QO0JfDmga1bzzwq+fz+RqwhsjZj53Mbh M0G1SxjklsBfWRmD6rOFg+igq/OwDPK08PGx9PT1tWcnq//1v4EfIilusuNW+S2r0I0B/f7M9 P6sHE+wTddNFffnFvZD+Tn4l2lVyR+thltomFtYX7W872zISfYQABZAGmMsh0Qvuiy2ptu5Ja zhXA4TdbN2UFDxSO7ER4UAZgmn2+lquG03JQu1OUJeHFC9W+jta8AwKE5ZKvoWrRyM8R58/9b 7VJAi4rdH4Mxfk5BY3c5yfzO9K7VgUk8O3ntXRkO3zFhdJdIgayN8upHCangX84Ahx6z1mzxj tDVGpfzwT5otsYHVoEIq0Ic4DZlkgn5ECFmwE35p6jyuhzY27w4nMIVRbMbh386ftiizyS1n9 jngs9PWDuGJcWhgc5kp2Loc+PrQjyep7KsEzwj2apj4WXPb9i7C0e8IbPQPrqwH0pc/ZeytJ2 q/XZ2Ycaus7D+K87y13QTxrLWo0VfsZZvOnG8lZttC4I+6FB2P8UvQD6ClvldlzRo6HIag7d1 nO4dh3O23BvLFi9857t0cEecJ74prAEvxJqKzS4x9WOH+VjN+j83CeCMDKeZvH8MuwrMK0a/D RBy/xhl2zGwQefRs0fidU0Lsuq6q2bD9KlBRu/TMmc7SdXV2tSsYby1WMW9729sO+YhG2fwt7 fHHDigJxaM58/qfdvUjWLzz/I8QhpNwWwuUD176h6NZ0S+v3AO1fxEOGT0OVd+9cZj019tawN 4Lhhw69lbnDqMpSh+/kjB4ao9Z31Ydac7vWIbzzm48QngEH7733g7r5hxcSjmS0TEty2Dsg/5 diRUB3eKBQ2pR8C0AkOqutK3LdHSCGfOVXoj0DLjTPPyiEwQljry/p8ShGSLGkcqeTVPwEpu3 yoRKOhR9vYebiZIW1PZIgLSoTH3Ci1A+Q6PyqR1vqcHMe/+BDVbPJe1AEl9Lxb8ev+5Tl0Tp2 by6UrEJGtCyrjxvSDaajSo7G2MieFsaAL3ef+f22PVouS9G2jFpmh/aYfyN50rKSsbq1S5U1K qAguyL4SCm+lLeaeadhSU67QCf6AMW98feAjA7gFCJhXS1n6wjpxAKJiWECJvQfl6r82jKijb vpGBSnjZ9Z8hRcwuDhPmzMWWN021YTOExF2UMHd9zdNvKtzLe/LM9POFr42mK6As2AXSZDup1 57r7zylJSCEDurRKZtDHM2X5A1S599xzpHxi93c4ny8NcDNuRwVDUlJK9VdyBc8pf5YrTCNeT QMr6iEQFVXBCdfcErwsGoLWfw/I8d4XS7dX7RO/qJEGH9oM5Wi5GOGnVoGKlCY32QNTAcrwWR Ivq0onBWTqpTGGDhZsCBvKHNCYVl8NyHJRAgiw55Cs+UeTithdu/D/3bk4pKiPuHMH9lxVTfw CEtZWtEurtxIyE8fEcnMJK7U9TsidaHDwG7ND+0eczEBcvX39QkxC6Xcolx7WK7zqp1iqdrrt IMoZJdF44niJ/4gK0Bu6/H9OdZV6jKyGs+pcmjd07XDH12tt7UUGctvsx6gLDkFyF1AnKmh1H Tje7sQiqlAST6XhjMqTcJN9f0/3VaoRZH6MTiHz/AXrMLaUtsrc2RbEDs737nkwhXoMh6yMuz vcLByDaEeVL2haTPfNZCzoN2GJtGXKpY/eUNTQ0387OUl93ttoqwAoMi8/HaL5jIV+A5bSCgU UBxeyrrboHsKLEnX5BvQ7Lw91kYYHa0m3TDbSET9vIYJE8vC6bjCzpGwbCvK2BOU0JFeJkNZn 5gUHXYlW4v426aRjIpL4XNgiZNypAmgAsr6FDLUhGFXi3HHVHf0/yCwBCxyZs0h+Hn+n14wqf k7vg0a9Bkyl8gaAiTmXex/G8+MTaWrt+gJwOxvfAtnOjpHOvIzdS8XbX1MtopixKxfaykQuxM h+y9mWMAekKwRYa9Eqz6Z/IwrdCtAI5nBgX9+puKyWLobWDWQe0fvj0wxeZvrdi2rdhbw/6Oi hPwl077jMOkwPxKP+Cdcz0mtoqtfegiTWJlq6OOVowY6L6nhQOs+ddgc9fHa+757dA6rjpnSh yKSSEf6JACMooi+2Udu0FmZapnUD6eKSARIaxoXQ9YuM/tkKQrHT8ZukEvskqC2vEkh2lrl/W DglVrOC+kIDAEKzwz64w8YsLfCeAfwHeC7x85s1Ta8XfiYUJLyX6Ja5AACV16iDBn+M8PLa2c NlARo+8eMaesIjftITnWOm0XwlYdmF1WmzKEGeDFIqEst5cKQKKXpbmvRsWMujoHaNDrqMtIb R9gb7DNc5yrXW2oZj5UFd+iJYuFqK1gfzdqk8ZskLvtxq61S9WJtkpfqDi8FAbWT+iJKjfMWw MkF/pD9UfPjsWw1dqp8lDsB8lko85EThoA4Gvr9D7kgFaSXvPn77Yw7IObuq91EpX3LITDj/Y 8JpdcWsH0AJB6eLFgRO3WPCUG1jjLNNBnDqoK6MWk82+cJ+QFPDFzu0CI+GxYLBkCf8CmdHeY ZVZzzctkubLaWNfbM3HzpdcPGmEjf/9pJtIPsYBNKrz7NpyBNFuqljyHnsq/L4EwEtv1A3i1h 0el5JVVyQ2Z08Hh4OkUxiygrQ67cDFAjaOLDvDk/I3t50WzIO90+XrnDtonayZVG9u9p3aIpf s8ND6TgbQkfL/0jKOQa1xF6qUSEYfhToge3hjWWCIrUN/Q+wIWU5Cjt9xvSSYUin52G+ZUfm9 fhrNUgRvX8Dv0RjVD86Nq1xzSd5dymgGe0X1KtasxlPrOEN/3b74Da4HUXFVOoatIUOYYOCKS BL5N8kFpBh9stOdUsJy6pifF1hlTMmbE+BfKN3kzQV/NE+wZl1ShWC8UeJm9pk78UJe+sRruY x9NgmfknbfLXe9lU9fVvgdEMe78mk1tpg+KJhsEpS7rbH1OJ/iocIqlx8qzpfTWWseFyLIRPN sjoC7tp31mqV8ULFQdM9XRm5KGXwFDv5HeEbm4b3RfYVr9SQz4zQG8tEcIDJaDCz3UlJObygp WuqruvG8dZAhjjSiDez0wBdMMWQfBn9H1QUmCAKqKoAR3qChgOyAKtLAeIQNvqbNhF33E0asJ 4fuT1yNHU53wXybY1/bJ+lP03YWR3H3b4KU70na5hLklGVW6n/fHIOB54x1P7pPU0bZCcBNvI rh2jcoWh3gkBOPq6WkRPKD0FHpMBwfmdVANsllSgfJkZzQPUF0g6S8amTUFKhHRfAQoZ3qzOR lHouNLPkTxhY11QIyshA+Tc5Q1rOYJp/H0E8CvY9+P681Fyweu57C9VOB2iw0nAhBFYRommrb bS1F1WzNlhxiLuBfW8A5AIubSAbkd3OX6+VTSMQKB613O0Bu4fUqzeF3hVVEP8/fmzPm8uOC9 i9KhmUS+m6xaF205sBZ9PE1HSLgo471hrLMRgvjkPM28d2yLc1l+1cDGjE97bhRLUwcSTiTbU zUvtNNZ4FTnNBuFJwH17Zds/KtvAak4kzCAn9ZTyqL9BpReQT7akYMSvXLx23doHbl64zKCoC qWEFVOwcuCfbDYuFX750TNlgtNcsZ/kp0e/zgSPEwt22oyQVYAzfPCoMS29zGpriC0vQ6sqm9 Fd5EMz3znUecCyia0XATTf9u3UEzSpr90zwjXtpVIvlH3N734KUUBzLDUqBwKurAxYhBTFrCQ d93fDs2eAipBMs1fCinxyNlf85MR65NnL6zmijlVwKvWcaXDRg5tdyLYYP3eGWl6+6HPK4fXO s0SWWNaDJQtBQ+qDhLMGCN66cR8z80sSVMPiRaH4Z0z6ekUi99K6k6N8EN5VowegHaTWmpphj KoRWNewHS2nkqlLz7l6Kmh7a1YkTYcVBXlyqGrKbJLDgAd/utsItj4i+J5gbMSAqfZ/oneFMP 1ahL7/A52uYcqxUaeJSPj6iZsdxHHMN1xxRvEA+L4We2T888jn941un7jLsTgUtFGdj4IXOHq VhwjcYQfnQ62qbYFkFPbiX03X3eojCI/fEu2/VWnkE3eQ7p4TwfSwm1EAY3ZuyeuqBt6+iKtt Dxc6J6uT57qk4iVdj4lBp0Yk+JTFG/N56Qpq6+BeBppHRMNbts1ytheU8l76llkI//euEmyVe bPc+3WGvWbUx3Xw7DoJcxK1LF6SJUBoPxfKYxlCQnGIc2q4EpPiqXsyzgAxAnDw9bMup39Lsd 6t4M2EC0j7XbrauYlmzKsob50BtnmC8Zz9k1etA3j6T2kUmnSvb/gi5yUVKWbDQkrUDXSlO6f H1oRorGsXYGE3A/PKqgvSoQrGASewsOxUVk4lrAhli/x8kohDCZGFoIWMWipv4FkBGUtijesf 4YT20SoNtYWiMzDo5MKZ6mM4TbE21dEoth2rebiMM42IL5acl9dsEKcYDtm1XrSAHiiloQ48S RKdvyo42xftao8uNvnyJluk0cRLlOoTwB6wb0qGigbM8gmbTGrmPF05IFSG5vutQJxdKDnc39 7Zw/hPgbfsXZlSFYxxDUZw9Z1r67bkIqmXXREjsYnUgfjnAawvVOjpzeEDA07o8dJuvtMA7rj KlRQ89VZsbOELOipAjBzHOhjR9poZi1P7E8Xp18Q8bIQUUYDWUxE9VDgNOw4GPFjaGXXRJXxv WWU/d4DZw5+CFr0k5w/FnwNmHtkGRgHhoKWV54xcVDu7SywXsZwSMiB7S6/8xMMqM/y4AZCvl +RbQ8hvofIds7DbjVXYK/kFlnip6LDwZIJQh9yNE2x7h2ONmMli9ziPlHve3Y3EA1MvRDECpr M+LJk0+K26OXoEmkX3t8ngt9h7dqgwvlRE6RxzgxQMkK95pkwiImGTwJ7iIz9sUaH3aqnHIAs dbClTCuL4KyWYghFhFwpPU6ek7NrqXTs7kHWvf+h5iG8Ae2XnSftJrMe4QdXruGA0cev5T1d8 X3Eq+bJAnXIMVMa/qU/IqGYOmBziwWHJv5Jylj+bKjghxeYrEu68Ps3zMPRp4/pFbD88jnT07 ENSh/kHpBfjbS1ByBsrDoJXraDxXrc67mODR20 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) Stefan Monnier <monnier@HIDDEN> writes: > I think we can remove the TEXT argument and provide > a `progress-reporter-text` accessor instead. > [ `tramp-progress-reporter-update` could use it as well. ] Modulo backward compatibility. > Stefan Best regards, Michael.
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 12 Dec 2025 16:04:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 12 11:04:33 2025
Received: from localhost ([127.0.0.1]:58258 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vU5dA-0005LO-Us
for submit <at> debbugs.gnu.org; Fri, 12 Dec 2025 11:04:33 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:25947)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vU5d8-0005Kz-GU
for 79859 <at> debbugs.gnu.org; Fri, 12 Dec 2025 11:04:31 -0500
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 581014419C5;
Fri, 12 Dec 2025 11:04:23 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1765555461;
bh=BV/ED09RmLfoe2OnY9nIvmya8TUSsB9A5U0eBpaG9Jc=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=c9qx4iDanZpW8/sx0wGDIGyEIEEid4FySPa0Wu+GxiAlnj1cCnYh7w88J1I/slryG
U850zGdYfe0DQRHs97zo41L/9OLakC5YGNkj8H2bsahtk9nYSsaB/q//o9/z+j31ke
L8l2tIuHuKD9s9HVO00g72Yb3AWwLubYesRhy4mrRzZSYwyta4jDjB98SWDeOz38ym
BDmPYYooOCrHML6JGPhXu1+jv1wTValDoidN0okd3HHCSSvx5/Ns2qS7CDK3EeNxpc
oge3XC1R7WF+PUNF7IlPqxcOXf+fGWCR57I0vRECXcOMst+VT0x/ugXk+nqMGkvnm6
G48uZ9JlEbUZQ==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id AC0604412B4;
Fri, 12 Dec 2025 11:04:21 -0500 (EST)
Received: from asado (unknown [181.28.45.30])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id C6183120A45;
Fri, 12 Dec 2025 11:04:19 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: =?windows-1252?Q?St=E9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
In-Reply-To: <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN>
Message-ID: <jwvwm2rpwpm.fsf-monnier+emacs@HIDDEN>
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<86bjkxhuca.fsf@HIDDEN>
<CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
<87pl932wqd.fsf@HIDDEN>
<CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN>
<86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN>
<86ikedavlh.fsf@HIDDEN>
<CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN>
<jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN>
<CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN>
<jwv7buss9jh.fsf-monnier+emacs@HIDDEN>
<CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN>
Date: Fri, 12 Dec 2025 11:04:15 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.109 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>,
michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
>> >> (defvar progress-reporter-update-functions nil
>> >> "Special hook run on progress-reporter updates.
>> >> These functions are called with two arguments (REPORTER STATE)
>> >> and their return value is ignored. STATE can be:
>> >> - `done', when the job is, well, done.
>> >> - An integer in the range 0-3 (for pulsing reporters).
>> >> - A float between 0 and 1 (for numeric reporters).")
>> >
>> > Could do. I'd prefer avoiding type-of conditionals and perhaps it could be
>> > reporter state value. I'll take a stab at that.
>>
>> I think an `integerp` conditional is clean. It's Lisp's way to mimic
>> algebraic data types. When the data type is more complex, we use
>> a heavier encoding (typically a `cons` cell with a symbol in the `car`
>> that stands for the tag), but for simple cases it's the most idiomatic
>> way to design an API, taking advantage of Lisp's dynamic types.
FWIW, I'm still bothered by this "two args, only one of them used at
a time" design. For me, such dependencies between arguments is a code smell.
>> AFAICT it will display the progress reporter in the taskbar even tho
>> `system-taskbar-use-progress-reporter` says not to.
> I'm guessing you haven't run the code. I don't experience that condition.
> If you (setopt system-taskbar-use-progress-reporter nil) or set it nil in
> advance of enabling the mode, the hook will not have system-taskbar
> functions on it.
Indeed, you're right. But then why touch the progress reporter at all
in `system-taskbar-mode`?
> +(defvar progress-reporter-update-functions (list #'progress-reporter-echo-area)
> + "Special hook run on progress-reporter updates.
> +Each function is called with six arguments:
> +REPORTER is the result of a call to `make-progress-reporter'.
> +STATE is the symbol `update' or `done'.
> +PERCENTAGE is a number in the range 0-100, or nil for a pulsing reporter.
> +INDEX is a number in the range 0-3, or nil for a numeric reporter.
> +TEXT is the progress reporter message text.
> +SUFFIX is an optional string to print at the end of the update message.")
I think we can remove the TEXT argument and provide
a `progress-reporter-text` accessor instead.
[ `tramp-progress-reporter-update` could use it as well. ]
Also, now we have 3 arguments for the "state" since neither PERCENTAGE
nor INDEX are used when STATE is `done`.
If we merge it all into a single argument, it'll simplify callers and callees.
E.g.:
(pcase state
('done ...)
((pred floatp) ...)
((pred integerp) ...))
instead of your current
(pcase state
('done ...)
('update
(cond (percentage ...)
(index ...))))
> (defun progress-reporter-done (reporter)
> - "Print reporter's message followed by word \"done\" in echo area."
> - (message "%sdone" (aref (cdr reporter) 3)))
> + "Print reporter's message followed by word \"done\" in echo area.
> +Call the functions on `progress-reporter-update-functions`."
> + (run-hook-with-args 'progress-reporter-update-functions
> + reporter
> + 'done
> + nil ; percentage
> + nil ; index
> + (aref (cdr reporter) 3) ; text
> + ;; suffix
> + nil))
About SUFFIX: grepping through Emacs' source code, I can't find a single
use of `process-reporter-update` which uses the SUFFIX argument.
So I think we should plan for the possible removal of that feature and
not pass SUFFIX here at all, so as to make sure the hook functions are
all prepared for a future where SUFFIX may not be provided by
`process-reporter-do-update` either.
Stefan
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 12 Dec 2025 15:29:39 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 12 10:29:39 2025 Received: from localhost ([127.0.0.1]:58008 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vU55P-00034A-5N for submit <at> debbugs.gnu.org; Fri, 12 Dec 2025 10:29:39 -0500 Received: from mail-vs1-xe2b.google.com ([2607:f8b0:4864:20::e2b]:58612) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vU55M-00033e-Hz for 79859 <at> debbugs.gnu.org; Fri, 12 Dec 2025 10:29:37 -0500 Received: by mail-vs1-xe2b.google.com with SMTP id ada2fe7eead31-5dde4444e0cso461270137.0 for <79859 <at> debbugs.gnu.org>; Fri, 12 Dec 2025 07:29:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765553371; x=1766158171; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=1J2FRsHVT0/NJ4G7epk2jZwJLWhr5mAo3L5dTZdUwjU=; b=YCtqFMOet1lyAyaEKQqujTuMOBuX1wcZ0fN4a7bFr4gQyzFn5peqMDucTxxjGYk9C2 4iV/iUqL48ns2CatdxJRh2UWVwp4aou5zlXQrUOEhKbcMLmEDgxTziMX01JXSW/cTEXG Pvg/GFoYgW9sEmQbtnjtw4dpcExRVzRVdZgD0crbTUAejE9PSZZxAm10LnM3TOiAi1Dk dKE9PjL8XpVDzLG0oM1ykdbnPQlb+F0ZBxYD04QSj2IKve+m4UVhePju7I4HTKmymADv Ahb7GWVUYJFwoGdDe7XeLXc7d/jvsHFRiWXuNsv2HK/ty8gZ3z8J6FZH1VIHC/6+Rat2 IjaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765553371; x=1766158171; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=1J2FRsHVT0/NJ4G7epk2jZwJLWhr5mAo3L5dTZdUwjU=; b=ee9pkrz+iZ2Oo1EmK4T3V4NXmN2b51DoPNquUYOhOSakzTDLB6LNb5hExCYudLXU3A EhywJEgMqWL9VsmrtwbilF4V8wZVVxQHqrDOgPux30OwLUeEwR1rN9mBz/u1MWZ2v0zP kYvf2L+0k5AfFgZTRhko3hlGl1nr56UvnU+vndjtx7XDAZbzQnHgroeoSQwNc7CzPSuZ tO0EXce7C3j4cFz9gIjhknvXK70GC284U6QtvrU7XXbBO+ZKATee4DTw0LrVjOOomFmF bS5gM+oJXTH/xQpzO8S3Pfb+l4GvobRmZaGsg1aZDu1xLAM5c5Mg5t9UcsEW3Dle/XQP K5LA== X-Forwarded-Encrypted: i=1; AJvYcCXo2Op2RKlm4+5h2KSBcA8OosIS30wiC5gsyWsY99G3UTGU5WsJ6/TbnhlT1Y4z0ad0tunykg==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzUoeT5xFw2UwsUTVE9RMyAibnpV8za8q0AxqBFX+0KCLgGFYJj 5w2SciT+IluxNK6WekK/RdUd3yDB9xc447I/dyNJA78y4SNtbR8o8k19InRVlGdVkHSPrQzctMJ WcRM6/MyBGGfds2v5tQHk7AdS6fEp3Y4= X-Gm-Gg: AY/fxX6AxT8odrbylDtxKZD1vuZZoixCrHEaYhcU5QWPC7OPoKn+DMwNofDg/OS672q pWV/nvUCoNeWdAqIMRobw2E7QOBLX/jhjw4OV+rdG/VGEKbyJnjEGu9P9bCFNfzoKP44eVufNso IG3nBqHSt0lm+xKgJJaThsngVBE5JEDejyTLhxFtevr7HMflaKiR+FRD0xmyH9TX95Or9NcIiUr uPcdmUg11/1AFivk6+Jvh1q6Rd3Si5Lk5HDDa0KbbNbZTs/0mywg7PmFIT9hcRKjsPNkWmkPWgs u1+4IQ== X-Google-Smtp-Source: AGHT+IHMmHUM2y08Sws8s3dEYrYTtHttbN5ZHW3oEUmW6FkiDIUqBpGmZ7h5ryWTUTrQOA/Sr35WjkblgmaE+IzSc6Y= X-Received: by 2002:a05:6102:4a93:b0:5df:c390:ef53 with SMTP id ada2fe7eead31-5e8277e758fmr793401137.36.1765553370681; Fri, 12 Dec 2025 07:29:30 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <86ikedavlh.fsf@HIDDEN> <CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN> <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN> <jwv7buss9jh.fsf-monnier+emacs@HIDDEN> <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN> <87ecozranm.fsf@HIDDEN> In-Reply-To: <87ecozranm.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Fri, 12 Dec 2025 10:29:17 -0500 X-Gm-Features: AQt7F2qiFxhlahlnO5SFTFckz0uWndrnxt06zUqcC31jg7x7ogIlFJSIXM5ixzQ Message-ID: <CAN+1Hbqv2sc2ge0cMsU7zftawJ1Vpt==1tvEVWj7W3qi+eR_vw@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Michael Albinus <michael.albinus@HIDDEN> Content-Type: multipart/alternative; boundary="0000000000007dd7520645c2edce" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, Stefan Monnier <monnier@HIDDEN>, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --0000000000007dd7520645c2edce Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Dec 12, 2025 at 10:18=E2=80=AFAM Michael Albinus <michael.albinus@g= mx.de> wrote: > St=C3=A9phane Marks <shipmints@HIDDEN> writes: > > Hi St=C3=A9phane, > > > +(defcustom system-taskbar-dbus-timeout nil > > + "Number of milliseconds to wait for D-Bus responses. > > +If nil, use the `dbus` default timeout in `dbus-call-method` which is > > +25000 (i.e., 25ms). > > Nitpick: Neither dbusbind.c nor dbus.el define a timeout of 25,000 > msec. It is rather the default timeout of D-Bus itself. Note also that > you mean "25s" instead of "25ms". So pls write > > ... use the D-Bus default timeout which is 25,000 (i.e., 25s). > > > +If your D-Bus desktop extension needs extra time to respond, in which > > +case `system-taskbar-mode` might not initialize or related functions > > +might not take visible effect, bind this to a value higher than 25000 = to > > +find what works for your system." > > Same here. "25,000" for better readability. > Done. Will be updated in the next patch revision. Working on the documentation now. --0000000000007dd7520645c2edce Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Fri, Dec 12, 2025 at 10:18=E2=80=AFAM Michael Albinus <<a href=3D"mai= lto:michael.albinus@HIDDEN">michael.albinus@HIDDEN</a>> wrote:</span></d= iv></div><div class=3D"gmail_quote gmail_quote_container"><blockquote class= =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg= b(204,204,204);padding-left:1ex">St=C3=A9phane Marks <<a href=3D"mailto:= shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> writes:<= br> <br> Hi St=C3=A9phane,<br> <br> > +(defcustom system-taskbar-dbus-timeout nil<br> > +=C2=A0 "Number of milliseconds to wait for D-Bus responses.<br> > +If nil, use the `dbus` default timeout in `dbus-call-method` which is= <br> > +25000 (i.e., 25ms).<br> <br> Nitpick: Neither dbusbind.c nor dbus.el define a timeout of 25,000<br> msec. It is rather the default timeout of D-Bus itself. Note also that<br> you mean "25s" instead of "25ms". So pls write<br> <br> ... use the D-Bus default timeout which is 25,000 (i.e., 25s).<br> <br> > +If your D-Bus desktop extension needs extra time to respond, in which= <br> > +case `system-taskbar-mode` might not initialize or related functions<= br> > +might not take visible effect, bind this to a value higher than 25000= to<br> > +find what works for your system."<br> <br> Same here. "25,000" for better readability.<br></blockquote><div>= <br></div><div class=3D"gmail_default" style=3D"font-family:monospace">Done= .=C2=A0 Will be updated in the next patch revision.=C2=A0 Working on the do= cumentation now.</div></div></div> --0000000000007dd7520645c2edce--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 12 Dec 2025 15:18:49 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 12 10:18:49 2025 Received: from localhost ([127.0.0.1]:57924 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vU4uu-0002Ni-UA for submit <at> debbugs.gnu.org; Fri, 12 Dec 2025 10:18:49 -0500 Received: from mout.gmx.net ([212.227.17.20]:51689) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>) id 1vU4ur-0002NR-RT for 79859 <at> debbugs.gnu.org; Fri, 12 Dec 2025 10:18:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1765552719; x=1766157519; i=michael.albinus@HIDDEN; bh=i0BXDmHF2VG3Za+aUwPSgrmjrKe2yuIN+JBshnbvbJ0=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=uEtAw7K6aJHwPsR9LAVX5lj9aANDDCEcjR5d6FFUTQC3B/YlcSZaZYIWVtPHsFeI 5WgLT3ykQWRw53OE7aWeI2ntDpe7huIpHR24CVXFmlb8zptKeaPcYsjvAS57IinZz aPE+/oPeOeDX6+Q8CqDR18eC665tzgkbXjYKuGHMmxoZ0IkmXNFbZnO/qRuYeA6NL FMQJW2BYHYTgYQn4E8lItcV76koJERIdnJI8JcWua3WbpXDHhNx3LnwokGA4hFIXQ yPFQmHPlnChCJaD9KRjYeDpAzOs4lewZFAt/kxV2b4gHiG+3HbNr56nhAiiO+LOrz bBHTRwhE2oGWj2fJhw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.37.61]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MY6Cb-1vVU5C1KTl-00PmNj; Fri, 12 Dec 2025 16:18:39 +0100 From: Michael Albinus <michael.albinus@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support In-Reply-To: <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN> References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <86ikedavlh.fsf@HIDDEN> <CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN> <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN> <jwv7buss9jh.fsf-monnier+emacs@HIDDEN> <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN> Date: Fri, 12 Dec 2025 16:18:37 +0100 Message-ID: <87ecozranm.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:m/4G7S+qJMJ+BxYc5W9jLrUsr0jhOBSuc0UWZrJE/dH7vzbRyIV SH9MsL8eXO2lW4u6qTuZwgXWWRrpS0+MAO9h5rRTTlIu11EGOGmK2frWA1icpEJDAsTY2aB q7EDbsh0/KHTL6w94x1ebFJNX5aR0A0nzF5suyXORzAC10PfWtT35//8JfXBmXvdVNeICja W77rMwoUuU+vzdsQYS9Jw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:EnhgfTt8YK8=;R7ofK2z+ZuGhdZbfxexFVnvLRz2 qVMqnK8HkROhqOn+5MJaZ5LFnSGY0JbJzUE85aQ2x24zsDUAfU3sRVimmL0LWQcJXFHeIOaws 5OqldChdEF2jaya8ZPUBEY051aBz2pTn6XfI1hzmtDw5iDaAtEhxcDm98JA5UINtit74ZOEIK mf+tpWhmX6bPUje21v7bz5QPP0gHW/cx7Yc9tr2JBcCohLypIf1akvnRWvsH77Mlo1Hc9P/pL EqLOr42WG6LWqcnSVzTCWKlzXedjKDQKXKe2pMl4cYFs1qc91Ue7g/TiNR2uzYXi77ChlWvjI aNugD4DUgI69FxZzKRpCjQIzEoGIRctg81lvr9KLdEKRAd6ghHy+QaoWAkUOP4BH2aMuI2IL/ oH8Husjj1sbf0bnSJqFeNssb4hEjOJY68htkPPXg3/pnxDGcP82UEQeZGnVxxBP3afpXaXgse Cvd8qvuIYwNQPQWVK8NkJWLjZfHQGnbqmZMtoy+czGmqOkozigIHEqOMJDe2VX76VL2IJxonL wNPaSI/KYKU4+i4t0lc+24QtNAo89SdK+aBbX2fYMJBqA4DpAx575IPnAi7LBQFLFPCNeibz5 HogXdUJ7v1uOoPjm79EFvxk0EThEaT8WVtBLKm2jD9QeSqFWuD0UZzkt0XqNIlhpzdOH2tc7j s7QO3hUci+DP5j6lJ89MsrzQKAHcOxCsY5GQRWnN/FS0dwfpxgJCWkPfTPomZQbcYfGeULmKC ZR54TBi+Y+VVYvmzx/+5uv4W3bcKaoRI/UR9nRGGck/UpG/7TtQk3Mg7VuBs4Ct/HSnVIa0Yl jZVszQXdsvj9gvkaxgOIEIdL5omzKAn3EoTrA9cKiMvVu0167mQ/zPLQiadLmd1ycUxvvPfBZ BkKdcItPdnRToB1LEfLCHChm2C9zg+Bm25tDraEkMYRU12NkN1hd346h6MZrs/CS3KP5GVxwu H6G6zv9aqfVfDEE2YbfY+NUL6SsEYAFswZQNDQ1PBZ2YLT3sXcU3hoWzRItRwZLlC8N4+ImCE 3Q121iBOss6vqHVz4tS80uetb2RUVuMTNRuNAW+X9o/prw7AuqaUyItA0HPaZSpgsHIXmIsAa A26p50JkK/vdEXx7vC3IWQUMsZzxZSBVn7JKeAJ3mOkewrm1n0PZ9XbpCFmnHxA8XRM7YKA9L 1E207pV1+q9CC6jdOj2MkNzrd5cUpd8EAOoRsOFpe25kidjgx4zkyfGjJztmRFRl8TrMbnzvM u4ackBLmr618NHmDhcztuiteH8AqjDmeoIHn2ziFYi5JexK3VoSHqoJ9m7M9rpHkTWqw9+RKb WJRUl4IC2t1Kg6hSg49G2GY6b0tQeeuL2CfWwv6I8/u//9Q3dtXc4eAI9nw4v+L32ZOQhbm+j 3iGsjd59OXibPfli4TCJZuF3C07ZTPEYtV4yWEMB6lKzM8gYwdj0qRlOR6/siK15wqWjQeDTb v4X5BG4cPJyto2G0465pPNNh3BdneFm+OqtoUJBazcaVsUM3/IxjfotxAwb1EdTnd074izHmD /yHx04Y62EC4yW3rdQf+okrPbhGpi/mm4n1qUwZbqhqupNhLvRA0ooGVO/LwOL3NfsUIkDEH+ FM/b9Yyey5ucyDRqQBiBYpspZxSDEkvv3OsslmW5XniLzpNc1FY0q7yWqP3SmW757zl3nnJv6 +wqc6N6Zn6VjbT4PcYGgNI8Ii7MAq5OmFFmZF8jh4TRqb/iJPG9n8hVZPHOCC9SlA57BUbD2W dnvSLnoFRWmo6e7TPhrFuaFCspMxj/vokB+M1d4O3/iE4PQyMz4OsSljXKxR3lZLm3KPbj0Vi ZFJVc9un5uMeLT/gjH+kjROUfA814qzjHZ5MXSHJHoEQMRLrhyFZl+z8L6Sxla7k4Fo6D7KpV +MU6CWyyEz0s9hy5jUL1bu4muoeFKDMUIZtBYUWRDK0E3Okoq5jfbZmDIybypEpW5VWglS8BM fRsJlGYDTR3X7+sxRwBsnQFddFr2P/Ep+46rAf6JIdhp2/HZUwQGs4HZp6R0Y6kLt2PQiMHzn E3GaendhJNt0zEybt7LbB6mMR7ktsdrBdqLv39DB9kwsYIW0MnW47blNYn1LazIzxIxbD5ssM /ofO7Zr6c1vhu6bskdyiOo4RELkd10mbCPix1zZHImZVAf2ddCLLWoAeC3Y3gLrm5UeWPxzI8 OBfuNVWpjwLDrlrQkWTjhkdaH21PQ9fYRFl2Nr+Hx/qjEpUTUeeMiAMmRxKMgF0bstfc0Wraf ShN/TszXjNixzI5RduZePoHIxS8FhW172JqIuD5D1dEqSYhVvTFi6t1zKshmjbbB5Gqrkuf1X vughYT6hsSoP7wVtrqmgSYSdxJSG5LOzvAAf6YcReyTufD+bjiGAz9KZi172PaL/pxp3hSq83 MT/bXLE1jh0Lx2rq3qNJzc5R7i5QYdngVmqwjbc2aHDdtc1aWLZjVrDYojT6Nt2phSNM34XLb KY/WjuC5fL79u6A+1LpNO48EreaJXAomrqn+UpGWOkeg8sMBI5CX9vXJIc9ToNx6cxEy4yeug hmyfZnAh3QW2PCXYxlTqku58fNMIqUu2qxgHry982yswzTGqDWW1F1w1MOOP7HTxHH2iO44QS tuprEGuOOW5k/MFlHperBHva5v9jENstxOFRK0cRxGuT5XrKOxh7s6hZVQQaxW+3MBXVpeXo2 XvAR+sbe/s4Q/cOUMYdFzjx2lzEhHk6RIrWKehyGLb5dlvW3IwcsN6xYBeynHUEig0ZveDjRT A3CxI6hi0j7UBrmCmnEeFwBFPS9WmlSamRgLn9CT8rKsxm3SFiuBZiFhMpYGiywKp+D2X6eMV b1iPdc/CkF9JMy3R8s8LbmrKsSsdz0ihEyEtRg7gBsGERWECxmRiUnNwn3TA2G5oIZyUowkMH c6lbTQu0CHrVQNBOi/KMeYIn9jcUQkZwGSAe7+UY1g3XMRu674aTiGSSEmuFjWmgxBiiNKryA 6vxUjL+MR2Ckv5k1DRdeUmBt1L96wiwiQ3EWCx+27M6GTtL/rVDn42xqf90iBzS/0l++AREcs gBooo8nAjiDr+XrZnDcPg8pbsJ8bEH0C/E4hH1fWqB2gVYvRoy+8c06t4SUUhzjpM8Vd2j183 ZJcRo2eGjTh4bM3cg82V20PaWHyt80HyMZxPO98ilCj6S2rCxku1AZmLo+cjGDdVWGBr8kWIj 1s8aL8aA4skpudpTRPPgcXe2GK3l/JJ7GGJqwU9mQ0JX+2f0tnlpKpsZ2gEWSJp17AaIRxIL+ kjMZPhrcVJySYZzwyEoxZP+v9FiAGpXF0rPgqXAIuWrp0EddHmkFXuHWklJLG4mnGMECKi3HE 6bPkPbE9bPjf9GubDbXAdcUTlOas79L9LccAWlUba3QdFj2ATpftFZoyU9FdH/z5vfB+z0G66 ghqL/Ndkczp2ykC7qqfV0NDmC7ZtOTPAm+p+Ez1sgUEnvVGAQmPusoqU4gcj2CnRfBWE3vXQh 6xPz0reR2ZpEmMKgl8GZUGwLMi5+poPucMQx0q8vK4tSnvELfixEWwkj8JTZfpUOjn6WpxUaN 2kifXRunoVotJlo0eTlbHONKJr/hvLseggzjnkS5faf7vPyDr93h12nDR5s5ZhYdLuyueHcsn yvFICb48SzA3XQ59alN5FXx0yC+mSp2Z+NyvcOGNXfJGKLtmBDjbrew7NICWo3yuap4Hdmj4T WJjj9/P+NB6DLBS2TKf8wcVzYDGpr4ga0MMqIhUk4FW+2YXVK4J/T+rRrusFjZNSzoONPBZ8o pE3g8T84Sfq94J/14oYFDKtVK8g2/ElggS4FjK9pw31Swt09mWZzvOhR5n0TnlkKhkYkDjdRu ZRLyWgP0VJdF1MqN4bOxSHeKLo8FTR2rRZGA2E2ruTvvUiwiryGOaGVXqFVN/pExWL0R36ZiX 0cicStPMZf+PfeI1jEoRN2zxv4T7GfaZzPUqD/lx5tHb6jrAoVc8wLNAzB8g2IHAWEivpIhi0 NxqbRg5CqQaQ7aPpHGzoAC2esthFw4QtOUIP8HsXObnashrIm8mYyz+LVzmWCOm99J9iLwQ/n UYuG3fElV2Uq7CfPCqtyrp7lbR2IyhsbXkhNN+mN+oWqk5zgkTZ6a8TLCNXF1j6Dt+UWB8o0x 0eeIRlo0EIotN3496BZxJtmek+2yLlTZ8hVAt0oBAXTIopROD70Ih3pPOAE11Tu1GVwqp92Pw GGtQfJ/8ADmm+HH8BNlCfBHj30wHv6Gn4JU1B0hsUD/Zr34xaVbJ/6budJxHiFN05JNxFkXtP V/H7sRHpfjwstIJyE/w9im9jldpAXXFkE/o9Qtfxnsqpesb/A1evWrd8oi9OTa75kJ9yx/QZh vvp5cmD7f6vMsuHB6A81fEWh3UTIS2Kvf7peOq/QpSDEx5I3jjmbLxGv9N4lVTW67Mp0/Pl7i Pju+7mImZ22cF1vZjxI10tHopid2hqUqY86baWKyArOtic+iVpvoIt0PBzf/q+Ej7kKY1itMT lpU/2YysZw2oCLTEoy8R3lXIk2pzyVYeOtZySUEZAlVzAC2qTJbGgT0NLSE4XFrohuQJXThQu Y42dOvqZwhij2ywJu1wK9nAlgLmEaZroBqZ8kUIyGKxA5ndTmLjrwBdiDCHJO1GdAHpW6f13p f4VklJ5DFTL1zoig+2Quc81P2BEsAwyOYyy1BSaSrFitc99o60Em0MzsccW/mrnBFokXsZw9C gxNAYvsrZDrU+vIMM6gjenC/R7e8eqg4fq8abBrdjDuT03L5N6oKgjqtQZwhOzfw2PKoPunj1 xSMvbvcJeColdGAelx/mkDM9eycqbKVBEFA9+83RhZMlWN7ju/cqWRKRkMYfLpZpr5M/UMa8G fxpS5DM2D6W8tH+Dq+N11avBNldanf/X7YuekONZbbh2fHDUN2rTANEpd7UGf2ZFlyhTT0Rzf 5Wq7in6yvA67hTqzgbHchq9GXBe8zoMqbPUH2z2vzquPXLzbNVSvbq3SB4hAWtb7dRZmIMPpr TUJkzmZjINdKt0lRQ7YLFeZcxJ1OPYkr5c/V2chGzy2Um8ZTYQNCDlQsw3MD/SkAYMuZ2GNjd y6gSpfinsgrYK1dN7glvcwHZRnygOSNqlvtkTfnWtU4pVjKj5Io5BbXikWNy8Tp5N/WT+mT3u j0/Xj+ErjS26jOxL2k9oh8O2Hf9zG6eP1UF1F5 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, Stefan Monnier <monnier@HIDDEN>, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) St=C3=A9phane Marks <shipmints@HIDDEN> writes: Hi St=C3=A9phane, > +(defcustom system-taskbar-dbus-timeout nil > + "Number of milliseconds to wait for D-Bus responses. > +If nil, use the `dbus` default timeout in `dbus-call-method` which is > +25000 (i.e., 25ms). Nitpick: Neither dbusbind.c nor dbus.el define a timeout of 25,000 msec. It is rather the default timeout of D-Bus itself. Note also that you mean "25s" instead of "25ms". So pls write ... use the D-Bus default timeout which is 25,000 (i.e., 25s). > +If your D-Bus desktop extension needs extra time to respond, in which > +case `system-taskbar-mode` might not initialize or related functions > +might not take visible effect, bind this to a value higher than 25000 to > +find what works for your system." Same here. "25,000" for better readability. Best regards, Michael.
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 12 Dec 2025 14:00:07 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 12 09:00:07 2025 Received: from localhost ([127.0.0.1]:56590 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vU3gi-0004Yz-Vv for submit <at> debbugs.gnu.org; Fri, 12 Dec 2025 09:00:06 -0500 Received: from mail-ua1-x92d.google.com ([2607:f8b0:4864:20::92d]:44231) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vU3gd-0004Xa-80 for 79859 <at> debbugs.gnu.org; Fri, 12 Dec 2025 09:00:01 -0500 Received: by mail-ua1-x92d.google.com with SMTP id a1e0cc1a2514c-93a9f6efe8bso328634241.0 for <79859 <at> debbugs.gnu.org>; Fri, 12 Dec 2025 05:59:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765547993; x=1766152793; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Rm252u+h+feUzlEVnEj4keFHsRlsDtlCmvlm1R7K48c=; b=iPzanstnBpHPCHnesAHxupN/uCjUB/6WPValiFGBFY3456Gv+XxZDSvWnYx8AqWg3X f2uHReoYoI5RpkcdlGWUrZS9cyqCQOl/LJAM/N2ZjjA+PNPfKWJrfbyuMvRM5f0aJH2a ypdFll6Mc/b4SKvz8oVZl13Zh8k18nu5P0aOmXYJqcIovCN2Iupwyn2CEY6uyvkZSVwH o9DOlTkhp7tGAh1IAB6BBbSQrG3J8v64ftjM3Uq172TSWdQMGqz9wB1DsfDl99frV1sI rKRtwAYr68UMEJnhnXmkMjZuvNKrYV6OzF7SFSd8MNNe7KXfbWGdPvY0R1rmXrIN5lnU P+uw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765547993; x=1766152793; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Rm252u+h+feUzlEVnEj4keFHsRlsDtlCmvlm1R7K48c=; b=MZbOZnCaUC3UuvFSZlik9d4BOOpLL14kZInPH40McYBNc+SN9+wmUQJsuzoOJI6fiv WKQR3bBTG8apYDa5pwhH7Ay/VOepjUCAzE8qOFcMbPz4HlnvEAwXM/LmsDATtCwyEI/Q OAjtbnI/yag3VgvEFCrnZSVosjM58Vv29AZQiqLep2pxH7R9+gyL1KTxXA8OexMhea/m 3v9SlDJOFEF/eLBoF/fc3Ilc6PieDzQ2X/dIG0XuyElYUhYB0hkb/+xO2ZbZePE/IN35 8FPpaXh+9P5Klxk1n8RqXw34HNNSz5rhG6J7vKwFVQiUh41gPVtONp7JiAt00PP/AT9G WKdw== X-Forwarded-Encrypted: i=1; AJvYcCXuhuQyEduxNLTCJkwMtsmeejnqiiQUQy+yJh7wWs8DzhBul0Pvo6Zr8qU1VtmnNKspVfar3A==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yz3GSmytFqYLDq8qVu8jPYB9G4Tb6phkzwTHbD/0A4TPAm3ioWh yFGho2xAANuoUxZydNOlWkLVdBwTvCxxomwfcXsdElkQqP/sCD450k2n6khI3+Ov7B8B9OkMa0/ 3J5IZHOesRgAfuAUA+TE4FAknQMM7nFQ= X-Gm-Gg: AY/fxX7kn/wW9EssV7CTwdM5PerRM+2Qi5wa5E65DIHPgxnSfijWa1Dk1H8nkV4Dtwb qL8zjoCvQhkyeqAbpE8gMeK7YQmAPU7OZxJlQagPoNms/GxYr2HeBUeGCsObmWecfCKnD1QlEy+ 6Mh8nxKhUfJ1LOwM5IGI3MwgG82+dfE5j4Im4Wr3jLWsbdQbZ5yGfxuFgMTgNLU1nxyyCYv9IYN MvsK43+gXwJMXtY6baqLm2eeicnGx1p8QNDYHSlvWI9kP+3RsrVsbZAw1Q/GYy0wYqeCn4= X-Google-Smtp-Source: AGHT+IHp5n8ACcUNT4TA99wpTEj6uyGP1WlVtO2FVdBMIK52x4uGTgvnHS/ZLDeuihAoCiQCRrm4L7+TT//q82LXKGg= X-Received: by 2002:a05:6102:26c2:b0:5df:c15b:4feb with SMTP id ada2fe7eead31-5e8277cddb4mr381634137.26.1765547993275; Fri, 12 Dec 2025 05:59:53 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <86ikedavlh.fsf@HIDDEN> <CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN> <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN> <jwv7buss9jh.fsf-monnier+emacs@HIDDEN> In-Reply-To: <jwv7buss9jh.fsf-monnier+emacs@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Fri, 12 Dec 2025 08:59:39 -0500 X-Gm-Features: AQt7F2rSnP0zcAXRXWtkbHr-RqmnCtGBekAKzeTm2foS2J5rt1KfwkbXS36-Wxo Message-ID: <CAN+1HbrmnmBJv9NbNnZH8FLkd-OOExgFXqHrtXvBbVugU0B9GA@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Stefan Monnier <monnier@HIDDEN> Content-Type: multipart/mixed; boundary="000000000000f945560645c1ac1d" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --000000000000f945560645c1ac1d Content-Type: multipart/alternative; boundary="000000000000f945540645c1ac1b" --000000000000f945540645c1ac1b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Dec 11, 2025 at 10:06=E2=80=AFPM Stefan Monnier <monnier@HIDDEN= eal.ca> wrote: > >> I think I'd merge them into a single hook. > >> E.g. > >> > >> (defvar progress-reporter-update-functions nil > >> "Special hook run on progress-reporter updates. > >> These functions are called with two arguments (REPORTER STATE) > >> and their return value is ignored. STATE can be: > >> - `done', when the job is, well, done. > >> - An integer in the range 0-3 (for pulsing reporters). > >> - A float between 0 and 1 (for numeric reporters).") > > > > Could do. I'd prefer avoiding type-of conditionals and perhaps it coul= d > be > > reporter state value. I'll take a stab at that. > > I think an `integerp` conditional is clean. It's Lisp's way to mimic > algebraic data types. When the data type is more complex, we use > a heavier encoding (typically a `cons` cell with a symbol in the `car` > that stands for the tag), but for simple cases it's the most idiomatic > way to design an API, taking advantage of Lisp's dynamic types. > > >> I think it would be even better if the echo-area feedback is moved to > >> the initial value of `progress-reporter-update-functions`, in case > >> someone wants to remove it or replace it with something else. > >> This will also make sure the API of `progress-reporter-update-function= s` > >> is sufficient to reproduce this default behavior. > > > > I suggested that earlier but wasn't sure it was worth the trouble, and > not > > so sure people should be encouraged to remove echo area feedback. > > I don't see a reason to discourage people from removing it, but don't > intend to encourage people to do so either, no. > I see two reasons to do it: > > 1- As a sanity check that the API doesn't lack some important element. > 2- As a "free" source of flexibility. Based on all the fancy mode-line > packages I've seen over the years, I'd be surprised if noone picks > this up and creates a fancy progress reporter that displays its state > in a pseudo-graphical way in the echo-area or the mode-line. > Done. It was a worthy exercise. I added more convenience arguments to the functions. > >> +(defcustom system-taskbar-use-progress-reporter t > >> > + "Supplement progress-reporters with GUI system taskbar progress > bars." > >> > + :type 'boolean > >> > + :set (lambda (variable value) > >> > + (set-default variable value) > >> > + (if value > >> > + (system-taskbar-progress-reporter-install) > >> > + (system-taskbar-progress-reporter-remove))) > >> > + :version "31.1") > >> > >> This seems redundant with `system-taskbar-mode`. IIUC the difference = is > >> that `system-taskbar-mode` covers a bit more functionality, but as it > >> stands the code behaves strangely if you set > >> `system-taskbar-use-progress-reporter` to nil but enable > >> `system-taskbar-mode`. > >> I suggest to either merge them into a single option or to really > >> decouple the two (one for progress-reporter and one for the > >> badge/alerting). > > Behaves strangely how so? It works here > > with system-taskbar-use-progress-reporter on or off. > > AFAICT it will display the progress reporter in the taskbar even tho > `system-taskbar-use-progress-reporter` says not to. > I'm guessing you haven't run the code. I don't experience that condition. If you (setopt system-taskbar-use-progress-reporter nil) or set it nil in advance of enabling the mode, the hook will not have system-taskbar functions on it. >> +(defvar system-taskbar--back-end nil > >> > + "Generic taskbar method system dispatcher.") > >> > +(defun system-taskbar--set-back-end () > >> > + "Determine taskbar host system type." > >> > + ;; Order matters to accommodate the cases where an NS or MS-Windo= ws > >> > + ;; build have the dbus feature. > >> Maybe test `window-system` instead of `ns-version-string` and > >> `w32-initialized`? > > Happy to. As long as there's no race condition setting up the initial > w32 > > frame with the invocation of system-taskbar-mode. > > Ah, you mean if we start in daemon mode, maybe `window-system` is nil > until a first GUI frame is created? You might be right. > Maybe another option is to test `window-system` in the `&context` > thingy and skip `system-taskbar--back-end` altogether? > I reverted the conditions specifically for that, yep. `window-system` is an insufficient condition given dbus. We could change the &context to a function call that does all the conditional tests, but testing dbus availability each time would be "expensive" and I prefer to do that only once. Patch attached. -St=C3=A9phane --000000000000f945540645c1ac1b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Thu, Dec 11, 2025 at 10:06=E2=80=AFPM Stefan Monnier <<a href=3D"mail= to:monnier@HIDDEN">monnier@HIDDEN</a>> wrote:</span>= </div></div><div class=3D"gmail_quote gmail_quote_container"><blockquote cl= ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid= rgb(204,204,204);padding-left:1ex">>> I think I'd merge them int= o a single hook.<br> >> E.g.<br> >><br> >>=C2=A0 =C2=A0 =C2=A0(defvar progress-reporter-update-functions nil<= br> >>=C2=A0 =C2=A0 =C2=A0 =C2=A0"Special hook run on progress-repor= ter updates.<br> >>=C2=A0 =C2=A0 =C2=A0These functions are called with two arguments (= REPORTER STATE)<br> >>=C2=A0 =C2=A0 =C2=A0and their return value is ignored.=C2=A0 STATE = can be:<br> >>=C2=A0 =C2=A0 =C2=A0- `done', when the job is, well, done.<br> >>=C2=A0 =C2=A0 =C2=A0- An integer in the range 0-3 (for pulsing repo= rters).<br> >>=C2=A0 =C2=A0 =C2=A0- A float between 0 and 1 (for numeric reporter= s).")<br> ><br> > Could do.=C2=A0 I'd prefer avoiding type-of conditionals and perha= ps it could be<br> > reporter state value.=C2=A0 I'll take a stab at that.<br> <br> I think an `integerp` conditional is clean.=C2=A0 It's Lisp's way t= o mimic<br> algebraic data types.=C2=A0 When the data type is more complex, we use<br> a heavier encoding (typically a `cons` cell with a symbol in the `car`<br> that stands for the tag), but for simple cases it's the most idiomatic<= br> way to design an API, taking advantage of Lisp's dynamic types.<br> <br> >> I think it would be even better if the echo-area feedback is moved= to<br> >> the initial value of `progress-reporter-update-functions`, in case= <br> >> someone wants to remove it or replace it with something else.<br> >> This will also make sure the API of `progress-reporter-update-func= tions`<br> >> is sufficient to reproduce this default behavior.<br> ><br> > I suggested that earlier but wasn't sure it was worth the trouble,= and not<br> > so sure people should be encouraged to remove echo area feedback.<br> <br> I don't see a reason to discourage people from removing it, but don'= ;t<br> intend to encourage people to do so either, no.<br> I see two reasons to do it:<br> <br> 1- As a sanity check that the API doesn't lack some important element.<= br> 2- As a "free" source of flexibility.=C2=A0 Based on all the fanc= y mode-line<br> =C2=A0 =C2=A0packages I've seen over the years, I'd be surprised if= noone picks<br> =C2=A0 =C2=A0this up and creates a fancy progress reporter that displays it= s state<br> =C2=A0 =C2=A0in a pseudo-graphical way in the echo-area or the mode-line.<b= r></blockquote><div><br></div><div><div class=3D"gmail_default" style=3D"fo= nt-family:monospace">Done.=C2=A0 It was a worthy exercise.=C2=A0 I added mo= re convenience arguments to the functions.</div></div><div>=C2=A0</div><blo= ckquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left= :1px solid rgb(204,204,204);padding-left:1ex"> >> +(defcustom system-taskbar-use-progress-reporter t<br> >> > +=C2=A0 "Supplement progress-reporters with GUI system t= askbar progress bars."<br> >> > +=C2=A0 :type 'boolean<br> >> > +=C2=A0 :set (lambda (variable value)<br> >> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(set-default variable valu= e)<br> >> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(if value<br> >> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(system-task= bar-progress-reporter-install)<br> >> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(system-taskbar-pro= gress-reporter-remove)))<br> >> > +=C2=A0 :version "31.1")<br> >><br> >> This seems redundant with `system-taskbar-mode`.=C2=A0 IIUC the di= fference is<br> >> that `system-taskbar-mode` covers a bit more functionality, but as= it<br> >> stands the code behaves strangely if you set<br> >> `system-taskbar-use-progress-reporter` to nil but enable<br> >> `system-taskbar-mode`.<br> >> I suggest to either merge them into a single option or to really<b= r> >> decouple the two (one for progress-reporter and one for the<br> >> badge/alerting).<br> > Behaves strangely how so?=C2=A0 It works here<br> > with system-taskbar-use-progress-reporter on or off.<br> <br> AFAICT it will display the progress reporter in the taskbar even tho<br> `system-taskbar-use-progress-reporter` says not to.<br></blockquote><div><b= r></div><div><div class=3D"gmail_default" style=3D""><font face=3D"monospac= e">I'm guessing you haven't run the code.=C2=A0 I don't experie= nce that condition.=C2=A0 If you (setopt=C2=A0system-taskbar-use-progress-r= eporter nil) or set it nil in advance of enabling the mode, the hook will n= ot have system-taskbar functions on it.</font></div></div><div><br></div><b= lockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-le= ft:1px solid rgb(204,204,204);padding-left:1ex"> >> +(defvar system-taskbar--back-end nil<br> >> > +=C2=A0 "Generic taskbar method system dispatcher."= )<br> >> > +(defun system-taskbar--set-back-end ()<br> >> > +=C2=A0 "Determine taskbar host system type."<br> >> > +=C2=A0 ;; Order matters to accommodate the cases where an NS= or MS-Windows<br> >> > +=C2=A0 ;; build have the dbus feature.<br> >> Maybe test `window-system` instead of `ns-version-string` and<br> >> `w32-initialized`?<br> > Happy to.=C2=A0 As long as there's no race condition setting up th= e initial w32<br> > frame with the invocation of system-taskbar-mode.<br> <br> Ah, you mean if we start in daemon mode, maybe `window-system` is nil<br> until a first GUI frame is created?=C2=A0 You might be right.<br> Maybe another option is to test `window-system` in the `&context`<br> thingy and skip `system-taskbar--back-end` altogether?<br></blockquote><div= ><br></div><div class=3D"gmail_default" style=3D"font-family:monospace">I r= everted the conditions specifically for that, yep.=C2=A0 `window-system` is= an insufficient condition given dbus.=C2=A0 We could change the &conte= xt to a function call=C2=A0that does all the conditional tests, but testing= dbus availability each time would be "expensive" and I prefer to= do that only once.</div><div class=3D"gmail_default" style=3D"font-family:= monospace"><br></div><div class=3D"gmail_default" style=3D"font-family:mono= space">Patch attached.</div><div class=3D"gmail_default" style=3D"font-fami= ly:monospace"><br></div><div class=3D"gmail_default" style=3D"font-family:m= onospace">-St=C3=A9phane=C2=A0</div></div></div> --000000000000f945540645c1ac1b-- --000000000000f945560645c1ac1d Content-Type: application/octet-stream; name="0001-System-GUI-taskbar-and-progress-reporter-hooks.patch" Content-Disposition: attachment; filename="0001-System-GUI-taskbar-and-progress-reporter-hooks.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mj2xogy30> X-Attachment-Id: f_mj2xogy30 RnJvbSA5NTAwN2NmMjhjNTViMjI3MzNlODgwZmE5NDMwOTNlZmM1MjBkMjU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFRodSwgMjAgTm92IDIwMjUgMTI6NTQ6NDAgLTA1MDAK U3ViamVjdDogW1BBVENIXSBTeXN0ZW0gR1VJIHRhc2tiYXIgYW5kIHByb2dyZXNzIHJlcG9ydGVy IGhvb2tzCgpJbXBsZW1lbnQgc3lzdGVtIEdVSSB0YXNrYmFyL2RvY2svbGF1bmNoZXIgaWNvbiBi YWRnZSwgaWNvbgpwcm9ncmVzcyBpbmRpY2F0b3IsIGljb24gYXR0ZW50aW9uIGFsZXJ0IGZlYXR1 cmVzIGZvciBELUJ1cwpwbGF0Zm9ybXMgKHRlc3RlZCBvbiBLREUgYW5kIEdOT01FKSwgTlMgKG1h Y09TL0dOVXN0ZXApLApNUy1XaW5kb3dzLgoKQWRkICdwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUt ZnVuY3Rpb25zJyBhYm5vcm1hbCBob29rIHRvIGZhY2lsaXRhdGUKdGFza2JhciBwcm9ncmVzcyBk aXNwbGF5LCBhbmQgb3RoZXIgY3VzdG9tIHByb2dyZXNzIHJlcG9ydGVycy4KVGhlIGRlZmF1bHQg ZnVuY3Rpb24gbGlzdCBpcyAncHJvZ3Jlc3MtcmVwb3J0ZXItZWNoby1hcmVhJyB3aGljaAppcyBi YWNrd2FyZCBjb21wYXRpYmxlLgoKKiBsaXNwL3N1YnIuZWwgKHByb2dyZXNzLXJlcG9ydGVyLXVw ZGF0ZS1mdW5jdGlvbnMpOgpOZXcgZGVmdmFyLgoocHJvZ3Jlc3MtcmVwb3J0ZXItZWNoby1hcmVh KTogTmV3IGRlZnVuLgoocHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRlKTogUnVuCnByb2dyZXNz LXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMgZm9yIGJvdGggbnVtZXJpY2FsIGFuZApwdWxzaW5n IHJlcG9ydGVycy4KKHByb2dyZXNzLXJlcG9ydGVyLWRvbmUpOiBSdW4gcHJvZ3Jlc3MtcmVwb3J0 ZXItZG9uZS1mdW5jdGlvbnMuCiogbGlzcC9zeXN0ZW0tdGFza2Jhci5lbDogTmV3IGZpbGUuCiog c3JjL25zZm5zLm0gKEZuc19iYWRnZSwgRm5zX3Byb2dyZXNzX2luZGljYXRvcikKKEZuc19yZXF1 ZXN0X3VzZXJfYXR0ZW50aW9uKTogTmV3IGZ1bmN0aW9uLgooc3ltc19vZl9uc2Zucyk6IEFkZCBk ZWZzdWJyIFNuc19iYWRnZSwKU25zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24sIFNuc19wcm9ncmVz c19pbmRpY2F0b3IuIEFkZCBERUZTWU0KUWluZm9ybWF0aW9uYWwsIFFjcml0aWNhbC4KKiBzcmMv dzMyZm5zLmMgKHJnYl9saXN0X3RvX2NvbG9ycmVmLCBGdzMyX2JhZGdlKQooRnczMl9yZXF1ZXN0 X3VzZXJfYXR0ZW50aW9uLCBGdzMyX3Byb2dyZXNzX2luZGljYXRvcik6IE5ldwpmdW5jdGlvbi4K KHN5bXNfb2ZfdzMyZm5zKTogQWRkIGRlZnN1YnIgU3czMl9iYWRnZSwKU3czMl9wcm9ncmVzc19p bmRpY2F0b3IsIFN3MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbi4gQWRkIERFRlNZTQpRaW5mb3Jt YXRpb25hbCwgUWNyaXRpY2FsLgoqIHN5c3RlbS10YXNiYXIudGV4aTogTmV3IGZpbGUgKFdJTEwg QkUgTUVSR0VEIElOVE8gRU1BQ1MgQU5ECkVMSVNQIE1BTlVBTCkuCiogZXRjL05FV1M6IEFubm91 bmNlIHN5c3RlbS10YXNrYmFyLW1vZGUuICBBbm5vdW5jZSBwcm9ncmVzcwpyZXBvcnRlciBjYWxs YmFjayBlbmhhbmNlbWVudHMuCi0tLQogZXRjL05FV1MgICAgICAgICAgICAgICB8ICAyMiArKwog bGlzcC9zdWJyLmVsICAgICAgICAgICB8ICA4OCArKysrKystLQogbGlzcC9zeXN0ZW0tdGFza2Jh ci5lbCB8IDQ4MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3Jj L25zZm5zLm0gICAgICAgICAgICB8IDEyOCArKysrKysrKysrKwogc3JjL3czMmZucy5jICAgICAg ICAgICB8IDMyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzeXN0ZW0tdGFza2Jhci50 ZXhpICAgIHwgMjU0ICsrKysrKysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMTI4 MSBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaXNw L3N5c3RlbS10YXNrYmFyLmVsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzdGVtLXRhc2tiYXIudGV4 aQoKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggZmRiMWVlMDI4MTkuLjY3 NjE0NGRmZjEyIDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAtMzE1MSw2 ICszMTUxLDIxIEBAIFRoaXMgbGlicmFyeSBwcm92aWRlcyBmdW5jdGlvbnMgdG8gdGhyb3R0bGUg b3IgZGVib3VuY2UgRW1hY3MgTGlzcAogZnVuY3Rpb25zLiAgVGhpcyBpcyB1c2VmdWwgZm9yIGNv cnJhbGxpbmcgb3ZlcmVhZ2VyIGNvZGUgdGhhdCBpcyBzbG93CiBhbmQgYmxvY2tzIEVtYWNzLCBv ciBkb2VzIG5vdCBwcm92aWRlIHdheXMgdG8gbGltaXQgaG93IG9mdGVuIGl0IHJ1bnMuCiAKKysr KworKioqIE5ldyBtb2RlICdzeXN0ZW0tdGFza2Jhci1tb2RlJy4KK1RoaXMgaXMgYSBnbG9iYWwg bWlub3IgbW9kZSBhbmQgY29tcGFuaW9uIGZ1bmN0aW9ucyB0aGF0IGludGVncmF0ZSBFbWFjcwor d2l0aCBzeXN0ZW0gR1VJIHRhc2tiYXJzIChhbHNvIGNhbGxlZCBkb2NrcyBvciBsYXVuY2hlcnMg b3Igc29tZXRoaW5nCitzaW1pbGFyKSB0byBkaXNwbGF5IGEgdGFza2JhciBpY29uICJiYWRnZSIg b3ZlcmxheSwgYSBwcm9ncmVzcyBiYXIKK3JlcG9ydCBvdmVybGF5LCBhbGVydCB0aGUgdXNlciB0 aGF0IGFuIEVtYWNzIHNlc3Npb24gbmVlZHMgYXR0ZW50aW9uLAorb2Z0ZW4gYnkgZmxhc2hpbmcg b3IgYm91bmNpbmcgdGhlIEVtYWNzIGFwcGxpY2F0aW9uIGljb24uICBTdXBwb3J0ZWQKK2NhcGFi bGUgc3lzdGVtcyBhcmUgR05VL0xpbnV4IHZpYSBELUJ1cywgbWFjT1MvR05Vc3RlcCAxMC41Kywg TVMtV2luZG93cworNysuCisKK09uIEdOVS9MaW51eCBzeXN0ZW1zLCBzaGVsbCBleHRlbnNpb25z IG9yIHNpbWlsYXIgaGVscGVycyBzdWNoIGFzCisiZGFzaC10by1kb2NrIiBtYXkgYmUgcmVxdWly ZWQuICBTZWUKKzxodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8zMDcvZGFz aC10by1kb2NrLz4gYW5kCis8aHR0cHM6Ly93aWtpLnVidW50dS5jb20vVW5pdHkvTGF1bmNoZXJB UEk+LgorCiAMCiAqIEluY29tcGF0aWJsZSBMaXNwIENoYW5nZXMgaW4gRW1hY3MgMzEuMQogCkBA IC0zNTc5LDYgKzM1OTQsMTMgQEAgRW1hY3Mgd2hlbiBidWlsdCB3aXRoIHRoZSBwdXJlIEdUSyB0 b29sa2l0IG5vdyByZXNwZWN0cyBkZXNrdG9wCiBkYXJrIGFuZCBsaWdodCBtb2RlcyBmb3IgZHJh d2luZyBhIEdUSyB0b29sYmFyIGFuZCB3aWRnZXRzLAogYXV0b21hdGljYWxseSB0b2dnbGluZyBi ZXR3ZWVuIHRoZW0uCiAKKysrKworKiogUHJvZ3Jlc3MgcmVwb3J0ZXIgY2FsbGJhY2tzLgorJ21h a2UtcHJvZ3Jlc3MtcmVwb3J0ZXInIG5vdyBhY2NlcHRzIG9wdGlvbmFsIGFyZ3VtZW50cyBVUERB VEUtQ0FMTEJBQ0ssCitjYWxsZWQgb24gcHJvZ3Jlc3Mgc3RlcHMsIGFuZCBET05FLUNBTExCQUNL LCBjYWxsZWQgd2hlbiB0aGUgcHJvZ3Jlc3MKK3JlcG9ydGVyIGlzIGRvbmUuICBTZWUgdGhlICdt YWtlLXByb2dyZXNzLXJlcG9ydGVyJyBkb2NzdHJpbmcgZm9yIGEgZnVsbAorc3BlY2lmaWNhdGlv biBvZiB0aGVzZSBuZXcgb3B0aW9uYWwgYXJndW1lbnRzLgorCiAMCiAqIENoYW5nZXMgaW4gRW1h Y3MgMzEuMSBvbiBOb24tRnJlZSBPcGVyYXRpbmcgU3lzdGVtcwogCmRpZmYgLS1naXQgYS9saXNw L3N1YnIuZWwgYi9saXNwL3N1YnIuZWwKaW5kZXggZmNmOTMxYjY0ZTkuLjU4ZGIzODExN2RjIDEw MDY0NAotLS0gYS9saXNwL3N1YnIuZWwKKysrIGIvbGlzcC9zdWJyLmVsCkBAIC02OTc0LDIwICs2 OTc0LDMzIEBAIHNldC10cmFuc2llbnQtbWFwCiA7OyBkaWdpdHMgb2YgcHJlY2lzaW9uLCBpdCBk b2Vzbid0IHJlYWxseSBtYXR0ZXIgaGVyZS4gIE9uIHRoZSBvdGhlcgogOzsgaGFuZCwgaXQgZ3Jl YXRseSBzaW1wbGlmaWVzIHRoZSBjb2RlLgogCisoZGVmdmFyIHByb2dyZXNzLXJlcG9ydGVyLXVw ZGF0ZS1mdW5jdGlvbnMgKGxpc3QgIydwcm9ncmVzcy1yZXBvcnRlci1lY2hvLWFyZWEpCisgICJT cGVjaWFsIGhvb2sgcnVuIG9uIHByb2dyZXNzLXJlcG9ydGVyIHVwZGF0ZXMuCitFYWNoIGZ1bmN0 aW9uIGlzIGNhbGxlZCB3aXRoIHNpeCBhcmd1bWVudHM6CitSRVBPUlRFUiBpcyB0aGUgcmVzdWx0 IG9mIGEgY2FsbCB0byBgbWFrZS1wcm9ncmVzcy1yZXBvcnRlcicuCitTVEFURSBpcyB0aGUgc3lt Ym9sIGB1cGRhdGUnIG9yIGBkb25lJy4KK1BFUkNFTlRBR0UgaXMgYSBudW1iZXIgaW4gdGhlIHJh bmdlIDAtMTAwLCBvciBuaWwgZm9yIGEgcHVsc2luZyByZXBvcnRlci4KK0lOREVYIGlzIGEgbnVt YmVyIGluIHRoZSByYW5nZSAwLTMsIG9yIG5pbCBmb3IgYSBudW1lcmljIHJlcG9ydGVyLgorVEVY VCBpcyB0aGUgcHJvZ3Jlc3MgcmVwb3J0ZXIgbWVzc2FnZSB0ZXh0LgorU1VGRklYIGlzIGFuIG9w dGlvbmFsIHN0cmluZyB0byBwcmludCBhdCB0aGUgZW5kIG9mIHRoZSB1cGRhdGUgbWVzc2FnZS4i KQorCiAoZGVmc3Vic3QgcHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlIChyZXBvcnRlciAmb3B0aW9u YWwgdmFsdWUgc3VmZml4KQotICAiUmVwb3J0IHByb2dyZXNzIG9mIGFuIG9wZXJhdGlvbiBpbiB0 aGUgZWNobyBhcmVhLgorICAiUmVwb3J0IHByb2dyZXNzIG9mIGFuIG9wZXJhdGlvbiwgYnkgZGVm YXVsdCwgaW4gdGhlIGVjaG8gYXJlYS4KIFJFUE9SVEVSIHNob3VsZCBiZSB0aGUgcmVzdWx0IG9m IGEgY2FsbCB0byBgbWFrZS1wcm9ncmVzcy1yZXBvcnRlcicuCiAKIElmIFJFUE9SVEVSIGlzIGEg bnVtZXJpY2FsIHByb2dyZXNzIHJlcG9ydGVyLS0taS5lLiBpZiBpdCB3YXMKLSBtYWRlIHVzaW5n IG5vbi1uaWwgTUlOLVZBTFVFIGFuZCBNQVgtVkFMVUUgYXJndW1lbnRzIHRvCi0gYG1ha2UtcHJv Z3Jlc3MtcmVwb3J0ZXInLS0tdGhlbiBWQUxVRSBzaG91bGQgYmUgYSBudW1iZXIgYmV0d2Vlbgot IE1JTi1WQUxVRSBhbmQgTUFYLVZBTFVFLgorbWFkZSB1c2luZyBub24tbmlsIE1JTi1WQUxVRSBh bmQgTUFYLVZBTFVFIGFyZ3VtZW50cyB0bworYG1ha2UtcHJvZ3Jlc3MtcmVwb3J0ZXInLS0tdGhl biBWQUxVRSBzaG91bGQgYmUgYSBudW1iZXIgYmV0d2VlbgorTUlOLVZBTFVFIGFuZCBNQVgtVkFM VUUuCiAKIE9wdGlvbmFsIGFyZ3VtZW50IFNVRkZJWCBpcyBhIHN0cmluZyB0byBiZSBkaXNwbGF5 ZWQgYWZ0ZXIKIFJFUE9SVEVSJ3MgbWFpbiBtZXNzYWdlIGFuZCBwcm9ncmVzcyB0ZXh0LiAgSWYg UkVQT1JURVIgaXMgYQogbm9uLW51bWVyaWNhbCByZXBvcnRlciwgdGhlbiBWQUxVRSBzaG91bGQg YmUgbmlsLCBvciBhIHN0cmluZyB0bwogdXNlIGluc3RlYWQgb2YgU1VGRklYLgogCitTZWUgYHBy b2dyZXNzLXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMnIGZvciB0aGUgbGlzdCBvZiBmdW5jdGlv bnMKK2NhbGxlZCBvbiBlYWNoIHVwZGF0ZS4KKwogVGhpcyBmdW5jdGlvbiBpcyByZWxhdGl2ZWx5 IGluZXhwZW5zaXZlLiAgSWYgdGhlIGNoYW5nZSBzaW5jZQogbGFzdCB1cGRhdGUgaXMgdG9vIHNt YWxsIG9yIGluc3VmZmljaWVudCB0aW1lIGhhcyBwYXNzZWQsIGl0IGRvZXMKIG5vdGhpbmcuIgpA QCAtNzA0OCw4ICs3MDYxLDggQEAgJ3Byb2dyZXNzLXJlcG9ydGVyLW1ha2UKIChkZWZ1biBwcm9n cmVzcy1yZXBvcnRlci1mb3JjZS11cGRhdGUgKHJlcG9ydGVyICZvcHRpb25hbCB2YWx1ZSBuZXct bWVzc2FnZSBzdWZmaXgpCiAgICJSZXBvcnQgcHJvZ3Jlc3Mgb2YgYW4gb3BlcmF0aW9uIGluIHRo ZSBlY2hvIGFyZWEgdW5jb25kaXRpb25hbGx5LgogCi1SRVBPUlRFUiwgVkFMVUUsIGFuZCBTVUZG SVggYXJlIHRoZSBzYW1lIGFzIGluIGBwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUnLgotTkVXLU1F U1NBR0UsIGlmIG5vbi1uaWwsIHNldHMgYSBuZXcgbWVzc2FnZSBmb3IgdGhlIHJlcG9ydGVyLiIK KyAgUkVQT1JURVIsIFZBTFVFLCBhbmQgU1VGRklYIGFyZSB0aGUgc2FtZSBhcyBpbiBgcHJvZ3Jl c3MtcmVwb3J0ZXItdXBkYXRlJy4KKyAgTkVXLU1FU1NBR0UsIGlmIG5vbi1uaWwsIHNldHMgYSBu ZXcgbWVzc2FnZSBmb3IgdGhlIHJlcG9ydGVyLiIKICAgKGxldCAoKHBhcmFtZXRlcnMgKGNkciBy ZXBvcnRlcikpKQogICAgICh3aGVuIG5ldy1tZXNzYWdlCiAgICAgICAoYXNldCBwYXJhbWV0ZXJz IDMgbmV3LW1lc3NhZ2UpKQpAQCAtNzA2MCwxMiArNzA3MywzMCBAQCBwcm9ncmVzcy1yZXBvcnRl ci1mb3JjZS11cGRhdGUKIChkZWZ2YXIgcHJvZ3Jlc3MtcmVwb3J0ZXItLXB1bHNlLWNoYXJhY3Rl cnMgWyItIiAiXFwiICJ8IiAiLyJdCiAgICJDaGFyYWN0ZXJzIHRvIHVzZSBmb3IgcHVsc2luZyBw cm9ncmVzcyByZXBvcnRlcnMuIikKIAorKGRlZnVuIHByb2dyZXNzLXJlcG9ydGVyLWVjaG8tYXJl YSAoIF9yZXBvcnRlciBzdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBlcmNlbnRhZ2UgaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 ZXh0IHN1ZmZpeCkKKyAgIlByb2dyZXNzIHJlcG9ydGVyIGVjaG8gYXJlYSB1cGRhdGUgZnVuY3Rp b24uIgorICAocGNhc2Ugc3RhdGUKKyAgICAoJ3VwZGF0ZQorICAgICAoY29uZCAocGVyY2VudGFn ZQorICAgICAgICAgICAgKGlmIChwbHVzcCBwZXJjZW50YWdlKQorICAgICAgICAgICAgICAgICht ZXNzYWdlICIlcyVkJSUgJXMiIHRleHQgcGVyY2VudGFnZSBzdWZmaXgpCisgICAgICAgICAgICAg IChtZXNzYWdlICIlcyAlcyIgdGV4dCBzdWZmaXgpKSkKKyAgICAgICAgICAgKGluZGV4CisgICAg ICAgICAgICAobGV0ICgobWVzc2FnZS1sb2ctbWF4IG5pbCkKKyAgICAgICAgICAgICAgICAgIChw dWxzZS1jaGFyIChhcmVmIHByb2dyZXNzLXJlcG9ydGVyLS1wdWxzZS1jaGFyYWN0ZXJzCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCkpKQorICAgICAgICAgICAgICAo bWVzc2FnZSAiJXMgJXMgJXMiIHRleHQgcHVsc2UtY2hhciBzdWZmaXgpKSkpKQorICAgICgnZG9u ZQorICAgICAobWVzc2FnZSAiJXNkb25lIiB0ZXh0KSkpKQorCiAoZGVmdW4gcHJvZ3Jlc3MtcmVw b3J0ZXItZG8tdXBkYXRlIChyZXBvcnRlciB2YWx1ZSAmb3B0aW9uYWwgc3VmZml4KQotICAobGV0 KiAoKHBhcmFtZXRlcnMgICAoY2RyIHJlcG9ydGVyKSkKLQkgKHVwZGF0ZS10aW1lICAoYXJlZiBw YXJhbWV0ZXJzIDApKQotCSAobWluLXZhbHVlICAgIChhcmVmIHBhcmFtZXRlcnMgMSkpCi0JICht YXgtdmFsdWUgICAgKGFyZWYgcGFyYW1ldGVycyAyKSkKLQkgKHRleHQgICAgICAgICAoYXJlZiBw YXJhbWV0ZXJzIDMpKQorICAobGV0KiAoKHBhcmFtZXRlcnMgICAgICAoY2RyIHJlcG9ydGVyKSkK KwkgKHVwZGF0ZS10aW1lICAgICAoYXJlZiBwYXJhbWV0ZXJzIDApKQorCSAobWluLXZhbHVlICAg ICAgIChhcmVmIHBhcmFtZXRlcnMgMSkpCisJIChtYXgtdmFsdWUgICAgICAgKGFyZWYgcGFyYW1l dGVycyAyKSkKKwkgKHRleHQgICAgICAgICAgICAoYXJlZiBwYXJhbWV0ZXJzIDMpKQogCSAoZW5v dWdoLXRpbWUtcGFzc2VkCiAJICA7OyBTZWUgaWYgZW5vdWdoIHRpbWUgaGFzIHBhc3NlZCBzaW5j ZSB0aGUgbGFzdCB1cGRhdGUuCiAJICAob3IgKG5vdCB1cGRhdGUtdGltZSkKQEAgLTcwOTgsOSAr NzEyOSwxMyBAQCBwcm9ncmVzcy1yZXBvcnRlci1kby11cGRhdGUKICAgICAgICAgICAgICAgIChp ZiBzdWZmaXgKICAgICAgICAgICAgICAgICAgICAoYXNldCBwYXJhbWV0ZXJzIDYgc3VmZml4KQog ICAgICAgICAgICAgICAgICAoc2V0cSBzdWZmaXggKG9yIChhcmVmIHBhcmFtZXRlcnMgNikgIiIp KSkKLSAgICAgICAgICAgICAgIChpZiAocGx1c3AgcGVyY2VudGFnZSkKLSAgICAgICAgICAgICAg ICAgICAobWVzc2FnZSAiJXMlZCUlICVzIiB0ZXh0IHBlcmNlbnRhZ2Ugc3VmZml4KQotICAgICAg ICAgICAgICAgICAobWVzc2FnZSAiJXMgJXMiIHRleHQgc3VmZml4KSkpKSkKKyAgICAgICAgICAg ICAgIChydW4taG9vay13aXRoLWFyZ3MgJ3Byb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlv bnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZXIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VwZGF0ZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwZXJjZW50YWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5pbCA7IGluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4KSkpKQogCSAgOzsgUHVs c2luZyBpbmRpY2F0b3IKIAkgIChlbm91Z2gtdGltZS1wYXNzZWQKICAgICAgICAgICAgKHdoZW4g KGFuZCB2YWx1ZSAobm90IHN1ZmZpeCkpCkBAIC03MTA4LDE2ICs3MTQzLDI3IEBAIHByb2dyZXNz LXJlcG9ydGVyLWRvLXVwZGF0ZQogICAgICAgICAgICAoaWYgc3VmZml4CiAgICAgICAgICAgICAg ICAoYXNldCBwYXJhbWV0ZXJzIDYgc3VmZml4KQogICAgICAgICAgICAgIChzZXRxIHN1ZmZpeCAo b3IgKGFyZWYgcGFyYW1ldGVycyA2KSAiIikpKQotICAgICAgICAgICAobGV0KiAoKGluZGV4ICht b2QgKDErIChjYXIgcmVwb3J0ZXIpKSA0KSkKLSAgICAgICAgICAgICAgICAgIChtZXNzYWdlLWxv Zy1tYXggbmlsKQotICAgICAgICAgICAgICAgICAgKHB1bHNlLWNoYXIgKGFyZWYgcHJvZ3Jlc3Mt cmVwb3J0ZXItLXB1bHNlLWNoYXJhY3RlcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluZGV4KSkpCisgICAgICAgICAgIChsZXQgKChpbmRleCAobW9kICgxKyAoY2FyIHJl cG9ydGVyKSkgNCkpKQogCSAgICAgKHNldGNhciByZXBvcnRlciBpbmRleCkKLSAgICAgICAgICAg ICAobWVzc2FnZSAiJXMgJXMgJXMiIHRleHQgcHVsc2UtY2hhciBzdWZmaXgpKSkpKSkKKyAgICAg ICAgICAgICAocnVuLWhvb2std2l0aC1hcmdzICdwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUtZnVu Y3Rpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRlcgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VwZGF0ZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmlsIDsgcGVyY2VudGFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCkpKSkpKQogCiAoZGVmdW4gcHJvZ3Jl c3MtcmVwb3J0ZXItZG9uZSAocmVwb3J0ZXIpCi0gICJQcmludCByZXBvcnRlcidzIG1lc3NhZ2Ug Zm9sbG93ZWQgYnkgd29yZCBcImRvbmVcIiBpbiBlY2hvIGFyZWEuIgotICAobWVzc2FnZSAiJXNk b25lIiAoYXJlZiAoY2RyIHJlcG9ydGVyKSAzKSkpCisgICJQcmludCByZXBvcnRlcidzIG1lc3Nh Z2UgZm9sbG93ZWQgYnkgd29yZCBcImRvbmVcIiBpbiBlY2hvIGFyZWEuCitDYWxsIHRoZSBmdW5j dGlvbnMgb24gYHByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnNgLiIKKyAgKHJ1bi1o b29rLXdpdGgtYXJncyAncHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlLWZ1bmN0aW9ucworICAgICAg ICAgICAgICAgICAgICAgIHJlcG9ydGVyCisgICAgICAgICAgICAgICAgICAgICAgJ2RvbmUKKyAg ICAgICAgICAgICAgICAgICAgICBuaWwgOyBwZXJjZW50YWdlCisgICAgICAgICAgICAgICAgICAg ICAgbmlsIDsgaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAoYXJlZiAoY2RyIHJlcG9ydGVy KSAzKSA7IHRleHQKKyAgICAgICAgICAgICAgICAgICAgICA7OyBzdWZmaXgKKyAgICAgICAgICAg ICAgICAgICAgICBuaWwpKQogCiAoZGVmbWFjcm8gZG90aW1lcy13aXRoLXByb2dyZXNzLXJlcG9y dGVyIChzcGVjIHJlcG9ydGVyLW9yLW1lc3NhZ2UgJnJlc3QgYm9keSkKICAgIkxvb3AgYSBjZXJ0 YWluIG51bWJlciBvZiB0aW1lcyBhbmQgcmVwb3J0IHByb2dyZXNzIGluIHRoZSBlY2hvIGFyZWEu CmRpZmYgLS1naXQgYS9saXNwL3N5c3RlbS10YXNrYmFyLmVsIGIvbGlzcC9zeXN0ZW0tdGFza2Jh ci5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzY3Yjk3ZTlmMTUK LS0tIC9kZXYvbnVsbAorKysgYi9saXNwL3N5c3RlbS10YXNrYmFyLmVsCkBAIC0wLDAgKzEsNDgz IEBACis7Ozsgc3lzdGVtLXRhc2tiYXIuZWwgLS0tIFN5c3RlbSBHVUkgdGFza2Jhci9kb2NrL2xh dW5jaGVyIHN0YXR1cyBkaXNwbGF5IC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQgLSotCisKKzs7IENv cHlyaWdodCAoQykgMjAyNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworOzsgQXV0 aG9yOiBTdGVwaGFuZSBNYXJrcworOzsgTWFpbnRhaW5lcjogZW1hY3MtZGV2ZWxAZ251Lm9yZwor OzsgS2V5d29yZHM6IGNvbnZlbmllbmNlCis7OyBQYWNrYWdlLVJlcXVpcmVzOiAoKGVtYWNzICIz MS4xIikpCisKKzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KKworOzsgR05VIEVt YWNzIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKzs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorOzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKworOzsgR05VIEVtYWNzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorOzsgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworOzsgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKzs7IGFs b25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKworOzs7IENvbW1lbnRhcnk6CisKKzs7IFVzZSB0aGlzIHBhY2thZ2UgdG8gZGlz cGxheSBhIHRhc2tiYXIgaWNvbiAiYmFkZ2UiIG92ZXJsYXksIGEKKzs7IHByb2dyZXNzIGJhciBy ZXBvcnQgb3ZlcmxheSwgb3IgYWxlcnQgdGhlIHVzZXIgdGhhdCBhbiBFbWFjcyBzZXNzaW9uCis7 OyBuZWVkcyBhdHRlbnRpb24sIG9mdGVuIGJ5IGZsYXNoaW5nIG9yIGJvdW5jaW5nIHRoZSBFbWFj cyBhcHBsaWNhdGlvbgorOzsgaWNvbi4KKzs7Cis7OyBOb3RlOiBUaGUgdGVybSB0YXNrYmFyIGlz IGluY2x1c2l2ZSBvZiBkb2NrIG9yIGxhdW5jaGVyIG9yIHNvbWUgb3RoZXIKKzs7IHRlcm1pbm9s b2d5IGFzIG1heSBiZSB1c2VkIGZvciB5b3VyIHN5c3RlbS4KKzs7Cis7OyBPbiBHTlUvTGludXgs IHRoZSB2aXNpYmxlIGVmZmVjdHMgd2lsbCBhcHBlYXIgb24gdGhlIGRlc3RpbmF0aW9ucworOzsg ZGV0ZXJtaW5lZCBieSB5b3VyIHNoZWxsIGV4dGVuc2lvbiwgbW9zdCBvZnRlbiB0aGUgYXBwbGlj YXRpb24KKzs7IGxhdW5jaGVyIG9yIGRvY2sgcGFuZWwsIG9yIHRoZSB0b3AgcGFuZWwuICBFZmZl Y3RzIGFyZSBnbG9iYWwgZm9yIGFuCis7OyBFbWFjcyBpbnN0YW5jZS4KKzs7Cis7OyBPbiBtYWNP Uy9HTlVzdGVwLCB0aGUgZWZmZWN0cyB3aWxsIGFwcGVhciBvbiB0aGUgRG9jayBhbmQgaW4gdGhl IEFwcAorOzsgU3dpdGNoZXIuICBFZmZlY3RzIGFyZSBnbG9iYWwgZm9yIGFuIEVtYWNzIGluc3Rh bmNlLgorOzsKKzs7IE9uIE1TLVdpbmRvd3MsIHRoZSBlZmZlY3RzIGFwcGVhciBvbiB0aGUgdGFz a2Jhci4gIEVmZmVjdHMgYXJlCis7OyBhc3NvY2lhdGVkIHdpdGggdGhlIGZyYW1lIGZyb20gd2hp Y2ggdGhleSBhcmUgaW5pdGlhdGVkLgorCis7OzsgVXNhZ2U6CisKKzs7IFRoZSBnbG9iYWwgbWlu b3IgbW9kZSBgc3lzdGVtLXRhc2tiYXItbW9kZScgaW5pdGlhbGl6ZXMgdGhlIEdVSQorOzsgcGxh dGZvcm0gYmFjay1lbmQgYW5kIG11c3QgYmUgZW5hYmxlZCBiZWZvcmUgdXNpbmcgdGhlIGZ1bmN0 aW9ucworOzsgYmVsb3cuCis7OworOzsgYHN5c3RlbS10YXNrYmFyLWJhZGdlJyBvdmVybGF5cyBh IGNvdW50LCB3aGljaCBpcyBhbiBpbnRlZ2VyLCBvbiB0aGUKKzs7IEVtYWNzIHRhc2tiYXIgaWNv bi4gIFlvdSBjYW4gdXNlIHRoaXMsIGZvciBleGFtcGxlLCB0byBpbmRpY2F0ZSB0aGUKKzs7IG51 bWJlciBvZiB1bnJlYWQgZW1haWwgbWVzc2FnZXMuICBPbiBHTlUvTGludXgsIHRoZSBjb3VudCBt dXN0IGJlIGFuCis7OyBpbnRlZ2VyIG9yIG5pbC4gIE9uIG1hY09TL0dOVXN0ZXAsIHRoZSBjb3Vu dCBtYXkgYmUgYW4gaW50ZWdlciBvciBhCis7OyBzdHJpbmcsIHdoaWNoIHRoZSBvcGVyYXRpbmcg c3lzdGVtIHdpbGwgYWJicmV2aWF0ZSBpZiB0b28gbG9uZy4gIE9uCis7OyBNUy1XaW5kb3dzLCB0 aGUgdGFza2JhciBiYWRnZSB3aWxsIGJlIGFiYnJldmlhdGVkIHRvIHRocmVlCis7OyBjaGFyYWN0 ZXJzOyBpZiB0aGUgY291bnQgaXMgYW4gaW50ZWdlciBvdXRzaWRlIHRoZSByYW5nZSAtOTkgdG8g OTksCis7OyBpdCBpcyBzaG93biBhcyAiLTk5IiBvciAiOTkrIiwgaWYgY291bnQgaXMgYSBzdHJp bmcgbG9uZ2VyIHRoYW4gMworOzsgY2hhcmFjdGVycyBpdCBpcyB0cnVuY2F0ZWQuCis7OworOzsg YHN5c3RlbS10YXNrYmFyLWF0dGVudGlvbicgZmxhc2hlcyBvciBib3VuY2VzIHRoZSBFbWFjcyB0 YXNrYmFyIGljb24KKzs7IHRvIGluZGljYXRlIHRoYXQgeW91ciBFbWFjcyBzZXNzaW9uIHdhbnRz IGF0dGVudGlvbi4gIEl0cyBiZWhhdmlvcnMKKzs7IGFyZSBiYWNrLWVuZCBzcGVjaWZpYy4KKzs7 Cis7OyBgc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MnIG92ZXJsYXlzIGEgZ3JhcGhpY2FsIHByb2dy ZXNzIGJhciBvbiB0aGUKKzs7IEVtYWNzIHRhc2tiYXIgaWNvbiB0byBpbGx1c3RyYXRlIHByb2dy ZXNzIG9mIGEgcG90ZW50aWFsbHkKKzs7IGxvbmctcnVubmluZyBvcGVyYXRpb24uCis7OworOzsg V2hlbiBgc3lzdGVtLXRhc2tiYXItbW9kZWAgaXMgZW5hYmxlZCwgRW1hY3MgcHJvZ3Jlc3MgcmVw b3J0ZXJzIHdpbGwKKzs7IGJlIGVuaGFuY2VkIHRvIGRpc3BsYXkgdGFza2JhciBHVUkgcHJvZ3Jl c3MgYmFycy4gIEN1c3RvbWl6ZQorOzsgYHN5c3RlbS10YXNrYmFyLXVzZS1wcm9ncmVzcy1yZXBv cnRlcmAgaWYgeW91IHdhbnQgdG8gZGlzYWJsZSB0aGlzLgorOzsKKzs7IE9uIEdOVS9MaW51eCBz eXN0ZW1zLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgdmlhIEQtQnVzIHRvIGNvbnRyb2wgR1VJCis7 OyBzaGVsbHMgYW5kL29yIHNoZWxsIGV4dGVuc2lvbnMgc3VjaCBhcworOzsgaHR0cHM6Ly9leHRl bnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vMzA3L2Rhc2gtdG8tZG9jay8gdGhhdAorOzsgaW1w bGVtZW50IFVidW50dSdzIFVuaXR5IGxhdW5jaGVyIHNwZWMKKzs7IGh0dHBzOi8vd2lraS51YnVu dHUuY29tL1VuaXR5L0xhdW5jaGVyQVBJLgorOzsKKzs7IFlvdXIgTGludXggRW1hY3MgaW5zdGFu Y2Ugc2hvdWxkIGJlIGxhdW5jaGVkIHZpYSBhbiBhcHByb3ByaWF0ZSBzaGVsbAorOzsgImRlc2t0 b3AiIGZpbGUgc3VjaCBhcyB0aG9zZSBkaXN0cmlidXRlZCB3aXRoIEVtYWNzOyBlLmcuLAorOzsg ImV0Yy9lbWFjc2NsaWVudC5kZXNrdG9wIiBhcyBkb2N1bWVudGVkIGhlcmUKKzs7IGh0dHBzOi8v c3BlY2lmaWNhdGlvbnMuZnJlZWRlc2t0b3Aub3JnL2Rlc2t0b3AtZW50cnkvbGF0ZXN0LyBhbmQK Kzs7IHdoaWNoIHlvdXIgR1VJIHN5c3RlbSBzaG91bGQgaW1wbGVtZW50LgorOzsKKzs7IE9uIG1h Y09TL0dOVXN0ZXAgc3lzdGVtcyAoYWthIE5TKSBhbmQgTVMtV2luZG93cywgbmF0aXZlIEFQSXMg YXJlCis7OyB1c2VkIGFuZCBELUJ1cyBpcyBub3QsIGV2ZW4gaWYgRC1CdXMgaXMgY29uZmlndXJl ZCBpbiB5b3VyIGJ1aWxkLgorOzsKKzs7IFRvIGFkZCBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIHN5 c3RlbXMsIHByb3ZpZGUgYSBiYWNrIGVuZCB0aGF0IGltcGxlbWVudHMKKzs7IHRoZSBjbC1nZW5l cmljIGZ1bmN0aW9ucyBiZWxvdy4KKworOzs7IENvZGU6CisKKyhyZXF1aXJlICdkYnVzKQorCiso ZGVmZ3JvdXAgc3lzdGVtLXRhc2tiYXIgbmlsCisgICJTeXN0ZW0gR1VJIHRhc2tiYXIgaWNvbiBi YWRnZSwgcHJvZ3Jlc3MgcmVwb3J0LCBhbGVydGluZy4iCisgIDpncm91cCAnY29udmVuaWVuY2UK KyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmdW4gc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MtcmVw b3J0ZXItaW5zdGFsbCAoKQorICAiSW5zdGFsbCBzeXN0ZW0tdGFza2JhciBwcm9ncmVzcyByZXBv cnRlcnMuIgorICAoYWRkLWhvb2sgJ3Byb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMg IydzeXN0ZW0tdGFza2Jhci0tcHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlKSkKKworKGRlZnVuIHN5 c3RlbS10YXNrYmFyLXByb2dyZXNzLXJlcG9ydGVyLXJlbW92ZSAoKQorICAiUmVtb3ZlIHN5c3Rl bS10YXNrYmFyIHByb2dyZXNzIHJlcG9ydGVycy4iCisgIChyZW1vdmUtaG9vayAncHJvZ3Jlc3Mt cmVwb3J0ZXItdXBkYXRlLWZ1bmN0aW9ucyAjJ3N5c3RlbS10YXNrYmFyLS1wcm9ncmVzcy1yZXBv cnRlci11cGRhdGUpKQorCisoZGVmY3VzdG9tIHN5c3RlbS10YXNrYmFyLXVzZS1wcm9ncmVzcy1y ZXBvcnRlciB0CisgICJTdXBwbGVtZW50IHByb2dyZXNzLXJlcG9ydGVycyB3aXRoIEdVSSB0YXNr YmFyIGljb24gcHJvZ3Jlc3MgYmFycy4iCisgIDp0eXBlICdib29sZWFuCisgIDpzZXQgKGxhbWJk YSAodmFyaWFibGUgdmFsdWUpCisgICAgICAgICAoc2V0LWRlZmF1bHQgdmFyaWFibGUgdmFsdWUp CisgICAgICAgICAoaWYgdmFsdWUKKyAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItcHJvZ3Jl c3MtcmVwb3J0ZXItaW5zdGFsbCkKKyAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLXByb2dyZXNz LXJlcG9ydGVyLXJlbW92ZSkpKQorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZjdXN0b20gc3lz dGVtLXRhc2tiYXItY2xlYXItYXR0ZW50aW9uLW9uLWZyYW1lLWZvY3VzIHQKKyAgIkNsZWFyIHRo ZSBpY29uIGF0dGVudGlvbiBpbmRpY2F0b3Igd2hlbiBhbnkgR1VJIGZyYW1lIGlzIGZvY3VzZWQu CitCYWNrIGVuZHMgdGhhdCBhdXRvbWF0aWNhbGx5IGNsZWFyIHRoZSBhdHRlbnRpb24gaW5kaWNh dG9yLCBzdWNoIGFzCittYWNPUy9HTlVzdGVwIGFuZCBNUy1XaW5kb3dzLCBpZ25vcmUgdGhpcyBv cHRpb24uIgorICA6dHlwZSAnYm9vbGVhbgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZjdXN0 b20gc3lzdGVtLXRhc2tiYXItZGJ1cy1kZXNrdG9wLWZpbGUtbmFtZSAiZW1hY3NjbGllbnQiCisg ICJELUJ1cyBkZXNrdG9wIGZpbGUgYmFzZSBuYW1lIGZvciB0aGUgc3lzdGVtIHRhc2tiYXIgZGVz dGluYXRpb24uCitUaGlzIHNob3VsZCBiZSB0aGUgYmFzZSBuYW1lIG9mIHRoZSBkZXNrdG9wIGZp bGUgdXNlZCB0byBsYXVuY2ggYW4gRW1hY3MKK2luc3RhbmNlLiAgRm9yIGV4YW1wbGUsIGlmIHlv dXIgbGF1bmNoZXIgZGVza3RvcCBmaWxlIGlzIGNhbGxlZAorXCJlbWFjcy5kZXNrdG9wXCIsIHRo aXMgb3B0aW9uIHNob3VsZCBiZSBcImVtYWNzXCIuIgorICA6dHlwZSAnc3RyaW5nCisgIDp2ZXJz aW9uICIzMS4xIikKKworKGRlZmN1c3RvbSBzeXN0ZW0tdGFza2Jhci1kYnVzLXRpbWVvdXQgbmls CisgICJOdW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIEQtQnVzIHJlc3BvbnNlcy4K K0lmIG5pbCwgdXNlIHRoZSBgZGJ1c2AgZGVmYXVsdCB0aW1lb3V0IGluIGBkYnVzLWNhbGwtbWV0 aG9kYCB3aGljaCBpcworMjUwMDAgKGkuZS4sIDI1bXMpLgorCitJZiB5b3VyIEQtQnVzIGRlc2t0 b3AgZXh0ZW5zaW9uIG5lZWRzIGV4dHJhIHRpbWUgdG8gcmVzcG9uZCwgaW4gd2hpY2gKK2Nhc2Ug YHN5c3RlbS10YXNrYmFyLW1vZGVgIG1pZ2h0IG5vdCBpbml0aWFsaXplIG9yIHJlbGF0ZWQgZnVu Y3Rpb25zCittaWdodCBub3QgdGFrZSB2aXNpYmxlIGVmZmVjdCwgYmluZCB0aGlzIHRvIGEgdmFs dWUgaGlnaGVyIHRoYW4gMjUwMDAgdG8KK2ZpbmQgd2hhdCB3b3JrcyBmb3IgeW91ciBzeXN0ZW0u IgorICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiRGVmYXVsdCIgbmlsKSBuYXRudW0pCisg IDp2ZXJzaW9uICIzMS4xIikKKworKGRlZnZhciBzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgbmls CisgICJHZW5lcmljIHRhc2tiYXIgbWV0aG9kIHN5c3RlbSBkaXNwYXRjaGVyLiIpCisKKyhkZWZ1 biBzeXN0ZW0tdGFza2Jhci0tc2V0LWJhY2stZW5kICgpCisgICJEZXRlcm1pbmUgdGFza2JhciBo b3N0IHN5c3RlbSB0eXBlLiIKKyAgOzsgT3JkZXIgbWF0dGVycyB0byBhY2NvbW1vZGF0ZSB0aGUg Y2FzZXMgd2hlcmUgYW4gTlMgb3IgTVMtV2luZG93cworICA7OyBidWlsZCBoYXZlIHRoZSBkYnVz IGZlYXR1cmUuCisgIChzZXRxIHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZAorICAgICAgICAoY29u ZCAoKGJvdW5kcCAnbnMtdmVyc2lvbi1zdHJpbmcpICducykKKyAgICAgICAgICAgICAgKCh3MzIt aW5pdGlhbGl6ZWQpICd3MzIpCisgICAgICAgICAgICAgICgoYW5kIChmZWF0dXJlcCAnZGJ1c2Jp bmQpCisgICAgICAgICAgICAgICAgICAgIChtZW1iZXIgIm9yZy5mcmVlZGVza3RvcC5sb2dpbjEi CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRidXMtbGlzdC1hY3RpdmF0YWJsZS1uYW1l cyA6c3lzdGVtKSkpCisgICAgICAgICAgICAgICAnZGJ1cykKKyAgICAgICAgICAgICAgKHQgbmls KSkpKQorCis7OzsjIyNhdXRvbG9hZAorKGRlZmluZS1taW5vci1tb2RlIHN5c3RlbS10YXNrYmFy LW1vZGUKKyAgIlN5c3RlbSBHVUkgdGFza2JhciBpY29uIGJhZGdlLCBwcm9ncmVzcyByZXBvcnQs IGFsZXJ0aW5nLiIKKyAgOmdsb2JhbCB0CisgICh3aGVuIG5vbmludGVyYWN0aXZlCisgICAgKHdh cm4gIkJhdGNoIG1vZGUgZG9lcyBub3Qgc3VwcG9ydCBgc3lzdGVtLXRhc2tiYXInIikpCisgIChj b25kIChzeXN0ZW0tdGFza2Jhci1tb2RlCisgICAgICAgICAoaWYgKHN5c3RlbS10YXNrYmFyLS1z ZXQtYmFjay1lbmQpCisgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1lbmFibGUpCisgICAg ICAgICAgICh3YXJuICJTeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBgc3lzdGVtLXRhc2tiYXInIikp CisgICAgICAgICAod2hlbiBzeXN0ZW0tdGFza2Jhci11c2UtcHJvZ3Jlc3MtcmVwb3J0ZXIKKyAg ICAgICAgICAgKHN5c3RlbS10YXNrYmFyLXByb2dyZXNzLXJlcG9ydGVyLWluc3RhbGwpKSkKKyAg ICAgICAgKHQKKyAgICAgICAgIChzeXN0ZW0tdGFza2Jhci1wcm9ncmVzcy1yZXBvcnRlci1yZW1v dmUpCisgICAgICAgICAod2hlbiBzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQKKyAgICAgICAgICAg KHN5c3RlbS10YXNrYmFyLS1kaXNhYmxlKQorICAgICAgICAgICAoc2V0cSBzeXN0ZW0tdGFza2Jh ci0tYmFjay1lbmQgbmlsKSkpKSkKKworKGNsLWRlZmdlbmVyaWMgc3lzdGVtLXRhc2tiYXItLWVu YWJsZSAoKQorICAiRW5hYmxlIHRoZSBzeXN0ZW0tdGFza2JhciBiYWNrIGVuZC4iKQorCisoY2wt ZGVmZ2VuZXJpYyBzeXN0ZW0tdGFza2Jhci0tZGlzYWJsZSAoKQorICAiRGlzYWJsZSB0aGUgc3lz dGVtLXRhc2tiYXIgYmFjayBlbmQuIikKKworKGNsLWRlZmdlbmVyaWMgc3lzdGVtLXRhc2tiYXIt YmFkZ2UgKCZvcHRpb25hbCBjb3VudCkKKyAgIkRpc3BsYXkgQ09VTlQgYXMgYW4gb3ZlcmxheSBv biB0aGUgc3lzdGVtIHRhc2tiYXIgRW1hY3MgaWNvbi4KK0lmIENPVU5UIGlzIGFuIGludGVnZXIs IGRpc3BsYXkgdGhhdC4KK0lmIENPVU5UIGlzIGEgc3RyaW5nIG9uIGJhY2sgZW5kcyB0aGF0IHN1 cHBvcnQgc3RyaW5ncywgZGlzcGxheSB0aGF0LgorVGhlIHN0cmluZyBzaG91bGQgYmUgc2hvcnQu CitPbiBiYWNrIGVuZHMgd2hpY2ggZG8gbm90IHN1cHBvcnQgc3RyaW5ncywgY29udmVydCBDT1VO VCB0byBhbiBpbnRlZ2VyCit1c2luZyBgc3RyaW5nLXRvLW51bWJlcicgYW5kIHRlc3RpbmcgYGlu dGVnZXJwJywgb3IgbmlsIGlmIHRoYXQgZmFpbHMuCitJZiBDT1VOVCBpcyBuaWwgb3IgYW4gZW1w dHkgc3RyaW5nLCByZW1vdmUgdGhlIGNvdW50ZXIuIikKKworKGNsLWRlZmdlbmVyaWMgc3lzdGVt LXRhc2tiYXItYXR0ZW50aW9uICgmb3B0aW9uYWwgdXJnZW5jeSB0aW1lb3V0KQorICAiRmxhc2gg dGhlIHN5c3RlbSB0YXNrYmFyIGljb24gYW5kL29yIGZyYW1lIHRvIGFsZXJ0IHRoZSB1c2VyLgor VVJHRU5DWSBjYW4gYmUgb25lIG9mIHRoZSBzeW1ib2xzIGBpbmZvcm1hdGlvbmFsJywgb3IgYGNy aXRpY2FsJy4KK0lmIFVSR0VOQ1kgaXMgbmlsLCBjbGVhciB0aGUgYXR0ZW50aW9uIGluZGljYXRv ci4KKworVGhlIGF0dGVudGlvbiBpbmRpY2F0b3IgaXMgY2xlYXJlZCBieSB0aGUgZWFybGllc3Qg b2YgYnJpbmdpbmcgdGhlIEVtYWNzCitHVUkgaW50byBmb2N1cywgb3IgYWZ0ZXIgVElNRU9VVCBz ZWNvbmRzLiAgSWYgVElNRU9VVCBpcyBuaWwsIHRoZSBzeXN0ZW0KK0dVSSBiZWhhdmlvciBoYXMg cHJpb3JpdHkuCisKK09uIHNvbWUgYmFjayBlbmRzLCBgY3JpdGljYWwnIGhhcyB0aGUgc2FtZSBl ZmZlY3QgYXMgYGluZm9ybWF0aW9uYWwnLiIpCisKKyhjbC1kZWZnZW5lcmljIHN5c3RlbS10YXNr YmFyLXByb2dyZXNzICgmb3B0aW9uYWwgcHJvZ3Jlc3MpCisgICJEaXNwbGF5IGEgcHJvZ3Jlc3Mg aW5kaWNhdG9yIG92ZXJsYXkgb24gdGhlIHN5c3RlbSB0YXNrYmFyIGljb24uCitQUk9HUkVTUyBp cyBhIGZsb2F0IGluIHRoZSByYW5nZSAwLjAgdG8gMS4wLgorSWYgUFJPR1JFU1MgaXMgbmlsLCBy ZW1vdmUgdGhlIHByb2dyZXNzIGluZGljYXRvci4iKQorCisoZGVmdW4gc3lzdGVtLXRhc2tiYXIt LXZhbGlkYXRlLXByb2dyZXNzIChwcm9ncmVzcykKKyAgIlJldHVybiBQUk9HUkVTUyBhcyBhIGZs b2F0IGluIHRoZSByYW5nZSAwLjAgdG8gMS4wLCBvciBuaWwuIgorICAod2hlbiAobmF0bnVtcCBw cm9ncmVzcykKKyAgICAoc2V0cSBwcm9ncmVzcyAoZmxvYXQgcHJvZ3Jlc3MpKSkKKyAgKHdoZW4g KGFuZCBwcm9ncmVzcyAoPj0gcHJvZ3Jlc3MgMC4wKSAoPD0gcHJvZ3Jlc3MgMS4wKSkKKyAgICBw cm9ncmVzcykpCisKKwwKKzs7IGBwcm9ncmVzcy1yZXBvcnRlcicgc3VwcG9ydC4KKworKGRlZnVu IHN5c3RlbS10YXNrYmFyLS1wcm9ncmVzcy1yZXBvcnRlci11cGRhdGUgKCBfcmVwb3J0ZXIgc3Rh dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVy Y2VudGFnZSBpbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBfdGV4dCBfc3VmZml4KQorICAiYHByb2dyZXNzLXJlcG9ydGVyLWRvLXVwZGF0ZWAg ZnVuY3Rpb24uIgorICAocGNhc2Ugc3RhdGUKKyAgICAoJ3VwZGF0ZQorICAgICAoY29uZCAocGVy Y2VudGFnZQorICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLXByb2dyZXNzICgvIHBlcmNlbnRh Z2UgMTAwLjApKSkKKyAgICAgICAgICAgKGluZGV4CisgICAgICAgICAgICAoc3lzdGVtLXRhc2ti YXItcHJvZ3Jlc3MgKC8gKDErIGluZGV4KSA0LjApKSkpKQorICAgICgnZG9uZQorICAgICAoc3lz dGVtLXRhc2tiYXItcHJvZ3Jlc3MgbmlsKSkpKQorCisMCis7OyBELUJ1cyBzdXBwb3J0LgorCiso ZGVmY29uc3Qgc3lzdGVtLXRhc2tiYXItLWRidXMtc2VydmljZSAiY29tLmNhbm9uaWNhbC5Vbml0 eSIpCisoZGVmY29uc3Qgc3lzdGVtLXRhc2tiYXItLWRidXMtaW50ZXJmYWNlICJjb20uY2Fub25p Y2FsLlVuaXR5LkxhdW5jaGVyRW50cnkiKQorCisoZGVmdmFyIHN5c3RlbS10YXNrYmFyLS1kYnVz LWF0dGVudGlvbiBuaWwKKyAgIk5vbi1uaWwgd2hlbiBhdHRlbnRpb24gaXMgcmVxdWVzdGVkLiIp CisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1zZW5kLXNpZ25hbCAobWVzc2FnZSkKKyAg IlNlbmQgTUVTU0FHRSB0byB0aGUgRC1CdXMgc3lzdGVtIHRhc2tiYXIgc2VydmljZS4iCisgIChs ZXQgKChhcHAtdXJpCisgICAgICAgICAoZm9ybWF0ICJhcHBsaWNhdGlvbjovLyVzLmRlc2t0b3Ai CisgICAgICAgICAgICAgICAgIHN5c3RlbS10YXNrYmFyLWRidXMtZGVza3RvcC1maWxlLW5hbWUp KSkKKyAgICAoZGJ1cy1zZW5kLXNpZ25hbAorICAgICA6c2Vzc2lvbgorICAgICBzeXN0ZW0tdGFz a2Jhci0tZGJ1cy1zZXJ2aWNlCisgICAgICIvIgorICAgICBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1p bnRlcmZhY2UKKyAgICAgIlVwZGF0ZSIKKyAgICAgYXBwLXVyaQorICAgICBtZXNzYWdlKSkpCisK KyhkZWZ1biBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1jbGVhci1hdHRlbnRpb24tb24tZnJhbWUtZm9j dXMgKCkKKyAgIkNsZWFyIGFuIGFjdGl2ZSBELUJ1cyBhdHRlbnRpb24gcmVxdWVzdCBpZiBhbnkg ZnJhbWUgaXMgZm9jdXNlZC4iCisgICh3aGVuIChhbmQgc3lzdGVtLXRhc2tiYXItLWRidXMtYXR0 ZW50aW9uCisgICAgICAgICAgICAgKGNhdGNoIDpjbGVhcgorICAgICAgICAgICAgICAgKGRvbGlz dCAoZnJhbWUgKGZyYW1lLWxpc3QpKQorICAgICAgICAgICAgICAgICAod2hlbiAoZXEgKGZyYW1l LWZvY3VzLXN0YXRlIGZyYW1lKSB0KQorICAgICAgICAgICAgICAgICAgICh0aHJvdyA6Y2xlYXIg dCkpKSkpCisgICAgKHN5c3RlbS10YXNrYmFyLWF0dGVudGlvbiBuaWwpKSkKKworKGRlZnVuIHN5 c3RlbS10YXNrYmFyLWRidXMtcGluZy1zZXJ2aWNlICgpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBg c3lzdGVtLXRhc2tiYXItLWRidXMtc2VydmljZScgcmVzcG9uZHMuCitSZXR1cm4gbmlsIGlmIG5v IHJlc3BvbnNlIHdpdGhpbiBgc3lzdGVtLXRhc2tiYXItZGJ1cy10aW1lb3V0Jy4iCisgIChkYnVz LXBpbmcKKyAgIDpzZXNzaW9uCisgICBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1zZXJ2aWNlCisgICBz eXN0ZW0tdGFza2Jhci1kYnVzLXRpbWVvdXQpKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNr YmFyLS1lbmFibGUgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAnZGJ1cykpKQorICAodW5sZXNzIChz eXN0ZW0tdGFza2Jhci1kYnVzLXBpbmctc2VydmljZSkKKyAgICAoZXJyb3IgIkQtQnVzIHNlcnZp Y2UgYCVzJyB1bmF2YWlsYWJsZSIgc3lzdGVtLXRhc2tiYXItLWRidXMtc2VydmljZSkpCisgICh3 aGVuIHN5c3RlbS10YXNrYmFyLWNsZWFyLWF0dGVudGlvbi1vbi1mcmFtZS1mb2N1cworICAgIChh ZGQtZnVuY3Rpb24gOmFmdGVyIGFmdGVyLWZvY3VzLWNoYW5nZS1mdW5jdGlvbgorICAgICAgICAg ICAgICAgICAgIydzeXN0ZW0tdGFza2Jhci0tZGJ1cy1jbGVhci1hdHRlbnRpb24tb24tZnJhbWUt Zm9jdXMpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tZGlzYWJsZSAoJmNvbnRl eHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jh ci0tYmFjay1lbmQgKGVxbCAnZGJ1cykpKQorICAocmVtb3ZlLWZ1bmN0aW9uIGFmdGVyLWZvY3Vz LWNoYW5nZS1mdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICMnc3lzdGVtLXRhc2tiYXItLWRi dXMtY2xlYXItYXR0ZW50aW9uLW9uLWZyYW1lLWZvY3VzKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0 ZW0tdGFza2Jhci1iYWRnZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAnZGJ1cykpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgY291bnQpCisgICJEaXNwbGF5IENP VU5UIGFzIGFuIG92ZXJsYXkgb24gdGhlIHN5c3RlbSB0YXNrYmFyIEVtYWNzIGljb24uCitJZiBD T1VOVCBpcyBhbiBpbnRlZ2VyLCBkaXNwbGF5IHRoYXQuICBJZiBDT1VOVCBpcyBhIHN0cmluZywg Y29udmVydCBpdAordG8gYW4gaW50ZWdlciwgb3IgbmlsIGlmIHRoYXQgZmFpbHMuICBJZiBDT1VO VCBpcyBhbnkgb3RoZXIgdHlwZSwgdXNlCituaWwuICBJZiBDT1VOVCBpcyBuaWwgb3IgYW4gZW1w dHkgc3RyaW5nLCByZW1vdmUgdGhlIGJhZGdlLgorTm90ZTogVGhlIFVuaXR5IEQtQnVzIHByb3Rv Y29sIHN1cHBvcnRzIG9ubHkgaW50ZWdlciBiYWRnZXMuIgorICAoY29uZCAoKHN0cmluZ3AgY291 bnQpCisgICAgICAgICAoaWYgKHN0cmluZy1lbXB0eS1wIGNvdW50KQorICAgICAgICAgICAgIChz ZXRxIGNvdW50IG5pbCkKKyAgICAgICAgICAgKGxldCAoKGNvdW50LTEgKHN0cmluZy10by1udW1i ZXIgY291bnQpKSkKKyAgICAgICAgICAgICAoc2V0cSBjb3VudCAoaWYgKGludGVnZXJwIGNvdW50 LTEpIGNvdW50LTEgbmlsKSkpKSkKKyAgICAgICAgKChub3QgKGludGVnZXJwIGNvdW50KSkKKyAg ICAgICAgIChzZXRxIGNvdW50IG5pbCkpKQorICAoc3lzdGVtLXRhc2tiYXItLWRidXMtc2VuZC1z aWduYWwKKyAgIGAoKDpkaWN0LWVudHJ5ICJjb3VudC12aXNpYmxlIgorICAgICAgICAgICAgICAg ICAgKDp2YXJpYW50IDpib29sZWFuICwobm90IChudWxsIGNvdW50KSkpKQorICAgICAoOmRpY3Qt ZW50cnkgImNvdW50IgorICAgICAgICAgICAgICAgICAgKDp2YXJpYW50IDp1aW50MzIgLChpZiAo bnVsbCBjb3VudCkgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291 bnQpKSkpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gKCZjb250 ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNr YmFyLS1iYWNrLWVuZCAoZXFsICdkYnVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmb3B0aW9uYWwgdXJnZW5jeSB0aW1lb3V0KQorICAiUmVxdWVzdCBVUkdFTkNZ IHVzZXIgYXR0ZW50aW9uIG9uIHRoZSBzeXN0ZW0gdGFza2JhciBFbWFjcyBpY29uLgorVGhlIHJl cXVlc3Qgd2lsbCB0aW1lIG91dCB3aXRoaW4gdGhlIFRJTUVPVVQgc2Vjb25kcyBpbnRlcnZhbC4K K1RoZSBVbml0eSBELUJ1cyBwcm90b2NvbCBkb2VzIG5vdCBzdXBwb3J0IGRpZmZlcmVudGlhdGVk IHVyZ2VuY2llcy4iCisgIChzZXRxIHN5c3RlbS10YXNrYmFyLS1kYnVzLWF0dGVudGlvbiB1cmdl bmN5KQorICAoc3lzdGVtLXRhc2tiYXItLWRidXMtc2VuZC1zaWduYWwKKyAgIGAoKDpkaWN0LWVu dHJ5ICJ1cmdlbnQiCisgICAgICAgICAgICAgICAgICAoOnZhcmlhbnQgOmJvb2xlYW4gLChub3Qg KG51bGwgdXJnZW5jeSkpKSkpKQorICAod2hlbiAoYW5kIHVyZ2VuY3kgdGltZW91dCkKKyAgICAo cnVuLXdpdGgtdGltZXIKKyAgICAgdGltZW91dAorICAgICBuaWwKKyAgICAgIydzeXN0ZW0tdGFz a2Jhci1hdHRlbnRpb24gbmlsKSkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItcHJv Z3Jlc3MgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo c3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ2RidXMpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbmFsIHByb2dyZXNzKQorICAiRGlzcGxheSBhIHBy b2dyZXNzIGJhciBvdmVybGF5IG9uIHRoZSBzeXN0ZW0gdGFza2JhciBpY29uLgorUFJPR1JFU1Mg aXMgYSBmbG9hdCBpbiB0aGUgcmFuZ2UgMC4wIHRvIDEuMC4KK0lmIFBST0dSRVNTIGlzIG5pbCwg cmVtb3ZlIHRoZSBwcm9ncmVzcyBiYXIuIgorICAoc2V0cSBwcm9ncmVzcyAoc3lzdGVtLXRhc2ti YXItLXZhbGlkYXRlLXByb2dyZXNzIHByb2dyZXNzKSkKKyAgKHN5c3RlbS10YXNrYmFyLS1kYnVz LXNlbmQtc2lnbmFsCisgICBgKCg6ZGljdC1lbnRyeSAicHJvZ3Jlc3MtdmlzaWJsZSIKKyAgICAg ICAgICAgICAgICAgICg6dmFyaWFudCA6Ym9vbGVhbiAsKG5vdCAobnVsbCBwcm9ncmVzcykpKSkK KyAgICAgKDpkaWN0LWVudHJ5ICJwcm9ncmVzcyIKKyAgICAgICAgICAgICAgICAgICg6dmFyaWFu dCA6ZG91YmxlICwoaWYgKG51bGwgcHJvZ3Jlc3MpIDAgcHJvZ3Jlc3MpKSkpKSkKKworDAorOzsg bWFjT1MvR05Vc3RlcCBOUyBzdXBwb3J0LgorCisoZGVjbGFyZS1mdW5jdGlvbiBucy1iYWRnZSAi bnNmbnMubSIpCisoZGVjbGFyZS1mdW5jdGlvbiBucy1yZXF1ZXN0LXVzZXItYXR0ZW50aW9uICJu c2Zucy5tIikKKyhkZWNsYXJlLWZ1bmN0aW9uIG5zLXByb2dyZXNzLWluZGljYXRvciAibnNmbnMu bSIpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItLWVuYWJsZSAoJmNvbnRleHQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNr LWVuZCAoZXFsICducykpKQorICAoaWdub3JlKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFz a2Jhci0tZGlzYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAnbnMpKSkKKyAgKGlnbm9yZSkp CisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItYmFkZ2UgKCZjb250ZXh0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChl cWwgJ25zKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCBj b3VudCkKKyAgIkRpc3BsYXkgQ09VTlQgYXMgYW4gb3ZlcmxheSBvbiB0aGUgRG9jayBiYWRnZS4K K0lmIENPVU5UIGlzIGFuIGludGVnZXIgb3IgYSBub24tZW1wdHkgc3RyaW5nLCBkaXNwbGF5IHRo YXQuICBJZiBDT1VOVCBpcworbmlsIG9yIGFuIGVtcHR5IHN0cmluZywgY2xlYXIgdGhlIGJhZGdl IG92ZXJsYXkuCitOb3RlOiBOUyB3aWxsIGFiYnJldmlhdGUgbG9uZyBzdHJpbmdzIHRvIGZpdCB0 aGUgYmFkZ2UncyBhbGxvY2F0ZWQKK3NwYWNlLiIKKyAgKGNvbmQgKChzdHJpbmdwIGNvdW50KQor ICAgICAgICAgKHdoZW4gKHN0cmluZy1lbXB0eS1wIGNvdW50KQorICAgICAgICAgICAoc2V0cSBj b3VudCBuaWwpKSkKKyAgICAgICAgKChpbnRlZ2VycCBjb3VudCkKKyAgICAgICAgIChzZXRxIGNv dW50IChudW1iZXItdG8tc3RyaW5nIGNvdW50KSkpCisgICAgICAgICh0IChzZXRxIGNvdW50IG5p bCkpKQorICAobnMtYmFkZ2UgY291bnQpKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFy LWF0dGVudGlvbiAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ25zKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgdXJnZW5jeSB0aW1lb3V0KQorICAi UmVxdWVzdCBVUkdFTkNZIHVzZXIgYXR0ZW50aW9uIG9uIHRoZSBEb2NrLgorVGhlIGF0dGVudGlv biBpbmRpY2F0b3Igd2lsbCBiZSBjbGVhcmVkIGFmdGVyIFRJTUVPVVQgc2Vjb25kcy4iCisgIChu cy1yZXF1ZXN0LXVzZXItYXR0ZW50aW9uIHVyZ2VuY3kpCisgICh3aGVuIChhbmQgdXJnZW5jeSB0 aW1lb3V0KQorICAgIChydW4td2l0aC10aW1lcgorICAgICB0aW1lb3V0CisgICAgIG5pbAorICAg ICAjJ3N5c3RlbS10YXNrYmFyLWF0dGVudGlvbiBuaWwpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0 ZW0tdGFza2Jhci1wcm9ncmVzcyAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAnbnMpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbmFsIHByb2dyZXNzKQorICAi RGlzcGxheSBhIHByb2dyZXNzIGJhciBvdmVybGF5IG9uIHRoZSBEb2NrIGFuZCBBcHAgU3dpdGNo ZXIuCitQUk9HUkVTUyBpcyBhIGZsb2F0IGluIHRoZSByYW5nZSAwLjAgdG8gMS4wLgorSWYgUFJP R1JFU1MgaXMgbmlsLCByZW1vdmUgdGhlIHByb2dyZXNzIGJhci4iCisgIChucy1wcm9ncmVzcy1p bmRpY2F0b3IgKHN5c3RlbS10YXNrYmFyLS12YWxpZGF0ZS1wcm9ncmVzcyBwcm9ncmVzcykpKQor CisMCis7OyBNUy1XaW5kb3dzIHN1cHBvcnQuCisKKyhkZWNsYXJlLWZ1bmN0aW9uIHczMi1iYWRn ZSAidzMyZm5zLmMiKQorKGRlY2xhcmUtZnVuY3Rpb24gdzMyLXJlcXVlc3QtdXNlci1hdHRlbnRp b24gInczMmZucy5jIikKKyhkZWNsYXJlLWZ1bmN0aW9uIHczMi1wcm9ncmVzcy1pbmRpY2F0b3Ig InczMmZucy5jIikKKworKGRlZnZhciBzeXN0ZW0tdGFza2Jhci13MzItYmFkZ2UtYmFja2dyb3Vu ZCAiI2U3NTg1NyIgOyByZWRpc2gKKyAgInczMiBiYWRnZSBiYWNrZ3JvdW5kIFJHQiB0cmlwbGUg c3RyaW5nLiIpCisKKyhkZWZ2YXIgc3lzdGVtLXRhc2tiYXItdzMyLWJhZGdlLWZvcmVncm91bmQg IiNmZmZmZmYiIDsgd2hpdGUKKyAgInczMiBiYWRnZSBmb3JlZ3JvdW5kIFJHQiB0cmlwbGUgc3Ry aW5nLiIpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci0tdzMyLWNsZWFyLWZyYW1lLWluZGljYXRv cnMgKGZyYW1lKQorICA7OyBOT1RFOiBVcGRhdGUgdGhlIGJlbG93IGlmIGFkZGluZyBuZXcgdzMy IHN5c3RlbS10YXNrYmFyIGZ1bmN0aW9ucy4KKyAgKHdpdGgtc2VsZWN0ZWQtZnJhbWUgZnJhbWUK KyAgICAoc3lzdGVtLXRhc2tiYXItYmFkZ2UgbmlsKQorICAgIChzeXN0ZW0tdGFza2Jhci1hdHRl bnRpb24gbmlsKQorICAgIChzeXN0ZW0tdGFza2Jhci1wcm9ncmVzcyBuaWwpKSkKKworKGNsLWRl Zm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tZW5hYmxlICgmY29udGV4dAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ3cz MikpKQorICA7OyBDbGVhciBzeXN0ZW0tdGFza2JhciBpbmRpY2F0b3JzIGZvciBhIGZyYW1lIHdo ZW4gaXQgaXMgZGVsZXRlZC4KKyAgKGFkZC1ob29rICdkZWxldGUtZnJhbWUtZnVuY3Rpb25zCisg ICAgICAgICAgICAjJ3N5c3RlbS10YXNrYmFyLS13MzItY2xlYXItZnJhbWUtaW5kaWNhdG9ycykp CisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItLWRpc2FibGUgKCZjb250ZXh0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2st ZW5kIChlcWwgJ3czMikpKQorICAocmVtb3ZlLWhvb2sgJ2RlbGV0ZS1mcmFtZS1mdW5jdGlvbnMK KyAgICAgICAgICAgICAgICMnc3lzdGVtLXRhc2tiYXItLXczMi1jbGVhci1mcmFtZS1pbmRpY2F0 b3JzKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci1iYWRnZSAoJmNvbnRleHQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1l bmQgKGVxbCAndzMyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRp b25hbCBjb3VudCkKKyAgIkRpc3BsYXkgYSBDT1VOVCBvdmVybGF5IG9uIHRoZSBzeXN0ZW0gdGFz a2JhciBpY29uLgorVGhlIHRhc2tiYXIgaWNvbiB0YXJnZXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRo ZSBzZWxlY3RlZCBmcmFtZS4KKworSWYgQ09VTlQgaXMgYW4gaW50ZWdlciBvciBhIG5vbi1lbXB0 eSBzdHJpbmcsIGRpc3BsYXkgdGhhdC4gIElmIENPVU5UIGlzCituaWwgb3IgYW4gZW1wdHkgc3Ry aW5nLCBjbGVhciB0aGUgYmFkZ2UuCisKK0R1ZSB0byBNUy1XaW5kb3dzIGljb24gb3ZlcmxheSBz aXplIGxpbWl0YXRpb25zLCBpZiBDT1VOVCBpcyBhbiBpbnRlZ2VyCithbmQgaXMgb3V0c2lkZSB0 aGUgcmFuZ2UgLTk5IHRvIDk5LCBkaXNwbGF5IFwiLTk5XCIgYW5kIFwiOTkrXCIsCityZXNwZWN0 aXZlbHksIGlmIENPVU5UIGlzIGEgc3RyaW5nIGxvbmdlciB0aGFuIDIgY2hhcmFjdGVycyB0cnVu Y2F0ZSBpdAordXNpbmcgYHRydW5jYXRlLXN0cmluZy10by13aWR0aGAuCisKK0NvbnN1bHQgYHN5 c3RlbS10YXNrYmFyLXczMi1iYWRnZS1iYWNrZ3JvdW5kYCBhbmQKK2BzeXN0ZW0tdGFza2Jhci13 MzItYmFkZ2UtZm9yZWdyb3VuZGAgZm9yIHRoZSBiYWNrZ3JvdW5kIGFuZCBmb3JlZ3JvdW5kCitj b2xvcnMgZm9yIHRoZSBwYWludGVkIG92ZXJsYXkuIgorICAoY29uZCAoKHN0cmluZ3AgY291bnQp CisgICAgICAgICAoaWYgKHN0cmluZy1lbXB0eS1wIGNvdW50KQorICAgICAgICAgICAgIChzZXRx IGNvdW50IG5pbCkKKyAgICAgICAgICAgKHdoZW4gKGxlbmd0aD4gY291bnQgMikKKyAgICAgICAg ICAgICAoc2V0cSBjb3VudCAodHJ1bmNhdGUtc3RyaW5nLXRvLXdpZHRoIGNvdW50IDMgMCBuaWwg dCkpKSkpCisgICAgICAgICgoaW50ZWdlcnAgY291bnQpCisgICAgICAgICAoaWYgKGFuZCAoPiBj b3VudCAtMTAwKQorICAgICAgICAgICAgICAgICAgKDwgY291bnQgMTAwKSkKKyAgICAgICAgICAg ICAoc2V0cSBjb3VudCAobnVtYmVyLXRvLXN0cmluZyBjb3VudCkpCisgICAgICAgICAgIChpZiAo PCBjb3VudCAwKQorICAgICAgICAgICAgICAgKHNldHEgY291bnQgIi05OSIpCisgICAgICAgICAg ICAgKHNldHEgY291bnQgIjk5KyIpKSkpCisgICAgICAgICh0IChzZXRxIGNvdW50IG5pbCkpKQor ICAodzMyLWJhZGdlIGNvdW50CisgICAgICAgICAgICAgc3lzdGVtLXRhc2tiYXItdzMyLWJhZGdl LWJhY2tncm91bmQKKyAgICAgICAgICAgICBzeXN0ZW0tdGFza2Jhci13MzItYmFkZ2UtZm9yZWdy b3VuZCkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItYXR0ZW50aW9uICgmY29udGV4 dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jh ci0tYmFjay1lbmQgKGVxbCAndzMyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmb3B0aW9uYWwgdXJnZW5jeSB0aW1lb3V0KQorICAiUmVxdWVzdCBVUkdFTkNZIHVz ZXIgYXR0ZW50aW9uIG9uIHRoZSBzeXN0ZW0gdGFza2JhciBpY29uLgorSW5kaWNhdGUgdGhlIGlj b24gYXNzb2NpYXRlZCB3aXRoIHRoZSBzZWxlY3RlZCBmcmFtZS4KK0lmIFVSR0VOQ1kgaXMgdGhl IHN5bWJvbCBgaW5mb3JtYXRpb25hbCcsIGZsYXNoIHRoZSB0YXNrYmFyIGljb24uCitJZiBVUkdF TkNZIGlzIHRoZSBzeW1ib2wgYGNyaXRpY2FsJywgZmxhc2ggdGhlIHRhc2tiYXIgaWNvbiBhbmQg dGhlCitNUy1XaW5kb3dzIHdpbmRvdyBmcmFtZS4KK0NsZWFyIGF0dGVudGlvbiBpbmRpY2F0b3Ig YWZ0ZXIgVElNRU9VVCBzZWNvbmRzLiAgSWYgVElNRU9VVCBpcyBuaWwsCitkZWZhdWx0IHRvIE1T LVdpbmRvd3MgZGVmYXVsdCBiZWhhdmlvci4iCisgICh3MzItcmVxdWVzdC11c2VyLWF0dGVudGlv biB1cmdlbmN5KQorICAod2hlbiAoYW5kIHVyZ2VuY3kgdGltZW91dCkKKyAgICAocnVuLXdpdGgt dGltZXIKKyAgICAgdGltZW91dAorICAgICBuaWwKKyAgICAgIydzeXN0ZW0tdGFza2Jhci1hdHRl bnRpb24gbmlsKSkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MgKCZj b250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRh c2tiYXItLWJhY2stZW5kIChlcWwgJ3czMikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmb3B0aW9uYWwgcHJvZ3Jlc3MpCisgICJEaXNwbGF5IGEgcHJvZ3Jlc3MgYmFy IG9uIHRoZSBzeXN0ZW0gdGFza2JhciBpY29uLgorUFJPR1JFU1MgaXMgYSBmbG9hdCBpbiB0aGUg cmFuZ2UgMC4wIHRvIDEuMC4KK0lmIFBST0dSRVNTIGlzIG5pbCwgcmVtb3ZlIHRoZSBwcm9ncmVz cyBiYXIuIgorICAodzMyLXByb2dyZXNzLWluZGljYXRvciAoc3lzdGVtLXRhc2tiYXItLXZhbGlk YXRlLXByb2dyZXNzIHByb2dyZXNzKSkpCisKKwwKKworKHByb3ZpZGUgJ3N5c3RlbS10YXNrYmFy KQorCis7Ozsgc3lzdGVtLXRhc2tiYXIuZWwgZW5kcyBoZXJlCmRpZmYgLS1naXQgYS9zcmMvbnNm bnMubSBiL3NyYy9uc2Zucy5tCmluZGV4IDM1MjhjNGFjZDUwLi4xYThmOTVjMTRlZiAxMDA2NDQK LS0tIGEvc3JjL25zZm5zLm0KKysrIGIvc3JjL25zZm5zLm0KQEAgLTM2NzQsNiArMzY3NCwxMjkg QEAgVGhlIHBvc2l0aW9uIGlzIHJldHVybmVkIGFzIGEgY29ucyBjZWxsIChYIC4gWSkgb2YgdGhl CiAgIHJldHVybiBRbmlsOwogfQogCitERUZVTiAoIm5zLWJhZGdlIiwgRm5zX2JhZGdlLCBTbnNf YmFkZ2UsIDEsIDEsIDAsCisgICAgICAgZG9jOiAvKiBTZXQgdGhlIGFwcCBpY29uIGJhZGdlIHRv IEJBREdFLgorQkFER0Ugc2hvdWxkIGJlIGEgc3RyaW5nIHNob3J0IGVub3VnaCB0byBkaXNwbGF5 IG5pY2VseSBpbiB0aGUgc2hvcnQKK3NwYWNlIGludGVuZGVkIGZvciBiYWRnZXMuCitJZiBCQURH RSBpcyBuaWwsIGNsZWFyIHRoZSBhcHAgYmFkZ2UuICAqLykKKyAgKExpc3BfT2JqZWN0IGJhZGdl KQoreworICBibG9ja19pbnB1dCAoKTsKKyAgaWYgKE5JTFAgKGJhZGdlKSkKKyAgICBbW05TQXBw IGRvY2tUaWxlXSBzZXRCYWRnZUxhYmVsOiBuaWxdOworICBlbHNlCisgICAgeworICAgICAgQ0hF Q0tfU1RSSU5HIChiYWRnZSk7CisgICAgICBbW05TQXBwIGRvY2tUaWxlXSBzZXRCYWRnZUxhYmVs OgorCQkJICBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6IFNTREFUQSAoYmFkZ2UpXV07 CisgICAgfQorICB1bmJsb2NrX2lucHV0ICgpOworICByZXR1cm4gUW5pbDsKK30KKworLyogVXNl IC0xIHRvIGluZGljYXRlIG5vIGFjdGl2ZSByZXF1ZXN0LiAgKi8KK3N0YXRpYyBOU0ludGVnZXIg bnNfcmVxdWVzdF91c2VyX2F0dGVudGlvbl9pZCA9IC0xOworCitERUZVTiAoIm5zLXJlcXVlc3Qt dXNlci1hdHRlbnRpb24iLAorICAgICAgIEZuc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uLAorICAg ICAgIFNuc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uLAorICAgICAgIDEsIDEsIDAsCisgICAgICAg ZG9jOiAvKiBCb3VuY2UgdGhlIGFwcCBkb2NrIGljb24gdG8gcmVxdWVzdCB1c2VyIGF0dGVudGlv bi4KK0lmIFVSR0VOQ1kgbmlsLCBjYW5jZWwgdGhlIG91dHN0YW5kaW5nIHJlcXVlc3QsIGlmIGFu eS4KK0lmIFVSR0VOQ1kgaXMgdGhlIHN5bWJvbCBgaW5mb3JtYXRpb25hbCcsIGJvdW5jaW5nIGxh c3RzIGEgZmV3IHNlY29uZHMuCitJZiBVUkdFTkNZIGlzIHRoZSBzeW1ib2wgYGNyaXRpY2FsJywg Ym91bmNpbmcgbGFzdHMgdW50aWwgRW1hY3MgaXMKK2ZvY3VzZWQuICAqLykKKyAgKExpc3BfT2Jq ZWN0IHVyZ2VuY3kpCit7CisgIGJsb2NrX2lucHV0ICgpOworICBpZiAobnNfcmVxdWVzdF91c2Vy X2F0dGVudGlvbl9pZCAhPSAtMSkKKyAgICB7CisgICAgICBbTlNBcHAgY2FuY2VsVXNlckF0dGVu dGlvblJlcXVlc3Q6IG5zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb25faWRdOworICAgICAgbnNfcmVx dWVzdF91c2VyX2F0dGVudGlvbl9pZCA9IC0xOworICAgIH0KKyAgaWYgKCFOSUxQICh1cmdlbmN5 KSAmJiBTWU1CT0xQICh1cmdlbmN5KSkKKyAgICB7CisgICAgICBpZiAoRVEgKHVyZ2VuY3ksIFFp bmZvcm1hdGlvbmFsKSkKKwluc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uX2lkID0gW05TQXBwIHJl cXVlc3RVc2VyQXR0ZW50aW9uOgorCQkJCQkJTlNJbmZvcm1hdGlvbmFsUmVxdWVzdF07CisgICAg ICBlbHNlIGlmIChFUSAodXJnZW5jeSwgUWNyaXRpY2FsKSkKKwluc19yZXF1ZXN0X3VzZXJfYXR0 ZW50aW9uX2lkID0gW05TQXBwIHJlcXVlc3RVc2VyQXR0ZW50aW9uOgorCQkJCQkJTlNDcml0aWNh bFJlcXVlc3RdOworICAgIH0KKyAgdW5ibG9ja19pbnB1dCAoKTsKKyAgcmV0dXJuIFFuaWw7Cit9 CisKK0RFRlVOICgibnMtcHJvZ3Jlc3MtaW5kaWNhdG9yIiwKKyAgICAgICBGbnNfcHJvZ3Jlc3Nf aW5kaWNhdG9yLAorICAgICAgIFNuc19wcm9ncmVzc19pbmRpY2F0b3IsCisgICAgICAgMSwgMSwg MCwKKyAgICAgICBkb2M6IC8qIEJvdW5jZSB0aGUgYXBwIGRvY2sgaWNvbiB0byByZXF1ZXN0IHVz ZXIgYXR0ZW50aW9uLgorCSAgICAgICBQUk9HUkVTUyBpcyBhIGZsb2F0IGJldHdlZW4gMC4wIGFu ZCAxLjAuCisJICAgICAgIElmIFBST0dSRVNTIGlzIG5pbCwgcmVtb3ZlIHRoZSBwcm9ncmVzcyBp bmRpY2F0b3IuICAqLykKKyAgKExpc3BfT2JqZWN0IHByb2dyZXNzKQoreworICBibG9ja19pbnB1 dCAoKTsKKyAgTlNEb2NrVGlsZSAqZG9ja190aWxlID0gW05TQXBwIGRvY2tUaWxlXTsKKyAgLyog VXNlIE5TTGV2ZWxJbmRpY2F0b3Igd2l0aCByZWxpYWJsZSByZWRyYXdzLCBub3QgTlNQcm9ncmVz c0luZGljYXRvci4gICovCisgIE5TTGV2ZWxJbmRpY2F0b3IgKmxldmVsX2luZGljYXRvcjsKKyAg LyogUmV1c2UgdGhlIGluZGljYXRvciBzdWJ2aWV3IG9yIGNyZWF0ZSBvbmUuICovCisgIGlmIChk b2NrX3RpbGUuY29udGVudFZpZXcKKyAgICAgICYmIFtbZG9ja190aWxlLmNvbnRlbnRWaWV3IHN1 YnZpZXdzXSBjb3VudF0gPiAwCisgICAgICAmJiBbW1tkb2NrX3RpbGUuY29udGVudFZpZXcgc3Vi dmlld3NdIGxhc3RPYmplY3RdCisgICAgICAgICAgICAgICAgICAgICAgICBpc0tpbmRPZkNsYXNz OltOU0xldmVsSW5kaWNhdG9yIGNsYXNzXV0pCisgICAgbGV2ZWxfaW5kaWNhdG9yID0KKyAgICAg IChOU0xldmVsSW5kaWNhdG9yICopW1tbZG9ja190aWxlIGNvbnRlbnRWaWV3XSBzdWJ2aWV3c10g bGFzdE9iamVjdF07CisgICAgZWxzZQorICAgICAgeworCWlmICghZG9ja190aWxlLmNvbnRlbnRW aWV3KQorCSAgeworCSAgICBOU0ltYWdlVmlldyogaW1hZ2VfdmlldyA9IFtbTlNJbWFnZVZpZXcg YWxsb2NdIGluaXRdOworCSAgICBbaW1hZ2VfdmlldyBzZXRJbWFnZTogW05TQXBwIGFwcGxpY2F0 aW9uSWNvbkltYWdlXV07CisJICAgIFtkb2NrX3RpbGUgc2V0Q29udGVudFZpZXc6IGltYWdlX3Zp ZXddOworCSAgfQorCS8qIFNldCB3aWR0aCB0byB0aGUgd2lkdGggb2YgdGhlIGFwcGxpY2F0aW9u IGljb24sIGFuZCBoZWlnaHQgdG8KKwkgICAlIG9mIHRoZSBpY29uIGhlaWdodCB0byByZXNwZWN0 IHNjYWxlZCBpY29ucy4gICovCisJZmxvYXQgd2lkdGggPSBbW05TQXBwIGFwcGxpY2F0aW9uSWNv bkltYWdlXSBzaXplXS53aWR0aDsKKwlmbG9hdCBoZWlnaHQgPSAwLjEwICogW1tOU0FwcCBhcHBs aWNhdGlvbkljb25JbWFnZV0gc2l6ZV0uaGVpZ2h0OworCWxldmVsX2luZGljYXRvciA9CisJICBb W05TTGV2ZWxJbmRpY2F0b3IgYWxsb2NdIGluaXRXaXRoRnJhbWU6CisJCQkJICAgICAgTlNNYWtl UmVjdCAoMC4wLCAwLjAsCisJCQkJCQkgIHdpZHRoLCBoZWlnaHQpXTsKKwlbbGV2ZWxfaW5kaWNh dG9yIHNldFdhbnRzTGF5ZXI6IFlFU107IC8qIFBlcmZvcm1hbmNlLiAgKi8KKwlbbGV2ZWxfaW5k aWNhdG9yIHNldEVuYWJsZWQ6IE5PXTsgLyogSWdub3JlIG1vdXNlIGlucHV0LiAgKi8KKwlbbGV2 ZWxfaW5kaWNhdG9yIHNldExldmVsSW5kaWNhdG9yU3R5bGU6CisJCQkgICBOU0xldmVsSW5kaWNh dG9yU3R5bGVDb250aW51b3VzQ2FwYWNpdHldOworCS8qIE1hdGNoIE5TUHJvZ3Jlc3NJbmRpY2F0 b3IgY29sb3IuICAqLworCVtsZXZlbF9pbmRpY2F0b3Igc2V0RmlsbENvbG9yOiBbTlNDb2xvciBj b250cm9sQWNjZW50Q29sb3JdXTsKKwlbbGV2ZWxfaW5kaWNhdG9yIHNldE1pblZhbHVlOiAwLjBd OworCVtsZXZlbF9pbmRpY2F0b3Igc2V0TWF4VmFsdWU6IDEuMF07CisJLyogVGhlIGNvbnRlbnRW aWV3IHRha2VzIG93bmVyc2hpcC4gICovCisJW2RvY2tfdGlsZS5jb250ZW50VmlldyBhZGRTdWJ2 aWV3OiBsZXZlbF9pbmRpY2F0b3JdOworICAgICAgfQorICBkb3VibGUgcHJvZ3Jlc3NfdmFsdWU7 CisgIEJPT0wgaGlkZSA9IChOSUxQIChwcm9ncmVzcykKKwkgICAgICAgfHwgKCFOSUxQIChwcm9n cmVzcykgJiYgIShGTE9BVFAgKHByb2dyZXNzKSkpKTsKKyAgaWYgKCFoaWRlKQorICAgIHsKKyAg ICAgIHByb2dyZXNzX3ZhbHVlID0gWEZMT0FUX0RBVEEgKHByb2dyZXNzKTsKKyAgICAgIGhpZGUg PSAocHJvZ3Jlc3NfdmFsdWUgPCAwLjAgfHwgcHJvZ3Jlc3NfdmFsdWUgPiAxLjApOworICAgIH0K KyAgaWYgKGhpZGUpCisgICAgeworICAgICAgW2xldmVsX2luZGljYXRvciBzZXREb3VibGVWYWx1 ZTogMC4wXTsKKyAgICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0SGlkZGVuOiBZRVNdOworICAgIH0K KyAgZWxzZQorICAgIHsKKyAgICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0RG91YmxlVmFsdWU6IHBy b2dyZXNzX3ZhbHVlXTsKKyAgICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0SGlkZGVuOiBOT107Cisg ICAgfQorICBbZG9ja190aWxlIGRpc3BsYXldOworICB1bmJsb2NrX2lucHV0ICgpOworICByZXR1 cm4gUW5pbDsKK30KKwogI2lmZGVmIE5TX0lNUExfQ09DT0EKIAogREVGVU4gKCJucy1zZW5kLWl0 ZW1zIiwKQEAgLTM5NTcsNiArNDA4MCw5IEBAIC0gKExpc3BfT2JqZWN0KWxpc3BTdHJpbmcKICAg ZGVmc3ViciAoJlNuc19zZXRfbW91c2VfYWJzb2x1dGVfcGl4ZWxfcG9zaXRpb24pOwogICBkZWZz dWJyICgmU25zX21vdXNlX2Fic29sdXRlX3BpeGVsX3Bvc2l0aW9uKTsKICAgZGVmc3ViciAoJlNu c19zaG93X2NoYXJhY3Rlcl9wYWxldHRlKTsKKyAgZGVmc3ViciAoJlNuc19iYWRnZSk7CisgIGRl ZnN1YnIgKCZTbnNfcmVxdWVzdF91c2VyX2F0dGVudGlvbik7CisgIGRlZnN1YnIgKCZTbnNfcHJv Z3Jlc3NfaW5kaWNhdG9yKTsKICNpZmRlZiBOU19JTVBMX0NPQ09BCiAgIGRlZnN1YnIgKCZTbnNf c2VuZF9pdGVtcyk7CiAjZW5kaWYKQEAgLTQwMjMsNCArNDE0OSw2IEBAIC0gKExpc3BfT2JqZWN0 KWxpc3BTdHJpbmcKICAgREVGU1lNIChRYXNzcV9kZWxldGVfYWxsLCAiYXNzcS1kZWxldGUtYWxs Iik7CiAgIERFRlNZTSAoUXJ1bl9hdF90aW1lLCAicnVuLWF0LXRpbWUiKTsKICAgREVGU1lNIChR eF9oaWRlX3RpcCwgIngtaGlkZS10aXAiKTsKKyAgREVGU1lNIChRaW5mb3JtYXRpb25hbCwgImlu Zm9ybWF0aW9uYWwiKTsKKyAgREVGU1lNIChRY3JpdGljYWwsICJjcml0aWNhbCIpOwogfQpkaWZm IC0tZ2l0IGEvc3JjL3czMmZucy5jIGIvc3JjL3czMmZucy5jCmluZGV4IDY3OWU4MTk3ZmQ4Li4x YTJmYzllODg0MiAxMDA2NDQKLS0tIGEvc3JjL3czMmZucy5jCisrKyBiL3NyYy93MzJmbnMuYwpA QCAtMzUsNyArMzUsMTIgQEAgI2RlZmluZSBfV0lOMzJfV0lOTlQgMHgwNjAwCiAjaW5jbHVkZSA8 Yy1jdHlwZS5oPgogCiAjZGVmaW5lIENPQkpNQUNST1MgLyogQXNrIGZvciBDIGRlZmluaXRpb25z IGZvciBDT00uICAqLworI2lmICFkZWZpbmVkIE1JTkdXX1c2NCAmJiAhZGVmaW5lZCBDWUdXSU4K KyMgZGVmaW5lIElOSVRHVUlECisjZW5kaWYKKyNpbmNsdWRlIDxpbml0Z3VpZC5oPgogI2luY2x1 ZGUgPHNobG9iai5oPgorI2luY2x1ZGUgPHNob2JqaWRsLmg+CiAjaW5jbHVkZSA8b2xlaWRsLmg+ CiAjaW5jbHVkZSA8b2JqaWRsLmg+CiAjaW5jbHVkZSA8b2xlMi5oPgpAQCAtMjM3LDYgKzI0Miw4 IEBAIERFQ0xBUkVfSEFORExFKEhNT05JVE9SKTsKIHR5cGVkZWYgQk9PTCAoV0lOQVBJICogU2V0 R2VzdHVyZUNvbmZpZ19wcm9jKSAoSFdORCwgRFdPUkQsIFVJTlQsCiAJCQkJCSAgICAgICBFbWFj c19QR0VTVFVSRUNPTkZJRywgVUlOVCk7CiAKK3R5cGVkZWYgQk9PTCAoV0lOQVBJICogRmxhc2hX aW5kb3dFeF9Qcm9jKSAoUEZMQVNIV0lORk8gcGZ3aSk7CisKIHN0YXRpYyBUcmFja01vdXNlRXZl bnRfUHJvYyB0cmFja19tb3VzZV9ldmVudF9mbiA9IE5VTEw7CiBzdGF0aWMgSW1tR2V0Q29tcG9z aXRpb25TdHJpbmdfUHJvYyBnZXRfY29tcG9zaXRpb25fc3RyaW5nX2ZuID0gTlVMTDsKIHN0YXRp YyBJbW1HZXRDb250ZXh0X1Byb2MgZ2V0X2ltZV9jb250ZXh0X2ZuID0gTlVMTDsKQEAgLTI1OSw2 ICsyNjYsNyBAQCBERUNMQVJFX0hBTkRMRShITU9OSVRPUik7CiBzdGF0aWMgV1RTUmVnaXN0ZXJT ZXNzaW9uTm90aWZpY2F0aW9uX1Byb2MgV1RTUmVnaXN0ZXJTZXNzaW9uTm90aWZpY2F0aW9uX2Zu ID0gTlVMTDsKIHN0YXRpYyBSZWdpc3RlclRvdWNoV2luZG93X3Byb2MgUmVnaXN0ZXJUb3VjaFdp bmRvd19mbiA9IE5VTEw7CiBzdGF0aWMgU2V0R2VzdHVyZUNvbmZpZ19wcm9jIFNldEdlc3R1cmVD b25maWdfZm4gPSBOVUxMOworc3RhdGljIEZsYXNoV2luZG93RXhfUHJvYyBmbGFzaF93aW5kb3df ZXhfZm4gPSBOVUxMOwogCiBleHRlcm4gQXBwZW5kTWVudVdfUHJvYyB1bmljb2RlX2FwcGVuZF9t ZW51OwogCkBAIC0xMTAxMCw2ICsxMTAxOCwzMTMgQEAgREVGVU4gKCJ3MzItc3lzdGVtLWlkbGUt dGltZSIsIEZ3MzJfc3lzdGVtX2lkbGVfdGltZSwgU3czMl9zeXN0ZW1faWRsZV90aW1lLAogCiAj ZW5kaWYKIAorDAorI2lmZGVmIFdJTkRPV1NOVAorCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwkJICAgICBU YXNrYmFyIEluZGljYXRvcnMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBNSU5HV19XNjQK KyAgLyogbWluZ3cub3JnJ3MgTWluR1cgZG9lc24ndCBoYXZlIHRoaXMgc3R1ZmYuICAqLworICBE RUZJTkVfR1VJRChDTFNJRF9UYXNrYmFyTGlzdCwgMHg1NmZkZjM0NCwgMHhmZDZkLCAweDExZDAs IDB4OTUsMHg4YSwgMHgwMCwweDYwLDB4OTcsMHhjOSwweGEwLDB4OTApOworICBERUZJTkVfR1VJ RChJSURfSVRhc2tiYXJMaXN0MywgMHhlYTFhZmI5MSwgMHg5ZTI4LCAweDRiODYsIDB4OTAsMHhl OSwgMHg5ZSwweDlmLDB4OGEsMHg1ZSwweGVmLDB4YWYpOworI2VuZGlmCisKK0RFRlVOICgidzMy LWJhZGdlIiwKKyAgICAgICBGdzMyX2JhZGdlLAorICAgICAgIFN3MzJfYmFkZ2UsCisgICAgICAg MywgMywgMCwKKyAgICAgICBkb2M6IC8qIERpc3BsYXkgYSB0YXNrYmFyIGljb24gb3ZlcmxheSBp bWFnZSBvbiB0aGUgc2VsZWN0ZWQgZnJhbWUuCitCQURHRSBpcyBhIHN0cmluZy4gIElmIEJBREdF IGlzIG5pbCwgcmVtb3ZlIHRoZSBvdmVybGF5LiAgRG8gbm90aGluZyBpZgorV2luZG93cyBkb2Vz IG5vdCBzdXBwb3J0IHRoZSBJVGFza2Jhckxpc3QzIGludGVyZmFjZSBhbmQgcmV0dXJuIG5pbCwK K290aGVyd2lzZSByZXR1cm4gdC4gIERvIG5vdGhpbmcgaWYgdGhlIHNlbGVjdGVkIGZyYW1lIGlz IG5vdCAoeWV0KQorYXNzb2NpYXRlZCB3aXRoIGEgd2luZG93IGhhbmRsZS4gIEJBQ0tHUk9VTkQg YW5kIEZPUkVHUk9VTkQgYXJlIFJHQgordHJpcGxldCBzdHJpbmdzIG9mIHRoZSBmb3JtIFwiI1JS R0dCQlwiLiAgKi8pCisgIChMaXNwX09iamVjdCBiYWRnZSwgTGlzcF9PYmplY3QgYmFja2dyb3Vu ZCwgTGlzcF9PYmplY3QgZm9yZWdyb3VuZCkKK3sKKyAgc3RydWN0IGZyYW1lICpzZiA9IFNFTEVD VEVEX0ZSQU1FICgpOworICBIV05EIGh3bmQgPSBOVUxMOworCisgIGlmIChGUkFNRV9XMzJfUCAo c2YpICYmIEZSQU1FX0xJVkVfUCAoc2YpKQorICAgIGh3bmQgPSBGUkFNRV9XMzJfV0lORE9XIChz Zik7CisKKyAgaWYgKGh3bmQgPT0gTlVMTCkKKyAgICByZXR1cm4gUW5pbDsKKworICBDb0luaXRp YWxpemUgKE5VTEwpOworICBJVGFza2Jhckxpc3QzICp0YXNrX2Jhcl9saXN0ID0gTlVMTDsKKyAg SFJFU1VMVCByID0gQ29DcmVhdGVJbnN0YW5jZSgmQ0xTSURfVGFza2Jhckxpc3QsCisJCQkgICAg ICAgTlVMTCwKKwkJCSAgICAgICBDTFNDVFhfSU5QUk9DX1NFUlZFUiwKKwkJCSAgICAgICAmSUlE X0lUYXNrYmFyTGlzdDMsCisJCQkgICAgICAgKHZvaWQgKiopJnRhc2tfYmFyX2xpc3QpOworICBp ZiAociAhPSBTX09LKQorICAgIHJldHVybiBRbmlsOworCisgIGlmICghTklMUCAoYmFkZ2UpICYm IFNUUklOR1AgKGJhZGdlKQorICAgICAgJiYgU1RSSU5HUCAoYmFja2dyb3VuZCkgJiYgU1RSSU5H UCAoZm9yZWdyb3VuZCkpCisgICAgeworICAgICAgQ09MT1JSRUYgYmdfcmdiOworICAgICAgQ09M T1JSRUYgZmdfcmdiOworICAgICAgdW5zaWduZWQgc2hvcnQgciwgZywgYjsKKyAgICAgIGlmIChw YXJzZV9jb2xvcl9zcGVjIChTU0RBVEEgKGJhY2tncm91bmQpLCAmciwgJmcsICZiKSkKKwliZ19y Z2IgPSBSR0IgKHIsIGIsIGIpOworICAgICAgZWxzZQorCXJldHVybiBRbmlsOworICAgICAgaWYg KHBhcnNlX2NvbG9yX3NwZWMgKFNTREFUQSAoZm9yZWdyb3VuZCksICZyLCAmZywgJmIpKQorCWZn X3JnYiA9IFJHQiAociwgYiwgYik7CisgICAgICBlbHNlCisJcmV0dXJuIFFuaWw7CisKKyAgICAg IC8qIFByZXBhcmUgYSBzdHJpbmcgZm9yIGRyYXdpbmcgYW5kIGFzIGFsdC10ZXh0LiAgKi8KKyAg ICAgIExpc3BfT2JqZWN0IGJhZGdlX3V0ZjggPSBFTkNPREVfVVRGXzggKGJhZGdlKTsKKyAgICAg IGludCB3aWRlX2xlbiA9IHBNdWx0aUJ5dGVUb1dpZGVDaGFyIChDUF9VVEY4LCAwLAorCQkJCQkg ICBTU0RBVEEgKGJhZGdlX3V0ZjgpLAorCQkJCQkgICAtMSwgTlVMTCwgMCk7CisgICAgICB3Y2hh cl90ICpiYWRnZV93ID0gYWxsb2NhICgod2lkZV9sZW4gKyAxKSAqIHNpemVvZiAod2NoYXJfdCkp OworICAgICAgcE11bHRpQnl0ZVRvV2lkZUNoYXIgKENQX1VURjgsIDAsIFNTREFUQSAoYmFkZ2Vf dXRmOCksIC0xLAorCQkJICAgIChMUFdTVFIpIGJhZGdlX3csCisJCQkgICAgd2lkZV9sZW4pOwor CisgICAgICAvKiBVc2UgdGhlIHNtYWxsIGljb24gc2l6ZSBXaW5kb3dzIHN1Z2dlc3RzIHRvIG5v dCBoYXJkIGNvZGUgMTZ4MTYuICAqLworICAgICAgaW50IGljb25fd2lkdGggPSBHZXRTeXN0ZW1N ZXRyaWNzIChTTV9DWFNNSUNPTik7CisgICAgICBpbnQgaWNvbl9oZWlnaHQgPSBHZXRTeXN0ZW1N ZXRyaWNzIChTTV9DWFNNSUNPTik7CisKKyAgICAgIEhEQyBod25kX2RjID0gR2V0REMgKGh3bmQp OworICAgICAgSERDIGRjID0gQ3JlYXRlQ29tcGF0aWJsZURDIChod25kX2RjKTsKKworICAgICAg QklUTUFQVjVIRUFERVIgYmk7CisgICAgICBtZW1zZXQgKCZiaSwgMCwgc2l6ZW9mIChiaSkpOwor ICAgICAgYmkuYlY1U2l6ZSA9IHNpemVvZiAoYmkpOworICAgICAgYmkuYlY1V2lkdGggPSBpY29u X3dpZHRoOworICAgICAgYmkuYlY1SGVpZ2h0ID0gLWljb25faGVpZ2h0OyAvKiBOZWdhdGl2ZSBm b3IgYSB0b3AtZG93biBESUIuICAqLworICAgICAgYmkuYlY1UGxhbmVzID0gMTsKKyAgICAgIGJp LmJWNUJpdENvdW50ID0gMzI7CisgICAgICBiaS5iVjVDb21wcmVzc2lvbiA9IEJJX0JJVEZJRUxE UzsgIC8qIEVuYWJsZSB0aGUgbWFza3MgYmVsb3cuICAqLworICAgICAgYmkuYlY1UmVkTWFzayAg ID0gIDB4MDBGRjAwMDA7CisgICAgICBiaS5iVjVHcmVlbk1hc2sgPSAgMHgwMDAwRkYwMDsKKyAg ICAgIGJpLmJWNUJsdWVNYXNrICA9ICAweDAwMDAwMEZGOworICAgICAgYmkuYlY1QWxwaGFNYXNr ID0gIDB4RkYwMDAwMDA7CisKKyAgICAgIERXT1JEICpiaXRtYXBfcGl4ZWxzOworICAgICAgSEJJ VE1BUCBiaXRtYXAgPSBDcmVhdGVESUJTZWN0aW9uIChkYywgKEJJVE1BUElORk8gKikgJmJpLAor CQkJCQkgRElCX1JHQl9DT0xPUlMsCisJCQkJCSAodm9pZCAqKikgJmJpdG1hcF9waXhlbHMsCisJ CQkJCSBOVUxMLCAwKTsKKyAgICAgIEhHRElPQkogb2xkX2JpdG1hcCA9IFNlbGVjdE9iamVjdChk YywgYml0bWFwKTsKKworICAgICAgLyogRHJhdyBhIGNpcmNsZSBmaWxsZWQgd2l0aCBiZy4gICov CisgICAgICBIQlJVU0ggYmdfYnJ1c2ggPSBDcmVhdGVTb2xpZEJydXNoIChiZ19yZ2IpOworICAg ICAgSEdESU9CSiBvbGRfYnJ1c2ggPSBTZWxlY3RPYmplY3QgKGRjLCBiZ19icnVzaCk7CisgICAg ICBFbGxpcHNlIChkYywgMCwgMCwgaWNvbl93aWR0aCwgaWNvbl9oZWlnaHQpOworICAgICAgU2Vs ZWN0T2JqZWN0IChkYywgb2xkX2JydXNoKTsKKyAgICAgIERlbGV0ZU9iamVjdCAoYmdfYnJ1c2gp OworCisgICAgICAvKiBEZXJpdmUgYSBmb250IHNjYWxlZCB0byBmaXQgdGhlIGljb24uICBGaXJz dCBmaW5kIHRoZSBzeXN0ZW0ncworCSBiYXNlIGZvbnQuICBUaGVuIHNjYWxlIGl0IHRvIGZpdCBp Y29uX2hlaWdodC4gICovCisgICAgICBIRk9OVCBiYXNlX2ZvbnQ7CisgICAgICBCT09MIGNsZWFu X3VwX2Jhc2VfZm9udCA9IEZBTFNFOworICAgICAgaWYgKHN5c3RlbV9wYXJhbWV0ZXJzX2luZm9f d19mbikKKwl7CisJICBOT05DTElFTlRNRVRSSUNTIG5jbTsKKwkgIG1lbXNldCAoJm5jbSwgMCwg c2l6ZW9mIChuY20pKTsKKwkgIG5jbS5jYlNpemUgPSBzaXplb2YgKG5jbSk7CisJICBTeXN0ZW1Q YXJhbWV0ZXJzSW5mbyAoU1BJX0dFVE5PTkNMSUVOVE1FVFJJQ1MsIHNpemVvZiAobmNtKSwgJm5j bSwgMCk7CisJICBiYXNlX2ZvbnQgPSBDcmVhdGVGb250SW5kaXJlY3QgKCZuY20ubGZTbUNhcHRp b25Gb250KTsKKwkgIGNsZWFuX3VwX2Jhc2VfZm9udCA9IFRSVUU7CisJfQorICAgICAgZWxzZQor CWJhc2VfZm9udCA9IChIRk9OVCkgR2V0U3RvY2tPYmplY3QgKERFRkFVTFRfR1VJX0ZPTlQpOwor ICAgICAgaWYgKGNsZWFuX3VwX2Jhc2VfZm9udCkKKwlEZWxldGVPYmplY3QgKGJhc2VfZm9udCk7 CisKKyAgICAgIExPR0ZPTlQgbGY7CisgICAgICBHZXRPYmplY3QgKGJhc2VfZm9udCwgc2l6ZW9m IChsZiksICZsZik7CisgICAgICBsZi5sZldlaWdodCA9IEZXX0JPTEQ7CisgICAgICBsZi5sZk91 dFByZWNpc2lvbiA9IE9VVF9PVVRMSU5FX1BSRUNJUzsKKyAgICAgIC8qIENsZWFyVHlwZSBxdWFs aXR5IG5lZWRzIG9wcWF1ZSwgYnV0IHdlIGRyYXcgdHJhbnNwYXJlbnQuICAqLworICAgICAgbGYu bGZRdWFsaXR5ID0gQU5USUFMSUFTRURfUVVBTElUWTsKKyAgICAgIC8qIE5lZ2F0aXZlIGxmSGVp Z2h0IGluZGljYXRlcyBwaXhlbCB1bml0cyB2cy4gcG9zaXRpdmUgaW4gcG9pbnRzLgorCSBVc2Ug dGhlIExPR1BJWEVMU1kgcHgvaW4gb2YgdGhlIHByaW1hcnkgbW9uaXRvci4gICovCisgICAgICBs Zi5sZkhlaWdodCA9IC1NdWxEaXYoaWNvbl9oZWlnaHQgLyAyLCAvKiBGaXQgfjMgY2hhcnMuICAq LworCQkJICAgIDcyLAorCQkJICAgIEdldERldmljZUNhcHMgKEdldERDIChOVUxMKSwgTE9HUElY RUxTWSkpOworICAgICAgLyogRW5zdXJlIGxmSGVpZ2h0IHBpeGVsIGludGVycHJldGF0aW9uLiAg Ki8KKyAgICAgIGludCBvbGRfbWFwX21vZGUgPSBTZXRNYXBNb2RlIChkYywgTU1fVEVYVCk7Cisg ICAgICBIRk9OVCBzY2FsZWRfZm9udCA9IENyZWF0ZUZvbnRJbmRpcmVjdCAoJmxmKTsKKyAgICAg IEhHRElPQkogb2xkX2ZvbnQgPSBTZWxlY3RPYmplY3QgKGRjLCBzY2FsZWRfZm9udCk7CisgICAg ICBTZXRNYXBNb2RlIChkYywgb2xkX21hcF9tb2RlKTsKKworICAgICAgLyogRHJhdyBiYWRnZSB0 ZXh0LiAgKi8KKyAgICAgIFNldEJrTW9kZSAoZGMsIFRSQU5TUEFSRU5UKTsKKyAgICAgIFNldFRl eHRDb2xvciAoZGMsIGZnX3JnYik7CisgICAgICBSRUNUIHJlY3Q7CisgICAgICByZWN0LmxlZnQg PSByZWN0LnRvcCA9IDA7CisgICAgICByZWN0LnJpZ2h0ID0gaWNvbl93aWR0aDsKKyAgICAgIHJl Y3QuYm90dG9tID0gaWNvbl9oZWlnaHQ7CisgICAgICBEcmF3VGV4dCAoZGMsIFNTREFUQSAoYmFk Z2VfdXRmOCksCisJCS0xLCAvKiBJbmRpY2F0ZSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLiAgKi8K KwkJJnJlY3QsCisJCURUX0NFTlRFUiB8IERUX1ZDRU5URVIgfCBEVF9TSU5HTEVMSU5FIHwgRFRf Tk9DTElQKTsKKyAgICAgIFNlbGVjdE9iamVjdCAoZGMsIG9sZF9mb250KTsKKyAgICAgIERlbGV0 ZU9iamVjdCAoc2NhbGVkX2ZvbnQpOworCisgICAgICAvKiBNYWtlIHRoZSBjaXJjbGUgYW5kIGl0 cyB0ZXh0IG9wYXF1ZSBieSBzZXR0aW5nIHRoZSBhbHBoYQorCSBjaGFubmVsIG9uIGVhY2ggcGl4 ZWwgZmFsbGluZyB3aXRoaW4gdGhlIGNpcmNsZS4gICovCisgICAgICBpbnQgY2lyY2xlX2NlbnRl cl94ID0gaWNvbl93aWR0aCAvIDI7CisgICAgICBpbnQgY2lyY2xlX2NlbnRlcl95ID0gaWNvbl9o ZWlnaHQgLyAyOworICAgICAgaW50IGNpcmNsZV9yYWRpdXMgPSAoaWNvbl93aWR0aCA8IGljb25f aGVpZ2h0CisJCQkgICA/IGljb25fd2lkdGgKKwkJCSAgIDogaWNvbl9oZWlnaHQpIC8gMiAtIDI7 CisgICAgICBpbnQgY2lyY2xlX3JhZGl1c19zcSA9IGNpcmNsZV9yYWRpdXMgKiBjaXJjbGVfcmFk aXVzOworICAgICAgRFdPUkQgKnBpeGVsOworICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBpY29u X2hlaWdodDsgKyt5KQorICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGljb25fd2lkdGg7ICsr eCkKKwkgIHsKKyAgICAgICAgICAgIGludCBkeCA9IHggLSBjaXJjbGVfY2VudGVyX3g7CisgICAg ICAgICAgICBpbnQgZHkgPSB5IC0gY2lyY2xlX2NlbnRlcl95OworICAgICAgICAgICAgaWYgKGR4 ICogZHggKyBkeSAqIGR5IDw9IGNpcmNsZV9yYWRpdXNfc3EpCisJICAgICAgeworCQkgIHBpeGVs ID0gYml0bWFwX3BpeGVscyArICh5ICogaWNvbl93aWR0aCArIHgpOworCQkgICpwaXhlbCB8PSAw eGZmMDAwMDAwOyAvKiBGbGlwIHRoZSAweEFBUlJHR0JCIGFscGhhIGNoYW5uZWwuICAqLworCSAg ICAgIH0KKwkgIH0KKworICAgICAgLyogRHVtbXkgbW9ub2Nocm9tZSBiaXRtYXAgbWFzaywgaWdu b3JlZCB3aGVuIHRoZSBjb2xvciBiaXRtYXAgaGFzCisJIGFuIGFscGhhIGNoYW5uZWwsIGJ1dCBu ZWVkZWQgdG8gc2F0aXNmeSBDcmVhdGVJY29uSW5kaXJlY3QuICAqLworICAgICAgSEJJVE1BUCBt YXNrX2JpdG1hcCA9IENyZWF0ZUJpdG1hcCAoaWNvbl93aWR0aCwgaWNvbl9oZWlnaHQsIDEsIDEs IE5VTEwpOworCisgICAgICAvKiBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvd2lu ZG93cy93aW4zMi9hcGkvd2ludXNlci9uZi13aW51c2VyLWNyZWF0ZWljb25pbmRpcmVjdAorCSBo Ym1NYXNrIGFuZCBoYm1Db2xvciBtZW1iZXJzIG9mIHRoZSBJQ09OSU5GTyBzdHJ1Y3R1cmUgc2hv dWxkCisJIG5vdCBhbHJlYWR5IGJlIHNlbGVjdGVkIGludG8gYSBkZXZpY2UgY29udGV4dC4gICov CisgICAgICBTZWxlY3RPYmplY3QgKGRjLCBvbGRfYml0bWFwKTsKKworICAgICAgSUNPTklORk8g aWNvbl9pbmZvOworICAgICAgbWVtc2V0ICgmaWNvbl9pbmZvLCAwLCBzaXplb2YgKGljb25faW5m bykpOworICAgICAgaWNvbl9pbmZvLmZJY29uID0gVFJVRTsKKyAgICAgIGljb25faW5mby5oYm1N YXNrID0gbWFza19iaXRtYXA7CisgICAgICBpY29uX2luZm8uaGJtQ29sb3IgPSBiaXRtYXA7CisK KyAgICAgIEhJQ09OIGljb24gPSBDcmVhdGVJY29uSW5kaXJlY3QgKCZpY29uX2luZm8pOworICAg ICAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5TZXRPdmVybGF5SWNvbiAodGFza19iYXJfbGlzdCwg aHduZCwgaWNvbiwgYmFkZ2Vfdyk7CisKKyAgICAgIERlc3Ryb3lJY29uIChpY29uKTsKKyAgICAg IERlbGV0ZU9iamVjdCAobWFza19iaXRtYXApOworICAgICAgRGVsZXRlT2JqZWN0IChiaXRtYXAp OworICAgICAgRGVsZXRlREMgKGRjKTsKKyAgICAgIFJlbGVhc2VEQyAoaHduZCwgaHduZF9kYyk7 CisgICAgfQorICBlbHNlCisgICAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5TZXRPdmVybGF5SWNv biAodGFza19iYXJfbGlzdCwgaHduZCwgTlVMTCwgTlVMTCk7CisKKyAgdGFza19iYXJfbGlzdC0+ bHBWdGJsLT5SZWxlYXNlKHRhc2tfYmFyX2xpc3QpOworICByZXR1cm4gUXQ7Cit9CisKK0RFRlVO ICgidzMyLXJlcXVlc3QtdXNlci1hdHRlbnRpb24iLAorICAgICAgIEZ3MzJfcmVxdWVzdF91c2Vy X2F0dGVudGlvbiwKKyAgICAgICBTdzMyX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24sCisgICAgICAg MSwgMSwgMCwKKyAgICAgICBkb2M6IC8qIEZsYXNoIHRoZSBzZWxlY3RlZCBmcmFtZSdzIHRhc2ti YXIgaWNvbiBhbmQvb3IgaXRzIHdpbmRvdy4KK0lmIFVSR0VOQ1kgaXMgbmlsLCBjYW5jZWwgdGhl IHJlcXVlc3QsIGlmIGFueS4gIElmIFVSR0VOQ1kgaXMgdGhlIHN5bWJvbAorYGluZm9ybWF0aW9u YWwnLCBmbGFzaCB0aGUgdGFza2JhciBpY29uLiAgSWYgVVJHRU5DWSBpcyB0aGUgc3ltYm9sCitg Y3JpdGljYWwnLCBmbGFzaCB0aGUgdGFza2JhciBpY29uIGFuZCB0aGUgZnJhbWUuICBXaW5kb3dz IHN0b3BzCitmbGFzaGluZyBpZiB0aGUgdXNlciBmb2N1c2VzIHRoZSBmcmFtZS4gIERvIG5vdGhp bmcgaWYgV2luZG93cyBkb2VzIG5vdAorc3VwcG9ydCBGbGFzaFdpbmRvd0V4IGFuZCByZXR1cm4g bmlsLCBvdGhlcndpc2UgcmV0dXJuIHQuICBEbyBub3RoaW5nIGlmCit0aGUgZnJhbWUgaXMgbm90 ICh5ZXQpIGFzc29jaWF0ZWQgd2l0aCBhIHdpbmRvdyBoYW5kbGUuICAqLykKKyAgKExpc3BfT2Jq ZWN0IHVyZ2VuY3kpCit7CisgIGlmIChmbGFzaF93aW5kb3dfZXhfZm4gPT0gTlVMTCkKKyAgICBy ZXR1cm4gUW5pbDsKKworICBzdHJ1Y3QgZnJhbWUgKnNmID0gU0VMRUNURURfRlJBTUUgKCk7Cisg IEhXTkQgaHduZCA9IE5VTEw7CisKKyAgaWYgKEZSQU1FX1czMl9QIChzZikgJiYgRlJBTUVfTElW RV9QIChzZikpCisgICAgaHduZCA9IEZSQU1FX1czMl9XSU5ET1cgKHNmKTsKKworICBpZiAoaHdu ZCA9PSBOVUxMKQorICAgIHJldHVybiBRbmlsOworCisgIEZMQVNIV0lORk8gZmxhc2hfaW5mbzsK KyAgZmxhc2hfaW5mby5jYlNpemUgPSBzaXplb2YoZmxhc2hfaW5mbyk7CisgIGZsYXNoX2luZm8u dUNvdW50ID0gMDsKKyAgZmxhc2hfaW5mby5kd1RpbWVvdXQgPSAwOworICBmbGFzaF9pbmZvLmh3 bmQgPSBod25kOworICBpZiAoIU5JTFAgKHVyZ2VuY3kpICYmIFNZTUJPTFAgKHVyZ2VuY3kpKQor ICAgIHsKKyAgICAgIC8qIFRoZSBpbnRlbmRlZCBjYWxsZXIsICdzeXN0ZW0tdGFza2Jhci1hdHRl bnRpb24nLCBoYXMgYW4KKwkgb3B0aW9uYWwgdGltZXIgdG8gY2xlYXIgdGhlIGF0dGVudGlvbiBp bmRpY2F0b3Igc28gdGhpcyB3aWxsCisJIGZsYXNoIHVudGlsIGNsZWFyZWQgdmlhIHRoZSB0aW1l ciwgb3IgdGhlIHdpbmRvdyBjb21lcyB0byB0aGUKKwkgZm9yZWdyb3VuZC4gIEZvciBpbmZvcm1h dGlvbmFsIGF0dGVudGlvbiwgZmxhc2ggdGhlIHRyYXkgaWNvbi4KKwkgRm9yIGNyaXRpY2FsIGF0 dGVudGlvbiwgZmxhc2ggdGhlIHRyYXkgaWNvbiBhbmQgdGhlIHdpbmRvdy4gICovCisgICAgICBp ZiAoRVEgKHVyZ2VuY3ksIFFpbmZvcm1hdGlvbmFsKSkKKwlmbGFzaF9pbmZvLmR3RmxhZ3MgPSBG TEFTSFdfVFJBWSB8IEZMQVNIV19USU1FUk5PRkc7CisgICAgICBlbHNlIGlmIChFUSAodXJnZW5j eSwgUWNyaXRpY2FsKSkKKwlmbGFzaF9pbmZvLmR3RmxhZ3MgPSBGTEFTSFdfQUxMIHwgRkxBU0hX X1RJTUVSTk9GRzsKKyAgICB9CisgIGVsc2UKKyAgICBmbGFzaF9pbmZvLmR3RmxhZ3MgPSBGTEFT SFdfU1RPUDsKKworICBmbGFzaF93aW5kb3dfZXhfZm4gKCZmbGFzaF9pbmZvKTsKKyAgcmV0dXJu IFF0OworfQorCitERUZVTiAoInczMi1wcm9ncmVzcy1pbmRpY2F0b3IiLAorICAgICAgIEZ3MzJf cHJvZ3Jlc3NfaW5kaWNhdG9yLAorICAgICAgIFN3MzJfcHJvZ3Jlc3NfaW5kaWNhdG9yLAorICAg ICAgIDEsIDEsIDAsCisgICAgICAgZG9jOiAvKiBTaG93IGEgcHJvZ3Jlc3MgYmFyIG9uIHRoZSBz ZWxlY3RlZCBmcmFtZSdzIHRhc2tiYXIgaWNvbi4KK1BST0dSRVNTIGlzIGEgZmxvYXQgaW4gdGhl IHJhbmdlIDAuMCB0byAxLjAuICBJZiBQUk9HUkVTUyBpcyBuaWwsIHJlbW92ZQordGhlIHByb2dy ZXNzIGluZGljYXRvci4gIERvIG5vdGhpbmcgaWYgV2luZG93cyBkb2VzIG5vdCBzdXBwb3J0IHRo ZQorSVRhc2tiYXJMaXN0MyBpbnRlcmZhY2UgYW5kIHJldHVybiBuaWwsIG90aGVyd2lzZSByZXR1 cm4gdC4gIERvIG5vdGhpbmcKK2lmIHRoZSBzZWxlY3RlZCBmcmFtZSBpcyBub3QgKHlldCkgYXNz b2NpYXRlZCB3aXRoIGEgd2luZG93IGhhbmRsZSAgKi8pCisgIChMaXNwX09iamVjdCBwcm9ncmVz cykKK3sKKyAgc3RydWN0IGZyYW1lICpzZiA9IFNFTEVDVEVEX0ZSQU1FICgpOworICBIV05EIGh3 bmQgPSBOVUxMOworCisgIGlmIChGUkFNRV9XMzJfUCAoc2YpICYmIEZSQU1FX0xJVkVfUCAoc2Yp KQorICAgIGh3bmQgPSBGUkFNRV9XMzJfV0lORE9XIChzZik7CisKKyAgaWYgKGh3bmQgPT0gTlVM TCkKKyAgICByZXR1cm4gUW5pbDsKKworICBDb0luaXRpYWxpemUgKE5VTEwpOworICBJVGFza2Jh ckxpc3QzICp0YXNrX2Jhcl9saXN0ID0gTlVMTDsKKyAgSFJFU1VMVCByID0gQ29DcmVhdGVJbnN0 YW5jZSgmQ0xTSURfVGFza2Jhckxpc3QsCisJCQkgICAgICAgTlVMTCwKKwkJCSAgICAgICBDTFND VFhfSU5QUk9DX1NFUlZFUiwKKwkJCSAgICAgICAmSUlEX0lUYXNrYmFyTGlzdDMsCisJCQkgICAg ICAgKHZvaWQgKiopJnRhc2tfYmFyX2xpc3QpOworICBpZiAociAhPSBTX09LKQorICAgIHJldHVy biBRbmlsOworCisgIC8qIFNjYWxlIHRhc2sgYmFyIHByb2dyZXNzIGZyb20gMC4wLTEuMCB0byAw LTEwMC4gICovCisgIFVMT05HTE9ORyBhZGpfcHJvZ3Jlc3MgPSAwOworICBpZiAoIU5JTFAgKHBy b2dyZXNzKSAmJiBGTE9BVFAgKHByb2dyZXNzKSkKKyAgICAgIGFkal9wcm9ncmVzcyA9IChVTE9O R0xPTkcpICgxMDAuMCAqCisJCQkJICBYRkxPQVRfREFUQSAocHJvZ3Jlc3MpKTsKKyAgaWYgKGFk al9wcm9ncmVzcyA+IDApCisgICAgeworICAgICAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5TZXRQ cm9ncmVzc1N0YXRlICh0YXNrX2Jhcl9saXN0LAorCQkJCQkgICAgICAgaHduZCwgVEJQRl9OT1JN QUwpOworICAgICAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5TZXRQcm9ncmVzc1ZhbHVlICh0YXNr X2Jhcl9saXN0LAorCQkJCQkgICAgICAgaHduZCwgYWRqX3Byb2dyZXNzLCAxMDApOworICAgIH0K KyAgZWxzZQorICAgIHsKKyAgICAgIHRhc2tfYmFyX2xpc3QtPmxwVnRibC0+U2V0UHJvZ3Jlc3NT dGF0ZSAodGFza19iYXJfbGlzdCwKKwkJCQkJICAgICAgIGh3bmQsIFRCUEZfTk9QUk9HUkVTUyk7 CisgICAgfQorCisgIHRhc2tfYmFyX2xpc3QtPmxwVnRibC0+UmVsZWFzZSh0YXNrX2Jhcl9saXN0 KTsKKyAgcmV0dXJuIFF0OworfQorCisjZW5kaWYgLyogV0lORE9XU05UICovCisKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgogCQkJICAgIEluaXRpYWxpemF0aW9uCiAgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0xMTUx MSw2ICsxMTgyNiwxNSBAQCBzeW1zX29mX3czMmZucyAodm9pZCkKICAgREVGU1lNIChRY2Fwc2xv Y2ssICJjYXBzbG9jayIpOwogICBERUZTWU0gKFFrcF9udW1sb2NrLCAia3AtbnVtbG9jayIpOwog ICBERUZTWU0gKFFzY3JvbGwsICJzY3JvbGwiKTsKKworICAjaWZkZWYgV0lORE9XU05UCisgIC8q IFRhc2tiYXIgaW5kaWNhdG9ycyBzdXBwb3J0LiAgKi8KKyAgZGVmc3ViciAoJlN3MzJfYmFkZ2Up OworICBkZWZzdWJyICgmU3czMl9wcm9ncmVzc19pbmRpY2F0b3IpOworICBkZWZzdWJyICgmU3cz Ml9yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uKTsKKyAgREVGU1lNIChRaW5mb3JtYXRpb25hbCwgImlu Zm9ybWF0aW9uYWwiKTsKKyAgREVGU1lNIChRY3JpdGljYWwsICJjcml0aWNhbCIpOworICAjZW5k aWYKIH0KIAogDApAQCAtMTE3OTksNiArMTIxMjMsOSBAQCBnbG9iYWxzX29mX3czMmZucyAodm9p ZCkKICAgU2V0R2VzdHVyZUNvbmZpZ19mbgogICAgID0gKFNldEdlc3R1cmVDb25maWdfcHJvYykg Z2V0X3Byb2NfYWRkciAodXNlcjMyX2xpYiwKIAkJCQkJICAgICAiU2V0R2VzdHVyZUNvbmZpZyIp OworICBmbGFzaF93aW5kb3dfZXhfZm4KKyAgICA9IChGbGFzaFdpbmRvd0V4X1Byb2MpIGdldF9w cm9jX2FkZHIgKHVzZXIzMl9saWIsCisJCQkJCSAgIkZsYXNoV2luZG93RXgiKTsKIAogICB7CiAg ICAgSE1PRFVMRSBpbW0zMl9saWIgPSBHZXRNb2R1bGVIYW5kbGUgKCJpbW0zMi5kbGwiKTsKZGlm ZiAtLWdpdCBhL3N5c3RlbS10YXNrYmFyLnRleGkgYi9zeXN0ZW0tdGFza2Jhci50ZXhpCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mOWU5MjBkNjkxYwotLS0gL2Rldi9u dWxsCisrKyBiL3N5c3RlbS10YXNrYmFyLnRleGkKQEAgLTAsMCArMSwyNTQgQEAKK1xpbnB1dCB0 ZXhpbmZvICAgIEBjIC0qLXRleGluZm8tKi0KKworQHNldGZpbGVuYW1lIC4uLy4uL2luZm8vZG9j ay1tb2RlLmluZm8KK0BzZXR0aXRsZSBTeXN0ZW0gR1VJIFRhc2tiYXIgRmVhdHVyZXMKK0BpbmNs dWRlIGRvY3N0eWxlLnRleGkKKworQGNvcHlpbmcKK1RoaXMgZmlsZSBkZXNjcmliZXMgRW1hY3Mg c3lzdGVtIEdVSSB0YXNrYmFyIGludGVncmF0aW9uLgorCitDb3B5cmlnaHQgQGNvcHlyaWdodHt9 IDIwMjUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK0BxdW90YXRpb24KK1Blcm1p c3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhpcyBk b2N1bWVudAordW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExp Y2Vuc2UsIFZlcnNpb24gMS4zIG9yCithbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2l0aCBubworSW52YXJpYW50IFNlY3Rpb25zLCB3 aXRoIHRoZSBGcm9udC1Db3ZlciBUZXh0cyBiZWluZyBgYEEgR05VIE1hbnVhbCwnJworYW5kIHdp dGggdGhlIEJhY2stQ292ZXIgVGV4dHMgYXMgaW4gKGEpIGJlbG93LiAgQSBjb3B5IG9mIHRoZSBs aWNlbnNlIGlzCitpbmNsdWRlZCBpbiB0aGUgc2VjdGlvbiBlbnRpdGxlZCBgYEdOVSBGcmVlIERv Y3VtZW50YXRpb24gTGljZW5zZScnLgorCisoYSkgVGhlIEZTRidzIEJhY2stQ292ZXIgVGV4dCBp czogYGBZb3UgaGF2ZSB0aGUgZnJlZWRvbSB0byBjb3B5IGFuZAorbW9kaWZ5IHRoaXMgR05VIG1h bnVhbC4nJworQGVuZCBxdW90YXRpb24KK0BlbmQgY29weWluZworCitAZGlyY2F0ZWdvcnkgRW1h Y3MgbWlzYyBmZWF0dXJlcworQGRpcmVudHJ5CisqIFN5c3RlbSBHVUkgVGFza2JhcjogKHRhc2ti YXIpLiAgICAgICBTeXN0ZW0gR1VJIHRhc2tiYXIgaW50ZWdyYXRpb24uCitAZW5kIGRpcmVudHJ5 CisKK0B0aXRsZXBhZ2UKK0B0aXRsZSBTeXN0ZW0gR1VJIFRhc2tiYXIgSW50ZWdyYXRpb24KK0Bw YWdlCitAdnNraXAgMHB0IHBsdXMgMWZpbGxsCitAaW5zZXJ0Y29weWluZworQGVuZCB0aXRsZXBh Z2UKKworQGNvbnRlbnRzCisKK0BpZm5vdHRleAorQG5vZGUgVG9wCitAdG9wIEVtYWNzIFN5c3Rl bSBHVUkgVGFza2JhciBJbnRlZ3JhdGlvbgorVGhpcyBtYW51YWwgZGVzY3JpYmVzIEVtYWNzIHN5 c3RlbSBHVUkgdGFza2JhciBpbnRlZ3JhdGlvbi4KKworVGhlIEBkZm57c3lzdGVtLXRhc2tiYXJ9 IHBhY2thZ2UgYWRkcyBFbWFjcyBpbnRlZ3JhdGlvbiB3aXRoIHN5c3RlbSBHVUkKK3Rhc2tiYXIg KGFsc28gY2FsbGVkIGRvY2tzIG9yIGxhdW5jaGVycyBvciBzb21ldGhpbmcgc2ltaWxhcikgdG8g ZGlzcGxheQorYSB0YXNrYmFyIGljb24gImJhZGdlIiBvdmVybGF5LCBhIHByb2dyZXNzIGJhciBy ZXBvcnQgb3ZlcmxheSwgYWxlcnQgdGhlCit1c2VyIHRoYXQgYW4gRW1hY3Mgc2Vzc2lvbiBuZWVk cyBhdHRlbnRpb24sIG9mdGVuIGJ5IGZsYXNoaW5nIG9yCitib3VuY2luZyB0aGUgRW1hY3MgYXBw bGljYXRpb24gaWNvbi4gIFRhc2tiYXIgY2FwYWJsZSBzeXN0ZW1zIGFyZQorR05VL0xpbnV4IHZp YSBELUJ1cywgbWFjT1MvR05Vc3RlcCAxMC41KywgTVMtV2luZG93cyA3Ky4KKworT24gR05VL0xp bnV4LCB0aGUgdmlzaWJsZSBlZmZlY3RzIHdpbGwgYXBwZWFyIG9uIHRoZSBkZXN0aW5hdGlvbnMK K2RldGVybWluZWQgYnkgeW91ciBzaGVsbCBleHRlbnNpb24sIG1vc3Qgb2Z0ZW4gdGhlIGFwcGxp Y2F0aW9uIGxhdW5jaGVyCitvciBkb2NrIHBhbmVsLCBvciB0aGUgdG9wIHBhbmVsLiAgRWZmZWN0 cyBhcmUgZ2xvYmFsIGZvciBhbiBFbWFjcworaW5zdGFuY2UuCisKK09uIG1hY09TL0dOVXN0ZXAs IHRoZSBlZmZlY3RzIHdpbGwgYXBwZWFyIG9uIHRoZSBEb2NrIGFuZCBpbiB0aGUgQXBwCitTd2l0 Y2hlci4gIEVmZmVjdHMgYXJlIGdsb2JhbCBmb3IgYW4gRW1hY3MgaW5zdGFuY2UuCisKK09uIE1T LVdpbmRvd3MsIHRoZSBlZmZlY3RzIGFwcGVhciBvbiB0aGUgdGFza2Jhci4gIEVmZmVjdHMgYXJl Cithc3NvY2lhdGVkIHdpdGggdGhlIGZyYW1lIGZyb20gd2hpY2ggdGhleSBhcmUgaW5pdGlhdGVk LgorCitAaW5zZXJ0Y29weWluZworCitAbWVudQorKiBPdmVydmlldzo6ICAgICAgICAgICAgICAg ICAgICBPdmVydmlldyBvZiBzeXN0ZW0gR1VJIHRhc2tiYXIgaW50ZWdyYXRpb24KKyogUHJlcmVx dWlzaXRlczo6CisqIFVzZXIgT3B0aW9uczo6CisqIEZ1bmN0aW9uIFJlZmVyZW5jZTo6CisqIFN5 c3RlbSBUYXNrYmFyIFVzYWdlIEV4YW1wbGVzOjoKKyogR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBM aWNlbnNlOjogIFRoZSBsaWNlbnNlIGZvciB0aGlzIGRvY3VtZW50YXRpb24uCisqIEZ1bmN0aW9u IEluZGV4OjoKKyogVmFyaWFibGUgSW5kZXg6OgorQGVuZCBtZW51CitAZW5kIGlmbm90dGV4CisK K0Bub2RlIE92ZXJ2aWV3CitAY2hhcHRlciBPdmVydmlldworCitUaGUgU3lzdGVtIFRhc2tiYXIg cGFja2FnZSBwcm92aWRlcyB0aGVzZSBzeXN0ZW0gR1VJIHRhc2tiYXIgZmVhdHVyZXM6CisKK0Bp dGVtaXplIEBidWxsZXQKK0BpdGVtIEljb24gYmFkZ2UKK0BpdGVtIEljb24gcHJvZ3Jlc3MgaW5k aWNhdG9yCitAaXRlbSBJY29uIGF0dGVudGlvbiBhbGVydAorQGVuZCBpdGVtaXplCisKK0Bub2Rl IFByZXJlcXVpc2l0ZXMKK0BjaGFwdGVyIFByZXJlcXVpc2l0ZXMKKworbWFjT1MvR05Vc3RlcCwg YW5kIE1TLVdpbmRvd3MgdXNlcnMgbmVlZCBubyBzcGVjaWFsIGNvbmZpZ3VyYXRpb24uCisKK09u IEdOVS9MaW51eCBzeXN0ZW1zLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgdmlhIEQtQnVzIHRvIGNv bnRyb2wgR1VJCitzaGVsbHMgYW5kL29yIHNoZWxsIGV4dGVuc2lvbnMgc3VjaCBhcworQGZpbGV7 aHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vMzA3L2Rhc2gtdG8tZG9jay99 IHRoYXQKK2ltcGxlbWVudCBVYnVudHUncyBVbml0eSBsYXVuY2hlciBzcGVjIHdoaWNoIHlvdSBj YW4gcmVhZCBtb3JlIGFib3V0CitoZXJlIEBmaWxle2h0dHBzOi8vd2lraS51YnVudHUuY29tL1Vu aXR5L0xhdW5jaGVyQVBJfS4KKworQG5vZGUgVXNlciBPcHRpb25zCitAY2hhcHRlciBVc2VyIE9w dGlvbnMKKworQGRlZm9wdCBzeXN0ZW0tdGFza2Jhci11c2UtcHJvZ3Jlc3MtcmVwb3J0ZXIKK1Ro ZSB2YXJpYWJsZSBAY29kZXtzeXN0ZW0tdGFza2Jhci11c2UtcHJvZ3Jlc3MtcmVwb3J0ZXJ9IGlz IHVzZWQgdG8KK3N1cHBsZW1lbnQgYnVpbHQtaW4gcHJvZ3Jlc3MgcmVwb3J0cyB3aXRoIEdVSSB0 YXNrYmFyIGljb24gcHJvZ3Jlc3MgYmFycworaW4gYWRkaXRpb24gdG8gdGhlIGRlZmF1bHQgZWNo byBhcmVhIHJlcG9ydHMuICBJdCBkZWZhdWx0cyB0byBAY29kZXt0fS4KKysrKyBAeHJlZntQcm9n cmVzcywsIERpc3BsYXksIGVsaXNwLCBUaGUgRW1hY3MgTGlzcCBSZWZlcmVuY2UgTWFudWFsfS4K K0BlbmQgZGVmb3B0CisKK0BkZWZvcHQgc3lzdGVtLXRhc2tiYXItY2xlYXItYXR0ZW50aW9uLW9u LWZyYW1lLWZvY3VzCitUaGUgdmFyaWFibGUgQGNvZGV7c3lzdGVtLXRhc2tiYXItY2xlYXItYXR0 ZW50aW9uLW9uLWZyYW1lLWZvY3VzfSBjYW4gYmUKK2N1c3RvbWl6ZWQgdG8gY2xlYXIgdGhlIHRh c2tiYXIgaWNvbiBhdHRlbnRpb24gaW5kaWNhdG9yIHdoZW4gYW55IEVtYWNzCitHVUkgZnJhbWUg aXMgZm9jdXNlZC4gIFRoaXMgaXMgaW1wbGVtZW50ZWQgZm9yIEdOVS9MaW51eCwgYW5kIGlzIGln bm9yZWQKK29uIE1TLVdpbmRvd3MgYW5kIG1hY09TL0dOVXN0ZXAgd2hpY2ggYXV0b21hdGljYWxs eSBjbGVhciB0aGUgYXR0ZW50aW9uCitpbmRpY2F0b3IuICBJdCBkZWZhdWx0cyB0byBAY29kZXt0 fS4gIEN1c3RvbWl6ZSB0aGlzIGJlZm9yZSBlbmFibGluZworQGNvZGV7c3lzdGVtLXRhc2tiYXIt bW9kZX0uCitAZW5kIGRlZm9wdAorCitAZGVmb3B0IHN5c3RlbS10YXNrYmFyLWRidXMtZGVza3Rv cC1maWxlLW5hbWUKK1RoZSB2YXJpYWJsZSBAY29kZXtzeXN0ZW0tdGFza2Jhci1kYnVzLWRlc2t0 b3AtZmlsZS1uYW1lfSBpcyBjb25zdWx0ZWQKK29uIEdOVS9MaW51eCBELUJ1cyBzeXN0ZW1zLCBh bmQgY2FuIGJlIGN1c3RvbWl6ZWQgdG8gaW5kaWNhdGUgd2hpY2gKK2Rlc2t0b3AgZmlsZSBuYW1l IGlkZW50aWZpZXMgeW91ciBFbWFjcyBpbnN0YW5jZS4gIEl0IGRlZmF1bHRzIHRvIHRoZQorZGVz a3RvcCBmaWxlIGJhc2UgbmFtZSBAY29kZXsiZW1hY3NjbGllbnQifSBhbmQgbWlnaHQgbmVlZCB0 byBiZSBzZXQgdG8KK0Bjb2RleyJlbWFjcyJ9IG9uIHlvdXIgc3lzdGVtLiAgRW1hY3MgaW5zdGFs bGVkIGJ5IExpbnV4IGRpc3RyaWJ1dGlvbnMKK2NhbiB2YXJ5IG9uIHRoZWlyIG5hbWluZyBzY2hl bWUgYW5kIG9mdGVuIGluY2x1ZGUgZGVza3RvcCBmaWxlcyBmb3IKK2JvdGguCitAZW5kIGRlZm9w dAorCitAZGVmb3B0IHN5c3RlbS10YXNrYmFyLWRidXMtdGltZW91dAorVGhlIHZhcmlhYmxlIEBj b2Rle3N5c3RlbS10YXNrYmFyLWRidXMtdGltZW91dH0gaXMgY29uc3VsdGVkIG9uCitHTlUvTGlu dXggRC1CdXMgc3lzdGVtcywgYW5kIGNhbiBiZSBjdXN0b21pemVkIHRvIHNwZWNpZnkgdGhlIG51 bWJlciBvZgorbWlsbGlzZWNvbmRzIEVtYWNzIHdpbGwgd2FpdCBmb3IgRC1CdXMgcmVzcG9uc2Vz IGJlZm9yZSB0aW1pbmcgb3V0IGFuZAorY29uc2lkZXJpbmcgbWVzc2FnZXMgdW5kZWxpdmVyYWJs ZS4gIEl0IGRlZmF1bHRzIHRvIG5pbCB3aGljaCB3aWxsIHVzZQordGhlIEQtQnVzIHBhY2thZ2Ug ZGVmYXVsdCBvZiAyNTAwMCBtaWxsaXNlY29uZHMsIHdoaWNoIHNlZSwKK0BweHJlZntUb3AsLCwg ZGJ1cywgRC1CdXMgaW50ZWdyYXRpb24gaW4gRW1hY3N9LgorQGVuZCBkZWZvcHQKKworQG5vZGUg RnVuY3Rpb24gUmVmZXJlbmNlCitAY2hhcHRlciBGdW5jdGlvbiBSZWZlcmVuY2UKKworQGRlZmZu IHN5c3RlbS10YXNrYmFyLW1vZGUKK0Bjb2Rle3N5c3RlbS10YXNrYmFyLW1vZGV9IG11c3QgYmUg ZW5hYmxlZCB0byBpbml0aWFsaXplIHRoZSBzeXN0ZW0gYmFjaworZW5kIGJlZm9yZSBjYWxsaW5n IGFueSBvZiB0aGlzIHBhY2thZ2UncyBmdW5jdGlvbnMuICBPbiBhIEdOVS9MaW51eAorRC1CdXMg c3lzdGVtLCB0aGUgcmVxdWlyZWQgRC1CdXMgcHJvdG9jb2wgaXMgcHJvYmVkIGFuZCBpZiBub3QK K2F2YWlsYWJsZSwgYW4gZXJyb3IgaXMgc2lnbmFsZWQuCitAZW5kIGRlZmZuCisKK0BkZWZ1biBz eXN0ZW0tdGFza2Jhci1iYWRnZSAmb3B0aW9uYWwgY291bnQKK0Rpc3BsYXkgdGhlIHRhc2tiYXIg aWNvbiBiYWRnZSBzZXQgdG8gQHZhcntjb3VudH0uICBJZiBAdmFye2NvdW50fSBpcworQGNvZGV7 bmlsfSwgY2xlYXIgdGhlIGJhZGdlLiAgQHZhcntjb3VudH0gaXMgdHlwaWNhbGx5IGFuIGludGVn ZXIuCisKK0lmIEB2YXJ7Y291bnR9IGlzIGEgc3RyaW5nLCBpdCBpcyBjb252ZXJ0ZWQgdG8gYW4g aW50ZWdlciBvbiBzeXN0ZW1zCit0aGF0IGRvIG5vdCBzdXBwb3J0IHN0cmluZyBiYWRnZXMsIHN1 Y2ggYXMgR05VL0xpbnV4IEQtQnVzLCBhbmQgdGhlCitiYWRnZSB3aWxsIGJlIGNsZWFyZWQgaWYg dGhlIHN0cmluZyBpcyBhbiBpbnZhbGlkIGludGVnZXIKK3JlcHJlc2VudGF0aW9uLiAgT24gc3lz dGVtcyB0aGF0IHN1cHBvcnQgc3RyaW5ncywgc3VjaCBhcyBtYWNPUy9HTlVzdGVwCithbmQgTVMt V2luZG93cywgdGhlIGJhZGdlIGlzIHNldCB0byB0aGUgc3RyaW5nIGFuZCBkaXNwbGF5ZWQsIGFu ZCBtYXkgYmUKK3RydW5jYXRlZCB0byBmaXQgdGhlIHZpc3VhbCBzcGFjZSBhbGxvY2F0ZWQgYnkg dGhlIHN5c3RlbS4gIEluIGFueSBjYXNlLAoraWYgdGhlIHN0cmluZyBpcyBlbXB0eSwgY2xlYXIg dGhlIGJhZGdlLgorQGVuZCBkZWZ1bgorCitAZGVmdW4gc3lzdGVtLXRhc2tiYXItYXR0ZW50aW9u ICZvcHRpb25hbCB1cmdlbmN5IHRpbWVvdXQKK0Rpc3BsYXkgYSB0YXNrYmFyIGljb24gYWxlcnQu ICBUaGlzIHdpbGwgcmVzdWx0IGluIGEgYm91bmNpbmcgb3IKK2ZsYXNoaW5nIHRhc2tiYXIgaWNv bi4gIE9uIHNvbWUgYmFjayBlbmRzLCBhdHRlbnRpb24gd2lsbCBiZSBkaXNwbGF5ZWQKK29ubHkg aWYgRW1hY3MgaXMgbm90IHRoZSBjdXJyZW50bHkgZm9jdXNlZCBhcHBsaWNhdGlvbi4KKworSWYg QHZhcnt1cmdlbmN5fSBpcyB0aGUgc3ltYm9sIEBjb2Rle2luZm9ybWF0aW9uYWx9LCBub3JtYWwg YXR0ZW50aW9uIGlzCityZXF1ZXN0ZWQuICBJZiBAdmFye3VyZ2VuY3l9IGlzIHRoZSBzeW1ib2wg QGNvZGV7Y3JpdGljYWx9LCB1cmdlbnQKK2F0dGVudGlvbiBpcyByZXF1ZXN0ZWQuICBJZiBAdmFy e3VyZ2VudH0gaXMgQGNvZGV7bmlsfSwgY2xlYXIgdGhlCithdHRlbnRpb24gaW5kaWNhdG9yLgor CitFbWFjcyB3YWl0cyBAdmFye3RpbWVvdXR9IHNlY29uZHMgYmVmb3JlIGF1dG9tYXRpY2FsbHkg cmVtb3ZpbmcgdGhlCitpbmRpY2F0b3IuICBJZiBAdmFye3RpbWVvdXR9IGlzIEBjb2Rle25pbH0s IHRoZSBhdHRlbnRpb24gaW5kaWNhdG9yIHdpbGwKK2JlIGNsZWFyZWQgYnkgdGhlIHN5c3RlbSBv ciBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gYWdhaW4gcGFzc2luZyBhCitAY29kZXtuaWx9IHVy Z2VuY3kuCisKK09uIHNvbWUgYmFjayBlbmRzLCBhbiBAY29kZXtpbmZvcm1hdGlvbmFsfSBhdHRl bnRpb24gcmVxdWVzdCB3aWxsIHRpbWUKK291dCBhdXRvbWF0aWNhbGx5LiAgSW4gY29udHJhc3Qs IGEgQGNvZGV7Y3JpdGljYWx9IHJlcXVlc3QgcmVxdWlyZXMgdGhhdAordGhlIHVzZXIgYnJpbmcg RW1hY3MgaW50byBmb2N1cyBhbmQgd2lsbCBub3QgdGltZSBvdXQuICBPbiBzb21lIGJhY2sKK2Vu ZHMsIEBjb2Rle2NyaXRpY2FsfSBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIEBjb2Rle2luZm9ybWF0 aW9uYWx9LgorQGVuZCBkZWZ1bgorCitAZGVmdW4gc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MgJm9w dGlvbmFsIHByb2dyZXNzCitTZXQgdGhlIHRhc2tiYXIgaWNvbiB0byBpbmRpY2F0ZSBwcm9ncmVz cyBvZiBhIGxvbmctcnVubmluZyBvcGVyYXRpb24uCitUYXNrYmFyIHByb2dyZXNzIGlzIHR5cGlj YWxseSByZXByZXNlbnRlZCBhcyBhIGdyYXBoaWNhbCBiYXIgdGhhdAorZnJhY3Rpb25hbGx5IHNw YW5zIHRoZSB0YXNrYmFyIGljb24uICBAdmFye3Byb2dyZXNzfSBpcyBhIGZsb2F0IGluIHRoZQor cmFuZ2UgMC4wIHRvIDEuMC4gIElmIEB2YXJ7cHJvZ3Jlc3N9IGlzIG5pbCwgcmVtb3ZlIHRoZSBw cm9ncmVzcworaW5kaWNhdG9yLiAgVGhlIGJ1aWx0LWluIHByb2dyZXNzIHJlcG9ydGVyIHNob3Vs ZCBiZSBwcmVmZXJyZWQgb3ZlcgorbWFudWFsbHkgaW5kaWNhdGluZyBwcm9ncmVzcy4KKysrKwor QHhyZWZ7UHJvZ3Jlc3MsLCBEaXNwbGF5LCBlbGlzcCwgVGhlIEVtYWNzIExpc3AgUmVmZXJlbmNl IE1hbnVhbH0uCitAZW5kIGRlZnVuCisKK0Bub2RlIFN5c3RlbSBUYXNrYmFyIFVzYWdlIEV4YW1w bGVzCitAY2hhcHRlciBTeXN0ZW0gVGFza2JhciBVc2FnZSBFeGFtcGxlcworCitAbGlzcAorQGdy b3VwCis7OyBFbmFibGUgYW5kIGluaXRpYWxpemUgc3lzdGVtLXRhc2tiYXItbW9kZSBiZWZvcmUg Y2FsbGluZyBpdHMKKzs7IGNvbXBhbmlvbiBmdW5jdGlvbnMuCisoc3lzdGVtLXRhc2tiYXItbW9k ZSkKKworOzsgRGlzcGxheSBhIGJhZGdlIG9uIHRoZSB0YXNrYmFyIGljb24uCisoc3lzdGVtLXRh c2tiYXItYmFkZ2UgZW1hY3MtbWFqb3ItdmVyc2lvbikKKyhzeXN0ZW0tdGFza2Jhci1iYWRnZSAi MzEiKSA7IGNvbnZlcnRlZCB0byBpbnRlZ2VyIG9uIEdOVS9MaW51eAorKHN5c3RlbS10YXNrYmFy LWJhZGdlICJUZXN0IikgOyB3b3JrcyBvbiBtYWNPUy9HTlVzdGVwIGFuZCBNUy1XaW5kb3dzCisK Kzs7IENsZWFyIHRoZSBiYWRnZS4KKyhzeXN0ZW0tdGFza2Jhci1iYWRnZSBuaWwpCis7OyBPciBq dXN0Cisoc3lzdGVtLXRhc2tiYXItYmFkZ2UpCitAZW5kIGdyb3VwCisKK0Bncm91cAorOzsgR2V0 IHRoZSB1c2VyJ3MgYXR0ZW50aW9uLgorKHN5c3RlbS10YXNrYmFyLWF0dGVudGlvbiAnaW5mb3Jt YXRpb25hbCAzKSA7IGNsZWFyIHRoZSByZXF1ZXN0IGFmdGVyIDMgc2Vjb25kcworKHN5c3RlbS10 YXNrYmFyLWF0dGVudGlvbiAnY3JpdGljYWwpIDsgY2xlYXIgd2hlbiB0aGUgRW1hY3MgYXBwbGlj YXRpb24gaXMgZm9jdXNlZAorCis7OyBDbGVhciB0aGUgYXR0ZW50aW9uIHJlcXVlc3QuCisoc3lz dGVtLXRhc2tiYXItYXR0ZW50aW9uIG5pbCkKKzs7IE9yIGp1c3QKKyhzeXN0ZW0tdGFza2Jhci1h dHRlbnRpb24pCitAZW5kIGdyb3VwCisKK0Bncm91cAorOzsgRW5hYmxlIHRhc2tiYXIgaWNvbiBw cm9ncmVzcyBmZWVkYmFjay4KKyhzZXRvcHQgc3lzdGVtLXRhc2tiYXItdXNlLXByb2dyZXNzLXJl cG9ydGVyIHQpIDsgdGhpcyBpcyB0aGUgZGVmYXVsdAorCis7OyBSZXBvcnQgYGRvdGltZXNgIHBy b2dyZXNzIG9uIHRoZSB0YXNrYmFyIGljb24uCisoZG90aW1lcy13aXRoLXByb2dyZXNzLXJlcG9y dGVyCisgICAgKGkgMTApCisgICAgIkNvdW50aW5nIGZyb20gMSB0byAxMC4uLiIKKyAgKHNsZWVw LWZvciAxKSkKKworOzsgUmVwb3J0IGBkb2xpc3RgIHByb2dyZXNzIG9uIHRoZSB0YXNrYmFyIGlj b24uCisoZG9saXN0LXdpdGgtcHJvZ3Jlc3MtcmVwb3J0ZXIKKyAgICAoaSAobWFrZS1saXN0IDEw IHQpKQorICAgICJQcm9ncmVzcyBmcm9tIDEgdG8gMTAgZWxlbWVudHMuLi4iCisgIChzbGVlcC1m b3IgMSkpCitAZW5kIGdyb3VwCitAZW5kIGxpc3AKKworQG5vZGUgR05VIEZyZWUgRG9jdW1lbnRh dGlvbiBMaWNlbnNlCitAYXBwZW5kaXggR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlCitA aW5jbHVkZSBkb2NsaWNlbnNlLnRleGkKKworQG5vZGUgRnVuY3Rpb24gSW5kZXgKK0B1bm51bWJl cmVkIEZ1bmN0aW9uIEluZGV4CitAcHJpbnRpbmRleCBmbgorCitAbm9kZSBWYXJpYWJsZSBJbmRl eAorQHVubnVtYmVyZWQgVmFyaWFibGUgSW5kZXgKK0BwcmludGluZGV4IHZyCisKK0BieWUKKwor QGMgRW5kOgotLSAKMi40Ny4xCgo= --000000000000f945560645c1ac1d--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 12 Dec 2025 03:06:06 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 11 22:06:06 2025
Received: from localhost ([127.0.0.1]:51435 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vTtTq-0007Fb-2j
for submit <at> debbugs.gnu.org; Thu, 11 Dec 2025 22:06:06 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:61864)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vTtTo-0007F0-NR
for 79859 <at> debbugs.gnu.org; Thu, 11 Dec 2025 22:06:05 -0500
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 4CE9581C28;
Thu, 11 Dec 2025 22:05:59 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1765508758;
bh=g53JyBBlPpDir1t/CzXSkl223fX750M3okUDA3EZu8Y=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=i8hGs/p40lhGsLF195YX49sfk9KLZu+8MJS4tkOIeiBd3JpkN7aYOCLTj1uzI9wWy
xOfE2yM+6JOG/VABh7xdhcakt24+Cr6wsiYHBVESPmGmhLeqlvElHJXmlGC5REPOoZ
wwsgn6Mr+GwY7rlKrHkJMhS6HneeExEqCnUJjAZJsvqhP4RhmB9fOiZNMjiyEnq1oJ
NYEQSeLST70fx9uO1eBoqg3ZbpTxsu+C/7d29nQCPKfMqEyoW15MPFW/16iMTSqSDz
5w2IwOdww1kZ5rb//hMFkqxzW/hDEOGBleomhzq39CURYiVTJf7aE2mt/i1sdL+jg6
CbnBfQEUKSjzw==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 0BB6280471;
Thu, 11 Dec 2025 22:05:58 -0500 (EST)
Received: from asado (unknown [181.28.45.30])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 5B21E12059D;
Thu, 11 Dec 2025 22:05:56 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: =?windows-1252?Q?St=E9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
In-Reply-To: <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN>
Message-ID: <jwv7buss9jh.fsf-monnier+emacs@HIDDEN>
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<86bjkxhuca.fsf@HIDDEN>
<CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
<87pl932wqd.fsf@HIDDEN>
<CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN>
<86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN>
<86ikedavlh.fsf@HIDDEN>
<CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN>
<jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN>
<CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN>
Date: Thu, 11 Dec 2025 22:05:53 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.215 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>,
michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
>> I think I'd merge them into a single hook.
>> E.g.
>>
>> (defvar progress-reporter-update-functions nil
>> "Special hook run on progress-reporter updates.
>> These functions are called with two arguments (REPORTER STATE)
>> and their return value is ignored. STATE can be:
>> - `done', when the job is, well, done.
>> - An integer in the range 0-3 (for pulsing reporters).
>> - A float between 0 and 1 (for numeric reporters).")
>
> Could do. I'd prefer avoiding type-of conditionals and perhaps it could be
> reporter state value. I'll take a stab at that.
I think an `integerp` conditional is clean. It's Lisp's way to mimic
algebraic data types. When the data type is more complex, we use
a heavier encoding (typically a `cons` cell with a symbol in the `car`
that stands for the tag), but for simple cases it's the most idiomatic
way to design an API, taking advantage of Lisp's dynamic types.
>> I think it would be even better if the echo-area feedback is moved to
>> the initial value of `progress-reporter-update-functions`, in case
>> someone wants to remove it or replace it with something else.
>> This will also make sure the API of `progress-reporter-update-functions`
>> is sufficient to reproduce this default behavior.
>
> I suggested that earlier but wasn't sure it was worth the trouble, and not
> so sure people should be encouraged to remove echo area feedback.
I don't see a reason to discourage people from removing it, but don't
intend to encourage people to do so either, no.
I see two reasons to do it:
1- As a sanity check that the API doesn't lack some important element.
2- As a "free" source of flexibility. Based on all the fancy mode-line
packages I've seen over the years, I'd be surprised if noone picks
this up and creates a fancy progress reporter that displays its state
in a pseudo-graphical way in the echo-area or the mode-line.
>> +(defcustom system-taskbar-use-progress-reporter t
>> > + "Supplement progress-reporters with GUI system taskbar progress bars."
>> > + :type 'boolean
>> > + :set (lambda (variable value)
>> > + (set-default variable value)
>> > + (if value
>> > + (system-taskbar-progress-reporter-install)
>> > + (system-taskbar-progress-reporter-remove)))
>> > + :version "31.1")
>>
>> This seems redundant with `system-taskbar-mode`. IIUC the difference is
>> that `system-taskbar-mode` covers a bit more functionality, but as it
>> stands the code behaves strangely if you set
>> `system-taskbar-use-progress-reporter` to nil but enable
>> `system-taskbar-mode`.
>> I suggest to either merge them into a single option or to really
>> decouple the two (one for progress-reporter and one for the
>> badge/alerting).
> Behaves strangely how so? It works here
> with system-taskbar-use-progress-reporter on or off.
AFAICT it will display the progress reporter in the taskbar even tho
`system-taskbar-use-progress-reporter` says not to.
>> +(defvar system-taskbar--back-end nil
>> > + "Generic taskbar method system dispatcher.")
>> > +(defun system-taskbar--set-back-end ()
>> > + "Determine taskbar host system type."
>> > + ;; Order matters to accommodate the cases where an NS or MS-Windows
>> > + ;; build have the dbus feature.
>> Maybe test `window-system` instead of `ns-version-string` and
>> `w32-initialized`?
> Happy to. As long as there's no race condition setting up the initial w32
> frame with the invocation of system-taskbar-mode.
Ah, you mean if we start in daemon mode, maybe `window-system` is nil
until a first GUI frame is created? You might be right.
Maybe another option is to test `window-system` in the `&context`
thingy and skip `system-taskbar--back-end` altogether?
Stefan
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 11 Dec 2025 23:11:04 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 11 18:11:04 2025 Received: from localhost ([127.0.0.1]:49534 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vTpoO-0004ZV-99 for submit <at> debbugs.gnu.org; Thu, 11 Dec 2025 18:11:04 -0500 Received: from mail-vs1-xe33.google.com ([2607:f8b0:4864:20::e33]:47429) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vTpoJ-0004YW-Fu for 79859 <at> debbugs.gnu.org; Thu, 11 Dec 2025 18:11:01 -0500 Received: by mail-vs1-xe33.google.com with SMTP id ada2fe7eead31-5de23ddba5eso478830137.3 for <79859 <at> debbugs.gnu.org>; Thu, 11 Dec 2025 15:10:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765494653; x=1766099453; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=B5iKi19ghRmtiKPCZnh7w6yAXLzVgZD7yiAMlUde7EQ=; b=XClcQ7AMdkS7yHJVzaMzFhfr3pXad+5EU46Ti2i5jTZbvZz26hPDM9dnyZ289ZqJch Yx26l0s1fn/H8VH4SF7GRljj10d4NlBLTwnOu+2NZyI1hXmN/sPyNjPrtm6rTqcosfy1 iml//twH/UfAa8w5mtAO/O8qJw4SfkKeJzJQVkeYSq7uOEfJnveOtUoYAgscrXSSqaTg eFpvgBTU40FGgGZUlL4nPhtVbMoFUTnagAOWS380sXzTUpTR82baUB6caYT5K97yACA1 ysJJT880M3Bzh51UjZTVZ0YvnB+fdeYYvXoj/sehb2ZSqqCu8kGnuWoMBLrnfv6V2fVs 7vRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765494653; x=1766099453; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=B5iKi19ghRmtiKPCZnh7w6yAXLzVgZD7yiAMlUde7EQ=; b=X8yDovKHT3h9NcytBMxRZtLoZB+HwhVS2OXc4dWINynEpBy+n7Wi/VZJouIu54o9Hl 980yWQehYsxbr/gdJGx3Gc8Ap87r72xBfuM2HWOxSiTxmvucF3zsTeAe+Ra4fszW4oV2 +nEwFreWmRD71Gu/TIL/iN+/d02MEbIyIKYJtQ24Gexxd7wqNCnWLPTWNrFaYW79D+gZ SqGzr9RA2tP9ybwAU0OczVir8aDvoMqzz0RyVUv/Te5dijkk5VCYkVb4yv+jUbhct6MX nyAVwJFoulue6i0h1dQCa5ZFnooU2givrwLhyv4oHJN+EaHvmAw/0gPU5a5kWlZrL2xg 2f9A== X-Forwarded-Encrypted: i=1; AJvYcCUegmQhvMl8lk+1C+nox6GifXVfrZ5jfMUAGrcy0oqzA4tgL9v9Rol1Ngw7YODTPcP2LYF3jQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yzg9ayfSHQjALsD8HQeG/cu5ElYYdlLU/vUx/Go8t27c+dmM/NL xXqXgh3NdaghsRNTNwIbW5/fS6GCwu4JbCN+mJS+m1b6pB8owCXqovkpi/I0Di1qWBgctjqkd/N lcuUyqRreQgBOVJSG2AbV0Hhnk9AZ/v0= X-Gm-Gg: AY/fxX4ejYrtFbJH9wQsYsnYlheVEi8uouw6AlU7YOFxfbsnXeFQn4eYaPsqHdON6bG iNK42v2lPmWJhqce6pKEGVGnDigneCDX2U+KIHq0y7bu2qAzIJ6cmDXtL5yxc94gpHdvJkOpRF4 cLWl3Go6LPWqDS9S4W2iSsKvR+Y9wzDcnCEWN1U+TROnvILOAUaEQaX1cQTHv+ib7I/gjqiUjFS bdvz+aDCT4N2GOcy3qqRO3p5ctLk8WEjeLPp0z5P8dhNLb/S5NYGdQqBB/1OW/KmJNgCH0= X-Google-Smtp-Source: AGHT+IGKkO3ZsNcVRgrXcbs4KN2xscJD2H98UrQafbzHJaxbVEp18YjMvfg4WeFsfHSs8ZeCJpmTccOepJQcgfYqVRU= X-Received: by 2002:a05:6102:e13:b0:5de:736:71d9 with SMTP id ada2fe7eead31-5e571f302c9mr3336017137.28.1765494653371; Thu, 11 Dec 2025 15:10:53 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <86ikedavlh.fsf@HIDDEN> <CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN> <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> In-Reply-To: <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Thu, 11 Dec 2025 18:10:41 -0500 X-Gm-Features: AQt7F2qalS9naQs7DvZ9sNIaD1PWAsgxceeWau3syqx1vBy5hzkS_CjBOqKvuDM Message-ID: <CAN+1Hbq8zw0fK2uyoTbFE0YrSgbYbC4Nz+-SU5-mNWXhmjNR6w@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Stefan Monnier <monnier@HIDDEN> Content-Type: multipart/mixed; boundary="000000000000aade3c0645b541ee" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> --000000000000aade3c0645b541ee Content-Type: multipart/alternative; boundary="000000000000aade3b0645b541ec" --000000000000aade3b0645b541ec Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Dec 11, 2025 at 5:16=E2=80=AFPM Stefan Monnier <monnier@HIDDEN= al.ca> wrote: > > Updated patch, attached. This one does away with the callbacks and use= s > > global hooks instead and installs the GUI progress bars, by default, wh= en > > the mode is enabled, and also does away with the convenience macros whi= ch > > are no longer needed. > > Thanks. I hadn't looked at the code yet, so I'll give a bit of feedback > about the code now. I haven't looked at the system-dependent code > because I'm not familiar with those APIs anyway. > Thanks for looking. > diff --git a/lisp/subr.el b/lisp/subr.el > > index fcf931b64e9..ef67e5cc4d0 100644 > > --- a/lisp/subr.el > > +++ b/lisp/subr.el > > @@ -6974,14 +6974,27 @@ set-transient-map > > ;; digits of precision, it doesn't really matter here. On the other > > ;; hand, it greatly simplifies the code. > > > > +(defvar progress-reporter-update-functions nil > > + "Special hook run on progress-reporter updates. > > +These functions are called by `progress-reporter-do-update` with three > > +arguments, the reporter, the percentage done in the range 0-100 for a > > +numeric reporter and which is nil for a pulsing reporter, the index th= at > > +cycles through the range 0-3 for a pulsing reporter and which is nil f= or > > +a numeric reporter.") > > Sounds like only two of the three args are used. > All three are passed for completeness. The system-taskbar implementation uses only two but could interrogate the reporter if needed. > +(defvar progress-reporter-done-functions nil > > + "Special hook run when a progress-reporter is done. > > +These functions are called by `progress-reporter-done` with one > > +argument, the reporter.") > > I think I'd merge them into a single hook. > E.g. > > (defvar progress-reporter-update-functions nil > "Special hook run on progress-reporter updates. > These functions are called with two arguments (REPORTER STATE) > and their return value is ignored. STATE can be: > - `done', when the job is, well, done. > - An integer in the range 0-3 (for pulsing reporters). > - A float between 0 and 1 (for numeric reporters).") > Could do. I'd prefer avoiding type-of conditionals and perhaps it could be reporter state value. I'll take a stab at that. > @@ -7100,7 +7113,9 @@ progress-reporter-do-update > > (setq suffix (or (aref parameters 6) ""))) > > (if (plusp percentage) > > (message "%s%d%% %s" text percentage suffix) > > - (message "%s %s" text suffix))))) > > + (message "%s %s" text suffix)) > > + (run-hook-with-args 'progress-reporter-update-functions > > + reporter percentage nil)))) > > ;; Pulsing indicator > > (enough-time-passed > > (when (and value (not suffix)) > > I think it would be even better if the echo-area feedback is moved to > the initial value of `progress-reporter-update-functions`, in case > someone wants to remove it or replace it with something else. > This will also make sure the API of `progress-reporter-update-functions` > is sufficient to reproduce this default behavior. > I suggested that earlier but wasn't sure it was worth the trouble, and not so sure people should be encouraged to remove echo area feedback. Happy to do it if you really think it's a good idea. > +(defcustom system-taskbar-use-progress-reporter t > > + "Supplement progress-reporters with GUI system taskbar progress bars= ." > > + :type 'boolean > > + :set (lambda (variable value) > > + (set-default variable value) > > + (if value > > + (system-taskbar-progress-reporter-install) > > + (system-taskbar-progress-reporter-remove))) > > + :version "31.1") > > This seems redundant with `system-taskbar-mode`. IIUC the difference is > that `system-taskbar-mode` covers a bit more functionality, but as it > stands the code behaves strangely if you set > `system-taskbar-use-progress-reporter` to nil but enable > `system-taskbar-mode`. > I suggest to either merge them into a single option or to really > decouple the two (one for progress-reporter and one for the > badge/alerting). > Behaves strangely how so? It works here with system-taskbar-use-progress-reporter on or off. > +(defvar system-taskbar--back-end nil > > + "Generic taskbar method system dispatcher.") > > + > > +(defun system-taskbar--set-back-end () > > + "Determine taskbar host system type." > > + ;; Order matters to accommodate the cases where an NS or MS-Windows > > + ;; build have the dbus feature. > > Maybe test `window-system` instead of `ns-version-string` and > `w32-initialized`? > Happy to. As long as there's no race condition setting up the initial w32 frame with the invocation of system-taskbar-mode. > + (cond ((boundp 'ns-version-string) > > + (setq system-taskbar--back-end 'ns)) > > + ((bound-and-true-p w32-initialized) > > + (setq system-taskbar--back-end 'w32)) > > + ((and (featurep 'dbusbind) > > + (member "org.freedesktop.login1" > > + (dbus-list-activatable-names :system))) > > + (setq system-taskbar--back-end 'dbus)) > > + (t > > + (setq system-taskbar--back-end nil)))) > > You can hoist the `(setq system-taskbar--back-end` out of the `cond`. > Indeed. Done. > +(cl-defgeneric system-taskbar-badge (&optional count) > > + "Display a COUNT overlay on the system taskbar Emacs icon. > > +If COUNT is an integer, display that as the icon badge. > > +If COUNT is a string on back ends which do not support strings, conver= t > > +COUNT to an integer, or nil if that fails. > > +If COUNT is nil or an empty string, remove the counter.") > > The wording for the string case is a bit confusing. How do we "convert > COUNT to an integer"? `length` is one option, but there are > many others. > Maybe we should also say something a bout the kind of strings that are > expected to appear here (I assume these should be short, for example). > I've reworded a touch. > +(cl-defgeneric system-taskbar-attention (&optional urgency timeout) > > + "Flash the system taskbar icon and/or frame to alert the user. > > +If URGENCY is the symbol `informational', request normal attention. > > +If URGENCY is the symbol `critical', request urgent attention. > > +If URGENCY is nil, clear the attention indicator. > > I don't find "normal attention" much more enlightening than > `informational` and same for the second line, so I think you can shorten > that to > > URGENCY can be one of the symbols `informational' or`critical', > or nil which clears the attention indicator. > Good. > +If TIMEOUT is non-nil, clear the attention indicator after TIMEOUT > > +seconds, otherwise the attention indicator will be cleared either if t= he > > +frame is focused by the user or if `system-taskbar-attention' is calle= d > > +with nil URGENCY. > > Replace "either" with something that clarifies which. Presumably it's > whichever comes first. > Good. Simplified my obtuse language. > +(cl-defmethod system-taskbar-progress (&context > > + (system-taskbar--back-end (eql > 'dbus)) > > + &optional progress) > > + "Display a progress bar overlay on the system taskbar icon. > > +PROGRESS is a float in the range 0.0 to 1.0. > > +If PROGRESS is nil, remove the progress bar." > > + (setq progress (system-taskbar--validate-progress progress)) > > + (system-taskbar--dbus-send-signal > > + `((:dict-entry "progress-visible" > > + (:variant :boolean ,(not (null progress)))) > > + (:dict-entry "progress" > > + (:variant :double ,(if (null progress) 0 > progress)))))) > > [ Side note: while I'm to blame for the `&context` and I stand by it, > I'm not completely sure we should abuse it so much. At the same time, > this is quite similar to what I've done with the `git-*selection*` > generic functions and it proved convenient when extending it for > non-GUI support. So maybe it's fine, sorry 'bout the noise. ] > Not noise, really. It's there and it's useful. > + > > +;; macOS/GNUstep NS support. > > +;; MS-Windows support. > > Move them to `term/ns|w32-win.el`? > Not sure where the D-Bus support would move to, OTOH. > So, again, maybe it's fine leaving that code here. > I prefer it as is, and all in one place. Revised patch attached. I'll do the documentation work last. -St=C3=A9phane --000000000000aade3b0645b541ec Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Thu, Dec 11, 2025 at 5:16=E2=80=AFPM Stefan Monnier <<a href=3D"mailt= o:monnier@HIDDEN">monnier@HIDDEN</a>> wrote:</span><= /div></div><div class=3D"gmail_quote gmail_quote_container"><blockquote cla= ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid = rgb(204,204,204);padding-left:1ex">> Updated patch, attached.=C2=A0 This= one does away with the callbacks and uses<br> > global hooks instead and installs the GUI progress bars, by default, w= hen<br> > the mode is enabled, and also does away with the convenience macros wh= ich<br> > are no longer needed.<br> <br> Thanks.=C2=A0 I hadn't looked at the code yet, so I'll give a bit o= f feedback<br> about the code now.=C2=A0 I haven't looked at the system-dependent code= <br> because I'm not familiar with those APIs anyway.<br></blockquote><div><= br></div><div><div class=3D"gmail_default" style=3D"font-family:monospace">= Thanks for=C2=A0looking.</div></div><div class=3D"gmail_default" style=3D"f= ont-family:monospace"><br></div><blockquote class=3D"gmail_quote" style=3D"= margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-lef= t:1ex"> > diff --git a/lisp/subr.el b/lisp/subr.el<br> > index fcf931b64e9..ef67e5cc4d0 100644<br> > --- a/lisp/subr.el<br> > +++ b/lisp/subr.el<br> > @@ -6974,14 +6974,27 @@ set-transient-map<br> >=C2=A0 ;; digits of precision, it doesn't really matter here.=C2=A0= On the other<br> >=C2=A0 ;; hand, it greatly simplifies the code.<br> >=C2=A0 <br> > +(defvar progress-reporter-update-functions nil<br> > +=C2=A0 "Special hook run on progress-reporter updates.<br> > +These functions are called by `progress-reporter-do-update` with thre= e<br> > +arguments, the reporter, the percentage done in the range 0-100 for a= <br> > +numeric reporter and which is nil for a pulsing reporter, the index t= hat<br> > +cycles through the range 0-3 for a pulsing reporter and which is nil = for<br> > +a numeric reporter.")<br> <br> Sounds like only two of the three args are used.<br></blockquote><div><br><= /div><div><div class=3D"gmail_default" style=3D"font-family:monospace">All = three are passed for completeness.=C2=A0 The system-taskbar implementation = uses only two but could interrogate the reporter if needed.</div></div><div= class=3D"gmail_default" style=3D"font-family:monospace"><br></div><blockqu= ote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px= solid rgb(204,204,204);padding-left:1ex"> > +(defvar progress-reporter-done-functions nil<br> > +=C2=A0 "Special hook run when a progress-reporter is done.<br> > +These functions are called by `progress-reporter-done` with one<br> > +argument, the reporter.")<br> <br> I think I'd merge them into a single hook.<br> E.g.<br> <br> =C2=A0 =C2=A0 (defvar progress-reporter-update-functions nil<br> =C2=A0 =C2=A0 =C2=A0 "Special hook run on progress-reporter updates.<b= r> =C2=A0 =C2=A0 These functions are called with two arguments (REPORTER STATE= )<br> =C2=A0 =C2=A0 and their return value is ignored.=C2=A0 STATE can be:<br> =C2=A0 =C2=A0 - `done', when the job is, well, done.<br> =C2=A0 =C2=A0 - An integer in the range 0-3 (for pulsing reporters).<br> =C2=A0 =C2=A0 - A float between 0 and 1 (for numeric reporters).")<br>= </blockquote><div><br></div><div><div class=3D"gmail_default" style=3D"font= -family:monospace">Could do.=C2=A0 I'd prefer avoiding type-of conditio= nals and perhaps it could be reporter state value.=C2=A0 I'll take a st= ab at that.</div></div><div><br></div><blockquote class=3D"gmail_quote" sty= le=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddi= ng-left:1ex"> > @@ -7100,7 +7113,9 @@ progress-reporter-do-update<br> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s= etq suffix (or (aref parameters 6) "")))<br> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(if (plus= p percentage)<br> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0(message "%s%d%% %s" text percentage suffix)<br> > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(messag= e "%s %s" text suffix)))))<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(messag= e "%s %s" text suffix))<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(run-hook-with= -args 'progress-reporter-update-functions<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0reporter percentage= nil))))<br> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;; Pulsing indicator<br> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(enough-time-passed<br> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when (and value (not s= uffix))<br> <br> I think it would be even better if the echo-area feedback is moved to<br> the initial value of `progress-reporter-update-functions`, in case<br> someone wants to remove it or replace it with something else.<br> This will also make sure the API of `progress-reporter-update-functions`<br= > is sufficient to reproduce this default behavior.<br></blockquote><div><br>= </div><div><div class=3D"gmail_default" style=3D"font-family:monospace">I s= uggested that earlier but wasn't sure it was worth the trouble, and not= so sure people should be encouraged to remove echo area feedback.</div></d= iv><div class=3D"gmail_default" style=3D"font-family:monospace"><br></div><= div class=3D"gmail_default" style=3D"font-family:monospace">Happy to do it = if you really think it's a good idea.</div><div><br></div><blockquote c= lass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px soli= d rgb(204,204,204);padding-left:1ex"> > +(defcustom system-taskbar-use-progress-reporter t<br> > +=C2=A0 "Supplement progress-reporters with GUI system taskbar pr= ogress bars."<br> > +=C2=A0 :type 'boolean<br> > +=C2=A0 :set (lambda (variable value)<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(set-default variable value)<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(if value<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(system-taskbar-progr= ess-reporter-install)<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(system-taskbar-progress-rep= orter-remove)))<br> > +=C2=A0 :version "31.1")<br> <br> This seems redundant with `system-taskbar-mode`.=C2=A0 IIUC the difference = is<br> that `system-taskbar-mode` covers a bit more functionality, but as it<br> stands the code behaves strangely if you set<br> `system-taskbar-use-progress-reporter` to nil but enable<br> `system-taskbar-mode`.<br> I suggest to either merge them into a single option or to really<br> decouple the two (one for progress-reporter and one for the<br> badge/alerting).<br></blockquote><div><br></div><div><div class=3D"gmail_de= fault" style=3D"font-family:monospace">Behaves strangely how so?=C2=A0 It w= orks here with=C2=A0system-taskbar-use-progress-reporter on or off.</div></= div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0p= x 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> > +(defvar system-taskbar--back-end nil<br> > +=C2=A0 "Generic taskbar method system dispatcher.")<br> > +<br> > +(defun system-taskbar--set-back-end ()<br> > +=C2=A0 "Determine taskbar host system type."<br> > +=C2=A0 ;; Order matters to accommodate the cases where an NS or MS-Wi= ndows<br> > +=C2=A0 ;; build have the dbus feature.<br> <br> Maybe test `window-system` instead of `ns-version-string` and<br> `w32-initialized`?<br></blockquote><div><br></div><div><div class=3D"gmail_= default" style=3D"font-family:monospace">Happy to.=C2=A0 As long as there&#= 39;s no race condition setting up the initial w32 frame with the invocation= of system-taskbar-mode.</div><div class=3D"gmail_default" style=3D"font-fa= mily:monospace"><br></div></div><blockquote class=3D"gmail_quote" style=3D"= margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-lef= t:1ex"> > +=C2=A0 (cond ((boundp 'ns-version-string)<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq system-taskbar--back-end '= ;ns))<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 ((bound-and-true-p w32-initialized)<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq system-taskbar--back-end '= ;w32))<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 ((and (featurep 'dbusbind)<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (member "org.fr= eedesktop.login1"<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 (dbus-list-activatable-names :system)))<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq system-taskbar--back-end '= ;dbus))<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (t<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq system-taskbar--back-end nil)= )))<br> <br> You can hoist the `(setq system-taskbar--back-end` out of the `cond`.<br></= blockquote><div><br></div><div class=3D"gmail_default" style=3D"font-family= :monospace">Indeed. Done.</div><div class=3D"gmail_default" style=3D"font-f= amily:monospace"><br></div><blockquote class=3D"gmail_quote" style=3D"margi= n:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex= "> > +(cl-defgeneric system-taskbar-badge (&optional count)<br> > +=C2=A0 "Display a COUNT overlay on the system taskbar Emacs icon= .<br> > +If COUNT is an integer, display that as the icon badge.<br> > +If COUNT is a string on back ends which do not support strings, conve= rt<br> > +COUNT to an integer, or nil if that fails.<br> > +If COUNT is nil or an empty string, remove the counter.")<br> <br> The wording for the string case is a bit confusing.=C2=A0 How do we "c= onvert<br> COUNT to an integer"?=C2=A0 `length` is one option, but there are<br> many others.<br> Maybe we should also say something a bout the kind of strings that are<br> expected to appear here (I assume these should be short, for example).<br><= /blockquote><div><br></div><div><div class=3D"gmail_default" style=3D"font-= family:monospace">I've reworded a touch.</div></div><div><br></div><blo= ckquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left= :1px solid rgb(204,204,204);padding-left:1ex"> > +(cl-defgeneric system-taskbar-attention (&optional urgency timeou= t)<br> > +=C2=A0 "Flash the system taskbar icon and/or frame to alert the = user.<br> > +If URGENCY is the symbol `informational', request normal attentio= n.<br> > +If URGENCY is the symbol `critical', request urgent attention.<br= > > +If URGENCY is nil, clear the attention indicator.<br> <br> I don't find "normal attention" much more enlightening than<b= r> `informational` and same for the second line, so I think you can shorten<br= > that to<br> <br> =C2=A0 =C2=A0 URGENCY can be one of the symbols `informational' or`crit= ical',<br> =C2=A0 =C2=A0 or nil which clears the attention indicator.<br></blockquote>= <div><br></div><div class=3D"gmail_default" style=3D"font-family:monospace"= >Good.</div><div class=3D"gmail_default" style=3D"font-family:monospace"><b= r></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex= ;border-left:1px solid rgb(204,204,204);padding-left:1ex"> > +If TIMEOUT is non-nil, clear the attention indicator after TIMEOUT<br= > > +seconds, otherwise the attention indicator will be cleared either if = the<br> > +frame is focused by the user or if `system-taskbar-attention' is = called<br> > +with nil URGENCY.<br> <br> Replace "either" with something that clarifies which.=C2=A0 Presu= mably it's<br> whichever comes first.<br></blockquote><div><br></div><div><div class=3D"gm= ail_default" style=3D"font-family:monospace">Good.=C2=A0 Simplified my obtu= se language.</div></div><div><br></div><blockquote class=3D"gmail_quote" st= yle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padd= ing-left:1ex"> > +(cl-defmethod system-taskbar-progress (&context<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(syst= em-taskbar--back-end (eql 'dbus))<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&= optional progress)<br> > +=C2=A0 "Display a progress bar overlay on the system taskbar ico= n.<br> > +PROGRESS is a float in the range 0.0 to 1.0.<br> > +If PROGRESS is nil, remove the progress bar."<br> > +=C2=A0 (setq progress (system-taskbar--validate-progress progress))<b= r> > +=C2=A0 (system-taskbar--dbus-send-signal<br> > +=C2=A0 =C2=A0`((:dict-entry "progress-visible"<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (:vari= ant :boolean ,(not (null progress))))<br> > +=C2=A0 =C2=A0 =C2=A0(:dict-entry "progress"<br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (:vari= ant :double ,(if (null progress) 0 progress))))))<br> <br> [ Side note: while I'm to blame for the `&context` and I stand by i= t,<br> =C2=A0 I'm not completely sure we should abuse it so much.=C2=A0 At the= same time,<br> =C2=A0 this is quite similar to what I've done with the `git-*selection= *`<br> =C2=A0 generic functions and it proved convenient when extending it for<br> =C2=A0 non-GUI support.=C2=A0 So maybe it's fine, sorry 'bout the n= oise.=C2=A0 ]<br></blockquote><div><br></div><div><div class=3D"gmail_defau= lt" style=3D"font-family:monospace">Not noise, really.=C2=A0 It's there= and it's useful.</div></div><div><br></div><blockquote class=3D"gmail_= quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,= 204);padding-left:1ex"> > +=0C<br> > +;; macOS/GNUstep NS support.<br> > +;; MS-Windows support.<br> <br> Move them to `term/ns|w32-win.el`?<br> Not sure where the D-Bus support would move to, OTOH.<br> So, again, maybe it's fine leaving that code here.<br></blockquote><div= ><br></div><div class=3D"gmail_default" style=3D"font-family:monospace">I p= refer it as is, and all in one place.</div><div class=3D"gmail_default" sty= le=3D"font-family:monospace"><br></div><div class=3D"gmail_default" style= =3D"font-family:monospace">Revised patch attached.=C2=A0 I'll do the do= cumentation work last.</div><div class=3D"gmail_default" style=3D"font-fami= ly:monospace"><br></div><div class=3D"gmail_default" style=3D"font-family:m= onospace">-St=C3=A9phane=C2=A0</div></div></div> --000000000000aade3b0645b541ec-- --000000000000aade3c0645b541ee Content-Type: application/octet-stream; name="0001-System-GUI-taskbar-and-progress-reporter-hooks.patch" Content-Disposition: attachment; filename="0001-System-GUI-taskbar-and-progress-reporter-hooks.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mj21wcik0> X-Attachment-Id: f_mj21wcik0 RnJvbSA0ZTFlNzBmYjNlNWU2MDEzYjQxMjk0OTBhYWNmY2U3MTg0MjkwYWM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFRodSwgMjAgTm92IDIwMjUgMTI6NTQ6NDAgLTA1MDAK U3ViamVjdDogW1BBVENIXSBTeXN0ZW0gR1VJIHRhc2tiYXIgYW5kIHByb2dyZXNzIHJlcG9ydGVy IGhvb2tzCgpJbXBsZW1lbnQgc3lzdGVtIEdVSSB0YXNrYmFyL2RvY2svbGF1bmNoZXIgaWNvbiBi YWRnZSwgaWNvbgpwcm9ncmVzcyBpbmRpY2F0b3IsIGljb24gYXR0ZW50aW9uIGFsZXJ0IGZlYXR1 cmVzIGZvciBELUJ1cwpwbGF0Zm9ybXMgKHRlc3RlZCBvbiBLREUgYW5kIEdOT01FKSwgTlMgKG1h Y09TL0dOVXN0ZXApLApNUy1XaW5kb3dzLgoKQWRkICdwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUt ZnVuY3Rpb25zJwoncHJvZ3Jlc3MtcmVwb3J0ZXItZG9uZS1mdW5jdGlvbnMnIGFibm9ybWFsIGhv b2tzIHRvIGZhY2lsaXRhdGUKdGFza2JhciBwcm9ncmVzcyBkaXNwbGF5LCBhbmQgb3RoZXIgY3Vz dG9tIHByb2dyZXNzIHJlcG9ydGVycy4KCiogbGlzcC9zdWJyLmVsIChwcm9ncmVzcy1yZXBvcnRl ci11cGRhdGUtZnVuY3Rpb25zKQoocHJvZ3Jlc3MtcmVwb3J0ZXItZG9uZS1mdW5jdGlvbnMpOiBO ZXcgZGVmdmFyLgoocHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRlKTogUnVuCnByb2dyZXNzLXJl cG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMgZm9yIGJvdGggbnVtZXJpY2FsIGFuZApwdWxzaW5nIHJl cG9ydGVycy4KKHByb2dyZXNzLXJlcG9ydGVyLWRvbmUpOiBSdW4gcHJvZ3Jlc3MtcmVwb3J0ZXIt ZG9uZS1mdW5jdGlvbnMuCiogbGlzcC9zeXN0ZW0tdGFza2Jhci5lbDogTmV3IGZpbGUuCiogc3Jj L25zZm5zLm0gKEZuc19iYWRnZSwgRm5zX3Byb2dyZXNzX2luZGljYXRvcikKKEZuc19yZXF1ZXN0 X3VzZXJfYXR0ZW50aW9uKTogTmV3IGZ1bmN0aW9uLgooc3ltc19vZl9uc2Zucyk6IEFkZCBkZWZz dWJyIFNuc19iYWRnZSwKU25zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24sIFNuc19wcm9ncmVzc19p bmRpY2F0b3IuIEFkZCBERUZTWU0KUWluZm9ybWF0aW9uYWwsIFFjcml0aWNhbC4KKiBzcmMvdzMy Zm5zLmMgKHJnYl9saXN0X3RvX2NvbG9ycmVmLCBGdzMyX2JhZGdlKQooRnczMl9yZXF1ZXN0X3Vz ZXJfYXR0ZW50aW9uLCBGdzMyX3Byb2dyZXNzX2luZGljYXRvcik6IE5ldwpmdW5jdGlvbi4KKHN5 bXNfb2ZfdzMyZm5zKTogQWRkIGRlZnN1YnIgU3czMl9iYWRnZSwKU3czMl9wcm9ncmVzc19pbmRp Y2F0b3IsIFN3MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbi4gQWRkIERFRlNZTQpRaW5mb3JtYXRp b25hbCwgUWNyaXRpY2FsLgoqIHN5c3RlbS10YXNiYXIudGV4aTogTmV3IGZpbGUgKFdJTEwgQkUg TUVSR0VEIElOVE8gRU1BQ1MgQU5ECkVMSVNQIE1BTlVBTCkuCiogZXRjL05FV1M6IEFubm91bmNl IHN5c3RlbS10YXNrYmFyLW1vZGUuICBBbm5vdW5jZSBwcm9ncmVzcwpyZXBvcnRlciBjYWxsYmFj ayBlbmhhbmNlbWVudHMuCi0tLQogZXRjL05FV1MgICAgICAgICAgICAgICB8ICAyMiArKwogbGlz cC9zdWJyLmVsICAgICAgICAgICB8ICAzOSArKystCiBsaXNwL3N5c3RlbS10YXNrYmFyLmVsIHwg NDgxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvbnNmbnMu bSAgICAgICAgICAgIHwgMTI4ICsrKysrKysrKysrCiBzcmMvdzMyZm5zLmMgICAgICAgICAgIHwg MzI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHN5c3RlbS10YXNrYmFyLnRleGkgICAg fCAyNTQgKysrKysrKysrKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAxMjM5IGluc2Vy dGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpc3Avc3lzdGVt LXRhc2tiYXIuZWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXN0ZW0tdGFza2Jhci50ZXhpCgpkaWZm IC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCBmZGIxZWUwMjgxOS4uNjc2MTQ0ZGZm MTIgMTAwNjQ0Ci0tLSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdTCkBAIC0zMTUxLDYgKzMxNTEs MjEgQEAgVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIGZ1bmN0aW9ucyB0byB0aHJvdHRsZSBvciBkZWJv dW5jZSBFbWFjcyBMaXNwCiBmdW5jdGlvbnMuICBUaGlzIGlzIHVzZWZ1bCBmb3IgY29ycmFsbGlu ZyBvdmVyZWFnZXIgY29kZSB0aGF0IGlzIHNsb3cKIGFuZCBibG9ja3MgRW1hY3MsIG9yIGRvZXMg bm90IHByb3ZpZGUgd2F5cyB0byBsaW1pdCBob3cgb2Z0ZW4gaXQgcnVucy4KIAorKysrCisqKiog TmV3IG1vZGUgJ3N5c3RlbS10YXNrYmFyLW1vZGUnLgorVGhpcyBpcyBhIGdsb2JhbCBtaW5vciBt b2RlIGFuZCBjb21wYW5pb24gZnVuY3Rpb25zIHRoYXQgaW50ZWdyYXRlIEVtYWNzCit3aXRoIHN5 c3RlbSBHVUkgdGFza2JhcnMgKGFsc28gY2FsbGVkIGRvY2tzIG9yIGxhdW5jaGVycyBvciBzb21l dGhpbmcKK3NpbWlsYXIpIHRvIGRpc3BsYXkgYSB0YXNrYmFyIGljb24gImJhZGdlIiBvdmVybGF5 LCBhIHByb2dyZXNzIGJhcgorcmVwb3J0IG92ZXJsYXksIGFsZXJ0IHRoZSB1c2VyIHRoYXQgYW4g RW1hY3Mgc2Vzc2lvbiBuZWVkcyBhdHRlbnRpb24sCitvZnRlbiBieSBmbGFzaGluZyBvciBib3Vu Y2luZyB0aGUgRW1hY3MgYXBwbGljYXRpb24gaWNvbi4gIFN1cHBvcnRlZAorY2FwYWJsZSBzeXN0 ZW1zIGFyZSBHTlUvTGludXggdmlhIEQtQnVzLCBtYWNPUy9HTlVzdGVwIDEwLjUrLCBNUy1XaW5k b3dzCis3Ky4KKworT24gR05VL0xpbnV4IHN5c3RlbXMsIHNoZWxsIGV4dGVuc2lvbnMgb3Igc2lt aWxhciBoZWxwZXJzIHN1Y2ggYXMKKyJkYXNoLXRvLWRvY2siIG1heSBiZSByZXF1aXJlZC4gIFNl ZQorPGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzMwNy9kYXNoLXRvLWRv Y2svPiBhbmQKKzxodHRwczovL3dpa2kudWJ1bnR1LmNvbS9Vbml0eS9MYXVuY2hlckFQST4uCisK IAwKICogSW5jb21wYXRpYmxlIExpc3AgQ2hhbmdlcyBpbiBFbWFjcyAzMS4xCiAKQEAgLTM1Nzks NiArMzU5NCwxMyBAQCBFbWFjcyB3aGVuIGJ1aWx0IHdpdGggdGhlIHB1cmUgR1RLIHRvb2xraXQg bm93IHJlc3BlY3RzIGRlc2t0b3AKIGRhcmsgYW5kIGxpZ2h0IG1vZGVzIGZvciBkcmF3aW5nIGEg R1RLIHRvb2xiYXIgYW5kIHdpZGdldHMsCiBhdXRvbWF0aWNhbGx5IHRvZ2dsaW5nIGJldHdlZW4g dGhlbS4KIAorKysrCisqKiBQcm9ncmVzcyByZXBvcnRlciBjYWxsYmFja3MuCisnbWFrZS1wcm9n cmVzcy1yZXBvcnRlcicgbm93IGFjY2VwdHMgb3B0aW9uYWwgYXJndW1lbnRzIFVQREFURS1DQUxM QkFDSywKK2NhbGxlZCBvbiBwcm9ncmVzcyBzdGVwcywgYW5kIERPTkUtQ0FMTEJBQ0ssIGNhbGxl ZCB3aGVuIHRoZSBwcm9ncmVzcworcmVwb3J0ZXIgaXMgZG9uZS4gIFNlZSB0aGUgJ21ha2UtcHJv Z3Jlc3MtcmVwb3J0ZXInIGRvY3N0cmluZyBmb3IgYSBmdWxsCitzcGVjaWZpY2F0aW9uIG9mIHRo ZXNlIG5ldyBvcHRpb25hbCBhcmd1bWVudHMuCisKIAwKICogQ2hhbmdlcyBpbiBFbWFjcyAzMS4x IG9uIE5vbi1GcmVlIE9wZXJhdGluZyBTeXN0ZW1zCiAKZGlmZiAtLWdpdCBhL2xpc3Avc3Vici5l bCBiL2xpc3Avc3Vici5lbAppbmRleCBmY2Y5MzFiNjRlOS4uNWJhODJlNGJkMzQgMTAwNjQ0Ci0t LSBhL2xpc3Avc3Vici5lbAorKysgYi9saXNwL3N1YnIuZWwKQEAgLTY5NzQsMTQgKzY5NzQsMjIg QEAgc2V0LXRyYW5zaWVudC1tYXAKIDs7IGRpZ2l0cyBvZiBwcmVjaXNpb24sIGl0IGRvZXNuJ3Qg cmVhbGx5IG1hdHRlciBoZXJlLiAgT24gdGhlIG90aGVyCiA7OyBoYW5kLCBpdCBncmVhdGx5IHNp bXBsaWZpZXMgdGhlIGNvZGUuCiAKKyhkZWZ2YXIgcHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlLWZ1 bmN0aW9ucyBuaWwKKyAgIlNwZWNpYWwgaG9vayBydW4gb24gcHJvZ3Jlc3MtcmVwb3J0ZXIgdXBk YXRlcy4KK1RoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIHdpdGggZm91ciBhcmd1bWVudHM6CitS RVBPUlRFUiBpcyB0aGUgcmVzdWx0IG9mIGEgY2FsbCB0byBgbWFrZS1wcm9ncmVzcy1yZXBvcnRl cicuCitTVEFURSBpcyB0aGUgc3ltYm9sIGB1cGRhdGUnIG9yIGBkb25lJy4KK1BFUkNFTlRBR0Ug aXMgYSBudW1iZXIgaW4gdGhlIHJhbmdlIDAtMTAwLCBvciBuaWwgZm9yIGEgcHVsc2luZyByZXBv cnRlci4KK0lOREVYIGlzIGEgbnVtYmVyIGluIHRoZSByYW5nZSAwLTMsIG9yIG5pbCBmb3IgYSBu dW1lcmljIHJlcG9ydGVyLiIpCisKIChkZWZzdWJzdCBwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUg KHJlcG9ydGVyICZvcHRpb25hbCB2YWx1ZSBzdWZmaXgpCiAgICJSZXBvcnQgcHJvZ3Jlc3Mgb2Yg YW4gb3BlcmF0aW9uIGluIHRoZSBlY2hvIGFyZWEuCiBSRVBPUlRFUiBzaG91bGQgYmUgdGhlIHJl c3VsdCBvZiBhIGNhbGwgdG8gYG1ha2UtcHJvZ3Jlc3MtcmVwb3J0ZXInLgogCiBJZiBSRVBPUlRF UiBpcyBhIG51bWVyaWNhbCBwcm9ncmVzcyByZXBvcnRlci0tLWkuZS4gaWYgaXQgd2FzCi0gbWFk ZSB1c2luZyBub24tbmlsIE1JTi1WQUxVRSBhbmQgTUFYLVZBTFVFIGFyZ3VtZW50cyB0bwotIGBt YWtlLXByb2dyZXNzLXJlcG9ydGVyJy0tLXRoZW4gVkFMVUUgc2hvdWxkIGJlIGEgbnVtYmVyIGJl dHdlZW4KLSBNSU4tVkFMVUUgYW5kIE1BWC1WQUxVRS4KK21hZGUgdXNpbmcgbm9uLW5pbCBNSU4t VkFMVUUgYW5kIE1BWC1WQUxVRSBhcmd1bWVudHMgdG8KK2BtYWtlLXByb2dyZXNzLXJlcG9ydGVy Jy0tLXRoZW4gVkFMVUUgc2hvdWxkIGJlIGEgbnVtYmVyIGJldHdlZW4KK01JTi1WQUxVRSBhbmQg TUFYLVZBTFVFLgogCiBPcHRpb25hbCBhcmd1bWVudCBTVUZGSVggaXMgYSBzdHJpbmcgdG8gYmUg ZGlzcGxheWVkIGFmdGVyCiBSRVBPUlRFUidzIG1haW4gbWVzc2FnZSBhbmQgcHJvZ3Jlc3MgdGV4 dC4gIElmIFJFUE9SVEVSIGlzIGEKQEAgLTcwNjEsMTEgKzcwNjksMTEgQEAgcHJvZ3Jlc3MtcmVw b3J0ZXItLXB1bHNlLWNoYXJhY3RlcnMKICAgIkNoYXJhY3RlcnMgdG8gdXNlIGZvciBwdWxzaW5n IHByb2dyZXNzIHJlcG9ydGVycy4iKQogCiAoZGVmdW4gcHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBk YXRlIChyZXBvcnRlciB2YWx1ZSAmb3B0aW9uYWwgc3VmZml4KQotICAobGV0KiAoKHBhcmFtZXRl cnMgICAoY2RyIHJlcG9ydGVyKSkKLQkgKHVwZGF0ZS10aW1lICAoYXJlZiBwYXJhbWV0ZXJzIDAp KQotCSAobWluLXZhbHVlICAgIChhcmVmIHBhcmFtZXRlcnMgMSkpCi0JIChtYXgtdmFsdWUgICAg KGFyZWYgcGFyYW1ldGVycyAyKSkKLQkgKHRleHQgICAgICAgICAoYXJlZiBwYXJhbWV0ZXJzIDMp KQorICAobGV0KiAoKHBhcmFtZXRlcnMgICAgICAoY2RyIHJlcG9ydGVyKSkKKwkgKHVwZGF0ZS10 aW1lICAgICAoYXJlZiBwYXJhbWV0ZXJzIDApKQorCSAobWluLXZhbHVlICAgICAgIChhcmVmIHBh cmFtZXRlcnMgMSkpCisJIChtYXgtdmFsdWUgICAgICAgKGFyZWYgcGFyYW1ldGVycyAyKSkKKwkg KHRleHQgICAgICAgICAgICAoYXJlZiBwYXJhbWV0ZXJzIDMpKQogCSAoZW5vdWdoLXRpbWUtcGFz c2VkCiAJICA7OyBTZWUgaWYgZW5vdWdoIHRpbWUgaGFzIHBhc3NlZCBzaW5jZSB0aGUgbGFzdCB1 cGRhdGUuCiAJICAob3IgKG5vdCB1cGRhdGUtdGltZSkKQEAgLTcxMDAsNyArNzEwOCw5IEBAIHBy b2dyZXNzLXJlcG9ydGVyLWRvLXVwZGF0ZQogICAgICAgICAgICAgICAgICAoc2V0cSBzdWZmaXgg KG9yIChhcmVmIHBhcmFtZXRlcnMgNikgIiIpKSkKICAgICAgICAgICAgICAgIChpZiAocGx1c3Ag cGVyY2VudGFnZSkKICAgICAgICAgICAgICAgICAgICAobWVzc2FnZSAiJXMlZCUlICVzIiB0ZXh0 IHBlcmNlbnRhZ2Ugc3VmZml4KQotICAgICAgICAgICAgICAgICAobWVzc2FnZSAiJXMgJXMiIHRl eHQgc3VmZml4KSkpKSkKKyAgICAgICAgICAgICAgICAgKG1lc3NhZ2UgIiVzICVzIiB0ZXh0IHN1 ZmZpeCkpCisgICAgICAgICAgICAgICAocnVuLWhvb2std2l0aC1hcmdzICdwcm9ncmVzcy1yZXBv cnRlci11cGRhdGUtZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlcG9ydGVyICd1cGRhdGUgcGVyY2VudGFnZSBuaWwpKSkpCiAJICA7OyBQdWxzaW5nIGluZGlj YXRvcgogCSAgKGVub3VnaC10aW1lLXBhc3NlZAogICAgICAgICAgICAod2hlbiAoYW5kIHZhbHVl IChub3Qgc3VmZml4KSkKQEAgLTcxMTMsMTEgKzcxMjMsMTYgQEAgcHJvZ3Jlc3MtcmVwb3J0ZXIt ZG8tdXBkYXRlCiAgICAgICAgICAgICAgICAgICAocHVsc2UtY2hhciAoYXJlZiBwcm9ncmVzcy1y ZXBvcnRlci0tcHVsc2UtY2hhcmFjdGVycwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5kZXgpKSkKIAkgICAgIChzZXRjYXIgcmVwb3J0ZXIgaW5kZXgpCi0gICAgICAgICAg ICAgKG1lc3NhZ2UgIiVzICVzICVzIiB0ZXh0IHB1bHNlLWNoYXIgc3VmZml4KSkpKSkpCisgICAg ICAgICAgICAgKG1lc3NhZ2UgIiVzICVzICVzIiB0ZXh0IHB1bHNlLWNoYXIgc3VmZml4KQorICAg ICAgICAgICAgIChydW4taG9vay13aXRoLWFyZ3MgJ3Byb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZS1m dW5jdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydGVyICd1cGRh dGUgbmlsIGluZGV4KSkpKSkpCiAKIChkZWZ1biBwcm9ncmVzcy1yZXBvcnRlci1kb25lIChyZXBv cnRlcikKLSAgIlByaW50IHJlcG9ydGVyJ3MgbWVzc2FnZSBmb2xsb3dlZCBieSB3b3JkIFwiZG9u ZVwiIGluIGVjaG8gYXJlYS4iCi0gIChtZXNzYWdlICIlc2RvbmUiIChhcmVmIChjZHIgcmVwb3J0 ZXIpIDMpKSkKKyAgIlByaW50IHJlcG9ydGVyJ3MgbWVzc2FnZSBmb2xsb3dlZCBieSB3b3JkIFwi ZG9uZVwiIGluIGVjaG8gYXJlYS4KK0NhbGwgdGhlIGZ1bmN0aW9ucyBvbiBgcHJvZ3Jlc3MtcmVw b3J0ZXItdXBkYXRlLWZ1bmN0aW9uc2AuIgorICAobWVzc2FnZSAiJXNkb25lIiAoYXJlZiAoY2Ry IHJlcG9ydGVyKSAzKSkKKyAgKHJ1bi1ob29rLXdpdGgtYXJncyAncHJvZ3Jlc3MtcmVwb3J0ZXIt dXBkYXRlLWZ1bmN0aW9ucworICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydGVyICdkb25lIG5p bCBuaWwpKQogCiAoZGVmbWFjcm8gZG90aW1lcy13aXRoLXByb2dyZXNzLXJlcG9ydGVyIChzcGVj IHJlcG9ydGVyLW9yLW1lc3NhZ2UgJnJlc3QgYm9keSkKICAgIkxvb3AgYSBjZXJ0YWluIG51bWJl ciBvZiB0aW1lcyBhbmQgcmVwb3J0IHByb2dyZXNzIGluIHRoZSBlY2hvIGFyZWEuCmRpZmYgLS1n aXQgYS9saXNwL3N5c3RlbS10YXNrYmFyLmVsIGIvbGlzcC9zeXN0ZW0tdGFza2Jhci5lbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjI1NGY1M2I5MzEKLS0tIC9kZXYv bnVsbAorKysgYi9saXNwL3N5c3RlbS10YXNrYmFyLmVsCkBAIC0wLDAgKzEsNDgxIEBACis7Ozsg c3lzdGVtLXRhc2tiYXIuZWwgLS0tIFN5c3RlbSBHVUkgdGFza2Jhci9kb2NrL2xhdW5jaGVyIHN0 YXR1cyBkaXNwbGF5IC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQgLSotCisKKzs7IENvcHlyaWdodCAo QykgMjAyNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworOzsgQXV0aG9yOiBTdGVw aGFuZSBNYXJrcworOzsgTWFpbnRhaW5lcjogZW1hY3MtZGV2ZWxAZ251Lm9yZworOzsgS2V5d29y ZHM6IGNvbnZlbmllbmNlCis7OyBQYWNrYWdlLVJlcXVpcmVzOiAoKGVtYWNzICIzMS4xIikpCisK Kzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KKworOzsgR05VIEVtYWNzIGlzIGZy ZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKzs7IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorOzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKworOzsgR05VIEVtYWNzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCis7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorOzsgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKzs7IGFsb25nIHdpdGgg R05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K KworOzs7IENvbW1lbnRhcnk6CisKKzs7IFVzZSB0aGlzIHBhY2thZ2UgdG8gZGlzcGxheSBhIHRh c2tiYXIgaWNvbiAiYmFkZ2UiIG92ZXJsYXksIGEKKzs7IHByb2dyZXNzIGJhciByZXBvcnQgb3Zl cmxheSwgb3IgYWxlcnQgdGhlIHVzZXIgdGhhdCBhbiBFbWFjcyBzZXNzaW9uCis7OyBuZWVkcyBh dHRlbnRpb24sIG9mdGVuIGJ5IGZsYXNoaW5nIG9yIGJvdW5jaW5nIHRoZSBFbWFjcyBhcHBsaWNh dGlvbgorOzsgaWNvbi4KKzs7Cis7OyBOb3RlOiBUaGUgdGVybSB0YXNrYmFyIGlzIGluY2x1c2l2 ZSBvZiBkb2NrIG9yIGxhdW5jaGVyIG9yIHNvbWUgb3RoZXIKKzs7IHRlcm1pbm9sb2d5IGFzIG1h eSBiZSB1c2VkIGZvciB5b3VyIHN5c3RlbS4KKzs7Cis7OyBPbiBHTlUvTGludXgsIHRoZSB2aXNp YmxlIGVmZmVjdHMgd2lsbCBhcHBlYXIgb24gdGhlIGRlc3RpbmF0aW9ucworOzsgZGV0ZXJtaW5l ZCBieSB5b3VyIHNoZWxsIGV4dGVuc2lvbiwgbW9zdCBvZnRlbiB0aGUgYXBwbGljYXRpb24KKzs7 IGxhdW5jaGVyIG9yIGRvY2sgcGFuZWwsIG9yIHRoZSB0b3AgcGFuZWwuICBFZmZlY3RzIGFyZSBn bG9iYWwgZm9yIGFuCis7OyBFbWFjcyBpbnN0YW5jZS4KKzs7Cis7OyBPbiBtYWNPUy9HTlVzdGVw LCB0aGUgZWZmZWN0cyB3aWxsIGFwcGVhciBvbiB0aGUgRG9jayBhbmQgaW4gdGhlIEFwcAorOzsg U3dpdGNoZXIuICBFZmZlY3RzIGFyZSBnbG9iYWwgZm9yIGFuIEVtYWNzIGluc3RhbmNlLgorOzsK Kzs7IE9uIE1TLVdpbmRvd3MsIHRoZSBlZmZlY3RzIGFwcGVhciBvbiB0aGUgdGFza2Jhci4gIEVm ZmVjdHMgYXJlCis7OyBhc3NvY2lhdGVkIHdpdGggdGhlIGZyYW1lIGZyb20gd2hpY2ggdGhleSBh cmUgaW5pdGlhdGVkLgorCis7OzsgVXNhZ2U6CisKKzs7IFRoZSBnbG9iYWwgbWlub3IgbW9kZSBg c3lzdGVtLXRhc2tiYXItbW9kZScgaW5pdGlhbGl6ZXMgdGhlIEdVSQorOzsgcGxhdGZvcm0gYmFj ay1lbmQgYW5kIG11c3QgYmUgZW5hYmxlZCBiZWZvcmUgdXNpbmcgdGhlIGZ1bmN0aW9ucworOzsg YmVsb3cuCis7OworOzsgYHN5c3RlbS10YXNrYmFyLWJhZGdlJyBvdmVybGF5cyBhIGNvdW50LCB3 aGljaCBpcyBhbiBpbnRlZ2VyLCBvbiB0aGUKKzs7IEVtYWNzIHRhc2tiYXIgaWNvbi4gIFlvdSBj YW4gdXNlIHRoaXMsIGZvciBleGFtcGxlLCB0byBpbmRpY2F0ZSB0aGUKKzs7IG51bWJlciBvZiB1 bnJlYWQgZW1haWwgbWVzc2FnZXMuICBPbiBHTlUvTGludXgsIHRoZSBjb3VudCBtdXN0IGJlIGFu Cis7OyBpbnRlZ2VyIG9yIG5pbC4gIE9uIG1hY09TL0dOVXN0ZXAsIHRoZSBjb3VudCBtYXkgYmUg YW4gaW50ZWdlciBvciBhCis7OyBzdHJpbmcsIHdoaWNoIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHdp bGwgYWJicmV2aWF0ZSBpZiB0b28gbG9uZy4gIE9uCis7OyBNUy1XaW5kb3dzLCB0aGUgdGFza2Jh ciBiYWRnZSB3aWxsIGJlIGFiYnJldmlhdGVkIHRvIHRocmVlCis7OyBjaGFyYWN0ZXJzOyBpZiB0 aGUgY291bnQgaXMgYW4gaW50ZWdlciBvdXRzaWRlIHRoZSByYW5nZSAtOTkgdG8gOTksCis7OyBp dCBpcyBzaG93biBhcyAiLTk5IiBvciAiOTkrIiwgaWYgY291bnQgaXMgYSBzdHJpbmcgbG9uZ2Vy IHRoYW4gMworOzsgY2hhcmFjdGVycyBpdCBpcyB0cnVuY2F0ZWQuCis7OworOzsgYHN5c3RlbS10 YXNrYmFyLWF0dGVudGlvbicgZmxhc2hlcyBvciBib3VuY2VzIHRoZSBFbWFjcyB0YXNrYmFyIGlj b24KKzs7IHRvIGluZGljYXRlIHRoYXQgeW91ciBFbWFjcyBzZXNzaW9uIHdhbnRzIGF0dGVudGlv bi4gIEl0cyBiZWhhdmlvcnMKKzs7IGFyZSBiYWNrLWVuZCBzcGVjaWZpYy4KKzs7Cis7OyBgc3lz dGVtLXRhc2tiYXItcHJvZ3Jlc3MnIG92ZXJsYXlzIGEgZ3JhcGhpY2FsIHByb2dyZXNzIGJhciBv biB0aGUKKzs7IEVtYWNzIHRhc2tiYXIgaWNvbiB0byBpbGx1c3RyYXRlIHByb2dyZXNzIG9mIGEg cG90ZW50aWFsbHkKKzs7IGxvbmctcnVubmluZyBvcGVyYXRpb24uCis7OworOzsgV2hlbiBgc3lz dGVtLXRhc2tiYXItbW9kZWAgaXMgZW5hYmxlZCwgRW1hY3MgcHJvZ3Jlc3MgcmVwb3J0ZXJzIHdp bGwKKzs7IGJlIGVuaGFuY2VkIHRvIGRpc3BsYXkgdGFza2JhciBHVUkgcHJvZ3Jlc3MgYmFycy4g IEN1c3RvbWl6ZQorOzsgYHN5c3RlbS10YXNrYmFyLXVzZS1wcm9ncmVzcy1yZXBvcnRlcmAgaWYg eW91IHdhbnQgdG8gZGlzYWJsZSB0aGlzLgorOzsKKzs7IE9uIEdOVS9MaW51eCBzeXN0ZW1zLCB0 aGUgaW1wbGVtZW50YXRpb24gaXMgdmlhIEQtQnVzIHRvIGNvbnRyb2wgR1VJCis7OyBzaGVsbHMg YW5kL29yIHNoZWxsIGV4dGVuc2lvbnMgc3VjaCBhcworOzsgaHR0cHM6Ly9leHRlbnNpb25zLmdu b21lLm9yZy9leHRlbnNpb24vMzA3L2Rhc2gtdG8tZG9jay8gdGhhdAorOzsgaW1wbGVtZW50IFVi dW50dSdzIFVuaXR5IGxhdW5jaGVyIHNwZWMKKzs7IGh0dHBzOi8vd2lraS51YnVudHUuY29tL1Vu aXR5L0xhdW5jaGVyQVBJLgorOzsKKzs7IFlvdXIgTGludXggRW1hY3MgaW5zdGFuY2Ugc2hvdWxk IGJlIGxhdW5jaGVkIHZpYSBhbiBhcHByb3ByaWF0ZSBzaGVsbAorOzsgImRlc2t0b3AiIGZpbGUg c3VjaCBhcyB0aG9zZSBkaXN0cmlidXRlZCB3aXRoIEVtYWNzOyBlLmcuLAorOzsgImV0Yy9lbWFj c2NsaWVudC5kZXNrdG9wIiBhcyBkb2N1bWVudGVkIGhlcmUKKzs7IGh0dHBzOi8vc3BlY2lmaWNh dGlvbnMuZnJlZWRlc2t0b3Aub3JnL2Rlc2t0b3AtZW50cnkvbGF0ZXN0LyBhbmQKKzs7IHdoaWNo IHlvdXIgR1VJIHN5c3RlbSBzaG91bGQgaW1wbGVtZW50LgorOzsKKzs7IE9uIG1hY09TL0dOVXN0 ZXAgc3lzdGVtcyAoYWthIE5TKSBhbmQgTVMtV2luZG93cywgbmF0aXZlIEFQSXMgYXJlCis7OyB1 c2VkIGFuZCBELUJ1cyBpcyBub3QsIGV2ZW4gaWYgRC1CdXMgaXMgY29uZmlndXJlZCBpbiB5b3Vy IGJ1aWxkLgorOzsKKzs7IFRvIGFkZCBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIHN5c3RlbXMsIHBy b3ZpZGUgYSBiYWNrIGVuZCB0aGF0IGltcGxlbWVudHMKKzs7IHRoZSBjbC1nZW5lcmljIGZ1bmN0 aW9ucyBiZWxvdy4KKworOzs7IENvZGU6CisKKyhyZXF1aXJlICdkYnVzKQorCisoZGVmZ3JvdXAg c3lzdGVtLXRhc2tiYXIgbmlsCisgICJTeXN0ZW0gR1VJIHRhc2tiYXIgaWNvbiBiYWRnZSwgcHJv Z3Jlc3MgcmVwb3J0LCBhbGVydGluZy4iCisgIDpncm91cCAnY29udmVuaWVuY2UKKyAgOnZlcnNp b24gIjMxLjEiKQorCisoZGVmdW4gc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MtcmVwb3J0ZXItaW5z dGFsbCAoKQorICAiSW5zdGFsbCBzeXN0ZW0tdGFza2JhciBwcm9ncmVzcyByZXBvcnRlcnMuIgor ICAoYWRkLWhvb2sgJ3Byb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMgIydzeXN0ZW0t dGFza2Jhci0tcHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlKSkKKworKGRlZnVuIHN5c3RlbS10YXNr YmFyLXByb2dyZXNzLXJlcG9ydGVyLXJlbW92ZSAoKQorICAiUmVtb3ZlIHN5c3RlbS10YXNrYmFy IHByb2dyZXNzIHJlcG9ydGVycy4iCisgIChyZW1vdmUtaG9vayAncHJvZ3Jlc3MtcmVwb3J0ZXIt dXBkYXRlLWZ1bmN0aW9ucyAjJ3N5c3RlbS10YXNrYmFyLS1wcm9ncmVzcy1yZXBvcnRlci11cGRh dGUpKQorCisoZGVmY3VzdG9tIHN5c3RlbS10YXNrYmFyLXVzZS1wcm9ncmVzcy1yZXBvcnRlciB0 CisgICJTdXBwbGVtZW50IHByb2dyZXNzLXJlcG9ydGVycyB3aXRoIEdVSSB0YXNrYmFyIGljb24g cHJvZ3Jlc3MgYmFycy4iCisgIDp0eXBlICdib29sZWFuCisgIDpzZXQgKGxhbWJkYSAodmFyaWFi bGUgdmFsdWUpCisgICAgICAgICAoc2V0LWRlZmF1bHQgdmFyaWFibGUgdmFsdWUpCisgICAgICAg ICAoaWYgdmFsdWUKKyAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MtcmVwb3J0 ZXItaW5zdGFsbCkKKyAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLXByb2dyZXNzLXJlcG9ydGVy LXJlbW92ZSkpKQorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZjdXN0b20gc3lzdGVtLXRhc2ti YXItY2xlYXItYXR0ZW50aW9uLW9uLWZyYW1lLWZvY3VzIHQKKyAgIkNsZWFyIHRoZSBpY29uIGF0 dGVudGlvbiBpbmRpY2F0b3Igd2hlbiBhbnkgR1VJIGZyYW1lIGlzIGZvY3VzZWQuCitCYWNrIGVu ZHMgdGhhdCBhdXRvbWF0aWNhbGx5IGNsZWFyIHRoZSBhdHRlbnRpb24gaW5kaWNhdG9yLCBzdWNo IGFzCittYWNPUy9HTlVzdGVwIGFuZCBNUy1XaW5kb3dzLCBpZ25vcmUgdGhpcyBvcHRpb24uIgor ICA6dHlwZSAnYm9vbGVhbgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZjdXN0b20gc3lzdGVt LXRhc2tiYXItZGJ1cy1kZXNrdG9wLWZpbGUtbmFtZSAiZW1hY3NjbGllbnQiCisgICJELUJ1cyBk ZXNrdG9wIGZpbGUgYmFzZSBuYW1lIGZvciB0aGUgc3lzdGVtIHRhc2tiYXIgZGVzdGluYXRpb24u CitUaGlzIHNob3VsZCBiZSB0aGUgYmFzZSBuYW1lIG9mIHRoZSBkZXNrdG9wIGZpbGUgdXNlZCB0 byBsYXVuY2ggYW4gRW1hY3MKK2luc3RhbmNlLiAgRm9yIGV4YW1wbGUsIGlmIHlvdXIgbGF1bmNo ZXIgZGVza3RvcCBmaWxlIGlzIGNhbGxlZAorXCJlbWFjcy5kZXNrdG9wXCIsIHRoaXMgb3B0aW9u IHNob3VsZCBiZSBcImVtYWNzXCIuIgorICA6dHlwZSAnc3RyaW5nCisgIDp2ZXJzaW9uICIzMS4x IikKKworKGRlZmN1c3RvbSBzeXN0ZW0tdGFza2Jhci1kYnVzLXRpbWVvdXQgbmlsCisgICJOdW1i ZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIEQtQnVzIHJlc3BvbnNlcy4KK0lmIG5pbCwg dXNlIHRoZSBgZGJ1c2AgZGVmYXVsdCB0aW1lb3V0IGluIGBkYnVzLWNhbGwtbWV0aG9kYCB3aGlj aCBpcworMjUwMDAgKGkuZS4sIDI1bXMpLgorCitJZiB5b3VyIEQtQnVzIGRlc2t0b3AgZXh0ZW5z aW9uIG5lZWRzIGV4dHJhIHRpbWUgdG8gcmVzcG9uZCwgaW4gd2hpY2gKK2Nhc2UgYHN5c3RlbS10 YXNrYmFyLW1vZGVgIG1pZ2h0IG5vdCBpbml0aWFsaXplIG9yIHJlbGF0ZWQgZnVuY3Rpb25zCitt aWdodCBub3QgdGFrZSB2aXNpYmxlIGVmZmVjdCwgYmluZCB0aGlzIHRvIGEgdmFsdWUgaGlnaGVy IHRoYW4gMjUwMDAgdG8KK2ZpbmQgd2hhdCB3b3JrcyBmb3IgeW91ciBzeXN0ZW0uIgorICA6dHlw ZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiRGVmYXVsdCIgbmlsKSBuYXRudW0pCisgIDp2ZXJzaW9u ICIzMS4xIikKKworKGRlZnZhciBzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgbmlsCisgICJHZW5l cmljIHRhc2tiYXIgbWV0aG9kIHN5c3RlbSBkaXNwYXRjaGVyLiIpCisKKyhkZWZ1biBzeXN0ZW0t dGFza2Jhci0tc2V0LWJhY2stZW5kICgpCisgICJEZXRlcm1pbmUgdGFza2JhciBob3N0IHN5c3Rl bSB0eXBlLiIKKyAgOzsgT3JkZXIgbWF0dGVycyB0byBhY2NvbW1vZGF0ZSB0aGUgY2FzZXMgd2hl cmUgYW4gTlMgb3IgTVMtV2luZG93cworICA7OyBidWlsZCBoYXZlIHRoZSBkYnVzIGZlYXR1cmUu CisgIChzZXRxIHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZAorICAgICAgICAoY29uZCAoKGVxICh3 aW5kb3ctc3lzdGVtKSAnbnMpICducykKKyAgICAgICAgICAgICAgKChlcSAod2luZG93LXN5c3Rl bSkgJ3czMikgJ3czMikKKyAgICAgICAgICAgICAgKChhbmQgKGZlYXR1cmVwICdkYnVzYmluZCkK KyAgICAgICAgICAgICAgICAgICAgKG1lbWJlciAib3JnLmZyZWVkZXNrdG9wLmxvZ2luMSIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZGJ1cy1saXN0LWFjdGl2YXRhYmxlLW5hbWVzIDpz eXN0ZW0pKSkKKyAgICAgICAgICAgICAgICdkYnVzKQorICAgICAgICAgICAgICAodCBuaWwpKSkp CisKKzs7OyMjI2F1dG9sb2FkCisoZGVmaW5lLW1pbm9yLW1vZGUgc3lzdGVtLXRhc2tiYXItbW9k ZQorICAiU3lzdGVtIEdVSSB0YXNrYmFyIGljb24gYmFkZ2UsIHByb2dyZXNzIHJlcG9ydCwgYWxl cnRpbmcuIgorICA6Z2xvYmFsIHQKKyAgKHdoZW4gbm9uaW50ZXJhY3RpdmUKKyAgICAod2FybiAi QmF0Y2ggbW9kZSBkb2VzIG5vdCBzdXBwb3J0IGBzeXN0ZW0tdGFza2JhciciKSkKKyAgKGNvbmQg KHN5c3RlbS10YXNrYmFyLW1vZGUKKyAgICAgICAgIChpZiAoc3lzdGVtLXRhc2tiYXItLXNldC1i YWNrLWVuZCkKKyAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWVuYWJsZSkKKyAgICAgICAg ICAgKHdhcm4gIlN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGBzeXN0ZW0tdGFza2JhciciKSkKKyAg ICAgICAgICh3aGVuIHN5c3RlbS10YXNrYmFyLXVzZS1wcm9ncmVzcy1yZXBvcnRlcgorICAgICAg ICAgICAoc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MtcmVwb3J0ZXItaW5zdGFsbCkpKQorICAgICAg ICAodAorICAgICAgICAgKHN5c3RlbS10YXNrYmFyLXByb2dyZXNzLXJlcG9ydGVyLXJlbW92ZSkK KyAgICAgICAgICh3aGVuIHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZAorICAgICAgICAgICAoc3lz dGVtLXRhc2tiYXItLWRpc2FibGUpCisgICAgICAgICAgIChzZXRxIHN5c3RlbS10YXNrYmFyLS1i YWNrLWVuZCBuaWwpKSkpKQorCisoY2wtZGVmZ2VuZXJpYyBzeXN0ZW0tdGFza2Jhci0tZW5hYmxl ICgpCisgICJFbmFibGUgdGhlIHN5c3RlbS10YXNrYmFyIGJhY2sgZW5kLiIpCisKKyhjbC1kZWZn ZW5lcmljIHN5c3RlbS10YXNrYmFyLS1kaXNhYmxlICgpCisgICJEaXNhYmxlIHRoZSBzeXN0ZW0t dGFza2JhciBiYWNrIGVuZC4iKQorCisoY2wtZGVmZ2VuZXJpYyBzeXN0ZW0tdGFza2Jhci1iYWRn ZSAoJm9wdGlvbmFsIGNvdW50KQorICAiRGlzcGxheSBDT1VOVCBhcyBhbiBvdmVybGF5IG9uIHRo ZSBzeXN0ZW0gdGFza2JhciBFbWFjcyBpY29uLgorSWYgQ09VTlQgaXMgYW4gaW50ZWdlciwgZGlz cGxheSB0aGF0LgorSWYgQ09VTlQgaXMgYSBzdHJpbmcgb24gYmFjayBlbmRzIHRoYXQgc3VwcG9y dCBzdHJpbmdzLCBkaXNwbGF5IHRoYXQuCitUaGUgc3RyaW5nIHNob3VsZCBiZSBzaG9ydC4KK09u IGJhY2sgZW5kcyB3aGljaCBkbyBub3Qgc3VwcG9ydCBzdHJpbmdzLCBjb252ZXJ0IENPVU5UIHRv IGFuIGludGVnZXIKK3VzaW5nIGBzdHJpbmctdG8tbnVtYmVyJyBhbmQgdGVzdGluZyBgaW50ZWdl cnAnLCBvciBuaWwgaWYgdGhhdCBmYWlscy4KK0lmIENPVU5UIGlzIG5pbCBvciBhbiBlbXB0eSBz dHJpbmcsIHJlbW92ZSB0aGUgY291bnRlci4iKQorCisoY2wtZGVmZ2VuZXJpYyBzeXN0ZW0tdGFz a2Jhci1hdHRlbnRpb24gKCZvcHRpb25hbCB1cmdlbmN5IHRpbWVvdXQpCisgICJGbGFzaCB0aGUg c3lzdGVtIHRhc2tiYXIgaWNvbiBhbmQvb3IgZnJhbWUgdG8gYWxlcnQgdGhlIHVzZXIuCitVUkdF TkNZIGNhbiBiZSBvbmUgb2YgdGhlIHN5bWJvbHMgYGluZm9ybWF0aW9uYWwnLCBvciBgY3JpdGlj YWwnLgorSWYgVVJHRU5DWSBpcyBuaWwsIGNsZWFyIHRoZSBhdHRlbnRpb24gaW5kaWNhdG9yLgor CitUaGUgYXR0ZW50aW9uIGluZGljYXRvciBpcyBjbGVhcmVkIGJ5IHRoZSBlYXJsaWVzdCBvZiBi cmluZ2luZyB0aGUgRW1hY3MKK0dVSSBpbnRvIGZvY3VzLCBvciBhZnRlciBUSU1FT1VUIHNlY29u ZHMuICBJZiBUSU1FT1VUIGlzIG5pbCwgdGhlIHN5c3RlbQorR1VJIGJlaGF2aW9yIGhhcyBwcmlv cml0eS4KKworT24gc29tZSBiYWNrIGVuZHMsIGBjcml0aWNhbCcgaGFzIHRoZSBzYW1lIGVmZmVj dCBhcyBgaW5mb3JtYXRpb25hbCcuIikKKworKGNsLWRlZmdlbmVyaWMgc3lzdGVtLXRhc2tiYXIt cHJvZ3Jlc3MgKCZvcHRpb25hbCBwcm9ncmVzcykKKyAgIkRpc3BsYXkgYSBwcm9ncmVzcyBpbmRp Y2F0b3Igb3ZlcmxheSBvbiB0aGUgc3lzdGVtIHRhc2tiYXIgaWNvbi4KK1BST0dSRVNTIGlzIGEg ZmxvYXQgaW4gdGhlIHJhbmdlIDAuMCB0byAxLjAuCitJZiBQUk9HUkVTUyBpcyBuaWwsIHJlbW92 ZSB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yLiIpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci0tdmFs aWRhdGUtcHJvZ3Jlc3MgKHByb2dyZXNzKQorICAiUmV0dXJuIFBST0dSRVNTIGFzIGEgZmxvYXQg aW4gdGhlIHJhbmdlIDAuMCB0byAxLjAsIG9yIG5pbC4iCisgICh3aGVuIChuYXRudW1wIHByb2dy ZXNzKQorICAgIChzZXRxIHByb2dyZXNzIChmbG9hdCBwcm9ncmVzcykpKQorICAod2hlbiAoYW5k IHByb2dyZXNzICg+PSBwcm9ncmVzcyAwLjApICg8PSBwcm9ncmVzcyAxLjApKQorICAgIHByb2dy ZXNzKSkKKworDAorOzsgYHByb2dyZXNzLXJlcG9ydGVyJyBzdXBwb3J0LgorCisoZGVmdW4gc3lz dGVtLXRhc2tiYXItLXByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZSAoX3JlcG9ydGVyIHN0YXRlIHBl cmNlbnRhZ2UgaW5kZXgpCisgICJgcHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRlYCBjYWxsYmFj ay4iCisgIChwY2FzZSBzdGF0ZQorICAgICgndXBkYXRlCisgICAgIChjb25kIChwZXJjZW50YWdl CisgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MgKC8gcGVyY2VudGFnZSAxMDAu MCkpKQorICAgICAgICAgICAoaW5kZXgKKyAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci1wcm9n cmVzcyAoLyAoMSsgaW5kZXgpIDQuMCkpKSkpCisgICAgKCdkb25lCisgICAgIChzeXN0ZW0tdGFz a2Jhci1wcm9ncmVzcyBuaWwpKSkpCisKKwwKKzs7IEQtQnVzIHN1cHBvcnQuCisKKyhkZWZjb25z dCBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1zZXJ2aWNlICJjb20uY2Fub25pY2FsLlVuaXR5IikKKyhk ZWZjb25zdCBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1pbnRlcmZhY2UgImNvbS5jYW5vbmljYWwuVW5p dHkuTGF1bmNoZXJFbnRyeSIpCisKKyhkZWZ2YXIgc3lzdGVtLXRhc2tiYXItLWRidXMtYXR0ZW50 aW9uIG5pbAorICAiTm9uLW5pbCB3aGVuIGF0dGVudGlvbiBpcyByZXF1ZXN0ZWQuIikKKworKGRl ZnVuIHN5c3RlbS10YXNrYmFyLS1kYnVzLXNlbmQtc2lnbmFsIChtZXNzYWdlKQorICAiU2VuZCBN RVNTQUdFIHRvIHRoZSBELUJ1cyBzeXN0ZW0gdGFza2JhciBzZXJ2aWNlLiIKKyAgKGxldCAoKGFw cC11cmkKKyAgICAgICAgIChmb3JtYXQgImFwcGxpY2F0aW9uOi8vJXMuZGVza3RvcCIKKyAgICAg ICAgICAgICAgICAgc3lzdGVtLXRhc2tiYXItZGJ1cy1kZXNrdG9wLWZpbGUtbmFtZSkpKQorICAg IChkYnVzLXNlbmQtc2lnbmFsCisgICAgIDpzZXNzaW9uCisgICAgIHN5c3RlbS10YXNrYmFyLS1k YnVzLXNlcnZpY2UKKyAgICAgIi8iCisgICAgIHN5c3RlbS10YXNrYmFyLS1kYnVzLWludGVyZmFj ZQorICAgICAiVXBkYXRlIgorICAgICBhcHAtdXJpCisgICAgIG1lc3NhZ2UpKSkKKworKGRlZnVu IHN5c3RlbS10YXNrYmFyLS1kYnVzLWNsZWFyLWF0dGVudGlvbi1vbi1mcmFtZS1mb2N1cyAoKQor ICAiQ2xlYXIgYW4gYWN0aXZlIEQtQnVzIGF0dGVudGlvbiByZXF1ZXN0IGlmIGFueSBmcmFtZSBp cyBmb2N1c2VkLiIKKyAgKHdoZW4gKGFuZCBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1hdHRlbnRpb24K KyAgICAgICAgICAgICAoY2F0Y2ggOmNsZWFyCisgICAgICAgICAgICAgICAoZG9saXN0IChmcmFt ZSAoZnJhbWUtbGlzdCkpCisgICAgICAgICAgICAgICAgICh3aGVuIChlcSAoZnJhbWUtZm9jdXMt c3RhdGUgZnJhbWUpIHQpCisgICAgICAgICAgICAgICAgICAgKHRocm93IDpjbGVhciB0KSkpKSkK KyAgICAoc3lzdGVtLXRhc2tiYXItYXR0ZW50aW9uIG5pbCkpKQorCisoZGVmdW4gc3lzdGVtLXRh c2tiYXItZGJ1cy1waW5nLXNlcnZpY2UgKCkKKyAgIlJldHVybiBub24tbmlsIGlmIGBzeXN0ZW0t dGFza2Jhci0tZGJ1cy1zZXJ2aWNlJyByZXNwb25kcy4KK1JldHVybiBuaWwgaWYgbm8gcmVzcG9u c2Ugd2l0aGluIGBzeXN0ZW0tdGFza2Jhci1kYnVzLXRpbWVvdXQnLiIKKyAgKGRidXMtcGluZwor ICAgOnNlc3Npb24KKyAgIHN5c3RlbS10YXNrYmFyLS1kYnVzLXNlcnZpY2UKKyAgIHN5c3RlbS10 YXNrYmFyLWRidXMtdGltZW91dCkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItLWVu YWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5 c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICdkYnVzKSkpCisgICh1bmxlc3MgKHN5c3RlbS10 YXNrYmFyLWRidXMtcGluZy1zZXJ2aWNlKQorICAgIChlcnJvciAiRC1CdXMgc2VydmljZSBgJXMn IHVuYXZhaWxhYmxlIiBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1zZXJ2aWNlKSkKKyAgKHdoZW4gc3lz dGVtLXRhc2tiYXItY2xlYXItYXR0ZW50aW9uLW9uLWZyYW1lLWZvY3VzCisgICAgKGFkZC1mdW5j dGlvbiA6YWZ0ZXIgYWZ0ZXItZm9jdXMtY2hhbmdlLWZ1bmN0aW9uCisgICAgICAgICAgICAgICAg ICAjJ3N5c3RlbS10YXNrYmFyLS1kYnVzLWNsZWFyLWF0dGVudGlvbi1vbi1mcmFtZS1mb2N1cykp KQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFyLS1kaXNhYmxlICgmY29udGV4dAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNr LWVuZCAoZXFsICdkYnVzKSkpCisgIChyZW1vdmUtZnVuY3Rpb24gYWZ0ZXItZm9jdXMtY2hhbmdl LWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgIydzeXN0ZW0tdGFza2Jhci0tZGJ1cy1jbGVh ci1hdHRlbnRpb24tb24tZnJhbWUtZm9jdXMpKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNr YmFyLWJhZGdlICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICdkYnVzKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCBjb3VudCkKKyAgIkRpc3BsYXkgQ09VTlQgYXMg YW4gb3ZlcmxheSBvbiB0aGUgc3lzdGVtIHRhc2tiYXIgRW1hY3MgaWNvbi4KK0lmIENPVU5UIGlz IGFuIGludGVnZXIsIGRpc3BsYXkgdGhhdC4gIElmIENPVU5UIGlzIGEgc3RyaW5nLCBjb252ZXJ0 IGl0Cit0byBhbiBpbnRlZ2VyLCBvciBuaWwgaWYgdGhhdCBmYWlscy4gIElmIENPVU5UIGlzIGFu eSBvdGhlciB0eXBlLCB1c2UKK25pbC4gIElmIENPVU5UIGlzIG5pbCBvciBhbiBlbXB0eSBzdHJp bmcsIHJlbW92ZSB0aGUgYmFkZ2UuCitOb3RlOiBUaGUgVW5pdHkgRC1CdXMgcHJvdG9jb2wgc3Vw cG9ydHMgb25seSBpbnRlZ2VyIGJhZGdlcy4iCisgIChjb25kICgoc3RyaW5ncCBjb3VudCkKKyAg ICAgICAgIChpZiAoc3RyaW5nLWVtcHR5LXAgY291bnQpCisgICAgICAgICAgICAgKHNldHEgY291 bnQgbmlsKQorICAgICAgICAgICAobGV0ICgoY291bnQtMSAoc3RyaW5nLXRvLW51bWJlciBjb3Vu dCkpKQorICAgICAgICAgICAgIChzZXRxIGNvdW50IChpZiAoaW50ZWdlcnAgY291bnQtMSkgY291 bnQtMSBuaWwpKSkpKQorICAgICAgICAoKG5vdCAoaW50ZWdlcnAgY291bnQpKQorICAgICAgICAg KHNldHEgY291bnQgbmlsKSkpCisgIChzeXN0ZW0tdGFza2Jhci0tZGJ1cy1zZW5kLXNpZ25hbAor ICAgYCgoOmRpY3QtZW50cnkgImNvdW50LXZpc2libGUiCisgICAgICAgICAgICAgICAgICAoOnZh cmlhbnQgOmJvb2xlYW4gLChub3QgKG51bGwgY291bnQpKSkpCisgICAgICg6ZGljdC1lbnRyeSAi Y291bnQiCisgICAgICAgICAgICAgICAgICAoOnZhcmlhbnQgOnVpbnQzMiAsKGlmIChudWxsIGNv dW50KSAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCkpKSkp KQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFyLWF0dGVudGlvbiAoJmNvbnRleHQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJh Y2stZW5kIChlcWwgJ2RidXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZvcHRpb25hbCB1cmdlbmN5IHRpbWVvdXQpCisgICJSZXF1ZXN0IFVSR0VOQ1kgdXNlciBh dHRlbnRpb24gb24gdGhlIHN5c3RlbSB0YXNrYmFyIEVtYWNzIGljb24uCitUaGUgcmVxdWVzdCB3 aWxsIHRpbWUgb3V0IHdpdGhpbiB0aGUgVElNRU9VVCBzZWNvbmRzIGludGVydmFsLgorVGhlIFVu aXR5IEQtQnVzIHByb3RvY29sIGRvZXMgbm90IHN1cHBvcnQgZGlmZmVyZW50aWF0ZWQgdXJnZW5j aWVzLiIKKyAgKHNldHEgc3lzdGVtLXRhc2tiYXItLWRidXMtYXR0ZW50aW9uIHVyZ2VuY3kpCisg IChzeXN0ZW0tdGFza2Jhci0tZGJ1cy1zZW5kLXNpZ25hbAorICAgYCgoOmRpY3QtZW50cnkgInVy Z2VudCIKKyAgICAgICAgICAgICAgICAgICg6dmFyaWFudCA6Ym9vbGVhbiAsKG5vdCAobnVsbCB1 cmdlbmN5KSkpKSkpCisgICh3aGVuIChhbmQgdXJnZW5jeSB0aW1lb3V0KQorICAgIChydW4td2l0 aC10aW1lcgorICAgICB0aW1lb3V0CisgICAgIG5pbAorICAgICAjJ3N5c3RlbS10YXNrYmFyLWF0 dGVudGlvbiBuaWwpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci1wcm9ncmVzcyAo JmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0t dGFza2Jhci0tYmFjay1lbmQgKGVxbCAnZGJ1cykpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmb3B0aW9uYWwgcHJvZ3Jlc3MpCisgICJEaXNwbGF5IGEgcHJvZ3Jlc3Mg YmFyIG92ZXJsYXkgb24gdGhlIHN5c3RlbSB0YXNrYmFyIGljb24uCitQUk9HUkVTUyBpcyBhIGZs b2F0IGluIHRoZSByYW5nZSAwLjAgdG8gMS4wLgorSWYgUFJPR1JFU1MgaXMgbmlsLCByZW1vdmUg dGhlIHByb2dyZXNzIGJhci4iCisgIChzZXRxIHByb2dyZXNzIChzeXN0ZW0tdGFza2Jhci0tdmFs aWRhdGUtcHJvZ3Jlc3MgcHJvZ3Jlc3MpKQorICAoc3lzdGVtLXRhc2tiYXItLWRidXMtc2VuZC1z aWduYWwKKyAgIGAoKDpkaWN0LWVudHJ5ICJwcm9ncmVzcy12aXNpYmxlIgorICAgICAgICAgICAg ICAgICAgKDp2YXJpYW50IDpib29sZWFuICwobm90IChudWxsIHByb2dyZXNzKSkpKQorICAgICAo OmRpY3QtZW50cnkgInByb2dyZXNzIgorICAgICAgICAgICAgICAgICAgKDp2YXJpYW50IDpkb3Vi bGUgLChpZiAobnVsbCBwcm9ncmVzcykgMCBwcm9ncmVzcykpKSkpKQorCisMCis7OyBtYWNPUy9H TlVzdGVwIE5TIHN1cHBvcnQuCisKKyhkZWNsYXJlLWZ1bmN0aW9uIG5zLWJhZGdlICJuc2Zucy5t IikKKyhkZWNsYXJlLWZ1bmN0aW9uIG5zLXJlcXVlc3QtdXNlci1hdHRlbnRpb24gIm5zZm5zLm0i KQorKGRlY2xhcmUtZnVuY3Rpb24gbnMtcHJvZ3Jlc3MtaW5kaWNhdG9yICJuc2Zucy5tIikKKwor KGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tZW5hYmxlICgmY29udGV4dAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChl cWwgJ25zKSkpCisgIChpZ25vcmUpKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFyLS1k aXNhYmxlICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICducykpKQorICAoaWdub3JlKSkKKworKGNs LWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci1iYWRnZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAnbnMp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbmFsIGNvdW50KQor ICAiRGlzcGxheSBDT1VOVCBhcyBhbiBvdmVybGF5IG9uIHRoZSBEb2NrIGJhZGdlLgorSWYgQ09V TlQgaXMgYW4gaW50ZWdlciBvciBhIG5vbi1lbXB0eSBzdHJpbmcsIGRpc3BsYXkgdGhhdC4gIElm IENPVU5UIGlzCituaWwgb3IgYW4gZW1wdHkgc3RyaW5nLCBjbGVhciB0aGUgYmFkZ2Ugb3Zlcmxh eS4KK05vdGU6IE5TIHdpbGwgYWJicmV2aWF0ZSBsb25nIHN0cmluZ3MgdG8gZml0IHRoZSBiYWRn ZSdzIGFsbG9jYXRlZAorc3BhY2UuIgorICAoY29uZCAoKHN0cmluZ3AgY291bnQpCisgICAgICAg ICAod2hlbiAoc3RyaW5nLWVtcHR5LXAgY291bnQpCisgICAgICAgICAgIChzZXRxIGNvdW50IG5p bCkpKQorICAgICAgICAoKGludGVnZXJwIGNvdW50KQorICAgICAgICAgKHNldHEgY291bnQgKG51 bWJlci10by1zdHJpbmcgY291bnQpKSkKKyAgICAgICAgKHQgKHNldHEgY291bnQgbmlsKSkpCisg IChucy1iYWRnZSBjb3VudCkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItYXR0ZW50 aW9uICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz eXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAnbnMpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCB1cmdlbmN5IHRpbWVvdXQpCisgICJSZXF1ZXN0 IFVSR0VOQ1kgdXNlciBhdHRlbnRpb24gb24gdGhlIERvY2suCitUaGUgYXR0ZW50aW9uIGluZGlj YXRvciB3aWxsIGJlIGNsZWFyZWQgYWZ0ZXIgVElNRU9VVCBzZWNvbmRzLiIKKyAgKG5zLXJlcXVl c3QtdXNlci1hdHRlbnRpb24gdXJnZW5jeSkKKyAgKHdoZW4gKGFuZCB1cmdlbmN5IHRpbWVvdXQp CisgICAgKHJ1bi13aXRoLXRpbWVyCisgICAgIHRpbWVvdXQKKyAgICAgbmlsCisgICAgICMnc3lz dGVtLXRhc2tiYXItYXR0ZW50aW9uIG5pbCkpKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNr YmFyLXByb2dyZXNzICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICducykpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgcHJvZ3Jlc3MpCisgICJEaXNwbGF5 IGEgcHJvZ3Jlc3MgYmFyIG92ZXJsYXkgb24gdGhlIERvY2sgYW5kIEFwcCBTd2l0Y2hlci4KK1BS T0dSRVNTIGlzIGEgZmxvYXQgaW4gdGhlIHJhbmdlIDAuMCB0byAxLjAuCitJZiBQUk9HUkVTUyBp cyBuaWwsIHJlbW92ZSB0aGUgcHJvZ3Jlc3MgYmFyLiIKKyAgKG5zLXByb2dyZXNzLWluZGljYXRv ciAoc3lzdGVtLXRhc2tiYXItLXZhbGlkYXRlLXByb2dyZXNzIHByb2dyZXNzKSkpCisKKwwKKzs7 IE1TLVdpbmRvd3Mgc3VwcG9ydC4KKworKGRlY2xhcmUtZnVuY3Rpb24gdzMyLWJhZGdlICJ3MzJm bnMuYyIpCisoZGVjbGFyZS1mdW5jdGlvbiB3MzItcmVxdWVzdC11c2VyLWF0dGVudGlvbiAidzMy Zm5zLmMiKQorKGRlY2xhcmUtZnVuY3Rpb24gdzMyLXByb2dyZXNzLWluZGljYXRvciAidzMyZm5z LmMiKQorCisoZGVmdmFyIHN5c3RlbS10YXNrYmFyLXczMi1iYWRnZS1iYWNrZ3JvdW5kICIjZTc1 ODU3IiA7IHJlZGlzaAorICAidzMyIGJhZGdlIGJhY2tncm91bmQgUkdCIHRyaXBsZSBzdHJpbmcu IikKKworKGRlZnZhciBzeXN0ZW0tdGFza2Jhci13MzItYmFkZ2UtZm9yZWdyb3VuZCAiI2ZmZmZm ZiIgOyB3aGl0ZQorICAidzMyIGJhZGdlIGZvcmVncm91bmQgUkdCIHRyaXBsZSBzdHJpbmcuIikK KworKGRlZnVuIHN5c3RlbS10YXNrYmFyLS13MzItY2xlYXItZnJhbWUtaW5kaWNhdG9ycyAoZnJh bWUpCisgIDs7IE5PVEU6IFVwZGF0ZSB0aGUgYmVsb3cgaWYgYWRkaW5nIG5ldyB3MzIgc3lzdGVt LXRhc2tiYXIgZnVuY3Rpb25zLgorICAod2l0aC1zZWxlY3RlZC1mcmFtZSBmcmFtZQorICAgIChz eXN0ZW0tdGFza2Jhci1iYWRnZSBuaWwpCisgICAgKHN5c3RlbS10YXNrYmFyLWF0dGVudGlvbiBu aWwpCisgICAgKHN5c3RlbS10YXNrYmFyLXByb2dyZXNzIG5pbCkpKQorCisoY2wtZGVmbWV0aG9k IHN5c3RlbS10YXNrYmFyLS1lbmFibGUgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAndzMyKSkpCisg IDs7IENsZWFyIHN5c3RlbS10YXNrYmFyIGluZGljYXRvcnMgZm9yIGEgZnJhbWUgd2hlbiBpdCBp cyBkZWxldGVkLgorICAoYWRkLWhvb2sgJ2RlbGV0ZS1mcmFtZS1mdW5jdGlvbnMKKyAgICAgICAg ICAgICMnc3lzdGVtLXRhc2tiYXItLXczMi1jbGVhci1mcmFtZS1pbmRpY2F0b3JzKSkKKworKGNs LWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tZGlzYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVx bCAndzMyKSkpCisgIChyZW1vdmUtaG9vayAnZGVsZXRlLWZyYW1lLWZ1bmN0aW9ucworICAgICAg ICAgICAgICAgIydzeXN0ZW0tdGFza2Jhci0tdzMyLWNsZWFyLWZyYW1lLWluZGljYXRvcnMpKQor CisoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFyLWJhZGdlICgmY29udGV4dAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFs ICd3MzIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbmFsIGNv dW50KQorICAiRGlzcGxheSBhIENPVU5UIG92ZXJsYXkgb24gdGhlIHN5c3RlbSB0YXNrYmFyIGlj b24uCitUaGUgdGFza2JhciBpY29uIHRhcmdldCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHNlbGVj dGVkIGZyYW1lLgorCitJZiBDT1VOVCBpcyBhbiBpbnRlZ2VyIG9yIGEgbm9uLWVtcHR5IHN0cmlu ZywgZGlzcGxheSB0aGF0LiAgSWYgQ09VTlQgaXMKK25pbCBvciBhbiBlbXB0eSBzdHJpbmcsIGNs ZWFyIHRoZSBiYWRnZS4KKworRHVlIHRvIE1TLVdpbmRvd3MgaWNvbiBvdmVybGF5IHNpemUgbGlt aXRhdGlvbnMsIGlmIENPVU5UIGlzIGFuIGludGVnZXIKK2FuZCBpcyBvdXRzaWRlIHRoZSByYW5n ZSAtOTkgdG8gOTksIGRpc3BsYXkgXCItOTlcIiBhbmQgXCI5OStcIiwKK3Jlc3BlY3RpdmVseSwg aWYgQ09VTlQgaXMgYSBzdHJpbmcgbG9uZ2VyIHRoYW4gMiBjaGFyYWN0ZXJzIHRydW5jYXRlIGl0 Cit1c2luZyBgdHJ1bmNhdGUtc3RyaW5nLXRvLXdpZHRoYC4KKworQ29uc3VsdCBgc3lzdGVtLXRh c2tiYXItdzMyLWJhZGdlLWJhY2tncm91bmRgIGFuZAorYHN5c3RlbS10YXNrYmFyLXczMi1iYWRn ZS1mb3JlZ3JvdW5kYCBmb3IgdGhlIGJhY2tncm91bmQgYW5kIGZvcmVncm91bmQKK2NvbG9ycyBm b3IgdGhlIHBhaW50ZWQgb3ZlcmxheS4iCisgIChjb25kICgoc3RyaW5ncCBjb3VudCkKKyAgICAg ICAgIChpZiAoc3RyaW5nLWVtcHR5LXAgY291bnQpCisgICAgICAgICAgICAgKHNldHEgY291bnQg bmlsKQorICAgICAgICAgICAod2hlbiAobGVuZ3RoPiBjb3VudCAyKQorICAgICAgICAgICAgIChz ZXRxIGNvdW50ICh0cnVuY2F0ZS1zdHJpbmctdG8td2lkdGggY291bnQgMyAwIG5pbCB0KSkpKSkK KyAgICAgICAgKChpbnRlZ2VycCBjb3VudCkKKyAgICAgICAgIChpZiAoYW5kICg+IGNvdW50IC0x MDApCisgICAgICAgICAgICAgICAgICAoPCBjb3VudCAxMDApKQorICAgICAgICAgICAgIChzZXRx IGNvdW50IChudW1iZXItdG8tc3RyaW5nIGNvdW50KSkKKyAgICAgICAgICAgKGlmICg8IGNvdW50 IDApCisgICAgICAgICAgICAgICAoc2V0cSBjb3VudCAiLTk5IikKKyAgICAgICAgICAgICAoc2V0 cSBjb3VudCAiOTkrIikpKSkKKyAgICAgICAgKHQgKHNldHEgY291bnQgbmlsKSkpCisgICh3MzIt YmFkZ2UgY291bnQKKyAgICAgICAgICAgICBzeXN0ZW0tdGFza2Jhci13MzItYmFkZ2UtYmFja2dy b3VuZAorICAgICAgICAgICAgIHN5c3RlbS10YXNrYmFyLXczMi1iYWRnZS1mb3JlZ3JvdW5kKSkK KworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gKCZjb250ZXh0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNr LWVuZCAoZXFsICd3MzIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZvcHRpb25hbCB1cmdlbmN5IHRpbWVvdXQpCisgICJSZXF1ZXN0IFVSR0VOQ1kgdXNlciBhdHRl bnRpb24gb24gdGhlIHN5c3RlbSB0YXNrYmFyIGljb24uCitJbmRpY2F0ZSB0aGUgaWNvbiBhc3Nv Y2lhdGVkIHdpdGggdGhlIHNlbGVjdGVkIGZyYW1lLgorSWYgVVJHRU5DWSBpcyB0aGUgc3ltYm9s IGBpbmZvcm1hdGlvbmFsJywgZmxhc2ggdGhlIHRhc2tiYXIgaWNvbi4KK0lmIFVSR0VOQ1kgaXMg dGhlIHN5bWJvbCBgY3JpdGljYWwnLCBmbGFzaCB0aGUgdGFza2JhciBpY29uIGFuZCB0aGUKK01T LVdpbmRvd3Mgd2luZG93IGZyYW1lLgorQ2xlYXIgYXR0ZW50aW9uIGluZGljYXRvciBhZnRlciBU SU1FT1VUIHNlY29uZHMuICBJZiBUSU1FT1VUIGlzIG5pbCwKK2RlZmF1bHQgdG8gTVMtV2luZG93 cyBkZWZhdWx0IGJlaGF2aW9yLiIKKyAgKHczMi1yZXF1ZXN0LXVzZXItYXR0ZW50aW9uIHVyZ2Vu Y3kpCisgICh3aGVuIChhbmQgdXJnZW5jeSB0aW1lb3V0KQorICAgIChydW4td2l0aC10aW1lcgor ICAgICB0aW1lb3V0CisgICAgIG5pbAorICAgICAjJ3N5c3RlbS10YXNrYmFyLWF0dGVudGlvbiBu aWwpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci1wcm9ncmVzcyAoJmNvbnRleHQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0t YmFjay1lbmQgKGVxbCAndzMyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZvcHRpb25hbCBwcm9ncmVzcykKKyAgIkRpc3BsYXkgYSBwcm9ncmVzcyBiYXIgb24gdGhl IHN5c3RlbSB0YXNrYmFyIGljb24uCitQUk9HUkVTUyBpcyBhIGZsb2F0IGluIHRoZSByYW5nZSAw LjAgdG8gMS4wLgorSWYgUFJPR1JFU1MgaXMgbmlsLCByZW1vdmUgdGhlIHByb2dyZXNzIGJhci4i CisgICh3MzItcHJvZ3Jlc3MtaW5kaWNhdG9yIChzeXN0ZW0tdGFza2Jhci0tdmFsaWRhdGUtcHJv Z3Jlc3MgcHJvZ3Jlc3MpKSkKKworDAorCisocHJvdmlkZSAnc3lzdGVtLXRhc2tiYXIpCisKKzs7 OyBzeXN0ZW0tdGFza2Jhci5lbCBlbmRzIGhlcmUKZGlmZiAtLWdpdCBhL3NyYy9uc2Zucy5tIGIv c3JjL25zZm5zLm0KaW5kZXggMzUyOGM0YWNkNTAuLjFhOGY5NWMxNGVmIDEwMDY0NAotLS0gYS9z cmMvbnNmbnMubQorKysgYi9zcmMvbnNmbnMubQpAQCAtMzY3NCw2ICszNjc0LDEyOSBAQCBUaGUg cG9zaXRpb24gaXMgcmV0dXJuZWQgYXMgYSBjb25zIGNlbGwgKFggLiBZKSBvZiB0aGUKICAgcmV0 dXJuIFFuaWw7CiB9CiAKK0RFRlVOICgibnMtYmFkZ2UiLCBGbnNfYmFkZ2UsIFNuc19iYWRnZSwg MSwgMSwgMCwKKyAgICAgICBkb2M6IC8qIFNldCB0aGUgYXBwIGljb24gYmFkZ2UgdG8gQkFER0Uu CitCQURHRSBzaG91bGQgYmUgYSBzdHJpbmcgc2hvcnQgZW5vdWdoIHRvIGRpc3BsYXkgbmljZWx5 IGluIHRoZSBzaG9ydAorc3BhY2UgaW50ZW5kZWQgZm9yIGJhZGdlcy4KK0lmIEJBREdFIGlzIG5p bCwgY2xlYXIgdGhlIGFwcCBiYWRnZS4gICovKQorICAoTGlzcF9PYmplY3QgYmFkZ2UpCit7Cisg IGJsb2NrX2lucHV0ICgpOworICBpZiAoTklMUCAoYmFkZ2UpKQorICAgIFtbTlNBcHAgZG9ja1Rp bGVdIHNldEJhZGdlTGFiZWw6IG5pbF07CisgIGVsc2UKKyAgICB7CisgICAgICBDSEVDS19TVFJJ TkcgKGJhZGdlKTsKKyAgICAgIFtbTlNBcHAgZG9ja1RpbGVdIHNldEJhZGdlTGFiZWw6CisJCQkg IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzogU1NEQVRBIChiYWRnZSldXTsKKyAgICB9 CisgIHVuYmxvY2tfaW5wdXQgKCk7CisgIHJldHVybiBRbmlsOworfQorCisvKiBVc2UgLTEgdG8g aW5kaWNhdGUgbm8gYWN0aXZlIHJlcXVlc3QuICAqLworc3RhdGljIE5TSW50ZWdlciBuc19yZXF1 ZXN0X3VzZXJfYXR0ZW50aW9uX2lkID0gLTE7CisKK0RFRlVOICgibnMtcmVxdWVzdC11c2VyLWF0 dGVudGlvbiIsCisgICAgICAgRm5zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24sCisgICAgICAgU25z X3JlcXVlc3RfdXNlcl9hdHRlbnRpb24sCisgICAgICAgMSwgMSwgMCwKKyAgICAgICBkb2M6IC8q IEJvdW5jZSB0aGUgYXBwIGRvY2sgaWNvbiB0byByZXF1ZXN0IHVzZXIgYXR0ZW50aW9uLgorSWYg VVJHRU5DWSBuaWwsIGNhbmNlbCB0aGUgb3V0c3RhbmRpbmcgcmVxdWVzdCwgaWYgYW55LgorSWYg VVJHRU5DWSBpcyB0aGUgc3ltYm9sIGBpbmZvcm1hdGlvbmFsJywgYm91bmNpbmcgbGFzdHMgYSBm ZXcgc2Vjb25kcy4KK0lmIFVSR0VOQ1kgaXMgdGhlIHN5bWJvbCBgY3JpdGljYWwnLCBib3VuY2lu ZyBsYXN0cyB1bnRpbCBFbWFjcyBpcworZm9jdXNlZC4gICovKQorICAoTGlzcF9PYmplY3QgdXJn ZW5jeSkKK3sKKyAgYmxvY2tfaW5wdXQgKCk7CisgIGlmIChuc19yZXF1ZXN0X3VzZXJfYXR0ZW50 aW9uX2lkICE9IC0xKQorICAgIHsKKyAgICAgIFtOU0FwcCBjYW5jZWxVc2VyQXR0ZW50aW9uUmVx dWVzdDogbnNfcmVxdWVzdF91c2VyX2F0dGVudGlvbl9pZF07CisgICAgICBuc19yZXF1ZXN0X3Vz ZXJfYXR0ZW50aW9uX2lkID0gLTE7CisgICAgfQorICBpZiAoIU5JTFAgKHVyZ2VuY3kpICYmIFNZ TUJPTFAgKHVyZ2VuY3kpKQorICAgIHsKKyAgICAgIGlmIChFUSAodXJnZW5jeSwgUWluZm9ybWF0 aW9uYWwpKQorCW5zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb25faWQgPSBbTlNBcHAgcmVxdWVzdFVz ZXJBdHRlbnRpb246CisJCQkJCQlOU0luZm9ybWF0aW9uYWxSZXF1ZXN0XTsKKyAgICAgIGVsc2Ug aWYgKEVRICh1cmdlbmN5LCBRY3JpdGljYWwpKQorCW5zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb25f aWQgPSBbTlNBcHAgcmVxdWVzdFVzZXJBdHRlbnRpb246CisJCQkJCQlOU0NyaXRpY2FsUmVxdWVz dF07CisgICAgfQorICB1bmJsb2NrX2lucHV0ICgpOworICByZXR1cm4gUW5pbDsKK30KKworREVG VU4gKCJucy1wcm9ncmVzcy1pbmRpY2F0b3IiLAorICAgICAgIEZuc19wcm9ncmVzc19pbmRpY2F0 b3IsCisgICAgICAgU25zX3Byb2dyZXNzX2luZGljYXRvciwKKyAgICAgICAxLCAxLCAwLAorICAg ICAgIGRvYzogLyogQm91bmNlIHRoZSBhcHAgZG9jayBpY29uIHRvIHJlcXVlc3QgdXNlciBhdHRl bnRpb24uCisJICAgICAgIFBST0dSRVNTIGlzIGEgZmxvYXQgYmV0d2VlbiAwLjAgYW5kIDEuMC4K KwkgICAgICAgSWYgUFJPR1JFU1MgaXMgbmlsLCByZW1vdmUgdGhlIHByb2dyZXNzIGluZGljYXRv ci4gICovKQorICAoTGlzcF9PYmplY3QgcHJvZ3Jlc3MpCit7CisgIGJsb2NrX2lucHV0ICgpOwor ICBOU0RvY2tUaWxlICpkb2NrX3RpbGUgPSBbTlNBcHAgZG9ja1RpbGVdOworICAvKiBVc2UgTlNM ZXZlbEluZGljYXRvciB3aXRoIHJlbGlhYmxlIHJlZHJhd3MsIG5vdCBOU1Byb2dyZXNzSW5kaWNh dG9yLiAgKi8KKyAgTlNMZXZlbEluZGljYXRvciAqbGV2ZWxfaW5kaWNhdG9yOworICAvKiBSZXVz ZSB0aGUgaW5kaWNhdG9yIHN1YnZpZXcgb3IgY3JlYXRlIG9uZS4gKi8KKyAgaWYgKGRvY2tfdGls ZS5jb250ZW50VmlldworICAgICAgJiYgW1tkb2NrX3RpbGUuY29udGVudFZpZXcgc3Vidmlld3Nd IGNvdW50XSA+IDAKKyAgICAgICYmIFtbW2RvY2tfdGlsZS5jb250ZW50VmlldyBzdWJ2aWV3c10g bGFzdE9iamVjdF0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlzS2luZE9mQ2xhc3M6W05TTGV2 ZWxJbmRpY2F0b3IgY2xhc3NdXSkKKyAgICBsZXZlbF9pbmRpY2F0b3IgPQorICAgICAgKE5TTGV2 ZWxJbmRpY2F0b3IgKilbW1tkb2NrX3RpbGUgY29udGVudFZpZXddIHN1YnZpZXdzXSBsYXN0T2Jq ZWN0XTsKKyAgICBlbHNlCisgICAgICB7CisJaWYgKCFkb2NrX3RpbGUuY29udGVudFZpZXcpCisJ ICB7CisJICAgIE5TSW1hZ2VWaWV3KiBpbWFnZV92aWV3ID0gW1tOU0ltYWdlVmlldyBhbGxvY10g aW5pdF07CisJICAgIFtpbWFnZV92aWV3IHNldEltYWdlOiBbTlNBcHAgYXBwbGljYXRpb25JY29u SW1hZ2VdXTsKKwkgICAgW2RvY2tfdGlsZSBzZXRDb250ZW50VmlldzogaW1hZ2Vfdmlld107CisJ ICB9CisJLyogU2V0IHdpZHRoIHRvIHRoZSB3aWR0aCBvZiB0aGUgYXBwbGljYXRpb24gaWNvbiwg YW5kIGhlaWdodCB0bworCSAgICUgb2YgdGhlIGljb24gaGVpZ2h0IHRvIHJlc3BlY3Qgc2NhbGVk IGljb25zLiAgKi8KKwlmbG9hdCB3aWR0aCA9IFtbTlNBcHAgYXBwbGljYXRpb25JY29uSW1hZ2Vd IHNpemVdLndpZHRoOworCWZsb2F0IGhlaWdodCA9IDAuMTAgKiBbW05TQXBwIGFwcGxpY2F0aW9u SWNvbkltYWdlXSBzaXplXS5oZWlnaHQ7CisJbGV2ZWxfaW5kaWNhdG9yID0KKwkgIFtbTlNMZXZl bEluZGljYXRvciBhbGxvY10gaW5pdFdpdGhGcmFtZToKKwkJCQkgICAgICBOU01ha2VSZWN0ICgw LjAsIDAuMCwKKwkJCQkJCSAgd2lkdGgsIGhlaWdodCldOworCVtsZXZlbF9pbmRpY2F0b3Igc2V0 V2FudHNMYXllcjogWUVTXTsgLyogUGVyZm9ybWFuY2UuICAqLworCVtsZXZlbF9pbmRpY2F0b3Ig c2V0RW5hYmxlZDogTk9dOyAvKiBJZ25vcmUgbW91c2UgaW5wdXQuICAqLworCVtsZXZlbF9pbmRp Y2F0b3Igc2V0TGV2ZWxJbmRpY2F0b3JTdHlsZToKKwkJCSAgIE5TTGV2ZWxJbmRpY2F0b3JTdHls ZUNvbnRpbnVvdXNDYXBhY2l0eV07CisJLyogTWF0Y2ggTlNQcm9ncmVzc0luZGljYXRvciBjb2xv ci4gICovCisJW2xldmVsX2luZGljYXRvciBzZXRGaWxsQ29sb3I6IFtOU0NvbG9yIGNvbnRyb2xB Y2NlbnRDb2xvcl1dOworCVtsZXZlbF9pbmRpY2F0b3Igc2V0TWluVmFsdWU6IDAuMF07CisJW2xl dmVsX2luZGljYXRvciBzZXRNYXhWYWx1ZTogMS4wXTsKKwkvKiBUaGUgY29udGVudFZpZXcgdGFr ZXMgb3duZXJzaGlwLiAgKi8KKwlbZG9ja190aWxlLmNvbnRlbnRWaWV3IGFkZFN1YnZpZXc6IGxl dmVsX2luZGljYXRvcl07CisgICAgICB9CisgIGRvdWJsZSBwcm9ncmVzc192YWx1ZTsKKyAgQk9P TCBoaWRlID0gKE5JTFAgKHByb2dyZXNzKQorCSAgICAgICB8fCAoIU5JTFAgKHByb2dyZXNzKSAm JiAhKEZMT0FUUCAocHJvZ3Jlc3MpKSkpOworICBpZiAoIWhpZGUpCisgICAgeworICAgICAgcHJv Z3Jlc3NfdmFsdWUgPSBYRkxPQVRfREFUQSAocHJvZ3Jlc3MpOworICAgICAgaGlkZSA9IChwcm9n cmVzc192YWx1ZSA8IDAuMCB8fCBwcm9ncmVzc192YWx1ZSA+IDEuMCk7CisgICAgfQorICBpZiAo aGlkZSkKKyAgICB7CisgICAgICBbbGV2ZWxfaW5kaWNhdG9yIHNldERvdWJsZVZhbHVlOiAwLjBd OworICAgICAgW2xldmVsX2luZGljYXRvciBzZXRIaWRkZW46IFlFU107CisgICAgfQorICBlbHNl CisgICAgeworICAgICAgW2xldmVsX2luZGljYXRvciBzZXREb3VibGVWYWx1ZTogcHJvZ3Jlc3Nf dmFsdWVdOworICAgICAgW2xldmVsX2luZGljYXRvciBzZXRIaWRkZW46IE5PXTsKKyAgICB9Cisg IFtkb2NrX3RpbGUgZGlzcGxheV07CisgIHVuYmxvY2tfaW5wdXQgKCk7CisgIHJldHVybiBRbmls OworfQorCiAjaWZkZWYgTlNfSU1QTF9DT0NPQQogCiBERUZVTiAoIm5zLXNlbmQtaXRlbXMiLApA QCAtMzk1Nyw2ICs0MDgwLDkgQEAgLSAoTGlzcF9PYmplY3QpbGlzcFN0cmluZwogICBkZWZzdWJy ICgmU25zX3NldF9tb3VzZV9hYnNvbHV0ZV9waXhlbF9wb3NpdGlvbik7CiAgIGRlZnN1YnIgKCZT bnNfbW91c2VfYWJzb2x1dGVfcGl4ZWxfcG9zaXRpb24pOwogICBkZWZzdWJyICgmU25zX3Nob3df Y2hhcmFjdGVyX3BhbGV0dGUpOworICBkZWZzdWJyICgmU25zX2JhZGdlKTsKKyAgZGVmc3ViciAo JlNuc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uKTsKKyAgZGVmc3ViciAoJlNuc19wcm9ncmVzc19p bmRpY2F0b3IpOwogI2lmZGVmIE5TX0lNUExfQ09DT0EKICAgZGVmc3ViciAoJlNuc19zZW5kX2l0 ZW1zKTsKICNlbmRpZgpAQCAtNDAyMyw0ICs0MTQ5LDYgQEAgLSAoTGlzcF9PYmplY3QpbGlzcFN0 cmluZwogICBERUZTWU0gKFFhc3NxX2RlbGV0ZV9hbGwsICJhc3NxLWRlbGV0ZS1hbGwiKTsKICAg REVGU1lNIChRcnVuX2F0X3RpbWUsICJydW4tYXQtdGltZSIpOwogICBERUZTWU0gKFF4X2hpZGVf dGlwLCAieC1oaWRlLXRpcCIpOworICBERUZTWU0gKFFpbmZvcm1hdGlvbmFsLCAiaW5mb3JtYXRp b25hbCIpOworICBERUZTWU0gKFFjcml0aWNhbCwgImNyaXRpY2FsIik7CiB9CmRpZmYgLS1naXQg YS9zcmMvdzMyZm5zLmMgYi9zcmMvdzMyZm5zLmMKaW5kZXggNjc5ZTgxOTdmZDguLjFhMmZjOWU4 ODQyIDEwMDY0NAotLS0gYS9zcmMvdzMyZm5zLmMKKysrIGIvc3JjL3czMmZucy5jCkBAIC0zNSw3 ICszNSwxMiBAQCAjZGVmaW5lIF9XSU4zMl9XSU5OVCAweDA2MDAKICNpbmNsdWRlIDxjLWN0eXBl Lmg+CiAKICNkZWZpbmUgQ09CSk1BQ1JPUyAvKiBBc2sgZm9yIEMgZGVmaW5pdGlvbnMgZm9yIENP TS4gICovCisjaWYgIWRlZmluZWQgTUlOR1dfVzY0ICYmICFkZWZpbmVkIENZR1dJTgorIyBkZWZp bmUgSU5JVEdVSUQKKyNlbmRpZgorI2luY2x1ZGUgPGluaXRndWlkLmg+CiAjaW5jbHVkZSA8c2hs b2JqLmg+CisjaW5jbHVkZSA8c2hvYmppZGwuaD4KICNpbmNsdWRlIDxvbGVpZGwuaD4KICNpbmNs dWRlIDxvYmppZGwuaD4KICNpbmNsdWRlIDxvbGUyLmg+CkBAIC0yMzcsNiArMjQyLDggQEAgREVD TEFSRV9IQU5ETEUoSE1PTklUT1IpOwogdHlwZWRlZiBCT09MIChXSU5BUEkgKiBTZXRHZXN0dXJl Q29uZmlnX3Byb2MpIChIV05ELCBEV09SRCwgVUlOVCwKIAkJCQkJICAgICAgIEVtYWNzX1BHRVNU VVJFQ09ORklHLCBVSU5UKTsKIAordHlwZWRlZiBCT09MIChXSU5BUEkgKiBGbGFzaFdpbmRvd0V4 X1Byb2MpIChQRkxBU0hXSU5GTyBwZndpKTsKKwogc3RhdGljIFRyYWNrTW91c2VFdmVudF9Qcm9j IHRyYWNrX21vdXNlX2V2ZW50X2ZuID0gTlVMTDsKIHN0YXRpYyBJbW1HZXRDb21wb3NpdGlvblN0 cmluZ19Qcm9jIGdldF9jb21wb3NpdGlvbl9zdHJpbmdfZm4gPSBOVUxMOwogc3RhdGljIEltbUdl dENvbnRleHRfUHJvYyBnZXRfaW1lX2NvbnRleHRfZm4gPSBOVUxMOwpAQCAtMjU5LDYgKzI2Niw3 IEBAIERFQ0xBUkVfSEFORExFKEhNT05JVE9SKTsKIHN0YXRpYyBXVFNSZWdpc3RlclNlc3Npb25O b3RpZmljYXRpb25fUHJvYyBXVFNSZWdpc3RlclNlc3Npb25Ob3RpZmljYXRpb25fZm4gPSBOVUxM Owogc3RhdGljIFJlZ2lzdGVyVG91Y2hXaW5kb3dfcHJvYyBSZWdpc3RlclRvdWNoV2luZG93X2Zu ID0gTlVMTDsKIHN0YXRpYyBTZXRHZXN0dXJlQ29uZmlnX3Byb2MgU2V0R2VzdHVyZUNvbmZpZ19m biA9IE5VTEw7CitzdGF0aWMgRmxhc2hXaW5kb3dFeF9Qcm9jIGZsYXNoX3dpbmRvd19leF9mbiA9 IE5VTEw7CiAKIGV4dGVybiBBcHBlbmRNZW51V19Qcm9jIHVuaWNvZGVfYXBwZW5kX21lbnU7CiAK QEAgLTExMDEwLDYgKzExMDE4LDMxMyBAQCBERUZVTiAoInczMi1zeXN0ZW0taWRsZS10aW1lIiwg RnczMl9zeXN0ZW1faWRsZV90aW1lLCBTdzMyX3N5c3RlbV9pZGxlX3RpbWUsCiAKICNlbmRpZgog CisMCisjaWZkZWYgV0lORE9XU05UCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCQkgICAgIFRhc2tiYXIg SW5kaWNhdG9ycworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIE1JTkdXX1c2NAorICAvKiBt aW5ndy5vcmcncyBNaW5HVyBkb2Vzbid0IGhhdmUgdGhpcyBzdHVmZi4gICovCisgIERFRklORV9H VUlEKENMU0lEX1Rhc2tiYXJMaXN0LCAweDU2ZmRmMzQ0LCAweGZkNmQsIDB4MTFkMCwgMHg5NSww eDhhLCAweDAwLDB4NjAsMHg5NywweGM5LDB4YTAsMHg5MCk7CisgIERFRklORV9HVUlEKElJRF9J VGFza2Jhckxpc3QzLCAweGVhMWFmYjkxLCAweDllMjgsIDB4NGI4NiwgMHg5MCwweGU5LCAweDll LDB4OWYsMHg4YSwweDVlLDB4ZWYsMHhhZik7CisjZW5kaWYKKworREVGVU4gKCJ3MzItYmFkZ2Ui LAorICAgICAgIEZ3MzJfYmFkZ2UsCisgICAgICAgU3czMl9iYWRnZSwKKyAgICAgICAzLCAzLCAw LAorICAgICAgIGRvYzogLyogRGlzcGxheSBhIHRhc2tiYXIgaWNvbiBvdmVybGF5IGltYWdlIG9u IHRoZSBzZWxlY3RlZCBmcmFtZS4KK0JBREdFIGlzIGEgc3RyaW5nLiAgSWYgQkFER0UgaXMgbmls LCByZW1vdmUgdGhlIG92ZXJsYXkuICBEbyBub3RoaW5nIGlmCitXaW5kb3dzIGRvZXMgbm90IHN1 cHBvcnQgdGhlIElUYXNrYmFyTGlzdDMgaW50ZXJmYWNlIGFuZCByZXR1cm4gbmlsLAorb3RoZXJ3 aXNlIHJldHVybiB0LiAgRG8gbm90aGluZyBpZiB0aGUgc2VsZWN0ZWQgZnJhbWUgaXMgbm90ICh5 ZXQpCithc3NvY2lhdGVkIHdpdGggYSB3aW5kb3cgaGFuZGxlLiAgQkFDS0dST1VORCBhbmQgRk9S RUdST1VORCBhcmUgUkdCCit0cmlwbGV0IHN0cmluZ3Mgb2YgdGhlIGZvcm0gXCIjUlJHR0JCXCIu ICAqLykKKyAgKExpc3BfT2JqZWN0IGJhZGdlLCBMaXNwX09iamVjdCBiYWNrZ3JvdW5kLCBMaXNw X09iamVjdCBmb3JlZ3JvdW5kKQoreworICBzdHJ1Y3QgZnJhbWUgKnNmID0gU0VMRUNURURfRlJB TUUgKCk7CisgIEhXTkQgaHduZCA9IE5VTEw7CisKKyAgaWYgKEZSQU1FX1czMl9QIChzZikgJiYg RlJBTUVfTElWRV9QIChzZikpCisgICAgaHduZCA9IEZSQU1FX1czMl9XSU5ET1cgKHNmKTsKKwor ICBpZiAoaHduZCA9PSBOVUxMKQorICAgIHJldHVybiBRbmlsOworCisgIENvSW5pdGlhbGl6ZSAo TlVMTCk7CisgIElUYXNrYmFyTGlzdDMgKnRhc2tfYmFyX2xpc3QgPSBOVUxMOworICBIUkVTVUxU IHIgPSBDb0NyZWF0ZUluc3RhbmNlKCZDTFNJRF9UYXNrYmFyTGlzdCwKKwkJCSAgICAgICBOVUxM LAorCQkJICAgICAgIENMU0NUWF9JTlBST0NfU0VSVkVSLAorCQkJICAgICAgICZJSURfSVRhc2ti YXJMaXN0MywKKwkJCSAgICAgICAodm9pZCAqKikmdGFza19iYXJfbGlzdCk7CisgIGlmIChyICE9 IFNfT0spCisgICAgcmV0dXJuIFFuaWw7CisKKyAgaWYgKCFOSUxQIChiYWRnZSkgJiYgU1RSSU5H UCAoYmFkZ2UpCisgICAgICAmJiBTVFJJTkdQIChiYWNrZ3JvdW5kKSAmJiBTVFJJTkdQIChmb3Jl Z3JvdW5kKSkKKyAgICB7CisgICAgICBDT0xPUlJFRiBiZ19yZ2I7CisgICAgICBDT0xPUlJFRiBm Z19yZ2I7CisgICAgICB1bnNpZ25lZCBzaG9ydCByLCBnLCBiOworICAgICAgaWYgKHBhcnNlX2Nv bG9yX3NwZWMgKFNTREFUQSAoYmFja2dyb3VuZCksICZyLCAmZywgJmIpKQorCWJnX3JnYiA9IFJH QiAociwgYiwgYik7CisgICAgICBlbHNlCisJcmV0dXJuIFFuaWw7CisgICAgICBpZiAocGFyc2Vf Y29sb3Jfc3BlYyAoU1NEQVRBIChmb3JlZ3JvdW5kKSwgJnIsICZnLCAmYikpCisJZmdfcmdiID0g UkdCIChyLCBiLCBiKTsKKyAgICAgIGVsc2UKKwlyZXR1cm4gUW5pbDsKKworICAgICAgLyogUHJl cGFyZSBhIHN0cmluZyBmb3IgZHJhd2luZyBhbmQgYXMgYWx0LXRleHQuICAqLworICAgICAgTGlz cF9PYmplY3QgYmFkZ2VfdXRmOCA9IEVOQ09ERV9VVEZfOCAoYmFkZ2UpOworICAgICAgaW50IHdp ZGVfbGVuID0gcE11bHRpQnl0ZVRvV2lkZUNoYXIgKENQX1VURjgsIDAsCisJCQkJCSAgIFNTREFU QSAoYmFkZ2VfdXRmOCksCisJCQkJCSAgIC0xLCBOVUxMLCAwKTsKKyAgICAgIHdjaGFyX3QgKmJh ZGdlX3cgPSBhbGxvY2EgKCh3aWRlX2xlbiArIDEpICogc2l6ZW9mICh3Y2hhcl90KSk7CisgICAg ICBwTXVsdGlCeXRlVG9XaWRlQ2hhciAoQ1BfVVRGOCwgMCwgU1NEQVRBIChiYWRnZV91dGY4KSwg LTEsCisJCQkgICAgKExQV1NUUikgYmFkZ2VfdywKKwkJCSAgICB3aWRlX2xlbik7CisKKyAgICAg IC8qIFVzZSB0aGUgc21hbGwgaWNvbiBzaXplIFdpbmRvd3Mgc3VnZ2VzdHMgdG8gbm90IGhhcmQg Y29kZSAxNngxNi4gICovCisgICAgICBpbnQgaWNvbl93aWR0aCA9IEdldFN5c3RlbU1ldHJpY3Mg KFNNX0NYU01JQ09OKTsKKyAgICAgIGludCBpY29uX2hlaWdodCA9IEdldFN5c3RlbU1ldHJpY3Mg KFNNX0NYU01JQ09OKTsKKworICAgICAgSERDIGh3bmRfZGMgPSBHZXREQyAoaHduZCk7CisgICAg ICBIREMgZGMgPSBDcmVhdGVDb21wYXRpYmxlREMgKGh3bmRfZGMpOworCisgICAgICBCSVRNQVBW NUhFQURFUiBiaTsKKyAgICAgIG1lbXNldCAoJmJpLCAwLCBzaXplb2YgKGJpKSk7CisgICAgICBi aS5iVjVTaXplID0gc2l6ZW9mIChiaSk7CisgICAgICBiaS5iVjVXaWR0aCA9IGljb25fd2lkdGg7 CisgICAgICBiaS5iVjVIZWlnaHQgPSAtaWNvbl9oZWlnaHQ7IC8qIE5lZ2F0aXZlIGZvciBhIHRv cC1kb3duIERJQi4gICovCisgICAgICBiaS5iVjVQbGFuZXMgPSAxOworICAgICAgYmkuYlY1Qml0 Q291bnQgPSAzMjsKKyAgICAgIGJpLmJWNUNvbXByZXNzaW9uID0gQklfQklURklFTERTOyAgLyog RW5hYmxlIHRoZSBtYXNrcyBiZWxvdy4gICovCisgICAgICBiaS5iVjVSZWRNYXNrICAgPSAgMHgw MEZGMDAwMDsKKyAgICAgIGJpLmJWNUdyZWVuTWFzayA9ICAweDAwMDBGRjAwOworICAgICAgYmku YlY1Qmx1ZU1hc2sgID0gIDB4MDAwMDAwRkY7CisgICAgICBiaS5iVjVBbHBoYU1hc2sgPSAgMHhG RjAwMDAwMDsKKworICAgICAgRFdPUkQgKmJpdG1hcF9waXhlbHM7CisgICAgICBIQklUTUFQIGJp dG1hcCA9IENyZWF0ZURJQlNlY3Rpb24gKGRjLCAoQklUTUFQSU5GTyAqKSAmYmksCisJCQkJCSBE SUJfUkdCX0NPTE9SUywKKwkJCQkJICh2b2lkICoqKSAmYml0bWFwX3BpeGVscywKKwkJCQkJIE5V TEwsIDApOworICAgICAgSEdESU9CSiBvbGRfYml0bWFwID0gU2VsZWN0T2JqZWN0KGRjLCBiaXRt YXApOworCisgICAgICAvKiBEcmF3IGEgY2lyY2xlIGZpbGxlZCB3aXRoIGJnLiAgKi8KKyAgICAg IEhCUlVTSCBiZ19icnVzaCA9IENyZWF0ZVNvbGlkQnJ1c2ggKGJnX3JnYik7CisgICAgICBIR0RJ T0JKIG9sZF9icnVzaCA9IFNlbGVjdE9iamVjdCAoZGMsIGJnX2JydXNoKTsKKyAgICAgIEVsbGlw c2UgKGRjLCAwLCAwLCBpY29uX3dpZHRoLCBpY29uX2hlaWdodCk7CisgICAgICBTZWxlY3RPYmpl Y3QgKGRjLCBvbGRfYnJ1c2gpOworICAgICAgRGVsZXRlT2JqZWN0IChiZ19icnVzaCk7CisKKyAg ICAgIC8qIERlcml2ZSBhIGZvbnQgc2NhbGVkIHRvIGZpdCB0aGUgaWNvbi4gIEZpcnN0IGZpbmQg dGhlIHN5c3RlbSdzCisJIGJhc2UgZm9udC4gIFRoZW4gc2NhbGUgaXQgdG8gZml0IGljb25faGVp Z2h0LiAgKi8KKyAgICAgIEhGT05UIGJhc2VfZm9udDsKKyAgICAgIEJPT0wgY2xlYW5fdXBfYmFz ZV9mb250ID0gRkFMU0U7CisgICAgICBpZiAoc3lzdGVtX3BhcmFtZXRlcnNfaW5mb193X2ZuKQor CXsKKwkgIE5PTkNMSUVOVE1FVFJJQ1MgbmNtOworCSAgbWVtc2V0ICgmbmNtLCAwLCBzaXplb2Yg KG5jbSkpOworCSAgbmNtLmNiU2l6ZSA9IHNpemVvZiAobmNtKTsKKwkgIFN5c3RlbVBhcmFtZXRl cnNJbmZvIChTUElfR0VUTk9OQ0xJRU5UTUVUUklDUywgc2l6ZW9mIChuY20pLCAmbmNtLCAwKTsK KwkgIGJhc2VfZm9udCA9IENyZWF0ZUZvbnRJbmRpcmVjdCAoJm5jbS5sZlNtQ2FwdGlvbkZvbnQp OworCSAgY2xlYW5fdXBfYmFzZV9mb250ID0gVFJVRTsKKwl9CisgICAgICBlbHNlCisJYmFzZV9m b250ID0gKEhGT05UKSBHZXRTdG9ja09iamVjdCAoREVGQVVMVF9HVUlfRk9OVCk7CisgICAgICBp ZiAoY2xlYW5fdXBfYmFzZV9mb250KQorCURlbGV0ZU9iamVjdCAoYmFzZV9mb250KTsKKworICAg ICAgTE9HRk9OVCBsZjsKKyAgICAgIEdldE9iamVjdCAoYmFzZV9mb250LCBzaXplb2YgKGxmKSwg JmxmKTsKKyAgICAgIGxmLmxmV2VpZ2h0ID0gRldfQk9MRDsKKyAgICAgIGxmLmxmT3V0UHJlY2lz aW9uID0gT1VUX09VVExJTkVfUFJFQ0lTOworICAgICAgLyogQ2xlYXJUeXBlIHF1YWxpdHkgbmVl ZHMgb3BxYXVlLCBidXQgd2UgZHJhdyB0cmFuc3BhcmVudC4gICovCisgICAgICBsZi5sZlF1YWxp dHkgPSBBTlRJQUxJQVNFRF9RVUFMSVRZOworICAgICAgLyogTmVnYXRpdmUgbGZIZWlnaHQgaW5k aWNhdGVzIHBpeGVsIHVuaXRzIHZzLiBwb3NpdGl2ZSBpbiBwb2ludHMuCisJIFVzZSB0aGUgTE9H UElYRUxTWSBweC9pbiBvZiB0aGUgcHJpbWFyeSBtb25pdG9yLiAgKi8KKyAgICAgIGxmLmxmSGVp Z2h0ID0gLU11bERpdihpY29uX2hlaWdodCAvIDIsIC8qIEZpdCB+MyBjaGFycy4gICovCisJCQkg ICAgNzIsCisJCQkgICAgR2V0RGV2aWNlQ2FwcyAoR2V0REMgKE5VTEwpLCBMT0dQSVhFTFNZKSk7 CisgICAgICAvKiBFbnN1cmUgbGZIZWlnaHQgcGl4ZWwgaW50ZXJwcmV0YXRpb24uICAqLworICAg ICAgaW50IG9sZF9tYXBfbW9kZSA9IFNldE1hcE1vZGUgKGRjLCBNTV9URVhUKTsKKyAgICAgIEhG T05UIHNjYWxlZF9mb250ID0gQ3JlYXRlRm9udEluZGlyZWN0ICgmbGYpOworICAgICAgSEdESU9C SiBvbGRfZm9udCA9IFNlbGVjdE9iamVjdCAoZGMsIHNjYWxlZF9mb250KTsKKyAgICAgIFNldE1h cE1vZGUgKGRjLCBvbGRfbWFwX21vZGUpOworCisgICAgICAvKiBEcmF3IGJhZGdlIHRleHQuICAq LworICAgICAgU2V0QmtNb2RlIChkYywgVFJBTlNQQVJFTlQpOworICAgICAgU2V0VGV4dENvbG9y IChkYywgZmdfcmdiKTsKKyAgICAgIFJFQ1QgcmVjdDsKKyAgICAgIHJlY3QubGVmdCA9IHJlY3Qu dG9wID0gMDsKKyAgICAgIHJlY3QucmlnaHQgPSBpY29uX3dpZHRoOworICAgICAgcmVjdC5ib3R0 b20gPSBpY29uX2hlaWdodDsKKyAgICAgIERyYXdUZXh0IChkYywgU1NEQVRBIChiYWRnZV91dGY4 KSwKKwkJLTEsIC8qIEluZGljYXRlIG51bGwtdGVybWluYXRlZCBzdHJpbmcuICAqLworCQkmcmVj dCwKKwkJRFRfQ0VOVEVSIHwgRFRfVkNFTlRFUiB8IERUX1NJTkdMRUxJTkUgfCBEVF9OT0NMSVAp OworICAgICAgU2VsZWN0T2JqZWN0IChkYywgb2xkX2ZvbnQpOworICAgICAgRGVsZXRlT2JqZWN0 IChzY2FsZWRfZm9udCk7CisKKyAgICAgIC8qIE1ha2UgdGhlIGNpcmNsZSBhbmQgaXRzIHRleHQg b3BhcXVlIGJ5IHNldHRpbmcgdGhlIGFscGhhCisJIGNoYW5uZWwgb24gZWFjaCBwaXhlbCBmYWxs aW5nIHdpdGhpbiB0aGUgY2lyY2xlLiAgKi8KKyAgICAgIGludCBjaXJjbGVfY2VudGVyX3ggPSBp Y29uX3dpZHRoIC8gMjsKKyAgICAgIGludCBjaXJjbGVfY2VudGVyX3kgPSBpY29uX2hlaWdodCAv IDI7CisgICAgICBpbnQgY2lyY2xlX3JhZGl1cyA9IChpY29uX3dpZHRoIDwgaWNvbl9oZWlnaHQK KwkJCSAgID8gaWNvbl93aWR0aAorCQkJICAgOiBpY29uX2hlaWdodCkgLyAyIC0gMjsKKyAgICAg IGludCBjaXJjbGVfcmFkaXVzX3NxID0gY2lyY2xlX3JhZGl1cyAqIGNpcmNsZV9yYWRpdXM7Cisg ICAgICBEV09SRCAqcGl4ZWw7CisgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGljb25faGVpZ2h0 OyArK3kpCisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgaWNvbl93aWR0aDsgKyt4KQorCSAg eworICAgICAgICAgICAgaW50IGR4ID0geCAtIGNpcmNsZV9jZW50ZXJfeDsKKyAgICAgICAgICAg IGludCBkeSA9IHkgLSBjaXJjbGVfY2VudGVyX3k7CisgICAgICAgICAgICBpZiAoZHggKiBkeCAr IGR5ICogZHkgPD0gY2lyY2xlX3JhZGl1c19zcSkKKwkgICAgICB7CisJCSAgcGl4ZWwgPSBiaXRt YXBfcGl4ZWxzICsgKHkgKiBpY29uX3dpZHRoICsgeCk7CisJCSAgKnBpeGVsIHw9IDB4ZmYwMDAw MDA7IC8qIEZsaXAgdGhlIDB4QUFSUkdHQkIgYWxwaGEgY2hhbm5lbC4gICovCisJICAgICAgfQor CSAgfQorCisgICAgICAvKiBEdW1teSBtb25vY2hyb21lIGJpdG1hcCBtYXNrLCBpZ25vcmVkIHdo ZW4gdGhlIGNvbG9yIGJpdG1hcCBoYXMKKwkgYW4gYWxwaGEgY2hhbm5lbCwgYnV0IG5lZWRlZCB0 byBzYXRpc2Z5IENyZWF0ZUljb25JbmRpcmVjdC4gICovCisgICAgICBIQklUTUFQIG1hc2tfYml0 bWFwID0gQ3JlYXRlQml0bWFwIChpY29uX3dpZHRoLCBpY29uX2hlaWdodCwgMSwgMSwgTlVMTCk7 CisKKyAgICAgIC8qIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dzL3dp bjMyL2FwaS93aW51c2VyL25mLXdpbnVzZXItY3JlYXRlaWNvbmluZGlyZWN0CisJIGhibU1hc2sg YW5kIGhibUNvbG9yIG1lbWJlcnMgb2YgdGhlIElDT05JTkZPIHN0cnVjdHVyZSBzaG91bGQKKwkg bm90IGFscmVhZHkgYmUgc2VsZWN0ZWQgaW50byBhIGRldmljZSBjb250ZXh0LiAgKi8KKyAgICAg IFNlbGVjdE9iamVjdCAoZGMsIG9sZF9iaXRtYXApOworCisgICAgICBJQ09OSU5GTyBpY29uX2lu Zm87CisgICAgICBtZW1zZXQgKCZpY29uX2luZm8sIDAsIHNpemVvZiAoaWNvbl9pbmZvKSk7Cisg ICAgICBpY29uX2luZm8uZkljb24gPSBUUlVFOworICAgICAgaWNvbl9pbmZvLmhibU1hc2sgPSBt YXNrX2JpdG1hcDsKKyAgICAgIGljb25faW5mby5oYm1Db2xvciA9IGJpdG1hcDsKKworICAgICAg SElDT04gaWNvbiA9IENyZWF0ZUljb25JbmRpcmVjdCAoJmljb25faW5mbyk7CisgICAgICB0YXNr X2Jhcl9saXN0LT5scFZ0YmwtPlNldE92ZXJsYXlJY29uICh0YXNrX2Jhcl9saXN0LCBod25kLCBp Y29uLCBiYWRnZV93KTsKKworICAgICAgRGVzdHJveUljb24gKGljb24pOworICAgICAgRGVsZXRl T2JqZWN0IChtYXNrX2JpdG1hcCk7CisgICAgICBEZWxldGVPYmplY3QgKGJpdG1hcCk7CisgICAg ICBEZWxldGVEQyAoZGMpOworICAgICAgUmVsZWFzZURDIChod25kLCBod25kX2RjKTsKKyAgICB9 CisgIGVsc2UKKyAgICB0YXNrX2Jhcl9saXN0LT5scFZ0YmwtPlNldE92ZXJsYXlJY29uICh0YXNr X2Jhcl9saXN0LCBod25kLCBOVUxMLCBOVUxMKTsKKworICB0YXNrX2Jhcl9saXN0LT5scFZ0Ymwt PlJlbGVhc2UodGFza19iYXJfbGlzdCk7CisgIHJldHVybiBRdDsKK30KKworREVGVU4gKCJ3MzIt cmVxdWVzdC11c2VyLWF0dGVudGlvbiIsCisgICAgICAgRnczMl9yZXF1ZXN0X3VzZXJfYXR0ZW50 aW9uLAorICAgICAgIFN3MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbiwKKyAgICAgICAxLCAxLCAw LAorICAgICAgIGRvYzogLyogRmxhc2ggdGhlIHNlbGVjdGVkIGZyYW1lJ3MgdGFza2JhciBpY29u IGFuZC9vciBpdHMgd2luZG93LgorSWYgVVJHRU5DWSBpcyBuaWwsIGNhbmNlbCB0aGUgcmVxdWVz dCwgaWYgYW55LiAgSWYgVVJHRU5DWSBpcyB0aGUgc3ltYm9sCitgaW5mb3JtYXRpb25hbCcsIGZs YXNoIHRoZSB0YXNrYmFyIGljb24uICBJZiBVUkdFTkNZIGlzIHRoZSBzeW1ib2wKK2Bjcml0aWNh bCcsIGZsYXNoIHRoZSB0YXNrYmFyIGljb24gYW5kIHRoZSBmcmFtZS4gIFdpbmRvd3Mgc3RvcHMK K2ZsYXNoaW5nIGlmIHRoZSB1c2VyIGZvY3VzZXMgdGhlIGZyYW1lLiAgRG8gbm90aGluZyBpZiBX aW5kb3dzIGRvZXMgbm90CitzdXBwb3J0IEZsYXNoV2luZG93RXggYW5kIHJldHVybiBuaWwsIG90 aGVyd2lzZSByZXR1cm4gdC4gIERvIG5vdGhpbmcgaWYKK3RoZSBmcmFtZSBpcyBub3QgKHlldCkg YXNzb2NpYXRlZCB3aXRoIGEgd2luZG93IGhhbmRsZS4gICovKQorICAoTGlzcF9PYmplY3QgdXJn ZW5jeSkKK3sKKyAgaWYgKGZsYXNoX3dpbmRvd19leF9mbiA9PSBOVUxMKQorICAgIHJldHVybiBR bmlsOworCisgIHN0cnVjdCBmcmFtZSAqc2YgPSBTRUxFQ1RFRF9GUkFNRSAoKTsKKyAgSFdORCBo d25kID0gTlVMTDsKKworICBpZiAoRlJBTUVfVzMyX1AgKHNmKSAmJiBGUkFNRV9MSVZFX1AgKHNm KSkKKyAgICBod25kID0gRlJBTUVfVzMyX1dJTkRPVyAoc2YpOworCisgIGlmIChod25kID09IE5V TEwpCisgICAgcmV0dXJuIFFuaWw7CisKKyAgRkxBU0hXSU5GTyBmbGFzaF9pbmZvOworICBmbGFz aF9pbmZvLmNiU2l6ZSA9IHNpemVvZihmbGFzaF9pbmZvKTsKKyAgZmxhc2hfaW5mby51Q291bnQg PSAwOworICBmbGFzaF9pbmZvLmR3VGltZW91dCA9IDA7CisgIGZsYXNoX2luZm8uaHduZCA9IGh3 bmQ7CisgIGlmICghTklMUCAodXJnZW5jeSkgJiYgU1lNQk9MUCAodXJnZW5jeSkpCisgICAgewor ICAgICAgLyogVGhlIGludGVuZGVkIGNhbGxlciwgJ3N5c3RlbS10YXNrYmFyLWF0dGVudGlvbics IGhhcyBhbgorCSBvcHRpb25hbCB0aW1lciB0byBjbGVhciB0aGUgYXR0ZW50aW9uIGluZGljYXRv ciBzbyB0aGlzIHdpbGwKKwkgZmxhc2ggdW50aWwgY2xlYXJlZCB2aWEgdGhlIHRpbWVyLCBvciB0 aGUgd2luZG93IGNvbWVzIHRvIHRoZQorCSBmb3JlZ3JvdW5kLiAgRm9yIGluZm9ybWF0aW9uYWwg YXR0ZW50aW9uLCBmbGFzaCB0aGUgdHJheSBpY29uLgorCSBGb3IgY3JpdGljYWwgYXR0ZW50aW9u LCBmbGFzaCB0aGUgdHJheSBpY29uIGFuZCB0aGUgd2luZG93LiAgKi8KKyAgICAgIGlmIChFUSAo dXJnZW5jeSwgUWluZm9ybWF0aW9uYWwpKQorCWZsYXNoX2luZm8uZHdGbGFncyA9IEZMQVNIV19U UkFZIHwgRkxBU0hXX1RJTUVSTk9GRzsKKyAgICAgIGVsc2UgaWYgKEVRICh1cmdlbmN5LCBRY3Jp dGljYWwpKQorCWZsYXNoX2luZm8uZHdGbGFncyA9IEZMQVNIV19BTEwgfCBGTEFTSFdfVElNRVJO T0ZHOworICAgIH0KKyAgZWxzZQorICAgIGZsYXNoX2luZm8uZHdGbGFncyA9IEZMQVNIV19TVE9Q OworCisgIGZsYXNoX3dpbmRvd19leF9mbiAoJmZsYXNoX2luZm8pOworICByZXR1cm4gUXQ7Cit9 CisKK0RFRlVOICgidzMyLXByb2dyZXNzLWluZGljYXRvciIsCisgICAgICAgRnczMl9wcm9ncmVz c19pbmRpY2F0b3IsCisgICAgICAgU3czMl9wcm9ncmVzc19pbmRpY2F0b3IsCisgICAgICAgMSwg MSwgMCwKKyAgICAgICBkb2M6IC8qIFNob3cgYSBwcm9ncmVzcyBiYXIgb24gdGhlIHNlbGVjdGVk IGZyYW1lJ3MgdGFza2JhciBpY29uLgorUFJPR1JFU1MgaXMgYSBmbG9hdCBpbiB0aGUgcmFuZ2Ug MC4wIHRvIDEuMC4gIElmIFBST0dSRVNTIGlzIG5pbCwgcmVtb3ZlCit0aGUgcHJvZ3Jlc3MgaW5k aWNhdG9yLiAgRG8gbm90aGluZyBpZiBXaW5kb3dzIGRvZXMgbm90IHN1cHBvcnQgdGhlCitJVGFz a2Jhckxpc3QzIGludGVyZmFjZSBhbmQgcmV0dXJuIG5pbCwgb3RoZXJ3aXNlIHJldHVybiB0LiAg RG8gbm90aGluZworaWYgdGhlIHNlbGVjdGVkIGZyYW1lIGlzIG5vdCAoeWV0KSBhc3NvY2lhdGVk IHdpdGggYSB3aW5kb3cgaGFuZGxlICAqLykKKyAgKExpc3BfT2JqZWN0IHByb2dyZXNzKQorewor ICBzdHJ1Y3QgZnJhbWUgKnNmID0gU0VMRUNURURfRlJBTUUgKCk7CisgIEhXTkQgaHduZCA9IE5V TEw7CisKKyAgaWYgKEZSQU1FX1czMl9QIChzZikgJiYgRlJBTUVfTElWRV9QIChzZikpCisgICAg aHduZCA9IEZSQU1FX1czMl9XSU5ET1cgKHNmKTsKKworICBpZiAoaHduZCA9PSBOVUxMKQorICAg IHJldHVybiBRbmlsOworCisgIENvSW5pdGlhbGl6ZSAoTlVMTCk7CisgIElUYXNrYmFyTGlzdDMg KnRhc2tfYmFyX2xpc3QgPSBOVUxMOworICBIUkVTVUxUIHIgPSBDb0NyZWF0ZUluc3RhbmNlKCZD TFNJRF9UYXNrYmFyTGlzdCwKKwkJCSAgICAgICBOVUxMLAorCQkJICAgICAgIENMU0NUWF9JTlBS T0NfU0VSVkVSLAorCQkJICAgICAgICZJSURfSVRhc2tiYXJMaXN0MywKKwkJCSAgICAgICAodm9p ZCAqKikmdGFza19iYXJfbGlzdCk7CisgIGlmIChyICE9IFNfT0spCisgICAgcmV0dXJuIFFuaWw7 CisKKyAgLyogU2NhbGUgdGFzayBiYXIgcHJvZ3Jlc3MgZnJvbSAwLjAtMS4wIHRvIDAtMTAwLiAg Ki8KKyAgVUxPTkdMT05HIGFkal9wcm9ncmVzcyA9IDA7CisgIGlmICghTklMUCAocHJvZ3Jlc3Mp ICYmIEZMT0FUUCAocHJvZ3Jlc3MpKQorICAgICAgYWRqX3Byb2dyZXNzID0gKFVMT05HTE9ORykg KDEwMC4wICoKKwkJCQkgIFhGTE9BVF9EQVRBIChwcm9ncmVzcykpOworICBpZiAoYWRqX3Byb2dy ZXNzID4gMCkKKyAgICB7CisgICAgICB0YXNrX2Jhcl9saXN0LT5scFZ0YmwtPlNldFByb2dyZXNz U3RhdGUgKHRhc2tfYmFyX2xpc3QsCisJCQkJCSAgICAgICBod25kLCBUQlBGX05PUk1BTCk7Cisg ICAgICB0YXNrX2Jhcl9saXN0LT5scFZ0YmwtPlNldFByb2dyZXNzVmFsdWUgKHRhc2tfYmFyX2xp c3QsCisJCQkJCSAgICAgICBod25kLCBhZGpfcHJvZ3Jlc3MsIDEwMCk7CisgICAgfQorICBlbHNl CisgICAgeworICAgICAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5TZXRQcm9ncmVzc1N0YXRlICh0 YXNrX2Jhcl9saXN0LAorCQkJCQkgICAgICAgaHduZCwgVEJQRl9OT1BST0dSRVNTKTsKKyAgICB9 CisKKyAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5SZWxlYXNlKHRhc2tfYmFyX2xpc3QpOworICBy ZXR1cm4gUXQ7Cit9CisKKyNlbmRpZiAvKiBXSU5ET1dTTlQgKi8KKwogLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CiAJCQkgICAgSW5pdGlhbGl6YXRpb24KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTExNTExLDYgKzEx ODI2LDE1IEBAIHN5bXNfb2ZfdzMyZm5zICh2b2lkKQogICBERUZTWU0gKFFjYXBzbG9jaywgImNh cHNsb2NrIik7CiAgIERFRlNZTSAoUWtwX251bWxvY2ssICJrcC1udW1sb2NrIik7CiAgIERFRlNZ TSAoUXNjcm9sbCwgInNjcm9sbCIpOworCisgICNpZmRlZiBXSU5ET1dTTlQKKyAgLyogVGFza2Jh ciBpbmRpY2F0b3JzIHN1cHBvcnQuICAqLworICBkZWZzdWJyICgmU3czMl9iYWRnZSk7CisgIGRl ZnN1YnIgKCZTdzMyX3Byb2dyZXNzX2luZGljYXRvcik7CisgIGRlZnN1YnIgKCZTdzMyX3JlcXVl c3RfdXNlcl9hdHRlbnRpb24pOworICBERUZTWU0gKFFpbmZvcm1hdGlvbmFsLCAiaW5mb3JtYXRp b25hbCIpOworICBERUZTWU0gKFFjcml0aWNhbCwgImNyaXRpY2FsIik7CisgICNlbmRpZgogfQog CiAMCkBAIC0xMTc5OSw2ICsxMjEyMyw5IEBAIGdsb2JhbHNfb2ZfdzMyZm5zICh2b2lkKQogICBT ZXRHZXN0dXJlQ29uZmlnX2ZuCiAgICAgPSAoU2V0R2VzdHVyZUNvbmZpZ19wcm9jKSBnZXRfcHJv Y19hZGRyICh1c2VyMzJfbGliLAogCQkJCQkgICAgICJTZXRHZXN0dXJlQ29uZmlnIik7CisgIGZs YXNoX3dpbmRvd19leF9mbgorICAgID0gKEZsYXNoV2luZG93RXhfUHJvYykgZ2V0X3Byb2NfYWRk ciAodXNlcjMyX2xpYiwKKwkJCQkJICAiRmxhc2hXaW5kb3dFeCIpOwogCiAgIHsKICAgICBITU9E VUxFIGltbTMyX2xpYiA9IEdldE1vZHVsZUhhbmRsZSAoImltbTMyLmRsbCIpOwpkaWZmIC0tZ2l0 IGEvc3lzdGVtLXRhc2tiYXIudGV4aSBiL3N5c3RlbS10YXNrYmFyLnRleGkKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY5ZTkyMGQ2OTFjCi0tLSAvZGV2L251bGwKKysr IGIvc3lzdGVtLXRhc2tiYXIudGV4aQpAQCAtMCwwICsxLDI1NCBAQAorXGlucHV0IHRleGluZm8g ICAgQGMgLSotdGV4aW5mby0qLQorCitAc2V0ZmlsZW5hbWUgLi4vLi4vaW5mby9kb2NrLW1vZGUu aW5mbworQHNldHRpdGxlIFN5c3RlbSBHVUkgVGFza2JhciBGZWF0dXJlcworQGluY2x1ZGUgZG9j c3R5bGUudGV4aQorCitAY29weWluZworVGhpcyBmaWxlIGRlc2NyaWJlcyBFbWFjcyBzeXN0ZW0g R1VJIHRhc2tiYXIgaW50ZWdyYXRpb24uCisKK0NvcHlyaWdodCBAY29weXJpZ2h0e30gMjAyNSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworQHF1b3RhdGlvbgorUGVybWlzc2lvbiBp cyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50 Cit1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwg VmVyc2lvbiAxLjMgb3IKK2FueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyB3aXRoIG5vCitJbnZhcmlhbnQgU2VjdGlvbnMsIHdpdGggdGhl IEZyb250LUNvdmVyIFRleHRzIGJlaW5nIGBgQSBHTlUgTWFudWFsLCcnCithbmQgd2l0aCB0aGUg QmFjay1Db3ZlciBUZXh0cyBhcyBpbiAoYSkgYmVsb3cuICBBIGNvcHkgb2YgdGhlIGxpY2Vuc2Ug aXMKK2luY2x1ZGVkIGluIHRoZSBzZWN0aW9uIGVudGl0bGVkIGBgR05VIEZyZWUgRG9jdW1lbnRh dGlvbiBMaWNlbnNlJycuCisKKyhhKSBUaGUgRlNGJ3MgQmFjay1Db3ZlciBUZXh0IGlzOiBgYFlv dSBoYXZlIHRoZSBmcmVlZG9tIHRvIGNvcHkgYW5kCittb2RpZnkgdGhpcyBHTlUgbWFudWFsLicn CitAZW5kIHF1b3RhdGlvbgorQGVuZCBjb3B5aW5nCisKK0BkaXJjYXRlZ29yeSBFbWFjcyBtaXNj IGZlYXR1cmVzCitAZGlyZW50cnkKKyogU3lzdGVtIEdVSSBUYXNrYmFyOiAodGFza2JhcikuICAg ICAgIFN5c3RlbSBHVUkgdGFza2JhciBpbnRlZ3JhdGlvbi4KK0BlbmQgZGlyZW50cnkKKworQHRp dGxlcGFnZQorQHRpdGxlIFN5c3RlbSBHVUkgVGFza2JhciBJbnRlZ3JhdGlvbgorQHBhZ2UKK0B2 c2tpcCAwcHQgcGx1cyAxZmlsbGwKK0BpbnNlcnRjb3B5aW5nCitAZW5kIHRpdGxlcGFnZQorCitA Y29udGVudHMKKworQGlmbm90dGV4CitAbm9kZSBUb3AKK0B0b3AgRW1hY3MgU3lzdGVtIEdVSSBU YXNrYmFyIEludGVncmF0aW9uCitUaGlzIG1hbnVhbCBkZXNjcmliZXMgRW1hY3Mgc3lzdGVtIEdV SSB0YXNrYmFyIGludGVncmF0aW9uLgorCitUaGUgQGRmbntzeXN0ZW0tdGFza2Jhcn0gcGFja2Fn ZSBhZGRzIEVtYWNzIGludGVncmF0aW9uIHdpdGggc3lzdGVtIEdVSQordGFza2JhciAoYWxzbyBj YWxsZWQgZG9ja3Mgb3IgbGF1bmNoZXJzIG9yIHNvbWV0aGluZyBzaW1pbGFyKSB0byBkaXNwbGF5 CithIHRhc2tiYXIgaWNvbiAiYmFkZ2UiIG92ZXJsYXksIGEgcHJvZ3Jlc3MgYmFyIHJlcG9ydCBv dmVybGF5LCBhbGVydCB0aGUKK3VzZXIgdGhhdCBhbiBFbWFjcyBzZXNzaW9uIG5lZWRzIGF0dGVu dGlvbiwgb2Z0ZW4gYnkgZmxhc2hpbmcgb3IKK2JvdW5jaW5nIHRoZSBFbWFjcyBhcHBsaWNhdGlv biBpY29uLiAgVGFza2JhciBjYXBhYmxlIHN5c3RlbXMgYXJlCitHTlUvTGludXggdmlhIEQtQnVz LCBtYWNPUy9HTlVzdGVwIDEwLjUrLCBNUy1XaW5kb3dzIDcrLgorCitPbiBHTlUvTGludXgsIHRo ZSB2aXNpYmxlIGVmZmVjdHMgd2lsbCBhcHBlYXIgb24gdGhlIGRlc3RpbmF0aW9ucworZGV0ZXJt aW5lZCBieSB5b3VyIHNoZWxsIGV4dGVuc2lvbiwgbW9zdCBvZnRlbiB0aGUgYXBwbGljYXRpb24g bGF1bmNoZXIKK29yIGRvY2sgcGFuZWwsIG9yIHRoZSB0b3AgcGFuZWwuICBFZmZlY3RzIGFyZSBn bG9iYWwgZm9yIGFuIEVtYWNzCitpbnN0YW5jZS4KKworT24gbWFjT1MvR05Vc3RlcCwgdGhlIGVm ZmVjdHMgd2lsbCBhcHBlYXIgb24gdGhlIERvY2sgYW5kIGluIHRoZSBBcHAKK1N3aXRjaGVyLiAg RWZmZWN0cyBhcmUgZ2xvYmFsIGZvciBhbiBFbWFjcyBpbnN0YW5jZS4KKworT24gTVMtV2luZG93 cywgdGhlIGVmZmVjdHMgYXBwZWFyIG9uIHRoZSB0YXNrYmFyLiAgRWZmZWN0cyBhcmUKK2Fzc29j aWF0ZWQgd2l0aCB0aGUgZnJhbWUgZnJvbSB3aGljaCB0aGV5IGFyZSBpbml0aWF0ZWQuCisKK0Bp bnNlcnRjb3B5aW5nCisKK0BtZW51CisqIE92ZXJ2aWV3OjogICAgICAgICAgICAgICAgICAgIE92 ZXJ2aWV3IG9mIHN5c3RlbSBHVUkgdGFza2JhciBpbnRlZ3JhdGlvbgorKiBQcmVyZXF1aXNpdGVz OjoKKyogVXNlciBPcHRpb25zOjoKKyogRnVuY3Rpb24gUmVmZXJlbmNlOjoKKyogU3lzdGVtIFRh c2tiYXIgVXNhZ2UgRXhhbXBsZXM6OgorKiBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2U6 OiAgVGhlIGxpY2Vuc2UgZm9yIHRoaXMgZG9jdW1lbnRhdGlvbi4KKyogRnVuY3Rpb24gSW5kZXg6 OgorKiBWYXJpYWJsZSBJbmRleDo6CitAZW5kIG1lbnUKK0BlbmQgaWZub3R0ZXgKKworQG5vZGUg T3ZlcnZpZXcKK0BjaGFwdGVyIE92ZXJ2aWV3CisKK1RoZSBTeXN0ZW0gVGFza2JhciBwYWNrYWdl IHByb3ZpZGVzIHRoZXNlIHN5c3RlbSBHVUkgdGFza2JhciBmZWF0dXJlczoKKworQGl0ZW1pemUg QGJ1bGxldAorQGl0ZW0gSWNvbiBiYWRnZQorQGl0ZW0gSWNvbiBwcm9ncmVzcyBpbmRpY2F0b3IK K0BpdGVtIEljb24gYXR0ZW50aW9uIGFsZXJ0CitAZW5kIGl0ZW1pemUKKworQG5vZGUgUHJlcmVx dWlzaXRlcworQGNoYXB0ZXIgUHJlcmVxdWlzaXRlcworCittYWNPUy9HTlVzdGVwLCBhbmQgTVMt V2luZG93cyB1c2VycyBuZWVkIG5vIHNwZWNpYWwgY29uZmlndXJhdGlvbi4KKworT24gR05VL0xp bnV4IHN5c3RlbXMsIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyB2aWEgRC1CdXMgdG8gY29udHJvbCBH VUkKK3NoZWxscyBhbmQvb3Igc2hlbGwgZXh0ZW5zaW9ucyBzdWNoIGFzCitAZmlsZXtodHRwczov L2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8zMDcvZGFzaC10by1kb2NrL30gdGhhdAor aW1wbGVtZW50IFVidW50dSdzIFVuaXR5IGxhdW5jaGVyIHNwZWMgd2hpY2ggeW91IGNhbiByZWFk IG1vcmUgYWJvdXQKK2hlcmUgQGZpbGV7aHR0cHM6Ly93aWtpLnVidW50dS5jb20vVW5pdHkvTGF1 bmNoZXJBUEl9LgorCitAbm9kZSBVc2VyIE9wdGlvbnMKK0BjaGFwdGVyIFVzZXIgT3B0aW9ucwor CitAZGVmb3B0IHN5c3RlbS10YXNrYmFyLXVzZS1wcm9ncmVzcy1yZXBvcnRlcgorVGhlIHZhcmlh YmxlIEBjb2Rle3N5c3RlbS10YXNrYmFyLXVzZS1wcm9ncmVzcy1yZXBvcnRlcn0gaXMgdXNlZCB0 bworc3VwcGxlbWVudCBidWlsdC1pbiBwcm9ncmVzcyByZXBvcnRzIHdpdGggR1VJIHRhc2tiYXIg aWNvbiBwcm9ncmVzcyBiYXJzCitpbiBhZGRpdGlvbiB0byB0aGUgZGVmYXVsdCBlY2hvIGFyZWEg cmVwb3J0cy4gIEl0IGRlZmF1bHRzIHRvIEBjb2Rle3R9LgorKysrIEB4cmVme1Byb2dyZXNzLCwg RGlzcGxheSwgZWxpc3AsIFRoZSBFbWFjcyBMaXNwIFJlZmVyZW5jZSBNYW51YWx9LgorQGVuZCBk ZWZvcHQKKworQGRlZm9wdCBzeXN0ZW0tdGFza2Jhci1jbGVhci1hdHRlbnRpb24tb24tZnJhbWUt Zm9jdXMKK1RoZSB2YXJpYWJsZSBAY29kZXtzeXN0ZW0tdGFza2Jhci1jbGVhci1hdHRlbnRpb24t b24tZnJhbWUtZm9jdXN9IGNhbiBiZQorY3VzdG9taXplZCB0byBjbGVhciB0aGUgdGFza2JhciBp Y29uIGF0dGVudGlvbiBpbmRpY2F0b3Igd2hlbiBhbnkgRW1hY3MKK0dVSSBmcmFtZSBpcyBmb2N1 c2VkLiAgVGhpcyBpcyBpbXBsZW1lbnRlZCBmb3IgR05VL0xpbnV4LCBhbmQgaXMgaWdub3JlZAor b24gTVMtV2luZG93cyBhbmQgbWFjT1MvR05Vc3RlcCB3aGljaCBhdXRvbWF0aWNhbGx5IGNsZWFy IHRoZSBhdHRlbnRpb24KK2luZGljYXRvci4gIEl0IGRlZmF1bHRzIHRvIEBjb2Rle3R9LiAgQ3Vz dG9taXplIHRoaXMgYmVmb3JlIGVuYWJsaW5nCitAY29kZXtzeXN0ZW0tdGFza2Jhci1tb2RlfS4K K0BlbmQgZGVmb3B0CisKK0BkZWZvcHQgc3lzdGVtLXRhc2tiYXItZGJ1cy1kZXNrdG9wLWZpbGUt bmFtZQorVGhlIHZhcmlhYmxlIEBjb2Rle3N5c3RlbS10YXNrYmFyLWRidXMtZGVza3RvcC1maWxl LW5hbWV9IGlzIGNvbnN1bHRlZAorb24gR05VL0xpbnV4IEQtQnVzIHN5c3RlbXMsIGFuZCBjYW4g YmUgY3VzdG9taXplZCB0byBpbmRpY2F0ZSB3aGljaAorZGVza3RvcCBmaWxlIG5hbWUgaWRlbnRp ZmllcyB5b3VyIEVtYWNzIGluc3RhbmNlLiAgSXQgZGVmYXVsdHMgdG8gdGhlCitkZXNrdG9wIGZp bGUgYmFzZSBuYW1lIEBjb2RleyJlbWFjc2NsaWVudCJ9IGFuZCBtaWdodCBuZWVkIHRvIGJlIHNl dCB0bworQGNvZGV7ImVtYWNzIn0gb24geW91ciBzeXN0ZW0uICBFbWFjcyBpbnN0YWxsZWQgYnkg TGludXggZGlzdHJpYnV0aW9ucworY2FuIHZhcnkgb24gdGhlaXIgbmFtaW5nIHNjaGVtZSBhbmQg b2Z0ZW4gaW5jbHVkZSBkZXNrdG9wIGZpbGVzIGZvcgorYm90aC4KK0BlbmQgZGVmb3B0CisKK0Bk ZWZvcHQgc3lzdGVtLXRhc2tiYXItZGJ1cy10aW1lb3V0CitUaGUgdmFyaWFibGUgQGNvZGV7c3lz dGVtLXRhc2tiYXItZGJ1cy10aW1lb3V0fSBpcyBjb25zdWx0ZWQgb24KK0dOVS9MaW51eCBELUJ1 cyBzeXN0ZW1zLCBhbmQgY2FuIGJlIGN1c3RvbWl6ZWQgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9m CittaWxsaXNlY29uZHMgRW1hY3Mgd2lsbCB3YWl0IGZvciBELUJ1cyByZXNwb25zZXMgYmVmb3Jl IHRpbWluZyBvdXQgYW5kCitjb25zaWRlcmluZyBtZXNzYWdlcyB1bmRlbGl2ZXJhYmxlLiAgSXQg ZGVmYXVsdHMgdG8gbmlsIHdoaWNoIHdpbGwgdXNlCit0aGUgRC1CdXMgcGFja2FnZSBkZWZhdWx0 IG9mIDI1MDAwIG1pbGxpc2Vjb25kcywgd2hpY2ggc2VlLAorQHB4cmVme1RvcCwsLCBkYnVzLCBE LUJ1cyBpbnRlZ3JhdGlvbiBpbiBFbWFjc30uCitAZW5kIGRlZm9wdAorCitAbm9kZSBGdW5jdGlv biBSZWZlcmVuY2UKK0BjaGFwdGVyIEZ1bmN0aW9uIFJlZmVyZW5jZQorCitAZGVmZm4gc3lzdGVt LXRhc2tiYXItbW9kZQorQGNvZGV7c3lzdGVtLXRhc2tiYXItbW9kZX0gbXVzdCBiZSBlbmFibGVk IHRvIGluaXRpYWxpemUgdGhlIHN5c3RlbSBiYWNrCitlbmQgYmVmb3JlIGNhbGxpbmcgYW55IG9m IHRoaXMgcGFja2FnZSdzIGZ1bmN0aW9ucy4gIE9uIGEgR05VL0xpbnV4CitELUJ1cyBzeXN0ZW0s IHRoZSByZXF1aXJlZCBELUJ1cyBwcm90b2NvbCBpcyBwcm9iZWQgYW5kIGlmIG5vdAorYXZhaWxh YmxlLCBhbiBlcnJvciBpcyBzaWduYWxlZC4KK0BlbmQgZGVmZm4KKworQGRlZnVuIHN5c3RlbS10 YXNrYmFyLWJhZGdlICZvcHRpb25hbCBjb3VudAorRGlzcGxheSB0aGUgdGFza2JhciBpY29uIGJh ZGdlIHNldCB0byBAdmFye2NvdW50fS4gIElmIEB2YXJ7Y291bnR9IGlzCitAY29kZXtuaWx9LCBj bGVhciB0aGUgYmFkZ2UuICBAdmFye2NvdW50fSBpcyB0eXBpY2FsbHkgYW4gaW50ZWdlci4KKwor SWYgQHZhcntjb3VudH0gaXMgYSBzdHJpbmcsIGl0IGlzIGNvbnZlcnRlZCB0byBhbiBpbnRlZ2Vy IG9uIHN5c3RlbXMKK3RoYXQgZG8gbm90IHN1cHBvcnQgc3RyaW5nIGJhZGdlcywgc3VjaCBhcyBH TlUvTGludXggRC1CdXMsIGFuZCB0aGUKK2JhZGdlIHdpbGwgYmUgY2xlYXJlZCBpZiB0aGUgc3Ry aW5nIGlzIGFuIGludmFsaWQgaW50ZWdlcgorcmVwcmVzZW50YXRpb24uICBPbiBzeXN0ZW1zIHRo YXQgc3VwcG9ydCBzdHJpbmdzLCBzdWNoIGFzIG1hY09TL0dOVXN0ZXAKK2FuZCBNUy1XaW5kb3dz LCB0aGUgYmFkZ2UgaXMgc2V0IHRvIHRoZSBzdHJpbmcgYW5kIGRpc3BsYXllZCwgYW5kIG1heSBi ZQordHJ1bmNhdGVkIHRvIGZpdCB0aGUgdmlzdWFsIHNwYWNlIGFsbG9jYXRlZCBieSB0aGUgc3lz dGVtLiAgSW4gYW55IGNhc2UsCitpZiB0aGUgc3RyaW5nIGlzIGVtcHR5LCBjbGVhciB0aGUgYmFk Z2UuCitAZW5kIGRlZnVuCisKK0BkZWZ1biBzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gJm9wdGlv bmFsIHVyZ2VuY3kgdGltZW91dAorRGlzcGxheSBhIHRhc2tiYXIgaWNvbiBhbGVydC4gIFRoaXMg d2lsbCByZXN1bHQgaW4gYSBib3VuY2luZyBvcgorZmxhc2hpbmcgdGFza2JhciBpY29uLiAgT24g c29tZSBiYWNrIGVuZHMsIGF0dGVudGlvbiB3aWxsIGJlIGRpc3BsYXllZAorb25seSBpZiBFbWFj cyBpcyBub3QgdGhlIGN1cnJlbnRseSBmb2N1c2VkIGFwcGxpY2F0aW9uLgorCitJZiBAdmFye3Vy Z2VuY3l9IGlzIHRoZSBzeW1ib2wgQGNvZGV7aW5mb3JtYXRpb25hbH0sIG5vcm1hbCBhdHRlbnRp b24gaXMKK3JlcXVlc3RlZC4gIElmIEB2YXJ7dXJnZW5jeX0gaXMgdGhlIHN5bWJvbCBAY29kZXtj cml0aWNhbH0sIHVyZ2VudAorYXR0ZW50aW9uIGlzIHJlcXVlc3RlZC4gIElmIEB2YXJ7dXJnZW50 fSBpcyBAY29kZXtuaWx9LCBjbGVhciB0aGUKK2F0dGVudGlvbiBpbmRpY2F0b3IuCisKK0VtYWNz IHdhaXRzIEB2YXJ7dGltZW91dH0gc2Vjb25kcyBiZWZvcmUgYXV0b21hdGljYWxseSByZW1vdmlu ZyB0aGUKK2luZGljYXRvci4gIElmIEB2YXJ7dGltZW91dH0gaXMgQGNvZGV7bmlsfSwgdGhlIGF0 dGVudGlvbiBpbmRpY2F0b3Igd2lsbAorYmUgY2xlYXJlZCBieSB0aGUgc3lzdGVtIG9yIGJ5IGNh bGxpbmcgdGhpcyBmdW5jdGlvbiBhZ2FpbiBwYXNzaW5nIGEKK0Bjb2Rle25pbH0gdXJnZW5jeS4K KworT24gc29tZSBiYWNrIGVuZHMsIGFuIEBjb2Rle2luZm9ybWF0aW9uYWx9IGF0dGVudGlvbiBy ZXF1ZXN0IHdpbGwgdGltZQorb3V0IGF1dG9tYXRpY2FsbHkuICBJbiBjb250cmFzdCwgYSBAY29k ZXtjcml0aWNhbH0gcmVxdWVzdCByZXF1aXJlcyB0aGF0Cit0aGUgdXNlciBicmluZyBFbWFjcyBp bnRvIGZvY3VzIGFuZCB3aWxsIG5vdCB0aW1lIG91dC4gIE9uIHNvbWUgYmFjaworZW5kcywgQGNv ZGV7Y3JpdGljYWx9IGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgQGNvZGV7aW5mb3JtYXRpb25hbH0u CitAZW5kIGRlZnVuCisKK0BkZWZ1biBzeXN0ZW0tdGFza2Jhci1wcm9ncmVzcyAmb3B0aW9uYWwg cHJvZ3Jlc3MKK1NldCB0aGUgdGFza2JhciBpY29uIHRvIGluZGljYXRlIHByb2dyZXNzIG9mIGEg bG9uZy1ydW5uaW5nIG9wZXJhdGlvbi4KK1Rhc2tiYXIgcHJvZ3Jlc3MgaXMgdHlwaWNhbGx5IHJl cHJlc2VudGVkIGFzIGEgZ3JhcGhpY2FsIGJhciB0aGF0CitmcmFjdGlvbmFsbHkgc3BhbnMgdGhl IHRhc2tiYXIgaWNvbi4gIEB2YXJ7cHJvZ3Jlc3N9IGlzIGEgZmxvYXQgaW4gdGhlCityYW5nZSAw LjAgdG8gMS4wLiAgSWYgQHZhcntwcm9ncmVzc30gaXMgbmlsLCByZW1vdmUgdGhlIHByb2dyZXNz CitpbmRpY2F0b3IuICBUaGUgYnVpbHQtaW4gcHJvZ3Jlc3MgcmVwb3J0ZXIgc2hvdWxkIGJlIHBy ZWZlcnJlZCBvdmVyCittYW51YWxseSBpbmRpY2F0aW5nIHByb2dyZXNzLgorKysrCitAeHJlZntQ cm9ncmVzcywsIERpc3BsYXksIGVsaXNwLCBUaGUgRW1hY3MgTGlzcCBSZWZlcmVuY2UgTWFudWFs fS4KK0BlbmQgZGVmdW4KKworQG5vZGUgU3lzdGVtIFRhc2tiYXIgVXNhZ2UgRXhhbXBsZXMKK0Bj aGFwdGVyIFN5c3RlbSBUYXNrYmFyIFVzYWdlIEV4YW1wbGVzCisKK0BsaXNwCitAZ3JvdXAKKzs7 IEVuYWJsZSBhbmQgaW5pdGlhbGl6ZSBzeXN0ZW0tdGFza2Jhci1tb2RlIGJlZm9yZSBjYWxsaW5n IGl0cworOzsgY29tcGFuaW9uIGZ1bmN0aW9ucy4KKyhzeXN0ZW0tdGFza2Jhci1tb2RlKQorCis7 OyBEaXNwbGF5IGEgYmFkZ2Ugb24gdGhlIHRhc2tiYXIgaWNvbi4KKyhzeXN0ZW0tdGFza2Jhci1i YWRnZSBlbWFjcy1tYWpvci12ZXJzaW9uKQorKHN5c3RlbS10YXNrYmFyLWJhZGdlICIzMSIpIDsg Y29udmVydGVkIHRvIGludGVnZXIgb24gR05VL0xpbnV4Cisoc3lzdGVtLXRhc2tiYXItYmFkZ2Ug IlRlc3QiKSA7IHdvcmtzIG9uIG1hY09TL0dOVXN0ZXAgYW5kIE1TLVdpbmRvd3MKKworOzsgQ2xl YXIgdGhlIGJhZGdlLgorKHN5c3RlbS10YXNrYmFyLWJhZGdlIG5pbCkKKzs7IE9yIGp1c3QKKyhz eXN0ZW0tdGFza2Jhci1iYWRnZSkKK0BlbmQgZ3JvdXAKKworQGdyb3VwCis7OyBHZXQgdGhlIHVz ZXIncyBhdHRlbnRpb24uCisoc3lzdGVtLXRhc2tiYXItYXR0ZW50aW9uICdpbmZvcm1hdGlvbmFs IDMpIDsgY2xlYXIgdGhlIHJlcXVlc3QgYWZ0ZXIgMyBzZWNvbmRzCisoc3lzdGVtLXRhc2tiYXIt YXR0ZW50aW9uICdjcml0aWNhbCkgOyBjbGVhciB3aGVuIHRoZSBFbWFjcyBhcHBsaWNhdGlvbiBp cyBmb2N1c2VkCisKKzs7IENsZWFyIHRoZSBhdHRlbnRpb24gcmVxdWVzdC4KKyhzeXN0ZW0tdGFz a2Jhci1hdHRlbnRpb24gbmlsKQorOzsgT3IganVzdAorKHN5c3RlbS10YXNrYmFyLWF0dGVudGlv bikKK0BlbmQgZ3JvdXAKKworQGdyb3VwCis7OyBFbmFibGUgdGFza2JhciBpY29uIHByb2dyZXNz IGZlZWRiYWNrLgorKHNldG9wdCBzeXN0ZW0tdGFza2Jhci11c2UtcHJvZ3Jlc3MtcmVwb3J0ZXIg dCkgOyB0aGlzIGlzIHRoZSBkZWZhdWx0CisKKzs7IFJlcG9ydCBgZG90aW1lc2AgcHJvZ3Jlc3Mg b24gdGhlIHRhc2tiYXIgaWNvbi4KKyhkb3RpbWVzLXdpdGgtcHJvZ3Jlc3MtcmVwb3J0ZXIKKyAg ICAoaSAxMCkKKyAgICAiQ291bnRpbmcgZnJvbSAxIHRvIDEwLi4uIgorICAoc2xlZXAtZm9yIDEp KQorCis7OyBSZXBvcnQgYGRvbGlzdGAgcHJvZ3Jlc3Mgb24gdGhlIHRhc2tiYXIgaWNvbi4KKyhk b2xpc3Qtd2l0aC1wcm9ncmVzcy1yZXBvcnRlcgorICAgIChpIChtYWtlLWxpc3QgMTAgdCkpCisg ICAgIlByb2dyZXNzIGZyb20gMSB0byAxMCBlbGVtZW50cy4uLiIKKyAgKHNsZWVwLWZvciAxKSkK K0BlbmQgZ3JvdXAKK0BlbmQgbGlzcAorCitAbm9kZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExp Y2Vuc2UKK0BhcHBlbmRpeCBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UKK0BpbmNsdWRl IGRvY2xpY2Vuc2UudGV4aQorCitAbm9kZSBGdW5jdGlvbiBJbmRleAorQHVubnVtYmVyZWQgRnVu Y3Rpb24gSW5kZXgKK0BwcmludGluZGV4IGZuCisKK0Bub2RlIFZhcmlhYmxlIEluZGV4CitAdW5u dW1iZXJlZCBWYXJpYWJsZSBJbmRleAorQHByaW50aW5kZXggdnIKKworQGJ5ZQorCitAYyBFbmQ6 Ci0tIAoyLjQ3LjEKCg== --000000000000aade3c0645b541ee--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 11 Dec 2025 22:17:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 11 17:17:01 2025
Received: from localhost ([127.0.0.1]:49081 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vToy3-0000Di-4k
for submit <at> debbugs.gnu.org; Thu, 11 Dec 2025 17:17:01 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:54751)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vToxx-0000C0-M6
for 79859 <at> debbugs.gnu.org; Thu, 11 Dec 2025 17:16:56 -0500
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 67776441BC5;
Thu, 11 Dec 2025 17:16:47 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1765491405;
bh=85RL7lQSt0z4DkJHLNyl55QvH3k8rGnRddKKe7r7P5E=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=pqfG6bSXiTtwTaBgSzQO1ZvlwWulJxzsgwVxCfp3E5mWwIlUmDSIxH+Kl+yf5gV5H
dQ+HUlMS5RRShXBrwe09cvjKcOL90hZRm6PUj5aVIUyxCQ0n8qH0h4dautv60wDDYe
Gv33aXvp9idSj4QCoyQFvXEJtLYrOjaZ4k1BCetvwvwSbnkH1MeY2Pq/vKVlsMSC2M
IXdTY4e09jgErvThr6ho5kBKM5Lqh+pVT2Mp92wXBhLLZVseLYnKST1+gpWMyn5bpt
sJHXXXJYbpEPRdm0uR9ydN6jIOF/Ppw2bjIEkemGSrgUHRRUZ2FBbicQALWi8Yd8EF
w3oHavJcFPdLw==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 6D757441BB7;
Thu, 11 Dec 2025 17:16:45 -0500 (EST)
Received: from asado (unknown [181.28.45.30])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 9F950120BDB;
Thu, 11 Dec 2025 17:16:43 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: =?windows-1252?Q?St=E9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
In-Reply-To: <CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN>
Message-ID: <jwvfr9gu2jw.fsf-monnier+emacs@HIDDEN>
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<86bjkxhuca.fsf@HIDDEN>
<CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
<87pl932wqd.fsf@HIDDEN>
<CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN>
<86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN>
<86ikedavlh.fsf@HIDDEN>
<CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN>
Date: Thu, 11 Dec 2025 17:16:39 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.111 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>,
michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> Updated patch, attached. This one does away with the callbacks and uses
> global hooks instead and installs the GUI progress bars, by default, when
> the mode is enabled, and also does away with the convenience macros which
> are no longer needed.
Thanks. I hadn't looked at the code yet, so I'll give a bit of feedback
about the code now. I haven't looked at the system-dependent code
because I'm not familiar with those APIs anyway.
> diff --git a/lisp/subr.el b/lisp/subr.el
> index fcf931b64e9..ef67e5cc4d0 100644
> --- a/lisp/subr.el
> +++ b/lisp/subr.el
> @@ -6974,14 +6974,27 @@ set-transient-map
> ;; digits of precision, it doesn't really matter here. On the other
> ;; hand, it greatly simplifies the code.
>
> +(defvar progress-reporter-update-functions nil
> + "Special hook run on progress-reporter updates.
> +These functions are called by `progress-reporter-do-update` with three
> +arguments, the reporter, the percentage done in the range 0-100 for a
> +numeric reporter and which is nil for a pulsing reporter, the index that
> +cycles through the range 0-3 for a pulsing reporter and which is nil for
> +a numeric reporter.")
Sounds like only two of the three args are used.
> +(defvar progress-reporter-done-functions nil
> + "Special hook run when a progress-reporter is done.
> +These functions are called by `progress-reporter-done` with one
> +argument, the reporter.")
I think I'd merge them into a single hook.
E.g.
(defvar progress-reporter-update-functions nil
"Special hook run on progress-reporter updates.
These functions are called with two arguments (REPORTER STATE)
and their return value is ignored. STATE can be:
- `done', when the job is, well, done.
- An integer in the range 0-3 (for pulsing reporters).
- A float between 0 and 1 (for numeric reporters).")
> @@ -7100,7 +7113,9 @@ progress-reporter-do-update
> (setq suffix (or (aref parameters 6) "")))
> (if (plusp percentage)
> (message "%s%d%% %s" text percentage suffix)
> - (message "%s %s" text suffix)))))
> + (message "%s %s" text suffix))
> + (run-hook-with-args 'progress-reporter-update-functions
> + reporter percentage nil))))
> ;; Pulsing indicator
> (enough-time-passed
> (when (and value (not suffix))
I think it would be even better if the echo-area feedback is moved to
the initial value of `progress-reporter-update-functions`, in case
someone wants to remove it or replace it with something else.
This will also make sure the API of `progress-reporter-update-functions`
is sufficient to reproduce this default behavior.
> +(defcustom system-taskbar-use-progress-reporter t
> + "Supplement progress-reporters with GUI system taskbar progress bars."
> + :type 'boolean
> + :set (lambda (variable value)
> + (set-default variable value)
> + (if value
> + (system-taskbar-progress-reporter-install)
> + (system-taskbar-progress-reporter-remove)))
> + :version "31.1")
This seems redundant with `system-taskbar-mode`. IIUC the difference is
that `system-taskbar-mode` covers a bit more functionality, but as it
stands the code behaves strangely if you set
`system-taskbar-use-progress-reporter` to nil but enable
`system-taskbar-mode`.
I suggest to either merge them into a single option or to really
decouple the two (one for progress-reporter and one for the
badge/alerting).
> +(defvar system-taskbar--back-end nil
> + "Generic taskbar method system dispatcher.")
> +
> +(defun system-taskbar--set-back-end ()
> + "Determine taskbar host system type."
> + ;; Order matters to accommodate the cases where an NS or MS-Windows
> + ;; build have the dbus feature.
Maybe test `window-system` instead of `ns-version-string` and
`w32-initialized`?
> + (cond ((boundp 'ns-version-string)
> + (setq system-taskbar--back-end 'ns))
> + ((bound-and-true-p w32-initialized)
> + (setq system-taskbar--back-end 'w32))
> + ((and (featurep 'dbusbind)
> + (member "org.freedesktop.login1"
> + (dbus-list-activatable-names :system)))
> + (setq system-taskbar--back-end 'dbus))
> + (t
> + (setq system-taskbar--back-end nil))))
You can hoist the `(setq system-taskbar--back-end` out of the `cond`.
> +(cl-defgeneric system-taskbar-badge (&optional count)
> + "Display a COUNT overlay on the system taskbar Emacs icon.
> +If COUNT is an integer, display that as the icon badge.
> +If COUNT is a string on back ends which do not support strings, convert
> +COUNT to an integer, or nil if that fails.
> +If COUNT is nil or an empty string, remove the counter.")
The wording for the string case is a bit confusing. How do we "convert
COUNT to an integer"? `length` is one option, but there are
many others.
Maybe we should also say something a bout the kind of strings that are
expected to appear here (I assume these should be short, for example).
> +(cl-defgeneric system-taskbar-attention (&optional urgency timeout)
> + "Flash the system taskbar icon and/or frame to alert the user.
> +If URGENCY is the symbol `informational', request normal attention.
> +If URGENCY is the symbol `critical', request urgent attention.
> +If URGENCY is nil, clear the attention indicator.
I don't find "normal attention" much more enlightening than
`informational` and same for the second line, so I think you can shorten
that to
URGENCY can be one of the symbols `informational' or`critical',
or nil which clears the attention indicator.
> +If TIMEOUT is non-nil, clear the attention indicator after TIMEOUT
> +seconds, otherwise the attention indicator will be cleared either if the
> +frame is focused by the user or if `system-taskbar-attention' is called
> +with nil URGENCY.
Replace "either" with something that clarifies which. Presumably it's
whichever comes first.
> +(cl-defmethod system-taskbar-progress (&context
> + (system-taskbar--back-end (eql 'dbus))
> + &optional progress)
> + "Display a progress bar overlay on the system taskbar icon.
> +PROGRESS is a float in the range 0.0 to 1.0.
> +If PROGRESS is nil, remove the progress bar."
> + (setq progress (system-taskbar--validate-progress progress))
> + (system-taskbar--dbus-send-signal
> + `((:dict-entry "progress-visible"
> + (:variant :boolean ,(not (null progress))))
> + (:dict-entry "progress"
> + (:variant :double ,(if (null progress) 0 progress))))))
[ Side note: while I'm to blame for the `&context` and I stand by it,
I'm not completely sure we should abuse it so much. At the same time,
this is quite similar to what I've done with the `git-*selection*`
generic functions and it proved convenient when extending it for
non-GUI support. So maybe it's fine, sorry 'bout the noise. ]
> +
> +;; macOS/GNUstep NS support.
> +;; MS-Windows support.
Move them to `term/ns|w32-win.el`?
Not sure where the D-Bus support would move to, OTOH.
So, again, maybe it's fine leaving that code here.
Stefan
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 11 Dec 2025 18:41:40 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 11 13:41:40 2025 Received: from localhost ([127.0.0.1]:47484 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vTlbf-0001PD-8N for submit <at> debbugs.gnu.org; Thu, 11 Dec 2025 13:41:39 -0500 Received: from mail-vk1-xa35.google.com ([2607:f8b0:4864:20::a35]:59521) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vTlbc-0001Oy-NY for 79859 <at> debbugs.gnu.org; Thu, 11 Dec 2025 13:41:37 -0500 Received: by mail-vk1-xa35.google.com with SMTP id 71dfb90a1353d-559966a86caso158762e0c.2 for <79859 <at> debbugs.gnu.org>; Thu, 11 Dec 2025 10:41:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765478491; x=1766083291; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=IdKuFD0qllTAxzaDMiizzgZVlHlp4QyBQDMzmGJUO9E=; b=HwuPjSGWeYNo9I5q4qdx14uv3OzAmY/6bZvSUWvZp9djAIFdREKQrrL8zx24pllPew 3ZbMSC2HqWplHUo/tnmt1suOCTraBEax54O1Vxb0cU7QCfbUcIDvRS9E2DCANjYktGQB JucBeSErX7mYBTTUTsEOGJsVP/KVqWeHl8TfrU1wPpf9WucPUrLCBYwZXPibhCMqDWHy MqjwdXk0fUGqeoDAQHVI9QBgmcV/wYQm6NG6mgvCOfIKJv99C6dLzrmXUEPiBT3QyQUr b5MIaliihOyUzJQBMwJlmecM6AFWhFZ7qLVZ0hsgjI/1ZY70I+5VVDWic2E47MYEaSbB 6vlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765478491; x=1766083291; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=IdKuFD0qllTAxzaDMiizzgZVlHlp4QyBQDMzmGJUO9E=; b=nO8+n13m+UVyACTObOkvhmqZhHax0v3snDr3PDALfZvKUA4y4xQS/2xWu8hL6/7Zcx TU2pndr3a3JIkyo0XZPM91e6vgKQSFZPgTYBnjNdlqeiuAzT3H/V47hFVYTsB4OU7A1u w/4b2OLvDB2aN2NvGTWPlJlHqeNn1FvWSW2V/xYwb36YK038Rh97CEEDx9NH9m87/lLm 3Mv0T4XRbRyMzcNsmLQiIBYvXvUCaipp6tbkzsQK5sJ52OL6CN1eJLWj1ugt1xtCg7tQ Zy1DhlZlj02fPbAjNWyPy5nedcwAMXNAmX2ScmN6qMKSnyg2+yCfJ9IvhHQnYFjVvOGE DOMQ== X-Forwarded-Encrypted: i=1; AJvYcCVYwQs/ipTpt5n1uhRAV6aXp5IFo2fPgTOUz2COrShK3l72nzoI1mhAG3bKTSFM4qzDynZsvw==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzVUPncbNsqql3VKCN9EGXk9wH4FNKmlgyiJD6SWscV/ZkgxeYb mISuVSlWfOAaRYW6zCoiE26LnfDfrCZMgplQyYwyc7WfdLk5tLZf0ljaTvdnsZ0XoiEqi+9optb ciYl5q7kI2brepuUjQhIFOm/4Z3FUZhw= X-Gm-Gg: AY/fxX7KUhgpactpNUjgo2+Vex2l0nLZ4sBkVbMiTbJOXzH3ZL3pb6MM9f/ZWvODC9w HcHiVPm2hrHA0ZmvoWmkyEDkt541lM6VGjvh69AdqXaPgZx2FS73RBg3cUVSqME7MIio/xT1dxf GzKQ4SPZ3r480uGap6Xz/IflRnjKqfCO1Mb2+xa0t/QxVkThy/s35XhV7wqsEyysxWCXmEpwEQ6 Vy1f1ebPftWzxo3RwhcCcJSgAf/2KJAUNaDQqnqhT/bZ0kLmcGbMZPnRIdTfsUo2oRxurg= X-Google-Smtp-Source: AGHT+IEDwa/LP4j/1ObWzXaEOn8029HoUHtNjNMO1eQE4D0XTbbpMli2TgA2cfez9nxK0J/ASPFNRGwD8FshIr9Fk2I= X-Received: by 2002:a05:6122:32c4:b0:54a:a048:45a4 with SMTP id 71dfb90a1353d-55fcfc5104amr2380977e0c.16.1765478490919; Thu, 11 Dec 2025 10:41:30 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <86ikedavlh.fsf@HIDDEN> In-Reply-To: <86ikedavlh.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Thu, 11 Dec 2025 13:41:19 -0500 X-Gm-Features: AQt7F2rNO1h9FLaawBYqyuCpH7X7BxL-LE9higT1NpTKRY90feuzUgTIsFwBMqs Message-ID: <CAN+1HbrVSDUbGv6k-ca7zKYGZuxRSBW+PUYqb7yVfnYsCv=VoA@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Eli Zaretskii <eliz@HIDDEN> Content-Type: multipart/mixed; boundary="0000000000004f726a0645b17e19" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, michael.albinus@HIDDEN, Stefan Monnier <monnier@HIDDEN>, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --0000000000004f726a0645b17e19 Content-Type: multipart/alternative; boundary="0000000000004f72670645b17e17" --0000000000004f72670645b17e17 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Dec 11, 2025 at 10:26=E2=80=AFAM Eli Zaretskii <eliz@HIDDEN> wrote= : > > From: Stefan Monnier <monnier@HIDDEN> > > Cc: St=C3=A9phane Marks <shipmints@HIDDEN>, > > bjorn.bidar@HIDDEN, > > michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org > > Date: Thu, 11 Dec 2025 08:26:56 -0500 > > > > >> Rather than add hooks to progress reporter, which would be of global > > >> scope, I added optional update and done callbacks to > > >> make-progress-reporter and that works swimmingly well. NEWS and > > >> documentation have been updated for that feature in addition to > > >> system-taskbar. > > > > > > Sounds reasonable. Stefan, any comments, or better ideas for > > > integrating this into our progress reporter? > > > > IIUC the question here is whether all progress-reporter output should b= e > > reflected in the taskbar (using hooks) or only those of specific uses > > of a progress reporter (using callback arguments). > > No, I think this should be an optional feature, and therefore having a > minor mode enable it is okay IMO. What I was asking about was how to > allow the progress-reporter also reflect the progress on the task bar, > when this optional feature is turned on. Is the callback way the best > way, or are there better ways? > > > >> I changed the w32 implementation for the taskbar features to be > > >> enabled relative to the current frame at the time rather than have > > >> singletons so I've removed the static variables. > > > > I wonder if this relates to my comment in my other message about the > > fact that in my setup the closest place to put such info would be in th= e > > frame titles (I don't have GUI elements associated with "all Emacs > > frames" or "all the frames of an Emacs session": instead > > each frame gets its own GUI element). > > > > If my setup (which is highly non-standard and doesn't need to be taken > > into account) is not the only one where such issues can come up, then > > I think for the progress-reporter feature, it might make sense to > > remember the selected-frame at the time of `make-progress-reporter`, bu= t > > indeed that leaves open the question of what to do when that frame isn'= t > > live any more. So using the frame that happens to be selected when we > > do the update might be good enough (tho it depends how the GUI handles > > it: would we risk leaving the out-of-date progress displayed on the > > other frame)? > > The Windows APIs for showing these indications need a handle to a > frame, so that's why this is being discussed. In practice, IMO any > handle to any of the Emacs frames should do. > Updated patch, attached. This one does away with the callbacks and uses global hooks instead and installs the GUI progress bars, by default, when the mode is enabled, and also does away with the convenience macros which are no longer needed. -St=C3=A9phane --0000000000004f72670645b17e17 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Thu, Dec 11, 2025 at 10:26=E2=80=AFAM Eli Zaretskii <<a href=3D"mailt= o:eliz@HIDDEN">eliz@HIDDEN</a>> wrote:</span></div></div><div class=3D= "gmail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" style= =3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding= -left:1ex">> From: Stefan Monnier <<a href=3D"mailto:monnier@HIDDEN= treal.ca" target=3D"_blank">monnier@HIDDEN</a>><br> > Cc: St=C3=A9phane Marks <<a href=3D"mailto:shipmints@HIDDEN" tar= get=3D"_blank">shipmints@HIDDEN</a>>,<br> >=C2=A0 =C2=A0<a href=3D"mailto:bjorn.bidar@HIDDEN" target=3D"_blank= ">bjorn.bidar@HIDDEN</a>,<br> >=C2=A0 =C2=A0<a href=3D"mailto:michael.albinus@HIDDEN" target=3D"_blank= ">michael.albinus@HIDDEN</a>,=C2=A0 <a href=3D"mailto:79859 <at> debbugs.gnu.org= " target=3D"_blank">79859 <at> debbugs.gnu.org</a><br> > Date: Thu, 11 Dec 2025 08:26:56 -0500<br> > <br> > >> Rather than add hooks to progress reporter, which would be of= global<br> > >> scope, I added optional update and done callbacks to<br> > >> make-progress-reporter and that works swimmingly well.=C2=A0 = NEWS and<br> > >> documentation have been updated for that feature in addition = to<br> > >> system-taskbar.<br> > ><br> > > Sounds reasonable.=C2=A0 Stefan, any comments, or better ideas fo= r<br> > > integrating this into our progress reporter?<br> > <br> > IIUC the question here is whether all progress-reporter output should = be<br> > reflected in the taskbar (using hooks) or only those of specific uses<= br> > of a progress reporter (using callback arguments).<br> <br> No, I think this should be an optional feature, and therefore having a<br> minor mode enable it is okay IMO.=C2=A0 What I was asking about was how to<= br> allow the progress-reporter also reflect the progress on the task bar,<br> when this optional feature is turned on.=C2=A0 Is the callback way the best= <br> way, or are there better ways?<br> <br> > >> I changed the w32 implementation for the taskbar features to = be<br> > >> enabled relative to the current frame at the time rather than= have<br> > >> singletons so I've removed the static variables.<br> > <br> > I wonder if this relates to my comment in my other message about the<b= r> > fact that in my setup the closest place to put such info would be in t= he<br> > frame titles (I don't have GUI elements associated with "all = Emacs<br> > frames" or "all the frames of an Emacs session": instea= d<br> > each frame gets its own GUI element).<br> > <br> > If my setup (which is highly non-standard and doesn't need to be t= aken<br> > into account) is not the only one where such issues can come up, then<= br> > I think for the progress-reporter feature, it might make sense to<br> > remember the selected-frame at the time of `make-progress-reporter`, b= ut<br> > indeed that leaves open the question of what to do when that frame isn= 't<br> > live any more.=C2=A0 So using the frame that happens to be selected wh= en we<br> > do the update might be good enough (tho it depends how the GUI handles= <br> > it: would we risk leaving the out-of-date progress displayed on the<br= > > other frame)?<br> <br> The Windows APIs for showing these indications need a handle to a<br> frame, so that's why this is being discussed.=C2=A0 In practice, IMO an= y<br> handle to any of the Emacs frames should do.<br></blockquote><div><br></div= ><div class=3D"gmail_default" style=3D"font-family:monospace">Updated patch= , attached.=C2=A0 This one does away with the callbacks and uses global hoo= ks instead and installs the GUI progress bars, by default, when the mode is= enabled, and also does away with the convenience macros which are no longe= r needed.</div><div class=3D"gmail_default" style=3D"font-family:monospace"= ><br></div><div class=3D"gmail_default" style=3D"font-family:monospace">-St= =C3=A9phane=C2=A0</div></div></div> --0000000000004f72670645b17e17-- --0000000000004f726a0645b17e19 Content-Type: application/octet-stream; name="0001-System-GUI-taskbar-and-progress-reporter-hooks.patch" Content-Disposition: attachment; filename="0001-System-GUI-taskbar-and-progress-reporter-hooks.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mj1saup10> X-Attachment-Id: f_mj1saup10 RnJvbSBkYmU4ZmRlYTYyYWFjZTdmZTg5NWE4NmQ5ZjlhZDA0MDU2ZTMyYTRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFRodSwgMjAgTm92IDIwMjUgMTI6NTQ6NDAgLTA1MDAK U3ViamVjdDogW1BBVENIXSBTeXN0ZW0gR1VJIHRhc2tiYXIgYW5kIHByb2dyZXNzIHJlcG9ydGVy IGhvb2tzCgpJbXBsZW1lbnQgc3lzdGVtIEdVSSB0YXNrYmFyL2RvY2svbGF1bmNoZXIgaWNvbiBi YWRnZSwgaWNvbgpwcm9ncmVzcyBpbmRpY2F0b3IsIGljb24gYXR0ZW50aW9uIGFsZXJ0IGZlYXR1 cmVzIGZvciBELUJ1cwpwbGF0Zm9ybXMgKHRlc3RlZCBvbiBLREUgYW5kIEdOT01FKSwgTlMgKG1h Y09TL0dOVXN0ZXApLApNUy1XaW5kb3dzLgoKQWRkICdwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUt ZnVuY3Rpb25zJwoncHJvZ3Jlc3MtcmVwb3J0ZXItZG9uZS1mdW5jdGlvbnMnIGFibm9ybWFsIGhv b2tzIHRvIGZhY2lsaXRhdGUKdGFza2JhciBwcm9ncmVzcyBkaXNwbGF5LCBhbmQgb3RoZXIgY3Vz dG9tIHByb2dyZXNzIHJlcG9ydGVycy4KCiogbGlzcC9zdWJyLmVsIChwcm9ncmVzcy1yZXBvcnRl ci11cGRhdGUtZnVuY3Rpb25zKQoocHJvZ3Jlc3MtcmVwb3J0ZXItZG9uZS1mdW5jdGlvbnMpOiBO ZXcgZGVmdmFyLgoocHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRlKTogUnVuCnByb2dyZXNzLXJl cG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMgZm9yIGJvdGggbnVtZXJpY2FsIGFuZApwdWxzaW5nIHJl cG9ydGVycy4KKHByb2dyZXNzLXJlcG9ydGVyLWRvbmUpOiBSdW4gcHJvZ3Jlc3MtcmVwb3J0ZXIt ZG9uZS1mdW5jdGlvbnMuCiogbGlzcC9zeXN0ZW0tdGFza2Jhci5lbDogTmV3IGZpbGUuCiogc3Jj L25zZm5zLm0gKEZuc19iYWRnZSwgRm5zX3Byb2dyZXNzX2luZGljYXRvcikKKEZuc19yZXF1ZXN0 X3VzZXJfYXR0ZW50aW9uKTogTmV3IGZ1bmN0aW9uLgooc3ltc19vZl9uc2Zucyk6IEFkZCBkZWZz dWJyIFNuc19iYWRnZSwKU25zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24sIFNuc19wcm9ncmVzc19p bmRpY2F0b3IuIEFkZCBERUZTWU0KUWluZm9ybWF0aW9uYWwsIFFjcml0aWNhbC4KKiBzcmMvdzMy Zm5zLmMgKHJnYl9saXN0X3RvX2NvbG9ycmVmLCBGdzMyX2JhZGdlKQooRnczMl9yZXF1ZXN0X3Vz ZXJfYXR0ZW50aW9uLCBGdzMyX3Byb2dyZXNzX2luZGljYXRvcik6IE5ldwpmdW5jdGlvbi4KKHN5 bXNfb2ZfdzMyZm5zKTogQWRkIGRlZnN1YnIgU3czMl9iYWRnZSwKU3czMl9wcm9ncmVzc19pbmRp Y2F0b3IsIFN3MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbi4gQWRkIERFRlNZTQpRaW5mb3JtYXRp b25hbCwgUWNyaXRpY2FsLgoqIHN5c3RlbS10YXNiYXIudGV4aTogTmV3IGZpbGUgKFdJTEwgQkUg TUVSR0VEIElOVE8gRU1BQ1MgQU5ECkVMSVNQIE1BTlVBTCkuCiogZXRjL05FV1M6IEFubm91bmNl IHN5c3RlbS10YXNrYmFyLW1vZGUuICBBbm5vdW5jZSBwcm9ncmVzcwpyZXBvcnRlciBjYWxsYmFj ayBlbmhhbmNlbWVudHMuCi0tLQogZXRjL05FV1MgICAgICAgICAgICAgICB8ICAyMiArKwogbGlz cC9zdWJyLmVsICAgICAgICAgICB8ICA0MyArKystCiBsaXNwL3N5c3RlbS10YXNrYmFyLmVsIHwg NDkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvbnNmbnMu bSAgICAgICAgICAgIHwgMTI4ICsrKysrKysrKysrCiBzcmMvdzMyZm5zLmMgICAgICAgICAgIHwg MzI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3lzdGVtLXRhc2tiYXIudGV4aSAgICB8 IDI2MCArKysrKysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDEyNjAgaW5zZXJ0 aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGlzcC9zeXN0ZW0t dGFza2Jhci5lbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c3RlbS10YXNrYmFyLnRleGkKCmRpZmYg LS1naXQgYS9ldGMvTkVXUyBiL2V0Yy9ORVdTCmluZGV4IGZkYjFlZTAyODE5Li42NzYxNDRkZmYx MiAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIvZXRjL05FV1MKQEAgLTMxNTEsNiArMzE1MSwy MSBAQCBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgZnVuY3Rpb25zIHRvIHRocm90dGxlIG9yIGRlYm91 bmNlIEVtYWNzIExpc3AKIGZ1bmN0aW9ucy4gIFRoaXMgaXMgdXNlZnVsIGZvciBjb3JyYWxsaW5n IG92ZXJlYWdlciBjb2RlIHRoYXQgaXMgc2xvdwogYW5kIGJsb2NrcyBFbWFjcywgb3IgZG9lcyBu b3QgcHJvdmlkZSB3YXlzIHRvIGxpbWl0IGhvdyBvZnRlbiBpdCBydW5zLgogCisrKysKKyoqKiBO ZXcgbW9kZSAnc3lzdGVtLXRhc2tiYXItbW9kZScuCitUaGlzIGlzIGEgZ2xvYmFsIG1pbm9yIG1v ZGUgYW5kIGNvbXBhbmlvbiBmdW5jdGlvbnMgdGhhdCBpbnRlZ3JhdGUgRW1hY3MKK3dpdGggc3lz dGVtIEdVSSB0YXNrYmFycyAoYWxzbyBjYWxsZWQgZG9ja3Mgb3IgbGF1bmNoZXJzIG9yIHNvbWV0 aGluZworc2ltaWxhcikgdG8gZGlzcGxheSBhIHRhc2tiYXIgaWNvbiAiYmFkZ2UiIG92ZXJsYXks IGEgcHJvZ3Jlc3MgYmFyCityZXBvcnQgb3ZlcmxheSwgYWxlcnQgdGhlIHVzZXIgdGhhdCBhbiBF bWFjcyBzZXNzaW9uIG5lZWRzIGF0dGVudGlvbiwKK29mdGVuIGJ5IGZsYXNoaW5nIG9yIGJvdW5j aW5nIHRoZSBFbWFjcyBhcHBsaWNhdGlvbiBpY29uLiAgU3VwcG9ydGVkCitjYXBhYmxlIHN5c3Rl bXMgYXJlIEdOVS9MaW51eCB2aWEgRC1CdXMsIG1hY09TL0dOVXN0ZXAgMTAuNSssIE1TLVdpbmRv d3MKKzcrLgorCitPbiBHTlUvTGludXggc3lzdGVtcywgc2hlbGwgZXh0ZW5zaW9ucyBvciBzaW1p bGFyIGhlbHBlcnMgc3VjaCBhcworImRhc2gtdG8tZG9jayIgbWF5IGJlIHJlcXVpcmVkLiAgU2Vl Cis8aHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vMzA3L2Rhc2gtdG8tZG9j ay8+IGFuZAorPGh0dHBzOi8vd2lraS51YnVudHUuY29tL1VuaXR5L0xhdW5jaGVyQVBJPi4KKwog DAogKiBJbmNvbXBhdGlibGUgTGlzcCBDaGFuZ2VzIGluIEVtYWNzIDMxLjEKIApAQCAtMzU3OSw2 ICszNTk0LDEzIEBAIEVtYWNzIHdoZW4gYnVpbHQgd2l0aCB0aGUgcHVyZSBHVEsgdG9vbGtpdCBu b3cgcmVzcGVjdHMgZGVza3RvcAogZGFyayBhbmQgbGlnaHQgbW9kZXMgZm9yIGRyYXdpbmcgYSBH VEsgdG9vbGJhciBhbmQgd2lkZ2V0cywKIGF1dG9tYXRpY2FsbHkgdG9nZ2xpbmcgYmV0d2VlbiB0 aGVtLgogCisrKysKKyoqIFByb2dyZXNzIHJlcG9ydGVyIGNhbGxiYWNrcy4KKydtYWtlLXByb2dy ZXNzLXJlcG9ydGVyJyBub3cgYWNjZXB0cyBvcHRpb25hbCBhcmd1bWVudHMgVVBEQVRFLUNBTExC QUNLLAorY2FsbGVkIG9uIHByb2dyZXNzIHN0ZXBzLCBhbmQgRE9ORS1DQUxMQkFDSywgY2FsbGVk IHdoZW4gdGhlIHByb2dyZXNzCityZXBvcnRlciBpcyBkb25lLiAgU2VlIHRoZSAnbWFrZS1wcm9n cmVzcy1yZXBvcnRlcicgZG9jc3RyaW5nIGZvciBhIGZ1bGwKK3NwZWNpZmljYXRpb24gb2YgdGhl c2UgbmV3IG9wdGlvbmFsIGFyZ3VtZW50cy4KKwogDAogKiBDaGFuZ2VzIGluIEVtYWNzIDMxLjEg b24gTm9uLUZyZWUgT3BlcmF0aW5nIFN5c3RlbXMKIApkaWZmIC0tZ2l0IGEvbGlzcC9zdWJyLmVs IGIvbGlzcC9zdWJyLmVsCmluZGV4IGZjZjkzMWI2NGU5Li5lZjY3ZTVjYzRkMCAxMDA2NDQKLS0t IGEvbGlzcC9zdWJyLmVsCisrKyBiL2xpc3Avc3Vici5lbApAQCAtNjk3NCwxNCArNjk3NCwyNyBA QCBzZXQtdHJhbnNpZW50LW1hcAogOzsgZGlnaXRzIG9mIHByZWNpc2lvbiwgaXQgZG9lc24ndCBy ZWFsbHkgbWF0dGVyIGhlcmUuICBPbiB0aGUgb3RoZXIKIDs7IGhhbmQsIGl0IGdyZWF0bHkgc2lt cGxpZmllcyB0aGUgY29kZS4KIAorKGRlZnZhciBwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUtZnVu Y3Rpb25zIG5pbAorICAiU3BlY2lhbCBob29rIHJ1biBvbiBwcm9ncmVzcy1yZXBvcnRlciB1cGRh dGVzLgorVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgYnkgYHByb2dyZXNzLXJlcG9ydGVyLWRv LXVwZGF0ZWAgd2l0aCB0aHJlZQorYXJndW1lbnRzLCB0aGUgcmVwb3J0ZXIsIHRoZSBwZXJjZW50 YWdlIGRvbmUgaW4gdGhlIHJhbmdlIDAtMTAwIGZvciBhCitudW1lcmljIHJlcG9ydGVyIGFuZCB3 aGljaCBpcyBuaWwgZm9yIGEgcHVsc2luZyByZXBvcnRlciwgdGhlIGluZGV4IHRoYXQKK2N5Y2xl cyB0aHJvdWdoIHRoZSByYW5nZSAwLTMgZm9yIGEgcHVsc2luZyByZXBvcnRlciBhbmQgd2hpY2gg aXMgbmlsIGZvcgorYSBudW1lcmljIHJlcG9ydGVyLiIpCisKKyhkZWZ2YXIgcHJvZ3Jlc3MtcmVw b3J0ZXItZG9uZS1mdW5jdGlvbnMgbmlsCisgICJTcGVjaWFsIGhvb2sgcnVuIHdoZW4gYSBwcm9n cmVzcy1yZXBvcnRlciBpcyBkb25lLgorVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgYnkgYHBy b2dyZXNzLXJlcG9ydGVyLWRvbmVgIHdpdGggb25lCithcmd1bWVudCwgdGhlIHJlcG9ydGVyLiIp CisKIChkZWZzdWJzdCBwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUgKHJlcG9ydGVyICZvcHRpb25h bCB2YWx1ZSBzdWZmaXgpCiAgICJSZXBvcnQgcHJvZ3Jlc3Mgb2YgYW4gb3BlcmF0aW9uIGluIHRo ZSBlY2hvIGFyZWEuCiBSRVBPUlRFUiBzaG91bGQgYmUgdGhlIHJlc3VsdCBvZiBhIGNhbGwgdG8g YG1ha2UtcHJvZ3Jlc3MtcmVwb3J0ZXInLgogCiBJZiBSRVBPUlRFUiBpcyBhIG51bWVyaWNhbCBw cm9ncmVzcyByZXBvcnRlci0tLWkuZS4gaWYgaXQgd2FzCi0gbWFkZSB1c2luZyBub24tbmlsIE1J Ti1WQUxVRSBhbmQgTUFYLVZBTFVFIGFyZ3VtZW50cyB0bwotIGBtYWtlLXByb2dyZXNzLXJlcG9y dGVyJy0tLXRoZW4gVkFMVUUgc2hvdWxkIGJlIGEgbnVtYmVyIGJldHdlZW4KLSBNSU4tVkFMVUUg YW5kIE1BWC1WQUxVRS4KK21hZGUgdXNpbmcgbm9uLW5pbCBNSU4tVkFMVUUgYW5kIE1BWC1WQUxV RSBhcmd1bWVudHMgdG8KK2BtYWtlLXByb2dyZXNzLXJlcG9ydGVyJy0tLXRoZW4gVkFMVUUgc2hv dWxkIGJlIGEgbnVtYmVyIGJldHdlZW4KK01JTi1WQUxVRSBhbmQgTUFYLVZBTFVFLgogCiBPcHRp b25hbCBhcmd1bWVudCBTVUZGSVggaXMgYSBzdHJpbmcgdG8gYmUgZGlzcGxheWVkIGFmdGVyCiBS RVBPUlRFUidzIG1haW4gbWVzc2FnZSBhbmQgcHJvZ3Jlc3MgdGV4dC4gIElmIFJFUE9SVEVSIGlz IGEKQEAgLTcwNjEsMTEgKzcwNzQsMTEgQEAgcHJvZ3Jlc3MtcmVwb3J0ZXItLXB1bHNlLWNoYXJh Y3RlcnMKICAgIkNoYXJhY3RlcnMgdG8gdXNlIGZvciBwdWxzaW5nIHByb2dyZXNzIHJlcG9ydGVy cy4iKQogCiAoZGVmdW4gcHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRlIChyZXBvcnRlciB2YWx1 ZSAmb3B0aW9uYWwgc3VmZml4KQotICAobGV0KiAoKHBhcmFtZXRlcnMgICAoY2RyIHJlcG9ydGVy KSkKLQkgKHVwZGF0ZS10aW1lICAoYXJlZiBwYXJhbWV0ZXJzIDApKQotCSAobWluLXZhbHVlICAg IChhcmVmIHBhcmFtZXRlcnMgMSkpCi0JIChtYXgtdmFsdWUgICAgKGFyZWYgcGFyYW1ldGVycyAy KSkKLQkgKHRleHQgICAgICAgICAoYXJlZiBwYXJhbWV0ZXJzIDMpKQorICAobGV0KiAoKHBhcmFt ZXRlcnMgICAgICAoY2RyIHJlcG9ydGVyKSkKKwkgKHVwZGF0ZS10aW1lICAgICAoYXJlZiBwYXJh bWV0ZXJzIDApKQorCSAobWluLXZhbHVlICAgICAgIChhcmVmIHBhcmFtZXRlcnMgMSkpCisJICht YXgtdmFsdWUgICAgICAgKGFyZWYgcGFyYW1ldGVycyAyKSkKKwkgKHRleHQgICAgICAgICAgICAo YXJlZiBwYXJhbWV0ZXJzIDMpKQogCSAoZW5vdWdoLXRpbWUtcGFzc2VkCiAJICA7OyBTZWUgaWYg ZW5vdWdoIHRpbWUgaGFzIHBhc3NlZCBzaW5jZSB0aGUgbGFzdCB1cGRhdGUuCiAJICAob3IgKG5v dCB1cGRhdGUtdGltZSkKQEAgLTcxMDAsNyArNzExMyw5IEBAIHByb2dyZXNzLXJlcG9ydGVyLWRv LXVwZGF0ZQogICAgICAgICAgICAgICAgICAoc2V0cSBzdWZmaXggKG9yIChhcmVmIHBhcmFtZXRl cnMgNikgIiIpKSkKICAgICAgICAgICAgICAgIChpZiAocGx1c3AgcGVyY2VudGFnZSkKICAgICAg ICAgICAgICAgICAgICAobWVzc2FnZSAiJXMlZCUlICVzIiB0ZXh0IHBlcmNlbnRhZ2Ugc3VmZml4 KQotICAgICAgICAgICAgICAgICAobWVzc2FnZSAiJXMgJXMiIHRleHQgc3VmZml4KSkpKSkKKyAg ICAgICAgICAgICAgICAgKG1lc3NhZ2UgIiVzICVzIiB0ZXh0IHN1ZmZpeCkpCisgICAgICAgICAg ICAgICAocnVuLWhvb2std2l0aC1hcmdzICdwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUtZnVuY3Rp b25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydGVyIHBlcmNlbnRh Z2UgbmlsKSkpKQogCSAgOzsgUHVsc2luZyBpbmRpY2F0b3IKIAkgIChlbm91Z2gtdGltZS1wYXNz ZWQKICAgICAgICAgICAgKHdoZW4gKGFuZCB2YWx1ZSAobm90IHN1ZmZpeCkpCkBAIC03MTEzLDEx ICs3MTI4LDE1IEBAIHByb2dyZXNzLXJlcG9ydGVyLWRvLXVwZGF0ZQogICAgICAgICAgICAgICAg ICAgKHB1bHNlLWNoYXIgKGFyZWYgcHJvZ3Jlc3MtcmVwb3J0ZXItLXB1bHNlLWNoYXJhY3RlcnMK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4KSkpCiAJICAgICAoc2V0 Y2FyIHJlcG9ydGVyIGluZGV4KQotICAgICAgICAgICAgIChtZXNzYWdlICIlcyAlcyAlcyIgdGV4 dCBwdWxzZS1jaGFyIHN1ZmZpeCkpKSkpKQorICAgICAgICAgICAgIChtZXNzYWdlICIlcyAlcyAl cyIgdGV4dCBwdWxzZS1jaGFyIHN1ZmZpeCkKKyAgICAgICAgICAgICAocnVuLWhvb2std2l0aC1h cmdzICdwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUtZnVuY3Rpb25zCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXBvcnRlciBuaWwgaW5kZXgpKSkpKSkKIAogKGRlZnVuIHByb2dy ZXNzLXJlcG9ydGVyLWRvbmUgKHJlcG9ydGVyKQotICAiUHJpbnQgcmVwb3J0ZXIncyBtZXNzYWdl IGZvbGxvd2VkIGJ5IHdvcmQgXCJkb25lXCIgaW4gZWNobyBhcmVhLiIKLSAgKG1lc3NhZ2UgIiVz ZG9uZSIgKGFyZWYgKGNkciByZXBvcnRlcikgMykpKQorICAiUHJpbnQgcmVwb3J0ZXIncyBtZXNz YWdlIGZvbGxvd2VkIGJ5IHdvcmQgXCJkb25lXCIgaW4gZWNobyBhcmVhLgorQ2FsbCB0aGUgZnVu Y3Rpb25zIG9uIGBwcm9ncmVzcy1yZXBvcnRlci1kb25lLWZ1bmN0aW9uc2AuIgorICAobWVzc2Fn ZSAiJXNkb25lIiAoYXJlZiAoY2RyIHJlcG9ydGVyKSAzKSkKKyAgKHJ1bi1ob29rLXdpdGgtYXJn cyAncHJvZ3Jlc3MtcmVwb3J0ZXItZG9uZS1mdW5jdGlvbnMgcmVwb3J0ZXIpKQogCiAoZGVmbWFj cm8gZG90aW1lcy13aXRoLXByb2dyZXNzLXJlcG9ydGVyIChzcGVjIHJlcG9ydGVyLW9yLW1lc3Nh Z2UgJnJlc3QgYm9keSkKICAgIkxvb3AgYSBjZXJ0YWluIG51bWJlciBvZiB0aW1lcyBhbmQgcmVw b3J0IHByb2dyZXNzIGluIHRoZSBlY2hvIGFyZWEuCmRpZmYgLS1naXQgYS9saXNwL3N5c3RlbS10 YXNrYmFyLmVsIGIvbGlzcC9zeXN0ZW0tdGFza2Jhci5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uODcyZTc3ZjY4YTIKLS0tIC9kZXYvbnVsbAorKysgYi9saXNwL3N5 c3RlbS10YXNrYmFyLmVsCkBAIC0wLDAgKzEsNDkyIEBACis7Ozsgc3lzdGVtLXRhc2tiYXIuZWwg LS0tIFN5c3RlbSBHVUkgdGFza2Jhci9kb2NrL2xhdW5jaGVyIHN0YXR1cyBkaXNwbGF5IC0qLSBs ZXhpY2FsLWJpbmRpbmc6IHQgLSotCisKKzs7IENvcHlyaWdodCAoQykgMjAyNSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKworOzsgQXV0aG9yOiBTdGVwaGFuZSBNYXJrcworOzsgTWFp bnRhaW5lcjogZW1hY3MtZGV2ZWxAZ251Lm9yZworOzsgS2V5d29yZHM6IGNvbnZlbmllbmNlCis7 OyBQYWNrYWdlLVJlcXVpcmVzOiAoKGVtYWNzICIzMS4xIikpCisKKzs7IFRoaXMgZmlsZSBpcyBw YXJ0IG9mIEdOVSBFbWFjcy4KKworOzsgR05VIEVtYWNzIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKzs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorOzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworOzsgR05VIEVt YWNzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7 OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKzs7IGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90 LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworOzs7IENvbW1lbnRhcnk6 CisKKzs7IFVzZSB0aGlzIHBhY2thZ2UgdG8gZGlzcGxheSBhIHRhc2tiYXIgaWNvbiAiYmFkZ2Ui IG92ZXJsYXksIGEKKzs7IHByb2dyZXNzIGJhciByZXBvcnQgb3ZlcmxheSwgb3IgYWxlcnQgdGhl IHVzZXIgdGhhdCBhbiBFbWFjcyBzZXNzaW9uCis7OyBuZWVkcyBhdHRlbnRpb24sIG9mdGVuIGJ5 IGZsYXNoaW5nIG9yIGJvdW5jaW5nIHRoZSBFbWFjcyBhcHBsaWNhdGlvbgorOzsgaWNvbi4KKzs7 Cis7OyBOb3RlOiBUaGUgdGVybSB0YXNrYmFyIGlzIGluY2x1c2l2ZSBvZiBkb2NrIG9yIGxhdW5j aGVyIG9yIHNvbWUgb3RoZXIKKzs7IHRlcm1pbm9sb2d5IGFzIG1heSBiZSB1c2VkIGZvciB5b3Vy IHN5c3RlbS4KKzs7Cis7OyBPbiBHTlUvTGludXgsIHRoZSB2aXNpYmxlIGVmZmVjdHMgd2lsbCBh cHBlYXIgb24gdGhlIGRlc3RpbmF0aW9ucworOzsgZGV0ZXJtaW5lZCBieSB5b3VyIHNoZWxsIGV4 dGVuc2lvbiwgbW9zdCBvZnRlbiB0aGUgYXBwbGljYXRpb24KKzs7IGxhdW5jaGVyIG9yIGRvY2sg cGFuZWwsIG9yIHRoZSB0b3AgcGFuZWwuICBFZmZlY3RzIGFyZSBnbG9iYWwgZm9yIGFuCis7OyBF bWFjcyBpbnN0YW5jZS4KKzs7Cis7OyBPbiBtYWNPUy9HTlVzdGVwLCB0aGUgZWZmZWN0cyB3aWxs IGFwcGVhciBvbiB0aGUgRG9jayBhbmQgaW4gdGhlIEFwcAorOzsgU3dpdGNoZXIuICBFZmZlY3Rz IGFyZSBnbG9iYWwgZm9yIGFuIEVtYWNzIGluc3RhbmNlLgorOzsKKzs7IE9uIE1TLVdpbmRvd3Ms IHRoZSBlZmZlY3RzIGFwcGVhciBvbiB0aGUgdGFza2Jhci4gIEVmZmVjdHMgYXJlCis7OyBhc3Nv Y2lhdGVkIHdpdGggdGhlIGZyYW1lIGZyb20gd2hpY2ggdGhleSBhcmUgaW5pdGlhdGVkLgorCis7 OzsgVXNhZ2U6CisKKzs7IFRoZSBnbG9iYWwgbWlub3IgbW9kZSBgc3lzdGVtLXRhc2tiYXItbW9k ZScgaW5pdGlhbGl6ZXMgdGhlIEdVSQorOzsgcGxhdGZvcm0gYmFjay1lbmQgYW5kIG11c3QgYmUg ZW5hYmxlZCBiZWZvcmUgdXNpbmcgdGhlIGZ1bmN0aW9ucworOzsgYmVsb3cuCis7OworOzsgYHN5 c3RlbS10YXNrYmFyLWJhZGdlJyBvdmVybGF5cyBhIGNvdW50LCB3aGljaCBpcyBhbiBpbnRlZ2Vy LCBvbiB0aGUKKzs7IEVtYWNzIHRhc2tiYXIgaWNvbi4gIFlvdSBjYW4gdXNlIHRoaXMsIGZvciBl eGFtcGxlLCB0byBpbmRpY2F0ZSB0aGUKKzs7IG51bWJlciBvZiB1bnJlYWQgZW1haWwgbWVzc2Fn ZXMuICBPbiBHTlUvTGludXgsIHRoZSBjb3VudCBtdXN0IGJlIGFuCis7OyBpbnRlZ2VyIG9yIG5p bC4gIE9uIG1hY09TL0dOVXN0ZXAsIHRoZSBjb3VudCBtYXkgYmUgYW4gaW50ZWdlciBvciBhCis7 OyBzdHJpbmcsIHdoaWNoIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHdpbGwgYWJicmV2aWF0ZSBpZiB0 b28gbG9uZy4gIE9uCis7OyBNUy1XaW5kb3dzLCB0aGUgdGFza2JhciBiYWRnZSB3aWxsIGJlIGFi YnJldmlhdGVkIHRvIHRocmVlCis7OyBjaGFyYWN0ZXJzOyBpZiB0aGUgY291bnQgaXMgYW4gaW50 ZWdlciBvdXRzaWRlIHRoZSByYW5nZSAtOTkgdG8gOTksCis7OyBpdCBpcyBzaG93biBhcyAiLTk5 IiBvciAiOTkrIiwgaWYgY291bnQgaXMgYSBzdHJpbmcgbG9uZ2VyIHRoYW4gMworOzsgY2hhcmFj dGVycyBpdCBpcyB0cnVuY2F0ZWQuCis7OworOzsgYHN5c3RlbS10YXNrYmFyLWF0dGVudGlvbicg Zmxhc2hlcyBvciBib3VuY2VzIHRoZSBFbWFjcyB0YXNrYmFyIGljb24KKzs7IHRvIGluZGljYXRl IHRoYXQgeW91ciBFbWFjcyBzZXNzaW9uIHdhbnRzIGF0dGVudGlvbi4gIEl0cyBiZWhhdmlvcnMK Kzs7IGFyZSBiYWNrLWVuZCBzcGVjaWZpYy4KKzs7Cis7OyBgc3lzdGVtLXRhc2tiYXItcHJvZ3Jl c3MnIG92ZXJsYXlzIGEgZ3JhcGhpY2FsIHByb2dyZXNzIGJhciBvbiB0aGUKKzs7IEVtYWNzIHRh c2tiYXIgaWNvbiB0byBpbGx1c3RyYXRlIHByb2dyZXNzIG9mIGEgcG90ZW50aWFsbHkKKzs7IGxv bmctcnVubmluZyBvcGVyYXRpb24uCis7OworOzsgV2hlbiBgc3lzdGVtLXRhc2tiYXItbW9kZWAg aXMgZW5hYmxlZCwgRW1hY3MgcHJvZ3Jlc3MgcmVwb3J0ZXJzIHdpbGwKKzs7IGJlIGVuaGFuY2Vk IHRvIGRpc3BsYXkgdGFza2JhciBHVUkgcHJvZ3Jlc3MgYmFycy4gIEN1c3RvbWl6ZQorOzsgYHN5 c3RlbS10YXNrYmFyLXVzZS1wcm9ncmVzcy1yZXBvcnRlcmAgaWYgeW91IHdhbnQgdG8gZGlzYWJs ZSB0aGlzLgorOzsKKzs7IE9uIEdOVS9MaW51eCBzeXN0ZW1zLCB0aGUgaW1wbGVtZW50YXRpb24g aXMgdmlhIEQtQnVzIHRvIGNvbnRyb2wgR1VJCis7OyBzaGVsbHMgYW5kL29yIHNoZWxsIGV4dGVu c2lvbnMgc3VjaCBhcworOzsgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24v MzA3L2Rhc2gtdG8tZG9jay8gdGhhdAorOzsgaW1wbGVtZW50IFVidW50dSdzIFVuaXR5IGxhdW5j aGVyIHNwZWMKKzs7IGh0dHBzOi8vd2lraS51YnVudHUuY29tL1VuaXR5L0xhdW5jaGVyQVBJLgor OzsKKzs7IFlvdXIgTGludXggRW1hY3MgaW5zdGFuY2Ugc2hvdWxkIGJlIGxhdW5jaGVkIHZpYSBh biBhcHByb3ByaWF0ZSBzaGVsbAorOzsgImRlc2t0b3AiIGZpbGUgc3VjaCBhcyB0aG9zZSBkaXN0 cmlidXRlZCB3aXRoIEVtYWNzOyBlLmcuLAorOzsgImV0Yy9lbWFjc2NsaWVudC5kZXNrdG9wIiBh cyBkb2N1bWVudGVkIGhlcmUKKzs7IGh0dHBzOi8vc3BlY2lmaWNhdGlvbnMuZnJlZWRlc2t0b3Au b3JnL2Rlc2t0b3AtZW50cnkvbGF0ZXN0LyBhbmQKKzs7IHdoaWNoIHlvdXIgR1VJIHN5c3RlbSBz aG91bGQgaW1wbGVtZW50LgorOzsKKzs7IE9uIG1hY09TL0dOVXN0ZXAgc3lzdGVtcyAoYWthIE5T KSBhbmQgTVMtV2luZG93cywgbmF0aXZlIEFQSXMgYXJlCis7OyB1c2VkIGFuZCBELUJ1cyBpcyBu b3QsIGV2ZW4gaWYgRC1CdXMgaXMgY29uZmlndXJlZCBpbiB5b3VyIGJ1aWxkLgorOzsKKzs7IFRv IGFkZCBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIHN5c3RlbXMsIHByb3ZpZGUgYSBiYWNrIGVuZCB0 aGF0IGltcGxlbWVudHMKKzs7IHRoZSBjbC1nZW5lcmljIGZ1bmN0aW9ucyBiZWxvdy4KKworOzs7 IENvZGU6CisKKyhyZXF1aXJlICdkYnVzKQorCisoZGVmZ3JvdXAgc3lzdGVtLXRhc2tiYXIgbmls CisgICJTeXN0ZW0gR1VJIHRhc2tiYXIgaWNvbiBiYWRnZSwgcHJvZ3Jlc3MgcmVwb3J0LCBhbGVy dGluZy4iCisgIDpncm91cCAnY29udmVuaWVuY2UKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVm dW4gc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MtcmVwb3J0ZXItaW5zdGFsbCAoKQorICAiSW5zdGFs bCBzeXN0ZW0tdGFza2JhciBwcm9ncmVzcyByZXBvcnRlcnMuIgorICAoYWRkLWhvb2sgJ3Byb2dy ZXNzLXJlcG9ydGVyLXVwZGF0ZS1mdW5jdGlvbnMgIydzeXN0ZW0tdGFza2Jhci0tcHJvZ3Jlc3Mt cmVwb3J0ZXItdXBkYXRlKQorICAoYWRkLWhvb2sgJ3Byb2dyZXNzLXJlcG9ydGVyLWRvbmUtZnVu Y3Rpb25zICMnc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzLXJlcG9ydGVyLWRvbmUpKQorCisoZGVm dW4gc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MtcmVwb3J0ZXItcmVtb3ZlICgpCisgICJSZW1vdmUg c3lzdGVtLXRhc2tiYXIgcHJvZ3Jlc3MgcmVwb3J0ZXJzLiIKKyAgKHJlbW92ZS1ob29rICdwcm9n cmVzcy1yZXBvcnRlci11cGRhdGUtZnVuY3Rpb25zICMnc3lzdGVtLXRhc2tiYXItLXByb2dyZXNz LXJlcG9ydGVyLXVwZGF0ZSkKKyAgKHJlbW92ZS1ob29rICdwcm9ncmVzcy1yZXBvcnRlci1kb25l LWZ1bmN0aW9ucyAjJ3N5c3RlbS10YXNrYmFyLS1wcm9ncmVzcy1yZXBvcnRlci1kb25lKSkKKwor KGRlZmN1c3RvbSBzeXN0ZW0tdGFza2Jhci11c2UtcHJvZ3Jlc3MtcmVwb3J0ZXIgdAorICAiU3Vw cGxlbWVudCBwcm9ncmVzcy1yZXBvcnRlcnMgd2l0aCBHVUkgc3lzdGVtIHRhc2tiYXIgcHJvZ3Jl c3MgYmFycy4iCisgIDp0eXBlICdib29sZWFuCisgIDpzZXQgKGxhbWJkYSAodmFyaWFibGUgdmFs dWUpCisgICAgICAgICAoc2V0LWRlZmF1bHQgdmFyaWFibGUgdmFsdWUpCisgICAgICAgICAoaWYg dmFsdWUKKyAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MtcmVwb3J0ZXItaW5z dGFsbCkKKyAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLXByb2dyZXNzLXJlcG9ydGVyLXJlbW92 ZSkpKQorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZjdXN0b20gc3lzdGVtLXRhc2tiYXItY2xl YXItYXR0ZW50aW9uLW9uLWZyYW1lLWZvY3VzIHQKKyAgIkNsZWFyIHRoZSBpY29uIGF0dGVudGlv biBpbmRpY2F0b3Igd2hlbiBhbnkgR1VJIGZyYW1lIGlzIGZvY3VzZWQuCitCYWNrIGVuZHMgdGhh dCBhdXRvbWF0aWNhbGx5IGNsZWFyIHRoZSBhdHRlbnRpb24gaW5kaWNhdG9yLCBzdWNoIGFzCitt YWNPUy9HTlVzdGVwIGFuZCBNUy1XaW5kb3dzLCBpZ25vcmUgdGhpcyBvcHRpb24uIgorICA6dHlw ZSAnYm9vbGVhbgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZjdXN0b20gc3lzdGVtLXRhc2ti YXItZGJ1cy1kZXNrdG9wLWZpbGUtbmFtZSAiZW1hY3NjbGllbnQiCisgICJELUJ1cyBkZXNrdG9w IGZpbGUgYmFzZSBuYW1lIGZvciB0aGUgc3lzdGVtIHRhc2tiYXIgZGVzdGluYXRpb24uCitUaGlz IHNob3VsZCBiZSB0aGUgYmFzZSBuYW1lIG9mIHRoZSBkZXNrdG9wIGZpbGUgdXNlZCB0byBsYXVu Y2ggYW4gRW1hY3MKK2luc3RhbmNlLiAgRm9yIGV4YW1wbGUsIGlmIHlvdXIgbGF1bmNoZXIgZGVz a3RvcCBmaWxlIGlzIGNhbGxlZAorXCJlbWFjcy5kZXNrdG9wXCIsIHRoaXMgb3B0aW9uIHNob3Vs ZCBiZSBcImVtYWNzXCIuIgorICA6dHlwZSAnc3RyaW5nCisgIDp2ZXJzaW9uICIzMS4xIikKKwor KGRlZmN1c3RvbSBzeXN0ZW0tdGFza2Jhci1kYnVzLXRpbWVvdXQgbmlsCisgICJOdW1iZXIgb2Yg bWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIEQtQnVzIHJlc3BvbnNlcy4KK0lmIG5pbCwgdXNlIHRo ZSBgZGJ1c2AgZGVmYXVsdCB0aW1lb3V0IGluIGBkYnVzLWNhbGwtbWV0aG9kYCB3aGljaCBpcwor MjUwMDAgKGkuZS4sIDI1bXMpLgorCitJZiB5b3VyIEQtQnVzIGRlc2t0b3AgZXh0ZW5zaW9uIG5l ZWRzIGV4dHJhIHRpbWUgdG8gcmVzcG9uZCwgaW4gd2hpY2gKK2Nhc2UgYHN5c3RlbS10YXNrYmFy LW1vZGVgIG1pZ2h0IG5vdCBpbml0aWFsaXplIG9yIHJlbGF0ZWQgZnVuY3Rpb25zCittaWdodCBu b3QgdGFrZSB2aXNpYmxlIGVmZmVjdCwgYmluZCB0aGlzIHRvIGEgdmFsdWUgaGlnaGVyIHRoYW4g MjUwMDAgdG8KK2ZpbmQgd2hhdCB3b3JrcyBmb3IgeW91ciBzeXN0ZW0uIgorICA6dHlwZSAnKGNo b2ljZSAoY29uc3QgOnRhZyAiRGVmYXVsdCIgbmlsKSBuYXRudW0pCisgIDp2ZXJzaW9uICIzMS4x IikKKworKGRlZnZhciBzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgbmlsCisgICJHZW5lcmljIHRh c2tiYXIgbWV0aG9kIHN5c3RlbSBkaXNwYXRjaGVyLiIpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jh ci0tc2V0LWJhY2stZW5kICgpCisgICJEZXRlcm1pbmUgdGFza2JhciBob3N0IHN5c3RlbSB0eXBl LiIKKyAgOzsgT3JkZXIgbWF0dGVycyB0byBhY2NvbW1vZGF0ZSB0aGUgY2FzZXMgd2hlcmUgYW4g TlMgb3IgTVMtV2luZG93cworICA7OyBidWlsZCBoYXZlIHRoZSBkYnVzIGZlYXR1cmUuCisgIChj b25kICgoYm91bmRwICducy12ZXJzaW9uLXN0cmluZykKKyAgICAgICAgIChzZXRxIHN5c3RlbS10 YXNrYmFyLS1iYWNrLWVuZCAnbnMpKQorICAgICAgICAoKGJvdW5kLWFuZC10cnVlLXAgdzMyLWlu aXRpYWxpemVkKQorICAgICAgICAgKHNldHEgc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kICd3MzIp KQorICAgICAgICAoKGFuZCAoZmVhdHVyZXAgJ2RidXNiaW5kKQorICAgICAgICAgICAgICAobWVt YmVyICJvcmcuZnJlZWRlc2t0b3AubG9naW4xIgorICAgICAgICAgICAgICAgICAgICAgIChkYnVz LWxpc3QtYWN0aXZhdGFibGUtbmFtZXMgOnN5c3RlbSkpKQorICAgICAgICAgKHNldHEgc3lzdGVt LXRhc2tiYXItLWJhY2stZW5kICdkYnVzKSkKKyAgICAgICAgKHQKKyAgICAgICAgIChzZXRxIHN5 c3RlbS10YXNrYmFyLS1iYWNrLWVuZCBuaWwpKSkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVmaW5l LW1pbm9yLW1vZGUgc3lzdGVtLXRhc2tiYXItbW9kZQorICAiU3lzdGVtIEdVSSB0YXNrYmFyIGlj b24gYmFkZ2UsIHByb2dyZXNzIHJlcG9ydCwgYWxlcnRpbmcuIgorICA6Z2xvYmFsIHQKKyAgKHdo ZW4gbm9uaW50ZXJhY3RpdmUKKyAgICAod2FybiAiQmF0Y2ggbW9kZSBkb2VzIG5vdCBzdXBwb3J0 IGBzeXN0ZW0tdGFza2JhciciKSkKKyAgKGNvbmQgKHN5c3RlbS10YXNrYmFyLW1vZGUKKyAgICAg ICAgIChpZiAoc3lzdGVtLXRhc2tiYXItLXNldC1iYWNrLWVuZCkKKyAgICAgICAgICAgICAoc3lz dGVtLXRhc2tiYXItLWVuYWJsZSkKKyAgICAgICAgICAgKHdhcm4gIlN5c3RlbSBkb2VzIG5vdCBz dXBwb3J0IGBzeXN0ZW0tdGFza2JhciciKSkKKyAgICAgICAgICh3aGVuIHN5c3RlbS10YXNrYmFy LXVzZS1wcm9ncmVzcy1yZXBvcnRlcgorICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItcHJvZ3Jl c3MtcmVwb3J0ZXItaW5zdGFsbCkpKQorICAgICAgICAodAorICAgICAgICAgKHN5c3RlbS10YXNr YmFyLXByb2dyZXNzLXJlcG9ydGVyLXJlbW92ZSkKKyAgICAgICAgICh3aGVuIHN5c3RlbS10YXNr YmFyLS1iYWNrLWVuZAorICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWRpc2FibGUpCisgICAg ICAgICAgIChzZXRxIHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCBuaWwpKSkpKQorCisoY2wtZGVm Z2VuZXJpYyBzeXN0ZW0tdGFza2Jhci0tZW5hYmxlICgpCisgICJFbmFibGUgdGhlIHN5c3RlbS10 YXNrYmFyIGJhY2sgZW5kLiIpCisKKyhjbC1kZWZnZW5lcmljIHN5c3RlbS10YXNrYmFyLS1kaXNh YmxlICgpCisgICJEaXNhYmxlIHRoZSBzeXN0ZW0tdGFza2JhciBiYWNrIGVuZC4iKQorCisoY2wt ZGVmZ2VuZXJpYyBzeXN0ZW0tdGFza2Jhci1iYWRnZSAoJm9wdGlvbmFsIGNvdW50KQorICAiRGlz cGxheSBhIENPVU5UIG92ZXJsYXkgb24gdGhlIHN5c3RlbSB0YXNrYmFyIEVtYWNzIGljb24uCitJ ZiBDT1VOVCBpcyBhbiBpbnRlZ2VyLCBkaXNwbGF5IHRoYXQgYXMgdGhlIGljb24gYmFkZ2UuCitJ ZiBDT1VOVCBpcyBhIHN0cmluZyBvbiBiYWNrIGVuZHMgd2hpY2ggZG8gbm90IHN1cHBvcnQgc3Ry aW5ncywgY29udmVydAorQ09VTlQgdG8gYW4gaW50ZWdlciwgb3IgbmlsIGlmIHRoYXQgZmFpbHMu CitJZiBDT1VOVCBpcyBuaWwgb3IgYW4gZW1wdHkgc3RyaW5nLCByZW1vdmUgdGhlIGNvdW50ZXIu IikKKworKGNsLWRlZmdlbmVyaWMgc3lzdGVtLXRhc2tiYXItYXR0ZW50aW9uICgmb3B0aW9uYWwg dXJnZW5jeSB0aW1lb3V0KQorICAiRmxhc2ggdGhlIHN5c3RlbSB0YXNrYmFyIGljb24gYW5kL29y IGZyYW1lIHRvIGFsZXJ0IHRoZSB1c2VyLgorSWYgVVJHRU5DWSBpcyB0aGUgc3ltYm9sIGBpbmZv cm1hdGlvbmFsJywgcmVxdWVzdCBub3JtYWwgYXR0ZW50aW9uLgorSWYgVVJHRU5DWSBpcyB0aGUg c3ltYm9sIGBjcml0aWNhbCcsIHJlcXVlc3QgdXJnZW50IGF0dGVudGlvbi4KK0lmIFVSR0VOQ1kg aXMgbmlsLCBjbGVhciB0aGUgYXR0ZW50aW9uIGluZGljYXRvci4KKworSWYgVElNRU9VVCBpcyBu b24tbmlsLCBjbGVhciB0aGUgYXR0ZW50aW9uIGluZGljYXRvciBhZnRlciBUSU1FT1VUCitzZWNv bmRzLCBvdGhlcndpc2UgdGhlIGF0dGVudGlvbiBpbmRpY2F0b3Igd2lsbCBiZSBjbGVhcmVkIGVp dGhlciBpZiB0aGUKK2ZyYW1lIGlzIGZvY3VzZWQgYnkgdGhlIHVzZXIgb3IgaWYgYHN5c3RlbS10 YXNrYmFyLWF0dGVudGlvbicgaXMgY2FsbGVkCit3aXRoIG5pbCBVUkdFTkNZLgorCitPbiBzb21l IGJhY2sgZW5kcywgYW4gYGluZm9ybWF0aW9uYWwnIGF0dGVudGlvbiByZXF1ZXN0IHdpbGwgdGlt ZSBvdXQKK2F1dG9tYXRpY2FsbHkuICBJbiBjb250cmFzdCwgYSBgY3JpdGljYWxgIHJlcXVlc3Qg cmVxdWlyZXMgdGhhdCB0aGUgdXNlcgorYnJpbmcgRW1hY3MgaW50byBmb2N1cyBhbmQgd2lsbCBu b3QgdGltZSBvdXQuICBPbiBzb21lIGJhY2sgZW5kcywKK2Bjcml0aWNhbCcgaGFzIHRoZSBzYW1l IGVmZmVjdCBhcyBgaW5mb3JtYXRpb25hbCcuIikKKworKGNsLWRlZmdlbmVyaWMgc3lzdGVtLXRh c2tiYXItcHJvZ3Jlc3MgKCZvcHRpb25hbCBwcm9ncmVzcykKKyAgIkRpc3BsYXkgYSBwcm9ncmVz cyBpbmRpY2F0b3Igb3ZlcmxheSBvbiB0aGUgc3lzdGVtIHRhc2tiYXIgaWNvbi4KK1BST0dSRVNT IGlzIGEgZmxvYXQgaW4gdGhlIHJhbmdlIDAuMCB0byAxLjAuCitJZiBQUk9HUkVTUyBpcyBuaWws IHJlbW92ZSB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yLiIpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jh ci0tdmFsaWRhdGUtcHJvZ3Jlc3MgKHByb2dyZXNzKQorICAiUmV0dXJuIFBST0dSRVNTIGFzIGEg ZmxvYXQgaW4gdGhlIHJhbmdlIDAuMCB0byAxLjAsIG9yIG5pbC4iCisgICh3aGVuIChuYXRudW1w IHByb2dyZXNzKQorICAgIChzZXRxIHByb2dyZXNzIChmbG9hdCBwcm9ncmVzcykpKQorICAod2hl biAoYW5kIHByb2dyZXNzICg+PSBwcm9ncmVzcyAwLjApICg8PSBwcm9ncmVzcyAxLjApKQorICAg IHByb2dyZXNzKSkKKworDAorOzsgYHByb2dyZXNzLXJlcG9ydGVyJyBzdXBwb3J0LgorCisoZGVm dW4gc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZSAoX3JlcG9ydGVyIHBl cmNlbnRhZ2UgaW5kZXgpCisgICJgcHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRlYCBjYWxsYmFj ay4KK1JFUE9SVEVSIHNob3VsZCBiZSB0aGUgcmVzdWx0IG9mIGEgY2FsbCB0byBgbWFrZS1wcm9n cmVzcy1yZXBvcnRlcicuCitQRVJDRU5UQUdFIGlzIGluIHRoZSByYW5nZSAwLTEwMCwgb3Igbmls IGZvciBhIHB1bHNpbmcgcmVwb3J0ZXIuCitJTkRFWCBpcyBpbiB0aGUgcmFuZ2UgMC0zLCBvciBu aWwgZm9yIGEgbnVtZXJpYyByZXBvcnRlci4iCisgIChjb25kIChwZXJjZW50YWdlCisgICAgICAg ICAoc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MgKC8gcGVyY2VudGFnZSAxMDAuMCkpKQorICAgICAg ICAoaW5kZXgKKyAgICAgICAgIChzeXN0ZW0tdGFza2Jhci1wcm9ncmVzcyAoLyAoMSsgaW5kZXgp IDQuMCkpKSkpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci0tcHJvZ3Jlc3MtcmVwb3J0ZXItZG9u ZSAoX3JlcG9ydGVyKQorICAiYHByb2dyZXNzLXJlcG9ydGVyLWRvbmVgIGNhbGxiYWNrLgorUkVQ T1JURVIgc2hvdWxkIGJlIHRoZSByZXN1bHQgb2YgYSBjYWxsIHRvIGBtYWtlLXByb2dyZXNzLXJl cG9ydGVyJy4iCisgIChzeXN0ZW0tdGFza2Jhci1wcm9ncmVzcyBuaWwpKQorCisMCis7OyBELUJ1 cyBzdXBwb3J0LgorCisoZGVmY29uc3Qgc3lzdGVtLXRhc2tiYXItLWRidXMtc2VydmljZSAiY29t LmNhbm9uaWNhbC5Vbml0eSIpCisoZGVmY29uc3Qgc3lzdGVtLXRhc2tiYXItLWRidXMtaW50ZXJm YWNlICJjb20uY2Fub25pY2FsLlVuaXR5LkxhdW5jaGVyRW50cnkiKQorCisoZGVmdmFyIHN5c3Rl bS10YXNrYmFyLS1kYnVzLWF0dGVudGlvbiBuaWwKKyAgIk5vbi1uaWwgd2hlbiBhdHRlbnRpb24g aXMgcmVxdWVzdGVkLiIpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1zZW5kLXNpZ25h bCAobWVzc2FnZSkKKyAgIlNlbmQgTUVTU0FHRSB0byB0aGUgRC1CdXMgc3lzdGVtIHRhc2tiYXIg c2VydmljZS4iCisgIChsZXQgKChhcHAtdXJpCisgICAgICAgICAoZm9ybWF0ICJhcHBsaWNhdGlv bjovLyVzLmRlc2t0b3AiCisgICAgICAgICAgICAgICAgIHN5c3RlbS10YXNrYmFyLWRidXMtZGVz a3RvcC1maWxlLW5hbWUpKSkKKyAgICAoZGJ1cy1zZW5kLXNpZ25hbAorICAgICA6c2Vzc2lvbgor ICAgICBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1zZXJ2aWNlCisgICAgICIvIgorICAgICBzeXN0ZW0t dGFza2Jhci0tZGJ1cy1pbnRlcmZhY2UKKyAgICAgIlVwZGF0ZSIKKyAgICAgYXBwLXVyaQorICAg ICBtZXNzYWdlKSkpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1jbGVhci1hdHRlbnRp b24tb24tZnJhbWUtZm9jdXMgKCkKKyAgIkNsZWFyIGFuIGFjdGl2ZSBELUJ1cyBhdHRlbnRpb24g cmVxdWVzdCBpZiBhbnkgZnJhbWUgaXMgZm9jdXNlZC4iCisgICh3aGVuIChhbmQgc3lzdGVtLXRh c2tiYXItLWRidXMtYXR0ZW50aW9uCisgICAgICAgICAgICAgKGNhdGNoIDpjbGVhcgorICAgICAg ICAgICAgICAgKGRvbGlzdCAoZnJhbWUgKGZyYW1lLWxpc3QpKQorICAgICAgICAgICAgICAgICAo d2hlbiAoZXEgKGZyYW1lLWZvY3VzLXN0YXRlIGZyYW1lKSB0KQorICAgICAgICAgICAgICAgICAg ICh0aHJvdyA6Y2xlYXIgdCkpKSkpCisgICAgKHN5c3RlbS10YXNrYmFyLWF0dGVudGlvbiBuaWwp KSkKKworKGRlZnVuIHN5c3RlbS10YXNrYmFyLWRidXMtcGluZy1zZXJ2aWNlICgpCisgICJSZXR1 cm4gbm9uLW5pbCBpZiBgc3lzdGVtLXRhc2tiYXItLWRidXMtc2VydmljZScgcmVzcG9uZHMuCitS ZXR1cm4gbmlsIGlmIG5vIHJlc3BvbnNlIHdpdGhpbiBgc3lzdGVtLXRhc2tiYXItZGJ1cy10aW1l b3V0Jy4iCisgIChkYnVzLXBpbmcKKyAgIDpzZXNzaW9uCisgICBzeXN0ZW0tdGFza2Jhci0tZGJ1 cy1zZXJ2aWNlCisgICBzeXN0ZW0tdGFza2Jhci1kYnVzLXRpbWVvdXQpKQorCisoY2wtZGVmbWV0 aG9kIHN5c3RlbS10YXNrYmFyLS1lbmFibGUgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAnZGJ1cykp KQorICAodW5sZXNzIChzeXN0ZW0tdGFza2Jhci1kYnVzLXBpbmctc2VydmljZSkKKyAgICAoZXJy b3IgIkQtQnVzIHNlcnZpY2UgYCVzJyB1bmF2YWlsYWJsZSIgc3lzdGVtLXRhc2tiYXItLWRidXMt c2VydmljZSkpCisgICh3aGVuIHN5c3RlbS10YXNrYmFyLWNsZWFyLWF0dGVudGlvbi1vbi1mcmFt ZS1mb2N1cworICAgIChhZGQtZnVuY3Rpb24gOmFmdGVyIGFmdGVyLWZvY3VzLWNoYW5nZS1mdW5j dGlvbgorICAgICAgICAgICAgICAgICAgIydzeXN0ZW0tdGFza2Jhci0tZGJ1cy1jbGVhci1hdHRl bnRpb24tb24tZnJhbWUtZm9jdXMpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0t ZGlzYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAnZGJ1cykpKQorICAocmVtb3ZlLWZ1bmN0 aW9uIGFmdGVyLWZvY3VzLWNoYW5nZS1mdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICMnc3lz dGVtLXRhc2tiYXItLWRidXMtY2xlYXItYXR0ZW50aW9uLW9uLWZyYW1lLWZvY3VzKSkKKworKGNs LWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci1iYWRnZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAnZGJ1 cykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgY291bnQp CisgICJEaXNwbGF5IENPVU5UIGFzIGFuIG92ZXJsYXkgb24gdGhlIHN5c3RlbSB0YXNrYmFyIEVt YWNzIGljb24uCitJZiBDT1VOVCBpcyBhbiBpbnRlZ2VyLCBkaXNwbGF5IHRoYXQuICBJZiBDT1VO VCBpcyBhIHN0cmluZywgY29udmVydCBpdAordG8gYW4gaW50ZWdlciwgb3IgbmlsIGlmIHRoYXQg ZmFpbHMuICBJZiBDT1VOVCBpcyBhbnkgb3RoZXIgdHlwZSwgdXNlCituaWwuICBJZiBDT1VOVCBp cyBuaWwgb3IgYW4gZW1wdHkgc3RyaW5nLCByZW1vdmUgdGhlIGJhZGdlLgorTm90ZTogVGhlIFVu aXR5IEQtQnVzIHByb3RvY29sIHN1cHBvcnRzIG9ubHkgaW50ZWdlciBiYWRnZXMuIgorICAoY29u ZCAoKHN0cmluZ3AgY291bnQpCisgICAgICAgICAoaWYgKHN0cmluZy1lbXB0eS1wIGNvdW50KQor ICAgICAgICAgICAgIChzZXRxIGNvdW50IG5pbCkKKyAgICAgICAgICAgKGxldCAoKGNvdW50LTEg KHN0cmluZy10by1udW1iZXIgY291bnQpKSkKKyAgICAgICAgICAgICAoc2V0cSBjb3VudCAoaWYg KGludGVnZXJwIGNvdW50LTEpIGNvdW50LTEgbmlsKSkpKSkKKyAgICAgICAgKChub3QgKGludGVn ZXJwIGNvdW50KSkKKyAgICAgICAgIChzZXRxIGNvdW50IG5pbCkpKQorICAoc3lzdGVtLXRhc2ti YXItLWRidXMtc2VuZC1zaWduYWwKKyAgIGAoKDpkaWN0LWVudHJ5ICJjb3VudC12aXNpYmxlIgor ICAgICAgICAgICAgICAgICAgKDp2YXJpYW50IDpib29sZWFuICwobm90IChudWxsIGNvdW50KSkp KQorICAgICAoOmRpY3QtZW50cnkgImNvdW50IgorICAgICAgICAgICAgICAgICAgKDp2YXJpYW50 IDp1aW50MzIgLChpZiAobnVsbCBjb3VudCkgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY291bnQpKSkpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci1h dHRlbnRpb24gKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICdkYnVzKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgdXJnZW5jeSB0aW1lb3V0KQorICAi UmVxdWVzdCBVUkdFTkNZIHVzZXIgYXR0ZW50aW9uIG9uIHRoZSBzeXN0ZW0gdGFza2JhciBFbWFj cyBpY29uLgorVGhlIHJlcXVlc3Qgd2lsbCB0aW1lIG91dCB3aXRoaW4gdGhlIFRJTUVPVVQgc2Vj b25kcyBpbnRlcnZhbC4KK1RoZSBVbml0eSBELUJ1cyBwcm90b2NvbCBkb2VzIG5vdCBzdXBwb3J0 IGRpZmZlcmVudGlhdGVkIHVyZ2VuY2llcy4iCisgIChzZXRxIHN5c3RlbS10YXNrYmFyLS1kYnVz LWF0dGVudGlvbiB1cmdlbmN5KQorICAoc3lzdGVtLXRhc2tiYXItLWRidXMtc2VuZC1zaWduYWwK KyAgIGAoKDpkaWN0LWVudHJ5ICJ1cmdlbnQiCisgICAgICAgICAgICAgICAgICAoOnZhcmlhbnQg OmJvb2xlYW4gLChub3QgKG51bGwgdXJnZW5jeSkpKSkpKQorICAod2hlbiAoYW5kIHVyZ2VuY3kg dGltZW91dCkKKyAgICAocnVuLXdpdGgtdGltZXIKKyAgICAgdGltZW91dAorICAgICBuaWwKKyAg ICAgIydzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gbmlsKSkpCisKKyhjbC1kZWZtZXRob2Qgc3lz dGVtLXRhc2tiYXItcHJvZ3Jlc3MgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ2RidXMpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbmFsIHByb2dyZXNzKQor ICAiRGlzcGxheSBhIHByb2dyZXNzIGJhciBvdmVybGF5IG9uIHRoZSBzeXN0ZW0gdGFza2JhciBp Y29uLgorUFJPR1JFU1MgaXMgYSBmbG9hdCBpbiB0aGUgcmFuZ2UgMC4wIHRvIDEuMC4KK0lmIFBS T0dSRVNTIGlzIG5pbCwgcmVtb3ZlIHRoZSBwcm9ncmVzcyBiYXIuIgorICAoc2V0cSBwcm9ncmVz cyAoc3lzdGVtLXRhc2tiYXItLXZhbGlkYXRlLXByb2dyZXNzIHByb2dyZXNzKSkKKyAgKHN5c3Rl bS10YXNrYmFyLS1kYnVzLXNlbmQtc2lnbmFsCisgICBgKCg6ZGljdC1lbnRyeSAicHJvZ3Jlc3Mt dmlzaWJsZSIKKyAgICAgICAgICAgICAgICAgICg6dmFyaWFudCA6Ym9vbGVhbiAsKG5vdCAobnVs bCBwcm9ncmVzcykpKSkKKyAgICAgKDpkaWN0LWVudHJ5ICJwcm9ncmVzcyIKKyAgICAgICAgICAg ICAgICAgICg6dmFyaWFudCA6ZG91YmxlICwoaWYgKG51bGwgcHJvZ3Jlc3MpIDAgcHJvZ3Jlc3Mp KSkpKSkKKworDAorOzsgbWFjT1MvR05Vc3RlcCBOUyBzdXBwb3J0LgorCisoZGVjbGFyZS1mdW5j dGlvbiBucy1iYWRnZSAibnNmbnMubSIpCisoZGVjbGFyZS1mdW5jdGlvbiBucy1yZXF1ZXN0LXVz ZXItYXR0ZW50aW9uICJuc2Zucy5tIikKKyhkZWNsYXJlLWZ1bmN0aW9uIG5zLXByb2dyZXNzLWlu ZGljYXRvciAibnNmbnMubSIpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItLWVuYWJs ZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3Rl bS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICducykpKQorICAoaWdub3JlKSkKKworKGNsLWRlZm1l dGhvZCBzeXN0ZW0tdGFza2Jhci0tZGlzYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAnbnMp KSkKKyAgKGlnbm9yZSkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItYmFkZ2UgKCZj b250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2ti YXItLWJhY2stZW5kIChlcWwgJ25zKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZvcHRpb25hbCBjb3VudCkKKyAgIkRpc3BsYXkgQ09VTlQgYXMgYW4gb3ZlcmxheSBvbiB0 aGUgRG9jayBiYWRnZS4KK0lmIENPVU5UIGlzIGFuIGludGVnZXIgb3IgYSBub24tZW1wdHkgc3Ry aW5nLCBkaXNwbGF5IHRoYXQuICBJZiBDT1VOVCBpcworbmlsIG9yIGFuIGVtcHR5IHN0cmluZywg Y2xlYXIgdGhlIGJhZGdlIG92ZXJsYXkuCitOb3RlOiBOUyB3aWxsIGFiYnJldmlhdGUgbG9uZyBz dHJpbmdzIHRvIGZpdCB0aGUgYmFkZ2UncyBhbGxvY2F0ZWQKK3NwYWNlLiIKKyAgKGNvbmQgKChz dHJpbmdwIGNvdW50KQorICAgICAgICAgKHdoZW4gKHN0cmluZy1lbXB0eS1wIGNvdW50KQorICAg ICAgICAgICAoc2V0cSBjb3VudCBuaWwpKSkKKyAgICAgICAgKChpbnRlZ2VycCBjb3VudCkKKyAg ICAgICAgIChzZXRxIGNvdW50IChudW1iZXItdG8tc3RyaW5nIGNvdW50KSkpCisgICAgICAgICh0 IChzZXRxIGNvdW50IG5pbCkpKQorICAobnMtYmFkZ2UgY291bnQpKQorCisoY2wtZGVmbWV0aG9k IHN5c3RlbS10YXNrYmFyLWF0dGVudGlvbiAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ25zKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgdXJnZW5j eSB0aW1lb3V0KQorICAiUmVxdWVzdCBVUkdFTkNZIHVzZXIgYXR0ZW50aW9uIG9uIHRoZSBEb2Nr LgorVGhlIGF0dGVudGlvbiBpbmRpY2F0b3Igd2lsbCBiZSBjbGVhcmVkIGFmdGVyIFRJTUVPVVQg c2Vjb25kcy4iCisgIChucy1yZXF1ZXN0LXVzZXItYXR0ZW50aW9uIHVyZ2VuY3kpCisgICh3aGVu IChhbmQgdXJnZW5jeSB0aW1lb3V0KQorICAgIChydW4td2l0aC10aW1lcgorICAgICB0aW1lb3V0 CisgICAgIG5pbAorICAgICAjJ3N5c3RlbS10YXNrYmFyLWF0dGVudGlvbiBuaWwpKSkKKworKGNs LWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci1wcm9ncmVzcyAoJmNvbnRleHQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVx bCAnbnMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbmFs IHByb2dyZXNzKQorICAiRGlzcGxheSBhIHByb2dyZXNzIGJhciBvdmVybGF5IG9uIHRoZSBEb2Nr IGFuZCBBcHAgU3dpdGNoZXIuCitQUk9HUkVTUyBpcyBhIGZsb2F0IGluIHRoZSByYW5nZSAwLjAg dG8gMS4wLgorSWYgUFJPR1JFU1MgaXMgbmlsLCByZW1vdmUgdGhlIHByb2dyZXNzIGJhci4iCisg IChucy1wcm9ncmVzcy1pbmRpY2F0b3IgKHN5c3RlbS10YXNrYmFyLS12YWxpZGF0ZS1wcm9ncmVz cyBwcm9ncmVzcykpKQorCisMCis7OyBNUy1XaW5kb3dzIHN1cHBvcnQuCisKKyhkZWNsYXJlLWZ1 bmN0aW9uIHczMi1iYWRnZSAidzMyZm5zLmMiKQorKGRlY2xhcmUtZnVuY3Rpb24gdzMyLXJlcXVl c3QtdXNlci1hdHRlbnRpb24gInczMmZucy5jIikKKyhkZWNsYXJlLWZ1bmN0aW9uIHczMi1wcm9n cmVzcy1pbmRpY2F0b3IgInczMmZucy5jIikKKworKGRlZnZhciBzeXN0ZW0tdGFza2Jhci13MzIt YmFkZ2UtYmFja2dyb3VuZCAiI2U3NTg1NyIgOyByZWRpc2gKKyAgInczMiBiYWRnZSBiYWNrZ3Jv dW5kIFJHQiB0cmlwbGUgc3RyaW5nLiIpCisKKyhkZWZ2YXIgc3lzdGVtLXRhc2tiYXItdzMyLWJh ZGdlLWZvcmVncm91bmQgIiNmZmZmZmYiIDsgd2hpdGUKKyAgInczMiBiYWRnZSBmb3JlZ3JvdW5k IFJHQiB0cmlwbGUgc3RyaW5nLiIpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci0tdzMyLWNsZWFy LWZyYW1lLWluZGljYXRvcnMgKGZyYW1lKQorICA7OyBOT1RFOiBVcGRhdGUgdGhlIGJlbG93IGlm IGFkZGluZyBuZXcgdzMyIHN5c3RlbS10YXNrYmFyIGZ1bmN0aW9ucy4KKyAgKHdpdGgtc2VsZWN0 ZWQtZnJhbWUgZnJhbWUKKyAgICAoc3lzdGVtLXRhc2tiYXItYmFkZ2UgbmlsKQorICAgIChzeXN0 ZW0tdGFza2Jhci1hdHRlbnRpb24gbmlsKQorICAgIChzeXN0ZW0tdGFza2Jhci1wcm9ncmVzcyBu aWwpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tZW5hYmxlICgmY29udGV4dAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJh Y2stZW5kIChlcWwgJ3czMikpKQorICA7OyBDbGVhciBzeXN0ZW0tdGFza2JhciBpbmRpY2F0b3Jz IGZvciBhIGZyYW1lIHdoZW4gaXQgaXMgZGVsZXRlZC4KKyAgKGFkZC1ob29rICdkZWxldGUtZnJh bWUtZnVuY3Rpb25zCisgICAgICAgICAgICAjJ3N5c3RlbS10YXNrYmFyLS13MzItY2xlYXItZnJh bWUtaW5kaWNhdG9ycykpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItLWRpc2FibGUg KCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVt LXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ3czMikpKQorICAocmVtb3ZlLWhvb2sgJ2RlbGV0ZS1m cmFtZS1mdW5jdGlvbnMKKyAgICAgICAgICAgICAgICMnc3lzdGVtLXRhc2tiYXItLXczMi1jbGVh ci1mcmFtZS1pbmRpY2F0b3JzKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci1iYWRn ZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0t dGFza2Jhci0tYmFjay1lbmQgKGVxbCAndzMyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZvcHRpb25hbCBjb3VudCkKKyAgIkRpc3BsYXkgYSBDT1VOVCBvdmVybGF5IG9u IHRoZSBzeXN0ZW0gdGFza2JhciBpY29uLgorVGhlIHRhc2tiYXIgaWNvbiB0YXJnZXQgaXMgYXNz b2NpYXRlZCB3aXRoIHRoZSBzZWxlY3RlZCBmcmFtZS4KKworSWYgQ09VTlQgaXMgYW4gaW50ZWdl ciBvciBhIG5vbi1lbXB0eSBzdHJpbmcsIGRpc3BsYXkgdGhhdC4gIElmIENPVU5UIGlzCituaWwg b3IgYW4gZW1wdHkgc3RyaW5nLCBjbGVhciB0aGUgYmFkZ2UuCisKK0R1ZSB0byBNUy1XaW5kb3dz IGljb24gb3ZlcmxheSBzaXplIGxpbWl0YXRpb25zLCBpZiBDT1VOVCBpcyBhbiBpbnRlZ2VyCith bmQgaXMgb3V0c2lkZSB0aGUgcmFuZ2UgLTk5IHRvIDk5LCBkaXNwbGF5IFwiLTk5XCIgYW5kIFwi OTkrXCIsCityZXNwZWN0aXZlbHksIGlmIENPVU5UIGlzIGEgc3RyaW5nIGxvbmdlciB0aGFuIDIg Y2hhcmFjdGVycyB0cnVuY2F0ZSBpdAordXNpbmcgYHRydW5jYXRlLXN0cmluZy10by13aWR0aGAu CisKK0NvbnN1bHQgYHN5c3RlbS10YXNrYmFyLXczMi1iYWRnZS1iYWNrZ3JvdW5kYCBhbmQKK2Bz eXN0ZW0tdGFza2Jhci13MzItYmFkZ2UtZm9yZWdyb3VuZGAgZm9yIHRoZSBiYWNrZ3JvdW5kIGFu ZCBmb3JlZ3JvdW5kCitjb2xvcnMgZm9yIHRoZSBwYWludGVkIG92ZXJsYXkuIgorICAoY29uZCAo KHN0cmluZ3AgY291bnQpCisgICAgICAgICAoaWYgKHN0cmluZy1lbXB0eS1wIGNvdW50KQorICAg ICAgICAgICAgIChzZXRxIGNvdW50IG5pbCkKKyAgICAgICAgICAgKHdoZW4gKGxlbmd0aD4gY291 bnQgMikKKyAgICAgICAgICAgICAoc2V0cSBjb3VudCAodHJ1bmNhdGUtc3RyaW5nLXRvLXdpZHRo IGNvdW50IDMgMCBuaWwgdCkpKSkpCisgICAgICAgICgoaW50ZWdlcnAgY291bnQpCisgICAgICAg ICAoaWYgKGFuZCAoPiBjb3VudCAtMTAwKQorICAgICAgICAgICAgICAgICAgKDwgY291bnQgMTAw KSkKKyAgICAgICAgICAgICAoc2V0cSBjb3VudCAobnVtYmVyLXRvLXN0cmluZyBjb3VudCkpCisg ICAgICAgICAgIChpZiAoPCBjb3VudCAwKQorICAgICAgICAgICAgICAgKHNldHEgY291bnQgIi05 OSIpCisgICAgICAgICAgICAgKHNldHEgY291bnQgIjk5KyIpKSkpCisgICAgICAgICh0IChzZXRx IGNvdW50IG5pbCkpKQorICAodzMyLWJhZGdlIGNvdW50CisgICAgICAgICAgICAgc3lzdGVtLXRh c2tiYXItdzMyLWJhZGdlLWJhY2tncm91bmQKKyAgICAgICAgICAgICBzeXN0ZW0tdGFza2Jhci13 MzItYmFkZ2UtZm9yZWdyb3VuZCkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItYXR0 ZW50aW9uICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAndzMyKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgdXJnZW5jeSB0aW1lb3V0KQorICAiUmVx dWVzdCBVUkdFTkNZIHVzZXIgYXR0ZW50aW9uIG9uIHRoZSBzeXN0ZW0gdGFza2JhciBpY29uLgor SW5kaWNhdGUgdGhlIGljb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBzZWxlY3RlZCBmcmFtZS4KK0lm IFVSR0VOQ1kgaXMgdGhlIHN5bWJvbCBgaW5mb3JtYXRpb25hbCcsIGZsYXNoIHRoZSB0YXNrYmFy IGljb24uCitJZiBVUkdFTkNZIGlzIHRoZSBzeW1ib2wgYGNyaXRpY2FsJywgZmxhc2ggdGhlIHRh c2tiYXIgaWNvbiBhbmQgdGhlCitNUy1XaW5kb3dzIHdpbmRvdyBmcmFtZS4KK0NsZWFyIGF0dGVu dGlvbiBpbmRpY2F0b3IgYWZ0ZXIgVElNRU9VVCBzZWNvbmRzLiAgSWYgVElNRU9VVCBpcyBuaWws CitkZWZhdWx0IHRvIE1TLVdpbmRvd3MgZGVmYXVsdCBiZWhhdmlvci4iCisgICh3MzItcmVxdWVz dC11c2VyLWF0dGVudGlvbiB1cmdlbmN5KQorICAod2hlbiAoYW5kIHVyZ2VuY3kgdGltZW91dCkK KyAgICAocnVuLXdpdGgtdGltZXIKKyAgICAgdGltZW91dAorICAgICBuaWwKKyAgICAgIydzeXN0 ZW0tdGFza2Jhci1hdHRlbnRpb24gbmlsKSkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2ti YXItcHJvZ3Jlc3MgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ3czMikpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgcHJvZ3Jlc3MpCisgICJEaXNwbGF5 IGEgcHJvZ3Jlc3MgYmFyIG9uIHRoZSBzeXN0ZW0gdGFza2JhciBpY29uLgorUFJPR1JFU1MgaXMg YSBmbG9hdCBpbiB0aGUgcmFuZ2UgMC4wIHRvIDEuMC4KK0lmIFBST0dSRVNTIGlzIG5pbCwgcmVt b3ZlIHRoZSBwcm9ncmVzcyBiYXIuIgorICAodzMyLXByb2dyZXNzLWluZGljYXRvciAoc3lzdGVt LXRhc2tiYXItLXZhbGlkYXRlLXByb2dyZXNzIHByb2dyZXNzKSkpCisKKwwKKworKHByb3ZpZGUg J3N5c3RlbS10YXNrYmFyKQorCis7Ozsgc3lzdGVtLXRhc2tiYXIuZWwgZW5kcyBoZXJlCmRpZmYg LS1naXQgYS9zcmMvbnNmbnMubSBiL3NyYy9uc2Zucy5tCmluZGV4IDM1MjhjNGFjZDUwLi4xYThm OTVjMTRlZiAxMDA2NDQKLS0tIGEvc3JjL25zZm5zLm0KKysrIGIvc3JjL25zZm5zLm0KQEAgLTM2 NzQsNiArMzY3NCwxMjkgQEAgVGhlIHBvc2l0aW9uIGlzIHJldHVybmVkIGFzIGEgY29ucyBjZWxs IChYIC4gWSkgb2YgdGhlCiAgIHJldHVybiBRbmlsOwogfQogCitERUZVTiAoIm5zLWJhZGdlIiwg Rm5zX2JhZGdlLCBTbnNfYmFkZ2UsIDEsIDEsIDAsCisgICAgICAgZG9jOiAvKiBTZXQgdGhlIGFw cCBpY29uIGJhZGdlIHRvIEJBREdFLgorQkFER0Ugc2hvdWxkIGJlIGEgc3RyaW5nIHNob3J0IGVu b3VnaCB0byBkaXNwbGF5IG5pY2VseSBpbiB0aGUgc2hvcnQKK3NwYWNlIGludGVuZGVkIGZvciBi YWRnZXMuCitJZiBCQURHRSBpcyBuaWwsIGNsZWFyIHRoZSBhcHAgYmFkZ2UuICAqLykKKyAgKExp c3BfT2JqZWN0IGJhZGdlKQoreworICBibG9ja19pbnB1dCAoKTsKKyAgaWYgKE5JTFAgKGJhZGdl KSkKKyAgICBbW05TQXBwIGRvY2tUaWxlXSBzZXRCYWRnZUxhYmVsOiBuaWxdOworICBlbHNlCisg ICAgeworICAgICAgQ0hFQ0tfU1RSSU5HIChiYWRnZSk7CisgICAgICBbW05TQXBwIGRvY2tUaWxl XSBzZXRCYWRnZUxhYmVsOgorCQkJICBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6IFNT REFUQSAoYmFkZ2UpXV07CisgICAgfQorICB1bmJsb2NrX2lucHV0ICgpOworICByZXR1cm4gUW5p bDsKK30KKworLyogVXNlIC0xIHRvIGluZGljYXRlIG5vIGFjdGl2ZSByZXF1ZXN0LiAgKi8KK3N0 YXRpYyBOU0ludGVnZXIgbnNfcmVxdWVzdF91c2VyX2F0dGVudGlvbl9pZCA9IC0xOworCitERUZV TiAoIm5zLXJlcXVlc3QtdXNlci1hdHRlbnRpb24iLAorICAgICAgIEZuc19yZXF1ZXN0X3VzZXJf YXR0ZW50aW9uLAorICAgICAgIFNuc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uLAorICAgICAgIDEs IDEsIDAsCisgICAgICAgZG9jOiAvKiBCb3VuY2UgdGhlIGFwcCBkb2NrIGljb24gdG8gcmVxdWVz dCB1c2VyIGF0dGVudGlvbi4KK0lmIFVSR0VOQ1kgbmlsLCBjYW5jZWwgdGhlIG91dHN0YW5kaW5n IHJlcXVlc3QsIGlmIGFueS4KK0lmIFVSR0VOQ1kgaXMgdGhlIHN5bWJvbCBgaW5mb3JtYXRpb25h bCcsIGJvdW5jaW5nIGxhc3RzIGEgZmV3IHNlY29uZHMuCitJZiBVUkdFTkNZIGlzIHRoZSBzeW1i b2wgYGNyaXRpY2FsJywgYm91bmNpbmcgbGFzdHMgdW50aWwgRW1hY3MgaXMKK2ZvY3VzZWQuICAq LykKKyAgKExpc3BfT2JqZWN0IHVyZ2VuY3kpCit7CisgIGJsb2NrX2lucHV0ICgpOworICBpZiAo bnNfcmVxdWVzdF91c2VyX2F0dGVudGlvbl9pZCAhPSAtMSkKKyAgICB7CisgICAgICBbTlNBcHAg Y2FuY2VsVXNlckF0dGVudGlvblJlcXVlc3Q6IG5zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb25faWRd OworICAgICAgbnNfcmVxdWVzdF91c2VyX2F0dGVudGlvbl9pZCA9IC0xOworICAgIH0KKyAgaWYg KCFOSUxQICh1cmdlbmN5KSAmJiBTWU1CT0xQICh1cmdlbmN5KSkKKyAgICB7CisgICAgICBpZiAo RVEgKHVyZ2VuY3ksIFFpbmZvcm1hdGlvbmFsKSkKKwluc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9u X2lkID0gW05TQXBwIHJlcXVlc3RVc2VyQXR0ZW50aW9uOgorCQkJCQkJTlNJbmZvcm1hdGlvbmFs UmVxdWVzdF07CisgICAgICBlbHNlIGlmIChFUSAodXJnZW5jeSwgUWNyaXRpY2FsKSkKKwluc19y ZXF1ZXN0X3VzZXJfYXR0ZW50aW9uX2lkID0gW05TQXBwIHJlcXVlc3RVc2VyQXR0ZW50aW9uOgor CQkJCQkJTlNDcml0aWNhbFJlcXVlc3RdOworICAgIH0KKyAgdW5ibG9ja19pbnB1dCAoKTsKKyAg cmV0dXJuIFFuaWw7Cit9CisKK0RFRlVOICgibnMtcHJvZ3Jlc3MtaW5kaWNhdG9yIiwKKyAgICAg ICBGbnNfcHJvZ3Jlc3NfaW5kaWNhdG9yLAorICAgICAgIFNuc19wcm9ncmVzc19pbmRpY2F0b3Is CisgICAgICAgMSwgMSwgMCwKKyAgICAgICBkb2M6IC8qIEJvdW5jZSB0aGUgYXBwIGRvY2sgaWNv biB0byByZXF1ZXN0IHVzZXIgYXR0ZW50aW9uLgorCSAgICAgICBQUk9HUkVTUyBpcyBhIGZsb2F0 IGJldHdlZW4gMC4wIGFuZCAxLjAuCisJICAgICAgIElmIFBST0dSRVNTIGlzIG5pbCwgcmVtb3Zl IHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IuICAqLykKKyAgKExpc3BfT2JqZWN0IHByb2dyZXNzKQor eworICBibG9ja19pbnB1dCAoKTsKKyAgTlNEb2NrVGlsZSAqZG9ja190aWxlID0gW05TQXBwIGRv Y2tUaWxlXTsKKyAgLyogVXNlIE5TTGV2ZWxJbmRpY2F0b3Igd2l0aCByZWxpYWJsZSByZWRyYXdz LCBub3QgTlNQcm9ncmVzc0luZGljYXRvci4gICovCisgIE5TTGV2ZWxJbmRpY2F0b3IgKmxldmVs X2luZGljYXRvcjsKKyAgLyogUmV1c2UgdGhlIGluZGljYXRvciBzdWJ2aWV3IG9yIGNyZWF0ZSBv bmUuICovCisgIGlmIChkb2NrX3RpbGUuY29udGVudFZpZXcKKyAgICAgICYmIFtbZG9ja190aWxl LmNvbnRlbnRWaWV3IHN1YnZpZXdzXSBjb3VudF0gPiAwCisgICAgICAmJiBbW1tkb2NrX3RpbGUu Y29udGVudFZpZXcgc3Vidmlld3NdIGxhc3RPYmplY3RdCisgICAgICAgICAgICAgICAgICAgICAg ICBpc0tpbmRPZkNsYXNzOltOU0xldmVsSW5kaWNhdG9yIGNsYXNzXV0pCisgICAgbGV2ZWxfaW5k aWNhdG9yID0KKyAgICAgIChOU0xldmVsSW5kaWNhdG9yICopW1tbZG9ja190aWxlIGNvbnRlbnRW aWV3XSBzdWJ2aWV3c10gbGFzdE9iamVjdF07CisgICAgZWxzZQorICAgICAgeworCWlmICghZG9j a190aWxlLmNvbnRlbnRWaWV3KQorCSAgeworCSAgICBOU0ltYWdlVmlldyogaW1hZ2VfdmlldyA9 IFtbTlNJbWFnZVZpZXcgYWxsb2NdIGluaXRdOworCSAgICBbaW1hZ2VfdmlldyBzZXRJbWFnZTog W05TQXBwIGFwcGxpY2F0aW9uSWNvbkltYWdlXV07CisJICAgIFtkb2NrX3RpbGUgc2V0Q29udGVu dFZpZXc6IGltYWdlX3ZpZXddOworCSAgfQorCS8qIFNldCB3aWR0aCB0byB0aGUgd2lkdGggb2Yg dGhlIGFwcGxpY2F0aW9uIGljb24sIGFuZCBoZWlnaHQgdG8KKwkgICAlIG9mIHRoZSBpY29uIGhl aWdodCB0byByZXNwZWN0IHNjYWxlZCBpY29ucy4gICovCisJZmxvYXQgd2lkdGggPSBbW05TQXBw IGFwcGxpY2F0aW9uSWNvbkltYWdlXSBzaXplXS53aWR0aDsKKwlmbG9hdCBoZWlnaHQgPSAwLjEw ICogW1tOU0FwcCBhcHBsaWNhdGlvbkljb25JbWFnZV0gc2l6ZV0uaGVpZ2h0OworCWxldmVsX2lu ZGljYXRvciA9CisJICBbW05TTGV2ZWxJbmRpY2F0b3IgYWxsb2NdIGluaXRXaXRoRnJhbWU6CisJ CQkJICAgICAgTlNNYWtlUmVjdCAoMC4wLCAwLjAsCisJCQkJCQkgIHdpZHRoLCBoZWlnaHQpXTsK KwlbbGV2ZWxfaW5kaWNhdG9yIHNldFdhbnRzTGF5ZXI6IFlFU107IC8qIFBlcmZvcm1hbmNlLiAg Ki8KKwlbbGV2ZWxfaW5kaWNhdG9yIHNldEVuYWJsZWQ6IE5PXTsgLyogSWdub3JlIG1vdXNlIGlu cHV0LiAgKi8KKwlbbGV2ZWxfaW5kaWNhdG9yIHNldExldmVsSW5kaWNhdG9yU3R5bGU6CisJCQkg ICBOU0xldmVsSW5kaWNhdG9yU3R5bGVDb250aW51b3VzQ2FwYWNpdHldOworCS8qIE1hdGNoIE5T UHJvZ3Jlc3NJbmRpY2F0b3IgY29sb3IuICAqLworCVtsZXZlbF9pbmRpY2F0b3Igc2V0RmlsbENv bG9yOiBbTlNDb2xvciBjb250cm9sQWNjZW50Q29sb3JdXTsKKwlbbGV2ZWxfaW5kaWNhdG9yIHNl dE1pblZhbHVlOiAwLjBdOworCVtsZXZlbF9pbmRpY2F0b3Igc2V0TWF4VmFsdWU6IDEuMF07CisJ LyogVGhlIGNvbnRlbnRWaWV3IHRha2VzIG93bmVyc2hpcC4gICovCisJW2RvY2tfdGlsZS5jb250 ZW50VmlldyBhZGRTdWJ2aWV3OiBsZXZlbF9pbmRpY2F0b3JdOworICAgICAgfQorICBkb3VibGUg cHJvZ3Jlc3NfdmFsdWU7CisgIEJPT0wgaGlkZSA9IChOSUxQIChwcm9ncmVzcykKKwkgICAgICAg fHwgKCFOSUxQIChwcm9ncmVzcykgJiYgIShGTE9BVFAgKHByb2dyZXNzKSkpKTsKKyAgaWYgKCFo aWRlKQorICAgIHsKKyAgICAgIHByb2dyZXNzX3ZhbHVlID0gWEZMT0FUX0RBVEEgKHByb2dyZXNz KTsKKyAgICAgIGhpZGUgPSAocHJvZ3Jlc3NfdmFsdWUgPCAwLjAgfHwgcHJvZ3Jlc3NfdmFsdWUg PiAxLjApOworICAgIH0KKyAgaWYgKGhpZGUpCisgICAgeworICAgICAgW2xldmVsX2luZGljYXRv ciBzZXREb3VibGVWYWx1ZTogMC4wXTsKKyAgICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0SGlkZGVu OiBZRVNdOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0 RG91YmxlVmFsdWU6IHByb2dyZXNzX3ZhbHVlXTsKKyAgICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0 SGlkZGVuOiBOT107CisgICAgfQorICBbZG9ja190aWxlIGRpc3BsYXldOworICB1bmJsb2NrX2lu cHV0ICgpOworICByZXR1cm4gUW5pbDsKK30KKwogI2lmZGVmIE5TX0lNUExfQ09DT0EKIAogREVG VU4gKCJucy1zZW5kLWl0ZW1zIiwKQEAgLTM5NTcsNiArNDA4MCw5IEBAIC0gKExpc3BfT2JqZWN0 KWxpc3BTdHJpbmcKICAgZGVmc3ViciAoJlNuc19zZXRfbW91c2VfYWJzb2x1dGVfcGl4ZWxfcG9z aXRpb24pOwogICBkZWZzdWJyICgmU25zX21vdXNlX2Fic29sdXRlX3BpeGVsX3Bvc2l0aW9uKTsK ICAgZGVmc3ViciAoJlNuc19zaG93X2NoYXJhY3Rlcl9wYWxldHRlKTsKKyAgZGVmc3ViciAoJlNu c19iYWRnZSk7CisgIGRlZnN1YnIgKCZTbnNfcmVxdWVzdF91c2VyX2F0dGVudGlvbik7CisgIGRl ZnN1YnIgKCZTbnNfcHJvZ3Jlc3NfaW5kaWNhdG9yKTsKICNpZmRlZiBOU19JTVBMX0NPQ09BCiAg IGRlZnN1YnIgKCZTbnNfc2VuZF9pdGVtcyk7CiAjZW5kaWYKQEAgLTQwMjMsNCArNDE0OSw2IEBA IC0gKExpc3BfT2JqZWN0KWxpc3BTdHJpbmcKICAgREVGU1lNIChRYXNzcV9kZWxldGVfYWxsLCAi YXNzcS1kZWxldGUtYWxsIik7CiAgIERFRlNZTSAoUXJ1bl9hdF90aW1lLCAicnVuLWF0LXRpbWUi KTsKICAgREVGU1lNIChReF9oaWRlX3RpcCwgIngtaGlkZS10aXAiKTsKKyAgREVGU1lNIChRaW5m b3JtYXRpb25hbCwgImluZm9ybWF0aW9uYWwiKTsKKyAgREVGU1lNIChRY3JpdGljYWwsICJjcml0 aWNhbCIpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL3czMmZucy5jIGIvc3JjL3czMmZucy5jCmluZGV4 IDY3OWU4MTk3ZmQ4Li4xYTJmYzllODg0MiAxMDA2NDQKLS0tIGEvc3JjL3czMmZucy5jCisrKyBi L3NyYy93MzJmbnMuYwpAQCAtMzUsNyArMzUsMTIgQEAgI2RlZmluZSBfV0lOMzJfV0lOTlQgMHgw NjAwCiAjaW5jbHVkZSA8Yy1jdHlwZS5oPgogCiAjZGVmaW5lIENPQkpNQUNST1MgLyogQXNrIGZv ciBDIGRlZmluaXRpb25zIGZvciBDT00uICAqLworI2lmICFkZWZpbmVkIE1JTkdXX1c2NCAmJiAh ZGVmaW5lZCBDWUdXSU4KKyMgZGVmaW5lIElOSVRHVUlECisjZW5kaWYKKyNpbmNsdWRlIDxpbml0 Z3VpZC5oPgogI2luY2x1ZGUgPHNobG9iai5oPgorI2luY2x1ZGUgPHNob2JqaWRsLmg+CiAjaW5j bHVkZSA8b2xlaWRsLmg+CiAjaW5jbHVkZSA8b2JqaWRsLmg+CiAjaW5jbHVkZSA8b2xlMi5oPgpA QCAtMjM3LDYgKzI0Miw4IEBAIERFQ0xBUkVfSEFORExFKEhNT05JVE9SKTsKIHR5cGVkZWYgQk9P TCAoV0lOQVBJICogU2V0R2VzdHVyZUNvbmZpZ19wcm9jKSAoSFdORCwgRFdPUkQsIFVJTlQsCiAJ CQkJCSAgICAgICBFbWFjc19QR0VTVFVSRUNPTkZJRywgVUlOVCk7CiAKK3R5cGVkZWYgQk9PTCAo V0lOQVBJICogRmxhc2hXaW5kb3dFeF9Qcm9jKSAoUEZMQVNIV0lORk8gcGZ3aSk7CisKIHN0YXRp YyBUcmFja01vdXNlRXZlbnRfUHJvYyB0cmFja19tb3VzZV9ldmVudF9mbiA9IE5VTEw7CiBzdGF0 aWMgSW1tR2V0Q29tcG9zaXRpb25TdHJpbmdfUHJvYyBnZXRfY29tcG9zaXRpb25fc3RyaW5nX2Zu ID0gTlVMTDsKIHN0YXRpYyBJbW1HZXRDb250ZXh0X1Byb2MgZ2V0X2ltZV9jb250ZXh0X2ZuID0g TlVMTDsKQEAgLTI1OSw2ICsyNjYsNyBAQCBERUNMQVJFX0hBTkRMRShITU9OSVRPUik7CiBzdGF0 aWMgV1RTUmVnaXN0ZXJTZXNzaW9uTm90aWZpY2F0aW9uX1Byb2MgV1RTUmVnaXN0ZXJTZXNzaW9u Tm90aWZpY2F0aW9uX2ZuID0gTlVMTDsKIHN0YXRpYyBSZWdpc3RlclRvdWNoV2luZG93X3Byb2Mg UmVnaXN0ZXJUb3VjaFdpbmRvd19mbiA9IE5VTEw7CiBzdGF0aWMgU2V0R2VzdHVyZUNvbmZpZ19w cm9jIFNldEdlc3R1cmVDb25maWdfZm4gPSBOVUxMOworc3RhdGljIEZsYXNoV2luZG93RXhfUHJv YyBmbGFzaF93aW5kb3dfZXhfZm4gPSBOVUxMOwogCiBleHRlcm4gQXBwZW5kTWVudVdfUHJvYyB1 bmljb2RlX2FwcGVuZF9tZW51OwogCkBAIC0xMTAxMCw2ICsxMTAxOCwzMTMgQEAgREVGVU4gKCJ3 MzItc3lzdGVtLWlkbGUtdGltZSIsIEZ3MzJfc3lzdGVtX2lkbGVfdGltZSwgU3czMl9zeXN0ZW1f aWRsZV90aW1lLAogCiAjZW5kaWYKIAorDAorI2lmZGVmIFdJTkRPV1NOVAorCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKwkJICAgICBUYXNrYmFyIEluZGljYXRvcnMKKyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lm bmRlZiBNSU5HV19XNjQKKyAgLyogbWluZ3cub3JnJ3MgTWluR1cgZG9lc24ndCBoYXZlIHRoaXMg c3R1ZmYuICAqLworICBERUZJTkVfR1VJRChDTFNJRF9UYXNrYmFyTGlzdCwgMHg1NmZkZjM0NCwg MHhmZDZkLCAweDExZDAsIDB4OTUsMHg4YSwgMHgwMCwweDYwLDB4OTcsMHhjOSwweGEwLDB4OTAp OworICBERUZJTkVfR1VJRChJSURfSVRhc2tiYXJMaXN0MywgMHhlYTFhZmI5MSwgMHg5ZTI4LCAw eDRiODYsIDB4OTAsMHhlOSwgMHg5ZSwweDlmLDB4OGEsMHg1ZSwweGVmLDB4YWYpOworI2VuZGlm CisKK0RFRlVOICgidzMyLWJhZGdlIiwKKyAgICAgICBGdzMyX2JhZGdlLAorICAgICAgIFN3MzJf YmFkZ2UsCisgICAgICAgMywgMywgMCwKKyAgICAgICBkb2M6IC8qIERpc3BsYXkgYSB0YXNrYmFy IGljb24gb3ZlcmxheSBpbWFnZSBvbiB0aGUgc2VsZWN0ZWQgZnJhbWUuCitCQURHRSBpcyBhIHN0 cmluZy4gIElmIEJBREdFIGlzIG5pbCwgcmVtb3ZlIHRoZSBvdmVybGF5LiAgRG8gbm90aGluZyBp ZgorV2luZG93cyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBJVGFza2Jhckxpc3QzIGludGVyZmFjZSBh bmQgcmV0dXJuIG5pbCwKK290aGVyd2lzZSByZXR1cm4gdC4gIERvIG5vdGhpbmcgaWYgdGhlIHNl bGVjdGVkIGZyYW1lIGlzIG5vdCAoeWV0KQorYXNzb2NpYXRlZCB3aXRoIGEgd2luZG93IGhhbmRs ZS4gIEJBQ0tHUk9VTkQgYW5kIEZPUkVHUk9VTkQgYXJlIFJHQgordHJpcGxldCBzdHJpbmdzIG9m IHRoZSBmb3JtIFwiI1JSR0dCQlwiLiAgKi8pCisgIChMaXNwX09iamVjdCBiYWRnZSwgTGlzcF9P YmplY3QgYmFja2dyb3VuZCwgTGlzcF9PYmplY3QgZm9yZWdyb3VuZCkKK3sKKyAgc3RydWN0IGZy YW1lICpzZiA9IFNFTEVDVEVEX0ZSQU1FICgpOworICBIV05EIGh3bmQgPSBOVUxMOworCisgIGlm IChGUkFNRV9XMzJfUCAoc2YpICYmIEZSQU1FX0xJVkVfUCAoc2YpKQorICAgIGh3bmQgPSBGUkFN RV9XMzJfV0lORE9XIChzZik7CisKKyAgaWYgKGh3bmQgPT0gTlVMTCkKKyAgICByZXR1cm4gUW5p bDsKKworICBDb0luaXRpYWxpemUgKE5VTEwpOworICBJVGFza2Jhckxpc3QzICp0YXNrX2Jhcl9s aXN0ID0gTlVMTDsKKyAgSFJFU1VMVCByID0gQ29DcmVhdGVJbnN0YW5jZSgmQ0xTSURfVGFza2Jh ckxpc3QsCisJCQkgICAgICAgTlVMTCwKKwkJCSAgICAgICBDTFNDVFhfSU5QUk9DX1NFUlZFUiwK KwkJCSAgICAgICAmSUlEX0lUYXNrYmFyTGlzdDMsCisJCQkgICAgICAgKHZvaWQgKiopJnRhc2tf YmFyX2xpc3QpOworICBpZiAociAhPSBTX09LKQorICAgIHJldHVybiBRbmlsOworCisgIGlmICgh TklMUCAoYmFkZ2UpICYmIFNUUklOR1AgKGJhZGdlKQorICAgICAgJiYgU1RSSU5HUCAoYmFja2dy b3VuZCkgJiYgU1RSSU5HUCAoZm9yZWdyb3VuZCkpCisgICAgeworICAgICAgQ09MT1JSRUYgYmdf cmdiOworICAgICAgQ09MT1JSRUYgZmdfcmdiOworICAgICAgdW5zaWduZWQgc2hvcnQgciwgZywg YjsKKyAgICAgIGlmIChwYXJzZV9jb2xvcl9zcGVjIChTU0RBVEEgKGJhY2tncm91bmQpLCAmciwg JmcsICZiKSkKKwliZ19yZ2IgPSBSR0IgKHIsIGIsIGIpOworICAgICAgZWxzZQorCXJldHVybiBR bmlsOworICAgICAgaWYgKHBhcnNlX2NvbG9yX3NwZWMgKFNTREFUQSAoZm9yZWdyb3VuZCksICZy LCAmZywgJmIpKQorCWZnX3JnYiA9IFJHQiAociwgYiwgYik7CisgICAgICBlbHNlCisJcmV0dXJu IFFuaWw7CisKKyAgICAgIC8qIFByZXBhcmUgYSBzdHJpbmcgZm9yIGRyYXdpbmcgYW5kIGFzIGFs dC10ZXh0LiAgKi8KKyAgICAgIExpc3BfT2JqZWN0IGJhZGdlX3V0ZjggPSBFTkNPREVfVVRGXzgg KGJhZGdlKTsKKyAgICAgIGludCB3aWRlX2xlbiA9IHBNdWx0aUJ5dGVUb1dpZGVDaGFyIChDUF9V VEY4LCAwLAorCQkJCQkgICBTU0RBVEEgKGJhZGdlX3V0ZjgpLAorCQkJCQkgICAtMSwgTlVMTCwg MCk7CisgICAgICB3Y2hhcl90ICpiYWRnZV93ID0gYWxsb2NhICgod2lkZV9sZW4gKyAxKSAqIHNp emVvZiAod2NoYXJfdCkpOworICAgICAgcE11bHRpQnl0ZVRvV2lkZUNoYXIgKENQX1VURjgsIDAs IFNTREFUQSAoYmFkZ2VfdXRmOCksIC0xLAorCQkJICAgIChMUFdTVFIpIGJhZGdlX3csCisJCQkg ICAgd2lkZV9sZW4pOworCisgICAgICAvKiBVc2UgdGhlIHNtYWxsIGljb24gc2l6ZSBXaW5kb3dz IHN1Z2dlc3RzIHRvIG5vdCBoYXJkIGNvZGUgMTZ4MTYuICAqLworICAgICAgaW50IGljb25fd2lk dGggPSBHZXRTeXN0ZW1NZXRyaWNzIChTTV9DWFNNSUNPTik7CisgICAgICBpbnQgaWNvbl9oZWln aHQgPSBHZXRTeXN0ZW1NZXRyaWNzIChTTV9DWFNNSUNPTik7CisKKyAgICAgIEhEQyBod25kX2Rj ID0gR2V0REMgKGh3bmQpOworICAgICAgSERDIGRjID0gQ3JlYXRlQ29tcGF0aWJsZURDIChod25k X2RjKTsKKworICAgICAgQklUTUFQVjVIRUFERVIgYmk7CisgICAgICBtZW1zZXQgKCZiaSwgMCwg c2l6ZW9mIChiaSkpOworICAgICAgYmkuYlY1U2l6ZSA9IHNpemVvZiAoYmkpOworICAgICAgYmku YlY1V2lkdGggPSBpY29uX3dpZHRoOworICAgICAgYmkuYlY1SGVpZ2h0ID0gLWljb25faGVpZ2h0 OyAvKiBOZWdhdGl2ZSBmb3IgYSB0b3AtZG93biBESUIuICAqLworICAgICAgYmkuYlY1UGxhbmVz ID0gMTsKKyAgICAgIGJpLmJWNUJpdENvdW50ID0gMzI7CisgICAgICBiaS5iVjVDb21wcmVzc2lv biA9IEJJX0JJVEZJRUxEUzsgIC8qIEVuYWJsZSB0aGUgbWFza3MgYmVsb3cuICAqLworICAgICAg YmkuYlY1UmVkTWFzayAgID0gIDB4MDBGRjAwMDA7CisgICAgICBiaS5iVjVHcmVlbk1hc2sgPSAg MHgwMDAwRkYwMDsKKyAgICAgIGJpLmJWNUJsdWVNYXNrICA9ICAweDAwMDAwMEZGOworICAgICAg YmkuYlY1QWxwaGFNYXNrID0gIDB4RkYwMDAwMDA7CisKKyAgICAgIERXT1JEICpiaXRtYXBfcGl4 ZWxzOworICAgICAgSEJJVE1BUCBiaXRtYXAgPSBDcmVhdGVESUJTZWN0aW9uIChkYywgKEJJVE1B UElORk8gKikgJmJpLAorCQkJCQkgRElCX1JHQl9DT0xPUlMsCisJCQkJCSAodm9pZCAqKikgJmJp dG1hcF9waXhlbHMsCisJCQkJCSBOVUxMLCAwKTsKKyAgICAgIEhHRElPQkogb2xkX2JpdG1hcCA9 IFNlbGVjdE9iamVjdChkYywgYml0bWFwKTsKKworICAgICAgLyogRHJhdyBhIGNpcmNsZSBmaWxs ZWQgd2l0aCBiZy4gICovCisgICAgICBIQlJVU0ggYmdfYnJ1c2ggPSBDcmVhdGVTb2xpZEJydXNo IChiZ19yZ2IpOworICAgICAgSEdESU9CSiBvbGRfYnJ1c2ggPSBTZWxlY3RPYmplY3QgKGRjLCBi Z19icnVzaCk7CisgICAgICBFbGxpcHNlIChkYywgMCwgMCwgaWNvbl93aWR0aCwgaWNvbl9oZWln aHQpOworICAgICAgU2VsZWN0T2JqZWN0IChkYywgb2xkX2JydXNoKTsKKyAgICAgIERlbGV0ZU9i amVjdCAoYmdfYnJ1c2gpOworCisgICAgICAvKiBEZXJpdmUgYSBmb250IHNjYWxlZCB0byBmaXQg dGhlIGljb24uICBGaXJzdCBmaW5kIHRoZSBzeXN0ZW0ncworCSBiYXNlIGZvbnQuICBUaGVuIHNj YWxlIGl0IHRvIGZpdCBpY29uX2hlaWdodC4gICovCisgICAgICBIRk9OVCBiYXNlX2ZvbnQ7Cisg ICAgICBCT09MIGNsZWFuX3VwX2Jhc2VfZm9udCA9IEZBTFNFOworICAgICAgaWYgKHN5c3RlbV9w YXJhbWV0ZXJzX2luZm9fd19mbikKKwl7CisJICBOT05DTElFTlRNRVRSSUNTIG5jbTsKKwkgIG1l bXNldCAoJm5jbSwgMCwgc2l6ZW9mIChuY20pKTsKKwkgIG5jbS5jYlNpemUgPSBzaXplb2YgKG5j bSk7CisJICBTeXN0ZW1QYXJhbWV0ZXJzSW5mbyAoU1BJX0dFVE5PTkNMSUVOVE1FVFJJQ1MsIHNp emVvZiAobmNtKSwgJm5jbSwgMCk7CisJICBiYXNlX2ZvbnQgPSBDcmVhdGVGb250SW5kaXJlY3Qg KCZuY20ubGZTbUNhcHRpb25Gb250KTsKKwkgIGNsZWFuX3VwX2Jhc2VfZm9udCA9IFRSVUU7CisJ fQorICAgICAgZWxzZQorCWJhc2VfZm9udCA9IChIRk9OVCkgR2V0U3RvY2tPYmplY3QgKERFRkFV TFRfR1VJX0ZPTlQpOworICAgICAgaWYgKGNsZWFuX3VwX2Jhc2VfZm9udCkKKwlEZWxldGVPYmpl Y3QgKGJhc2VfZm9udCk7CisKKyAgICAgIExPR0ZPTlQgbGY7CisgICAgICBHZXRPYmplY3QgKGJh c2VfZm9udCwgc2l6ZW9mIChsZiksICZsZik7CisgICAgICBsZi5sZldlaWdodCA9IEZXX0JPTEQ7 CisgICAgICBsZi5sZk91dFByZWNpc2lvbiA9IE9VVF9PVVRMSU5FX1BSRUNJUzsKKyAgICAgIC8q IENsZWFyVHlwZSBxdWFsaXR5IG5lZWRzIG9wcWF1ZSwgYnV0IHdlIGRyYXcgdHJhbnNwYXJlbnQu ICAqLworICAgICAgbGYubGZRdWFsaXR5ID0gQU5USUFMSUFTRURfUVVBTElUWTsKKyAgICAgIC8q IE5lZ2F0aXZlIGxmSGVpZ2h0IGluZGljYXRlcyBwaXhlbCB1bml0cyB2cy4gcG9zaXRpdmUgaW4g cG9pbnRzLgorCSBVc2UgdGhlIExPR1BJWEVMU1kgcHgvaW4gb2YgdGhlIHByaW1hcnkgbW9uaXRv ci4gICovCisgICAgICBsZi5sZkhlaWdodCA9IC1NdWxEaXYoaWNvbl9oZWlnaHQgLyAyLCAvKiBG aXQgfjMgY2hhcnMuICAqLworCQkJICAgIDcyLAorCQkJICAgIEdldERldmljZUNhcHMgKEdldERD IChOVUxMKSwgTE9HUElYRUxTWSkpOworICAgICAgLyogRW5zdXJlIGxmSGVpZ2h0IHBpeGVsIGlu dGVycHJldGF0aW9uLiAgKi8KKyAgICAgIGludCBvbGRfbWFwX21vZGUgPSBTZXRNYXBNb2RlIChk YywgTU1fVEVYVCk7CisgICAgICBIRk9OVCBzY2FsZWRfZm9udCA9IENyZWF0ZUZvbnRJbmRpcmVj dCAoJmxmKTsKKyAgICAgIEhHRElPQkogb2xkX2ZvbnQgPSBTZWxlY3RPYmplY3QgKGRjLCBzY2Fs ZWRfZm9udCk7CisgICAgICBTZXRNYXBNb2RlIChkYywgb2xkX21hcF9tb2RlKTsKKworICAgICAg LyogRHJhdyBiYWRnZSB0ZXh0LiAgKi8KKyAgICAgIFNldEJrTW9kZSAoZGMsIFRSQU5TUEFSRU5U KTsKKyAgICAgIFNldFRleHRDb2xvciAoZGMsIGZnX3JnYik7CisgICAgICBSRUNUIHJlY3Q7Cisg ICAgICByZWN0LmxlZnQgPSByZWN0LnRvcCA9IDA7CisgICAgICByZWN0LnJpZ2h0ID0gaWNvbl93 aWR0aDsKKyAgICAgIHJlY3QuYm90dG9tID0gaWNvbl9oZWlnaHQ7CisgICAgICBEcmF3VGV4dCAo ZGMsIFNTREFUQSAoYmFkZ2VfdXRmOCksCisJCS0xLCAvKiBJbmRpY2F0ZSBudWxsLXRlcm1pbmF0 ZWQgc3RyaW5nLiAgKi8KKwkJJnJlY3QsCisJCURUX0NFTlRFUiB8IERUX1ZDRU5URVIgfCBEVF9T SU5HTEVMSU5FIHwgRFRfTk9DTElQKTsKKyAgICAgIFNlbGVjdE9iamVjdCAoZGMsIG9sZF9mb250 KTsKKyAgICAgIERlbGV0ZU9iamVjdCAoc2NhbGVkX2ZvbnQpOworCisgICAgICAvKiBNYWtlIHRo ZSBjaXJjbGUgYW5kIGl0cyB0ZXh0IG9wYXF1ZSBieSBzZXR0aW5nIHRoZSBhbHBoYQorCSBjaGFu bmVsIG9uIGVhY2ggcGl4ZWwgZmFsbGluZyB3aXRoaW4gdGhlIGNpcmNsZS4gICovCisgICAgICBp bnQgY2lyY2xlX2NlbnRlcl94ID0gaWNvbl93aWR0aCAvIDI7CisgICAgICBpbnQgY2lyY2xlX2Nl bnRlcl95ID0gaWNvbl9oZWlnaHQgLyAyOworICAgICAgaW50IGNpcmNsZV9yYWRpdXMgPSAoaWNv bl93aWR0aCA8IGljb25faGVpZ2h0CisJCQkgICA/IGljb25fd2lkdGgKKwkJCSAgIDogaWNvbl9o ZWlnaHQpIC8gMiAtIDI7CisgICAgICBpbnQgY2lyY2xlX3JhZGl1c19zcSA9IGNpcmNsZV9yYWRp dXMgKiBjaXJjbGVfcmFkaXVzOworICAgICAgRFdPUkQgKnBpeGVsOworICAgICAgZm9yIChpbnQg eSA9IDA7IHkgPCBpY29uX2hlaWdodDsgKyt5KQorICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8 IGljb25fd2lkdGg7ICsreCkKKwkgIHsKKyAgICAgICAgICAgIGludCBkeCA9IHggLSBjaXJjbGVf Y2VudGVyX3g7CisgICAgICAgICAgICBpbnQgZHkgPSB5IC0gY2lyY2xlX2NlbnRlcl95OworICAg ICAgICAgICAgaWYgKGR4ICogZHggKyBkeSAqIGR5IDw9IGNpcmNsZV9yYWRpdXNfc3EpCisJICAg ICAgeworCQkgIHBpeGVsID0gYml0bWFwX3BpeGVscyArICh5ICogaWNvbl93aWR0aCArIHgpOwor CQkgICpwaXhlbCB8PSAweGZmMDAwMDAwOyAvKiBGbGlwIHRoZSAweEFBUlJHR0JCIGFscGhhIGNo YW5uZWwuICAqLworCSAgICAgIH0KKwkgIH0KKworICAgICAgLyogRHVtbXkgbW9ub2Nocm9tZSBi aXRtYXAgbWFzaywgaWdub3JlZCB3aGVuIHRoZSBjb2xvciBiaXRtYXAgaGFzCisJIGFuIGFscGhh IGNoYW5uZWwsIGJ1dCBuZWVkZWQgdG8gc2F0aXNmeSBDcmVhdGVJY29uSW5kaXJlY3QuICAqLwor ICAgICAgSEJJVE1BUCBtYXNrX2JpdG1hcCA9IENyZWF0ZUJpdG1hcCAoaWNvbl93aWR0aCwgaWNv bl9oZWlnaHQsIDEsIDEsIE5VTEwpOworCisgICAgICAvKiBodHRwczovL2xlYXJuLm1pY3Jvc29m dC5jb20vZW4tdXMvd2luZG93cy93aW4zMi9hcGkvd2ludXNlci9uZi13aW51c2VyLWNyZWF0ZWlj b25pbmRpcmVjdAorCSBoYm1NYXNrIGFuZCBoYm1Db2xvciBtZW1iZXJzIG9mIHRoZSBJQ09OSU5G TyBzdHJ1Y3R1cmUgc2hvdWxkCisJIG5vdCBhbHJlYWR5IGJlIHNlbGVjdGVkIGludG8gYSBkZXZp Y2UgY29udGV4dC4gICovCisgICAgICBTZWxlY3RPYmplY3QgKGRjLCBvbGRfYml0bWFwKTsKKwor ICAgICAgSUNPTklORk8gaWNvbl9pbmZvOworICAgICAgbWVtc2V0ICgmaWNvbl9pbmZvLCAwLCBz aXplb2YgKGljb25faW5mbykpOworICAgICAgaWNvbl9pbmZvLmZJY29uID0gVFJVRTsKKyAgICAg IGljb25faW5mby5oYm1NYXNrID0gbWFza19iaXRtYXA7CisgICAgICBpY29uX2luZm8uaGJtQ29s b3IgPSBiaXRtYXA7CisKKyAgICAgIEhJQ09OIGljb24gPSBDcmVhdGVJY29uSW5kaXJlY3QgKCZp Y29uX2luZm8pOworICAgICAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5TZXRPdmVybGF5SWNvbiAo dGFza19iYXJfbGlzdCwgaHduZCwgaWNvbiwgYmFkZ2Vfdyk7CisKKyAgICAgIERlc3Ryb3lJY29u IChpY29uKTsKKyAgICAgIERlbGV0ZU9iamVjdCAobWFza19iaXRtYXApOworICAgICAgRGVsZXRl T2JqZWN0IChiaXRtYXApOworICAgICAgRGVsZXRlREMgKGRjKTsKKyAgICAgIFJlbGVhc2VEQyAo aHduZCwgaHduZF9kYyk7CisgICAgfQorICBlbHNlCisgICAgdGFza19iYXJfbGlzdC0+bHBWdGJs LT5TZXRPdmVybGF5SWNvbiAodGFza19iYXJfbGlzdCwgaHduZCwgTlVMTCwgTlVMTCk7CisKKyAg dGFza19iYXJfbGlzdC0+bHBWdGJsLT5SZWxlYXNlKHRhc2tfYmFyX2xpc3QpOworICByZXR1cm4g UXQ7Cit9CisKK0RFRlVOICgidzMyLXJlcXVlc3QtdXNlci1hdHRlbnRpb24iLAorICAgICAgIEZ3 MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbiwKKyAgICAgICBTdzMyX3JlcXVlc3RfdXNlcl9hdHRl bnRpb24sCisgICAgICAgMSwgMSwgMCwKKyAgICAgICBkb2M6IC8qIEZsYXNoIHRoZSBzZWxlY3Rl ZCBmcmFtZSdzIHRhc2tiYXIgaWNvbiBhbmQvb3IgaXRzIHdpbmRvdy4KK0lmIFVSR0VOQ1kgaXMg bmlsLCBjYW5jZWwgdGhlIHJlcXVlc3QsIGlmIGFueS4gIElmIFVSR0VOQ1kgaXMgdGhlIHN5bWJv bAorYGluZm9ybWF0aW9uYWwnLCBmbGFzaCB0aGUgdGFza2JhciBpY29uLiAgSWYgVVJHRU5DWSBp cyB0aGUgc3ltYm9sCitgY3JpdGljYWwnLCBmbGFzaCB0aGUgdGFza2JhciBpY29uIGFuZCB0aGUg ZnJhbWUuICBXaW5kb3dzIHN0b3BzCitmbGFzaGluZyBpZiB0aGUgdXNlciBmb2N1c2VzIHRoZSBm cmFtZS4gIERvIG5vdGhpbmcgaWYgV2luZG93cyBkb2VzIG5vdAorc3VwcG9ydCBGbGFzaFdpbmRv d0V4IGFuZCByZXR1cm4gbmlsLCBvdGhlcndpc2UgcmV0dXJuIHQuICBEbyBub3RoaW5nIGlmCit0 aGUgZnJhbWUgaXMgbm90ICh5ZXQpIGFzc29jaWF0ZWQgd2l0aCBhIHdpbmRvdyBoYW5kbGUuICAq LykKKyAgKExpc3BfT2JqZWN0IHVyZ2VuY3kpCit7CisgIGlmIChmbGFzaF93aW5kb3dfZXhfZm4g PT0gTlVMTCkKKyAgICByZXR1cm4gUW5pbDsKKworICBzdHJ1Y3QgZnJhbWUgKnNmID0gU0VMRUNU RURfRlJBTUUgKCk7CisgIEhXTkQgaHduZCA9IE5VTEw7CisKKyAgaWYgKEZSQU1FX1czMl9QIChz ZikgJiYgRlJBTUVfTElWRV9QIChzZikpCisgICAgaHduZCA9IEZSQU1FX1czMl9XSU5ET1cgKHNm KTsKKworICBpZiAoaHduZCA9PSBOVUxMKQorICAgIHJldHVybiBRbmlsOworCisgIEZMQVNIV0lO Rk8gZmxhc2hfaW5mbzsKKyAgZmxhc2hfaW5mby5jYlNpemUgPSBzaXplb2YoZmxhc2hfaW5mbyk7 CisgIGZsYXNoX2luZm8udUNvdW50ID0gMDsKKyAgZmxhc2hfaW5mby5kd1RpbWVvdXQgPSAwOwor ICBmbGFzaF9pbmZvLmh3bmQgPSBod25kOworICBpZiAoIU5JTFAgKHVyZ2VuY3kpICYmIFNZTUJP TFAgKHVyZ2VuY3kpKQorICAgIHsKKyAgICAgIC8qIFRoZSBpbnRlbmRlZCBjYWxsZXIsICdzeXN0 ZW0tdGFza2Jhci1hdHRlbnRpb24nLCBoYXMgYW4KKwkgb3B0aW9uYWwgdGltZXIgdG8gY2xlYXIg dGhlIGF0dGVudGlvbiBpbmRpY2F0b3Igc28gdGhpcyB3aWxsCisJIGZsYXNoIHVudGlsIGNsZWFy ZWQgdmlhIHRoZSB0aW1lciwgb3IgdGhlIHdpbmRvdyBjb21lcyB0byB0aGUKKwkgZm9yZWdyb3Vu ZC4gIEZvciBpbmZvcm1hdGlvbmFsIGF0dGVudGlvbiwgZmxhc2ggdGhlIHRyYXkgaWNvbi4KKwkg Rm9yIGNyaXRpY2FsIGF0dGVudGlvbiwgZmxhc2ggdGhlIHRyYXkgaWNvbiBhbmQgdGhlIHdpbmRv dy4gICovCisgICAgICBpZiAoRVEgKHVyZ2VuY3ksIFFpbmZvcm1hdGlvbmFsKSkKKwlmbGFzaF9p bmZvLmR3RmxhZ3MgPSBGTEFTSFdfVFJBWSB8IEZMQVNIV19USU1FUk5PRkc7CisgICAgICBlbHNl IGlmIChFUSAodXJnZW5jeSwgUWNyaXRpY2FsKSkKKwlmbGFzaF9pbmZvLmR3RmxhZ3MgPSBGTEFT SFdfQUxMIHwgRkxBU0hXX1RJTUVSTk9GRzsKKyAgICB9CisgIGVsc2UKKyAgICBmbGFzaF9pbmZv LmR3RmxhZ3MgPSBGTEFTSFdfU1RPUDsKKworICBmbGFzaF93aW5kb3dfZXhfZm4gKCZmbGFzaF9p bmZvKTsKKyAgcmV0dXJuIFF0OworfQorCitERUZVTiAoInczMi1wcm9ncmVzcy1pbmRpY2F0b3Ii LAorICAgICAgIEZ3MzJfcHJvZ3Jlc3NfaW5kaWNhdG9yLAorICAgICAgIFN3MzJfcHJvZ3Jlc3Nf aW5kaWNhdG9yLAorICAgICAgIDEsIDEsIDAsCisgICAgICAgZG9jOiAvKiBTaG93IGEgcHJvZ3Jl c3MgYmFyIG9uIHRoZSBzZWxlY3RlZCBmcmFtZSdzIHRhc2tiYXIgaWNvbi4KK1BST0dSRVNTIGlz IGEgZmxvYXQgaW4gdGhlIHJhbmdlIDAuMCB0byAxLjAuICBJZiBQUk9HUkVTUyBpcyBuaWwsIHJl bW92ZQordGhlIHByb2dyZXNzIGluZGljYXRvci4gIERvIG5vdGhpbmcgaWYgV2luZG93cyBkb2Vz IG5vdCBzdXBwb3J0IHRoZQorSVRhc2tiYXJMaXN0MyBpbnRlcmZhY2UgYW5kIHJldHVybiBuaWws IG90aGVyd2lzZSByZXR1cm4gdC4gIERvIG5vdGhpbmcKK2lmIHRoZSBzZWxlY3RlZCBmcmFtZSBp cyBub3QgKHlldCkgYXNzb2NpYXRlZCB3aXRoIGEgd2luZG93IGhhbmRsZSAgKi8pCisgIChMaXNw X09iamVjdCBwcm9ncmVzcykKK3sKKyAgc3RydWN0IGZyYW1lICpzZiA9IFNFTEVDVEVEX0ZSQU1F ICgpOworICBIV05EIGh3bmQgPSBOVUxMOworCisgIGlmIChGUkFNRV9XMzJfUCAoc2YpICYmIEZS QU1FX0xJVkVfUCAoc2YpKQorICAgIGh3bmQgPSBGUkFNRV9XMzJfV0lORE9XIChzZik7CisKKyAg aWYgKGh3bmQgPT0gTlVMTCkKKyAgICByZXR1cm4gUW5pbDsKKworICBDb0luaXRpYWxpemUgKE5V TEwpOworICBJVGFza2Jhckxpc3QzICp0YXNrX2Jhcl9saXN0ID0gTlVMTDsKKyAgSFJFU1VMVCBy ID0gQ29DcmVhdGVJbnN0YW5jZSgmQ0xTSURfVGFza2Jhckxpc3QsCisJCQkgICAgICAgTlVMTCwK KwkJCSAgICAgICBDTFNDVFhfSU5QUk9DX1NFUlZFUiwKKwkJCSAgICAgICAmSUlEX0lUYXNrYmFy TGlzdDMsCisJCQkgICAgICAgKHZvaWQgKiopJnRhc2tfYmFyX2xpc3QpOworICBpZiAociAhPSBT X09LKQorICAgIHJldHVybiBRbmlsOworCisgIC8qIFNjYWxlIHRhc2sgYmFyIHByb2dyZXNzIGZy b20gMC4wLTEuMCB0byAwLTEwMC4gICovCisgIFVMT05HTE9ORyBhZGpfcHJvZ3Jlc3MgPSAwOwor ICBpZiAoIU5JTFAgKHByb2dyZXNzKSAmJiBGTE9BVFAgKHByb2dyZXNzKSkKKyAgICAgIGFkal9w cm9ncmVzcyA9IChVTE9OR0xPTkcpICgxMDAuMCAqCisJCQkJICBYRkxPQVRfREFUQSAocHJvZ3Jl c3MpKTsKKyAgaWYgKGFkal9wcm9ncmVzcyA+IDApCisgICAgeworICAgICAgdGFza19iYXJfbGlz dC0+bHBWdGJsLT5TZXRQcm9ncmVzc1N0YXRlICh0YXNrX2Jhcl9saXN0LAorCQkJCQkgICAgICAg aHduZCwgVEJQRl9OT1JNQUwpOworICAgICAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5TZXRQcm9n cmVzc1ZhbHVlICh0YXNrX2Jhcl9saXN0LAorCQkJCQkgICAgICAgaHduZCwgYWRqX3Byb2dyZXNz LCAxMDApOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHRhc2tfYmFyX2xpc3QtPmxwVnRi bC0+U2V0UHJvZ3Jlc3NTdGF0ZSAodGFza19iYXJfbGlzdCwKKwkJCQkJICAgICAgIGh3bmQsIFRC UEZfTk9QUk9HUkVTUyk7CisgICAgfQorCisgIHRhc2tfYmFyX2xpc3QtPmxwVnRibC0+UmVsZWFz ZSh0YXNrX2Jhcl9saXN0KTsKKyAgcmV0dXJuIFF0OworfQorCisjZW5kaWYgLyogV0lORE9XU05U ICovCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgogCQkJICAgIEluaXRpYWxpemF0aW9uCiAgKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCkBAIC0xMTUxMSw2ICsxMTgyNiwxNSBAQCBzeW1zX29mX3czMmZucyAodm9pZCkKICAg REVGU1lNIChRY2Fwc2xvY2ssICJjYXBzbG9jayIpOwogICBERUZTWU0gKFFrcF9udW1sb2NrLCAi a3AtbnVtbG9jayIpOwogICBERUZTWU0gKFFzY3JvbGwsICJzY3JvbGwiKTsKKworICAjaWZkZWYg V0lORE9XU05UCisgIC8qIFRhc2tiYXIgaW5kaWNhdG9ycyBzdXBwb3J0LiAgKi8KKyAgZGVmc3Vi ciAoJlN3MzJfYmFkZ2UpOworICBkZWZzdWJyICgmU3czMl9wcm9ncmVzc19pbmRpY2F0b3IpOwor ICBkZWZzdWJyICgmU3czMl9yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uKTsKKyAgREVGU1lNIChRaW5m b3JtYXRpb25hbCwgImluZm9ybWF0aW9uYWwiKTsKKyAgREVGU1lNIChRY3JpdGljYWwsICJjcml0 aWNhbCIpOworICAjZW5kaWYKIH0KIAogDApAQCAtMTE3OTksNiArMTIxMjMsOSBAQCBnbG9iYWxz X29mX3czMmZucyAodm9pZCkKICAgU2V0R2VzdHVyZUNvbmZpZ19mbgogICAgID0gKFNldEdlc3R1 cmVDb25maWdfcHJvYykgZ2V0X3Byb2NfYWRkciAodXNlcjMyX2xpYiwKIAkJCQkJICAgICAiU2V0 R2VzdHVyZUNvbmZpZyIpOworICBmbGFzaF93aW5kb3dfZXhfZm4KKyAgICA9IChGbGFzaFdpbmRv d0V4X1Byb2MpIGdldF9wcm9jX2FkZHIgKHVzZXIzMl9saWIsCisJCQkJCSAgIkZsYXNoV2luZG93 RXgiKTsKIAogICB7CiAgICAgSE1PRFVMRSBpbW0zMl9saWIgPSBHZXRNb2R1bGVIYW5kbGUgKCJp bW0zMi5kbGwiKTsKZGlmZiAtLWdpdCBhL3N5c3RlbS10YXNrYmFyLnRleGkgYi9zeXN0ZW0tdGFz a2Jhci50ZXhpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMTgzZDUw ZjU4MgotLS0gL2Rldi9udWxsCisrKyBiL3N5c3RlbS10YXNrYmFyLnRleGkKQEAgLTAsMCArMSwy NjAgQEAKK1xpbnB1dCB0ZXhpbmZvICAgIEBjIC0qLXRleGluZm8tKi0KKworQHNldGZpbGVuYW1l IC4uLy4uL2luZm8vZG9jay1tb2RlLmluZm8KK0BzZXR0aXRsZSBTeXN0ZW0gR1VJIFRhc2tiYXIg RmVhdHVyZXMKK0BpbmNsdWRlIGRvY3N0eWxlLnRleGkKKworQGNvcHlpbmcKK1RoaXMgZmlsZSBk ZXNjcmliZXMgRW1hY3Mgc3lzdGVtIEdVSSB0YXNrYmFyIGludGVncmF0aW9uLgorCitDb3B5cmln aHQgQGNvcHlyaWdodHt9IDIwMjUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK0Bx dW90YXRpb24KK1Blcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9v ciBtb2RpZnkgdGhpcyBkb2N1bWVudAordW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBE b2N1bWVudGF0aW9uIExpY2Vuc2UsIFZlcnNpb24gMS4zIG9yCithbnkgbGF0ZXIgdmVyc2lvbiBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2l0aCBubworSW52YXJp YW50IFNlY3Rpb25zLCB3aXRoIHRoZSBGcm9udC1Db3ZlciBUZXh0cyBiZWluZyBgYEEgR05VIE1h bnVhbCwnJworYW5kIHdpdGggdGhlIEJhY2stQ292ZXIgVGV4dHMgYXMgaW4gKGEpIGJlbG93LiAg QSBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzCitpbmNsdWRlZCBpbiB0aGUgc2VjdGlvbiBlbnRpdGxl ZCBgYEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZScnLgorCisoYSkgVGhlIEZTRidzIEJh Y2stQ292ZXIgVGV4dCBpczogYGBZb3UgaGF2ZSB0aGUgZnJlZWRvbSB0byBjb3B5IGFuZAorbW9k aWZ5IHRoaXMgR05VIG1hbnVhbC4nJworQGVuZCBxdW90YXRpb24KK0BlbmQgY29weWluZworCitA ZGlyY2F0ZWdvcnkgRW1hY3MgbWlzYyBmZWF0dXJlcworQGRpcmVudHJ5CisqIFN5c3RlbSBHVUkg VGFza2JhcjogKHRhc2tiYXIpLiAgICAgICBTeXN0ZW0gR1VJIHRhc2tiYXIgaW50ZWdyYXRpb24u CitAZW5kIGRpcmVudHJ5CisKK0B0aXRsZXBhZ2UKK0B0aXRsZSBTeXN0ZW0gR1VJIFRhc2tiYXIg SW50ZWdyYXRpb24KK0BwYWdlCitAdnNraXAgMHB0IHBsdXMgMWZpbGxsCitAaW5zZXJ0Y29weWlu ZworQGVuZCB0aXRsZXBhZ2UKKworQGNvbnRlbnRzCisKK0BpZm5vdHRleAorQG5vZGUgVG9wCitA dG9wIEVtYWNzIFN5c3RlbSBHVUkgVGFza2JhciBJbnRlZ3JhdGlvbgorVGhpcyBtYW51YWwgZGVz Y3JpYmVzIEVtYWNzIHN5c3RlbSBHVUkgdGFza2JhciBpbnRlZ3JhdGlvbi4KKworVGhlIEBkZm57 c3lzdGVtLXRhc2tiYXJ9IHBhY2thZ2UgYWRkcyBFbWFjcyBpbnRlZ3JhdGlvbiB3aXRoIHN5c3Rl bSBHVUkKK3Rhc2tiYXIgKGFsc28gY2FsbGVkIGRvY2tzIG9yIGxhdW5jaGVycyBvciBzb21ldGhp bmcgc2ltaWxhcikgdG8gZGlzcGxheQorYSB0YXNrYmFyIGljb24gImJhZGdlIiBvdmVybGF5LCBh IHByb2dyZXNzIGJhciByZXBvcnQgb3ZlcmxheSwgYWxlcnQgdGhlCit1c2VyIHRoYXQgYW4gRW1h Y3Mgc2Vzc2lvbiBuZWVkcyBhdHRlbnRpb24sIG9mdGVuIGJ5IGZsYXNoaW5nIG9yCitib3VuY2lu ZyB0aGUgRW1hY3MgYXBwbGljYXRpb24gaWNvbi4gIFRhc2tiYXIgY2FwYWJsZSBzeXN0ZW1zIGFy ZQorR05VL0xpbnV4IHZpYSBELUJ1cywgbWFjT1MvR05Vc3RlcCAxMC41KywgTVMtV2luZG93cyA3 Ky4KKworT24gR05VL0xpbnV4LCB0aGUgdmlzaWJsZSBlZmZlY3RzIHdpbGwgYXBwZWFyIG9uIHRo ZSBkZXN0aW5hdGlvbnMKK2RldGVybWluZWQgYnkgeW91ciBzaGVsbCBleHRlbnNpb24sIG1vc3Qg b2Z0ZW4gdGhlIGFwcGxpY2F0aW9uIGxhdW5jaGVyCitvciBkb2NrIHBhbmVsLCBvciB0aGUgdG9w IHBhbmVsLiAgRWZmZWN0cyBhcmUgZ2xvYmFsIGZvciBhbiBFbWFjcworaW5zdGFuY2UuCisKK09u IG1hY09TL0dOVXN0ZXAsIHRoZSBlZmZlY3RzIHdpbGwgYXBwZWFyIG9uIHRoZSBEb2NrIGFuZCBp biB0aGUgQXBwCitTd2l0Y2hlci4gIEVmZmVjdHMgYXJlIGdsb2JhbCBmb3IgYW4gRW1hY3MgaW5z dGFuY2UuCisKK09uIE1TLVdpbmRvd3MsIHRoZSBlZmZlY3RzIGFwcGVhciBvbiB0aGUgdGFza2Jh ci4gIEVmZmVjdHMgYXJlCithc3NvY2lhdGVkIHdpdGggdGhlIGZyYW1lIGZyb20gd2hpY2ggdGhl eSBhcmUgaW5pdGlhdGVkLgorCitAaW5zZXJ0Y29weWluZworCitAbWVudQorKiBPdmVydmlldzo6 ICAgICAgICAgICAgICAgICAgICBPdmVydmlldyBvZiBzeXN0ZW0gR1VJIHRhc2tiYXIgaW50ZWdy YXRpb24KKyogUHJlcmVxdWlzaXRlczo6CisqIFVzZXIgT3B0aW9uczo6CisqIEZ1bmN0aW9uIFJl ZmVyZW5jZTo6CisqIFN5c3RlbSBUYXNrYmFyIFVzYWdlIEV4YW1wbGVzOjoKKyogR05VIEZyZWUg RG9jdW1lbnRhdGlvbiBMaWNlbnNlOjogIFRoZSBsaWNlbnNlIGZvciB0aGlzIGRvY3VtZW50YXRp b24uCisqIEZ1bmN0aW9uIEluZGV4OjoKKyogVmFyaWFibGUgSW5kZXg6OgorQGVuZCBtZW51CitA ZW5kIGlmbm90dGV4CisKK0Bub2RlIE92ZXJ2aWV3CitAY2hhcHRlciBPdmVydmlldworCitUaGUg U3lzdGVtIFRhc2tiYXIgcGFja2FnZSBwcm92aWRlcyB0aGVzZSBzeXN0ZW0gR1VJIHRhc2tiYXIg ZmVhdHVyZXM6CisKK0BpdGVtaXplIEBidWxsZXQKK0BpdGVtIEljb24gYmFkZ2UKK0BpdGVtIElj b24gcHJvZ3Jlc3MgaW5kaWNhdG9yCitAaXRlbSBJY29uIGF0dGVudGlvbiBhbGVydAorQGVuZCBp dGVtaXplCisKK0Bub2RlIFByZXJlcXVpc2l0ZXMKK0BjaGFwdGVyIFByZXJlcXVpc2l0ZXMKKwor bWFjT1MvR05Vc3RlcCwgYW5kIE1TLVdpbmRvd3MgdXNlcnMgbmVlZCBubyBzcGVjaWFsIGNvbmZp Z3VyYXRpb24uCisKK09uIEdOVS9MaW51eCBzeXN0ZW1zLCB0aGUgaW1wbGVtZW50YXRpb24gaXMg dmlhIEQtQnVzIHRvIGNvbnRyb2wgR1VJCitzaGVsbHMgYW5kL29yIHNoZWxsIGV4dGVuc2lvbnMg c3VjaCBhcworQGZpbGV7aHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vMzA3 L2Rhc2gtdG8tZG9jay99IHRoYXQKK2ltcGxlbWVudCBVYnVudHUncyBVbml0eSBsYXVuY2hlciBz cGVjIHdoaWNoIHlvdSBjYW4gcmVhZCBtb3JlIGFib3V0CitoZXJlIEBmaWxle2h0dHBzOi8vd2lr aS51YnVudHUuY29tL1VuaXR5L0xhdW5jaGVyQVBJfS4KKworQG5vZGUgVXNlciBPcHRpb25zCitA Y2hhcHRlciBVc2VyIE9wdGlvbnMKKworQGRlZm9wdCBzeXN0ZW0tdGFza2Jhci1jbGVhci1hdHRl bnRpb24tb24tZnJhbWUtZm9jdXMKK1RoZSB2YXJpYWJsZSBAY29kZXtzeXN0ZW0tdGFza2Jhci1j bGVhci1hdHRlbnRpb24tb24tZnJhbWUtZm9jdXN9IGNhbiBiZQorY3VzdG9taXplZCB0byBjbGVh ciB0aGUgdGFza2JhciBpY29uIGF0dGVudGlvbiBpbmRpY2F0b3Igd2hlbiBhbnkgRW1hY3MKK0dV SSBmcmFtZSBpcyBmb2N1c2VkLiAgVGhpcyBpcyB1c2VmdWwgb24gR05VL0xpbnV4IGFuZCBpZ25v cmVkIG9uIGJhY2sKK2VuZHMgdGhhdCBhdXRvbWF0aWNhbGx5IGNsZWFyIHRoZSBhdHRlbnRpb24g aW5kaWNhdG9yIChNUy1XaW5kb3dzIGFuZAorbWFjT1MvR05Vc3RlcCkuICBJdCBkZWZhdWx0cyB0 byBAY29kZXt0fS4gIEN1c3RvbWl6ZSB0aGlzIGJlZm9yZQorZW5hYmxpbmcgQGNvZGV7c3lzdGVt LXRhc2tiYXItbW9kZX0uCitAZW5kIGRlZm9wdAorCitAZGVmb3B0IHN5c3RlbS10YXNrYmFyLWRi dXMtZGVza3RvcC1maWxlLW5hbWUKK1RoZSB2YXJpYWJsZSBAY29kZXtzeXN0ZW0tdGFza2Jhci1k YnVzLWRlc2t0b3AtZmlsZS1uYW1lfSBpcyBjb25zdWx0ZWQKK29uIEdOVS9MaW51eCBELUJ1cyBz eXN0ZW1zLCBhbmQgY2FuIGJlIGN1c3RvbWl6ZWQgdG8gaW5kaWNhdGUgd2hpY2gKK2Rlc2t0b3Ag ZmlsZSBuYW1lIGlkZW50aWZpZXMgeW91ciBFbWFjcyBpbnN0YW5jZS4gIEl0IGRlZmF1bHRzIHRv IHRoZQorZGVza3RvcCBmaWxlIGJhc2UgbmFtZSBAY29kZXsiZW1hY3NjbGllbnQifSBhbmQgbWln aHQgbmVlZCB0byBiZSBzZXQgdG8KK0Bjb2RleyJlbWFjcyJ9IG9uIHlvdXIgc3lzdGVtLiAgRW1h Y3MgaW5zdGFsbGVkIGJ5IExpbnV4IGRpc3RyaWJ1dGlvbnMKK2NhbiB2YXJ5IG9uIHRoZWlyIG5h bWluZyBzY2hlbWUgYW5kIG9mdGVuIGluY2x1ZGUgZGVza3RvcCBmaWxlcyBmb3IKK2JvdGguCitA ZW5kIGRlZm9wdAorCitAZGVmb3B0IHN5c3RlbS10YXNrYmFyLWRidXMtdGltZW91dAorVGhlIHZh cmlhYmxlIEBjb2Rle3N5c3RlbS10YXNrYmFyLWRidXMtdGltZW91dH0gaXMgY29uc3VsdGVkIG9u CitHTlUvTGludXggRC1CdXMgc3lzdGVtcywgYW5kIGNhbiBiZSBjdXN0b21pemVkIHRvIHNwZWNp ZnkgdGhlIG51bWJlciBvZgorbWlsbGlzZWNvbmRzIEVtYWNzIHdpbGwgd2FpdCBmb3IgRC1CdXMg cmVzcG9uc2VzIGJlZm9yZSB0aW1pbmcgb3V0IGFuZAorY29uc2lkZXJpbmcgbWVzc2FnZXMgdW5k ZWxpdmVyYWJsZS4gIEl0IGRlZmF1bHRzIHRvIG5pbCB3aGljaCB3aWxsIHVzZQordGhlIEQtQnVz IHBhY2thZ2UgZGVmYXVsdCBvZiAyNTAwMCBtaWxsaXNlY29uZHMsIHdoaWNoIHNlZSwKK0BweHJl ZntUb3AsLCwgZGJ1cywgRC1CdXMgaW50ZWdyYXRpb24gaW4gRW1hY3N9LgorQGVuZCBkZWZvcHQK KworQG5vZGUgRnVuY3Rpb24gUmVmZXJlbmNlCitAY2hhcHRlciBGdW5jdGlvbiBSZWZlcmVuY2UK KworQGRlZmZuIHN5c3RlbS10YXNrYmFyLW1vZGUKK0Bjb2Rle3N5c3RlbS10YXNrYmFyLW1vZGV9 IG11c3QgYmUgZW5hYmxlZCB0byBpbml0aWFsaXplIHRoZSBzeXN0ZW0gYmFjaworZW5kIGJlZm9y ZSBjYWxsaW5nIGFueSBvZiB0aGlzIHBhY2thZ2UncyBmdW5jdGlvbnMuICBPbiBhIEdOVS9MaW51 eAorRC1CdXMgc3lzdGVtLCB0aGUgcmVxdWlyZWQgRC1CdXMgcHJvdG9jb2wgaXMgcHJvYmVkIGFu ZCBpZiBub3QKK2F2YWlsYWJsZSwgYW4gZXJyb3IgaXMgc2lnbmFsZWQuCitAZW5kIGRlZmZuCisK K0BkZWZ1biBzeXN0ZW0tdGFza2Jhci1iYWRnZSAmb3B0aW9uYWwgY291bnQKK0Rpc3BsYXkgdGhl IHRhc2tiYXIgaWNvbiBiYWRnZSBzZXQgdG8gQHZhcntjb3VudH0uICBJZiBAdmFye2NvdW50fSBp cworQGNvZGV7bmlsfSwgY2xlYXIgdGhlIGJhZGdlLiAgQHZhcntjb3VudH0gaXMgdHlwaWNhbGx5 IGFuIGludGVnZXIuCisKK0lmIEB2YXJ7Y291bnR9IGlzIGEgc3RyaW5nLCBpdCBpcyBjb252ZXJ0 ZWQgdG8gYW4gaW50ZWdlciBvbiBzeXN0ZW1zCit0aGF0IGRvIG5vdCBzdXBwb3J0IHN0cmluZyBi YWRnZXMsIHN1Y2ggYXMgR05VL0xpbnV4IEQtQnVzLCBhbmQgdGhlCitiYWRnZSB3aWxsIGJlIGNs ZWFyZWQgaWYgdGhlIHN0cmluZyBpcyBhbiBpbnZhbGlkIGludGVnZXIKK3JlcHJlc2VudGF0aW9u LiAgT24gc3lzdGVtcyB0aGF0IHN1cHBvcnQgc3RyaW5ncywgc3VjaCBhcyBtYWNPUy9HTlVzdGVw CithbmQgTVMtV2luZG93cywgdGhlIGJhZGdlIGlzIHNldCB0byB0aGUgc3RyaW5nIGFuZCBkaXNw bGF5ZWQsIGFuZCBtYXkgYmUKK3RydW5jYXRlZCB0byBmaXQgdGhlIHZpc3VhbCBzcGFjZSBhbGxv Y2F0ZWQgYnkgdGhlIHN5c3RlbS4gIEluIGFueSBjYXNlLAoraWYgdGhlIHN0cmluZyBpcyBlbXB0 eSwgY2xlYXIgdGhlIGJhZGdlLgorQGVuZCBkZWZ1bgorCitAZGVmdW4gc3lzdGVtLXRhc2tiYXIt YXR0ZW50aW9uICZvcHRpb25hbCB1cmdlbmN5IHRpbWVvdXQKK0Rpc3BsYXkgYSB0YXNrYmFyIGlj b24gYWxlcnQuICBUaGlzIHdpbGwgcmVzdWx0IGluIGEgYm91bmNpbmcgb3IKK2ZsYXNoaW5nIHRh c2tiYXIgaWNvbi4gIE9uIHNvbWUgYmFjayBlbmRzLCBhdHRlbnRpb24gd2lsbCBiZSBkaXNwbGF5 ZWQKK29ubHkgaWYgRW1hY3MgaXMgbm90IHRoZSBjdXJyZW50bHkgZm9jdXNlZCBhcHBsaWNhdGlv bi4KKworSWYgQHZhcnt1cmdlbmN5fSBpcyB0aGUgc3ltYm9sIEBjb2Rle2luZm9ybWF0aW9uYWx9 LCBub3JtYWwgYXR0ZW50aW9uIGlzCityZXF1ZXN0ZWQuICBJZiBAdmFye3VyZ2VuY3l9IGlzIHRo ZSBzeW1ib2wgQGNvZGV7Y3JpdGljYWx9LCB1cmdlbnQKK2F0dGVudGlvbiBpcyByZXF1ZXN0ZWQu ICBJZiBAdmFye3VyZ2VudH0gaXMgQGNvZGV7bmlsfSwgY2xlYXIgdGhlCithdHRlbnRpb24gaW5k aWNhdG9yLgorCitFbWFjcyB3YWl0cyBAdmFye3RpbWVvdXR9IHNlY29uZHMgYmVmb3JlIGF1dG9t YXRpY2FsbHkgcmVtb3ZpbmcgdGhlCitpbmRpY2F0b3IuICBJZiBAdmFye3RpbWVvdXR9IGlzIEBj b2Rle25pbH0sIHRoZSBhdHRlbnRpb24gaW5kaWNhdG9yIHdpbGwKK2JlIGNsZWFyZWQgYnkgdGhl IHN5c3RlbSBvciBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gYWdhaW4gcGFzc2luZyBhCitAY29k ZXtuaWx9IHVyZ2VuY3kuCisKK09uIHNvbWUgYmFjayBlbmRzLCBhbiBAY29kZXtpbmZvcm1hdGlv bmFsfSBhdHRlbnRpb24gcmVxdWVzdCB3aWxsIHRpbWUKK291dCBhdXRvbWF0aWNhbGx5LiAgSW4g Y29udHJhc3QsIGEgQGNvZGV7Y3JpdGljYWx9IHJlcXVlc3QgcmVxdWlyZXMgdGhhdAordGhlIHVz ZXIgYnJpbmcgRW1hY3MgaW50byBmb2N1cyBhbmQgd2lsbCBub3QgdGltZSBvdXQuICBPbiBzb21l IGJhY2sKK2VuZHMsIEBjb2Rle2NyaXRpY2FsfSBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIEBjb2Rl e2luZm9ybWF0aW9uYWx9LgorQGVuZCBkZWZ1bgorCitAZGVmdW4gc3lzdGVtLXRhc2tiYXItcHJv Z3Jlc3MgJm9wdGlvbmFsIHByb2dyZXNzCitTZXQgdGhlIHRhc2tiYXIgaWNvbiB0byBpbmRpY2F0 ZSBwcm9ncmVzcyBvZiBhIGxvbmctcnVubmluZyBvcGVyYXRpb24uCitUYXNrYmFyIHByb2dyZXNz IGlzIHR5cGljYWxseSByZXByZXNlbnRlZCBhcyBhIGdyYXBoaWNhbCBiYXIgdGhhdAorZnJhY3Rp b25hbGx5IHNwYW5zIHRoZSB0YXNrYmFyIGljb24uICBAdmFye3Byb2dyZXNzfSBpcyBhIGZsb2F0 IGluIHRoZQorcmFuZ2UgMC4wIHRvIDEuMC4gIElmIEB2YXJ7cHJvZ3Jlc3N9IGlzIG5pbCwgcmVt b3ZlIHRoZSBwcm9ncmVzcworaW5kaWNhdG9yLgorCitAQEAgVGhlIHR3byBtYWNyb3MgYmVsb3cg Y2FuIGJlIHVzZWQgdG8gc3VwcGxlbWVudCBjb252ZW50aW9uYWwgRW1hY3MKK3Byb2dyZXNzIHJl cG9ydGluZyBpbiB0aGUgZWNobyBhcmVhLiAgQHhyZWZ7UHJvZ3Jlc3MsLCBEaXNwbGF5LCBlbGlz cCwgVGhlIEVtYWNzIExpc3AKK1JlZmVyZW5jZSBNYW51YWx9LgorCitAZW5kIGRlZnVuCisKK0Bk ZWZtYWMgZG90aW1lcy13aXRoLXN5c3RlbS10YXNrYmFyLXByb2dyZXNzLXJlcG9ydGVyICh2YXIg Y291bnQgW3Jlc3VsdF0pIHJlcG9ydGVyLW9yLW1lc3NhZ2UgYm9keUBkb3Rze30KK1RoaXMgaXMg YSBjb252ZW5pZW5jZSBtYWNybyBhbmFsb2dvdXMgdG8KK0Bjb2Rle2RvdGltZXMtd2l0aC1wcm9n cmVzcy1yZXBvcnRlcn0gYW5kIHdvcmtzIHRoZSBzYW1lIHdheSBhcworQGNvZGV7ZG90aW1lc30g ZG9lcywgYnV0IGFsc28gcmVwb3J0cyBsb29wIHByb2dyZXNzIG9uIHRoZSBFbWFjcyB0YXNrYmFy CitpY29uLiBAQEAgQHhyZWZ7UHJvZ3Jlc3MsLCBEaXNwbGF5LCBlbGlzcCwgVGhlIEVtYWNzIExp c3AgUmVmZXJlbmNlCitNYW51YWx9LgorQGVuZCBkZWZtYWMKKworQGRlZm1hYyBkb2xpc3Qtd2l0 aC1zeXN0ZW0tdGFza2Jhci1wcm9ncmVzcy1yZXBvcnRlciAodmFyIGxpc3QgW3Jlc3VsdF0pIHJl cG9ydGVyLW9yLW1lc3NhZ2UgYm9keUBkb3Rze30KK1RoaXMgaXMgYSBjb252ZW5pZW5jZSBtYWNy byBhbmFsb2dvdXMgdG8KK0Bjb2Rle2RvbGlzdC13aXRoLXByb2dyZXNzLXJlcG9ydGVyfSBhbmQg d29ya3MgdGhlIHNhbWUgd2F5IGFzCitAY29kZXtkb2xpc3R9IGRvZXMsIGJ1dCBhbHNvIHJlcG9y dHMgbG9vcCBwcm9ncmVzcyBvbiB0aGUgRW1hY3MgdGFza2JhcgoraWNvbi4gIEBAQCBAeHJlZntQ cm9ncmVzcywsIERpc3BsYXksIGVsaXNwLCBUaGUgRW1hY3MgTGlzcCBSZWZlcmVuY2UKK01hbnVh bH0uCitAZW5kIGRlZm1hYworCitAbm9kZSBTeXN0ZW0gVGFza2JhciBVc2FnZSBFeGFtcGxlcwor QGNoYXB0ZXIgU3lzdGVtIFRhc2tiYXIgVXNhZ2UgRXhhbXBsZXMKKworQGxpc3AKK0Bncm91cAor OzsgRW5hYmxlIGFuZCBpbml0aWFsaXplIHN5c3RlbS10YXNrYmFyLW1vZGUgYmVmb3JlIGNhbGxp bmcgaXRzCis7OyBjb21wYW5pb24gZnVuY3Rpb25zLgorKHN5c3RlbS10YXNrYmFyLW1vZGUpCisK Kzs7IERpc3BsYXkgYSBiYWRnZSBvbiB0aGUgdGFza2JhciBpY29uLgorKHN5c3RlbS10YXNrYmFy LWJhZGdlIGVtYWNzLW1ham9yLXZlcnNpb24pCisoc3lzdGVtLXRhc2tiYXItYmFkZ2UgIjMxIikg OyBjb252ZXJ0ZWQgdG8gaW50ZWdlciBvbiBHTlUvTGludXgKKyhzeXN0ZW0tdGFza2Jhci1iYWRn ZSAiVGVzdCIpIDsgd29ya3Mgb24gbWFjT1MvR05Vc3RlcCBhbmQgTVMtV2luZG93cworCis7OyBD bGVhciB0aGUgYmFkZ2UuCisoc3lzdGVtLXRhc2tiYXItYmFkZ2UgbmlsKQorOzsgT3IganVzdAor KHN5c3RlbS10YXNrYmFyLWJhZGdlKQorQGVuZCBncm91cAorCitAZ3JvdXAKKzs7IEdldCB0aGUg dXNlcidzIGF0dGVudGlvbi4KKyhzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gJ2luZm9ybWF0aW9u YWwgMykgOyBjbGVhciB0aGUgcmVxdWVzdCBhZnRlciAzIHNlY29uZHMKKyhzeXN0ZW0tdGFza2Jh ci1hdHRlbnRpb24gJ2NyaXRpY2FsKSA7IGNsZWFyIHdoZW4gdGhlIEVtYWNzIGFwcGxpY2F0aW9u IGlzIGZvY3VzZWQKKworOzsgQ2xlYXIgdGhlIGF0dGVudGlvbiByZXF1ZXN0LgorKHN5c3RlbS10 YXNrYmFyLWF0dGVudGlvbiBuaWwpCis7OyBPciBqdXN0Cisoc3lzdGVtLXRhc2tiYXItYXR0ZW50 aW9uKQorQGVuZCBncm91cAorCitAZ3JvdXAKKzs7IFJlcG9ydCBgZG90aW1lc2AgcHJvZ3Jlc3Mg b24gdGhlIHRhc2tiYXIgaWNvbi4KKyhkb3RpbWVzLXdpdGgtc3lzdGVtLXRhc2tiYXItcHJvZ3Jl c3MtcmVwb3J0ZXIKKyAoaSAxMCkgIkNvdW50aW5nIGZyb20gMSB0byAxMC4uLiIKKyAoc2xlZXAt Zm9yIDEpKQorCis7OyBSZXBvcnQgYGRvbGlzdGAgcHJvZ3Jlc3Mgb24gdGhlIHRhc2tiYXIgaWNv bi4KKyhkb2xpc3Qtd2l0aC1zeXN0ZW0tdGFza2Jhci1wcm9ncmVzcy1yZXBvcnRlcgorIChpICht YWtlLWxpc3QgMTAgdCkpICJQcm9ncmVzcyBmcm9tIDEgdG8gMTAgZWxlbWVudHMuLi4iCisgKHNs ZWVwLWZvciAxKSkKK0BlbmQgZ3JvdXAKK0BlbmQgbGlzcAorCitAbm9kZSBHTlUgRnJlZSBEb2N1 bWVudGF0aW9uIExpY2Vuc2UKK0BhcHBlbmRpeCBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vu c2UKK0BpbmNsdWRlIGRvY2xpY2Vuc2UudGV4aQorCitAbm9kZSBGdW5jdGlvbiBJbmRleAorQHVu bnVtYmVyZWQgRnVuY3Rpb24gSW5kZXgKK0BwcmludGluZGV4IGZuCisKK0Bub2RlIFZhcmlhYmxl IEluZGV4CitAdW5udW1iZXJlZCBWYXJpYWJsZSBJbmRleAorQHByaW50aW5kZXggdnIKKworQGJ5 ZQorCitAYyBFbmQ6Ci0tIAoyLjQ3LjEKCg== --0000000000004f726a0645b17e19--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 11 Dec 2025 15:26:14 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 11 10:26:14 2025 Received: from localhost ([127.0.0.1]:45945 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vTiYY-0003pd-7J for submit <at> debbugs.gnu.org; Thu, 11 Dec 2025 10:26:14 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58994) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vTiYV-0003pK-9D for 79859 <at> debbugs.gnu.org; Thu, 11 Dec 2025 10:26:12 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vTiYP-0005gQ-2e; Thu, 11 Dec 2025 10:26:05 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=4XEh/J0968F9XK3FG0M+bsJkhsveLbt65F2PcWEqSYQ=; b=HsT7929zQxfard1sL+j7 VXrSaSrGWzDE2+bs00oFfsgGJfRnmLb7lmBhn6Fc1SjMesrVaqFnAJx47Y18m49NJlCvGtzRMvppt 75TriSrbVrXAYRo3RoJgCf0pDLwMLymrrHomk7YPXgISsK6iuejUOkYtBoRF4XQvkdTEh99e7eiUc LDVKiHDfx3s3LG98GfrCQ854Dl2XyJMw2ZsvyGBmIbsAp6OwpgZftkY+6aUxFVTLJbSmrBd3Sl9Hp 5wInD1No1/oDmEgXB0nXL4UKj8uvIdgUrL7sgZKL4Ed29le+cdWaYRM8If90QsYQ2Nwxb9uJ+0wBj 3q2yXV292g/GTA==; Date: Thu, 11 Dec 2025 17:26:02 +0200 Message-Id: <86ikedavlh.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> In-Reply-To: <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> (message from Stefan Monnier on Thu, 11 Dec 2025 08:26:56 -0500) Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, michael.albinus@HIDDEN, shipmints@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Stefan Monnier <monnier@HIDDEN> > Cc: Stéphane Marks <shipmints@HIDDEN>, > bjorn.bidar@HIDDEN, > michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org > Date: Thu, 11 Dec 2025 08:26:56 -0500 > > >> Rather than add hooks to progress reporter, which would be of global > >> scope, I added optional update and done callbacks to > >> make-progress-reporter and that works swimmingly well. NEWS and > >> documentation have been updated for that feature in addition to > >> system-taskbar. > > > > Sounds reasonable. Stefan, any comments, or better ideas for > > integrating this into our progress reporter? > > IIUC the question here is whether all progress-reporter output should be > reflected in the taskbar (using hooks) or only those of specific uses > of a progress reporter (using callback arguments). No, I think this should be an optional feature, and therefore having a minor mode enable it is okay IMO. What I was asking about was how to allow the progress-reporter also reflect the progress on the task bar, when this optional feature is turned on. Is the callback way the best way, or are there better ways? > >> I changed the w32 implementation for the taskbar features to be > >> enabled relative to the current frame at the time rather than have > >> singletons so I've removed the static variables. > > I wonder if this relates to my comment in my other message about the > fact that in my setup the closest place to put such info would be in the > frame titles (I don't have GUI elements associated with "all Emacs > frames" or "all the frames of an Emacs session": instead > each frame gets its own GUI element). > > If my setup (which is highly non-standard and doesn't need to be taken > into account) is not the only one where such issues can come up, then > I think for the progress-reporter feature, it might make sense to > remember the selected-frame at the time of `make-progress-reporter`, but > indeed that leaves open the question of what to do when that frame isn't > live any more. So using the frame that happens to be selected when we > do the update might be good enough (tho it depends how the GUI handles > it: would we risk leaving the out-of-date progress displayed on the > other frame)? The Windows APIs for showing these indications need a handle to a frame, so that's why this is being discussed. In practice, IMO any handle to any of the Emacs frames should do.
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 11 Dec 2025 15:20:35 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 11 10:20:35 2025 Received: from localhost ([127.0.0.1]:45884 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vTiT4-0003TO-SQ for submit <at> debbugs.gnu.org; Thu, 11 Dec 2025 10:20:35 -0500 Received: from mail-ua1-x92a.google.com ([2607:f8b0:4864:20::92a]:58760) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vTiT2-0003RW-9I for 79859 <at> debbugs.gnu.org; Thu, 11 Dec 2025 10:20:33 -0500 Received: by mail-ua1-x92a.google.com with SMTP id a1e0cc1a2514c-93f5774571eso83705241.1 for <79859 <at> debbugs.gnu.org>; Thu, 11 Dec 2025 07:20:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765466426; x=1766071226; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=B6rrwXCvgYBscLWCyBBUFTgom8tfGyvNPX3W92CEYHg=; b=Mc5XhIEnsypddjhSjRPUmhBVBGJwK2Sxu9hNhHWfKKbDtAFnvTMyJ4xS2wDeR4r8gp SGRNRjuK6ps8Azw1fgFjWLcTSauYkq4N1+4vfefljD5izxzOK2ChzgHYSYvVs/R6uRYD rUzjj6xd7SXAsWpBZM9GQUZwEu8Hdygn4AVF8yxLwH1zxnIUdvNkneO6TgFOMC4Myd7a LWZcQQwIk0pzugbHqD/8XGn4rhO+NtS/+wdWV09eeeTLQFUFmItVxbqia9tnyucQHMzU O6QuG04j7lGypH9GssGnIQEC88tC35bfySrVkcMdLXqRMDUQ9EPm11qFXWJSUd0crG85 9BOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765466426; x=1766071226; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=B6rrwXCvgYBscLWCyBBUFTgom8tfGyvNPX3W92CEYHg=; b=pocjB4It7ATxIKZDDnRkD1LN8Vj0A3vrRCQCsy5biEskWv0QowJnfhLo3D1nsovJ3d eTHgyWYeVgXA66l1J7cN4osLecJHFRoY6sEf4mhxVUX89W6POjGxnECwXNViUAvcfI38 qmuFup1OAqGsH97zKb9q0YueKpOoMvf3Iiz0svsF4RSqg6yRu7axwlEvMNVpkGqGNCYO vAV6WxJgy301P4dGknwlKPeWi/+mncccHJcZ/l09oI2MsMzCQVgA0tfNOLEtTgeO1l5p K8J7y/kJl9Gya+aWBYxUuR25SuJ0sLaYX8oVZ5Fn8GpnY3nBvGd2OMeRdueldxgK7S6g 5VjA== X-Forwarded-Encrypted: i=1; AJvYcCUPj9NmDFkgcAvvybfatFC+kiqCPqskWaEMgmyWjq8sWuy7nLEc0fA9yCM7eymcpB5uSSHePg==@debbugs.gnu.org X-Gm-Message-State: AOJu0Ywt2kgLNySUnjfG/K+OO5BuNNv9gdjUlqx1fseeFSCkZC3REeh9 QuOHSJd/u27jzLt5qAbDOh6Lv2Qh4NBMvHpnxYRiCWhsPgReohOBZ2wVx2Ags8WHP6gltIBqzJ7 FcyGDDQgKBo3VO+kEXpyIoYFUTg2uJCk= X-Gm-Gg: AY/fxX4EWh/KjMBs20WK4xLZ7I58FUkMGybhXvOkZ/aDI31v2kmaWgSheRVXfx0TLyt MKVEkmk5wLa/8XJu/405mnLHt1k8SHR1P6WgPNHhF0f8DfbEMz1PbFC/HPwsaLHFcpNHM36/72f 5d0Vi/qbVMKIkOgcyT70vDOG9vXJ+JizpNPWbzqRmGpmCdxA3Eb7Ae9sJFCqEOqjxUMqX4o5C/7 ATwk5IyQXjCc8Om+6yNtuC+9pahRRGOAo6gWIHa3QCMPOUX8Ay/mQWPTdQkrYIGb7VBEmA= X-Google-Smtp-Source: AGHT+IFD6TgH1gga4V4o1O6zvkSSESqjYsYICwU/JqCYVKFhc/DzfSGaxUiGyz/fSN0AoqxOEFlkaWN2aUfub2gjmZ8= X-Received: by 2002:a05:6102:802a:b0:5de:694:15e0 with SMTP id ada2fe7eead31-5e571eee374mr2060071137.45.1765466426224; Thu, 11 Dec 2025 07:20:26 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <CAN+1Hbp3QAxxgcsZ9V6F0xowizkjpjoWErmQV7k86FhnSKhThw@HIDDEN> <jwvy0n9unif.fsf-monnier+emacs@HIDDEN> <CAN+1HbqzztGCNeHwT7Jazq=LzYGxRFDBU+qcpG12PQRjWZB4kQ@HIDDEN> <jwvms3pum68.fsf-monnier+emacs@HIDDEN> <CAN+1HbqDyxevPn0HQ-ARTnsvgy3e56dP=3X2gYYzNMWOoCuQ+Q@HIDDEN> <jwvh5txuljp.fsf-monnier+emacs@HIDDEN> <CAN+1HbqMiqYT93xFQRAFTygWwP8nkDbqQFwQOR309b6+dVt=Pg@HIDDEN> <jwvbjk5ukhn.fsf-monnier+emacs@HIDDEN> In-Reply-To: <jwvbjk5ukhn.fsf-monnier+emacs@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Thu, 11 Dec 2025 10:20:14 -0500 X-Gm-Features: AQt7F2pW9UR-DhN2FIzusxovm8RXwjC2ffX0dU7pZVpNMLWG42TYhLeSP8vlcVo Message-ID: <CAN+1HbqgOBfjEks3zocYCXRYW3PeELTgFrPWyDCt6v_MMh=hVQ@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Stefan Monnier <monnier@HIDDEN> Content-Type: multipart/alternative; boundary="00000000000032b48f0645aeafe1" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --00000000000032b48f0645aeafe1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Dec 11, 2025 at 10:16=E2=80=AFAM Stefan Monnier <monnier@HIDDEN= eal.ca> wrote: > >>>>>> I don't. I just noticed that were talking about the need for the > w32 > >>>>>> code to decide on a frame to use and was wondering if that was > because > >>>>>> the w32 GUI also sometimes displays that info in a "per frame" way= . > >>>>> w32 uses the frame as a concept to get to the Windows window handle > needed > >>>>> for the API calls. > >>>> But what happens if a progress reporter updates the taskbar to 50% v= ia > >>>> frame 1 and later updates it to 70% via frame 2? > >>> Temporary confusion is all. The loop controlling the progress-report= ed > >>> ends, eventually, and back to normal. > >> So, IIUC what will happen is that the 50% will linger on frame 1? > >> How does the "done" step know to clean up with frames' information? > >> Could that same info be used to avoid the "temporary confusion"? > > You mean in the w32 case? > > Yes, the above quoted exchange is all about the case where the taskbar > displays progress "per frame" (as apparently it does under w32). > > > Windows shows multiple progress bars, one per > > top-level window for the application process so the confusion is more > > limited on Windows than the process-wide implementations on mac/dbus. > > My above questions are not related to the question of "confusion" > (i.e. whether all progress reporters should appear in the taskbar or > only some of them). They're related to correctness, instead. > > > How about I reimplement this with global back ends instead that people > can > > enable in their own configurations? > > While my line of questioning may suggest that this is what I want to > happen, I really have no such agenda, I'm just trying to understand > the tradeoffs. > Of course. It's clear that from the programmers' perspective it's easier if all > progress reporters show up in the taskbar (presumably via something like > hooks set globally) since it saves them from having to choose which kind > of progress reporter to use. > > But the fact that you chose the callback-arg option instead suggests > that you think it'll end up in a better user experience. > I think "user" in this case being the end user and not an Elisp programmer will have a better experience if the back ends are global hooks and if they want taskbar progress reports, they configure that. That was Eli's original inclination, I think, and better than my proposal. I'll work on that. I can imagine someone coming back and saying something like I prefer taskbar updates showing only for a subset of progress reporters. Not sure how we'd handle that. --00000000000032b48f0645aeafe1 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Thu, Dec 11, 2025 at 10:16=E2=80=AFAM Stefan Monnier <<a href=3D"mail= to:monnier@HIDDEN">monnier@HIDDEN</a>> wrote:</span>= </div></div><div class=3D"gmail_quote gmail_quote_container"><blockquote cl= ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid= rgb(204,204,204);padding-left:1ex">>>>>>> I don't.= =C2=A0 I just noticed that were talking about the need for the w32<br> >>>>>> code to decide on a frame to use and was wondering= if that was because<br> >>>>>> the w32 GUI also sometimes displays that info in a= "per frame" way.<br> >>>>> w32 uses the frame as a concept to get to the Windows = window handle needed<br> >>>>> for the API calls.<br> >>>> But what happens if a progress reporter updates the taskba= r to 50% via<br> >>>> frame 1 and later updates it to 70% via frame 2?<br> >>> Temporary confusion is all.=C2=A0 The loop controlling the pro= gress-reported<br> >>> ends, eventually, and back to normal.<br> >> So, IIUC what will happen is that the 50% will linger on frame 1?<= br> >> How does the "done" step know to clean up with frames= 9; information?<br> >> Could that same info be used to avoid the "temporary confusio= n"?<br> > You mean in the w32 case?<br> <br> Yes, the above quoted exchange is all about the case where the taskbar<br> displays progress "per frame" (as apparently it does under w32).<= br> <br> > Windows shows multiple progress bars, one per<br> > top-level window for the application process so the confusion is more<= br> > limited on Windows than the process-wide implementations on mac/dbus.<= br> <br> My above questions are not related to the question of "confusion"= <br> (i.e. whether all progress reporters should appear in the taskbar or<br> only some of them).=C2=A0 They're related to correctness, instead.<br> <br> > How about I reimplement this with global back ends instead that people= can<br> > enable in their own configurations?<br> <br> While my line of questioning may suggest that this is what I want to<br> happen, I really have no such agenda, I'm just trying to understand<br> the tradeoffs.<br></blockquote><div><br></div><div class=3D"gmail_default" = style=3D"font-family:monospace">Of course.</div><div class=3D"gmail_default= " style=3D"font-family:monospace"><br></div><blockquote class=3D"gmail_quot= e" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204)= ;padding-left:1ex"> It's clear that from the programmers' perspective it's easier i= f all<br> progress reporters show up in the taskbar (presumably via something like<br= > hooks set globally) since it saves them from having to choose which kind<br= > of progress reporter to use.<br> <br> But the fact that you chose the callback-arg option instead suggests<br> that you think it'll end up in a better user experience.<br></blockquot= e><div><br></div><div class=3D"gmail_default" style=3D"font-family:monospac= e">I think "user" in this case being the end user and not an Elis= p programmer will have a better experience if the back ends are global hook= s and if they want taskbar progress reports, they configure that.=C2=A0 Tha= t was Eli's original inclination, I think, and better than my proposal.= =C2=A0 I'll work on that.=C2=A0 I can imagine someone coming back and s= aying something like I prefer taskbar updates showing only for a subset of = progress reporters.=C2=A0 Not sure how we'd handle that.</div></div></d= iv> --00000000000032b48f0645aeafe1--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 11 Dec 2025 15:16:11 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 11 10:16:11 2025
Received: from localhost ([127.0.0.1]:45792 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vTiOo-0002p2-Af
for submit <at> debbugs.gnu.org; Thu, 11 Dec 2025 10:16:11 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:17571)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vTiOj-0002mh-4V
for 79859 <at> debbugs.gnu.org; Thu, 11 Dec 2025 10:16:07 -0500
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id A433881EA8;
Thu, 11 Dec 2025 10:15:59 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1765466158;
bh=vyltQWnyYPpL8q7cIFKv/XZxYVaKQ+XaX7ovCUJZPHM=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=BcZHzlGwlLFYJAOsP8KA3Jvo14t3QvJ7/2FkvqJJt5n6Iliu5aFEVqe16uOAs/zY4
edoXEiE59SdrltgdcBOEZlNHIXMYpO8P3px17MlAcWs/YzXqFLzXA3w0/rwh5sdqSG
khyTNciKRIbA1oe9zHTJDixAi+2UelhitiKT9ERBVQRqH6qUPOzzMd/5HFq6nbDXtg
pSEt4xUtR7JzXvx/1pBdnQkJ9hML1AEYdVWleZ4wdOraiC4Qt7cBiyGjX/vcH+Ws0+
qmSYG+TaLI5DeEb5uPg7UEwrhGwP4/rikIRic6sIk2ZybKlnRDDzR6OHrP+KIP3yR/
kaSLNtAeurlYQ==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id AEDD480329;
Thu, 11 Dec 2025 10:15:58 -0500 (EST)
Received: from asado (unknown [181.28.45.30])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 07E3A120074;
Thu, 11 Dec 2025 10:15:56 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: =?windows-1252?Q?St=E9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
In-Reply-To: <CAN+1HbqMiqYT93xFQRAFTygWwP8nkDbqQFwQOR309b6+dVt=Pg@HIDDEN>
Message-ID: <jwvbjk5ukhn.fsf-monnier+emacs@HIDDEN>
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<86bjkxhuca.fsf@HIDDEN>
<CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
<87pl932wqd.fsf@HIDDEN>
<CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN>
<86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN>
<CAN+1Hbp3QAxxgcsZ9V6F0xowizkjpjoWErmQV7k86FhnSKhThw@HIDDEN>
<jwvy0n9unif.fsf-monnier+emacs@HIDDEN>
<CAN+1HbqzztGCNeHwT7Jazq=LzYGxRFDBU+qcpG12PQRjWZB4kQ@HIDDEN>
<jwvms3pum68.fsf-monnier+emacs@HIDDEN>
<CAN+1HbqDyxevPn0HQ-ARTnsvgy3e56dP=3X2gYYzNMWOoCuQ+Q@HIDDEN>
<jwvh5txuljp.fsf-monnier+emacs@HIDDEN>
<CAN+1HbqMiqYT93xFQRAFTygWwP8nkDbqQFwQOR309b6+dVt=Pg@HIDDEN>
Date: Thu, 11 Dec 2025 10:15:53 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.211 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>,
michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
>>>>>> I don't. I just noticed that were talking about the need for the w32
>>>>>> code to decide on a frame to use and was wondering if that was because
>>>>>> the w32 GUI also sometimes displays that info in a "per frame" way.
>>>>> w32 uses the frame as a concept to get to the Windows window handle needed
>>>>> for the API calls.
>>>> But what happens if a progress reporter updates the taskbar to 50% via
>>>> frame 1 and later updates it to 70% via frame 2?
>>> Temporary confusion is all. The loop controlling the progress-reported
>>> ends, eventually, and back to normal.
>> So, IIUC what will happen is that the 50% will linger on frame 1?
>> How does the "done" step know to clean up with frames' information?
>> Could that same info be used to avoid the "temporary confusion"?
> You mean in the w32 case?
Yes, the above quoted exchange is all about the case where the taskbar
displays progress "per frame" (as apparently it does under w32).
> Windows shows multiple progress bars, one per
> top-level window for the application process so the confusion is more
> limited on Windows than the process-wide implementations on mac/dbus.
My above questions are not related to the question of "confusion"
(i.e. whether all progress reporters should appear in the taskbar or
only some of them). They're related to correctness, instead.
> How about I reimplement this with global back ends instead that people can
> enable in their own configurations?
While my line of questioning may suggest that this is what I want to
happen, I really have no such agenda, I'm just trying to understand
the tradeoffs.
It's clear that from the programmers' perspective it's easier if all
progress reporters show up in the taskbar (presumably via something like
hooks set globally) since it saves them from having to choose which kind
of progress reporter to use.
But the fact that you chose the callback-arg option instead suggests
that you think it'll end up in a better user experience.
Stefan
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 11 Dec 2025 15:01:10 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 11 10:01:10 2025 Received: from localhost ([127.0.0.1]:45661 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vTiAH-0001OV-Ur for submit <at> debbugs.gnu.org; Thu, 11 Dec 2025 10:01:10 -0500 Received: from mail-ua1-x92a.google.com ([2607:f8b0:4864:20::92a]:61501) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vTiAE-0001No-Vy for 79859 <at> debbugs.gnu.org; Thu, 11 Dec 2025 10:01:08 -0500 Received: by mail-ua1-x92a.google.com with SMTP id a1e0cc1a2514c-93f1752ca82so106029241.2 for <79859 <at> debbugs.gnu.org>; Thu, 11 Dec 2025 07:01:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765465261; x=1766070061; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=HQEU+UN4vqHxUtbd4CK9H7Pim9V0UEW90uX1kWmUxYo=; b=UVfWaO1NgIqXgo4lkKgCnrAngOcf6Mc90AaJHu/8UrbmFqKd5RY4OOxLIU09kEj7wY M5ehbp8Gp8vPwb02lTnhWwrrc6vnJ1M85szCRAF3EMN9J6vzjHBabBsKOvmtuw13qVnT rIXnTRs7+NjEdIqPdKfKCbjGirni2riTBXuqjIAa+gGWAnWRYckbGtpEr8j6bSgUMMgB mTT1XRfObhgxWEW0DCB6WXdKgXWzQg9hFNjLgQNmGuXDZOjjGKgmWV9tQJIUg7Gz6s+q c6WQ9h+X3P3TsgTK0x/sBTvWYPhczksLH0+f1hBzL1P9FhmLpitZpgtI5+FxH6k7ToR9 +rTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765465261; x=1766070061; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=HQEU+UN4vqHxUtbd4CK9H7Pim9V0UEW90uX1kWmUxYo=; b=FLLEU80vbBEPyVEvnuV1nB7Gowxhmh8kLGff2U0JXNYHwTE5KFDkygBOHZHerEo+y+ XBoN+WVuCKLKJ/pCitSdAid11zeBfMpG+uVDL4IRSBaUHATyFwUdCWmwRz5SERnXIcT3 RV+ru6UHpfMX3mvXHZfjDTcHMCnIM1vrtCpemcPh3+xcdlc5KtgC9HulekRLBnzXiGEl nk2nKWuITd+6z0xkIMHvpvdkBPNlQm168NY3uh8iDu+6x7gym5HTxn/wVk8PeZfeaa1Y Oki/ABJCo9jkq3mOguRjjCycwuk6oXXfqDhMVimgpAi5HvP8khhVB2RFyDRRsDyEBDrT 48QQ== X-Forwarded-Encrypted: i=1; AJvYcCWRgM/QH54KrsYy85OEBXIb2w6od3AAfw0WadHWL4UTP8DXwL61ih9FXO2j6vH29EpjRCMRMA==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzTBjzlnO5OYZzGvMImrsnOo4XLHaPIe02h3rT8DBboEGXpYW1A sFRtpuwt4bISZuOVoDMuQ0d78A6fQ2kGe7k6Zb4vbecYAMA3ubyffypOfxzdBcOntA/oTM2ejqh kKnfBGNMGLHjQq3jAUFcGey9Xf6zY85A= X-Gm-Gg: AY/fxX7/hOfxF/uZcmAFVR0GtajN4F0308gcZWBmCnWGP+wfENjkfdw7w/tx/xGqm4X ds4mCaooJ/XoxDLaXz679DcQn8Ic/yTLJqsw0DgkMn3rKdpQWp/LMmd6pcHWH1Cx5N0TlQQCtxu fWB5UejGRQ51X3fspcbrTrzfJljy6QGTxpIKzEc90N/VkHRrpIDzwgww+wMCJgINj7gGWRXNyYT fgYsr+tlxojx0KTONQYb1qPmpbmuum0qqy8Z7MBpyuU+pVjXLnYkKWvzYaiO9nZZmrK1bk= X-Google-Smtp-Source: AGHT+IH3D41qxrPGQudnlX7coa2MSsCxbiGG0HabuFJFjB/aJe7L66G4gzLZdKCJXWUFpofprKj+19sGBio8epYRMZI= X-Received: by 2002:a05:6102:dcb:b0:5df:aff3:c433 with SMTP id ada2fe7eead31-5e57182e820mr2346680137.16.1765465259470; Thu, 11 Dec 2025 07:00:59 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <CAN+1Hbp3QAxxgcsZ9V6F0xowizkjpjoWErmQV7k86FhnSKhThw@HIDDEN> <jwvy0n9unif.fsf-monnier+emacs@HIDDEN> <CAN+1HbqzztGCNeHwT7Jazq=LzYGxRFDBU+qcpG12PQRjWZB4kQ@HIDDEN> <jwvms3pum68.fsf-monnier+emacs@HIDDEN> <CAN+1HbqDyxevPn0HQ-ARTnsvgy3e56dP=3X2gYYzNMWOoCuQ+Q@HIDDEN> <jwvh5txuljp.fsf-monnier+emacs@HIDDEN> In-Reply-To: <jwvh5txuljp.fsf-monnier+emacs@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Thu, 11 Dec 2025 10:00:46 -0500 X-Gm-Features: AQt7F2pIRfayHDK2Y5uWBxkfOWUY3pQ1T50L6jHI6LtTloHgZsEAZVc48PpOA1s Message-ID: <CAN+1HbqMiqYT93xFQRAFTygWwP8nkDbqQFwQOR309b6+dVt=Pg@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Stefan Monnier <monnier@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000a7af120645ae6937" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --000000000000a7af120645ae6937 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Dec 11, 2025 at 9:55=E2=80=AFAM Stefan Monnier <monnier@HIDDEN= al.ca> wrote: > >> >> > As the taskbar can host only a single progress reporter, I doubt = it > >> >> > makes sense to have that functionality always available as > competing > >> >> > live progress reporters will bounce the taskbar representation al= l > >> >> > over the place. > >> >> Doesn't that same problem affect equally the usual reports in the > >> >> echo area? Or is the difference that the taskbar thingy is shared > among > >> >> several Emacs instances? > >> > It's generally process-wide not shared among processes. > >> IOW, it's the same as the echo area? Then having two active progress > >> reporters at the same time seems no worse for the taskbar than for the > >> usual reporting. > > Wondering what you think about the above. > > IIUC avoiding confusion in the presence of multiple active progress > reporters is the main motivation behind changing the API so the callers > needs to choose whether they want the progress report only in the > echo-area or both in the echo-area and in the taskbar. > > I don't have a clear opinion about it, but AFAICT the confusion is the > same for the taskbar as for the echo-area, so it seems like an > odd motivation. Unless maybe the difference in the way the progress is > represented visually explains why you think one case of confusion is > more serious than the other? > > As someone who'll only be faced with the programmer side of the > question, I must say I don't know how I could make such a choice. > What would be a typical case of a progress reporter that should better > not appear in the taskbar? > > > Windows shows each of its top-level windows as it's own entry on the > > taskbar in a "group" so each w32 frame can have its own. On macOS and > > Linux/D-Bus, it's process-wide. > > IIUC macOS tries to make it difficult to have two instances of Emacs > running at the same time, and it's technically "per application" rather > than > "per instance", except you generally can't see the difference anyway. > > I'm not familiar enough with D-Bus to know if it's "per instance" or > "per application", but indeed it's not "per frame". > > >>> I don't. I just noticed that were talking about the need for the w32 > >> >> code to decide on a frame to use and was wondering if that was > because > >> >> the w32 GUI also sometimes displays that info in a "per frame" way. > >> > w32 uses the frame as a concept to get to the Windows window handle > needed > >> > for the API calls. > >> But what happens if a progress reporter updates the taskbar to 50% via > >> frame 1 and later updates it to 70% via frame 2? > > Temporary confusion is all. The loop controlling the progress-reported > > ends, eventually, and back to normal. > > So, IIUC what will happen is that the 50% will linger on frame 1? > How does the "done" step know to clean up with frames' information? > Could that same info be used to avoid the "temporary confusion"? > You mean in the w32 case? Windows shows multiple progress bars, one per top-level window for the application process so the confusion is more limited on Windows than the process-wide implementations on mac/dbus. How about I reimplement this with global back ends instead that people can enable in their own configurations? If they choose to implement taskbar visuals, they'll register that on the global hook, and same for optional frame updater if you want to write that for your case. I can abstract the existing echo area progress reports as hooks also or we can just leave them in place and call the hooks after the updates (that's how the current callback implementation works--first the echo area, then callback). --000000000000a7af120645ae6937 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Thu, Dec 11, 2025 at 9:55=E2=80=AFAM Stefan Monnier <<a href=3D"mailt= o:monnier@HIDDEN">monnier@HIDDEN</a>> wrote:</span><= /div></div><div class=3D"gmail_quote gmail_quote_container"><blockquote cla= ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid = rgb(204,204,204);padding-left:1ex">>> >> > As the taskbar ca= n host only a single progress reporter, I doubt it<br> >> >> > makes sense to have that functionality always availa= ble as competing<br> >> >> > live progress reporters will bounce the taskbar repr= esentation all<br> >> >> > over the place.<br> >> >> Doesn't that same problem affect equally the usual re= ports in the<br> >> >> echo area?=C2=A0 Or is the difference that the taskbar th= ingy is shared among<br> >> >> several Emacs instances?<br> >> > It's generally process-wide not shared among processes.<b= r> >> IOW, it's the same as the echo area?=C2=A0 Then having two act= ive progress<br> >> reporters at the same time seems no worse for the taskbar than for= the<br> >> usual reporting.<br> <br> Wondering what you think about the above.<br> <br> IIUC avoiding confusion in the presence of multiple active progress<br> reporters is the main motivation behind changing the API so the callers<br> needs to choose whether they want the progress report only in the<br> echo-area or both in the echo-area and in the taskbar.<br> <br> I don't have a clear opinion about it, but AFAICT the confusion is the<= br> same for the taskbar as for the echo-area, so it seems like an<br> odd motivation.=C2=A0 Unless maybe the difference in the way the progress i= s<br> represented visually explains why you think one case of confusion is<br> more serious than the other?<br> <br> As someone who'll only be faced with the programmer side of the<br> question, I must say I don't know how I could make such a choice.<br> What would be a typical case of a progress reporter that should better<br> not appear in the taskbar?<br> <br> > Windows shows each of its top-level windows as it's own entry on t= he<br> > taskbar in a "group" so each w32 frame can have its own.=C2= =A0 On macOS and<br> > Linux/D-Bus, it's process-wide.<br> <br> IIUC macOS tries to make it difficult to have two instances of Emacs<br> running at the same time, and it's technically "per application&qu= ot; rather than<br> "per instance", except you generally can't see the difference= anyway.<br> <br> I'm not familiar enough with D-Bus to know if it's "per instan= ce" or<br> "per application", but indeed it's not "per frame".= <br> <br> >>> I don't.=C2=A0 I just noticed that were talking about the = need for the w32<br> >> >> code to decide on a frame to use and was wondering if tha= t was because<br> >> >> the w32 GUI also sometimes displays that info in a "= per frame" way.<br> >> > w32 uses the frame as a concept to get to the Windows window = handle needed<br> >> > for the API calls.<br> >> But what happens if a progress reporter updates the taskbar to 50%= via<br> >> frame 1 and later updates it to 70% via frame 2?<br> > Temporary confusion is all.=C2=A0 The loop controlling the progress-re= ported<br> > ends, eventually, and back to normal.<br> <br> So, IIUC what will happen is that the 50% will linger on frame 1?<br> How does the "done" step know to clean up with frames' inform= ation?<br> Could that same info be used to avoid the "temporary confusion"?<= br></blockquote><div><br></div><div class=3D"gmail_default" style=3D"font-f= amily:monospace">You mean in the w32 case? Windows shows multiple progress = bars, one per top-level window for the application process so the confusion= is more limited on Windows than the process-wide implementations on mac/db= us.</div><div class=3D"gmail_default" style=3D"font-family:monospace"><br><= /div><div class=3D"gmail_default" style=3D"font-family:monospace">How about= I reimplement this with global back ends instead that people can enable in= their own configurations?=C2=A0 If they choose to implement taskbar visual= s, they'll register that on the global hook, and same for optional fram= e updater if you want to write that for your case.=C2=A0 I can abstract the= existing echo area progress reports as hooks also or we can just leave the= m in place and call the hooks after the updates (that's how the current= callback implementation works--first the echo area, then callback).</div><= /div></div> --000000000000a7af120645ae6937--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 11 Dec 2025 14:55:07 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 11 09:55:07 2025
Received: from localhost ([127.0.0.1]:45155 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vTi4Q-0000ua-Fw
for submit <at> debbugs.gnu.org; Thu, 11 Dec 2025 09:55:07 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:54705)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vTi4P-0000rs-3Q
for 79859 <at> debbugs.gnu.org; Thu, 11 Dec 2025 09:55:05 -0500
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 4FDD2817DA;
Thu, 11 Dec 2025 09:54:59 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1765464898;
bh=JqdS6xK2x0w25dxCuT7W94Jpm+cu6K7ZQrGQHdj5Kx8=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=axjH7PEB/QQP/CxXD7KtLKQwStDAsh2yU1l3DBJuqSaVBGE+dFjrm5yVh+EW2zYn6
FiNX5g9Lw5DUgTXsjEPi+/+Q+rufbFpcGqVc4DcEBw+vr3OBiYBqQIEmUAsod8XEqT
KSY8Vi163Vj/JYjVKgzQKEkKDCECU0YY2IQRmuEQWZxWj2Pzi1Ur4PKU6e8H1kc5uu
sxo4R95qFvHDeNVN94EXhNuaqnn1g/eCSqHijG/AkoHFaqruFzXJnFhr9T8wWAzgIC
9u9opzrq4CRGasExPcu41OFyi7qIJLqVnvAX1PT8J2TS/T9Fv+4z/2hIjArffKBy9s
Je1MeAl0+Ta5w==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 570C780400;
Thu, 11 Dec 2025 09:54:58 -0500 (EST)
Received: from asado (unknown [181.28.45.30])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id A6F1C12033F;
Thu, 11 Dec 2025 09:54:56 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: =?windows-1252?Q?St=E9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
In-Reply-To: <CAN+1HbqDyxevPn0HQ-ARTnsvgy3e56dP=3X2gYYzNMWOoCuQ+Q@HIDDEN>
Message-ID: <jwvh5txuljp.fsf-monnier+emacs@HIDDEN>
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<86bjkxhuca.fsf@HIDDEN>
<CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
<87pl932wqd.fsf@HIDDEN>
<CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN>
<86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN>
<CAN+1Hbp3QAxxgcsZ9V6F0xowizkjpjoWErmQV7k86FhnSKhThw@HIDDEN>
<jwvy0n9unif.fsf-monnier+emacs@HIDDEN>
<CAN+1HbqzztGCNeHwT7Jazq=LzYGxRFDBU+qcpG12PQRjWZB4kQ@HIDDEN>
<jwvms3pum68.fsf-monnier+emacs@HIDDEN>
<CAN+1HbqDyxevPn0HQ-ARTnsvgy3e56dP=3X2gYYzNMWOoCuQ+Q@HIDDEN>
Date: Thu, 11 Dec 2025 09:54:52 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.212 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>,
michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
>> >> > As the taskbar can host only a single progress reporter, I doubt it
>> >> > makes sense to have that functionality always available as competing
>> >> > live progress reporters will bounce the taskbar representation all
>> >> > over the place.
>> >> Doesn't that same problem affect equally the usual reports in the
>> >> echo area? Or is the difference that the taskbar thingy is shared among
>> >> several Emacs instances?
>> > It's generally process-wide not shared among processes.
>> IOW, it's the same as the echo area? Then having two active progress
>> reporters at the same time seems no worse for the taskbar than for the
>> usual reporting.
Wondering what you think about the above.
IIUC avoiding confusion in the presence of multiple active progress
reporters is the main motivation behind changing the API so the callers
needs to choose whether they want the progress report only in the
echo-area or both in the echo-area and in the taskbar.
I don't have a clear opinion about it, but AFAICT the confusion is the
same for the taskbar as for the echo-area, so it seems like an
odd motivation. Unless maybe the difference in the way the progress is
represented visually explains why you think one case of confusion is
more serious than the other?
As someone who'll only be faced with the programmer side of the
question, I must say I don't know how I could make such a choice.
What would be a typical case of a progress reporter that should better
not appear in the taskbar?
> Windows shows each of its top-level windows as it's own entry on the
> taskbar in a "group" so each w32 frame can have its own. On macOS and
> Linux/D-Bus, it's process-wide.
IIUC macOS tries to make it difficult to have two instances of Emacs
running at the same time, and it's technically "per application" rather than
"per instance", except you generally can't see the difference anyway.
I'm not familiar enough with D-Bus to know if it's "per instance" or
"per application", but indeed it's not "per frame".
>>> I don't. I just noticed that were talking about the need for the w32
>> >> code to decide on a frame to use and was wondering if that was because
>> >> the w32 GUI also sometimes displays that info in a "per frame" way.
>> > w32 uses the frame as a concept to get to the Windows window handle needed
>> > for the API calls.
>> But what happens if a progress reporter updates the taskbar to 50% via
>> frame 1 and later updates it to 70% via frame 2?
> Temporary confusion is all. The loop controlling the progress-reported
> ends, eventually, and back to normal.
So, IIUC what will happen is that the 50% will linger on frame 1?
How does the "done" step know to clean up with frames' information?
Could that same info be used to avoid the "temporary confusion"?
Stefan
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 11 Dec 2025 14:37:50 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 11 09:37:49 2025 Received: from localhost ([127.0.0.1]:44953 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vThng-0005bl-T4 for submit <at> debbugs.gnu.org; Thu, 11 Dec 2025 09:37:49 -0500 Received: from mail-ua1-x930.google.com ([2607:f8b0:4864:20::930]:45252) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vThnb-0005aB-0E for 79859 <at> debbugs.gnu.org; Thu, 11 Dec 2025 09:37:46 -0500 Received: by mail-ua1-x930.google.com with SMTP id a1e0cc1a2514c-93f63d46f34so54113241.2 for <79859 <at> debbugs.gnu.org>; Thu, 11 Dec 2025 06:37:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765463857; x=1766068657; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=tSuzIPX388QZFPdm5dr/wy850H4tD1dympd0KBdwh3A=; b=mY5/ps/TmEcoxaded74C23Hj9WyW/Bg3xb6mi1rf4x0UUPD8MJOOQxFXWtzVrpcr+q GU9c1qt9jT4aVVV4i69i8caTZ0wJrkYpB1xzNOs13j5BXQWYcC88cHAH4VmTEl0ZWJrD zkoOGRgSYarvNGN5Iqmvn1G5IBxBRpyrhqOvpv08oqZ2woF37QkaIjmlBZd/yD4QW4pu 0DheD5iAy62t6vhJ9y2xw8LbnErcIgQ7xYxJrT4rq6hWL7tXqrASKqzXgEvv5WNu8R04 6pF73Fd8W5Gkq1juew5ojCNEHmFGGWSgzpR2CLnStMInivSkODzkl0lkZa9KhodxoU85 KjNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765463857; x=1766068657; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=tSuzIPX388QZFPdm5dr/wy850H4tD1dympd0KBdwh3A=; b=NQYAwT2NJYva8clGAev5VwGNsl3EKtRFSH/dxIeCZYTYyw68LDpq7I9alHkMeXBwcD vmIVKqNNDF9nzp9STx+/sqIEwdKYTplpTUQ/IAw3IMNiEJhduP0xvZunVqawYF3Hz4y2 SYO0revYgWXsPaMLNr4fcXz6IjAif5aWUEOJkUN3IyNwEkfFK2/o1B3S8ZGdai1L+cy5 RrKbrzaanTQ3Jqwta3krTWogegdwx/1z1/wxmzCB6RaVKFlymzy84F8Mzb3nB5F0xfBg R+g/2pouoj1WdaXI5Q8egrLgGKhLSDHlRnpHD6nt9OMCVVwKQ90CM0EMjc+YSz9pKaOe EABw== X-Forwarded-Encrypted: i=1; AJvYcCWNJHmc16PAXVyouuufjlfUaOiA8xvTFbcqfioRyTYL37D9uFZoLrw+p1lSmBx7UQNVoC9FuA==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yws8MYHOIyF0HAqEuWAVtxUe4oeMfX5tg6pyJzvx+ijQwn/r9to 8vBxD6vlSSoOdah9hJp9ACH+p8raXmmk0QZTPcPeu4TKzLlHJz9AxKYgI/FXu2123RoC8KW1YE9 9RZfaxpZ5EXzjueeMfGU6h1RjOiwNw5o= X-Gm-Gg: AY/fxX7k4gXeVbjLvOfzzXcXuOuKHsrn9jT0jCzmOosdcjKKwpqwS2GpAEMBWj3J0zK cj2oApGE12sb+zO8UgymNKaftRenYYEX/phEDF3MdgYPjKWJMLLhkk+Dpnh2xd3f2XBSRtay38I n+UmlC3WMMuxYknP7PSgb9pQIoSHBEGLBHfK5c8maFWnQhzM2BTUOEtZIif4Wqc5ZhLibr5WRaD zGDO5YT2k0OYepN3G4Ld9foFM4kT7pYbezr4SJ7oge7BRc7IwKJnw9oOYl/fDkmaj9Nh+s= X-Google-Smtp-Source: AGHT+IHMNcwcYAAKmqgMljUgvKoo0UK7X1xT1nwYAFNMfmqBNQBfP1apFTZrkGKnqW47x53rMqRzCvaXGbCGmB2PUNY= X-Received: by 2002:a05:6102:f0b:b0:5db:fce3:af8b with SMTP id ada2fe7eead31-5e5718300a6mr2091458137.12.1765463857122; Thu, 11 Dec 2025 06:37:37 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <CAN+1Hbp3QAxxgcsZ9V6F0xowizkjpjoWErmQV7k86FhnSKhThw@HIDDEN> <jwvy0n9unif.fsf-monnier+emacs@HIDDEN> <CAN+1HbqzztGCNeHwT7Jazq=LzYGxRFDBU+qcpG12PQRjWZB4kQ@HIDDEN> <jwvms3pum68.fsf-monnier+emacs@HIDDEN> In-Reply-To: <jwvms3pum68.fsf-monnier+emacs@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Thu, 11 Dec 2025 09:37:25 -0500 X-Gm-Features: AQt7F2q4uzcgu-3NSqjjnB1pVQPYBhWi62P7qCFvhRHcXYOWZMVR2jYcZ7Y8m_k Message-ID: <CAN+1HbqDyxevPn0HQ-ARTnsvgy3e56dP=3X2gYYzNMWOoCuQ+Q@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Stefan Monnier <monnier@HIDDEN> Content-Type: multipart/alternative; boundary="0000000000001152080645ae163b" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --0000000000001152080645ae163b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Dec 11, 2025 at 9:35=E2=80=AFAM Stefan Monnier <monnier@HIDDEN= al.ca> wrote: > >> > As the taskbar can host only a single progress reporter, I doubt it > >> > makes sense to have that functionality always available as competing > >> > live progress reporters will bounce the taskbar representation all > >> > over the place. > >> Doesn't that same problem affect equally the usual reports in the > >> echo area? Or is the difference that the taskbar thingy is shared amo= ng > >> several Emacs instances? > > It's generally process-wide not shared among processes. > > IOw, it's the same as the echo area? Then having two active progress > reporters at the same time seems no worse for the taskbar than for the > usual reporting. > > > In the w32 case, it's process- and "window-" specific (window in the > > Windows sense). > > You mean the two Emacs frames from the same process can display > different progress info the taskbar? > Windows shows each of its top-level windows as it's own entry on the taskbar in a "group" so each w32 frame can have its own. On macOS and Linux/D-Bus, it's process-wide. >> I don't. I just noticed that were talking about the need for the w32 > >> code to decide on a frame to use and was wondering if that was because > >> the w32 GUI also sometimes displays that info in a "per frame" way. > > w32 uses the frame as a concept to get to the Windows window handle > needed > > for the API calls. > > But what happens if a progress reporter updates the taskbar to 50% via > frame 1 and later updates it to 70% via frame 2? > Temporary confusion is all. The loop controlling the progress-reported ends, eventually, and back to normal. --0000000000001152080645ae163b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Thu, Dec 11, 2025 at 9:35=E2=80=AFAM Stefan Monnier <<a href=3D"mailt= o:monnier@HIDDEN">monnier@HIDDEN</a>> wrote:</span><= /div></div><div class=3D"gmail_quote gmail_quote_container"><blockquote cla= ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid = rgb(204,204,204);padding-left:1ex">>> > As the taskbar can host on= ly a single progress reporter, I doubt it<br> >> > makes sense to have that functionality always available as co= mpeting<br> >> > live progress reporters will bounce the taskbar representatio= n all<br> >> > over the place.<br> >> Doesn't that same problem affect equally the usual reports in = the<br> >> echo area?=C2=A0 Or is the difference that the taskbar thingy is s= hared among<br> >> several Emacs instances?<br> > It's generally process-wide not shared among processes. <br> <br> IOw, it's the same as the echo area?=C2=A0 Then having two active progr= ess<br> reporters at the same time seems no worse for the taskbar than for the<br> usual reporting.<br> <br> > In the w32 case, it's process- and "window-" specific (w= indow in the<br> > Windows sense).<br> <br> You mean the two Emacs frames from the same process can display<br> different progress info the taskbar?<br></blockquote><div><br></div><div cl= ass=3D"gmail_default" style=3D"font-family:monospace">Windows shows each of= its top-level windows as it's own entry on the taskbar in a "grou= p" so each w32 frame can have its own.=C2=A0 On macOS and Linux/D-Bus,= it's process-wide.</div><div class=3D"gmail_default" style=3D"font-fam= ily:monospace"><br></div><blockquote class=3D"gmail_quote" style=3D"margin:= 0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> >> I don't.=C2=A0 I just noticed that were talking about the need= for the w32<br> >> code to decide on a frame to use and was wondering if that was bec= ause<br> >> the w32 GUI also sometimes displays that info in a "per frame= " way.<br> > w32 uses the frame as a concept to get to the Windows window handle ne= eded<br> > for the API calls.<br> <br> But what happens if a progress reporter updates the taskbar to 50% via<br> frame 1 and later updates it to 70% via frame 2?<br></blockquote><div><br><= /div><div class=3D"gmail_default" style=3D"font-family:monospace">Temporary= confusion is all.=C2=A0 The loop controlling the progress-reported ends, e= ventually, and back to normal.</div></div></div> --0000000000001152080645ae163b--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 11 Dec 2025 14:35:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 11 09:35:29 2025
Received: from localhost ([127.0.0.1]:44901 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vThlR-0005T9-5Y
for submit <at> debbugs.gnu.org; Thu, 11 Dec 2025 09:35:29 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:63935)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vThlO-0005Sn-UM
for 79859 <at> debbugs.gnu.org; Thu, 11 Dec 2025 09:35:27 -0500
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 3C5A781C8D;
Thu, 11 Dec 2025 09:35:21 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1765463720;
bh=eDiIxrfuQEaoqY/DFi6hP55/Wkx1sOjlpbymmVSUBFk=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=nldWYFM0HY5ajGT5ereL+OtaFB3G5SlAYXEH1yHYz4dteyS6xeB5MU4tKHlJwXeNN
l1M22HhzM5Bufy8JIILxhEYooYj3cIZLkKV9fyBn0MmHQV++iGSa73qevLKiOCrU58
rXnskzYfNNH2yvXsSKd4HkLGczt79BqKsAPCr2suV79/4ugH3iQrg00eZ5FpZQxIKu
bHPSQiMBVBk/N0WzbVJ/RJ0w+QPl1FbPotabLATqAKsue6c1Go3FLPR/lbEjui+oEN
G9F2wNjdHG0if2iC/DKsVASW6hEAE/Y6ItTi07ruT+xu1YW3BsM7uIj6K8kJ5yDHwh
KHOXzLTnQI0xw==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 6583C81C1B;
Thu, 11 Dec 2025 09:35:20 -0500 (EST)
Received: from asado (unknown [181.28.45.30])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id B8F2D120234;
Thu, 11 Dec 2025 09:35:18 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: =?windows-1252?Q?St=E9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
In-Reply-To: <CAN+1HbqzztGCNeHwT7Jazq=LzYGxRFDBU+qcpG12PQRjWZB4kQ@HIDDEN>
Message-ID: <jwvms3pum68.fsf-monnier+emacs@HIDDEN>
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<86bjkxhuca.fsf@HIDDEN>
<CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
<87pl932wqd.fsf@HIDDEN>
<CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN>
<86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN>
<CAN+1Hbp3QAxxgcsZ9V6F0xowizkjpjoWErmQV7k86FhnSKhThw@HIDDEN>
<jwvy0n9unif.fsf-monnier+emacs@HIDDEN>
<CAN+1HbqzztGCNeHwT7Jazq=LzYGxRFDBU+qcpG12PQRjWZB4kQ@HIDDEN>
Date: Thu, 11 Dec 2025 09:35:15 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.213 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>,
michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
>> > As the taskbar can host only a single progress reporter, I doubt it
>> > makes sense to have that functionality always available as competing
>> > live progress reporters will bounce the taskbar representation all
>> > over the place.
>> Doesn't that same problem affect equally the usual reports in the
>> echo area? Or is the difference that the taskbar thingy is shared among
>> several Emacs instances?
> It's generally process-wide not shared among processes.
IOw, it's the same as the echo area? Then having two active progress
reporters at the same time seems no worse for the taskbar than for the
usual reporting.
> In the w32 case, it's process- and "window-" specific (window in the
> Windows sense).
You mean the two Emacs frames from the same process can display
different progress info the taskbar?
>> I don't. I just noticed that were talking about the need for the w32
>> code to decide on a frame to use and was wondering if that was because
>> the w32 GUI also sometimes displays that info in a "per frame" way.
> w32 uses the frame as a concept to get to the Windows window handle needed
> for the API calls.
But what happens if a progress reporter updates the taskbar to 50% via
frame 1 and later updates it to 70% via frame 2?
Stefan
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 11 Dec 2025 14:15:01 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 11 09:15:00 2025 Received: from localhost ([127.0.0.1]:44538 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vThRZ-0002xK-Cu for submit <at> debbugs.gnu.org; Thu, 11 Dec 2025 09:15:00 -0500 Received: from mail-vs1-xe30.google.com ([2607:f8b0:4864:20::e30]:45239) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vThRU-0002vN-FF for 79859 <at> debbugs.gnu.org; Thu, 11 Dec 2025 09:14:54 -0500 Received: by mail-vs1-xe30.google.com with SMTP id ada2fe7eead31-5dd6fbe50c0so47852137.2 for <79859 <at> debbugs.gnu.org>; Thu, 11 Dec 2025 06:14:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765462486; x=1766067286; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=KQTx8ZKkxuO187odfpuzjCbYvrXYAtibeIwxgzoA6Lc=; b=NiMWW2dUFB1kJxHEBn4BV2m30pfZ5y1WCwKAcXJ3IBUQcKKbO232epTSCt9SnEWRWq rv67qFyTBN0leXJeUSLhfYccMgwyvFamdN/pHPk1AFmKyY0WUImmqBQMMiUAieK07dy0 /Oe1J1v2wG8xyoHH1E6bY+2Mg0ryVfhexnwxCGF4dmqPAx+d11cDspC1F40V5l3BFNjI WoDdOTiIPH9JV/xniVa65MqJpSHBfkDaM34Oj2RKzVpLQDKyfrW/dWRZa3qpntlUBWdP LqY17gLwasxV7xS6gapwoCFBNgx29ZD+EjDQ1YvAZHv6iX06fLUZpdAb5EtTG63NbBN6 ullw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765462486; x=1766067286; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=KQTx8ZKkxuO187odfpuzjCbYvrXYAtibeIwxgzoA6Lc=; b=MHXd1prR2YzYwZxklbgKB+lj3u9wCtwmRt9RR+vJFm9tbI0eFUNG4sXhX33EU7/xPG Suy/9V+v1jG1THadVCbJyLwRVGlmyCz2ch7D1K51nJppavRv/KLwB+kNZixgaiq5+v5Y llOEjEy9UEuUhBMyBaMEnlATXlMiomQchDxNBmR7SGzEwvRXMMQ7J9R9bFUV5Gr0cp8r I4KC6FpV2t6FnHTyaa/L/6dMwsfynTDhwwqQdedMwO/d6/mybMB5jSSZkyes6irhFUcM eXZDRrSBX9abrDYfAQQxado5sacl0UD4m5kG3NGRPdjqToFMoN0bqi7+zSYlHsv/+WA1 tTWQ== X-Forwarded-Encrypted: i=1; AJvYcCWaQsNUb2K8BnhpYo0n9k/a+wq6JJJmiOqMy7VHvuefioh/Igk0B27vRBLgnDWqcSrsmEss3A==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yz8YYbVwF1SP6XWCZjFR/ZIiFCyAg83Z7qW/S5rLGjklcg+ww/7 AV9wKrNar1O8B8Uv6howt04VRH0Y8tv4tV6mqzLayoXyuZulDbNh1VAKIAwNtyAGlE9iQxs8SEa 2jx5Pbl27qkn0kZgyBwLlZuEO6X4Ohmk= X-Gm-Gg: AY/fxX4KkNyh+35UNP1OeCqEZjG5H445XEzP7/8PaWhM5gquzMc5f6ggB0Kq72KTIHT cJK5f+/76r3I4TdiTJy63fmnCSlubDtUFZx2eYfnW0BZtful0rtGMOTA2lCM4L1yMgXvVC3IcNp X5LqTybwQhvwusj0T5ed8KgjGEq+vwDo+/xf05aznMvXGrrKGAj+GgUaViSehx8OZG7+a+V3jgt d363reXzw+w9GcwpZkHrGNWMXfj+W3o0RipnUj9MjSwofa0bRlmQUrJ1cq4UOGlTSGs6ih+wlPL kGFn+A== X-Google-Smtp-Source: AGHT+IH/KAQTNQBk3mZ+IhsKdzv1wCTDs/rYGl3pERSeiRAh/qTwtzZu0pKMOGhSX/R4eWd/8hAhNmInT05Cg9RXnO0= X-Received: by 2002:a05:6102:50ac:b0:5db:a6c1:5b13 with SMTP id ada2fe7eead31-5e571dd7173mr2307271137.33.1765462486266; Thu, 11 Dec 2025 06:14:46 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <CAN+1Hbp3QAxxgcsZ9V6F0xowizkjpjoWErmQV7k86FhnSKhThw@HIDDEN> <jwvy0n9unif.fsf-monnier+emacs@HIDDEN> In-Reply-To: <jwvy0n9unif.fsf-monnier+emacs@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Thu, 11 Dec 2025 09:14:33 -0500 X-Gm-Features: AQt7F2rMflthEN-6uprmCvhWouawZYhdxGIZwiboVhbBYcNDX4--zgtVfHKLShY Message-ID: <CAN+1HbqzztGCNeHwT7Jazq=LzYGxRFDBU+qcpG12PQRjWZB4kQ@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Stefan Monnier <monnier@HIDDEN> Content-Type: multipart/alternative; boundary="0000000000005bb65b0645adc4c5" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --0000000000005bb65b0645adc4c5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Dec 11, 2025 at 9:05=E2=80=AFAM Stefan Monnier <monnier@HIDDEN= al.ca> wrote: > > As the taskbar can host only a single progress reporter, I doubt it > > makes sense to have that functionality always available as competing > > live progress reporters will bounce the taskbar representation all > > over the place. > > Doesn't that same problem affect equally the usual reports in the > echo area? Or is the difference that the taskbar thingy is shared among > several Emacs instances? > It's generally process-wide not shared among processes. In the w32 case, it's process- and "window-" specific (window in the Windows sense). >>> I changed the w32 implementation for the taskbar features to be > >>> enabled relative to the current frame at the time rather than have > >>> singletons so I've removed the static variables. > >> I wonder if this relates to my comment in my other message about the > >> fact that in my setup the closest place to put such info would be in t= he > >> frame titles (I don't have GUI elements associated with "all Emacs > >> frames" or "all the frames of an Emacs session": instead > >> each frame gets its own GUI element). > > > > We could add a progress-reporter helper that targets frame titles if yo= u > > think that's broadly worthy. > > I don't. I just noticed that were talking about the need for the w32 > code to decide on a frame to use and was wondering if that was because > the w32 GUI also sometimes displays that info in a "per frame" way. > w32 uses the frame as a conceit to get to the Windows window handle needed for the API calls. --0000000000005bb65b0645adc4c5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Thu, Dec 11, 2025 at 9:05=E2=80=AFAM Stefan Monnier <<a href=3D"mailt= o:monnier@HIDDEN">monnier@HIDDEN</a>> wrote:</span><= /div></div><div class=3D"gmail_quote gmail_quote_container"><blockquote cla= ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid = rgb(204,204,204);padding-left:1ex">> As the taskbar can host only a sing= le progress reporter, I doubt it<br> > makes sense to have that functionality always available as competing<b= r> > live progress reporters will bounce the taskbar representation all<br> > over the place.<br> <br> Doesn't that same problem affect equally the usual reports in the<br> echo area?=C2=A0 Or is the difference that the taskbar thingy is shared amo= ng<br> several Emacs instances?<br></blockquote><div><br></div><div class=3D"gmail= _default" style=3D"font-family:monospace">It's generally process-wide n= ot shared among processes.=C2=A0 In the w32 case, it's process- and &qu= ot;window-" specific (window in the Windows sense).</div><div class=3D= "gmail_default" style=3D"font-family:monospace"><br></div><blockquote class= =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg= b(204,204,204);padding-left:1ex"> >>> I changed the w32 implementation for the taskbar features to b= e<br> >>> enabled relative to the current frame at the time rather than = have<br> >>> singletons so I've removed the static variables.<br> >> I wonder if this relates to my comment in my other message about t= he<br> >> fact that in my setup the closest place to put such info would be = in the<br> >> frame titles (I don't have GUI elements associated with "= all Emacs<br> >> frames" or "all the frames of an Emacs session": in= stead<br> >> each frame gets its own GUI element).<br> ><br> > We could add a progress-reporter helper that targets frame titles if y= ou<br> > think that's broadly worthy.<br> <br> I don't.=C2=A0 I just noticed that were talking about the need for the = w32<br> code to decide on a frame to use and was wondering if that was because<br> the w32 GUI also sometimes displays that info in a "per frame" wa= y.<br></blockquote><div><br></div><div class=3D"gmail_default" style=3D"fon= t-family:monospace">w32 uses the frame as a conceit to get to the Windows w= indow handle needed for the API calls.</div></div></div> --0000000000005bb65b0645adc4c5--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 11 Dec 2025 14:05:41 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 11 09:05:41 2025
Received: from localhost ([127.0.0.1]:44434 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vThIa-0002Gt-IX
for submit <at> debbugs.gnu.org; Thu, 11 Dec 2025 09:05:41 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:50151)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vThIY-0002GU-3v
for 79859 <at> debbugs.gnu.org; Thu, 11 Dec 2025 09:05:38 -0500
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 63B3910013E;
Thu, 11 Dec 2025 09:05:32 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1765461931;
bh=1q1/xgpcdlw2c7e35cZy3YjHUL52aqoQxgqDmwM9EiA=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=aRFGf3LKzcGVMEug1t6dyhqcqRkPROn2USgY8SGFj3ci2z6pL/5z8D97KP6ttGt/k
/3ltVF7x6pOLhgWRLpKy6MImBvW8UgJ6XNai/+e6r7RHAC52NmuYEFZkDJYmPwk4uS
1Q7o+9ia1GURTZEQfmH5RoqAXHKRw69Iv6/GSe/F/qn/vrZcS3s+FuLfeD7T7P4K9u
NFvhlIpEbP3fFcpbiZQ7vJXuneKPRzbZFXzDWhkzl9Uw4FFseIIN3KIhT4MHPzcySb
hYsLL3/A+oXH9KZ1pu660k4LfNqXR7lmui3B2+EshSmyp64e6EjVOmoZP2++iFOvjG
Ze5cwoQwunU4Q==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 8CD4010002E;
Thu, 11 Dec 2025 09:05:31 -0500 (EST)
Received: from asado (unknown [181.28.45.30])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 609B81203CD;
Thu, 11 Dec 2025 09:05:29 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: =?windows-1252?Q?St=E9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
In-Reply-To: <CAN+1Hbp3QAxxgcsZ9V6F0xowizkjpjoWErmQV7k86FhnSKhThw@HIDDEN>
Message-ID: <jwvy0n9unif.fsf-monnier+emacs@HIDDEN>
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<86bjkxhuca.fsf@HIDDEN>
<CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
<87pl932wqd.fsf@HIDDEN>
<CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN>
<86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN>
<CAN+1Hbp3QAxxgcsZ9V6F0xowizkjpjoWErmQV7k86FhnSKhThw@HIDDEN>
Date: Thu, 11 Dec 2025 09:05:25 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.205 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>,
michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> As the taskbar can host only a single progress reporter, I doubt it
> makes sense to have that functionality always available as competing
> live progress reporters will bounce the taskbar representation all
> over the place.
Doesn't that same problem affect equally the usual reports in the
echo area? Or is the difference that the taskbar thingy is shared among
several Emacs instances?
>>> I changed the w32 implementation for the taskbar features to be
>>> enabled relative to the current frame at the time rather than have
>>> singletons so I've removed the static variables.
>> I wonder if this relates to my comment in my other message about the
>> fact that in my setup the closest place to put such info would be in the
>> frame titles (I don't have GUI elements associated with "all Emacs
>> frames" or "all the frames of an Emacs session": instead
>> each frame gets its own GUI element).
>
> We could add a progress-reporter helper that targets frame titles if you
> think that's broadly worthy.
I don't. I just noticed that were talking about the need for the w32
code to decide on a frame to use and was wondering if that was because
the w32 GUI also sometimes displays that info in a "per frame" way.
Stefan
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 11 Dec 2025 13:57:47 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 11 08:57:47 2025 Received: from localhost ([127.0.0.1]:44361 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vThAu-0001ki-Kc for submit <at> debbugs.gnu.org; Thu, 11 Dec 2025 08:57:47 -0500 Received: from mail-ua1-x92d.google.com ([2607:f8b0:4864:20::92d]:53641) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vThAo-0001k1-MW for 79859 <at> debbugs.gnu.org; Thu, 11 Dec 2025 08:57:42 -0500 Received: by mail-ua1-x92d.google.com with SMTP id a1e0cc1a2514c-93f6bd3a8f4so40722241.3 for <79859 <at> debbugs.gnu.org>; Thu, 11 Dec 2025 05:57:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765461453; x=1766066253; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=xDyM2ctSJ9OTSPJjk+uirBRKunEnHHZMpIKRauKGmEY=; b=VemiX4QYhdr8EpWVVz4MqgQRR/pSao0b96W07qpnSsxEfTEyQFxnnKnOOlg2pIryUO gKhUN/+oFCpERyIThnXCpNhIpPh7vZ9gOEVRv6WsqZI6STYRcerK0wcgj6sHyji/zqpZ o73Bnr1Q/WiJDNASoDMyI3W1xuNO5pK+dqMkMjxiQfJTm+WbiE3WKVNlCNPJrCDsR8QG AiR1Cr17wW+8qQDR/d4a9TXj17cqbKbexd6moEtAuH+nOZhtcr6gZTp/a8X2Vq43NWfe S/Qi4NhQme/mErBxs22zDfEzXqE93xaAJwVpeiA6rB4ENiP7fdH38Ug5lk+QjZbG5LWn 5x9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765461453; x=1766066253; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=xDyM2ctSJ9OTSPJjk+uirBRKunEnHHZMpIKRauKGmEY=; b=GHRgpeH5m0KP3OdpHojhzHW1oBvHlT8j9Dtny9UkE6lDOzOEwSEcvhpmTmhotLB0n1 fnx3s7Au6GZLKkwR+ibmtMGEifDgeoc/HTFIT7unNDGAnSChKplSRL/dOJQK7ttZk+EG B6b5cu9eYsRWVgiss3YvW45AfZe+Q3HgGtbYHiy04KQ2sd9lTqzd4zndcdavAhlRkJGN NTEkEAMOmUGaujCHQSEIv+3RzprjYQEA4RPYsRlMXPJ0guQMblL9+mMWfOgVg3iuRNDu ZigI9zz1XSYIAWLHsUEQYgu2Tv6U7JkmywZgFY+vT2L+nA2YDQUxHzLWheG7MHdjdkvh NMVg== X-Forwarded-Encrypted: i=1; AJvYcCXJM1gBUGD12T82NET90EjgFqztbtLTkeVvWE30Ghf/a+Us6vnHzivBVUMQ0cJjaBPxeMaVlg==@debbugs.gnu.org X-Gm-Message-State: AOJu0YyZrzLCyif0DnnquIeSMulzjv2J+1xD+db4oqG3ojAot7Y9YW1L Lyl7g3KzUc9PALE/Ps+0xYwm1CZqRJGPKAF4Pou9qdP2EPx3LftXo946Z4MVsWp23KZIPHV8hWH 4Mvav68VCQkEH52Rm03UjDc8cHBAjobU= X-Gm-Gg: AY/fxX6Uu9RGBNiPJ+/GmIGQD2L8prBrO24U42uXJ+qunDXO66l6FNgPb8zjxBb6A64 H6jXmXvLBhJthD+bo4m50m4xYXXpUxQsjyKyYw7yKczdHY+sa3/7iD0vdvzCnuxTYh0PdnRMsZc 1ngfzOB2IkSNi/jUOUN2qRZ6+XT8VglmrpEr7hjPgCiqEJw+Zrgze+UdhYe6kw2w5Sk12cuSBPi 1+CqhcQSA3f8hwHbjLEP8kMXGlSge2p/28L4YNhW6n1h3PZtEwXQeaGEwm95fSv9XzQTxI= X-Google-Smtp-Source: AGHT+IGLVJ8YccJgwswfrkSeByzg7lk2RCU6fdTtSdUbr4PFtJ6McYfTdF8sNb6mZ9MD5CNCA6pLtCjg22xjqGERR+w= X-Received: by 2002:a05:6102:a4a:b0:5db:cec7:8101 with SMTP id ada2fe7eead31-5e571dd0c92mr1862568137.29.1765461452764; Thu, 11 Dec 2025 05:57:32 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> <CAN+1Hbp3QAxxgcsZ9V6F0xowizkjpjoWErmQV7k86FhnSKhThw@HIDDEN> In-Reply-To: <CAN+1Hbp3QAxxgcsZ9V6F0xowizkjpjoWErmQV7k86FhnSKhThw@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Thu, 11 Dec 2025 08:57:20 -0500 X-Gm-Features: AQt7F2pBCHeJYDHr22HyinYPMyXiD-3jhlf-AM67wZZi1nWc7hXWoQtgpOgZqE0 Message-ID: <CAN+1HbqVrSBfhuNy4zx_Uz44-RraT-Lczkvcm3=hW-bPqwQh8w@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Stefan Monnier <monnier@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000c1bc890645ad86f3" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --000000000000c1bc890645ad86f3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Dec 11, 2025 at 8:38=E2=80=AFAM St=C3=A9phane Marks <shipmints@gmai= l.com> wrote: > On Thu, Dec 11, 2025 at 8:27=E2=80=AFAM Stefan Monnier <monnier@HIDDEN= real.ca> > wrote: > >> >> Rather than add hooks to progress reporter, which would be of global >> >> scope, I added optional update and done callbacks to >> >> make-progress-reporter and that works swimmingly well. NEWS and >> >> documentation have been updated for that feature in addition to >> >> system-taskbar. >> > >> > Sounds reasonable. Stefan, any comments, or better ideas for >> > integrating this into our progress reporter? >> >> IIUC the question here is whether all progress-reporter output should be >> reflected in the taskbar (using hooks) or only those of specific uses >> of a progress reporter (using callback arguments). >> >> I'd have assumed that exposing it for all uses would be the most natural >> thing to do, but St=C3=A9phane seems to think that exposing the progress= info >> in the taskbar should be done only for specific uses. I guess the idea >> is that it would be distracting to show all progress info in the taskbar= ? >> > > I left the basic progress-reporter functionality intact and it will alway= s > output to the echo area. The callbacks facilitate dual-mode progress > reporting so output goes both to the echo area and the taskbar graphical > representation. It is up to the programmer to decide when/where to add > optional taskbar output rather than bake it in. As the taskbar can host > only a single progress reporter, I doubt it makes sense to have that > functionality always available as competing live progress reporters will > bounce the taskbar representation all over the place. > > As mentioned in my other message, I don't use such a taskbar, so I don't >> have much experience with it nor have much of an intuition of >> the tradeoffs. >> >> From the code's perspective, I'm not thrilled with the large number of >> optional/positional arguments to `make-progress-reporter`. >> Keyword arguments would work much better at that point. >> > > An exercise for another day, I think. > > >> I changed the w32 implementation for the taskbar features to be >> >> enabled relative to the current frame at the time rather than have >> >> singletons so I've removed the static variables. >> >> I wonder if this relates to my comment in my other message about the >> fact that in my setup the closest place to put such info would be in the >> frame titles (I don't have GUI elements associated with "all Emacs >> frames" or "all the frames of an Emacs session": instead >> each frame gets its own GUI element). >> > > We could add a progress-reporter helper that targets frame titles if you > think that's broadly worthy. But I think that would be separate from the > taskbar implementation and might argue for some deeper thinking about > multi-modal progress reporting (the callbacks enable dual-mode, but not > multi-mode). > > If my setup (which is highly non-standard and doesn't need to be taken >> into account) is not the only one where such issues can come up, then >> I think for the progress-reporter feature, it might make sense to >> remember the selected-frame at the time of `make-progress-reporter`, but >> indeed that leaves open the question of what to do when that frame isn't >> live any more. So using the frame that happens to be selected when we >> do the update might be good enough (tho it depends how the GUI handles >> it: would we risk leaving the out-of-date progress displayed on the >> other frame)? >> > If we want to alter progress-reporter infrastructure to use global hook back ends, I could propose an implementation and perhaps abstract out the "spinner" and echo area updates as standard back ends, and then one could add a frame title updater (I suppose the easiest would be to update all frame titles vs. just the originating frame?) and change the taskbar progress reporting to be another back end to hook into? --000000000000c1bc890645ad86f3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Thu, Dec 11, 2025 at 8:38=E2=80=AFAM St=C3=A9phane Marks <<a href=3D"= mailto:shipmints@HIDDEN">shipmints@HIDDEN</a>> wrote:</span></div>= </div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=3D= "gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2= 04,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div style= =3D"font-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-= serif">On Thu, Dec 11, 2025 at 8:27=E2=80=AFAM Stefan Monnier <<a href= =3D"mailto:monnier@HIDDEN" target=3D"_blank">monnier@HIDDEN= l.ca</a>> wrote:</span></div></div><div class=3D"gmail_quote"><blockquot= e class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px s= olid rgb(204,204,204);padding-left:1ex">>> Rather than add hooks to p= rogress reporter, which would be of global<br> >> scope, I added optional update and done callbacks to<br> >> make-progress-reporter and that works swimmingly well.=C2=A0 NEWS = and<br> >> documentation have been updated for that feature in addition to<br= > >> system-taskbar.<br> ><br> > Sounds reasonable.=C2=A0 Stefan, any comments, or better ideas for<br> > integrating this into our progress reporter?<br> <br> IIUC the question here is whether all progress-reporter output should be<br= > reflected in the taskbar (using hooks) or only those of specific uses<br> of a progress reporter (using callback arguments).<br> <br> I'd have assumed that exposing it for all uses would be the most natura= l<br> thing to do, but St=C3=A9phane seems to think that exposing the progress in= fo<br> in the taskbar should be done only for specific uses.=C2=A0 I guess the ide= a<br> is that it would be distracting to show all progress info in the taskbar?<b= r></blockquote><div><br></div><div><div style=3D"font-family:monospace">I l= eft the basic progress-reporter functionality intact and it will always out= put to the echo area.=C2=A0 The callbacks facilitate dual-mode progress rep= orting so output goes both to the echo area and the taskbar graphical repre= sentation.=C2=A0 It is up to the programmer to decide when/where to add opt= ional taskbar output rather than bake it in.=C2=A0 As the taskbar can host = only a single progress reporter, I doubt it makes sense to have that functi= onality always available as competing live progress reporters will bounce t= he taskbar representation all over the place.</div></div><div style=3D"font= -family:monospace"><br></div><blockquote class=3D"gmail_quote" style=3D"mar= gin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1= ex"> As mentioned in my other message, I don't use such a taskbar, so I don&= #39;t<br> have much experience with it nor have much of an intuition of<br> the tradeoffs.<br> <br> From the code's perspective, I'm not thrilled with the large number= of<br> optional/positional arguments to `make-progress-reporter`.<br> Keyword arguments would work much better at that point.<br></blockquote><di= v><br></div><div><div style=3D"font-family:monospace">An exercise for anoth= er day, I think.</div></div><div><br></div><blockquote class=3D"gmail_quote= " style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);= padding-left:1ex"> >> I changed the w32 implementation for the taskbar features to be<br= > >> enabled relative to the current frame at the time rather than have= <br> >> singletons so I've removed the static variables.<br> <br> I wonder if this relates to my comment in my other message about the<br> fact that in my setup the closest place to put such info would be in the<br= > frame titles (I don't have GUI elements associated with "all Emacs= <br> frames" or "all the frames of an Emacs session": instead<br> each frame gets its own GUI element).<br></blockquote><div><br></div><div><= div style=3D"font-family:monospace">We could add a progress-reporter helper= that targets frame titles if you think that's broadly worthy.=C2=A0 Bu= t I think that would be separate from the taskbar implementation and might = argue for some deeper thinking about multi-modal progress reporting (the ca= llbacks enable dual-mode, but not multi-mode).</div></div><div><br></div><b= lockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-le= ft:1px solid rgb(204,204,204);padding-left:1ex"> If my setup (which is highly non-standard and doesn't need to be taken<= br> into account) is not the only one where such issues can come up, then<br> I think for the progress-reporter feature, it might make sense to<br> remember the selected-frame at the time of `make-progress-reporter`, but<br= > indeed that leaves open the question of what to do when that frame isn'= t<br> live any more.=C2=A0 So using the frame that happens to be selected when we= <br> do the update might be good enough (tho it depends how the GUI handles<br> it: would we risk leaving the out-of-date progress displayed on the<br> other frame)?<br></blockquote></div></div></blockquote><div><br></div><div = class=3D"gmail_default" style=3D"font-family:monospace">If we want to alter= progress-reporter infrastructure to use global hook back ends, I could pro= pose an implementation and perhaps abstract out the "spinner" and= echo area updates as standard back ends, and then one could add a frame ti= tle updater (I suppose the easiest would be to update all frame titles vs. = just the originating frame?) and change the taskbar progress reporting to b= e another back end to hook into?</div></div></div> --000000000000c1bc890645ad86f3--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 11 Dec 2025 13:39:15 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 11 08:39:15 2025 Received: from localhost ([127.0.0.1]:44206 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vTgsz-0000ZO-IK for submit <at> debbugs.gnu.org; Thu, 11 Dec 2025 08:39:15 -0500 Received: from mail-ua1-x936.google.com ([2607:f8b0:4864:20::936]:54668) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vTgsw-0000Yz-Gt for 79859 <at> debbugs.gnu.org; Thu, 11 Dec 2025 08:39:11 -0500 Received: by mail-ua1-x936.google.com with SMTP id a1e0cc1a2514c-93f64ae67dbso28284241.1 for <79859 <at> debbugs.gnu.org>; Thu, 11 Dec 2025 05:39:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765460345; x=1766065145; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=vqUAOBI01uyVmZf+1ayHtmFZVREjNF5Q2ZQKHAqyaXg=; b=CV4tmZfMv/DzrYRA3PtavpuNpZiryo2WAI1Jx12QcoPMc0AmXDZhh9XkPh+7J04cXA teZVKafoB8i2aE/hyayJLzfubP76piDnTT87Or0+sJRvIptI9UC737VboJuslQMep1zI XERv8IHcdmhxc4kGIXhspBeUiQjGo9v9ahnhA8BFJCBp7zK1jqgtAo2uyuUupBSF8FiT 7XzAMUYRLXDAOWwzsm30o9FCh8vozCXdkm5/E0UqXG63c4NPG7d5+bK8K82YIEuNuPB9 kzMpxYON/OaYeJNBDlnwXp4OcALoBhBn/nycM9/8UGeI5IcK+jWZAxZIeALlzQZSxZW9 UgcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765460345; x=1766065145; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=vqUAOBI01uyVmZf+1ayHtmFZVREjNF5Q2ZQKHAqyaXg=; b=Adsg7u0jWJNIFhmplKn/IbOQeCToyk6v42avs7zkO1qfcEDBgI4M7jLrfHzBOoggL1 rPaS3UK0OobLprqa5SavANgzTGVSurhlo8J5fDekYK2g8LX7rmyUoiA5ViWVfKF/mRdG lqwDdZFKLJ6a4j+xE40+ISjJfpvD+Qa0QoHNqq0Q13zP0qVpywfJUSpXJQSo3scr6jHc NewA6jkJ2ndqUlnSLv2f5SYwQQbVm7hSIhlleGohadaaqrMfg8aJDgEaubm49/UL5fLd VtyaSIDAmGH6ltxugXhZWSUGQ+ZkQGA9jH8VLfSD92U1+orfcV+/QVdwiPAS+Uxbp7TS f99Q== X-Forwarded-Encrypted: i=1; AJvYcCVbB/yjwOYsegDPK/tv78wa+x6MlHNmDGv7FuWKM/HUiKa35874094Y8oWw6sskJq6TGOofdw==@debbugs.gnu.org X-Gm-Message-State: AOJu0YxVlN6iC2Bsq/IsKgTRQ+qWSFJUk1AfrhE9AQ2sfKMckOm+p2oe TpcQGTUqFXW3Rhk67Z7JHnge7rEYEcbxGe5hPpPKhTtIeVCHaQpSSGHV/niVUOIryHXDErfxYsG UFCQNn1SvkrnzS8T+wmVJhbB8n0HUMAc= X-Gm-Gg: AY/fxX6fE9xmpe4OEH3q0BmDp+EzcVWSdquYm9JMPMLCU2uS97UjsKJ8LTbdgiTacZo kK4kEGV0E1gOmhqd/K0cSim00/EXfVXW4vmmgZg3/jsmjxiY0MDcSUyZuajt/gHlQT1BNRUj1DI jJ1m43iC+2cEkKG56qqHOZOfJ+RZNCicPljpRY1/1f264vJGImTcJyxfWpMokz2H6ch0CbiGJNN CO5clez0iDtbX+8UfX+akwNrfRFg/alUd/3iPBTAWvtKfzqwW45aFzh0hn1rCKLparbZuk= X-Google-Smtp-Source: AGHT+IGmWpBtka79W7NBO2tNHBdV7s3ZQEAMbfBq/zLBHhh63tsVbpnK1ReOXpHltX2Y6THRTXg3I4q9+5eRwy4n180= X-Received: by 2002:a05:6102:801d:b0:5df:c10a:6680 with SMTP id ada2fe7eead31-5e572062f0dmr2209252137.33.1765460344706; Thu, 11 Dec 2025 05:39:04 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <86o6o5ba41.fsf@HIDDEN> <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> In-Reply-To: <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Thu, 11 Dec 2025 08:38:52 -0500 X-Gm-Features: AQt7F2pM1dNf-6IMsSdAFtANo_98zH5IUgMQwkW1E9wX8nMhLfADA1qFHKH7buw Message-ID: <CAN+1Hbp3QAxxgcsZ9V6F0xowizkjpjoWErmQV7k86FhnSKhThw@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Stefan Monnier <monnier@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000b61cd50645ad441a" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --000000000000b61cd50645ad441a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Dec 11, 2025 at 8:27=E2=80=AFAM Stefan Monnier <monnier@HIDDEN= al.ca> wrote: > >> Rather than add hooks to progress reporter, which would be of global > >> scope, I added optional update and done callbacks to > >> make-progress-reporter and that works swimmingly well. NEWS and > >> documentation have been updated for that feature in addition to > >> system-taskbar. > > > > Sounds reasonable. Stefan, any comments, or better ideas for > > integrating this into our progress reporter? > > IIUC the question here is whether all progress-reporter output should be > reflected in the taskbar (using hooks) or only those of specific uses > of a progress reporter (using callback arguments). > > I'd have assumed that exposing it for all uses would be the most natural > thing to do, but St=C3=A9phane seems to think that exposing the progress = info > in the taskbar should be done only for specific uses. I guess the idea > is that it would be distracting to show all progress info in the taskbar? > I left the basic progress-reporter functionality intact and it will always output to the echo area. The callbacks facilitate dual-mode progress reporting so output goes both to the echo area and the taskbar graphical representation. It is up to the programmer to decide when/where to add optional taskbar output rather than bake it in. As the taskbar can host only a single progress reporter, I doubt it makes sense to have that functionality always available as competing live progress reporters will bounce the taskbar representation all over the place. As mentioned in my other message, I don't use such a taskbar, so I don't > have much experience with it nor have much of an intuition of > the tradeoffs. > > From the code's perspective, I'm not thrilled with the large number of > optional/positional arguments to `make-progress-reporter`. > Keyword arguments would work much better at that point. > An exercise for another day, I think. >> I changed the w32 implementation for the taskbar features to be > >> enabled relative to the current frame at the time rather than have > >> singletons so I've removed the static variables. > > I wonder if this relates to my comment in my other message about the > fact that in my setup the closest place to put such info would be in the > frame titles (I don't have GUI elements associated with "all Emacs > frames" or "all the frames of an Emacs session": instead > each frame gets its own GUI element). > We could add a progress-reporter helper that targets frame titles if you think that's broadly worthy. But I think that would be separate from the taskbar implementation and might argue for some deeper thinking about multi-modal progress reporting (the callbacks enable dual-mode, but not multi-mode). If my setup (which is highly non-standard and doesn't need to be taken > into account) is not the only one where such issues can come up, then > I think for the progress-reporter feature, it might make sense to > remember the selected-frame at the time of `make-progress-reporter`, but > indeed that leaves open the question of what to do when that frame isn't > live any more. So using the frame that happens to be selected when we > do the update might be good enough (tho it depends how the GUI handles > it: would we risk leaving the out-of-date progress displayed on the > other frame)? > > > Stefan > > --000000000000b61cd50645ad441a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Thu, Dec 11, 2025 at 8:27=E2=80=AFAM Stefan Monnier <<a href=3D"mailt= o:monnier@HIDDEN">monnier@HIDDEN</a>> wrote:</span><= /div></div><div class=3D"gmail_quote gmail_quote_container"><blockquote cla= ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid = rgb(204,204,204);padding-left:1ex">>> Rather than add hooks to progre= ss reporter, which would be of global<br> >> scope, I added optional update and done callbacks to<br> >> make-progress-reporter and that works swimmingly well.=C2=A0 NEWS = and<br> >> documentation have been updated for that feature in addition to<br= > >> system-taskbar.<br> ><br> > Sounds reasonable.=C2=A0 Stefan, any comments, or better ideas for<br> > integrating this into our progress reporter?<br> <br> IIUC the question here is whether all progress-reporter output should be<br= > reflected in the taskbar (using hooks) or only those of specific uses<br> of a progress reporter (using callback arguments).<br> <br> I'd have assumed that exposing it for all uses would be the most natura= l<br> thing to do, but St=C3=A9phane seems to think that exposing the progress in= fo<br> in the taskbar should be done only for specific uses.=C2=A0 I guess the ide= a<br> is that it would be distracting to show all progress info in the taskbar?<b= r></blockquote><div><br></div><div><div class=3D"gmail_default" style=3D"fo= nt-family:monospace">I left the basic progress-reporter functionality intac= t and it will always output to the echo area.=C2=A0 The callbacks facilitat= e dual-mode progress reporting so output goes both to the echo area and the= taskbar graphical representation.=C2=A0 It is up to the programmer to deci= de when/where to add optional taskbar output rather than bake it in.=C2=A0 = As the taskbar can host only a single progress reporter, I doubt it makes s= ense to have that functionality always available as competing live progress= reporters will bounce the taskbar representation all over the place.</div>= </div><div class=3D"gmail_default" style=3D"font-family:monospace"><br></di= v><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;borde= r-left:1px solid rgb(204,204,204);padding-left:1ex"> As mentioned in my other message, I don't use such a taskbar, so I don&= #39;t<br> have much experience with it nor have much of an intuition of<br> the tradeoffs.<br> <br> From the code's perspective, I'm not thrilled with the large number= of<br> optional/positional arguments to `make-progress-reporter`.<br> Keyword arguments would work much better at that point.<br></blockquote><di= v><br></div><div><div class=3D"gmail_default" style=3D"font-family:monospac= e">An exercise for another day, I think.</div></div><div><br></div><blockqu= ote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px= solid rgb(204,204,204);padding-left:1ex"> >> I changed the w32 implementation for the taskbar features to be<br= > >> enabled relative to the current frame at the time rather than have= <br> >> singletons so I've removed the static variables.<br> <br> I wonder if this relates to my comment in my other message about the<br> fact that in my setup the closest place to put such info would be in the<br= > frame titles (I don't have GUI elements associated with "all Emacs= <br> frames" or "all the frames of an Emacs session": instead<br> each frame gets its own GUI element).<br></blockquote><div><br></div><div><= div class=3D"gmail_default" style=3D"font-family:monospace">We could add a = progress-reporter helper that targets frame titles if you think that's = broadly worthy.=C2=A0 But I think that would be separate from the taskbar i= mplementation and might argue for some deeper thinking about multi-modal pr= ogress reporting (the callbacks enable dual-mode, but not multi-mode).</div= ></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px= 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> If my setup (which is highly non-standard and doesn't need to be taken<= br> into account) is not the only one where such issues can come up, then<br> I think for the progress-reporter feature, it might make sense to<br> remember the selected-frame at the time of `make-progress-reporter`, but<br= > indeed that leaves open the question of what to do when that frame isn'= t<br> live any more.=C2=A0 So using the frame that happens to be selected when we= <br> do the update might be good enough (tho it depends how the GUI handles<br> it: would we risk leaving the out-of-date progress displayed on the<br> other frame)?<br> <br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 Stefan<br> <br> </blockquote></div></div> --000000000000b61cd50645ad441a--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 11 Dec 2025 13:27:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 11 08:27:12 2025
Received: from localhost ([127.0.0.1]:44021 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vTghM-0007pS-0n
for submit <at> debbugs.gnu.org; Thu, 11 Dec 2025 08:27:12 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:47854)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vTghK-0007of-76
for 79859 <at> debbugs.gnu.org; Thu, 11 Dec 2025 08:27:10 -0500
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 1511144162A;
Thu, 11 Dec 2025 08:27:04 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1765459622;
bh=QIlik0deeMjkPojQZw1bdepiSB8ZDKY+MDHAs/jSR6I=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=PsXzHxEUa10wEaJxK/ZsVlpTOudmJl+XOPEuZVysE7gfuMNvXxtoVqEOTpiDSvHKu
qRNO7iqij62MuGw+Z/lN0WZnRNfltCPLKnETxdnEX8mXjHWet2RBUl5ARRElSKW+jS
MZNluQZ94f7UYR0QzQi7QUbRwSjZdPLXmz5hX/3xOORW3z1vkBdWG9PwLpOr59+QBN
I/iMpYzI1kD9v1SnI28ZHbRSIXCmQa92vWihBMLXRa+0cALCU/qCXURIuC6HR+DvS7
4noGCGTD6iswXtodeghuL+80E4WH70pFc4jtigOGkA9ooc6I1GX/wTLm2bBnsFTxA7
tA8YHI4zSehBg==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id AEFDF441506;
Thu, 11 Dec 2025 08:27:02 -0500 (EST)
Received: from asado (unknown [181.28.45.30])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 9BD031204BA;
Thu, 11 Dec 2025 08:27:00 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
In-Reply-To: <86o6o5ba41.fsf@HIDDEN>
Message-ID: <jwvfr9hw4ga.fsf-monnier+emacs@HIDDEN>
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<86bjkxhuca.fsf@HIDDEN>
<CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
<87pl932wqd.fsf@HIDDEN>
<CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN>
<86o6o5ba41.fsf@HIDDEN>
Date: Thu, 11 Dec 2025 08:26:56 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.113 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, michael.albinus@HIDDEN,
=?windows-1252?Q?St=E9phane?= Marks <shipmints@HIDDEN>,
79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
>> Rather than add hooks to progress reporter, which would be of global
>> scope, I added optional update and done callbacks to
>> make-progress-reporter and that works swimmingly well. NEWS and
>> documentation have been updated for that feature in addition to
>> system-taskbar.
>
> Sounds reasonable. Stefan, any comments, or better ideas for
> integrating this into our progress reporter?
IIUC the question here is whether all progress-reporter output should be
reflected in the taskbar (using hooks) or only those of specific uses
of a progress reporter (using callback arguments).
I'd have assumed that exposing it for all uses would be the most natural
thing to do, but St=E9phane seems to think that exposing the progress info
in the taskbar should be done only for specific uses. I guess the idea
is that it would be distracting to show all progress info in the taskbar?
As mentioned in my other message, I don't use such a taskbar, so I don't
have much experience with it nor have much of an intuition of
the tradeoffs.
From the code's perspective, I'm not thrilled with the large number of
optional/positional arguments to `make-progress-reporter`.
Keyword arguments would work much better at that point.
>> I changed the w32 implementation for the taskbar features to be
>> enabled relative to the current frame at the time rather than have
>> singletons so I've removed the static variables.
I wonder if this relates to my comment in my other message about the
fact that in my setup the closest place to put such info would be in the
frame titles (I don't have GUI elements associated with "all Emacs
frames" or "all the frames of an Emacs session": instead
each frame gets its own GUI element).
If my setup (which is highly non-standard and doesn't need to be taken
into account) is not the only one where such issues can come up, then
I think for the progress-reporter feature, it might make sense to
remember the selected-frame at the time of `make-progress-reporter`, but
indeed that leaves open the question of what to do when that frame isn't
live any more. So using the frame that happens to be selected when we
do the update might be good enough (tho it depends how the GUI handles
it: would we risk leaving the out-of-date progress displayed on the
other frame)?
Stefan
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 11 Dec 2025 13:05:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 11 08:05:44 2025
Received: from localhost ([127.0.0.1]:43744 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vTgMZ-00069w-OF
for submit <at> debbugs.gnu.org; Thu, 11 Dec 2025 08:05:44 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:62202)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vTgMX-00069d-SS
for 79859 <at> debbugs.gnu.org; Thu, 11 Dec 2025 08:05:42 -0500
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 5A89610013E;
Thu, 11 Dec 2025 08:05:36 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1765458335;
bh=t8Th3eenYzsZ7PwsPbp8rxXd3BymDbTTgfh645TNbQU=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=Twnl9+CJ3IbXUpeJFLjFbI5EB0LmXN0LetDMUqq+1AlC/RgfXgGvNG5UKSSFfA57o
dyKL52287D4j6XQOdRNmKwL40gNRJTUkGmoGxPsp7SKDwxBDs+39UVheu4kV6ERtBX
oqCdAwFFRg/i3j+XkdyrdYyF6KY1prc6Ugy+xaByBDAYAtUehLqNvACvS6W1D2Bn0A
qJMU1gSqGwAZcpz63giKLQh8v80X/eHM9qISqKfoiCzOg5Kl4n6MSorSY3VrCIWWDj
t63aFCk36yPEn3AJB0Zq2GIMej56CA2xerDVcFAe4QhgsKWWsglbFIKSX6lzEujEU1
SslioCwKxjhLA==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 7EF4910002E;
Thu, 11 Dec 2025 08:05:35 -0500 (EST)
Received: from asado (unknown [181.28.45.30])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 0CD351205D2;
Thu, 11 Dec 2025 08:05:33 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: =?windows-1252?Q?Bj=F6rn?= Bidar <bjorn.bidar@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
In-Reply-To: <87ikev7pv5.fsf@>
Message-ID: <jwvldj9w50y.fsf-monnier+emacs@HIDDEN>
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<87a508h9r7.fsf@HIDDEN> <86pl94auo1.fsf@HIDDEN>
Date: Thu, 11 Dec 2025 08:05:30 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.206 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79859
Cc: Eli Zaretskii <eliz@HIDDEN>, shipmints@HIDDEN, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
>> We could also think about more general terms, like "gui-desktop" or
>> maybe "gui-screen", in which case we could later add more features
>> that pertain to various system features which affect how Emacs-related
>> windows and icons are shown on typical modern GUI terminals.
>
> All of these are tied to the launcher, gui screen or desktop doesn't
> make sense, this would only increase ambiguity . I think I know
> what you mean with GUI terminals but where is this lingo used? I haven't
> seen the word used anywhere, searching for it results in graphical
> terminal emulators.
Side note: when choosing names for such features, it's useful to keep
in mind that we'll probably still be using those names in 2050, so it
might be worth considering whether the rest of the world will as well
and what happens if it doesn't.
[ FWIW, I don't use a taskbar/dock/younameit. In my setup, which hasn't
changed much in the last 30 years, the closest place where you could
put that info would be in the frame-title (and choosing the appropriate
frame might be non-trivial in some cases). ]
Stefan
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 11 Dec 2025 10:12:43 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 11 05:12:43 2025 Received: from localhost ([127.0.0.1]:42223 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vTdf8-0007WF-Mx for submit <at> debbugs.gnu.org; Thu, 11 Dec 2025 05:12:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52120) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vTdf5-0007W0-Qg for 79859 <at> debbugs.gnu.org; Thu, 11 Dec 2025 05:12:40 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vTdez-0003Qu-WE; Thu, 11 Dec 2025 05:12:34 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=KY2ErJxEk6U0ayDHVRYjSaxMkGtat20SJJTIbz4oBSE=; b=Tw5X0pyounbGoLBzcjC3 k8LHy6kMdRbx0nJq/GHAODEIERhBNPIGEOh3Xt9niy0u/fqQAnsgSjxYY+9AGRuJysDFncQjg8wgo XX8dQvqMPGr6vyFWCpvB6HdBPMNoc+2bKxw503zCtKGO2EqCDRFJIKK4Q1eht9QvLP5nfFER8gMMD Gg9Q4ER10+7cG08M4vv9A+bHM/bCJBZTizeFBme5Z0f8q47h4JBxfWaKHNtAXSdYhORdCfOQ30rfU Y3RpjNcOm6w/iw3BZTbB1u/VnPfeOOTbffkSqeaWnSpmLrsjIanzEHPCxSPyUrgeVw2VGE8z3kaE+ JixZtXxOxPJq1g==; Date: Thu, 11 Dec 2025 12:12:30 +0200 Message-Id: <86o6o5ba41.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>, Stefan Monnier <monnier@HIDDEN> In-Reply-To: <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> (message from =?utf-8?Q?St=C3=A9phane?= Marks on Tue, 9 Dec 2025 11:11:14 -0500) Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Stéphane Marks <shipmints@HIDDEN> > Date: Tue, 9 Dec 2025 11:11:14 -0500 > Cc: Eli Zaretskii <eliz@HIDDEN>, bjorn.bidar@HIDDEN, 79859 <at> debbugs.gnu.org > > Rather than add hooks to progress reporter, which would be of global scope, I added optional update and > done callbacks to make-progress-reporter and that works swimmingly well. NEWS and documentation have > been updated for that feature in addition to system-taskbar. Sounds reasonable. Stefan, any comments, or better ideas for integrating this into our progress reporter? > I changed the w32 implementation for the taskbar features to be enabled relative to the current frame at the > time rather than have singletons so I've removed the static variables. In the lisp w32 implementation, I added > a hook to delete-frame-functions that disables taskbar effects for a frame when it is killed. Eli, I don't know if > this addresses your issue where you saw lingering artifacts when a frame or session is killed (I honestly > don't know how Windows could allow the effects to linger when a process is dead). I've tested on Windows > 11, the only thing I have available and perhaps your Windows version behaves differently. Thanks. Let's leave this for a few days to give others chance to comment, and consider installing this then.
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 10 Dec 2025 13:20:55 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 10 08:20:54 2025 Received: from localhost ([127.0.0.1]:33455 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vTK7h-0007bP-M7 for submit <at> debbugs.gnu.org; Wed, 10 Dec 2025 08:20:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:54226) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vTK7d-0007aA-Dc for 79859 <at> debbugs.gnu.org; Wed, 10 Dec 2025 08:20:52 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vTK7X-0004UT-9c; Wed, 10 Dec 2025 08:20:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=kDygYPQy2v8JFOz3VHW6lCRJC4ZgYyo4xJNhwsyB9AI=; b=fZFnEKLZxSTB4VuF/kNf NBuoeUThsljlLQiR4uMJJfhf7iG87Wm0CsmgxljmyHUO6JEi3bkLMVDdVwfYWQJFHp+qvkBcBBwbC fsB56HmSHGgfP0nhhVKTpzx73QFBjSwBqzv5VBLVWYSSGLoTyP8PbclV5xwx3unKkOHgXcc2dPDnW eeAMguTHVlKlYBxswG/mUHQ1B6U5Av4wvGP/dz05ZEGtYJ/6n1blLd9mLo2BAxJQX7URBis1GNC8I zaqUS+dsD117ggEeM4HkQ51k0Hzjy+n+2dp4MDxhP67W5YW70JwikWVZOscKx1BIfz8fu/b5M+zyc OjwPoVyOM4NC3Q==; Date: Wed, 10 Dec 2025 15:20:41 +0200 Message-Id: <868qfacw2e.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> In-Reply-To: <CAN+1HbqeTCpfbm=rervuFTk5RnLUpadi19BPDnt0GJCLagUcww@HIDDEN> (message from =?utf-8?Q?St=C3=A9phane?= Marks on Wed, 10 Dec 2025 08:04:04 -0500) Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <CAN+1Hbp5jWDcVyQccbJbWDR8G1jpmbHY1UcY0jqLWJT4wpWv_Q@HIDDEN> <86bjk6cxf1.fsf@HIDDEN> <CAN+1HbqeTCpfbm=rervuFTk5RnLUpadi19BPDnt0GJCLagUcww@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Stéphane Marks <shipmints@HIDDEN> > Date: Wed, 10 Dec 2025 08:04:04 -0500 > Cc: michael.albinus@HIDDEN, bjorn.bidar@HIDDEN, 79859 <at> debbugs.gnu.org > > On Wed, Dec 10, 2025 at 7:51 AM Eli Zaretskii <eliz@HIDDEN> wrote: > > > From: Stéphane Marks <shipmints@HIDDEN> > > Date: Tue, 9 Dec 2025 23:00:01 -0500 > > Cc: Eli Zaretskii <eliz@HIDDEN>, bjorn.bidar@HIDDEN, 79859 <at> debbugs.gnu.org > > > > Eli, one other thing on w32. I did not check if the selected frame is a minibuffer-only frame or a child > frame. > > Let me know if you think those tests or some other are necessary. > > Why would they be necessary? I don't think Windows cares what kind of > frame it is given, for Windows they are all alike: windows. Or am I > missing something? > > Not a Windows expert here. I wasn't sure if it was naive to assume that the w32 window handle for any > arbitrary frame is the one for the ultimate parent frame that Windows knows as the main frame window for > which we assume the taskbar effects apply? Each Emacs frame on MS-Windows is a separate window, from the Windows POV. AFAIU from the MS documentation, the taskbar effects don't care whoch window's handle you pass to the APIs, at least under the default behavior of grouping the taskbar icons of all the Emacs frames together.
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 10 Dec 2025 13:04:25 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 10 08:04:25 2025 Received: from localhost ([127.0.0.1]:33330 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vTJrk-0006OQ-Mi for submit <at> debbugs.gnu.org; Wed, 10 Dec 2025 08:04:25 -0500 Received: from mail-ua1-x934.google.com ([2607:f8b0:4864:20::934]:48234) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vTJri-0006Ny-3M for 79859 <at> debbugs.gnu.org; Wed, 10 Dec 2025 08:04:23 -0500 Received: by mail-ua1-x934.google.com with SMTP id a1e0cc1a2514c-93a9f6efebbso1508909241.0 for <79859 <at> debbugs.gnu.org>; Wed, 10 Dec 2025 05:04:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765371856; x=1765976656; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=xUJrSsEU+vhfxEZzi8ddVM6EW/pTx76Xndslzl80stA=; b=ekXfxOIhM1UgyvjPfqR+uXiiWrzqcLTV8obpREZPnnNEVdVuJEPnj1sUDQaxnU6txR wKYnKjWl+lBgbF7GhPS2EWYAgf9mLuTbPbl0RYndT//7g80Qu9e/sfQ7RfeVcDdSVPBJ JLxL1Z448rtVGdsxZlQbb96HLtD2soqferzMwIzPdI40BBvC4a10j2y1oQCudLeIUR2R F7fgezgLzb56Byz1S9CtKwv7u6QWj+2L7YTS8rTmR1OaRvP2plTU9k/37H/a7i5Ffq+4 KctBb0qq71OL0Hpn67rw4vTIcbFgKsV1M3+F091Nr2YRkme+4APoHf/bnyAOxr6ffK33 P22A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765371856; x=1765976656; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=xUJrSsEU+vhfxEZzi8ddVM6EW/pTx76Xndslzl80stA=; b=G/6Ojsvi38OrpqxYZ6hM7q/UAaCzUD6jxA92T6zHF/5Q8D+cx47+qIY7uz1GFZq1FL m/TkoQrGW2QqI2e11nFzm5mooIrodL/fGrLKS0Kb5XeOHkTc5nKtJNzAL5ybOrLPzxk/ 09yi2atRH+nPrb5saiPo1237D0BJesw2gnet7bIFWDqJ6ZehPmn72f8tWNZVmwKEUhFq Lbp2jPowDFPai7xpsLJYRcSBhp+mES7CO0rFfdTw33acKKipwUUyH0Y15yqBZIIyNoQM ls8biTepGAiyrstF4pOLM+pGFiRVc0hUlfuGZKrbYYrk+k5KwBZ2OISvh23q1jhjbH1J OGDg== X-Forwarded-Encrypted: i=1; AJvYcCX8xRV1AYo6AfhXV5Agke6iKg8e5MfWq0D5qP5RpabLWp0wTTI17J2+mX37IrbdZq8sMBrCEw==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yy0z6+v8DcItgmepbcfmZZlAySfv6IrIGGZVqNuYJ/YQc0g3ejW tDgAfrsxizL8GguiCUfYuBLvkSqJ2MvxBcTWuAtXM3TJGTOsu/BdLi7iGpJJZhPdc93PO4EpeWz 2bZ2L8BWPMC+h1hHPcYMBq6WkVommTAY= X-Gm-Gg: AY/fxX4kNpI1Y0aaY6Jbx4zRFFXthB8nb0PlWp3/PK2aBrGHrsLS2Hb8cWdeCrdGKEE MJkU7wQjBpfa3RTBodE7kjIsWcxBVBOMmSFvrcP+T5wOo050bJwkX37nQUyOuiYEbgWADNqJHGd fGV+TLOPfFFspnVN77oHH+LaWjOEsFPbtMEXZsICwP8objQIIyv4tEbiuqpS7+YCUt0sH3i7Une xWvlwoQilAr3KCdPQm1UkWq7YMQJlfwctcE0vKJZAryoPB9MqJZR3s3XUT5y3Ky15bkpOM= X-Google-Smtp-Source: AGHT+IGChiApjcJ7eCSoQz2ELt/ddecLXCtCnTwW+8l1o/Ut5g6fy2l5Qa5Tb1yHIfJe18Iq+bapwas2MMcF4IUYjuk= X-Received: by 2002:a05:6102:292b:b0:5df:c1b5:82e0 with SMTP id ada2fe7eead31-5e571eed8b9mr601682137.32.1765371856275; Wed, 10 Dec 2025 05:04:16 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <CAN+1Hbp5jWDcVyQccbJbWDR8G1jpmbHY1UcY0jqLWJT4wpWv_Q@HIDDEN> <86bjk6cxf1.fsf@HIDDEN> In-Reply-To: <86bjk6cxf1.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Wed, 10 Dec 2025 08:04:04 -0500 X-Gm-Features: AQt7F2rub2YH6JwMMtTnOHMwufr6RonPCNSiW-2NXQ-T70TvN6Reh9JcL4CC9cA Message-ID: <CAN+1HbqeTCpfbm=rervuFTk5RnLUpadi19BPDnt0GJCLagUcww@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support To: Eli Zaretskii <eliz@HIDDEN> Content-Type: multipart/alternative; boundary="00000000000063ca48064598aa97" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --00000000000063ca48064598aa97 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Dec 10, 2025 at 7:51=E2=80=AFAM Eli Zaretskii <eliz@HIDDEN> wrote: > > From: St=C3=A9phane Marks <shipmints@HIDDEN> > > Date: Tue, 9 Dec 2025 23:00:01 -0500 > > Cc: Eli Zaretskii <eliz@HIDDEN>, bjorn.bidar@HIDDEN, > 79859 <at> debbugs.gnu.org > > > > Eli, one other thing on w32. I did not check if the selected frame is = a > minibuffer-only frame or a child frame. > > Let me know if you think those tests or some other are necessary. > > Why would they be necessary? I don't think Windows cares what kind of > frame it is given, for Windows they are all alike: windows. Or am I > missing something? > Not a Windows expert here. I wasn't sure if it was naive to assume that the w32 window handle for any arbitrary frame is the one for the ultimate parent frame that Windows knows as the main frame window for which we assume the taskbar effects apply? --00000000000063ca48064598aa97 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Wed, Dec 10, 2025 at 7:51=E2=80=AFAM Eli Zaretskii <<a href=3D"mailto= :eliz@HIDDEN">eliz@HIDDEN</a>> wrote:</span></div></div><div class=3D"= gmail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" style= =3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding= -left:1ex">> From: St=C3=A9phane Marks <<a href=3D"mailto:shipmints@g= mail.com" target=3D"_blank">shipmints@HIDDEN</a>><br> > Date: Tue, 9 Dec 2025 23:00:01 -0500<br> > Cc: Eli Zaretskii <<a href=3D"mailto:eliz@HIDDEN" target=3D"_blank= ">eliz@HIDDEN</a>>, <a href=3D"mailto:bjorn.bidar@HIDDEN" target=3D= "_blank">bjorn.bidar@HIDDEN</a>, <a href=3D"mailto:79859@HIDDEN= g" target=3D"_blank">79859 <at> debbugs.gnu.org</a><br> > <br> > Eli, one other thing on w32.=C2=A0 I did not check if the selected fra= me is a minibuffer-only frame or a child frame.<br> > Let me know if you think those tests or some other are necessary.<br> <br> Why would they be necessary?=C2=A0 I don't think Windows cares what kin= d of<br> frame it is given, for Windows they are all alike: windows.=C2=A0 Or am I<b= r> missing something?<br></blockquote><div><br></div><div class=3D"gmail_defau= lt" style=3D"font-family:monospace">Not a Windows expert here.=C2=A0 I wasn= 't sure if it was naive to assume that the w32 window handle for any ar= bitrary frame is the one for the ultimate parent frame that Windows knows a= s the main frame window for which we assume the taskbar effects apply?</div= ></div></div> --00000000000063ca48064598aa97--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 10 Dec 2025 12:51:39 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 10 07:51:39 2025 Received: from localhost ([127.0.0.1]:33210 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vTJfP-0005e4-4M for submit <at> debbugs.gnu.org; Wed, 10 Dec 2025 07:51:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56098) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vTJfN-0005dk-Jg for 79859 <at> debbugs.gnu.org; Wed, 10 Dec 2025 07:51:38 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vTJfH-0004Yt-Vo; Wed, 10 Dec 2025 07:51:31 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=YEXONGAw/vJ3Z655a3lX4JqiffitfCx/YP49XvaxKoU=; b=XHLGxZ3ShvK0E/loQ6Hx bQ0ic1u7gTYJC4LUHpwaefSX09HHblwoIrpfK6kTMLTK4Fh2KWkHHc/r64bTO/oLLu//iv70XQOtE ETUjOWIg0HTxSwbTkdEWuRSp2Z66OSrpBO6UftpFIJ6AnppK+LO1D2++Su2Vryri8eu/S73vOnibp lTrcP/ala/KvR5BlkXy/zKtjkm+dMMrLr8WREc1VJjdV3p1vLbielZzcQwNpb7FDDK0xEfWiEXVYa dWr81IonDlwkj4mKnx4IoQMuR8YiIN8kL+5n7tl9an7WzkL7mqsDULNH/P5VfWAGmMNo/al+3hvOl I02WcJAKHLozWw==; Date: Wed, 10 Dec 2025 14:51:30 +0200 Message-Id: <86bjk6cxf1.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> In-Reply-To: <CAN+1Hbp5jWDcVyQccbJbWDR8G1jpmbHY1UcY0jqLWJT4wpWv_Q@HIDDEN> (message from =?utf-8?Q?St=C3=A9phane?= Marks on Tue, 9 Dec 2025 23:00:01 -0500) Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> <CAN+1Hbp5jWDcVyQccbJbWDR8G1jpmbHY1UcY0jqLWJT4wpWv_Q@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Stéphane Marks <shipmints@HIDDEN> > Date: Tue, 9 Dec 2025 23:00:01 -0500 > Cc: Eli Zaretskii <eliz@HIDDEN>, bjorn.bidar@HIDDEN, 79859 <at> debbugs.gnu.org > > Eli, one other thing on w32. I did not check if the selected frame is a minibuffer-only frame or a child frame. > Let me know if you think those tests or some other are necessary. Why would they be necessary? I don't think Windows cares what kind of frame it is given, for Windows they are all alike: windows. Or am I missing something?
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 10 Dec 2025 12:41:54 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 10 07:41:54 2025 Received: from localhost ([127.0.0.1]:33058 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vTJVy-0004ka-0C for submit <at> debbugs.gnu.org; Wed, 10 Dec 2025 07:41:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:50326) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vTJVs-0004kA-Ja for 79859 <at> debbugs.gnu.org; Wed, 10 Dec 2025 07:41:52 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vTJVm-0002Vb-R4; Wed, 10 Dec 2025 07:41:42 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=zny5sKzqc2AVNbAhqazfb8f12Bjxf6kNCHtfjLwga0M=; b=JWxmdKxsrR+zN8CeQ6Qy 09n+iE9ulHYjgHaUs2F6JfqWGsMGOXHJDJZsyuxiweEG3ZNMat8/HUH+YJE1VFRroUnofniLhx5AH 0Z5cP22QKBWkVFhtWs1mi2iPXj4Vg+Cg5Et4JMMzm6FpWkPcOgyUBQ1ogTxswm+uGhT+X0UKttzW4 QaR4sTMS6zJ+/jD01K2i/vzO7LxvMzpqr+C1xQV1PeADBuHyKhPr7aEiAZkFhvGF8Q+uP4SJmDQ8A KuqYnKW7UGN+paCK5C6q7SFjxpqySM0BuLpdkJTn1P4fl2HbXTPrBKv++/SL3MLZ6BzecmgDIABfH JhOwSyOoWGSlMw==; Date: Wed, 10 Dec 2025 14:41:41 +0200 Message-Id: <86cy4mcxve.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> In-Reply-To: <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> (message from =?utf-8?Q?St=C3=A9phane?= Marks on Tue, 9 Dec 2025 11:11:14 -0500) Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <86bjkxhuca.fsf@HIDDEN> <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN> <87pl932wqd.fsf@HIDDEN> <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79859 Cc: bjorn.bidar@HIDDEN, michael.albinus@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Stéphane Marks <shipmints@HIDDEN> > Date: Tue, 9 Dec 2025 11:11:14 -0500 > Cc: Eli Zaretskii <eliz@HIDDEN>, bjorn.bidar@HIDDEN, 79859 <at> debbugs.gnu.org > > Here's a fresh patch (still based on the master as of 2cc6c812788281c05ca9687afd7bedf597b1e942). I've > aimed to accommodate everyone's feedback. I've retested on mac, Windows, Debian. Thanks, will review soon. > A few things remain that I'm aware of, outside of additional feedback. > > 1. Where precisely to put the user and lisp documentation. My inclination is that the lisp docs should join > doc/lispref/display.texi or os.texi as Michael suggests. But I don't know where to put the user docs. Perhaps > emacs.texi can have a new section called System Integration or something like that and we can refer to this > new feature and also perhaps the existing notifications.el package to unify that and provide a place for > future user-visible system-level features. The lispref part should be in os.texi, a new section after "Desktop Notifications". The user-level documentation could be a new section in frames.texi. > 2. The stanza regarding INITGUID in w32fns.c remains something that I don't know how to answer having > blindly copied that stanza from w32dwrite.c. I assume it is needed for some reason. See commit > b54fa15ffbb959e97ea0b77bfeb9ae412a63b4e8 for its proximate origin. AFAIU, it is needed to have mingw.org's headers to define DEFINE_GUID macro. So we need to keep it.
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 10 Dec 2025 04:00:23 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 09 23:00:23 2025
Received: from localhost ([127.0.0.1]:57345 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vTBNF-0002e2-Tg
for submit <at> debbugs.gnu.org; Tue, 09 Dec 2025 23:00:23 -0500
Received: from mail-vs1-xe2b.google.com ([2607:f8b0:4864:20::e2b]:60633)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1vTBND-0002Zo-2d
for 79859 <at> debbugs.gnu.org; Tue, 09 Dec 2025 23:00:20 -0500
Received: by mail-vs1-xe2b.google.com with SMTP id
ada2fe7eead31-5dfa9e34adbso4896145137.0
for <79859 <at> debbugs.gnu.org>; Tue, 09 Dec 2025 20:00:19 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1765339213; x=1765944013; darn=debbugs.gnu.org;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:from:to:cc:subject:date:message-id:reply-to;
bh=/G8DvR+cyjT7/2oY3rY5epKJyZSZh0uBzN92ujG0x5Q=;
b=EjUKyeE8jszzZvZdrDbD9Q+F6ivAb1BkH8BYcJDKdOfSDEOmkV63GoU9cgu+vGrIq2
2lkfS95EfyPqSN2XEE3Fqex6sb4xv2yJ+26R1sp53vJzu00Kk8ro8/fZVdu/HosBzViq
hA6O0szX55MBCDcRd6sCwpJ6XrpPwaytTe0iCOZN1vyEpuHrjiTe1U9w2VVUFv2hc/1l
Zvk1Q02nAG4lQEMAh/Wrn1mxHp9gSE+WC2Y/u+zPCiXoHRT6iPKagFB+IoKP4PljTmC4
NN9+5i0bphg4JitnzEtueAW8WzmTL4J5POMMbAq6+cbfjaJlBt8WT6mutUw8lkV3gAoF
2hOQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1765339213; x=1765944013;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=/G8DvR+cyjT7/2oY3rY5epKJyZSZh0uBzN92ujG0x5Q=;
b=YyESnCTwgiObroJTzIc1DcbLRzFGV97okrF65rhBbIiYrLXvcvAwBuSxp0i+YIoWSN
/hG0TQFvMMH4yVLpci5c5bWOt1hMjCVhKOLFq2YhNTnmZQHyiPVXhmnT2W5f5187iXZW
rXhtoFdEpggpwulEeKiglTektkTe6YIxB90DDFJsdv6HKzUUbH9lQUSgV4xWI/mDlipV
baKevLH5jGSPlIFCGLCiZBUzqK8RfjXlK0KXzAAs/S+jtFLKL8czeqawkgxQFASYJWPD
iTFAPzQwpUyrfjEhdz4VzlLSa723lAxAQ5bOTZcNz2fGV1OYnouc/umcuPnu+OTvxvoa
qanw==
X-Forwarded-Encrypted: i=1;
AJvYcCVp+aqxsU1UUsWFD6J3Xyd7MkBB5JzRV+bDTPV7QA5GFId1Vsl82/24YrBy9mr01GBVIxswKA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzQjl3ds9mZ1hTYPBCn3sysm/WKU0fBtdFbdQ5McMpl4gkzwICC
z7gJuf+nihjIGKOXy65Hu5T/61AjK3RSv+RFQrqXzneD7IaaxIVRn1WAEbj04nJ7Ye5Ny5ovoih
eeCjZVYjNVDQRm2/8SPthH67pPsnrmwM=
X-Gm-Gg: AY/fxX4NFQNT4s40DYRyMtv0awV1BEIuy/tgZjaBKl+xHHugc0nJGcLUUKNkOZPeDsP
OIdlMr+451A3whXbmA9X5k07bhbEo29ItlZEKmGPfmW31K/Dy6D1gKK3FoAkWDUzacFf2TmqxbE
VXX+yAxIsY1B3LpmQHEtuaPTNATTMztLeMlWxlNrek5XsG0QoCsXPbTNLXk2crbFSH4An5G7HN6
6eiLDrFKoGH2jD55jTvY+5WSCftFmODY7GXSd+0X9m3FhjS+Ko2yLKO9H1ipMRcB7OIdhs=
X-Google-Smtp-Source: AGHT+IFiBoXjL9NrKkUTkbKGeZLbDONPr+UnJzj4WuQdupw2rLFZw6tpDuJHtk7GdZl0aw5eLCUNXqnO6MEOP41qc+4=
X-Received: by 2002:a05:6102:cd4:b0:5db:32dc:f05b with SMTP id
ada2fe7eead31-5e571eedfb1mr349836137.42.1765339213274; Tue, 09 Dec 2025
20:00:13 -0800 (PST)
MIME-Version: 1.0
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<86bjkxhuca.fsf@HIDDEN>
<CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
<87pl932wqd.fsf@HIDDEN>
<CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN>
In-Reply-To: <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Tue, 9 Dec 2025 23:00:01 -0500
X-Gm-Features: AQt7F2oN7Ux2Ur-nl7HyFROmu9AioVza_ntn_sRaak-zTzE6cHlUVXC2bkxjupc
Message-ID: <CAN+1Hbp5jWDcVyQccbJbWDR8G1jpmbHY1UcY0jqLWJT4wpWv_Q@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
To: Michael Albinus <michael.albinus@HIDDEN>
Content-Type: multipart/alternative; boundary="000000000000b727f8064591103c"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
--000000000000b727f8064591103c
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Tue, Dec 9, 2025 at 11:11=E2=80=AFAM St=C3=A9phane Marks <shipmints@gmai=
l.com> wrote:
> On Thu, Nov 27, 2025 at 12:47=E2=80=AFPM Michael Albinus <michael.albinus=
@gmx.de>
> wrote:
>
>> St=C3=A9phane Marks <shipmints@HIDDEN> writes:
>>
>> Hi St=C3=A9phane,
>>
>> > Thank you for reviewing the patch and your thoughtful feedback. I'll
>> > incorporate more feedback after you get it compiled and you give it a
>> > try, and perhaps other people, too. My Windows 11 virtual machine is
>> > less than a real-world Windows set up, though sufficient for
>> > developing this feature.
>> >
>> > I've attached a patch rebased on master
>> > 2cc6c812788281c05ca9687afd7bedf597b1e942 which also incorporates your
>> > feedback.
>>
>> I gave it a try on my laptop (Fedora 43 +
>> gnome-shell-extension-dash-to-dock).
>> First impressions:
>>
>> - After calling 'M-x dock-mode', I get an error
>>
>> --8<---------------cut here---------------start------------->8---
>> dock--set-back-end: Symbol=E2=80=99s function definition is void:
>> dbus-list-activatable-names
>> --8<---------------cut here---------------end--------------->8---
>>
>> I guess a require is missing.
>>
>> - The examples in the "(dock-mode) Dock Usage Examples" node are working
>> except (dock-badge "Test"). I guess it is a restriction for the D-Bus
>> backend. It would be great if the documentation says which
>> functionality is implemented by which backend. Maybe I missed this?
>>
>> Comments, mainly from Eli are already give. Since I agree with them, I
>> will comment on the code only if there are further remarks by me.
>>
>> > From 86a1577ff8290291020b10294f65352773b69db3 Mon Sep 17 00:00:00 2001
>> > From: =3D?UTF-8?q?St=3DC3=3DA9phane=3D20Marks?=3D <shipmints@HIDDEN=
>
>> > Date: Thu, 20 Nov 2025 12:54:40 -0500
>> > Subject: [PATCH] Add system GUI dock integration.
>>
>> > --- a/doc/misc/Makefile.in
>> > +++ b/doc/misc/Makefile.in
>> > @@ -68,6 +68,7 @@ DOCMISC_W32 =3D
>> >
>> > ## Info files to build and install on all platforms.
>> > INFO_COMMON =3D auth autotype bovine calc ccmode cl dbus dired-x
>> \
>> > + dock-mode =
\
>> > ebrowse ede ediff edt efaq eglot eieio emacs-gnutls =
\
>> > emacs-mime epa erc ert eshell eudc eww flymake forms gnus =
\
>> > htmlfontify idlwave ido info.info mairix-el message mh-e =
\
>>
>> It shouldn't be a line of its own.
>>
>> > --- /dev/null
>> > +++ b/doc/misc/dock-mode.texi
>>
>> As Eli said, it shouldn't be a manual under doc/misc. Everything what's
>> said about calling 'dock-mode' and its user options fits into the
>> Emacs manual.
>>
>> The more technical details, function interfaces, belong to the Elisp
>> manual. We have there a node "(elisp) Desktop Notifications". dock-mode
>> is a comparable feature, I would call it "Taskbar Notifications". So the
>> information shall go there, directly after desktop notificatios.
>>
>> > +Your GNU/Linux Emacs instance should be launched via an appropriate
>> > +shell "desktop" file such as those distributed with Emacs; e.g.,
>> > +"etc/emacsclient.desktop".
>>
>> "etc/emacsclient.desktop" is internal to Emacsd; it isn't taken into
>> account by the GUI dock. So we shall speak about it more general.
>>
>> > +@node User Options
>> > +@chapter User Options
>> > +
>> > +@defvar dock-clear-attention-on-frame-focus
>>
>> Use @defopt.
>>
>> > +The variable @code{dock-clear-attention-on-frame-focus} can be
>>
>> The user option ...
>>
>> > +@defvar dock-dbus-desktop-file-name
>> > +The variable @code{dock-dbus-desktop-file-name} applies on GNU/Linux
>>
>> Dito.
>>
>> > +@defvar dock-dbus-timeout-ms
>> > +The variable @code{dock-dbus-timeout-ms} applies on GNU/Linux D-Bus
>>
>> Dito.
>>
>> I wouldn't use a trailing '-ms'. This is a technical detail, which isn't
>> used anywhere else in the D-Bus object names.
>>
>> > +systems, and can be customized to specify the number of milliseconds
>> > +Emacs will wait for D-Bus responses before timing out and considering
>> > +messages undeliverable. It defaults to 25000 milliseconds, which is
>> the
>> > +recommended default by the D-Bus package, which see, @pxref{Top,,,
>> dbus,
>> > +D-Bus integration in Emacs}.
>>
>> I wouldn't set the default to 25000, but to nil. This means "use the
>> D-Bus default", which is 25000 indeed. But we don't need to mirror it.
>>
>> > +@node Function Reference
>> > +@chapter Function Reference
>> > +
>> > +@findex dock-mode
>> > +@defun dock-mode
>>
>> As said by Eli, don't use @findex. And use "@deffn Command" in order to
>> show, that it is a command.
>>
>> > diff --git a/etc/NEWS b/etc/NEWS
>> > index fdb1ee02819..f5252cc5bf9 100644
>> > --- a/etc/NEWS
>> > +++ b/etc/NEWS
>> > @@ -2772,6 +2772,16 @@ determined by the new user option
>> 'pulse-face-duration'.
>> >
>> > ** Miscellaneous
>> >
>> > ++++
>> > +*** New feature 'dock-mode'.
>>
>> This belongs to "* New Modes and Packages in Emacs 31.1". It should be
>> headed by "** Dock mode".
>>
>> > +This package integrates Emacs with system GUI "docks" to display a do=
ck
>> > +icon badge, progress indicator, and attention alerts. Implementation=
s
>> > +are available for D-Bus platforms (e.g., KDE and GNOME), macOS/GNUste=
p,
>> > +and MS-Windows. On GNU/Linux systems, shell extensions such as
>> > +"dash-to-dock" may be required. See
>> > +<https://extensions.gnome.org/extension/307/dash-to-dock/> and
>> > +<https://wiki.ubuntu.com/Unity/LauncherAPI>.
>>
>> There shall be two subheadings. This one, and another one introducing
>> 'dock-mode' and the user options (for the users). And perhaps a third
>> one, speaking about the other functions.
>>
>> > --- /dev/null
>> > +++ b/lisp/dock-mode.el
>> > @@ -0,0 +1,455 @@
>> +
>> > +;;; Commentary:
>>
>> I'm missing the description of 'dock-mode' for enabling/disabling of the
>> feature.
>>
>> > +(defcustom dock-dbus-timeout-ms 25000
>> > + "Number of milliseconds to wait for D-Bus responses.
>> > +The default value mirrors the `dbus` default."
>> > + :type 'natnum
>> > + :version "31.1")
>>
>> As said, I would call it dock-dbus-timeout. And give it
>>
>> --8<---------------cut here---------------start------------->8---
>> :type '(choice (constant :tag "Default" nil) natnum)
>> --8<---------------cut here---------------end--------------->8---
>>
>
> Here's a fresh patch (still based on the master as of
> 2cc6c812788281c05ca9687afd7bedf597b1e942). I've aimed to accommodate
> everyone's feedback. I've retested on mac, Windows, Debian.
>
> The package is now called system-taskbar. I've updated the NEWS and
> documentation to make it clear that taskbar might be called other things
> and taskbar is an inclusive name.
>
> Rather than add hooks to progress reporter, which would be of global
> scope, I added optional update and done callbacks to make-progress-report=
er
> and that works swimmingly well. NEWS and documentation have been updated
> for that feature in addition to system-taskbar.
>
> I changed the w32 implementation for the taskbar features to be enabled
> relative to the current frame at the time rather than have singletons so
> I've removed the static variables. In the lisp w32 implementation, I add=
ed
> a hook to delete-frame-functions that disables taskbar effects for a fram=
e
> when it is killed. Eli, I don't know if this addresses your issue where
> you saw lingering artifacts when a frame or session is killed (I honestly
> don't know how Windows could allow the effects to linger when a process i=
s
> dead). I've tested on Windows 11, the only thing I have available and
> perhaps your Windows version behaves differently.
>
Eli, one other thing on w32. I did not check if the selected frame is a
minibuffer-only frame or a child frame. Let me know if you think those
tests or some other are necessary.
--000000000000b727f8064591103c
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">=
On Tue, Dec 9, 2025 at 11:11=E2=80=AFAM St=C3=A9phane Marks <<a href=3D"=
mailto:shipmints@HIDDEN">shipmints@HIDDEN</a>> wrote:</span></div>=
</div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=3D=
"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2=
04,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div style=
=3D"font-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-=
serif">On Thu, Nov 27, 2025 at 12:47=E2=80=AFPM Michael Albinus <<a href=
=3D"mailto:michael.albinus@HIDDEN" target=3D"_blank">michael.albinus@HIDDEN=
</a>> wrote:</span></div></div><div class=3D"gmail_quote"><blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid=
rgb(204,204,204);padding-left:1ex">St=C3=A9phane Marks <<a href=3D"mail=
to:shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> write=
s:<br>
<br>
Hi St=C3=A9phane,<br>
<br>
> Thank you for reviewing the patch and your thoughtful feedback.=C2=A0 =
I'll<br>
> incorporate more feedback after you get it compiled and you give it a<=
br>
> try, and perhaps other people, too.=C2=A0 My Windows 11 virtual machin=
e is<br>
> less than a real-world Windows set up, though sufficient for<br>
> developing this feature.<br>
><br>
> I've attached a patch rebased on master<br>
> 2cc6c812788281c05ca9687afd7bedf597b1e942 which also incorporates your<=
br>
> feedback.<br>
<br>
I gave it a try on my laptop (Fedora 43 + gnome-shell-extension-dash-to-doc=
k).<br>
First impressions:<br>
<br>
- After calling 'M-x dock-mode', I get an error<br>
<br>
--8<---------------cut here---------------start------------->8---<br>
dock--set-back-end: Symbol=E2=80=99s function definition is void: dbus-list=
-activatable-names<br>
--8<---------------cut here---------------end--------------->8---<br>
<br>
=C2=A0 I guess a require is missing.<br>
<br>
- The examples in the "(dock-mode) Dock Usage Examples" node are =
working<br>
=C2=A0 except (dock-badge "Test"). I guess it is a restriction fo=
r the D-Bus<br>
=C2=A0 backend. It would be great if the documentation says which<br>
=C2=A0 functionality is implemented by which backend. Maybe I missed this?<=
br>
<br>
Comments, mainly from Eli are already give. Since I agree with them, I<br>
will comment on the code only if there are further remarks by me.<br>
<br>
> From 86a1577ff8290291020b10294f65352773b69db3 Mon Sep 17 00:00:00 2001=
<br>
> From: =3D?UTF-8?q?St=3DC3=3DA9phane=3D20Marks?=3D <<a href=3D"mailt=
o:shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>><br>
> Date: Thu, 20 Nov 2025 12:54:40 -0500<br>
> Subject: [PATCH] Add system GUI dock integration.<br>
<br>
> --- a/doc/misc/Makefile.in<br>
> +++ b/doc/misc/Makefile.in<br>
> @@ -68,6 +68,7 @@ DOCMISC_W32 =3D<br>
>=C2=A0 <br>
>=C2=A0 ## Info files to build and install on all platforms.<br>
>=C2=A0 INFO_COMMON =3D auth autotype bovine calc ccmode cl dbus dired-x=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\<br>
> +=C2=A0 =C2=A0 =C2=A0dock-mode=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0\<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0ebrowse ede ediff edt efaq eglot eieio emacs=
-gnutls=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0emacs-mime epa erc ert eshell eudc eww flyma=
ke forms gnus=C2=A0 =C2=A0 =C2=A0 =C2=A0\<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0htmlfontify idlwave ido <a href=3D"http://in=
fo.info" rel=3D"noreferrer" target=3D"_blank">info.info</a> mairix-el messa=
ge mh-e=C2=A0 =C2=A0 =C2=A0 =C2=A0 \<br>
<br>
It shouldn't be a line of its own.<br>
<br>
> --- /dev/null<br>
> +++ b/doc/misc/dock-mode.texi<br>
<br>
As Eli said, it shouldn't be a manual under doc/misc. Everything what&#=
39;s<br>
said about calling 'dock-mode' and its user options fits into the<b=
r>
Emacs manual.<br>
<br>
The more technical details, function interfaces, belong to the Elisp<br>
manual. We have there a node "(elisp) Desktop Notifications". doc=
k-mode<br>
is a comparable feature, I would call it "Taskbar Notifications".=
So the<br>
information shall=C2=A0 go there, directly after desktop notificatios.<br>
<br>
> +Your GNU/Linux Emacs instance should be launched via an appropriate<b=
r>
> +shell "desktop" file such as those distributed with Emacs; =
e.g.,<br>
> +"etc/emacsclient.desktop".<br>
<br>
"etc/emacsclient.desktop" is internal to Emacsd; it isn't tak=
en into<br>
account by the GUI dock. So we shall speak about it more general.<br>
<br>
> +@node User Options<br>
> +@chapter User Options<br>
> +<br>
> +@defvar dock-clear-attention-on-frame-focus<br>
<br>
Use @defopt.<br>
<br>
> +The variable @code{dock-clear-attention-on-frame-focus} can be<br>
<br>
The user option ...<br>
<br>
> +@defvar dock-dbus-desktop-file-name<br>
> +The variable @code{dock-dbus-desktop-file-name} applies on GNU/Linux<=
br>
<br>
Dito.<br>
<br>
> +@defvar dock-dbus-timeout-ms<br>
> +The variable @code{dock-dbus-timeout-ms} applies on GNU/Linux D-Bus<b=
r>
<br>
Dito.<br>
<br>
I wouldn't use a trailing '-ms'. This is a technical detail, wh=
ich isn't<br>
used anywhere else in the D-Bus object names.<br>
<br>
> +systems, and can be customized to specify the number of milliseconds<=
br>
> +Emacs will wait for D-Bus responses before timing out and considering=
<br>
> +messages undeliverable.=C2=A0 It defaults to 25000 milliseconds, whic=
h is the<br>
> +recommended default by the D-Bus package, which see, @pxref{Top,,, db=
us,<br>
> +D-Bus integration in Emacs}.<br>
<br>
I wouldn't set the default to 25000, but to nil. This means "use t=
he<br>
D-Bus default", which is 25000 indeed. But we don't need to mirror=
it.<br>
<br>
> +@node Function Reference<br>
> +@chapter Function Reference<br>
> +<br>
> +@findex dock-mode<br>
> +@defun dock-mode<br>
<br>
As said by Eli, don't use @findex. And use "@deffn Command" i=
n order to<br>
show, that it is a command.<br>
<br>
> diff --git a/etc/NEWS b/etc/NEWS<br>
> index fdb1ee02819..f5252cc5bf9 100644<br>
> --- a/etc/NEWS<br>
> +++ b/etc/NEWS<br>
> @@ -2772,6 +2772,16 @@ determined by the new user option 'pulse-fa=
ce-duration'.<br>
>=C2=A0 <br>
>=C2=A0 ** Miscellaneous<br>
>=C2=A0 <br>
> ++++<br>
> +*** New feature 'dock-mode'.<br>
<br>
This belongs to "* New Modes and Packages in Emacs 31.1". It shou=
ld be<br>
headed by "** Dock mode".<br>
<br>
> +This package integrates Emacs with system GUI "docks" to di=
splay a dock<br>
> +icon badge, progress indicator, and attention alerts.=C2=A0 Implement=
ations<br>
> +are available for D-Bus platforms (e.g., KDE and GNOME), macOS/GNUste=
p,<br>
> +and MS-Windows.=C2=A0 On GNU/Linux systems, shell extensions such as<=
br>
> +"dash-to-dock" may be required.=C2=A0 See<br>
> +<<a href=3D"https://extensions.gnome.org/extension/307/dash-to-doc=
k/" rel=3D"noreferrer" target=3D"_blank">https://extensions.gnome.org/exten=
sion/307/dash-to-dock/</a>> and<br>
> +<<a href=3D"https://wiki.ubuntu.com/Unity/LauncherAPI" rel=3D"nore=
ferrer" target=3D"_blank">https://wiki.ubuntu.com/Unity/LauncherAPI</a>>=
.<br>
<br>
There shall be two subheadings. This one, and another one introducing<br>
'dock-mode' and the user options (for the users). And perhaps a thi=
rd<br>
one, speaking about the other functions.<br>
<br>
> --- /dev/null<br>
> +++ b/lisp/dock-mode.el<br>
> @@ -0,0 +1,455 @@<br>
=C2=A0+<br>
> +;;; Commentary:<br>
<br>
I'm missing the description of 'dock-mode' for enabling/disabli=
ng of the<br>
feature.<br>
<br>
> +(defcustom dock-dbus-timeout-ms 25000<br>
> +=C2=A0 "Number of milliseconds to wait for D-Bus responses.<br>
> +The default value mirrors the `dbus` default."<br>
> +=C2=A0 :type 'natnum<br>
> +=C2=A0 :version "31.1")<br>
<br>
As said, I would call it dock-dbus-timeout. And give it<br>
<br>
--8<---------------cut here---------------start------------->8---<br>
:type '(choice (constant :tag "Default" nil) natnum)<br>
--8<---------------cut here---------------end--------------->8---<br>=
</blockquote><div><br></div><div style=3D"font-family:monospace">Here's=
a fresh patch (still based on the master as of 2cc6c812788281c05ca9687afd7=
bedf597b1e942).=C2=A0 I've aimed to accommodate everyone's feedback=
.=C2=A0 I've retested on mac, Windows, Debian.</div><div style=3D"font-=
family:monospace"><br></div><div style=3D"font-family:monospace">The packag=
e is now called system-taskbar.=C2=A0 I've updated the NEWS and documen=
tation to make it clear that taskbar might be called other things and taskb=
ar is an inclusive name.</div><div style=3D"font-family:monospace"><br></di=
v><div style=3D"font-family:monospace">Rather than add hooks to progress re=
porter, which would be of global scope, I added optional update and done ca=
llbacks to make-progress-reporter and that works swimmingly well.=C2=A0 NEW=
S and documentation have been updated for that feature in addition to syste=
m-taskbar.</div><div style=3D"font-family:monospace"><br></div><div style=
=3D"font-family:monospace">I changed the w32 implementation for the taskbar=
features to be enabled relative to the current frame at the time rather th=
an have singletons so I've removed the static variables.=C2=A0 In the l=
isp w32 implementation, I added a hook to=C2=A0delete-frame-functions that =
disables taskbar effects for a frame when it is killed.=C2=A0 Eli, I don=
9;t know if this addresses your issue where you saw lingering artifacts whe=
n a frame or session is killed (I honestly don't know how Windows could=
allow the effects to linger when a process is dead).=C2=A0 I've tested=
on Windows 11, the only thing I have available and perhaps your Windows ve=
rsion behaves differently.</div></div></div></blockquote><div><br></div><di=
v class=3D"gmail_default" style=3D"font-family:monospace">Eli, one other th=
ing on w32.=C2=A0 I did not check if the selected frame is a minibuffer-onl=
y frame or a child frame. Let me know if you think those tests or some othe=
r are necessary.</div></div></div>
--000000000000b727f8064591103c--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 9 Dec 2025 16:11:38 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 09 11:11:38 2025
Received: from localhost ([127.0.0.1]:55031 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vT0JO-00040C-Ni
for submit <at> debbugs.gnu.org; Tue, 09 Dec 2025 11:11:38 -0500
Received: from mail-vs1-xe31.google.com ([2607:f8b0:4864:20::e31]:57455)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1vT0JL-0003zv-Ue
for 79859 <at> debbugs.gnu.org; Tue, 09 Dec 2025 11:11:36 -0500
Received: by mail-vs1-xe31.google.com with SMTP id
ada2fe7eead31-5dbdb139b5bso4988087137.2
for <79859 <at> debbugs.gnu.org>; Tue, 09 Dec 2025 08:11:35 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1765296690; x=1765901490; darn=debbugs.gnu.org;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:from:to:cc:subject:date:message-id:reply-to;
bh=r9SjHILi7UiX+vyS163Im0AR1/Dxd2mBqMHU64zrtM8=;
b=aJlFDdyA7K9YopLFmLV+xDk5Sap4hZ0xYbg4fgvHU1H/Cz+oZv3i8tfmbzoBJ1/rre
ptxBaoUDTCtx6/TgVC3/lQmf3W+YaWpdwa1Cbxm0PVVO8MiMo3yoRxhZm3lGo5M5SfrI
Mc3pEphEdZWA5vHOIPjRjwdTzdH9dXQYb4I+wR5HNOGCDWPmyUVZ+Ag2TLLSYDcG+ikI
36oov2sSTmiAd2LUl41UYL8VSJO4nlLi8LhtGfATCtzF0VUxTAusCGqeX7+QwioMwZSv
XscSUi7DrQmqfGWI+kjxvGYthDGQK1yLY2T4c7ZFAsyJ0UFCrhEjph+KBZb1JKdFbcIf
hStg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1765296690; x=1765901490;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=r9SjHILi7UiX+vyS163Im0AR1/Dxd2mBqMHU64zrtM8=;
b=hhUTQ6ov61cTe4ejaGJ2BUBhuBiGwrb2bGgkSmRUEJN9yMR/7rY6GhahuThYa9jaNx
3Ewk+crVAsOeFzL7DNv3/Ru4BLP2NhwSHxg+OWr260jZXngDeVVXZA/HqNlsYykPyDRP
uwni5xmu8YAvsJtu/TVR4Yn6fQl+0ILMkp9yaj/SrdiXFFNVlmK8rqRF7954U5VGW4MJ
myFynklsrTSQaDm72JUXCFIZO9TsxhyyboJhXqMYfIw6UCyTqICMXHAVSwVRiFFrycq9
kBRx+3y9eI+HarvLxO8mSrp6yBDThQ3B5V3sGEZ4QK49YNdartGvT5znhNl51qNYnGCE
QuLg==
X-Forwarded-Encrypted: i=1;
AJvYcCWJCZmUOiOCWzsTaG0yz/87SICmBViB9m67oO02vmLv+mU5XTO5UrprB5chd7JD691fGdRKbw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yy+jx+NfFnDI1zHPTUphjRsbxloG1zxXNwuJJJ4Z6K4MiIDrSF9
ciwIEg0DwxJpqc1l2FxcwnDdmVDgiSV5N4doIxrv6nyo+3ttfB//OukUVqCnJMao/QVIU+FWGwx
g63wm+CALpoxc3iL54w0vvyXw5suZgfm3ToH5
X-Gm-Gg: ASbGncunMmubpu6SqcAXANeH6wgXmdfjA8l/roubW+SONT1HAyEYE2wk3XIZ9PnnavV
nePxMaLLuJgkD3Df2OfJz4gZ5YCvDcwsTaUfbVD0k1YRRF4Ot+xheyfY7owe4XrV7bB1MGUephM
jxARwFBnXBlSJLvobJcbVWBj6dRuDocuTWnwp6FfKHuJJKiR4DAN+0ZvZKliWCStwHY4JapJwNh
YJ72dj+6M3wyh+FBnCvz60waWdi+VzbwmF6h/2zIatdgRqKoUjnoRMkRR1JYimHgXw4ZyY=
X-Google-Smtp-Source: AGHT+IHHBmCemzkenD4hdVuQ7drJGFofQ7mSyz0cRuLwmlUcskaSFuWl9hLZktMhXZR5GnrYZuVqTNaAPvKcF3IUtpU=
X-Received: by 2002:a05:6102:1613:b0:5db:f15a:5394 with SMTP id
ada2fe7eead31-5e52c99b8f3mr4180512137.2.1765296686726; Tue, 09 Dec 2025
08:11:26 -0800 (PST)
MIME-Version: 1.0
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<86bjkxhuca.fsf@HIDDEN>
<CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
<87pl932wqd.fsf@HIDDEN>
In-Reply-To: <87pl932wqd.fsf@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Tue, 9 Dec 2025 11:11:14 -0500
X-Gm-Features: AQt7F2pSrzhI5Qv3nmjsDjL4oYT_Ml3NJK7nX8wFKzILdAHdhnvbWUQ-DQtGVuw
Message-ID: <CAN+1Hbrh4g3i5P_yUzNnDR2Z-NuDdyy=e1iB=s6zTZD-KTu6HQ@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
To: Michael Albinus <michael.albinus@HIDDEN>
Content-Type: multipart/mixed; boundary="000000000000ef978c0645872975"
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
--000000000000ef978c0645872975
Content-Type: multipart/alternative; boundary="000000000000ef978b0645872973"
--000000000000ef978b0645872973
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Thu, Nov 27, 2025 at 12:47=E2=80=AFPM Michael Albinus <michael.albinus@g=
mx.de>
wrote:
> St=C3=A9phane Marks <shipmints@HIDDEN> writes:
>
> Hi St=C3=A9phane,
>
> > Thank you for reviewing the patch and your thoughtful feedback. I'll
> > incorporate more feedback after you get it compiled and you give it a
> > try, and perhaps other people, too. My Windows 11 virtual machine is
> > less than a real-world Windows set up, though sufficient for
> > developing this feature.
> >
> > I've attached a patch rebased on master
> > 2cc6c812788281c05ca9687afd7bedf597b1e942 which also incorporates your
> > feedback.
>
> I gave it a try on my laptop (Fedora 43 +
> gnome-shell-extension-dash-to-dock).
> First impressions:
>
> - After calling 'M-x dock-mode', I get an error
>
> --8<---------------cut here---------------start------------->8---
> dock--set-back-end: Symbol=E2=80=99s function definition is void:
> dbus-list-activatable-names
> --8<---------------cut here---------------end--------------->8---
>
> I guess a require is missing.
>
> - The examples in the "(dock-mode) Dock Usage Examples" node are working
> except (dock-badge "Test"). I guess it is a restriction for the D-Bus
> backend. It would be great if the documentation says which
> functionality is implemented by which backend. Maybe I missed this?
>
> Comments, mainly from Eli are already give. Since I agree with them, I
> will comment on the code only if there are further remarks by me.
>
> > From 86a1577ff8290291020b10294f65352773b69db3 Mon Sep 17 00:00:00 2001
> > From: =3D?UTF-8?q?St=3DC3=3DA9phane=3D20Marks?=3D <shipmints@HIDDEN>
> > Date: Thu, 20 Nov 2025 12:54:40 -0500
> > Subject: [PATCH] Add system GUI dock integration.
>
> > --- a/doc/misc/Makefile.in
> > +++ b/doc/misc/Makefile.in
> > @@ -68,6 +68,7 @@ DOCMISC_W32 =3D
> >
> > ## Info files to build and install on all platforms.
> > INFO_COMMON =3D auth autotype bovine calc ccmode cl dbus dired-x
> \
> > + dock-mode \
> > ebrowse ede ediff edt efaq eglot eieio emacs-gnutls \
> > emacs-mime epa erc ert eshell eudc eww flymake forms gnus \
> > htmlfontify idlwave ido info.info mairix-el message mh-e \
>
> It shouldn't be a line of its own.
>
> > --- /dev/null
> > +++ b/doc/misc/dock-mode.texi
>
> As Eli said, it shouldn't be a manual under doc/misc. Everything what's
> said about calling 'dock-mode' and its user options fits into the
> Emacs manual.
>
> The more technical details, function interfaces, belong to the Elisp
> manual. We have there a node "(elisp) Desktop Notifications". dock-mode
> is a comparable feature, I would call it "Taskbar Notifications". So the
> information shall go there, directly after desktop notificatios.
>
> > +Your GNU/Linux Emacs instance should be launched via an appropriate
> > +shell "desktop" file such as those distributed with Emacs; e.g.,
> > +"etc/emacsclient.desktop".
>
> "etc/emacsclient.desktop" is internal to Emacsd; it isn't taken into
> account by the GUI dock. So we shall speak about it more general.
>
> > +@node User Options
> > +@chapter User Options
> > +
> > +@defvar dock-clear-attention-on-frame-focus
>
> Use @defopt.
>
> > +The variable @code{dock-clear-attention-on-frame-focus} can be
>
> The user option ...
>
> > +@defvar dock-dbus-desktop-file-name
> > +The variable @code{dock-dbus-desktop-file-name} applies on GNU/Linux
>
> Dito.
>
> > +@defvar dock-dbus-timeout-ms
> > +The variable @code{dock-dbus-timeout-ms} applies on GNU/Linux D-Bus
>
> Dito.
>
> I wouldn't use a trailing '-ms'. This is a technical detail, which isn't
> used anywhere else in the D-Bus object names.
>
> > +systems, and can be customized to specify the number of milliseconds
> > +Emacs will wait for D-Bus responses before timing out and considering
> > +messages undeliverable. It defaults to 25000 milliseconds, which is t=
he
> > +recommended default by the D-Bus package, which see, @pxref{Top,,, dbu=
s,
> > +D-Bus integration in Emacs}.
>
> I wouldn't set the default to 25000, but to nil. This means "use the
> D-Bus default", which is 25000 indeed. But we don't need to mirror it.
>
> > +@node Function Reference
> > +@chapter Function Reference
> > +
> > +@findex dock-mode
> > +@defun dock-mode
>
> As said by Eli, don't use @findex. And use "@deffn Command" in order to
> show, that it is a command.
>
> > diff --git a/etc/NEWS b/etc/NEWS
> > index fdb1ee02819..f5252cc5bf9 100644
> > --- a/etc/NEWS
> > +++ b/etc/NEWS
> > @@ -2772,6 +2772,16 @@ determined by the new user option
> 'pulse-face-duration'.
> >
> > ** Miscellaneous
> >
> > ++++
> > +*** New feature 'dock-mode'.
>
> This belongs to "* New Modes and Packages in Emacs 31.1". It should be
> headed by "** Dock mode".
>
> > +This package integrates Emacs with system GUI "docks" to display a doc=
k
> > +icon badge, progress indicator, and attention alerts. Implementations
> > +are available for D-Bus platforms (e.g., KDE and GNOME), macOS/GNUstep=
,
> > +and MS-Windows. On GNU/Linux systems, shell extensions such as
> > +"dash-to-dock" may be required. See
> > +<https://extensions.gnome.org/extension/307/dash-to-dock/> and
> > +<https://wiki.ubuntu.com/Unity/LauncherAPI>.
>
> There shall be two subheadings. This one, and another one introducing
> 'dock-mode' and the user options (for the users). And perhaps a third
> one, speaking about the other functions.
>
> > --- /dev/null
> > +++ b/lisp/dock-mode.el
> > @@ -0,0 +1,455 @@
> +
> > +;;; Commentary:
>
> I'm missing the description of 'dock-mode' for enabling/disabling of the
> feature.
>
> > +(defcustom dock-dbus-timeout-ms 25000
> > + "Number of milliseconds to wait for D-Bus responses.
> > +The default value mirrors the `dbus` default."
> > + :type 'natnum
> > + :version "31.1")
>
> As said, I would call it dock-dbus-timeout. And give it
>
> --8<---------------cut here---------------start------------->8---
> :type '(choice (constant :tag "Default" nil) natnum)
> --8<---------------cut here---------------end--------------->8---
>
Here's a fresh patch (still based on the master as of
2cc6c812788281c05ca9687afd7bedf597b1e942). I've aimed to accommodate
everyone's feedback. I've retested on mac, Windows, Debian.
The package is now called system-taskbar. I've updated the NEWS and
documentation to make it clear that taskbar might be called other things
and taskbar is an inclusive name.
Rather than add hooks to progress reporter, which would be of global scope,
I added optional update and done callbacks to make-progress-reporter and
that works swimmingly well. NEWS and documentation have been updated for
that feature in addition to system-taskbar.
I changed the w32 implementation for the taskbar features to be enabled
relative to the current frame at the time rather than have singletons so
I've removed the static variables. In the lisp w32 implementation, I added
a hook to delete-frame-functions that disables taskbar effects for a frame
when it is killed. Eli, I don't know if this addresses your issue where
you saw lingering artifacts when a frame or session is killed (I honestly
don't know how Windows could allow the effects to linger when a process is
dead). I've tested on Windows 11, the only thing I have available and
perhaps your Windows version behaves differently.
A few things remain that I'm aware of, outside of additional feedback.
1. Where precisely to put the user and lisp documentation. My inclination
is that the lisp docs should join doc/lispref/display.texi or os.texi as
Michael suggests. But I don't know where to put the user docs. Perhaps
emacs.texi can have a new section called System Integration or something
like that and we can refer to this new feature and also perhaps the
existing notifications.el package to unify that and provide a place for
future user-visible system-level features.
I've refined the system-taskbar.texi as a standalone file in the root
directory for the time being and for review. I will update the xrefs when
I know where the documentation is going to live.
2. The stanza regarding INITGUID in w32fns.c remains something that I don't
know how to answer having blindly copied that stanza from w32dwrite.c. I
assume it is needed for some reason. See
commit b54fa15ffbb959e97ea0b77bfeb9ae412a63b4e8 for its proximate origin.
-St=C3=A9phane
--000000000000ef978b0645872973
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">=
On Thu, Nov 27, 2025 at 12:47=E2=80=AFPM Michael Albinus <<a href=3D"mai=
lto:michael.albinus@HIDDEN">michael.albinus@HIDDEN</a>> wrote:</span></d=
iv></div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex">St=C3=A9phane Marks <<a href=3D"mailto:=
shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> writes:<=
br>
<br>
Hi St=C3=A9phane,<br>
<br>
> Thank you for reviewing the patch and your thoughtful feedback.=C2=A0 =
I'll<br>
> incorporate more feedback after you get it compiled and you give it a<=
br>
> try, and perhaps other people, too.=C2=A0 My Windows 11 virtual machin=
e is<br>
> less than a real-world Windows set up, though sufficient for<br>
> developing this feature.<br>
><br>
> I've attached a patch rebased on master<br>
> 2cc6c812788281c05ca9687afd7bedf597b1e942 which also incorporates your<=
br>
> feedback.<br>
<br>
I gave it a try on my laptop (Fedora 43 + gnome-shell-extension-dash-to-doc=
k).<br>
First impressions:<br>
<br>
- After calling 'M-x dock-mode', I get an error<br>
<br>
--8<---------------cut here---------------start------------->8---<br>
dock--set-back-end: Symbol=E2=80=99s function definition is void: dbus-list=
-activatable-names<br>
--8<---------------cut here---------------end--------------->8---<br>
<br>
=C2=A0 I guess a require is missing.<br>
<br>
- The examples in the "(dock-mode) Dock Usage Examples" node are =
working<br>
=C2=A0 except (dock-badge "Test"). I guess it is a restriction fo=
r the D-Bus<br>
=C2=A0 backend. It would be great if the documentation says which<br>
=C2=A0 functionality is implemented by which backend. Maybe I missed this?<=
br>
<br>
Comments, mainly from Eli are already give. Since I agree with them, I<br>
will comment on the code only if there are further remarks by me.<br>
<br>
> From 86a1577ff8290291020b10294f65352773b69db3 Mon Sep 17 00:00:00 2001=
<br>
> From: =3D?UTF-8?q?St=3DC3=3DA9phane=3D20Marks?=3D <<a href=3D"mailt=
o:shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>><br>
> Date: Thu, 20 Nov 2025 12:54:40 -0500<br>
> Subject: [PATCH] Add system GUI dock integration.<br>
<br>
> --- a/doc/misc/Makefile.in<br>
> +++ b/doc/misc/Makefile.in<br>
> @@ -68,6 +68,7 @@ DOCMISC_W32 =3D<br>
>=C2=A0 <br>
>=C2=A0 ## Info files to build and install on all platforms.<br>
>=C2=A0 INFO_COMMON =3D auth autotype bovine calc ccmode cl dbus dired-x=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\<br>
> +=C2=A0 =C2=A0 =C2=A0dock-mode=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0\<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0ebrowse ede ediff edt efaq eglot eieio emacs=
-gnutls=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0emacs-mime epa erc ert eshell eudc eww flyma=
ke forms gnus=C2=A0 =C2=A0 =C2=A0 =C2=A0\<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0htmlfontify idlwave ido <a href=3D"http://in=
fo.info" rel=3D"noreferrer" target=3D"_blank">info.info</a> mairix-el messa=
ge mh-e=C2=A0 =C2=A0 =C2=A0 =C2=A0 \<br>
<br>
It shouldn't be a line of its own.<br>
<br>
> --- /dev/null<br>
> +++ b/doc/misc/dock-mode.texi<br>
<br>
As Eli said, it shouldn't be a manual under doc/misc. Everything what&#=
39;s<br>
said about calling 'dock-mode' and its user options fits into the<b=
r>
Emacs manual.<br>
<br>
The more technical details, function interfaces, belong to the Elisp<br>
manual. We have there a node "(elisp) Desktop Notifications". doc=
k-mode<br>
is a comparable feature, I would call it "Taskbar Notifications".=
So the<br>
information shall=C2=A0 go there, directly after desktop notificatios.<br>
<br>
> +Your GNU/Linux Emacs instance should be launched via an appropriate<b=
r>
> +shell "desktop" file such as those distributed with Emacs; =
e.g.,<br>
> +"etc/emacsclient.desktop".<br>
<br>
"etc/emacsclient.desktop" is internal to Emacsd; it isn't tak=
en into<br>
account by the GUI dock. So we shall speak about it more general.<br>
<br>
> +@node User Options<br>
> +@chapter User Options<br>
> +<br>
> +@defvar dock-clear-attention-on-frame-focus<br>
<br>
Use @defopt.<br>
<br>
> +The variable @code{dock-clear-attention-on-frame-focus} can be<br>
<br>
The user option ...<br>
<br>
> +@defvar dock-dbus-desktop-file-name<br>
> +The variable @code{dock-dbus-desktop-file-name} applies on GNU/Linux<=
br>
<br>
Dito.<br>
<br>
> +@defvar dock-dbus-timeout-ms<br>
> +The variable @code{dock-dbus-timeout-ms} applies on GNU/Linux D-Bus<b=
r>
<br>
Dito.<br>
<br>
I wouldn't use a trailing '-ms'. This is a technical detail, wh=
ich isn't<br>
used anywhere else in the D-Bus object names.<br>
<br>
> +systems, and can be customized to specify the number of milliseconds<=
br>
> +Emacs will wait for D-Bus responses before timing out and considering=
<br>
> +messages undeliverable.=C2=A0 It defaults to 25000 milliseconds, whic=
h is the<br>
> +recommended default by the D-Bus package, which see, @pxref{Top,,, db=
us,<br>
> +D-Bus integration in Emacs}.<br>
<br>
I wouldn't set the default to 25000, but to nil. This means "use t=
he<br>
D-Bus default", which is 25000 indeed. But we don't need to mirror=
it.<br>
<br>
> +@node Function Reference<br>
> +@chapter Function Reference<br>
> +<br>
> +@findex dock-mode<br>
> +@defun dock-mode<br>
<br>
As said by Eli, don't use @findex. And use "@deffn Command" i=
n order to<br>
show, that it is a command.<br>
<br>
> diff --git a/etc/NEWS b/etc/NEWS<br>
> index fdb1ee02819..f5252cc5bf9 100644<br>
> --- a/etc/NEWS<br>
> +++ b/etc/NEWS<br>
> @@ -2772,6 +2772,16 @@ determined by the new user option 'pulse-fa=
ce-duration'.<br>
>=C2=A0 <br>
>=C2=A0 ** Miscellaneous<br>
>=C2=A0 <br>
> ++++<br>
> +*** New feature 'dock-mode'.<br>
<br>
This belongs to "* New Modes and Packages in Emacs 31.1". It shou=
ld be<br>
headed by "** Dock mode".<br>
<br>
> +This package integrates Emacs with system GUI "docks" to di=
splay a dock<br>
> +icon badge, progress indicator, and attention alerts.=C2=A0 Implement=
ations<br>
> +are available for D-Bus platforms (e.g., KDE and GNOME), macOS/GNUste=
p,<br>
> +and MS-Windows.=C2=A0 On GNU/Linux systems, shell extensions such as<=
br>
> +"dash-to-dock" may be required.=C2=A0 See<br>
> +<<a href=3D"https://extensions.gnome.org/extension/307/dash-to-doc=
k/" rel=3D"noreferrer" target=3D"_blank">https://extensions.gnome.org/exten=
sion/307/dash-to-dock/</a>> and<br>
> +<<a href=3D"https://wiki.ubuntu.com/Unity/LauncherAPI" rel=3D"nore=
ferrer" target=3D"_blank">https://wiki.ubuntu.com/Unity/LauncherAPI</a>>=
.<br>
<br>
There shall be two subheadings. This one, and another one introducing<br>
'dock-mode' and the user options (for the users). And perhaps a thi=
rd<br>
one, speaking about the other functions.<br>
<br>
> --- /dev/null<br>
> +++ b/lisp/dock-mode.el<br>
> @@ -0,0 +1,455 @@<br>
=C2=A0+<br>
> +;;; Commentary:<br>
<br>
I'm missing the description of 'dock-mode' for enabling/disabli=
ng of the<br>
feature.<br>
<br>
> +(defcustom dock-dbus-timeout-ms 25000<br>
> +=C2=A0 "Number of milliseconds to wait for D-Bus responses.<br>
> +The default value mirrors the `dbus` default."<br>
> +=C2=A0 :type 'natnum<br>
> +=C2=A0 :version "31.1")<br>
<br>
As said, I would call it dock-dbus-timeout. And give it<br>
<br>
--8<---------------cut here---------------start------------->8---<br>
:type '(choice (constant :tag "Default" nil) natnum)<br>
--8<---------------cut here---------------end--------------->8---<br>=
</blockquote><div><br></div><div class=3D"gmail_default" style=3D"font-fami=
ly:monospace">Here's a fresh patch (still based on the master as of 2cc=
6c812788281c05ca9687afd7bedf597b1e942).=C2=A0 I've aimed to accommodate=
everyone's feedback.=C2=A0 I've retested on mac, Windows, Debian.<=
/div><div class=3D"gmail_default" style=3D"font-family:monospace"><br></div=
><div class=3D"gmail_default" style=3D"font-family:monospace">The package i=
s now called system-taskbar.=C2=A0 I've updated the NEWS and documentat=
ion to make it clear that taskbar might be called other things and taskbar =
is an inclusive name.</div><div class=3D"gmail_default" style=3D"font-famil=
y:monospace"><br></div><div class=3D"gmail_default" style=3D"font-family:mo=
nospace">Rather than add hooks to progress reporter, which would be of glob=
al scope, I added optional update and done callbacks to make-progress-repor=
ter and that works swimmingly well.=C2=A0 NEWS and documentation have been =
updated for that feature in addition to system-taskbar.</div><div class=3D"=
gmail_default" style=3D"font-family:monospace"><br></div><div class=3D"gmai=
l_default" style=3D"font-family:monospace">I changed the w32 implementation=
for the taskbar features to be enabled relative to the current frame at th=
e time rather than have singletons so I've removed the static variables=
.=C2=A0 In the lisp w32 implementation, I added a hook to=C2=A0delete-frame=
-functions that disables taskbar effects for a frame when it is killed.=C2=
=A0 Eli, I don't know if this addresses your issue where you saw linger=
ing artifacts when a frame or session is killed (I honestly don't know =
how Windows could allow the effects to linger when a process is dead).=C2=
=A0 I've tested on Windows 11, the only thing I have available and perh=
aps your Windows version behaves differently.</div><div class=3D"gmail_defa=
ult" style=3D"font-family:monospace"><br></div><div class=3D"gmail_default"=
style=3D"font-family:monospace">A few things remain that I'm aware of,=
=C2=A0outside of additional feedback.</div><div class=3D"gmail_default" sty=
le=3D"font-family:monospace"><br></div><div class=3D"gmail_default" style=
=3D"font-family:monospace">1. Where precisely to put the user and lisp docu=
mentation.=C2=A0 My inclination is that the lisp docs should join doc/lispr=
ef/display.texi=C2=A0or os.texi as Michael suggests. But I don't know w=
here to put the user docs.=C2=A0 Perhaps emacs.texi=C2=A0can have a new sec=
tion called System Integration or something like that and we can refer to t=
his new feature and also perhaps the existing notifications.el package to u=
nify that and provide a place for future user-visible system-level features=
.</div><div class=3D"gmail_default" style=3D"font-family:monospace"><br></d=
iv><div class=3D"gmail_default" style=3D"font-family:monospace">I've re=
fined the system-taskbar.texi as a standalone file in the root directory fo=
r the time being and for review.=C2=A0 I will update the xrefs when I know =
where the documentation is going to live.</div><div class=3D"gmail_default"=
style=3D"font-family:monospace"><br></div><div class=3D"gmail_default" sty=
le=3D"font-family:monospace">2. The stanza regarding INITGUID in w32fns.c r=
emains something that I don't know how to answer having blindly copied =
that stanza from w32dwrite.c.=C2=A0 I assume it is needed for some reason.=
=C2=A0 See commit=C2=A0b54fa15ffbb959e97ea0b77bfeb9ae412a63b4e8 for its pro=
ximate origin.</div><div class=3D"gmail_default" style=3D"font-family:monos=
pace"><br></div><div class=3D"gmail_default" style=3D"font-family:monospace=
">-St=C3=A9phane=C2=A0</div></div></div>
--000000000000ef978b0645872973--
--000000000000ef978c0645872975
Content-Type: application/octet-stream;
name="0001-System-GUI-taskbar-and-progress-reporter-callbacks.patch"
Content-Disposition: attachment;
filename="0001-System-GUI-taskbar-and-progress-reporter-callbacks.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_miyrzho00>
X-Attachment-Id: f_miyrzho00
RnJvbSBlM2ZlNjVhMjg5NzQ1NzBhYmRlOTU3MDZhMTUyZTJlOWRlMGE0ZjJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo
aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFRodSwgMjAgTm92IDIwMjUgMTI6NTQ6NDAgLTA1MDAK
U3ViamVjdDogW1BBVENIXSBTeXN0ZW0gR1VJIHRhc2tiYXIgYW5kIHByb2dyZXNzIHJlcG9ydGVy
IGNhbGxiYWNrcy4KCkltcGxlbWVudCBzeXN0ZW0gR1VJIHRhc2tiYXIvZG9jay9sYXVuY2hlciBp
Y29uIGJhZGdlLCBpY29uCnByb2dyZXNzIGluZGljYXRvciwgaWNvbiBhdHRlbnRpb24gYWxlcnQg
ZmVhdHVyZXMgZm9yIEQtQnVzCnBsYXRmb3JtcyAodGVzdGVkIG9uIEtERSBhbmQgR05PTUUpLCBO
UyAobWFjT1MvR05Vc3RlcCksCk1TLVdpbmRvd3MuCgpBZGQgdXBkYXRlLWNhbGxiYWNrIGFuZCBk
b25lLWNhbGxiYWNrIHRvCidtYWtlLXByb2dyZXNzLXJlcG9ydGVyJyB0byBmYWNpbGl0YXRlIHRh
c2tiYXIgcHJvZ3Jlc3MgZGlzcGxheS4KCiogbGlzcC9zdWJyLmVsIChtYWtlLXByb2dyZXNzLXJl
cG9ydGVyKTogQWRkIG9wdGlvbmFsCnVwZGF0ZS1jYWxsYmFjayBhbmQgZG9uZS1jYWxsYmFjayBh
cmd1bWVudHMuCihwcm9ncmVzcy1yZXBvcnRlci1kby11cGRhdGUpOiBDYWxsIHVwZGF0ZS1jYWxs
YmFjayBpZiBub24tbmlsCmZvciBib3RoIG51bWVyaWNhbCBhbmQgcHVsc2luZyByZXBvcnRlcnMu
Cihwcm9ncmVzcy1yZXBvcnRlci1kb25lKTogQ2FsbCBkb25lLWNhbGxiYWNrIGlmIG5vbi1uaWwu
CiogbGlzcC9zeXN0ZW0tdGFza2Jhci5lbDogTmV3IGZpbGUuCiogc3JjL25zZm5zLm0gKEZuc19i
YWRnZSwgRm5zX3Byb2dyZXNzX2luZGljYXRvcikKKEZuc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9u
KTogTmV3IGZ1bmN0aW9uLgooc3ltc19vZl9uc2Zucyk6IEFkZCBkZWZzdWJyIFNuc19iYWRnZSwK
U25zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24sIFNuc19wcm9ncmVzc19pbmRpY2F0b3IuIEFkZCBE
RUZTWU0KUWluZm9ybWF0aW9uYWwsIFFjcml0aWNhbC4KKiBzcmMvdzMyZm5zLmMgKHJnYl9saXN0
X3RvX2NvbG9ycmVmLCBGdzMyX2JhZGdlKQooRnczMl9yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uLCBG
dzMyX3Byb2dyZXNzX2luZGljYXRvcik6IE5ldwpmdW5jdGlvbi4KKHN5bXNfb2ZfdzMyZm5zKTog
QWRkIGRlZnN1YnIgU3czMl9iYWRnZSwKU3czMl9wcm9ncmVzc19pbmRpY2F0b3IsIFN3MzJfcmVx
dWVzdF91c2VyX2F0dGVudGlvbi4gQWRkIERFRlNZTQpRaW5mb3JtYXRpb25hbCwgUWNyaXRpY2Fs
LgoqIGRvYy9saXNwcmVmL2Rpc3BsYXkudGV4aTogRG9jdW1lbnQgcHJvZ3Jlc3MtcmVwb3J0ZXIg
Y2FsbGJhY2tzLgoqIHN5c3RlbS10YXNiYXIudGV4aTogTmV3IGZpbGUgKFdJTEwgQkUgTUVSR0VE
IElOVE8gRU1BQ1MKQU5EIEVMSVNQIE1BTlVBTCkuCiogZXRjL05FV1M6IEFubm91bmNlIHN5c3Rl
bS10YXNrYmFyLW1vZGUuICBBbm5vdW5jZQpwcm9ncmVzcyByZXBvcnRlciBjYWxsYmFjayBlbmhh
bmNlbWVudHMuCi0tLQogZG9jL2xpc3ByZWYvZGlzcGxheS50ZXhpIHwgIDI4ICstCiBldGMvTkVX
UyAgICAgICAgICAgICAgICAgfCAgMjIgKysKIGxpc3Avc3Vici5lbCAgICAgICAgICAgICB8ICA0
NiArKystCiBsaXNwL3N5c3RlbS10YXNrYmFyLmVsICAgfCA1NDUgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrCiBzcmMvbnNmbnMubSAgICAgICAgICAgICAgfCAxMjggKysr
KysrKysrCiBzcmMvdzMyZm5zLmMgICAgICAgICAgICAgfCAzMjcgKysrKysrKysrKysrKysrKysr
KysrKysKIHN5c3RlbS10YXNrYmFyLnRleGkgICAgICB8IDI2MCArKysrKysrKysrKysrKysrKysr
CiA3IGZpbGVzIGNoYW5nZWQsIDEzMzYgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgbGlzcC9zeXN0ZW0tdGFza2Jhci5lbAogY3JlYXRlIG1vZGUgMTAw
NjQ0IHN5c3RlbS10YXNrYmFyLnRleGkKCmRpZmYgLS1naXQgYS9kb2MvbGlzcHJlZi9kaXNwbGF5
LnRleGkgYi9kb2MvbGlzcHJlZi9kaXNwbGF5LnRleGkKaW5kZXggZWIzZjdmZDVmZWIuLjk2YTg4
YzEwODI2IDEwMDY0NAotLS0gYS9kb2MvbGlzcHJlZi9kaXNwbGF5LnRleGkKKysrIGIvZG9jL2xp
c3ByZWYvZGlzcGxheS50ZXhpCkBAIC00ODYsNyArNDg2LDcgQEAgUHJvZ3Jlc3MKICAgKHByb2dy
ZXNzLXJlcG9ydGVyLWRvbmUgcHJvZ3Jlc3MtcmVwb3J0ZXIpKQogQGVuZCBzbWFsbGV4YW1wbGUK
IAotQGRlZnVuIG1ha2UtcHJvZ3Jlc3MtcmVwb3J0ZXIgbWVzc2FnZSAmb3B0aW9uYWwgbWluLXZh
bHVlIG1heC12YWx1ZSBjdXJyZW50LXZhbHVlIG1pbi1jaGFuZ2UgbWluLXRpbWUKK0BkZWZ1biBt
YWtlLXByb2dyZXNzLXJlcG9ydGVyIG1lc3NhZ2UgJm9wdGlvbmFsIG1pbi12YWx1ZSBtYXgtdmFs
dWUgY3VycmVudC12YWx1ZSBtaW4tY2hhbmdlIG1pbi10aW1lIHVwZGF0ZS1jYWxsYmFjayBkb25l
LWNhbGxiYWNrCiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYW5kIHJldHVybnMgYSBwcm9ncmVzcyBy
ZXBvcnRlciBvYmplY3QsIHdoaWNoCiB5b3Ugd2lsbCB1c2UgYXMgYW4gYXJndW1lbnQgZm9yIHRo
ZSBvdGhlciBmdW5jdGlvbnMgbGlzdGVkIGJlbG93LiAgVGhlCiBpZGVhIGlzIHRvIHByZWNvbXB1
dGUgYXMgbXVjaCBkYXRhIGFzIHBvc3NpYmxlIHRvIG1ha2UgcHJvZ3Jlc3MKQEAgLTUxMywxMyAr
NTEzLDI1IEBAIFByb2dyZXNzCiBhcmd1bWVudCBAdmFye2N1cnJlbnQtdmFsdWV9IGEgbnVtZXJp
Y2FsIHZhbHVlIHNwZWNpZnlpbmcgdGhlIGluaXRpYWwKIHByb2dyZXNzOyBpZiBvbWl0dGVkLCB0
aGlzIGRlZmF1bHRzIHRvIEB2YXJ7bWluLXZhbHVlfS4KIAotVGhlIHJlbWFpbmluZyBhcmd1bWVu
dHMgY29udHJvbCB0aGUgcmF0ZSBvZiBlY2hvIGFyZWEgdXBkYXRlcy4gIFRoZQotcHJvZ3Jlc3Mg
cmVwb3J0ZXIgd2lsbCB3YWl0IGZvciBhdCBsZWFzdCBAdmFye21pbi1jaGFuZ2V9IG1vcmUKLXBl
cmNlbnRzIG9mIHRoZSBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkIGJlZm9yZSBwcmludGluZyBu
ZXh0Ci1tZXNzYWdlOyB0aGUgZGVmYXVsdCBpcyBvbmUgcGVyY2VudC4gIEB2YXJ7bWluLXRpbWV9
IHNwZWNpZmllcyB0aGUKLW1pbmltdW0gdGltZSBpbiBzZWNvbmRzIHRvIHBhc3MgYmV0d2VlbiBz
dWNjZXNzaXZlIHByaW50czsgdGhlIGRlZmF1bHQKLWlzIDAuMiBzZWNvbmRzLiAgKE9uIHNvbWUg
b3BlcmF0aW5nIHN5c3RlbXMsIHRoZSBwcm9ncmVzcyByZXBvcnRlciBtYXkKLWhhbmRsZSBmcmFj
dGlvbnMgb2Ygc2Vjb25kcyB3aXRoIHZhcnlpbmcgcHJlY2lzaW9uKS4KK1RoZSBhcmd1bWVudHMg
QHZhcnttaW4tY2hhbmdlfSBhbmQgQHZhcnttaW4tdGltZX0gY29udHJvbCB0aGUgcmF0ZSBvZgor
ZWNobyBhcmVhIHVwZGF0ZXMuICBUaGUgcHJvZ3Jlc3MgcmVwb3J0ZXIgd2lsbCB3YWl0IGZvciBh
dCBsZWFzdAorQHZhcnttaW4tY2hhbmdlfSBtb3JlIHBlcmNlbnRzIG9mIHRoZSBvcGVyYXRpb24g
dG8gYmUgY29tcGxldGVkIGJlZm9yZQorcHJpbnRpbmcgbmV4dCBtZXNzYWdlOyB0aGUgZGVmYXVs
dCBpcyBvbmUgcGVyY2VudC4gIEB2YXJ7bWluLXRpbWV9CitzcGVjaWZpZXMgdGhlIG1pbmltdW0g
dGltZSBpbiBzZWNvbmRzIHRvIHBhc3MgYmV0d2VlbiBzdWNjZXNzaXZlIHByaW50czsKK3RoZSBk
ZWZhdWx0IGlzIDAuMiBzZWNvbmRzLiAgKE9uIHNvbWUgb3BlcmF0aW5nIHN5c3RlbXMsIHRoZSBw
cm9ncmVzcworcmVwb3J0ZXIgbWF5IGhhbmRsZSBmcmFjdGlvbnMgb2Ygc2Vjb25kcyB3aXRoIHZh
cnlpbmcgcHJlY2lzaW9uKS4KKworSWYgQHZhcnt1cGRhdGUtY2FsbGJhY2t9IGlzIGEgZnVuY3Rp
b24sIGl0IHdpbGwgYmUgY2FsbGVkIGF0IGVhY2ggdXBkYXRlCitzdGVwIHdpdGggdGhyZWUgYXJn
dW1lbnRzLCB0aGUgcmVwb3J0ZXIsIHRoZSBwZXJjZW50YWdlIGRvbmUgaW4gdGhlCityYW5nZSAw
LTEwMCBmb3IgYSBwZXJjZW50YWdlIHJlcG9ydGVyIGFuZCB3aGljaCBpcyBuaWwgZm9yIGEgc3Bp
bm5pbmcKK3JlcG9ydGVyLCB0aGUgaW5kZXggdGhhdCBjeWNsZXMgdGhyb3VnaCB0aGUgcmFuZ2Ug
MC0zIGZvciBhIHNwaW5uaW5nCityZXBvcnRlciBhbmQgd2hpY2ggaXMgbmlsIGZvciBhIHBlcmNl
bnRhZ2UgcmVwb3J0ZXIuCisKK0lmIEB2YXJ7ZG9uZS1jYWxsYmFja30gaXMgYSBmdW5jdGlvbiwg
aXQgd2lsbCBiZSBjYWxsZWQgYnkgd2hlbiB0aGUKK3Byb2dyZXNzIHJlcG9ydGVyIGlzIGNvbnNp
ZGVyZWQgZG9uZSB3aXRoIG9uZSBhcmd1bWVudCwgdGhlIHJlcG9ydGVyLgorCitUaGVzZSBjYWxs
YmFja3MgY2FuIGJlIHVzZWQgdG8gc3VwcGxlbWVudCB1c2VyIGZlZWRiYWNrIGluIGFkZGl0aW9u
IHRvCitlY2hvIGFyZWEgdXBkYXRlcy4KIAogVGhpcyBmdW5jdGlvbiBjYWxscyBAY29kZXtwcm9n
cmVzcy1yZXBvcnRlci11cGRhdGV9LCBzbyB0aGUgZmlyc3QKIG1lc3NhZ2UgaXMgcHJpbnRlZCBp
bW1lZGlhdGVseS4KZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggZmRiMWVl
MDI4MTkuLjY3NjE0NGRmZjEyIDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpA
QCAtMzE1MSw2ICszMTUxLDIxIEBAIFRoaXMgbGlicmFyeSBwcm92aWRlcyBmdW5jdGlvbnMgdG8g
dGhyb3R0bGUgb3IgZGVib3VuY2UgRW1hY3MgTGlzcAogZnVuY3Rpb25zLiAgVGhpcyBpcyB1c2Vm
dWwgZm9yIGNvcnJhbGxpbmcgb3ZlcmVhZ2VyIGNvZGUgdGhhdCBpcyBzbG93CiBhbmQgYmxvY2tz
IEVtYWNzLCBvciBkb2VzIG5vdCBwcm92aWRlIHdheXMgdG8gbGltaXQgaG93IG9mdGVuIGl0IHJ1
bnMuCiAKKysrKworKioqIE5ldyBtb2RlICdzeXN0ZW0tdGFza2Jhci1tb2RlJy4KK1RoaXMgaXMg
YSBnbG9iYWwgbWlub3IgbW9kZSBhbmQgY29tcGFuaW9uIGZ1bmN0aW9ucyB0aGF0IGludGVncmF0
ZSBFbWFjcword2l0aCBzeXN0ZW0gR1VJIHRhc2tiYXJzIChhbHNvIGNhbGxlZCBkb2NrcyBvciBs
YXVuY2hlcnMgb3Igc29tZXRoaW5nCitzaW1pbGFyKSB0byBkaXNwbGF5IGEgdGFza2JhciBpY29u
ICJiYWRnZSIgb3ZlcmxheSwgYSBwcm9ncmVzcyBiYXIKK3JlcG9ydCBvdmVybGF5LCBhbGVydCB0
aGUgdXNlciB0aGF0IGFuIEVtYWNzIHNlc3Npb24gbmVlZHMgYXR0ZW50aW9uLAorb2Z0ZW4gYnkg
Zmxhc2hpbmcgb3IgYm91bmNpbmcgdGhlIEVtYWNzIGFwcGxpY2F0aW9uIGljb24uICBTdXBwb3J0
ZWQKK2NhcGFibGUgc3lzdGVtcyBhcmUgR05VL0xpbnV4IHZpYSBELUJ1cywgbWFjT1MvR05Vc3Rl
cCAxMC41KywgTVMtV2luZG93cworNysuCisKK09uIEdOVS9MaW51eCBzeXN0ZW1zLCBzaGVsbCBl
eHRlbnNpb25zIG9yIHNpbWlsYXIgaGVscGVycyBzdWNoIGFzCisiZGFzaC10by1kb2NrIiBtYXkg
YmUgcmVxdWlyZWQuICBTZWUKKzxodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lv
bi8zMDcvZGFzaC10by1kb2NrLz4gYW5kCis8aHR0cHM6Ly93aWtpLnVidW50dS5jb20vVW5pdHkv
TGF1bmNoZXJBUEk+LgorCiAMCiAqIEluY29tcGF0aWJsZSBMaXNwIENoYW5nZXMgaW4gRW1hY3Mg
MzEuMQogCkBAIC0zNTc5LDYgKzM1OTQsMTMgQEAgRW1hY3Mgd2hlbiBidWlsdCB3aXRoIHRoZSBw
dXJlIEdUSyB0b29sa2l0IG5vdyByZXNwZWN0cyBkZXNrdG9wCiBkYXJrIGFuZCBsaWdodCBtb2Rl
cyBmb3IgZHJhd2luZyBhIEdUSyB0b29sYmFyIGFuZCB3aWRnZXRzLAogYXV0b21hdGljYWxseSB0
b2dnbGluZyBiZXR3ZWVuIHRoZW0uCiAKKysrKworKiogUHJvZ3Jlc3MgcmVwb3J0ZXIgY2FsbGJh
Y2tzLgorJ21ha2UtcHJvZ3Jlc3MtcmVwb3J0ZXInIG5vdyBhY2NlcHRzIG9wdGlvbmFsIGFyZ3Vt
ZW50cyBVUERBVEUtQ0FMTEJBQ0ssCitjYWxsZWQgb24gcHJvZ3Jlc3Mgc3RlcHMsIGFuZCBET05F
LUNBTExCQUNLLCBjYWxsZWQgd2hlbiB0aGUgcHJvZ3Jlc3MKK3JlcG9ydGVyIGlzIGRvbmUuICBT
ZWUgdGhlICdtYWtlLXByb2dyZXNzLXJlcG9ydGVyJyBkb2NzdHJpbmcgZm9yIGEgZnVsbAorc3Bl
Y2lmaWNhdGlvbiBvZiB0aGVzZSBuZXcgb3B0aW9uYWwgYXJndW1lbnRzLgorCiAMCiAqIENoYW5n
ZXMgaW4gRW1hY3MgMzEuMSBvbiBOb24tRnJlZSBPcGVyYXRpbmcgU3lzdGVtcwogCmRpZmYgLS1n
aXQgYS9saXNwL3N1YnIuZWwgYi9saXNwL3N1YnIuZWwKaW5kZXggZmNmOTMxYjY0ZTkuLmM1M2Nh
MDExYWFiIDEwMDY0NAotLS0gYS9saXNwL3N1YnIuZWwKKysrIGIvbGlzcC9zdWJyLmVsCkBAIC02
OTk2LDcgKzY5OTYsOCBAQCBwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUKICAgICAocHJvZ3Jlc3Mt
cmVwb3J0ZXItZG8tdXBkYXRlIHJlcG9ydGVyIHZhbHVlIHN1ZmZpeCkpKQogCiAoZGVmdW4gbWFr
ZS1wcm9ncmVzcy1yZXBvcnRlciAobWVzc2FnZSAmb3B0aW9uYWwgbWluLXZhbHVlIG1heC12YWx1
ZQotCQkJCSAgICAgICBjdXJyZW50LXZhbHVlIG1pbi1jaGFuZ2UgbWluLXRpbWUpCisJCQkJICAg
ICAgIGN1cnJlbnQtdmFsdWUgbWluLWNoYW5nZSBtaW4tdGltZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXBkYXRlLWNhbGxiYWNrIGRvbmUtY2FsbGJhY2spCiAgICJS
ZXR1cm4gcHJvZ3Jlc3MgcmVwb3J0ZXIgb2JqZWN0IGZvciB1c2Ugd2l0aCBgcHJvZ3Jlc3MtcmVw
b3J0ZXItdXBkYXRlJy4KIAogTUVTU0FHRSBpcyBzaG93biBpbiB0aGUgZWNobyBhcmVhLCB3aXRo
IGEgc3RhdHVzIGluZGljYXRvcgpAQCAtNzAyMyw3ICs3MDI0LDE2IEBAIG1ha2UtcHJvZ3Jlc3Mt
cmVwb3J0ZXIKIE9wdGlvbmFsIE1JTi1USU1FIHNwZWNpZmllcyB0aGUgbWluaW11bSBpbnRlcnZh
bCB0aW1lIGJldHdlZW4KIGVjaG8gYXJlYSB1cGRhdGVzIChkZWZhdWx0IGlzIDAuMiBzZWNvbmRz
LikgIElmIHRoZSBPUyBpcyBub3QKIGNhcGFibGUgb2YgbWVhc3VyaW5nIGZyYWN0aW9ucyBvZiBz
ZWNvbmRzLCB0aGlzIHBhcmFtZXRlciBpcwotZWZmZWN0aXZlbHkgcm91bmRlZCB1cC4iCitlZmZl
Y3RpdmVseSByb3VuZGVkIHVwLgorCitPcHRpb25hbCBVUERBVEUtQ0FMTEJBQ0sgaXMgYSBmdW5j
dGlvbiBjYWxsZWQgYnkKK2Bwcm9ncmVzcy1yZXBvcnRlci1kby11cGRhdGVgIHdpdGggdGhyZWUg
YXJndW1lbnRzLCB0aGUgcmVwb3J0ZXIsIHRoZQorcGVyY2VudGFnZSBkb25lIGluIHRoZSByYW5n
ZSAwLTEwMCBmb3IgYSBudW1lcmljIHJlcG9ydGVyIGFuZCB3aGljaCBpcworbmlsIGZvciBhIHB1
bHNpbmcgcmVwb3J0ZXIsIHRoZSBpbmRleCB0aGF0IGN5Y2xlcyB0aHJvdWdoIHRoZSByYW5nZSAw
LTMKK2ZvciBhIHB1bHNpbmcgcmVwb3J0ZXIgYW5kIHdoaWNoIGlzIG5pbCBmb3IgYSBudW1lcmlj
IHJlcG9ydGVyLgorCitPcHRpb25hbCBET05FLUNBTExCQUNLIGlzIGEgZnVuY3Rpb24gY2FsbGVk
IGJ5IGBwcm9ncmVzcy1yZXBvcnRlci1kb25lYAord2l0aCBvbmUgYXJndW1lbnQsIHRoZSByZXBv
cnRlci4iCiAgICh3aGVuIChzdHJpbmctbWF0Y2ggIltbOmFsbnVtOl1dXFwnIiBtZXNzYWdlKQog
ICAgIChzZXRxIG1lc3NhZ2UgKGNvbmNhdCBtZXNzYWdlICIuLi4iKSkpCiAgICh1bmxlc3MgbWlu
LXRpbWUKQEAgLTcwMzgsNyArNzA0OCw5IEBAIG1ha2UtcHJvZ3Jlc3MtcmVwb3J0ZXIKIAkJICAg
ICAgIChpZiBtaW4tY2hhbmdlIChtYXggKG1pbiBtaW4tY2hhbmdlIDUwKSAxKSAxKQogICAgICAg
ICAgICAgICAgICAgICAgICBtaW4tdGltZQogICAgICAgICAgICAgICAgICAgICAgICA7OyBTVUZG
SVgKLSAgICAgICAgICAgICAgICAgICAgICAgbmlsKSkpKQorICAgICAgICAgICAgICAgICAgICAg
ICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlLWNhbGxiYWNrCisgICAgICAgICAg
ICAgICAgICAgICAgIGRvbmUtY2FsbGJhY2spKSkpCiAgICAgOzsgRm9yY2UgYSBjYWxsIHRvIGBt
ZXNzYWdlJyBub3cuCiAgICAgKHByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZSByZXBvcnRlciAob3Ig
Y3VycmVudC12YWx1ZSBtaW4tdmFsdWUpKQogICAgIHJlcG9ydGVyKSkKQEAgLTcwNjEsMTEgKzcw
NzMsMTIgQEAgcHJvZ3Jlc3MtcmVwb3J0ZXItLXB1bHNlLWNoYXJhY3RlcnMKICAgIkNoYXJhY3Rl
cnMgdG8gdXNlIGZvciBwdWxzaW5nIHByb2dyZXNzIHJlcG9ydGVycy4iKQogCiAoZGVmdW4gcHJv
Z3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRlIChyZXBvcnRlciB2YWx1ZSAmb3B0aW9uYWwgc3VmZml4
KQotICAobGV0KiAoKHBhcmFtZXRlcnMgICAoY2RyIHJlcG9ydGVyKSkKLQkgKHVwZGF0ZS10aW1l
ICAoYXJlZiBwYXJhbWV0ZXJzIDApKQotCSAobWluLXZhbHVlICAgIChhcmVmIHBhcmFtZXRlcnMg
MSkpCi0JIChtYXgtdmFsdWUgICAgKGFyZWYgcGFyYW1ldGVycyAyKSkKLQkgKHRleHQgICAgICAg
ICAoYXJlZiBwYXJhbWV0ZXJzIDMpKQorICAobGV0KiAoKHBhcmFtZXRlcnMgICAgICAoY2RyIHJl
cG9ydGVyKSkKKwkgKHVwZGF0ZS10aW1lICAgICAoYXJlZiBwYXJhbWV0ZXJzIDApKQorCSAobWlu
LXZhbHVlICAgICAgIChhcmVmIHBhcmFtZXRlcnMgMSkpCisJIChtYXgtdmFsdWUgICAgICAgKGFy
ZWYgcGFyYW1ldGVycyAyKSkKKwkgKHRleHQgICAgICAgICAgICAoYXJlZiBwYXJhbWV0ZXJzIDMp
KQorCSAodXBkYXRlLWNhbGxiYWNrIChhcmVmIHBhcmFtZXRlcnMgNykpCiAJIChlbm91Z2gtdGlt
ZS1wYXNzZWQKIAkgIDs7IFNlZSBpZiBlbm91Z2ggdGltZSBoYXMgcGFzc2VkIHNpbmNlIHRoZSBs
YXN0IHVwZGF0ZS4KIAkgIChvciAobm90IHVwZGF0ZS10aW1lKQpAQCAtNzEwMCw3ICs3MTEzLDkg
QEAgcHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRlCiAgICAgICAgICAgICAgICAgIChzZXRxIHN1
ZmZpeCAob3IgKGFyZWYgcGFyYW1ldGVycyA2KSAiIikpKQogICAgICAgICAgICAgICAgKGlmIChw
bHVzcCBwZXJjZW50YWdlKQogICAgICAgICAgICAgICAgICAgIChtZXNzYWdlICIlcyVkJSUgJXMi
IHRleHQgcGVyY2VudGFnZSBzdWZmaXgpCi0gICAgICAgICAgICAgICAgIChtZXNzYWdlICIlcyAl
cyIgdGV4dCBzdWZmaXgpKSkpKQorICAgICAgICAgICAgICAgICAobWVzc2FnZSAiJXMgJXMiIHRl
eHQgc3VmZml4KSkKKyAgICAgICAgICAgICAgICh3aGVuIChmdW5jdGlvbnAgdXBkYXRlLWNhbGxi
YWNrKQorICAgICAgICAgICAgICAgICAoZnVuY2FsbCB1cGRhdGUtY2FsbGJhY2sgcmVwb3J0ZXIg
cGVyY2VudGFnZSBuaWwpKSkpKQogCSAgOzsgUHVsc2luZyBpbmRpY2F0b3IKIAkgIChlbm91Z2gt
dGltZS1wYXNzZWQKICAgICAgICAgICAgKHdoZW4gKGFuZCB2YWx1ZSAobm90IHN1ZmZpeCkpCkBA
IC03MTEzLDExICs3MTI4LDE4IEBAIHByb2dyZXNzLXJlcG9ydGVyLWRvLXVwZGF0ZQogICAgICAg
ICAgICAgICAgICAgKHB1bHNlLWNoYXIgKGFyZWYgcHJvZ3Jlc3MtcmVwb3J0ZXItLXB1bHNlLWNo
YXJhY3RlcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4KSkpCiAJ
ICAgICAoc2V0Y2FyIHJlcG9ydGVyIGluZGV4KQotICAgICAgICAgICAgIChtZXNzYWdlICIlcyAl
cyAlcyIgdGV4dCBwdWxzZS1jaGFyIHN1ZmZpeCkpKSkpKQorICAgICAgICAgICAgIChtZXNzYWdl
ICIlcyAlcyAlcyIgdGV4dCBwdWxzZS1jaGFyIHN1ZmZpeCkKKyAgICAgICAgICAgICAod2hlbiAo
ZnVuY3Rpb25wIHVwZGF0ZS1jYWxsYmFjaykKKyAgICAgICAgICAgICAgIChmdW5jYWxsIHVwZGF0
ZS1jYWxsYmFjayByZXBvcnRlciBuaWwgaW5kZXgpKSkpKSkpCiAKIChkZWZ1biBwcm9ncmVzcy1y
ZXBvcnRlci1kb25lIChyZXBvcnRlcikKLSAgIlByaW50IHJlcG9ydGVyJ3MgbWVzc2FnZSBmb2xs
b3dlZCBieSB3b3JkIFwiZG9uZVwiIGluIGVjaG8gYXJlYS4iCi0gIChtZXNzYWdlICIlc2RvbmUi
IChhcmVmIChjZHIgcmVwb3J0ZXIpIDMpKSkKKyAgIlByaW50IHJlcG9ydGVyJ3MgbWVzc2FnZSBm
b2xsb3dlZCBieSB3b3JkIFwiZG9uZVwiIGluIGVjaG8gYXJlYS4KK0NhbGwgdGhlIHJlcG9ydGVy
J3MgZG9uZS1jYWxsYmFjayBpZiBhIGZ1bmN0aW9uLiIKKyAgKG1lc3NhZ2UgIiVzZG9uZSIgKGFy
ZWYgKGNkciByZXBvcnRlcikgMykpCisgIChhbmQtbGV0KiAoKHBhcmFtZXRlcnMgKGNkciByZXBv
cnRlcikpCisgICAgICAgICAgICAgKGRvbmUtY2FsbGJhY2sgKGFyZWYgcGFyYW1ldGVycyA4KSkK
KyAgICAgICAgICAgICAoZnVuY3Rpb25wIGRvbmUtY2FsbGJhY2spKQorICAgIChmdW5jYWxsIGRv
bmUtY2FsbGJhY2sgcmVwb3J0ZXIpKSkKIAogKGRlZm1hY3JvIGRvdGltZXMtd2l0aC1wcm9ncmVz
cy1yZXBvcnRlciAoc3BlYyByZXBvcnRlci1vci1tZXNzYWdlICZyZXN0IGJvZHkpCiAgICJMb29w
IGEgY2VydGFpbiBudW1iZXIgb2YgdGltZXMgYW5kIHJlcG9ydCBwcm9ncmVzcyBpbiB0aGUgZWNo
byBhcmVhLgpkaWZmIC0tZ2l0IGEvbGlzcC9zeXN0ZW0tdGFza2Jhci5lbCBiL2xpc3Avc3lzdGVt
LXRhc2tiYXIuZWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE4ZTU3
Y2QwMGE5Ci0tLSAvZGV2L251bGwKKysrIGIvbGlzcC9zeXN0ZW0tdGFza2Jhci5lbApAQCAtMCww
ICsxLDU0NSBAQAorOzs7IHN5c3RlbS10YXNrYmFyLmVsIC0tLSBTeXN0ZW0gR1VJIHRhc2tiYXIv
ZG9jay9sYXVuY2hlciBzdGF0dXMgZGlzcGxheSAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0IC0qLQor
Cis7OyBDb3B5cmlnaHQgKEMpIDIwMjUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisK
Kzs7IEF1dGhvcjogU3RlcGhhbmUgTWFya3MKKzs7IE1haW50YWluZXI6IGVtYWNzLWRldmVsQGdu
dS5vcmcKKzs7IEtleXdvcmRzOiBjb252ZW5pZW5jZQorOzsgUGFja2FnZS1SZXF1aXJlczogKChl
bWFjcyAiMzEuMSIpKQorCis7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCisKKzs7
IEdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IgbW9kaWZ5Cis7OyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKzs7IChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKzs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7IEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKzs7IFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Cis7OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUu
b3JnL2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50YXJ5OgorCis7OyBVc2UgdGhpcyBwYWNrYWdl
IHRvIGRpc3BsYXkgYSB0YXNrYmFyIGljb24gImJhZGdlIiBvdmVybGF5LCBhCis7OyBwcm9ncmVz
cyBiYXIgcmVwb3J0IG92ZXJsYXksIG9yIGFsZXJ0IHRoZSB1c2VyIHRoYXQgYW4gRW1hY3Mgc2Vz
c2lvbgorOzsgbmVlZHMgYXR0ZW50aW9uLCBvZnRlbiBieSBmbGFzaGluZyBvciBib3VuY2luZyB0
aGUgRW1hY3MgYXBwbGljYXRpb24KKzs7IGljb24uCis7OworOzsgTm90ZTogVGhlIHRlcm0gdGFz
a2JhciBpcyBpbmNsdXNpdmUgb2YgZG9jayBvciBsYXVuY2hlciBvciBzb21lIG90aGVyCis7OyB0
ZXJtaW5vbG9neSBhcyBtYXkgYmUgdXNlZCBmb3IgeW91ciBzeXN0ZW0uCis7OworOzsgT24gR05V
L0xpbnV4LCB0aGUgdmlzaWJsZSBlZmZlY3RzIHdpbGwgYXBwZWFyIG9uIHRoZSBkZXN0aW5hdGlv
bnMKKzs7IGRldGVybWluZWQgYnkgeW91ciBzaGVsbCBleHRlbnNpb24sIG1vc3Qgb2Z0ZW4gdGhl
IGFwcGxpY2F0aW9uCis7OyBsYXVuY2hlciBvciBkb2NrIHBhbmVsLCBvciB0aGUgdG9wIHBhbmVs
LiAgRWZmZWN0cyBhcmUgZ2xvYmFsIGZvciBhbgorOzsgRW1hY3MgaW5zdGFuY2UuCis7OworOzsg
T24gbWFjT1MvR05Vc3RlcCwgdGhlIGVmZmVjdHMgd2lsbCBhcHBlYXIgb24gdGhlIERvY2sgYW5k
IGluIHRoZSBBcHAKKzs7IFN3aXRjaGVyLiAgRWZmZWN0cyBhcmUgZ2xvYmFsIGZvciBhbiBFbWFj
cyBpbnN0YW5jZS4KKzs7Cis7OyBPbiBNUy1XaW5kb3dzLCB0aGUgZWZmZWN0cyBhcHBlYXIgb24g
dGhlIHRhc2tiYXIuICBFZmZlY3RzIGFyZQorOzsgYXNzb2NpYXRlZCB3aXRoIHRoZSBmcmFtZSBm
cm9tIHdoaWNoIHRoZXkgYXJlIGluaXRpYXRlZC4KKworOzs7IFVzYWdlOgorCis7OyBUaGUgZ2xv
YmFsIG1pbm9yIG1vZGUgYHN5c3RlbS10YXNrYmFyLW1vZGUnIGluaXRpYWxpemVzIHRoZSBHVUkK
Kzs7IHBsYXRmb3JtIGJhY2stZW5kIGFuZCBtdXN0IGJlIGVuYWJsZWQgYmVmb3JlIHVzaW5nIHRo
ZSBmdW5jdGlvbnMKKzs7IGJlbG93LgorOzsKKzs7IGBzeXN0ZW0tdGFza2Jhci1iYWRnZScgb3Zl
cmxheXMgYSBjb3VudCwgd2hpY2ggaXMgYW4gaW50ZWdlciwgb24gdGhlCis7OyBFbWFjcyB0YXNr
YmFyIGljb24uICBZb3UgY2FuIHVzZSB0aGlzLCBmb3IgZXhhbXBsZSwgdG8gaW5kaWNhdGUgdGhl
Cis7OyBudW1iZXIgb2YgdW5yZWFkIGVtYWlsIG1lc3NhZ2VzLiAgT24gR05VL0xpbnV4LCB0aGUg
Y291bnQgbXVzdCBiZSBhbgorOzsgaW50ZWdlciBvciBuaWwuICBPbiBtYWNPUy9HTlVzdGVwLCB0
aGUgY291bnQgbWF5IGJlIGFuIGludGVnZXIgb3IgYQorOzsgc3RyaW5nLCB3aGljaCB0aGUgb3Bl
cmF0aW5nIHN5c3RlbSB3aWxsIGFiYnJldmlhdGUgaWYgdG9vIGxvbmcuICBPbgorOzsgTVMtV2lu
ZG93cywgdGhlIHRhc2tiYXIgYmFkZ2Ugd2lsbCBiZSBhYmJyZXZpYXRlZCB0byB0aHJlZQorOzsg
Y2hhcmFjdGVyczsgaWYgdGhlIGNvdW50IGlzIGFuIGludGVnZXIgb3V0c2lkZSB0aGUgcmFuZ2Ug
LTk5IHRvIDk5LAorOzsgaXQgaXMgc2hvd24gYXMgIi05OSIgb3IgIjk5KyIsIGlmIGNvdW50IGlz
IGEgc3RyaW5nIGxvbmdlciB0aGFuIDMKKzs7IGNoYXJhY3RlcnMgaXQgaXMgdHJ1bmNhdGVkLgor
OzsKKzs7IGBzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24nIGZsYXNoZXMgb3IgYm91bmNlcyB0aGUg
RW1hY3MgdGFza2JhciBpY29uCis7OyB0byBpbmRpY2F0ZSB0aGF0IHlvdXIgRW1hY3Mgc2Vzc2lv
biB3YW50cyBhdHRlbnRpb24uICBJdHMgYmVoYXZpb3JzCis7OyBhcmUgYmFjay1lbmQgc3BlY2lm
aWMuCis7OworOzsgYHN5c3RlbS10YXNrYmFyLXByb2dyZXNzJyBvdmVybGF5cyBhIGdyYXBoaWNh
bCBwcm9ncmVzcyBiYXIgb24gdGhlCis7OyBFbWFjcyB0YXNrYmFyIGljb24gdG8gaWxsdXN0cmF0
ZSBwcm9ncmVzcyBvZiBhIHBvdGVudGlhbGx5Cis7OyBsb25nLXJ1bm5pbmcgb3BlcmF0aW9uLgor
OzsKKzs7IFRoZSBjb252ZW5pZW5jZSBtYWNyb3MgYGRvdGltZXMtd2l0aC1zeXN0ZW0tdGFza2Jh
ci1wcm9ncmVzcy1yZXBvcnRlcicKKzs7IGFuZCBgZG9saXN0LXdpdGgtc3lzdGVtLXRhc2tiYXIt
cHJvZ3Jlc3MtcmVwb3J0ZXInIGRpc3BsYXkgcHJvZ3Jlc3MgaW4KKzs7IHRoZSBlY2hvLWFyZWEg
YW5kIG9uIHRoZSB0YXNrYmFyIGljb24uICBUaGV5IGFyZSBhbmFsb2dvdXMgdG8gdGhlaXIKKzs7
IGVjaG8tYXJlYSBvbmx5IGNvdW50ZXJwYXJ0cyBgZG90aW1lcy13aXRoLXByb2dyZXNzLXJlcG9y
dGVyJyBhbmQKKzs7IGBkb2xpc3Qtd2l0aC1wcm9ncmVzcy1yZXBvcnRlcicsIHJlc3BlY3RpdmVs
eS4KKzs7Cis7OyBPbiBHTlUvTGludXggc3lzdGVtcywgdGhlIGltcGxlbWVudGF0aW9uIGlzIHZp
YSBELUJ1cyB0byBjb250cm9sIEdVSQorOzsgc2hlbGxzIGFuZC9vciBzaGVsbCBleHRlbnNpb25z
IHN1Y2ggYXMKKzs7IGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzMwNy9k
YXNoLXRvLWRvY2svIHRoYXQKKzs7IGltcGxlbWVudCBVYnVudHUncyBVbml0eSBsYXVuY2hlciBz
cGVjCis7OyBodHRwczovL3dpa2kudWJ1bnR1LmNvbS9Vbml0eS9MYXVuY2hlckFQSS4KKzs7Cis7
OyBZb3VyIExpbnV4IEVtYWNzIGluc3RhbmNlIHNob3VsZCBiZSBsYXVuY2hlZCB2aWEgYW4gYXBw
cm9wcmlhdGUgc2hlbGwKKzs7ICJkZXNrdG9wIiBmaWxlIHN1Y2ggYXMgdGhvc2UgZGlzdHJpYnV0
ZWQgd2l0aCBFbWFjczsgZS5nLiwKKzs7ICJldGMvZW1hY3NjbGllbnQuZGVza3RvcCIgYXMgZG9j
dW1lbnRlZCBoZXJlCis7OyBodHRwczovL3NwZWNpZmljYXRpb25zLmZyZWVkZXNrdG9wLm9yZy9k
ZXNrdG9wLWVudHJ5L2xhdGVzdC8gYW5kCis7OyB3aGljaCB5b3VyIEdVSSBzeXN0ZW0gc2hvdWxk
IGltcGxlbWVudC4KKzs7Cis7OyBPbiBtYWNPUy9HTlVzdGVwIHN5c3RlbXMgKGFrYSBOUykgYW5k
IE1TLVdpbmRvd3MsIG5hdGl2ZSBBUElzIGFyZQorOzsgdXNlZCBhbmQgRC1CdXMgaXMgbm90LCBl
dmVuIGlmIEQtQnVzIGlzIGNvbmZpZ3VyZWQgaW4geW91ciBidWlsZC4KKzs7Cis7OyBUbyBhZGQg
c3VwcG9ydCBmb3IgYWRkaXRpb25hbCBzeXN0ZW1zLCBwcm92aWRlIGEgYmFjayBlbmQgdGhhdCBp
bXBsZW1lbnRzCis7OyB0aGUgY2wtZ2VuZXJpYyBmdW5jdGlvbnMgYmVsb3cuCisKKzs7OyBDb2Rl
OgorCisocmVxdWlyZSAnZGJ1cykKKworKGRlZmdyb3VwIHN5c3RlbS10YXNrYmFyIG5pbAorICAi
U3lzdGVtIEdVSSB0YXNrYmFyIGljb24gYmFkZ2UsIHByb2dyZXNzIHJlcG9ydCwgYWxlcnRpbmcu
IgorICA6Z3JvdXAgJ2NvbnZlbmllbmNlCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmN1c3Rv
bSBzeXN0ZW0tdGFza2Jhci1jbGVhci1hdHRlbnRpb24tb24tZnJhbWUtZm9jdXMgdAorICAiQ2xl
YXIgdGhlIGljb24gYXR0ZW50aW9uIGluZGljYXRvciB3aGVuIGFueSBHVUkgZnJhbWUgaXMgZm9j
dXNlZC4KK0JhY2sgZW5kcyB0aGF0IGF1dG9tYXRpY2FsbHkgY2xlYXIgdGhlIGF0dGVudGlvbiBp
bmRpY2F0b3IsIHN1Y2ggYXMKK21hY09TL0dOVXN0ZXAgYW5kIE1TLVdpbmRvd3MsIGlnbm9yZSB0
aGlzIG9wdGlvbi4iCisgIDp0eXBlICdib29sZWFuCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRl
ZmN1c3RvbSBzeXN0ZW0tdGFza2Jhci1kYnVzLWRlc2t0b3AtZmlsZS1uYW1lICJlbWFjc2NsaWVu
dCIKKyAgIkQtQnVzIGRlc2t0b3AgZmlsZSBiYXNlIG5hbWUgZm9yIHRoZSBzeXN0ZW0gdGFza2Jh
ciBkZXN0aW5hdGlvbi4KK1RoaXMgc2hvdWxkIGJlIHRoZSBiYXNlIG5hbWUgb2YgdGhlIGRlc2t0
b3AgZmlsZSB1c2VkIHRvIGxhdW5jaCBhbiBFbWFjcworaW5zdGFuY2UuICBGb3IgZXhhbXBsZSwg
aWYgeW91ciBsYXVuY2hlciBkZXNrdG9wIGZpbGUgaXMgY2FsbGVkCitcImVtYWNzLmRlc2t0b3Bc
IiwgdGhpcyBvcHRpb24gc2hvdWxkIGJlIFwiZW1hY3NcIi4iCisgIDp0eXBlICdzdHJpbmcKKyAg
OnZlcnNpb24gIjMxLjEiKQorCisoZGVmY3VzdG9tIHN5c3RlbS10YXNrYmFyLWRidXMtdGltZW91
dCBuaWwKKyAgIk51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3IgRC1CdXMgcmVzcG9u
c2VzLgorSWYgbmlsLCB1c2UgdGhlIGBkYnVzYCBkZWZhdWx0IHRpbWVvdXQgaW4gYGRidXMtY2Fs
bC1tZXRob2RgIHdoaWNoIGlzCisyNTAwMCAoaS5lLiwgMjVtcykuCisKK0lmIHlvdXIgRC1CdXMg
ZGVza3RvcCBleHRlbnNpb24gbmVlZHMgZXh0cmEgdGltZSB0byByZXNwb25kLCBpbiB3aGljaAor
Y2FzZSBgc3lzdGVtLXRhc2tiYXItbW9kZWAgbWlnaHQgbm90IGluaXRpYWxpemUgb3IgcmVsYXRl
ZCBmdW5jdGlvbnMKK21pZ2h0IG5vdCB0YWtlIHZpc2libGUgZWZmZWN0LCBiaW5kIHRoaXMgdG8g
YSB2YWx1ZSBoaWdoZXIgdGhhbiAyNTAwMCB0bworZmluZCB3aGF0IHdvcmtzIGZvciB5b3VyIHN5
c3RlbS4iCisgIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJEZWZhdWx0IiBuaWwpIG5hdG51
bSkKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmdmFyIHN5c3RlbS10YXNrYmFyLS1iYWNrLWVu
ZCBuaWwKKyAgIkdlbmVyaWMgdGFza2JhciBtZXRob2Qgc3lzdGVtIGRpc3BhdGNoZXIuIikKKwor
KGRlZnVuIHN5c3RlbS10YXNrYmFyLS1zZXQtYmFjay1lbmQgKCkKKyAgIkRldGVybWluZSB0YXNr
YmFyIGhvc3Qgc3lzdGVtIHR5cGUuIgorICA7OyBPcmRlciBtYXR0ZXJzIHRvIGFjY29tbW9kYXRl
IHRoZSBjYXNlcyB3aGVyZSBhbiBOUyBvciBNUy1XaW5kb3dzCisgIDs7IGJ1aWxkIGhhdmUgdGhl
IGRidXMgZmVhdHVyZS4KKyAgKGNvbmQgKChib3VuZHAgJ25zLXZlcnNpb24tc3RyaW5nKQorICAg
ICAgICAgKHNldHEgc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kICducykpCisgICAgICAgICgoYm91
bmQtYW5kLXRydWUtcCB3MzItaW5pdGlhbGl6ZWQpCisgICAgICAgICAoc2V0cSBzeXN0ZW0tdGFz
a2Jhci0tYmFjay1lbmQgJ3czMikpCisgICAgICAgICgoYW5kIChmZWF0dXJlcCAnZGJ1c2JpbmQp
CisgICAgICAgICAgICAgIChtZW1iZXIgIm9yZy5mcmVlZGVza3RvcC5sb2dpbjEiCisgICAgICAg
ICAgICAgICAgICAgICAgKGRidXMtbGlzdC1hY3RpdmF0YWJsZS1uYW1lcyA6c3lzdGVtKSkpCisg
ICAgICAgICAoc2V0cSBzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgJ2RidXMpKQorICAgICAgICAo
dAorICAgICAgICAgKHNldHEgc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIG5pbCkpKSkKKworOzs7
IyMjYXV0b2xvYWQKKyhkZWZpbmUtbWlub3ItbW9kZSBzeXN0ZW0tdGFza2Jhci1tb2RlCisgICJT
eXN0ZW0gR1VJIHRhc2tiYXIgaWNvbiBiYWRnZSwgcHJvZ3Jlc3MgcmVwb3J0LCBhbGVydGluZy4i
CisgIDpnbG9iYWwgdAorICAod2hlbiBub25pbnRlcmFjdGl2ZQorICAgICh3YXJuICJCYXRjaCBt
b2RlIGRvZXMgbm90IHN1cHBvcnQgYHN5c3RlbS10YXNrYmFyJyIpKQorICAoY29uZCAoc3lzdGVt
LXRhc2tiYXItbW9kZQorICAgICAgICAgKGlmIChzeXN0ZW0tdGFza2Jhci0tc2V0LWJhY2stZW5k
KQorICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tZW5hYmxlKQorICAgICAgICAgICAod2Fy
biAiU3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgYHN5c3RlbS10YXNrYmFyJyIpKSkKKyAgICAgICAg
KHQKKyAgICAgICAgICh3aGVuIHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZAorICAgICAgICAgICAo
c3lzdGVtLXRhc2tiYXItLWRpc2FibGUpCisgICAgICAgICAgIChzZXRxIHN5c3RlbS10YXNrYmFy
LS1iYWNrLWVuZCBuaWwpKSkpKQorCisoY2wtZGVmZ2VuZXJpYyBzeXN0ZW0tdGFza2Jhci0tZW5h
YmxlICgpCisgICJFbmFibGUgdGhlIHN5c3RlbS10YXNrYmFyIGJhY2sgZW5kLiIpCisKKyhjbC1k
ZWZnZW5lcmljIHN5c3RlbS10YXNrYmFyLS1kaXNhYmxlICgpCisgICJEaXNhYmxlIHRoZSBzeXN0
ZW0tdGFza2JhciBiYWNrIGVuZC4iKQorCisoY2wtZGVmZ2VuZXJpYyBzeXN0ZW0tdGFza2Jhci1i
YWRnZSAoJm9wdGlvbmFsIGNvdW50KQorICAiRGlzcGxheSBhIENPVU5UIG92ZXJsYXkgb24gdGhl
IHN5c3RlbSB0YXNrYmFyIEVtYWNzIGljb24uCitJZiBDT1VOVCBpcyBhbiBpbnRlZ2VyLCBkaXNw
bGF5IHRoYXQgYXMgdGhlIGljb24gYmFkZ2UuCitJZiBDT1VOVCBpcyBhIHN0cmluZyBvbiBiYWNr
IGVuZHMgd2hpY2ggZG8gbm90IHN1cHBvcnQgc3RyaW5ncywgY29udmVydAorQ09VTlQgdG8gYW4g
aW50ZWdlciwgb3IgbmlsIGlmIHRoYXQgZmFpbHMuCitJZiBDT1VOVCBpcyBuaWwgb3IgYW4gZW1w
dHkgc3RyaW5nLCByZW1vdmUgdGhlIGNvdW50ZXIuIikKKworKGNsLWRlZmdlbmVyaWMgc3lzdGVt
LXRhc2tiYXItYXR0ZW50aW9uICgmb3B0aW9uYWwgdXJnZW5jeSB0aW1lb3V0KQorICAiRmxhc2gg
dGhlIHN5c3RlbSB0YXNrYmFyIGljb24gYW5kL29yIGZyYW1lIHRvIGFsZXJ0IHRoZSB1c2VyLgor
SWYgVVJHRU5DWSBpcyB0aGUgc3ltYm9sIGBpbmZvcm1hdGlvbmFsJywgcmVxdWVzdCBub3JtYWwg
YXR0ZW50aW9uLgorSWYgVVJHRU5DWSBpcyB0aGUgc3ltYm9sIGBjcml0aWNhbCcsIHJlcXVlc3Qg
dXJnZW50IGF0dGVudGlvbi4KK0lmIFVSR0VOQ1kgaXMgbmlsLCBjbGVhciB0aGUgYXR0ZW50aW9u
IGluZGljYXRvci4KKworSWYgVElNRU9VVCBpcyBub24tbmlsLCBjbGVhciB0aGUgYXR0ZW50aW9u
IGluZGljYXRvciBhZnRlciBUSU1FT1VUCitzZWNvbmRzLCBvdGhlcndpc2UgdGhlIGF0dGVudGlv
biBpbmRpY2F0b3Igd2lsbCBiZSBjbGVhcmVkIGVpdGhlciBpZiB0aGUKK2ZyYW1lIGlzIGZvY3Vz
ZWQgYnkgdGhlIHVzZXIgb3IgaWYgYHN5c3RlbS10YXNrYmFyLWF0dGVudGlvbicgaXMgY2FsbGVk
Cit3aXRoIG5pbCBVUkdFTkNZLgorCitPbiBzb21lIGJhY2sgZW5kcywgYW4gYGluZm9ybWF0aW9u
YWwnIGF0dGVudGlvbiByZXF1ZXN0IHdpbGwgdGltZSBvdXQKK2F1dG9tYXRpY2FsbHkuICBJbiBj
b250cmFzdCwgYSBgY3JpdGljYWxgIHJlcXVlc3QgcmVxdWlyZXMgdGhhdCB0aGUgdXNlcgorYnJp
bmcgRW1hY3MgaW50byBmb2N1cyBhbmQgd2lsbCBub3QgdGltZSBvdXQuICBPbiBzb21lIGJhY2sg
ZW5kcywKK2Bjcml0aWNhbCcgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBgaW5mb3JtYXRpb25hbCcu
IikKKworKGNsLWRlZmdlbmVyaWMgc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MgKCZvcHRpb25hbCBw
cm9ncmVzcykKKyAgIkRpc3BsYXkgYSBwcm9ncmVzcyBpbmRpY2F0b3Igb3ZlcmxheSBvbiB0aGUg
c3lzdGVtIHRhc2tiYXIgaWNvbi4KK1BST0dSRVNTIGlzIGEgZmxvYXQgaW4gdGhlIHJhbmdlIDAu
MCB0byAxLjAuCitJZiBQUk9HUkVTUyBpcyBuaWwsIHJlbW92ZSB0aGUgcHJvZ3Jlc3MgaW5kaWNh
dG9yLiIpCisKKyhkZWZ1biBzeXN0ZW0tdGFza2Jhci0tdmFsaWRhdGUtcHJvZ3Jlc3MgKHByb2dy
ZXNzKQorICAiUmV0dXJuIFBST0dSRVNTIGFzIGEgZmxvYXQgaW4gdGhlIHJhbmdlIDAuMCB0byAx
LjAsIG9yIG5pbC4iCisgICh3aGVuIChuYXRudW1wIHByb2dyZXNzKQorICAgIChzZXRxIHByb2dy
ZXNzIChmbG9hdCBwcm9ncmVzcykpKQorICAod2hlbiAoYW5kIHByb2dyZXNzICg+PSBwcm9ncmVz
cyAwLjApICg8PSBwcm9ncmVzcyAxLjApKQorICAgIHByb2dyZXNzKSkKKworDAorOzsgYHByb2dy
ZXNzLXJlcG9ydGVyJyBzdXBwb3J0LgorCisoZGVmdW4gc3lzdGVtLXRhc2tiYXItLXByb2dyZXNz
LXJlcG9ydGVyLXVwZGF0ZSAoX3JlcG9ydGVyIHBlcmNlbnRhZ2UgaW5kZXgpCisgICJgcHJvZ3Jl
c3MtcmVwb3J0ZXItZG8tdXBkYXRlYCBjYWxsYmFjay4KK1JFUE9SVEVSIHNob3VsZCBiZSB0aGUg
cmVzdWx0IG9mIGEgY2FsbCB0byBgbWFrZS1wcm9ncmVzcy1yZXBvcnRlcicuCitQRVJDRU5UQUdF
IGlzIGluIHRoZSByYW5nZSAwLTEwMCwgb3IgbmlsIGZvciBhIHB1bHNpbmcgcmVwb3J0ZXIuCitJ
TkRFWCBpcyBpbiB0aGUgcmFuZ2UgMC0zLCBvciBuaWwgZm9yIGEgbnVtZXJpYyByZXBvcnRlci4i
CisgIChjb25kIChwZXJjZW50YWdlCisgICAgICAgICAoc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3Mg
KC8gcGVyY2VudGFnZSAxMDAuMCkpKQorICAgICAgICAoaW5kZXgKKyAgICAgICAgIChzeXN0ZW0t
dGFza2Jhci1wcm9ncmVzcyAoLyAoMSsgaW5kZXgpIDQuMCkpKSkpCisKKyhkZWZ1biBzeXN0ZW0t
dGFza2Jhci0tcHJvZ3Jlc3MtcmVwb3J0ZXItZG9uZSAoX3JlcG9ydGVyKQorICAiYHByb2dyZXNz
LXJlcG9ydGVyLWRvbmVgIGNhbGxiYWNrLgorUkVQT1JURVIgc2hvdWxkIGJlIHRoZSByZXN1bHQg
b2YgYSBjYWxsIHRvIGBtYWtlLXByb2dyZXNzLXJlcG9ydGVyJy4iCisgIChzeXN0ZW0tdGFza2Jh
ci1wcm9ncmVzcyBuaWwpKQorCisoZGVmdW4gc3lzdGVtLXRhc2tiYXItbWFrZS1wcm9ncmVzcy1y
ZXBvcnRlciAocmVwb3J0ZXItb3ItbWVzc2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCBtaW4tdmFsdWUgbWF4LXZhbHVlCisJCQkJICAg
ICAgICAgICAgICBjdXJyZW50LXZhbHVlIG1pbi1jaGFuZ2UgbWluLXRpbWUpCisgICJwcm9ncmVz
cy1yZXBvcnRlciBoZWxwZXIuCitSRVBPUlRFUi1PUi1NRVNTQUdFLCBNSU4tVkFMVUUsIE1BWC1W
QUxVRSwgQ1VSUkVOVC1WQUxVRSwgTUlOLUNIQU5HRSwKK01JTi1USU1FIGhhdmUgdGhlIHNhbWUg
bWVhbmluZyBhcyBpbiBgbWFrZS1wcm9ncmVzcy1yZXBvcnRlcicuIgorICAoaWYgKHN0cmluZ3Ag
cmVwb3J0ZXItb3ItbWVzc2FnZSkKKyAgICAgIChtYWtlLXByb2dyZXNzLXJlcG9ydGVyIHJlcG9y
dGVyLW9yLW1lc3NhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbi12YWx1ZSBt
YXgtdmFsdWUKKwkJCSAgICAgIGN1cnJlbnQtdmFsdWUgbWluLWNoYW5nZSBtaW4tdGltZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIydzeXN0ZW0tdGFza2Jhci0tcHJvZ3Jlc3MtcmVw
b3J0ZXItdXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ3N5c3RlbS10YXNr
YmFyLS1wcm9ncmVzcy1yZXBvcnRlci1kb25lKQorICAgIChsZXQqICgocGFyYW1ldGVycyAoY2Ry
IHJlcG9ydGVyLW9yLW1lc3NhZ2UpKQorICAgICAgICAgICAodXBkYXRlLWNhbGxiYWNrIChhcmVm
IHBhcmFtZXRlcnMgNykpCisgICAgICAgICAgIChkb25lLWNhbGxiYWNrIChhcmVmIHBhcmFtZXRl
cnMgOCkpKQorICAgICAgKHVubGVzcyB1cGRhdGUtY2FsbGJhY2sKKyAgICAgICAgKGFzZXQgcGFy
YW1ldGVycyA3CisgICAgICAgICAgICAgICMnc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzLXJlcG9y
dGVyLXVwZGF0ZSkpCisgICAgICAodW5sZXNzIGRvbmUtY2FsbGJhY2sKKyAgICAgICAgKGFzZXQg
cGFyYW1ldGVycyA4CisgICAgICAgICAgICAgICMnc3lzdGVtLXRhc2tiYXItLXByb2dyZXNzLXJl
cG9ydGVyLWRvbmUpKQorICAgICAgcmVwb3J0ZXItb3ItbWVzc2FnZSkpKQorCisoZGVmbWFjcm8g
ZG90aW1lcy13aXRoLXN5c3RlbS10YXNrYmFyLXByb2dyZXNzLXJlcG9ydGVyIChzcGVjCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBv
cnRlci1vci1tZXNzYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmcmVzdCBib2R5KQorICAiTG9vcCBhIG51bWJlciBvZiB0aW1lcyBh
bmQgcmVwb3J0IHByb2dyZXNzLgorUmVwb3J0IHByb2dyZXNzIGluIHRoZSBlY2hvIGFyZWEgYW5k
IHN5c3RlbSB0YXNrYmFyLgorRXZhbHVhdGUgQk9EWSB3aXRoIFZBUiBib3VuZCB0byBzdWNjZXNz
aXZlIGludGVnZXJzIHJ1bm5pbmcgZnJvbQorMCwgaW5jbHVzaXZlLCB0byBDT1VOVCwgZXhjbHVz
aXZlLiAgVGhlbiBldmFsdWF0ZSBSRVNVTFQgdG8gZ2V0Cit0aGUgcmV0dXJuIHZhbHVlIChuaWwg
aWYgUkVTVUxUIGlzIG9taXR0ZWQpLgorCitTUEVDIGFuZCBSRVBPUlRFUi1PUi1NRVNTQUdFIGhh
dmUgdGhlIHNhbWUgbWVhbmluZyBhcyBpbgorYGRvdGltZXMtd2l0aC1wcm9ncmVzcy1yZXBvcnRl
cmAuIgorICAoZGVjbGFyZSAoaW5kZW50IDIpIChkZWJ1ZyAoKHN5bWJvbHAgZm9ybSAmb3B0aW9u
YWwgZm9ybSkgZm9ybSBib2R5KSkpCisgIChsZXQgKChlbmQgKG1ha2Utc3ltYm9sICItLWRvdGlt
ZXMtZW5kLS0iKSkKKyAgICAgICAgKHJlcG9ydGVyIChtYWtlLXN5bWJvbCAicmVwb3J0ZXIiKSkp
CisgICAgYCh1bndpbmQtcHJvdGVjdAorICAgICAgICAgKGxldCogKCgsZW5kICwoY2FkciBzcGVj
KSkKKyAgICAgICAgICAgICAgICAoLHJlcG9ydGVyCisgICAgICAgICAgICAgICAgIChzeXN0ZW0t
dGFza2Jhci1tYWtlLXByb2dyZXNzLXJlcG9ydGVyCisgICAgICAgICAgICAgICAgICAscmVwb3J0
ZXItb3ItbWVzc2FnZQorICAgICAgICAgICAgICAgICAgMCAsZW5kKSkpCisgICAgICAgICAgIChk
b3RpbWVzLXdpdGgtcHJvZ3Jlc3MtcmVwb3J0ZXIKKyAgICAgICAgICAgICAgICxzcGVjCisgICAg
ICAgICAgICAgICAscmVwb3J0ZXIKKyAgICAgICAgICAgICAsQGJvZHkpKQorICAgICAgIChzeXN0
ZW0tdGFza2Jhci1wcm9ncmVzcyBuaWwpKSkpCisKKyhkZWZtYWNybyBkb2xpc3Qtd2l0aC1zeXN0
ZW0tdGFza2Jhci1wcm9ncmVzcy1yZXBvcnRlciAoc3BlYworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRlci1vci1tZXNzYWdlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZy
ZXN0IGJvZHkpCisgICJMb29wIG92ZXIgYSBsaXN0IGFuZCByZXBvcnQgcHJvZ3Jlc3MuCitSZXBv
cnQgcHJvZ3Jlc3MgaW4gdGhlIGVjaG8gYXJlYSBhbmQgc3lzdGVtIHRhc2tiYXIuCitFdmFsdWF0
ZSBCT0RZIHdpdGggVkFSIGJvdW5kIHRvIGVhY2ggY2FyIGZyb20gTElTVCwgaW4gdHVybi4KK1Ro
ZW4gZXZhbHVhdGUgUkVTVUxUIHRvIGdldCByZXR1cm4gdmFsdWUsIGRlZmF1bHQgbmlsLgorCitT
UEVDIGFuZCBSRVBPUlRFUi1PUi1NRVNTQUdFIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBpbgor
YGRvbGlzdC13aXRoLXByb2dyZXNzLXJlcG9ydGVyYC4iCisgIChkZWNsYXJlIChpbmRlbnQgMikg
KGRlYnVnICgoc3ltYm9scCBmb3JtICZvcHRpb25hbCBmb3JtKSBmb3JtIGJvZHkpKSkKKyAgKGxl
dCAoKGxpc3QgKG1ha2Utc3ltYm9sICItLWRvbGlzdC1saXN0LS0iKSkKKyAgICAgICAgKHJlcG9y
dGVyIChtYWtlLXN5bWJvbCAicmVwb3J0ZXIiKSkpCisgICAgYCh1bndpbmQtcHJvdGVjdAorICAg
ICAgICAgKGxldCogKCgsbGlzdCAsKGNhZHIgc3BlYykpCisgICAgICAgICAgICAgICAgKCxyZXBv
cnRlcgorICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItbWFrZS1wcm9ncmVzcy1yZXBv
cnRlcgorICAgICAgICAgICAgICAgICAgLHJlcG9ydGVyLW9yLW1lc3NhZ2UKKyAgICAgICAgICAg
ICAgICAgIDAgKGxlbmd0aCAsbGlzdCkpKSkKKyAgICAgICAgICAgKGRvbGlzdC13aXRoLXByb2dy
ZXNzLXJlcG9ydGVyCisgICAgICAgICAgICAgICAsc3BlYworICAgICAgICAgICAgICAgLHJlcG9y
dGVyCisgICAgICAgICAgICAgLEBib2R5KSkKKyAgICAgICAoc3lzdGVtLXRhc2tiYXItcHJvZ3Jl
c3MgbmlsKSkpKQorCisMCis7OyBELUJ1cyBzdXBwb3J0LgorCisoZGVmY29uc3Qgc3lzdGVtLXRh
c2tiYXItLWRidXMtc2VydmljZSAiY29tLmNhbm9uaWNhbC5Vbml0eSIpCisoZGVmY29uc3Qgc3lz
dGVtLXRhc2tiYXItLWRidXMtaW50ZXJmYWNlICJjb20uY2Fub25pY2FsLlVuaXR5LkxhdW5jaGVy
RW50cnkiKQorCisoZGVmdmFyIHN5c3RlbS10YXNrYmFyLS1kYnVzLWF0dGVudGlvbiBuaWwKKyAg
Ik5vbi1uaWwgd2hlbiBhdHRlbnRpb24gaXMgcmVxdWVzdGVkLiIpCisKKyhkZWZ1biBzeXN0ZW0t
dGFza2Jhci0tZGJ1cy1zZW5kLXNpZ25hbCAobWVzc2FnZSkKKyAgIlNlbmQgTUVTU0FHRSB0byB0
aGUgRC1CdXMgc3lzdGVtIHRhc2tiYXIgc2VydmljZS4iCisgIChsZXQgKChhcHAtdXJpCisgICAg
ICAgICAoZm9ybWF0ICJhcHBsaWNhdGlvbjovLyVzLmRlc2t0b3AiCisgICAgICAgICAgICAgICAg
IHN5c3RlbS10YXNrYmFyLWRidXMtZGVza3RvcC1maWxlLW5hbWUpKSkKKyAgICAoZGJ1cy1zZW5k
LXNpZ25hbAorICAgICA6c2Vzc2lvbgorICAgICBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1zZXJ2aWNl
CisgICAgICIvIgorICAgICBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1pbnRlcmZhY2UKKyAgICAgIlVw
ZGF0ZSIKKyAgICAgYXBwLXVyaQorICAgICBtZXNzYWdlKSkpCisKKyhkZWZ1biBzeXN0ZW0tdGFz
a2Jhci0tZGJ1cy1jbGVhci1hdHRlbnRpb24tb24tZnJhbWUtZm9jdXMgKCkKKyAgIkNsZWFyIGFu
IGFjdGl2ZSBELUJ1cyBhdHRlbnRpb24gcmVxdWVzdCBpZiBhbnkgZnJhbWUgaXMgZm9jdXNlZC4i
CisgICh3aGVuIChhbmQgc3lzdGVtLXRhc2tiYXItLWRidXMtYXR0ZW50aW9uCisgICAgICAgICAg
ICAgKGNhdGNoIDpjbGVhcgorICAgICAgICAgICAgICAgKGRvbGlzdCAoZnJhbWUgKGZyYW1lLWxp
c3QpKQorICAgICAgICAgICAgICAgICAod2hlbiAoZXEgKGZyYW1lLWZvY3VzLXN0YXRlIGZyYW1l
KSB0KQorICAgICAgICAgICAgICAgICAgICh0aHJvdyA6Y2xlYXIgdCkpKSkpCisgICAgKHN5c3Rl
bS10YXNrYmFyLWF0dGVudGlvbiBuaWwpKSkKKworKGRlZnVuIHN5c3RlbS10YXNrYmFyLWRidXMt
cGluZy1zZXJ2aWNlICgpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBgc3lzdGVtLXRhc2tiYXItLWRi
dXMtc2VydmljZScgcmVzcG9uZHMuCitSZXR1cm4gbmlsIGlmIG5vIHJlc3BvbnNlIHdpdGhpbiBg
c3lzdGVtLXRhc2tiYXItZGJ1cy10aW1lb3V0Jy4iCisgIChkYnVzLXBpbmcKKyAgIDpzZXNzaW9u
CisgICBzeXN0ZW0tdGFza2Jhci0tZGJ1cy1zZXJ2aWNlCisgICBzeXN0ZW0tdGFza2Jhci1kYnVz
LXRpbWVvdXQpKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFyLS1lbmFibGUgKCZjb250
ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jh
ci0tYmFjay1lbmQgKGVxbCAnZGJ1cykpKQorICAodW5sZXNzIChzeXN0ZW0tdGFza2Jhci1kYnVz
LXBpbmctc2VydmljZSkKKyAgICAoZXJyb3IgIkQtQnVzIHNlcnZpY2UgYCVzJyB1bmF2YWlsYWJs
ZSIgc3lzdGVtLXRhc2tiYXItLWRidXMtc2VydmljZSkpCisgICh3aGVuIHN5c3RlbS10YXNrYmFy
LWNsZWFyLWF0dGVudGlvbi1vbi1mcmFtZS1mb2N1cworICAgIChhZGQtZnVuY3Rpb24gOmFmdGVy
IGFmdGVyLWZvY3VzLWNoYW5nZS1mdW5jdGlvbgorICAgICAgICAgICAgICAgICAgIydzeXN0ZW0t
dGFza2Jhci0tZGJ1cy1jbGVhci1hdHRlbnRpb24tb24tZnJhbWUtZm9jdXMpKSkKKworKGNsLWRl
Zm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tZGlzYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAn
ZGJ1cykpKQorICAocmVtb3ZlLWZ1bmN0aW9uIGFmdGVyLWZvY3VzLWNoYW5nZS1mdW5jdGlvbgor
ICAgICAgICAgICAgICAgICAgICMnc3lzdGVtLXRhc2tiYXItLWRidXMtY2xlYXItYXR0ZW50aW9u
LW9uLWZyYW1lLWZvY3VzKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci1iYWRnZSAo
JmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFz
a2Jhci0tYmFjay1lbmQgKGVxbCAnZGJ1cykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmb3B0aW9uYWwgY291bnQpCisgICJEaXNwbGF5IENPVU5UIGFzIGFuIG92ZXJsYXkg
b24gdGhlIHN5c3RlbSB0YXNrYmFyIEVtYWNzIGljb24uCitJZiBDT1VOVCBpcyBhbiBpbnRlZ2Vy
LCBkaXNwbGF5IHRoYXQuICBJZiBDT1VOVCBpcyBhIHN0cmluZywgY29udmVydCBpdAordG8gYW4g
aW50ZWdlciwgb3IgbmlsIGlmIHRoYXQgZmFpbHMuICBJZiBDT1VOVCBpcyBhbnkgb3RoZXIgdHlw
ZSwgdXNlCituaWwuICBJZiBDT1VOVCBpcyBuaWwgb3IgYW4gZW1wdHkgc3RyaW5nLCByZW1vdmUg
dGhlIGJhZGdlLgorTm90ZTogVGhlIFVuaXR5IEQtQnVzIHByb3RvY29sIHN1cHBvcnRzIG9ubHkg
aW50ZWdlciBiYWRnZXMuIgorICAoY29uZCAoKHN0cmluZ3AgY291bnQpCisgICAgICAgICAoaWYg
KHN0cmluZy1lbXB0eS1wIGNvdW50KQorICAgICAgICAgICAgIChzZXRxIGNvdW50IG5pbCkKKyAg
ICAgICAgICAgKGxldCAoKGNvdW50LTEgKHN0cmluZy10by1udW1iZXIgY291bnQpKSkKKyAgICAg
ICAgICAgICAoc2V0cSBjb3VudCAoaWYgKGludGVnZXJwIGNvdW50LTEpIGNvdW50LTEgbmlsKSkp
KSkKKyAgICAgICAgKChub3QgKGludGVnZXJwIGNvdW50KSkKKyAgICAgICAgIChzZXRxIGNvdW50
IG5pbCkpKQorICAoc3lzdGVtLXRhc2tiYXItLWRidXMtc2VuZC1zaWduYWwKKyAgIGAoKDpkaWN0
LWVudHJ5ICJjb3VudC12aXNpYmxlIgorICAgICAgICAgICAgICAgICAgKDp2YXJpYW50IDpib29s
ZWFuICwobm90IChudWxsIGNvdW50KSkpKQorICAgICAoOmRpY3QtZW50cnkgImNvdW50IgorICAg
ICAgICAgICAgICAgICAgKDp2YXJpYW50IDp1aW50MzIgLChpZiAobnVsbCBjb3VudCkgMAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQpKSkpKSkKKworKGNsLWRl
Zm1ldGhvZCBzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gKCZjb250ZXh0CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFs
ICdkYnVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9u
YWwgdXJnZW5jeSB0aW1lb3V0KQorICAiUmVxdWVzdCBVUkdFTkNZIHVzZXIgYXR0ZW50aW9uIG9u
IHRoZSBzeXN0ZW0gdGFza2JhciBFbWFjcyBpY29uLgorVGhlIHJlcXVlc3Qgd2lsbCB0aW1lIG91
dCB3aXRoaW4gdGhlIFRJTUVPVVQgc2Vjb25kcyBpbnRlcnZhbC4KK1RoZSBVbml0eSBELUJ1cyBw
cm90b2NvbCBkb2VzIG5vdCBzdXBwb3J0IGRpZmZlcmVudGlhdGVkIHVyZ2VuY2llcy4iCisgIChz
ZXRxIHN5c3RlbS10YXNrYmFyLS1kYnVzLWF0dGVudGlvbiB1cmdlbmN5KQorICAoc3lzdGVtLXRh
c2tiYXItLWRidXMtc2VuZC1zaWduYWwKKyAgIGAoKDpkaWN0LWVudHJ5ICJ1cmdlbnQiCisgICAg
ICAgICAgICAgICAgICAoOnZhcmlhbnQgOmJvb2xlYW4gLChub3QgKG51bGwgdXJnZW5jeSkpKSkp
KQorICAod2hlbiAoYW5kIHVyZ2VuY3kgdGltZW91dCkKKyAgICAocnVuLXdpdGgtdGltZXIKKyAg
ICAgdGltZW91dAorICAgICBuaWwKKyAgICAgIydzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gbmls
KSkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MgKCZjb250ZXh0Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJh
Y2stZW5kIChlcWwgJ2RidXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJm9wdGlvbmFsIHByb2dyZXNzKQorICAiRGlzcGxheSBhIHByb2dyZXNzIGJhciBvdmVybGF5
IG9uIHRoZSBzeXN0ZW0gdGFza2JhciBpY29uLgorUFJPR1JFU1MgaXMgYSBmbG9hdCBpbiB0aGUg
cmFuZ2UgMC4wIHRvIDEuMC4KK0lmIFBST0dSRVNTIGlzIG5pbCwgcmVtb3ZlIHRoZSBwcm9ncmVz
cyBiYXIuIgorICAoc2V0cSBwcm9ncmVzcyAoc3lzdGVtLXRhc2tiYXItLXZhbGlkYXRlLXByb2dy
ZXNzIHByb2dyZXNzKSkKKyAgKHN5c3RlbS10YXNrYmFyLS1kYnVzLXNlbmQtc2lnbmFsCisgICBg
KCg6ZGljdC1lbnRyeSAicHJvZ3Jlc3MtdmlzaWJsZSIKKyAgICAgICAgICAgICAgICAgICg6dmFy
aWFudCA6Ym9vbGVhbiAsKG5vdCAobnVsbCBwcm9ncmVzcykpKSkKKyAgICAgKDpkaWN0LWVudHJ5
ICJwcm9ncmVzcyIKKyAgICAgICAgICAgICAgICAgICg6dmFyaWFudCA6ZG91YmxlICwoaWYgKG51
bGwgcHJvZ3Jlc3MpIDAgcHJvZ3Jlc3MpKSkpKSkKKworDAorOzsgbWFjT1MvR05Vc3RlcCBOUyBz
dXBwb3J0LgorCisoZGVjbGFyZS1mdW5jdGlvbiBucy1iYWRnZSAibnNmbnMubSIpCisoZGVjbGFy
ZS1mdW5jdGlvbiBucy1yZXF1ZXN0LXVzZXItYXR0ZW50aW9uICJuc2Zucy5tIikKKyhkZWNsYXJl
LWZ1bmN0aW9uIG5zLXByb2dyZXNzLWluZGljYXRvciAibnNmbnMubSIpCisKKyhjbC1kZWZtZXRo
b2Qgc3lzdGVtLXRhc2tiYXItLWVuYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHN5c3RlbS10YXNrYmFyLS1iYWNrLWVuZCAoZXFsICducykpKQor
ICAoaWdub3JlKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci0tZGlzYWJsZSAoJmNv
bnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFz
a2Jhci0tYmFjay1lbmQgKGVxbCAnbnMpKSkKKyAgKGlnbm9yZSkpCisKKyhjbC1kZWZtZXRob2Qg
c3lzdGVtLXRhc2tiYXItYmFkZ2UgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ25zKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCBjb3VudCkKKyAgIkRpc3BsYXkg
Q09VTlQgYXMgYW4gb3ZlcmxheSBvbiB0aGUgRG9jayBiYWRnZS4KK0lmIENPVU5UIGlzIGFuIGlu
dGVnZXIgb3IgYSBub24tZW1wdHkgc3RyaW5nLCBkaXNwbGF5IHRoYXQuICBJZiBDT1VOVCBpcwor
bmlsIG9yIGFuIGVtcHR5IHN0cmluZywgY2xlYXIgdGhlIGJhZGdlIG92ZXJsYXkuCitOb3RlOiBO
UyB3aWxsIGFiYnJldmlhdGUgbG9uZyBzdHJpbmdzIHRvIGZpdCB0aGUgYmFkZ2UncyBhbGxvY2F0
ZWQKK3NwYWNlLiIKKyAgKGNvbmQgKChzdHJpbmdwIGNvdW50KQorICAgICAgICAgKHdoZW4gKHN0
cmluZy1lbXB0eS1wIGNvdW50KQorICAgICAgICAgICAoc2V0cSBjb3VudCBuaWwpKSkKKyAgICAg
ICAgKChpbnRlZ2VycCBjb3VudCkKKyAgICAgICAgIChzZXRxIGNvdW50IChudW1iZXItdG8tc3Ry
aW5nIGNvdW50KSkpCisgICAgICAgICh0IChzZXRxIGNvdW50IG5pbCkpKQorICAobnMtYmFkZ2Ug
Y291bnQpKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS10YXNrYmFyLWF0dGVudGlvbiAoJmNvbnRl
eHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2ti
YXItLWJhY2stZW5kIChlcWwgJ25zKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmb3B0aW9uYWwgdXJnZW5jeSB0aW1lb3V0KQorICAiUmVxdWVzdCBVUkdFTkNZIHVz
ZXIgYXR0ZW50aW9uIG9uIHRoZSBEb2NrLgorVGhlIGF0dGVudGlvbiBpbmRpY2F0b3Igd2lsbCBi
ZSBjbGVhcmVkIGFmdGVyIFRJTUVPVVQgc2Vjb25kcy4iCisgIChucy1yZXF1ZXN0LXVzZXItYXR0
ZW50aW9uIHVyZ2VuY3kpCisgICh3aGVuIChhbmQgdXJnZW5jeSB0aW1lb3V0KQorICAgIChydW4t
d2l0aC10aW1lcgorICAgICB0aW1lb3V0CisgICAgIG5pbAorICAgICAjJ3N5c3RlbS10YXNrYmFy
LWF0dGVudGlvbiBuaWwpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFza2Jhci1wcm9ncmVz
cyAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0
ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAnbnMpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJm9wdGlvbmFsIHByb2dyZXNzKQorICAiRGlzcGxheSBhIHByb2dyZXNz
IGJhciBvdmVybGF5IG9uIHRoZSBEb2NrIGFuZCBBcHAgU3dpdGNoZXIuCitQUk9HUkVTUyBpcyBh
IGZsb2F0IGluIHRoZSByYW5nZSAwLjAgdG8gMS4wLgorSWYgUFJPR1JFU1MgaXMgbmlsLCByZW1v
dmUgdGhlIHByb2dyZXNzIGJhci4iCisgIChucy1wcm9ncmVzcy1pbmRpY2F0b3IgKHN5c3RlbS10
YXNrYmFyLS12YWxpZGF0ZS1wcm9ncmVzcyBwcm9ncmVzcykpKQorCisMCis7OyBNUy1XaW5kb3dz
IHN1cHBvcnQuCisKKyhkZWNsYXJlLWZ1bmN0aW9uIHczMi1iYWRnZSAidzMyZm5zLmMiKQorKGRl
Y2xhcmUtZnVuY3Rpb24gdzMyLXJlcXVlc3QtdXNlci1hdHRlbnRpb24gInczMmZucy5jIikKKyhk
ZWNsYXJlLWZ1bmN0aW9uIHczMi1wcm9ncmVzcy1pbmRpY2F0b3IgInczMmZucy5jIikKKworKGRl
ZnZhciBzeXN0ZW0tdGFza2Jhci13MzItYmFkZ2UtYmFja2dyb3VuZCAiI2U3NTg1NyIgOyByZWRp
c2gKKyAgInczMiBiYWRnZSBiYWNrZ3JvdW5kIFJHQiB0cmlwbGUgc3RyaW5nLiIpCisKKyhkZWZ2
YXIgc3lzdGVtLXRhc2tiYXItdzMyLWJhZGdlLWZvcmVncm91bmQgIiNmZmZmZmYiIDsgd2hpdGUK
KyAgInczMiBiYWRnZSBmb3JlZ3JvdW5kIFJHQiB0cmlwbGUgc3RyaW5nLiIpCisKKyhkZWZ1biBz
eXN0ZW0tdGFza2Jhci0tdzMyLWNsZWFyLWZyYW1lLWluZGljYXRvcnMgKGZyYW1lKQorICA7OyBO
T1RFOiBVcGRhdGUgdGhlIGJlbG93IGlmIGFkZGluZyBuZXcgdzMyIHN5c3RlbS10YXNrYmFyIGZ1
bmN0aW9ucy4KKyAgKHdpdGgtc2VsZWN0ZWQtZnJhbWUgZnJhbWUKKyAgICAoc3lzdGVtLXRhc2ti
YXItYmFkZ2UgbmlsKQorICAgIChzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gbmlsKQorICAgIChz
eXN0ZW0tdGFza2Jhci1wcm9ncmVzcyBuaWwpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tdGFz
a2Jhci0tZW5hYmxlICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ3czMikpKQorICA7OyBDbGVhciBz
eXN0ZW0tdGFza2JhciBpbmRpY2F0b3JzIGZvciBhIGZyYW1lIHdoZW4gaXQgaXMgZGVsZXRlZC4K
KyAgKGFkZC1ob29rICdkZWxldGUtZnJhbWUtZnVuY3Rpb25zCisgICAgICAgICAgICAjJ3N5c3Rl
bS10YXNrYmFyLS13MzItY2xlYXItZnJhbWUtaW5kaWNhdG9ycykpCisKKyhjbC1kZWZtZXRob2Qg
c3lzdGVtLXRhc2tiYXItLWRpc2FibGUgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChlcWwgJ3czMikpKQor
ICAocmVtb3ZlLWhvb2sgJ2RlbGV0ZS1mcmFtZS1mdW5jdGlvbnMKKyAgICAgICAgICAgICAgICMn
c3lzdGVtLXRhc2tiYXItLXczMi1jbGVhci1mcmFtZS1pbmRpY2F0b3JzKSkKKworKGNsLWRlZm1l
dGhvZCBzeXN0ZW0tdGFza2Jhci1iYWRnZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAndzMyKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCBjb3VudCkKKyAgIkRp
c3BsYXkgYSBDT1VOVCBvdmVybGF5IG9uIHRoZSBzeXN0ZW0gdGFza2JhciBpY29uLgorVGhlIHRh
c2tiYXIgaWNvbiB0YXJnZXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZWxlY3RlZCBmcmFtZS4K
KworSWYgQ09VTlQgaXMgYW4gaW50ZWdlciBvciBhIG5vbi1lbXB0eSBzdHJpbmcsIGRpc3BsYXkg
dGhhdC4gIElmIENPVU5UIGlzCituaWwgb3IgYW4gZW1wdHkgc3RyaW5nLCBjbGVhciB0aGUgYmFk
Z2UuCisKK0R1ZSB0byBNUy1XaW5kb3dzIGljb24gb3ZlcmxheSBzaXplIGxpbWl0YXRpb25zLCBp
ZiBDT1VOVCBpcyBhbiBpbnRlZ2VyCithbmQgaXMgb3V0c2lkZSB0aGUgcmFuZ2UgLTk5IHRvIDk5
LCBkaXNwbGF5IFwiLTk5XCIgYW5kIFwiOTkrXCIsCityZXNwZWN0aXZlbHksIGlmIENPVU5UIGlz
IGEgc3RyaW5nIGxvbmdlciB0aGFuIDIgY2hhcmFjdGVycyB0cnVuY2F0ZSBpdAordXNpbmcgYHRy
dW5jYXRlLXN0cmluZy10by13aWR0aGAuCisKK0NvbnN1bHQgYHN5c3RlbS10YXNrYmFyLXczMi1i
YWRnZS1iYWNrZ3JvdW5kYCBhbmQKK2BzeXN0ZW0tdGFza2Jhci13MzItYmFkZ2UtZm9yZWdyb3Vu
ZGAgZm9yIHRoZSBiYWNrZ3JvdW5kIGFuZCBmb3JlZ3JvdW5kCitjb2xvcnMgZm9yIHRoZSBwYWlu
dGVkIG92ZXJsYXkuIgorICAoY29uZCAoKHN0cmluZ3AgY291bnQpCisgICAgICAgICAoaWYgKHN0
cmluZy1lbXB0eS1wIGNvdW50KQorICAgICAgICAgICAgIChzZXRxIGNvdW50IG5pbCkKKyAgICAg
ICAgICAgKHdoZW4gKGxlbmd0aD4gY291bnQgMikKKyAgICAgICAgICAgICAoc2V0cSBjb3VudCAo
dHJ1bmNhdGUtc3RyaW5nLXRvLXdpZHRoIGNvdW50IDMgMCBuaWwgdCkpKSkpCisgICAgICAgICgo
aW50ZWdlcnAgY291bnQpCisgICAgICAgICAoaWYgKGFuZCAoPiBjb3VudCAtMTAwKQorICAgICAg
ICAgICAgICAgICAgKDwgY291bnQgMTAwKSkKKyAgICAgICAgICAgICAoc2V0cSBjb3VudCAobnVt
YmVyLXRvLXN0cmluZyBjb3VudCkpCisgICAgICAgICAgIChpZiAoPCBjb3VudCAwKQorICAgICAg
ICAgICAgICAgKHNldHEgY291bnQgIi05OSIpCisgICAgICAgICAgICAgKHNldHEgY291bnQgIjk5
KyIpKSkpCisgICAgICAgICh0IChzZXRxIGNvdW50IG5pbCkpKQorICAodzMyLWJhZGdlIGNvdW50
CisgICAgICAgICAgICAgc3lzdGVtLXRhc2tiYXItdzMyLWJhZGdlLWJhY2tncm91bmQKKyAgICAg
ICAgICAgICBzeXN0ZW0tdGFza2Jhci13MzItYmFkZ2UtZm9yZWdyb3VuZCkpCisKKyhjbC1kZWZt
ZXRob2Qgc3lzdGVtLXRhc2tiYXItYXR0ZW50aW9uICgmY29udGV4dAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tdGFza2Jhci0tYmFjay1lbmQgKGVxbCAn
dzMyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwg
dXJnZW5jeSB0aW1lb3V0KQorICAiUmVxdWVzdCBVUkdFTkNZIHVzZXIgYXR0ZW50aW9uIG9uIHRo
ZSBzeXN0ZW0gdGFza2JhciBpY29uLgorSW5kaWNhdGUgdGhlIGljb24gYXNzb2NpYXRlZCB3aXRo
IHRoZSBzZWxlY3RlZCBmcmFtZS4KK0lmIFVSR0VOQ1kgaXMgdGhlIHN5bWJvbCBgaW5mb3JtYXRp
b25hbCcsIGZsYXNoIHRoZSB0YXNrYmFyIGljb24uCitJZiBVUkdFTkNZIGlzIHRoZSBzeW1ib2wg
YGNyaXRpY2FsJywgZmxhc2ggdGhlIHRhc2tiYXIgaWNvbiBhbmQgdGhlCitNUy1XaW5kb3dzIHdp
bmRvdyBmcmFtZS4KK0NsZWFyIGF0dGVudGlvbiBpbmRpY2F0b3IgYWZ0ZXIgVElNRU9VVCBzZWNv
bmRzLiAgSWYgVElNRU9VVCBpcyBuaWwsCitkZWZhdWx0IHRvIE1TLVdpbmRvd3MgZGVmYXVsdCBi
ZWhhdmlvci4iCisgICh3MzItcmVxdWVzdC11c2VyLWF0dGVudGlvbiB1cmdlbmN5KQorICAod2hl
biAoYW5kIHVyZ2VuY3kgdGltZW91dCkKKyAgICAocnVuLXdpdGgtdGltZXIKKyAgICAgdGltZW91
dAorICAgICBuaWwKKyAgICAgIydzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gbmlsKSkpCisKKyhj
bC1kZWZtZXRob2Qgc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MgKCZjb250ZXh0CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXRhc2tiYXItLWJhY2stZW5kIChl
cWwgJ3czMikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9u
YWwgcHJvZ3Jlc3MpCisgICJEaXNwbGF5IGEgcHJvZ3Jlc3MgYmFyIG9uIHRoZSBzeXN0ZW0gdGFz
a2JhciBpY29uLgorUFJPR1JFU1MgaXMgYSBmbG9hdCBpbiB0aGUgcmFuZ2UgMC4wIHRvIDEuMC4K
K0lmIFBST0dSRVNTIGlzIG5pbCwgcmVtb3ZlIHRoZSBwcm9ncmVzcyBiYXIuIgorICAodzMyLXBy
b2dyZXNzLWluZGljYXRvciAoc3lzdGVtLXRhc2tiYXItLXZhbGlkYXRlLXByb2dyZXNzIHByb2dy
ZXNzKSkpCisKKwwKKworKHByb3ZpZGUgJ3N5c3RlbS10YXNrYmFyKQorCis7Ozsgc3lzdGVtLXRh
c2tiYXIuZWwgZW5kcyBoZXJlCmRpZmYgLS1naXQgYS9zcmMvbnNmbnMubSBiL3NyYy9uc2Zucy5t
CmluZGV4IDM1MjhjNGFjZDUwLi4xYThmOTVjMTRlZiAxMDA2NDQKLS0tIGEvc3JjL25zZm5zLm0K
KysrIGIvc3JjL25zZm5zLm0KQEAgLTM2NzQsNiArMzY3NCwxMjkgQEAgVGhlIHBvc2l0aW9uIGlz
IHJldHVybmVkIGFzIGEgY29ucyBjZWxsIChYIC4gWSkgb2YgdGhlCiAgIHJldHVybiBRbmlsOwog
fQogCitERUZVTiAoIm5zLWJhZGdlIiwgRm5zX2JhZGdlLCBTbnNfYmFkZ2UsIDEsIDEsIDAsCisg
ICAgICAgZG9jOiAvKiBTZXQgdGhlIGFwcCBpY29uIGJhZGdlIHRvIEJBREdFLgorQkFER0Ugc2hv
dWxkIGJlIGEgc3RyaW5nIHNob3J0IGVub3VnaCB0byBkaXNwbGF5IG5pY2VseSBpbiB0aGUgc2hv
cnQKK3NwYWNlIGludGVuZGVkIGZvciBiYWRnZXMuCitJZiBCQURHRSBpcyBuaWwsIGNsZWFyIHRo
ZSBhcHAgYmFkZ2UuICAqLykKKyAgKExpc3BfT2JqZWN0IGJhZGdlKQoreworICBibG9ja19pbnB1
dCAoKTsKKyAgaWYgKE5JTFAgKGJhZGdlKSkKKyAgICBbW05TQXBwIGRvY2tUaWxlXSBzZXRCYWRn
ZUxhYmVsOiBuaWxdOworICBlbHNlCisgICAgeworICAgICAgQ0hFQ0tfU1RSSU5HIChiYWRnZSk7
CisgICAgICBbW05TQXBwIGRvY2tUaWxlXSBzZXRCYWRnZUxhYmVsOgorCQkJICBbTlNTdHJpbmcg
c3RyaW5nV2l0aFVURjhTdHJpbmc6IFNTREFUQSAoYmFkZ2UpXV07CisgICAgfQorICB1bmJsb2Nr
X2lucHV0ICgpOworICByZXR1cm4gUW5pbDsKK30KKworLyogVXNlIC0xIHRvIGluZGljYXRlIG5v
IGFjdGl2ZSByZXF1ZXN0LiAgKi8KK3N0YXRpYyBOU0ludGVnZXIgbnNfcmVxdWVzdF91c2VyX2F0
dGVudGlvbl9pZCA9IC0xOworCitERUZVTiAoIm5zLXJlcXVlc3QtdXNlci1hdHRlbnRpb24iLAor
ICAgICAgIEZuc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uLAorICAgICAgIFNuc19yZXF1ZXN0X3Vz
ZXJfYXR0ZW50aW9uLAorICAgICAgIDEsIDEsIDAsCisgICAgICAgZG9jOiAvKiBCb3VuY2UgdGhl
IGFwcCBkb2NrIGljb24gdG8gcmVxdWVzdCB1c2VyIGF0dGVudGlvbi4KK0lmIFVSR0VOQ1kgbmls
LCBjYW5jZWwgdGhlIG91dHN0YW5kaW5nIHJlcXVlc3QsIGlmIGFueS4KK0lmIFVSR0VOQ1kgaXMg
dGhlIHN5bWJvbCBgaW5mb3JtYXRpb25hbCcsIGJvdW5jaW5nIGxhc3RzIGEgZmV3IHNlY29uZHMu
CitJZiBVUkdFTkNZIGlzIHRoZSBzeW1ib2wgYGNyaXRpY2FsJywgYm91bmNpbmcgbGFzdHMgdW50
aWwgRW1hY3MgaXMKK2ZvY3VzZWQuICAqLykKKyAgKExpc3BfT2JqZWN0IHVyZ2VuY3kpCit7Cisg
IGJsb2NrX2lucHV0ICgpOworICBpZiAobnNfcmVxdWVzdF91c2VyX2F0dGVudGlvbl9pZCAhPSAt
MSkKKyAgICB7CisgICAgICBbTlNBcHAgY2FuY2VsVXNlckF0dGVudGlvblJlcXVlc3Q6IG5zX3Jl
cXVlc3RfdXNlcl9hdHRlbnRpb25faWRdOworICAgICAgbnNfcmVxdWVzdF91c2VyX2F0dGVudGlv
bl9pZCA9IC0xOworICAgIH0KKyAgaWYgKCFOSUxQICh1cmdlbmN5KSAmJiBTWU1CT0xQICh1cmdl
bmN5KSkKKyAgICB7CisgICAgICBpZiAoRVEgKHVyZ2VuY3ksIFFpbmZvcm1hdGlvbmFsKSkKKwlu
c19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uX2lkID0gW05TQXBwIHJlcXVlc3RVc2VyQXR0ZW50aW9u
OgorCQkJCQkJTlNJbmZvcm1hdGlvbmFsUmVxdWVzdF07CisgICAgICBlbHNlIGlmIChFUSAodXJn
ZW5jeSwgUWNyaXRpY2FsKSkKKwluc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uX2lkID0gW05TQXBw
IHJlcXVlc3RVc2VyQXR0ZW50aW9uOgorCQkJCQkJTlNDcml0aWNhbFJlcXVlc3RdOworICAgIH0K
KyAgdW5ibG9ja19pbnB1dCAoKTsKKyAgcmV0dXJuIFFuaWw7Cit9CisKK0RFRlVOICgibnMtcHJv
Z3Jlc3MtaW5kaWNhdG9yIiwKKyAgICAgICBGbnNfcHJvZ3Jlc3NfaW5kaWNhdG9yLAorICAgICAg
IFNuc19wcm9ncmVzc19pbmRpY2F0b3IsCisgICAgICAgMSwgMSwgMCwKKyAgICAgICBkb2M6IC8q
IEJvdW5jZSB0aGUgYXBwIGRvY2sgaWNvbiB0byByZXF1ZXN0IHVzZXIgYXR0ZW50aW9uLgorCSAg
ICAgICBQUk9HUkVTUyBpcyBhIGZsb2F0IGJldHdlZW4gMC4wIGFuZCAxLjAuCisJICAgICAgIElm
IFBST0dSRVNTIGlzIG5pbCwgcmVtb3ZlIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IuICAqLykKKyAg
KExpc3BfT2JqZWN0IHByb2dyZXNzKQoreworICBibG9ja19pbnB1dCAoKTsKKyAgTlNEb2NrVGls
ZSAqZG9ja190aWxlID0gW05TQXBwIGRvY2tUaWxlXTsKKyAgLyogVXNlIE5TTGV2ZWxJbmRpY2F0
b3Igd2l0aCByZWxpYWJsZSByZWRyYXdzLCBub3QgTlNQcm9ncmVzc0luZGljYXRvci4gICovCisg
IE5TTGV2ZWxJbmRpY2F0b3IgKmxldmVsX2luZGljYXRvcjsKKyAgLyogUmV1c2UgdGhlIGluZGlj
YXRvciBzdWJ2aWV3IG9yIGNyZWF0ZSBvbmUuICovCisgIGlmIChkb2NrX3RpbGUuY29udGVudFZp
ZXcKKyAgICAgICYmIFtbZG9ja190aWxlLmNvbnRlbnRWaWV3IHN1YnZpZXdzXSBjb3VudF0gPiAw
CisgICAgICAmJiBbW1tkb2NrX3RpbGUuY29udGVudFZpZXcgc3Vidmlld3NdIGxhc3RPYmplY3Rd
CisgICAgICAgICAgICAgICAgICAgICAgICBpc0tpbmRPZkNsYXNzOltOU0xldmVsSW5kaWNhdG9y
IGNsYXNzXV0pCisgICAgbGV2ZWxfaW5kaWNhdG9yID0KKyAgICAgIChOU0xldmVsSW5kaWNhdG9y
ICopW1tbZG9ja190aWxlIGNvbnRlbnRWaWV3XSBzdWJ2aWV3c10gbGFzdE9iamVjdF07CisgICAg
ZWxzZQorICAgICAgeworCWlmICghZG9ja190aWxlLmNvbnRlbnRWaWV3KQorCSAgeworCSAgICBO
U0ltYWdlVmlldyogaW1hZ2VfdmlldyA9IFtbTlNJbWFnZVZpZXcgYWxsb2NdIGluaXRdOworCSAg
ICBbaW1hZ2VfdmlldyBzZXRJbWFnZTogW05TQXBwIGFwcGxpY2F0aW9uSWNvbkltYWdlXV07CisJ
ICAgIFtkb2NrX3RpbGUgc2V0Q29udGVudFZpZXc6IGltYWdlX3ZpZXddOworCSAgfQorCS8qIFNl
dCB3aWR0aCB0byB0aGUgd2lkdGggb2YgdGhlIGFwcGxpY2F0aW9uIGljb24sIGFuZCBoZWlnaHQg
dG8KKwkgICAlIG9mIHRoZSBpY29uIGhlaWdodCB0byByZXNwZWN0IHNjYWxlZCBpY29ucy4gICov
CisJZmxvYXQgd2lkdGggPSBbW05TQXBwIGFwcGxpY2F0aW9uSWNvbkltYWdlXSBzaXplXS53aWR0
aDsKKwlmbG9hdCBoZWlnaHQgPSAwLjEwICogW1tOU0FwcCBhcHBsaWNhdGlvbkljb25JbWFnZV0g
c2l6ZV0uaGVpZ2h0OworCWxldmVsX2luZGljYXRvciA9CisJICBbW05TTGV2ZWxJbmRpY2F0b3Ig
YWxsb2NdIGluaXRXaXRoRnJhbWU6CisJCQkJICAgICAgTlNNYWtlUmVjdCAoMC4wLCAwLjAsCisJ
CQkJCQkgIHdpZHRoLCBoZWlnaHQpXTsKKwlbbGV2ZWxfaW5kaWNhdG9yIHNldFdhbnRzTGF5ZXI6
IFlFU107IC8qIFBlcmZvcm1hbmNlLiAgKi8KKwlbbGV2ZWxfaW5kaWNhdG9yIHNldEVuYWJsZWQ6
IE5PXTsgLyogSWdub3JlIG1vdXNlIGlucHV0LiAgKi8KKwlbbGV2ZWxfaW5kaWNhdG9yIHNldExl
dmVsSW5kaWNhdG9yU3R5bGU6CisJCQkgICBOU0xldmVsSW5kaWNhdG9yU3R5bGVDb250aW51b3Vz
Q2FwYWNpdHldOworCS8qIE1hdGNoIE5TUHJvZ3Jlc3NJbmRpY2F0b3IgY29sb3IuICAqLworCVts
ZXZlbF9pbmRpY2F0b3Igc2V0RmlsbENvbG9yOiBbTlNDb2xvciBjb250cm9sQWNjZW50Q29sb3Jd
XTsKKwlbbGV2ZWxfaW5kaWNhdG9yIHNldE1pblZhbHVlOiAwLjBdOworCVtsZXZlbF9pbmRpY2F0
b3Igc2V0TWF4VmFsdWU6IDEuMF07CisJLyogVGhlIGNvbnRlbnRWaWV3IHRha2VzIG93bmVyc2hp
cC4gICovCisJW2RvY2tfdGlsZS5jb250ZW50VmlldyBhZGRTdWJ2aWV3OiBsZXZlbF9pbmRpY2F0
b3JdOworICAgICAgfQorICBkb3VibGUgcHJvZ3Jlc3NfdmFsdWU7CisgIEJPT0wgaGlkZSA9IChO
SUxQIChwcm9ncmVzcykKKwkgICAgICAgfHwgKCFOSUxQIChwcm9ncmVzcykgJiYgIShGTE9BVFAg
KHByb2dyZXNzKSkpKTsKKyAgaWYgKCFoaWRlKQorICAgIHsKKyAgICAgIHByb2dyZXNzX3ZhbHVl
ID0gWEZMT0FUX0RBVEEgKHByb2dyZXNzKTsKKyAgICAgIGhpZGUgPSAocHJvZ3Jlc3NfdmFsdWUg
PCAwLjAgfHwgcHJvZ3Jlc3NfdmFsdWUgPiAxLjApOworICAgIH0KKyAgaWYgKGhpZGUpCisgICAg
eworICAgICAgW2xldmVsX2luZGljYXRvciBzZXREb3VibGVWYWx1ZTogMC4wXTsKKyAgICAgIFts
ZXZlbF9pbmRpY2F0b3Igc2V0SGlkZGVuOiBZRVNdOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAg
ICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0RG91YmxlVmFsdWU6IHByb2dyZXNzX3ZhbHVlXTsKKyAg
ICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0SGlkZGVuOiBOT107CisgICAgfQorICBbZG9ja190aWxl
IGRpc3BsYXldOworICB1bmJsb2NrX2lucHV0ICgpOworICByZXR1cm4gUW5pbDsKK30KKwogI2lm
ZGVmIE5TX0lNUExfQ09DT0EKIAogREVGVU4gKCJucy1zZW5kLWl0ZW1zIiwKQEAgLTM5NTcsNiAr
NDA4MCw5IEBAIC0gKExpc3BfT2JqZWN0KWxpc3BTdHJpbmcKICAgZGVmc3ViciAoJlNuc19zZXRf
bW91c2VfYWJzb2x1dGVfcGl4ZWxfcG9zaXRpb24pOwogICBkZWZzdWJyICgmU25zX21vdXNlX2Fi
c29sdXRlX3BpeGVsX3Bvc2l0aW9uKTsKICAgZGVmc3ViciAoJlNuc19zaG93X2NoYXJhY3Rlcl9w
YWxldHRlKTsKKyAgZGVmc3ViciAoJlNuc19iYWRnZSk7CisgIGRlZnN1YnIgKCZTbnNfcmVxdWVz
dF91c2VyX2F0dGVudGlvbik7CisgIGRlZnN1YnIgKCZTbnNfcHJvZ3Jlc3NfaW5kaWNhdG9yKTsK
ICNpZmRlZiBOU19JTVBMX0NPQ09BCiAgIGRlZnN1YnIgKCZTbnNfc2VuZF9pdGVtcyk7CiAjZW5k
aWYKQEAgLTQwMjMsNCArNDE0OSw2IEBAIC0gKExpc3BfT2JqZWN0KWxpc3BTdHJpbmcKICAgREVG
U1lNIChRYXNzcV9kZWxldGVfYWxsLCAiYXNzcS1kZWxldGUtYWxsIik7CiAgIERFRlNZTSAoUXJ1
bl9hdF90aW1lLCAicnVuLWF0LXRpbWUiKTsKICAgREVGU1lNIChReF9oaWRlX3RpcCwgIngtaGlk
ZS10aXAiKTsKKyAgREVGU1lNIChRaW5mb3JtYXRpb25hbCwgImluZm9ybWF0aW9uYWwiKTsKKyAg
REVGU1lNIChRY3JpdGljYWwsICJjcml0aWNhbCIpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL3czMmZu
cy5jIGIvc3JjL3czMmZucy5jCmluZGV4IDY3OWU4MTk3ZmQ4Li4xYTJmYzllODg0MiAxMDA2NDQK
LS0tIGEvc3JjL3czMmZucy5jCisrKyBiL3NyYy93MzJmbnMuYwpAQCAtMzUsNyArMzUsMTIgQEAg
I2RlZmluZSBfV0lOMzJfV0lOTlQgMHgwNjAwCiAjaW5jbHVkZSA8Yy1jdHlwZS5oPgogCiAjZGVm
aW5lIENPQkpNQUNST1MgLyogQXNrIGZvciBDIGRlZmluaXRpb25zIGZvciBDT00uICAqLworI2lm
ICFkZWZpbmVkIE1JTkdXX1c2NCAmJiAhZGVmaW5lZCBDWUdXSU4KKyMgZGVmaW5lIElOSVRHVUlE
CisjZW5kaWYKKyNpbmNsdWRlIDxpbml0Z3VpZC5oPgogI2luY2x1ZGUgPHNobG9iai5oPgorI2lu
Y2x1ZGUgPHNob2JqaWRsLmg+CiAjaW5jbHVkZSA8b2xlaWRsLmg+CiAjaW5jbHVkZSA8b2JqaWRs
Lmg+CiAjaW5jbHVkZSA8b2xlMi5oPgpAQCAtMjM3LDYgKzI0Miw4IEBAIERFQ0xBUkVfSEFORExF
KEhNT05JVE9SKTsKIHR5cGVkZWYgQk9PTCAoV0lOQVBJICogU2V0R2VzdHVyZUNvbmZpZ19wcm9j
KSAoSFdORCwgRFdPUkQsIFVJTlQsCiAJCQkJCSAgICAgICBFbWFjc19QR0VTVFVSRUNPTkZJRywg
VUlOVCk7CiAKK3R5cGVkZWYgQk9PTCAoV0lOQVBJICogRmxhc2hXaW5kb3dFeF9Qcm9jKSAoUEZM
QVNIV0lORk8gcGZ3aSk7CisKIHN0YXRpYyBUcmFja01vdXNlRXZlbnRfUHJvYyB0cmFja19tb3Vz
ZV9ldmVudF9mbiA9IE5VTEw7CiBzdGF0aWMgSW1tR2V0Q29tcG9zaXRpb25TdHJpbmdfUHJvYyBn
ZXRfY29tcG9zaXRpb25fc3RyaW5nX2ZuID0gTlVMTDsKIHN0YXRpYyBJbW1HZXRDb250ZXh0X1By
b2MgZ2V0X2ltZV9jb250ZXh0X2ZuID0gTlVMTDsKQEAgLTI1OSw2ICsyNjYsNyBAQCBERUNMQVJF
X0hBTkRMRShITU9OSVRPUik7CiBzdGF0aWMgV1RTUmVnaXN0ZXJTZXNzaW9uTm90aWZpY2F0aW9u
X1Byb2MgV1RTUmVnaXN0ZXJTZXNzaW9uTm90aWZpY2F0aW9uX2ZuID0gTlVMTDsKIHN0YXRpYyBS
ZWdpc3RlclRvdWNoV2luZG93X3Byb2MgUmVnaXN0ZXJUb3VjaFdpbmRvd19mbiA9IE5VTEw7CiBz
dGF0aWMgU2V0R2VzdHVyZUNvbmZpZ19wcm9jIFNldEdlc3R1cmVDb25maWdfZm4gPSBOVUxMOwor
c3RhdGljIEZsYXNoV2luZG93RXhfUHJvYyBmbGFzaF93aW5kb3dfZXhfZm4gPSBOVUxMOwogCiBl
eHRlcm4gQXBwZW5kTWVudVdfUHJvYyB1bmljb2RlX2FwcGVuZF9tZW51OwogCkBAIC0xMTAxMCw2
ICsxMTAxOCwzMTMgQEAgREVGVU4gKCJ3MzItc3lzdGVtLWlkbGUtdGltZSIsIEZ3MzJfc3lzdGVt
X2lkbGVfdGltZSwgU3czMl9zeXN0ZW1faWRsZV90aW1lLAogCiAjZW5kaWYKIAorDAorI2lmZGVm
IFdJTkRPV1NOVAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwkJICAgICBUYXNrYmFyIEluZGljYXRvcnMK
KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBNSU5HV19XNjQKKyAgLyogbWluZ3cub3JnJ3Mg
TWluR1cgZG9lc24ndCBoYXZlIHRoaXMgc3R1ZmYuICAqLworICBERUZJTkVfR1VJRChDTFNJRF9U
YXNrYmFyTGlzdCwgMHg1NmZkZjM0NCwgMHhmZDZkLCAweDExZDAsIDB4OTUsMHg4YSwgMHgwMCww
eDYwLDB4OTcsMHhjOSwweGEwLDB4OTApOworICBERUZJTkVfR1VJRChJSURfSVRhc2tiYXJMaXN0
MywgMHhlYTFhZmI5MSwgMHg5ZTI4LCAweDRiODYsIDB4OTAsMHhlOSwgMHg5ZSwweDlmLDB4OGEs
MHg1ZSwweGVmLDB4YWYpOworI2VuZGlmCisKK0RFRlVOICgidzMyLWJhZGdlIiwKKyAgICAgICBG
dzMyX2JhZGdlLAorICAgICAgIFN3MzJfYmFkZ2UsCisgICAgICAgMywgMywgMCwKKyAgICAgICBk
b2M6IC8qIERpc3BsYXkgYSB0YXNrYmFyIGljb24gb3ZlcmxheSBpbWFnZSBvbiB0aGUgc2VsZWN0
ZWQgZnJhbWUuCitCQURHRSBpcyBhIHN0cmluZy4gIElmIEJBREdFIGlzIG5pbCwgcmVtb3ZlIHRo
ZSBvdmVybGF5LiAgRG8gbm90aGluZyBpZgorV2luZG93cyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBJ
VGFza2Jhckxpc3QzIGludGVyZmFjZSBhbmQgcmV0dXJuIG5pbCwKK290aGVyd2lzZSByZXR1cm4g
dC4gIERvIG5vdGhpbmcgaWYgdGhlIHNlbGVjdGVkIGZyYW1lIGlzIG5vdCAoeWV0KQorYXNzb2Np
YXRlZCB3aXRoIGEgd2luZG93IGhhbmRsZS4gIEJBQ0tHUk9VTkQgYW5kIEZPUkVHUk9VTkQgYXJl
IFJHQgordHJpcGxldCBzdHJpbmdzIG9mIHRoZSBmb3JtIFwiI1JSR0dCQlwiLiAgKi8pCisgIChM
aXNwX09iamVjdCBiYWRnZSwgTGlzcF9PYmplY3QgYmFja2dyb3VuZCwgTGlzcF9PYmplY3QgZm9y
ZWdyb3VuZCkKK3sKKyAgc3RydWN0IGZyYW1lICpzZiA9IFNFTEVDVEVEX0ZSQU1FICgpOworICBI
V05EIGh3bmQgPSBOVUxMOworCisgIGlmIChGUkFNRV9XMzJfUCAoc2YpICYmIEZSQU1FX0xJVkVf
UCAoc2YpKQorICAgIGh3bmQgPSBGUkFNRV9XMzJfV0lORE9XIChzZik7CisKKyAgaWYgKGh3bmQg
PT0gTlVMTCkKKyAgICByZXR1cm4gUW5pbDsKKworICBDb0luaXRpYWxpemUgKE5VTEwpOworICBJ
VGFza2Jhckxpc3QzICp0YXNrX2Jhcl9saXN0ID0gTlVMTDsKKyAgSFJFU1VMVCByID0gQ29DcmVh
dGVJbnN0YW5jZSgmQ0xTSURfVGFza2Jhckxpc3QsCisJCQkgICAgICAgTlVMTCwKKwkJCSAgICAg
ICBDTFNDVFhfSU5QUk9DX1NFUlZFUiwKKwkJCSAgICAgICAmSUlEX0lUYXNrYmFyTGlzdDMsCisJ
CQkgICAgICAgKHZvaWQgKiopJnRhc2tfYmFyX2xpc3QpOworICBpZiAociAhPSBTX09LKQorICAg
IHJldHVybiBRbmlsOworCisgIGlmICghTklMUCAoYmFkZ2UpICYmIFNUUklOR1AgKGJhZGdlKQor
ICAgICAgJiYgU1RSSU5HUCAoYmFja2dyb3VuZCkgJiYgU1RSSU5HUCAoZm9yZWdyb3VuZCkpCisg
ICAgeworICAgICAgQ09MT1JSRUYgYmdfcmdiOworICAgICAgQ09MT1JSRUYgZmdfcmdiOworICAg
ICAgdW5zaWduZWQgc2hvcnQgciwgZywgYjsKKyAgICAgIGlmIChwYXJzZV9jb2xvcl9zcGVjIChT
U0RBVEEgKGJhY2tncm91bmQpLCAmciwgJmcsICZiKSkKKwliZ19yZ2IgPSBSR0IgKHIsIGIsIGIp
OworICAgICAgZWxzZQorCXJldHVybiBRbmlsOworICAgICAgaWYgKHBhcnNlX2NvbG9yX3NwZWMg
KFNTREFUQSAoZm9yZWdyb3VuZCksICZyLCAmZywgJmIpKQorCWZnX3JnYiA9IFJHQiAociwgYiwg
Yik7CisgICAgICBlbHNlCisJcmV0dXJuIFFuaWw7CisKKyAgICAgIC8qIFByZXBhcmUgYSBzdHJp
bmcgZm9yIGRyYXdpbmcgYW5kIGFzIGFsdC10ZXh0LiAgKi8KKyAgICAgIExpc3BfT2JqZWN0IGJh
ZGdlX3V0ZjggPSBFTkNPREVfVVRGXzggKGJhZGdlKTsKKyAgICAgIGludCB3aWRlX2xlbiA9IHBN
dWx0aUJ5dGVUb1dpZGVDaGFyIChDUF9VVEY4LCAwLAorCQkJCQkgICBTU0RBVEEgKGJhZGdlX3V0
ZjgpLAorCQkJCQkgICAtMSwgTlVMTCwgMCk7CisgICAgICB3Y2hhcl90ICpiYWRnZV93ID0gYWxs
b2NhICgod2lkZV9sZW4gKyAxKSAqIHNpemVvZiAod2NoYXJfdCkpOworICAgICAgcE11bHRpQnl0
ZVRvV2lkZUNoYXIgKENQX1VURjgsIDAsIFNTREFUQSAoYmFkZ2VfdXRmOCksIC0xLAorCQkJICAg
IChMUFdTVFIpIGJhZGdlX3csCisJCQkgICAgd2lkZV9sZW4pOworCisgICAgICAvKiBVc2UgdGhl
IHNtYWxsIGljb24gc2l6ZSBXaW5kb3dzIHN1Z2dlc3RzIHRvIG5vdCBoYXJkIGNvZGUgMTZ4MTYu
ICAqLworICAgICAgaW50IGljb25fd2lkdGggPSBHZXRTeXN0ZW1NZXRyaWNzIChTTV9DWFNNSUNP
Tik7CisgICAgICBpbnQgaWNvbl9oZWlnaHQgPSBHZXRTeXN0ZW1NZXRyaWNzIChTTV9DWFNNSUNP
Tik7CisKKyAgICAgIEhEQyBod25kX2RjID0gR2V0REMgKGh3bmQpOworICAgICAgSERDIGRjID0g
Q3JlYXRlQ29tcGF0aWJsZURDIChod25kX2RjKTsKKworICAgICAgQklUTUFQVjVIRUFERVIgYmk7
CisgICAgICBtZW1zZXQgKCZiaSwgMCwgc2l6ZW9mIChiaSkpOworICAgICAgYmkuYlY1U2l6ZSA9
IHNpemVvZiAoYmkpOworICAgICAgYmkuYlY1V2lkdGggPSBpY29uX3dpZHRoOworICAgICAgYmku
YlY1SGVpZ2h0ID0gLWljb25faGVpZ2h0OyAvKiBOZWdhdGl2ZSBmb3IgYSB0b3AtZG93biBESUIu
ICAqLworICAgICAgYmkuYlY1UGxhbmVzID0gMTsKKyAgICAgIGJpLmJWNUJpdENvdW50ID0gMzI7
CisgICAgICBiaS5iVjVDb21wcmVzc2lvbiA9IEJJX0JJVEZJRUxEUzsgIC8qIEVuYWJsZSB0aGUg
bWFza3MgYmVsb3cuICAqLworICAgICAgYmkuYlY1UmVkTWFzayAgID0gIDB4MDBGRjAwMDA7Cisg
ICAgICBiaS5iVjVHcmVlbk1hc2sgPSAgMHgwMDAwRkYwMDsKKyAgICAgIGJpLmJWNUJsdWVNYXNr
ICA9ICAweDAwMDAwMEZGOworICAgICAgYmkuYlY1QWxwaGFNYXNrID0gIDB4RkYwMDAwMDA7CisK
KyAgICAgIERXT1JEICpiaXRtYXBfcGl4ZWxzOworICAgICAgSEJJVE1BUCBiaXRtYXAgPSBDcmVh
dGVESUJTZWN0aW9uIChkYywgKEJJVE1BUElORk8gKikgJmJpLAorCQkJCQkgRElCX1JHQl9DT0xP
UlMsCisJCQkJCSAodm9pZCAqKikgJmJpdG1hcF9waXhlbHMsCisJCQkJCSBOVUxMLCAwKTsKKyAg
ICAgIEhHRElPQkogb2xkX2JpdG1hcCA9IFNlbGVjdE9iamVjdChkYywgYml0bWFwKTsKKworICAg
ICAgLyogRHJhdyBhIGNpcmNsZSBmaWxsZWQgd2l0aCBiZy4gICovCisgICAgICBIQlJVU0ggYmdf
YnJ1c2ggPSBDcmVhdGVTb2xpZEJydXNoIChiZ19yZ2IpOworICAgICAgSEdESU9CSiBvbGRfYnJ1
c2ggPSBTZWxlY3RPYmplY3QgKGRjLCBiZ19icnVzaCk7CisgICAgICBFbGxpcHNlIChkYywgMCwg
MCwgaWNvbl93aWR0aCwgaWNvbl9oZWlnaHQpOworICAgICAgU2VsZWN0T2JqZWN0IChkYywgb2xk
X2JydXNoKTsKKyAgICAgIERlbGV0ZU9iamVjdCAoYmdfYnJ1c2gpOworCisgICAgICAvKiBEZXJp
dmUgYSBmb250IHNjYWxlZCB0byBmaXQgdGhlIGljb24uICBGaXJzdCBmaW5kIHRoZSBzeXN0ZW0n
cworCSBiYXNlIGZvbnQuICBUaGVuIHNjYWxlIGl0IHRvIGZpdCBpY29uX2hlaWdodC4gICovCisg
ICAgICBIRk9OVCBiYXNlX2ZvbnQ7CisgICAgICBCT09MIGNsZWFuX3VwX2Jhc2VfZm9udCA9IEZB
TFNFOworICAgICAgaWYgKHN5c3RlbV9wYXJhbWV0ZXJzX2luZm9fd19mbikKKwl7CisJICBOT05D
TElFTlRNRVRSSUNTIG5jbTsKKwkgIG1lbXNldCAoJm5jbSwgMCwgc2l6ZW9mIChuY20pKTsKKwkg
IG5jbS5jYlNpemUgPSBzaXplb2YgKG5jbSk7CisJICBTeXN0ZW1QYXJhbWV0ZXJzSW5mbyAoU1BJ
X0dFVE5PTkNMSUVOVE1FVFJJQ1MsIHNpemVvZiAobmNtKSwgJm5jbSwgMCk7CisJICBiYXNlX2Zv
bnQgPSBDcmVhdGVGb250SW5kaXJlY3QgKCZuY20ubGZTbUNhcHRpb25Gb250KTsKKwkgIGNsZWFu
X3VwX2Jhc2VfZm9udCA9IFRSVUU7CisJfQorICAgICAgZWxzZQorCWJhc2VfZm9udCA9IChIRk9O
VCkgR2V0U3RvY2tPYmplY3QgKERFRkFVTFRfR1VJX0ZPTlQpOworICAgICAgaWYgKGNsZWFuX3Vw
X2Jhc2VfZm9udCkKKwlEZWxldGVPYmplY3QgKGJhc2VfZm9udCk7CisKKyAgICAgIExPR0ZPTlQg
bGY7CisgICAgICBHZXRPYmplY3QgKGJhc2VfZm9udCwgc2l6ZW9mIChsZiksICZsZik7CisgICAg
ICBsZi5sZldlaWdodCA9IEZXX0JPTEQ7CisgICAgICBsZi5sZk91dFByZWNpc2lvbiA9IE9VVF9P
VVRMSU5FX1BSRUNJUzsKKyAgICAgIC8qIENsZWFyVHlwZSBxdWFsaXR5IG5lZWRzIG9wcWF1ZSwg
YnV0IHdlIGRyYXcgdHJhbnNwYXJlbnQuICAqLworICAgICAgbGYubGZRdWFsaXR5ID0gQU5USUFM
SUFTRURfUVVBTElUWTsKKyAgICAgIC8qIE5lZ2F0aXZlIGxmSGVpZ2h0IGluZGljYXRlcyBwaXhl
bCB1bml0cyB2cy4gcG9zaXRpdmUgaW4gcG9pbnRzLgorCSBVc2UgdGhlIExPR1BJWEVMU1kgcHgv
aW4gb2YgdGhlIHByaW1hcnkgbW9uaXRvci4gICovCisgICAgICBsZi5sZkhlaWdodCA9IC1NdWxE
aXYoaWNvbl9oZWlnaHQgLyAyLCAvKiBGaXQgfjMgY2hhcnMuICAqLworCQkJICAgIDcyLAorCQkJ
ICAgIEdldERldmljZUNhcHMgKEdldERDIChOVUxMKSwgTE9HUElYRUxTWSkpOworICAgICAgLyog
RW5zdXJlIGxmSGVpZ2h0IHBpeGVsIGludGVycHJldGF0aW9uLiAgKi8KKyAgICAgIGludCBvbGRf
bWFwX21vZGUgPSBTZXRNYXBNb2RlIChkYywgTU1fVEVYVCk7CisgICAgICBIRk9OVCBzY2FsZWRf
Zm9udCA9IENyZWF0ZUZvbnRJbmRpcmVjdCAoJmxmKTsKKyAgICAgIEhHRElPQkogb2xkX2ZvbnQg
PSBTZWxlY3RPYmplY3QgKGRjLCBzY2FsZWRfZm9udCk7CisgICAgICBTZXRNYXBNb2RlIChkYywg
b2xkX21hcF9tb2RlKTsKKworICAgICAgLyogRHJhdyBiYWRnZSB0ZXh0LiAgKi8KKyAgICAgIFNl
dEJrTW9kZSAoZGMsIFRSQU5TUEFSRU5UKTsKKyAgICAgIFNldFRleHRDb2xvciAoZGMsIGZnX3Jn
Yik7CisgICAgICBSRUNUIHJlY3Q7CisgICAgICByZWN0LmxlZnQgPSByZWN0LnRvcCA9IDA7Cisg
ICAgICByZWN0LnJpZ2h0ID0gaWNvbl93aWR0aDsKKyAgICAgIHJlY3QuYm90dG9tID0gaWNvbl9o
ZWlnaHQ7CisgICAgICBEcmF3VGV4dCAoZGMsIFNTREFUQSAoYmFkZ2VfdXRmOCksCisJCS0xLCAv
KiBJbmRpY2F0ZSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLiAgKi8KKwkJJnJlY3QsCisJCURUX0NF
TlRFUiB8IERUX1ZDRU5URVIgfCBEVF9TSU5HTEVMSU5FIHwgRFRfTk9DTElQKTsKKyAgICAgIFNl
bGVjdE9iamVjdCAoZGMsIG9sZF9mb250KTsKKyAgICAgIERlbGV0ZU9iamVjdCAoc2NhbGVkX2Zv
bnQpOworCisgICAgICAvKiBNYWtlIHRoZSBjaXJjbGUgYW5kIGl0cyB0ZXh0IG9wYXF1ZSBieSBz
ZXR0aW5nIHRoZSBhbHBoYQorCSBjaGFubmVsIG9uIGVhY2ggcGl4ZWwgZmFsbGluZyB3aXRoaW4g
dGhlIGNpcmNsZS4gICovCisgICAgICBpbnQgY2lyY2xlX2NlbnRlcl94ID0gaWNvbl93aWR0aCAv
IDI7CisgICAgICBpbnQgY2lyY2xlX2NlbnRlcl95ID0gaWNvbl9oZWlnaHQgLyAyOworICAgICAg
aW50IGNpcmNsZV9yYWRpdXMgPSAoaWNvbl93aWR0aCA8IGljb25faGVpZ2h0CisJCQkgICA/IGlj
b25fd2lkdGgKKwkJCSAgIDogaWNvbl9oZWlnaHQpIC8gMiAtIDI7CisgICAgICBpbnQgY2lyY2xl
X3JhZGl1c19zcSA9IGNpcmNsZV9yYWRpdXMgKiBjaXJjbGVfcmFkaXVzOworICAgICAgRFdPUkQg
KnBpeGVsOworICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBpY29uX2hlaWdodDsgKyt5KQorICAg
ICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGljb25fd2lkdGg7ICsreCkKKwkgIHsKKyAgICAgICAg
ICAgIGludCBkeCA9IHggLSBjaXJjbGVfY2VudGVyX3g7CisgICAgICAgICAgICBpbnQgZHkgPSB5
IC0gY2lyY2xlX2NlbnRlcl95OworICAgICAgICAgICAgaWYgKGR4ICogZHggKyBkeSAqIGR5IDw9
IGNpcmNsZV9yYWRpdXNfc3EpCisJICAgICAgeworCQkgIHBpeGVsID0gYml0bWFwX3BpeGVscyAr
ICh5ICogaWNvbl93aWR0aCArIHgpOworCQkgICpwaXhlbCB8PSAweGZmMDAwMDAwOyAvKiBGbGlw
IHRoZSAweEFBUlJHR0JCIGFscGhhIGNoYW5uZWwuICAqLworCSAgICAgIH0KKwkgIH0KKworICAg
ICAgLyogRHVtbXkgbW9ub2Nocm9tZSBiaXRtYXAgbWFzaywgaWdub3JlZCB3aGVuIHRoZSBjb2xv
ciBiaXRtYXAgaGFzCisJIGFuIGFscGhhIGNoYW5uZWwsIGJ1dCBuZWVkZWQgdG8gc2F0aXNmeSBD
cmVhdGVJY29uSW5kaXJlY3QuICAqLworICAgICAgSEJJVE1BUCBtYXNrX2JpdG1hcCA9IENyZWF0
ZUJpdG1hcCAoaWNvbl93aWR0aCwgaWNvbl9oZWlnaHQsIDEsIDEsIE5VTEwpOworCisgICAgICAv
KiBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93aW4zMi9hcGkvd2lu
dXNlci9uZi13aW51c2VyLWNyZWF0ZWljb25pbmRpcmVjdAorCSBoYm1NYXNrIGFuZCBoYm1Db2xv
ciBtZW1iZXJzIG9mIHRoZSBJQ09OSU5GTyBzdHJ1Y3R1cmUgc2hvdWxkCisJIG5vdCBhbHJlYWR5
IGJlIHNlbGVjdGVkIGludG8gYSBkZXZpY2UgY29udGV4dC4gICovCisgICAgICBTZWxlY3RPYmpl
Y3QgKGRjLCBvbGRfYml0bWFwKTsKKworICAgICAgSUNPTklORk8gaWNvbl9pbmZvOworICAgICAg
bWVtc2V0ICgmaWNvbl9pbmZvLCAwLCBzaXplb2YgKGljb25faW5mbykpOworICAgICAgaWNvbl9p
bmZvLmZJY29uID0gVFJVRTsKKyAgICAgIGljb25faW5mby5oYm1NYXNrID0gbWFza19iaXRtYXA7
CisgICAgICBpY29uX2luZm8uaGJtQ29sb3IgPSBiaXRtYXA7CisKKyAgICAgIEhJQ09OIGljb24g
PSBDcmVhdGVJY29uSW5kaXJlY3QgKCZpY29uX2luZm8pOworICAgICAgdGFza19iYXJfbGlzdC0+
bHBWdGJsLT5TZXRPdmVybGF5SWNvbiAodGFza19iYXJfbGlzdCwgaHduZCwgaWNvbiwgYmFkZ2Vf
dyk7CisKKyAgICAgIERlc3Ryb3lJY29uIChpY29uKTsKKyAgICAgIERlbGV0ZU9iamVjdCAobWFz
a19iaXRtYXApOworICAgICAgRGVsZXRlT2JqZWN0IChiaXRtYXApOworICAgICAgRGVsZXRlREMg
KGRjKTsKKyAgICAgIFJlbGVhc2VEQyAoaHduZCwgaHduZF9kYyk7CisgICAgfQorICBlbHNlCisg
ICAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5TZXRPdmVybGF5SWNvbiAodGFza19iYXJfbGlzdCwg
aHduZCwgTlVMTCwgTlVMTCk7CisKKyAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5SZWxlYXNlKHRh
c2tfYmFyX2xpc3QpOworICByZXR1cm4gUXQ7Cit9CisKK0RFRlVOICgidzMyLXJlcXVlc3QtdXNl
ci1hdHRlbnRpb24iLAorICAgICAgIEZ3MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbiwKKyAgICAg
ICBTdzMyX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24sCisgICAgICAgMSwgMSwgMCwKKyAgICAgICBk
b2M6IC8qIEZsYXNoIHRoZSBzZWxlY3RlZCBmcmFtZSdzIHRhc2tiYXIgaWNvbiBhbmQvb3IgaXRz
IHdpbmRvdy4KK0lmIFVSR0VOQ1kgaXMgbmlsLCBjYW5jZWwgdGhlIHJlcXVlc3QsIGlmIGFueS4g
IElmIFVSR0VOQ1kgaXMgdGhlIHN5bWJvbAorYGluZm9ybWF0aW9uYWwnLCBmbGFzaCB0aGUgdGFz
a2JhciBpY29uLiAgSWYgVVJHRU5DWSBpcyB0aGUgc3ltYm9sCitgY3JpdGljYWwnLCBmbGFzaCB0
aGUgdGFza2JhciBpY29uIGFuZCB0aGUgZnJhbWUuICBXaW5kb3dzIHN0b3BzCitmbGFzaGluZyBp
ZiB0aGUgdXNlciBmb2N1c2VzIHRoZSBmcmFtZS4gIERvIG5vdGhpbmcgaWYgV2luZG93cyBkb2Vz
IG5vdAorc3VwcG9ydCBGbGFzaFdpbmRvd0V4IGFuZCByZXR1cm4gbmlsLCBvdGhlcndpc2UgcmV0
dXJuIHQuICBEbyBub3RoaW5nIGlmCit0aGUgZnJhbWUgaXMgbm90ICh5ZXQpIGFzc29jaWF0ZWQg
d2l0aCBhIHdpbmRvdyBoYW5kbGUuICAqLykKKyAgKExpc3BfT2JqZWN0IHVyZ2VuY3kpCit7Cisg
IGlmIChmbGFzaF93aW5kb3dfZXhfZm4gPT0gTlVMTCkKKyAgICByZXR1cm4gUW5pbDsKKworICBz
dHJ1Y3QgZnJhbWUgKnNmID0gU0VMRUNURURfRlJBTUUgKCk7CisgIEhXTkQgaHduZCA9IE5VTEw7
CisKKyAgaWYgKEZSQU1FX1czMl9QIChzZikgJiYgRlJBTUVfTElWRV9QIChzZikpCisgICAgaHdu
ZCA9IEZSQU1FX1czMl9XSU5ET1cgKHNmKTsKKworICBpZiAoaHduZCA9PSBOVUxMKQorICAgIHJl
dHVybiBRbmlsOworCisgIEZMQVNIV0lORk8gZmxhc2hfaW5mbzsKKyAgZmxhc2hfaW5mby5jYlNp
emUgPSBzaXplb2YoZmxhc2hfaW5mbyk7CisgIGZsYXNoX2luZm8udUNvdW50ID0gMDsKKyAgZmxh
c2hfaW5mby5kd1RpbWVvdXQgPSAwOworICBmbGFzaF9pbmZvLmh3bmQgPSBod25kOworICBpZiAo
IU5JTFAgKHVyZ2VuY3kpICYmIFNZTUJPTFAgKHVyZ2VuY3kpKQorICAgIHsKKyAgICAgIC8qIFRo
ZSBpbnRlbmRlZCBjYWxsZXIsICdzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24nLCBoYXMgYW4KKwkg
b3B0aW9uYWwgdGltZXIgdG8gY2xlYXIgdGhlIGF0dGVudGlvbiBpbmRpY2F0b3Igc28gdGhpcyB3
aWxsCisJIGZsYXNoIHVudGlsIGNsZWFyZWQgdmlhIHRoZSB0aW1lciwgb3IgdGhlIHdpbmRvdyBj
b21lcyB0byB0aGUKKwkgZm9yZWdyb3VuZC4gIEZvciBpbmZvcm1hdGlvbmFsIGF0dGVudGlvbiwg
Zmxhc2ggdGhlIHRyYXkgaWNvbi4KKwkgRm9yIGNyaXRpY2FsIGF0dGVudGlvbiwgZmxhc2ggdGhl
IHRyYXkgaWNvbiBhbmQgdGhlIHdpbmRvdy4gICovCisgICAgICBpZiAoRVEgKHVyZ2VuY3ksIFFp
bmZvcm1hdGlvbmFsKSkKKwlmbGFzaF9pbmZvLmR3RmxhZ3MgPSBGTEFTSFdfVFJBWSB8IEZMQVNI
V19USU1FUk5PRkc7CisgICAgICBlbHNlIGlmIChFUSAodXJnZW5jeSwgUWNyaXRpY2FsKSkKKwlm
bGFzaF9pbmZvLmR3RmxhZ3MgPSBGTEFTSFdfQUxMIHwgRkxBU0hXX1RJTUVSTk9GRzsKKyAgICB9
CisgIGVsc2UKKyAgICBmbGFzaF9pbmZvLmR3RmxhZ3MgPSBGTEFTSFdfU1RPUDsKKworICBmbGFz
aF93aW5kb3dfZXhfZm4gKCZmbGFzaF9pbmZvKTsKKyAgcmV0dXJuIFF0OworfQorCitERUZVTiAo
InczMi1wcm9ncmVzcy1pbmRpY2F0b3IiLAorICAgICAgIEZ3MzJfcHJvZ3Jlc3NfaW5kaWNhdG9y
LAorICAgICAgIFN3MzJfcHJvZ3Jlc3NfaW5kaWNhdG9yLAorICAgICAgIDEsIDEsIDAsCisgICAg
ICAgZG9jOiAvKiBTaG93IGEgcHJvZ3Jlc3MgYmFyIG9uIHRoZSBzZWxlY3RlZCBmcmFtZSdzIHRh
c2tiYXIgaWNvbi4KK1BST0dSRVNTIGlzIGEgZmxvYXQgaW4gdGhlIHJhbmdlIDAuMCB0byAxLjAu
ICBJZiBQUk9HUkVTUyBpcyBuaWwsIHJlbW92ZQordGhlIHByb2dyZXNzIGluZGljYXRvci4gIERv
IG5vdGhpbmcgaWYgV2luZG93cyBkb2VzIG5vdCBzdXBwb3J0IHRoZQorSVRhc2tiYXJMaXN0MyBp
bnRlcmZhY2UgYW5kIHJldHVybiBuaWwsIG90aGVyd2lzZSByZXR1cm4gdC4gIERvIG5vdGhpbmcK
K2lmIHRoZSBzZWxlY3RlZCBmcmFtZSBpcyBub3QgKHlldCkgYXNzb2NpYXRlZCB3aXRoIGEgd2lu
ZG93IGhhbmRsZSAgKi8pCisgIChMaXNwX09iamVjdCBwcm9ncmVzcykKK3sKKyAgc3RydWN0IGZy
YW1lICpzZiA9IFNFTEVDVEVEX0ZSQU1FICgpOworICBIV05EIGh3bmQgPSBOVUxMOworCisgIGlm
IChGUkFNRV9XMzJfUCAoc2YpICYmIEZSQU1FX0xJVkVfUCAoc2YpKQorICAgIGh3bmQgPSBGUkFN
RV9XMzJfV0lORE9XIChzZik7CisKKyAgaWYgKGh3bmQgPT0gTlVMTCkKKyAgICByZXR1cm4gUW5p
bDsKKworICBDb0luaXRpYWxpemUgKE5VTEwpOworICBJVGFza2Jhckxpc3QzICp0YXNrX2Jhcl9s
aXN0ID0gTlVMTDsKKyAgSFJFU1VMVCByID0gQ29DcmVhdGVJbnN0YW5jZSgmQ0xTSURfVGFza2Jh
ckxpc3QsCisJCQkgICAgICAgTlVMTCwKKwkJCSAgICAgICBDTFNDVFhfSU5QUk9DX1NFUlZFUiwK
KwkJCSAgICAgICAmSUlEX0lUYXNrYmFyTGlzdDMsCisJCQkgICAgICAgKHZvaWQgKiopJnRhc2tf
YmFyX2xpc3QpOworICBpZiAociAhPSBTX09LKQorICAgIHJldHVybiBRbmlsOworCisgIC8qIFNj
YWxlIHRhc2sgYmFyIHByb2dyZXNzIGZyb20gMC4wLTEuMCB0byAwLTEwMC4gICovCisgIFVMT05H
TE9ORyBhZGpfcHJvZ3Jlc3MgPSAwOworICBpZiAoIU5JTFAgKHByb2dyZXNzKSAmJiBGTE9BVFAg
KHByb2dyZXNzKSkKKyAgICAgIGFkal9wcm9ncmVzcyA9IChVTE9OR0xPTkcpICgxMDAuMCAqCisJ
CQkJICBYRkxPQVRfREFUQSAocHJvZ3Jlc3MpKTsKKyAgaWYgKGFkal9wcm9ncmVzcyA+IDApCisg
ICAgeworICAgICAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5TZXRQcm9ncmVzc1N0YXRlICh0YXNr
X2Jhcl9saXN0LAorCQkJCQkgICAgICAgaHduZCwgVEJQRl9OT1JNQUwpOworICAgICAgdGFza19i
YXJfbGlzdC0+bHBWdGJsLT5TZXRQcm9ncmVzc1ZhbHVlICh0YXNrX2Jhcl9saXN0LAorCQkJCQkg
ICAgICAgaHduZCwgYWRqX3Byb2dyZXNzLCAxMDApOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAg
ICAgIHRhc2tfYmFyX2xpc3QtPmxwVnRibC0+U2V0UHJvZ3Jlc3NTdGF0ZSAodGFza19iYXJfbGlz
dCwKKwkJCQkJICAgICAgIGh3bmQsIFRCUEZfTk9QUk9HUkVTUyk7CisgICAgfQorCisgIHRhc2tf
YmFyX2xpc3QtPmxwVnRibC0+UmVsZWFzZSh0YXNrX2Jhcl9saXN0KTsKKyAgcmV0dXJuIFF0Owor
fQorCisjZW5kaWYgLyogV0lORE9XU05UICovCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCQkJICAgIElu
aXRpYWxpemF0aW9uCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0xMTUxMSw2ICsxMTgyNiwxNSBAQCBz
eW1zX29mX3czMmZucyAodm9pZCkKICAgREVGU1lNIChRY2Fwc2xvY2ssICJjYXBzbG9jayIpOwog
ICBERUZTWU0gKFFrcF9udW1sb2NrLCAia3AtbnVtbG9jayIpOwogICBERUZTWU0gKFFzY3JvbGws
ICJzY3JvbGwiKTsKKworICAjaWZkZWYgV0lORE9XU05UCisgIC8qIFRhc2tiYXIgaW5kaWNhdG9y
cyBzdXBwb3J0LiAgKi8KKyAgZGVmc3ViciAoJlN3MzJfYmFkZ2UpOworICBkZWZzdWJyICgmU3cz
Ml9wcm9ncmVzc19pbmRpY2F0b3IpOworICBkZWZzdWJyICgmU3czMl9yZXF1ZXN0X3VzZXJfYXR0
ZW50aW9uKTsKKyAgREVGU1lNIChRaW5mb3JtYXRpb25hbCwgImluZm9ybWF0aW9uYWwiKTsKKyAg
REVGU1lNIChRY3JpdGljYWwsICJjcml0aWNhbCIpOworICAjZW5kaWYKIH0KIAogDApAQCAtMTE3
OTksNiArMTIxMjMsOSBAQCBnbG9iYWxzX29mX3czMmZucyAodm9pZCkKICAgU2V0R2VzdHVyZUNv
bmZpZ19mbgogICAgID0gKFNldEdlc3R1cmVDb25maWdfcHJvYykgZ2V0X3Byb2NfYWRkciAodXNl
cjMyX2xpYiwKIAkJCQkJICAgICAiU2V0R2VzdHVyZUNvbmZpZyIpOworICBmbGFzaF93aW5kb3df
ZXhfZm4KKyAgICA9IChGbGFzaFdpbmRvd0V4X1Byb2MpIGdldF9wcm9jX2FkZHIgKHVzZXIzMl9s
aWIsCisJCQkJCSAgIkZsYXNoV2luZG93RXgiKTsKIAogICB7CiAgICAgSE1PRFVMRSBpbW0zMl9s
aWIgPSBHZXRNb2R1bGVIYW5kbGUgKCJpbW0zMi5kbGwiKTsKZGlmZiAtLWdpdCBhL3N5c3RlbS10
YXNrYmFyLnRleGkgYi9zeXN0ZW0tdGFza2Jhci50ZXhpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi4wMTgzZDUwZjU4MgotLS0gL2Rldi9udWxsCisrKyBiL3N5c3RlbS10
YXNrYmFyLnRleGkKQEAgLTAsMCArMSwyNjAgQEAKK1xpbnB1dCB0ZXhpbmZvICAgIEBjIC0qLXRl
eGluZm8tKi0KKworQHNldGZpbGVuYW1lIC4uLy4uL2luZm8vZG9jay1tb2RlLmluZm8KK0BzZXR0
aXRsZSBTeXN0ZW0gR1VJIFRhc2tiYXIgRmVhdHVyZXMKK0BpbmNsdWRlIGRvY3N0eWxlLnRleGkK
KworQGNvcHlpbmcKK1RoaXMgZmlsZSBkZXNjcmliZXMgRW1hY3Mgc3lzdGVtIEdVSSB0YXNrYmFy
IGludGVncmF0aW9uLgorCitDb3B5cmlnaHQgQGNvcHlyaWdodHt9IDIwMjUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuCisKK0BxdW90YXRpb24KK1Blcm1pc3Npb24gaXMgZ3JhbnRlZCB0
byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhpcyBkb2N1bWVudAordW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UsIFZlcnNpb24gMS4z
IG9yCithbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgd2l0aCBubworSW52YXJpYW50IFNlY3Rpb25zLCB3aXRoIHRoZSBGcm9udC1Db3Zl
ciBUZXh0cyBiZWluZyBgYEEgR05VIE1hbnVhbCwnJworYW5kIHdpdGggdGhlIEJhY2stQ292ZXIg
VGV4dHMgYXMgaW4gKGEpIGJlbG93LiAgQSBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzCitpbmNsdWRl
ZCBpbiB0aGUgc2VjdGlvbiBlbnRpdGxlZCBgYEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5z
ZScnLgorCisoYSkgVGhlIEZTRidzIEJhY2stQ292ZXIgVGV4dCBpczogYGBZb3UgaGF2ZSB0aGUg
ZnJlZWRvbSB0byBjb3B5IGFuZAorbW9kaWZ5IHRoaXMgR05VIG1hbnVhbC4nJworQGVuZCBxdW90
YXRpb24KK0BlbmQgY29weWluZworCitAZGlyY2F0ZWdvcnkgRW1hY3MgbWlzYyBmZWF0dXJlcwor
QGRpcmVudHJ5CisqIFN5c3RlbSBHVUkgVGFza2JhcjogKHRhc2tiYXIpLiAgICAgICBTeXN0ZW0g
R1VJIHRhc2tiYXIgaW50ZWdyYXRpb24uCitAZW5kIGRpcmVudHJ5CisKK0B0aXRsZXBhZ2UKK0B0
aXRsZSBTeXN0ZW0gR1VJIFRhc2tiYXIgSW50ZWdyYXRpb24KK0BwYWdlCitAdnNraXAgMHB0IHBs
dXMgMWZpbGxsCitAaW5zZXJ0Y29weWluZworQGVuZCB0aXRsZXBhZ2UKKworQGNvbnRlbnRzCisK
K0BpZm5vdHRleAorQG5vZGUgVG9wCitAdG9wIEVtYWNzIFN5c3RlbSBHVUkgVGFza2JhciBJbnRl
Z3JhdGlvbgorVGhpcyBtYW51YWwgZGVzY3JpYmVzIEVtYWNzIHN5c3RlbSBHVUkgdGFza2JhciBp
bnRlZ3JhdGlvbi4KKworVGhlIEBkZm57c3lzdGVtLXRhc2tiYXJ9IHBhY2thZ2UgYWRkcyBFbWFj
cyBpbnRlZ3JhdGlvbiB3aXRoIHN5c3RlbSBHVUkKK3Rhc2tiYXIgKGFsc28gY2FsbGVkIGRvY2tz
IG9yIGxhdW5jaGVycyBvciBzb21ldGhpbmcgc2ltaWxhcikgdG8gZGlzcGxheQorYSB0YXNrYmFy
IGljb24gImJhZGdlIiBvdmVybGF5LCBhIHByb2dyZXNzIGJhciByZXBvcnQgb3ZlcmxheSwgYWxl
cnQgdGhlCit1c2VyIHRoYXQgYW4gRW1hY3Mgc2Vzc2lvbiBuZWVkcyBhdHRlbnRpb24sIG9mdGVu
IGJ5IGZsYXNoaW5nIG9yCitib3VuY2luZyB0aGUgRW1hY3MgYXBwbGljYXRpb24gaWNvbi4gIFRh
c2tiYXIgY2FwYWJsZSBzeXN0ZW1zIGFyZQorR05VL0xpbnV4IHZpYSBELUJ1cywgbWFjT1MvR05V
c3RlcCAxMC41KywgTVMtV2luZG93cyA3Ky4KKworT24gR05VL0xpbnV4LCB0aGUgdmlzaWJsZSBl
ZmZlY3RzIHdpbGwgYXBwZWFyIG9uIHRoZSBkZXN0aW5hdGlvbnMKK2RldGVybWluZWQgYnkgeW91
ciBzaGVsbCBleHRlbnNpb24sIG1vc3Qgb2Z0ZW4gdGhlIGFwcGxpY2F0aW9uIGxhdW5jaGVyCitv
ciBkb2NrIHBhbmVsLCBvciB0aGUgdG9wIHBhbmVsLiAgRWZmZWN0cyBhcmUgZ2xvYmFsIGZvciBh
biBFbWFjcworaW5zdGFuY2UuCisKK09uIG1hY09TL0dOVXN0ZXAsIHRoZSBlZmZlY3RzIHdpbGwg
YXBwZWFyIG9uIHRoZSBEb2NrIGFuZCBpbiB0aGUgQXBwCitTd2l0Y2hlci4gIEVmZmVjdHMgYXJl
IGdsb2JhbCBmb3IgYW4gRW1hY3MgaW5zdGFuY2UuCisKK09uIE1TLVdpbmRvd3MsIHRoZSBlZmZl
Y3RzIGFwcGVhciBvbiB0aGUgdGFza2Jhci4gIEVmZmVjdHMgYXJlCithc3NvY2lhdGVkIHdpdGgg
dGhlIGZyYW1lIGZyb20gd2hpY2ggdGhleSBhcmUgaW5pdGlhdGVkLgorCitAaW5zZXJ0Y29weWlu
ZworCitAbWVudQorKiBPdmVydmlldzo6ICAgICAgICAgICAgICAgICAgICBPdmVydmlldyBvZiBz
eXN0ZW0gR1VJIHRhc2tiYXIgaW50ZWdyYXRpb24KKyogUHJlcmVxdWlzaXRlczo6CisqIFVzZXIg
T3B0aW9uczo6CisqIEZ1bmN0aW9uIFJlZmVyZW5jZTo6CisqIFN5c3RlbSBUYXNrYmFyIFVzYWdl
IEV4YW1wbGVzOjoKKyogR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlOjogIFRoZSBsaWNl
bnNlIGZvciB0aGlzIGRvY3VtZW50YXRpb24uCisqIEZ1bmN0aW9uIEluZGV4OjoKKyogVmFyaWFi
bGUgSW5kZXg6OgorQGVuZCBtZW51CitAZW5kIGlmbm90dGV4CisKK0Bub2RlIE92ZXJ2aWV3CitA
Y2hhcHRlciBPdmVydmlldworCitUaGUgU3lzdGVtIFRhc2tiYXIgcGFja2FnZSBwcm92aWRlcyB0
aGVzZSBzeXN0ZW0gR1VJIHRhc2tiYXIgZmVhdHVyZXM6CisKK0BpdGVtaXplIEBidWxsZXQKK0Bp
dGVtIEljb24gYmFkZ2UKK0BpdGVtIEljb24gcHJvZ3Jlc3MgaW5kaWNhdG9yCitAaXRlbSBJY29u
IGF0dGVudGlvbiBhbGVydAorQGVuZCBpdGVtaXplCisKK0Bub2RlIFByZXJlcXVpc2l0ZXMKK0Bj
aGFwdGVyIFByZXJlcXVpc2l0ZXMKKworbWFjT1MvR05Vc3RlcCwgYW5kIE1TLVdpbmRvd3MgdXNl
cnMgbmVlZCBubyBzcGVjaWFsIGNvbmZpZ3VyYXRpb24uCisKK09uIEdOVS9MaW51eCBzeXN0ZW1z
LCB0aGUgaW1wbGVtZW50YXRpb24gaXMgdmlhIEQtQnVzIHRvIGNvbnRyb2wgR1VJCitzaGVsbHMg
YW5kL29yIHNoZWxsIGV4dGVuc2lvbnMgc3VjaCBhcworQGZpbGV7aHR0cHM6Ly9leHRlbnNpb25z
Lmdub21lLm9yZy9leHRlbnNpb24vMzA3L2Rhc2gtdG8tZG9jay99IHRoYXQKK2ltcGxlbWVudCBV
YnVudHUncyBVbml0eSBsYXVuY2hlciBzcGVjIHdoaWNoIHlvdSBjYW4gcmVhZCBtb3JlIGFib3V0
CitoZXJlIEBmaWxle2h0dHBzOi8vd2lraS51YnVudHUuY29tL1VuaXR5L0xhdW5jaGVyQVBJfS4K
KworQG5vZGUgVXNlciBPcHRpb25zCitAY2hhcHRlciBVc2VyIE9wdGlvbnMKKworQGRlZm9wdCBz
eXN0ZW0tdGFza2Jhci1jbGVhci1hdHRlbnRpb24tb24tZnJhbWUtZm9jdXMKK1RoZSB2YXJpYWJs
ZSBAY29kZXtzeXN0ZW0tdGFza2Jhci1jbGVhci1hdHRlbnRpb24tb24tZnJhbWUtZm9jdXN9IGNh
biBiZQorY3VzdG9taXplZCB0byBjbGVhciB0aGUgdGFza2JhciBpY29uIGF0dGVudGlvbiBpbmRp
Y2F0b3Igd2hlbiBhbnkgRW1hY3MKK0dVSSBmcmFtZSBpcyBmb2N1c2VkLiAgVGhpcyBpcyB1c2Vm
dWwgb24gR05VL0xpbnV4IGFuZCBpZ25vcmVkIG9uIGJhY2sKK2VuZHMgdGhhdCBhdXRvbWF0aWNh
bGx5IGNsZWFyIHRoZSBhdHRlbnRpb24gaW5kaWNhdG9yIChNUy1XaW5kb3dzIGFuZAorbWFjT1Mv
R05Vc3RlcCkuICBJdCBkZWZhdWx0cyB0byBAY29kZXt0fS4gIEN1c3RvbWl6ZSB0aGlzIGJlZm9y
ZQorZW5hYmxpbmcgQGNvZGV7c3lzdGVtLXRhc2tiYXItbW9kZX0uCitAZW5kIGRlZm9wdAorCitA
ZGVmb3B0IHN5c3RlbS10YXNrYmFyLWRidXMtZGVza3RvcC1maWxlLW5hbWUKK1RoZSB2YXJpYWJs
ZSBAY29kZXtzeXN0ZW0tdGFza2Jhci1kYnVzLWRlc2t0b3AtZmlsZS1uYW1lfSBpcyBjb25zdWx0
ZWQKK29uIEdOVS9MaW51eCBELUJ1cyBzeXN0ZW1zLCBhbmQgY2FuIGJlIGN1c3RvbWl6ZWQgdG8g
aW5kaWNhdGUgd2hpY2gKK2Rlc2t0b3AgZmlsZSBuYW1lIGlkZW50aWZpZXMgeW91ciBFbWFjcyBp
bnN0YW5jZS4gIEl0IGRlZmF1bHRzIHRvIHRoZQorZGVza3RvcCBmaWxlIGJhc2UgbmFtZSBAY29k
ZXsiZW1hY3NjbGllbnQifSBhbmQgbWlnaHQgbmVlZCB0byBiZSBzZXQgdG8KK0Bjb2RleyJlbWFj
cyJ9IG9uIHlvdXIgc3lzdGVtLiAgRW1hY3MgaW5zdGFsbGVkIGJ5IExpbnV4IGRpc3RyaWJ1dGlv
bnMKK2NhbiB2YXJ5IG9uIHRoZWlyIG5hbWluZyBzY2hlbWUgYW5kIG9mdGVuIGluY2x1ZGUgZGVz
a3RvcCBmaWxlcyBmb3IKK2JvdGguCitAZW5kIGRlZm9wdAorCitAZGVmb3B0IHN5c3RlbS10YXNr
YmFyLWRidXMtdGltZW91dAorVGhlIHZhcmlhYmxlIEBjb2Rle3N5c3RlbS10YXNrYmFyLWRidXMt
dGltZW91dH0gaXMgY29uc3VsdGVkIG9uCitHTlUvTGludXggRC1CdXMgc3lzdGVtcywgYW5kIGNh
biBiZSBjdXN0b21pemVkIHRvIHNwZWNpZnkgdGhlIG51bWJlciBvZgorbWlsbGlzZWNvbmRzIEVt
YWNzIHdpbGwgd2FpdCBmb3IgRC1CdXMgcmVzcG9uc2VzIGJlZm9yZSB0aW1pbmcgb3V0IGFuZAor
Y29uc2lkZXJpbmcgbWVzc2FnZXMgdW5kZWxpdmVyYWJsZS4gIEl0IGRlZmF1bHRzIHRvIG5pbCB3
aGljaCB3aWxsIHVzZQordGhlIEQtQnVzIHBhY2thZ2UgZGVmYXVsdCBvZiAyNTAwMCBtaWxsaXNl
Y29uZHMsIHdoaWNoIHNlZSwKK0BweHJlZntUb3AsLCwgZGJ1cywgRC1CdXMgaW50ZWdyYXRpb24g
aW4gRW1hY3N9LgorQGVuZCBkZWZvcHQKKworQG5vZGUgRnVuY3Rpb24gUmVmZXJlbmNlCitAY2hh
cHRlciBGdW5jdGlvbiBSZWZlcmVuY2UKKworQGRlZmZuIHN5c3RlbS10YXNrYmFyLW1vZGUKK0Bj
b2Rle3N5c3RlbS10YXNrYmFyLW1vZGV9IG11c3QgYmUgZW5hYmxlZCB0byBpbml0aWFsaXplIHRo
ZSBzeXN0ZW0gYmFjaworZW5kIGJlZm9yZSBjYWxsaW5nIGFueSBvZiB0aGlzIHBhY2thZ2UncyBm
dW5jdGlvbnMuICBPbiBhIEdOVS9MaW51eAorRC1CdXMgc3lzdGVtLCB0aGUgcmVxdWlyZWQgRC1C
dXMgcHJvdG9jb2wgaXMgcHJvYmVkIGFuZCBpZiBub3QKK2F2YWlsYWJsZSwgYW4gZXJyb3IgaXMg
c2lnbmFsZWQuCitAZW5kIGRlZmZuCisKK0BkZWZ1biBzeXN0ZW0tdGFza2Jhci1iYWRnZSAmb3B0
aW9uYWwgY291bnQKK0Rpc3BsYXkgdGhlIHRhc2tiYXIgaWNvbiBiYWRnZSBzZXQgdG8gQHZhcntj
b3VudH0uICBJZiBAdmFye2NvdW50fSBpcworQGNvZGV7bmlsfSwgY2xlYXIgdGhlIGJhZGdlLiAg
QHZhcntjb3VudH0gaXMgdHlwaWNhbGx5IGFuIGludGVnZXIuCisKK0lmIEB2YXJ7Y291bnR9IGlz
IGEgc3RyaW5nLCBpdCBpcyBjb252ZXJ0ZWQgdG8gYW4gaW50ZWdlciBvbiBzeXN0ZW1zCit0aGF0
IGRvIG5vdCBzdXBwb3J0IHN0cmluZyBiYWRnZXMsIHN1Y2ggYXMgR05VL0xpbnV4IEQtQnVzLCBh
bmQgdGhlCitiYWRnZSB3aWxsIGJlIGNsZWFyZWQgaWYgdGhlIHN0cmluZyBpcyBhbiBpbnZhbGlk
IGludGVnZXIKK3JlcHJlc2VudGF0aW9uLiAgT24gc3lzdGVtcyB0aGF0IHN1cHBvcnQgc3RyaW5n
cywgc3VjaCBhcyBtYWNPUy9HTlVzdGVwCithbmQgTVMtV2luZG93cywgdGhlIGJhZGdlIGlzIHNl
dCB0byB0aGUgc3RyaW5nIGFuZCBkaXNwbGF5ZWQsIGFuZCBtYXkgYmUKK3RydW5jYXRlZCB0byBm
aXQgdGhlIHZpc3VhbCBzcGFjZSBhbGxvY2F0ZWQgYnkgdGhlIHN5c3RlbS4gIEluIGFueSBjYXNl
LAoraWYgdGhlIHN0cmluZyBpcyBlbXB0eSwgY2xlYXIgdGhlIGJhZGdlLgorQGVuZCBkZWZ1bgor
CitAZGVmdW4gc3lzdGVtLXRhc2tiYXItYXR0ZW50aW9uICZvcHRpb25hbCB1cmdlbmN5IHRpbWVv
dXQKK0Rpc3BsYXkgYSB0YXNrYmFyIGljb24gYWxlcnQuICBUaGlzIHdpbGwgcmVzdWx0IGluIGEg
Ym91bmNpbmcgb3IKK2ZsYXNoaW5nIHRhc2tiYXIgaWNvbi4gIE9uIHNvbWUgYmFjayBlbmRzLCBh
dHRlbnRpb24gd2lsbCBiZSBkaXNwbGF5ZWQKK29ubHkgaWYgRW1hY3MgaXMgbm90IHRoZSBjdXJy
ZW50bHkgZm9jdXNlZCBhcHBsaWNhdGlvbi4KKworSWYgQHZhcnt1cmdlbmN5fSBpcyB0aGUgc3lt
Ym9sIEBjb2Rle2luZm9ybWF0aW9uYWx9LCBub3JtYWwgYXR0ZW50aW9uIGlzCityZXF1ZXN0ZWQu
ICBJZiBAdmFye3VyZ2VuY3l9IGlzIHRoZSBzeW1ib2wgQGNvZGV7Y3JpdGljYWx9LCB1cmdlbnQK
K2F0dGVudGlvbiBpcyByZXF1ZXN0ZWQuICBJZiBAdmFye3VyZ2VudH0gaXMgQGNvZGV7bmlsfSwg
Y2xlYXIgdGhlCithdHRlbnRpb24gaW5kaWNhdG9yLgorCitFbWFjcyB3YWl0cyBAdmFye3RpbWVv
dXR9IHNlY29uZHMgYmVmb3JlIGF1dG9tYXRpY2FsbHkgcmVtb3ZpbmcgdGhlCitpbmRpY2F0b3Iu
ICBJZiBAdmFye3RpbWVvdXR9IGlzIEBjb2Rle25pbH0sIHRoZSBhdHRlbnRpb24gaW5kaWNhdG9y
IHdpbGwKK2JlIGNsZWFyZWQgYnkgdGhlIHN5c3RlbSBvciBieSBjYWxsaW5nIHRoaXMgZnVuY3Rp
b24gYWdhaW4gcGFzc2luZyBhCitAY29kZXtuaWx9IHVyZ2VuY3kuCisKK09uIHNvbWUgYmFjayBl
bmRzLCBhbiBAY29kZXtpbmZvcm1hdGlvbmFsfSBhdHRlbnRpb24gcmVxdWVzdCB3aWxsIHRpbWUK
K291dCBhdXRvbWF0aWNhbGx5LiAgSW4gY29udHJhc3QsIGEgQGNvZGV7Y3JpdGljYWx9IHJlcXVl
c3QgcmVxdWlyZXMgdGhhdAordGhlIHVzZXIgYnJpbmcgRW1hY3MgaW50byBmb2N1cyBhbmQgd2ls
bCBub3QgdGltZSBvdXQuICBPbiBzb21lIGJhY2sKK2VuZHMsIEBjb2Rle2NyaXRpY2FsfSBoYXMg
dGhlIHNhbWUgZWZmZWN0IGFzIEBjb2Rle2luZm9ybWF0aW9uYWx9LgorQGVuZCBkZWZ1bgorCitA
ZGVmdW4gc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MgJm9wdGlvbmFsIHByb2dyZXNzCitTZXQgdGhl
IHRhc2tiYXIgaWNvbiB0byBpbmRpY2F0ZSBwcm9ncmVzcyBvZiBhIGxvbmctcnVubmluZyBvcGVy
YXRpb24uCitUYXNrYmFyIHByb2dyZXNzIGlzIHR5cGljYWxseSByZXByZXNlbnRlZCBhcyBhIGdy
YXBoaWNhbCBiYXIgdGhhdAorZnJhY3Rpb25hbGx5IHNwYW5zIHRoZSB0YXNrYmFyIGljb24uICBA
dmFye3Byb2dyZXNzfSBpcyBhIGZsb2F0IGluIHRoZQorcmFuZ2UgMC4wIHRvIDEuMC4gIElmIEB2
YXJ7cHJvZ3Jlc3N9IGlzIG5pbCwgcmVtb3ZlIHRoZSBwcm9ncmVzcworaW5kaWNhdG9yLgorCitA
QEAgVGhlIHR3byBtYWNyb3MgYmVsb3cgY2FuIGJlIHVzZWQgdG8gc3VwcGxlbWVudCBjb252ZW50
aW9uYWwgRW1hY3MKK3Byb2dyZXNzIHJlcG9ydGluZyBpbiB0aGUgZWNobyBhcmVhLiAgQHhyZWZ7
UHJvZ3Jlc3MsLCBEaXNwbGF5LCBlbGlzcCwgVGhlIEVtYWNzIExpc3AKK1JlZmVyZW5jZSBNYW51
YWx9LgorCitAZW5kIGRlZnVuCisKK0BkZWZtYWMgZG90aW1lcy13aXRoLXN5c3RlbS10YXNrYmFy
LXByb2dyZXNzLXJlcG9ydGVyICh2YXIgY291bnQgW3Jlc3VsdF0pIHJlcG9ydGVyLW9yLW1lc3Nh
Z2UgYm9keUBkb3Rze30KK1RoaXMgaXMgYSBjb252ZW5pZW5jZSBtYWNybyBhbmFsb2dvdXMgdG8K
K0Bjb2Rle2RvdGltZXMtd2l0aC1wcm9ncmVzcy1yZXBvcnRlcn0gYW5kIHdvcmtzIHRoZSBzYW1l
IHdheSBhcworQGNvZGV7ZG90aW1lc30gZG9lcywgYnV0IGFsc28gcmVwb3J0cyBsb29wIHByb2dy
ZXNzIG9uIHRoZSBFbWFjcyB0YXNrYmFyCitpY29uLiBAQEAgQHhyZWZ7UHJvZ3Jlc3MsLCBEaXNw
bGF5LCBlbGlzcCwgVGhlIEVtYWNzIExpc3AgUmVmZXJlbmNlCitNYW51YWx9LgorQGVuZCBkZWZt
YWMKKworQGRlZm1hYyBkb2xpc3Qtd2l0aC1zeXN0ZW0tdGFza2Jhci1wcm9ncmVzcy1yZXBvcnRl
ciAodmFyIGxpc3QgW3Jlc3VsdF0pIHJlcG9ydGVyLW9yLW1lc3NhZ2UgYm9keUBkb3Rze30KK1Ro
aXMgaXMgYSBjb252ZW5pZW5jZSBtYWNybyBhbmFsb2dvdXMgdG8KK0Bjb2Rle2RvbGlzdC13aXRo
LXByb2dyZXNzLXJlcG9ydGVyfSBhbmQgd29ya3MgdGhlIHNhbWUgd2F5IGFzCitAY29kZXtkb2xp
c3R9IGRvZXMsIGJ1dCBhbHNvIHJlcG9ydHMgbG9vcCBwcm9ncmVzcyBvbiB0aGUgRW1hY3MgdGFz
a2JhcgoraWNvbi4gIEBAQCBAeHJlZntQcm9ncmVzcywsIERpc3BsYXksIGVsaXNwLCBUaGUgRW1h
Y3MgTGlzcCBSZWZlcmVuY2UKK01hbnVhbH0uCitAZW5kIGRlZm1hYworCitAbm9kZSBTeXN0ZW0g
VGFza2JhciBVc2FnZSBFeGFtcGxlcworQGNoYXB0ZXIgU3lzdGVtIFRhc2tiYXIgVXNhZ2UgRXhh
bXBsZXMKKworQGxpc3AKK0Bncm91cAorOzsgRW5hYmxlIGFuZCBpbml0aWFsaXplIHN5c3RlbS10
YXNrYmFyLW1vZGUgYmVmb3JlIGNhbGxpbmcgaXRzCis7OyBjb21wYW5pb24gZnVuY3Rpb25zLgor
KHN5c3RlbS10YXNrYmFyLW1vZGUpCisKKzs7IERpc3BsYXkgYSBiYWRnZSBvbiB0aGUgdGFza2Jh
ciBpY29uLgorKHN5c3RlbS10YXNrYmFyLWJhZGdlIGVtYWNzLW1ham9yLXZlcnNpb24pCisoc3lz
dGVtLXRhc2tiYXItYmFkZ2UgIjMxIikgOyBjb252ZXJ0ZWQgdG8gaW50ZWdlciBvbiBHTlUvTGlu
dXgKKyhzeXN0ZW0tdGFza2Jhci1iYWRnZSAiVGVzdCIpIDsgd29ya3Mgb24gbWFjT1MvR05Vc3Rl
cCBhbmQgTVMtV2luZG93cworCis7OyBDbGVhciB0aGUgYmFkZ2UuCisoc3lzdGVtLXRhc2tiYXIt
YmFkZ2UgbmlsKQorOzsgT3IganVzdAorKHN5c3RlbS10YXNrYmFyLWJhZGdlKQorQGVuZCBncm91
cAorCitAZ3JvdXAKKzs7IEdldCB0aGUgdXNlcidzIGF0dGVudGlvbi4KKyhzeXN0ZW0tdGFza2Jh
ci1hdHRlbnRpb24gJ2luZm9ybWF0aW9uYWwgMykgOyBjbGVhciB0aGUgcmVxdWVzdCBhZnRlciAz
IHNlY29uZHMKKyhzeXN0ZW0tdGFza2Jhci1hdHRlbnRpb24gJ2NyaXRpY2FsKSA7IGNsZWFyIHdo
ZW4gdGhlIEVtYWNzIGFwcGxpY2F0aW9uIGlzIGZvY3VzZWQKKworOzsgQ2xlYXIgdGhlIGF0dGVu
dGlvbiByZXF1ZXN0LgorKHN5c3RlbS10YXNrYmFyLWF0dGVudGlvbiBuaWwpCis7OyBPciBqdXN0
Cisoc3lzdGVtLXRhc2tiYXItYXR0ZW50aW9uKQorQGVuZCBncm91cAorCitAZ3JvdXAKKzs7IFJl
cG9ydCBgZG90aW1lc2AgcHJvZ3Jlc3Mgb24gdGhlIHRhc2tiYXIgaWNvbi4KKyhkb3RpbWVzLXdp
dGgtc3lzdGVtLXRhc2tiYXItcHJvZ3Jlc3MtcmVwb3J0ZXIKKyAoaSAxMCkgIkNvdW50aW5nIGZy
b20gMSB0byAxMC4uLiIKKyAoc2xlZXAtZm9yIDEpKQorCis7OyBSZXBvcnQgYGRvbGlzdGAgcHJv
Z3Jlc3Mgb24gdGhlIHRhc2tiYXIgaWNvbi4KKyhkb2xpc3Qtd2l0aC1zeXN0ZW0tdGFza2Jhci1w
cm9ncmVzcy1yZXBvcnRlcgorIChpIChtYWtlLWxpc3QgMTAgdCkpICJQcm9ncmVzcyBmcm9tIDEg
dG8gMTAgZWxlbWVudHMuLi4iCisgKHNsZWVwLWZvciAxKSkKK0BlbmQgZ3JvdXAKK0BlbmQgbGlz
cAorCitAbm9kZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UKK0BhcHBlbmRpeCBHTlUg
RnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UKK0BpbmNsdWRlIGRvY2xpY2Vuc2UudGV4aQorCitA
bm9kZSBGdW5jdGlvbiBJbmRleAorQHVubnVtYmVyZWQgRnVuY3Rpb24gSW5kZXgKK0BwcmludGlu
ZGV4IGZuCisKK0Bub2RlIFZhcmlhYmxlIEluZGV4CitAdW5udW1iZXJlZCBWYXJpYWJsZSBJbmRl
eAorQHByaW50aW5kZXggdnIKKworQGJ5ZQorCitAYyBFbmQ6Ci0tIAoyLjQ3LjEKCg==
--000000000000ef978c0645872975--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 27 Nov 2025 17:48:06 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 27 12:48:06 2025
Received: from localhost ([127.0.0.1]:37467 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vOg69-0002Zl-VF
for submit <at> debbugs.gnu.org; Thu, 27 Nov 2025 12:48:06 -0500
Received: from mout.gmx.net ([212.227.15.15]:38375)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>)
id 1vOg66-0002Ye-WC
for 79859 <at> debbugs.gnu.org; Thu, 27 Nov 2025 12:48:04 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de;
s=s31663417; t=1764265675; x=1764870475; i=michael.albinus@HIDDEN;
bh=GxKR3HZB+bvqr+wbxUajP20BYmm0X+wF8d7C9e6/9TU=;
h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date:
Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc:
content-transfer-encoding:content-type:date:from:message-id:
mime-version:reply-to:subject:to;
b=d4cfN+isnf+s2/ujzCXolCtBpRlCAJAwK8gv6ssAoTIuEKwpVGjiURHQbyY222Co
gKzeMQqFrcLCkFBxr1EKar70JnMxMp9+eWod63PLr717s6vY2oGifgLQOa2U/HO+D
bcGyWwltKK3v1UknpAOMjU9dhmkimO4XnArbgFdbej8ypl6eMNANx7Ba1yvDz4lO2
JB/j/TBgc6NrIutA/lGOU7TsU77kc5momGXMpRW8Eb27+PLhKo8mXcBY9Ro0Z2/2x
Z+2njBDFCVGb+z649YA9pBI9TcSb4WK1A+2y3e8aaoGi1cLQOxLCY45x5q+tn/As1
BkDf9j1Eg2hw/jsdhw==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from gandalf.gmx.de ([185.89.37.61]) by mail.gmx.net (mrgmx005
[212.227.17.190]) with ESMTPSA (Nemesis) id 1Mj8mV-1w3WhC20RR-00h07j; Thu, 27
Nov 2025 18:47:55 +0100
From: Michael Albinus <michael.albinus@HIDDEN>
To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
In-Reply-To: <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<86bjkxhuca.fsf@HIDDEN>
<CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
Date: Thu, 27 Nov 2025 18:47:54 +0100
Message-ID: <87pl932wqd.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:cAwCiHjMVVhY+INYQARdJZ+J3t0h0StRw72dwXptX2ue/QbETNr
/tQq6vDI0ZC7kR2PbXX18CBPjtMDOT7kqFD8bt9uYjrc+hr2csy2OmQC6WI9PL49RGfEvUT
pnOGeANY2ypDa/w5ReHXMwV9bMCTeqMCSoOchzL+9bKT9S29x3ZL2MJZDIlZxUXfDlticau
5Ij/uNWjvNG+03gk2JRqg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:aIbESOhaeeY=;WZB511xC57HDUNrwmYN1+i20v2I
2LJ1oiPQ0aC77e2vW/YNIVGPmf8ylPlkMDe7iiDaocxFDlwF4CDrfFen1oc61jkwuZKGlEiuk
5SUxqMDn2NCD/EITiTbrBlVnooluxHVTuBovLFg02qRIrdSwwMK3zNGKiIZcCdn4xsqUWu163
DP/PaBS1e+QCkrVLr1ukod2HOrdisSy4ekZceBWcPp8+p0Iwly86w2S+TdeuCTdoMT2QC0z95
wF5uyk/60i0HdC5EkF3muLWsOvVxcREDakMAFsOe3v2TOizuYWuXRtwYguMYJEjVAxm0XVzZP
ArLAzAUJbuAY09g1W14HI/IWhT9BN0uvniMmW0bY/CM8xtEXcDuPVdSyqEdr/6dwNcZJziBld
iAa3hxQRka16QYDnkLdn1ROEjaIasmmyPbSELh1XPIubnMq6NMGwZ6I7j4mU21OS6TaYQhsFn
GglkOGUJ+9vEuRXwi4Ul6v7kIU1QSpfZy/coezvXcMcmFi9HOSIWyA4e1uBuf9acXN7kbE5dg
rFNfW7Zzgck1D/djQ6mFrtB/X41tc4qYJ9+SyNAghiRz9LliTLSu/sMFR9+nbw8+UCn4Pm8f5
Yp4/pazNX4xHV8BpkZ4WSZneP61YFWW5Pvkwyil5Yim8WB1viErJ3LNPeZetwMwxxfkhk38vs
8unhLxzXrlN7xhkNVUl7v0r5BpMpaB7+DW63z9mJWBOCsuGE8a4926fUypxa+xcHnW4wqI6v6
ewfPeKLQYLZAgn8qfr5+YbrUFmZFvG73MnwDqSlq5oxL2JlvC1nuV6kvP5LxxCPc/17B0cFx2
bLSlMLD6JxueDO1J3GF9GaMVMIpf2k4H9cto84SiPS8jRispUPPgfPfY0oh6a7XHzTj8xnJ+T
Pv+fv/2+AC1zfKyWBWWrifvYmJczGe81cApvqH+FEE3MmlJ70QNM6H9w47qI19l5CpshRmzbe
Qy6SyWQEmrT1j9D2rLAfiLBMcGs6VikU3lq37A/arGJpqiqBpXQIP1/3WAC/qZqfVwOhiMuDv
86gMLTQ6xhsmmo1pCYR/gkWXOxEtLXsX8PEDOLW6CdEEWoI7jYkhfldoc5pa+TsRp9xfpRgef
0B5WUdgKKN4Sp/aziE8sBSKI3IISc7LxyQJdHhWMOpW0rMb67nd06dmMGQKfrdkHuyvzCAzbA
/zU5TrxYQDWCPejSDnTiXwiyhpfgJwi6AHWcqKZg5brPilPNFQG3MegA8P23QlijrmZzWJ795
g/qSkjW7+AEJcX0YmKUoM417oX4Ttf/xjn4WHSashl48yRjdzuKVenHygDH0IX1g/a/eqNF26
A4ZUEiAtsWt1nTKyGhZVqKcF6p0VLsDG55+w34A5ZEEDzD9X8NxJg1yM2yzbHVFT1Fy2MrXIr
Q8eTleNVvJJgI6qRLnQjuOWMuJa7zdjeGYWbg2vUTtc7UDYTH9ceqCVWzsbg+QUVrYRLivwVq
KLhuyJdPpFuyinRLI7jXusiNqY6WRCggaQbqkWiHnuqhZXrvAl/5NaPaV3qScH6sBOTeJkAVF
6z3jpIgeSZo8XXR20yj3zzCeC5TrnYa1bap1t0aSSOKZ14VUzfS3ott7KBubzpphuLdIIt1o9
Y9r4HXRDvihaMbHgeD7NFs+Fg9XZMqYZ7GWMlnUVho12KYk8vpZgqy/O/G9E5an0xERYrqGKT
vSEgfNSefjPqrOKKyz3KqgCjkNllxxvxqyx2zjFMT1zXkEPVB9Tbrq+NtcGMv7YC62AHfwHNf
/J/acYXLtwybQpBl9z1/7jT/Q4HWJyQREcOku414jnthgYuZ0x3jaX/Yf6lW3/zJNa8mfusis
upxxVWsy67XRngJKi/nlroIjLNKIgOel7RoeY1rWj1xf63S8jxQS3XwghthstLMqzMwY9KjHC
JkUww1bTTErTEKFeUaDaY/SIyxFIyOVriYAvvoFwspPIbS5NKxc5WHJ3DpvrcwhR4PvfmHz3D
JT8osGMCYvu+zuMgsZIFiOWhOqBU7VDWknuJwdcCleulia1TKM9Q9roU297ckh6wr6ENNW9aD
/TtTVxbdWeYwyBtlO3jzHlW0qap50l/a51Lt5aGmz0intFfEUELSbU6JUC/nDvizNSD6CISFo
jn2fMMcqGsMBFUKg5gj2S+zxuap/7cItv55Y/+16rQHXeuhvlT9PZ96hoCvMireHp07iChol4
19b+FohpgK/pUHCmvmzlMNVzyTqGeYTv6bC0NW+m+reGwlB7G0XlZ7aFFoJ89xLgyO76dIhiU
8y9HC+vXwIwfmWxWH/3caIytvk9xCd30Vsa0vA8zWdEsSp9s6queziY/CGtlEss1XprBNnN4B
IJayMGsw82Amq47koTqxkxKeR5csBPbbQTpboFtzbnypNwy6bJqIqqiFyBEQSTuYjde0+COpB
lcnExQbnQEnHWaJ7hijeaWMP6vd8BGf/DyT61oir6bBtnPBuO2BYwhlwvZWBmhYaNYspOuz2C
z2vLexURpGhj0RW4V4QeN+otINJYyFuNJvTQKjmQ1GzZZbs8b0qjVHfuA1geJBbzWXD98JFfr
gthZgEAXJVk3RQXFAFMA/u+53V9k8Rlax3QcSrnElLnrxVdCBdNmJxr0C+SQRCeM3d6SRMUW2
nAlTYb0EWCK059hf1+yGuWevHXwZHlVru7wDpwEvzewireVB6ohxcL32zTOcgRGeXpPnd8x8z
vOqP2QLkDtuVh/kBbThqxbWOr1+Txhz29osEhAbiR2rLRbAbHTqbTLcjHoz+O9drMFkEQAIkd
G0UbLh/7oH3XcEKgaCPuG60G0goejMFoxexQ8bOUVdGif8bRdqjrmBbEv+59CjuePR/hXfSOD
yBSCf2wtezxhCJmK0nlQDA6dkwUq8cbWj9N0otypmfZhz+9pSYYMNl6kb57lnTWUycAtC0Bus
XDnCxADrRWuPpHQ3IFNOWsPAPCsMB/qYJa2Syx2AkGCdg4snEa5U2+t6kT1ziUn/YeARqyLYs
Y78NerUv1J8vI5OmzSq1ndR3PDCfaA0ozh+4iUz+vp3GNRmXK7FJD1+5ML7xgnclzIw4aZWY6
07Q57qrF80ic53I6rL8tQQG7jXqq2/4YOL5KV+geQdHTM0Ed8sD+ZP75OZJyh1pC1JakLakAm
PK3CjnVA0kIsbzzsGbAj+0LCLvDO/elDUSXqz4+NNvDBt52ppW2i4BoxG7ElygKc3c30BmklY
fdHX3E2+liQVHyyBbVksI+Dq/I36C3Os/VcUnOnpdmCpUQBLABGa/ZfTKfCdt0+3t/Z51BTSJ
71ei7I9pIMDQFf0T7J4AQ0gyEHUqE0RaQuYQEFEB6Y+mRHdmApNnsHC8bKqFgcTQijKsydJPe
o8gtcnJQGx54vijp865RIX79pm3EJPB9TtHyUflKrfUFlXpSJqOpsI4gmaDNZPmwZHnAT58Z8
zsjdIt+TM3GcQym7oBKLEpjPJbb40o2YC0BzT+nOsEfMUOiIaB31X70XxRiu2sP1v005L3wmU
0P0dg0qBa/SKoBIUXWE9SVKurGxq8Bx4uxtNxfo+8WDqlpPLI8o0Y4V4Vzppg6Ff4ldlRMT12
smIRrch9X8K0lGblY/+6bPnw5Ovb0pq+IfRl2Xqh7XL+7iafLAtmxUdO5Zh5UmRxrvmVjwdI0
nc2WOcKnRsrUYDAmrQnPz+uvdYn7xAB7Pp+XCRNaFdRVfAZ66oXurFvzIRN8dNP5H3YbWkOK7
ssHrliq2uX/fxv1W93+CzdBkoiL2YS9oHfnkg6yFIgnBA9csU5MZH1axjYdRPCaLik48pP7xR
6dgeoNxQDDCnXnpAdt+tpiXNosOPChANyy+6WHRljUFGy9anpM+sMNDqqruQ57Q1OteEJBzRD
GxsS+LXFR+2LIjro4x2XGv9/ZvLTl6W4fFB+chEQlTJtR3I+yRxov9Ad5fJcSuLCAJTtEQ7+Q
fs8/1ifR5U2gU9v1Gwc8wl1PE+Q1tPRDuNpn8HS415/VTHMhgm4lcW8zWb2RM5cFB6mL6J2ID
3P3mYzGEI16+YIY4KoJHyBARKxR7PZLuWYem3T2P5oYMY0Mp7oNMUS6tYPmY/aRU4PhUsn13w
vztF6F8faN37n1J+VmJb4NXcJFsKyiccis0bEtYN8OD09IJfvFQkjIVgIKPUGdMaUanMkqx0K
KbA7BDW8N/wfFuxJ7YUCxTYrTQmsGe2vnwfoTDJO869bFSyRqyx0jo+if+Nq14r0FSec1zZzn
iF/WuGYxfi9QcdLC4jrdccZiV3O1UI+INKkN27rqYH7lTKFWKR6tJVcAPtzQSLIrpgnVEpNAa
kFWDWbzVwvjYdGzN3nB6dSpom+m2fyRd9ykmxomGuXrZrbieJ9mQyAuAVsm9DwOwvi9xOMxWy
n571JHNvJsHKmOQ416zz4taLEb0Ao7S3F51dOATzh4f2S+wSiSZUCfeWYUTwAsV7kEc/Cb2+h
XNocsZ0y7FMwUm+9w5ImtqlJqXQMfsCzYoJXYr/9keMlGjSTiy4TZ3O1H73HjqCTmaZIHSY6Q
ZPC2ScbFNVoOjB4B+sUP9AeFleMH2Jv5HX1mXgD5Sl7I440r1gyTml8a4hQsuS3amymyXcBA8
OdgnMlYn8I+0paIO3wqsbtOnqCAejywUSCdh9W4mhzuhU+/H66HTpZNH/7yYqk8ho44Cuuvxs
aYMN0Bze1ICpnxU4/uGIPuvrPuTmnRWE2Zi72P6jKUFgts5bVNYrpPdoJ2n2C0Kp9b12q9u9j
ASJ1c6mlS4K8hls+AoSdY9Mym5DPM8nlfysHqUwq5oY97sewzoS52YOfY6Ks26nibIY1gPB0H
HDGxgNfRqXI8BfxNDb7QGFMGNKwlPFdcNGtQUzE0iSjW8R9+Bs3ggQw4O6mM+8wLNB8ctmGzP
t3iImgEgKIyTYmsqU02hyV9iiO3b1OxnTtfdvLjtsHF5ITY6TBQSOMK2+d4g48YrrMn5kj4vf
onbddBNPQeHn1M8Bnp5eL/iVDUO1V65oCwnn0uBOGuyoqLAqRVEQY/VmirmNkRCJTDnh6wWj6
AzPrc+mQr6uTiq0skq4qhnckJ4aWClODBrk5YGUPbWHpgnw9COpKFrzW9iiDQX41Xushmc32X
Edz6+2qg6y/KzjC7cZcdcQxfaZA8IqBxcuHhMTHabr+d9y2VcGyB5vgm+Pcym0wdcQAMMbYZ0
dzc8CYwKIWDcgU4+y4qXiCe6HRSF2S1GDHVuvAPkRIciZdoLxk/8Ho4wL6c+U7oRN3h7hBt2B
SjN+9Ggw8V4KoIu+/ZgpvGyN8fMiNKPeYHSkt0FOeQPq1KG1pipnk6POd8ECI8R2veAkb+tQ=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
St=C3=A9phane Marks <shipmints@HIDDEN> writes:
Hi St=C3=A9phane,
> Thank you for reviewing the patch and your thoughtful feedback. I'll
> incorporate more feedback after you get it compiled and you give it a
> try, and perhaps other people, too. My Windows 11 virtual machine is
> less than a real-world Windows set up, though sufficient for
> developing this feature.
>
> I've attached a patch rebased on master
> 2cc6c812788281c05ca9687afd7bedf597b1e942 which also incorporates your
> feedback.
I gave it a try on my laptop (Fedora 43 + gnome-shell-extension-dash-to-doc=
k).
First impressions:
- After calling 'M-x dock-mode', I get an error
--8<---------------cut here---------------start------------->8---
dock--set-back-end: Symbol=E2=80=99s function definition is void: dbus-list=
-activatable-names
--8<---------------cut here---------------end--------------->8---
I guess a require is missing.
- The examples in the "(dock-mode) Dock Usage Examples" node are working
except (dock-badge "Test"). I guess it is a restriction for the D-Bus
backend. It would be great if the documentation says which
functionality is implemented by which backend. Maybe I missed this?
Comments, mainly from Eli are already give. Since I agree with them, I
will comment on the code only if there are further remarks by me.
> From 86a1577ff8290291020b10294f65352773b69db3 Mon Sep 17 00:00:00 2001
> From: =3D?UTF-8?q?St=3DC3=3DA9phane=3D20Marks?=3D <shipmints@HIDDEN>
> Date: Thu, 20 Nov 2025 12:54:40 -0500
> Subject: [PATCH] Add system GUI dock integration.
> --- a/doc/misc/Makefile.in
> +++ b/doc/misc/Makefile.in
> @@ -68,6 +68,7 @@ DOCMISC_W32 =3D
>=20=20
> ## Info files to build and install on all platforms.
> INFO_COMMON =3D auth autotype bovine calc ccmode cl dbus dired-x \
> + dock-mode \
> ebrowse ede ediff edt efaq eglot eieio emacs-gnutls \
> emacs-mime epa erc ert eshell eudc eww flymake forms gnus \
> htmlfontify idlwave ido info.info mairix-el message mh-e \
It shouldn't be a line of its own.
> --- /dev/null
> +++ b/doc/misc/dock-mode.texi
As Eli said, it shouldn't be a manual under doc/misc. Everything what's
said about calling 'dock-mode' and its user options fits into the
Emacs manual.
The more technical details, function interfaces, belong to the Elisp
manual. We have there a node "(elisp) Desktop Notifications". dock-mode
is a comparable feature, I would call it "Taskbar Notifications". So the
information shall go there, directly after desktop notificatios.
> +Your GNU/Linux Emacs instance should be launched via an appropriate
> +shell "desktop" file such as those distributed with Emacs; e.g.,
> +"etc/emacsclient.desktop".
"etc/emacsclient.desktop" is internal to Emacsd; it isn't taken into
account by the GUI dock. So we shall speak about it more general.
> +@node User Options
> +@chapter User Options
> +
> +@defvar dock-clear-attention-on-frame-focus
Use @defopt.
> +The variable @code{dock-clear-attention-on-frame-focus} can be
The user option ...
> +@defvar dock-dbus-desktop-file-name
> +The variable @code{dock-dbus-desktop-file-name} applies on GNU/Linux
Dito.
> +@defvar dock-dbus-timeout-ms
> +The variable @code{dock-dbus-timeout-ms} applies on GNU/Linux D-Bus
Dito.
I wouldn't use a trailing '-ms'. This is a technical detail, which isn't
used anywhere else in the D-Bus object names.
> +systems, and can be customized to specify the number of milliseconds
> +Emacs will wait for D-Bus responses before timing out and considering
> +messages undeliverable. It defaults to 25000 milliseconds, which is the
> +recommended default by the D-Bus package, which see, @pxref{Top,,, dbus,
> +D-Bus integration in Emacs}.
I wouldn't set the default to 25000, but to nil. This means "use the
D-Bus default", which is 25000 indeed. But we don't need to mirror it.
> +@node Function Reference
> +@chapter Function Reference
> +
> +@findex dock-mode
> +@defun dock-mode
As said by Eli, don't use @findex. And use "@deffn Command" in order to
show, that it is a command.
> diff --git a/etc/NEWS b/etc/NEWS
> index fdb1ee02819..f5252cc5bf9 100644
> --- a/etc/NEWS
> +++ b/etc/NEWS
> @@ -2772,6 +2772,16 @@ determined by the new user option 'pulse-face-dura=
tion'.
>=20=20
> ** Miscellaneous
>=20=20
> ++++
> +*** New feature 'dock-mode'.
This belongs to "* New Modes and Packages in Emacs 31.1". It should be
headed by "** Dock mode".
> +This package integrates Emacs with system GUI "docks" to display a dock
> +icon badge, progress indicator, and attention alerts. Implementations
> +are available for D-Bus platforms (e.g., KDE and GNOME), macOS/GNUstep,
> +and MS-Windows. On GNU/Linux systems, shell extensions such as
> +"dash-to-dock" may be required. See
> +<https://extensions.gnome.org/extension/307/dash-to-dock/> and
> +<https://wiki.ubuntu.com/Unity/LauncherAPI>.
There shall be two subheadings. This one, and another one introducing
'dock-mode' and the user options (for the users). And perhaps a third
one, speaking about the other functions.
> --- /dev/null
> +++ b/lisp/dock-mode.el
> @@ -0,0 +1,455 @@
+
> +;;; Commentary:
I'm missing the description of 'dock-mode' for enabling/disabling of the
feature.
> +(defcustom dock-dbus-timeout-ms 25000
> + "Number of milliseconds to wait for D-Bus responses.
> +The default value mirrors the `dbus` default."
> + :type 'natnum
> + :version "31.1")
As said, I would call it dock-dbus-timeout. And give it
--8<---------------cut here---------------start------------->8---
:type '(choice (constant :tag "Default" nil) natnum)
--8<---------------cut here---------------end--------------->8---
> -St=C3=A9phane
Best regards, Michael.
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 27 Nov 2025 11:36:54 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 27 06:36:54 2025 Received: from localhost ([127.0.0.1]:35658 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vOaIw-0008Pl-3H for submit <at> debbugs.gnu.org; Thu, 27 Nov 2025 06:36:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43936) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vOaIt-0008PQ-Iq for 79859 <at> debbugs.gnu.org; Thu, 27 Nov 2025 06:36:52 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vOaIn-0002G0-Aq; Thu, 27 Nov 2025 06:36:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=JscUS58CUOZ3An4qZ4DA0eGTjKD8JhLFNlkgz7Hyj3w=; b=OvDM0pPlsVXJTCyNGqGk Wra0jOiqFel47/Y8Z6b8nrHj0y0+BwP+hb+IHs/RY1ybajZISmq3Sn/Fo17GOCf+a6ifnP9uOOhYs ZJB7pzoGH6LVsK0Cipb5ynlNyVKBDHZq+tvwPU48mBk+WQuYhD+woARSpAxaz/fiwAlw50E6Vy3vG SN0frKJsYvdA1tqrbFxNYvNzvVYmLg/Ulm+z62bLi9SuU21R/z8b0YTejd6t0Tk0Au7FV4EfPfJNE R/MUCtOeo8o5sr/8yx4FVat2OqmKoC/OtlOqeRCrJZ1LrQKzwaFZBrzTfp78PHH85vAYtVkklQB/c GeXZwBRNdG0W/w==; Date: Thu, 27 Nov 2025 13:36:43 +0200 Message-Id: <865xavbtbo.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: =?utf-8?Q?Bj=C3=B6rn?= Bidar <bjorn.bidar@HIDDEN> In-Reply-To: <87ikev7pv5.fsf@> (message from =?utf-8?Q?Bj=C3=B6rn?= Bidar on Thu, 27 Nov 2025 12:05:02 +0200) Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <87a508h9r7.fsf@HIDDEN> <86pl94auo1.fsf@HIDDEN> <87ikev7pv5.fsf@> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79859 Cc: shipmints@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Björn Bidar <bjorn.bidar@HIDDEN> > Cc: shipmints@HIDDEN, 79859 <at> debbugs.gnu.org > Date: Thu, 27 Nov 2025 12:05:02 +0200 > > Eli Zaretskii <eliz@HIDDEN> writes: > > >> Cc: 79859 <at> debbugs.gnu.org > >> Date: Wed, 26 Nov 2025 21:30:36 +0200 > >> From: Björn Bidar via "Bug reports for GNU Emacs, > >> the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN> > >> > >> > >> I very much like the idea but I don't agree with the term. The term > >> indicates that it has relation to docks, at least not directly. > >> > >> It's just a newer feature in regular taskbars. KDE for example similarly > >> to Unity calls it (Smart)Launcher. > >> > >> The only platform calls it Launcher is macOS I think. > >> > >> Another thing is: should these features be activated by one mode or > >> by one for each feature? I.e. similar as there's a mode for menubar and > >> toolbar. > > > > I would be okay with using "taskbar", but isn't that Windows-specific > > terminology? I do see "dock" used on the Internet where the relevant > > D-Bus based features are described. Can you point me to some pages > > which describe this as "taskbar" on GNU/Linux systems? > > KDE uses the term taskbar or panel for the thing the widget/plasmoid is > on: > https://docs.kde.org/stable5/en/plasma-desktop/plasma-desktop/panel.html#panel-taskbar > > The manual is for Plasma5 (the last manual published) but the > terminology is still current. > > GNOME doesn't use a taskbar anymore. > In XFCE it's called Tasklist or Window Buttons: > https://docs.xfce.org/xfce/xfce4-panel/tasklist > > This Wikipedia article on the term explains it/summarizes: > https://en.wikipedia.org/wiki/Taskbar > Tldr: the term is widely used outside of Windows, they established > it but has been adapted. Thanks. If this terminology is used widely enough, I think taskbar is indeed the best name to use.
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 27 Nov 2025 10:05:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 27 05:05:15 2025
Received: from localhost ([127.0.0.1]:35002 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vOYsF-0002Oz-4Q
for submit <at> debbugs.gnu.org; Thu, 27 Nov 2025 05:05:15 -0500
Received: from thaodan.de ([2a03:4000:4f:f15::1]:57804)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <bjorn.bidar@HIDDEN>)
id 1vOYsB-0002LL-MV
for 79859 <at> debbugs.gnu.org; Thu, 27 Nov 2025 05:05:13 -0500
Received: from odin (dsl-trebng12-b04887-216.dhcp.inet.fi [176.72.135.216])
by thaodan.de (Postfix) with ESMTPSA id B87F1D00112;
Thu, 27 Nov 2025 12:05:04 +0200 (EET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=thaodan.de; s=mail;
t=1764237904; bh=kK+JNa1seEqWHNsSOTXuGKxj+hG0L28yA+KtQysJIrs=;
h=From:To:Cc:Subject:In-Reply-To:References:Date;
b=KQN9MHhrFa7RvIkX6cEDYegkxis5wksfN2gVPHP7+cBiFw/VZietREOc2uYkS4icU
WyYMDHLT3/hfcpNQHvADNuR1JJ62HMg+kFljOV81VrlRaP+uKPdXAyqI+1DvRf/EST
80XVvOZzoliiGABbnRLA54W9BXaO7Nr6dn13V2Nzl6thVMHfWKtZDK4M5XR5c3S39K
R4KeAHO/T1Vazv+vyszl+SSY9mAUR3oJA6/5ZUX5VfA8YolHDHZvuiGmWU/BqlMyzr
1rqvJFy4r6LBRlkoaqV+hibfCGEFs6Z0BsepClaNusVIPbePBjHhn8NDMMdgPLqosX
vO+NGwSNyk8/5B2/udAkTbDny7VKZ6HiQ4Z+40DzhHwwJC+tWSU6uBTebwPqiQs8Ym
Fib6ZsC8if4qJpDQc18c0v13Htw8AVSWypwv2/pL+J7GaUpWeoLbZ60wG7iVJN4vLq
K2TVs8RyxFfebgSFMKHhMwfwCHeW9eA+Z81koqGz4FoXx2kaLttgv8S9eTv/OGNOsW
gZYcKsDC4WFw/vsdHRHX409PzaaHOPIQc1+dWVGd4MgFqEYQpufaZiY3x+zza48AvW
ifVW/Gn5Jst4SFYzHBKiRnlwobS2r9svKqCCSIPV4YCX1CnXgiu7MU14I6iVaXyEpK
a+hTQekStsjmIp6hX8rYrKSs=
From: =?utf-8?Q?Bj=C3=B6rn?= Bidar <bjorn.bidar@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
In-Reply-To: <86pl94auo1.fsf@HIDDEN>
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<87a508h9r7.fsf@HIDDEN> <86pl94auo1.fsf@HIDDEN>
Autocrypt: addr=bjorn.bidar@HIDDEN; prefer-encrypt=nopreference; keydata=
mDMEZNfpPhYJKwYBBAHaRw8BAQdACBEmr+0xwIIHZfIDlZmm7sa+lHHSb0g9FZrN6qE6ru60JUJq
w7ZybiBCaWRhciA8Ympvcm4uYmlkYXJAdGhhb2Rhbi5kZT6IlgQTFgoAPgIbAwULCQgHAgIiAgYV
CgkICwIEFgIDAQIeBwIXgBYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1/YmAhkBAAoJEFwbdKFl
HF9oB9cBAJoIIGQKXm4cpap+Flxc/EGnYl0123lcEyzuduqvlDT0AQC3OlFKm/OiqJ8IMTrzJRZ8
phFssTkSrrFXnM2jm5PYDoiTBBMWCgA7FiEEUfF263VHMB6nKairXBt0oWUcX2gFAmTX6T4CGwMF
CwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQXBt0oWUcX2hbCQEAtru7kvM8hi8zo6z9ux2h
K+B5xViKuo7Z8K3IXuK5ugwA+wUfKzomzdBPhfxDsqLcEziGRxoyx0Q3ld9aermBUccHtBxCasO2
cm4gQmlkYXIgPG1lQHRoYW9kYW4uZGU+iJMEExYKADsCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwEC
HgcCF4AWIQRR8XbrdUcwHqcpqKtcG3ShZRxfaAUCZNf2FQAKCRBcG3ShZRxfaCzSAP4hZ7cSp0YN
XYpcjHdsySh2MuBhhoPeLGXs+2kSiqBiOwD/TP8AgPEg/R+SI9GI9on7fBJJ0mp2IT8kZ2rhDOjg
gA6IkwQTFgoAOxYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1+ntAhsDBQsJCAcCAiICBhUKCQgL
AgQWAgMBAh4HAheAAAoJEFwbdKFlHF9oBgwA/iQHwe0VL4Df4GGTYlNjMSHFlIkBmN4UfYGLYj3E
TrOUAQC51M+M3cjsL8WHdpBz6VAo6df9d+rVwhQ9vQuFHqevArg4BGTX6T4SCisGAQQBl1UBBQEB
B0Cbohc3JEfn005/cm0AOGjSsW1ZxAkgaoVNjbpqk4MgNAMBCAeIeAQYFgoAIBYhBFHxdut1RzAe
pymoq1wbdKFlHF9oBQJk1+k+AhsMAAoJEFwbdKFlHF9ooHABAKGmrGBic/Vys3BBrOQiRB3Z7izO
HwhqTRpAqFZtXS2nAQDZhp/5aYw1TZjTzkm1KVt9QiYnjd/MvxRE9iaY6x4mDbgzBGTX6T4WCSsG
AQQB2kcPAQEHQAgRJq/tMcCCB2XyA5WZpu7GvpRx0m9IPRWazeqhOq7uiO8EGBYKACAWIQRR8Xbr
dUcwHqcpqKtcG3ShZRxfaAUCZNf71AIbIgCBCRBcG3ShZRxfaHYgBBkWCgAdFiEEUfF263VHMB6n
KairXBt0oWUcX2gFAmTX+9QACgkQXBt0oWUcX2jeSwD6AtWn0cuo8IF35YRo4o3cDRJnUfJnbvJy
GxyCDThR+zYBAKG6/jdwmZkBQZKslnDAbMMd2WfiZZT5JW3IWC4EaKMO7HkBAKYPGZ3UbfkRvfFK
S+pQ9CgtNfkSJQBtT1Ob7Y6nsacgAQCpyXN7yppmhW/oBgivITPy9Lkg+V4NK9WZYZCU9Q7LBA==
Date: Thu, 27 Nov 2025 12:05:02 +0200
Message-ID: <87ikev7pv5.fsf@>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 1.2 (+)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: Eli Zaretskii <eliz@HIDDEN> writes: >> Cc: 79859 <at> debbugs.gnu.org
>> Date: Wed, 26 Nov 2025 21:30:36 +0200 >> From: Björn Bidar via "Bug reports
for GNU Emacs, >> the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN>
>> >> >> I [...]
Content analysis details: (1.2 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
-0.0 SPF_HELO_PASS SPF: HELO matches SPF record
-0.0 SPF_PASS SPF: sender matches SPF record
1.2 INVALID_MSGID Message-Id is not valid, according to RFC 2822
X-Debbugs-Envelope-To: 79859
Cc: shipmints@HIDDEN, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 0.2 (/)
Eli Zaretskii <eliz@HIDDEN> writes:
>> Cc: 79859 <at> debbugs.gnu.org
>> Date: Wed, 26 Nov 2025 21:30:36 +0200
>> From: Bj=C3=B6rn Bidar via "Bug reports for GNU Emacs,
>> the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN>
>>=20
>>=20
>> I very much like the idea but I don't agree with the term. The term
>> indicates that it has relation to docks, at least not directly.
>>=20
>> It's just a newer feature in regular taskbars. KDE for example similarly
>> to Unity calls it (Smart)Launcher.
>>=20
>> The only platform calls it Launcher is macOS I think.
>>=20
>> Another thing is: should these features be activated by one mode or
>> by one for each feature? I.e. similar as there's a mode for menubar and
>> toolbar.
>
> I would be okay with using "taskbar", but isn't that Windows-specific
> terminology? I do see "dock" used on the Internet where the relevant
> D-Bus based features are described. Can you point me to some pages
> which describe this as "taskbar" on GNU/Linux systems?
KDE uses the term taskbar or panel for the thing the widget/plasmoid is
on:
https://docs.kde.org/stable5/en/plasma-desktop/plasma-desktop/panel.html#pa=
nel-taskbar
The manual is for Plasma5 (the last manual published) but the
terminology is still current.
GNOME doesn't use a taskbar anymore.
In XFCE it's called Tasklist or Window Buttons:
https://docs.xfce.org/xfce/xfce4-panel/tasklist
This Wikipedia article on the term explains it/summarizes:
https://en.wikipedia.org/wiki/Taskbar
Tldr: the term is widely used outside of Windows, they established
it but has been adapted.
> "Smart Launcher" sounds wrong for us to use, because this is not about
> launching programs, it's about displaying indications on the part of
> the desktop that is used for launching programs. I'm guessing KDE
> uses that term because of the emphasis on that latter functionality,
> but it is not relevant for the Emacs features we want to add here.
The information is tied to application launcher/taskbar entry (for some
taskbar such as KDE or Unity they can be the same. As you pin the
application similar as in Window which then uses one entry for the
shortcut to launch the application and as well the entry of the running
application. Which is why smart "launcher" makes sense.
The progress report is tied to the launcher in this case, the other
option for a progress report is tied to the notification reporting on
the action. For example if a user copies files in a a file manager,
this requires asynchronous operation thou, e.g. in case of Emacs
dired-async since you need to be able to do the action and report on it
at the same time.
> We could also think about more general terms, like "gui-desktop" or
> maybe "gui-screen", in which case we could later add more features
> that pertain to various system features which affect how Emacs-related
> windows and icons are shown on typical modern GUI terminals.
All of these are tied to the launcher, gui screen or desktop doesn't
make sense, this would only increase ambiguity . I think I know
what you mean with GUI terminals but where is this lingo used? I haven't
seen the word used anywhere, searching for it results in graphical
terminal emulators.
> Thanks.
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 27 Nov 2025 05:53:15 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 27 00:53:15 2025 Received: from localhost ([127.0.0.1]:33328 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vOUwM-00026j-NS for submit <at> debbugs.gnu.org; Thu, 27 Nov 2025 00:53:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36906) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vOUwJ-00026G-Ec for 79859 <at> debbugs.gnu.org; Thu, 27 Nov 2025 00:53:12 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vOUwD-0006mH-Nm; Thu, 27 Nov 2025 00:53:05 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=QuzNstTU9D5u14JMno75suMe5+2JQy4Zwi12BBXqzuk=; b=ZRH+YkiOO1+IYMCdRUPh kB19XJ76jHm9r9NTsaxDPg6aUD6jMWp27YE3+4EafAPzHJ8BLMjSGKS3j8JexTKRY/dnuJJM0oZ0k sryVqBWJoTTrY+7rSwiN1KWtiNwQbYH9mAuO2SXxqwKDeyT2vI6aSItto9pAP91Wb+22tB116JWZb wKqwsAyW5lykT0IDuwli/UC37aTMWAW7v/m2n8bsROhTmvmKK80/QXwSRZi1/eC72SonDkL27DNHb ZXwto+a1ZZByuVn1R1Sb0++OnTr/Bjbu8GQ1B/u3SSzGCIs8NJISDydvEP/NcSjTadFRpM9gEfv9R /abe4A96EGHR0g==; Date: Thu, 27 Nov 2025 07:53:02 +0200 Message-Id: <86pl94auo1.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: =?utf-8?Q?Bj=C3=B6rn?= Bidar <bjorn.bidar@HIDDEN> In-Reply-To: <87a508h9r7.fsf@HIDDEN> (bug-gnu-emacs@HIDDEN) Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> <87a508h9r7.fsf@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79859 Cc: shipmints@HIDDEN, 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > Cc: 79859 <at> debbugs.gnu.org > Date: Wed, 26 Nov 2025 21:30:36 +0200 > From: Björn Bidar via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN> > > > I very much like the idea but I don't agree with the term. The term > indicates that it has relation to docks, at least not directly. > > It's just a newer feature in regular taskbars. KDE for example similarly > to Unity calls it (Smart)Launcher. > > The only platform calls it Launcher is macOS I think. > > Another thing is: should these features be activated by one mode or > by one for each feature? I.e. similar as there's a mode for menubar and > toolbar. I would be okay with using "taskbar", but isn't that Windows-specific terminology? I do see "dock" used on the Internet where the relevant D-Bus based features are described. Can you point me to some pages which describe this as "taskbar" on GNU/Linux systems? "Smart Launcher" sounds wrong for us to use, because this is not about launching programs, it's about displaying indications on the part of the desktop that is used for launching programs. I'm guessing KDE uses that term because of the emphasis on that latter functionality, but it is not relevant for the Emacs features we want to add here. We could also think about more general terms, like "gui-desktop" or maybe "gui-screen", in which case we could later add more features that pertain to various system features which affect how Emacs-related windows and icons are shown on typical modern GUI terminals. Thanks.
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at 79859) by debbugs.gnu.org; 26 Nov 2025 19:30:48 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 26 14:30:48 2025 Received: from localhost ([127.0.0.1]:56576 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vOLE0-0007xi-3b for submit <at> debbugs.gnu.org; Wed, 26 Nov 2025 14:30:48 -0500 Received: from thaodan.de ([2a03:4000:4f:f15::1]:36902) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <bjorn.bidar@HIDDEN>) id 1vOLDw-0007xE-S9 for 79859 <at> debbugs.gnu.org; Wed, 26 Nov 2025 14:30:46 -0500 Received: from NordStern (mobile-access-2e8443-220.dhcp.inet.fi [46.132.67.220]) by thaodan.de (Postfix) with ESMTPSA id 7E560D00098; Wed, 26 Nov 2025 21:30:37 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=thaodan.de; s=mail; t=1764185437; bh=2S/8nK7RJLjfjlQman5mEnI9cNIyCx1XAUOGoj4g/Cs=; h=From:To:Cc:Subject:In-Reply-To:References:Date; b=PyHMQ258Yt4Ep0TWHPXfUzf7jV3k7MrEiXyYPVrSTzXVRS6iB4Ese5bgKEfUNz5/a y+26C44gaWAhLJ7F+uZJIqlzg/cUHePf8ZV3z0Yslnj75zg9K+uzPHeUAGjFmmHZ98 zMucu4uA1AHI2K8vi0Ck0KBIpm+k7+MnSCvyWTI7X8Y7lyBTKTgbBjUuf860CmTUyu Tx1cEilYrNjNyok46ugoxdu+dajM6niL+fBwWKvkyDNUZs3L0Q0FPmEWo36GAud/xW D/jVZ67JoxZwpXTE+c6gut6IQO8Thgr8vHgXSjmq0So9+HrFQe7ohxqP7QwHHhshQ5 icl1aqQtMPeWyHfBQqUbJoLJd5yOgPWfM8F4BQRQ7aWgrzQZaEKi6zXFUelOGGZVhI sHNV75HSCdSYhU57t0gbTtCfMRExTKbFbc5Gp1nZ7HajdBdFY7ikDs2dTFCahhG0X3 3FN3BufIzPt0H4KyTDb21Z0KCY743RQP08B1w1kUqvqcTWBvh0rZHAkJXn2MPI2Wtw 3sSySQveqctpvX6m6Sc0etLMvZhxWIm5AvcyDxAWD8JBXF+iGEyYUIGbLU7SNOn/ss UA8PNvQMZxxF9aeuwghj/wJArr5eJLE2aBY3Z2ilr6zsUXW87vkPjvLpkmTZg2PBfi tkpmuGWo9XLh8yn6pkEH54QA= From: =?utf-8?Q?Bj=C3=B6rn?= Bidar <bjorn.bidar@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support In-Reply-To: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> Autocrypt: addr=bjorn.bidar@HIDDEN; prefer-encrypt=nopreference; keydata= mDMEZNfpPhYJKwYBBAHaRw8BAQdACBEmr+0xwIIHZfIDlZmm7sa+lHHSb0g9FZrN6qE6ru60JUJq w7ZybiBCaWRhciA8Ympvcm4uYmlkYXJAdGhhb2Rhbi5kZT6IlgQTFgoAPgIbAwULCQgHAgIiAgYV CgkICwIEFgIDAQIeBwIXgBYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1/YmAhkBAAoJEFwbdKFl HF9oB9cBAJoIIGQKXm4cpap+Flxc/EGnYl0123lcEyzuduqvlDT0AQC3OlFKm/OiqJ8IMTrzJRZ8 phFssTkSrrFXnM2jm5PYDoiTBBMWCgA7FiEEUfF263VHMB6nKairXBt0oWUcX2gFAmTX6T4CGwMF CwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQXBt0oWUcX2hbCQEAtru7kvM8hi8zo6z9ux2h K+B5xViKuo7Z8K3IXuK5ugwA+wUfKzomzdBPhfxDsqLcEziGRxoyx0Q3ld9aermBUccHtBxCasO2 cm4gQmlkYXIgPG1lQHRoYW9kYW4uZGU+iJMEExYKADsCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwEC HgcCF4AWIQRR8XbrdUcwHqcpqKtcG3ShZRxfaAUCZNf2FQAKCRBcG3ShZRxfaCzSAP4hZ7cSp0YN XYpcjHdsySh2MuBhhoPeLGXs+2kSiqBiOwD/TP8AgPEg/R+SI9GI9on7fBJJ0mp2IT8kZ2rhDOjg gA6IkwQTFgoAOxYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1+ntAhsDBQsJCAcCAiICBhUKCQgL AgQWAgMBAh4HAheAAAoJEFwbdKFlHF9oBgwA/iQHwe0VL4Df4GGTYlNjMSHFlIkBmN4UfYGLYj3E TrOUAQC51M+M3cjsL8WHdpBz6VAo6df9d+rVwhQ9vQuFHqevArQrQmrDtnJuIEtldHR1bmVuIDxi am9ybi5rZXR0dW5lbkB0aGFvZGFuLmRlPoiTBBMWCgA7FiEEUfF263VHMB6nKairXBt0oWUcX2gF Amgtj9ECGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQXBt0oWUcX2hXyQD9GUEnX2eJ IOaiqTV4rz5l7N879tkdKjw1cD9FanRkb8AA/RcF03ZGqpJHYPHL3+hdl/yR/toLw7wcoaDWrw4n 2FsHtCdCasO2cm4gS2V0dHVuZW4gPGIua2V0dHVuZW5AdGhhb2Rhbi5kZT6IkwQTFgoAOxYhBFHx dut1RzAepymoq1wbdKFlHF9oBQJoLZAYAhsDBQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJ EFwbdKFlHF9oNbMBAP3uTGa26DW/QXHyZgY3ldOmWHTsRz3uyQxiyU1r+CKIAP94DHA3fEMtHKby G0/Jqp5ZhW8xSQGTGijHYCue/e5+Arg4BGTX6T4SCisGAQQBl1UBBQEBB0Cbohc3JEfn005/cm0A OGjSsW1ZxAkgaoVNjbpqk4MgNAMBCAeIeAQYFgoAIBYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk 1+k+AhsMAAoJEFwbdKFlHF9ooHABAKGmrGBic/Vys3BBrOQiRB3Z7izOHwhqTRpAqFZtXS2nAQDZ hp/5aYw1TZjTzkm1KVt9QiYnjd/MvxRE9iaY6x4mDbgzBGTX6T4WCSsGAQQB2kcPAQEHQAgRJq/t McCCB2XyA5WZpu7GvpRx0m9IPRWazeqhOq7uiO8EGBYKACAWIQRR8XbrdUcwHqcpqKtcG3ShZRxf aAUCZNf71AIbIgCBCRBcG3ShZRxfaHYgBBkWCgAdFiEEUfF263VHMB6nKairXBt0oWUcX2gFAmTX +9QACgkQXBt0oWUcX2jeSwD6AtWn0cuo8IF35YRo4o3cDRJnUfJnbvJyGxyCDThR+zYBAKG6/jdw mZkBQZKslnDAbMMd2WfiZZT5JW3IWC4EaKMO7HkBAKYPGZ3UbfkRvfFKS+pQ9CgtNfkSJQBtT1Ob 7Y6nsacgAQCpyXN7yppmhW/oBgivITPy9Lkg+V4NK9WZYZCU9Q7LBA== Date: Wed, 26 Nov 2025 21:30:36 +0200 Message-ID: <87a508h9r7.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 79859 Cc: 79859 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) I very much like the idea but I don't agree with the term. The term indicates that it has relation to docks, at least not directly. It's just a newer feature in regular taskbars. KDE for example similarly to Unity calls it (Smart)Launcher. The only platform calls it Launcher is macOS I think. Another thing is: should these features be activated by one mode or by one for each feature? I.e. similar as there's a mode for menubar and toolbar.
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 25 Nov 2025 20:22:14 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 25 15:22:14 2025
Received: from localhost ([127.0.0.1]:41865 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vNzYD-00012i-EQ
for submit <at> debbugs.gnu.org; Tue, 25 Nov 2025 15:22:14 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:40388)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vN4jS-0004mk-MM
for 79859 <at> debbugs.gnu.org; Sun, 23 Nov 2025 02:42:04 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
id 1vN4jB-00065I-Cl; Sun, 23 Nov 2025 02:41:45 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
Date; bh=5GYzW3hJ/yYuB5L0ltxzXs4gzWIr4s9yhvhE33fhAZQ=; b=T9q3k7v3EttKrDFVZM5Q
v5o0MVdsGlu/qejkbqvvebmLVUG1COSO7e2s7KyTTuFnySq7obTpu2Jhav493t6guflqAsAurMDNW
w8I2RpWIZHHnhEGAVzsLJS6aTtZU+WRxvVc0UdHskWf3jyGS4WNi1cpDqwdSaH+e3KeVFW2r/LtTL
EL48DC7ub6CgbdiJ/+6QlLBqR0sLpjqfvBjVhrz0HAM8zIq4ck5NBXaM+woC7mpAYDUtAYCam0oMO
ZWF8bLa+34o+vqUG449kgEc+wtxv4yJE/Sk2vqRgL/JQMXBATn9y5tT7rJb5CFB3N7DYvUp/5cYK2
F1act8GKdpCVbw==;
Date: Sun, 23 Nov 2025 09:41:36 +0200
Message-Id: <86see5dwlr.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>
In-Reply-To: <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
(message from =?utf-8?Q?St=C3=A9phane?= Marks on Fri, 21 Nov 2025 12:00:03
-0500)
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<86bjkxhuca.fsf@HIDDEN>
<CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> From: Stéphane Marks <shipmints@HIDDEN>
> Date: Fri, 21 Nov 2025 12:00:03 -0500
> Cc: 79859 <at> debbugs.gnu.org, bjorn.bidar@HIDDEN
>
> I wanted to test this on MS-Windows, but the w32fns.c patch failed to
> apply to the master branch, even if I use --ignore-whitespace option
> to "git apply". Could you please rebase on the current master and
> post an updated patch?
>
> Please try the attached patch.
It compiles now, thanks. I needed a small patch on top, to make it
compile with mingw.org's MinGW:
--- src/w32fns.c.orig 2025-11-23 08:11:59.786870000 +0200
+++ src/w32fns.c 2025-11-23 09:13:26.937525200 +0200
@@ -11031,6 +11031,12 @@ Return -1 if the required system API is
/* Track the window handle for the global badge icon. */
static HWND w32_badge_hwnd = NULL;
+#ifndef MINGW_W64
+ /* mingw.org's MinGW doesn't have this stuff. */
+ DEFINE_GUID(CLSID_TaskbarList, 0x56fdf344, 0xfd6d, 0x11d0, 0x95,0x8a, 0x00,0x60,0x97,0xc9,0xa0,0x90);
+ DEFINE_GUID(IID_ITaskbarList3, 0xea1afb91, 0x9e28, 0x4b86, 0x90,0xe9, 0x9e,0x9f,0x8a,0x5e,0xef,0xaf);
+#endif
+
DEFUN ("w32-badge",
Fw32_badge,
Sw32_badge,
> > * lisp/dock-mode.el: New file.
>
> First, the name of the mode and related symbols: I find the name
> "dock" to be problematic, as it seems to be well-known to macOS users
> and maybe also to some users of GNU/Linux desktops, but might be
> unknown to others. Also, "dock" has multiple meanings, which might be
> confusing. I would prefer something like dock-taskbar-* instead, or
> maybe gui-dock-*, or even gui-desktop-* (if we envision more features
> being added to this in the future). I'm also open to other ideas
> about better naming this class of features.
>
> I have no strong opinion on this other than I thought the scope would be best limited to "dock" features. If
> you can envision other "desktop" features to add (and we can avoid any confusion with desktop.el), I'm
> happy to call it whatever we want. If there are things you'd like to see sooner than later, I can take a stab at
> those if the scope is on the small side.
I suggest to call the new Lisp file dock-taskbar.el, and rename the
functions accordingly.
> > +@defvar dock-dbus-timeout-ms
> > +The variable @code{dock-dbus-timeout-ms} applies on GNU/Linux D-Bus
> > +systems, and can be customized to specify the number of milliseconds
> > +Emacs will wait for D-Bus responses before timing out and considering
> > +messages undeliverable. It defaults to 25000 milliseconds, which is the
> > +recommended default by the D-Bus package, which see, @pxref{Top,,, dbus,
> > +D-Bus integration in Emacs}.
>
> This doesn't seem to be a user-level option, at least not an important
> one. I presume that the default is fine for almost all uses, and the
> option only needs customization when troubleshooting.
>
> This is a default hard coded in `dbus-call-method` and I thought it best to raise it up for this package as it is
> something people may have trouble with, even if unlikely, and we need to pass the timeout downstream.
If this is a troubleshooting issue, then the text should be rephrased
accordingly. It should begin with the description of a possible
problem (what happens if the value is not correct), and then describe
customizing this variable as a solution.
> > +@findex dock-badge
> > +@defun dock-badge &optional count-or-string
> > +Set the dock icon badge to @var{count-or-string}. If
> > +@var{count-or-string} is @code{nil}, clear the badge.
>
> I'm missing here the description of where will the badge appear if
> Emacs has several visible frames. Will the badge appear on all of
> them? only one? something else?
>
> On GNU/Linux and NS, there is only a single dock icon for the Emacs process. It's on w32 that things get
> more complex as Windows has options to collapse or not multiple frames into a group or not. I thought it
> best for now to unify the behavior to keep it simple and stick to a single badge per process rather than
> introduce complexity in the API for all platforms.
OK, but still, some kind of general description should be there. Not
everyone knows what these badges are, where to look for them on the
desktop, and what to expect from their appearance.
> > +(cl-defgeneric dock-badge (&optional count-or-string)
> > + "Set the dock icon badge to COUNT-OR-STRING.
> > +If COUNT-OR-STRING is an integer, display that as the icon badge.
> > +If COUNT-OR-STRING is a string on back ends which do not support
> > +strings, convert COUNT-OR-STRING to an integer, or nil.
> > +If COUNT-OR-STRING is nil, or is an empty string, remove the counter.")
>
> If a string is converted to nil, will that remove the counter?
>
> Yes, in the dbus implementation "Set badge to COUNT-OR-STRING if an integer, otherwise use nil.
> The Unity protocol does not support string badges."
This should be in the doc string.
Also, I think the doc string and the manual should emphasize that this
is designed to display a numerical string as the badge, so
COUNT-OR-STRING should represent a number. I would even rename it to
COUNT, and document that it could be either a number or a string
representation of a number.
> > @@ -38,6 +38,10 @@ #define COBJMACROS /* Ask for C definitions for COM. */
> > #include <shlobj.h>
> > #include <oleidl.h>
> > #include <objidl.h>
> > +#if !defined MINGW_W64 && !defined CYGWIN
> > +# define INITGUID
> > +#endif
>
> I don't understand this: why only MINGW_W64? does this code work only
> in 64bit builds or something?
>
> And why define INITGUID to nothing?
>
> I blindly copied this from w32dwrite.c. Including <shobjidl.h> does require that we include <initguid.h> to get
> the key COM interface defined that we need (I've removed the private copy after testing on mingw).
OK, but still: why is INITGUID defined only when !MINGW_W64? Is
something above specific to MinGW64?
> > +#ifndef IID_ITaskbarList3
> > +DEFINE_GUID(IID_ITaskbarList3, 0xea1afb91, 0x9e28, 0x4b86, 0x90,0xe9,
> 0x9e,0x9f,0x8a,0x5e,0xef,0xaf);
>
> Please add a comment here explaining what these constants are and what
> is their effect. Or maybe these constants are required by Windows to
> be that and only that? This should be documented, preferably with a
> reference.
>
> I got this to compile just fine on mingw so I removed this magic.
Turns out mingw.org still needs this, see above.
> Also, does this mean we can only have a single badge on display at any
> given time?
>
> Yes. The goal was to unify a simple API and behaviors across platforms.
>
> And what happens if the frame corresponding to this
> handle is deleted?
>
> This w32 API is documented to ignore an invalid window handle.
What I see is that when the frame is deleted, the badge stays, and can
be removed from any other frame. This is true even if the original
frame belonged to a different Emacs session, which meanwhile exited.
> The earliest supported version is Windows 7.
The NEWS entry should then say something like "on capable systems", to
reflect the fact that not all supported systems will have this.
> +(cl-defgeneric dock-badge (&optional count-or-string)
> + "Set the dock icon badge to COUNT-OR-STRING.
> +If COUNT-OR-STRING is an integer, display that as the icon badge.
> +If COUNT-OR-STRING is a string on back ends which do not support
> +strings, convert COUNT-OR-STRING to an integer, or nil.
> +If COUNT-OR-STRING is nil, or is an empty string, remove the counter.")
Thanks again for working on this.
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 25 Nov 2025 20:17:07 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 25 15:17:06 2025
Received: from localhost ([127.0.0.1]:55369 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vNzTF-0005Ev-V5
for submit <at> debbugs.gnu.org; Tue, 25 Nov 2025 15:17:06 -0500
Received: from mail-ua1-x92f.google.com ([2607:f8b0:4864:20::92f]:50571)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1vMUUy-0001PS-Nx
for 79859 <at> debbugs.gnu.org; Fri, 21 Nov 2025 12:00:40 -0500
Received: by mail-ua1-x92f.google.com with SMTP id
a1e0cc1a2514c-932e6d498b2so1350553241.1
for <79859 <at> debbugs.gnu.org>; Fri, 21 Nov 2025 09:00:40 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1763744433; x=1764349233; darn=debbugs.gnu.org;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:from:to:cc:subject:date:message-id:reply-to;
bh=OLnSIhQzRQMHlwd8x1zXKAurbV5AiUpI7kzPmZx2P6Y=;
b=PK8uRXsNYZ5lzPUpQsTBbKepda2gWJR94Yk+5Exb832zn51B7r0u+xRJ+JQfwl39KQ
7acYfeHvteLYfndgG0GWvbDZ6JJzR+R3zKXE2OsM2cyHMDiyxyYMwvXDjLTcpocRtScV
b6wUqV/CqwDlo3SrH5bvLEeTl0cIbEo/yCTCc/qZOy++4tKFIrCrPaMFk/+LOAnaeNg8
vkVyNjfEyMIhXmgzmONWlyw42cFU2Z0aaySuqTN5U0Yuh3RE19iQBtQ5ygZ/78eV0MXt
dMoW5WJaMga0A19M/I0dQ60rOBEMWCv6/c9IGPjRkad5qCDvO1fMXUT0DCgPo/lE+x/Z
SrVQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1763744433; x=1764349233;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=OLnSIhQzRQMHlwd8x1zXKAurbV5AiUpI7kzPmZx2P6Y=;
b=Rfz9G1tiPINqvZD0kxm+r7dkxxY4yvntspin56nt66U04RJOhF8zmMXBPWLs4Tb40C
sYia5vA8uM4uYQHojKMLUO3KuABHtGWsTIikjjn34gbpnjISOJqFkpsvu3DCz2tiXNlI
w5xKR9TWPDOSk/+ZMdIMxFhPsTdMnhNi1wRqZZwviInSv3jzn959SPghmdsB+GUhYcOl
aWckN6gGYtZ3mvD+1Lrq2TslG2GlZbKr9PiocaEHblaezFqe9opG5mv5axaZka6xM9Hx
d3AAobaYeL4pMQyNoL8w3i171K2apRt138PuaVTf0QGThBQ05Nd/6Kn4kSilu8KBWqlB
29Ig==
X-Gm-Message-State: AOJu0YyZ/CwxW6WUwJXcL9tfPzuiJ2931hS96PKrJJEl9cwu36kBfqRc
BJeTEArGEs1yjo6x80qF5WxGgog7oFnVi3uIHzeCuUEIBtXZBJY6nPF6xJ28O80+gv1Oavh3kYA
IxCPWOUMW2+NOwd6RX/wNyHIBpywfuY9Ywacj
X-Gm-Gg: ASbGncuTSjXY4/ypZsqQN4bTmOtgOZdB0KEY7gfwzCsZqNBvM+YWSQ5/9egdWr2ocWm
dEqBeug9Hmha6Uub1qxrQuUWG3FmQM7QGYz0cUmqBvPrnPsQv4/nDAFoq0zlie8Ua7yx9nf6J4Y
DZjfi9UgZI9S5V2CXF/wO9AownRtwLkx/O/i4ToSdueuKLc4ZUFvELiw1Hb5DjJiRy5Df4Jbn70
DVn8kNmaTTXkbrbN/DDKjnFGM4jyagMXCekpzIuFy/pnz8Q+kKMz0zO6lV/PRuTFrFlsEk=
X-Google-Smtp-Source: AGHT+IH+5AeNxBFx3KUg3X/SWTnibRXqGFajBHjwym1SYIsD8NAnDAmABXIvajvE1l4l2uA77lriQP9NuK27gvaAX+U=
X-Received: by 2002:a05:6102:3e0a:b0:5dd:8991:d761 with SMTP id
ada2fe7eead31-5e1de166a0bmr1001327137.8.1763744431144; Fri, 21 Nov 2025
09:00:31 -0800 (PST)
MIME-Version: 1.0
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
<86bjkxhuca.fsf@HIDDEN>
In-Reply-To: <86bjkxhuca.fsf@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Fri, 21 Nov 2025 12:00:03 -0500
X-Gm-Features: AWmQ_bnR8luHOHe06j04pEpYkBhoiNZ5Fj8cXMt7I-yYS9IB8n32ZAuVI9QTg9w
Message-ID: <CAN+1HbqXr9krMs2BuGyQQ4R2BqoeC_r0u7gfM8=Z0ehqsqJ6xg@HIDDEN>
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/mixed; boundary="0000000000004b241006441dc01c"
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
--0000000000004b241006441dc01c
Content-Type: multipart/alternative; boundary="0000000000004b240e06441dc01a"
--0000000000004b240e06441dc01a
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Thank you for reviewing the patch and your thoughtful feedback. I'll
incorporate more feedback after you get it compiled and you give it a try,
and perhaps other people, too. My Windows 11 virtual machine is less than
a real-world Windows set up, though sufficient for developing this feature.
I've attached a patch rebased on master
2cc6c812788281c05ca9687afd7bedf597b1e942
which also incorporates your feedback.
Responses interspersed below.
On Thu, Nov 20, 2025 at 5:27=E2=80=AFAM Eli Zaretskii <eliz@HIDDEN> wrote:
> > Cc: Bj=C3=B6rn Bidar <bjorn.bidar@HIDDEN>
> > From: St=C3=A9phane Marks <shipmints@HIDDEN>
> > Date: Tue, 18 Nov 2025 14:17:45 -0500
> >
> > This patch implements system GUI dock features for icon badges, icon
> progress indicator, and icon attention
> > request with implementations for GNU/Linux KDE & GNOME, NS/macOS, and
> MS-Windows.
>
> Thank you for working on this important feature.
>
> > GNU/Linux shells need to use an extension or include built-in support
> for the protocol documented here
> > https://wiki.ubuntu.com/Unity/LauncherAPI. I tested using this
> "standard" shell extension
> > https://extensions.gnome.org/extension/307/dash-to-dock/ on GNOME and
> assistance and testing on KDE
> > from the reddit user GeneAutomatic3471.
>
> This information should be in the NEWS entry.
>
Done.
> I'd appreciate thoughtful feedback, and of course, testing.
>
> I wanted to test this on MS-Windows, but the w32fns.c patch failed to
> apply to the master branch, even if I use --ignore-whitespace option
> to "git apply". Could you please rebase on the current master and
> post an updated patch?
>
Please try the attached patch.
So the below comments are based on reading the patch and nothing else.
>
> > From f1c4bbf07a4b1c0cb5867412ecf2074bfc3e37e1 Mon Sep 17 00:00:00 2001
> > From: =3D?UTF-8?q?St=3DC3=3DA9phane=3D20Marks?=3D <shipmints@HIDDEN>
> > Date: Sat, 8 Nov 2025 13:30:37 -0500
> > Subject: [PATCH] Add system GUI dock integration.
> >
> > Implement system GUI dock icon badge, icon progress indicator,
> > icon attention alert features for D-Bus platforms (tested on KDE
> > and GNOME), NS (GNUstep/macOS), Microsoft Windows.
> >
> > * lisp/dock-mode.el: New file.
>
> First, the name of the mode and related symbols: I find the name
> "dock" to be problematic, as it seems to be well-known to macOS users
> and maybe also to some users of GNU/Linux desktops, but might be
> unknown to others. Also, "dock" has multiple meanings, which might be
> confusing. I would prefer something like dock-taskbar-* instead, or
> maybe gui-dock-*, or even gui-desktop-* (if we envision more features
> being added to this in the future). I'm also open to other ideas
> about better naming this class of features.
>
I have no strong opinion on this other than I thought the scope would be
best limited to "dock" features. If you can envision other "desktop"
features to add (and we can avoid any confusion with desktop.el), I'm happy
to call it whatever we want. If there are things you'd like to see sooner
than later, I can take a stab at those if the scope is on the small side.
> > diff --git a/doc/misc/dock-mode.texi b/doc/misc/dock-mode.texi
> > new file mode 100644
> > index 00000000000..71358c09b7e
> > --- /dev/null
> > +++ b/doc/misc/dock-mode.texi
>
> I don't think this should be a separate Info file. Instead, we should
> split this information into a user-level part and Lisp-programmer
> level part, and have the former in the user manual and the latter in
> the ELisp reference. Most of the Texinfo documentation you wrote
> naturally belongs to the latter category.
>
> A separate Info manual has a significant disadvantage that it is not
> part of the two main manuals, and is thus harder to discover.
>
I'll tackle documentation feedback later after some more testing, and
renaming if we do that.
> +@node Overview
> > +@chapter Overview
> > +
> > +The Dock package provides integration with these system GUI dock
> > +features:
>
> This should start by explaining what is a "GUI dock". It is an
> obscure term that is unlikely to be widely known, IME.
>
> > +Your GNU/Linux Emacs instance should be launched via an appropriate
> > +shell "desktop" file such as those distributed with Emacs; e.g.,
> > +"etc/emacsclient.desktop".
>
> File names should have the @file markup, instead of quoting them (here
> and elsewhere in the patch).
>
> > +@node User Options
> > +@chapter User Options
>
> This node should go to the Emacs user manual. But it should begin by
> describing the features in user-facing terms: what will the user see
> for each aspect of the mode: how badges look, what is "attention
> indicator", etc. This stuff is unlikely to be well-known to users,
> and without that, the following description of user options makes very
> little sense.
>
> > +@defvar dock-dbus-desktop-file-name
> > +The variable @code{dock-dbus-desktop-file-name} applies on GNU/Linux
> > +D-Bus systems, and can be customized to indicate which desktop file na=
me
> > +D-Bus will use to identify your Emacs instance. It defaults to the
> > +desktop file base name @code{"emacsclient"} and might need to be set t=
o
> > +@code{"emacs"} on your system. Installed Emacs builds typically inclu=
de
> > +default desktop files for both, and are called
> > +@code{"emacsclient.desktop"} and @code{"emacs.desktop"}, respectively.
> > +@end defvar
>
> Do users frequently need to customize this? If in most cases this
> doesn't need to be customized, we don't need to mention the option in
> the manual.
>
Sadly, the testing on both KDE and GNOME indicated the default distro
Emacsen use one or the other (and I can't now remember which is which), so
people have had to use both values I documented.
> +@defvar dock-dbus-timeout-ms
> > +The variable @code{dock-dbus-timeout-ms} applies on GNU/Linux D-Bus
> > +systems, and can be customized to specify the number of milliseconds
> > +Emacs will wait for D-Bus responses before timing out and considering
> > +messages undeliverable. It defaults to 25000 milliseconds, which is t=
he
> > +recommended default by the D-Bus package, which see, @pxref{Top,,, dbu=
s,
> > +D-Bus integration in Emacs}.
>
> This doesn't seem to be a user-level option, at least not an important
> one. I presume that the default is fine for almost all uses, and the
> option only needs customization when troubleshooting.
>
This is a default hard coded in `dbus-call-method` and I thought it best to
raise it up for this package as it is something people may have trouble
with, even if unlikely, and we need to pass the timeout downstream.
> > +@node Function Reference
> > +@chapter Function Reference
> > +
> > +@findex dock-mode
> > +@defun dock-mode
> > +@code{dock-mode} must be enabled before calling any of its functions, =
to
> > +initialize the system back end. On GNU/Linux D-Bus, initialization wi=
ll
> > +test that the D-Bus dock protocol is established, and signal an error =
if
> > +it is not.
> > +@end defun
>
> This mode, and the description of GUI features it activates, should in
> the user manual.
>
> > +@findex dock-badge
> > +@defun dock-badge &optional count-or-string
> > +Set the dock icon badge to @var{count-or-string}. If
> > +@var{count-or-string} is @code{nil}, clear the badge.
>
> I'm missing here the description of where will the badge appear if
> Emacs has several visible frames. Will the badge appear on all of
> them? only one? something else?
>
On GNU/Linux and NS, there is only a single dock icon for the Emacs
process. It's on w32 that things get more complex as Windows has options
to collapse or not multiple frames into a group or not. I thought it best
for now to unify the behavior to keep it simple and stick to a single badge
per process rather than introduce complexity in the API for all platforms.
> +If a string is specified on back ends which do not support strings, it
> > +is converted to an integer, if possible, or to nil. GNUstep and macOS
> > +support string badges, the GNU/Linux D-Bus protocol supports only
> > +integers; any string that cannot be converted to integer will be treat=
ed
> > +as @code{nil}.
>
> This describes the implementation, but says nothing about the effect.
> What would be displayed when a string is converted to an integer (and
> how can an arbitrary string be converted to a number anyway)?
> Depending on the answers to those questions, it is possible that we
> don't have to mention the specific systems and backends.
>
> > +@findex dock-attention
> > +@defun dock-attention &optional urgency timeout
>
> There's no need to have @findex for a @defun (here and elsewhere in
> the patch), because @defun automatically generates an index entry in
> the function index.
>
> > +Set the dock icon to alert the user. This will result in a bouncing o=
r
> > +flashing dock icon. On some back ends, dock icon attention will
> > +displayed only if Emacs is not the focused application. ^^^^
> ^^^^^^^^^
> "will be displayed"
>
> > +out automatically. In contrast, a `critical` request requires that th=
e
>
> Please don't quote `like this` in Texinfo documents, please use @code
> or @samp instead.
>
> > +@defun dock-progress &optional progress
> > +Set the dock icon to indicate ``progress''. Progress is typically
> > +represented as a graphical bar that fractionally spans the dock icon.
>
> This should have a cross-reference to the node "Progress" in the ELisp
> manual, which describes progress indicators. It is also a good idea
> to have the cross-reference in "Progress" pointing to this
> description.
>
> > +icon. Its usage is described in @pxref{Progress,, Display, elisp, The
> > +Emacs Lisp Reference Manual}.
>
> This kind of "HTML-style" cross-references doesn't look good in Info
> and in the printed versions of the manual. It is better to use
> something simpler, like
>
> This is a convenience macro analogous to
> @code{dotimes-with-progress-reporter} and works the same way as
> @code{dotimes} does, but also reports loop progress on the Emacs dock
> icon. @xref{Progress,, Display, elisp, The Emacs Lisp Reference Manual=
}.
>
> (Btw, that "Display" part in the cross-reference is wrong, and will
> not do what you thought it would.)
>
> > +@defmac dolist-with-dock-progress-reporter (var list [result])
> reporter-or-message body@dots{}
> > +This is a convenience macro analogous to
> > +@code{dolist-with-progress-reporter} and works the same way as
> > +@code{dolist} does, but also reports loop progress on the Emacs dock
> > +icon. Its usage is described in @pxref{Progress,, Display, elisp, The
> > +Emacs Lisp Reference Manual}.
>
> Same comments here.
>
> > +@lisp
> > +;; Enable and initialize dock-mode.
> > +(dock-mode)
> > +
> > +;; Display a badge on the dock icon.
> > +(dock-badge emacs-major-version)
> > +(dock-badge "31")
> > +(dock-badge "Test") ; short string (on supported platforms)
>
> Such long @lisp snippets should be subdivided into groups, using
> @group..@end group, to prevent the group from being split between two
> pages, which makes reading the examples harder.
>
> > + ((bound-and-true-p w32-initialized)
> > + (setq dock--back-end 'windows-nt))
> ^^^^^^^^^^^
> I'd prefer the symbol 'w32' here.
>
Done.
> +(define-minor-mode dock-mode
> > + "GUI dock icon badges, progress report, alerts."
>
> This doc string should be significantly expanded to describe the mode
> features, with links to relevant commands and user options.
>
> Also, please add a :version tag.
>
Added to the defgroup and defcustoms.
> +(cl-defgeneric dock-badge (&optional count-or-string)
> > + "Set the dock icon badge to COUNT-OR-STRING.
> > +If COUNT-OR-STRING is an integer, display that as the icon badge.
> > +If COUNT-OR-STRING is a string on back ends which do not support
> > +strings, convert COUNT-OR-STRING to an integer, or nil.
> > +If COUNT-OR-STRING is nil, or is an empty string, remove the counter."=
)
>
> If a string is converted to nil, will that remove the counter?
>
Yes, in the dbus implementation "Set badge to COUNT-OR-STRING if an
integer, otherwise use nil.
The Unity protocol does not support string badges."
> > +(cl-defgeneric dock-attention (&optional urgency timeout)
> > + "Set the dock icon to alert the user.
>
> I think "Display the dock icon to alert the user." is a better
> description.
>
Changed to "Flash the dock icon and/or frame to alert the user." which
should cover if we change Windows to do either or both. There are no
choices on the other platforms.
And I wonder whether we should, under dock-mode, call dock-attention
> as part of bell and visible-bell, at least as a user option?
>
Possible. Not sure about mashing C-g, though. Might have to be debounced.
> +(cl-defgeneric dock-progress (&optional progress)
> > + "Set the dock icon to indicate progress.
>
> Likewise.
>
Now reads "Display a progress indicator on the dock icon."
> +(defvar dock--dotimes-with-dock-progress-reporter-advice-count 0
> > + "Ensure advice is not removed when more than one active use.")
> > +
> > +(defun dock--set-up-progress-reporter ()
> > + "`progress-reporter-do-update` helper."
> > + (incf dock--dotimes-with-dock-progress-reporter-advice-count)
> > + (advice-add #'progress-reporter-do-update
> > + :around
> > + #'dock--progress-reporter-do-update))
>
> Our conventions frown on using advice in our code. How about adding a
> hook to progress-reporter-do-update instead, so that it could call
> this indication of progress when the mode is active?
>
I had that on my todo list and I'm glad you pointed that out. I'll propose
something in the next patch or two (+/- my travel schedule it may have to
wait until the middle of the first week of December).
> +(defun dock--tear-down-progress-reporter ()
> > + "`progress-reporter-do-update` helper."
> > + (when (=3D 0 (decf
> dock--dotimes-with-dock-progress-reporter-advice-count))
> > + (advice-remove #'progress-reporter-do-update
> > + #'dock--progress-reporter-do-update)))
>
> Same here.
>
> > +(defvar dock-w32-badge-bg '(#xe7 #x58 #x57) ; redish
> > + "Integer RGB values as the background for w32 badge.")
> > +
> > +(defvar dock-w32-badge-fg '(#xff #xff #xff) ; white
> > + "Integer RGB values as the foreground for w32 badge text.")
>
> Can't we use the normal#RRRGGGBBB color notations here? why invent
> something new when we already have infrastructure for specifying
> colors flexibly and easily?
>
Changed to standard Emacs color spec.
> diff --git a/src/w32fns.c b/src/w32fns.c
> > index 3fc0f55244f..c0d7cad3dc5 100644
> > --- a/src/w32fns.c
> > +++ b/src/w32fns.c
>
> As mentioned above, I was unable to compile the code, so the comments
> below are based only on reading the patch.
>
> > @@ -38,6 +38,10 @@ #define COBJMACROS /* Ask for C definitions for COM.
> */
> > #include <shlobj.h>
> > #include <oleidl.h>
> > #include <objidl.h>
> > +#if !defined MINGW_W64 && !defined CYGWIN
> > +# define INITGUID
> > +#endif
>
> I don't understand this: why only MINGW_W64? does this code work only
> in 64bit builds or something?
>
> And why define INITGUID to nothing?
>
I blindly copied this from w32dwrite.c. Including <shobjidl.h> does
require that we include <initguid.h> to get the key COM interface defined
that we need (I've removed the private copy after testing on mingw).
> +#ifndef IID_ITaskbarList3
> > +DEFINE_GUID(IID_ITaskbarList3, 0xea1afb91, 0x9e28, 0x4b86, 0x90,0xe9,
> 0x9e,0x9f,0x8a,0x5e,0xef,0xaf);
>
> Please add a comment here explaining what these constants are and what
> is their effect. Or maybe these constants are required by Windows to
> be that and only that? This should be documented, preferably with a
> reference.
>
I got this to compile just fine on mingw so I removed this magic.
> +/* Parse RGB_LIST, and return a COLORREF.
> > + RGB_LIST should contain (at least) 3 lisp integers.
> > + Return 0xff000000 iff RGB_LIST is not OK. */
> > +
> > +static COLORREF
> > +rgb_list_to_colorref (Lisp_Object rgb_list)
>
> I believe this function will be unnecessary if you use the usual
> #RRRGGGBBB color spec instead of a list of RGB components.
>
Replaced with parse_color_spec.
> +/* Track the window handle for the global badge icon. */
> > +static HWND _w32_badge_hwnd =3D NULL;
>
> Please don't use variables with leading underscores, that's only
> appropriate for libraries.
>
Done.
Also, does this mean we can only have a single badge on display at any
> given time?
Yes. The goal was to unify a simple API and behaviors across platforms.
> And what happens if the frame corresponding to this
> handle is deleted?
>
This w32 API is documented to ignore an invalid window handle.
> +DEFUN ("w32-badge",
> > + Fw32_badge,
> > + Sw32_badge,
> > + 3, 3, 0,
> > + doc: /* Set the taskbar icon overlay image based on BADGE.
> > +BADGE is a UTF-8 string. If BADGE is nil, remove the overlay. Do
>
> Please say "BADGE is a string", without mentioning UTF-8. Callers of
> primitives should pass Emacs Lisp strings, and the primitive should
> then encode the string as needed (which your code already does).
>
Done.
> + Do nothing if the frame is not (yet)
> > +associated with an HWND.
>
> Which frame? And there's no argument named HWND.
>
Updated to say the selected frame.
> BACKGROUND and FOREGROUND are lists of (RED
> > +GREEN BLUE) 8-bit integer values. */)
> > + (Lisp_Object badge, Lisp_Object bg, Lisp_Object fg)
>
> The color arguments are named BG and FG, not BACKGROUND and
> FOREGROUND.
>
Done.
> +{
> > + CoInitialize (NULL);
> > + ITaskbarList3 *task_bar_list =3D NULL;
> > + HRESULT r =3D CoCreateInstance(&CLSID_TaskbarList,
> > + NULL,
> > + CLSCTX_INPROC_SERVER,
> > + &IID_ITaskbarList3,
> > + (void **)&task_bar_list);
> > + if (r !=3D S_OK)
> > + {
> > + /* FIXME: Do we need to call CoUninitialize? */
>
> I don't think we need to do that.
>
Done.
> + HWND hwnd =3D NULL;
> > + struct frame *sf =3D SELECTED_FRAME ();
> > + if (FRAME_W32_P (sf) && FRAME_LIVE_P (sf))
> > + hwnd =3D FRAME_W32_WINDOW (sf);
>
> If we always use the selected frame, it should be documented. If the
> same frame should be selected when removing the badge, that should
> also be documented (it means the caller will need to track which frame
> sets the badge). And what happens if the caller attempts to remove
> the badge when a different frame is select, or if the original frame
> was deleted?
>
If the window handle becomes invalid, this w32 API is documented to ignore
it.
If the badge is nullified or replaced, it will first attempt to remove the
existing one, and then set the new one on the selected frame. This is an
attempt to unify the API across platforms.
I've updated the docstring to say "Only one badge is active at a time and a
badge previously assigned to a frame other than the selected frame is
removed before assigning a new badge."
Attention w32 docstring similarly updated to say "Only one frame is flashed
at a time and any already active flashing is canceled and replaced by the
new request."
> + if (bg_rgb =3D=3D 0xff000000)
> > + {
> > + signal_error ("Invalid background RGB", bg);
> > + return Qnil;
> > + }
> > + if (fg_rgb =3D=3D 0xff000000)
> > + {
> > + signal_error ("Invalid foreground RGB", fg);
> > + return Qnil;
> > + }
>
> I'd prefer not to signal errors from these functions, but instead to
> silently return nil.
>
Done.
> + /* Derive a font scaled to fit the icon. First find the system's
> > + base font. Then scale it to fit icon_height. */
> > + HFONT base_font;
> > + BOOL clean_up_base_font =3D FALSE;
> > + if (system_parameters_info_w_fn)
> > + {
> > + NONCLIENTMETRICSW ncm;
> > + memset (&ncm, 0, sizeof (ncm));
> > + ncm.cbSize =3D sizeof (ncm);
> > + SystemParametersInfoW (SPI_GETNONCLIENTMETRICS, sizeof (ncm),
> &ncm, 0);
> > + base_font =3D CreateFontIndirectW (&ncm.lfSmCaptionFont);
> > + clean_up_base_font =3D TRUE;
>
> Do we really need to call the "wide" variants of these functions?
>
See w32-set-wallpaper for what we do about SystemParametersInfoW, and
> CreateFontIndirectW is not used anywhere in Emacs. Can we use
> CreateFontIndirect instead, or only use CreateFontIndirectW when it is
> supported, like w32-set-wallpaper does with SystemParametersInfoW?
>
I've retested with the narrow variants of these calls and it works fine.
> Are badges at all supported on old Windows versions? If not, then we
> can use the "wide" APIs, but we need to do that through function
> pointers, which are filled at startup time using get_proc_addr, like
> we do with MultiByteToWideChar. Because otherwise older versions of
> Windows will refuse to run Emacs that refers to these wide APIs which
> don't exist on those old versions.
>
The earliest supported version is Windows 7.
> + /* Negative lfHeight indicates pixel units vs. positive in points.
> > + Use the LOGPIXELSY px/in of the primary monitor. */
> > + lf.lfHeight =3D -MulDiv(icon_height / 2, /* Fit ~3 chars. */
> ^^
> > + 72,
> > + GetDeviceCaps(GetDC (NULL), LOGPIXELSY));
> ^^
> Our style is to leave one space between the function's name and the
> opening parenthesis.
>
Done.
> + for (int y =3D 0; y < icon_height; ++y)
> > + for (int x =3D 0; x < icon_width; ++x)
> > + {
> > + int dx =3D x - circle_center_x;
> > + int dy =3D y - circle_center_y;
> > + if (dx * dx + dy * dy <=3D circle_radius_sq)
> > + {
> > + pixel =3D bitmap_pixels + (y * icon_width + x);
> > + *pixel |=3D 0xff000000;
> ^^^^^^^^^^
> Please add a comment explaining that "magic constant".
>
Done.
> +static FlashWindowEx_Proc _flash_window_ex_fn =3D NULL;
>
> This variable should also be NULL-ified in globals_of_w32fns, so that
> we don't risk carrying stale values from when Emacs was dumped.
>
I moved the lookup into globals.
> +static HWND _w32_request_user_attention_hwnd =3D NULL;
>
> Again, please don't use variables whose names begin with an
> underscore.
>
Done.
> +DEFUN ("w32-request-user-attention",
> > + Fw32_request_user_attention,
> > + Sw32_request_user_attention,
> > + 1, 1, 0,
> > + doc: /* Flash the taskbar icon based on URGENCY.
>
> AFAIU, FlashWindowEx flashes the frame itself as well, not only the
> task-bar icon, doesn't it?
>
Docstring updated to say "Flash the selected frame and/or taskbar icon
based on URGENCY."
> + /* dwFlags
> > + FLASHW_ALL 0x00000003 Flash both window caption and taskbar
> button.
> > + FLASHW_CAPTION 0x00000001 Flash the window caption.
> > + FLASHW_STOP 0x00000000 Stop flashing.
> > + FLASHW_TIMER 0x00000004 Flash continuously, until FLASHW_STOP=
.
> > + FLASHW_TIMERNOFG 0x0000000C Flash until window comes to the
> foreground.
> > + FLASHW_TRAY 0x00000002 Flash the taskbar button. */
>
> Should we allow flashing only the task-bar icon, as an option?
>
I've refined the behavior so that it is in line with the other two
platforms. The task bar will flash until the window is focused (or the
timeout cancels the flash). 'informational urgency will flash only the
task bar where 'critical flashes both the taskbar and the frame. I think
this is a happy medium.
I've also switched to using the defined win32 magic number names.
> + flash_info.dwFlags =3D 0x00000000; /* FLASHW_STOP */
> > + if (_w32_request_user_attention_hwnd !=3D NULL
> > + && _w32_request_user_attention_hwnd !=3D hwnd)
> > + {
> > + /* Disable attention on the old window handle. */
> > + flash_info.hwnd =3D _w32_request_user_attention_hwnd;
> > + _flash_window_ex_fn (&flash_info);
> > + _w32_request_user_attention_hwnd =3D hwnd;
>
> Does the fact that we store the handle to the frame's window in a
> global static variable mean that we cannot flash more than one frame
> at a time?
>
Yes. Ditto on the attempt to unify the API across platforms.
And what happens if the frame is deleted before flashing ends?
>
The win32 API is silent on that. I assume like other similar functions,
the Windows shell will simply stop flashing since it will have nothing to
flash.
> + if (!NILP (urgency) && SYMBOLP (urgency))
> > + {
> > + /* The intended caller, dock-mode.el 'dock-attention', has its o=
wn
> > + timer to clear the attention indicator so this will flash until
> > + cleared via the timer for informational attention, or the
> > + window comes to the foreground for critical attention. */
> > + if (EQ (urgency, Qinformational))
> > + flash_info.dwFlags =3D 0x00000003 | 0x00000004; /* FLASHW_TIMER =
*/
> > + else if (EQ (urgency, Qcritical))
> > + flash_info.dwFlags =3D 0x00000003 | 0x0000000C; /* FLASHW_TIMERNO=
FG
> */
> > + }
>
> Why are you using numerical values instead of FLASHW_ALL etc.?
>
I changed to the defined names after checking that mingw headers define all
this stuff.
> + if (_w32_progress_indicator_hwnd !=3D NULL
> > + && _w32_progress_indicator_hwnd !=3D hwnd)
> > + {
> > + /* Disable the indicator for the old window handle. */
> > + task_bar_list->lpVtbl->SetProgressState (task_bar_list,
> > +
> _w32_progress_indicator_hwnd,
> > + TBPF_NOPROGRESS);
> > + }
> > + _w32_progress_indicator_hwnd =3D hwnd;
>
> Same questions as above about displaying progress for more than one
> frame at a time.
>
Ditto answer.
> + /* Scale task bar progress from 0.0-1.0 to 0-100. */
> > + unsigned int adj_progress =3D 0;
>
> The MS documentation says the 2 last arguments of SetProgressValue
> method are of type ULONGLONG, so why not use that here?
>
Done.
> + #ifdef WINDOWSNT
> > + /* Taskbar/dock */
> ^^
> Our conventions are to and a C comment with a period and two spaces
> before "*/".
>
Done.
-St=C3=A9phane
--0000000000004b240e06441dc01a
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_defa=
ult" style=3D""><font face=3D"monospace">Thank you for reviewing the patch =
and your thoughtful feedback.=C2=A0=C2=A0I'll incorporate more feedback=
after you get it compiled and you give it a try, and perhaps other people,=
too.=C2=A0 My Windows 11 virtual machine is less than a real-world Windows=
set up, though sufficient for developing this feature.</font></div><div cl=
ass=3D"gmail_default" style=3D""><font face=3D"monospace"><br></font></div>=
<div class=3D"gmail_default" style=3D""><span style=3D"font-family:monospac=
e">I've attached a patch rebased on master </span><span style=3D"font-f=
amily:monospace">2cc6c812788281c05ca9687afd7bed</span><span style=3D"font-f=
amily:monospace">f597b1e942 which also incorporates your feedback.</span></=
div><div class=3D"gmail_default" style=3D""><span style=3D"font-family:mono=
space"><br></span></div><div class=3D"gmail_default" style=3D""><font face=
=3D"monospace">Responses interspersed below.</font></div><div class=3D"gmai=
l_default" style=3D""><font face=3D"monospace"><br></font></div><div class=
=3D"gmail_default" style=3D"font-family:monospace"><span style=3D"font-fami=
ly:Arial,Helvetica,sans-serif">On Thu, Nov 20, 2025 at 5:27=E2=80=AFAM Eli =
Zaretskii <<a href=3D"mailto:eliz@HIDDEN" target=3D"_blank">eliz@HIDDEN=
g</a>> wrote:</span></div></div><div class=3D"gmail_quote"><blockquote c=
lass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px soli=
d rgb(204,204,204);padding-left:1ex">> Cc: Bj=C3=B6rn Bidar <<a href=
=3D"mailto:bjorn.bidar@HIDDEN" target=3D"_blank">bjorn.bidar@HIDDEN=
</a>><br>
> From: St=C3=A9phane Marks <<a href=3D"mailto:shipmints@HIDDEN" t=
arget=3D"_blank">shipmints@HIDDEN</a>><br>
> Date: Tue, 18 Nov 2025 14:17:45 -0500<br>
> <br>
> This patch implements system GUI dock features for icon badges, icon p=
rogress indicator, and icon attention<br>
> request with implementations for GNU/Linux KDE & GNOME, NS/macOS, =
and MS-Windows.<br>
<br>
Thank you for working on this important feature.<br>
<br>
> GNU/Linux shells need to use an extension or include built-in support =
for the protocol documented here<br>
> <a href=3D"https://wiki.ubuntu.com/Unity/LauncherAPI" rel=3D"noreferre=
r" target=3D"_blank">https://wiki.ubuntu.com/Unity/LauncherAPI</a>.=C2=A0 I=
tested using this "standard" shell extension<br>
> <a href=3D"https://extensions.gnome.org/extension/307/dash-to-dock/" r=
el=3D"noreferrer" target=3D"_blank">https://extensions.gnome.org/extension/=
307/dash-to-dock/</a> on GNOME and assistance and testing on KDE<br>
> from the reddit user GeneAutomatic3471.<br>
<br>
This information should be in the NEWS entry.<br></blockquote><div><br></di=
v><div><div class=3D"gmail_default" style=3D"font-family:monospace">Done.</=
div></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:=
0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> I'd appreciate thoughtful feedback, and of course, testing.<br>
<br>
I wanted to test this on MS-Windows, but the w32fns.c patch failed to<br>
apply to the master branch, even if I use --ignore-whitespace option<br>
to "git apply".=C2=A0 Could you please rebase on the current mast=
er and<br>
post an updated patch?<br></blockquote><div><br></div><div class=3D"gmail_d=
efault" style=3D"font-family:monospace">Please try the attached patch.</div=
><div class=3D"gmail_default" style=3D"font-family:monospace"><br></div><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-lef=
t:1px solid rgb(204,204,204);padding-left:1ex">
So the below comments are based on reading the patch and nothing else.<br>
<br>
> From f1c4bbf07a4b1c0cb5867412ecf2074bfc3e37e1 Mon Sep 17 00:00:00 2001=
<br>
> From: =3D?UTF-8?q?St=3DC3=3DA9phane=3D20Marks?=3D <<a href=3D"mailt=
o:shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>><br>
> Date: Sat, 8 Nov 2025 13:30:37 -0500<br>
> Subject: [PATCH] Add system GUI dock integration.<br>
> <br>
> Implement system GUI dock icon badge, icon progress indicator,<br>
> icon attention alert features for D-Bus platforms (tested on KDE<br>
> and GNOME), NS (GNUstep/macOS), Microsoft Windows.<br>
> <br>
> * lisp/dock-mode.el: New file.<br>
<br>
First, the name of the mode and related symbols: I find the name<br>
"dock" to be problematic, as it seems to be well-known to macOS u=
sers<br>
and maybe also to some users of GNU/Linux desktops, but might be<br>
unknown to others.=C2=A0 Also, "dock" has multiple meanings, whic=
h might be<br>
confusing.=C2=A0 I would prefer something like dock-taskbar-* instead, or<b=
r>
maybe gui-dock-*, or even gui-desktop-* (if we envision more features<br>
being added to this in the future).=C2=A0 I'm also open to other ideas<=
br>
about better naming this class of features.<br></blockquote><div><br></div>=
<div><div class=3D"gmail_default" style=3D"font-family:monospace">I have no=
strong opinion on this other than I thought the scope would be best limite=
d to "dock" features.=C2=A0 If you can envision other "deskt=
op" features to add (and we can avoid any confusion with desktop.el), =
I'm happy to call it whatever we want.=C2=A0 If there are things you=
9;d like to see sooner than later, I can take a stab at those if the scope =
is on the small side.</div></div><div>=C2=A0</div><blockquote class=3D"gmai=
l_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,20=
4,204);padding-left:1ex">
> diff --git a/doc/misc/dock-mode.texi b/doc/misc/dock-mode.texi<br>
> new file mode 100644<br>
> index 00000000000..71358c09b7e<br>
> --- /dev/null<br>
> +++ b/doc/misc/dock-mode.texi<br>
<br>
I don't think this should be a separate Info file.=C2=A0 Instead, we sh=
ould<br>
split this information into a user-level part and Lisp-programmer<br>
level part, and have the former in the user manual and the latter in<br>
the ELisp reference.=C2=A0 Most of the Texinfo documentation you wrote<br>
naturally belongs to the latter category.<br>
<br>
A separate Info manual has a significant disadvantage that it is not<br>
part of the two main manuals, and is thus harder to discover.<br></blockquo=
te><div><br></div><div class=3D"gmail_default" style=3D"font-family:monospa=
ce">I'll tackle documentation feedback later after some more testing, a=
nd renaming if we do that.</div><div class=3D"gmail_default" style=3D"font-=
family:monospace"><br></div><blockquote class=3D"gmail_quote" style=3D"marg=
in:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1e=
x">
> +@node Overview<br>
> +@chapter Overview<br>
> +<br>
> +The Dock package provides integration with these system GUI dock<br>
> +features:<br>
<br>
This should start by explaining what is a "GUI dock".=C2=A0 It is=
an<br>
obscure term that is unlikely to be widely known, IME.<br>
<br>
> +Your GNU/Linux Emacs instance should be launched via an appropriate<b=
r>
> +shell "desktop" file such as those distributed with Emacs; =
e.g.,<br>
> +"etc/emacsclient.desktop".<br>
<br>
File names should have the @file markup, instead of quoting them (here<br>
and elsewhere in the patch).<br>
<br>
> +@node User Options<br>
> +@chapter User Options<br>
<br>
This node should go to the Emacs user manual.=C2=A0 But it should begin by<=
br>
describing the features in user-facing terms: what will the user see<br>
for each aspect of the mode: how badges look, what is "attention<br>
indicator", etc.=C2=A0 This stuff is unlikely to be well-known to user=
s,<br>
and without that, the following description of user options makes very<br>
little sense.<br>
<br>
> +@defvar dock-dbus-desktop-file-name<br>
> +The variable @code{dock-dbus-desktop-file-name} applies on GNU/Linux<=
br>
> +D-Bus systems, and can be customized to indicate which desktop file n=
ame<br>
> +D-Bus will use to identify your Emacs instance.=C2=A0 It defaults to =
the<br>
> +desktop file base name @code{"emacsclient"} and might need =
to be set to<br>
> +@code{"emacs"} on your system.=C2=A0 Installed Emacs builds=
typically include<br>
> +default desktop files for both, and are called<br>
> +@code{"emacsclient.desktop"} and @code{"emacs.desktop&=
quot;}, respectively.<br>
> +@end defvar<br>
<br>
Do users frequently need to customize this?=C2=A0 If in most cases this<br>
doesn't need to be customized, we don't need to mention the option =
in<br>
the manual.<br></blockquote><div><br></div><div><div class=3D"gmail_default=
" style=3D"font-family:monospace">Sadly, the testing on both KDE and GNOME =
indicated the default distro Emacsen use one or the other (and I can't =
now remember which is which), so people have had to use both values I docum=
ented.</div></div><div class=3D"gmail_default" style=3D"font-family:monospa=
ce"><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px=
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> +@defvar dock-dbus-timeout-ms<br>
> +The variable @code{dock-dbus-timeout-ms} applies on GNU/Linux D-Bus<b=
r>
> +systems, and can be customized to specify the number of milliseconds<=
br>
> +Emacs will wait for D-Bus responses before timing out and considering=
<br>
> +messages undeliverable.=C2=A0 It defaults to 25000 milliseconds, whic=
h is the<br>
> +recommended default by the D-Bus package, which see, @pxref{Top,,, db=
us,<br>
> +D-Bus integration in Emacs}.<br>
<br>
This doesn't seem to be a user-level option, at least not an important<=
br>
one.=C2=A0 I presume that the default is fine for almost all uses, and the<=
br>
option only needs customization when troubleshooting.<br></blockquote><div>=
<br></div><div><div class=3D"gmail_default" style=3D"font-family:monospace"=
>This is a default hard coded in `dbus-call-method` and I thought it best t=
o raise it up for this package as it is something people may have trouble w=
ith, even if unlikely,=C2=A0and we need to pass the timeout downstream.</di=
v></div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:=
0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> +@node Function Reference<br>
> +@chapter Function Reference<br>
> +<br>
> +@findex dock-mode<br>
> +@defun dock-mode<br>
> +@code{dock-mode} must be enabled before calling any of its functions,=
to<br>
> +initialize the system back end.=C2=A0 On GNU/Linux D-Bus, initializat=
ion will<br>
> +test that the D-Bus dock protocol is established, and signal an error=
if<br>
> +it is not.<br>
> +@end defun<br>
<br>
This mode, and the description of GUI features it activates, should in<br>
the user manual.<br>
<br>
> +@findex dock-badge<br>
> +@defun dock-badge &optional count-or-string<br>
> +Set the dock icon badge to @var{count-or-string}.=C2=A0 If<br>
> +@var{count-or-string} is @code{nil}, clear the badge.<br>
<br>
I'm missing here the description of where will the badge appear if<br>
Emacs has several visible frames.=C2=A0 Will the badge appear on all of<br>
them? only one? something else?<br></blockquote><div><br></div><div><div cl=
ass=3D"gmail_default" style=3D"font-family:monospace">On GNU/Linux and NS, =
there is only a single dock icon for the Emacs process.=C2=A0 It's on w=
32 that things get more complex as=C2=A0 Windows has options to collapse or=
not multiple frames into a group or not.=C2=A0 I thought it best for now t=
o unify the behavior to keep it simple and stick to a single badge per proc=
ess rather than introduce complexity in the API for all platforms.</div></d=
iv><div class=3D"gmail_default" style=3D"font-family:monospace"><br></div><=
blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l=
eft:1px solid rgb(204,204,204);padding-left:1ex">
> +If a string is specified on back ends which do not support strings, i=
t<br>
> +is converted to an integer, if possible, or to nil.=C2=A0 GNUstep and=
macOS<br>
> +support string badges, the GNU/Linux D-Bus protocol supports only<br>
> +integers; any string that cannot be converted to integer will be trea=
ted<br>
> +as @code{nil}.<br>
<br>
This describes the implementation, but says nothing about the effect.<br>
What would be displayed when a string is converted to an integer (and<br>
how can an arbitrary string be converted to a number anyway)?<br>
Depending on the answers to those questions, it is possible that we<br>
don't have to mention the specific systems and backends.<br>
<br>
> +@findex dock-attention<br>
> +@defun dock-attention &optional urgency timeout<br>
<br>
There's no need to have @findex for a @defun (here and elsewhere in<br>
the patch), because @defun automatically generates an index entry in<br>
the function index.<br>
<br>
> +Set the dock icon to alert the user.=C2=A0 This will result in a boun=
cing or<br>
> +flashing dock icon.=C2=A0 On some back ends, dock icon attention will=
<br>
> +displayed only if Emacs is not the focused application.=C2=A0 =C2=A0 =
=C2=A0^^^^<br>
=C2=A0 =C2=A0^^^^^^^^^<br>
"will be displayed"<br>
<br>
> +out automatically.=C2=A0 In contrast, a `critical` request requires t=
hat the<br>
<br>
Please don't quote `like this` in Texinfo documents, please use @code<b=
r>
or @samp instead.<br>
<br>
> +@defun dock-progress &optional progress<br>
> +Set the dock icon to indicate ``progress''.=C2=A0 Progress is=
typically<br>
> +represented as a graphical bar that fractionally spans the dock icon.=
<br>
<br>
This should have a cross-reference to the node "Progress" in the =
ELisp<br>
manual, which describes progress indicators.=C2=A0 It is also a good idea<b=
r>
to have the cross-reference in "Progress" pointing to this<br>
description.<br>
<br>
> +icon.=C2=A0 Its usage is described in @pxref{Progress,, Display, elis=
p, The<br>
> +Emacs Lisp Reference Manual}.<br>
<br>
This kind of "HTML-style" cross-references doesn't look good =
in Info<br>
and in the printed versions of the manual.=C2=A0 It is better to use<br>
something simpler, like<br>
<br>
=C2=A0 This is a convenience macro analogous to<br>
=C2=A0 @code{dotimes-with-progress-reporter} and works the same way as<br>
=C2=A0 @code{dotimes} does, but also reports loop progress on the Emacs doc=
k<br>
=C2=A0 icon.=C2=A0 @xref{Progress,, Display, elisp, The Emacs Lisp Referenc=
e Manual}.<br>
<br>
(Btw, that "Display" part in the cross-reference is wrong, and wi=
ll<br>
not do what you thought it would.)<br>
<br>
> +@defmac dolist-with-dock-progress-reporter (var list [result]) report=
er-or-message body@dots{}<br>
> +This is a convenience macro analogous to<br>
> +@code{dolist-with-progress-reporter} and works the same way as<br>
> +@code{dolist} does, but also reports loop progress on the Emacs dock<=
br>
> +icon.=C2=A0 Its usage is described in @pxref{Progress,, Display, elis=
p, The<br>
> +Emacs Lisp Reference Manual}.<br>
<br>
Same comments here.<br>
<br>
> +@lisp<br>
> +;; Enable and initialize dock-mode.<br>
> +(dock-mode)<br>
> +<br>
> +;; Display a badge on the dock icon.<br>
> +(dock-badge emacs-major-version)<br>
> +(dock-badge "31")<br>
> +(dock-badge "Test") ; short string (on supported platforms)=
<br>
<br>
Such long @lisp snippets should be subdivided into groups, using<br>
@group..@end group, to prevent the group from being split between two<br>
pages, which makes reading the examples harder.<br>
<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 ((bound-and-true-p w32-initialized)<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq dock--back-end 'windows-n=
t))<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0^^^^^^^^^^^<br>
I'd prefer the symbol 'w32' here.<br></blockquote><div><br></di=
v><div class=3D"gmail_default" style=3D"font-family:monospace">Done.</div><=
div class=3D"gmail_default" style=3D"font-family:monospace"><br></div><bloc=
kquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:=
1px solid rgb(204,204,204);padding-left:1ex">
> +(define-minor-mode dock-mode<br>
> +=C2=A0 "GUI dock icon badges, progress report, alerts."<br>
<br>
This doc string should be significantly expanded to describe the mode<br>
features, with links to relevant commands and user options.<br>
<br>
Also, please add a :version tag.<br></blockquote><div><br></div><div><div c=
lass=3D"gmail_default" style=3D"font-family:monospace">Added to the defgrou=
p and defcustoms.</div></div><div><br></div><blockquote class=3D"gmail_quot=
e" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204)=
;padding-left:1ex">
> +(cl-defgeneric dock-badge (&optional count-or-string)<br>
> +=C2=A0 "Set the dock icon badge to COUNT-OR-STRING.<br>
> +If COUNT-OR-STRING is an integer, display that as the icon badge.<br>
> +If COUNT-OR-STRING is a string on back ends which do not support<br>
> +strings, convert COUNT-OR-STRING to an integer, or nil.<br>
> +If COUNT-OR-STRING is nil, or is an empty string, remove the counter.=
")<br>
<br>
If a string is converted to nil, will that remove the counter?<br></blockqu=
ote><div><br></div><div class=3D"gmail_default"><font face=3D"monospace">Ye=
s, in the dbus implementation "Set badge to COUNT-OR-STRING if an inte=
ger, otherwise use nil.</font></div><font face=3D"monospace">The Unity prot=
ocol does not support string badges."</font><div>=C2=A0</div><blockquo=
te class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px =
solid rgb(204,204,204);padding-left:1ex">
> +(cl-defgeneric dock-attention (&optional urgency timeout)<br>
> +=C2=A0 "Set the dock icon to alert the user.<br>
<br>
I think "Display the dock icon to alert the user." is a better<br=
>
description.<br></blockquote><div><br></div><div class=3D"gmail_default" st=
yle=3D"font-family:monospace">Changed to "Flash the dock icon and/or f=
rame to alert the user." which should cover if we change Windows to do=
either or both.=C2=A0 There are no choices on the other platforms.</div><d=
iv class=3D"gmail_default" style=3D"font-family:monospace"><br></div><block=
quote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1=
px solid rgb(204,204,204);padding-left:1ex">
And I wonder whether we should, under dock-mode, call dock-attention<br>
as part of bell and visible-bell, at least as a user option?<br></blockquot=
e><div><br></div><div><div class=3D"gmail_default" style=3D"font-family:mon=
ospace">Possible.=C2=A0 Not sure about mashing C-g, though.=C2=A0 Might hav=
e to be debounced.</div></div><div><br></div><blockquote class=3D"gmail_quo=
te" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204=
);padding-left:1ex">
> +(cl-defgeneric dock-progress (&optional progress)<br>
> +=C2=A0 "Set the dock icon to indicate progress.<br>
<br>
Likewise.<br></blockquote><div><br></div><div><div class=3D"gmail_default" =
style=3D"font-family:monospace">Now reads "Display a progress indicato=
r on the dock icon."</div></div><div><br></div><blockquote class=3D"gm=
ail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,=
204,204);padding-left:1ex">
> +(defvar dock--dotimes-with-dock-progress-reporter-advice-count 0<br>
> +=C2=A0 "Ensure advice is not removed when more than one active u=
se.")<br>
> +<br>
> +(defun dock--set-up-progress-reporter ()<br>
> +=C2=A0 "`progress-reporter-do-update` helper."<br>
> +=C2=A0 (incf dock--dotimes-with-dock-progress-reporter-advice-count)<=
br>
> +=C2=A0 (advice-add #'progress-reporter-do-update<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 :around<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #'dock--progress=
-reporter-do-update))<br>
<br>
Our conventions frown on using advice in our code.=C2=A0 How about adding a=
<br>
hook to progress-reporter-do-update instead, so that it could call<br>
this indication of progress when the mode is active?<br></blockquote><div><=
br></div><div><div class=3D"gmail_default" style=3D"font-family:monospace">=
I had that on my todo list and I'm glad you pointed that out.=C2=A0 I&#=
39;ll propose something in the next patch or two (+/- my travel schedule it=
may have to wait until the middle of the first week of December).</div></d=
iv><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px=
0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> +(defun dock--tear-down-progress-reporter ()<br>
> +=C2=A0 "`progress-reporter-do-update` helper."<br>
> +=C2=A0 (when (=3D 0 (decf dock--dotimes-with-dock-progress-reporter-a=
dvice-count))<br>
> +=C2=A0 =C2=A0 (advice-remove #'progress-reporter-do-update<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
#'dock--progress-reporter-do-update)))<br>
<br>
Same here.<br>
<br>
> +(defvar dock-w32-badge-bg '(#xe7 #x58 #x57) ; redish<br>
> +=C2=A0 "Integer RGB values as the background for w32 badge."=
;)<br>
> +<br>
> +(defvar dock-w32-badge-fg '(#xff #xff #xff) ; white<br>
> +=C2=A0 "Integer RGB values as the foreground for w32 badge text.=
")<br>
<br>
Can't we use the normal#RRRGGGBBB color notations here? why invent<br>
something new when we already have infrastructure for specifying<br>
colors flexibly and easily?<br></blockquote><div><br></div><div><div class=
=3D"gmail_default" style=3D"font-family:monospace">Changed to standard Emac=
s color spec.</div><div class=3D"gmail_default" style=3D"font-family:monosp=
ace"><br></div></div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> diff --git a/src/w32fns.c b/src/w32fns.c<br>
> index 3fc0f55244f..c0d7cad3dc5 100644<br>
> --- a/src/w32fns.c<br>
> +++ b/src/w32fns.c<br>
<br>
As mentioned above, I was unable to compile the code, so the comments<br>
below are based only on reading the patch.<br>
<br>
> @@ -38,6 +38,10 @@ #define COBJMACROS /* Ask for C definitions for COM=
.=C2=A0 */<br>
>=C2=A0 #include <shlobj.h><br>
>=C2=A0 #include <oleidl.h><br>
>=C2=A0 #include <objidl.h><br>
> +#if !defined MINGW_W64 && !defined CYGWIN<br>
> +# define INITGUID<br>
> +#endif<br>
<br>
I don't understand this: why only MINGW_W64? does this code work only<b=
r>
in 64bit builds or something?<br>
<br>
And why define INITGUID to nothing?<br></blockquote><div><br></div><div><di=
v class=3D"gmail_default" style=3D"font-family:monospace">I blindly copied =
this from=C2=A0w32dwrite.c.=C2=A0 Including <shobjidl.h> does require=
that we include <initguid.h> to get the key COM interface defined th=
at we need (I've removed the private copy after testing on mingw).</div=
></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px=
0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> +#ifndef IID_ITaskbarList3<br>
> +DEFINE_GUID(IID_ITaskbarList3, 0xea1afb91, 0x9e28, 0x4b86, 0x90,0xe9,=
0x9e,0x9f,0x8a,0x5e,0xef,0xaf);<br>
<br>
Please add a comment here explaining what these constants are and what<br>
is their effect.=C2=A0 Or maybe these constants are required by Windows to<=
br>
be that and only that?=C2=A0 This should be documented, preferably with a<b=
r>
reference.<br></blockquote><div><br></div><div class=3D"gmail_default" styl=
e=3D"font-family:monospace">I got this to compile just=C2=A0fine on mingw s=
o I removed this magic.</div><div class=3D"gmail_default" style=3D"font-fam=
ily:monospace"><br></div><blockquote class=3D"gmail_quote" style=3D"margin:=
0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> +/* Parse RGB_LIST, and return a COLORREF.<br>
> +=C2=A0 =C2=A0RGB_LIST should contain (at least) 3 lisp integers.<br>
> +=C2=A0 =C2=A0Return 0xff000000 iff RGB_LIST is not OK.=C2=A0 */<br>
> +<br>
> +static COLORREF<br>
> +rgb_list_to_colorref (Lisp_Object rgb_list)<br>
<br>
I believe this function will be unnecessary if you use the usual<br>
#RRRGGGBBB color spec instead of a list of RGB components.<br></blockquote>=
<div><br></div><div><div class=3D"gmail_default" style=3D"font-family:monos=
pace">Replaced with=C2=A0parse_color_spec.</div><div class=3D"gmail_default=
" style=3D"font-family:monospace"><br></div></div><blockquote class=3D"gmai=
l_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,20=
4,204);padding-left:1ex">
> +/* Track the window handle for the global badge icon. */<br>
> +static HWND _w32_badge_hwnd =3D NULL;<br>
<br>
Please don't use variables with leading underscores, that's only<br=
>
appropriate for libraries.<br></blockquote><div><br></div><div><div class=
=3D"gmail_default" style=3D"font-family:monospace">Done.</div></div><div><b=
r></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex=
;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Also, does this mean we can only have a single badge on display at any<br>
given time?</blockquote><div><br></div><div><div class=3D"gmail_default" st=
yle=3D"font-family:monospace">Yes.=C2=A0 The goal was to unify a simple API=
and behaviors across platforms.</div></div><div>=C2=A0</div><blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid=
rgb(204,204,204);padding-left:1ex">And what happens if the frame correspon=
ding to this<br>
handle is deleted?<br></blockquote><div><br></div><div><div class=3D"gmail_=
default" style=3D"font-family:monospace">This w32 API is documented to igno=
re an invalid window handle.</div></div><div><br></div><blockquote class=3D=
"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2=
04,204,204);padding-left:1ex">
> +DEFUN ("w32-badge",<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Fw32_badge,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Sw32_badge,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A03, 3, 0,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0doc: /* Set the taskbar icon overlay image=
based on BADGE.<br>
> +BADGE is a UTF-8 string.=C2=A0 If BADGE is nil, remove the overlay.=
=C2=A0 Do<br>
<br>
Please say "BADGE is a string", without mentioning UTF-8.=C2=A0 C=
allers of<br>
primitives should pass Emacs Lisp strings, and the primitive should<br>
then encode the string as needed (which your code already does).<br></block=
quote><div><br></div><div><div class=3D"gmail_default" style=3D"font-family=
:monospace">Done.</div></div><div class=3D"gmail_default" style=3D"font-fam=
ily:monospace"><br></div><blockquote class=3D"gmail_quote" style=3D"margin:=
0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Do nothing if the frame is=
not (yet)<br>
> +associated with an HWND.<br>
<br>
Which frame?=C2=A0 And there's no argument named HWND.<br></blockquote>=
<div><br></div><div><div class=3D"gmail_default" style=3D"font-family:monos=
pace">Updated to say the selected frame.</div></div><div><br></div><blockqu=
ote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px=
solid rgb(204,204,204);padding-left:1ex">
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0BACKGROUND and FOREGROUND are lists of (RED<br>
> +GREEN BLUE) 8-bit integer values.=C2=A0 */)<br>
> +=C2=A0 (Lisp_Object badge, Lisp_Object bg, Lisp_Object fg)<br>
<br>
The color arguments are named BG and FG, not BACKGROUND and<br>
FOREGROUND.<br></blockquote><div><br></div><div class=3D"gmail_default" sty=
le=3D"font-family:monospace">Done.</div><div class=3D"gmail_default" style=
=3D"font-family:monospace"><br></div><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddin=
g-left:1ex">
> +{<br>
> +=C2=A0 CoInitialize (NULL);<br>
> +=C2=A0 ITaskbarList3 *task_bar_list =3D NULL;<br>
> +=C2=A0 HRESULT r =3D CoCreateInstance(&CLSID_TaskbarList,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 NULL,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 CLSCTX_INPROC_SERVER,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 &IID_ITaskbarList3,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (void **)&task_bar_list);<br>
> +=C2=A0 if (r !=3D S_OK)<br>
> +=C2=A0 =C2=A0 {<br>
> +=C2=A0 =C2=A0 =C2=A0 /* FIXME: Do we need to call CoUninitialize?=C2=
=A0 */<br>
<br>
I don't think we need to do that.<br></blockquote><div><br></div><div c=
lass=3D"gmail_default" style=3D"font-family:monospace">Done.</div><div clas=
s=3D"gmail_default" style=3D"font-family:monospace"><br></div><blockquote c=
lass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px soli=
d rgb(204,204,204);padding-left:1ex">
> +=C2=A0 HWND hwnd =3D NULL;<br>
> +=C2=A0 struct frame *sf =3D SELECTED_FRAME ();<br>
> +=C2=A0 if (FRAME_W32_P (sf) && FRAME_LIVE_P (sf))<br>
> +=C2=A0 =C2=A0 hwnd =3D FRAME_W32_WINDOW (sf);<br>
<br>
If we always use the selected frame, it should be documented.=C2=A0 If the<=
br>
same frame should be selected when removing the badge, that should<br>
also be documented (it means the caller will need to track which frame<br>
sets the badge).=C2=A0 And what happens if the caller attempts to remove<br=
>
the badge when a different frame is select, or if the original frame<br>
was deleted?<br></blockquote><div><br></div><div><div class=3D"gmail_defaul=
t" style=3D"font-family:monospace">If the window handle becomes invalid, th=
is w32 API is documented to ignore it.</div></div><div class=3D"gmail_defau=
lt" style=3D"font-family:monospace"><br></div><div class=3D"gmail_default" =
style=3D"font-family:monospace">If the badge is nullified or replaced, it w=
ill first attempt to remove the existing one, and then set the new one on t=
he selected frame.=C2=A0 This is an attempt to unify the API across platfor=
ms.</div><div class=3D"gmail_default" style=3D"font-family:monospace"><br><=
/div><div class=3D"gmail_default"><font face=3D"monospace">I've updated=
the docstring to say "Only one badge is=C2=A0</font><span style=3D"fo=
nt-family:monospace">active at a time and a badge previously assigned to a =
frame other than</span><span class=3D"gmail_default" style=3D"font-family:m=
onospace">=C2=A0</span><span style=3D"font-family:monospace">the selected f=
rame is removed before assigning a new badge.</span><span class=3D"gmail_de=
fault" style=3D"font-family:monospace">"</span></div></div><div class=
=3D"gmail_quote"><font face=3D"monospace"><br></font></div><div class=3D"gm=
ail_quote"><font face=3D"monospace"><span class=3D"gmail_default">Attention=
w32 docstring similarly updated to say "</span>Only one frame is flas=
hed at a time and any already active<span class=3D"gmail_default" style=3D"=
font-family:monospace">=C2=A0</span>flashing is canceled and replaced by th=
e new request.<span class=3D"gmail_default">"</span><br></font><div><f=
ont face=3D"monospace"><br></font></div><blockquote class=3D"gmail_quote" s=
tyle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pad=
ding-left:1ex">
> +=C2=A0 =C2=A0 =C2=A0 if (bg_rgb =3D=3D 0xff000000)<br>
> +=C2=A0 =C2=A0 =C2=A0{<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0signal_error ("Invalid background RGB=
", bg);<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0return Qnil;<br>
> +=C2=A0 =C2=A0 =C2=A0}<br>
> +=C2=A0 =C2=A0 =C2=A0 if (fg_rgb =3D=3D 0xff000000)<br>
> +=C2=A0 =C2=A0 =C2=A0{<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0signal_error ("Invalid foreground RGB=
", fg);<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0return Qnil;<br>
> +=C2=A0 =C2=A0 =C2=A0}<br>
<br>
I'd prefer not to signal errors from these functions, but instead to<br=
>
silently return nil.<br></blockquote><div><br></div><div><div class=3D"gmai=
l_default" style=3D"font-family:monospace">Done.</div></div><div class=3D"g=
mail_default" style=3D"font-family:monospace"><br></div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex">
> +=C2=A0 =C2=A0 =C2=A0 /* Derive a font scaled to fit the icon.=C2=A0 F=
irst find the system's<br>
> +=C2=A0 =C2=A0 =C2=A0 base font.=C2=A0 Then scale it to fit icon_heigh=
t.=C2=A0 */<br>
> +=C2=A0 =C2=A0 =C2=A0 HFONT base_font;<br>
> +=C2=A0 =C2=A0 =C2=A0 BOOL clean_up_base_font =3D FALSE;<br>
> +=C2=A0 =C2=A0 =C2=A0 if (system_parameters_info_w_fn)<br>
> +=C2=A0 =C2=A0 =C2=A0{<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0NONCLIENTMETRICSW ncm;<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0memset (&ncm, 0, sizeof (ncm));<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0ncm.cbSize =3D sizeof (ncm);<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0SystemParametersInfoW (SPI_GETNONCLIENTMET=
RICS, sizeof (ncm), &ncm, 0);<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0base_font =3D CreateFontIndirectW (&nc=
m.lfSmCaptionFont);<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0clean_up_base_font =3D TRUE;<br>
<br>
Do we really need to call the "wide" variants of these functions?=
<br></blockquote><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px =
0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">See w32-=
set-wallpaper for what we do about SystemParametersInfoW, and<br>
CreateFontIndirectW is not used anywhere in Emacs.=C2=A0 Can we use<br>
CreateFontIndirect instead, or only use CreateFontIndirectW when it is<br>
supported, like w32-set-wallpaper does with SystemParametersInfoW?<br></blo=
ckquote><div>=C2=A0</div><div><div><div class=3D"gmail_default" style=3D"fo=
nt-family:monospace">I've retested with the narrow variants of these ca=
lls and it works fine.</div><div class=3D"gmail_default" style=3D"font-fami=
ly:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">=C2=A0=
</span></div></div></div><blockquote class=3D"gmail_quote" style=3D"margin:=
0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Are badges at all supported on old Windows versions?=C2=A0 If not, then we<=
br>
can use the "wide" APIs, but we need to do that through function<=
br>
pointers, which are filled at startup time using get_proc_addr, like<br>
we do with MultiByteToWideChar.=C2=A0 Because otherwise older versions of<b=
r>
Windows will refuse to run Emacs that refers to these wide APIs which<br>
don't exist on those old versions.<br></blockquote><div><br></div><div>=
<div class=3D"gmail_default" style=3D"font-family:monospace">The earliest s=
upported version is Windows 7.</div></div><div class=3D"gmail_default" styl=
e=3D"font-family:monospace"><br></div><blockquote class=3D"gmail_quote" sty=
le=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddi=
ng-left:1ex">
> +=C2=A0 =C2=A0 =C2=A0 /* Negative lfHeight indicates pixel units vs. p=
ositive in points.<br>
> +=C2=A0 =C2=A0 =C2=A0 Use the LOGPIXELSY px/in of the primary monitor.=
=C2=A0 */<br>
> +=C2=A0 =C2=A0 =C2=A0 lf.lfHeight =3D -MulDiv(icon_height / 2, /* Fit =
~3 chars.=C2=A0 */<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0^^<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 =C2=A072,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 =C2=A0GetDeviceCaps(GetDC (NULL), LOGPIXELSY));<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ^^<br>
Our style is to leave one space between the function's name and the<br>
opening parenthesis.<br></blockquote><div><br></div><div><div class=3D"gmai=
l_default" style=3D"font-family:monospace">Done.</div></div><div><br></div>=
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-=
left:1px solid rgb(204,204,204);padding-left:1ex">
> +=C2=A0 =C2=A0 =C2=A0 for (int y =3D 0; y < icon_height; ++y)<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 for (int x =3D 0; x < icon_width; ++x)=
<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0{<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 int dx =3D x - circle_cente=
r_x;<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 int dy =3D y - circle_cente=
r_y;<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (dx * dx + dy * dy <=
=3D circle_radius_sq)<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0{<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pixel =3D bitm=
ap_pixels + (y * icon_width + x);<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*pixel |=3D 0x=
ff000000;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 ^^^^^^^^^^<br>
Please add a comment explaining that "magic constant".<br></block=
quote><div><br></div><div><div class=3D"gmail_default" style=3D"font-family=
:monospace">Done.</div></div><div><br></div><blockquote class=3D"gmail_quot=
e" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204)=
;padding-left:1ex">
> +static FlashWindowEx_Proc _flash_window_ex_fn =3D NULL;<br>
<br>
This variable should also be NULL-ified in globals_of_w32fns, so that<br>
we don't risk carrying stale values from when Emacs was dumped.<br></bl=
ockquote><div><br></div><div class=3D"gmail_default" style=3D"font-family:m=
onospace">I moved the lookup into globals.</div><div class=3D"gmail_default=
" style=3D"font-family:monospace"><br></div><blockquote class=3D"gmail_quot=
e" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204)=
;padding-left:1ex">
> +static HWND _w32_request_user_attention_hwnd =3D NULL;<br>
<br>
Again, please don't use variables whose names begin with an<br>
underscore.<br></blockquote><div><br></div><div class=3D"gmail_default" sty=
le=3D"font-family:monospace">Done.</div><div class=3D"gmail_default" style=
=3D"font-family:monospace"><br></div><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddin=
g-left:1ex">
> +DEFUN ("w32-request-user-attention",<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Fw32_request_user_attention,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Sw32_request_user_attention,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A01, 1, 0,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0doc: /* Flash the taskbar icon based on UR=
GENCY.<br>
<br>
AFAIU, FlashWindowEx flashes the frame itself as well, not only the<br>
task-bar icon, doesn't it?<br></blockquote><div><br></div><div><div cla=
ss=3D"gmail_default" style=3D"font-family:monospace">Docstring updated to s=
ay "Flash the selected frame and/or taskbar icon based on URGENCY.&quo=
t;</div></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"mar=
gin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1=
ex">
> +=C2=A0 /* dwFlags<br>
> +=C2=A0 =C2=A0 =C2=A0FLASHW_ALL=C2=A0 =C2=A0 =C2=A0 =C2=A00x00000003 F=
lash both window caption and taskbar button.<br>
> +=C2=A0 =C2=A0 =C2=A0FLASHW_CAPTION=C2=A0 =C2=A00x00000001 Flash the w=
indow caption.<br>
> +=C2=A0 =C2=A0 =C2=A0FLASHW_STOP=C2=A0 =C2=A0 =C2=A0 0x00000000 Stop f=
lashing.<br>
> +=C2=A0 =C2=A0 =C2=A0FLASHW_TIMER=C2=A0 =C2=A0 =C2=A00x00000004 Flash =
continuously, until FLASHW_STOP.<br>
> +=C2=A0 =C2=A0 =C2=A0FLASHW_TIMERNOFG 0x0000000C Flash until window co=
mes to the foreground.<br>
> +=C2=A0 =C2=A0 =C2=A0FLASHW_TRAY=C2=A0 =C2=A0 =C2=A0 0x00000002 Flash =
the taskbar button.=C2=A0 */<br>
<br>
Should we allow flashing only the task-bar icon, as an option?<br></blockqu=
ote><div><br></div><div><div class=3D"gmail_default" style=3D"font-family:m=
onospace">I've refined=C2=A0the=C2=A0behavior so that it is in line wit=
h the other two platforms.=C2=A0 The task bar will flash until the window i=
s focused (or the timeout cancels the flash).=C2=A0 'informational urge=
ncy will flash only the task bar where 'critical flashes both the taskb=
ar and the frame.=C2=A0 I think this is a happy medium.</div></div><div cla=
ss=3D"gmail_default" style=3D"font-family:monospace"><br></div><div class=
=3D"gmail_default" style=3D"font-family:monospace">I've also switched t=
o using the defined win32 magic number names.</div><div><br></div><blockquo=
te class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px =
solid rgb(204,204,204);padding-left:1ex">
> +=C2=A0 flash_info.dwFlags =3D 0x00000000; /* FLASHW_STOP=C2=A0 */<br>
> +=C2=A0 if (_w32_request_user_attention_hwnd !=3D NULL<br>
> +=C2=A0 =C2=A0 =C2=A0 && _w32_request_user_attention_hwnd !=3D=
hwnd)<br>
> +=C2=A0 =C2=A0 {<br>
> +=C2=A0 =C2=A0 =C2=A0 /* Disable attention on the old window handle.=
=C2=A0 */<br>
> +=C2=A0 =C2=A0 =C2=A0 flash_info.hwnd =3D _w32_request_user_attention_=
hwnd;<br>
> +=C2=A0 =C2=A0 =C2=A0 _flash_window_ex_fn (&flash_info);<br>
> +=C2=A0 =C2=A0 =C2=A0 _w32_request_user_attention_hwnd =3D hwnd;<br>
<br>
Does the fact that we store the handle to the frame's window in a<br>
global static variable mean that we cannot flash more than one frame<br>
at a time?<br></blockquote><div><br></div><div><div class=3D"gmail_default"=
style=3D"font-family:monospace">Yes.=C2=A0 Ditto on the attempt to unify t=
he API across platforms.</div></div><div><br></div><blockquote class=3D"gma=
il_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,2=
04,204);padding-left:1ex">
And what happens if the frame is deleted before flashing ends?<br></blockqu=
ote><div><br></div><div><div class=3D"gmail_default" style=3D"font-family:m=
onospace">The win32 API is silent on that.=C2=A0 I assume like other simila=
r functions, the Windows shell will simply stop flashing since it will have=
nothing to flash.</div></div><div><br></div><blockquote class=3D"gmail_quo=
te" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204=
);padding-left:1ex">
> +=C2=A0 if (!NILP (urgency) && SYMBOLP (urgency))<br>
> +=C2=A0 =C2=A0 {<br>
> +=C2=A0 =C2=A0 =C2=A0 /* The intended caller, dock-mode.el 'dock-a=
ttention', has its own<br>
> +=C2=A0 =C2=A0 =C2=A0 timer to clear the attention indicator so this w=
ill flash until<br>
> +=C2=A0 =C2=A0 =C2=A0 cleared via the timer for informational attentio=
n, or the<br>
> +=C2=A0 =C2=A0 =C2=A0 window comes to the foreground for critical atte=
ntion.=C2=A0 */<br>
> +=C2=A0 =C2=A0 =C2=A0 if (EQ (urgency, Qinformational))<br>
> +=C2=A0 =C2=A0 =C2=A0flash_info.dwFlags =3D 0x00000003 | 0x00000004; /=
* FLASHW_TIMER=C2=A0 */<br>
> +=C2=A0 =C2=A0 =C2=A0 else if (EQ (urgency, Qcritical))<br>
> +=C2=A0 =C2=A0 =C2=A0flash_info.dwFlags =3D 0x00000003 | 0x0000000C; /=
* FLASHW_TIMERNOFG=C2=A0 */<br>
> +=C2=A0 =C2=A0 }<br>
<br>
Why are you using numerical values instead of FLASHW_ALL etc.?<br></blockqu=
ote><div><br></div><div><div class=3D"gmail_default" style=3D"font-family:m=
onospace">I changed to the defined names after checking that mingw headers =
define all this stuff.</div></div><div><br></div><blockquote class=3D"gmail=
_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204=
,204);padding-left:1ex">
> +=C2=A0 if (_w32_progress_indicator_hwnd !=3D NULL<br>
> +=C2=A0 =C2=A0 =C2=A0 && _w32_progress_indicator_hwnd !=3D hwn=
d)<br>
> +=C2=A0 =C2=A0 {<br>
> +=C2=A0 =C2=A0 =C2=A0 /* Disable the indicator for the old window hand=
le.=C2=A0 */<br>
> +=C2=A0 =C2=A0 =C2=A0 task_bar_list->lpVtbl->SetProgressState (t=
ask_bar_list,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 _w32_progress_indicator_hwnd,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 TBPF_NOPROGRESS);<br>
> +=C2=A0 =C2=A0 }<br>
> +=C2=A0 _w32_progress_indicator_hwnd =3D hwnd;<br>
<br>
Same questions as above about displaying progress for more than one<br>
frame at a time.<br></blockquote><div><br></div><div class=3D"gmail_default=
" style=3D"font-family:monospace">Ditto answer.</div><div class=3D"gmail_de=
fault" style=3D"font-family:monospace"><br></div><blockquote class=3D"gmail=
_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204=
,204);padding-left:1ex">
> +=C2=A0 /* Scale task bar progress from 0.0-1.0 to 0-100.=C2=A0 */<br>
> +=C2=A0 unsigned int adj_progress =3D 0;<br>
<br>
The MS documentation says the 2 last arguments of SetProgressValue<br>
method are of type ULONGLONG, so why not use that here?<br></blockquote><di=
v><br></div><div class=3D"gmail_default" style=3D"font-family:monospace">Do=
ne.</div><div class=3D"gmail_default" style=3D"font-family:monospace"><br><=
/div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bo=
rder-left:1px solid rgb(204,204,204);padding-left:1ex">
> +=C2=A0 #ifdef WINDOWSNT<br>
> +=C2=A0 /* Taskbar/dock */<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ^^<br=
>
Our conventions are to and a C comment with a period and two spaces<br>
before "*/".<br></blockquote><div><br></div><div><div class=3D"gm=
ail_default" style=3D"font-family:monospace">Done.</div><br></div><div><spa=
n style=3D"font-family:monospace">-St=C3=A9phane</span></div></div></div>
</div>
--0000000000004b240e06441dc01a--
--0000000000004b241006441dc01c
Content-Type: application/octet-stream;
name="0001-Add-system-GUI-dock-integration.patch"
Content-Disposition: attachment;
filename="0001-Add-system-GUI-dock-integration.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_mi93v8v90>
X-Attachment-Id: f_mi93v8v90
RnJvbSA4NmExNTc3ZmY4MjkwMjkxMDIwYjEwMjk0ZjY1MzUyNzczYjY5ZGIzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo
aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFRodSwgMjAgTm92IDIwMjUgMTI6NTQ6NDAgLTA1MDAK
U3ViamVjdDogW1BBVENIXSBBZGQgc3lzdGVtIEdVSSBkb2NrIGludGVncmF0aW9uLgoKSW1wbGVt
ZW50IHN5c3RlbSBHVUkgZG9jayBpY29uIGJhZGdlLCBpY29uIHByb2dyZXNzIGluZGljYXRvciwK
aWNvbiBhdHRlbnRpb24gYWxlcnQgZmVhdHVyZXMgZm9yIEQtQnVzIHBsYXRmb3JtcyAodGVzdGVk
IG9uIEtERQphbmQgR05PTUUpLCBOUyAoR05Vc3RlcC9tYWNPUyksIE1TLVdpbmRvd3MuCgoqIGxp
c3AvZG9jay1tb2RlLmVsOiBOZXcgZmlsZS4KKiBzcmMvbnNmbnMubSAoRm5zX2JhZGdlLCBGbnNf
cHJvZ3Jlc3NfaW5kaWNhdG9yKQooRm5zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24pOiBOZXcgZnVu
Y3Rpb24uCihzeW1zX29mX25zZm5zKTogQWRkIGRlZnN1YnIgU25zX2JhZGdlLApTbnNfcmVxdWVz
dF91c2VyX2F0dGVudGlvbiwgU25zX3Byb2dyZXNzX2luZGljYXRvci4gQWRkIERFRlNZTQpRaW5m
b3JtYXRpb25hbCwgUWNyaXRpY2FsLgoqIHNyYy93MzJmbnMuYyAocmdiX2xpc3RfdG9fY29sb3Jy
ZWYsIEZ3MzJfYmFkZ2UpCihGdzMyX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24sIEZ3MzJfcHJvZ3Jl
c3NfaW5kaWNhdG9yKTogTmV3CmZ1bmN0aW9uLgooc3ltc19vZl93MzJmbnMpOiBBZGQgZGVmc3Vi
ciBTdzMyX2JhZGdlLApTdzMyX3Byb2dyZXNzX2luZGljYXRvciwgU3czMl9yZXF1ZXN0X3VzZXJf
YXR0ZW50aW9uLiBBZGQgREVGU1lNClFpbmZvcm1hdGlvbmFsLCBRY3JpdGljYWwuCiogZG9jL21p
c2MvTWFrZWZpbGUuaW46IEFkZGVkIG5ldyBmaWxlLgoqIGRvYy9taXNjL2RvY2stbW9kZS50ZXhp
OiBOZXcgZmlsZS4KKiBldGMvTkVXUzogQW5ub3VuY2UgdGhlIG5ldyBmZWF0dXJlLgotLS0KIGRv
Yy9taXNjL01ha2VmaWxlLmluICAgIHwgICAxICsKIGRvYy9taXNjL2RvY2stbW9kZS50ZXhpIHwg
MjM3ICsrKysrKysrKysrKysrKysrKysrKwogZXRjL05FV1MgICAgICAgICAgICAgICAgfCAgMTAg
KwogbGlzcC9kb2NrLW1vZGUuZWwgICAgICAgfCA0NTUgKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKwogc3JjL25zZm5zLm0gICAgICAgICAgICAgfCAxMjggKysrKysrKysr
KysKIHNyYy93MzJmbnMuYyAgICAgICAgICAgIHwgMzY2ICsrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDExOTcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IGRvYy9taXNjL2RvY2stbW9kZS50ZXhpCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGlz
cC9kb2NrLW1vZGUuZWwKCmRpZmYgLS1naXQgYS9kb2MvbWlzYy9NYWtlZmlsZS5pbiBiL2RvYy9t
aXNjL01ha2VmaWxlLmluCmluZGV4IDk1YzhhOTJkZWQxLi43YTkyZWMzODg4NiAxMDA2NDQKLS0t
IGEvZG9jL21pc2MvTWFrZWZpbGUuaW4KKysrIGIvZG9jL21pc2MvTWFrZWZpbGUuaW4KQEAgLTY4
LDYgKzY4LDcgQEAgRE9DTUlTQ19XMzIgPQogCiAjIyBJbmZvIGZpbGVzIHRvIGJ1aWxkIGFuZCBp
bnN0YWxsIG9uIGFsbCBwbGF0Zm9ybXMuCiBJTkZPX0NPTU1PTiA9IGF1dGggYXV0b3R5cGUgYm92
aW5lIGNhbGMgY2Ntb2RlIGNsIGRidXMgZGlyZWQteAkJXAorCWRvY2stbW9kZQkJCQkJCQlcCiAJ
ZWJyb3dzZSBlZGUgZWRpZmYgZWR0IGVmYXEgZWdsb3QgZWllaW8gZW1hY3MtZ251dGxzCQlcCiAJ
ZW1hY3MtbWltZSBlcGEgZXJjIGVydCBlc2hlbGwgZXVkYyBld3cgZmx5bWFrZSBmb3JtcyBnbnVz
CVwKIAlodG1sZm9udGlmeSBpZGx3YXZlIGlkbyBpbmZvLmluZm8gbWFpcml4LWVsIG1lc3NhZ2Ug
bWgtZQlcCmRpZmYgLS1naXQgYS9kb2MvbWlzYy9kb2NrLW1vZGUudGV4aSBiL2RvYy9taXNjL2Rv
Y2stbW9kZS50ZXhpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43MTM1
OGMwOWI3ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9taXNjL2RvY2stbW9kZS50ZXhpCkBAIC0w
LDAgKzEsMjM3IEBACitcaW5wdXQgdGV4aW5mbyAgICBAYyAtKi10ZXhpbmZvLSotCisKK0BzZXRm
aWxlbmFtZSAuLi8uLi9pbmZvL2RvY2stbW9kZS5pbmZvCitAc2V0dGl0bGUgR1VJIERvY2sgSWNv
biBGZWF0dXJlcworQGluY2x1ZGUgZG9jc3R5bGUudGV4aQorCitAY29weWluZworVGhpcyBmaWxl
IGRlc2NyaWJlcyBFbWFjcyBzeXN0ZW0gR1VJIGRvY2sgaW50ZWdyYXRpb24uCisKK0NvcHlyaWdo
dCBAY29weXJpZ2h0e30gMjAyNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworQHF1
b3RhdGlvbgorUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29y
IG1vZGlmeSB0aGlzIGRvY3VtZW50Cit1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBGcmVlIERv
Y3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjMgb3IKK2FueSBsYXRlciB2ZXJzaW9uIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3aXRoIG5vCitJbnZhcmlh
bnQgU2VjdGlvbnMsIHdpdGggdGhlIEZyb250LUNvdmVyIFRleHRzIGJlaW5nIGBgQSBHTlUgTWFu
dWFsLCcnCithbmQgd2l0aCB0aGUgQmFjay1Db3ZlciBUZXh0cyBhcyBpbiAoYSkgYmVsb3cuICBB
IGNvcHkgb2YgdGhlIGxpY2Vuc2UKK2lzIGluY2x1ZGVkIGluIHRoZSBzZWN0aW9uIGVudGl0bGVk
IGBgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlJycuCisKKyhhKSBUaGUgRlNGJ3MgQmFj
ay1Db3ZlciBUZXh0IGlzOiBgYFlvdSBoYXZlIHRoZSBmcmVlZG9tIHRvIGNvcHkgYW5kCittb2Rp
ZnkgdGhpcyBHTlUgbWFudWFsLicnCitAZW5kIHF1b3RhdGlvbgorQGVuZCBjb3B5aW5nCisKK0Bk
aXJjYXRlZ29yeSBFbWFjcyBtaXNjIGZlYXR1cmVzCitAZGlyZW50cnkKKyogRW1hY3MgR1VJIERv
Y2s6IChkb2NrKS4gICAgICAgRW1hY3MgR1VJIGRvY2sgaW50ZWdyYXRpb24uCitAZW5kIGRpcmVu
dHJ5CisKK0B0aXRsZXBhZ2UKK0B0aXRsZSBFbWFjcyBTeXN0ZW0gR1VJIERvY2sgSW50ZWdyYXRp
b24KK0BwYWdlCitAdnNraXAgMHB0IHBsdXMgMWZpbGxsCitAaW5zZXJ0Y29weWluZworQGVuZCB0
aXRsZXBhZ2UKKworQGNvbnRlbnRzCisKK0BpZm5vdHRleAorQG5vZGUgVG9wCitAdG9wIEVtYWNz
IEdVSSBEb2NrIEludGVncmF0aW9uCitUaGlzIG1hbnVhbCBkZXNjcmliZXMgRW1hY3Mgc3lzdGVt
IEdVSSBkb2NrIGludGVncmF0aW9uLgorCitUaGUgQGRmbntkb2NrfSBwYWNrYWdlIGFkZHMgRW1h
Y3MgaW50ZWdyYXRpb24gd2l0aCBHVUkgc3lzdGVtIGRvY2sgb3IKK3Rhc2tiYXIgRW1hY3MgYXBw
bGljYXRpb24gaWNvbiBiYWRnZSwgcHJvZ3Jlc3MgaW5kaWNhdG9yLCBhbmQgaWNvbgorYXR0ZW50
aW9uIGFsZXJ0IGZlYXR1cmVzLgorCitAaW5zZXJ0Y29weWluZworCitAbWVudQorKiBPdmVydmll
dzo6ICAgICAgICAgICAgICAgICAgICBPdmVydmlldyBvZiBHVUkgc3lzdGVtIGRvY2sgaW50ZWdy
YXRpb24KKyogUHJlcmVxdWlzaXRlczo6CisqIFVzZXIgT3B0aW9uczo6CisqIEZ1bmN0aW9uIFJl
ZmVyZW5jZTo6CisqIERvY2sgVXNhZ2UgRXhhbXBsZXM6OgorKiBHTlUgRnJlZSBEb2N1bWVudGF0
aW9uIExpY2Vuc2U6OiAgVGhlIGxpY2Vuc2UgZm9yIHRoaXMgZG9jdW1lbnRhdGlvbi4KKyogRnVu
Y3Rpb24gSW5kZXg6OgorKiBWYXJpYWJsZSBJbmRleDo6CitAZW5kIG1lbnUKK0BlbmQgaWZub3R0
ZXgKKworQG5vZGUgT3ZlcnZpZXcKK0BjaGFwdGVyIE92ZXJ2aWV3CisKK1RoZSBEb2NrIHBhY2th
Z2UgcHJvdmlkZXMgaW50ZWdyYXRpb24gd2l0aCB0aGVzZSBzeXN0ZW0gR1VJIGRvY2sKK2ZlYXR1
cmVzOgorCitAaXRlbWl6ZSBAYnVsbGV0CitAaXRlbSBJY29uIGJhZGdlCitAaXRlbSBJY29uIHBy
b2dyZXNzIGluZGljYXRvcgorQGl0ZW0gSWNvbiBhdHRlbnRpb24gYWxlcnQKK0BlbmQgaXRlbWl6
ZQorCitAbm9kZSBQcmVyZXF1aXNpdGVzCitAY2hhcHRlciBQcmVyZXF1aXNpdGVzCisKK0dOVXN0
ZXAsIG1hY09TLCBhbmQgTVMtV2luZG93cyB1c2VycyBuZWVkIG5vIGV4dGVybmFsIGNvbmZpZ3Vy
YXRpb24uCisKK09uIEdOVS9MaW51eCBzeXN0ZW1zLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgdmlh
IEQtQnVzIHRvIGNvbnRyb2wgR1VJCitzaGVsbHMgYW5kL29yIHNoZWxsIGV4dGVuc2lvbnMgc3Vj
aCBhcworQGZpbGV7aHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vMzA3L2Rh
c2gtdG8tZG9jay99IHRoYXQKK2ltcGxlbWVudHMgVWJ1bnR1J3MgVW5pdHkgbGF1bmNoZXIgc3Bl
YyB3aGljaCB5b3UgY2FuIHJlYWQgbW9yZSBhYm91dAoraGVyZSBAZmlsZXtodHRwczovL3dpa2ku
dWJ1bnR1LmNvbS9Vbml0eS9MYXVuY2hlckFQSX0uCisKK1lvdXIgR05VL0xpbnV4IEVtYWNzIGlu
c3RhbmNlIHNob3VsZCBiZSBsYXVuY2hlZCB2aWEgYW4gYXBwcm9wcmlhdGUKK3NoZWxsICJkZXNr
dG9wIiBmaWxlIHN1Y2ggYXMgdGhvc2UgZGlzdHJpYnV0ZWQgd2l0aCBFbWFjczsgZS5nLiwKKyJl
dGMvZW1hY3NjbGllbnQuZGVza3RvcCIuCisKK0Bub2RlIFVzZXIgT3B0aW9ucworQGNoYXB0ZXIg
VXNlciBPcHRpb25zCisKK0BkZWZ2YXIgZG9jay1jbGVhci1hdHRlbnRpb24tb24tZnJhbWUtZm9j
dXMKK1RoZSB2YXJpYWJsZSBAY29kZXtkb2NrLWNsZWFyLWF0dGVudGlvbi1vbi1mcmFtZS1mb2N1
c30gY2FuIGJlCitjdXN0b21pemVkIHRvIGNsZWFyIHRoZSBkb2NrIGljb24gYXR0ZW50aW9uIGlu
ZGljYXRvciB3aGVuIGFueSBFbWFjcyBHVUkKK2ZyYW1lIGlzIGZvY3VzZWQuICBUaGlzIGlzIGln
bm9yZWQgb24gYmFjayBlbmRzIHRoYXQgYXV0b21hdGljYWxseSBjbGVhcgordGhlIGF0dGVudGlv
biBpbmRpY2F0b3IuICBJdCBkZWZhdWx0cyB0byBAY29kZXt0fS4KK0BlbmQgZGVmdmFyCisKK0Bk
ZWZ2YXIgZG9jay1kYnVzLWRlc2t0b3AtZmlsZS1uYW1lCitUaGUgdmFyaWFibGUgQGNvZGV7ZG9j
ay1kYnVzLWRlc2t0b3AtZmlsZS1uYW1lfSBhcHBsaWVzIG9uIEdOVS9MaW51eAorRC1CdXMgc3lz
dGVtcywgYW5kIGNhbiBiZSBjdXN0b21pemVkIHRvIGluZGljYXRlIHdoaWNoIGRlc2t0b3AgZmls
ZSBuYW1lCitELUJ1cyB3aWxsIHVzZSB0byBpZGVudGlmeSB5b3VyIEVtYWNzIGluc3RhbmNlLiAg
SXQgZGVmYXVsdHMgdG8gdGhlCitkZXNrdG9wIGZpbGUgYmFzZSBuYW1lIEBjb2RleyJlbWFjc2Ns
aWVudCJ9IGFuZCBtaWdodCBuZWVkIHRvIGJlIHNldCB0bworQGNvZGV7ImVtYWNzIn0gb24geW91
ciBzeXN0ZW0uICBJbnN0YWxsZWQgRW1hY3MgYnVpbGRzIHR5cGljYWxseSBpbmNsdWRlCitkZWZh
dWx0IGRlc2t0b3AgZmlsZXMgZm9yIGJvdGgsIGFuZCBhcmUgY2FsbGVkCitAY29kZXsiZW1hY3Nj
bGllbnQuZGVza3RvcCJ9IGFuZCBAY29kZXsiZW1hY3MuZGVza3RvcCJ9LCByZXNwZWN0aXZlbHku
CitAZW5kIGRlZnZhcgorCitAZGVmdmFyIGRvY2stZGJ1cy10aW1lb3V0LW1zCitUaGUgdmFyaWFi
bGUgQGNvZGV7ZG9jay1kYnVzLXRpbWVvdXQtbXN9IGFwcGxpZXMgb24gR05VL0xpbnV4IEQtQnVz
CitzeXN0ZW1zLCBhbmQgY2FuIGJlIGN1c3RvbWl6ZWQgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9m
IG1pbGxpc2Vjb25kcworRW1hY3Mgd2lsbCB3YWl0IGZvciBELUJ1cyByZXNwb25zZXMgYmVmb3Jl
IHRpbWluZyBvdXQgYW5kIGNvbnNpZGVyaW5nCittZXNzYWdlcyB1bmRlbGl2ZXJhYmxlLiAgSXQg
ZGVmYXVsdHMgdG8gMjUwMDAgbWlsbGlzZWNvbmRzLCB3aGljaCBpcyB0aGUKK3JlY29tbWVuZGVk
IGRlZmF1bHQgYnkgdGhlIEQtQnVzIHBhY2thZ2UsIHdoaWNoIHNlZSwgQHB4cmVme1RvcCwsLCBk
YnVzLAorRC1CdXMgaW50ZWdyYXRpb24gaW4gRW1hY3N9LgorQGVuZCBkZWZ2YXIKKworQG5vZGUg
RnVuY3Rpb24gUmVmZXJlbmNlCitAY2hhcHRlciBGdW5jdGlvbiBSZWZlcmVuY2UKKworQGZpbmRl
eCBkb2NrLW1vZGUKK0BkZWZ1biBkb2NrLW1vZGUKK0Bjb2Rle2RvY2stbW9kZX0gbXVzdCBiZSBl
bmFibGVkIGJlZm9yZSBjYWxsaW5nIGFueSBvZiBpdHMgZnVuY3Rpb25zLCB0bworaW5pdGlhbGl6
ZSB0aGUgc3lzdGVtIGJhY2sgZW5kLiAgT24gR05VL0xpbnV4IEQtQnVzLCBpbml0aWFsaXphdGlv
biB3aWxsCit0ZXN0IHRoYXQgdGhlIEQtQnVzIGRvY2sgcHJvdG9jb2wgaXMgZXN0YWJsaXNoZWQs
IGFuZCBzaWduYWwgYW4gZXJyb3IgaWYKK2l0IGlzIG5vdC4KK0BlbmQgZGVmdW4KKworQGZpbmRl
eCBkb2NrLWJhZGdlCitAZGVmdW4gZG9jay1iYWRnZSAmb3B0aW9uYWwgY291bnQtb3Itc3RyaW5n
CitTZXQgdGhlIGRvY2sgaWNvbiBiYWRnZSB0byBAdmFye2NvdW50LW9yLXN0cmluZ30uICBJZgor
QHZhcntjb3VudC1vci1zdHJpbmd9IGlzIEBjb2Rle25pbH0sIGNsZWFyIHRoZSBiYWRnZS4KKwor
SWYgYSBzdHJpbmcgaXMgc3BlY2lmaWVkIG9uIGJhY2sgZW5kcyB3aGljaCBkbyBub3Qgc3VwcG9y
dCBzdHJpbmdzLCBpdAoraXMgY29udmVydGVkIHRvIGFuIGludGVnZXIsIGlmIHBvc3NpYmxlLCBv
ciB0byBuaWwuICBHTlVzdGVwIGFuZCBtYWNPUworc3VwcG9ydCBzdHJpbmcgYmFkZ2VzLCB0aGUg
R05VL0xpbnV4IEQtQnVzIHByb3RvY29sIHN1cHBvcnRzIG9ubHkKK2ludGVnZXJzOyBhbnkgc3Ry
aW5nIHRoYXQgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBpbnRlZ2VyIHdpbGwgYmUgdHJlYXRlZAor
YXMgQGNvZGV7bmlsfS4KK0BlbmQgZGVmdW4KKworQGZpbmRleCBkb2NrLWF0dGVudGlvbgorQGRl
ZnVuIGRvY2stYXR0ZW50aW9uICZvcHRpb25hbCB1cmdlbmN5IHRpbWVvdXQKK1NldCB0aGUgZG9j
ayBpY29uIHRvIGFsZXJ0IHRoZSB1c2VyLiAgVGhpcyB3aWxsIHJlc3VsdCBpbiBhIGJvdW5jaW5n
IG9yCitmbGFzaGluZyBkb2NrIGljb24uICBPbiBzb21lIGJhY2sgZW5kcywgZG9jayBpY29uIGF0
dGVudGlvbiB3aWxsCitkaXNwbGF5ZWQgb25seSBpZiBFbWFjcyBpcyBub3QgdGhlIGZvY3VzZWQg
YXBwbGljYXRpb24uCisKK0lmIEB2YXJ7dXJnZW5jeX0gaXMgdGhlIHN5bWJvbCBAY29kZXtpbmZv
cm1hdGlvbmFsfSwgbm9ybWFsIGF0dGVudGlvbiBpcworcmVxdWVzdGVkLiAgSWYgQHZhcnt1cmdl
bmN5fSBpcyB0aGUgc3ltYm9sIEBjb2Rle2NyaXRpY2FsfSwgdXJnZW50CithdHRlbnRpb24gaXMg
cmVxdWVzdGVkLiAgSWYgQHZhcnt1cmdlbnR9IGlzIEBjb2Rle25pbH0sIGNsZWFyIHRoZQorYXR0
ZW50aW9uIGluZGljYXRvci4gIEB2YXJ7dGltZW91dH0gaXMgdGhlIG51bWJlciBvZiBzZWNvbmRz
IHRvIHRpbWUgb3V0CithbmQgYXV0b21hdGljYWxseSByZW1vdmUgdGhlIGluZGljYXRvciwgb3Ig
QGNvZGV7bmlsfSwgd2hpY2ggZG9lcyBub3QKK3RpbWUgb3V0LgorCitPbiBzb21lIGJhY2sgZW5k
cywgYW4gQGNvZGV7aW5mb3JtYXRpb25hbH0gYXR0ZW50aW9uIHJlcXVlc3Qgd2lsbCB0aW1lCitv
dXQgYXV0b21hdGljYWxseS4gIEluIGNvbnRyYXN0LCBhIGBjcml0aWNhbGAgcmVxdWVzdCByZXF1
aXJlcyB0aGF0IHRoZQordXNlciBicmluZyBFbWFjcyBpbnRvIGZvY3VzIGFuZCB3aWxsIG5vdCB0
aW1lIG91dC4gIE9uIHNvbWUgYmFjayBlbmRzLAorQGNvZGV7Y3JpdGljYWx9IGhhcyB0aGUgc2Ft
ZSBlZmZlY3QgYXMgQGNvZGV7aW5mb3JtYXRpb25hbH0uCitAZW5kIGRlZnVuCisKK0BmaW5kZXgg
ZG9jay1wcm9ncmVzcworQGRlZnVuIGRvY2stcHJvZ3Jlc3MgJm9wdGlvbmFsIHByb2dyZXNzCitT
ZXQgdGhlIGRvY2sgaWNvbiB0byBpbmRpY2F0ZSBgYHByb2dyZXNzJycuICBQcm9ncmVzcyBpcyB0
eXBpY2FsbHkKK3JlcHJlc2VudGVkIGFzIGEgZ3JhcGhpY2FsIGJhciB0aGF0IGZyYWN0aW9uYWxs
eSBzcGFucyB0aGUgZG9jayBpY29uLgorCitAdmFye3Byb2dyZXNzfSBpcyBhIGZsb2F0IGluIHRo
ZSByYW5nZSAwLjAgdG8gMS4wLiAgSWYgQHZhcntwcm9ncmVzc30gaXMKK25pbCwgcmVtb3ZlIHRo
ZSBwcm9ncmVzcyBpbmRpY2F0b3IuCitAZW5kIGRlZnVuCisKK0BmaW5kZXggZG90aW1lcy13aXRo
LWRvY2stcHJvZ3Jlc3MtcmVwb3J0ZXIKK0BkZWZtYWMgZG90aW1lcy13aXRoLWRvY2stcHJvZ3Jl
c3MtcmVwb3J0ZXIgKHZhciBjb3VudCBbcmVzdWx0XSkgcmVwb3J0ZXItb3ItbWVzc2FnZSBib2R5
QGRvdHN7fQorVGhpcyBpcyBhIGNvbnZlbmllbmNlIG1hY3JvIGFuYWxvZ291cyB0bworQGNvZGV7
ZG90aW1lcy13aXRoLXByb2dyZXNzLXJlcG9ydGVyfSBhbmQgd29ya3MgdGhlIHNhbWUgd2F5IGFz
CitAY29kZXtkb3RpbWVzfSBkb2VzLCBidXQgYWxzbyByZXBvcnRzIGxvb3AgcHJvZ3Jlc3Mgb24g
dGhlIEVtYWNzIGRvY2sKK2ljb24uICBJdHMgdXNhZ2UgaXMgZGVzY3JpYmVkIGluIEBweHJlZntQ
cm9ncmVzcywsIERpc3BsYXksIGVsaXNwLCBUaGUKK0VtYWNzIExpc3AgUmVmZXJlbmNlIE1hbnVh
bH0uCitAZW5kIGRlZm1hYworCitAZmluZGV4IGRvbGlzdC13aXRoLWRvY2stcHJvZ3Jlc3MtcmVw
b3J0ZXIKK0BkZWZtYWMgZG9saXN0LXdpdGgtZG9jay1wcm9ncmVzcy1yZXBvcnRlciAodmFyIGxp
c3QgW3Jlc3VsdF0pIHJlcG9ydGVyLW9yLW1lc3NhZ2UgYm9keUBkb3Rze30KK1RoaXMgaXMgYSBj
b252ZW5pZW5jZSBtYWNybyBhbmFsb2dvdXMgdG8KK0Bjb2Rle2RvbGlzdC13aXRoLXByb2dyZXNz
LXJlcG9ydGVyfSBhbmQgd29ya3MgdGhlIHNhbWUgd2F5IGFzCitAY29kZXtkb2xpc3R9IGRvZXMs
IGJ1dCBhbHNvIHJlcG9ydHMgbG9vcCBwcm9ncmVzcyBvbiB0aGUgRW1hY3MgZG9jaworaWNvbi4g
IEl0cyB1c2FnZSBpcyBkZXNjcmliZWQgaW4gQHB4cmVme1Byb2dyZXNzLCwgRGlzcGxheSwgZWxp
c3AsIFRoZQorRW1hY3MgTGlzcCBSZWZlcmVuY2UgTWFudWFsfS4KK0BlbmQgZGVmbWFjCisKK0Bu
b2RlIERvY2sgVXNhZ2UgRXhhbXBsZXMKK0BjaGFwdGVyIERvY2sgVXNhZ2UgRXhhbXBsZXMKKwor
QGxpc3AKKzs7IEVuYWJsZSBhbmQgaW5pdGlhbGl6ZSBkb2NrLW1vZGUuCisoZG9jay1tb2RlKQor
Cis7OyBEaXNwbGF5IGEgYmFkZ2Ugb24gdGhlIGRvY2sgaWNvbi4KKyhkb2NrLWJhZGdlIGVtYWNz
LW1ham9yLXZlcnNpb24pCisoZG9jay1iYWRnZSAiMzEiKQorKGRvY2stYmFkZ2UgIlRlc3QiKSA7
IHNob3J0IHN0cmluZyAob24gc3VwcG9ydGVkIHBsYXRmb3JtcykKKworOzsgQ2xlYXIgdGhlIGJh
ZGdlLgorKGRvY2stYmFkZ2UpCisKKzs7IEdldCB0aGUgdXNlcidzIGF0dGVudGlvbi4KKworKGRv
Y2stYXR0ZW50aW9uICdpbmZvcm1hdGlvbmFsIDMpIDsgY2xlYXIgdGhlIHJlcXVlc3QgYWZ0ZXIg
MyBzZWNvbmRzCisoZG9jay1hdHRlbnRpb24gJ2NyaXRpY2FsKQorCis7OyBDbGVhciB0aGUgYXR0
ZW50aW9uIHJlcXVlc3QuCisoZG9jay1hdHRlbnRpb24pCisKKzs7IFJlcG9ydCBgZG90aW1lc2Ag
cHJvZ3Jlc3Mgb24gdGhlIGRvY2sgaWNvbi4KKworKGRvdGltZXMtd2l0aC1kb2NrLXByb2dyZXNz
LXJlcG9ydGVyCisgKGkgMTApICJkb3RpbWVzLXdpdGgtZG9jay1wcm9ncmVzcy1yZXBvcnRlci4u
LiIKKyAoc2l0LWZvciAxKSkKKworOzsgUmVwb3J0IGBkb2xpc3RgIHByb2dyZXNzIG9uIHRoZSBk
b2NrIGljb24uCisKKyhkb2xpc3Qtd2l0aC1kb2NrLXByb2dyZXNzLXJlcG9ydGVyCisgKGkgKG1h
a2UtbGlzdCAxMCB0KSkgImRvbGlzdC13aXRoLWRvY2stcHJvZ3Jlc3MtcmVwb3J0ZXIuLi4iCisg
KHNpdC1mb3IgMSkpCitAZW5kIGxpc3AKKworQG5vZGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBM
aWNlbnNlCitAYXBwZW5kaXggR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlCitAaW5jbHVk
ZSBkb2NsaWNlbnNlLnRleGkKKworQG5vZGUgRnVuY3Rpb24gSW5kZXgKK0B1bm51bWJlcmVkIEZ1
bmN0aW9uIEluZGV4CitAcHJpbnRpbmRleCBmbgorCitAbm9kZSBWYXJpYWJsZSBJbmRleAorQHVu
bnVtYmVyZWQgVmFyaWFibGUgSW5kZXgKK0BwcmludGluZGV4IHZyCisKK0BieWUKKworQGMgRW5k
OgpkaWZmIC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCBmZGIxZWUwMjgxOS4uZjUy
NTJjYzViZjkgMTAwNjQ0Ci0tLSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdTCkBAIC0yNzcyLDYg
KzI3NzIsMTYgQEAgZGV0ZXJtaW5lZCBieSB0aGUgbmV3IHVzZXIgb3B0aW9uICdwdWxzZS1mYWNl
LWR1cmF0aW9uJy4KIAogKiogTWlzY2VsbGFuZW91cwogCisrKysKKyoqKiBOZXcgZmVhdHVyZSAn
ZG9jay1tb2RlJy4KK1RoaXMgcGFja2FnZSBpbnRlZ3JhdGVzIEVtYWNzIHdpdGggc3lzdGVtIEdV
SSAiZG9ja3MiIHRvIGRpc3BsYXkgYSBkb2NrCitpY29uIGJhZGdlLCBwcm9ncmVzcyBpbmRpY2F0
b3IsIGFuZCBhdHRlbnRpb24gYWxlcnRzLiAgSW1wbGVtZW50YXRpb25zCithcmUgYXZhaWxhYmxl
IGZvciBELUJ1cyBwbGF0Zm9ybXMgKGUuZy4sIEtERSBhbmQgR05PTUUpLCBtYWNPUy9HTlVzdGVw
LAorYW5kIE1TLVdpbmRvd3MuICBPbiBHTlUvTGludXggc3lzdGVtcywgc2hlbGwgZXh0ZW5zaW9u
cyBzdWNoIGFzCisiZGFzaC10by1kb2NrIiBtYXkgYmUgcmVxdWlyZWQuICBTZWUKKzxodHRwczov
L2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8zMDcvZGFzaC10by1kb2NrLz4gYW5kCis8
aHR0cHM6Ly93aWtpLnVidW50dS5jb20vVW5pdHkvTGF1bmNoZXJBUEk+LgorCiAtLS0KICoqKiAn
dG9vbHRpcC1tb2RlJyBub3cgc2hvd3MgdG9vbHRpcHMgYWZ0ZXIgZGVsYXkgb24gVFRZIGZyYW1l
cy4KIERpc3BsYXkgb2YgdG9vbHRpcHMgb24gdGV4dC1vbmx5IHRlcm1pbmFscyBub3cgaGFwcGVu
cyBhZnRlcgpkaWZmIC0tZ2l0IGEvbGlzcC9kb2NrLW1vZGUuZWwgYi9saXNwL2RvY2stbW9kZS5l
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWYxODk5ODM1MTUKLS0t
IC9kZXYvbnVsbAorKysgYi9saXNwL2RvY2stbW9kZS5lbApAQCAtMCwwICsxLDQ1NSBAQAorOzs7
IGRvY2stbW9kZS5lbCAtLS0gR1VJIGRlc2t0b3AgZG9jayBzdGF0dXMgLSotIGxleGljYWwtYmlu
ZGluZzogdCAtKi0KKworOzsgQ29weXJpZ2h0IChDKSAyMDI1IEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLgorCis7OyBBdXRob3I6IFN0ZXBoYW5lIE1hcmtzCis7OyBNYWludGFpbmVyOiBl
bWFjcy1kZXZlbEBnbnUub3JnCis7OyBLZXl3b3JkczogY29udmVuaWVuY2UKKzs7IFBhY2thZ2Ut
UmVxdWlyZXM6ICgoZW1hY3MgIjMxLjEiKSkKKworOzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05V
IEVtYWNzLgorCis7OyBHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzs7IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCis7OyAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCis7OyBHTlUgRW1hY3MgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKzs7IGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7
OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlCis7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
Cis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0
cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCis7OzsgQ29tbWVudGFyeToKKworOzsgVXNl
IHRoaXMgcGFja2FnZSB0byBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgb24geW91ciBzdXBwb3J0ZWQg
R1VJICJkb2NrIjoKKzs7Cis7OyBgZG9jay1iYWRnZScgb3ZlcmxheXMgYSB2ZXJ5IHNob3J0IHN0
cmluZyBvciBudW1iZXIgb24gdGhlIEVtYWNzIGRvY2sKKzs7IGljb24uICBZb3UgY2FuIHVzZSB0
aGlzLCBmb3IgZXhhbXBsZSwgdG8gaW5kaWNhdGUgdGhlIG51bWJlciBvZgorOzsgdW5yZWFkIGVt
YWlsIG1lc3NhZ2VzLgorOzsKKzs7IGBkb2NrLWF0dGVudGlvbicgZmxhc2hlcyBvciBib3VuY2Vz
IHRoZSBFbWFjcyBkb2NrIGljb24gdG8gaW5kaWNhdGUKKzs7IHRoYXQgeW91ciBFbWFjcyBzZXNz
aW9uIHdhbnRzIGF0dGVudGlvbi4gIEl0cyBiZWhhdmlvcnMgYXJlIGJhY2stZW5kCis7OyBzcGVj
aWZpYy4KKzs7Cis7OyBgZG9jay1wcm9ncmVzcycgb3ZlcmxheXMgYSBncmFwaGljYWwgcHJvZ3Jl
c3MgYmFyIG9uIHRoZSBFbWFjcyBkb2NrCis7OyBpY29uIHRvIGlsbHVzdHJhdGUgcHJvZ3Jlc3Mg
b2YgYSBwb3RlbnRpYWxseSBsb25nLXJ1bm5pbmcgb3BlcmF0aW9uLgorOzsKKzs7IFRoZSBjb252
ZW5pZW5jZSBtYWNyb3MgYGRvdGltZXMtd2l0aC1kb2NrLXByb2dyZXNzLXJlcG9ydGVyJyBhbmQK
Kzs7IGBkb2xpc3Qtd2l0aC1kb2NrLXByb2dyZXNzLXJlcG9ydGVyJyBkaXNwbGF5IHByb2dyZXNz
IGluIHRoZQorOzsgZWNoby1hcmVhIGFuZCBvbiB0aGUgZG9jayBpY29uLiAgVGhleSBhcmUgYW5h
bG9nb3VzIHRvIHRoZWlyCis7OyBlY2hvLWFyZWEgb25seSBjb3VudGVycGFydHMgYGRvdGltZXMt
d2l0aC1wcm9ncmVzcy1yZXBvcnRlcicgYW5kCis7OyBgZG9saXN0LXdpdGgtcHJvZ3Jlc3MtcmVw
b3J0ZXInLCByZXNwZWN0aXZlbHkuCisKKzs7IE9uIEdOVS9MaW51eCBzeXN0ZW1zLCB0aGUgaW1w
bGVtZW50YXRpb24gaXMgdmlhIEQtQnVzIHRvIGNvbnRyb2wgR1VJCis7OyBzaGVsbHMgYW5kL29y
IHNoZWxsIGV4dGVuc2lvbnMgc3VjaCBhcworOzsgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9y
Zy9leHRlbnNpb24vMzA3L2Rhc2gtdG8tZG9jay8gdGhhdAorOzsgaW1wbGVtZW50IFVidW50dSdz
IFVuaXR5IGxhdW5jaGVyIHNwZWMsIHdoaWNoIHNlZQorOzsgaHR0cHM6Ly93aWtpLnVidW50dS5j
b20vVW5pdHkvTGF1bmNoZXJBUEkuCis7OworOzsgWW91ciBMaW51eCBFbWFjcyBpbnN0YW5jZSBz
aG91bGQgYmUgbGF1bmNoZWQgdmlhIGFuIGFwcHJvcHJpYXRlIHNoZWxsCis7OyAiZGVza3RvcCIg
ZmlsZSBzdWNoIGFzIHRob3NlIGRpc3RyaWJ1dGVkIHdpdGggRW1hY3M7IGUuZy4sCis7OyAiZXRj
L2VtYWNzY2xpZW50LmRlc2t0b3AiLgorOzsKKzs7IE9uIEdOVXN0ZXAgYW5kIG1hY09TIHN5c3Rl
bXMgKGFrYSBOUyksIGFuZCBNUy1XaW5kb3dzLCBuYXRpdmUgQVBJcworOzsgYXJlIHVzZWQuCis7
OworOzsgVG8gYWRkIHN1cHBvcnQgZm9yIGFkZGl0aW9uYWwgc3lzdGVtcywgcHJvdmlkZSBhIGJh
Y2sgZW5kIHRoYXQgaW1wbGVtZW50cworOzsgdGhlIGNsLWdlbmVyaWMgZnVuY3Rpb25zIGJlbG93
LgorCis7OzsgQ29kZToKKworKGV2YWwtd2hlbi1jb21waWxlCisgIChyZXF1aXJlICdkYnVzKSkK
KworKGRlZmdyb3VwIGRvY2sgbmlsCisgICJHVUkgZG9jayBpY29uIGJhZGdlcywgcHJvZ3Jlc3Mg
cmVwb3J0LCBhbGVydHMuIgorICA6Z3JvdXAgJ2NvbnZlbmllbmNlCisgIDp2ZXJzaW9uICIzMS4x
IikKKworKGRlZmN1c3RvbSBkb2NrLWNsZWFyLWF0dGVudGlvbi1vbi1mcmFtZS1mb2N1cyB0Cisg
ICJDbGVhciB0aGUgaWNvbiBhdHRlbnRpb24gaW5kaWNhdG9yIHdoZW4gYW55IEdVSSBmcmFtZSBp
cyBmb2N1c2VkLgorVGhpcyBpcyBpZ25vcmVkIG9uIGJhY2sgZW5kcyB0aGF0IGF1dG9tYXRpY2Fs
bHkgY2xlYXIgdGhlIGF0dGVudGlvbgoraW5kaWNhdG9yLiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAg
OnZlcnNpb24gIjMxLjEiKQorCisoZGVmY3VzdG9tIGRvY2stZGJ1cy1kZXNrdG9wLWZpbGUtbmFt
ZSAiZW1hY3NjbGllbnQiCisgICJELUJ1cyBkZXNrdG9wIGZpbGUgYmFzZSBuYW1lIGRlc3RpbmF0
aW9uIGZvciBkb2NrIG1lc3NhZ2VzLgorVGhpcyBzaG91bGQgYmUgdGhlIGJhc2UgbmFtZSBvZiB0
aGUgZGVza3RvcCBmaWxlIHVzZWQgdG8gbGF1bmNoIGFuIEVtYWNzCitpbnN0YW5jZS4gIEZvciBl
eGFtcGxlLCBpZiB5b3VyIGxhdW5jaGVyIGRlc2t0b3AgZmlsZSBpcyBjYWxsZWQKK1wiZW1hY3Mu
ZGVza3RvcFwiLCB0aGlzIG9wdGlvbiBzaG91bGQgYmUgXCJlbWFjc1wiLiIKKyAgOnR5cGUgJ3N0
cmluZworICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZjdXN0b20gZG9jay1kYnVzLXRpbWVvdXQt
bXMgMjUwMDAKKyAgIk51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3IgRC1CdXMgcmVz
cG9uc2VzLgorVGhlIGRlZmF1bHQgdmFsdWUgbWlycm9ycyB0aGUgYGRidXNgIGRlZmF1bHQuIgor
ICA6dHlwZSAnbmF0bnVtCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZnZhciBkb2NrLS1iYWNr
LWVuZCBuaWwKKyAgIkdlbmVyaWMgZG9jayBtZXRob2Qgc3lzdGVtIGRpc3BhdGNoZXIuIikKKwor
KGRlZnVuIGRvY2stLXNldC1iYWNrLWVuZCAoKQorICAiRGV0ZXJtaW5lIGRvY2sgaG9zdCBzeXN0
ZW0gdHlwZS4iCisgIDs7IE9yZGVyIG1hdHRlcnMgdG8gYWNjb21tb2RhdGUgdGhlIGNhc2VzIHdo
ZXJlIGFuIE5TIG9yIE1TLVdpbmRvd3MKKyAgOzsgYnVpbGQgaGF2ZSBhIGRidXMgZmVhdHVyZS4K
KyAgKGNvbmQgKChib3VuZHAgJ25zLXZlcnNpb24tc3RyaW5nKQorICAgICAgICAgKHNldHEgZG9j
ay0tYmFjay1lbmQgJ25zKSkKKyAgICAgICAgKChib3VuZC1hbmQtdHJ1ZS1wIHczMi1pbml0aWFs
aXplZCkKKyAgICAgICAgIChzZXRxIGRvY2stLWJhY2stZW5kICd3MzIpKQorICAgICAgICAoKGFu
ZCAoZmVhdHVyZXAgJ2RidXNiaW5kKQorICAgICAgICAgICAgICAobWVtYmVyICJvcmcuZnJlZWRl
c2t0b3AubG9naW4xIgorICAgICAgICAgICAgICAgICAgICAgIChkYnVzLWxpc3QtYWN0aXZhdGFi
bGUtbmFtZXMgOnN5c3RlbSkpKQorICAgICAgICAgKHNldHEgZG9jay0tYmFjay1lbmQgJ2RidXMp
KQorICAgICAgICAodAorICAgICAgICAgKHNldHEgZG9jay0tYmFjay1lbmQgbmlsKSkpKQorCis7
OzsjIyNhdXRvbG9hZAorKGRlZmluZS1taW5vci1tb2RlIGRvY2stbW9kZQorICAiR1VJIGRvY2sg
aWNvbiBiYWRnZXMsIHByb2dyZXNzIHJlcG9ydCwgYWxlcnRzLiIKKyAgOmdsb2JhbCB0CisgICh3
aGVuIG5vbmludGVyYWN0aXZlCisgICAgKHdhcm4gIkJhdGNoIG1vZGUgZG9lcyBub3Qgc3VwcG9y
dCBgZG9jayciKSkKKyAgKGNvbmQgKGRvY2stbW9kZQorICAgICAgICAgKGlmIChkb2NrLS1zZXQt
YmFjay1lbmQpCisgICAgICAgICAgICAgKGRvY2stLWVuYWJsZSkKKyAgICAgICAgICAgKHdhcm4g
IlN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGBkb2NrJyIpKSkKKyAgICAgICAgKHQKKyAgICAgICAg
ICh3aGVuIGRvY2stLWJhY2stZW5kCisgICAgICAgICAgIChkb2NrLS1kaXNhYmxlKQorICAgICAg
ICAgICAoc2V0cSBkb2NrLS1iYWNrLWVuZCBuaWwpKSkpKQorCisoY2wtZGVmZ2VuZXJpYyBkb2Nr
LS1lbmFibGUgKCkKKyAgIkVuYWJsZSB0aGUgZG9jayBiYWNrIGVuZC4iKQorCisoY2wtZGVmZ2Vu
ZXJpYyBkb2NrLS1kaXNhYmxlICgpCisgICJEaXNhYmxlIHRoZSBkb2NrIGJhY2sgZW5kLiIpCisK
KyhjbC1kZWZnZW5lcmljIGRvY2stYmFkZ2UgKCZvcHRpb25hbCBjb3VudC1vci1zdHJpbmcpCisg
ICJTZXQgdGhlIGRvY2sgaWNvbiBiYWRnZSB0byBDT1VOVC1PUi1TVFJJTkcuCitJZiBDT1VOVC1P
Ui1TVFJJTkcgaXMgYW4gaW50ZWdlciwgZGlzcGxheSB0aGF0IGFzIHRoZSBpY29uIGJhZGdlLgor
SWYgQ09VTlQtT1ItU1RSSU5HIGlzIGEgc3RyaW5nIG9uIGJhY2sgZW5kcyB3aGljaCBkbyBub3Qg
c3VwcG9ydAorc3RyaW5ncywgY29udmVydCBDT1VOVC1PUi1TVFJJTkcgdG8gYW4gaW50ZWdlciwg
b3IgbmlsLgorSWYgQ09VTlQtT1ItU1RSSU5HIGlzIG5pbCwgb3IgaXMgYW4gZW1wdHkgc3RyaW5n
LCByZW1vdmUgdGhlIGNvdW50ZXIuIikKKworKGNsLWRlZmdlbmVyaWMgZG9jay1hdHRlbnRpb24g
KCZvcHRpb25hbCB1cmdlbmN5IHRpbWVvdXQpCisgICJGbGFzaCB0aGUgZG9jayBpY29uIGFuZC9v
ciBmcmFtZSB0byBhbGVydCB0aGUgdXNlci4KK0lmIFVSR0VOQ1kgaXMgdGhlIHN5bWJvbCBgaW5m
b3JtYXRpb25hbCcsIHJlcXVlc3Qgbm9ybWFsIGF0dGVudGlvbi4KK0lmIFVSR0VOQ1kgaXMgdGhl
IHN5bWJvbCBgY3JpdGljYWwnLCByZXF1ZXN0IHVyZ2VudCBhdHRlbnRpb24uCitJZiBVUkdFTkNZ
IGlzIG5pbCwgY2xlYXIgdGhlIGF0dGVudGlvbiBpbmRpY2F0b3IuCisKK0lmIFRJTUVPVVQgaXMg
bm9uLW5pbCwgY2xlYXIgdGhlIGF0dGVudGlvbiBpbmRpY2F0b3IgYWZ0ZXIgVElNRU9VVAorc2Vj
b25kcywgb3RoZXJ3aXNlIHRoZSBhdHRlbnRpb24gaW5kaWNhdG9yIHdpbGwgYmUgY2xlYXJlZCBl
aXRoZXIgd2hlbgordGhlIGZyYW1lIGlzIGZvY3VzZWQgYnkgdGhlIHVzZXIgb3Igd2hlbiBgZG9j
ay1hdHRlbnRpb24nIGlzIGNhbGxlZCB3aXRoCithIG5pbCBVUkdFTkNZLgorCitPbiBzb21lIGJh
Y2sgZW5kcywgYW4gYGluZm9ybWF0aW9uYWwnIGF0dGVudGlvbiByZXF1ZXN0IHdpbGwgdGltZSBv
dXQKK2F1dG9tYXRpY2FsbHkuICBJbiBjb250cmFzdCwgYSBgY3JpdGljYWxgIHJlcXVlc3QgcmVx
dWlyZXMgdGhhdCB0aGUgdXNlcgorYnJpbmcgRW1hY3MgaW50byBmb2N1cyBhbmQgd2lsbCBub3Qg
dGltZSBvdXQuICBPbiBzb21lIGJhY2sgZW5kcywKK2Bjcml0aWNhbCcgaGFzIHRoZSBzYW1lIGVm
ZmVjdCBhcyBgaW5mb3JtYXRpb25hbCcuIikKKworKGNsLWRlZmdlbmVyaWMgZG9jay1wcm9ncmVz
cyAoJm9wdGlvbmFsIHByb2dyZXNzKQorICAiRGlzcGxheSBhIHByb2dyZXNzIGluZGljYXRvciBv
biB0aGUgZG9jayBpY29uLgorUFJPR1JFU1MgaXMgYSBmbG9hdCBpbiB0aGUgcmFuZ2UgMC4wIHRv
IDEuMC4KK0lmIFBST0dSRVNTIGlzIG5pbCwgcmVtb3ZlIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3Iu
IikKKworKGRlZnVuIGRvY2stLXZhbGlkYXRlLXByb2dyZXNzIChwcm9ncmVzcykKKyAgIlJldHVy
biBQUk9HUkVTUyBhcyBhIGZsb2F0IGluIHRoZSByYW5nZSAwLjAgdG8gMS4wLCBvciBuaWwuIgor
ICAod2hlbiAobmF0bnVtcCBwcm9ncmVzcykKKyAgICAoc2V0cSBwcm9ncmVzcyAoZmxvYXQgcHJv
Z3Jlc3MpKSkKKyAgKHdoZW4gKGFuZCBwcm9ncmVzcyAoPj0gcHJvZ3Jlc3MgMC4wKSAoPD0gcHJv
Z3Jlc3MgMS4wKSkKKyAgICBwcm9ncmVzcykpCisKKwwKKzs7IGBwcm9ncmVzcy1yZXBvcnRlcicg
c3VwcG9ydC4KKworKGRlZnVuIGRvY2stLXByb2dyZXNzLXJlcG9ydGVyLWRvLXVwZGF0ZSAob3Jp
Zy1mdW4gcmVwb3J0ZXIgdmFsdWUgJm9wdGlvbmFsIHN1ZmZpeCkKKyAgImBwcm9ncmVzcy1yZXBv
cnRlci1kby11cGRhdGVgIGFkdmljZSBoZWxwZXIuCitQYXNzIE9SSUctRlVOIFJFUE9SVEVSIFZB
TFVFIFNVRkZJWCB0aHJvdWdoIHRvCitgcHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRlYC4iCisg
IChmdW5jYWxsIG9yaWctZnVuIHJlcG9ydGVyIHZhbHVlIHN1ZmZpeCkKKyAgKGxldCogKChwYXJh
bWV0ZXJzIChjZHIgcmVwb3J0ZXIpKQorICAgICAgICAgKHVwZGF0ZS10aW1lIChhcmVmIHBhcmFt
ZXRlcnMgMCkpCisgICAgICAgICAobWluLXZhbHVlIChhcmVmIHBhcmFtZXRlcnMgMSkpCisgICAg
ICAgICAobWF4LXZhbHVlIChhcmVmIHBhcmFtZXRlcnMgMikpCisgICAgICAgICAoZW5vdWdoLXRp
bWUtcGFzc2VkCisgICAgICAgICAgKG9yIChub3QgdXBkYXRlLXRpbWUpCisgICAgICAgICAgICAg
ICh0aW1lLWxlc3MtcCB1cGRhdGUtdGltZSBuaWwpKSkpCisgICAgKHdoZW4gKGFuZCBtaW4tdmFs
dWUgbWF4LXZhbHVlKQorICAgICAgKHdoZW4gZW5vdWdoLXRpbWUtcGFzc2VkCisgICAgICAgIChs
ZXQqICgob25lLXBlcmNlbnQgKC8gKC0gbWF4LXZhbHVlIG1pbi12YWx1ZSkgMTAwLjApKQorICAg
ICAgICAgICAgICAgKHBlcmNlbnRhZ2UgKGlmICg9IG1heC12YWx1ZSBtaW4tdmFsdWUpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAodHJ1bmNhdGUgKC8gKC0gdmFsdWUgbWluLXZhbHVlKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb25lLXBlcmNlbnQpKSkpKQorICAgICAgICAgIChkb2NrLXBy
b2dyZXNzICgvIHBlcmNlbnRhZ2UgMTAwLjApKSkpCisgICAgICAod2hlbiAoPj0gdmFsdWUgbWF4
LXZhbHVlKQorICAgICAgICAoZG9jay1wcm9ncmVzcyBuaWwpKSkpKQorCisoZGVmdmFyIGRvY2st
LWRvdGltZXMtd2l0aC1kb2NrLXByb2dyZXNzLXJlcG9ydGVyLWFkdmljZS1jb3VudCAwCisgICJF
bnN1cmUgYWR2aWNlIGlzIG5vdCByZW1vdmVkIHdoZW4gbW9yZSB0aGFuIG9uZSBhY3RpdmUgdXNl
LiIpCisKKyhkZWZ1biBkb2NrLS1zZXQtdXAtcHJvZ3Jlc3MtcmVwb3J0ZXIgKCkKKyAgImBwcm9n
cmVzcy1yZXBvcnRlci1kby11cGRhdGVgIGhlbHBlci4iCisgIChpbmNmIGRvY2stLWRvdGltZXMt
d2l0aC1kb2NrLXByb2dyZXNzLXJlcG9ydGVyLWFkdmljZS1jb3VudCkKKyAgKGFkdmljZS1hZGQg
Iydwcm9ncmVzcy1yZXBvcnRlci1kby11cGRhdGUKKyAgICAgICAgICAgICAgOmFyb3VuZAorICAg
ICAgICAgICAgICAjJ2RvY2stLXByb2dyZXNzLXJlcG9ydGVyLWRvLXVwZGF0ZSkpCisKKyhkZWZ1
biBkb2NrLS10ZWFyLWRvd24tcHJvZ3Jlc3MtcmVwb3J0ZXIgKCkKKyAgImBwcm9ncmVzcy1yZXBv
cnRlci1kby11cGRhdGVgIGhlbHBlci4iCisgICh3aGVuICg9IDAgKGRlY2YgZG9jay0tZG90aW1l
cy13aXRoLWRvY2stcHJvZ3Jlc3MtcmVwb3J0ZXItYWR2aWNlLWNvdW50KSkKKyAgICAoYWR2aWNl
LXJlbW92ZSAjJ3Byb2dyZXNzLXJlcG9ydGVyLWRvLXVwZGF0ZQorICAgICAgICAgICAgICAgICAg
ICMnZG9jay0tcHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRlKSkpCisKKyhkZWZtYWNybyBkb3Rp
bWVzLXdpdGgtZG9jay1wcm9ncmVzcy1yZXBvcnRlciAoc3BlYyByZXBvcnRlci1vci1tZXNzYWdl
ICZyZXN0IGJvZHkpCisgICJMb29wIGEgbnVtYmVyIG9mIHRpbWVzIGFuZCByZXBvcnQgcHJvZ3Jl
c3MgaW4gdGhlIGVjaG8gYXJlYSBhbmQgR1VJIGRvY2suCitFdmFsdWF0ZSBCT0RZIHdpdGggVkFS
IGJvdW5kIHRvIHN1Y2Nlc3NpdmUgaW50ZWdlcnMgcnVubmluZyBmcm9tCiswLCBpbmNsdXNpdmUs
IHRvIENPVU5ULCBleGNsdXNpdmUuICBUaGVuIGV2YWx1YXRlIFJFU1VMVCB0byBnZXQKK3RoZSBy
ZXR1cm4gdmFsdWUgKG5pbCBpZiBSRVNVTFQgaXMgb21pdHRlZCkuCisKK1NQRUMgUkVQT1JURVIt
T1ItTUVTU0FHRSBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgaW4KK2Bkb3RpbWVzLXdpdGgtcHJv
Z3Jlc3MtcmVwb3J0ZXJgLCB3aGljaCBzZWUuIgorICAoZGVjbGFyZSAoaW5kZW50IDIpIChkZWJ1
ZyAoKHN5bWJvbHAgZm9ybSAmb3B0aW9uYWwgZm9ybSkgZm9ybSBib2R5KSkpCisgIGAodW53aW5k
LXByb3RlY3QKKyAgICAgICAocHJvZ24KKyAgICAgICAgIChkb2NrLS1zZXQtdXAtcHJvZ3Jlc3Mt
cmVwb3J0ZXIpCisgICAgICAgICAoZG90aW1lcy13aXRoLXByb2dyZXNzLXJlcG9ydGVyICxzcGVj
ICxyZXBvcnRlci1vci1tZXNzYWdlICxAYm9keSkpCisgICAgIChkb2NrLXByb2dyZXNzIG5pbCkK
KyAgICAgKGRvY2stLXRlYXItZG93bi1wcm9ncmVzcy1yZXBvcnRlcikpKQorCisoZGVmbWFjcm8g
ZG9saXN0LXdpdGgtZG9jay1wcm9ncmVzcy1yZXBvcnRlciAoc3BlYyByZXBvcnRlci1vci1tZXNz
YWdlICZyZXN0IGJvZHkpCisgICJMb29wIG92ZXIgYSBsaXN0IGFuZCByZXBvcnQgcHJvZ3Jlc3Mg
aW4gdGhlIGVjaG8gYXJlYSBhbmQgR1VJIGRvY2suCitFdmFsdWF0ZSBCT0RZIHdpdGggVkFSIGJv
dW5kIHRvIGVhY2ggY2FyIGZyb20gTElTVCwgaW4gdHVybi4KK1RoZW4gZXZhbHVhdGUgUkVTVUxU
IHRvIGdldCByZXR1cm4gdmFsdWUsIGRlZmF1bHQgbmlsLgorCitTUEVDIFJFUE9SVEVSLU9SLU1F
U1NBR0UgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGluCitgZG9saXN0LXdpdGgtZG9jay1wcm9n
cmVzcy1yZXBvcnRlcmAsIHdoaWNoIHNlZS4iCisgIChkZWNsYXJlIChpbmRlbnQgMikgKGRlYnVn
ICgoc3ltYm9scCBmb3JtICZvcHRpb25hbCBmb3JtKSBmb3JtIGJvZHkpKSkKKyAgYCh1bndpbmQt
cHJvdGVjdAorICAgICAgIChwcm9nbgorICAgICAgICAgKGRvY2stLXNldC11cC1wcm9ncmVzcy1y
ZXBvcnRlcikKKyAgICAgICAgIChkb2xpc3Qtd2l0aC1wcm9ncmVzcy1yZXBvcnRlciAsc3BlYyAs
cmVwb3J0ZXItb3ItbWVzc2FnZSAsQGJvZHkpKQorICAgICAoZG9jay1wcm9ncmVzcyBuaWwpCisg
ICAgIChkb2NrLS10ZWFyLWRvd24tcHJvZ3Jlc3MtcmVwb3J0ZXIpKSkKKworDAorOzsgRC1CdXMg
c3VwcG9ydC4KKworKGRlZmNvbnN0IGRvY2stLWRidXMtc2VydmljZSAiY29tLmNhbm9uaWNhbC5V
bml0eSIpCisoZGVmY29uc3QgZG9jay0tZGJ1cy1pbnRlcmZhY2UgImNvbS5jYW5vbmljYWwuVW5p
dHkuTGF1bmNoZXJFbnRyeSIpCisKKyhkZWZ2YXIgZG9jay0tZGJ1cy1hdHRlbnRpb24gbmlsCisg
ICJOb24tbmlsIHdoZW4gYXR0ZW50aW9uIGlzIGVuYWJsZWQuIikKKworKGRlY2xhcmUtZnVuY3Rp
b24gZGJ1cy1waW5nICJkYnVzLmVsIikKKyhkZWNsYXJlLWZ1bmN0aW9uIGRidXMtc2VuZC1zaWdu
YWwgImRidXMuZWwiKQorKGRlY2xhcmUtZnVuY3Rpb24gZGJ1cy1saXN0LWFjdGl2YXRhYmxlLW5h
bWVzICJkYnVzLmVsIikKKworKGRlZnVuIGRvY2stLWRidXMtc2VuZC1zaWduYWwgKG1lc3NhZ2Up
CisgICJTZW5kIE1FU1NBR0UgdG8gdGhlIEQtQnVzIGRvY2sgaGFuZGxlci4iCisgIChsZXQgKChh
cHAtdXJpCisgICAgICAgICAoZm9ybWF0ICJhcHBsaWNhdGlvbjovLyVzLmRlc2t0b3AiCisgICAg
ICAgICAgICAgICAgIGRvY2stZGJ1cy1kZXNrdG9wLWZpbGUtbmFtZSkpKQorICAgIChkYnVzLXNl
bmQtc2lnbmFsCisgICAgIDpzZXNzaW9uCisgICAgIGRvY2stLWRidXMtc2VydmljZQorICAgICAi
LyIKKyAgICAgZG9jay0tZGJ1cy1pbnRlcmZhY2UKKyAgICAgIlVwZGF0ZSIKKyAgICAgYXBwLXVy
aQorICAgICBtZXNzYWdlKSkpCisKKyhkZWZ1biBkb2NrLS1kYnVzLWNsZWFyLWF0dGVudGlvbi1v
bi1mcmFtZS1mb2N1cyAoKQorICAiQ2xlYXIgYW4gYWN0aXZlIEQtQnVzIGF0dGVudGlvbiByZXF1
ZXN0IGlmIGFueSBmcmFtZSBmb2N1c2VkLiIKKyAgKHdoZW4gKGFuZCBkb2NrLS1kYnVzLWF0dGVu
dGlvbgorICAgICAgICAgICAgIChjYXRjaCA6Y2xlYXIKKyAgICAgICAgICAgICAgIChkb2xpc3Qg
KGZyYW1lIChmcmFtZS1saXN0KSkKKyAgICAgICAgICAgICAgICAgKHdoZW4gKGVxIChmcmFtZS1m
b2N1cy1zdGF0ZSBmcmFtZSkgdCkKKyAgICAgICAgICAgICAgICAgICAodGhyb3cgOmNsZWFyIHQp
KSkpKQorICAgIChkb2NrLWF0dGVudGlvbiBuaWwpKSkKKworKGRlZnVuIGRvY2stZGJ1cy1waW5n
LXNlcnZpY2UgKCkKKyAgIlJldHVybiBub24tbmlsIGlmIGBkb2NrLS1kYnVzLXNlcnZpY2UnIHJl
c3BvbmRzLgorUmV0dXJuIG5pbCBpZiBubyByZXNwb25zZSB3aXRoaW4gYGRvY2stZGJ1cy10aW1l
b3V0LW1zJy4iCisgIChkYnVzLXBpbmcKKyAgIDpzZXNzaW9uCisgICBkb2NrLS1kYnVzLXNlcnZp
Y2UKKyAgIGRvY2stZGJ1cy10aW1lb3V0LW1zKSkKKworKGNsLWRlZm1ldGhvZCBkb2NrLS1lbmFi
bGUgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvY2stLWJhY2stZW5k
IChlcWwgJ2RidXMpKSkKKyAgKHJlcXVpcmUgJ2RidXMpCisgICh1bmxlc3MgKGRvY2stZGJ1cy1w
aW5nLXNlcnZpY2UpCisgICAgKGVycm9yICJELUJ1cyBzZXJ2aWNlIGAlcycgdW5hdmFpbGFibGUi
IGRvY2stLWRidXMtc2VydmljZSkpCisgICh3aGVuIGRvY2stY2xlYXItYXR0ZW50aW9uLW9uLWZy
YW1lLWZvY3VzCisgICAgKGFkZC1mdW5jdGlvbiA6YWZ0ZXIgYWZ0ZXItZm9jdXMtY2hhbmdlLWZ1
bmN0aW9uCisgICAgICAgICAgICAgICAgICAjJ2RvY2stLWRidXMtY2xlYXItYXR0ZW50aW9uLW9u
LWZyYW1lLWZvY3VzKSkpCisKKyhjbC1kZWZtZXRob2QgZG9jay0tZGlzYWJsZSAoJmNvbnRleHQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvY2stLWJhY2stZW5kIChlcWwgJ2RidXMp
KSkKKyAgKHJlbW92ZS1mdW5jdGlvbiBhZnRlci1mb2N1cy1jaGFuZ2UtZnVuY3Rpb24KKyAgICAg
ICAgICAgICAgICAgICAjJ2RvY2stLWRidXMtY2xlYXItYXR0ZW50aW9uLW9uLWZyYW1lLWZvY3Vz
KSkKKworKGNsLWRlZm1ldGhvZCBkb2NrLWJhZGdlICgmY29udGV4dAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAoZG9jay0tYmFjay1lbmQgKGVxbCAnZGJ1cykpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICZvcHRpb25hbCBjb3VudC1vci1zdHJpbmcpCisgICJTZXQgYmFkZ2UgdG8gQ09V
TlQtT1ItU1RSSU5HIGlmIGFuIGludGVnZXIsIG90aGVyd2lzZSB1c2UgbmlsLgorVGhlIFVuaXR5
IHByb3RvY29sIGRvZXMgbm90IHN1cHBvcnQgc3RyaW5nIGJhZGdlcy4iCisgIChjb25kICgoc3Ry
aW5ncCBjb3VudC1vci1zdHJpbmcpCisgICAgICAgICAoaWYgKHN0cmluZy1lbXB0eS1wIGNvdW50
LW9yLXN0cmluZykKKyAgICAgICAgICAgICAoc2V0cSBjb3VudC1vci1zdHJpbmcgbmlsKQorICAg
ICAgICAgICAobGV0ICgoY291bnQgKHN0cmluZy10by1udW1iZXIgY291bnQtb3Itc3RyaW5nKSkp
CisgICAgICAgICAgICAgKHNldHEgY291bnQtb3Itc3RyaW5nIChpZiAoaW50ZWdlcnAgY291bnQp
IGNvdW50IG5pbCkpKSkpCisgICAgICAgICgobm90IChpbnRlZ2VycCBjb3VudC1vci1zdHJpbmcp
KQorICAgICAgICAgKHNldHEgY291bnQtb3Itc3RyaW5nIG5pbCkpKQorICAoZG9jay0tZGJ1cy1z
ZW5kLXNpZ25hbAorICAgYCgoOmRpY3QtZW50cnkgImNvdW50LXZpc2libGUiCisgICAgICAgICAg
ICAgICAgICAoOnZhcmlhbnQgOmJvb2xlYW4gLChub3QgKG51bGwgY291bnQtb3Itc3RyaW5nKSkp
KQorICAgICAoOmRpY3QtZW50cnkgImNvdW50IgorICAgICAgICAgICAgICAgICAgKDp2YXJpYW50
IDp1aW50MzIgLChpZiAobnVsbCBjb3VudC1vci1zdHJpbmcpIDAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvdW50LW9yLXN0cmluZykpKSkpKQorCisoY2wtZGVmbWV0
aG9kIGRvY2stYXR0ZW50aW9uICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGRvY2stLWJhY2stZW5kIChlcWwgJ2RidXMpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJm9wdGlvbmFsIHVyZ2VuY3kgdGltZW91dCkKKyAgIlJlcXVlc3QgVVJHRU5DWSB1c2Vy
IGF0dGVudGlvbiB3aXRoaW4gdGhlIFRJTUVPVVQgc2Vjb25kcyBpbnRlcnZhbC4KK1VuaXR5IGRv
ZXMgbm90IHN1cHBvcnQgZGlmZmVyZW50aWF0ZWQgdXJnZW5jeS4iCisgIChzZXRxIGRvY2stLWRi
dXMtYXR0ZW50aW9uIHVyZ2VuY3kpCisgIChkb2NrLS1kYnVzLXNlbmQtc2lnbmFsCisgICBgKCg6
ZGljdC1lbnRyeSAidXJnZW50IgorICAgICAgICAgICAgICAgICAgKDp2YXJpYW50IDpib29sZWFu
ICwobm90IChudWxsIHVyZ2VuY3kpKSkpKSkKKyAgKHdoZW4gKGFuZCB1cmdlbmN5IHRpbWVvdXQp
CisgICAgKHJ1bi13aXRoLXRpbWVyCisgICAgIHRpbWVvdXQKKyAgICAgbmlsCisgICAgICMnZG9j
ay1hdHRlbnRpb24gbmlsKSkpCisKKyhjbC1kZWZtZXRob2QgZG9jay1wcm9ncmVzcyAoJmNvbnRl
eHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvY2stLWJhY2stZW5kIChlcWwgJ2Ri
dXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgcHJvZ3Jlc3MpCisg
ICJEaXNwbGF5IGRvY2sgcHJvZ3Jlc3MgZm9yIFBST0dSRVNTLiIKKyAgKHNldHEgcHJvZ3Jlc3Mg
KGRvY2stLXZhbGlkYXRlLXByb2dyZXNzIHByb2dyZXNzKSkKKyAgKGRvY2stLWRidXMtc2VuZC1z
aWduYWwKKyAgIGAoKDpkaWN0LWVudHJ5ICJwcm9ncmVzcy12aXNpYmxlIgorICAgICAgICAgICAg
ICAgICAgKDp2YXJpYW50IDpib29sZWFuICwobm90IChudWxsIHByb2dyZXNzKSkpKQorICAgICAo
OmRpY3QtZW50cnkgInByb2dyZXNzIgorICAgICAgICAgICAgICAgICAgKDp2YXJpYW50IDpkb3Vi
bGUgLChpZiAobnVsbCBwcm9ncmVzcykgMCBwcm9ncmVzcykpKSkpKQorCisMCis7OyBOUyBzdXBw
b3J0LgorCisoZGVjbGFyZS1mdW5jdGlvbiBucy1iYWRnZSAibnNmbnMubSIpCisoZGVjbGFyZS1m
dW5jdGlvbiBucy1yZXF1ZXN0LXVzZXItYXR0ZW50aW9uICJuc2Zucy5tIikKKyhkZWNsYXJlLWZ1
bmN0aW9uIG5zLXByb2dyZXNzLWluZGljYXRvciAibnNmbnMubSIpCisKKyhjbC1kZWZtZXRob2Qg
ZG9jay0tZW5hYmxlICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb2Nr
LS1iYWNrLWVuZCAoZXFsICducykpKQorICAoaWdub3JlKSkKKworKGNsLWRlZm1ldGhvZCBkb2Nr
LS1kaXNhYmxlICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG9jay0t
YmFjay1lbmQgKGVxbCAnbnMpKSkKKyAgKGlnbm9yZSkpCisKKyhjbC1kZWZtZXRob2QgZG9jay1i
YWRnZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvY2stLWJhY2stZW5k
IChlcWwgJ25zKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbmFsIGNvdW50LW9y
LXN0cmluZykKKyAgIlNldCBiYWRnZSB0byBDT1VOVC1PUi1TVFJJTkcsIG9yIGNsZWFyIHRoZSBi
YWRnZS4KK05TIHN1cHBvcnRzIG9ubHkgc3RyaW5nIGJhZGdlcy4iCisgIChjb25kICgoc3RyaW5n
cCBjb3VudC1vci1zdHJpbmcpCisgICAgICAgICAod2hlbiAoc3RyaW5nLWVtcHR5LXAgY291bnQt
b3Itc3RyaW5nKQorICAgICAgICAgICAoc2V0cSBjb3VudC1vci1zdHJpbmcgbmlsKSkpCisgICAg
ICAgICgoaW50ZWdlcnAgY291bnQtb3Itc3RyaW5nKQorICAgICAgICAgKHNldHEgY291bnQtb3It
c3RyaW5nIChudW1iZXItdG8tc3RyaW5nIGNvdW50LW9yLXN0cmluZykpKQorICAgICAgICAodCAo
c2V0cSBjb3VudC1vci1zdHJpbmcgbmlsKSkpCisgIChucy1iYWRnZSBjb3VudC1vci1zdHJpbmcp
KQorCisoY2wtZGVmbWV0aG9kIGRvY2stYXR0ZW50aW9uICgmY29udGV4dAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGRvY2stLWJhY2stZW5kIChlcWwgJ25zKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCB1cmdlbmN5IHRpbWVvdXQpCisgICJSZXF1ZXN0
IFVSR0VOQ1kgdXNlciBhdHRlbnRpb24gd2l0aGluIHRoZSBUSU1FT1VUIHNlY29uZHMgaW50ZXJ2
YWwuIgorICAobnMtcmVxdWVzdC11c2VyLWF0dGVudGlvbiB1cmdlbmN5KQorICAod2hlbiAoYW5k
IHVyZ2VuY3kgdGltZW91dCkKKyAgICAocnVuLXdpdGgtdGltZXIKKyAgICAgdGltZW91dAorICAg
ICBuaWwKKyAgICAgIydkb2NrLWF0dGVudGlvbiBuaWwpKSkKKworKGNsLWRlZm1ldGhvZCBkb2Nr
LXByb2dyZXNzICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG9jay0t
YmFjay1lbmQgKGVxbCAnbnMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9u
YWwgcHJvZ3Jlc3MpCisgICJEaXNwbGF5IGRvY2sgcHJvZ3Jlc3MgZm9yIFBST0dSRVNTLiIKKyAg
KG5zLXByb2dyZXNzLWluZGljYXRvciAoZG9jay0tdmFsaWRhdGUtcHJvZ3Jlc3MgcHJvZ3Jlc3Mp
KSkKKworDAorOzsgTVMtV2luZG93cyBzdXBwb3J0LgorCisoZGVjbGFyZS1mdW5jdGlvbiB3MzIt
YmFkZ2UgInczMmZucy5jIikKKyhkZWNsYXJlLWZ1bmN0aW9uIHczMi1yZXF1ZXN0LXVzZXItYXR0
ZW50aW9uICJ3MzJmbnMuYyIpCisoZGVjbGFyZS1mdW5jdGlvbiB3MzItcHJvZ3Jlc3MtaW5kaWNh
dG9yICJ3MzJmbnMuYyIpCisKKyhkZWZ2YXIgZG9jay13MzItYmFkZ2UtYmcgIiNlNzU4NTciIDsg
cmVkaXNoCisgICJ3MzIgYmFkZ2UgYmFja2dyb3VuZCBSR0IgdHJpcGxlIHN0cmluZy4iKQorCiso
ZGVmdmFyIGRvY2stdzMyLWJhZGdlLWZnICIjZmZmZmZmIiA7IHdoaXRlCisgICJ3MzIgYmFkZ2Ug
Zm9yZWdyb3VuZCBSR0IgdHJpcGxlIHN0cmluZy4iKQorCisoY2wtZGVmbWV0aG9kIGRvY2stLWVu
YWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG9jay0tYmFjay1l
bmQgKGVxbCAndzMyKSkpCisgIChpZ25vcmUpKQorCisoY2wtZGVmbWV0aG9kIGRvY2stLWRpc2Fi
bGUgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb2NrLS1iYWNrLWVu
ZCAoZXFsICd3MzIpKSkKKyAgKGlnbm9yZSkpCisKKyhjbC1kZWZtZXRob2QgZG9jay1iYWRnZSAo
JmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvY2stLWJhY2stZW5kIChlcWwg
J3czMikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCBjb3VudC1vci1zdHJp
bmcpCisgICJTZXQgYmFkZ2UgdG8gQ09VTlQtT1ItU1RSSU5HLCBvciBjbGVhciB0aGUgYmFkZ2Uu
CitEdWUgdG8gTVMtV2luIGljb24gc2l6ZSBsaW1pdGF0aW9ucywgYWJicmV2aWF0ZSBpbnRlZ2Vy
cyBvdXRzaWRlIHRoZQorcmFuZ2UgLTk5LCA5OSB1c2luZyBcIi05OVwiIGFuZCBcIjk5K1wiLCBy
ZXNwZWN0aXZlbHksCithbmQgdHJ1bmNhdGUgc3RyaW5ncyBsb25nZXIgdGhhbiAyIGNoYXJhY3Rl
cnMuIgorICAoY29uZCAoKHN0cmluZ3AgY291bnQtb3Itc3RyaW5nKQorICAgICAgICAgKGlmIChz
dHJpbmctZW1wdHktcCBjb3VudC1vci1zdHJpbmcpCisgICAgICAgICAgICAgKHNldHEgY291bnQt
b3Itc3RyaW5nIG5pbCkKKyAgICAgICAgICAgKHdoZW4gKGxlbmd0aD4gY291bnQtb3Itc3RyaW5n
IDIpCisgICAgICAgICAgICAgKHNldHEgY291bnQtb3Itc3RyaW5nCisgICAgICAgICAgICAgICAg
ICAgKHRydW5jYXRlLXN0cmluZy10by13aWR0aCBjb3VudC1vci1zdHJpbmcgMyAwIG5pbCB0KSkp
KSkKKyAgICAgICAgKChpbnRlZ2VycCBjb3VudC1vci1zdHJpbmcpCisgICAgICAgICAoaWYgKGFu
ZCAoPiBjb3VudC1vci1zdHJpbmcgLTEwMCkKKyAgICAgICAgICAgICAgICAgICg8IGNvdW50LW9y
LXN0cmluZyAxMDApKQorICAgICAgICAgICAgIChzZXRxIGNvdW50LW9yLXN0cmluZyAobnVtYmVy
LXRvLXN0cmluZyBjb3VudC1vci1zdHJpbmcpKQorICAgICAgICAgICAoaWYgKDwgY291bnQtb3It
c3RyaW5nIDApCisgICAgICAgICAgICAgICAoc2V0cSBjb3VudC1vci1zdHJpbmcgIi05OSIpCisg
ICAgICAgICAgICAgKHNldHEgY291bnQtb3Itc3RyaW5nICI5OSsiKSkpKQorICAgICAgICAodCAo
c2V0cSBjb3VudC1vci1zdHJpbmcgbmlsKSkpCisgICh3MzItYmFkZ2UgY291bnQtb3Itc3RyaW5n
IGRvY2stdzMyLWJhZGdlLWJnIGRvY2stdzMyLWJhZGdlLWZnKSkKKworKGNsLWRlZm1ldGhvZCBk
b2NrLWF0dGVudGlvbiAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChk
b2NrLS1iYWNrLWVuZCAoZXFsICd3MzIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jm9wdGlvbmFsIHVyZ2VuY3kgdGltZW91dCkKKyAgIlJlcXVlc3QgVVJHRU5DWSB1c2VyIGF0dGVu
dGlvbiB3aXRoaW4gdGhlIFRJTUVPVVQgc2Vjb25kcyBpbnRlcnZhbC4KK0lmIFVSR0VOQ1kgaXMg
dGhlIHN5bWJvbCBgaW5mb3JtYXRpb25hbCcsIGZsYXNoIHRoZSB0YXNrYmFyIGljb24uCitJZiBV
UkdFTkNZIGlzIHRoZSBzeW1ib2wgYGNyaXRpY2FsJywgZmxhc2ggdGhlIHRhc2tiYXIgaWNvbiBh
bmQgdGhlIGZyYW1lLiIKKyAgKHczMi1yZXF1ZXN0LXVzZXItYXR0ZW50aW9uIHVyZ2VuY3kpCisg
ICh3aGVuIChhbmQgdXJnZW5jeSB0aW1lb3V0KQorICAgIChydW4td2l0aC10aW1lcgorICAgICB0
aW1lb3V0CisgICAgIG5pbAorICAgICAjJ2RvY2stYXR0ZW50aW9uIG5pbCkpKQorCisoY2wtZGVm
bWV0aG9kIGRvY2stcHJvZ3Jlc3MgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChkb2NrLS1iYWNrLWVuZCAoZXFsICd3MzIpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmb3B0aW9uYWwgcHJvZ3Jlc3MpCisgICJEaXNwbGF5IGEgcHJvZ3Jlc3MgaW5kaWNhdG9y
IG9uIHRoZSB0YXNrYmFyIGZvciBQUk9HUkVTUy4iCisgICh3MzItcHJvZ3Jlc3MtaW5kaWNhdG9y
IChkb2NrLS12YWxpZGF0ZS1wcm9ncmVzcyBwcm9ncmVzcykpKQorCisMCisKKyhwcm92aWRlICdk
b2NrLW1vZGUpCisKKzs7OyBkb2NrLW1vZGUuZWwgZW5kcyBoZXJlCmRpZmYgLS1naXQgYS9zcmMv
bnNmbnMubSBiL3NyYy9uc2Zucy5tCmluZGV4IDM1MjhjNGFjZDUwLi4xYThmOTVjMTRlZiAxMDA2
NDQKLS0tIGEvc3JjL25zZm5zLm0KKysrIGIvc3JjL25zZm5zLm0KQEAgLTM2NzQsNiArMzY3NCwx
MjkgQEAgVGhlIHBvc2l0aW9uIGlzIHJldHVybmVkIGFzIGEgY29ucyBjZWxsIChYIC4gWSkgb2Yg
dGhlCiAgIHJldHVybiBRbmlsOwogfQogCitERUZVTiAoIm5zLWJhZGdlIiwgRm5zX2JhZGdlLCBT
bnNfYmFkZ2UsIDEsIDEsIDAsCisgICAgICAgZG9jOiAvKiBTZXQgdGhlIGFwcCBpY29uIGJhZGdl
IHRvIEJBREdFLgorQkFER0Ugc2hvdWxkIGJlIGEgc3RyaW5nIHNob3J0IGVub3VnaCB0byBkaXNw
bGF5IG5pY2VseSBpbiB0aGUgc2hvcnQKK3NwYWNlIGludGVuZGVkIGZvciBiYWRnZXMuCitJZiBC
QURHRSBpcyBuaWwsIGNsZWFyIHRoZSBhcHAgYmFkZ2UuICAqLykKKyAgKExpc3BfT2JqZWN0IGJh
ZGdlKQoreworICBibG9ja19pbnB1dCAoKTsKKyAgaWYgKE5JTFAgKGJhZGdlKSkKKyAgICBbW05T
QXBwIGRvY2tUaWxlXSBzZXRCYWRnZUxhYmVsOiBuaWxdOworICBlbHNlCisgICAgeworICAgICAg
Q0hFQ0tfU1RSSU5HIChiYWRnZSk7CisgICAgICBbW05TQXBwIGRvY2tUaWxlXSBzZXRCYWRnZUxh
YmVsOgorCQkJICBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6IFNTREFUQSAoYmFkZ2Up
XV07CisgICAgfQorICB1bmJsb2NrX2lucHV0ICgpOworICByZXR1cm4gUW5pbDsKK30KKworLyog
VXNlIC0xIHRvIGluZGljYXRlIG5vIGFjdGl2ZSByZXF1ZXN0LiAgKi8KK3N0YXRpYyBOU0ludGVn
ZXIgbnNfcmVxdWVzdF91c2VyX2F0dGVudGlvbl9pZCA9IC0xOworCitERUZVTiAoIm5zLXJlcXVl
c3QtdXNlci1hdHRlbnRpb24iLAorICAgICAgIEZuc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uLAor
ICAgICAgIFNuc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uLAorICAgICAgIDEsIDEsIDAsCisgICAg
ICAgZG9jOiAvKiBCb3VuY2UgdGhlIGFwcCBkb2NrIGljb24gdG8gcmVxdWVzdCB1c2VyIGF0dGVu
dGlvbi4KK0lmIFVSR0VOQ1kgbmlsLCBjYW5jZWwgdGhlIG91dHN0YW5kaW5nIHJlcXVlc3QsIGlm
IGFueS4KK0lmIFVSR0VOQ1kgaXMgdGhlIHN5bWJvbCBgaW5mb3JtYXRpb25hbCcsIGJvdW5jaW5n
IGxhc3RzIGEgZmV3IHNlY29uZHMuCitJZiBVUkdFTkNZIGlzIHRoZSBzeW1ib2wgYGNyaXRpY2Fs
JywgYm91bmNpbmcgbGFzdHMgdW50aWwgRW1hY3MgaXMKK2ZvY3VzZWQuICAqLykKKyAgKExpc3Bf
T2JqZWN0IHVyZ2VuY3kpCit7CisgIGJsb2NrX2lucHV0ICgpOworICBpZiAobnNfcmVxdWVzdF91
c2VyX2F0dGVudGlvbl9pZCAhPSAtMSkKKyAgICB7CisgICAgICBbTlNBcHAgY2FuY2VsVXNlckF0
dGVudGlvblJlcXVlc3Q6IG5zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb25faWRdOworICAgICAgbnNf
cmVxdWVzdF91c2VyX2F0dGVudGlvbl9pZCA9IC0xOworICAgIH0KKyAgaWYgKCFOSUxQICh1cmdl
bmN5KSAmJiBTWU1CT0xQICh1cmdlbmN5KSkKKyAgICB7CisgICAgICBpZiAoRVEgKHVyZ2VuY3ks
IFFpbmZvcm1hdGlvbmFsKSkKKwluc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uX2lkID0gW05TQXBw
IHJlcXVlc3RVc2VyQXR0ZW50aW9uOgorCQkJCQkJTlNJbmZvcm1hdGlvbmFsUmVxdWVzdF07Cisg
ICAgICBlbHNlIGlmIChFUSAodXJnZW5jeSwgUWNyaXRpY2FsKSkKKwluc19yZXF1ZXN0X3VzZXJf
YXR0ZW50aW9uX2lkID0gW05TQXBwIHJlcXVlc3RVc2VyQXR0ZW50aW9uOgorCQkJCQkJTlNDcml0
aWNhbFJlcXVlc3RdOworICAgIH0KKyAgdW5ibG9ja19pbnB1dCAoKTsKKyAgcmV0dXJuIFFuaWw7
Cit9CisKK0RFRlVOICgibnMtcHJvZ3Jlc3MtaW5kaWNhdG9yIiwKKyAgICAgICBGbnNfcHJvZ3Jl
c3NfaW5kaWNhdG9yLAorICAgICAgIFNuc19wcm9ncmVzc19pbmRpY2F0b3IsCisgICAgICAgMSwg
MSwgMCwKKyAgICAgICBkb2M6IC8qIEJvdW5jZSB0aGUgYXBwIGRvY2sgaWNvbiB0byByZXF1ZXN0
IHVzZXIgYXR0ZW50aW9uLgorCSAgICAgICBQUk9HUkVTUyBpcyBhIGZsb2F0IGJldHdlZW4gMC4w
IGFuZCAxLjAuCisJICAgICAgIElmIFBST0dSRVNTIGlzIG5pbCwgcmVtb3ZlIHRoZSBwcm9ncmVz
cyBpbmRpY2F0b3IuICAqLykKKyAgKExpc3BfT2JqZWN0IHByb2dyZXNzKQoreworICBibG9ja19p
bnB1dCAoKTsKKyAgTlNEb2NrVGlsZSAqZG9ja190aWxlID0gW05TQXBwIGRvY2tUaWxlXTsKKyAg
LyogVXNlIE5TTGV2ZWxJbmRpY2F0b3Igd2l0aCByZWxpYWJsZSByZWRyYXdzLCBub3QgTlNQcm9n
cmVzc0luZGljYXRvci4gICovCisgIE5TTGV2ZWxJbmRpY2F0b3IgKmxldmVsX2luZGljYXRvcjsK
KyAgLyogUmV1c2UgdGhlIGluZGljYXRvciBzdWJ2aWV3IG9yIGNyZWF0ZSBvbmUuICovCisgIGlm
IChkb2NrX3RpbGUuY29udGVudFZpZXcKKyAgICAgICYmIFtbZG9ja190aWxlLmNvbnRlbnRWaWV3
IHN1YnZpZXdzXSBjb3VudF0gPiAwCisgICAgICAmJiBbW1tkb2NrX3RpbGUuY29udGVudFZpZXcg
c3Vidmlld3NdIGxhc3RPYmplY3RdCisgICAgICAgICAgICAgICAgICAgICAgICBpc0tpbmRPZkNs
YXNzOltOU0xldmVsSW5kaWNhdG9yIGNsYXNzXV0pCisgICAgbGV2ZWxfaW5kaWNhdG9yID0KKyAg
ICAgIChOU0xldmVsSW5kaWNhdG9yICopW1tbZG9ja190aWxlIGNvbnRlbnRWaWV3XSBzdWJ2aWV3
c10gbGFzdE9iamVjdF07CisgICAgZWxzZQorICAgICAgeworCWlmICghZG9ja190aWxlLmNvbnRl
bnRWaWV3KQorCSAgeworCSAgICBOU0ltYWdlVmlldyogaW1hZ2VfdmlldyA9IFtbTlNJbWFnZVZp
ZXcgYWxsb2NdIGluaXRdOworCSAgICBbaW1hZ2VfdmlldyBzZXRJbWFnZTogW05TQXBwIGFwcGxp
Y2F0aW9uSWNvbkltYWdlXV07CisJICAgIFtkb2NrX3RpbGUgc2V0Q29udGVudFZpZXc6IGltYWdl
X3ZpZXddOworCSAgfQorCS8qIFNldCB3aWR0aCB0byB0aGUgd2lkdGggb2YgdGhlIGFwcGxpY2F0
aW9uIGljb24sIGFuZCBoZWlnaHQgdG8KKwkgICAlIG9mIHRoZSBpY29uIGhlaWdodCB0byByZXNw
ZWN0IHNjYWxlZCBpY29ucy4gICovCisJZmxvYXQgd2lkdGggPSBbW05TQXBwIGFwcGxpY2F0aW9u
SWNvbkltYWdlXSBzaXplXS53aWR0aDsKKwlmbG9hdCBoZWlnaHQgPSAwLjEwICogW1tOU0FwcCBh
cHBsaWNhdGlvbkljb25JbWFnZV0gc2l6ZV0uaGVpZ2h0OworCWxldmVsX2luZGljYXRvciA9CisJ
ICBbW05TTGV2ZWxJbmRpY2F0b3IgYWxsb2NdIGluaXRXaXRoRnJhbWU6CisJCQkJICAgICAgTlNN
YWtlUmVjdCAoMC4wLCAwLjAsCisJCQkJCQkgIHdpZHRoLCBoZWlnaHQpXTsKKwlbbGV2ZWxfaW5k
aWNhdG9yIHNldFdhbnRzTGF5ZXI6IFlFU107IC8qIFBlcmZvcm1hbmNlLiAgKi8KKwlbbGV2ZWxf
aW5kaWNhdG9yIHNldEVuYWJsZWQ6IE5PXTsgLyogSWdub3JlIG1vdXNlIGlucHV0LiAgKi8KKwlb
bGV2ZWxfaW5kaWNhdG9yIHNldExldmVsSW5kaWNhdG9yU3R5bGU6CisJCQkgICBOU0xldmVsSW5k
aWNhdG9yU3R5bGVDb250aW51b3VzQ2FwYWNpdHldOworCS8qIE1hdGNoIE5TUHJvZ3Jlc3NJbmRp
Y2F0b3IgY29sb3IuICAqLworCVtsZXZlbF9pbmRpY2F0b3Igc2V0RmlsbENvbG9yOiBbTlNDb2xv
ciBjb250cm9sQWNjZW50Q29sb3JdXTsKKwlbbGV2ZWxfaW5kaWNhdG9yIHNldE1pblZhbHVlOiAw
LjBdOworCVtsZXZlbF9pbmRpY2F0b3Igc2V0TWF4VmFsdWU6IDEuMF07CisJLyogVGhlIGNvbnRl
bnRWaWV3IHRha2VzIG93bmVyc2hpcC4gICovCisJW2RvY2tfdGlsZS5jb250ZW50VmlldyBhZGRT
dWJ2aWV3OiBsZXZlbF9pbmRpY2F0b3JdOworICAgICAgfQorICBkb3VibGUgcHJvZ3Jlc3NfdmFs
dWU7CisgIEJPT0wgaGlkZSA9IChOSUxQIChwcm9ncmVzcykKKwkgICAgICAgfHwgKCFOSUxQIChw
cm9ncmVzcykgJiYgIShGTE9BVFAgKHByb2dyZXNzKSkpKTsKKyAgaWYgKCFoaWRlKQorICAgIHsK
KyAgICAgIHByb2dyZXNzX3ZhbHVlID0gWEZMT0FUX0RBVEEgKHByb2dyZXNzKTsKKyAgICAgIGhp
ZGUgPSAocHJvZ3Jlc3NfdmFsdWUgPCAwLjAgfHwgcHJvZ3Jlc3NfdmFsdWUgPiAxLjApOworICAg
IH0KKyAgaWYgKGhpZGUpCisgICAgeworICAgICAgW2xldmVsX2luZGljYXRvciBzZXREb3VibGVW
YWx1ZTogMC4wXTsKKyAgICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0SGlkZGVuOiBZRVNdOworICAg
IH0KKyAgZWxzZQorICAgIHsKKyAgICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0RG91YmxlVmFsdWU6
IHByb2dyZXNzX3ZhbHVlXTsKKyAgICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0SGlkZGVuOiBOT107
CisgICAgfQorICBbZG9ja190aWxlIGRpc3BsYXldOworICB1bmJsb2NrX2lucHV0ICgpOworICBy
ZXR1cm4gUW5pbDsKK30KKwogI2lmZGVmIE5TX0lNUExfQ09DT0EKIAogREVGVU4gKCJucy1zZW5k
LWl0ZW1zIiwKQEAgLTM5NTcsNiArNDA4MCw5IEBAIC0gKExpc3BfT2JqZWN0KWxpc3BTdHJpbmcK
ICAgZGVmc3ViciAoJlNuc19zZXRfbW91c2VfYWJzb2x1dGVfcGl4ZWxfcG9zaXRpb24pOwogICBk
ZWZzdWJyICgmU25zX21vdXNlX2Fic29sdXRlX3BpeGVsX3Bvc2l0aW9uKTsKICAgZGVmc3ViciAo
JlNuc19zaG93X2NoYXJhY3Rlcl9wYWxldHRlKTsKKyAgZGVmc3ViciAoJlNuc19iYWRnZSk7Cisg
IGRlZnN1YnIgKCZTbnNfcmVxdWVzdF91c2VyX2F0dGVudGlvbik7CisgIGRlZnN1YnIgKCZTbnNf
cHJvZ3Jlc3NfaW5kaWNhdG9yKTsKICNpZmRlZiBOU19JTVBMX0NPQ09BCiAgIGRlZnN1YnIgKCZT
bnNfc2VuZF9pdGVtcyk7CiAjZW5kaWYKQEAgLTQwMjMsNCArNDE0OSw2IEBAIC0gKExpc3BfT2Jq
ZWN0KWxpc3BTdHJpbmcKICAgREVGU1lNIChRYXNzcV9kZWxldGVfYWxsLCAiYXNzcS1kZWxldGUt
YWxsIik7CiAgIERFRlNZTSAoUXJ1bl9hdF90aW1lLCAicnVuLWF0LXRpbWUiKTsKICAgREVGU1lN
IChReF9oaWRlX3RpcCwgIngtaGlkZS10aXAiKTsKKyAgREVGU1lNIChRaW5mb3JtYXRpb25hbCwg
ImluZm9ybWF0aW9uYWwiKTsKKyAgREVGU1lNIChRY3JpdGljYWwsICJjcml0aWNhbCIpOwogfQpk
aWZmIC0tZ2l0IGEvc3JjL3czMmZucy5jIGIvc3JjL3czMmZucy5jCmluZGV4IDY3OWU4MTk3ZmQ4
Li40M2RhYjg0YzRkZCAxMDA2NDQKLS0tIGEvc3JjL3czMmZucy5jCisrKyBiL3NyYy93MzJmbnMu
YwpAQCAtMzUsNyArMzUsMTIgQEAgI2RlZmluZSBfV0lOMzJfV0lOTlQgMHgwNjAwCiAjaW5jbHVk
ZSA8Yy1jdHlwZS5oPgogCiAjZGVmaW5lIENPQkpNQUNST1MgLyogQXNrIGZvciBDIGRlZmluaXRp
b25zIGZvciBDT00uICAqLworI2lmICFkZWZpbmVkIE1JTkdXX1c2NCAmJiAhZGVmaW5lZCBDWUdX
SU4KKyMgZGVmaW5lIElOSVRHVUlECisjZW5kaWYKKyNpbmNsdWRlIDxpbml0Z3VpZC5oPgogI2lu
Y2x1ZGUgPHNobG9iai5oPgorI2luY2x1ZGUgPHNob2JqaWRsLmg+CiAjaW5jbHVkZSA8b2xlaWRs
Lmg+CiAjaW5jbHVkZSA8b2JqaWRsLmg+CiAjaW5jbHVkZSA8b2xlMi5oPgpAQCAtMjM3LDYgKzI0
Miw4IEBAIERFQ0xBUkVfSEFORExFKEhNT05JVE9SKTsKIHR5cGVkZWYgQk9PTCAoV0lOQVBJICog
U2V0R2VzdHVyZUNvbmZpZ19wcm9jKSAoSFdORCwgRFdPUkQsIFVJTlQsCiAJCQkJCSAgICAgICBF
bWFjc19QR0VTVFVSRUNPTkZJRywgVUlOVCk7CiAKK3R5cGVkZWYgQk9PTCAoV0lOQVBJICogRmxh
c2hXaW5kb3dFeF9Qcm9jKSAoUEZMQVNIV0lORk8gcGZ3aSk7CisKIHN0YXRpYyBUcmFja01vdXNl
RXZlbnRfUHJvYyB0cmFja19tb3VzZV9ldmVudF9mbiA9IE5VTEw7CiBzdGF0aWMgSW1tR2V0Q29t
cG9zaXRpb25TdHJpbmdfUHJvYyBnZXRfY29tcG9zaXRpb25fc3RyaW5nX2ZuID0gTlVMTDsKIHN0
YXRpYyBJbW1HZXRDb250ZXh0X1Byb2MgZ2V0X2ltZV9jb250ZXh0X2ZuID0gTlVMTDsKQEAgLTI1
OSw2ICsyNjYsNyBAQCBERUNMQVJFX0hBTkRMRShITU9OSVRPUik7CiBzdGF0aWMgV1RTUmVnaXN0
ZXJTZXNzaW9uTm90aWZpY2F0aW9uX1Byb2MgV1RTUmVnaXN0ZXJTZXNzaW9uTm90aWZpY2F0aW9u
X2ZuID0gTlVMTDsKIHN0YXRpYyBSZWdpc3RlclRvdWNoV2luZG93X3Byb2MgUmVnaXN0ZXJUb3Vj
aFdpbmRvd19mbiA9IE5VTEw7CiBzdGF0aWMgU2V0R2VzdHVyZUNvbmZpZ19wcm9jIFNldEdlc3R1
cmVDb25maWdfZm4gPSBOVUxMOworc3RhdGljIEZsYXNoV2luZG93RXhfUHJvYyBmbGFzaF93aW5k
b3dfZXhfZm4gPSBOVUxMOwogCiBleHRlcm4gQXBwZW5kTWVudVdfUHJvYyB1bmljb2RlX2FwcGVu
ZF9tZW51OwogCkBAIC0xMTAxMCw2ICsxMTAxOCwzNTIgQEAgREVGVU4gKCJ3MzItc3lzdGVtLWlk
bGUtdGltZSIsIEZ3MzJfc3lzdGVtX2lkbGVfdGltZSwgU3czMl9zeXN0ZW1faWRsZV90aW1lLAog
CiAjZW5kaWYKIAorDAorI2lmZGVmIFdJTkRPV1NOVAorCisvKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwkJCSAg
ICAgVGFza2JhciAvIERvY2sKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogVHJhY2sgdGhlIHdpbmRv
dyBoYW5kbGUgZm9yIHRoZSBnbG9iYWwgYmFkZ2UgaWNvbi4gKi8KK3N0YXRpYyBIV05EIHczMl9i
YWRnZV9od25kID0gTlVMTDsKKworREVGVU4gKCJ3MzItYmFkZ2UiLAorICAgICAgIEZ3MzJfYmFk
Z2UsCisgICAgICAgU3czMl9iYWRnZSwKKyAgICAgICAzLCAzLCAwLAorICAgICAgIGRvYzogLyog
U2V0IHRoZSB0YXNrYmFyIGljb24gb3ZlcmxheSBpbWFnZSBiYXNlZCBvbiBCQURHRS4KK0JBREdF
IGlzIGEgc3RyaW5nLiAgSWYgQkFER0UgaXMgbmlsLCByZW1vdmUgdGhlIG92ZXJsYXkuICBEbyBu
b3RoaW5nIGlmCitXaW5kb3dzIGRvZXMgbm90IHN1cHBvcnQgdGhlIElUYXNrYmFyTGlzdDMgaW50
ZXJmYWNlIGFuZCByZXR1cm4gbmlsLAorb3RoZXJ3aXNlIHJldHVybiB0LiAgRG8gbm90aGluZyBp
ZiB0aGUgc2VsZWN0ZWQgZnJhbWUgaXMgbm90ICh5ZXQpCithc3NvY2lhdGVkIHdpdGggYSB3aW5k
b3cgaGFuZGxlLiAgQkFDS0dST1VORCBhbmQgRk9SRUdST1VORCBhcmUgUkdCCit0cmlwbGV0IHN0
cmluZ3Mgb2YgdGhlIGZvcm0gXCIjUlJHR0JCXCIuICBOb3RlOiBPbmx5IG9uZSBiYWRnZSBpcyBh
Y3RpdmUKK2F0IGEgdGltZSBhbmQgYSBiYWRnZSBwcmV2aW91c2x5IGFzc2lnbmVkIHRvIGEgZnJh
bWUgb3RoZXIgdGhhbiB0aGUKK3NlbGVjdGVkIGZyYW1lIGlzIHJlbW92ZWQgYmVmb3JlIGFzc2ln
bmluZyBhIG5ldyBiYWRnZS4gICovKQorICAoTGlzcF9PYmplY3QgYmFkZ2UsIExpc3BfT2JqZWN0
IGJhY2tncm91bmQsIExpc3BfT2JqZWN0IGZvcmVncm91bmQpCit7CisgIENvSW5pdGlhbGl6ZSAo
TlVMTCk7CisgIElUYXNrYmFyTGlzdDMgKnRhc2tfYmFyX2xpc3QgPSBOVUxMOworICBIUkVTVUxU
IHIgPSBDb0NyZWF0ZUluc3RhbmNlKCZDTFNJRF9UYXNrYmFyTGlzdCwKKwkJCSAgICAgICBOVUxM
LAorCQkJICAgICAgIENMU0NUWF9JTlBST0NfU0VSVkVSLAorCQkJICAgICAgICZJSURfSVRhc2ti
YXJMaXN0MywKKwkJCSAgICAgICAodm9pZCAqKikmdGFza19iYXJfbGlzdCk7CisgIGlmIChyICE9
IFNfT0spCisgICAgcmV0dXJuIFFuaWw7CisKKyAgSFdORCBod25kID0gTlVMTDsKKyAgc3RydWN0
IGZyYW1lICpzZiA9IFNFTEVDVEVEX0ZSQU1FICgpOworICBpZiAoRlJBTUVfVzMyX1AgKHNmKSAm
JiBGUkFNRV9MSVZFX1AgKHNmKSkKKyAgICBod25kID0gRlJBTUVfVzMyX1dJTkRPVyAoc2YpOwor
ICBpZiAoaHduZCA9PSBOVUxMKQorICAgIHsKKyAgICAgIHRhc2tfYmFyX2xpc3QtPmxwVnRibC0+
UmVsZWFzZSh0YXNrX2Jhcl9saXN0KTsKKyAgICAgIHJldHVybiBRbmlsOworICAgIH0KKworICAv
KiBSZW1vdmUgdGhlIGJhZGdlIG92ZXJsYXkgZm9yIHRoZSBvbGQgd2luZG93IGhhbmRsZS4gICov
CisgIGlmICh3MzJfYmFkZ2VfaHduZCAhPSBOVUxMICYmIHczMl9iYWRnZV9od25kICE9IGh3bmQp
CisgICAgICB0YXNrX2Jhcl9saXN0LT5scFZ0YmwtPlNldE92ZXJsYXlJY29uICh0YXNrX2Jhcl9s
aXN0LAorCQkJCQkgICAgIHczMl9iYWRnZV9od25kLAorCQkJCQkgICAgIE5VTEwsCisJCQkJCSAg
ICAgTlVMTCk7CisKKyAgaWYgKCFOSUxQIChiYWRnZSkgJiYgU1RSSU5HUCAoYmFkZ2UpCisgICAg
ICAmJiBTVFJJTkdQIChiYWNrZ3JvdW5kKSAmJiBTVFJJTkdQIChmb3JlZ3JvdW5kKSkKKyAgICB7
CisgICAgICBDT0xPUlJFRiBiZ19yZ2I7CisgICAgICBDT0xPUlJFRiBmZ19yZ2I7CisgICAgICB1
bnNpZ25lZCBzaG9ydCByLCBnLCBiOworICAgICAgaWYgKHBhcnNlX2NvbG9yX3NwZWMgKFNTREFU
QSAoYmFja2dyb3VuZCksICZyLCAmZywgJmIpKQorCWJnX3JnYiA9IFJHQiAociwgYiwgYik7Cisg
ICAgICBlbHNlCisJcmV0dXJuIFFuaWw7CisgICAgICBpZiAocGFyc2VfY29sb3Jfc3BlYyAoU1NE
QVRBIChmb3JlZ3JvdW5kKSwgJnIsICZnLCAmYikpCisJZmdfcmdiID0gUkdCIChyLCBiLCBiKTsK
KyAgICAgIGVsc2UKKwlyZXR1cm4gUW5pbDsKKworICAgICAgLyogUHJlcGFyZSBhIHN0cmluZyBm
b3IgZHJhd2luZyBhbmQgYXMgYWx0LXRleHQuICAqLworICAgICAgTGlzcF9PYmplY3QgYmFkZ2Vf
dXRmOCA9IEVOQ09ERV9VVEZfOCAoYmFkZ2UpOworICAgICAgaW50IHdpZGVfbGVuID0gcE11bHRp
Qnl0ZVRvV2lkZUNoYXIgKENQX1VURjgsIDAsCisJCQkJCSAgIFNTREFUQSAoYmFkZ2VfdXRmOCks
CisJCQkJCSAgIC0xLCBOVUxMLCAwKTsKKyAgICAgIHdjaGFyX3QgKmJhZGdlX3cgPSBhbGxvY2Eg
KCh3aWRlX2xlbiArIDEpICogc2l6ZW9mICh3Y2hhcl90KSk7CisgICAgICBwTXVsdGlCeXRlVG9X
aWRlQ2hhciAoQ1BfVVRGOCwgMCwgU1NEQVRBIChiYWRnZV91dGY4KSwgLTEsCisJCQkgICAgKExQ
V1NUUikgYmFkZ2VfdywKKwkJCSAgICB3aWRlX2xlbik7CisKKyAgICAgIC8qIFVzZSB0aGUgc21h
bGwgaWNvbiBzaXplIFdpbmRvd3Mgc3VnZ2VzdHMgdG8gbm90IGhhcmQgY29kZSAxNngxNi4gICov
CisgICAgICBpbnQgaWNvbl93aWR0aCA9IEdldFN5c3RlbU1ldHJpY3MgKFNNX0NYU01JQ09OKTsK
KyAgICAgIGludCBpY29uX2hlaWdodCA9IEdldFN5c3RlbU1ldHJpY3MgKFNNX0NYU01JQ09OKTsK
KworICAgICAgSERDIGh3bmRfZGMgPSBHZXREQyAoaHduZCk7CisgICAgICBIREMgZGMgPSBDcmVh
dGVDb21wYXRpYmxlREMgKGh3bmRfZGMpOworCisgICAgICBCSVRNQVBWNUhFQURFUiBiaTsKKyAg
ICAgIG1lbXNldCAoJmJpLCAwLCBzaXplb2YgKGJpKSk7CisgICAgICBiaS5iVjVTaXplID0gc2l6
ZW9mIChiaSk7CisgICAgICBiaS5iVjVXaWR0aCA9IGljb25fd2lkdGg7CisgICAgICBiaS5iVjVI
ZWlnaHQgPSAtaWNvbl9oZWlnaHQ7IC8qIE5lZ2F0aXZlIGZvciBhIHRvcC1kb3duIERJQi4gICov
CisgICAgICBiaS5iVjVQbGFuZXMgPSAxOworICAgICAgYmkuYlY1Qml0Q291bnQgPSAzMjsKKyAg
ICAgIGJpLmJWNUNvbXByZXNzaW9uID0gQklfQklURklFTERTOyAgLyogRW5hYmxlIHRoZSBtYXNr
cyBiZWxvdy4gICovCisgICAgICBiaS5iVjVSZWRNYXNrICAgPSAgMHgwMEZGMDAwMDsKKyAgICAg
IGJpLmJWNUdyZWVuTWFzayA9ICAweDAwMDBGRjAwOworICAgICAgYmkuYlY1Qmx1ZU1hc2sgID0g
IDB4MDAwMDAwRkY7CisgICAgICBiaS5iVjVBbHBoYU1hc2sgPSAgMHhGRjAwMDAwMDsKKworICAg
ICAgRFdPUkQgKmJpdG1hcF9waXhlbHM7CisgICAgICBIQklUTUFQIGJpdG1hcCA9IENyZWF0ZURJ
QlNlY3Rpb24gKGRjLCAoQklUTUFQSU5GTyAqKSAmYmksCisJCQkJCSBESUJfUkdCX0NPTE9SUywK
KwkJCQkJICh2b2lkICoqKSAmYml0bWFwX3BpeGVscywKKwkJCQkJIE5VTEwsIDApOworICAgICAg
SEdESU9CSiBvbGRfYml0bWFwID0gU2VsZWN0T2JqZWN0KGRjLCBiaXRtYXApOworCisgICAgICAv
KiBEcmF3IGEgY2lyY2xlIGZpbGxlZCB3aXRoIGJnLiAgKi8KKyAgICAgIEhCUlVTSCBiZ19icnVz
aCA9IENyZWF0ZVNvbGlkQnJ1c2ggKGJnX3JnYik7CisgICAgICBIR0RJT0JKIG9sZF9icnVzaCA9
IFNlbGVjdE9iamVjdCAoZGMsIGJnX2JydXNoKTsKKyAgICAgIEVsbGlwc2UgKGRjLCAwLCAwLCBp
Y29uX3dpZHRoLCBpY29uX2hlaWdodCk7CisgICAgICBTZWxlY3RPYmplY3QgKGRjLCBvbGRfYnJ1
c2gpOworICAgICAgRGVsZXRlT2JqZWN0IChiZ19icnVzaCk7CisKKyAgICAgIC8qIERlcml2ZSBh
IGZvbnQgc2NhbGVkIHRvIGZpdCB0aGUgaWNvbi4gIEZpcnN0IGZpbmQgdGhlIHN5c3RlbSdzCisJ
IGJhc2UgZm9udC4gIFRoZW4gc2NhbGUgaXQgdG8gZml0IGljb25faGVpZ2h0LiAgKi8KKyAgICAg
IEhGT05UIGJhc2VfZm9udDsKKyAgICAgIEJPT0wgY2xlYW5fdXBfYmFzZV9mb250ID0gRkFMU0U7
CisgICAgICBpZiAoc3lzdGVtX3BhcmFtZXRlcnNfaW5mb193X2ZuKQorCXsKKwkgIE5PTkNMSUVO
VE1FVFJJQ1MgbmNtOworCSAgbWVtc2V0ICgmbmNtLCAwLCBzaXplb2YgKG5jbSkpOworCSAgbmNt
LmNiU2l6ZSA9IHNpemVvZiAobmNtKTsKKwkgIFN5c3RlbVBhcmFtZXRlcnNJbmZvIChTUElfR0VU
Tk9OQ0xJRU5UTUVUUklDUywgc2l6ZW9mIChuY20pLCAmbmNtLCAwKTsKKwkgIGJhc2VfZm9udCA9
IENyZWF0ZUZvbnRJbmRpcmVjdCAoJm5jbS5sZlNtQ2FwdGlvbkZvbnQpOworCSAgY2xlYW5fdXBf
YmFzZV9mb250ID0gVFJVRTsKKwl9CisgICAgICBlbHNlCisJYmFzZV9mb250ID0gKEhGT05UKSBH
ZXRTdG9ja09iamVjdCAoREVGQVVMVF9HVUlfRk9OVCk7CisgICAgICBpZiAoY2xlYW5fdXBfYmFz
ZV9mb250KQorCURlbGV0ZU9iamVjdCAoYmFzZV9mb250KTsKKworICAgICAgTE9HRk9OVCBsZjsK
KyAgICAgIEdldE9iamVjdCAoYmFzZV9mb250LCBzaXplb2YgKGxmKSwgJmxmKTsKKyAgICAgIGxm
LmxmV2VpZ2h0ID0gRldfQk9MRDsKKyAgICAgIGxmLmxmT3V0UHJlY2lzaW9uID0gT1VUX09VVExJ
TkVfUFJFQ0lTOworICAgICAgLyogQ2xlYXJUeXBlIHF1YWxpdHkgbmVlZHMgb3BxYXVlLCBidXQg
d2UgZHJhdyB0cmFuc3BhcmVudC4gICovCisgICAgICBsZi5sZlF1YWxpdHkgPSBBTlRJQUxJQVNF
RF9RVUFMSVRZOworICAgICAgLyogTmVnYXRpdmUgbGZIZWlnaHQgaW5kaWNhdGVzIHBpeGVsIHVu
aXRzIHZzLiBwb3NpdGl2ZSBpbiBwb2ludHMuCisJIFVzZSB0aGUgTE9HUElYRUxTWSBweC9pbiBv
ZiB0aGUgcHJpbWFyeSBtb25pdG9yLiAgKi8KKyAgICAgIGxmLmxmSGVpZ2h0ID0gLU11bERpdihp
Y29uX2hlaWdodCAvIDIsIC8qIEZpdCB+MyBjaGFycy4gICovCisJCQkgICAgNzIsCisJCQkgICAg
R2V0RGV2aWNlQ2FwcyAoR2V0REMgKE5VTEwpLCBMT0dQSVhFTFNZKSk7CisgICAgICAvKiBFbnN1
cmUgbGZIZWlnaHQgcGl4ZWwgaW50ZXJwcmV0YXRpb24uICAqLworICAgICAgaW50IG9sZF9tYXBf
bW9kZSA9IFNldE1hcE1vZGUgKGRjLCBNTV9URVhUKTsKKyAgICAgIEhGT05UIHNjYWxlZF9mb250
ID0gQ3JlYXRlRm9udEluZGlyZWN0ICgmbGYpOworICAgICAgSEdESU9CSiBvbGRfZm9udCA9IFNl
bGVjdE9iamVjdCAoZGMsIHNjYWxlZF9mb250KTsKKyAgICAgIFNldE1hcE1vZGUgKGRjLCBvbGRf
bWFwX21vZGUpOworCisgICAgICAvKiBEcmF3IGJhZGdlIHRleHQuICAqLworICAgICAgU2V0QmtN
b2RlIChkYywgVFJBTlNQQVJFTlQpOworICAgICAgU2V0VGV4dENvbG9yIChkYywgZmdfcmdiKTsK
KyAgICAgIFJFQ1QgcmVjdDsKKyAgICAgIHJlY3QubGVmdCA9IHJlY3QudG9wID0gMDsKKyAgICAg
IHJlY3QucmlnaHQgPSBpY29uX3dpZHRoOworICAgICAgcmVjdC5ib3R0b20gPSBpY29uX2hlaWdo
dDsKKyAgICAgIERyYXdUZXh0IChkYywgU1NEQVRBIChiYWRnZV91dGY4KSwKKwkJLTEsIC8qIElu
ZGljYXRlIG51bGwtdGVybWluYXRlZCBzdHJpbmcuICAqLworCQkmcmVjdCwKKwkJRFRfQ0VOVEVS
IHwgRFRfVkNFTlRFUiB8IERUX1NJTkdMRUxJTkUgfCBEVF9OT0NMSVApOworICAgICAgU2VsZWN0
T2JqZWN0IChkYywgb2xkX2ZvbnQpOworICAgICAgRGVsZXRlT2JqZWN0IChzY2FsZWRfZm9udCk7
CisKKyAgICAgIC8qIE1ha2UgdGhlIGNpcmNsZSBhbmQgaXRzIHRleHQgb3BhcXVlIGJ5IHNldHRp
bmcgdGhlIGFscGhhCisJIGNoYW5uZWwgb24gZWFjaCBwaXhlbCBmYWxsaW5nIHdpdGhpbiB0aGUg
Y2lyY2xlLiAgKi8KKyAgICAgIGludCBjaXJjbGVfY2VudGVyX3ggPSBpY29uX3dpZHRoIC8gMjsK
KyAgICAgIGludCBjaXJjbGVfY2VudGVyX3kgPSBpY29uX2hlaWdodCAvIDI7CisgICAgICBpbnQg
Y2lyY2xlX3JhZGl1cyA9IChpY29uX3dpZHRoIDwgaWNvbl9oZWlnaHQKKwkJCSAgID8gaWNvbl93
aWR0aAorCQkJICAgOiBpY29uX2hlaWdodCkgLyAyIC0gMjsKKyAgICAgIGludCBjaXJjbGVfcmFk
aXVzX3NxID0gY2lyY2xlX3JhZGl1cyAqIGNpcmNsZV9yYWRpdXM7CisgICAgICBEV09SRCAqcGl4
ZWw7CisgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGljb25faGVpZ2h0OyArK3kpCisgICAgICAg
IGZvciAoaW50IHggPSAwOyB4IDwgaWNvbl93aWR0aDsgKyt4KQorCSAgeworICAgICAgICAgICAg
aW50IGR4ID0geCAtIGNpcmNsZV9jZW50ZXJfeDsKKyAgICAgICAgICAgIGludCBkeSA9IHkgLSBj
aXJjbGVfY2VudGVyX3k7CisgICAgICAgICAgICBpZiAoZHggKiBkeCArIGR5ICogZHkgPD0gY2ly
Y2xlX3JhZGl1c19zcSkKKwkgICAgICB7CisJCSAgcGl4ZWwgPSBiaXRtYXBfcGl4ZWxzICsgKHkg
KiBpY29uX3dpZHRoICsgeCk7CisJCSAgKnBpeGVsIHw9IDB4ZmYwMDAwMDA7IC8qIEZsaXAgdGhl
IDB4QUFSUkdHQkIgYWxwaGEgY2hhbm5lbC4gICovCisJICAgICAgfQorCSAgfQorCisgICAgICAv
KiBEdW1teSBtb25vY2hyb21lIGJpdG1hcCBtYXNrLCBpZ25vcmVkIHdoZW4gdGhlIGNvbG9yIGJp
dG1hcCBoYXMKKwkgYW4gYWxwaGEgY2hhbm5lbCwgYnV0IG5lZWRlZCB0byBzYXRpc2Z5IENyZWF0
ZUljb25JbmRpcmVjdC4gICovCisgICAgICBIQklUTUFQIG1hc2tfYml0bWFwID0gQ3JlYXRlQml0
bWFwIChpY29uX3dpZHRoLCBpY29uX2hlaWdodCwgMSwgMSwgTlVMTCk7CisKKyAgICAgIC8qIGh0
dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dzL3dpbjMyL2FwaS93aW51c2Vy
L25mLXdpbnVzZXItY3JlYXRlaWNvbmluZGlyZWN0CisJIGhibU1hc2sgYW5kIGhibUNvbG9yIG1l
bWJlcnMgb2YgdGhlIElDT05JTkZPIHN0cnVjdHVyZSBzaG91bGQKKwkgbm90IGFscmVhZHkgYmUg
c2VsZWN0ZWQgaW50byBhIGRldmljZSBjb250ZXh0LiAgKi8KKyAgICAgIFNlbGVjdE9iamVjdCAo
ZGMsIG9sZF9iaXRtYXApOworCisgICAgICBJQ09OSU5GTyBpY29uX2luZm87CisgICAgICBtZW1z
ZXQgKCZpY29uX2luZm8sIDAsIHNpemVvZiAoaWNvbl9pbmZvKSk7CisgICAgICBpY29uX2luZm8u
Zkljb24gPSBUUlVFOworICAgICAgaWNvbl9pbmZvLmhibU1hc2sgPSBtYXNrX2JpdG1hcDsKKyAg
ICAgIGljb25faW5mby5oYm1Db2xvciA9IGJpdG1hcDsKKworICAgICAgSElDT04gaWNvbiA9IENy
ZWF0ZUljb25JbmRpcmVjdCAoJmljb25faW5mbyk7CisgICAgICB0YXNrX2Jhcl9saXN0LT5scFZ0
YmwtPlNldE92ZXJsYXlJY29uICh0YXNrX2Jhcl9saXN0LCBod25kLCBpY29uLCBiYWRnZV93KTsK
KworICAgICAgRGVzdHJveUljb24gKGljb24pOworICAgICAgRGVsZXRlT2JqZWN0IChtYXNrX2Jp
dG1hcCk7CisgICAgICBEZWxldGVPYmplY3QgKGJpdG1hcCk7CisgICAgICBEZWxldGVEQyAoZGMp
OworICAgICAgUmVsZWFzZURDIChod25kLCBod25kX2RjKTsKKyAgICAgIHczMl9iYWRnZV9od25k
ID0gaHduZDsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICB0YXNrX2Jhcl9saXN0LT5scFZ0
YmwtPlNldE92ZXJsYXlJY29uICh0YXNrX2Jhcl9saXN0LCBod25kLCBOVUxMLCBOVUxMKTsKKyAg
ICAgIHczMl9iYWRnZV9od25kID0gTlVMTDsKKyAgICB9CisKKyAgdGFza19iYXJfbGlzdC0+bHBW
dGJsLT5SZWxlYXNlKHRhc2tfYmFyX2xpc3QpOworICByZXR1cm4gUXQ7Cit9CisKKy8qIFRyYWNr
IHRoZSBtb3N0IHJlY2VudGx5IHVzZWQgd2luZG93IGhhbmRsZS4gICovCitzdGF0aWMgSFdORCB3
MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbl9od25kID0gTlVMTDsKKworREVGVU4gKCJ3MzItcmVx
dWVzdC11c2VyLWF0dGVudGlvbiIsCisgICAgICAgRnczMl9yZXF1ZXN0X3VzZXJfYXR0ZW50aW9u
LAorICAgICAgIFN3MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbiwKKyAgICAgICAxLCAxLCAwLAor
ICAgICAgIGRvYzogLyogRmxhc2ggdGhlIHNlbGVjdGVkIGZyYW1lIGFuZC9vciB0YXNrYmFyIGlj
b24gYmFzZWQgb24gVVJHRU5DWS4KK0lmIFVSR0VOQ1kgaXMgbmlsLCBjYW5jZWwgdGhlIHJlcXVl
c3QsIGlmIGFueS4gIElmIFVSR0VOQ1kgaXMgdGhlIHN5bWJvbAorYGluZm9ybWF0aW9uYWwnLCBm
bGFzaCB0aGUgdGFza2JhciBpY29uLiAgSWYgVVJHRU5DWSBpcyB0aGUgc3ltYm9sCitgY3JpdGlj
YWwnLCBmbGFzaCB0aGUgdGFza2JhciBpY29uIGFuZCB0aGUgZnJhbWUuICBXaW5kb3dzIHN0b3Bz
CitmbGFzaGluZyBpZiB0aGUgdXNlciBmb2N1c2VzIHRoZSBmcmFtZS4gIERvIG5vdGhpbmcgaWYg
V2luZG93cyBkb2VzIG5vdAorc3VwcG9ydCBGbGFzaFdpbmRvd0V4IGFuZCByZXR1cm4gbmlsLCBv
dGhlcndpc2UgcmV0dXJuIHQuICBEbyBub3RoaW5nIGlmCit0aGUgZnJhbWUgaXMgbm90ICh5ZXQp
IGFzc29jaWF0ZWQgd2l0aCBhIHdpbmRvdyBoYW5kbGUuICBOb3RlOiBPbmx5IG9uZQorZnJhbWUg
aXMgZmxhc2hlZCBhdCBhIHRpbWUgYW5kIGFueSBhbHJlYWR5IGFjdGl2ZSBmbGFzaGluZyBpcyBj
YW5jZWxlZAorYW5kIHJlcGxhY2VkIGJ5IHRoZSBuZXcgcmVxdWVzdC4gICovKQorICAoTGlzcF9P
YmplY3QgdXJnZW5jeSkKK3sKKyAgaWYgKGZsYXNoX3dpbmRvd19leF9mbiA9PSBOVUxMKQorICAg
IHJldHVybiBRbmlsOworCisgIHN0cnVjdCBmcmFtZSAqc2YgPSBTRUxFQ1RFRF9GUkFNRSAoKTsK
KyAgaWYgKCFGUkFNRV9XMzJfUCAoc2YpIHx8ICFGUkFNRV9MSVZFX1AgKHNmKSkKKyAgICByZXR1
cm4gUW5pbDsKKworICBIV05EIGh3bmQgPSBGUkFNRV9XMzJfV0lORE9XIChzZik7CisgIGlmICho
d25kID09IDApCisgICAgcmV0dXJuIFFuaWw7CisKKyAgRkxBU0hXSU5GTyBmbGFzaF9pbmZvOwor
ICBmbGFzaF9pbmZvLmNiU2l6ZSA9IHNpemVvZihmbGFzaF9pbmZvKTsKKyAgZmxhc2hfaW5mby51
Q291bnQgPSAwOworICBmbGFzaF9pbmZvLmR3VGltZW91dCA9IDA7CisKKyAgZmxhc2hfaW5mby5k
d0ZsYWdzID0gRkxBU0hXX1NUT1A7CisgIGlmICh3MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbl9o
d25kICE9IE5VTEwKKyAgICAgICYmIHczMl9yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uX2h3bmQgIT0g
aHduZCkKKyAgICB7CisgICAgICAvKiBEaXNhYmxlIGF0dGVudGlvbiBvbiB0aGUgb2xkIHdpbmRv
dyBoYW5kbGUuICAqLworICAgICAgZmxhc2hfaW5mby5od25kID0gdzMyX3JlcXVlc3RfdXNlcl9h
dHRlbnRpb25faHduZDsKKyAgICAgIGZsYXNoX3dpbmRvd19leF9mbiAoJmZsYXNoX2luZm8pOwor
ICAgICAgdzMyX3JlcXVlc3RfdXNlcl9hdHRlbnRpb25faHduZCA9IGh3bmQ7CisgICAgfQorICBm
bGFzaF9pbmZvLmh3bmQgPSBod25kOworCisgIGlmICghTklMUCAodXJnZW5jeSkgJiYgU1lNQk9M
UCAodXJnZW5jeSkpCisgICAgeworICAgICAgLyogVGhlIGludGVuZGVkIGNhbGxlciwgZG9jay1t
b2RlLmVsICdkb2NrLWF0dGVudGlvbicsIGhhcyBhbgorCSBvcHRpb25hbCB0aW1lciB0byBjbGVh
ciB0aGUgYXR0ZW50aW9uIGluZGljYXRvciBzbyB0aGlzIHdpbGwKKwkgZmxhc2ggdW50aWwgY2xl
YXJlZCB2aWEgdGhlIHRpbWVyLCBvciB0aGUgd2luZG93IGNvbWVzIHRvIHRoZQorCSBmb3JlZ3Jv
dW5kLiAgRm9yIGluZm9ybWF0aW9uYWwgYXR0ZW50aW9uLCBmbGFzaCB0aGUgdHJheSBpY29uLgor
CSBGb3IgY3JpdGljYWwgYXR0ZW50aW9uLCBmbGFzaCB0aGUgdHJheSBpY29uIGFuZCB0aGUgd2lu
ZG93LiAgKi8KKyAgICAgIGlmIChFUSAodXJnZW5jeSwgUWluZm9ybWF0aW9uYWwpKQorCWZsYXNo
X2luZm8uZHdGbGFncyA9IEZMQVNIV19UUkFZIHwgRkxBU0hXX1RJTUVSTk9GRzsKKyAgICAgIGVs
c2UgaWYgKEVRICh1cmdlbmN5LCBRY3JpdGljYWwpKQorCWZsYXNoX2luZm8uZHdGbGFncyA9IEZM
QVNIV19BTEwgfCBGTEFTSFdfVElNRVJOT0ZHOworICAgIH0KKworICBmbGFzaF93aW5kb3dfZXhf
Zm4gKCZmbGFzaF9pbmZvKTsKKyAgcmV0dXJuIFF0OworfQorCisvKiBUcmFjayB0aGUgd2luZG93
IGhhbmRsZSBmb3IgdGhlIGdsb2JhbCBwcm9ncmVzcyBpbmRpY2F0b3IuICovCitzdGF0aWMgSFdO
RCB3MzJfcHJvZ3Jlc3NfaW5kaWNhdG9yX2h3bmQgPSBOVUxMOworCitERUZVTiAoInczMi1wcm9n
cmVzcy1pbmRpY2F0b3IiLAorICAgICAgIEZ3MzJfcHJvZ3Jlc3NfaW5kaWNhdG9yLAorICAgICAg
IFN3MzJfcHJvZ3Jlc3NfaW5kaWNhdG9yLAorICAgICAgIDEsIDEsIDAsCisgICAgICAgZG9jOiAv
KiBTaG93IGEgcHJvZ3Jlc3MgYmFyIG9uIHRoZSB0YXNrYmFyIGljb24gZm9yIFBST0dSRVNTLgor
UFJPR1JFU1MgaXMgYSBmbG9hdCBpbiB0aGUgcmFuZ2UgMC4wIHRvIDEuMC4gIElmIFBST0dSRVNT
IGlzIG5pbCwgcmVtb3ZlCit0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yLiAgRG8gbm90aGluZyBpZiBX
aW5kb3dzIGRvZXMgbm90IHN1cHBvcnQgdGhlCitJVGFza2Jhckxpc3QzIGludGVyZmFjZSBhbmQg
cmV0dXJuIG5pbCwgb3RoZXJ3aXNlIHJldHVybiB0LiAgRG8gbm90aGluZworaWYgdGhlIGZyYW1l
IGlzIG5vdCAoeWV0KSBhc3NvY2lhdGVkIHdpdGggYW4gSFdORC4gICovKQorICAoTGlzcF9PYmpl
Y3QgcHJvZ3Jlc3MpCit7CisgIENvSW5pdGlhbGl6ZSAoTlVMTCk7CisgIElUYXNrYmFyTGlzdDMg
KnRhc2tfYmFyX2xpc3QgPSBOVUxMOworICBIUkVTVUxUIHIgPSBDb0NyZWF0ZUluc3RhbmNlKCZD
TFNJRF9UYXNrYmFyTGlzdCwKKwkJCSAgICAgICBOVUxMLAorCQkJICAgICAgIENMU0NUWF9JTlBS
T0NfU0VSVkVSLAorCQkJICAgICAgICZJSURfSVRhc2tiYXJMaXN0MywKKwkJCSAgICAgICAodm9p
ZCAqKikmdGFza19iYXJfbGlzdCk7CisgIGlmIChyICE9IFNfT0spCisgICAgcmV0dXJuIFFuaWw7
CisKKyAgc3RydWN0IGZyYW1lICpzZiA9IFNFTEVDVEVEX0ZSQU1FICgpOworICBIV05EIGh3bmQg
PSBOVUxMOworICBpZiAoRlJBTUVfVzMyX1AgKHNmKSAmJiBGUkFNRV9MSVZFX1AgKHNmKSkKKyAg
ICBod25kID0gRlJBTUVfVzMyX1dJTkRPVyAoc2YpOworICBpZiAoaHduZCA9PSBOVUxMKQorICAg
IHsKKyAgICAgIHRhc2tfYmFyX2xpc3QtPmxwVnRibC0+UmVsZWFzZSh0YXNrX2Jhcl9saXN0KTsK
KyAgICAgIHJldHVybiBRbmlsOworICAgIH0KKworICBpZiAodzMyX3Byb2dyZXNzX2luZGljYXRv
cl9od25kICE9IE5VTEwKKyAgICAgICYmIHczMl9wcm9ncmVzc19pbmRpY2F0b3JfaHduZCAhPSBo
d25kKQorICAgIHsKKyAgICAgIC8qIERpc2FibGUgdGhlIGluZGljYXRvciBmb3IgdGhlIG9sZCB3
aW5kb3cgaGFuZGxlLiAgKi8KKyAgICAgIHRhc2tfYmFyX2xpc3QtPmxwVnRibC0+U2V0UHJvZ3Jl
c3NTdGF0ZSAodGFza19iYXJfbGlzdCwKKwkJCQkJICAgICAgIHczMl9wcm9ncmVzc19pbmRpY2F0
b3JfaHduZCwKKwkJCQkJICAgICAgIFRCUEZfTk9QUk9HUkVTUyk7CisgICAgfQorICB3MzJfcHJv
Z3Jlc3NfaW5kaWNhdG9yX2h3bmQgPSBod25kOworCisgIC8qIFNjYWxlIHRhc2sgYmFyIHByb2dy
ZXNzIGZyb20gMC4wLTEuMCB0byAwLTEwMC4gICovCisgIFVMT05HTE9ORyBhZGpfcHJvZ3Jlc3Mg
PSAwOworICBpZiAoIU5JTFAgKHByb2dyZXNzKSAmJiBGTE9BVFAgKHByb2dyZXNzKSkKKyAgICAg
IGFkal9wcm9ncmVzcyA9IChVTE9OR0xPTkcpICgxMDAuMCAqCisJCQkJICBYRkxPQVRfREFUQSAo
cHJvZ3Jlc3MpKTsKKyAgaWYgKGFkal9wcm9ncmVzcyA+IDApCisgICAgeworICAgICAgdGFza19i
YXJfbGlzdC0+bHBWdGJsLT5TZXRQcm9ncmVzc1N0YXRlICh0YXNrX2Jhcl9saXN0LAorCQkJCQkg
ICAgICAgaHduZCwgVEJQRl9OT1JNQUwpOworICAgICAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5T
ZXRQcm9ncmVzc1ZhbHVlICh0YXNrX2Jhcl9saXN0LAorCQkJCQkgICAgICAgaHduZCwgYWRqX3By
b2dyZXNzLCAxMDApOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHRhc2tfYmFyX2xpc3Qt
PmxwVnRibC0+U2V0UHJvZ3Jlc3NTdGF0ZSAodGFza19iYXJfbGlzdCwKKwkJCQkJICAgICAgIGh3
bmQsIFRCUEZfTk9QUk9HUkVTUyk7CisgICAgICB3MzJfcHJvZ3Jlc3NfaW5kaWNhdG9yX2h3bmQg
PSBOVUxMOworICAgIH0KKworICB0YXNrX2Jhcl9saXN0LT5scFZ0YmwtPlJlbGVhc2UodGFza19i
YXJfbGlzdCk7CisgIHJldHVybiBRdDsKK30KKworI2VuZGlmIC8qIFdJTkRPV1NOVCAqLworCiAv
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKIAkJCSAgICBJbml0aWFsaXphdGlvbgogICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpA
QCAtMTE1MTEsNiArMTE4NjUsMTUgQEAgc3ltc19vZl93MzJmbnMgKHZvaWQpCiAgIERFRlNZTSAo
UWNhcHNsb2NrLCAiY2Fwc2xvY2siKTsKICAgREVGU1lNIChRa3BfbnVtbG9jaywgImtwLW51bWxv
Y2siKTsKICAgREVGU1lNIChRc2Nyb2xsLCAic2Nyb2xsIik7CisKKyAgI2lmZGVmIFdJTkRPV1NO
VAorICAvKiBUYXNrYmFyL2RvY2sgc3VwcG9ydC4gICovCisgIGRlZnN1YnIgKCZTdzMyX2JhZGdl
KTsKKyAgZGVmc3ViciAoJlN3MzJfcHJvZ3Jlc3NfaW5kaWNhdG9yKTsKKyAgZGVmc3ViciAoJlN3
MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbik7CisgIERFRlNZTSAoUWluZm9ybWF0aW9uYWwsICJp
bmZvcm1hdGlvbmFsIik7CisgIERFRlNZTSAoUWNyaXRpY2FsLCAiY3JpdGljYWwiKTsKKyAgI2Vu
ZGlmCiB9CiAKIAwKQEAgLTExNzk5LDYgKzEyMTYyLDkgQEAgZ2xvYmFsc19vZl93MzJmbnMgKHZv
aWQpCiAgIFNldEdlc3R1cmVDb25maWdfZm4KICAgICA9IChTZXRHZXN0dXJlQ29uZmlnX3Byb2Mp
IGdldF9wcm9jX2FkZHIgKHVzZXIzMl9saWIsCiAJCQkJCSAgICAgIlNldEdlc3R1cmVDb25maWci
KTsKKyAgZmxhc2hfd2luZG93X2V4X2ZuCisgICAgPSAoRmxhc2hXaW5kb3dFeF9Qcm9jKSBnZXRf
cHJvY19hZGRyICh1c2VyMzJfbGliLAorCQkJCQkgICJGbGFzaFdpbmRvd0V4Iik7CiAKICAgewog
ICAgIEhNT0RVTEUgaW1tMzJfbGliID0gR2V0TW9kdWxlSGFuZGxlICgiaW1tMzIuZGxsIik7Ci0t
IAoyLjQ3LjEKCg==
--0000000000004b241006441dc01c--
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
Received: (at 79859) by debbugs.gnu.org; 20 Nov 2025 10:28:04 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 20 05:28:04 2025
Received: from localhost ([127.0.0.1]:46268 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vM1tS-0008RR-Vv
for submit <at> debbugs.gnu.org; Thu, 20 Nov 2025 05:28:04 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:48016)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vM1tP-0008Qd-70
for 79859 <at> debbugs.gnu.org; Thu, 20 Nov 2025 05:28:00 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
id 1vM1tJ-0000Rj-7X; Thu, 20 Nov 2025 05:27:53 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
Date; bh=XhMylOYMDW2AlTGjlmlpN5tqvpXt4OiVzNCmImPdumA=; b=mZDiCQQQtfgEWmuJ/yBr
XY6AWr/Aw2HLdFcacYrmgB5E+jYzJR7qnYKq6+LhF64WzK4U3Wcdv0UV/j3L5f+wDd7yhE0O7HyuV
Sc43R6UC6LIGJranRYF13z4HOoc0ygZzDsjvOdh+oDwnFFmppR9GQa8YGaGaksZqZLyfe/V32YM3z
7UQIC1CdUwK6e7jMbgOkMqwnpWrTtAh0LBx9LM0M2jzVqiiBYUWTuOI92BiJFWKGzwjs9wACxgsOM
fbVCHMhMJD41YINZ4wJ6oE5iSpz0R2njrlkXB6U6B+TSimkaHYL0uQVFQFOu+AdTvICalnurf9Vok
09vnF4aNhwpV1Q==;
Date: Thu, 20 Nov 2025 12:27:49 +0200
Message-Id: <86bjkxhuca.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>
In-Reply-To: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
(message from =?utf-8?Q?St=C3=A9phane?= Marks on Tue, 18 Nov 2025 14:17:45
-0500)
Subject: Re: bug#79859: Add dock-mode for system GUI dock icon support
References: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79859
Cc: bjorn.bidar@HIDDEN, 79859 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> Cc: Björn Bidar <bjorn.bidar@HIDDEN>
> From: Stéphane Marks <shipmints@HIDDEN>
> Date: Tue, 18 Nov 2025 14:17:45 -0500
>
> This patch implements system GUI dock features for icon badges, icon progress indicator, and icon attention
> request with implementations for GNU/Linux KDE & GNOME, NS/macOS, and MS-Windows.
Thank you for working on this important feature.
> GNU/Linux shells need to use an extension or include built-in support for the protocol documented here
> https://wiki.ubuntu.com/Unity/LauncherAPI. I tested using this "standard" shell extension
> https://extensions.gnome.org/extension/307/dash-to-dock/ on GNOME and assistance and testing on KDE
> from the reddit user GeneAutomatic3471.
This information should be in the NEWS entry.
> I'd appreciate thoughtful feedback, and of course, testing.
I wanted to test this on MS-Windows, but the w32fns.c patch failed to
apply to the master branch, even if I use --ignore-whitespace option
to "git apply". Could you please rebase on the current master and
post an updated patch?
So the below comments are based on reading the patch and nothing else.
> From f1c4bbf07a4b1c0cb5867412ecf2074bfc3e37e1 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?St=C3=A9phane=20Marks?= <shipmints@HIDDEN>
> Date: Sat, 8 Nov 2025 13:30:37 -0500
> Subject: [PATCH] Add system GUI dock integration.
>
> Implement system GUI dock icon badge, icon progress indicator,
> icon attention alert features for D-Bus platforms (tested on KDE
> and GNOME), NS (GNUstep/macOS), Microsoft Windows.
>
> * lisp/dock-mode.el: New file.
First, the name of the mode and related symbols: I find the name
"dock" to be problematic, as it seems to be well-known to macOS users
and maybe also to some users of GNU/Linux desktops, but might be
unknown to others. Also, "dock" has multiple meanings, which might be
confusing. I would prefer something like dock-taskbar-* instead, or
maybe gui-dock-*, or even gui-desktop-* (if we envision more features
being added to this in the future). I'm also open to other ideas
about better naming this class of features.
> diff --git a/doc/misc/dock-mode.texi b/doc/misc/dock-mode.texi
> new file mode 100644
> index 00000000000..71358c09b7e
> --- /dev/null
> +++ b/doc/misc/dock-mode.texi
I don't think this should be a separate Info file. Instead, we should
split this information into a user-level part and Lisp-programmer
level part, and have the former in the user manual and the latter in
the ELisp reference. Most of the Texinfo documentation you wrote
naturally belongs to the latter category.
A separate Info manual has a significant disadvantage that it is not
part of the two main manuals, and is thus harder to discover.
> +@node Overview
> +@chapter Overview
> +
> +The Dock package provides integration with these system GUI dock
> +features:
This should start by explaining what is a "GUI dock". It is an
obscure term that is unlikely to be widely known, IME.
> +Your GNU/Linux Emacs instance should be launched via an appropriate
> +shell "desktop" file such as those distributed with Emacs; e.g.,
> +"etc/emacsclient.desktop".
File names should have the @file markup, instead of quoting them (here
and elsewhere in the patch).
> +@node User Options
> +@chapter User Options
This node should go to the Emacs user manual. But it should begin by
describing the features in user-facing terms: what will the user see
for each aspect of the mode: how badges look, what is "attention
indicator", etc. This stuff is unlikely to be well-known to users,
and without that, the following description of user options makes very
little sense.
> +@defvar dock-dbus-desktop-file-name
> +The variable @code{dock-dbus-desktop-file-name} applies on GNU/Linux
> +D-Bus systems, and can be customized to indicate which desktop file name
> +D-Bus will use to identify your Emacs instance. It defaults to the
> +desktop file base name @code{"emacsclient"} and might need to be set to
> +@code{"emacs"} on your system. Installed Emacs builds typically include
> +default desktop files for both, and are called
> +@code{"emacsclient.desktop"} and @code{"emacs.desktop"}, respectively.
> +@end defvar
Do users frequently need to customize this? If in most cases this
doesn't need to be customized, we don't need to mention the option in
the manual.
> +@defvar dock-dbus-timeout-ms
> +The variable @code{dock-dbus-timeout-ms} applies on GNU/Linux D-Bus
> +systems, and can be customized to specify the number of milliseconds
> +Emacs will wait for D-Bus responses before timing out and considering
> +messages undeliverable. It defaults to 25000 milliseconds, which is the
> +recommended default by the D-Bus package, which see, @pxref{Top,,, dbus,
> +D-Bus integration in Emacs}.
This doesn't seem to be a user-level option, at least not an important
one. I presume that the default is fine for almost all uses, and the
option only needs customization when troubleshooting.
> +@node Function Reference
> +@chapter Function Reference
> +
> +@findex dock-mode
> +@defun dock-mode
> +@code{dock-mode} must be enabled before calling any of its functions, to
> +initialize the system back end. On GNU/Linux D-Bus, initialization will
> +test that the D-Bus dock protocol is established, and signal an error if
> +it is not.
> +@end defun
This mode, and the description of GUI features it activates, should in
the user manual.
> +@findex dock-badge
> +@defun dock-badge &optional count-or-string
> +Set the dock icon badge to @var{count-or-string}. If
> +@var{count-or-string} is @code{nil}, clear the badge.
I'm missing here the description of where will the badge appear if
Emacs has several visible frames. Will the badge appear on all of
them? only one? something else?
> +If a string is specified on back ends which do not support strings, it
> +is converted to an integer, if possible, or to nil. GNUstep and macOS
> +support string badges, the GNU/Linux D-Bus protocol supports only
> +integers; any string that cannot be converted to integer will be treated
> +as @code{nil}.
This describes the implementation, but says nothing about the effect.
What would be displayed when a string is converted to an integer (and
how can an arbitrary string be converted to a number anyway)?
Depending on the answers to those questions, it is possible that we
don't have to mention the specific systems and backends.
> +@findex dock-attention
> +@defun dock-attention &optional urgency timeout
There's no need to have @findex for a @defun (here and elsewhere in
the patch), because @defun automatically generates an index entry in
the function index.
> +Set the dock icon to alert the user. This will result in a bouncing or
> +flashing dock icon. On some back ends, dock icon attention will
> +displayed only if Emacs is not the focused application. ^^^^
^^^^^^^^^
"will be displayed"
> +out automatically. In contrast, a `critical` request requires that the
Please don't quote `like this` in Texinfo documents, please use @code
or @samp instead.
> +@defun dock-progress &optional progress
> +Set the dock icon to indicate ``progress''. Progress is typically
> +represented as a graphical bar that fractionally spans the dock icon.
This should have a cross-reference to the node "Progress" in the ELisp
manual, which describes progress indicators. It is also a good idea
to have the cross-reference in "Progress" pointing to this
description.
> +icon. Its usage is described in @pxref{Progress,, Display, elisp, The
> +Emacs Lisp Reference Manual}.
This kind of "HTML-style" cross-references doesn't look good in Info
and in the printed versions of the manual. It is better to use
something simpler, like
This is a convenience macro analogous to
@code{dotimes-with-progress-reporter} and works the same way as
@code{dotimes} does, but also reports loop progress on the Emacs dock
icon. @xref{Progress,, Display, elisp, The Emacs Lisp Reference Manual}.
(Btw, that "Display" part in the cross-reference is wrong, and will
not do what you thought it would.)
> +@defmac dolist-with-dock-progress-reporter (var list [result]) reporter-or-message body@dots{}
> +This is a convenience macro analogous to
> +@code{dolist-with-progress-reporter} and works the same way as
> +@code{dolist} does, but also reports loop progress on the Emacs dock
> +icon. Its usage is described in @pxref{Progress,, Display, elisp, The
> +Emacs Lisp Reference Manual}.
Same comments here.
> +@lisp
> +;; Enable and initialize dock-mode.
> +(dock-mode)
> +
> +;; Display a badge on the dock icon.
> +(dock-badge emacs-major-version)
> +(dock-badge "31")
> +(dock-badge "Test") ; short string (on supported platforms)
Such long @lisp snippets should be subdivided into groups, using
@group..@end group, to prevent the group from being split between two
pages, which makes reading the examples harder.
> + ((bound-and-true-p w32-initialized)
> + (setq dock--back-end 'windows-nt))
^^^^^^^^^^^
I'd prefer the symbol 'w32' here.
> +(define-minor-mode dock-mode
> + "GUI dock icon badges, progress report, alerts."
This doc string should be significantly expanded to describe the mode
features, with links to relevant commands and user options.
Also, please add a :version tag.
> +(cl-defgeneric dock-badge (&optional count-or-string)
> + "Set the dock icon badge to COUNT-OR-STRING.
> +If COUNT-OR-STRING is an integer, display that as the icon badge.
> +If COUNT-OR-STRING is a string on back ends which do not support
> +strings, convert COUNT-OR-STRING to an integer, or nil.
> +If COUNT-OR-STRING is nil, or is an empty string, remove the counter.")
If a string is converted to nil, will that remove the counter?
> +(cl-defgeneric dock-attention (&optional urgency timeout)
> + "Set the dock icon to alert the user.
I think "Display the dock icon to alert the user." is a better
description.
And I wonder whether we should, under dock-mode, call dock-attention
as part of bell and visible-bell, at least as a user option?
> +(cl-defgeneric dock-progress (&optional progress)
> + "Set the dock icon to indicate progress.
Likewise.
> +(defvar dock--dotimes-with-dock-progress-reporter-advice-count 0
> + "Ensure advice is not removed when more than one active use.")
> +
> +(defun dock--set-up-progress-reporter ()
> + "`progress-reporter-do-update` helper."
> + (incf dock--dotimes-with-dock-progress-reporter-advice-count)
> + (advice-add #'progress-reporter-do-update
> + :around
> + #'dock--progress-reporter-do-update))
Our conventions frown on using advice in our code. How about adding a
hook to progress-reporter-do-update instead, so that it could call
this indication of progress when the mode is active?
> +(defun dock--tear-down-progress-reporter ()
> + "`progress-reporter-do-update` helper."
> + (when (= 0 (decf dock--dotimes-with-dock-progress-reporter-advice-count))
> + (advice-remove #'progress-reporter-do-update
> + #'dock--progress-reporter-do-update)))
Same here.
> +(defvar dock-w32-badge-bg '(#xe7 #x58 #x57) ; redish
> + "Integer RGB values as the background for w32 badge.")
> +
> +(defvar dock-w32-badge-fg '(#xff #xff #xff) ; white
> + "Integer RGB values as the foreground for w32 badge text.")
Can't we use the normal#RRRGGGBBB color notations here? why invent
something new when we already have infrastructure for specifying
colors flexibly and easily?
> diff --git a/src/w32fns.c b/src/w32fns.c
> index 3fc0f55244f..c0d7cad3dc5 100644
> --- a/src/w32fns.c
> +++ b/src/w32fns.c
As mentioned above, I was unable to compile the code, so the comments
below are based only on reading the patch.
> @@ -38,6 +38,10 @@ #define COBJMACROS /* Ask for C definitions for COM. */
> #include <shlobj.h>
> #include <oleidl.h>
> #include <objidl.h>
> +#if !defined MINGW_W64 && !defined CYGWIN
> +# define INITGUID
> +#endif
I don't understand this: why only MINGW_W64? does this code work only
in 64bit builds or something?
And why define INITGUID to nothing?
> +#ifndef IID_ITaskbarList3
> +DEFINE_GUID(IID_ITaskbarList3, 0xea1afb91, 0x9e28, 0x4b86, 0x90,0xe9, 0x9e,0x9f,0x8a,0x5e,0xef,0xaf);
Please add a comment here explaining what these constants are and what
is their effect. Or maybe these constants are required by Windows to
be that and only that? This should be documented, preferably with a
reference.
> +/* Parse RGB_LIST, and return a COLORREF.
> + RGB_LIST should contain (at least) 3 lisp integers.
> + Return 0xff000000 iff RGB_LIST is not OK. */
> +
> +static COLORREF
> +rgb_list_to_colorref (Lisp_Object rgb_list)
I believe this function will be unnecessary if you use the usual
#RRRGGGBBB color spec instead of a list of RGB components.
> +/* Track the window handle for the global badge icon. */
> +static HWND _w32_badge_hwnd = NULL;
Please don't use variables with leading underscores, that's only
appropriate for libraries.
Also, does this mean we can only have a single badge on display at any
given time? And what happens if the frame corresponding to this
handle is deleted?
> +DEFUN ("w32-badge",
> + Fw32_badge,
> + Sw32_badge,
> + 3, 3, 0,
> + doc: /* Set the taskbar icon overlay image based on BADGE.
> +BADGE is a UTF-8 string. If BADGE is nil, remove the overlay. Do
Please say "BADGE is a string", without mentioning UTF-8. Callers of
primitives should pass Emacs Lisp strings, and the primitive should
then encode the string as needed (which your code already does).
> + Do nothing if the frame is not (yet)
> +associated with an HWND.
Which frame? And there's no argument named HWND.
> BACKGROUND and FOREGROUND are lists of (RED
> +GREEN BLUE) 8-bit integer values. */)
> + (Lisp_Object badge, Lisp_Object bg, Lisp_Object fg)
The color arguments are named BG and FG, not BACKGROUND and
FOREGROUND.
> +{
> + CoInitialize (NULL);
> + ITaskbarList3 *task_bar_list = NULL;
> + HRESULT r = CoCreateInstance(&CLSID_TaskbarList,
> + NULL,
> + CLSCTX_INPROC_SERVER,
> + &IID_ITaskbarList3,
> + (void **)&task_bar_list);
> + if (r != S_OK)
> + {
> + /* FIXME: Do we need to call CoUninitialize? */
I don't think we need to do that.
> + HWND hwnd = NULL;
> + struct frame *sf = SELECTED_FRAME ();
> + if (FRAME_W32_P (sf) && FRAME_LIVE_P (sf))
> + hwnd = FRAME_W32_WINDOW (sf);
If we always use the selected frame, it should be documented. If the
same frame should be selected when removing the badge, that should
also be documented (it means the caller will need to track which frame
sets the badge). And what happens if the caller attempts to remove
the badge when a different frame is select, or if the original frame
was deleted?
> + if (bg_rgb == 0xff000000)
> + {
> + signal_error ("Invalid background RGB", bg);
> + return Qnil;
> + }
> + if (fg_rgb == 0xff000000)
> + {
> + signal_error ("Invalid foreground RGB", fg);
> + return Qnil;
> + }
I'd prefer not to signal errors from these functions, but instead to
silently return nil.
> + /* Derive a font scaled to fit the icon. First find the system's
> + base font. Then scale it to fit icon_height. */
> + HFONT base_font;
> + BOOL clean_up_base_font = FALSE;
> + if (system_parameters_info_w_fn)
> + {
> + NONCLIENTMETRICSW ncm;
> + memset (&ncm, 0, sizeof (ncm));
> + ncm.cbSize = sizeof (ncm);
> + SystemParametersInfoW (SPI_GETNONCLIENTMETRICS, sizeof (ncm), &ncm, 0);
> + base_font = CreateFontIndirectW (&ncm.lfSmCaptionFont);
> + clean_up_base_font = TRUE;
Do we really need to call the "wide" variants of these functions?
See w32-set-wallpaper for what we do about SystemParametersInfoW, and
CreateFontIndirectW is not used anywhere in Emacs. Can we use
CreateFontIndirect instead, or only use CreateFontIndirectW when it is
supported, like w32-set-wallpaper does with SystemParametersInfoW?
Are badges at all supported on old Windows versions? If not, then we
can use the "wide" APIs, but we need to do that through function
pointers, which are filled at startup time using get_proc_addr, like
we do with MultiByteToWideChar. Because otherwise older versions of
Windows will refuse to run Emacs that refers to these wide APIs which
don't exist on those old versions.
> + /* Negative lfHeight indicates pixel units vs. positive in points.
> + Use the LOGPIXELSY px/in of the primary monitor. */
> + lf.lfHeight = -MulDiv(icon_height / 2, /* Fit ~3 chars. */
^^
> + 72,
> + GetDeviceCaps(GetDC (NULL), LOGPIXELSY));
^^
Our style is to leave one space between the function's name and the
opening parenthesis.
> + for (int y = 0; y < icon_height; ++y)
> + for (int x = 0; x < icon_width; ++x)
> + {
> + int dx = x - circle_center_x;
> + int dy = y - circle_center_y;
> + if (dx * dx + dy * dy <= circle_radius_sq)
> + {
> + pixel = bitmap_pixels + (y * icon_width + x);
> + *pixel |= 0xff000000;
^^^^^^^^^^
Please add a comment explaining that "magic constant".
> +static FlashWindowEx_Proc _flash_window_ex_fn = NULL;
This variable should also be NULL-ified in globals_of_w32fns, so that
we don't risk carrying stale values from when Emacs was dumped.
> +static HWND _w32_request_user_attention_hwnd = NULL;
Again, please don't use variables whose names begin with an
underscore.
> +DEFUN ("w32-request-user-attention",
> + Fw32_request_user_attention,
> + Sw32_request_user_attention,
> + 1, 1, 0,
> + doc: /* Flash the taskbar icon based on URGENCY.
AFAIU, FlashWindowEx flashes the frame itself as well, not only the
task-bar icon, doesn't it?
> + /* dwFlags
> + FLASHW_ALL 0x00000003 Flash both window caption and taskbar button.
> + FLASHW_CAPTION 0x00000001 Flash the window caption.
> + FLASHW_STOP 0x00000000 Stop flashing.
> + FLASHW_TIMER 0x00000004 Flash continuously, until FLASHW_STOP.
> + FLASHW_TIMERNOFG 0x0000000C Flash until window comes to the foreground.
> + FLASHW_TRAY 0x00000002 Flash the taskbar button. */
Should we allow flashing only the task-bar icon, as an option?
> + flash_info.dwFlags = 0x00000000; /* FLASHW_STOP */
> + if (_w32_request_user_attention_hwnd != NULL
> + && _w32_request_user_attention_hwnd != hwnd)
> + {
> + /* Disable attention on the old window handle. */
> + flash_info.hwnd = _w32_request_user_attention_hwnd;
> + _flash_window_ex_fn (&flash_info);
> + _w32_request_user_attention_hwnd = hwnd;
Does the fact that we store the handle to the frame's window in a
global static variable mean that we cannot flash more than one frame
at a time?
And what happens if the frame is deleted before flashing ends?
> + if (!NILP (urgency) && SYMBOLP (urgency))
> + {
> + /* The intended caller, dock-mode.el 'dock-attention', has its own
> + timer to clear the attention indicator so this will flash until
> + cleared via the timer for informational attention, or the
> + window comes to the foreground for critical attention. */
> + if (EQ (urgency, Qinformational))
> + flash_info.dwFlags = 0x00000003 | 0x00000004; /* FLASHW_TIMER */
> + else if (EQ (urgency, Qcritical))
> + flash_info.dwFlags = 0x00000003 | 0x0000000C; /* FLASHW_TIMERNOFG */
> + }
Why are you using numerical values instead of FLASHW_ALL etc.?
> + if (_w32_progress_indicator_hwnd != NULL
> + && _w32_progress_indicator_hwnd != hwnd)
> + {
> + /* Disable the indicator for the old window handle. */
> + task_bar_list->lpVtbl->SetProgressState (task_bar_list,
> + _w32_progress_indicator_hwnd,
> + TBPF_NOPROGRESS);
> + }
> + _w32_progress_indicator_hwnd = hwnd;
Same questions as above about displaying progress for more than one
frame at a time.
> + /* Scale task bar progress from 0.0-1.0 to 0-100. */
> + unsigned int adj_progress = 0;
The MS documentation says the 2 last arguments of SetProgressValue
method are of type ULONGLONG, so why not use that here?
> + #ifdef WINDOWSNT
> + /* Taskbar/dock */
^^
Our conventions are to and a C comment with a period and two spaces
before "*/".
bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.Received: (at submit) by debbugs.gnu.org; 18 Nov 2025 19:18:28 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 18 14:18:28 2025 Received: from localhost ([127.0.0.1]:59379 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vLRDf-0005Qw-Rw for submit <at> debbugs.gnu.org; Tue, 18 Nov 2025 14:18:28 -0500 Received: from lists.gnu.org ([2001:470:142::17]:54570) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vLRDd-0005Pk-FX for submit <at> debbugs.gnu.org; Tue, 18 Nov 2025 14:18:26 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <shipmints@HIDDEN>) id 1vLRDJ-0005Nr-Vv for bug-gnu-emacs@HIDDEN; Tue, 18 Nov 2025 14:18:06 -0500 Received: from mail-vs1-xe29.google.com ([2607:f8b0:4864:20::e29]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <shipmints@HIDDEN>) id 1vLRDI-0008OA-0O for bug-gnu-emacs@HIDDEN; Tue, 18 Nov 2025 14:18:05 -0500 Received: by mail-vs1-xe29.google.com with SMTP id ada2fe7eead31-5dfa9e34adbso4127813137.0 for <bug-gnu-emacs@HIDDEN>; Tue, 18 Nov 2025 11:18:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763493481; x=1764098281; darn=gnu.org; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=jTczCU7/za1L9o7pKdz9UrWCzWkfQ4lb/WTt4hvDZnw=; b=Af3sBmQc44a4144pfuC9gCnerYudDIkHVxh8TxWrfkVNDxxKGNR7/w8O4uBsJDc0mK wLZYWnY2dIDjT44AU6SFz+hDBHZykAUqohBkHiykRhHGbVvUsjfjTc1pqmZW3rgUBEJ2 apPyw7W5eDGQMemba3MFV523H5MGwXN1ztH4r5CYTZ8REmLUuwYlJ7dGm/6qPQ2T4/u/ qup3D812U8iGZIo/5X3UrqnK5R3ljJ2lIPPG9lXAuySFoiJfwYTSV1EVsfudk32EGgcu WN3EO3vZap2ojp5Ung8fQt0oqniqBGISb0b6jgEHlstu8vJlOiQcOZMj8oUHchHFZ9l7 Bdeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763493481; x=1764098281; h=cc:to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=jTczCU7/za1L9o7pKdz9UrWCzWkfQ4lb/WTt4hvDZnw=; b=pV7TgcKrx3kFmPBkFYSi+/jnReg6TST/T1LcpNbJVcQbe+W5jnuV3Ww/C56GnNaChL Fsg/pMONi2AItyVSogGtcfWVd7WeNkCJErIpZ3B/MbOsoVFPYfwNu0FDmc0cO3wKqzhC /j8b3dZdphsYBEiWLXIOXeIISf4dWB/W4NGFNHunytdYfla+vPdcr2CtHm9RktDA6MsV 5tEaN3tVNtkpY1jMqvx1nCHXjIo8XUve4kqJ+7xxiEAebvcu/c2ZujSq+J4MJCCsVppm jQsRZGJWKWqBlRafZLB0GAJLK/SIvo+A/magjGIp08ka5l+6b7KL09ettOmPOkfHU3Mj lXqQ== X-Gm-Message-State: AOJu0Yzk0x6QuwPxqT0FwTEDBUy86FJWodaO5CT59wR8WtlO38+K+IeX +Ia0Kjn2M5VdhconEqVX9RmgkEZ74AG5BwWpHdJv+4oglYpiXsy/wO3psA8Hl/QrpmtotFE47XU Y5nCRNgtp4H0Dtoc6HvnnxK/FGx6w22djSVFP X-Gm-Gg: ASbGncuJYO16nxMWX72ehCOK9Wrwk3bNi6GVT26t4e0aUfP8VJR4UGdgvDZz8odjMrL EPZ1TuQ8UO8jyd7DbAG/aqgEA2wEAUoK304jbqg7kMvTuADzEGyk7kJumq9QKkyPulUNx30iyjF d5U/NbIF4JJBTMXd3FscrwQ8JZSyV/PP/rreOsCDmroAx4OtpsXX8DQ8DhxppIfZDVcM8luJDn0 TY062dLOJcaEAfvZxHVoucFKzJf6/m5430zYE8NzVVwd+pCMjTa3Xdx9GY1o01CCrXmfM2MHaO3 juAJDJlKgVT2uKse X-Google-Smtp-Source: AGHT+IGGB3zlF8g0WW6QzCe5PXd+JcW5M4Z5RwCK7YDOVrNO1QqUv3ecJQaE3IhoUXk0ki+WKK3XOickTARiQoey9lw= X-Received: by 2002:a05:6102:c91:b0:5db:cfb2:e610 with SMTP id ada2fe7eead31-5dfc5bf1a3emr5570633137.41.1763493481411; Tue, 18 Nov 2025 11:18:01 -0800 (PST) MIME-Version: 1.0 From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Tue, 18 Nov 2025 14:17:45 -0500 X-Gm-Features: AWmQ_bmd8H7dg8uq0Pp3tF95RpsYLisIfxG8X0CemUmCpMYO9ftY7xOmmbLxzSI Message-ID: <CAN+1Hbp9e+6Ra-NP=XA7pPFYVEPaxiv=fzvT9UnRv_V51tM7xg@HIDDEN> Subject: Add dock-mode for system GUI dock icon support To: bug-gnu-emacs@HIDDEN Content-Type: multipart/mixed; boundary="0000000000008613b00643e352cb" Received-SPF: pass client-ip=2607:f8b0:4864:20::e29; envelope-from=shipmints@HIDDEN; helo=mail-vs1-xe29.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit Cc: =?UTF-8?B?QmrDtnJuIEJpZGFy?= <bjorn.bidar@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.0 (/) --0000000000008613b00643e352cb Content-Type: multipart/alternative; boundary="0000000000008613af0643e352c9" --0000000000008613af0643e352c9 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This patch implements system GUI dock features for icon badges, icon progress indicator, and icon attention request with implementations for GNU/Linux KDE & GNOME, NS/macOS, and MS-Windows. GNU/Linux shells need to use an extension or include built-in support for the protocol documented here https://wiki.ubuntu.com/Unity/LauncherAPI. I tested using this "standard" shell extension https://extensions.gnome.org/extension/307/dash-to-dock/ on GNOME and assistance and testing on KDE from the reddit user GeneAutomatic3471. I'd appreciate thoughtful feedback, and of course, testing. -St=C3=A9phane --0000000000008613af0643e352c9 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:monospac= e">This patch implements system GUI dock features for icon badges, icon pro= gress indicator, and icon attention request with implementations for GNU/Li= nux KDE & GNOME, NS/macOS, and MS-Windows.</div><div class=3D"gmail_def= ault" style=3D"font-family:monospace"><br></div><div class=3D"gmail_default= " style=3D"font-family:monospace">GNU/Linux shells need to use an extension= or include built-in support for the protocol documented here=C2=A0<a href= =3D"https://wiki.ubuntu.com/Unity/LauncherAPI">https://wiki.ubuntu.com/Unit= y/LauncherAPI</a>.=C2=A0 I tested using this "standard" shell ext= ension=C2=A0<a href=3D"https://extensions.gnome.org/extension/307/dash-to-d= ock/">https://extensions.gnome.org/extension/307/dash-to-dock/</a>=C2=A0on = GNOME and assistance and testing on KDE from the reddit user GeneAutomatic3= 471.</div><div class=3D"gmail_default" style=3D"font-family:monospace"><br>= </div><div class=3D"gmail_default" style=3D"font-family:monospace">I'd = appreciate thoughtful feedback, and of=C2=A0course, testing.</div><div clas= s=3D"gmail_default" style=3D"font-family:monospace"><br></div><div class=3D= "gmail_default" style=3D"font-family:monospace">-St=C3=A9phane</div></div> --0000000000008613af0643e352c9-- --0000000000008613b00643e352cb Content-Type: application/octet-stream; name="0001-Add-system-GUI-dock-integration.patch" Content-Disposition: attachment; filename="0001-Add-system-GUI-dock-integration.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mi4yc82x0> X-Attachment-Id: f_mi4yc82x0 RnJvbSBmMWM0YmJmMDdhNGIxYzBjYjU4Njc0MTJlY2YyMDc0YmZjM2UzN2UxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFNhdCwgOCBOb3YgMjAyNSAxMzozMDozNyAtMDUwMApT dWJqZWN0OiBbUEFUQ0hdIEFkZCBzeXN0ZW0gR1VJIGRvY2sgaW50ZWdyYXRpb24uCgpJbXBsZW1l bnQgc3lzdGVtIEdVSSBkb2NrIGljb24gYmFkZ2UsIGljb24gcHJvZ3Jlc3MgaW5kaWNhdG9yLApp Y29uIGF0dGVudGlvbiBhbGVydCBmZWF0dXJlcyBmb3IgRC1CdXMgcGxhdGZvcm1zICh0ZXN0ZWQg b24gS0RFCmFuZCBHTk9NRSksIE5TIChHTlVzdGVwL21hY09TKSwgTWljcm9zb2Z0IFdpbmRvd3Mu CgoqIGxpc3AvZG9jay1tb2RlLmVsOiBOZXcgZmlsZS4KKiBzcmMvbnNmbnMubSAoRm5zX2JhZGdl LCBGbnNfcHJvZ3Jlc3NfaW5kaWNhdG9yKQooRm5zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24pOiBO ZXcgZnVuY3Rpb24uCihzeW1zX29mX25zZm5zKTogQWRkIGRlZnN1YnIgU25zX2JhZGdlLApTbnNf cmVxdWVzdF91c2VyX2F0dGVudGlvbiwgU25zX3Byb2dyZXNzX2luZGljYXRvci4gQWRkIERFRlNZ TQpRaW5mb3JtYXRpb25hbCwgUWNyaXRpY2FsLgoqIHNyYy93MzJmbnMuYyAocmdiX2xpc3RfdG9f Y29sb3JyZWYsIEZ3MzJfYmFkZ2UpCihGdzMyX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24sIEZ3MzJf cHJvZ3Jlc3NfaW5kaWNhdG9yKTogTmV3CmZ1bmN0aW9uLgooc3ltc19vZl93MzJmbnMpOiBBZGQg ZGVmc3ViciBTdzMyX2JhZGdlLApTdzMyX3Byb2dyZXNzX2luZGljYXRvciwgU3czMl9yZXF1ZXN0 X3VzZXJfYXR0ZW50aW9uLiBBZGQgREVGU1lNClFpbmZvcm1hdGlvbmFsLCBRY3JpdGljYWwuCiog ZG9jL21pc2MvTWFrZWZpbGUuaW46IEFkZGVkIG5ldyBmaWxlLgoqIGRvYy9taXNjL2RvY2stbW9k ZS50ZXhpOiBOZXcgZmlsZS4KKiBldGMvTkVXUzogQW5ub3VuY2UgdGhlIG5ldyBmZWF0dXJlLgot LS0KIGRvYy9taXNjL01ha2VmaWxlLmluICAgIHwgICAxICsKIGRvYy9taXNjL2RvY2stbW9kZS50 ZXhpIHwgMjM3ICsrKysrKysrKysrKysrKysrKysrKwogZXRjL05FV1MgICAgICAgICAgICAgICAg fCAgIDcgKwogbGlzcC9kb2NrLW1vZGUuZWwgICAgICAgfCA0NDUgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogc3JjL25zZm5zLm0gICAgICAgICAgICAgfCAxMjggKysr KysrKysrKysrCiBzcmMvdzMyZm5zLmMgICAgICAgICAgICB8IDQxNSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDEyMzMgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRvYy9taXNjL2RvY2stbW9kZS50ZXhpCiBjcmVhdGUgbW9k ZSAxMDA2NDQgbGlzcC9kb2NrLW1vZGUuZWwKCmRpZmYgLS1naXQgYS9kb2MvbWlzYy9NYWtlZmls ZS5pbiBiL2RvYy9taXNjL01ha2VmaWxlLmluCmluZGV4IDk1YzhhOTJkZWQxLi43YTkyZWMzODg4 NiAxMDA2NDQKLS0tIGEvZG9jL21pc2MvTWFrZWZpbGUuaW4KKysrIGIvZG9jL21pc2MvTWFrZWZp bGUuaW4KQEAgLTY4LDYgKzY4LDcgQEAgRE9DTUlTQ19XMzIgPQogCiAjIyBJbmZvIGZpbGVzIHRv IGJ1aWxkIGFuZCBpbnN0YWxsIG9uIGFsbCBwbGF0Zm9ybXMuCiBJTkZPX0NPTU1PTiA9IGF1dGgg YXV0b3R5cGUgYm92aW5lIGNhbGMgY2Ntb2RlIGNsIGRidXMgZGlyZWQteAkJXAorCWRvY2stbW9k ZQkJCQkJCQlcCiAJZWJyb3dzZSBlZGUgZWRpZmYgZWR0IGVmYXEgZWdsb3QgZWllaW8gZW1hY3Mt Z251dGxzCQlcCiAJZW1hY3MtbWltZSBlcGEgZXJjIGVydCBlc2hlbGwgZXVkYyBld3cgZmx5bWFr ZSBmb3JtcyBnbnVzCVwKIAlodG1sZm9udGlmeSBpZGx3YXZlIGlkbyBpbmZvLmluZm8gbWFpcml4 LWVsIG1lc3NhZ2UgbWgtZQlcCmRpZmYgLS1naXQgYS9kb2MvbWlzYy9kb2NrLW1vZGUudGV4aSBi L2RvYy9taXNjL2RvY2stbW9kZS50ZXhpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi43MTM1OGMwOWI3ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9taXNjL2RvY2stbW9k ZS50ZXhpCkBAIC0wLDAgKzEsMjM3IEBACitcaW5wdXQgdGV4aW5mbyAgICBAYyAtKi10ZXhpbmZv LSotCisKK0BzZXRmaWxlbmFtZSAuLi8uLi9pbmZvL2RvY2stbW9kZS5pbmZvCitAc2V0dGl0bGUg R1VJIERvY2sgSWNvbiBGZWF0dXJlcworQGluY2x1ZGUgZG9jc3R5bGUudGV4aQorCitAY29weWlu ZworVGhpcyBmaWxlIGRlc2NyaWJlcyBFbWFjcyBzeXN0ZW0gR1VJIGRvY2sgaW50ZWdyYXRpb24u CisKK0NvcHlyaWdodCBAY29weXJpZ2h0e30gMjAyNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKworQHF1b3RhdGlvbgorUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3Ry aWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50Cit1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjMgb3IKK2FueSBsYXRl ciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3aXRo IG5vCitJbnZhcmlhbnQgU2VjdGlvbnMsIHdpdGggdGhlIEZyb250LUNvdmVyIFRleHRzIGJlaW5n IGBgQSBHTlUgTWFudWFsLCcnCithbmQgd2l0aCB0aGUgQmFjay1Db3ZlciBUZXh0cyBhcyBpbiAo YSkgYmVsb3cuICBBIGNvcHkgb2YgdGhlIGxpY2Vuc2UKK2lzIGluY2x1ZGVkIGluIHRoZSBzZWN0 aW9uIGVudGl0bGVkIGBgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlJycuCisKKyhhKSBU aGUgRlNGJ3MgQmFjay1Db3ZlciBUZXh0IGlzOiBgYFlvdSBoYXZlIHRoZSBmcmVlZG9tIHRvIGNv cHkgYW5kCittb2RpZnkgdGhpcyBHTlUgbWFudWFsLicnCitAZW5kIHF1b3RhdGlvbgorQGVuZCBj b3B5aW5nCisKK0BkaXJjYXRlZ29yeSBFbWFjcyBtaXNjIGZlYXR1cmVzCitAZGlyZW50cnkKKyog RW1hY3MgR1VJIERvY2s6IChkb2NrKS4gICAgICAgRW1hY3MgR1VJIGRvY2sgaW50ZWdyYXRpb24u CitAZW5kIGRpcmVudHJ5CisKK0B0aXRsZXBhZ2UKK0B0aXRsZSBFbWFjcyBTeXN0ZW0gR1VJIERv Y2sgSW50ZWdyYXRpb24KK0BwYWdlCitAdnNraXAgMHB0IHBsdXMgMWZpbGxsCitAaW5zZXJ0Y29w eWluZworQGVuZCB0aXRsZXBhZ2UKKworQGNvbnRlbnRzCisKK0BpZm5vdHRleAorQG5vZGUgVG9w CitAdG9wIEVtYWNzIEdVSSBEb2NrIEludGVncmF0aW9uCitUaGlzIG1hbnVhbCBkZXNjcmliZXMg RW1hY3Mgc3lzdGVtIEdVSSBkb2NrIGludGVncmF0aW9uLgorCitUaGUgQGRmbntkb2NrfSBwYWNr YWdlIGFkZHMgRW1hY3MgaW50ZWdyYXRpb24gd2l0aCBHVUkgc3lzdGVtIGRvY2sgb3IKK3Rhc2ti YXIgRW1hY3MgYXBwbGljYXRpb24gaWNvbiBiYWRnZSwgcHJvZ3Jlc3MgaW5kaWNhdG9yLCBhbmQg aWNvbgorYXR0ZW50aW9uIGFsZXJ0IGZlYXR1cmVzLgorCitAaW5zZXJ0Y29weWluZworCitAbWVu dQorKiBPdmVydmlldzo6ICAgICAgICAgICAgICAgICAgICBPdmVydmlldyBvZiBHVUkgc3lzdGVt IGRvY2sgaW50ZWdyYXRpb24KKyogUHJlcmVxdWlzaXRlczo6CisqIFVzZXIgT3B0aW9uczo6Cisq IEZ1bmN0aW9uIFJlZmVyZW5jZTo6CisqIERvY2sgVXNhZ2UgRXhhbXBsZXM6OgorKiBHTlUgRnJl ZSBEb2N1bWVudGF0aW9uIExpY2Vuc2U6OiAgVGhlIGxpY2Vuc2UgZm9yIHRoaXMgZG9jdW1lbnRh dGlvbi4KKyogRnVuY3Rpb24gSW5kZXg6OgorKiBWYXJpYWJsZSBJbmRleDo6CitAZW5kIG1lbnUK K0BlbmQgaWZub3R0ZXgKKworQG5vZGUgT3ZlcnZpZXcKK0BjaGFwdGVyIE92ZXJ2aWV3CisKK1Ro ZSBEb2NrIHBhY2thZ2UgcHJvdmlkZXMgaW50ZWdyYXRpb24gd2l0aCB0aGVzZSBzeXN0ZW0gR1VJ IGRvY2sKK2ZlYXR1cmVzOgorCitAaXRlbWl6ZSBAYnVsbGV0CitAaXRlbSBJY29uIGJhZGdlCitA aXRlbSBJY29uIHByb2dyZXNzIGluZGljYXRvcgorQGl0ZW0gSWNvbiBhdHRlbnRpb24gYWxlcnQK K0BlbmQgaXRlbWl6ZQorCitAbm9kZSBQcmVyZXF1aXNpdGVzCitAY2hhcHRlciBQcmVyZXF1aXNp dGVzCisKK0dOVXN0ZXAsIG1hY09TLCBhbmQgTVMtV2luZG93cyB1c2VycyBuZWVkIG5vIGV4dGVy bmFsIGNvbmZpZ3VyYXRpb24uCisKK09uIEdOVS9MaW51eCBzeXN0ZW1zLCB0aGUgaW1wbGVtZW50 YXRpb24gaXMgdmlhIEQtQnVzIHRvIGNvbnRyb2wgR1VJCitzaGVsbHMgYW5kL29yIHNoZWxsIGV4 dGVuc2lvbnMgc3VjaCBhcworQGZpbGV7aHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRl bnNpb24vMzA3L2Rhc2gtdG8tZG9jay99IHRoYXQKK2ltcGxlbWVudHMgVWJ1bnR1J3MgVW5pdHkg bGF1bmNoZXIgc3BlYyB3aGljaCB5b3UgY2FuIHJlYWQgbW9yZSBhYm91dAoraGVyZSBAZmlsZXto dHRwczovL3dpa2kudWJ1bnR1LmNvbS9Vbml0eS9MYXVuY2hlckFQSX0uCisKK1lvdXIgR05VL0xp bnV4IEVtYWNzIGluc3RhbmNlIHNob3VsZCBiZSBsYXVuY2hlZCB2aWEgYW4gYXBwcm9wcmlhdGUK K3NoZWxsICJkZXNrdG9wIiBmaWxlIHN1Y2ggYXMgdGhvc2UgZGlzdHJpYnV0ZWQgd2l0aCBFbWFj czsgZS5nLiwKKyJldGMvZW1hY3NjbGllbnQuZGVza3RvcCIuCisKK0Bub2RlIFVzZXIgT3B0aW9u cworQGNoYXB0ZXIgVXNlciBPcHRpb25zCisKK0BkZWZ2YXIgZG9jay1jbGVhci1hdHRlbnRpb24t b24tZnJhbWUtZm9jdXMKK1RoZSB2YXJpYWJsZSBAY29kZXtkb2NrLWNsZWFyLWF0dGVudGlvbi1v bi1mcmFtZS1mb2N1c30gY2FuIGJlCitjdXN0b21pemVkIHRvIGNsZWFyIHRoZSBkb2NrIGljb24g YXR0ZW50aW9uIGluZGljYXRvciB3aGVuIGFueSBFbWFjcyBHVUkKK2ZyYW1lIGlzIGZvY3VzZWQu ICBUaGlzIGlzIGlnbm9yZWQgb24gYmFjayBlbmRzIHRoYXQgYXV0b21hdGljYWxseSBjbGVhcgor dGhlIGF0dGVudGlvbiBpbmRpY2F0b3IuICBJdCBkZWZhdWx0cyB0byBAY29kZXt0fS4KK0BlbmQg ZGVmdmFyCisKK0BkZWZ2YXIgZG9jay1kYnVzLWRlc2t0b3AtZmlsZS1uYW1lCitUaGUgdmFyaWFi bGUgQGNvZGV7ZG9jay1kYnVzLWRlc2t0b3AtZmlsZS1uYW1lfSBhcHBsaWVzIG9uIEdOVS9MaW51 eAorRC1CdXMgc3lzdGVtcywgYW5kIGNhbiBiZSBjdXN0b21pemVkIHRvIGluZGljYXRlIHdoaWNo IGRlc2t0b3AgZmlsZSBuYW1lCitELUJ1cyB3aWxsIHVzZSB0byBpZGVudGlmeSB5b3VyIEVtYWNz IGluc3RhbmNlLiAgSXQgZGVmYXVsdHMgdG8gdGhlCitkZXNrdG9wIGZpbGUgYmFzZSBuYW1lIEBj b2RleyJlbWFjc2NsaWVudCJ9IGFuZCBtaWdodCBuZWVkIHRvIGJlIHNldCB0bworQGNvZGV7ImVt YWNzIn0gb24geW91ciBzeXN0ZW0uICBJbnN0YWxsZWQgRW1hY3MgYnVpbGRzIHR5cGljYWxseSBp bmNsdWRlCitkZWZhdWx0IGRlc2t0b3AgZmlsZXMgZm9yIGJvdGgsIGFuZCBhcmUgY2FsbGVkCitA Y29kZXsiZW1hY3NjbGllbnQuZGVza3RvcCJ9IGFuZCBAY29kZXsiZW1hY3MuZGVza3RvcCJ9LCBy ZXNwZWN0aXZlbHkuCitAZW5kIGRlZnZhcgorCitAZGVmdmFyIGRvY2stZGJ1cy10aW1lb3V0LW1z CitUaGUgdmFyaWFibGUgQGNvZGV7ZG9jay1kYnVzLXRpbWVvdXQtbXN9IGFwcGxpZXMgb24gR05V L0xpbnV4IEQtQnVzCitzeXN0ZW1zLCBhbmQgY2FuIGJlIGN1c3RvbWl6ZWQgdG8gc3BlY2lmeSB0 aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcworRW1hY3Mgd2lsbCB3YWl0IGZvciBELUJ1cyByZXNw b25zZXMgYmVmb3JlIHRpbWluZyBvdXQgYW5kIGNvbnNpZGVyaW5nCittZXNzYWdlcyB1bmRlbGl2 ZXJhYmxlLiAgSXQgZGVmYXVsdHMgdG8gMjUwMDAgbWlsbGlzZWNvbmRzLCB3aGljaCBpcyB0aGUK K3JlY29tbWVuZGVkIGRlZmF1bHQgYnkgdGhlIEQtQnVzIHBhY2thZ2UsIHdoaWNoIHNlZSwgQHB4 cmVme1RvcCwsLCBkYnVzLAorRC1CdXMgaW50ZWdyYXRpb24gaW4gRW1hY3N9LgorQGVuZCBkZWZ2 YXIKKworQG5vZGUgRnVuY3Rpb24gUmVmZXJlbmNlCitAY2hhcHRlciBGdW5jdGlvbiBSZWZlcmVu Y2UKKworQGZpbmRleCBkb2NrLW1vZGUKK0BkZWZ1biBkb2NrLW1vZGUKK0Bjb2Rle2RvY2stbW9k ZX0gbXVzdCBiZSBlbmFibGVkIGJlZm9yZSBjYWxsaW5nIGFueSBvZiBpdHMgZnVuY3Rpb25zLCB0 bworaW5pdGlhbGl6ZSB0aGUgc3lzdGVtIGJhY2sgZW5kLiAgT24gR05VL0xpbnV4IEQtQnVzLCBp bml0aWFsaXphdGlvbiB3aWxsCit0ZXN0IHRoYXQgdGhlIEQtQnVzIGRvY2sgcHJvdG9jb2wgaXMg ZXN0YWJsaXNoZWQsIGFuZCBzaWduYWwgYW4gZXJyb3IgaWYKK2l0IGlzIG5vdC4KK0BlbmQgZGVm dW4KKworQGZpbmRleCBkb2NrLWJhZGdlCitAZGVmdW4gZG9jay1iYWRnZSAmb3B0aW9uYWwgY291 bnQtb3Itc3RyaW5nCitTZXQgdGhlIGRvY2sgaWNvbiBiYWRnZSB0byBAdmFye2NvdW50LW9yLXN0 cmluZ30uICBJZgorQHZhcntjb3VudC1vci1zdHJpbmd9IGlzIEBjb2Rle25pbH0sIGNsZWFyIHRo ZSBiYWRnZS4KKworSWYgYSBzdHJpbmcgaXMgc3BlY2lmaWVkIG9uIGJhY2sgZW5kcyB3aGljaCBk byBub3Qgc3VwcG9ydCBzdHJpbmdzLCBpdAoraXMgY29udmVydGVkIHRvIGFuIGludGVnZXIsIGlm IHBvc3NpYmxlLCBvciB0byBuaWwuICBHTlVzdGVwIGFuZCBtYWNPUworc3VwcG9ydCBzdHJpbmcg YmFkZ2VzLCB0aGUgR05VL0xpbnV4IEQtQnVzIHByb3RvY29sIHN1cHBvcnRzIG9ubHkKK2ludGVn ZXJzOyBhbnkgc3RyaW5nIHRoYXQgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBpbnRlZ2VyIHdpbGwg YmUgdHJlYXRlZAorYXMgQGNvZGV7bmlsfS4KK0BlbmQgZGVmdW4KKworQGZpbmRleCBkb2NrLWF0 dGVudGlvbgorQGRlZnVuIGRvY2stYXR0ZW50aW9uICZvcHRpb25hbCB1cmdlbmN5IHRpbWVvdXQK K1NldCB0aGUgZG9jayBpY29uIHRvIGFsZXJ0IHRoZSB1c2VyLiAgVGhpcyB3aWxsIHJlc3VsdCBp biBhIGJvdW5jaW5nIG9yCitmbGFzaGluZyBkb2NrIGljb24uICBPbiBzb21lIGJhY2sgZW5kcywg ZG9jayBpY29uIGF0dGVudGlvbiB3aWxsCitkaXNwbGF5ZWQgb25seSBpZiBFbWFjcyBpcyBub3Qg dGhlIGZvY3VzZWQgYXBwbGljYXRpb24uCisKK0lmIEB2YXJ7dXJnZW5jeX0gaXMgdGhlIHN5bWJv bCBAY29kZXtpbmZvcm1hdGlvbmFsfSwgbm9ybWFsIGF0dGVudGlvbiBpcworcmVxdWVzdGVkLiAg SWYgQHZhcnt1cmdlbmN5fSBpcyB0aGUgc3ltYm9sIEBjb2Rle2NyaXRpY2FsfSwgdXJnZW50Cith dHRlbnRpb24gaXMgcmVxdWVzdGVkLiAgSWYgQHZhcnt1cmdlbnR9IGlzIEBjb2Rle25pbH0sIGNs ZWFyIHRoZQorYXR0ZW50aW9uIGluZGljYXRvci4gIEB2YXJ7dGltZW91dH0gaXMgdGhlIG51bWJl ciBvZiBzZWNvbmRzIHRvIHRpbWUgb3V0CithbmQgYXV0b21hdGljYWxseSByZW1vdmUgdGhlIGlu ZGljYXRvciwgb3IgQGNvZGV7bmlsfSwgd2hpY2ggZG9lcyBub3QKK3RpbWUgb3V0LgorCitPbiBz b21lIGJhY2sgZW5kcywgYW4gQGNvZGV7aW5mb3JtYXRpb25hbH0gYXR0ZW50aW9uIHJlcXVlc3Qg d2lsbCB0aW1lCitvdXQgYXV0b21hdGljYWxseS4gIEluIGNvbnRyYXN0LCBhIGBjcml0aWNhbGAg cmVxdWVzdCByZXF1aXJlcyB0aGF0IHRoZQordXNlciBicmluZyBFbWFjcyBpbnRvIGZvY3VzIGFu ZCB3aWxsIG5vdCB0aW1lIG91dC4gIE9uIHNvbWUgYmFjayBlbmRzLAorQGNvZGV7Y3JpdGljYWx9 IGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgQGNvZGV7aW5mb3JtYXRpb25hbH0uCitAZW5kIGRlZnVu CisKK0BmaW5kZXggZG9jay1wcm9ncmVzcworQGRlZnVuIGRvY2stcHJvZ3Jlc3MgJm9wdGlvbmFs IHByb2dyZXNzCitTZXQgdGhlIGRvY2sgaWNvbiB0byBpbmRpY2F0ZSBgYHByb2dyZXNzJycuICBQ cm9ncmVzcyBpcyB0eXBpY2FsbHkKK3JlcHJlc2VudGVkIGFzIGEgZ3JhcGhpY2FsIGJhciB0aGF0 IGZyYWN0aW9uYWxseSBzcGFucyB0aGUgZG9jayBpY29uLgorCitAdmFye3Byb2dyZXNzfSBpcyBh IGZsb2F0IGluIHRoZSByYW5nZSAwLjAgdG8gMS4wLiAgSWYgQHZhcntwcm9ncmVzc30gaXMKK25p bCwgcmVtb3ZlIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IuCitAZW5kIGRlZnVuCisKK0BmaW5kZXgg ZG90aW1lcy13aXRoLWRvY2stcHJvZ3Jlc3MtcmVwb3J0ZXIKK0BkZWZtYWMgZG90aW1lcy13aXRo LWRvY2stcHJvZ3Jlc3MtcmVwb3J0ZXIgKHZhciBjb3VudCBbcmVzdWx0XSkgcmVwb3J0ZXItb3It bWVzc2FnZSBib2R5QGRvdHN7fQorVGhpcyBpcyBhIGNvbnZlbmllbmNlIG1hY3JvIGFuYWxvZ291 cyB0bworQGNvZGV7ZG90aW1lcy13aXRoLXByb2dyZXNzLXJlcG9ydGVyfSBhbmQgd29ya3MgdGhl IHNhbWUgd2F5IGFzCitAY29kZXtkb3RpbWVzfSBkb2VzLCBidXQgYWxzbyByZXBvcnRzIGxvb3Ag cHJvZ3Jlc3Mgb24gdGhlIEVtYWNzIGRvY2sKK2ljb24uICBJdHMgdXNhZ2UgaXMgZGVzY3JpYmVk IGluIEBweHJlZntQcm9ncmVzcywsIERpc3BsYXksIGVsaXNwLCBUaGUKK0VtYWNzIExpc3AgUmVm ZXJlbmNlIE1hbnVhbH0uCitAZW5kIGRlZm1hYworCitAZmluZGV4IGRvbGlzdC13aXRoLWRvY2st cHJvZ3Jlc3MtcmVwb3J0ZXIKK0BkZWZtYWMgZG9saXN0LXdpdGgtZG9jay1wcm9ncmVzcy1yZXBv cnRlciAodmFyIGxpc3QgW3Jlc3VsdF0pIHJlcG9ydGVyLW9yLW1lc3NhZ2UgYm9keUBkb3Rze30K K1RoaXMgaXMgYSBjb252ZW5pZW5jZSBtYWNybyBhbmFsb2dvdXMgdG8KK0Bjb2Rle2RvbGlzdC13 aXRoLXByb2dyZXNzLXJlcG9ydGVyfSBhbmQgd29ya3MgdGhlIHNhbWUgd2F5IGFzCitAY29kZXtk b2xpc3R9IGRvZXMsIGJ1dCBhbHNvIHJlcG9ydHMgbG9vcCBwcm9ncmVzcyBvbiB0aGUgRW1hY3Mg ZG9jaworaWNvbi4gIEl0cyB1c2FnZSBpcyBkZXNjcmliZWQgaW4gQHB4cmVme1Byb2dyZXNzLCwg RGlzcGxheSwgZWxpc3AsIFRoZQorRW1hY3MgTGlzcCBSZWZlcmVuY2UgTWFudWFsfS4KK0BlbmQg ZGVmbWFjCisKK0Bub2RlIERvY2sgVXNhZ2UgRXhhbXBsZXMKK0BjaGFwdGVyIERvY2sgVXNhZ2Ug RXhhbXBsZXMKKworQGxpc3AKKzs7IEVuYWJsZSBhbmQgaW5pdGlhbGl6ZSBkb2NrLW1vZGUuCiso ZG9jay1tb2RlKQorCis7OyBEaXNwbGF5IGEgYmFkZ2Ugb24gdGhlIGRvY2sgaWNvbi4KKyhkb2Nr LWJhZGdlIGVtYWNzLW1ham9yLXZlcnNpb24pCisoZG9jay1iYWRnZSAiMzEiKQorKGRvY2stYmFk Z2UgIlRlc3QiKSA7IHNob3J0IHN0cmluZyAob24gc3VwcG9ydGVkIHBsYXRmb3JtcykKKworOzsg Q2xlYXIgdGhlIGJhZGdlLgorKGRvY2stYmFkZ2UpCisKKzs7IEdldCB0aGUgdXNlcidzIGF0dGVu dGlvbi4KKworKGRvY2stYXR0ZW50aW9uICdpbmZvcm1hdGlvbmFsIDMpIDsgY2xlYXIgdGhlIHJl cXVlc3QgYWZ0ZXIgMyBzZWNvbmRzCisoZG9jay1hdHRlbnRpb24gJ2NyaXRpY2FsKQorCis7OyBD bGVhciB0aGUgYXR0ZW50aW9uIHJlcXVlc3QuCisoZG9jay1hdHRlbnRpb24pCisKKzs7IFJlcG9y dCBgZG90aW1lc2AgcHJvZ3Jlc3Mgb24gdGhlIGRvY2sgaWNvbi4KKworKGRvdGltZXMtd2l0aC1k b2NrLXByb2dyZXNzLXJlcG9ydGVyCisgKGkgMTApICJkb3RpbWVzLXdpdGgtZG9jay1wcm9ncmVz cy1yZXBvcnRlci4uLiIKKyAoc2l0LWZvciAxKSkKKworOzsgUmVwb3J0IGBkb2xpc3RgIHByb2dy ZXNzIG9uIHRoZSBkb2NrIGljb24uCisKKyhkb2xpc3Qtd2l0aC1kb2NrLXByb2dyZXNzLXJlcG9y dGVyCisgKGkgKG1ha2UtbGlzdCAxMCB0KSkgImRvbGlzdC13aXRoLWRvY2stcHJvZ3Jlc3MtcmVw b3J0ZXIuLi4iCisgKHNpdC1mb3IgMSkpCitAZW5kIGxpc3AKKworQG5vZGUgR05VIEZyZWUgRG9j dW1lbnRhdGlvbiBMaWNlbnNlCitAYXBwZW5kaXggR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNl bnNlCitAaW5jbHVkZSBkb2NsaWNlbnNlLnRleGkKKworQG5vZGUgRnVuY3Rpb24gSW5kZXgKK0B1 bm51bWJlcmVkIEZ1bmN0aW9uIEluZGV4CitAcHJpbnRpbmRleCBmbgorCitAbm9kZSBWYXJpYWJs ZSBJbmRleAorQHVubnVtYmVyZWQgVmFyaWFibGUgSW5kZXgKK0BwcmludGluZGV4IHZyCisKK0Bi eWUKKworQGMgRW5kOgpkaWZmIC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCAzYjY2 ZjRiYWZmMi4uZWQxNjc1ODI3OTIgMTAwNjQ0Ci0tLSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdT CkBAIC0yNzQ4LDYgKzI3NDgsMTMgQEAgZGV0ZXJtaW5lZCBieSB0aGUgbmV3IHVzZXIgb3B0aW9u ICdwdWxzZS1mYWNlLWR1cmF0aW9uJy4KIAogKiogTWlzY2VsbGFuZW91cwogCisrKysKKyoqKiBO ZXcgZmVhdHVyZSAnZG9jay1tb2RlJy4KK1RoaXMgcGFja2FnZSBpbnRlZ3JhdGVzIEVtYWNzIHdp dGggc3lzdGVtIEdVSSAiZG9ja3MiIHRvIGRpc3BsYXkgYSBkb2NrCitpY29uIGJhZGdlLCBwcm9n cmVzcyBpbmRpY2F0b3IsIGFuZCBhdHRlbnRpb24gYWxlcnRzLiAgSW1wbGVtZW50YXRpb25zCith cmUgYXZhaWxhYmxlIGZvciBELUJ1cyBwbGF0Zm9ybXMgKGUuZy4sIEtERSBhbmQgR05PTUUpLCBt YWNPUy9HTlVzdGVwLAorYW5kIE1TLVdpbmRvd3MuCisKIC0tLQogKioqICd0b29sdGlwLW1vZGUn IG5vdyBzaG93cyB0b29sdGlwcyBhZnRlciBkZWxheSBvbiBUVFkgZnJhbWVzLgogRGlzcGxheSBv ZiB0b29sdGlwcyBvbiB0ZXh0LW9ubHkgdGVybWluYWxzIG5vdyBoYXBwZW5zIGFmdGVyCmRpZmYg LS1naXQgYS9saXNwL2RvY2stbW9kZS5lbCBiL2xpc3AvZG9jay1tb2RlLmVsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42ZTI5Nzg3NGIxOQotLS0gL2Rldi9udWxsCisr KyBiL2xpc3AvZG9jay1tb2RlLmVsCkBAIC0wLDAgKzEsNDQ1IEBACis7OzsgZG9jay1tb2RlLmVs IC0tLSBHVUkgZGVza3RvcCBkb2NrIHN0YXR1cyAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0IC0qLQor Cis7OyBDb3B5cmlnaHQgKEMpIDIwMjUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisK Kzs7IEF1dGhvcjogU3RlcGhhbmUgTWFya3MKKzs7IE1haW50YWluZXI6IGVtYWNzLWRldmVsQGdu dS5vcmcKKzs7IEtleXdvcmRzOiBjb252ZW5pZW5jZQorOzsgUGFja2FnZS1SZXF1aXJlczogKChl bWFjcyAiMzEuMSIpKQorCis7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCisKKzs7 IEdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Cis7OyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKzs7IChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisKKzs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7IEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKzs7IFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Cis7OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50YXJ5OgorCis7OyBVc2UgdGhpcyBwYWNrYWdl IHRvIGRpc3BsYXkgdGhlIGZvbGxvd2luZyBvbiB5b3VyIHN1cHBvcnRlZCBHVUkgImRvY2siOgor OzsKKzs7IGBkb2NrLWJhZGdlJyBvdmVybGF5cyBhIHZlcnkgc2hvcnQgc3RyaW5nIG9yIG51bWJl ciBvbiB0aGUgRW1hY3MgZG9jaworOzsgaWNvbi4gIFlvdSBjYW4gdXNlIHRoaXMsIGZvciBleGFt cGxlLCB0byBpbmRpY2F0ZSB0aGUgbnVtYmVyIG9mCis7OyB1bnJlYWQgZW1haWwgbWVzc2FnZXMu Cis7OworOzsgYGRvY2stYXR0ZW50aW9uJyBmbGFzaGVzIG9yIGJvdW5jZXMgdGhlIEVtYWNzIGRv Y2sgaWNvbiB0byBpbmRpY2F0ZQorOzsgdGhhdCB5b3VyIEVtYWNzIHNlc3Npb24gd2FudHMgYXR0 ZW50aW9uLiAgSXRzIGJlaGF2aW9ycyBhcmUgYmFjay1lbmQKKzs7IHNwZWNpZmljLgorOzsKKzs7 IGBkb2NrLXByb2dyZXNzJyBvdmVybGF5cyBhIGdyYXBoaWNhbCBwcm9ncmVzcyBiYXIgb24gdGhl IEVtYWNzIGRvY2sKKzs7IGljb24gdG8gaWxsdXN0cmF0ZSBwcm9ncmVzcyBvZiBhIHBvdGVudGlh bGx5IGxvbmctcnVubmluZyBvcGVyYXRpb24uCis7OworOzsgVGhlIGNvbnZlbmllbmNlIG1hY3Jv cyBgZG90aW1lcy13aXRoLWRvY2stcHJvZ3Jlc3MtcmVwb3J0ZXInIGFuZAorOzsgYGRvbGlzdC13 aXRoLWRvY2stcHJvZ3Jlc3MtcmVwb3J0ZXInIGRpc3BsYXkgcHJvZ3Jlc3MgaW4gdGhlCis7OyBl Y2hvLWFyZWEgYW5kIG9uIHRoZSBkb2NrIGljb24uICBUaGV5IGFyZSBhbmFsb2dvdXMgdG8gdGhl aXIKKzs7IGVjaG8tYXJlYSBvbmx5IGNvdW50ZXJwYXJ0cyBgZG90aW1lcy13aXRoLXByb2dyZXNz LXJlcG9ydGVyJyBhbmQKKzs7IGBkb2xpc3Qtd2l0aC1wcm9ncmVzcy1yZXBvcnRlcicsIHJlc3Bl Y3RpdmVseS4KKworOzsgT24gR05VL0xpbnV4IHN5c3RlbXMsIHRoZSBpbXBsZW1lbnRhdGlvbiBp cyB2aWEgRC1CdXMgdG8gY29udHJvbCBHVUkKKzs7IHNoZWxscyBhbmQvb3Igc2hlbGwgZXh0ZW5z aW9ucyBzdWNoIGFzCis7OyBodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8z MDcvZGFzaC10by1kb2NrLyB0aGF0Cis7OyBpbXBsZW1lbnQgVWJ1bnR1J3MgVW5pdHkgbGF1bmNo ZXIgc3BlYywgd2hpY2ggc2VlCis7OyBodHRwczovL3dpa2kudWJ1bnR1LmNvbS9Vbml0eS9MYXVu Y2hlckFQSS4KKzs7Cis7OyBZb3VyIExpbnV4IEVtYWNzIGluc3RhbmNlIHNob3VsZCBiZSBsYXVu Y2hlZCB2aWEgYW4gYXBwcm9wcmlhdGUgc2hlbGwKKzs7ICJkZXNrdG9wIiBmaWxlIHN1Y2ggYXMg dGhvc2UgZGlzdHJpYnV0ZWQgd2l0aCBFbWFjczsgZS5nLiwKKzs7ICJldGMvZW1hY3NjbGllbnQu ZGVza3RvcCIuCis7OworOzsgT24gR05Vc3RlcCBhbmQgbWFjT1Mgc3lzdGVtcyAoYWthIE5TKSwg YW5kIE1TLVdpbmRvd3MsIG5hdGl2ZSBBUElzCis7OyBhcmUgdXNlZC4KKzs7Cis7OyBUbyBhZGQg c3VwcG9ydCBmb3IgYWRkaXRpb25hbCBzeXN0ZW1zLCBwcm92aWRlIGEgYmFjayBlbmQgdGhhdCBp bXBsZW1lbnRzCis7OyB0aGUgY2wtZ2VuZXJpYyBmdW5jdGlvbnMgYmVsb3cuCisKKzs7OyBDb2Rl OgorCisoZXZhbC13aGVuLWNvbXBpbGUKKyAgKHJlcXVpcmUgJ2RidXMpKQorCisoZGVmZ3JvdXAg ZG9jayBuaWwKKyAgIkdVSSBkb2NrIGljb24gYmFkZ2VzLCBwcm9ncmVzcyByZXBvcnQsIGFsZXJ0 cy4iCisgIDpncm91cCAnY29udmVuaWVuY2UpCisKKyhkZWZjdXN0b20gZG9jay1jbGVhci1hdHRl bnRpb24tb24tZnJhbWUtZm9jdXMgdAorICAiQ2xlYXIgdGhlIGljb24gYXR0ZW50aW9uIGluZGlj YXRvciB3aGVuIGFueSBHVUkgZnJhbWUgaXMgZm9jdXNlZC4KK1RoaXMgaXMgaWdub3JlZCBvbiBi YWNrIGVuZHMgdGhhdCBhdXRvbWF0aWNhbGx5IGNsZWFyIHRoZSBhdHRlbnRpb24KK2luZGljYXRv ci4iCisgIDp0eXBlICdib29sZWFuKQorCisoZGVmY3VzdG9tIGRvY2stZGJ1cy1kZXNrdG9wLWZp bGUtbmFtZSAiZW1hY3NjbGllbnQiCisgICJELUJ1cyBkZXNrdG9wIGZpbGUgYmFzZSBuYW1lIGRl c3RpbmF0aW9uIGZvciBkb2NrIG1lc3NhZ2VzLgorVGhpcyBzaG91bGQgYmUgdGhlIGJhc2UgbmFt ZSBvZiB0aGUgZGVza3RvcCBmaWxlIHVzZWQgdG8gbGF1bmNoIGFuIEVtYWNzCitpbnN0YW5jZS4g IEZvciBleGFtcGxlLCBpZiB5b3VyIGxhdW5jaGVyIGRlc2t0b3AgZmlsZSBpcyBjYWxsZWQKK1wi ZW1hY3MuZGVza3RvcFwiLCB0aGlzIG9wdGlvbiBzaG91bGQgYmUgXCJlbWFjc1wiLiIKKyAgOnR5 cGUgJ3N0cmluZykKKworKGRlZmN1c3RvbSBkb2NrLWRidXMtdGltZW91dC1tcyAyNTAwMAorICAi TnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciBELUJ1cyByZXNwb25zZXMuCitUaGUg ZGVmYXVsdCB2YWx1ZSBtaXJyb3JzIHRoZSBgZGJ1c2AgZGVmYXVsdC4iCisgIDp0eXBlICduYXRu dW0pCisKKyhkZWZ2YXIgZG9jay0tYmFjay1lbmQgbmlsCisgICJHZW5lcmljIGRvY2sgbWV0aG9k IHN5c3RlbSBkaXNwYXRjaGVyLiIpCisKKyhkZWZ1biBkb2NrLS1zZXQtYmFjay1lbmQgKCkKKyAg IkRldGVybWluZSBkb2NrIGhvc3Qgc3lzdGVtIHR5cGUuIgorICA7OyBPcmRlciBtYXR0ZXJzIHRv IGFjY29tbW9kYXRlIHRoZSBjYXNlcyB3aGVyZSBhbiBOUyBvciBNUy1XaW5kb3dzCisgIDs7IGJ1 aWxkIGhhdmUgYSBkYnVzIGZlYXR1cmUuCisgIChjb25kICgoYm91bmRwICducy12ZXJzaW9uLXN0 cmluZykKKyAgICAgICAgIChzZXRxIGRvY2stLWJhY2stZW5kICducykpCisgICAgICAgICgoYm91 bmQtYW5kLXRydWUtcCB3MzItaW5pdGlhbGl6ZWQpCisgICAgICAgICAoc2V0cSBkb2NrLS1iYWNr LWVuZCAnd2luZG93cy1udCkpCisgICAgICAgICgoYW5kIChmZWF0dXJlcCAnZGJ1c2JpbmQpCisg ICAgICAgICAgICAgIChtZW1iZXIgIm9yZy5mcmVlZGVza3RvcC5sb2dpbjEiCisgICAgICAgICAg ICAgICAgICAgICAgKGRidXMtbGlzdC1hY3RpdmF0YWJsZS1uYW1lcyA6c3lzdGVtKSkpCisgICAg ICAgICAoc2V0cSBkb2NrLS1iYWNrLWVuZCAnZGJ1cykpCisgICAgICAgICh0CisgICAgICAgICAo c2V0cSBkb2NrLS1iYWNrLWVuZCBuaWwpKSkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVmaW5lLW1p bm9yLW1vZGUgZG9jay1tb2RlCisgICJHVUkgZG9jayBpY29uIGJhZGdlcywgcHJvZ3Jlc3MgcmVw b3J0LCBhbGVydHMuIgorICA6Z2xvYmFsIHQKKyAgKHdoZW4gbm9uaW50ZXJhY3RpdmUKKyAgICAo d2FybiAiQmF0Y2ggbW9kZSBkb2VzIG5vdCBzdXBwb3J0IGBkb2NrJyIpKQorICAoY29uZCAoZG9j ay1tb2RlCisgICAgICAgICAoaWYgKGRvY2stLXNldC1iYWNrLWVuZCkKKyAgICAgICAgICAgICAo ZG9jay0tZW5hYmxlKQorICAgICAgICAgICAod2FybiAiU3lzdGVtIGRvZXMgbm90IHN1cHBvcnQg YGRvY2snIikpKQorICAgICAgICAodAorICAgICAgICAgKHdoZW4gZG9jay0tYmFjay1lbmQKKyAg ICAgICAgICAgKGRvY2stLWRpc2FibGUpCisgICAgICAgICAgIChzZXRxIGRvY2stLWJhY2stZW5k IG5pbCkpKSkpCisKKyhjbC1kZWZnZW5lcmljIGRvY2stLWVuYWJsZSAoKQorICAiRW5hYmxlIHRo ZSBkb2NrIGJhY2sgZW5kLiIpCisKKyhjbC1kZWZnZW5lcmljIGRvY2stLWRpc2FibGUgKCkKKyAg IkRpc2FibGUgdGhlIGRvY2sgYmFjayBlbmQuIikKKworKGNsLWRlZmdlbmVyaWMgZG9jay1iYWRn ZSAoJm9wdGlvbmFsIGNvdW50LW9yLXN0cmluZykKKyAgIlNldCB0aGUgZG9jayBpY29uIGJhZGdl IHRvIENPVU5ULU9SLVNUUklORy4KK0lmIENPVU5ULU9SLVNUUklORyBpcyBhbiBpbnRlZ2VyLCBk aXNwbGF5IHRoYXQgYXMgdGhlIGljb24gYmFkZ2UuCitJZiBDT1VOVC1PUi1TVFJJTkcgaXMgYSBz dHJpbmcgb24gYmFjayBlbmRzIHdoaWNoIGRvIG5vdCBzdXBwb3J0CitzdHJpbmdzLCBjb252ZXJ0 IENPVU5ULU9SLVNUUklORyB0byBhbiBpbnRlZ2VyLCBvciBuaWwuCitJZiBDT1VOVC1PUi1TVFJJ TkcgaXMgbmlsLCBvciBpcyBhbiBlbXB0eSBzdHJpbmcsIHJlbW92ZSB0aGUgY291bnRlci4iKQor CisoY2wtZGVmZ2VuZXJpYyBkb2NrLWF0dGVudGlvbiAoJm9wdGlvbmFsIHVyZ2VuY3kgdGltZW91 dCkKKyAgIlNldCB0aGUgZG9jayBpY29uIHRvIGFsZXJ0IHRoZSB1c2VyLgorSWYgVVJHRU5DWSBp cyB0aGUgc3ltYm9sIGBpbmZvcm1hdGlvbmFsJywgcmVxdWVzdCBub3JtYWwgYXR0ZW50aW9uLgor SWYgVVJHRU5DWSBpcyB0aGUgc3ltYm9sIGBjcml0aWNhbCcsIHJlcXVlc3QgdXJnZW50IGF0dGVu dGlvbi4KK0lmIFVSR0VOQ1kgaXMgbmlsLCBjbGVhciB0aGUgYXR0ZW50aW9uIGluZGljYXRvci4K K0lmIFRJTUVPVVQgaXMgbm9uLW5pbCwgY2xlYXIgdGhlIGF0dGVudGlvbiBpbmRpY2F0b3IgYWZ0 ZXIgVElNRU9VVAorc2Vjb25kcy4KKworT24gc29tZSBiYWNrIGVuZHMsIGFuIGBpbmZvcm1hdGlv bmFsJyBhdHRlbnRpb24gcmVxdWVzdCB3aWxsIHRpbWUgb3V0CithdXRvbWF0aWNhbGx5LiAgSW4g Y29udHJhc3QsIGEgYGNyaXRpY2FsYCByZXF1ZXN0IHJlcXVpcmVzIHRoYXQgdGhlIHVzZXIKK2Jy aW5nIEVtYWNzIGludG8gZm9jdXMgYW5kIHdpbGwgbm90IHRpbWUgb3V0LiAgT24gc29tZSBiYWNr IGVuZHMsCitgY3JpdGljYWwnIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgYGluZm9ybWF0aW9uYWwn LiIpCisKKyhjbC1kZWZnZW5lcmljIGRvY2stcHJvZ3Jlc3MgKCZvcHRpb25hbCBwcm9ncmVzcykK KyAgIlNldCB0aGUgZG9jayBpY29uIHRvIGluZGljYXRlIHByb2dyZXNzLgorUFJPR1JFU1MgaXMg YSBmbG9hdCBpbiB0aGUgcmFuZ2UgMC4wIHRvIDEuMC4KK0lmIFBST0dSRVNTIGlzIG5pbCwgcmVt b3ZlIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IuIikKKworKGRlZnVuIGRvY2stLXZhbGlkYXRlLXBy b2dyZXNzIChwcm9ncmVzcykKKyAgIlJldHVybiBQUk9HUkVTUyBhcyBhIGZsb2F0IGluIHRoZSBy YW5nZSAwLjAgdG8gMS4wLCBvciBuaWwuIgorICAod2hlbiAobmF0bnVtcCBwcm9ncmVzcykKKyAg ICAoc2V0cSBwcm9ncmVzcyAoZmxvYXQgcHJvZ3Jlc3MpKSkKKyAgKGFuZCBwcm9ncmVzcyAoPj0g cHJvZ3Jlc3MgMC4wKSAoPD0gcHJvZ3Jlc3MgMS4wKSkpCisKKwwKKzs7IGBwcm9ncmVzcy1yZXBv cnRlcicgc3VwcG9ydC4KKworKGRlZnVuIGRvY2stLXByb2dyZXNzLXJlcG9ydGVyLWRvLXVwZGF0 ZSAob3JpZy1mdW4gcmVwb3J0ZXIgdmFsdWUgJm9wdGlvbmFsIHN1ZmZpeCkKKyAgImBwcm9ncmVz cy1yZXBvcnRlci1kby11cGRhdGVgIGFkdmljZSBoZWxwZXIuCitQYXNzIE9SSUctRlVOIFJFUE9S VEVSIFZBTFVFIFNVRkZJWCB0aHJvdWdoIHRvCitgcHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRl YC4iCisgIChmdW5jYWxsIG9yaWctZnVuIHJlcG9ydGVyIHZhbHVlIHN1ZmZpeCkKKyAgKGxldCog KChwYXJhbWV0ZXJzIChjZHIgcmVwb3J0ZXIpKQorICAgICAgICAgKHVwZGF0ZS10aW1lIChhcmVm IHBhcmFtZXRlcnMgMCkpCisgICAgICAgICAobWluLXZhbHVlIChhcmVmIHBhcmFtZXRlcnMgMSkp CisgICAgICAgICAobWF4LXZhbHVlIChhcmVmIHBhcmFtZXRlcnMgMikpCisgICAgICAgICAoZW5v dWdoLXRpbWUtcGFzc2VkCisgICAgICAgICAgKG9yIChub3QgdXBkYXRlLXRpbWUpCisgICAgICAg ICAgICAgICh0aW1lLWxlc3MtcCB1cGRhdGUtdGltZSBuaWwpKSkpCisgICAgKHdoZW4gKGFuZCBt aW4tdmFsdWUgbWF4LXZhbHVlKQorICAgICAgKHdoZW4gZW5vdWdoLXRpbWUtcGFzc2VkCisgICAg ICAgIChsZXQqICgob25lLXBlcmNlbnQgKC8gKC0gbWF4LXZhbHVlIG1pbi12YWx1ZSkgMTAwLjAp KQorICAgICAgICAgICAgICAgKHBlcmNlbnRhZ2UgKGlmICg9IG1heC12YWx1ZSBtaW4tdmFsdWUp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAodHJ1bmNhdGUgKC8gKC0gdmFsdWUgbWluLXZhbHVlKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lLXBlcmNlbnQpKSkpKQorICAgICAgICAgIChk b2NrLXByb2dyZXNzICgvIHBlcmNlbnRhZ2UgMTAwLjApKSkpCisgICAgICAod2hlbiAoPj0gdmFs dWUgbWF4LXZhbHVlKQorICAgICAgICAoZG9jay1wcm9ncmVzcyBuaWwpKSkpKQorCisoZGVmdmFy IGRvY2stLWRvdGltZXMtd2l0aC1kb2NrLXByb2dyZXNzLXJlcG9ydGVyLWFkdmljZS1jb3VudCAw CisgICJFbnN1cmUgYWR2aWNlIGlzIG5vdCByZW1vdmVkIHdoZW4gbW9yZSB0aGFuIG9uZSBhY3Rp dmUgdXNlLiIpCisKKyhkZWZ1biBkb2NrLS1zZXQtdXAtcHJvZ3Jlc3MtcmVwb3J0ZXIgKCkKKyAg ImBwcm9ncmVzcy1yZXBvcnRlci1kby11cGRhdGVgIGhlbHBlci4iCisgIChpbmNmIGRvY2stLWRv dGltZXMtd2l0aC1kb2NrLXByb2dyZXNzLXJlcG9ydGVyLWFkdmljZS1jb3VudCkKKyAgKGFkdmlj ZS1hZGQgIydwcm9ncmVzcy1yZXBvcnRlci1kby11cGRhdGUKKyAgICAgICAgICAgICAgOmFyb3Vu ZAorICAgICAgICAgICAgICAjJ2RvY2stLXByb2dyZXNzLXJlcG9ydGVyLWRvLXVwZGF0ZSkpCisK KyhkZWZ1biBkb2NrLS10ZWFyLWRvd24tcHJvZ3Jlc3MtcmVwb3J0ZXIgKCkKKyAgImBwcm9ncmVz cy1yZXBvcnRlci1kby11cGRhdGVgIGhlbHBlci4iCisgICh3aGVuICg9IDAgKGRlY2YgZG9jay0t ZG90aW1lcy13aXRoLWRvY2stcHJvZ3Jlc3MtcmVwb3J0ZXItYWR2aWNlLWNvdW50KSkKKyAgICAo YWR2aWNlLXJlbW92ZSAjJ3Byb2dyZXNzLXJlcG9ydGVyLWRvLXVwZGF0ZQorICAgICAgICAgICAg ICAgICAgICMnZG9jay0tcHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRlKSkpCisKKyhkZWZtYWNy byBkb3RpbWVzLXdpdGgtZG9jay1wcm9ncmVzcy1yZXBvcnRlciAoc3BlYyByZXBvcnRlci1vci1t ZXNzYWdlICZyZXN0IGJvZHkpCisgICJMb29wIGEgbnVtYmVyIG9mIHRpbWVzIGFuZCByZXBvcnQg cHJvZ3Jlc3MgaW4gdGhlIGVjaG8gYXJlYSBhbmQgR1VJIGRvY2suCitFdmFsdWF0ZSBCT0RZIHdp dGggVkFSIGJvdW5kIHRvIHN1Y2Nlc3NpdmUgaW50ZWdlcnMgcnVubmluZyBmcm9tCiswLCBpbmNs dXNpdmUsIHRvIENPVU5ULCBleGNsdXNpdmUuICBUaGVuIGV2YWx1YXRlIFJFU1VMVCB0byBnZXQK K3RoZSByZXR1cm4gdmFsdWUgKG5pbCBpZiBSRVNVTFQgaXMgb21pdHRlZCkuCisKK1NQRUMgUkVQ T1JURVItT1ItTUVTU0FHRSBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgaW4KK2Bkb3RpbWVzLXdp dGgtcHJvZ3Jlc3MtcmVwb3J0ZXJgLCB3aGljaCBzZWUuIgorICAoZGVjbGFyZSAoaW5kZW50IDIp IChkZWJ1ZyAoKHN5bWJvbHAgZm9ybSAmb3B0aW9uYWwgZm9ybSkgZm9ybSBib2R5KSkpCisgIGAo dW53aW5kLXByb3RlY3QKKyAgICAgICAocHJvZ24KKyAgICAgICAgIChkb2NrLS1zZXQtdXAtcHJv Z3Jlc3MtcmVwb3J0ZXIpCisgICAgICAgICAoZG90aW1lcy13aXRoLXByb2dyZXNzLXJlcG9ydGVy ICxzcGVjICxyZXBvcnRlci1vci1tZXNzYWdlICxAYm9keSkpCisgICAgIChkb2NrLXByb2dyZXNz IG5pbCkKKyAgICAgKGRvY2stLXRlYXItZG93bi1wcm9ncmVzcy1yZXBvcnRlcikpKQorCisoZGVm bWFjcm8gZG9saXN0LXdpdGgtZG9jay1wcm9ncmVzcy1yZXBvcnRlciAoc3BlYyByZXBvcnRlci1v ci1tZXNzYWdlICZyZXN0IGJvZHkpCisgICJMb29wIG92ZXIgYSBsaXN0IGFuZCByZXBvcnQgcHJv Z3Jlc3MgaW4gdGhlIGVjaG8gYXJlYSBhbmQgR1VJIGRvY2suCitFdmFsdWF0ZSBCT0RZIHdpdGgg VkFSIGJvdW5kIHRvIGVhY2ggY2FyIGZyb20gTElTVCwgaW4gdHVybi4KK1RoZW4gZXZhbHVhdGUg UkVTVUxUIHRvIGdldCByZXR1cm4gdmFsdWUsIGRlZmF1bHQgbmlsLgorCitTUEVDIFJFUE9SVEVS LU9SLU1FU1NBR0UgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGluCitgZG9saXN0LXdpdGgtZG9j ay1wcm9ncmVzcy1yZXBvcnRlcmAsIHdoaWNoIHNlZS4iCisgIChkZWNsYXJlIChpbmRlbnQgMikg KGRlYnVnICgoc3ltYm9scCBmb3JtICZvcHRpb25hbCBmb3JtKSBmb3JtIGJvZHkpKSkKKyAgYCh1 bndpbmQtcHJvdGVjdAorICAgICAgIChwcm9nbgorICAgICAgICAgKGRvY2stLXNldC11cC1wcm9n cmVzcy1yZXBvcnRlcikKKyAgICAgICAgIChkb2xpc3Qtd2l0aC1wcm9ncmVzcy1yZXBvcnRlciAs c3BlYyAscmVwb3J0ZXItb3ItbWVzc2FnZSAsQGJvZHkpKQorICAgICAoZG9jay1wcm9ncmVzcyBu aWwpCisgICAgIChkb2NrLS10ZWFyLWRvd24tcHJvZ3Jlc3MtcmVwb3J0ZXIpKSkKKworDAorOzsg RC1CdXMgc3VwcG9ydC4KKworKGRlZmNvbnN0IGRvY2stLWRidXMtc2VydmljZSAiY29tLmNhbm9u aWNhbC5Vbml0eSIpCisoZGVmY29uc3QgZG9jay0tZGJ1cy1pbnRlcmZhY2UgImNvbS5jYW5vbmlj YWwuVW5pdHkuTGF1bmNoZXJFbnRyeSIpCisKKyhkZWZ2YXIgZG9jay0tZGJ1cy1hdHRlbnRpb24g bmlsCisgICJOb24tbmlsIHdoZW4gYXR0ZW50aW9uIGlzIGVuYWJsZWQuIikKKworKGRlY2xhcmUt ZnVuY3Rpb24gZGJ1cy1waW5nICJkYnVzLmVsIikKKyhkZWNsYXJlLWZ1bmN0aW9uIGRidXMtc2Vu ZC1zaWduYWwgImRidXMuZWwiKQorKGRlY2xhcmUtZnVuY3Rpb24gZGJ1cy1saXN0LWFjdGl2YXRh YmxlLW5hbWVzICJkYnVzLmVsIikKKworKGRlZnVuIGRvY2stLWRidXMtc2VuZC1zaWduYWwgKG1l c3NhZ2UpCisgICJTZW5kIE1FU1NBR0UgdG8gdGhlIEQtQnVzIGRvY2sgaGFuZGxlci4iCisgIChs ZXQgKChhcHAtdXJpCisgICAgICAgICAoZm9ybWF0ICJhcHBsaWNhdGlvbjovLyVzLmRlc2t0b3Ai CisgICAgICAgICAgICAgICAgIGRvY2stZGJ1cy1kZXNrdG9wLWZpbGUtbmFtZSkpKQorICAgIChk YnVzLXNlbmQtc2lnbmFsCisgICAgIDpzZXNzaW9uCisgICAgIGRvY2stLWRidXMtc2VydmljZQor ICAgICAiLyIKKyAgICAgZG9jay0tZGJ1cy1pbnRlcmZhY2UKKyAgICAgIlVwZGF0ZSIKKyAgICAg YXBwLXVyaQorICAgICBtZXNzYWdlKSkpCisKKyhkZWZ1biBkb2NrLS1kYnVzLWNsZWFyLWF0dGVu dGlvbi1vbi1mcmFtZS1mb2N1cyAoKQorICAiQ2xlYXIgYW4gYWN0aXZlIEQtQnVzIGF0dGVudGlv biByZXF1ZXN0IGlmIGFueSBmcmFtZSBmb2N1c2VkLiIKKyAgKHdoZW4gKGFuZCBkb2NrLS1kYnVz LWF0dGVudGlvbgorICAgICAgICAgICAgIChjYXRjaCA6Y2xlYXIKKyAgICAgICAgICAgICAgIChk b2xpc3QgKGZyYW1lIChmcmFtZS1saXN0KSkKKyAgICAgICAgICAgICAgICAgKHdoZW4gKGVxIChm cmFtZS1mb2N1cy1zdGF0ZSBmcmFtZSkgdCkKKyAgICAgICAgICAgICAgICAgICAodGhyb3cgOmNs ZWFyIHQpKSkpKQorICAgIChkb2NrLWF0dGVudGlvbiBuaWwpKSkKKworKGRlZnVuIGRvY2stZGJ1 cy1waW5nLXNlcnZpY2UgKCkKKyAgIlJldHVybiBub24tbmlsIGlmIGBkb2NrLS1kYnVzLXNlcnZp Y2UnIHJlc3BvbmRzLgorUmV0dXJuIG5pbCBpZiBubyByZXNwb25zZSB3aXRoaW4gYGRvY2stZGJ1 cy10aW1lb3V0LW1zJy4iCisgIChkYnVzLXBpbmcKKyAgIDpzZXNzaW9uCisgICBkb2NrLS1kYnVz LXNlcnZpY2UKKyAgIGRvY2stZGJ1cy10aW1lb3V0LW1zKSkKKworKGNsLWRlZm1ldGhvZCBkb2Nr LS1lbmFibGUgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvY2stLWJh Y2stZW5kIChlcWwgJ2RidXMpKSkKKyAgKHJlcXVpcmUgJ2RidXMpCisgICh1bmxlc3MgKGRvY2st ZGJ1cy1waW5nLXNlcnZpY2UpCisgICAgKGVycm9yICJELUJ1cyBzZXJ2aWNlIGAlcycgdW5hdmFp bGFibGUiIGRvY2stLWRidXMtc2VydmljZSkpCisgICh3aGVuIGRvY2stY2xlYXItYXR0ZW50aW9u LW9uLWZyYW1lLWZvY3VzCisgICAgKGFkZC1mdW5jdGlvbiA6YWZ0ZXIgYWZ0ZXItZm9jdXMtY2hh bmdlLWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAjJ2RvY2stLWRidXMtY2xlYXItYXR0ZW50 aW9uLW9uLWZyYW1lLWZvY3VzKSkpCisKKyhjbC1kZWZtZXRob2QgZG9jay0tZGlzYWJsZSAoJmNv bnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvY2stLWJhY2stZW5kIChlcWwg J2RidXMpKSkKKyAgKHJlbW92ZS1mdW5jdGlvbiBhZnRlci1mb2N1cy1jaGFuZ2UtZnVuY3Rpb24K KyAgICAgICAgICAgICAgICAgICAjJ2RvY2stLWRidXMtY2xlYXItYXR0ZW50aW9uLW9uLWZyYW1l LWZvY3VzKSkKKworKGNsLWRlZm1ldGhvZCBkb2NrLWJhZGdlICgmY29udGV4dAorICAgICAgICAg ICAgICAgICAgICAgICAgICAoZG9jay0tYmFjay1lbmQgKGVxbCAnZGJ1cykpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICZvcHRpb25hbCBjb3VudC1vci1zdHJpbmcpCisgICJTZXQgYmFkZ2Ug dG8gQ09VTlQtT1ItU1RSSU5HIGlmIGFuIGludGVnZXIsIG90aGVyd2lzZSB1c2UgbmlsLgorVGhl IFVuaXR5IHByb3RvY29sIGRvZXMgbm90IHN1cHBvcnQgc3RyaW5nIGJhZGdlcy4iCisgIChjb25k ICgoc3RyaW5ncCBjb3VudC1vci1zdHJpbmcpCisgICAgICAgICAoaWYgKHN0cmluZy1lbXB0eS1w IGNvdW50LW9yLXN0cmluZykKKyAgICAgICAgICAgICAoc2V0cSBjb3VudC1vci1zdHJpbmcgbmls KQorICAgICAgICAgICAobGV0ICgoY291bnQgKHN0cmluZy10by1udW1iZXIgY291bnQtb3Itc3Ry aW5nKSkpCisgICAgICAgICAgICAgKHNldHEgY291bnQtb3Itc3RyaW5nIChpZiAoaW50ZWdlcnAg Y291bnQpIGNvdW50IG5pbCkpKSkpCisgICAgICAgICgobm90IChpbnRlZ2VycCBjb3VudC1vci1z dHJpbmcpKQorICAgICAgICAgKHNldHEgY291bnQtb3Itc3RyaW5nIG5pbCkpKQorICAoZG9jay0t ZGJ1cy1zZW5kLXNpZ25hbAorICAgYCgoOmRpY3QtZW50cnkgImNvdW50LXZpc2libGUiCisgICAg ICAgICAgICAgICAgICAoOnZhcmlhbnQgOmJvb2xlYW4gLChub3QgKG51bGwgY291bnQtb3Itc3Ry aW5nKSkpKQorICAgICAoOmRpY3QtZW50cnkgImNvdW50IgorICAgICAgICAgICAgICAgICAgKDp2 YXJpYW50IDp1aW50MzIgLChpZiAobnVsbCBjb3VudC1vci1zdHJpbmcpIDAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LW9yLXN0cmluZykpKSkpKQorCisoY2wt ZGVmbWV0aG9kIGRvY2stYXR0ZW50aW9uICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGRvY2stLWJhY2stZW5kIChlcWwgJ2RidXMpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJm9wdGlvbmFsIHVyZ2VuY3kgdGltZW91dCkKKyAgIlJlcXVlc3QgVVJHRU5D WSB1c2VyIGF0dGVudGlvbiB3aXRoaW4gVElNRU9VVCBzZWNvbmRzLgorICBVbml0eSBkb2VzIG5v dCBzdXBwb3J0IGRpZmZlcmVudGlhdGVkIHVyZ2VuY3kuIgorICAoc2V0cSBkb2NrLS1kYnVzLWF0 dGVudGlvbiB1cmdlbmN5KQorICAoZG9jay0tZGJ1cy1zZW5kLXNpZ25hbAorICAgYCgoOmRpY3Qt ZW50cnkgInVyZ2VudCIKKyAgICAgICAgICAgICAgICAgICg6dmFyaWFudCA6Ym9vbGVhbiAsKG5v dCAobnVsbCB1cmdlbmN5KSkpKSkpCisgICh3aGVuIChhbmQgdXJnZW5jeSB0aW1lb3V0KQorICAg IChydW4td2l0aC10aW1lcgorICAgICB0aW1lb3V0CisgICAgIG5pbAorICAgICAjJ2RvY2stYXR0 ZW50aW9uIG5pbCkpKQorCisoY2wtZGVmbWV0aG9kIGRvY2stcHJvZ3Jlc3MgKCZjb250ZXh0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb2NrLS1iYWNrLWVuZCAoZXFsICdkYnVzKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbmFsIHByb2dyZXNzKQorICAiRGlz cGxheSBkb2NrIHByb2dyZXNzIGZvciBQUk9HUkVTUy4iCisgIChzZXRxIHByb2dyZXNzIChkb2Nr LS12YWxpZGF0ZS1wcm9ncmVzcyBwcm9ncmVzcykpCisgIChkb2NrLS1kYnVzLXNlbmQtc2lnbmFs CisgICBgKCg6ZGljdC1lbnRyeSAicHJvZ3Jlc3MtdmlzaWJsZSIKKyAgICAgICAgICAgICAgICAg ICg6dmFyaWFudCA6Ym9vbGVhbiAsKG5vdCAobnVsbCBwcm9ncmVzcykpKSkKKyAgICAgKDpkaWN0 LWVudHJ5ICJwcm9ncmVzcyIKKyAgICAgICAgICAgICAgICAgICg6dmFyaWFudCA6ZG91YmxlICwo aWYgKG51bGwgcHJvZ3Jlc3MpIDAgcHJvZ3Jlc3MpKSkpKSkKKworDAorOzsgTlMgc3VwcG9ydC4K KworKGRlY2xhcmUtZnVuY3Rpb24gbnMtYmFkZ2UgIm5zZm5zLm0iKQorKGRlY2xhcmUtZnVuY3Rp b24gbnMtcmVxdWVzdC11c2VyLWF0dGVudGlvbiAibnNmbnMubSIpCisoZGVjbGFyZS1mdW5jdGlv biBucy1wcm9ncmVzcy1pbmRpY2F0b3IgIm5zZm5zLm0iKQorCisoY2wtZGVmbWV0aG9kIGRvY2st LWVuYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG9jay0tYmFj ay1lbmQgKGVxbCAnbnMpKSkKKyAgKGlnbm9yZSkpCisKKyhjbC1kZWZtZXRob2QgZG9jay0tZGlz YWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvY2stLWJhY2st ZW5kIChlcWwgJ25zKSkpCisgIChpZ25vcmUpKQorCisoY2wtZGVmbWV0aG9kIGRvY2stYmFkZ2Ug KCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgIChkb2NrLS1iYWNrLWVuZCAoZXFs ICducykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCBjb3VudC1vci1zdHJp bmcpCisgICJTZXQgYmFkZ2UgdG8gQ09VTlQtT1ItU1RSSU5HLCBvciBjbGVhciB0aGUgYmFkZ2Uu CitOUyBzdXBwb3J0cyBvbmx5IHN0cmluZyBiYWRnZXMuIgorICAoY29uZCAoKHN0cmluZ3AgY291 bnQtb3Itc3RyaW5nKQorICAgICAgICAgKHdoZW4gKHN0cmluZy1lbXB0eS1wIGNvdW50LW9yLXN0 cmluZykKKyAgICAgICAgICAgKHNldHEgY291bnQtb3Itc3RyaW5nIG5pbCkpKQorICAgICAgICAo KGludGVnZXJwIGNvdW50LW9yLXN0cmluZykKKyAgICAgICAgIChzZXRxIGNvdW50LW9yLXN0cmlu ZyAobnVtYmVyLXRvLXN0cmluZyBjb3VudC1vci1zdHJpbmcpKSkKKyAgICAgICAgKHQgKHNldHEg Y291bnQtb3Itc3RyaW5nIG5pbCkpKQorICAobnMtYmFkZ2UgY291bnQtb3Itc3RyaW5nKSkKKwor KGNsLWRlZm1ldGhvZCBkb2NrLWF0dGVudGlvbiAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChkb2NrLS1iYWNrLWVuZCAoZXFsICducykpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmb3B0aW9uYWwgdXJnZW5jeSB0aW1lb3V0KQorICAiUmVxdWVzdCBVUkdF TkNZIHVzZXIgYXR0ZW50aW9uIHdpdGhpbiBUSU1FT1VUIHNlY29uZHMuIgorICAobnMtcmVxdWVz dC11c2VyLWF0dGVudGlvbiB1cmdlbmN5KQorICAod2hlbiAoYW5kIHVyZ2VuY3kgdGltZW91dCkK KyAgICAocnVuLXdpdGgtdGltZXIKKyAgICAgdGltZW91dAorICAgICBuaWwKKyAgICAgIydkb2Nr LWF0dGVudGlvbiBuaWwpKSkKKworKGNsLWRlZm1ldGhvZCBkb2NrLXByb2dyZXNzICgmY29udGV4 dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG9jay0tYmFjay1lbmQgKGVxbCAnbnMp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgcHJvZ3Jlc3MpCisgICJE aXNwbGF5IGRvY2sgcHJvZ3Jlc3MgZm9yIFBST0dSRVNTLiIKKyAgKG5zLXByb2dyZXNzLWluZGlj YXRvciAoZG9jay0tdmFsaWRhdGUtcHJvZ3Jlc3MgcHJvZ3Jlc3MpKSkKKworDAorOzsgTVMtV2lu ZG93cyBzdXBwb3J0LgorCisoZGVjbGFyZS1mdW5jdGlvbiB3MzItYmFkZ2UgInczMmZucy5jIikK KyhkZWNsYXJlLWZ1bmN0aW9uIHczMi1yZXF1ZXN0LXVzZXItYXR0ZW50aW9uICJ3MzJmbnMuYyIp CisoZGVjbGFyZS1mdW5jdGlvbiB3MzItcHJvZ3Jlc3MtaW5kaWNhdG9yICJ3MzJmbnMuYyIpCisK KyhkZWZ2YXIgZG9jay13MzItYmFkZ2UtYmcgJygjeGU3ICN4NTggI3g1NykgOyByZWRpc2gKKyAg IkludGVnZXIgUkdCIHZhbHVlcyBhcyB0aGUgYmFja2dyb3VuZCBmb3IgdzMyIGJhZGdlLiIpCisK KyhkZWZ2YXIgZG9jay13MzItYmFkZ2UtZmcgJygjeGZmICN4ZmYgI3hmZikgOyB3aGl0ZQorICAi SW50ZWdlciBSR0IgdmFsdWVzIGFzIHRoZSBmb3JlZ3JvdW5kIGZvciB3MzIgYmFkZ2UgdGV4dC4i KQorCisoY2wtZGVmbWV0aG9kIGRvY2stLWVuYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZG9jay0tYmFjay1lbmQgKGVxbCAnd2luZG93cy1udCkpKQorICAoaWdu b3JlKSkKKworKGNsLWRlZm1ldGhvZCBkb2NrLS1kaXNhYmxlICgmY29udGV4dAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoZG9jay0tYmFjay1lbmQgKGVxbCAnd2luZG93cy1udCkpKQor ICAoaWdub3JlKSkKKworKGNsLWRlZm1ldGhvZCBkb2NrLWJhZGdlICgmY29udGV4dAorICAgICAg ICAgICAgICAgICAgICAgICAgICAoZG9jay0tYmFjay1lbmQgKGVxbCAnd2luZG93cy1udCkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCBjb3VudC1vci1zdHJpbmcpCisgICJT ZXQgYmFkZ2UgdG8gQ09VTlQtT1ItU1RSSU5HLCBvciBjbGVhciB0aGUgYmFkZ2UuCitEdWUgdG8g TVMtV2luIGljb24gc2l6ZSBsaW1pdGF0aW9ucywgYWJicmV2aWF0ZSBpbnRlZ2VycyBvdXRzaWRl IHRoZQorcmFuZ2UgLTk5LCA5OSB1c2luZyBcIi05OVwiIGFuZCBcIjk5K1wiLCByZXNwZWN0aXZl bHksCithbmQgdHJ1bmNhdGUgc3RyaW5ncyBsb25nZXIgdGhhbiAyIGNoYXJhY3RlcnMuIgorICAo Y29uZCAoKHN0cmluZ3AgY291bnQtb3Itc3RyaW5nKQorICAgICAgICAgKGlmIChzdHJpbmctZW1w dHktcCBjb3VudC1vci1zdHJpbmcpCisgICAgICAgICAgICAgKHNldHEgY291bnQtb3Itc3RyaW5n IG5pbCkKKyAgICAgICAgICAgKHdoZW4gKGxlbmd0aD4gY291bnQtb3Itc3RyaW5nIDIpCisgICAg ICAgICAgICAgKHNldHEgY291bnQtb3Itc3RyaW5nCisgICAgICAgICAgICAgICAgICAgKHRydW5j YXRlLXN0cmluZy10by13aWR0aCBjb3VudC1vci1zdHJpbmcgMyAwIG5pbCB0KSkpKSkKKyAgICAg ICAgKChpbnRlZ2VycCBjb3VudC1vci1zdHJpbmcpCisgICAgICAgICAoaWYgKGFuZCAoPiBjb3Vu dC1vci1zdHJpbmcgLTEwMCkKKyAgICAgICAgICAgICAgICAgICg8IGNvdW50LW9yLXN0cmluZyAx MDApKQorICAgICAgICAgICAgIChzZXRxIGNvdW50LW9yLXN0cmluZyAobnVtYmVyLXRvLXN0cmlu ZyBjb3VudC1vci1zdHJpbmcpKQorICAgICAgICAgICAoaWYgKDwgY291bnQtb3Itc3RyaW5nIDAp CisgICAgICAgICAgICAgICAoc2V0cSBjb3VudC1vci1zdHJpbmcgIi05OSIpCisgICAgICAgICAg ICAgKHNldHEgY291bnQtb3Itc3RyaW5nICI5OSsiKSkpKQorICAgICAgICAodCAoc2V0cSBjb3Vu dC1vci1zdHJpbmcgbmlsKSkpCisgICh3MzItYmFkZ2UgY291bnQtb3Itc3RyaW5nIGRvY2stdzMy LWJhZGdlLWJnIGRvY2stdzMyLWJhZGdlLWZnKSkKKworKGNsLWRlZm1ldGhvZCBkb2NrLWF0dGVu dGlvbiAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb2NrLS1iYWNr LWVuZCAoZXFsICd3aW5kb3dzLW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZv cHRpb25hbCB1cmdlbmN5IHRpbWVvdXQpCisgICJSZXF1ZXN0IFVSR0VOQ1kgdXNlciBhdHRlbnRp b24gd2l0aGluIFRJTUVPVVQgc2Vjb25kcy4iCisgICh3MzItcmVxdWVzdC11c2VyLWF0dGVudGlv biB1cmdlbmN5KQorICAod2hlbiAoYW5kIHVyZ2VuY3kgdGltZW91dCkKKyAgICAocnVuLXdpdGgt dGltZXIKKyAgICAgdGltZW91dAorICAgICBuaWwKKyAgICAgIydkb2NrLWF0dGVudGlvbiBuaWwp KSkKKworKGNsLWRlZm1ldGhvZCBkb2NrLXByb2dyZXNzICgmY29udGV4dAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZG9jay0tYmFjay1lbmQgKGVxbCAnd2luZG93cy1udCkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCBwcm9ncmVzcykKKyAgIkRpc3BsYXkg ZG9jayBwcm9ncmVzcyBmb3IgUFJPR1JFU1MuIgorICAodzMyLXByb2dyZXNzLWluZGljYXRvciAo ZG9jay0tdmFsaWRhdGUtcHJvZ3Jlc3MgcHJvZ3Jlc3MpKSkKKworDAorCisocHJvdmlkZSAnZG9j ay1tb2RlKQorCis7OzsgZG9jay1tb2RlLmVsIGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEvc3JjL25z Zm5zLm0gYi9zcmMvbnNmbnMubQppbmRleCAzNTI4YzRhY2Q1MC4uMWE4Zjk1YzE0ZWYgMTAwNjQ0 Ci0tLSBhL3NyYy9uc2Zucy5tCisrKyBiL3NyYy9uc2Zucy5tCkBAIC0zNjc0LDYgKzM2NzQsMTI5 IEBAIFRoZSBwb3NpdGlvbiBpcyByZXR1cm5lZCBhcyBhIGNvbnMgY2VsbCAoWCAuIFkpIG9mIHRo ZQogICByZXR1cm4gUW5pbDsKIH0KIAorREVGVU4gKCJucy1iYWRnZSIsIEZuc19iYWRnZSwgU25z X2JhZGdlLCAxLCAxLCAwLAorICAgICAgIGRvYzogLyogU2V0IHRoZSBhcHAgaWNvbiBiYWRnZSB0 byBCQURHRS4KK0JBREdFIHNob3VsZCBiZSBhIHN0cmluZyBzaG9ydCBlbm91Z2ggdG8gZGlzcGxh eSBuaWNlbHkgaW4gdGhlIHNob3J0CitzcGFjZSBpbnRlbmRlZCBmb3IgYmFkZ2VzLgorSWYgQkFE R0UgaXMgbmlsLCBjbGVhciB0aGUgYXBwIGJhZGdlLiAgKi8pCisgIChMaXNwX09iamVjdCBiYWRn ZSkKK3sKKyAgYmxvY2tfaW5wdXQgKCk7CisgIGlmIChOSUxQIChiYWRnZSkpCisgICAgW1tOU0Fw cCBkb2NrVGlsZV0gc2V0QmFkZ2VMYWJlbDogbmlsXTsKKyAgZWxzZQorICAgIHsKKyAgICAgIENI RUNLX1NUUklORyAoYmFkZ2UpOworICAgICAgW1tOU0FwcCBkb2NrVGlsZV0gc2V0QmFkZ2VMYWJl bDoKKwkJCSAgW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOiBTU0RBVEEgKGJhZGdlKV1d OworICAgIH0KKyAgdW5ibG9ja19pbnB1dCAoKTsKKyAgcmV0dXJuIFFuaWw7Cit9CisKKy8qIFVz ZSAtMSB0byBpbmRpY2F0ZSBubyBhY3RpdmUgcmVxdWVzdC4gICovCitzdGF0aWMgTlNJbnRlZ2Vy IG5zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb25faWQgPSAtMTsKKworREVGVU4gKCJucy1yZXF1ZXN0 LXVzZXItYXR0ZW50aW9uIiwKKyAgICAgICBGbnNfcmVxdWVzdF91c2VyX2F0dGVudGlvbiwKKyAg ICAgICBTbnNfcmVxdWVzdF91c2VyX2F0dGVudGlvbiwKKyAgICAgICAxLCAxLCAwLAorICAgICAg IGRvYzogLyogQm91bmNlIHRoZSBhcHAgZG9jayBpY29uIHRvIHJlcXVlc3QgdXNlciBhdHRlbnRp b24uCitJZiBVUkdFTkNZIG5pbCwgY2FuY2VsIHRoZSBvdXRzdGFuZGluZyByZXF1ZXN0LCBpZiBh bnkuCitJZiBVUkdFTkNZIGlzIHRoZSBzeW1ib2wgYGluZm9ybWF0aW9uYWwnLCBib3VuY2luZyBs YXN0cyBhIGZldyBzZWNvbmRzLgorSWYgVVJHRU5DWSBpcyB0aGUgc3ltYm9sIGBjcml0aWNhbCcs IGJvdW5jaW5nIGxhc3RzIHVudGlsIEVtYWNzIGlzCitmb2N1c2VkLiAgKi8pCisgIChMaXNwX09i amVjdCB1cmdlbmN5KQoreworICBibG9ja19pbnB1dCAoKTsKKyAgaWYgKG5zX3JlcXVlc3RfdXNl cl9hdHRlbnRpb25faWQgIT0gLTEpCisgICAgeworICAgICAgW05TQXBwIGNhbmNlbFVzZXJBdHRl bnRpb25SZXF1ZXN0OiBuc19yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uX2lkXTsKKyAgICAgIG5zX3Jl cXVlc3RfdXNlcl9hdHRlbnRpb25faWQgPSAtMTsKKyAgICB9CisgIGlmICghTklMUCAodXJnZW5j eSkgJiYgU1lNQk9MUCAodXJnZW5jeSkpCisgICAgeworICAgICAgaWYgKEVRICh1cmdlbmN5LCBR aW5mb3JtYXRpb25hbCkpCisJbnNfcmVxdWVzdF91c2VyX2F0dGVudGlvbl9pZCA9IFtOU0FwcCBy ZXF1ZXN0VXNlckF0dGVudGlvbjoKKwkJCQkJCU5TSW5mb3JtYXRpb25hbFJlcXVlc3RdOworICAg ICAgZWxzZSBpZiAoRVEgKHVyZ2VuY3ksIFFjcml0aWNhbCkpCisJbnNfcmVxdWVzdF91c2VyX2F0 dGVudGlvbl9pZCA9IFtOU0FwcCByZXF1ZXN0VXNlckF0dGVudGlvbjoKKwkJCQkJCU5TQ3JpdGlj YWxSZXF1ZXN0XTsKKyAgICB9CisgIHVuYmxvY2tfaW5wdXQgKCk7CisgIHJldHVybiBRbmlsOwor fQorCitERUZVTiAoIm5zLXByb2dyZXNzLWluZGljYXRvciIsCisgICAgICAgRm5zX3Byb2dyZXNz X2luZGljYXRvciwKKyAgICAgICBTbnNfcHJvZ3Jlc3NfaW5kaWNhdG9yLAorICAgICAgIDEsIDEs IDAsCisgICAgICAgZG9jOiAvKiBCb3VuY2UgdGhlIGFwcCBkb2NrIGljb24gdG8gcmVxdWVzdCB1 c2VyIGF0dGVudGlvbi4KKwkgICAgICAgUFJPR1JFU1MgaXMgYSBmbG9hdCBiZXR3ZWVuIDAuMCBh bmQgMS4wLgorCSAgICAgICBJZiBQUk9HUkVTUyBpcyBuaWwsIHJlbW92ZSB0aGUgcHJvZ3Jlc3Mg aW5kaWNhdG9yLiAgKi8pCisgIChMaXNwX09iamVjdCBwcm9ncmVzcykKK3sKKyAgYmxvY2tfaW5w dXQgKCk7CisgIE5TRG9ja1RpbGUgKmRvY2tfdGlsZSA9IFtOU0FwcCBkb2NrVGlsZV07CisgIC8q IFVzZSBOU0xldmVsSW5kaWNhdG9yIHdpdGggcmVsaWFibGUgcmVkcmF3cywgbm90IE5TUHJvZ3Jl c3NJbmRpY2F0b3IuICAqLworICBOU0xldmVsSW5kaWNhdG9yICpsZXZlbF9pbmRpY2F0b3I7Cisg IC8qIFJldXNlIHRoZSBpbmRpY2F0b3Igc3VidmlldyBvciBjcmVhdGUgb25lLiAqLworICBpZiAo ZG9ja190aWxlLmNvbnRlbnRWaWV3CisgICAgICAmJiBbW2RvY2tfdGlsZS5jb250ZW50VmlldyBz dWJ2aWV3c10gY291bnRdID4gMAorICAgICAgJiYgW1tbZG9ja190aWxlLmNvbnRlbnRWaWV3IHN1 YnZpZXdzXSBsYXN0T2JqZWN0XQorICAgICAgICAgICAgICAgICAgICAgICAgaXNLaW5kT2ZDbGFz czpbTlNMZXZlbEluZGljYXRvciBjbGFzc11dKQorICAgIGxldmVsX2luZGljYXRvciA9CisgICAg ICAoTlNMZXZlbEluZGljYXRvciAqKVtbW2RvY2tfdGlsZSBjb250ZW50Vmlld10gc3Vidmlld3Nd IGxhc3RPYmplY3RdOworICAgIGVsc2UKKyAgICAgIHsKKwlpZiAoIWRvY2tfdGlsZS5jb250ZW50 VmlldykKKwkgIHsKKwkgICAgTlNJbWFnZVZpZXcqIGltYWdlX3ZpZXcgPSBbW05TSW1hZ2VWaWV3 IGFsbG9jXSBpbml0XTsKKwkgICAgW2ltYWdlX3ZpZXcgc2V0SW1hZ2U6IFtOU0FwcCBhcHBsaWNh dGlvbkljb25JbWFnZV1dOworCSAgICBbZG9ja190aWxlIHNldENvbnRlbnRWaWV3OiBpbWFnZV92 aWV3XTsKKwkgIH0KKwkvKiBTZXQgd2lkdGggdG8gdGhlIHdpZHRoIG9mIHRoZSBhcHBsaWNhdGlv biBpY29uLCBhbmQgaGVpZ2h0IHRvCisJICAgJSBvZiB0aGUgaWNvbiBoZWlnaHQgdG8gcmVzcGVj dCBzY2FsZWQgaWNvbnMuICAqLworCWZsb2F0IHdpZHRoID0gW1tOU0FwcCBhcHBsaWNhdGlvbklj b25JbWFnZV0gc2l6ZV0ud2lkdGg7CisJZmxvYXQgaGVpZ2h0ID0gMC4xMCAqIFtbTlNBcHAgYXBw bGljYXRpb25JY29uSW1hZ2VdIHNpemVdLmhlaWdodDsKKwlsZXZlbF9pbmRpY2F0b3IgPQorCSAg W1tOU0xldmVsSW5kaWNhdG9yIGFsbG9jXSBpbml0V2l0aEZyYW1lOgorCQkJCSAgICAgIE5TTWFr ZVJlY3QgKDAuMCwgMC4wLAorCQkJCQkJICB3aWR0aCwgaGVpZ2h0KV07CisJW2xldmVsX2luZGlj YXRvciBzZXRXYW50c0xheWVyOiBZRVNdOyAvKiBQZXJmb3JtYW5jZS4gICovCisJW2xldmVsX2lu ZGljYXRvciBzZXRFbmFibGVkOiBOT107IC8qIElnbm9yZSBtb3VzZSBpbnB1dC4gICovCisJW2xl dmVsX2luZGljYXRvciBzZXRMZXZlbEluZGljYXRvclN0eWxlOgorCQkJICAgTlNMZXZlbEluZGlj YXRvclN0eWxlQ29udGludW91c0NhcGFjaXR5XTsKKwkvKiBNYXRjaCBOU1Byb2dyZXNzSW5kaWNh dG9yIGNvbG9yLiAgKi8KKwlbbGV2ZWxfaW5kaWNhdG9yIHNldEZpbGxDb2xvcjogW05TQ29sb3Ig Y29udHJvbEFjY2VudENvbG9yXV07CisJW2xldmVsX2luZGljYXRvciBzZXRNaW5WYWx1ZTogMC4w XTsKKwlbbGV2ZWxfaW5kaWNhdG9yIHNldE1heFZhbHVlOiAxLjBdOworCS8qIFRoZSBjb250ZW50 VmlldyB0YWtlcyBvd25lcnNoaXAuICAqLworCVtkb2NrX3RpbGUuY29udGVudFZpZXcgYWRkU3Vi dmlldzogbGV2ZWxfaW5kaWNhdG9yXTsKKyAgICAgIH0KKyAgZG91YmxlIHByb2dyZXNzX3ZhbHVl OworICBCT09MIGhpZGUgPSAoTklMUCAocHJvZ3Jlc3MpCisJICAgICAgIHx8ICghTklMUCAocHJv Z3Jlc3MpICYmICEoRkxPQVRQIChwcm9ncmVzcykpKSk7CisgIGlmICghaGlkZSkKKyAgICB7Cisg ICAgICBwcm9ncmVzc192YWx1ZSA9IFhGTE9BVF9EQVRBIChwcm9ncmVzcyk7CisgICAgICBoaWRl ID0gKHByb2dyZXNzX3ZhbHVlIDwgMC4wIHx8IHByb2dyZXNzX3ZhbHVlID4gMS4wKTsKKyAgICB9 CisgIGlmIChoaWRlKQorICAgIHsKKyAgICAgIFtsZXZlbF9pbmRpY2F0b3Igc2V0RG91YmxlVmFs dWU6IDAuMF07CisgICAgICBbbGV2ZWxfaW5kaWNhdG9yIHNldEhpZGRlbjogWUVTXTsKKyAgICB9 CisgIGVsc2UKKyAgICB7CisgICAgICBbbGV2ZWxfaW5kaWNhdG9yIHNldERvdWJsZVZhbHVlOiBw cm9ncmVzc192YWx1ZV07CisgICAgICBbbGV2ZWxfaW5kaWNhdG9yIHNldEhpZGRlbjogTk9dOwor ICAgIH0KKyAgW2RvY2tfdGlsZSBkaXNwbGF5XTsKKyAgdW5ibG9ja19pbnB1dCAoKTsKKyAgcmV0 dXJuIFFuaWw7Cit9CisKICNpZmRlZiBOU19JTVBMX0NPQ09BCiAKIERFRlVOICgibnMtc2VuZC1p dGVtcyIsCkBAIC0zOTU3LDYgKzQwODAsOSBAQCAtIChMaXNwX09iamVjdClsaXNwU3RyaW5nCiAg IGRlZnN1YnIgKCZTbnNfc2V0X21vdXNlX2Fic29sdXRlX3BpeGVsX3Bvc2l0aW9uKTsKICAgZGVm c3ViciAoJlNuc19tb3VzZV9hYnNvbHV0ZV9waXhlbF9wb3NpdGlvbik7CiAgIGRlZnN1YnIgKCZT bnNfc2hvd19jaGFyYWN0ZXJfcGFsZXR0ZSk7CisgIGRlZnN1YnIgKCZTbnNfYmFkZ2UpOworICBk ZWZzdWJyICgmU25zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24pOworICBkZWZzdWJyICgmU25zX3By b2dyZXNzX2luZGljYXRvcik7CiAjaWZkZWYgTlNfSU1QTF9DT0NPQQogICBkZWZzdWJyICgmU25z X3NlbmRfaXRlbXMpOwogI2VuZGlmCkBAIC00MDIzLDQgKzQxNDksNiBAQCAtIChMaXNwX09iamVj dClsaXNwU3RyaW5nCiAgIERFRlNZTSAoUWFzc3FfZGVsZXRlX2FsbCwgImFzc3EtZGVsZXRlLWFs bCIpOwogICBERUZTWU0gKFFydW5fYXRfdGltZSwgInJ1bi1hdC10aW1lIik7CiAgIERFRlNZTSAo UXhfaGlkZV90aXAsICJ4LWhpZGUtdGlwIik7CisgIERFRlNZTSAoUWluZm9ybWF0aW9uYWwsICJp bmZvcm1hdGlvbmFsIik7CisgIERFRlNZTSAoUWNyaXRpY2FsLCAiY3JpdGljYWwiKTsKIH0KZGlm ZiAtLWdpdCBhL3NyYy93MzJmbnMuYyBiL3NyYy93MzJmbnMuYwppbmRleCAzZmMwZjU1MjQ0Zi4u YzBkN2NhZDNkYzUgMTAwNjQ0Ci0tLSBhL3NyYy93MzJmbnMuYworKysgYi9zcmMvdzMyZm5zLmMK QEAgLTM4LDYgKzM4LDEwIEBAICNkZWZpbmUgQ09CSk1BQ1JPUyAvKiBBc2sgZm9yIEMgZGVmaW5p dGlvbnMgZm9yIENPTS4gICovCiAjaW5jbHVkZSA8c2hsb2JqLmg+CiAjaW5jbHVkZSA8b2xlaWRs Lmg+CiAjaW5jbHVkZSA8b2JqaWRsLmg+CisjaWYgIWRlZmluZWQgTUlOR1dfVzY0ICYmICFkZWZp bmVkIENZR1dJTgorIyBkZWZpbmUgSU5JVEdVSUQKKyNlbmRpZgorI2luY2x1ZGUgPGluaXRndWlk Lmg+CiAjaW5jbHVkZSA8b2xlMi5oPgogCiAjaW5jbHVkZSAibGlzcC5oIgpAQCAtMTA5ODUsNiAr MTA5ODksNDA4IEBAIERFRlVOICgidzMyLXNldC13YWxscGFwZXIiLCBGdzMyX3NldF93YWxscGFw ZXIsIFN3MzJfc2V0X3dhbGxwYXBlciwgMSwgMSwgMCwKIH0KICNlbmRpZgogCisMCisjaWZkZWYg V0lORE9XU05UCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCQkJICAgICBUYXNrYmFyIC8gRG9jaworICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworCisjaWZuZGVmIElJRF9JVGFza2Jhckxpc3QzCitERUZJTkVfR1VJRChJ SURfSVRhc2tiYXJMaXN0MywgMHhlYTFhZmI5MSwgMHg5ZTI4LCAweDRiODYsIDB4OTAsMHhlOSwg MHg5ZSwweDlmLDB4OGEsMHg1ZSwweGVmLDB4YWYpOworI2VuZGlmCisKKy8qIFBhcnNlIFJHQl9M SVNULCBhbmQgcmV0dXJuIGEgQ09MT1JSRUYuCisgICBSR0JfTElTVCBzaG91bGQgY29udGFpbiAo YXQgbGVhc3QpIDMgbGlzcCBpbnRlZ2Vycy4KKyAgIFJldHVybiAweGZmMDAwMDAwIGlmZiBSR0Jf TElTVCBpcyBub3QgT0suICAqLworCitzdGF0aWMgQ09MT1JSRUYKK3JnYl9saXN0X3RvX2NvbG9y cmVmIChMaXNwX09iamVjdCByZ2JfbGlzdCkKK3sKKyNkZWZpbmUgUEFSU0VfUkdCX0xJU1RfRklF TEQoZmllbGQpCQkJCQlcCisgIGlmIChDT05TUCAocmdiX2xpc3QpICYmIEZJWE5VTVAgKFhDQVIg KHJnYl9saXN0KSkpCQkJXAorICAgIHsJCQkJCQkJCQlcCisgICAgICBmaWVsZCA9IChCWVRFKSBY RklYTlVNIChYQ0FSIChyZ2JfbGlzdCkpOwkJCQlcCisgICAgICByZ2JfbGlzdCA9IFhDRFIgKHJn Yl9saXN0KTsJCQkJCVwKKyAgICB9CQkJCQkJCQkJXAorICBlbHNlCQkJCQkJCQkJXAorICAgIHJl dHVybiAweGZmMDAwMDAwOworCisgIEJZVEUgcmVkLCBncmVlbiwgYmx1ZTsKKyAgUEFSU0VfUkdC X0xJU1RfRklFTEQgKHJlZCk7CisgIFBBUlNFX1JHQl9MSVNUX0ZJRUxEIChncmVlbik7CisgIFBB UlNFX1JHQl9MSVNUX0ZJRUxEIChibHVlKTsKKworICByZXR1cm4gUkdCIChyZWQsIGdyZWVuLCBi bHVlKTsKK30KKworLyogVHJhY2sgdGhlIHdpbmRvdyBoYW5kbGUgZm9yIHRoZSBnbG9iYWwgYmFk Z2UgaWNvbi4gKi8KK3N0YXRpYyBIV05EIF93MzJfYmFkZ2VfaHduZCA9IE5VTEw7CisKK0RFRlVO ICgidzMyLWJhZGdlIiwKKyAgICAgICBGdzMyX2JhZGdlLAorICAgICAgIFN3MzJfYmFkZ2UsCisg ICAgICAgMywgMywgMCwKKyAgICAgICBkb2M6IC8qIFNldCB0aGUgdGFza2JhciBpY29uIG92ZXJs YXkgaW1hZ2UgYmFzZWQgb24gQkFER0UuCitCQURHRSBpcyBhIFVURi04IHN0cmluZy4gIElmIEJB REdFIGlzIG5pbCwgcmVtb3ZlIHRoZSBvdmVybGF5LiAgRG8KK25vdGhpbmcgaWYgV2luZG93cyBk b2VzIG5vdCBzdXBwb3J0IHRoZSBJVGFza2Jhckxpc3QzIGludGVyZmFjZSBhbmQKK3JldHVybiBu aWwsIG90aGVyd2lzZSByZXR1cm4gdC4gIERvIG5vdGhpbmcgaWYgdGhlIGZyYW1lIGlzIG5vdCAo eWV0KQorYXNzb2NpYXRlZCB3aXRoIGFuIEhXTkQuICBCQUNLR1JPVU5EIGFuZCBGT1JFR1JPVU5E IGFyZSBsaXN0cyBvZiAoUkVECitHUkVFTiBCTFVFKSA4LWJpdCBpbnRlZ2VyIHZhbHVlcy4gICov KQorICAoTGlzcF9PYmplY3QgYmFkZ2UsIExpc3BfT2JqZWN0IGJnLCBMaXNwX09iamVjdCBmZykK K3sKKyAgQ29Jbml0aWFsaXplIChOVUxMKTsKKyAgSVRhc2tiYXJMaXN0MyAqdGFza19iYXJfbGlz dCA9IE5VTEw7CisgIEhSRVNVTFQgciA9IENvQ3JlYXRlSW5zdGFuY2UoJkNMU0lEX1Rhc2tiYXJM aXN0LAorCQkJICAgICAgIE5VTEwsCisJCQkgICAgICAgQ0xTQ1RYX0lOUFJPQ19TRVJWRVIsCisJ CQkgICAgICAgJklJRF9JVGFza2Jhckxpc3QzLAorCQkJICAgICAgICh2b2lkICoqKSZ0YXNrX2Jh cl9saXN0KTsKKyAgaWYgKHIgIT0gU19PSykKKyAgICB7CisgICAgICAvKiBGSVhNRTogRG8gd2Ug bmVlZCB0byBjYWxsIENvVW5pbml0aWFsaXplPyAgKi8KKyAgICAgIC8qIENvVW5pbml0aWFsaXpl ICgpOyAgKi8KKyAgICAgIHJldHVybiBRbmlsOworICAgIH0KKworICBIV05EIGh3bmQgPSBOVUxM OworICBzdHJ1Y3QgZnJhbWUgKnNmID0gU0VMRUNURURfRlJBTUUgKCk7CisgIGlmIChGUkFNRV9X MzJfUCAoc2YpICYmIEZSQU1FX0xJVkVfUCAoc2YpKQorICAgIGh3bmQgPSBGUkFNRV9XMzJfV0lO RE9XIChzZik7CisgIGlmIChod25kID09IE5VTEwpCisgICAgeworICAgICAgdGFza19iYXJfbGlz dC0+bHBWdGJsLT5SZWxlYXNlKHRhc2tfYmFyX2xpc3QpOworICAgICAgLyogRklYTUU6IERvIHdl IG5lZWQgdG8gY2FsbCBDb1VuaW5pdGlhbGl6ZT8gICovCisgICAgICAvKiBDb1VuaW5pdGlhbGl6 ZSAoKTsgICovCisgICAgICByZXR1cm4gUW5pbDsKKyAgICB9CisKKyAgLyogUmVtb3ZlIHRoZSBi YWRnZSBvdmVybGF5IGZvciB0aGUgb2xkIHdpbmRvdyBoYW5kbGUuICAqLworICBpZiAoX3czMl9i YWRnZV9od25kICE9IE5VTEwgJiYgX3czMl9iYWRnZV9od25kICE9IGh3bmQpCisgICAgICB0YXNr X2Jhcl9saXN0LT5scFZ0YmwtPlNldE92ZXJsYXlJY29uICh0YXNrX2Jhcl9saXN0LAorCQkJCQkg ICAgIF93MzJfYmFkZ2VfaHduZCwKKwkJCQkJICAgICBOVUxMLAorCQkJCQkgICAgIE5VTEwpOwor CisgIGlmICghTklMUCAoYmFkZ2UpICYmIFNUUklOR1AgKGJhZGdlKQorICAgICAgJiYgQ09OU1Ag KGJnKSAmJiBDT05TUCAoZmcpKQorICAgIHsKKyAgICAgIENPTE9SUkVGIGJnX3JnYiA9IHJnYl9s aXN0X3RvX2NvbG9ycmVmIChiZyk7CisgICAgICBDT0xPUlJFRiBmZ19yZ2IgPSByZ2JfbGlzdF90 b19jb2xvcnJlZiAoZmcpOworICAgICAgaWYgKGJnX3JnYiA9PSAweGZmMDAwMDAwKQorCXsKKwkg IHNpZ25hbF9lcnJvciAoIkludmFsaWQgYmFja2dyb3VuZCBSR0IiLCBiZyk7CisJICByZXR1cm4g UW5pbDsKKwl9CisgICAgICBpZiAoZmdfcmdiID09IDB4ZmYwMDAwMDApCisJeworCSAgc2lnbmFs X2Vycm9yICgiSW52YWxpZCBmb3JlZ3JvdW5kIFJHQiIsIGZnKTsKKwkgIHJldHVybiBRbmlsOwor CX0KKworICAgICAgLyogUHJlcGFyZSBhIHN0cmluZyBmb3IgZHJhd2luZyBhbmQgYXMgYWx0LXRl eHQuICAqLworICAgICAgTGlzcF9PYmplY3QgYmFkZ2VfdXRmOCA9IEVOQ09ERV9VVEZfOCAoYmFk Z2UpOworICAgICAgaW50IHdpZGVfbGVuID0gcE11bHRpQnl0ZVRvV2lkZUNoYXIgKENQX1VURjgs IDAsCisJCQkJCSAgIFNTREFUQSAoYmFkZ2VfdXRmOCksCisJCQkJCSAgIC0xLCBOVUxMLCAwKTsK KyAgICAgIHdjaGFyX3QgKmJhZGdlX3cgPSBhbGxvY2EgKCh3aWRlX2xlbiArIDEpICogc2l6ZW9m ICh3Y2hhcl90KSk7CisgICAgICBwTXVsdGlCeXRlVG9XaWRlQ2hhciAoQ1BfVVRGOCwgMCwgU1NE QVRBIChiYWRnZV91dGY4KSwgLTEsCisJCQkgICAgKExQV1NUUikgYmFkZ2VfdywKKwkJCSAgICB3 aWRlX2xlbik7CisKKyAgICAgIC8qIFVzZSB0aGUgc21hbGwgaWNvbiBzaXplIFdpbmRvd3Mgc3Vn Z2VzdHMgdG8gbm90IGhhcmQgY29kZSAxNngxNi4gICovCisgICAgICBpbnQgaWNvbl93aWR0aCA9 IEdldFN5c3RlbU1ldHJpY3MgKFNNX0NYU01JQ09OKTsKKyAgICAgIGludCBpY29uX2hlaWdodCA9 IEdldFN5c3RlbU1ldHJpY3MgKFNNX0NYU01JQ09OKTsKKworICAgICAgSERDIGh3bmRfZGMgPSBH ZXREQyAoaHduZCk7CisgICAgICBIREMgZGMgPSBDcmVhdGVDb21wYXRpYmxlREMgKGh3bmRfZGMp OworCisgICAgICBCSVRNQVBWNUhFQURFUiBiaTsKKyAgICAgIG1lbXNldCAoJmJpLCAwLCBzaXpl b2YgKGJpKSk7CisgICAgICBiaS5iVjVTaXplID0gc2l6ZW9mIChiaSk7CisgICAgICBiaS5iVjVX aWR0aCA9IGljb25fd2lkdGg7CisgICAgICBiaS5iVjVIZWlnaHQgPSAtaWNvbl9oZWlnaHQ7IC8q IE5lZ2F0aXZlIGZvciBhIHRvcC1kb3duIERJQi4gICovCisgICAgICBiaS5iVjVQbGFuZXMgPSAx OworICAgICAgYmkuYlY1Qml0Q291bnQgPSAzMjsKKyAgICAgIGJpLmJWNUNvbXByZXNzaW9uID0g QklfQklURklFTERTOyAgLyogRW5hYmxlIHRoZSBtYXNrcyBiZWxvdy4gICovCisgICAgICBiaS5i VjVSZWRNYXNrICAgPSAgMHgwMEZGMDAwMDsKKyAgICAgIGJpLmJWNUdyZWVuTWFzayA9ICAweDAw MDBGRjAwOworICAgICAgYmkuYlY1Qmx1ZU1hc2sgID0gIDB4MDAwMDAwRkY7CisgICAgICBiaS5i VjVBbHBoYU1hc2sgPSAgMHhGRjAwMDAwMDsKKworICAgICAgRFdPUkQgKmJpdG1hcF9waXhlbHM7 CisgICAgICBIQklUTUFQIGJpdG1hcCA9IENyZWF0ZURJQlNlY3Rpb24gKGRjLCAoQklUTUFQSU5G TyAqKSAmYmksCisJCQkJCSBESUJfUkdCX0NPTE9SUywKKwkJCQkJICh2b2lkICoqKSAmYml0bWFw X3BpeGVscywKKwkJCQkJIE5VTEwsIDApOworICAgICAgSEdESU9CSiBvbGRfYml0bWFwID0gU2Vs ZWN0T2JqZWN0KGRjLCBiaXRtYXApOworCisgICAgICAvKiBEcmF3IGEgY2lyY2xlIGZpbGxlZCB3 aXRoIGJnLiAgKi8KKyAgICAgIEhCUlVTSCBiZ19icnVzaCA9IENyZWF0ZVNvbGlkQnJ1c2ggKGJn X3JnYik7CisgICAgICBIR0RJT0JKIG9sZF9icnVzaCA9IFNlbGVjdE9iamVjdCAoZGMsIGJnX2Jy dXNoKTsKKyAgICAgIEVsbGlwc2UgKGRjLCAwLCAwLCBpY29uX3dpZHRoLCBpY29uX2hlaWdodCk7 CisgICAgICBTZWxlY3RPYmplY3QgKGRjLCBvbGRfYnJ1c2gpOworICAgICAgRGVsZXRlT2JqZWN0 IChiZ19icnVzaCk7CisKKyAgICAgIC8qIERlcml2ZSBhIGZvbnQgc2NhbGVkIHRvIGZpdCB0aGUg aWNvbi4gIEZpcnN0IGZpbmQgdGhlIHN5c3RlbSdzCisJIGJhc2UgZm9udC4gIFRoZW4gc2NhbGUg aXQgdG8gZml0IGljb25faGVpZ2h0LiAgKi8KKyAgICAgIEhGT05UIGJhc2VfZm9udDsKKyAgICAg IEJPT0wgY2xlYW5fdXBfYmFzZV9mb250ID0gRkFMU0U7CisgICAgICBpZiAoc3lzdGVtX3BhcmFt ZXRlcnNfaW5mb193X2ZuKQorCXsKKwkgIE5PTkNMSUVOVE1FVFJJQ1NXIG5jbTsKKwkgIG1lbXNl dCAoJm5jbSwgMCwgc2l6ZW9mIChuY20pKTsKKwkgIG5jbS5jYlNpemUgPSBzaXplb2YgKG5jbSk7 CisJICBTeXN0ZW1QYXJhbWV0ZXJzSW5mb1cgKFNQSV9HRVROT05DTElFTlRNRVRSSUNTLCBzaXpl b2YgKG5jbSksICZuY20sIDApOworCSAgYmFzZV9mb250ID0gQ3JlYXRlRm9udEluZGlyZWN0VyAo Jm5jbS5sZlNtQ2FwdGlvbkZvbnQpOworCSAgY2xlYW5fdXBfYmFzZV9mb250ID0gVFJVRTsKKwl9 CisgICAgICBlbHNlCisJYmFzZV9mb250ID0gKEhGT05UKSBHZXRTdG9ja09iamVjdCAoREVGQVVM VF9HVUlfRk9OVCk7CisgICAgICBpZiAoY2xlYW5fdXBfYmFzZV9mb250KQorCURlbGV0ZU9iamVj dCAoYmFzZV9mb250KTsKKworICAgICAgTE9HRk9OVCBsZjsKKyAgICAgIEdldE9iamVjdCAoYmFz ZV9mb250LCBzaXplb2YgKGxmKSwgJmxmKTsKKyAgICAgIGxmLmxmV2VpZ2h0ID0gRldfQk9MRDsK KyAgICAgIGxmLmxmT3V0UHJlY2lzaW9uID0gT1VUX09VVExJTkVfUFJFQ0lTOworICAgICAgLyog Q2xlYXJUeXBlIHF1YWxpdHkgbmVlZHMgb3BxYXVlLCBidXQgd2UgZHJhdyB0cmFuc3BhcmVudC4g ICovCisgICAgICBsZi5sZlF1YWxpdHkgPSBBTlRJQUxJQVNFRF9RVUFMSVRZOworICAgICAgLyog TmVnYXRpdmUgbGZIZWlnaHQgaW5kaWNhdGVzIHBpeGVsIHVuaXRzIHZzLiBwb3NpdGl2ZSBpbiBw b2ludHMuCisJIFVzZSB0aGUgTE9HUElYRUxTWSBweC9pbiBvZiB0aGUgcHJpbWFyeSBtb25pdG9y LiAgKi8KKyAgICAgIGxmLmxmSGVpZ2h0ID0gLU11bERpdihpY29uX2hlaWdodCAvIDIsIC8qIEZp dCB+MyBjaGFycy4gICovCisJCQkgICAgNzIsCisJCQkgICAgR2V0RGV2aWNlQ2FwcyhHZXREQyAo TlVMTCksIExPR1BJWEVMU1kpKTsKKyAgICAgIC8qIEVuc3VyZSBsZkhlaWdodCBwaXhlbCBpbnRl cnByZXRhdGlvbi4gICovCisgICAgICBpbnQgb2xkX21hcF9tb2RlID0gU2V0TWFwTW9kZSAoZGMs IE1NX1RFWFQpOworICAgICAgSEZPTlQgc2NhbGVkX2ZvbnQgPSBDcmVhdGVGb250SW5kaXJlY3Qg KCZsZik7CisgICAgICBIR0RJT0JKIG9sZF9mb250ID0gU2VsZWN0T2JqZWN0IChkYywgc2NhbGVk X2ZvbnQpOworICAgICAgU2V0TWFwTW9kZSAoZGMsIG9sZF9tYXBfbW9kZSk7CisKKyAgICAgIC8q IERyYXcgYmFkZ2UgdGV4dC4gICovCisgICAgICBTZXRCa01vZGUgKGRjLCBUUkFOU1BBUkVOVCk7 CisgICAgICBTZXRUZXh0Q29sb3IgKGRjLCBmZ19yZ2IpOworICAgICAgUkVDVCByZWN0OworICAg ICAgcmVjdC5sZWZ0ID0gcmVjdC50b3AgPSAwOworICAgICAgcmVjdC5yaWdodCA9IGljb25fd2lk dGg7CisgICAgICByZWN0LmJvdHRvbSA9IGljb25faGVpZ2h0OworICAgICAgRHJhd1RleHRXIChk YywgYmFkZ2VfdywKKwkJIC0xLCAvKiBJbmRpY2F0ZSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLiAg Ki8KKwkJICZyZWN0LAorCQkgRFRfQ0VOVEVSIHwgRFRfVkNFTlRFUiB8IERUX1NJTkdMRUxJTkUg fCBEVF9OT0NMSVApOworICAgICAgU2VsZWN0T2JqZWN0IChkYywgb2xkX2ZvbnQpOworICAgICAg RGVsZXRlT2JqZWN0IChzY2FsZWRfZm9udCk7CisKKyAgICAgIC8qIE1ha2UgdGhlIGNpcmNsZSBh bmQgaXRzIHRleHQgb3BhcXVlIGJ5IHNldHRpbmcgdGhlIGFscGhhCisJIGNoYW5uZWwgb24gZWFj aCBwaXhlbCBmYWxsaW5nIHdpdGhpbiB0aGUgY2lyY2xlLiAgKi8KKyAgICAgIGludCBjaXJjbGVf Y2VudGVyX3ggPSBpY29uX3dpZHRoIC8gMjsKKyAgICAgIGludCBjaXJjbGVfY2VudGVyX3kgPSBp Y29uX2hlaWdodCAvIDI7CisgICAgICBpbnQgY2lyY2xlX3JhZGl1cyA9IChpY29uX3dpZHRoIDwg aWNvbl9oZWlnaHQKKwkJCSAgID8gaWNvbl93aWR0aAorCQkJICAgOiBpY29uX2hlaWdodCkgLyAy IC0gMjsKKyAgICAgIGludCBjaXJjbGVfcmFkaXVzX3NxID0gY2lyY2xlX3JhZGl1cyAqIGNpcmNs ZV9yYWRpdXM7CisgICAgICBEV09SRCAqcGl4ZWw7CisgICAgICBmb3IgKGludCB5ID0gMDsgeSA8 IGljb25faGVpZ2h0OyArK3kpCisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgaWNvbl93aWR0 aDsgKyt4KQorCSAgeworICAgICAgICAgICAgaW50IGR4ID0geCAtIGNpcmNsZV9jZW50ZXJfeDsK KyAgICAgICAgICAgIGludCBkeSA9IHkgLSBjaXJjbGVfY2VudGVyX3k7CisgICAgICAgICAgICBp ZiAoZHggKiBkeCArIGR5ICogZHkgPD0gY2lyY2xlX3JhZGl1c19zcSkKKwkgICAgICB7CisJCSAg cGl4ZWwgPSBiaXRtYXBfcGl4ZWxzICsgKHkgKiBpY29uX3dpZHRoICsgeCk7CisJCSAgKnBpeGVs IHw9IDB4ZmYwMDAwMDA7CisJICAgICAgfQorCSAgfQorCisgICAgICAvKiBEdW1teSBtb25vY2hy b21lIGJpdG1hcCBtYXNrLCBpZ25vcmVkIHdoZW4gdGhlIGNvbG9yIGJpdG1hcCBoYXMKKwkgYW4g YWxwaGEgY2hhbm5lbCwgYnV0IG5lZWRlZCB0byBzYXRpc2Z5IENyZWF0ZUljb25JbmRpcmVjdC4g ICovCisgICAgICBIQklUTUFQIG1hc2tfYml0bWFwID0gQ3JlYXRlQml0bWFwIChpY29uX3dpZHRo LCBpY29uX2hlaWdodCwgMSwgMSwgTlVMTCk7CisKKyAgICAgIC8qIGh0dHBzOi8vbGVhcm4ubWlj cm9zb2Z0LmNvbS9lbi11cy93aW5kb3dzL3dpbjMyL2FwaS93aW51c2VyL25mLXdpbnVzZXItY3Jl YXRlaWNvbmluZGlyZWN0CisJIGhibU1hc2sgYW5kIGhibUNvbG9yIG1lbWJlcnMgb2YgdGhlIElD T05JTkZPIHN0cnVjdHVyZSBzaG91bGQKKwkgbm90IGFscmVhZHkgYmUgc2VsZWN0ZWQgaW50byBh IGRldmljZSBjb250ZXh0LiAgKi8KKyAgICAgIFNlbGVjdE9iamVjdCAoZGMsIG9sZF9iaXRtYXAp OworCisgICAgICBJQ09OSU5GTyBpY29uX2luZm87CisgICAgICBtZW1zZXQgKCZpY29uX2luZm8s IDAsIHNpemVvZiAoaWNvbl9pbmZvKSk7CisgICAgICBpY29uX2luZm8uZkljb24gPSBUUlVFOwor ICAgICAgaWNvbl9pbmZvLmhibU1hc2sgPSBtYXNrX2JpdG1hcDsKKyAgICAgIGljb25faW5mby5o Ym1Db2xvciA9IGJpdG1hcDsKKworICAgICAgSElDT04gaWNvbiA9IENyZWF0ZUljb25JbmRpcmVj dCAoJmljb25faW5mbyk7CisgICAgICB0YXNrX2Jhcl9saXN0LT5scFZ0YmwtPlNldE92ZXJsYXlJ Y29uICh0YXNrX2Jhcl9saXN0LCBod25kLCBpY29uLCBiYWRnZV93KTsKKworICAgICAgRGVzdHJv eUljb24gKGljb24pOworICAgICAgRGVsZXRlT2JqZWN0IChtYXNrX2JpdG1hcCk7CisgICAgICBE ZWxldGVPYmplY3QgKGJpdG1hcCk7CisgICAgICBEZWxldGVEQyAoZGMpOworICAgICAgUmVsZWFz ZURDIChod25kLCBod25kX2RjKTsKKyAgICAgIF93MzJfYmFkZ2VfaHduZCA9IGh3bmQ7CisgICAg fQorICBlbHNlCisgICAgeworICAgICAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5TZXRPdmVybGF5 SWNvbiAodGFza19iYXJfbGlzdCwgaHduZCwgTlVMTCwgTlVMTCk7CisgICAgICBfdzMyX2JhZGdl X2h3bmQgPSBOVUxMOworICAgIH0KKworICB0YXNrX2Jhcl9saXN0LT5scFZ0YmwtPlJlbGVhc2Uo dGFza19iYXJfbGlzdCk7CisgIC8qIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGNhbGwgQ29VbmluaXRp YWxpemU/ICAqLworICAvKiBDb1VuaW5pdGlhbGl6ZSAoKTsgICovCisgIHJldHVybiBRdDsKK30K KwordHlwZWRlZiBCT09MIChXSU5BUEkgKiBGbGFzaFdpbmRvd0V4X1Byb2MpIChQRkxBU0hXSU5G TyBwZndpKTsKKworc3RhdGljIEZsYXNoV2luZG93RXhfUHJvYyBfZmxhc2hfd2luZG93X2V4X2Zu ID0gTlVMTDsKKworLyogVHJhY2sgdGhlIG1vc3QgcmVjZW50bHkgdXNlZCB3aW5kb3cgaGFuZGxl LiAgKi8KK3N0YXRpYyBIV05EIF93MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbl9od25kID0gTlVM TDsKKworREVGVU4gKCJ3MzItcmVxdWVzdC11c2VyLWF0dGVudGlvbiIsCisgICAgICAgRnczMl9y ZXF1ZXN0X3VzZXJfYXR0ZW50aW9uLAorICAgICAgIFN3MzJfcmVxdWVzdF91c2VyX2F0dGVudGlv biwKKyAgICAgICAxLCAxLCAwLAorICAgICAgIGRvYzogLyogRmxhc2ggdGhlIHRhc2tiYXIgaWNv biBiYXNlZCBvbiBVUkdFTkNZLgorSWYgVVJHRU5DWSBpcyBuaWwsIGNhbmNlbCB0aGUgcmVxdWVz dCwgaWYgYW55LiAgSWYgVVJHRU5DWSBpcyB0aGUgc3ltYm9sCitgaW5mb3JtYXRpb25hbCcsIGZs YXNoaW5nIGxhc3RzIHVudGlsIGNsZWFyZWQuICBJZiBVUkdFTkNZIGlzIHRoZSBzeW1ib2wKK2Bj cml0aWNhbCcsIGZsYXNoIHVudGlsIEVtYWNzIGlzIGZvY3VzZWQuICBEbyBub3RoaW5nIGlmIFdp bmRvd3MgZG9lcworbm90IHN1cHBvcnQgRmxhc2hXaW5kb3dFeCBhbmQgcmV0dXJuIG5pbCwgb3Ro ZXJ3aXNlIHJldHVybiB0LiAgRG8KK25vdGhpbmcgaWYgdGhlIGZyYW1lIGlzIG5vdCAoeWV0KSBh c3NvY2lhdGVkIHdpdGggYW4gSFdORC4gICovKQorICAoTGlzcF9PYmplY3QgdXJnZW5jeSkKK3sK KyAgaWYgKF9mbGFzaF93aW5kb3dfZXhfZm4gPT0gTlVMTCkKKyAgICB7CisgICAgICBfZmxhc2hf d2luZG93X2V4X2ZuID0gKEZsYXNoV2luZG93RXhfUHJvYykKKwlnZXRfcHJvY19hZGRyIChHZXRN b2R1bGVIYW5kbGUgKCJ1c2VyMzIuZGxsIiksICJGbGFzaFdpbmRvd0V4Iik7CisgICAgICBpZiAo X2ZsYXNoX3dpbmRvd19leF9mbiA9PSBOVUxMKQorCXJldHVybiBRbmlsOworICAgIH0KKworICBz dHJ1Y3QgZnJhbWUgKnNmID0gU0VMRUNURURfRlJBTUUgKCk7CisgIGlmICghRlJBTUVfVzMyX1Ag KHNmKSB8fCAhRlJBTUVfTElWRV9QIChzZikpCisgICAgcmV0dXJuIFFuaWw7CisKKyAgSFdORCBo d25kID0gRlJBTUVfVzMyX1dJTkRPVyAoc2YpOworICBpZiAoaHduZCA9PSAwKQorICAgIHJldHVy biBRbmlsOworCisgIEZMQVNIV0lORk8gZmxhc2hfaW5mbzsKKyAgZmxhc2hfaW5mby5jYlNpemUg PSBzaXplb2YoZmxhc2hfaW5mbyk7CisgIGZsYXNoX2luZm8udUNvdW50ID0gMDsKKyAgZmxhc2hf aW5mby5kd1RpbWVvdXQgPSAwOworCisgIC8qIGR3RmxhZ3MKKyAgICAgRkxBU0hXX0FMTCAgICAg ICAweDAwMDAwMDAzIEZsYXNoIGJvdGggd2luZG93IGNhcHRpb24gYW5kIHRhc2tiYXIgYnV0dG9u LgorICAgICBGTEFTSFdfQ0FQVElPTiAgIDB4MDAwMDAwMDEgRmxhc2ggdGhlIHdpbmRvdyBjYXB0 aW9uLgorICAgICBGTEFTSFdfU1RPUCAgICAgIDB4MDAwMDAwMDAgU3RvcCBmbGFzaGluZy4KKyAg ICAgRkxBU0hXX1RJTUVSICAgICAweDAwMDAwMDA0IEZsYXNoIGNvbnRpbnVvdXNseSwgdW50aWwg RkxBU0hXX1NUT1AuCisgICAgIEZMQVNIV19USU1FUk5PRkcgMHgwMDAwMDAwQyBGbGFzaCB1bnRp bCB3aW5kb3cgY29tZXMgdG8gdGhlIGZvcmVncm91bmQuCisgICAgIEZMQVNIV19UUkFZICAgICAg MHgwMDAwMDAwMiBGbGFzaCB0aGUgdGFza2JhciBidXR0b24uICAqLworCisgIGZsYXNoX2luZm8u ZHdGbGFncyA9IDB4MDAwMDAwMDA7IC8qIEZMQVNIV19TVE9QICAqLworICBpZiAoX3czMl9yZXF1 ZXN0X3VzZXJfYXR0ZW50aW9uX2h3bmQgIT0gTlVMTAorICAgICAgJiYgX3czMl9yZXF1ZXN0X3Vz ZXJfYXR0ZW50aW9uX2h3bmQgIT0gaHduZCkKKyAgICB7CisgICAgICAvKiBEaXNhYmxlIGF0dGVu dGlvbiBvbiB0aGUgb2xkIHdpbmRvdyBoYW5kbGUuICAqLworICAgICAgZmxhc2hfaW5mby5od25k ID0gX3czMl9yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uX2h3bmQ7CisgICAgICBfZmxhc2hfd2luZG93 X2V4X2ZuICgmZmxhc2hfaW5mbyk7CisgICAgICBfdzMyX3JlcXVlc3RfdXNlcl9hdHRlbnRpb25f aHduZCA9IGh3bmQ7CisgICAgfQorICBmbGFzaF9pbmZvLmh3bmQgPSBod25kOworCisgIGlmICgh TklMUCAodXJnZW5jeSkgJiYgU1lNQk9MUCAodXJnZW5jeSkpCisgICAgeworICAgICAgLyogVGhl IGludGVuZGVkIGNhbGxlciwgZG9jay1tb2RlLmVsICdkb2NrLWF0dGVudGlvbicsIGhhcyBpdHMg b3duCisJIHRpbWVyIHRvIGNsZWFyIHRoZSBhdHRlbnRpb24gaW5kaWNhdG9yIHNvIHRoaXMgd2ls bCBmbGFzaCB1bnRpbAorCSBjbGVhcmVkIHZpYSB0aGUgdGltZXIgZm9yIGluZm9ybWF0aW9uYWwg YXR0ZW50aW9uLCBvciB0aGUKKwkgd2luZG93IGNvbWVzIHRvIHRoZSBmb3JlZ3JvdW5kIGZvciBj cml0aWNhbCBhdHRlbnRpb24uICAqLworICAgICAgaWYgKEVRICh1cmdlbmN5LCBRaW5mb3JtYXRp b25hbCkpCisJZmxhc2hfaW5mby5kd0ZsYWdzID0gMHgwMDAwMDAwMyB8IDB4MDAwMDAwMDQ7IC8q IEZMQVNIV19USU1FUiAgKi8KKyAgICAgIGVsc2UgaWYgKEVRICh1cmdlbmN5LCBRY3JpdGljYWwp KQorCWZsYXNoX2luZm8uZHdGbGFncyA9IDB4MDAwMDAwMDMgfCAweDAwMDAwMDBDOyAvKiBGTEFT SFdfVElNRVJOT0ZHICAqLworICAgIH0KKworICBfZmxhc2hfd2luZG93X2V4X2ZuICgmZmxhc2hf aW5mbyk7CisgIHJldHVybiBRdDsKK30KKworLyogVHJhY2sgdGhlIHdpbmRvdyBoYW5kbGUgZm9y IHRoZSBnbG9iYWwgcHJvZ3Jlc3MgaW5kaWNhdG9yLiAqLworc3RhdGljIEhXTkQgX3czMl9wcm9n cmVzc19pbmRpY2F0b3JfaHduZCA9IE5VTEw7CisKK0RFRlVOICgidzMyLXByb2dyZXNzLWluZGlj YXRvciIsCisgICAgICAgRnczMl9wcm9ncmVzc19pbmRpY2F0b3IsCisgICAgICAgU3czMl9wcm9n cmVzc19pbmRpY2F0b3IsCisgICAgICAgMSwgMSwgMCwKKyAgICAgICBkb2M6IC8qIFNob3cgYSBw cm9ncmVzcyBiYXIgb24gdGhlIHRhc2tiYXIgaWNvbiBmb3IgUFJPR1JFU1MuCitQUk9HUkVTUyBp cyBhIGZsb2F0IGluIHRoZSByYW5nZSAwLjAgdG8gMS4wLiAgSWYgUFJPR1JFU1MgaXMgbmlsLCBy ZW1vdmUKK3RoZSBwcm9ncmVzcyBpbmRpY2F0b3IuICBEbyBub3RoaW5nIGlmIFdpbmRvd3MgZG9l cyBub3Qgc3VwcG9ydCB0aGUKK0lUYXNrYmFyTGlzdDMgaW50ZXJmYWNlIGFuZCByZXR1cm4gbmls LCBvdGhlcndpc2UgcmV0dXJuIHQuICBEbyBub3RoaW5nCitpZiB0aGUgZnJhbWUgaXMgbm90ICh5 ZXQpIGFzc29jaWF0ZWQgd2l0aCBhbiBIV05ELiAgKi8pCisgIChMaXNwX09iamVjdCBwcm9ncmVz cykKK3sKKyAgQ29Jbml0aWFsaXplIChOVUxMKTsKKyAgSVRhc2tiYXJMaXN0MyAqdGFza19iYXJf bGlzdCA9IE5VTEw7CisgIEhSRVNVTFQgciA9IENvQ3JlYXRlSW5zdGFuY2UoJkNMU0lEX1Rhc2ti YXJMaXN0LAorCQkJICAgICAgIE5VTEwsCisJCQkgICAgICAgQ0xTQ1RYX0lOUFJPQ19TRVJWRVIs CisJCQkgICAgICAgJklJRF9JVGFza2Jhckxpc3QzLAorCQkJICAgICAgICh2b2lkICoqKSZ0YXNr X2Jhcl9saXN0KTsKKyAgaWYgKHIgIT0gU19PSykKKyAgICB7CisgICAgICAvKiBGSVhNRTogRG8g d2UgbmVlZCB0byBjYWxsIENvVW5pbml0aWFsaXplPyAgKi8KKyAgICAgIC8qIENvVW5pbml0aWFs aXplICgpOyAgKi8KKyAgICAgIHJldHVybiBRbmlsOworICAgIH0KKworICBzdHJ1Y3QgZnJhbWUg KnNmID0gU0VMRUNURURfRlJBTUUgKCk7CisgIEhXTkQgaHduZCA9IE5VTEw7CisgIGlmIChGUkFN RV9XMzJfUCAoc2YpICYmIEZSQU1FX0xJVkVfUCAoc2YpKQorICAgIGh3bmQgPSBGUkFNRV9XMzJf V0lORE9XIChzZik7CisgIGlmIChod25kID09IE5VTEwpCisgICAgeworICAgICAgdGFza19iYXJf bGlzdC0+bHBWdGJsLT5SZWxlYXNlKHRhc2tfYmFyX2xpc3QpOworICAgICAgLyogRklYTUU6IERv IHdlIG5lZWQgdG8gY2FsbCBDb1VuaW5pdGlhbGl6ZT8gICovCisgICAgICAvKiBDb1VuaW5pdGlh bGl6ZSAoKTsgICovCisgICAgICByZXR1cm4gUW5pbDsKKyAgICB9CisKKyAgaWYgKF93MzJfcHJv Z3Jlc3NfaW5kaWNhdG9yX2h3bmQgIT0gTlVMTAorICAgICAgJiYgX3czMl9wcm9ncmVzc19pbmRp Y2F0b3JfaHduZCAhPSBod25kKQorICAgIHsKKyAgICAgIC8qIERpc2FibGUgdGhlIGluZGljYXRv ciBmb3IgdGhlIG9sZCB3aW5kb3cgaGFuZGxlLiAgKi8KKyAgICAgIHRhc2tfYmFyX2xpc3QtPmxw VnRibC0+U2V0UHJvZ3Jlc3NTdGF0ZSAodGFza19iYXJfbGlzdCwKKwkJCQkJICAgICAgIF93MzJf cHJvZ3Jlc3NfaW5kaWNhdG9yX2h3bmQsCisJCQkJCSAgICAgICBUQlBGX05PUFJPR1JFU1MpOwor ICAgIH0KKyAgX3czMl9wcm9ncmVzc19pbmRpY2F0b3JfaHduZCA9IGh3bmQ7CisKKyAgLyogU2Nh bGUgdGFzayBiYXIgcHJvZ3Jlc3MgZnJvbSAwLjAtMS4wIHRvIDAtMTAwLiAgKi8KKyAgdW5zaWdu ZWQgaW50IGFkal9wcm9ncmVzcyA9IDA7CisgIGlmICghTklMUCAocHJvZ3Jlc3MpICYmIEZMT0FU UCAocHJvZ3Jlc3MpKQorICAgICAgYWRqX3Byb2dyZXNzID0gKHVuc2lnbmVkIGludCkgKDEwMC4w ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYRkxPQVRfREFUQSAocHJv Z3Jlc3MpKTsKKyAgaWYgKGFkal9wcm9ncmVzcyA+IDApCisgICAgeworICAgICAgdGFza19iYXJf bGlzdC0+bHBWdGJsLT5TZXRQcm9ncmVzc1N0YXRlICh0YXNrX2Jhcl9saXN0LAorCQkJCQkgICAg ICAgaHduZCwgVEJQRl9OT1JNQUwpOworICAgICAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5TZXRQ cm9ncmVzc1ZhbHVlICh0YXNrX2Jhcl9saXN0LAorCQkJCQkgICAgICAgaHduZCwgYWRqX3Byb2dy ZXNzLCAxMDApOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHRhc2tfYmFyX2xpc3QtPmxw VnRibC0+U2V0UHJvZ3Jlc3NTdGF0ZSAodGFza19iYXJfbGlzdCwKKwkJCQkJICAgICAgIGh3bmQs IFRCUEZfTk9QUk9HUkVTUyk7CisgICAgICBfdzMyX3Byb2dyZXNzX2luZGljYXRvcl9od25kID0g TlVMTDsKKyAgICB9CisKKyAgdGFza19iYXJfbGlzdC0+bHBWdGJsLT5SZWxlYXNlKHRhc2tfYmFy X2xpc3QpOworICAvKiBGSVhNRTogRG8gd2UgbmVlZCB0byBjYWxsIENvVW5pbml0aWFsaXplPyAg Ki8KKyAgLyogQ29VbmluaXRpYWxpemUgKCk7ICAqLworICByZXR1cm4gUXQ7Cit9CisKKyNlbmRp ZiAvKiBXSU5ET1dTTlQgKi8KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAJCQkgICAgSW5pdGlhbGl6YXRp b24KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KQEAgLTExNDg1LDYgKzExODkxLDE1IEBAIHN5bXNfb2ZfdzMy Zm5zICh2b2lkKQogICBERUZTWU0gKFFjYXBzbG9jaywgImNhcHNsb2NrIik7CiAgIERFRlNZTSAo UWtwX251bWxvY2ssICJrcC1udW1sb2NrIik7CiAgIERFRlNZTSAoUXNjcm9sbCwgInNjcm9sbCIp OworCisgICNpZmRlZiBXSU5ET1dTTlQKKyAgLyogVGFza2Jhci9kb2NrICovCisgIGRlZnN1YnIg KCZTdzMyX2JhZGdlKTsKKyAgZGVmc3ViciAoJlN3MzJfcHJvZ3Jlc3NfaW5kaWNhdG9yKTsKKyAg ZGVmc3ViciAoJlN3MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbik7CisgIERFRlNZTSAoUWluZm9y bWF0aW9uYWwsICJpbmZvcm1hdGlvbmFsIik7CisgIERFRlNZTSAoUWNyaXRpY2FsLCAiY3JpdGlj YWwiKTsKKyAgI2VuZGlmCiB9CiAKIAwKLS0gCjIuNDcuMQoK --0000000000008613b00643e352cb--
Stéphane Marks <shipmints@HIDDEN>:bug-gnu-emacs@HIDDEN.
Full text available.bug-gnu-emacs@HIDDEN:bug#79859; Package emacs.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.