From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Adam Schwalm Newsgroups: gmane.emacs.bugs Subject: bug#45230: /bug#45231: [PATCH] Support underline colors and styles in terminal Date: Thu, 22 Dec 2022 19:36:35 -0600 Message-ID: References: <4d1d7ff3dae9d2cb04dce6ad15e93a3a20eb55b8.camel@viccuad.me> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000006f87c805f074cf31" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="25447"; mail-complaints-to="usenet@ciao.gmane.io" To: 45230@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Dec 23 05:07:24 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p8ZLA-0006Q6-Cb for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 23 Dec 2022 05:07:24 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p8ZKq-0007OM-A0; Thu, 22 Dec 2022 23:07:04 -0500 Original-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 ) id 1p8ZKo-0007O8-U4 for bug-gnu-emacs@gnu.org; Thu, 22 Dec 2022 23:07:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p8ZKo-0004h8-EX for bug-gnu-emacs@gnu.org; Thu, 22 Dec 2022 23:07:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1p8ZKo-0001rn-42 for bug-gnu-emacs@gnu.org; Thu, 22 Dec 2022 23:07:02 -0500 X-Loop: help-debbugs@gnu.org In-Reply-To: <4d1d7ff3dae9d2cb04dce6ad15e93a3a20eb55b8.camel@viccuad.me> Resent-From: Adam Schwalm Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 23 Dec 2022 04:07:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 45230 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.16717684197169 (code B ref -1); Fri, 23 Dec 2022 04:07:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 23 Dec 2022 04:06:59 +0000 Original-Received: from localhost ([127.0.0.1]:36542 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p8ZKk-0001rY-7y for submit@debbugs.gnu.org; Thu, 22 Dec 2022 23:06:59 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:41518) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p8Wyz-0000U8-5d for submit@debbugs.gnu.org; Thu, 22 Dec 2022 20:36:22 -0500 Original-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 ) id 1p8Wyx-0002g1-BA for bug-gnu-emacs@gnu.org; Thu, 22 Dec 2022 20:36:19 -0500 Original-Received: from mail-lf1-x129.google.com ([2a00:1450:4864:20::129]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p8Wyt-00077D-PT for bug-gnu-emacs@gnu.org; Thu, 22 Dec 2022 20:36:18 -0500 Original-Received: by mail-lf1-x129.google.com with SMTP id m29so5170578lfo.11 for ; Thu, 22 Dec 2022 17:36:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=Ry+uHZpxU3y3uHvTecXF8JWDXRmF9lmf/53F5kFlGUY=; b=a3/fCoQ9rChuk4zKMmYtOn/i4pMShfTmtTrXRFZpOoNFAoEYbYx9gMQdb6+3rPgYUJ ILmDeBoL3qOtay1j5ZRrQl5Ls3rEiK3WOg/m1189kuVFvjxanWwgGiu+70PbsQt/udYE oFBQ0DZ2JS+0QNmBGsh3mWm50SHbu9pzPshWNPRCOm9+X0lkPHqPcXIZrffWunsOHwr0 TH6NBgDRKL8UM8qQYmJbWWeXi92ZbZDMPTX5I2rDF8ROJUQd26Qmyk7xOnvHJuc3rRbF aOKD+IAzTTVzUmEjjKy7jCz7MEnWBnFm6hiCBFFYsTHt5x02tJvTVnJ1GD+SQGRB5mSS ye2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Ry+uHZpxU3y3uHvTecXF8JWDXRmF9lmf/53F5kFlGUY=; b=IHS8Sv11CcJsRgY0iIOTunnIIAjlbxOaVjakcGv1a0rUhyrjQuLmGUstp6JzeiV4Ne Y4vfy63VeLawmE5/9C1b2vEqTGrjjQFO3EWBbI4pl4pu1+1GymMIK6V+E1DoxrtsCr3s 58qwFewUDeTbgTAkq2OtO6GzxmtJ/DOj1yCVJ53XkjHKbY+dZCzgR2wo2c7FYeAyRqzC N1VSCIE/bZSAEOSnAhp8m90sHm1ce4gEMmKMcYIxkOve/Irx+m5sFWcudTlOrAb+rftj UVv9GIx35Xg29vtsCChVaP4Y2mdJpl5x5Hjjq941fY1mHOUK0UuUWkaQT1JR2n6FduYh Vj+w== X-Gm-Message-State: AFqh2kq8njVMUboA9wzHLum7Yzj+bzxzeJz8SkVOmXwykUgEwLMLt99k N4ZhjS7BDDoo1MMZJX+OfAu5ybS5FfeWxdh4+Sr97jQMSYW9bQ== X-Google-Smtp-Source: AMrXdXugcEvCJAHi5XnGMKo1feEzh0hY9uXC0iT5Qi0qS3XveUDUx+0DDQ/breUv8zSrETVHsRqGiWMdPm+S7g13pFs= X-Received: by 2002:a05:6512:2285:b0:4b5:827:3cac with SMTP id f5-20020a056512228500b004b508273cacmr569238lfu.154.1671759370609; Thu, 22 Dec 2022 17:36:10 -0800 (PST) Received-SPF: pass client-ip=2a00:1450:4864:20::129; envelope-from=adamschwalm@gmail.com; helo=mail-lf1-x129.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, 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-Mailman-Approved-At: Thu, 22 Dec 2022 23:06:56 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:251695 Archived-At: --0000000000006f87c805f074cf31 Content-Type: text/plain; charset="UTF-8" Many modern terminal emulators support control sequences that enable underlines with colors other than the text foreground color and styles like the 'wave' used in GUI mode Emacs. These two patches add support for using these control sequences in terminal mode Emacs. The first enables support for terminals which report support for these features in their terminfo, the second adds two functions which can be used to override terminfo and explicitly enable the feature. The latter is unfortunately probably necessary, as there is no official way to announce support in terminfo yet (though there is an unofficial standard being followed by some terminals). I have tested these patches on the following terminal emulators on GNU/Linux: - Alacritty - Kitty - Wezterm - gnome-terminal (vte) And on Windows, I tested with mintty (though I have very little experience with Windows terminal emulators). For alacritty, kitty and wezterm, the 'style' feature works without any action from the user. The 'Smulx' entry is present in their terminfo, which emacs detects. Unfortunately, while some terminals like wezterm do announce support for underline colors via 'Setulc', they do not announce support for the 'ol' feature used to reset the underline color back to default (which I think is necessary when turning off a face). Therefore, I had to use the new functions to force enable colors. After doing this, underline colors worked in the terminals listed above. I will be working in the next few weeks to update the terminfo for some of these terminal emulators to reflect these capabilities, but this will presumably take a long time to actually land in the main ncurses terminfo.src. With that said, I do think there is enough of a general consensus on the terminfo names that should be used (from tmux and existing usage in some terminals), that such additions will hopefully be uncontroversial. For the second patch, 'default' control sequences I've chosen (if the user explicitly requests underline color/styles be enabled on a terminal that does not declare support for those features) is supported by the terminals listed above as well as tmux. Please note that I have not signed the copyright assignment, but if these patches seem worth merging in some form, I will complete that (and update NEWS/manuals/etc). There are some areas that I suspect I am doing things wrong as I don't have much prior experience with emacs internals, so please let me know and I'll update things. Thanks, Adam Schwalm --0000000000006f87c805f074cf31 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Support-underline-colors-and-styles-in-non-gui-mode.patch" Content-Disposition: attachment; filename="0001-Support-underline-colors-and-styles-in-non-gui-mode.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lbztu21z0 RnJvbSAxZWJmMmE4MDA3MzAxMGUyMzg4Zjc4YzFiZDZiNDg4MDM1NTczNjVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFNjaHdhbG0gPGFkYW1zY2h3YWxtQGdtYWlsLmNvbT4K RGF0ZTogTW9uLCAxOSBEZWMgMjAyMiAxODo1Njo1OSAtMDYwMApTdWJqZWN0OiBbUEFUQ0ggMS8y XSBTdXBwb3J0IHVuZGVybGluZSBjb2xvcnMgYW5kIHN0eWxlcyBpbiBub24tZ3VpIG1vZGUKCk1h bnkgdGVybWluYWwgZW11bGF0b3JzIG5vdyBzdXBwb3J0IGluZm9ybWFsIGVzY2FwZSBzZXF1ZW5j ZXMKdG8gYWxsb3cgc2V0dGluZyBjb2xvciBhbmQgc3R5bGUgb2YgdW5kZXJsaW5lcy4gIFVuZGVy bGluZSBjb2xvciBpcwp0eXBpY2FsbHkgY29udHJvbGxlZCBieSBhIHNlcXVlbmNlIGludGVuZGVk IHRvIG1pcnJvciB0aGUgQ1NJIDM4LzQ4CmNvZGVzIGZvciBmb3JlZ3JvdW5kL2JhY2tncm91bmQg Y29sb3JzOgoKICAgIENTSSA1OCA6IDIgOjogUiA6IEcgOiBCIG0gICAtPiBzZXQgY29sb3IgdG8g c3BlY2lmaWVkIHRydWUgY29sb3IgUkdCCiAgICBDU0kgNTggOiA1IDogSSBtICAgICAgICAgICAg LT4gc2V0IGNvbG9yIHRvIHBhbGV0dGUgaW5kZXggSSAoMC0yNTUpCiAgICBDU0kgNTkgbSAgICAg ICAgICAgICAgICAgICAgLT4gcmVzdG9yZSB1bmRlcmxpbmUgY29sb3IgdG8gZGVmYXVsdAoKVW5k ZXJsaW5lIHN0eWxlIGlzIGNvbnRyb2xsZWQgdmlhIGEgc2V0IG9mIGV4dGVuc2lvbnMgdG8gQ1NJ IDQ6CgogICAgQ1NJIDQgOiAwIG0gICAtPiBObyB1bmRlcmxpbmUKICAgIENTSSA0IDogMSBtICAg LT4gU2luZ2xlIHVuZGVybGluZQogICAgQ1NJIDQgOiAyIG0gICAtPiBEb3VibGUgdW5kZXJsaW5l CiAgICBDU0kgNCA6IDMgbSAgIC0+IEN1cmx5IHVuZGVybGluZQogICAgQ1NJIDQgOiA0IG0gICAt PiBEb3R0ZWQgdW5kZXJsaW5lCiAgICBDU0kgNCA6IDUgbSAgIC0+IERhc2hlZCB1bmRlcmxpbmUK ClRoZSBpbmZvcm1hbCB0ZXJtaW5mbyBpZGVudGlmaWVycyBmb3IgdGhlc2UgZmVhdHVyZXMgYXJl OgoKICAgIFNtdWx4ICAtPiBVbmRlcmxpbmUgc3R5bGUgc2VxdWVuY2UKICAgIFNldHVsYyAtPiBV bmRlcmxpbmUgY29sb3Igc2V0IHNlcXVlbmNlCiAgICBvbCAgICAgLT4gVW5kZXJsaW5lIGNvbG9y IHJlc2V0IHNlcXVlbmNlCgpUaGlzIHBhdGNoIGFsbG93cyBlbWFjcyB0byByZWNvZ25pemUgdGhl c2UgZmVhdHVyZXMgb2YgYSB0ZXJtaW5hbAplbXVsYXRvciBhbmQgdXNlIHRoZW0gdG8gc3VwcG9y dCBzZXR0aW5nICd3YXZlJyB1bmRlcmxpbmUgc3R5bGUKYW5kIGNvbG9ycyB3aGVuIHJ1bm5pbmcg aW4gYSB0dHkuCgooQnVnIzQ1MjMwKQooQnVnIzQ1MjMxKQotLS0KIHNyYy90ZXJtLmMgICAgIHwg IDg3ICsrKysrKysrKysrKysrKysrLQogc3JjL3Rlcm1jaGFyLmggfCAgIDMgKwogc3JjL3hmYWNl cy5jICAgfCAyMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAyMjIgaW5zZXJ0aW9ucygrKSwgMTAzIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy90ZXJtLmMgYi9zcmMvdGVybS5jCmluZGV4IGY4MTA0ZTAzMDQu LjMwNmM1NzMzOGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXJtLmMKKysrIGIvc3JjL3Rlcm0uYwpAQCAt MTE1LDYgKzExNSwzMiBAQCAjZGVmaW5lIE9VVFBVVDFfSUYodHR5LCBhKSBkbyB7IGlmIChhKSBl bWFjc190cHV0cyAoKHR0eSksIGEsIDEsIGNtcHV0Yyk7IH0gd2hpbAogICBOQ19QUk9URUNUCQkg PSAxIDw8IDcKIH07CiAKKworZW51bSB0dHlfdW5kZXJsaW5lX3R5cGUKK3sKKyAgVFRZX05PX1VO REVSTElORSA9IDAsCisgIFRUWV9VTkRFUl9MSU5FLAorICBUVFlfRE9VQkxFX1VOREVSX0xJTkUs CisgIFRUWV9DVVJMWV9VTkRFUl9MSU5FLAorICBUVFlfRE9UVEVEX1VOREVSX0xJTkUsCisgIFRU WV9EQVNIRURfVU5ERVJfTElORQorfTsKKworc3RhdGljIGludCB0dHlfbWFwX3VuZGVybGluZV9z dHlsZSAoZW51bSBmYWNlX3VuZGVybGluZV90eXBlIHVuZGVybGluZSkKK3sKKyAgc3dpdGNoICh1 bmRlcmxpbmUpCisgICAgeworICAgIGNhc2UgRkFDRV9OT19VTkRFUkxJTkU6CisgICAgICByZXR1 cm4gVFRZX05PX1VOREVSTElORTsKKyAgICBjYXNlIEZBQ0VfVU5ERVJfTElORToKKyAgICAgIHJl dHVybiBUVFlfVU5ERVJfTElORTsKKyAgICBjYXNlIEZBQ0VfVU5ERVJfV0FWRToKKyAgICAgIHJl dHVybiBUVFlfQ1VSTFlfVU5ERVJfTElORTsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIFRU WV9VTkRFUl9MSU5FOworICAgIH0KK30KKwogLyogaW50ZXJuYWwgc3RhdGUgKi8KIAogLyogVGhl IGxhcmdlc3QgZnJhbWUgd2lkdGggaW4gYW55IGNhbGwgdG8gY2FsY3VsYXRlX2Nvc3RzLiAgKi8K QEAgLTE5MjMsNiArMTk0OSw3IEBAIHR1cm5fb25fZmFjZSAoc3RydWN0IGZyYW1lICpmLCBpbnQg ZmFjZV9pZCkKICAgc3RydWN0IGZhY2UgKmZhY2UgPSBGQUNFX0ZST01fSUQgKGYsIGZhY2VfaWQp OwogICB1bnNpZ25lZCBsb25nIGZnID0gZmFjZS0+Zm9yZWdyb3VuZDsKICAgdW5zaWduZWQgbG9u ZyBiZyA9IGZhY2UtPmJhY2tncm91bmQ7CisgIHVuc2lnbmVkIGxvbmcgdWMgPSBmYWNlLT51bmRl cmxpbmVfY29sb3I7CiAgIHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHkgPSBGUkFNRV9UVFkg KGYpOwogCiAgIC8qIFVzZSByZXZlcnNlIHZpZGVvIGlmIHRoZSBmYWNlIHNwZWNpZmllcyB0aGF0 LgpAQCAtMTk0OSw3ICsxOTc2LDI0IEBAIHR1cm5fb25fZmFjZSAoc3RydWN0IGZyYW1lICpmLCBp bnQgZmFjZV9pZCkKICAgICB9CiAKICAgaWYgKGZhY2UtPnR0eV91bmRlcmxpbmVfcCAmJiBNQVlf VVNFX1dJVEhfQ09MT1JTX1AgKHR0eSwgTkNfVU5ERVJMSU5FKSkKLSAgICBPVVRQVVQxX0lGICh0 dHksIHR0eS0+VFNfZW50ZXJfdW5kZXJsaW5lX21vZGUpOworICAgIHsKKyAgICAgIE9VVFBVVDFf SUYgKHR0eSwgdHR5LT5UU19lbnRlcl91bmRlcmxpbmVfbW9kZSk7CisKKyAgICAgIGlmIChmYWNl X3R0eV9zcGVjaWZpZWRfY29sb3IgKHVjKSAmJiB0dHktPlRTX3NldF91bmRlcmxpbmVfY29sb3Ip CisJeworCSAgY2hhciAqcCA9IHRwYXJhbSAodHR5LT5UU19zZXRfdW5kZXJsaW5lX2NvbG9yLCBO VUxMLCAwLCB1YywgMCwgMCwgMCk7CisJICBPVVRQVVQgKHR0eSwgcCk7CisJICB4ZnJlZSAocCk7 CisJfQorCisgICAgICBpZiAoZmFjZS0+dW5kZXJsaW5lICE9IEZBQ0VfVU5ERVJfTElORSAmJiB0 dHktPlRTX3NldF91bmRlcmxpbmVfc3R5bGUpCisJeworCSAgY2hhciAqcCA9IHRwYXJhbSAodHR5 LT5UU19zZXRfdW5kZXJsaW5lX3N0eWxlLCBOVUxMLCAwLAorCQkJICAgIHR0eV9tYXBfdW5kZXJs aW5lX3N0eWxlIChmYWNlLT51bmRlcmxpbmUpLCAwLCAwLCAwKTsKKwkgIE9VVFBVVCAodHR5LCBw KTsKKwkgIHhmcmVlIChwKTsKKwl9CisgICAgfQogCiAgIGlmIChmYWNlLT50dHlfc3RyaWtlX3Ro cm91Z2hfcAogICAgICAgJiYgTUFZX1VTRV9XSVRIX0NPTE9SU19QICh0dHksIE5DX1NUUklLRV9U SFJPVUdIKSkKQEAgLTE5ODYsNiArMjAzMCw3IEBAIHR1cm5fb2ZmX2ZhY2UgKHN0cnVjdCBmcmFt ZSAqZiwgaW50IGZhY2VfaWQpCiB7CiAgIHN0cnVjdCBmYWNlICpmYWNlID0gRkFDRV9GUk9NX0lE IChmLCBmYWNlX2lkKTsKICAgc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSA9IEZSQU1FX1RU WSAoZik7CisgIHVuc2lnbmVkIGxvbmcgdWMgPSBmYWNlLT51bmRlcmxpbmVfY29sb3I7CiAKICAg aWYgKHR0eS0+VFNfZXhpdF9hdHRyaWJ1dGVfbW9kZSkKICAgICB7CkBAIC0yMDA4LDcgKzIwNTMs MjAgQEAgdHVybl9vZmZfZmFjZSAoc3RydWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkKICAgICAg IC8qIElmIHdlIGRvbid0IGhhdmUgIm1lIiB3ZSBjYW4gb25seSBoYXZlIHRob3NlIGFwcGVhcmFu Y2VzCiAJIHRoYXQgaGF2ZSBleGl0IHNlcXVlbmNlcyBkZWZpbmVkLiAgKi8KICAgICAgIGlmIChm YWNlLT50dHlfdW5kZXJsaW5lX3ApCi0JT1VUUFVUX0lGICh0dHksIHR0eS0+VFNfZXhpdF91bmRl cmxpbmVfbW9kZSk7CisJeworCSBPVVRQVVRfSUYgKHR0eSwgdHR5LT5UU19leGl0X3VuZGVybGlu ZV9tb2RlKTsKKworCSBpZiAoZmFjZV90dHlfc3BlY2lmaWVkX2NvbG9yICh1YykpCisJICAgT1VU UFVUX0lGICh0dHksIHR0eS0+VFNfcmVzZXRfdW5kZXJsaW5lX2NvbG9yKTsKKworCSBpZiAoZmFj ZS0+dW5kZXJsaW5lICE9IEZBQ0VfVU5ERVJfTElORSAmJiB0dHktPlRTX3NldF91bmRlcmxpbmVf c3R5bGUpCisJICAgeworCSAgICAgY2hhciAqcCA9IHRwYXJhbSAodHR5LT5UU19zZXRfdW5kZXJs aW5lX3N0eWxlLCBOVUxMLCAwLAorCQkJICAgICAgIHR0eV9tYXBfdW5kZXJsaW5lX3N0eWxlIChm YWNlLT51bmRlcmxpbmUpLCAwLCAwLCAwKTsKKwkgICAgIE9VVFBVVCAodHR5LCBwKTsKKwkgICAg IHhmcmVlIChwKTsKKwkgICB9CisJfQogICAgIH0KIAogICAvKiBTd2l0Y2ggYmFjayB0byBkZWZh dWx0IGNvbG9ycy4gICovCkBAIC00MTU2LDYgKzQyMTQsMzEgQEAgaW5pdF90dHkgKGNvbnN0IGNo YXIgKm5hbWUsIGNvbnN0IGNoYXIgKnRlcm1pbmFsX3R5cGUsIGJvb2wgbXVzdF9zdWNjZWVkKQog CiAgIHR0eS0+VFNfZW50ZXJfdW5kZXJsaW5lX21vZGUgPSB0Z2V0c3RyICgidXMiLCBhZGRyZXNz KTsKICAgdHR5LT5UU19leGl0X3VuZGVybGluZV9tb2RlID0gdGdldHN0ciAoInVlIiwgYWRkcmVz cyk7CisjaWZkZWYgVEVSTUlORk8KKyAgeworICAgIC8qIFVuZGVybGluZSBjb2xvciBhbmQgc3R5 bGUgc3VwcG9ydC4gVGhlc2UgYXJlIHVub2ZmaWNpYWwKKyAgICAgICBpZGVudGlmaWVycywgd2hp Y2ggYXJlIHVzZWQgaGVyZSBkdWUgdG8gYXMgYSBkZS1mYWN0byBzdGFuZGFyZAorICAgICAgIGlu dHJvZHVjZWQgYnkgdG11eC4gKi8KKyAgICB0dHktPlRTX3NldF91bmRlcmxpbmVfc3R5bGUgPSB0 aWdldHN0ciAoIlNtdWx4Iik7CisgICAgdHR5LT5UU19zZXRfdW5kZXJsaW5lX2NvbG9yID0gdGln ZXRzdHIgKCJTZXR1bGMiKTsKKyAgICB0dHktPlRTX3Jlc2V0X3VuZGVybGluZV9jb2xvciA9IHRp Z2V0c3RyICgib2wiKTsKKworICAgIGlmICh0dHktPlRTX3NldF91bmRlcmxpbmVfc3R5bGUgPT0g KGNoYXIgKikgKGludHB0cl90KSAtMSkKKyAgICAgIHR0eS0+VFNfc2V0X3VuZGVybGluZV9zdHls ZSA9IE5VTEw7CisKKyAgICAvKiBJZiBlaXRoZXIgY29sb3Igb3IgcmVzZXQgaXMgbm90IGF2YWls YWJsZSwgZGlzYWJsZSB1bmRlcmxpbmUKKyAgICAgICBjb2xvcmluZy4gKi8KKyAgICBpZiAodHR5 LT5UU19yZXNldF91bmRlcmxpbmVfY29sb3IgPT0gTlVMTCB8fAorCXR0eS0+VFNfcmVzZXRfdW5k ZXJsaW5lX2NvbG9yID09IChjaGFyICopIChpbnRwdHJfdCkgLTEgfHwKKwl0dHktPlRTX3NldF91 bmRlcmxpbmVfY29sb3IgPT0gTlVMTCB8fAorCXR0eS0+VFNfc2V0X3VuZGVybGluZV9jb2xvciA9 PSAoY2hhciAqKSAoaW50cHRyX3QpIC0xKQorICAgICAgeworCXR0eS0+VFNfc2V0X3VuZGVybGlu ZV9jb2xvciA9IE5VTEw7CisJdHR5LT5UU19yZXNldF91bmRlcmxpbmVfY29sb3IgPSBOVUxMOwor ICAgICAgfQorICB9CisjZW5kaWYKKwogICB0dHktPlRTX2VudGVyX2JvbGRfbW9kZSA9IHRnZXRz dHIgKCJtZCIsIGFkZHJlc3MpOwogICB0dHktPlRTX2VudGVyX2l0YWxpY19tb2RlID0gdGdldHN0 ciAoIlpIIiwgYWRkcmVzcyk7CiAgIHR0eS0+VFNfZW50ZXJfZGltX21vZGUgPSB0Z2V0c3RyICgi bWgiLCBhZGRyZXNzKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXJtY2hhci5oIGIvc3JjL3Rlcm1jaGFy LmgKaW5kZXggMGYxNzI0NjQxMS4uMzM4MDBlNDFjMCAxMDA2NDQKLS0tIGEvc3JjL3Rlcm1jaGFy LmgKKysrIGIvc3JjL3Rlcm1jaGFyLmgKQEAgLTE0Myw2ICsxNDMsOSBAQCAjZGVmaW5lIEVNQUNT X1RFUk1DSEFSX0gKICAgY29uc3QgY2hhciAqVFNfZW50ZXJfdW5kZXJsaW5lX21vZGU7IC8qICJ1 ZSIgLS0gZW5kIHVuZGVybGluaW5nLiAgKi8KICAgY29uc3QgY2hhciAqVFNfZW50ZXJfc3RyaWtl X3Rocm91Z2hfbW9kZTsgLyogInNteHgiIC0tIHR1cm4gb24gc3RyaWtlLXRocm91Z2gKIAkJCQkJ ICAgICAgIG1vZGUuICAqLworICBjb25zdCBjaGFyKiBUU19zZXRfdW5kZXJsaW5lX3N0eWxlOyAv KiAiU211bHgiICovCisgIGNvbnN0IGNoYXIqIFRTX3NldF91bmRlcmxpbmVfY29sb3I7IC8qICJT ZXR1bGMiICovCisgIGNvbnN0IGNoYXIqIFRTX3Jlc2V0X3VuZGVybGluZV9jb2xvcjsgLyogIm9s IiAqLwogCiAgIC8qICJhcyIvImFlIiAtLSBzdGFydC9lbmQgYWx0ZXJuYXRlIGNoYXJhY3RlciBz ZXQuICBOb3QgcmVhbGx5CiAgICAgIHN1cHBvcnRlZCwgeWV0LiAgKi8KZGlmZiAtLWdpdCBhL3Ny Yy94ZmFjZXMuYyBiL3NyYy94ZmFjZXMuYwppbmRleCBiZTRhN2NhNzFjLi40NDI4NWNlYTA5IDEw MDY0NAotLS0gYS9zcmMveGZhY2VzLmMKKysrIGIvc3JjL3hmYWNlcy5jCkBAIC0zNzMsNiArMzcz LDEwIEBAICNkZWZpbmUgQ0xFQVJfRk9OVF9UQUJMRV9ORk9OVFMJMTAKIAkJCQkgICAgICBMaXNw X09iamVjdCBbTEZBQ0VfVkVDVE9SX1NJWkVdKTsKIHN0YXRpYyBzdHJ1Y3QgZmFjZSAqcmVhbGl6 ZV90dHlfZmFjZSAoc3RydWN0IGZhY2VfY2FjaGUgKiwKIAkJCQkgICAgICBMaXNwX09iamVjdCBb TEZBQ0VfVkVDVE9SX1NJWkVdKTsKK3N0YXRpYyB2b2lkIHJlYWxpemVfdW5kZXJsaW5lX2F0dHJz IChzdHJ1Y3QgZmFjZSogZmFjZSwKKwkJCQkgICAgIHN0cnVjdCBmYWNlX2NhY2hlICpjYWNoZSwK KwkJCQkgICAgIExpc3BfT2JqZWN0IGF0dHJzIFtMRkFDRV9WRUNUT1JfU0laRV0sCisJCQkJICAg ICBib29sIHR0eSk7CiBzdGF0aWMgYm9vbCByZWFsaXplX2Jhc2ljX2ZhY2VzIChzdHJ1Y3QgZnJh bWUgKik7CiBzdGF0aWMgYm9vbCByZWFsaXplX2RlZmF1bHRfZmFjZSAoc3RydWN0IGZyYW1lICop Owogc3RhdGljIHZvaWQgcmVhbGl6ZV9uYW1lZF9mYWNlIChzdHJ1Y3QgZnJhbWUgKiwgTGlzcF9P YmplY3QsIGludCk7CkBAIC0zODMsNiArMzg3LDkgQEAgI2RlZmluZSBDTEVBUl9GT05UX1RBQkxF X05GT05UUwkxMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wsIHN0cnVjdCBuYW1l ZF9tZXJnZV9wb2ludCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gbGZhY2Vf YXR0cmlidXRlX2luZGV4KTsKIHN0YXRpYyBpbnQgY29sb3JfZGlzdGFuY2UgKEVtYWNzX0NvbG9y ICp4LCBFbWFjc19Db2xvciAqeSk7CitzdGF0aWMgdW5zaWduZWQgbG9uZyBtYXBfdHR5X2NvbG9y IChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBmYWNlICpmYWNlLAorCQkJCSAgICBlbnVtIGxmYWNl X2F0dHJpYnV0ZV9pbmRleCBpZHgsIGJvb2wgKmRlZmF1bHRlZCwKKwkJCQkgICAgTGlzcF9PYmpl Y3QgY29sb3IpOwogCiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCiBzdGF0aWMgdm9pZCBzZXRf Zm9udF9mcmFtZV9wYXJhbSAoTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0KTsKQEAgLTYwMzIsNiAr NjAzOSwxMTEgQEAgZm9udF9tYXliZV91bnNldF9hdHRyaWJ1dGUgKExpc3BfT2JqZWN0IGZvbnRf b2JqZWN0LAogICAgIH0KIH0KIAordm9pZAorcmVhbGl6ZV91bmRlcmxpbmVfYXR0cnMgKHN0cnVj dCBmYWNlKiBmYWNlLAorCQkJIHN0cnVjdCBmYWNlX2NhY2hlICpjYWNoZSwKKwkJCSBMaXNwX09i amVjdCBhdHRyc1tMRkFDRV9WRUNUT1JfU0laRV0sCisJCQkgYm9vbCB0dHkpCit7CisgIHN0cnVj dCBmcmFtZSAqZiA9IGNhY2hlLT5mOworICB1bnNpZ25lZCBsb25nIGRlZmF1bHRfY29sb3IgPSB0 dHkgPyBGQUNFX1RUWV9ERUZBVUxUX0NPTE9SIDogMDsKKyAgTGlzcF9PYmplY3QgdW5kZXJsaW5l ID0gYXR0cnNbTEZBQ0VfVU5ERVJMSU5FX0lOREVYXTsKKyAgYm9vbCBkZWZhdWx0ZWQgPSBmYWxz ZTsKKyAgaWYgKEVRICh1bmRlcmxpbmUsIFF0KSkKKyAgICB7CisgICAgICAvKiBVc2UgZGVmYXVs dCBjb2xvciAoc2FtZSBhcyBmb3JlZ3JvdW5kIGNvbG9yKS4gICovCisgICAgICBmYWNlLT51bmRl cmxpbmUgPSBGQUNFX1VOREVSX0xJTkU7CisgICAgICBmYWNlLT51bmRlcmxpbmVfZGVmYXVsdGVk X3AgPSB0cnVlOworICAgICAgZmFjZS0+dW5kZXJsaW5lX2NvbG9yID0gZGVmYXVsdF9jb2xvcjsK KyAgICAgIGZhY2UtPnVuZGVybGluZV9hdF9kZXNjZW50X2xpbmVfcCA9IGZhbHNlOworICAgICAg ZmFjZS0+dW5kZXJsaW5lX3BpeGVsc19hYm92ZV9kZXNjZW50X2xpbmUgPSAwOworICAgIH0KKyAg ZWxzZSBpZiAoU1RSSU5HUCAodW5kZXJsaW5lKSkKKyAgICB7CisgICAgICAvKiBVc2Ugc3BlY2lm aWVkIGNvbG9yLiAgKi8KKyAgICAgIGZhY2UtPnVuZGVybGluZSA9IEZBQ0VfVU5ERVJfTElORTsK KworICAgICAgaWYgKHR0eSkKKwlmYWNlLT51bmRlcmxpbmVfY29sb3IgPSBtYXBfdHR5X2NvbG9y IChmLCBmYWNlLCBMRkFDRV9VTkRFUkxJTkVfSU5ERVgsCisJCQkJCSAgICAgICAmZGVmYXVsdGVk LAorCQkJCQkgICAgICAgZmFjZS0+bGZhY2VbTEZBQ0VfVU5ERVJMSU5FX0lOREVYXSk7CisgICAg ICBlbHNlCisJZmFjZS0+dW5kZXJsaW5lX2NvbG9yCisJICA9IGxvYWRfY29sb3IgKGYsIGZhY2Us IHVuZGVybGluZSwKKwkJCUxGQUNFX1VOREVSTElORV9JTkRFWCk7CisgICAgICBmYWNlLT51bmRl cmxpbmVfZGVmYXVsdGVkX3AgPSBkZWZhdWx0ZWQ7CisgICAgICBmYWNlLT51bmRlcmxpbmVfYXRf ZGVzY2VudF9saW5lX3AgPSBmYWxzZTsKKyAgICAgIGZhY2UtPnVuZGVybGluZV9waXhlbHNfYWJv dmVfZGVzY2VudF9saW5lID0gMDsKKyAgICB9CisgIGVsc2UgaWYgKE5JTFAgKHVuZGVybGluZSkp CisgICAgeworICAgICAgZmFjZS0+dW5kZXJsaW5lID0gRkFDRV9OT19VTkRFUkxJTkU7CisgICAg ICBmYWNlLT51bmRlcmxpbmVfZGVmYXVsdGVkX3AgPSBmYWxzZTsKKyAgICAgIGZhY2UtPnVuZGVy bGluZV9jb2xvciA9IGRlZmF1bHRfY29sb3I7CisgICAgICBmYWNlLT51bmRlcmxpbmVfYXRfZGVz Y2VudF9saW5lX3AgPSBmYWxzZTsKKyAgICAgIGZhY2UtPnVuZGVybGluZV9waXhlbHNfYWJvdmVf ZGVzY2VudF9saW5lID0gMDsKKyAgICB9CisgIGVsc2UgaWYgKENPTlNQICh1bmRlcmxpbmUpKQor ICAgIHsKKyAgICAgIC8qIGAoOmNvbG9yIENPTE9SIDpzdHlsZSBTVFlMRSknLgorICAgICAgICAg U1RZTEUgYmVpbmcgb25lIG9mIGBsaW5lJyBvciBgd2F2ZScuICovCisgICAgICBmYWNlLT51bmRl cmxpbmUgPSBGQUNFX1VOREVSX0xJTkU7CisgICAgICBmYWNlLT51bmRlcmxpbmVfY29sb3IgPSBk ZWZhdWx0X2NvbG9yOworICAgICAgZmFjZS0+dW5kZXJsaW5lX2RlZmF1bHRlZF9wID0gdHJ1ZTsK KyAgICAgIGZhY2UtPnVuZGVybGluZV9hdF9kZXNjZW50X2xpbmVfcCA9IGZhbHNlOworICAgICAg ZmFjZS0+dW5kZXJsaW5lX3BpeGVsc19hYm92ZV9kZXNjZW50X2xpbmUgPSAwOworCisgICAgICAv KiBGSVhNRT8gIFRoaXMgaXMgYWxzbyBub3Qgcm9idXN0IGFib3V0IGNoZWNraW5nIHRoZSBwcmVj aXNlIGZvcm0uCisgICAgICAgICBTZWUgY29tbWVudHMgaW4gRmludGVybmFsX3NldF9saXNwX2Zh Y2VfYXR0cmlidXRlLiAgKi8KKyAgICAgIHdoaWxlIChDT05TUCAodW5kZXJsaW5lKSkKKyAgICAg ICAgeworICAgICAgICAgIExpc3BfT2JqZWN0IGtleXdvcmQsIHZhbHVlOworCisgICAgICAgICAg a2V5d29yZCA9IFhDQVIgKHVuZGVybGluZSk7CisgICAgICAgICAgdW5kZXJsaW5lID0gWENEUiAo dW5kZXJsaW5lKTsKKworICAgICAgICAgIGlmICghQ09OU1AgKHVuZGVybGluZSkpCisgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgICB2YWx1ZSA9IFhDQVIgKHVuZGVybGluZSk7CisgICAgICAg ICAgdW5kZXJsaW5lID0gWENEUiAodW5kZXJsaW5lKTsKKworICAgICAgICAgIGlmIChFUSAoa2V5 d29yZCwgUUNjb2xvcikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGlmIChFUSAodmFs dWUsIFFmb3JlZ3JvdW5kX2NvbG9yKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICBmYWNlLT51bmRlcmxpbmVfZGVmYXVsdGVkX3AgPSB0cnVlOworICAgICAgICAgICAgICAg ICAgZmFjZS0+dW5kZXJsaW5lX2NvbG9yID0gZGVmYXVsdF9jb2xvcjsKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgIGVsc2UgaWYgKFNUUklOR1AgKHZhbHVlKSkKKyAgICAgICAgICAg ICAgICB7CisJCSAgaWYgKHR0eSkKKwkJICAgIGZhY2UtPnVuZGVybGluZV9jb2xvciA9IG1hcF90 dHlfY29sb3IgKGYsIGZhY2UsIExGQUNFX1VOREVSTElORV9JTkRFWCwKKwkJCQkJCQkgICAmZGVm YXVsdGVkLAorCQkJCQkJCSAgIHZhbHVlKTsKKwkJICBlbHNlCisJCSAgICBmYWNlLT51bmRlcmxp bmVfY29sb3IgPSBsb2FkX2NvbG9yIChmLCBmYWNlLCB2YWx1ZSwKKwkJCQkJCQlMRkFDRV9VTkRF UkxJTkVfSU5ERVgpOworICAgICAgICAgICAgICAgICAgZmFjZS0+dW5kZXJsaW5lX2RlZmF1bHRl ZF9wID0gZGVmYXVsdGVkOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg ICAgICBlbHNlIGlmIChFUSAoa2V5d29yZCwgUUNzdHlsZSkpCisgICAgICAgICAgICB7CisgICAg ICAgICAgICAgIGlmIChFUSAodmFsdWUsIFFsaW5lKSkKKyAgICAgICAgICAgICAgICBmYWNlLT51 bmRlcmxpbmUgPSBGQUNFX1VOREVSX0xJTkU7CisgICAgICAgICAgICAgIGVsc2UgaWYgKEVRICh2 YWx1ZSwgUXdhdmUpKQorICAgICAgICAgICAgICAgIGZhY2UtPnVuZGVybGluZSA9IEZBQ0VfVU5E RVJfV0FWRTsKKyAgICAgICAgICAgIH0KKwkgIGVsc2UgaWYgKEVRIChrZXl3b3JkLCBRQ3Bvc2l0 aW9uKSAmJiAhdHR5KQorCSAgICB7CisJICAgICAgZmFjZS0+dW5kZXJsaW5lX2F0X2Rlc2NlbnRf bGluZV9wID0gIU5JTFAgKHZhbHVlKTsKKworCSAgICAgIGlmIChGSVhOQVRQICh2YWx1ZSkpCisJ CWZhY2UtPnVuZGVybGluZV9waXhlbHNfYWJvdmVfZGVzY2VudF9saW5lID0gWEZJWE5BVCAodmFs dWUpOworCSAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKIC8qIFJlYWxpemUgdGhlIGZ1bGx5 LXNwZWNpZmllZCBmYWNlIHdpdGggYXR0cmlidXRlcyBBVFRSUyBpbiBmYWNlCiAgICBjYWNoZSBD QUNIRSBmb3IgQVNDSUkgY2hhcmFjdGVycy4gIERvIGl0IGZvciBHVUkgZnJhbWUgQ0FDSEUtPmYu CiAgICBJZiB0aGUgbmV3IGZhY2UgZG9lc24ndCBzaGFyZSBmb250IHdpdGggdGhlIGRlZmF1bHQg ZmFjZSwgYQpAQCAtNjA0Niw3ICs2MTU4LDcgQEAgcmVhbGl6ZV9ndWlfZmFjZSAoc3RydWN0IGZh Y2VfY2FjaGUgKmNhY2hlLCBMaXNwX09iamVjdCBhdHRyc1tMRkFDRV9WRUNUT1JfU0laRV0KICNp ZmRlZiBIQVZFX1dJTkRPV19TWVNURU0KICAgc3RydWN0IGZhY2UgKmRlZmF1bHRfZmFjZTsKICAg c3RydWN0IGZyYW1lICpmOwotICBMaXNwX09iamVjdCBzdGlwcGxlLCB1bmRlcmxpbmUsIG92ZXJs aW5lLCBzdHJpa2VfdGhyb3VnaCwgYm94OworICBMaXNwX09iamVjdCBzdGlwcGxlLCBvdmVybGlu ZSwgc3RyaWtlX3Rocm91Z2gsIGJveDsKIAogICBlYXNzZXJ0IChGUkFNRV9XSU5ET1dfUCAoY2Fj aGUtPmYpKTsKIApAQCAtNjI0NCw5MCArNjM1Niw3IEBAIHJlYWxpemVfZ3VpX2ZhY2UgKHN0cnVj dCBmYWNlX2NhY2hlICpjYWNoZSwgTGlzcF9PYmplY3QgYXR0cnNbTEZBQ0VfVkVDVE9SX1NJWkVd CiAgICAgfQogCiAgIC8qIFRleHQgdW5kZXJsaW5lLCBvdmVybGluZSwgc3RyaWtlLXRocm91Z2gu ICAqLwotCi0gIHVuZGVybGluZSA9IGF0dHJzW0xGQUNFX1VOREVSTElORV9JTkRFWF07Ci0gIGlm IChFUSAodW5kZXJsaW5lLCBRdCkpCi0gICAgewotICAgICAgLyogVXNlIGRlZmF1bHQgY29sb3Ig KHNhbWUgYXMgZm9yZWdyb3VuZCBjb2xvcikuICAqLwotICAgICAgZmFjZS0+dW5kZXJsaW5lID0g RkFDRV9VTkRFUl9MSU5FOwotICAgICAgZmFjZS0+dW5kZXJsaW5lX2RlZmF1bHRlZF9wID0gdHJ1 ZTsKLSAgICAgIGZhY2UtPnVuZGVybGluZV9jb2xvciA9IDA7Ci0gICAgICBmYWNlLT51bmRlcmxp bmVfYXRfZGVzY2VudF9saW5lX3AgPSBmYWxzZTsKLSAgICAgIGZhY2UtPnVuZGVybGluZV9waXhl bHNfYWJvdmVfZGVzY2VudF9saW5lID0gMDsKLSAgICB9Ci0gIGVsc2UgaWYgKFNUUklOR1AgKHVu ZGVybGluZSkpCi0gICAgewotICAgICAgLyogVXNlIHNwZWNpZmllZCBjb2xvci4gICovCi0gICAg ICBmYWNlLT51bmRlcmxpbmUgPSBGQUNFX1VOREVSX0xJTkU7Ci0gICAgICBmYWNlLT51bmRlcmxp bmVfZGVmYXVsdGVkX3AgPSBmYWxzZTsKLSAgICAgIGZhY2UtPnVuZGVybGluZV9jb2xvcgotCT0g bG9hZF9jb2xvciAoZiwgZmFjZSwgdW5kZXJsaW5lLAotCQkgICAgICBMRkFDRV9VTkRFUkxJTkVf SU5ERVgpOwotICAgICAgZmFjZS0+dW5kZXJsaW5lX2F0X2Rlc2NlbnRfbGluZV9wID0gZmFsc2U7 Ci0gICAgICBmYWNlLT51bmRlcmxpbmVfcGl4ZWxzX2Fib3ZlX2Rlc2NlbnRfbGluZSA9IDA7Ci0g ICAgfQotICBlbHNlIGlmIChOSUxQICh1bmRlcmxpbmUpKQotICAgIHsKLSAgICAgIGZhY2UtPnVu ZGVybGluZSA9IEZBQ0VfTk9fVU5ERVJMSU5FOwotICAgICAgZmFjZS0+dW5kZXJsaW5lX2RlZmF1 bHRlZF9wID0gZmFsc2U7Ci0gICAgICBmYWNlLT51bmRlcmxpbmVfY29sb3IgPSAwOwotICAgICAg ZmFjZS0+dW5kZXJsaW5lX2F0X2Rlc2NlbnRfbGluZV9wID0gZmFsc2U7Ci0gICAgICBmYWNlLT51 bmRlcmxpbmVfcGl4ZWxzX2Fib3ZlX2Rlc2NlbnRfbGluZSA9IDA7Ci0gICAgfQotICBlbHNlIGlm IChDT05TUCAodW5kZXJsaW5lKSkKLSAgICB7Ci0gICAgICAvKiBgKDpjb2xvciBDT0xPUiA6c3R5 bGUgU1RZTEUpJy4KLSAgICAgICAgIFNUWUxFIGJlaW5nIG9uZSBvZiBgbGluZScgb3IgYHdhdmUn LiAqLwotICAgICAgZmFjZS0+dW5kZXJsaW5lID0gRkFDRV9VTkRFUl9MSU5FOwotICAgICAgZmFj ZS0+dW5kZXJsaW5lX2NvbG9yID0gMDsKLSAgICAgIGZhY2UtPnVuZGVybGluZV9kZWZhdWx0ZWRf cCA9IHRydWU7Ci0gICAgICBmYWNlLT51bmRlcmxpbmVfYXRfZGVzY2VudF9saW5lX3AgPSBmYWxz ZTsKLSAgICAgIGZhY2UtPnVuZGVybGluZV9waXhlbHNfYWJvdmVfZGVzY2VudF9saW5lID0gMDsK LQotICAgICAgLyogRklYTUU/ICBUaGlzIGlzIGFsc28gbm90IHJvYnVzdCBhYm91dCBjaGVja2lu ZyB0aGUgcHJlY2lzZSBmb3JtLgotICAgICAgICAgU2VlIGNvbW1lbnRzIGluIEZpbnRlcm5hbF9z ZXRfbGlzcF9mYWNlX2F0dHJpYnV0ZS4gICovCi0gICAgICB3aGlsZSAoQ09OU1AgKHVuZGVybGlu ZSkpCi0gICAgICAgIHsKLSAgICAgICAgICBMaXNwX09iamVjdCBrZXl3b3JkLCB2YWx1ZTsKLQot ICAgICAgICAgIGtleXdvcmQgPSBYQ0FSICh1bmRlcmxpbmUpOwotICAgICAgICAgIHVuZGVybGlu ZSA9IFhDRFIgKHVuZGVybGluZSk7Ci0KLSAgICAgICAgICBpZiAoIUNPTlNQICh1bmRlcmxpbmUp KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgdmFsdWUgPSBYQ0FSICh1bmRlcmxpbmUp OwotICAgICAgICAgIHVuZGVybGluZSA9IFhDRFIgKHVuZGVybGluZSk7Ci0KLSAgICAgICAgICBp ZiAoRVEgKGtleXdvcmQsIFFDY29sb3IpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBp ZiAoRVEgKHZhbHVlLCBRZm9yZWdyb3VuZF9jb2xvcikpCi0gICAgICAgICAgICAgICAgewotICAg ICAgICAgICAgICAgICAgZmFjZS0+dW5kZXJsaW5lX2RlZmF1bHRlZF9wID0gdHJ1ZTsKLSAgICAg ICAgICAgICAgICAgIGZhY2UtPnVuZGVybGluZV9jb2xvciA9IDA7Ci0gICAgICAgICAgICAgICAg fQotICAgICAgICAgICAgICBlbHNlIGlmIChTVFJJTkdQICh2YWx1ZSkpCi0gICAgICAgICAgICAg ICAgewotICAgICAgICAgICAgICAgICAgZmFjZS0+dW5kZXJsaW5lX2RlZmF1bHRlZF9wID0gZmFs c2U7Ci0gICAgICAgICAgICAgICAgICBmYWNlLT51bmRlcmxpbmVfY29sb3IgPSBsb2FkX2NvbG9y IChmLCBmYWNlLCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExGQUNFX1VOREVSTElORV9JTkRFWCk7Ci0gICAgICAgICAgICAgICAg fQotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKEVRIChrZXl3b3JkLCBRQ3N0eWxl KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaWYgKEVRICh2YWx1ZSwgUWxpbmUpKQot ICAgICAgICAgICAgICAgIGZhY2UtPnVuZGVybGluZSA9IEZBQ0VfVU5ERVJfTElORTsKLSAgICAg ICAgICAgICAgZWxzZSBpZiAoRVEgKHZhbHVlLCBRd2F2ZSkpCi0gICAgICAgICAgICAgICAgZmFj ZS0+dW5kZXJsaW5lID0gRkFDRV9VTkRFUl9XQVZFOwotICAgICAgICAgICAgfQotCSAgZWxzZSBp ZiAoRVEgKGtleXdvcmQsIFFDcG9zaXRpb24pKQotCSAgICB7Ci0JICAgICAgZmFjZS0+dW5kZXJs aW5lX2F0X2Rlc2NlbnRfbGluZV9wID0gIU5JTFAgKHZhbHVlKTsKLQotCSAgICAgIGlmIChGSVhO QVRQICh2YWx1ZSkpCi0JCWZhY2UtPnVuZGVybGluZV9waXhlbHNfYWJvdmVfZGVzY2VudF9saW5l ID0gWEZJWE5BVCAodmFsdWUpOwotCSAgICB9Ci0gICAgICAgIH0KLSAgICB9CisgIHJlYWxpemVf dW5kZXJsaW5lX2F0dHJzKGZhY2UsIGNhY2hlLCBhdHRycywgZmFsc2UpOwogCiAgIG92ZXJsaW5l ID0gYXR0cnNbTEZBQ0VfT1ZFUkxJTkVfSU5ERVhdOwogICBpZiAoU1RSSU5HUCAob3ZlcmxpbmUp KQpAQCAtNjM3MywyNCArNjQwMiwyNiBAQCByZWFsaXplX2d1aV9mYWNlIChzdHJ1Y3QgZmFjZV9j YWNoZSAqY2FjaGUsIExpc3BfT2JqZWN0IGF0dHJzW0xGQUNFX1ZFQ1RPUl9TSVpFXQogICAgc3Bl Y2lmaWVzIHdoaWNoIGNvbG9yIHRvIG1hcC4gIFNldCAqREVGQVVMVEVEIHRvIHRydWUgaWYgbWFw cGluZyB0byB0aGUKICAgIGRlZmF1bHQgZm9yZWdyb3VuZC9iYWNrZ3JvdW5kIGNvbG9ycy4gICov CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgdW5zaWduZWQgbG9uZwogbWFwX3R0eV9jb2xvciAoc3Ry dWN0IGZyYW1lICpmLCBzdHJ1Y3QgZmFjZSAqZmFjZSwKLQkgICAgICAgZW51bSBsZmFjZV9hdHRy aWJ1dGVfaW5kZXggaWR4LCBib29sICpkZWZhdWx0ZWQpCisJICAgICAgIGVudW0gbGZhY2VfYXR0 cmlidXRlX2luZGV4IGlkeCwgYm9vbCAqZGVmYXVsdGVkLAorCSAgICAgICBMaXNwX09iamVjdCBj b2xvcikKIHsKLSAgTGlzcF9PYmplY3QgZnJhbWUsIGNvbG9yLCBkZWY7Ci0gIGJvb2wgZm9yZWdy b3VuZF9wID0gaWR4ID09IExGQUNFX0ZPUkVHUk9VTkRfSU5ERVg7CisgIExpc3BfT2JqZWN0IGZy YW1lLCBkZWY7CisgIGJvb2wgZm9yZWdyb3VuZF9wID0gaWR4ICE9IExGQUNFX0JBQ0tHUk9VTkRf SU5ERVg7CiAgIHVuc2lnbmVkIGxvbmcgZGVmYXVsdF9waXhlbCA9CiAgICAgZm9yZWdyb3VuZF9w ID8gRkFDRV9UVFlfREVGQVVMVF9GR19DT0xPUiA6IEZBQ0VfVFRZX0RFRkFVTFRfQkdfQ09MT1I7 CiAgIHVuc2lnbmVkIGxvbmcgcGl4ZWwgPSBkZWZhdWx0X3BpeGVsOwogI2lmZGVmIE1TRE9TCiAg IHVuc2lnbmVkIGxvbmcgZGVmYXVsdF9vdGhlcl9waXhlbCA9Ci0gICAgZm9yZWdyb3VuZF9wID8g RkFDRV9UVFlfREVGQVVMVF9CR19DT0xPUiA6IEZBQ0VfVFRZX0RFRkFVTFRfRkdfQ09MT1I7Cisg ICAgZm9yZWdyb3VuZF9wID8gRkFDRV9UVFlfREVGQVVMVF9CR19DT0xPUiA6IDsKICNlbmRpZgog Ci0gIGVhc3NlcnQgKGlkeCA9PSBMRkFDRV9GT1JFR1JPVU5EX0lOREVYIHx8IGlkeCA9PSBMRkFD RV9CQUNLR1JPVU5EX0lOREVYKTsKKyAgZWFzc2VydCAoaWR4ID09IExGQUNFX0ZPUkVHUk9VTkRf SU5ERVggfHwKKwkgICBpZHggPT0gTEZBQ0VfQkFDS0dST1VORF9JTkRFWCB8fAorCSAgIGlkeCA9 PSBMRkFDRV9VTkRFUkxJTkVfSU5ERVgpOwogCiAgIFhTRVRGUkFNRSAoZnJhbWUsIGYpOwotICBj b2xvciA9IGZhY2UtPmxmYWNlW2lkeF07CiAKICAgaWYgKFNUUklOR1AgKGNvbG9yKQogICAgICAg JiYgU0NIQVJTIChjb2xvcikKQEAgLTY0MTksNyArNjQ1MCw3IEBAIG1hcF90dHlfY29sb3IgKHN0 cnVjdCBmcmFtZSAqZiwgc3RydWN0IGZhY2UgKmZhY2UsCiAJCXBpeGVsID0gRlJBTUVfRk9SRUdS T1VORF9QSVhFTCAoZik7CiAJICAgICAgZWxzZQogCQlwaXhlbCA9IEZSQU1FX0JBQ0tHUk9VTkRf UElYRUwgKGYpOwotCSAgICAgIGZhY2UtPmxmYWNlW2lkeF0gPSB0dHlfY29sb3JfbmFtZSAoZiwg cGl4ZWwpOworCSAgICAgIFhTRVRTVFJJTkcgKGNvbG9yLCB0dHlfY29sb3JfbmFtZSAoZiwgcGl4 ZWwpKTsKIAkgICAgICAqZGVmYXVsdGVkID0gdHJ1ZTsKIAkgICAgfQogCSAgZWxzZSBpZiAocGl4 ZWwgPT0gZGVmYXVsdF9vdGhlcl9waXhlbCkKQEAgLTY0MjgsMjAgKzY0NTksMTYgQEAgbWFwX3R0 eV9jb2xvciAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3QgZmFjZSAqZmFjZSwKIAkJcGl4ZWwgPSBG UkFNRV9CQUNLR1JPVU5EX1BJWEVMIChmKTsKIAkgICAgICBlbHNlCiAJCXBpeGVsID0gRlJBTUVf Rk9SRUdST1VORF9QSVhFTCAoZik7Ci0JICAgICAgZmFjZS0+bGZhY2VbaWR4XSA9IHR0eV9jb2xv cl9uYW1lIChmLCBwaXhlbCk7CisJICAgICAgWFNFVFNUUklORyAoY29sb3IsIHR0eV9jb2xvcl9u YW1lIChmLCBwaXhlbCkpOwogCSAgICAgICpkZWZhdWx0ZWQgPSB0cnVlOwogCSAgICB9CiAJfQog I2VuZGlmIC8qIE1TRE9TICovCiAgICAgfQogCi0gIGlmIChmb3JlZ3JvdW5kX3ApCi0gICAgZmFj ZS0+Zm9yZWdyb3VuZCA9IHBpeGVsOwotICBlbHNlCi0gICAgZmFjZS0+YmFja2dyb3VuZCA9IHBp eGVsOworICByZXR1cm4gcGl4ZWw7CiB9CiAKLQogLyogUmVhbGl6ZSB0aGUgZnVsbHktc3BlY2lm aWVkIGZhY2Ugd2l0aCBhdHRyaWJ1dGVzIEFUVFJTIGluIGZhY2UKICAgIGNhY2hlIENBQ0hFIGZv ciBBU0NJSSBjaGFyYWN0ZXJzLiAgRG8gaXQgZm9yIFRUWSBmcmFtZSBDQUNIRS0+Zi4KICAgIFZh bHVlIGlzIGEgcG9pbnRlciB0byB0aGUgbmV3bHkgY3JlYXRlZCByZWFsaXplZCBmYWNlLiAgKi8K QEAgLTY0NzgsOSArNjUwNSwxNSBAQCByZWFsaXplX3R0eV9mYWNlIChzdHJ1Y3QgZmFjZV9jYWNo ZSAqY2FjaGUsCiAgIGlmICghTklMUCAoYXR0cnNbTEZBQ0VfU1RSSUtFX1RIUk9VR0hfSU5ERVhd KSkKICAgICBmYWNlLT50dHlfc3RyaWtlX3Rocm91Z2hfcCA9IHRydWU7CiAKKyAgcmVhbGl6ZV91 bmRlcmxpbmVfYXR0cnMgKGZhY2UsIGNhY2hlLCBhdHRycywgdHJ1ZSk7CisKICAgLyogTWFwIGNv bG9yIG5hbWVzIHRvIGNvbG9yIGluZGljZXMuICAqLwotICBtYXBfdHR5X2NvbG9yIChmLCBmYWNl LCBMRkFDRV9GT1JFR1JPVU5EX0lOREVYLCAmZmFjZV9jb2xvcnNfZGVmYXVsdGVkKTsKLSAgbWFw X3R0eV9jb2xvciAoZiwgZmFjZSwgTEZBQ0VfQkFDS0dST1VORF9JTkRFWCwgJmZhY2VfY29sb3Jz X2RlZmF1bHRlZCk7CisgIGZhY2UtPmZvcmVncm91bmQgPSBtYXBfdHR5X2NvbG9yIChmLCBmYWNl LCBMRkFDRV9GT1JFR1JPVU5EX0lOREVYLAorCQkJCSAgICAmZmFjZV9jb2xvcnNfZGVmYXVsdGVk LAorCQkJCSAgICBmYWNlLT5sZmFjZVtMRkFDRV9GT1JFR1JPVU5EX0lOREVYXSk7CisgIGZhY2Ut PmJhY2tncm91bmQgPSBtYXBfdHR5X2NvbG9yIChmLCBmYWNlLCBMRkFDRV9CQUNLR1JPVU5EX0lO REVYLAorCQkJCSAgICAmZmFjZV9jb2xvcnNfZGVmYXVsdGVkLAorCQkJCSAgICBmYWNlLT5sZmFj ZVtMRkFDRV9CQUNLR1JPVU5EX0lOREVYXSk7CiAKICAgLyogU3dhcCBjb2xvcnMgaWYgZmFjZSBp cyBpbnZlcnNlLXZpZGVvLiAgSWYgdGhlIGNvbG9ycyBhcmUgdGFrZW4KICAgICAgZnJvbSB0aGUg ZnJhbWUgY29sb3JzLCB0aGV5IGFyZSBhbHJlYWR5IGludmVydGVkLCBzaW5jZSB0aGUKLS0gCjIu MzkuMAoK --0000000000006f87c805f074cf31 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-Allow-user-enabled-tty-underline-style-color.patch" Content-Disposition: attachment; filename="0002-Allow-user-enabled-tty-underline-style-color.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lbztu22b1 RnJvbSBkMjMyYzBiMjA5ZWU0NDdlYzhiNDBiZTRhYWNiNTlkMzM5ZDkyMjc3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFNjaHdhbG0gPGFkYW1zY2h3YWxtQGdtYWlsLmNvbT4K RGF0ZTogTW9uLCAxOSBEZWMgMjAyMiAxODo1NzoxMSAtMDYwMApTdWJqZWN0OiBbUEFUQ0ggMi8y XSBBbGxvdyB1c2VyLWVuYWJsZWQgdHR5IHVuZGVybGluZSBzdHlsZS9jb2xvcgoKVXNlcnMgY2Fu IG5vdyBleHBsaWNpdGx5IGVuYWJsZSB1bmRlcmxpbmUgc3R5bGUgb3IgY29sb3Igc3VwcG9ydCwK ZXZlbiBpZiB0aGVpciB0ZXJtaW5hbCdzIGRvZXMgbm90IHNlZW0gdG8gc3VwcG9ydCBpdC4gIFRo ZSBjb250cm9sCnNxdWVuY2UgdXNlZCB3aGVuIGEgdXNlciBlbmFibGVzIHRoZSB1bmRlcmxpbmUg Y29sb3Ivc3R5bGUgZmVhdHVyZQp0aGlzIHdheSBpcyB0aGUgbW9zdCB3aWRlbHkgc3VwcG9ydGVk IHNlcXVlbmNlIGN1cnJlbnRseS4gIEZvcgp1bmRlcmxpbmUgc3R5bGUsIENTSSA0IDogPG4+IG0g aXMgdXNlZCBhbmQgZm9yIHVuZGVybGluZSBjb2xvciwgQ1NJCjU4IDogMiA6OiA8cj4gOiA8Zz4g OiA8Yj4gbSBpcyB1c2VkIChpZiB0aGUgdGVybWluYWwgc3VwcG9ydHMgJ3RydWUnCmNvbG9yLiBP dGhlcndpc2UsIHRoZSBjb2xvciBwYWxsZXRlIHZlcnNpb24gaXMgdXNlZDogNTggOiA1IDogPG4+ IG0pLgotLS0KIHNyYy90ZXJtLmMgfCA1NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA1NiBpbnNlcnRpb25zKCsp CgpkaWZmIC0tZ2l0IGEvc3JjL3Rlcm0uYyBiL3NyYy90ZXJtLmMKaW5kZXggMzA2YzU3MzM4Yi4u ZmZjNWNhNmZlMCAxMDA2NDQKLS0tIGEvc3JjL3Rlcm0uYworKysgYi9zcmMvdGVybS5jCkBAIC0x MTUsNiArMTE1LDEwIEBAICNkZWZpbmUgT1VUUFVUMV9JRih0dHksIGEpIGRvIHsgaWYgKGEpIGVt YWNzX3RwdXRzICgodHR5KSwgYSwgMSwgY21wdXRjKTsgfSB3aGlsCiAgIE5DX1BST1RFQ1QJCSA9 IDEgPDwgNwogfTsKIAorc3RhdGljIGJvb2wgdGVybV9pc18yNGJpdCAoc3RydWN0IHR0eV9kaXNw bGF5X2luZm8gKnR0eSkKK3sKKyAgcmV0dXJuIHR0eS0+VE5fbWF4X2NvbG9ycyA9PSAxNjc3NzIx NjsKK30KIAogZW51bSB0dHlfdW5kZXJsaW5lX3R5cGUKIHsKQEAgLTIyODAsNiArMjI4NCw1NiBA QCBERUZVTiAoImNvbnRyb2xsaW5nLXR0eS1wIiwgRmNvbnRyb2xsaW5nX3R0eV9wLCBTY29udHJv bGxpbmdfdHR5X3AsIDAsIDEsIDAsCiAgIHJldHVybiAodCAmJiAhc3RyY21wICh0LT5kaXNwbGF5 X2luZm8udHR5LT5uYW1lLCBERVZfVFRZKSA/IFF0IDogUW5pbCk7CiB9CiAKK0RFRlVOICgidHR5 LWFsbG93LXVuZGVybGluZS1jb2xvciIsIEZ0dHlfYWxsb3dfdW5kZXJsaW5lX2NvbG9yLAorICAg ICAgIFN0dHlfYWxsb3dfdW5kZXJsaW5lX2NvbG9yLCAwLCAxLCAwLAorICAgICAgIGRvYzogLyog RGVjbGFyZSB0aGF0IHRoZSB0dHkgdXNlZCBieSBURVJNSU5BTCBzdXBwb3J0cyB1bmRlcmxpbmUg Y29sb3JzLgorVGhpcyBpcyB1c2VkIHRvIG92ZXJyaWRlIHRoZSB0ZXJtaW5mbyBkYXRhLCBmb3Ig Y2VydGFpbiB0ZXJtaW5hbHMgdGhhdAorc3VwcG9ydCB1bmRlcmxpbmUgd2l0aCBjb2xvcnMgdGhh dCBkaWZmZXIgZnJvbSB0aGUgZm9yZWdyb3VuZCBvciBiYWNrZ3JvdW5kCitjb2xvcnMsIGJ1dCBk byBub3Qgc3BlY2lmeSB0aGF0IHN1cHBvcnQgaW4gYSBzdGFuZGFyZCB3YXkuICBUaGlzIGZ1bmN0 aW9uIGhhcworbm8gZWZmZWN0IGlmIHVzZWQgb24gYSBub24tdHR5IHRlcm1pbmFsLgorCitURVJN SU5BTCBjYW4gYmUgYSB0ZXJtaW5hbCBvYmplY3QsIGEgZnJhbWUgb3IgbmlsIChtZWFuaW5nIHRo ZQorc2VsZWN0ZWQgZnJhbWUncyB0ZXJtaW5hbCkuICBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1 cm5zIG5pbCBpZgorVEVSTUlOQUwgZG9lcyBub3QgcmVmZXIgdG8gYSB0ZXh0IHRlcm1pbmFsLiAg Ki8pCisgIChMaXNwX09iamVjdCB0ZXJtaW5hbCkKK3sKKyAgc3RydWN0IHRlcm1pbmFsICp0ID0g ZGVjb2RlX2xpdmVfdGVybWluYWwgKHRlcm1pbmFsKTsKKworICBpZiAodC0+dHlwZSA9PSBvdXRw dXRfdGVybWNhcCkKKyAgICB7CisgICAgICBpZiAoIXQtPmRpc3BsYXlfaW5mby50dHktPlRTX3Nl dF91bmRlcmxpbmVfY29sb3IpCisJeworCSAgaWYgKHRlcm1faXNfMjRiaXQgKHQtPmRpc3BsYXlf aW5mby50dHkpKQorCSAgICB0LT5kaXNwbGF5X2luZm8udHR5LT5UU19zZXRfdW5kZXJsaW5lX2Nv bG9yID0gIlwwMzNbNTg6Mjo6JXAxJXs2NTUzNn0lLyVkOiVwMSV7MjU2fSUvJXsyNTV9JSYlZDol cDElezI1NX0lJiVkJTttIjsKKwkgIGVsc2UKKwkgICAgdC0+ZGlzcGxheV9pbmZvLnR0eS0+VFNf c2V0X3VuZGVybGluZV9jb2xvciA9ICJcMDMzWzU4OjU6JWRtIjsKKwl9CisKKyAgICAgIGlmICgh dC0+ZGlzcGxheV9pbmZvLnR0eS0+VFNfc2V0X3VuZGVybGluZV9jb2xvcikKKwl0LT5kaXNwbGF5 X2luZm8udHR5LT5UU19yZXNldF91bmRlcmxpbmVfY29sb3IgPSAiXDAzM1s1OW0iOworICAgIH0K KyAgcmV0dXJuIFFuaWw7Cit9CisKK0RFRlVOICgidHR5LWFsbG93LXVuZGVybGluZS1zdHlsZSIs IEZ0dHlfYWxsb3dfdW5kZXJsaW5lX3N0eWxlLAorICAgICAgIFN0dHlfYWxsb3dfdW5kZXJsaW5l X3N0eWxlLCAwLCAxLCAwLAorICAgICAgIGRvYzogLyogRGVjbGFyZSB0aGF0IHRoZSB0dHkgdXNl ZCBieSBURVJNSU5BTCBzdXBwb3J0cyB1bmRlcmxpbmUgc3R5bGVzLgorVGhpcyBpcyB1c2VkIHRv IG92ZXJyaWRlIHRoZSB0ZXJtaW5mbyBkYXRhLCBmb3IgY2VydGFpbiB0ZXJtaW5hbHMgdGhhdAor c3VwcG9ydCB1bmRlcmxpbmUgc3R5bGVzIHN1Y2ggYXMgJ3dhdmVzJywgYnV0IGRvIG5vdCBzcGVj aWZ5IHRoYXQgc3VwcG9ydAoraW4gYSBzdGFuZGFyZCB3YXkuICBUaGlzIGZ1bmN0aW9uIGhhcyBu byBlZmZlY3QgaWYgdXNlZCBvbiBhIG5vbi10dHkgdGVybWluYWwuCisKK1RFUk1JTkFMIGNhbiBi ZSBhIHRlcm1pbmFsIG9iamVjdCwgYSBmcmFtZSBvciBuaWwgKG1lYW5pbmcgdGhlCitzZWxlY3Rl ZCBmcmFtZSdzIHRlcm1pbmFsKS4gIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgbmlsIGlm CitURVJNSU5BTCBkb2VzIG5vdCByZWZlciB0byBhIHRleHQgdGVybWluYWwuICAqLykKKyAgKExp c3BfT2JqZWN0IHRlcm1pbmFsKQoreworICBzdHJ1Y3QgdGVybWluYWwgKnQgPSBkZWNvZGVfbGl2 ZV90ZXJtaW5hbCAodGVybWluYWwpOworCisgIGlmICh0LT50eXBlID09IG91dHB1dF90ZXJtY2Fw ICYmICF0LT5kaXNwbGF5X2luZm8udHR5LT5UU19zZXRfdW5kZXJsaW5lX3N0eWxlKQorICAgIHQt PmRpc3BsYXlfaW5mby50dHktPlRTX3NldF91bmRlcmxpbmVfc3R5bGUgPSAiXDAzM1s0OiVwMSVk bSI7CisgIHJldHVybiBRbmlsOworfQorCiBERUZVTiAoInR0eS1uby11bmRlcmxpbmUiLCBGdHR5 X25vX3VuZGVybGluZSwgU3R0eV9ub191bmRlcmxpbmUsIDAsIDEsIDAsCiAgICAgICAgZG9jOiAv KiBEZWNsYXJlIHRoYXQgdGhlIHR0eSB1c2VkIGJ5IFRFUk1JTkFMIGRvZXMgbm90IGhhbmRsZSB1 bmRlcmxpbmluZy4KIFRoaXMgaXMgdXNlZCB0byBvdmVycmlkZSB0aGUgdGVybWluZm8gZGF0YSwg Zm9yIGNlcnRhaW4gdGVybWluYWxzIHRoYXQKQEAgLTQ2NzEsNiArNDcyNSw4IEBAIHN5bXNfb2Zf dGVybSAodm9pZCkKIAogICBkZWZzdWJyICgmU3R0eV9kaXNwbGF5X2NvbG9yX3ApOwogICBkZWZz dWJyICgmU3R0eV9kaXNwbGF5X2NvbG9yX2NlbGxzKTsKKyAgZGVmc3ViciAoJlN0dHlfYWxsb3df dW5kZXJsaW5lX2NvbG9yKTsKKyAgZGVmc3ViciAoJlN0dHlfYWxsb3dfdW5kZXJsaW5lX3N0eWxl KTsKICAgZGVmc3ViciAoJlN0dHlfbm9fdW5kZXJsaW5lKTsKICAgZGVmc3ViciAoJlN0dHlfdHlw ZSk7CiAgIGRlZnN1YnIgKCZTY29udHJvbGxpbmdfdHR5X3ApOwotLSAKMi4zOS4wCgo= --0000000000006f87c805f074cf31--