[SCM] The rsync repository. - branch master updated

Rsync CVS commit messages <[email protected]> Mon, 10 Oct 2016 20:54:21 +0200 (CEST)
Newsgroups gmane.network.rsync.cvs
Message-ID <[email protected]>
VGhlIGJyYW5jaCwgbWFzdGVyIGhhcyBiZWVuIHVwZGF0ZWQKICAgICAgIHZpYSAgZjM4NzNiMyBT
dXBwb3J0IC0tc3BhcnNlIGNvbWJpbmVkIHdpdGggLS1wcmVhbGxvY2F0ZSBvciAtLWlucGxhY2Uu
CiAgICAgIGZyb20gIDZlM2IyMTAgeGF0dHJzOiBtYWludGFpbiBhIGhhc2h0YWJsZSBpbiBvcmRl
ciB0byBzcGVlZCB1cCBmaW5kX21hdGNoaW5nX3hhdHRyKCkKCmh0dHBzOi8vZ2l0LnNhbWJhLm9y
Zy8/cD1yc3luYy5naXQ7YT1zaG9ydGxvZztoPW1hc3RlcgoKCi0gTG9nIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmNvbW1p
dCBmMzg3M2IzZDg4YjYxMTY3YjEwNmU3YjkyMjdhMjAxNDdmOGY2MTk3CkF1dGhvcjogV2F5bmUg
RGF2aXNvbiA8d2F5bmVkQHNhbWJhLm9yZz4KRGF0ZTogICBNb24gT2N0IDEwIDExOjQ5OjUwIDIw
MTYgLTA3MDAKCiAgICBTdXBwb3J0IC0tc3BhcnNlIGNvbWJpbmVkIHdpdGggLS1wcmVhbGxvY2F0
ZSBvciAtLWlucGxhY2UuCiAgICAKICAgIFRoZSBuZXcgY29kZSB0cmllcyB0byBwdW5jaCBob2xl
cyBpbiB0aGUgZGVzdGluYXRpb24gZmlsZSB1c2luZyBuZXdlcgogICAgTGludXggZmFsbG9jYXRl
IGZlYXR1cmVzLiBJdCBhbHNvIHN1cHBvcnRzIGEgLS13aG9sZS1maWxlICsgLS1zcGFyc2UgKwog
ICAgLS1pbnBsYWNlIGNvcHkgb24gYW55IGZpbGVzeXN0ZW0gYnkgdHJ1bmNhdGluZyB0aGUgZGVz
dGluYXRpb24gZmlsZS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpTdW1tYXJ5IG9mIGNoYW5nZXM6CiBjb25m
aWd1cmUuYWMgfCAzMCArKysrKysrKysrKysrKysrKysrKysrKysrKysKIGZpbGVpby5jICAgICB8
IDY3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t
LS0tLS0tLQogb3B0aW9ucy5jICAgIHwgMTAgKy0tLS0tLS0tCiByZWNlaXZlci5jICAgfCA2NiAr
KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogcnN5bmMueW8gICAgIHwgMjYgKysrKysrKysrKysrKysrLS0tLS0tLS0KIHN5c2NhbGwuYyAg
ICB8IDY1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrLS0tLS0KIHRfc3R1Yi5jICAgICB8ICAxICsKIHRscy5jICAgICAgICB8ICAyICsrCiB0cmlt
c2xhc2guYyAgfCAgMiArKwogdXRpbC5jICAgICAgIHwgMTcgKysrKy0tLS0tLS0tLS0tCiAxMCBm
aWxlcyBjaGFuZ2VkLCAyMDIgaW5zZXJ0aW9ucygrKSwgODQgZGVsZXRpb25zKC0pCgoKQ2hhbmdl
c2V0IHRydW5jYXRlZCBhdCA1MDAgbGluZXM6CgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIv
Y29uZmlndXJlLmFjCmluZGV4IGI1ZTQwNDkuLmUwMWUxMjQgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3Vy
ZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTYxNCw2ICs2MTQsMzYgQEAgaWYgdGVzdCB4IiRy
c3luY19jdl9oYXZlX2ZhbGxvY2F0ZSIgPSB4InllcyI7IHRoZW4KICAgICBBQ19ERUZJTkUoSEFW
RV9GQUxMT0NBVEUsIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZmFsbG9jYXRlIGZ1
bmN0aW9uIGFuZCBpdCBjb21waWxlcyBhbmQgbGlua3Mgd2l0aG91dCBlcnJvcl0pCiBmaQogCitB
Q19NU0dfQ0hFQ0tJTkcoW2ZvciBGQUxMT0NfRkxfUFVOQ0hfSE9MRV0pCitBQ19QUkVQUk9DX0lG
RUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAgICAgI2RlZmluZSBfR05VX1NPVVJDRSAxCisg
ICAgICAgICNpbmNsdWRlIDxsaW51eC9mYWxsb2MuaD4KKyAgICAgICAgI2lmbmRlZiBGQUxMT0Nf
RkxfUFVOQ0hfSE9MRQorICAgICAgICAjZXJyb3IgRkFMTE9DX0ZMX1BVTkNIX0hPTEUgaXMgbWlz
c2luZworICAgICAgICAjZW5kaWYKKyAgICBdXSldLCBbCisgICAgICAgIEFDX01TR19SRVNVTFQo
W3llc10pCisgICAgICAgIEFDX0RFRklORShbSEFWRV9GQUxMT0NfRkxfUFVOQ0hfSE9MRV0sIFsx
XSwgW0RlZmluZSBpZiBGQUxMT0NfRkxfUFVOQ0hfSE9MRSBpcyBhdmFpbGFibGUuXSkKKyAgICBd
LCBbCisgICAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgICBdCispCisKK0FDX01TR19DSEVD
S0lORyhbZm9yIEZBTExPQ19GTF9aRVJPX1JBTkdFXSkKK0FDX1BSRVBST0NfSUZFTFNFKFtBQ19M
QU5HX1NPVVJDRShbWworICAgICAgICAjZGVmaW5lIF9HTlVfU09VUkNFIDEKKyAgICAgICAgI2lu
Y2x1ZGUgPGxpbnV4L2ZhbGxvYy5oPgorICAgICAgICAjaWZuZGVmIEZBTExPQ19GTF9aRVJPX1JB
TkdFCisgICAgICAgICNlcnJvciBGQUxMT0NfRkxfWkVST19SQU5HRSBpcyBtaXNzaW5nCisgICAg
ICAgICNlbmRpZgorICAgIF1dKV0sIFsKKyAgICAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKKyAg
ICAgICAgQUNfREVGSU5FKFtIQVZFX0ZBTExPQ19GTF9aRVJPX1JBTkdFXSwgWzFdLCBbRGVmaW5l
IGlmIEZBTExPQ19GTF9aRVJPX1JBTkdFIGlzIGF2YWlsYWJsZS5dKQorICAgIF0sIFsKKyAgICAg
ICAgQUNfTVNHX1JFU1VMVChbbm9dKQorICAgIF0KKykKKwogQUNfQ0FDSEVfQ0hFQ0soW2ZvciBT
WVNfZmFsbG9jYXRlXSxyc3luY19jdl9oYXZlX3N5c19mYWxsb2NhdGUsWwogQUNfQ09NUElMRV9J
RkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgogI2luY2x1
ZGUgPHN5cy90eXBlcy5oPl1dLCBbW3N5c2NhbGwoU1lTX2ZhbGxvY2F0ZSwgMCwgMCwgKGxvZmZf
dCkwLCAobG9mZl90KTApO11dKV0sW3JzeW5jX2N2X2hhdmVfc3lzX2ZhbGxvY2F0ZT15ZXNdLFty
c3luY19jdl9oYXZlX3N5c19mYWxsb2NhdGU9bm9dKV0pCmRpZmYgLS1naXQgYS9maWxlaW8uYyBi
L2ZpbGVpby5jCmluZGV4IDcwZTA3OWQuLjFlOGE1NjIgMTAwNjQ0Ci0tLSBhL2ZpbGVpby5jCisr
KyBiL2ZpbGVpby5jCkBAIC0zNSw3ICszNSwxMCBAQAogCiBleHRlcm4gaW50IHNwYXJzZV9maWxl
czsKIAorT0ZGX1QgcHJlYWxsb2NhdGVkX2xlbiA9IDA7CisKIHN0YXRpYyBPRkZfVCBzcGFyc2Vf
c2VlayA9IDA7CitzdGF0aWMgT0ZGX1Qgc3BhcnNlX3Bhc3Rfd3JpdGUgPSAwOwogCiBpbnQgc3Bh
cnNlX2VuZChpbnQgZiwgT0ZGX1Qgc2l6ZSkKIHsKQEAgLTYzLDggKzY2LDEwIEBAIGludCBzcGFy
c2VfZW5kKGludCBmLCBPRkZfVCBzaXplKQogCXJldHVybiByZXQ7CiB9CiAKLQotc3RhdGljIGlu
dCB3cml0ZV9zcGFyc2UoaW50IGYsIGNoYXIgKmJ1ZiwgaW50IGxlbikKKy8qIE5vdGUgdGhhdCB0
aGUgb2Zmc2V0IGlzIGp1c3QgdGhlIGNhbGxlciBsZXR0aW5nIHVzIGtub3cgd2hlcmUKKyAqIHRo
ZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgaW4gdGhlIGZpbGUuIFRoZSB1c2Vfc2VlayBhcmcg
dGVsbHMKKyAqIHVzIHRoYXQgd2Ugc2hvdWxkIHNlZWsgb3ZlciBtYXRjaGluZyBkYXRhIGluc3Rl
YWQgb2Ygd3JpdGluZyBpdC4gKi8KK3N0YXRpYyBpbnQgd3JpdGVfc3BhcnNlKGludCBmLCBpbnQg
dXNlX3NlZWssIE9GRl9UIG9mZnNldCwgY29uc3QgY2hhciAqYnVmLCBpbnQgbGVuKQogewogCWlu
dCBsMSA9IDAsIGwyID0gMDsKIAlpbnQgcmV0OwpAQCAtNzcsOSArODIsMjQgQEAgc3RhdGljIGlu
dCB3cml0ZV9zcGFyc2UoaW50IGYsIGNoYXIgKmJ1ZiwgaW50IGxlbikKIAlpZiAobDEgPT0gbGVu
KQogCQlyZXR1cm4gbGVuOwogCi0JaWYgKHNwYXJzZV9zZWVrKQotCQlkb19sc2VlayhmLCBzcGFy
c2Vfc2VlaywgU0VFS19DVVIpOworCWlmIChzcGFyc2Vfc2VlaykgeworCQlpZiAoc3BhcnNlX3Bh
c3Rfd3JpdGUgPj0gcHJlYWxsb2NhdGVkX2xlbikgeworCQkJaWYgKGRvX2xzZWVrKGYsIHNwYXJz
ZV9zZWVrLCBTRUVLX0NVUikgPCAwKQorCQkJCXJldHVybiAtMTsKKwkJfSBlbHNlIGlmIChkb19w
dW5jaF9ob2xlKGYsIHNwYXJzZV9wYXN0X3dyaXRlLCBzcGFyc2Vfc2VlaykgPCAwKSB7CisJCQlz
cGFyc2Vfc2VlayA9IDA7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CiAJc3BhcnNlX3NlZWsgPSBs
MjsKKwlzcGFyc2VfcGFzdF93cml0ZSA9IG9mZnNldCArIGxlbiAtIGwyOworCisJaWYgKHVzZV9z
ZWVrKSB7CisJCS8qIFRoZSBpbi1wbGFjZSBkYXRhIGFscmVhZHkgbWF0Y2hlcy4gKi8KKwkJaWYg
KGRvX2xzZWVrKGYsIGxlbiAtIChsMStsMiksIFNFRUtfQ1VSKSA8IDApCisJCQlyZXR1cm4gLTE7
CisJCXJldHVybiBsZW47CisJfQogCiAJd2hpbGUgKChyZXQgPSB3cml0ZShmLCBidWYgKyBsMSwg
bGVuIC0gKGwxK2wyKSkpIDw9IDApIHsKIAkJaWYgKHJldCA8IDAgJiYgZXJybm8gPT0gRUlOVFIp
CkBAIC05Niw3ICsxMTYsNiBAQCBzdGF0aWMgaW50IHdyaXRlX3NwYXJzZShpbnQgZiwgY2hhciAq
YnVmLCBpbnQgbGVuKQogCXJldHVybiBsZW47CiB9CiAKLQogc3RhdGljIGNoYXIgKndmX3dyaXRl
QnVmOwogc3RhdGljIHNpemVfdCB3Zl93cml0ZUJ1ZlNpemU7CiBzdGF0aWMgc2l6ZV90IHdmX3dy
aXRlQnVmQ250OwpAQCAtMTE4LDEyICsxMzcsMTAgQEAgaW50IGZsdXNoX3dyaXRlX2ZpbGUoaW50
IGYpCiAJcmV0dXJuIHJldDsKIH0KIAotCi0vKgotICogd3JpdGVfZmlsZSBkb2VzIG5vdCBhbGxv
dyBpbmNvbXBsZXRlIHdyaXRlcy4gIEl0IGxvb3BzIGludGVybmFsbHkKLSAqIHVudGlsIGxlbiBi
eXRlcyBhcmUgd3JpdHRlbiBvciBlcnJubyBpcyBzZXQuCi0gKi8KLWludCB3cml0ZV9maWxlKGlu
dCBmLCBjaGFyICpidWYsIGludCBsZW4pCisvKiB3cml0ZV9maWxlIGRvZXMgbm90IGFsbG93IGlu
Y29tcGxldGUgd3JpdGVzLiAgSXQgbG9vcHMgaW50ZXJuYWxseQorICogdW50aWwgbGVuIGJ5dGVz
IGFyZSB3cml0dGVuIG9yIGVycm5vIGlzIHNldC4gIE5vdGUgdGhhdCB1c2Vfc2VlayBhbmQKKyAq
IG9mZnNldCBhcmUgb25seSB1c2VkIGluIHNwYXJzZSBwcm9jZXNzaW5nIChzZWUgd3JpdGVfc3Bh
cnNlKCkpLiAqLworaW50IHdyaXRlX2ZpbGUoaW50IGYsIGludCB1c2Vfc2VlaywgT0ZGX1Qgb2Zm
c2V0LCBjb25zdCBjaGFyICpidWYsIGludCBsZW4pCiB7CiAJaW50IHJldCA9IDA7CiAKQEAgLTEz
MSw3ICsxNDgsOCBAQCBpbnQgd3JpdGVfZmlsZShpbnQgZiwgY2hhciAqYnVmLCBpbnQgbGVuKQog
CQlpbnQgcjE7CiAJCWlmIChzcGFyc2VfZmlsZXMgPiAwKSB7CiAJCQlpbnQgbGVuMSA9IE1JTihs
ZW4sIFNQQVJTRV9XUklURV9TSVpFKTsKLQkJCXIxID0gd3JpdGVfc3BhcnNlKGYsIGJ1ZiwgbGVu
MSk7CisJCQlyMSA9IHdyaXRlX3NwYXJzZShmLCB1c2Vfc2Vlaywgb2Zmc2V0LCBidWYsIGxlbjEp
OworCQkJb2Zmc2V0ICs9IHIxOwogCQl9IGVsc2UgewogCQkJaWYgKCF3Zl93cml0ZUJ1Zikgewog
CQkJCXdmX3dyaXRlQnVmU2l6ZSA9IFdSSVRFX1NJWkUgKiA4OwpAQCAtMTY0LDYgKzE4MiwzMCBA
QCBpbnQgd3JpdGVfZmlsZShpbnQgZiwgY2hhciAqYnVmLCBpbnQgbGVuKQogCXJldHVybiByZXQ7
CiB9CiAKKy8qIEFuIGluLXBsYWNlIHVwZGF0ZSBmb3VuZCBpZGVudGljYWwgZGF0YSBhdCBhbiBp
ZGVudGljYWwgbG9jYXRpb24uIFdlIGVpdGhlcgorICoganVzdCBzZWVrIHBhc3QgaXQsIG9yIChm
b3IgYW4gaW4tcGxhY2Ugc3BhcnNlIHVwZGF0ZSksIHdlIGdpdmUgdGhlIGRhdGEgdG8KKyAqIHRo
ZSBzcGFyc2UgcHJvY2Vzc29yIHdpdGggdGhlIHVzZV9zZWVrIGZsYWcgc2V0LiAqLworaW50IHNr
aXBfbWF0Y2hlZChpbnQgZmQsIE9GRl9UIG9mZnNldCwgY29uc3QgY2hhciAqYnVmLCBpbnQgbGVu
KQoreworCU9GRl9UIHBvczsKKworCWlmIChzcGFyc2VfZmlsZXMgPiAwKSB7CisJCWlmICh3cml0
ZV9maWxlKGZkLCAxLCBvZmZzZXQsIGJ1ZiwgbGVuKSAhPSBsZW4pCisJCQlyZXR1cm4gLTE7CisJ
CXJldHVybiAwOworCX0KKworCWlmIChmbHVzaF93cml0ZV9maWxlKGZkKSA8IDApCisJCXJldHVy
biAtMTsKKworCWlmICgocG9zID0gZG9fbHNlZWsoZmQsIGxlbiwgU0VFS19DVVIpKSAhPSBvZmZz
ZXQgKyBsZW4pIHsKKwkJcnN5c2VycihGRVJST1JfWEZFUiwgZXJybm8sICJsc2VlayByZXR1cm5l
ZCAlcywgbm90ICVzIiwKKwkJCWJpZ19udW0ocG9zKSwgYmlnX251bShvZmZzZXQpKTsKKwkJcmV0
dXJuIC0xOworCX0KKworCXJldHVybiAwOworfQogCiAvKiBUaGlzIHByb3ZpZGVzIGZ1bmN0aW9u
YWxpdHkgc29tZXdoYXQgc2ltaWxhciB0byBtbWFwKCkgYnV0IHVzaW5nIHJlYWQoKS4KICAqIEl0
IGdpdmVzIHNsaWRpbmcgd2luZG93IGFjY2VzcyB0byBhIGZpbGUuICBtbWFwKCkgaXMgbm90IHVz
ZWQgYmVjYXVzZSBvZgpAQCAtMjcxLDcgKzMxMyw2IEBAIGNoYXIgKm1hcF9wdHIoc3RydWN0IG1h
cF9zdHJ1Y3QgKm1hcCwgT0ZGX1Qgb2Zmc2V0LCBpbnQzMiBsZW4pCiAJcmV0dXJuIG1hcC0+cCAr
IGFsaWduX2Z1ZGdlOwogfQogCi0KIGludCB1bm1hcF9maWxlKHN0cnVjdCBtYXBfc3RydWN0ICpt
YXApCiB7CiAJaW50CXJldDsKZGlmZiAtLWdpdCBhL29wdGlvbnMuYyBiL29wdGlvbnMuYwppbmRl
eCAzMDg0NDNiLi42YmExM2I3IDEwMDY0NAotLS0gYS9vcHRpb25zLmMKKysrIGIvb3B0aW9ucy5j
CkBAIC03MTQsNyArNzE0LDcgQEAgdm9pZCB1c2FnZShlbnVtIGxvZ2NvZGUgRikKICNpZmRlZiBT
VVBQT1JUX1hBVFRSUwogICBycHJpbnRmKEYsIiAgICAgLS1mYWtlLXN1cGVyICAgICAgICAgICAg
c3RvcmUvcmVjb3ZlciBwcml2aWxlZ2VkIGF0dHJzIHVzaW5nIHhhdHRyc1xuIik7CiAjZW5kaWYK
LSAgcnByaW50ZihGLCIgLVMsIC0tc3BhcnNlICAgICAgICAgICAgICAgIGhhbmRsZSBzcGFyc2Ug
ZmlsZXMgZWZmaWNpZW50bHlcbiIpOworICBycHJpbnRmKEYsIiAtUywgLS1zcGFyc2UgICAgICAg
ICAgICAgICAgdHVybiBzZXF1ZW5jZXMgb2YgbnVsbHMgaW50byBzcGFyc2UgYmxvY2tzXG4iKTsK
ICNpZmRlZiBTVVBQT1JUX1BSRUFMTE9DQVRJT04KICAgcnByaW50ZihGLCIgICAgIC0tcHJlYWxs
b2NhdGUgICAgICAgICAgIGFsbG9jYXRlIGRlc3QgZmlsZXMgYmVmb3JlIHdyaXRpbmcgdGhlbVxu
Iik7CiAjZWxzZQpAQCAtMjIzNywxNCArMjIzNyw2IEBAIGludCBwYXJzZV9hcmd1bWVudHMoaW50
ICphcmdjX3AsIGNvbnN0IGNoYXIgKioqYXJndl9wKQogCQkJYndsaW1pdF93cml0ZW1heCA9IDUx
MjsKIAl9CiAKLQlpZiAoc3BhcnNlX2ZpbGVzICYmIGlucGxhY2UpIHsKLQkJLyogTm90ZTogd2Ug
ZG9uJ3QgY2hlY2sgZm9yIHRoaXMgYmVsb3csIGJlY2F1c2UgLS1hcHBlbmQgaXMKLQkJICogT0sg
d2l0aCAtLXNwYXJzZSAoYXMgbG9uZyBhcyByZWRvcyBhcmUgaGFuZGxlZCByaWdodCkuICovCi0J
CXNucHJpbnRmKGVycl9idWYsIHNpemVvZiBlcnJfYnVmLAotCQkJICItLXNwYXJzZSBjYW5ub3Qg
YmUgdXNlZCB3aXRoIC0taW5wbGFjZVxuIik7Ci0JCXJldHVybiAwOwotCX0KLQogCWlmIChhcHBl
bmRfbW9kZSkgewogCQlpZiAod2hvbGVfZmlsZSA+IDApIHsKIAkJCXNucHJpbnRmKGVycl9idWYs
IHNpemVvZiBlcnJfYnVmLApkaWZmIC0tZ2l0IGEvcmVjZWl2ZXIuYyBiL3JlY2VpdmVyLmMKaW5k
ZXggZjliOTdkZC4uYmVkNTMyOCAxMDA2NDQKLS0tIGEvcmVjZWl2ZXIuYworKysgYi9yZWNlaXZl
ci5jCkBAIC00OSw2ICs0OSw3IEBAIGV4dGVybiBpbnQgc3BhcnNlX2ZpbGVzOwogZXh0ZXJuIGlu
dCBwcmVhbGxvY2F0ZV9maWxlczsKIGV4dGVybiBpbnQga2VlcF9wYXJ0aWFsOwogZXh0ZXJuIGlu
dCBjaGVja3N1bV9zZWVkOworZXh0ZXJuIGludCB3aG9sZV9maWxlOwogZXh0ZXJuIGludCBpbnBs
YWNlOwogZXh0ZXJuIGludCBhbGxvd2VkX2x1bGw7CiBleHRlcm4gaW50IGRlbGF5X3VwZGF0ZXM7
CkBAIC02MSw2ICs2Miw5IEBAIGV4dGVybiBjaGFyICpiYXNpc19kaXJbTUFYX0JBU0lTX0RJUlMr
MV07CiBleHRlcm4gY2hhciBzZW5kZXJfZmlsZV9zdW1bTUFYX0RJR0VTVF9MRU5dOwogZXh0ZXJu
IHN0cnVjdCBmaWxlX2xpc3QgKmN1cl9mbGlzdCwgKmZpcnN0X2ZsaXN0LCAqZGlyX2ZsaXN0Owog
ZXh0ZXJuIGZpbHRlcl9ydWxlX2xpc3QgZGFlbW9uX2ZpbHRlcl9saXN0OworI2lmZGVmIFNVUFBP
UlRfUFJFQUxMT0NBVElPTgorZXh0ZXJuIE9GRl9UIHByZWFsbG9jYXRlZF9sZW47CisjZW5kaWYK
IAogc3RhdGljIHN0cnVjdCBiaXRiYWcgKmRlbGF5ZWRfYml0cyA9IE5VTEw7CiBzdGF0aWMgaW50
IHBoYXNlID0gMCwgcmVkb2luZyA9IDA7CkBAIC0yNDEsMjIgKzI0NSwyNSBAQCBzdGF0aWMgaW50
IHJlY2VpdmVfZGF0YShpbnQgZl9pbiwgY2hhciAqZm5hbWVfciwgaW50IGZkX3IsIE9GRl9UIHNp
emVfciwKIAljaGFyICpkYXRhOwogCWludDMyIGk7CiAJY2hhciAqbWFwID0gTlVMTDsKLSNpZmRl
ZiBTVVBQT1JUX1BSRUFMTE9DQVRJT04KLSNpZmRlZiBQUkVBTExPQ0FURV9ORUVEU19UUlVOQ0FU
RQotCU9GRl9UIHByZWFsbG9jYXRlZF9sZW4gPSAwOwotI2VuZGlmCiAKKyNpZmRlZiBTVVBQT1JU
X1BSRUFMTE9DQVRJT04KIAlpZiAocHJlYWxsb2NhdGVfZmlsZXMgJiYgZmQgIT0gLTEgJiYgdG90
YWxfc2l6ZSA+IDAgJiYgKCFpbnBsYWNlIHx8IHRvdGFsX3NpemUgPiBzaXplX3IpKSB7CiAJCS8q
IFRyeSB0byBwcmVhbGxvY2F0ZSBlbm91Z2ggc3BhY2UgZm9yIGZpbGUncyBldmVudHVhbCBsZW5n
dGguICBDYW4KIAkJICogcmVkdWNlIGZyYWdtZW50YXRpb24gb24gZmlsZXN5c3RlbXMgbGlrZSBl
eHQ0LCB4ZnMsIGFuZCBOVEZTLiAqLwotCQlpZiAoZG9fZmFsbG9jYXRlKGZkLCAwLCB0b3RhbF9z
aXplKSA9PSAwKSB7Ci0jaWZkZWYgUFJFQUxMT0NBVEVfTkVFRFNfVFJVTkNBVEUKLQkJCXByZWFs
bG9jYXRlZF9sZW4gPSB0b3RhbF9zaXplOwotI2VuZGlmCi0JCX0gZWxzZQorCQlpZiAoKHByZWFs
bG9jYXRlZF9sZW4gPSBkb19mYWxsb2NhdGUoZmQsIDAsIHRvdGFsX3NpemUpKSA8IDApCiAJCQly
c3lzZXJyKEZXQVJOSU5HLCBlcnJubywgImRvX2ZhbGxvY2F0ZSAlcyIsIGZ1bGxfZm5hbWUoZm5h
bWUpKTsKLQl9CisJfSBlbHNlCisjZW5kaWYKKwlpZiAoaW5wbGFjZSkgeworI2lmZGVmIEhBVkVf
RlRSVU5DQVRFCisJCS8qIFRoZSBtb3N0IGNvbXBhdGlibGUgd2F5IHRvIGNyZWF0ZSBhIHNwYXJz
ZSBmaWxlIGlzIHRvIHN0YXJ0IHdpdGggbm8gbGVuZ3RoLiAqLworCQlpZiAoc3BhcnNlX2ZpbGVz
ID4gMCAmJiB3aG9sZV9maWxlICYmIGZkID49IDAgJiYgZG9fZnRydW5jYXRlKGZkLCAwKSA9PSAw
KQorCQkJcHJlYWxsb2NhdGVkX2xlbiA9IDA7CisJCWVsc2UKICNlbmRpZgorCQkJcHJlYWxsb2Nh
dGVkX2xlbiA9IHNpemVfcjsKKwl9IGVsc2UKKwkJcHJlYWxsb2NhdGVkX2xlbiA9IDA7CiAKIAly
ZWFkX3N1bV9oZWFkKGZfaW4sICZzdW0pOwogCkBAIC0zMTgsNyArMzI1LDcgQEAgc3RhdGljIGlu
dCByZWNlaXZlX2RhdGEoaW50IGZfaW4sIGNoYXIgKmZuYW1lX3IsIGludCBmZF9yLCBPRkZfVCBz
aXplX3IsCiAKIAkJCXN1bV91cGRhdGUoZGF0YSwgaSk7CiAKLQkJCWlmIChmZCAhPSAtMSAmJiB3
cml0ZV9maWxlKGZkLGRhdGEsaSkgIT0gaSkKKwkJCWlmIChmZCAhPSAtMSAmJiB3cml0ZV9maWxl
KGZkLCAwLCBvZmZzZXQsIGRhdGEsIGkpICE9IGkpCiAJCQkJZ290byByZXBvcnRfd3JpdGVfZXJy
b3I7CiAJCQlvZmZzZXQgKz0gaTsKIAkJCWNvbnRpbnVlOwpAQCAtMzQ4LDM3ICszNTUsMzMgQEAg
c3RhdGljIGludCByZWNlaXZlX2RhdGEoaW50IGZfaW4sIGNoYXIgKmZuYW1lX3IsIGludCBmZF9y
LCBPRkZfVCBzaXplX3IsCiAKIAkJaWYgKHVwZGF0aW5nX2Jhc2lzX29yX2VxdWl2KSB7CiAJCQlp
ZiAob2Zmc2V0ID09IG9mZnNldDIgJiYgZmQgIT0gLTEpIHsKLQkJCQlPRkZfVCBwb3M7Ci0JCQkJ
aWYgKGZsdXNoX3dyaXRlX2ZpbGUoZmQpIDwgMCkKKwkJCQlpZiAoc2tpcF9tYXRjaGVkKGZkLCBv
ZmZzZXQsIG1hcCwgbGVuKSA8IDApCiAJCQkJCWdvdG8gcmVwb3J0X3dyaXRlX2Vycm9yOwogCQkJ
CW9mZnNldCArPSBsZW47Ci0JCQkJaWYgKChwb3MgPSBkb19sc2VlayhmZCwgbGVuLCBTRUVLX0NV
UikpICE9IG9mZnNldCkgewotCQkJCQlyc3lzZXJyKEZFUlJPUl9YRkVSLCBlcnJubywKLQkJCQkJ
CSJsc2VlayBvZiAlcyByZXR1cm5lZCAlcywgbm90ICVzIiwKLQkJCQkJCWZ1bGxfZm5hbWUoZm5h
bWUpLAotCQkJCQkJYmlnX251bShwb3MpLCBiaWdfbnVtKG9mZnNldCkpOwotCQkJCQlleGl0X2Ns
ZWFudXAoUkVSUl9GSUxFSU8pOwotCQkJCX0KIAkJCQljb250aW51ZTsKIAkJCX0KIAkJfQotCQlp
ZiAoZmQgIT0gLTEgJiYgbWFwICYmIHdyaXRlX2ZpbGUoZmQsIG1hcCwgbGVuKSAhPSAoaW50KWxl
bikKKwkJaWYgKGZkICE9IC0xICYmIG1hcCAmJiB3cml0ZV9maWxlKGZkLCAwLCBvZmZzZXQsIG1h
cCwgbGVuKSAhPSAoaW50KWxlbikKIAkJCWdvdG8gcmVwb3J0X3dyaXRlX2Vycm9yOwogCQlvZmZz
ZXQgKz0gbGVuOwogCX0KIAotCWlmIChmbHVzaF93cml0ZV9maWxlKGZkKSA8IDApCi0JCWdvdG8g
cmVwb3J0X3dyaXRlX2Vycm9yOworCWlmIChmZCAhPSAtMSAmJiBvZmZzZXQgPiAwKSB7CisJCWlm
IChzcGFyc2VfZmlsZXMgPiAwKSB7CisJCQlpZiAoc3BhcnNlX2VuZChmZCwgb2Zmc2V0KSAhPSAw
KQorCQkJCWdvdG8gcmVwb3J0X3dyaXRlX2Vycm9yOworCQl9IGVsc2UgaWYgKGZsdXNoX3dyaXRl
X2ZpbGUoZmQpIDwgMCkgeworCQkgICAgcmVwb3J0X3dyaXRlX2Vycm9yOgorCQkJcnN5c2VycihG
RVJST1JfWEZFUiwgZXJybm8sICJ3cml0ZSBmYWlsZWQgb24gJXMiLCBmdWxsX2ZuYW1lKGZuYW1l
KSk7CisJCQlleGl0X2NsZWFudXAoUkVSUl9GSUxFSU8pOworCQl9CisJfQogCiAjaWZkZWYgSEFW
RV9GVFJVTkNBVEUKIAkvKiBpbnBsYWNlOiBOZXcgZGF0YSBjb3VsZCBiZSBzaG9ydGVyIHRoYW4g
b2xkIGRhdGEuCiAJICogcHJlYWxsb2NhdGVfZmlsZXM6IHRvdGFsX3NpemUgY291bGQgaGF2ZSBi
ZWVuIGFuIG92ZXJlc3RpbWF0ZS4KIAkgKiAgICAgQ3V0IG9mZiBhbnkgZXh0cmEgcHJlYWxsb2Nh
dGVkIHplcm9zIGZyb20gZGVzdCBmaWxlLiAqLwotCWlmICgoaW5wbGFjZQotI2lmZGVmIFBSRUFM
TE9DQVRFX05FRURTX1RSVU5DQVRFCi0JICB8fCBwcmVhbGxvY2F0ZWRfbGVuID4gb2Zmc2V0Ci0j
ZW5kaWYKLQkgICkgJiYgZmQgIT0gLTEgJiYgZG9fZnRydW5jYXRlKGZkLCBvZmZzZXQpIDwgMCkg
eworCWlmICgoaW5wbGFjZSB8fCBwcmVhbGxvY2F0ZWRfbGVuID4gb2Zmc2V0KSAmJiBmZCAhPSAt
MSAmJiBkb19mdHJ1bmNhdGUoZmQsIG9mZnNldCkgPCAwKSB7CiAJCXJzeXNlcnIoRkVSUk9SX1hG
RVIsIGVycm5vLCAiZnRydW5jYXRlIGZhaWxlZCBvbiAlcyIsCiAJCQlmdWxsX2ZuYW1lKGZuYW1l
KSk7CiAJfQpAQCAtMzg3LDEzICszOTAsNiBAQCBzdGF0aWMgaW50IHJlY2VpdmVfZGF0YShpbnQg
Zl9pbiwgY2hhciAqZm5hbWVfciwgaW50IGZkX3IsIE9GRl9UIHNpemVfciwKIAlpZiAoSU5GT19H
VEUoUFJPR1JFU1MsIDEpKQogCQllbmRfcHJvZ3Jlc3ModG90YWxfc2l6ZSk7CiAKLQlpZiAoZmQg
IT0gLTEgJiYgb2Zmc2V0ID4gMCAmJiBzcGFyc2VfZW5kKGZkLCBvZmZzZXQpICE9IDApIHsKLQkg
ICAgcmVwb3J0X3dyaXRlX2Vycm9yOgotCQlyc3lzZXJyKEZFUlJPUl9YRkVSLCBlcnJubywgIndy
aXRlIGZhaWxlZCBvbiAlcyIsCi0JCQlmdWxsX2ZuYW1lKGZuYW1lKSk7Ci0JCWV4aXRfY2xlYW51
cChSRVJSX0ZJTEVJTyk7Ci0JfQotCiAJY2hlY2tzdW1fbGVuID0gc3VtX2VuZChmaWxlX3N1bTEp
OwogCiAJaWYgKG1hcGJ1ZikKZGlmZiAtLWdpdCBhL3JzeW5jLnlvIGIvcnN5bmMueW8KaW5kZXgg
YmZlNDNiOS4uZDFlNmZkZiAxMDA2NDQKLS0tIGEvcnN5bmMueW8KKysrIGIvcnN5bmMueW8KQEAg
LTM3Niw3ICszNzYsNyBAQCB0byB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24gYmVsb3cgZm9yIGEg
Y29tcGxldGUgZGVzY3JpcHRpb24uICB2ZXJiKAogIC1KLCAtLW9taXQtbGluay10aW1lcyAgICAg
ICBvbWl0IHN5bWxpbmtzIGZyb20gLS10aW1lcwogICAgICAtLXN1cGVyICAgICAgICAgICAgICAg
ICByZWNlaXZlciBhdHRlbXB0cyBzdXBlci11c2VyIGFjdGl2aXRpZXMKICAgICAgLS1mYWtlLXN1
cGVyICAgICAgICAgICAgc3RvcmUvcmVjb3ZlciBwcml2aWxlZ2VkIGF0dHJzIHVzaW5nIHhhdHRy
cwotIC1TLCAtLXNwYXJzZSAgICAgICAgICAgICAgICBoYW5kbGUgc3BhcnNlIGZpbGVzIGVmZmlj
aWVudGx5CisgLVMsIC0tc3BhcnNlICAgICAgICAgICAgICAgIHR1cm4gc2VxdWVuY2VzIG9mIG51
bGxzIGludG8gc3BhcnNlIGJsb2NrcwogICAgICAtLXByZWFsbG9jYXRlICAgICAgICAgICBhbGxv
Y2F0ZSBkZXN0IGZpbGVzIGJlZm9yZSB3cml0aW5nCiAgLW4sIC0tZHJ5LXJ1biAgICAgICAgICAg
ICAgIHBlcmZvcm0gYSB0cmlhbCBydW4gd2l0aCBubyBjaGFuZ2VzIG1hZGUKICAtVywgLS13aG9s
ZS1maWxlICAgICAgICAgICAgY29weSBmaWxlcyB3aG9sZSAody9vIGRlbHRhLXhmZXIgYWxnb3Jp
dGhtKQpAQCAtODczLDkgKzg3Myw3IEBAIHRoZSBzYW1lIG9yIGxvbmdlciB0aGFuIHRoZSBzaXpl
IG9uIHRoZSBzZW5kZXIsIHRoZSBmaWxlIGlzIHNraXBwZWQuICBUaGlzCiBkb2VzIG5vdCBpbnRl
cmZlcmUgd2l0aCB0aGUgdXBkYXRpbmcgb2YgYSBmaWxlJ3Mgbm9uLWNvbnRlbnQgYXR0cmlidXRl
cwogKGUuZy4gcGVybWlzc2lvbnMsIG93bmVyc2hpcCwgZXRjLikgd2hlbiB0aGUgZmlsZSBkb2Vz
IG5vdCBuZWVkIHRvIGJlCiB0cmFuc2ZlcnJlZCwgbm9yIGRvZXMgaXQgYWZmZWN0IHRoZSB1cGRh
dGluZyBvZiBhbnkgbm9uLXJlZ3VsYXIgZmlsZXMuCi1JbXBsaWVzIGJmKC0taW5wbGFjZSksCi1i
dXQgZG9lcyBub3QgY29uZmxpY3Qgd2l0aCBiZigtLXNwYXJzZSkgKHNpbmNlIGl0IGlzIGFsd2F5
cyBleHRlbmRpbmcgYQotZmlsZSdzIGxlbmd0aCkuCitJbXBsaWVzIGJmKC0taW5wbGFjZSkuCiAK
IFRoZSB1c2Ugb2YgYmYoLS1hcHBlbmQpIGNhbiBiZSBkYW5nZXJvdXMgaWYgeW91IGFyZW4ndCAx
MDAlIHN1cmUgdGhhdCB0aGUgZmlsZXMKIHRoYXQgYXJlIGxvbmdlciBoYXZlIG9ubHkgZ3Jvd24g
YnkgdGhlIGFwcGVuZGluZyBvZiBkYXRhIG9udG8gdGhlIGVuZC4gIFlvdQpAQCAtMTI1MiwyMCAr
MTI1MCwzMCBAQCBUaGlzIG9wdGlvbiBpcyBvdmVycmlkZGVuIGJ5IGJvdGggYmYoLS1zdXBlcikg
YW5kIGJmKC0tbm8tc3VwZXIpLgogU2VlIGFsc28gdGhlICJmYWtlIHN1cGVyIiBzZXR0aW5nIGlu
IHRoZSBkYWVtb24ncyByc3luY2QuY29uZiBmaWxlLgogCiBkaXQoYmYoLVMsIC0tc3BhcnNlKSkg
VHJ5IHRvIGhhbmRsZSBzcGFyc2UgZmlsZXMgZWZmaWNpZW50bHkgc28gdGhleSB0YWtlCi11cCBs
ZXNzIHNwYWNlIG9uIHRoZSBkZXN0aW5hdGlvbi4gIENvbmZsaWN0cyB3aXRoIGJmKC0taW5wbGFj
ZSkgYmVjYXVzZSBpdCdzCi1ub3QgcG9zc2libGUgdG8gb3ZlcndyaXRlIGRhdGEgaW4gYSBzcGFy
c2UgZmFzaGlvbi4KK3VwIGxlc3Mgc3BhY2Ugb24gdGhlIGRlc3RpbmF0aW9uLiAgSWYgY29tYmlu
ZWQgd2l0aCBiZigtLWlucGxhY2UpIHRoZQorZmlsZSBjcmVhdGVkIG1pZ2h0IG5vdCBlbmQgdXAg
d2l0aCBzcGFyc2UgYmxvY2tzIHdpdGggc29tZSBjb21iaW5hdGlvbnMKK29mIGtlcm5lbCB2ZXJz
aW9uIGFuZC9vciBmaWxlc3lzdGVtIHR5cGUuICBJZiBiZigtLXdob2xlLWZpbGUpIGlzIGluCitl
ZmZlY3QgKGUuZy4gZm9yIGEgbG9jYWwgY29weSkgdGhlbiBpdCB3aWxsIGFsd2F5cyB3b3JrIGJl
Y2F1c2UgcnN5bmMKK3RydW5jYXRlcyB0aGUgZmlsZSBwcmlvciB0byB3cml0aW5nIG91dCB0aGUg
dXBkYXRlZCB2ZXJzaW9uLgorCitOb3RlIHRoYXQgdmVyc2lvbnMgb2YgcnN5bmMgb2xkZXIgdGhh
biAzLjEuMyB3aWxsIHJlamVjdCB0aGUgY29tYmluYXRpb24gb2YKK2JmKC0tc3BhcnNlKSBhbmQg
YmYoLS1pbnBsYWNlKS4KIAogZGl0KGJmKC0tcHJlYWxsb2NhdGUpKSBUaGlzIHRlbGxzIHRoZSBy
ZWNlaXZlciB0byBhbGxvY2F0ZSBlYWNoIGRlc3RpbmF0aW9uCi1maWxlIHRvIGl0cyBldmVudHVh
bCBzaXplIGJlZm9yZSB3cml0aW5nIGRhdGEgdG8gdGhlIGZpbGUuICBSc3luYyB3aWxsIG9ubHkg
dXNlCi10aGUgcmVhbCBmaWxlc3lzdGVtLWxldmVsIHByZWFsbG9jYXRpb24gc3VwcG9ydCBwcm92
aWRlZCBieSBMaW51eCdzCitmaWxlIHRvIGl0cyBldmVudHVhbCBzaXplIGJlZm9yZSB3cml0aW5n
IGRhdGEgdG8gdGhlIGZpbGUuICBSc3luYyB3aWxsIG9ubHkKK3VzZSB0aGUgcmVhbCBmaWxlc3lz
dGVtLWxldmVsIHByZWFsbG9jYXRpb24gc3VwcG9ydCBwcm92aWRlZCBieSBMaW51eCdzCiBiZihm
YWxsb2NhdGUpKDIpIHN5c3RlbSBjYWxsIG9yIEN5Z3dpbidzIGJmKHBvc2l4X2ZhbGxvY2F0ZSko
MyksIG5vdCB0aGUgc2xvdwotZ2xpYmMgaW1wbGVtZW50YXRpb24gdGhhdCB3cml0ZXMgYSB6ZXJv
IGJ5dGUgaW50byBlYWNoIGJsb2NrLgorZ2xpYmMgaW1wbGVtZW50YXRpb24gdGhhdCB3cml0ZXMg
YSBudWxsIGJ5dGUgaW50byBlYWNoIGJsb2NrLgogCiBXaXRob3V0IHRoaXMgb3B0aW9uLCBsYXJn
ZXIgZmlsZXMgbWF5IG5vdCBiZSBlbnRpcmVseSBjb250aWd1b3VzIG9uIHRoZQogZmlsZXN5c3Rl
bSwgYnV0IHdpdGggdGhpcyBvcHRpb24gcnN5bmMgd2lsbCBwcm9iYWJseSBjb3B5IG1vcmUgc2xv
d2x5LiAgSWYgdGhlCiBkZXN0aW5hdGlvbiBpcyBub3QgYW4gZXh0ZW50LXN1cHBvcnRpbmcgZmls
ZXN5c3RlbSAoc3VjaCBhcyBleHQ0LCB4ZnMsIE5URlMsCiBldGMuKSwgdGhpcyBvcHRpb24gbWF5
IGhhdmUgbm8gcG9zaXRpdmUgZWZmZWN0IGF0IGFsbC4KIAorSWYgY29tYmluZWQgd2l0aCBiZigt
LXNwYXJzZSksIHRoZSBmaWxlIHdpbGwgb25seSBoYXZlIHNwYXJzZSBibG9ja3MgKGFzCitvcHBv
c2VkIHRvIGFsbG9jYXRlZCBzZXF1ZW5jZXMgb2YgbnVsbCBieXRlcykgaWYgdGhlIGtlcm5lbCB2
ZXJzaW9uIGFuZAorZmlsZXN5c3RlbSB0eXBlIHN1cHBvcnQgY3JlYXRpbmcgaG9sZXMgaW4gdGhl
IGFsbG9jYXRlZCBkYXRhLgorCiBkaXQoYmYoLW4sIC0tZHJ5LXJ1bikpIFRoaXMgbWFrZXMgcnN5
bmMgcGVyZm9ybSBhIHRyaWFsIHJ1biB0aGF0IGRvZXNuJ3QKIG1ha2UgYW55IGNoYW5nZXMgKGFu
ZCBwcm9kdWNlcyBtb3N0bHkgdGhlIHNhbWUgb3V0cHV0IGFzIGEgcmVhbCBydW4pLiAgSXQKIGlz
IG1vc3QgY29tbW9ubHkgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBiZigtdiwgLS12ZXJi
b3NlKSBhbmQvb3IKZGlmZiAtLWdpdCBhL3N5c2NhbGwuYyBiL3N5c2NhbGwuYwppbmRleCBlY2Nh
MmYxLi5mYTUzYjYzIDEwMDY0NAotLS0gYS9zeXNjYWxsLmMKKysrIGIvc3lzY2FsbC5jCkBAIC0z
OCw2ICszOCw4IEBAIGV4dGVybiBpbnQgYW1fcm9vdDsKIGV4dGVybiBpbnQgYW1fc2VuZGVyOwog
ZXh0ZXJuIGludCByZWFkX29ubHk7CiBleHRlcm4gaW50IGxpc3Rfb25seTsKK2V4dGVybiBpbnQg
aW5wbGFjZTsKK2V4dGVybiBpbnQgcHJlYWxsb2NhdGVfZmlsZXM7CiBleHRlcm4gaW50IHByZXNl
cnZlX3Blcm1zOwogZXh0ZXJuIGludCBwcmVzZXJ2ZV9leGVjdXRhYmlsaXR5OwogCkBAIC00MjMs
MjcgKzQyNSw4MCBAQCBpbnQgZG9fdXRpbWUoY29uc3QgY2hhciAqZm5hbWUsIHRpbWVfdCBtb2R0
aW1lLCBVTlVTRUQodWludDMyIG1vZF9uc2VjKSkKICNlbmRpZgogCiAjaWZkZWYgU1VQUE9SVF9Q
UkVBTExPQ0FUSU9OCi1pbnQgZG9fZmFsbG9jYXRlKGludCBmZCwgT0ZGX1Qgb2Zmc2V0LCBPRkZf
VCBsZW5ndGgpCi17CiAjaWZkZWYgRkFMTE9DX0ZMX0tFRVBfU0laRQogI2RlZmluZSBET19GQUxM
T0NfT1BUSU9OUyBGQUxMT0NfRkxfS0VFUF9TSVpFCiAjZWxzZQogI2RlZmluZSBET19GQUxMT0Nf
T1BUSU9OUyAwCiAjZW5kaWYKKworT0ZGX1QgZG9fZmFsbG9jYXRlKGludCBmZCwgT0ZGX1Qgb2Zm
c2V0LCBPRkZfVCBsZW5ndGgpCit7CisJaW50IG9wdHMgPSBpbnBsYWNlIHx8IHByZWFsbG9jYXRl
X2ZpbGVzID8gMCA6IERPX0ZBTExPQ19PUFRJT05TOworCWludCByZXQ7CiAJUkVUVVJOX0VSUk9S
X0lGKGRyeV9ydW4sIDApOwogCVJFVFVSTl9FUlJPUl9JRl9ST19PUl9MTzsKKwlpZiAobGVuZ3Ro
ICYgMSkgLyogbWFrZSB0aGUgbGVuZ3RoIG5vdCBtYXRjaCB0aGUgZGVzaXJlZCBsZW5ndGggKi8K
KwkJbGVuZ3RoKys7CisJZWxzZQorCQlsZW5ndGgtLTsKICNpZiBkZWZpbmVkIEhBVkVfRkFMTE9D
QVRFCi0JcmV0dXJuIGZhbGxvY2F0ZShmZCwgRE9fRkFMTE9DX09QVElPTlMsIG9mZnNldCwgbGVu
Z3RoKTsKKwlyZXQgPSBmYWxsb2NhdGUoZmQsIG9wdHMsIG9mZnNldCwgbGVuZ3RoKTsKICNlbGlm
IGRlZmluZWQgSEFWRV9TWVNfRkFMTE9DQVRFCi0JcmV0dXJuIHN5c2NhbGwoU1lTX2ZhbGxvY2F0
ZSwgZmQsIERPX0ZBTExPQ19PUFRJT05TLCAobG9mZl90KW9mZnNldCwgKGxvZmZfdClsZW5ndGgp
OworCXJldCA9IHN5c2NhbGwoU1lTX2ZhbGxvY2F0ZSwgZmQsIG9wdHMsIChsb2ZmX3Qpb2Zmc2V0
LCAobG9mZl90KWxlbmd0aCk7CiAjZWxpZiBkZWZpbmVkIEhBVkVfRUZGSUNJRU5UX1BPU0lYX0ZB
TExPQ0FURQotCXJldHVybiBwb3NpeF9mYWxsb2NhdGUoZmQsIG9mZnNldCwgbGVuZ3RoKTsKKwly
ZXQgPSBwb3NpeF9mYWxsb2NhdGUoZmQsIG9mZnNldCwgbGVuZ3RoKTsKICNlbHNlCiAjZXJyb3Ig
Q29kaW5nIGVycm9yIGluIFNVUFBPUlRfUFJFQUxMT0NBVElPTiBsb2dpYy4KICNlbmRpZgorCWlm
IChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCWlmIChvcHRzID09IDApIHsKKwkJU1RSVUNUX1NU
QVQgc3Q7CisJCWlmIChkb19mc3RhdChmZCwgJnN0KSA8IDApCisJCQlyZXR1cm4gbGVuZ3RoOwor
CQlyZXR1cm4gc3Quc3RfYmxvY2tzICogNTEyOworCX0KKwlyZXR1cm4gMDsKIH0KICNlbmRpZgog
CisvKiBQdW5jaCBhIGhvbGUgYXQgcG9zIGZvciBsZW4gYnl0ZXMuIFRoZSBjdXJyZW50IGZpbGUg
cG9zaXRpb24gbXVzdCBiZSBhdCBwb3MgYW5kIHdpbGwgYmUKKyAqIGNoYW5nZWQgdG8gYmUgYXQg
cG9zICsgbGVuLiAqLworaW50IGRvX3B1bmNoX2hvbGUoaW50IGZkLCBVTlVTRUQoT0ZGX1QgcG9z
KSwgaW50IGxlbikKK3sKKyNpZmRlZiBIQVZFX0ZBTExPQ0FURQorIyBpZmRlZiBIQVZFX0ZBTExP
Q19GTF9QVU5DSF9IT0xFCisJaWYgKGZhbGxvY2F0ZShmZCwgRkFMTE9DX0ZMX1BVTkNIX0hPTEUg
fCBGQUxMT0NfRkxfS0VFUF9TSVpFLCBwb3MsIGxlbikgPT0gMCkgeworCQlpZiAoZG9fbHNlZWso
ZmQsIGxlbiwgU0VFS19DVVIpICE9IHBvcyArIGxlbikKKwkJCXJldHVybiAtMTsKKwkJcmV0dXJu
IDA7CisJfQorIyBlbmRpZgorIyBpZmRlZiBIQVZFX0ZBTExPQ19GTF9aRVJPX1JBTkdFCisJaWYg
KGZhbGxvY2F0ZShmZCwgRkFMTE9DX0ZMX1pFUk9fUkFOR0UsIHBvcywgbGVuKSA9PSAwKSB7CisJ
CWlmIChkb19sc2VlayhmZCwgbGVuLCBTRUVLX0NVUikgIT0gcG9zICsgbGVuKQorCQkJcmV0dXJu
IC0xOworCQlyZXR1cm4gMDsKKwl9CisjIGVuZGlmCisjZW5kaWYKKwl7CisJCWNoYXIgemVyb3Nb
NDA5Nl07CisJCW1lbXNldCh6ZXJvcywgMCwgc2l6ZW9mIHplcm9zKTsKKwkJd2hpbGUgKGxlbiA+
IDApIHsKKwkJCWludCBjaHVuayA9IGxlbiA+IChpbnQpc2l6ZW9mIHplcm9zID8gKGludClzaXpl
b2YgemVyb3MgOiBsZW47CisJCQlpbnQgd3JvdGUgPSB3cml0ZShmZCwgemVyb3MsIGNodW5rKTsK
KwkJCWlmICh3cm90ZSA8PSAwKSB7CisJCQkJaWYgKHdyb3RlIDwgMCAmJiBlcnJubyA9PSBFSU5U
UikKKwkJCQkJY29udGludWU7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCQkJbGVuIC09IHdyb3Rl
OworCQl9CisJfQorCXJldHVybiAwOworfQorCiBpbnQgZG9fb3Blbl9ub2ZvbGxvdyhjb25zdCBj
aGFyICpwYXRobmFtZSwgaW50IGZsYWdzKQogewogI2lmbmRlZiBPX05PRk9MTE9XCmRpZmYgLS1n
aXQgYS90X3N0dWIuYyBiL3Rfc3R1Yi5jCmluZGV4IDI2OTUxYTYuLmZjMWVlM2IgMTAwNjQ0Ci0t
LSBhL3Rfc3R1Yi5jCisrKyBiL3Rfc3R1Yi5jCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRl
ICJyc3luYy5oIgogCitpbnQgaW5wbGFjZSA9IDA7CiBpbnQgbW9kaWZ5X3dpbmRvdyA9IDA7CiBp
bnQgcHJlYWxsb2NhdGVfZmlsZXMgPSAwOwoKCi0tIApUaGUgcnN5bmMgcmVwb3NpdG9yeS4KCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnJzeW5jLWN2cyBt
YWlsaW5nIGxpc3QKcnN5bmMtY3ZzQGxpc3RzLnNhbWJhLm9yZwpodHRwczovL2xpc3RzLnNhbWJh
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3JzeW5jLWN2cwo=