From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 27 02:36:23 2021 Received: (at submit) by debbugs.gnu.org; 27 Jun 2021 06:36:23 +0000 Received: from localhost ([127.0.0.1]:48892 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lxOOy-0002Nh-PF for submit@debbugs.gnu.org; Sun, 27 Jun 2021 02:36:23 -0400 Received: from lists.gnu.org ([209.51.188.17]:60592) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lxGQG-0005ww-RT for submit@debbugs.gnu.org; Sat, 26 Jun 2021 18:05:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33892) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lxGQG-0000Bo-Ke for bug-coreutils@gnu.org; Sat, 26 Jun 2021 18:05:08 -0400 Received: from mail-yb1-xb2d.google.com ([2607:f8b0:4864:20::b2d]:35454) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lxGQE-00089S-DF for bug-coreutils@gnu.org; Sat, 26 Jun 2021 18:05:08 -0400 Received: by mail-yb1-xb2d.google.com with SMTP id i4so11002257ybe.2 for ; Sat, 26 Jun 2021 15:05:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=S//vj3QDy7hDBtKvEwalEMJHeDRU7NI1fs2t3oqAqkc=; b=ihTisW3lacql7Q+7ThlaUQMBR2DvUH3yxJNMkzyahAAcOqgrc+L+4sGH/qDj5nWNJl Q+dS0miR5a0+Gjx0AQP0rLnD8VfWSJpb3wwcx3UOgnrD1sHqZm61CWpa9Cj4igF6DT/q Vbk7jnII8KdGhOITOicKz3D+irkh/hQmxfz/k3CSEYOh30ppnMsT3CPCF+GmcB/rrB1z 6u6jL968GE3XwTo5hiOvj1G6G/LQCjFXaYZ2AXuiNUnpVjK1Bl8erzJ24CIog4NbGmwO 5vtMdpAvQRx66Vh3IojDff3vIWUh8p6Ew/mFHcFUfFD0xWQt1bXjmwUdX1OoFUywMd/Q IWdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=S//vj3QDy7hDBtKvEwalEMJHeDRU7NI1fs2t3oqAqkc=; b=fTnm/vb5SFj0dSCOM/MOXXR6Jk3oyKPNbjkP4APYjwEVehpzO0W/riZPOVTI27Dc2W aWPQ/cZ9AVq0K6yK6GWYLVAcdCV52Po3LPTlbqzD64dcK2g6eOowcxVcn5E+kccrQtLL RyduXdxCpoBCyoy7qDkWWjsYOIaSgbW6YT7CkihbOAF/DFwOttZN5CplhH3Il5ERBbhb 1FgcTOmYdbaXb35JaVlqJj8vxt1RMrVeiz9qkA59UF0NaMFEMcT+2xGvbADaSLRIOT/A h9WjL55eff7BN0mDofZ0ymmHqr83/zM8CTllbrbhvoTF+VE3BdoZ8qNEeS8T957YbKxN 9TRA== X-Gm-Message-State: AOAM533eZnHjwXlv7YF6RIwWO96EAyGlsOMYqQvEzocGpFZ3N7IH0tSX wGTwaNcpnHG8JL0jaiEXMvtrD5aKBr1R0c7lBPBg5hmy+8M= X-Google-Smtp-Source: ABdhPJzB3umeU5xZUmSD04AOzA5rK2Ouk4oND+ViAeNdF1A2s5w9f+ejTSwDZXrmLehsDmcepPe6RNOJpTfmhCnS4J4= X-Received: by 2002:a25:68cc:: with SMTP id d195mr20543228ybc.264.1624745104552; Sat, 26 Jun 2021 15:05:04 -0700 (PDT) MIME-Version: 1.0 From: Michael Date: Sun, 27 Jun 2021 00:04:53 +0200 Message-ID: Subject: Unexpected results with sort -V To: bug-coreutils@gnu.org Content-Type: multipart/mixed; boundary="000000000000cef71405c5b272c8" Received-SPF: pass client-ip=2607:f8b0:4864:20::b2d; envelope-from=michael.debertol@gmail.com; helo=mail-yb1-xb2d.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.3 (-) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Sun, 27 Jun 2021 02:36:19 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --000000000000cef71405c5b272c8 Content-Type: multipart/alternative; boundary="000000000000cef71205c5b272c6" --000000000000cef71205c5b272c6 Content-Type: text/plain; charset="UTF-8" Hi, I found some unexpected results with sort -V. I hope this is the correct place to send a bug report to [1]. They are caused by a bug in filevercmp inside gnulib, specifically in the function match_suffix. I assume it should, as documented, match a file ending as defined by this regex: /(\.[A-Za-z~][A-Za-z0-9~]*)*$/ However, I found two cases where this does not happen: 1) Two consecutive dots. It is not checked if the character after a dot is a dot. This results in nothing being matched in a case like "a..a", even though it should match ".a" according to the regex. Testcase: printf "a..a\na.+" | sort -V # a..a should be before a.+ I think 2) A trailing dot. If there is no additional character after a dot, it is still matched (e.g. for "a." the . is matched). Testcase: printf "a.\na+" | sort -V # I think a+ should be before a. Additionally I noticed that filevercmp ignores all characters after a NULL byte. This can be seen here: printf "a\0a\na" | sort -Vs sort seems to otherwise consider null bytes (that's why the --stable flag is necessary in the above example). Is this the expected behavior? Finally I wanted to ask if it is the expected behavior for filevercmp to do a strcmp if it can't find another difference, at least from the perspective of sort. This means that the --stable flag for sort has no effect in combination with --version-sort (well, except if the input contains NULL bytes, as mentioned above :) I'll attach a rather simple patch to fix 1) and 2) (including test), I hope that's right. Have a nice day, Michael [1]: https://www.gnu.org/software/coreutils/manual/html_node/Reporting-bugs-or-incorrect-results.html#Reporting-bugs-or-incorrect-results --000000000000cef71205c5b272c6 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,
I fou= nd some unexpected results with sort -V. I hope this is the correct place t= o send a bug report to [1].
They are caused by a bug in filev= ercmp inside gnulib, specifically in the function match_suffix.
I= assume it should, as documented, match a file ending as defined by this re= gex: /(\.[A-Za-z~][A-Za-z0-9~]*)*$/
However, I found two cases where this does not happen= :
1) Two cons= ecutive dots. It is not checked if the character after a dot is a dot. This= results in nothing being matched in a case like "a..a", even tho= ugh it should match ".a" according to the regex.
Testcase: printf "a..a\n= a.+" | sort -V # a..a should be before a.+ I think
2) A trailing dot. If there is no additional character a= fter a dot, it is still matched (e.g. for "a." the . is matched).=
Testcase: printf= "a.\na+" | sort -V # I think a+ should be before a.
=
=
Additionally I noticed = that filevercmp ignores all characters after a NULL byte.
=
This can be seen here: printf "= a\0a\na" | sort -Vs
sort seems to otherwise consider null bytes (that's why the --stable= flag is necessary in the above example). Is this the expected behavior?

=
= Finally I wanted to ask if it is the expect= ed behavior for filevercmp to do a strcmp if it can't find another diff= erence, at least from the perspective of sort.<= /div>
This means that the --stable flag for sort has no e= ffect in combination with --version-sort (well, except if the input contain= s NULL bytes, as mentioned above :)

I= 'll attach a rather simple patch to fix 1) and 2) (including test), I h= ope that's right.
<= br>
Have a nice day,
Michael
=

--000000000000cef71205c5b272c6-- --000000000000cef71405c5b272c8 Content-Type: text/plain; charset="US-ASCII"; name="diff.txt" Content-Disposition: attachment; filename="diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kqeavpho0 ZGlmZiAtLWdpdCBhL2xpYi9maWxldmVyY21wLmMgYi9saWIvZmlsZXZlcmNtcC5jCmluZGV4IGZj YTIzZWM0Zi4uZmRiNDE4NGQ0IDEwMDY0NAotLS0gYS9saWIvZmlsZXZlcmNtcC5jCisrKyBiL2xp Yi9maWxldmVyY21wLmMKQEAgLTM3LDIyICszNywyNCBAQCBtYXRjaF9zdWZmaXggKGNvbnN0IGNo YXIgKipzdHIpCiAgIGJvb2wgcmVhZF9hbHBoYSA9IGZhbHNlOwogICB3aGlsZSAoKipzdHIpCiAg ICAgewotICAgICAgaWYgKHJlYWRfYWxwaGEpCisgICAgICBpZiAoJy4nID09ICoqc3RyKQorICAg ICAgICB7CisgICAgICAgICAgaWYgKCFtYXRjaCB8fCByZWFkX2FscGhhKQorICAgICAgICAgICAg bWF0Y2ggPSAqc3RyOworICAgICAgICAgIHJlYWRfYWxwaGEgPSB0cnVlOworICAgICAgICB9Cisg ICAgICBlbHNlIGlmIChyZWFkX2FscGhhKQogICAgICAgICB7CiAgICAgICAgICAgcmVhZF9hbHBo YSA9IGZhbHNlOwogICAgICAgICAgIGlmICghY19pc2FscGhhICgqKnN0cikgJiYgJ34nICE9ICoq c3RyKQogICAgICAgICAgICAgbWF0Y2ggPSBOVUxMOwogICAgICAgICB9Ci0gICAgICBlbHNlIGlm ICgnLicgPT0gKipzdHIpCi0gICAgICAgIHsKLSAgICAgICAgICByZWFkX2FscGhhID0gdHJ1ZTsK LSAgICAgICAgICBpZiAoIW1hdGNoKQotICAgICAgICAgICAgbWF0Y2ggPSAqc3RyOwotICAgICAg ICB9CiAgICAgICBlbHNlIGlmICghY19pc2FsbnVtICgqKnN0cikgJiYgJ34nICE9ICoqc3RyKQog ICAgICAgICBtYXRjaCA9IE5VTEw7CiAgICAgICAoKnN0cikrKzsKICAgICB9CisgIGlmIChyZWFk X2FscGhhKQorICAgIHJldHVybiBOVUxMOwogICByZXR1cm4gbWF0Y2g7CiB9CiAKZGlmZiAtLWdp dCBhL3Rlc3RzL3Rlc3QtZmlsZXZlcmNtcC5jIGIvdGVzdHMvdGVzdC1maWxldmVyY21wLmMKaW5k ZXggZDZjNjVmYWQ5Li5hODQ5NmVjOTkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3Rlc3QtZmlsZXZlcmNt cC5jCisrKyBiL3Rlc3RzL3Rlc3QtZmlsZXZlcmNtcC5jCkBAIC01MSw2ICs1MSwxMCBAQCBzdGF0 aWMgY29uc3QgY2hhciAqY29uc3QgZXhhbXBsZXNbXSA9CiAgICJhLmIiLAogICAiYS5iY34iLAog ICAiYS5iYyIsCisgICJhKyIsCisgICJhLiIsCisgICJhLi5hIiwKKyAgImEuKyIsCiAgICJifiIs CiAgICJiIiwKICAgImdjYy1jKystMTAuZmM5LnRhci5neiIsCg== --000000000000cef71405c5b272c8-- From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 28 12:41:29 2021 Received: (at submit) by debbugs.gnu.org; 28 Jun 2021 16:41:29 +0000 Received: from localhost ([127.0.0.1]:52355 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lxuK9-000666-Fb for submit@debbugs.gnu.org; Mon, 28 Jun 2021 12:41:29 -0400 Received: from lists.gnu.org ([209.51.188.17]:44708) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lxuK7-00065y-2O for submit@debbugs.gnu.org; Mon, 28 Jun 2021 12:41:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57610) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lxuK6-0006ss-QZ for bug-coreutils@gnu.org; Mon, 28 Jun 2021 12:41:26 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:45178) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lxuK4-0005Pu-0J for bug-coreutils@gnu.org; Mon, 28 Jun 2021 12:41:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1624898483; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OFAF65SUj6GUkS5j6qVau2eA2S3d5o9tLgU+RWHR4bU=; b=iCt8pVBBROAriVeUwTgKt91o4qyBHCx7az9ygUTZDix7dN/EW+fuXK2s4clltw08mi9t/A fmpMh/oMs6qtiP/NJUJLz/Tn7cmxp/SRv4yyRMSh7Y8GGaIJfvTr3MK9ZryqGs5a1/ZcIB AgLpXSQPdSPr2B/BW+xwjOCzehqQ83o= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-37-6kaY8Fh3NZOESwDGuPw69A-1; Mon, 28 Jun 2021 12:41:19 -0400 X-MC-Unique: 6kaY8Fh3NZOESwDGuPw69A-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B553310C7D66; Mon, 28 Jun 2021 16:41:18 +0000 (UTC) Received: from nbkamil.localnet (unknown [10.43.7.71]) by smtp.corp.redhat.com (Postfix) with ESMTP id EC8DA100763B; Mon, 28 Jun 2021 16:41:17 +0000 (UTC) From: Kamil Dudka To: Michael Subject: Re: bug#49239: Unexpected results with sort -V Date: Mon, 28 Jun 2021 18:41:17 +0200 Message-ID: <2780322.e9J7NaK4W3@nbkamil> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kdudka@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Received-SPF: pass client-ip=216.205.24.124; envelope-from=kdudka@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.375, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: submit Cc: 49239@debbugs.gnu.org, bug-coreutils@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) On Sunday, June 27, 2021 12:04:53 AM CEST Michael wrote: > Hi, > I found some unexpected results with sort -V. I hope this is the correct > place to send a bug report to [1]. > They are caused by a bug in filevercmp inside gnulib, specifically in the > function match_suffix. > I assume it should, as documented, match a file ending as defined by this > regex: /(\.[A-Za-z~][A-Za-z0-9~]*)*$/ > However, I found two cases where this does not happen: > 1) Two consecutive dots. It is not checked if the character after a dot is > a dot. This results in nothing being matched in a case like "a..a", even > though it should match ".a" according to the regex. > Testcase: printf "a..a\na.+" | sort -V # a..a should be before a.+ I think > 2) A trailing dot. If there is no additional character after a dot, it is > still matched (e.g. for "a." the . is matched). > Testcase: printf "a.\na+" | sort -V # I think a+ should be before a. As far as I understand, regex (\.[A-Za-z~][A-Za-z0-9~]*)*$ specifies that each dot has to be followed by [A-Za-z~] to be matched. Am I missing anything? I am not saying that the current behavior is perfect (a solution that works as expected in all scenarios is difficult to find in this case) but, at least, it seems to me that it works as it is described. Kamil From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 28 12:52:22 2021 Received: (at submit) by debbugs.gnu.org; 28 Jun 2021 16:52:22 +0000 Received: from localhost ([127.0.0.1]:52369 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lxuUg-0006Nh-Ff for submit@debbugs.gnu.org; Mon, 28 Jun 2021 12:52:22 -0400 Received: from lists.gnu.org ([209.51.188.17]:52154) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lxuUe-0006NZ-6K for submit@debbugs.gnu.org; Mon, 28 Jun 2021 12:52:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59358) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lxuUd-0004ry-SE for bug-coreutils@gnu.org; Mon, 28 Jun 2021 12:52:19 -0400 Received: from mail-ed1-x52e.google.com ([2a00:1450:4864:20::52e]:38579) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lxuUc-000483-5A for bug-coreutils@gnu.org; Mon, 28 Jun 2021 12:52:19 -0400 Received: by mail-ed1-x52e.google.com with SMTP id q14so26891656eds.5 for ; Mon, 28 Jun 2021 09:52:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:date:mime-version:user-agent:subject:to:cc:references :from:in-reply-to:content-transfer-encoding; bh=aw78DToBiDYBlJT3WzgfGbgUgt0wjGjgTCc4Ga4B1LA=; b=FkEdz7aYRsRsHilS2Up5d4WYIyDtqHJ8+SJCakf5M6p61KYloIzMKtBiJJyne5kPb+ 7hyKUht8uYW8leu8pptnE2tvuQOZwG5vBjCappxb5spzfiATuxS9pcfEFauI3IixBMmY 62FxfRpnt3zijX8Bz9kyT30TXDTBAfNbwAO6Bwz9+DVVp/KRudr9TXmbpKVRwuin+M54 zpzZtB6krKKPXw89GQc3Vq8gxj0Np89jhUiKX34DQ4JMFwim4oqpj21yRHJFS3uOedwV fa1jc1gXU4C74H8OElzYvgxESay5yq7919PVMqQrH7HmYvql2Ft1h9nw5QiS2AIJ3VoE WZyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :to:cc:references:from:in-reply-to:content-transfer-encoding; bh=aw78DToBiDYBlJT3WzgfGbgUgt0wjGjgTCc4Ga4B1LA=; b=syYn+G2NnQ+2yDfql7Kwe1j1gxtT+1yVBdXJYV54mRGz9/5VxxnU4XKP1hA5H58Ymq dNEN1J1lgqjUk0QWLbS+GT/BqhjuhxCgKzFUSkMde1ZMI8PN71P0r/lvWGWuWCVyCgc9 SGjSnZbqKkCAUEBjOgbsYHDrplkG6pG3KssHCQhLV3UncJU7clLucdTQymbGlUTBHGkg MfrocDYdThtsoQHp6+h2IFcnRvkfp+BOgGxQGaWa80vQX48yOFl02vImje1qfIiU9I9S agCdM9rgOtpXAhcTBwN9K7IssHXpFb6ufSqiNRlbcQNmQ9IQ3r8baxXLgXGx5hFb90MP 5fyA== X-Gm-Message-State: AOAM530NbVkH6blL1FioLjc4Gj1+A1AQ/88iUiOS5y3H+QWxU1XBaLrM Q0A5MOIO6JZdH79x6pJcXwA= X-Google-Smtp-Source: ABdhPJxog29HKNHP7HcQIhWcjMLh1l2blk0Ev2k0E9n2GNrMup05H0B6bgcnCVGILvrVyTcK6aQ0GA== X-Received: by 2002:aa7:d918:: with SMTP id a24mr35480637edr.235.1624899136402; Mon, 28 Jun 2021 09:52:16 -0700 (PDT) Received: from [192.168.1.3] ([151.62.53.60]) by smtp.gmail.com with UTF8SMTPSA id dz18sm5154479edb.79.2021.06.28.09.52.15 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 28 Jun 2021 09:52:16 -0700 (PDT) Message-ID: <4394bd5c-8246-0add-762b-ec9c1d5073e2@gmail.com> Date: Mon, 28 Jun 2021 18:52:14 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.0a1 Subject: Re: bug#49239: Unexpected results with sort -V To: Kamil Dudka References: <2780322.e9J7NaK4W3@nbkamil> From: Michael Debertol In-Reply-To: <2780322.e9J7NaK4W3@nbkamil> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Received-SPF: pass client-ip=2a00:1450:4864:20::52e; envelope-from=michael.debertol@gmail.com; helo=mail-ed1-x52e.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, NICE_REPLY_A=-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.3 (-) X-Debbugs-Envelope-To: submit Cc: 49239@debbugs.gnu.org, bug-coreutils@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Am 28.06.21 um 18:41 schrieb Kamil Dudka: > On Sunday, June 27, 2021 12:04:53 AM CEST Michael wrote: >> Hi, >> I found some unexpected results with sort -V. I hope this is the correct >> place to send a bug report to [1]. >> They are caused by a bug in filevercmp inside gnulib, specifically in the >> function match_suffix. >> I assume it should, as documented, match a file ending as defined by this >> regex: /(\.[A-Za-z~][A-Za-z0-9~]*)*$/ >> However, I found two cases where this does not happen: >> 1) Two consecutive dots. It is not checked if the character after a dot is >> a dot. This results in nothing being matched in a case like "a..a", even >> though it should match ".a" according to the regex. >> Testcase: printf "a..a\na.+" | sort -V # a..a should be before a.+ I think >> 2) A trailing dot. If there is no additional character after a dot, it is >> still matched (e.g. for "a." the . is matched). >> Testcase: printf "a.\na+" | sort -V # I think a+ should be before a. > As far as I understand, regex (\.[A-Za-z~][A-Za-z0-9~]*)*$ specifies that each > dot has to be followed by [A-Za-z~] to be matched. Am I missing anything? > > I am not saying that the current behavior is perfect (a solution that works as > expected in all scenarios is difficult to find in this case) but, at least, it > seems to me that it works as it is described. I was trying to say that the regex is not followed in two cases: - when there are two dots followed by [A-Za-z~], the second dot should be matched, but it is not. An example is "foo..a": In this case ".a" should be matched, but it is not (nothing is matched) - when there's a trailing dot, the trailing dot is matched even though it is not followed by anything e.g. "foo." matches the "." as the file ending, but it should not match a file ending in this case. I hope it's clearer now, Michael From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 28 13:54:36 2021 Received: (at submit) by debbugs.gnu.org; 28 Jun 2021 17:54:36 +0000 Received: from localhost ([127.0.0.1]:52446 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lxvSu-00083C-29 for submit@debbugs.gnu.org; Mon, 28 Jun 2021 13:54:36 -0400 Received: from lists.gnu.org ([209.51.188.17]:57356) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lxvSr-000833-B4 for submit@debbugs.gnu.org; Mon, 28 Jun 2021 13:54:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42456) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lxvSq-0007mI-Vg for bug-coreutils@gnu.org; Mon, 28 Jun 2021 13:54:32 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:56077) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lxvSo-0003Ot-Gh for bug-coreutils@gnu.org; Mon, 28 Jun 2021 13:54:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1624902869; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=uB4dEO5G02likaToAsdY/Z8bnYDgqlsMT8RiyO8JJzk=; b=IOC5H9T1Pab/d6ed3b4yKRBsjwJXE49rLLFHfYOH2Y6HTddamuJ2M76ghnZ5MJRDm2psX8 OrkzHX9/1D54TQTksbLV5KUZPU7KnBoBwyDRx/dCg4KQLfG74MT1c4U9cMG7peuLlqkbmG L+gZkO+WL/IE410pcvoCl4sxcBZLO4s= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-292-xHuFA859PH2g3PqaBzeafg-1; Mon, 28 Jun 2021 13:54:27 -0400 X-MC-Unique: xHuFA859PH2g3PqaBzeafg-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CD53B800C60; Mon, 28 Jun 2021 17:54:26 +0000 (UTC) Received: from nbkamil.localnet (unknown [10.43.7.71]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1A9801007623; Mon, 28 Jun 2021 17:54:25 +0000 (UTC) From: Kamil Dudka To: Michael Debertol Subject: Re: bug#49239: Unexpected results with sort -V Date: Mon, 28 Jun 2021 19:54:25 +0200 Message-ID: <9910662.nUPlyArG6x@nbkamil> In-Reply-To: <4394bd5c-8246-0add-762b-ec9c1d5073e2@gmail.com> References: <2780322.e9J7NaK4W3@nbkamil> <4394bd5c-8246-0add-762b-ec9c1d5073e2@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kdudka@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Received-SPF: pass client-ip=170.10.133.124; envelope-from=kdudka@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.375, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: submit Cc: 49239@debbugs.gnu.org, bug-coreutils@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) On Monday, June 28, 2021 6:52:14 PM CEST Michael Debertol wrote: > I was trying to say that the regex is not followed in two cases: > > - when there are two dots followed by [A-Za-z~], the second dot should > be matched, but it is not. > > An example is "foo..a": In this case ".a" should be matched, but it is > not (nothing is matched) > > - when there's a trailing dot, the trailing dot is matched even though > it is not followed by anything > > e.g. "foo." matches the "." as the file ending, but it should not match > a file ending in this case. > > I hope it's clearer now, > > Michael You are right. The matching algorithm was not implemented correctly and the patch you attached fixes it. Sorry for missing it in my previous reply. Kamil From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 13 00:31:57 2022 Received: (at 49239-done) by debbugs.gnu.org; 13 Feb 2022 05:31:57 +0000 Received: from localhost ([127.0.0.1]:36117 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJ7UH-0004Vh-T2 for submit@debbugs.gnu.org; Sun, 13 Feb 2022 00:31:57 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:41044) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJ7U9-0004VL-LD for 49239-done@debbugs.gnu.org; Sun, 13 Feb 2022 00:31:52 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 38FA7160068; Sat, 12 Feb 2022 21:31:39 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id 2Bz46RG9xGnv; Sat, 12 Feb 2022 21:31:34 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id C484916007E; Sat, 12 Feb 2022 21:31:34 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id l4x4dbN0oeWa; Sat, 12 Feb 2022 21:31:34 -0800 (PST) Received: from [192.168.1.9] (cpe-172-91-119-151.socal.res.rr.com [172.91.119.151]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 6BAB0160068; Sat, 12 Feb 2022 21:31:34 -0800 (PST) Content-Type: multipart/mixed; boundary="------------3nF0GattO7cCxepMmMoW0Ps8" Message-ID: <80ac3d45-b23f-7730-f9dc-e2c86136a29a@cs.ucla.edu> Date: Sat, 12 Feb 2022 21:31:33 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Content-Language: en-US To: Kamil Dudka , Michael Debertol References: <2780322.e9J7NaK4W3@nbkamil> <4394bd5c-8246-0add-762b-ec9c1d5073e2@gmail.com> <9910662.nUPlyArG6x@nbkamil> From: Paul Eggert Organization: UCLA Computer Science Department Subject: Re: bug#49239: Unexpected results with sort -V In-Reply-To: <9910662.nUPlyArG6x@nbkamil> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 49239-done Cc: 49239-done@debbugs.gnu.org, Gnulib bugs X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) This is a multi-part message in MIME format. --------------3nF0GattO7cCxepMmMoW0Ps8 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 6/28/21 10:54, Kamil Dudka wrote: > You are right. The matching algorithm was not implemented correctly and > the patch you attached fixes it. I looked into Bug#49239 and found some more places where the documentation disagreed with the code. I installed the attached patches into Gnulib and Coreutils, respectively, which should bring the two into agreement and should fix the bugs that Michael reported albeit in a different way than his proposed patch. Briefly: * The code didn't allow file name suffixes to be the entire file name, but the documentation did. Here I went with the documentation. I could be talked into the other way; it shouldn't matter much either way. * The code did the preliminary test (without suffixes) using strcmp, the documentation said it should use version comparison. Here I went with the documentation. * As Michael mentioned, sort -V mishandled NUL. I fixed this by adding a Gnulib function filenvercmp that treats NUL as just another character. * As Michael also mentioned, filevercmp fell back on strcmp if version sort found no difference, which meant sort's --stable flag was ineffective. I fixed this by not having filevercmp fall back on strcmp. * I fixed the two-consecutive dot and trailing-dot bugs Michael mentioned, by rewriting the suffix finder to not have that confusing READ_ALPHA state variable, and to instead implement the regular expression's nested * operators in the usual way with nested loops. Thanks, Michael, for reporting the problem. I'm boldly closing the Coreutils bug report as fixed. --------------3nF0GattO7cCxepMmMoW0Ps8 Content-Type: text/x-patch; charset=UTF-8; name="0001-filevercmp-fix-several-unexpected-results.patch" Content-Disposition: attachment; filename="0001-filevercmp-fix-several-unexpected-results.patch" Content-Transfer-Encoding: base64 RnJvbSA5ZjQ4ZmI5OTJhM2Q3ZTk2NjEwYzRjZThiZTk2OWNmZjJkNjFhMDFiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBTYXQsIDEyIEZlYiAyMDIyIDE2OjI3OjA1IC0wODAwClN1YmplY3Q6IFtQQVRD SF0gZmlsZXZlcmNtcDogZml4IHNldmVyYWwgdW5leHBlY3RlZCByZXN1bHRzCgpQcm9ibGVt cyByZXBvcnRlZCBieSBNaWNoYWVsIERlYmVydG9sIGluIDxodHRwczovL2J1Z3MuZ251Lm9y Zy80OTIzOT4uCldoaWxlIGxvb2tpbmcgaW50byB0aGlzLCBJIHNwb3R0ZWQgc29tZSBtb3Jl IGFyZWFzIHdoZXJlIHRoZQpjb2RlIGFuZCBkb2N1bWVudGF0aW9uIGRpZCBub3QgYWdyZWUs IG9yIHdoZXJlIHRoZSBkb2N1bWVudGF0aW9uCndhcyB1bmNsZWFyLiAgVGhlIGJpZ2dlc3Qg Y2hhbmdlIG5lZWRlZCBieSBjb3JldXRpbHMgaXMgYSBuZXcKZnVuY3Rpb24gZmlsZW52ZXJj bXAgdGhhdCBjYW4gY29tcGFyZSBieXRlIHN0cmluZ3MgY29udGFpbmluZyBOVUwuCiogbGli L2ZpbGV2ZXJjbXAuYzogRG8gbm90IGluY2x1ZGUgc3lzL3R5cGVzLmgsIHN0ZGxpYi5oLCBz dHJpbmcuaC4KSW5jbHVkZSBpZHguaCwgdmVyaWZ5LmguCihtYXRjaF9zdWZmaXgpOiBSZW1v dmUsIHJlcGxhY2luZyBhbGwgdXNlcyB3aXRoIGNhbGxzIHRvIC4uLgooZmlsZV9wcmVmaXhs ZW4pOiAuLi4gdGhpcyBuZXcgZnVuY3Rpb24uICBTaW1wbGlmeSBpdCBieQphdm9pZGluZyB0 aGUgbmVlZCBmb3IgYSBjb25mdXNpbmcgUkVBRF9BTFBIQSBzdGF0ZSB2YXJpYWJsZS4KQ2hh bmdlIGl0cyBBUEkgdG8gc29tZXRoaW5nIG1vcmUgdXNlZnVsLCB3aXRoIGEgKkxFTiBhcmcu Cml0IHdpdGggYSBuZXcgKkxFTiBhcmcuCihmaWxlX3ByZWZpeGxlbiwgdmVycmV2Y21wKToK UHJlZmVyIGlkeF90IHRvIHNpemVfdCB3aGVyZSBlaXRoZXIgd2lsbCBkby4KKG9yZGVyKTog Q2hhbmdlIGFyZ3MgdG8gUywgUE9TLCBMRU4gaW5zdGVhZCBvZiBqdXN0IFNbUE9TXS4KVGhp cyBsZXRzIHVzIGhhbmRsZSBOVUwgYnl0ZXMgY29ycmVjdGx5LiAgQ2FsbGVycyBjaGFuZ2Vk LgpWZXJpZnkgdGhhdCBpbnRzIGFyZSBzdWZmaWNpZW50bHkgd2lkZSBmb3IgaXRzIEFQSS4K KHZlcnJldmNtcCk6IERvbid0IGFzc3VtZSB0aGF0IFMxW1MxX0xFTl0gaXMgYSBub24tZGln aXQsCmFuZCBsaWtld2lzZSBmb3IgUzJbUzJfTEVOXS4gIFRoZSBieXRlIG1pZ2h0IG5vdCBi ZSBhY2Nlc3NpYmxlCmlmIGZpbGVudmVyY21wIGlzIGJlaW5nIGNhbGxlZC4KKGZpbGV2ZXJj bXApOiBSZWltcGxlbWVudCBieSBjYWxsaW5nIGZpbGVudmVyY21wLgooZmlsZW52ZXJjbXAp OiBOZXcgZnVuY3Rpb24sIHJld3JpdHRlbiB3aXRob3V0IHRoZSBhc3N1bXB0aW9uCnRoYXQg dGhlIGlucHV0cyBhcmUgbnVsbC10ZXJtaW5hdGVkLgpSZW1vdmUgImVhc3kgY29tcGFyaXNv biB0byBzZWUgaWYgc3RyaW5ncyBhcmUgaWRlbnRpY2FsIiwgYXMgdGhlCnVzZSBvZiBpdCBs YXRlciAoYSkgd2FzIHVuZG9jdW1lbnRlZCwgYW5kIChiKSBjYXVzZWQgc29ydCAtViB0byBi ZQp1bnN0YWJsZS4gIFdoZW4gYm90aCBzdHJpbmdzIHN0YXJ0IHdpdGggIi4iLCBkbyBub3Qg c2tpcCBwYXN0CnRoZSAiLiJzIGJlZm9yZSBsb29raW5nIGZvciBzdWZmaXhlcywgYXMgdGhp cyBkaXNhZ3JlZWQKd2l0aCB0aGUgZG9jdW1lbnRhdGlvbi4KKiBsaWIvZmlsZXZlcmNtcC5o OiBGaXggY29tbWVudHMsIHdoaWNoIGhhZCBtYW55IG1pc3Rha2VzLgooZmlsZW52ZXJjbXAp OiBOZXcgZGVjbC4KKiBtb2R1bGVzL2ZpbGV2ZXJjbXAgKERlcGVuZHMtb24pOiBBZGQgaWR4 LCB2ZXJpZnkuICBSZW1vdmUgc3RyaW5nLgoqIHRlc3RzL3Rlc3QtZmlsZXZlcmNtcC5jOiBJ bmNsdWRlIHN0cmluZy5oLgooZXhhbXBsZXMpOiBSZW9yZGVyIGV4YW1wbGVzICIuMCIgYW5k ICIuOSIgdGhhdCBtYXRjaGVkIHRoZSBjb2RlCmJ1dCBub3QgdGhlIGRvY3VtZW50YXRpb24u ICBUaGUgY29kZSBoYXMgYmVlbiBmaXhlZCB0byBtYXRjaCB0aGUKZG9jdW1lbnRhdGlvbi4g IEFkZCBzb21lIGV4YW1wbGVzIGludm9sdmluZyBcMSBzbyB0aGF0IHRoZXkKY2FuIGJlIHRy aWVkIHdpdGggYm90aCBcMSBhbmQgXDAuICBBZGQgc29tZSBvdGhlciBleGFtcGxlcwp0YWtl biBmcm9tIHRoZSBidWcgcmVwb3J0LgooZXF1YWxzKTogTmV3IHNldCBvZiB0ZXN0IGNhc2Vz Lgooc2lnbiwgdGVzdF9maWxldmVyY21wKTogTmV3IGZ1bmN0aW9ucy4KKG1haW4pOiBSZW1v dmUgdGVzdCBjYXNlIHdoZXJlIHRoZSBmaXhlZCBmaWxldmVyY21wIGRpc2FncmVlcyB3aXRo CnN0cnZlcnNjbXAuICBVc2UgdGVzdF9maWxldmVyY21wIGluc3RlYWQgb2YgZmlsZXZlcmNt cCwgc28gdGhhdAp3ZSBhbHNvIHRlc3QgZmlsZW52ZXJjbXAuICBUZXN0IHRoZSBuZXdseS1p bnRyb2R1Y2VkIEVRVUFMUyBjYXNlcy4KLS0tCiBDaGFuZ2VMb2cgICAgICAgICAgICAgICB8 ICA0NiArKysrKysrKysrCiBsaWIvZmlsZXZlcmNtcC5jICAgICAgICB8IDE4NyArKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiBsaWIvZmlsZXZlcmNtcC5oICAg ICAgICB8ICA2NiArKysrKysrKysrLS0tLQogbW9kdWxlcy9maWxldmVyY21wICAgICAgfCAg IDMgKy0KIHRlc3RzL3Rlc3QtZmlsZXZlcmNtcC5jIHwgIDk0ICsrKysrKysrKysrKysrKysr KystCiA1IGZpbGVzIGNoYW5nZWQsIDI4NCBpbnNlcnRpb25zKCspLCAxMTIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDYyMTYyY2Jm Y2UuLjRiZjBjZWM3ZjAgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cK QEAgLTEsMyArMSw0OSBAQAorMjAyMi0wMi0xMiAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3Mu dWNsYS5lZHU+CisKKwlmaWxldmVyY21wOiBmaXggc2V2ZXJhbCB1bmV4cGVjdGVkIHJlc3Vs dHMKKwlQcm9ibGVtcyByZXBvcnRlZCBieSBNaWNoYWVsIERlYmVydG9sIGluIDxodHRwczov L2J1Z3MuZ251Lm9yZy80OTIzOT4uCisJV2hpbGUgbG9va2luZyBpbnRvIHRoaXMsIEkgc3Bv dHRlZCBzb21lIG1vcmUgYXJlYXMgd2hlcmUgdGhlCisJY29kZSBhbmQgZG9jdW1lbnRhdGlv biBkaWQgbm90IGFncmVlLCBvciB3aGVyZSB0aGUgZG9jdW1lbnRhdGlvbgorCXdhcyB1bmNs ZWFyLiAgVGhlIGJpZ2dlc3QgY2hhbmdlIG5lZWRlZCBieSBjb3JldXRpbHMgaXMgYSBuZXcK KwlmdW5jdGlvbiBmaWxlbnZlcmNtcCB0aGF0IGNhbiBjb21wYXJlIGJ5dGUgc3RyaW5ncyBj b250YWluaW5nIE5VTC4KKwkqIGxpYi9maWxldmVyY21wLmM6IERvIG5vdCBpbmNsdWRlIHN5 cy90eXBlcy5oLCBzdGRsaWIuaCwgc3RyaW5nLmguCisJSW5jbHVkZSBpZHguaCwgdmVyaWZ5 LmguCisJKG1hdGNoX3N1ZmZpeCk6IFJlbW92ZSwgcmVwbGFjaW5nIGFsbCB1c2VzIHdpdGgg Y2FsbHMgdG8gLi4uCisJKGZpbGVfcHJlZml4bGVuKTogLi4uIHRoaXMgbmV3IGZ1bmN0aW9u LiAgU2ltcGxpZnkgaXQgYnkKKwlhdm9pZGluZyB0aGUgbmVlZCBmb3IgYSBjb25mdXNpbmcg UkVBRF9BTFBIQSBzdGF0ZSB2YXJpYWJsZS4KKwlDaGFuZ2UgaXRzIEFQSSB0byBzb21ldGhp bmcgbW9yZSB1c2VmdWwsIHdpdGggYSAqTEVOIGFyZy4KKwlpdCB3aXRoIGEgbmV3ICpMRU4g YXJnLgorCShmaWxlX3ByZWZpeGxlbiwgdmVycmV2Y21wKToKKwlQcmVmZXIgaWR4X3QgdG8g c2l6ZV90IHdoZXJlIGVpdGhlciB3aWxsIGRvLgorCShvcmRlcik6IENoYW5nZSBhcmdzIHRv IFMsIFBPUywgTEVOIGluc3RlYWQgb2YganVzdCBTW1BPU10uCisJVGhpcyBsZXRzIHVzIGhh bmRsZSBOVUwgYnl0ZXMgY29ycmVjdGx5LiAgQ2FsbGVycyBjaGFuZ2VkLgorCVZlcmlmeSB0 aGF0IGludHMgYXJlIHN1ZmZpY2llbnRseSB3aWRlIGZvciBpdHMgQVBJLgorCSh2ZXJyZXZj bXApOiBEb24ndCBhc3N1bWUgdGhhdCBTMVtTMV9MRU5dIGlzIGEgbm9uLWRpZ2l0LAorCWFu ZCBsaWtld2lzZSBmb3IgUzJbUzJfTEVOXS4gIFRoZSBieXRlIG1pZ2h0IG5vdCBiZSBhY2Nl c3NpYmxlCisJaWYgZmlsZW52ZXJjbXAgaXMgYmVpbmcgY2FsbGVkLgorCShmaWxldmVyY21w KTogUmVpbXBsZW1lbnQgYnkgY2FsbGluZyBmaWxlbnZlcmNtcC4KKwkoZmlsZW52ZXJjbXAp OiBOZXcgZnVuY3Rpb24sIHJld3JpdHRlbiB3aXRob3V0IHRoZSBhc3N1bXB0aW9uCisJdGhh dCB0aGUgaW5wdXRzIGFyZSBudWxsLXRlcm1pbmF0ZWQuCisJUmVtb3ZlICJlYXN5IGNvbXBh cmlzb24gdG8gc2VlIGlmIHN0cmluZ3MgYXJlIGlkZW50aWNhbCIsIGFzIHRoZQorCXVzZSBv ZiBpdCBsYXRlciAoYSkgd2FzIHVuZG9jdW1lbnRlZCwgYW5kIChiKSBjYXVzZWQgc29ydCAt ViB0byBiZQorCXVuc3RhYmxlLiAgV2hlbiBib3RoIHN0cmluZ3Mgc3RhcnQgd2l0aCAiLiIs IGRvIG5vdCBza2lwIHBhc3QKKwl0aGUgIi4icyBiZWZvcmUgbG9va2luZyBmb3Igc3VmZml4 ZXMsIGFzIHRoaXMgZGlzYWdyZWVkCisJd2l0aCB0aGUgZG9jdW1lbnRhdGlvbi4KKwkqIGxp Yi9maWxldmVyY21wLmg6IEZpeCBjb21tZW50cywgd2hpY2ggaGFkIG1hbnkgbWlzdGFrZXMu CisJKGZpbGVudmVyY21wKTogTmV3IGRlY2wuCisJKiBtb2R1bGVzL2ZpbGV2ZXJjbXAgKERl cGVuZHMtb24pOiBBZGQgaWR4LCB2ZXJpZnkuICBSZW1vdmUgc3RyaW5nLgorCSogdGVzdHMv dGVzdC1maWxldmVyY21wLmM6IEluY2x1ZGUgc3RyaW5nLmguCisJKGV4YW1wbGVzKTogUmVv cmRlciBleGFtcGxlcyAiLjAiIGFuZCAiLjkiIHRoYXQgbWF0Y2hlZCB0aGUgY29kZQorCWJ1 dCBub3QgdGhlIGRvY3VtZW50YXRpb24uICBUaGUgY29kZSBoYXMgYmVlbiBmaXhlZCB0byBt YXRjaCB0aGUKKwlkb2N1bWVudGF0aW9uLiAgQWRkIHNvbWUgZXhhbXBsZXMgaW52b2x2aW5n IFwxIHNvIHRoYXQgdGhleQorCWNhbiBiZSB0cmllZCB3aXRoIGJvdGggXDEgYW5kIFwwLiAg QWRkIHNvbWUgb3RoZXIgZXhhbXBsZXMKKwl0YWtlbiBmcm9tIHRoZSBidWcgcmVwb3J0Lgor CShlcXVhbHMpOiBOZXcgc2V0IG9mIHRlc3QgY2FzZXMuCisJKHNpZ24sIHRlc3RfZmlsZXZl cmNtcCk6IE5ldyBmdW5jdGlvbnMuCisJKG1haW4pOiBSZW1vdmUgdGVzdCBjYXNlIHdoZXJl IHRoZSBmaXhlZCBmaWxldmVyY21wIGRpc2FncmVlcyB3aXRoCisJc3RydmVyc2NtcC4gIFVz ZSB0ZXN0X2ZpbGV2ZXJjbXAgaW5zdGVhZCBvZiBmaWxldmVyY21wLCBzbyB0aGF0CisJd2Ug YWxzbyB0ZXN0IGZpbGVudmVyY21wLiAgVGVzdCB0aGUgbmV3bHktaW50cm9kdWNlZCBFUVVB TFMgY2FzZXMuCisKIDIwMjItMDItMDkgIEJydW5vIEhhaWJsZSAgPGJydW5vQGNsaXNwLm9y Zz4KIAogCXN0cmluZzogRml4ICJtaXNtYXRjaGVkIGFsbG9jYXRpb24gZnVuY3Rpb24iIHdh cm5pbmdzIHJlZ2FyZGluZyBzdHJuZHVwLgpkaWZmIC0tZ2l0IGEvbGliL2ZpbGV2ZXJjbXAu YyBiL2xpYi9maWxldmVyY21wLmMKaW5kZXggYjdlM2FjNjE2Ny4uZDU0NmU3OTA1NCAxMDA2 NDQKLS0tIGEvbGliL2ZpbGV2ZXJjbXAuYworKysgYi9saWIvZmlsZXZlcmNtcC5jCkBAIC0x LDQgKzEsNSBAQAotLyoKKy8qIENvbXBhcmUgZmlsZSBuYW1lcyBjb250YWluaW5nIHZlcnNp b24gbnVtYmVycy4KKwogICAgQ29weXJpZ2h0IChDKSAxOTk1IElhbiBKYWNrc29uIDxpd2ox MEBjdXMuY2FtLmFjLnVrPgogICAgQ29weXJpZ2h0IChDKSAyMDAxIEFudGhvbnkgVG93bnMg PGFqQGF6dXJlLmh1bWJ1Zy5vcmcuYXU+CiAgICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTE5LDYwICsyMCw2NSBAQAogI2lu Y2x1ZGUgPGNvbmZpZy5oPgogI2luY2x1ZGUgImZpbGV2ZXJjbXAuaCIKIAotI2luY2x1ZGUg PHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGJvb2wu aD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxjLWN0eXBlLmg+CiAjaW5jbHVk ZSA8bGltaXRzLmg+Ci0KLS8qIE1hdGNoIGEgZmlsZSBzdWZmaXggZGVmaW5lZCBieSB0aGlz IHJlZ3VsYXIgZXhwcmVzc2lvbjoKLSAgIC8oXC5bQS1aYS16fl1bQS1aYS16MC05fl0qKSok LwotICAgU2NhbiB0aGUgc3RyaW5nICpTVFIgYW5kIHJldHVybiBhIHBvaW50ZXIgdG8gdGhl IG1hdGNoaW5nIHN1ZmZpeCwgb3IKLSAgIE5VTEwgaWYgbm90IGZvdW5kLiAgVXBvbiByZXR1 cm4sICpTVFIgcG9pbnRzIHRvIHRlcm1pbmF0aW5nIE5VTC4gICovCi1zdGF0aWMgY29uc3Qg Y2hhciAqCi1tYXRjaF9zdWZmaXggKGNvbnN0IGNoYXIgKipzdHIpCisjaW5jbHVkZSA8aWR4 Lmg+CisjaW5jbHVkZSA8dmVyaWZ5Lmg+CisKKy8qIFJldHVybiB0aGUgbGVuZ3RoIG9mIGEg cHJlZml4IG9mIFMgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgc3VmZml4CisgICBkZWZpbmVk IGJ5IHRoaXMgZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9uIGluIHRoZSBDIGxvY2FsZToK KyAgICAgKFwuW0EtWmEten5dW0EtWmEtejAtOX5dKikqJAorICAgSWYgKkxFTiBpcyAtMSwg UyBpcyBhIHN0cmluZzsgc2V0ICpMRU4gdG8gUydzIGxlbmd0aC4KKyAgIE90aGVyd2lzZSwg KkxFTiBzaG91bGQgYmUgbm9ubmVnYXRpdmUsIFMgaXMgYSBjaGFyIGFycmF5LAorICAgYW5k ICpMRU4gZG9lcyBub3QgY2hhbmdlLiAgKi8KK3N0YXRpYyBpZHhfdAorZmlsZV9wcmVmaXhs ZW4gKGNoYXIgY29uc3QgKnMsIHB0cmRpZmZfdCAqbGVuKQogewotICBjb25zdCBjaGFyICpt YXRjaCA9IE5VTEw7Ci0gIGJvb2wgcmVhZF9hbHBoYSA9IGZhbHNlOwotICB3aGlsZSAoKipz dHIpCisgIHNpemVfdCBuID0gKmxlbjsgIC8qIFNJWkVfTUFYIGlmIE4gPT0gLTEuICAqLwor CisgIGZvciAoaWR4X3QgaSA9IDA7IDsgaSsrKQogICAgIHsKLSAgICAgIGlmIChyZWFkX2Fs cGhhKQotICAgICAgICB7Ci0gICAgICAgICAgcmVhZF9hbHBoYSA9IGZhbHNlOwotICAgICAg ICAgIGlmICghY19pc2FscGhhICgqKnN0cikgJiYgJ34nICE9ICoqc3RyKQotICAgICAgICAg ICAgbWF0Y2ggPSBOVUxMOwotICAgICAgICB9Ci0gICAgICBlbHNlIGlmICgnLicgPT0gKipz dHIpCisgICAgICBpZHhfdCBwcmVmaXhsZW4gPSBpOworICAgICAgd2hpbGUgKGkgKyAxIDwg biAmJiBzW2ldID09ICcuJyAmJiAoY19pc2FscGhhIChzW2kgKyAxXSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHNbaSArIDFdID09ICd+JykpCisg ICAgICAgIGZvciAoaSArPSAyOyBpIDwgbiAmJiAoY19pc2FsbnVtIChzW2ldKSB8fCBzW2ld ID09ICd+Jyk7IGkrKykKKyAgICAgICAgICBjb250aW51ZTsKKworICAgICAgaWYgKCpsZW4g PCAwID8gIXNbaV0gOiBpID09IG4pCiAgICAgICAgIHsKLSAgICAgICAgICByZWFkX2FscGhh ID0gdHJ1ZTsKLSAgICAgICAgICBpZiAoIW1hdGNoKQotICAgICAgICAgICAgbWF0Y2ggPSAq c3RyOworICAgICAgICAgICpsZW4gPSBpOworICAgICAgICAgIHJldHVybiBwcmVmaXhsZW47 CiAgICAgICAgIH0KLSAgICAgIGVsc2UgaWYgKCFjX2lzYWxudW0gKCoqc3RyKSAmJiAnficg IT0gKipzdHIpCi0gICAgICAgIG1hdGNoID0gTlVMTDsKLSAgICAgICgqc3RyKSsrOwogICAg IH0KLSAgcmV0dXJuIG1hdGNoOwogfQogCi0vKiB2ZXJyZXZjbXAgaGVscGVyIGZ1bmN0aW9u ICovCisvKiBSZXR1cm4gYSB2ZXJzaW9uIHNvcnQgY29tcGFyaXNvbiB2YWx1ZSBmb3IgUydz IGJ5dGUgYXQgcG9zaXRpb24gUE9TLgorICAgUyBoYXMgbGVuZ3RoIExFTi4gIElmIFBPUyA9 PSBMRU4sIHNvcnQgYmVmb3JlIGFsbCBub24tJ34nIGJ5dGVzLiAgKi8KKwogc3RhdGljIGlu dAotb3JkZXIgKHVuc2lnbmVkIGNoYXIgYykKK29yZGVyIChjaGFyIGNvbnN0ICpzLCBpZHhf dCBwb3MsIGlkeF90IGxlbikKIHsKKyAgaWYgKHBvcyA9PSBsZW4pCisgICAgcmV0dXJuIC0x OworCisgIHVuc2lnbmVkIGNoYXIgYyA9IHNbcG9zXTsKICAgaWYgKGNfaXNkaWdpdCAoYykp CiAgICAgcmV0dXJuIDA7CiAgIGVsc2UgaWYgKGNfaXNhbHBoYSAoYykpCiAgICAgcmV0dXJu IGM7CiAgIGVsc2UgaWYgKGMgPT0gJ34nKQotICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4g LTI7CiAgIGVsc2UKLSAgICByZXR1cm4gKGludCkgYyArIFVDSEFSX01BWCArIDE7CisgICAg eworICAgICAgdmVyaWZ5IChVQ0hBUl9NQVggPD0gKElOVF9NQVggLSAxIC0gMikgLyAyKTsK KyAgICAgIHJldHVybiBjICsgVUNIQVJfTUFYICsgMTsKKyAgICB9CiB9CiAKIC8qIHNsaWdo dGx5IG1vZGlmaWVkIHZlcnJldmNtcCBmdW5jdGlvbiBmcm9tIGRwa2cKLSAgIFMxLCBTMiAt IGNvbXBhcmVkIHN0cmluZwotICAgUzFfTEVOLCBTMl9MRU4gLSBsZW5ndGggb2Ygc3RyaW5n cyB0byBiZSBzY2FubmVkCisgICBTMSwgUzIgLSBjb21wYXJlZCBjaGFyIGFycmF5CisgICBT MV9MRU4sIFMyX0xFTiAtIGxlbmd0aCBvZiBhcnJheXMgdG8gYmUgc2Nhbm5lZAogCiAgICBU aGlzIGltcGxlbWVudHMgdGhlIGFsZ29yaXRobSBmb3IgY29tcGFyaXNvbiBvZiB2ZXJzaW9u IHN0cmluZ3MKICAgIHNwZWNpZmllZCBieSBEZWJpYW4gYW5kIG5vdyB3aWRlbHkgYWRvcHRl ZC4gIFRoZSBkZXRhaWxlZApAQCAtODEsMzcgKzg3LDM4IEBAIG9yZGVyICh1bnNpZ25lZCBj aGFyIGMpCiAgICBpbXBsZW1lbnRzIHRoYXQgZnJvbSBzNS42LjEyIG9mIERlYmlhbiBQb2xp Y3kgdjMuOC4wLjEKICAgIGh0dHBzOi8vd3d3LmRlYmlhbi5vcmcvZG9jL2RlYmlhbi1wb2xp Y3kvY2gtY29udHJvbGZpZWxkcy5odG1sI3MtZi1WZXJzaW9uICovCiBzdGF0aWMgaW50IF9H TF9BVFRSSUJVVEVfUFVSRQotdmVycmV2Y21wIChjb25zdCBjaGFyICpzMSwgc2l6ZV90IHMx X2xlbiwgY29uc3QgY2hhciAqczIsIHNpemVfdCBzMl9sZW4pCit2ZXJyZXZjbXAgKGNvbnN0 IGNoYXIgKnMxLCBpZHhfdCBzMV9sZW4sIGNvbnN0IGNoYXIgKnMyLCBpZHhfdCBzMl9sZW4p CiB7Ci0gIHNpemVfdCBzMV9wb3MgPSAwOwotICBzaXplX3QgczJfcG9zID0gMDsKKyAgaWR4 X3QgczFfcG9zID0gMDsKKyAgaWR4X3QgczJfcG9zID0gMDsKICAgd2hpbGUgKHMxX3BvcyA8 IHMxX2xlbiB8fCBzMl9wb3MgPCBzMl9sZW4pCiAgICAgewogICAgICAgaW50IGZpcnN0X2Rp ZmYgPSAwOwogICAgICAgd2hpbGUgKChzMV9wb3MgPCBzMV9sZW4gJiYgIWNfaXNkaWdpdCAo czFbczFfcG9zXSkpCiAgICAgICAgICAgICAgfHwgKHMyX3BvcyA8IHMyX2xlbiAmJiAhY19p c2RpZ2l0IChzMltzMl9wb3NdKSkpCiAgICAgICAgIHsKLSAgICAgICAgICBpbnQgczFfYyA9 IChzMV9wb3MgPT0gczFfbGVuKSA/IDAgOiBvcmRlciAoczFbczFfcG9zXSk7Ci0gICAgICAg ICAgaW50IHMyX2MgPSAoczJfcG9zID09IHMyX2xlbikgPyAwIDogb3JkZXIgKHMyW3MyX3Bv c10pOworICAgICAgICAgIGludCBzMV9jID0gb3JkZXIgKHMxLCBzMV9wb3MsIHMxX2xlbik7 CisgICAgICAgICAgaW50IHMyX2MgPSBvcmRlciAoczIsIHMyX3BvcywgczJfbGVuKTsKICAg ICAgICAgICBpZiAoczFfYyAhPSBzMl9jKQogICAgICAgICAgICAgcmV0dXJuIHMxX2MgLSBz Ml9jOwogICAgICAgICAgIHMxX3BvcysrOwogICAgICAgICAgIHMyX3BvcysrOwogICAgICAg ICB9Ci0gICAgICB3aGlsZSAoczFbczFfcG9zXSA9PSAnMCcpCisgICAgICB3aGlsZSAoczFf cG9zIDwgczFfbGVuICYmIHMxW3MxX3Bvc10gPT0gJzAnKQogICAgICAgICBzMV9wb3MrKzsK LSAgICAgIHdoaWxlIChzMltzMl9wb3NdID09ICcwJykKKyAgICAgIHdoaWxlIChzMl9wb3Mg PCBzMl9sZW4gJiYgczJbczJfcG9zXSA9PSAnMCcpCiAgICAgICAgIHMyX3BvcysrOwotICAg ICAgd2hpbGUgKGNfaXNkaWdpdCAoczFbczFfcG9zXSkgJiYgY19pc2RpZ2l0IChzMltzMl9w b3NdKSkKKyAgICAgIHdoaWxlIChzMV9wb3MgPCBzMV9sZW4gJiYgczJfcG9zIDwgczJfbGVu CisgICAgICAgICAgICAgJiYgY19pc2RpZ2l0IChzMVtzMV9wb3NdKSAmJiBjX2lzZGlnaXQg KHMyW3MyX3Bvc10pKQogICAgICAgICB7CiAgICAgICAgICAgaWYgKCFmaXJzdF9kaWZmKQog ICAgICAgICAgICAgZmlyc3RfZGlmZiA9IHMxW3MxX3Bvc10gLSBzMltzMl9wb3NdOwogICAg ICAgICAgIHMxX3BvcysrOwogICAgICAgICAgIHMyX3BvcysrOwogICAgICAgICB9Ci0gICAg ICBpZiAoY19pc2RpZ2l0IChzMVtzMV9wb3NdKSkKKyAgICAgIGlmIChzMV9wb3MgPCBzMV9s ZW4gJiYgY19pc2RpZ2l0IChzMVtzMV9wb3NdKSkKICAgICAgICAgcmV0dXJuIDE7Ci0gICAg ICBpZiAoY19pc2RpZ2l0IChzMltzMl9wb3NdKSkKKyAgICAgIGlmIChzMl9wb3MgPCBzMl9s ZW4gJiYgY19pc2RpZ2l0IChzMltzMl9wb3NdKSkKICAgICAgICAgcmV0dXJuIC0xOwogICAg ICAgaWYgKGZpcnN0X2RpZmYpCiAgICAgICAgIHJldHVybiBmaXJzdF9kaWZmOwpAQCAtMTI0 LDU4ICsxMzEsNTYgQEAgdmVycmV2Y21wIChjb25zdCBjaGFyICpzMSwgc2l6ZV90IHMxX2xl biwgY29uc3QgY2hhciAqczIsIHNpemVfdCBzMl9sZW4pCiBpbnQKIGZpbGV2ZXJjbXAgKGNv bnN0IGNoYXIgKnMxLCBjb25zdCBjaGFyICpzMikKIHsKLSAgY29uc3QgY2hhciAqczFfcG9z OwotICBjb25zdCBjaGFyICpzMl9wb3M7Ci0gIGNvbnN0IGNoYXIgKnMxX3N1ZmZpeCwgKnMy X3N1ZmZpeDsKLSAgc2l6ZV90IHMxX2xlbiwgczJfbGVuOwotICBpbnQgcmVzdWx0OwotCi0g IC8qIGVhc3kgY29tcGFyaXNvbiB0byBzZWUgaWYgc3RyaW5ncyBhcmUgaWRlbnRpY2FsICov Ci0gIGludCBzaW1wbGVfY21wID0gc3RyY21wIChzMSwgczIpOwotICBpZiAoc2ltcGxlX2Nt cCA9PSAwKQotICAgIHJldHVybiAwOworICByZXR1cm4gZmlsZW52ZXJjbXAgKHMxLCAtMSwg czIsIC0xKTsKK30KIAotICAvKiBzcGVjaWFsIGhhbmRsZSBmb3IgIiIsICIuIiBhbmQgIi4u IiAqLwotICBpZiAoISpzMSkKLSAgICByZXR1cm4gLTE7Ci0gIGlmICghKnMyKQotICAgIHJl dHVybiAxOwotICBpZiAoMCA9PSBzdHJjbXAgKCIuIiwgczEpKQotICAgIHJldHVybiAtMTsK LSAgaWYgKDAgPT0gc3RyY21wICgiLiIsIHMyKSkKLSAgICByZXR1cm4gMTsKLSAgaWYgKDAg PT0gc3RyY21wICgiLi4iLCBzMSkpCi0gICAgcmV0dXJuIC0xOwotICBpZiAoMCA9PSBzdHJj bXAgKCIuLiIsIHMyKSkKKy8qIENvbXBhcmUgdmVyc2lvbnMgQSAob2YgbGVuZ3RoIEFMRU4p IGFuZCBCIChvZiBsZW5ndGggQkxFTikuCisgICBTZWUgZmlsZXZlcmNtcC5oIGZvciBmdW5j dGlvbiBkZXNjcmlwdGlvbi4gICovCitpbnQKK2ZpbGVudmVyY21wIChjaGFyIGNvbnN0ICph LCBwdHJkaWZmX3QgYWxlbiwgY2hhciBjb25zdCAqYiwgcHRyZGlmZl90IGJsZW4pCit7Cisg IC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgdmVyc2lvbnMuICAqLworICBib29sIGFlbXB0 eSA9IGFsZW4gPCAwID8gIWFbMF0gOiAhYWxlbjsKKyAgYm9vbCBiZW1wdHkgPSBibGVuIDwg MCA/ICFiWzBdIDogIWJsZW47CisgIGlmIChhZW1wdHkpCisgICAgcmV0dXJuIC0hYmVtcHR5 OworICBpZiAoYmVtcHR5KQogICAgIHJldHVybiAxOwogCi0gIC8qIHNwZWNpYWwgaGFuZGxl IGZvciBvdGhlciBoaWRkZW4gZmlsZXMgKi8KLSAgaWYgKCpzMSA9PSAnLicgJiYgKnMyICE9 ICcuJykKLSAgICByZXR1cm4gLTE7Ci0gIGlmICgqczEgIT0gJy4nICYmICpzMiA9PSAnLicp Ci0gICAgcmV0dXJuIDE7Ci0gIGlmICgqczEgPT0gJy4nICYmICpzMiA9PSAnLicpCisgIC8q IFNwZWNpYWwgY2FzZXMgZm9yIGxlYWRpbmcgIi4iOiAiLiIgc29ydHMgZmlyc3QsIHRoZW4g Ii4uIiwgdGhlbgorICAgICBvdGhlciBuYW1lcyB3aXRoIGxlYWRpbmcgIi4iLCB0aGVuIG90 aGVyIG5hbWVzLiAgKi8KKyAgaWYgKGFbMF0gPT0gJy4nKQogICAgIHsKLSAgICAgIHMxKys7 Ci0gICAgICBzMisrOwotICAgIH0KKyAgICAgIGlmIChiWzBdICE9ICcuJykKKyAgICAgICAg cmV0dXJuIC0xOwogCi0gIC8qICJjdXQiIGZpbGUgc3VmZml4ZXMgKi8KLSAgczFfcG9zID0g czE7Ci0gIHMyX3BvcyA9IHMyOwotICBzMV9zdWZmaXggPSBtYXRjaF9zdWZmaXggKCZzMV9w b3MpOwotICBzMl9zdWZmaXggPSBtYXRjaF9zdWZmaXggKCZzMl9wb3MpOwotICBzMV9sZW4g PSAoczFfc3VmZml4ID8gczFfc3VmZml4IDogczFfcG9zKSAtIHMxOwotICBzMl9sZW4gPSAo czJfc3VmZml4ID8gczJfc3VmZml4IDogczJfcG9zKSAtIHMyOwotCi0gIC8qIHJlc3RvcmUg ZmlsZSBzdWZmaXhlcyBpZiBzdHJpbmdzIGFyZSBpZGVudGljYWwgYWZ0ZXIgImN1dCIgKi8K LSAgaWYgKChzMV9zdWZmaXggfHwgczJfc3VmZml4KSAmJiAoczFfbGVuID09IHMyX2xlbikK LSAgICAgICYmIDAgPT0gc3RybmNtcCAoczEsIHMyLCBzMV9sZW4pKQotICAgIHsKLSAgICAg IHMxX2xlbiA9IHMxX3BvcyAtIHMxOwotICAgICAgczJfbGVuID0gczJfcG9zIC0gczI7Cisg ICAgICBib29sIGFkb3QgPSBhbGVuIDwgMCA/ICFhWzFdIDogYWxlbiA9PSAxOworICAgICAg Ym9vbCBiZG90ID0gYmxlbiA8IDAgPyAhYlsxXSA6IGJsZW4gPT0gMTsKKyAgICAgIGlmIChh ZG90KQorICAgICAgICByZXR1cm4gLSFiZG90OworICAgICAgaWYgKGJkb3QpCisgICAgICAg IHJldHVybiAxOworCisgICAgICBib29sIGFkb3Rkb3QgPSBhWzFdID09ICcuJyAmJiAoYWxl biA8IDAgPyAhYVsyXSA6IGFsZW4gPT0gMik7CisgICAgICBib29sIGJkb3Rkb3QgPSBiWzFd ID09ICcuJyAmJiAoYmxlbiA8IDAgPyAhYlsyXSA6IGJsZW4gPT0gMik7CisgICAgICBpZiAo YWRvdGRvdCkKKyAgICAgICAgcmV0dXJuIC0hYmRvdGRvdDsKKyAgICAgIGlmIChiZG90ZG90 KQorICAgICAgICByZXR1cm4gMTsKICAgICB9CisgIGVsc2UgaWYgKGJbMF0gPT0gJy4nKQor ICAgIHJldHVybiAxOworCisgIC8qIEN1dCBmaWxlIHN1ZmZpeGVzLiAgKi8KKyAgaWR4X3Qg YXByZWZpeGxlbiA9IGZpbGVfcHJlZml4bGVuIChhLCAmYWxlbik7CisgIGlkeF90IGJwcmVm aXhsZW4gPSBmaWxlX3ByZWZpeGxlbiAoYiwgJmJsZW4pOworCisgIC8qIElmIGJvdGggc3Vm Zml4ZXMgYXJlIGVtcHR5LCBhIHNlY29uZCBwYXNzIHdvdWxkIHJldHVybiB0aGUgc2FtZSB0 aGluZy4gICovCisgIGJvb2wgb25lX3Bhc3Nfb25seSA9IGFwcmVmaXhsZW4gPT0gYWxlbiAm JiBicHJlZml4bGVuID09IGJsZW47CisKKyAgaW50IHJlc3VsdCA9IHZlcnJldmNtcCAoYSwg YXByZWZpeGxlbiwgYiwgYnByZWZpeGxlbik7CiAKLSAgcmVzdWx0ID0gdmVycmV2Y21wIChz MSwgczFfbGVuLCBzMiwgczJfbGVuKTsKLSAgcmV0dXJuIHJlc3VsdCA9PSAwID8gc2ltcGxl X2NtcCA6IHJlc3VsdDsKKyAgLyogUmV0dXJuIHRoZSBpbml0aWFsIHJlc3VsdCBpZiBub256 ZXJvLCBvciBpZiBubyBzZWNvbmQgcGFzcyBpcyBuZWVkZWQuCisgICAgIE90aGVyd2lzZSwg cmVzdG9yZSB0aGUgc3VmZml4ZXMgYW5kIHRyeSBhZ2Fpbi4gICovCisgIHJldHVybiByZXN1 bHQgfHwgb25lX3Bhc3Nfb25seSA/IHJlc3VsdCA6IHZlcnJldmNtcCAoYSwgYWxlbiwgYiwg Ymxlbik7CiB9CmRpZmYgLS1naXQgYS9saWIvZmlsZXZlcmNtcC5oIGIvbGliL2ZpbGV2ZXJj bXAuaAppbmRleCBkNjJjYzQwMDBlLi41YTMzNjc3NjcxIDEwMDY0NAotLS0gYS9saWIvZmls ZXZlcmNtcC5oCisrKyBiL2xpYi9maWxldmVyY21wLmgKQEAgLTEsNCArMSw1IEBACi0vKgor LyogQ29tcGFyZSBmaWxlIG5hbWVzIGNvbnRhaW5pbmcgdmVyc2lvbiBudW1iZXJzLgorCiAg ICBDb3B5cmlnaHQgKEMpIDE5OTUgSWFuIEphY2tzb24gPGl3ajEwQGN1cy5jYW0uYWMudWs+ CiAgICBDb3B5cmlnaHQgKEMpIDIwMDEgQW50aG9ueSBUb3ducyA8YWpAYXp1cmUuaHVtYnVn Lm9yZy5hdT4KICAgIENvcHlyaWdodCAoQykgMjAwOC0yMDIyIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgpAQCAtMTksMjQgKzIwLDU3IEBACiAjaWZuZGVmIEZJTEVWRVJDTVBf SAogI2RlZmluZSBGSUxFVkVSQ01QX0gKIAotLyogQ29tcGFyZSB2ZXJzaW9uIHN0cmluZ3M6 CisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKy8qIENvbXBhcmUgc3RyaW5ncyBBIGFuZCBCIGFz IGZpbGUgbmFtZXMgY29udGFpbmluZyB2ZXJzaW9uIG51bWJlcnMsCisgICBhbmQgcmV0dXJu IGFuIGludGVnZXIgdGhhdCBpcyBuZWdhdGl2ZSwgemVybywgb3IgcG9zaXRpdmUgZGVwZW5k aW5nCisgICBvbiB3aGV0aGVyIEEgY29tcGFyZXMgbGVzcyB0aGFuLCBlcXVhbCB0bywgb3Ig Z3JlYXRlciB0aGFuIEIuCisKKyAgIFVzZSB0aGUgZm9sbG93aW5nIHZlcnNpb24gc29ydCBh bGdvcml0aG06CisKKyAgICAgMS4gQ29tcGFyZSB0aGUgc3RyaW5ncycgbWF4aW1hbC1sZW5n dGggbm9uLWRpZ2l0IHByZWZpeGVzIGxleGljYWxseS4KKyAgICAgICAgSWYgdGhlcmUgaXMg YSBkaWZmZXJlbmNlIHJldHVybiB0aGF0IGRpZmZlcmVuY2UuCisgICAgICAgIE90aGVyd2lz ZSBkaXNjYXJkIHRoZSBwcmVmaXhlcyBhbmQgY29udGludWUgd2l0aCB0aGUgbmV4dCBzdGVw LgorCisgICAgIDIuIENvbXBhcmUgdGhlIHN0cmluZ3MnIG1heGltYWwtbGVuZ3RoIGRpZ2l0 IHByZWZpeGVzLCB1c2luZworICAgICAgICBudW1lcmljIGNvbXBhcmlzb24gb2YgdGhlIG51 bWJlcnMgcmVwcmVzZW50ZWQgYnkgZWFjaCBwcmVmaXguCisgICAgICAgIChUcmVhdCBhbiBl bXB0eSBwcmVmaXggYXMgemVybzsgdGhpcyBjYW4gaGFwcGVuIG9ubHkgYXQgc3RyaW5nIGVu ZC4pCisgICAgICAgIElmIHRoZXJlIGlzIGEgZGlmZmVyZW5jZSwgcmV0dXJuIHRoYXQgZGlm ZmVyZW5jZS4KKyAgICAgICAgT3RoZXJ3aXNlIGRpc2NhcmQgdGhlIHByZWZpeGVzIGFuZCBj b250aW51ZSB3aXRoIHRoZSBuZXh0IHN0ZXAuCisKKyAgICAgMy4gSWYgYm90aCBzdHJpbmdz IGFyZSBlbXB0eSwgcmV0dXJuIDAuICBPdGhlcndpc2UgY29udGludWUgd2l0aCBzdGVwIDEu CisKKyAgIEluIHZlcnNpb24gc29ydCwgbGV4aWNhbCBjb21wYXJpc29uIGlzIGxlZnQgdG8g cmlnaHQsIGJ5dGUgYnkgYnl0ZSwKKyAgIHVzaW5nIHRoZSBieXRlJ3MgbnVtZXJpYyB2YWx1 ZSAoMC0yNTUpLCBleGNlcHQgdGhhdDoKKworICAgICAxLiBBU0NJSSBsZXR0ZXJzIHNvcnQg YmVmb3JlIG90aGVyIGJ5dGVzLgorICAgICAyLiBBIHRpbGRlIHNvcnRzIGJlZm9yZSBhbnl0 aGluZywgZXZlbiBhbiBlbXB0eSBzdHJpbmcuCisKKyAgIEluIGFkZGl0aW9uIHRvIHRoZSB2 ZXJzaW9uIHNvcnQgcnVsZXMsIHRoZSBmb2xsb3dpbmcgc3RyaW5ncyBoYXZlCisgICBzcGVj aWFsIHByaW9yaXR5IGFuZCBzb3J0IGJlZm9yZSBhbGwgb3RoZXIgc3RyaW5ncyAobGlzdGVk IGluIG9yZGVyKToKIAotICAgVGhpcyBmdW5jdGlvbiBjb21wYXJlcyBzdHJpbmdzIFMxIGFu ZCBTMjoKLSAgIDEpIEJ5IFBSRUZJWCBpbiB0aGUgc2FtZSB3YXkgYXMgc3RyY21wLgotICAg MikgVGhlbiBieSBWRVJTSU9OIChtb3N0IHNpbWlsYXJseSB0byB2ZXJzaW9uIGNvbXBhcmUg b2YgRGViaWFuJ3MgZHBrZykuCi0gICAgICBMZWFkaW5nIHplcm9zIGluIHZlcnNpb24gbnVt YmVycyBhcmUgaWdub3JlZC4KLSAgIDMpIElmIGJvdGggKFBSRUZJWCBhbmQgIFZFUlNJT04p IGFyZSBlcXVhbCwgc3RyY21wIGZ1bmN0aW9uIGlzIHVzZWQgZm9yCi0gICAgICBjb21wYXJp c29uLiBTbyB0aGlzIGZ1bmN0aW9uIGNhbiByZXR1cm4gMCBpZiAoYW5kIG9ubHkgaWYpIHN0 cmluZ3MgUzEKLSAgICAgIGFuZCBTMiBhcmUgaWRlbnRpY2FsLgorICAgICAxLiBUaGUgZW1w dHkgc3RyaW5nLgorICAgICAyLiAiLiIuCisgICAgIDMuICIuLiIuCisgICAgIDQuIFN0cmlu Z3Mgc3RhcnRpbmcgd2l0aCAiLiIgc29ydCBiZWZvcmUgb3RoZXIgc3RyaW5ncy4KIAotICAg SXQgcmV0dXJucyBudW1iZXIgPjAgZm9yIFMxID4gUzIsIDAgZm9yIFMxID09IFMyIGFuZCBu dW1iZXIgPDAgZm9yIFMxIDwgUzIuCisgICBCZWZvcmUgY29tcGFyaW5nIHR3byBzdHJpbmdz IHdoZXJlIGJvdGggYmVnaW4gd2l0aCBub24tIi4iLAorICAgb3Igd2hlcmUgYm90aCBiZWdp biB3aXRoICIuIiBidXQgbmVpdGhlciBpcyAiLiIgb3IgIi4uIiwKKyAgIHN1ZmZpeGVzIG1h dGNoaW5nIHRoZSBDLWxvY2FsZSBleHRlbmRlZCByZWd1bGFyIGV4cHJlc3Npb24KKyAgIChc LltBLVphLXp+XVtBLVphLXowLTl+XSopKiQgYXJlIHJlbW92ZWQgYW5kIHRoZSBzdHJpbmdz IGNvbXBhcmVkCisgICB3aXRob3V0IHRoZW0sIHVzaW5nIHZlcnNpb24gc29ydCB3aXRob3V0 IHNwZWNpYWwgcHJpb3JpdHk7CisgICBpZiB0aGV5IGRvIG5vdCBjb21wYXJlIGVxdWFsLCB0 aGlzIGNvbXBhcmlzb24gcmVzdWx0IGlzIHVzZWQgYW5kCisgICB0aGUgc3VmZml4ZXMgYXJl IGVmZmVjdGl2ZWx5IGlnbm9yZWQuICBPdGhlcndpc2UsIHRoZSBlbnRpcmUKKyAgIHN0cmlu Z3MgYXJlIGNvbXBhcmVkIHVzaW5nIHZlcnNpb24gc29ydC4KIAotICAgVGhpcyBmdW5jdGlv biBjb21wYXJlcyBzdHJpbmdzLCBpbiBhIHdheSB0aGF0IGlmIFZFUjEgYW5kIFZFUjIgYXJl IHZlcnNpb24KLSAgIG51bWJlcnMgYW5kIFBSRUZJWCBhbmQgU1VGRklYIChTVUZGSVggZGVm aW5lZCBhcyAoXC5bQS1aYS16fl1bQS1aYS16MC05fl0qKSopCi0gICBhcmUgc3RyaW5ncyB0 aGVuIFZFUjEgPCBWRVIyIGltcGxpZXMgZmlsZXZlcmNtcCAoUFJFRklYIFZFUjEgU1VGRklY LAotICAgUFJFRklYIFZFUjIgU1VGRklYKSA8IDAuCisgICBUaGlzIGZ1bmN0aW9uIGlzIGlu dGVuZGVkIHRvIGJlIGEgcmVwbGFjZW1lbnQgZm9yIHN0cnZlcnNjbXAuICAqLworaW50IGZp bGV2ZXJjbXAgKGNoYXIgY29uc3QgKmEsIGNoYXIgY29uc3QgKmIpIF9HTF9BVFRSSUJVVEVf UFVSRTsKIAotICAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBiZSBhIHJlcGxhY2Vt ZW50IGZvciBzdHJ2ZXJzY21wLiAqLwotaW50IGZpbGV2ZXJjbXAgKGNvbnN0IGNoYXIgKnMx LCBjb25zdCBjaGFyICpzMikgX0dMX0FUVFJJQlVURV9QVVJFOworLyogTGlrZSBmaWxldmVy Y21wLCBleGNlcHQgY29tcGFyZSB0aGUgYnl0ZSBhcnJheXMgQSAob2YgbGVuZ3RoIEFMRU4p CisgICBhbmQgQiAob2YgbGVuZ3RoIEJMRU4pIHNvIHRoYXQgQSBhbmQgQiBjYW4gY29udGFp biAnXDAnLCB3aGljaAorICAgc29ydHMganVzdCBiZWZvcmUgJ1wxJy4gIEJ1dCBpZiBBTEVO IGlzIC0xIHRyZWF0IEEgYXMgYSBzdHJpbmcKKyAgIHRlcm1pbmF0ZWQgYnkgJ1wwJywgYW5k IHNpbWlsYXJseSBmb3IgQkxFTi4gICovCitpbnQgZmlsZW52ZXJjbXAgKGNoYXIgY29uc3Qg KmEsIHB0cmRpZmZfdCBhbGVuLCBjaGFyIGNvbnN0ICpiLCBwdHJkaWZmX3QgYmxlbikKKyAg X0dMX0FUVFJJQlVURV9QVVJFOwogCiAjZW5kaWYgLyogRklMRVZFUkNNUF9IICovCmRpZmYg LS1naXQgYS9tb2R1bGVzL2ZpbGV2ZXJjbXAgYi9tb2R1bGVzL2ZpbGV2ZXJjbXAKaW5kZXgg MzczZGZkMDBlYS4uNDc4NmNlMTFiNiAxMDA2NDQKLS0tIGEvbW9kdWxlcy9maWxldmVyY21w CisrKyBiL21vZHVsZXMvZmlsZXZlcmNtcApAQCAtNyw4ICs3LDkgQEAgbGliL2ZpbGV2ZXJj bXAuYwogCiBEZXBlbmRzLW9uOgogYy1jdHlwZQoraWR4CiBzdGRib29sCi1zdHJpbmcKK3Zl cmlmeQogCiBjb25maWd1cmUuYWM6CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3QtZmlsZXZl cmNtcC5jIGIvdGVzdHMvdGVzdC1maWxldmVyY21wLmMKaW5kZXggNzlhZDRhZWQ4Zi4uYjJh N2U5MGYzZiAxMDA2NDQKLS0tIGEvdGVzdHMvdGVzdC1maWxldmVyY21wLmMKKysrIGIvdGVz dHMvdGVzdC1maWxldmVyY21wLmMKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJmaWxl dmVyY21wLmgiCiAKICNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4K IAogI2luY2x1ZGUgIm1hY3Jvcy5oIgogCkBAIC0yOCw4ICsyOSw2IEBAIHN0YXRpYyBjb25z dCBjaGFyICpjb25zdCBleGFtcGxlc1tdID0KICAgIiIsCiAgICIuIiwKICAgIi4uIiwKLSAg Ii4wIiwKLSAgIi45IiwKICAgIi5BIiwKICAgIi5aIiwKICAgIi5hfiIsCkBAIC00MCw3ICsz OSwxNCBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgZXhhbXBsZXNbXSA9CiAgICIuenp+ IiwKICAgIi56eiIsCiAgICIuenoufjF+IiwKKyAgIi4wIiwKKyAgIi45IiwKICAgIi56ei4w IiwKKyAgIi5cMSIsCisgICIuXDEudHh0IiwKKyAgIi5cMXgiLAorICAiLlwxeFwxIiwKKyAg Ii5cMS4wIiwKICAgIjAiLAogICAiOSIsCiAgICJBIiwKQEAgLTUxLDYgKzU3LDEwIEBAIHN0 YXRpYyBjb25zdCBjaGFyICpjb25zdCBleGFtcGxlc1tdID0KICAgImEuYiIsCiAgICJhLmJj fiIsCiAgICJhLmJjIiwKKyAgImErIiwKKyAgImEuIiwKKyAgImEuLmEiLAorICAiYS4rIiwK ICAgImJ+IiwKICAgImIiLAogICAiZ2NjLWMrKy0xMC5mYzkudGFyLmd6IiwKQEAgLTgwLDEw ICs5MCw3OSBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgZXhhbXBsZXNbXSA9CiAgICJ6 eiIsCiAgICJ6ei5+MX4iLAogICAienouMCIsCisgICJ6ei4wLnR4dCIsCisgICJcMSIsCisg ICJcMS50eHQiLAorICAiXDF4IiwKKyAgIlwxeFwxIiwKKyAgIlwxLjAiLAorICAiI1wxLmIj IiwKICAgIiMuYiMiLAogICBOVUxMCiB9OwogCisvKiBTZXRzIG9mIGV4YW1wbGVzIHRoYXQg c2hvdWxkIGFsbCBzb3J0IGVxdWFsbHkuICBFYWNoIHNldCBpcworICAgdGVybWluYXRlZCBi eSBOVUxMLiAgKi8KK3N0YXRpYyBjaGFyIGNvbnN0ICpjb25zdCBlcXVhbHNbXSA9CisgIHsK KyAgICAiYSIsCisgICAgImEwIiwKKyAgICAiYTAwMDAiLAorICAgIE5VTEwsCisgICAgImFc MWMtMjcudHh0IiwKKyAgICAiYVwxYy0wMjcudHh0IiwKKyAgICAiYVwxYy0wMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNy50eHQiLAor ICAgIE5VTEwsCisgICAgIi5hXDFjLTI3LnR4dCIsCisgICAgIi5hXDFjLTAyNy50eHQiLAor ICAgICIuYVwxYy0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAyNy50eHQiLAorICAgIE5VTEwsCisgICAgImFcMWMtIiwKKyAgICAiYVwx Yy0wIiwKKyAgICAiYVwxYy0wMCIsCisgICAgTlVMTCwKKyAgICAiLmFcMWMtIiwKKyAgICAi LmFcMWMtMCIsCisgICAgIi5hXDFjLTAwIiwKKyAgICBOVUxMLAorICAgICJhXDFjLTAudHh0 IiwKKyAgICAiYVwxYy0wMC50eHQiLAorICAgIE5VTEwsCisgICAgIi5hXDFjLTFcMS50eHQi LAorICAgICIuYVwxYy0wMDFcMS50eHQiLAorICAgIE5VTEwsCisgIH07CisKK3N0YXRpYyBp bnQKK3NpZ24gKGludCBpKQoreworICByZXR1cm4gaSA8IDAgPyAtMSA6IDAgPCBpOworfQor CisvKiBSZXR1cm4gZmlsZXZlcmNtcCAoQSwgQiksIGNoZWNraW5nIHRoYXQgYSBzaW1pbGFy IHJlc3VsdCBpcyBnb3R0ZW4KKyAgIGFmdGVyIHJlcGxhY2luZyBhbGwgJ1wxJ3Mgd2l0aCAn XDAncyBhbmQgY2FsbGluZyBmaWxlbnZlcmNtcCB3aXRoCisgICB0aGUgZW1iZWRkZWQgJ1ww J3MuICAqLworc3RhdGljIGludAordGVzdF9maWxldmVyY21wIChjaGFyIGNvbnN0ICphLCBj aGFyIGNvbnN0ICpiKQoreworICBpbnQgcmVzdWx0ID0gZmlsZXZlcmNtcCAoYSwgYik7CisK KyAgY2hhciBidWZmZXJbMTAwMF07CisKKyAgcHRyZGlmZl90IGFsZW4gPSBzdHJsZW4gKGEp LCBibGVuID0gc3RybGVuIChiKTsKKyAgQVNTRVJUIChhbGVuICsgYmxlbiA8PSBzaXplb2Yg YnVmZmVyKTsKKyAgbWVtY3B5IChidWZmZXIsIGEsIGFsZW4pOworICBtZW1jcHkgKGJ1ZmZl ciArIGFsZW4sIGIsIGJsZW4pOworICBmb3IgKHB0cmRpZmZfdCBpID0gMDsgaSA8IGFsZW4g KyBibGVuOyBpKyspCisgICAgaWYgKGJ1ZmZlcltpXSA9PSAnXDEnKQorICAgICAgYnVmZmVy W2ldID0gJ1wwJzsKKworICBpbnQgbnJlc3VsdCA9IGZpbGVudmVyY21wIChidWZmZXIsIGFs ZW4sIGJ1ZmZlciArIGFsZW4sIGJsZW4pOworICBBU1NFUlQgKHNpZ24gKG5yZXN1bHQpID09 IHNpZ24gKHJlc3VsdCkpOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKIGludAogbWFpbiAo dm9pZCkKIHsKQEAgLTk0LDcgKzE3Myw2IEBAIG1haW4gKHZvaWQpCiAgIEFTU0VSVCAoZmls ZXZlcmNtcCAoImEiLCAiYSIpID09IDApOwogICBBU1NFUlQgKGZpbGV2ZXJjbXAgKCJhIiwg ImIiKSA8IDApOwogICBBU1NFUlQgKGZpbGV2ZXJjbXAgKCJiIiwgImEiKSA+IDApOwotICBB U1NFUlQgKGZpbGV2ZXJjbXAgKCJhMCIsICJhIikgPiAwKTsKICAgQVNTRVJUIChmaWxldmVy Y21wICgiMDAiLCAiMDEiKSA8IDApOwogICBBU1NFUlQgKGZpbGV2ZXJjbXAgKCIwMSIsICIw MTAiKSA8IDApOwogICBBU1NFUlQgKGZpbGV2ZXJjbXAgKCI5IiwgIjEwIikgPCAwKTsKQEAg LTEwNiw3ICsxODQsNyBAQCBtYWluICh2b2lkKQogICAgICAgY29uc3QgY2hhciAqY29uc3Qg Kmo7CiAgICAgICBmb3IgKGogPSBleGFtcGxlczsgKmo7IGorKykKICAgICAgICAgewotICAg ICAgICAgIGludCByZXN1bHQgPSBmaWxldmVyY21wICgqaSwgKmopOworICAgICAgICAgIGlu dCByZXN1bHQgPSB0ZXN0X2ZpbGV2ZXJjbXAgKCppLCAqaik7CiAgICAgICAgICAgaWYgKHJl c3VsdCA8IDApCiAgICAgICAgICAgICBBU1NFUlQgKGkgPCBqKTsKICAgICAgICAgICBlbHNl IGlmICgwIDwgcmVzdWx0KQpAQCAtMTE2LDUgKzE5NCwxMyBAQCBtYWluICh2b2lkKQogICAg ICAgICB9CiAgICAgfQogCisgIGZvciAoaSA9IGVxdWFsczsgaSA8IGVxdWFscyArIHNpemVv ZiBlcXVhbHMgLyBzaXplb2YgKmVxdWFsczsgaSsrKQorICAgIGZvciAoOyAqaTsgaSsrKQor ICAgICAgZm9yIChjaGFyIGNvbnN0ICpjb25zdCAqaiA9IGk7ICpqOyBqKyspCisgICAgICAg IHsKKyAgICAgICAgICBBU1NFUlQgKHRlc3RfZmlsZXZlcmNtcCAoKmksICpqKSA9PSAwKTsK KyAgICAgICAgICBBU1NFUlQgKHRlc3RfZmlsZXZlcmNtcCAoKmosICppKSA9PSAwKTsKKyAg ICAgICAgfQorCiAgIHJldHVybiAwOwogfQotLSAKMi4zMi4wCgo= --------------3nF0GattO7cCxepMmMoW0Ps8 Content-Type: text/x-patch; charset=UTF-8; name="0001-sort-fix-several-version-sort-problems.patch" Content-Disposition: attachment; filename="0001-sort-fix-several-version-sort-problems.patch" Content-Transfer-Encoding: base64 RnJvbSBkODA0N2FlODZkNTQxODc4MmRiN2VjOTA2YzEwZTFhZjRmMTI5OTk3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBTYXQsIDEyIEZlYiAyMDIyIDIwOjE0OjI3IC0wODAwClN1YmplY3Q6IFtQQVRD SF0gc29ydDogZml4IHNldmVyYWwgdmVyc2lvbi1zb3J0IHByb2JsZW1zCgpUaGlzIGFsc28g YWZmZWN0cyBscyAtdiBpbiBzb21lIGNvcm5lciBjYXNlcy4KUHJvYmxlbXMgcmVwb3J0ZWQg YnkgTWljaGFlbCBEZWJlcnRvbCA8aHR0cHM6Ly9idWdzLmdudS5vcmcvNDkyMzk+LgpXaGls ZSBsb29raW5nIGludG8gdGhpcywgSSBzcG90dGVkIHNvbWUgbW9yZSBhcmVhcyB3aGVyZSB0 aGUKY29kZSBhbmQgZG9jdW1lbnRhdGlvbiBkaWQgbm90IGFncmVlLCBvciB3aGVyZSB0aGUg ZG9jdW1lbnRhdGlvbgp3YXMgdW5jbGVhci4gIEluIHNvbWUgY2FzZXMgSSBjaGFuZ2VkIHRo ZSBjb2RlOyBpbiBvdGhlcnMKdGhlIGRvY3VtZW50YXRpb24uICBJIGhvcGUgdGhpbmdzIGFy ZSBuYWlsZWQgZG93biBiZXR0ZXIgbm93LgoqIGRvYy9zb3J0LXZlcnNpb24udGV4aTogRGlz dGluZ3Vpc2ggbW9yZSBjYXJlZnVsbHkgYmV0d2VlbgpjaGFyYWN0ZXJzIGFuZCBieXRlcy4g IFNheSB0aGF0IG5vbi1pZGVudGljYWwgc3RyaW5ncyBjYW4KY29tcGFyZSBlcXVhbCwgc2lu Y2UgdGhleSBub3cgY2FuLiAgSW1wcm92ZSByZWFkYWJpbGl0eSBpbgp2YXJpb3VzIHdheXMu ICBNYWtlIGl0IGNsZWFyZXIgdGhhdCBhIHN1ZmZpeCBjYW4gYmUgdGhlCmVudGlyZSBzdHJp bmcuCiogc3JjL2xzLmMgKGNtcF92ZXJzaW9uKTogRmFsbCBiYWNrIG9uIHN0cmNtcCBpZiBm aWxldmVyY21wCnJlcG9ydHMgZXF1YWxpdHksIHNpbmNlIGZpbGV2ZXJjbXAgaXMgbm8gbG9u Z2VyIGEgdG90YWwgb3JkZXIuCiogc3JjL3NvcnQuYyAoa2V5Y29tcGFyZSk6IFVzZSBmaWxl bnZlcmNtcCwgdG8gdHJlYXQgTlVMcyBjb3JyZWN0bHkuCiogdGVzdHMvbWlzYy9scy1taXNj LnBsICh2X2ZpbGVzKToKQWRqdXN0IHRlc3QgdG8gbWF0Y2ggbmV3IGJlaGF2aW9yLgoqIHRl c3RzL21pc2Mvc29ydC12ZXJzaW9uLnNoOiBBZGQgdGVzdHMgZm9yIHN0YWJpbGl0eSwKYW5k IGZvciBzb3J0aW5nIHdpdGggTlVMIGJ5dGVzLgotLS0KIE5FV1MgICAgICAgICAgICAgICAg ICAgICAgIHwgICA2ICsrCiBkb2Mvc29ydC12ZXJzaW9uLnRleGkgICAgICB8IDE3NCArKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvbHMuYyAgICAgICAgICAg ICAgICAgICB8ICAxNiArKy0tCiBzcmMvc29ydC5jICAgICAgICAgICAgICAgICB8ICAgMiAr LQogdGVzdHMvbWlzYy9scy1taXNjLnBsICAgICAgfCAgIDggKy0KIHRlc3RzL21pc2Mvc29y dC12ZXJzaW9uLnNoIHwgIDEwICsrLQogNiBmaWxlcyBjaGFuZ2VkLCAxMjMgaW5zZXJ0aW9u cygrKSwgOTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKaW5kZXgg ZmNmMzFmZTM5Li5kNThiZTg4NjMgMTAwNjQ0Ci0tLSBhL05FV1MKKysrIGIvTkVXUwpAQCAt MjQsNiArMjQsMTIgQEAgR05VIGNvcmV1dGlscyBORVdTICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLSotIG91dGxpbmUgLSotCiAgICdpZCB4eXonIG5vdyB1c2VzIHRo ZSBuYW1lICd4eXonIHRvIGRldGVybWluZSBncm91cHMsIGluc3RlYWQgb2YgeHl6J3MgdWlk LgogICBbYnVnIGludHJvZHVjZWQgaW4gY29yZXV0aWxzLTguMjJdCiAKKyAgJ2xzIC12JyBh bmQgJ3NvcnQgLVYnIG5vIGxvbmdlciBtaXNoYW5kbGUgY29ybmVyIGNhc2VzIGxpa2UgImEu LmEiIHZzICJhLisiCisgIG9yIGxpbmVzIGNvbnRhaW5pbmcgTlVMcy4gIFRoZWlyIGJlaGF2 aW9yIG5vdyBtYXRjaGVzIHRoZSBkb2N1bWVudGF0aW9uCisgIGZvciBmaWxlIG5hbWVzIGxp a2UgIi5tNCIgdGhhdCBjb25zaXN0IGVudGlyZWx5IG9mIGFuIGV4dGVuc2lvbiwKKyAgYW5k IHRoZSBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIGNsYXJpZmllZCBmb3IgdW51c3VhbCBjYXNl cy4KKyAgW2J1ZyBpbnRyb2R1Y2VkIGluIGNvcmV1dGlscy03LjBdCisKICAgT24gbWFjT1Ms ICdtdiBBIEInIG5vIGxvbmdlciBmYWlscyB3aXRoICJPcGVyYXRpb24gbm90IHN1cHBvcnRl ZCIKICAgd2hlbiBBIGFuZCBCIGFyZSBpbiB0aGUgc2FtZSB0bXBmcyBmaWxlIHN5c3RlbS4K ICAgW2J1ZyBpbnRyb2R1Y2VkIGluIGNvcmV1dGlscy05LjBdCmRpZmYgLS1naXQgYS9kb2Mv c29ydC12ZXJzaW9uLnRleGkgYi9kb2Mvc29ydC12ZXJzaW9uLnRleGkKaW5kZXggN2Y3NmFj NWJiLi5hYTdiMGY5ZDUgMTAwNjQ0Ci0tLSBhL2RvYy9zb3J0LXZlcnNpb24udGV4aQorKysg Yi9kb2Mvc29ydC12ZXJzaW9uLnRleGkKQEAgLTE2MSwzMyArMTYxLDQwIEBAIFRoZSBzdHJp bmdzIGFyZSBjb21wYXJlZCBmcm9tIGxlZnQgdG8gcmlnaHQuCiAKIEBpdGVtCiBGaXJzdCB0 aGUgaW5pdGlhbCBwYXJ0IG9mIGVhY2ggc3RyaW5nIGNvbnNpc3RpbmcgZW50aXJlbHkgb2Yg bm9uLWRpZ2l0Ci1jaGFyYWN0ZXJzIGlzIGRldGVybWluZWQuCitieXRlcyBpcyBkZXRlcm1p bmVkLgogCi1AZW51bWVyYXRlCitAZW51bWVyYXRlIEEKIEBpdGVtCi1UaGVzZSB0d28gcGFy dHMgKG9uZSBvZiB3aGljaCBtYXkgYmUgZW1wdHkpIGFyZSBjb21wYXJlZCBsZXhpY2FsbHku CitUaGVzZSB0d28gcGFydHMgKGVpdGhlciBvZiB3aGljaCBtYXkgYmUgZW1wdHkpIGFyZSBj b21wYXJlZCBsZXhpY2FsbHkuCiBJZiBhIGRpZmZlcmVuY2UgaXMgZm91bmQgaXQgaXMgcmV0 dXJuZWQuCiAKIEBpdGVtCi1UaGUgbGV4aWNhbCBjb21wYXJpc29uIGlzIGEgY29tcGFyaXNv biBvZiBBU0NJSSB2YWx1ZXMgbW9kaWZpZWQgc28gdGhhdDoKK1RoZSBsZXhpY2FsIGNvbXBh cmlzb24gaXMgYSBsZXhpY29ncmFwaGljIGNvbXBhcmlzb24gb2YgYnl0ZSBzdHJpbmdzLAor ZXhjZXB0IHRoYXQ6CiAKLUBlbnVtZXJhdGUKK0BlbnVtZXJhdGUgYQogQGl0ZW0KLUxldHRl cnMgc29ydCBiZWZvcmUgbm9uLWxldHRlcnMuCitBU0NJSSBsZXR0ZXJzIHNvcnQgYmVmb3Jl IG90aGVyIGJ5dGVzLgogQGl0ZW0KLUEgdGlsZGUgc29ydHMgYmVmb3JlIGFueXRoaW5nLCBl dmVuIHRoZSBlbmQgb2YgYSBwYXJ0LgorQSB0aWxkZSBzb3J0cyBiZWZvcmUgYW55dGhpbmcs IGV2ZW4gYW4gZW1wdHkgc3RyaW5nLgogQGVuZCBlbnVtZXJhdGUKIEBlbmQgZW51bWVyYXRl CiAKIEBpdGVtCi1UaGVuIHRoZSBpbml0aWFsIHBhcnQgb2YgdGhlIHJlbWFpbmRlciBvZiBl YWNoIHN0cmluZyB3aGljaCBjb25zaXN0cwotZW50aXJlbHkgb2YgZGlnaXQgY2hhcmFjdGVy cyBpcyBkZXRlcm1pbmVkLiBUaGUgbnVtZXJpY2FsIHZhbHVlcyBvZgorVGhlbiB0aGUgaW5p dGlhbCBwYXJ0IG9mIHRoZSByZW1haW5kZXIgb2YgZWFjaCBzdHJpbmcgdGhhdCBjb250YWlu cworYWxsIHRoZSBsZWFkaW5nIGRpZ2l0cyBpcyBkZXRlcm1pbmVkLiBUaGUgbnVtZXJpY2Fs IHZhbHVlcyByZXByZXNlbnRlZCBieQogdGhlc2UgdHdvIHBhcnRzIGFyZSBjb21wYXJlZCwg YW5kIGFueSBkaWZmZXJlbmNlIGZvdW5kIGlzIHJldHVybmVkIGFzCiB0aGUgcmVzdWx0IG9m IHRoZSBjb21wYXJpc29uLgotQGVudW1lcmF0ZQorCitAZW51bWVyYXRlIEEKIEBpdGVtCiBG b3IgdGhlc2UgcHVycG9zZXMgYW4gZW1wdHkgc3RyaW5nICh3aGljaCBjYW4gb25seSBvY2N1 ciBhdCB0aGUgZW5kIG9mCiBvbmUgb3IgYm90aCB2ZXJzaW9uIHN0cmluZ3MgYmVpbmcgY29t cGFyZWQpIGNvdW50cyBhcyB6ZXJvLgorCitAaXRlbQorQmVjYXVzZSB0aGUgbnVtZXJpY2Fs IHZhbHVlIGlzIHVzZWQsIG5vbi1pZGVudGljYWwgc3RyaW5ncyBjYW4gY29tcGFyZQorZXF1 YWwuICBGb3IgZXhhbXBsZSwgQHNhbXB7MTIzfSBjb21wYXJlcyBlcXVhbCB0byBAc2FtcHsw MDEyM30sIGFuZAordGhlIGVtcHR5IHN0cmluZyBjb21wYXJlcyBlcXVhbCB0byBAc2FtcHsw fS4KIEBlbmQgZW51bWVyYXRlCiAKIEBpdGVtCkBAIC0yMDIsNyArMjA5LDcgQEAgZG93biB0 byB0aGUgZm9sbG93aW5nIHBhcnRzLCBhbmQgdGhlIHBhcnRzIGNvbXBhcmVkIHJlc3BlY3Rp dmVseSBmcm9tCiBlYWNoIHN0cmluZzoKIAogQGV4YW1wbGUKLWZvbyAgQHJ7dnN9ICBmb28g ICBAcnsocnVsZSAyLCBub24tZGlnaXQgY2hhcmFjdGVycyl9Citmb28gIEBye3ZzfSAgZm9v ICAgQHJ7KHJ1bGUgMiwgbm9uLWRpZ2l0cyl9CiAwNyAgIEBye3ZzfSAgNyAgICAgQHJ7KHJ1 bGUgMywgZGlnaXRzKX0KIC4gICAgQHJ7dnN9ICBhLiAgICBAcnsocnVsZSAyKX0KIDcgICAg QHJ7dnN9ICA3ICAgICBAcnsocnVsZSAzKX0KQEAgLTIxMywyMiArMjIwLDIyIEBAIENvbXBh cmlzb24gZmxvdyBiYXNlZCBvbiBhYm92ZSBhbGdvcml0aG06CiAKIEBlbnVtZXJhdGUKIEBp dGVtCi1UaGUgZmlyc3QgcGFydHMgKEBzYW1we2Zvb30pIGFyZSBpZGVudGljYWwgaW4gYm90 aCBzdHJpbmdzLgorVGhlIGZpcnN0IHBhcnRzIChAc2FtcHtmb299KSBhcmUgaWRlbnRpY2Fs LgogCiBAaXRlbQogVGhlIHNlY29uZCBwYXJ0cyAoQHNhbXB7MDd9IGFuZCBAc2FtcHs3fSkg YXJlIGNvbXBhcmVkIG51bWVyaWNhbGx5LAotYW5kIGFyZSBpZGVudGljYWwuCithbmQgY29t cGFyZSBlcXVhbC4KIAogQGl0ZW0KIFRoZSB0aGlyZCBwYXJ0cyAoQHNhbXB7Ln0gdnMgQHNh bXB7YS59KSBhcmUgY29tcGFyZWQKLWxleGljYWxseSBieSBBU0NJSSB2YWx1ZSAocnVsZSAy LjIpLgorbGV4aWNhbGx5IGJ5IEFTQ0lJIHZhbHVlIChydWxlIDIuQikuCiAKIEBpdGVtCi1U aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBmaXJzdCBzdHJpbmcgKEBzYW1wey59KSBpcyBj b21wYXJlZAotdG8gdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgc2Vjb25kIHN0cmluZyAo QHNhbXB7YX0pLgorVGhlIGZpcnN0IGJ5dGUgb2YgdGhlIGZpcnN0IHN0cmluZyAoQHNhbXB7 Ln0pIGlzIGNvbXBhcmVkCit0byB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgc2Vjb25kIHN0cmlu ZyAoQHNhbXB7YX0pLgogCiBAaXRlbQotUnVsZSAyLjIuMSBkaWN0YXRlcyB0aGF0IGBgYWxs IGxldHRlcnMgc29ydHMgZWFybGllciB0aGFuIGFsbCBub24tbGV0dGVycycnLgorUnVsZSAy LkIuYSBzYXlzIGxldHRlcnMgc29ydHMgYmVmb3JlIG5vbi1sZXR0ZXJzLgogSGVuY2UsIEBz YW1we2F9IGNvbWVzIGJlZm9yZSBAc2FtcHsufS4KIAogQGl0ZW0KQEAgLTI4MCwxNyArMjg3 LDE3IEBAICQgc29ydCAtbiBpbnB1dDQgICAgICAgICAgICAgICAgICAkIHNvcnQgLVYgaW5w dXQ0CiBOdW1lcmljIHNvcnQgKEBzYW1we3NvcnQgLW59KSB0cmVhdHMgdGhlIGVudGlyZSBz dHJpbmcgYXMgYSBzaW5nbGUgbnVtZXJpYwogdmFsdWUsIGFuZCBjb21wYXJlcyBpdCB0byBv dGhlciB2YWx1ZXMuIEZvciBleGFtcGxlLCBAc2FtcHs4LjF9LCBAc2FtcHs4LjEwfSBhbmQK IEBzYW1wezguMTAwfSBhcmUgbnVtZXJpY2FsbHkgZXF1aXZhbGVudCwgYW5kIGFyZSBvcmRl cmVkIHRvZ2V0aGVyLiBTaW1pbGFybHksCi1Ac2FtcHs4LjQ5fSBpcyBudW1lcmljYWxseSBz bWFsbGVyIHRoYW4gQHNhbXB7OC41fSwgYW5kIGFwcGVhcnMgYmVmb3JlIGZpcnN0LgorQHNh bXB7OC40OX0gaXMgbnVtZXJpY2FsbHkgbGVzcyB0aGFuIEBzYW1wezguNX0sIGFuZCBhcHBl YXJzIGJlZm9yZSBmaXJzdC4KIAogVmVyc2lvbiBzb3J0IChAc2FtcHtzb3J0IC1WfSkgZmly c3QgYnJlYWtzIGRvd24gdGhlIHN0cmluZyBpbnRvIGRpZ2l0IGFuZAogbm9uLWRpZ2l0IHBh cnRzLCBhbmQgb25seSB0aGVuIGNvbXBhcmVzIGVhY2ggcGFydCAoc2VlIGFubm90YXRlZAot ZXhhbXBsZSBpbiBWZXJzaW9uLXNvcnQgb3JkZXJpbmcgcnVsZXMpLgorZXhhbXBsZSBpbiBA cmVme1ZlcnNpb24tc29ydCBvcmRlcmluZyBydWxlc30pLgogCiBDb21wYXJpbmcgdGhlIHN0 cmluZyBAc2FtcHs4LjF9IHRvIEBzYW1wezguMDF9LCBmaXJzdCB0aGUKLUBzYW1wezh9IGNo YXJhY3RlcnMgYXJlIGNvbXBhcmVkIChhbmQgYXJlIGlkZW50aWNhbCksIHRoZW4gdGhlCitA c2FtcHs4fXMgYXJlIGNvbXBhcmVkIChhbmQgYXJlIGlkZW50aWNhbCksIHRoZW4gdGhlCiBk b3RzIChAc2FtcHsufSkgYXJlIGNvbXBhcmVkIGFuZCBhcmUgaWRlbnRpY2FsLCBhbmQgbGFz dGx5IHRoZQogcmVtYWluaW5nIGRpZ2l0cyBhcmUgY29tcGFyZWQgbnVtZXJpY2FsbHkgKEBz YW1wezF9IGFuZCBAc2FtcHswMX0pIC0KLXdoaWNoIGFyZSBudW1lcmljYWxseSBlcXVpdmFs ZW50LiBIZW5jZSwgQHNhbXB7OC4wMX0gYW5kIEBzYW1wezguMX0KK3doaWNoIGFyZSBudW1l cmljYWxseSBlcXVhbC4gIEhlbmNlLCBAc2FtcHs4LjAxfSBhbmQgQHNhbXB7OC4xfQogYXJl IGdyb3VwZWQgdG9nZXRoZXIuCiAKIFNpbWlsYXJseSwgY29tcGFyaW5nIEBzYW1wezguNX0g dG8gQHNhbXB7OC40OX0gLS0gdGhlIEBzYW1wezh9CkBAIC0zMDEsMTAgKzMwOCwxMCBAQCBU aGlzIHNvcnRpbmcgb3JkZXIgKHdoZXJlIEBzYW1wezguNX0gY29tZXMgYmVmb3JlIEBzYW1w ezguNDl9KSBpcyBjb21tb24gd2hlbgogYXNzaWduaW5nIHZlcnNpb25zIHRvIGNvbXB1dGVy IHByb2dyYW1zICh3aGlsZSBwZXJoYXBzIG5vdCBpbnR1aXRpdmUKIG9yIGBgbmF0dXJhbCcn IGZvciBwZW9wbGUpLgogCi1Abm9kZSBQdW5jdHVhdGlvbiBjaGFyYWN0ZXJzCi1Ac3Vic2Vj dGlvbiBQdW5jdHVhdGlvbiBjaGFyYWN0ZXJzCitAbm9kZSBWZXJzaW9uIHNvcnQgcHVuY3R1 YXRpb24KK0BzdWJzZWN0aW9uIFZlcnNpb24gc29ydCBwdW5jdHVhdGlvbgogCi1QdW5jdHVh dGlvbiBjaGFyYWN0ZXJzIGFyZSBzb3J0ZWQgYnkgQVNDSUkgb3JkZXIgKHJ1bGUgMi4yKS4K K1B1bmN0dWF0aW9uIGlzIHNvcnRlZCBieSBBU0NJSSBvcmRlciAocnVsZSAyLkIpLgogCiBA ZXhhbXBsZQogJCB0b3VjaCAxLjAuNV9zcmMudGFyLmd6IDEuMF9zcmMudGFyLmd6CkBAIC0z MTksMjIgKzMyNiwyMiBAQCBCYXNlZCBvbiB0aGUgdmVyc2lvbi1zb3J0IG9yZGVyaW5nIHJ1 bGVzLCB0aGUgc3RyaW5ncyBhcmUgYnJva2VuIGRvd24KIGludG8gdGhlIGZvbGxvd2luZyBw YXJ0czoKIAogQGV4YW1wbGUKLSAgICAgICAgICAxICAgQHJ7dnN9ICAxICAgICAgICAgICAg ICAgQHJ7KHJ1bGUgMywgYWxsIGRpZ2l0IGNoYXJhY3RlcnMpfQotICAgICAgICAgIC4gICBA cnt2c30gIC4gICAgICAgICAgICAgICBAcnsocnVsZSAyLCBhbGwgbm9uLWRpZ2l0IGNoYXJh Y3RlcnMpfQorICAgICAgICAgIDEgICBAcnt2c30gIDEgICAgICAgICAgICAgICBAcnsocnVs ZSAzLCBhbGwgZGlnaXRzKX0KKyAgICAgICAgICAuICAgQHJ7dnN9ICAuICAgICAgICAgICAg ICAgQHJ7KHJ1bGUgMiwgYWxsIG5vbi1kaWdpdHMpfQogICAgICAgICAgIDAgICBAcnt2c30g IDAgICAgICAgICAgICAgICBAcnsocnVsZSAzKX0KICAgICAgICAgICAuICAgQHJ7dnN9ICBf c3JjLnRhci5neiAgICAgQHJ7KHJ1bGUgMil9Ci0gICAgICAgICAgNSAgIEBye3ZzfSAgZW1w dHkgc3RyaW5nICAgIEByeyhubyBtb3JlIGNoYXJhY3RlciBpbiB0aGUgZmlsZSBuYW1lKX0K KyAgICAgICAgICA1ICAgQHJ7dnN9ICBlbXB0eSBzdHJpbmcgICAgQHJ7KG5vIG1vcmUgYnl0 ZXMgaW4gdGhlIGZpbGUgbmFtZSl9CiBfc3JjLnRhci5neiAgIEBye3ZzfSAgZW1wdHkgc3Ry aW5nCiBAZW5kIGV4YW1wbGUKIAogVGhlIGZvdXJ0aCBwYXJ0cyAoQHNhbXB7Ln0gYW5kIEBz YW1we19zcmMudGFyLmd6fSkgYXJlIGNvbXBhcmVkCi1sZXhpY2FsbHkgYnkgQVNDSUkgb3Jk ZXIuIFRoZSBjaGFyYWN0ZXIgQHNhbXB7Ln0gKEFTQ0lJIHZhbHVlIDQ2KSBpcwotc21hbGxl ciB0aGFuIEBzYW1we199IChBU0NJSSB2YWx1ZSA5NSkgLS0gYW5kIHNob3VsZCBiZSBsaXN0 ZWQgYmVmb3JlIGl0LgorbGV4aWNhbGx5IGJ5IEFTQ0lJIG9yZGVyLiBUaGUgQHNhbXB7Ln0g KEFTQ0lJIHZhbHVlIDQ2KSBpcworbGVzcyB0aGFuIEBzYW1we199IChBU0NJSSB2YWx1ZSA5 NSkgLS0gYW5kIHNob3VsZCBiZSBsaXN0ZWQgYmVmb3JlIGl0LgogCiBIZW5jZSwgQGZpbGV7 MS4wLjVfc3JjLnRhci5nen0gaXMgbGlzdGVkIGZpcnN0LgogCi1JZiBhIGRpZmZlcmVudCBj aGFyYWN0ZXIgYXBwZWFycyBpbnN0ZWFkIG9mIHRoZSB1bmRlcnNjb3JlIChmb3IKLWV4YW1w bGUsIHBlcmNlbnQgc2lnbiBAc2FtcHslfSBBU0NJSSB2YWx1ZSAzNywgd2hpY2ggaXMgc21h bGxlcgorSWYgYSBkaWZmZXJlbnQgYnl0ZSBhcHBlYXJzIGluc3RlYWQgb2YgdGhlIHVuZGVy c2NvcmUgKGZvcgorZXhhbXBsZSwgcGVyY2VudCBzaWduIEBzYW1weyV9IEFTQ0lJIHZhbHVl IDM3LCB3aGljaCBpcyBsZXNzCiB0aGFuIGRvdCdzIEFTQ0lJIHZhbHVlIG9mIDQ2KSwgdGhh dCBmaWxlIHdpbGwgYmUgbGlzdGVkIGZpcnN0OgogCiBAZXhhbXBsZQpAQCAtMzQ0LDcgKzM1 MSw3IEBAICQgdG91Y2ggICAxLjAuNV9zcmMudGFyLmd6ICAgICAxLjAlenp6enouZ3oKIEBl bmQgZXhhbXBsZQogCiBUaGUgc2FtZSByZWFzb25pbmcgYXBwbGllcyB0byB0aGUgZm9sbG93 aW5nIGV4YW1wbGUsIGFzIEBzYW1wey59IHdpdGgKLUFTQ0lJIHZhbHVlIDQ2IGlzIHNtYWxs ZXIgdGhhbiBAc2FtcHsvfSB3aXRoIEFTQ0lJIHZhbHVlIDQ3OgorQVNDSUkgdmFsdWUgNDYg aXMgbGVzcyB0aGFuIEBzYW1wey99IHdpdGggQVNDSUkgdmFsdWUgNDc6CiAKIEBleGFtcGxl CiAkIGNhdCBpbnB1dDUKQEAgLTM1OSw3ICszNjYsNyBAQCAkIHNvcnQgLVYgaW5wdXQ1CiBA bm9kZSBQdW5jdHVhdGlvbiB2cyBsZXR0ZXJzCiBAc3Vic2VjdGlvbiBQdW5jdHVhdGlvbiB2 cyBsZXR0ZXJzCiAKLVJ1bGUgMi4yLjEgZGljdGF0ZXMgdGhhdCBsZXR0ZXJzIHNvcnRzIGVh cmxpZXIgdGhhbiBhbGwgbm9uLWxldHRlcnMKK1J1bGUgMi5CLmEgc2F5cyBsZXR0ZXJzIHNv cnQgYmVmb3JlIG5vbi1sZXR0ZXJzCiAoYWZ0ZXIgYnJlYWtpbmcgZG93biBhIHN0cmluZyB0 byBkaWdpdCBhbmQgbm9uLWRpZ2l0IHBhcnRzKS4KIAogQGV4YW1wbGUKQEAgLTM3MiwyMyAr Mzc5LDIzIEBAIGElCiBAZW5kIGV4YW1wbGUKIAogVGhlIGlucHV0IHN0cmluZ3MgY29uc2lz dCBlbnRpcmVseSBvZiBub24tZGlnaXRzLCBhbmQgYmFzZWQgb24gdGhlCi1hYm92ZSBhbGdv cml0aG0gaGF2ZSBvbmx5IG9uZSBwYXJ0LCBhbGwgbm9uLWRpZ2l0IGNoYXJhY3RlcnMKK2Fi b3ZlIGFsZ29yaXRobSBoYXZlIG9ubHkgb25lIHBhcnQsIGFsbCBub24tZGlnaXRzCiAoQHNh bXB7YSV9IHZzIEBzYW1we2F6fSkuCiAKIEVhY2ggcGFydCBpcyB0aGVuIGNvbXBhcmVkIGxl eGljYWxseSwKLWNoYXJhY3Rlci1ieS1jaGFyYWN0ZXIuIEBzYW1we2F9IGNvbXBhcmVzIGlk ZW50aWNhbGx5IGluIGJvdGgKK2J5dGUtYnktYnl0ZTsgQHNhbXB7YX0gY29tcGFyZXMgaWRl bnRpY2FsbHkgaW4gYm90aAogc3RyaW5ncy4KIAotUnVsZSAyLjIuMSBkaWN0YXRlcyB0aGF0 IGxldHRlcnMgKEBzYW1we3p9KSBzb3J0cyBlYXJsaWVyIHRoYW4gYWxsCi1ub24tbGV0dGVy cyAoQHNhbXB7JX0pIC0tIGhlbmNlIEBzYW1we2F6fSBhcHBlYXJzIGZpcnN0IChkZXNwaXRl CitSdWxlIDIuQi5hIHNheXMgYSBsZXR0ZXIgbGlrZSBAc2FtcHt6fSBzb3J0cyBiZWZvcmUK K2Egbm9uLWxldHRlciBsaWtlIEBzYW1weyV9IC0tIGhlbmNlIEBzYW1we2F6fSBhcHBlYXJz IGZpcnN0IChkZXNwaXRlCiBAc2FtcHt6fSBoYXZpbmcgQVNDSUkgdmFsdWUgb2YgMTIyLCBt dWNoIGxhcmdlciB0aGFuIEBzYW1weyV9CiB3aXRoIEFTQ0lJIHZhbHVlIDM3KS4KIAotQG5v ZGUgVGhlIHRpbGRlIEBzYW1we359IGNoYXJhY3RlcgotQHN1YnNlY3Rpb24gVGhlIHRpbGRl IEBzYW1we359IGNoYXJhY3RlcgorQG5vZGUgVGhlIHRpbGRlIEBzYW1we359CitAc3Vic2Vj dGlvbiBUaGUgdGlsZGUgQHNhbXB7fn0KIAotUnVsZSAyLjIuMiBkaWN0YXRlcyB0aGF0IHRo ZSB0aWxkZSBjaGFyYWN0ZXIgQHNhbXB7fn0gKEFTQ0lJIDEyNikgc29ydHMKLWJlZm9yZSBh bGwgb3RoZXIgbm9uLWRpZ2l0IGNoYXJhY3RlcnMsIGluY2x1ZGluZyBhbiBlbXB0eSBwYXJ0 LgorUnVsZSAyLkIuYiBzYXlzIHRoZSB0aWxkZSBAc2FtcHt+fSAoQVNDSUkgMTI2KSBzb3J0 cworYmVmb3JlIG90aGVyIGJ5dGVzLCBhbmQgYmVmb3JlIGFuIGVtcHR5IHN0cmluZy4KIAog QGV4YW1wbGUKICQgY2F0IGlucHV0NwpAQCAtNDEzLDEzICs0MjAsMTMgQEAgd2l0aCBhIG5v bi1kaWdpdCAoQHNhbXB7fn0pLiBUaGlzIGlzIHRoZSBmaXJzdCBwYXJ0LiBBbGwgb3RoZXIg bGluZXMKIGluIHRoZSBpbnB1dCBmaWxlIHN0YXJ0IHdpdGggYSBkaWdpdCAtLSB0aGVpciBm aXJzdCBub24tZGlnaXQgcGFydCBpcwogZW1wdHkuCiAKLUJhc2VkIG9uIHJ1bGUgMi4yLjIs IHRpbGRlIEBzYW1we359IHNvcnRzIGJlZm9yZSBhbGwgb3RoZXIgbm9uLWRpZ2l0cwotaW5j bHVkaW5nIHRoZSBlbXB0eSBwYXJ0IC0tIGhlbmNlIGl0IGNvbWVzIGJlZm9yZSBhbGwgb3Ro ZXIgc3RyaW5ncywKK0Jhc2VkIG9uIHJ1bGUgMi5CLmIsIHRpbGRlIEBzYW1we359IHNvcnRz IGJlZm9yZSBvdGhlciBieXRlcworYW5kIGJlZm9yZSB0aGUgZW1wdHkgc3RyaW5nIC0tIGhl bmNlIGl0IGNvbWVzIGJlZm9yZSBhbGwgb3RoZXIgc3RyaW5ncywKIGFuZCBpcyBsaXN0ZWQg Zmlyc3QgaW4gdGhlIHNvcnRlZCBvdXRwdXQuCiAKIFRoZSByZW1haW5pbmcgbGluZXMgKEBz YW1wezF9LCBAc2FtcHsxJX0sIEBzYW1wezEuMn0sIEBzYW1wezF+fSkKIGZvbGxvdyBzaW1p bGFyIGxvZ2ljOiBUaGUgZGlnaXQgcGFydCBpcyBleHRyYWN0ZWQgKDEgZm9yIGFsbCBzdHJp bmdzKQotYW5kIGNvbXBhcmVzIGlkZW50aWNhbC4gVGhlIGZvbGxvd2luZyBleHRyYWN0ZWQg cGFydHMgZm9yIHRoZSByZW1haW5pbmcKK2FuZCBjb21wYXJlcyBlcXVhbC4gVGhlIGZvbGxv d2luZyBleHRyYWN0ZWQgcGFydHMgZm9yIHRoZSByZW1haW5pbmcKIGlucHV0IGxpbmVzIGFy ZTogZW1wdHkgcGFydCwgQHNhbXB7JX0sIEBzYW1wey59LCBAc2FtcHt+fS4KIAogVGlsZGUg c29ydHMgYmVmb3JlIGFsbCBvdGhlcnMsIGhlbmNlIHRoZSBsaW5lIEBzYW1wezF+fSBhcHBl YXJzIG5leHQuCkBAIC00NTIsOCArNDU5LDggQEAgYc6xCiBJZ25vcmluZyB0aGUgZmlyc3Qg bGV0dGVyIChAc2FtcHthfSkgd2hpY2ggaXMgaWRlbnRpY2FsIGluIGFsbAogc3RyaW5ncywg dGhlIGNvbXBhcmVkIHZhbHVlcyBhcmU6CiAKLUBzYW1we2F9IGFuZCBAc2FtcHt6fSBhcmUg bGV0dGVycywgYW5kIHNvcnQgZWFybGllciB0aGFuCi1hbGwgb3RoZXIgbm9uLWRpZ2l0IGNo YXJhY3RlcnMuCitAc2FtcHthfSBhbmQgQHNhbXB7en0gYXJlIGxldHRlcnMsIGFuZCBzb3J0 IGJlZm9yZQorYWxsIG90aGVyIG5vbi1kaWdpdHMuCiAKIFRoZW4sIHBlcmNlbnQgc2lnbiBA c2FtcHslfSAoQVNDSUkgdmFsdWUgMzcpIGlzIGNvbXBhcmVkIHRvIHRoZQogZmlyc3QgYnl0 ZSBvZiB0aGUgVVRGLTggc2VxdWVuY2Ugb2YgQHNhbXB7zrF9LCB3aGljaCBpcyAweENFIG9y IDIwNikuIFRoZQpAQCAtNDY3LDggKzQ3NCw4IEBAIG9mZmljaWFsIERlYmlhbiBhbGdvcml0 aG0sIGluIG9yZGVyIHRvIGFjY29tbW9kYXRlIG1vcmUgZ2VuZXJhbCB1c2FnZQogYW5kIGZp bGUgbmFtZSBsaXN0aW5nLgogCiAKLUBub2RlIEh5cGhlbi1taW51cyBhbmQgY29sb24gY2hh cmFjdGVycwotQHN1YnNlY3Rpb24gSHlwaGVuLW1pbnVzIEBzYW1wey19IGFuZCBjb2xvbiBA c2FtcHs6fSBjaGFyYWN0ZXJzCitAbm9kZSBIeXBoZW4tbWludXMgYW5kIGNvbG9uCitAc3Vi c2VjdGlvbiBIeXBoZW4tbWludXMgQHNhbXB7LX0gYW5kIGNvbG9uIEBzYW1wezp9CiAKIElu IERlYmlhbidzIHZlcnNpb24gc3RyaW5nIHN5bnRheCB0aGUgdmVyc2lvbiBjb25zaXN0cyBv ZiB0aHJlZSBwYXJ0czoKIEBleGFtcGxlCkBAIC00ODgsNyArNDk1LDcgQEAgRXhhbXBsZSBv ZiBzdWNoIHZlcnNpb24gc3RyaW5nczoKIEBlbmQgZXhhbXBsZQogCiBJZiB0aGUgQHNhbXB7 ZGViaWFuX3JldmlzaW9uIHBhcnR9IGlzIG5vdCBwcmVzZW50LAotaHlwaGVuIGNoYXJhY3Rl cnMgQHNhbXB7LX0gYXJlIG5vdCBhbGxvd2VkLgoraHlwaGVucyBAc2FtcHstfSBhcmUgbm90 IGFsbG93ZWQuCiBJZiBlcG9jaCBpcyBub3QgcHJlc2VudCwgY29sb25zIEBzYW1wezp9IGFy ZSBub3QgYWxsb3dlZC4KIAogSWYgdGhlc2UgcGFydHMgYXJlIHByZXNlbnQsIGh5cGhlbiBh bmQvb3IgY29sb25zIGNhbiBhcHBlYXIgb25seSBvbmNlCkBAIC00OTgsOCArNTA1LDggQEAg SW4gR05VIENvcmV1dGlscywgc3VjaCByZXN0cmljdGlvbnMgYXJlIG5vdCByZWFzb25hYmxl IChhIGZpbGUgbmFtZSBjYW4KIGhhdmUgbWFueSBoeXBoZW5zLCBhIGxpbmUgb2YgdGV4dCBj YW4gaGF2ZSBtYW55IGNvbG9ucykuCiAKIEFzIGEgcmVzdWx0LCBpbiBHTlUgQ29yZXV0aWxz IGh5cGhlbnMgYW5kIGNvbG9ucyBhcmUgdHJlYXRlZCBleGFjdGx5Ci1saWtlIGFsbCBvdGhl ciBwdW5jdHVhdGlvbiBjaGFyYWN0ZXJzLCBpLmUuLCB0aGV5IGFyZSBzb3J0ZWQgYWZ0ZXIK LWxldHRlcnMuICBAeHJlZntQdW5jdHVhdGlvbiBjaGFyYWN0ZXJzfS4KK2xpa2UgYWxsIG90 aGVyIHB1bmN0dWF0aW9uLCBpLmUuLCB0aGV5IGFyZSBzb3J0ZWQgYWZ0ZXIKK2xldHRlcnMu ICBAeHJlZntWZXJzaW9uIHNvcnQgcHVuY3R1YXRpb259LgogCiBJbiBEZWJpYW4sIHRoZXNl IGNoYXJhY3RlcnMgYXJlIHRyZWF0ZWQgZGlmZmVyZW50bHkgdGhhbiBpbiBDb3JldXRpbHM6 CiBhIHZlcnNpb24gc3RyaW5nIHdpdGggaHlwaGVuIHdpbGwgc29ydCBiZWZvcmUgc2ltaWxh ciBzdHJpbmdzIHdpdGhvdXQKQEAgLTUyMiwyOSArNTI5LDI3IEBAIG91dCBvZiBvcmRlcgog Rm9yIGZ1cnRoZXIgZGV0YWlscywgc2VlIEByZWZ7Q29tcGFyaW5nIHR3byBzdHJpbmdzIHVz aW5nIERlYmlhbidzCiBhbGdvcml0aG19IGFuZCBAdXJlZntodHRwczovL2J1Z3MuZ251Lm9y Zy8zNTkzOSxHTlUgQnVnIDM1OTM5fS4KIAotQG5vZGUgQWRkaXRpb25hbCBoYXJkLWNvZGVk IHByaW9yaXRpZXMgaW4gR05VIENvcmV1dGlscyB2ZXJzaW9uIHNvcnQKLUBzdWJzZWN0aW9u IEFkZGl0aW9uYWwgaGFyZC1jb2RlZCBwcmlvcml0aWVzIGluIEdOVSBDb3JldXRpbHMgdmVy c2lvbiBzb3J0CitAbm9kZSBTcGVjaWFsIHByaW9yaXR5IGluIEdOVSBDb3JldXRpbHMgdmVy c2lvbiBzb3J0CitAc3Vic2VjdGlvbiBTcGVjaWFsIHByaW9yaXR5IGluIEdOVSBDb3JldXRp bHMgdmVyc2lvbiBzb3J0CiAKIEluIEdOVSBDb3JldXRpbHMgdmVyc2lvbiBzb3J0LCB0aGUg Zm9sbG93aW5nIGl0ZW1zIGhhdmUKLXNwZWNpYWwgcHJpb3JpdHkgYW5kIHNvcnQgZWFybGll ciB0aGFuIGFsbCBvdGhlciBjaGFyYWN0ZXJzIChsaXN0ZWQgaW4KLW9yZGVyKTsKK3NwZWNp YWwgcHJpb3JpdHkgYW5kIHNvcnQgYmVmb3JlIGFsbCBvdGhlciBzdHJpbmdzIChsaXN0ZWQg aW4gb3JkZXIpOgogCiBAZW51bWVyYXRlCiBAaXRlbSBUaGUgZW1wdHkgc3RyaW5nCiAKLUBp dGVtIFRoZSBzdHJpbmcgQHNhbXB7Ln0gKGEgc2luZ2xlIGRvdCBjaGFyYWN0ZXIsIEFTQ0lJ IDQ2KQorQGl0ZW0gVGhlIHN0cmluZyBAc2FtcHsufSAoYSBzaW5nbGUgZG90LCBBU0NJSSA0 NikKIAotQGl0ZW0gVGhlIHN0cmluZyBAc2FtcHsuLn0gKHR3byBkb3QgY2hhcmFjdGVycykK K0BpdGVtIFRoZSBzdHJpbmcgQHNhbXB7Li59ICh0d28gZG90cykKIAotQGl0ZW0gU3RyaW5n cyBzdGFydCB3aXRoIGEgZG90IChAc2FtcHsufSkgc29ydCBlYXJsaWVyIHRoYW4KLXN0cmlu Z3Mgc3RhcnRpbmcgd2l0aCBhbnkgb3RoZXIgY2hhcmFjdGVycy4KK0BpdGVtIFN0cmluZ3Mg c3RhcnRpbmcgd2l0aCBkb3QgKEBzYW1wey59KSBzb3J0IGJlZm9yZQorc3RyaW5ncyBzdGFy dGluZyB3aXRoIGFueSBvdGhlciBieXRlLgogQGVuZCBlbnVtZXJhdGUKIAogRXhhbXBsZToK IAogQGV4YW1wbGUKICQgcHJpbnRmICclc1xuJyBhICIiIGIgIi4iIGMgICIuLiIgICIuZDIw IiAiLmQzIiAgfCBzb3J0IC1WCi0KIC4KIC4uCiAuZDMKQEAgLTU2NywzMyArNTcyLDM1IEBA IHByb2dyYW0sIHRoZSBvcmRlcmluZyBydWxlcyBhcmUgdGhlIHNhbWUuCiBAc3Vic2VjdGlv biBTcGVjaWFsIGhhbmRsaW5nIG9mIGZpbGUgZXh0ZW5zaW9ucwogCiBHTlUgQ29yZXV0aWxz IHZlcnNpb24gc29ydCBpbXBsZW1lbnRzIHNwZWNpYWxpemVkIGhhbmRsaW5nCi1vZiBmaWxl IGV4dGVuc2lvbnMgKG9yIHN0cmluZ3MgdGhhdCBsb29rIGxpa2UgZmlsZSBuYW1lcyB3aXRo Ci1leHRlbnNpb25zKS4KLQotVGhpcyBudWFuY2VkIGltcGxlbWVudGF0aW9uIGVuYWJsZXMg c2xpZ2h0bHkgbW9yZSBuYXR1cmFsIG9yZGVyaW5nIG9mIGZpbGVzLgorb2Ygc3RyaW5ncyB0 aGF0IGxvb2sgbGlrZSBmaWxlIG5hbWVzIHdpdGggZXh0ZW5zaW9ucy4KK1RoaXMgZW5hYmxl cyBzbGlnaHRseSBtb3JlIG5hdHVyYWwgb3JkZXJpbmcgb2YgZmlsZQorbmFtZXMuCiAKLVRo ZSBhZGRpdGlvbmFsIHJ1bGVzIGFyZToKK1RoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBydWxl cyBhcHBseSB3aGVuIGNvbXBhcmluZyB0d28gc3RyaW5ncyB3aGVyZQorYm90aCBiZWdpbiB3 aXRoIG5vbi1Ac2FtcHsufS4gIFRoZXkgYWxzbyBhcHBseSB3aGVuIGNvbXBhcmluZyB0d28K K3N0cmluZ3Mgd2hlcmUgYm90aCBiZWdpbiB3aXRoIEBzYW1wey59IGJ1dCBuZWl0aGVyIGlz IEBzYW1wey59IG9yIEBzYW1wey4ufS4KIAogQGVudW1lcmF0ZQogQGl0ZW0KLUEgc3VmZml4 IChpLmUuLCBhIGZpbGUgZXh0ZW5zaW9uKSBpcyBkZWZpbmVkIGFzOiBhIGRvdCwgZm9sbG93 ZWQgYnkgYQotbGV0dGVyIG9yIHRpbGRlLCBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBsZXR0 ZXJzLCBkaWdpdHMsIG9yIHRpbGRlcwotKHBvc3NpYmx5IHJlcGVhdGVkIG1vcmUgdGhhbiBv bmNlKSwgdW50aWwgdGhlIGVuZCBvZiB0aGUgc3RyaW5nCi0odGVjaG5pY2FsbHksIG1hdGNo aW5nIHRoZSByZWd1bGFyIGV4cHJlc3Npb24KLUBjb2RleyhcLltBLVphLXp+XVtBLVphLXow LTl+XSopKn0pLgorQSBzdWZmaXggKGkuZS4sIGEgZmlsZSBleHRlbnNpb24pIGlzIGRlZmlu ZWQgYXM6IGEgZG90LCBmb2xsb3dlZCBieSBhbgorQVNDSUkgbGV0dGVyIG9yIHRpbGRlLCBm b2xsb3dlZCBieSB6ZXJvIG9yIG1vcmUgQVNDSUkgbGV0dGVycywgZGlnaXRzLAorb3IgdGls ZGVzOyBhbGwgcmVwZWF0ZWQgemVybyBvciBtb3JlIHRpbWVzLCBhbmQgZW5kaW5nIGF0IHN0 cmluZyBlbmQuCitUaGlzIGlzIGVxdWl2YWxlbnQgdG8gbWF0Y2hpbmcgdGhlIGV4dGVuZGVk IHJlZ3VsYXIgZXhwcmVzc2lvbgorQGNvZGV7KFwuW0EtWmEten5dW0EtWmEtejAtOX5dKikq JH0gaW4gdGhlIEMgbG9jYWxlLgogCiBAaXRlbQotSWYgdGhlIHN0cmluZ3MgY29udGFpbnMg c3VmZml4ZXMsIHRoZSBzdWZmaXhlcyBhcmUgdGVtcG9yYXJpbHkKLXJlbW92ZWQsIGFuZCB0 aGUgc3RyaW5ncyBhcmUgY29tcGFyZWQgd2l0aG91dCB0aGVtICh1c2luZyB0aGUKLUByZWZ7 VmVyc2lvbi1zb3J0IG9yZGVyaW5nIHJ1bGVzLGFsZ29yaXRobSxhbGdvcml0aG19IGFib3Zl KS4KK1RoZSBzdWZmaXhlcyBhcmUgdGVtcG9yYXJpbHkgcmVtb3ZlZCwgYW5kIHRoZSBzdHJp bmdzIGFyZSBjb21wYXJlZAord2l0aG91dCB0aGVtLCB1c2luZyB2ZXJzaW9uIHNvcnQgKHNl ZSBAcmVme1ZlcnNpb24tc29ydCBvcmRlcmluZworcnVsZXN9KSB3aXRob3V0IHNwZWNpYWwg cHJpb3JpdHkgKHNlZSBAcmVme1NwZWNpYWwgcHJpb3JpdHkgaW4gR05VCitDb3JldXRpbHMg dmVyc2lvbiBzb3J0fSkuCiAKIEBpdGVtCi1JZiB0aGUgc3VmZml4LWxlc3Mgc3RyaW5ncyBh cmUgaWRlbnRpY2FsLCB0aGUgc3VmZml4IGlzIHJlc3RvcmVkIGFuZAotdGhlIGVudGlyZSBz dHJpbmdzIGFyZSBjb21wYXJlZC4KK0lmIHRoZSBzdWZmaXgtbGVzcyBzdHJpbmdzIGRvIG5v dCBjb21wYXJlIGVxdWFsLCB0aGlzIGNvbXBhcmlzb24KK3Jlc3VsdCBpcyB1c2VkIGFuZCB0 aGUgc3VmZml4ZXMgYXJlIGVmZmVjdGl2ZWx5IGlnbm9yZWQuCiAKIEBpdGVtCi1JZiB0aGUg bm9uLXN1ZmZpeGVkIHN0cmluZ3MgZGlmZmVyLCB0aGUgcmVzdWx0IGlzIHJldHVybmVkIGFu ZCB0aGUKLXN1ZmZpeCBpcyBlZmZlY3RpdmVseSBpZ25vcmVkLgorSWYgdGhlIHN1ZmZpeC1s ZXNzIHN0cmluZ3MgY29tcGFyZSBlcXVhbCwgdGhlIHN1ZmZpeGVzIGFyZSByZXN0b3JlZAor YW5kIHRoZSBlbnRpcmUgc3RyaW5ncyBhcmUgY29tcGFyZWQgdXNpbmcgdmVyc2lvbiBzb3J0 LgogQGVuZCBlbnVtZXJhdGUKIAogRXhhbXBsZXMgZm9yIHJ1bGUgMToKQEAgLTYxOSw2ICs2 MjYsOSBAQCBpcyBub3QgaW5jbHVkZWQpCiBAaXRlbQogQHNhbXB7Z2NjLWMrKy0xMC44LjEy LTAuN3JjMi5mYzkudGFyLmJ6Mn06IHRoZSBzdWZmaXggaXMKIEBzYW1wey5mYzkudGFyLmJ6 Mn0gKEBzYW1wey43cmMyfSBpcyBub3QgaW5jbHVkZWQgYXMgaXQgYmVnaW5zIHdpdGggYSBk aWdpdCkKKworQGl0ZW0KK0BzYW1wey5hdXRvbTR0ZS5jZmd9OiB0aGUgc3VmZml4IGlzIHRo ZSBlbnRpcmUgc3RyaW5nLgogQGVuZCBpdGVtaXplCiAKIEV4YW1wbGVzIGZvciBydWxlIDI6 CkBAIC02NjUsOCArNjc1LDggQEAgV2l0aG91dCB0aGUgc3VmZml4LXJlbW92YWwgYWxnb3Jp dGhtLCB0aGUgc3RyaW5ncyB3aWxsIGJlIGJyb2tlbiBkb3duCiB0byB0aGUgZm9sbG93aW5n IHBhcnRzOgogCiBAZXhhbXBsZQotaGVsbG8tICBAcnt2c30gIGhlbGxvLSAgQHJ7KHJ1bGUg MiwgYWxsIG5vbi1kaWdpdCBjaGFyYWN0ZXJzKX0KLTggICAgICAgQHJ7dnN9ICA4ICAgICAg IEByeyhydWxlIDMsIGFsbCBkaWdpdCBjaGFyYWN0ZXJzKX0KK2hlbGxvLSAgQHJ7dnN9ICBo ZWxsby0gIEByeyhydWxlIDIsIGFsbCBub24tZGlnaXRzKX0KKzggICAgICAgQHJ7dnN9ICA4 ICAgICAgIEByeyhydWxlIDMsIGFsbCBkaWdpdHMpfQogLnR4dCAgICBAcnt2c30gIC4gICAg ICAgQHJ7KHJ1bGUgMil9CiBlbXB0eSAgIEBye3ZzfSAgMgogZW1wdHkgICBAcnt2c30gIC50 eHQKQEAgLTY4NSw4ICs2OTUsOCBAQCBUaGUgc3VmZml4ZXMgKEBzYW1wey50eHR9KSBhcmUg cmVtb3ZlZCwgYW5kIHRoZSByZW1haW5pbmcgc3RyaW5ncyBhcmUKIGJyb2tlbiBkb3duIGlu dG8gdGhlIGZvbGxvd2luZyBwYXJ0czoKIAogQGV4YW1wbGUKLWhlbGxvLSAgQHJ7dnN9ICBo ZWxsby0gIEByeyhydWxlIDIsIGFsbCBub24tZGlnaXQgY2hhcmFjdGVycyl9Ci04ICAgICAg IEBye3ZzfSAgOCAgICAgICBAcnsocnVsZSAzLCBhbGwgZGlnaXQgY2hhcmFjdGVycyl9Cito ZWxsby0gIEBye3ZzfSAgaGVsbG8tICBAcnsocnVsZSAyLCBhbGwgbm9uLWRpZ2l0cyl9Cis4 ICAgICAgIEBye3ZzfSAgOCAgICAgICBAcnsocnVsZSAzLCBhbGwgZGlnaXRzKX0KIGVtcHR5 ICAgQHJ7dnN9ICAuICAgICAgIEByeyhydWxlIDIpfQogZW1wdHkgICBAcnt2c30gIDIKIEBl bmQgZXhhbXBsZQpAQCAtNzU0LDcgKzc2NCw3IEBAIGRwa2c6IHdhcm5pbmc6IHZlcnNpb24g JzMuMC8nIGhhcyBiYWQgc3ludGF4OgogCiBUbyBpbGx1c3RyYXRlIHRoZSBkaWZmZXJlbnQg aGFuZGxpbmcgb2YgaHlwaGVucyBiZXR3ZWVuIERlYmlhbiBhbmQKIENvcmV1dGlscyBhbGdv cml0aG1zIChzZWUKLUByZWZ7SHlwaGVuLW1pbnVzIGFuZCBjb2xvbiBjaGFyYWN0ZXJzfSk6 CitAcmVme0h5cGhlbi1taW51cyBhbmQgY29sb259KToKIAogQGV4YW1wbGUKICQgY29tcHZl ciBhYmIgYWItY2QgMj4vZGV2L251bGwgICAgICQgcHJpbnRmICdhYmJcbmFiLWNkXG4nIHwg c29ydCAtVgpkaWZmIC0tZ2l0IGEvc3JjL2xzLmMgYi9zcmMvbHMuYwppbmRleCA1M2Y4MDA3 NmIuLjE5MzBlNGFiYiAxMDA2NDQKLS0tIGEvc3JjL2xzLmMKKysrIGIvc3JjL2xzLmMKQEAg LTM5NDEsMTggKzM5NDEsMjAgQEAgREVGSU5FX1NPUlRfRlVOQ1RJT05TIChleHRlbnNpb24s IGNtcF9leHRlbnNpb24pCiBERUZJTkVfU09SVF9GVU5DVElPTlMgKHdpZHRoLCBjbXBfd2lk dGgpCiAKIC8qIENvbXBhcmUgZmlsZSB2ZXJzaW9ucy4KLSAgIFVubGlrZSBhbGwgb3RoZXIg Y29tcGFyZSBmdW5jdGlvbnMgYWJvdmUsIGNtcF92ZXJzaW9uIGRlcGVuZHMgb25seQotICAg b24gZmlsZXZlcmNtcCwgd2hpY2ggZG9lcyBub3QgZmFpbCAoZXZlbiBmb3IgbG9jYWxlIHJl YXNvbnMpLCBhbmQgZG9lcyBub3QKLSAgIG5lZWQgYSBzZWNvbmRhcnkgc29ydCBrZXkuIFNl ZSBsaWIvZmlsZXZlcmNtcC5oIGZvciBmdW5jdGlvbiBkZXNjcmlwdGlvbi4KKyAgIFVubGlr ZSB0aGUgb3RoZXIgY29tcGFyZSBmdW5jdGlvbnMsIGNtcF92ZXJzaW9uIGRvZXMgbm90IGZh aWwKKyAgIGJlY2F1c2UgZmlsZXZlcmNtcCBhbmQgc3RyY21wIGRvIG5vdCBmYWlsOyBjbXBf dmVyc2lvbiB1c2VzIHN0cmNtcAorICAgaW5zdGVhZCBvZiB4c3RyY29sbCBiZWNhdXNlIGZp bGV2ZXJjbXAgaXMgbG9jYWxlLWluZGVwZW5kZW50IHNvCisgICBzdHJjbXAgaXMgaXRzIGFw cHJvcHJpYXRlIHNlY29uZGFyeS4KIAotICAgQWxsIHRoZSBvdGhlciBzb3J0IG9wdGlvbnMs IGluIGZhY3QsIG5lZWQgeHN0cmNvbGwgYW5kIHN0cmNtcCB2YXJpYW50cywKLSAgIGJlY2F1 c2UgdGhleSBhbGwgdXNlIGEgc3RyaW5nIGNvbXBhcmlzb24gKGVpdGhlciBhcyB0aGUgcHJp bWFyeSBvciBzZWNvbmRhcnkKKyAgIEFsbCB0aGUgb3RoZXIgc29ydCBvcHRpb25zIG5lZWQg eHN0cmNvbGwgYW5kIHN0cmNtcCB2YXJpYW50cywKKyAgIGJlY2F1c2UgdGhleSBhbGwgdXNl IHhzdHJjb2xsIChlaXRoZXIgYXMgdGhlIHByaW1hcnkgb3Igc2Vjb25kYXJ5CiAgICBzb3J0 IGtleSksIGFuZCB4c3RyY29sbCBoYXMgdGhlIGFiaWxpdHkgdG8gZG8gYSBsb25nam1wIGlm IHN0cmNvbGwgZmFpbHMgZm9yCi0gICBsb2NhbGUgcmVhc29ucy4gIExhc3RseSwgZmlsZXZl cmNtcCBpcyBBTFdBWVMgYXZhaWxhYmxlIHdpdGggZ251bGliLiAgKi8KKyAgIGxvY2FsZSBy ZWFzb25zLiAgKi8KIHN0YXRpYyBpbnQKIGNtcF92ZXJzaW9uIChzdHJ1Y3QgZmlsZWluZm8g Y29uc3QgKmEsIHN0cnVjdCBmaWxlaW5mbyBjb25zdCAqYikKIHsKLSAgcmV0dXJuIGZpbGV2 ZXJjbXAgKGEtPm5hbWUsIGItPm5hbWUpOworICBpbnQgZGlmZiA9IGZpbGV2ZXJjbXAgKGEt Pm5hbWUsIGItPm5hbWUpOworICByZXR1cm4gZGlmZiA/IGRpZmYgOiBzdHJjbXAgKGEtPm5h bWUsIGItPm5hbWUpOwogfQogCiBzdGF0aWMgaW50CmRpZmYgLS1naXQgYS9zcmMvc29ydC5j IGIvc3JjL3NvcnQuYwppbmRleCAxYTNiZGE2OTguLjNiNzc1ZDZiYiAxMDA2NDQKLS0tIGEv c3JjL3NvcnQuYworKysgYi9zcmMvc29ydC5jCkBAIC0yNzAzLDcgKzI3MDMsNyBAQCBrZXlj b21wYXJlIChzdHJ1Y3QgbGluZSBjb25zdCAqYSwgc3RydWN0IGxpbmUgY29uc3QgKmIpCiAg ICAgICAgICAgZWxzZSBpZiAoa2V5LT5yYW5kb20pCiAgICAgICAgICAgICBkaWZmID0gY29t cGFyZV9yYW5kb20gKHRhLCB0bGVuYSwgdGIsIHRsZW5iKTsKICAgICAgICAgICBlbHNlIGlm IChrZXktPnZlcnNpb24pCi0gICAgICAgICAgICBkaWZmID0gZmlsZXZlcmNtcCAodGEsIHRi KTsKKyAgICAgICAgICAgIGRpZmYgPSBmaWxlbnZlcmNtcCAodGEsIHRsZW5hLCB0YiwgdGxl bmIpOwogICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgLyog TG9jYWxlLWRlcGVuZGVudCBzdHJpbmcgc29ydGluZy4gIFRoaXMgaXMgc2xvd2VyIHRoYW4K ZGlmZiAtLWdpdCBhL3Rlc3RzL21pc2MvbHMtbWlzYy5wbCBiL3Rlc3RzL21pc2MvbHMtbWlz Yy5wbAppbmRleCBlMjQ2YjVjMjAuLmEyYWM2MGIyMyAxMDA3NTUKLS0tIGEvdGVzdHMvbWlz Yy9scy1taXNjLnBsCisrKyBiL3Rlc3RzL21pc2MvbHMtbWlzYy5wbApAQCAtMTEzLDggKzEx MywxMiBAQCBzdWIgbWFrZV9qX2QgKCkKICAgY2htb2QgMDU1NSwgJ2ovZCcgb3IgZGllICJt YWtpbmcgai9kIGV4ZWN1dGFibGU6ICQhXG4iOwogfQogCi1teSBAdjEgPSAocXcoMCA5IEEg WiBhIHopLCAnenp+JywgJ3p6JywgJ3p6Ln4xficsICd6ei4wJyk7Ci1teSBAdl9maWxlcyA9 ICgobWFwIHsgIi4kXyIgfSBAdjEpLCBAdjEpOworbXkgQHZfZmlsZXMgPSAoCisgICAgJy5B JywgJy5aJywgJy5hJywgJy56JywgJy56en4nLCAnLnp6JywgJy56ei5+MX4nLAorICAgICcu MCcsICcuOScsICcuenouMCcsCisgICAgICcwJywgICc5JywKKyAgICAgJ0EnLCAgJ1onLCAg J2EnLCAgJ3onLCAgJ3p6ficsICAnenonLCAgJ3p6Ln4xficsCisgICAgICd6ei4wJyk7CiBt eSAkZXhlX2luX3N1YmRpciA9IHtQUkUgPT4gc3ViIHsgbWFrZV9qX2QgKCk7IHB1c2hfbHNf Y29sb3JzKCdleD0wMTszMicpIH19OwogbXkgJHJlbW92ZV9qID0ge1BPU1QgPT4gc3ViIHt1 bmxpbmsgJ2ovZCcgb3IgZGllICJqL2Q6ICQhXG4iOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBybWRpciAnaicgb3IgZGllICJqOiAkIVxuIjsKZGlmZiAtLWdpdCBhL3Rlc3Rz L21pc2Mvc29ydC12ZXJzaW9uLnNoIGIvdGVzdHMvbWlzYy9zb3J0LXZlcnNpb24uc2gKaW5k ZXggMzc4NjYwNWQ2Li4xMGVhNmE1NmMgMTAwNzU1Ci0tLSBhL3Rlc3RzL21pc2Mvc29ydC12 ZXJzaW9uLnNoCisrKyBiL3Rlc3RzL21pc2Mvc29ydC12ZXJzaW9uLnNoCkBAIC01OCw2ICs1 OCw3IEBAIHN0cmluZyBzdGFydCA1LjguMCBlbmQgb2Ygc3RyCiBzdHJpbmcgc3RhcnQgNS44 MC4wIGVuZCBvZiBzdHIKIHN0cmluZyBzdGFydCA1LjkuMCBlbmQgb2Ygc3RyCiBzdHJpbmcg c3RhcnQgNS45MC4wIGVuZCBvZiBzdHIKK3N0cmluZyBzdGFydCA1LjA0LjAgZW5kIG9mIHN0 cgogX0VPRl8KIAogY2F0ID4gZXhwIDw8IF9FT0ZfCkBAIC04NSw2ICs4Niw3IEBAIHN0cmlu ZyBzdGFydCA1LjEuMCBlbmQgb2Ygc3RyCiBzdHJpbmcgc3RhcnQgNS4yLjAgZW5kIG9mIHN0 cgogc3RyaW5nIHN0YXJ0IDUuMy4wIGVuZCBvZiBzdHIKIHN0cmluZyBzdGFydCA1LjQuMCBl bmQgb2Ygc3RyCitzdHJpbmcgc3RhcnQgNS4wNC4wIGVuZCBvZiBzdHIKIHN0cmluZyBzdGFy dCA1LjUuMCBlbmQgb2Ygc3RyCiBzdHJpbmcgc3RhcnQgNS42LjAgZW5kIG9mIHN0cgogc3Ry aW5nIHN0YXJ0IDUuNy4wIGVuZCBvZiBzdHIKQEAgLTEwMSw2ICsxMDMsMTIgQEAgc3RyaW5n IHN0YXJ0IDUuODAuMCBlbmQgb2Ygc3RyCiBzdHJpbmcgc3RhcnQgNS45MC4wIGVuZCBvZiBz dHIKIF9FT0ZfCiAKLXNvcnQgLS1zb3J0PXZlcnNpb24gLW8gb3V0IGluIHx8IGZhaWw9MQor c29ydCAtLXN0YWJsZSAtLXNvcnQ9dmVyc2lvbiAtbyBvdXQgaW4gfHwgZmFpbD0xCiBjb21w YXJlIGV4cCBvdXQgfHwgZmFpbD0xCisKK3RyICcgJyAnXDAnIDxpbiA+aW4wIHx8IGZyYW1l d29ya19mYWlsdXJlXworc29ydCAtLXN0YWJsZSAtLXNvcnQ9dmVyc2lvbiAtbyBvdXQwIGlu MCB8fCBmYWlsPTEKK3RyICdcMCcgJyAnIDxvdXQwID5vdXQxIHx8IGZyYW1ld29ya19mYWls dXJlXworY29tcGFyZSBleHAgb3V0MSB8fCBmYWlsPTEKKwogRXhpdCAkZmFpbAotLSAKMi4z Mi4wCgo= --------------3nF0GattO7cCxepMmMoW0Ps8-- From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 13 09:17:25 2022 Received: (at 49239) by debbugs.gnu.org; 13 Feb 2022 14:17:25 +0000 Received: from localhost ([127.0.0.1]:36837 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJFgq-0003Yd-Qn for submit@debbugs.gnu.org; Sun, 13 Feb 2022 09:17:25 -0500 Received: from mail-wr1-f54.google.com ([209.85.221.54]:39808) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJFgp-0003YR-DM for 49239@debbugs.gnu.org; Sun, 13 Feb 2022 09:17:23 -0500 Received: by mail-wr1-f54.google.com with SMTP id d27so22923800wrc.6 for <49239@debbugs.gnu.org>; Sun, 13 Feb 2022 06:17:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:message-id:date:mime-version:user-agent:subject :content-language:to:cc:references:from:in-reply-to :content-transfer-encoding; bh=TiG+IPUJQTkzmv4wM84Xhpgb5MlUDD+MB0kteUKHmNs=; b=b/ZlH6PqqB0P4imn8DcBKWxCYvtMFUnhY0bLQBowa9tbP2sWCB6sn5OIVUHunI9XQd N0N7hJS8mOpj9PPc3h5SagdvwpaF6TmPSQPaRNX7YJz6piEvZyQjp0nnhdKw/li3YNTz LjHfX7EgY7qrXc3tC+o0jfQqykB4SxFE5URBx617OZeobUjvM4eeEyYW8NxiTAmG2QFp ps8yc0bVuMS/SI5RuNvKsoFww7iSs+vo5ncmlolxtKkc9I3tmRU1DBfXnXplScsWkfFp XBGtMcYqXpg0Uxx/uHmw73KkzbBmtsza6p71/X6E/WKI1BdxGmkJ+L24LttH3gHa5ED8 k/pA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:message-id:date:mime-version:user-agent :subject:content-language:to:cc:references:from:in-reply-to :content-transfer-encoding; bh=TiG+IPUJQTkzmv4wM84Xhpgb5MlUDD+MB0kteUKHmNs=; b=NqK8pPfNkg3ACzL9D/in7SVEWar6Ugo1w1XGdZ0iXyxnQVXxE+vGMLlqnUtK1bKvGI gzBLDCFP4Z8+Hbip6CUzBuygiu0YxXGMbmsvTh+fuWzrVS2YgWqA9xBvdBUiinB+6bEJ s1vcVQoena1n76JP1hpU369Rv6ajYBCnpdxsxRufgAH1lRZLqxhoOcQlHX0c2Oheb/k3 RV9LwKa3N68mbiA4eTZuKl9cs3ELCmrtRHBVXOQ1EELWk15xADb60wSFuBRbDHhNvmqv YJmShW0+8ViwwqlA3r99bmWeh1hdGeOgK5HACHwqThztojFcvY12ijS9j9lTespMWHdL Hi7w== X-Gm-Message-State: AOAM532d8OnaiE6fUj7RTmUQYO+deU3MI2Gtt/J0E8362v9YkwjZRpPe IirFs7Ektqe/i6t4uXQkZKk= X-Google-Smtp-Source: ABdhPJwyAGRv2YWQDLaB+VcDbAazXvY68yn/wtvcF4bvMG4cXecafsUd2BFhcv67wCHPHDnTc84oxQ== X-Received: by 2002:adf:e5cb:: with SMTP id a11mr8014903wrn.255.1644761837545; Sun, 13 Feb 2022 06:17:17 -0800 (PST) Received: from [192.168.1.9] (95-44-90-175-dynamic.agg2.lod.rsl-rtd.eircom.net. [95.44.90.175]) by smtp.googlemail.com with ESMTPSA id b4sm18881854wrw.100.2022.02.13.06.17.16 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 13 Feb 2022 06:17:17 -0800 (PST) Message-ID: <13d2dddc-b30c-1707-7a77-6eb93cac5d0f@draigBrady.com> Date: Sun, 13 Feb 2022 14:17:16 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Thunderbird/97.0 Subject: Re: bug#49239: Unexpected results with sort -V Content-Language: en-US To: Paul Eggert , Kamil Dudka , Michael Debertol References: <2780322.e9J7NaK4W3@nbkamil> <4394bd5c-8246-0add-762b-ec9c1d5073e2@gmail.com> <9910662.nUPlyArG6x@nbkamil> <80ac3d45-b23f-7730-f9dc-e2c86136a29a@cs.ucla.edu> From: =?UTF-8?Q?P=c3=a1draig_Brady?= In-Reply-To: <80ac3d45-b23f-7730-f9dc-e2c86136a29a@cs.ucla.edu> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 49239 Cc: 49239@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.5 (/) On 13/02/2022 05:31, Paul Eggert wrote: > On 6/28/21 10:54, Kamil Dudka wrote: >> You are right. The matching algorithm was not implemented correctly and >> the patch you attached fixes it. > > I looked into Bug#49239 and found some more places where the > documentation disagreed with the code. I installed the attached patches > into Gnulib and Coreutils, respectively, which should bring the two into > agreement and should fix the bugs that Michael reported albeit in a > different way than his proposed patch. Briefly: > > * The code didn't allow file name suffixes to be the entire file name, > but the documentation did. Here I went with the documentation. I could > be talked into the other way; it shouldn't matter much either way. > > * The code did the preliminary test (without suffixes) using strcmp, the > documentation said it should use version comparison. Here I went with > the documentation. > > * As Michael mentioned, sort -V mishandled NUL. I fixed this by adding a > Gnulib function filenvercmp that treats NUL as just another character. > > * As Michael also mentioned, filevercmp fell back on strcmp if version > sort found no difference, which meant sort's --stable flag was > ineffective. I fixed this by not having filevercmp fall back on strcmp. > > * I fixed the two-consecutive dot and trailing-dot bugs Michael > mentioned, by rewriting the suffix finder to not have that confusing > READ_ALPHA state variable, and to instead implement the regular > expression's nested * operators in the usual way with nested loops. > > Thanks, Michael, for reporting the problem. I'm boldly closing the > Coreutils bug report as fixed. A very thorough analysis. All looks good. thank you! Pádraig From unknown Tue Jun 17 01:43:50 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Mon, 14 Mar 2022 11:24:06 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator