bug#81444: chown, chmod, chgrp, chcon, ls: --recursive walk does not ignore ENOENT errors

Pádraig Brady <[email protected]> Wed, 22 Jul 2026 20:51:13 +0100
Newsgroups gmane.comp.gnu.core-utils.bugs
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------EqjuCzz7zfjzHt7XDD46Bmu3
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 20/07/2026 18:12, Paul Holzinger via GNU coreutils Bug Reports wrote:
> Hi,
> 
> I noticed that when chown'ing a directory tree recursively with many
> files sometimes chown will exit 1 and report ENOENT errors. This happens
> when looping over the directory results from readdir() and in a parallel
> another process removes a file before the code then calls stat(),
> chmod() or whatever syscalls the command has to do for the given filename.
> 
> Since such race is expected the coreutils should not treat this as error
> and just ignore them instead. That way a parallel removal of a file will
> not make the commands return exit code 1 and thus possibility break
> scripts. Of course this should only apply to files or directories under
> the main path given as input, i.e. chmod -R dest should still fail with
> ENOENT when dest does not exists.
> 
> Below is a reproducer for the commands, might needs to run a few times
> until it triggers the race condition, I am not sure if there are more
> commands in coreutils which are affected by this.
Thanks for the repro, it works well.

I agree, these commands shouldn't warn or fail for files
being added, replaced, removed in the tree being traversed.
I also notice that du is affected.

The attached should hopefully address this issue.

thanks,
Padraig
--------------EqjuCzz7zfjzHt7XDD46Bmu3
Content-Type: text/x-patch; charset=UTF-8;
 name="ignore-traversed-missing.patch"
Content-Disposition: attachment; filename="ignore-traversed-missing.patch"
Content-Transfer-Encoding: base64

