From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: ozzloy Newsgroups: gmane.emacs.bugs Subject: bug#63941: [PATCH] ; always CRLF before non-first boundary in multipart form Date: Sun, 18 Jun 2023 16:23:23 -0700 Message-ID: References: <837csf4fp8.fsf@gnu.org> <83jzwe32pj.fsf@gnu.org> <83sfazzm8x.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="00000000000053fded05fe6fb5e9" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="18441"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 63941@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Jun 19 01:24:22 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qB1kr-0004ZE-R3 for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 19 Jun 2023 01:24:22 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qB1kb-0007pd-Bd; Sun, 18 Jun 2023 19:24:05 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qB1kZ-0007pE-0L for bug-gnu-emacs@gnu.org; Sun, 18 Jun 2023 19:24:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qB1kY-0000bE-Nn for bug-gnu-emacs@gnu.org; Sun, 18 Jun 2023 19:24:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qB1kY-0002Ge-IK for bug-gnu-emacs@gnu.org; Sun, 18 Jun 2023 19:24:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: ozzloy Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 18 Jun 2023 23:24:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 63941 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 63941-submit@debbugs.gnu.org id=B63941.16871306298696 (code B ref 63941); Sun, 18 Jun 2023 23:24:02 +0000 Original-Received: (at 63941) by debbugs.gnu.org; 18 Jun 2023 23:23:49 +0000 Original-Received: from localhost ([127.0.0.1]:55233 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qB1kK-0002GB-Qb for submit@debbugs.gnu.org; Sun, 18 Jun 2023 19:23:49 -0400 Original-Received: from mail-oo1-f41.google.com ([209.85.161.41]:58480) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qB1kI-0002Ft-Gh for 63941@debbugs.gnu.org; Sun, 18 Jun 2023 19:23:47 -0400 Original-Received: by mail-oo1-f41.google.com with SMTP id 006d021491bc7-55b21c3f359so1769027eaf.0 for <63941@debbugs.gnu.org>; Sun, 18 Jun 2023 16:23:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687130621; x=1689722621; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=8uy7/LeMi4yCJ14/W9Nuc1goS6sreYYsrkyAGznpqYo=; b=eztr4xOZp6UWApt2hHEhUpay7BnwZv4Jf0AveOsRk+mrdJc1GwSsFAsLlXtkOncl/D w5QD2BSD/7q8rsAiwA0EM5LmGcqU+Sglt67FYnPtgPcgZ0xt6I/MaGwC4L+dzzh87YhR Mj4wvMPMOOk9SE85bXrxNb6DA/CMqJy0Sb9ml1Q0jDH4GvQBLE4zq1aqHGLmBGKw90jc DDApMko0c4giRy7B/UxHRSEW6IlqeCFYRsNRodZ4KFnQToiuBSE45jX6n6unw1D0TV+r 143w30r/ULDzZys8qdShkWZMPWWeosoqqIJIOLX7UIKOqijb3kvkrYWClu0MQCIi+K4K bfZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687130621; x=1689722621; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=8uy7/LeMi4yCJ14/W9Nuc1goS6sreYYsrkyAGznpqYo=; b=Cv4cwJKq/2pXjg8FGOIHm5YgaecxUP+ZUOf1SdkoakPfjSe72otNLAYED3q1VEuJyX 7MHlpxTIdcsiw8i1XiC+2goc4dwQ1JqLMbkXIklXrbbK2UJbWk8fc2HEPqjswTOG7ijg k7/wnEk0iPZwgo2YqggtnP2H5us7ZMmp49/TRHE43b8wHQDBJY1pireszPGlkNnFLtNP /gYlLDuFeENquf3eMC001+3RtUcleGfb5j+qy2R/SjjGH2SVFPrGZJpLV+cB8StkEbs4 0RNWfemVm61/cwqDivuWS5tkfVVlvwhEL99wgTOTUdiVibhVZ9ugDL8tCMpRnErFuF8j hVGg== X-Gm-Message-State: AC+VfDxWD11IKZFo/4Q8uzjjfu3smjYZmVstWBy4e1b3dOqgzP5xqIdM kQFOooZ5NjfptCPEOZaUfzlzrRIwUARA4w9fKcpNsN0M X-Google-Smtp-Source: ACHHUZ6t2V7oneS78jY0akNWD/gWvgc4RJFxj+4IwlVlSBaZA5w3i3LsrJYNe5+92OH+ynJrwjxv4k3JU4J92AAEUNE= X-Received: by 2002:a4a:eb01:0:b0:55e:1687:bf with SMTP id f1-20020a4aeb01000000b0055e168700bfmr3154648ooj.5.1687130620549; Sun, 18 Jun 2023 16:23:40 -0700 (PDT) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:263665 Archived-At: --00000000000053fded05fe6fb5e9 Content-Type: multipart/alternative; boundary="00000000000053fdec05fe6fb5e7" --00000000000053fdec05fe6fb5e7 Content-Type: text/plain; charset="UTF-8" > who knows where it is used? As far as I can tell, it is only ever used by =(eww-submit ...)= from =lisp/net/eww.el=. That's the only place it's used in all of emacs, and every reference I can find on the web. I've tested the heck out of it now, and also used firefox, chromium, and curl to generate http messages for comparison. Those tests of the different versions of =mm-url-encode-multipart-form-data=, as well as the http messages generated by firefox, chromium, and curl can be seen here https://git.sr.ht/~ozzloy/emacs-bug-63941/tree/53a7949a5db21c456c1da3b4add29343c3d02137/item/mm-url-tests.el The patch I have attached to this email generates output that matches firefox, chromium, and curl. It also includes a bunch of tests for the included version of =mm-url-encode-multipart-form-data= If there's some change that would make the patch a better fit, let me know. I'm happy to modify it. --00000000000053fdec05fe6fb5e7 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

