Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lPuYF-0007JQ-QJ for pgsql-hackers@arkaria.postgresql.org; Fri, 26 Mar 2021 22:03:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lPuYE-000623-NM for pgsql-hackers@arkaria.postgresql.org; Fri, 26 Mar 2021 22:03:30 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lPuYE-00061w-46 for pgsql-hackers@lists.postgresql.org; Fri, 26 Mar 2021 22:03:30 +0000 Received: from mail-bn8nam12on2041.outbound.protection.outlook.com ([40.107.237.41] helo=NAM12-BN8-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lPuYB-0000Iq-1C for pgsql-hackers@lists.postgresql.org; Fri, 26 Mar 2021 22:03:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=id+tiD2UkTcroUO/telEXE1aoRQS8HWR6IN4fwyumZCCcs28RkaT7oSGR96pM744r4TyHtMHWpehs6fr1HSxBGPsEYTcpCJcpUFHkA6Y1tpyQqJucNHoRbBaMRbs38v/vv5gHOEGXzugpC9RNwOSITHsPiinmfUH3Yxs9vlyIKR4IWJEQmWmwzpPbZqkpcUu3/GMD6P7n0RTeFCUd5Ek9D3RYksaD7+sRwPIU+fAeQcDBQDO4X3etQuDUpU5Gs4QY+SXLppEKK20IUDmqBSvGbaq68I7o6Wavs2zZOFImRBhzeoXwI8uZHJztNkabkko7iYjx+7bsNX5s6ZhAZq+9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bkObXFYl0u2l6wSWvckyP8nzBc/2edyZFjHayFXKsUk=; b=ePDiUVuJZj+uX/5nq4xB2x1H11WceYSSyFNhVd9XE2lGU2RKjfvGr5QcEQ5bOkv0lQDvuISOGNw/7Fk6IUFcLcZnoB1Qs5IXIwNIPBUGmEt9mfRvyykQ6fQONNRVga6ZV6E+MQVm6/f0uu1gCQQ5mZ2NSVEHYCVynKahqlQ3aC32qyhdihsH7bOPTVO35uXpGu74YHEJteYNtVOFVZkmLWPHDNCL4aHfpbBp/fWQXGX0MA4zhBpF4/Zkw4kENCDw477C9Wzveyyxseg1IHH29gHxL2t8M2wO4KMJ0uKnzyForvZ8Q4IMRqWBEsTBwz/R/g6rxLwPhXQiMrb/XLMKjw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vmware.com; dmarc=pass action=none header.from=vmware.com; dkim=pass header.d=vmware.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bkObXFYl0u2l6wSWvckyP8nzBc/2edyZFjHayFXKsUk=; b=a2z0j3D4raJgPn4ivpFcGhb3ZUvTpmU9E5nfiBCDPZK2UQbOOgK8TgPP0PG8j15D0dLKO/fOkkJg82vlR8/96WP5vldNMcFcm9v2VZ85+aUD1IYYUeyBFmmSVmTjbv0Prm3ZKDTEUkj+pl9OruMulUmh8Z7LhKz4+VQUn3yhREU= Received: from MWHPR05MB2896.namprd05.prod.outlook.com (2603:10b6:300:65::20) by MWHPR05MB3552.namprd05.prod.outlook.com (2603:10b6:301:46::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3977.9; Fri, 26 Mar 2021 22:03:22 +0000 Received: from MWHPR05MB2896.namprd05.prod.outlook.com ([fe80::4c6d:a666:643c:9244]) by MWHPR05MB2896.namprd05.prod.outlook.com ([fe80::4c6d:a666:643c:9244%8]) with mapi id 15.20.3999.016; Fri, 26 Mar 2021 22:03:22 +0000 From: Jacob Champion To: "sfrost@snowman.net" CC: "daniel@yesql.se" , "pgsql-hackers@lists.postgresql.org" , "hlinnaka@iki.fi" , "andrew.dunstan@2ndquadrant.com" , "thomas.munro@gmail.com" , "michael@paquier.xyz" , "andres@anarazel.de" Subject: Re: Support for NSS as a libpq TLS backend Thread-Topic: Support for NSS as a libpq TLS backend Thread-Index: AQHWM1w61GrKUIsl6UCBcYrYNRBt46kJRsIAgAA+PQCAGQsiAIAEdGUAgAAqk4CAAbpsAIABgI0AgCnqVACAA5UBgIAAY+MAgBTX7ACAACGAAIASngCAgAAfeICABYLFgIAbyjgAgABy24CACw63gIAAAzWAgAwa5QCAA6HPgIAAKuGAgAYXDoCAACZBAIABTCSAgAALLgCAAcj/gIAA61UAgAU5IwCAAT6LgIBg7KEAgAJv4YCAAEgzAIAAvXeAgABWToCAExoQAIAAROWAgAFJBgCAAknrgIAHT2aAgACARQCAAC2WAIABbrgAgABSL4CAC5w5gIABgPEAgAXTZYCAAkVWAIAAzGsAgArFR4CAHUTDgIABj0AAgAGZzQCAAAZRAIABAusAgAASXQCAAAtLgIAACCwAgABgtICAAttBAIAAKdSA Date: Fri, 26 Mar 2021 22:03:22 +0000 Message-ID: <60817900d55ea2c9b8dd94658efd2d2adb76dd67.camel@vmware.com> References: <21FABD55-5F80-4D8B-B994-3DB81D8742EE@yesql.se> <20210321234950.GQ20766@tamriel.snowman.net> <743a11e6668bef648c7a53f862038e6b2fad3755.camel@vmware.com> <05da9d530ab01e6959bd50c993d590ad73575c21.camel@vmware.com> <20210324170036.GS20766@tamriel.snowman.net> <8f741a425fd135ca38a28063730715499f7f6445.camel@vmware.com> <20210324181016.GU20766@tamriel.snowman.net> <50c5a423329ea9996a2a2b167931711189ed5d1b.camel@vmware.com> <20210326193337.GW20766@tamriel.snowman.net> In-Reply-To: <20210326193337.GW20766@tamriel.snowman.net> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.36.4-0ubuntu1 authentication-results: snowman.net; dkim=none (message not signed) header.d=none;snowman.net; dmarc=none action=none header.from=vmware.com; x-originating-ip: [50.39.198.229] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0870a4b8-939d-4300-e8e2-08d8f0a2f8d8 x-ms-traffictypediagnostic: MWHPR05MB3552: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6790; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: eqQ66FM3eTZZjgVFVV5ca9H0C8txxHVTBfzvlxcV3fQFtnI6Qfe5Xm0KTH8ABktM2qKno416HsKNQjEBWkapqVu4RYUoYcV+kVq1O0RSACG+ENNI07Vr5cvNhm/PoKHOKg0XhJ5PaCNsPA2MLzWvFVSluZQKE1MRveaNQXv+lCrzYFVCuPUGYk1BCA7kXop7b6nrkJHTXeWwljKOtbfDm+D4DoS837GP2qUKE5Lqq8uEgtwvoN5hwSyA9GqPTU5pYp9kdmSaw3sSMTUsRKZc7i4NVDVHzdAZcWxCJqySMkxrvQuduOjjrTY1CeEzYomOspngCvbk/1nG8+hQjKvS/tWsZigasY1wAG496scstf9Y/p6rk9jQqcEV1BVQLs53eWnLlCNgEBzzAZNo4R4piPhf0qPqeqo06FFtGLMh2dEd6zi/DYnRuf5DiCgf7htLXe7QGKq80mmu+JvcQ5e+ZmEenz/BqhRqIn8wRdkvIQLpgthXteJPfejDZTBYnqunPbP15KfyPnAcLyMrVTqeoMblx3VYuy8BhuwP/YW0j/tsNSpg8SxW1l87VhJHtJ0MTObUsc68ferKk3TqdVfEnNscnXWaAQkFlrEnhTvBOlGfGf21+R6AeSDpmzc8YNd1kIjre7f33X+K7CNQTquhKI5eCUpV4Lm1AuiSmNOF15E= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR05MB2896.namprd05.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(396003)(39860400002)(346002)(376002)(366004)(66446008)(6512007)(86362001)(83380400001)(2906002)(36756003)(6916009)(8936002)(8676002)(316002)(6506007)(186003)(26005)(4326008)(54906003)(2616005)(71200400001)(5660300002)(66476007)(6486002)(66946007)(66556008)(76116006)(38100700001)(64756008)(478600001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?NnloUnQvbnBKeVU3S0hzR1RycTdDV090YXVLdy82bThjeEg5ZG5CbVFWVWU3?= =?utf-8?B?d0pKWmhJZ0N4SGI4NVlERlZHK2JqWWxIMXJwb3ZqdUIyVUIzYlBmT3JUSGo1?= =?utf-8?B?U2RBMzEzaWkxU2NXNlo0QmNTYVJ2Wk93T1NUbFVlV1Y4T2laMkJQekJnTDRJ?= =?utf-8?B?MkJHNiszUTkwazEwQ0xVMWJOazlBRncyRFdkMEx4Q1JtUG9tMDN3blVYVGd2?= =?utf-8?B?R2RYYU90WWMyaXRjM05pOGQ1dEZGaU9lbzBlZS9MelkzWGdXSEdSbzBSWlRO?= =?utf-8?B?WExrUUNTUW9WeCt2TDg5dDBxbTFZYUhCWjcyVGJjZ2VvWTd1SWZoZnJDbmY2?= =?utf-8?B?cXdzRlV4NDZ1YWdJSFc4clh0SW5uUnlTYVF3Y1lJWkgxWGRDWnZFOUdDdFpr?= =?utf-8?B?N1B4c0x1d3FkWnBlMU94VjNSQXhZRmltMzZXdVcvNlVnMHNKVXlBSk9pUERa?= =?utf-8?B?c3ZJYUQxT3l5ck9FQ3BLTzFaWVk3S2VYQ0IzSWJCcUVCNXZ5WUROY2ZqWEgy?= =?utf-8?B?azVVclpkUlNqdnlFSlhSSUl6Z3hpbjQvVC82KzFTQVBiVzdCR0t3SVdKYWZw?= =?utf-8?B?TnNBL1dlYURnOVkrekJRaG1XUzBleHdJa2Q4UlBiK0NtdE9rL0c5L2Z6d0JL?= =?utf-8?B?TGxQam1EQ0xsMit0UFVGVlYwR1FNWC9KVGNuUTNrU2VkMEcxSWRZbFVaL0xE?= =?utf-8?B?Q2RnejZTcTJnMmNlU1k3RVNaclFCdHJBRGtnNG9zV2liTU9GQUozWGlSZVdk?= =?utf-8?B?SkNucWV5eDFjS04xQ1FTLzM1K096aGpYb3hUVklTbHJYV042RzNBSS9ETXov?= =?utf-8?B?TnlqcVMzTW94MWdoQ2V1NksvSlZ4QWUySjJmZ29abUhQVXlkd09uS1R6TzJL?= =?utf-8?B?eDJpdXlsSE9nM2pkYVRwQVVRU2c4TnZvY0FudTlnRkV0dllyWGhrZUhwTExL?= =?utf-8?B?QnRLbmRIKzlmcTdBRVZpakZyT25WTTV3VUppL1VDcjRoVS9KYmVGZmI2NExV?= =?utf-8?B?b0dRNkx6dVBMeTc4aEkvWi9rZ2twcHJJQ3l1UE9lU1JCNFVjSEgvNVBET3BW?= =?utf-8?B?TFAxOVdKWE5uc216aktLRG90MjJkektSZWxjci9iN0hPcVdrV05WYlA2Nkg0?= =?utf-8?B?ZkdPZGFwYkY5a2pQV1NNM0NQV04yQ1ZHbkI2RTZiZ1lqelYwSWFxT3lqZE9U?= =?utf-8?B?YnlobWJaODJPWGhQQUNFZGFEenprRFBOM3ZLOFNEbjRPa3J4Q2VLeVBOVUpL?= =?utf-8?B?MGJEdEVFSEo0TTNNQm94RUNZR0NpT2U0RHJ4RS9POHAyZ2lLYm9WSURBV0FF?= =?utf-8?B?cG5MKzdsYUl6MGx4QXdqbUlkdEVLTTRITUtpQXRHa1pBalFXckgrSWNxM2Zo?= =?utf-8?B?eGNoamVMUW03QzcrUU9vNDd5ZEVYQW5PZGUwdlB2bzRlWDJOOU1qakhqOEVj?= =?utf-8?B?Vkc5RkQwYStTN3d3UEVFeWtFaE1BcEp5RDZxY1hESmlVRWxFUlJzOWFweWRh?= =?utf-8?B?RDJUQVNaZk5RSWJmaU1UN0kwSThMOFRyRGdPT3RQUlMvVzZvQnJHbzhJUSs5?= =?utf-8?B?NEFvQjRPUllleE8zNnZyb0tldmJqM3lKZlVNdUhocWdlOVFsL3QxUmcvZWJo?= =?utf-8?B?REFSTkhDTkdYd0o3aGZ3VW5VdWxiTm9KVFYwWk5Gem1BanIyN04yWUkyN1NN?= =?utf-8?B?ZWZNY1R5c1R6cFlrWEN2c1lzQ3d6ZjFMcXFJRVMvRm1oM0FjM05EN093cUlZ?= =?utf-8?Q?HoZv5NsRkX4mdu8n7zWg6pX5WVp7FY5sQo4wVo0?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <7F8DAD8054F9CD4E999584C1BA4724C2@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR05MB2896.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0870a4b8-939d-4300-e8e2-08d8f0a2f8d8 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Mar 2021 22:03:22.2198 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: fZEoWyS3gCHqxPFQB1xjpCH4hOuJj2WUl84+QtbNnVTbt8pXXmPfT4vqcCxukLUpHdmGj5jXc5SOtnpUMlucVg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR05MB3552 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk T24gRnJpLCAyMDIxLTAzLTI2IGF0IDE1OjMzIC0wNDAwLCBTdGVwaGVuIEZyb3N0IHdyb3RlOg0K PiAqIEphY29iIENoYW1waW9uIChwY2hhbXBpb25Adm13YXJlLmNvbSkgd3JvdGU6DQo+ID4gRGF0 YWJhc2VzIHRoYXQgYXJlIG9wZW5lZCAqYWZ0ZXIqIHRoZSBmaXJzdCBvbmUgYXJlIGdpdmVuIHRo ZWlyIG93bg0KPiA+IHNlcGFyYXRlIHNsb3RzLiBbLi4uXQ0KPiANCj4gVGhpcyBpcyBtb3JlLW9y LWxlc3Mgd2hhdCB3ZSB3b3VsZCB3YW50IHRob3VnaCwgcmlnaHQuLj8gIElmIGEgdXNlciBhc2tz DQo+IGZvciBhIGNvbm5lY3Rpb24gd2l0aCBzc2xfZGF0YWJhc2U9YmxhaCBhbmQgc3NsY2VydD13 aGF0ZXZlciwgd2UnZCB3YW50DQo+IHRvIG9wZW4gZGF0YWJhc2UgJ2JsYWgnIGFuZCBzZWFyY2gg KGp1c3QpIHRoYXQgZGF0YWJhc2UgZm9yIGNlcnQNCj4gJ3doYXRldmVyJy4gIFdlIGNvdWxkIHBv c3NpYmx5IG9mZmVyIG90aGVyIG9wdGlvbnMgaW4gdGhlIGZ1dHVyZSBidXQNCj4gY2VydGFpbmx5 IHRoaXMgd291bGQgd29yayBhbmQgYmUgdGhlIG1vc3Qgc3RyYWlnaHQtZm9yd2FyZCBhbmQgZXhw ZWN0ZWQNCj4gYmVoYXZpb3IuDQoNClllcywgYnV0IHNlZSBiZWxvdy4NCg0KPiA+IElmIHlvdSBT RUNNT0RfT3BlblVzZXJEQigpIGEgZGF0YWJhc2UgdGhhdCBpcyBpZGVudGljYWwgdG8gdGhlIGZp cnN0DQo+ID4gKGludGVybmFsKSBkYXRhYmFzZSwgTlNTIGRlZHVwbGljYXRlcyBmb3IgeW91IGFu ZCBqdXN0IHJldHVybnMgdGhlDQo+ID4gaW50ZXJuYWwgc2xvdC4gV2hpY2ggc2VlbXMgbGlrZSBp dCdzIGhlbHBmdWwsIGV4Y2VwdCB5b3UncmUgbm90DQo+ID4gYWxsb3dlZCB0byBjbG9zZSB0aGF0 IGRhdGFiYXNlLCBhbmQgeW91IGhhdmUgdG8ga25vdyBub3QgdG8gY2xvc2UgaXQNCj4gPiBieSBj aGVja2luZyB0byBzZWUgd2hldGhlciB0aGF0IHNsb3QgaXMgdGhlICJpbnRlcm5hbCBrZXkgc2xv dCIuIEl0DQo+ID4gYXBwZWFycyB0byByZW1haW4gb3BlbiB1bnRpbCBOU1MgaXMgc2h1dCBkb3du IGVudGlyZWx5Lg0KPiANCj4gU2VlbXMgbGlrZSB3ZSBzaG91bGRuJ3QgZG8gdGhhdCBhbmQgc2hv dWxkIGp1c3QgdXNlIFNFQ01PRF9PcGVuVXNlckRCKCkNCj4gZm9yIG9wZW5pbmcgZGF0YWJhc2Vz Lg0KDQpXZSBkb24ndCBoYXZlIGNvbnRyb2wgb3ZlciB3aGV0aGVyIG9yIG5vdCB0aGlzIGhhcHBl bnMuIElmIHRoZQ0KYXBwbGljYXRpb24gZW1iZWRkaW5nIGxpYnBxIGhhcyBhbHJlYWR5IGxvYWRl ZCB0aGUgZGF0YWJhc2UgaW50byB0aGUNCmludGVybmFsIHNsb3QgdmlhIGl0cyBvd24gTlNTIGlu aXRpYWxpemF0aW9uLCB0aGVuIHdoZW4gd2UgY2FsbA0KU0VDTU9EX09wZW5Vc2VyREIoKSBmb3Ig dGhhdCBzYW1lIGRhdGFiYXNlLCB0aGUgaW50ZXJuYWwgc2xvdCB3aWxsIGJlDQpyZXR1cm5lZCBh bmQgd2UgaGF2ZSB0byBoYW5kbGUgaXQgYWNjb3JkaW5nbHkuDQoNCkl0J3Mgbm90IGEgaHVnZSBh bW91bnQgb2Ygd29yaywgYnV0IGl0IGlzIG1hZ2ljIGtub3dsZWRnZSB0aGF0IGhhcyB0bw0KYmUg bWFpbnRhaW5lZCwgZXNwZWNpYWxseSBpbiB0aGUgYWJzZW5jZSBvZiBzcGVjaWFsaXplZCBjbGll bnRzaWRlDQp0ZXN0cy4NCg0KPiA+IEJ1dCBpZiB5b3Ugb3BlbiBhIGRhdGFiYXNlIHRoYXQgaXMg Km5vdCogdGhlIG1hZ2ljIGludGVybmFsIGRhdGFiYXNlLA0KPiA+IGFuZCB0aGVuIG9wZW4gYSBk dXBsaWNhdGUgb2YgdGhhdCBvbmUsIE5TUyBjcmVhdGVzIHlldCBhbm90aGVyIG5ldyBzbG90DQo+ ID4gZm9yIHRoZSBkdXBsaWNhdGUuIFNvIFNFQ01PRF9PcGVuVXNlckRCKCkgbWF5IG9yIG1heSBu b3QgYmUgYSByZXNvdXJjZQ0KPiA+IGhvZywgZGVwZW5kaW5nIG9uIHRoZSBnbG9iYWwgc3RhdGUg b2YgdGhlIHByb2Nlc3MgYXQgdGhlIHRpbWUgbGlicHENCj4gPiBvcGVucyBpdHMgZmlyc3QgY29u bmVjdGlvbi4gV2Ugd29uJ3QgYmUgYWJsZSB0byBjb250cm9sIHdoYXQgdGhlIHBhcmVudA0KPiA+ IGFwcGxpY2F0aW9uIHdpbGwgZG8gYmVmb3JlIGxvYWRpbmcgdXMgdXAuDQo+IA0KPiBJIHdvdWxk IHRoaW5rIHdlJ2Qgd2FudCB0byBhdm9pZCByZS1vcGVuaW5nIHRoZSBzYW1lIGRhdGFiYXNlIG11 bHRpcGxlDQo+IHRpbWVzLCB0byBhdm9pZCB0aGUgZHVwbGljYXRlIHNsb3RzIGFuZCBzdWNoLiAg SWYgdGhlIGFwcGxpY2F0aW9uIGNvZGUNCj4gZG9lcyBpdCB0aGVtc2VsdmVzLCB3ZWxsLCB0aGVy ZSdzIG5vdCBtdWNoIHdlIGNhbiBkbyBhYm91dCB0aGF0LCBidXQgd2UNCj4gY291bGQgYXQgbGVh c3QgYXZvaWQgZG9pbmcgc28gaW4gKm91ciogY29kZS4gIEkgd291bGRuJ3QgZXhwZWN0IHVzIHRv IGJlDQo+IG9wZW5pbmcgaHVuZHJlZHMgb2YgZGF0YWJhc2VzIGVpdGhlciBhbmQgc28ga2VlcGlu ZyBhIHNpbXBsZSBsaXN0IGFyb3VuZA0KPiBvZiB3aGF0IHdlJ3ZlIG9wZW5lZCBhbmQgc2Nhbm5p bmcgaXQgc2VlbXMgbGlrZSBpdCdkIGJlIHdvcmthYmxlLiAgT2YNCj4gY291cnNlLCB0aGlzIGNv dWxkIGxpa2VseSBiZSBpbXByb3ZlZCBpbiB0aGUgZnV0dXJlIGJ1dCBJIHdvdWxkIHRoaW5rDQo+ IHRoYXQnZCBiZSBnb29kIGZvciBhbiBpbml0aWFsIGltcGxlbWVudGF0aW9uLg0KPiANCj4gWy4u Ll0NCj4gDQo+ID4gSXQgYWxzbyBkb2Vzbid0IGxvb2sgbGlrZSBhbnkgb2YgdGhlIFNFQ01PRF8q IG1hY2hpbmVyeSB0aGF0IHdlJ3JlDQo+ID4gbG9va2luZyBhdCBpcyB0aHJlYWQtc2FmZSwgYnV0 IEknZCByZWFsbHkgbGlrZSB0byBiZSB3cm9uZy4uLg0KPiANCj4gVGhhdCdzIHVuZm9ydHVhbnRl IGJ1dCBzb2x2YWJsZSBieSB1c2luZyBvdXIgb3duIGxvY2tzLCBzaW1pbGFyDQo+IHRvIHdoYXQn cyBkb25lIGluIGZlLXNlY3VyZS1vcGVuc3NsLmMuDQoNClllYWguIEkgd2FzIGhvcGluZyB0byBh dm9pZCBpbXBsZW1lbnRpbmcgb3VyIG93biBsb2NrcyBhbmQgcmVmY291bnRzLA0KYnV0IGl0IHNl ZW1zIGxpa2UgaXQncyBnb2luZyB0byBiZSByZXF1aXJlZC4NCg0KLS1KYWNvYg0K