Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Dec 1999 14:44:21 -0500 (EST)
From:      Robert Watson <robert@cyrus.watson.org>
To:        freebsd-fs@freebsd.org
Subject:   Request for objections: extended attribute and ACL interfaces
Message-ID:  <Pine.BSF.3.96.991215143741.22637F-500000@fledge.watson.org>

next in thread | raw e-mail | index | archive | help
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--0-2036405370-945287061=:22637
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.BSF.3.96.991215143741.22637H@fledge.watson.org>


As previously discussed in some detail on freebsd-arch, freebsd-security,
and posix1e, I have been working on adding support for file system access
control lists (among other things), and the supporting extended attribute
interface required to store additional meta-data in UFS and other file
systems.  After a fair amount of hashing out, the interfaces seem to
please most interested parties (i.e., we've verified that the attribute
interface is sufficiently flexible for the needs of the HPFS folk, the
attribute interface provides the functionality for capabilities, acls,
mandatory access control labels, privileged code signatures, etc, and the
acl interface can handle posix.1e acls, as well as providing a mechanism
for managing other acl schemes, such as those in AFS and Coda), and we're
planning to commit these interfaces on Friday, unless objections are
raised.  Please note that these are only the interfaces, not the actually
code itself, but standardizing the interfaces (especially vfs calls) makes
it easy to add the code later via kernel modules, and used in other file
systems currently provided by third parties (ARLA and Coda in particular). 

Attached please find four files, text introductions to both extended
attributes and acls, and the sys/ header files providing more detailed
information on the specifics of the interfaces.  The extended descriptions
include rationale, information on implementations in other operating
systems, and the interface that descriptions and semantics.

Commited would be:
	Changes to vnode_if.src to describe the new calls
	Changes to mount.h and vfs_default.c to add the vfsop calls
	Changes to vfsops arrays for various file systems so that
		they return EOPNOTSUPP for the vfs calls
	Syscalls in vfs_syscalls.c to perform name lookup and invoke
		the vfsops/vnops
	Addition of kern/kern_acl.c to provide common routines for
		third party file systems.

No changes would be made to underlying file systems other than to allow
them to return EOPNOTSUPP for the vfs call; with vnops this is not
necessary as the vnode interface will return EOPNOTSUPP for any fs not
supporting a call.

The UFS EA supporting code would not be committed, as it is experimental
and not well tested.  Neither will the UFS ACLs over EAs support.  Both of
these will be made available soon, however, and will rely on having
vnops/vfsops/syscalls assigned and available.  :-)

  Robert N M Watson 

robert@fledge.watson.org              http://www.watson.org/~robert/
PGP key fingerprint: AF B5 5F FF A6 4A 79 37  ED 5F 55 E9 58 04 6A B1
TIS Labs at Network Associates, Safeport Network Services

--0-2036405370-945287061=:22637
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="extattr_details.txt"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.3.96.991215143114.22637B@fledge.watson.org>
Content-Description: 

