Re: [PATCH 2/2] ccanlint: Move ccanlint test options from _info comments to code

Rusty Russell <[email protected]> Tue, 27 Dec 2016 14:05:07 +1030
Newsgroups org.ozlabs.lists.ccan
Message-ID <[email protected]>
RGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+IHdyaXRlczoKPiBDdXJy
ZW50bHksIF9pbmZvIGZpbGVzIGNhbiBzcGVjaWZ5IG9wdGlvbnMsIG9yIG5vdGUgZXhwZWN0ZWQg
ZmFpbHVyZXMsIGZvcgo+IGNjYW5saW50IGNoZWNrcyBpbiB0aGUgX2luZm8gZmlsZSB3aXRoIHNw
ZWNpYWxseSBzdHJ1Y3R1cmVkIGNvbW1lbnRzLiBUaGF0Cj4gZGlmZmVycyBmcm9tIG1vc3Qgb3Ro
ZXIgdGhpbmdzIGNjYW5saW50IGdldHMgZnJvbSBfaW5mbywgd2hlcmUgaXQgaW5zdGVhZAo+IGV4
ZWN1dGVzIHRoZSBpbmZvIGZpbGUgd2l0aCBjZXJ0YWluIHBhcmFtZXRlcnMuCj4KPiBUaGlzIGNo
YW5nZXMgY2NhbmxpbnQgYW5kIGV4aXN0aW5nIF9pbmZvIGZpbGVzIHRvIHVzZSB0aGUgbm9ybWFs
IG1ldGhvZCBmb3IKPiB0aGUgY2NhbmxpbnQgdGVzdCBvcHRpb25zIGFzIHdlbGwuICBUaGlzIGFs
c28gaGFzIHRoZSBhZHZhbnRhZ2UgdGhhdCBhbgo+IGluZm8gZmlsZSBjYW4gYWx0ZXIgaXRzIHRl
c3Qgb3B0aW9ucyBiYXNlZCBvbiB0aGluZ3MgZnJvbSBjb25maWcuaCAtIGluCj4gc29tZSBjYXNl
cyB3aGV0aGVyIGEgdGVzdCBjYW4gd29yayBvciBub3QgbWlnaHQgZGVwZW5kIG9uIHZhcmlvdXMg
dGhpbmdzLgoKQWdyZWVkLCBwbGVhc2UgYXBwbHkhCgpDaGVlcnMsClJ1c3R5LgoKPiBTaWduZWQt
b2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KPiAtLS0K
PiAgY2Nhbi9ibG9ja19wb29sL19pbmZvICAgICAgICAgICAgICB8ICA5ICsrKy0tCj4gIGNjYW4v
Y2Nhbl90b2tlbml6ZXIvX2luZm8gICAgICAgICAgfCAxNCArKysrLS0tLQo+ICBjY2FuL2Nvcm91
dGluZS9faW5mbyAgICAgICAgICAgICAgIHwgMTAgKysrLS0tCj4gIGNjYW4vY3Jjc3luYy9faW5m
byAgICAgICAgICAgICAgICAgfCAgOCArKystLQo+ICBjY2FuL2RlcXVlL19pbmZvICAgICAgICAg
ICAgICAgICAgIHwgMTQgKysrKy0tLS0KPiAgY2Nhbi9nZW5lcmF0b3IvX2luZm8gICAgICAgICAg
ICAgICB8IDE0ICsrKystLS0tCj4gIGNjYW4vbWlubWF4L19pbmZvICAgICAgICAgICAgICAgICAg
fCAxMCArKystLS0KPiAgY2Nhbi9yc3pzaG0vX2luZm8gICAgICAgICAgICAgICAgICB8IDEyICsr
KystLS0KPiAgY2Nhbi9zdHJpbmdtYXAvX2luZm8gICAgICAgICAgICAgICB8ICA5ICsrKy0tCj4g
IHRvb2xzL2NjYW5saW50L2NjYW5saW50LmMgICAgICAgICAgfCA3MSArKysrKysrKysrKysrKysr
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICB0b29scy9jY2FubGludC9jY2FubGludC5oICAgICAg
ICAgIHwgIDIgKy0KPiAgdG9vbHMvY2NhbmxpbnQvdGVzdHMvaW5mb19leGlzdHMuYyB8ICAyICst
Cj4gIHRvb2xzL2RlcGVuZHMuYyAgICAgICAgICAgICAgICAgICAgfCAxOCArKysrKysrKysrCj4g
IHRvb2xzL3Rvb2xzLmggICAgICAgICAgICAgICAgICAgICAgfCAgMyArKwo+ICAxNCBmaWxlcyBj
aGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgODEgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0
IGEvY2Nhbi9ibG9ja19wb29sL19pbmZvIGIvY2Nhbi9ibG9ja19wb29sL19pbmZvCj4gaW5kZXgg
YTQyY2RiYS4uZTIxNjk3NiAxMDA2NDQKPiAtLS0gYS9jY2FuL2Jsb2NrX3Bvb2wvX2luZm8KPiAr
KysgYi9jY2FuL2Jsb2NrX3Bvb2wvX2luZm8KPiBAQCAtMzgsOSArMzgsNiBAQAo+ICAgKiBBdXRo
b3I6IEpvZXkgQWRhbXMgPGpvZXlhZGFtczMuMTQxNTlAZ21haWwuY29tPgo+ICAgKiBMaWNlbnNl
OiBNSVQKPiAgICogVmVyc2lvbjogMC4xCj4gLSAqIENjYW5saW50Ogo+IC0gKgkvLyBXZSBhY3R1
YWxseSBkZXBlbmQgb24gdGhlIExHUEwgdGFsbG9jCj4gLSAqCWxpY2Vuc2VfZGVwZW5kc19jb21w
YXQgRkFJTAo+ICAgKi8KPiAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiAgewo+
IEBAIC01Myw1ICs1MCwxMSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQo+ICAJ
CXJldHVybiAwOwo+ICAJfQo+ICAKPiArCWlmIChzdHJjbXAoYXJndlsxXSwgImNjYW5saW50Iikg
PT0gMCkgewo+ICsJCS8qIFdlIGFjdHVhbGx5IGRlcGVuZCBvbiB0aGUgTEdQTCB0YWxsb2MgKi8K
PiArCQlwcmludGYoImxpY2Vuc2VfZGVwZW5kc19jb21wYXQgRkFJTFxuIik7Cj4gKwkJcmV0dXJu
IDA7Cj4gKwl9Cj4gKwo+ICAJcmV0dXJuIDE7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvY2Nhbi9jY2Fu
X3Rva2VuaXplci9faW5mbyBiL2NjYW4vY2Nhbl90b2tlbml6ZXIvX2luZm8KPiBpbmRleCBlZTE0
NzdhLi5mNTExNmI0IDEwMDY0NAo+IC0tLSBhL2NjYW4vY2Nhbl90b2tlbml6ZXIvX2luZm8KPiAr
KysgYi9jY2FuL2NjYW5fdG9rZW5pemVyL19pbmZvCj4gQEAgLTgyLDEyICs4Miw2IEBACj4gICAq
IH0KPiAgICoKPiAgICogTGljZW5zZTogQlNEICgzIGNsYXVzZSkKPiAtICoKPiAtICogQ2Nhbmxp
bnQ6Cj4gLSAqCS8vIFdlIGFjdHVhbGx5IGRlcGVuZCBvbiB0aGUgTEdQTCBkZXBlbmRlbmNpZXMK
PiAtICoJbGljZW5zZV9kZXBlbmRzX2NvbXBhdCBGQUlMCj4gLSAqCS8vIFdlIGRvbid0IHB1dCB0
aGUgbGljZW5zZSBsaW5lIGluIGFsbCBmaWxlcy4KPiAtICoJbGljZW5zZV9jb21tZW50IEZBSUwK
PiAgICovCj4gIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIHsKPiBAQCAtMTAx
LDUgKzk1LDEzIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIAkJcmV0dXJu
IDA7Cj4gIAl9Cj4gIAo+ICsJaWYgKHN0cmNtcChhcmd2WzFdLCAiY2NhbmxpbnQiKSA9PSAwKSB7
Cj4gKwkJLyogV2UgYWN0dWFsbHkgZGVwZW5kIG9uIHRoZSBMR1BMIGRlcGVuZGVuY2llcyAqLwo+
ICsJCXByaW50ZigibGljZW5zZV9kZXBlbmRzX2NvbXBhdCBGQUlMXG4iKTsKPiArCQkvKiBXZSBk
b24ndCBwdXQgdGhlIGxpY2Vuc2UgbGluZSBpbiBhbGwgZmlsZXMuICovCj4gKwkJcHJpbnRmKCJs
aWNlbnNlX2NvbW1lbnQgRkFJTFxuIik7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICAJcmV0
dXJuIDE7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvY2Nhbi9jb3JvdXRpbmUvX2luZm8gYi9jY2FuL2Nv
cm91dGluZS9faW5mbwo+IGluZGV4IGE5OTYyOWMuLjA3ZTRiOTYgMTAwNjQ0Cj4gLS0tIGEvY2Nh
bi9jb3JvdXRpbmUvX2luZm8KPiArKysgYi9jY2FuL2Nvcm91dGluZS9faW5mbwo+IEBAIC0xNCwx
MCArMTQsNiBAQAo+ICAgKgo+ICAgKiBBdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29u
LmRyb3BiZWFyLmlkLmF1Pgo+ICAgKiBMaWNlbnNlOiBMR1BMICh2Mi4xIG9yIGFueSBsYXRlciB2
ZXJzaW9uKQo+IC0gKgo+IC0gKiBDY2FubGludDoKPiAtICoJLy8gQ29udGV4dCBzd2l0Y2hpbmcg
cmVhbGx5IGNvbmZ1c2VzIHZhbGdyaW5kCj4gLSAqCXRlc3RzX3Bhc3NfdmFsZ3JpbmQgRkFJTAo+
ICAgKi8KPiAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiAgewo+IEBAIC00MCw1
ICszNiwxMSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQo+ICAJCXJldHVybiAw
Owo+ICAJfQo+ICAKPiArCWlmIChzdHJjbXAoYXJndlsxXSwgImNjYW5saW50IikgPT0gMCkgewo+
ICsJCS8qIENvbnRleHQgc3dpdGNoaW5nIHJlYWxseSBjb25mdXNlcyB2YWxncmluZCAqLwo+ICsJ
CXByaW50ZigidGVzdHNfcGFzc192YWxncmluZCBGQUlMXG4iKTsKPiArCQlyZXR1cm4gMDsKPiAr
CX0KPiArCj4gIAlyZXR1cm4gMTsKPiAgfQo+IGRpZmYgLS1naXQgYS9jY2FuL2NyY3N5bmMvX2lu
Zm8gYi9jY2FuL2NyY3N5bmMvX2luZm8KPiBpbmRleCA5ZWJiOGJkLi43NTE2ZjQ0IDEwMDY0NAo+
IC0tLSBhL2NjYW4vY3Jjc3luYy9faW5mbwo+ICsrKyBiL2NjYW4vY3Jjc3luYy9faW5mbwo+IEBA
IC03MSw5ICs3MSw2IEBACj4gICAqCj4gICAqIExpY2Vuc2U6IExHUEwgKHYyLjEgb3IgYW55IGxh
dGVyIHZlcnNpb24pCj4gICAqIEF1dGhvcjogUnVzdHkgUnVzc2VsbCA8cnVzdHlAcnVzdGNvcnAu
Y29tLmF1Pgo+IC0gKiBDY2FubGludDoKPiAtICoJLy8gV2UgYWN0dWFsbHkgZGVwZW5kIG9uIHRo
ZSBHUEwgY3JjIHJvdXRpbmVzLCBzbyBub3QgcmVhbGx5IExHUEwgOigKPiAtICoJbGljZW5zZV9k
ZXBlbmRzX2NvbXBhdCBGQUlMCj4gICAqLwo+ICBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn
dltdKQo+ICB7Cj4gQEAgLTg4LDYgKzg1LDExIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICph
cmd2W10pCj4gIAkJcHJpbnRmKCJjY2FuL2FycmF5X3NpemVcbiIpOwo+ICAJCXJldHVybiAwOwo+
ICAJfQo+ICsJaWYgKHN0cmNtcChhcmd2WzFdLCAiY2NhbmxpbnQiKSA9PSAwKSB7Cj4gKwkJLyog
V2UgYWN0dWFsbHkgZGVwZW5kIG9uIHRoZSBHUEwgY3JjIHJvdXRpbmVzLCBzbyBub3QgcmVhbGx5
IExHUEwgOiggKi8KPiArCQlwcmludGYoImxpY2Vuc2VfZGVwZW5kc19jb21wYXQgRkFJTFxuIik7
Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gIAo+ICAJcmV0dXJuIDE7Cj4gIH0KPiBkaWZmIC0tZ2l0
IGEvY2Nhbi9kZXF1ZS9faW5mbyBiL2NjYW4vZGVxdWUvX2luZm8KPiBpbmRleCA2MzY4N2I3Li4x
YzU0NjBmIDEwMDY0NAo+IC0tLSBhL2NjYW4vZGVxdWUvX2luZm8KPiArKysgYi9jY2FuL2RlcXVl
L19pbmZvCj4gQEAgLTEyMiwxMiArMTIyLDYgQEAKPiAgICoKPiAgICogTGljZW5zZTogQVBBQ0hF
LTIKPiAgICogQXV0aG9yOiBEYW4gR29vZCA8ZGFuQGRhbmNhbmNvZGUuY29tPgo+IC0gKgo+IC0g
KiBDY2FubGludDoKPiAtICoJLy8gdXNlcyBzdGF0ZW1lbnQgZXhwcmVzc2lvbnMKPiAtICoJLy8g
c3VwcG9ydGVkIGJ5IGdjYywgY2xhbmcsIGljYywgYW5kIHNvbWUgb3RoZXJzLCBidXQgbm90IG1z
dmMKPiAtICoJLy8gKHNlZSBodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2NjL1N0YXRl
bWVudC1FeHBycy5odG1sKQo+IC0gKglvYmplY3RzX2J1aWxkX3dpdGhvdXRfZmVhdHVyZXMgRkFJ
TAo+ICAgKi8KPiAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiAgewo+IEBAIC0x
NDIsNSArMTM2LDEzIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIAkJcmV0
dXJuIDA7Cj4gIAl9Cj4gIAo+ICsJaWYgKHN0cmNtcChhcmd2WzFdLCAiY2NhbmxpbnQiKSA9PSAw
KSB7Cj4gKwkJLyogdXNlcyBzdGF0ZW1lbnQgZXhwcmVzc2lvbnMKPiArCQkgKiBzdXBwb3J0ZWQg
YnkgZ2NjLCBjbGFuZywgaWNjLCBhbmQgc29tZSBvdGhlcnMsIGJ1dCBub3QgbXN2Ywo+ICsJCSAq
IChzZWUgaHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy9TdGF0ZW1lbnQtRXhwcnMu
aHRtbCkgKi8KPiArCQlwcmludGYoIm9iamVjdHNfYnVpbGRfd2l0aG91dF9mZWF0dXJlcyBGQUlM
XG4iKTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArCj4gIAlyZXR1cm4gMTsKPiAgfQo+IGRpZmYg
LS1naXQgYS9jY2FuL2dlbmVyYXRvci9faW5mbyBiL2NjYW4vZ2VuZXJhdG9yL19pbmZvCj4gaW5k
ZXggZTQwZDdiYi4uYWE2MDQ4ZSAxMDA2NDQKPiAtLS0gYS9jY2FuL2dlbmVyYXRvci9faW5mbwo+
ICsrKyBiL2NjYW4vZ2VuZXJhdG9yL19pbmZvCj4gQEAgLTQzLDEyICs0Myw2IEBACj4gICAqCj4g
ICAqIEF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Cj4g
ICAqIExpY2Vuc2U6IExHUEwgKHYyLjEgb3IgYW55IGxhdGVyIHZlcnNpb24pCj4gLSAqCj4gLSAq
IENjYW5saW50Ogo+IC0gKiAgICAgIC8vIFdlIG5lZWQgc2V2ZXJhbCBnY2MgZXh0ZW5zaW9ucwo+
IC0gKglvYmplY3RzX2J1aWxkX3dpdGhvdXRfZmVhdHVyZXMgRkFJTAo+IC0gKiAgICAgIHRlc3Rz
X2NvbXBpbGVfd2l0aG91dF9mZWF0dXJlcyBGQUlMCj4gLSAqCXRlc3RzX2hlbHBlcnNfY29tcGls
ZV93aXRob3V0X2ZlYXR1cmVzIEZBSUwKPiAgICovCj4gIGludCBtYWluKGludCBhcmdjLCBjaGFy
ICphcmd2W10pCj4gIHsKPiBAQCAtNzgsNSArNzIsMTMgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIgKmFyZ3ZbXSkKPiAgCQlyZXR1cm4gMDsKPiAgCX0KPiAgCj4gKwlpZiAoc3RyY21wKGFyZ3Zb
MV0sICJjY2FubGludCIpID09IDApIHsKPiArCQkvKiBXZSBuZWVkIHNldmVyYWwgZ2NjIGV4dGVu
c2lvbnMgKi8KPiArCQlwcmludGYoIm9iamVjdHNfYnVpbGRfd2l0aG91dF9mZWF0dXJlcyBGQUlM
XG4iKTsKPiArCQlwcmludGYoInRlc3RzX2NvbXBpbGVfd2l0aG91dF9mZWF0dXJlcyBGQUlMXG4i
KTsKPiArCQlwcmludGYoInRlc3RzX2hlbHBlcnNfY29tcGlsZV93aXRob3V0X2ZlYXR1cmVzIEZB
SUxcbiIpOwo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICsKPiAgCXJldHVybiAxOwo+ICB9Cj4gZGlm
ZiAtLWdpdCBhL2NjYW4vbWlubWF4L19pbmZvIGIvY2Nhbi9taW5tYXgvX2luZm8KPiBpbmRleCA0
ZDk1MzM2Li4yZjY0MzdlIDEwMDY0NAo+IC0tLSBhL2NjYW4vbWlubWF4L19pbmZvCj4gKysrIGIv
Y2Nhbi9taW5tYXgvX2luZm8KPiBAQCAtMjYsMTAgKzI2LDYgQEAKPiAgICoKPiAgICogQXV0aG9y
OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KPiAgICogTGljZW5z
ZTogIENDMCAoUHVibGljIGRvbWFpbikKPiAtICoKPiAtICogQ2NhbmxpbnQ6Cj4gLSAqICAgICAg
Ly8gV2UgbmVlZCBzZXZlcmFsIGdjYyBleHRlbnNpb25zCj4gLSAqICAgICAgdGVzdHNfY29tcGls
ZV93aXRob3V0X2ZlYXR1cmVzIEZBSUwKPiAgICovCj4gIGludCBtYWluKGludCBhcmdjLCBjaGFy
ICphcmd2W10pCj4gIHsKPiBAQCAtNDIsNSArMzgsMTEgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIgKmFyZ3ZbXSkKPiAgCQlyZXR1cm4gMDsKPiAgCX0KPiAgCj4gKwlpZiAoc3RyY21wKGFyZ3Zb
MV0sICJjY2FubGludCIpID09IDApIHsKPiArCQkvKiBXZSBuZWVkIHNldmVyYWwgZ2NjIGV4dGVu
c2lvbnMgKi8KPiArCQlwcmludGYoInRlc3RzX2NvbXBpbGVfd2l0aG91dF9mZWF0dXJlcyBGQUlM
XG4iKTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArCj4gIAlyZXR1cm4gMTsKPiAgfQo+IGRpZmYg
LS1naXQgYS9jY2FuL3JzenNobS9faW5mbyBiL2NjYW4vcnN6c2htL19pbmZvCj4gaW5kZXggY2M5
NTQwMC4uZTkxMjJlMCAxMDA2NDQKPiAtLS0gYS9jY2FuL3JzenNobS9faW5mbwo+ICsrKyBiL2Nj
YW4vcnN6c2htL19pbmZvCj4gQEAgLTc2LDEzICs3Niw4IEBACj4gICAqIAkvLyAkIHRhaWwgLWMg
KzI5IC9kZXYvc2htL3JzenNobV9MQXNFdnQvMCB8IHNlZCAncy8uLyZcbi9nJyB8IHNvcnQgfCB1
bmlxIC1jIHwgdHIgJ1xuJyAnXHQnOyBlY2hvCj4gICAqIAkvLyAgNTE1NTMyIEEgICA1MjcyNTEg
QiAgICA1MTI5MzAgQyAgICA1MTMwNjIgRCAgICA1NDQzMjYgRSAgICA1NDU4NzYgRiAgICA1MTI5
MzYgRyAgICA1MjIzNjMgSAo+ICAgKgo+IC0gKiBDY2FubGludDogdGVzdHNfcGFzc192YWxncmlu
ZCBGQUlMCj4gICAqIExpY2Vuc2U6IEFQQUNIRS0yCj4gICAqIEF1dGhvcjogRGFuIEdvb2QgPGRh
bkBkYW5jYW5jb2RlLmNvbT4KPiAtICoKPiAtICogQ2NhbmxpbnQ6Cj4gLSAqCS8vIHRlc3RzIHVz
ZSBvcHRpb25hbCBtYWNyb3MgY29udGFpbmluZyBzdGF0ZW1lbnQgZXhwcmVzc2lvbnMKPiAtICoJ
dGVzdHNfY29tcGlsZV93aXRob3V0X2ZlYXR1cmVzIEZBSUwKPiAgICovCj4gIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyICphcmd2W10pCj4gIHsKPiBAQCAtOTMsNSArODgsMTIgQEAgaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiAgCWlmIChzdHJjbXAoYXJndlsxXSwgImRlcGVuZHMi
KSA9PSAwKQo+ICAJCXJldHVybiAwOwo+ICAKPiArCWlmIChzdHJjbXAoYXJndlsxXSwgImNjYW5s
aW50IikgPT0gMCkgewo+ICsJCXByaW50ZigidGVzdHNfcGFzc192YWxncmluZCBGQUlMXG4iKTsK
PiArCQkvKiB0ZXN0cyB1c2Ugb3B0aW9uYWwgbWFjcm9zIGNvbnRhaW5pbmcgc3RhdGVtZW50IGV4
cHJlc3Npb25zICovCj4gKwkJcHJpbnRmKCJ0ZXN0c19jb21waWxlX3dpdGhvdXRfZmVhdHVyZXMg
RkFJTFxuIik7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICAJcmV0dXJuIDE7Cj4gIH0KPiBk
aWZmIC0tZ2l0IGEvY2Nhbi9zdHJpbmdtYXAvX2luZm8gYi9jY2FuL3N0cmluZ21hcC9faW5mbwo+
IGluZGV4IDFmNjQ2NWIuLmMwMWM1NzYgMTAwNjQ0Cj4gLS0tIGEvY2Nhbi9zdHJpbmdtYXAvX2lu
Zm8KPiArKysgYi9jY2FuL3N0cmluZ21hcC9faW5mbwo+IEBAIC01Miw5ICs1Miw2IEBACj4gICAq
IEF1dGhvcnM6IEpvZXkgQWRhbXMsIEFuZGVycyBNYWdudXNzb24KPiAgICogTGljZW5zZTogQlNE
ICgzIGNsYXVzZSkKPiAgICogVmVyc2lvbjogMC4yCj4gLSAqIENjYW5saW50Ogo+IC0gKgkvLyBX
ZSBhY3R1YWxseSBkZXBlbmQgKGluZGlyZWN0bHkpIG9uIHRoZSBMR1BMIHRhbGxvYwo+IC0gKgls
aWNlbnNlX2RlcGVuZHNfY29tcGF0IEZBSUwKPiAgICovCj4gIGludCBtYWluKGludCBhcmdjLCBj
aGFyICphcmd2W10pCj4gIHsKPiBAQCAtNjcsNSArNjQsMTEgQEAgaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIgKmFyZ3ZbXSkKPiAgCQlyZXR1cm4gMDsKPiAgCX0KPiAgCj4gKwlpZiAoc3RyY21wKGFy
Z3ZbMV0sICJjY2FubGludCIpID09IDApIHsKPiArCQkvKiBXZSBhY3R1YWxseSBkZXBlbmQgKGlu
ZGlyZWN0bHkpIG9uIHRoZSBMR1BMIHRhbGxvYyAqLwo+ICsJCXByaW50ZigibGljZW5zZV9kZXBl
bmRzX2NvbXBhdCBGQUlMXG4iKTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArCj4gIAlyZXR1cm4g
MTsKPiAgfQo+IGRpZmYgLS1naXQgYS90b29scy9jY2FubGludC9jY2FubGludC5jIGIvdG9vbHMv
Y2NhbmxpbnQvY2NhbmxpbnQuYwo+IGluZGV4IDBlZDk2OWMuLmYwNmYyMDAgMTAwNjQ0Cj4gLS0t
IGEvdG9vbHMvY2NhbmxpbnQvY2NhbmxpbnQuYwo+ICsrKyBiL3Rvb2xzL2NjYW5saW50L2NjYW5s
aW50LmMKPiBAQCAtNDU2LDUwICs0NTYsNDMgQEAgc3RhdGljIHZvaWQgYWRkX29wdGlvbnMoc3Ry
dWN0IGNjYW5saW50ICp0ZXN0LCBjaGFyICoqb3B0aW9ucywKPiAgCW1lbWNweSgmdGVzdC0+b3B0
aW9uc1tudW1dLCBvcHRpb25zLCAobnVtX29wdGlvbnMgKyAxKSpzaXplb2YoY2hhciAqKSk7Cj4g
IH0KPiAgCj4gLXZvaWQgYWRkX2luZm9fb3B0aW9ucyhzdHJ1Y3QgY2Nhbl9maWxlICppbmZvKQo+
ICt2b2lkIGFkZF9pbmZvX29wdGlvbnMoc3RydWN0IG1hbmlmZXN0ICptKQo+ICB7Cj4gLQlzdHJ1
Y3QgZG9jX3NlY3Rpb24gKmQ7Cj4gIAl1bnNpZ25lZCBpbnQgaTsKPiAtCXN0cnVjdCBjY2FubGlu
dCAqdGVzdDsKPiArCWNoYXIgKippbmZvX29wdGlvbnMgPSBnZXRfY2NhbmxpbnQobSwgbS0+ZGly
LCBnZXRfb3JfY29tcGlsZV9pbmZvKTsKPiAgCj4gLQlsaXN0X2Zvcl9lYWNoKGdldF9jY2FuX2Zp
bGVfZG9jcyhpbmZvKSwgZCwgbGlzdCkgewo+IC0JCWlmICghc3RyZXEoZC0+dHlwZSwgImNjYW5s
aW50IikpCj4gKwlmb3IgKGkgPSAwOyBpbmZvX29wdGlvbnNbaV07IGkrKykgewo+ICsJCWNoYXIg
Kip3b3JkcyA9IHRhbF9zdHJzcGxpdChtLCBpbmZvX29wdGlvbnNbaV0sICIgXHQiLAo+ICsJCQkJ
CSAgICBTVFJfTk9fRU1QVFkpOwo+ICsJCXN0cnVjdCBjY2FubGludCAqdGVzdDsKPiArCj4gKwkJ
aWYgKCF3b3Jkc1swXSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCXRlc3QgPSBmaW5kX3Rlc3Qo
d29yZHNbMF0pOwo+ICsJCWlmICghdGVzdCkgewo+ICsJCQl3YXJueCgiJXM6IHVua25vd24gY2Nh
bmxpbnQgdGVzdCAnJXMnIiwKPiArCQkJICAgICAgbS0+aW5mb19maWxlLT5mdWxsbmFtZSwgd29y
ZHNbMF0pOwo+ICAJCQljb250aW51ZTsKPiArCQl9Cj4gKwo+ICsJCWlmICghd29yZHNbMV0pIHsK
PiArCQkJd2FybngoIiVzOiBubyBhcmd1bWVudCB0byB0ZXN0ICclcyciLAo+ICsJCQkgICAgICBt
LT5pbmZvX2ZpbGUtPmZ1bGxuYW1lLCB3b3Jkc1swXSk7Cj4gKwkJCWNvbnRpbnVlOwo+ICsJCX0K
PiAgCj4gLQkJZm9yIChpID0gMDsgaSA8IGQtPm51bV9saW5lczsgaSsrKSB7Cj4gLQkJCWNoYXIg
Kip3b3JkcyA9IHRhbF9zdHJzcGxpdChkLCBkLT5saW5lc1tpXSwgIiBcdCIsCj4gLQkJCQkJCSAg
ICBTVFJfTk9fRU1QVFkpOwo+IC0JCQlpZiAoIXdvcmRzWzBdKQo+IC0JCQkJY29udGludWU7Cj4g
LQo+IC0JCQlpZiAoc3RybmNtcCh3b3Jkc1swXSwgIi8vIiwgMikgPT0gMCkKPiAtCQkJCWNvbnRp
bnVlOwo+IC0KPiAtCQkJdGVzdCA9IGZpbmRfdGVzdCh3b3Jkc1swXSk7Cj4gLQkJCWlmICghdGVz
dCkgewo+IC0JCQkJd2FybngoIiVzOiB1bmtub3duIGNjYW5saW50IHRlc3QgJyVzJyIsCj4gLQkJ
CQkgICAgICBpbmZvLT5mdWxsbmFtZSwgd29yZHNbMF0pOwo+IC0JCQkJY29udGludWU7Cj4gLQkJ
CX0KPiAtCj4gLQkJCWlmICghd29yZHNbMV0pIHsKPiAtCQkJCXdhcm54KCIlczogbm8gYXJndW1l
bnQgdG8gdGVzdCAnJXMnIiwKPiAtCQkJCSAgICAgIGluZm8tPmZ1bGxuYW1lLCB3b3Jkc1swXSk7
Cj4gLQkJCQljb250aW51ZTsKPiAtCQkJfQo+IC0KPiAtCQkJLyogS25vd24gZmFpbHVyZT8gKi8K
PiAtCQkJaWYgKHN0cmNhc2VjbXAod29yZHNbMV0sICJGQUlMIikgPT0gMCkgewo+IC0JCQkJaWYg
KCF0YXJnZXRpbmcpCj4gLQkJCQkJc2tpcF90ZXN0X2FuZF9kZXBzKHRlc3QsCj4gLQkJCQkJCQkg
ICAiZXhjbHVkZWQgaW4gX2luZm8iCj4gLQkJCQkJCQkgICAiIGZpbGUiKTsKPiAtCQkJfSBlbHNl
IHsKPiAtCQkJCWlmICghdGVzdC0+dGFrZXNfb3B0aW9ucykKPiAtCQkJCQl3YXJueCgiJXM6ICVz
IGRvZXNuJ3QgdGFrZSBvcHRpb25zIiwKPiAtCQkJCQkgICAgICBpbmZvLT5mdWxsbmFtZSwgd29y
ZHNbMF0pOwo+IC0JCQkJYWRkX29wdGlvbnModGVzdCwgd29yZHMrMSwgdGFsX2NvdW50KHdvcmRz
KS0xKTsKPiAtCQkJfQo+ICsJCS8qIEtub3duIGZhaWx1cmU/ICovCj4gKwkJaWYgKHN0cmNhc2Vj
bXAod29yZHNbMV0sICJGQUlMIikgPT0gMCkgewo+ICsJCQlpZiAoIXRhcmdldGluZykKPiArCQkJ
CXNraXBfdGVzdF9hbmRfZGVwcyh0ZXN0LAo+ICsJCQkJCQkgICAiZXhjbHVkZWQgaW4gX2luZm8i
Cj4gKwkJCQkJCSAgICIgZmlsZSIpOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCWlmICghdGVzdC0+dGFr
ZXNfb3B0aW9ucykKPiArCQkJCXdhcm54KCIlczogJXMgZG9lc24ndCB0YWtlIG9wdGlvbnMiLAo+
ICsJCQkJICAgICAgbS0+aW5mb19maWxlLT5mdWxsbmFtZSwgd29yZHNbMF0pOwo+ICsJCQlhZGRf
b3B0aW9ucyh0ZXN0LCB3b3JkcysxLCB0YWxfY291bnQod29yZHMpLTEpOwo+ICAJCX0KPiAgCX0K
PiAgfQo+IGRpZmYgLS1naXQgYS90b29scy9jY2FubGludC9jY2FubGludC5oIGIvdG9vbHMvY2Nh
bmxpbnQvY2NhbmxpbnQuaAo+IGluZGV4IDljYjg1OGYuLjdkZjk1MTAgMTAwNjQ0Cj4gLS0tIGEv
dG9vbHMvY2NhbmxpbnQvY2NhbmxpbnQuaAo+ICsrKyBiL3Rvb2xzL2NjYW5saW50L2NjYW5saW50
LmgKPiBAQCAtMTg2LDcgKzE4Niw3IEBAIHN0cnVjdCBkZXBlbmRlbnQgewo+ICBib29sIGlzX2V4
Y2x1ZGVkKGNvbnN0IGNoYXIgKm5hbWUpOwo+ICAKPiAgLyogQ2FsbGVkIHRvIGFkZCBvcHRpb25z
IGZyb20gX2luZm8sIG9uY2UgaXQncyBsb2NhdGVkLiAqLwo+IC12b2lkIGFkZF9pbmZvX29wdGlv
bnMoc3RydWN0IGNjYW5fZmlsZSAqaW5mbyk7Cj4gK3ZvaWQgYWRkX2luZm9fb3B0aW9ucyhzdHJ1
Y3QgbWFuaWZlc3QgKm0pOwo+ICAKPiAgLyogQXJlIHdlIGhhcHB5IHRvIGNvbXBpbGUgc3R1ZmYs
IG9yIGp1c3Qgbm9uLWludHJ1c2l2ZSB0ZXN0cz8gKi8KPiAgZXh0ZXJuIGJvb2wgc2FmZV9tb2Rl
Owo+IGRpZmYgLS1naXQgYS90b29scy9jY2FubGludC90ZXN0cy9pbmZvX2V4aXN0cy5jIGIvdG9v
bHMvY2NhbmxpbnQvdGVzdHMvaW5mb19leGlzdHMuYwo+IGluZGV4IDVlNDQ1OWIuLjhmMDE5NDYg
MTAwNjQ0Cj4gLS0tIGEvdG9vbHMvY2NhbmxpbnQvdGVzdHMvaW5mb19leGlzdHMuYwo+ICsrKyBi
L3Rvb2xzL2NjYW5saW50L3Rlc3RzL2luZm9fZXhpc3RzLmMKPiBAQCAtMjAsNyArMjAsNyBAQCBz
dGF0aWMgdm9pZCBjaGVja19oYXNfaW5mbyhzdHJ1Y3QgbWFuaWZlc3QgKm0sCj4gIAlpZiAobS0+
aW5mb19maWxlKSB7Cj4gIAkJc2NvcmUtPnBhc3MgPSB0cnVlOwo+ICAJCXNjb3JlLT5zY29yZSA9
IHNjb3JlLT50b3RhbDsKPiAtCQlhZGRfaW5mb19vcHRpb25zKG0tPmluZm9fZmlsZSk7Cj4gKwkJ
YWRkX2luZm9fb3B0aW9ucyhtKTsKPiAgCX0gZWxzZSB7Cj4gIAkJc2NvcmUtPmVycm9yID0gdGFs
X3N0cmR1cChzY29yZSwKPiAgCSJZb3UgaGF2ZSBubyBfaW5mbyBmaWxlLlxuXG4iCj4gZGlmZiAt
LWdpdCBhL3Rvb2xzL2RlcGVuZHMuYyBiL3Rvb2xzL2RlcGVuZHMuYwo+IGluZGV4IGYxZmYzMDku
Ljk1YmRhMWIgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvZGVwZW5kcy5jCj4gKysrIGIvdG9vbHMvZGVw
ZW5kcy5jCj4gQEAgLTI1Myw2ICsyNTMsMTIgQEAgc3RhdGljIGNoYXIgKipnZXRfb25lX2NmbGFn
cyhjb25zdCB2b2lkICpjdHgsIGNvbnN0IGNoYXIgKmRpciwKPiAgCXJldHVybiBnZXRfb25lX3By
b3AoY3R4LCBkaXIsICJjZmxhZ3MiLCBnZXRfaW5mbyk7Cj4gIH0KPiAgCj4gK3N0YXRpYyBjaGFy
ICoqZ2V0X29uZV9jY2FubGludChjb25zdCB2b2lkICpjdHgsIGNvbnN0IGNoYXIgKmRpciwKPiAr
CQkJICAgICAgIGNoYXIgKigqZ2V0X2luZm8pKGNvbnN0IHZvaWQgKmN0eCwgY29uc3QgY2hhciAq
ZGlyKSkKPiArewo+ICsJcmV0dXJuIGdldF9vbmVfcHJvcChjdHgsIGRpciwgImNjYW5saW50Iiwg
Z2V0X2luZm8pOwo+ICt9Cj4gKwo+ICAvKiBPKG5eMikgYnV0IG4gaXMgc21hbGwuICovCj4gIHN0
YXRpYyBjaGFyICoqYWRkX2RlcHMoY2hhciAqKmRlcHMxLCBjaGFyICoqZGVwczIpCj4gIHsKPiBA
QCAtMjgyLDYgKzI4OCwxOCBAQCBjaGFyICoqZ2V0X2NmbGFncyhjb25zdCB2b2lkICpjdHgsIGNv
bnN0IGNoYXIgKmRpciwKPiAgCXJldHVybiBmbGFnczsKPiAgfQo+ICAKPiArY2hhciAqKmdldF9j
Y2FubGludChjb25zdCB2b2lkICpjdHgsIGNvbnN0IGNoYXIgKmRpciwKPiArCQkgICAgY2hhciAq
KCpnZXRfaW5mbykoY29uc3Qgdm9pZCAqY3R4LCBjb25zdCBjaGFyICpkaXIpKQo+ICt7Cj4gKwlj
aGFyICoqY2NhbmxpbnQ7Cj4gKwl1bnNpZ25lZCBpbnQgbGVuOwo+ICsJY2NhbmxpbnQgPSBnZXRf
b25lX2NjYW5saW50KGN0eCwgZGlyLCBnZXRfaW5mbyk7Cj4gKwlsZW4gPSB0YWxfY291bnQoY2Nh
bmxpbnQpOwo+ICsJdGFsX3Jlc2l6ZSgmY2NhbmxpbnQsIGxlbiArIDEpOwo+ICsJY2NhbmxpbnRb
bGVuXSA9IE5VTEw7Cj4gKwlyZXR1cm4gY2NhbmxpbnQ7Cj4gK30KPiArCj4gIHN0YXRpYyBjaGFy
ICpnZXRfb25lX3BvcnRlZChjb25zdCB2b2lkICpjdHgsIGNvbnN0IGNoYXIgKmRpciwKPiAgCQkJ
ICAgIGNoYXIgKigqZ2V0X2luZm8pKGNvbnN0IHZvaWQgKmN0eCwgY29uc3QgY2hhciAqZGlyKSkK
PiAgewo+IGRpZmYgLS1naXQgYS90b29scy90b29scy5oIGIvdG9vbHMvdG9vbHMuaAo+IGluZGV4
IDY2OGM5MWEuLmQyOWEyNWYgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvdG9vbHMuaAo+ICsrKyBiL3Rv
b2xzL3Rvb2xzLmgKPiBAQCAtNDgsNiArNDgsOSBAQCBjaGFyICoqZ2V0X2xpYnMoY29uc3Qgdm9p
ZCAqY3R4LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKnN0eWxlLAo+ICBjaGFyICoqZ2V0
X2NmbGFncyhjb25zdCB2b2lkICpjdHgsIGNvbnN0IGNoYXIgKmRpciwKPiAgCQljaGFyICooKmdl
dF9pbmZvKShjb25zdCB2b2lkICpjdHgsIGNvbnN0IGNoYXIgKmRpcikpOwo+ICAKPiArY2hhciAq
KmdldF9jY2FubGludChjb25zdCB2b2lkICpjdHgsIGNvbnN0IGNoYXIgKmRpciwKPiArCQkgICAg
Y2hhciAqKCpnZXRfaW5mbykoY29uc3Qgdm9pZCAqY3R4LCBjb25zdCBjaGFyICpkaXIpKTsKPiAr
Cj4gIGNoYXIgKmdldF9wb3J0ZWQoY29uc3Qgdm9pZCAqY3R4LCBjb25zdCBjaGFyICpkaXIsIGJv
b2wgcmVjdXJzZSwKPiAgCQkgY2hhciAqKCpnZXRfaW5mbykoY29uc3Qgdm9pZCAqY3R4LCBjb25z
dCBjaGFyICpkaXIpKTsKPiAgCj4gLS0gCj4gMi45LjMKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KY2NhbiBtYWlsaW5nIGxpc3QKY2NhbkBsaXN0cy5vemxh
YnMub3JnCmh0dHBzOi8vbGlzdHMub3psYWJzLm9yZy9saXN0aW5mby9jY2FuCg==