Re: grout: FTBFS with the nocheck build profile

Trupti <[email protected]> Wed, 22 Jul 2026 00:54:00 +0530
Newsgroups gmane.linux.debian.ports.powerpc
Message-ID <[email protected]>
--=_dc88a67aad1e96340ed508b1070554bc
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=US-ASCII;
 format=flowed

On 2026-07-20 23:44, Trupti wrote:
> Hello ,
> 
> 
> Issue is reproducible on the ppc64el forky machine.
> 
> I am currently investigating the issue and will provide an update soon.
> 
> 
> 
> Thanks,
> Trupti


Hi,

The build failure on ppc64el is caused by a name collision between 
grout's own vec_add macro
in main/vec.h and the GCC AltiVec built-in intrinsic of the same name. 
On ppc64el, GCC
reserves vec_add as a SIMD vector instruction, so when grout uses it as 
a dynamic array
helper the compiler rejects it with

error: invalid parameter combination for AltiVec intrinsic 
'__builtin_vec_add'.

The fix renames grout's vec_add to vec_add_end and vec_insert to 
vec_insert_at across
the source tree (24 files). Both names are safe and do not conflict with 
any AltiVec built-in.


After applying this fix grout package builds successfully on ppc64el 
machine:


  make[1]: Leaving directory 
'/home/debian/FTBFS/grout_build/grout-0.16.1'
    dh_md5sums -O--buildsystem=meson\+ninja
    dh_builddeb -O--buildsystem=meson\+ninja
dpkg-deb: building package 'grout-dbgsym' in 
'../grout-dbgsym_0.16.1-1.1_ppc64el.deb'.
dpkg-deb: building package 'grout-headers' in 
'../grout-headers_0.16.1-1.1_all.deb'.
dpkg-deb: building package 'grout' in '../grout_0.16.1-1.1_ppc64el.deb'.
dpkg-deb: building package 'grout-frr-dbgsym' in 
'../grout-frr-dbgsym_0.16.1-1.1_ppc64el.deb'.
dpkg-deb: building package 'grout-frr' in 
'../grout-frr_0.16.1-1.1_ppc64el.deb'.
  dpkg-genbuildinfo -O../grout_0.16.1-1.1_ppc64el.buildinfo
  dpkg-genchanges -O../grout_0.16.1-1.1_ppc64el.changes
dpkg-genchanges: info: not including original source code in upload
  dpkg-source --after-build .
dpkg-buildpackage: info: binary and diff upload (original source NOT 
included)
Now running lintian grout_0.16.1-1.1_ppc64el.changes ...
W: grout source: incomplete-creative-commons-license cc-by-sa-4.0 
[debian/copyright:108]
Finished running lintian.


Patch is attached for review.


Thanks,
Trupti
--=_dc88a67aad1e96340ed508b1070554bc
Content-Transfer-Encoding: base64
Content-Type: text/x-diff;
 name=fix-ppc64el-build.patch
Content-Disposition: attachment;
 filename=fix-ppc64el-build.patch;
 size=25208

