Received: by 2002:ab2:784b:0:b0:1fd:adc2:8405 with SMTP id m11csp332166lqp; Mon, 10 Jun 2024 05:47:51 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXlbm2hefwsuvsmO+yDMSyC8JHCqyw2fZ8FmKZmXg895z5ZYHZHpLedI55u5/HzBFWyARwmvDt9MqOUZFfu3VpOvT+5VbrAocow87H+Yg== X-Google-Smtp-Source: AGHT+IGemU+tRPlWBbr6Oq7INe1lHJsl5Ta+PMb6caixh6k4tkqtnNCVncOKv9yGG/AlLTHNH3l4 X-Received: by 2002:a05:6214:5d01:b0:6ad:67d3:af2f with SMTP id 6a1803df08f44-6b059bb020amr102278386d6.13.1718023671092; Mon, 10 Jun 2024 05:47:51 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1718023671; cv=pass; d=google.com; s=arc-20160816; b=zYWnWC0nBqEWt6NEzpE0/Xo/3bS9GJN2jDc9nHvueu8sXNL9DnOrzzGM90wkSXvQAK ItwqwaWcQHVrIpcwMe3XI3W72BAqVIrF1L/2xa6iPAcA+7o+g0PKvAeESaSYEz3Rbsh7 668g3ZLAuEZ+vQSWPdc4fXZR/g5O0Uw3Tbqfr2VrtWKXzxC5ocUQOkAByym45+6CGu03 ARv5ahM9l6EMet3sDuT1msr0XiQ6oT/mQrHYHvmkpCEKmcthIc/Q1KPAL6WGkNpEBgXP kxYxu8SdSH9omt3F4bIkGScK5YZnoruUTCzBmJwXe04Mn9qVhtqfsZyZLxcnHXPd+yb9 +NXg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :user-agent:content-transfer-encoding:references:in-reply-to:date:cc :to:from:subject:message-id:dkim-signature; bh=jNwaW36TUh70BqJi2gMaWPV/TRik50cq3arpxox5upg=; fh=ATHBLT/CvMfY3lAcHR2hvPwjtAL/YNB30TF5/N+6c/k=; b=MWDhqm8U3Kpuqtjr3ptTQ5fjmecBmN5XFxUCfafFSI60427Cquv7KCISeIQtSTZyuA ESyCQ3NTugv5JJS3N4U+LLTHoyRg5GIh0qrVUz/qgcOflD00ynplnOJvISFzvomQ4cGa 6n5taLYYF98s54KvaSJ8Rv6wdzywqyqrgTAukc1ST0e/F1XUZlkl7IfRlI6xfAXo9v1c PIuxw/iF6H33XhsKUKbgL61Ic32O5UYTIPSZJU9yKo2APUWhBDjMx/WmpHvLNZcUm5NG 0GkoktxmVbbsMYoBEHlkVoUw0Z+0wt1bumKBcsKNuSVA2319ehCQv4O43XBjpU++5GGg mnpQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=jKizkHjb; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-nfs+bounces-3630-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-nfs+bounces-3630-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id 6a1803df08f44-6b04f9fb118si108534346d6.420.2024.06.10.05.47.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Jun 2024 05:47:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs+bounces-3630-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=jKizkHjb; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-nfs+bounces-3630-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-nfs+bounces-3630-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 885F31C21100 for ; Mon, 10 Jun 2024 12:47:50 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BE3FB80BF5; Mon, 10 Jun 2024 12:47:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jKizkHjb" X-Original-To: linux-nfs@vger.kernel.org Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9ABE87FBC3 for ; Mon, 10 Jun 2024 12:47:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718023669; cv=none; b=EiaVYxH4bmwb3BhatwNmD/PrYG0yf1OjTyW+iYMaDLoYCBoMu6veBvN+CnWy6vK1VlXIbZaueerwkm67j4HrLG3MEce9RoQykCHVYGr++AYYxrm1E/nl0wklpdOAwe+TpD/HlDLnrveQdMI3ZmI3gzjBCvz0fnl9UAfLbF45mUA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718023669; c=relaxed/simple; bh=jNwaW36TUh70BqJi2gMaWPV/TRik50cq3arpxox5upg=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=VHSHVwprnUSGoDRuc1oOIrlW5HOcUzochsh3nQ3TztjlAgvJuc2NEhmqQ5JPSx85nWkn9yzCIDGI07v0aOeH83S498n7nD71yHu+BO9RFof3VBgaSq4q+CNQsFggig3Slvryq24/LguR0zV33HBvGFQ9nfN/4qUzwdyVmOFXFVA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jKizkHjb; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 885CCC2BBFC; Mon, 10 Jun 2024 12:47:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1718023669; bh=jNwaW36TUh70BqJi2gMaWPV/TRik50cq3arpxox5upg=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=jKizkHjbIed4gIa9sTi0c+tCdPf5P2k7hkQJFI/vFAcPc21LmLVvGLVPltBKmnuio 9boYs96CSp6rjZe7ZxyvxevCSj1Wgez4Fc9Qlb94pSe7WWVTqj8AUvrifGbWVY2y7Y YswyEQzD+3T47cYG/H6uxyw8TRjvl9Up3PeqJ65IgY7r8MCJTqsoxS5sWvmmP1LRzO vG9qScRe4CMOg63oCBF2DECb4Gwmfmi3PJ9Ok74+nQDs/dmQjqFRmZ8z05bcL1AtsF hYRNrgAWg2Cozwo2MFCtkcKRtuMMqEUCXkEgHZ33SV3myxvnRTF2qBqhCFoUYvJ73a Hjn4Jlz/kgiHw== Message-ID: Subject: Re: [for-6.11 PATCH 00/29] nfs/nfsd: add support for localio bypass From: Jeff Layton To: Mike Snitzer , linux-nfs@vger.kernel.org Cc: Chuck Lever , Trond Myklebust , snitzer@hammerspace.com Date: Mon, 10 Jun 2024 08:47:47 -0400 In-Reply-To: <20240607142646.20924-1-snitzer@kernel.org> References: <20240607142646.20924-1-snitzer@kernel.org> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.50.4 (3.50.4-1.fc39) Precedence: bulk X-Mailing-List: linux-nfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 T24gRnJpLCAyMDI0LTA2LTA3IGF0IDEwOjI2IC0wNDAwLCBNaWtlIFNuaXR6ZXIgd3JvdGU6Cj4g SGksCj4gCj4gVGhpcyBwYXRjaCBzZXJpZXMgcmViYXNlcyAibG9jYWxpbyIgY2hhbmdlcyB0aGF0 IEhhbW1lcnNwYWNlIChhbmQKPiBQcmltYXJ5IERhdGEgYmVmb3JlIGl0KSBoYXMgYmVlbiBjYXJy eWluZyBzaW5jZSAyMDE0LiBUaGUgcmVhc29uIHRoZXkKPiB3ZXJlbid0IHByb3Bvc2VkIGZvciB1 cHN0cmVhbSBpbmNsdXNpb24gdW50aWwgbm93IHdhcyB0aGUgaGFuZHNoYWtlCj4gZm9yIHdoZXRo ZXIgb3Igbm90IGEgY2xpZW50IGFuZCBzZXJ2ZXIgYXJlIGxvY2FsIHdhcyBicml0dGxlLiBQbGVh c2UKPiBzZWUgdGhlIGNvbW1pdCBoZWFkZXIgb2YgIm5mcy9sb2NhbGlvOiBkaXNjb250aW51ZSBu ZXR3b3JrIGFkZHJlc3MKPiBiYXNlZCBsb2NhbGlvIHNldHVwIiAocGF0Y2ggMjApIGZvciBtb3Jl IGNvbnRleHQuCj4gCj4gQXNpZGUgZnJvbSByZWJhc2luZyB0aGUgb3JpZ2luYWwgY2hhbmdlcyAo cGF0Y2hlcyAxIC0gMTgpIGZyb20gYQo+IDUuMTUuLTEzMC1zdGFibGUga2VybmVsLCBteSBjb250 cmlidXRpb24gdG8gdGhpcyBzZXJpZXMgd2FzIHRvIG1ha2UKPiB0aGUgbG9jYWxpbyBoYW5kc2hh a2UgbW9yZSByb2J1c3QuIFRvIGRvIHNvIGEgbmV3IExPQ0FMSU8gcHJvdG9jb2wKPiBleHRlbnNp b24gaGFzIGJlZW4gYWRkZWQgdG8gYm90aCBORlMgdjMgYW5kIHY0LiBJdCBmb2xsb3dzIHRoZQo+ IHdlbGwtd29ybiBwYXR0ZXJuIGVzdGFibGlzaGVkIGJ5IHRoZSBBQ0wgcHJvdG9jb2wgZXh0ZW5z aW9uLgo+IAo+IFRoZXNlIGNoYW5nZXMgaGF2ZSBwcm92ZW4gc3RhYmxlIGFnYWluc3QgdmFyaW91 cyB0ZXN0IHNjZW5hcmlvczoKPiAxKSBjbGllbnQgYW5kIHNlcnZlciBib3RoIG9uIGxvY2FsaG9z dCAoZm9yIGJvdGggdjMgYW5kIHY0LjIpCj4gMikgdmFyaW91cyBwZXJtdXRhdGlvbnMgb2YgY2xp ZW50IGFuZCBzZXJ2ZXIgc3VwcG9ydCBlbmFibGVtZW50IGZvcgo+IMKgwqAgYm90aCBsb2NhbCBh bmQgcmVtb3RlIGNsaWVudCBhbmQgc2VydmVyLgo+IDMpIGNsaWVudCBvbiBob3N0LCBzZXJ2ZXIg d2l0aGluIGEgY29udGFpbmVyIChmb3IgYm90aCB2MyBhbmQgdjQuMikKPiAKPiBJJ3ZlIHByZXNl cnZlZCBhbGwgZXN0YWJsaXNoZWQgYXV0aG9yIGFuZCBTaWduZWQtb2ZmLWJ5IGF0dHJpYnV0aW9u Cj4gZGVzcGl0ZSBBbmR5LCBQZW5nIGFuZCBKZWZmIG5vIGxvbmdlciB3b3JraW5nIGZvciBQcmlt YXJ5IERhdGEgKG9yCj4gSGFtbWVyc3BhY2UpLiBJJ3ZlIGNvbmZpcm1lZCB3aXRoIFRyb25kIHRo YXQgaXRzIGJlc3QgdG8ga2VlcCBpdCBhbGwKPiBkZXNwaXRlIHRob3NlIGVtYWlsIGFkZHJlc3Nl cyBubyBsb25nZXIgYmVpbmcgYWN0aXZlLiBNeSBTaWduZWQtb2ZmLQo+IGJ5Cj4gYW5kIHRoYXQg b2YgcmV2aWV3ZXJzIGFuZCBtYWludGFpbmVyKHMpIHRvIGZvbGxvdyB3aWxsIGJ1aWxkIG9uIHRo ZQo+IGVzdGFibGlzaGVkIGRldmVsb3BtZW50IHByb3ZlbmFuY2UuCj4KPiBJIGFsc28gbWFkZSBz dXJlIHRvIHByZXNlcnZlIHRoZSBvcmlnaW5hbCB3b3JrIGRvbmUgYnkgb3RoZXJzIChyYXRoZXIK PiB0aGFuIGZvbGQgY2hhbmdlcyB0aGF0IEkgYWRkIHRvIHRoaXMgd29yaywgdG8gYXZvaWQgdGFp bnRpbmcgdGhlIGxvbmcKPiBlc3RhYmxpc2hlZCBkZXZlbG9wbWVudCBhbmQgc2VxdWVuY2Ugb2Yg Y2hhbmdlcykuCj4gCgpIb25lc3RseSwgSSBkb24ndCBnaXZlIGEgZmlnIGFib3V0IHRoZSBoaXN0 b3JpY2FsIGNoYW5nZXMgaGVyZS4gSSdkCl9tdWNoXyByYXRoZXIgc2VlIGEgbW9yZSBsb2dpY2Fs IGZvbGRlZCBwYXRjaHNldCB0aGF0IGF2b2lkcyBhIGxvdCBvZgp0aGUgImNodXJuIi4gR2l2ZW4g dGhlIGxvbmcgdGltZXNjYWxlIG9mIHRoaXMgc2VyaWVzLCB0aGUgaGlzdG9yeSBpcwpqdXN0IG5v dCB0ZXJyaWJseSB1c2VmdWwuCgpGb3IgaW5zdGFuY2UsIHlvdSdyZSBhZGRpbmcgaW4gdGhlIG9s ZCBuZXR3b3JrIGFkZHJlc3MgdHJhY2tpbmcgaW4gdGhlCmVhcmxpZXIgcGF0Y2hlcyBhbmQgdGhl biByZW1vdmUgdGhhdCBpbiBwYXRjaCAjMjAsIHdoaWNoIGp1c3QgbWVhbnMgSQpoYXZlIHRvIHJl dmlldyBhIGJ1bmNoIG9mIHN0dWZmIHRoYXQgaXMgdWx0aW1hdGVseSBnb2luZyBhd2F5LiBJJ2xs CnN0aWxsIHJldmlldyB0aGUgc2V0IHlvdSd2ZSBwb3N0ZWQsIGJ1dCBJIHRoaW5rIGZvbGRpbmcg ZG93biB0aGUKY2hhbmdlcyB3b3VsZCBiZSBiZXN0LgoKPiBNeSBjb250YWluZXIgdGVzdGluZyB3 YXMgZG9uZSBpbiB0ZXJtcyBvZiBwb2RtYW4gbWFuYWdlZCBjb250YWluZXJzLgo+IEknZCBhcHBy ZWNpYXRlIGFkZGl0aW9uYWwgcmV2aWV3IHJlbGF0aXZlIHRvIG5ldHdvcmsgbmFtZXNwYWNlcy4K PiBmcy9uZnNkL2xvY2FsaW8uYzpuZnNkX2xvY2FsX2Zha2VycXN0X2NyZWF0ZSgpIGluIHBhcnRp Y3VsYXIgaXMKPiBzaW1wbHkKPiB1c2luZyB0aGUgY2xpZW50J3MgbmV0d29yayBuYW1lc3BhY2Ug d2l0aCBycGNfbmV0X25zKHJwY19jbG50KS4gSQo+IGhhdmUKPiBhbiBleHRyYSBwYXRjaCB0aGF0 IHVwZGF0ZXMgbmZzZF9vcGVuX2xvY2FsX2ZoKCkncyBmaXJzdCBhcmd1bWVudCB0bwo+IGJlIHRo ZSBzZXJ2ZXIncyAnc3RydWN0IG5ldCcgLS0gYnV0IEkgc3RvcHBlZCBzaG9ydCBvZiBmb3JtYWxs eQo+IGluY2x1ZGluZyB0aGF0IGNoYW5nZSBpbiB0aGlzIHNlcmllcyBiZWNhdXNlIGl0IGhhc24n dCBwcm92ZW4gbmVlZGVkCj4gKGJ1dCBtb3JlIGV4b3RpYyBoeXBvdGhldGljYWwgc2NlbmFyaW9z IGNvdWxkIGVhc2lseSBleHBvc2UgdGhlIG5lZWQKPiBmb3IgaXQpLiBJIGNhbiBhcHBlbmQgaXQg dG8gdGhlIHNlcmllcyBhcyBhbiAiUkZDIFBBVENIIDMwLzI5IiBhcwo+IG5lZWRlZC4KPiAKPiBB bGwgcmV2aWV3IGFuZCBjb21tZW50cyBhcmUgd2VsY29tZSEKPiAKPiBUaGFua3MsCj4gTWlrZQo+ IAo+IE1pa2UgU25pdHplciAoMTEpOgo+IMKgIG5mcy93cml0ZTogZml4IG5mc19pbml0aWF0ZV9j b21taXQgdG8gcmV0dXJuIGVycm9yIGZyb20KPiBuZnNfbG9jYWxfY29tbWl0Cj4gwqAgbmZzL2xv Y2FsaW86IGRpc2NvbnRpbnVlIG5ldHdvcmsgYWRkcmVzcyBiYXNlZCBsb2NhbGlvIHNldHVwCj4g wqAgbmZzX2NvbW1vbjogYWRkIE5GUyB2MyBMT0NBTElPIHByb3RvY29sIGV4dGVuc2lvbiBlbmFi bGVtZW50Cj4gwqAgbmZzOiBpbXBsZW1lbnQgdjMgY2xpZW50IHN1cHBvcnQgZm9yIE5GU19MT0NB TElPX1BST0dSQU0KPiDCoCBuZnNkOiBpbXBsZW1lbnQgdjMgc2VydmVyIHN1cHBvcnQgZm9yIE5G U19MT0NBTElPX1BST0dSQU0KPiDCoCBuZnNfY29tbW9uOiBhZGQgTkZTIHY0IExPQ0FMSU8gcHJv dG9jb2wgZXh0ZW5zaW9uIGVuYWJsZW1lbnQKPiDCoCBuZnM6IGltcGxlbWVudCB2NCBjbGllbnQg c3VwcG9ydCBmb3IgTkZTX0xPQ0FMSU9fUFJPR1JBTQo+IMKgIG5mc2Q6IGltcGxlbWVudCB2NCBz ZXJ2ZXIgc3VwcG9ydCBmb3IgTkZTX0xPQ0FMSU9fUFJPR1JBTQo+IMKgIG5mcy9uZnNkOiBzd2l0 Y2ggR0VUVVVJRCB0byB1c2luZyB7ZW5jb2RlLGRlY29kZX1fb3BhcXVlX2ZpeGVkCj4gwqAgbmZz L25mc2Q6IGNvbnNvbGlkYXRlIHtlbmNvZGUsZGVjb2RlfV9vcGFxdWVfZml4ZWQgaW4gbmZzX3hk ci5oCj4gwqAgbmZzL2xvY2FsaW86IG1vdmUgbWFuYWdpbmcgbmZzZF9vcGVuX2xvY2FsX2ZoIHN5 bWJvbCB0byBuZnNfY29tbW9uCj4gCj4gUGVuZyBUYW8gKDMpOgo+IMKgIHN1bnJwYzogYWRkIGFu ZCBleHBvcnQgcnBjX250b3A2X2FkZHJfbm9zY29wZWlkCj4gwqAgbmZzOiBtb3ZlIG5mc19zdGF0 X3RvX2Vycm5vIHRvIG5mcy5oCj4gwqAgbmZzL2ZsZXhmaWxlczogY2hlY2sgbG9jYWwgRFMgd2hl biBtYWtpbmcgRFMgY29ubmVjdGlvbnMKPiAKPiBUcm9uZCBNeWtsZWJ1c3QgKDgpOgo+IMKgIE5G UzogTWFuYWdlIGJvb3QgdmVyaWZpZXIgY29ycmVjdGx5IGluIHRoZSBjYXNlIG9mIGxvY2FsaW8K PiDCoCBORlM6IEVuYWJsZSBsb2NhbGlvIGZvciBub24tcE5GUyBJL08KPiDCoCBwbmZzL2ZsZXhm aWxlczogRW5hYmxlIGxvY2FsaW8gZm9yIGZsZXhmaWxlcyBJL08KPiDCoCBORlM6IEFkZCB0cmFj ZXBvaW50cyBmb3IgbmZzX2xvY2FsX2VuYWJsZSBhbmQgbmZzX2xvY2FsX2Rpc2FibGUKPiDCoCBO RlM6IERvbid0IGNhbGwgZmlsZXN5c3RlbSB3cml0ZSgpIHJvdXRpbmVzIGRpcmVjdGx5Cj4gwqAg TkZTOiBEb24ndCBjYWxsIGZpbGVzeXN0ZW0gcmVhZCgpIHJvdXRpbmVzIGRpcmVjdGx5Cj4gwqAg TkZTOiBVc2UgY29tcGxldGlvbiByYXRoZXIgdGhhbiBmbHVzaF93b3JrKCkgaW4gbmZzX2xvY2Fs X2NvbW1pdCgpCj4gwqAgTkZTOiBsb2NhbGlvIHdyaXRlcyBuZWVkIHRvIHVzZSBhIG5vcm1hbCB3 b3JrcXVldWUKPiAKPiBXZXN0b24gQW5kcm9zIEFkYW1zb24gKDcpOgo+IMKgIG5mczogcGFzcyBu ZnNfY2xpZW50IHRvIG5mc19pbml0aWF0ZV9wZ2lvCj4gwqAgbmZzOiBwYXNzIG5mc19jbGllbnQg dG8gbmZzX2luaXRpYXRlX2NvbW1pdAo+IMKgIG5mczogcGFzcyBkZXNjcmlwdG9yIHRocnUgbmZz X2luaXRpYXRlX3BnaW8gcGF0aAo+IMKgIHN1bnJwYzogaGFuZGxlIE5VTEwgcmVxLT5kZWZlciBp biBjYWNoZV9kZWZlcl9yZXEKPiDCoCBzdW5ycGM6IGV4cG9ydCBzdmNfZGVmZXIKPiDCoCBzdW5y cGM6IGFkZCBycGNhdXRoX21hcF90b19zdmNfY3JlZAo+IMKgIG5mcy9uZnNkOiBhZGQgImxvY2Fs IGlvIiBzdXBwb3J0Cj4gCj4gwqBmcy9LY29uZmlnwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMyArCj4gwqBmcy9uZnMv S2NvbmZpZ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8wqAgMjUgKwo+IMKgZnMvbmZzL01ha2VmaWxlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAyICsKPiDCoGZzL25mcy9ibG9ja2xh eW91dC9ibG9ja2xheW91dC5jwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDYgKy0KPiDCoGZzL25m cy9jbGllbnQuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfMKgIDE1ICstCj4gwqBmcy9uZnMvZmlsZWxheW91dC9maWxlbGF5b3V0LmPCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHzCoCAxOSArLQo+IMKgZnMvbmZzL2ZsZXhmaWxlbGF5b3V0L2ZsZXhm aWxlbGF5b3V0LmPCoMKgwqAgfCAxMjkgKysrLQo+IMKgZnMvbmZzL2ZsZXhmaWxlbGF5b3V0L2Zs ZXhmaWxlbGF5b3V0LmjCoMKgwqAgfMKgwqAgMiArCj4gwqBmcy9uZnMvZmxleGZpbGVsYXlvdXQv ZmxleGZpbGVsYXlvdXRkZXYuYyB8wqDCoCA2ICsKPiDCoGZzL25mcy9pbm9kZS5jwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAyOCArLQo+ IMKgZnMvbmZzL2ludGVybmFsLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfCAxMDEgKystCj4gwqBmcy9uZnMvbG9jYWxpby5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA4MTQKPiArKysrKysrKysrKysr KysrKysrKysrCj4gwqBmcy9uZnMvbmZzMnhkci5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDY5IC0tCj4gwqBmcy9uZnMvbmZzM19mcy5owqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSAr Cj4gwqBmcy9uZnMvbmZzM2NsaWVudC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfMKgIDI1ICsKPiDCoGZzL25mcy9uZnMzcHJvYy5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDMgKwo+IMKgZnMvbmZzL25m czN4ZHIuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHzCoCA1OCArKwo+IMKgZnMvbmZzL25mczRfZnMuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDIgKwo+IMKgZnMvbmZzL25mczRjbGllbnQu Y8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAyMyArCj4g wqBmcy9uZnMvbmZzNHByb2MuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8wqDCoCAzICsKPiDCoGZzL25mcy9uZnM0eGRyLmPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNjUgKy0KPiDCoGZzL25mcy9u ZnN0cmFjZS5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHzCoCA2MSArKwo+IMKgZnMvbmZzL3BhZ2VsaXN0LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDM1ICstCj4gwqBmcy9uZnMvcG5mcy5jwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDI0 ICstCj4gwqBmcy9uZnMvcG5mcy5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNiArLQo+IMKgZnMvbmZzL3BuZnNfbmZzLmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNSArLQo+ IMKgZnMvbmZzL3dyaXRlLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfMKgIDI4ICstCj4gwqBmcy9uZnNfY29tbW9uL01ha2VmaWxlwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMyArCj4gwqBmcy9uZnNfY29t bW9uL25mc2xvY2FsaW8uY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNjggKysK PiDCoGZzL25mc2QvS2NvbmZpZ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfMKgIDI1ICsKPiDCoGZzL25mc2QvTWFrZWZpbGXCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAyICsKPiDCoGZzL25m c2QvZmlsZWNhY2hlLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8wqDCoCAyICstCj4gwqBmcy9uZnNkL2xvY2FsaW8uY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMyNCArKysrKysrKysKPiDCoGZzL25mc2QvbmV0 bnMuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fMKgwqAgNCArCj4gwqBmcy9uZnNkL25mc2QuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMTEgKwo+IMKgZnMvbmZzZC9uZnNzdmMuY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA5MSAr Ky0KPiDCoGZzL25mc2QvdHJhY2UuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMyArLQo+IMKgZnMvbmZzZC92ZnMuaMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDggKwo+ IMKgZnMvbmZzZC94ZHIuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHzCoMKgIDYgKwo+IMKgaW5jbHVkZS9saW51eC9uZnMuaMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA2NSArKwo+IMKgaW5jbHVk ZS9saW51eC9uZnNfZnMuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzC oMKgIDIgKwo+IMKgaW5jbHVkZS9saW51eC9uZnNfZnNfc2IuaMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHzCoMKgIDggKwo+IMKgaW5jbHVkZS9saW51eC9uZnNfeGRyLmjCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDMxICstCj4gwqBpbmNsdWRlL2xpbnV4 L25mc2xvY2FsaW8uaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMzcgKwo+IMKg aW5jbHVkZS9saW51eC9zdW5ycGMvYXV0aC5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 wqDCoCA0ICsKPiDCoGluY2x1ZGUvbGludXgvc3VucnBjL3N2Y194cHJ0LmjCoMKgwqDCoMKgwqDC oMKgwqDCoCB8wqDCoCAxICsKPiDCoGluY2x1ZGUvdWFwaS9saW51eC9uZnMuaMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNCArCj4gwqBuZXQvc3VucnBjL2F1dGguY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMTYgKwo+ IMKgbmV0L3N1bnJwYy9jYWNoZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8wqDCoCAyICsKPiDCoG5ldC9zdW5ycGMvc3ZjX3hwcnQuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNCArLQo+IMKgNTAgZmlsZXMgY2hh bmdlZCwgMjEyMCBpbnNlcnRpb25zKCspLCAxNTkgZGVsZXRpb25zKC0pCj4gwqBjcmVhdGUgbW9k ZSAxMDA2NDQgZnMvbmZzL2xvY2FsaW8uYwo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGZzL25mc19j b21tb24vbmZzbG9jYWxpby5jCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZnMvbmZzZC9sb2NhbGlv LmMKPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L25mc2xvY2FsaW8uaAo+IAoK LS0gCkplZmYgTGF5dG9uIDxqbGF5dG9uQGtlcm5lbC5vcmc+Cg==