RXh0ZW5kZWQgQXR0cmlidXRlcw0KLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpJ
bnRyb2R1Y3Rpb24NCg0KRXh0ZW5kZWQgQXR0cmlidXRlcyBwcm92aWRlIHRo
ZSBhYmlsaXR5IGZvciB0aGUga2VybmVsIG9yIHVzZXJsYW5kIHByb2Nlc3Nl
cw0KdG8gYXNzb2NpYXRlIGFkZGl0aW9uYWwgbWV0YS1kYXRhIHdpdGggZmls
ZXMgYW5kIGRpcmVjdG9yaWVzLg0KDQoNClJhdGlvbmFsZQ0KDQpUaGVyZSBh
cmUgYSBudW1iZXIgb2YgcG90ZW50aWFsIGFwcGxpY2F0aW9ucyBmb3IgZXh0
ZW5kZWQgYXR0cmlidXRlcywgYnV0DQp0aGUgZHJpdmluZyBmb3JjZSBiZWhp
bmQgdGhlIGN1cnJlbnQgaW1wbGVtZXRhdGlvbiBpcyBleHRlbmRlZCBzZWN1
cml0eQ0Kc2VydmljZXM6IG1hbnkgbW9yZSBjb21wbGV4IHNlY3VyaXR5IG1l
Y2hhbmlzbXMgcmVxdWlyZSBhZGRpdGlvbmFsIHN0YXRlDQphc3NvY2lhdGVk
IHdpdGggZWFjaCBmaWxlIG9yIGRpcmVjdG9yeS4gIEZvciBleGFtcGxlLCBB
Q0xzIHJlcXVpcmUgcGVyLQ0KZmlsZSBzdG9yYWdlLCBhcyBkbyBjYXBhYmls
aXRpZXMsIGFuZCBNQUMgbGFiZWxzLiAgSW1wbGVtZW50YXRpb25zIG9mDQph
bGwgb2YgdGhlc2UgZmVhdHVyZXMgZXhpc3QgZm9yIEZyZWVCU0QsIGJ1dCBh
d2FpdCBzdG9yYWdlIGluIHRoZSBmaWxlDQpzeXN0ZW0uICBFeHRlbmRlZCBh
dHRyaWJ1dGVzIHByb3ZpZGUgYSBnZW5lcmFsaXplZCB3YXkgaW4gd2hpY2gg
dG8gbWFuYWdlDQp0aGlzIGFkZGl0aW9uYWwgbWV0YS1kYXRhLCBmb3IgZmls
ZSBzdG9yZXMgdGhhdCBhcmUgZG8gbm90IGFsbG93IGZvcg0Kc3RvcmluZyB0
aGlzIGRhdGEgZGlyZWN0bHkuDQoNCkFkZGl0aW9uYWxseSwgdGhlcmUgYXJl
IGEgbnVtYmVyIG9mIGV4aXN0aW5nIGZpbGUgc3lzdGVtcyB0aGF0IHN1cHBv
cnQNCmV4dGVuZGVkIGF0dHJpYnV0ZXMsIGFuZCBpdCBpcyBkZXNpcmFibGUg
dG8gZXhwb3NlIHRoaXMgZnVuY3Rpb25hbGl0eSBpbg0KRnJlZUJTRCB3aGVu
IHByb2Nlc3NlcyBhcmUgYWNjZXNzaW5nIGRhdGEgc3RvcmVkIGluIHRoZSBm
aWxlIHN5c3RlbS4NCg0KUHJvdmlkaW5nIGEgc2luZ2xlIGFuZCBjb21wcmVo
ZW5zaXZlIHZub2RlIGFuZCBzeXNjYWxsIGludGVyZmFjZSB3aWxsDQphbGxv
dyB0aGlzIHN0b3JhZ2UgYW5kIGFjY2VzcyB0byBvY2N1ciBpbiBhIGNvbnNp
c3RlbnQgd2F5IGFjcm9zcyBmaWxlDQpzeXN0ZW1zLg0KDQoNClNlcnZpY2Vz
DQoNCkVhY2ggdm5vZGUgbWF5IG5vdyBoYXZlIGEgc2VyaWVzIG9mIG5hbWVk
IGF0dHJpYnV0ZXMgYXNzb2NpYXRlZCB3aXRoIGl0LA0KaW4gYWRkaXRpb24g
dG8gdGhlIGV4aXN0aW5nIGZsYXQgZmlsZSBkYXRhIGFjY2Vzc2libGUgdmlh
IGN1cnJlbnQgY2FsbHMsDQphbmQgZXhpc3RpbmcgYXR0cmlidXRlcy4gIFRo
ZSBzaW1wbGlzdCB3YXkgdG8gZGVzY3JpYmUgdGhlIHNlbWFudGljcyBpcw0K
dG8gY29tcGFyZSBuYW1lZCBhdHRyaWJ1dGVzIHRvIGEgc2V0IG9mIGVudmly
b25tZW50YWwgdmFyaWFibGUgYXNzaWdubWVudHMuDQpBIHZhcmlhYmxlIG1h
eSBiZSBkZWZpbmVkIG9yIHVuZGVmaW5lZCwgYW5kIGlmIGRlZmluZWQsIGl0
IG1heSBoYXZlIDAgb3INCm1vcmUgYnl0ZXMgb2YgZGF0YSBhc3NvY2lhdGVk
IHdpdGggaXQuICBXaGlsZSBpdCBtaWdodCBiZSBwb3NzaWJsZSB0bw0KbW9k
aWZ5IGFuIGF0dHJpYnV0ZSwgbWFueSBpbXBsZW1lbnRhdGlvbnMgbGltaXQg
dGhpcyBiZWhhdmlvciB0byByZXBsYWNpbmcNCmFuIGV4aXN0aW5nIHZhbHVl
IHJhdGhlciB0aGFuIGVkaXRpbmcgaXQgaW4gdGhlIHN0eWxlIG9mIFZPUF9X
UklURQ0KYWN0aW5nIG9uIGEgc2VjdGlvbiBvZiBhIGZsYXQgZmlsZS4gIEF0
dHJpYnV0ZXMgbWF5IGJlIHJldHJpZXZlZCwgc2V0LA0KYW5kIHJlbW92ZWQg
KHRvIHRha2UgYSBuYW1lIGZyb20gZGVmaW5lZCB0byB1bmRlZmluZWQpLiAg
DQoNClRoZSB2bm9kZSBpbnRlcmZhY2UgbGltaXRzIG5hbWVzIHRvIG51bGwt
dGVybWluYXRlZCBzdHJpbmdzLCBidXQgYWxsb3dzDQphdHRyaWJ1dGUgdmFs
dWVzIHRvIGJlIGFueSBiaW5hcnkgYmxvYiBkZXNjcmliYWJsZSB1c2luZyBh
IHN0cnVjdCB1aW8uDQpVbmRlcmx5aW5nIGZpbGUgc3lzdGVtcyBtYXkgcGxh
Y2UgYWRkaXRpb25hbCBsaW1pdHMgb24gdGhlIHNpemUgYW5kDQpzdHJ1Y3R1
cmUgb2YgbmFtZXMsIGFzIHdlbGwgYXMgdGhlIHNpemUgb2YgZGF0YS4gIEZp
bGUgc3lzdGVtcyBtYXkgYWxzbw0KcGxhY2Ugc3BlY2lmaWMgaW50ZXJwcmV0
YXRpb25zIG9uIHNwZWNpZmljIG5hbWVzLCBsaW1pdGluZyB0aGUgc3RydWN0
dXJlDQpvZiB2YWx1ZXMgYXNzaWduZWQgdG8gdGhvc2UgbmFtZXMuICBXaGls
ZSB1bmRlcmx5aW5nIGZpbGUgc3lzdGVtcyBtYXkNCmNob29zZSB0byBtb2Rp
ZnkgYXR0cmlidXRlIHZhbHVlcywgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0
aGV5IHJlcGxhY2UNCmV4aXN0aW5nIHZhbHVlcyB3aXRoIG5ldyB2YWx1ZXMg
d2hlbiB0aGUgYXR0cmlidXRlIGlzIHNldCwgYWxsb3dpbmcgYW4NCmVmZmVj
dGl2ZWx5IGF0b21pYyB2YWx1ZSByZXBsYWNlbWVudCBzZXJ2aWNlLg0KDQoN
CkV4aXRpbmcgSW1wbGVtZW50YXRpb25zDQoNCkEgbnVtYmVyIG9mIGV4aXN0
aW5nIGZpbGUgc3lzdGVtcyBwcm92aWRlIHN1cHBvcnQgZm9yIGV4dGVuZGVk
IGF0dHJpYnV0ZXMsDQppbmNsdWRpbmcgSUJNJ3MgSFBGUywgQXBwbGUncyBI
RlMrLCBhbmQgU0dJJ3MgWEZTLiAgSW4gZ2VuZXJhbCwgdGhpcyBzdXBwb3J0
DQphbGxvd3MgZm9yIHNvbWUgbnVtYmVyIG9mIG5hbWVzLCBhbmQgYWRkaXRp
b25hbGx5IHZhbHVlcywgdG8gYmUgYXNzb2NpYXRlZA0Kd2l0aCBlYWNoIGZp
bGUsIGFuZCBwbGFjZXMgY29uc3RyYWludHMgb24gdGhlIHNpemUgb2YgdGhl
c2UgYXR0cmlidXRlcy4gIEZvcg0KZXhhbXBsZSwgaW4gSFBGUywgdGhlcmUg
aXMgYSBtYXhpbXVtIG9mIDY0ayBvZiBhZGRpdGlvbmFsIG1ldGEtZGF0YSBm
b3IgZWFjaA0KZmlsZSBvciBkaXJlY3RvcnkuDQoNCkEgc2ltaWxhciBidXQg
ZGlzdGluY3Qgc2VydmljZSBpcyB0aGF0IG9mIG5hbWVkIGZpbGUgZm9ya3Mt
LWVhY2ggZmlsZSBpcw0KaW4gZmFjdCBhIHNldCBvZiBuYW1lZCBmbGF0IGZp
bGUgc3BhY2VzLCBlYWNoIGRpc3RpbmN0IGFuZCBpbmRpdmlkdWFsbHkNCmFk
ZHJlc3NhYmxlIHVzaW5nIHRoZSBnZW5lcmFsLXB1cnBvc2UgZmlsZSBhY2Nl
c3Mgc2VtYW50aWNzLiAgRm9yIGV4YW1wbGUsIA0KaW4gV2luZG93cyBOVCwg
aXQgaXMgcG9zc2libGUgdG8gb3BlbiBzZXBlcmF0ZSBmaWxlIGRlc2NyaXB0
b3JzIGZvciBlYWNoDQpmaWxlIGZvcmssIGFuZCBzdG9yZSBsYXJnZSB2b2x1
bWVzIG9mIGluZm9ybWF0aW9uIGluIGVhY2ggZm9yay4gIEFuIGF0dHJpYnV0
ZQ0Kc2VydmljZSBpcyBub3QgaW50ZW5kZWQgdG8gcHJvdmlkZSBzdWNoIGJy
b2FkIHNlcnZpY2VzLCBhbHRob3VnaCBhdHRyaWJ1dGVzDQpjb3VsZCBiZSBz
dXBwb3J0IGJ5IHN1Y2ggYSBzZXJ2aWNlOiBzaW1pbGFybHksIGl0IHdvdWxk
IGJlIHBvc3NpYmxlIHRvDQpleHBvc2UgZmlsZSBmb3JrcyB0aHJvdWdoIHRo
ZSBhdHRyaWJ1dGUgaW50ZXJmYWNlLCBidXQgcHJvYmFibHkgbm90IGRlc2ly
YWJsZQ0KZ2l2ZW4gdGhhdCB0aGUgYXR0cmlidXRlIGludGVyZmFjZSBpcyBp
bnRlbmRlZCBmb3IgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHkuDQoNCg0KVm5v
ZGUgSW50ZXJmYWNlIEV4dGVuc2lvbnMNCg0KVGhyZWUgbmV3IHZub2RlIGNh
bGxzIHByb3ZpZGUgdGhlIG1ham9yaXR5IG9mIHJlcXVpcmVkIGFuZCBjb21t
b24gYWNjZXNzDQptZXRob2RzIHRvIGV4dGVuZGVkIGF0dHJpYnV0ZXMuICBU
aGVzZSBjYWxscyBhcmUgc2ltaWxhciB0byB0aGUgZXhpc3RpbmcNCmNhbGxz
IGZvciBtb2RpZnlpbmcgdm5vZGUgYXR0cmlidXRlcyAoVk9QX0dFVEFUVFIg
YW5kIFZPUF9TRVRBVFRSKSwgZXhjZXB0DQp0aGF0IHRoZXkgYWRkaXRpb25h
bGx5IGFsbG93IHRoZSBzcGVjaWZpY2F0aW9uIG9mIGFuIGF0dHJpYnV0ZSBu
YW1lLCBhcw0Kd2VsbCBhcyBhY2NlcHRpbmcgYSBnZW5lcmFsIHB1cnBvc2Ug
YmluYXJ5IGJsb2IsIG5vdCBhIHNwZWNpZmljIHN0cnVjdHVyZS4NCg0KIw0K
IyUgZ2V0ZXh0YXR0ciAgIHZwICAgICAgPSA9ID0NCiMNCnZvcF9nZXRleHRh
dHRyIHsNCiAgICAgICAgSU4gc3RydWN0IHZub2RlICp2cDsNCiAgICAgICAg
SU4gY2hhciAqbmFtZTsNCiAgICAgICAgSU5PVVQgc3RydWN0IHVpbyAqdWlv
Ow0KICAgICAgICBJTiBzdHJ1Y3QgdWNyZWQgKmNyZWQ7DQogICAgICAgIElO
IHN0cnVjdCBwcm9jICpwOw0KfTsNCg0Kdm9wX2dldGV4dGF0dHIgcmV0cmll
dmVzIGEgbmFtZWQgYXR0cmlidXRlIChuYW1lKSBmcm9tIGEgc3BlY2lmaWMg
dm5vZGUNCih2cCksIGFuZCByZXR1cm5zIGl0IHRvIGEgc2V0IG9mIGJ1ZmZl
cnMgKHVpbyksIGVpdGhlciBpbiB1c2Vyc3BhY2Ugb3INCnN5c3NwYWNlLiAg
VG8gYXV0aG9yaXplIHRoZSBjYWxsLCBhIGNyZWRlbnRpYWwgc3RydWN0dXJl
IGlzIHByb3ZpZGVkIChjcmVkKSwNCmFzIHdlbGwgYXMgYSBwcm9jZXNzIGZv
ciBoYW5kbGluZyBzY2hlZHVsaW5nIGFuZCBsb2NrcyAocCkuICBUaGlzIGNh
bGwNCm1ha2VzIHRoZSBzYW1lIHVzZSBvZiB1aW8gYXMgVk9QX1JFQUQgKGFu
ZCBpbiBmYWN0IG1heSBiZSBpbXBsZW1lbnRlZCBvdmVyDQpWT1BfUkVBRCBp
biBzb21lIGNhc2VzKSwgcGF5aW5nIGF0dGVudGlvbiB0byB0aGUgdWlvIHJl
c2lkIGFuZCBvZmZzZXQNCnZhcmlhYmxlcywgYnV0IGJvdW5kaW5nIHJldHJp
ZXZhbCBhdCB0aGUgc2l6ZSBvZiB0aGUgYXR0cmlidXRlIGRhdGEgY3VycmVu
dGx5DQpzdG9yZWQgaW4gdGhlIGF0dHJpYnV0ZS4gIEEgbnVsbCBjcmVkZW50
aWFsIHBvaW50ZXIgbWF5IGJlIHBhc3NlZCB0bw0KaW5kaWNhdGUgdGhhdCB0
aGUga2VybmVsLCBhbmQgbm90IGEgc3BlY2lmaWMgcHJvY2VzcywgaXMgbWFr
aW5nIHRoaXMgcmVxdWVzdC4NCg0KQXMgd2l0aCByZWFkdiwgdGhlIHVpbyBy
ZXNpZCBmaWVsZCB3aWxsIGJlIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aGUgYW1v
dW50DQpvZiBkYXRhIHJlYWQuICBaZXJvIGlzIHJldHVybmVkIG9uIHN1Y2Nl
c3MsIG90aGVyd2lzZSBhbiBlcnJubyB2YWx1ZSB0bw0KcmVmbGVjdCB0aGUg
ZmFpbHVyZS4NCg0KTm8gbG9ja3MgbXVzdCBiZSBoZWxkIHRvIG1ha2UgdGhp
cyBWT1BfIGNhbGwuDQoNClRoaXMgY2FsbCBtYXkgZmFpbCBpbiBhIG51bWJl
ciBvZiB3YXlzLCBpbmNsdWRpbmcNCnJldHVybmluZyBFTk9FTlQgaWYgdGhl
IGF0dHJpYnV0ZSBuYW1lIGlzIG5vdCBkZWZpbmVkLCBFSU8gaWYgYW4gSS9P
DQplcnJvciBvY2N1cnMsIEVOWElPIGlmIHRoZSB1bmRlcmx5aW5nIGZpbGUg
c3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgdGhlIHR5cGUNCm9mIGFjY2VzcyBy
ZXF1ZXN0ZWQgKGkuZS4sIHJlYWRpbmcgYXR0cmlidXRlcyBmcm9tIGFuIHVu
c3VwcG9ydGVkIHR5cGUgb2YNCmZpbGUpDQosIEVOT01FTSBpZiBtZW1vcnkg
aXMgbm90IGF2YWlsYWJsZSB0byBzdXBwb3J0IHRoaXMNCm9wZXJhdGlvbiwg
RURFQURMSyBpZiBsb2NrcyBhcmUgbm90IGF2YWlsYWJsZSwgRUFDQ0VTIGlm
IHRoZSBjcmVkZW50aWFscw0KcGFzc2VkIGNhbm5vdCBhdXRob3JpemUgdGhl
IHJlcXVlc3QsIEVGQVVMVCBpZiB0aGUgdWlvIHN0cnVjdHVyZSByZWZlcnMg
dG8NCmFuIGludmFsaWQgdXNlcnNwYWNlIGFkZHJlc3MgKHNlZSBjb3B5aW4o
KSksIGFuZCBFSU5WQUwgaWYgdGhlIGFyZ3VtZW50cyAoc3VjaA0KYXMgbmFt
ZSBmb3JtYXR0aW5nKSBhcmUgaW52YWxpZC4gIEFkZGl0aW9uYWxseSwgRU9Q
Tk9UU1VQUCBtYXkgYmUgcmV0dXJuZWQNCmlmIHRoZSBmaWxlIHN5c3RlbSBk
b2VzIG5vdCBzdXBwb3J0IHRoZSByZXRyaWV2YWwgb2YgZXh0ZW5kZWQgYXR0
cmlidXRlcy4NCg0KIw0KIyUgc2V0ZXh0YXR0ciAgIHZwICAgICAgTCBMIEwN
CiMNCnZvcF9zZXRleHRhdHRyIHsNCiAgICAgICAgSU4gc3RydWN0IHZub2Rl
ICp2cDsNCiAgICAgICAgSU4gY2hhciAqbmFtZTsNCiAgICAgICAgSU5PVVQg
c3RydWN0IHVpbyAqdWlvOw0KICAgICAgICBJTiBzdHJ1Y3QgdWNyZWQgKmNy
ZWQ7DQogICAgICAgIElOIHN0cnVjdCBwcm9jICpwOw0KfTsNCg0Kdm9wX3Nl
dGV4dGF0dHIgc2V0cyBhIG5hbWVkIGF0dHJpYnV0ZSAobmFtZSkgZm9yIGEg
c3BlY2lmaWMgdm5vZGUgKHZwKSwNCmZpbmRpbmcgdGhlIHZhbHVlIHRvIHNl
dCBpbiBhIHNldCBvZiBidWZmZXJzICh1aW8pLCBlaXRoZXIgaW4gdXNlcnNw
YWNlDQpvciBzeXNzcGFjZS4gIFRvIGF1dGhvcml6ZSB0aGlzIGNhbGwsIGEg
Y3JlZGVudGlhbCBzdHJ1Y3R1cmUgaXMgcHJvdmlkZWQNCihjcmVkKSwgYXMg
d2VsbCBhcyBhIHByb2Nlc3MgZm9yIGhhbmRsaW5nIHNjaGVkdWxpbmcgYW5k
IGxvY2tzIChwKS4gIFRoaXMNCmNhbGwgbWFrZXMgdGhlIHNhbWUgdXNlIG9m
IHVpbyBhcyBWT1BfV1JJVEUgKGFuZCBpbiBmYWN0IG1heSBiZSBpbXBsZW1l
bnRlZA0Kb3ZlciBWT1BfV1JJVEUgaW4gc29tZSBjYXNlcyksIHBheWluZyBh
dHRlbnRpb24gdG8gdGhlIHVpbyByZXNpZCB2YXJpYWJsZSwNCmFsdGhvdWdo
IG9wdGlvbmFsbHkgcmVqZWN0aW5nIG5vbi16ZXJvIG9mZnNldCBmaWVsZHMg
YXMgdGhleSBtYXkgdmlvbGF0ZQ0KdGhlIHJlcGxhY2VtZW50IG5vdCBtb2Rp
ZmljYXRpb24gcnVsZSBkZXNjcmliZWQgaW4gU2VtYW50aWNzLiAgQSBudWxs
DQpjcmVkZW50aWFsIHBvaW50ZXIgbWF5IGJlIHBhc3NlZCB0byBpbmRpY2F0
ZSB0aGF0IHRoZSBrZXJuZWwsIGFuZCBub3QgYQ0Kc3BlY2lmaWMgcHJvY2Vz
cywgaXMgbWFraW5nIHRoaXMgcmVxdWVzdC4NCg0KQXMgd2l0aCB3cml0ZXYs
IHRoZSB1aW8gcmVzaWQgZmllbGQgd2lsbCBiZSB1cGRhdGVkIHRvIHJlZmxl
Y3QgdGhlDQphbW91bnQgb2YgZGF0YSByZWFkLiAgWmVybyBpcyByZXR1cm5l
ZCBvbiBzdWNjZXNzLCBvdGhlcndpc2UgYW4gZXJybm8NCnZhbHVlIHRvIHJl
ZmxlY3QgdGhlIGZhaWx1cmUuDQoNCkFuIGV4Y2x1c2l2ZSBsb2NrIG11c3Qg
YmUgaGVsZCBvbiAodnApIHRvIG1ha2UgdGhpcyBWT1BfIGNhbGwuDQoNClRo
aXMgY2FsbCBtYXkgZmFpbCBpbiBhIG51bWJlciBvZiB3YXlzLCBpbmNsdWRp
bmcgYWxsIGZhaWx1cmUgbW9kZXMgb2YNCnZvcF9nZXRleHRhdHRyLiAgQWRk
aXRpb25hbGx5LCBpdCBpcyBwb3NzaWJsZSB0byByZWNlaXZlOiBFRkJJRyBp
ZiB0aGUNCmF0dHJpYnV0ZSB2YWx1ZSBpcyBsYXJnZXIgdGhhbiBzb21lIGFk
bWluaXN0cmF0aXZlIG9yIGFsbG9jYXRpb24gbGltaXQsDQpFTk9TUEMgaWYg
dGhlIGRldmljZSBpcyBvdXQgb2Ygc3BhY2UgYnV0IG90aGVyd2lzZSB3b3Vs
ZCBoYXZlIGFsbG93ZWQNCnRoZSBjYWxsIHRvIHN1Y2NlZWQsIGFuZCBFUk9G
UyBpZiB0aGUgZmlsZSBzeXN0ZW0gaXMgbW91bnRlZCByZWFkb25seS4NCkVP
UE5PVFNVUFAgbWF5IGJlIHJldHVybmVkIGlmIHRoZSBmaWxlIHN5c3RlbSBk
b2VzIG5vdCBzdXBwb3J0IHRoZQ0Kc2V0dGluZyBvZiBleHRlbmRlZCBhdHRy
aWJ1dGVzLg0KDQojDQojJSBybWV4dGF0dHIgICAgdnAgICAgICBMIEwgTA0K
Iw0Kdm9wX3JtZXh0YXR0ciB7DQogICAgICAgIElOIHN0cnVjdCB2bm9kZSAq
dnA7DQogICAgICAgIElOIGNoYXIgKm5hbWU7DQogICAgICAgIElOIHN0cnVj
dCB1Y3JlZCAqY3JlZDsNCiAgICAgICAgSU4gc3RydWN0IHByb2MgKnA7DQp9
Ow0KDQp2b3Bfcm1leHRhdHRyIHJlbW92ZXMgYSBuYW1lZCBhdHRyaWJ1dGUg
KG5hbWUpIGZvciBhIHNwZWNpZmljIHZub2RlICh2cCkuDQpUbyBhdXRob3Jp
emUgdGhpcyBjYWxsLCBhIGNyZWRlbnRpYWwgc3RydWN0dXJlIGlzIHByb3Zp
ZGVkIChjcmVkKSwgYXMgd2VsbA0KYXMgYSBwcm9jZXNzIGZvciBoYW5kbGlu
ZyBzY2hlZHVsaW5nIGFuZCBsb2NrcyAocCkuICBBIG51bGwgY3JlZGVudGlh
bA0KcG9pbnRlciBtYXkgYmUgcGFzc2VkIHRvIGluZGljYXRlIHRoYXQgdGhl
IGtlcm5lbCwgYW5kIG5vdCBhIHNwZWNpZmljDQpwcm9jZXNzLCBpcyBtYWtp
bmcgdGhpcyByZXF1ZXN0Lg0KDQpaZXJvIGlzIHJldHVybmVkIG9uIHN1Y2Nl
c3MsIG90aGVyd2lzZSBhbiBlcnJubyB2YWx1ZSB0byByZWZsZWN0IHRoZQ0K
ZmFpbHVyZS4NCg0KQW4gZXhjbHVzaXZlIGxvY2sgbXVzdCBiZSBoZWxkIG9u
ICh2cCkgdG8gbWFrZSB0aGlzIFZPUF8gY2FsbC4NCg0KVGhpcyBjYWxsIG1h
eSBmYWlsIGluIGEgbnVtYmVyIG9mIHdheXMsIGFsbCBvZiB3aGljaCBhcmUg
ZG9jdW1lbnRlZCBhYm92ZQ0KZm9yIHZvcF9zZXRleHRhdHRyLiAgRU9QTk9U
U1VQUCBtYXkgYmUgcmV0dXJuZWQgaWYgdGhlIGZpbGUgc3lzdGVtIGRvZXMN
Cm5vdCBzdXBwb3J0IHRoZSByZW1vdmFsIG9mIGFuIGV4dGVuZGVkIGF0dHJp
YnV0ZS4NCg0KDQpWRlMgSW50ZXJmYWNlcw0KDQpUbyBzdXBwb3J0IGFuIGV4
dGVuZGVkIGF0dHJpYnV0ZSBpbXBsZW1lbnRhdGlvbiBvbiBVRlMsIG9uZSBh
ZGRpdGlvbmFsDQpWRlMgY2FsbCBpcyBkZWZpbmVkOg0KDQogICAgICAgIGlu
dCAgICAgKCp2ZnNfZXh0YXR0cmN0bCkgX19QKChzdHJ1Y3QgbW91bnQgKm1w
LCBpbnQgY21kLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqYXR0cm5hbWUsIGNhZGRyX3QgYXJnLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJvYyAqcCkp
OyANCg0KVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBVRlMgdmZzX3F1b3RhY3Rs
IGNhbGwsIGFsbG93aW5nIGZvciB0aGUgcnVudGltZQ0KY29uZmlndXJhdGlv
biBvZiBleHRlbmRlZCBhdHRyaWJ1dGUgbWVjaGFuaXNtcywgaW5jbHVkaW5n
IGJhY2tpbmcNCmZpbGVzIGZvciBhdHRyaWJ1dGUgc3RvcmFnZS4gIFRoZSBk
ZXRhaWxzIGFyZSBVRlMtc3BlY2lmaWMsIGJ1dCB0aGVyZSBpcw0KcHJlY2Vk
ZW50IGZvciBVRlMtc3BlY2lmaWMgVkZTIGNhbGxzIHRvIGNvbmZpZ3VyZSBV
U0Ytc3BlY2lmaWMgYmVoYXZpb3IuDQpXaGlsZSBpbiB0aGUgbG9uZyB0ZXJt
LCBpdCB3b3VsZCBwcm9iYWJseSBiZSBkZXNpcmFibGUgdG8gc3BlY2lmeSBh
DQpnZW5lcmFsIG1lY2hhbmlzbSBmb3IgcHVzaGluZyBjb25maWd1cmF0aW9u
IHN0YXRlIGludG8gVkZTJ3MsIHRoaXMNCm1lY2hhbmlzbSB3b3JrcyB3ZWxs
IGdpdmVuIHRoZSB0YXN0LiAgVGhlIFVGUyBleHRlbmRlZCBhdHRyaWJ1dGUN
CmltcGxlbWVudGF0aW9uIGJhY2tzIGV4dGVuZGVkIGF0dHJpYnV0ZXMgaW50
byB2bm9kZXMgKHVzdWFsbHkgc3RvcmVkDQppbiB0aGUgc2FtZSBmaWxlIHN5
c3RlbSwgYWx0aG91Z2ggbm90IG5lY2Vzc2FyaWx5KSwgaW5kZXhlZCBieSB0
aGUNCmlub2RlIG51bWJlciBvZiB0aGUgdm5vZGUgdG8gd2hpY2ggdGhlIGF0
dHJpYnV0ZSBpcyBhcHBsaWVkLiAgY21kIG1heQ0KY3VycmVudGx5IHRha2Ug
b24gdGhlIHZhbHVlczoNCg0KI2RlZmluZSBVRlNfRVhUQVRUUl9DTURfU1RB
UlQgICAweDAwMDAwMDAxDQojZGVmaW5lIFVGU19FWFRBVFRSX0NNRF9TVE9Q
ICAgIDB4MDAwMDAwMDINCiNkZWZpbmUgVUZTX0VYVEFUVFJfQ01EX0VOQUJM
RSAgMHgwMDAwMDAwMw0KI2RlZmluZSBVRlNfRVhUQVRUUl9DTURfRElTQUJM
RSAweDAwMDAwMDA0DQoNCldoaWNoIHJlZmVyIHRvIHN0YXJ0aW5nIGFuZCBz
dG9wcGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgc3VwcG9ydCBvbiBhDQpwYXJ0
aWN1bGFyIFVGUyBmaWxlIHN5c3RlbSAobXApLCBhcyB3ZWxsIGFzIGVuYWJs
aW5nIGFuZCBkaXNhYmxpbmcgdGhlDQpiYWNraW5nIG9mIHNwZWNpZmljIGF0
dHJpYnV0ZXMgb250byBzcGVjaWZpYyBhdHRyaWJ1dGUgZmlsZXMgKGFyZyBp
cw0KY2FzdCBvZiBjaGFyICopLiAgVGhpcyBiZWhhdmlvciBtYXkgY2hhbmdl
IHNvbWUsIGFuZCBhcyBzdWNoIGlzIG5vdA0KZG9jdW1lbnRlZCBoZXJlIGZ1
cnRoZXIuDQoNCg0KU3lzY2FsbHMNCg0KRWFjaCB2bm9kZSBjYWxsIGlzIGN1
cnJlbnRseSBleHBvc2VkIHZpYSBvbmUgc3lzY2FsbDoNCg0KaW50ICAgICBl
eHRhdHRyX3NldF9maWxlKGNoYXIgKnBhdGgsIGNoYXIgKmF0dHJuYW1lLCBz
dHJ1Y3QgaW92ZWMgKmlvdnAsDQogICAgICAgIHVfaW50IGlvdmNudCk7DQpp
bnQgICAgIGV4dGF0dHJfZ2V0X2ZpbGUoY2hhciAqcGF0aCwgY2hhciAqYXR0
cm5hbWUsIHN0cnVjdCBpb3ZlYyAqaW92cCwNCiAgICAgICAgdV9pbnQgaW92
Y250KTsNCmludCAgICAgZXh0YXR0cl9ybV9maWxlKGNoYXIgKnBhdGgsIGNo
YXIgKmF0dHJuYW1lKTsNCg0KRm9yIGVhY2ggY2FsbCwgcGF0aCBpcyBjb252
ZXJ0ZWQgdmlhIG5hbWVpKCkgdG8gYSB2bm9kZSwgd2l0aCBsb2NraW5nDQpm
b3IgdGhlIHNlY29uZCBhbmQgdGhpcmQgY2FsbHMuICBXaGlsZSB0aGUgdm5v
ZGUgaW50ZXJmYWNlIGRvZXMgbm90IHBsYWNlDQphIGxpbWl0IG9uIHRoZSBs
ZW5ndGggb2YgYXR0cmlidXRlIG5hbWVzLCB0aGUgc3lzY2FsbCBtdXN0IGNv
cHkgdGhlIHVzZXJsYW5kDQpzdHJpbmcgaW50byBrZXJuZWwgc3BhY2UgZm9y
IHRoZSB2bm9kZSBjYWxsLCBzbyBwbGFjZXMgYSBsaW1pdCBvZiANCkVYVEFU
VFJfTUFYTkFNRUxFTiBjaGFyYWN0ZXJzIG9uIHRoZSBudWwtdGVybWluYXRl
ZCBzdHJpbmcsIGluY2x1ZGluZyB0aGUNCm51bCB0ZXJtaW5hdG9yLiAgSW4g
dGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIEVYVEFUVFJfTUFYTkFNRUxF
TiBpcw0KZGVmaW5lZCBhcyBOQU1FX01BWCwgd2hpY2ggaXMgMjU1IGNoYXJh
Y3RlcnMuICBUaGlzIGRvZXMgbm90IHByZWNsdWRlDQppbmNyZWFzaW5nIHRo
aXMgbGltaXQsIG9yIHVuZGVybHlpbmcgZmlsZSBzeXN0ZW1zIHN1cHBvcnRp
bmcgaGlnaGVyIG9yDQpsb3dlciBsaW1pdHMuICBUaGUgaW92cCBhbmQgaW92
Y250IGFyZ3VtZW50cyBhcmUgc2ltaWxhciB0byB0aG9zZSBmb3VuZA0KaW4g
cmVhZHYgYW5kIHdyaXRldiwgYW5kIGFyZSBjb252ZXJ0ZWQgYnkgdGhlIHN5
c2NhbGwgd3JhcHBlcnMgaW50bw0KYXBwcm9wcmlhdGVseSBmb3JtYXRlZCB1
aW8gc3RydWN0dXJlcyBmb3IgdGhlIHZub2RlIGNhbGwuDQoNClRoZSBWRlMg
Y2FsbCBpcyBleHBvc2VkIHZpYSBvbmUgc3lzY2FsbDoNCg0KaW50ICAgICBl
eHRhdHRyY3RsKGNoYXIgKnBhdGgsIGludCBjbWQsIGNoYXIgKmF0dHJuYW1l
LCBjYWRkcl90IGFyZyk7DQoNClRoZSBtb3VudHBvaW50IGlzIHJldHJpZXZl
ZCBmcm9tIHBhdGgsIHRoZSBhdHRyaWJ1dGUgbmFtZSByZWFkIGludG8gYSBr
ZXJuZWwNCmJ1ZmZlciwgYW5kIHRoZSBvdGhlciBhcmd1bWVudHMgcGFzc2Vk
IHN0cmFpZ2h0IHRocm91Z2guDQoNCg==
--0-2036405370-945287061=:22637
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="extattr.h"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.3.96.991215143115.22637C@fledge.watson.org>
Content-Description: 