SW5kZXg6IGdyb3V0LTAuMTYuMS9tYWluL3ZlYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdyb3V0LTAuMTYu
MS5vcmlnL21haW4vdmVjLmgKKysrIGdyb3V0LTAuMTYuMS9tYWluL3ZlYy5oCkBAIC0xNzcsMTMg
KzE3NywxMyBAQCBzdGF0aWMgaW5saW5lIGNoYXIgKipfX3N0cnZlY19mcmVlKHZlYyBjCiAjZGVm
aW5lIHZlY19tYXliZV9ncm93KHYsIG4pICgodikgPSBfX3ZlY19ncm93KCh2KSwgc2l6ZW9mKCoo
dikpLCAobiksIDApKQogCiAvLyBhZGQgYW4gaXRlbSBhdCB0aGUgZW5kIG9mIGEgdmVjdG9yCi0j
ZGVmaW5lIHZlY19hZGQodiwgeCkgKHZlY19tYXliZV9ncm93KHYsIDEpLCAodilbX192ZWNfaGRy
KHYpLT5sZW4rK10gPSAoeCkpCisjZGVmaW5lIHZlY19hZGRfZW5kKHYsIHgpICh2ZWNfbWF5YmVf
Z3Jvdyh2LCAxKSwgKHYpW19fdmVjX2hkcih2KS0+bGVuKytdID0gKHgpKQogCiAvLyBhcHBlbmQg
YWxsIGl0ZW1zIG9mIGEgdmVjdG9yIGF0IHRoZSBlbmQgb2YgYW5vdGhlciB2ZWN0b3IKICNkZWZp
bmUgdmVjX2V4dGVuZCh2LCB2MikgKCh2KSA9IF9fdmVjX2V4dGVuZCh2LCB2Miwgc2l6ZW9mKCoo
dikpKSkKIAogLy8gYWRkIGFuIGl0ZW0gYXQgYSBzcGVjaWZpYyBpbmRleCBpbiBhIHZlY3Rvcgot
I2RlZmluZSB2ZWNfaW5zZXJ0KHYsIGksIHgpICgodikgPSBfX3ZlY19zaGlmdF9yYW5nZSh2LCBz
aXplb2YoKih2KSksIChpKSwgMSksICh2KVtpXSA9ICh4KSkKKyNkZWZpbmUgdmVjX2luc2VydF9h
dCh2LCBpLCB4KSAoKHYpID0gX192ZWNfc2hpZnRfcmFuZ2Uodiwgc2l6ZW9mKCoodikpLCAoaSks
IDEpLCAodilbaV0gPSAoeCkpCiAKIC8vIHJlbW92ZSB0aGUgbGFzdCBpdGVtIGZyb20gYSB2ZWN0
b3IgYW5kIHJldHVybiBpdAogI2RlZmluZSB2ZWNfcG9wKHYpIChhc3NlcnQodmVjX2xlbih2KSA+
IDApLCAodilbLS1fX3ZlY19oZHIodiktPmxlbl0pCkluZGV4OiBncm91dC0wLjE2LjEvbW9kdWxl
cy9pbmZyYS9hcGkvYWZmaW5pdHkuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBncm91dC0wLjE2LjEub3JpZy9t
b2R1bGVzL2luZnJhL2FwaS9hZmZpbml0eS5jCisrKyBncm91dC0wLjE2LjEvbW9kdWxlcy9pbmZy
YS9hcGkvYWZmaW5pdHkuYwpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgc3RydWN0IGFwaV9vdXQg
YWZmaW5pdHlfc2V0KGNvbnN0CiAJaWYgKENQVV9DT1VOVCgmcmVxLT5kYXRhcGF0aF9jcHVzKSA+
IDApIHsKIAkJc3RydWN0IGlmYWNlICppZmFjZSA9IE5VTEw7CiAJCXdoaWxlICgoaWZhY2UgPSBp
ZmFjZV9uZXh0KEdSX0lGQUNFX1RZUEVfUE9SVCwgaWZhY2UpKSAhPSBOVUxMKQotCQkJdmVjX2Fk
ZChwb3J0cywgaWZhY2VfaW5mb19wb3J0KGlmYWNlKSk7CisJCQl2ZWNfYWRkX2VuZChwb3J0cywg
aWZhY2VfaW5mb19wb3J0KGlmYWNlKSk7CiAKIAkJcmV0ID0gd29ya2VyX3F1ZXVlX2Rpc3RyaWJ1
dGUoJnJlcS0+ZGF0YXBhdGhfY3B1cywgcG9ydHMpOwogCQlpZiAocmV0IDwgMCkKSW5kZXg6IGdy
b3V0LTAuMTYuMS9tb2R1bGVzL2luZnJhL2FwaS9zdGF0cy5jCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdyb3V0
LTAuMTYuMS5vcmlnL21vZHVsZXMvaW5mcmEvYXBpL3N0YXRzLmMKKysrIGdyb3V0LTAuMTYuMS9t
b2R1bGVzL2luZnJhL2FwaS9zdGF0cy5jCkBAIC05MCw3ICs5MCw3IEBAIHN0YXRpYyBzdHJ1Y3Qg
YXBpX291dCBzdGF0c19nZXQoY29uc3Qgdm8KIAkJCQkJaWZhY2UtPm5hbWUsCiAJCQkJCW5hbWVz
W2ldLm5hbWUKIAkJCQkpOwotCQkJCXZlY19hZGQoc3RhdHMsIHN0YXQpOworCQkJCXZlY19hZGRf
ZW5kKHN0YXRzLCBzdGF0KTsKIAkJCX0KIGZyZWVfeHN0YXQ6CiAJCQlmcmVlKHhzdGF0cyk7CkBA
IC0xMTQsNyArMTE0LDcgQEAgZnJlZV94c3RhdDoKIAkJCQkpOwogCQkJCXN0YXQuYmF0Y2hlcyA9
IHJ4X2J1cnN0X2hpc3RvZ3JhbVtzXTsKIAkJCQlzdGF0LnBhY2tldHMgPSBzdGF0LmJhdGNoZXMg
KiBzOwotCQkJCXZlY19hZGQoc3RhdHMsIHN0YXQpOworCQkJCXZlY19hZGRfZW5kKHN0YXRzLCBz
dGF0KTsKIAkJCX0KIAkJfQogCX0KQEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMgc3RydWN0IGFw
aV9vdXQgaWZhY2Vfc3RhdHNfZ2V0KGNvCiAJCQl9CiAJCX0KIAotCQl2ZWNfYWRkKHN0YXRzX3Zl
Yywgcyk7CisJCXZlY19hZGRfZW5kKHN0YXRzX3ZlYywgcyk7CiAJfQogCiAJc2l6ZV90IG5fc3Rh
dHMgPSB2ZWNfbGVuKHN0YXRzX3ZlYyk7CkluZGV4OiBncm91dC0wLjE2LjEvbW9kdWxlcy9pbmZy
YS9jb250cm9sL2JvbmQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBncm91dC0wLjE2LjEub3JpZy9tb2R1bGVz
L2luZnJhL2NvbnRyb2wvYm9uZC5jCisrKyBncm91dC0wLjE2LjEvbW9kdWxlcy9pbmZyYS9jb250
cm9sL2JvbmQuYwpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgYm9uZF91cGRhdGVfYWN0aXZlX21l
bWJlcnMoc3RydWN0IGkKIAkJCW1lbWJlciA9IGJvbmQtPm1lbWJlcnNbaV0uaWZhY2U7CiAJCQlp
ZiAoaSA9PSBhY3RpdmVfbWVtYmVyKSB7CiAJCQkJc3BlZWQgPSBtZW1iZXItPnNwZWVkOwotCQkJ
CXZlY19hZGQoYWN0aXZlX2lkcywgaSk7CisJCQkJdmVjX2FkZF9lbmQoYWN0aXZlX2lkcywgaSk7
CiAJCQkJTE9HKElORk8sCiAJCQkJICAgICJib25kICVzIGFjdGl2ZSBtZW1iZXIgaXMgbm93ICVz
IiwKIAkJCQkgICAgaWZhY2UtPm5hbWUsCkBAIC0zMDEsNyArMzAxLDcgQEAgdm9pZCBib25kX3Vw
ZGF0ZV9hY3RpdmVfbWVtYmVycyhzdHJ1Y3QgaQogCQkJCSAgICAiYm9uZCAlcyBtZW1iZXIgJXMg
YWN0aXZlIiwKIAkJCQkgICAgaWZhY2UtPm5hbWUsCiAJCQkJICAgIG1lbWJlci0+aWZhY2UtPm5h
bWUpOwotCQkJCXZlY19hZGQoYWN0aXZlX2lkcywgaSk7CisJCQkJdmVjX2FkZF9lbmQoYWN0aXZl
X2lkcywgaSk7CiAJCQkJaWYgKG1lbWJlci0+aWZhY2UtPnNwZWVkICE9IFJURV9FVEhfU1BFRURf
TlVNX1VOS05PV04pCiAJCQkJCXNwZWVkICs9IG1lbWJlci0+aWZhY2UtPnNwZWVkOwogCQkJfQpJ
bmRleDogZ3JvdXQtMC4xNi4xL21haW4vYXBpLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ3JvdXQtMC4xNi4x
Lm9yaWcvbWFpbi9hcGkuYworKysgZ3JvdXQtMC4xNi4xL21haW4vYXBpLmMKQEAgLTE0OSw3ICsx
NDksNyBAQCBzdGF0aWMgc3RydWN0IGFwaV9vdXQgc3Vic2NyaWJlKGNvbnN0IHZvCiAJCQkJcmV0
dXJuIGFwaV9vdXQoMCwgMCwgTlVMTCk7IC8vIGFscmVhZHkgc3Vic2NyaWJlZAogCQkJfQogCQl9
Ci0JCXZlY19hZGQoYWxsX2V2ZW50c19zdWJzLCBzdWIpOworCQl2ZWNfYWRkX2VuZChhbGxfZXZl
bnRzX3N1YnMsIHN1Yik7CiAJCXJldHVybiBhcGlfb3V0KDAsIDAsIE5VTEwpOwogCX0KIApAQCAt
MTY4LDcgKzE2OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXBpX291dCBzdWJzY3JpYmUoY29uc3Qgdm8K
IAkJCXJldHVybiBhcGlfb3V0KDAsIDAsIE5VTEwpOyAvLyBhbHJlYWR5IHN1YnNjcmliZWQKIAkJ
fQogCX0KLQl2ZWNfYWRkKHN1YnMtPmV2X3N1YnNbZXZdLCBzdWIpOworCXZlY19hZGRfZW5kKHN1
YnMtPmV2X3N1YnNbZXZdLCBzdWIpOwogCiAJcmV0dXJuIGFwaV9vdXQoMCwgMCwgTlVMTCk7CiB9
CkluZGV4OiBncm91dC0wLjE2LjEvbWFpbi9kcGRrLmMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ3JvdXQtMC4x
Ni4xLm9yaWcvbWFpbi9kcGRrLmMKKysrIGdyb3V0LTAuMTYuMS9tYWluL2RwZGsuYwpAQCAtMTMz
LDIyICsxMzMsMjIgQEAgaW50IGRwZGtfaW5pdCh2b2lkKSB7CiAJaWYgKHJldCAhPSAwKQogCQln
b3RvIGVuZDsKIAotCXZlY19hZGQoZWFsX2FyZ3MsICIiKTsKLQl2ZWNfYWRkKGVhbF9hcmdzLCAi
LWwiKTsKLQl2ZWNfYWRkKGVhbF9hcmdzLCBtYWluX2xjb3JlKTsKLQl2ZWNfYWRkKGVhbF9hcmdz
LCAiLS1uby10ZWxlbWV0cnkiKTsKKwl2ZWNfYWRkX2VuZChlYWxfYXJncywgIiIpOworCXZlY19h
ZGRfZW5kKGVhbF9hcmdzLCAiLWwiKTsKKwl2ZWNfYWRkX2VuZChlYWxfYXJncywgbWFpbl9sY29y
ZSk7CisJdmVjX2FkZF9lbmQoZWFsX2FyZ3MsICItLW5vLXRlbGVtZXRyeSIpOwogI2lmZGVmIFJU
RV9CVVNfUENJCi0JdmVjX2FkZChlYWxfYXJncywgIi1hIik7Ci0JdmVjX2FkZChlYWxfYXJncywg
InBjaTowMDAwOjAwOjAwLjAiKTsKKwl2ZWNfYWRkX2VuZChlYWxfYXJncywgIi1hIik7CisJdmVj
X2FkZF9lbmQoZWFsX2FyZ3MsICJwY2k6MDAwMDowMDowMC4wIik7CiAjZW5kaWYKICNpZmRlZiBS
VEVfQlVTX0ZTTE1DCi0JdmVjX2FkZChlYWxfYXJncywgIi1hIik7Ci0JdmVjX2FkZChlYWxfYXJn
cywgImZzbG1jOmRwbmkuNjU1MzUiKTsKKwl2ZWNfYWRkX2VuZChlYWxfYXJncywgIi1hIik7CisJ
dmVjX2FkZF9lbmQoZWFsX2FyZ3MsICJmc2xtYzpkcG5pLjY1NTM1Iik7CiAjZW5kaWYKIAogCWlm
IChncl9jb25maWcudGVzdF9tb2RlKSB7Ci0JCXZlY19hZGQoZWFsX2FyZ3MsICItLW5vLXNoY29u
ZiIpOwotCQl2ZWNfYWRkKGVhbF9hcmdzLCAiLS1uby1odWdlIik7CisJCXZlY19hZGRfZW5kKGVh
bF9hcmdzLCAiLS1uby1zaGNvbmYiKTsKKwkJdmVjX2FkZF9lbmQoZWFsX2FyZ3MsICItLW5vLWh1
Z2UiKTsKIAkJLy8gQWRkIGRlZmF1bHQgLW0gdW5sZXNzIHRoZSB1c2VyIG92ZXJyaWRlcyBpdCB2
aWEgRUFMIGFyZ3MuCiAJCWJvb2wgaGFzX20gPSBmYWxzZTsKIAkJdmVjX2ZvcmVhY2ggKGFyZywg
Z3JfY29uZmlnLmVhbF9leHRyYV9hcmdzKSB7CkBAIC0xNTgsMjEgKzE1OCwyMSBAQCBpbnQgZHBk
a19pbml0KHZvaWQpIHsKIAkJCX0KIAkJfQogCQlpZiAoIWhhc19tKSB7Ci0JCQl2ZWNfYWRkKGVh
bF9hcmdzLCAiLW0iKTsKKwkJCXZlY19hZGRfZW5kKGVhbF9hcmdzLCAiLW0iKTsKIAkJCWlmIChn
cl9jb25maWcubWF4X210dSA+IDIwNDgpCi0JCQkJdmVjX2FkZChlYWxfYXJncywgIjQwOTYiKTsK
KwkJCQl2ZWNfYWRkX2VuZChlYWxfYXJncywgIjQwOTYiKTsKIAkJCWVsc2UKLQkJCQl2ZWNfYWRk
KGVhbF9hcmdzLCAiMjA0OCIpOworCQkJCXZlY19hZGRfZW5kKGVhbF9hcmdzLCAiMjA0OCIpOwog
CQl9CiAJfSBlbHNlIHsKLQkJdmVjX2FkZChlYWxfYXJncywgIi0taW4tbWVtb3J5Iik7CisJCXZl
Y19hZGRfZW5kKGVhbF9hcmdzLCAiLS1pbi1tZW1vcnkiKTsKIAl9CiAKIAlpZiAocnRlX3ZmaW9f
bm9pb21tdV9pc19lbmFibGVkKCkpCi0JCXZlY19hZGQoZWFsX2FyZ3MsICItLWlvdmEtbW9kZT1w
YSIpOworCQl2ZWNfYWRkX2VuZChlYWxfYXJncywgIi0taW92YS1tb2RlPXBhIik7CiAKIAl2ZWNf
Zm9yZWFjaCAoYXJnLCBncl9jb25maWcuZWFsX2V4dHJhX2FyZ3MpCi0JCXZlY19hZGQoZWFsX2Fy
Z3MsIGFyZyk7CisJCXZlY19hZGRfZW5kKGVhbF9hcmdzLCBhcmcpOwogCiAJTE9HKElORk8sICIl
cyIsIHJ0ZV92ZXJzaW9uKCkpOwogCkluZGV4OiBncm91dC0wLjE2LjEvbWFpbi9ldmVudC5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGdyb3V0LTAuMTYuMS5vcmlnL21haW4vZXZlbnQuYworKysgZ3JvdXQtMC4x
Ni4xL21haW4vZXZlbnQuYwpAQCAtMzUsNyArMzUsNyBAQCB2b2lkIGV2ZW50X3N1YnNjcmliZSh1
aW50MzJfdCBldl90eXBlLCBlCiAJCWlmIChzdWJzID09IE5VTEwpCiAJCQlBQk9SVCgiY2FsbG9j
KGV2ZW50X3N1Yl9jYWxsYmFja3MpIik7CiAJfQotCXZlY19hZGQoc3Vicy0+Y2FsbGJhY2tzW2V2
XSwgY2FsbGJhY2spOworCXZlY19hZGRfZW5kKHN1YnMtPmNhbGxiYWNrc1tldl0sIGNhbGxiYWNr
KTsKIH0KIAogc3RhdGljIHZvaWQgbm90aWZ5X3N1YnNjcmliZXJzKHZvaWQgKm9iaiwgdWludHB0
cl90IGV2X3R5cGUsIGNvbnN0IHN0cnVjdCBjb250cm9sX3F1ZXVlX2RyYWluICopIHsKSW5kZXg6
IGdyb3V0LTAuMTYuMS9tYWluL21haW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBncm91dC0wLjE2LjEub3Jp
Zy9tYWluL21haW4uYworKysgZ3JvdXQtMC4xNi4xL21haW4vbWFpbi5jCkBAIC0yNjgsNyArMjY4
LDcgQEAgc3RhdGljIGludCBwYXJzZV9hcmdzKGludCBhcmdjLCBjaGFyICoqYQogCX0KIAogCWZv
ciAoYyA9IG9wdGluZDsgYyA8IGFyZ2M7IGMrKykKLQkJdmVjX2FkZChncl9jb25maWcuZWFsX2V4
dHJhX2FyZ3MsIGFyZ3ZbY10pOworCQl2ZWNfYWRkX2VuZChncl9jb25maWcuZWFsX2V4dHJhX2Fy
Z3MsIGFyZ3ZbY10pOwogCiAJcmV0dXJuIDA7CiB9CkluZGV4OiBncm91dC0wLjE2LjEvbWFpbi9t
ZXRyaWNzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gZ3JvdXQtMC4xNi4xLm9yaWcvbWFpbi9tZXRyaWNzLmMK
KysrIGdyb3V0LTAuMTYuMS9tYWluL21ldHJpY3MuYwpAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMg
dm9pZCBlbWl0X2hlbHBfdHlwZShzdHJ1Y3QgbWV0cmljCiAKIAlldmJ1ZmZlcl9hZGRfcHJpbnRm
KHctPmJ1ZiwgIiMgSEVMUCBncm91dF8lcyAlc1xuIiwgbS0+bmFtZSwgbS0+aGVscCk7CiAJZXZi
dWZmZXJfYWRkX3ByaW50Zih3LT5idWYsICIjIFRZUEUgZ3JvdXRfJXMgJXNcbiIsIG0tPm5hbWUs
IHR5cGVfc3RyKTsKLQl2ZWNfYWRkKHctPmVtaXR0ZWQsIG0pOworCXZlY19hZGRfZW5kKHctPmVt
aXR0ZWQsIG0pOwogfQogCiBzdGF0aWMgdm9pZCBhcHBlbmRfbGFiZWxzX3ZhKHN0cnVjdCBtZXRy
aWNzX2N0eCAqY3R4LCB2YV9saXN0IGFwKSB7CkluZGV4OiBncm91dC0wLjE2LjEvbWFpbi9tb2R1
bGUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBncm91dC0wLjE2LjEub3JpZy9tYWluL21vZHVsZS5jCisrKyBn
cm91dC0wLjE2LjEvbWFpbi9tb2R1bGUuYwpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgbW9kdWxl
c19pbml0KHN0cnVjdCBldmVudF9iYXNlICpldl8KIAljb25zdCBzdHJ1Y3QgbW9kdWxlICptb2Q7
CiAKIAlTVEFJTFFfRk9SRUFDSCAobW9kLCAmbW9kdWxlcywgbmV4dCkKLQkJdmVjX2FkZChtb2Rz
LCBtb2QpOworCQl2ZWNfYWRkX2VuZChtb2RzLCBtb2QpOwogCiAJaWYgKG1vZHMgPT0gTlVMTCkK
IAkJQUJPUlQoImZhaWxlZCB0byBhbGxvYyBtb2R1bGUgYXJyYXkiKTsKQEAgLTEyNSw3ICsxMjUs
NyBAQCB2b2lkIG1vZHVsZXNfZmluaShzdHJ1Y3QgZXZlbnRfYmFzZSAqZXZfCiAJY29uc3Qgc3Ry
dWN0IG1vZHVsZSAqbW9kOwogCiAJU1RBSUxRX0ZPUkVBQ0ggKG1vZCwgJm1vZHVsZXMsIG5leHQp
Ci0JCXZlY19hZGQobW9kcywgbW9kKTsKKwkJdmVjX2FkZF9lbmQobW9kcywgbW9kKTsKIAogCWlm
IChtb2RzID09IE5VTEwpCiAJCUFCT1JUKCJmYWlsZWQgdG8gYWxsb2MgbW9kdWxlIGFycmF5Iik7
CkluZGV4OiBncm91dC0wLjE2LjEvbWFpbi91bml4LmMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ3JvdXQtMC4x
Ni4xLm9yaWcvbWFpbi91bml4LmMKKysrIGdyb3V0LTAuMTYuMS9tYWluL3VuaXguYwpAQCAtNjYs
NyArNjYsNyBAQCBpbnQgdW5peF9saXN0ZW4oY29uc3QgY2hhciAqcGF0aCkgewogCQlyZXR1cm4g
ZXJybm9fbG9nKGVycm5vLCAiYmluZCIpOwogCX0KIAotCXZlY19hZGQoc29ja2V0X3BhdGhzLCBz
dHJkdXAocGF0aCkpOworCXZlY19hZGRfZW5kKHNvY2tldF9wYXRocywgc3RyZHVwKHBhdGgpKTsK
IAogCWlmIChsaXN0ZW4oZmQsIFNPQ0tFVF9MSVNURU5fQkFDS0xPRykgPCAwKSB7CiAJCWNsb3Nl
KGZkKTsKSW5kZXg6IGdyb3V0LTAuMTYuMS9tYWluL3ZlY190ZXN0LmMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
Z3JvdXQtMC4xNi4xLm9yaWcvbWFpbi92ZWNfdGVzdC5jCisrKyBncm91dC0wLjE2LjEvbWFpbi92
ZWNfdGVzdC5jCkBAIC0xMCw3ICsxMCw3IEBAIHN0YXRpYyB2b2lkIGludF92ZWModm9pZCAqKikg
ewogCWFzc2VydF9pbnRfZXF1YWwodmVjX2xlbih2KSwgMCk7CiAKIAlmb3IgKGludCBpID0gMDsg
aSA8IDU7IGkrKykKLQkJdmVjX2FkZCh2LCBpKTsKKwkJdmVjX2FkZF9lbmQodiwgaSk7CiAKIAlh
c3NlcnRfaW50X2VxdWFsKHZlY19sZW4odiksIDUpOwogCkBAIC0yMiwxMiArMjIsMTIgQEAgc3Rh
dGljIHZvaWQgaW50X3ZlYyh2b2lkICoqKSB7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKysp
CiAJCWFzc2VydF9pbnRfZXF1YWwodltpXSwgaSArIDEpOwogCi0JdmVjX2luc2VydCh2LCAwLCAw
KTsKKwl2ZWNfaW5zZXJ0X2F0KHYsIDAsIDApOwogCWFzc2VydF9pbnRfZXF1YWwodmVjX2xlbih2
KSwgNSk7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspCiAJCWFzc2VydF9pbnRfZXF1YWwo
dltpXSwgaSk7CiAKLQl2ZWNfaW5zZXJ0KHYsIDEsIDQyKTsKKwl2ZWNfaW5zZXJ0X2F0KHYsIDEs
IDQyKTsKIAlhc3NlcnRfaW50X2VxdWFsKHZlY19sZW4odiksIDYpOwogCWFzc2VydF9pbnRfZXF1
YWwodlswXSwgMCk7CiAJYXNzZXJ0X2ludF9lcXVhbCh2WzFdLCA0Mik7CkBAIC01NSw5ICs1NSw5
IEBAIHN0YXRpYyB2b2lkIHN0cl92ZWModm9pZCAqKikgewogCiAJYXNzZXJ0X2ludF9lcXVhbCh2
ZWNfbGVuKHYpLCAwKTsKIAotCXZlY19hZGQodiwgImZvbyIpOwotCXZlY19hZGQodiwgImJhciIp
OwotCXZlY19hZGQodiwgImJheiIpOworCXZlY19hZGRfZW5kKHYsICJmb28iKTsKKwl2ZWNfYWRk
X2VuZCh2LCAiYmFyIik7CisJdmVjX2FkZF9lbmQodiwgImJheiIpOwogCiAJYXNzZXJ0X2ludF9l
cXVhbCh2ZWNfbGVuKHYpLCAzKTsKIAlhc3NlcnRfc3RyaW5nX2VxdWFsKHZbMF0sICJmb28iKTsK
QEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIHZvaWQgc3RyX3ZlYyh2b2lkICoqKSB7CiAJYXNzZXJ0
X3N0cmluZ19lcXVhbCh2WzBdLCAiZm9vIik7CiAJYXNzZXJ0X3N0cmluZ19lcXVhbCh2WzFdLCAi
YmF6Iik7CiAKLQl2ZWNfaW5zZXJ0KHYsIDIsICJiYXIiKTsKKwl2ZWNfaW5zZXJ0X2F0KHYsIDIs
ICJiYXIiKTsKIAlhc3NlcnRfaW50X2VxdWFsKHZlY19sZW4odiksIDMpOwogCWFzc2VydF9zdHJp
bmdfZXF1YWwodlswXSwgImZvbyIpOwogCWFzc2VydF9zdHJpbmdfZXF1YWwodlsxXSwgImJheiIp
OwpAQCAtODcsOSArODcsOSBAQCBzdGF0aWMgdm9pZCBzdHJfdmVjKHZvaWQgKiopIHsKIHN0YXRp
YyB2b2lkIGR5bl9zdHJfdmVjKHZvaWQgKiopIHsKIAl2ZWMgY2hhciAqKnYgPSBOVUxMOwogCi0J
dmVjX2FkZCh2LCBzdHJkdXAoImZvbyIpKTsKLQl2ZWNfYWRkKHYsIHN0cmR1cCgiYmFyIikpOwot
CXZlY19hZGQodiwgc3RyZHVwKCJiYXoiKSk7CisJdmVjX2FkZF9lbmQodiwgc3RyZHVwKCJmb28i
KSk7CisJdmVjX2FkZF9lbmQodiwgc3RyZHVwKCJiYXIiKSk7CisJdmVjX2FkZF9lbmQodiwgc3Ry
ZHVwKCJiYXoiKSk7CiAKIAlzdHJ2ZWNfZnJlZSh2KTsKIH0KQEAgLTk4LDEzICs5OCwxMyBAQCBz
dGF0aWMgdm9pZCBleHRfdmVjKHZvaWQgKiopIHsKIAl2ZWMgY29uc3QgY2hhciAqKnZlYzEgPSBO
VUxMOwogCXZlYyBjb25zdCBjaGFyICoqdmVjMiA9IE5VTEw7CiAKLQl2ZWNfYWRkKHZlYzEsICJm
b28xIik7Ci0JdmVjX2FkZCh2ZWMxLCAiYmFyMSIpOwotCXZlY19hZGQodmVjMSwgImJhejEiKTsK
LQotCXZlY19hZGQodmVjMiwgImZvbzIiKTsKLQl2ZWNfYWRkKHZlYzIsICJiYXIyIik7Ci0JdmVj
X2FkZCh2ZWMyLCAiYmF6MiIpOworCXZlY19hZGRfZW5kKHZlYzEsICJmb28xIik7CisJdmVjX2Fk
ZF9lbmQodmVjMSwgImJhcjEiKTsKKwl2ZWNfYWRkX2VuZCh2ZWMxLCAiYmF6MSIpOworCisJdmVj
X2FkZF9lbmQodmVjMiwgImZvbzIiKTsKKwl2ZWNfYWRkX2VuZCh2ZWMyLCAiYmFyMiIpOworCXZl
Y19hZGRfZW5kKHZlYzIsICJiYXoyIik7CiAKIAlhc3NlcnRfaW50X2VxdWFsKHZlY19sZW4odmVj
MSksIDMpOwogCWFzc2VydF9pbnRfZXF1YWwodmVjX2xlbih2ZWMyKSwgMyk7CkluZGV4OiBncm91
dC0wLjE2LjEvbW9kdWxlcy9pbmZyYS9jb250cm9sL2dyYXBoLmMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ3Jv
dXQtMC4xNi4xLm9yaWcvbW9kdWxlcy9pbmZyYS9jb250cm9sL2dyYXBoLmMKKysrIGdyb3V0LTAu
MTYuMS9tb2R1bGVzL2luZnJhL2NvbnRyb2wvZ3JhcGguYwpAQCAtMTIzLDggKzEyMyw4IEBAIHdv
cmtlcl9ncmFwaF9uZXcoc3RydWN0IHdvcmtlciAqd29ya2VyLAogCQlpZiAoIXFtYXAtPmVuYWJs
ZWQpCiAJCQljb250aW51ZTsKIAkJY2hhciAqbmFtZSA9IGFzdHJjYXQoTlVMTCwgUlhfTk9ERV9G
TVQsIHFtYXAtPnBvcnRfaWQsIHFtYXAtPnF1ZXVlX2lkKTsKLQkJdmVjX2FkZChyeF9ub2Rlcywg
bmFtZSk7Ci0JCXZlY19hZGQoZ3JhcGhfbm9kZXMsIG5hbWUpOworCQl2ZWNfYWRkX2VuZChyeF9u
b2RlcywgbmFtZSk7CisJCXZlY19hZGRfZW5kKGdyYXBoX25vZGVzLCBuYW1lKTsKIAl9CiAKIAl2
ZWNfZXh0ZW5kKGdyYXBoX25vZGVzLCBiYXNlX25vZGVfbmFtZXMpOwpAQCAtMzMxLDEzICszMzEs
MTMgQEAgc3RhdGljIHZlYyBydGVfbm9kZV90ICp3b3JrZXJfZ3JhcGhfbm9kZQogCQkJbmFtZSA9
IGVuc3VyZV9xdWV1ZV9ub2RlKAogCQkJCXBvcnRfcnhfbm9kZSwgUlhfTk9ERV9GTVQsIHBvcnQt
PnBvcnRfaWQsIHJ4cSwgb2xkX3J4CiAJCQkpOwotCQkJdmVjX2FkZChyeF9ub2RlX25hbWVzLCBu
YW1lKTsKKwkJCXZlY19hZGRfZW5kKHJ4X25vZGVfbmFtZXMsIG5hbWUpOwogCQl9CiAJCWZvciAo
dWludDE2X3QgdHhxID0gMDsgdHhxIDwgcG9ydC0+bl90eHE7IHR4cSsrKSB7CiAJCQluYW1lID0g
ZW5zdXJlX3F1ZXVlX25vZGUoCiAJCQkJcG9ydF90eF9ub2RlLCBUWF9OT0RFX0ZNVCwgcG9ydC0+
cG9ydF9pZCwgdHhxLCBvbGRfdHgKIAkJCSk7Ci0JCQl2ZWNfYWRkKHR4X25vZGVfbmFtZXMsIG5h
bWUpOworCQkJdmVjX2FkZF9lbmQodHhfbm9kZV9uYW1lcywgbmFtZSk7CiAJCX0KIAl9CiAKQEAg
LTM1OCw5ICszNTgsOSBAQCBzdGF0aWMgdmVjIHJ0ZV9ub2RlX3QgKndvcmtlcl9ncmFwaF9ub2Rl
CiAKIAkvLyBzdG9yZSBhbGwgdW51c2VkIG5vZGVfaWRzIGluIGEgbGlzdCB0byBiZSByZXR1cm5l
ZCB0byB0aGUgY2FsbGVyCiAJdmVjX2ZvcmVhY2ggKG5hbWUsIG9sZF9yeCkKLQkJdmVjX2FkZCh1
bnVzZWRfbm9kZXMsIHJ0ZV9ub2RlX2Zyb21fbmFtZShuYW1lKSk7CisJCXZlY19hZGRfZW5kKHVu
dXNlZF9ub2RlcywgcnRlX25vZGVfZnJvbV9uYW1lKG5hbWUpKTsKIAl2ZWNfZm9yZWFjaCAobmFt
ZSwgb2xkX3R4KQotCQl2ZWNfYWRkKHVudXNlZF9ub2RlcywgcnRlX25vZGVfZnJvbV9uYW1lKG5h
bWUpKTsKKwkJdmVjX2FkZF9lbmQodW51c2VkX25vZGVzLCBydGVfbm9kZV9mcm9tX25hbWUobmFt
ZSkpOwogCXN0cnZlY19mcmVlKG9sZF9yeCk7CiAJc3RydmVjX2ZyZWUob2xkX3R4KTsKIApAQCAt
NTcyLDcgKzU3Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXBpX291dCBncmFwaF9kdW1wKGNvbnN0IHYK
IAkJCQlpZiAoc3RyY21wKGUsIGVkZ2UpID09IDApCiAJCQkJCWdvdG8gc2tpcDsgLy8gc2tpcCBk
dXBsaWNhdGUgZWRnZXMKIAkJCX0KLQkJCXZlY19hZGQoc2Vlbl9lZGdlcywgZWRnZSk7CisJCQl2
ZWNfYWRkX2VuZChzZWVuX2VkZ2VzLCBlZGdlKTsKIAogCQkJaWYgKGZwcmludGYoZiwgIlx0XCIl
c1wiIC0+IFwiJXNcIiVzO1xuIiwgbmFtZSwgZWRnZSwgbm9kZV9hdHRycykgPCAwKQogCQkJCWdv
dG8gZXJyOwpAQCAtNjMwLDcgKzYzMCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXBpX291dCBncmFwaF9j
b25mX3NldChjb24KIAogCXdoaWxlICgoaWZhY2UgPSBpZmFjZV9uZXh0KEdSX0lGQUNFX1RZUEVf
UE9SVCwgaWZhY2UpKSAhPSBOVUxMKSB7CiAJCXN0cnVjdCBpZmFjZV9pbmZvX3BvcnQgKnBvcnQg
PSBpZmFjZV9pbmZvX3BvcnQoaWZhY2UpOwotCQl2ZWNfYWRkKHBvcnRzLCBwb3J0KTsKKwkJdmVj
X2FkZF9lbmQocG9ydHMsIHBvcnQpOwogCX0KIAogCUxPRyhOT1RJQ0UsCkBAIC02NzMsNyArNjcz
LDcgQEAgc3RhdGljIHZvaWQgZ3JhcGhfaW5pdChzdHJ1Y3QgZXZlbnRfYmFzZQogCQllbHNlIGlm
IChzdHJjbXAocmVnLT5uYW1lLCBUWF9OT0RFX0JBU0UpID09IDApCiAJCQlwb3J0X3R4X25vZGUg
PSByZWctPmlkOwogCQllbHNlCi0JCQl2ZWNfYWRkKGJhc2Vfbm9kZV9uYW1lcywgcmVnLT5uYW1l
KTsKKwkJCXZlY19hZGRfZW5kKGJhc2Vfbm9kZV9uYW1lcywgcmVnLT5uYW1lKTsKIAogCQlpZiAo
c3RyY21wKHJlZy0+bmFtZSwgInBvcnRfb3V0cHV0IikgPT0gMCkKIAkJCXBvcnRfb3V0cHV0X25v
ZGUgPSByZWctPmlkOwpJbmRleDogZ3JvdXQtMC4xNi4xL21vZHVsZXMvaW5mcmEvY29udHJvbC9p
ZmFjZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGdyb3V0LTAuMTYuMS5vcmlnL21vZHVsZXMvaW5mcmEvY29u
dHJvbC9pZmFjZS5jCisrKyBncm91dC0wLjE2LjEvbW9kdWxlcy9pbmZyYS9jb250cm9sL2lmYWNl
LmMKQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIHZlYyBzdHJ1Y3QgcmVzZXJ2ZWRfbmFtZSAqcmVz
ZXJ2ZQogCiB2b2lkIGlmYWNlX25hbWVfcmVzZXJ2ZShjb25zdCBjaGFyICpuYW1lLCBib29sIHBy
ZWZpeCkgewogCXN0cnVjdCByZXNlcnZlZF9uYW1lIHIgPSB7Lm5hbWUgPSBuYW1lLCAucHJlZml4
ID0gcHJlZml4fTsKLQl2ZWNfYWRkKHJlc2VydmVkX25hbWVzLCByKTsKKwl2ZWNfYWRkX2VuZChy
ZXNlcnZlZF9uYW1lcywgcik7CiB9CiAKIHN0YXRpYyBib29sIGlmYWNlX25hbWVfaXNfcmVzZXJ2
ZWQoY29uc3QgY2hhciAqbmFtZSkgewpAQCAtNDkxLDcgKzQ5MSw3IEBAIHZvaWQgaWZhY2VfYWRk
X3N1YmludGVyZmFjZShzdHJ1Y3QgaWZhY2UKIAkJaWYgKHMgPT0gc3ViKQogCQkJcmV0dXJuOwog
CX0KLQl2ZWNfYWRkKHBhcmVudC0+c3ViaW50ZXJmYWNlcywgc3ViKTsKKwl2ZWNfYWRkX2VuZChw
YXJlbnQtPnN1YmludGVyZmFjZXMsIHN1Yik7CiB9CiAKIHZvaWQgaWZhY2VfZGVsX3N1YmludGVy
ZmFjZShzdHJ1Y3QgaWZhY2UgKnBhcmVudCwgc3RydWN0IGlmYWNlICpzdWIpIHsKQEAgLTU2MCw3
ICs1NjAsNyBAQCBpbnQgaWZhY2VfYWRkX2V0aF9hZGRyKHN0cnVjdCBpZmFjZSAqaWZhCiAJbmV3
X20gPSAoc3RydWN0IGlmYWNlX21hYykgey5yZWZjbnQgPSAxLCAubWFjID0gKm1hYywgLmhhcmR3
YXJlID0gZmFsc2V9OwogCXJldCA9IHR5cGUtPmFkZF9ldGhfYWRkcihpZmFjZSwgJm5ld19tKTsK
IAlpZiAocmV0ID09IDApCi0JCXZlY19hZGQoaWZhY2UtPm1hY3MsIG5ld19tKTsKKwkJdmVjX2Fk
ZF9lbmQoaWZhY2UtPm1hY3MsIG5ld19tKTsKIAlyZXR1cm4gcmV0OwogfQogCkluZGV4OiBncm91
dC0wLjE2LjEvbW9kdWxlcy9pbmZyYS9jb250cm9sL25ldGxpbmsuYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBn
cm91dC0wLjE2LjEub3JpZy9tb2R1bGVzL2luZnJhL2NvbnRyb2wvbmV0bGluay5jCisrKyBncm91
dC0wLjE2LjEvbW9kdWxlcy9pbmZyYS9jb250cm9sL25ldGxpbmsuYwpAQCAtMzg3LDcgKzM4Nyw3
IEBAIHN0YXRpYyBpbnQgcnVsZV9mbHVzaF9jYihjb25zdCBzdHJ1Y3QgbmwKIAlpZiAodGFibGUg
IT0gR1JfQ1BfUlRfVEFCTEUgfHwgb2lmbmFtZSA9PSBOVUxMKQogCQlyZXR1cm4gTU5MX0NCX09L
OwogCXNucHJpbnRmKGUub2lmbmFtZSwgSUZOQU1TSVosICIlcyIsIG9pZm5hbWUpOwotCXZlY19h
ZGQoKnJ1bGVzLCBlKTsKKwl2ZWNfYWRkX2VuZCgqcnVsZXMsIGUpOwogCXJldHVybiBNTkxfQ0Jf
T0s7CiB9CiAKQEAgLTQxMSw3ICs0MTEsNyBAQCBzdGF0aWMgaW50IHJvdXRlX2ZsdXNoX2NiKGNv
bnN0IHN0cnVjdCBuCiAKIAlpZiAodGFibGUgIT0gR1JfQ1BfUlRfVEFCTEUpCiAJCXJldHVybiBN
TkxfQ0JfT0s7Ci0JdmVjX2FkZCgqcm91dGVzLCBlKTsKKwl2ZWNfYWRkX2VuZCgqcm91dGVzLCBl
KTsKIAlyZXR1cm4gTU5MX0NCX09LOwogfQogCkluZGV4OiBncm91dC0wLjE2LjEvbW9kdWxlcy9p
bmZyYS9jb250cm9sL3BvcnQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBncm91dC0wLjE2LjEub3JpZy9tb2R1
bGVzL2luZnJhL2NvbnRyb2wvcG9ydC5jCisrKyBncm91dC0wLjE2LjEvbW9kdWxlcy9pbmZyYS9j
b250cm9sL3BvcnQuYwpAQCAtMzM0LDExICszMzQsMTEgQEAgc3RhdGljIGludCBpZmFjZV9wb3J0
X3JlY29uZmlnKAogCQkJc3RydWN0IGlmYWNlX2luZm9fcG9ydCAqcG9ydCA9IGlmYWNlX2luZm9f
cG9ydChpKTsKIAkJCWlmIChwb3J0ID09IHApCiAJCQkJZm91bmQgPSB0cnVlOwotCQkJdmVjX2Fk
ZChwb3J0cywgcG9ydCk7CisJCQl2ZWNfYWRkX2VuZChwb3J0cywgcG9ydCk7CiAJCX0KIAkJaWYg
KCFmb3VuZCkgewogCQkJLy8gcG9ydCBpcyBiZWluZyBjcmVhdGVkLCBub3QgcHJlc2VudCBpbiB0
aGUgZ2xvYmFsIGxpc3QgeWV0Ci0JCQl2ZWNfYWRkKHBvcnRzLCBwKTsKKwkJCXZlY19hZGRfZW5k
KHBvcnRzLCBwKTsKIAkJfQogCQlyZXQgPSB3b3JrZXJfcXVldWVfZGlzdHJpYnV0ZSgmZ3JfY29u
ZmlnLmRhdGFwYXRoX2NwdXMsIHBvcnRzKTsKIAkJdmVjX2ZyZWUocG9ydHMpOwpAQCAtNTMxLDcg
KzUzMSw3IEBAIHN0YXRpYyBpbnQgaWZhY2VfcG9ydF9maW5pKHN0cnVjdCBpZmFjZQogCQl3aGls
ZSAoKGkgPSBpZmFjZV9uZXh0KEdSX0lGQUNFX1RZUEVfUE9SVCwgaSkpICE9IE5VTEwpIHsKIAkJ
CXN0cnVjdCBpZmFjZV9pbmZvX3BvcnQgKnAgPSBpZmFjZV9pbmZvX3BvcnQoaSk7CiAJCQlpZiAo
cCAhPSBwb3J0KQotCQkJCXZlY19hZGQocG9ydHMsIHApOworCQkJCXZlY19hZGRfZW5kKHBvcnRz
LCBwKTsKIAkJfQogCQlyZXQgPSB3b3JrZXJfcXVldWVfZGlzdHJpYnV0ZSgmZ3JfY29uZmlnLmRh
dGFwYXRoX2NwdXMsIHBvcnRzKTsKIAkJdmVjX2ZyZWUocG9ydHMpOwpAQCAtOTAxLDcgKzkwMSw3
IEBAIHN0YXRpYyBpbnQgaW50cl9yZXNldF9jYigKIAkvLyBRdWV1ZSB0aGUgcG9ydCBJRHMgaW4g
YSB2ZWN0b3IgcHJvdGVjdGVkIGJ5IGEgbXV0ZXggc28gdGhhdCB0aGV5IGFyZSBhbGwKIAkvLyBw
cm9jZXNzZWQgaW4gcG9ydF9yZXNldF9jYigpLgogCXB0aHJlYWRfbXV0ZXhfbG9jaygmcmVzZXRf
cG9ydHNfbG9jayk7Ci0JdmVjX2FkZChyZXNldF9wb3J0cywgcG9ydF9pZCk7CisJdmVjX2FkZF9l
bmQocmVzZXRfcG9ydHMsIHBvcnRfaWQpOwogCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZyZXNldF9w
b3J0c19sb2NrKTsKIAkvLyBUaGlzIGNhbGxiYWNrIG1heSBiZSBleGVjdXRlZCBmcm9tIGFueSBk
YXRhcGxhbmUgb3IgRFBESyB0aHJlYWQuCiAJLy8gSW4gb3JkZXIgdG8gc2VyaWFsaXplIHRoZSBy
ZXNldCBvZiB0aGUgcG9ydCwgcHJvcGFnYXRlIHRoZSBjYWxsYmFjawpJbmRleDogZ3JvdXQtMC4x
Ni4xL21vZHVsZXMvaW5mcmEvY29udHJvbC93b3JrZXIuYwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBncm91dC0w
LjE2LjEub3JpZy9tb2R1bGVzL2luZnJhL2NvbnRyb2wvd29ya2VyLmMKKysrIGdyb3V0LTAuMTYu
MS9tb2R1bGVzL2luZnJhL2NvbnRyb2wvd29ya2VyLmMKQEAgLTE2OSw3ICsxNjksNyBAQCBpbnQg
cG9ydF91bnBsdWcoc3RydWN0IGlmYWNlX2luZm9fcG9ydCAqCiAJd2hpbGUgKChpZmFjZSA9IGlm
YWNlX25leHQoR1JfSUZBQ0VfVFlQRV9QT1JULCBpZmFjZSkpICE9IE5VTEwpIHsKIAkJc3RydWN0
IGlmYWNlX2luZm9fcG9ydCAqcG9ydCA9IGlmYWNlX2luZm9fcG9ydChpZmFjZSk7CiAJCWlmIChw
b3J0LT5wb3J0X2lkICE9IHAtPnBvcnRfaWQpCi0JCQl2ZWNfYWRkKHBvcnRzLCBwb3J0KTsKKwkJ
CXZlY19hZGRfZW5kKHBvcnRzLCBwb3J0KTsKIAl9CiAKIAlyZXQgPSB3b3JrZXJfZ3JhcGhfcmVs
b2FkX2FsbChwb3J0cyk7CkBAIC0yMTEsMTAgKzIxMSwxMCBAQCBpbnQgcG9ydF9wbHVnKHN0cnVj
dCBpZmFjZV9pbmZvX3BvcnQgKnApCiAJCXN0cnVjdCBpZmFjZV9pbmZvX3BvcnQgKnBvcnQgPSBp
ZmFjZV9pbmZvX3BvcnQoaWZhY2UpOwogCQlpZiAocG9ydC0+cG9ydF9pZCA9PSBwLT5wb3J0X2lk
KQogCQkJZm91bmQgPSB0cnVlOwotCQl2ZWNfYWRkKHBvcnRzLCBwb3J0KTsKKwkJdmVjX2FkZF9l
bmQocG9ydHMsIHBvcnQpOwogCX0KIAlpZiAoIWZvdW5kKQotCQl2ZWNfYWRkKHBvcnRzLCBwKTsK
KwkJdmVjX2FkZF9lbmQocG9ydHMsIHApOwogCiAJaW50IHJldCA9IHdvcmtlcl9ncmFwaF9yZWxv
YWRfYWxsKHBvcnRzKTsKIAl2ZWNfZnJlZShwb3J0cyk7CkBAIC0yNDEsNyArMjQxLDcgQEAgc3Rh
dGljIHZvaWQgd29ya2VyX3R4cV9kaXN0cmlidXRlKHZlYyBzdAogCQkJCS5xdWV1ZV9pZCA9IHR4
cV9pZHggJSBwb3J0LT5uX3R4cSwKIAkJCQkuZW5hYmxlZCA9IHBvcnQtPnN0YXJ0ZWQsCiAJCQl9
OwotCQkJdmVjX2FkZCh3b3JrZXItPnR4cXMsIHR4cSk7CisJCQl2ZWNfYWRkX2VuZCh3b3JrZXIt
PnR4cXMsIHR4cSk7CiAJCQl0eHFfaWR4Kys7CiAJCX0KIAl9CkBAIC0yOTQsMTMgKzI5NCwxMyBA
QCBtb3ZlOgogCQkucXVldWVfaWQgPSByeHFfaWQsCiAJCS5lbmFibGVkID0gdHJ1ZSwKIAl9Owot
CXZlY19hZGQoZHN0X3dvcmtlci0+cnhxcywgcnhfcW1hcCk7CisJdmVjX2FkZF9lbmQoZHN0X3dv
cmtlci0+cnhxcywgcnhfcW1hcCk7CiAKIAkvLyByZWFzc2lnbiBUWCBxdWV1ZXMgYW5kIHJlbG9h
ZCBhbGwgZ3JhcGhzCiAJdmVjIHN0cnVjdCBpZmFjZV9pbmZvX3BvcnQgKipwb3J0cyA9IE5VTEw7
CiAJc3RydWN0IGlmYWNlICppZmFjZSA9IE5VTEw7CiAJd2hpbGUgKChpZmFjZSA9IGlmYWNlX25l
eHQoR1JfSUZBQ0VfVFlQRV9QT1JULCBpZmFjZSkpICE9IE5VTEwpCi0JCXZlY19hZGQocG9ydHMs
IGlmYWNlX2luZm9fcG9ydChpZmFjZSkpOworCQl2ZWNfYWRkX2VuZChwb3J0cywgaWZhY2VfaW5m
b19wb3J0KGlmYWNlKSk7CiAKIAl3b3JrZXJfdHhxX2Rpc3RyaWJ1dGUocG9ydHMpOwogCkBAIC0z
NTYsNyArMzU2LDcgQEAgaW50IHdvcmtlcl9xdWV1ZV9kaXN0cmlidXRlKGNvbnN0IGNwdV9zZQog
CQkJCQlnb3RvIGVuZDsKIAkJCQl9CiAJCQl9Ci0JCQl2ZWNfYWRkKGNwdXMsIGNwdSk7CisJCQl2
ZWNfYWRkX2VuZChjcHVzLCBjcHUpOwogCQl9CiAJfQogCkBAIC00MTMsNyArNDEzLDcgQEAgaW50
IHdvcmtlcl9xdWV1ZV9kaXN0cmlidXRlKGNvbnN0IGNwdV9zZQogCQkJCS5xdWV1ZV9pZCA9IHJ4
cSwKIAkJCQkuZW5hYmxlZCA9IHBvcnQtPnN0YXJ0ZWQsCiAJCQl9OwotCQkJdmVjX2FkZCh3b3Jr
ZXItPnJ4cXMsIHEpOworCQkJdmVjX2FkZF9lbmQod29ya2VyLT5yeHFzLCBxKTsKIAogCQkJaWYg
KCsraSA+PSB2ZWNfbGVuKGNwdXMpKQogCQkJCWkgPSAwOwpAQCAtNDc1LDcgKzQ3NSw3IEBAIHZl
YyBzdHJ1Y3QgZ3Jfc3RhdCAqd29ya2VyX2R1bXBfc3RhdHModWkKIAkJCQkJLnRvcG9fb3JkZXIg
PSBuLT50b3BvX29yZGVyLAogCQkJCX07CiAJCQkJZ3Jfc3RyY3B5KHN0YXQubmFtZSwgc2l6ZW9m
KHN0YXQubmFtZSksIG5hbWUpOwotCQkJCXZlY19hZGQoc3RhdHMsIHN0YXQpOworCQkJCXZlY19h
ZGRfZW5kKHN0YXRzLCBzdGF0KTsKIAkJCX0KIAkJCWZvciAodWludDhfdCB4ID0gMDsgeCA8IG4t
Pm5iX3hzdGF0czsgeCsrKSB7CiAJCQkJc25wcmludGYoCkBAIC00OTYsNyArNDk2LDcgQEAgdmVj
IHN0cnVjdCBncl9zdGF0ICp3b3JrZXJfZHVtcF9zdGF0cyh1aQogCQkJCQkJLnRvcG9fb3JkZXIg
PSBuLT50b3BvX29yZGVyLAogCQkJCQl9OwogCQkJCQlncl9zdHJjcHkoc3RhdC5uYW1lLCBzaXpl
b2Yoc3RhdC5uYW1lKSwgeG5hbWUpOwotCQkJCQl2ZWNfYWRkKHN0YXRzLCBzdGF0KTsKKwkJCQkJ
dmVjX2FkZF9lbmQoc3RhdHMsIHN0YXQpOwogCQkJCX0KIAkJCX0KIApAQCAtNTE3LDcgKzUxNyw3
IEBAIHZlYyBzdHJ1Y3QgZ3Jfc3RhdCAqd29ya2VyX2R1bXBfc3RhdHModWkKIAkJCQkudG9wb19v
cmRlciA9IFVJTlQ2NF9NQVgsCiAJCQl9OwogCQkJZ3Jfc3RyY3B5KHN0YXQubmFtZSwgc2l6ZW9m
KHN0YXQubmFtZSksICJpZGxlIik7Ci0JCQl2ZWNfYWRkKHN0YXRzLCBzdGF0KTsKKwkJCXZlY19h
ZGRfZW5kKHN0YXRzLCBzdGF0KTsKIAkJfQogCQlsb29wX2N5Y2xlcyArPSB3X3N0YXRzLT5sb29w
X2N5Y2xlcyAtIHdfc3RhdHMtPnNsZWVwX2N5Y2xlczsKIAkJbl9sb29wcyArPSB3X3N0YXRzLT5u
X2xvb3BzOwpAQCAtNTMwLDcgKzUzMCw3IEBAIHZlYyBzdHJ1Y3QgZ3Jfc3RhdCAqd29ya2VyX2R1
bXBfc3RhdHModWkKIAkJLnRvcG9fb3JkZXIgPSBVSU5UNjRfTUFYIC0gMSwKIAl9OwogCWdyX3N0
cmNweShzdGF0Lm5hbWUsIHNpemVvZihzdGF0Lm5hbWUpLCAib3ZlcmhlYWQiKTsKLQl2ZWNfYWRk
KHN0YXRzLCBzdGF0KTsKKwl2ZWNfYWRkX2VuZChzdGF0cywgc3RhdCk7CiAKIAlyZXR1cm4gc3Rh
dHM7CiB9CkluZGV4OiBncm91dC0wLjE2LjEvbW9kdWxlcy9pbmZyYS9jb250cm9sL3dvcmtlcl90
ZXN0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gZ3JvdXQtMC4xNi4xLm9yaWcvbW9kdWxlcy9pbmZyYS9jb250
cm9sL3dvcmtlcl90ZXN0LmMKKysrIGdyb3V0LTAuMTYuMS9tb2R1bGVzL2luZnJhL2NvbnRyb2wv
d29ya2VyX3Rlc3QuYwpAQCAtMjAzLDI3ICsyMDMsMjcgQEAgc3RhdGljIGludCBzZXR1cCh2b2lk
ICoqKSB7CiAJCWlmYWNlc1tpXSA9IGlmYWNlOwogCX0KIAlTVEFJTFFfSU5TRVJUX1RBSUwoJndv
cmtlcnMsICZ3MSwgbmV4dCk7Ci0JdmVjX2FkZCh3MS5yeHFzLCBxKDAsIDApKTsKLQl2ZWNfYWRk
KHcxLnJ4cXMsIHEoMCwgMSkpOwotCXZlY19hZGQodzEucnhxcywgcSgxLCAwKSk7Ci0KLQl2ZWNf
YWRkKHcxLnR4cXMsIHEoMCwgMCkpOwotCXZlY19hZGQodzEudHhxcywgcSgxLCAwKSk7Ci0JdmVj
X2FkZCh3MS50eHFzLCBxKDIsIDApKTsKKwl2ZWNfYWRkX2VuZCh3MS5yeHFzLCBxKDAsIDApKTsK
Kwl2ZWNfYWRkX2VuZCh3MS5yeHFzLCBxKDAsIDEpKTsKKwl2ZWNfYWRkX2VuZCh3MS5yeHFzLCBx
KDEsIDApKTsKKworCXZlY19hZGRfZW5kKHcxLnR4cXMsIHEoMCwgMCkpOworCXZlY19hZGRfZW5k
KHcxLnR4cXMsIHEoMSwgMCkpOworCXZlY19hZGRfZW5kKHcxLnR4cXMsIHEoMiwgMCkpOwogCiAJ
U1RBSUxRX0lOU0VSVF9UQUlMKCZ3b3JrZXJzLCAmdzIsIG5leHQpOwotCXZlY19hZGQodzIucnhx
cywgcSgxLCAxKSk7Ci0JdmVjX2FkZCh3Mi5yeHFzLCBxKDIsIDApKTsKLQl2ZWNfYWRkKHcyLnJ4
cXMsIHEoMiwgMSkpOwotCi0JdmVjX2FkZCh3Mi50eHFzLCBxKDAsIDEpKTsKLQl2ZWNfYWRkKHcy
LnR4cXMsIHEoMSwgMSkpOwotCXZlY19hZGQodzIudHhxcywgcSgyLCAxKSk7CisJdmVjX2FkZF9l
bmQodzIucnhxcywgcSgxLCAxKSk7CisJdmVjX2FkZF9lbmQodzIucnhxcywgcSgyLCAwKSk7CisJ
dmVjX2FkZF9lbmQodzIucnhxcywgcSgyLCAxKSk7CisKKwl2ZWNfYWRkX2VuZCh3Mi50eHFzLCBx
KDAsIDEpKTsKKwl2ZWNfYWRkX2VuZCh3Mi50eHFzLCBxKDEsIDEpKTsKKwl2ZWNfYWRkX2VuZCh3
Mi50eHFzLCBxKDIsIDEpKTsKIAogCVNUQUlMUV9JTlNFUlRfVEFJTCgmd29ya2VycywgJnczLCBu
ZXh0KTsKLQl2ZWNfYWRkKHczLnR4cXMsIHEoMCwgMikpOwotCXZlY19hZGQodzMudHhxcywgcSgx
LCAyKSk7Ci0JdmVjX2FkZCh3My50eHFzLCBxKDIsIDIpKTsKKwl2ZWNfYWRkX2VuZCh3My50eHFz
LCBxKDAsIDIpKTsKKwl2ZWNfYWRkX2VuZCh3My50eHFzLCBxKDEsIDIpKTsKKwl2ZWNfYWRkX2Vu
ZCh3My50eHFzLCBxKDIsIDIpKTsKIAogCXJldHVybiAwOwogfQpAQCAtMzgxLDcgKzM4MSw3IEBA
IHN0YXRpYyB2b2lkIHF1ZXVlX2Rpc3RyaWJ1dGVfcmVkdWNlKHZvaWQKIAlDUFVfU0VUKDUsICZh
ZmZpbml0eSk7CiAJdmVjIHN0cnVjdCBpZmFjZV9pbmZvX3BvcnQgKipwb3J0cyA9IE5VTEw7CiAJ
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFSUkFZX0RJTShpZmFjZXMpOyBpKyspCi0JCXZlY19h
ZGQocG9ydHMsIGlmYWNlX2luZm9fcG9ydChpZmFjZXNbaV0pKTsKKwkJdmVjX2FkZF9lbmQocG9y
dHMsIGlmYWNlX2luZm9fcG9ydChpZmFjZXNbaV0pKTsKIAogCXdpbGxfcmV0dXJuKF9fd3JhcF9y
dGVfem1hbGxvYywgJnc0KTsKIAl3aWxsX3JldHVybihfX3dyYXBfcnRlX3ptYWxsb2MsICZ3NSk7
CkBAIC00MTgsNyArNDE4LDcgQEAgc3RhdGljIHZvaWQgcXVldWVfZGlzdHJpYnV0ZV9pbmNyZWFz
ZSh2bwogCUNQVV9TRVQoNSwgJmFmZmluaXR5KTsKIAl2ZWMgc3RydWN0IGlmYWNlX2luZm9fcG9y
dCAqKnBvcnRzID0gTlVMTDsKIAlmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQVJSQVlfRElNKGlm
YWNlcyk7IGkrKykKLQkJdmVjX2FkZChwb3J0cywgaWZhY2VfaW5mb19wb3J0KGlmYWNlc1tpXSkp
OworCQl2ZWNfYWRkX2VuZChwb3J0cywgaWZhY2VfaW5mb19wb3J0KGlmYWNlc1tpXSkpOwogCiAJ
d2lsbF9yZXR1cm4oX193cmFwX3J0ZV96bWFsbG9jLCAmdzEpOwogCXdpbGxfcmV0dXJuKF9fd3Jh
cF9ydGVfem1hbGxvYywgJncyKTsKSW5kZXg6IGdyb3V0LTAuMTYuMS9tb2R1bGVzL2luZnJhL2Rh
dGFwYXRoL21haW5fbG9vcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdyb3V0LTAuMTYuMS5vcmlnL21vZHVs
ZXMvaW5mcmEvZGF0YXBhdGgvbWFpbl9sb29wLmMKKysrIGdyb3V0LTAuMTYuMS9tb2R1bGVzL2lu
ZnJhL2RhdGFwYXRoL21haW5fbG9vcC5jCkBAIC0xNDIsNyArMTQyLDcgQEAgc3RhdGljIGludCBz
dGF0c19yZWxvYWQoY29uc3Qgc3RydWN0IHJ0ZQogCXJ0ZV9ncmFwaF9vZmZfdCBvZmY7CiAJcnRl
X25vZGVfdCBjb3VudDsKIAlydGVfZ3JhcGhfZm9yZWFjaF9ub2RlIChjb3VudCwgb2ZmLCBncmFw
aCwgbm9kZSkKLQkJdmVjX2FkZChub2Rlcywgbm9kZSk7CisJCXZlY19hZGRfZW5kKG5vZGVzLCBu
b2RlKTsKIAogCS8vIHNvcnQgYnkgbmFtZSBmaXJzdCB0byBlbnN1cmUgc3RhYmxlIHRvcG9fc29y
dAogCXFzb3J0KG5vZGVzLCBjb3VudCwgc2l6ZW9mKHZvaWQgKiksIG5vZGVfbmFtZV9jbXApOwpJ
bmRleDogZ3JvdXQtMC4xNi4xL21vZHVsZXMvaXAvY29udHJvbC9hZGRyZXNzLmMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gZ3JvdXQtMC4xNi4xLm9yaWcvbW9kdWxlcy9pcC9jb250cm9sL2FkZHJlc3MuYworKysg
Z3JvdXQtMC4xNi4xL21vZHVsZXMvaXAvY29udHJvbC9hZGRyZXNzLmMKQEAgLTEwNSwxMyArMTA1
LDEzIEBAIGludCBhZGRyNF9hZGQodWludDE2X3QgaWZhY2VfaWQsIGlwNF9hZGQKIAkJcmV0dXJu
IHJldDsKIAl9CiAKLQkvLyB2ZWNfYWRkIG1heSByZWFsbG9jKCkgYW5kIGZyZWUgdGhlIG9sZCB2
ZWN0b3IKKwkvLyB2ZWNfYWRkX2VuZCBtYXkgcmVhbGxvYygpIGFuZCBmcmVlIHRoZSBvbGQgdmVj
dG9yCiAJLy8gRHVwbGljYXRlIHRoZSB3aG9sZSB2ZWN0b3IgYW5kIGFwcGVuZCB0byB0aGUgY2xv
bmUuCiAJdmVjIHN0cnVjdCBuZXh0aG9wICoqbmhzX2NvcHkgPSBOVUxMOwogCXZlYyBzdHJ1Y3Qg
bmV4dGhvcCAqKm5oc19vbGQgPSBpZmFkZHJzLT5uaDsKIAl2ZWNfY2FwX3NldChuaHNfY29weSwg
dmVjX2xlbihuaHNfb2xkKSArIDEpOyAvLyBhdm9pZCBtYWxsb2MrcmVhbGxvYwogCXZlY19leHRl
bmQobmhzX2NvcHksIG5oc19vbGQpOwotCXZlY19hZGQobmhzX2NvcHksIG5oKTsKKwl2ZWNfYWRk
X2VuZChuaHNfY29weSwgbmgpOwogCWlmYWRkcnMtPm5oID0gbmhzX2NvcHk7CiAJaWYgKG5oc19v
bGQgIT0gTlVMTCkgewogCQkvLyBPbmNlIGFsbCBkYXRhcGF0aCB3b3JrZXJzIGhhdmUgc2VlbiB0
aGUgbmV3IGNsb25lLCBmcmVlIHRoZSBvbGQgb25lLgpJbmRleDogZ3JvdXQtMC4xNi4xL21vZHVs
ZXMvaXAvY29udHJvbC9yb3V0ZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdyb3V0LTAuMTYuMS5vcmlnL21v
ZHVsZXMvaXAvY29udHJvbC9yb3V0ZS5jCisrKyBncm91dC0wLjE2LjEvbW9kdWxlcy9pcC9jb250
cm9sL3JvdXRlLmMKQEAgLTU0NSw3ICs1NDUsNyBAQCBzdGF0aWMgaW50IHJpYjRfY2xlYW51cF9j
YigKIAkJCS5kZXB0aCA9IGRlcHRoLAogCQkJLnR5cGUgPSBuaC0+dHlwZSwKIAkJfTsKLQkJdmVj
X2FkZChjdHgtPmVudHJpZXMsIGVudHJ5KTsKKwkJdmVjX2FkZF9lbmQoY3R4LT5lbnRyaWVzLCBl
bnRyeSk7CiAJfQogCXJldHVybiAwOwogfQpJbmRleDogZ3JvdXQtMC4xNi4xL21vZHVsZXMvaXA2
L2NvbnRyb2wvYWRkcmVzcy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdyb3V0LTAuMTYuMS5vcmlnL21vZHVs
ZXMvaXA2L2NvbnRyb2wvYWRkcmVzcy5jCisrKyBncm91dC0wLjE2LjEvbW9kdWxlcy9pcDYvY29u
dHJvbC9hZGRyZXNzLmMKQEAgLTEzMCwxMyArMTMwLDEzIEBAIHN0YXRpYyBpbnQgbWNhc3Q2X2Fk
ZHJfYWRkKGNvbnN0IHN0cnVjdAogCQluZXh0aG9wX2luY3JlZihuaCk7CiAJfQogCi0JLy8gdmVj
X2FkZCBtYXkgcmVhbGxvYygpIGFuZCBmcmVlIHRoZSBvbGQgdmVjdG9yCisJLy8gdmVjX2FkZF9l
bmQgbWF5IHJlYWxsb2MoKSBhbmQgZnJlZSB0aGUgb2xkIHZlY3RvcgogCS8vIER1cGxpY2F0ZSB0
aGUgd2hvbGUgdmVjdG9yIGFuZCBhcHBlbmQgdG8gdGhlIGNsb25lLgogCXZlYyBzdHJ1Y3QgbmV4
dGhvcCAqKm5oc19jb3B5ID0gTlVMTDsKIAl2ZWMgc3RydWN0IG5leHRob3AgKipuaHNfb2xkID0g
bWFkZHJzLT5uaDsKIAl2ZWNfY2FwX3NldChuaHNfY29weSwgdmVjX2xlbihuaHNfb2xkKSArIDEp
OyAvLyBhdm9pZCBtYWxsb2MrcmVhbGxvYwogCXZlY19leHRlbmQobmhzX2NvcHksIG5oc19vbGQp
OwotCXZlY19hZGQobmhzX2NvcHksIG5oKTsKKwl2ZWNfYWRkX2VuZChuaHNfY29weSwgbmgpOwog
CW1hZGRycy0+bmggPSBuaHNfY29weTsKIAlpZiAobmhzX29sZCAhPSBOVUxMKSB7CiAJCS8vIE9u
Y2UgYWxsIGRhdGFwYXRoIHdvcmtlcnMgaGF2ZSBzZWVuIHRoZSBuZXcgY2xvbmUsIGZyZWUgdGhl
IG9sZCBvbmUuCkBAIC0yMzMsMTMgKzIzMywxMyBAQCBpZmFjZTZfYWRkcl9hZGQoY29uc3Qgc3Ry
dWN0IGlmYWNlICppZmFjCiAJaWYgKGlmYWNlLT5jcF9pZCAhPSAwICYmIG5ldGxpbmtfYWRkX2Fk
ZHI2KGlmYWNlLT5jcF9pZCwgaXApIDwgMCkKIAkJTE9HKFdBUk5JTkcsICJhZGQgYWRkciAiIElQ
Nl9GICIgb24gbGludXggaGFzIGZhaWxlZCAoJXMpIiwgaXAsIHN0cmVycm9yKGVycm5vKSk7CiAK
LQkvLyB2ZWNfYWRkIG1heSByZWFsbG9jKCkgYW5kIGZyZWUgdGhlIG9sZCB2ZWN0b3IKKwkvLyB2
ZWNfYWRkX2VuZCBtYXkgcmVhbGxvYygpIGFuZCBmcmVlIHRoZSBvbGQgdmVjdG9yCiAJLy8gRHVw
bGljYXRlIHRoZSB3aG9sZSB2ZWN0b3IgYW5kIGFwcGVuZCB0byB0aGUgY2xvbmUuCiAJdmVjIHN0
cnVjdCBuZXh0aG9wICoqbmhzX2NvcHkgPSBOVUxMOwogCXZlYyBzdHJ1Y3QgbmV4dGhvcCAqKm5o
c19vbGQgPSBhZGRycy0+bmg7CiAJdmVjX2NhcF9zZXQobmhzX2NvcHksIHZlY19sZW4obmhzX29s
ZCkgKyAxKTsgLy8gYXZvaWQgbWFsbG9jK3JlYWxsb2MKIAl2ZWNfZXh0ZW5kKG5oc19jb3B5LCBu
aHNfb2xkKTsKLQl2ZWNfYWRkKG5oc19jb3B5LCBuaCk7CisJdmVjX2FkZF9lbmQobmhzX2NvcHks
IG5oKTsKIAlhZGRycy0+bmggPSBuaHNfY29weTsKIAlpZiAobmhzX29sZCAhPSBOVUxMKSB7CiAJ
CS8vIE9uY2UgYWxsIGRhdGFwYXRoIHdvcmtlcnMgaGF2ZSBzZWVuIHRoZSBuZXcgY2xvbmUsIGZy
ZWUgdGhlIG9sZCBvbmUuCkluZGV4OiBncm91dC0wLjE2LjEvbW9kdWxlcy9pcDYvY29udHJvbC9y
b3V0ZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGdyb3V0LTAuMTYuMS5vcmlnL21vZHVsZXMvaXA2L2NvbnRy
b2wvcm91dGUuYworKysgZ3JvdXQtMC4xNi4xL21vZHVsZXMvaXA2L2NvbnRyb2wvcm91dGUuYwpA
QCAtNTg4LDcgKzU4OCw3IEBAIHN0YXRpYyBpbnQgcmliNl9jbGVhbnVwX2NiKAogCQkJLmRlcHRo
ID0gZGVwdGgsCiAJCQkudHlwZSA9IG5oLT50eXBlLAogCQl9OwotCQl2ZWNfYWRkKGN0eC0+ZW50
cmllcywgZW50cnkpOworCQl2ZWNfYWRkX2VuZChjdHgtPmVudHJpZXMsIGVudHJ5KTsKIAl9CiAJ
cmV0dXJuIDA7CiB9CkluZGV4OiBncm91dC0wLjE2LjEvbW9kdWxlcy9wb2xpY3kvY29udHJvbC9z
bmF0NDRfZHluYW1pYy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdyb3V0LTAuMTYuMS5vcmlnL21vZHVsZXMv
cG9saWN5L2NvbnRyb2wvc25hdDQ0X2R5bmFtaWMuYworKysgZ3JvdXQtMC4xNi4xL21vZHVsZXMv
cG9saWN5L2NvbnRyb2wvc25hdDQ0X2R5bmFtaWMuYwpAQCAtODgsNyArODgsNyBAQCB2ZWMgc3Ry
dWN0IGdyX3NuYXQ0NF9wb2xpY3kgKnNuYXQ0NF9keW5hCiAJY29uc3Qgc3RydWN0IHNuYXQ0NF9w
b2xpY3kgKnA7CiAKIAlTVEFJTFFfRk9SRUFDSCAocCwgJnBvbGljaWVzLCBuZXh0KQotCQl2ZWNf
YWRkKGxpc3QsIHAtPmJhc2UpOworCQl2ZWNfYWRkX2VuZChsaXN0LCBwLT5iYXNlKTsKIAogCXJl
dHVybiBsaXN0OwogfQo=
--=_dc88a67aad1e96340ed508b1070554bc--