From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Mikael Djurfeldt Newsgroups: gmane.lisp.guile.devel,gmane.lisp.guile.user Subject: Keywords in GOOPS methods Date: Tue, 19 Nov 2024 17:41:18 +0100 Message-ID: Reply-To: mikael@djurfeldt.com Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="00000000000073abaf062746b4bd" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="17203"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Mikael Djurfeldt To: guile-devel , =?UTF-8?Q?Ludovic_Court=C3=A8s?= , guile-user Original-X-From: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Tue Nov 19 17:42:09 2024 Return-path: Envelope-to: guile-devel@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 1tDRIm-0004Kk-Pi for guile-devel@m.gmane-mx.org; Tue, 19 Nov 2024 17:42:08 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tDRIJ-0003IN-2d; Tue, 19 Nov 2024 11:41:39 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tDRIH-0003HW-0j; Tue, 19 Nov 2024 11:41:37 -0500 Original-Received: from mail-vk1-f173.google.com ([209.85.221.173]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tDRIC-0003hl-69; Tue, 19 Nov 2024 11:41:36 -0500 Original-Received: by mail-vk1-f173.google.com with SMTP id 71dfb90a1353d-514c3c8f150so380596e0c.1; Tue, 19 Nov 2024 08:41:30 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732034489; x=1732639289; h=cc:to:subject:message-id:date:from:reply-to:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=n8I5ChGMKeedO1qjgLeg2rrNIJsfHfEfd2J3jQBljc8=; b=BnFWEGwcIwx0Up0aUVpLVz+lIPM+MFubVRk67QAQT5O0vGp9FN6WRg1BbzN57GQ5tW W5RJ+q/5DcAwNXa+TUqb9u9MSNErYAEDWAF/61+jS3Df9lJEEMd5HTW2rCPPP/hvFTxS Hal8h23Lnvv3ct8VAOaPenSQW8Xhb7MN9tokX/JuaXpk2dX+n+w4MLF+D7LhGKpPfS3Z CpnREB8cQsyso2Rs1BS7IYzSkBILnygY1QDTfCp9QhY74zgjB8MxogFakPE1sVbSS8Qi jFcKX4qBe3GMISOFA4gbCszk/mQIH9SBMTGG/JDjcIRU7ZX3NNenL1ydiv7Ms4bFKmqb yljw== X-Forwarded-Encrypted: i=1; AJvYcCVwRcGQRp0DZEufHZOWX+u6ZRzrAVZNNXRYxxuPPWNJmB5elcZO4iNgEBYlcAO6qPnsJlNVFDLlucL2@gnu.org, AJvYcCXCHzlo4kcFW4LV0xPyIGR5oU8sJ9cQjXkbLppmXA87FFORqEgBn5KGwAOfbI4tnHAYy5J27g==@gnu.org X-Gm-Message-State: AOJu0Yz0Nlz4lnMvJ5enTPWW1smryDKp7RWoYN5ocFdGqMaayxAlGofB 1ihdTxDKiZCiVvFTUy1OqZzFHf9iwsNNygfeP58FRdl8aftCYoZwzHdj3dVrmwU8kr3lpVCWi1X zzNERKGUC5IdkI2a7+mLNNdZ/ARWVWvUm X-Google-Smtp-Source: AGHT+IHhLVXCFze2K+WV8wFr41dD5rIiZjrY50Rol5pWOZqXh8VIGEYQI9deZx3ESzXe+h1ntW5/q3Lra8Rk1i0v59E= X-Received: by 2002:a05:6122:20a7:b0:50c:e37a:97e3 with SMTP id 71dfb90a1353d-514786a44f0mr14984511e0c.11.1732034488925; Tue, 19 Nov 2024 08:41:28 -0800 (PST) Received-SPF: pass client-ip=209.85.221.173; envelope-from=mdjurfeldt@gmail.com; helo=mail-vk1-f173.google.com X-Spam_score_int: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 5.0 requ) BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.001, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Original-Sender: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.lisp.guile.devel:22777 gmane.lisp.guile.user:19901 Archived-At: --00000000000073abaf062746b4bd Content-Type: multipart/alternative; boundary="00000000000073abae062746b4bb" --00000000000073abae062746b4bb Content-Type: text/plain; charset="UTF-8" Hi all, I've implemented support for keyword arguments (corresponding to define* and lambda*) in GOOPS. The functionality is similar to that of CLOS (which also has keyword in methods) in that dispatch is not done on the keyword part. You can find the changes in the goops-keyword branch at https://github.com/mdjurfeldt/guile/tree/goops-keyword or in the included patch. Comments? Best regards, MIkael --00000000000073abae062746b4bb Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi all,

I've impleme= nted support for keyword arguments (corresponding to=20 define* and lambda*) in GOOPS. The functionality is similar to that of=20 CLOS (which also has keyword in methods) in that dispatch is not done on th= e keyword part.