RnJvbSA5NDg3NWI0ZjFiYWI0N2JhNWFjOGNjMjM0ZmU3MGQyMTVkY2ZiOWQxIE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/UD1DMz1BMWRyYWlnPTIwQnJhZHk/
PSA8UEBkcmFpZ0JyYWR5LmNvbT4KRGF0ZTogV2VkLCAyMiBKdWwgMjAyNiAxOToyMzoyNiAr
MDEwMApTdWJqZWN0OiBbUEFUQ0hdIGNoY29uLGNoZ3JwLGNobW9kLGNob3duLGR1LGxzOiBp
Z25vcmUgbWlzc2luZyBmaWxlcyB3aGlsZQogdHJhdmVyc2luZwoKKiBzcmMvZnRzLW1pc3Np
bmcuaDogQWRkIGhlbHBlciByb3V0aW5lcyB0byBkZXRlcm1pbmUKaWYgYW4gRlRTIGVudHJ5
IGlzIHNraXBwYWJsZS4gIEkuZS4sIHRoYXQgaXMgdHJhdmVyc2VkCmFuZCBub3Qgc3BlY2lm
aWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCiogc3JjL2NoY29uLmMgKHByb2Nlc3NfZmlsZSk6
IFNldHVwIHRvIGlnbm9yZSBza2lwcGFibGUgZmlsZXMuCihjaGFuZ2VfZmlsZV9jb250ZXh0
KTogSWdub3JlIG1pc3NpbmcgZmlsZXMgaWYgYXBwcm9wcmlhdGUuCiogc3JjL2NobW9kLmMg
KHByb2Nlc3NfZmlsZSk6IFNldHVwIHRvIGlnbm9yZSBza2lwcGFibGUgZmlsZXMuCklnbm9y
ZSBtaXNzaW5nIGZpbGVzIGlmIGFwcHJvcHJpYXRlLgoobW9kZV9jaGFuZ2VkKTogSWdub3Jl
IG1pc3NpbmcgZmlsZXMgaWYgYXBwcm9wcmlhdGUuCiogc3JjL2Nob3duLWNvcmUuYyAoY2hh
bmdlX2ZpbGVfb3duZXIpOiBTZXR1cCB0byBpZ25vcmUgc2tpcHBhYmxlIGZpbGVzLgpJZ25v
cmUgbWlzc2luZyBmaWxlcyBpZiBhcHByb3ByaWF0ZS4KKiBzcmMvZHUuYyAocHJvY2Vzc19m
aWxlKTogTGlrZXdpc2UuCiogc3JjL2xzLmMgKHByaW50X2Rpcik6IElnbm9yZSBtaXNzaW5n
IGZpbGVzIGlmIGFwcHJvcHJpYXRlLgooZ2V0X2xpbmtfbmFtZSk6IExpa2V3aXNlLgooZ29i
YmxlX2ZpbGUpOiBMaWtld2lzZS4gIEFsc28gaGFuZGxlIHRoZSBkYW5nbGluZyBzeW1saW5r
IGNhc2UuCiogc3JjL3N5c3RlbS5oIChpZ25vcmFibGVfdHJhdmVyc2FsX2Vycm5vKTogTWF0
Y2ggRU5PRU5UIGFuZCBFTk9URElSLApmb3IgbWlzc2luZyBhbmQgcmVwbGFjZWQgZmlsZXMu
CiogdGVzdHMvY2hjb24vdHJhdmVyc2FsLW1pc3Npbmcuc2g6IEEgbmV3IHRlc3QuCiogdGVz
dHMvbWlzYy90cmF2ZXJzYWwtbWlzc2luZy5zaDogTGlrZXdpc2UuCiogdGVzdHMvbG9jYWwu
bWs6IFJlZmVyZW5jZSB0aGUgbmV3IHRlc3RzLgoqIE5FV1M6IE1lbnRpb24gdGhlIGJ1ZyBm
aXguCkZpeGVzIGh0dHBzOi8vYnVncy5nbnUub3JnLzgxNDQ0Ci0tLQogTkVXUyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgNCArKwogc3JjL2NoY29uLmMgICAgICAgICAgICAg
ICAgICAgICAgfCAyMCArKysrKysrLS0tCiBzcmMvY2htb2QuYyAgICAgICAgICAgICAgICAg
ICAgICB8IDI5ICsrKysrKysrKysrKy0tCiBzcmMvY2hvd24tY29yZS5jICAgICAgICAgICAg
ICAgICB8IDI0ICsrKysrKysrLS0tCiBzcmMvZHUuYyAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICA4ICsrKysKIHNyYy9mdHMtbWlzc2luZy5oICAgICAgICAgICAgICAgIHwgMzkgKysr
KysrKysrKysrKysrKysrCiBzcmMvbG9jYWwubWsgICAgICAgICAgICAgICAgICAgICB8ICAx
ICsKIHNyYy9scy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjIgKysrKysrKysrKysr
KysrKysrKysrLS0tLS0tLS0KIHNyYy9zeXN0ZW0uaCAgICAgICAgICAgICAgICAgICAgIHwg
IDggKysrKwogdGVzdHMvY2hjb24vdHJhdmVyc2FsLW1pc3Npbmcuc2ggfCA0OCArKysrKysr
KysrKysrKysrKysrKysrCiB0ZXN0cy9sb2NhbC5tayAgICAgICAgICAgICAgICAgICB8ICAy
ICsKIHRlc3RzL21pc2MvdHJhdmVyc2FsLW1pc3Npbmcuc2ggIHwgNjggKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysKIDEyIGZpbGVzIGNoYW5nZWQsIDI4MyBpbnNlcnRpb25z
KCspLCAzMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvZnRzLW1pc3Np
bmcuaAogY3JlYXRlIG1vZGUgMTAwNzU1IHRlc3RzL2NoY29uL3RyYXZlcnNhbC1taXNzaW5n
LnNoCiBjcmVhdGUgbW9kZSAxMDA3NTUgdGVzdHMvbWlzYy90cmF2ZXJzYWwtbWlzc2luZy5z
aAoKZGlmZiAtLWdpdCBhL05FV1MgYi9ORVdTCmluZGV4IDczYzdhZjlkMS4uNzYzNTRlOWU5
IDEwMDY0NAotLS0gYS9ORVdTCisrKyBiL05FV1MKQEAgLTQsNiArNCwxMCBAQCBHTlUgY29y
ZXV0aWxzIE5FV1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gb3V0
bGluZSAtKi0KIAogKiogQnVnIGZpeGVzCiAKKyAgJ2NoY29uJywgJ2NoZ3JwJywgJ2NobW9k
JywgJ2Nob3duJywgJ2R1JywgJ2xzJyB3aGljaCB0cmF2ZXJzZSBoaWVyYXJjaGllcyB3aXRo
CisgIC1SLCAgbm8gbG9uZ2VyIGZhaWwgbWVyZWx5IGJlY2F1c2UgZmlsZXMgbWF5IGJlIGJl
aW5nIHJlbW92ZWQgaW4gcGFyYWxsZWwuCisgIFtUaGlzIGJ1ZyB3YXMgcHJlc2VudCBpbiAi
dGhlIGJlZ2lubmluZyIuXQorCiAgICdjb21tIC0gLScgbm8gbG9uZ2VyIGNsb3NlcyBzdGFu
ZGFyZCBpbnB1dCB0d2ljZS4gIFByZXZpb3VzbHkgaXQgd291bGQKICAgbWlzdGFrZW5seSBl
eGl0IHdpdGggYSBub256ZXJvIHN0YXR1cy4KICAgW1RoaXMgYnVnIHdhcyBwcmVzZW50IGlu
ICJ0aGUgYmVnaW5uaW5nIi5dCmRpZmYgLS1naXQgYS9zcmMvY2hjb24uYyBiL3NyYy9jaGNv
bi5jCmluZGV4IDkxYjc4MTQ4ZC4uNGFiMmQ3NTcwIDEwMDY0NAotLS0gYS9zcmMvY2hjb24u
YworKysgYi9zcmMvY2hjb24uYwpAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAic3lz
dGVtLmgiCiAjaW5jbHVkZSAiZGV2LWluby5oIgorI2luY2x1ZGUgImZ0cy1taXNzaW5nLmgi
CiAjaW5jbHVkZSAiaWdub3JlLXZhbHVlLmgiCiAjaW5jbHVkZSAicXVvdGUuaCIKICNpbmNs
dWRlICJyb290LWRldi1pbm8uaCIKQEAgLTEzNyw3ICsxMzgsNyBAQCBjb21wdXRlX2NvbnRl
eHRfZnJvbV9tYXNrIChjaGFyIGNvbnN0ICpjb250ZXh0LCBjb250ZXh0X3QgKnJldCkKICAg
IFJldHVybiAwIGlmIHN1Y2Nlc3NmdWwsIDEgaWYgZXJyb3JzIG9jY3VycmVkLiAqLwogCiBz
dGF0aWMgaW50Ci1jaGFuZ2VfZmlsZV9jb250ZXh0IChpbnQgZmQsIGNoYXIgY29uc3QgKmZp
bGUpCitjaGFuZ2VfZmlsZV9jb250ZXh0IChpbnQgZmQsIGNoYXIgY29uc3QgKmZpbGUsIGJv
b2wgaWdub3JlX21pc3NpbmcpCiB7CiAgIGNoYXIgKmZpbGVfY29udGV4dCA9IE5VTEw7CiAg
IGNvbnRleHRfdCBjb250ZXh0IElGX0xJTlQgKD0gTlVMTCk7CkBAIC0xNTIsNiArMTUzLDgg
QEAgY2hhbmdlX2ZpbGVfY29udGV4dCAoaW50IGZkLCBjaGFyIGNvbnN0ICpmaWxlKQogCiAg
ICAgICBpZiAoc3RhdHVzIDwgMCAmJiBlcnJubyAhPSBFTk9EQVRBKQogICAgICAgICB7Cisg
ICAgICAgICAgaWYgKGlnbm9yZV9taXNzaW5nICYmIGlnbm9yYWJsZV90cmF2ZXJzYWxfZXJy
bm8gKGVycm5vKSkKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgIGVycm9yICgw
LCBlcnJubywgXygiZmFpbGVkIHRvIGdldCBzZWN1cml0eSBjb250ZXh0IG9mICVzIiksCiAg
ICAgICAgICAgICAgICAgIHF1b3RlYWYgKGZpbGUpKTsKICAgICAgICAgICByZXR1cm4gMTsK
QEAgLTE4OCw5ICsxOTEsMTIgQEAgY2hhbmdlX2ZpbGVfY29udGV4dCAoaW50IGZkLCBjaGFy
IGNvbnN0ICpmaWxlKQogCiAgICAgICBpZiAoZmFpbCkKICAgICAgICAgewotICAgICAgICAg
IGVycm9ycyA9IDE7Ci0gICAgICAgICAgZXJyb3IgKDAsIGVycm5vLCBfKCJmYWlsZWQgdG8g
Y2hhbmdlIGNvbnRleHQgb2YgJXMgdG8gJXMiKSwKLSAgICAgICAgICAgICAgICAgcXVvdGVh
Zl9uICgwLCBmaWxlKSwgcXVvdGVfbiAoMSwgY29udGV4dF9zdHJpbmcpKTsKKyAgICAgICAg
ICBpZiAoISAoaWdub3JlX21pc3NpbmcgJiYgaWdub3JhYmxlX3RyYXZlcnNhbF9lcnJubyAo
ZXJybm8pKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgZXJyb3JzID0gMTsKKyAg
ICAgICAgICAgICAgZXJyb3IgKDAsIGVycm5vLCBfKCJmYWlsZWQgdG8gY2hhbmdlIGNvbnRl
eHQgb2YgJXMgdG8gJXMiKSwKKyAgICAgICAgICAgICAgICAgICAgIHF1b3RlYWZfbiAoMCwg
ZmlsZSksIHF1b3RlX24gKDEsIGNvbnRleHRfc3RyaW5nKSk7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTIxNCw2ICsyMjAsMTAgQEAgcHJvY2Vzc19maWxlIChG
VFMgKmZ0cywgRlRTRU5UICplbnQpCiAgIGNoYXIgY29uc3QgKmZpbGUgPSBlbnQtPmZ0c19h
Y2NwYXRoOwogICBjb25zdCBzdHJ1Y3Qgc3RhdCAqZmlsZV9zdGF0cyA9IGVudC0+ZnRzX3N0
YXRwOwogICBib29sIG9rID0gdHJ1ZTsKKyAgYm9vbCBpZ25vcmVfbWlzc2luZyA9IGlnbm9y
ZV9taXNzaW5nX2Z0c19lbnRyeSAoZW50KTsKKworICBpZiAoaWdub3JlX21pc3NpbmcgJiYg
aWdub3JhYmxlX2Z0c19lcnJvciAoZW50KSkKKyAgICByZXR1cm4gdHJ1ZTsKIAogICBzd2l0
Y2ggKGVudC0+ZnRzX2luZm8pCiAgICAgewpAQCAtMjk1LDcgKzMwNSw3IEBAIHByb2Nlc3Nf
ZmlsZSAoRlRTICpmdHMsIEZUU0VOVCAqZW50KQogICAgICAgICBwcmludGYgKF8oImNoYW5n
aW5nIHNlY3VyaXR5IGNvbnRleHQgb2YgJXNcbiIpLAogICAgICAgICAgICAgICAgIHF1b3Rl
YWYgKGZpbGVfZnVsbF9uYW1lKSk7CiAKLSAgICAgIGlmIChjaGFuZ2VfZmlsZV9jb250ZXh0
IChmdHMtPmZ0c19jd2RfZmQsIGZpbGUpICE9IDApCisgICAgICBpZiAoY2hhbmdlX2ZpbGVf
Y29udGV4dCAoZnRzLT5mdHNfY3dkX2ZkLCBmaWxlLCBpZ25vcmVfbWlzc2luZykgIT0gMCkK
ICAgICAgICAgb2sgPSBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3NyYy9jaG1vZC5j
IGIvc3JjL2NobW9kLmMKaW5kZXggOGI1NzE3MjcwLi42OGYzN2UxODEgMTAwNjQ0Ci0tLSBh
L3NyYy9jaG1vZC5jCisrKyBiL3NyYy9jaG1vZC5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5j
bHVkZSAiYXNzdXJlLmgiCiAjaW5jbHVkZSAiZGV2LWluby5oIgogI2luY2x1ZGUgImZpbGVt
b2RlLmgiCisjaW5jbHVkZSAiZnRzLW1pc3NpbmcuaCIKICNpbmNsdWRlICJpZ25vcmUtdmFs
dWUuaCIKICNpbmNsdWRlICJtb2RlY2hhbmdlLmgiCiAjaW5jbHVkZSAicXVvdGUuaCIKQEAg
LTEyNSw4ICsxMjYsMTAgQEAgc3RhdGljIHN0cnVjdCBvcHRpb24gY29uc3QgbG9uZ19vcHRp
b25zW10gPQogCiBzdGF0aWMgYm9vbAogbW9kZV9jaGFuZ2VkIChpbnQgZGlyX2ZkLCBjaGFy
IGNvbnN0ICpmaWxlLCBjaGFyIGNvbnN0ICpmaWxlX2Z1bGxfbmFtZSwKLSAgICAgICAgICAg
ICAgbW9kZV90IG9sZF9tb2RlLCBtb2RlX3QgbmV3X21vZGUpCisgICAgICAgICAgICAgIG1v
ZGVfdCBvbGRfbW9kZSwgbW9kZV90IG5ld19tb2RlLCBib29sIGlnbm9yZV9taXNzaW5nLAor
ICAgICAgICAgICAgICBib29sICpmaWxlX21pc3NpbmcpCiB7CisgICpmaWxlX21pc3Npbmcg
PSBmYWxzZTsKICAgaWYgKG5ld19tb2RlICYgKFNfSVNVSUQgfCBTX0lTR0lEIHwgU19JU1ZU
WCkpCiAgICAgewogICAgICAgLyogVGhlIG5ldyBtb2RlIGNvbnRhaW5zIHVudXN1YWwgYml0
cyB0aGF0IHRoZSBjYWxsIHRvIGNobW9kIG1heQpAQCAtMTM2LDcgKzEzOSw5IEBAIG1vZGVf
Y2hhbmdlZCAoaW50IGRpcl9mZCwgY2hhciBjb25zdCAqZmlsZSwgY2hhciBjb25zdCAqZmls
ZV9mdWxsX25hbWUsCiAKICAgICAgIGlmIChmc3RhdGF0IChkaXJfZmQsIGZpbGUsICZuZXdf
c3RhdHMsIDApICE9IDApCiAgICAgICAgIHsKLSAgICAgICAgICBpZiAoISBmb3JjZV9zaWxl
bnQpCisgICAgICAgICAgKmZpbGVfbWlzc2luZyA9IChpZ25vcmVfbWlzc2luZworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJiYgaWdub3JhYmxlX3RyYXZlcnNhbF9lcnJubyAoZXJy
bm8pKTsKKyAgICAgICAgICBpZiAoISAqZmlsZV9taXNzaW5nICYmICEgZm9yY2Vfc2lsZW50
KQogICAgICAgICAgICAgZXJyb3IgKDAsIGVycm5vLCBfKCJnZXR0aW5nIG5ldyBhdHRyaWJ1
dGVzIG9mICVzIiksCiAgICAgICAgICAgICAgICAgICAgcXVvdGVhZiAoZmlsZV9mdWxsX25h
bWUpKTsKICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTUsNiArMjIwLDEwIEBAIHBy
b2Nlc3NfZmlsZSAoRlRTICpmdHMsIEZUU0VOVCAqZW50KQogICBzdHJ1Y3QgY2hhbmdlX3N0
YXR1cyBjaCA9IHswfTsKICAgY2guc3RhdHVzID0gQ0hfTk9fU1RBVDsKICAgc3RydWN0IHN0
YXQgc3RhdF9idWY7CisgIGJvb2wgaWdub3JlX21pc3NpbmcgPSBpZ25vcmVfbWlzc2luZ19m
dHNfZW50cnkgKGVudCk7CisKKyAgaWYgKGlnbm9yZV9taXNzaW5nICYmIGlnbm9yYWJsZV9m
dHNfZXJyb3IgKGVudCkpCisgICAgcmV0dXJuIHRydWU7CiAKICAgc3dpdGNoIChlbnQtPmZ0
c19pbmZvKQogICAgIHsKQEAgLTI2Nyw2ICsyNzYsOSBAQCBwcm9jZXNzX2ZpbGUgKEZUUyAq
ZnRzLCBGVFNFTlQgKmVudCkKICAgICAgICAgewogICAgICAgICAgIGlmIChmc3RhdGF0IChm
dHMtPmZ0c19jd2RfZmQsIGZpbGUsICZzdGF0X2J1ZiwgMCkgIT0gMCkKICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgaWYgKGlnbm9yZV9taXNzaW5nCisgICAgICAgICAgICAgICAg
ICAmJiBpZ25vcmFibGVfdHJhdmVyc2FsX2Vycm5vIChlcnJubykpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgIGlmICghIGZvcmNlX3NpbGVudCkKICAg
ICAgICAgICAgICAgICBlcnJvciAoMCwgZXJybm8sIF8oImNhbm5vdCBkZXJlZmVyZW5jZSAl
cyIpLAogICAgICAgICAgICAgICAgICAgICAgICBxdW90ZWFmIChmaWxlX2Z1bGxfbmFtZSkp
OwpAQCAtMzE0LDYgKzMyNiw5IEBAIHByb2Nlc3NfZmlsZSAoRlRTICpmdHMsIEZUU0VOVCAq
ZW50KQogICAgICAgICBjaC5zdGF0dXMgPSBDSF9TVUNDRUVERUQ7CiAgICAgICBlbHNlCiAg
ICAgICAgIHsKKyAgICAgICAgICBpZiAoaWdub3JlX21pc3NpbmcKKyAgICAgICAgICAgICAg
JiYgaWdub3JhYmxlX3RyYXZlcnNhbF9lcnJubyAoZXJybm8pKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgaWYgKCEgaXNfRU5PVFNVUCAoZXJybm8pKQogICAgICAg
ICAgICAgewogICAgICAgICAgICAgICBpZiAoISBmb3JjZV9zaWxlbnQpCkBAIC0zMjgsMTAg
KzM0MywxNiBAQCBwcm9jZXNzX2ZpbGUgKEZUUyAqZnRzLCBGVFNFTlQgKmVudCkKIAogICBp
ZiAodmVyYm9zaXR5ICE9IFZfb2ZmKQogICAgIHsKKyAgICAgIGJvb2wgZmlsZV9taXNzaW5n
OwogICAgICAgaWYgKGNoLnN0YXR1cyA9PSBDSF9TVUNDRUVERUQKICAgICAgICAgICAmJiAh
bW9kZV9jaGFuZ2VkIChmdHMtPmZ0c19jd2RfZmQsIGZpbGUsIGZpbGVfZnVsbF9uYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoLm9sZF9tb2RlLCBjaC5uZXdfbW9kZSkp
Ci0gICAgICAgIGNoLnN0YXR1cyA9IENIX05PX0NIQU5HRV9SRVFVRVNURUQ7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2gub2xkX21vZGUsIGNoLm5ld19tb2RlLCBpZ25vcmVf
bWlzc2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlsZV9taXNzaW5nKSkK
KyAgICAgICAgeworICAgICAgICAgIGlmIChmaWxlX21pc3NpbmcpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBjaC5zdGF0dXMgPSBDSF9OT19DSEFOR0VfUkVRVUVT
VEVEOworICAgICAgICB9CiAKICAgICAgIGlmIChjaC5zdGF0dXMgPT0gQ0hfU1VDQ0VFREVE
IHx8IHZlcmJvc2l0eSA9PSBWX2hpZ2gpCiAgICAgICAgIGRlc2NyaWJlX2NoYW5nZSAoZmls
ZV9mdWxsX25hbWUsICZjaCk7CmRpZmYgLS1naXQgYS9zcmMvY2hvd24tY29yZS5jIGIvc3Jj
L2Nob3duLWNvcmUuYwppbmRleCBlNWUzNTVmZGIuLjIxZjFlM2Q5NyAxMDA2NDQKLS0tIGEv
c3JjL2Nob3duLWNvcmUuYworKysgYi9zcmMvY2hvd24tY29yZS5jCkBAIC0yNSw2ICsyNSw3
IEBACiAjaW5jbHVkZSAic3lzdGVtLmgiCiAjaW5jbHVkZSAiYXNzdXJlLmgiCiAjaW5jbHVk
ZSAiY2hvd24tY29yZS5oIgorI2luY2x1ZGUgImZ0cy1taXNzaW5nLmgiCiAjaW5jbHVkZSAi
aWdub3JlLXZhbHVlLmgiCiAjaW5jbHVkZSAicm9vdC1kZXYtaW5vLmgiCiAjaW5jbHVkZSAi
eGZ0cy5oIgpAQCAtMjg0LDYgKzI4NSwxMCBAQCBjaGFuZ2VfZmlsZV9vd25lciAoRlRTICpm
dHMsIEZUU0VOVCAqZW50LAogICBjaGFyIGNvbnN0ICpmaWxlX2Z1bGxfbmFtZSA9IGVudC0+
ZnRzX3BhdGg7CiAgIGNoYXIgY29uc3QgKmZpbGUgPSBlbnQtPmZ0c19hY2NwYXRoOwogICBi
b29sIG9rID0gdHJ1ZTsKKyAgYm9vbCBpZ25vcmVfbWlzc2luZyA9IGlnbm9yZV9taXNzaW5n
X2Z0c19lbnRyeSAoZW50KTsKKworICBpZiAoaWdub3JlX21pc3NpbmcgJiYgaWdub3JhYmxl
X2Z0c19lcnJvciAoZW50KSkKKyAgICByZXR1cm4gdHJ1ZTsKIAogICBzd2l0Y2ggKGVudC0+
ZnRzX2luZm8pCiAgICAgewpAQCAtMzgxLDYgKzM4Niw5IEBAIGNoYW5nZV9maWxlX293bmVy
IChGVFMgKmZ0cywgRlRTRU5UICplbnQsCiAgICAgICAgIHsKICAgICAgICAgICBpZiAoZnN0
YXRhdCAoZnRzLT5mdHNfY3dkX2ZkLCBmaWxlLCAmc3RhdF9idWYsIDApICE9IDApCiAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgIGlmIChpZ25vcmVfbWlzc2luZworICAgICAgICAg
ICAgICAgICAgJiYgaWdub3JhYmxlX3RyYXZlcnNhbF9lcnJubyAoZXJybm8pKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICBpZiAoISBjaG9wdC0+Zm9y
Y2Vfc2lsZW50KQogICAgICAgICAgICAgICAgIGVycm9yICgwLCBlcnJubywgXygiY2Fubm90
IGRlcmVmZXJlbmNlICVzIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlYWYgKGZp
bGVfZnVsbF9uYW1lKSk7CkBAIC00NjksMTEgKzQ3NywxNyBAQCBjaGFuZ2VfZmlsZV9vd25l
ciAoRlRTICpmdHMsIEZUU0VOVCAqZW50LAogICAgICAgICAgYnkgc29tZSBvdGhlciB1c2Vy
IGFuZCBvcGVyYXRpbmcgb24gZmlsZXMgaW4gYSBkaXJlY3RvcnkKICAgICAgICAgIHdoZXJl
IE0gaGFzIHdyaXRlIGFjY2Vzcy4gICovCiAKLSAgICAgIGlmIChkb19jaG93biAmJiAhb2sg
JiYgISBjaG9wdC0+Zm9yY2Vfc2lsZW50KQotICAgICAgICBlcnJvciAoMCwgZXJybm8sICh1
aWQgIT0gKHVpZF90KSAtMQotICAgICAgICAgICAgICAgICAgICAgICAgICA/IF8oImNoYW5n
aW5nIG93bmVyc2hpcCBvZiAlcyIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDogXygi
Y2hhbmdpbmcgZ3JvdXAgb2YgJXMiKSksCi0gICAgICAgICAgICAgICBxdW90ZWFmIChmaWxl
X2Z1bGxfbmFtZSkpOworICAgICAgaWYgKGRvX2Nob3duICYmICFvaykKKyAgICAgICAgewor
ICAgICAgICAgIGlmIChpZ25vcmVfbWlzc2luZworICAgICAgICAgICAgICAmJiBpZ25vcmFi
bGVfdHJhdmVyc2FsX2Vycm5vIChlcnJubykpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICBpZiAoISBjaG9wdC0+Zm9yY2Vfc2lsZW50KQorICAgICAgICAgICAgZXJy
b3IgKDAsIGVycm5vLCAodWlkICE9ICh1aWRfdCkgLTEKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID8gXygiY2hhbmdpbmcgb3duZXJzaGlwIG9mICVzIikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogXygiY2hhbmdpbmcgZ3JvdXAgb2YgJXMiKSksCisgICAg
ICAgICAgICAgICAgICAgcXVvdGVhZiAoZmlsZV9mdWxsX25hbWUpKTsKKyAgICAgICAgfQog
ICAgIH0KIAogICBpZiAoY2hvcHQtPnZlcmJvc2l0eSAhPSBWX29mZikKZGlmZiAtLWdpdCBh
L3NyYy9kdS5jIGIvc3JjL2R1LmMKaW5kZXggOWI4MDYzMzcxLi5lZWZiMjRmMDUgMTAwNjQ0
Ci0tLSBhL3NyYy9kdS5jCisrKyBiL3NyYy9kdS5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiYXNzdXJlLmgiCiAjaW5jbHVkZSAiZGktc2V0LmgiCiAjaW5jbHVkZSAiZXhjbHVk
ZS5oIgorI2luY2x1ZGUgImZ0cy1taXNzaW5nLmgiCiAjaW5jbHVkZSAiaHVtYW4uaCIKICNp
bmNsdWRlICJtb3VudGxpc3QuaCIKICNpbmNsdWRlICJxdW90ZS5oIgpAQCAtNTU0LDYgKzU1
NSwxMCBAQCBwcm9jZXNzX2ZpbGUgKEZUUyAqZnRzLCBGVFNFTlQgKmVudCkKICAgY2hhciBj
b25zdCAqZmlsZSA9IGVudC0+ZnRzX3BhdGg7CiAgIGNvbnN0IHN0cnVjdCBzdGF0ICpzYiA9
IGVudC0+ZnRzX3N0YXRwOwogICBpbnQgaW5mbyA9IGVudC0+ZnRzX2luZm87CisgIGJvb2wg
aWdub3JlX21pc3NpbmcgPSBpZ25vcmVfbWlzc2luZ19mdHNfZW50cnkgKGVudCk7CisKKyAg
aWYgKGlnbm9yZV9taXNzaW5nICYmIGlnbm9yYWJsZV9mdHNfZXJyb3IgKGVudCkpCisgICAg
cmV0dXJuIHRydWU7CiAKICAgaWYgKGluZm8gPT0gRlRTX0ROUikKICAgICB7CkBAIC01NzQs
NiArNTc5LDkgQEAgcHJvY2Vzc19maWxlIChGVFMgKmZ0cywgRlRTRU5UICplbnQpCiAgICAg
ICAgICAgICAgIE1BWUJFX1VOVVNFRCBGVFNFTlQgY29uc3QgKmUgPSBmdHNfcmVhZCAoZnRz
KTsKICAgICAgICAgICAgICAgYWZmaXJtIChlID09IGVudCk7CiAgICAgICAgICAgICAgIGlu
Zm8gPSBlbnQtPmZ0c19pbmZvOworCisgICAgICAgICAgICAgIGlmIChpZ25vcmVfbWlzc2lu
ZyAmJiBpZ25vcmFibGVfZnRzX2Vycm9yIChlbnQpKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgaWYgKGluZm8gPT0gRlRTX05T
IHx8IGluZm8gPT0gRlRTX1NMTk9ORSkKZGlmZiAtLWdpdCBhL3NyYy9mdHMtbWlzc2luZy5o
IGIvc3JjL2Z0cy1taXNzaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwLi5jYjAwN2JjYTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvZnRzLW1pc3NpbmcuaApA
QCAtMCwwICsxLDM5IEBACisvKiBmdHMtbWlzc2luZy5oIC0tIGhlbHBlcnMgZm9yIGZpbGVz
IG1pc3NpbmcgZHVyaW5nIGFuIEZUUyB0cmF2ZXJzYWwuCisKKyAgIENvcHlyaWdodCAoQykg
MjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFt
IGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp
ZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg
SWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNp
Zm5kZWYgRlRTX01JU1NJTkdfSAorIyBkZWZpbmUgRlRTX01JU1NJTkdfSAorCisjIGluY2x1
ZGUgImZ0c18uaCIKKworc3RhdGljIGlubGluZSBib29sCitpZ25vcmVfbWlzc2luZ19mdHNf
ZW50cnkgKEZUU0VOVCBjb25zdCAqZW50KQoreworICByZXR1cm4gKEZUU19ST09UTEVWRUwg
PCBlbnQtPmZ0c19sZXZlbAorICAgICAgICAgICYmIGVudC0+ZnRzX2luZm8gIT0gRlRTX1NM
CisgICAgICAgICAgJiYgZW50LT5mdHNfaW5mbyAhPSBGVFNfU0xOT05FKTsKK30KKworc3Rh
dGljIGlubGluZSBib29sCitpZ25vcmFibGVfZnRzX2Vycm9yIChGVFNFTlQgY29uc3QgKmVu
dCkKK3sKKyAgcmV0dXJuIChpZ25vcmFibGVfdHJhdmVyc2FsX2Vycm5vIChlbnQtPmZ0c19l
cnJubykKKyAgICAgICAgICAmJiAoZW50LT5mdHNfaW5mbyA9PSBGVFNfTlMgfHwgZW50LT5m
dHNfaW5mbyA9PSBGVFNfRVJSCisgICAgICAgICAgICAgIHx8IGVudC0+ZnRzX2luZm8gPT0g
RlRTX0ROUikpOworfQorCisjZW5kaWYgLyogRlRTX01JU1NJTkdfSCAqLwpkaWZmIC0tZ2l0
IGEvc3JjL2xvY2FsLm1rIGIvc3JjL2xvY2FsLm1rCmluZGV4IGQ3ZDZhZTUwOS4uZGI4NmNi
NWVhIDEwMDY0NAotLS0gYS9zcmMvbG9jYWwubWsKKysrIGIvc3JjL2xvY2FsLm1rCkBAIC01
MCw2ICs1MCw3IEBAIG5vaW5zdF9IRUFERVJTID0JCVwKICAgc3JjL2ZpbmQtbW91bnQtcG9p
bnQuaAlcCiAgIHNyYy9mcy5oCQkJXAogICBzcmMvZnMtaXMtbG9jYWwuaAkJXAorICBzcmMv
ZnRzLW1pc3NpbmcuaAkJXAogICBzcmMvZ3JvdXAtbGlzdC5oCQlcCiAgIHNyYy9pb2Jsa3Np
emUuaAkJXAogICBzcmMvaW9wb2xsLmgJCQlcCmRpZmYgLS1naXQgYS9zcmMvbHMuYyBiL3Ny
Yy9scy5jCmluZGV4IDNkNTgzYjg1Zi4uYTRiZTZmY2VhIDEwMDY0NAotLS0gYS9zcmMvbHMu
YworKysgYi9zcmMvbHMuYwpAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyB2b2lkIGF0dGFj
aCAoY2hhciAqZGVzdCwgY2hhciBjb25zdCAqZGlybmFtZSwgY2hhciBjb25zdCAqbmFtZSk7
CiBzdGF0aWMgdm9pZCBjbGVhcl9maWxlcyAodm9pZCk7CiBzdGF0aWMgdm9pZCBleHRyYWN0
X2RpcnNfZnJvbV9maWxlcyAoY2hhciBjb25zdCAqZGlybmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbW1hbmRfbGluZV9hcmcpOwotc3RhdGlj
IHZvaWQgZ2V0X2xpbmtfbmFtZSAoY2hhciBjb25zdCAqZmlsZW5hbWUsIHN0cnVjdCBmaWxl
aW5mbyAqZiwKK3N0YXRpYyBib29sIGdldF9saW5rX25hbWUgKGNoYXIgY29uc3QgKmZpbGVu
YW1lLCBzdHJ1Y3QgZmlsZWluZm8gKmYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGNvbW1hbmRfbGluZV9hcmcpOwogc3RhdGljIHZvaWQgaW5kZW50IChzaXplX3QgZnJv
bSwgc2l6ZV90IHRvKTsKIHN0YXRpYyBpZHhfdCBjYWxjdWxhdGVfY29sdW1ucyAoYm9vbCBi
eV9jb2x1bW5zKTsKQEAgLTI5NjEsNyArMjk2MSw4IEBAIHByaW50X2RpciAoY2hhciBjb25z
dCAqbmFtZSwgY2hhciBjb25zdCAqcmVhbG5hbWUsIGJvb2wgY29tbWFuZF9saW5lX2FyZykK
ICAgZGlycCA9IG9wZW5kaXIgKG5hbWUpOwogICBpZiAoIWRpcnApCiAgICAgewotICAgICAg
ZmlsZV9mYWlsdXJlIChjb21tYW5kX2xpbmVfYXJnLCBfKCJjYW5ub3Qgb3BlbiBkaXJlY3Rv
cnkgJXMiKSwgbmFtZSk7CisgICAgICBpZiAoY29tbWFuZF9saW5lX2FyZyB8fCAhIGlnbm9y
YWJsZV90cmF2ZXJzYWxfZXJybm8gKGVycm5vKSkKKyAgICAgICAgZmlsZV9mYWlsdXJlIChj
b21tYW5kX2xpbmVfYXJnLCBfKCJjYW5ub3Qgb3BlbiBkaXJlY3RvcnkgJXMiKSwgbmFtZSk7
CiAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yOTc1LDggKzI5NzYsOSBAQCBwcmludF9k
aXIgKGNoYXIgY29uc3QgKm5hbWUsIGNoYXIgY29uc3QgKnJlYWxuYW1lLCBib29sIGNvbW1h
bmRfbGluZV9hcmcpCiAgICAgICAgICAgID8gZnN0YXRfZm9yX2lubyAoZmQsICZkaXJfc3Rh
dCkKICAgICAgICAgICAgOiBzdGF0X2Zvcl9pbm8gKG5hbWUsICZkaXJfc3RhdCkpIDwgMCkK
ICAgICAgICAgewotICAgICAgICAgIGZpbGVfZmFpbHVyZSAoY29tbWFuZF9saW5lX2FyZywK
LSAgICAgICAgICAgICAgICAgICAgICAgIF8oImNhbm5vdCBkZXRlcm1pbmUgZGV2aWNlIGFu
ZCBpbm9kZSBvZiAlcyIpLCBuYW1lKTsKKyAgICAgICAgICBpZiAoISBpZ25vcmFibGVfdHJh
dmVyc2FsX2Vycm5vIChlcnJubykpCisgICAgICAgICAgICBmaWxlX2ZhaWx1cmUgKGNvbW1h
bmRfbGluZV9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIF8oImNhbm5vdCBkZXRl
cm1pbmUgZGV2aWNlIGFuZCBpbm9kZSBvZiAlcyIpLCBuYW1lKTsKICAgICAgICAgICBjbG9z
ZWRpciAoZGlycCk7CiAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMDA4LDcg
KzMwMTAsOCBAQCBwcmludF9kaXIgKGNoYXIgY29uc3QgKm5hbWUsIGNoYXIgY29uc3QgKnJl
YWxuYW1lLCBib29sIGNvbW1hbmRfbGluZV9hcmcpCiAgICAgICBpZiAocHJpbnRfaHlwZXJs
aW5rKQogICAgICAgICB7CiAgICAgICAgICAgYWJzb2x1dGVfbmFtZSA9IGNhbm9uaWNhbGl6
ZV9maWxlbmFtZV9tb2RlIChuYW1lLCBDQU5fTUlTU0lORyk7Ci0gICAgICAgICAgaWYgKCEg
YWJzb2x1dGVfbmFtZSkKKyAgICAgICAgICBpZiAoISBhYnNvbHV0ZV9uYW1lCisgICAgICAg
ICAgICAgICYmICEgaWdub3JhYmxlX3RyYXZlcnNhbF9lcnJubyAoZXJybm8pKQogICAgICAg
ICAgICAgZmlsZV9mYWlsdXJlIChjb21tYW5kX2xpbmVfYXJnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBfKCJlcnJvciBjYW5vbmljYWxpemluZyAlcyIpLCBuYW1lKTsKICAgICAg
ICAgfQpAQCAtMzA2NCwxMiArMzA2Nyw5IEBAIHByaW50X2RpciAoY2hhciBjb25zdCAqbmFt
ZSwgY2hhciBjb25zdCAqcmVhbG5hbWUsIGJvb2wgY29tbWFuZF9saW5lX2FyZykKICAgICAg
ICAgICBpbnQgZXJyID0gZXJybm87CiAgICAgICAgICAgaWYgKGVyciA9PSAwKQogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgLyogU29tZSByZWFkZGlyKClzIGRvIG5vdCBhYnNv
cmIgRU5PRU5UIChkaXIgZGVsZXRlZCBidXQgb3BlbikuCi0gICAgICAgICAgICAgVGhpcyBi
dWcgd2FzIGZpeGVkIGluIGdsaWJjIDIuMyAoMjAwMikuICAqLwotI2lmICEgKDIgPCBfX0dM
SUJDX18gKyAoMyA8PSBfX0dMSUJDX01JTk9SX18pKQotICAgICAgICAgIGlmIChlcnIgPT0g
RU5PRU5UKQorICAgICAgICAgIC8qIElnbm9yZSBlcnJvcnMgaW5kaWNhdGluZyB0aGF0IHRo
ZSBkaXJlY3Rvcnkgd2FzIHJlbW92ZWQuICAqLworICAgICAgICAgIGlmIChpZ25vcmFibGVf
dHJhdmVyc2FsX2Vycm5vIChlcnIpKQogICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAg
ICAgICAgICBmaWxlX2ZhaWx1cmUgKGNvbW1hbmRfbGluZV9hcmcsIF8oInJlYWRpbmcgZGly
ZWN0b3J5ICVzIiksIG5hbWUpOwogICAgICAgICAgIGlmIChlcnIgIT0gRU9WRVJGTE9XKQog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0zMzkxLDcgKzMzOTEsOSBAQCBnb2JibGVfZmlsZSAo
Y2hhciBjb25zdCAqbmFtZSwgZW51bSBmaWxldHlwZSB0eXBlLCBpbm9fdCBpbm9kZSwKICAg
ICAgICAgewogICAgICAgICAgIGYtPmFic29sdXRlX25hbWUgPSBjYW5vbmljYWxpemVfZmls
ZW5hbWVfbW9kZSAoZnVsbF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FOX01JU1NJTkcpOwotICAgICAgICAgIGlm
ICghIGYtPmFic29sdXRlX25hbWUpCisgICAgICAgICAgaWYgKCEgZi0+YWJzb2x1dGVfbmFt
ZQorICAgICAgICAgICAgICAmJiAoY29tbWFuZF9saW5lX2FyZworICAgICAgICAgICAgICAg
ICAgfHwgISBpZ25vcmFibGVfdHJhdmVyc2FsX2Vycm5vIChlcnJubykpKQogICAgICAgICAg
ICAgZmlsZV9mYWlsdXJlIChjb21tYW5kX2xpbmVfYXJnLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBfKCJlcnJvciBjYW5vbmljYWxpemluZyAlcyIpLCBmdWxsX25hbWUpOwogICAg
ICAgICB9CkBAIC0zNDM5LDYgKzM0NDEsMjIgQEAgZ29iYmxlX2ZpbGUgKGNoYXIgY29uc3Qg
Km5hbWUsIGVudW0gZmlsZXR5cGUgdHlwZSwgaW5vX3QgaW5vZGUsCiAKICAgICAgIGlmIChl
cnIgIT0gMCkKICAgICAgICAgeworICAgICAgICAgIGlmICghIGNvbW1hbmRfbGluZV9hcmcg
JiYgaWdub3JhYmxlX3RyYXZlcnNhbF9lcnJubyAoZXJybm8pKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICBpbnQgc3RhdF9lcnJubyA9IGVycm5vOworICAgICAgICAgICAgICBz
dHJ1Y3Qgc3RhdCBsaW5rc3RhdDsKKyAgICAgICAgICAgICAgYm9vbCBkYW5nbGluZ19saW5r
ID0gKGRvX2RlcmVmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAo
dHlwZSA9PSBzeW1ib2xpY19saW5rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfHwgdHlwZSA9PSB1bmtub3duKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgZG9fbHN0YXQgKGZ1bGxfbmFtZSwgJmxpbmtzdGF0KSA9PSAwKTsK
KyAgICAgICAgICAgICAgZXJybm8gPSBzdGF0X2Vycm5vOworICAgICAgICAgICAgICBpZiAo
ISBkYW5nbGluZ19saW5rKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
IGZyZWVfZW50IChmKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAgIC8qIEZhaWx1cmUgdG8gc3Rh
dCBhIGNvbW1hbmQgbGluZSBhcmd1bWVudCBsZWFkcyB0bwogICAgICAgICAgICAgIGFuIGV4
aXQgc3RhdHVzIG9mIDIuICBGb3Igb3RoZXIgZmlsZXMsIHN0YXQgZmFpbHVyZQogICAgICAg
ICAgICAgIHByb3Zva2VzIGFuIGV4aXQgc3RhdHVzIG9mIDEuICAqLwpAQCAtMzQ4Myw3ICsz
NTAxLDggQEAgZ29iYmxlX2ZpbGUgKGNoYXIgY29uc3QgKm5hbWUsIGVudW0gZmlsZXR5cGUg
dHlwZSwgaW5vX3QgaW5vZGUsCiAgICAgICAgICBBbHNvIGlmIGEgZmlsZSBpcyByZW1vdmVk
IHdoaWxlIHdlJ3JlIHJlYWRpbmcgQUNMIGluZm8sCiAgICAgICAgICBBQ0xfVF9VTktOT1dO
IGlzIHN1ZmZpY2llbnQgaW5kaWNhdGlvbiBmb3IgdGhhdCBlZGdlIGNhc2UuICAqLwogICAg
ICAgYm9vbCBjYW5ub3RfYWNjZXNzX2FjbCA9IG4gPCAwCi0gICAgICAgICAgICYmIChlcnJu
byA9PSBFQUNDRVMgfHwgZXJybm8gPT0gRU5PRU5UKTsKKyAgICAgICAgICAgJiYgKGVycm5v
ID09IEVBQ0NFUworICAgICAgICAgICAgICAgfHwgaWdub3JhYmxlX3RyYXZlcnNhbF9lcnJu
byAoZXJybm8pKTsKIAogICAgICAgZi0+YWNsX3R5cGUgPSAoIWhhdmVfc2NvbnRleHQgJiYg
IWhhdmVfYWNsCiAgICAgICAgICAgICAgICAgICAgICA/IChjYW5ub3RfYWNjZXNzX2FjbCA/
IEFDTF9UX1VOS05PV04gOiBBQ0xfVF9OT05FKQpAQCAtMzUwMSw2ICszNTIwLDcgQEAgZ29i
YmxlX2ZpbGUgKGNoYXIgY29uc3QgKm5hbWUsIGVudW0gZmlsZXR5cGUgdHlwZSwgaW5vX3Qg
aW5vZGUsCiAgICAgICAgICAgICAgaXNuJ3Qgb24gdGhlIHJpZ2h0IHR5cGUgb2YgZmlsZSBz
eXN0ZW0uICBJLmUuLCBhIGdldGZpbGVjb24KICAgICAgICAgICAgICBmYWlsdXJlIGlzbid0
IGluIHRoZSBzYW1lIGNsYXNzIGFzIGEgc3RhdCBmYWlsdXJlLiAgKi8KICAgICAgICAgICBp
ZiAocHJpbnRfc2NvbnRleHQgJiYgYWkuc2NvbnRleHRfZXJyCisgICAgICAgICAgICAgICYm
ICEgaWdub3JhYmxlX3RyYXZlcnNhbF9lcnJubyAoYWkuc2NvbnRleHRfZXJyKQogICAgICAg
ICAgICAgICAmJiAoISAoaXNfRU5PVFNVUCAoYWkuc2NvbnRleHRfZXJyKQogICAgICAgICAg
ICAgICAgICAgICAgfHwgYWkuc2NvbnRleHRfZXJyID09IEVOT0RBVEEpKSkKICAgICAgICAg
ICAgIGVycm9yICgwLCBhaS5zY29udGV4dF9lcnIsICIlcyIsIHF1b3RlZiAoZnVsbF9uYW1l
KSk7CkBAIC0zNTIyLDcgKzM1NDIsMTEgQEAgZ29iYmxlX2ZpbGUgKGNoYXIgY29uc3QgKm5h
bWUsIGVudW0gZmlsZXR5cGUgdHlwZSwgaW5vX3QgaW5vZGUsCiAgICAgewogICAgICAgc3Ry
dWN0IHN0YXQgbGlua3N0YXRzOwogCi0gICAgICBnZXRfbGlua19uYW1lIChmdWxsX25hbWUs
IGYsIGNvbW1hbmRfbGluZV9hcmcpOworICAgICAgaWYgKCEgZ2V0X2xpbmtfbmFtZSAoZnVs
bF9uYW1lLCBmLCBjb21tYW5kX2xpbmVfYXJnKSkKKyAgICAgICAgeworICAgICAgICAgIGZy
ZWVfZW50IChmKTsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQogCiAgICAgICAv
KiBVc2UgdGhlIHNsb3dlciBxdW90aW5nIHBhdGggZm9yIHRoaXMgZW50cnksIHRob3VnaAog
ICAgICAgICAgZG9uJ3QgdXBkYXRlIENXRF9TT01FX1FVT1RFRCBzaW5jZSBhbGlnbm1lbnQg
bm90IGFmZmVjdGVkLiAgKi8KQEAgLTM2NDgsMTMgKzM2NzIsMTkgQEAgaXNfbGlua2VkX2Rp
cmVjdG9yeSAoY29uc3Qgc3RydWN0IGZpbGVpbmZvICpmKQogICAgaW50byB0aGUgTElOS05B
TUUgZmllbGQgb2YgJ2YnLiAgQ09NTUFORF9MSU5FX0FSRyBpbmRpY2F0ZXMgd2hldGhlcgog
ICAgRklMRU5BTUUgaXMgYSBjb21tYW5kLWxpbmUgYXJndW1lbnQuICAqLwogCi1zdGF0aWMg
dm9pZAorc3RhdGljIGJvb2wKIGdldF9saW5rX25hbWUgKGNoYXIgY29uc3QgKmZpbGVuYW1l
LCBzdHJ1Y3QgZmlsZWluZm8gKmYsIGJvb2wgY29tbWFuZF9saW5lX2FyZykKIHsKICAgZi0+
bGlua25hbWUgPSBhcmVhZGxpbmtfd2l0aF9zaXplIChmaWxlbmFtZSwgZi0+c3RhdC5zdF9z
aXplKTsKICAgaWYgKGYtPmxpbmtuYW1lID09IE5VTEwpCi0gICAgZmlsZV9mYWlsdXJlIChj
b21tYW5kX2xpbmVfYXJnLCBfKCJjYW5ub3QgcmVhZCBzeW1ib2xpYyBsaW5rICVzIiksCi0g
ICAgICAgICAgICAgICAgICBmaWxlbmFtZSk7CisgICAgeworICAgICAgaWYgKCEgY29tbWFu
ZF9saW5lX2FyZworICAgICAgICAgICYmIGlnbm9yYWJsZV90cmF2ZXJzYWxfZXJybm8gKGVy
cm5vKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgZmlsZV9mYWlsdXJlIChjb21t
YW5kX2xpbmVfYXJnLCBfKCJjYW5ub3QgcmVhZCBzeW1ib2xpYyBsaW5rICVzIiksCisgICAg
ICAgICAgICAgICAgICAgIGZpbGVuYW1lKTsKKyAgICB9CisgIHJldHVybiB0cnVlOwogfQog
CiAvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgbGFzdCBjb21wb25lbnQgb2YgTkFNRSBpcyAnLicg
b3IgJy4uJwpkaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbS5oIGIvc3JjL3N5c3RlbS5oCmluZGV4
IGQwZjJlMGM0NC4uODljZTJhOGFhIDEwMDY0NAotLS0gYS9zcmMvc3lzdGVtLmgKKysrIGIv
c3JjL3N5c3RlbS5oCkBAIC04Myw2ICs4MywxNCBAQAogIyBkZWZpbmUgRU5PREFUQSAoLTEp
CiAjZW5kaWYKIAorLyogUmV0dXJuIHRydWUgaWYgRVJSTlVNIGluZGljYXRlcyB0aGF0IGEg
ZmlsZSBkaXNhcHBlYXJlZCBkdXJpbmcgYQorICAgZGlyZWN0b3J5IHRyYXZlcnNhbC4gICov
CitzdGF0aWMgaW5saW5lIGJvb2wKK2lnbm9yYWJsZV90cmF2ZXJzYWxfZXJybm8gKGludCBl
cnJudW0pCit7CisgIHJldHVybiBlcnJudW0gPT0gRU5PRU5UIHx8IGVycm51bSA9PSBFTk9U
RElSOworfQorCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSAidmVyc2lvbi5oIgog
CmRpZmYgLS1naXQgYS90ZXN0cy9jaGNvbi90cmF2ZXJzYWwtbWlzc2luZy5zaCBiL3Rlc3Rz
L2NoY29uL3RyYXZlcnNhbC1taXNzaW5nLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAwMC4uMzU2ZDdjZTRkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvY2hjb24v
dHJhdmVyc2FsLW1pc3Npbmcuc2gKQEAgLTAsMCArMSw0OCBAQAorIyEvYmluL3NoCisjIFRl
c3QgaWdub3JpbmcgdHJhdmVyc2FsIHJhY2VzIHVzaW5nIHN0cmFjZSBmYXVsdCBpbmplY3Rp
b24uCisKKyMgQ29weXJpZ2h0IChDKSAyMDI2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us
IG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyMgVGhpcyBw
cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRo
aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz
Lz4uCisKKy4gIiR7c3JjZGlyPS59L3Rlc3RzL2luaXQuc2giOyBwYXRoX3ByZXBlbmRfIC4v
c3JjCitwcmludF92ZXJfIGNoY29uCityZXF1aXJlX3N0cmFjZV8gZ2V0eGF0dHIKKworbWtk
aXIgZCB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KK3RvdWNoIGQvZm9vIHx8IGZyYW1ld29ya19m
YWlsdXJlXworeGF0dHJzPWdldHhhdHRyLGxnZXR4YXR0cixzZXR4YXR0cixsc2V0eGF0dHIK
KworKGNkIGQgJiYgY2hjb24gLVIgLXQgdXNlcl90bXBfdCAuID4gL2Rldi9udWxsIDI+JjEp
IFwKKyAgfHwgc2tpcF8gJ2NoY29uIGRvZXMgbm90IHdvcmsgb24gdGhlIHRlc3QgZmlsZSBz
eXN0ZW0nCisKKyMgU2tpcCBpZiBzdHJhY2UgZG9lcyBub3Qgc3VwcG9ydCBwYXRoLWZpbHRl
cmVkIHN5c2NhbGwgaW5qZWN0aW9uLgorc3RyYWNlIC0tcXVpZXQ9YWxsIC1vIC9kZXYvbnVs
bCAtUCAvcHJvYy9zZWxmL2ZkLzQvZm9vIFwKKyAgLWUgaW5qZWN0PSR4YXR0cnM6ZXJyb3I9
RU5PRU5UIHRydWUgMj4gL2Rldi9udWxsIFwKKyAgfHwgc2tpcF8gJ3N0cmFjZSBkb2VzIG5v
dCBzdXBwb3J0IHRoZSByZXF1aXJlZCBvcHRpb25zIGFuZCBzeXNjYWxscycKKworZm9yIGVy
cm51bSBpbiBFTk9FTlQgRU5PVERJUjsgZG8KKyAgcm0gLWYgZXJyIHRyYWNlCisgIChjZCBk
ICYmIHN0cmFjZSAtLXF1aWV0PWFsbCAtbyAuLi90cmFjZSAtUCAvcHJvYy9zZWxmL2ZkLzQv
Zm9vIFwKKyAgICAgLWUgaW5qZWN0PSR4YXR0cnM6ZXJyb3I9JGVycm51bSBjaGNvbiAtUiAt
dCB1c2VyX3RtcF90IC4gXAorICAgICA+IC9kZXYvbnVsbCAyPiAuLi9lcnIpCisgIHN0YXR1
cz0kPworCisgIGdyZXAgJyAoSU5KRUNURUQpJyB0cmFjZSA+IC9kZXYvbnVsbCAyPiYxIFwK
KyAgICB8fCBza2lwXyAnc3RyYWNlIGRpZCBub3QgaW5qZWN0IHRoZSByZXF1ZXN0ZWQgZmFp
bHVyZScKKyAgdGVzdCAkc3RhdHVzIC1lcSAwIHx8IGZhaWw9MQorICB0ZXN0ICEgLXMgZXJy
IHx8IHsgY2F0IGVycjsgZmFpbD0xOyB9Citkb25lCisKK0V4aXQgJGZhaWwKZGlmZiAtLWdp
dCBhL3Rlc3RzL2xvY2FsLm1rIGIvdGVzdHMvbG9jYWwubWsKaW5kZXggMThiZjc5ODYxLi45
NDE0ZGJmOWQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xvY2FsLm1rCisrKyBiL3Rlc3RzL2xvY2Fs
Lm1rCkBAIC0xODUsNiArMTg1LDcgQEAgYWxsX3Rlc3RzID0JCQkJCVwKICAgdGVzdHMvbWlz
Yy9pby1lcnJvcnMuc2gJCQlcCiAgIHRlc3RzL21pc2MvcmVhZC1lcnJvcnMuc2gJCQlcCiAg
IHRlc3RzL21pc2MvcmVzcG9uc2l2ZS5zaAkJCVwKKyAgdGVzdHMvbWlzYy90cmF2ZXJzYWwt
bWlzc2luZy5zaAkJXAogICB0ZXN0cy9taXNjL3dhcm5pbmctZXJyb3JzLnNoCQkJXAogICB0
ZXN0cy9taXNjL3dyaXRlLWVycm9ycy5zaAkJCVwKICAgdGVzdHMvdGFpbC9iYXNpYy1zZWVr
LnNoCQkJXApAQCAtMjk3LDYgKzI5OCw3IEBAIGFsbF90ZXN0cyA9CQkJCQlcCiAgIHRlc3Rz
L3B3ZC9hcmd1bWVudC5zaAkJCQlcCiAgIHRlc3RzL3B3ZC9wd2Qtb3B0aW9uLnNoCQkJXAog
ICB0ZXN0cy9jaGNvbi9jaGNvbi1mYWlsLnNoCQkJXAorICB0ZXN0cy9jaGNvbi90cmF2ZXJz
YWwtbWlzc2luZy5zaAkJXAogICB0ZXN0cy9taXNjL2NvcmV1dGlscy5zaAkJCVwKICAgdGVz
dHMvY3V0L2N1dC5wbAkJCQlcCiAgIHRlc3RzL2N1dC9tYi1ub24tdXRmOC5zaAkJCVwKZGlm
ZiAtLWdpdCBhL3Rlc3RzL21pc2MvdHJhdmVyc2FsLW1pc3Npbmcuc2ggYi90ZXN0cy9taXNj
L3RyYXZlcnNhbC1taXNzaW5nLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAwMC4uMWZhN2RkODg4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvbWlzYy90cmF2ZXJz
YWwtbWlzc2luZy5zaApAQCAtMCwwICsxLDY4IEBACisjIS9iaW4vc2gKKyMgVGVzdCBpZ25v
cmluZyB0cmF2ZXJzYWwgcmFjZXMgdXNpbmcgc3RyYWNlIGZhdWx0IGluamVjdGlvbi4KKwor
IyBDb3B5cmlnaHQgKEMpIDIwMjYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisK
KyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMg
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIyBUaGlzIHByb2dyYW0g
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9n
cmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKwor
LiAiJHtzcmNkaXI9Ln0vdGVzdHMvaW5pdC5zaCI7IHBhdGhfcHJlcGVuZF8gLi9zcmMKK3By
aW50X3Zlcl8gbHMgY2htb2QgY2hvd24gY2hncnAgZHUKK3JlcXVpcmVfc3RyYWNlXyBzdGF0
CisKK21rZGlyIGQgfHwgZnJhbWV3b3JrX2ZhaWx1cmVfCit0b3VjaCBkL2ZvbyB8fCBmcmFt
ZXdvcmtfZmFpbHVyZV8KK3VpZD0kKGlkIC11KSB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KK2dp
ZD0kKGlkIC1nKSB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KKworc3RhdHM9J3N0YXQnCisjIExp
c3Qgb3RoZXIgX2ZpbGUgbmFtZV8gc3RhdCBmdW5jdGlvbnMgdG8gaW5jcmVhc2UgY292ZXJh
Z2UuCitvdGhlcl9zdGF0cz0nc3RhdHggbHN0YXQgc3RhdDY0IGxzdGF0NjQgbmV3ZnN0YXRh
dCBmc3RhdGF0NjQnCitmb3Igc3RhdCBpbiAkb3RoZXJfc3RhdHM7IGRvCisgIHN0cmFjZSAt
cWUgIiRzdGF0IiB0cnVlID4gL2Rldi9udWxsIDI+JjEgJiYKKyAgICBzdGF0cz0iJHN0YXRz
LCRzdGF0IgorZG9uZQorCitjaG1vZHM9Y2htb2QsZmNobW9kYXQsZmNobW9kYXQyCitjaG93
bnM9Y2hvd24sbGNob3duLGZjaG93bmF0CisKKyMgU2tpcCBpZiBzdHJhY2UgZG9lcyBub3Qg
c3VwcG9ydCBwYXRoLWZpbHRlcmVkIHN5c2NhbGwgaW5qZWN0aW9uLgorc3RyYWNlIC0tcXVp
ZXQ9YWxsIC1vIC9kZXYvbnVsbCAtUCBmb28gXAorICAtZSBpbmplY3Q9JHN0YXRzOmVycm9y
PUVOT0VOVCB0cnVlIDI+IC9kZXYvbnVsbCBcCisgIHx8IHNraXBfICdzdHJhY2UgZG9lcyBu
b3Qgc3VwcG9ydCB0aGUgcmVxdWlyZWQgb3B0aW9ucyBhbmQgc3lzY2FsbHMnCisKK3J1bl9p
bmplY3RlZF8gKCkKK3sKKyAgcGF0aD0kMQorICBzeXNjYWxscz0kMgorICBzaGlmdCAyCisg
IHJtIC1mIGVyciB0cmFjZQorICAoY2QgZCAmJiBzdHJhY2UgLS1xdWlldD1hbGwgLW8gLi4v
dHJhY2UgLVAgIiRwYXRoIiBcCisgICAgIC1lIGluamVjdD0iJHN5c2NhbGxzOmVycm9yPSRl
cnJudW0iICIkQCIgPiAvZGV2L251bGwgMj4gLi4vZXJyKQorICBzdGF0dXM9JD8KKworICBn
cmVwICcgKElOSkVDVEVEKScgdHJhY2UgPiAvZGV2L251bGwgMj4mMSBcCisgICAgfHwgc2tp
cF8gJ3N0cmFjZSBkaWQgbm90IGluamVjdCB0aGUgcmVxdWVzdGVkIGZhaWx1cmUnCisgIHRl
c3QgJHN0YXR1cyAtZXEgMCB8fCBmYWlsPTEKKyAgdGVzdCAhIC1zIGVyciB8fCB7IGNhdCBl
cnI7IGZhaWw9MTsgfQorfQorCitmb3IgZXJybnVtIGluIEVOT0VOVCBFTk9URElSOyBkbwor
ICBydW5faW5qZWN0ZWRfIGZvbyAiJHN0YXRzIiBscyAtbCAuCisgIHJ1bl9pbmplY3RlZF8g
Zm9vICIkc3RhdHMiIGR1IC1hIC4KKyAgcnVuX2luamVjdGVkXyBmb28gIiRjaG1vZHMiIGNo
bW9kIC1SIDA3MDAgLgorICBydW5faW5qZWN0ZWRfIGZvbyAiJGNob3ducyIgY2hvd24gLVIg
IiR1aWQiIC4KKyAgcnVuX2luamVjdGVkXyBmb28gIiRjaG93bnMiIGNoZ3JwIC1SICIkZ2lk
IiAuCitkb25lCisKK0V4aXQgJGZhaWwKLS0gCjIuNTUuMAoK

--------------EqjuCzz7zfjzHt7XDD46Bmu3--