2012-11-14 15:03:43

by Myklebust, Trond

[permalink] [raw]
Subject: Re: xattr support in NFS?

T24gV2VkLCAyMDEyLTExLTE0IGF0IDExOjQ3ICswMTAwLCBUaWdyYW4gTWtydGNoeWFuIHdyb3Rl
Og0KPiBUaGF0J3MgYmFkIG5ld3MuLi4uIEN1cnJlbnRseSB3ZSB1c2UgJ21hZ2ljIGZpbGVzJyB0
byBzZXQvZ2V0IHVzZXINCj4gc3BlY2lmaWMgbWV0YWRhdGEgbGlrZSBudW1iZXIgb2YgZXZlbnRz
LCBzcGFjZSByZXNlcnZhdGlvbiAgICBhbmQNCj4gZGlmZmVyZW50IGZpbGUgcmV0ZW50aW9uIHBv
bGljaWVzLiBUaGUgaG9wZSB3YXMgdGhhdCBhbGwgY291bGQgYmUgZG9uZQ0KPiB3aXRoIG5hbWVk
IGF0dHJpYnV0ZXMuDQo+DQo+ICBUaWdyYW4uDQo+ICANCg0KVGhlIHNldHRpbmcgYW5kIHF1ZXJ5
aW5nIG9mIHJldGVudGlvbiBwb2xpY2llcyBpcyBhbHJlYWR5IGNvdmVyZWQgaW4gdGhlDQpORlN2
NC4xIHByb3RvY29sIHdpdGhvdXQgYW55IG5lZWQgZm9yIGFueSBhZGRpdGlvbnMuIFNwYWNlIHJl
c2VydmF0aW9uDQppcyBhbHJlYWR5IGNvdmVyZWQgaW4gTkZTdjQuMiAoYXMgYXJlIHNlY3VyaXR5
IGxhYmVscyAtIGFub3RoZXIgY29tbW9uDQpob2JieS1ob3JzZSBmb3IgeGF0dHIgYWR2b2NhdGVz
KS4gV2h5IGRvbid0IHlvdSBpbXBsZW1lbnQgdGhvc2UgaW5zdGVhZA0Kb2Ygd2lzaGluZyBmb3Ig
YSBjb21wbGV0ZWx5IGRpZmZlcmVudCB3YXkgb2YgZG9pbmcgdGhlIHNhbWUgdGhpbmc/DQoNCllv
dXIgYXJndW1lbnQgZGVtb25zdHJhdGVzIHByZWNpc2VseSB3aHkgd2Ugc2hvdWxkIG5ldmVyIGRv
IHhhdHRycyBvdmVyDQpORlMuIEl0IG1ha2VzIGl0IHdheSB0b28gZWFzeSB0byBnbyBvZmYgYW5k
IGludmVudCB5b3VyIG93biBwcml2YXRlIGFuZA0Kbm9uLXN0YW5kYXJkIHByb3RvY29sIGZvciBk
b2luZyBpb2N0bCgpLWxpa2UgUlBDIGNhbGxzLg0KDQo+IE9uIFR1ZSwgTm92IDEzLCAyMDEyIGF0
IDg6NTQgQU0sIERFTklFTCBQaGlsaXBwZQ0KPiA8cGhpbGlwcGUuZGVuaWVsQGNlYS5mcj4gd3Jv
dGU6DQo+ICAgICAgICAgQSBmZXcgeWVhcnMgYWdvLCBTR0kgdHJpZWQgdG8gcHJvbW90ZSAiTkZT
MyBYQVRUUiIsIGFuDQo+ICAgICAgICAgZXh0ZW5zaW9uIHRvIE5GU3YzIHRvIGFkZCB4YXR0ciBz
dXBwb3J0LiBJdCByb3VnaGx5IGFkZGVkIDMNCj4gICAgICAgICBmdW5jdGlvbnMgdG8gdGhlIHBy
b3RvY29sIChHRVRYQVRUUiwgU0VUWEFUVFIsIExJU1RYQVRUUiksIGluDQo+ICAgICAgICAgYSBz
aW1pbGFyIHdheSBhcyB3aGF0IDlwLjIwMDBMIGRvZXMuIE5vdGhpbmcgYnV0IElSSVggaGFkIHRo
aXMNCj4gICAgICAgICBORlN2MyBmZWF0dXJlLiBBcyBmYXIgYXMgSSBrbm93LCBpdCByZW1haW5l
ZCBxdWl0ZSBleG90aWMgYW5kDQo+ICAgICAgICAgc3RheWVkIGEgU0dJJ3MgdGhpbmcuDQo+ICAg
ICAgICAgDQo+ICAgICAgICAgICAgUGhpbGlwcGUNCj4gICAgICAgICANCj4gICAgICAgICBNYXR0
IFcuIEJlbmphbWluIGEgw6ljcml0IDoNCj4gICAgICAgICANCj4gICAgICAgICAgICAgICAgIENh
biB5b3UgcmVzdGF0ZSByZWFzb25pbmcgd2h5IGl0IHdpbGwgbmV2ZXIgZG8gc28sIGFuZA0KPiAg
ICAgICAgICAgICAgICAgd2hldGhlciB0aGlzIGlzIHRoZSBzYW1lIGFzIHNheWluZyBpdCB3aWxs
IG5ldmVyDQo+ICAgICAgICAgICAgICAgICBpbXBsZW1lbnQgbmFtZWQgYXR0cmlidXRlcz8NCj4g
ICAgICAgICAgICAgICAgIA0KPiAgICAgICAgICAgICAgICAgVGhhbmtzLA0KPiAgICAgICAgICAg
ICAgICAgDQo+ICAgICAgICAgICAgICAgICBNYXR0DQo+ICAgICAgICAgICAgICAgICANCj4gICAg
ICAgICAgICAgICAgIC0tLS0tICJUcm9uZCBNeWtsZWJ1c3QiIDxUcm9uZC5NeWtsZWJ1c3RAbmV0
YXBwLmNvbT4NCj4gICAgICAgICAgICAgICAgIHdyb3RlOg0KPiAgICAgICAgICAgICAgICAgDQo+
ICAgICAgICAgICAgICAgICAgIA0KPiAgICAgICAgICAgICAgICAgICAgICAgICBOby4gV2Ugd2ls
bCBuZXZlciBzdXBwb3J0IHhhdHRycyBvdmVyIE5GUy4NCj4gICAgICAgICAgICAgICAgICAgICAg
ICAgDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCj4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZyb206IGxpbnV4LW5mcy1vd25lckB2Z2VyLmtlcm5lbC5vcmcN
Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFpbHRvOmxpbnV4LW5mcy0NCj4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lckB2Z2VyLmtlcm5lbC5vcmddIE9u
IEJlaGFsZiBPZg0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvbWFzeiBDaG1p
ZWxld3NraQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbnQ6IE1vbmRheSwg
Tm92ZW1iZXIgMTIsIDIwMTIgMTA6MTQNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBTQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvOiBsaW51eC1uZnNAdmdl
ci5rZXJuZWwub3JnDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ViamVjdDog
eGF0dHIgc3VwcG9ydCBpbiBORlM/DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9lcyBMaW51eCBzdXBwb3J0IHhh
dHRyIGluIE5GUz8NCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCj4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJRiB0cmllcyB1c2luZyBpdCBpbiBib3RoIE5GUzMg
YW5kDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkZTNCB1bmRlciBEZWJpYW4g
TGVubnkgKDIuNi4zMiwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAN
Cj4gICAgICAgICAgICAgICAgICAgICAgICAgYm90aA0KPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyIGFuZCBjbGll
bnQpLCB3aXRob3V0IHN1Y2Nlc3MuDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzZXRmYXR0ciAtbiB1c2VyLmNv
bW1lbnQgLXYgInRoaXMgaXMNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIGNv
bW1lbnQiIC9tbnQvbmZzDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0ZmF0
dHI6IC9tbnQvbmZzOiBPcGVyYXRpb24gbm90DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3VwcG9ydGVkDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo+ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLS0NCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb21hc3ogQ2ht
aWVsZXdza2kNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vYmxvZy53
cGtnLm9yZw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tDQo+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNl
bmQNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGluZSAidW5zdWJzY3Jp
YmUgbGludXgtbmZzIg0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K
PiAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUNCj4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgb2YgYSBtZXNz
YWdlIHRvDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFqb3Jkb21vQHZnZXIu
a2VybmVsLm9yZyBNb3JlDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFqb3Jk
b21vIGluZm8NCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCj4gICAg
ICAgICAgICAgICAgICAgICAgICAgYXQNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K
PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcv
bWFqb3Jkb21vLWluZm8uaHRtbA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIA0KPiAgICAgICAgICAgICAgICAgICAgICAgICBO77+977+977+977+977+9cu+/ve+/vXnv
v73vv73vv71i77+9WO+/ve+/vcendu+/vV7vv70p3rp7Lm7vv70NCj4gICAgICAgICAgICAgICAg
ICAgICAgICAgK++/ve+/ve+/ve+/vXvvv73vv73vv70i77+977+9Xm7vv71y77+977+977+9eu+/
ve+/ve+/vWjvv73vv73vv73vv70m77+977+977+9R++/ve+/ve+/vWjvv70o77+96ZqODQo+ICAg
ICAgICAgICAgICAgICAgICAgICAgIO+/vd2iaiLvv73vv73vv71t77+977+977+977+977+9eu+/
vd6W77+977+977+9Zu+/ve+/ve+/vWjvv73vv73vv71+77+9be+/vQ0KPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgDQo+ICAgICAgICAgICAgICAgICANCj4gICAgICAgICAgICAgICAgICAg
DQo+ICAgICAgICAgDQo+ICAgICAgICAgLS0NCj4gICAgICAgICBUbyB1bnN1YnNjcmliZSBmcm9t
IHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUNCj4gICAgICAgICBsaW51eC1u
ZnMiIGluDQo+ICAgICAgICAgdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2Vy
Lmtlcm5lbC5vcmcNCj4gICAgICAgICBNb3JlIG1ham9yZG9tbyBpbmZvIGF0DQo+ICAgICAgICAg
IGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbA0KPiAgICAgICAgIA0K
PiANCj4gDQoNCi0tIA0KVHJvbmQgTXlrbGVidXN0DQpMaW51eCBORlMgY2xpZW50IG1haW50YWlu
ZXINCg0KTmV0QXBwDQpUcm9uZC5NeWtsZWJ1c3RAbmV0YXBwLmNvbQ0Kd3d3Lm5ldGFwcC5jb20N
Cg==