> who knows where it is used?

As far as I ca= n tell, it is only ever used by =3D(eww-submit ...)=3D from
=3Dlisp/net/= eww.el=3D.=C2=A0 That's the only place it's used in all of emacs,and every reference I can find on the web.

I've tested the hec= k out of it now, and also used firefox, chromium,
and curl to generate h= ttp messages for comparison.

Those tests of the different versions o= f
=3Dmm-url-encode-multipart-form-data=3D, as well as the http messages<= br>generated by firefox, chromium, and curl can be seen here

https://git.sr.ht/~ozzloy/emacs-bug-= 63941/tree/53a7949a5db21c456c1da3b4add29343c3d02137/item/mm-url-tests.el

The patch I have attached to this email generates output that matc= hes
firefox, chromium, and curl.=C2=A0 It also includes a bunch of tests= for
the included version of =3Dmm-url-encode-multipart-form-data=3D
=
If there's some change that would make the patch a better fit, let = me
know.=C2=A0 I'm happy to modify it.


--00000000000053fdec05fe6fb5e7-- --00000000000053fded05fe6fb5e9 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-always-CRLF-before-non-first-boundary-in-mulitpart-f.patch" Content-Disposition: attachment; filename="0001-always-CRLF-before-non-first-boundary-in-mulitpart-f.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lj21zdls0 RnJvbSBjNzNjY2RhOTA2MjM1MTk0MzRmOGVjMmM3MDBhZGY3MGFjMWQ2YTAwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgV2F0c29uIDxvenpsb3lAZ21haWwuY29tPgpEYXRl OiBTdW4sIDE4IEp1biAyMDIzIDE1OjE0OjMyIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gYWx3YXlz IENSTEYgYmVmb3JlIG5vbi1maXJzdCBib3VuZGFyeSBpbiBtdWxpdHBhcnQgZm9ybQoKOyBJbnNl cnQgQ1JMRiBhZnRlciBmaWxlIGNvbnRlbnRzIGFuZCBiZWZvcmUgYm91bmRhcnksCjsgaW4gYWNj b3JkYW5jZSB3aXRoIHRoZSBzeW50YXggZGVzY3JpcHRpb24gaGVyZQo7IHJmYzIwNDYgc2VjdGlv biA1LjEuMS4KOyBUaGUgQ1JMRiBpcyBhdHRhY2hlZCB0byB0aGUgYm91bmRhcnksIGFuZCBub3Qg dGhlIHByZWNlZGluZyBwYXJ0LgotLS0KIGxpc3AvZ251cy9tbS11cmwuZWwgICAgICAgICAgICB8 IDE1NiArKysrKysrKysrKysrKysrKysrLS0tLS0tLQogdGVzdC9saXNwL2dudXMvbW0tdXJsLXRl c3RzLmVsIHwgMTk0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBj aGFuZ2VkLCAzMDggaW5zZXJ0aW9ucygrKSwgNDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgdGVzdC9saXNwL2dudXMvbW0tdXJsLXRlc3RzLmVsCgpkaWZmIC0tZ2l0IGEvbGlzcC9n bnVzL21tLXVybC5lbCBiL2xpc3AvZ251cy9tbS11cmwuZWwKaW5kZXggMTE4NDdhNzlmMTcuLmYz ZWVjYmYxOGVkIDEwMDY0NAotLS0gYS9saXNwL2dudXMvbW0tdXJsLmVsCisrKyBiL2xpc3AvZ251 cy9tbS11cmwuZWwKQEAgLTM5NCw1NCArMzk0LDEyNiBAQCBtbS11cmwtZW5jb2RlLXd3dy1mb3Jt LXVybGVuY29kZWQKIAogKGF1dG9sb2FkICdtbWwtY29tcHV0ZS1ib3VuZGFyeSAibW1sIikKIAor KGRlZnVuIG1tLXVybC0tZW5jb2RlLW11bHRpcGFydC1mb3JtLWZpbGUgKGZpbGUtbWV0YWRhdGEp CisgICJSZXR1cm4gYSBsaXN0IG9mIGxpbmVzIHVzZWQgdG8gcmVwcmVzZW50IGFuIGh0dHAgbWVz c2FnZSB3aXRoIGEKK2ZpbGUgYW5kIGl0cyBjb250ZW50cywgYXMgZGVzY3JpYmVkIGluIEZJTEUt TUVUQURBVEEKKworKiBleGFtcGxlCisqKiBpbnB1dAorICAnKChcIm5hbWVcIiAgICAgICAgIC4g XCJhXCIpCisgICAgKFwiZmlsZW5hbWVcIiAgICAgLiBcImJcIikKKyAgICAoXCJmaWxlZGF0YVwi ICAgICAuIFwiY1wiKQorICAgIChcImNvbnRlbnQtdHlwZVwiIC4gXCJkXCIpKQorKiogb3V0cHV0 CisgICcoXCJDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9XFxcImFcXFwiOyBm aWxlbmFtZT1cXFwiYlxcXCJcIgorICAgIFwiQ29udGVudC1UeXBlOiBkOyBjaGFyc2V0PXV0Zi04 XCIKKyAgICBcIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJpbmFyeVwiCisgICAgXCJcIiAg ICA7OyBjb21wbGV0ZWx5IGJsYW5rIGxpbmUgYWZ0ZXIgYWxsIHRoZSBoZWFkZXJzCisgICAgXCJj XCIpICAgOzsgZW50aXJlIGZpbGUgY29udGVudCIKKyAgKGNsLWZsZXQgKChnZXQtdmFsdWUgKGtl eSBkZWZhdWx0KQorCQkgICAgICAgKGFsaXN0LWdldAorCQkJa2V5IGZpbGUtbWV0YWRhdGEgZGVm YXVsdCBuaWwgIydzdHJpbmc9KSkpCisgICAgKGxldCAoKGZpbGVkYXRhICAgICAoZ2V0LXZhbHVl ICAgICAiZmlsZWRhdGEiICAgICAgICAgIG5pbCkpCisJICAobmFtZSAgICAgICAgIChnZXQtdmFs dWUgICAgICAgICAibmFtZSIgICAgICAgImZpbGUiKSkKKwkgIChmaWxlbmFtZSAgICAgKGdldC12 YWx1ZSAgICAgImZpbGVuYW1lIiAgICAgICAiZmlsZSIpKQorCSAgKGNvbnRlbnQtdHlwZSAoZ2V0 LXZhbHVlICJjb250ZW50LXR5cGUiICJ0ZXh0L3BsYWluIikpKQorICAgICAgKGxpc3QKKyAgICAg ICAoZm9ybWF0ICJDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9JVM7IGZpbGVu YW1lPSVTIgorCSAgICAgICBuYW1lIGZpbGVuYW1lKQorICAgICAgIChmb3JtYXQgIkNvbnRlbnQt VHlwZTogJXM7IGNoYXJzZXQ9dXRmLTgiIGNvbnRlbnQtdHlwZSkKKyAgICAgICAiQ29udGVudC1U cmFuc2Zlci1FbmNvZGluZzogYmluYXJ5IgorICAgICAgICIiCisgICAgICAgKGNsLXR5cGVjYXNl IGZpbGVkYXRhCisJIChpbnRlZ2VyIChudW1iZXItdG8tc3RyaW5nIGZpbGVkYXRhKSkKKwkgKHN0 cmluZyBmaWxlZGF0YSkpKSkpKQorCisoZGVmdW4gbW0tdXJsLS1lbmNvZGUtbXVsdGlwYXJ0LWZv cm0tbmFtZS12YWx1ZSAobmFtZSB2YWx1ZSkKKyAgIlJldHVybiBOQU1FIGFuZCBWQUxVRSBhcyBh IGxpc3Qgb2YgbGluZXMgdXNlZCBmb3IgY3JlYXRpbmcKK211bHRpcGFydC9mb3JtLWRhdGEgaHR0 cCBtZXNzYWdlLgorCisqIGV4YW1wbGUKKyoqIGlucHV0CisgICcoXCJhXCIgLiBcImJcIikKKyoq IG91dHB1dAorICAnKFwiQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPVxcXCJh XFxcIlwiCisgICAgXCJcIgorICAgIFwiYlwiKSIKKyAgKGxpc3QgKGZvcm1hdCAiQ29udGVudC1E aXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSVTIiBuYW1lKQorCSIiCisJdmFsdWUpKQorCiso ZGVmdW4gbW0tdXJsLS1lbmNvZGUtbXVsdGlwYXJ0LWZvcm0tc3VibWl0ICgpCisgICJSZXR1cm4g bGlzdCBvZiBsaW5lcyBmb3Igc3VibWl0IG1lc3NhZ2UuIgorICAobGlzdCAiQ29udGVudC1EaXNw b3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPVwic3VibWl0XCIiCisJIiIKKwkiU3VibWl0IikpCisK KyhkZWZ1biBtbS11cmwtLWVuY29kZS1tdWx0aXBhcnQtZm9ybS1kYXR1bSAoc2VwYXJhdG9yIGRh dHVtKQorICAiUmV0dXJuIGxpc3Qgb2YgbGluZXMgaW4gb25lIHNlZ21lbnQgb2YgYSBtdWx0aXBh cnQgZm9ybS4KKworKiBleGFtcGxlCisqKiBpbnB1dAorICBcIi0tQk9VTkRBUllcIiAnKFwic3Vi bWl0XCIpCisqKiBvdXRwdXQKKyAgJyhcIi0tQk9VTkRBUllcIgorICAgIFwiQ29udGVudC1EaXNw b3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPVxcXCJzdWJtaXRcXFwiXCIKKyAgICBcIlwiCisgICAg XCJTdWJtaXRcIikiCisgIChsZXQgKChuYW1lICAoY2FyIGRhdHVtKSkKKwkodmFsdWUgKGNkciBk YXR1bSkpKQorICAgIChjb25zIHNlcGFyYXRvcgorCSAgKHBjYXNlIG5hbWUKKwkgICAgKCJmaWxl IiAgIChtbS11cmwtLWVuY29kZS1tdWx0aXBhcnQtZm9ybS1maWxlIHZhbHVlKSkKKwkgICAgKCJz dWJtaXQiIChtbS11cmwtLWVuY29kZS1tdWx0aXBhcnQtZm9ybS1zdWJtaXQpKQorCSAgICAoXyAg ICAgICAgKG1tLXVybC0tZW5jb2RlLW11bHRpcGFydC1mb3JtLW5hbWUtdmFsdWUKKwkJICAgICAg IG5hbWUgdmFsdWUpKSkpKSkKKworKGRlZnVuIG1tLXVybC0tZW5jb2RlLW11bHRpcGFydC1mb3Jt LWxpbmVzIChib3VuZGFyeSBkYXRhKQorICAicmV0dXJuIGEgbGlzdCBvZiBsaW5lcyBmb3IgZW50 aXJlIG11bHRpcGFydCBmb3JtCisKKyogZXhhbXBsZXMKKyoqIGlucHV0IDAKKyAgXCJCT1VOREFS WVwiICcoKFwic3VibWl0XCIpKQorKiogb3V0cHV0IDAKKyAgJyhcIi0tQk9VTkRBUllcIgorICAg IFwiQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPVxcXCJzdWJtaXRcXFwiXCIK KyAgICBcIlwiCisgICAgXCJTdWJtaXRcIgorICAgIFwiLS1CT1VOREFSWS0tXCIKKyAgICBcIlwi KQorKiogaW5wdXQgMQorICBcIkJPVU5EQVJZXCIgJygoXCJzdWJtaXRcIikgKFwiYVwiIC4gXCJi XCIpKQorKiogb3V0cHV0IDEKKyAgJyhcIi0tQk9VTkRBUllcIgorICAgIFwiQ29udGVudC1EaXNw b3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPVxcXCJzdWJtaXRcXFwiXCIKKyAgICBcIlwiCisgICAg XCJTdWJtaXRcIgorICAgIFwiLS1CT1VOREFSWVwiCisgICAgXCJDb250ZW50LURpc3Bvc2l0aW9u OiBmb3JtLWRhdGE7IG5hbWU9XFxcImFcXFwiXCIKKyAgICBcIlwiCisgICAgXCJiXCIKKyAgICBc Ii0tQk9VTkRBUlktLVwiCisgICAgXCJcIikiCisgIChsZXQgKChzZXBhcmF0b3IgKGNvbmNhdCAi LS0iIGJvdW5kYXJ5KSkKKwkoZW5kaW5nICAgIChjb25jYXQgIi0tIiBib3VuZGFyeSAiLS0iKSkp CisgICAgKGFwcGVuZCAobWFwY2FuIChhcHBseS1wYXJ0aWFsbHkgJ21tLXVybC0tZW5jb2RlLW11 bHRpcGFydC1mb3JtLWRhdHVtCisJCQkJICAgICBzZXBhcmF0b3IpCisJCSAgICBkYXRhKQorCSAg ICAobGlzdCBlbmRpbmcgIiIpKSkpCisKIChkZWZ1biBtbS11cmwtZW5jb2RlLW11bHRpcGFydC1m b3JtLWRhdGEgKGRhdGEgJm9wdGlvbmFsIGJvdW5kYXJ5KQogICAiUmV0dXJuIERBVEEgZW5jb2Rl ZCBpbiBtdWx0aXBhcnQvZm9ybS1kYXRhLgogREFUQSBpcyBhIGxpc3Qgd2hlcmUgdGhlIGVsZW1l bnRzIGNhbiBoYXZlIHRoZSBmb2xsb3dpbmcgZm9ybToKICAgKFwiTkFNRVwiIC4gXCJWQUxVRVwi KQogICAoXCJzdWJtaXRcIikKLSAgKFwiZmlsZVwiIC4gKChcIm5hbWVcIiAuIFwiTkFNRVwiKQot ICAgICAgICAgICAgIChcImZpbGVuYW1lXCIgLiBcIkZJTEVOQU1FXCIpCi0gICAgICAgICAgICAg KFwiY29udGVudC10eXBlXCIgLiBcIkNPTlRFTlQtVFlQRVwiKQotICAgICAgICAgICAgIChcImZp bGVkYXRhXCIgLiBcIkZJTEVEQVRBXCIpKSkKKyAgKFwiZmlsZVwiIC4gKChcIm5hbWVcIiAgICAg ICAgLiBcIk5BTUVcIikKKwkgICAgICAoXCJmaWxlbmFtZVwiICAgICAuIFwiRklMRU5BTUVcIikK KwkgICAgICAoXCJjb250ZW50LXR5cGVcIiAuIFwiQ09OVEVOVC1UWVBFXCIpCisJICAgICAgKFwi ZmlsZWRhdGFcIiAgICAgLiBcIkZJTEVEQVRBXCIpKSkKIExvd2VyY2FzZSBzdHJpbmdzIGFib3Zl IGFyZSBsaXRlcmFscyBhbmQgdXBwZXJjYXNlIGFyZSBub3QuIgotICA7OyBSRkMxODY3Ci0gIDs7 IEdldCBhIGdvb2QgYm91bmRhcnkuCi0gICh1bmxlc3MgYm91bmRhcnkKLSAgICAoc2V0cSBib3Vu ZGFyeSAobW1sLWNvbXB1dGUtYm91bmRhcnkgJygpKSkpCi0gICh3aXRoLXRlbXAtYnVmZmVyCi0g ICAgKHNldC1idWZmZXItbXVsdGlieXRlIG5pbCkKLSAgICAoZG9saXN0IChlbGVtIGRhdGEpCi0g ICAgICAobGV0ICgobmFtZSAoY2FyIGVsZW0pKQotCSAgICAodmFsdWUgKGNkciBlbGVtKSkpCi0J KGluc2VydCAiLS0iIGJvdW5kYXJ5ICJcclxuIikKLQkoY29uZAotCSAoKGVxdWFsIG5hbWUgImZp bGUiKQotCSAgKGluc2VydCAoZm9ybWF0Ci0JCSAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBmb3Jt LWRhdGE7IG5hbWU9JVM7IGZpbGVuYW1lPSVTXHJcbiIKLQkJICAgKG9yIChjZHIgKGFzc29jICJu YW1lIiB2YWx1ZSkpIG5hbWUpCi0JCSAgIChjZHIgKGFzc29jICJmaWxlbmFtZSIgdmFsdWUpKSkp Ci0JICAoaW5zZXJ0ICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiaW5hcnlcclxuIikKLQkg IChpbnNlcnQgKGZvcm1hdCAiQ29udGVudC1UeXBlOiAlc1xyXG5cclxuIgotCQkJICAob3IgKGNk ciAoYXNzb2MgImNvbnRlbnQtdHlwZSIgdmFsdWUpKQotCQkJICAgICAgInRleHQvcGxhaW4iKSkp Ci0JICAobGV0ICgoZmlsZWRhdGEgKGNkciAoYXNzb2MgImZpbGVkYXRhIiB2YWx1ZSkpKSkKLQkg ICAgKGNvbmQKLQkgICAgICgoc3RyaW5ncCBmaWxlZGF0YSkKLQkgICAgICAoaW5zZXJ0IGZpbGVk YXRhKSkKLQkgICAgIDs7IEhvdyBjYW4gdGhpcyBwb3NzaWJseSBiZSB1c2VmdWw/Ci0JICAgICAo KGludGVnZXJwIGZpbGVkYXRhKQotCSAgICAgIChpbnNlcnQgKG51bWJlci10by1zdHJpbmcgZmls ZWRhdGEpKSkpKSkKLQkgKChlcXVhbCBuYW1lICJzdWJtaXQiKQotCSAgKGluc2VydAotCSAgICJD b250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9XCJzdWJtaXRcIlxyXG5cclxuU3Vi bWl0XHJcbiIpKQotCSAodAotCSAgKGluc2VydCAoZm9ybWF0ICJDb250ZW50LURpc3Bvc2l0aW9u OiBmb3JtLWRhdGE7IG5hbWU9JVNcclxuXHJcbiIKLQkJCSAgbmFtZSkpCi0JICAoaW5zZXJ0IHZh bHVlKSkpCi0JKHVubGVzcyAoYm9scCkKLQkgIChpbnNlcnQgIlxyXG4iKSkpKQotICAgIChpbnNl cnQgIi0tIiBib3VuZGFyeSAiLS1cclxuIikKLSAgICAoYnVmZmVyLXN0cmluZykpKQorICAobGV0 KiAoKGJvdW5kYXJ5IChvciBib3VuZGFyeSAobW1sLWNvbXB1dGUtYm91bmRhcnkgJygpKSkpCisJ IChsaW5lcyAgICAobW0tdXJsLS1lbmNvZGUtbXVsdGlwYXJ0LWZvcm0tbGluZXMgYm91bmRhcnkg ZGF0YSkpKQorICAgIChtYXBjb25jYXQgJ2lkZW50aXR5IGxpbmVzICJcclxuIikpKQogCiAoZGVm dW4gbW0tdXJsLXJlbW92ZS1tYXJrdXAgKCkKICAgIlJlbW92ZSBhbGwgSFRNTCBtYXJrdXAsIGxl YXZpbmcganVzdCBwbGFpbiB0ZXh0LiIKZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9nbnVzL21tLXVy bC10ZXN0cy5lbCBiL3Rlc3QvbGlzcC9nbnVzL21tLXVybC10ZXN0cy5lbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGMzMWE4NjE0NmIKLS0tIC9kZXYvbnVsbAorKysg Yi90ZXN0L2xpc3AvZ251cy9tbS11cmwtdGVzdHMuZWwKQEAgLTAsMCArMSwxOTQgQEAKKzs7OyBt bS11cmwtdGVzdHMuZWwgLS0tICAtKi0gbGV4aWNhbC1iaW5kaW5nOnQgLSotCisKKzs7IENvcHly aWdodCAoQykgMjAyMS0yMDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCis7OyBU aGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCisKKzs7IEdOVSBFbWFjcyBpcyBmcmVlIHNv ZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7OyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKzs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisKKzs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCis7OyBhbG9uZyB3aXRoIEdOVSBF bWFjcy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKzs7 OyBDb21tZW50YXJ5OgorCis7OzsgQ29kZToKKworKHJlcXVpcmUgJ2VydCkKKyhyZXF1aXJlICdt bS11cmwpCisKKworKGVydC1kZWZ0ZXN0IHRlc3QtbW0tdXJsLS1lbmNvZGUtbXVsdGlwYXJ0LWZv cm0tZmlsZSAoKQorICAoc2hvdWxkCisgICAoZXF1YWwKKyAgICAobW0tdXJsLS1lbmNvZGUtbXVs dGlwYXJ0LWZvcm0tZmlsZSAnKCgibmFtZSIgICAgICAgICAuICJhIikKKwkJCQkJICAoImZpbGVu YW1lIiAgICAgLiAiYiIpCisJCQkJCSAgKCJmaWxlZGF0YSIgICAgIC4gImNcbiIpCisJCQkJCSAg KCJjb250ZW50LXR5cGUiIC4gImQiKSkpCisgICAgJygiQ29udGVudC1EaXNwb3NpdGlvbjogZm9y bS1kYXRhOyBuYW1lPVwiYVwiOyBmaWxlbmFtZT1cImJcIiIKKyAgICAgICJDb250ZW50LVR5cGU6 IGQ7IGNoYXJzZXQ9dXRmLTgiCisgICAgICAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmlu YXJ5IgorICAgICAgIiIgICAgOzsgY29tcGxldGVseSBibGFuayBsaW5lIHRvIHNlcGFyYXRlIGhl YWRlcnMgZnJvbSBjb250ZW50CisgICAgICAiY1xuIikpKSkKKworKGVydC1kZWZ0ZXN0IHRlc3Qt bW0tdXJsLS1lbmNvZGUtbXVsdGlwYXJ0LWZvcm0tbmFtZS12YWx1ZSAoKQorICAoc2hvdWxkIChl cXVhbCAobW0tdXJsLS1lbmNvZGUtbXVsdGlwYXJ0LWZvcm0tbmFtZS12YWx1ZSAiYSIgImIiKQor CQkgJygiQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPVwiYVwiIgorCQkgICAi IgorCQkgICAiYiIpKSkpCisKKyhlcnQtZGVmdGVzdCB0ZXN0LW1tLXVybC0tZW5jb2RlLW11bHRp cGFydC1mb3JtLXN1Ym1pdCAoKQorICAoc2hvdWxkCisgICAoZXF1YWwgKG1tLXVybC0tZW5jb2Rl LW11bHRpcGFydC1mb3JtLXN1Ym1pdCkKKwkgIChsaXN0ICJDb250ZW50LURpc3Bvc2l0aW9uOiBm b3JtLWRhdGE7IG5hbWU9XCJzdWJtaXRcIiIKKwkJIiIKKwkJIlN1Ym1pdCIpKSkpCisKKyhlcnQt ZGVmdGVzdCB0ZXN0LW1tLXVybC0tZW5jb2RlLW11bHRpcGFydC1mb3JtLWRhdHVtICgpCisgIChz aG91bGQKKyAgIChlcXVhbAorICAgIChtbS11cmwtLWVuY29kZS1tdWx0aXBhcnQtZm9ybS1kYXR1 bSAiLS1CT1VOREFSWSIgJygic3VibWl0IikpCisgICAgJygiLS1CT1VOREFSWSIKKyAgICAgICJD b250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9XCJzdWJtaXRcIiIKKyAgICAgICIi CisgICAgICAiU3VibWl0IikpKSkKKworKGVydC1kZWZ0ZXN0IHRlc3QtbW0tdXJsLWVuY29kZS1t dWx0aXBhcnQtZm9ybS1kYXRhLW5pbCAoKQorICAoc2hvdWxkCisgICAoc3RyaW5nPQorICAgICht bS11cmwtZW5jb2RlLW11bHRpcGFydC1mb3JtLWRhdGEgJygpICJCT1VOREFSWSIpCisgICAgIi0t Qk9VTkRBUlktLVxyXG4iKSkpCisKKyhlcnQtZGVmdGVzdCB0ZXN0LW1tLXVybC1lbmNvZGUtbXVs dGlwYXJ0LWZvcm0tZGF0YS0tbmFtZS12YWx1ZSAoKQorICAoc2hvdWxkCisgICAoc3RyaW5nPQor ICAgIChtbS11cmwtZW5jb2RlLW11bHRpcGFydC1mb3JtLWRhdGEKKyAgICAgJygoIm5hbWUiIC4g InZhbHVlIikpICJCT1VOREFSWSIpCisgICAgKGNvbmNhdCAiLS1CT1VOREFSWVxyXG4iCisJICAg ICJDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9XCJuYW1lXCJcclxuIgorCSAg ICAiXHJcbiIKKwkgICAgInZhbHVlXHJcbiIKKwkgICAgIi0tQk9VTkRBUlktLVxyXG4iKSkpKQor CisoZXJ0LWRlZnRlc3QgdGVzdC1tbS11cmwtZW5jb2RlLW11bHRpcGFydC1mb3JtLWRhdGEtLXN1 Ym1pdCAoKQorICAoc2hvdWxkCisgICAoc3RyaW5nPQorICAgIChtbS11cmwtZW5jb2RlLW11bHRp cGFydC1mb3JtLWRhdGEgJygoInN1Ym1pdCIpKSAiQk9VTkRBUlkiKQorICAgIChjb25jYXQgIi0t Qk9VTkRBUllcclxuIgorCSAgICAiQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1l PVwic3VibWl0XCJcclxuIgorCSAgICAiXHJcbiIKKwkgICAgIlN1Ym1pdFxyXG4iCisJICAgICIt LUJPVU5EQVJZLS1cclxuIikpKSkKKworKGVydC1kZWZ0ZXN0IHRlc3QtbW0tdXJsLWVuY29kZS1t dWx0aXBhcnQtZm9ybS1kYXRhLS1maWxlICgpCisgIChzaG91bGQKKyAgIChzdHJpbmc9CisgICAg KG1tLXVybC1lbmNvZGUtbXVsdGlwYXJ0LWZvcm0tZGF0YQorICAgICAnKCgiZmlsZSIgLiAoKCJu YW1lIiAgICAgICAgIC4gImEiKQorCQkgICgiZmlsZW5hbWUiICAgICAuICJiIikKKwkJICAoImNv bnRlbnQtdHlwZSIgLiAiYyIpCisJCSAgKCJmaWxlZGF0YSIgICAgIC4gImRcbiIpKSkpCisgICAg ICJCT1VOREFSWSIpCisgICAgKGNvbmNhdAorICAgICAiLS1CT1VOREFSWVxyXG4iCisgICAgICJD b250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9XCJhXCI7IGZpbGVuYW1lPVwiYlwi XHJcbiIKKyAgICAgIkNvbnRlbnQtVHlwZTogYzsgY2hhcnNldD11dGYtOFxyXG4iCisgICAgICJD b250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiaW5hcnlcclxuIgorICAgICAiXHJcbiIKKworICAg ICA7OyBmaWxlIGNvbnRlbnQKKyAgICAgImRcbiIKKworICAgICA7OyByZmMgMjA0NiBzZWN0aW9u IDUKKyAgICAgOzsgaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzIwNDYjc2VjdGlv bi01CisgICAgIDs7ICJUaGUgYm91bmRhcnkgZGVsaW1pdGVyIE1VU1Qgb2NjdXIgYXQgdGhlIGJl Z2lubmluZyBvZiBhCisgICAgIDs7IGxpbmUsIGkuZS4sIGZvbGxvd2luZyBhIENSTEYsIGFuZCB0 aGUgaW5pdGlhbCBDUkxGIGlzCisgICAgIDs7IGNvbnNpZGVyZWQgdG8gYmUgYXR0YWNoZWQgdG8g dGhlIGJvdW5kYXJ5IGRlbGltaXRlciBsaW5lCisgICAgIDs7IHJhdGhlciB0aGFuIHBhcnQgb2Yg dGhlIHByZWNlZGluZyBwYXJ0LiIKKyAgICAgIlxyXG4iCisKKyAgICAgIi0tQk9VTkRBUlktLVxy XG4iKSkpKQorCisoZXJ0LWRlZnRlc3QgdGVzdC1tbS11cmwtZW5jb2RlLW11bHRpcGFydC1mb3Jt LWRhdGEtLWFsbC1wYXJ0cyAoKQorICAoc2hvdWxkCisgICAoc3RyaW5nPQorICAgIChtbS11cmwt ZW5jb2RlLW11bHRpcGFydC1mb3JtLWRhdGEKKyAgICAgJygoIm5hbWUiIC4gInZhbHVlIikKKyAg ICAgICAoInN1Ym1pdCIpCisgICAgICAgKCJmaWxlIiAuICgoIm5hbWUiICAgICAgICAgLiAiYSIp CisJCSAgKCJmaWxlbmFtZSIgICAgIC4gImIiKQorCQkgICgiY29udGVudC10eXBlIiAuICJjIikK KwkJICAoImZpbGVkYXRhIiAgICAgLiAiZCIpKSkpCisgICAgICJCT1VOREFSWSIpCisgICAgKGNv bmNhdAorICAgICAiLS1CT1VOREFSWVxyXG4iCisgICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBm b3JtLWRhdGE7IG5hbWU9XCJuYW1lXCJcclxuIgorICAgICAiXHJcbiIKKyAgICAgInZhbHVlXHJc biIKKyAgICAgIi0tQk9VTkRBUllcclxuIgorICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjogZm9y bS1kYXRhOyBuYW1lPVwic3VibWl0XCJcclxuIgorICAgICAiXHJcbiIKKyAgICAgIlN1Ym1pdFxy XG4iCisgICAgICItLUJPVU5EQVJZXHJcbiIKKyAgICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGZv cm0tZGF0YTsgbmFtZT1cImFcIjsgZmlsZW5hbWU9XCJiXCJcclxuIgorICAgICAiQ29udGVudC1U eXBlOiBjOyBjaGFyc2V0PXV0Zi04XHJcbiIKKyAgICAgIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rp bmc6IGJpbmFyeVxyXG4iCisgICAgICJcclxuIgorCisgICAgIDs7IGZpbGUgY29udGVudAorICAg ICAiZCIKKworICAgICA7OyByZmMgMjA0NiBzZWN0aW9uIDUKKyAgICAgOzsgdGhlIFxyXG4gaXMg YXR0YWNoZWQgdG8gdGhlIGJvdW5kYXJ5IGJlbG93IGl0CisgICAgICJcclxuIgorICAgICAiLS1C T1VOREFSWS0tXHJcbiIpKSkpCisKKyhlcnQtZGVmdGVzdCB0ZXN0LW1tLXVybC1lbmNvZGUtbXVs dGlwYXJ0LWZvcm0tZGF0YS10d28tZmlsZXMgKCkKKyAgKHNob3VsZAorICAgKHN0cmluZz0KKyAg ICAobW0tdXJsLWVuY29kZS1tdWx0aXBhcnQtZm9ybS1kYXRhCisgICAgICcoKCJmaWxlIiAuICgo Im5hbWUiICAgICAgICAgLiAiYSIpCisJCSAgKCJmaWxlbmFtZSIgICAgIC4gImIiKQorCQkgICgi Y29udGVudC10eXBlIiAuICJjIikKKwkJICAoImZpbGVkYXRhIiAgICAgLiAiZFxuIikpKQorICAg ICAgICgiZmlsZSIgLiAoKCJuYW1lIiAgICAgICAgIC4gImUiKQorCQkgICgiZmlsZW5hbWUiICAg ICAuICJmIikKKwkJICAoImNvbnRlbnQtdHlwZSIgLiAiZyIpCisJCSAgKCJmaWxlZGF0YSIgICAg IC4gImhcbiIpKSkpCisgICAgICJCT1VOREFSWSIpCisgICAgKGNvbmNhdAorICAgICAiLS1CT1VO REFSWVxyXG4iCisgICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9XCJh XCI7IGZpbGVuYW1lPVwiYlwiXHJcbiIKKyAgICAgIkNvbnRlbnQtVHlwZTogYzsgY2hhcnNldD11 dGYtOFxyXG4iCisgICAgICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiaW5hcnlcclxuIgor ICAgICAiXHJcbiIKKworICAgICA7OyBmaWxlIGNvbnRlbnQKKyAgICAgImRcbiIKKworICAgICA7 OyByZmMyMDQ2IHNlY3Rpb24gNQorICAgICA7OyB0aGUgXHJcbiBpcyBhdHRhY2hlZCB0byB0aGUg Ym91bmRhcnkgYmVsb3cgaXQKKyAgICAgIlxyXG4iCisgICAgICItLUJPVU5EQVJZXHJcbiIKKyAg ICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT1cImVcIjsgZmlsZW5hbWU9 XCJmXCJcclxuIgorICAgICAiQ29udGVudC1UeXBlOiBnOyBjaGFyc2V0PXV0Zi04XHJcbiIKKyAg ICAgIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJpbmFyeVxyXG4iCisgICAgICJcclxuIgor CisgICAgIDs7IGZpbGUgY29udGVudAorICAgICAiaFxuIgorCisgICAgIDs7IHJmYyAyMDQ2IHNl Y3Rpb24gNQorICAgICA7OyB0aGUgXHJcbiBpcyBhdHRhY2hlZCB0byB0aGUgYm91bmRhcnkgYmVs b3cgaXQKKyAgICAgIlxyXG4iCisgICAgICItLUJPVU5EQVJZLS1cclxuIikpKSkKKworCis7Ozsg bW0tdXJsLXRlc3RzLmVsIGVuZHMgaGVyZQotLSAKMi4zNC4xCgo= --00000000000053fded05fe6fb5e9--