[PR] [WIP] Ogg seek for chained streams (PR #23944)

Romain Beauxis via ffmpeg-devel <[email protected]> Tue, 28 Jul 2026 21:45:20 -0000
Newsgroups gmane.comp.video.ffmpeg.devel
Message-ID <178527512205.51.3789921156731967895@29965ddac10e>
UFIgIzIzOTQ0IG9wZW5lZCBieSBSb21haW4gQmVhdXhpcyAodG9vdHMpClVSTDogaHR0cHM6Ly9j
b2RlLmZmbXBlZy5vcmcvRkZtcGVnL0ZGbXBlZy9wdWxscy8yMzk0NApQYXRjaCBVUkw6IGh0dHBz
Oi8vY29kZS5mZm1wZWcub3JnL0ZGbXBlZy9GRm1wZWcvcHVsbHMvMjM5NDQucGF0Y2gKClRoaXMg
UFIgZml4ZXMgc2Vla2luZyBpbiBvZ2cgZmlsZXMgd2l0aCBjaGFpbmVkIHN0cmVhbXMuDQoNCkl0
IGRvZXMgc28gYnkgaW50cm9kdWNpbmcgYSBvZ2cgc3RyZWFtIGNoYWluIHNjYW5uZXIgdGhhdCBk
b2VzIGEgYmlzZWN0aW9uIG9uIHRoZSBzdHJlYW0ncyBvZ2cgcGFnZXMgdG8gcmVjb25zdHJ1Y3Qg
dGhlIGZ1bGwgc2VxdWVuY2Ugb2Ygc3RyZWFtcy4NCg0KVXNpbmcgdGhpcyBpbmZvcm1hdGlvbiwg
d2UgYXJlIHRoZW4gYWJsZSB0byBmdWxsIGluZm9ybSB0aGUgcGFyc2VyIG9mIHRoZSB1bmRlcmx5
aW5nIHN0cmVhbXMnIG92ZXJhbGwgcG9zaXRpb24sIFBUUyBhbmQgRFRTLgoKCkZyb20gNjg4NWU5
OWNmODgwMTA0ZjNkNGZkNTc3OTFmNDg1YzYyNGNmZDkxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw
MDEKRnJvbTogUm9tYWluIEJlYXV4aXMgPHJvbWFpbi5iZWF1eGlzQGdtYWlsLmNvbT4KRGF0ZTog
VHVlLCAyOCBKdWwgMjAyNiAxNjo0MDozNyAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMDEvMTBdIGZh
dGU6IGFkZCBvZ2cgY2hhaW4gc2Vla2luZyB0ZXN0cwoKQ2hhaW5pbmcgaXMgaG93IE9nZyBjYXJy
aWVzIGEgY2hhbmdlIG9mIG1ldGFkYXRhIGluIGJhbmQgYW5kIG5vdGhpbmcgaW4KdGhlIGZvcm1h
dCBzYXlzIHdoZXJlIHRoZSBsaW5rcyBhcmUsIHNvIGFkZCBydW5fd2l0aF9jb25jYXRfdGVtcCB0
bwpidWlsZCBzdWNoIGZpbGVzIG91dCBvZiBzZXBhcmF0ZWx5IHdyaXR0ZW4gbGlua3MsIGFuZCBh
c2sgZmZwcm9iZSB3aGVyZQphIHNlZWsgbGFuZHMuCgpUaGUgcmVmZXJlbmNlcyByZWNvcmQgd2hh
dCBoYXBwZW5zIHRvZGF5LCBvdmVyIGxpbmtzIHJ1bm5pbmcgMC01cywgNS0xM3MKYW5kIDEzLTI0
czoKCiAgc2VlayB0byAgICAgIDJzICAgICAgNHMgICAgICA3cyAgICAgMTJzICAgICAxNXMgICAg
IDIycyAgIGR1cmF0aW9uCiAgZmxhYyAgICAgIDAuMDAwICAgMy45OTQgICA0LjA4NyAgIDQuMDg3
ICAgNC4wODcgICA0LjA4NyAgICAgICAgTi9BCiAgdm9yYmlzICAgLTAuMDAzICAgMy45ODQgICA0
LjA3NyAgIDQuMDc3ICAgNC4wNzcgICA0LjA3NyAgICAgMTEuMDAzCiAgb3B1cyAgICAgIDEuOTk0
ICAgMy45OTQgICAzLjk5NCAgIDMuOTk0ICAgMy45OTQgICAzLjk5NCAgICAgICAgTi9BCiAgdGhl
b3JhICAgIDEuNjAwICAgNC4wMDAgICA0LjgwMCAgIDQuODAwICAgNC44MDAgICA0LjgwMCAgICAg
MTEuMDAwCi0tLQogdGVzdHMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwog
dGVzdHMvZmF0ZS1ydW4uc2ggICAgICAgICAgICAgICAgICAgIHwgMzIgKysrKysrKysrKysrKysr
KysKIHRlc3RzL2ZhdGUvb2dnLWNoYWluLm1hayAgICAgICAgICAgICB8IDUxICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysKIHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLWZsYWMgICB8
IDEzICsrKysrKysKIHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLW9wdXMgICB8IDEzICsr
KysrKysKIHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLXRoZW9yYSB8IDEzICsrKysrKysK
IHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLXZvcmJpcyB8IDEzICsrKysrKysKIDcgZmls
ZXMgY2hhbmdlZCwgMTM2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9m
YXRlL29nZy1jaGFpbi5tYWsKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9yZWYvZmF0ZS9vZ2ct
Y2hhaW4tc2Vlay1mbGFjCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvcmVmL2ZhdGUvb2dnLWNo
YWluLXNlZWstb3B1cwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL3JlZi9mYXRlL29nZy1jaGFp
bi1zZWVrLXRoZW9yYQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL3JlZi9mYXRlL29nZy1jaGFp
bi1zZWVrLXZvcmJpcwoKZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlIGIvdGVzdHMvTWFrZWZp
bGUKaW5kZXggM2YwMTMyZGQ5Ny4uZDZkNmY4NzgyOCAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZp
bGUKKysrIGIvdGVzdHMvTWFrZWZpbGUKQEAgLTIyOCw2ICsyMjgsNyBAQCBpbmNsdWRlICQoU1JD
X1BBVEgpL3Rlc3RzL2ZhdGUvbXBlZzQubWFrCiBpbmNsdWRlICQoU1JDX1BBVEgpL3Rlc3RzL2Zh
dGUvbXBlZ3BzLm1hawogaW5jbHVkZSAkKFNSQ19QQVRIKS90ZXN0cy9mYXRlL21wZWd0cy5tYWsK
IGluY2x1ZGUgJChTUkNfUEFUSCkvdGVzdHMvZmF0ZS9teGYubWFrCitpbmNsdWRlICQoU1JDX1BB
VEgpL3Rlc3RzL2ZhdGUvb2dnLWNoYWluLm1hawogaW5jbHVkZSAkKFNSQ19QQVRIKS90ZXN0cy9m
YXRlL29nZy12b3JiaXMubWFrCiBpbmNsdWRlICQoU1JDX1BBVEgpL3Rlc3RzL2ZhdGUvb2dnLWZs
YWMubWFrCiBpbmNsdWRlICQoU1JDX1BBVEgpL3Rlc3RzL2ZhdGUvb2dnLW9wdXMubWFrCmRpZmYg
LS1naXQgYS90ZXN0cy9mYXRlLXJ1bi5zaCBiL3Rlc3RzL2ZhdGUtcnVuLnNoCmluZGV4IGQwNzI2
YzY0ZGQuLmNkOGJhYjliNzkgMTAwNzU1Ci0tLSBhL3Rlc3RzL2ZhdGUtcnVuLnNoCisrKyBiL3Rl
c3RzL2ZhdGUtcnVuLnNoCkBAIC0xMTMsNiArMTEzLDM4IEBAIHJ1bl93aXRoX3RlbXAoKXsKICAg
ICBydW4gJHByb2Nlc3NfdG1wICR0bXBmaWxlCiB9CiAKKyMgQ3JlYXRlIG9uZSBvciBtb3JlIHRl
bXBvcmFyeSBmaWxlcyBhbmQgcHJvY2VzcyB0aGVtIGFzIGEgc2luZ2xlIGlucHV0LgorIworIyBF
YWNoIGNyZWF0b3Igd3JpdGVzIGEgZmlsZSBvZiBpdHMgb3duOiA8dGVzdD4uPG4+LjxleHQ+LCBu
dW1iZXJlZCBpbiB0aGUKKyMgb3JkZXIgbGlzdGVkLCBvciA8dGVzdD4uPGV4dD4gd2hlbiB0aGVy
ZSBpcyBvbmx5IG9uZS4gVGhlIHByb2Nlc3NpbmcgY29tbWFuZAorIyBpcyBoYW5kZWQgdGhlaXIg
Y29uY2F0ZW5hdGlvbiwgd2hpY2ggaXMgd2hhdCBhIGNoYWluZWQgT2dnIHN0cmVhbSBpcyBtYWRl
IG9mLgorIworIyBVc2FnZTogcnVuX3dpdGhfY29uY2F0X3RlbXAgZXh0IGNyZWF0ZV9jbWQgW2Ny
ZWF0ZV9jbWQgLi4uXSBwcm9jZXNzX2NtZAorcnVuX3dpdGhfY29uY2F0X3RlbXAoKXsKKyAgICBm
aWxleHQ9JDEKKyAgICBzaGlmdAorICAgIG5iX2NyZWF0b3JzPSQoKCQjIC0gMSkpCisgICAgY3Jl
YXRvcl9ubz0wCisgICAgd2hpbGUgWyAkIyAtZ3QgMSBdOyBkbworICAgICAgICBjcmVhdG9yX25v
PSQoKGNyZWF0b3Jfbm8gKyAxKSkKKyAgICAgICAgaWYgWyAkbmJfY3JlYXRvcnMgLWVxIDEgXTsg
dGhlbgorICAgICAgICAgICAgdG1wZmlsZT0ke291dGRpcn0vJHRlc3QuJGZpbGV4dAorICAgICAg
ICAgICAgaW5wdXQ9JHRtcGZpbGUKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdG1wZmlsZT0k
e291dGRpcn0vJHRlc3QuJGNyZWF0b3Jfbm8uJGZpbGV4dAorICAgICAgICAgICAgaWYgWyAkY3Jl
YXRvcl9ubyAtZXEgMSBdOyB0aGVuCisgICAgICAgICAgICAgICAgaW5wdXQ9Y29uY2F0OiR0bXBm
aWxlCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5wdXQ9JGlucHV0XHwkdG1w
ZmlsZQorICAgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgICAgY2xlYW5maWxlcz0iJGNs
ZWFuZmlsZXMgJHRtcGZpbGUiCisgICAgICAgIHJ1biAkMSAkdG1wZmlsZSB8fCByZXR1cm4gMQor
ICAgICAgICBzaGlmdAorICAgIGRvbmUKKyAgICBydW4gJDEgJGlucHV0Cit9CisKICMgT3Zlcndy
aXRlIGJ5dGVzIGF0IGEgc3BlY2lmaWMgb2Zmc2V0IGluIGEgYmluYXJ5IGZpbGUuCiAjIFVzYWdl
OiBwYXRjaF9ieXRlcyBmaWxlIG9mZnNldCBvY3RhbC1ieXRlLXN0cmluZwogcGF0Y2hfYnl0ZXMo
KXsKZGlmZiAtLWdpdCBhL3Rlc3RzL2ZhdGUvb2dnLWNoYWluLm1hayBiL3Rlc3RzL2ZhdGUvb2dn
LWNoYWluLm1hawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mYjU2ODdk
MjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZmF0ZS9vZ2ctY2hhaW4ubWFrCkBAIC0wLDAg
KzEsNTEgQEAKKyMgT25lIGxpbmsgb2YgYSBjaGFpbmVkIE9nZyBzdHJlYW0sIGFzIGEgdG9uZSBv
ciBhcyBhIHNvbGlkIGNvbG91ci4gVGhlIHNlcmlhbAorIyBudW1iZXIgaXMgZml4ZWQgcmF0aGVy
IHRoYW4gcmFuZG9tLCB3aGljaCAtZmZsYWdzICtiaXRleGFjdCBhcnJhbmdlcywgc28gdGhhdAor
IyB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lIG9uIGV2ZXJ5IHJ1bi4KKyMgJCgxKSBmcmVxdWVuY3kv
Y29sb3VyICAkKDIpIGR1cmF0aW9uICAkKDMpIGVuY29kZXIgICQoNCkgc2VyaWFsIG51bWJlcgor
T0dHX0NIQUlOX0xJTksgPSAiJChGRk1QRUcpIC1ub3N0ZGluIC1oaWRlX2Jhbm5lciAtbG9nbGV2
ZWwgcXVpZXQgXAorICAgIC1mIGxhdmZpIC1pIHNpbmU9ZnJlcXVlbmN5PSQoMSk6ZHVyYXRpb249
JCgyKSAtYzphICQoMykgXAorICAgIC1mZmxhZ3MgK2JpdGV4YWN0IC1mIG9nZyAtc2VyaWFsX29m
ZnNldCAkKDQpIC15IgorCitPR0dfQ0hBSU5fVklERU9fTElOSyA9ICIkKEZGTVBFRykgLW5vc3Rk
aW4gLWhpZGVfYmFubmVyIC1sb2dsZXZlbCBxdWlldCBcCisgICAgLWYgbGF2ZmkgLWkgY29sb3I9
Yz0kKDEpOnM9MTYweDEyMDpyPTE1OmQ9JCgyKSAtYzp2ICQoMykgXAorICAgIC1mZmxhZ3MgK2Jp
dGV4YWN0IC1mIG9nZyAtc2VyaWFsX29mZnNldCAkKDQpIC15IgorCisjIFdoZXJlIGEgc2VlayBs
YW5kcywgYW5kIHdoYXQgdGhlIGZpbGUgY2xhaW1zIHRvIGxhc3QsIG92ZXIgYSBjaGFpbiB3aG9z
ZQorIyBsaW5rcyBydW4gMC01cywgNS0xM3MgYW5kIDEzLTI0cy4gQnl0ZSBvZmZzZXRzIGFyZSBs
ZWZ0IG91dCBvbiBwdXJwb3NlOgorIyB0aGV5IG1vdmUgd2l0aCB0aGUgZW5jb2Rlciwgd2hpbGUg
dGhlIHRpbWVzdGFtcHMgYXJlIHdoYXQgaXMgdW5kZXIgdGVzdC4KK09HR19DSEFJTl9TRUVLID0g
ImZmcHJvYmUkKFBST0dTU1VGKSQoRVhFU1VGKSAtYml0ZXhhY3QgLXRocmVhZHMgMSBcCisgICAg
LW9mIGRlZmF1bHQ9bnc9MSAtc2VsZWN0X3N0cmVhbXMgMCBcCisgICAgLXNob3dfZW50cmllcyBm
b3JtYXQ9ZHVyYXRpb246cGFja2V0PXB0cyxwdHNfdGltZSBcCisgICAgLXJlYWRfaW50ZXJ2YWxz
IDIlK1wjMSw0JStcIzEsNyUrXCMxLDEyJStcIzEsMTUlK1wjMSwyMiUrXCMxIC1pIgorCitGQVRF
X09HR19DSEFJTi0kKGNhbGwgQUxMWUVTLCBPR0dfREVNVVhFUiBPR0dfTVVYRVIgRkxBQ19FTkNP
REVSIExBVkZJX0lOREVWIENPTkNBVF9QUk9UT0NPTCBGSUxFX1BST1RPQ09MKSArPSBmYXRlLW9n
Zy1jaGFpbi1zZWVrLWZsYWMKK2ZhdGUtb2dnLWNoYWluLXNlZWstZmxhYzogQ01EID0gcnVuX3dp
dGhfY29uY2F0X3RlbXAgb2dnIFwKKyAgICAkKGNhbGwgT0dHX0NIQUlOX0xJTkssMzAwLDUsZmxh
YywxMDApIFwKKyAgICAkKGNhbGwgT0dHX0NIQUlOX0xJTkssNDUwLDgsZmxhYywxMDEpIFwKKyAg
ICAkKGNhbGwgT0dHX0NIQUlOX0xJTkssNjAwLDExLGZsYWMsMTAyKSBcCisgICAgJChPR0dfQ0hB
SU5fU0VFSykKKworRkFURV9PR0dfQ0hBSU4tJChjYWxsIEFMTFlFUywgT0dHX0RFTVVYRVIgT0dH
X01VWEVSIExJQlZPUkJJU19FTkNPREVSIExBVkZJX0lOREVWIENPTkNBVF9QUk9UT0NPTCBGSUxF
X1BST1RPQ09MKSArPSBmYXRlLW9nZy1jaGFpbi1zZWVrLXZvcmJpcworZmF0ZS1vZ2ctY2hhaW4t
c2Vlay12b3JiaXM6IENNRCA9IHJ1bl93aXRoX2NvbmNhdF90ZW1wIG9nZyBcCisgICAgJChjYWxs
IE9HR19DSEFJTl9MSU5LLDMwMCw1LGxpYnZvcmJpcywxMDApIFwKKyAgICAkKGNhbGwgT0dHX0NI
QUlOX0xJTkssNDUwLDgsbGlidm9yYmlzLDEwMSkgXAorICAgICQoY2FsbCBPR0dfQ0hBSU5fTElO
Syw2MDAsMTEsbGlidm9yYmlzLDEwMikgXAorICAgICQoT0dHX0NIQUlOX1NFRUspCisKK0ZBVEVf
T0dHX0NIQUlOLSQoY2FsbCBBTExZRVMsIE9HR19ERU1VWEVSIE9HR19NVVhFUiBMSUJPUFVTX0VO
Q09ERVIgTEFWRklfSU5ERVYgQ09OQ0FUX1BST1RPQ09MIEZJTEVfUFJPVE9DT0wpICs9IGZhdGUt
b2dnLWNoYWluLXNlZWstb3B1cworZmF0ZS1vZ2ctY2hhaW4tc2Vlay1vcHVzOiBDTUQgPSBydW5f
d2l0aF9jb25jYXRfdGVtcCBvZ2cgXAorICAgICQoY2FsbCBPR0dfQ0hBSU5fTElOSywzMDAsNSxs
aWJvcHVzLDEwMCkgXAorICAgICQoY2FsbCBPR0dfQ0hBSU5fTElOSyw0NTAsOCxsaWJvcHVzLDEw
MSkgXAorICAgICQoY2FsbCBPR0dfQ0hBSU5fTElOSyw2MDAsMTEsbGlib3B1cywxMDIpIFwKKyAg
ICAkKE9HR19DSEFJTl9TRUVLKQorCitGQVRFX09HR19DSEFJTi0kKGNhbGwgQUxMWUVTLCBPR0df
REVNVVhFUiBPR0dfTVVYRVIgTElCVEhFT1JBX0VOQ09ERVIgTEFWRklfSU5ERVYgQ09OQ0FUX1BS
T1RPQ09MIEZJTEVfUFJPVE9DT0wpICs9IGZhdGUtb2dnLWNoYWluLXNlZWstdGhlb3JhCitmYXRl
LW9nZy1jaGFpbi1zZWVrLXRoZW9yYTogQ01EID0gcnVuX3dpdGhfY29uY2F0X3RlbXAgb2dnIFwK
KyAgICAkKGNhbGwgT0dHX0NIQUlOX1ZJREVPX0xJTksscmVkLDUsbGlidGhlb3JhLDEwMCkgXAor
ICAgICQoY2FsbCBPR0dfQ0hBSU5fVklERU9fTElOSyxncmVlbiw4LGxpYnRoZW9yYSwxMDEpIFwK
KyAgICAkKGNhbGwgT0dHX0NIQUlOX1ZJREVPX0xJTkssYmx1ZSwxMSxsaWJ0aGVvcmEsMTAyKSBc
CisgICAgJChPR0dfQ0hBSU5fU0VFSykKKworRkFURV9GRk1QRUdfRkZQUk9CRSArPSAkKEZBVEVf
T0dHX0NIQUlOLXllcykKKworZmF0ZS1vZ2ctY2hhaW46ICQoRkFURV9PR0dfQ0hBSU4teWVzKQpk
aWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstZmxhYyBiL3Rlc3RzL3Jl
Zi9mYXRlL29nZy1jaGFpbi1zZWVrLWZsYWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMC4uZDI3YWY4MDljNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3JlZi9mYXRlL29n
Zy1jaGFpbi1zZWVrLWZsYWMKQEAgLTAsMCArMSwxMyBAQAorcHRzPTAKK3B0c190aW1lPTAuMDAw
MDAwCitwdHM9MTc2MTI4CitwdHNfdGltZT0zLjk5MzgzMgorcHRzPTE4MDIyNAorcHRzX3RpbWU9
NC4wODY3MTIKK3B0cz0xODAyMjQKK3B0c190aW1lPTQuMDg2NzEyCitwdHM9MTgwMjI0CitwdHNf
dGltZT00LjA4NjcxMgorcHRzPTE4MDIyNAorcHRzX3RpbWU9NC4wODY3MTIKK2R1cmF0aW9uPU4v
QQpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstb3B1cyBiL3Rlc3Rz
L3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLW9wdXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMC4uMTVkYzgwMTRkZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3JlZi9mYXRl
L29nZy1jaGFpbi1zZWVrLW9wdXMKQEAgLTAsMCArMSwxMyBAQAorcHRzPTk1Njg4CitwdHNfdGlt
ZT0xLjk5MzUwMAorcHRzPTE5MTY4OAorcHRzX3RpbWU9My45OTM1MDAKK3B0cz0xOTE2ODgKK3B0
c190aW1lPTMuOTkzNTAwCitwdHM9MTkxNjg4CitwdHNfdGltZT0zLjk5MzUwMAorcHRzPTE5MTY4
OAorcHRzX3RpbWU9My45OTM1MDAKK3B0cz0xOTE2ODgKK3B0c190aW1lPTMuOTkzNTAwCitkdXJh
dGlvbj1OL0EKZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLXRoZW9y
YSBiL3Rlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLXRoZW9yYQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwLi43NzI1OWFiNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVz
dHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstdGhlb3JhCkBAIC0wLDAgKzEsMTMgQEAKK3B0cz0y
NAorcHRzX3RpbWU9MS42MDAwMDAKK3B0cz02MAorcHRzX3RpbWU9NC4wMDAwMDAKK3B0cz03Mgor
cHRzX3RpbWU9NC44MDAwMDAKK3B0cz03MgorcHRzX3RpbWU9NC44MDAwMDAKK3B0cz03MgorcHRz
X3RpbWU9NC44MDAwMDAKK3B0cz03MgorcHRzX3RpbWU9NC44MDAwMDAKK2R1cmF0aW9uPTExLjAw
MDAwMApkaWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstdm9yYmlzIGIv
dGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstdm9yYmlzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAuLjgwYjViZTExZGYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9y
ZWYvZmF0ZS9vZ2ctY2hhaW4tc2Vlay12b3JiaXMKQEAgLTAsMCArMSwxMyBAQAorcHRzPS0xMjgK
K3B0c190aW1lPS0wLjAwMjkwMgorcHRzPTE3NTY4MAorcHRzX3RpbWU9My45ODM2NzMKK3B0cz0x
Nzk3NzYKK3B0c190aW1lPTQuMDc2NTUzCitwdHM9MTc5Nzc2CitwdHNfdGltZT00LjA3NjU1Mwor
cHRzPTE3OTc3NgorcHRzX3RpbWU9NC4wNzY1NTMKK3B0cz0xNzk3NzYKK3B0c190aW1lPTQuMDc2
NTUzCitkdXJhdGlvbj0xMS4wMDI5MDIKLS0gCjIuNTIuMAoKCkZyb20gYTNhZjRjMjc2M2I1ODk3
NGJiMDI1MmZiODliNjkyOThiNDRhM2EyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog
Um9tYWluIEJlYXV4aXMgPHJvbWFpbi5iZWF1eGlzQGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAyOCBK
dWwgMjAyNiAxNjo0MDozNyAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMDIvMTBdIGF2Zm9ybWF0L29n
ZzogbW92ZSBkZW11eGVyIGFuZCBwYXJzZXJzIHRvIHRoZWlyIG93bgogZGlyZWN0b3J5CgpNb3Zl
IHRoZSBkb3plbiBvZ2dmb28uYyBmaWxlcyB1bmRlciBsaWJhdmZvcm1hdC9vZ2cvIGFuZCBkcm9w
IHRoZSBub3cKcmVkdW5kYW50IHByZWZpeCwgc28gb2dnZGVjLmMgYmVjb21lcyBvZ2cvZGVjb2Rl
ci5jLgoKVGhlIGluY2x1ZGUgZ3VhcmQgaXMgcmVuYW1lZCB0byBtYXRjaDsgbm8gZnVuY3Rpb25h
bCBjaGFuZ2UgYW5kIG5vIHRlc3QKbW92ZXMuCi0tLQogbGliYXZmb3JtYXQvTWFrZWZpbGUgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgMzggKysrKysrKysrLS0tLS0tLS0tLQogbGliYXZmb3Jt
YXQvZmxhY2RlYy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGxpYmF2Zm9ybWF0
L21hdHJvc2thZGVjLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBsaWJhdmZvcm1hdC97
b2dnZGVjLmMgPT4gb2dnL2RlY29kZXIuY30gICAgICAgfCAxMCArKy0tLQogbGliYXZmb3JtYXQv
e29nZ2RlYy5oID0+IG9nZy9kZWNvZGVyLmh9ICAgICAgIHwgIDggKystLQogbGliYXZmb3JtYXQv
e29nZ2VuYy5jID0+IG9nZy9lbmNvZGVyLmN9ICAgICAgIHwgMTIgKysrLS0tCiAuLi4ve29nZ3Bh
cnNlZGlyYWMuYyA9PiBvZ2cvcGFyc2VkaXJhYy5jfSAgICAgfCAgNiArLS0KIC4uLi97b2dncGFy
c2VmbGFjLmMgPT4gb2dnL3BhcnNlZmxhYy5jfSAgICAgICB8ICA2ICstLQogbGliYXZmb3JtYXQv
e29nZ3BhcnNlb2dtLmMgPT4gb2dnL3BhcnNlb2dtLmN9IHwgIDggKystLQogLi4uL3tvZ2dwYXJz
ZW9wdXMuYyA9PiBvZ2cvcGFyc2VvcHVzLmN9ICAgICAgIHwgIDYgKy0tCiAuLi4vcGFyc2Vza2Vs
ZXRvbi5jfSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArLS0KIC4uLi97b2dncGFyc2Vz
cGVleC5jID0+IG9nZy9wYXJzZXNwZWV4LmN9ICAgICB8ICA2ICstLQogLi4uL3tvZ2dwYXJzZXRo
ZW9yYS5jID0+IG9nZy9wYXJzZXRoZW9yYS5jfSAgIHwgIDYgKy0tCiAuLi4ve29nZ3BhcnNldm9y
YmlzLmMgPT4gb2dnL3BhcnNldm9yYmlzLmN9ICAgfCAxNCArKystLS0tCiBsaWJhdmZvcm1hdC97
b2dncGFyc2V2cDguYyA9PiBvZ2cvcGFyc2V2cDguY30gfCAgNiArLS0KIDE1IGZpbGVzIGNoYW5n
ZWQsIDY4IGluc2VydGlvbnMoKyksIDY4IGRlbGV0aW9ucygtKQogcmVuYW1lIGxpYmF2Zm9ybWF0
L3tvZ2dkZWMuYyA9PiBvZ2cvZGVjb2Rlci5jfSAoOTklKQogcmVuYW1lIGxpYmF2Zm9ybWF0L3tv
Z2dkZWMuaCA9PiBvZ2cvZGVjb2Rlci5ofSAoOTglKQogcmVuYW1lIGxpYmF2Zm9ybWF0L3tvZ2dl
bmMuYyA9PiBvZ2cvZW5jb2Rlci5jfSAoOTklKQogcmVuYW1lIGxpYmF2Zm9ybWF0L3tvZ2dwYXJz
ZWRpcmFjLmMgPT4gb2dnL3BhcnNlZGlyYWMuY30gKDk3JSkKIHJlbmFtZSBsaWJhdmZvcm1hdC97
b2dncGFyc2VmbGFjLmMgPT4gb2dnL3BhcnNlZmxhYy5jfSAoOTclKQogcmVuYW1lIGxpYmF2Zm9y
bWF0L3tvZ2dwYXJzZW9nbS5jID0+IG9nZy9wYXJzZW9nbS5jfSAoOTglKQogcmVuYW1lIGxpYmF2
Zm9ybWF0L3tvZ2dwYXJzZW9wdXMuYyA9PiBvZ2cvcGFyc2VvcHVzLmN9ICg5OCUpCiByZW5hbWUg
bGliYXZmb3JtYXQve29nZ3BhcnNlc2tlbGV0b24uYyA9PiBvZ2cvcGFyc2Vza2VsZXRvbi5jfSAo
OTYlKQogcmVuYW1lIGxpYmF2Zm9ybWF0L3tvZ2dwYXJzZXNwZWV4LmMgPT4gb2dnL3BhcnNlc3Bl
ZXguY30gKDk3JSkKIHJlbmFtZSBsaWJhdmZvcm1hdC97b2dncGFyc2V0aGVvcmEuYyA9PiBvZ2cv
cGFyc2V0aGVvcmEuY30gKDk4JSkKIHJlbmFtZSBsaWJhdmZvcm1hdC97b2dncGFyc2V2b3JiaXMu
YyA9PiBvZ2cvcGFyc2V2b3JiaXMuY30gKDk4JSkKIHJlbmFtZSBsaWJhdmZvcm1hdC97b2dncGFy
c2V2cDguYyA9PiBvZ2cvcGFyc2V2cDguY30gKDk3JSkKCmRpZmYgLS1naXQgYS9saWJhdmZvcm1h
dC9NYWtlZmlsZSBiL2xpYmF2Zm9ybWF0L01ha2VmaWxlCmluZGV4IDJhN2ZiZWNmOTYuLmYyZjEw
ODc2ZjcgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlCisrKyBiL2xpYmF2Zm9ybWF0
L01ha2VmaWxlCkBAIC0yMjYsNyArMjI2LDcgQEAgT0JKUy0kKENPTkZJR19GSVRTX0RFTVVYRVIp
ICAgICAgICAgICAgICArPSBmaXRzZGVjLm8KIE9CSlMtJChDT05GSUdfRklUU19NVVhFUikgICAg
ICAgICAgICAgICAgKz0gZml0c2VuYy5vCiBPQkpTLSQoQ09ORklHX0ZMQUNfREVNVVhFUikgICAg
ICAgICAgICAgICs9IGZsYWNkZWMubyByYXdkZWMubyBcCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsYWNfcGljdHVyZS5vICAgXAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZ2dwYXJzZXZvcmJpcy5vIFwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2dnL3BhcnNldm9yYmlzLm8gXAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYXlnYWluLm8g
ICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9yYmlz
Y29tbWVudC5vCiBPQkpTLSQoQ09ORklHX0ZMQUNfTVVYRVIpICAgICAgICAgICAgICAgICs9IGZs
YWNlbmMubyBmbGFjZW5jX2hlYWRlci5vIFwKQEAgLTM2NSw3ICszNjUsNyBAQCBPQkpTLSQoQ09O
RklHX000Vl9ERU1VWEVSKSAgICAgICAgICAgICAgICs9IG00dmRlYy5vIHJhd2RlYy5vCiBPQkpT
LSQoQ09ORklHX000Vl9NVVhFUikgICAgICAgICAgICAgICAgICs9IHJhd2VuYy5vCiBPQkpTLSQo
Q09ORklHX01BVFJPU0tBX0RFTVVYRVIpICAgICAgICAgICs9IG1hdHJvc2thZGVjLm8gbWF0cm9z
a2EubyAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFj
X3BpY3R1cmUubyBybXNpcHIubyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9nZ3BhcnNldm9yYmlzLm8gdm9yYmlzY29tbWVudC5vIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2dnL3BhcnNldm9yYmlzLm8gdm9yYmlz
Y29tbWVudC5vIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cXRwYWxldHRlLm8gcmVwbGF5Z2Fpbi5vIGRvdmlfaXNvbS5vCiBPQkpTLSQoQ09ORklHX01BVFJP
U0tBX01VWEVSKSAgICAgICAgICAgICs9IG1hdHJvc2thZW5jLm8gbWF0cm9za2EubyBcCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWNlbmNfaGVhZGVyLm8g
dm9yYmlzY29tbWVudC5vIFwKQEAgLTQzOCwyOCArNDM4LDI4IEBAIE9CSlMtJChDT05GSUdfTlVW
X0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gbnV2Lm8KIE9CSlMtJChDT05GSUdfQVYxX0RFTVVY
RVIpICAgICAgICAgICAgICAgKz0gYXYxZGVjLm8KIE9CSlMtJChDT05GSUdfT0JVX0RFTVVYRVIp
ICAgICAgICAgICAgICAgKz0gYXYxZGVjLm8KIE9CSlMtJChDT05GSUdfT0JVX01VWEVSKSAgICAg
ICAgICAgICAgICAgKz0gcmF3ZW5jLm8KLU9CSlMtJChDT05GSUdfT0dHX0RFTVVYRVIpICAgICAg
ICAgICAgICAgKz0gb2dnZGVjLm8gICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9nZ3BhcnNlZGlyYWMubyAgXAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvZ2dwYXJzZWZsYWMubyAgIFwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2dncGFyc2VvZ20ubyAgICBcCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9nZ3BhcnNlb3B1cy5vICAg
XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZ2dwYXJzZXNr
ZWxldG9uLm8gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
Z2dwYXJzZXNwZWV4Lm8gIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb2dncGFyc2V0aGVvcmEubyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9nZ3BhcnNldm9yYmlzLm8gXAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvZ2dwYXJzZXZwOC5vICAgIFwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGF5Z2Fpbi5vICAgICBcCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvcmJpc2NvbW1lbnQubyAgXAorT0JK
Uy0kKENPTkZJR19PR0dfREVNVVhFUikgICAgICAgICAgICAgICArPSBvZ2cvZGVjb2Rlci5vICAg
ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2dnL3Bh
cnNlZGlyYWMubyAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9nZy9wYXJzZWZsYWMubyAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvZ2cvcGFyc2VvZ20ubyAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb2dnL3BhcnNlb3B1cy5vICAgICBcCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9nZy9wYXJzZXNrZWxldG9uLm8gXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZ2cvcGFyc2VzcGVl
eC5vICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2dn
L3BhcnNldGhlb3JhLm8gICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9nZy9wYXJzZXZvcmJpcy5vICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvZ2cvcGFyc2V2cDgubyAgICAgIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGF5Z2Fpbi5vICAgICAgICBcCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvcmJpc2NvbW1lbnQubyAgICAg
XAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFjX3BpY3R1
cmUubwotT0JKUy0kKENPTkZJR19PR0FfTVVYRVIpICAgICAgICAgICAgICAgICArPSBvZ2dlbmMu
byBcCitPQkpTLSQoQ09ORklHX09HQV9NVVhFUikgICAgICAgICAgICAgICAgICs9IG9nZy9lbmNv
ZGVyLm8gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b3Ji
aXNjb21tZW50Lm8KLU9CSlMtJChDT05GSUdfT0dHX01VWEVSKSAgICAgICAgICAgICAgICAgKz0g
b2dnZW5jLm8gXAorT0JKUy0kKENPTkZJR19PR0dfTVVYRVIpICAgICAgICAgICAgICAgICArPSBv
Z2cvZW5jb2Rlci5vIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9yYmlzY29tbWVudC5vCi1PQkpTLSQoQ09ORklHX09HVl9NVVhFUikgICAgICAgICAgICAg
ICAgICs9IG9nZ2VuYy5vIFwKK09CSlMtJChDT05GSUdfT0dWX01VWEVSKSAgICAgICAgICAgICAg
ICAgKz0gb2dnL2VuY29kZXIubyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvcmJpc2NvbW1lbnQubwogT0JKUy0kKENPTkZJR19PTUFfREVNVVhFUikgICAg
ICAgICAgICAgICArPSBvbWFkZWMubyBwY20ubyBvbWEubwogT0JKUy0kKENPTkZJR19PTUFfTVVY
RVIpICAgICAgICAgICAgICAgICArPSBvbWFlbmMubyByYXdlbmMubyBvbWEubyBpZDN2MmVuYy5v
Ci1PQkpTLSQoQ09ORklHX09QVVNfTVVYRVIpICAgICAgICAgICAgICAgICs9IG9nZ2VuYy5vIFwK
K09CSlMtJChDT05GSUdfT1BVU19NVVhFUikgICAgICAgICAgICAgICAgKz0gb2dnL2VuY29kZXIu
byBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvcmJpc2Nv
bW1lbnQubwogT0JKUy0kKENPTkZJR19PU1FfREVNVVhFUikgICAgICAgICAgICAgICArPSBvc3Eu
byByYXdkZWMubwogT0JKUy0kKENPTkZJR19QQUZfREVNVVhFUikgICAgICAgICAgICAgICArPSBw
YWYubwpAQCAtNTg1LDcgKzU4NSw3IEBAIE9CSlMtJChDT05GSUdfU09YX0RFTVVYRVIpICAgICAg
ICAgICAgICAgKz0gc294ZGVjLm8gcGNtLm8KIE9CSlMtJChDT05GSUdfU09YX01VWEVSKSAgICAg
ICAgICAgICAgICAgKz0gc294ZW5jLm8gcmF3ZW5jLm8KIE9CSlMtJChDT05GSUdfU1BESUZfREVN
VVhFUikgICAgICAgICAgICAgKz0gc3BkaWYubyBzcGRpZmRlYy5vCiBPQkpTLSQoQ09ORklHX1NQ
RElGX01VWEVSKSAgICAgICAgICAgICAgICs9IHNwZGlmLm8gc3BkaWZlbmMubwotT0JKUy0kKENP
TkZJR19TUEVFWF9NVVhFUikgICAgICAgICAgICAgICArPSBvZ2dlbmMubyBcCitPQkpTLSQoQ09O
RklHX1NQRUVYX01VWEVSKSAgICAgICAgICAgICAgICs9IG9nZy9lbmNvZGVyLm8gXAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b3JiaXNjb21tZW50Lm8KIE9C
SlMtJChDT05GSUdfU1JUX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gc3J0ZGVjLm8gc3VidGl0
bGVzLm8KIE9CSlMtJChDT05GSUdfU1JUX01VWEVSKSAgICAgICAgICAgICAgICAgKz0gc3J0ZW5j
Lm8KZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2ZsYWNkZWMuYyBiL2xpYmF2Zm9ybWF0L2ZsYWNk
ZWMuYwppbmRleCBlODBiNDkzMDdkLi5mN2FkMDAwMTE5IDEwMDY0NAotLS0gYS9saWJhdmZvcm1h
dC9mbGFjZGVjLmMKKysrIGIvbGliYXZmb3JtYXQvZmxhY2RlYy5jCkBAIC0zMCw3ICszMCw3IEBA
CiAjaW5jbHVkZSAiZmxhY19waWN0dXJlLmgiCiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKICNpbmNs
dWRlICJyYXdkZWMuaCIKLSNpbmNsdWRlICJvZ2dkZWMuaCIKKyNpbmNsdWRlICJvZ2cvZGVjb2Rl
ci5oIgogI2luY2x1ZGUgInJlcGxheWdhaW4uaCIKIAogI2RlZmluZSBTRUVLUE9JTlRfU0laRSAx
OApkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbWF0cm9za2FkZWMuYyBiL2xpYmF2Zm9ybWF0L21h
dHJvc2thZGVjLmMKaW5kZXggOGUyNDQzM2NmOC4uNTc2MTlhODU5OSAxMDA2NDQKLS0tIGEvbGli
YXZmb3JtYXQvbWF0cm9za2FkZWMuYworKysgYi9saWJhdmZvcm1hdC9tYXRyb3NrYWRlYy5jCkBA
IC02Niw3ICs2Niw3IEBACiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKICNpbmNsdWRlICJpc29tLmgi
CiAjaW5jbHVkZSAibWF0cm9za2EuaCIKLSNpbmNsdWRlICJvZ2dkZWMuaCIKKyNpbmNsdWRlICJv
Z2cvZGVjb2Rlci5oIgogLyogRm9yIGZmX2NvZGVjX2dldF9pZCgpLiAqLwogI2luY2x1ZGUgInJp
ZmYuaCIKICNpbmNsdWRlICJybXNpcHIuaCIKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L29nZ2Rl
Yy5jIGIvbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuYwpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5h
bWUgZnJvbSBsaWJhdmZvcm1hdC9vZ2dkZWMuYwpyZW5hbWUgdG8gbGliYXZmb3JtYXQvb2dnL2Rl
Y29kZXIuYwppbmRleCAxZjhmNzhlMzY5Li5lYTRlMWQ5MWY1IDEwMDY0NAotLS0gYS9saWJhdmZv
cm1hdC9vZ2dkZWMuYworKysgYi9saWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5jCkBAIC0zMiwxMSAr
MzIsMTEgQEAKICNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKICNpbmNsdWRlICJsaWJh
dnV0aWwvaW50cmVhZHdyaXRlLmgiCiAjaW5jbHVkZSAibGliYXZ1dGlsL21lbS5oIgotI2luY2x1
ZGUgImF2aW9faW50ZXJuYWwuaCIKLSNpbmNsdWRlICJkZW11eC5oIgotI2luY2x1ZGUgIm9nZ2Rl
Yy5oIgotI2luY2x1ZGUgImF2Zm9ybWF0LmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwuaCIKKyNpbmNs
dWRlICJsaWJhdmZvcm1hdC9hdmlvX2ludGVybmFsLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQv
ZGVtdXguaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5oIgorI2luY2x1ZGUg
ImxpYmF2Zm9ybWF0L2F2Zm9ybWF0LmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvaW50ZXJuYWwu
aCIKIAogI2RlZmluZSBNQVhfUEFHRV9TSVpFIDY1MzA3CiAjZGVmaW5lIERFQ09ERVJfQlVGRkVS
X1NJWkUgTUFYX1BBR0VfU0laRQpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvb2dnZGVjLmggYi9s
aWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5oCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9t
IGxpYmF2Zm9ybWF0L29nZ2RlYy5oCnJlbmFtZSB0byBsaWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5o
CmluZGV4IGI3YjAwOGNjMWYuLjhlNDc1YjNkMjYgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L29n
Z2RlYy5oCisrKyBiL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmgKQEAgLTIyLDEwICsyMiwxMCBA
QAogICAgIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICoqLwogCi0jaWZuZGVmIEFWRk9STUFU
X09HR0RFQ19ICi0jZGVmaW5lIEFWRk9STUFUX09HR0RFQ19ICisjaWZuZGVmIEFWRk9STUFUX09H
R19ERUNPREVSX0gKKyNkZWZpbmUgQVZGT1JNQVRfT0dHX0RFQ09ERVJfSAogCi0jaW5jbHVkZSAi
YXZmb3JtYXQuaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmZvcm1hdC5oIgogCiBzdHJ1Y3Qg
b2dnX2NvZGVjIHsKICAgICBjb25zdCBpbnQ4X3QgKm1hZ2ljOwpAQCAtMjEwLDQgKzIxMCw0IEBA
IG9nZ19ncHRvcHRzIChBVkZvcm1hdENvbnRleHQgKiBzLCBpbnQgaSwgdWludDY0X3QgZ3AsIGlu
dDY0X3QgKmR0cykKICAgICByZXR1cm4gcHRzOwogfQogCi0jZW5kaWYgLyogQVZGT1JNQVRfT0dH
REVDX0ggKi8KKyNlbmRpZiAvKiBBVkZPUk1BVF9PR0dfREVDT0RFUl9IICovCmRpZmYgLS1naXQg
YS9saWJhdmZvcm1hdC9vZ2dlbmMuYyBiL2xpYmF2Zm9ybWF0L29nZy9lbmNvZGVyLmMKc2ltaWxh
cml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gbGliYXZmb3JtYXQvb2dnZW5jLmMKcmVuYW1lIHRv
IGxpYmF2Zm9ybWF0L29nZy9lbmNvZGVyLmMKaW5kZXggNWM3ZTNkYTBiYy4uMGM3NzgyODBkZSAx
MDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvb2dnZW5jLmMKKysrIGIvbGliYXZmb3JtYXQvb2dnL2Vu
Y29kZXIuYwpAQCAtMzEsMTIgKzMxLDEyIEBACiAjaW5jbHVkZSAibGliYXZjb2RlYy94aXBoLmgi
CiAjaW5jbHVkZSAibGliYXZjb2RlYy9ieXRlc3RyZWFtLmgiCiAjaW5jbHVkZSAibGliYXZjb2Rl
Yy9mbGFjLmgiCi0jaW5jbHVkZSAiYXZmb3JtYXQuaCIKLSNpbmNsdWRlICJhdmlvX2ludGVybmFs
LmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwuaCIKLSNpbmNsdWRlICJtdXguaCIKLSNpbmNsdWRlICJ2
ZXJzaW9uLmgiCi0jaW5jbHVkZSAidm9yYmlzY29tbWVudC5oIgorI2luY2x1ZGUgImxpYmF2Zm9y
bWF0L2F2Zm9ybWF0LmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvYXZpb19pbnRlcm5hbC5oIgor
I2luY2x1ZGUgImxpYmF2Zm9ybWF0L2ludGVybmFsLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQv
bXV4LmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvdmVyc2lvbi5oIgorI2luY2x1ZGUgImxpYmF2
Zm9ybWF0L3ZvcmJpc2NvbW1lbnQuaCIKIAogI2RlZmluZSBNQVhfUEFHRV9TSVpFIDY1MDI1CiAK
ZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L29nZ3BhcnNlZGlyYWMuYyBiL2xpYmF2Zm9ybWF0L29n
Zy9wYXJzZWRpcmFjLmMKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gbGliYXZmb3Jt
YXQvb2dncGFyc2VkaXJhYy5jCnJlbmFtZSB0byBsaWJhdmZvcm1hdC9vZ2cvcGFyc2VkaXJhYy5j
CmluZGV4IGM1YmQ0M2E3NTcuLjNkYzg1OThkNjMgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L29n
Z3BhcnNlZGlyYWMuYworKysgYi9saWJhdmZvcm1hdC9vZ2cvcGFyc2VkaXJhYy5jCkBAIC0yMiw5
ICsyMiw5IEBACiAjaW5jbHVkZSAibGliYXZ1dGlsL2ludHJlYWR3cml0ZS5oIgogI2luY2x1ZGUg
ImxpYmF2dXRpbC9tZW0uaCIKICNpbmNsdWRlICJsaWJhdmNvZGVjL2RpcmFjLmgiCi0jaW5jbHVk
ZSAiYXZmb3JtYXQuaCIKLSNpbmNsdWRlICJpbnRlcm5hbC5oIgotI2luY2x1ZGUgIm9nZ2RlYy5o
IgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2F2Zm9ybWF0LmgiCisjaW5jbHVkZSAibGliYXZmb3Jt
YXQvaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5oIgogCiBz
dGF0aWMgaW50IGRpcmFjX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMsIGludCBpZHgpCiB7CmRp
ZmYgLS1naXQgYS9saWJhdmZvcm1hdC9vZ2dwYXJzZWZsYWMuYyBiL2xpYmF2Zm9ybWF0L29nZy9w
YXJzZWZsYWMuYwpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBsaWJhdmZvcm1hdC9v
Z2dwYXJzZWZsYWMuYwpyZW5hbWUgdG8gbGliYXZmb3JtYXQvb2dnL3BhcnNlZmxhYy5jCmluZGV4
IGU4MWU0MDIxYTEuLjZhNDhiMjE1OWQgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L29nZ3BhcnNl
ZmxhYy5jCisrKyBiL2xpYmF2Zm9ybWF0L29nZy9wYXJzZWZsYWMuYwpAQCAtMjIsOSArMjIsOSBA
QAogI2luY2x1ZGUgImxpYmF2Y29kZWMvYXZjb2RlYy5oIgogI2luY2x1ZGUgImxpYmF2Y29kZWMv
Ynl0ZXN0cmVhbS5oIgogI2luY2x1ZGUgImxpYmF2Y29kZWMvZmxhYy5oIgotI2luY2x1ZGUgImF2
Zm9ybWF0LmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwuaCIKLSNpbmNsdWRlICJvZ2dkZWMuaCIKKyNp
bmNsdWRlICJsaWJhdmZvcm1hdC9hdmZvcm1hdC5oIgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2lu
dGVybmFsLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvb2dnL2RlY29kZXIuaCIKIAogI2RlZmlu
ZSBPR0dfRkxBQ19NRVRBREFUQV9UWVBFX1NUUkVBTUlORk8gMHg3RgogI2RlZmluZSBPR0dfRkxB
Q19NQUdJQyAiXDE3N0ZMQUMiCmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9vZ2dwYXJzZW9nbS5j
IGIvbGliYXZmb3JtYXQvb2dnL3BhcnNlb2dtLmMKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1l
IGZyb20gbGliYXZmb3JtYXQvb2dncGFyc2VvZ20uYwpyZW5hbWUgdG8gbGliYXZmb3JtYXQvb2dn
L3BhcnNlb2dtLmMKaW5kZXggMWU3OTQ3NDVhYi4uZmI0ODZiYjVmNSAxMDA2NDQKLS0tIGEvbGli
YXZmb3JtYXQvb2dncGFyc2VvZ20uYworKysgYi9saWJhdmZvcm1hdC9vZ2cvcGFyc2VvZ20uYwpA
QCAtMjgsMTAgKzI4LDEwIEBACiAKICNpbmNsdWRlICJsaWJhdmNvZGVjL2J5dGVzdHJlYW0uaCIK
IAotI2luY2x1ZGUgImF2Zm9ybWF0LmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwuaCIKLSNpbmNsdWRl
ICJvZ2dkZWMuaCIKLSNpbmNsdWRlICJyaWZmLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvYXZm
b3JtYXQuaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9pbnRlcm5hbC5oIgorI2luY2x1ZGUgImxp
YmF2Zm9ybWF0L29nZy9kZWNvZGVyLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvcmlmZi5oIgog
CiBzdGF0aWMgaW50CiBvZ21faGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcywgaW50IGlkeCkKZGlm
ZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L29nZ3BhcnNlb3B1cy5jIGIvbGliYXZmb3JtYXQvb2dnL3Bh
cnNlb3B1cy5jCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIGxpYmF2Zm9ybWF0L29n
Z3BhcnNlb3B1cy5jCnJlbmFtZSB0byBsaWJhdmZvcm1hdC9vZ2cvcGFyc2VvcHVzLmMKaW5kZXgg
NDM4NDBjMDAzZS4uM2M1MTU5NWIyNSAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvb2dncGFyc2Vv
cHVzLmMKKysrIGIvbGliYXZmb3JtYXQvb2dnL3BhcnNlb3B1cy5jCkBAIC0yMyw5ICsyMyw5IEBA
CiAKICNpbmNsdWRlICJsaWJhdnV0aWwvaW50cmVhZHdyaXRlLmgiCiAjaW5jbHVkZSAibGliYXZ1
dGlsL21lbS5oIgotI2luY2x1ZGUgImF2Zm9ybWF0LmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwuaCIK
LSNpbmNsdWRlICJvZ2dkZWMuaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmZvcm1hdC5oIgor
I2luY2x1ZGUgImxpYmF2Zm9ybWF0L2ludGVybmFsLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQv
b2dnL2RlY29kZXIuaCIKIAogc3RydWN0IG9nZ29wdXNfcHJpdmF0ZSB7CiAgICAgaW50IG5lZWRf
Y29tbWVudHM7CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9vZ2dwYXJzZXNrZWxldG9uLmMgYi9s
aWJhdmZvcm1hdC9vZ2cvcGFyc2Vza2VsZXRvbi5jCnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFt
ZSBmcm9tIGxpYmF2Zm9ybWF0L29nZ3BhcnNlc2tlbGV0b24uYwpyZW5hbWUgdG8gbGliYXZmb3Jt
YXQvb2dnL3BhcnNlc2tlbGV0b24uYwppbmRleCAyMDE2YjE2Yzk1Li45Yzc0NzMwNjQyIDEwMDY0
NAotLS0gYS9saWJhdmZvcm1hdC9vZ2dwYXJzZXNrZWxldG9uLmMKKysrIGIvbGliYXZmb3JtYXQv
b2dnL3BhcnNlc2tlbGV0b24uYwpAQCAtMTksOSArMTksOSBAQAogICovCiAKICNpbmNsdWRlICJs
aWJhdnV0aWwvaW50cmVhZHdyaXRlLmgiCi0jaW5jbHVkZSAiYXZmb3JtYXQuaCIKLSNpbmNsdWRl
ICJpbnRlcm5hbC5oIgotI2luY2x1ZGUgIm9nZ2RlYy5oIgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0
L2F2Zm9ybWF0LmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvaW50ZXJuYWwuaCIKKyNpbmNsdWRl
ICJsaWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5oIgogCiBzdGF0aWMgaW50IHNrZWxldG9uX2hlYWRl
cihBVkZvcm1hdENvbnRleHQgKnMsIGludCBpZHgpCiB7CmRpZmYgLS1naXQgYS9saWJhdmZvcm1h
dC9vZ2dwYXJzZXNwZWV4LmMgYi9saWJhdmZvcm1hdC9vZ2cvcGFyc2VzcGVleC5jCnNpbWlsYXJp
dHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIGxpYmF2Zm9ybWF0L29nZ3BhcnNlc3BlZXguYwpyZW5h
bWUgdG8gbGliYXZmb3JtYXQvb2dnL3BhcnNlc3BlZXguYwppbmRleCAwYTRiMzJkZTE1Li4zZTVm
OWI5ZjU1IDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9vZ2dwYXJzZXNwZWV4LmMKKysrIGIvbGli
YXZmb3JtYXQvb2dnL3BhcnNlc3BlZXguYwpAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgImxp
YmF2dXRpbC9pbnRyZWFkd3JpdGUuaCIKICNpbmNsdWRlICJsaWJhdnV0aWwvbWVtLmgiCiAKLSNp
bmNsdWRlICJhdmZvcm1hdC5oIgotI2luY2x1ZGUgImludGVybmFsLmgiCi0jaW5jbHVkZSAib2dn
ZGVjLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvYXZmb3JtYXQuaCIKKyNpbmNsdWRlICJsaWJh
dmZvcm1hdC9pbnRlcm5hbC5oIgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmgi
CiAKIHN0cnVjdCBzcGVleF9wYXJhbXMgewogICAgIGludCBwYWNrZXRfc2l6ZTsKZGlmZiAtLWdp
dCBhL2xpYmF2Zm9ybWF0L29nZ3BhcnNldGhlb3JhLmMgYi9saWJhdmZvcm1hdC9vZ2cvcGFyc2V0
aGVvcmEuYwpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBsaWJhdmZvcm1hdC9vZ2dw
YXJzZXRoZW9yYS5jCnJlbmFtZSB0byBsaWJhdmZvcm1hdC9vZ2cvcGFyc2V0aGVvcmEuYwppbmRl
eCBlMTA0ZDYzMjI5Li4xNzg4MzBhM2NhIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9vZ2dwYXJz
ZXRoZW9yYS5jCisrKyBiL2xpYmF2Zm9ybWF0L29nZy9wYXJzZXRoZW9yYS5jCkBAIC0yNiw5ICsy
Niw5IEBACiAjaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJsaWJh
dnV0aWwvbWVtLmgiCiAjaW5jbHVkZSAibGliYXZjb2RlYy9nZXRfYml0cy5oIgotI2luY2x1ZGUg
ImF2Zm9ybWF0LmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwuaCIKLSNpbmNsdWRlICJvZ2dkZWMuaCIK
KyNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmZvcm1hdC5oIgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0
L2ludGVybmFsLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvb2dnL2RlY29kZXIuaCIKIAogdHlw
ZWRlZiBzdHJ1Y3QgVGhlb3JhUGFyYW1zIHsKICAgICBpbnQgZ3BzaGlmdDsKZGlmZiAtLWdpdCBh
L2xpYmF2Zm9ybWF0L29nZ3BhcnNldm9yYmlzLmMgYi9saWJhdmZvcm1hdC9vZ2cvcGFyc2V2b3Ji
aXMuYwpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBsaWJhdmZvcm1hdC9vZ2dwYXJz
ZXZvcmJpcy5jCnJlbmFtZSB0byBsaWJhdmZvcm1hdC9vZ2cvcGFyc2V2b3JiaXMuYwppbmRleCBh
MzQ0MDgxNTI3Li45MmI0ZGE3YzM1IDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9vZ2dwYXJzZXZv
cmJpcy5jCisrKyBiL2xpYmF2Zm9ybWF0L29nZy9wYXJzZXZvcmJpcy5jCkBAIC0zMiwxMyArMzIs
MTMgQEAKICNpbmNsdWRlICJsaWJhdmNvZGVjL2J5dGVzdHJlYW0uaCIKICNpbmNsdWRlICJsaWJh
dmNvZGVjL3ZvcmJpc19wYXJzZXIuaCIKIAotI2luY2x1ZGUgImF2Zm9ybWF0LmgiCi0jaW5jbHVk
ZSAiZGVtdXguaCIKLSNpbmNsdWRlICJmbGFjX3BpY3R1cmUuaCIKLSNpbmNsdWRlICJpbnRlcm5h
bC5oIgotI2luY2x1ZGUgIm9nZ2RlYy5oIgotI2luY2x1ZGUgInZvcmJpc2NvbW1lbnQuaCIKLSNp
bmNsdWRlICJyZXBsYXlnYWluLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvYXZmb3JtYXQuaCIK
KyNpbmNsdWRlICJsaWJhdmZvcm1hdC9kZW11eC5oIgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2Zs
YWNfcGljdHVyZS5oIgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2ludGVybmFsLmgiCisjaW5jbHVk
ZSAibGliYXZmb3JtYXQvb2dnL2RlY29kZXIuaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC92b3Ji
aXNjb21tZW50LmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvcmVwbGF5Z2Fpbi5oIgogCiBzdGF0
aWMgaW50IG9nbV9jaGFwdGVyKEFWRm9ybWF0Q29udGV4dCAqYXMsIGNvbnN0IHVpbnQ4X3QgKmtl
eSwgY29uc3QgdWludDhfdCAqdmFsKQogewpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvb2dncGFy
c2V2cDguYyBiL2xpYmF2Zm9ybWF0L29nZy9wYXJzZXZwOC5jCnNpbWlsYXJpdHkgaW5kZXggOTcl
CnJlbmFtZSBmcm9tIGxpYmF2Zm9ybWF0L29nZ3BhcnNldnA4LmMKcmVuYW1lIHRvIGxpYmF2Zm9y
bWF0L29nZy9wYXJzZXZwOC5jCmluZGV4IDY3NmIzYTBmOGUuLjYyOTA0YTUyMzMgMTAwNjQ0Ci0t
LSBhL2xpYmF2Zm9ybWF0L29nZ3BhcnNldnA4LmMKKysrIGIvbGliYXZmb3JtYXQvb2dnL3BhcnNl
dnA4LmMKQEAgLTIxLDkgKzIxLDkgQEAKIAogI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRyZWFkd3Jp
dGUuaCIKIAotI2luY2x1ZGUgImF2Zm9ybWF0LmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwuaCIKLSNp
bmNsdWRlICJvZ2dkZWMuaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmZvcm1hdC5oIgorI2lu
Y2x1ZGUgImxpYmF2Zm9ybWF0L2ludGVybmFsLmgiCisjaW5jbHVkZSAibGliYXZmb3JtYXQvb2dn
L2RlY29kZXIuaCIKIAogI2RlZmluZSBWUDhfSEVBREVSX1NJWkUgMjYKIAotLSAKMi41Mi4wCgoK
RnJvbSBmYjI4NGU5NDJjMWNjNGQ0YjMzYTM4MmE1OWZhMDM3MmYwNWIzY2FkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb21haW4gQmVhdXhpcyA8cm9tYWluLmJlYXV4aXNAZ21haWwu
Y29tPgpEYXRlOiBUdWUsIDI4IEp1bCAyMDI2IDE2OjQwOjM3IC0wNTAwClN1YmplY3Q6IFtQQVRD
SCAwMy8xMF0gYXZmb3JtYXQvb2dnOiBzZXBhcmF0ZSB3aGF0IGEgc3RyZWFtIGlzIGZyb20gd2hl
cmUgaXQKIGlzCgpvZ2dfcmVzZXQoKSBtZWFucyB0aGUgZmlsZSBoYXMgYmVlbiByZXBvc2l0aW9u
ZWQsIHNvIGdyb3VwIHRoZSBmaWVsZHMgYnkKd2hldGhlciB0aGV5IGRlc2NyaWJlIGEgcG9zaXRp
b24gb3IgdGhlIHN0cmVhbSBpdHNlbGYgYW5kIGNsZWFyIGV4YWN0bHkKdGhlIGZpcnN0IGdyb3Vw
LCB3aGljaCB0aGUgb2xkIHJlc2V0IGNvdmVyZWQgb25seSBpbiBwYXJ0LgoKTm8gZnVuY3Rpb25h
bCBjaGFuZ2U7IHRoZSBvZ2cgdGVzdHMgZG8gbm90IG1vdmUuCi0tLQogbGliYXZmb3JtYXQvb2dn
L2RlY29kZXIuYyB8IDcxICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQog
bGliYXZmb3JtYXQvb2dnL2RlY29kZXIuaCB8IDU2ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0t
LS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA4MSBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5jIGIvbGliYXZmb3JtYXQvb2dn
L2RlY29kZXIuYwppbmRleCBlYTRlMWQ5MWY1Li4wNDcxNzQ2ZGFiIDEwMDY0NAotLS0gYS9saWJh
dmZvcm1hdC9vZ2cvZGVjb2Rlci5jCisrKyBiL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmMKQEAg
LTE1OCwzNiArMTU4LDU3IEBAIHN0YXRpYyBpbnQgb2dnX3Jlc3RvcmUoQVZGb3JtYXRDb250ZXh0
ICpzKQogICAgIHJldHVybiAwOwogfQogCisvKioKKyAqIERyb3AgZXZlcnl0aGluZyB0aGF0IGRl
c2NyaWJlZCB3aGVyZSBpbiB0aGUgZmlsZSB0aGUgc3RyZWFtIHdhczogdGhlIHBhZ2UKKyAqIGJl
aW5nIHJlYWQsIHRoZSBwYWNrZXQgYmVpbmcgYXNzZW1ibGVkIG91dCBvZiBpdCwgdGhlIHRpbWVz
dGFtcHMgY2FycmllZAorICogb3ZlciBmcm9tIHRoZSBwYWdlIGJlZm9yZSwgYW5kIHdoYXRldmVy
IHdhcyB3YWl0aW5nIHRvIGJlIGF0dGFjaGVkIHRvIHRoZQorICogbmV4dCBwYWNrZXQuIFdoYXQg
dGhlIHN0cmVhbSAqaXMqIC0gaXRzIHNlcmlhbCBudW1iZXIsIGl0cyBjb2RlYyBhbmQgdGhlCisg
KiBzdGF0ZSB0aGF0IGNvZGVjIGtlZXBzIC0gaXMgbGVmdCBhbG9uZS4KKyAqCisgKiBAcGFyYW0g
YXRfZGF0YV9zdGFydCB0aGUgbmV3IHBvc2l0aW9uIGlzIGF0IG9yIGJlZm9yZSB0aGUgZmlyc3Qg
ZGF0YSBwYWdlLAorICogICAgICAgICAgICAgICAgICAgICAgc28gdGhlIG5leHQgcGFja2V0IHN0
YXJ0cyB0aGUgc3RyZWFtIHJhdGhlciB0aGFuCisgKiAgICAgICAgICAgICAgICAgICAgICBjb250
aW51aW5nIGl0IGZyb20gYW4gdW5rbm93biB0aW1lc3RhbXAKKyAqLworc3RhdGljIHZvaWQgb2dn
X3N0cmVhbV9yZXNldChzdHJ1Y3Qgb2dnX3N0cmVhbSAqb3MsIGludCBhdF9kYXRhX3N0YXJ0KQor
eworICAgIG9zLT5wYWdlX3BvcyAgID0gMDsKKyAgICBvcy0+c3luY19wb3MgICA9IC0xOworICAg
IG9zLT5mbGFncyAgICAgID0gMDsKKyAgICBvcy0+Z3JhbnVsZSAgICA9IC0xOworICAgIG9zLT5u
c2VncyAgICAgID0gMDsKKyAgICBvcy0+c2VncCAgICAgICA9IDA7CisgICAgb3MtPmJ1ZnBvcyAg
ICAgPSAwOworICAgIG9zLT5wc3RhcnQgICAgID0gMDsKKyAgICBvcy0+cHNpemUgICAgICA9IDA7
CisgICAgb3MtPnBmbGFncyAgICAgPSAwOworICAgIG9zLT5wZHVyYXRpb24gID0gMDsKKyAgICBv
cy0+aW5jb21wbGV0ZSA9IDA7CisgICAgb3MtPnBhZ2Vfc3RhcnQgPSAwOworICAgIG9zLT5wYWdl
X2VuZCAgID0gMDsKKyAgICBvcy0+Z290X2RhdGEgICA9IDA7CisgICAgb3MtPmxhc3RwdHMgICAg
PSBhdF9kYXRhX3N0YXJ0ID8gMCA6IEFWX05PUFRTX1ZBTFVFOworICAgIG9zLT5sYXN0ZHRzICAg
ID0gQVZfTk9QVFNfVkFMVUU7CisgICAgb3MtPnN0YXJ0X3RyaW1taW5nID0gMDsKKyAgICBvcy0+
ZW5kX3RyaW1taW5nICAgPSAwOworICAgIG9zLT5yZXBsYWNlICAgID0gMDsKKworICAgIGF2X2Zy
ZWVwKCZvcy0+bmV3X21ldGFkYXRhKTsKKyAgICBvcy0+bmV3X21ldGFkYXRhX3NpemUgPSAwOwor
ICAgIGF2X2ZyZWVwKCZvcy0+bmV3X2V4dHJhZGF0YSk7CisgICAgb3MtPm5ld19leHRyYWRhdGFf
c2l6ZSA9IDA7Cit9CisKKy8qKgorICogQ2FsbGVkIHdoZW5ldmVyIHRoZSBmaWxlIGhhcyBiZWVu
IHJlcG9zaXRpb25lZCwgYW5kIG9ubHkgdGhlbi4KKyAqLwogc3RhdGljIGludCBvZ2dfcmVzZXQo
QVZGb3JtYXRDb250ZXh0ICpzKQogewogICAgIHN0cnVjdCBvZ2cgKm9nZyA9IHMtPnByaXZfZGF0
YTsKKyAgICBpbnQgYXRfZGF0YV9zdGFydCA9IGF2aW9fdGVsbChzLT5wYikgPD0gZmZmb3JtYXRj
b250ZXh0KHMpLT5kYXRhX29mZnNldDsKICAgICBpbnQgaTsKLSAgICBpbnQ2NF90IHN0YXJ0X3Bv
cyA9IGF2aW9fdGVsbChzLT5wYik7CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgb2dnLT5uc3RyZWFt
czsgaSsrKSB7Ci0gICAgICAgIHN0cnVjdCBvZ2dfc3RyZWFtICpvcyA9IG9nZy0+c3RyZWFtcyAr
IGk7Ci0gICAgICAgIG9zLT5idWZwb3MgICAgID0gMDsKLSAgICAgICAgb3MtPnBzdGFydCAgICAg
PSAwOwotICAgICAgICBvcy0+cHNpemUgICAgICA9IDA7Ci0gICAgICAgIG9zLT5ncmFudWxlICAg
ID0gLTE7Ci0gICAgICAgIG9zLT5sYXN0cHRzICAgID0gQVZfTk9QVFNfVkFMVUU7Ci0gICAgICAg
IG9zLT5sYXN0ZHRzICAgID0gQVZfTk9QVFNfVkFMVUU7Ci0gICAgICAgIG9zLT5zeW5jX3BvcyAg
ID0gLTE7Ci0gICAgICAgIG9zLT5wYWdlX3BvcyAgID0gMDsKLSAgICAgICAgb3MtPm5zZWdzICAg
ICAgPSAwOwotICAgICAgICBvcy0+c2VncCAgICAgICA9IDA7Ci0gICAgICAgIG9zLT5pbmNvbXBs
ZXRlID0gMDsKLSAgICAgICAgb3MtPmdvdF9kYXRhID0gMDsKLSAgICAgICAgaWYgKHN0YXJ0X3Bv
cyA8PSBmZmZvcm1hdGNvbnRleHQocyktPmRhdGFfb2Zmc2V0KSB7Ci0gICAgICAgICAgICBvcy0+
bGFzdHB0cyA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgb3MtPnN0YXJ0X3RyaW1taW5nID0gMDsK
LSAgICAgICAgb3MtPmVuZF90cmltbWluZyA9IDA7Ci0gICAgICAgIGF2X2ZyZWVwKCZvcy0+bmV3
X21ldGFkYXRhKTsKLSAgICAgICAgb3MtPm5ld19tZXRhZGF0YV9zaXplID0gMDsKLSAgICAgICAg
YXZfZnJlZXAoJm9zLT5uZXdfZXh0cmFkYXRhKTsKLSAgICAgICAgb3MtPm5ld19leHRyYWRhdGFf
c2l6ZSA9IDA7Ci0gICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBvZ2ctPm5zdHJlYW1zOyBpKysp
CisgICAgICAgIG9nZ19zdHJlYW1fcmVzZXQob2dnLT5zdHJlYW1zICsgaSwgYXRfZGF0YV9zdGFy
dCk7CiAKICAgICBvZ2ctPnBhZ2VfcG9zID0gLTE7CiAgICAgb2dnLT5jdXJpZHggPSAtMTsKZGlm
ZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmggYi9saWJhdmZvcm1hdC9vZ2cvZGVj
b2Rlci5oCmluZGV4IDhlNDc1YjNkMjYuLjg0N2IwOGNjODYgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9y
bWF0L29nZy9kZWNvZGVyLmgKKysrIGIvbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuaApAQCAtNjQs
NDEgKzY0LDU1IEBAIHN0cnVjdCBvZ2dfY29kZWMgewogICAgIHZvaWQgKCpjbGVhbnVwKShBVkZv
cm1hdENvbnRleHQgKnMsIGludCBpZHgpOwogfTsKIAorLyoqCisgKiBBIGxvZ2ljYWwgYml0c3Ry
ZWFtIGJlaW5nIHJlYWQuCisgKgorICogVGhlIGZpZWxkcyBmYWxsIGludG8gdHdvIGdyb3Vwcywg
YW5kIHRoZSBzcGxpdCBtYXR0ZXJzOiBvZ2dfcmVzZXQoKSBkcm9wcworICogdGhlIGZpcnN0IG9u
ZSBhbmQga2VlcHMgdGhlIHNlY29uZC4KKyAqLwogc3RydWN0IG9nZ19zdHJlYW0geworICAgIC8q
IFdoYXQgdGhlIHN0cmVhbSBpcy4gSG9sZHMgd2hlcmV2ZXIgdGhlIGZpbGUgaXMgYmVpbmcgcmVh
ZCBmcm9tLiAqLworICAgIHVpbnQzMl90IHNlcmlhbDsKKyAgICBjb25zdCBzdHJ1Y3Qgb2dnX2Nv
ZGVjICpjb2RlYzsKKyAgICB2b2lkICpwcml2YXRlOyAgICAgICAgICAgICAgLy8vPCBjb2RlYyBz
dGF0ZSwgb3duZWQgYnkgdGhlIGNvZGVjCisgICAgaW50IGhlYWRlcjsKKyAgICBpbnQgbmJfaGVh
ZGVyOyAgICAgICAgICAgICAgLy8vPCBzZXQgdG8gdGhlIG51bWJlciBvZiBwYXJzZWQgaGVhZGVy
cworICAgIHVpbnQ2NF90IHN0YXJ0X2dyYW51bGU7CisgICAgaW50IGdvdF9zdGFydDsKKyAgICBp
bnQga2V5ZnJhbWVfc2VlazsgICAgICAgICAgLy8vPCBzZXQgYnkgYSBzZWVrLCBhbmQgb3V0bGl2
ZXMgdGhlIHNlZWsncyBvd24gcmVzZXRzCisKKyAgICAvKiBUaGUgYnVmZmVyIGl0c2VsZiwgYXMg
b3Bwb3NlZCB0byB3aGF0IGlzIGN1cnJlbnRseSBpbiBpdC4gKi8KICAgICB1aW50OF90ICpidWY7
CiAgICAgdW5zaWduZWQgaW50IGJ1ZnNpemU7CisKKyAgICAvKiBXaGVyZSBpbiB0aGUgZmlsZSB0
aGUgc3RyZWFtIGlzOiB0aGUgcGFnZSBiZWluZyByZWFkLCB0aGUgcGFja2V0IGJlaW5nCisgICAg
ICogYXNzZW1ibGVkIG91dCBvZiBpdCwgdGhlIHRpbWVzdGFtcHMgY2FycmllZCBvdmVyIGZyb20g
dGhlIHBhZ2UgYmVmb3JlLAorICAgICAqIGFuZCB3aGF0IGlzIHdhaXRpbmcgdG8gYmUgYXR0YWNo
ZWQgdG8gdGhlIG5leHQgcGFja2V0LiBOb25lIG9mIHRoaXMKKyAgICAgKiBzdXJ2aXZlcyBtb3Zp
bmcgZWxzZXdoZXJlIGluIHRoZSBmaWxlLiAqLworICAgIGludDY0X3QgcGFnZV9wb3M7ICAgICAg
ICAgICAvLy88IGZpbGUgb2Zmc2V0IG9mIHRoZSBjdXJyZW50IHBhZ2UKKyAgICBpbnQ2NF90IHN5
bmNfcG9zOyAgICAgICAgICAgLy8vPCBmaWxlIG9mZnNldCBvZiB0aGUgZmlyc3QgcGFnZSBuZWVk
ZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIGN1cnJlbnQgcGFja2V0CisgICAgaW50IGZsYWdzOyAgICAg
ICAgICAgICAgICAgIC8vLzwgZmxhZ3Mgb2YgdGhlIGN1cnJlbnQgcGFnZQorICAgIHVpbnQ2NF90
IGdyYW51bGU7ICAgICAgICAgICAvLy88IGdyYW51bGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQg
cGFnZQorICAgIGludCBuc2Vncywgc2VncDsKKyAgICB1aW50OF90IHNlZ21lbnRzWzI1NV07CiAg
ICAgdW5zaWduZWQgaW50IGJ1ZnBvczsKICAgICB1bnNpZ25lZCBpbnQgcHN0YXJ0OwogICAgIHVu
c2lnbmVkIGludCBwc2l6ZTsKICAgICB1bnNpZ25lZCBpbnQgcGZsYWdzOwogICAgIHVuc2lnbmVk
IGludCBwZHVyYXRpb247Ci0gICAgdWludDMyX3Qgc2VyaWFsOwotICAgIHVpbnQ2NF90IGdyYW51
bGU7Ci0gICAgdWludDY0X3Qgc3RhcnRfZ3JhbnVsZTsKKyAgICBpbnQgaW5jb21wbGV0ZTsgICAg
ICAgICAgICAgLy8vPCB3aGV0aGVyIHdlJ3JlIGV4cGVjdGluZyBhIGNvbnRpbnVhdGlvbiBpbiB0
aGUgbmV4dCBwYWdlCisgICAgaW50IHBhZ2Vfc3RhcnQ7ICAgICAgICAgICAgIC8vLzwgY3VycmVu
dCBwYWNrZXQgaXMgdGhlIGZpcnN0IG9uZSBzdGFydGluZyBpbiB0aGUgcGFnZQorICAgIGludCBw
YWdlX2VuZDsgICAgICAgICAgICAgICAvLy88IGN1cnJlbnQgcGFja2V0IGlzIHRoZSBsYXN0IG9u
ZSBjb21wbGV0ZWQgaW4gdGhlIHBhZ2UKKyAgICBpbnQgZ290X2RhdGE7ICAgICAgICAgICAgICAg
Ly8vPCAxIGlmIHRoZSBzdHJlYW0gZ290IHNvbWUgZGF0YSAobm9uLWluaXRpYWwgcGFja2V0cyks
IDAgb3RoZXJ3aXNlCiAgICAgaW50NjRfdCBsYXN0cHRzOwogICAgIGludDY0X3QgbGFzdGR0czsK
LSAgICBpbnQ2NF90IHN5bmNfcG9zOyAgIC8vLzwgZmlsZSBvZmZzZXQgb2YgdGhlIGZpcnN0IHBh
Z2UgbmVlZGVkIHRvIHJlY29uc3RydWN0IHRoZSBjdXJyZW50IHBhY2tldAotICAgIGludDY0X3Qg
cGFnZV9wb3M7ICAgLy8vPCBmaWxlIG9mZnNldCBvZiB0aGUgY3VycmVudCBwYWdlCi0gICAgaW50
IGZsYWdzOwotICAgIGNvbnN0IHN0cnVjdCBvZ2dfY29kZWMgKmNvZGVjOwotICAgIGludCBoZWFk
ZXI7Ci0gICAgaW50IG5zZWdzLCBzZWdwOwotICAgIHVpbnQ4X3Qgc2VnbWVudHNbMjU1XTsKLSAg
ICBpbnQgaW5jb21wbGV0ZTsgLy8vPCB3aGV0aGVyIHdlJ3JlIGV4cGVjdGluZyBhIGNvbnRpbnVh
dGlvbiBpbiB0aGUgbmV4dCBwYWdlCi0gICAgaW50IHBhZ2Vfc3RhcnQ7IC8vLzwgY3VycmVudCBw
YWNrZXQgaXMgdGhlIGZpcnN0IG9uZSBzdGFydGluZyBpbiB0aGUgcGFnZQotICAgIGludCBwYWdl
X2VuZDsgICAvLy88IGN1cnJlbnQgcGFja2V0IGlzIHRoZSBsYXN0IG9uZSBjb21wbGV0ZWQgaW4g
dGhlIHBhZ2UKLSAgICBpbnQga2V5ZnJhbWVfc2VlazsKLSAgICBpbnQgZ290X3N0YXJ0OwotICAg
IGludCBnb3RfZGF0YTsgICAvLy88IDEgaWYgdGhlIHN0cmVhbSBnb3Qgc29tZSBkYXRhIChub24t
aW5pdGlhbCBwYWNrZXRzKSwgMCBvdGhlcndpc2UKLSAgICBpbnQgbmJfaGVhZGVyOyAvLy88IHNl
dCB0byB0aGUgbnVtYmVyIG9mIHBhcnNlZCBoZWFkZXJzCi0gICAgaW50IHN0YXJ0X3RyaW1taW5n
OyAvLy88IHNldCB0aGUgbnVtYmVyIG9mIHBhY2tldHMgdG8gZHJvcCBmcm9tIHRoZSBzdGFydAot
ICAgIGludCBlbmRfdHJpbW1pbmc7IC8vLzwgc2V0IHRoZSBudW1iZXIgb2YgcGFja2V0cyB0byBk
cm9wIGZyb20gdGhlIGVuZAotICAgIGludCByZXBsYWNlOyAvLyA8IHNldCB0byAxIGFmdGVyIGlu
aXRpYWxpemluZyBhIG5ldyBjaGFpbmVkIHN0cmVhbQorICAgIGludCBzdGFydF90cmltbWluZzsg
ICAgICAgICAvLy88IHNldCB0aGUgbnVtYmVyIG9mIHBhY2tldHMgdG8gZHJvcCBmcm9tIHRoZSBz
dGFydAorICAgIGludCBlbmRfdHJpbW1pbmc7ICAgICAgICAgICAvLy88IHNldCB0aGUgbnVtYmVy
IG9mIHBhY2tldHMgdG8gZHJvcCBmcm9tIHRoZSBlbmQKKyAgICBpbnQgcmVwbGFjZTsgICAgICAg
ICAgICAgICAgLy8vPCBzZXQgdG8gMSBhZnRlciBpbml0aWFsaXppbmcgYSBuZXcgY2hhaW5lZCBz
dHJlYW0KICAgICB1aW50OF90ICpuZXdfbWV0YWRhdGE7CiAgICAgc2l6ZV90IG5ld19tZXRhZGF0
YV9zaXplOwogICAgIHVpbnQ4X3QgKm5ld19leHRyYWRhdGE7CiAgICAgc2l6ZV90IG5ld19leHRy
YWRhdGFfc2l6ZTsKLSAgICB2b2lkICpwcml2YXRlOwogfTsKIAogc3RydWN0IG9nZ19zdGF0ZSB7
Ci0tIAoyLjUyLjAKCgpGcm9tIDI0ODY0MGMzMGYwODQ3NDc3NzYxYjgzZDBhNGFmYmVkYTA3ZjU3
YjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFJvbWFpbiBCZWF1eGlzIDxyb21haW4u
YmVhdXhpc0BnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMjggSnVsIDIwMjYgMTY6NDA6MzcgLTA1MDAK
U3ViamVjdDogW1BBVENIIDA0LzEwXSBhdmZvcm1hdC9vZ2c6IGV4dHJhY3QgcGFnZSBzeW5jIGZy
b20gdGhlIGRlbXV4ZXIKClNwbGl0IHRoZSBwYWdlIGhlYWRlciBwYXJzaW5nIG91dCBvZiBvZ2df
cmVhZF9wYWdlKCkgaW50bwpmZl9vZ2dfc3luY19wYWdlKCksIHRha2luZyB0aGUgb2Zmc2V0IHVz
ZWQgdG8gcmVzdGFydCBwYXN0IGEgYmFkIHBhZ2UgYXMKYW4gYXJndW1lbnQgcmF0aGVyIHRoYW4g
ZnJvbSB0aGUgZGVtdXhlcidzIHByaXZhdGUgY29udGV4dCwgYW5kIGFkZApmZl9vZ2dfdmVyaWZ5
X3BhZ2UoKSBmb3IgY2FsbGVycyB0aGF0IGRvIG5vdCB3YW50IHRoZSBwYXlsb2FkLgoKTm8gZnVu
Y3Rpb25hbCBjaGFuZ2U7IHRoZSBvZ2cgdGVzdHMgZG8gbm90IG1vdmUuCi0tLQogbGliYXZmb3Jt
YXQvTWFrZWZpbGUgICAgICB8ICAgMyArLQogbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuYyB8IDEx
MCArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGxpYmF2Zm9ybWF0L29nZy9kZWNvZGVy
LmggfCAgIDQgKy0KIGxpYmF2Zm9ybWF0L29nZy9wYXJzZXIuYyAgfCAxMzcgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYmF2Zm9ybWF0L29nZy9wYXJzZXIuaCAgfCAg
ODEgKysrKysrKysrKysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAyNDUgaW5zZXJ0aW9u
cygrKSwgOTAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmb3JtYXQvb2dn
L3BhcnNlci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmb3JtYXQvb2dnL3BhcnNlci5oCgpk
aWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQpp
bmRleCBmMmYxMDg3NmY3Li5lNTE2ZDE0MWRhIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9NYWtl
ZmlsZQorKysgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQpAQCAtNDM4LDcgKzQzOCw4IEBAIE9CSlMt
JChDT05GSUdfTlVWX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gbnV2Lm8KIE9CSlMtJChDT05G
SUdfQVYxX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gYXYxZGVjLm8KIE9CSlMtJChDT05GSUdf
T0JVX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gYXYxZGVjLm8KIE9CSlMtJChDT05GSUdfT0JV
X01VWEVSKSAgICAgICAgICAgICAgICAgKz0gcmF3ZW5jLm8KLU9CSlMtJChDT05GSUdfT0dHX0RF
TVVYRVIpICAgICAgICAgICAgICAgKz0gb2dnL2RlY29kZXIubyAgICAgICBcCitPQkpTLSQoQ09O
RklHX09HR19ERU1VWEVSKSAgICAgICAgICAgICAgICs9IG9nZy9wYXJzZXIubyAgICAgICAgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZ2cvZGVjb2Rlci5v
ICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2dn
L3BhcnNlZGlyYWMubyAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9nZy9wYXJzZWZsYWMubyAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvZ2cvcGFyc2VvZ20ubyAgICAgIFwKZGlmZiAtLWdpdCBhL2xpYmF2
Zm9ybWF0L29nZy9kZWNvZGVyLmMgYi9saWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5jCmluZGV4IDA0
NzE3NDZkYWIuLmM0NWY2NTJkNDMgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVy
LmMKKysrIGIvbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuYwpAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgImxpYmF2Zm9ybWF0L2F2aW9faW50ZXJuYWwuaCIKICNpbmNsdWRlICJsaWJhdmZvcm1h
dC9kZW11eC5oIgogI2luY2x1ZGUgImxpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmgiCisjaW5jbHVk
ZSAibGliYXZmb3JtYXQvb2dnL3BhcnNlci5oIgogI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2F2Zm9y
bWF0LmgiCiAjaW5jbHVkZSAibGliYXZmb3JtYXQvaW50ZXJuYWwuaCIKIApAQCAtMzQwLDgxICsz
NDEsMTYgQEAgc3RhdGljIGludCBvZ2dfcmVhZF9wYWdlKEFWRm9ybWF0Q29udGV4dCAqcywgaW50
ICpzaWQsIGludCBwcm9iaW5nKQogICAgIEFWSU9Db250ZXh0ICpiYyA9IHMtPnBiOwogICAgIHN0
cnVjdCBvZ2cgKm9nZyA9IHMtPnByaXZfZGF0YTsKICAgICBzdHJ1Y3Qgb2dnX3N0cmVhbSAqb3M7
Ci0gICAgaW50IHJldCwgaSA9IDA7Ci0gICAgaW50IGZsYWdzLCBuc2VnczsKLSAgICB1aW50NjRf
dCBncDsKLSAgICB1aW50MzJfdCBzZXJpYWw7Ci0gICAgdWludDMyX3QgY3JjLCBjcmNfdG1wOwot
ICAgIGludCBzaXplID0gMCwgaWR4OwotICAgIGludDY0X3QgdmVyc2lvbiwgcGFnZV9wb3M7Ci0g
ICAgaW50NjRfdCBzdGFydF9wb3M7Ci0gICAgdWludDhfdCBzeW5jWzRdOwotICAgIHVpbnQ4X3Qg
c2VnbWVudHNbMjU1XTsKKyAgICBpbnQgcmV0OworICAgIGludCBzaXplLCBpZHg7CiAgICAgdWlu
dDhfdCAqcmVhZG91dF9idWY7Ci0gICAgaW50IHNwID0gMDsKKyAgICBPZ2dQYWdlIHBhZ2U7CiAK
LSAgICByZXQgPSBhdmlvX3JlYWQoYmMsIHN5bmMsIDQpOwotICAgIGlmIChyZXQgPCA0KQotICAg
ICAgICByZXR1cm4gcmV0IDwgMCA/IHJldCA6IEFWRVJST1JfRU9GOworICAgIHNpemUgPSBmZl9v
Z2dfc3luY19wYWdlKHMsICZwYWdlLCAmb2dnLT5wYWdlX3Bvcyk7CisgICAgaWYgKHNpemUgPCAw
KQorICAgICAgICByZXR1cm4gc2l6ZTsKIAotICAgIGRvIHsKLSAgICAgICAgaW50IGM7Ci0KLSAg
ICAgICAgaWYgKHN5bmNbc3AgJiAzXSA9PSAnTycgJiYKLSAgICAgICAgICAgIHN5bmNbKHNwICsg
MSkgJiAzXSA9PSAnZycgJiYKLSAgICAgICAgICAgIHN5bmNbKHNwICsgMikgJiAzXSA9PSAnZycg
JiYgc3luY1soc3AgKyAzKSAmIDNdID09ICdTJykKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGlmKCFpICYmIChiYy0+c2Vla2FibGUgJiBBVklPX1NFRUtBQkxFX05PUk1BTCkgJiYgb2dn
LT5wYWdlX3BvcyA+IDApIHsKLSAgICAgICAgICAgIG1lbXNldChzeW5jLCAwLCA0KTsKLSAgICAg
ICAgICAgIGF2aW9fc2VlayhiYywgb2dnLT5wYWdlX3Bvcys0LCBTRUVLX1NFVCk7Ci0gICAgICAg
ICAgICBvZ2ctPnBhZ2VfcG9zID0gLTE7Ci0gICAgICAgIH0KLQotICAgICAgICBjID0gYXZpb19y
OChiYyk7Ci0KLSAgICAgICAgaWYgKGF2aW9fZmVvZihiYykpCi0gICAgICAgICAgICByZXR1cm4g
QVZFUlJPUl9FT0Y7Ci0KLSAgICAgICAgc3luY1tzcCsrICYgM10gPSBjOwotICAgIH0gd2hpbGUg
KGkrKyA8IE1BWF9QQUdFX1NJWkUpOwotCi0gICAgaWYgKGkgPj0gTUFYX1BBR0VfU0laRSkgewot
ICAgICAgICBhdl9sb2cocywgQVZfTE9HX0lORk8sICJjYW5ub3QgZmluZCBzeW5jIHdvcmRcbiIp
OwotICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICB9Ci0KLSAgICAvKiAw
eDRmYTliMDVmID0gYXZfY3JjKEFWX0NSQ18zMl9JRUVFLCAweDAsICJPZ2dTIiwgNCkgKi8KLSAg
ICBmZmlvX2luaXRfY2hlY2tzdW0oYmMsIGZmX2NyYzA0QzExREI3X3VwZGF0ZSwgMHg0ZmE5YjA1
Zik7Ci0KLSAgICAvKiBUbyByZXdpbmQgaWYgY2hlY2tzdW0gaXMgYmFkL2NoZWNrIG1hZ2ljIG9u
IHN3aXRjaGVzIC0gdGhpcyBpcyB0aGUgbWF4IHBhY2tldCBzaXplICovCi0gICAgcmV0ID0gZmZp
b19lbnN1cmVfc2Vla2JhY2soYmMsIE1BWF9QQUdFX1NJWkUpOwotICAgIGlmIChyZXQgPCAwKQot
ICAgICAgICByZXR1cm4gcmV0OwotICAgIHN0YXJ0X3BvcyA9IGF2aW9fdGVsbChiYyk7Ci0KLSAg
ICB2ZXJzaW9uID0gYXZpb19yOChiYyk7Ci0gICAgZmxhZ3MgICA9IGF2aW9fcjgoYmMpOwotICAg
IGdwICAgICAgPSBhdmlvX3JsNjQoYmMpOwotICAgIHNlcmlhbCAgPSBhdmlvX3JsMzIoYmMpOwot
ICAgIGF2aW9fcmwzMihiYyk7IC8qIHNlcSAqLwotCi0gICAgY3JjX3RtcCA9IGZmaW9fZ2V0X2No
ZWNrc3VtKGJjKTsKLSAgICBjcmMgICAgID0gYXZpb19yYjMyKGJjKTsKLSAgICBjcmNfdG1wID0g
ZmZfY3JjMDRDMTFEQjdfdXBkYXRlKGNyY190bXAsICh1aW50OF90WzRdKXswfSwgNCk7Ci0gICAg
ZmZpb19pbml0X2NoZWNrc3VtKGJjLCBmZl9jcmMwNEMxMURCN191cGRhdGUsIGNyY190bXApOwot
Ci0gICAgbnNlZ3MgICAgPSBhdmlvX3I4KGJjKTsKLSAgICBwYWdlX3BvcyA9IGF2aW9fdGVsbChi
YykgLSAyNzsKLQotICAgIHJldCA9IGF2aW9fcmVhZChiYywgc2VnbWVudHMsIG5zZWdzKTsKLSAg
ICBpZiAocmV0IDwgbnNlZ3MpCi0gICAgICAgIHJldHVybiByZXQgPCAwID8gcmV0IDogQVZFUlJP
Ul9FT0Y7Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgbnNlZ3M7IGkrKykKLSAgICAgICAgc2l6ZSAr
PSBzZWdtZW50c1tpXTsKLQotICAgIGlkeCA9IG9nZ19maW5kX3N0cmVhbShvZ2csIHNlcmlhbCk7
CisgICAgaWR4ID0gb2dnX2ZpbmRfc3RyZWFtKG9nZywgcGFnZS5zZXJpYWwpOwogICAgIGlmIChp
ZHggPj0gMCkgewogICAgICAgICBvcyA9IG9nZy0+c3RyZWFtcyArIGlkeDsKIApAQCAtNDM0LDIy
ICszNzAsMjIgQEAgc3RhdGljIGludCBvZ2dfcmVhZF9wYWdlKEFWRm9ybWF0Q29udGV4dCAqcywg
aW50ICpzaWQsIGludCBwcm9iaW5nKQogICAgICAgICByZXR1cm4gcmV0IDwgMCA/IHJldCA6IEFW
RVJST1JfRU9GOwogICAgIH0KIAotICAgIGlmIChjcmMgXiBmZmlvX2dldF9jaGVja3N1bShiYykp
IHsKKyAgICBpZiAocGFnZS5jcmMgXiBmZmlvX2dldF9jaGVja3N1bShiYykpIHsKICAgICAgICAg
YXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIkNSQyBtaXNtYXRjaCFcbiIpOwogICAgICAgICBpZiAo
aWR4IDwgMCkKICAgICAgICAgICAgIGF2X2ZyZWUocmVhZG91dF9idWYpOwotICAgICAgICBhdmlv
X3NlZWsoYmMsIHN0YXJ0X3BvcywgU0VFS19TRVQpOworICAgICAgICBhdmlvX3NlZWsoYmMsIHBh
Z2Uuc3RhcnRfcG9zLCBTRUVLX1NFVCk7CiAgICAgICAgICpzaWQgPSAtMTsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogCiAgICAgLyogU2luY2Ugd2UncmUgYWxtb3N0IHN1cmUgaXRzIGEgdmFs
aWQgcGFja2V0LCBjaGVja2luZyB0aGUgdmVyc2lvbiBhZnRlcgogICAgICAqIHRoZSBjaGVja3N1
bSBsZXRzIHRoZSBkZW11eGVyIGJlIG1vcmUgdG9sZXJhbnQgKi8KLSAgICBpZiAodmVyc2lvbikg
eworICAgIGlmIChwYWdlLnZlcnNpb24pIHsKICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJP
UiwgIkludmFsaWQgT2dnIHZlcnMhXG4iKTsKICAgICAgICAgaWYgKGlkeCA8IDApCiAgICAgICAg
ICAgICBhdl9mcmVlKHJlYWRvdXRfYnVmKTsKLSAgICAgICAgYXZpb19zZWVrKGJjLCBzdGFydF9w
b3MsIFNFRUtfU0VUKTsKKyAgICAgICAgYXZpb19zZWVrKGJjLCBwYWdlLnN0YXJ0X3BvcywgU0VF
S19TRVQpOwogICAgICAgICAqc2lkID0gLTE7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAg
LTQ1Nyw5ICszOTMsOSBAQCBzdGF0aWMgaW50IG9nZ19yZWFkX3BhZ2UoQVZGb3JtYXRDb250ZXh0
ICpzLCBpbnQgKnNpZCwgaW50IHByb2JpbmcpCiAgICAgLyogQ1JDIGlzIGNvcnJlY3Qgc28gd2Ug
Y2FuIGJlIDk5JSBzdXJlIHRoZXJlJ3MgYW4gYWN0dWFsIGNoYW5nZSBoZXJlICovCiAgICAgaWYg
KGlkeCA8IDApIHsKICAgICAgICAgaWYgKGRhdGFfcGFja2V0c19zZWVuKG9nZykpCi0gICAgICAg
ICAgICBpZHggPSBvZ2dfcmVwbGFjZV9zdHJlYW0ocywgc2VyaWFsLCByZWFkb3V0X2J1Ziwgc2l6
ZSwgcHJvYmluZyk7CisgICAgICAgICAgICBpZHggPSBvZ2dfcmVwbGFjZV9zdHJlYW0ocywgcGFn
ZS5zZXJpYWwsIHJlYWRvdXRfYnVmLCBzaXplLCBwcm9iaW5nKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgaWR4ID0gb2dnX25ld19zdHJlYW0ocywgc2VyaWFsKTsKKyAgICAgICAgICAgIGlk
eCA9IG9nZ19uZXdfc3RyZWFtKHMsIHBhZ2Uuc2VyaWFsKTsKIAogICAgICAgICBpZiAoaWR4IDwg
MCkgewogICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgImZhaWxlZCB0byBjcmVh
dGUgb3IgcmVwbGFjZSBzdHJlYW1cbiIpOwpAQCAtNDc5LDE4ICs0MTUsMTggQEAgc3RhdGljIGlu
dCBvZ2dfcmVhZF9wYWdlKEFWRm9ybWF0Q29udGV4dCAqcywgaW50ICpzaWQsIGludCBwcm9iaW5n
KQogICAgICAgICBhdl9mcmVlKHJlYWRvdXRfYnVmKTsKICAgICB9CiAKLSAgICBvZ2ctPnBhZ2Vf
cG9zID0gcGFnZV9wb3M7Ci0gICAgb3MtPnBhZ2VfcG9zICA9IHBhZ2VfcG9zOwotICAgIG9zLT5u
c2VncyAgICAgPSBuc2VnczsKKyAgICBvZ2ctPnBhZ2VfcG9zID0gcGFnZS5wYWdlX3BvczsKKyAg
ICBvcy0+cGFnZV9wb3MgID0gcGFnZS5wYWdlX3BvczsKKyAgICBvcy0+bnNlZ3MgICAgID0gcGFn
ZS5uc2VnczsKICAgICBvcy0+c2VncCAgICAgID0gMDsKLSAgICBvcy0+Z290X2RhdGEgID0gIShm
bGFncyAmIE9HR19GTEFHX0JPUyk7CisgICAgb3MtPmdvdF9kYXRhICA9ICEocGFnZS5mbGFncyAm
IE9HR19GTEFHX0JPUyk7CiAgICAgb3MtPmJ1ZnBvcyAgICs9IHNpemU7Ci0gICAgb3MtPmdyYW51
bGUgICA9IGdwOwotICAgIG9zLT5mbGFncyAgICAgPSBmbGFnczsKLSAgICBtZW1jcHkob3MtPnNl
Z21lbnRzLCBzZWdtZW50cywgbnNlZ3MpOworICAgIG9zLT5ncmFudWxlICAgPSBwYWdlLmdwOwor
ICAgIG9zLT5mbGFncyAgICAgPSBwYWdlLmZsYWdzOworICAgIG1lbWNweShvcy0+c2VnbWVudHMs
IHBhZ2Uuc2VnbWVudHMsIHBhZ2UubnNlZ3MpOwogICAgIG1lbXNldChvcy0+YnVmICsgb3MtPmJ1
ZnBvcywgMCwgQVZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSk7CiAKLSAgICBpZiAoZmxhZ3Mg
JiBPR0dfRkxBR19DT05UIHx8IG9zLT5pbmNvbXBsZXRlKSB7CisgICAgaWYgKHBhZ2UuZmxhZ3Mg
JiBPR0dfRkxBR19DT05UIHx8IG9zLT5pbmNvbXBsZXRlKSB7CiAgICAgICAgIGlmICghb3MtPnBz
aXplKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSB2ZXJ5IGZpcnN0IHNlZ21lbnQg
d2Ugc3RhcnRlZAogICAgICAgICAgICAgLy8gcGxheWJhY2sgaW4gdGhlIG1pZGRsZSBvZiBhIGNv
bnRpbnVhdGlvbiBwYWNrZXQuCkBAIC03NTMsOCArNjg5LDggQEAgc3RhdGljIGludCBvZ2dfcmVh
ZF9jbG9zZShBVkZvcm1hdENvbnRleHQgKnMpCiAgICAgfQogCiAgICAgb2dnLT5uc3RyZWFtcyA9
IDA7Ci0KICAgICBhdl9mcmVlcCgmb2dnLT5zdHJlYW1zKTsKKwogICAgIHJldHVybiAwOwogfQog
CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5oIGIvbGliYXZmb3JtYXQvb2dn
L2RlY29kZXIuaAppbmRleCA4NDdiMDhjYzg2Li4zMTdkNzUyMGQ1IDEwMDY0NAotLS0gYS9saWJh
dmZvcm1hdC9vZ2cvZGVjb2Rlci5oCisrKyBiL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmgKQEAg
LTE5MCw3ICsxOTAsNyBAQCBpbnQgZmZfdm9yYmlzX3VwZGF0ZV9tZXRhZGF0YShBVkZvcm1hdENv
bnRleHQgKnMsIEFWU3RyZWFtICpzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IHNpemUpOwogCiBzdGF0aWMgaW5saW5lIGludAotb2dnX2Zp
bmRfc3RyZWFtIChzdHJ1Y3Qgb2dnICogb2dnLCBpbnQgc2VyaWFsKQorb2dnX2ZpbmRfc3RyZWFt
IChzdHJ1Y3Qgb2dnICogb2dnLCB1aW50MzJfdCBzZXJpYWwpCiB7CiAgICAgaW50IGk7CiAKQEAg
LTIxNSw3ICsyMTUsNyBAQCBvZ2dfZ3B0b3B0cyAoQVZGb3JtYXRDb250ZXh0ICogcywgaW50IGks
IHVpbnQ2NF90IGdwLCBpbnQ2NF90ICpkdHMpCiAgICAgICAgIGlmIChkdHMpCiAgICAgICAgICAg
ICAqZHRzID0gcHRzOwogICAgIH0KLSAgICBpZiAocHRzID4gSU5UNjRfTUFYICYmIHB0cyAhPSBB
Vl9OT1BUU19WQUxVRSkgeworICAgIGlmIChwdHMgPiBJTlQ2NF9NQVggJiYgcHRzICE9ICh1aW50
NjRfdClBVl9OT1BUU19WQUxVRSkgewogICAgICAgICAvLyBUaGUgcmV0dXJuIHR5cGUgaXMgdW5z
aWduZWQsIHdlIHRodXMgY2Fubm90IHJldHVybiBuZWdhdGl2ZSBwdHMKICAgICAgICAgYXZfbG9n
KHMsIEFWX0xPR19FUlJPUiwgImludmFsaWQgcHRzICUiUFJJZDY0IlxuIiwgcHRzKTsKICAgICAg
ICAgcHRzID0gQVZfTk9QVFNfVkFMVUU7CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9vZ2cvcGFy
c2VyLmMgYi9saWJhdmZvcm1hdC9vZ2cvcGFyc2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMC4uODljY2MyODI3ZAotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Zm9ybWF0
L29nZy9wYXJzZXIuYwpAQCAtMCwwICsxLDEzNyBAQAorLyoqCisgICAgQ29weXJpZ2h0IChDKSAy
MDA1ICBNaWNoYWVsIEFobGJlcmcsIE3DpW5zIFJ1bGxnw6VyZAorICAgIENvcHlyaWdodCAoQykg
MjAyNSAgUm9tYWluIEJlYXV4aXMKKworICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs
IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCisgICAgb2J0YWluaW5nIGEgY29weSBvZiB0
aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24KKyAgICBmaWxlcyAodGhl
ICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0CisgICAgcmVzdHJp
Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNv
cHksCisgICAgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwg
YW5kL29yIHNlbGwgY29waWVzCisgICAgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl
cnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAgICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1
YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisgICAgVGhlIGFib3ZlIGNvcHly
aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKKyAgICBpbmNs
dWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy
ZS4KKworICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB
TlRZIE9GIEFOWSBLSU5ELAorICAgIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO
T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorICAgIE1FUkNIQU5UQUJJTElUWSwgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisgICAgTk9OSU5GUklOR0VNRU5ULiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQKKyAgICBIT0xERVJTIEJF
IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwKKyAgICBX
SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ
TkcgRlJPTSwKKyAgICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP
UiBUSEUgVVNFIE9SIE9USEVSCisgICAgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorKiovCisK
KyNpbmNsdWRlICJsaWJhdmZvcm1hdC9vZ2cvcGFyc2VyLmgiCisKKyNpbmNsdWRlICJsaWJhdmZv
cm1hdC9hdmZvcm1hdC5oIgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2F2aW9faW50ZXJuYWwuaCIK
KworLyoKKyAqIFBhZ2UgbGV2ZWwgSS9PLiBObyBwYXJzZXIgc3RhdGUgaW52b2x2ZWQsIGFuZCBz
aGFyZWQgd2l0aCB0aGUgZGVtdXhlci4KKyAqLworCitpbnQgZmZfb2dnX3N5bmNfcGFnZShBVkZv
cm1hdENvbnRleHQgKnMsIE9nZ1BhZ2UgKnBhZ2UsIGludDY0X3QgKnJlc3luY19wb3MpCit7Cisg
ICAgQVZJT0NvbnRleHQgKmJjID0gcy0+cGI7CisgICAgdWludDMyX3QgY3JjX3RtcDsKKyAgICBp
bnQgcmV0LCBpID0gMDsKKyAgICBpbnQgc3AgPSAwOworICAgIHVpbnQ4X3Qgc3luY1s0XTsKKyAg
ICBpbnQgc2l6ZSA9IDA7CisKKyAgICByZXQgPSBhdmlvX3JlYWQoYmMsIHN5bmMsIDQpOworICAg
IGlmIChyZXQgPCA0KQorICAgICAgICByZXR1cm4gcmV0IDwgMCA/IHJldCA6IEFWRVJST1JfRU9G
OworCisgICAgZG8geworICAgICAgICBpbnQgYzsKKworICAgICAgICBpZiAoc3luY1tzcCAmIDNd
ID09ICdPJyAmJiBzeW5jWyhzcCArIDEpICYgM10gPT0gJ2cnICYmCisgICAgICAgICAgICBzeW5j
WyhzcCArIDIpICYgM10gPT0gJ2cnICYmIHN5bmNbKHNwICsgMykgJiAzXSA9PSAnUycpCisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoIWkgJiYgcmVzeW5jX3BvcyAmJiAoYmMtPnNl
ZWthYmxlICYgQVZJT19TRUVLQUJMRV9OT1JNQUwpICYmCisgICAgICAgICAgICAqcmVzeW5jX3Bv
cyA+IDApIHsKKyAgICAgICAgICAgIG1lbXNldChzeW5jLCAwLCA0KTsKKyAgICAgICAgICAgIGF2
aW9fc2VlayhiYywgKnJlc3luY19wb3MgKyA0LCBTRUVLX1NFVCk7CisgICAgICAgICAgICAqcmVz
eW5jX3BvcyA9IC0xOworICAgICAgICB9CisKKyAgICAgICAgYyA9IGF2aW9fcjgoYmMpOworCisg
ICAgICAgIGlmIChhdmlvX2Zlb2YoYmMpKQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfRU9G
OworCisgICAgICAgIHN5bmNbc3ArKyAmIDNdID0gYzsKKyAgICB9IHdoaWxlIChpKysgPCBNQVhf
T0dHX1BBR0VfU0laRSk7CisKKyAgICBpZiAoaSA+PSBNQVhfT0dHX1BBR0VfU0laRSkgeworICAg
ICAgICBhdl9sb2cocywgQVZfTE9HX0lORk8sICJjYW5ub3QgZmluZCBzeW5jIHdvcmRcbiIpOwor
ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICB9CisKKyAgICAvKiAweDRm
YTliMDVmID0gYXZfY3JjKEFWX0NSQ18zMl9JRUVFLCAweDAsICJPZ2dTIiwgNCkgKi8KKyAgICBm
ZmlvX2luaXRfY2hlY2tzdW0oYmMsIGZmX2NyYzA0QzExREI3X3VwZGF0ZSwgMHg0ZmE5YjA1Zik7
CisKKyAgICAvKiBUbyByZXdpbmQgaWYgY2hlY2tzdW0gaXMgYmFkL2NoZWNrIG1hZ2ljIG9uIHN3
aXRjaGVzIC0gdGhpcyBpcyB0aGUgbWF4CisgICAgICogcGFja2V0IHNpemUgKi8KKyAgICByZXQg
PSBmZmlvX2Vuc3VyZV9zZWVrYmFjayhiYywgTUFYX09HR19QQUdFX1NJWkUpOworICAgIGlmIChy
ZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworICAgIHBhZ2UtPnN0YXJ0X3BvcyA9IGF2aW9f
dGVsbChiYyk7CisKKyAgICBwYWdlLT52ZXJzaW9uID0gYXZpb19yOChiYyk7CisgICAgcGFnZS0+
ZmxhZ3MgICA9IGF2aW9fcjgoYmMpOworICAgIHBhZ2UtPmdwICAgICAgPSBhdmlvX3JsNjQoYmMp
OworICAgIHBhZ2UtPnNlcmlhbCAgPSBhdmlvX3JsMzIoYmMpOworICAgIGF2aW9fcmwzMihiYyk7
IC8qIHNlcSAqLworCisgICAgY3JjX3RtcCAgICA9IGZmaW9fZ2V0X2NoZWNrc3VtKGJjKTsKKyAg
ICBwYWdlLT5jcmMgID0gYXZpb19yYjMyKGJjKTsKKyAgICBjcmNfdG1wICAgID0gZmZfY3JjMDRD
MTFEQjdfdXBkYXRlKGNyY190bXAsICh1aW50OF90WzRdKXswfSwgNCk7CisgICAgZmZpb19pbml0
X2NoZWNrc3VtKGJjLCBmZl9jcmMwNEMxMURCN191cGRhdGUsIGNyY190bXApOworCisgICAgcGFn
ZS0+bnNlZ3MgICAgPSBhdmlvX3I4KGJjKTsKKyAgICBwYWdlLT5wYWdlX3BvcyA9IGF2aW9fdGVs
bChiYykgLSAyNzsKKworICAgIHJldCA9IGF2aW9fcmVhZChiYywgcGFnZS0+c2VnbWVudHMsIHBh
Z2UtPm5zZWdzKTsKKyAgICBpZiAocmV0IDwgcGFnZS0+bnNlZ3MpCisgICAgICAgIHJldHVybiBy
ZXQgPCAwID8gcmV0IDogQVZFUlJPUl9FT0Y7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgcGFnZS0+
bnNlZ3M7IGkrKykKKyAgICAgICAgc2l6ZSArPSBwYWdlLT5zZWdtZW50c1tpXTsKKworICAgIHBh
Z2UtPnBheWxvYWRfc2l6ZSA9IHNpemU7CisgICAgcGFnZS0+cGFnZV9zaXplICAgID0gYXZpb190
ZWxsKGJjKSAtIHBhZ2UtPnBhZ2VfcG9zICsgc2l6ZTsKKworICAgIHJldHVybiBzaXplOworfQor
CitpbnQgZmZfb2dnX3ZlcmlmeV9wYWdlKEFWRm9ybWF0Q29udGV4dCAqcywgY29uc3QgT2dnUGFn
ZSAqcGFnZSkKK3sKKyAgICBBVklPQ29udGV4dCAqYmMgPSBzLT5wYjsKKyAgICB1aW50OF90IGJ1
ZlsxMDI0XTsKKyAgICBpbnQgcmVtYWluaW5nID0gcGFnZS0+cGF5bG9hZF9zaXplOworCisgICAg
LyogVGhlIHBheWxvYWQgaGFzIHRvIGJlIHJlYWQgcmF0aGVyIHRoYW4gc2tpcHBlZDogdGhlIHJ1
bm5pbmcgY2hlY2tzdW0gaXMKKyAgICAgKiBvbmx5IGZlZCBieSBkYXRhIGdvaW5nIHRocm91Z2gg
dGhlIGJ1ZmZlci4gKi8KKyAgICB3aGlsZSAocmVtYWluaW5nID4gMCkgeworICAgICAgICBpbnQg
biAgID0gRkZNSU4ocmVtYWluaW5nLCAoaW50KXNpemVvZihidWYpKTsKKyAgICAgICAgaW50IHJl
dCA9IGF2aW9fcmVhZChiYywgYnVmLCBuKTsKKyAgICAgICAgaWYgKHJldCA8IG4pCisgICAgICAg
ICAgICByZXR1cm4gcmV0IDwgMCA/IHJldCA6IEFWRVJST1JfRU9GOworICAgICAgICByZW1haW5p
bmcgLT0gbjsKKyAgICB9CisKKyAgICBpZiAocGFnZS0+Y3JjIF4gZmZpb19nZXRfY2hlY2tzdW0o
YmMpKQorICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgIC8qIENoZWNr
ZWQgYWZ0ZXIgdGhlIGNoZWNrc3VtIHNvIHRoYXQgYSB2YWxpZCBwYWdlIHdpdGggYW4gdW5leHBl
Y3RlZAorICAgICAqIHZlcnNpb24gaXMgc3RpbGwgcmVwb3J0ZWQgYXMgYSB2ZXJzaW9uIHByb2Js
ZW0gcmF0aGVyIHRoYW4gYXMgZ2FyYmFnZS4gKi8KKyAgICBpZiAocGFnZS0+dmVyc2lvbikKKyAg
ICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisKKyAgICByZXR1cm4gMDsKK30KZGlm
ZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L29nZy9wYXJzZXIuaCBiL2xpYmF2Zm9ybWF0L29nZy9wYXJz
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jZDhhN2Q0OTBmCi0t
LSAvZGV2L251bGwKKysrIGIvbGliYXZmb3JtYXQvb2dnL3BhcnNlci5oCkBAIC0wLDAgKzEsODEg
QEAKKy8qKgorICAgIENvcHlyaWdodCAoQykgMjAwNSAgTWljaGFlbCBBaGxiZXJnLCBNw6VucyBS
dWxsZ8OlcmQKKyAgICBDb3B5cmlnaHQgKEMpIDIwMjUgIFJvbWFpbiBCZWF1eGlzCisKKyAgICBQ
ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv
bgorICAgIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk
b2N1bWVudGF0aW9uCisgICAgZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUg
U29mdHdhcmUgd2l0aG91dAorICAgIHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p
dGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LAorICAgIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp
c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcworICAgIG9mIHRo
ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz
CisgICAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9uczoKKworICAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIHNoYWxsIGJlCisgICAgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFu
dGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKKyAgICBUSEUgU09GVFdBUkUgSVMgUFJP
VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKyAgICBFWFBSRVNT
IE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg
T0YKKyAgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFORAorICAgIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMg
T1IgQ09QWVJJR0hUCisgICAgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF
UyBPUiBPVEhFUiBMSUFCSUxJVFksCisgICAgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB
Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgICAgT1VUIE9GIE9SIElOIENP
Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICAgIERFQUxJ
TkdTIElOIFRIRSBTT0ZUV0FSRS4KKyoqLworCisjaWZuZGVmIEFWRk9STUFUX09HR19QQVJTRVJf
SAorI2RlZmluZSBBVkZPUk1BVF9PR0dfUEFSU0VSX0gKKworI2luY2x1ZGUgPHN0ZGludC5oPgor
CisjaW5jbHVkZSAibGliYXZmb3JtYXQvYXZmb3JtYXQuaCIKKworLyoqIExhcmdlc3QgcG9zc2li
bGUgT2dnIHBhZ2U6IDI3IGJ5dGUgaGVhZGVyLCAyNTUgc2VnbWVudHMgb2YgMjU1IGJ5dGVzLiAq
LworI2RlZmluZSBNQVhfT0dHX1BBR0VfU0laRSA2NTMwNworCisvKioKKyAqIEEgc2luZ2xlIE9n
ZyBwYWdlLgorICovCit0eXBlZGVmIHN0cnVjdCBPZ2dQYWdlIHsKKyAgICBpbnQ2NF90IHBhZ2Vf
cG9zOyAgICAgICAvLy88IGZpbGUgb2Zmc2V0IG9mIHRoZSBjYXB0dXJlIHBhdHRlcm4KKyAgICBp
bnQ2NF90IHBhZ2Vfc2l6ZTsgICAgICAvLy88IHRvdGFsIHBhZ2Ugc2l6ZSwgaGVhZGVyIGFuZCBw
YXlsb2FkCisgICAgaW50NjRfdCBzdGFydF9wb3M7ICAgICAgLy8vPCBmaWxlIG9mZnNldCBqdXN0
IHBhc3QgdGhlIGNhcHR1cmUgcGF0dGVybgorICAgIHVpbnQ2NF90IGdwOyAgICAgICAgICAgIC8v
LzwgZ3JhbnVsZSBwb3NpdGlvbgorICAgIHVpbnQzMl90IHNlcmlhbDsgICAgICAgIC8vLzwgc2Vy
aWFsIG51bWJlciBvZiB0aGUgb3duaW5nIGxvZ2ljYWwgYml0c3RyZWFtCisgICAgdWludDMyX3Qg
Y3JjOyAgICAgICAgICAgLy8vPCBjaGVja3N1bSBzdG9yZWQgaW4gdGhlIHBhZ2UgaGVhZGVyCisg
ICAgaW50IHBheWxvYWRfc2l6ZTsgICAgICAgLy8vPCBzdW0gb2YgdGhlIHNlZ21lbnQgdGFibGUg
ZW50cmllcworICAgIGludCBuc2VnczsgICAgICAgICAgICAgIC8vLzwgbnVtYmVyIG9mIGVudHJp
ZXMgaW4gdGhlIHNlZ21lbnQgdGFibGUKKyAgICB1aW50OF90IHZlcnNpb247CisgICAgdWludDhf
dCBmbGFnczsKKyAgICB1aW50OF90IHNlZ21lbnRzWzI1NV07Cit9IE9nZ1BhZ2U7CisKKy8qKgor
ICogUmVhZCB0aGUgbmV4dCBwYWdlIGhlYWRlciBhdCBvciBhZnRlciB0aGUgY3VycmVudCBwb3Np
dGlvbi4KKyAqCisgKiBPbiBzdWNjZXNzIHRoZSBBVklPQ29udGV4dCBpcyBsZWZ0IHBvc2l0aW9u
ZWQgYXQgdGhlIGZpcnN0IHBheWxvYWQgYnl0ZSB3aXRoCisgKiB0aGUgcGFnZSBjaGVja3N1bSBh
cm1lZCwgc28gdGhhdCB0aGUgY2FsbGVyIGNhbiByZWFkIHRoZSBwYXlsb2FkIGFuZCBoYW5kIGl0
CisgKiB0byBmZl9vZ2dfdmVyaWZ5X3BhZ2UoKSBvciBjaGVjayBpdCBpdHNlbGYuCisgKgorICog
QHBhcmFtIHBhZ2UgICAgICAgZmlsbGVkIGluIHdpdGggdGhlIHBhZ2UgaGVhZGVyIGFuZCBzZWdt
ZW50IHRhYmxlCisgKiBAcGFyYW0gcmVzeW5jX3BvcyBpbi9vdXQgb2Zmc2V0IG9mIHRoZSBsYXN0
IGtub3duIGdvb2QgcGFnZSwgdXNlZCBvbmNlIHRvCisgKiAgICAgICAgICAgICAgICAgICByZXN0
YXJ0IHRoZSBzZWFyY2ggcGFzdCBhIGJhZCBwYWdlOyBzZXQgdG8gLTEgd2hlbgorICogICAgICAg
ICAgICAgICAgICAgY29uc3VtZWQuIE1heSBiZSBOVUxMLCBpbiB3aGljaCBjYXNlIG5vIHN1Y2gg
aGludCBpcyB1c2VkLgorICoKKyAqIEByZXR1cm4gdGhlIHBheWxvYWQgc2l6ZSBpbiBieXRlcywg
b3IgYSBuZWdhdGl2ZSBBVkVSUk9SCisgKi8KK2ludCBmZl9vZ2dfc3luY19wYWdlKEFWRm9ybWF0
Q29udGV4dCAqcywgT2dnUGFnZSAqcGFnZSwgaW50NjRfdCAqcmVzeW5jX3Bvcyk7CisKKy8qKgor
ICogQ29uc3VtZSB0aGUgcGF5bG9hZCBvZiB0aGUgcGFnZSBqdXN0IHJldHVybmVkIGJ5IGZmX29n
Z19zeW5jX3BhZ2UoKSBhbmQKKyAqIHZhbGlkYXRlIHRoZSBwYWdlIGFnYWluc3QgaXRzIHN0b3Jl
ZCBjaGVja3N1bSBhbmQgdmVyc2lvbi4KKyAqCisgKiBDYWxsZXJzIHRoYXQgd2FudCB0aGUgcGF5
bG9hZCBzaG91bGQgcmVhZCBpdCB0aGVtc2VsdmVzIGFuZCBjb21wYXJlCisgKiBmZmlvX2dldF9j
aGVja3N1bSgpIGFnYWluc3QgcGFnZS0+Y3JjIGluc3RlYWQgb2YgY2FsbGluZyB0aGlzLgorICoK
KyAqIEByZXR1cm4gMCBpZiB0aGUgcGFnZSBpcyB2YWxpZCwgQVZFUlJPUl9JTlZBTElEREFUQSBp
ZiBpdCBpcyBub3QsCisgKiAgICAgICAgIG9yIGFub3RoZXIgbmVnYXRpdmUgQVZFUlJPUiBvbiBy
ZWFkIGZhaWx1cmUKKyAqLworaW50IGZmX29nZ192ZXJpZnlfcGFnZShBVkZvcm1hdENvbnRleHQg
KnMsIGNvbnN0IE9nZ1BhZ2UgKnBhZ2UpOworCisjZW5kaWYgLyogQVZGT1JNQVRfT0dHX1BBUlNF
Ul9IICovCi0tIAoyLjUyLjAKCgpGcm9tIDU2MGMwNGQ1NTM2ZmUwOGM4NWEzNTEzNTVlODZjN2Zm
MTZmMjNmMzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFJvbWFpbiBCZWF1eGlzIDxy
b21haW4uYmVhdXhpc0BnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMjggSnVsIDIwMjYgMTY6NDA6Mzcg
LTA1MDAKU3ViamVjdDogW1BBVENIIDA1LzEwXSBhdmZvcm1hdC9vZ2c6IGFkZCBjaGFpbmVkIHN0
cmVhbSBwYXJzZXIKCk9nZyBnaXZlcyBubyBpbmRleCBvZiBpdHMgbGlua3MsIHNvIGZmX29nZ19w
YXJzZV9jaGFpbigpIGZpbmRzIHRoZW0gYnkKYmlzZWN0aW9uOiBmb3IgZXZlcnkgc2VyaWFsIHRo
ZSBFT1MgcGFnZSBsaWVzIGluIGFuIGludGVydmFsIHRoYXQgcGFnZXMKb2YgdGhhdCBzZXJpYWwg
YW5kIGV2aWRlbmNlIG9mIGxhdGVyIGxpbmtzIG5hcnJvdyB1bnRpbCB0aGV5IG1lZXQuCgpQYWdl
cyByZWFjaGVkIGJ5IHNlZWtpbmcgYXJlIGNoZWNrc3VtbWVkIGJlZm9yZSBiZWluZyBiZWxpZXZl
ZCwgYW5kCm5vdGhpbmcgY2FsbHMgaXQgeWV0LCBzbyBubyB0ZXN0IG1vdmVzLgotLS0KIGxpYmF2
Zm9ybWF0L01ha2VmaWxlICAgIHwgICAxICsKIGxpYmF2Zm9ybWF0L29nZy9jaGFpbi5jIHwgNzcw
ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYmF2Zm9ybWF0L29n
Zy9jaGFpbi5oIHwgIDkxICsrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDg2MiBpbnNlcnRpb25zKCsp
CiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmb3JtYXQvb2dnL2NoYWluLmMKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBsaWJhdmZvcm1hdC9vZ2cvY2hhaW4uaAoKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0
L01ha2VmaWxlIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKaW5kZXggZTUxNmQxNDFkYS4uMDE1NGUw
ODEyYSAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvTWFrZWZpbGUKKysrIGIvbGliYXZmb3JtYXQv
TWFrZWZpbGUKQEAgLTQzOSw2ICs0MzksNyBAQCBPQkpTLSQoQ09ORklHX0FWMV9ERU1VWEVSKSAg
ICAgICAgICAgICAgICs9IGF2MWRlYy5vCiBPQkpTLSQoQ09ORklHX09CVV9ERU1VWEVSKSAgICAg
ICAgICAgICAgICs9IGF2MWRlYy5vCiBPQkpTLSQoQ09ORklHX09CVV9NVVhFUikgICAgICAgICAg
ICAgICAgICs9IHJhd2VuYy5vCiBPQkpTLSQoQ09ORklHX09HR19ERU1VWEVSKSAgICAgICAgICAg
ICAgICs9IG9nZy9wYXJzZXIubyAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvZ2cvY2hhaW4ubyAgICAgICAgIFwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2dnL2RlY29kZXIubyAgICAgICBcCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9nZy9wYXJzZWRpcmFjLm8gICAg
XAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZ2cvcGFyc2Vm
bGFjLm8gICAgIFwKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L29nZy9jaGFpbi5jIGIvbGliYXZm
b3JtYXQvb2dnL2NoYWluLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u
MTQ4ZjQ0MzgxYQotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Zm9ybWF0L29nZy9jaGFpbi5jCkBA
IC0wLDAgKzEsNzcwIEBACisvKioKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDUgIE1pY2hhZWwgQWhs
YmVyZywgTcOlbnMgUnVsbGfDpXJkCisgICAgQ29weXJpZ2h0IChDKSAyMDI1ICBSb21haW4gQmVh
dXhpcworCisgICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us
IHRvIGFueSBwZXJzb24KKyAgICBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k
IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbgorICAgIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRv
IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQKKyAgICByZXN0cmljdGlvbiwgaW5jbHVkaW5n
IHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwKKyAgICBtb2RpZnks
IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3Bp
ZXMKKyAgICBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo
ZSBTb2Z0d2FyZSBpcworICAgIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnM6CisKKyAgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg
dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQorICAgIGluY2x1ZGVkIGluIGFsbCBjb3Bp
ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisgICAgVEhFIFNP
RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs
CisgICAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI
RSBXQVJSQU5USUVTIE9GCisgICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBTkQKKyAgICBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVAorICAgIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg
Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLAorICAgIFdIRVRIRVIgSU4gQU4gQUNU
SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorICAgIE9V
VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI
RVIKKyAgICBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisqKi8KKworI2luY2x1ZGUgImxpYmF2
Zm9ybWF0L29nZy9jaGFpbi5oIgorCisjaW5jbHVkZSAibGliYXZmb3JtYXQvYXZmb3JtYXQuaCIK
KyNpbmNsdWRlICJsaWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5oIgorI2luY2x1ZGUgImxpYmF2Zm9y
bWF0L29nZy9wYXJzZXIuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvbWVtLmgiCisKKy8qCisgKiBD
aGFpbmVkIHN0cmVhbSBwYXJzZXIuCisgKgorICogT2dnIGdpdmVzIG5vIGluZGV4IG9mIGl0cyBs
aW5rcywgc28gZWFjaCBiaXRzdHJlYW0ncyBFT1MgcGFnZSBpcyBmb3VuZCBieQorICogYmlzZWN0
aW9uIHJhdGhlciB0aGFuIGJ5IHNjYW5uaW5nLiBGb3IgZXZlcnkgc2VyaWFsIHRoZSBFT1MgcGFn
ZSBsaWVzIGluCisgKiBbZW9zX2xvd2VyLCBlb3NfdXBwZXJdOiBhIHBhZ2Ugb2YgdGhhdCBzZXJp
YWwgcmFpc2VzIHRoZSBsb3dlciBib3VuZCBwYXN0CisgKiBpdCwgZXZpZGVuY2Ugb2YgYSBsYXRl
ciBsaW5rIGxvd2VycyB0aGUgdXBwZXIgb25lLCBhbmQgdGhlIHR3byBtZWV0IG9uIHRoZQorICog
RU9TIHBhZ2UuCisgKi8KKworI2RlZmluZSBNSU5fT0dHX1NFQVJDSF9SQU5HRSAxMDI0CisKKy8q
IEJpc2VjdGluZyBhIHN0cmVhbSBjb3N0cyBPKGxvZzIoZmlsZSBzaXplKSkgcGFnZSByZWFkcywg
c28gYSBmZXcgZG96ZW4gYXQKKyAqIG1vc3QuIEFueXRoaW5nIGJleW9uZCB0aGlzIHBlciBzdHJl
YW0gbWVhbnMgdGhlIGZpbGUgaXMgbm90IG1ha2luZyBwcm9ncmVzcworICogYW5kIHRoZSByZXN1
bHRzIGFyZSByZXBvcnRlZCBhcyB0cnVuY2F0ZWQuICovCisjZGVmaW5lIE1BWF9PR0dfUEFHRVNf
UEVSX1NUUkVBTSA1MTIKKworLyogQ29uc2VjdXRpdmUgZmFsc2UgY2FwdHVyZSBwYXR0ZXJucyB0
b2xlcmF0ZWQgYmVmb3JlIGEgcmVnaW9uIGlzIGdpdmVuIHVwCisgKiBvbi4gRWFjaCByZXRyeSBy
ZXN1bWVzIHRoZSBzZWFyY2ggNCBieXRlcyBmdXJ0aGVyIGluLiAqLworI2RlZmluZSBNQVhfT0dH
X0ZBTFNFX1NZTkNTIDE2CisKK3R5cGVkZWYgc3RydWN0IE9nZ1N0cmVhbVN0YXRlIHsKKyAgICB1
aW50MzJfdCBzZXJpYWw7CisgICAgaW50IGxpbmtfaW5kZXg7ICAgICAgICAgLy8vPCBpbmRleCBv
ZiB0aGUgb3duaW5nIGxpbmssIC0xIHVudGlsIGl0cyBCT1MgcGFnZSBpcyBmb3VuZAorICAgIGlu
dDY0X3QgZW9zX2xvd2VyOyAgICAgIC8vLzwgdGhlIEVPUyBwYWdlIGxpZXMgaW4gW2Vvc19sb3dl
ciwgZW9zX3VwcGVyXQorICAgIGludDY0X3QgZW9zX3VwcGVyOworICAgIGludDY0X3QgbGFzdF9w
YWdlX3BvczsgIC8vLzwgZnVydGhlc3QgcGFnZSBzZWVuIGZvciB0aGlzIHNlcmlhbAorICAgIGlu
dCBjb21wbGV0ZTsgICAgICAgICAgIC8vLzwgdGhlIEVPUyBwYWdlIGhhcyBiZWVuIGZvdW5kLCBv
ciB0aGUgc3RyZWFtIHdhcyBnaXZlbiB1cCBvbgorICAgIGludCBub19lb3M7CisgICAgaW50IGhh
dmVfZmlyc3RfcGFnZTsKKyAgICBpbnQgaGF2ZV9sYXN0X3BhZ2U7CisgICAgT2dnUGFnZSBmaXJz
dF9wYWdlOworICAgIE9nZ1BhZ2UgbGFzdF9wYWdlOworfSBPZ2dTdHJlYW1TdGF0ZTsKKwordHlw
ZWRlZiBzdHJ1Y3QgT2dnUGFyc2VyIHsKKyAgICBBVkZvcm1hdENvbnRleHQgKnM7CisgICAgaW50
NjRfdCBmaWxlX3NpemU7CisKKyAgICAvKiBGbGF0LCBzZXJpYWwga2V5ZWQuIEluZGl2aWR1YWxs
eSBhbGxvY2F0ZWQgc28gdGhhdCBhIHN0YXRlIHN0YXlzIHZhbGlkCisgICAgICogd2hpbGUgdGhl
IGFycmF5IGdyb3dzIHVuZGVybmVhdGggaXQuICovCisgICAgT2dnU3RyZWFtU3RhdGUgKipzdHJl
YW1zOworICAgIGludCBuYl9zdHJlYW1zOworCisgICAgLyogT2Zmc2V0cyBhdCB3aGljaCBhIGxp
bmsgaGVhZGVyIGlzIGtub3duIHRvIHN0YXJ0LiBMaW5rcyBhcmUgZGlzY292ZXJlZAorICAgICAq
IGFzIEVPUyBwYWdlcyB0dXJuIHVwLCBzbyB0aGlzIGRvdWJsZXMgYXMgdGhlIGRpc2NvdmVyeSB3
b3JrbGlzdDoKKyAgICAgKiBldmVyeXRoaW5nIGJlbG93IG5iX3NjYW5uZWRfbGlua3MgaGFzIGJl
ZW4gcmVhZC4gKi8KKyAgICBpbnQ2NF90ICpsaW5rX29mZnNldHM7CisgICAgaW50IG5iX2xpbmtf
b2Zmc2V0czsKKyAgICBpbnQgbmJfc2Nhbm5lZF9saW5rczsKKworICAgIGludCBuYl9saW5rczsK
KworICAgIE9nZ1BhcnNlclN0YXRzIHN0YXRzOworfSBPZ2dQYXJzZXI7CisKKy8qKiBXaGljaCBz
aWRlIG9mIGEgc3RyZWFtJ3MgRU9TIHBhZ2UgYSBwcm9iZSBsYW5kZWQgb24uICovCitlbnVtIE9n
Z1ZlcmRpY3QgeworICAgIE9HR19WRVJESUNUX1VOS05PV04sICAgIC8vLzwgdGhlIHBhZ2Ugc2F5
cyBub3RoaW5nIGVpdGhlciB3YXkKKyAgICBPR0dfVkVSRElDVF9CRUZPUkVfRU9TLAorICAgIE9H
R19WRVJESUNUX0FGVEVSX0VPUywKK307CisKK3N0YXRpYyBpbnQgb2dnX3BhcnNlcl9zZWVrKE9n
Z1BhcnNlciAqcGFyc2VyLCBpbnQ2NF90IG9mZnNldCkKK3sKKyAgICBpbnQ2NF90IHBvcyA9IGF2
aW9fc2VlayhwYXJzZXItPnMtPnBiLCBvZmZzZXQsIFNFRUtfU0VUKTsKKworICAgIGlmIChwb3Mg
PCAwKQorICAgICAgICByZXR1cm4gcG9zOworCisgICAgcGFyc2VyLT5zdGF0cy5uYl9zZWVrcysr
OworICAgIHJldHVybiAwOworfQorCisvKiBUaGUgc2VyaWFsIGFuZCBsaW5rIG9mZnNldCBsb29r
dXBzIGJlbG93IGFyZSBsaW5lYXIgc2NhbnMuIEZpbGVzIGhhdmUgYQorICogaGFuZGZ1bCBvZiBs
aW5rcyBpbiBwcmFjdGljZTsgdmVyeSBsb25nIGNoYWlucyB3b3VsZCB3YW50IHRoZXNlIHNvcnRl
ZCBvcgorICogaGFzaGVkLiAqLworc3RhdGljIE9nZ1N0cmVhbVN0YXRlICpvZ2dfcGFyc2VyX2Zp
bmRfc3RyZWFtKE9nZ1BhcnNlciAqcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNlcmlhbCkKK3sKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IHBhcnNlci0+bmJfc3RyZWFtczsgaSsrKQorICAgICAgICBpZiAocGFyc2VyLT5zdHJl
YW1zW2ldLT5zZXJpYWwgPT0gc2VyaWFsKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlci0+c3Ry
ZWFtc1tpXTsKKworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgT2dnU3RyZWFtU3RhdGUg
Km9nZ19wYXJzZXJfZmluZF9vcl9jcmVhdGVfc3RyZWFtKE9nZ1BhcnNlciAqcGFyc2VyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBzZXJpYWwpCit7CisgICAgT2dnU3RyZWFtU3RhdGUgKnN0ID0gb2dnX3BhcnNlcl9maW5k
X3N0cmVhbShwYXJzZXIsIHNlcmlhbCk7CisgICAgT2dnU3RyZWFtU3RhdGUgKip0bXA7CisKKyAg
ICBpZiAoc3QpCisgICAgICAgIHJldHVybiBzdDsKKworICAgIHRtcCA9IGF2X3JlYWxsb2NfYXJy
YXkocGFyc2VyLT5zdHJlYW1zLCBwYXJzZXItPm5iX3N0cmVhbXMgKyAxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZW9mKCpwYXJzZXItPnN0cmVhbXMpKTsKKyAgICBpZiAoIXRtcCkK
KyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcGFyc2VyLT5zdHJlYW1zID0gdG1wOworCisgICAg
c3QgPSBhdl9tYWxsb2N6KHNpemVvZigqc3QpKTsKKyAgICBpZiAoIXN0KQorICAgICAgICByZXR1
cm4gTlVMTDsKKworICAgIHN0LT5zZXJpYWwgICAgID0gc2VyaWFsOworICAgIHN0LT5saW5rX2lu
ZGV4ID0gLTE7CisgICAgc3QtPmVvc191cHBlciAgPSBwYXJzZXItPmZpbGVfc2l6ZTsKKworICAg
IHBhcnNlci0+c3RyZWFtc1twYXJzZXItPm5iX3N0cmVhbXMrK10gPSBzdDsKKworICAgIHJldHVy
biBzdDsKK30KKworc3RhdGljIGludCBvZ2dfcXVldWVfbGluayhPZ2dQYXJzZXIgKnBhcnNlciwg
aW50NjRfdCBvZmZzZXQpCit7CisgICAgaW50NjRfdCAqdG1wOworCisgICAgaWYgKG9mZnNldCA8
IDAgfHwgb2Zmc2V0ID49IHBhcnNlci0+ZmlsZV9zaXplKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyc2VyLT5uYl9saW5rX29mZnNldHM7IGkrKykKKyAg
ICAgICAgaWYgKHBhcnNlci0+bGlua19vZmZzZXRzW2ldID09IG9mZnNldCkKKyAgICAgICAgICAg
IHJldHVybiAwOworCisgICAgdG1wID0gYXZfcmVhbGxvY19hcnJheShwYXJzZXItPmxpbmtfb2Zm
c2V0cywgcGFyc2VyLT5uYl9saW5rX29mZnNldHMgKyAxLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZW9mKCpwYXJzZXItPmxpbmtfb2Zmc2V0cykpOworICAgIGlmICghdG1wKQorICAg
ICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAgcGFyc2VyLT5saW5rX29mZnNldHMg
PSB0bXA7CisgICAgcGFyc2VyLT5saW5rX29mZnNldHNbcGFyc2VyLT5uYl9saW5rX29mZnNldHMr
K10gPSBvZmZzZXQ7CisKKyAgICByZXR1cm4gMDsKK30KKworLyoqCisgKiBUaGUgb25seSBwbGFj
ZSBhIHBhZ2UgY2hhbmdlcyBwYXJzZXIgc3RhdGUsIHNvIHRoYXQgcmVhZGluZyBvbmUgaGFzIG5v
CisgKiBvdGhlciBzaWRlIGVmZmVjdC4KKyAqLworc3RhdGljIGludCBvZ2dfb2JzZXJ2ZV9wYWdl
KE9nZ1BhcnNlciAqcGFyc2VyLCBjb25zdCBPZ2dQYWdlICpwYWdlKQoreworICAgIE9nZ1N0cmVh
bVN0YXRlICpzdCA9IG9nZ19wYXJzZXJfZmluZF9vcl9jcmVhdGVfc3RyZWFtKHBhcnNlciwgcGFn
ZS0+c2VyaWFsKTsKKworICAgIGlmICghc3QpCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01F
TSk7CisKKyAgICBzdC0+bGFzdF9wYWdlX3BvcyA9IEZGTUFYKHN0LT5sYXN0X3BhZ2VfcG9zLCBw
YWdlLT5wYWdlX3Bvcyk7CisKKyAgICBpZiAocGFnZS0+ZmxhZ3MgJiBPR0dfRkxBR19CT1MgJiYg
IXN0LT5oYXZlX2ZpcnN0X3BhZ2UpIHsKKyAgICAgICAgc3QtPmZpcnN0X3BhZ2UgICAgICA9ICpw
YWdlOworICAgICAgICBzdC0+aGF2ZV9maXJzdF9wYWdlID0gMTsKKyAgICB9CisKKyAgICBpZiAo
cGFnZS0+ZmxhZ3MgJiBPR0dfRkxBR19FT1MpIHsKKyAgICAgICAgc3QtPmVvc19sb3dlciAgICAg
ID0gc3QtPmVvc191cHBlciA9IHBhZ2UtPnBhZ2VfcG9zOworICAgICAgICBzdC0+bGFzdF9wYWdl
ICAgICAgPSAqcGFnZTsKKyAgICAgICAgc3QtPmhhdmVfbGFzdF9wYWdlID0gMTsKKyAgICAgICAg
c3QtPmNvbXBsZXRlICAgICAgID0gMTsKKworICAgICAgICAvKiBBIGxpbmsgYm91bmRhcnkgaXMg
ZXhhY3RseSBhbiBFT1MgcGFnZSBmb2xsb3dlZCBieSB0aGUgbmV4dCBsaW5rJ3MKKyAgICAgICAg
ICogQk9TIHBhZ2VzLCBzbyB0aGlzIGlzIHdoZXJlIHRoZSBuZXh0IGxpbmsgc3RhcnRzLiAqLwor
ICAgICAgICByZXR1cm4gb2dnX3F1ZXVlX2xpbmsocGFyc2VyLCBwYWdlLT5wYWdlX3BvcyArIHBh
Z2UtPnBhZ2Vfc2l6ZSk7CisgICAgfQorCisgICAgc3QtPmVvc19sb3dlciA9IEZGTUFYKHN0LT5l
b3NfbG93ZXIsIHBhZ2UtPnBhZ2VfcG9zICsgcGFnZS0+cGFnZV9zaXplKTsKKworICAgIHJldHVy
biAwOworfQorCitzdGF0aWMgaW50IG9nZ19idWRnZXRfZXhoYXVzdGVkKE9nZ1BhcnNlciAqcGFy
c2VyKQoreworICAgIHJldHVybiBwYXJzZXItPnN0YXRzLm5iX3BhZ2VzX3JlYWQgPgorICAgICAg
ICAgICAoaW50NjRfdClNQVhfT0dHX1BBR0VTX1BFUl9TVFJFQU0gKiAocGFyc2VyLT5uYl9zdHJl
YW1zICsgMSk7Cit9CisKKy8qKgorICogVGhlIG9ubHkgd2F5IHRoZSBwYXJzZXIgcmVhZHMgYSBw
YWdlLiBVbmxpa2UgdGhlIGRlbXV4ZXIsIHdoaWNoIHJlYWRzCisgKiBmb3J3YXJkIGZyb20gYSBr
bm93biBnb29kIHBhZ2UsIGEgYmlzZWN0aW9uIGxhbmRzIG9uIGFyYml0cmFyeSBvZmZzZXRzLAor
ICogd2hlcmUgYSBjYXB0dXJlIHBhdHRlcm4gaW5zaWRlIHBhY2tldCBwYXlsb2FkIGlzIGEgcmVh
bCBwb3NzaWJpbGl0eSwgc28KKyAqIGV2ZXJ5IHBhZ2UgaXMgY2hlY2tzdW1tZWQgYmVmb3JlIGl0
IGlzIGJlbGlldmVkLgorICovCitzdGF0aWMgaW50IG9nZ19yZWFkX3BhZ2UoT2dnUGFyc2VyICpw
YXJzZXIsIE9nZ1BhZ2UgKnBhZ2UpCit7CisgICAgQVZGb3JtYXRDb250ZXh0ICpzID0gcGFyc2Vy
LT5zOworICAgIGludCBmYWxzZV9zeW5jcyA9IDA7CisgICAgaW50IHJldDsKKworICAgIHdoaWxl
ICgxKSB7CisgICAgICAgIGlmIChvZ2dfYnVkZ2V0X2V4aGF1c3RlZChwYXJzZXIpKSB7CisgICAg
ICAgICAgICBwYXJzZXItPnN0YXRzLnRydW5jYXRlZCA9IDE7CisgICAgICAgICAgICByZXR1cm4g
QVZFUlJPUl9FT0Y7CisgICAgICAgIH0KKworICAgICAgICByZXQgPSBmZl9vZ2dfc3luY19wYWdl
KHMsIHBhZ2UsIE5VTEwpOworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVy
biByZXQ7CisKKyAgICAgICAgcGFyc2VyLT5zdGF0cy5uYl9wYWdlc19yZWFkKys7CisKKyAgICAg
ICAgcmV0ID0gZmZfb2dnX3ZlcmlmeV9wYWdlKHMsIHBhZ2UpOworICAgICAgICBpZiAocmV0ID49
IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKHJldCAhPSBBVkVSUk9SX0lOVkFM
SUREQVRBKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKworICAgICAgICBpZiAoKytmYWxzZV9z
eW5jcyA+IE1BWF9PR0dfRkFMU0VfU1lOQ1MpCisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9J
TlZBTElEREFUQTsKKworICAgICAgICAvKiBSZXN1bWUgdGhlIHNlYXJjaCBqdXN0IHBhc3QgdGhl
IGNhcHR1cmUgcGF0dGVybiB0aGF0IG1pc2ZpcmVkLiAqLworICAgICAgICByZXQgPSBvZ2dfcGFy
c2VyX3NlZWsocGFyc2VyLCBwYWdlLT5zdGFydF9wb3MpOworICAgICAgICBpZiAocmV0IDwgMCkK
KyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgcmV0dXJuIG9nZ19vYnNlcnZl
X3BhZ2UocGFyc2VyLCBwYWdlKTsKK30KKworLyoqIFJlYWQgdGhlIHJ1biBvZiBCT1MgcGFnZXMg
YXQgYSBsaW5rJ3MgaGVhZCBhbmQgZ3JvdXAgd2hhdCB0aGV5IG9wZW4uICovCitzdGF0aWMgaW50
IG9nZ19zY2FuX2xpbmtfaGVhZGVyKE9nZ1BhcnNlciAqcGFyc2VyLCBpbnQ2NF90IG9mZnNldCkK
K3sKKyAgICBpbnQgbGlua19pbmRleCA9IHBhcnNlci0+bmJfbGlua3M7CisgICAgaW50IG5iX2Jv
cyA9IDA7CisgICAgT2dnUGFnZSBwYWdlOworICAgIGludCByZXQ7CisKKyAgICByZXQgPSBvZ2df
cGFyc2VyX3NlZWsocGFyc2VyLCBvZmZzZXQpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICBy
ZXR1cm4gcmV0OworCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgT2dnU3RyZWFtU3RhdGUgKnN0
OworCisgICAgICAgIHJldCA9IG9nZ19yZWFkX3BhZ2UocGFyc2VyLCAmcGFnZSk7CisgICAgICAg
IGlmIChyZXQgPT0gQVZFUlJPUl9FT0YgfHwgcmV0ID09IEFWRVJST1JfSU5WQUxJRERBVEEpCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKHJldCA8IDApCisgICAgICAgICAgICByZXR1
cm4gcmV0OworCisgICAgICAgIGlmICghKHBhZ2UuZmxhZ3MgJiBPR0dfRkxBR19CT1MpKQorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgc3QgPSBvZ2dfcGFyc2VyX2ZpbmRfc3RyZWFtKHBh
cnNlciwgcGFnZS5zZXJpYWwpOworICAgICAgICBpZiAoc3QgJiYgc3QtPmxpbmtfaW5kZXggPCAw
KSB7CisgICAgICAgICAgICBzdC0+bGlua19pbmRleCA9IGxpbmtfaW5kZXg7CisgICAgICAgICAg
ICBuYl9ib3MrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChuYl9ib3MpCisgICAgICAg
IHBhcnNlci0+bmJfbGlua3MrKzsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IG9n
Z19kcmFpbl9wZW5kaW5nX2xpbmtzKE9nZ1BhcnNlciAqcGFyc2VyKQoreworICAgIHdoaWxlIChw
YXJzZXItPm5iX3NjYW5uZWRfbGlua3MgPCBwYXJzZXItPm5iX2xpbmtfb2Zmc2V0cykgeworICAg
ICAgICBpbnQ2NF90IG9mZnNldCA9IHBhcnNlci0+bGlua19vZmZzZXRzW3BhcnNlci0+bmJfc2Nh
bm5lZF9saW5rcysrXTsKKyAgICAgICAgaW50IHJldCA9IG9nZ19zY2FuX2xpbmtfaGVhZGVyKHBh
cnNlciwgb2Zmc2V0KTsKKyAgICAgICAgaWYgKHJldCA8IDApCisgICAgICAgICAgICByZXR1cm4g
cmV0OworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKiogV2hpY2ggc2lkZSBvZiBzdCdz
IEVPUyBwYWdlIGEgcHJvYmUgbGFuZGVkIG9uLCBmcm9tIHRoYXQgcGFnZSBhbG9uZS4gKi8KK3N0
YXRpYyBlbnVtIE9nZ1ZlcmRpY3Qgb2dnX2NsYXNzaWZ5X3BhZ2UoT2dnUGFyc2VyICpwYXJzZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE9nZ1N0cmVh
bVN0YXRlICpzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgT2dnUGFnZSAqcGFnZSkKK3sKKyAgICBjb25zdCBPZ2dTdHJlYW1TdGF0ZSAqb3RoZXI7CisK
KyAgICBpZiAocGFnZS0+c2VyaWFsID09IHN0LT5zZXJpYWwpCisgICAgICAgIHJldHVybiBPR0df
VkVSRElDVF9CRUZPUkVfRU9TOworCisgICAgLyogQSBzZXJpYWwgYmVsb25naW5nIHRvIGFub3Ro
ZXIgbGluayBtZWFucyB0aGlzIGxpbmsgaXMgYWxyZWFkeSBvdmVyLgorICAgICAqIEEgc2VyaWFs
IHRoYXQgaXMgc3RpbGwgdW5rbm93biBoZXJlIGNhbiBvbmx5IGJlbG9uZyB0byBhIGxpbmsgd2hv
c2UKKyAgICAgKiBoZWFkZXIgaGFzIG5vdCBiZWVuIHJlYWQgeWV0LCB3aGljaCBpcyBsaWtld2lz
ZSBhIGxhdGVyIG9uZS4gKi8KKyAgICBvdGhlciA9IG9nZ19wYXJzZXJfZmluZF9zdHJlYW0ocGFy
c2VyLCBwYWdlLT5zZXJpYWwpOworICAgIGlmICghb3RoZXIgfHwgb3RoZXItPmxpbmtfaW5kZXgg
IT0gc3QtPmxpbmtfaW5kZXgpCisgICAgICAgIHJldHVybiBPR0dfVkVSRElDVF9BRlRFUl9FT1M7
CisKKyAgICAvKiBBIHNpYmxpbmcgb2YgdGhlIHNhbWUgbGluay4gQml0c3RyZWFtcyB3aXRoaW4g
YSBsaW5rIGRvIG5vdCBlbmQgYXQgdGhlCisgICAgICogc2FtZSBvZmZzZXQsIHNvIHRoaXMgc2F5
cyBub3RoaW5nIG9uIGl0cyBvd24uICovCisgICAgcmV0dXJuIE9HR19WRVJESUNUX1VOS05PV047
Cit9CisKKy8qKiBTZXR0bGUgYW4gYW1iaWd1b3VzIHNpYmxpbmcgcGFnZSBieSByZWFkaW5nIGZv
cndhcmQuICovCitzdGF0aWMgaW50IG9nZ19yZXNvbHZlX3NpYmxpbmcoT2dnUGFyc2VyICpwYXJz
ZXIsIGNvbnN0IE9nZ1N0cmVhbVN0YXRlICpzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBPZ2dQYWdlICpwYWdlLCBlbnVtIE9nZ1ZlcmRpY3QgKnZlcmRpY3QpCit7CisgICAgaW50
IHJldDsKKworICAgIHJldCA9IG9nZ19wYXJzZXJfc2VlayhwYXJzZXIsIHBhZ2UtPnBhZ2VfcG9z
ICsgcGFnZS0+cGFnZV9zaXplKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIHJl
dDsKKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIHJldCA9IG9nZ19yZWFkX3BhZ2UocGFyc2Vy
LCBwYWdlKTsKKyAgICAgICAgaWYgKHJldCA9PSBBVkVSUk9SX0VPRiB8fCByZXQgPT0gQVZFUlJP
Ul9JTlZBTElEREFUQSkgeworICAgICAgICAgICAgKnZlcmRpY3QgPSBPR0dfVkVSRElDVF9BRlRF
Ul9FT1M7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAocmV0
IDwgMCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisKKyAgICAgICAgLyogUGFzdCBldmVyeXRo
aW5nIHRoaXMgc3RyZWFtIGNvdWxkIHN0aWxsIG93bi4gKi8KKyAgICAgICAgaWYgKHBhZ2UtPnBh
Z2VfcG9zID4gc3QtPmVvc191cHBlcikgeworICAgICAgICAgICAgKnZlcmRpY3QgPSBPR0dfVkVS
RElDVF9BRlRFUl9FT1M7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChwYWdlLT5zZXJpYWwgPT0gc3QtPnNlcmlhbCkgeworICAgICAgICAgICAgKnZlcmRp
Y3QgPSBPR0dfVkVSRElDVF9CRUZPUkVfRU9TOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAocGFnZS0+ZmxhZ3MgJiBPR0dfRkxBR19CT1MpIHsKKyAgICAg
ICAgICAgICp2ZXJkaWN0ID0gT0dHX1ZFUkRJQ1RfQUZURVJfRU9TOworICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qKiBHaXZlIHVwIG9uIGFuIEVPUyBwYWdl
OyByZXBvcnQgdGhlIGZ1cnRoZXN0IHBhZ2Ugc2VlbiBhcyB0aGUgbGFzdC4gKi8KK3N0YXRpYyBp
bnQgb2dnX21hcmtfbm9fZW9zKE9nZ1BhcnNlciAqcGFyc2VyLCBPZ2dTdHJlYW1TdGF0ZSAqc3Qp
Cit7CisgICAgT2dnUGFnZSBwYWdlOworICAgIGludCByZXQ7CisKKyAgICBzdC0+bm9fZW9zICAg
ID0gMTsKKyAgICBzdC0+Y29tcGxldGUgID0gMTsKKyAgICBzdC0+ZW9zX3VwcGVyID0gc3QtPmVv
c19sb3dlcjsKKworICAgIGlmIChzdC0+aGF2ZV9sYXN0X3BhZ2UgfHwgc3QtPmxhc3RfcGFnZV9w
b3MgPD0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXQgPSBvZ2dfcGFyc2VyX3NlZWso
cGFyc2VyLCBzdC0+bGFzdF9wYWdlX3Bvcyk7CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIHJl
dHVybiByZXQ7CisKKyAgICByZXQgPSBvZ2dfcmVhZF9wYWdlKHBhcnNlciwgJnBhZ2UpOworICAg
IGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0ID09IEFWRVJST1JfRU9GIHx8IHJldCA9
PSBBVkVSUk9SX0lOVkFMSUREQVRBID8gMCA6IHJldDsKKworICAgIGlmICghc3QtPmhhdmVfbGFz
dF9wYWdlICYmIHBhZ2Uuc2VyaWFsID09IHN0LT5zZXJpYWwpIHsKKyAgICAgICAgc3QtPmxhc3Rf
cGFnZSAgICAgID0gcGFnZTsKKyAgICAgICAgc3QtPmhhdmVfbGFzdF9wYWdlID0gMTsKKyAgICB9
CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBvZ2dfbG93ZXJfZW9zX3VwcGVyKE9n
Z1BhcnNlciAqcGFyc2VyLCBPZ2dTdHJlYW1TdGF0ZSAqc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCBwb3MpCit7CisgICAgLyogT25seSBhIG1hbGZvcm1lZCBmaWxl
IGNhbiBwbGFjZSB0aGUgdXBwZXIgYm91bmQgYmVsb3cgdGhlIGxvd2VyIG9uZS4KKyAgICAgKiBT
dG9wIHJhdGhlciB0aGFuIGJpc2VjdCBhbiBlbXB0eSByYW5nZSBmb3JldmVyLiAqLworICAgIGlm
IChwb3MgPCBzdC0+ZW9zX2xvd2VyKQorICAgICAgICByZXR1cm4gb2dnX21hcmtfbm9fZW9zKHBh
cnNlciwgc3QpOworCisgICAgc3QtPmVvc191cHBlciA9IHBvczsKKworICAgIHJldHVybiAwOwor
fQorCisvKiogV2FsayB0aGUgbGFzdCBmZXcgcGFnZXMgb2YgYSBzdHJlYW0gb25jZSBiaXNlY3Rp
bmcgaXMgbm8gbG9uZ2VyIHdvcnRoIGl0LiAqLworc3RhdGljIGludCBvZ2dfc2Nhbl90b19lb3Mo
T2dnUGFyc2VyICpwYXJzZXIsIE9nZ1N0cmVhbVN0YXRlICpzdCkKK3sKKyAgICBPZ2dQYWdlIHBh
Z2U7CisgICAgaW50IHJldDsKKworICAgIHJldCA9IG9nZ19wYXJzZXJfc2VlayhwYXJzZXIsIHN0
LT5lb3NfbG93ZXIpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisg
ICAgd2hpbGUgKCFzdC0+Y29tcGxldGUpIHsKKyAgICAgICAgcmV0ID0gb2dnX3JlYWRfcGFnZShw
YXJzZXIsICZwYWdlKTsKKyAgICAgICAgaWYgKHJldCA9PSBBVkVSUk9SX0VPRiB8fCByZXQgPT0g
QVZFUlJPUl9JTlZBTElEREFUQSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAocmV0
IDwgMCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisKKyAgICAgICAgaWYgKHBhZ2UucGFnZV9w
b3MgPiBzdC0+ZW9zX3VwcGVyKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYg
KCFzdC0+Y29tcGxldGUpCisgICAgICAgIHJldHVybiBvZ2dfbWFya19ub19lb3MocGFyc2VyLCBz
dCk7CisKKyAgICByZXR1cm4gMDsKK30KKworLyoqCisgKiBIYWx2ZSB0aGUgaW50ZXJ2YWwgdGhl
IEVPUyBwYWdlIGxpZXMgaW4uIEVpdGhlciBib3VuZCBvbmx5IG1vdmVzIGlud2FyZHMKKyAqIGFu
ZCB0aGUgcHJvYmUgc2l0cyBzdHJpY3RseSBpbnNpZGUsIHNvIHRoZSBpbnRlcnZhbCBhbHdheXMg
c2hyaW5rcy4KKyAqLworc3RhdGljIGludCBvZ2dfYmlzZWN0X3N0ZXAoT2dnUGFyc2VyICpwYXJz
ZXIsIE9nZ1N0cmVhbVN0YXRlICpzdCkKK3sKKyAgICBlbnVtIE9nZ1ZlcmRpY3QgdmVyZGljdDsK
KyAgICBpbnQ2NF90IHByb2JlX3BvcywgcmFuZ2U7CisgICAgT2dnUGFnZSBwYWdlOworICAgIGlu
dCByZXQ7CisKKyAgICByYW5nZSA9IHN0LT5lb3NfdXBwZXIgLSBzdC0+ZW9zX2xvd2VyOworICAg
IGlmIChyYW5nZSA8IE1JTl9PR0dfU0VBUkNIX1JBTkdFKQorICAgICAgICByZXR1cm4gb2dnX3Nj
YW5fdG9fZW9zKHBhcnNlciwgc3QpOworCisgICAgcHJvYmVfcG9zID0gc3QtPmVvc19sb3dlciAr
IHJhbmdlIC8gMjsKKworICAgIHJldCA9IG9nZ19wYXJzZXJfc2VlayhwYXJzZXIsIHByb2JlX3Bv
cyk7CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICBwYXJzZXIt
PnN0YXRzLm5iX2Jpc2VjdF9zdGVwcysrOworCisgICAgcmV0ID0gb2dnX3JlYWRfcGFnZShwYXJz
ZXIsICZwYWdlKTsKKyAgICBpZiAocmV0ID09IEFWRVJST1JfRU9GIHx8IHJldCA9PSBBVkVSUk9S
X0lOVkFMSUREQVRBKQorICAgICAgICByZXR1cm4gb2dnX2xvd2VyX2Vvc191cHBlcihwYXJzZXIs
IHN0LCBwcm9iZV9wb3MpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0Owor
CisgICAgdmVyZGljdCA9IG9nZ19jbGFzc2lmeV9wYWdlKHBhcnNlciwgc3QsICZwYWdlKTsKKyAg
ICBpZiAodmVyZGljdCA9PSBPR0dfVkVSRElDVF9VTktOT1dOKSB7CisgICAgICAgIHJldCA9IG9n
Z19yZXNvbHZlX3NpYmxpbmcocGFyc2VyLCBzdCwgJnBhZ2UsICZ2ZXJkaWN0KTsKKyAgICAgICAg
aWYgKHJldCA8IDApCisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIGlmICh2
ZXJkaWN0ID09IE9HR19WRVJESUNUX0FGVEVSX0VPUykKKyAgICAgICAgcmV0dXJuIG9nZ19sb3dl
cl9lb3NfdXBwZXIocGFyc2VyLCBzdCwgcHJvYmVfcG9zKTsKKworICAgIC8qIEJlZm9yZSB0aGUg
RU9TIHBhZ2U6IG9nZ19vYnNlcnZlX3BhZ2UoKSBoYXMgYWxyZWFkeSByYWlzZWQgdGhlIGxvd2Vy
CisgICAgICogYm91bmQgcGFzdCB3aGljaGV2ZXIgcGFnZSBwcm92ZWQgaXQuICovCisgICAgcmV0
dXJuIDA7Cit9CisKKy8qKgorICogQWR2YW5jZSBldmVyeSBzdHJlYW0gd2hvc2UgbGluayBpcyBr
bm93bi4gUmV0dXJucyAxIGlmIGFueXRoaW5nIG1vdmVkLCBzbworICogdGhlIGNhbGxlciBjYW4g
dGVsbCBhIHNldHRsZWQgY2hhaW4gZnJvbSBvbmUgc3RpbGwgYmVpbmcgZGlzY292ZXJlZC4KKyAq
Lworc3RhdGljIGludCBvZ2dfcmVzb2x2ZV9zdHJlYW1zKE9nZ1BhcnNlciAqcGFyc2VyKQorewor
ICAgIGludCBkaWRfd29yayA9IDA7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhcnNlci0+
bmJfc3RyZWFtczsgaSsrKSB7CisgICAgICAgIE9nZ1N0cmVhbVN0YXRlICpzdCA9IHBhcnNlci0+
c3RyZWFtc1tpXTsKKworICAgICAgICAvKiBTZWVuIGluIHBhc3NpbmcgYnV0IGl0cyBsaW5rIGhl
YWRlciBoYXMgbm90IGJlZW4gcmVhZCB5ZXQ7IGl0IHdpbGwKKyAgICAgICAgICogYmUgcGlja2Vk
IHVwIG9uY2UgdGhlIHdvcmtsaXN0IHJlYWNoZXMgaXQuICovCisgICAgICAgIGlmIChzdC0+bGlu
a19pbmRleCA8IDApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB3aGlsZSAoIXN0
LT5jb21wbGV0ZSkgeworICAgICAgICAgICAgaW50NjRfdCByYW5nZSA9IHN0LT5lb3NfdXBwZXIg
LSBzdC0+ZW9zX2xvd2VyOworICAgICAgICAgICAgaW50IHJldCA9IG9nZ19iaXNlY3Rfc3RlcChw
YXJzZXIsIHN0KTsKKyAgICAgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgICAgIHJl
dHVybiByZXQ7CisKKyAgICAgICAgICAgIGRpZF93b3JrID0gMTsKKworICAgICAgICAgICAgLyog
RXZlcnkgc3RlcCBpcyBtZWFudCB0byBzaHJpbmsgdGhlIGludGVydmFsLiBJZiBvbmUgZXZlciBm
YWlscworICAgICAgICAgICAgICogdG8sIHRoZSBmaWxlIGlzIGNvbnRyYWRpY3RpbmcgaXRzZWxm
OyBzdG9wIGluc3RlYWQgb2Ygc3Bpbm5pbmcKKyAgICAgICAgICAgICAqIG9uIGl0LiAqLworICAg
ICAgICAgICAgaWYgKCFzdC0+Y29tcGxldGUgJiYgc3QtPmVvc191cHBlciAtIHN0LT5lb3NfbG93
ZXIgPj0gcmFuZ2UpIHsKKyAgICAgICAgICAgICAgICByZXQgPSBvZ2dfbWFya19ub19lb3MocGFy
c2VyLCBzdCk7CisgICAgICAgICAgICAgICAgaWYgKHJldCA8IDApCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiByZXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBy
ZXR1cm4gZGlkX3dvcms7Cit9CisKKy8qKgorICogUmVhZCB0aGUgdGFpbCBvZiB0aGUgZmlsZS4g
T24gYW4gdW5jaGFpbmVkIG9uZSB0aGlzIHBpbnMgZXZlcnkgYm91bmQgYXQKKyAqIG9uY2UgYW5k
IG5vIGJpc2VjdGlvbiBpcyBuZWVkZWQuIE9uIGEgY2hhaW5lZCBvbmUgdGhlIHRhaWwgYmVsb25n
cyB0byB0aGUKKyAqIGxhc3QgbGluaywgc28gc3RvcCBhdCB0aGUgZmlyc3QgZm9yZWlnbiBwYWdl
OyB3aGF0IHdhcyBzZWVuIG9uIHRoZSB3YXkgaXMKKyAqIHJlY29yZGVkIGFuZCBwYXlzIG9mZiB3
aGVuIHRoYXQgbGluayBpcyByZWFjaGVkLgorICovCitzdGF0aWMgaW50IG9nZ19wcm9iZV90YWls
KE9nZ1BhcnNlciAqcGFyc2VyKQoreworICAgIE9nZ1BhZ2UgcGFnZTsKKyAgICBpbnQgcmV0Owor
CisgICAgcmV0ID0gb2dnX3BhcnNlcl9zZWVrKHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgRkZNQVgocGFyc2VyLT5maWxlX3NpemUgLSBNQVhfT0dHX1BBR0VfU0laRSwgMCkpOwor
ICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgd2hpbGUgKDEpIHsK
KyAgICAgICAgY29uc3QgT2dnU3RyZWFtU3RhdGUgKnN0OworCisgICAgICAgIHJldCA9IG9nZ19y
ZWFkX3BhZ2UocGFyc2VyLCAmcGFnZSk7CisgICAgICAgIGlmIChyZXQgPT0gQVZFUlJPUl9FT0Yg
fHwgcmV0ID09IEFWRVJST1JfSU5WQUxJRERBVEEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgaWYgKHJldCA8IDApCisgICAgICAgICAgICByZXR1cm4gcmV0OworCisgICAgICAgIHN0
ID0gb2dnX3BhcnNlcl9maW5kX3N0cmVhbShwYXJzZXIsIHBhZ2Uuc2VyaWFsKTsKKyAgICAgICAg
aWYgKCFzdCB8fCBzdC0+bGlua19pbmRleCAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorfQorCisvKioKKyAqIFJlbnVtYmVyIHRoZSBsaW5rcyBpbnRvIGZpbGUgb3JkZXIuIEEg
bGluayBpcyBmb3VuZCB3aGVuIHRoZSBFT1MgcGFnZSBpbgorICogZnJvbnQgb2YgaXQgdHVybnMg
dXAsIHdoaWNoIGlzIG5vdCB0aGUgb3JkZXIgdGhleSBhcHBlYXIgaW4sIGFuZCBjYWxsZXJzIC0K
KyAqIGFueXRoaW5nIGJ1aWxkaW5nIGEgdGltZWxpbmUgZXNwZWNpYWxseSAtIGRlcGVuZCBvbiB0
aGF0IG9yZGVyLgorICovCitzdGF0aWMgaW50IG9nZ19vcmRlcl9saW5rcyhPZ2dQYXJzZXIgKnBh
cnNlcikKK3sKKyAgICBpbnQ2NF90ICpwb3M7CisgICAgaW50ICpyYW5rOworICAgIGludCByZXQg
PSAwOworCisgICAgaWYgKHBhcnNlci0+bmJfbGlua3MgPCAyKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIHBvcyAgPSBhdl9tYWxsb2NfYXJyYXkocGFyc2VyLT5uYl9saW5rcywgc2l6ZW9mKCpw
b3MpKTsKKyAgICByYW5rID0gYXZfbWFsbG9jX2FycmF5KHBhcnNlci0+bmJfbGlua3MsIHNpemVv
ZigqcmFuaykpOworICAgIGlmICghcG9zIHx8ICFyYW5rKSB7CisgICAgICAgIHJldCA9IEFWRVJS
T1IoRU5PTUVNKTsKKyAgICAgICAgZ290byBlbmQ7CisgICAgfQorCisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBwYXJzZXItPm5iX2xpbmtzOyBpKyspCisgICAgICAgIHBvc1tpXSA9IElOVDY0X01B
WDsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyc2VyLT5uYl9zdHJlYW1zOyBpKyspIHsK
KyAgICAgICAgY29uc3QgT2dnU3RyZWFtU3RhdGUgKnN0ID0gcGFyc2VyLT5zdHJlYW1zW2ldOwor
CisgICAgICAgIGlmIChzdC0+bGlua19pbmRleCA+PSAwICYmIHN0LT5oYXZlX2ZpcnN0X3BhZ2Up
CisgICAgICAgICAgICBwb3Nbc3QtPmxpbmtfaW5kZXhdID0gRkZNSU4ocG9zW3N0LT5saW5rX2lu
ZGV4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdC0+Zmlyc3Rf
cGFnZS5wYWdlX3Bvcyk7CisgICAgfQorCisgICAgLyogUmFuayBlYWNoIGxpbmsgYnkgaG93IG1h
bnkgYmVnaW4gYmVmb3JlIGl0LCB0aWVzIGJyb2tlbiBieSB0aGUgb3JkZXIKKyAgICAgKiB0aGV5
IHdlcmUgZm91bmQgc28gdGhhdCB0aGUgcmVzdWx0IGlzIGEgdG90YWwgb3JkZXIuICovCisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBwYXJzZXItPm5iX2xpbmtzOyBpKyspIHsKKyAgICAgICAgcmFu
a1tpXSA9IDA7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgcGFyc2VyLT5uYl9saW5rczsg
aisrKQorICAgICAgICAgICAgaWYgKHBvc1tqXSA8IHBvc1tpXSB8fCAocG9zW2pdID09IHBvc1tp
XSAmJiBqIDwgaSkpCisgICAgICAgICAgICAgICAgcmFua1tpXSsrOworICAgIH0KKworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgcGFyc2VyLT5uYl9zdHJlYW1zOyBpKyspIHsKKyAgICAgICAgT2dn
U3RyZWFtU3RhdGUgKnN0ID0gcGFyc2VyLT5zdHJlYW1zW2ldOworCisgICAgICAgIGlmIChzdC0+
bGlua19pbmRleCA+PSAwKQorICAgICAgICAgICAgc3QtPmxpbmtfaW5kZXggPSByYW5rW3N0LT5s
aW5rX2luZGV4XTsKKyAgICB9CisKK2VuZDoKKyAgICBhdl9mcmVlKHBvcyk7CisgICAgYXZfZnJl
ZShyYW5rKTsKKworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgb2dnX2J1aWxkX2No
YWluKE9nZ1BhcnNlciAqcGFyc2VyLCBPZ2dDaGFpbiAqKm91dCkKK3sKKyAgICBPZ2dDaGFpbiAq
Y2hhaW47CisgICAgaW50IHJldDsKKworICAgIGNoYWluID0gYXZfbWFsbG9jeihzaXplb2YoKmNo
YWluKSk7CisgICAgaWYgKCFjaGFpbikKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsK
KworICAgIGNoYWluLT5saW5rcyA9IGF2X2NhbGxvYyhwYXJzZXItPm5iX2xpbmtzLCBzaXplb2Yo
KmNoYWluLT5saW5rcykpOworICAgIGlmICghY2hhaW4tPmxpbmtzKSB7CisgICAgICAgIHJldCA9
IEFWRVJST1IoRU5PTUVNKTsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgcGFyc2VyLT5uYl9saW5rczsgaSsrKSB7CisgICAgICAgIGNoYWluLT5s
aW5rc1tpXSA9IGF2X21hbGxvY3ooc2l6ZW9mKCoqY2hhaW4tPmxpbmtzKSk7CisgICAgICAgIGlm
ICghY2hhaW4tPmxpbmtzW2ldKSB7CisgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVOT01FTSk7
CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgY2hhaW4tPm5iX2xp
bmtzKys7CisgICAgfQorCisgICAgLyogU3RyZWFtcyBhcmUgZGlzY292ZXJlZCBpbiBmaWxlIG9y
ZGVyLCBzbyBhcHBlbmRpbmcgdGhlbSBpbiB0aGF0IG9yZGVyCisgICAgICoga2VlcHMgZWFjaCBs
aW5rJ3MgYml0c3RyZWFtcyBpbiB0aGUgb3JkZXIgdGhlaXIgQk9TIHBhZ2VzIGFwcGVhci4gKi8K
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhcnNlci0+bmJfc3RyZWFtczsgaSsrKSB7CisgICAg
ICAgIGNvbnN0IE9nZ1N0cmVhbVN0YXRlICpzdCA9IHBhcnNlci0+c3RyZWFtc1tpXTsKKyAgICAg
ICAgT2dnU3RyZWFtICoqdG1wLCAqc3RyZWFtOworICAgICAgICBPZ2dMaW5rICpsaW5rOworCisg
ICAgICAgIGlmIChzdC0+bGlua19pbmRleCA8IDApCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBsaW5rID0gY2hhaW4tPmxpbmtzW3N0LT5saW5rX2luZGV4XTsKKworICAgICAgICBz
dHJlYW0gPSBhdl9tYWxsb2N6KHNpemVvZigqc3RyZWFtKSk7CisgICAgICAgIGlmICghc3RyZWFt
KSB7CisgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgICAgICBnb3Rv
IGZhaWw7CisgICAgICAgIH0KKworICAgICAgICBzdHJlYW0tPnNlcmlhbCAgICAgPSBzdC0+c2Vy
aWFsOworICAgICAgICBzdHJlYW0tPmZpcnN0X3BhZ2UgPSBzdC0+Zmlyc3RfcGFnZTsKKyAgICAg
ICAgc3RyZWFtLT5sYXN0X3BhZ2UgID0gc3QtPmxhc3RfcGFnZTsKKyAgICAgICAgc3RyZWFtLT5u
b19lb3MgICAgID0gc3QtPm5vX2VvczsKKworICAgICAgICB0bXAgPSBhdl9yZWFsbG9jX2FycmF5
KGxpbmstPnN0cmVhbXMsIGxpbmstPm5iX3N0cmVhbXMgKyAxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVvZigqbGluay0+c3RyZWFtcykpOworICAgICAgICBpZiAoIXRtcCkg
eworICAgICAgICAgICAgYXZfZnJlZShzdHJlYW0pOworICAgICAgICAgICAgcmV0ID0gQVZFUlJP
UihFTk9NRU0pOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisKKyAgICAgICAg
bGluay0+c3RyZWFtcyA9IHRtcDsKKyAgICAgICAgbGluay0+c3RyZWFtc1tsaW5rLT5uYl9zdHJl
YW1zKytdID0gc3RyZWFtOworICAgIH0KKworICAgICpvdXQgPSBjaGFpbjsKKworICAgIHJldHVy
biAwOworCitmYWlsOgorICAgIGZmX29nZ19mcmVlX2NoYWluKCZjaGFpbik7CisgICAgcmV0dXJu
IHJldDsKK30KKworc3RhdGljIHZvaWQgb2dnX3BhcnNlcl91bmluaXQoT2dnUGFyc2VyICpwYXJz
ZXIpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJzZXItPm5iX3N0cmVhbXM7IGkrKykK
KyAgICAgICAgYXZfZnJlZShwYXJzZXItPnN0cmVhbXNbaV0pOworCisgICAgYXZfZnJlZXAoJnBh
cnNlci0+c3RyZWFtcyk7CisgICAgYXZfZnJlZXAoJnBhcnNlci0+bGlua19vZmZzZXRzKTsKKyAg
ICBwYXJzZXItPm5iX3N0cmVhbXMgPSAwOworfQorCit2b2lkIGZmX29nZ19mcmVlX2NoYWluKE9n
Z0NoYWluICoqcGNoYWluKQoreworICAgIE9nZ0NoYWluICpjaGFpbiA9ICpwY2hhaW47CisKKyAg
ICBpZiAoIWNoYWluKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IGNoYWluLT5uYl9saW5rczsgaSsrKSB7CisgICAgICAgIE9nZ0xpbmsgKmxpbmsgPSBjaGFpbi0+
bGlua3NbaV07CisKKyAgICAgICAgaWYgKCFsaW5rKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBsaW5rLT5uYl9zdHJlYW1zOyBqKyspCisgICAg
ICAgICAgICBhdl9mcmVlKGxpbmstPnN0cmVhbXNbal0pOworCisgICAgICAgIGF2X2ZyZWUobGlu
ay0+c3RyZWFtcyk7CisgICAgICAgIGF2X2ZyZWUobGluayk7CisgICAgfQorCisgICAgYXZfZnJl
ZShjaGFpbi0+bGlua3MpOworICAgIGF2X2ZyZWVwKHBjaGFpbik7Cit9CisKK2ludCBmZl9vZ2df
cGFyc2VfY2hhaW4oQVZGb3JtYXRDb250ZXh0ICpzLCBPZ2dDaGFpbiAqKmNoYWluLAorICAgICAg
ICAgICAgICAgICAgICAgICBPZ2dQYXJzZXJTdGF0cyAqc3RhdHMpCit7CisgICAgT2dnUGFyc2Vy
IHBhcnNlciA9IHsgMCB9OworICAgIGludDY0X3QgcmVzdG9yZV9wb3M7CisgICAgaW50IHJldDsK
KworICAgIGlmICghY2hhaW4gfHwgKmNoYWluKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5W
QUwpOworCisgICAgaWYgKCEocy0+cGItPnNlZWthYmxlICYgQVZJT19TRUVLQUJMRV9OT1JNQUwp
KQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9TWVMpOworCisgICAgcGFyc2VyLmZpbGVfc2l6
ZSA9IGF2aW9fc2l6ZShzLT5wYik7CisgICAgaWYgKHBhcnNlci5maWxlX3NpemUgPCAwKQorICAg
ICAgICByZXR1cm4gQVZFUlJPUihFTk9TWVMpOworCisgICAgcGFyc2VyLnMgICAgPSBzOworICAg
IHJlc3RvcmVfcG9zID0gYXZpb190ZWxsKHMtPnBiKTsKKworICAgIHJldCA9IG9nZ19xdWV1ZV9s
aW5rKCZwYXJzZXIsIDApOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICBnb3RvIGVuZDsKKwor
ICAgIHJldCA9IG9nZ19kcmFpbl9wZW5kaW5nX2xpbmtzKCZwYXJzZXIpOworICAgIGlmIChyZXQg
PCAwKQorICAgICAgICBnb3RvIGVuZDsKKworICAgIGlmICghcGFyc2VyLm5iX2xpbmtzKSB7Cisg
ICAgICAgIHJldCA9IEFWRVJST1JfU1RSRUFNX05PVF9GT1VORDsKKyAgICAgICAgZ290byBlbmQ7
CisgICAgfQorCisgICAgcmV0ID0gb2dnX3Byb2JlX3RhaWwoJnBhcnNlcik7CisgICAgaWYgKHJl
dCA8IDApCisgICAgICAgIGdvdG8gZW5kOworCisgICAgLyogTGlua3MgdHVybiB1cCBhcyB0aGUg
RU9TIHBhZ2VzIHRoYXQgcHJlY2VkZSB0aGVtIGFyZSBmb3VuZCwgc28ga2VlcAorICAgICAqIGFs
dGVybmF0aW5nIGJldHdlZW4gcmVhZGluZyBuZXdseSBmb3VuZCBsaW5rIGhlYWRlcnMgYW5kIHJl
c29sdmluZyB0aGUKKyAgICAgKiBzdHJlYW1zIHRoZXkgb3BlbmVkLCB1bnRpbCBuZWl0aGVyIGhh
cyBhbnl0aGluZyBsZWZ0IHRvIGRvLiAqLworICAgIHdoaWxlICgxKSB7CisgICAgICAgIHJldCA9
IG9nZ19kcmFpbl9wZW5kaW5nX2xpbmtzKCZwYXJzZXIpOworICAgICAgICBpZiAocmV0IDwgMCkK
KyAgICAgICAgICAgIGdvdG8gZW5kOworCisgICAgICAgIHJldCA9IG9nZ19yZXNvbHZlX3N0cmVh
bXMoJnBhcnNlcik7CisgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgZ290byBlbmQ7
CisKKyAgICAgICAgaWYgKCFyZXQgJiYgcGFyc2VyLm5iX3NjYW5uZWRfbGlua3MgPT0gcGFyc2Vy
Lm5iX2xpbmtfb2Zmc2V0cykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldCA9
IG9nZ19vcmRlcl9saW5rcygmcGFyc2VyKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgZ290
byBlbmQ7CisKKyAgICByZXQgPSBvZ2dfYnVpbGRfY2hhaW4oJnBhcnNlciwgY2hhaW4pOworCitl
bmQ6CisgICAgYXZpb19zZWVrKHMtPnBiLCByZXN0b3JlX3BvcywgU0VFS19TRVQpOworCisgICAg
aWYgKHN0YXRzKQorICAgICAgICAqc3RhdHMgPSBwYXJzZXIuc3RhdHM7CisKKyAgICBvZ2dfcGFy
c2VyX3VuaW5pdCgmcGFyc2VyKTsKKworICAgIGlmIChyZXQgPCAwKQorICAgICAgICBmZl9vZ2df
ZnJlZV9jaGFpbihjaGFpbik7CisKKyAgICByZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvbGli
YXZmb3JtYXQvb2dnL2NoYWluLmggYi9saWJhdmZvcm1hdC9vZ2cvY2hhaW4uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4xMjIxMzJjZjA0Ci0tLSAvZGV2L251bGwKKysr
IGIvbGliYXZmb3JtYXQvb2dnL2NoYWluLmgKQEAgLTAsMCArMSw5MSBAQAorLyoqCisgICAgQ29w
eXJpZ2h0IChDKSAyMDA1ICBNaWNoYWVsIEFobGJlcmcsIE3DpW5zIFJ1bGxnw6VyZAorICAgIENv
cHlyaWdodCAoQykgMjAyNSAgUm9tYWluIEJlYXV4aXMKKworICAgIFBlcm1pc3Npb24gaXMgaGVy
ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCisgICAgb2J0YWluaW5n
IGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24KKyAg
ICBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0
CisgICAgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0
cyB0byB1c2UsIGNvcHksCisgICAgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg
c3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzCisgICAgb2YgdGhlIFNvZnR3YXJlLCBhbmQg
dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAgICBmdXJuaXNoZWQg
dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisgICAgVGhl
IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwg
YmUKKyAgICBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m
IHRoZSBTb2Z0d2FyZS4KKworICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX
SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorICAgIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5D
TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorICAgIE1FUkNIQU5U
QUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisgICAgTk9OSU5G
UklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQKKyAg
ICBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJ
TElUWSwKKyAgICBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF
UldJU0UsIEFSSVNJTkcgRlJPTSwKKyAgICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI
RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgICAgREVBTElOR1MgSU4gVEhFIFNPRlRX
QVJFLgorKiovCisKKyNpZm5kZWYgQVZGT1JNQVRfT0dHX0NIQUlOX0gKKyNkZWZpbmUgQVZGT1JN
QVRfT0dHX0NIQUlOX0gKKworI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSAibGliYXZm
b3JtYXQvYXZmb3JtYXQuaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9vZ2cvcGFyc2VyLmgiCisK
Ky8qKgorICogQSBsb2dpY2FsIGJpdHN0cmVhbTogZXZlcnkgcGFnZSBzaGFyaW5nIG9uZSBzZXJp
YWwgbnVtYmVyLgorICovCit0eXBlZGVmIHN0cnVjdCBPZ2dTdHJlYW0geworICAgIHVpbnQzMl90
IHNlcmlhbDsKKyAgICBPZ2dQYWdlIGZpcnN0X3BhZ2U7ICAgICAvLy88IHRoZSBCT1MgcGFnZQor
ICAgIE9nZ1BhZ2UgbGFzdF9wYWdlOyAgICAgIC8vLzwgdGhlIEVPUyBwYWdlLCBvciB0aGUgbGFz
dCBwYWdlIHNlZW4gaWYgbm9fZW9zIGlzIHNldAorICAgIGludCBub19lb3M7ICAgICAgICAgICAg
IC8vLzwgbm8gRU9TIHBhZ2Ugd2FzIGZvdW5kOyB0aGUgc3RyZWFtIGlzIHRydW5jYXRlZAorfSBP
Z2dTdHJlYW07CisKKy8qKgorICogT25lIGxpbmsgb2YgYSBjaGFpbjogdGhlIGxvZ2ljYWwgYml0
c3RyZWFtcyB0aGF0IGJlZ2luIGFuZCBlbmQgdG9nZXRoZXIuCisgKiBDb25jYXRlbmF0aW5nIHR3
byBPZ2cgZmlsZXMgeWllbGRzIGEgY2hhaW4gb2YgdHdvIGxpbmtzLgorICovCit0eXBlZGVmIHN0
cnVjdCBPZ2dMaW5rIHsKKyAgICBPZ2dTdHJlYW0gKipzdHJlYW1zOworICAgIGludCBuYl9zdHJl
YW1zOworfSBPZ2dMaW5rOworCisvKioKKyAqIEEgd2hvbGUgY2hhaW46IHRoZSBsaW5rcyBtYWtp
bmcgdXAgYSBmaWxlLCBpbiBmaWxlIG9yZGVyLgorICovCit0eXBlZGVmIHN0cnVjdCBPZ2dDaGFp
biB7CisgICAgT2dnTGluayAqKmxpbmtzOworICAgIGludCBuYl9saW5rczsKK30gT2dnQ2hhaW47
CisKKy8qKgorICogQWNjb3VudGluZyBmb3IgYSBmZl9vZ2dfcGFyc2VfY2hhaW4oKSBydW4uIE1v
c3RseSB1c2VmdWwgdG8gY29uZmlybSB0aGUKKyAqIGJpc2VjdGlvbiBpcyBiZWhhdmluZyBsb2dh
cml0aG1pY2FsbHkgcmF0aGVyIHRoYW4gZGVnZW5lcmF0aW5nIGludG8gYSBzY2FuLgorICovCit0
eXBlZGVmIHN0cnVjdCBPZ2dQYXJzZXJTdGF0cyB7CisgICAgaW50NjRfdCBuYl9zZWVrczsKKyAg
ICBpbnQ2NF90IG5iX3BhZ2VzX3JlYWQ7CisgICAgaW50NjRfdCBuYl9iaXNlY3Rfc3RlcHM7Cisg
ICAgaW50IHRydW5jYXRlZDsgICAgICAgICAgLy8vPCB0aGUgcGFnZSBidWRnZXQgcmFuIG91dDsg
dGhlIGNoYWluIGlzIGluY29tcGxldGUKK30gT2dnUGFyc2VyU3RhdHM7CisvKioKKyAqIEVudW1l
cmF0ZSB0aGUgbGlua3Mgb2YgYSBjaGFpbmVkIE9nZyBmaWxlLCBhbmQgdGhlIGxvZ2ljYWwgYml0
c3RyZWFtcyBvZgorICogZWFjaCBsaW5rLCB1c2luZyBhIGJpc2VjdGlvbiByYXRoZXIgdGhhbiBh
IGZ1bGwgc2Nhbi4KKyAqCisgKiBSZXF1aXJlcyBhIHNlZWthYmxlIGlucHV0IG9mIGtub3duIHNp
emUuCisgKgorICogQHBhcmFtIGNoYWluIG9uIHN1Y2Nlc3MsIHRoZSByZXN1bHRpbmcgY2hhaW4s
IHRvIGJlIGZyZWVkIHdpdGgKKyAqICAgICAgICAgICAgICBmZl9vZ2dfZnJlZV9jaGFpbigpLiBN
dXN0IHBvaW50IHRvIGEgTlVMTCBwb2ludGVyIG9uIGVudHJ5LgorICogQHBhcmFtIHN0YXRzIGlm
IG5vdCBOVUxMLCBmaWxsZWQgaW4gd2l0aCB0aGUgYWNjb3VudGluZyBmb3IgdGhpcyBydW4KKyAq
CisgKiBAcmV0dXJuIDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBBVkVSUk9SCisgKi8KK2lu
dCBmZl9vZ2dfcGFyc2VfY2hhaW4oQVZGb3JtYXRDb250ZXh0ICpzLCBPZ2dDaGFpbiAqKmNoYWlu
LAorICAgICAgICAgICAgICAgICAgICAgICBPZ2dQYXJzZXJTdGF0cyAqc3RhdHMpOworCisvKioK
KyAqIEZyZWUgYSBjaGFpbiByZXR1cm5lZCBieSBmZl9vZ2dfcGFyc2VfY2hhaW4oKSBhbmQgc2V0
ICpjaGFpbiB0byBOVUxMLgorICovCit2b2lkIGZmX29nZ19mcmVlX2NoYWluKE9nZ0NoYWluICoq
Y2hhaW4pOworCisjZW5kaWYgLyogQVZGT1JNQVRfT0dHX0NIQUlOX0ggKi8KLS0gCjIuNTIuMAoK
CkZyb20gM2Q2M2ZkZDJkM2VmN2I3OGViYmY2MWMyNWVlYjJjZjM2ZTIyMDU1YiBNb24gU2VwIDE3
IDAwOjAwOjAwIDIwMDEKRnJvbTogUm9tYWluIEJlYXV4aXMgPHJvbWFpbi5iZWF1eGlzQGdtYWls
LmNvbT4KRGF0ZTogVHVlLCAyOCBKdWwgMjAyNiAxNjo0MDozNyAtMDUwMApTdWJqZWN0OiBbUEFU
Q0ggMDYvMTBdIGxpYmF2Zm9ybWF0L3Rlc3RzOiBhZGQgb2dnIGNoYWluIHBhcnNlciB0ZXN0CgpQ
cmludCB0aGUgbGluayBhbmQgYml0c3RyZWFtIGxheW91dCBmZl9vZ2dfcGFyc2VfY2hhaW4oKSBm
aW5kcywgd2l0aCB0aGUKcGFnZSBhbmQgc2VlayBjb3VudHMsIGxpdmluZyB3aXRoIHRoZSBsaWJy
YXJ5IHJhdGhlciB0aGFuIHVuZGVyCnRlc3RzL2FwaSwgd2hpY2ggbGlua3MgYWdhaW5zdCB0aGUg
c2hhcmVkIGxpYnJhcmllcyB3aGVyZSBmZl8gcHJlZml4ZWQKc3ltYm9scyBhcmUgaGlkZGVuLgoK
Tm90aGluZyBydW5zIGl0IHlldDsgdGhlIGZhdGUgd2lyaW5nIGZvbGxvd3MuCi0tLQogbGliYXZm
b3JtYXQvTWFrZWZpbGUgICAgICAgICAgfCAgMSArCiBsaWJhdmZvcm1hdC90ZXN0cy8uZ2l0aWdu
b3JlICB8ICAxICsKIGxpYmF2Zm9ybWF0L3Rlc3RzL29nZ19jaGFpbi5jIHwgOTggKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTAwIGluc2VydGlv
bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZvcm1hdC90ZXN0cy9vZ2dfY2hhaW4uYwoK
ZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUK
aW5kZXggMDE1NGUwODEyYS4uZmJmZDE4YTVkMCAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvTWFr
ZWZpbGUKKysrIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKQEAgLTc5Myw2ICs3OTMsNyBAQCBURVNU
UFJPR1MtJChDT05GSUdfRklGT19NVVhFUikgICAgICAgICAgICs9ICQoRklGTy1NVVhFUi1URVNU
UFJPR1MteWVzKQogVEVTVFBST0dTLSQoQ09ORklHX0ZGUlRNUENSWVBUX1BST1RPQ09MKSArPSBy
dG1wZGgKIFRFU1RQUk9HUy0kKENPTkZJR19NT1ZfTVVYRVIpICAgICAgICAgICAgKz0gbW92ZW5j
CiBURVNUUFJPR1MtJChDT05GSUdfTkVUV09SSykgICAgICAgICAgICAgICs9IG5vcHJveHkKK1RF
U1RQUk9HUy0kKENPTkZJR19PR0dfREVNVVhFUikgICAgICAgICAgKz0gb2dnX2NoYWluCiBURVNU
UFJPR1MtJChDT05GSUdfU1JUUCkgICAgICAgICAgICAgICAgICs9IHNydHAKIFRFU1RQUk9HUy0k
KENPTkZJR19JTUZfREVNVVhFUikgICAgICAgICAgKz0gaW1mCiAKZGlmZiAtLWdpdCBhL2xpYmF2
Zm9ybWF0L3Rlc3RzLy5naXRpZ25vcmUgYi9saWJhdmZvcm1hdC90ZXN0cy8uZ2l0aWdub3JlCmlu
ZGV4IDk1MWNjZjBmMzcuLjFmNjFmNDY1ZjQgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L3Rlc3Rz
Ly5naXRpZ25vcmUKKysrIGIvbGliYXZmb3JtYXQvdGVzdHMvLmdpdGlnbm9yZQpAQCAtNCw2ICs0
LDcgQEAKIC9ta2RpcgogL21vdmVuYwogL25vcHJveHkKKy9vZ2dfY2hhaW4KIC9ydG1wZGgKIC9z
ZWVrCiAvc3J0cApkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvdGVzdHMvb2dnX2NoYWluLmMgYi9s
aWJhdmZvcm1hdC90ZXN0cy9vZ2dfY2hhaW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwLi43NWQwMzIzODEzCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZmb3JtYXQvdGVz
dHMvb2dnX2NoYWluLmMKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAy
NSBSb21haW4gQmVhdXhpcworICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy
ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMg
c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy
ZSIpLCB0byBkZWFsCisgKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j
bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisgKiB0byB1c2UsIGNvcHksIG1v
ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxs
CisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv
bSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug
YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBj
b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRI
RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL
SU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP
IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCisg
KiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ
TSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP
RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBP
UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB
TElOR1MgSU4KKyAqIFRIRSBTT0ZUV0FSRS4KKyAqLworCisvKioKKyAqIEVudW1lcmF0ZSB0aGUg
bGlua3Mgb2YgYW4gT2dnIGZpbGUgYW5kIHByaW50IHRoZSBsYXlvdXQsIGFsb25nIHdpdGggdGhl
CisgKiBwYXJzZXIgYWNjb3VudGluZzogdGhlIHBhZ2UgYW5kIHNlZWsgY291bnRzIGFyZSB3aGF0
IHRlbGwgYSB3b3JraW5nCisgKiBiaXNlY3Rpb24gYXBhcnQgZnJvbSBvbmUgdGhhdCBoYXMgZGVn
ZW5lcmF0ZWQgaW50byBhIGxpbmVhciBzY2FuLgorICovCisKKyNpbmNsdWRlIDxpbnR0eXBlcy5o
PgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmZvcm1hdC5o
IgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0L29nZy9jaGFpbi5oIgorCitzdGF0aWMgdm9pZCBwcmlu
dF9wYWdlKGNvbnN0IGNoYXIgKmxhYmVsLCBjb25zdCBPZ2dQYWdlICpwYWdlKQoreworICAgIHBy
aW50ZigiICAgICVzOiBwb3M9JSIgUFJJZDY0ICIgc2l6ZT0lIiBQUklkNjQgIiBncD0lIiBQUkl1
NjQgIlxuIiwKKyAgICAgICAgICAgbGFiZWwsIHBhZ2UtPnBhZ2VfcG9zLCBwYWdlLT5wYWdlX3Np
emUsIHBhZ2UtPmdwKTsKK30KKworc3RhdGljIGludCBvZ2dfY2hhaW5fdGVzdChjb25zdCBjaGFy
ICpmaWxlbmFtZSkKK3sKKyAgICBBVkZvcm1hdENvbnRleHQgKmZtdF9jdHggPSBOVUxMOworICAg
IE9nZ0NoYWluICpjaGFpbiA9IE5VTEw7CisgICAgT2dnUGFyc2VyU3RhdHMgc3RhdHMgPSB7IDAg
fTsKKyAgICBpbnQgcmV0OworCisgICAgcmV0ID0gYXZmb3JtYXRfb3Blbl9pbnB1dCgmZm10X2N0
eCwgZmlsZW5hbWUsIE5VTEwsIE5VTEwpOworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIGF2
X2xvZyhOVUxMLCBBVl9MT0dfRVJST1IsICJDb3VsZCBub3Qgb3BlbiAnJXMnOiAlc1xuIiwKKyAg
ICAgICAgICAgICAgIGZpbGVuYW1lLCBhdl9lcnIyc3RyKHJldCkpOworICAgICAgICByZXR1cm4g
cmV0OworICAgIH0KKworICAgIHJldCA9IGZmX29nZ19wYXJzZV9jaGFpbihmbXRfY3R4LCAmY2hh
aW4sICZzdGF0cyk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgYXZfbG9nKE5VTEwsIEFW
X0xPR19FUlJPUiwgIlBhcnNpbmcgZmFpbGVkOiAlc1xuIiwgYXZfZXJyMnN0cihyZXQpKTsKKyAg
ICAgICAgZ290byBlbmQ7CisgICAgfQorCisgICAgcHJpbnRmKCJMaW5rczogJWQlc1xuIiwgY2hh
aW4tPm5iX2xpbmtzLAorICAgICAgICAgICBzdGF0cy50cnVuY2F0ZWQgPyAiICh0cnVuY2F0ZWQp
IiA6ICIiKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hhaW4tPm5iX2xpbmtzOyBpKysp
IHsKKyAgICAgICAgY29uc3QgT2dnTGluayAqbGluayA9IGNoYWluLT5saW5rc1tpXTsKKworICAg
ICAgICBwcmludGYoIlxuTGluayAjJWQ6ICVkIGxvZ2ljYWwgYml0c3RyZWFtKHMpXG4iLCBpLCBs
aW5rLT5uYl9zdHJlYW1zKTsKKworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGxpbmstPm5i
X3N0cmVhbXM7IGorKykgeworICAgICAgICAgICAgY29uc3QgT2dnU3RyZWFtICpzdHJlYW0gPSBs
aW5rLT5zdHJlYW1zW2pdOworCisgICAgICAgICAgICBwcmludGYoIiAgQml0c3RyZWFtICMlZDog
c2VyaWFsPTB4JTA4IiBQUkl4MzIgIiVzXG4iLAorICAgICAgICAgICAgICAgICAgIGosIHN0cmVh
bS0+c2VyaWFsLCBzdHJlYW0tPm5vX2VvcyA/ICIgKG5vIEVPUykiIDogIiIpOworICAgICAgICAg
ICAgcHJpbnRfcGFnZSgiZmlyc3QgcGFnZSIsICZzdHJlYW0tPmZpcnN0X3BhZ2UpOworICAgICAg
ICAgICAgcHJpbnRfcGFnZSgibGFzdCBwYWdlIiwgJnN0cmVhbS0+bGFzdF9wYWdlKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHByaW50ZigiXG5QYXJzZXIgc3RhdHM6XG4iKTsKKyAgICBwcmlu
dGYoIiAgcGFnZXMgcmVhZDogICAgICAlIiBQUklkNjQgIlxuIiwgc3RhdHMubmJfcGFnZXNfcmVh
ZCk7CisgICAgcHJpbnRmKCIgIHNlZWtzOiAgICAgICAgICAgJSIgUFJJZDY0ICJcbiIsIHN0YXRz
Lm5iX3NlZWtzKTsKKyAgICBwcmludGYoIiAgYmlzZWN0IHN0ZXBzOiAgICAlIiBQUklkNjQgIlxu
Iiwgc3RhdHMubmJfYmlzZWN0X3N0ZXBzKTsKKworZW5kOgorICAgIGZmX29nZ19mcmVlX2NoYWlu
KCZjaGFpbik7CisgICAgYXZmb3JtYXRfY2xvc2VfaW5wdXQoJmZtdF9jdHgpOworICAgIHJldHVy
biByZXQ7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICBpZiAo
YXJnYyA8IDIpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgPGlucHV0Lm9n
Zz5cbiIsIGFyZ3ZbMF0pOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICByZXR1cm4g
b2dnX2NoYWluX3Rlc3QoYXJndlsxXSkgPCAwID8gMSA6IDA7Cit9Ci0tIAoyLjUyLjAKCgpGcm9t
IDYzNmIxM2I5MWIxNjBlOGQ2MDBkMDg0NzVmMGRlNTQ3YTc3YWI3YWMgTW9uIFNlcCAxNyAwMDow
MDowMCAyMDAxCkZyb206IFJvbWFpbiBCZWF1eGlzIDxyb21haW4uYmVhdXhpc0BnbWFpbC5jb20+
CkRhdGU6IFR1ZSwgMjggSnVsIDIwMjYgMTY6NDA6MzcgLTA1MDAKU3ViamVjdDogW1BBVENIIDA3
LzEwXSBmYXRlOiBhZGQgb2dnIGNoYWluIHNjYW5uZXIgdGVzdHMKCkNoZWNrIHdoYXQgdGhlIHNj
YW5uZXIgbWFrZXMgb2YgYSBzaW5nbGUgbGluaywgb2YgdGhyZWUgb2YgdW5lcXVhbApsZW5ndGgs
IGFuZCBvZiBlaWdodCBzaG9ydCBvbmVzLgoKVGhlIHBhZ2UgYW5kIHNlZWsgY291bnRzIGFyZSBw
YXJ0IG9mIHRoZSByZWZlcmVuY2VzLCBkaXN0aW5ndWlzaGluZyBhCndvcmtpbmcgYmlzZWN0aW9u
IGZyb20gb25lIHRoYXQgaGFzIHF1aWV0bHkgYmVjb21lIGEgbGluZWFyIHNjYW4uCi0tLQogdGVz
dHMvZmF0ZS9vZ2ctY2hhaW4ubWFrICAgICAgICB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysr
KysrLS0KIHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1mbGFjICAgfCAyMSArKysrKysrKysrKysr
KysKIHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1tYW55ICAgfCA0NiArKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysKIHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zaW5nbGUgfCAxMSAr
KysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tZmxhYwogY3Jl
YXRlIG1vZGUgMTAwNjQ0IHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1tYW55CiBjcmVhdGUgbW9k
ZSAxMDA2NDQgdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNpbmdsZQoKZGlmZiAtLWdpdCBhL3Rl
c3RzL2ZhdGUvb2dnLWNoYWluLm1hayBiL3Rlc3RzL2ZhdGUvb2dnLWNoYWluLm1hawppbmRleCBm
YjU2ODdkMjQ1Li4wMDUyMDZhMTdjIDEwMDY0NAotLS0gYS90ZXN0cy9mYXRlL29nZy1jaGFpbi5t
YWsKKysrIGIvdGVzdHMvZmF0ZS9vZ2ctY2hhaW4ubWFrCkBAIC0xOCw2ICsxOCw4IEBAIE9HR19D
SEFJTl9TRUVLID0gImZmcHJvYmUkKFBST0dTU1VGKSQoRVhFU1VGKSAtYml0ZXhhY3QgLXRocmVh
ZHMgMSBcCiAgICAgLXNob3dfZW50cmllcyBmb3JtYXQ9ZHVyYXRpb246cGFja2V0PXB0cyxwdHNf
dGltZSBcCiAgICAgLXJlYWRfaW50ZXJ2YWxzIDIlK1wjMSw0JStcIzEsNyUrXCMxLDEyJStcIzEs
MTUlK1wjMSwyMiUrXCMxIC1pIgogCitPR0dfQ0hBSU5fU0NBTiA9ICJsaWJhdmZvcm1hdC90ZXN0
cy9vZ2dfY2hhaW4kKEVYRVNVRikiCisKIEZBVEVfT0dHX0NIQUlOLSQoY2FsbCBBTExZRVMsIE9H
R19ERU1VWEVSIE9HR19NVVhFUiBGTEFDX0VOQ09ERVIgTEFWRklfSU5ERVYgQ09OQ0FUX1BST1RP
Q09MIEZJTEVfUFJPVE9DT0wpICs9IGZhdGUtb2dnLWNoYWluLXNlZWstZmxhYwogZmF0ZS1vZ2ct
Y2hhaW4tc2Vlay1mbGFjOiBDTUQgPSBydW5fd2l0aF9jb25jYXRfdGVtcCBvZ2cgXAogICAgICQo
Y2FsbCBPR0dfQ0hBSU5fTElOSywzMDAsNSxmbGFjLDEwMCkgXApAQCAtNDYsNiArNDgsMzkgQEAg
ZmF0ZS1vZ2ctY2hhaW4tc2Vlay10aGVvcmE6IENNRCA9IHJ1bl93aXRoX2NvbmNhdF90ZW1wIG9n
ZyBcCiAgICAgJChjYWxsIE9HR19DSEFJTl9WSURFT19MSU5LLGJsdWUsMTEsbGlidGhlb3JhLDEw
MikgXAogICAgICQoT0dHX0NIQUlOX1NFRUspCiAKLUZBVEVfRkZNUEVHX0ZGUFJPQkUgKz0gJChG
QVRFX09HR19DSEFJTi15ZXMpCisjIFdoYXQgdGhlIHNjYW5uZXIgbWFrZXMgb2YgYSBjaGFpbiwg
dGhlIGxpbmtzIGJlaW5nIHdyaXR0ZW4gc2VwYXJhdGVseSBhbmQKKyMgaGFuZGVkIHRvIGl0IGFz
IG9uZS4KK0ZBVEVfT0dHX0NIQUlOX1NDQU4tJChjYWxsIEFMTFlFUywgT0dHX0RFTVVYRVIgT0dH
X01VWEVSIEZMQUNfRU5DT0RFUiBMQVZGSV9JTkRFViBDT05DQVRfUFJPVE9DT0wgRklMRV9QUk9U
T0NPTCkgKz0gZmF0ZS1vZ2ctY2hhaW4tZmxhYworZmF0ZS1vZ2ctY2hhaW4tZmxhYzogbGliYXZm
b3JtYXQvdGVzdHMvb2dnX2NoYWluJChFWEVTVUYpCitmYXRlLW9nZy1jaGFpbi1mbGFjOiBDTUQg
PSBydW5fd2l0aF9jb25jYXRfdGVtcCBvZ2cgXAorICAgICQoY2FsbCBPR0dfQ0hBSU5fTElOSywz
MDAsNSxmbGFjLDEwMCkgXAorICAgICQoY2FsbCBPR0dfQ0hBSU5fTElOSyw0NTAsOCxmbGFjLDEw
MSkgXAorICAgICQoY2FsbCBPR0dfQ0hBSU5fTElOSyw2MDAsMTEsZmxhYywxMDIpIFwKKyAgICAk
KE9HR19DSEFJTl9TQ0FOKQogCi1mYXRlLW9nZy1jaGFpbjogJChGQVRFX09HR19DSEFJTi15ZXMp
CisjIEEgc2luZ2xlIGxpbmsgc3RpbGwgaGFzIHRvIGNvbWUgb3V0IGFzIGEgY2hhaW4gb2Ygb25l
LgorRkFURV9PR0dfQ0hBSU5fU0NBTi0kKGNhbGwgQUxMWUVTLCBPR0dfREVNVVhFUiBPR0dfTVVY
RVIgRkxBQ19FTkNPREVSIExBVkZJX0lOREVWIEZJTEVfUFJPVE9DT0wpICs9IGZhdGUtb2dnLWNo
YWluLXNpbmdsZQorZmF0ZS1vZ2ctY2hhaW4tc2luZ2xlOiBsaWJhdmZvcm1hdC90ZXN0cy9vZ2df
Y2hhaW4kKEVYRVNVRikKK2ZhdGUtb2dnLWNoYWluLXNpbmdsZTogQ01EID0gcnVuX3dpdGhfY29u
Y2F0X3RlbXAgb2dnIFwKKyAgICAkKGNhbGwgT0dHX0NIQUlOX0xJTkssMzAwLDUsZmxhYywxMDAp
IFwKKyAgICAkKE9HR19DSEFJTl9TQ0FOKQorCisjIE1hbnkgc2hvcnQgbGlua3MsIHdoZXJlIHRo
ZSBzY2FuIGhhcyB0byBrZWVwIGZpbmRpbmcgb25lIGFmdGVyIGFub3RoZXIKKyMgcmF0aGVyIHRo
YW4gc2V0dGxpbmcgZXZlcnl0aGluZyBmcm9tIHRoZSB0YWlsIG9mIHRoZSBmaWxlLgorRkFURV9P
R0dfQ0hBSU5fU0NBTi0kKGNhbGwgQUxMWUVTLCBPR0dfREVNVVhFUiBPR0dfTVVYRVIgRkxBQ19F
TkNPREVSIExBVkZJX0lOREVWIENPTkNBVF9QUk9UT0NPTCBGSUxFX1BST1RPQ09MKSArPSBmYXRl
LW9nZy1jaGFpbi1tYW55CitmYXRlLW9nZy1jaGFpbi1tYW55OiBsaWJhdmZvcm1hdC90ZXN0cy9v
Z2dfY2hhaW4kKEVYRVNVRikKK2ZhdGUtb2dnLWNoYWluLW1hbnk6IENNRCA9IHJ1bl93aXRoX2Nv
bmNhdF90ZW1wIG9nZyBcCisgICAgJChjYWxsIE9HR19DSEFJTl9MSU5LLDIwMCwxLGZsYWMsMTAw
KSBcCisgICAgJChjYWxsIE9HR19DSEFJTl9MSU5LLDI1MCwyLGZsYWMsMTAxKSBcCisgICAgJChj
YWxsIE9HR19DSEFJTl9MSU5LLDMwMCwxLGZsYWMsMTAyKSBcCisgICAgJChjYWxsIE9HR19DSEFJ
Tl9MSU5LLDM1MCwzLGZsYWMsMTAzKSBcCisgICAgJChjYWxsIE9HR19DSEFJTl9MSU5LLDQwMCwx
LGZsYWMsMTA0KSBcCisgICAgJChjYWxsIE9HR19DSEFJTl9MSU5LLDQ1MCwyLGZsYWMsMTA1KSBc
CisgICAgJChjYWxsIE9HR19DSEFJTl9MSU5LLDUwMCwxLGZsYWMsMTA2KSBcCisgICAgJChjYWxs
IE9HR19DSEFJTl9MSU5LLDU1MCw0LGZsYWMsMTA3KSBcCisgICAgJChPR0dfQ0hBSU5fU0NBTikK
KworRkFURV9GRk1QRUdfRkZQUk9CRSArPSAkKEZBVEVfT0dHX0NIQUlOLXllcykKK0ZBVEVfRkZN
UEVHICAgICAgICArPSAkKEZBVEVfT0dHX0NIQUlOX1NDQU4teWVzKQorCitmYXRlLW9nZy1jaGFp
bjogJChGQVRFX09HR19DSEFJTi15ZXMpICQoRkFURV9PR0dfQ0hBSU5fU0NBTi15ZXMpCmRpZmYg
LS1naXQgYS90ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tZmxhYyBiL3Rlc3RzL3JlZi9mYXRlL29n
Zy1jaGFpbi1mbGFjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmNlZWY1
ODIxZjEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tZmxhYwpA
QCAtMCwwICsxLDIxIEBACitMaW5rczogMworCitMaW5rICMwOiAxIGxvZ2ljYWwgYml0c3RyZWFt
KHMpCisgIEJpdHN0cmVhbSAjMDogc2VyaWFsPTB4MDAwMDAwNjQKKyAgICBmaXJzdCBwYWdlOiBw
b3M9MCBzaXplPTc5IGdwPTAKKyAgICBsYXN0IHBhZ2U6IHBvcz02MTg4MyBzaXplPTEzODcyIGdw
PTIyMDUwMAorCitMaW5rICMxOiAxIGxvZ2ljYWwgYml0c3RyZWFtKHMpCisgIEJpdHN0cmVhbSAj
MDogc2VyaWFsPTB4MDAwMDAwNjUKKyAgICBmaXJzdCBwYWdlOiBwb3M9NzU3NTUgc2l6ZT03OSBn
cD0wCisgICAgbGFzdCBwYWdlOiBwb3M9MTg4NDM4IHNpemU9MTMzOTIgZ3A9MzUyODAwCisKK0xp
bmsgIzI6IDEgbG9naWNhbCBiaXRzdHJlYW0ocykKKyAgQml0c3RyZWFtICMwOiBzZXJpYWw9MHgw
MDAwMDA2NgorICAgIGZpcnN0IHBhZ2U6IHBvcz0yMDE4MzAgc2l6ZT03OSBncD0wCisgICAgbGFz
dCBwYWdlOiBwb3M9MzYyMDkyIHNpemU9MTIyNDggZ3A9NDg1MTAwCisKK1BhcnNlciBzdGF0czoK
KyAgcGFnZXMgcmVhZDogICAgICAxMQorICBzZWVrczogICAgICAgICAgIDgKKyAgYmlzZWN0IHN0
ZXBzOiAgICA0CmRpZmYgLS1naXQgYS90ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tbWFueSBiL3Rl
c3RzL3JlZi9mYXRlL29nZy1jaGFpbi1tYW55Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAuLjdiNWRmZGE4NTMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZWYvZmF0ZS9v
Z2ctY2hhaW4tbWFueQpAQCAtMCwwICsxLDQ2IEBACitMaW5rczogOAorCitMaW5rICMwOiAxIGxv
Z2ljYWwgYml0c3RyZWFtKHMpCisgIEJpdHN0cmVhbSAjMDogc2VyaWFsPTB4MDAwMDAwNjQKKyAg
ICBmaXJzdCBwYWdlOiBwb3M9MCBzaXplPTc5IGdwPTAKKyAgICBsYXN0IHBhZ2U6IHBvcz0xNDYg
c2l6ZT0xNTMxNCBncD00NDEwMAorCitMaW5rICMxOiAxIGxvZ2ljYWwgYml0c3RyZWFtKHMpCisg
IEJpdHN0cmVhbSAjMDogc2VyaWFsPTB4MDAwMDAwNjUKKyAgICBmaXJzdCBwYWdlOiBwb3M9MTU0
NjAgc2l6ZT03OSBncD0wCisgICAgbGFzdCBwYWdlOiBwb3M9MzExMTUgc2l6ZT0xNDk3MyBncD04
ODIwMAorCitMaW5rICMyOiAxIGxvZ2ljYWwgYml0c3RyZWFtKHMpCisgIEJpdHN0cmVhbSAjMDog
c2VyaWFsPTB4MDAwMDAwNjYKKyAgICBmaXJzdCBwYWdlOiBwb3M9NDYwODggc2l6ZT03OSBncD0w
CisgICAgbGFzdCBwYWdlOiBwb3M9NDYyMzQgc2l6ZT0xNTE5MSBncD00NDEwMAorCitMaW5rICMz
OiAxIGxvZ2ljYWwgYml0c3RyZWFtKHMpCisgIEJpdHN0cmVhbSAjMDogc2VyaWFsPTB4MDAwMDAw
NjcKKyAgICBmaXJzdCBwYWdlOiBwb3M9NjE0MjUgc2l6ZT03OSBncD0wCisgICAgbGFzdCBwYWdl
OiBwb3M9OTI1MjEgc2l6ZT0xNDY0NyBncD0xMzIzMDAKKworTGluayAjNDogMSBsb2dpY2FsIGJp
dHN0cmVhbShzKQorICBCaXRzdHJlYW0gIzA6IHNlcmlhbD0weDAwMDAwMDY4CisgICAgZmlyc3Qg
cGFnZTogcG9zPTEwNzE2OCBzaXplPTc5IGdwPTAKKyAgICBsYXN0IHBhZ2U6IHBvcz0xMDczMTQg
c2l6ZT0xNTUyOSBncD00NDEwMAorCitMaW5rICM1OiAxIGxvZ2ljYWwgYml0c3RyZWFtKHMpCisg
IEJpdHN0cmVhbSAjMDogc2VyaWFsPTB4MDAwMDAwNjkKKyAgICBmaXJzdCBwYWdlOiBwb3M9MTIy
ODQzIHNpemU9NzkgZ3A9MAorICAgIGxhc3QgcGFnZTogcG9zPTEzOTAyMCBzaXplPTE1MzkyIGdw
PTg4MjAwCisKK0xpbmsgIzY6IDEgbG9naWNhbCBiaXRzdHJlYW0ocykKKyAgQml0c3RyZWFtICMw
OiBzZXJpYWw9MHgwMDAwMDA2YQorICAgIGZpcnN0IHBhZ2U6IHBvcz0xNTQ0MTIgc2l6ZT03OSBn
cD0wCisgICAgbGFzdCBwYWdlOiBwb3M9MTU0NTU4IHNpemU9MTU1ODggZ3A9NDQxMDAKKworTGlu
ayAjNzogMSBsb2dpY2FsIGJpdHN0cmVhbShzKQorICBCaXRzdHJlYW0gIzA6IHNlcmlhbD0weDAw
MDAwMDZiCisgICAgZmlyc3QgcGFnZTogcG9zPTE3MDE0NiBzaXplPTc5IGdwPTAKKyAgICBsYXN0
IHBhZ2U6IHBvcz0yMTk4NDYgc2l6ZT0xNTE3NiBncD0xNzY0MDAKKworUGFyc2VyIHN0YXRzOgor
ICBwYWdlcyByZWFkOiAgICAgIDYxCisgIHNlZWtzOiAgICAgICAgICAgNTcKKyAgYmlzZWN0IHN0
ZXBzOiAgICA0MgpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNpbmdsZSBi
L3Rlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zaW5nbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMC4uNGE1MmU1MGFlMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3JlZi9m
YXRlL29nZy1jaGFpbi1zaW5nbGUKQEAgLTAsMCArMSwxMSBAQAorTGlua3M6IDEKKworTGluayAj
MDogMSBsb2dpY2FsIGJpdHN0cmVhbShzKQorICBCaXRzdHJlYW0gIzA6IHNlcmlhbD0weDAwMDAw
MDY0CisgICAgZmlyc3QgcGFnZTogcG9zPTAgc2l6ZT03OSBncD0wCisgICAgbGFzdCBwYWdlOiBw
b3M9NjE4ODMgc2l6ZT0xMzg3MiBncD0yMjA1MDAKKworUGFyc2VyIHN0YXRzOgorICBwYWdlcyBy
ZWFkOiAgICAgIDYKKyAgc2Vla3M6ICAgICAgICAgICAyCisgIGJpc2VjdCBzdGVwczogICAgMAot
LSAKMi41Mi4wCgoKRnJvbSBlMWU2NmRhMzFjZjczNDMzMzE1OTE5YjJjNWI5MTQyYzk3OTk5ZDhl
IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSb21haW4gQmVhdXhpcyA8cm9tYWluLmJl
YXV4aXNAZ21haWwuY29tPgpEYXRlOiBUdWUsIDI4IEp1bCAyMDI2IDE2OjQwOjM3IC0wNTAwClN1
YmplY3Q6IFtQQVRDSCAwOC8xMF0gYXZmb3JtYXQvb2dnOiBzdW0gY2hhaW5lZCBzdHJlYW0gZHVy
YXRpb25zIG92ZXIgbGlua3MKCm9nZ19nZXRfbGVuZ3RoKCkgcmVhZHMgdGhlIHRhaWwgb2YgdGhl
IGZpbGUsIHdoaWNoIG9uIGEgY2hhaW4gaXMgdGhlCmxhc3QgbGluayBhbG9uZSwgc28gc3VtIHRo
ZSBsaW5rcyBpbnN0ZWFkLCByZXVzaW5nIHdoYXQgaXQgZm91bmQgZm9yCndoZXJlIHRoZSBmaXJz
dCBwYWNrZXQgYWN0dWFsbHkgc3RhcnRzLgoKVGhlIHNlZWtpbmcgdGVzdHMgbm93IHJlcG9ydCAy
NHMgaW4gcGxhY2Ugb2YgMTFzIG9yIG5vdGhpbmcgYXQgYWxsLCBhbmQKZmF0ZS1vZ2ctdm9yYmlz
LWluaXRpYWwtcGFkZGluZy1jaGFpbmVkIG1vdmVzIHdpdGggdGhlbSwgaGF2aW5nIGhlbGQgb25l
CmxpbmsncyAwLjAzMjkwMnMgYWdhaW5zdCB0aGUgMC4wNjdzIHRoZSBmaWxlIGRlY29kZXMgdG8u
Ci0tLQogbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuYyAgICAgICAgICAgICAgICAgICAgIHwgNzMg
KysrKysrKysrKysrKysrKysrKwogbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuaCAgICAgICAgICAg
ICAgICAgICAgIHwgIDIgKwogdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstZmxhYyAgICAg
ICAgICAgIHwgIDIgKy0KIHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLW9wdXMgICAgICAg
ICAgICB8ICAyICstCiB0ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tc2Vlay10aGVvcmEgICAgICAg
ICAgfCAgMiArLQogdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstdm9yYmlzICAgICAgICAg
IHwgIDIgKy0KIC4uLi9mYXRlL29nZy12b3JiaXMtaW5pdGlhbC1wYWRkaW5nLWNoYWluZWQgICB8
ICA0ICstCiA3IGZpbGVzIGNoYW5nZWQsIDgxIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuYyBiL2xpYmF2Zm9ybWF0L29n
Zy9kZWNvZGVyLmMKaW5kZXggYzQ1ZjY1MmQ0My4uYjg1ZjFmYjBiNyAxMDA2NDQKLS0tIGEvbGli
YXZmb3JtYXQvb2dnL2RlY29kZXIuYworKysgYi9saWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5jCkBA
IC02OTEsOSArNjkxLDczIEBAIHN0YXRpYyBpbnQgb2dnX3JlYWRfY2xvc2UoQVZGb3JtYXRDb250
ZXh0ICpzKQogICAgIG9nZy0+bnN0cmVhbXMgPSAwOwogICAgIGF2X2ZyZWVwKCZvZ2ctPnN0cmVh
bXMpOwogCisgICAgZmZfb2dnX2ZyZWVfY2hhaW4oJm9nZy0+Y2hhaW4pOworCiAgICAgcmV0dXJu
IDA7CiB9CiAKKy8qKgorICogVG90YWwgZHVyYXRpb24gb2YgYSBjaGFpbmVkIGZpbGUsIGFzIHRo
ZSBzdW0gb2YgaXRzIGxpbmtzJy4KKyAqCisgKiBFdmVyeSBsaW5rIHJlc3RhcnRzIGl0cyBncmFu
dWxlIHBvc2l0aW9ucyBhdCB6ZXJvLCBzbyB0aGUgZ3JhbnVsZSBvZiBhCisgKiBsaW5rJ3MgbGFz
dCBwYWdlIGlzIHRoYXQgbGluaydzIG93biBkdXJhdGlvbiByYXRoZXIgdGhhbiBhIHBvc2l0aW9u
IG9uIHRoZQorICogZmlsZSdzIHRpbWVsaW5lLiBvZ2dfZ2V0X2xlbmd0aCgpIG9ubHkgZXZlciBy
ZWFkcyB0aGUgZmlsZSB0YWlsLCB3aGljaCBvbiBhCisgKiBjaGFpbmVkIGZpbGUgYmVsb25ncyB0
byB0aGUgbGFzdCBsaW5rIGFsb25lIGFuZCB0aGVyZWZvcmUgcmVwb3J0cyB0aGF0CisgKiBsaW5r
J3MgZHVyYXRpb24gYXMgdGhlIHdob2xlIGZpbGUncy4KKyAqCisgKiBUaGUgZGVtdXhlciBrZWVw
cyBvbmUgc2V0IG9mIHN0cmVhbSBwYXJhbWV0ZXJzIGFjcm9zcyBhIGNoYWluIC0KKyAqIG9nZ19y
ZXBsYWNlX3N0cmVhbSgpIHJlZnVzZXMgYSBjb2RlYyBjaGFuZ2UgYW5kIG9ubHkgcmVmcmVzaGVz
IG1ldGFkYXRhIC0gc28KKyAqIHRoZSBzYW1lIGdyYW51bGUgY29udmVyc2lvbiBhcHBsaWVzIHRv
IGV2ZXJ5IGxpbmsuCisgKgorICogUnVucyBhZnRlciBvZ2dfZ2V0X2xlbmd0aCgpLCB3aG9zZSBy
ZXN1bHQgY292ZXJzIHRoZSBsYXN0IGxpbmsgYWxvbmUuIFRoYXQKKyAqIHJlc3VsdCBpcyBub3Qg
dGhyb3duIGF3YXk6IHRoZSBvZmZzZXQgaXQgYXBwbGllZCBmb3IgdGhlIHRpbWVzdGFtcCB0aGUg
Zmlyc3QKKyAqIHBhY2tldCBhY3R1YWxseSBzdGFydHMgYXQgLSB3aGljaCBtYXkgYmUgbmVnYXRp
dmUsIGFuZCB3aGljaCBvbmx5IGl0cyBzZWNvbmQKKyAqIHBhc3MgY2FuIGRldGVybWluZSAtIGlz
IHJlY292ZXJlZCBhbmQgcmVhcHBsaWVkIHRvIHRoZSBzdW0sIHNvIGEgY2hhaW5lZCBmaWxlCisg
KiBrZWVwcyB0aGUgc2FtZSByZWZlcmVuY2UgcG9pbnQgYXMgYW4gdW5jaGFpbmVkIG9uZS4KKyAq
Lworc3RhdGljIHZvaWQgb2dnX2NoYWluX2dldF9sZW5ndGgoQVZGb3JtYXRDb250ZXh0ICpzKQor
eworICAgIHN0cnVjdCBvZ2cgKm9nZyA9IHMtPnByaXZfZGF0YTsKKyAgICBpbnQ2NF90IHRvdGFs
ID0gMCwgbGFzdCwgc3RhcnRfb2Zmc2V0OworICAgIEFWU3RyZWFtICpzdDsKKworICAgIC8qIENo
YWlucyBjYXJyeWluZyBzZXZlcmFsIGJpdHN0cmVhbXMgcGVyIGxpbmsgYXJlIG5vdCBzdXBwb3J0
ZWQuICovCisgICAgaWYgKCFvZ2ctPmNoYWluIHx8IG9nZy0+Y2hhaW4tPm5iX2xpbmtzIDwgMiB8
fCBvZ2ctPm5zdHJlYW1zICE9IDEpCisgICAgICAgIHJldHVybjsKKworICAgIHN0ID0gcy0+c3Ry
ZWFtc1swXTsKKworICAgIC8qIE9ubHkgYXZhaWxhYmxlIHdoZW4gb2dnX2dldF9sZW5ndGgoKSBt
YW5hZ2VkIHRvIHRpbWUgdGhlIGxhc3QgbGluazsKKyAgICAgKiB3aXRob3V0IGl0IHRoZSBzdW0g
c2ltcGx5IHN0YXJ0cyBmcm9tIHplcm8uICovCisgICAgc3RhcnRfb2Zmc2V0ID0gMDsKKyAgICBp
ZiAoc3QtPmR1cmF0aW9uICE9IEFWX05PUFRTX1ZBTFVFKSB7CisgICAgICAgIGxhc3QgPSBvZ2df
Z3B0b3B0cyhzLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb2dnLT5jaGFpbi0+bGlu
a3Nbb2dnLT5jaGFpbi0+bmJfbGlua3MgLSAxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC0+c3RyZWFtc1swXS0+bGFzdF9wYWdlLmdwLCBOVUxMKTsKKyAgICAgICAgaWYgKGxhc3Qg
IT0gQVZfTk9QVFNfVkFMVUUpCisgICAgICAgICAgICBzdGFydF9vZmZzZXQgPSBsYXN0IC0gc3Qt
PmR1cmF0aW9uOworICAgIH0KKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2dnLT5jaGFpbi0+
bmJfbGlua3M7IGkrKykgeworICAgICAgICBjb25zdCBPZ2dMaW5rICpsaW5rID0gb2dnLT5jaGFp
bi0+bGlua3NbaV07CisgICAgICAgIGludDY0X3QgcHRzOworCisgICAgICAgIGlmIChsaW5rLT5u
Yl9zdHJlYW1zICE9IDEpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcHRzID0gb2dn
X2dwdG9wdHMocywgMCwgbGluay0+c3RyZWFtc1swXS0+bGFzdF9wYWdlLmdwLCBOVUxMKTsKKyAg
ICAgICAgaWYgKHB0cyA9PSBBVl9OT1BUU19WQUxVRSB8fCBwdHMgPCAwKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHRvdGFsICs9IHB0czsKKyAgICB9CisKKyAgICB0b3RhbCAtPSBz
dGFydF9vZmZzZXQ7CisKKyAgICBzdC0+ZHVyYXRpb24gPSB0b3RhbDsKKyAgICBzLT5kdXJhdGlv
biAgPSBhdl9yZXNjYWxlX3EodG90YWwsIHN0LT50aW1lX2Jhc2UsIEFWX1RJTUVfQkFTRV9RKTsK
K30KKwogc3RhdGljIGludCBvZ2dfcmVhZF9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQogewog
ICAgIHN0cnVjdCBvZ2cgKm9nZyA9IHMtPnByaXZfZGF0YTsKQEAgLTczNCw2ICs3OTgsMTUgQEAg
c3RhdGljIGludCBvZ2dfcmVhZF9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQogICAgIGlmIChy
ZXQgPCAwKQogICAgICAgICByZXR1cm4gcmV0OwogCisgICAgLyogRW51bWVyYXRlIHRoZSBsaW5r
cywgc28gdGhhdCBhIGNoYWluZWQgZmlsZSdzIGR1cmF0aW9uIGNhbiBiZSBzdW1tZWQKKyAgICAg
KiBvdmVyIHRoZW0gcmF0aGVyIHRoYW4gdGFrZW4gZnJvbSB0aGUgdGFpbCBhbG9uZS4gQmVzdCBl
ZmZvcnQ6IGFuCisgICAgICogdW5zZWVrYWJsZSBvciBtYWxmb3JtZWQgaW5wdXQganVzdCBsZWF2
ZXMgdGhlIGNoYWluIHVua25vd24sIGFuZCB0aGUKKyAgICAgKiBkdXJhdGlvbiBvZ2dfZ2V0X2xl
bmd0aCgpIGZvdW5kIHN0YW5kcy4gKi8KKyAgICBpZiAocy0+cGItPnNlZWthYmxlICYgQVZJT19T
RUVLQUJMRV9OT1JNQUwpIHsKKyAgICAgICAgZmZfb2dnX3BhcnNlX2NoYWluKHMsICZvZ2ctPmNo
YWluLCBOVUxMKTsKKyAgICAgICAgb2dnX2NoYWluX2dldF9sZW5ndGgocyk7CisgICAgfQorCiAg
ICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmgg
Yi9saWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5oCmluZGV4IDMxN2Q3NTIwZDUuLmZhNjc1MzMwNDEg
MTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmgKKysrIGIvbGliYXZmb3JtYXQv
b2dnL2RlY29kZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBBVkZPUk1BVF9PR0dfREVD
T0RFUl9ICiAKICNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmZvcm1hdC5oIgorI2luY2x1ZGUgImxp
YmF2Zm9ybWF0L29nZy9jaGFpbi5oIgogCiBzdHJ1Y3Qgb2dnX2NvZGVjIHsKICAgICBjb25zdCBp
bnQ4X3QgKm1hZ2ljOwpAQCAtMTMwLDYgKzEzMSw3IEBAIHN0cnVjdCBvZ2cgewogICAgIGludCBj
dXJpZHg7CiAgICAgaW50NjRfdCBwYWdlX3BvczsgICAgICAgICAgICAgICAgICAgLy8vPCBmaWxl
IG9mZnNldCBvZiB0aGUgY3VycmVudCBwYWdlCiAgICAgc3RydWN0IG9nZ19zdGF0ZSAqc3RhdGU7
CisgICAgT2dnQ2hhaW4gKmNoYWluOyAgICAgICAgICAgICAgICAgICAgLy8vPCBsaW5rcyBvZiB0
aGUgZmlsZSwgTlVMTCBpZiB1bmtub3duCiB9OwogCiAjZGVmaW5lIE9HR19GTEFHX0NPTlQgMQpk
aWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstZmxhYyBiL3Rlc3RzL3Jl
Zi9mYXRlL29nZy1jaGFpbi1zZWVrLWZsYWMKaW5kZXggZDI3YWY4MDljNi4uZTllMmE2ZTYzZSAx
MDA2NDQKLS0tIGEvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstZmxhYworKysgYi90ZXN0
cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tc2Vlay1mbGFjCkBAIC0xMCw0ICsxMCw0IEBAIHB0cz0xODAy
MjQKIHB0c190aW1lPTQuMDg2NzEyCiBwdHM9MTgwMjI0CiBwdHNfdGltZT00LjA4NjcxMgotZHVy
YXRpb249Ti9BCitkdXJhdGlvbj0yNC4wMDAwMDAKZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZi9mYXRl
L29nZy1jaGFpbi1zZWVrLW9wdXMgYi90ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tc2Vlay1vcHVz
CmluZGV4IDE1ZGM4MDE0ZGYuLjdjM2NmMzFmNTYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3JlZi9mYXRl
L29nZy1jaGFpbi1zZWVrLW9wdXMKKysrIGIvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWst
b3B1cwpAQCAtMTAsNCArMTAsNCBAQCBwdHM9MTkxNjg4CiBwdHNfdGltZT0zLjk5MzUwMAogcHRz
PTE5MTY4OAogcHRzX3RpbWU9My45OTM1MDAKLWR1cmF0aW9uPU4vQQorZHVyYXRpb249MjQuMDE5
NTAwCmRpZmYgLS1naXQgYS90ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tc2Vlay10aGVvcmEgYi90
ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tc2Vlay10aGVvcmEKaW5kZXggNzcyNTlhYjVhOC4uODY3
NjNlYTIwZCAxMDA2NDQKLS0tIGEvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstdGhlb3Jh
CisrKyBiL3Rlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLXRoZW9yYQpAQCAtMTAsNCArMTAs
NCBAQCBwdHM9NzIKIHB0c190aW1lPTQuODAwMDAwCiBwdHM9NzIKIHB0c190aW1lPTQuODAwMDAw
Ci1kdXJhdGlvbj0xMS4wMDAwMDAKK2R1cmF0aW9uPTI0LjAwMDAwMApkaWZmIC0tZ2l0IGEvdGVz
dHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstdm9yYmlzIGIvdGVzdHMvcmVmL2ZhdGUvb2dnLWNo
YWluLXNlZWstdm9yYmlzCmluZGV4IDgwYjViZTExZGYuLjhlZTcxYzQ3MTEgMTAwNjQ0Ci0tLSBh
L3Rlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLXZvcmJpcworKysgYi90ZXN0cy9yZWYvZmF0
ZS9vZ2ctY2hhaW4tc2Vlay12b3JiaXMKQEAgLTEwLDQgKzEwLDQgQEAgcHRzPTE3OTc3NgogcHRz
X3RpbWU9NC4wNzY1NTMKIHB0cz0xNzk3NzYKIHB0c190aW1lPTQuMDc2NTUzCi1kdXJhdGlvbj0x
MS4wMDI5MDIKK2R1cmF0aW9uPTI0LjAwMjkwMgpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUv
b2dnLXZvcmJpcy1pbml0aWFsLXBhZGRpbmctY2hhaW5lZCBiL3Rlc3RzL3JlZi9mYXRlL29nZy12
b3JiaXMtaW5pdGlhbC1wYWRkaW5nLWNoYWluZWQKaW5kZXggMTAwM2IzYjM5NS4uYmI2M2IyMjY3
MiAxMDA2NDQKLS0tIGEvdGVzdHMvcmVmL2ZhdGUvb2dnLXZvcmJpcy1pbml0aWFsLXBhZGRpbmct
Y2hhaW5lZAorKysgYi90ZXN0cy9yZWYvZmF0ZS9vZ2ctdm9yYmlzLWluaXRpYWwtcGFkZGluZy1j
aGFpbmVkCkBAIC0xNDEsOCArMTQxLDggQEAgbmJfcHJvZ3JhbXM9MAogbmJfc3RyZWFtX2dyb3Vw
cz0wCiBmb3JtYXRfbmFtZT1vZ2cKIHN0YXJ0X3RpbWU9LTAuMDAyOTAyCi1kdXJhdGlvbj0wLjAz
MjkwMgorZHVyYXRpb249MC4wNjI5MDIKIHNpemU9NzE1MQotYml0X3JhdGU9MTczODczOQorYml0
X3JhdGU9OTA5NDc4CiBwcm9iZV9zY29yZT0xMDAKIFsvRk9STUFUXQotLSAKMi41Mi4wCgoKRnJv
bSBjYmQ0NWM5ZTRiZTNmMmQxYWFlNjM3NjhhZTY4YzFmMDIyZDQxYmY5IE1vbiBTZXAgMTcgMDA6
MDA6MDAgMjAwMQpGcm9tOiBSb21haW4gQmVhdXhpcyA8cm9tYWluLmJlYXV4aXNAZ21haWwuY29t
PgpEYXRlOiBUdWUsIDI4IEp1bCAyMDI2IDE2OjQwOjM3IC0wNTAwClN1YmplY3Q6IFtQQVRDSCAw
OS8xMF0gYXZmb3JtYXQvb2dnOiBwbGFjZSBjaGFpbmVkIHRpbWVzdGFtcHMgb24gb25lIHRpbWVs
aW5lCgpHcmFudWxlIHBvc2l0aW9ucyByZXN0YXJ0IGluIGV2ZXJ5IGxpbmssIHNvIHNoaWZ0IGJ5
IHdoZXJlIGVhY2ggbGluawpiZWdpbnMsIGRvaW5nIGl0IHdoZXJlIHRpbWVzdGFtcHMgYXJlIGhh
bmRlZCBvdXQgcmF0aGVyIHRoYW4gd2hlcmUgdGhleQphcmUgc3RvcmVkLCBzaW5jZSBjb2RlYyBw
YXJzZXJzIGRlcml2ZSBsYXN0cHRzIGZyb20gdGhlIHJhdyBncmFudWxlIGFuZApwYXJzZW9wdXMu
YyByZWFkcyBhIHZhbHVlIG9mIGV4YWN0bHkgemVybyBhcyB0aGUgbWFyayBvZiBhIGxpbmsgaGF2
aW5nCmJlZ3VuLgoKVGhlIHNlZWtpbmcgdGVzdHMgZG8gbm90IG1vdmUgeWV0OiBzZWVraW5nIGFs
c28gbmVlZHMgdGhlIHJlYWRlciB0bwpyZXN1bWUgaW5zaWRlIGEgbGluayBpdCBkaWQgbm90IGVu
dGVyIGZyb20gdGhlIHN0YXJ0LgotLS0KIGxpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmMgfCA4MCAr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIGxpYmF2Zm9ybWF0L29nZy9k
ZWNvZGVyLmggfCAgMSArCiAyIGZpbGVzIGNoYW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDExIGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmMgYi9saWJh
dmZvcm1hdC9vZ2cvZGVjb2Rlci5jCmluZGV4IGI4NWYxZmIwYjcuLjdhMDJiNTU2NWEgMTAwNjQ0
Ci0tLSBhL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmMKKysrIGIvbGliYXZmb3JtYXQvb2dnL2Rl
Y29kZXIuYwpAQCAtNjMsNiArNjMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9nZ19jb2RlYyAq
IGNvbnN0IG9nZ19jb2RlY3NbXSA9IHsKIHN0YXRpYyBpbnQ2NF90IG9nZ19jYWxjX3B0cyhBVkZv
cm1hdENvbnRleHQgKnMsIGludCBpZHgsIGludDY0X3QgKmR0cyk7CiBzdGF0aWMgaW50IG9nZ19u
ZXdfc3RyZWFtKEFWRm9ybWF0Q29udGV4dCAqcywgdWludDMyX3Qgc2VyaWFsKTsKIHN0YXRpYyBp
bnQgb2dnX3Jlc3RvcmUoQVZGb3JtYXRDb250ZXh0ICpzKTsKK3N0YXRpYyBpbnQ2NF90IG9nZ19s
aW5rX3N0YXJ0X3RpbWUoQVZGb3JtYXRDb250ZXh0ICpzLCBpbnQ2NF90IHBhZ2VfcG9zKTsKIAog
c3RhdGljIHZvaWQgZnJlZV9zdHJlYW0oQVZGb3JtYXRDb250ZXh0ICpzLCBpbnQgaSkKIHsKQEAg
LTI2MSw2ICsyNjIsOSBAQCBzdGF0aWMgaW50IG9nZ19yZXBsYWNlX3N0cmVhbShBVkZvcm1hdENv
bnRleHQgKnMsIHVpbnQzMl90IHNlcmlhbCwgY2hhciAqbWFnaWMsCiAgICAgb3MtPnNlcmlhbCAg
PSBzZXJpYWw7CiAgICAgb3MtPmNvZGVjICAgPSBjb2RlYzsKICAgICBvcy0+c2VyaWFsICA9IHNl
cmlhbDsKKyAgICAvKiBUaW1lc3RhbXBzIHJlc3RhcnQgd2l0aCB0aGUgbmV3IGxpbmsuIENvZGVj
IHBhcnNlcnMgcmVseSBvbiB0aGlzIGJlaW5nCisgICAgICogZXhhY3RseSB6ZXJvIHRvIG5vdGlj
ZSBhIGxpbmsgaGFzIGJlZ3VuIC0gc2VlIHBhcnNlb3B1cy5jIC0gYW5kCisgICAgICogb2dnX2Nh
bGNfcHRzKCkgcHV0cyB0aGUgbGluayBiYWNrIG9uIHRoZSBmaWxlJ3MgdGltZWxpbmUgYWZ0ZXJ3
YXJkcy4gKi8KICAgICBvcy0+bGFzdHB0cyA9IDA7CiAgICAgb3MtPmxhc3RkdHMgPSAwOwogICAg
IG9zLT5mbGFncyAgID0gMDsKQEAgLTY5MSw2ICs2OTUsNyBAQCBzdGF0aWMgaW50IG9nZ19yZWFk
X2Nsb3NlKEFWRm9ybWF0Q29udGV4dCAqcykKICAgICBvZ2ctPm5zdHJlYW1zID0gMDsKICAgICBh
dl9mcmVlcCgmb2dnLT5zdHJlYW1zKTsKIAorICAgIGF2X2ZyZWVwKCZvZ2ctPmxpbmtfc3RhcnRf
dGltZSk7CiAgICAgZmZfb2dnX2ZyZWVfY2hhaW4oJm9nZy0+Y2hhaW4pOwogCiAgICAgcmV0dXJu
IDA7CkBAIC03MTUsMzkgKzcyMCw0OSBAQCBzdGF0aWMgaW50IG9nZ19yZWFkX2Nsb3NlKEFWRm9y
bWF0Q29udGV4dCAqcykKICAqIHBhc3MgY2FuIGRldGVybWluZSAtIGlzIHJlY292ZXJlZCBhbmQg
cmVhcHBsaWVkIHRvIHRoZSBzdW0sIHNvIGEgY2hhaW5lZCBmaWxlCiAgKiBrZWVwcyB0aGUgc2Ft
ZSByZWZlcmVuY2UgcG9pbnQgYXMgYW4gdW5jaGFpbmVkIG9uZS4KICAqLwotc3RhdGljIHZvaWQg
b2dnX2NoYWluX2dldF9sZW5ndGgoQVZGb3JtYXRDb250ZXh0ICpzKQorc3RhdGljIHZvaWQgb2dn
X2NoYWluX2J1aWxkX3RpbWVsaW5lKEFWRm9ybWF0Q29udGV4dCAqcykKIHsKICAgICBzdHJ1Y3Qg
b2dnICpvZ2cgPSBzLT5wcml2X2RhdGE7CiAgICAgaW50NjRfdCB0b3RhbCA9IDAsIGxhc3QsIHN0
YXJ0X29mZnNldDsKKyAgICBpbnQgbmJfbGlua3M7CiAgICAgQVZTdHJlYW0gKnN0OwogCiAgICAg
LyogQ2hhaW5zIGNhcnJ5aW5nIHNldmVyYWwgYml0c3RyZWFtcyBwZXIgbGluayBhcmUgbm90IHN1
cHBvcnRlZC4gKi8KICAgICBpZiAoIW9nZy0+Y2hhaW4gfHwgb2dnLT5jaGFpbi0+bmJfbGlua3Mg
PCAyIHx8IG9nZy0+bnN0cmVhbXMgIT0gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3QgPSBz
LT5zdHJlYW1zWzBdOworICAgIG5iX2xpbmtzID0gb2dnLT5jaGFpbi0+bmJfbGlua3M7CisgICAg
c3QgICAgICAgPSBzLT5zdHJlYW1zWzBdOwogCiAgICAgLyogT25seSBhdmFpbGFibGUgd2hlbiBv
Z2dfZ2V0X2xlbmd0aCgpIG1hbmFnZWQgdG8gdGltZSB0aGUgbGFzdCBsaW5rOwogICAgICAqIHdp
dGhvdXQgaXQgdGhlIHN1bSBzaW1wbHkgc3RhcnRzIGZyb20gemVyby4gKi8KICAgICBzdGFydF9v
ZmZzZXQgPSAwOwogICAgIGlmIChzdC0+ZHVyYXRpb24gIT0gQVZfTk9QVFNfVkFMVUUpIHsKICAg
ICAgICAgbGFzdCA9IG9nZ19ncHRvcHRzKHMsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBvZ2ctPmNoYWluLT5saW5rc1tvZ2ctPmNoYWluLT5uYl9saW5rcyAtIDFdCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvZ2ctPmNoYWluLT5saW5rc1tuYl9saW5rcyAtIDFdCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLT5zdHJlYW1zWzBdLT5sYXN0X3BhZ2UuZ3AsIE5VTEwp
OwogICAgICAgICBpZiAobGFzdCAhPSBBVl9OT1BUU19WQUxVRSkKICAgICAgICAgICAgIHN0YXJ0
X29mZnNldCA9IGxhc3QgLSBzdC0+ZHVyYXRpb247CiAgICAgfQogCi0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBvZ2ctPmNoYWluLT5uYl9saW5rczsgaSsrKSB7CisgICAgb2dnLT5saW5rX3N0YXJ0
X3RpbWUgPSBhdl9jYWxsb2MobmJfbGlua3MsIHNpemVvZigqb2dnLT5saW5rX3N0YXJ0X3RpbWUp
KTsKKyAgICBpZiAoIW9nZy0+bGlua19zdGFydF90aW1lKQorICAgICAgICByZXR1cm47CisKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG5iX2xpbmtzOyBpKyspIHsKICAgICAgICAgY29uc3QgT2dn
TGluayAqbGluayA9IG9nZy0+Y2hhaW4tPmxpbmtzW2ldOwogICAgICAgICBpbnQ2NF90IHB0czsK
IAogICAgICAgICBpZiAobGluay0+bmJfc3RyZWFtcyAhPSAxKQotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgZ290byBmYWlsOworCisgICAgICAgIC8qIExvY2FsIHRpbWVzdGFtcHMg
d2l0aGluIHRoaXMgbGluayBhcmUgb2Zmc2V0IGJ5IGV2ZXJ5dGhpbmcgdGhhdAorICAgICAgICAg
KiBjYW1lIGJlZm9yZSBpdC4gKi8KKyAgICAgICAgb2dnLT5saW5rX3N0YXJ0X3RpbWVbaV0gPSB0
b3RhbDsKIAogICAgICAgICBwdHMgPSBvZ2dfZ3B0b3B0cyhzLCAwLCBsaW5rLT5zdHJlYW1zWzBd
LT5sYXN0X3BhZ2UuZ3AsIE5VTEwpOwogICAgICAgICBpZiAocHRzID09IEFWX05PUFRTX1ZBTFVF
IHx8IHB0cyA8IDApCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBnb3RvIGZhaWw7
CiAKICAgICAgICAgdG90YWwgKz0gcHRzOwogICAgIH0KQEAgLTc1Niw2ICs3NzEsMzIgQEAgc3Rh
dGljIHZvaWQgb2dnX2NoYWluX2dldF9sZW5ndGgoQVZGb3JtYXRDb250ZXh0ICpzKQogCiAgICAg
c3QtPmR1cmF0aW9uID0gdG90YWw7CiAgICAgcy0+ZHVyYXRpb24gID0gYXZfcmVzY2FsZV9xKHRv
dGFsLCBzdC0+dGltZV9iYXNlLCBBVl9USU1FX0JBU0VfUSk7CisKKyAgICByZXR1cm47CisKK2Zh
aWw6CisgICAgYXZfZnJlZXAoJm9nZy0+bGlua19zdGFydF90aW1lKTsKK30KKworLyoqCisgKiBX
aGVyZSB0aGUgbGluayBob2xkaW5nIGEgZ2l2ZW4gZmlsZSBvZmZzZXQgYmVnaW5zIG9uIHRoZSBm
aWxlJ3MgdGltZWxpbmUsCisgKiBpbiB0aGUgc3RyZWFtJ3MgdGltZSBiYXNlLgorICoKKyAqIFpl
cm8gd2hlbiB0aGUgY2hhaW4gd2FzIG5vdCBzY2FubmVkLCB3aGljaCBpcyB3aGF0IGxlYXZlcyBh
biB1bnNlZWthYmxlCisgKiBpbnB1dCBydW5uaW5nIG9uIHRoZSBkZW11eGVyJ3Mgb3duIGNhcnJp
ZWQtZm9yd2FyZCB0aW1lc3RhbXBzIGFsb25lLgorICovCitzdGF0aWMgaW50NjRfdCBvZ2dfbGlu
a19zdGFydF90aW1lKEFWRm9ybWF0Q29udGV4dCAqcywgaW50NjRfdCBwYWdlX3BvcykKK3sKKyAg
ICBzdHJ1Y3Qgb2dnICpvZ2cgPSBzLT5wcml2X2RhdGE7CisKKyAgICBpZiAoIW9nZy0+Y2hhaW4g
fHwgIW9nZy0+bGlua19zdGFydF90aW1lKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZvciAo
aW50IGkgPSBvZ2ctPmNoYWluLT5uYl9saW5rcyAtIDE7IGkgPiAwOyBpLS0pCisgICAgICAgIGlm
IChwYWdlX3BvcyA+PSBvZ2ctPmNoYWluLT5saW5rc1tpXS0+c3RyZWFtc1swXS0+Zmlyc3RfcGFn
ZS5wYWdlX3BvcykKKyAgICAgICAgICAgIHJldHVybiBvZ2ctPmxpbmtfc3RhcnRfdGltZVtpXTsK
KworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IG9nZ19yZWFkX2hlYWRlcihBVkZvcm1h
dENvbnRleHQgKnMpCkBAIC04MDQsNyArODQ1LDcgQEAgc3RhdGljIGludCBvZ2dfcmVhZF9oZWFk
ZXIoQVZGb3JtYXRDb250ZXh0ICpzKQogICAgICAqIGR1cmF0aW9uIG9nZ19nZXRfbGVuZ3RoKCkg
Zm91bmQgc3RhbmRzLiAqLwogICAgIGlmIChzLT5wYi0+c2Vla2FibGUgJiBBVklPX1NFRUtBQkxF
X05PUk1BTCkgewogICAgICAgICBmZl9vZ2dfcGFyc2VfY2hhaW4ocywgJm9nZy0+Y2hhaW4sIE5V
TEwpOwotICAgICAgICBvZ2dfY2hhaW5fZ2V0X2xlbmd0aChzKTsKKyAgICAgICAgb2dnX2NoYWlu
X2J1aWxkX3RpbWVsaW5lKHMpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtODE1LDI1ICs4
NTYsNDIgQEAgc3RhdGljIGludDY0X3Qgb2dnX2NhbGNfcHRzKEFWRm9ybWF0Q29udGV4dCAqcywg
aW50IGlkeCwgaW50NjRfdCAqZHRzKQogICAgIHN0cnVjdCBvZ2cgKm9nZyAgICAgICA9IHMtPnBy
aXZfZGF0YTsKICAgICBzdHJ1Y3Qgb2dnX3N0cmVhbSAqb3MgPSBvZ2ctPnN0cmVhbXMgKyBpZHg7
CiAgICAgaW50NjRfdCBwdHMgICAgICAgICAgID0gQVZfTk9QVFNfVkFMVUU7CisgICAgLyogR3Jh
bnVsZSBwb3NpdGlvbnMgcmVzdGFydCBhdCB6ZXJvIGluIGV2ZXJ5IGxpbmsgb2YgYSBjaGFpbiwg
c28gb24gdGhlaXIKKyAgICAgKiBvd24gdGhleSBwbGFjZSBhIHBhY2tldCB3aXRoaW4gaXRzIGxp
bmsgcmF0aGVyIHRoYW4gd2l0aGluIHRoZSBmaWxlLgorICAgICAqIFNoaWZ0aW5nIGJ5IHdoZXJl
IHRoZSBsaW5rIGJlZ2lucyBtYWtlcyB0aGUgdGltZWxpbmUgbW9ub3RvbmljIGFjcm9zcworICAg
ICAqIHRoZSB3aG9sZSBmaWxlLCB3aGljaCBpcyB3aGF0IHRoZSBnZW5lcmljIGJpbmFyeSBzZWFy
Y2ggaW4KKyAgICAgKiBmZl9zZWVrX2ZyYW1lX2JpbmFyeSgpIGFzc3VtZXMuCisgICAgICoKKyAg
ICAgKiBUaGUgc2hpZnQgYmVsb25ncyBoZXJlLCB3aGVyZSB0aW1lc3RhbXBzIGFyZSBoYW5kZWQg
b3V0LCByYXRoZXIgdGhhbgorICAgICAqIHdoZXJlIHRoZXkgYXJlIHN0b3JlZDogY29kZWMgcGFy
c2VycyBkZXJpdmUgb3MtPmxhc3RwdHMgZnJvbSB0aGUgcmF3CisgICAgICogZ3JhbnVsZSB0aGVt
c2VsdmVzLCBhbmQgcGFyc2VvcHVzLmMgdXNlcyBhIHZhbHVlIG9mIGV4YWN0bHkgemVybyB0bwor
ICAgICAqIHJlY29nbmlzZSB0aGF0IGEgbGluayBoYXMgYmVndW4uIEV2ZXJ5dGhpbmcgdXBzdHJl
YW0gb2YgdGhpcyBwb2ludAorICAgICAqIHN0YXlzIGluIHRoZSBsaW5rJ3Mgb3duIGZyYW1lIG9m
IHJlZmVyZW5jZS4gKi8KKyAgICBpbnQ2NF90IG9mZnNldCA9IG9nZ19saW5rX3N0YXJ0X3RpbWUo
cywgb3MtPnBhZ2VfcG9zKTsKIAogICAgIGlmIChkdHMpCiAgICAgICAgICpkdHMgPSBBVl9OT1BU
U19WQUxVRTsKIAogICAgIGlmIChvcy0+bGFzdHB0cyAhPSBBVl9OT1BUU19WQUxVRSkgewotICAg
ICAgICBwdHMgICAgICAgICA9IG9zLT5sYXN0cHRzOworICAgICAgICBwdHMgICAgICAgICA9IG9z
LT5sYXN0cHRzICsgb2Zmc2V0OwogICAgICAgICBvcy0+bGFzdHB0cyA9IEFWX05PUFRTX1ZBTFVF
OwogICAgIH0KICAgICBpZiAob3MtPmxhc3RkdHMgIT0gQVZfTk9QVFNfVkFMVUUpIHsKICAgICAg
ICAgaWYgKGR0cykKLSAgICAgICAgICAgICpkdHMgPSBvcy0+bGFzdGR0czsKKyAgICAgICAgICAg
ICpkdHMgPSBvcy0+bGFzdGR0cyArIG9mZnNldDsKICAgICAgICAgb3MtPmxhc3RkdHMgPSBBVl9O
T1BUU19WQUxVRTsKICAgICB9CiAgICAgaWYgKG9zLT5wYWdlX2VuZCkgewogICAgICAgICBpZiAo
b3MtPmdyYW51bGUgIT0gLTFMTCkgewotICAgICAgICAgICAgaWYgKG9zLT5jb2RlYyAmJiBvcy0+
Y29kZWMtPmdyYW51bGVfaXNfc3RhcnQpCisgICAgICAgICAgICBpZiAob3MtPmNvZGVjICYmIG9z
LT5jb2RlYy0+Z3JhbnVsZV9pc19zdGFydCkgewogICAgICAgICAgICAgICAgIHB0cyA9IG9nZ19n
cHRvcHRzKHMsIGlkeCwgb3MtPmdyYW51bGUsIGR0cyk7Ci0gICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgaWYgKHB0cyAhPSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICAgICAgICAgICAg
ICAgcHRzICs9IG9mZnNldDsKKyAgICAgICAgICAgICAgICBpZiAoZHRzICYmICpkdHMgIT0gQVZf
Tk9QVFNfVkFMVUUpCisgICAgICAgICAgICAgICAgICAgICpkdHMgKz0gb2Zmc2V0OworICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBvcy0+bGFzdHB0cyA9IG9nZ19ncHRvcHRz
KHMsIGlkeCwgb3MtPmdyYW51bGUsICZvcy0+bGFzdGR0cyk7CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBvcy0+Z3JhbnVsZSA9IC0xTEw7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQg
YS9saWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5oIGIvbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuaApp
bmRleCBmYTY3NTMzMDQxLi5iZjM0ZThlM2ZjIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9vZ2cv
ZGVjb2Rlci5oCisrKyBiL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmgKQEAgLTEzMiw2ICsxMzIs
NyBAQCBzdHJ1Y3Qgb2dnIHsKICAgICBpbnQ2NF90IHBhZ2VfcG9zOyAgICAgICAgICAgICAgICAg
ICAvLy88IGZpbGUgb2Zmc2V0IG9mIHRoZSBjdXJyZW50IHBhZ2UKICAgICBzdHJ1Y3Qgb2dnX3N0
YXRlICpzdGF0ZTsKICAgICBPZ2dDaGFpbiAqY2hhaW47ICAgICAgICAgICAgICAgICAgICAvLy88
IGxpbmtzIG9mIHRoZSBmaWxlLCBOVUxMIGlmIHVua25vd24KKyAgICBpbnQ2NF90ICpsaW5rX3N0
YXJ0X3RpbWU7ICAgICAgICAgICAvLy88IHN0YXJ0IG9mIGVhY2ggbGluayBvbiB0aGUgZmlsZSB0
aW1lbGluZQogfTsKIAogI2RlZmluZSBPR0dfRkxBR19DT05UIDEKLS0gCjIuNTIuMAoKCkZyb20g
NWQxOWI4MzI3MzBkODY0OTZkYWJkODczZGIxMTI4ZTEzYTk0N2VjZiBNb24gU2VwIDE3IDAwOjAw
OjAwIDIwMDEKRnJvbTogUm9tYWluIEJlYXV4aXMgPHJvbWFpbi5iZWF1eGlzQGdtYWlsLmNvbT4K
RGF0ZTogVHVlLCAyOCBKdWwgMjAyNiAxNjo0MDozNyAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTAv
MTBdIGF2Zm9ybWF0L29nZzogcmVzdW1lIHJlYWRpbmcgaW5zaWRlIGEga25vd24gbGluawoKb2dn
X3JlYWRfcGFnZSgpIHRlbGxzIGEgY2hhaW5lZCBzdHJlYW0gZnJvbSB0aGUgaW5pdGlhbCBydW4g
b2YgaGVhZGVycwpieSBnb3RfZGF0YSwgd2hpY2ggb2dnX3Jlc2V0KCkgY2xlYXJlZCwgc28gYWZ0
ZXIgZXZlcnkgcmVwb3NpdGlvbiB0aGUKZGVtdXhlciBiZWxpZXZlZCBpdHNlbGYgYmFjayBhdCB0
aGUgc3RhcnQgb2YgdGhlIGZpbGUgYW5kIGFkZGVkIGEgc3RyZWFtCnJhdGhlciB0aGFuIHJlcGxh
Y2luZyBvbmUuCgpMZWF2ZSBpdCBhbG9uZSBvbiBhIHJlcG9zaXRpb24sIGFuZCB3aGVyZSB0aGUg
Y2hhaW4gaGFzIGJlZW4gc2Nhbm5lZCBsZXQKdGhlIHN0cmVhbSBjYXJyeSBvbiB3aXRoIGEgc2Vy
aWFsIHByb3ZlZCB0byBiZSB0aGUgZmlsZSdzIG93biwgc28gdGhhdApzZWVrcyBsYW5kIGF0IG9y
IGJlZm9yZSB3aGF0IHdhcyBhc2tlZCBmb3IsIGluIHRoZSBsaW5rIHRoYXQgaG9sZHMgaXQ6Cgog
IHNlZWsgdG8gICAgICAycyAgICAgIDRzICAgICAgN3MgICAgIDEycyAgICAgMTVzICAgICAyMnMK
ICBmbGFjICAgICAgMC4wMDAgICAzLjA2NSAgIDYuMDIyICAxMC4xMDggIDEzLjAwMCAgMjEuMTcz
CiAgdm9yYmlzICAgLTAuMDAzICAgMy4wNTUgICA2LjAxMiAgMTAuMDk4ICAxNC4wMTIgIDIxLjE2
MwogIG9wdXMgICAgICAxLjk5NCAgIDMuOTk0ICAgNy4wMDAgIDEyLjAwMCAgMTQuMDA3ICAyMS4w
MDcKICB0aGVvcmEgICAgMS42MDAgICA0LjAwMCAgIDYuNjAwICAxMS40MDAgIDE0LjYwMCAgMjEu
ODAwCi0tLQogbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuYyAgICAgICAgICAgIHwgNjkgKysrKysr
KysrKysrKysrKysrKysrKysrKystLQogbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuaCAgICAgICAg
ICAgIHwgIDMgKy0KIHRlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLWZsYWMgICB8IDIwICsr
KystLS0tCiB0ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tc2Vlay1vcHVzICAgfCAxNiArKystLS0t
CiB0ZXN0cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tc2Vlay10aGVvcmEgfCAxNiArKystLS0tCiB0ZXN0
cy9yZWYvZmF0ZS9vZ2ctY2hhaW4tc2Vlay12b3JiaXMgfCAyMCArKysrLS0tLQogNiBmaWxlcyBj
aGFuZ2VkLCAxMDIgaW5zZXJ0aW9ucygrKSwgNDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
bGliYXZmb3JtYXQvb2dnL2RlY29kZXIuYyBiL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmMKaW5k
ZXggN2EwMmI1NTY1YS4uZDFjODliY2E1NiAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvb2dnL2Rl
Y29kZXIuYworKysgYi9saWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5jCkBAIC0xODcsNyArMTg3LDYg
QEAgc3RhdGljIHZvaWQgb2dnX3N0cmVhbV9yZXNldChzdHJ1Y3Qgb2dnX3N0cmVhbSAqb3MsIGlu
dCBhdF9kYXRhX3N0YXJ0KQogICAgIG9zLT5pbmNvbXBsZXRlID0gMDsKICAgICBvcy0+cGFnZV9z
dGFydCA9IDA7CiAgICAgb3MtPnBhZ2VfZW5kICAgPSAwOwotICAgIG9zLT5nb3RfZGF0YSAgID0g
MDsKICAgICBvcy0+bGFzdHB0cyAgICA9IGF0X2RhdGFfc3RhcnQgPyAwIDogQVZfTk9QVFNfVkFM
VUU7CiAgICAgb3MtPmxhc3RkdHMgICAgPSBBVl9OT1BUU19WQUxVRTsKICAgICBvcy0+c3RhcnRf
dHJpbW1pbmcgPSAwOwpAQCAtMjc1LDYgKzI3NCw1NyBAQCBzdGF0aWMgaW50IG9nZ19yZXBsYWNl
X3N0cmVhbShBVkZvcm1hdENvbnRleHQgKnMsIHVpbnQzMl90IHNlcmlhbCwgY2hhciAqbWFnaWMs
CiAgICAgcmV0dXJuIGk7CiB9CiAKK3N0YXRpYyBpbnQgb2dnX2NoYWluX2hhc19zZXJpYWwoY29u
c3QgT2dnQ2hhaW4gKmNoYWluLCB1aW50MzJfdCBzZXJpYWwpCit7CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBjaGFpbi0+bmJfbGlua3M7IGkrKykKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGog
PCBjaGFpbi0+bGlua3NbaV0tPm5iX3N0cmVhbXM7IGorKykKKyAgICAgICAgICAgIGlmIChjaGFp
bi0+bGlua3NbaV0tPnN0cmVhbXNbal0tPnNlcmlhbCA9PSBzZXJpYWwpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIDE7CisKKyAgICByZXR1cm4gMDsKK30KKworLyoqCisgKiBDb250aW51ZSByZWFk
aW5nIGluIGEgbGluayB0aGUgc2NhbiBhbHJlYWR5IGZvdW5kLCB3aGVuIGEgc2VlayBsYW5kcyBp
bnNpZGUKKyAqIGl0IHJhdGhlciB0aGFuIG9uIGl0cyBmaXJzdCBwYWdlLgorICoKKyAqIG9nZ19y
ZXBsYWNlX3N0cmVhbSgpIGNhbm5vdCBzZXJ2ZSBoZXJlOiBpdCBpZGVudGlmaWVzIHRoZSBjb2Rl
YyBmcm9tIHRoZQorICogaGVhZGVyIHBhY2tldCwgd2hpY2ggb25seSBleGlzdHMgYXQgdGhlIGhl
YWQgb2YgYSBsaW5rLiBMYW5kaW5nIGFueXdoZXJlCisgKiBlbHNlIGxlYXZlcyBpdCB3aXRoIGF1
ZGlvIGRhdGEgaXQgY2Fubm90IHJlY29nbmlzZS4gSGF2aW5nIHNjYW5uZWQgdGhlCisgKiBjaGFp
biwgdGhlIHNlcmlhbCBpcyBrbm93biB0byBiZWxvbmcgdG8gdGhpcyBmaWxlLCBhbmQgdGhlIHBh
cmFtZXRlcnMgYXJlCisgKiB0aGUgb25lcyBhbHJlYWR5IGluIHVzZSwgc28gdGhlIHN0cmVhbSBj
YW4gc2ltcGx5IGNhcnJ5IG9uIHdpdGggaXQuCisgKgorICogTGFuZGluZyBoZXJlIHNheXMgbm90
aGluZyBhYm91dCB0aGUgdGltZXN0YW1wOiB0aGUgcG9zaXRpb24gaXMgc29tZXdoZXJlCisgKiBp
bnNpZGUgdGhlIGxpbmssIG5vdCBhdCBpdHMgc3RhcnQuIFRpbWVzdGFtcHMgc3RheSB1bmtub3du
IHVudGlsIGEgcGFnZQorICogZ3JhbnVsZSBzdXBwbGllcyBvbmUsIHdoaWNoIG9nZ19jYWxjX3B0
cygpIHRoZW4gcGxhY2VzIG9uIHRoZSBmaWxlJ3MKKyAqIHRpbWVsaW5lLgorICoKKyAqIEByZXR1
cm4gdGhlIHN0cmVhbSBpbmRleCwgb3IgYSBuZWdhdGl2ZSB2YWx1ZSBpZiB0aGUgbGluayBpcyB1
bmtub3duCisgKi8KK3N0YXRpYyBpbnQgb2dnX2Fkb3B0X2tub3duX2xpbmsoQVZGb3JtYXRDb250
ZXh0ICpzLCB1aW50MzJfdCBzZXJpYWwpCit7CisgICAgc3RydWN0IG9nZyAqb2dnID0gcy0+cHJp
dl9kYXRhOworICAgIHN0cnVjdCBvZ2dfc3RyZWFtICpvczsKKworICAgIGlmICghb2dnLT5jaGFp
biB8fCBvZ2ctPm5zdHJlYW1zICE9IDEpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmICgh
b2dnX2NoYWluX2hhc19zZXJpYWwob2dnLT5jaGFpbiwgc2VyaWFsKSkKKyAgICAgICAgcmV0dXJu
IC0xOworCisgICAgb3MgPSAmb2dnLT5zdHJlYW1zWzBdOworICAgIGlmICghb3MtPmNvZGVjKQor
ICAgICAgICByZXR1cm4gLTE7CisKKyAgICBvcy0+c2VyaWFsICAgICAgICAgPSBzZXJpYWw7Cisg
ICAgb3MtPmxhc3RwdHMgICAgICAgID0gb3MtPmxhc3RkdHMgPSBBVl9OT1BUU19WQUxVRTsKKyAg
ICBvcy0+ZmxhZ3MgICAgICAgICAgPSAwOworICAgIG9zLT5zdGFydF90cmltbWluZyA9IDA7Cisg
ICAgb3MtPmVuZF90cmltbWluZyAgID0gMDsKKworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMg
aW50IG9nZ19uZXdfc3RyZWFtKEFWRm9ybWF0Q29udGV4dCAqcywgdWludDMyX3Qgc2VyaWFsKQog
ewogICAgIHN0cnVjdCBvZ2cgKm9nZyA9IHMtPnByaXZfZGF0YTsKQEAgLTM5NiwxMCArNDQ2LDE5
IEBAIHN0YXRpYyBpbnQgb2dnX3JlYWRfcGFnZShBVkZvcm1hdENvbnRleHQgKnMsIGludCAqc2lk
LCBpbnQgcHJvYmluZykKIAogICAgIC8qIENSQyBpcyBjb3JyZWN0IHNvIHdlIGNhbiBiZSA5OSUg
c3VyZSB0aGVyZSdzIGFuIGFjdHVhbCBjaGFuZ2UgaGVyZSAqLwogICAgIGlmIChpZHggPCAwKSB7
Ci0gICAgICAgIGlmIChkYXRhX3BhY2tldHNfc2VlbihvZ2cpKQotICAgICAgICAgICAgaWR4ID0g
b2dnX3JlcGxhY2Vfc3RyZWFtKHMsIHBhZ2Uuc2VyaWFsLCByZWFkb3V0X2J1Ziwgc2l6ZSwgcHJv
YmluZyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlkeCA9IG9nZ19uZXdfc3RyZWFtKHMs
IHBhZ2Uuc2VyaWFsKTsKKyAgICAgICAgLyogQSBwYWdlIHRoYXQgb3BlbnMgYSBsaW5rIGNhcnJp
ZXMgdGhlIGhlYWRlciB0aGUgY29kZWMgaXMKKyAgICAgICAgICogaWRlbnRpZmllZCBmcm9tOyBh
bnl3aGVyZSBlbHNlLCBvbmx5IHRoZSBzY2FuIGNhbiBzYXkgd2hhdCB0aGlzCisgICAgICAgICAq
IHNlcmlhbCBpcy4gKi8KKyAgICAgICAgaWYgKCEocGFnZS5mbGFncyAmIE9HR19GTEFHX0JPUykp
CisgICAgICAgICAgICBpZHggPSBvZ2dfYWRvcHRfa25vd25fbGluayhzLCBwYWdlLnNlcmlhbCk7
CisKKyAgICAgICAgaWYgKGlkeCA8IDApIHsKKyAgICAgICAgICAgIGlmIChkYXRhX3BhY2tldHNf
c2VlbihvZ2cpKQorICAgICAgICAgICAgICAgIGlkeCA9IG9nZ19yZXBsYWNlX3N0cmVhbShzLCBw
YWdlLnNlcmlhbCwgcmVhZG91dF9idWYsIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2JpbmcpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGlkeCA9IG9nZ19uZXdfc3RyZWFtKHMsIHBhZ2Uuc2VyaWFsKTsKKyAgICAgICAgfQogCiAg
ICAgICAgIGlmIChpZHggPCAwKSB7CiAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9S
LCAiZmFpbGVkIHRvIGNyZWF0ZSBvciByZXBsYWNlIHN0cmVhbVxuIik7CmRpZmYgLS1naXQgYS9s
aWJhdmZvcm1hdC9vZ2cvZGVjb2Rlci5oIGIvbGliYXZmb3JtYXQvb2dnL2RlY29kZXIuaAppbmRl
eCBiZjM0ZThlM2ZjLi4xNjJjYjgyZTcwIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9vZ2cvZGVj
b2Rlci5oCisrKyBiL2xpYmF2Zm9ybWF0L29nZy9kZWNvZGVyLmgKQEAgLTgwLDYgKzgwLDggQEAg
c3RydWN0IG9nZ19zdHJlYW0gewogICAgIGludCBuYl9oZWFkZXI7ICAgICAgICAgICAgICAvLy88
IHNldCB0byB0aGUgbnVtYmVyIG9mIHBhcnNlZCBoZWFkZXJzCiAgICAgdWludDY0X3Qgc3RhcnRf
Z3JhbnVsZTsKICAgICBpbnQgZ290X3N0YXJ0OworICAgIGludCBnb3RfZGF0YTsgICAgICAgICAg
ICAgICAvLy88IHRoZSBzdHJlYW0gaGFzIHByb2R1Y2VkIGRhdGEgcGFja2V0cywgc28gdGhlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgaW5pdGlhbCBoZWFkZXJzIGFyZSBi
ZWhpbmQgdXMKICAgICBpbnQga2V5ZnJhbWVfc2VlazsgICAgICAgICAgLy8vPCBzZXQgYnkgYSBz
ZWVrLCBhbmQgb3V0bGl2ZXMgdGhlIHNlZWsncyBvd24gcmVzZXRzCiAKICAgICAvKiBUaGUgYnVm
ZmVyIGl0c2VsZiwgYXMgb3Bwb3NlZCB0byB3aGF0IGlzIGN1cnJlbnRseSBpbiBpdC4gKi8KQEAg
LTEwNCw3ICsxMDYsNiBAQCBzdHJ1Y3Qgb2dnX3N0cmVhbSB7CiAgICAgaW50IGluY29tcGxldGU7
ICAgICAgICAgICAgIC8vLzwgd2hldGhlciB3ZSdyZSBleHBlY3RpbmcgYSBjb250aW51YXRpb24g
aW4gdGhlIG5leHQgcGFnZQogICAgIGludCBwYWdlX3N0YXJ0OyAgICAgICAgICAgICAvLy88IGN1
cnJlbnQgcGFja2V0IGlzIHRoZSBmaXJzdCBvbmUgc3RhcnRpbmcgaW4gdGhlIHBhZ2UKICAgICBp
bnQgcGFnZV9lbmQ7ICAgICAgICAgICAgICAgLy8vPCBjdXJyZW50IHBhY2tldCBpcyB0aGUgbGFz
dCBvbmUgY29tcGxldGVkIGluIHRoZSBwYWdlCi0gICAgaW50IGdvdF9kYXRhOyAgICAgICAgICAg
ICAgIC8vLzwgMSBpZiB0aGUgc3RyZWFtIGdvdCBzb21lIGRhdGEgKG5vbi1pbml0aWFsIHBhY2tl
dHMpLCAwIG90aGVyd2lzZQogICAgIGludDY0X3QgbGFzdHB0czsKICAgICBpbnQ2NF90IGxhc3Rk
dHM7CiAgICAgaW50IHN0YXJ0X3RyaW1taW5nOyAgICAgICAgIC8vLzwgc2V0IHRoZSBudW1iZXIg
b2YgcGFja2V0cyB0byBkcm9wIGZyb20gdGhlIHN0YXJ0CmRpZmYgLS1naXQgYS90ZXN0cy9yZWYv
ZmF0ZS9vZ2ctY2hhaW4tc2Vlay1mbGFjIGIvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWst
ZmxhYwppbmRleCBlOWUyYTZlNjNlLi4yYTM5YjU1ZTJjIDEwMDY0NAotLS0gYS90ZXN0cy9yZWYv
ZmF0ZS9vZ2ctY2hhaW4tc2Vlay1mbGFjCisrKyBiL3Rlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1z
ZWVrLWZsYWMKQEAgLTEsMTMgKzEsMTMgQEAKIHB0cz0wCiBwdHNfdGltZT0wLjAwMDAwMAotcHRz
PTE3NjEyOAotcHRzX3RpbWU9My45OTM4MzIKLXB0cz0xODAyMjQKLXB0c190aW1lPTQuMDg2NzEy
Ci1wdHM9MTgwMjI0Ci1wdHNfdGltZT00LjA4NjcxMgotcHRzPTE4MDIyNAotcHRzX3RpbWU9NC4w
ODY3MTIKLXB0cz0xODAyMjQKLXB0c190aW1lPTQuMDg2NzEyCitwdHM9MTM1MTY4CitwdHNfdGlt
ZT0zLjA2NTAzNAorcHRzPTI2NTU1NgorcHRzX3RpbWU9Ni4wMjE2NzgKK3B0cz00NDU3ODAKK3B0
c190aW1lPTEwLjEwODM5MAorcHRzPTU3MzMwMAorcHRzX3RpbWU9MTMuMDAwMDAwCitwdHM9OTMz
NzQ4CitwdHNfdGltZT0yMS4xNzM0MjQKIGR1cmF0aW9uPTI0LjAwMDAwMApkaWZmIC0tZ2l0IGEv
dGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstb3B1cyBiL3Rlc3RzL3JlZi9mYXRlL29nZy1j
aGFpbi1zZWVrLW9wdXMKaW5kZXggN2MzY2YzMWY1Ni4uYzI2NDdmYzQyZiAxMDA2NDQKLS0tIGEv
dGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstb3B1cworKysgYi90ZXN0cy9yZWYvZmF0ZS9v
Z2ctY2hhaW4tc2Vlay1vcHVzCkBAIC0yLDEyICsyLDEyIEBAIHB0cz05NTY4OAogcHRzX3RpbWU9
MS45OTM1MDAKIHB0cz0xOTE2ODgKIHB0c190aW1lPTMuOTkzNTAwCi1wdHM9MTkxNjg4Ci1wdHNf
dGltZT0zLjk5MzUwMAotcHRzPTE5MTY4OAotcHRzX3RpbWU9My45OTM1MDAKLXB0cz0xOTE2ODgK
LXB0c190aW1lPTMuOTkzNTAwCi1wdHM9MTkxNjg4Ci1wdHNfdGltZT0zLjk5MzUwMAorcHRzPTMz
NjAwMAorcHRzX3RpbWU9Ny4wMDAwMDAKK3B0cz01NzYwMDAKK3B0c190aW1lPTEyLjAwMDAwMAor
cHRzPTY3MjMxMgorcHRzX3RpbWU9MTQuMDA2NTAwCitwdHM9MTAwODMxMgorcHRzX3RpbWU9MjEu
MDA2NTAwCiBkdXJhdGlvbj0yNC4wMTk1MDAKZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZi9mYXRlL29n
Zy1jaGFpbi1zZWVrLXRoZW9yYSBiL3Rlc3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLXRoZW9y
YQppbmRleCA4Njc2M2VhMjBkLi4wYWU1YjU3YjY0IDEwMDY0NAotLS0gYS90ZXN0cy9yZWYvZmF0
ZS9vZ2ctY2hhaW4tc2Vlay10aGVvcmEKKysrIGIvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWluLXNl
ZWstdGhlb3JhCkBAIC0yLDEyICsyLDEyIEBAIHB0cz0yNAogcHRzX3RpbWU9MS42MDAwMDAKIHB0
cz02MAogcHRzX3RpbWU9NC4wMDAwMDAKLXB0cz03MgotcHRzX3RpbWU9NC44MDAwMDAKLXB0cz03
MgotcHRzX3RpbWU9NC44MDAwMDAKLXB0cz03MgotcHRzX3RpbWU9NC44MDAwMDAKLXB0cz03Mgot
cHRzX3RpbWU9NC44MDAwMDAKK3B0cz05OQorcHRzX3RpbWU9Ni42MDAwMDAKK3B0cz0xNzEKK3B0
c190aW1lPTExLjQwMDAwMAorcHRzPTIxOQorcHRzX3RpbWU9MTQuNjAwMDAwCitwdHM9MzI3Citw
dHNfdGltZT0yMS44MDAwMDAKIGR1cmF0aW9uPTI0LjAwMDAwMApkaWZmIC0tZ2l0IGEvdGVzdHMv
cmVmL2ZhdGUvb2dnLWNoYWluLXNlZWstdm9yYmlzIGIvdGVzdHMvcmVmL2ZhdGUvb2dnLWNoYWlu
LXNlZWstdm9yYmlzCmluZGV4IDhlZTcxYzQ3MTEuLmU3YzYzNDA1MDggMTAwNjQ0Ci0tLSBhL3Rl
c3RzL3JlZi9mYXRlL29nZy1jaGFpbi1zZWVrLXZvcmJpcworKysgYi90ZXN0cy9yZWYvZmF0ZS9v
Z2ctY2hhaW4tc2Vlay12b3JiaXMKQEAgLTEsMTMgKzEsMTMgQEAKIHB0cz0tMTI4CiBwdHNfdGlt
ZT0tMC4wMDI5MDIKLXB0cz0xNzU2ODAKLXB0c190aW1lPTMuOTgzNjczCi1wdHM9MTc5Nzc2Ci1w
dHNfdGltZT00LjA3NjU1MwotcHRzPTE3OTc3NgotcHRzX3RpbWU9NC4wNzY1NTMKLXB0cz0xNzk3
NzYKLXB0c190aW1lPTQuMDc2NTUzCi1wdHM9MTc5Nzc2Ci1wdHNfdGltZT00LjA3NjU1MworcHRz
PTEzNDcyMAorcHRzX3RpbWU9My4wNTQ4NzUKK3B0cz0yNjUxMDgKK3B0c190aW1lPTYuMDExNTE5
CitwdHM9NDQ1MzMyCitwdHNfdGltZT0xMC4wOTgyMzEKK3B0cz02MTc5MDgKK3B0c190aW1lPTE0
LjAxMTUxOQorcHRzPTkzMzMwMAorcHRzX3RpbWU9MjEuMTYzMjY1CiBkdXJhdGlvbj0yNC4wMDI5
MDIKLS0gCjIuNTIuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdCAtLSBmZm1wZWctZGV2ZWxAZmZtcGVnLm9y
ZwpUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIGZmbXBlZy1kZXZlbC1sZWF2ZUBmZm1w
ZWcub3JnCg==