From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2 ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id OJLKBkoOJWGr4AAAgWs5BA (envelope-from ) for ; Tue, 24 Aug 2021 17:20:42 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2 with LMTPS id MKVpAkoOJWFxbAAAB5/wlQ (envelope-from ) for ; Tue, 24 Aug 2021 15:20:42 +0000 Received: from mail.notmuchmail.org (nmbug.tethera.net [144.217.243.247]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 96FB38947 for ; Tue, 24 Aug 2021 17:20:41 +0200 (CEST) Received: from nmbug.tethera.net (localhost [127.0.0.1]) by mail.notmuchmail.org (Postfix) with ESMTP id EF6C82050D; Tue, 24 Aug 2021 11:20:21 -0400 (EDT) Received: from fethera.tethera.net (fethera.tethera.net [IPv6:2607:5300:60:c5::1]) by mail.notmuchmail.org (Postfix) with ESMTP id 2E103202CF for ; Tue, 24 Aug 2021 11:20:16 -0400 (EDT) Received: by fethera.tethera.net (Postfix, from userid 1001) id 25A5B5FD5C; Tue, 24 Aug 2021 11:20:16 -0400 (EDT) Received: (nullmailer pid 2942885 invoked by uid 1000); Tue, 24 Aug 2021 15:17:52 -0000 From: David Bremner To: notmuch@notmuchmail.org Cc: David Bremner Subject: [PATCH 28/36] lib/parse-sexp: handle saved queries Date: Tue, 24 Aug 2021 08:17:37 -0700 Message-Id: <20210824151745.2941868-29-david@tethera.net> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210824151745.2941868-1-david@tethera.net> References: <20210824151745.2941868-1-david@tethera.net> MIME-Version: 1.0 Message-ID-Hash: GPC372QXWA5BPZESJ3LUYT4LTYCGKBJB X-Message-ID-Hash: GPC372QXWA5BPZESJ3LUYT4LTYCGKBJB X-MailFrom: bremner@tethera.net X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-notmuch.notmuchmail.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.1 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1629818441; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=jo7CJC4IvKj244H4aJn5bB0y+JYA7vvRXuU/urEbqG8=; b=gRN4zOLSp2v0klHtj+MOfXrvhMy44vq+EVWixDSHx30G7WOcbTSaWoqHR6+oSsBXjXjE80 rPGTR0FfG68QqY84YMagM37kWxl4XnXzMr5L2O+VXe0PJQVKypPz/1NGwdMTiUtGxAGwCq 57sS2ehEaBkMYFIKQwewoQJXUc1RU+pG2ynZxPJlxHj+J6QGoapLfoZe/HgEoIbzG/DC66 LdV/R7j4D3dvkgKIIorb/aDhuAGdZDhgRcuMd3R9VtolkEEXyGnTnuZXY4OIYziU8tSKoQ lmOUL4RnzMPaN76Xe/aVwcyyNTRf1BGmU6uKxqgIh9Ug9x2OKxYjFYtenimyGQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1629818441; a=rsa-sha256; cv=none; b=YyoEE3U4dZle7VexMiddW6cNtEoiYwk5rl9P67VluNv6JsUiYXEb8AV75q+Ab/0jTHQhm1 1oo3qW6/oAh3NRsSjwIn2TE4vbJ2GOz1LrG2oliro5bz5Na3Bn/KmC5pEJjXucvGmclHAf nlbD8c8O2lq9grsGXoBwdXBXmYKXFXhyukFexV1FXV4HUJj7gvpNMTzzkd39WaGhmjTjpS OJDs4oxC4FpVWuB/LE6T3fTrlmG4pN9YlLKSSw7rlRaMCDKXCM5q+nz1n5U8DFMrtoPjVw X2s0Fdoeg8hXlC1wdGfGjEB/aZCaYWCI8fa750G89t/YshUMRtL5Lg4ML5H/6g== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 144.217.243.247 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org X-Migadu-Spam-Score: -0.90 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 144.217.243.247 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org X-Migadu-Queue-Id: 96FB38947 X-Spam-Score: -0.90 X-Migadu-Scanner: scn0.migadu.com X-TUID: DrZDStQ8p70x VGhpcyBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IGFuYWxvZ291cyB0byBxdWVyeTogaW4gdGhlIFhh cGlhbg0KUXVlcnlQYXJzZXIgYmFzZWQgcGFyc2VyLiBQZXJoYXBzIGNvdW50ZXJpbnR1aXRpdmVs eSwgdGhlIHNhdmVkDQpxdWVyaWVzIGN1cnJlbnRseSBoYXZlIHRvIGJlIGluIHRoZSBvcmlnaW5h bCBxdWVyeSBzeW50YXggKGkuZS4gbm90DQpzLWV4cHJlc3Npb25zKS4NCi0tLQ0KIGRvYy9tYW43 L25vdG11Y2gtc2V4cC1xdWVyaWVzLnJzdCB8ICA2ICsrKysrKw0KIGxpYi9wYXJzZS1zZXhwLmNj ICAgICAgICAgICAgICAgICB8IDI0ICsrKysrKysrKysrKysrLS0tLS0tLQ0KIHRlc3QvVDA4MS1z ZXhwci1zZWFyY2guc2ggICAgICAgICB8IDM2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysNCiAzIGZpbGVzIGNoYW5nZWQsIDU4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pDQoN CmRpZmYgLS1naXQgYS9kb2MvbWFuNy9ub3RtdWNoLXNleHAtcXVlcmllcy5yc3QgYi9kb2MvbWFu Ny9ub3RtdWNoLXNleHAtcXVlcmllcy5yc3QNCmluZGV4IGE5ZmQyZjJiLi5kYjNmODgzNyAxMDA2 NDQNCi0tLSBhL2RvYy9tYW43L25vdG11Y2gtc2V4cC1xdWVyaWVzLnJzdA0KKysrIGIvZG9jL21h bjcvbm90bXVjaC1zZXhwLXF1ZXJpZXMucnN0DQpAQCAtMTUzLDYgKzE1MywxMiBAQCB0aGF0IGFy ZSBuZWl0aGVyIG9wZXJhdG9ycyBub3IgZmllbGRzLg0KICAgICB0aG9zZSBtYXRjaGluZyBhbGwg b2YgfHExfCAuLi4gfHFufC4gU3VwcG9ydGVkIGluIG1vc3QgdGVybSBbI25vdC1wYXRoXV8gb3IN CiAgICAgcGhyYXNlIGZpZWxkcy4gTW9zdCBjb21tb25seSB1c2VkIGluIHRoZSBgYHRocmVhZGBg IGZpZWxkLg0KIA0KK2BgKHF1ZXJ5YGAgKmF0b20qIGBgKWBgDQorICAgIEV4cGFuZCB0byB0aGUg c2F2ZWQgcXVlcnkgbmFtZWQgYnkgKmF0b20qLiBTZWUNCisgICAgOmFueTpgbm90bXVjaC1jb25m aWcoMSlgIGZvciBtb3JlLiBOb3RlIHRoYXQgdGhlIHNhdmVkIHF1ZXJ5IG11c3QNCisgICAgYmUg aW4gaW5maXggc3ludGF4ICg6YW55OmBub3RtdWNoLXNlYXJjaC10ZXJtcyg3KWApLiBOb3Qgc3Vw cG9ydGVkDQorICAgIGluc2lkZSBmaWVsZHMuDQorDQogYGAocmVnZXhgYCAqYXRvbSogYGApYGAg YGAocnhgYCAqYXRvbSogYGApYGANCiAgICAgSW50ZXJwcmV0ICphdG9tKiBhcyBhIFBPU0lYLjIg cmVndWxhciBleHByZXNzaW9uIChzZWUNCiAgICAgOm1hbnBhZ2U6YHJlZ2V4KDcpYCkuIFRoaXMg YXBwbGllcyBpbiB0ZXJtIGZpZWxkcyBhbmQgYSBzdWJzZXQgWyNub3QtcGhyYXNlXV8gb2YNCmRp ZmYgLS1naXQgYS9saWIvcGFyc2Utc2V4cC5jYyBiL2xpYi9wYXJzZS1zZXhwLmNjDQppbmRleCAw ODlkZTM1My4uMGZiYjJhZmMgMTAwNjQ0DQotLS0gYS9saWIvcGFyc2Utc2V4cC5jYw0KKysrIGIv bGliL3BhcnNlLXNleHAuY2MNCkBAIC0xNyw2ICsxNyw3IEBAIHR5cGVkZWYgZW51bSB7DQogICAg IFNFWFBfRkxBR19ET19SRUdFWAk9IDEgPDwgNSwNCiAgICAgU0VYUF9GTEFHX0VYUEFORAk9IDEg PDwgNiwNCiAgICAgU0VYUF9GTEFHX0RPX0VYUEFORCA9IDEgPDwgNywNCisgICAgU0VYUF9GTEFH X09SUEhBTgk9IDEgPDwgOCwNCiB9IF9zZXhwX2ZsYWdfdDsNCiANCiAvKg0KQEAgLTU4LDcgKzU5 LDcgQEAgc3RhdGljIF9zZXhwX3ByZWZpeF90IHByZWZpeGVzW10gPQ0KICAgICB7ICJpZCIsICAg ICAgICAgICAgIFhhcGlhbjo6UXVlcnk6Ok9QX09SLCAgICAgICAgICAgWGFwaWFuOjpRdWVyeTo6 TWF0Y2hOb3RoaW5nLA0KICAgICAgIFNFWFBfRkxBR19GSUVMRCB8IFNFWFBfRkxBR19CT09MRUFO IHwgU0VYUF9GTEFHX1dJTERDQVJEIHwgU0VYUF9GTEFHX1JFR0VYIH0sDQogICAgIHsgImluZml4 IiwgICAgICAgICAgWGFwaWFuOjpRdWVyeTo6T1BfSU5WQUxJRCwgICAgICBYYXBpYW46OlF1ZXJ5 OjpNYXRjaEFsbCwNCi0gICAgICBTRVhQX0ZMQUdfU0lOR0xFIH0sDQorICAgICAgU0VYUF9GTEFH X1NJTkdMRSB8IFNFWFBfRkxBR19PUlBIQU4gfSwNCiAgICAgeyAiaXMiLCAgICAgICAgICAgICBY YXBpYW46OlF1ZXJ5OjpPUF9BTkQsICAgICAgICAgIFhhcGlhbjo6UXVlcnk6Ok1hdGNoQWxsLA0K ICAgICAgIFNFWFBfRkxBR19GSUVMRCB8IFNFWFBfRkxBR19CT09MRUFOIHwgU0VYUF9GTEFHX1dJ TERDQVJEIHwgU0VYUF9GTEFHX1JFR0VYIHwgU0VYUF9GTEFHX0VYUEFORCB9LA0KICAgICB7ICJt YXRjaGluZyIsICAgICAgIFhhcGlhbjo6UXVlcnk6Ok9QX0FORCwgICAgICAgICAgWGFwaWFuOjpR dWVyeTo6TWF0Y2hBbGwsDQpAQCAtNzcsNiArNzgsOCBAQCBzdGF0aWMgX3NleHBfcHJlZml4X3Qg cHJlZml4ZXNbXSA9DQogICAgICAgU0VYUF9GTEFHX0ZJRUxEIHwgU0VYUF9GTEFHX0JPT0xFQU4g fCBTRVhQX0ZMQUdfV0lMRENBUkQgfCBTRVhQX0ZMQUdfUkVHRVggfSwNCiAgICAgeyAicHJvcGVy dHkiLCAgICAgICBYYXBpYW46OlF1ZXJ5OjpPUF9BTkQsICAgICAgICAgIFhhcGlhbjo6UXVlcnk6 Ok1hdGNoQWxsLA0KICAgICAgIFNFWFBfRkxBR19GSUVMRCB8IFNFWFBfRkxBR19CT09MRUFOIHwg U0VYUF9GTEFHX1dJTERDQVJEIHwgU0VYUF9GTEFHX1JFR0VYIHwgU0VYUF9GTEFHX0VYUEFORCB9 LA0KKyAgICB7ICJxdWVyeSIsICAgICAgICAgIFhhcGlhbjo6UXVlcnk6Ok9QX0lOVkFMSUQsICAg ICAgWGFwaWFuOjpRdWVyeTo6TWF0Y2hOb3RoaW5nLA0KKyAgICAgIFNFWFBfRkxBR19TSU5HTEUg fCBTRVhQX0ZMQUdfT1JQSEFOIH0sDQogICAgIHsgInJlZ2V4IiwgICAgICAgICAgWGFwaWFuOjpR dWVyeTo6T1BfSU5WQUxJRCwgICAgICBYYXBpYW46OlF1ZXJ5OjpNYXRjaEFsbCwNCiAgICAgICBT RVhQX0ZMQUdfU0lOR0xFIHwgU0VYUF9GTEFHX0RPX1JFR0VYIH0sDQogICAgIHsgInJ4IiwgICAg ICAgICAgICAgWGFwaWFuOjpRdWVyeTo6T1BfSU5WQUxJRCwgICAgICBYYXBpYW46OlF1ZXJ5OjpN YXRjaEFsbCwNCkBAIC0yNDUsMTMgKzI0OCw4IEBAIF9zZXhwX2V4cGFuZF9xdWVyeSAobm90bXVj aF9kYXRhYmFzZV90ICpub3RtdWNoLA0KIH0NCiANCiBzdGF0aWMgbm90bXVjaF9zdGF0dXNfdA0K LV9zZXhwX3BhcnNlX2luZml4IChub3RtdWNoX2RhdGFiYXNlX3QgKm5vdG11Y2gsICBjb25zdCBf c2V4cF9wcmVmaXhfdCAqcGFyZW50LA0KLQkJICAgY29uc3Qgc2V4cF90ICpzeCwgWGFwaWFuOjpR dWVyeSAmb3V0cHV0KQ0KK19zZXhwX3BhcnNlX2luZml4IChub3RtdWNoX2RhdGFiYXNlX3QgKm5v dG11Y2gsIGNvbnN0IHNleHBfdCAqc3gsIFhhcGlhbjo6UXVlcnkgJm91dHB1dCkNCiB7DQotICAg IGlmIChwYXJlbnQpIHsNCi0JX25vdG11Y2hfZGF0YWJhc2VfbG9nIChub3RtdWNoLCAiJ2luZml4 JyBub3Qgc3VwcG9ydGVkIGluc2lkZSAnJXMnXG4iLCBwYXJlbnQtPm5hbWUpOw0KLQlyZXR1cm4g Tk9UTVVDSF9TVEFUVVNfQkFEX1FVRVJZX1NZTlRBWDsNCi0gICAgfQ0KICAgICB0cnkgew0KIAlv dXRwdXQgPSBub3RtdWNoLT5xdWVyeV9wYXJzZXItPnBhcnNlX3F1ZXJ5IChzeC0+dmFsLCBOT1RN VUNIX1FVRVJZX1BBUlNFUl9GTEFHUyk7DQogICAgIH0gY2F0Y2ggKGNvbnN0IFhhcGlhbjo6UXVl cnlQYXJzZXJFcnJvciAmZXJyb3IpIHsNCkBAIC0zNjEsNiArMzU5LDEyIEBAIF9zZXhwX3RvX3hh cGlhbl9xdWVyeSAobm90bXVjaF9kYXRhYmFzZV90ICpub3RtdWNoLCBjb25zdCBfc2V4cF9wcmVm aXhfdCAqcGFyZW50DQogCQlwYXJlbnQgPSBwcmVmaXg7DQogCSAgICB9DQogDQorCSAgICBpZiAo cGFyZW50ICYmIChwcmVmaXgtPmZsYWdzICYgU0VYUF9GTEFHX09SUEhBTikpIHsNCisJCV9ub3Rt dWNoX2RhdGFiYXNlX2xvZyAobm90bXVjaCwgIiclcycgbm90IHN1cHBvcnRlZCBpbnNpZGUgJyVz J1xuIiwNCisJCQkJICAgICAgIHByZWZpeC0+bmFtZSwgcGFyZW50LT5uYW1lKTsNCisJCXJldHVy biBOT1RNVUNIX1NUQVRVU19CQURfUVVFUllfU1lOVEFYOw0KKwkgICAgfQ0KKw0KIAkgICAgaWYg KChwcmVmaXgtPmZsYWdzICYgU0VYUF9GTEFHX1NJTkdMRSkgJiYNCiAJCSghIHN4LT5saXN0LT5u ZXh0IHx8IHN4LT5saXN0LT5uZXh0LT5uZXh0IHx8IHN4LT5saXN0LT5uZXh0LT50eSAhPSBTRVhQ X1ZBTFVFKSkgew0KIAkJX25vdG11Y2hfZGF0YWJhc2VfbG9nIChub3RtdWNoLCAiJyVzJyBleHBl Y3RzIHNpbmdsZSBhdG9tIGFzIGFyZ3VtZW50XG4iLA0KQEAgLTM2OSw3ICszNzMsMTEgQEAgX3Nl eHBfdG9feGFwaWFuX3F1ZXJ5IChub3RtdWNoX2RhdGFiYXNlX3QgKm5vdG11Y2gsIGNvbnN0IF9z ZXhwX3ByZWZpeF90ICpwYXJlbnQNCiAJICAgIH0NCiANCiAJICAgIGlmIChzdHJjbXAgKHByZWZp eC0+bmFtZSwgImluZml4IikgPT0gMCkgew0KLQkJcmV0dXJuIF9zZXhwX3BhcnNlX2luZml4IChu b3RtdWNoLCBwYXJlbnQsIHN4LT5saXN0LT5uZXh0LCBvdXRwdXQpOw0KKwkJcmV0dXJuIF9zZXhw X3BhcnNlX2luZml4IChub3RtdWNoLCBzeC0+bGlzdC0+bmV4dCwgb3V0cHV0KTsNCisJICAgIH0N CisNCisJICAgIGlmIChzdHJjbXAgKHByZWZpeC0+bmFtZSwgInF1ZXJ5IikgPT0gMCkgew0KKwkJ cmV0dXJuIF9ub3RtdWNoX3F1ZXJ5X25hbWVfdG9fcXVlcnkgKG5vdG11Y2gsIHN4LT5saXN0LT5u ZXh0LT52YWwsIG91dHB1dCk7DQogCSAgICB9DQogDQogCSAgICBpZiAocHJlZml4LT54YXBpYW5f b3AgPT0gWGFwaWFuOjpRdWVyeTo6T1BfV0lMRENBUkQpDQpkaWZmIC0tZ2l0IGEvdGVzdC9UMDgx LXNleHByLXNlYXJjaC5zaCBiL3Rlc3QvVDA4MS1zZXhwci1zZWFyY2guc2gNCmluZGV4IDA0ODRi MjMxLi4yMmU1MzMzNSAxMDA3NTUNCi0tLSBhL3Rlc3QvVDA4MS1zZXhwci1zZWFyY2guc2gNCisr KyBiL3Rlc3QvVDA4MS1zZXhwci1zZWFyY2guc2gNCkBAIC0yMTcsMTAgKzIxNyw0NiBAQCBub3Rt dWNoIHNlYXJjaCBtaW1ldHlwZTp0ZXh0L2h0bWwgPiBFWFBFQ1RFRA0KIG5vdG11Y2ggc2VhcmNo IC0tcXVlcnk9c2V4cCAnKG1pbWV0eXBlIHRleHQgaHRtbCknICA+IE9VVFBVVA0KIHRlc3RfZXhw ZWN0X2VxdWFsX2ZpbGUgRVhQRUNURUQgT1VUUFVUDQogDQorUVVFUllTVFI9ImRhdGU6MjAwOS0x MS0xOC4uMjAwOS0xMS0xOCBhbmQgdGFnOnVucmVhZCINCitRVUVSWVNUUjI9InF1ZXJ5OnRlc3Qg YW5kIHN1YmplY3Q6TWFpbGRpciINCitub3RtdWNoIGNvbmZpZyBzZXQgLS1kYXRhYmFzZSBxdWVy eS50ZXN0ICIkUVVFUllTVFIiDQorbm90bXVjaCBjb25maWcgc2V0IHF1ZXJ5LnRlc3QyICIkUVVF UllTVFIyIg0KKw0KK3Rlc3RfYmVnaW5fc3VidGVzdCAiaWxsLWZvcm1lZCBuYW1lZCBxdWVyeSBz ZWFyY2giDQorbm90bXVjaCBzZWFyY2ggLS1xdWVyeT1zZXhwICcocXVlcnkpJyA+IE9VVFBVVCAy PiYxDQorY2F0IDw8RU9GID4gRVhQRUNURUQNCitub3RtdWNoIHNlYXJjaDogU3ludGF4IGVycm9y IGluIHF1ZXJ5DQorJ3F1ZXJ5JyBleHBlY3RzIHNpbmdsZSBhdG9tIGFzIGFyZ3VtZW50DQorRU9G DQordGVzdF9leHBlY3RfZXF1YWxfZmlsZSBFWFBFQ1RFRCBPVVRQVVQNCisNCit0ZXN0X2JlZ2lu X3N1YnRlc3QgImlsbC1mb3JtZWQgbmFtZWQgcXVlcnkgc2VhcmNoIDIiDQorbm90bXVjaCBzZWFy Y2ggLS1xdWVyeT1zZXhwICcodG8gKHF1ZXJ5KSknID4gT1VUUFVUIDI+JjENCitjYXQgPDxFT0Yg PiBFWFBFQ1RFRA0KK25vdG11Y2ggc2VhcmNoOiBTeW50YXggZXJyb3IgaW4gcXVlcnkNCisncXVl cnknIG5vdCBzdXBwb3J0ZWQgaW5zaWRlICd0bycNCitFT0YNCit0ZXN0X2V4cGVjdF9lcXVhbF9m aWxlIEVYUEVDVEVEIE9VVFBVVA0KKw0KK3Rlc3RfYmVnaW5fc3VidGVzdCAic2VhcmNoIG5hbWVk IHF1ZXJ5Ig0KK25vdG11Y2ggc2VhcmNoIC0tcXVlcnk9c2V4cCAnKHF1ZXJ5IHRlc3QpJyA+IE9V VFBVVA0KK25vdG11Y2ggc2VhcmNoICRRVUVSWVNUUiA+IEVYUEVDVEVEDQordGVzdF9leHBlY3Rf ZXF1YWxfZmlsZSBFWFBFQ1RFRCBPVVRQVVQNCisNCiB0ZXN0X2JlZ2luX3N1YnRlc3QgIlNlYXJj aCBieSAnc3ViamVjdCcgKHV0Zi04LCBwaHJhc2UtdG9rZW4pOiINCiBvdXRwdXQ9JChub3RtdWNo IHNlYXJjaCAtLXF1ZXJ5PXNleHAgJyhzdWJqZWN0IHV0Zjgtc8O8YmrDqWN0KScgfCBub3RtdWNo X3NlYXJjaF9zYW5pdGl6ZSkNCiB0ZXN0X2V4cGVjdF9lcXVhbCAiJG91dHB1dCIgInRocmVhZDpY WFggICAyMDAwLTAxLTAxIFsxLzFdIE5vdG11Y2ggVGVzdCBTdWl0ZTsgdXRmOC1zw7xiasOpY3Qg KGluYm94IHVucmVhZCkiDQogDQordGVzdF9iZWdpbl9zdWJ0ZXN0ICJzZWFyY2ggbmFtZWQgcXVl cnkgd2l0aCBvdGhlciB0ZXJtcyINCitub3RtdWNoIHNlYXJjaCAtLXF1ZXJ5PXNleHAgJyhhbmQg KHF1ZXJ5IHRlc3QpIChzdWJqZWN0IE1haWxkaXIpKScgPiBPVVRQVVQNCitub3RtdWNoIHNlYXJj aCAkUVVFUllTVFIgYW5kIHN1YmplY3Q6TWFpbGRpciA+IEVYUEVDVEVEDQordGVzdF9leHBlY3Rf ZXF1YWxfZmlsZSBFWFBFQ1RFRCBPVVRQVVQNCisNCit0ZXN0X2JlZ2luX3N1YnRlc3QgInNlYXJj aCBuZXN0ZWQgbmFtZWQgcXVlcnkiDQorbm90bXVjaCBzZWFyY2ggLS1xdWVyeT1zZXhwICcocXVl cnkgdGVzdDIpJyA+IE9VVFBVVA0KK25vdG11Y2ggc2VhcmNoICRRVUVSWVNUUjIgPiBFWFBFQ1RF RA0KK3Rlc3RfZXhwZWN0X2VxdWFsX2ZpbGUgRVhQRUNURUQgT1VUUFVUDQorDQogdGVzdF9iZWdp bl9zdWJ0ZXN0ICJTZWFyY2ggYnkgJ3N1YmplY3QnICh1dGYtOCwgcXVvdGVkIHN0cmluZyk6Ig0K IG91dHB1dD0kKG5vdG11Y2ggc2VhcmNoIC0tcXVlcnk9c2V4cCAnKHN1YmplY3QgInV0Zjggc8O8 YmrDqWN0IiknIHwgbm90bXVjaF9zZWFyY2hfc2FuaXRpemUpDQogdGVzdF9leHBlY3RfZXF1YWwg IiRvdXRwdXQiICJ0aHJlYWQ6WFhYICAgMjAwMC0wMS0wMSBbMS8xXSBOb3RtdWNoIFRlc3QgU3Vp dGU7IHV0Zjgtc8O8YmrDqWN0IChpbmJveCB1bnJlYWQpIg0KLS0gDQoyLjMyLjAN