From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0.migadu.com ([2001:41d0:403:58f0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms8.migadu.com with LMTPS id 8PRpM7QzpGUzhAAAqHPOHw:P1 (envelope-from ) for ; Sun, 14 Jan 2024 20:19:16 +0100 Received: from aspmx1.migadu.com ([2001:41d0:403:58f0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0.migadu.com with LMTPS id 8PRpM7QzpGUzhAAAqHPOHw (envelope-from ) for ; Sun, 14 Jan 2024 20:19:16 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=posteo.net header.s=2017 header.b=GRK5iIDW; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=posteo.net ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1705259956; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=2Rsc8x9G18+B4f4l+liwQAogcdpH1E9DsLPYobUmyoM=; b=TaWeO6pmfz5W1kYUEaDLedQlxsK1gaN0M1zyjM2tIu2lvBhpkbYGwHcg94zGtq7ppVlQla Iv4JooKsMKPA4y+IsV1EhSw19oph8DtnylAaKZLckOSLsy2bVKex5gn8lity5ArGTWyUGr IYqaYlrw3joar7qEGRW/XUsmHdPI58q8dZgx8Htm9OHxrWzzphTTSrp5RIBV2iQfa3esrv 16NMCjKDHlS0jrUpcU7OWi4g8HpqYz6wk+eSetReQpDAMpPP1Tu02ytOeAFO7ivAdo+qxA 37VLdJL4OiIUp/zAjm6WvDO0dUoa4UdlpaIxdllG9PvqOS/f2AAy82GB1LtVbw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=posteo.net header.s=2017 header.b=GRK5iIDW; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=posteo.net ARC-Seal: i=1; s=key1; d=yhetil.org; t=1705259956; a=rsa-sha256; cv=none; b=qyVJZQBVdfofMPNWF3nu+MElnbbc2ibMOAids6XejTkp29zCzkuSGRvZsqo1t5SJWMH8n/ 7IudstFTqDjkLjQeTVF8WxD5agwYTi7ukA89YuaLAWTANYPZbmcR6JZ5nDMPojBrPgOAZT W3nQDAJ1hq7X7l+x0TsU6vXLA8HcYtBvQJqEypbYJcdNboQLSX9Mf9o/ImTKkSKPzWjvfZ FLEhzZmTgb7YpphzzBC528/nZLej65mn9lXLo85w4EIdaeJ+PDlmhAhOfuy09XXS99lNha b5JF/0qrfqIfgArharJ7eJschZQFkFkZu1FJDaDEhQCtZZjRoin2UVD6nLILEQ== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id A991968735 for ; Sun, 14 Jan 2024 20:19:15 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rP608-0003Jy-Cy; Sun, 14 Jan 2024 14:18:32 -0500 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 1rP606-0003Jg-T1 for emacs-orgmode@gnu.org; Sun, 14 Jan 2024 14:18:30 -0500 Received: from mout02.posteo.de ([185.67.36.66]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rP604-0003gH-L6 for emacs-orgmode@gnu.org; Sun, 14 Jan 2024 14:18:30 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 0EDB8240105 for ; Sun, 14 Jan 2024 20:18:23 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1705259904; bh=wp894XAcoKgxT4MGGAB9b0axwRPxuUHvh6fZWmzkO34=; h=MIME-Version:Date:From:To:Cc:Subject:Message-ID:From; b=GRK5iIDWDypJbRUaD4JKpVHged0UarPj+sYIP2nu4KZELYnWP9Bsp9bIgn2nlnh/5 hTsCd8uPEuxQCyEWVysQrlvRQ/kX/PAN4orseyF47iWUD4ahG4rNhcqmkA4sB+oHBZ DffTIvUx1GSivPKA9H5nirn10dbhfEhVVuo8LIBDF8tX/KAReWM2LoZ8r/567YpHMR u0Jqezo0a0xtb9H/7Hb8Ej5UQdBVsKGNBgHzAl/iNlTx7Q44PevSHAY6R3PJWwADQg AKyX4ip16oV7lB9seotBd/Kw6rRf2RjXYALs8Gkbmw7Os7aqSkX6PLhQ6/02H+7yN8 Nz/K6CDcIV1dw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4TClRg1w2nz6tvl; Sun, 14 Jan 2024 20:18:23 +0100 (CET) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_ea0a67be166c0581ff8f80f963b70714" Date: Sun, 14 Jan 2024 19:18:23 +0000 From: gerard.vermeulen@posteo.net To: Ihor Radchenko Cc: Emacs orgmode , emacs-orgmode-bounces+gerard.vermeulen=posteo.net@gnu.org Subject: Re: [PATCH] org-babel-demarcate-block: split using element API In-Reply-To: <87wmscrty4.fsf@localhost> References: <7e41f9b6e9026a404e256f33371e974c@posteo.net> <87zfxq78ff.fsf@localhost> <87zfxo3taa.fsf@localhost> <87v88a78qd.fsf@localhost> <7f23ea966f0f0aad3fad29b0b96864f3@posteo.net> <87y1d55fc6.fsf@localhost> <37fdcc4bfcf734c2e5ec439d40b4f7d8@posteo.net> <878r50yqmo.fsf@localhost> <442006329cfba666710c989aece5191a@posteo.net> <261356c53e857e0bc4b04f884366edfa@posteo.net> <87bk9uy31w.fsf@localhost> <680e4a4fccf4f3c5c8f51d8215257eff@posteo.net> <87a5p9uute.fsf@localhost> <87wmscrty4.fsf@localhost> Message-ID: <2c82fa1399ddaa52ebe5bb21e241fb5f@posteo.net> Received-SPF: pass client-ip=185.67.36.66; envelope-from=gerard.vermeulen@posteo.net; helo=mout02.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 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, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: emacs-orgmode-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Spam-Score: -7.70 X-Migadu-Queue-Id: A991968735 X-Spam-Score: -7.70 X-Migadu-Scanner: mx11.migadu.com X-TUID: f5O3FOnNcmIK --=_ea0a67be166c0581ff8f80f963b70714 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 14.01.2024 13:16, Ihor Radchenko wrote: > gerard.vermeulen@posteo.net writes: [...] > I tried make test and the tests are still failing with this new patch: > > 1 unexpected results: > FAILED test-ob/demarcate-block ((should (string= region-text > (org-trim (nth 1 info)))) :form (string= "mark this line as region" > "") :value nil :explanation (arrays-of-different-length 24 0 "mark > this line as region" "" first-mismatch-at 0)) This is a tough lesson: the tests pass always on my system. I think the failure you see is related to a problem marking a region in my test code (wish: support in `org-test-with-temp-text' for "" besides "", but maybe that depends on ERT), else the problem would have shown up while testing the patch interactively. I think that I have improved my region marking code by using "" in the temp-text as a start. Then, I only have to find where to set mark, and eventually exchange point and mark. The test code now checks (mark) in the 3 places where a region is marked. This looks superfluous if the code is really robust, but at least it checks whether the region marking is (or was) the problem. New patch attached. Some of the scaffolding (should ...) forms could be removed if the 5 sub-test in test-ob/demarcate-block would be 5 separated ERT tests. I prefer to continue like this and do eventual refactoring later. Regards -- Gerard --=_ea0a67be166c0581ff8f80f963b70714 Content-Transfer-Encoding: base64 Content-Type: application/octet-stream; name=0001-org-babel-demarcate-block-split-using-element-API.patch Content-Disposition: attachment; filename=0001-org-babel-demarcate-block-split-using-element-API.patch; size=19080 RnJvbSA4MjlkOTlmYTU4YmE5MTkzM2VmOWU2Yjg0ZWE1OWMxOWFlOTE2YjI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHZXJhcmQgVmVybWV1bGVuIDxnZXJhcmQudmVybWV1bGVuQHBv c3Rlby5uZXQ+CkRhdGU6IFRodSwgMTEgSmFuIDIwMjQgMjA6MjA6MDEgKzAxMDAKU3ViamVjdDog W1BBVENIXSBvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrOiBzcGxpdCB1c2luZyBlbGVtZW50IEFQ SQoKKiBsaXNwL29iLWJhYmVsLmVsIChvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrKTogTW9kaWZ5 IGEgY29weQpvZiAob3JnLWVsZW1lbnQtYXQtcG9pbnQpIHRvIHJlcGxhY2UgdGhlIG9sZCBzb3Vy Y2UgYmxvY2sgd2l0aCAyIG9yIDMKbmV3IG1vZGlmaWVkIGNvcGllcyBieSBtZWFucyBvZiBgb3Jn LWVsZW1lbnQtaW50ZXJwcmV0LWRhdGEnLiAgVGhlIDFzdApzb3VyY2UgYmxvY2sgY29udGFpbnMg dGhlIHRleHQgZnJvbSB0aGUgYm9keSBvZiB0aGUgb2xkIGJsb2NrIGJlZm9yZQpwb2ludCBvciBy ZWdpb24sIHRoZSAybmQgYmxvY2sgY29udGFpbnMgdGhlIGJvZHkgdGV4dCBhZnRlciBwb2ludCBv cgpib2R5IHRleHQgd2l0aGluIHJlZ2lvbiwgYW5kIGluIGNhc2Ugb2YgcmVnaW9uLCB0aGUgM3Jk IGJsb2NrIGNvbnRhaW5zCnRoZSB0ZXh0IGFmdGVyIHJlZ2lvbi4gIFRoZSBjYXB0aW9uIGFuZCB0 aGUgbmFtZSBhcmUgZGVsZXRlZCBmcm9tIHRoZQoxIG9yIDIgYmxvY2tzIGJlbG93IHRoZSB1cHBl ciBzb3VyY2UgYmxvY2suICBJbmRlbnQgYWxsIGJsb2NrcwppbW1lZGlhdGVseSBhZnRlciBpbnNl cnRpb24gKHBpdGZhbGwsIHNlZSBsaW5rKS4gIFVzZSA6cG9zdC1ibGFuayB0bwpjb250cm9sIHdo aXRlIGxpbmVzIGJldHdlZW4gaW5zZXJ0ZWQgYmxvY2tzLiAgTGVhdmUgcG9pbnQgYXQgdGhlIGxh c3QKaW5zZXJ0ZWQgYmxvY2suICBUYWtlIGNhcmUgdG8gcHJlc2VydmUgKGN1cnJlbnQtY29sdW1u KSBvZiB0ZXh0CmFmdGVyIHBvaW50IChhbmQgbWFyaykgaW4gdGhlIDJuZCAoYW5kIDNyZCkgYmxv Y2suICBUcnlpbmcgdG8gc3BsaXQKd2hlbiBwb2ludCBvciByZWdpb24gaXMgbm90IHdpdGhpbiB0 aGUgYm9keSBvZiB0aGUgb2xkIHNvdXJjZSBibG9jawpyYWlzZXMgYW4gdXNlci1lcnJvci4KKiBs aXNwL29iLWJhYmVsIChvcmctZ2V0LXNyYy1ibG9jay1pbmZvKTogYWRkIHRoZSAid2l0aGluIGJs YW5rIGxpbmVzCmFmdGVyIGEgc291cmNlIGJsb2NrIiBjb25kaXRpb24gdG8gdGhlIGRvYy1zdHJp bmcgdG8gbWF0Y2ggaXQgd2l0aCB0aGUKZG9jLXN0cmluZyBvZiBhbmQgYSBjb21tZW50IGluIGBv cmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrJy4KKiB0ZXN0aW5nL2xpc3AvdGVzdC1vYi5lbCAodGVz dC1vYi9kZW1hcmNhdGUtYmxvY2spOiBOZXcgdGVzdC4gIEl0CmNoZWNrcyB0ZXN0IGNhc2VzIHRo YXQgYnJva2UgZWFybGllciB2ZXJzaW9ucyBvZiB0aGlzIHBhdGNoLgoKTGluazogaHR0cHM6Ly9s aXN0Lm9yZ21vZGUub3JnLzg3cGx5Nm55dWUuZnNmQGxvY2FsaG9zdC8KLS0tCiBsaXNwL29iLWNv cmUuZWwgICAgICAgICB8ICA5NCArKysrKysrKysrKystLS0tLQogdGVzdGluZy9saXNwL3Rlc3Qt b2IuZWwgfCAyMjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBm aWxlcyBjaGFuZ2VkLCAyOTEgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvbGlzcC9vYi1jb3JlLmVsIGIvbGlzcC9vYi1jb3JlLmVsCmluZGV4IDFkZTNhZjZhZC4u ZTIwMGY4MmMwIDEwMDY0NAotLS0gYS9saXNwL29iLWNvcmUuZWwKKysrIGIvbGlzcC9vYi1jb3Jl LmVsCkBAIC03MywxMCArNzMsMTIgQEAKIChkZWNsYXJlLWZ1bmN0aW9uIG9yZy1lbGVtZW50LXBh cmVudCAib3JnLWVsZW1lbnQtYXN0IiAobm9kZSkpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctZWxl bWVudC10eXBlICJvcmctZWxlbWVudC1hc3QiIChub2RlICZvcHRpb25hbCBhbm9ueW1vdXMpKQog KGRlY2xhcmUtZnVuY3Rpb24gb3JnLWVsZW1lbnQtdHlwZS1wICJvcmctZWxlbWVudC1hc3QiIChu b2RlICZvcHRpb25hbCB0eXBlcykpCisoZGVjbGFyZS1mdW5jdGlvbiBvcmctZWxlbWVudC1pbnRl cnByZXQtZGF0YSAib3JnLWVsZW1lbnQiIChkYXRhKSkKIChkZWNsYXJlLWZ1bmN0aW9uIG9yZy1l bnRyeS1nZXQgIm9yZyIgKHBvbSBwcm9wZXJ0eSAmb3B0aW9uYWwgaW5oZXJpdCBsaXRlcmFsLW5p bCkpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctZXNjYXBlLWNvZGUtaW4tcmVnaW9uICJvcmctc3Jj IiAoYmVnIGVuZCkpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctZm9yd2FyZC1oZWFkaW5nLXNhbWUt bGV2ZWwgIm9yZyIgKGFyZyAmb3B0aW9uYWwgaW52aXNpYmxlLW9rKSkKIChkZWNsYXJlLWZ1bmN0 aW9uIG9yZy1pbi1jb21tZW50ZWQtaGVhZGluZy1wICJvcmciICgmb3B0aW9uYWwgbm8taW5oZXJp dGFuY2UpKQorKGRlY2xhcmUtZnVuY3Rpb24gb3JnLWluZGVudC1ibG9jayAib3JnIiAoKSkKIChk ZWNsYXJlLWZ1bmN0aW9uIG9yZy1pbmRlbnQtbGluZSAib3JnIiAoKSkKIChkZWNsYXJlLWZ1bmN0 aW9uIG9yZy1saXN0LWdldC1saXN0LWVuZCAib3JnLWxpc3QiIChpdGVtIHN0cnVjdCBwcmV2cykp CiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctbGlzdC1wcmV2cy1hbGlzdCAib3JnLWxpc3QiIChzdHJ1 Y3QpKQpAQCAtNzAwLDggKzcwMiw5IEBAIEJ5IGRlZmF1bHQsIGNvbnNpZGVyIHRoZSBibG9jayBh dCBwb2ludC4gIEhvd2V2ZXIsIHdoZW4gb3B0aW9uYWwKIGFyZ3VtZW50IERBVFVNIGlzIHByb3Zp ZGVkLCBleHRyYWN0IGluZm9ybWF0aW9uIGZyb20gdGhhdCBwYXJzZWQKIG9iamVjdCBpbnN0ZWFk LgogCi1SZXR1cm4gbmlsIGlmIHBvaW50IGlzIG5vdCBvbiBhIHNvdXJjZSBibG9jay4gIE90aGVy d2lzZSwgcmV0dXJuCi1hIGxpc3Qgd2l0aCB0aGUgZm9sbG93aW5nIHBhdHRlcm46CitSZXR1cm4g bmlsIGlmIHBvaW50IGlzIG5vdCBvbiBhIHNvdXJjZSBibG9jayAoYmxhbmsgbGluZXMgYWZ0ZXIg YQorc291cmNlIGJsb2NrIGFyZSBjb25zaWRlcmVkIGEgcGFydCBvZiB0aGF0IHNvdXJjZSBibG9j aykuCitPdGhlcndpc2UsIHJldHVybiBhIGxpc3Qgd2l0aCB0aGUgZm9sbG93aW5nIHBhdHRlcm46 CiAKICAgKGxhbmd1YWdlIGJvZHkgYXJndW1lbnRzIHN3aXRjaGVzIG5hbWUgc3RhcnQgY29kZXJl ZikiCiAgIChsZXQqICgoZGF0dW0gKG9yIGRhdHVtIChvcmctZWxlbWVudC1jb250ZXh0KSkpCkBA IC0yMDUxLDcgKzIwNTQsNyBAQCBXaXRoIG9wdGlvbmFsIHByZWZpeCBhcmd1bWVudCBBUkcsIGp1 bXAgYmFja3dhcmQgQVJHIG1hbnkgc291cmNlIGJsb2Nrcy4iCiAgICAgICAoZ290by1jaGFyICht YXRjaC1iZWdpbm5pbmcgNSkpKSkpCiAKIChkZWZ1biBvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2Nr ICgmb3B0aW9uYWwgYXJnKQotICAiV3JhcCBvciBzcGxpdCB0aGUgY29kZSBpbiB0aGUgcmVnaW9u IG9yIG9uIHRoZSBwb2ludC4KKyAgIldyYXAgb3Igc3BsaXQgdGhlIGNvZGUgaW4gYW4gYWN0aXZl IHJlZ2lvbiBvciBhdCBwb2ludC4KIAogV2l0aCBwcmVmaXggYXJndW1lbnQgQVJHLCBhbHNvIGNy ZWF0ZSBhIG5ldyBoZWFkaW5nIGF0IHBvaW50LgogCkBAIC0yMDYxLDQxICsyMDY0LDc2IEBAIGlz IGNyZWF0ZWQuICBJbiBib3RoIGNhc2VzIGlmIHRoZSByZWdpb24gaXMgZGVtYXJjYXRlZCBhbmQg aWYgdGhlCiByZWdpb24gaXMgbm90IGFjdGl2ZSB0aGVuIHRoZSBwb2ludCBpcyBkZW1hcmNhdGVk LgogCiBXaGVuIGNhbGxlZCB3aXRoaW4gYmxhbmsgbGluZXMgYWZ0ZXIgYSBjb2RlIGJsb2NrLCBj cmVhdGUgYSBuZXcgY29kZQotYmxvY2sgb2YgdGhlIHNhbWUgbGFuZ3VhZ2Ugd2l0aCB0aGUgcHJl dmlvdXMuIgorYmxvY2sgb2YgdGhlIHNhbWUgbGFuZ3VhZ2UgYXMgdGhlIHByZXZpb3VzLiIKICAg KGludGVyYWN0aXZlICJQIikKICAgKGxldCogKChpbmZvIChvcmctYmFiZWwtZ2V0LXNyYy1ibG9j ay1pbmZvICduby1ldmFsKSkKIAkgKHN0YXJ0IChvcmctYmFiZWwtd2hlcmUtaXMtc3JjLWJsb2Nr LWhlYWQpKQogICAgICAgICAgOzsgYHN0YXJ0JyB3aWxsIGJlIG5pbCB3aGVuIHdpdGhpbiBzcGFj ZSBsaW5lcyBhZnRlciBzcmMgYmxvY2suCiAJIChibG9jayAoYW5kIHN0YXJ0IChtYXRjaC1zdHJp bmcgMCkpKQotCSAoaGVhZGVycyAoYW5kIHN0YXJ0IChtYXRjaC1zdHJpbmcgNCkpKQorICAgICAg ICAgKGJvZHktYmVnIChhbmQgc3RhcnQgKG1hdGNoLWJlZ2lubmluZyA1KSkpCisgICAgICAgICAo Ym9keS1lbmQgKGFuZCBzdGFydCAobWF0Y2gtZW5kIDUpKSkKIAkgKHN0YXJzIChjb25jYXQgKG1h a2Utc3RyaW5nIChvciAob3JnLWN1cnJlbnQtbGV2ZWwpIDEpID8qKSAiICIpKQogCSAodXBwZXIt Y2FzZS1wIChhbmQgYmxvY2sKIAkJCSAgICAobGV0IChjYXNlLWZvbGQtc2VhcmNoKQogCQkJICAg ICAgKHN0cmluZy1tYXRjaC1wICIjXFwrQkVHSU5fU1JDIiBibG9jaykpKSkpCiAgICAgKGlmIChh bmQgaW5mbyBzdGFydCkgOzsgQXQgc3JjIGJsb2NrLCBidXQgbm90IHdpdGhpbiBibGFuayBsaW5l cyBhZnRlciBpdC4KLSAgICAgICAgKG1hcGMKLSAgICAgICAgIChsYW1iZGEgKHBsYWNlKQotICAg ICAgICAgICAoc2F2ZS1leGN1cnNpb24KLSAgICAgICAgICAgICAoZ290by1jaGFyIHBsYWNlKQot ICAgICAgICAgICAgIChsZXQgKChsYW5nIChudGggMCBpbmZvKSkKLSAgICAgICAgICAgICAgICAg ICAoaW5kZW50IChtYWtlLXN0cmluZyAob3JnLWN1cnJlbnQtdGV4dC1pbmRlbnRhdGlvbikgP1xz KSkpCi0JICAgICAgICh3aGVuIChzdHJpbmctbWF0Y2ggIl5bWzpzcGFjZTpdXSokIgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZyAobGluZS1iZWdp bm5pbmctcG9zaXRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChsaW5lLWVuZC1wb3NpdGlvbikpKQotICAgICAgICAgICAgICAgICAoZGVs ZXRlLXJlZ2lvbiAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pIChsaW5lLWVuZC1wb3NpdGlvbikp KQotICAgICAgICAgICAgICAgKGluc2VydCAoY29uY2F0Ci0JCSAgICAgICAgKGlmIChsb29raW5n LWF0ICJeIikgIiIgIlxuIikKLQkJICAgICAgICBpbmRlbnQgKGlmIHVwcGVyLWNhc2UtcCAiIytF TkRfU1JDXG4iICIjK2VuZF9zcmNcbiIpCi0JCSAgICAgICAgKGlmIGFyZyBzdGFycyBpbmRlbnQp ICJcbiIKLQkJICAgICAgICBpbmRlbnQgKGlmIHVwcGVyLWNhc2UtcCAiIytCRUdJTl9TUkMgIiAi IytiZWdpbl9zcmMgIikKLQkJICAgICAgICBsYW5nCi0JCSAgICAgICAgKGlmICg+IChsZW5ndGgg aGVhZGVycykgMSkKLQkJCSAgICAoY29uY2F0ICIgIiBoZWFkZXJzKSBoZWFkZXJzKQotCQkgICAg ICAgIChpZiAobG9va2luZy1hdCAiW1xuXHJdIikKLQkJCSAgICAiIgotCQkJICAoY29uY2F0ICJc biIgKG1ha2Utc3RyaW5nIChjdXJyZW50LWNvbHVtbikgPyApKSkpKSkpCi0JICAgKG1vdmUtZW5k LW9mLWxpbmUgMikpCi0gICAgICAgICAoc29ydCAoaWYgKG9yZy1yZWdpb24tYWN0aXZlLXApIChs aXN0IChtYXJrKSAocG9pbnQpKSAobGlzdCAocG9pbnQpKSkgIyc+KSkKKyAgICAgICAgKGxldCog KChjb3B5IChvcmctZWxlbWVudC1jb3B5IChvcmctZWxlbWVudC1hdC1wb2ludCkpKQorICAgICAg ICAgICAgICAgKGJlZm9yZSAob3JnLWVsZW1lbnQtYmVnaW4gY29weSkpCisgICAgICAgICAgICAg ICAoYmV5b25kIChvcmctZWxlbWVudC1lbmQgY29weSkpCisgICAgICAgICAgICAgICAocGFydHMK KyAgICAgICAgICAgICAgICAoaWYgKG9yZy1yZWdpb24tYWN0aXZlLXApCisgICAgICAgICAgICAg ICAgICAgIChsaXN0IGJvZHktYmVnIChyZWdpb24tYmVnaW5uaW5nKSAocmVnaW9uLWVuZCkgYm9k eS1lbmQpCisgICAgICAgICAgICAgICAgICAobGlzdCBib2R5LWJlZyAocG9pbnQpIGJvZHktZW5k KSkpCisgICAgICAgICAgICAgICAocGFkcyA7OyBUbyBjYWxjdWxhdGUgbGVmdC1zaWRlIHdoaXRl LXNwYWNlIHBhZGRpbmcuCisgICAgICAgICAgICAgICAgKGlmIChvcmctcmVnaW9uLWFjdGl2ZS1w KQorICAgICAgICAgICAgICAgICAgICAobGlzdCAocmVnaW9uLWJlZ2lubmluZykgKHJlZ2lvbi1l bmQpKQorICAgICAgICAgICAgICAgICAgKGxpc3QgKHBvaW50KSkpKQorICAgICAgICAgICAgICAg KG4gKC0gKGxlbmd0aCBwYXJ0cykgMikpIDs7IDEgb3IgMiBwYXJ0cyBpbiBgZG9saXN0JyBiZWxv dy4KKyAgICAgICAgICAgICAgIDs7IGBwb3N0LWJsYW5rJyBjYWNoZXMgdGhlIHByb3BlcnR5IGJl Zm9yZSBzZXR0aW5nIGl0IHRvIDAuCisgICAgICAgICAgICAgICAocG9zdC1ibGFuayAob3JnLWVs ZW1lbnQtcHJvcGVydHkgOnBvc3QtYmxhbmsgY29weSkpKQorICAgICAgICAgIDs7IFBvaW50IG9y IHJlZ2lvbiBhcmUgd2l0aGluIGJvZHkgd2hlbiBwYXJ0cyBpcyBpbiBpbmNyZWFzaW5nIG9yZGVy LgorICAgICAgICAgICh1bmxlc3MgKGFwcGx5ICMnPD0gcGFydHMpCisgICAgICAgICAgICAodXNl ci1lcnJvciAiU2VsZWN0IHdpdGhpbiB0aGUgc291cmNlIGJsb2NrIGJvZHkgdG8gc3BsaXQgaXQi KSkKKyAgICAgICAgICAoc2V0cSBwYXJ0cyAobWFwY2FyIChsYW1iZGEgKHApIChidWZmZXItc3Vi c3RyaW5nIChjYXIgcCkgKGNkciBwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo c2VxLW1hcG4gIydjb25zIHBhcnRzIChjZHIgcGFydHMpKSkpCisgICAgICAgICAgOzsgTWFwIHBv c2l0aW9ucyB0byBjb2x1bW5zIGZvciB3aGl0ZS1zcGFjZSBwYWRkaW5nLgorICAgICAgICAgIChz ZXRxIHBhZHMgKG1hcGNhciAobGFtYmRhIChwKSAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHApCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBhZHMpKQorICAgICAgICAgIChwdXNoIDAgcGFkcykg OzsgVGhlIDFzdCBwYXJ0IG5ldmVyIHJlcXVpcmVzIHdoaXRlLXNwYWNlIHBhZGRpbmcuCisgICAg ICAgICAgKHNldHEgcGFydHMgKG1hcGNhciAobGFtYmRhIChwKSAoc3RyaW5nLWpvaW4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCAobWFrZS1zdHJpbmcg KGNhciBwKSA/XHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGNkciBwKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlcS1tYXBu ICMnY29ucyBwYWRzIHBhcnRzKSkpCisgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gYmVmb3JlIGJl eW9uZCkKKyAgICAgICAgICA7OyBTZXQgYDpwb3N0LWJsYW5rJyB0byAwLiAgV2UgdGFrZSBjYXJl IG9mIHNwYWNpbmcgYmV0d2VlbiBibG9ja3MuCisgICAgICAgICAgKG9yZy1lbGVtZW50LXB1dC1w cm9wZXJ0eSBjb3B5IDpwb3N0LWJsYW5rIDApCisgICAgICAgICAgKG9yZy1lbGVtZW50LXB1dC1w cm9wZXJ0eSBjb3B5IDp2YWx1ZSAoY2FyIHBhcnRzKSkKKyAgICAgICAgICAoaW5zZXJ0IChvcmct ZWxlbWVudC1pbnRlcnByZXQtZGF0YSBjb3B5KSkKKyAgICAgICAgICA7OyBgb3JnLWluZGVudC1i bG9jaycgbWF5IHNlZSBhbm90aGVyIGBvcmctZWxlbWVudCcgKGUuZy4gcGFyYWdyYXBoKQorICAg ICAgICAgIDs7IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBibG9jay4gIEVuc3VyZSB0byBpbmRlbnQg dGhlIGluc2VydGVkIGJsb2NrCisgICAgICAgICAgOzsgYW5kIG1vdmUgcG9pbnQgdG8gaXRzIGVu ZC4KKyAgICAgICAgICAob3JnLWJhYmVsLXByZXZpb3VzLXNyYy1ibG9jayAxKQorICAgICAgICAg IChvcmctaW5kZW50LWJsb2NrKQorICAgICAgICAgIChnb3RvLWNoYXIgKG9yZy1lbGVtZW50LWVu ZCAob3JnLWVsZW1lbnQtYXQtcG9pbnQpKSkKKyAgICAgICAgICAob3JnLWVsZW1lbnQtcHV0LXBy b3BlcnR5IGNvcHkgOmNhcHRpb24gbmlsKQorICAgICAgICAgIChvcmctZWxlbWVudC1wdXQtcHJv cGVydHkgY29weSA6bmFtZSBuaWwpCisgICAgICAgICAgOzsgSW5zZXJ0IHRoZSAybmQgYmxvY2ss IGFuZCB0aGUgM3JkIGJsb2NrIHdoZW4gcmVnaW9uIGlzIGFjdGl2ZS4KKyAgICAgICAgICAoZG9s aXN0IChwYXJ0IChjZHIgcGFydHMpKQorICAgICAgICAgICAgKG9yZy1lbGVtZW50LXB1dC1wcm9w ZXJ0eSBjb3B5IDp2YWx1ZSBwYXJ0KQorICAgICAgICAgICAgKGluc2VydCAoaWYgYXJnIChjb25j YXQgc3RhcnMgIlxuIikgIlxuIikpCisgICAgICAgICAgICAoY2wtZGVjZiBuKQorICAgICAgICAg ICAgKHdoZW4gKD0gbiAwKQorICAgICAgICAgICAgICA7OyBVc2UgYHBvc3QtYmxhbmsnIHRvIHJl c2V0IHRoZSBwcm9wZXJ0eSBvZiB0aGUgbGFzdCBibG9jay4KKyAgICAgICAgICAgICAgKG9yZy1l bGVtZW50LXB1dC1wcm9wZXJ0eSBjb3B5IDpwb3N0LWJsYW5rIHBvc3QtYmxhbmspKQorICAgICAg ICAgICAgKGluc2VydCAob3JnLWVsZW1lbnQtaW50ZXJwcmV0LWRhdGEgY29weSkpCisgICAgICAg ICAgICA7OyBFbnN1cmUgdG8gaW5kZW50IHRoZSBpbnNlcnRlZCBibG9jayBhbmQgbW92ZSBwb2lu dCB0byBpdHMgZW5kLgorICAgICAgICAgICAgKG9yZy1iYWJlbC1wcmV2aW91cy1zcmMtYmxvY2sg MSkKKyAgICAgICAgICAgIChvcmctaW5kZW50LWJsb2NrKQorICAgICAgICAgICAgKGdvdG8tY2hh ciAob3JnLWVsZW1lbnQtZW5kIChvcmctZWxlbWVudC1hdC1wb2ludCkpKSkKKyAgICAgICAgICA7 OyBMZWF2ZSBwb2ludCBhdCB0aGUgbGFzdCBpbnNlcnRlZCBibG9jay4KKyAgICAgICAgICAoZ290 by1jaGFyIChvcmctYmFiZWwtcHJldmlvdXMtc3JjLWJsb2NrIDEpKSkKICAgICAgIChsZXQgKChz dGFydCAocG9pbnQpKQogCSAgICAobGFuZyAob3IgKGNhciBpbmZvKSA7IFJldXNlIGxhbmd1YWdl IGZyb20gcHJldmlvdXMgYmxvY2suCiAgICAgICAgICAgICAgICAgICAgICAgKGNvbXBsZXRpbmct cmVhZApkaWZmIC0tZ2l0IGEvdGVzdGluZy9saXNwL3Rlc3Qtb2IuZWwgYi90ZXN0aW5nL2xpc3Av dGVzdC1vYi5lbAppbmRleCA0MmM3N2NhNTYuLjE5ZGJjNDIzMSAxMDA2NDQKLS0tIGEvdGVzdGlu Zy9saXNwL3Rlc3Qtb2IuZWwKKysrIGIvdGVzdGluZy9saXNwL3Rlc3Qtb2IuZWwKQEAgLTI2LDYg KzI2LDIzMSBAQAogKHJlcXVpcmUgJ29yZy10YWJsZSkKIChldmFsLWFuZC1jb21waWxlIChyZXF1 aXJlICdjbC1saWIpKQogCisoZXJ0LWRlZnRlc3QgdGVzdC1vYi9kZW1hcmNhdGUtYmxvY2sgKCkK KyAgIlRlc3Qgc3BsaXR0aW5nIGFuZCB3cmFwcGluZyBieSBkZW1hcmNhdGlvbi4iCisgIDs7IFRl c3Qgc3BsaXR0aW5nIHdpdGggZHVwbGljYXRpb24gb2YgbGFuZ3VhZ2UsIGJvZHksIHN3aXRjaGVz LCBhbmQgaGVhZGVycy4KKyAgKGxldCAoKGNhcHRpb24gIiMrY2FwdGlvbjogY2FwdGlvbi4iKQor ICAgICAgICAocmVnZXhwIChyeCAiIytjYXB0aW9uOiBjYXB0aW9uLiIpKQorICAgICAgICAob3Jn LWFkYXB0LWluZGVudGF0aW9uIG5pbCkpCisgICAgKG9yZy10ZXN0LXdpdGgtdGVtcC10ZXh0IChm b3JtYXQgIgorJXMKKyMraGVhZGVyOiA6dmFyIGVkZ2U9XCJhbHNvIGR1cGxpY2F0ZWRcIgorIyto ZWFkZXI6IDp3cmFwIFwic3JjIGFueS1zcGFuaXNoIC1uXCIKKyMrbmFtZTogTm9ib2R5CisjK2Jl Z2luX3NyYyBhbnktZW5nbGlzaCAtaSAtbiA6dmFyIGhlcmU9XCJkdXBsaWNhdGVkXCIgOndyYXAg XCJzcmMgYW55LWVuZ2xpc2ggLW5cIgorCithYm92ZSBzcGxpdAorPHBvaW50PgorYmVsb3cgc3Bs aXQKKworIytlbmRfc3JjCitkbyBub3Qgb3JnLWluZGVudC1ibG9jayB0ZXh0IGhlcmUKKyIgY2Fw dGlvbikKKyAgICAgIChsZXQgKCh3cmFwLXZhbCAic3JjIGFueS1zcGFuaXNoIC1uIikgYWJvdmUg YmVsb3cgYXZhcnMgYnZhcnMpCisgICAgICAgIChvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrKQor ICAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgICAgICAob3JnLWJhYmVsLW5leHQt c3JjLWJsb2NrKSA7OyB1cHBlciBzb3VyY2UgYmxvY2sKKyAgICAgICAgKHNldHEgYWJvdmUgKG9y Zy1iYWJlbC1nZXQtc3JjLWJsb2NrLWluZm8pKQorICAgICAgICAoc2V0cSBhdmFycyAob3JnLWJh YmVsLS1nZXQtdmFycyAobnRoIDIgYWJvdmUpKSkKKyAgICAgICAgKG9yZy1iYWJlbC1uZXh0LXNy Yy1ibG9jaykgOzsgbG93ZXIgc291cmNlIGJsb2NrCisgICAgICAgIChzZXRxIGJlbG93IChvcmct YmFiZWwtZ2V0LXNyYy1ibG9jay1pbmZvKSkKKyAgICAgICAgKHNldHEgYnZhcnMgKG9yZy1iYWJl bC0tZ2V0LXZhcnMgKG50aCAyIGJlbG93KSkpCisgICAgICAgIDs7IGR1cGxpY2F0ZWQgbXVsdGkt bGluZSBoZWFkZXIgYXJndW1lbnRzOgorICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICJhbHNvIGR1 cGxpY2F0ZWQiIChjZHIgKGFzc3EgJ2VkZ2UgYXZhcnMpKSkpCisgICAgICAgIChzaG91bGQgKHN0 cmluZz0gImFsc28gZHVwbGljYXRlZCIgKGNkciAoYXNzcSAnZWRnZSBidmFycykpKSkKKyAgICAg ICAgKHNob3VsZCAoc3RyaW5nPSB3cmFwLXZhbCAoY2RyIChhc3NxIDp3cmFwIChudGggMiBhYm92 ZSkpKSkpCisgICAgICAgIChzaG91bGQgKHN0cmluZz0gd3JhcC12YWwgKGNkciAoYXNzcSA6d3Jh cCAobnRoIDIgYmVsb3cpKSkpKQorICAgICAgICA7OyBkdXBsaWNhdGVkIGxhbmd1YWdlLCBvdGhl ciBoZWFkZXIgYXJndW1lbnRzLCBhbmQgc3dpdGNoZXM6CisgICAgICAgIChzaG91bGQgKHN0cmlu Zz0gImFueS1lbmdsaXNoIiAobnRoIDAgYWJvdmUpKSkKKyAgICAgICAgKHNob3VsZCAoc3RyaW5n PSAiYW55LWVuZ2xpc2giIChudGggMCBiZWxvdykpKQorICAgICAgICAoc2hvdWxkIChzdHJpbmc9 ICJhYm92ZSBzcGxpdCIgKG9yZy10cmltIChudGggMSBhYm92ZSkpKSkKKyAgICAgICAgKHNob3Vs ZCAoc3RyaW5nPSAiYmVsb3cgc3BsaXQiIChvcmctdHJpbSAobnRoIDEgYmVsb3cpKSkpCisgICAg ICAgIChzaG91bGQgKHN0cmluZz0gImR1cGxpY2F0ZWQiIChjZHIgKGFzc3EgJ2hlcmUgYXZhcnMp KSkpCisgICAgICAgIChzaG91bGQgKHN0cmluZz0gImR1cGxpY2F0ZWQiIChjZHIgKGFzc3EgJ2hl cmUgYnZhcnMpKSkpCisgICAgICAgIChzaG91bGQgKHN0cmluZz0gIi1pIC1uIiAobnRoIDMgYWJv dmUpKSkKKyAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAiLWkgLW4iIChudGggMyBiZWxvdykpKQor ICAgICAgICA7OyBub24tZHVwbGljYXRpb24gb2YgbmFtZSBhbmQgY2FwdGlvbiwgd2hpY2ggaXMg bm90IGluIGFib3ZlL2JlbG93LgorICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICJOb2JvZHkiIChu dGggNCBhYm92ZSkpKQorICAgICAgICAoc2hvdWxkLW5vdCAoc3RyaW5nPSAiIiAobnRoIDQgYmVs b3cpKSkKKyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAgKHNob3VsZCAo cmUtc2VhcmNoLWZvcndhcmQgcmVnZXhwKSkKKyAgICAgICAgKHNob3VsZC1ub3QgKHJlLXNlYXJj aC1mb3J3YXJkIHJlZ2V4cCBuaWwgJ25vZXJyb3IpKSkpKQorICA7OyBUZXN0IHdyYXBwaW5nIHBv aW50IGluIGJsYW5rIGxpbmVzIGJlbG93IHNvdXJjZSBibG9jaworICAob3JnLXRlc3Qtd2l0aC10 ZW1wLXRleHQgIgorIytiZWdpbl9zcmMgYW55LWxhbmd1YWdlIC1pIC1uIDp2YXIgaGVyZT1cIm5v dCBkdXBsaWNhdGVkXCIKK3RvIHVwcGVyIGJsb2NrCisjK2VuZF9zcmMKKzxwb2ludD4KKyIKKyAg ICAobGV0IChpbmZvIHZhcnMpCisgICAgICAob3JnLWJhYmVsLWRlbWFyY2F0ZS1ibG9jaykKKyAg ICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJs b2NrKQorICAgICAgKHNldHEgaW5mbyAob3JnLWJhYmVsLWdldC1zcmMtYmxvY2staW5mbykpICA7 OyB1cHBlciBzb3VyY2UgYmxvY2sgaW5mbworICAgICAgKHNldHEgdmFycyAob3JnLWJhYmVsLS1n ZXQtdmFycyAobnRoIDIgaW5mbykpKQorICAgICAgKHNob3VsZCAoc3RyaW5nPSAiYW55LWxhbmd1 YWdlIiAobnRoIDAgaW5mbykpKQorICAgICAgKHNob3VsZCAoc3RyaW5nPSAidG8gdXBwZXIgYmxv Y2siIChvcmctdHJpbSAobnRoIDEgaW5mbykpKSkKKyAgICAgIChzaG91bGQgKHN0cmluZz0gIm5v dCBkdXBsaWNhdGVkIiAoY2RyIChhc3NxICdoZXJlIHZhcnMpKSkpCisgICAgICAoc2hvdWxkIChz dHJpbmc9ICItaSAtbiIgKG50aCAzIGluZm8pKSkKKyAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMt YmxvY2spCisgICAgICAoc2V0cSBpbmZvIChvcmctYmFiZWwtZ2V0LXNyYy1ibG9jay1pbmZvKSkg OzsgbG93ZXIgc291cmNlIGJsb2NrIGluZm8KKyAgICAgIChzZXRxIHZhcnMgKG9yZy1iYWJlbC0t Z2V0LXZhcnMgKG50aCAyIGluZm8pKSkKKyAgICAgIChzaG91bGQgKHN0cmluZz0gImFueS1sYW5n dWFnZSIgKG50aCAwIGluZm8pKSkKKyAgICAgIChzaG91bGQgKHN0cmluZz0gIiIgKG9yZy10cmlt IChudGggMSBpbmZvKSkpKQorICAgICAgKHNob3VsZC1ub3QgdmFycykKKyAgICAgIChzaG91bGQg KHN0cmluZz0gIiIgKG50aCAzIGluZm8pKSkpKQorICA7OyBUZXN0IHdyYXBwaW5nIHJlZ2lvbiBp biBibGFuayBsaW5lcyBiZWxvdyBzb3VyY2UgYmxvY2sKKyAgKGxldCAoKHJlZ2lvbi10ZXh0ICJt YXJrIHRoaXMgbGluZSBhcyByZWdpb24gbGVhdmluZyBwb2ludCBpbiBibGFuayBsaW5lcyIpKQor ICAgIChvcmctdGVzdC13aXRoLXRlbXAtdGV4dCAoZm9ybWF0ICIKKyMrYmVnaW5fc3JjIGFueS1s YW5ndWFnZSAtaSAtbiA6dmFyIGhlcmU9XCJub3QgZHVwbGljYXRlZFwiCit0byB1cHBlciBibG9j aworIytlbmRfc3JjCis8cG9pbnQ+CislcworIiByZWdpb24tdGV4dCkKKyAgICAgIChsZXQgKGlu Zm8gdmFycykKKyAgICAgICAgKHNldC1tYXJrLWNvbW1hbmQgbmlsKQorICAgICAgICAoc2VhcmNo LWZvcndhcmQgcmVnaW9uLXRleHQpCisgICAgICAgIChleGNoYW5nZS1wb2ludC1hbmQtbWFyaykK KyAgICAgICAgOzsgQ2hlY2sgKG1hcmspLgorICAgICAgICAoc2hvdWxkIChzdHJpbmc9IHJlZ2lv bi10ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmcKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgKC0gKG1hcmspIChsZW5ndGggcmVnaW9uLXRleHQpKSAobWFy aykpKSkKKyAgICAgICAgKG9yZy1iYWJlbC1kZW1hcmNhdGUtYmxvY2spCisgICAgICAgIChnb3Rv LWNoYXIgKHBvaW50LW1pbikpCisgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2spCisg ICAgICAgIChzZXRxIGluZm8gKG9yZy1iYWJlbC1nZXQtc3JjLWJsb2NrLWluZm8pKSAgOzsgdXBw ZXIgc291cmNlIGJsb2NrIGluZm8KKyAgICAgICAgKHNldHEgdmFycyAob3JnLWJhYmVsLS1nZXQt dmFycyAobnRoIDIgaW5mbykpKQorICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICJhbnktbGFuZ3Vh Z2UiIChudGggMCBpbmZvKSkpCisgICAgICAgIChzaG91bGQgKHN0cmluZz0gInRvIHVwcGVyIGJs b2NrIiAob3JnLXRyaW0gKG50aCAxIGluZm8pKSkpCisgICAgICAgIChzaG91bGQgKHN0cmluZz0g Im5vdCBkdXBsaWNhdGVkIiAoY2RyIChhc3NxICdoZXJlIHZhcnMpKSkpCisgICAgICAgIChzaG91 bGQgKHN0cmluZz0gIi1pIC1uIiAobnRoIDMgaW5mbykpKQorICAgICAgICAob3JnLWJhYmVsLW5l eHQtc3JjLWJsb2NrKQorICAgICAgICAoc2V0cSBpbmZvIChvcmctYmFiZWwtZ2V0LXNyYy1ibG9j ay1pbmZvKSkgOzsgbG93ZXIgc291cmNlIGJsb2NrIGluZm8KKyAgICAgICAgKHNldHEgdmFycyAo b3JnLWJhYmVsLS1nZXQtdmFycyAobnRoIDIgaW5mbykpKQorICAgICAgICAoc2hvdWxkIChzdHJp bmc9ICJhbnktbGFuZ3VhZ2UiIChudGggMCBpbmZvKSkpCisgICAgICAgIChzaG91bGQgKHN0cmlu Zz0gcmVnaW9uLXRleHQgKG9yZy10cmltIChudGggMSBpbmZvKSkpKQorICAgICAgICAoc2hvdWxk LW5vdCB2YXJzKQorICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICIiIChudGggMyBpbmZvKSkpKSkp CisgIDs7IFRlc3QgcHJlZml4IGFyZ3VtZW50IHBvaW50IHNwbGl0dGluZy4KKyAgKGxldCAoKG9y Zy1hZGFwdC1pbmRlbnRhdGlvbiB0KQorICAgICAgICAob3JnLWVkaXQtc3JjLWNvbnRlbnQtaW5k ZW50YXRpb24gMikKKyAgICAgICAgKG9yZy1zcmMtcHJlc2VydmUtaW5kZW50YXRpb24gbmlsKQor ICAgICAgICAob2stY29sIDExKQorICAgICAgICAoc3RhcnMgIl5cXCpcXCpcXCpcXCpcXCpcXCpc XCpcXCpcXCpcXCoiKSkKKyAgICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQgIgorKioqKioqKioq KiAxMCBzdGFycyB3aXRoIHBvaW50IGJldHdlZW4gdHdvIGxpbmVzCisgICAgICAgICAgICMrYmVn aW5fc3JjIGVtYWNzLWxpc3AKKyAgICAgICAgICAgICA7OyB0byB1cHBlciBibG9jaworICAgICAg ICAgICAgIDxwb2ludD4KKyAgICAgICAgICAgICA7OyB0byBsb3dlciBibG9jaworICAgICAgICAg ICAjK2VuZF9zcmMKKyIKKyAgICAgIChvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrICdhLXByZWZp eC1hcmcpCisgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgICAgKGRvbGlzdCAocmVn ZXhwIGAoLHN0YXJzCisgICAgICAgICAgICAgICAgICAgICAgICAiI1xcK2JlZyIgIjs7IHRvIHVw cGVyIGJsb2NrIiAiI1xcK2VuZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICxzdGFycworICAg ICAgICAgICAgICAgICAgICAgICAgIiNcXCtiZWciICI7OyB0byBsb3dlciBibG9jayIgIiNcXCtl bmQiKSkKKyAgICAgICAgKHNob3VsZCAocmUtc2VhcmNoLWZvcndhcmQgcmVnZXhwKSkKKyAgICAg ICAgKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIDApKQorICAgICAgICAoY29uZCAoKHN0cmlu Zz0gcmVnZXhwIHN0YXJzKQorICAgICAgICAgICAgICAgKHNob3VsZCAoPSAwIChjdXJyZW50LWNv bHVtbikpKSkKKyAgICAgICAgICAgICAgKChzdHJpbmctcHJlZml4LXAgIjs7IiByZWdleHApCisg ICAgICAgICAgICAgICAoc2hvdWxkICg9ICgrIG9rLWNvbCBvcmctZWRpdC1zcmMtY29udGVudC1p bmRlbnRhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkp KQorICAgICAgICAgICAgICAodCAoc2hvdWxkICg9IG9rLWNvbCAoY3VycmVudC1jb2x1bW4pKSkp KSkpKQorICA7OyBUZXN0IHByZWZpeCBhcmd1bWVudCByZWdpb24gc3BsaXR0aW5nLgorICAobGV0 ICgob3JnLWFkYXB0LWluZGVudGF0aW9uIHQpCisgICAgICAgIChvcmctZWRpdC1zcmMtY29udGVu dC1pbmRlbnRhdGlvbiAyKQorICAgICAgICAob3JnLXNyYy1wcmVzZXJ2ZS1pbmRlbnRhdGlvbiBu aWwpCisgICAgICAgIChvay1jb2wgMTEpCisgICAgICAgIChzdGFycyAiXlxcKlxcKlxcKlxcKlxc KlxcKlxcKlxcKlxcKlxcKiIpCisgICAgICAgIChwYXJ0cyAnKCJ0byB1cHBlciBibG9jayIgIm1h cmsgdGhvc2Ugd29yZHMgYXMgcmVnaW9uIiAidG8gbG93ZXIgYmxvY2siKSkpCisgICAgKG9yZy10 ZXN0LXdpdGgtdGVtcC10ZXh0IChmb3JtYXQgIgorKioqKioqKioqKiAxMCBzdGFycyB3aXRoIHJl Z2lvbiBiZXR3ZWVuIHR3byBsaW5lcworICAgICAgICAgICAjK2hlYWRlcjogOnZhciBiPVwiYWxz byBzZWVuXCIKKyAgICAgICAgICAgIytiZWdpbl9zcmMgYW55LWxhbmd1YWdlIC1pIC1uIDp2YXIg YT1cInNlZW5cIgorICAgICAgICAgICAgICVzCisgICAgICAgICAgICAgPHBvaW50PiVzCisgICAg ICAgICAgICAgJXMKKyAgICAgICAgICAgIytlbmRfc3JjCisiIChudGggMCBwYXJ0cykgKG50aCAx IHBhcnRzKSAobnRoIDIgcGFydHMpKQorICAgICAgKGxldCAoKG4gMCkgaW5mbyB2YXJzKQorICAg ICAgICAoc2V0LW1hcmstY29tbWFuZCBuaWwpCisgICAgICAgIChzZWFyY2gtZm9yd2FyZCAobnRo IDEgcGFydHMpKQorICAgICAgICAoZXhjaGFuZ2UtcG9pbnQtYW5kLW1hcmspCisgICAgICAgIDs7 IENoZWNrIChtYXJrKS4KKyAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAobnRoIDEgcGFydHMpCisg ICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmcKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgKC0gKG1hcmspIChsZW5ndGggKG50aCAxIHBhcnRzKSkpIChtYXJrKSkpKQor ICAgICAgICAob3JnLWJhYmVsLWRlbWFyY2F0ZS1ibG9jayAnYS1wcmVmaXgtYXJndW1lbnQpCisg ICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAgICh3aGlsZSAoPCBuIChsZW5n dGggcGFydHMpKQorICAgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2spCisgICAgICAg ICAgKHNldHEgaW5mbyAob3JnLWJhYmVsLWdldC1zcmMtYmxvY2staW5mbykpCisgICAgICAgICAg KHNldHEgdmFycyAob3JnLWJhYmVsLS1nZXQtdmFycyAobnRoIDIgaW5mbykpKQorICAgICAgICAg IChzaG91bGQgKHN0cmluZz0gImFueS1sYW5ndWFnZSIgKG50aCAwIGluZm8pKSkKKyAgICAgICAg ICAoc2hvdWxkIChzdHJpbmc9IChudGggbiBwYXJ0cykgKG9yZy10cmltIChudGggMSBpbmZvKSkp KQorICAgICAgICAgIChzaG91bGQgKHN0cmluZz0gInNlZW4iIChjZHIgKGFzc3EgJ2EgdmFycykp KSkKKyAgICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICJhbHNvIHNlZW4iIChjZHIgKGFzc3EgJ2Ig dmFycykpKSkKKyAgICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICItaSAtbiIgKG50aCAzIGluZm8p KSkKKyAgICAgICAgICAoY2wtaW5jZiBuKSkpCisgICAgICAoZ290by1jaGFyIChwb2ludC1taW4p KQorICAgICAgKGRvbGlzdCAocmVnZXhwIGAoLHN0YXJzCisgICAgICAgICAgICAgICAgICAgICAg ICAiI1xcK2JlZyIgLChudGggMCBwYXJ0cykgIiNcXCtlbmQiCisgICAgICAgICAgICAgICAgICAg ICAgICAsc3RhcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICIjXFwrYmVnIiAsKG50aCAxIHBh cnRzKSAiI1xcK2VuZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICxzdGFycworICAgICAgICAg ICAgICAgICAgICAgICAgIiNcXCtiZWciICwobnRoIDIgcGFydHMpICIjXFwrZW5kIikpCisgICAg ICAgIChzaG91bGQgKHJlLXNlYXJjaC1mb3J3YXJkIHJlZ2V4cCkpCisgICAgICAgIChnb3RvLWNo YXIgKG1hdGNoLWJlZ2lubmluZyAwKSkKKyAgICAgICAgKGNvbmQgKChzdHJpbmc9IHJlZ2V4cCBz dGFycykKKyAgICAgICAgICAgICAgIChzaG91bGQgKD0gMCAoY3VycmVudC1jb2x1bW4pKSkpCisg ICAgICAgICAgICAgICgobWVtcSByZWdleHAgcGFydHMpCisgICAgICAgICAgICAgICAoc2hvdWxk ICg9ICgrIG9rLWNvbCBvcmctZWRpdC1zcmMtY29udGVudC1pbmRlbnRhdGlvbikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkpKQorICAgICAgICAgICAgICAodCAo c2hvdWxkICg9IG9rLWNvbCAoY3VycmVudC1jb2x1bW4pKSkpKSkpCisgICAgOzsgVGVzdCBmb3Ig YHVzZXItZXJyb3JzJ3MuCisgICAgKGxldCogKChjYXB0aW9uICIjK2NhcHRpb246IGNhcHRpb24u IikKKyAgICAgICAgICAgKHdpdGhpbi1ib2R5ICI7OyB3aXRoaW4tYm9keSIpCisgICAgICAgICAg IChiZWxvdy1ibG9jayAiIyBiZWxvdyBibG9jayIpCisgICAgICAgICAgICh0ZW1wbGF0ZSAgIgor JXMlcworIytiZWdpbl9zcmMgZW1hY3MtbGlzcAorCisgICVzCisKKyMrZW5kX3NyYworCislcyVz CisiKSkKKyAgICAgIDs7IFRlc3QgcG9pbnQgYXQgY2FwdGlvbi4KKyAgICAgIChvcmctdGVzdC13 aXRoLXRlbXAtdGV4dAorICAgICAgICAgIChmb3JtYXQgdGVtcGxhdGUgIjxwb2ludD4iIGNhcHRp b24gd2l0aGluLWJvZHkgYmVsb3ctYmxvY2sgIiIpCisgICAgICAgIDs7IENoZWNrIChwb2ludCku CisgICAgICAgIChzaG91bGQgKHN0cmluZz0gY2FwdGlvbgorICAgICAgICAgICAgICAgICAgICAg ICAgIChidWZmZXItc3Vic3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkg KCsgKHBvaW50KSAobGVuZ3RoIGNhcHRpb24pKSkpKQorICAgICAgICAoc2hvdWxkLWVycm9yIChv cmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrKSA6dHlwZSAndXNlci1lcnJvcikpCisgICAgICA7OyBU ZXN0IHJlZ2lvbiBmcm9tIGJlbG93IHRoZSBibG9jayAobWFyaykgdG8gd2l0aGluIHRoZSBib2R5 IChwb2ludCkuCisgICAgICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQKKyAgICAgICAgICAoZm9y bWF0IHRlbXBsYXRlICIiIGNhcHRpb24gd2l0aGluLWJvZHkgYmVsb3ctYmxvY2sgIjxwb2ludD4i KQorICAgICAgICA7OyBTZXQgbWFyay4KKyAgICAgICAgKHNldC1tYXJrLWNvbW1hbmQgbmlsKQor ICAgICAgICA7OyBDaGVjayAobWFyaykuCisgICAgICAgIChzaG91bGQgKHN0cmluZz0gYmVsb3ct YmxvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZworICAgICAg ICAgICAgICAgICAgICAgICAgICAoLSAobWFyaykgKGxlbmd0aCBiZWxvdy1ibG9jaykpIChtYXJr KSkpKQorICAgICAgICA7OyBTZXQgcG9pbnQuCisgICAgICAgIChzaG91bGQgKHNlYXJjaC1iYWNr d2FyZCB3aXRoaW4tYm9keSBuaWwgJ25vZXJyb3IpKQorICAgICAgICAoZ290by1jaGFyIChtYXRj aC1iZWdpbm5pbmcgMCkpCisgICAgICAgIDs7IENoZWNrIChwb2ludCkuCisgICAgICAgIChzaG91 bGQgKHN0cmluZz0gd2l0aGluLWJvZHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVy LXN1YnN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpICgrIChwb2ludCkg KGxlbmd0aCB3aXRoaW4tYm9keSkpKSkpCisgICAgICAgIChzaG91bGQtZXJyb3IgKG9yZy1iYWJl bC1kZW1hcmNhdGUtYmxvY2spIDp0eXBlICd1c2VyLWVycm9yKSkpKSkKKwogKGVydC1kZWZ0ZXN0 IHRlc3Qtb2IvaW5kZW50ZWQtY2FjaGVkLW9yZy1icmFja2V0LWxpbmsgKCkKICAgIldoZW4gdGhl IHJlc3VsdCBvZiBhIHNvdXJjZSBibG9jayBpcyBhIGNhY2hlZCBpbmRlbnRlZCBsaW5rIGl0CiBz aG91bGQgc3RpbGwgcmV0dXJuIHRoZSBsaW5rLiIKLS0gCjIuNDIuMAoK --=_ea0a67be166c0581ff8f80f963b70714--