LyotDQogKiBDb3B5cmlnaHQgKGMpIDE5OTkgUm9iZXJ0IE4uIE0uIFdhdHNv
bg0KICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqDQogKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQNCiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KICogYXJl
IG1ldDoNCiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQogKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuDQogKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4NCiAqDQogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EDQog
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCiAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFDQogKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RQ0KICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwNCiAqIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTDQogKiBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikNCiAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUDQogKiBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZDQogKiBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GDQogKiBTVUNIIERBTUFHRS4NCiAqDQogKgkkSWQgJA0K
ICovDQoNCiNpZm5kZWYgX1NZU19FWFRBVFRSX0hfDQojZGVmaW5lIF9TWVNf
RVhUQVRUUl9IXw0KDQojZGVmaW5lIEVYVEFUVFJfTUFYTkFNRUxFTglOQU1F
X01BWA0KDQojaWZkZWYgS0VSTkVMDQoNCiNlbHNlIC8qIEtFUk5FTCAqLw0K
DQppbnQJZXh0YXR0cmN0bChjaGFyICpwYXRoLCBpbnQgY21kLCBjaGFyICph
dHRybmFtZSwgY2FkZHJfdCBhcmcpOw0KaW50CWV4dGF0dHJfc2V0X2ZpbGUo
Y2hhciAqcGF0aCwgY2hhciAqYXR0cm5hbWUsIHN0cnVjdCBpb3ZlYyAqaW92
cCwNCgl1X2ludCBpb3ZjbnQpOw0KaW50CWV4dGF0dHJfZ2V0X2ZpbGUoY2hh
ciAqcGF0aCwgY2hhciAqYXR0cm5hbWUsIHN0cnVjdCBpb3ZlYyAqaW92cCwN
Cgl1X2ludCBpb3ZjbnQpOw0KaW50CWV4dGF0dHJfcm1fZmlsZShjaGFyICpw
YXRoLCBjaGFyICphdHRybmFtZSk7DQoNCg0KI2VuZGlmIC8qIEtFUk5FTCAq
Lw0KDQoNCiNlbmRpZiAvKiBfU1lTX0VYVEFUVFJfSF8gKi8NCg==
--0-2036405370-945287061=:22637
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="acl_details.txt"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.3.96.991215143115.22637D@fledge.watson.org>
Content-Description: 

