From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id GOm7OJ5VFWFdNwEAgWs5BA (envelope-from ) for ; Thu, 12 Aug 2021 19:08:46 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id oLVNNJ5VFWHdHAAAbx9fmQ (envelope-from ) for ; Thu, 12 Aug 2021 17:08:46 +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 72D8DB9BB for ; Thu, 12 Aug 2021 19:08:46 +0200 (CEST) Received: from nmbug.tethera.net (localhost [127.0.0.1]) by mail.notmuchmail.org (Postfix) with ESMTP id B430C29240; Thu, 12 Aug 2021 13:08:15 -0400 (EDT) Received: from fethera.tethera.net (fethera.tethera.net [IPv6:2607:5300:60:c5::1]) by mail.notmuchmail.org (Postfix) with ESMTP id 8FD9829217 for ; Thu, 12 Aug 2021 13:08:05 -0400 (EDT) Received: by fethera.tethera.net (Postfix, from userid 1001) id 766765FD5C; Thu, 12 Aug 2021 13:08:05 -0400 (EDT) Received: (nullmailer pid 1348747 invoked by uid 1000); Thu, 12 Aug 2021 17:07:43 -0000 From: David Bremner To: notmuch@notmuchmail.org Cc: David Bremner Subject: [PATCH 13/31] lib/parse-sexp: add term prefix backed fields Date: Thu, 12 Aug 2021 10:07:10 -0700 Message-Id: <20210812170728.1348333-14-david@tethera.net> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210812170728.1348333-1-david@tethera.net> References: <20210812170728.1348333-1-david@tethera.net> MIME-Version: 1.0 Message-ID-Hash: XKNSLAUQ5DMTZ6EWGXANDJWY64TMPCVS X-Message-ID-Hash: XKNSLAUQ5DMTZ6EWGXANDJWY64TMPCVS 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=1628788126; 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=W1EvhYAmtWK57f+JoXXsaqEBWDhozcZqzgDpyfbKUm4=; b=hUXqPzRbAdFJpOHMe/JX+2mzeo3PmglnOvxdFRddmbuzEY6nUiYe2epHSCbxxFsmQHSCC6 IErlLGo7rb7McwBlaCbFwUSTfH5TMUd+H7RqayTWTjq+hQsJABF9DXm+s1QsyAVZTyNX44 ESECPRposDqIBfv0RR0UJsNxCRcIacl9mUkXzDkUU8O0Rx7LELggTdMAK0VGLdfGR1y8So kXxPu718xLBJX5AI+teJCQ5jH0Wcc9NFAhPThk3OsVYZV1o3d6ic1WU+NmUooeLmmw/p+l C9HDk0SzF9gQdHjBFO+9momFBJZuCBjx8CTgqbIet/cCrKSQv0SkgkZLM1z86g== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1628788126; a=rsa-sha256; cv=none; b=WG+23TjkstmzTYya8iLShTG5+Eo4zTPeyCfaKDCTMLx3Aff0aJThStW7/6wvx87zkSF5u7 Rb8YW4xJYpbEY3tWI3QEZSs1XIu9Jfm6uXh44keIvhSgFlgNY5IadB6CY3/FoYTeJsWgXh Nuh06jbA2tCpTIdsRLlzkp8dGG+p8OwlPUFlL5qq1vn8ovyKaaCG5AIgtGC701Q+a3pgAL ivQrAXAi8hHvKjAIbqJftBIC48wIDoafSIk3UGcwNovoGnudw8JNmnvnCRuplJD2rM/V5A hxnUqU4G2X1JXAdr0d6Dzjhnp+DwBqZ4XdvKFd1v03E4rP9qhFFYAoZKIM/sgg== 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.58 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: 72D8DB9BB X-Spam-Score: 0.58 X-Migadu-Scanner: scn0.migadu.com X-TUID: FZwDApK70g50 V2UgdXNlICJib29sZWFuIiB0byBkZXNjcmliZSBmaWVsZHMgdGhhdCBzaG91bGQgZ2VuZXJhdGUg dGVybXMNCmxpdGVyYWxseSB3aXRob3V0IHN0ZW1taW5nIG9yIHBocmFzZSBzcGxpdHRpbmcuICBU aGlzIHRlcm1pbm9sb2d5DQptaWdodCBub3QgYmUgaWRlYWwgYnV0IGl0IGlzIGFscmVhZHkgZW5z aHJpbmVkIGluDQpub3RtdWNoLXNlYXJjaC10ZXJtcyg3KS4NCi0tLQ0KIGRvYy9tYW43L25vdG11 Y2gtc2V4cC1xdWVyaWVzLnJzdCB8IDE4ICsrKysrLQ0KIGxpYi9wYXJzZS1zZXhwLmNjICAgICAg ICAgICAgICAgICB8IDQ5ICsrKysrKysrKysrKysrKysNCiB0ZXN0L1QwODEtc2V4cHItc2VhcmNo LnNoICAgICAgICAgfCA5NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogMyBmaWxl cyBjaGFuZ2VkLCAxNjAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KDQpkaWZmIC0tZ2l0 IGEvZG9jL21hbjcvbm90bXVjaC1zZXhwLXF1ZXJpZXMucnN0IGIvZG9jL21hbjcvbm90bXVjaC1z ZXhwLXF1ZXJpZXMucnN0DQppbmRleCBmOTc0NDlmMC4uYTI3MTc5NTAgMTAwNjQ0DQotLS0gYS9k b2MvbWFuNy9ub3RtdWNoLXNleHAtcXVlcmllcy5yc3QNCisrKyBiL2RvYy9tYW43L25vdG11Y2gt c2V4cC1xdWVyaWVzLnJzdA0KQEAgLTgxLDYgKzgxLDE0IEBAIHN0cmluZykgaW50byB3b3Jkcywg aWdub3JlIHB1bmN0dWF0aW9uLiBQaHJhc2Ugc3BsaXR0aW5nIGlzIGFwcGxpZWQgdG8NCiB0ZXJt cyBpbiBwaHJhc2UgKHByb2JhYmlsaXN0aWMpIGZpZWxkcy4gQm90aCBwaHJhc2Ugc3BsaXR0aW5n IGFuZA0KIHN0ZW1taW5nIGFwcGx5IG9ubHkgaW4gcGhyYXNlIGZpZWxkcy4NCiANCitFYWNoIHRl cm0gb3IgcGhyYXNlIGZpZWxkIGhhcyBhbiBhc3NvY2lhdGVkIGNvbWJpbmluZyBvcGVyYXRvcg0K KyhgYGFuZGBgIG9yIGBgb3JgYCkgdXNlZCB0byBjb21iaW5lIHRoZSBxdWVyaWVzIGZyb20gZWFj aCBlbGVtZW50IG9mDQordGhlIHRhaWwgb2YgdGhlIGxpc3QuIFRoaXMgaXMgZ2VuZXJhbGx5IGBg b3JgYCBmb3IgdGhvc2UgZmllbGRzIHdoZXJlDQorYSBtZXNzYWdlIGhhcyBvbmUgc3VjaCBhdHRy aWJ1dGUsIGFuZCBgYGFuZGBgIG90aGVyd2lzZS4NCisNCitUZXJtIG9yIHBocmFzZSBmaWVsZHMg Y2FuIGNvbnRhaW4gYXJiaXRyYXJpbHkgY29tcGxleCBxdWVyaWVzIG1hZGUgdXANCitmcm9tIHRl cm1zLCBvcGVyYXRvcnMsIGFuZCBtb2RpZmllcnMsIGJ1dCBub3Qgb3RoZXIgZmllbGRzLg0KKw0K IC4uIF9maWVsZC10YWJsZToNCiANCiAuLiB0YWJsZTo6IEZpZWxkcyB3aXRoIHN1cHBvcnRlZCBt b2RpZmllcnMNCkBAIC0xMTIsNyArMTIwLDcgQEAgc3RlbW1pbmcgYXBwbHkgb25seSBpbiBwaHJh c2UgZmllbGRzLg0KICAgKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKw0KICAgfCAgbWltZXR5cGUgIHwgICAgb3Ig ICAgIHwgIHBocmFzZSAgIHwgICAgeWVzICAgIHwgICAgeWVzICAgIHwgICAgbm8gICAgfA0KICAg Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKw0KLSAgfCAgICBwYXRoICAgIHwgICAgb3IgICAgIHwgICB0ZXJtICAg IHwgICAgeWVzICAgIHwgICAgeWVzICAgIHwgICB5ZXMgICAgfA0KKyAgfCAgICBwYXRoICAgIHwg ICAgb3IgICAgIHwgICB0ZXJtICAgIHwgICAgbm8gICAgIHwgICAgeWVzICAgIHwgICB5ZXMgICAg fA0KICAgKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tKw0KICAgfCAgcHJvcGVydHkgIHwgICAgYW5kICAgIHwgICB0 ZXJtICAgIHwgICAgeWVzICAgIHwgICAgeWVzICAgIHwgICB5ZXMgICAgfA0KICAgKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKw0KQEAgLTE1MSwxMCArMTU5LDE4IEBAIEVYQU1QTEVTDQogICAgIE1hdGNoIHRoZSAq cGhyYXNlKiAicXVpY2siIGZvbGxvd2VkIGJ5ICJmb3giIGluIHBocmFzZSBmaWVsZHMgKG9yDQog ICAgIG91dHNpZGUgYSBmaWVsZCkuIE1hdGNoIHRoZSBsaXRlcmFsIHN0cmluZyBpbiBhIHRlcm0g ZmllbGQuDQogDQorYGAoaWQgMTIzNEBpbnZhbGlkIGJsYWhAdGVzdClgYA0KKyAgICBNYXRjaGVz IE1lc3NhZ2UtSWQgIjEyMzRAaW52YWxpZCIgKm9yKiBNZXNzYWdlLUlkICJibGFoQHRlc3QiDQor DQogYGAoc3ViamVjdCBxdWljayAiYnJvd24gZm94IilgYA0KICAgICBNYXRjaCBtZXNzYWdlcyB3 aG9zZSBzdWJqZWN0IGNvbnRhaW5zICJxdWljayIgKGFueXdoZXJlLCBzdGVtbWVkKSBhbmQNCiAg ICAgdGhlIHBocmFzZSAiYnJvd24gZm94Ii4NCiANCitgYCh0byAob3IgYm9iQGV4YW1wbGUuY29t IG1hbGxvcnlAZXhhbXBsZS5vcmcpKWBgIGBgKG9yICh0byBib2JAZXhhbXBsZS5jb20pICh0byBt YWxsb3J5QGV4YW1wbGUub3JnKSlgYA0KKyAgICBNYXRjaCBpbiB0aGUgIlRvIiBvciAiQ2MiIGhl YWRlcnMsICJib2JAZXhhbXBsZS5jb20iLA0KKyAgICAibWFsbG9yeUBleGFtcGxlLm9yZyIsIGFu ZCBhbHNvICJib2JAZXhhbXBsZS5jb20uYXUiIHNpbmNlIGl0DQorICAgIGNvbnRhaW5zIHRoZSBh ZGphY2VudCB0cmlwbGUgImJvYiIsICJleGFtcGxlIiwgImNvbSIuDQorDQogTk9URVMNCiA9PT09 PQ0KIA0KZGlmZiAtLWdpdCBhL2xpYi9wYXJzZS1zZXhwLmNjIGIvbGliL3BhcnNlLXNleHAuY2MN CmluZGV4IDRhZGZjNGM1Li45NzI3YzU3ZCAxMDA2NDQNCi0tLSBhL2xpYi9wYXJzZS1zZXhwLmNj DQorKysgYi9saWIvcGFyc2Utc2V4cC5jYw0KQEAgLTEwLDggKzEwLDI2IEBADQogdHlwZWRlZiBl bnVtIHsNCiAgICAgU0VYUF9GTEFHX05PTkUJPSAwLA0KICAgICBTRVhQX0ZMQUdfRklFTEQJPSAx IDw8IDAsDQorICAgIFNFWFBfRkxBR19CT09MRUFOCT0gMSA8PCAxLA0KIH0gX3NleHBfZmxhZ190 Ow0KIA0KKy8qDQorICogZGVmaW5lIGJpdHdpc2Ugb3BlcmF0b3JzIHRvIGhpZGUgY2FzdHMgKi8N CisNCitpbmxpbmUgX3NleHBfZmxhZ190DQorb3BlcmF0b3J8IChfc2V4cF9mbGFnX3QgYSwgX3Nl eHBfZmxhZ190IGIpDQorew0KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8X3NleHBfZmxhZ190PigN CisJc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGEpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGIpKTsN Cit9DQorDQoraW5saW5lIF9zZXhwX2ZsYWdfdA0KK29wZXJhdG9yJiAoX3NleHBfZmxhZ190IGEs IF9zZXhwX2ZsYWdfdCBiKQ0KK3sNCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9zZXhwX2ZsYWdf dD4oDQorCXN0YXRpY19jYXN0PHVuc2lnbmVkPihhKSAmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihi KSk7DQorfQ0KKw0KIHR5cGVkZWYgc3RydWN0ICB7DQogICAgIGNvbnN0IGNoYXIgKm5hbWU7DQog ICAgIFhhcGlhbjo6UXVlcnk6Om9wIHhhcGlhbl9vcDsNCkBAIC0yMywxMiArNDEsMzkgQEAgc3Rh dGljIF9zZXhwX3ByZWZpeF90IHByZWZpeGVzW10gPQ0KIHsNCiAgICAgeyAiYW5kIiwgICAgICAg ICAgICBYYXBpYW46OlF1ZXJ5OjpPUF9BTkQsICAgICAgICAgIFhhcGlhbjo6UXVlcnk6Ok1hdGNo QWxsLA0KICAgICAgIFNFWFBfRkxBR19OT05FIH0sDQorICAgIHsgImF0dGFjaG1lbnQiLCAgICAg WGFwaWFuOjpRdWVyeTo6T1BfQU5ELCAgICAgICAgICBYYXBpYW46OlF1ZXJ5OjpNYXRjaEFsbCwN CisgICAgICBTRVhQX0ZMQUdfRklFTEQgfSwNCisgICAgeyAiYm9keSIsICAgICAgICAgICBYYXBp YW46OlF1ZXJ5OjpPUF9BTkQsICAgICAgICAgIFhhcGlhbjo6UXVlcnk6Ok1hdGNoQWxsLA0KKyAg ICAgIFNFWFBfRkxBR19GSUVMRCB9LA0KKyAgICB7ICJmcm9tIiwgICAgICAgICAgIFhhcGlhbjo6 UXVlcnk6Ok9QX0FORCwgICAgICAgICAgWGFwaWFuOjpRdWVyeTo6TWF0Y2hBbGwsDQorICAgICAg U0VYUF9GTEFHX0ZJRUxEIH0sDQorICAgIHsgImZvbGRlciIsICAgICAgICAgWGFwaWFuOjpRdWVy eTo6T1BfT1IsICAgICAgICAgICBYYXBpYW46OlF1ZXJ5OjpNYXRjaE5vdGhpbmcsDQorICAgICAg U0VYUF9GTEFHX0ZJRUxEIHwgU0VYUF9GTEFHX0JPT0xFQU4gfSwNCisgICAgeyAiaWQiLCAgICAg ICAgICAgICBYYXBpYW46OlF1ZXJ5OjpPUF9PUiwgICAgICAgICAgIFhhcGlhbjo6UXVlcnk6Ok1h dGNoTm90aGluZywNCisgICAgICBTRVhQX0ZMQUdfRklFTEQgfCBTRVhQX0ZMQUdfQk9PTEVBTiB9 LA0KKyAgICB7ICJpcyIsICAgICAgICAgICAgIFhhcGlhbjo6UXVlcnk6Ok9QX0FORCwgICAgICAg ICAgWGFwaWFuOjpRdWVyeTo6TWF0Y2hBbGwsDQorICAgICAgU0VYUF9GTEFHX0ZJRUxEIHwgU0VY UF9GTEFHX0JPT0xFQU4gfSwNCisgICAgeyAibWlkIiwgICAgICAgICAgICBYYXBpYW46OlF1ZXJ5 OjpPUF9PUiwgICAgICAgICAgIFhhcGlhbjo6UXVlcnk6Ok1hdGNoTm90aGluZywNCisgICAgICBT RVhQX0ZMQUdfRklFTEQgfCBTRVhQX0ZMQUdfQk9PTEVBTiB9LA0KKyAgICB7ICJtaW1ldHlwZSIs ICAgICAgIFhhcGlhbjo6UXVlcnk6Ok9QX0FORCwgICAgICAgICAgWGFwaWFuOjpRdWVyeTo6TWF0 Y2hBbGwsDQorICAgICAgU0VYUF9GTEFHX0ZJRUxEIH0sDQogICAgIHsgIm5vdCIsICAgICAgICAg ICAgWGFwaWFuOjpRdWVyeTo6T1BfQU5EX05PVCwgICAgICBYYXBpYW46OlF1ZXJ5OjpNYXRjaEFs bCwNCiAgICAgICBTRVhQX0ZMQUdfTk9ORSB9LA0KICAgICB7ICJvciIsICAgICAgICAgICAgIFhh cGlhbjo6UXVlcnk6Ok9QX09SLCAgICAgICAgICAgWGFwaWFuOjpRdWVyeTo6TWF0Y2hOb3RoaW5n LA0KICAgICAgIFNFWFBfRkxBR19OT05FIH0sDQorICAgIHsgInBhdGgiLCAgICAgICAgICAgWGFw aWFuOjpRdWVyeTo6T1BfT1IsICAgICAgICAgICBYYXBpYW46OlF1ZXJ5OjpNYXRjaE5vdGhpbmcs DQorICAgICAgU0VYUF9GTEFHX0ZJRUxEIHwgU0VYUF9GTEFHX0JPT0xFQU4gfSwNCisgICAgeyAi cHJvcGVydHkiLCAgICAgICBYYXBpYW46OlF1ZXJ5OjpPUF9BTkQsICAgICAgICAgIFhhcGlhbjo6 UXVlcnk6Ok1hdGNoQWxsLA0KKyAgICAgIFNFWFBfRkxBR19GSUVMRA0KKyAgICAgIHwgU0VYUF9G TEFHX0JPT0xFQU4gfSwNCiAgICAgeyAic3ViamVjdCIsICAgICAgICBYYXBpYW46OlF1ZXJ5OjpP UF9BTkQsICAgICAgICAgIFhhcGlhbjo6UXVlcnk6Ok1hdGNoQWxsLA0KICAgICAgIFNFWFBfRkxB R19GSUVMRCB9LA0KKyAgICB7ICJ0YWciLCAgICAgICAgICAgIFhhcGlhbjo6UXVlcnk6Ok9QX0FO RCwgICAgICAgICAgWGFwaWFuOjpRdWVyeTo6TWF0Y2hBbGwsDQorICAgICAgU0VYUF9GTEFHX0ZJ RUxEIHwgU0VYUF9GTEFHX0JPT0xFQU4gfSwNCisgICAgeyAidGhyZWFkIiwgICAgICAgICBYYXBp YW46OlF1ZXJ5OjpPUF9PUiwgICAgICAgICAgIFhhcGlhbjo6UXVlcnk6Ok1hdGNoTm90aGluZywN CisgICAgICBTRVhQX0ZMQUdfRklFTEQgfCBTRVhQX0ZMQUdfQk9PTEVBTiB9LA0KKyAgICB7ICJ0 byIsICAgICAgICAgICAgIFhhcGlhbjo6UXVlcnk6Ok9QX0FORCwgICAgICAgICAgWGFwaWFuOjpR dWVyeTo6TWF0Y2hBbGwsDQorICAgICAgU0VYUF9GTEFHX0ZJRUxEIH0sDQogICAgIHsgfQ0KIH07 DQogDQpAQCAtMTEwLDYgKzE1NSwxMCBAQCBfc2V4cF90b194YXBpYW5fcXVlcnkgKG5vdG11Y2hf ZGF0YWJhc2VfdCAqbm90bXVjaCwgY29uc3QgX3NleHBfcHJlZml4X3QgKnBhcmVudA0KIAlzdGQ6 OnN0cmluZyB0ZXJtID0gWGFwaWFuOjpVbmljb2RlOjp0b2xvd2VyIChzeC0+dmFsKTsNCiAJWGFw aWFuOjpTdGVtIHN0ZW0gPSAqKG5vdG11Y2gtPnN0ZW1tZXIpOw0KIAlzdGQ6OnN0cmluZyB0ZXJt X3ByZWZpeCA9IHBhcmVudCA/IF9maW5kX3ByZWZpeCAocGFyZW50LT5uYW1lKSA6ICIiOw0KKwlp ZiAocGFyZW50ICYmIChwYXJlbnQtPmZsYWdzICYgU0VYUF9GTEFHX0JPT0xFQU4pKSB7DQorCSAg ICBvdXRwdXQgPSBYYXBpYW46OlF1ZXJ5ICh0ZXJtX3ByZWZpeCArIHN4LT52YWwpOw0KKwkgICAg cmV0dXJuIE5PVE1VQ0hfU1RBVFVTX1NVQ0NFU1M7DQorCX0NCiAJaWYgKHN4LT5hdHkgPT0gU0VY UF9CQVNJQyAmJiB1bmljb2RlX3dvcmRfdXRmOCAoc3gtPnZhbCkpIHsNCiAJICAgIG91dHB1dCA9 IFhhcGlhbjo6UXVlcnkgKCJaIiArIHRlcm1fcHJlZml4ICsgc3RlbSAodGVybSkpOw0KIAkgICAg cmV0dXJuIE5PVE1VQ0hfU1RBVFVTX1NVQ0NFU1M7DQpkaWZmIC0tZ2l0IGEvdGVzdC9UMDgxLXNl eHByLXNlYXJjaC5zaCBiL3Rlc3QvVDA4MS1zZXhwci1zZWFyY2guc2gNCmluZGV4IDRhMDUxYTUw Li45NmQ1OGVlMiAxMDA3NTUNCi0tLSBhL3Rlc3QvVDA4MS1zZXhwci1zZWFyY2guc2gNCisrKyBi L3Rlc3QvVDA4MS1zZXhwci1zZWFyY2guc2gNCkBAIC0xMDEsNiArMTAxLDk5IEBAIHRocmVhZDpY WFggICAyMDAwLTAxLTAxIFsxLzFdIE5vdG11Y2ggVGVzdCBTdWl0ZTsgdXRmOC1zw7xiasOpY3Qg KGluYm94IHVucmVhZCkNCiBFT0YNCiB0ZXN0X2V4cGVjdF9lcXVhbF9maWxlIEVYUEVDVEVEIE9V VFBVVA0KIA0KK3Rlc3RfYmVnaW5fc3VidGVzdCAiU2VhcmNoIGJ5ICdhdHRhY2htZW50JyINCitu b3RtdWNoIHNlYXJjaCBhdHRhY2htZW50Om5vdG11Y2gtaGVscC5wYXRjaCA+IEVYUEVDVEVEDQor bm90bXVjaCBzZWFyY2ggLS1xdWVyeT1zZXhwICcoYXR0YWNobWVudCBub3RtdWNoLWhlbHAucGF0 Y2gpJyA+IE9VVFBVVA0KK3Rlc3RfZXhwZWN0X2VxdWFsX2ZpbGUgRVhQRUNURUQgT1VUUFVUDQor DQordGVzdF9iZWdpbl9zdWJ0ZXN0ICJTZWFyY2ggYnkgJ2JvZHknIg0KK2FkZF9tZXNzYWdlICdb c3ViamVjdF09ImJvZHkgc2VhcmNoIicgJ1tkYXRlXT0iU2F0LCAwMSBKYW4gMjAwMCAxMjowMDow MCAtMDAwMCInIFtib2R5XT1ib2R5c2VhcmNodGVzdA0KK291dHB1dD0kKG5vdG11Y2ggc2VhcmNo IC0tcXVlcnk9c2V4cCAnKGJvZHkgYm9keXNlYXJjaHRlc3QpJyB8IG5vdG11Y2hfc2VhcmNoX3Nh bml0aXplKQ0KK3Rlc3RfZXhwZWN0X2VxdWFsICIkb3V0cHV0IiAidGhyZWFkOlhYWCAgIDIwMDAt MDEtMDEgWzEvMV0gTm90bXVjaCBUZXN0IFN1aXRlOyBib2R5IHNlYXJjaCAoaW5ib3ggdW5yZWFk KSINCisNCit0ZXN0X2JlZ2luX3N1YnRlc3QgIlNlYXJjaCBieSAnYm9keScgKHBocmFzZSkiDQor YWRkX21lc3NhZ2UgJ1tzdWJqZWN0XT0iYm9keSBzZWFyY2ggKHBocmFzZSkiJyAnW2RhdGVdPSJT YXQsIDAxIEphbiAyMDAwIDEyOjAwOjAwIC0wMDAwIicgJ1tib2R5XT0iYm9keSBzZWFyY2ggKHBo cmFzZSkiJw0KK2FkZF9tZXNzYWdlICdbc3ViamVjdF09Im5lZ2F0aXZlIHJlc3VsdCInICdbZGF0 ZV09IlNhdCwgMDEgSmFuIDIwMDAgMTI6MDA6MDAgLTAwMDAiJyAnW2JvZHldPSJUaGlzIHBocmFz ZSBzaG91bGQgbm90IG1hdGNoIHRoZSBib2R5IHNlYXJjaCInDQorb3V0cHV0PSQobm90bXVjaCBz ZWFyY2ggLS1xdWVyeT1zZXhwICcoYm9keSAiYm9keSBzZWFyY2ggcGhyYXNlIiknIHwgbm90bXVj aF9zZWFyY2hfc2FuaXRpemUpDQordGVzdF9leHBlY3RfZXF1YWwgIiRvdXRwdXQiICJ0aHJlYWQ6 WFhYICAgMjAwMC0wMS0wMSBbMS8xXSBOb3RtdWNoIFRlc3QgU3VpdGU7IGJvZHkgc2VhcmNoIChw aHJhc2UpIChpbmJveCB1bnJlYWQpIg0KKw0KK3Rlc3RfYmVnaW5fc3VidGVzdCAiU2VhcmNoIGJ5 ICdib2R5JyAodXRmLTgpOiINCithZGRfbWVzc2FnZSAnW3N1YmplY3RdPSJ1dGY4LW1lc3NhZ2Ut Ym9keS1zdWJqZWN0IicgJ1tkYXRlXT0iU2F0LCAwMSBKYW4gMjAwMCAxMjowMDowMCAtMDAwMCIn ICdbYm9keV09Im1lc3NhZ2UgYm9keSB1dGY4OiBiw7Zkw70iJw0KK291dHB1dD0kKG5vdG11Y2gg c2VhcmNoIC0tcXVlcnk9c2V4cCAnKGJvZHkgYsO2ZMO9KScgfCBub3RtdWNoX3NlYXJjaF9zYW5p dGl6ZSkNCit0ZXN0X2V4cGVjdF9lcXVhbCAiJG91dHB1dCIgInRocmVhZDpYWFggICAyMDAwLTAx LTAxIFsxLzFdIE5vdG11Y2ggVGVzdCBTdWl0ZTsgdXRmOC1tZXNzYWdlLWJvZHktc3ViamVjdCAo aW5ib3ggdW5yZWFkKSINCisNCit0ZXN0X2JlZ2luX3N1YnRlc3QgIlNlYXJjaCBieSAnZnJvbSci DQorYWRkX21lc3NhZ2UgJ1tzdWJqZWN0XT0ic2VhcmNoIGJ5IGZyb20iJyAnW2RhdGVdPSJTYXQs IDAxIEphbiAyMDAwIDEyOjAwOjAwIC0wMDAwIicgW2Zyb21dPXNlYXJjaGJ5ZnJvbQ0KK291dHB1 dD0kKG5vdG11Y2ggc2VhcmNoIC0tcXVlcnk9c2V4cCAnKGZyb20gc2VhcmNoYnlmcm9tKScgfCBu b3RtdWNoX3NlYXJjaF9zYW5pdGl6ZSkNCit0ZXN0X2V4cGVjdF9lcXVhbCAiJG91dHB1dCIgInRo cmVhZDpYWFggICAyMDAwLTAxLTAxIFsxLzFdIHNlYXJjaGJ5ZnJvbTsgc2VhcmNoIGJ5IGZyb20g KGluYm94IHVucmVhZCkiDQorDQordGVzdF9iZWdpbl9zdWJ0ZXN0ICJTZWFyY2ggYnkgJ2Zyb20n IChhZGRyZXNzKSINCithZGRfbWVzc2FnZSAnW3N1YmplY3RdPSJzZWFyY2ggYnkgZnJvbSAoYWRk cmVzcykiJyAnW2RhdGVdPSJTYXQsIDAxIEphbiAyMDAwIDEyOjAwOjAwIC0wMDAwIicgW2Zyb21d PXNlYXJjaGJ5ZnJvbUBleGFtcGxlLmNvbQ0KK291dHB1dD0kKG5vdG11Y2ggc2VhcmNoIC0tcXVl cnk9c2V4cCAnKGZyb20gc2VhcmNoYnlmcm9tQGV4YW1wbGUuY29tKScgfCBub3RtdWNoX3NlYXJj aF9zYW5pdGl6ZSkNCit0ZXN0X2V4cGVjdF9lcXVhbCAiJG91dHB1dCIgInRocmVhZDpYWFggICAy MDAwLTAxLTAxIFsxLzFdIHNlYXJjaGJ5ZnJvbUBleGFtcGxlLmNvbTsgc2VhcmNoIGJ5IGZyb20g KGFkZHJlc3MpIChpbmJveCB1bnJlYWQpIg0KKw0KK3Rlc3RfYmVnaW5fc3VidGVzdCAiU2VhcmNo IGJ5ICdmcm9tJyAobmFtZSkiDQorYWRkX21lc3NhZ2UgJ1tzdWJqZWN0XT0ic2VhcmNoIGJ5IGZy b20gKG5hbWUpIicgJ1tkYXRlXT0iU2F0LCAwMSBKYW4gMjAwMCAxMjowMDowMCAtMDAwMCInICdb ZnJvbV09IlNlYXJjaCBCeSBGcm9tIE5hbWUgPHRlc3RAZXhhbXBsZS5jb20+IicNCitvdXRwdXQ9 JChub3RtdWNoIHNlYXJjaCAtLXF1ZXJ5PXNleHAgJyhmcm9tICJTZWFyY2ggQnkgRnJvbSBOYW1l IiknIHwgbm90bXVjaF9zZWFyY2hfc2FuaXRpemUpDQordGVzdF9leHBlY3RfZXF1YWwgIiRvdXRw dXQiICJ0aHJlYWQ6WFhYICAgMjAwMC0wMS0wMSBbMS8xXSBTZWFyY2ggQnkgRnJvbSBOYW1lOyBz ZWFyY2ggYnkgZnJvbSAobmFtZSkgKGluYm94IHVucmVhZCkiDQorDQordGVzdF9iZWdpbl9zdWJ0 ZXN0ICJTZWFyY2ggYnkgJ2Zyb20nIChuYW1lIGFuZCBhZGRyZXNzKSINCitvdXRwdXQ9JChub3Rt dWNoIHNlYXJjaCAtLXF1ZXJ5PXNleHAgJyhmcm9tICJTZWFyY2ggQnkgRnJvbSBOYW1lIDx0ZXN0 QGV4YW1wbGUuY29tPiIpJyB8IG5vdG11Y2hfc2VhcmNoX3Nhbml0aXplKQ0KK3Rlc3RfZXhwZWN0 X2VxdWFsICIkb3V0cHV0IiAidGhyZWFkOlhYWCAgIDIwMDAtMDEtMDEgWzEvMV0gU2VhcmNoIEJ5 IEZyb20gTmFtZTsgc2VhcmNoIGJ5IGZyb20gKG5hbWUpIChpbmJveCB1bnJlYWQpIg0KKw0KK2Fk ZF9tZXNzYWdlICdbZGlyXT1iYWQnICdbc3ViamVjdF09IlRvIHRoZSBib25lIicNCithZGRfbWVz c2FnZSAnW2Rpcl09LicgJ1tzdWJqZWN0XT0iVG9wIGxldmVsIicNCithZGRfbWVzc2FnZSAnW2Rp cl09YmFkL25ld3MnICdbc3ViamVjdF09IkJlYXJzIicNCitta2RpciAtcCAiJHtNQUlMX0RJUn0v ZHVwbGljYXRlL2JhZC9uZXdzIg0KK2NwICIkZ2VuX21zZ19maWxlbmFtZSIgIiR7TUFJTF9ESVJ9 L2R1cGxpY2F0ZS9iYWQvbmV3cyINCisNCithZGRfbWVzc2FnZSAnW2Rpcl09dGhpbmdzJyAnW3N1 YmplY3RdPSJUaGVzZSBhcmUgYSBmZXciJw0KK2FkZF9tZXNzYWdlICdbZGlyXT10aGluZ3MvZmF2 b3JpdGUnICdbc3ViamVjdF09IlJhaW5kcm9wcywgd2hpc2tlcnMsIGtldHRsZXMiJw0KK2FkZF9t ZXNzYWdlICdbZGlyXT10aGluZ3MvYmFkJyAnW3N1YmplY3RdPSJCaXRlcywgc3RpbmdzLCBzYWQg ZmVlbGluZ3MiJw0KKw0KK3Rlc3RfYmVnaW5fc3VidGVzdCAiU2VhcmNoIGJ5ICdmb2xkZXInICht dWx0aXBsZSkiDQorb3V0cHV0PSQobm90bXVjaCBzZWFyY2ggLS1xdWVyeT1zZXhwICcoZm9sZGVy IGJhZCBiYWQvbmV3cyB0aGluZ3MvYmFkKScgfCBub3RtdWNoX3NlYXJjaF9zYW5pdGl6ZSkNCit0 ZXN0X2V4cGVjdF9lcXVhbCAiJG91dHB1dCIgInRocmVhZDpYWFggICAyMDAxLTAxLTA1IFsxLzFd IE5vdG11Y2ggVGVzdCBTdWl0ZTsgVG8gdGhlIGJvbmUgKGluYm94IHVucmVhZCkNCit0aHJlYWQ6 WFhYICAgMjAwMS0wMS0wNSBbMS8xKDIpXSBOb3RtdWNoIFRlc3QgU3VpdGU7IEJlYXJzIChpbmJv eCB1bnJlYWQpDQordGhyZWFkOlhYWCAgIDIwMDEtMDEtMDUgWzEvMV0gTm90bXVjaCBUZXN0IFN1 aXRlOyBCaXRlcywgc3RpbmdzLCBzYWQgZmVlbGluZ3MgKGluYm94IHVucmVhZCkiDQorDQordGVz dF9iZWdpbl9zdWJ0ZXN0ICJTZWFyY2ggYnkgJ2ZvbGRlcic6IHRvcCBsZXZlbC4iDQorbm90bXVj aCBzZWFyY2ggZm9sZGVyOiciIicgPiBFWFBFQ1RFRA0KK25vdG11Y2ggc2VhcmNoIC0tcXVlcnk9 c2V4cCAnKGZvbGRlciAiIiknICA+IE9VVFBVVA0KK3Rlc3RfZXhwZWN0X2VxdWFsX2ZpbGUgRVhQ RUNURUQgT1VUUFVUDQorDQordGVzdF9iZWdpbl9zdWJ0ZXN0ICJTZWFyY2ggYnkgJ2lkJyINCith ZGRfbWVzc2FnZSAnW3N1YmplY3RdPSJzZWFyY2ggYnkgaWQiJyAnW2RhdGVdPSJTYXQsIDAxIEph biAyMDAwIDEyOjAwOjAwIC0wMDAwIicNCitvdXRwdXQ9JChub3RtdWNoIHNlYXJjaCAtLXF1ZXJ5 PXNleHAgIihpZCAke2dlbl9tc2dfaWR9KSIgfCBub3RtdWNoX3NlYXJjaF9zYW5pdGl6ZSkNCit0 ZXN0X2V4cGVjdF9lcXVhbCAiJG91dHB1dCIgInRocmVhZDpYWFggICAyMDAwLTAxLTAxIFsxLzFd IE5vdG11Y2ggVGVzdCBTdWl0ZTsgc2VhcmNoIGJ5IGlkIChpbmJveCB1bnJlYWQpIg0KKw0KK3Rl c3RfYmVnaW5fc3VidGVzdCAiU2VhcmNoIGJ5ICdpZCcgKG9yKSINCithZGRfbWVzc2FnZSAnW3N1 YmplY3RdPSJzZWFyY2ggYnkgaWQiJyAnW2RhdGVdPSJTYXQsIDAxIEphbiAyMDAwIDEyOjAwOjAw IC0wMDAwIicNCitvdXRwdXQ9JChub3RtdWNoIHNlYXJjaCAtLXF1ZXJ5PXNleHAgIihpZCBub24t ZXhpc3RlbnQtbWlkICR7Z2VuX21zZ19pZH0pIiB8IG5vdG11Y2hfc2VhcmNoX3Nhbml0aXplKQ0K K3Rlc3RfZXhwZWN0X2VxdWFsICIkb3V0cHV0IiAidGhyZWFkOlhYWCAgIDIwMDAtMDEtMDEgWzEv MV0gTm90bXVjaCBUZXN0IFN1aXRlOyBzZWFyY2ggYnkgaWQgKGluYm94IHVucmVhZCkiDQorDQor dGVzdF9iZWdpbl9zdWJ0ZXN0ICJTZWFyY2ggYnkgJ2lzJyAobXVsdGlwbGUpIg0KK25vdG11Y2gg dGFnIC1pbmJveCB0YWc6c2VhcmNoYnl0YWcNCitub3RtdWNoIHNlYXJjaCBpczppbmJveCBBTkQg aXM6dW5yZWFkIHwgbm90bXVjaF9zZWFyY2hfc2FuaXRpemUgPiBFWFBFQ1RFRA0KK25vdG11Y2gg c2VhcmNoIC0tcXVlcnk9c2V4cCAnKGlzIGluYm94IHVucmVhZCknIHwgbm90bXVjaF9zZWFyY2hf c2FuaXRpemUgPiBPVVRQVVQNCitub3RtdWNoIHRhZyAraW5ib3ggdGFnOnNlYXJjaGJ5dGFnDQor dGVzdF9leHBlY3RfZXF1YWxfZmlsZSBFWFBFQ1RFRCBPVVRQVVQNCisNCit0ZXN0X2JlZ2luX3N1 YnRlc3QgIlNlYXJjaCBieSAnbWlkJyINCithZGRfbWVzc2FnZSAnW3N1YmplY3RdPSJzZWFyY2gg YnkgbWlkIicgJ1tkYXRlXT0iU2F0LCAwMSBKYW4gMjAwMCAxMjowMDowMCAtMDAwMCInDQorb3V0 cHV0PSQobm90bXVjaCBzZWFyY2ggLS1xdWVyeT1zZXhwICIobWlkICR7Z2VuX21zZ19pZH0pIiB8 IG5vdG11Y2hfc2VhcmNoX3Nhbml0aXplKQ0KK3Rlc3RfZXhwZWN0X2VxdWFsICIkb3V0cHV0IiAi dGhyZWFkOlhYWCAgIDIwMDAtMDEtMDEgWzEvMV0gTm90bXVjaCBUZXN0IFN1aXRlOyBzZWFyY2gg YnkgbWlkIChpbmJveCB1bnJlYWQpIg0KKw0KK3Rlc3RfYmVnaW5fc3VidGVzdCAiU2VhcmNoIGJ5 ICdtaWQnIChvcikiDQorYWRkX21lc3NhZ2UgJ1tzdWJqZWN0XT0ic2VhcmNoIGJ5IG1pZCInICdb ZGF0ZV09IlNhdCwgMDEgSmFuIDIwMDAgMTI6MDA6MDAgLTAwMDAiJw0KK291dHB1dD0kKG5vdG11 Y2ggc2VhcmNoIC0tcXVlcnk9c2V4cCAiKG1pZCBub24tZXhpc3RlbnQtbWlkICR7Z2VuX21zZ19p ZH0pIiB8IG5vdG11Y2hfc2VhcmNoX3Nhbml0aXplKQ0KK3Rlc3RfZXhwZWN0X2VxdWFsICIkb3V0 cHV0IiAidGhyZWFkOlhYWCAgIDIwMDAtMDEtMDEgWzEvMV0gTm90bXVjaCBUZXN0IFN1aXRlOyBz ZWFyY2ggYnkgbWlkIChpbmJveCB1bnJlYWQpIg0KKw0KK3Rlc3RfYmVnaW5fc3VidGVzdCAiU2Vh cmNoIGJ5ICdtaW1ldHlwZSciDQorbm90bXVjaCBzZWFyY2ggbWltZXR5cGU6dGV4dC9odG1sID4g RVhQRUNURUQNCitub3RtdWNoIHNlYXJjaCAtLXF1ZXJ5PXNleHAgJyhtaW1ldHlwZSB0ZXh0IGh0 bWwpJyAgPiBPVVRQVVQNCit0ZXN0X2V4cGVjdF9lcXVhbF9maWxlIEVYUEVDVEVEIE9VVFBVVA0K Kw0KIHRlc3RfYmVnaW5fc3VidGVzdCAiU2VhcmNoIGJ5ICdzdWJqZWN0JyAodXRmLTgsIHBocmFz ZS10b2tlbik6Ig0KIG91dHB1dD0kKG5vdG11Y2ggc2VhcmNoIC0tcXVlcnk9c2V4cCAnKHN1Ympl Y3QgdXRmOC1zw7xiasOpY3QpJyB8IG5vdG11Y2hfc2VhcmNoX3Nhbml0aXplKQ0KIHRlc3RfZXhw ZWN0X2VxdWFsICIkb3V0cHV0IiAidGhyZWFkOlhYWCAgIDIwMDAtMDEtMDEgWzEvMV0gTm90bXVj aCBUZXN0IFN1aXRlOyB1dGY4LXPDvGJqw6ljdCAoaW5ib3ggdW5yZWFkKSINCkBAIC0xMTgsNiAr MjExLDcgQEAgbm90bXVjaCBzZWFyY2ggLS1xdWVyeT1zZXhwICcoc3ViamVjdCAob3IgdXRmOCAi Y29tcGF0aWJpbGl0eSBpc3N1ZXMiKSknIHwgbm90bXUNCiBjYXQgPDxFT0YgPiBFWFBFQ1RFRA0K IHRocmVhZDpYWFggICAyMDA5LTExLTE4IFs0LzRdIEpqZ29kIEppYW5nLCBBbGV4YW5kZXIgQm90 ZXJvLUxvd3J5OyBbbm90bXVjaF0gTWFjIE9TIFgvRGFyd2luIGNvbXBhdGliaWxpdHkgaXNzdWVz IChpbmJveCB1bnJlYWQpDQogdGhyZWFkOlhYWCAgIDIwMDAtMDEtMDEgWzEvMV0gTm90bXVjaCBU ZXN0IFN1aXRlOyB1dGY4LXPDvGJqw6ljdCAoaW5ib3ggdW5yZWFkKQ0KK3RocmVhZDpYWFggICAy MDAwLTAxLTAxIFsxLzFdIE5vdG11Y2ggVGVzdCBTdWl0ZTsgdXRmOC1tZXNzYWdlLWJvZHktc3Vi amVjdCAoaW5ib3ggdW5yZWFkKQ0KIEVPRg0KIHRlc3RfZXhwZWN0X2VxdWFsX2ZpbGUgRVhQRUNU RUQgT1VUUFVUDQogDQotLSANCjIuMzAuMg0=