From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 6517 invoked from network); 8 Feb 2023 02:49:36 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 8 Feb 2023 02:49:36 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1675824576; b=CQUFA6GWe45eNDrTdeMZIqZlkkGMNNyqvEW7pXRwkCEZcOiCn/1jrXos6fFMED4Zj0qH7k0WDv eA84Qt+/CRkuEQuD0wMumqqjFPf/tX3FBTmumDYbJHghf8FhAGly5xUOtR3G6RkNAqUivp/gnS Gj87MoTU2DS3OXz+3nxMuAchCA1rC1kdbiziUu8/XzTFE7Cf9t4s2LToTICUGH2NMqLJ4V/jLR trhmjGPEpUwNGMdShdnaaasHaPxX1YsRPqiX+ePvrdwXOpAmrTruPpu6T4uITdn6YGFaRv40rZ 5ubrGkP9GN/IfhqRgHYYQxTFQHuDYg0SxCB18fW47vBtLw==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ed1-f46.google.com) smtp.remote-ip=209.85.208.46; dkim=pass header.d=brasslantern-com.20210112.gappssmtp.com header.s=20210112 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1675824576; bh=Z2A+xm+kRHDefk2VsnUf2ib/2zAYp1FdCguyVzh1Xfw=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:MIME-Version: DKIM-Signature:DKIM-Signature; b=nUKVjv8hZD9BRakJh83411zn7AJGYVltttUp7q5Ydu7IFC7B7Tb+xxsX64JlNp4ROgOWpB5WUn 0HgcRWPuliA6Y8GTcKr9uOoQMnf7KlrEXopBTJe7a9ytknTSG8/QXbGNgX066Z2gggepCak/mI qgYNHWELkh1v78SbKQ2CurSq6DuXdokaaxwfzFGl37eRDGYuenLO8LkO7lv/OPNHkpGdLXsnwe KcgBMOFpv580ce8//5QhtIT5TuYn3dvivixkADgOPMuxAFCVrJ0eZChtwpe/NCXxnecNxvhOz3 LFgUQoxrYGVlXK8SXrhNXfj/s6fKLt84yfB2c5QlGQMflA==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:To:Subject:Message-ID: Date:From:MIME-Version:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=aL+m0U48lBudRW7cnny1xXG+R5ut+OqNdibboYWNbMw=; b=UMWuBX/sXtfVd2jX6Q4WoKZeKg 47avTIRNeYYDOgzJt0Mel1etFiljrHV7lH83I89NPFKNcvree7oUKro0Po1lO9I4PTv5F7/XdQV9K etNVEQN5f6iIAvfy7imiyoFHAEs/kyyOTuzCrXwMGg6aC+GFhi/9Op96CSoyYrGf62eAG5fxB/Pqt U1KYQCor57tlNXhW4SskQ77k1CMI87zClYmOURZBfPJdIGli4QuRrTx4fcIy5jqK5UpO2N87xqtL+ Ynz2H1Ha6pEq/ylAiXQLs6UREQSWYBiHewMTRtUhIIXkwYE6dlgmBslnf4sQ+bOkIU2R0XgGad7lt /drxI6Ig==; Received: by zero.zsh.org with local id 1pPaWd-000Iku-Uy; Wed, 08 Feb 2023 02:49:35 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ed1-f46.google.com) smtp.remote-ip=209.85.208.46; dkim=pass header.d=brasslantern-com.20210112.gappssmtp.com header.s=20210112 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-ed1-f46.google.com ([209.85.208.46]:41839) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1pPaRS-000IMs-0n; Wed, 08 Feb 2023 02:44:15 +0000 Received: by mail-ed1-f46.google.com with SMTP id v10so18668929edi.8 for ; Tue, 07 Feb 2023 18:44:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20210112.gappssmtp.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=aL+m0U48lBudRW7cnny1xXG+R5ut+OqNdibboYWNbMw=; b=FybtguGH8+uxn6rOcFPw3F0xm6yMcvTPEhsuZ9S/Wqt3rRwfgyXRVAHr0WM7UsW0Er QhchrnL4Yu0CskWAW5637xDcHImsdJEmM4/DC6S16IcHCIar6Vap2XBWKb9wOMDgEzYM lLdaDPyOBlDuElFVwHDSEU1Lp0MH4NjQ9hrUFqGZFIo/XXzqZt7QZ5JcZsgOi12dqTYl RyiEWRNom2nARSkLQKB9CSzLYCct1+bXkRMuS8QB/7RC7+GOI85V+0DqGgaS01IWUwqM jgXECd0vhz2SK5UNnY6ry3dyCGq5m/8xnWJ7TDhGymbxmMkpQ/Sm2odpu+2hpIw2dl7t xvdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=aL+m0U48lBudRW7cnny1xXG+R5ut+OqNdibboYWNbMw=; b=2zgzWZTBkM/KxnG10gZbKApj3KkhnecuTq3xZmmgHRzQFD2LVTrhDZao/7rN2eiotI ciwU7UzIaqEldL14Ze0bjR1K3egyxerw+mMkpJLtYMWztq9FJvogRnv8076ju7MmOTEP ZFS+gu2gILKUVaJ5f6WsVc7DqKb53RNR4gPLYPRioXAn1SIbu42RGXGLVik7USuXSmvi QU2Iko1NqpvidKc4ebiczxvEjJGhYyi++saagkdZBBTEuiZ5QbHxERUkKQgDfbaFdB9I NHz3Ccr1alGtgi3jgDSDqUPjK8/9PHVCe5BZE9kAbK8i7S7HfiL0SdOf5XjlcuRe5dIV 52Cg== X-Gm-Message-State: AO0yUKUIoAm0e5rfDelTYX5qhZQRoDUtGaE4TnfZHMzcPvKE3eEXosKj i9IqSdXLBEXbbhJX//3Gs81I+HRjiTQbXWdJmIYz0FShOHzexg== X-Google-Smtp-Source: AK7set9VUeSp2Qni2HzvH134JIBRHAUgn2+ZZA0qMaIze9+rw3xUXBFjT4rPdNQ8hJQ2emvUc+ELP49+fmj5FbWtA/k= X-Received: by 2002:a50:d59d:0:b0:4a0:902c:9da2 with SMTP id v29-20020a50d59d000000b004a0902c9da2mr1472472edi.62.1675824253281; Tue, 07 Feb 2023 18:44:13 -0800 (PST) MIME-Version: 1.0 From: Bart Schaefer Date: Tue, 7 Feb 2023 18:44:02 -0800 Message-ID: Subject: [PATCH 4/3] Fixes for named references (code and tests) To: Zsh hackers list Content-Type: multipart/mixed; boundary="00000000000052daf705f4273d53" X-Seq: 51374 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: --00000000000052daf705f4273d53 Content-Type: text/plain; charset="UTF-8" Named references, a trilogy in five parts. Based on discussion with Daniel, here are code and test updates to applied following the first three named reference patches I sent on Feb 5th. Some notes: The zsh/parameter module has been updated to be able to "see" named references. That is, whereas typeset -n nameref=var print ${(t)nameref} outputs the same string as ${(t)var}, using print ${parameters[nameref]} outputs the equivalent of nameref-${(t)var} The "bad substitution" error on typeset -n nr='ary[2]' print ${nr} has been fixed, and a problem with find the correct scope for a local nameref also corrected. Tests for these have been added, based on the examples Daniel provided and a couple more. I also changed the autoload test to be skipped if the module isn't loadable. --00000000000052daf705f4273d53 Content-Type: text/plain; charset="US-ASCII"; name="nameref-4-repairs.txt" Content-Disposition: attachment; filename="nameref-4-repairs.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ldv1pmgi0 ZGlmZiAtLWdpdCBhL1NyYy9Nb2R1bGVzL3BhcmFtZXRlci5jIGIvU3JjL01vZHVsZXMvcGFyYW1l dGVyLmMKaW5kZXggNWJmNjc1ZTJhLi5hNjU5MzAwZmQgMTAwNjQ0Ci0tLSBhL1NyYy9Nb2R1bGVz L3BhcmFtZXRlci5jCisrKyBiL1NyYy9Nb2R1bGVzL3BhcmFtZXRlci5jCkBAIC0xMDUsMTAgKzEw NSwxNSBAQCBnZXRwbXBhcmFtZXRlcihVTlVTRUQoSGFzaFRhYmxlIGh0KSwgY29uc3QgY2hhciAq bmFtZSkKICAgICBwbS0+bm9kZS5uYW0gPSBkdXBzdHJpbmcobmFtZSk7CiAgICAgcG0tPm5vZGUu ZmxhZ3MgPSBQTV9TQ0FMQVIgfCBQTV9SRUFET05MWTsKICAgICBwbS0+Z3N1LnMgPSAmbnVsbHNl dHNjYWxhcl9nc3U7Ci0gICAgaWYgKChycG0gPSAoUGFyYW0pIHJlYWxwYXJhbXRhYi0+Z2V0bm9k ZShyZWFscGFyYW10YWIsIG5hbWUpKSAmJgotCSEocnBtLT5ub2RlLmZsYWdzICYgUE1fVU5TRVQp KQorICAgIGlmICgocnBtID0gKFBhcmFtKSByZWFscGFyYW10YWItPmdldG5vZGUyKHJlYWxwYXJh bXRhYiwgbmFtZSkpICYmCisJIShycG0tPm5vZGUuZmxhZ3MgJiBQTV9VTlNFVCkpIHsKIAlwbS0+ dS5zdHIgPSBwYXJhbXR5cGVzdHIocnBtKTsKLSAgICBlbHNlIHsKKwlpZiAoKHJwbS0+bm9kZS5m bGFncyAmIFBNX05BTUVSRUYpICYmCisJICAgIChycG0gPSAoUGFyYW0pIHJlYWxwYXJhbXRhYi0+ Z2V0bm9kZShyZWFscGFyYW10YWIsIG5hbWUpKSAmJgorCSAgICAhKHJwbS0+bm9kZS5mbGFncyAm IFBNX1VOU0VUKSkgeworCSAgICBwbS0+dS5zdHIgPSB6aHRyaWNhdChwbS0+dS5zdHIsICItIiwg cGFyYW10eXBlc3RyKHJwbSkpOworCX0KKyAgICB9IGVsc2UgewogCXBtLT51LnN0ciA9IGR1cHN0 cmluZygiIik7CiAJcG0tPm5vZGUuZmxhZ3MgfD0gKFBNX1VOU0VUfFBNX1NQRUNJQUwpOwogICAg IH0KZGlmZiAtLWdpdCBhL1NyYy9wYXJhbXMuYyBiL1NyYy9wYXJhbXMuYwppbmRleCA2OWI3ZjQ4 NGYuLjk4OTUwZDg4ZiAxMDA2NDQKLS0tIGEvU3JjL3BhcmFtcy5jCisrKyBiL1NyYy9wYXJhbXMu YwpAQCAtMjE1NSw3ICsyMTU1LDcgQEAgZmV0Y2h2YWx1ZShWYWx1ZSB2LCBjaGFyICoqcHB0ciwg aW50IGJyYWNrcywgaW50IGZsYWdzKQogCQlyZXR1cm4gTlVMTDsKIAkgICAgaWYgKHNzKQogCQkq c3MgPSBzYXY7Ci0JICAgIHMgPSBzczsKKwkgICAgcyA9IGR5bmNhdChzcywqcHB0cik7CiAJfQog CWlmIChQTV9UWVBFKHBtLT5ub2RlLmZsYWdzKSAmIChQTV9BUlJBWXxQTV9IQVNIRUQpKSB7CiAJ ICAgIC8qIE92ZXJsb2FkIHYtPmlzYXJyIGFzIHRoZSBmbGFnIGJpdHMgZm9yIGhhc2hlZCBhcnJh eXMuICovCkBAIC02MTcwLDYgKzYxNzAsNyBAQCBzZXRzY29wZShQYXJhbSBwbSkKIHsKICAgICBp ZiAocG0tPm5vZGUuZmxhZ3MgJiBQTV9OQU1FUkVGKSB7CiAJUGFyYW0gYmFzZXBtOworCXN0cnVj dCBhc2dtZW50IHN0b3A7CiAJY2hhciAqdCA9IHBtLT51LnN0ciA/IGl0eXBlX2VuZChwbS0+dS5z dHIsIElJREVOVCwgMCkgOiBOVUxMOwogCiAJLyogVGVtcG9yYXJpbHkgY2hhbmdlIG5hbWVyZWYg dG8gYXJyYXkgcGFyYW1ldGVyIGl0c2VsZiAqLwpAQCAtNjE3Nyw3ICs2MTc4LDEyIEBAIHNldHNj b3BlKFBhcmFtIHBtKQogCSAgICAqdCA9IDA7CiAJZWxzZQogCSAgICB0ID0gMDsKLQliYXNlcG0g PSAoUGFyYW0pcmVzb2x2ZV9uYW1lcmVmKHBtLCBOVUxMKTsKKwlzdG9wLm5hbWUgPSAiIjsKKwlz dG9wLnZhbHVlLnNjYWxhciA9IE5VTEw7CisJc3RvcC5mbGFncyA9IFBNX05BTUVSRUY7CisJaWYg KGxvY2FsbGV2ZWwpCisJICAgIHN0b3AuZmxhZ3MgfD0gUE1fTE9DQUw7CisJYmFzZXBtID0gKFBh cmFtKXJlc29sdmVfbmFtZXJlZihwbSwgJnN0b3ApOwogCWlmICh0KSB7CiAJICAgIHBtLT53aWR0 aCA9IHQgLSBwbS0+dS5zdHI7CiAJICAgICp0ID0gJ1snOwpkaWZmIC0tZ2l0IGEvVGVzdC9LMDFu YW1lcmVmLnp0c3QgYi9UZXN0L0swMW5hbWVyZWYuenRzdAppbmRleCBiMzg4MzExMDAuLmE2NjMx OTRhNyAxMDA2NDQKLS0tIGEvVGVzdC9LMDFuYW1lcmVmLnp0c3QKKysrIGIvVGVzdC9LMDFuYW1l cmVmLnp0c3QKQEAgLTEsMTEgKzEsMTEgQEAKLSMgVGVzdHMgZm9yIHRoZSB6c2gvcGFyYW0vcHJp dmF0ZSBtb2R1bGUKKyMgVGVzdHMgZm9yIG5hbWVkIHJlZmVyZW5jZXMKIAogJXByZXAKIAogICMg UmVxdWlyZWQgaW4gb3JkZXIgdG8gZGVjbGFyZSBhbiB1bnNldCBoYXNoIGZvciBzdWJzdGl0dXRp b24gdGVzdAogIHNldG9wdCBUWVBFU0VUX1RPX1VOU0VUCiAKLSA6ICR7WlRTVF9jb250aW51ZTo9 MX0KKyA6ICR7WlRTVF9jb250aW51ZTo6PTF9CiAKICV0ZXN0CiAKQEAgLTUzLDcgKzUzLDEzIEBA IEY6T3RoZXIgdHlwZSBjaGFuZ2VzIGFyZSBmYXRhbCBlcnJvcnMsIHNob3VsZCB0aGlzIGFsc28g YmU/CiAgdHlwZXNldCB2YXI9dmFsdWUKICB0eXBlc2V0IC1uIHB0cj12YXIKICBwcmludCAkcHRy Ci0wOmJhc2ljIG5hbWVyZWYgZXhwYW5zaW9uCiswOmJhc2ljIG5hbWVyZWYgZXhwYW5zaW9uLCBu byBicmFjZXMKKz52YWx1ZQorCisgdHlwZXNldCB2YXI9dmFsdWUKKyB0eXBlc2V0IC1uIHB0cj12 YXIKKyBwcmludCAke3B0cn0KKzA6YmFzaWMgbmFtZXJlZiBleHBhbnNpb24sIGJyYWNlcwogPnZh bHVlCiAKICB0eXBlc2V0IHZhcj0odmFsMSB2YWwyKQpAQCAtMTE1LDkgKzEyMSwxMCBAQCBGOk90 aGVyIHR5cGUgY2hhbmdlcyBhcmUgZmF0YWwgZXJyb3JzLCBzaG91bGQgdGhpcyBhbHNvIGJlPwog PnR5cGVzZXQgLW4gcHRyPXZhcgogPnR5cGVzZXQgLWEgdmFyPSggbmV3MSBuZXcyICkKIAotIHR5 cGVzZXQgLXAgcHRyMSBwdHIyIHZhcgorIHR5cGVzZXQgLXAgcHRyIHB0cjEgcHRyMiB2YXIKIDE6 Y2hlY2sgc3RhdGUgb2YgcGFyYW10YWIgT05FCiBGOnVuZXhwZWN0ZWQgc2lkZS1lZmZlY3RzIG9m IHByZXZpb3VzIHRlc3RzCisqPypubyBzdWNoIHZhcmlhYmxlOiBwdHIKICo/Km5vIHN1Y2ggdmFy aWFibGU6IHB0cjEKICo/Km5vIHN1Y2ggdmFyaWFibGU6IHB0cjIKICo/Km5vIHN1Y2ggdmFyaWFi bGU6IHZhcgpAQCAtMjQ3LDEzICsyNTQsMjQgQEAgRjp1bmV4cGVjdGVkIHNpZGUtZWZmZWN0cyBv ZiBwcmV2aW91cyB0ZXN0cwogCiAgdHlwZXNldCAtbiBwdHIyPSdwYXRoWzJdJwogIHByaW50IC1y IC0tICRwdHIyCi0wZDpuYW1lcmVmIHRvIGFycmF5IGVsZW1lbnQKKzBxOm5hbWVyZWYgdG8gYXJy YXkgZWxlbWVudCwgbm8gYnJhY2VzCis+JHtwYXRoWzJdfQorCisgdHlwZXNldCAtbiBwdHIyPSdw YXRoWzJdJworIHByaW50IC1yIC0tICR7cHRyMn0KKzBxOm5hbWVyZWYgdG8gYXJyYXkgZWxlbWVu dCwgd2l0aCBicmFjZXMKID4ke3BhdGhbMl19CiAKICB0eXBlc2V0IC1BIGhhc2g9KHggTUlTUyB5 IEhJVCkKICB0eXBlc2V0IC1uIHB0cjE9J2hhc2hbeV0nCiAgcHJpbnQgLXIgLS0gJHB0cjEKLTA6 bmFtZXJlZiB0byBoYXNoIGVsZW1lbnQKKzA6bmFtZXJlZiB0byBoYXNoIGVsZW1lbnQsIG5vIGJy YWNlcworPkhJVAorCisgdHlwZXNldCAtQSBoYXNoPSh4IE1JU1MgeSBISVQpCisgdHlwZXNldCAt biBwdHIxPSdoYXNoW3ldJworIHByaW50IC1yIC0tICR7cHRyMX0KKzA6bmFtZXJlZiB0byBoYXNo IGVsZW1lbnQsIHdpdGggYnJhY2VzCiA+SElUCiAKICB0eXBlc2V0IC1hIGFyeT0oMSAyKQpAQCAt MzYyLDE2ICszODAsMTYgQEAgRjp1bmV4cGVjdGVkIHNpZGUtZWZmZWN0cyBvZiBwcmV2aW91cyB0 ZXN0cwogPnR5cGVzZXQgLW4gcHRyPWx2YWwKID50eXBlc2V0IC1uIHB0cj1ndmFsCiAKKyB0eXBl c2V0IC1BIHZhcj0obXlzZWxmIG91dHNpZGUpCiAgKCkgewotICAgem1vZGxvYWQgLXUgenNoL3Bh cmFtZXRlcgotICAgdHlwZXNldCAtbiBteXNlbGY9cGFyYW1ldGVyc1tteXNlbGZdCi0gICBsb2Nh bCAtaCBwYXJhbWV0ZXJzCisgICB0eXBlc2V0IC1uIG15c2VsZj12YXJbbXlzZWxmXQorICAgbG9j YWwgLWggdmFyCiAgICBwcmludCAtciAtLSAkbXlzZWxmCi0gICB0eXBlc2V0IC1wIHBhcmFtZXRl cnMKKyAgIHR5cGVzZXQgLXAgdmFyCiAgfQotMDp1cC1yZWZlcmVuY2UgcGFydCAzLCBhdXRvbG9h ZGluZyB3aXRoIGhpZGRlbiBzcGVjaWFsCi0+bmFtZXJlZi1sb2NhbAotPnR5cGVzZXQgcGFyYW1l dGVycworMDp1cC1yZWZlcmVuY2UgcGFydCAzLCBoaWRkZW4gZ2xvYmFsCis+b3V0c2lkZQorPnR5 cGVzZXQgdmFyCiAKICAoKSB7CiAgICB0eXBlc2V0IG5vdGRlZgpAQCAtNDAxLDcgKzQxOSw3IEBA IEY6dW5leHBlY3RlZCBzaWRlLWVmZmVjdHMgb2YgcHJldmlvdXMgdGVzdHMKIDE6dXAtcmVmZXJl bmNlIHBhcnQgNSwgc3RhY2tlZCBuYW1lcmVmcywgZW5kIG5vdCBpbiBzY29wZQogRjpXaGF0IGlz IHRoZSBjb3JyZWN0IGJlaGF2aW9yIGZvciB0aGUgc2NvcGUgb2YgcHRyMT8KID50eXBlc2V0IC1u IHB0cjE9cHRyMgotPnR5cGVzZXQgLW4gcHRyMj0nJworPnR5cGVzZXQgLW4gcHRyMgogPnB0cjE9 cHRyMgogPnB0cjI9dmFsCiA+cHRyMT1MT0NBTApAQCAtNDI3LDEzICs0NDUsNjggQEAgRjpXaGF0 IGlzIHRoZSBjb3JyZWN0IGJlaGF2aW9yIGZvciB0aGUgc2NvcGUgb2YgcHRyMT8KIDA6dXAtcmVm ZXJlbmNlIHBhcnQgNiwgc3RhY2tlZCBuYW1lcmVmcywgZW5kIGlzIGluIHNjb3BlCiBGOlNhbWUg dGVzdCwgc2hvdWxkIHBhcnQgNSBvdXRwdXQgbG9vayBsaWtlIHRoaXM/CiA+dHlwZXNldCAtbiBw dHIxPXB0cjIKLT50eXBlc2V0IC1uIHB0cjI9JycKKz50eXBlc2V0IC1uIHB0cjIKID5wdHIxPXB0 cjIKLT5wdHIyPScnCis+cHRyMgogPnB0cjE9dmFsCiA+cHRyMj0KID50eXBlc2V0IC1uIHB0cjE9 cHRyMgogPnR5cGVzZXQgLW4gcHRyMj0nJwogPnR5cGVzZXQgcHRyMj12YWwKIAorIGlmIHptb2Rs b2FkIHpzaC9wYXJhbWV0ZXI7IHRoZW4KKyAoKSB7CisgICB6bW9kbG9hZCAtdSB6c2gvcGFyYW1l dGVyCisgICB0eXBlc2V0IC1uIG15c2VsZj1wYXJhbWV0ZXJzW215c2VsZl0KKyAgIGxvY2FsIC1o IHBhcmFtZXRlcnMKKyAgIHByaW50IC1yIC0tICRteXNlbGYKKyAgIHR5cGVzZXQgLXAgcGFyYW1l dGVycworIH0KKyBlbHNlIFpUU1Rfc2tpcD0nQ2Fubm90IHptb2Rsb2FkIHpzaC9wYXJhbWV0ZXIs IHNraXBwaW5nIGF1dG9sb2FkIHRlc3QnCisgZmkKKzA6dXAtcmVmZXJlbmNlIHBhcnQgMywgYXV0 b2xvYWRpbmcgd2l0aCBoaWRkZW4gc3BlY2lhbAorPm5hbWVyZWYtbG9jYWwtbmFtZXJlZi1sb2Nh bAorPnR5cGVzZXQgcGFyYW1ldGVycworCisgdHlwZXNldCBwdHIyPXZhcjIKKyB0eXBlc2V0IHZh cjI9R0xPQkFMCisgKCkgeworICAgdHlwZXNldCAtbiBwdHIxPXB0cjIKKyAgIHR5cGVzZXQgcHRy Mj12YXIxCisgICB0eXBlc2V0IHZhcjE9VkFSMQorICAgdHlwZXNldCB2YXIyPVZBUjIKKyAgIHBy aW50IC1yIC0tICR7KFApcHRyMX0KKyB9CiswOgorPlZBUjIKKworIGFyeT0ob25lIHR3byB0aHJl ZSBmb3VyKQorIHR5cGVzZXQgLW4gcHRyPWFyeQorIHByaW50IC1yICR7KGouOi4pcHRyLy9vLzB9 CiswOmV4cGFuc2lvbiBmbGFncyBhbmQgc3RyaW5nIHJlcGxhY2VtZW50Cis+MG5lOnR3MDp0aHJl ZTpmMHVyCisKKyB2YXI9dmFsdWUKKyB0eXBlc2V0IC1uIHB0cj12YXIKKyBteXNjYWxhcj1wdHIK KyBlY2hvICR7KFApbXlzY2FsYXJ9CiswOm5hbWVkIHJlZmVyZW5jZXMgd2l0aCAoUCksIGFzICR7 KFApbmFtZV9vZl9uYW1lcmVmfQorPnZhbHVlCisKKyB2YXI9dmFsdWUKKyBteXNjYWxhcj12YXIK KyB0eXBlc2V0IC1uIHB0cj1teXNjYWxhcgorIGVjaG8gJHsoUClwdHJ9CiswOm5hbWVkIHJlZmVy ZW5jZXMgd2l0aCAoUCksIGFzICR7KFApbmFtZXJlZn0KKz52YWx1ZQorCisgYXJ5PSggJ2JyeVsx XScgJ2JyeVsyXScgKSAKKyBicnk9KCBsb3JlbSBpcHN1bSApCisgdHlwZXNldCAtbiBwdHI9J2Fy eVsyXScKKyBwcmludCAtciAtLSAke3B0cn0KKyBwcmludCAtciAtLSAkeyhQKXB0cn0KKzA6bmFt ZWQgcmVmZXJlbmNlcyB3aXRoIChQKSwgYXJyYXkgZWxlbWVudCB0byBhcnJheSBlbGVtZW50Cis+ YnJ5WzJdCis+aXBzdW0KKwogJWNsZWFuCmRpZmYgLS1naXQgYS9UZXN0L1JFQURNRSBiL1Rlc3Qv UkVBRE1FCmluZGV4IDY3MDQzNGFjMy4uYjlkMzkzZDdjIDEwMDY0NAotLS0gYS9UZXN0L1JFQURN RQorKysgYi9UZXN0L1JFQURNRQpAQCAtNiw2ICs2LDcgQEAgc2NyaXB0cyBuYW1lczoKICBDOiBz aGVsbCBjb21tYW5kcyB3aXRoIHNwZWNpYWwgc3ludGF4CiAgRDogc3Vic3RpdGl0dXRpb24KICBF OiBvcHRpb25zCisgSzogZmVhdHVyZXMgYWRvcHRlZCBmcm9tIGtzaAogIFA6IHByaXZpbGVnZWQg KG5lZWRzIHN1cGVyLXVzZXIgcHJpdmlsZWdlcykKICBWOiBtb2R1bGVzCiAgVzogYnVpbHRpbiBp bnRlcmFjdGl2ZSBjb21tYW5kcyBhbmQgY29uc3RydWN0cwo= --00000000000052daf705f4273d53--