QWNjZXNzIENvbnRyb2wgTGlzdHMNCi0tLS0tLS0tLS0tLS0tLS0tLS0tDQoN
CkludHJvZHVjdGlvbg0KDQpBY2Nlc3MgQ29udHJvbCBsaXN0cyBleHRlbmQg
dGhlIFVOSVggZmlsZSBhbmQgZGlyZWN0b3J5IHBlcm1pc3Npb24gc2V0IHRv
DQphbGxvdyBmaWxlIG93bmVycyB0byBkZWZpbmUgYWRkaXRpb25hbCByaWdo
dHMgZm9yIHNwZWNpZmljIHVzZXJzIGFuZCBncm91cHMNCmZvciB0aGF0IGZp
bGUuDQoNCg0KUmF0aW9uYWxlDQoNClRoZSBjdXJyZW50IFVOSVggcGVybWlz
c2lvbiBtb2RlbCBpcyBxdWl0ZSBsaW1pdGVkOiBpdCBhbGxvd3MgYSBmaWxl
IG93bmVyDQp0byBzcGVjaWZ5IGEgbGltaXRlZCBzZXQgb2YgcmlnaHRzIChy
ZWFkLCB3cml0ZSwgZXhlY3V0ZS9sb29rdXApIG92ZXINCmEgbGltaXRlZCBz
ZXQgb2YgcHJpbmNpcGFscyAoZmlsZSBvd25lciwgZmlsZSBncm91cCwgYW5k
IG90aGVyKS4gIFRoaXMgcmVsaWVzDQpvbiB0aGUgc3lzdGVtIGFkbWluaXN0
cmF0b3IgdG8gbWFpbnRhaW4gZ3JvdXBzIGZvciBhbGwgcG9zc2libGUgcGVy
bXV0YXRpb25zDQpvZiB1c2VycyB0aGF0IHdpc2ggdG8gc2hhcmUgZmlsZXMg
d2hpbGUgbm90IG1ha2luZyB0aGUgZmlsZSBhY2Nlc3NpYmxlIHRvDQphbGwg
dXNlcnMgb24gdGhlIHN5c3RlbSwgYW4gaW5hcHByb3ByaWF0ZSBhc3N1bXB0
aW9uIGluIG1vc3QgbXVsdGktdXNlcg0KZW52aXJvbm1lbnRzLiAgUE9TSVgu
MWUgZGVmaW5lcyBhbiBBY2Nlc3MgQ29udHJvbCBMaXN0IGV4dGVuc2lvbiB0
aGF0DQphbGxvd3MgdXNlcnMgdG8gc3BlY2lmeSBhZGRpdGlvbmFsIHVzZXJz
IGFuZCBncm91cHMgZm9yIGEgZmlsZSwgYW5kDQpyaWdodHMgZm9yIHRoZW0g
b3ZlciB0aGUgZmlsZS4NCg0KVGhpcyBhbGxvd3MgYSBudW1iZXIgb2Ygc2Vj
dXJpdHkgaW1wcm92ZW1lbnRzLCBib3RoIGZyb20gdGhlIHBlcnNwZWN0aXZl
DQpvZiByZWd1bGFyIHVzZXJzIHNoYXJpbmcgZmlsZXMsIGFuZCBhbHNvIGZy
b20gYSBzeXN0ZW1zIHBlcnNwZWN0aXZlIGFzIGl0DQphbGxvd3MgdGhlIGlu
Y3JlYXNlZCB1c2Ugb2YgdGhlIHByaXZpbGVnZSBvZiBsZWFzdCBwcmluY2lw
YWw6IHRoYXQgcHJvY2Vzc2VzDQpiZSBnaXZlbiBvbmx5IHRoZSByaWdodHMg
dGhhdCB0aGV5IHJlcXVpcmUuICBGb3IgZXhhbXBsZSwgQUNMcyBzaW1wbGlm
eQ0KbWFuYWdpbmcgZGF0YSBzaGFyaW5nIGZvciBzeXN0ZW0gc2VydmljZXMg
c3VjaCBhcyBtYWlsLg0KDQpBbHRob3VnaCBBQ0xzIG1heSB2YXJ5IGluIHNl
bWFudGljcyBmcm9tIGZpbGUgc3lzdGVtIHRvIGZpbGUgc3lzdGVtLCBqdXN0
DQphcyB0aGUgcHJlY2lzZSBkZXRhaWxzIG9mIGZpbGUgc2VtYW50aWNzIHZh
cnksIGl0IGlzIHVzZWZ1bCB0byBkZWZpbmUNCmEgc2luZ2xlIGFuZCBjb21w
cmVoZW5zaXZlIHZub2RlIGFuZCBzeXNjYWxsIGludGVyZmFjZSB0byBhbGxv
dw0KY29uc2lzdGVudCBhY2Nlc3MgYWNyb3NzIGZpbGUgc3lzdGVtcy4NCg0K
DQpTZXJ2aWNlcw0KDQpBcyB3aXRoIGZpbGUgc2VtYW50aWNzLCBBQ0wgc2Vt
YW50aWNzIG1heSB2YXJ5IGZyb20gZmlsZSBzeXN0ZW0gdG8gZmlsZQ0Kc3lz
dGVtLiAgRm9yIGV4YW1wbGUsIHBlcm1pc3Npb25zIGluIGEgZGlzdHJpYnV0
ZWQgc3lzdGVtIHN1Y2ggYXMgQUZTIG9yDQpDb2RhIG1heSBoYXZlIHF1aXRl
IGRpZmZlcmVudCBpbXBsaWNhdGlvbnMgZnJvbSBwZXJtaXNzaW9ucyB1c2Vk
IGxvY2FsbHkNCmluIFVGUy9GRlMuICBIb3dldmVyLCBBQ0xzIGdlbmVyYWxs
eSBoYXZlIHJvdWdobHkgdGhlIHNhbWUgc3ludGFjdGljIGZvcm06DQphIGxp
c3Qgb2YgcHJpbmNpcGFscywgYW5kIGZvciBlYWNoIHByaW5jaXBhbCwgYSBz
ZXQgb2YgcmlnaHRzLiAgU2ltaWxhcmx5LA0KdGhlcmUgYXJlIHNpbWlsYXIg
b3BlcmF0aW9ucyByZWdhcmRsZXNzIG9mIHRoZSBmaWxlIHN5c3RlbTogc2V0
dGluZyBhbmQNCnJldHJpZXZpbmcgQUNMcywgYXMgd2VsbCBhcyBjaGVja2lu
ZyB0aGUgdmFsaWRpdHkgb2YgYW4gQUNMIGZvciBhIHRhcmdldA0KZmlsZSBp
biBhbiBlbnZpcm9ubWVudCB3aGVyZSB0aGUgdmFsaWRpdHkgb2YgQUNMcyB2
YXJpZXMgYnkgdGFyZ2V0LiAgQXMNCnN1Y2gsIHdlIGRlZmluZSBhIHN0YW5k
YXJkIHZub2RlIGludGVyZmFjZSwgc3lzY2FsbCBpbnRlcmZhY2UsIGFuZA0K
c2V0IG9mIHN5bnRheCByZXF1aXJlbWVudHMgZm9yIEFDTHMuICBUaGlzIHBl
cm1pdHMgaW5kaXZpZHVhbCBpbXBsZW1lbnRhdGlvbnMsDQpzdWNoIGFzIFBP
U0lYLjFlIG9uIFVGUy9GRlMsIHRvIGRlZmluZSB0aGVpciBvd24gc2VtYW50
aWNzLCB5ZXQgdXNlIHRoZQ0Kc2FtZSBpbnRlcmZhY2UgYXMgb3RoZXIgaW1w
bGVtZW50YXRpb25zLCBzdWNoIGFzIEFGUyBvciBDb2RhIHBlcm1pc3Npb25z
Lg0KDQoNCkV4aXN0aW5nIEltcGxlbWVudGF0aW9ucw0KDQpBIG51bWJlciBv
ZiBvcGVyYXRpbmcgc3lzdGVtcyBzdXBwb3J0IEFDTHMsIG9yIGhhdmUgYWRk
b24gcGFja2FnZXMgdGhhdA0KcHJvdmlkZSBBQ0wgZnVuY3Rpb25hbGl0eS4g
IE1hbnkgb2YgdGhlc2UgaW1wbGVtZW50YXRpb25zIGFyZSBiYXNlZCBvbiB0
aGUNClBPU0lYLjFlIGRyYWZ0LCBzb21lIHdpdGggbWlub3IgaW50ZXJmYWNl
IGNoYW5nZXMuICBTb2xhcmlzIGFuZCBJUklYDQpib3RoIHN1cHBvcnQgQUNM
cyBpbiB0aGUgYmFzZSBmaWxlIHN5c3RlbSB3aXRob3V0IGFkZG9uczsgaW4g
dGhlIGNhc2Ugb2YNCklSSVgsIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBhbG1v
c3QgZW50aXJlbHkgUE9TSVguMWUtY29tcGxpYW50LiAgSW4gdGhlDQpjYXNl
IG9mIFNvbGFyaXMsIHRoZXJlIGFyZSBzaWduaWZpY2FudCBkaWZmZXJlbmNl
cyBiZXR3ZWVuIHRoZSBpbnRlcmZhY2UNCmFuZCBQT1NJWC4xZS4gIExpbnV4
IGFsc28gaGFzIGFuIEFDTCBpbXBsZW1lbnRhdGlvbiwgb3JpZ2luYWxseSBj
bG9zZXINCnRvIFNvbGFyaXMsIGJ1dCBub3cgbW92aW5nIGluIHRoZSBkaXJl
Y3Rpb24gb2YgUE9TSVguMWUuICBBIG51bWJlciBvZg0Kb3RoZXIgb3BlcmF0
aW5nIHN5c3RlbXMgYWxzbyBzdXBwb3J0IEFDTHMsIGJ1dCB3ZXJlIG5vdCBh
dmFpbGFibGUgdG8gdXMNCmZvciBpbnNwZWN0aW9uLiAgQSBjcm9zcy1wbGF0
Zm9ybSBQT1NJWC4xZSBpbXBsZW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QNCmlz
IGF2YWlsYWJsZSBmb3IgZGlzY3Vzc2lvbiBvZiB0aGUgUE9TSVguMWUgaW50
ZXJmYWNlIGFuZCBpdHMgcHJhY3RpY2FsDQppbXBsZW1lbnRhdGlvbiBhc3Bl
Y3RzLiAgU2VuZCBlbWFpbCB0byBtYWpvcmRvbW9AY3lydXMud2F0c29uLm9y
ZywgDQpjb250YWluaW5nICJzdWJzY3JpYmUgcG9zaXgxZSIuDQoNCg0KQUNM
IFN5bnRheA0KDQpQT1NJWC4xZSBkZWZpbmVzIEFDTHMgYW5kIEFDTCBFbnRy
aWVzLCB0aGUgY29tcG9uZW50cyBvZiBBQ0xzLiAgSW4gdGhlDQpGcmVlQlNE
IFBPU0lYLjFlIEFDTCBpbXBsZW1lbnRhdGlvbiwgdGhlc2Ugb2JqZWN0IHR5
cGVzIGFyZSBiYWNrZWQgYnkNCnN0cnVjdHVyZXM6DQoNCnN0cnVjdCBhY2xf
ZW50cnkgew0KICAgICAgICBhY2xfdGFnX3QgICAgICAgYWVfdGFnOw0KICAg
ICAgICB1aWRfdCAgIGFlX2lkOw0KICAgICAgICBhY2xfcGVybV90ICAgICAg
YWVfcGVybTsNCn07DQp0eXBlZGVmIHN0cnVjdCBhY2xfZW50cnkgICAgICAg
ICphY2xfZW50cnlfdDsNCg0Kc3RydWN0IGFjbCB7DQogICAgICAgIGludCAg
ICAgYWNsX2NudDsNCiAgICAgICAgc3RydWN0IGFjbF9lbnRyeSAgICAgICAg
YWNsX2VudHJ5W01BWF9BQ0xfRU5UUklFU107DQp9Ow0KdHlwZWRlZiBzdHJ1
Y3QgYWNsICAgICAgKmFjbF90Ow0KDQpFYWNoIGVudHJ5IHJlZmVycyB0byBh
IHByaW5jaXBhbCBuYW1lc3BhY2UgKGFjbF90YWdfdCksIGhhcw0KYSBxdWFs
aWZpZXIgaW5kaWNhdGluZyB3aGljaCBwcmluY2lwYWwgaW4gdGhlIG5hbWVz
cGFjZSBpcyBpbnRlbmRlZA0KKHVpZF90KSwgYW5kIGFzc2lnbnMgYSBzcGVj
aWZpYyBzZXQgb2YgcmlnaHRzIChhY2xfcGVybV90KS4gIEEgc2V0IG9mDQp0
aGVzZSBlbnRyaWVzIGlzIHRoZW4gY29tYmluZWQgdG8gZm9ybSBhIGNvbXBs
ZXRlIEFDTC4NCg0KUE9TSVguMWUgZGVmaW5lcyBhIGxhcmdlIGxpYnJhcnkg
b2YgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmcgdGhlc2UNCkFDTHMgYW5k
IEFDTCBlbnRyaWVzIGluIHRoZSBhYnN0cmFjdCAod2l0aG91dCBhd2FyZW5l
c3Mgb2YgdGhlIHVuZGVybHlpbmcNCkMgc3RydWN0dXJlcywgd2hlcmV2ZXIg
cG9zc2libGUpLCBhcyB3ZWxsIGFzIHRoZSBtb3JlIHJlbGV2YW50IGludGVy
ZmFjZXMNCmZvciByZXRyaWV2aW5nIGFuZCBzdWJtaXR0aW5nIEFDTHMgYXNz
b2NpYXRlZCB3aXRoIG9iamVjdHMuICBJbiB0aGUgRnJlZUJTRA0KaW1wbGVt
ZW50YXRpb24sIHRoZXNlIGludGVyZmFjZXMgYXJlIGJhY2tlZCBieSBzbGln
aHRseSBtb3JlIGdlbmVyYWwNCnN5c2NhbGxzLCB3aGljaCBpbiB0dXJuIGZv
cndhcmQgcmVxdWVzdHMgdG8gc2xpZ2h0bHkgbW9yZSBnZW5lcmFsIHZub2Rl
DQpvcGVyYXRpb25zOyBhdCBlYWNoIHN0ZXAgYWxvbmcgdGhlIHdheSwgdGhl
IHNhbWUgc3ludGF4IGZvciBBQ0xzIGlzDQpwcmVzZXJ2ZWQsIGFuZCB0aGUg
Y2hlY2tpbmcgb2Ygc2VtYW50aWNzIGlzIGdlbmVyYWxseSBsZWZ0IHRvIHRo
ZQ0KaW1wbGVtZW50aW5nIGZpbGUgc3lzdGVtcy4NCg0KUE9TSVguMWUgYWxz
byBkZWZpbmVzIGFuIEFDTCB0eXBlLCB0byBkaXN0aW5ndWlzaCBkaWZmZXJl
bnQgQUNMcyBpbiB0aGUNCmNhc2UgdGhhdCBhbiBvYmplY3QgbWF5IGhhdmUg
bW9yZSB0aGFuIG9uZSBBQ0wgYXNzaWduZWQgdG8gaXQuICBQT1NJWC4xZQ0K
dXNlcyB0d28gdmFsdWVzLS1vbmUgZm9yIGFjY2VzcyBBQ0xzLCBhbmQgb25l
IGZvciBkZWZhdWx0IEFDTHMgb25seQ0KYXBwcm9wcmlhdGUgd2hlcmUgdGhl
IG9iamVjdCBpcyBhIGRpcmVjdG9yeS4gIFRoaXMgdHlwZSBzcGVjaWZpZXIg
aXMNCmV4cG9zZWQgaW4gdGhlIEFQSSwgYW5kIG5vdCBzdG9yZWQgaW4gYW4g
QUNMLCBhcyBhIHBhcnRpY3VsYXIgQUNMIG1heQ0KYmUgdmFsaWQgKGFuZCBh
cHBsaWNhYmxlKSBpbiBib3RoIGNhc2VzLCBhbmQgaXQgaXMgbmVjZXNzYXJ5
IHRvIGNvbXBhcmUNCkFDTHMgYXMgdGhlIHNhbWUgdHlwZSwgZXZlbiBpZiB0
aGV5IGFyZSBkaWZmZXJlbnQgImFjbCB0eXBlcyIgaW4gdGhlDQpQT1NJWC4x
ZSBzZW5zZS4NCg0KSW4gdGhlIGN1cnJlbnQgVkZTIGludGVyZmFjZSwgYWNj
ZXNzIHRvIGZpbGVzIGlzIHZlcmlmaWVkIGJ5IHN1Ym1pdHRpbmcNCmEgdm5v
ZGUgcmVmZXJlbmNlLCBhcyB3ZWxsIGFzIGNyZWRlbnRpYWxzLCB0byBWT1Bf
QUNDRVNTIChhbmQgb3RoZXJzKQ0KYW5kIGNoZWNraW5nIG9mIHJpZ2h0cyBp
cyBoYW5kbGVkIHdpdGhpbiB0aGUgVkZTLiAgV2l0aCBBQ0xzLCB0aGlzIGRv
ZXMNCm5vdCBjaGFuZ2UsIHNvIHRoZSB2ZXJpZmljYXRpb24gb2YgQUNMcyBp
cyBnZW5lcmFsbHkgaGlkZGVuIGZyb20gbW9zdA0Ka2VybmVsIGNvZGUuICBT
aW1pbGFybHksIGFzIHdpdGggYXR0cmlidXRlcywgdGhlIHN0b3JhZ2Ugb2Yg
QUNMcyBpcyBsZWZ0DQp1cCB0byB0aGUgZmlsZSBzeXN0ZW06IGluIHRoZSBj
YXNlIG9mIHRoZSBGcmVlQlNEIFVGUy9GRlMgaW1wbGVtZW50YXRpb24sDQph
biBleHRlbmRlZCBhdHRyaWJ1dGUgbWVjaGFuaXNtIGlzIHJlbGllZCB1cG9u
IHRvIHByb3ZpZGUgc3RvcmFnZSBmb3INCkFDTHMuDQoNCg0KVm5vZGUgSW50
ZXJmYWNlIEV4dGVuc2lvbnMNCg0KVGhyZWUgbmV3IHZub2RlIGNhbGxzIHBy
b3ZpZGUgdGhlIG1ham9yaXR5IG9mIHJlcXVpcmVkIGFuZCBjb21tb24gYWNj
ZXNzDQptZXRob2RzIGZvciBBQ0xzLCBhbHRob3VnaCB0aGUgcHJhY3RpY2Fs
IGltcGxlbWVudGF0aW9uIG9mIGEgbnVtYmVyIG9mDQp0aGVzZSBvcGVyYXRp
b25zIGlzIGFmZmVjdGVkIGJ5IEFDTHMgaW4gZmlsZSBzeXN0ZW1zIHRoYXQg
c3VwcG9ydCBBQ0xzLg0KVGhlc2UgY2FsbHMgYXJlIHNpbWlsYXIgdG8gZXhp
c3RpbmcgY2FsbHMgZm9yIG1vZGlmeWluZyB2bm9kZSBhdHRyaWJ1dGVzDQoo
Vk9QX0dFVEFUVFIgYW5kIFZPUF9TRVRBVFRSKSwgZXhjZXB0IHRoYXQgaW5z
dGVhZCBvZiBwYXNzaW5nIHZhdHRycywNCnRoZXNlIHJvdXRpbmVzIHBhc3Mg
c3RydWN0IGFjbCdzLCBhcyB3ZWxsIGFzIGFuICJhY2wgdHlwZSIuICBXaGls
ZSB0aGUNCmludGVyZmFjZSBkb2VzIG5vdCBwdXQgbGltaXRzIG9uIHRoZSBj
b250ZW50cyBvZiBlaXRoZXIgdGhlIEFDTCBub3IgaXRzDQp0eXBlLCB0aGUg
dW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiB3aWxsIGV2YWx1YXRlIHRoZSBz
dWJtaXR0ZWQgQUNMcw0KYmFzZWQgb24gaXRzIG93biBzZW1hbnRpY3MsIGFu
ZCBtYXkgcmVqZWN0IGFueSBpdCBmaW5kcyB1bmZpdC4NCg0KIw0KIyUgZ2V0
YWNsICAgICAgIHZwICAgICAgPSA9ID0NCiMNCnZvcF9nZXRhY2wgew0KICAg
ICAgICBJTiBzdHJ1Y3Qgdm5vZGUgKnZwOw0KICAgICAgICBJTiBhY2xfdHlw
ZV90IHR5cGU7DQogICAgICAgIE9VVCBzdHJ1Y3QgYWNsICphY2xwOw0KICAg
ICAgICBJTiBzdHJ1Y3QgdWNyZWQgKmNyZWQ7DQogICAgICAgIElOIHN0cnVj
dCBwcm9jICpwOw0KfTsNCg0Kdm9wX2dldGFjbCByZXR1cm5zIGFuIEFDTCBv
ZiB0eXBlICh0eXBlKSBmcm9tIGEgc3BlY2lmaWMgdm5vZGUgKHZwKSwgYW5k
DQpyZXR1cm5zIGl0IHRvIGFuIEFDTCBidWZmZXIgKGFjbHApIGluIHN5c3Nw
YWNlLiAgVG8gYXV0aG9yaXplIHRoZSBjYWxsLCBhDQpjcmVkZW50aWFsIHN0
cnVjdHVyZSBpcyBwcm92aWRlZCAoY3JlZCksIGFzIHdlbGwgYXMgYSBwcm9j
ZXNzIGZvciBoYW5kbGluZw0Kc2NoZWR1bGluZyBhbmQgbG9ja3MgKHApLiAg
QSBudWxsIGNyZWRlbnRpYWwgcG9pbnRlciBtYXkgYmUgcGFzc2VkIGluIHRv
DQppbmRpY2F0ZSB0aGF0IHRoZSBrZXJuZWwsIGFuZCBub3QgYSBzcGVjaWZp
YyBwcm9jZXNzLCBpcyBtYWtpbmcgdGhpcw0KcmVxdWVzdC4NCg0KQXMgd2l0
aCB2b3BfZ2V0YXR0ciwgdGhlIEFDTCBzdHJ1Y3R1cmUgcG9pbnRlZCB0byBi
eSBhY2xwIHdpbGwgYmUgdXBkYXRlZA0KdG8gcmVmbGVjdCB0aGUgY3VycmVu
dCBzdGF0ZSBvZiB0aGUgdm5vZGUgQUNMIGluIHF1ZXN0aW9uLiAgWmVybyBp
cw0KcmV0dXJuZWQgb24gc3VjY2Vzcywgb3RoZXJ3aXNlIGFuIGVycm5vIHZh
bHVlIHRvIHJlZmxlY3QgdGhlIGZhaWx1cmUuDQoNCk5vIGxvY2tzIG11c3Qg
YmUgaGVsZCB0byBtYWtlIHRoaXMgVk9QXyBjYWxsLg0KDQpUaGlzIGNhbGwg
bWF5IGZhaWwgaW4gYSBudW1iZXIgb2Ygd2F5cywgaW5jbHVkaW5nOg0KDQpF
Tk9NRU0JSW5zdWZmaWNpZW50IG1lbW9yeSB0byBmdWxmaWxsIHJlcXVlc3QN
CkVBQ0NFUwlQZXJtaXNzaW9uIHdhcyBkZW5pZWQgaW4gcmVhZGluZyB0aGlz
IEFDTA0KRUlOVkFMCVRoZSBhY2wgdHlwZSBwYXNzZWQgaXMgaW52YWxpZCBm
b3IgdGhlIHZub2RlDQpFT1BOT1RTVVBQCVRoaXMgZmlsZSBzeXN0ZW0gZG9l
cyBub3Qgc3VwcG9ydCB2b3BfZ2V0YWNsDQoNCiMNCiMlIHNldGFjbCAgICAg
ICB2cCAgICAgIEwgTCBMDQojIA0Kdm9wX3NldGFjbCB7DQogICAgICAgIElO
IHN0cnVjdCB2bm9kZSAqdnA7DQogICAgICAgIElOIGFjbF90eXBlX3QgdHlw
ZTsNCiAgICAgICAgSU4gc3RydWN0IGFjbCAqYWNscDsNCiAgICAgICAgSU4g
c3RydWN0IHVjcmVkICpjcmVkOw0KICAgICAgICBJTiBzdHJ1Y3QgcHJvYyAq
cDsNCn07DQoNCnZvcF9zZXRhY2wgc2V0cyBhbiBBQ0wgb2YgdHlwZSAodHlw
ZSkgZm9yIGEgc3BlY2lmaWMgdm5vZGUgKHZwKSwgZmluZGluZw0KdGhlIEFD
TCB0byBzZXQgaW4gdGhlIHN0cnVjdHVyZSBwb2ludGVkIHRvIGJ5IGFjbHAg
aW4gc3lzc3BhY2UuICBUbw0KZGVsZXRlIGFuIEFDTCBvZiB0aGF0IHR5cGUs
IGEgbnVsbCBhY2xwIHBvaW50ZXIgbWF5IGJlIHBhc3NlZC4gIFRvDQphdXRo
b3JpemUgdGhpcyBjYWxsLCBhIGNyZWRlbnRpYWwgc3RydWN0dXJlIGlzIHBy
b3ZpZGVkIChjcmVkKSwgYXMgd2VsbA0KYXMgYSBwcm9jZXNzIGZvciBoYW5k
bGluZyBzY2hlZHVsaW5nIGFuZCBsb2NrcyAocCkuICBBIG51bGwgY3JlZGVu
dGlhbA0KcG9pbnRlciBtYXkgYmUgcGFzc2VkIGluIHRvIGluZGljYXRlIHRo
YXQgdGhlIGtlcm5lbCwgYW5kIG5vdCBhIHNwZWNpZmljDQpwcm9jZXNzLCBp
cyBtYWtpbmcgdGhpcyByZXF1ZXN0Lg0KDQpaZXJvIGlzIHJldHVybmVkIG9u
IHN1Y2Nlc3MsIG90aGVyd2lzZSBhbiBlcnJubyB2YWx1ZSB0byByZWZsZWN0
IHRoZQ0KZmFpbHVyZS4NCg0KQW4gZXhjbHVzaXZlIGxvY2sgbXVzdCBiZSBo
ZWxkIG9uICh2cCkgdG8gbWFrZSB0aGlzIFZPUCBjYWxsLg0KDQpUaGlzIGNh
bGwgbWF5IGZhaWwgaW4gYSBudW1iZXIgb2Ygd2F5cywgaW5jbHVkaW5nIGFs
bCBmYWlsdXJlIG1vZGVzIG9mDQp2b3BfZ2V0YWNsLiAgQWRkaXRpb25hbGx5
LCBpdCBpcyBwb3NzaWJsZSB0byByZWNlaXZlOg0KDQpFTk9TUEMJVGhlIGZp
ZWwgc3lzdGVtIGlzIG91dCBvZiBzcGFjZQ0KRVJPRlMJVGhlIGZpbGUgc3lz
dGVtIGlzIHJlYWRvbmx5DQoNCiMgDQojJSBhY2xjaGVjayAgICAgdnAgICAg
ICA9ID0gPSANCiMNCnZvcF9hY2xjaGVjayB7DQogICAgICAgIElOIHN0cnVj
dCB2bm9kZSAqdnA7DQogICAgICAgIElOIGFjbF90eXBlX3QgdHlwZTsNCiAg
ICAgICAgSU4gc3RydWN0IGFjbCAqYWNscDsNCiAgICAgICAgSU4gc3RydWN0
IHVjcmVkICpjcmVkOw0KICAgICAgICBJTiBzdHJ1Y3QgcHJvYyAqcDsNCn07
DQoNCnZvcF9hY2xjaGVjayBhbGxvd3MgdGhlIGNhbGxlciB0byB2ZXJpZnkg
dGhlIHZhbGlkaXR5IG9mIGFuIEFDTCAoYWNscCkNCm9mIHR5cGUgKHR5cGUp
IGZvciBhIHNwZWNpZmljIHZub2RlICh2cCkuICBUaGlzIHNob3VsZCB1c3Vh
bGx5IGJlIGFuDQppbmRpY2F0b3Igb2Ygd2hldGhlciBvciBub3QgdGhlIFZG
UyBsYXllciB3b3VsZCByZXR1cm4gRUlOVkFMIGZvciBhDQpzaW1pbGFyIGNh
bGwgdG8gdm9wX3NldGFjbCwgYW5kIGFsbG93cyB1c2VybGFuZCBwcm9jZXNz
ZXMgdG8gY2hlY2sgQUNMDQp2YWxpZGl0eSBmb3IgYSBwYXJ0aWN1bGFyIHRh
cmdldC4gIFRvIGF1dGhvcml6ZSB0aGlzIGNhbGwsIGEgY3JlZGVudGlhbA0K
c3RydWN0dXJlIGlzIHByb3ZpZGVkIChjcmVkKSwgYXMgd2VsbCBhcyBhIHBy
b2Nlc3MgZm9yIGhhbmRsaW5nIHNjaGVkdWxpbmcNCmFuZCBsb2NrcyAocCku
ICBBIG51bGwgY3JlZGVudGlhbCBwb2ludGVyIG1heSBiZSBwYXNzZWQgaW4g
dG8gaW5kaWNhdGUNCnRoYXQgdGhlIGtlcm5lbCwgYW5kIG5vdCBhIHNwZWNp
ZmljIHByb2Nlc3MsIGlzIG1ha2luZyB0aGlzIHJlcXVlc3QuDQoNClplcm8g
aXMgcmV0dXJuZWQgb24gc3VjY2Vzcywgb3RoZXJ3aXNlIGFuIGVycm5vIHZh
bHVlIHRvIHJlZmxlY3QgdGhlDQpmYWlsdXJlLg0KDQpObyBsb2NrcyBtdXN0
IGJlIGhlbGQgdG8gbWFrZSB0aGlzIFZPUF8gY2FsbC4NCg0KVGhpcyBjYWxs
IG1heSBmYWlsIGluIGEgbnVtYmVyIG9mIHdheXMsIGluY2x1ZGluZyBhbGwg
ZmFpbHVyZSBtb2RlcyBvZg0Kdm9wX2dldGFjbC4NCg0KDQpWRlMgSW50ZXJm
YWNlcw0KDQpUaGVyZSBhcmUgbm8gVkZTIGludGVyZmFjZXMgcmVsYXRpbmcg
dG8gQUNMcyBjdXJyZW50bHkgZGVmaW5lZC4NCg0KDQpTeXNjYWxscw0KDQpF
YWNoIHZub2RlIGNhbGwgaXMgZXhwb3NlZCB2aWEgYSBudW1iZXIgb2Ygc3lz
Y2FsbHM6DQoNCmludCAgICAgYWNsX3N5c2NhbGxfZ2V0X2ZpbGUoY2hhciAq
cGF0aCwgYWNsX3R5cGVfdCB0eXBlLCBzdHJ1Y3QgYWNsICphY2xwKTsNCmlu
dCAgICAgYWNsX3N5c2NhbGxfc2V0X2ZpbGUoY2hhciAqcGF0aCwgYWNsX3R5
cGVfdCB0eXBlLCBzdHJ1Y3QgYWNsICphY2xwKTsNCmludCAgICAgYWNsX3N5
c2NhbGxfZ2V0X2ZkKGludCBmaWxlZGVzLCBhY2xfdHlwZV90IHR5cGUsIHN0
cnVjdCBhY2wgKmFjbHApOw0KaW50ICAgICBhY2xfc3lzY2FsbF9zZXRfZmQo
aW50IGZpbGVkZXMsIGFjbF90eXBlX3QgdHlwZSwgc3RydWN0IGFjbCAqYWNs
cCk7DQppbnQgICAgIGFjbF9zeXNjYWxsX2RlbGV0ZV9kZWZfZmlsZShjb25z
dCBjaGFyICpwYXRoX3ApOw0KaW50ICAgICBhY2xfc3lzY2FsbF9kZWxldGVf
ZGVmX2ZkKGludCBmaWxlZGVzKTsNCmludCAgICAgYWNsX3N5c2NhbGxfYWNs
Y2hlY2tfZmlsZShjaGFyICpwYXRoLCBhY2xfdHlwZV90IHR5cGUsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFjbCAqYWNs
cCk7DQppbnQgICAgIGFjbF9zeXNjYWxsX2FjbGNoZWNrX2ZkKGludCBmaWxl
ZGVzLCBhY2xfdHlwZV90IHR5cGUsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBhY2wgKmFjbHApOw0KDQpUaGVzZSBhcmUgdGhl
IHN5c2NhbGxzIG5lY2Vzc2FyeSB0byBwcm92aWRlIHRoZSBQT1NJWC4xZSBB
Q0wgbWFuaXB1bGF0aW9uDQpmdW5jdGlvbnMuICBJbiBzb21lIGNhc2VzLCBh
IGJyb2RlciByYW5nZSBvZiBmdW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJsZSB0
aGFuDQpyZXF1aXJlZCBmb3IgUE9TSVguMWUuDQoNCg==
--0-2036405370-945287061=:22637
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="acl.h"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.3.96.991215143115.22637E@fledge.watson.org>
Content-Description: 

