From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0 ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id /R5YJLvql2ARewEAgWs5BA (envelope-from ) for ; Sun, 09 May 2021 15:59:23 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0 with LMTPS id 4HKIH7vql2ChMwAA1q6Kng (envelope-from ) for ; Sun, 09 May 2021 13:59:23 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id D8FCDDB37 for ; Sun, 9 May 2021 15:59:22 +0200 (CEST) Received: from localhost ([::1]:44738 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lfjxo-0005ks-UK for larch@yhetil.org; Sun, 09 May 2021 09:59:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59482) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lfjwX-0005kS-W9; Sun, 09 May 2021 09:58:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:43899) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lfjwX-0001CO-Nc; Sun, 09 May 2021 09:58:01 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lfjwX-000643-Km; Sun, 09 May 2021 09:58:01 -0400 X-Loop: help-debbugs@gnu.org Subject: bug#48149: 27.2; Wrong underline width when the line char has a width of 2 Resent-From: Shingo Tanaka Original-Sender: "Debbugs-submit" Resent-CC: emacs-orgmode@gnu.org, bug-gnu-emacs@gnu.org Resent-Date: Sun, 09 May 2021 13:58:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 48149 X-GNU-PR-Package: org-mode,emacs X-GNU-PR-Keywords: To: Eli Zaretskii X-Debbugs-Original-Cc: bug-gnu-emacs@gnu.org, shingo.fg8@gmail.com, Nicolas Goaziou , 48149@debbugs.gnu.org Received: via spool by submit@debbugs.gnu.org id=B.162056867623295 (code B ref -1); Sun, 09 May 2021 13:58:01 +0000 Received: (at submit) by debbugs.gnu.org; 9 May 2021 13:57:56 +0000 Received: from localhost ([127.0.0.1]:55442 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lfjwR-00063b-Mj for submit@debbugs.gnu.org; Sun, 09 May 2021 09:57:56 -0400 Received: from lists.gnu.org ([209.51.188.17]:46054) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lfjwO-00063U-DE for submit@debbugs.gnu.org; Sun, 09 May 2021 09:57:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59386) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lfjwO-0005WO-4x for bug-gnu-emacs@gnu.org; Sun, 09 May 2021 09:57:52 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]:35821) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lfjwM-000134-Cx; Sun, 09 May 2021 09:57:51 -0400 Received: by mail-pf1-x430.google.com with SMTP id i13so11943642pfu.2; Sun, 09 May 2021 06:57:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:message-id:from:to:cc:subject:in-reply-to:references :user-agent:mime-version; bh=xy4JIk1MI8Y45axuEJilXN4v6VHkYgogSV4xnQzyMrY=; b=KM+HqAMRhaLZ34gyBoSv8votlwI2TeVtx/ohelWQyMqDbhaqXqTXDLBnn3Ac4CzYYn WZpDJuSu6LPJO1OjeRGXtdHDepdjFdpiy3r/VlRfLHofQnv03dftTxSWFa+yCZyutwRb IRtN87FcOf9bRdA/5gLh+xS0H7EqraGr34wG+hBhb08bcZHxghNjM/u6ORpDAlGPoIKj 16XDfZFKo8dak1foKYK5EX7c71Zu+C1/OXzI0oT92brgrHgjwGMcmBWwExkUGA4mU++K b9C24SvcL5QzaD5JfpMak8d/Y2GZbWvgZNQuvWZ0mdaYNTSh388Zra+EUXdxIkIg174K +yUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:from:to:cc:subject:in-reply-to :references:user-agent:mime-version; bh=xy4JIk1MI8Y45axuEJilXN4v6VHkYgogSV4xnQzyMrY=; b=mZS01x9wnxB2sscahGYajlykF30Bm17WjR+IKR0y5TF3wb4q7T73kS6xgR7LvcAEoq 25Na2QmR/NzPnxD7l2hFgChJtLJeyGTUDRTh9ymV1xpfAls6jI2C1kklxqBD2/aZ6wJp YaMbFQX+wWibKwrFqAblYmaOhYzStWC0AugprAJPgusn7rcQwTtYl3POJmxwWBq+LHCL 8lrGxzRdGLGsf/c9P+zO/g1qeqF96Zv+jXurYbhIjs9jVZkiHNkr2Qpo9wglwoEiDb9e cFibFrCIen703bBsI5K46KJDhuM7so2g2Mk/y+897LAIzDY3XOuYknTyOBLvcMRICzvH YARg== X-Gm-Message-State: AOAM5332anEsfFg6CKgaT30tgC7Jd2Pf+3B617OFYJ+CCnmlImnPMPFP z2w+lNUFUzOjTZx4bAW8BZmk3HhozEcVVw== X-Google-Smtp-Source: ABdhPJyy9vuDB6XCqGXjz9dXNmXS+XQpfP0qvNzn0T5d75ITCX70B/tZNbwCBWTOteXNC5BABudITw== X-Received: by 2002:a63:5fc5:: with SMTP id t188mr20364480pgb.228.1620568667489; Sun, 09 May 2021 06:57:47 -0700 (PDT) Received: from shingo-desktop.gmail.com ([240d:1a:6f4:6b00:5514:ce7d:f5f9:375b]) by smtp.gmail.com with ESMTPSA id mr3sm16790713pjb.20.2021.05.09.06.57.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 May 2021 06:57:46 -0700 (PDT) Date: Sun, 09 May 2021 22:57:43 +0900 Message-ID: <87eeegc8mg.wl-shingo.fg8@gmail.com> From: Shingo Tanaka In-Reply-To: <83im416r6h.fsf@gnu.org> References: <87fsz62b1w.wl-shingo.fg8@gmail.com> <87a6pd86el.fsf@nicolasgoaziou.fr> <83im416r6h.fsf@gnu.org> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?UTF-8?Q?Goj=C5=8D?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/27.2 (aarch64-unknown-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: multipart/mixed; boundary="Multipart_Sun_May__9_22:57:41_2021-1" Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=shingo.fg8@gmail.com; helo=mail-pf1-x430.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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_ENVFROM_END_DIGIT=0.25, 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-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: emacs-orgmode@gnu.org List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: shingo.fg8@gmail.com, mail@nicolasgoaziou.fr, 48149@debbugs.gnu.org Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1620568763; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post: dkim-signature; bh=xy4JIk1MI8Y45axuEJilXN4v6VHkYgogSV4xnQzyMrY=; b=Da8Tmw86/C9c2+qajT1OqgGrO+O4lDM8c1Cy6pGHXAwBAtfS/gtZCr8FZMHIzhZguYsb+1 I71qex95q2tAMFu8okFxx+3KuUecgkB8XliwBh4kz8VAmiO8WxGYf6LAe5HnwKILuRUxRy 9pTsh5ZkuXxGd1n5c2nnsUmebJQQMRgP+idCyfkcgt/eEXDCIDzf5Zy+1geORUayOiVYHi 0ZxxMqDwa73rf/UL3cDyLYx5jp6D0ubOkChqelkwyQILqYCY4Vzf+SoOqpypAnIqUPkhSt vTGKuSv2e5jhD7tG6KWD7nW8s0RI6D764mjro86C6x49Lrxd5ys2fcbVxVz3oQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1620568763; a=rsa-sha256; cv=none; b=TNCIkUhNFtG1A/swcAibnzw2oXaUVexyMPbvlu5jaLAKYzpsSW95YQk9lqPPHPcQaPIr2V meWq3TRdWqE1F/8IU5t8FwcFNVepl3U9Iq+0tG/jnwGWH+GZ5YUoGiljVq0sIRZj+UCbUr zi7VPUJnSA2k6JqI2EMy5qRWd9qEWMktGkVRW5UAtSNGbNCQLXnZkWBFp4gMnPbfbB/Gie 24mBKLcgw5xZi51uYZMQCyq0X8yC/iH3H6pzUUxXfTkE+qu7+veekeS3R8+qlPZ3knmV5E FAnMWEy7f6sSeFFe/3cSMZS4vvfpuNElJkm7VYvR6qzp+e9nRSySsI0T3Y1s5g== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20161025 header.b=KM+HqAMR; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Migadu-Spam-Score: 0.15 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20161025 header.b=KM+HqAMR; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Migadu-Queue-Id: D8FCDDB37 X-Spam-Score: 0.15 X-Migadu-Scanner: scn0.migadu.com X-TUID: QD8996eNTGzJ --Multipart_Sun_May__9_22:57:41_2021-1 Content-Type: text/plain; charset=ISO-2022-JP Hi, > Please note that using char-width cannot solve the problem of a > character whose width depends on the font, because char-width is > oblivious to fonts, it only knows about the character's codepoint. I updated my patch proposal as attached to use window-text-pixel-size based on Eli's advice. Could you check it to see if it meets the expectation? It works good in my environment with some fonts of different char widths. Here are some comments: - New internal functions org-ascii--make-string and org-ascii--pixel-width are introduced just to improve code readability of this modification - Line width is decided by org-ascii--make-string, which is a pixel width based make-string - org-ascii--make-string uses org-ascii--pixel-width, which returns actual pixel width of characters and strings by using window-text-pixel-size with frame default font - Line justification is also modified to be a pixel width basis Since this is not a simple modification, I think we might need further improvement, so any feedback is appreciated. Especially, we could do better for table alignment, as that is not very easy because the pixel width of line character and that of space character is not always the same. Anyway, I appreciate it if you can give it a try. I am doing FSF signing process in parallel just in case. --- Shingo Tanaka On Mon, 03 May 2021 01:23:02 +0900, Eli Zaretskii wrote: > > > From: Nicolas Goaziou > > Date: Sun, 02 May 2021 18:08:50 +0200 > > Cc: 48149@debbugs.gnu.org > > > > > In case of 1), it correctly takes account of the case in which the character > > > has a width of 2 in `org-ascii--build-title', by dividing the line width by > > > `(char-width under-char)' (line 700-701), maybe because the character is user > > > configurable and its width in unknown. However, in case of 2) and > > > 3), maybe because the characters is embedded in the code, it looks like only > > > considering the character always has a width of 1. But the reality is > > > character ?─ or ?━ can have a width of 2 in the screen displayed with some > > > fonts (ex. "Noto Sans Mono CJK JP"), and in that case the line width gets > > > doubled of the expected width. > > > > > > Attached one is a potential patch. The basic concepts are: > > > > > > a) Do the same in case of 2) and 3) as in case of 1) > > > (dividing the line width by `(char-width under-char)', > > > assuming `char-width-table' is correctly set) > > > > > > b) Prefer the longer line width if the width is odd, even in case of 1) > > > (adding `(1- (char-width under-char))' to dividend, > > > just because it should be more beautiful ;-) ) > > > > Thank you. This looks good. I cannot apply it on "maint" branch, > > however. Also, a proper commit message would be nice. Could you send an > > updated patch? > > Please note that using char-width cannot solve the problem of a > character whose width depends on the font, because char-width is > oblivious to fonts, it only knows about the character's codepoint. --Multipart_Sun_May__9_22:57:41_2021-1 Content-Type: application/octet-stream; type=patch Content-Disposition: attachment; filename="ox-ascii.el.patch" Content-Transfer-Encoding: base64 LS0tIG94LWFzY2lpLmVsLm9yZwkyMDIxLTAzLTI2IDA5OjI4OjQ0LjAwMDAwMDAwMCArMDkwMAor Kysgb3gtYXNjaWkuZWwJMjAyMS0wNS0wOSAxNzoyMzo0MC40MjE5MTI5MzEgKzA5MDAKQEAgLTQ0 MCw4ICs0NDAsMTEgQEAKIDs7IGBvcmctYXNjaWktLWRlc2NyaWJlLWxpbmtzJyBjcmVhdGVzIG5v dGVzIGFib3V0IGxpbmtzIGZvcgogOzsgaW5zZXJ0aW9uIGF0IHRoZSBlbmQgb2YgYSBzZWN0aW9u LiAgSXQgdXNlcwogOzsgYG9yZy1hc2NpaS0tdW5pcXVlLWxpbmtzJyB0byBnZXQgdGhlIGxpc3Qg b2YgbGlua3MgdG8gZGVzY3JpYmUuCi07OyBFdmVudHVhbGx5LCBgb3JnLWFzY2lpLS10cmFuc2xh dGUnIHRyYW5zbGF0ZXMgYSBzdHJpbmcgYWNjb3JkaW5nCis7OyBgb3JnLWFzY2lpLS10cmFuc2xh dGUnIHRyYW5zbGF0ZXMgYSBzdHJpbmcgYWNjb3JkaW5nCiA7OyB0byBsYW5ndWFnZSBhbmQgY2hh cnNldCBzcGVjaWZpY2F0aW9uLgorOzsgYG9yZy1hc2NpaS0tbWFrZS1zdHJpbmcnIHByb3ZpZGVz IHBpeGVsIHdpZHRoIGJhc2VkIGBtYWtlLXN0cmluZycgZm9yCis7OyBiZXR0ZXIgdGV4dCBhbGln bm1lbnQsIGJ5IHVzaW5nIGBvcmctYXNjaWktLXBpeGVsLXdpZHRoJyB3aGljaCByZXR1cm5zCis7 OyBhY3R1YWwgcGl4ZWwgd2lkdGggb2YgY2hhcmFjdGVycyBhbmQgc3RyaW5ncy4KIAogCiAoZGVm dW4gb3JnLWFzY2lpLS1maWxsLXN0cmluZyAocyB0ZXh0LXdpZHRoIGluZm8gJm9wdGlvbmFsIGp1 c3RpZnkpCkBAIC00ODEsOSArNDg0LDE5IEBACiAgICAgKGxldCAoKGZpbGwtY29sdW1uIHRleHQt d2lkdGgpCiAJICA7OyBEaXNhYmxlIGBhZGFwdGl2ZS1maWxsLW1vZGUnIHNvIGl0IGRvZXNuJ3Qg cHJldmVudAogCSAgOzsgZmlsbGluZyBsaW5lcyBtYXRjaGluZyBgYWRhcHRpdmUtZmlsbC1yZWdl eHAnLgotCSAgKGFkYXB0aXZlLWZpbGwtbW9kZSBuaWwpKQorCSAgKGFkYXB0aXZlLWZpbGwtbW9k ZSBuaWwpCisgICAgICAgICAgbGluZXN0ciBwd2lkdGgpCiAgICAgICAod2hpbGUgKDwgKHBvaW50 KSAocG9pbnQtbWF4KSkKLQkoanVzdGlmeS1jdXJyZW50LWxpbmUgaG93KQorICAgICAgICAoc2V0 cSBsaW5lc3RyIChidWZmZXItc3Vic3RyaW5nIChwb2ludCkgKGxpbmUtZW5kLXBvc2l0aW9uKSkK KyAgICAgICAgICAgICAgcHdpZHRoIChtYXggKC0gKCogKG9yZy1hc2NpaS0tcGl4ZWwtd2lkdGgg P1xzKSB0ZXh0LXdpZHRoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3JnLWFzY2lp LS1waXhlbC13aWR0aCBsaW5lc3RyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMCkpCisg ICAgICAgIChpbnNlcnQgKG9yZy1hc2NpaS0tbWFrZS1zdHJpbmcgKHBjYXNlIGhvdworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGBsZWZ0IDApCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYGNlbnRlciAoLyBwd2lkdGggMikpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYHJpZ2h0IHB3aWR0aCkp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xzIDAgKC0gdGV4dC13 aWR0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz dHJpbmctd2lkdGggbGluZXN0cikpKSkKIAkoZm9yd2FyZC1saW5lKSkpCiAgICAgKGJ1ZmZlci1z dHJpbmcpKSkKIApAQCAtNjk3LDkgKzcxMCw4IEBACiAJCQkgICAgICAocGxpc3QtZ2V0IGluZm8g OmFzY2lpLXVuZGVybGluZSkpKSkpKQogCSAoYW5kIHVuZGVyLWNoYXIKIAkgICAgICAoY29uY2F0 ICJcbiIKLQkJICAgICAgKG1ha2Utc3RyaW5nICgvIChzdHJpbmctd2lkdGggZmlyc3QtcGFydCkK LQkJCQkgICAgICAoY2hhci13aWR0aCB1bmRlci1jaGFyKSkKLQkJCQkgICB1bmRlci1jaGFyKSkp KSkpKSkKKwkJICAgICAgKG9yZy1hc2NpaS0tbWFrZS1zdHJpbmcKKyAgICAgICAgICAgICAgICAg ICAgICAgKG9yZy1hc2NpaS0tcGl4ZWwtd2lkdGggZmlyc3QtcGFydCkgdW5kZXItY2hhcikpKSkp KSkpCiAKIChkZWZ1biBvcmctYXNjaWktLWhhcy1jYXB0aW9uLXAgKGVsZW1lbnQgX2luZm8pCiAg ICJOb24tbmlsIHdoZW4gRUxFTUVOVCBoYXMgYSBjYXB0aW9uIGFmZmlsaWF0ZWQga2V5d29yZC4K QEAgLTc1MCw5ICs3NjIsOSBAQAogICAgKHVubGVzcyBzY29wZQogICAgICAobGV0ICgodGl0bGUg KG9yZy1hc2NpaS0tdHJhbnNsYXRlICJUYWJsZSBvZiBDb250ZW50cyIgaW5mbykpKQogICAgICAg IChjb25jYXQgdGl0bGUgIlxuIgotCSAgICAgICAobWFrZS1zdHJpbmcKLQkJKHN0cmluZy13aWR0 aCB0aXRsZSkKLQkJKGlmIChlcSAocGxpc3QtZ2V0IGluZm8gOmFzY2lpLWNoYXJzZXQpICd1dGYt OCkgP+KUgCA/XykpCisgICAgICAgICAgICAgICAob3JnLWFzY2lpLS1tYWtlLXN0cmluZworICAg ICAgICAgICAgICAgIChvcmctYXNjaWktLXBpeGVsLXdpZHRoIHRpdGxlKQorICAgICAgICAgICAg ICAgIChpZiAoZXEgKHBsaXN0LWdldCBpbmZvIDphc2NpaS1jaGFyc2V0KSAndXRmLTgpID/ilIAg P18pKQogCSAgICAgICAiXG5cbiIpKSkKICAgIChsZXQgKCh0ZXh0LXdpZHRoCiAJICAoaWYga2V5 d29yZCAob3JnLWFzY2lpLS1jdXJyZW50LXRleHQtd2lkdGgga2V5d29yZCBpbmZvKQpAQCAtNzc5 LDggKzc5MSw5IEBACiAgIChsZXQgKCh0aXRsZSAob3JnLWFzY2lpLS10cmFuc2xhdGUgIkxpc3Qg b2YgTGlzdGluZ3MiIGluZm8pKSkKICAgICAoY29uY2F0CiAgICAgIHRpdGxlICJcbiIKLSAgICAg KG1ha2Utc3RyaW5nIChzdHJpbmctd2lkdGggdGl0bGUpCi0JCSAgKGlmIChlcSAocGxpc3QtZ2V0 IGluZm8gOmFzY2lpLWNoYXJzZXQpICd1dGYtOCkgP+KUgCA/XykpCisgICAgIChvcmctYXNjaWkt LW1ha2Utc3RyaW5nCisgICAgICAob3JnLWFzY2lpLS1waXhlbC13aWR0aCB0aXRsZSkKKyAgICAg IChpZiAoZXEgKHBsaXN0LWdldCBpbmZvIDphc2NpaS1jaGFyc2V0KSAndXRmLTgpID/ilIAgP18p KQogICAgICAiXG5cbiIKICAgICAgKGxldCAoKHRleHQtd2lkdGgKIAkgICAgKGlmIGtleXdvcmQg KG9yZy1hc2NpaS0tY3VycmVudC10ZXh0LXdpZHRoIGtleXdvcmQgaW5mbykKQEAgLTgxOSw4ICs4 MzIsOSBAQAogICAobGV0ICgodGl0bGUgKG9yZy1hc2NpaS0tdHJhbnNsYXRlICJMaXN0IG9mIFRh YmxlcyIgaW5mbykpKQogICAgIChjb25jYXQKICAgICAgdGl0bGUgIlxuIgotICAgICAobWFrZS1z dHJpbmcgKHN0cmluZy13aWR0aCB0aXRsZSkKLQkJICAoaWYgKGVxIChwbGlzdC1nZXQgaW5mbyA6 YXNjaWktY2hhcnNldCkgJ3V0Zi04KSA/4pSAID9fKSkKKyAgICAgKG9yZy1hc2NpaS0tbWFrZS1z dHJpbmcKKyAgICAgIChvcmctYXNjaWktLXBpeGVsLXdpZHRoIHRpdGxlKQorICAgICAgKGlmIChl cSAocGxpc3QtZ2V0IGluZm8gOmFzY2lpLWNoYXJzZXQpICd1dGYtOCkgP+KUgCA/XykpCiAgICAg ICJcblxuIgogICAgICAobGV0ICgodGV4dC13aWR0aAogCSAgICAoaWYga2V5d29yZCAob3JnLWFz Y2lpLS1jdXJyZW50LXRleHQtd2lkdGgga2V5d29yZCBpbmZvKQpAQCAtMTAzMyw3ICsxMDQ3LDcg QEAKIAkgICAgIDs7IEZvcm1hdCBUSVRMRS4gIEl0IG1heSBiZSBmaWxsZWQgaWYgaXQgaXMgdG9v IHdpZGUsCiAJICAgICA7OyB0aGF0IGlzIHdpZGVyIHRoYW4gdGhlIHR3byB0aGlyZHMgb2YgdGhl IHRvdGFsIHdpZHRoLgogCSAgICAgKHRpdGxlLWxlbiAobWluIChhcHBseSAjJ21heAotCQkJCSAg ICAobWFwY2FyICMnbGVuZ3RoCisJCQkJICAgIChtYXBjYXIgIydzdHJpbmctd2lkdGgKIAkJCQkJ ICAgIChvcmctc3BsaXQtc3RyaW5nCiAJCQkJCSAgICAgKGNvbmNhdCB0aXRsZSAiXG4iIHN1YnRp dGxlKSAiXG4iKSkpCiAJCQkgICAgICgvICgqIDIgdGV4dC13aWR0aCkgMykpKQpAQCAtMTA0MSwx MiArMTA1NSwxOSBAQAogCSAgICAgKGZvcm1hdHRlZC1zdWJ0aXRsZSAod2hlbiAob3JnLXN0cmlu Zy1udy1wIHN1YnRpdGxlKQogCQkJCSAgIChvcmctYXNjaWktLWZpbGwtc3RyaW5nIHN1YnRpdGxl IHRpdGxlLWxlbiBpbmZvKSkpCiAJICAgICAobGluZQotCSAgICAgIChtYWtlLXN0cmluZwotCSAg ICAgICAobWluICgrIChtYXggdGl0bGUtbGVuCi0JCQkgICAgKHN0cmluZy13aWR0aCAob3IgYXV0 aG9yICIiKSkKLQkJCSAgICAoc3RyaW5nLXdpZHRoIChvciBlbWFpbCAiIikpKQotCQkgICAgICAg MikKLQkJICAgIHRleHQtd2lkdGgpIChpZiB1dGY4cCA/4pSBID9fKSkpKQorICAgICAgICAgICAg ICAob3JnLWFzY2lpLS1tYWtlLXN0cmluZworICAgICAgICAgICAgICAgKGFwcGx5ICMnbWF4Cisg ICAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAjJ29yZy1hc2NpaS0tcGl4ZWwtd2lkdGgKKwkg ICAgICAgICAgICAgICAgICAgICAgKG9yZy1zcGxpdC1zdHJpbmcKKwkJICAgICAgICAgICAgICAg KGNvbmNhdCBmb3JtYXR0ZWQtdGl0bGUgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZm9ybWF0dGVkLXN1YnRpdGxlICJcbiIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChpZiBhdXRob3IgKGNvbmNhdCBhdXRob3IgIlxuIikgIiIpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgZW1haWwgKGNvbmNhdCBl bWFpbCAiXG4iKSAiIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIikpKQor ICAgICAgICAgICAgICAgKGlmIHV0ZjhwID/ilIEgP18pCisgICAgICAgICAgICAgICAyIHRleHQt d2lkdGgpKSkKKyAgICAgICAgKG1lc3NhZ2UgIiVzIiBsaW5lKQorICAgICAgICAobWVzc2FnZSAi JXMiIGZvcm1hdHRlZC10aXRsZSkKIAkob3JnLWFzY2lpLS1qdXN0aWZ5LWxpbmVzCiAJIChjb25j YXQgbGluZSAiXG4iCiAJCSAodW5sZXNzIHV0ZjhwICJcbiIpCkBAIC0xMDgyLDkgKzExMDMsOSBA QAogCSAgICAobGV0ICgodGl0bGUgKG9yZy1hc2NpaS0tdHJhbnNsYXRlICJGb290bm90ZXMiIGlu Zm8pKSkKIAkgICAgICAoY29uY2F0CiAJICAgICAgIHRpdGxlICJcbiIKLQkgICAgICAgKG1ha2Ut c3RyaW5nCi0JCShzdHJpbmctd2lkdGggdGl0bGUpCi0JCShpZiAoZXEgKHBsaXN0LWdldCBpbmZv IDphc2NpaS1jaGFyc2V0KSAndXRmLTgpID/ilIAgP18pKSkpCisgICAgICAgICAgICAgICAob3Jn LWFzY2lpLS1tYWtlLXN0cmluZworICAgICAgICAgICAgICAgIChvcmctYXNjaWktLXBpeGVsLXdp ZHRoIHRpdGxlKQorICAgICAgICAgICAgICAgIChpZiAoZXEgKHBsaXN0LWdldCBpbmZvIDphc2Np aS1jaGFyc2V0KSAndXRmLTgpID/ilIAgP18pKSkpCiAJICAgICJcblxuIgogCSAgICAobGV0ICgo dGV4dC13aWR0aCAoLSAocGxpc3QtZ2V0IGluZm8gOmFzY2lpLXRleHQtd2lkdGgpCiAJCQkJIGds b2JhbC1tYXJnaW4pKSkKQEAgLTExNTAsNiArMTE3MSwyOSBAQAogICAobGV0ICgoY2hhcnNldCAo aW50ZXJuIChmb3JtYXQgIjolcyIgKHBsaXN0LWdldCBpbmZvIDphc2NpaS1jaGFyc2V0KSkpKSkK ICAgICAob3JnLWV4cG9ydC10cmFuc2xhdGUgcyBjaGFyc2V0IGluZm8pKSkKIAorKGRlZnVuIG9y Zy1hc2NpaS0tbWFrZS1zdHJpbmcgKHB3aWR0aCBpbml0ICZvcHRpb25hbCBhZGp1c3QgbGltaXQp CisgICJSZXR1cm4gYSBuZXdseSBjcmVhdGVkIHN0cmluZyBvZiB3aWR0aCBQV0lEVEgsIHdpdGgg SU5JVCBpbiBlYWNoIGVsZW1lbnQuCitQV0lEVEggaXMgaW4gcGl4ZWwgYW5kIHRoZSBhY3R1YWwg d2lkdGggaXMgYSBtaW5pbXVtIGxvbmdlciB0aGFuCitQV0lEVEgsIHVubGVzcyBlaXRoZXIgQURK VVNUIG9yIExJTUlUIGlzIHNwZWNpZmllZC4gIEFESlVTVCBpcwordGhlIG51bWJlciBvZiBjaGFy YWN0ZXJzIGFkZGVkIG9yIHJlbW92ZWQgZnJvbSB0aGUgc3RyaW5nIGlmIHRoZQordmFsdWUgaXMg cG9zaXRpdmUgb3IgbmVnYXRpdmUgaW50ZWdlci4gIExJTUlUIGlzIHRoZSBtYXhpbXVtCithbGxv d2VkIG51bWJlciBvZiBjaGFyYWN0ZXJzIG9mIHRoZSBzdHJpbmcuIgorICAobGV0KiAoKGluaXQt cHdpZHRoIChvcmctYXNjaWktLXBpeGVsLXdpZHRoIGluaXQpKQorICAgICAgICAgKHdpZHRoICgv ICgrIHB3aWR0aCAoMS0gaW5pdC1wd2lkdGgpKSBpbml0LXB3aWR0aCkpKQorICAgIChpZiAoaW50 ZWdlcnAgYWRqdXN0KSAoc2V0cSB3aWR0aCAoKyB3aWR0aCBhZGp1c3QpKSkKKyAgICAoaWYgKGlu dGVnZXJwIGxpbWl0KSAoc2V0cSB3aWR0aCAobWluIHdpZHRoIChtYXggbGltaXQgMCkpKSkKKyAg ICAobWFrZS1zdHJpbmcgd2lkdGggaW5pdCkpKQorCisoZGVmdW4gb3JnLWFzY2lpLS1waXhlbC13 aWR0aCAob2JqKQorICAiUmV0dXJuIE9CSiBwaXhlbCB3aWR0aCBpbiBkaXNwbGF5LgorT0JKIGlz IHN1cHBvc2VkIHRvIGJlIGEgY2hhcmFjdGVyIG9yIGEgc3RyaW5nLiAgUmV0dXJuZWQgcGl4ZWwK K3dpZHRoIGlzIGJhc2VkIG9uIGZyYW1lIGRlZmF1bHQgZm9udC4iCisgICh3aXRoLXRlbXAtYnVm ZmVyCisgICAgKGluc2VydCBvYmopCisgICAgKHN3aXRjaC10by1idWZmZXIgKGN1cnJlbnQtYnVm ZmVyKSkKKyAgICAoY2FyICh3aW5kb3ctdGV4dC1waXhlbC1zaXplCisgICAgICAgICAgbmlsIDEg KDErIChpZiAoc2VxdWVuY2VwIG9iaikgKGxlbmd0aCBvYmopIDEpKSkpKSkKKwogCiAMCiA7Ozsg VHJhbnNjb2RlIEZ1bmN0aW9ucwpAQCAtMTk2MCw3ICsyMDA0LDkgQEAKIAkJCQkJJ2lkZW50aXR5 IGluZm8gdCkKIAkJCQkgICAgICBjZWxsKSkKIAkJCSBsY29ybmVyKQotCQkgICAgICAgKG1ha2Ut c3RyaW5nICgrIDIgd2lkdGgpIChzdHJpbmctdG8tY2hhciBob3JpeikpCisgICAgICAgICAgICAg ICAgICAgICAgIChvcmctYXNjaWktLW1ha2Utc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAg ICAoKiAoKyAyIHdpZHRoKSAob3JnLWFzY2lpLS1waXhlbC13aWR0aCA/XHMpKQorICAgICAgICAg ICAgICAgICAgICAgICAgKHN0cmluZy10by1jaGFyIGhvcml6KSkKIAkJICAgICAgIChjb25kCiAJ CQkoKG5vdCAobWVtcSAncmlnaHQgYm9yZGVycykpIG5pbCkKIAkJCSgoZXEgKGNhciAobGFzdCAo b3JnLWVsZW1lbnQtY29udGVudHMgdGFibGUtcm93KSkpIGNlbGwpCg== --Multipart_Sun_May__9_22:57:41_2021-1--