From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Taylan Kammer Newsgroups: gmane.lisp.guile.devel Subject: [PATCHES] Use a better SRFI-64 implementation. Date: Mon, 10 May 2021 20:25:49 +0200 Message-ID: <94ecc225-684f-1d36-bc72-53b8026753b6@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------8CA24D03EE9AC4C411F80FAD" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="18547"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 To: guile-devel@gnu.org Original-X-From: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Mon May 10 20:26:38 2021 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 1lgAc1-0004cA-OL for guile-devel@m.gmane-mx.org; Mon, 10 May 2021 20:26:38 +0200 Original-Received: from localhost ([::1]:54188 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lgAbz-0000pd-Rw for guile-devel@m.gmane-mx.org; Mon, 10 May 2021 14:26:35 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:57042) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lgAbO-0000pE-5N for guile-devel@gnu.org; Mon, 10 May 2021 14:25:58 -0400 Original-Received: from mail-ej1-x62a.google.com ([2a00:1450:4864:20::62a]:38894) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lgAbI-0006mr-ES for guile-devel@gnu.org; Mon, 10 May 2021 14:25:57 -0400 Original-Received: by mail-ej1-x62a.google.com with SMTP id b25so25933239eju.5 for ; Mon, 10 May 2021 11:25:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:message-id:date:user-agent:mime-version :content-language; bh=3FZoEcHqMWdvWqZ92yP0V3A0odUDSttJKn2GzpI5TzM=; b=D29/0iFTdsNGMYB+t5DHhe7+t/I7005VyRkBhpH1LngTP6Zs8gdJ+HeaGdYUdu3l8K 4YkOVk+Cs8GaKUyE49Ymj6YL637rF4ryBEOftTJjcAy2E11anB3t3YZXodjFNaCYD7WG 65l+/J2M+4D3dSEd1+T+GrScz+LI1ZgdOld5NDAjQyMZXq1rImfrHStLAuu+PAl56IDw OL56YunmuzSqszEyuqg5HQJ7YvYAadA7rt5myYE8eCNGl+Ur9bthAqfF9sahndeLVNnS nkN82MgbBL5/5FNfY075t8dMa3taRlpJVMLDqv3FFI2eoWVVzzQcJoi+nI+VBPK7dw9v U5Xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-language; bh=3FZoEcHqMWdvWqZ92yP0V3A0odUDSttJKn2GzpI5TzM=; b=BaGxvPo2QGPL4M8KlLk88eO3ss66Fk+8DR3ATKhTmyjJJmPPPOdXFnP9f5ctrken8k 7fJPvPM7gGqmoPb3IwdkPIXDlqtxy9VkFPVci9hAz6vrk+dTNksPuNBS1Rk9QPgYTIWh Twa8gueQKHrZI9UrriwoBbReI4sZc6E7fpGwq5aFErdl6yKWIC4z8VM3wryhzoD9U8P8 /cYEiqZX7Q04WcuYOOw3/ILcjqIVDJ2F7Omq/IKu37RtKETn3HyYF/3j+cIhXcQzHPiE 37PhEhYA1z6Vtb+8bopoCpqnLsKIMTxq9MFnSZjuEXjyNxE19mwQt2AvsBPwVFpB7+UK S1Mw== X-Gm-Message-State: AOAM532L0YhgZfUATfODTa20/vlec7IklieQgrgmkBFvJAPdD+Fi8hbK Lq5/FEx8ChHZSoJpNVtAtsRCZLtf5RA= X-Google-Smtp-Source: ABdhPJy6qMMV9NbtY6Pi26lFUOw8U/o/0MuOtwMys5wFpj1GrsQXf2A56YEv4EU83g7igNfOOA5AlA== X-Received: by 2002:a17:906:6a93:: with SMTP id p19mr27584863ejr.319.1620671150492; Mon, 10 May 2021 11:25:50 -0700 (PDT) Original-Received: from [192.168.178.20] (b2b-109-90-125-150.unitymedia.biz. [109.90.125.150]) by smtp.gmail.com with ESMTPSA id m9sm10230831ejj.53.2021.05.10.11.25.49 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 May 2021 11:25:50 -0700 (PDT) Content-Language: en-US Received-SPF: pass client-ip=2a00:1450:4864:20::62a; envelope-from=taylan.kammer@gmail.com; helo=mail-ej1-x62a.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, 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-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.23 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" Xref: news.gmane.io gmane.lisp.guile.devel:20763 Archived-At: This is a multi-part message in MIME format. --------------8CA24D03EE9AC4C411F80FAD Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hi Guile devs, I've noticed there have been a couple bug reports about SRFI-64 recently. Guile uses the reference implementation of SRFI-64 which has really terrible readability, doesn't conform to its own standard, and was revealed to have a number of bugs over the years. I've attached two patches, the first of which replaces the SRFI-64 implementation shipped with Guile to the one I wrote as part of the R7RS Scheme SRFIs project,[0] and the second patch adds a few tests to the SRFI-64 meta test suite. This implementation of SRFI-64 offers the following improvements: - Much better readability through a modular design, modernized Scheme code, better identifier names, and otherwise prettified code - Output about executed tests in a format familiar to GNU users - Improved expand-time performance for large test suites - Fully conforms to the SRFI-64 specification - Offers a small number of extensions See the notes about SRFI-64 in the README of the Scheme SRFIs project[0] for the most important differences from the reference implementation, like the way it conforms to the spec where the reference implementation doesn't, and the extensions mentioned above. I had already proposed such a patch a number of years ago, but it was rejected on the grounds that the upstream implementation is probably better tested. I think the fact that there have been grave bugs in the implementation that remained uncovered in ~15 years evidences that this is not a valid reason. I believe that the over-complicated way the code is written masks bugs and discourages people from improving the code. What do you think? IMO this would be a clear improvement. [0] https://github.com/TaylanUB/scheme-srfis --------------8CA24D03EE9AC4C411F80FAD Content-Type: text/plain; charset=UTF-8; name="0001-Use-a-different-SRFI-64-implementation.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Use-a-different-SRFI-64-implementation.patch" RnJvbSBmYTIzZjkwZmUzZTUxNmU1N2U2ZjFkZGFlNTUxN2Q3MTcwYzYyZjQ0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUYXlsYW4gS2FtbWVyIDx0YXlsYW4ua2FtbWVyQGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAxMCBNYXkgMjAyMSAxNToyMzoxNyArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMS8yXSBVc2UgYSBkaWZmZXJlbnQgU1JGSS02NCBpbXBsZW1lbnRhdGlvbi4K CiogbW9kdWxlL3NyZmkvc3JmaS02NC5zY206IEFkZCBpbXBvcnRzIGFuZCBvdGhlciBib2ls ZXJwbGF0ZSBmb3IgbmV3CiAgaW1wbGVtZW50YXRpb24uCiogbW9kdWxlL3NyZmkvc3JmaS02 NC9leGVjdXRpb24uYm9keS5zY206IE5ldyBmaWxlLgoqIG1vZHVsZS9zcmZpL3NyZmktNjQv c291cmNlLWluZm8uYm9keS5zY206IE5ldyBmaWxlLgoqIG1vZHVsZS9zcmZpL3NyZmktNjQv dGVzdC1ydW5uZXItc2ltcGxlLmJvZHkuc2NtOiBOZXcgZmlsZS4KKiBtb2R1bGUvc3JmaS9z cmZpLTY0L3Rlc3QtcnVubmVyLmJvZHkuc2NtOiBOZXcgZmlsZS4KKiBtb2R1bGUvc3JmaS9z cmZpLTY0L3Rlc3Rpbmcuc2NtOiBEZWxldGVkLgoqIG1vZHVsZS9NYWtlZmlsZS5hbSAoc3Jm aS02NC5nbywgTk9DT01QX1NPVVJDRVMpOiBDaGFuZ2UgYWNjb3JkaW5nbHkuCi0tLQogbW9k dWxlL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDExICstCiBt b2R1bGUvc3JmaS9zcmZpLTY0LnNjbSAgICAgICAgICAgICAgICAgICAgICAgfCAgMTQgKy0K IG1vZHVsZS9zcmZpL3NyZmktNjQvZXhlY3V0aW9uLmJvZHkuc2NtICAgICAgICB8IDQyNiAr KysrKysrKysrKysrKysrKysKIG1vZHVsZS9zcmZpL3NyZmktNjQvc291cmNlLWluZm8uYm9k eS5zY20gICAgICB8ICA4OCArKysrCiAuLi4vc3JmaS9zcmZpLTY0L3Rlc3QtcnVubmVyLXNp bXBsZS5ib2R5LnNjbSAgfCAxNjggKysrKysrKwogbW9kdWxlL3NyZmkvc3JmaS02NC90ZXN0 LXJ1bm5lci5ib2R5LnNjbSAgICAgIHwgMTY1ICsrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwg ODY4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg bW9kdWxlL3NyZmkvc3JmaS02NC9leGVjdXRpb24uYm9keS5zY20KIGNyZWF0ZSBtb2RlIDEw MDY0NCBtb2R1bGUvc3JmaS9zcmZpLTY0L3NvdXJjZS1pbmZvLmJvZHkuc2NtCiBjcmVhdGUg bW9kZSAxMDA2NDQgbW9kdWxlL3NyZmkvc3JmaS02NC90ZXN0LXJ1bm5lci1zaW1wbGUuYm9k eS5zY20KIGNyZWF0ZSBtb2RlIDEwMDY0NCBtb2R1bGUvc3JmaS9zcmZpLTY0L3Rlc3QtcnVu bmVyLmJvZHkuc2NtCgpkaWZmIC0tZ2l0IGEvbW9kdWxlL01ha2VmaWxlLmFtIGIvbW9kdWxl L01ha2VmaWxlLmFtCmluZGV4IDQxYjc3MDk1Yi4uZTFjNTI2N2U3IDEwMDY0NAotLS0gYS9t b2R1bGUvTWFrZWZpbGUuYW0KKysrIGIvbW9kdWxlL01ha2VmaWxlLmFtCkBAIC0yOSw3ICsy OSwxMSBAQCAkKFZNX1RBUkdFVFMpOiAkKHRvcF9idWlsZGRpcikvbGliZ3VpbGUvdm0tb3Bl cmF0aW9ucy5oCiAKIGljZS05L2Jvb3QtOS5nbzogaWNlLTkvYm9vdC05LnNjbSBpY2UtOS9x dWFzaXN5bnRheC5zY20gaWNlLTkvcjZycy1saWJyYXJpZXMuc2NtIGljZS05L3I3cnMtbGli cmFyaWVzLnNjbSBpY2UtOS9yZWFkLnNjbQogaWNlLTkvbWF0Y2guZ286IGljZS05L21hdGNo LnNjbSBpY2UtOS9tYXRjaC51cHN0cmVhbS5zY20KLXNyZmkvc3JmaS02NC5nbzogc3JmaS9z cmZpLTY0LnNjbSBzcmZpL3NyZmktNjQvdGVzdGluZy5zY20KK3NyZmkvc3JmaS02NC5nbzog c3JmaS9zcmZpLTY0LnNjbQkJXAorICBzcmZpL3NyZmktNjQvZXhlY3V0aW9uLmJvZHkuc2Nt CQlcCisgIHNyZmkvc3JmaS02NC9zb3VyY2UtaW5mby5ib2R5LnNjbQkJXAorICBzcmZpL3Ny ZmktNjQvdGVzdC1ydW5uZXItc2ltcGxlLmJvZHkuc2NtCVwKKyAgc3JmaS9zcmZpLTY0L3Rl c3QtcnVubmVyLmJvZHkuc2NtCiAkKG5vYmFzZV9jY2FjaGVfREFUQSk6IC4uL2Jvb3RzdHJh cC9pY2UtOS9ldmFsLmdvCiAKICMgS2VlcCB0aGlzIHJ1bGUgaW4gc3luYyB3aXRoIHRoYXQg aW4gYGFtL2d1aWxlYycuCkBAIC00MDMsNyArNDA3LDEwIEBAIE5PQ09NUF9TT1VSQ0VTID0J CQkJXAogICBpY2UtOS9yN3JzLWxpYnJhcmllcy5zY20JCQlcCiAgIGljZS05L3F1YXNpc3lu dGF4LnNjbQkJCQlcCiAgIHNyZmkvc3JmaS00Mi9lYy5zY20JCQkJXAotICBzcmZpL3NyZmkt NjQvdGVzdGluZy5zY20JCQlcCisgIHNyZmkvc3JmaS02NC9leGVjdXRpb24uYm9keS5zY20J CVwKKyAgc3JmaS9zcmZpLTY0L3NvdXJjZS1pbmZvLmJvZHkuc2NtCQlcCisgIHNyZmkvc3Jm aS02NC90ZXN0LXJ1bm5lci1zaW1wbGUuYm9keS5zY20JXAorICBzcmZpL3NyZmktNjQvdGVz dC1ydW5uZXIuYm9keS5zY20JCVwKICAgc3JmaS9zcmZpLTY3L2NvbXBhcmUuc2NtCQkJXAog ICBzeXN0ZW0vYmFzZS9sYWxyLnVwc3RyZWFtLnNjbQkJCVwKICAgc3lzdGVtL3JlcGwvZGVz Y3JpYmUuc2NtCQkJXApkaWZmIC0tZ2l0IGEvbW9kdWxlL3NyZmkvc3JmaS02NC5zY20gYi9t b2R1bGUvc3JmaS9zcmZpLTY0LnNjbQppbmRleCA5MjU3MjZmNWMuLmE4Y2IwODg3NCAxMDA2 NDQKLS0tIGEvbW9kdWxlL3NyZmkvc3JmaS02NC5zY20KKysrIGIvbW9kdWxlL3NyZmkvc3Jm aS02NC5zY20KQEAgLTI0LDkgKzI0LDkgQEAKICAgIHRlc3QtbWF0Y2gtbnRoIHRlc3QtbWF0 Y2gtYWxsIHRlc3QtbWF0Y2gtYW55IHRlc3QtbWF0Y2gtbmFtZQogICAgdGVzdC1za2lwIHRl c3QtZXhwZWN0LWZhaWwgdGVzdC1yZWFkLWV2YWwtc3RyaW5nCiAgICB0ZXN0LXJ1bm5lci1n cm91cC1wYXRoIHRlc3QtZ3JvdXAgdGVzdC1ncm91cC13aXRoLWNsZWFudXAKKyAgIHRlc3Qt ZXhpdAogICAgdGVzdC1yZXN1bHQtcmVmIHRlc3QtcmVzdWx0LXNldCEgdGVzdC1yZXN1bHQt Y2xlYXIgdGVzdC1yZXN1bHQtcmVtb3ZlCiAgICB0ZXN0LXJlc3VsdC1raW5kIHRlc3QtcGFz c2VkPwotICAgdGVzdC1sb2ctdG8tZmlsZQogICAgdGVzdC1ydW5uZXI/IHRlc3QtcnVubmVy LXJlc2V0IHRlc3QtcnVubmVyLW51bGwKICAgIHRlc3QtcnVubmVyLXNpbXBsZSB0ZXN0LXJ1 bm5lci1jdXJyZW50IHRlc3QtcnVubmVyLWZhY3RvcnkgdGVzdC1ydW5uZXItZ2V0CiAgICB0 ZXN0LXJ1bm5lci1jcmVhdGUgdGVzdC1ydW5uZXItdGVzdC1uYW1lCkBAIC01Myw0ICs1Mywx NCBAQAogCiAoY29uZC1leHBhbmQtcHJvdmlkZSAoY3VycmVudC1tb2R1bGUpICcoc3JmaS02 NCkpCiAKLShpbmNsdWRlLWZyb20tcGF0aCAic3JmaS9zcmZpLTY0L3Rlc3Rpbmcuc2NtIikK KyhpbXBvcnQKKyAob25seSAocm5ycyBleGNlcHRpb25zKSBndWFyZCkKKyAoc3JmaSBzcmZp LTEpCisgKHNyZmkgc3JmaS05KQorIChzcmZpIHNyZmktMTEpCisgKHNyZmkgc3JmaS0zNSkp CisKKyhpbmNsdWRlLWZyb20tcGF0aCAic3JmaS9zcmZpLTY0L3NvdXJjZS1pbmZvLmJvZHku c2NtIikKKyhpbmNsdWRlLWZyb20tcGF0aCAic3JmaS9zcmZpLTY0L3Rlc3QtcnVubmVyLmJv ZHkuc2NtIikKKyhpbmNsdWRlLWZyb20tcGF0aCAic3JmaS9zcmZpLTY0L3Rlc3QtcnVubmVy LXNpbXBsZS5ib2R5LnNjbSIpCisoaW5jbHVkZS1mcm9tLXBhdGggInNyZmkvc3JmaS02NC9l eGVjdXRpb24uYm9keS5zY20iKQpkaWZmIC0tZ2l0IGEvbW9kdWxlL3NyZmkvc3JmaS02NC9l eGVjdXRpb24uYm9keS5zY20gYi9tb2R1bGUvc3JmaS9zcmZpLTY0L2V4ZWN1dGlvbi5ib2R5 LnNjbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjcxN2Q3NGJmYQot LS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS9zcmZpL3NyZmktNjQvZXhlY3V0aW9uLmJvZHku c2NtCkBAIC0wLDAgKzEsNDI2IEBACis7OyBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYsIDIw MDcsIDIwMTIsIDIwMTMgUGVyIEJvdGhuZXIKKzs7IEFkZGVkICJmdWxsIiBzdXBwb3J0IGZv ciBDaGlja2VuLCBHYXVjaGUsIEd1aWxlIGFuZCBTSVNDLgorOzsgICBBbGV4IFNoaW5uLCBD b3B5cmlnaHQgKGMpIDIwMDUuCis7OyBNb2RpZmllZCBmb3IgU2NoZW1lIFNwaGVyZXMgYnkg w4FsdmFybyBDYXN0cm8tQ2FzdGlsbGEsIENvcHlyaWdodCAoYykgMjAxMi4KKzs7IFN1cHBv cnQgZm9yIEd1aWxlIDIgYnkgTWFyayBIIFdlYXZlciA8bWh3QG5ldHJpcy5vcmc+LCBDb3B5 cmlnaHQgKGMpIDIwMTQuCis7OyBSZWZhY3RvcmVkIGJ5IFRheWxhbiBVbHJpY2ggQmF5xLFy bMSxL0thbW1lciwgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1LgorOzsKKzs7IFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCis7 OyBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j dW1lbnRhdGlvbgorOzsgZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dAorOzsgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksCis7OyBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMKKzs7 IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNv ZnR3YXJlIGlzCis7OyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv d2luZyBjb25kaXRpb25zOgorOzsKKzs7IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCis7OyBpbmNsdWRlZCBpbiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKzs7Cis7 OyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwKKzs7IEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorOzsgTUVSQ0hBTlRBQklMSVRZLCBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKzs7IE5PTklORlJJTkdFTUVOVC4g SU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMKKzs7 IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTgorOzsgQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4KKzs7IENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKKzs7IFNPRlRX QVJFLgorCis7OzsgTm90ZTogdG8gcHJldmVudCBwcm9kdWNpbmcgbWFzc2l2ZSBhbW91bnRz IG9mIGNvZGUgZnJvbSB0aGUgbWFjcm8tZXhwYW5kCis7OzsgcGhhc2UgKHdoaWNoIG1ha2Vz IGNvbXBpbGUgdGltZXMgc3VmZmVyIGFuZCBtYXkgaGl0IGNvZGUgc2l6ZSBsaW1pdHMgaW4g c29tZQorOzs7IHN5c3RlbXMpLCBrZWVwIG1hY3JvIGJvZGllcyBtaW5pbWFsIGJ5IGRlbGVn YXRpbmcgd29yayB0byBwcm9jZWR1cmVzLgorCisMCis7OzsgR3JvdXBpbmcKKworKGRlZmlu ZSAobWF5YmUtaW5zdGFsbC1kZWZhdWx0LXJ1bm5lciBzdWl0ZS1uYW1lKQorICAod2hlbiAo bm90ICh0ZXN0LXJ1bm5lci1jdXJyZW50KSkKKyAgICAobGV0ICgocnVubmVyICh0ZXN0LXJ1 bm5lci1zaW1wbGUpKQorICAgICAgICAgIChsb2ctZmlsZSAoc3RyaW5nLWFwcGVuZCBzdWl0 ZS1uYW1lICIuc3JmaTY0LmxvZyIpKSkKKyAgICAgICgldGVzdC1ydW5uZXItbG9nLWZpbGUh IHJ1bm5lciBsb2ctZmlsZSkKKyAgICAgICh0ZXN0LXJ1bm5lci1jdXJyZW50IHJ1bm5lcikp KSkKKworKGRlZmluZSB0ZXN0LWJlZ2luCisgIChjYXNlLWxhbWJkYQorICAgICgobmFtZSkK KyAgICAgKHRlc3QtYmVnaW4gbmFtZSAjZikpCisgICAgKChuYW1lIGNvdW50KQorICAgICAo bWF5YmUtaW5zdGFsbC1kZWZhdWx0LXJ1bm5lciBuYW1lKQorICAgICAobGV0ICgociAodGVz dC1ydW5uZXItY3VycmVudCkpKQorICAgICAgIChsZXQgKChza2lwLWxpc3QgKCV0ZXN0LXJ1 bm5lci1za2lwLWxpc3QgcikpCisgICAgICAgICAgICAgKHNraXAtc2F2ZSAoJXRlc3QtcnVu bmVyLXNraXAtc2F2ZSByKSkKKyAgICAgICAgICAgICAoZmFpbC1saXN0ICgldGVzdC1ydW5u ZXItZmFpbC1saXN0IHIpKQorICAgICAgICAgICAgIChmYWlsLXNhdmUgKCV0ZXN0LXJ1bm5l ci1mYWlsLXNhdmUgcikpCisgICAgICAgICAgICAgKHRvdGFsLWNvdW50ICgldGVzdC1ydW5u ZXItdG90YWwtY291bnQgcikpCisgICAgICAgICAgICAgKGNvdW50LWxpc3QgKCV0ZXN0LXJ1 bm5lci1jb3VudC1saXN0IHIpKQorICAgICAgICAgICAgIChncm91cC1zdGFjayAodGVzdC1y dW5uZXItZ3JvdXAtc3RhY2sgcikpKQorICAgICAgICAgKCh0ZXN0LXJ1bm5lci1vbi1ncm91 cC1iZWdpbiByKSByIG5hbWUgY291bnQpCisgICAgICAgICAoJXRlc3QtcnVubmVyLXNraXAt c2F2ZSEgciAoY29ucyBza2lwLWxpc3Qgc2tpcC1zYXZlKSkKKyAgICAgICAgICgldGVzdC1y dW5uZXItZmFpbC1zYXZlISByIChjb25zIGZhaWwtbGlzdCBmYWlsLXNhdmUpKQorICAgICAg ICAgKCV0ZXN0LXJ1bm5lci1jb3VudC1saXN0ISByIChjb25zIChjb25zIHRvdGFsLWNvdW50 IGNvdW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv dW50LWxpc3QpKQorICAgICAgICAgKHRlc3QtcnVubmVyLWdyb3VwLXN0YWNrISByIChjb25z IG5hbWUgZ3JvdXAtc3RhY2spKSkpKSkpCisKKyhkZWZpbmUgdGVzdC1lbmQKKyAgKGNhc2Ut bGFtYmRhCisgICAgKCgpCisgICAgICh0ZXN0LWVuZCAjZikpCisgICAgKChuYW1lKQorICAg ICAobGV0KiAoKHIgKHRlc3QtcnVubmVyLWdldCkpCisgICAgICAgICAgICAoZ3JvdXBzICh0 ZXN0LXJ1bm5lci1ncm91cC1zdGFjayByKSkpCisgICAgICAgKHRlc3QtcmVzdWx0LWNsZWFy IHIpCisgICAgICAgKHdoZW4gKG51bGw/IGdyb3VwcykKKyAgICAgICAgIChlcnJvciAidGVz dC1lbmQgbm90IGluIGEgZ3JvdXAiKSkKKyAgICAgICAod2hlbiAoYW5kIG5hbWUgKG5vdCAo ZXF1YWw/IG5hbWUgKGNhciBncm91cHMpKSkpCisgICAgICAgICAoKHRlc3QtcnVubmVyLW9u LWJhZC1lbmQtbmFtZSByKSByIG5hbWUgKGNhciBncm91cHMpKSkKKyAgICAgICAobGV0KiAo KGNvdW50LWxpc3QgKCV0ZXN0LXJ1bm5lci1jb3VudC1saXN0IHIpKQorICAgICAgICAgICAg ICAoZXhwZWN0ZWQtY291bnQgKGNkYXIgY291bnQtbGlzdCkpCisgICAgICAgICAgICAgIChz YXZlZC1jb3VudCAoY2FhciBjb3VudC1saXN0KSkKKyAgICAgICAgICAgICAgKGdyb3VwLWNv dW50ICgtICgldGVzdC1ydW5uZXItdG90YWwtY291bnQgcikgc2F2ZWQtY291bnQpKSkKKyAg ICAgICAgICh3aGVuIChhbmQgZXhwZWN0ZWQtY291bnQKKyAgICAgICAgICAgICAgICAgICAg KG5vdCAoPSBleHBlY3RlZC1jb3VudCBncm91cC1jb3VudCkpKQorICAgICAgICAgICAoKHRl c3QtcnVubmVyLW9uLWJhZC1jb3VudCByKSByIGdyb3VwLWNvdW50IGV4cGVjdGVkLWNvdW50 KSkKKyAgICAgICAgICgodGVzdC1ydW5uZXItb24tZ3JvdXAtZW5kIHIpIHIpCisgICAgICAg ICAodGVzdC1ydW5uZXItZ3JvdXAtc3RhY2shIHIgKGNkciAodGVzdC1ydW5uZXItZ3JvdXAt c3RhY2sgcikpKQorICAgICAgICAgKCV0ZXN0LXJ1bm5lci1za2lwLWxpc3QhIHIgKGNhciAo JXRlc3QtcnVubmVyLXNraXAtc2F2ZSByKSkpCisgICAgICAgICAoJXRlc3QtcnVubmVyLXNr aXAtc2F2ZSEgciAoY2RyICgldGVzdC1ydW5uZXItc2tpcC1zYXZlIHIpKSkKKyAgICAgICAg ICgldGVzdC1ydW5uZXItZmFpbC1saXN0ISByIChjYXIgKCV0ZXN0LXJ1bm5lci1mYWlsLXNh dmUgcikpKQorICAgICAgICAgKCV0ZXN0LXJ1bm5lci1mYWlsLXNhdmUhIHIgKGNkciAoJXRl c3QtcnVubmVyLWZhaWwtc2F2ZSByKSkpCisgICAgICAgICAoJXRlc3QtcnVubmVyLWNvdW50 LWxpc3QhIHIgKGNkciBjb3VudC1saXN0KSkKKyAgICAgICAgICh3aGVuIChudWxsPyAodGVz dC1ydW5uZXItZ3JvdXAtc3RhY2sgcikpCisgICAgICAgICAgICgodGVzdC1ydW5uZXItb24t ZmluYWwgcikgcikpKSkpKSkKKworKGRlZmluZS1zeW50YXggdGVzdC1ncm91cAorICAoc3lu dGF4LXJ1bGVzICgpCisgICAgKChfIDxuYW1lPiA8Ym9keT4gLiA8Ym9keT4qKQorICAgICAo JXRlc3QtZ3JvdXAgPG5hbWU+IChsYW1iZGEgKCkgPGJvZHk+IC4gPGJvZHk+KikpKSkpCisK KyhkZWZpbmUgKCV0ZXN0LWdyb3VwIG5hbWUgdGh1bmspCisgIChiZWdpbgorICAgIChtYXli ZS1pbnN0YWxsLWRlZmF1bHQtcnVubmVyIG5hbWUpCisgICAgKGxldCAoKHJ1bm5lciAodGVz dC1ydW5uZXItZ2V0KSkpCisgICAgICAodGVzdC1yZXN1bHQtY2xlYXIgcnVubmVyKQorICAg ICAgKHRlc3QtcmVzdWx0LXNldCEgcnVubmVyICduYW1lIG5hbWUpCisgICAgICAodW5sZXNz ICh0ZXN0LXNraXA/IHJ1bm5lcikKKyAgICAgICAgKGR5bmFtaWMtd2luZAorICAgICAgICAg IChsYW1iZGEgKCkgKHRlc3QtYmVnaW4gbmFtZSkpCisgICAgICAgICAgdGh1bmsKKyAgICAg ICAgICAobGFtYmRhICgpICh0ZXN0LWVuZCBuYW1lKSkpKSkpKQorCisoZGVmaW5lLXN5bnRh eCB0ZXN0LWdyb3VwLXdpdGgtY2xlYW51cAorICAoc3ludGF4LXJ1bGVzICgpCisgICAgKChf IDxuYW1lPiA8Ym9keT4gPGJvZHk+KiAuLi4gPGNsZWFudXA+KQorICAgICAodGVzdC1ncm91 cCA8bmFtZT4KKyAgICAgICAoZHluYW1pYy13aW5kIChsYW1iZGEgKCkgI2YpCisgICAgICAg ICAgICAgICAgICAgICAobGFtYmRhICgpIDxib2R5PiA8Ym9keT4qIC4uLikKKyAgICAgICAg ICAgICAgICAgICAgIChsYW1iZGEgKCkgPGNsZWFudXA+KSkpKSkpCisKKwwKKzs7OyBTa2lw cGluZywgZXhwZWN0ZWQtZmFpbGluZywgbWF0Y2hpbmcKKworKGRlZmluZSAodGVzdC1za2lw IC4gc3BlY3MpCisgIChsZXQgKChydW5uZXIgKHRlc3QtcnVubmVyLWdldCkpKQorICAgICgl dGVzdC1ydW5uZXItc2tpcC1saXN0IQorICAgICBydW5uZXIgKGNvbnMgKGFwcGx5IHRlc3Qt bWF0Y2gtYWxsIHNwZWNzKQorICAgICAgICAgICAgICAgICAgKCV0ZXN0LXJ1bm5lci1za2lw LWxpc3QgcnVubmVyKSkpKSkKKworKGRlZmluZSAodGVzdC1za2lwPyBydW5uZXIpCisgIChs ZXQgKChydW4tbGlzdCAoJXRlc3QtcnVubmVyLXJ1bi1saXN0IHJ1bm5lcikpCisgICAgICAg IChza2lwLWxpc3QgKCV0ZXN0LXJ1bm5lci1za2lwLWxpc3QgcnVubmVyKSkpCisgICAgKG9y IChhbmQgcnVuLWxpc3QgKG5vdCAoYW55LXByZWQgcnVuLWxpc3QgcnVubmVyKSkpCisgICAg ICAgIChhbnktcHJlZCBza2lwLWxpc3QgcnVubmVyKSkpKQorCisoZGVmaW5lICh0ZXN0LWV4 cGVjdC1mYWlsIC4gc3BlY3MpCisgIChsZXQgKChydW5uZXIgKHRlc3QtcnVubmVyLWdldCkp KQorICAgICgldGVzdC1ydW5uZXItZmFpbC1saXN0IQorICAgICBydW5uZXIgKGNvbnMgKGFw cGx5IHRlc3QtbWF0Y2gtYWxsIHNwZWNzKQorICAgICAgICAgICAgICAgICAgKCV0ZXN0LXJ1 bm5lci1mYWlsLWxpc3QgcnVubmVyKSkpKSkKKworKGRlZmluZSAodGVzdC1tYXRjaC1hbnkg LiBzcGVjcykKKyAgKGxldCAoKHByZWRzIChtYXAgbWFrZS1wcmVkIHNwZWNzKSkpCisgICAg KGxhbWJkYSAocnVubmVyKQorICAgICAgKGFueS1wcmVkIHByZWRzIHJ1bm5lcikpKSkKKwor KGRlZmluZSAodGVzdC1tYXRjaC1hbGwgLiBzcGVjcykKKyAgKGxldCAoKHByZWRzIChtYXAg bWFrZS1wcmVkIHNwZWNzKSkpCisgICAgKGxhbWJkYSAocnVubmVyKQorICAgICAgKGV2ZXJ5 LXByZWQgcHJlZHMgcnVubmVyKSkpKQorCisoZGVmaW5lIChtYWtlLXByZWQgc3BlYykKKyAg KGNvbmQKKyAgICgocHJvY2VkdXJlPyBzcGVjKQorICAgIHNwZWMpCisgICAoKGludGVnZXI/ IHNwZWMpCisgICAgKHRlc3QtbWF0Y2gtbnRoIDEgc3BlYykpCisgICAoKHN0cmluZz8gc3Bl YykKKyAgICAodGVzdC1tYXRjaC1uYW1lIHNwZWMpKQorICAgKGVsc2UKKyAgICAoZXJyb3Ig Im5vdCBhIHZhbGlkIHRlc3Qgc3BlY2lmaWVyIiBzcGVjKSkpKQorCisoZGVmaW5lIHRlc3Qt bWF0Y2gtbnRoCisgIChjYXNlLWxhbWJkYQorICAgICgobikgKHRlc3QtbWF0Y2gtbnRoIG4g MSkpCisgICAgKChuIGNvdW50KQorICAgICAobGV0ICgoaSAwKSkKKyAgICAgICAobGFtYmRh IChydW5uZXIpCisgICAgICAgICAoc2V0ISBpICgrIGkgMSkpCisgICAgICAgICAoYW5kICg+ PSBpIG4pICg8IGkgKCsgbiBjb3VudCkpKSkpKSkpCisKKyhkZWZpbmUgKHRlc3QtbWF0Y2gt bmFtZSBuYW1lKQorICAobGFtYmRhIChydW5uZXIpCisgICAgKGVxdWFsPyBuYW1lICh0ZXN0 LXJ1bm5lci10ZXN0LW5hbWUgcnVubmVyKSkpKQorCis7OzsgQmV3YXJlOiBhbGwgcHJlZGlj YXRlcyBtdXN0IGJlIGNhbGxlZCBiZWNhdXNlIHRoZXkgbWlnaHQgaGF2ZSBzaWRlLWVmZmVj dHM7Cis7Ozsgbm8gZWFybHkgcmV0dXJuaW5nIG9yIGFuZC9vciBzaG9ydC1jaXJjdWl0aW5n IG9mIHByb2NlZHVyZSBjYWxscyBhbGxvd2VkLgorCisoZGVmaW5lIChhbnktcHJlZCBwcmVk cyBvYmplY3QpCisgIChsZXQgbG9vcCAoKG1hdGNoZWQ/ICNmKQorICAgICAgICAgICAgIChw cmVkcyBwcmVkcykpCisgICAgKGlmIChudWxsPyBwcmVkcykKKyAgICAgICAgbWF0Y2hlZD8K KyAgICAgICAgKGxldCAoKHJlc3VsdCAoKGNhciBwcmVkcykgb2JqZWN0KSkpCisgICAgICAg ICAgKGxvb3AgKG9yIG1hdGNoZWQ/IHJlc3VsdCkKKyAgICAgICAgICAgICAgICAoY2RyIHBy ZWRzKSkpKSkpCisKKyhkZWZpbmUgKGV2ZXJ5LXByZWQgcHJlZHMgb2JqZWN0KQorICAobGV0 IGxvb3AgKChmYWlsZWQ/ICNmKQorICAgICAgICAgICAgIChwcmVkcyBwcmVkcykpCisgICAg KGlmIChudWxsPyBwcmVkcykKKyAgICAgICAgKG5vdCBmYWlsZWQ/KQorICAgICAgICAobGV0 ICgocmVzdWx0ICgoY2FyIHByZWRzKSBvYmplY3QpKSkKKyAgICAgICAgICAobG9vcCAob3Ig ZmFpbGVkPyAobm90IHJlc3VsdCkpCisgICAgICAgICAgICAgICAgKGNkciBwcmVkcykpKSkp KQorDAorOzs7IEFjdHVhbCB0ZXN0aW5nCisKKyhkZWZpbmUtc3ludGF4IGZhbHNlLWlmLWVy cm9yCisgIChzeW50YXgtcnVsZXMgKCkKKyAgICAoKF8gPGV4cHJlc3Npb24+IDxydW5uZXI+ KQorICAgICAoZ3VhcmQgKGVycm9yCisgICAgICAgICAgICAgKGVsc2UKKyAgICAgICAgICAg ICAgKHRlc3QtcmVzdWx0LXNldCEgPHJ1bm5lcj4gJ2FjdHVhbC1lcnJvciBlcnJvcikKKyAg ICAgICAgICAgICAgI2YpKQorICAgICAgIDxleHByZXNzaW9uPikpKSkKKworKGRlZmluZSAo dGVzdC1wcmVsdWRlIHNvdXJjZS1pbmZvIHJ1bm5lciBuYW1lIGZvcm0pCisgICh0ZXN0LXJl c3VsdC1jbGVhciBydW5uZXIpCisgIChzZXQtc291cmNlLWluZm8hIHJ1bm5lciBzb3VyY2Ut aW5mbykKKyAgKHdoZW4gbmFtZQorICAgICh0ZXN0LXJlc3VsdC1zZXQhIHJ1bm5lciAnbmFt ZSBuYW1lKSkKKyAgKHRlc3QtcmVzdWx0LXNldCEgcnVubmVyICdzb3VyY2UtZm9ybSBmb3Jt KQorICAobGV0ICgoc2tpcD8gKHRlc3Qtc2tpcD8gcnVubmVyKSkpCisgICAgKGlmIHNraXA/ CisgICAgICAgICh0ZXN0LXJlc3VsdC1zZXQhIHJ1bm5lciAncmVzdWx0LWtpbmQgJ3NraXAp CisgICAgICAgIChsZXQgKChmYWlsLWxpc3QgKCV0ZXN0LXJ1bm5lci1mYWlsLWxpc3QgcnVu bmVyKSkpCisgICAgICAgICAgKHdoZW4gKGFueS1wcmVkIGZhaWwtbGlzdCBydW5uZXIpCisg ICAgICAgICAgICA7OyBGb3IgbGF0ZXIgaW5zcGVjdGlvbiBvbmx5LgorICAgICAgICAgICAg KHRlc3QtcmVzdWx0LXNldCEgcnVubmVyICdyZXN1bHQta2luZCAneGZhaWwpKSkpCisgICAg KCh0ZXN0LXJ1bm5lci1vbi10ZXN0LWJlZ2luIHJ1bm5lcikgcnVubmVyKQorICAgIChub3Qg c2tpcD8pKSkKKworKGRlZmluZSAodGVzdC1wb3N0bHVkZSBydW5uZXIpCisgIChsZXQgKChy ZXN1bHQta2luZCAodGVzdC1yZXN1bHQta2luZCBydW5uZXIpKSkKKyAgICAoY2FzZSByZXN1 bHQta2luZAorICAgICAgKChwYXNzKQorICAgICAgICh0ZXN0LXJ1bm5lci1wYXNzLWNvdW50 ISBydW5uZXIgKCsgMSAodGVzdC1ydW5uZXItcGFzcy1jb3VudCBydW5uZXIpKSkpCisgICAg ICAoKGZhaWwpCisgICAgICAgKHRlc3QtcnVubmVyLWZhaWwtY291bnQhIHJ1bm5lciAoKyAx ICh0ZXN0LXJ1bm5lci1mYWlsLWNvdW50IHJ1bm5lcikpKSkKKyAgICAgICgoeHBhc3MpCisg ICAgICAgKHRlc3QtcnVubmVyLXhwYXNzLWNvdW50ISBydW5uZXIgKCsgMSAodGVzdC1ydW5u ZXIteHBhc3MtY291bnQgcnVubmVyKSkpKQorICAgICAgKCh4ZmFpbCkKKyAgICAgICAodGVz dC1ydW5uZXIteGZhaWwtY291bnQhIHJ1bm5lciAoKyAxICh0ZXN0LXJ1bm5lci14ZmFpbC1j b3VudCBydW5uZXIpKSkpCisgICAgICAoKHNraXApCisgICAgICAgKHRlc3QtcnVubmVyLXNr aXAtY291bnQhIHJ1bm5lciAoKyAxICh0ZXN0LXJ1bm5lci1za2lwLWNvdW50IHJ1bm5lcikp KSkpCisgICAgKCV0ZXN0LXJ1bm5lci10b3RhbC1jb3VudCEgcnVubmVyICgrIDEgKCV0ZXN0 LXJ1bm5lci10b3RhbC1jb3VudCBydW5uZXIpKSkKKyAgICAoKHRlc3QtcnVubmVyLW9uLXRl c3QtZW5kIHJ1bm5lcikgcnVubmVyKSkpCisKKyhkZWZpbmUgKHNldC1yZXN1bHQta2luZCEg cnVubmVyIHBhc3M/KQorICAodGVzdC1yZXN1bHQtc2V0ISBydW5uZXIgJ3Jlc3VsdC1raW5k CisgICAgICAgICAgICAgICAgICAgIChpZiAoZXE/ICh0ZXN0LXJlc3VsdC1raW5kIHJ1bm5l cikgJ3hmYWlsKQorICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHBhc3M/ICd4cGFzcyAn eGZhaWwpCisgICAgICAgICAgICAgICAgICAgICAgICAoaWYgcGFzcz8gJ3Bhc3MgJ2ZhaWwp KSkpCisKKzs7OyBXZSBuZWVkIHRvIHVzZSBzb21lIHRyaWNrZXJ5IHRvIGdldCB0aGUgc291 cmNlIGluZm8gcmlnaHQuICBUaGUgaW1wb3J0YW50Cis7OzsgdGhpbmcgaXMgdG8gcGFzcyBh IHN5bnRheCBvYmplY3QgdGhhdCBpcyBhIHBhaXIgdG8gYHNvdXJjZS1pbmZvJywgYW5kIG1h a2UKKzs7OyBzdXJlIHRoaXMgc3ludGF4IG9iamVjdCBjb21lcyBmcm9tIHVzZXIgY29kZSBh bmQgbm90IGZyb20gb3Vyc2VsdmVzLgorCisoZGVmaW5lLXN5bnRheCB0ZXN0LWFzc2VydAor ICAoc3ludGF4LXJ1bGVzICgpCisgICAgKChfIC4gPHJlc3Q+KQorICAgICAodGVzdC1hc3Nl cnQvc291cmNlLWluZm8gKHNvdXJjZS1pbmZvIDxyZXN0PikgLiA8cmVzdD4pKSkpCisKKyhk ZWZpbmUtc3ludGF4IHRlc3QtYXNzZXJ0L3NvdXJjZS1pbmZvCisgIChzeW50YXgtcnVsZXMg KCkKKyAgICAoKF8gPHNvdXJjZS1pbmZvPiA8ZXhwcj4pCisgICAgICh0ZXN0LWFzc2VydC9z b3VyY2UtaW5mbyA8c291cmNlLWluZm8+ICNmIDxleHByPikpCisgICAgKChfIDxzb3VyY2Ut aW5mbz4gPG5hbWU+IDxleHByPikKKyAgICAgKCV0ZXN0LWFzc2VydCA8c291cmNlLWluZm8+ IDxuYW1lPiAnPGV4cHI+IChsYW1iZGEgKCkgPGV4cHI+KSkpKSkKKworKGRlZmluZSAoJXRl c3QtYXNzZXJ0IHNvdXJjZS1pbmZvIG5hbWUgZm9ybSB0aHVuaykKKyAgKGxldCAoKHJ1bm5l ciAodGVzdC1ydW5uZXItZ2V0KSkpCisgICAgKHdoZW4gKHRlc3QtcHJlbHVkZSBzb3VyY2Ut aW5mbyBydW5uZXIgbmFtZSBmb3JtKQorICAgICAgKGxldCAoKHZhbCAoZmFsc2UtaWYtZXJy b3IgKHRodW5rKSBydW5uZXIpKSkKKyAgICAgICAgKHRlc3QtcmVzdWx0LXNldCEgcnVubmVy ICdhY3R1YWwtdmFsdWUgdmFsKQorICAgICAgICAoc2V0LXJlc3VsdC1raW5kISBydW5uZXIg dmFsKSkpCisgICAgKHRlc3QtcG9zdGx1ZGUgcnVubmVyKSkpCisKKyhkZWZpbmUtc3ludGF4 IHRlc3QtY29tcGFyZQorICAoc3ludGF4LXJ1bGVzICgpCisgICAgKChfIC4gPHJlc3Q+KQor ICAgICAodGVzdC1jb21wYXJlL3NvdXJjZS1pbmZvIChzb3VyY2UtaW5mbyA8cmVzdD4pIC4g PHJlc3Q+KSkpKQorCisoZGVmaW5lLXN5bnRheCB0ZXN0LWNvbXBhcmUvc291cmNlLWluZm8K KyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoXyA8c291cmNlLWluZm8+IDxjb21wYXJlPiA8 ZXhwZWN0ZWQ+IDxleHByPikKKyAgICAgKHRlc3QtY29tcGFyZS9zb3VyY2UtaW5mbyA8c291 cmNlLWluZm8+IDxjb21wYXJlPiAjZiA8ZXhwZWN0ZWQ+IDxleHByPikpCisgICAgKChfIDxz b3VyY2UtaW5mbz4gPGNvbXBhcmU+IDxuYW1lPiA8ZXhwZWN0ZWQ+IDxleHByPikKKyAgICAg KCV0ZXN0LWNvbXBhcmUgPHNvdXJjZS1pbmZvPiA8Y29tcGFyZT4gPG5hbWU+IDxleHBlY3Rl ZD4gJzxleHByPgorICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgpIDxleHByPikpKSkp CisKKyhkZWZpbmUgKCV0ZXN0LWNvbXBhcmUgc291cmNlLWluZm8gY29tcGFyZSBuYW1lIGV4 cGVjdGVkIGZvcm0gdGh1bmspCisgIChsZXQgKChydW5uZXIgKHRlc3QtcnVubmVyLWdldCkp KQorICAgICh3aGVuICh0ZXN0LXByZWx1ZGUgc291cmNlLWluZm8gcnVubmVyIG5hbWUgZm9y bSkKKyAgICAgICh0ZXN0LXJlc3VsdC1zZXQhIHJ1bm5lciAnZXhwZWN0ZWQtdmFsdWUgZXhw ZWN0ZWQpCisgICAgICAobGV0ICgocGFzcz8gKGZhbHNlLWlmLWVycm9yCisgICAgICAgICAg ICAgICAgICAgIChsZXQgKCh2YWwgKHRodW5rKSkpCisgICAgICAgICAgICAgICAgICAgICAg KHRlc3QtcmVzdWx0LXNldCEgcnVubmVyICdhY3R1YWwtdmFsdWUgdmFsKQorICAgICAgICAg ICAgICAgICAgICAgIChjb21wYXJlIGV4cGVjdGVkIHZhbCkpCisgICAgICAgICAgICAgICAg ICAgIHJ1bm5lcikpKQorICAgICAgICAoc2V0LXJlc3VsdC1raW5kISBydW5uZXIgcGFzcz8p KSkKKyAgICAodGVzdC1wb3N0bHVkZSBydW5uZXIpKSkKKworKGRlZmluZS1zeW50YXggdGVz dC1lcXVhbAorICAoc3ludGF4LXJ1bGVzICgpCisgICAgKChfIC4gPHJlc3Q+KQorICAgICAo dGVzdC1jb21wYXJlL3NvdXJjZS1pbmZvIChzb3VyY2UtaW5mbyA8cmVzdD4pIGVxdWFsPyAu IDxyZXN0PikpKSkKKworKGRlZmluZS1zeW50YXggdGVzdC1lcXYKKyAgKHN5bnRheC1ydWxl cyAoKQorICAgICgoXyAuIDxyZXN0PikKKyAgICAgKHRlc3QtY29tcGFyZS9zb3VyY2UtaW5m byAoc291cmNlLWluZm8gPHJlc3Q+KSBlcXY/IC4gPHJlc3Q+KSkpKQorCisoZGVmaW5lLXN5 bnRheCB0ZXN0LWVxCisgIChzeW50YXgtcnVsZXMgKCkKKyAgICAoKF8gLiA8cmVzdD4pCisg ICAgICh0ZXN0LWNvbXBhcmUvc291cmNlLWluZm8gKHNvdXJjZS1pbmZvIDxyZXN0PikgZXE/ IC4gPHJlc3Q+KSkpKQorCisoZGVmaW5lIChhcHByb3g9IG1hcmdpbikKKyAgKGxhbWJkYSAo dmFsdWUgZXhwZWN0ZWQpCisgICAgKGxldCAoKHJ2YWwgKHJlYWwtcGFydCB2YWx1ZSkpCisg ICAgICAgICAgKGl2YWwgKGltYWctcGFydCB2YWx1ZSkpCisgICAgICAgICAgKHJleHAgKHJl YWwtcGFydCBleHBlY3RlZCkpCisgICAgICAgICAgKGlleHAgKGltYWctcGFydCBleHBlY3Rl ZCkpKQorICAgICAgKGFuZCAoPj0gcnZhbCAoLSByZXhwIG1hcmdpbikpCisgICAgICAgICAg ICg+PSBpdmFsICgtIGlleHAgbWFyZ2luKSkKKyAgICAgICAgICAgKDw9IHJ2YWwgKCsgcmV4 cCBtYXJnaW4pKQorICAgICAgICAgICAoPD0gaXZhbCAoKyBpZXhwIG1hcmdpbikpKSkpKQor CisoZGVmaW5lLXN5bnRheCB0ZXN0LWFwcHJveGltYXRlCisgIChzeW50YXgtcnVsZXMgKCkK KyAgICAoKF8gLiA8cmVzdD4pCisgICAgICh0ZXN0LWFwcHJveGltYXRlL3NvdXJjZS1pbmZv IChzb3VyY2UtaW5mbyA8cmVzdD4pIC4gPHJlc3Q+KSkpKQorCisoZGVmaW5lLXN5bnRheCB0 ZXN0LWFwcHJveGltYXRlL3NvdXJjZS1pbmZvCisgIChzeW50YXgtcnVsZXMgKCkKKyAgICAo KF8gPHNvdXJjZS1pbmZvPiA8ZXhwZWN0ZWQ+IDxleHByPiA8ZXJyb3ItbWFyZ2luPikKKyAg ICAgKHRlc3QtYXBwcm94aW1hdGUvc291cmNlLWluZm8KKyAgICAgIDxzb3VyY2UtaW5mbz4g I2YgPGV4cGVjdGVkPiA8ZXhwcj4gPGVycm9yLW1hcmdpbj4pKQorICAgICgoXyA8c291cmNl LWluZm8+IDxuYW1lPiA8ZXhwZWN0ZWQ+IDxleHByPiA8ZXJyb3ItbWFyZ2luPikKKyAgICAg KHRlc3QtY29tcGFyZS9zb3VyY2UtaW5mbworICAgICAgPHNvdXJjZS1pbmZvPiAoYXBwcm94 PSA8ZXJyb3ItbWFyZ2luPikgPG5hbWU+IDxleHBlY3RlZD4gPGV4cHI+KSkpKQorCisoZGVm aW5lIChlcnJvci1tYXRjaGVzPyBlcnJvciB0eXBlKQorICAoY29uZAorICAgKChlcT8gdHlw ZSAjdCkKKyAgICAjdCkKKyAgICgoY29uZGl0aW9uLXR5cGU/IHR5cGUpCisgICAgKGFuZCAo Y29uZGl0aW9uPyBlcnJvcikgKGNvbmRpdGlvbi1oYXMtdHlwZT8gZXJyb3IgdHlwZSkpKQor ICAgKChwcm9jZWR1cmU/IHR5cGUpCisgICAgKHR5cGUgZXJyb3IpKQorICAgKGVsc2UKKyAg ICAobGV0ICgocnVubmVyICh0ZXN0LXJ1bm5lci1nZXQpKSkKKyAgICAgICgoJXRlc3QtcnVu bmVyLW9uLWJhZC1lcnJvci10eXBlIHJ1bm5lcikgcnVubmVyIHR5cGUgZXJyb3IpKQorICAg ICNmKSkpCisKKyhkZWZpbmUtc3ludGF4IHRlc3QtZXJyb3IKKyAgKHN5bnRheC1ydWxlcyAo KQorICAgICgoXyAuIDxyZXN0PikKKyAgICAgKHRlc3QtZXJyb3Ivc291cmNlLWluZm8gKHNv dXJjZS1pbmZvIDxyZXN0PikgLiA8cmVzdD4pKSkpCisKKyhkZWZpbmUtc3ludGF4IHRlc3Qt ZXJyb3Ivc291cmNlLWluZm8KKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoXyA8c291cmNl LWluZm8+IDxleHByPikKKyAgICAgKHRlc3QtZXJyb3Ivc291cmNlLWluZm8gPHNvdXJjZS1p bmZvPiAjZiAjdCA8ZXhwcj4pKQorICAgICgoXyA8c291cmNlLWluZm8+IDxlcnJvci10eXBl PiA8ZXhwcj4pCisgICAgICh0ZXN0LWVycm9yL3NvdXJjZS1pbmZvIDxzb3VyY2UtaW5mbz4g I2YgPGVycm9yLXR5cGU+IDxleHByPikpCisgICAgKChfIDxzb3VyY2UtaW5mbz4gPG5hbWU+ IDxlcnJvci10eXBlPiA8ZXhwcj4pCisgICAgICgldGVzdC1lcnJvciA8c291cmNlLWluZm8+ IDxuYW1lPiA8ZXJyb3ItdHlwZT4gJzxleHByPgorICAgICAgICAgICAgICAgICAgKGxhbWJk YSAoKSA8ZXhwcj4pKSkpKQorCisoZGVmaW5lICgldGVzdC1lcnJvciBzb3VyY2UtaW5mbyBu YW1lIGVycm9yLXR5cGUgZm9ybSB0aHVuaykKKyAgKGxldCAoKHJ1bm5lciAodGVzdC1ydW5u ZXItZ2V0KSkpCisgICAgKHdoZW4gKHRlc3QtcHJlbHVkZSBzb3VyY2UtaW5mbyBydW5uZXIg bmFtZSBmb3JtKQorICAgICAgKHRlc3QtcmVzdWx0LXNldCEgcnVubmVyICdleHBlY3RlZC1l cnJvciBlcnJvci10eXBlKQorICAgICAgKGxldCAoKHBhc3M/IChndWFyZCAoZXJyb3IgKGVs c2UgKHRlc3QtcmVzdWx0LXNldCEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBydW5uZXIgJ2FjdHVhbC1lcnJvciBlcnJvcikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChlcnJvci1tYXRjaGVzPyBlcnJvciBlcnJvci10eXBl KSkpCisgICAgICAgICAgICAgICAgICAgICAobGV0ICgodmFsICh0aHVuaykpKQorICAgICAg ICAgICAgICAgICAgICAgICAodGVzdC1yZXN1bHQtc2V0ISBydW5uZXIgJ2FjdHVhbC12YWx1 ZSB2YWwpKQorICAgICAgICAgICAgICAgICAgICAgI2YpKSkKKyAgICAgICAgKHNldC1yZXN1 bHQta2luZCEgcnVubmVyIHBhc3M/KSkpCisgICAgKHRlc3QtcG9zdGx1ZGUgcnVubmVyKSkp CisKKyhkZWZpbmUgKGRlZmF1bHQtbW9kdWxlKQorICAoY29uZC1leHBhbmQKKyAgIChndWls ZSAoY3VycmVudC1tb2R1bGUpKQorICAgKGVsc2UgI2YpKSkKKworKGRlZmluZSB0ZXN0LXJl YWQtZXZhbC1zdHJpbmcKKyAgKGNhc2UtbGFtYmRhCisgICAgKChzdHJpbmcpCisgICAgICh0 ZXN0LXJlYWQtZXZhbC1zdHJpbmcgc3RyaW5nIChkZWZhdWx0LW1vZHVsZSkpKQorICAgICgo c3RyaW5nIGVudikKKyAgICAgKGxldCogKChwb3J0IChvcGVuLWlucHV0LXN0cmluZyBzdHJp bmcpKQorICAgICAgICAgICAgKGZvcm0gKHJlYWQgcG9ydCkpKQorICAgICAgIChpZiAoZW9m LW9iamVjdD8gKHJlYWQtY2hhciBwb3J0KSkKKyAgICAgICAgICAgKGlmIGVudgorICAgICAg ICAgICAgICAgKGV2YWwgZm9ybSBlbnYpCisgICAgICAgICAgICAgICAoZXZhbCBmb3JtKSkK KyAgICAgICAgICAgKGVycm9yICIobm90IGF0IGVvZikiKSkpKSkpCisKKwwKKzs7OyBUZXN0 IHJ1bm5lciBjb250cm9sIGZsb3cKKworKGRlZmluZS1zeW50YXggdGVzdC13aXRoLXJ1bm5l cgorICAoc3ludGF4LXJ1bGVzICgpCisgICAgKChfIDxydW5uZXI+IDxib2R5PiAuIDxib2R5 PiopCisgICAgIChsZXQgKChzYXZlZC1ydW5uZXIgKHRlc3QtcnVubmVyLWN1cnJlbnQpKSkK KyAgICAgICAoZHluYW1pYy13aW5kCisgICAgICAgICAobGFtYmRhICgpICh0ZXN0LXJ1bm5l ci1jdXJyZW50IDxydW5uZXI+KSkKKyAgICAgICAgIChsYW1iZGEgKCkgPGJvZHk+IC4gPGJv ZHk+KikKKyAgICAgICAgIChsYW1iZGEgKCkgKHRlc3QtcnVubmVyLWN1cnJlbnQgc2F2ZWQt cnVubmVyKSkpKSkpKQorCisoZGVmaW5lICh0ZXN0LWFwcGx5IGZpcnN0IC4gcmVzdCkKKyAg KGxldCAoKHJ1bm5lciAoaWYgKHRlc3QtcnVubmVyPyBmaXJzdCkKKyAgICAgICAgICAgICAg ICAgICAgZmlyc3QKKyAgICAgICAgICAgICAgICAgICAgKG9yICh0ZXN0LXJ1bm5lci1jdXJy ZW50KSAodGVzdC1ydW5uZXItY3JlYXRlKSkpKQorICAgICAgICAocnVuLWxpc3QgKGlmICh0 ZXN0LXJ1bm5lcj8gZmlyc3QpCisgICAgICAgICAgICAgICAgICAgICAgKGRyb3AtcmlnaHQg cmVzdCAxKQorICAgICAgICAgICAgICAgICAgICAgIChjb25zIGZpcnN0IChkcm9wLXJpZ2h0 IHJlc3QgMSkpKSkKKyAgICAgICAgKHByb2MgKGxhc3QgcmVzdCkpKQorICAgICh0ZXN0LXdp dGgtcnVubmVyIHJ1bm5lcgorICAgICAgKGxldCAoKHNhdmVkLXJ1bi1saXN0ICgldGVzdC1y dW5uZXItcnVuLWxpc3QgcnVubmVyKSkpCisgICAgICAgICgldGVzdC1ydW5uZXItcnVuLWxp c3QhIHJ1bm5lciBydW4tbGlzdCkKKyAgICAgICAgKHByb2MpCisgICAgICAgICgldGVzdC1y dW5uZXItcnVuLWxpc3QhIHJ1bm5lciBzYXZlZC1ydW4tbGlzdCkpKSkpCisKKwwKKzs7OyBJ bmRpY2F0ZSBzdWNjZXNzL2ZhaWx1cmUgdmlhIGV4aXQgc3RhdHVzCisKKyhkZWZpbmUgKHRl c3QtZXhpdCkKKyAgKGxldCAoKHJ1bm5lciAodGVzdC1ydW5uZXItY3VycmVudCkpKQorICAg IChpZiAoYW5kICh6ZXJvPyAodGVzdC1ydW5uZXIteHBhc3MtY291bnQgcnVubmVyKSkKKyAg ICAgICAgICAgICAoemVybz8gKHRlc3QtcnVubmVyLWZhaWwtY291bnQgcnVubmVyKSkpCisg ICAgICAgIChleGl0IDApCisgICAgICAgIChleGl0IDEpKSkpCisKKzs7OyBleGVjdXRpb24u c2NtIGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEvbW9kdWxlL3NyZmkvc3JmaS02NC9zb3VyY2Ut aW5mby5ib2R5LnNjbSBiL21vZHVsZS9zcmZpL3NyZmktNjQvc291cmNlLWluZm8uYm9keS5z Y20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi42ODQ4NzM1ODcKLS0t IC9kZXYvbnVsbAorKysgYi9tb2R1bGUvc3JmaS9zcmZpLTY0L3NvdXJjZS1pbmZvLmJvZHku c2NtCkBAIC0wLDAgKzEsODggQEAKKzs7IENvcHlyaWdodCAoYykgMjAxNSBUYXlsYW4gVWxy aWNoIEJhecSxcmzEsS9LYW1tZXIgPHRheWxhbmJheWlybGlAZ21haWwuY29tPgorOzsKKzs7 IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg cGVyc29uCis7OyBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j aWF0ZWQgZG9jdW1lbnRhdGlvbgorOzsgZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dAorOzsgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksCis7OyBtb2RpZnks IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBj b3BpZXMKKzs7IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo b20gdGhlIFNvZnR3YXJlIGlzCis7OyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorOzsKKzs7IFRoZSBhYm92ZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCis7OyBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy ZS4KKzs7Cis7OyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwKKzs7IEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5H IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorOzsgTUVSQ0hBTlRBQklM SVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKzs7IE5PTklORlJJ TkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP TERFUlMKKzs7IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBBTgorOzsgQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4KKzs7IENPTk5FQ1RJT04g V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUK Kzs7IFNPRlRXQVJFLgorCis7OzsgSW4gc29tZSBzeXN0ZW1zLCBhIG1hY3JvIHVzZSBsaWtl IChzb3VyY2UtaW5mbyAuLi4pLCB0aGF0IHJlc2lkZXMgaW4gYQorOzs7IHN5bnRheC1ydWxl cyBtYWNybyBib2R5LCBmaXJzdCBnZXRzIGluc2VydGVkIGludG8gdGhlIHBsYWNlIHdoZXJl IHRoZQorOzs7IHN5bnRheC1ydWxlcyBtYWNybyB3YXMgdXNlZCwgYW5kIHRoZW4gdGhlIHRy YW5zZm9ybWVyIG9mICdzb3VyY2UtaW5mbycgaXMKKzs7OyBjYWxsZWQgd2l0aCBhIHN5bnRh eCBvYmplY3QgdGhhdCBoYXMgdGhlIHNvdXJjZSBsb2NhdGlvbiBpbmZvcm1hdGlvbiBvZiB0 aGF0Cis7OzsgcG9zaXRpb24uICBUaGF0IHdvcmtzIGZpbmUgd2hlbiB0aGUgdXNlciBjYWxs cyBlLmcuICh0ZXN0LWFzc2VydCAuLi4pLCB3aG9zZQorOzs7IGJvZHkgY29udGFpbnMgKHNv dXJjZS1pbmZvIC4uLik7IHRoZSB1c2VyIGdldHMgdGhlIHNvdXJjZSBsb2NhdGlvbiBvZiB0 aGUKKzs7OyAodGVzdC1hc3NlcnQgLi4uKSBjYWxsIGFzIGludGVuZGVkLCBhbmQgbm90IHRo ZSBzb3VyY2UgbG9jYXRpb24gb2YgdGhlIHJlYWwKKzs7OyAoc291cmNlLWluZm8gLi4uKSBj YWxsLgorCis7OzsgSW4gb3RoZXIgc3lzdGVtcywgKmZpcnN0KiB0aGUgKHNvdXJjZS1pbmZv IC4uLikgaXMgcHJvY2Vzc2VkIHRvIGdldCBpdHMgcmVhbAorOzs7IHBvc2l0aW9uLCB3aGlj aCBpcyB3aXRoaW4gdGhlIGJvZHkgb2YgYSBzeW50YXgtcnVsZXMgbWFjcm8gbGlrZSB0ZXN0 LWFzc2VydCwKKzs7OyBzbyBubyBtYXR0ZXIgd2hlcmUgdGhlIHVzZXIgY2FsbHMgKHRlc3Qt YXNzZXJ0IC4uLiksIHRoZXkgZ2V0IHNvdXJjZQorOzs7IGxvY2F0aW9uIGluZm9ybWF0aW9u IG9mIHdoZXJlIHdlIGRlZmluZWQgdGVzdC1hc3NlcnQgd2l0aCB0aGUgY2FsbCB0bworOzs7 IChzb3VyY2UtaW5mbyAuLi4pIGluIGl0cyBib2R5LiAgVGhhdCdzIGFyZ3VhYmx5IG1vcmUg Y29ycmVjdCBiZWhhdmlvciwKKzs7OyBhbHRob3VnaCBpbiB0aGlzIGNhc2UgaXQgbWFrZXMg b3VyIGpvYiBhIGJpdCBoYXJkZXI7IHdlIG5lZWQgdG8gZ2V0IHRoZQorOzs7IHNvdXJjZSBs b2NhdGlvbiBmcm9tIGFuIGFyZ3VtZW50IHRvICdzb3VyY2UtaW5mbycgaW5zdGVhZC4KKwor KGRlZmluZSAoY2Fub25pY2FsLXN5bnRheCBmb3JtIGFyZykKKyAgKGNvbmQtZXhwYW5kCisg ICAoa2F3YSBhcmcpCisgICAoZ3VpbGUtMiBmb3JtKQorICAgKGVsc2UgI2YpKSkKKworKGNv bmQtZXhwYW5kCisgKChvciBrYXdhIGd1aWxlLTIpCisgIChkZWZpbmUtc3ludGF4IHNvdXJj ZS1pbmZvCisgICAgKGxhbWJkYSAoc3R4KQorICAgICAgKHN5bnRheC1jYXNlIHN0eCAoKQor ICAgICAgICAoKF8gPHg+KQorICAgICAgICAgKGxldCogKChzdHggKGNhbm9uaWNhbC1zeW50 YXggc3R4IChzeW50YXggPHg+KSkpCisgICAgICAgICAgICAgICAgKGZpbGUgKHN5bnRheC1z b3VyY2UtZmlsZSBzdHgpKQorICAgICAgICAgICAgICAgIChsaW5lIChzeW50YXgtc291cmNl LWxpbmUgc3R4KSkpCisgICAgICAgICAgIChxdWFzaXN5bnRheAorICAgICAgICAgICAgKGNv bnMgKHVuc3ludGF4IGZpbGUpICh1bnN5bnRheCBsaW5lKSkpKSkpKSkpCisgKGVsc2UKKyAg KGRlZmluZS1zeW50YXggc291cmNlLWluZm8KKyAgICAoc3ludGF4LXJ1bGVzICgpCisgICAg ICAoKF8gPHg+KQorICAgICAgICNmKSkpKSkKKworKGRlZmluZSAoc3ludGF4LXNvdXJjZS1m aWxlIHN0eCkKKyAgKGNvbmQtZXhwYW5kCisgICAoa2F3YQorICAgIChzeW50YXgtc291cmNl IHN0eCkpCisgICAoZ3VpbGUtMgorICAgIChsZXQgKChzb3VyY2UgKHN5bnRheC1zb3VyY2Ug c3R4KSkpCisgICAgICAoYW5kIHNvdXJjZSAoYXNzcS1yZWYgc291cmNlICdmaWxlbmFtZSkp KSkKKyAgIChlbHNlCisgICAgI2YpKSkKKworKGRlZmluZSAoc3ludGF4LXNvdXJjZS1saW5l IHN0eCkKKyAgKGNvbmQtZXhwYW5kCisgICAoa2F3YQorICAgIChzeW50YXgtbGluZSBzdHgp KQorICAgKGd1aWxlLTIKKyAgICAobGV0ICgoc291cmNlIChzeW50YXgtc291cmNlIHN0eCkp KQorICAgICAgKGFuZCBzb3VyY2UgKGFzc3EtcmVmIHNvdXJjZSAnbGluZSkpKSkKKyAgIChl bHNlCisgICAgI2YpKSkKKworKGRlZmluZSAoc2V0LXNvdXJjZS1pbmZvISBydW5uZXIgc291 cmNlLWluZm8pCisgICh3aGVuIHNvdXJjZS1pbmZvCisgICAgKHRlc3QtcmVzdWx0LXNldCEg cnVubmVyICdzb3VyY2UtZmlsZSAoY2FyIHNvdXJjZS1pbmZvKSkKKyAgICAodGVzdC1yZXN1 bHQtc2V0ISBydW5uZXIgJ3NvdXJjZS1saW5lIChjZHIgc291cmNlLWluZm8pKSkpCisKKzs7 OyBzb3VyY2UtaW5mby5ib2R5LnNjbSBlbmRzIGhlcmUKZGlmZiAtLWdpdCBhL21vZHVsZS9z cmZpL3NyZmktNjQvdGVzdC1ydW5uZXItc2ltcGxlLmJvZHkuc2NtIGIvbW9kdWxlL3NyZmkv c3JmaS02NC90ZXN0LXJ1bm5lci1zaW1wbGUuYm9keS5zY20KbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwLi5mN2NlMmUzODMKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1 bGUvc3JmaS9zcmZpLTY0L3Rlc3QtcnVubmVyLXNpbXBsZS5ib2R5LnNjbQpAQCAtMCwwICsx LDE2OCBAQAorOzsgQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDEyLCAyMDEz IFBlciBCb3RobmVyCis7OyBBZGRlZCAiZnVsbCIgc3VwcG9ydCBmb3IgQ2hpY2tlbiwgR2F1 Y2hlLCBHdWlsZSBhbmQgU0lTQy4KKzs7ICAgQWxleCBTaGlubiwgQ29weXJpZ2h0IChjKSAy MDA1LgorOzsgTW9kaWZpZWQgZm9yIFNjaGVtZSBTcGhlcmVzIGJ5IMOBbHZhcm8gQ2FzdHJv LUNhc3RpbGxhLCBDb3B5cmlnaHQgKGMpIDIwMTIuCis7OyBTdXBwb3J0IGZvciBHdWlsZSAy IGJ5IE1hcmsgSCBXZWF2ZXIgPG1od0BuZXRyaXMub3JnPiwgQ29weXJpZ2h0IChjKSAyMDE0 LgorOzsgUmVmYWN0b3JlZCBieSBUYXlsYW4gVWxyaWNoIEJhecSxcmzEsS9LYW1tZXIsIENv cHlyaWdodCAoYykgMjAxNCwgMjAxNS4KKzs7Cis7OyBQZXJtaXNzaW9uIGlzIGhlcmVieSBn cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbgorOzsgb2J0YWluaW5nIGEg Y29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24KKzs7 IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQKKzs7IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSBy aWdodHMgdG8gdXNlLCBjb3B5LAorOzsgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp YnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzCis7OyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworOzsg ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKzs7Cis7OyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSBzaGFsbCBiZQorOzsgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCis7OworOzsgVEhFIFNPRlRXQVJF IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCis7 OyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF IFdBUlJBTlRJRVMgT0YKKzs7IE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UgQU5ECis7OyBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNI QUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTCis7OyBCRSBMSUFCTEUgRk9S IEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4K Kzs7IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJP TSwgT1VUIE9GIE9SIElOCis7OyBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI RSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCis7OyBTT0ZUV0FSRS4KKworOzs7IEhl bHBlcnMKKworKGRlZmluZSAoc3RyaW5nLWpvaW4gc3RyaW5ncyBkZWxpbWl0ZXIpCisgIChp ZiAobnVsbD8gc3RyaW5ncykKKyAgICAgICIiCisgICAgICAobGV0IGxvb3AgKChyZXN1bHQg KGNhciBzdHJpbmdzKSkKKyAgICAgICAgICAgICAgICAgKHJlc3QgKGNkciBzdHJpbmdzKSkp CisgICAgICAgIChpZiAobnVsbD8gcmVzdCkKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAg ICAgICAgKGxvb3AgKHN0cmluZy1hcHBlbmQgcmVzdWx0IGRlbGltaXRlciAoY2FyIHJlc3Qp KQorICAgICAgICAgICAgICAgICAgKGNkciByZXN0KSkpKSkpCisKKyhkZWZpbmUgKHRydW5j YXRlLXN0cmluZyBzdHJpbmcgbGVuZ3RoKQorICAoZGVmaW5lIChuZXdsaW5lLT5zcGFjZSBj KSAoaWYgKGNoYXI9PyAjXG5ld2xpbmUgYykgI1xzcGFjZSBjKSkKKyAgKGxldCogKChzdHJp bmcgKHN0cmluZy1tYXAgbmV3bGluZS0+c3BhY2Ugc3RyaW5nKSkKKyAgICAgICAgIChmaWxs ICIuLi4iKQorICAgICAgICAgKGZpbGwtbGVuIChzdHJpbmctbGVuZ3RoIGZpbGwpKQorICAg ICAgICAgKHN0cmluZy1sZW4gKHN0cmluZy1sZW5ndGggc3RyaW5nKSkpCisgICAgKGlmICg8 PSBzdHJpbmctbGVuICgrIGxlbmd0aCBmaWxsLWxlbikpCisgICAgICAgIHN0cmluZworICAg ICAgICAobGV0LXZhbHVlcyAoKChxIHIpIChmbG9vci8gbGVuZ3RoIDQpKSkKKyAgICAgICAg ICA7OyBMZWZ0IHBhcnQgZ2V0cyAzLzQgcGx1cyB0aGUgcmVtYWluZGVyLgorICAgICAgICAg IChsZXQgKChsZWZ0LWVuZCAoKyAoKiBxIDMpIHIpKQorICAgICAgICAgICAgICAgIChyaWdo dC1zdGFydCAoLSBzdHJpbmctbGVuIHEpKSkKKyAgICAgICAgICAgIChzdHJpbmctYXBwZW5k IChzdWJzdHJpbmcgc3RyaW5nIDAgbGVmdC1lbmQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBmaWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Vic3RyaW5nIHN0cmlu ZyByaWdodC1zdGFydCBzdHJpbmctbGVuKSkpKSkpKQorCisoZGVmaW5lIChwcmludCBydW5u ZXIgZm9ybWF0LXN0cmluZyAuIGFyZ3MpCisgIChhcHBseSBmb3JtYXQgI3QgZm9ybWF0LXN0 cmluZyBhcmdzKQorICAobGV0ICgocG9ydCAoJXRlc3QtcnVubmVyLWxvZy1wb3J0IHJ1bm5l cikpKQorICAgICh3aGVuIHBvcnQKKyAgICAgIChhcHBseSBmb3JtYXQgcG9ydCBmb3JtYXQt c3RyaW5nIGFyZ3MpKSkpCisKKzs7OyBNYWluCisKKyhkZWZpbmUgKHRlc3QtcnVubmVyLXNp bXBsZSkKKyAgKGxldCAoKHJ1bm5lciAodGVzdC1ydW5uZXItbnVsbCkpKQorICAgICh0ZXN0 LXJ1bm5lci1yZXNldCBydW5uZXIpCisgICAgKHRlc3QtcnVubmVyLW9uLWdyb3VwLWJlZ2lu ISAgICAgcnVubmVyIHRlc3Qtb24tZ3JvdXAtYmVnaW4tc2ltcGxlKQorICAgICh0ZXN0LXJ1 bm5lci1vbi1ncm91cC1lbmQhICAgICAgIHJ1bm5lciB0ZXN0LW9uLWdyb3VwLWVuZC1zaW1w bGUpCisgICAgKHRlc3QtcnVubmVyLW9uLWZpbmFsISAgICAgICAgICAgcnVubmVyIHRlc3Qt b24tZmluYWwtc2ltcGxlKQorICAgICh0ZXN0LXJ1bm5lci1vbi10ZXN0LWJlZ2luISAgICAg IHJ1bm5lciB0ZXN0LW9uLXRlc3QtYmVnaW4tc2ltcGxlKQorICAgICh0ZXN0LXJ1bm5lci1v bi10ZXN0LWVuZCEgICAgICAgIHJ1bm5lciB0ZXN0LW9uLXRlc3QtZW5kLXNpbXBsZSkKKyAg ICAodGVzdC1ydW5uZXItb24tYmFkLWNvdW50ISAgICAgICBydW5uZXIgdGVzdC1vbi1iYWQt Y291bnQtc2ltcGxlKQorICAgICh0ZXN0LXJ1bm5lci1vbi1iYWQtZW5kLW5hbWUhICAgIHJ1 bm5lciB0ZXN0LW9uLWJhZC1lbmQtbmFtZS1zaW1wbGUpCisgICAgKCV0ZXN0LXJ1bm5lci1v bi1iYWQtZXJyb3ItdHlwZSEgcnVubmVyIG9uLWJhZC1lcnJvci10eXBlKQorICAgIHJ1bm5l cikpCisKKyh3aGVuIChub3QgKHRlc3QtcnVubmVyLWZhY3RvcnkpKQorICAodGVzdC1ydW5u ZXItZmFjdG9yeSB0ZXN0LXJ1bm5lci1zaW1wbGUpKQorCisoZGVmaW5lICh0ZXN0LW9uLWdy b3VwLWJlZ2luLXNpbXBsZSBydW5uZXIgbmFtZSBjb3VudCkKKyAgKHdoZW4gKG51bGw/ICh0 ZXN0LXJ1bm5lci1ncm91cC1zdGFjayBydW5uZXIpKQorICAgIChtYXliZS1zdGFydC1sb2dn aW5nIHJ1bm5lcikKKyAgICAocHJpbnQgcnVubmVyICJUZXN0IHN1aXRlIGJlZ2luOiB+YX4l IiBuYW1lKSkpCisKKyhkZWZpbmUgKHRlc3Qtb24tZ3JvdXAtZW5kLXNpbXBsZSBydW5uZXIp CisgIChsZXQgKChuYW1lIChjYXIgKHRlc3QtcnVubmVyLWdyb3VwLXN0YWNrIHJ1bm5lcikp KSkKKyAgICAod2hlbiAoPSAxIChsZW5ndGggKHRlc3QtcnVubmVyLWdyb3VwLXN0YWNrIHJ1 bm5lcikpKQorICAgICAgKHByaW50IHJ1bm5lciAiVGVzdCBzdWl0ZSBlbmQ6IH5hfiUiIG5h bWUpKSkpCisKKyhkZWZpbmUgKHRlc3Qtb24tZmluYWwtc2ltcGxlIHJ1bm5lcikKKyAgKHBy aW50IHJ1bm5lciAiUGFzc2VzOiAgICAgICAgICAgIH5hXG4iICh0ZXN0LXJ1bm5lci1wYXNz LWNvdW50IHJ1bm5lcikpCisgIChwcmludCBydW5uZXIgIkV4cGVjdGVkIGZhaWx1cmVzOiB+ YVxuIiAodGVzdC1ydW5uZXIteGZhaWwtY291bnQgcnVubmVyKSkKKyAgKHByaW50IHJ1bm5l ciAiRmFpbHVyZXM6ICAgICAgICAgIH5hXG4iICh0ZXN0LXJ1bm5lci1mYWlsLWNvdW50IHJ1 bm5lcikpCisgIChwcmludCBydW5uZXIgIlVuZXhwZWN0ZWQgcGFzc2VzOiB+YVxuIiAodGVz dC1ydW5uZXIteHBhc3MtY291bnQgcnVubmVyKSkKKyAgKHByaW50IHJ1bm5lciAiU2tpcHBl ZCB0ZXN0czogICAgIH5hfiUiICh0ZXN0LXJ1bm5lci1za2lwLWNvdW50IHJ1bm5lcikpCisg IChtYXliZS1maW5pc2gtbG9nZ2luZyBydW5uZXIpKQorCisoZGVmaW5lIChtYXliZS1zdGFy dC1sb2dnaW5nIHJ1bm5lcikKKyAgKGxldCAoKGxvZy1maWxlICgldGVzdC1ydW5uZXItbG9n LWZpbGUgcnVubmVyKSkpCisgICAgKHdoZW4gbG9nLWZpbGUKKyAgICAgIDs7IFRoZSBwb3Nz aWJsZSByYWNlLWNvbmRpdGlvbiBoZXJlIGRvZXNuJ3QgYm90aGVyIHVzLgorICAgICAgKHdo ZW4gKGZpbGUtZXhpc3RzPyBsb2ctZmlsZSkKKyAgICAgICAgKGRlbGV0ZS1maWxlIGxvZy1m aWxlKSkKKyAgICAgICgldGVzdC1ydW5uZXItbG9nLXBvcnQhIHJ1bm5lciAob3Blbi1vdXRw dXQtZmlsZSBsb2ctZmlsZSkpCisgICAgICAocHJpbnQgcnVubmVyICJXcml0aW5nIGxvZyBm aWxlOiB+YX4lIiBsb2ctZmlsZSkpKSkKKworKGRlZmluZSAobWF5YmUtZmluaXNoLWxvZ2dp bmcgcnVubmVyKQorICAobGV0ICgobG9nLWZpbGUgKCV0ZXN0LXJ1bm5lci1sb2ctZmlsZSBy dW5uZXIpKSkKKyAgICAod2hlbiBsb2ctZmlsZQorICAgICAgKHByaW50IHJ1bm5lciAiV3Jv dGUgbG9nIGZpbGU6IH5hfiUiIGxvZy1maWxlKQorICAgICAgKGNsb3NlLW91dHB1dC1wb3J0 ICgldGVzdC1ydW5uZXItbG9nLXBvcnQgcnVubmVyKSkpKSkKKworKGRlZmluZSAodGVzdC1v bi10ZXN0LWJlZ2luLXNpbXBsZSBydW5uZXIpCisgICh2YWx1ZXMpKQorCisoZGVmaW5lICh0 ZXN0LW9uLXRlc3QtZW5kLXNpbXBsZSBydW5uZXIpCisgIChsZXQqICgocmVzdWx0LWtpbmQg KHRlc3QtcmVzdWx0LWtpbmQgcnVubmVyKSkKKyAgICAgICAgIChyZXN1bHQta2luZC1uYW1l IChjYXNlIHJlc3VsdC1raW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFz cykgIlBBU1MiKSAoKGZhaWwpICJGQUlMIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKCh4cGFzcykgIlhQQVNTIikgKCh4ZmFpbCkgIlhGQUlMIikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKChza2lwKSAiU0tJUCIpKSkKKyAgICAgICAgIChuYW1lIChsZXQg KChuYW1lICh0ZXN0LXJ1bm5lci10ZXN0LW5hbWUgcnVubmVyKSkpCisgICAgICAgICAgICAg ICAgIChpZiAoc3RyaW5nPT8gIiIgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICh0cnVu Y2F0ZS1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICNmICJ+YSIgKHRl c3QtcmVzdWx0LXJlZiBydW5uZXIgJ3NvdXJjZS1mb3JtKSkKKyAgICAgICAgICAgICAgICAg ICAgICAzMCkKKyAgICAgICAgICAgICAgICAgICAgIG5hbWUpKSkKKyAgICAgICAgIChsYWJl bCAoc3RyaW5nLWpvaW4gKGFwcGVuZCAodGVzdC1ydW5uZXItZ3JvdXAtcGF0aCBydW5uZXIp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgbmFtZSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6ICIpKSkKKyAgICAocHJpbnQgcnVubmVy ICJbfmFdIH5hfiUiIHJlc3VsdC1raW5kLW5hbWUgbGFiZWwpCisgICAgKHdoZW4gKG1lbXEg cmVzdWx0LWtpbmQgJyhmYWlsIHhwYXNzKSkKKyAgICAgIChsZXQgKChuaWwgKGNvbnMgI2Yg I2YpKSkKKyAgICAgICAgKGRlZmluZSAoZm91bmQ/IHZhbHVlKQorICAgICAgICAgIChub3Qg KGVxPyBuaWwgdmFsdWUpKSkKKyAgICAgICAgKGRlZmluZSAobWF5YmUtcHJpbnQgdmFsdWUg bWVzc2FnZSkKKyAgICAgICAgICAod2hlbiAoZm91bmQ/IHZhbHVlKQorICAgICAgICAgICAg KHByaW50IHJ1bm5lciBtZXNzYWdlIHZhbHVlKSkpCisgICAgICAgIChsZXQgKChmaWxlICh0 ZXN0LXJlc3VsdC1yZWYgcnVubmVyICdzb3VyY2UtZmlsZSAiKHVua25vd24gZmlsZSkiKSkK KyAgICAgICAgICAgICAgKGxpbmUgKHRlc3QtcmVzdWx0LXJlZiBydW5uZXIgJ3NvdXJjZS1s aW5lICIodW5rbm93biBsaW5lKSIpKQorICAgICAgICAgICAgICAoZXhwcmVzc2lvbiAodGVz dC1yZXN1bHQtcmVmIHJ1bm5lciAnc291cmNlLWZvcm0pKQorICAgICAgICAgICAgICAoZXhw ZWN0ZWQtdmFsdWUgKHRlc3QtcmVzdWx0LXJlZiBydW5uZXIgJ2V4cGVjdGVkLXZhbHVlIG5p bCkpCisgICAgICAgICAgICAgIChhY3R1YWwtdmFsdWUgKHRlc3QtcmVzdWx0LXJlZiBydW5u ZXIgJ2FjdHVhbC12YWx1ZSBuaWwpKQorICAgICAgICAgICAgICAoZXhwZWN0ZWQtZXJyb3Ig KHRlc3QtcmVzdWx0LXJlZiBydW5uZXIgJ2V4cGVjdGVkLWVycm9yIG5pbCkpCisgICAgICAg ICAgICAgIChhY3R1YWwtZXJyb3IgKHRlc3QtcmVzdWx0LXJlZiBydW5uZXIgJ2FjdHVhbC1l cnJvciBuaWwpKSkKKyAgICAgICAgICAocHJpbnQgcnVubmVyICJ+YTp+YTogfnN+JSIgZmls ZSBsaW5lIGV4cHJlc3Npb24pCisgICAgICAgICAgKG1heWJlLXByaW50IGV4cGVjdGVkLXZh bHVlICJFeHBlY3RlZCB2YWx1ZTogfnN+JSIpCisgICAgICAgICAgKG1heWJlLXByaW50IGV4 cGVjdGVkLWVycm9yICJFeHBlY3RlZCBlcnJvcjogfmF+JSIpCisgICAgICAgICAgKHdoZW4g KG9yIChmb3VuZD8gZXhwZWN0ZWQtdmFsdWUpIChmb3VuZD8gZXhwZWN0ZWQtZXJyb3IpKQor ICAgICAgICAgICAgKG1heWJlLXByaW50IGFjdHVhbC12YWx1ZSAiUmV0dXJuZWQgdmFsdWU6 IH5zfiUiKSkKKyAgICAgICAgICAobWF5YmUtcHJpbnQgYWN0dWFsLWVycm9yICJSYWlzZWQg ZXJyb3I6IH5hfiUiKQorICAgICAgICAgIChuZXdsaW5lKSkpKSkpCisKKyhkZWZpbmUgKHRl c3Qtb24tYmFkLWNvdW50LXNpbXBsZSBydW5uZXIgY291bnQgZXhwZWN0ZWQtY291bnQpCisg IChwcmludCBydW5uZXIgIioqKiBUb3RhbCBudW1iZXIgb2YgdGVzdHMgd2FzIH5hIGJ1dCBz aG91bGQgYmUgfmEuICoqKn4lIgorICAgICAgICAgIGNvdW50IGV4cGVjdGVkLWNvdW50KQor ICAocHJpbnQgcnVubmVyCisgICAgICAgICAiKioqIERpc2NyZXBhbmN5IGluZGljYXRlcyB0 ZXN0c3VpdGUgZXJyb3Igb3IgZXhjZXB0aW9ucy4gKioqfiUiKSkKKworKGRlZmluZSAodGVz dC1vbi1iYWQtZW5kLW5hbWUtc2ltcGxlIHJ1bm5lciBiZWdpbi1uYW1lIGVuZC1uYW1lKQor ICAoZXJyb3IgKGZvcm1hdCAjZiAiVGVzdC1lbmQgXCJ+YVwiIGRvZXMgbm90IG1hdGNoIHRl c3QtYmVnaW4gXCJ+YVwiLiIKKyAgICAgICAgICAgICAgICAgZW5kLW5hbWUgYmVnaW4tbmFt ZSkpKQorCisoZGVmaW5lIChvbi1iYWQtZXJyb3ItdHlwZSBydW5uZXIgdHlwZSBlcnJvcikK KyAgKHByaW50IHJ1bm5lciAiV0FSTklORzogdW5rbm93biBlcnJvciB0eXBlIHByZWRpY2F0 ZTogfmF+JSIgdHlwZSkKKyAgKHByaW50IHJ1bm5lciAiICAgICAgICAgZXJyb3Igd2FzOiB+ YX4lIiBlcnJvcikpCisKKzs7OyB0ZXN0LXJ1bm5lci1zaW1wbGUuc2NtIGVuZHMgaGVyZQpk aWZmIC0tZ2l0IGEvbW9kdWxlL3NyZmkvc3JmaS02NC90ZXN0LXJ1bm5lci5ib2R5LnNjbSBi L21vZHVsZS9zcmZpL3NyZmktNjQvdGVzdC1ydW5uZXIuYm9keS5zY20KbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5mODEzMWViY2YKLS0tIC9kZXYvbnVsbAorKysg Yi9tb2R1bGUvc3JmaS9zcmZpLTY0L3Rlc3QtcnVubmVyLmJvZHkuc2NtCkBAIC0wLDAgKzEs MTY1IEBACis7OyBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMTIsIDIwMTMg UGVyIEJvdGhuZXIKKzs7IEFkZGVkICJmdWxsIiBzdXBwb3J0IGZvciBDaGlja2VuLCBHYXVj aGUsIEd1aWxlIGFuZCBTSVNDLgorOzsgICBBbGV4IFNoaW5uLCBDb3B5cmlnaHQgKGMpIDIw MDUuCis7OyBNb2RpZmllZCBmb3IgU2NoZW1lIFNwaGVyZXMgYnkgw4FsdmFybyBDYXN0cm8t Q2FzdGlsbGEsIENvcHlyaWdodCAoYykgMjAxMi4KKzs7IFN1cHBvcnQgZm9yIEd1aWxlIDIg YnkgTWFyayBIIFdlYXZlciA8bWh3QG5ldHJpcy5vcmc+LCBDb3B5cmlnaHQgKGMpIDIwMTQu Cis7OyBSZWZhY3RvcmVkIGJ5IFRheWxhbiBVbHJpY2ggQmF5xLFybMSxL0thbW1lciwgQ29w eXJpZ2h0IChjKSAyMDE0LCAyMDE1LgorOzsKKzs7IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCis7OyBvYnRhaW5pbmcgYSBj b3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbgorOzsg ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91 dAorOzsgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJp Z2h0cyB0byB1c2UsIGNvcHksCis7OyBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli dXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMKKzs7IG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCis7OyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z OgorOzsKKzs7IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIHNoYWxsIGJlCis7OyBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0 YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKzs7Cis7OyBUSEUgU09GVFdBUkUg SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKzs7 IEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRgorOzsgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQKKzs7IE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hB TEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMKKzs7IEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTgor OzsgQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9N LCBPVVQgT0YgT1IgSU4KKzs7IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKKzs7IFNPRlRXQVJFLgorCisMCis7Ozsg VGhlIGRhdGEgdHlwZQorCisoZGVmaW5lLXJlY29yZC10eXBlIDx0ZXN0LXJ1bm5lcj4KKyAg KG1ha2UtdGVzdC1ydW5uZXIpIHRlc3QtcnVubmVyPworCisgIChyZXN1bHQtYWxpc3QgdGVz dC1yZXN1bHQtYWxpc3QgdGVzdC1yZXN1bHQtYWxpc3QhKQorCisgIChwYXNzLWNvdW50IHRl c3QtcnVubmVyLXBhc3MtY291bnQgdGVzdC1ydW5uZXItcGFzcy1jb3VudCEpCisgIChmYWls LWNvdW50IHRlc3QtcnVubmVyLWZhaWwtY291bnQgdGVzdC1ydW5uZXItZmFpbC1jb3VudCEp CisgICh4cGFzcy1jb3VudCB0ZXN0LXJ1bm5lci14cGFzcy1jb3VudCB0ZXN0LXJ1bm5lci14 cGFzcy1jb3VudCEpCisgICh4ZmFpbC1jb3VudCB0ZXN0LXJ1bm5lci14ZmFpbC1jb3VudCB0 ZXN0LXJ1bm5lci14ZmFpbC1jb3VudCEpCisgIChza2lwLWNvdW50IHRlc3QtcnVubmVyLXNr aXAtY291bnQgdGVzdC1ydW5uZXItc2tpcC1jb3VudCEpCisgICh0b3RhbC1jb3VudCAldGVz dC1ydW5uZXItdG90YWwtY291bnQgJXRlc3QtcnVubmVyLXRvdGFsLWNvdW50ISkKKworICA7 OyBTdGFjayAobGlzdCkgb2YgKGNvdW50LWF0LXN0YXJ0IC4gZXhwZWN0ZWQtY291bnQpOgor ICAoY291bnQtbGlzdCAldGVzdC1ydW5uZXItY291bnQtbGlzdCAldGVzdC1ydW5uZXItY291 bnQtbGlzdCEpCisKKyAgOzsgTm9ybWFsbHkgI2YsIGV4Y2VwdCB3aGVuIGluIGEgdGVzdC1h cHBseS4KKyAgKHJ1bi1saXN0ICV0ZXN0LXJ1bm5lci1ydW4tbGlzdCAldGVzdC1ydW5uZXIt cnVuLWxpc3QhKQorCisgIChza2lwLWxpc3QgJXRlc3QtcnVubmVyLXNraXAtbGlzdCAldGVz dC1ydW5uZXItc2tpcC1saXN0ISkKKyAgKGZhaWwtbGlzdCAldGVzdC1ydW5uZXItZmFpbC1s aXN0ICV0ZXN0LXJ1bm5lci1mYWlsLWxpc3QhKQorCisgIChza2lwLXNhdmUgJXRlc3QtcnVu bmVyLXNraXAtc2F2ZSAldGVzdC1ydW5uZXItc2tpcC1zYXZlISkKKyAgKGZhaWwtc2F2ZSAl dGVzdC1ydW5uZXItZmFpbC1zYXZlICV0ZXN0LXJ1bm5lci1mYWlsLXNhdmUhKQorCisgIChn cm91cC1zdGFjayB0ZXN0LXJ1bm5lci1ncm91cC1zdGFjayB0ZXN0LXJ1bm5lci1ncm91cC1z dGFjayEpCisKKyAgOzsgTm90ZTogb24tdGVzdC1iZWdpbiBhbmQgb24tdGVzdC1lbmQgYXJl IHVucmVsYXRlZCB0byB0aGUgdGVzdC1iZWdpbiBhbmQKKyAgOzsgdGVzdC1lbmQgZm9ybXMg aW4gdGhlIGV4ZWN1dGlvbiBsaWJyYXJ5LiAgVGhleSdyZSBjYWxsZWQgYXQgdGhlCisgIDs7 IGJlZ2lubmluZy9lbmQgb2YgZWFjaCBpbmRpdmlkdWFsIHRlc3QsIHdoZXJlYXMgdGhlIHRl c3QtYmVnaW4gYW5kIHRlc3QtZW5kCisgIDs7IGZvcm1zIGRlbWFyY2F0ZSB0ZXN0IGdyb3Vw cy4KKworICAob24tZ3JvdXAtYmVnaW4gdGVzdC1ydW5uZXItb24tZ3JvdXAtYmVnaW4gdGVz dC1ydW5uZXItb24tZ3JvdXAtYmVnaW4hKQorICAob24tdGVzdC1iZWdpbiB0ZXN0LXJ1bm5l ci1vbi10ZXN0LWJlZ2luIHRlc3QtcnVubmVyLW9uLXRlc3QtYmVnaW4hKQorICAob24tdGVz dC1lbmQgdGVzdC1ydW5uZXItb24tdGVzdC1lbmQgdGVzdC1ydW5uZXItb24tdGVzdC1lbmQh KQorICAob24tZ3JvdXAtZW5kIHRlc3QtcnVubmVyLW9uLWdyb3VwLWVuZCB0ZXN0LXJ1bm5l ci1vbi1ncm91cC1lbmQhKQorICAob24tZmluYWwgdGVzdC1ydW5uZXItb24tZmluYWwgdGVz dC1ydW5uZXItb24tZmluYWwhKQorICAob24tYmFkLWNvdW50IHRlc3QtcnVubmVyLW9uLWJh ZC1jb3VudCB0ZXN0LXJ1bm5lci1vbi1iYWQtY291bnQhKQorICAob24tYmFkLWVuZC1uYW1l IHRlc3QtcnVubmVyLW9uLWJhZC1lbmQtbmFtZSB0ZXN0LXJ1bm5lci1vbi1iYWQtZW5kLW5h bWUhKQorCisgIChvbi1iYWQtZXJyb3ItdHlwZSAldGVzdC1ydW5uZXItb24tYmFkLWVycm9y LXR5cGUKKyAgICAgICAgICAgICAgICAgICAgICV0ZXN0LXJ1bm5lci1vbi1iYWQtZXJyb3It dHlwZSEpCisKKyAgKGF1eC12YWx1ZSB0ZXN0LXJ1bm5lci1hdXgtdmFsdWUgdGVzdC1ydW5u ZXItYXV4LXZhbHVlISkKKworICAobG9nLWZpbGUgJXRlc3QtcnVubmVyLWxvZy1maWxlICV0 ZXN0LXJ1bm5lci1sb2ctZmlsZSEpCisgIChsb2ctcG9ydCAldGVzdC1ydW5uZXItbG9nLXBv cnQgJXRlc3QtcnVubmVyLWxvZy1wb3J0ISkpCisKKyhkZWZpbmUgKHRlc3QtcnVubmVyLWdy b3VwLXBhdGggcnVubmVyKQorICAocmV2ZXJzZSAodGVzdC1ydW5uZXItZ3JvdXAtc3RhY2sg cnVubmVyKSkpCisKKyhkZWZpbmUgKHRlc3QtcnVubmVyLXJlc2V0IHJ1bm5lcikKKyAgKHRl c3QtcmVzdWx0LWFsaXN0ISBydW5uZXIgJygpKQorICAodGVzdC1ydW5uZXItcGFzcy1jb3Vu dCEgcnVubmVyIDApCisgICh0ZXN0LXJ1bm5lci1mYWlsLWNvdW50ISBydW5uZXIgMCkKKyAg KHRlc3QtcnVubmVyLXhwYXNzLWNvdW50ISBydW5uZXIgMCkKKyAgKHRlc3QtcnVubmVyLXhm YWlsLWNvdW50ISBydW5uZXIgMCkKKyAgKHRlc3QtcnVubmVyLXNraXAtY291bnQhIHJ1bm5l ciAwKQorICAoJXRlc3QtcnVubmVyLXRvdGFsLWNvdW50ISBydW5uZXIgMCkKKyAgKCV0ZXN0 LXJ1bm5lci1jb3VudC1saXN0ISBydW5uZXIgJygpKQorICAoJXRlc3QtcnVubmVyLXJ1bi1s aXN0ISBydW5uZXIgI2YpCisgICgldGVzdC1ydW5uZXItc2tpcC1saXN0ISBydW5uZXIgJygp KQorICAoJXRlc3QtcnVubmVyLWZhaWwtbGlzdCEgcnVubmVyICcoKSkKKyAgKCV0ZXN0LXJ1 bm5lci1za2lwLXNhdmUhIHJ1bm5lciAnKCkpCisgICgldGVzdC1ydW5uZXItZmFpbC1zYXZl ISBydW5uZXIgJygpKQorICAodGVzdC1ydW5uZXItZ3JvdXAtc3RhY2shIHJ1bm5lciAnKCkp KQorCisoZGVmaW5lICh0ZXN0LXJ1bm5lci1udWxsKQorICAoZGVmaW5lICh0ZXN0LW51bGwt Y2FsbGJhY2sgLiBhcmdzKSAjZikKKyAgKGxldCAoKHJ1bm5lciAobWFrZS10ZXN0LXJ1bm5l cikpKQorICAgICh0ZXN0LXJ1bm5lci1yZXNldCBydW5uZXIpCisgICAgKHRlc3QtcnVubmVy LW9uLWdyb3VwLWJlZ2luISBydW5uZXIgdGVzdC1udWxsLWNhbGxiYWNrKQorICAgICh0ZXN0 LXJ1bm5lci1vbi1ncm91cC1lbmQhIHJ1bm5lciB0ZXN0LW51bGwtY2FsbGJhY2spCisgICAg KHRlc3QtcnVubmVyLW9uLWZpbmFsISBydW5uZXIgdGVzdC1udWxsLWNhbGxiYWNrKQorICAg ICh0ZXN0LXJ1bm5lci1vbi10ZXN0LWJlZ2luISBydW5uZXIgdGVzdC1udWxsLWNhbGxiYWNr KQorICAgICh0ZXN0LXJ1bm5lci1vbi10ZXN0LWVuZCEgcnVubmVyIHRlc3QtbnVsbC1jYWxs YmFjaykKKyAgICAodGVzdC1ydW5uZXItb24tYmFkLWNvdW50ISBydW5uZXIgdGVzdC1udWxs LWNhbGxiYWNrKQorICAgICh0ZXN0LXJ1bm5lci1vbi1iYWQtZW5kLW5hbWUhIHJ1bm5lciB0 ZXN0LW51bGwtY2FsbGJhY2spCisgICAgKCV0ZXN0LXJ1bm5lci1vbi1iYWQtZXJyb3ItdHlw ZSEgcnVubmVyIHRlc3QtbnVsbC1jYWxsYmFjaykKKyAgICAoJXRlc3QtcnVubmVyLWxvZy1m aWxlISBydW5uZXIgI2YpCisgICAgKCV0ZXN0LXJ1bm5lci1sb2ctcG9ydCEgcnVubmVyICNm KQorICAgIHJ1bm5lcikpCisKKwwKKzs7OyBTdGF0ZQorCisoZGVmaW5lIHRlc3QtcmVzdWx0 LXJlZgorICAoY2FzZS1sYW1iZGEKKyAgICAoKHJ1bm5lciBrZXkpCisgICAgICh0ZXN0LXJl c3VsdC1yZWYgcnVubmVyIGtleSAjZikpCisgICAgKChydW5uZXIga2V5IGRlZmF1bHQpCisg ICAgIChsZXQgKChlbnRyeSAoYXNzcSBrZXkgKHRlc3QtcmVzdWx0LWFsaXN0IHJ1bm5lcikp KSkKKyAgICAgICAoaWYgZW50cnkgKGNkciBlbnRyeSkgZGVmYXVsdCkpKSkpCisKKyhkZWZp bmUgKHRlc3QtcmVzdWx0LXNldCEgcnVubmVyIGtleSB2YWx1ZSkKKyAgKGxldCogKChhbGlz dCAodGVzdC1yZXN1bHQtYWxpc3QgcnVubmVyKSkKKyAgICAgICAgIChlbnRyeSAoYXNzcSBr ZXkgYWxpc3QpKSkKKyAgICAoaWYgZW50cnkKKyAgICAgICAgKHNldC1jZHIhIGVudHJ5IHZh bHVlKQorICAgICAgICAodGVzdC1yZXN1bHQtYWxpc3QhIHJ1bm5lciAoY29ucyAoY29ucyBr ZXkgdmFsdWUpIGFsaXN0KSkpKSkKKworKGRlZmluZSAodGVzdC1yZXN1bHQtcmVtb3ZlIHJ1 bm5lciBrZXkpCisgICh0ZXN0LXJlc3VsdC1hbGlzdCEgcnVubmVyIChyZW1vdmUgKGxhbWJk YSAoZW50cnkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXE/ IGtleSAoY2FyIGVudHJ5KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHRlc3QtcmVzdWx0LWFsaXN0IHJ1bm5lcikpKSkKKworKGRlZmluZSAodGVzdC1yZXN1 bHQtY2xlYXIgcnVubmVyKQorICAodGVzdC1yZXN1bHQtYWxpc3QhIHJ1bm5lciAnKCkpKQor CisoZGVmaW5lICh0ZXN0LXJ1bm5lci10ZXN0LW5hbWUgcnVubmVyKQorICAob3IgKHRlc3Qt cmVzdWx0LXJlZiBydW5uZXIgJ25hbWUpICIiKSkKKworKGRlZmluZSB0ZXN0LXJlc3VsdC1r aW5kCisgIChjYXNlLWxhbWJkYQorICAgICgoKSAodGVzdC1yZXN1bHQta2luZCAodGVzdC1y dW5uZXItZ2V0KSkpCisgICAgKChydW5uZXIpICh0ZXN0LXJlc3VsdC1yZWYgcnVubmVyICdy ZXN1bHQta2luZCkpKSkKKworKGRlZmluZSB0ZXN0LXBhc3NlZD8KKyAgKGNhc2UtbGFtYmRh CisgICAgKCgpICh0ZXN0LXBhc3NlZD8gKHRlc3QtcnVubmVyLWdldCkpKQorICAgICgocnVu bmVyKSAobWVtcSAodGVzdC1yZXN1bHQta2luZCBydW5uZXIpICcocGFzcyB4cGFzcykpKSkp CisKKwwKKzs7OyBGYWN0b3J5IGFuZCBjdXJyZW50IGluc3RhbmNlCisKKyhkZWZpbmUgdGVz dC1ydW5uZXItZmFjdG9yeSAobWFrZS1wYXJhbWV0ZXIgI2YpKQorCisoZGVmaW5lICh0ZXN0 LXJ1bm5lci1jcmVhdGUpICgodGVzdC1ydW5uZXItZmFjdG9yeSkpKQorCisoZGVmaW5lIHRl c3QtcnVubmVyLWN1cnJlbnQgKG1ha2UtcGFyYW1ldGVyICNmKSkKKworKGRlZmluZSAodGVz dC1ydW5uZXItZ2V0KQorICAob3IgKHRlc3QtcnVubmVyLWN1cnJlbnQpCisgICAgICAoZXJy b3IgInRlc3QtcnVubmVyIG5vdCBpbml0aWFsaXplZCAtIHRlc3QtYmVnaW4gbWlzc2luZz8i KSkpCisKKzs7OyB0ZXN0LXJ1bm5lci5zY20gZW5kcyBoZXJlCi0tIAoyLjMwLjIKCg== --------------8CA24D03EE9AC4C411F80FAD Content-Type: text/plain; charset=UTF-8; name="0002-Augment-SRFI-64-test-suite.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0002-Augment-SRFI-64-test-suite.patch" RnJvbSA1ZjdiMWUzNzkwZjM5NDFhMTIzMjZhZWMxMGY5MGNhNTVmZTBlMWMzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUYXlsYW4gS2FtbWVyIDx0YXlsYW4ua2FtbWVyQGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAxMCBNYXkgMjAyMSAxNToyNjoxMCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMi8yXSBBdWdtZW50IFNSRkktNjQgdGVzdC1zdWl0ZS4KCiogdGVzdC1zdWl0 ZS90ZXN0cy9zcmZpLTY0LXRlc3Quc2NtICgiMS4zLiB0ZXN0LWFwcHJveGltYXRlIik6IE5l dwogIHNlY3Rpb24uCigiMi4xLjQuIEZBSUwgd2l0aCBhIHRlc3QgbmFtZSBhbmQgZXJyb3Ig dHlwZSIpOgooIjIuMS41LiBQQVNTIHdpdGggYW4gZXJyb3IgdHlwZSBidXQgbm8gbmFtZSIp OgooIjIuMS42LiBGQUlMIHdpdGggYW4gZXJyb3IgdHlwZSBidXQgbm8gbmFtZSIpOiBOZXcg dGVzdHMuCi0tLQogdGVzdC1zdWl0ZS90ZXN0cy9zcmZpLTY0LXRlc3Quc2NtIHwgMzcgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDM3IGluc2Vy dGlvbnMoKykKCmRpZmYgLS1naXQgYS90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjQtdGVzdC5z Y20gYi90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjQtdGVzdC5zY20KaW5kZXggY2EwYjU4OTQz Li5iN2Y2ZDI5MzQgMTAwNjQ0Ci0tLSBhL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS02NC10ZXN0 LnNjbQorKysgYi90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjQtdGVzdC5zY20KQEAgLTE2Nyw2 ICsxNjcsMTkgQEAKIAogKHRlc3QtZW5kKTsxLjIKIAorKHRlc3QtYmVnaW4gIjEuMy4gdGVz dC1hcHByb3hpbWF0ZSIpCisKKyh0ZXN0LWVxdWFsCisgIjEuMy4xLiBTaW1wbGUgbnVtZXJp Y2FsIGFwcHJveGltYXRpb24iCisgJygoImEiICJjIikgKCJiIikgKCkgKCkgKCkgKDIgMSAw IDAgMCkpCisgKHRyaXYtcnVubmVyCisgIChsYW1iZGEgKCkKKyAgICAodGVzdC1hcHByb3hp bWF0ZSAiYSIgKG1lYW4gMyA1KSA0ICAgMC4wMDEpCisgICAgKHRlc3QtYXBwcm94aW1hdGUg ImIiIChtZWFuIDMgNSkgNC41IDAuMDAxKQorICAgICh0ZXN0LWFwcHJveGltYXRlICJjIiAo bWVhbiAzIDUpIDQuMCAwLjAwMSkpKSkKKworKHRlc3QtZW5kKTsxLjMKKwogKHRlc3QtZW5k ICIxLiBTaW1wbGUgdGVzdC1jYXNlcyIpCiAKIDs7OwpAQCAtMjAyLDYgKzIxNSwzMCBAQAog ICAgIDs7IFBBU1MKICAgICAodGVzdC1lcnJvciAiYSIgI3QgKHZlY3Rvci1yZWYgJyMoMSAy KSA5KSkpKSkKIAorKHRlc3QtZXF1YWwKKyAiMi4xLjQuIEZBSUwgd2l0aCBhIHRlc3QgbmFt ZSBhbmQgZXJyb3IgdHlwZSIKKyAnKCgpICgiYSIpICgpICgpICgpICgwIDEgMCAwIDApKQor ICh0cml2LXJ1bm5lcgorICAobGFtYmRhICgpCisgICAgOzsgRkFJTAorICAgICh0ZXN0LWVy cm9yICJhIiAjdCAodmVjdG9yLXJlZiAnIygxIDIpIDApKSkpKQorCisodGVzdC1lcXVhbAor ICIyLjEuNS4gUEFTUyB3aXRoIGFuIGVycm9yIHR5cGUgYnV0IG5vIG5hbWUiCisgJygoIiIp ICgpICgpICgpICgpICgxIDAgMCAwIDApKQorICh0cml2LXJ1bm5lcgorICAobGFtYmRhICgp CisgICAgOzsgUEFTUworICAgICh0ZXN0LWVycm9yICN0ICh2ZWN0b3ItcmVmICcjKDEgMikg OSkpKSkpCisKKyh0ZXN0LWVxdWFsCisgIjIuMS42LiBGQUlMIHdpdGggYW4gZXJyb3IgdHlw ZSBidXQgbm8gbmFtZSIKKyAnKCgpICgiIikgKCkgKCkgKCkgKDAgMSAwIDAgMCkpCisgKHRy aXYtcnVubmVyCisgIChsYW1iZGEgKCkKKyAgICA7OyBGQUlMCisgICAgKHRlc3QtZXJyb3Ig I3QgKHZlY3Rvci1yZWYgJyMoMSAyKSAwKSkpKSkKKwogKHRlc3QtZW5kICIyLjEuIHRlc3Qt ZXJyb3IiKQogCiAodGVzdC1lbmQgIjIuIFRlc3RzIGZvciBjYXRjaGluZyBlcnJvcnMiKQot LSAKMi4zMC4yCgo= --------------8CA24D03EE9AC4C411F80FAD--