LyotDQogKiBDb3B5cmlnaHQgKGMpIDE5OTkgUm9iZXJ0IE4uIE0uIFdhdHNv
bg0KICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqDQogKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQNCiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KICogYXJl
IG1ldDoNCiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQogKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuDQogKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4NCiAqDQogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EDQog
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCiAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFDQogKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RQ0KICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwNCiAqIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTDQogKiBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikNCiAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUDQogKiBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZDQogKiBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GDQogKiBTVUNIIERBTUFHRS4NCiAqDQogKgkkSWQgJA0K
ICovDQovKiANCiAqIFVzZXJsYW5kL2tlcm5lbCBpbnRlcmZhY2UgZm9yIEFj
Y2VzcyBDb250cm9sIExpc3RzDQogKi8NCg0KI2lmbmRlZiBfU1lTX0FDTF9I
DQojZGVmaW5lIF9TWVNfQUNMX0gNCg0KLyoNCiAqIFBPU0lYLjFlIEFDTCB0
eXBlcw0KICovDQoNCiNkZWZpbmUgTUFYX0FDTF9FTlRSSUVTIDMyICAgIC8q
IG1heGltdW0gZW50cmllcyBpbiBhbiBBQ0wgKi8NCiNkZWZpbmUgX1BPU0lY
X0FDTF9QQVRIX01BWCAgICAgTUFYX0FDTF9FTlRSSUVTDQoNCnR5cGVkZWYg
aW50CWFjbF90eXBlX3Q7DQp0eXBlZGVmIGludAlhY2xfdGFnX3Q7DQp0eXBl
ZGVmIG1vZGVfdAlhY2xfcGVybV90Ow0KDQpzdHJ1Y3QgYWNsX2VudHJ5IHsN
CglhY2xfdGFnX3QJYWVfdGFnOw0KCXVpZF90CWFlX2lkOw0KCWFjbF9wZXJt
X3QJYWVfcGVybTsNCn07DQp0eXBlZGVmIHN0cnVjdCBhY2xfZW50cnkJKmFj
bF9lbnRyeV90Ow0KDQpzdHJ1Y3QgYWNsIHsNCglpbnQJYWNsX2NudDsNCglz
dHJ1Y3QgYWNsX2VudHJ5CWFjbF9lbnRyeVtNQVhfQUNMX0VOVFJJRVNdOw0K
fTsNCnR5cGVkZWYgc3RydWN0IGFjbAkqYWNsX3Q7DQoNCi8qDQogKiBQb3Nz
aWJsZSB2YWxpZCB2YWx1ZXMgZm9yIGFfdHlwZSBvZiBhY2xfZW50cnlfdA0K
ICovDQojZGVmaW5lIEFDTF9VU0VSX09CSgkweDAwMDAwMDAxDQojZGVmaW5l
IEFDTF9VU0VSCTB4MDAwMDAwMDINCiNkZWZpbmUgQUNMX0dST1VQX09CSgkw
eDAwMDAwMDA0DQojZGVmaW5lIEFDTF9HUk9VUAkweDAwMDAwMDA4DQojZGVm
aW5lIEFDTF9NQVNLCTB4MDAwMDAwMTANCiNkZWZpbmUgQUNMX09USEVSCTB4
MDAwMDAwMjANCiNkZWZpbmUgQUNMX09USEVSX09CSglBQ0xfT1RIRVINCiNk
ZWZpbmUgQUNMX0FGU19JRAkweDAwMDAwMDQwDQoNCiNkZWZpbmUgQUNMX1RZ
UEVfQUNDRVNTCQkweDAwMDAwMDAwDQojZGVmaW5lIEFDTF9UWVBFX0RFRkFV
TFQJMHgwMDAwMDAwMQ0KDQovKg0KICogUG9zc2libGUgZmxhZ3MgaW4gYV9w
ZXJtIGZpZWxkDQogKi8NCiNkZWZpbmUgQUNMX1BFUk1fRVhFQwkJMHgwMDAx
DQojZGVmaW5lIEFDTF9QRVJNX1dSSVRFCQkweDAwMDINCiNkZWZpbmUgQUNM
X1BFUk1fUkVBRAkJMHgwMDA0DQojZGVmaW5lIEFDTF9QRVJNX05PTkUJCTB4
MDAwMA0KI2RlZmluZSBBQ0xfUEVSTV9CSVRTCQkoQUNMX1BFUk1fRVhFQyB8
IEFDTF9QRVJNX1dSSVRFIHwgQUNMX1BFUk1fUkVBRCkNCiNkZWZpbmUgQUNM
X1BPU0lYMUVfQklUUwkoQUNMX1BFUk1fRVhFQyB8IEFDTF9QRVJNX1dSSVRF
IHwgQUNMX1BFUk1fUkVBRCkNCg0KI2lmZGVmIEtFUk5FTA0KDQovKg0KICog
U3RvcmFnZSBmb3IgQUNMcyBhbmQgc3VwcG9ydCBzdHJ1Y3R1cmVzDQogKi8N
CiNpZmRlZiBNQUxMT0NfREVDTEFSRQ0KTUFMTE9DX0RFQ0xBUkUoTV9BQ0wp
Ow0KI2VuZGlmDQoNCg0KLyoNCiAqIER1bW15IGRlY2xhcmF0aW9ucyBzbyB0
aGF0IHdlIGNhbiBleHBvc2UgYWNsX2FjY2VzcyBhbGwgb3ZlciB0aGUgcGxh
Y2UNCiAqIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgaW5jbHVkaW5nIHVjcmVk
IGFuZCBmcmllbmRzLiAgdm5vZGUuaCBkb2VzIHRoZQ0KICogc2FtZSB0aGlu
Zy4NCiAqLw0Kc3RydWN0IHVjcmVkOw0Kc3RydWN0IHByb2M7DQoNCg0KLyoN
CiAqIEZ1bmN0aW9ucyBleHBvc2VkIHRvIHRoZSByZXN0IG9mIHRoZSBrZXJu
ZWwvdmZzDQogKi8NCmludAlwb3NpeDFlX2FjbF9hY2Nlc3Moc3RydWN0IGFj
bCAqYV9hY2wsIGludCBhX21vZGUsIHN0cnVjdCB1Y3JlZCAqYV9jcmVkLA0K
CQkJICAgc3RydWN0IHByb2MgKmFfcCk7DQoNCi8qIA0KICogQ3VycmVudGx5
IGRpc2FibGVkIGR1ZSB0byBjeWNsaWMgaW5jbHVkZSBhY2wuaCByZXF1aXJl
cyB2bm9kZSwgYW5kIHZpY2UNCiAqIHZlcnNhPw0KICogI2lmZGVmIF9TWVNf
Vk5PREUuSA0KICogWFhYIHRoaXMgcHJldmVudHMgd2FybmluZ3MgaGl0aGVy
IGFuZCB0aGl0aGVyLCBidXQgcHJvYmFibHkgaXNuJ3QgYSBnb29kDQogKiBp
ZGVhLiAgSXQncyBzdXJwcmlzaW5nIGhvdyBtYW55IEZTIHNvdXJjZSBmaWxl
cyBkb24ndCBpbmNsdWRlIHZub2RlLmgsDQogKiB5ZXQgZG8gaW5jbHVkZSBv
dGhlciBjb2RlIGZvciBGUyBzdXBwb3J0Lg0KICovDQpzdHJ1Y3QgdmF0dHI7
DQpzdHJ1Y3Qgdm9wX2dldGFjbF9hcmdzOw0Kc3RydWN0IHZvcF9hY2xjaGVj
a19hcmdzOw0Kdm9pZAlnZW5lcmljX2F0dHJfdG9fcG9zaXgxZV9hY2woc3Ry
dWN0IGFjbCAqYV9hY2wsIHN0cnVjdCB2YXR0ciAqdmF0dHIpOw0KaW50CWdl
bmVyaWNfdm9wX2dldGFjbChzdHJ1Y3Qgdm9wX2dldGFjbF9hcmdzICphcCk7
DQppbnQJZ2VuZXJpY192b3BfYWNsY2hlY2soc3RydWN0IHZvcF9hY2xjaGVj
a19hcmdzICphcCk7DQppbnQJcG9zaXgxZV92b3BfYWNsY2hlY2soc3RydWN0
IHZvcF9hY2xjaGVja19hcmdzICphcCk7DQoNCg0KI2Vsc2UgLyogS0VSTkVM
ICovDQoNCi8qDQogKiBTeXNjYWxsIGludGVyZmFjZSAtLSB1c2UgdGhlIGxp
YnJhcnkgY2FsbHMgaW5zdGVhZCBhcyB0aGUgc3lzY2FsbHMNCiAqIGhhdmUg
c3RyaWN0IGFjbCBlbnRyeSBvcmRlcmluZyByZXF1aXJlbWVudHMNCiAqLw0K
aW50CWFjbF9zeXNjYWxsX2dldF9maWxlKGNoYXIgKnBhdGgsIGFjbF90eXBl
X3QgdHlwZSwgc3RydWN0IGFjbCAqYWNscCk7DQppbnQJYWNsX3N5c2NhbGxf
c2V0X2ZpbGUoY2hhciAqcGF0aCwgYWNsX3R5cGVfdCB0eXBlLCBzdHJ1Y3Qg
YWNsICphY2xwKTsNCmludAlhY2xfc3lzY2FsbF9nZXRfZmQoaW50IGZpbGVk
ZXMsIGFjbF90eXBlX3QgdHlwZSwgc3RydWN0IGFjbCAqYWNscCk7DQppbnQJ
YWNsX3N5c2NhbGxfc2V0X2ZkKGludCBmaWxlZGVzLCBhY2xfdHlwZV90IHR5
cGUsIHN0cnVjdCBhY2wgKmFjbHApOw0KaW50CWFjbF9zeXNjYWxsX2RlbGV0
ZV9kZWZfZmlsZShjb25zdCBjaGFyICpwYXRoX3ApOw0KaW50CWFjbF9zeXNj
YWxsX2RlbGV0ZV9kZWZfZmQoaW50IGZpbGVkZXMpOw0KaW50CWFjbF9zeXNj
YWxsX2FjbGNoZWNrX2ZpbGUoY2hhciAqcGF0aCwgYWNsX3R5cGVfdCB0eXBl
LA0KCQkJCSAgc3RydWN0IGFjbCAqYWNscCk7DQppbnQJYWNsX3N5c2NhbGxf
YWNsY2hlY2tfZmQoaW50IGZpbGVkZXMsIGFjbF90eXBlX3QgdHlwZSwNCgkJ
CQlzdHJ1Y3QgYWNsICphY2xwKTsNCg0KDQovKg0KICogU3VwcG9ydGVkIFBP
U0lYLjFlIEFDTCBtYW5pcHVsYXRpb24gYW5kIGFzc2lnbm1lbnQvcmV0cmll
dmFsIEFQSQ0KICovDQppbnQJYWNsX2NhbGNfbWFzayhhY2xfdCAqYWNsX3Ap
Ow0KaW50CWFjbF9kZWxldGVfZGVmX2ZpbGUoY29uc3QgY2hhciAqcGF0aF9w
KTsNCmludAlhY2xfZGVsZXRlX2RlZl9mZChpbnQgZmlsZWRlcyk7DQphY2xf
dAlhY2xfZnJvbV90ZXh0KGNvbnN0IGNoYXIgKmJ1Zl9wKTsNCmFjbF90CWFj
bF9nZXRfZmQoaW50IGZkLCBhY2xfdHlwZV90IHR5cGUpOw0KYWNsX3QJYWNs
X2dldF9maWxlKGNvbnN0IGNoYXIgKnBhdGhfcCwgYWNsX3R5cGVfdCB0eXBl
KTsNCmFjbF90CWFjbF9pbml0KGludCBjb3VudCk7DQppbnQJYWNsX3NldF9m
ZChpbnQgZmQsIGFjbF90IGFjbCwgYWNsX3R5cGVfdCB0eXBlKTsNCmludAlh
Y2xfc2V0X2ZpbGUoY29uc3QgY2hhciAqcGF0aF9wLCBhY2xfdHlwZV90IHR5
cGUsIGFjbF90IGFjbCk7DQpjaGFyCSphY2xfdG9fdGV4dChhY2xfdCBhY2ws
IHNzaXplX3QgKmxlbl9wKTsNCmludAlhY2xfdmFsaWQoYWNsX3QgYWNsKTsN
CmludAlhY2xfdmFsaWRfZmlsZShjb25zdCBjaGFyICpwYXRoX3AsIGFjbF90
eXBlX3QgdHlwZSwgYWNsX3QgYWNsKTsNCmludAlhY2xfdmFsaWRfZmQoaW50
IGZkLCBhY2xfdHlwZV90IHR5cGUsIGFjbF90IGFjbCk7DQppbnQJYWNsX2Zy
ZWUodm9pZCAqb2JqX3ApOw0KDQoNCiNlbmRpZiAvKiBLRVJORUwgKi8NCiNl
bmRpZiAvKiBfU1lTX0FDTF9IICovDQo=
--0-2036405370-945287061=:22637--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-fs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.96.991215143741.22637F-500000>