From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Sascha Ziemann Newsgroups: gmane.emacs.bugs Subject: bug#61093: Indented file names confuse compilation buffer Date: Fri, 27 Jan 2023 12:11:14 +0100 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000002c1be405f33cedfe" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="25866"; mail-complaints-to="usenet@ciao.gmane.io" To: 61093@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Jan 27 12:12:26 2023 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 1pLMeg-0006Yl-9n for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 27 Jan 2023 12:12:26 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pLMeN-0001nk-Qs; Fri, 27 Jan 2023 06:12:07 -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 1pLMeJ-0001nM-Ec for bug-gnu-emacs@gnu.org; Fri, 27 Jan 2023 06:12:03 -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 1pLMeJ-0001rZ-6V for bug-gnu-emacs@gnu.org; Fri, 27 Jan 2023 06:12:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pLMeI-00033u-NX for bug-gnu-emacs@gnu.org; Fri, 27 Jan 2023 06:12:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Sascha Ziemann Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 27 Jan 2023 11:12:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 61093 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.167481789511729 (code B ref -1); Fri, 27 Jan 2023 11:12:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 27 Jan 2023 11:11:35 +0000 Original-Received: from localhost ([127.0.0.1]:36817 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pLMdr-000336-9L for submit@debbugs.gnu.org; Fri, 27 Jan 2023 06:11:35 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:38956) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pLMdp-00032z-7x for submit@debbugs.gnu.org; Fri, 27 Jan 2023 06:11:33 -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 1pLMdp-0001jm-0b for bug-gnu-emacs@gnu.org; Fri, 27 Jan 2023 06:11:33 -0500 Original-Received: from mail-oa1-x35.google.com ([2001:4860:4864:20::35]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pLMdk-0001Qo-Dd for bug-gnu-emacs@gnu.org; Fri, 27 Jan 2023 06:11:29 -0500 Original-Received: by mail-oa1-x35.google.com with SMTP id 586e51a60fabf-142b72a728fso5966754fac.9 for ; Fri, 27 Jan 2023 03:11:27 -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=gBt+OcOnscmDKBpJDYQCXwGAan1ZQQPrdKD6ll9vV5M=; b=c5WZhRXuC9/2MI84x8wIcgcVl9dThJPC1EQVdEuCJ3qjVFbQlBzoYZHEqg9xZLkBfc aot0wRJItojU0Ym9YewuLkF2uCjy+0e0yTPpP12M59nsZdeb+Bn9kH/n4HfyVvjaFtKD 3P3yNG3RLIt4WBVONduhGrpszEyt5RkdctK2rKu1m0gNx3Q0A2J3j4eqyVBmrm+6D05/ LpDp49xGlzIsfLdIMIMbHmf+WFRXbv5DQTUpWBHk+6IszFoZNMJ0HlBinh5GkSP1Hemw NlcjbZ1jkvitcVf0YWWnDVRB8MPXMhPgNkppz2oDG01zb4A1pTcQElzxZBzu272b7vg8 mgAg== 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=gBt+OcOnscmDKBpJDYQCXwGAan1ZQQPrdKD6ll9vV5M=; b=W/LS3AM3NqlT0Uj3wD57fnvgrRCSExWbz2KQZ9XOr3hCcOnnjtjv3Ns+0dhv9wi/DJ Q6jNYyYBi7ofdQrrZZWdkCVCTgYYLNsnVMnSPVKVeBSl9mCejrKZkcJAjtPXkHDBlnMU ABWcVgKpKVokWsNv94c5UMH4soUCJW2QESi98q9yRkNY+SJuFAXAG5xR26LkTmTPxhno R8WVNTDYNed/E564zsQ+wjDo6aeyiXlBNhC8jugamxTU+SU3v6NuIxNx6FqGJS7qk+Ey wtPxxQkIeHydJoXhQb+2dEJcb2TwsGY8MW86KhfawICXyoRyUt1nxorQDOidVTLEfcBj MbAA== X-Gm-Message-State: AO0yUKVwNqmCvWgKoliQRGnAh8S2HV6e+XWhpYd/S3vXydngxf9m5ORf HjGnwiYNPJ+6+CG30iVICfGPQhRvgsLdq2X3Q+URGJrQFro= X-Google-Smtp-Source: AK7set92/BlYv+Xueqo6vOeqlz42ZZWh9X0GIJKgu2ZR3a1DRyReu+w8S3F4Igdt7fXGFvT+2GpCCuk0iB/lGQssE6E= X-Received: by 2002:a05:6871:9d:b0:163:5576:d1c3 with SMTP id u29-20020a056871009d00b001635576d1c3mr557561oaa.87.1674817886219; Fri, 27 Jan 2023 03:11:26 -0800 (PST) Received-SPF: pass client-ip=2001:4860:4864:20::35; envelope-from=ceving@gmail.com; helo=mail-oa1-x35.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, T_HTML_ATTACH=0.01 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: 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:254253 Archived-At: --0000000000002c1be405f33cedfe Content-Type: text/plain; charset="UTF-8" The Go compiler indents sometimes filenames. I have attached a htmlfontified compilation buffer showing this. It also shows that the parser of the compilation buffer gets confused by this. The problematic line is: " ./config.go:10:5: other declaration of config_file" Some code thinks the whole line is a file name, because the whole line is a hyperlink (underlined). Some other code thinks only the beginning of the line is a file name (red). But this part also thinks the line number is part of the file name and marks the column number as line number (purple). I think it might be ok to ignore leading whitespace, because file names do not start very often with whitespace. --0000000000002c1be405f33cedfe Content-Type: text/html; charset="US-ASCII"; name="compilation.html" Content-Disposition: attachment; filename="compilation.html" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ldeew85h0 PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIGh0bWwgUFVC TElDICItLy9XM0MvL0RURCBYSFRNTCAxLjEvL0VOIgoiaHR0cDovL3d3dy53My5vcmcvVFIveGh0 bWwxMS9EVEQveGh0bWwxMS5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5 OS94aHRtbCI+CiAgPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCIvPgogICAgPHRpdGxl Pipjb21waWxhdGlvbio8L3RpdGxlPgo8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9ImVt YWNzIDI4LjI7IGh0bWxmb250aWZ5IDAuMjEiIC8+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCEt LSAKYm9keSwgcHJlIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAgZm9udC1mYW1pbHk6IEZpcmEg Q29kZTsgIGZvbnQtc3RyZXRjaDogbm9ybWFsOyAgZm9udC13ZWlnaHQ6IDUwMDsgIGZvbnQtc3R5 bGU6IG5vcm1hbDsgIGNvbG9yOiAjMDAwMDAwOyAgYmFja2dyb3VuZDogI2ZmZmZmZjsgIGZvbnQt c2l6ZTogMTBwdDsgfQpzcGFuLmRlZmF1bHQgICB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgIGZv bnQtZmFtaWx5OiBGaXJhIENvZGU7ICBmb250LXN0cmV0Y2g6IG5vcm1hbDsgIGZvbnQtd2VpZ2h0 OiA1MDA7ICBmb250LXN0eWxlOiBub3JtYWw7ICBjb2xvcjogIzAwMDAwMDsgIGJhY2tncm91bmQ6 ICNmZmZmZmY7ICBmb250LXNpemU6IDEwcHQ7IH0Kc3Bhbi5kZWZhdWx0IGEgeyAgZm9udC1mYW1p bHk6IEZpcmEgQ29kZTsgIGZvbnQtc3RyZXRjaDogbm9ybWFsOyAgZm9udC13ZWlnaHQ6IDUwMDsg IGZvbnQtc3R5bGU6IG5vcm1hbDsgIGNvbG9yOiAjMDAwMDAwOyAgYmFja2dyb3VuZDogI2ZmZmZm ZjsgIGZvbnQtc2l6ZTogMTBwdDsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0Kc3Bhbi5j b21waWxhdGlvbi1pbmZvICAgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7ICBjb2xvcjogIzIyOGIy MjsgIGZvbnQtd2VpZ2h0OiA3MDA7ICBmb250LWZhbWlseTogRmlyYSBDb2RlOyAgZm9udC1zdHJl dGNoOiBub3JtYWw7ICBmb250LXN0eWxlOiBub3JtYWw7ICBiYWNrZ3JvdW5kOiAjZmZmZmZmOyAg Zm9udC1zaXplOiAxMHB0OyB9CnNwYW4uY29tcGlsYXRpb24taW5mbyBhIHsgIGNvbG9yOiAjMjI4 YjIyOyAgZm9udC13ZWlnaHQ6IDcwMDsgIGZvbnQtZmFtaWx5OiBGaXJhIENvZGU7ICBmb250LXN0 cmV0Y2g6IG5vcm1hbDsgIGZvbnQtc3R5bGU6IG5vcm1hbDsgIGJhY2tncm91bmQ6ICNmZmZmZmY7 ICBmb250LXNpemU6IDEwcHQ7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9CnNwYW4uZnVu Y3Rpb24tbmFtZSAgIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAgY29sb3I6ICMwMDAwZmY7ICBm b250LWZhbWlseTogRmlyYSBDb2RlOyAgZm9udC1zdHJldGNoOiBub3JtYWw7ICBmb250LXdlaWdo dDogNTAwOyAgZm9udC1zdHlsZTogbm9ybWFsOyAgYmFja2dyb3VuZDogI2ZmZmZmZjsgIGZvbnQt c2l6ZTogMTBwdDsgfQpzcGFuLmZ1bmN0aW9uLW5hbWUgYSB7ICBjb2xvcjogIzAwMDBmZjsgIGZv bnQtZmFtaWx5OiBGaXJhIENvZGU7ICBmb250LXN0cmV0Y2g6IG5vcm1hbDsgIGZvbnQtd2VpZ2h0 OiA1MDA7ICBmb250LXN0eWxlOiBub3JtYWw7ICBiYWNrZ3JvdW5kOiAjZmZmZmZmOyAgZm9udC1z aXplOiAxMHB0OyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfQpzcGFuLmNvbXBpbGF0aW9u LWNvbHVtbi1udW1iZXIgICB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgIGNvbG9yOiAjOGIyMjUy OyAgZm9udC1mYW1pbHk6IEZpcmEgQ29kZTsgIGZvbnQtc3RyZXRjaDogbm9ybWFsOyAgZm9udC13 ZWlnaHQ6IDUwMDsgIGZvbnQtc3R5bGU6IG5vcm1hbDsgIGJhY2tncm91bmQ6ICNmZmZmZmY7ICBm b250LXNpemU6IDEwcHQ7IH0Kc3Bhbi5jb21waWxhdGlvbi1jb2x1bW4tbnVtYmVyIGEgeyAgY29s b3I6ICM4YjIyNTI7ICBmb250LWZhbWlseTogRmlyYSBDb2RlOyAgZm9udC1zdHJldGNoOiBub3Jt YWw7ICBmb250LXdlaWdodDogNTAwOyAgZm9udC1zdHlsZTogbm9ybWFsOyAgYmFja2dyb3VuZDog I2ZmZmZmZjsgIGZvbnQtc2l6ZTogMTBwdDsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0K c3Bhbi5jb21waWxhdGlvbi1saW5lLW51bWJlciAgIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAg Y29sb3I6ICNhMDIwZjA7ICBmb250LWZhbWlseTogRmlyYSBDb2RlOyAgZm9udC1zdHJldGNoOiBu b3JtYWw7ICBmb250LXdlaWdodDogNTAwOyAgZm9udC1zdHlsZTogbm9ybWFsOyAgYmFja2dyb3Vu ZDogI2ZmZmZmZjsgIGZvbnQtc2l6ZTogMTBwdDsgfQpzcGFuLmNvbXBpbGF0aW9uLWxpbmUtbnVt YmVyIGEgeyAgY29sb3I6ICNhMDIwZjA7ICBmb250LWZhbWlseTogRmlyYSBDb2RlOyAgZm9udC1z dHJldGNoOiBub3JtYWw7ICBmb250LXdlaWdodDogNTAwOyAgZm9udC1zdHlsZTogbm9ybWFsOyAg YmFja2dyb3VuZDogI2ZmZmZmZjsgIGZvbnQtc2l6ZTogMTBwdDsgdGV4dC1kZWNvcmF0aW9uOiB1 bmRlcmxpbmU7IH0Kc3Bhbi51bmRlcmxpbmUgICB7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5l OyAgZm9udC1mYW1pbHk6IEZpcmEgQ29kZTsgIGZvbnQtc3RyZXRjaDogbm9ybWFsOyAgZm9udC13 ZWlnaHQ6IDUwMDsgIGZvbnQtc3R5bGU6IG5vcm1hbDsgIGNvbG9yOiAjMDAwMDAwOyAgYmFja2dy b3VuZDogI2ZmZmZmZjsgIGZvbnQtc2l6ZTogMTBwdDsgfQpzcGFuLnVuZGVybGluZSBhIHsgdGV4 dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7ICBmb250LWZhbWlseTogRmlyYSBDb2RlOyAgZm9udC1z dHJldGNoOiBub3JtYWw7ICBmb250LXdlaWdodDogNTAwOyAgZm9udC1zdHlsZTogbm9ybWFsOyAg Y29sb3I6ICMwMDAwMDA7ICBiYWNrZ3JvdW5kOiAjZmZmZmZmOyAgZm9udC1zaXplOiAxMHB0OyB9 CnNwYW4uY29tcGlsYXRpb24tZXJyb3IgICB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgIGNvbG9y OiAjZmYwMDAwOyAgZm9udC13ZWlnaHQ6IDcwMDsgIGZvbnQtZmFtaWx5OiBGaXJhIENvZGU7ICBm b250LXN0cmV0Y2g6IG5vcm1hbDsgIGZvbnQtc3R5bGU6IG5vcm1hbDsgIGJhY2tncm91bmQ6ICNm ZmZmZmY7ICBmb250LXNpemU6IDEwcHQ7IH0Kc3Bhbi5jb21waWxhdGlvbi1lcnJvciBhIHsgIGNv bG9yOiAjZmYwMDAwOyAgZm9udC13ZWlnaHQ6IDcwMDsgIGZvbnQtZmFtaWx5OiBGaXJhIENvZGU7 ICBmb250LXN0cmV0Y2g6IG5vcm1hbDsgIGZvbnQtc3R5bGU6IG5vcm1hbDsgIGJhY2tncm91bmQ6 ICNmZmZmZmY7ICBmb250LXNpemU6IDEwcHQ7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9 CiAtLT48L3N0eWxlPgoKICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCiAg Ly8gdGhpcyBmdW5jdGlvbiBpcyBuZWVkZWQgdG8gd29yayBhcm91bmQKICAvLyBhIGJ1ZyBpbiBJ RSByZWxhdGVkIHRvIGVsZW1lbnQgYXR0cmlidXRlcwogIGZ1bmN0aW9uIGhhc0NsYXNzKG9iaikK ICB7CiAgICAgIHZhciByZXN1bHQgPSBmYWxzZTsKICAgICAgaWYgKG9iai5nZXRBdHRyaWJ1dGVO b2RlKCJjbGFzcyIpICE9IG51bGwpCiAgICAgIHsKICAgICAgICAgIHJlc3VsdCA9IG9iai5nZXRB dHRyaWJ1dGVOb2RlKCJjbGFzcyIpLnZhbHVlOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7 CiAgfQoKICBmdW5jdGlvbiBzdHJpcGUoaWQpCiAgewogICAgICAvLyB0aGUgZmxhZyB3ZSdsbCB1 c2UgdG8ga2VlcCB0cmFjayBvZgogICAgICAvLyB3aGV0aGVyIHRoZSBjdXJyZW50IHJvdyBpcyBv ZGQgb3IgZXZlbgogICAgICB2YXIgZXZlbiA9IGZhbHNlOwoKICAgICAgLy8gaWYgYXJndW1lbnRz IGFyZSBwcm92aWRlZCB0byBzcGVjaWZ5IHRoZSBjb2xvcnMKICAgICAgLy8gb2YgdGhlIGV2ZW4g JiBvZGQgcm93cywgdGhlbiB1c2UgdGhlbTsKICAgICAgLy8gb3RoZXJ3aXNlIHVzZSB0aGUgZm9s bG93aW5nIGRlZmF1bHRzOgogICAgICB2YXIgZXZlbkNvbG9yID0gYXJndW1lbnRzWzFdID8gYXJn dW1lbnRzWzFdIDogIiNmZmYiOwogICAgICB2YXIgb2RkQ29sb3IgID0gYXJndW1lbnRzWzJdID8g YXJndW1lbnRzWzJdIDogIiNkZGQiOwoKICAgICAgLy8gb2J0YWluIGEgcmVmZXJlbmNlIHRvIHRo ZSBkZXNpcmVkIHRhYmxlCiAgICAgIC8vIGlmIG5vIHN1Y2ggdGFibGUgZXhpc3RzLCBhYm9ydAog ICAgICB2YXIgdGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICAgIGlmICgh IHRhYmxlKSB7IHJldHVybjsgfQoKICAgICAgLy8gYnkgZGVmaW5pdGlvbiwgdGFibGVzIGNhbiBo YXZlIG1vcmUgdGhhbiBvbmUgdGJvZHkKICAgICAgLy8gZWxlbWVudCwgc28gd2UnbGwgaGF2ZSB0 byBnZXQgdGhlIGxpc3Qgb2YgY2hpbGQKICAgICAgLy8gJmx0O3Rib2R5Jmd0O3MKICAgICAgdmFy IHRib2RpZXMgPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKTsKCiAgICAgIC8v IGFuZCBpdGVyYXRlIHRocm91Z2ggdGhlbS4uLgogICAgICBmb3IgKHZhciBoID0gMDsgaCA8IHRi b2RpZXMubGVuZ3RoOyBoKyspCiAgICAgIHsKICAgICAgICAgIC8vIGZpbmQgYWxsIHRoZSAmbHQ7 dHImZ3Q7IGVsZW1lbnRzLi4uCiAgICAgICAgICB2YXIgdHJzID0gdGJvZGllc1toXS5nZXRFbGVt ZW50c0J5VGFnTmFtZSgidHIiKTsKCiAgICAgICAgICAvLyAuLi4gYW5kIGl0ZXJhdGUgdGhyb3Vn aCB0aGVtCiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRycy5sZW5ndGg7IGkrKykKICAg ICAgICAgIHsKICAgICAgICAgICAgICAvLyBhdm9pZCByb3dzIHRoYXQgaGF2ZSBhIGNsYXNzIGF0 dHJpYnV0ZQogICAgICAgICAgICAgIC8vIG9yIGJhY2tncm91bmRDb2xvciBzdHlsZQogICAgICAg ICAgICAgIGlmICghIGhhc0NsYXNzKHRyc1tpXSkgJiYKICAgICAgICAgICAgICAgICAgISB0cnNb aV0uc3R5bGUuYmFja2dyb3VuZENvbG9yKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgLy8gZ2V0IGFsbCB0aGUgY2VsbHMgaW4gdGhpcyByb3cuLi4KICAgICAgICAgICAgICAgICAg dmFyIHRkcyA9IHRyc1tpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKTsKCiAgICAgICAgICAg ICAgICAgIC8vIGFuZCBpdGVyYXRlIHRocm91Z2ggdGhlbS4uLgogICAgICAgICAgICAgICAgICBm b3IgKHZhciBqID0gMDsgaiA8IHRkcy5sZW5ndGg7IGorKykKICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgdmFyIG15dGQgPSB0ZHNbal07CgogICAgICAgICAgICAgICAg ICAgICAgLy8gYXZvaWQgY2VsbHMgdGhhdCBoYXZlIGEgY2xhc3MgYXR0cmlidXRlCiAgICAgICAg ICAgICAgICAgICAgICAvLyBvciBiYWNrZ3JvdW5kQ29sb3Igc3R5bGUKICAgICAgICAgICAgICAg ICAgICAgIGlmICghIGhhc0NsYXNzKG15dGQpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAg ISBteXRkLnN0eWxlLmJhY2tncm91bmRDb2xvcikKICAgICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgICBteXRkLnN0eWxlLmJhY2tncm91bmRDb2xvciA9CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBldmVuID8gZXZlbkNvbG9yIDogb2RkQ29sb3I7CiAgICAg ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgLy8gZmxpcCBmcm9tIG9kZCB0byBldmVuLCBvciB2aWNlLXZlcnNhCiAgICAg ICAgICAgICAgZXZlbiA9ICAhIGV2ZW47CiAgICAgICAgICB9CiAgICAgIH0KICB9CgogIGZ1bmN0 aW9uIHRvZ2dsZV9pbnZpcyggbmFtZSApCiAgewogICAgICB2YXIgZmlsdGVyID0KICAgICAgICB7 IGFjY2VwdE5vZGU6CiAgICAgICAgICBmdW5jdGlvbiggbm9kZSApCiAgICAgICAgICB7IHZhciBj bGFzc25hbWUgPSBub2RlLmlkOwogICAgICAgICAgICBpZiggY2xhc3NuYW1lICkKICAgICAgICAg ICAgeyB2YXIgY2xhc3NiYXNlID0gY2xhc3NuYW1lLnN1YnN0ciggMCwgbmFtZS5sZW5ndGggKTsK ICAgICAgICAgICAgICBpZiggY2xhc3NiYXNlID09IG5hbWUgKSB7IHJldHVybiBOb2RlRmlsdGVy LkZJTFRFUl9BQ0NFUFQ7IH0gfQogICAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJf U0tJUDsgfSB9OwogICAgICB2YXIgd2Fsa2VyID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcigg ZG9jdW1lbnQuYm9keSAgICAgICAgICAgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQgLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyICAgICAgICAgICAgICAgICAgLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgICAgICAg ICAgICAgICAgICAgKTsKICAgICAgd2hpbGUoIHdhbGtlci5uZXh0Tm9kZSgpICkKICAgICAgewog ICAgICAgICAgdmFyIGUgPSB3YWxrZXIuY3VycmVudE5vZGU7CiAgICAgICAgICBpZiggZS5zdHls ZS5kaXNwbGF5ID09ICJub25lIiApIHsgZS5zdHlsZS5kaXNwbGF5ID0gImlubGluZSI7IH0KICAg ICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBlLnN0eWxlLmRpc3BsYXkg PSAibm9uZSI7ICAgfQogICAgICB9CiAgfQotLT4gPC9zY3JpcHQ+CiAgPC9oZWFkPgogIDxib2R5 IG9ubG9hZD0ic3RyaXBlKCdpbmRleCcpOyByZXR1cm4gdHJ1ZTsiPgoKPHByZT4tKi0gbW9kZTog Y29tcGlsYXRpb247IGRlZmF1bHQtZGlyZWN0b3J5OiAmcXVvdDt+L3NlY3VuZXQva29ucmV0ZC8m cXVvdDsgLSotCkNvbXBpbGF0aW9uIHN0YXJ0ZWQgYXQgRnJpIEphbiAyNyAxMTo0MTo1OQoKbWFr ZSAtayAKZ28gYnVpbGQKIyBrM2xzL2tvbnJldGQKPHNwYW4gY2xhc3M9ImNvbXBpbGF0aW9uLWVy cm9yIj4uL29wdGlvbnMuZ288L3NwYW4+PHNwYW4gY2xhc3M9InVuZGVybGluZSI+Ojwvc3Bhbj48 c3BhbiBjbGFzcz0iY29tcGlsYXRpb24tbGluZS1udW1iZXIiPjk8L3NwYW4+PHNwYW4gY2xhc3M9 InVuZGVybGluZSI+Ojwvc3Bhbj48c3BhbiBjbGFzcz0iY29tcGlsYXRpb24tY29sdW1uLW51bWJl ciI+Mjwvc3Bhbj48c3BhbiBjbGFzcz0idW5kZXJsaW5lIj46IDwvc3Bhbj5jb25maWdfZmlsZSBy ZWRlY2xhcmVkIGluIHRoaXMgYmxvY2sKPHNwYW4gY2xhc3M9InVuZGVybGluZSI+CTwvc3Bhbj48 c3BhbiBjbGFzcz0iY29tcGlsYXRpb24tZXJyb3IiPi4vY29uZmlnLmdvOjEwPC9zcGFuPjxzcGFu IGNsYXNzPSJ1bmRlcmxpbmUiPjo8L3NwYW4+PHNwYW4gY2xhc3M9ImNvbXBpbGF0aW9uLWxpbmUt bnVtYmVyIj41PC9zcGFuPjxzcGFuIGNsYXNzPSJ1bmRlcmxpbmUiPjogb3RoZXIgZGVjbGFyYXRp b24gb2YgY29uZmlnX2ZpbGU8L3NwYW4+CjxzcGFuIGNsYXNzPSJjb21waWxhdGlvbi1lcnJvciI+ Li9vcHRpb25zLmdvPC9zcGFuPjxzcGFuIGNsYXNzPSJ1bmRlcmxpbmUiPjo8L3NwYW4+PHNwYW4g Y2xhc3M9ImNvbXBpbGF0aW9uLWxpbmUtbnVtYmVyIj4xNTwvc3Bhbj48c3BhbiBjbGFzcz0idW5k ZXJsaW5lIj46PC9zcGFuPjxzcGFuIGNsYXNzPSJjb21waWxhdGlvbi1jb2x1bW4tbnVtYmVyIj42 PC9zcGFuPjxzcGFuIGNsYXNzPSJ1bmRlcmxpbmUiPjogPC9zcGFuPmkgZGVjbGFyZWQgYnV0IG5v dCB1c2VkCjxzcGFuIGNsYXNzPSJjb21waWxhdGlvbi1lcnJvciI+Li9vcHRpb25zLmdvPC9zcGFu PjxzcGFuIGNsYXNzPSJ1bmRlcmxpbmUiPjo8L3NwYW4+PHNwYW4gY2xhc3M9ImNvbXBpbGF0aW9u LWxpbmUtbnVtYmVyIj4xNTwvc3Bhbj48c3BhbiBjbGFzcz0idW5kZXJsaW5lIj46PC9zcGFuPjxz cGFuIGNsYXNzPSJjb21waWxhdGlvbi1jb2x1bW4tbnVtYmVyIj45PC9zcGFuPjxzcGFuIGNsYXNz PSJ1bmRlcmxpbmUiPjogPC9zcGFuPmFyZyBkZWNsYXJlZCBidXQgbm90IHVzZWQKPHNwYW4gY2xh c3M9ImNvbXBpbGF0aW9uLWVycm9yIj4uL29wdGlvbnMuZ288L3NwYW4+PHNwYW4gY2xhc3M9InVu ZGVybGluZSI+Ojwvc3Bhbj48c3BhbiBjbGFzcz0iY29tcGlsYXRpb24tbGluZS1udW1iZXIiPjE3 PC9zcGFuPjxzcGFuIGNsYXNzPSJ1bmRlcmxpbmUiPjo8L3NwYW4+PHNwYW4gY2xhc3M9ImNvbXBp bGF0aW9uLWNvbHVtbi1udW1iZXIiPjM8L3NwYW4+PHNwYW4gY2xhc3M9InVuZGVybGluZSI+OiA8 L3NwYW4+dW5kZWZpbmVkOiBmbXQKPHNwYW4gY2xhc3M9ImNvbXBpbGF0aW9uLWVycm9yIj4uL29w dGlvbnMuZ288L3NwYW4+PHNwYW4gY2xhc3M9InVuZGVybGluZSI+Ojwvc3Bhbj48c3BhbiBjbGFz cz0iY29tcGlsYXRpb24tbGluZS1udW1iZXIiPjE3PC9zcGFuPjxzcGFuIGNsYXNzPSJ1bmRlcmxp bmUiPjo8L3NwYW4+PHNwYW4gY2xhc3M9ImNvbXBpbGF0aW9uLWNvbHVtbi1udW1iZXIiPjI3PC9z cGFuPjxzcGFuIGNsYXNzPSJ1bmRlcmxpbmUiPjogPC9zcGFuPnVuZGVmaW5lZDogaW5kZXgKPHNw YW4gY2xhc3M9ImNvbXBpbGF0aW9uLWVycm9yIj4uL29wdGlvbnMuZ288L3NwYW4+PHNwYW4gY2xh c3M9InVuZGVybGluZSI+Ojwvc3Bhbj48c3BhbiBjbGFzcz0iY29tcGlsYXRpb24tbGluZS1udW1i ZXIiPjE3PC9zcGFuPjxzcGFuIGNsYXNzPSJ1bmRlcmxpbmUiPjo8L3NwYW4+PHNwYW4gY2xhc3M9 ImNvbXBpbGF0aW9uLWNvbHVtbi1udW1iZXIiPjQ2PC9zcGFuPjxzcGFuIGNsYXNzPSJ1bmRlcmxp bmUiPjogPC9zcGFuPnVuZGVmaW5lZDogZWxlbWVudAo8c3BhbiBjbGFzcz0iY29tcGlsYXRpb24t ZXJyb3IiPi4vdmVyc2lvbi5nbzwvc3Bhbj48c3BhbiBjbGFzcz0idW5kZXJsaW5lIj46PC9zcGFu PjxzcGFuIGNsYXNzPSJjb21waWxhdGlvbi1saW5lLW51bWJlciI+MTU8L3NwYW4+PHNwYW4gY2xh c3M9InVuZGVybGluZSI+Ojwvc3Bhbj48c3BhbiBjbGFzcz0iY29tcGlsYXRpb24tY29sdW1uLW51 bWJlciI+MTwvc3Bhbj48c3BhbiBjbGFzcz0idW5kZXJsaW5lIj46IDwvc3Bhbj5taXNzaW5nIHJl dHVybgo8c3BhbiBjbGFzcz0iY29tcGlsYXRpb24tZXJyb3IiPi4vdmVyc2lvbi5nbzwvc3Bhbj48 c3BhbiBjbGFzcz0idW5kZXJsaW5lIj46PC9zcGFuPjxzcGFuIGNsYXNzPSJjb21waWxhdGlvbi1s aW5lLW51bWJlciI+MjE8L3NwYW4+PHNwYW4gY2xhc3M9InVuZGVybGluZSI+Ojwvc3Bhbj48c3Bh biBjbGFzcz0iY29tcGlsYXRpb24tY29sdW1uLW51bWJlciI+MzY8L3NwYW4+PHNwYW4gY2xhc3M9 InVuZGVybGluZSI+OiA8L3NwYW4+dW5kZWZpbmVkOiBjb25maWdfZmlsZV9kZWZhdWx0CjxzcGFu IGNsYXNzPSJjb21waWxhdGlvbi1lcnJvciI+Li92ZXJzaW9uLmdvPC9zcGFuPjxzcGFuIGNsYXNz PSJ1bmRlcmxpbmUiPjo8L3NwYW4+PHNwYW4gY2xhc3M9ImNvbXBpbGF0aW9uLWxpbmUtbnVtYmVy Ij4yMTwvc3Bhbj48c3BhbiBjbGFzcz0idW5kZXJsaW5lIj46PC9zcGFuPjxzcGFuIGNsYXNzPSJj b21waWxhdGlvbi1jb2x1bW4tbnVtYmVyIj41Nzwvc3Bhbj48c3BhbiBjbGFzcz0idW5kZXJsaW5l Ij46IDwvc3Bhbj51bmRlZmluZWQ6IGNvbmZpZ19maWxlX3VzYWdlCjxzcGFuIGNsYXNzPSJjb21w aWxhdGlvbi1lcnJvciI+Li92ZXJzaW9uLmdvPC9zcGFuPjxzcGFuIGNsYXNzPSJ1bmRlcmxpbmUi Pjo8L3NwYW4+PHNwYW4gY2xhc3M9ImNvbXBpbGF0aW9uLWxpbmUtbnVtYmVyIj4yMjwvc3Bhbj48 c3BhbiBjbGFzcz0idW5kZXJsaW5lIj46PC9zcGFuPjxzcGFuIGNsYXNzPSJjb21waWxhdGlvbi1j b2x1bW4tbnVtYmVyIj4zNjwvc3Bhbj48c3BhbiBjbGFzcz0idW5kZXJsaW5lIj46IDwvc3Bhbj51 bmRlZmluZWQ6IGNvbmZpZ19maWxlX2RlZmF1bHQKPHNwYW4gY2xhc3M9ImNvbXBpbGF0aW9uLWVy cm9yIj4uL3ZlcnNpb24uZ288L3NwYW4+PHNwYW4gY2xhc3M9InVuZGVybGluZSI+Ojwvc3Bhbj48 c3BhbiBjbGFzcz0iY29tcGlsYXRpb24tbGluZS1udW1iZXIiPjIyPC9zcGFuPjxzcGFuIGNsYXNz PSJ1bmRlcmxpbmUiPjo8L3NwYW4+PHNwYW4gY2xhc3M9ImNvbXBpbGF0aW9uLWNvbHVtbi1udW1i ZXIiPjM2PC9zcGFuPjxzcGFuIGNsYXNzPSJ1bmRlcmxpbmUiPjogPC9zcGFuPnRvbyBtYW55IGVy cm9ycwo8c3BhbiBjbGFzcz0iZnVuY3Rpb24tbmFtZSI+bWFrZTwvc3Bhbj46ICoqKiBbPHNwYW4g Y2xhc3M9ImNvbXBpbGF0aW9uLWluZm8iPk1ha2VmaWxlPC9zcGFuPjxzcGFuIGNsYXNzPSJ1bmRl cmxpbmUiPjo8L3NwYW4+PHNwYW4gY2xhc3M9ImNvbXBpbGF0aW9uLWxpbmUtbnVtYmVyIj4yPC9z cGFuPjxzcGFuIGNsYXNzPSJ1bmRlcmxpbmUiPjogYWxsPC9zcGFuPl0gRmVobGVyIDIKCkNvbXBp bGF0aW9uIDxzcGFuIGNsYXNzPSJjb21waWxhdGlvbi1lcnJvciI+ZXhpdGVkIGFibm9ybWFsbHk8 L3NwYW4+IHdpdGggY29kZSA8c3BhbiBjbGFzcz0iY29tcGlsYXRpb24tZXJyb3IiPjI8L3NwYW4+ IGF0IEZyaSBKYW4gMjcgMTE6NDE6NTkKPC9wcmU+CgogPC9ib2R5Pgo8L2h0bWw+Cg== --0000000000002c1be405f33cedfe--