2012-11-14 15:21:02

by Matt W. Benjamin

[permalink] [raw]
Subject: Re: xattr support in NFS?

Actually, that reasoning sounds a little like a concession that the feature should be blocked precisely because it may be tremendously popular (useful). I don't think the argument that proplists can be the building blocks for new system--but also application--functionality is a good argument against them.

----- "Trond Myklebust" <[email protected]> wrote:

> On Wed, 2012-11-14 at 11:47 +0100, Tigran Mkrtchyan wrote:
> > That's bad news.... Currently we use 'magic files' to set/get user
> > specific metadata like number of events, space reservation and
> > different file retention policies. The hope was that all could be
> done
> > with named attributes.
> >
> > Tigran.
> >
>
> The setting and querying of retention policies is already covered in
> the
> NFSv4.1 protocol without any need for any additions. Space
> reservation
> is already covered in NFSv4.2 (as are security labels - another
> common
> hobby-horse for xattr advocates). Why don't you implement those
> instead
> of wishing for a completely different way of doing the same thing?
>
> Your argument demonstrates precisely why we should never do xattrs
> over
> NFS. It makes it way too easy to go off and invent your own private
> and
> non-standard protocol for doing ioctl()-like RPC calls.
>
> > On Tue, Nov 13, 2012 at 8:54 AM, DENIEL Philippe
> > <[email protected]> wrote:
> > A few years ago, SGI tried to promote "NFS3 XATTR", an
> > extension to NFSv3 to add xattr support. It roughly added 3
> > functions to the protocol (GETXATTR, SETXATTR, LISTXATTR),
> in
> > a similar way as what 9p.2000L does. Nothing but IRIX had
> this
> > NFSv3 feature. As far as I know, it remained quite exotic
> and
> > stayed a SGI's thing.
> >
> > Philippe
> >
> > Matt W. Benjamin a écrit :
> >
> > Can you restate reasoning why it will never do so,
> and
> > whether this is the same as saying it will never
> > implement named attributes?
> >
> > Thanks,
> >
> > Matt
> >
> > ----- "Trond Myklebust"
> <[email protected]>
> > wrote:
> >
> >
> > No. We will never support xattrs over NFS.
> >
> >
> > -----Original Message-----
> > From:
> [email protected]
> > [mailto:linux-nfs-
> > [email protected]] On Behalf Of
> > Tomasz Chmielewski
> > Sent: Monday, November 12, 2012
> 10:14
> > AM
> > To: [email protected]
> > Subject: xattr support in NFS?
> >
> > Does Linux support xattr in NFS?
> >
> > IF tries using it in both NFS3 and
> > NFS4 under Debian Lenny (2.6.32,
> >
> > both
> >
> > server and client), without
> success.
> >
> > # setfattr -n user.comment -v "this
> is
> > a comment" /mnt/nfs
> > setfattr: /mnt/nfs: Operation not
> > supported
> >
> >
> > --
> > Tomasz Chmielewski
> > http://blog.wpkg.org
> > --
> > To unsubscribe from this list: send
> > the line "unsubscribe linux-nfs"
> >
> > in the
> >
> > body of a message to
> > [email protected] More
> > majordomo info
> >
> > at
> >
> >
> http://vger.kernel.org/majordomo-info.html
> >
> > N�����r��y���b�X��ǧv�^�)޺{.n�
> > +����{���"��^n�r���z���h����&���G���h�(�階
> > �ݢj"���m�����z�ޖ���f���h���~�m�
> >
> >
> >
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe
> > linux-nfs" in
> > the body of a message to [email protected]
> > More majordomo info at
> > http://vger.kernel.org/majordomo-info.html
> >
> >
> >
>
> --
> Trond Myklebust
> Linux NFS client maintainer
>
> NetApp
> [email protected]
> http://www.netapp.com
> N�����r��y���b�X��ǧv�^�)޺{.n�+����{���"��^n�r���z���h����&���G���h�(�階�ݢj"���m�����z�ޖ���f���h���~�m�

--
Matt Benjamin
The Linux Box
206 South Fifth Ave. Suite 150
Ann Arbor, MI 48104

http://linuxbox.com

tel. 734-761-4689
fax. 734-769-8938
cel. 734-216-5309

2012-11-14 17:03:39

by Myklebust, Trond

[permalink] [raw]
Subject: Re: xattr support in NFS?

T24gV2VkLCAyMDEyLTExLTE0IGF0IDEwOjIwIC0wNTAwLCBNYXR0IFcuIEJlbmphbWluIHdyb3Rl
Og0KPiBBY3R1YWxseSwgdGhhdCByZWFzb25pbmcgc291bmRzIGEgbGl0dGxlIGxpa2UgYSBjb25j
ZXNzaW9uIHRoYXQgdGhlIGZlYXR1cmUgc2hvdWxkIGJlIGJsb2NrZWQgcHJlY2lzZWx5IGJlY2F1
c2UgaXQgbWF5IGJlIHRyZW1lbmRvdXNseSBwb3B1bGFyICh1c2VmdWwpLiAgSSBkb24ndCB0aGlu
ayB0aGUgYXJndW1lbnQgdGhhdCBwcm9wbGlzdHMgY2FuIGJlIHRoZSBidWlsZGluZyBibG9ja3Mg
Zm9yIG5ldyBzeXN0ZW0tLWJ1dCBhbHNvIGFwcGxpY2F0aW9uLS1mdW5jdGlvbmFsaXR5IGlzIGEg
Z29vZCBhcmd1bWVudCBhZ2FpbnN0IHRoZW0uDQoNCldoYXQgZmVhdHVyZT8gVGhlIHhhdHRyIGlu
dGVyZmFjZT8gQmVmb3JlIGRlY2xhcmluZyBpdCBhIG1ham9yIHN1Y2Nlc3MNCnN0b3J5LCB5b3Ug
bWlnaHQgd2FudCB0byBjb25zaWRlciB0aGF0IGl0IGhhcyBiZWVuIGltcGxlbWVudGVkIG9uDQpz
ZXZlcmFsIG1ham9yIExpbnV4IGZpbGVzeXN0ZW1zIGZvciBtb3JlIHRoYXQgMTAgeWVhcnMsIHll
dCBpcyB1c2VkIGJ5DQpvbmx5IGEgaGFuZGZ1bCBvZiAobm9uLXBvcnRhYmxlKSBhcHBsaWNhdGlv
bnMuDQoNClRoZSBtYWluIHVzZS1jYXNlcyB0aGF0IEknbSBhd2FyZSBvZiBhcmU6DQogICAgICAq
IFN0b3JhZ2UgZm9yIEFDTHMuDQogICAgICAqIFN0b3JhZ2UgZm9yIHNlY3VyaXR5IGxhYmVscy4N
CiAgICAgICogU2FtYmEgdXNlcyB4YXR0cnMgZm9yIHN0b3JpbmcgdmFyaW91cyBwZXItZmlsZSBj
b250cm9sDQogICAgICAgIHN0cnVjdHVyZXMsIHdoZW4geGF0dHJzIGFyZSBzdXBwb3J0ZWQgYnkg
dGhlIHVuZGVybHlpbmcNCiAgICAgICAgZmlsZXN5c3RlbS4NCiAgICAgICogU3RvcmFnZSBmb3Ig
ZmlsZSBzZWFyY2ggdGFncyBmb3IgdXNlIGJ5IHByb2dyYW1zIHN1Y2ggYXMNCiAgICAgICAgImJl
YWdsZSIgYW5kICJ0cmFja2VyIi4NCg0KQm90aCBBQ0xzIGFuZCBzZWN1cml0eSBsYWJlbHMgYXJl
IGFscmVhZHkgY292ZXJlZCBieSB0aGUgTkZTIHByb3RvY29sLg0KV2UgZG9uJ3QgbmVlZCBvciB3
YW50IGFuIHhhdHRyIHByb3RvY29sIHRvIHNvbHZlIHRob3NlIHByb2JsZW1zLg0KDQpBcyBmb3Ig
U2FtYmEsIGl0IHdvcmtzIGZpbmUgb24gZmlsZXN5c3RlbXMgdGhhdCBkb24ndCBoYXZlIHhhdHRy
cyBhcyBmYXINCmFzIEkga25vdy4gVXNpbmcgaXQgdG8gcmUtZXhwb3J0IGFuIE5GUyBwYXJ0aXRp
b24gdG8gQ0lGUyBpcyBhIGR1YmlvdXMNCnByYWN0aWNlLCBidXQgaXMgbm90IGFuIHhhdHRyLXJl
bGF0ZWQgcHJvYmxlbS4NCg0KU28gdGhhdCBsZWF2ZXMgdGhlICJiZWFnbGUiIGFuZCAidHJhY2tl
ciIgdXNlIGNhc2UsIHdoZXJlIHRoZSB4YXR0cg0KdXNhZ2UgZm9yIHN0b3JpbmcgdGFncyBjb3Vs
ZCBlYXNpbHkgYmUgcmVwbGFjZWQgYnkgYSBkYXRhYmFzZSAoYW5kDQp1c3VhbGx5IGlzIGluIGVx
dWl2YWxlbnQgcG9ydGFibGUgc29mdHdhcmUpLiBNb3N0IHBlb3BsZSB3aG8gd2FudCB0byBkbw0K
c2VyaW91cyB3b3JrIG9uIHRoZWlyIHN5c3RlbXMgdGVuZCB0byB0dXJuIG9mZiBiZWFnbGUgYW5k
IHRyYWNrZXIgYW55d2F5DQpzaW5jZSB0aGV5IGFyZSBub3RvcmlvdXMgY3B1IGhvZ3MuDQoNCj4g
LS0tLS0gIlRyb25kIE15a2xlYnVzdCIgPFRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29tPiB3cm90
ZToNCj4gDQo+ID4gT24gV2VkLCAyMDEyLTExLTE0IGF0IDExOjQ3ICswMTAwLCBUaWdyYW4gTWty
dGNoeWFuIHdyb3RlOg0KPiA+ID4gVGhhdCdzIGJhZCBuZXdzLi4uLiBDdXJyZW50bHkgd2UgdXNl
ICdtYWdpYyBmaWxlcycgdG8gc2V0L2dldCB1c2VyDQo+ID4gPiBzcGVjaWZpYyBtZXRhZGF0YSBs
aWtlIG51bWJlciBvZiBldmVudHMsIHNwYWNlIHJlc2VydmF0aW9uICAgIGFuZA0KPiA+ID4gZGlm
ZmVyZW50IGZpbGUgcmV0ZW50aW9uIHBvbGljaWVzLiBUaGUgaG9wZSB3YXMgdGhhdCBhbGwgY291
bGQgYmUNCj4gPiBkb25lDQo+ID4gPiB3aXRoIG5hbWVkIGF0dHJpYnV0ZXMuDQo+ID4gPg0KPiA+
ID4gIFRpZ3Jhbi4NCj4gPiA+ICANCj4gPiANCj4gPiBUaGUgc2V0dGluZyBhbmQgcXVlcnlpbmcg
b2YgcmV0ZW50aW9uIHBvbGljaWVzIGlzIGFscmVhZHkgY292ZXJlZCBpbg0KPiA+IHRoZQ0KPiA+
IE5GU3Y0LjEgcHJvdG9jb2wgd2l0aG91dCBhbnkgbmVlZCBmb3IgYW55IGFkZGl0aW9ucy4gU3Bh
Y2UNCj4gPiByZXNlcnZhdGlvbg0KPiA+IGlzIGFscmVhZHkgY292ZXJlZCBpbiBORlN2NC4yIChh
cyBhcmUgc2VjdXJpdHkgbGFiZWxzIC0gYW5vdGhlcg0KPiA+IGNvbW1vbg0KPiA+IGhvYmJ5LWhv
cnNlIGZvciB4YXR0ciBhZHZvY2F0ZXMpLiBXaHkgZG9uJ3QgeW91IGltcGxlbWVudCB0aG9zZQ0K
PiA+IGluc3RlYWQNCj4gPiBvZiB3aXNoaW5nIGZvciBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IHdh
eSBvZiBkb2luZyB0aGUgc2FtZSB0aGluZz8NCj4gPiANCj4gPiBZb3VyIGFyZ3VtZW50IGRlbW9u
c3RyYXRlcyBwcmVjaXNlbHkgd2h5IHdlIHNob3VsZCBuZXZlciBkbyB4YXR0cnMNCj4gPiBvdmVy
DQo+ID4gTkZTLiBJdCBtYWtlcyBpdCB3YXkgdG9vIGVhc3kgdG8gZ28gb2ZmIGFuZCBpbnZlbnQg
eW91ciBvd24gcHJpdmF0ZQ0KPiA+IGFuZA0KPiA+IG5vbi1zdGFuZGFyZCBwcm90b2NvbCBmb3Ig
ZG9pbmcgaW9jdGwoKS1saWtlIFJQQyBjYWxscy4NCj4gPiANCj4gPiA+IE9uIFR1ZSwgTm92IDEz
LCAyMDEyIGF0IDg6NTQgQU0sIERFTklFTCBQaGlsaXBwZQ0KPiA+ID4gPHBoaWxpcHBlLmRlbmll
bEBjZWEuZnI+IHdyb3RlOg0KPiA+ID4gICAgICAgICBBIGZldyB5ZWFycyBhZ28sIFNHSSB0cmll
ZCB0byBwcm9tb3RlICJORlMzIFhBVFRSIiwgYW4NCj4gPiA+ICAgICAgICAgZXh0ZW5zaW9uIHRv
IE5GU3YzIHRvIGFkZCB4YXR0ciBzdXBwb3J0LiBJdCByb3VnaGx5IGFkZGVkIDMNCj4gPiA+ICAg
ICAgICAgZnVuY3Rpb25zIHRvIHRoZSBwcm90b2NvbCAoR0VUWEFUVFIsIFNFVFhBVFRSLCBMSVNU
WEFUVFIpLA0KPiA+IGluDQo+ID4gPiAgICAgICAgIGEgc2ltaWxhciB3YXkgYXMgd2hhdCA5cC4y
MDAwTCBkb2VzLiBOb3RoaW5nIGJ1dCBJUklYIGhhZA0KPiA+IHRoaXMNCj4gPiA+ICAgICAgICAg
TkZTdjMgZmVhdHVyZS4gQXMgZmFyIGFzIEkga25vdywgaXQgcmVtYWluZWQgcXVpdGUgZXhvdGlj
DQo+ID4gYW5kDQo+ID4gPiAgICAgICAgIHN0YXllZCBhIFNHSSdzIHRoaW5nLg0KPiA+ID4gICAg
ICAgICANCj4gPiA+ICAgICAgICAgICAgUGhpbGlwcGUNCj4gPiA+ICAgICAgICAgDQo+ID4gPiAg
ICAgICAgIE1hdHQgVy4gQmVuamFtaW4gYSDDqWNyaXQgOg0KPiA+ID4gICAgICAgICANCj4gPiA+
ICAgICAgICAgICAgICAgICBDYW4geW91IHJlc3RhdGUgcmVhc29uaW5nIHdoeSBpdCB3aWxsIG5l
dmVyIGRvIHNvLA0KPiA+IGFuZA0KPiA+ID4gICAgICAgICAgICAgICAgIHdoZXRoZXIgdGhpcyBp
cyB0aGUgc2FtZSBhcyBzYXlpbmcgaXQgd2lsbCBuZXZlcg0KPiA+ID4gICAgICAgICAgICAgICAg
IGltcGxlbWVudCBuYW1lZCBhdHRyaWJ1dGVzPw0KPiA+ID4gICAgICAgICAgICAgICAgIA0KPiA+
ID4gICAgICAgICAgICAgICAgIFRoYW5rcywNCj4gPiA+ICAgICAgICAgICAgICAgICANCj4gPiA+
ICAgICAgICAgICAgICAgICBNYXR0DQo+ID4gPiAgICAgICAgICAgICAgICAgDQo+ID4gPiAgICAg
ICAgICAgICAgICAgLS0tLS0gIlRyb25kIE15a2xlYnVzdCINCj4gPiA8VHJvbmQuTXlrbGVidXN0
QG5ldGFwcC5jb20+DQo+ID4gPiAgICAgICAgICAgICAgICAgd3JvdGU6DQo+ID4gPiAgICAgICAg
ICAgICAgICAgDQo+ID4gPiAgICAgICAgICAgICAgICAgICANCj4gPiA+ICAgICAgICAgICAgICAg
ICAgICAgICAgIE5vLiBXZSB3aWxsIG5ldmVyIHN1cHBvcnQgeGF0dHJzIG92ZXIgTkZTLg0KPiA+
ID4gICAgICAgICAgICAgICAgICAgICAgICAgDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tT3JpZ2lu
YWwgTWVzc2FnZS0tLS0tDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZy
b206DQo+ID4gbGludXgtbmZzLW93bmVyQHZnZXIua2VybmVsLm9yZw0KPiA+ID4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbbWFpbHRvOmxpbnV4LW5mcy0NCj4gPiA+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3duZXJAdmdlci5rZXJuZWwub3JnXSBPbiBCZWhhbGYg
T2YNCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9tYXN6IENobWllbGV3
c2tpDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbnQ6IE1vbmRheSwg
Tm92ZW1iZXIgMTIsIDIwMTINCj4gPiAxMDoxNA0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBTQ0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbzog
bGludXgtbmZzQHZnZXIua2VybmVsLm9yZw0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTdWJqZWN0OiB4YXR0ciBzdXBwb3J0IGluIE5GUz8NCj4gPiA+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERvZXMgTGludXggc3VwcG9ydCB4YXR0ciBpbiBORlM/DQo+ID4gPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIA0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJRiB0cmllcyB1c2luZyBpdCBpbiBib3RoIE5GUzMgYW5kDQo+ID4gPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5GUzQgdW5kZXIgRGViaWFuIExlbm55ICgyLjYuMzIsDQo+ID4g
PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KPiA+ID4gICAgICAgICAg
ICAgICAgICAgICAgICAgYm90aA0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K
PiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgYW5kIGNsaWVudCks
IHdpdGhvdXQNCj4gPiBzdWNjZXNzLg0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICANCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzZXRmYXR0ciAt
biB1c2VyLmNvbW1lbnQgLXYgInRoaXMNCj4gPiBpcw0KPiA+ID4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhIGNvbW1lbnQiIC9tbnQvbmZzDQo+ID4gPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldGZhdHRyOiAvbW50L25mczogT3BlcmF0aW9uIG5vdA0KPiA+ID4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQNCj4gPiA+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIA0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQ0KPiA+ID4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb21hc3ogQ2htaWVsZXdza2kNCj4gPiA+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL2Jsb2cud3BrZy5vcmcNCj4g
PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0NCj4gPiA+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQN
Cj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxpbmUgInVuc3Vic2Ny
aWJlIGxpbnV4LW5mcyINCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUNCj4gPiA+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICANCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9keSBvZiBhIG1lc3NhZ2UgdG8NCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZyBNb3JlDQo+ID4gPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1ham9yZG9tbyBpbmZvDQo+ID4gPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIA0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgYXQN
Cj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCj4gPiA+ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICANCj4gPiBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1p
bmZvLmh0bWwNCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo+
ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICBO77+977+977+977+977+9cu+/ve+/vXnvv73v
v73vv71i77+9WO+/ve+/vcendu+/vV7vv70p3rp7Lm7vv70NCj4gPiA+ICAgICAgICAgICAgICAg
ICAgICAgICAgICvvv73vv73vv73vv71777+977+977+9Iu+/ve+/vV5u77+9cu+/ve+/ve+/vXrv
v73vv73vv71o77+977+977+977+9Ju+/ve+/ve+/vUfvv73vv73vv71o77+9KO+/vemajg0KIDw+
ID4gICAgICAgICAgICAgICAgICAgICAgICAg77+93aJqIu+/ve+/ve+/vW3vv73vv73vv73vv73v
v71677+93pbvv73vv73vv71m77+977+977+9aO+/ve+/ve+/vX7vv71t77+9DQo+ID4gPiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgDQo+ID4gPiAgICAgICAgICAgICAgICAgDQo+ID4gPiAg
ICAgICAgICAgICAgICAgICANCj4gPiA+ICAgICAgICAgDQo+ID4gPiAgICAgICAgIC0tDQo+ID4g
PiAgICAgICAgIFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1
bnN1YnNjcmliZQ0KPiA+ID4gICAgICAgICBsaW51eC1uZnMiIGluDQo+ID4gPiAgICAgICAgIHRo
ZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnDQo+ID4gPiAg
ICAgICAgIE1vcmUgbWFqb3Jkb21vIGluZm8gYXQNCj4gPiA+ICAgICAgICAgIGh0dHA6Ly92Z2Vy
Lmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbA0KPiA+ID4gICAgICAgICANCj4gPiA+IA0K
PiA+ID4gDQo+ID4gDQo+ID4gLS0gDQo+ID4gVHJvbmQgTXlrbGVidXN0DQo+ID4gTGludXggTkZT
IGNsaWVudCBtYWludGFpbmVyDQo+ID4gDQo+ID4gTmV0QXBwDQo+ID4gVHJvbmQuTXlrbGVidXN0
QG5ldGFwcC5jb20NCj4gPiB3d3cubmV0YXBwLmNvbQ0KPiA+IE7vv73vv73vv73vv73vv71y77+9
77+9ee+/ve+/ve+/vWLvv71Y77+977+9x6d277+9Xu+/vSneunsubu+/vSvvv73vv73vv73vv717
77+977+977+9Iu+/ve+/vV5u77+9cu+/ve+/ve+/vXrvv73vv73vv71o77+977+977+977+9Ju+/
ve+/ve+/vUfvv73vv73vv71o77+9KO+/vemaju+/vd2iaiLvv73vv73vv71t77+977+977+977+9
77+9eu+/vd6W77+977+977+9Zu+/ve+/ve+/vWjvv73vv73vv71+77+9be+/vQ0KPiANCg0KLS0g
DQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5GUyBjbGllbnQgbWFpbnRhaW5lcg0KDQpOZXRBcHAN
ClRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29tDQp3d3cubmV0YXBwLmNvbQ0K