You can find the changes in the go= ops-keyword branch at https://github.com/mdjurfeldt/guile/tree/goops-keyword or= in the included patch.

Comments?

Best regards,
MIkael

--00000000000073abae062746b4bb-- --00000000000073abaf062746b4bd Content-Type: text/x-patch; charset="US-ASCII"; name="goops-kw-patch.patch" Content-Disposition: attachment; filename="goops-kw-patch.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3oojuug0 ZGlmZiAtLWdpdCBhL21vZHVsZS9vb3AvZ29vcHMuc2NtIGIvbW9kdWxlL29vcC9nb29wcy5zY20K aW5kZXggOGVkNjg2OTRjLi5jMDQ5MGM4NGEgMTAwNjQ0Ci0tLSBhL21vZHVsZS9vb3AvZ29vcHMu c2NtCisrKyBiL21vZHVsZS9vb3AvZ29vcHMuc2NtCkBAIC0xMzUsNyArMTM1LDcgQEAKICAgICAg ICAgICAgIGNsYXNzLXNsb3RzCiAgICAgICAgICAgICBnZW5lcmljLWZ1bmN0aW9uLW5hbWUKICAg ICAgICAgICAgIGdlbmVyaWMtZnVuY3Rpb24tbWV0aG9kcyBtZXRob2QtZ2VuZXJpYy1mdW5jdGlv bgotICAgICAgICAgICAgbWV0aG9kLXNwZWNpYWxpemVycyBtZXRob2QtZm9ybWFscworICAgICAg ICAgICAgbWV0aG9kLXNwZWNpYWxpemVycyBtZXRob2QtZm9ybWFscyBtZXRob2Qta2V5d29yZC1m b3JtYWxzPwogICAgICAgICAgICAgcHJpbWl0aXZlLWdlbmVyaWMtZ2VuZXJpYyBlbmFibGUtcHJp bWl0aXZlLWdlbmVyaWMhCiAgICAgICAgICAgICBtZXRob2QtcHJvY2VkdXJlIGFjY2Vzc29yLW1l dGhvZC1zbG90LWRlZmluaXRpb24KICAgICAgICAgICAgIG1ha2UgZmluZC1tZXRob2QgZ2V0LWtl eXdvcmQpKQpAQCAtMTA1Miw2ICsxMDUyLDcgQEAgc2xvdHMgYXMgd2UgZ28uIgogICBzcGVjaWFs aXplcnMKICAgcHJvY2VkdXJlCiAgIGZvcm1hbHMKKyAga2V5d29yZC1mb3JtYWxzPwogICBib2R5 CiAgIG1ha2UtcHJvY2VkdXJlKQogKGRlZmluZS1zdGFuZGFyZC1jbGFzcyA8YWNjZXNzb3ItbWV0 aG9kPiAoPG1ldGhvZD4pCkBAIC0xMTU2LDYgKzExNTcsNyBAQCBmdW5jdGlvbi4iCiAgICAgICAg ICAgICAgICAgICAgICgjOnNwZWNpYWxpemVycyBzcGVjaWFsaXplcnMgKCkpCiAgICAgICAgICAg ICAgICAgICAgICgjOnByb2NlZHVyZSBwcm9jZWR1cmUgI2YpCiAgICAgICAgICAgICAgICAgICAg ICgjOmZvcm1hbHMgZm9ybWFscyAoKSkKKyAgICAgICAgICAgICAgICAgICAgKCM6a2V5d29yZC1m b3JtYWxzPyBrZXl3b3JkLWZvcm1hbHM/ICNmKQogICAgICAgICAgICAgICAgICAgICAoIzpib2R5 IGJvZHkgKCkpCiAgICAgICAgICAgICAgICAgICAgICgjOm1ha2UtcHJvY2VkdXJlIG1ha2UtcHJv Y2VkdXJlICNmKSkpKQogICAgICAgICgobWVtcSA8Y2xhc3M+IChjbGFzcy1wcmVjZWRlbmNlLWxp c3QgY2xhc3MpKQpAQCAtMjAxOCwxNCArMjAyMCwxNCBAQCBmdW5jdGlvbi4iCiAgICAgICAgKGVs c2UKICAgICAgICAgKGxldCBscCAoKHNwZWNzIHNwZWNzKSAodHlwZXMgdHlwZXMpKQogICAgICAg ICAgIChjb25kCi0gICAgICAgICAgICgobnVsbD8gc3BlY3MpIChudWxsPyB0eXBlcykpCisgICAg ICAgICAgICgobnVsbD8gc3BlY3MpCisgICAgICAgICAgICAob3IgKG51bGw/IHR5cGVzKSAobWV0 aG9kLWtleXdvcmQtZm9ybWFscz8gbSkpKQogICAgICAgICAgICAoKG5vdCAocGFpcj8gc3BlY3Mp KSAjdCkKICAgICAgICAgICAgKChudWxsPyB0eXBlcykgI2YpCiAgICAgICAgICAgIChlbHNlCiAg ICAgICAgICAgICAoYW5kIChtZW1xIChjYXIgc3BlY3MpIChjbGFzcy1wcmVjZWRlbmNlLWxpc3Qg KGNhciB0eXBlcykpKQogICAgICAgICAgICAgICAgICAobHAgKGNkciBzcGVjcykgKGNkciB0eXBl cykpKSkpKSkpKSkKLSAgKGxldCAoKG4gKGxlbmd0aCBhcmdzKSkKLSAgICAgICAgKHR5cGVzICht YXAgY2xhc3Mtb2YgYXJncykpKQorICAobGV0ICgodHlwZXMgKG1hcCBjbGFzcy1vZiBhcmdzKSkp CiAgICAgKGxldCBscCAoKG1ldGhvZHMgKGdlbmVyaWMtZnVuY3Rpb24tbWV0aG9kcyBnZikpCiAg ICAgICAgICAgICAgKGFwcGxpY2FibGUgJygpKSkKICAgICAgIChpZiAobnVsbD8gbWV0aG9kcykK QEAgLTIwNjYsOCArMjA2OCwyNyBAQCBmdW5jdGlvbi4iCiAKIChkZWZpbmUtc3ludGF4IG1ldGhv ZAogICAobGFtYmRhICh4KQotICAgIChkZWZpbmUgKHBhcnNlLWFyZ3MgYXJncykKLSAgICAgIChs ZXQgbHAgKChscyBhcmdzKSAoZm9ybWFscyAnKCkpIChzcGVjaWFsaXplcnMgJygpKSkKKyAgICA7 OyBwYXJzZS1mb3JtYWxzIE1FVEhPRC1GT1JNQUxTCisgICAgOzsKKyAgICA7OyByZXR1cm4gKEZP Uk1BTFMgU1BFQ0lBTElaRVJTIEtFWVdPUkQtRk9STUFMUykKKyAgICA7OworICAgIDs7IEZPUk1B TFMgaXMgdGhlIHBvc3NpYmx5IGltcHJvcGVyIGxpc3Qgb2Ygc3BlY2lhbGl6YWJsZSBmb3JtYWxz LgorICAgIDs7CisgICAgOzsgU1BFQ0lBTElaRVJTIGlzIGEgcHJvcGVyIGxpc3Qgb2YgdGhlIGNv cnJlc3BvbmRpbmcgc3BlY2lhbGl6ZXJzLgorICAgIDs7IEl0cyBsYXN0IGVsZW1lbnQgY29ycmVz cG9uZHMgdG8gdGhlIGNkciBvZiB0aGUgbGFzdCBlbGVtZW50IGluCisgICAgOzsgTUVUSE9ELUZP Uk1BTFMgc3VjaCB0aGF0IHRoZSBwb3NzaWJseSBpbXByb3BlciBsaXN0IGNvcnJlc3BvbmRpbmcK KyAgICA7OyB0byBGT1JNQUxTIGNhbiBiZSBvYnRhaW5lZCBieSBhcHBseWluZyBjb25zKiB0byBT UEVDSUFMSVpFUlMuCisgICAgOzsgVGhlIHJlYXNvbiBmb3IgaGFuZGxpbmcgaXQgbGlrZSB0aGlz IGlzIHRoYXQgdGhlIHNwZWNpYWxpemVycyBhcmUKKyAgICA7OyBlYWNoIGV2YWx1YXRlZCB0byB0 aGVpciB2YWx1ZXMgYW5kIHRoZXJlZm9yZSAqbXVzdCogYmUgcHJvdmlkZWQKKyAgICA7OyBieSBh IGNvbnMqIGluIHRoZSAobWFrZSA8bWV0aG9kPiAuLi4pIGV4cHJlc3Npb24uCisgICAgOzsKKyAg ICA7OyBLRVlXT1JEX0ZPUk1BTFMgaXMgdGhlIHBhcnQgb2YgTUVUSE9ELUZPUk1BTFMgd2hpY2gg c3RhcnRzIHdpdGggYQorICAgIDs7IGtleXdvcmQgYW5kIGNvcnJlc3BvbmRzIHRvIHRoZSBrZXl3 b3JkLXN5bnRheCBvZiBsYW1iZGEqLiBUaGVzZQorICAgIDs7IGFyZSBub3Qgc3BlY2lhbGl6YWJs ZSAod2hpY2ggYWxzbyBjb3JyZXNwb25kcyB0byBDTE9TCisgICAgOzsgZnVuY3Rpb25hbGl0eSku CisgICAgOzsKKyAgICAoZGVmaW5lIChwYXJzZS1mb3JtYWxzIG1ldGhvZC1mb3JtYWxzKQorICAg ICAgKGxldCBscCAoKGxzIG1ldGhvZC1mb3JtYWxzKSAoZm9ybWFscyAnKCkpIChzcGVjaWFsaXpl cnMgJygpKSkKICAgICAgICAgKHN5bnRheC1jYXNlIGxzICgpCiAgICAgICAgICAgKCgoZiBzKSAu IHJlc3QpCiAgICAgICAgICAgIChhbmQgKGlkZW50aWZpZXI/ICMnZikgKGlkZW50aWZpZXI/ICMn cykpCkBAIC0yMDc5LDEzICsyMTAwLDIxIEBAIGZ1bmN0aW9uLiIKICAgICAgICAgICAgKGxwICMn cmVzdAogICAgICAgICAgICAgICAgKGNvbnMgIydmIGZvcm1hbHMpCiAgICAgICAgICAgICAgICAo Y29ucyAjJzx0b3A+IHNwZWNpYWxpemVycykpKQorICAgICAgICAgICgoZiAuIHJlc3QpCisgICAg ICAgICAgIChrZXl3b3JkPyAoc3ludGF4LT5kYXR1bSAjJ2YpKQorICAgICAgICAgICAobGlzdCAo cmV2ZXJzZSBmb3JtYWxzKQorICAgICAgICAgICAgICAgICAocmV2ZXJzZSAoY29ucyAjJycoKSBz cGVjaWFsaXplcnMpKSA7dG8gYmUgY29ucyo6ZWQKKyAgICAgICAgICAgICAgICAgKGNvbnMgIydm ICMncmVzdCkpKQorCiAgICAgICAgICAgKCgpCiAgICAgICAgICAgIChsaXN0IChyZXZlcnNlIGZv cm1hbHMpCi0gICAgICAgICAgICAgICAgIChyZXZlcnNlIChjb25zICMnJygpIHNwZWNpYWxpemVy cykpKSkKKyAgICAgICAgICAgICAgICAgKHJldmVyc2UgKGNvbnMgIycnKCkgc3BlY2lhbGl6ZXJz KSkKKyAgICAgICAgICAgICAgICAgJygpKSkgICAgICAgICAgICAgICAgICA7eWVzLCBub3QgIycn KCk7IHVzZWQgaW4gdGVzdHMKICAgICAgICAgICAodGFpbAogICAgICAgICAgICAoaWRlbnRpZmll cj8gIyd0YWlsKQogICAgICAgICAgICAobGlzdCAoYXBwZW5kIChyZXZlcnNlIGZvcm1hbHMpICMn dGFpbCkKLSAgICAgICAgICAgICAgICAgKHJldmVyc2UgKGNvbnMgIyc8dG9wPiBzcGVjaWFsaXpl cnMpKSkpKSkpCisgICAgICAgICAgICAgICAgIChyZXZlcnNlIChjb25zICMnPHRvcD4gc3BlY2lh bGl6ZXJzKSkKKyAgICAgICAgICAgICAgICAgJygpKSkpKSkKIAogICAgIChkZWZpbmUgKGZpbmQt ZnJlZS1pZCBleHAgcmVmZXJlbnQpCiAgICAgICAoc3ludGF4LWNhc2UgZXhwICgpCkBAIC0yMDk4 LDQzICsyMTI3LDg3IEBAIGZ1bmN0aW9uLiIKICAgICAgICAgICAgKGFuZCAoZnJlZS1pZGVudGlm aWVyPT8gIyd4IGlkKSBpZCkpKQogICAgICAgICAoXyAjZikpKQogCi0gICAgKGRlZmluZSAoY29t cHV0ZS1wcm9jZWR1cmUgZm9ybWFscyBib2R5KQorICAgIChkZWZpbmUgKGNvbXB1dGUtcHJvY2Vk dXJlIGZvcm1hbHMga2V5d29yZC1mb3JtYWxzIGJvZHkpCiAgICAgICAoc3ludGF4LWNhc2UgYm9k eSAoKQogICAgICAgICAoKGJvZHkwIC4uLikKLSAgICAgICAgICh3aXRoLXN5bnRheCAoKGZvcm1h bHMgZm9ybWFscykpCi0gICAgICAgICAgICMnKGxhbWJkYSBmb3JtYWxzIGJvZHkwIC4uLikpKSkp Ci0KLSAgICAoZGVmaW5lICgtPnByb3BlciBhcmdzKQotICAgICAgKGxldCBscCAoKGxzIGFyZ3Mp IChvdXQgJygpKSkKKyAgICAgICAgIChsZXQgKChmb3JtYWxzIChpZiAobnVsbD8ga2V5d29yZC1m b3JtYWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hbHMKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoYXBwZW5kIGZvcm1hbHMga2V5d29yZC1mb3JtYWxzKSkpKQorICAg ICAgICAgICAod2l0aC1zeW50YXggKChmb3JtYWxzIGZvcm1hbHMpKQorICAgICAgICAgICAgICNg KGxhbWJkYSogZm9ybWFscyBib2R5MCAuLi4pKSkpKSkKKworICAgIDs7IC0+Zm9ybWFsLWlkcyBG T1JNQUxTCisgICAgOzsKKyAgICA7OyBjb252ZXJ0IEZPUk1BTFMgaW50byBmb3JtYWwtaWRzIGZv cm1hdCwgd2hpY2ggaXMgYSBjZWxsIHdoZXJlIHRoZQorICAgIDs7IGNhciBpcyB0aGUgbGlzdCBv ZiBjYXI6cyBpbiBGT1JNQUxTIGFuZCB0aGUgY2RyIGlzIHRoZSBjZHIgb2YgdGhlCisgICAgOzsg bGFzdCBjZWxsIGluIEZPUk1BTFMuCisgICAgOzsKKyAgICA7OyBUaGUgbW90aXZhdGlvbiBmb3Ig dGhpcyBmb3JtYXQgaXMgdG8gZGV0ZXJtaW5lIGF0IGxvdyBjb3N0IGlmCisgICAgOzsgRk9STUFM UyBpcyBpbXByb3BlciBvciBub3QgYW5kIHRvIGVhc2lseSBiZSBhYmxlIHRvIGdlbmVyYXRlIHRo ZQorICAgIDs7IGNvcnJlc3BvbmRpbmcgbmV4dC1tZXRob2QgY2FsbC4KKyAgICA7OworICAgIChk ZWZpbmUgKC0+Zm9ybWFsLWlkcyBmb3JtYWxzKQorICAgICAgKGxldCBscCAoKGxzIGZvcm1hbHMp IChvdXQgJygpKSkKKyAgICAgICAgKHN5bnRheC1jYXNlIGxzICgpCisgICAgICAgICAgKCh4IC4g eHMpIChscCAjJ3hzIChjb25zICMneCBvdXQpKSkKKyAgICAgICAgICAoKCkgICAgICAgKGNvbnMg KHJldmVyc2Ugb3V0KSAnKCkpKQorICAgICAgICAgICh0YWlsICAgICAoY29ucyAocmV2ZXJzZSBv dXQpICMndGFpbCkpKSkpCisKKyAgICA7OyBrZXl3b3JkLWZvcm1hbC1pZHMgS0VZV09SRC1GT1JN QUxTCisgICAgOzsKKyAgICA7OyByZXR1cm4gYSBmb3JtIGNvcnJlc3BvbmRpbmcgdG8gS0VZV09S RC1GT1JNQUxTIGJ1dCB3aXRoCisgICAgOzsgaWRlbnRpZmllcnMgb25seSAoa2V5d29yZHMgcmVt b3ZlZCkgVGhlIHZhbHVlIHJldHVybmVkIGhhcyB0aGUKKyAgICA7OyBmb3JtYWxzLWlkcyBmb3Jt YXQgYXMgZGVzY3JpYmVkIGFib3ZlLgorICAgIDs7CisgICAgOzsgVGhlIG91dHB1dCBpcyB1c2Vk IGluIHRoZSBuZXh0LW1ldGhvZCBhcHBsaWNhdGlvbiBmb3JtLgorICAgIDs7CisgICAgKGRlZmlu ZSAoLT5rZXl3b3JkLWZvcm1hbC1pZHMga2V5d29yZC1mb3JtYWxzKQorICAgICAgKGxldCBscCAo KGxzIGtleXdvcmQtZm9ybWFscykgKG91dCAnKCkpKQogICAgICAgICAoc3ludGF4LWNhc2UgbHMg KCkKLSAgICAgICAgICAoKHggLiB4cykgICAgICAgIChscCAjJ3hzIChjb25zICMneCBvdXQpKSkK LSAgICAgICAgICAoKCkgICAgICAgICAgICAgIChyZXZlcnNlIG91dCkpCi0gICAgICAgICAgKHRh aWwgICAgICAgICAgICAocmV2ZXJzZSAoY29ucyAjJ3RhaWwgb3V0KSkpKSkpCisgICAgICAgICAg KCgoZiB2YWwpIC4gcmVzdCkKKyAgICAgICAgICAgKGxwICMncmVzdCBvdXQpKQorICAgICAgICAg ICgoIzpyZXN0IGYpCisgICAgICAgICAgIChjb25zIChyZXZlcnNlIG91dCkgIydmKSkKKyAgICAg ICAgICAoKGYgLiByZXN0KQorICAgICAgICAgICAoa2V5d29yZD8gKHN5bnRheC0+ZGF0dW0gIydm KSkKKyAgICAgICAgICAgKGxwICMncmVzdCBvdXQpKQorICAgICAgICAgICgoZiAuIHJlc3QpCisg ICAgICAgICAgIChscCAjJ3Jlc3QgKGNvbnMgIydmIG91dCkpKQorICAgICAgICAgICgoKQorICAg ICAgICAgICAoY29ucyAocmV2ZXJzZSBvdXQpICcoKSkpCisgICAgICAgICAgKHRhaWwKKyAgICAg ICAgICAgKGNvbnMgKHJldmVyc2Ugb3V0KSAjJ3RhaWwpKSkpKQogCi0gICAgKGRlZmluZSAoY29t cHV0ZS1tYWtlLXByb2NlZHVyZSBmb3JtYWxzIGJvZHkgbmV4dC1tZXRob2QpCisgICAgKGRlZmlu ZSAoY29tcHV0ZS1tYWtlLXByb2NlZHVyZSBmb3JtYWxzIGtleXdvcmQtZm9ybWFscyBib2R5IG5l eHQtbWV0aG9kKQogICAgICAgKHN5bnRheC1jYXNlIGJvZHkgKCkKICAgICAgICAgKChib2R5IC4u LikKLSAgICAgICAgICh3aXRoLXN5bnRheCAoKG5leHQtbWV0aG9kIG5leHQtbWV0aG9kKSkKLSAg ICAgICAgICAgKHN5bnRheC1jYXNlIGZvcm1hbHMgKCkKLSAgICAgICAgICAgICAoKGZvcm1hbCAu Li4pCi0gICAgICAgICAgICAgICMnKGxhbWJkYSAocmVhbC1uZXh0LW1ldGhvZCkKLSAgICAgICAg ICAgICAgICAgIChsYW1iZGEgKGZvcm1hbCAuLi4pCi0gICAgICAgICAgICAgICAgICAgIChsZXQg KChuZXh0LW1ldGhvZCAobGFtYmRhIGFyZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGlmIChudWxsPyBhcmdzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHJlYWwtbmV4dC1tZXRob2QgZm9ybWFsIC4uLikKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSByZWFsLW5leHQtbWV0 aG9kIGFyZ3MpKSkpKQotICAgICAgICAgICAgICAgICAgICAgIGJvZHkgLi4uKSkpKQotICAgICAg ICAgICAgIChmb3JtYWxzCi0gICAgICAgICAgICAgICh3aXRoLXN5bnRheCAoKChmb3JtYWwgLi4u KSAoLT5wcm9wZXIgIydmb3JtYWxzKSkpCi0gICAgICAgICAgICAgICAgIycobGFtYmRhIChyZWFs LW5leHQtbWV0aG9kKQotICAgICAgICAgICAgICAgICAgICAobGFtYmRhIGZvcm1hbHMKLSAgICAg ICAgICAgICAgICAgICAgICAobGV0ICgobmV4dC1tZXRob2QgKGxhbWJkYSBhcmdzCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChudWxsPyBhcmdzKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXBwbHkgcmVhbC1u ZXh0LW1ldGhvZCBmb3JtYWwgLi4uKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoYXBwbHkgcmVhbC1uZXh0LW1ldGhvZCBhcmdzKSkpKSkKKyAgICAgICAg IChsZXQgKChmb3JtYWxzIChpZiAobnVsbD8ga2V5d29yZC1mb3JtYWxzKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZvcm1hbHMgICAgIDttaWdodCBiZSBpbXByb3BlcgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChhcHBlbmQgZm9ybWFscyBrZXl3b3JkLWZvcm1hbHMpKSkKKyAg ICAgICAgICAgICAgIChmb3JtYWwtaWRzCisgICAgICAgICAgICAgICAgKGlmIChudWxsPyBrZXl3 b3JkLWZvcm1hbHMpCisgICAgICAgICAgICAgICAgICAgICgtPmZvcm1hbC1pZHMgZm9ybWFscykK KyAgICAgICAgICAgICAgICAgICAgKGxldCAoKGt3LWZvcm1hbC1pZHMgKC0+a2V5d29yZC1mb3Jt YWwtaWRzIGtleXdvcmQtZm9ybWFscykpKQorICAgICAgICAgICAgICAgICAgICAgIDs7IGlucHV0 IGFuZCByZXN1bHQgaW4gZm9ybWFscy1pZHMgZm9ybWF0CisgICAgICAgICAgICAgICAgICAgICAg KGNvbnMgKGFwcGVuZCBmb3JtYWxzIChjYXIga3ctZm9ybWFsLWlkcykpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGNkciBrdy1mb3JtYWwtaWRzKSkpKSkpCisgICAgICAgICAgICh3aXRo LXN5bnRheCAoKG5leHQtbWV0aG9kIG5leHQtbWV0aG9kKSkKKyAgICAgICAgICAgICAoc3ludGF4 LWNhc2UgZm9ybWFscyAoKQorICAgICAgICAgICAgICAgKGZvcm1hbHMKKyAgICAgICAgICAgICAg ICAjYChsYW1iZGEgKHJlYWwtbmV4dC1tZXRob2QpCisgICAgICAgICAgICAgICAgICAgIChsYW1i ZGEqIGZvcm1hbHMKKyAgICAgICAgICAgICAgICAgICAgICAobGV0ICgobmV4dC1tZXRob2QKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSBhcmdzCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGlmIChudWxsPyBhcmdzKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjLChpZiAobnVsbD8gKGNkciBmb3JtYWwtaWRzKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgI2AocmVhbC1uZXh0LW1ldGhvZCAjLEAoY2FyIGZv cm1hbC1pZHMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYChh cHBseSByZWFsLW5leHQtbWV0aG9kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMsQChjYXIgZm9ybWFsLWlkcykKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIywoY2RyIGZvcm1hbC1pZHMpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGx5IHJlYWwtbmV4dC1tZXRob2QgYXJn cykpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBib2R5IC4uLikpKSkpKSkpKSkKIAotICAg IChkZWZpbmUgKGNvbXB1dGUtcHJvY2VkdXJlcyBmb3JtYWxzIGJvZHkpCisgICAgKGRlZmluZSAo Y29tcHV0ZS1wcm9jZWR1cmVzIGZvcm1hbHMga2V5d29yZC1mb3JtYWxzIGJvZHkpCiAgICAgICA7 OyBTbywgb3VyIHVzZSBvZiB0aGlzIGlzIGJyb2tlbiwgYmVjYXVzZSBpdCBvcGVyYXRlcyBvbiB0 aGUKICAgICAgIDs7IHByZS1leHBhbnNpb24gc291cmNlIGNvZGUuIEl0J3MgZXF1aXZhbGVudCB0 byBqdXN0IHNlYXJjaGluZwogICAgICAgOzsgZm9yIHJlZmVyZW50IGluIHRoZSBkYXR1bXMuIEFo IHdlbGwuCkBAIC0yMTQyLDIzICsyMjE1LDMxIEBAIGZ1bmN0aW9uLiIKICAgICAgICAgKGlmIGlk CiAgICAgICAgICAgICA7OyByZXR1cm4gYSBtYWtlLXByb2NlZHVyZQogICAgICAgICAgICAgKHZh bHVlcyAjJyNmCi0gICAgICAgICAgICAgICAgICAgIChjb21wdXRlLW1ha2UtcHJvY2VkdXJlIGZv cm1hbHMgYm9keSBpZCkpCi0gICAgICAgICAgICAodmFsdWVzIChjb21wdXRlLXByb2NlZHVyZSBm b3JtYWxzIGJvZHkpCisgICAgICAgICAgICAgICAgICAgIChjb21wdXRlLW1ha2UtcHJvY2VkdXJl IGZvcm1hbHMga2V5d29yZC1mb3JtYWxzIGJvZHkgaWQpKQorICAgICAgICAgICAgKHZhbHVlcyAo Y29tcHV0ZS1wcm9jZWR1cmUgZm9ybWFscyBrZXl3b3JkLWZvcm1hbHMgYm9keSkKICAgICAgICAg ICAgICAgICAgICAgIycjZikpKSkKIAogICAgIChzeW50YXgtY2FzZSB4ICgpCi0gICAgICAoKF8g YXJncykgIycobWV0aG9kIGFyZ3MgKGlmICNmICNmKSkpCi0gICAgICAoKF8gYXJncyBib2R5MCBi b2R5MSAuLi4pCi0gICAgICAgKHdpdGgtc3ludGF4ICgoKGZvcm1hbHMgKHNwZWNpYWxpemVyIC4u LikpIChwYXJzZS1hcmdzICMnYXJncykpKQorICAgICAgKChfIGZvcm1hbHMpICMnKG1ldGhvZCBm b3JtYWxzIChpZiAjZiAjZikpKQorICAgICAgKChfIGZvcm1hbHMgYm9keTAgYm9keTEgLi4uKQor ICAgICAgICh3aXRoLXN5bnRheCAoKChmb3JtYWxzIChzcGVjaWFsaXplciAuLi4pIGtleXdvcmQt Zm9ybWFscykKKyAgICAgICAgICAgICAgICAgICAgICAocGFyc2UtZm9ybWFscyAjJ2Zvcm1hbHMp KSkKICAgICAgICAgIChjYWxsLXdpdGgtdmFsdWVzCiAgICAgICAgICAgICAgKGxhbWJkYSAoKQot ICAgICAgICAgICAgICAgKGNvbXB1dGUtcHJvY2VkdXJlcyAjJ2Zvcm1hbHMgIycoYm9keTAgYm9k eTEgLi4uKSkpCisgICAgICAgICAgICAgICAoY29tcHV0ZS1wcm9jZWR1cmVzICMnZm9ybWFscwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ2tleXdvcmQtZm9ybWFscworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJyhib2R5MCBib2R5MSAuLi4pKSkKICAg ICAgICAgICAgKGxhbWJkYSAocHJvY2VkdXJlIG1ha2UtcHJvY2VkdXJlKQogICAgICAgICAgICAg ICh3aXRoLXN5bnRheCAoKHByb2NlZHVyZSBwcm9jZWR1cmUpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobWFrZS1wcm9jZWR1cmUgbWFrZS1wcm9jZWR1cmUpKQotICAgICAgICAgICAgICAg IycobWFrZSA8bWV0aG9kPgotICAgICAgICAgICAgICAgICAgICM6c3BlY2lhbGl6ZXJzIChjb25z KiBzcGVjaWFsaXplciAuLi4pCi0gICAgICAgICAgICAgICAgICAgIzpmb3JtYWxzICdmb3JtYWxz CisgICAgICAgICAgICAgICAjYChtYWtlIDxtZXRob2Q+CisgICAgICAgICAgICAgICAgICAgIzpz cGVjaWFsaXplcnMgKGNvbnMqIHNwZWNpYWxpemVyIC4uLikgO3llcywgdGhpcworICAgICAgICAg ICAgICAgICAgIDs7IFRoZSBjb25zKiBpcyBuZWVkZWQgdG8gZ2V0IGF0IHRoZSB2YWx1ZSBvZiBl YWNoCisgICAgICAgICAgICAgICAgICAgOzsgc3BlY2lhbGl6ZXIuCisgICAgICAgICAgICAgICAg ICAgIzpmb3JtYWxzIChpZiAobnVsbD8gJ2tleXdvcmQtZm9ybWFscykKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdmb3JtYWxzIDttaWdodCBiZSBpbXByb3BlcgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVuZCAnZm9ybWFscyAna2V5d29yZC1mb3JtYWxz KSkKKyAgICAgICAgICAgICAgICAgICAjOmtleXdvcmQtZm9ybWFscz8gKG5vdCAobnVsbD8gJ2tl eXdvcmQtZm9ybWFscykpCiAgICAgICAgICAgICAgICAgICAgIzpib2R5ICcoYm9keTAgYm9keTEg Li4uKQogICAgICAgICAgICAgICAgICAgICM6bWFrZS1wcm9jZWR1cmUgbWFrZS1wcm9jZWR1cmUK ICAgICAgICAgICAgICAgICAgICAjOnByb2NlZHVyZSBwcm9jZWR1cmUpKSkpKSkpKSkKQEAgLTIy ODEsNiArMjM2Miw5IEBAIGZ1bmN0aW9uLiIKIChkZWZpbmUtbWV0aG9kIChtZXRob2QtZm9ybWFs cyAobSA8bWV0aG9kPikpCiAgIChzbG90LXJlZiBtICdmb3JtYWxzKSkKIAorKGRlZmluZS1tZXRo b2QgKG1ldGhvZC1rZXl3b3JkLWZvcm1hbHM/IChtIDxtZXRob2Q+KSkKKyAgKHNsb3QtcmVmIG0g J2tleXdvcmQtZm9ybWFscz8pKQorCiA7OzsKIDs7OyBTbG90cwogOzs7CkBAIC0yODM0LDYgKzI5 MTgsNyBAQCB2YXJ7aW5pdGFyZ3N9LiIKICAgKHNsb3Qtc2V0ISBtZXRob2QgJ3Byb2NlZHVyZQog ICAgICAgICAgICAgIChnZXQta2V5d29yZCAjOnByb2NlZHVyZSBpbml0YXJncyAjZikpCiAgIChz bG90LXNldCEgbWV0aG9kICdmb3JtYWxzIChnZXQta2V5d29yZCAjOmZvcm1hbHMgaW5pdGFyZ3Mg JygpKSkKKyAgKHNsb3Qtc2V0ISBtZXRob2QgJ2tleXdvcmQtZm9ybWFscz8gKGdldC1rZXl3b3Jk ICM6a2V5d29yZC1mb3JtYWxzPyBpbml0YXJncyAjZikpCiAgIChzbG90LXNldCEgbWV0aG9kICdi b2R5IChnZXQta2V5d29yZCAjOmJvZHkgaW5pdGFyZ3MgJygpKSkKICAgKHNsb3Qtc2V0ISBtZXRo b2QgJ21ha2UtcHJvY2VkdXJlIChnZXQta2V5d29yZCAjOm1ha2UtcHJvY2VkdXJlIGluaXRhcmdz ICNmKSkpCiAK --00000000000073abaf062746b4bd--