[OpenAFS-devel] [PATCH] new features for pam_afs without "check_pw_entry"

Carsten Jacobi jacobi@de.ibm.com
Fri, 31 Aug 2001 18:09:46 +0200


--0__=C1256AB900588EF48f9e8a93df938690918cC1256AB900588EF4
Content-type: text/plain; charset=us-ascii

Once more the pam_afs enhancement but the option "check_pw_entry" is
removed
in this patch.

Carsten Jacobi

(See attached file: openafs-1.1.1-pam_combi.patch)
--0__=C1256AB900588EF48f9e8a93df938690918cC1256AB900588EF4
Content-type: application/octet-stream; 
	name="openafs-1.1.1-pam_combi.patch"
Content-Disposition: attachment; filename="openafs-1.1.1-pam_combi.patch"
Content-transfer-encoding: base64

ZGlmZiAtdXJOIG9wZW5hZnMtMS4xLjEub3JpZy9kb2MvaHRtbC9RdWlja1N0YXJ0VW5peC9hdXFi
ZzAwNy5odG0gb3BlbmFmcy0xLjEuMS9kb2MvaHRtbC9RdWlja1N0YXJ0VW5peC9hdXFiZzAwNy5o
dG0KLS0tIG9wZW5hZnMtMS4xLjEub3JpZy9kb2MvaHRtbC9RdWlja1N0YXJ0VW5peC9hdXFiZzAw
Ny5odG0JV2VkIEF1ZyAgOCAxNDowOToxMSAyMDAxCisrKyBvcGVuYWZzLTEuMS4xL2RvYy9odG1s
L1F1aWNrU3RhcnRVbml4L2F1cWJnMDA3Lmh0bQlGcmkgQXVnIDMxIDE3OjI1OjAwIDIwMDEKQEAg
LTk3MSw2ICs5NzEsNyBAQAogPFA+VGhlIHJlY29tbWVuZGVkIEFGUy1yZWxhdGVkIGVudHJpZXMg
aW4gdGhlIFBBTSBjb25maWd1cmF0aW9uIGZpbGUgbWFrZSB1c2UKIG9mIG9uZSBvciBtb3JlIG9m
IHRoZSBmb2xsb3dpbmcgdGhyZWUgYXR0cmlidXRlcy4KIDxETD4KKzxoND48YnI+QXV0aGVudGlj
YXRpb24gTWFuYWdlbWVudDwvaDQ+CiA8UD48RFQ+PEI+PFRUPnRyeV9maXJzdF9wYXNzPC9UVD4K
IDwvQj48REQ+VGhpcyBpcyBhIHN0YW5kYXJkIFBBTSBhdHRyaWJ1dGUgdGhhdCBjYW4gYmUgaW5j
bHVkZWQgb24gZW50cmllcyBhZnRlciB0aGUKIGZpcnN0IG9uZSBmb3IgYSBzZXJ2aWNlOyBpdCBk
aXJlY3RzIHRoZSBtb2R1bGUgdG8gdXNlIHRoZSBwYXNzd29yZCB0aGF0CkBAIC05NzksODMgKzk4
MCwyMzIgQEAKIHRoZSB1c2VyJ3MgY29ycmVjdCBBRlMgcGFzc3dvcmQuIEZvciBmdXJ0aGVyIGRp
c2N1c3Npb24gb2YgdGhpcwogYXR0cmlidXRlIGFuZCBpdHMgYWx0ZXJuYXRpdmVzLCBzZWUgdGhl
IG9wZXJhdGluZyBzeXN0ZW0ncyBQQU0KIGRvY3VtZW50YXRpb24uCis8UD4KIDxQPjxEVD48Qj48
VFQ+aWdub3JlX3Jvb3Q8L1RUPgogPC9CPjxERD5UaGlzIGF0dHJpYnV0ZSwgc3BlY2lmaWMgdG8g
dGhlIEFGUyBQQU0gbW9kdWxlLCBkaXJlY3RzIGl0IHRvIGlnbm9yZSBub3QKIG9ubHkgdGhlIGxv
Y2FsIHN1cGVydXNlciA8Qj4gcm9vdDwvQj4sIGJ1dCBhbHNvIGFueSB1c2VyIHdpdGggVUlEIDAK
ICh6ZXJvKS4KKzxQPjxEVD48Qj48VFQ+aWdub3JlX3VpZCA8aT51aWQ8L2k+PC9UVD4KKzwvQj48
REQ+VGhpcyBvcHRpb24gaXMgYW4gZXh0ZW5zaW9uIG9mIHRoZSAmcXVvdDtpZ25vcmVfcm9vdCZx
dW90OyBzd2l0Y2guIFRoZSBhZGRpdGlvbmFsCitwYXJhbWV0ZXIgaXMgYSBsaW1pdC4gVXNlcnMg
d2l0aCBhIHVpZCB1cCB0byB0aGUgZ2l2ZW4gcGFyYW1ldGVyIGFyZSBpZ25vcmVkCitieSA8aT5w
YW1fYWZzLnNvPC9pPi4gVGh1cywgYSBzeXN0ZW0gYWRtaW5pc3RyYXRvciBzdGlsbCBoYXMgdGhl
IG9wcG9ydHVuaXR5IHRvCithZGQgbG9jYWwgdXNlciBhY2NvdW50cyB0byBoaXMgc3lzdGVtIGJ5
IGNob29zaW5nIGJldHdlZW4gJnF1b3Q7bG93JnF1b3Q7IGFuZAorJnF1b3Q7aGlnaCZxdW90OyB1
c2VyIGlkcy48YnI+CitBbiBleGFtcGxlIC9ldGMvcGFzc3dkIGZpbGUgZm9yICZxdW90O2lnbm9y
ZV91aWQgMTAwJnF1b3Q7IG1heSBoYXZlIGVudHJpZXMgbGlrZSB0aGVzZToKKzxQUkU+CisgICAg
ICAgIC4KKyAgICAgICAgLgorYWZzdXNlcm9uZTp4Ojk5OjEwMDo6L2Fmcy9hZnNjZWxsL3UvYWZz
dXNlcm9uZTovYmluL2Jhc2gKK2Fmc3VzZXJ0d286eDoxMDA6MTAwOjovYWZzL2Fmc2NlbGwvdS9h
ZnN1c2VydHdvOi9iaW4vYmFzaAorbG9jYWx1c2Vyb25lOng6MTAxOjEwMDo6L2hvbWUvbG9jYWx1
c2Vyb25lOi9iaW4vYmFzaAorbG9jYWx1c2VydHdvOng6MTAyOjEwMDo6L2hvbWUvbG9jYWx1c2Vy
dHdvOi9iaW4vYmFzaAorICAgICAgICAuCisgICAgICAgIC4KKzwvUFJFPjxicj4KK0FGUyBhY2Nv
dW50cyBzaG91bGQgYmUgbG9ja2VkIGluIHRoZSBmaWxlIC9ldGMvc2hhZG93IGxpa2UgdGhpczoK
KzxQUkU+CisgICAgICAgIC4KKyAgICAgICAgLgorYWZzdXNlcm9uZTohIToxMTUwMDowOjk5OTk5
Ojc6OjoKK2Fmc3VzZXJ0d286ISE6MTE1MDA6MDo5OTk5OTo3Ojo6Citsb2NhbHVzZXJvbmU6Jmx0
O3RoZWxvY2FsdXNlcm9uZSdza2V5Jmd0OzoxMTUwMDowOjk5OTk5Ojc6OjoKK2xvY2FsdXNlcnR3
bzombHQ7dGhlbG9jYWx1c2VydHdvJ3NrZXkmZ3Q7OjExNTAwOjA6OTk5OTk6Nzo6OgorICAgICAg
ICAuCisgICAgICAgIC4KKzwvUFJFPjxicj4KK1RoZXJlIGlzIG5vIG5lZWQgdG8gc3RvcmUgYSBs
b2NhbCBrZXkgaW4gdGhpcyBmaWxlIHNpbmNlIHRoZSBBRlMKK3Bhc3N3b3JkIGlzIHNlbnQgYW5k
IHZlcmZpZWQgYXQgdGhlIEFGUyBjZWxsIHNlcnZlciEKKwogPFA+PERUPjxCPjxUVD5zZXRlbnZf
cGFzc3dvcmRfZXhwaXJlczwvVFQ+CiA8L0I+PEREPlRoaXMgYXR0cmlidXRlLCBzcGVjaWZpYyB0
byB0aGUgQUZTIFBBTSBtb2R1bGUsIHNldHMgdGhlIGVudmlyb25tZW50CiB2YXJpYWJsZSBQQVNT
V09SRF9FWFBJUkVTIHRvIHRoZSBleHBpcmF0aW9uIGRhdGUgb2YgdGhlIHVzZXIncyBBRlMKIHBh
c3N3b3JkLCB3aGljaCBpcyByZWNvcmRlZCBpbiB0aGUgQXV0aGVudGljYXRpb24gRGF0YWJhc2Uu
Cis8UD48RFQ+PEI+PFRUPnNldF90b2tlbjwvVFQ+Cis8L0I+PEREPlNvbWUgYXBwbGljYXRpb25z
IGRvbid0IGNhbGwgPGk+cGFtX3NldGNyZWQoKTwvaT4gaW4gb3JkZXIgdG8gcmV0cmlldmUgdGhl
IGFwcHJvcHJpYXRlCitjcmVkZW50aWFscyAoaGVyZSB0aGUgQUZTIHRva2VuKSBmb3IgdGhlaXIg
c2Vzc2lvbi4gVGhpcyBzd2l0Y2ggc2V0cyB0aGUgY3JlZGVudGlhbHMKK2FscmVhZHkgaW4gPGk+
cGFtX3NtX2F1dGhlbnRpY2F0ZSgpPC9pPiBvYnNvbGV0aW5nIGEgY2FsbCB0byA8aT5wYW1fc2V0
Y3JlZCgpPC9pPi48YnI+Cis8Yj5DYXV0aW9uOiBEb24ndCB1c2UgdGhpcyBzd2l0Y2ggZm9yIGFw
cGxpY2F0aW9ucyB3aGljaCBkbyBjYWxsIDxpPnBhbV9zZXRjcmVkKCk8L2k+ITwvYj4KK09uZSBl
eGFtcGxlIGZvciBhbiBhcHBsaWNhdGlvbiBub3QgY2FsbGluZyA8aT5wYW1fc2V0Y3JlZCgpPC9p
PiBhcmUgb2xkZXIgdmVyc2lvbnMgb2YKK3RoZSBzYW1iYSBzZXJ2ZXIuPGJyPgorTmV2ZXJ0aGVs
ZXNzLCB1c2luZyBhcHBsaWNhdGlvbnMgd2l0aCB3b3JraW5nIHBhbSBzZXNzaW9uIG1hbmFnZW1l
bnQgaXMgcmVjb21tZW5kZWQgYXMgdGhpcworc2V0dXAgY29uZm9ybXMgYmV0dGVyIHdpdGggdGhl
IFBBTSBkZWZpbml0aW9ucy4KKzxQPjxEVD48Qj48VFQ+cmVmcmVzaF90b2tlbjwvVFQ+Cis8L0I+
PEREPlRoaXMgb3B0aW9ucyBpcyBpZGVudGljYWwgdG8gJnF1b3Q7c2V0X3Rva2VuJnF1b3Q7IGV4
Y2VwdCB0aGF0IG5vIG5ldyBQQUcgaXMgZ2VuZXJhdGVkLgorVGhpcyBpcyBuZWNlc3NhcnkgdG8g
aGFuZGxlIHByb2Nlc3NlcyBsaWtlIHhsb2NrIG9yIHhzY3JlZW5zYXZlci4gSXQgaXMgbm90IGVu
b3VnaCB0byBnaXZlCit0aGUgc2NyZWVuIGFuZCB0aGUga2V5Ym9hcmQgZnJlZSBmb3IgdGhlIHVz
ZXIgd2hvIHJlYWN0aXZhdGVkIGhpcyBzY3JlZW4gdHlwaW5nIGluIHRoZQorY29ycmVjdCBBRlMg
cGFzc3dvcmQsIGJ1dCBvbmUgbWF5IGFsc28gbmVlZCBmcmVzaCB0b2tlbnMgd2l0aCBmdWxsCits
aXZldGltZSBpbiBvcmRlciB0byB3b3JrIG9uLCBhbmQgdGhlIG5ldyB0b2tlbiBtdXN0IGJlIHJl
ZnJlc2hlZCBpbiB0aGUgYWxyZWFkeSBleGlzdGluZyBQQUcKK2ZvciB0aGUgcHJvY2Vzc2VzIHRo
YXQgaGF2ZSBiZWVuIHN0YXJ0ZWQuIFRoaXMgaXMgYWNoaWV2ZWQgdXNpbmcgdGhpcyBvcHRpb24u
Cis8UD48RFQ+PEI+PFRUPnVzZV9rbG9nPC9UVD4KKzwvQj48REQ+QWN0aXZhdGluZyB0aGlzIHN3
aXRjaCB0aGUgYXV0aGVudGljYXRpb24gaXMgZG9uZSBieSBjYWxsaW5nIHRoZSBleHRlcm5hbCBw
cm9ncmFtICZxdW90O2tsb2cmcXVvdDsuCitPbmUgcHJvZ3JhbSByZXF1aXJpbmcgdGhpcyBpcyBm
b3IgZXhhbXBsZSA8aT5rZG08L2k+IG9mIEtERSAyLnguPGJyPjwvREQ+Cis8UD48RFQ+PEI+PFRU
PmRvbnRfZm9yazwvVFQ+Cis8L0I+PEREPlVzdWFsbHksIHRoZSBwYXNzd29yZCB2ZXJpZmljYXRp
b24gYW5kIHRoZSBlc3RhYmxpc2htZW50IG9mIHRoZSB0b2tlbiBpcyBwZXJmb3JtZWQKK2luIGEg
c3ViIHByb2Nlc3MuIFVzaW5nIHRoaXMgb3B0aW9uIHBhbV9hZnMgZG9lcyBub3QgZm9yayBhbmQg
cGVyZm9ybXMgYWxsIGFjdGlvbnMgaW4gYSBzaW5nbGUKK3Byb2Nlc3MuIDxiPk9ubHkgdXNlIHRo
aXMgb3B0aW9ucyBpbiBjYXNlIHlvdSBub3RpY2Ugc2VyaW91cyBwcm9ibGVtcyBjYXVzZWQgYnkg
dGhlIHN1YiBwcm9jZXNzLjwvYj4KK1RoaXMgb3B0aW9uIGhhcyBiZWVuIGRldmVsb3BlZCBpbiBy
ZXNwZWN0IHRvIHRoZSAmcXVvdDttb2RfYXV0aF9wYW0mcXVvdDstcHJvamVjdCAoc2VlIGFsc28K
KzxBIEhSRUY9Imh0dHA6Ly9wYW0uc291cmNlZm9yZ2UubmV0L21vZF9hdXRoX3BhbS8iPm1vZF9h
dXRoX3BhbTwvQT4pLiBUaGUgbW9kX2F1dGhfcGFtCittb2R1bGUgZW5hYmxlcyBQQU0gYXV0aGVu
dGljYXRpb24gZm9yIHRoZSBhcGFjaGUgaHR0cCBzZXJ2ZXIgcGFja2FnZS4KKworPGg0Pjxicj5T
ZXNzaW9uIE1hbmFnZW1lbnQ8L2g0PgorCis8UD48RFQ+PEI+PFRUPm5vX3VubG9nPC9UVD4KKzwv
Qj48REQ+Tm9ybWFsbHkgdGhlIHRva2VucyBhcmUgZGVsZXRlZCAoaW4gbWVtb3J5KSBhZnRlciB0
aGUgc2Vzc2lvbiBlbmRzLiBVc2luZyB0aGlzIG9wdGlvbnMgdGhlIHRva2VucyBhcmUgbGVmdAor
dW50b3VjaGVkLiA8Yj5UaGlzIGJlaGF2aW91ciBoYXMgYmVlbiB0aGUgZGVmYXVsdCBpbiBwYW1f
YWZzIHVudGlsIG9wZW5hZnMtMS4xLjEhPC9iPgorPFA+PERUPjxCPjxUVD5yZW1haW5saWZldGlt
ZSA8aT5zZWM8L2k+PC9UVD4KKzwvQj48REQ+VGhlIHRva2VucyBhcmUga2VwdCBhY3RpdmUgZm9y
IDxpPnNlYzwvaT4gc2Vjb25kcyBiZWZvcmUgdGhleSBhcmUgZGVsZXRlZC4gWCBkaXNwbGF5IG1h
bmFnZXJzCitpLmUuIGFyZSB1c2VkIHRvIGluZm9ybSB0aGUgYXBwbGljYXRpb25zIHN0YXJ0ZWQg
aW4gdGhlIFggc2Vzc2lvbiBiZWZvcmUgdGhlIGxvZ291dCBhbmQgdGhlbgorZW5kIHRoZW1zZWx2
ZXMuIElmIHRoZSB0b2tlbiB3YXMgZGVsZXRlZCBpbW1lZGlhdGVseSB0aGUgYXBwbGljYXRpb25z
IHdvdWxkIGhhdmUgbm8gY2hhbmNlIHRvCit3cml0ZSBiYWNrIHRoZWlyIHNldHRpbmdzIHRvIGku
ZS4gdGhlIHVzZXIncyBBRlMgaG9tZSBzcGFjZS4gVGhpcyBvcHRpb24gbWF5IGhlbHAgdG8gYXZv
aWQgdGhlCitwcm9ibGVtLjxicj4KKwogPC9ETD4KIDxQPlBlcmZvcm0gdGhlIGZvbGxvd2luZyBz
dGVwcyB0byBlbmFibGUgQUZTIGxvZ2luLgogPE9MIFRZUEU9MT4KIDxQPjxMST5Nb3VudCB0aGUg
QUZTIENELVJPTSBmb3IgTGludXggb24gdGhlIDxCPi9jZHJvbTwvQj4gZGlyZWN0b3J5LCBpZiBp
dAogaXMgbm90IGFscmVhZHkuIFRoZW4gY2hhbmdlIHRvIHRoZSBkaXJlY3RvcnkgZm9yIFBBTSBt
b2R1bGVzLCB3aGljaAotZGVwZW5kcyBvbiB3aGljaCBMaW51eCBkaXN0cmlidXRpb24geW91IGFy
ZSB1c2luZy4gCitkZXBlbmRzIG9uIHdoaWNoIExpbnV4IGRpc3RyaWJ1dGlvbiB5b3UgYXJlIHVz
aW5nLgogPFA+SWYgeW91IGFyZSB1c2luZyBhIExpbnV4IGRpc3RyaWJ1dGlvbiBmcm9tIFJlZCBI
YXQgU29mdHdhcmU6Ci08UFJFPiAgIAotICAgIyA8Qj5jZCAvbGliL3NlY3VyaXR5PC9CPiAgIAot
PC9QUkU+IAorPFBSRT4KKyAgICMgPEI+Y2QgL2xpYi9zZWN1cml0eTwvQj4KKzwvUFJFPgogPFA+
SWYgeW91IGFyZSB1c2luZyBhbm90aGVyIExpbnV4IGRpc3RyaWJ1dGlvbjoKLTxQUkU+ICAgCis8
UFJFPgogICAgIyA8Qj5jZCAvdXNyL2xpYi9zZWN1cml0eTwvQj4KLSAgIAorCiA8L1BSRT4KIDxQ
PjxMST5Db3B5IHRoZSBhcHByb3ByaWF0ZSBBRlMgYXV0aGVudGljYXRpb24gbGlicmFyeSBmaWxl
IHRvIHRoZSBkaXJlY3RvcnkgdG8KIHdoaWNoIHlvdSBjaGFuZ2VkIGluIHRoZSBwcmV2aW91cyBz
dGVwLiBDcmVhdGUgYSBzeW1ib2xpYyBsaW5rIHdob3NlCiBuYW1lIGRvZXMgbm90IG1lbnRpb24g
dGhlIHZlcnNpb24uIE9taXR0aW5nIHRoZSB2ZXJzaW9uIGVsaW1pbmF0ZXMgdGhlCiBuZWVkIHRv
IGVkaXQgdGhlIFBBTSBjb25maWd1cmF0aW9uIGZpbGUgaWYgeW91IGxhdGVyIHVwZGF0ZSB0aGUg
bGlicmFyeQotZmlsZS4gCitmaWxlLgogPFA+SWYgeW91IHVzZSB0aGUgQUZTIEF1dGhlbnRpY2F0
aW9uIFNlcnZlciAoPEI+a2FzZXJ2ZXI8L0I+CiBwcm9jZXNzKToKLTxQUkU+ICAgCis8UFJFPgog
ICAgIyA8Qj5jcCAvY2Ryb20vaTM4Nl9saW51eDIyL2xpYi9wYW1fYWZzLnNvLjEgIC48L0I+Ci0g
ICAKLSAgICMgPEI+bG4gLXMgcGFtX2Fmcy5zby4xIHBhbV9hZnMuc288L0I+ICAgCi08L1BSRT4g
CisKKyAgICMgPEI+bG4gLXMgcGFtX2Fmcy5zby4xIHBhbV9hZnMuc288L0I+Cis8L1BSRT4KIDxQ
PklmIHlvdSB1c2UgYSBLZXJiZXJvcyBpbXBsZW1lbnRhdGlvbiBvZiBBRlMgYXV0aGVudGljYXRp
b246Ci08UFJFPiAgIAorPFBSRT4KICAgICMgPEI+Y3AgL2Nkcm9tL2kzODZfbGludXgyMi9saWIv
cGFtX2Fmcy5rcmIuc28uMSAgIC48L0I+Ci0gICAKKwogICAgIyA8Qj5sbiAtcyBwYW1fYWZzLmty
Yi5zby4xIHBhbV9hZnMuc288L0I+Ci0gICAKKwogPC9QUkU+CiA8UD48TEk+Rm9yIGVhY2ggc2Vy
dmljZSB3aXRoIHdoaWNoIHlvdSB3YW50IHRvIHVzZSBBRlMgYXV0aGVudGljYXRpb24sIGluc2Vy
dCBhbgogZW50cnkgZm9yIHRoZSBBRlMgUEFNIG1vZHVsZSBpbnRvIHRoZSA8VFQ+YXV0aDwvVFQ+
IHNlY3Rpb24gb2YgdGhlCiBzZXJ2aWNlJ3MgUEFNIGNvbmZpZ3VyYXRpb24gZmlsZS4gKExpbnV4
IHVzZXMgYSBzZXBhcmF0ZQogY29uZmlndXJhdGlvbiBmaWxlIGZvciBlYWNoIHNlcnZpY2UsIHVu
bGlrZSBzb21lIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zIHdoaWNoCiBsaXN0IGFsbCBzZXJ2aWNl
cyBpbiBhIHNpbmdsZSBmaWxlLikgTWFyayB0aGUgZW50cnkgYXMKLTxUVD5zdWZmaWNpZW50PC9U
VD4gaW4gdGhlIHNlY29uZCBmaWVsZC4gCis8VFQ+c3VmZmljaWVudDwvVFQ+IGluIHRoZSBzZWNv
bmQgZmllbGQuCiA8UD5QbGFjZSB0aGUgQUZTIGVudHJ5IGJlbG93IGFueSBlbnRyaWVzIHRoYXQg
aW1wb3NlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2gKIHlvdSB3YW50IHRoZSBzZXJ2aWNlIHRvIGZh
aWwgZm9yIGEgdXNlciB3aG8gZG9lcyBub3QgbWVldCB0aGUgZW50cnkncwogcmVxdWlyZW1lbnRz
LiBNYXJrIHRoZXNlIGVudHJpZXMgPFRUPnJlcXVpcmVkPC9UVD4uIFBsYWNlIHRoZQogQUZTIGVu
dHJ5IGFib3ZlIGFueSBlbnRyaWVzIHRoYXQgbmVlZCB0byBleGVjdXRlIG9ubHkgaWYgQUZTIGF1
dGhlbnRpY2F0aW9uCi1mYWlscy4gCitmYWlscy4KIDxQPkluc2VydCB0aGUgZm9sbG93aW5nIEFG
UyBlbnRyeSBpZiB1c2luZyB0aGUgUmVkIEhhdCBkaXN0cmlidXRpb246Ci08UFJFPiAgIAotICAg
YXV0aCAgc3VmZmljaWVudCAgL2xpYi9zZWN1cml0eS9wYW1fYWZzLnNvICAgdHJ5X2ZpcnN0X3Bh
c3MgIGlnbm9yZV9yb290ICAgCi08L1BSRT4gCis8UFJFPgorICAgYXV0aCAgc3VmZmljaWVudCAg
L2xpYi9zZWN1cml0eS9wYW1fYWZzLnNvICAgdHJ5X2ZpcnN0X3Bhc3MgIGlnbm9yZV9yb290Cis8
L1BSRT4KIDxQPkluc2VydCB0aGUgZm9sbG93aW5nIEFGUyBlbnRyeSBpZiB1c2luZyBhbm90aGVy
IGRpc3RyaWJ1dGlvbjoKLTxQUkU+ICAgCi0gICBhdXRoICBzdWZmaWNpZW50ICAvdXNyL2xpYi9z
ZWN1cml0eS9wYW1fYWZzLnNvICB0cnlfZmlyc3RfcGFzcyAgaWdub3JlX3Jvb3QgICAKLTwvUFJF
PiAKLTxQPlRoZSBmb2xsb3dpbmcgZXhhbXBsZSBpbGx1c3RyYXRlcyB0aGUgcmVjb21tZW5kZWQg
Y29uZmlndXJhdGlvbiBvZiB0aGUKLWNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIDxCPmxvZ2lu
PC9CPiBzZXJ2aWNlCi0oPEI+L2V0Yy9wYW0uZC9sb2dpbjwvQj4pIG9uIGEgbWFjaGluZSB1c2lu
ZyB0aGUgUmVkIEhhdAotZGlzdHJpYnV0aW9uLgotPFBSRT4gICAKKzxQUkU+CisgICBhdXRoICBz
dWZmaWNpZW50ICAvdXNyL2xpYi9zZWN1cml0eS9wYW1fYWZzLnNvICB0cnlfZmlyc3RfcGFzcyAg
aWdub3JlX3Jvb3QKKzwvUFJFPgorPFA+Q2hlY2sgdGhlIFBBTSBjb25maWcgZmlsZXMgYWxzbyBm
b3IgJnF1b3Q7c2Vzc2lvbiZxdW90OyBlbnRyaWVzLiBJZiB0aGVyZSBhcmUKK2xpbmVzIGJlZ2lu
bmluZyB3aXRoICZxdW90O3Nlc3Npb24mcXVvdDsgdGhlbiBwbGVhc2UgaW5zZXJ0IHRoaXMgbGlu
ZSB0b286Cis8UFJFPgorICAgc2Vzc2lvbiAgb3B0aW9uYWwgIC9saWIvc2VjdXJpdHkvcGFtX2Fm
cy5zbworPC9QUkU+Cis8UD5vcgorPFBSRT4KKyAgIHNlc3Npb24gIG9wdGlvbmFsICAvdXNyL2xp
Yi9zZWN1cml0eS9wYW1fYWZzLnNvCis8L1BSRT4KKzxQPlRoaXMgZ3VhcmFudGllcyB0aGF0IHRo
ZSB1c2VyJ3MgdG9rZW5zIGFyZSBkZWxldGVkIGZyb20gbWVtb3J5IGFmdGVyIGhpcworc2Vzc2lv
biBlbmRzIHNvIHRoYXQgbm8gb3RoZXIgdXNlciBjb2luY2lkZW50bHkgZ2V0cyB0aG9zZSB0b2tl
bnMgd2l0aG91dCBhdXRob3JpemF0aW9uIQorVGhlIGZvbGxvd2luZyBleGFtcGxlcyBpbGx1c3Ry
YXRlIHRoZSByZWNvbW1lbmRlZCBjb25maWd1cmF0aW9uIG9mIHRoZQorY29uZmlndXJhdGlvbiBm
aWxlIGZvciBzZXZlcmFsIHNlcnZpY2VzOjxicj4KKworPGg0Pjxicj5BdXRoZW50aWNhdGlvbiBN
YW5hZ2VtZW50PC9oND4KKworKDxCPi9ldGMvcGFtLmQvbG9naW48L0I+KQorPFBSRT4KICAgICMl
UEFNLTEuMAogICAgYXV0aCAgICAgIHJlcXVpcmVkICAgL2xpYi9zZWN1cml0eS9wYW1fc2VjdXJl
dHR5LnNvCiAgICBhdXRoICAgICAgcmVxdWlyZWQgICAvbGliL3NlY3VyaXR5L3BhbV9ub2xvZ2lu
LnNvCiAgICBhdXRoICAgICAgc3VmZmljaWVudCAvbGliL3NlY3VyaXR5L3BhbV9hZnMuc28gdHJ5
X2ZpcnN0X3Bhc3MgaWdub3JlX3Jvb3QKKyAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorICAgI1RoaXMgZW5h
YmxlcyBBRlMgYXV0aGVudGljYXRpb24gZm9yIGV2ZXJ5IHVzZXIgYnV0IHJvb3QKICAgIGF1dGgg
ICAgICByZXF1aXJlZCAgIC9saWIvc2VjdXJpdHkvcGFtX3B3ZGIuc28gc2hhZG93IG51bGxvawog
ICAgYWNjb3VudCAgIHJlcXVpcmVkICAgL2xpYi9zZWN1cml0eS9wYW1fcHdkYi5zbwogICAgcGFz
c3dvcmQgIHJlcXVpcmVkICAgL2xpYi9zZWN1cml0eS9wYW1fY3JhY2tsaWIuc28KICAgIHBhc3N3
b3JkICByZXF1aXJlZCAgIC9saWIvc2VjdXJpdHkvcGFtX3B3ZGIuc28gc2hhZG93IG51bGxvayB1
c2VfYXV0aHRvaworICAgc2Vzc2lvbiAgIG9wdGlvbmFsICAgL2xpYi9zZWN1cml0eS9wYW1fYWZz
LnNvCisgICAjTWFrZSBzdXJlIHRva2VucyBhcmUgZGVsZXRlZCBhZnRlciB0aGUgdXNlciBsb2dz
IG91dAogICAgc2Vzc2lvbiAgIHJlcXVpcmVkICAgL2xpYi9zZWN1cml0eS9wYW1fcHdkYi5zbwot
ICAgCisKKzwvUFJFPjxicj4KKyg8Yj4vZXRjL3BhbS5kL3NhbWJhPC9iPikKKzxQUkU+CisgICBh
dXRoICAgICAgIHJlcXVpcmVkICAgICAvbGliL3NlY3VyaXR5L3BhbV9hZnMuc28gaWdub3JlX3Vp
ZCAxMDAgc2V0X3Rva2VuCisgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisgICAjSGVyZSwgdXNlcnMgd2l0
aCB1aWQmZ3Q7MTAwIGFyZSBjb25zaWRlcmVkIHRvIGJlbG9uZyB0byB0aGUgQUZTIGFuZCB1c2Vy
cworICAgI3dpdGggdWlkJmx0Oz0xMDAgYXJlIGlnbm9yZWQgYnkgcGFtX2Fmcy4gVGhlIHRva2Vu
IGlzIHJldHJpZXZlZCBhbHJlYWR5IGluCisgICAjcGFtX3NtX2F1dGhlbnRpY2F0ZSgpICh0aGlz
IGlzIGFuIGV4YW1wbGUgcGFtIGNvbmZpZyBmb3IgYSBzYW1iYSB2ZXJzaW9uCisgICAjdGhhdCBk
b2VzIG5vdCBjYWxsIHBhbV9zZXRjcmVkKCksIGl0IGFsc28gZG9lcyBubyBzZW5zZSB0byBpbmNs
dWRlIHNlc3Npb24KKyAgICNlbnRyaWVzIGhlcmUgc2luY2UgdGhleSB3b3VsZCBiZSBpZ25vcmVk
IGJ5IHRoaXMgdmVyc2lvbiBvZiBzYW1iYSApLgorICAgYWNjb3VudCAgICByZXF1aXJlZCAgICAg
L2xpYi9zZWN1cml0eS9wYW1fcHdkYi5zbworPC9QUkU+CisoPGI+L2V0Yy9wYW0uZC94c2NyZWVu
c2F2ZXI8L2I+KQorPFBSRT4KKyAgIGF1dGggICAgICAgc3VmZmljaWVudCAgIC9saWIvc2VjdXJp
dHkvcGFtX2Fmcy5zbyBpZ25vcmVfdWlkIDEwMCByZWZyZXNoX3Rva2VuCisgICAjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5e
Xl5eXl5eXl5eXgorICAgI0F2b2lkIGdlbmVyYXRpbmcgYSBuZXcgUEFHIGZvciB0aGUgbmV3IHRv
a2VucywgdXNlIHRoZSBhbHJlYWR5IGV4aXN0aW5nIFBBRyBhbmQKKyAgICNlc3RhYmxpc2ggYSBm
cmVzaCB0b2tlbiBpbiBpdC4KKyAgIGF1dGggICAgICAgcmVxdWlyZWQgICAgIC9saWIvc2VjdXJp
dHkvcGFtX3B3ZGIuc28gdHJ5X2ZpcnN0X3Bhc3MKKzwvUFJFPgorKDxiPi9ldGMvcGFtLmQvaHR0
cGQ8L2I+KQorPFBSRT4KKyAgIGF1dGggICAgICAgcmVxdWlyZWQgICAvbGliL3NlY3VyaXR5L3Bh
bV9hZnMuc28gaWdub3JlX3VpZCAxMDAgZG9udF9mb3JrCisgICAjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXgorICAg
I0Rvbid0IGZvcmsgZm9yIHRoZSB2ZXJpZmljYXRpb24gb2YgdGhlIHBhc3N3b3JkLgorPC9QUkU+
CisKKzxoND48YnI+U2Vzc2lvbiBNYW5hZ2VtZW50PC9oND4KKworKDxiPi9ldGMvcGFtLmQvc3U8
L2I+KQorPFBSRT4KKyAgIGF1dGggICAgICAgc3VmZmljaWVudCAgIC9saWIvc2VjdXJpdHkvcGFt
X2Fmcy5zbyBpZ25vcmVfdWlkIDEwMAorICAgYXV0aCAgICAgICByZXF1aXJlZCAgICAgL2xpYi9z
ZWN1cml0eS9wYW1fcHdkYi5zbyB0cnlfZmlyc3RfcGFzcworICAgYWNjb3VudCAgICByZXF1aXJl
ZCAgICAgL2xpYi9zZWN1cml0eS9wYW1fcHdkYi5zbworICAgcGFzc3dvcmQgICByZXF1aXJlZCAg
ICAgL2xpYi9zZWN1cml0eS9wYW1fY3JhY2tsaWIuc28KKyAgIHBhc3N3b3JkICAgcmVxdWlyZWQg
ICAgIC9saWIvc2VjdXJpdHkvcGFtX3B3ZGIuc28gdXNlX2F1dGh0b2sKKyAgIHNlc3Npb24gICAg
cmVxdWlyZWQgICAgIC9saWIvc2VjdXJpdHkvcGFtX3B3ZGIuc28KKyAgIHNlc3Npb24gICAgb3B0
aW9uYWwgICAgIC9saWIvc2VjdXJpdHkvcGFtX2Fmcy5zbyBub191bmxvZworICAgIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eCisgICAjRG9u
J3QgZGVsZXRlIHRoZSB0b2tlbiBpbiB0aGlzIGNhc2UsIHNpbmNlIHRoZSB1c2VyIG1heSBzdGls
bAorICAgI25lZWQgaXQgKGZvciBleGFtcGxlIGlmIHNvbWVib2R5IGxvZ3MgaW4gYW5kIGNoYW5n
ZXMgdG8gcm9vdAorICAgI2FmdGVyd2FyZHMgaGUgbWF5IHN0aWxsIHdhbnQgdG8gYWNjZXNzIGhp
cyBob21lIHNwYWNlIGluIEFGUykuCisgICBzZXNzaW9uICAgIHJlcXVpcmVkICAgICAvbGliL3Nl
Y3VyaXR5L3BhbV9sb2dpbl9hY2Nlc3Muc28KKyAgIHNlc3Npb24gICAgb3B0aW9uYWwgICAgIC9s
aWIvc2VjdXJpdHkvcGFtX3hhdXRoLnNvCis8L1BSRT4KKyg8Yj4vZXRjL3BhbS5kL3hkbTwvYj4p
Cis8UFJFPgorICAgYXV0aCAgICAgICByZXF1aXJlZCAgICAgL2xpYi9zZWN1cml0eS9wYW1fbm9s
b2dpbi5zbworICAgYXV0aCAgICAgICByZXF1aXJlZCAgICAgL2xpYi9zZWN1cml0eS9wYW1fbG9n
aW5fYWNjZXNzLnNvCisgICBhdXRoICAgICAgIHN1ZmZpY2llbnQgICAvbGliL3NlY3VyaXR5L3Bh
bV9hZnMuc28gaWdub3JlX3VpZCAxMDAgdXNlX2tsb2cKKyAgIGF1dGggICAgICAgcmVxdWlyZWQg
ICAgIC9saWIvc2VjdXJpdHkvcGFtX3B3ZGIuc28gdHJ5X2ZpcnN0X3Bhc3MKKyAgIGFjY291bnQg
ICAgcmVxdWlyZWQgICAgIC9saWIvc2VjdXJpdHkvcGFtX3B3ZGIuc28KKyAgIHBhc3N3b3JkICAg
cmVxdWlyZWQgICAgIC9saWIvc2VjdXJpdHkvcGFtX2NyYWNrbGliLnNvCisgICBwYXNzd29yZCAg
IHJlcXVpcmVkICAgICAvbGliL3NlY3VyaXR5L3BhbV9wd2RiLnNvIHNoYWRvdyBudWxsb2sgdXNl
X2F1dGh0b2sKKyAgIHNlc3Npb24gICAgb3B0aW9uYWwgICAgIC9saWIvc2VjdXJpdHkvcGFtX2Fm
cy5zbyByZW1haW5saWZldGltZSAxMAorICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eCisgICAjV2FpdCAxMCBzZWNvbmRz
IGJlZm9yZSBkZWxldGluZyB0aGUgQUZTIHRva2VucyBpbiBvcmRlciB0byBnaXZlCisgICAjdGhl
IHByb2dyYW1zIG9mIHRoZSBYIHNlc3Npb24gc29tZSB0aW1lIHRvIHNhdmUgdGhlaXIgc2V0dGlu
Z3MKKyAgICN0byBBRlMuCisgICBzZXNzaW9uICAgIHJlcXVpcmVkICAgICAvbGliL3NlY3VyaXR5
L3BhbV9wd2RiLnNvCiA8L1BSRT4KKwogPFA+PExJPlByb2NlZWQgdG8gPEEgSFJFRj0iI0hEUldR
MTQ1Ij5Mb2FkaW5nIGFuZCBDcmVhdGluZyBDbGllbnQgRmlsZXM8L0E+LgogPC9PTD4KIDxBIE5B
TUU9IklEWDI5ODYiPjwvQT4KZGlmZiAtdXJOIG9wZW5hZnMtMS4xLjEub3JpZy9zcmMvcGFtL2Fm
c19hdXRoLmMgb3BlbmFmcy0xLjEuMS9zcmMvcGFtL2Fmc19hdXRoLmMKLS0tIG9wZW5hZnMtMS4x
LjEub3JpZy9zcmMvcGFtL2Fmc19hdXRoLmMJV2VkIEF1ZyAgOCAxMzo0MToyMyAyMDAxCisrKyBv
cGVuYWZzLTEuMS4xL3NyYy9wYW0vYWZzX2F1dGguYwlGcmkgQXVnIDMxIDE3OjIwOjU4IDIwMDEK
QEAgLTI5LDcgKzI5LDYgQEAKIAogI2RlZmluZSBSRVQoeCkgeyByZXRjb2RlID0gKHgpOyBnb3Rv
IG91dDsgfQogCi0KIGV4dGVybiBpbnQKIHBhbV9zbV9hdXRoZW50aWNhdGUoCiAJcGFtX2hhbmRs
ZV90CSpwYW1oLApAQCAtNDUsMTQgKzQ0LDI0IEBACiAgICAgaW50IG5vd2FybiA9IDA7CiAgICAg
aW50IHVzZV9maXJzdF9wYXNzID0gMDsKICAgICBpbnQgdHJ5X2ZpcnN0X3Bhc3MgPSAwOwotICAg
IGludCBpZ25vcmVfcm9vdCA9IDA7Ci0gICAgaW50IHRydXN0X3Jvb3QgPSAwOwotICAgIGludCBj
YXRjaF9zdSA9IDA7CisgICAgaW50IGlnbm9yZV91aWQgID0gMDsKKyAgICB1aWRfdCBpZ25vcmVf
dWlkX2lkID0gMDsKKyAgICBjaGFyIG15X3Bhc3N3b3JkX2J1ZlsyNTZdOworICAgIC8qCisgICAg
ICogdGhlc2Ugb3B0aW9ucyBhcmUgYWRkZWQgdG8gaGFuZGxlIHN0dXBpZCBhcHBzLCB3aGljaCB3
b24ndCBjYWxsCisgICAgICogcGFtX3NldF9jcmVkKCkKKyAgICAgKi8KKyAgICBpbnQgcmVmcmVz
aF90b2tlbiA9IDA7CisgICAgaW50IHNldF90b2tlbiA9IDA7CisgICAgaW50IGRvbnRfZm9yayA9
IDA7CisgICAgLyogc2F0aXNmeSBrZG0gMi54CisgICAgICovCisgICAgaW50IHVzZV9rbG9nID0g
MDsKICAgICBpbnQgc2V0X2V4cGlyZXMgPSAwOyAgLyogVGhpcyBvcHRpb24gaXMgb25seSB1c2Vk
IGluIHBhbV9zZXRfY3JlZCgpICovCiAgICAgaW50IGdvdF9hdXRodG9rID0gMDsJLyogZ290IFBB
TV9BVVRIVE9LIHVwb24gZW50cnkgKi8KICAgICBpbnQgbm91c2VyID0gMDsKLSAgICBjaGFyIG15
X3Bhc3N3b3JkX2J1ZlsyNTZdOwogICAgIGNoYXIgKnVzZXIgPSBOVUxMLCAqcGFzc3dvcmQgPSBO
VUxMOworICAgIGxvbmcgcGFzc3dvcmRfZXhwaXJlcyA9IC0xOwogICAgIGludCB0b3JjaF9wYXNz
d29yZCA9IDE7CiAgICAgaW50IGk7CiAgICAgc3RydWN0IHBhbV9jb252ICpwYW1fY29udnAgPSBO
VUxMOwpAQCAtNjcsNyArNzYsNyBAQAogCiAKICNpZm5kZWYgQUZTX1NVTjU2X0VOVgotICAgIG9w
ZW5sb2cocGFtX2Fmc19pZGVudCwgTE9HX0NPTlMsIExPR19BVVRIKTsKKyAgICBvcGVubG9nKHBh
bV9hZnNfaWRlbnQsIExPR19DT05TfExPR19QSUQsIExPR19BVVRIKTsKICNlbmRpZgogICAgIG9y
aWdtYXNrID0gc2V0bG9nbWFzayhsb2dtYXNrKTsKIApAQCAtODUsMTEgKzk0LDMxIEBACiAJfSBl
bHNlIGlmIChzdHJjYXNlY21wKGFyZ3ZbaV0sICJ0cnlfZmlyc3RfcGFzcyIpID09IDApIHsKIAkg
ICAgdHJ5X2ZpcnN0X3Bhc3MgPSAxOwogCX0gZWxzZSBpZiAoc3RyY2FzZWNtcChhcmd2W2ldLCAi
aWdub3JlX3Jvb3QiICAgKSA9PSAwKSB7Ci0JICAgIGlnbm9yZV9yb290ID0gMTsKLQl9IGVsc2Ug
aWYgKHN0cmNhc2VjbXAoYXJndltpXSwgInRydXN0X3Jvb3QiICAgKSA9PSAwKSB7Ci0JICAgIHRy
dXN0X3Jvb3QgPSAxOwotCX0gZWxzZSBpZiAoc3RyY2FzZWNtcChhcmd2W2ldLCAiY2F0Y2hfc3Ui
ICAgKSA9PSAwKSB7Ci0JICAgIGNhdGNoX3N1ID0gMTsKKwkgICAgaWdub3JlX3VpZCA9IDE7CisJ
ICAgIGlnbm9yZV91aWRfaWQgPSAwOworICAgICAgICB9IGVsc2UgaWYgKHN0cmNhc2VjbXAoYXJn
dltpXSwgImlnbm9yZV91aWQiICAgICkgPT0gMCkgeworCSAgICBpKys7CisJICAgIGlmIChpID09
IGFyZ2MpIHsKKyAgICAgICAgICAgICAgICBwYW1fYWZzX3N5c2xvZyhMT0dfRVJSLCBQQU1BRlNf
SUdOT1JFVUlELCAiaWdub3JlX3VpZCBtaXNzaW5nIGFyZ3VtZW50Iik7CisJCWlnbm9yZV91aWQg
PSAwOworCSAgICB9IGVsc2UgeworCSAgICAgICAgaWdub3JlX3VpZCA9IDE7CisJICAgICAgICBp
Z25vcmVfdWlkX2lkID0gKHVpZF90KSBzdHJ0b2woYXJndltpXSwgKGNoYXIqKilOVUxMLCAxMCk7
CisJCWlmICggKGlnbm9yZV91aWRfaWQgIDwgMCkgfHwgKGlnbm9yZV91aWRfaWQgPiBJR05PUkVf
TUFYKSkgeworCQkgICAgICAgIGlnbm9yZV91aWQgPSAwOworCQkgICAgICAgIHBhbV9hZnNfc3lz
bG9nKExPR19FUlIsIFBBTUFGU19JR05PUkVVSUQsIGFyZ3ZbaV0pOworICAgICAgICAgICAgICAg
IH0KKwkgICAgfQorCX0gZWxzZSBpZiAoc3RyY2FzZWNtcChhcmd2W2ldLCAicmVmcmVzaF90b2tl
biIgKSA9PSAwKSB7CisJICAgIHJlZnJlc2hfdG9rZW4gPSAxOworCX0gZWxzZSBpZiAoc3RyY2Fz
ZWNtcChhcmd2W2ldLCAic2V0X3Rva2VuIiApID09IDApIHsKKwkgICAgc2V0X3Rva2VuID0gMTsK
Kwl9IGVsc2UgaWYgKHN0cmNhc2VjbXAoYXJndltpXSwgImRvbnRfZm9yayIgKSA9PSAwKSB7CisJ
ICAgIGlmICghdXNlX2tsb2cpIGRvbnRfZm9yayA9IDE7CisJICAgIGVsc2UgcGFtX2Fmc19zeXNs
b2coTE9HX0VSUiwgUEFNQUZTX0NPTkZMSUNUT1BULCAiZG9udF9mb3JrIik7CisJfSBlbHNlIGlm
IChzdHJjYXNlY21wKGFyZ3ZbaV0sICJ1c2Vfa2xvZyIgKSA9PSAwKSB7CisJICAgIGlmICghZG9u
dF9mb3JrKSB1c2Vfa2xvZyA9IDE7CisJICAgIGVsc2UgcGFtX2Fmc19zeXNsb2coTE9HX0VSUiwg
UEFNQUZTX0NPTkZMSUNUT1BULCAidXNlX2tsb2ciKTsKIAl9IGVsc2UgaWYgKHN0cmNhc2VjbXAo
YXJndltpXSwgInNldGVudl9wYXNzd29yZF9leHBpcmVzIikgPT0gMCkgewogICAgICAgICAgICAg
c2V0X2V4cGlyZXMgPSAxOwogCX0gZWxzZSB7CkBAIC0xMDIsMzMgKzEzMSwzMyBAQAogICAgIC8q
IHNvIHR1cm4gdGhhdCBmbGFnIG9mZiByaWdodCBub3cuCQkJCSAgKi8KICAgICBpZiAodXNlX2Zp
cnN0X3Bhc3MpIHRyeV9maXJzdF9wYXNzID0gMDsKIAotICAgIHBhbV9hZnNfc3lzbG9nKExPR19E
RUJVRywgUEFNQUZTX09QVElPTlMsIG5vd2FybiwgdXNlX2ZpcnN0X3Bhc3MsIHRyeV9maXJzdF9w
YXNzKTsKKyAgICBpZiAobG9nbWFzayAmJiBMT0dfTUFTSyhMT0dfREVCVUcpKQorCSAgICBwYW1f
YWZzX3N5c2xvZyhMT0dfREVCVUcsIFBBTUFGU19PUFRJT05TLCBub3dhcm4sIHVzZV9maXJzdF9w
YXNzLCB0cnlfZmlyc3RfcGFzcywgaWdub3JlX3VpZCwgaWdub3JlX3VpZF9pZCwgcmVmcmVzaF90
b2tlbiwgc2V0X3Rva2VuLCBkb250X2ZvcmssIHVzZV9rbG9nKTsKIAogICAgIC8qIFRyeSB0byBn
ZXQgdGhlIHVzZXItaW50ZXJhY3Rpb24gaW5mbywgaWYgYXZhaWxhYmxlLiAqLwotICAgIGVycmNv
ZGUgPSBwYW1fZ2V0X2l0ZW0ocGFtaCwgUEFNX0NPTlYsICh2b2lkICoqKSAmcGFtX2NvbnZwKTsK
KyAgICBlcnJjb2RlID0gcGFtX2dldF9pdGVtKHBhbWgsIFBBTV9DT05WLCAoY29uc3Qgdm9pZCAq
KikgJnBhbV9jb252cCk7CiAgICAgaWYgKGVycmNvZGUgIT0gUEFNX1NVQ0NFU1MpIHsKIAlwYW1f
YWZzX3N5c2xvZyhMT0dfV0FSTklORywgUEFNQUZTX05PX1VTRVJfSU5UKTsKIAlwYW1fY29udnAg
PSBOVUxMOwogICAgIH0KIAogICAgIC8qIFdobyBhcmUgd2UgdHJ5aW5nIHRvIGF1dGhlbnRpY2F0
ZSBoZXJlPyAqLwotICAgIGlmICgoZXJyY29kZSA9IHBhbV9nZXRfdXNlcihwYW1oLCAmdXNlciwg
ImxvZ2luOiAiKSkgIT0gUEFNX1NVQ0NFU1MpIHsKKyAgICBpZiAoKGVycmNvZGUgPSBwYW1fZ2V0
X3VzZXIocGFtaCwgKGNvbnN0IGNoYXIgKiopJnVzZXIsICJsb2dpbjogIikpICE9IFBBTV9TVUND
RVNTKSB7CiAJcGFtX2Fmc19zeXNsb2coTE9HX0VSUiwgUEFNQUZTX05PVVNFUiwgZXJyY29kZSk7
CiAJUkVUKFBBTV9VU0VSX1VOS05PV04pOwogICAgIH0KIAotICAgIGlmICgoIXN0cm5jbXAgKCJy
b290IiwgdXNlciwgNCkpICYmIHRydXN0X3Jvb3QpIHsKLQlwYW1fYWZzX3N5c2xvZyhMT0dfSU5G
TywgUEFNQUZTX1RSVVNUUk9PVCwgdXNlcik7Ci0JUkVUKFBBTV9TVUNDRVNTKTsKLSAgICB9Ci0K
LSAgICBwYW1fYWZzX3N5c2xvZyhMT0dfREVCVUcsIFBBTUFGU19VU0VSTkFNRURFQlVHLCB1c2Vy
KTsKKyAgICBpZiAobG9nbWFzayAmJiBMT0dfTUFTSyhMT0dfREVCVUcpKQorCSAgICBwYW1fYWZz
X3N5c2xvZyhMT0dfREVCVUcsIFBBTUFGU19VU0VSTkFNRURFQlVHLCB1c2VyKTsKIAogICAgIC8q
CiAgICAgICogSWYgdGhlIHVzZXIgaGFzIGEgImxvY2FsIiAob3IgdmlhIG5zcywgcG9zc2libHkg
bnNzX2RjZSkgcHdlbnQsCiAgICAgICogYW5kIGl0cyB1aWQ9PTAsIGFuZCAiaWdub3JlX3Jvb3Qi
IHdhcyBnaXZlbiBpbiBwYW0uY29uZiwKICAgICAgKiBpZ25vcmUgdGhlIHVzZXIuCiAgICAgICov
CisgICAgLyogZW5oYW5jZWQ6IHVzZSAiaWdub3JlX3VpZCA8bnVtYmVyPiIgdG8gc3BlY2lmeSB0
aGUgbGFyZ2VzdCB1aWQKKyAgICAgKiB3aGljaCBzaG91bGQgYmUgaWdub3JlZCBieSB0aGlzIG1v
ZHVsZQorICAgICAqLwogI2lmCWRlZmluZWQoQUZTX0hQVVhfRU5WKQogI2lmICAgICBkZWZpbmVk
KEFGU19IUFVYMTEwX0VOVikKICAgICBpID0gZ2V0cHduYW1fcih1c2VyLCAmdW5peF9wd2QsIHVw
d2RfYnVmLCBzaXplb2YodXB3ZF9idWYpLCAmdXB3ZCk7CkBAIC0xMzcsNDMgKzE2Niw0MyBAQAog
ICAgIGlmICggaSA9PSAwICkJCQkvKiBnZXRwd25hbV9yIHN1Y2Nlc3MgKi8KIAl1cHdkID0gJnVu
aXhfcHdkOyAKICNlbmRpZiAgLyogZWxzZSBBRlNfSFBVWDExMF9FTlYgKi8KLSAgICBpZiAoaWdu
b3JlX3Jvb3QgJiYgaSA9PSAwICAmJiB1cHdkLT5wd191aWQgPT0gMCkgeworICAgIGlmIChpZ25v
cmVfdWlkICYmIGkgPT0gMCAgJiYgdXB3ZC0+cHdfdWlkIDw9IGlnbm9yZV91aWRfaWQpIHsKIAlw
YW1fYWZzX3N5c2xvZyhMT0dfSU5GTywgUEFNQUZTX0lHTk9SSU5HUk9PVCwgdXNlcik7CiAJUkVU
KFBBTV9BVVRIX0VSUik7CiAgICAgfQorCiAjZWxzZQogI2lmZGVmIEFGU19MSU5VWDIwX0VOVgog
ICAgIHVwd2QgPSBnZXRwd25hbSh1c2VyKTsKICNlbHNlCiAgICAgdXB3ZCA9IGdldHB3bmFtX3Io
dXNlciwgJnVuaXhfcHdkLCB1cHdkX2J1Ziwgc2l6ZW9mKHVwd2RfYnVmKSk7CiAjZW5kaWYKLSAg
ICBpZiAodXB3ZCAhPSBOVUxMICYmIHVwd2QtPnB3X3VpZCA9PSAwKSB7Ci0JaWYgKGlnbm9yZV9y
b290KSB7IAorICAgIGlmIChpZ25vcmVfdWlkICYmIHVwd2QgIT0gTlVMTCAmJiB1cHdkLT5wd191
aWQgPD0gaWdub3JlX3VpZF9pZCkgewogCQlwYW1fYWZzX3N5c2xvZyhMT0dfSU5GTywgUEFNQUZT
X0lHTk9SSU5HUk9PVCwgdXNlcik7CiAJCVJFVChQQU1fQVVUSF9FUlIpOwotCX0gZWxzZSBpZiAo
dHJ1c3Rfcm9vdCAmJiAhY2F0Y2hfc3UpIHsKLQkJcGFtX2Fmc19zeXNsb2coTE9HX0lORk8sIFBB
TUFGU19UUlVTVFJPT1QsIHVzZXIpOwotCQlSRVQoUEFNX1NVQ0NFU1MpOwotCX0KICAgICB9CisK
ICNlbmRpZgotICAgIGVycmNvZGUgPSBwYW1fZ2V0X2l0ZW0ocGFtaCwgUEFNX0FVVEhUT0ssICh2
b2lkICoqKSAmcGFzc3dvcmQpOworCisgICAgZXJyY29kZSA9IHBhbV9nZXRfaXRlbShwYW1oLCBQ
QU1fQVVUSFRPSywgKGNvbnN0IHZvaWQgKiopICZwYXNzd29yZCk7CiAgICAgaWYgKGVycmNvZGUg
IT0gUEFNX1NVQ0NFU1MgfHwgcGFzc3dvcmQgPT0gTlVMTCkgewogCWlmICh1c2VfZmlyc3RfcGFz
cykgewogCSAgICBwYW1fYWZzX3N5c2xvZyhMT0dfRVJSLCBQQU1BRlNfUEFTU1dEX1JFUSwgdXNl
cik7CiAJICAgIFJFVChQQU1fQVVUSF9FUlIpOwogCX0KIAlwYXNzd29yZCA9IE5VTEw7CS8qIElu
IGNhc2UgaXQgaXNuJ3QgYWxyZWFkeSBOVUxMICovCi0JcGFtX2Fmc19zeXNsb2coTE9HX0RFQlVH
LCBQQU1BRlNfTk9GSVJTVFBBU1MsIHVzZXIpOworCWlmIChsb2dtYXNrICYmIExPR19NQVNLKExP
R19ERUJVRykpCisJICBwYW1fYWZzX3N5c2xvZyhMT0dfREVCVUcsIFBBTUFGU19OT0ZJUlNUUEFT
UywgdXNlcik7CiAgICAgfSBlbHNlIGlmIChwYXNzd29yZFswXSA9PSAnXDAnKSB7CiAJLyogQWN0
dWFsbHkgd2UgKmRpZCogZ2V0IG9uZSBidXQgaXQgd2FzIGVtcHR5LiAqLwogCXRvcmNoX3Bhc3N3
b3JkID0gMDsKIAlwYW1fYWZzX3N5c2xvZyhMT0dfSU5GTywgUEFNQUZTX05JTFBBU1NXT1JELCB1
c2VyKTsKIAlSRVQoUEFNX05FV19BVVRIVE9LX1JFUUQpOwogICAgIH0gZWxzZSB7CisgICAgICBp
ZiAobG9nbWFzayAmJiBMT0dfTUFTSyhMT0dfREVCVUcpKQogCXBhbV9hZnNfc3lzbG9nKExPR19E
RUJVRywgUEFNQUZTX0dPVFBBU1MsIHVzZXIpOwotCXRvcmNoX3Bhc3N3b3JkID0gMDsKLQlnb3Rf
YXV0aHRvayA9IDE7CisgICAgICB0b3JjaF9wYXNzd29yZCA9IDA7CisgICAgICBnb3RfYXV0aHRv
ayA9IDE7CiAgICAgfQogICAgIGlmICghKHVzZV9maXJzdF9wYXNzIHx8IHRyeV9maXJzdF9wYXNz
KSkgewogCXBhc3N3b3JkID0gTlVMTDsKQEAgLTIxMSwxNSArMjQwLDMwIEBACiAgICAgICAgICAq
IHRoaXMgc3RvcmFnZSwgY29weSBpdCB0byBhIGJ1ZmZlciB0aGF0IHdvbid0IG5lZWQgdG8gYmUg
ZnJlZWQKICAgICAgICAgICogbGF0ZXIsIGFuZCBmcmVlIHRoaXMgc3RvcmFnZSBub3cuCiAgICAg
ICAgICAqLworCiAgICAgICAgIHN0cm5jcHkobXlfcGFzc3dvcmRfYnVmLCBwYXNzd29yZCwgc2l6
ZW9mKG15X3Bhc3N3b3JkX2J1ZikpOwogICAgICAgICBteV9wYXNzd29yZF9idWZbc2l6ZW9mKG15
X3Bhc3N3b3JkX2J1ZiktMV0gPSAnXDAnOwogICAgICAgICBtZW1zZXQocGFzc3dvcmQsIDAsIHN0
cmxlbihwYXNzd29yZCkpOwogICAgICAgICBmcmVlKHBhc3N3b3JkKTsKICAgICAgICAgcGFzc3dv
cmQgPSBteV9wYXNzd29yZF9idWY7CiAKKyAgICB9CiAKKyAgICAvKiBCZSBzdXJlIHRvIGFsbG9j
YXRlIGEgUEFHIGhlcmUgaWYgd2Ugc2hvdWxkIHNldCBhIHRva2VuLAorICAgICAqIEFsbCBvZiB0
aGUgcmVtYWluaW5nIHN0dWZmIHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlciBhbmQgdG8KKyAgICAg
KiBnZXQgYSB0b2tlbiBpcyBkb25lIGluIGEgY2hpbGQgcHJvY2VzcyAtIGlmIG5vdCBzdXBwcmVz
c2VkIGJ5IHRoZSBjb25maWcsCisgICAgICogc2VlIGJlbG93CisgICAgICogQnV0IGRvbnQgZ2V0
IGEgUEFHIGlmIHRoZSByZWZyZXNoX3Rva2VuIG9wdGlvbiB3YXMgc2V0CisgICAgICogV2UgaGF2
ZSB0byBkbyB0aGlzIGluIHN1Y2ggYSB3YXkgYmVjYXVzZSBzb21lCisgICAgICogYXBwcyAoc3Vj
aCBhcyBzY3JlZW5zYXZlcnMpIHdvbnQgY2FsbCBzZXRjcmVkIGJ1dCBhdXRoZW50aWNhdGUgOi0o
CisgICAgICovCisgICAgaWYgKCFyZWZyZXNoX3Rva2VuKSB7CisgICAgICAgc2V0cGFnKCk7Cisg
ICAgICAgaWYgKGxvZ21hc2sgJiYgTE9HX01BU0soTE9HX0RFQlVHKSkKKwkgc3lzbG9nKExPR19E
RUJVRywgIk5ldyBQQUcgY3JlYXRlZCBpbiBwYW1fYXV0aGVudGljYXRlKCkiKTsKICAgICB9CiAK
KyAgICBpZiAoIWRvbnRfZm9yaykgewogICAgIC8qIFByZXBhcmUgZm9yIGZvcmsoKTogc2V0IFNJ
R0NITEQgc2lnbmFsIGhhbmRsZXIgdG8gZGVmYXVsdCAqLwogICAgIHNpZ2VtcHR5c2V0KCZuZXdB
Y3Rpb24uc2FfbWFzayk7CiAgICAgbmV3QWN0aW9uLnNhX2hhbmRsZXIgICA9IFNJR19ERkw7CkBA
IC0yMzQsOSArMjc4LDM1IEBACiAgICAgICogbWVtb3J5L3NvY2tldHMgYWxsb2NhdGVkIHdpbGwg
Z2V0IGNsZWFuZWQgdXAgd2hlbiB0aGUgY2hpbGQKICAgICAgKiBleGl0czogZGVmZWN0IDExNjg2
LgogICAgICAqLworCWlmICh1c2Vfa2xvZykgeyAvKiB1c2VkIGJ5IGtkbSAyLnggKi8KKwkgICBp
ZiAocmVmcmVzaF90b2tlbiB8fCBzZXRfdG9rZW4pIHsKKwkgICAgICBpID0gZG9fa2xvZyh1c2Vy
LCBwYXNzd29yZCwgTlVMTCk7CisJICAgfSBlbHNlIHsKKwkgICAgICBpID0gZG9fa2xvZyh1c2Vy
LCBwYXNzd29yZCwgIjAwOjAwOjAxIik7CisJICAgICAga3RjX0ZvcmdldEFsbFRva2VucygpOwor
ICAgICAgICAgICB9CisJICAgaWYgKGxvZ21hc2sgJiYgTE9HX01BU0soTE9HX0RFQlVHKSkKKwkg
ICAgIHN5c2xvZyhMT0dfREVCVUcsICJkb19rbG9nIHJldHVybmVkICVkIiwgaSk7CisJICAgYXV0
aF9vayA9IGkgPyAwIDogMTsKKwl9IGVsc2UgeworCSAgaWYgKGxvZ21hc2sgJiYgTE9HX01BU0so
TE9HX0RFQlVHKSkKKwkgICAgc3lzbG9nKExPR19ERUJVRywgImZvcmtpbmcgLi4uIik7CiAgICAg
Y3BpZCA9IGZvcmsoKTsKICAgICBpZiAoY3BpZCA8PSAwKSB7ICAgICAvKiBUaGUgY2hpbGQgcHJv
Y2VzcyAqLwotICAgICAgIGNvZGUgPSBrYV9WZXJpZnlVc2VyUGFzc3dvcmQoS0FfVVNFUkFVVEhf
VkVSU0lPTiArIEtBX1VTRVJBVVRIX0RPU0VUUEFHLAorICAgICAgaWYgKGxvZ21hc2sgJiYgTE9H
X01BU0soTE9HX0RFQlVHKSkKKwlzeXNsb2coTE9HX0RFQlVHLCAiaW4gY2hpbGQiKTsKKyAgICAg
ICAgICAgICAgaWYgKHJlZnJlc2hfdG9rZW4gfHwgc2V0X3Rva2VuKQorICAgICAgICAgICAgICAg
ICBjb2RlID0ga2FfVXNlckF1dGhlbnRpY2F0ZUdlbmVyYWwoS0FfVVNFUkFVVEhfVkVSU0lPTiwK
KwkJCQkgICAgdXNlciwgLyoga2VyYmVyb3MgbmFtZSAqLworCQkJCSAgICAoY2hhciAqKTAsIC8q
IGluc3RhbmNlICovCisJCQkJICAgIChjaGFyICopMCwgLyogcmVhbG0gKi8KKwkJCQkgICAgcGFz
c3dvcmQsIC8qIHBhc3N3b3JkICovCisJCQkJICAgIDAsIC8qIGRlZmF1bHQgbGlmZXRpbWUgKi8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXNzd29yZF9leHBpcmVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLyogc3BhcmUgMiAqLworCQkJ
CSAgICAmcmVhc29uIC8qIGVycm9yIHN0cmluZyAqLyApOworICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgIGNvZGUgPSBrYV9WZXJpZnlVc2VyUGFzc3dvcmQoS0FfVVNFUkFVVEhf
VkVSU0lPTiwKIAkJCQkgICAgdXNlciwgLyoga2VyYmVyb3MgbmFtZSAqLwogCQkJCSAgICAoY2hh
ciAqKTAsIC8qIGluc3RhbmNlICovCiAJCQkJICAgIChjaGFyICopMCwgLyogcmVhbG0gKi8KQEAg
LTI0OSw5ICszMTksMTMgQEAKICAgICAgICB9IGVsc2UgewogCSAgYXV0aF9vayA9IDE7CiAgICAg
ICAgfQorICAgICAgIGlmIChsb2dtYXNrICYmIExPR19NQVNLKExPR19ERUJVRykpCisJIHN5c2xv
ZyhMT0dfREVCVUcsICJjaGlsZDogYXV0aF9vaz0lZCIsIGF1dGhfb2spOwogICAgICAgIGlmIChj
cGlkID09IDApIGV4aXQoYXV0aF9vayk7CiAgICAgfSBlbHNlIHsKICAgICAgICBkbyB7CisJIGlm
IChsb2dtYXNrICYmIExPR19NQVNLKExPR19ERUJVRykpCisJICAgc3lzbG9nKExPR19ERUJVRywg
ImluIHBhcmVudCwgd2FpdGluZyAuLi4iKTsKIAkgIHJjcGlkID0gd2FpdHBpZChjcGlkLCAmc3Rh
dHVzLCAwKTsKICAgICAgICB9IHdoaWxlICgocmNwaWQgPT0gLTEpICYmIChlcnJubyA9PSBFSU5U
UikpOwogCQpAQCAtMjYwLDEzICszMzQsNDcgQEAKICAgICAgICB9IGVsc2UgewogCSAgYXV0aF9v
ayA9IDA7CiAgICAgICAgfQorICAgICAgIGlmIChsb2dtYXNrICYmIExPR19NQVNLKExPR19ERUJV
RykpCisJIHN5c2xvZyhMT0dfREVCVUcsICJwYXJlbnQ6IGF1dGhfb2s9JWQiLCBhdXRoX29rKTsK
KyAgICAgICAgICAgfQogICAgIH0KLQogICAgIC8qIFJlc3RvcmUgb2xkIHNpZ25hbCBoYW5kbGVy
ICovCiAgICAgY29kZSA9IHNpZ2FjdGlvbihTSUdDSExELCAmb3JpZ0FjdGlvbiwgKHN0cnVjdCBz
aWdhY3Rpb24gKikwKTsKICAgICBpZiAoY29kZSkgewogICAgICAgIHBhbV9hZnNfc3lzbG9nKExP
R19FUlIsIFBBTUFGU19QQU1FUlJPUiwgZXJybm8pOwogICAgIH0KKyAgICB9IGVsc2UgeyAvKiBk
b250X2ZvcmssIHVzZWQgYnkgaHR0cGQgKi8KKyAgICAgIGlmIChsb2dtYXNrICYmIExPR19NQVNL
KExPR19ERUJVRykpCisgICAgICAgIHN5c2xvZyhMT0dfREVCVUcsICJkb250X2ZvcmsiKTsKKyAg
ICAgICAgaWYgKHJlZnJlc2hfdG9rZW4gfHwgc2V0X3Rva2VuKQorICAgICAgICAgICAgY29kZSA9
IGthX1VzZXJBdXRoZW50aWNhdGVHZW5lcmFsKEtBX1VTRVJBVVRIX1ZFUlNJT04sCisJCQkJICAg
IHVzZXIsIC8qIGtlcmJlcm9zIG5hbWUgKi8KKwkJCQkgICAgKGNoYXIgKikwLCAvKiBpbnN0YW5j
ZSAqLworCQkJCSAgICAoY2hhciAqKTAsIC8qIHJlYWxtICovCisJCQkJICAgIHBhc3N3b3JkLCAv
KiBwYXNzd29yZCAqLworCQkJCSAgICAwLCAvKiBkZWZhdWx0IGxpZmV0aW1lICovCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFzc3dvcmRfZXhwaXJlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8qIHNwYXJlIDIgKi8KKwkJCQkgICAgJnJl
YXNvbiAvKiBlcnJvciBzdHJpbmcgKi8gKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29k
ZSA9IGthX1ZlcmlmeVVzZXJQYXNzd29yZChLQV9VU0VSQVVUSF9WRVJTSU9OLAorCQkJCSAgICB1
c2VyLCAvKiBrZXJiZXJvcyBuYW1lICovCisJCQkJICAgIChjaGFyICopMCwgLyogaW5zdGFuY2Ug
Ki8KKwkJCQkgICAgKGNoYXIgKikwLCAvKiByZWFsbSAqLworCQkJCSAgICBwYXNzd29yZCwgLyog
cGFzc3dvcmQgKi8KKwkJCQkgICAgMCwgLyogc3BhcmUgMiAqLworCQkJCSAgICAmcmVhc29uIC8q
IGVycm9yIHN0cmluZyAqLyApOworCWlmIChsb2dtYXNrICYmIExPR19NQVNLKExPR19ERUJVRykp
CisJICBzeXNsb2coTE9HX0RFQlVHLCAiZG9udF9mb3JrLCBjb2RlID0gJWQiLGNvZGUpOworICAg
ICAgICBpZiAoY29kZSkgeworCSAgICBwYW1fYWZzX3N5c2xvZyhMT0dfRVJSLCBQQU1BRlNfTE9H
SU5fRkFJTEVELCB1c2VyLCByZWFzb24pOworCSAgICBhdXRoX29rID0gMDsKKyAgICAgICAgfSBl
bHNlIHsKKwkgICAgYXV0aF9vayA9IDE7CisgICAgICAgIH0KKwlpZiAobG9nbWFzayAmJiBMT0df
TUFTSyhMT0dfREVCVUcpKQorCSAgc3lzbG9nKExPR19ERUJVRywgImRvbnRfZm9yazogYXV0aF9v
az0lZCIsIGF1dGhfb2spOworICAgIH0KIAogICAgIGlmICghYXV0aF9vayAmJiB0cnlfZmlyc3Rf
cGFzcykgewogCXBhc3N3b3JkID0gTlVMTDsKQEAgLTI3NCwxMSArMzgyLDE4IEBACiAgICAgfQog
CiAgICAgLyogV2UgZG9uJ3QgY2FyZSBpZiB0aGlzIGZhaWxzOyBhbGwgd2UgY2FuIGRvIGlzIHRy
eS4gKi8KLSAgICBpZiAoYXV0aF9vayAmJiAhZ290X2F1dGh0b2spIHsKKyAgICAvKiBJdCBpcyBu
b3QgcmVhc29uYWJsZSB0byBzdG9yZSB0aGUgcGFzc3dvcmQgb25seSBpZiBpdCB3YXMgY29ycmVj
dAorICAgICAqIGJlY2F1c2UgaXQgY291bGQgc2F0aXNmeSBhbm90aGVyIG1vZHVsZSB0aGF0IGlz
IGNhbGxlZCBpbiB0aGUgY2hhaW4KKyAgICAgKiBhZnRlciBwYW1fYWZzCisgICAgICovCisgICAg
aWYgKCFnb3RfYXV0aHRvaykgewogCXRvcmNoX3Bhc3N3b3JkID0gMDsKLSAgICAgICAgcGFtX3Nl
dF9pdGVtKHBhbWgsIFBBTV9BVVRIVE9LLCBwYXNzd29yZCk7CisgICAgICAgICh2b2lkKSBwYW1f
c2V0X2l0ZW0ocGFtaCwgUEFNX0FVVEhUT0ssIHBhc3N3b3JkKTsKICAgICB9CiAKKyAgICBpZiAo
bG9nbWFzayAmJiBMT0dfTUFTSyhMT0dfREVCVUcpKQorICAgICAgc3lzbG9nKExPR19ERUJVRywg
ImxlYXZpbmcgYXV0aDogYXV0aF9vaz0lZCIsIGF1dGhfb2spOworICAgIGlmIChjb2RlID09IEtB
Tk9FTlQpIFJFVChQQU1fVVNFUl9VTktOT1dOKTsKICAgICBSRVQoYXV0aF9vayA/IFBBTV9TVUND
RVNTIDogUEFNX0FVVEhfRVJSKTsKIAkKICBvdXQ6CmRpZmYgLXVyTiBvcGVuYWZzLTEuMS4xLm9y
aWcvc3JjL3BhbS9hZnNfbWVzc2FnZS5jIG9wZW5hZnMtMS4xLjEvc3JjL3BhbS9hZnNfbWVzc2Fn
ZS5jCi0tLSBvcGVuYWZzLTEuMS4xLm9yaWcvc3JjL3BhbS9hZnNfbWVzc2FnZS5jCVdlZCBBdWcg
IDggMTM6NDE6MjMgMjAwMQorKysgb3BlbmFmcy0xLjEuMS9zcmMvcGFtL2Fmc19tZXNzYWdlLmMJ
V2VkIEF1ZyAgOCAxMzo0MTo1NyAyMDAxCkBAIC00MCwxMyArNDAsMTMgQEAKICAgICAiQUZTIG5v
dCBhdmFpbGFibGUiLAkJCS8qIDEwOiBBRlNfVU5BVkFJTAkqLwogICAgICJBRlMgZXJyb3IgY29k
ZSAweCV4IiwJCQkvKiAxMTogQUZTX0VSUk9SCSovCiAgICAgIkFGUyBBdXRoZW50aWNhdGlvbiBz
dWNjZWVkZWQuXG4iLAkJLyogMTI6IExPR0lOX09LCQkqLwotICAgICJBRlMgQXV0aGVudGljYXRp
b24gZmFpbGVkIGZvciB1c2VyICVzICVzXG4iLAorICAgICJBRlMgQXV0aGVudGljYXRpb24gZmFp
bGVkIGZvciB1c2VyICVzLiAlc1xuIiwKIAkJCQkJCS8qIDEzOiBMT0dJTl9GQUlMRUQJKi8KICAg
ICAiQUZTIFBBTSBlcnJvciwgY29kZT0lZCIsCQkJLyogMTQ6IFBBTUVSUk9SCQkqLwogICAgICJB
RlMgdWlkIGV4Y2VlZHMgT1MgYm91bmRzLlxuIiwJCS8qIDE1OiBVSURfT1ZFUkZMT1cJKi8KICAg
ICAiVGhlIEFGUyBQQU0gbW9kdWxlIG1heSBub3QgYmUgdXNlZCBmcm9tIGEgbm9uLU1UIHByb2dy
YW0uXG4iLAogCQkJCQkJLyogMTY6IE5PTl9NVF9QUk9HCSovCi0gICAgIkFGUyBPcHRpb25zOiBu
b3dhcm49JWQsIHVzZV9maXJzdF9wYXNzPSVkLCB0cnlfZmlyc3RfcGFzcz0lZCIsCisgICAgIkFG
UyBPcHRpb25zOiBub3dhcm49JWQsIHVzZV9maXJzdF9wYXNzPSVkLCB0cnlfZmlyc3RfcGFzcz0l
ZCwgaWdub3JlX3VpZCA9ICVkLCBpZ25vcmVfdWlkX2lkID0gJWQsIHJlZnJlc2hfdG9rZW49JWQs
IHNldF90b2tlbj0lZCwgZG9udF9mb3JrPSVkLCB1c2Vfa2xvZz0lZCIsCiAJCQkJCQkvKiAxNzog
T1BUSU9OUwkJKi8KICAgICAiQUZTIE5vIHBhbV9jb252IGNvbnZlcnNhdGlvbiBzdHJ1Y3R1cmUg
Zm91bmQ7IG5vIHVzZXIgaW50ZXJhY3Rpb24iLAogCQkJCQkJLyogMTg6IE5PX1VTRVJfSU5UCSov
CkBAIC02OCwxNyArNjgsMjMgQEAKICAgICAiQUZTIFJlSW5pdGlhbGl6aW5nIGNyZWRzIGZvciB1
c2VyICVzXG4iLAkvKiAzMTogUkVJTklUQ1JFRAkqLwogICAgICJBRlMgRmFpbGVkIHRvIHNldCBQ
QVNTV09SRF9FWFBJUkVTIGZvciB1c2VyICVzXG4iLAogCQkJCQkJLyogMzI6IFBBU1NFWFBGQUlM
ICAgICAgKi8KLSAgICAiIiwKLQkJCQkJCS8qIDMzOiAqLwotICAgICIiLAotCQkJCQkJLyogMzQ6
ICovCi0gICAgIkFGUyBibGluZGx5IHRydXN0aW5nIHVzZXIgJXNcbiIsCQkvKiAzNTogVFJVU1RS
T09UCSovCi0gICAgIk5ldyBBRlMgUGFzc3dvcmQ6ICIsICAgICAgICAgICAgICAgICAgICAgICAv
KiAzNjogTkVXX1BXRF9QUk9NUFQgICAqLwotICAgICJOZXcgQUZTIFBhc3N3b3JkIChhZ2Fpbik6
ICIsICAgICAgICAgICAgICAgLyogMzc6IFZFUklGWV9QV0RfUFJPTVBUICovCi0gICAgIkZhaWxl
ZCB0byBjaGFuZ2UgQUZTIHBhc3N3b3JkIiwgICAgICAgICAgICAvKiAzODogS1JCUEFTU19GQUlM
ICAgICAqLwotICAgICJNaXNzaW5nIFBBTSBmbGFnOiAlcyIsICAgICAgICAgICAgICAgICAgICAg
LyogMzk6IEZMQUdTICAgICAgICAgICAgKi8KLSAgICAia2EgZXJyb3IsIGNvZGU9JWQiLCAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIDQwOiBLQUVSUk9SICAgICAgICAgICovCi0gICAgIlBhc3N3
b3JkcyBhcmUgbm90IGVxdWFsIiAgICAgICAgICAgICAgICAgICAvKiA0MTogTkVfUEFTU1dPUkQg
ICAgICAqLworICAgICJBRlMgRmFpbGVkIHRvIGNob3duIGtyYiB0aWNrZXRmaWxlXG4iLCAgICAg
LyogMzM6IENIT1dOS1JCICAgICAgICAgKi8KKyAgICAiQUZTIEZhaWxlZCB0byBzZXQgS1JCVEtU
RklMRVxuIiwgICAgICAgICAgIC8qIDM0OiBLUkJGQUlMICAgICAgICAgICovCisgICAgIkFGUyBV
bmtub3duIHJlbWFpbmluZyBsaWZldGltZSAlcyB1c2luZyBkZWZhdWx0ICVkIHNlY29uZHNcbiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAzNTog
UkVNQUlOTElGRVRJTUUgICAqLworICAgICJBRlMgU2Vzc2lvbiBjbG9zZWQiLCAgICAgICAgICAg
ICAgICAgICAgICAgLyogMzY6IFNFU1NJT05DTE9TRUQxICAgKi8KKyAgICAiQUZTIFNlc3Npb24g
Y2xvc2VkLCBUb2tlbnMgZGVzdHJveWVkXG4iLCAgIC8qIDM3OiBTRVNTSU9OQ0xPU0VEMiAgICov
CisgICAgIkFGUyBPcHRpb24gY29uZmxpY3QgZG9udF9mb3JrIGFuZCB1c2Vfa2xvZzogJXNcbiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAzODog
Q09ORkxJQ1RPUFQgICAgICAqLworICAgICJBRlMgVW5rbm93biB1aWQ6ICVzLCBvcHRpb24gaWdu
b3JlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIDM5OiBJR05PUkVVSUQgICAgICAgICovCisgICAgIk5ldyBBRlMgUGFzc3dvcmQ6ICIsICAg
ICAgICAgICAgICAgICAgICAgICAvKiA0MDogTkVXX1BXRF9QUk9NUFQgICAqLworICAgICJOZXcg
QUZTIFBhc3N3b3JkIChhZ2Fpbik6ICIsICAgICAgICAgICAgICAgLyogNDE6IFZFUklGWV9QV0Rf
UFJPTVBUICovCisgICAgIkZhaWxlZCB0byBjaGFuZ2UgQUZTIHBhc3N3b3JkIiwgICAgICAgICAg
ICAvKiA0MjogS1JCUEFTU19GQUlMICAgICAqLworICAgICJNaXNzaW5nIFBBTSBmbGFnOiAlcyIs
ICAgICAgICAgICAgICAgICAgICAgLyogNDM6IEZMQUdTICAgICAgICAgICAgKi8KKyAgICAia2Eg
ZXJyb3IsIGNvZGU9JWQiLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIDQ0OiBLQUVSUk9SICAg
ICAgICAgICovCisgICAgIlBhc3N3b3JkcyBhcmUgbm90IGVxdWFsIiwgICAgICAgICAgICAgICAg
ICAvKiA0NTogTkVfUEFTU1dPUkQgICAgICAqLworICAgICJBRlMgaWdub3JpbmcgdW5yZWdpc3Rl
cmVkIHVzZXIgJXNcbiIgICAgICAgLyogNDY6IElHTk9SRV9VTlJFRyAgICAgKi8KIH07CiAKIHN0
YXRpYyBpbnQgbnVtX2ZhbGxiYWNrcyA9IHNpemVvZihmYWxsYmFja19tZXNzYWdlcykvc2l6ZW9m
KGNoYXIgKik7CmRpZmYgLXVyTiBvcGVuYWZzLTEuMS4xLm9yaWcvc3JjL3BhbS9hZnNfbWVzc2Fn
ZS5oIG9wZW5hZnMtMS4xLjEvc3JjL3BhbS9hZnNfbWVzc2FnZS5oCi0tLSBvcGVuYWZzLTEuMS4x
Lm9yaWcvc3JjL3BhbS9hZnNfbWVzc2FnZS5oCVdlZCBBdWcgIDggMTM6NDE6MjMgMjAwMQorKysg
b3BlbmFmcy0xLjEuMS9zcmMvcGFtL2Fmc19tZXNzYWdlLmgJV2VkIEF1ZyAgOCAxMzo0MTo1NyAy
MDAxCkBAIC00NSwxMyArNDUsMTkgQEAKICNkZWZpbmUgUEFNQUZTX1BBU1NFWFBGQUlMCTMyIC8q
ICJGYWlsZWQgdG8gc2V0IFBBU1NXT1JEX0VYUElSRVMiICAqLwogI2RlZmluZSBQQU1BRlNfQ0hP
V05LUkIJCTMzIC8qICJGYWlsZWQgdG8gY2hvd24ga3JiIHRpY2tldGZpbGUiICAqLwogI2RlZmlu
ZSBQQU1BRlNfS1JCRkFJTAkJMzQgLyogIkZhaWxlZCB0byBzZXQgS1JCVEtURklMRSIgICAgICAg
ICovCi0jZGVmaW5lIFBBTUFGU19UUlVTVFJPT1QJMzUgLyogIklnbm9yaW5nIHN1cGVydXNlciAl
cyIJCSovCi0jZGVmaW5lIFBBTUFGU19ORVdfUFdEX1BST01QVCAgIDM2IC8qICJOZXcgQUZTIFBh
c3N3b3JkOiIgICAgICAgICAgICAgICAqLwotI2RlZmluZSBQQU1BRlNfVkVSSUZZX1BXRF9QUk9N
UFQgIDM3IC8qICJOZXcgQUZTIFBhc3N3b3JkIChhZ2Fpbik6IiAgICAgKi8KLSNkZWZpbmUgUEFN
QUZTX0tBUEFTU19GQUlMICAgICAgMzggLyogIkZhaWxlZCB0byBjaGFuZ2UgQUZTIHBhc3N3b3Jk
IiAgICovCi0jZGVmaW5lIFBBTUFGU19GTEFHUyAgICAgICAgICAgIDM5IC8qICJNaXNzaW5nIFBB
TSBmbGFnOiIgICAgICAgICAgICAgICAqLwotI2RlZmluZSBQQU1BRlNfS0FFUlJPUiAgICAgICAg
ICA0MCAvKiAia2EgZXJyb3IsIGNvZGU9JWQiICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgUEFN
QUZTX05FX1BBU1NXT1JEICAgICAgNDEgLyogIlBhc3N3b3JkcyBhcmUgbm90IGVxdWFsIiAgICAg
ICAgICovICAKKyNkZWZpbmUgUEFNQUZTX1JFTUFJTkxJRkVUSU1FICAgMzUgLyogIlVua25vd24g
cmVtYWluaW5nIGxpZmV0aW1lIiAgICAgICovCisjZGVmaW5lIFBBTUFGU19TRVNTSU9OQ0xPU0VE
MSAgIDM2IC8qICJTZXNzaW9uIGNsb3NlZCIgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBQ
QU1BRlNfU0VTU0lPTkNMT1NFRDIgICAzNyAvKiAiU2Vzc2lvbiBjbG9zZWQsIFRva2VucyBkZXN0
cm95ZWQiKi8KKyNkZWZpbmUgUEFNQUZTX0NPTkZMSUNUT1BUICAgICAgMzggLyogIk9wdGlvbiBj
b25mbGljdCIgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFBBTUFGU19JR05PUkVVSUQgICAg
ICAgIDM5IC8qICJVbmtub3duIHVpZCIgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBQ
QU1BRlNfTkVXX1BXRF9QUk9NUFQgICA0MCAvKiAiTmV3IEFGUyBQYXNzd29yZDoiICAgICAgICAg
ICAgICAgKi8KKyNkZWZpbmUgUEFNQUZTX1ZFUklGWV9QV0RfUFJPTVBUICA0MSAvKiAiTmV3IEFG
UyBQYXNzd29yZCAoYWdhaW4pOiIgICAgICovCisjZGVmaW5lIFBBTUFGU19LQVBBU1NfRkFJTCAg
ICAgIDQyIC8qICJGYWlsZWQgdG8gY2hhbmdlIEFGUyBwYXNzd29yZCIgICAqLworI2RlZmluZSBQ
QU1BRlNfRkxBR1MgICAgICAgICAgICA0MyAvKiAiTWlzc2luZyBQQU0gZmxhZzoiICAgICAgICAg
ICAgICAgKi8KKyNkZWZpbmUgUEFNQUZTX0tBRVJST1IgICAgICAgICAgNDQgLyogImthIGVycm9y
LCBjb2RlPSVkIiAgICAgICAgICAgICAgICovCisjZGVmaW5lIFBBTUFGU19ORV9QQVNTV09SRCAg
ICAgIDQ1IC8qICJQYXNzd29yZHMgYXJlIG5vdCBlcXVhbCIgICAgICAgICAqLworI2RlZmluZSBQ
QU1BRlNfSUdOT1JFX1VOUkVHICAgICA0NiAvKiAiQUZTIGlnbm9yaW5nIHVucmVnaXN0ZXJlZCB1
c2VyIiAgKi8KKwogCiBjaGFyICpwYW1fYWZzX21lc3NhZ2UoaW50IG1zZ251bSwgaW50ICpmcmVl
aXQpOwogdm9pZCBwYW1fYWZzX3N5c2xvZyhpbnQgcHJpb3JpdHksIGludCBtc2dpZCwgLi4uKTsK
ZGlmZiAtdXJOIG9wZW5hZnMtMS4xLjEub3JpZy9zcmMvcGFtL2Fmc19wYXNzd29yZC5jIG9wZW5h
ZnMtMS4xLjEvc3JjL3BhbS9hZnNfcGFzc3dvcmQuYwotLS0gb3BlbmFmcy0xLjEuMS5vcmlnL3Ny
Yy9wYW0vYWZzX3Bhc3N3b3JkLmMJV2VkIEF1ZyAgOCAxMzo0MToyMyAyMDAxCisrKyBvcGVuYWZz
LTEuMS4xL3NyYy9wYW0vYWZzX3Bhc3N3b3JkLmMJV2VkIEF1ZyAxNSAwOToxNjo0OSAyMDAxCkBA
IC05Myw4ICs5MywxMSBAQAogCiAgICAgaWYgKHVzZV9maXJzdF9wYXNzKSB0cnlfZmlyc3RfcGFz
cyA9IDA7CiAKLSAgICBwYW1fYWZzX3N5c2xvZyhMT0dfREVCVUcsIFBBTUFGU19PUFRJT05TLCBu
b3dhcm4sIHVzZV9maXJzdF9wYXNzLCB0cnlfZmlyc3RfcGFzcyk7Ci0gICAgcGFtX2Fmc19zeXNs
b2coTE9HX0RFQlVHLCBQQU1BRlNfUEFNRVJST1IsIGZsYWdzKTsKKyAgICBpZiAobG9nbWFzayAm
JiBMT0dfTUFTSyhMT0dfREVCVUcpKQorICAgICAgeworCXBhbV9hZnNfc3lzbG9nKExPR19ERUJV
RywgUEFNQUZTX09QVElPTlMsIG5vd2FybiwgdXNlX2ZpcnN0X3Bhc3MsIHRyeV9maXJzdF9wYXNz
KTsKKwlwYW1fYWZzX3N5c2xvZyhMT0dfREVCVUcsIFBBTUFGU19QQU1FUlJPUiwgZmxhZ3MpOwor
ICAgICAgfQogCiAgICAgLyogVHJ5IHRvIGdldCB0aGUgdXNlci1pbnRlcmFjdGlvbiBpbmZvLCBp
ZiBhdmFpbGFibGUuICovCiAgICAgZXJyY29kZSA9IHBhbV9nZXRfaXRlbShwYW1oLCBQQU1fQ09O
ViwgKGNvbnN0IHZvaWQgKiopICZwYW1fY29udnApOwpAQCAtMTA5LDcgKzExMiw4IEBACiAJUkVU
KFBBTV9VU0VSX1VOS05PV04pOwogICAgIH0KIAotICAgIHBhbV9hZnNfc3lzbG9nKExPR19ERUJV
RywgUEFNQUZTX1VTRVJOQU1FREVCVUcsIHVzZXIpOworICAgIGlmIChsb2dtYXNrICYmIExPR19N
QVNLKExPR19ERUJVRykpCisgICAgICBwYW1fYWZzX3N5c2xvZyhMT0dfREVCVUcsIFBBTUFGU19V
U0VSTkFNRURFQlVHLCB1c2VyKTsKIAogICAgIC8qCiAgICAgICogSWYgdGhlIHVzZXIgaGFzIGEg
ImxvY2FsIiAob3IgdmlhIG5zcywgcG9zc2libHkgbnNzX2RjZSkgcHdlbnQsCkBAIC0xNDcsMTMg
KzE1MSwxNSBAQAogCSAgICBSRVQoUEFNX0FVVEhfRVJSKTsKIAl9CiAJcGFzc3dvcmQgPSBOVUxM
OwkvKiBJbiBjYXNlIGl0IGlzbid0IGFscmVhZHkgTlVMTCAqLwotCXBhbV9hZnNfc3lzbG9nKExP
R19ERUJVRywgUEFNQUZTX05PRklSU1RQQVNTLCB1c2VyKTsKKwlpZiAobG9nbWFzayAmJiBMT0df
TUFTSyhMT0dfREVCVUcpKQorCSAgcGFtX2Fmc19zeXNsb2coTE9HX0RFQlVHLCBQQU1BRlNfTk9G
SVJTVFBBU1MsIHVzZXIpOwogICAgIH0gZWxzZSBpZiAocGFzc3dvcmRbMF0gPT0gJ1wwJykgewog
CS8qIEFjdHVhbGx5IHdlICpkaWQqIGdldCBvbmUgYnV0IGl0IHdhcyBlbXB0eS4gKi8KIAl0b3Jj
aF9wYXNzd29yZCA9IDA7CiAJcGFtX2Fmc19zeXNsb2coTE9HX0lORk8sIFBBTUFGU19OSUxQQVNT
V09SRCwgdXNlcik7CiAJUkVUKFBBTV9ORVdfQVVUSFRPS19SRVFEKTsKICAgICB9IGVsc2Ugewor
ICAgICAgaWYgKGxvZ21hc2sgJiYgTE9HX01BU0soTE9HX0RFQlVHKSkKIAlwYW1fYWZzX3N5c2xv
ZyhMT0dfREVCVUcsIFBBTUFGU19HT1RQQVNTLCB1c2VyKTsKIAl0b3JjaF9wYXNzd29yZCA9IDA7
CiAJZ290X2F1dGh0b2sgPSAxOwpkaWZmIC11ck4gb3BlbmFmcy0xLjEuMS5vcmlnL3NyYy9wYW0v
YWZzX3Nlc3Npb24uYyBvcGVuYWZzLTEuMS4xL3NyYy9wYW0vYWZzX3Nlc3Npb24uYwotLS0gb3Bl
bmFmcy0xLjEuMS5vcmlnL3NyYy9wYW0vYWZzX3Nlc3Npb24uYwlXZWQgQXVnICA4IDEzOjQxOjIz
IDIwMDEKKysrIG9wZW5hZnMtMS4xLjEvc3JjL3BhbS9hZnNfc2Vzc2lvbi5jCVdlZCBBdWcgMTUg
MDk6MTg6NTAgMjAwMQpAQCAtMTQsNiArMTQsMTMgQEAKIAogI2luY2x1ZGUgPHNlY3VyaXR5L3Bh
bV9hcHBsLmg+CiAjaW5jbHVkZSA8c2VjdXJpdHkvcGFtX21vZHVsZXMuaD4KKyNpbmNsdWRlIDxz
eXNsb2cuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNs
dWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgImFmc19tZXNzYWdl
LmgiCisjaW5jbHVkZSAiYWZzX3V0aWwuaCIKIAogZXh0ZXJuIGludAogcGFtX3NtX29wZW5fc2Vz
c2lvbigKQEAgLTI2LDYgKzMzLDggQEAKIH0KIAogCisjZGVmaW5lIFJFTUFJTkxJRkVUSU1FIDMw
MAorCiBleHRlcm4gaW50CiBwYW1fc21fY2xvc2Vfc2Vzc2lvbigKIAlwYW1faGFuZGxlX3QJKnBh
bWgsCkBAIC0zMyw1ICs0Miw2OCBAQAogCWludAkJYXJnYywKIAljb25zdCBjaGFyCSoqYXJndikK
IHsKKyAgICBpbnQgaTsKKyAgICBpbnQgbG9nbWFzayA9IExPR19VUFRPKExPR19JTkZPKTsKKyAg
ICBpbnQgb3JpZ21hc2s7CisgICAgaW50IHJlbWFpbiA9IDA7CisgICAgaW50IHJlbWFpbmxpZmV0
aW1lID0gUkVNQUlOTElGRVRJTUU7CisgICAgaW50IG5vX3VubG9nID0gMDsKKworICAgIG9wZW5s
b2cocGFtX2Fmc19pZGVudCwgTE9HX0NPTlN8TE9HX1BJRCwgTE9HX0FVVEgpOworICAgIG9yaWdt
YXNrID0gc2V0bG9nbWFzayhsb2dtYXNrKTsKKworICAgIC8qCisgICAgICogUGFyc2UgdGhlIHVz
ZXIgb3B0aW9ucy4gIExvZyBhbiBlcnJvciBmb3IgYW55IHVua25vd24gb3B0aW9ucy4KKyAgICAg
Ki8KKyAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7CisgICAgICAgIGlmICggICAgICAg
c3RyY2FzZWNtcChhcmd2W2ldLCAiZGVidWciICAgICAgICAgKSA9PSAwKSB7CisgICAgICAgICAg
ICBsb2dtYXNrIHw9IExPR19NQVNLKExPR19ERUJVRyk7CisgICAgICAgICAgICAodm9pZCkgc2V0
bG9nbWFzayhsb2dtYXNrKTsKKyAgICAgICAgfSBlbHNlIGlmIChzdHJjYXNlY21wKGFyZ3ZbaV0s
ICJyZW1haW4iICAgICAgICApID09IDApIHsKKyAgICAgICAgICAgIHJlbWFpbiA9IDE7CisgICAg
ICAgIH0gZWxzZSBpZiAoc3RyY2FzZWNtcChhcmd2W2ldLCAicmVtYWlubGlmZXRpbWUiKSA9PSAw
KSB7CisgICAgICAgICAgICBpKys7CisgICAgICAgICAgICByZW1haW4gPSAxOworICAgICAgICAg
ICAgcmVtYWlubGlmZXRpbWUgPSAoaW50KSBzdHJ0b2woYXJndltpXSwgKGNoYXIqKilOVUxMLCAx
MCk7CisgICAgICAgICAgICBpZiAocmVtYWlubGlmZXRpbWUgPT0gMCkKKyAgICAgICAgICAgICAg
ICBpZigoZXJybm8gPT0gRUlOVkFMKSB8fCAoZXJybm8gPT0gRVJBTkdFKSkgeworICAgICAgICAg
ICAgICAgICAgICByZW1haW5saWZldGltZSA9IFJFTUFJTkxJRkVUSU1FOworICAgICAgICAgICAg
ICAgICAgICBwYW1fYWZzX3N5c2xvZyhMT0dfRVJSLCBQQU1BRlNfUkVNQUlOTElGRVRJTUUsIGFy
Z3ZbaV0sIFJFTUFJTkxJRkVUSU1FKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICBub191bmxvZyA9IDA7CisgICAgICAgICAgICAgICAgICAgIHJlbWFpbiA9
IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChhcmd2W2ld
LCAibm9fdW5sb2ciKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgbm9fdW5sb2cgPSAxOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFtX2Fmc19zeXNsb2coTE9HX0VSUiwgUEFNQUZT
X1VOS05PV05PUFQsIGFyZ3ZbaV0pOworICAgICAgICB9CisgICAgfQorICAgICAgIAorICAgIGlm
IChsb2dtYXNrICYmIExPR19NQVNLKExPR19ERUJVRykpCisgICAgICBzeXNsb2coTE9HX0RFQlVH
LCAicGFtX2Fmc19zZXNzaW9uX2Nsb3NlOiByZW1haW46ICVkLCByZW1haW5saWZldGltZTogJWQs
IG5vX3VubG9nOiAlZCIscmVtYWluLHJlbWFpbmxpZmV0aW1lLG5vX3VubG9nKTsKKyAgICBpZihy
ZW1haW4gJiYgIW5vX3VubG9nKSB7CisgICAgICAgIHN3aXRjaCAoZm9yaygpKSB7CisgICAgICAg
ICAgICBjYXNlIC0xIDogLyogZXJyb3IgKi8KKyAgICAgICAgICAgICAgICAgcmV0dXJuKFBBTV9T
RVNTSU9OX0VSUik7CisgICAgICAgICAgICBjYXNlIDAgIDogLyogY2hpbGQgKi8KKyNpZmRlZiBB
RlNfTElOVVgyMF9FTlYgCisJCSBzZXRwZ3JwKCk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAg
c2V0c2lkKCk7CisJCSBmb3IgKGkgPSAwOyBpIDw2NDsgaSsrKSBjbG9zZSAoaSk7CisgICAgICAg
ICAgICAgICAgIHNsZWVwKHJlbWFpbmxpZmV0aW1lKTsKKyAgICAgICAgICAgICAgICAga3RjX0Zv
cmdldEFsbFRva2VucygpOworICAgICAgICAgICAgICAgICBwYW1fYWZzX3N5c2xvZyhMT0dfSU5G
TywgUEFNQUZTX1NFU1NJT05DTE9TRUQyKTsKKyAgICAgICAgICAgICAgICAgZXhpdCgwKTsKKyAg
ICAgICAgICAgIGRlZmF1bHQgOiAvKiBwYXJlbnQgKi8KKyAgICAgICAgICAgICAgICAgcGFtX2Fm
c19zeXNsb2coTE9HX0lORk8sIFBBTUFGU19TRVNTSU9OQ0xPU0VEMSk7CisgICAgICAgICAgICAg
ICAgIHJldHVybihQQU1fU1VDQ0VTUyk7CisgICAgICAgIH0KKyAgICB9IAorICAgIGlmICghbm9f
dW5sb2cgJiYga3RjX0ZvcmdldEFsbFRva2VucygpKQorCSAgICByZXR1cm4gUEFNX1NFU1NJT05f
RVJSOworICAgIGlmIChsb2dtYXNrICYmIExPR19NQVNLKExPR19ERUJVRykpCisgICAgICBzeXNs
b2coTE9HX0RFQlVHLCAicGFtX2Fmc19zZXNzaW9uX2Nsb3NlOiBTZXNzaW9uIGNsb3NlZCIpOwog
ICAgIHJldHVybiBQQU1fU1VDQ0VTUzsKIH0KZGlmZiAtdXJOIG9wZW5hZnMtMS4xLjEub3JpZy9z
cmMvcGFtL2Fmc19zZXRjcmVkLmMgb3BlbmFmcy0xLjEuMS9zcmMvcGFtL2Fmc19zZXRjcmVkLmMK
LS0tIG9wZW5hZnMtMS4xLjEub3JpZy9zcmMvcGFtL2Fmc19zZXRjcmVkLmMJV2VkIEF1ZyAgOCAx
Mzo0MToyMyAyMDAxCisrKyBvcGVuYWZzLTEuMS4xL3NyYy9wYW0vYWZzX3NldGNyZWQuYwlGcmkg
QXVnIDMxIDE3OjIwOjU1IDIwMDEKQEAgLTE0LDYgKzE0LDcgQEAKICNpbmNsdWRlIDxzdHJpbmcu
aD4KICNpbmNsdWRlIDxwd2QuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxlcnJu
by5oPgogI2luY2x1ZGUgPGFmc2NvbmZpZy5oPgogI2luY2x1ZGUgPGFmcy9wYXJhbS5oPgogCkBA
IC00NCwxMiArNDUsMTUgQEAKICAgICBpbnQgb3JpZ21hc2s7CiAgICAgaW50IGxvZ21hc2sgPSBM
T0dfVVBUTyhMT0dfSU5GTyk7CiAgICAgaW50IG5vd2FybiA9IDA7Ci0gICAgaW50IHVzZV9maXJz
dF9wYXNzID0gMTsgLyogdXNlIHRoZSBwYXNzd29yZCBwYXNzZWQgaW4gYnkgYXV0aCAqLworICAg
IGludCB1c2VfZmlyc3RfcGFzcyA9IDA7IC8qIHVzZSB0aGUgcGFzc3dvcmQgcGFzc2VkIGluIGJ5
IGF1dGggKi8KICAgICBpbnQgdHJ5X2ZpcnN0X3Bhc3MgPSAwOwogICAgIGludCBnb3RfYXV0aHRv
ayA9IDA7Ci0gICAgaW50IGlnbm9yZV9yb290ID0gMDsKLSAgICBpbnQgdHJ1c3Rfcm9vdCA9IDA7
CisgICAgaW50IGlnbm9yZV91aWQgID0gMDsKKyAgICBpbnQgbm9fdW5sb2cgPSAwOworICAgIHVp
ZF90IGlnbm9yZV91aWRfaWQgPSAwOworICAgIGludCByZWZyZXNoX3Rva2VuID0gMDsKICAgICBp
bnQgc2V0X2V4cGlyZXMgPSAwOyAvKiB0aGUgZGVmYXVsdCBpcyB0byBub3QgdG8gc2V0IHRoZSBl
bnYgdmFyaWFibGUgKi8KKyAgICBpbnQgdXNlX2tsb2cgPSAwOwogICAgIGludCBpOwogICAgIHN0
cnVjdCBwYW1fY29udiAqcGFtX2NvbnZwID0gTlVMTDsKICAgICBjaGFyIG15X3Bhc3N3b3JkX2J1
ZlsyNTZdOwpAQCAtODMsMTEgKzg3LDMxIEBACiAJfSBlbHNlIGlmIChzdHJjYXNlY21wKGFyZ3Zb
aV0sICJ0cnlfZmlyc3RfcGFzcyIpID09IDApIHsKIAkgICAgdHJ5X2ZpcnN0X3Bhc3MgPSAxOwog
ICAgICAgICB9IGVsc2UgaWYgKHN0cmNhc2VjbXAoYXJndltpXSwgImlnbm9yZV9yb290IiAgICkg
PT0gMCkgewotICAgICAgICAgICAgaWdub3JlX3Jvb3QgPSAxOwotICAgICAgICB9IGVsc2UgaWYg
KHN0cmNhc2VjbXAoYXJndltpXSwgInRydXN0X3Jvb3QiICAgKSA9PSAwKSB7Ci0gICAgICAgICAg
ICB0cnVzdF9yb290ID0gMTsKLSAgICAgICAgfSBlbHNlIGlmIChzdHJjYXNlY21wKGFyZ3ZbaV0s
ICJjYXRjaF9zdSIgICApID09IDApIHsKLSAgICAgICAgICAgIHVzZV9maXJzdF9wYXNzID0gMDsK
KyAgICAgICAgICAgIGlnbm9yZV91aWQgPSAxOworCSAgICBpZ25vcmVfdWlkX2lkID0gMDsKKwl9
IGVsc2UgaWYgKHN0cmNhc2VjbXAoYXJndltpXSwgImlnbm9yZV91aWQiICAgICkgPT0gMCkgewor
CSAgICBpKys7CisJICAgIGlmIChpID09IGFyZ2MpIHsKKyAgICAgICAgICAgICAgICBwYW1fYWZz
X3N5c2xvZyhMT0dfRVJSLCBQQU1BRlNfSUdOT1JFVUlELCAiaWdub3JlX3VpZCBtaXNzaW5nIGFy
Z3VtZW50Iik7CisJCWlnbm9yZV91aWQgPSAwOworCSAgICB9IGVsc2UgeworCSAgICAgICAgaWdu
b3JlX3VpZCA9IDE7CisJICAgICAgICBpZ25vcmVfdWlkX2lkID0gKHVpZF90KSBzdHJ0b2woYXJn
dltpXSwgKGNoYXIqKilOVUxMLCAxMCk7CisJICAgICAgICBpZiAoICgwID4gaWdub3JlX3VpZF9p
ZCkgfHwgKGlnbm9yZV91aWRfaWQgPiBJR05PUkVfTUFYKSApIHsKKwkJICAgICAgICBpZ25vcmVf
dWlkID0gMDsKKwkJICAgICAgICBwYW1fYWZzX3N5c2xvZyhMT0dfRVJSLCBQQU1BRlNfSUdOT1JF
VUlELCBhcmd2W2ldKTsKKyAgICAgICAgICAgICAgICB9CisJICAgIH0KKwl9IGVsc2UgaWYgKHN0
cmNhc2VjbXAoYXJndltpXSwgIm5vX3VubG9nIikgPT0gMCkgeworCSAgICBub191bmxvZyA9IDE7
CisJfSBlbHNlIGlmIChzdHJjYXNlY21wKGFyZ3ZbaV0sICJyZWZyZXNoX3Rva2VuIiApID09IDAp
IHsKKwkgICAgcmVmcmVzaF90b2tlbiA9IDE7CisJfSBlbHNlIGlmIChzdHJjYXNlY21wKGFyZ3Zb
aV0sICJzZXRfdG9rZW4iICkgPT0gMCkgeworCSAgICA7CisJfSBlbHNlIGlmIChzdHJjYXNlY21w
KGFyZ3ZbaV0sICJkb250X2ZvcmsiICkgPT0gMCkgeworCSAgICA7CisJfSBlbHNlIGlmIChzdHJj
YXNlY21wKGFyZ3ZbaV0sICJ1c2Vfa2xvZyIgKSA9PSAwKSB7CisJICAgIHVzZV9rbG9nID0gMTsK
IAl9IGVsc2UgaWYgKHN0cmNhc2VjbXAoYXJndltpXSwgInNldGVudl9wYXNzd29yZF9leHBpcmVz
Iik9PTApIHsKIAkgICAgc2V0X2V4cGlyZXMgPSAxOwogCX0gZWxzZSB7CkBAIC05NywxNiArMTIx
LDE4IEBACiAKICAgICBpZiAodXNlX2ZpcnN0X3Bhc3MpIHRyeV9maXJzdF9wYXNzID0gMDsKIAot
ICAgIHBhbV9hZnNfc3lzbG9nKExPR19ERUJVRywgUEFNQUZTX09QVElPTlMsIG5vd2FybiwgdXNl
X2ZpcnN0X3Bhc3MsIHRyeV9maXJzdF9wYXNzKTsKKyAgICBpZiAobG9nbWFzayAmJiBMT0dfTUFT
SyhMT0dfREVCVUcpKQorICAgICAgcGFtX2Fmc19zeXNsb2coTE9HX0RFQlVHLCBQQU1BRlNfT1BU
SU9OUywgbm93YXJuLCB1c2VfZmlyc3RfcGFzcywgdHJ5X2ZpcnN0X3Bhc3MsIGlnbm9yZV91aWQs
IGlnbm9yZV91aWRfaWQsIDgsIDgsIDgsIDgpOwogICAgIC8qIFRyeSB0byBnZXQgdGhlIHVzZXIt
aW50ZXJhY3Rpb24gaW5mbywgaWYgYXZhaWxhYmxlLiAqLwotICAgIGVycmNvZGUgPSBwYW1fZ2V0
X2l0ZW0ocGFtaCwgUEFNX0NPTlYsICh2b2lkICoqKSAmcGFtX2NvbnZwKTsKKyAgICBlcnJjb2Rl
ID0gcGFtX2dldF9pdGVtKHBhbWgsIFBBTV9DT05WLCAoY29uc3Qgdm9pZCAqKikgJnBhbV9jb252
cCk7CiAgICAgaWYgKGVycmNvZGUgIT0gUEFNX1NVQ0NFU1MpIHsKKyAgICAgIGlmIChsb2dtYXNr
ICYmIExPR19NQVNLKExPR19ERUJVRykpCiAJcGFtX2Fmc19zeXNsb2coTE9HX0RFQlVHLCBQQU1B
RlNfTk9fVVNFUl9JTlQpOwogCXBhbV9jb252cCA9IE5VTEw7CiAgICAgfQogCiAgICAgLyogV2hv
IGFyZSB3ZSB0cnlpbmcgdG8gYXV0aGVudGljYXRlIGhlcmU/ICovCi0gICAgaWYgKChlcnJjb2Rl
ID0gcGFtX2dldF91c2VyKHBhbWgsICZ1c2VyLCAiQUZTIHVzZXJuYW1lOiIpKSAhPSBQQU1fU1VD
Q0VTUykgeworICAgIGlmICgoZXJyY29kZSA9IHBhbV9nZXRfdXNlcihwYW1oLCAoY29uc3QgY2hh
ciAqKikmdXNlciwgIkFGUyB1c2VybmFtZToiKSkgIT0gUEFNX1NVQ0NFU1MpIHsKICAgICAgICAg
cGFtX2Fmc19zeXNsb2coTE9HX0VSUiwgUEFNQUZTX05PVVNFUiwgZXJyY29kZSk7CiAgICAgICAg
IFJFVChQQU1fVVNFUl9VTktOT1dOKTsKICAgICB9CkBAIC0xMTUsNiArMTQxLDkgQEAKICAgICAg
KiBhbmQgaXRzIHVpZD09MCwgYW5kICJpZ25vcmVfcm9vdCIgd2FzIGdpdmVuIGluIHBhbS5jb25m
LAogICAgICAqIGlnbm9yZSB0aGUgdXNlci4KICAgICAgKi8KKyAgICAvKiBlbmhhbmNlZDogdXNl
ICJpZ25vcmVfdWlkIDxudW1iZXI+IiB0byBzcGVjaWZ5IHRoZSBsYXJnZXN0IHVpZAorICAgICAq
IHdoaWNoIHNob3VsZCBiZSBpZ25vcmVkIGJ5IHRoaXMgbW9kdWxlCisgICAgICovCiAjaWYJZGVm
aW5lZChBRlNfSFBVWF9FTlYpCiAjaWYgICAgIGRlZmluZWQoQUZTX0hQVVgxMTBfRU5WKQogICAg
IGkgPSBnZXRwd25hbV9yKHVzZXIsICZ1bml4X3B3ZCwgdXB3ZF9idWYsIHNpemVvZih1cHdkX2J1
ZiksICZ1cHdkKTsKQEAgLTEyMyw3ICsxNTIsNyBAQAogICAgIGlmICggaSA9PSAwICkgICAgICAg
ICAgICAgICAgICAgICAgIC8qIGdldHB3bmFtX3Igc3VjY2VzcyAqLwogICAgICAgICB1cHdkID0g
JnVuaXhfcHdkOwogI2VuZGlmICAvKiBBRlNfSFBVWDExMF9FTlYgKi8KLSAgICBpZiAoaWdub3Jl
X3Jvb3QgJiYgaSA9PSAwICYmIHVwd2QtPnB3X3VpZCA9PSAwKSB7CisgICAgaWYgKGlnbm9yZV91
aWQgJiYgaSA9PSAwICYmIHVwd2QtPnB3X3VpZCA8PSBpZ25vcmVfdWlkX2lkKSB7CiAgICAgICAg
IHBhbV9hZnNfc3lzbG9nKExPR19JTkZPLCBQQU1BRlNfSUdOT1JJTkdST09ULCB1c2VyKTsKICAg
ICAgICAgUkVUKFBBTV9BVVRIX0VSUik7CiAgICAgfQpAQCAtMTMzLDI4ICsxNjIsMjYgQEAKICNl
bHNlCiAgICAgdXB3ZCA9IGdldHB3bmFtX3IodXNlciwgJnVuaXhfcHdkLCB1cHdkX2J1Ziwgc2l6
ZW9mKHVwd2RfYnVmKSk7CiAjZW5kaWYKLSAgICBpZiAodXB3ZCAhPSBOVUxMICYmIHVwd2QtPnB3
X3VpZCA9PSAwKSB7Ci0JaWYgKGlnbm9yZV9yb290KSB7IAorICAgIGlmIChpZ25vcmVfdWlkICYm
IHVwd2QgIT0gTlVMTCAmJiB1cHdkLT5wd191aWQgPD0gaWdub3JlX3VpZF9pZCkgewogCQlwYW1f
YWZzX3N5c2xvZyhMT0dfSU5GTywgUEFNQUZTX0lHTk9SSU5HUk9PVCwgdXNlcik7CiAJCVJFVChQ
QU1fQVVUSF9FUlIpOwotCX0gZWxzZSBpZiAodHJ1c3Rfcm9vdCkgewotCQlwYW1fYWZzX3N5c2xv
ZyhMT0dfSU5GTywgUEFNQUZTX1RSVVNUUk9PVCwgdXNlcik7Ci0JCVJFVChQQU1fU1VDQ0VTUyk7
Ci0JfQogICAgIH0KICNlbmRpZgogCiAgICAgaWYgKGZsYWdzICYgUEFNX0RFTEVURV9DUkVEKSB7
CisgICAgICBpZiAobG9nbWFzayAmJiBMT0dfTUFTSyhMT0dfREVCVUcpKQogCXBhbV9hZnNfc3lz
bG9nKExPR19ERUJVRywgUEFNQUZTX0RFTENSRUQsIHVzZXIpOwogCiAJUkVUKFBBTV9TVUNDRVNT
KTsKICAgICB9IGVsc2UgaWYgKGZsYWdzICYgUEFNX1JFSU5JVElBTElaRV9DUkVEKSB7CiAKKyAg
ICAgIGlmIChsb2dtYXNrICYmIExPR19NQVNLKExPR19ERUJVRykpCiAgICAgICAgIHBhbV9hZnNf
c3lzbG9nKExPR19ERUJVRywgUEFNQUZTX1JFSU5JVENSRUQsIHVzZXIpOwogICAgICAgICBSRVQo
UEFNX1NVQ0NFU1MpOwogCiAgICAgfSBlbHNlIHsgLyogZmxhZ3MgYXJlIFBBTV9SRUZSRVNIX0NS
RUQsIFBBTV9FU1RBQkxJU0hfQ1JFRCwgdW5rbm93biAqLwogCisgICAgICBpZiAobG9nbWFzayAm
JiBMT0dfTUFTSyhMT0dfREVCVUcpKQogCXBhbV9hZnNfc3lzbG9nKExPR19ERUJVRywgUEFNQUZT
X0VTVEFCQ1JFRCwgdXNlcik7CiAKIAllcnJjb2RlID0gcGFtX2dldF9kYXRhKHBhbWgsIHBhbV9h
ZnNfbGgsIChjb25zdCB2b2lkICoqKSAmcGFzc3dvcmQpOwpAQCAtMTY0LDcgKzE5MSw4IEBACiAJ
CVJFVChQQU1fQVVUSF9FUlIpOwogCSAgICB9CiAJICAgIHBhc3N3b3JkID0gTlVMTDsJLyogSW4g
Y2FzZSBpdCBpc24ndCBhbHJlYWR5IE5VTEwgKi8KLQkgICAgcGFtX2Fmc19zeXNsb2coTE9HX0RF
QlVHLCBQQU1BRlNfTk9GSVJTVFBBU1MsIHVzZXIpOworCSAgICBpZiAobG9nbWFzayAmJiBMT0df
TUFTSyhMT0dfREVCVUcpKQorCSAgICAgIHBhbV9hZnNfc3lzbG9nKExPR19ERUJVRywgUEFNQUZT
X05PRklSU1RQQVNTLCB1c2VyKTsKIAl9IGVsc2UgaWYgKHBhc3N3b3JkWzBdID09ICdcMCcpIHsK
IAkgICAgLyogQWN0dWFsbHkgd2UgKmRpZCogZ2V0IG9uZSBidXQgaXQgd2FzIGVtcHR5LiAqLwog
CSAgICBnb3RfYXV0aHRvayA9IDE7CkBAIC0xNzUsOCArMjAzLDEwIEBACiAJCXBhbV9hZnNfc3lz
bG9nKExPR19FUlIsIFBBTUFGU19QQVNTV0RfUkVRLCB1c2VyKTsKIAkJUkVUKFBBTV9ORVdfQVVU
SFRPS19SRVFEKTsKIAkgICAgfQotCSAgICBwYW1fYWZzX3N5c2xvZyhMT0dfREVCVUcsIFBBTUFG
U19OSUxQQVNTV09SRCwgdXNlcik7CisJICAgIGlmIChsb2dtYXNrICYmIExPR19NQVNLKExPR19E
RUJVRykpCisJICAgICAgcGFtX2Fmc19zeXNsb2coTE9HX0RFQlVHLCBQQU1BRlNfTklMUEFTU1dP
UkQsIHVzZXIpOwogCX0gZWxzZSB7CisJICBpZiAobG9nbWFzayAmJiBMT0dfTUFTSyhMT0dfREVC
VUcpKQogCSAgICBwYW1fYWZzX3N5c2xvZyhMT0dfREVCVUcsIFBBTUFGU19HT1RQQVNTLCB1c2Vy
KTsKIAkgICAgdG9yY2hfcGFzc3dvcmQgPSAwOwogCSAgICBnb3RfYXV0aHRvayA9IDE7CkBAIC0y
MDYsNiArMjM2LDcgQEAKIAkJUkVUKFBBTV9BVVRIX0VSUik7CiAJICAgIH0KIAkgICAgaWYgKHBh
c3N3b3JkWzBdID09ICdcMCcpIHsKKwkgICAgICBpZiAobG9nbWFzayAmJiBMT0dfTUFTSyhMT0df
REVCVUcpKQogCQlwYW1fYWZzX3N5c2xvZyhMT0dfREVCVUcsIFBBTUFGU19OSUxQQVNTV09SRCk7
CiAJCVJFVChQQU1fTkVXX0FVVEhUT0tfUkVRRCk7CiAJICAgIH0KQEAgLTIxNiwxNiArMjQ3LDMw
IEBACiAJICAgICAqIHRoaXMgc3RvcmFnZSwgY29weSBpdCB0byBhIGJ1ZmZlciB0aGF0IHdvbid0
IG5lZWQgdG8gYmUgZnJlZWQKIAkgICAgICogbGF0ZXIsIGFuZCBmcmVlIHRoaXMgc3RvcmFnZSBu
b3cuCiAJICAgICAqLworCiAJICAgIHN0cm5jcHkobXlfcGFzc3dvcmRfYnVmLCBwYXNzd29yZCwg
c2l6ZW9mKG15X3Bhc3N3b3JkX2J1ZikpOwogCSAgICBteV9wYXNzd29yZF9idWZbc2l6ZW9mKG15
X3Bhc3N3b3JkX2J1ZiktMV0gPSAnXDAnOwogCSAgICBtZW1zZXQocGFzc3dvcmQsIDAsIHN0cmxl
bihwYXNzd29yZCkpOwogCSAgICBmcmVlKHBhc3N3b3JkKTsKIAkgICAgcGFzc3dvcmQgPSBteV9w
YXNzd29yZF9idWY7CiAJfQorCS8qCisJICogV2Ugb25seSBzZXQgYSBQQUcgaGVyZSwgaWYgd2Ug
aGF2ZW4ndCBnb3Qgb25lIGJlZm9yZSBpbgorCSAqIHBhbV9zbV9hdXRoZW50aWNhdGUoKSBvciBp
ZiBpdCB3YXMgZGVzdHJveWVkIGJ5IHRoZSBhcHBsaWNhdGlvbgorCSAqLworCWlmICgoIXJlZnJl
c2hfdG9rZW4pICYmIChnZXRQQUcoKSA9PSAtMSkpIHsKKwkgIGlmIChsb2dtYXNrICYmIExPR19N
QVNLKExPR19ERUJVRykpCisJICAgIHN5c2xvZyhMT0dfREVCVUcsICJOZXcgUEFHIGNyZWF0ZWQg
aW4gcGFtX3NldGNyZWQoKSIpOworCSAgIHNldHBhZygpOworCX0KIAogCWlmICggZmxhZ3MgJiBQ
QU1fUkVGUkVTSF9DUkVEICkgeworCSAgICBpZiAodXNlX2tsb2cpIHsKKyAgICAgICAgICAgICAg
IGF1dGhfb2sgPSBkb19rbG9nKHVzZXIsIHBhc3N3b3JkLCAiMDA6MDA6MDEiKTsKKwkgICAgICAg
a3RjX0ZvcmdldEFsbFRva2VucygpOworCSAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCBr
YV9WZXJpZnlVc2VyUGFzc3dvcmQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBLQV9VU0VS
QVVUSF9WRVJTSU9OICsgS0FfVVNFUkFVVEhfRE9TRVRQQUcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBLQV9VU0VSQVVUSF9WRVJTSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
dXNlciwgLyoga2VyYmVyb3MgbmFtZSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNo
YXIgKikwLCAvKiBpbnN0YW5jZSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIg
KikwLCAvKiByZWFsbSAqLwpAQCAtMjM4LDEwICsyODMsMTMgQEAKIAkJYXV0aF9vayA9IDE7CiAJ
ICAgIH0JCiAJfQorCX0KIAkgICAgCiAJaWYgKCAgZmxhZ3MgJiBQQU1fRVNUQUJMSVNIX0NSRUQg
KSB7CisJICAgaWYgKHVzZV9rbG9nKSBhdXRoX29rID0gZG9fa2xvZyh1c2VyLCBwYXNzd29yZCwg
TlVMTCk7CisJICAgZWxzZSB7CiAJICAgIGlmICgga2FfVXNlckF1dGhlbnRpY2F0ZUdlbmVyYWwo
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBLQV9VU0VSQVVUSF9WRVJTSU9OICsgS0FfVVNF
UkFVVEhfRE9TRVRQQUcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBLQV9VU0VSQVVUSF9W
RVJTSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlciwgLyoga2VyYmVyb3MgbmFt
ZSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikwLCAvKiBpbnN0YW5jZSAq
LwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikwLCAvKiByZWFsbSAqLwpAQCAt
MjU2LDE5ICszMDQsMjIgQEAKIAkgICAgICAgYXV0aF9vayA9IDE7CiAJICAgIH0KIAl9CisJfQog
CiAJaWYgKCFhdXRoX29rICYmIHRyeV9maXJzdF9wYXNzKSB7CiAJICAgIHBhc3N3b3JkID0gTlVM
TDsKIAkgICAgZ290byB0cnlfYXV0aDsKIAl9CiAKLQlpZiAoYXV0aF9vayAmJiAhZ290X2F1dGh0
b2spIHsKLQkgICAgdG9yY2hfcGFzc3dvcmQgPSAwOwotCSAgICAodm9pZCkgcGFtX3NldF9pdGVt
KHBhbWgsIFBBTV9BVVRIVE9LLCBwYXNzd29yZCk7Ci0JfQorCS8qIHBhbV9zbV9hdXRoZW50aWNh
dGUgc2hvdWxkIGhhdmUgc2V0IHRoaXMgCisJICogaWYgKGF1dGhfb2sgJiYgIWdvdF9hdXRodG9r
KSB7CisJICogICAgIHRvcmNoX3Bhc3N3b3JkID0gMDsKKwkgKiAgICAgKHZvaWQpIHBhbV9zZXRf
aXRlbShwYW1oLCBQQU1fQVVUSFRPSywgcGFzc3dvcmQpOworICAgICAgICAgKiB9CisJICovCiAK
IAlpZiAoYXV0aF9vaykgewotCSAgICBpZiAoc2V0X2V4cGlyZXMgJiYgIChwYXNzd29yZF9leHBp
cmVzID49IDApICkgeworCSAgICBpZiAoc2V0X2V4cGlyZXMgJiYgIXVzZV9rbG9nICYmICAocGFz
c3dvcmRfZXhwaXJlcyA+PSAwKSApIHsKIAkJc3RyY3B5KHNidWZmZXIsICJQQVNTV09SRF9FWFBJ
UkVTPSIpOwogCQlzdHJjYXQoc2J1ZmZlciwgY3Yyc3RyaW5nKCZzYnVmZmVyWzEwMF0sIHBhc3N3
b3JkX2V4cGlyZXMpKTsKIAkJZXJyY29kZSA9IHBhbV9wdXRlbnYoIHBhbWgsIHNidWZmZXIpOyAK
QEAgLTI3NiwxNCArMzI3LDE1IEBACiAJCSAgICBwYW1fYWZzX3N5c2xvZyhMT0dfRVJSLCBQQU1B
RlNfUEFTU0VYUEZBSUwsIHVzZXIpOwogCSAgICB9CiAjaWYgZGVmaW5lZChBRlNfS0VSQkVST1Nf
RU5WKQotICAgIAkgICAgaWYgKHVwd2QpCi0gICAgCSAgICB7CisgICAgCSAgICBpZiAoIXVzZV9r
bG9nKSB7CisgICAgICAgICAgICAgICBpZiAodXB3ZCkgewogICAgICAgICAJaWYgKCBjaG93bihr
dGNfdGt0X3N0cmluZygpLCB1cHdkLT5wd191aWQsIHVwd2QtPnB3X2dpZCkgPCAwICkKIAkJICAg
IHBhbV9hZnNfc3lzbG9nKExPR19FUlIsIFBBTUFGU19DSE9XTktSQiwgdXNlcik7CiAJCXNwcmlu
dGYoc2J1ZmZlciwgIktSQlRLRklMRT0lcyIsIGt0Y190a3Rfc3RyaW5nKCkpOwogCQllcnJjb2Rl
ID0gcGFtX3B1dGVudiggcGFtaCwgc2J1ZmZlcik7CiAgICAgICAgICAgICAgICAgaWYgKCBlcnJj
b2RlICE9IFBBTV9TVUNDRVNTICkKICAgICAgICAgICAgICAgICAgICAgcGFtX2Fmc19zeXNsb2co
TE9HX0VSUiwgUEFNQUZTX0tSQkZBSUwsIHVzZXIpOworCSAgICAgICB9CiAgICAgCSAgICB9CiAj
ZW5kaWYKIApkaWZmIC11ck4gb3BlbmFmcy0xLjEuMS5vcmlnL3NyYy9wYW0vYWZzX3V0aWwuYyBv
cGVuYWZzLTEuMS4xL3NyYy9wYW0vYWZzX3V0aWwuYwotLS0gb3BlbmFmcy0xLjEuMS5vcmlnL3Ny
Yy9wYW0vYWZzX3V0aWwuYwlXZWQgQXVnICA4IDEzOjQxOjIzIDIwMDEKKysrIG9wZW5hZnMtMS4x
LjEvc3JjL3BhbS9hZnNfdXRpbC5jCVdlZCBBdWcgMTUgMDk6MzM6MzcgMjAwMQpAQCAtOSw5ICs5
LDEzIEBACiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1
ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3lzbG9nLmg+CiAj
aW5jbHVkZSA8c2VjdXJpdHkvcGFtX2FwcGwuaD4KICNpbmNsdWRlIDxhZnNjb25maWcuaD4KICNp
bmNsdWRlIDxhZnMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgogCiBSQ1NJRCgiJEhl
YWRlcjogL2N2cy9vcGVuYWZzL3NyYy9wYW0vYWZzX3V0aWwuYyx2IDEuNCAyMDAxLzA3LzEyIDE5
OjU4OjUzIHNoYWRvdyBFeHAgJCIpOwogCkBAIC01MywxMiArNTcsMTIgQEAKIAogI2lmICFkZWZp
bmVkKEFGU19IUFVYMTEwX0VOVikKIC8qIEZvciBIUCAxMS4wLCB0aGlzIGZ1bmN0aW9uIGlzIGlu
IHV0aWwvaHB1dGlsLmMgKi8KLXNpZ3ZlYygpCitzaWd2ZWMoaW50IHNpZywgY29uc3Qgc3RydWN0
IHNpZ3ZlYyogdmVjLCBzdHJ1Y3Qgc2lndmVjKiBvdmVjKQogewogCWFzc2VydCgwKTsKIH0KICNl
bmRpZiAgLyogQUZTX0hQVVgxMTBfRU5WICovCi1zaWdzZXRtYXNrKCkKK3NpZ3NldG1hc2soaW50
IG1hc2spCiB7CiAJYXNzZXJ0KDApOwogfQpAQCAtODUsMyArODksMTE1IEBACiAgICAgcmV0dXJu
IHRwOwogfQogCitpbnQgZG9fa2xvZyhjb25zdCBjaGFyKiB1c2VyLCBjb25zdCBjaGFyKiBwYXNz
d29yZCwgY29uc3QgY2hhciogbGlmZXRpbWUpCit7CitwaWRfdAlwaWQ7CitpbnQJcGlwZWRlc1sy
XTsKK2ludAlzdGF0dXM7CitjaGFyKiAgIGFyZ3ZbMzJdOworaW50ICAgICBhcmdjID0gMDsKK2No
YXIqICAga2xvZ19wcm9nOworaW50CXJldCA9IDE7CisKKyNpZiBkZWZpbmVkKEFGU19LRVJCRVJP
U19FTlYpIAorICAga2xvZ19wcm9nID0gS0xPR0tSQjsKKyNlbHNlCisgICBrbG9nX3Byb2cgPSBL
TE9HOworI2VuZGlmCisgICBpZiAoYWNjZXNzKGtsb2dfcHJvZywgWF9PSykgIT0gMCkgeworICAg
ICAgc3lzbG9nKExPR19FUlIsICJjYW4gbm90IGFjY2VzcyBrbG9nIHByb2dyYW0gJyVzJyIsIEtM
T0cpOworICAgICAgZ290byBvdXQ7CisgICB9CisjaWYgZGVmaW5lZChBRlNfS0VSQkVST1NfRU5W
KSAKKyAgIGFyZ3ZbYXJnYysrXSA9ICJrbG9nLmtyYiI7CisKKyNlbHNlCisgICBhcmd2W2FyZ2Mr
K10gPSAia2xvZyI7CisjZW5kaWYKKyAgIGFyZ3ZbYXJnYysrXSA9IChjaGFyKil1c2VyOworICAg
YXJndlthcmdjKytdID0gIi1zaWxlbnQiOworICAgYXJndlthcmdjKytdID0gIi1waXBlIjsKKyAg
IGlmIChsaWZldGltZSAhPSBOVUxMKSB7CisgICAgICBhcmd2W2FyZ2MrK10gPSAiLWxpZmV0aW1l
IjsKKyAgICAgIGFyZ3ZbYXJnYysrXSA9IChjaGFyKilsaWZldGltZTsKKyAgIH0KKyAgIGFyZ3Zb
YXJnY10gPSBOVUxMOworCisgICBpZiAocGlwZShwaXBlZGVzKSAhPSAwKSB7CisgICAgICBzeXNs
b2coTE9HX0VSUiwgImNhbiBub3Qgb3BlbiBwaXBlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7Cisg
ICAgICBnb3RvIG91dDsKKyAgIH0KKyAgIHBpZCA9IGZvcmsoKTsKKyAgIHN3aXRjaChwaWQpIHsK
KyAgICAgIGNhc2UgKC0xKTogLyogRXJyb3I6IGZvcmsgZmFpbGVkICovCisgICAgICAgICBzeXNs
b2coTE9HX0VSUiwgImZvcmsgZmFpbGVkOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisJIGdvdG8g
b3V0OworICAgICAgY2FzZSAoMCkgOiAvKiBjaGlsZCAqLworCSBjbG9zZSgwKTsKKwkgZHVwKHBp
cGVkZXNbMF0pOworCSBjbG9zZShwaXBlZGVzWzBdKTsKKwkgY2xvc2UoMSk7CisJIGR1cChwaXBl
ZGVzWzFdKTsKKwkgY2xvc2UocGlwZWRlc1sxXSk7CisJIGV4ZWN2KGtsb2dfcHJvZywgYXJndik7
CisJIC8qIG5vdHJlYWNoZWQgKi8KKwkgc3lzbG9nKExPR19FUlIsICJleGVjdiBmYWlsZWQ6ICVz
Iiwgc3RyZXJyb3IoZXJybm8pKTsKKwkgY2xvc2UoMCk7CisJIGNsb3NlKDEpOworCSBnb3RvIG91
dDsKKyAgICAgIGRlZmF1bHQgOgorCSB3cml0ZShwaXBlZGVzWzFdLCBwYXNzd29yZCwgc3RybGVu
KHBhc3N3b3JkKSk7CisJIHdyaXRlKHBpcGVkZXNbMV0sICJcbiIsIDEpOworCSBjbG9zZShwaXBl
ZGVzWzBdKTsKKwkgY2xvc2UocGlwZWRlc1sxXSk7CisJIGlmIChwaWQgIT0gd2FpdCgmc3RhdHVz
KSkgcmV0dXJuKDApOworCSBpZiAoV0lGRVhJVEVEKHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJl
dCA9IFdFWElUU1RBVFVTKHN0YXR1cyk7CisJICAgIGdvdG8gb3V0OworICAgICAgICAgfQorCSBz
eXNsb2coTE9HX05PVElDRSwgIiVzIGZvciAlcyBmYWlsZWQiLCBrbG9nX3Byb2csIHVzZXIpIDsK
KyAgIH0KK291dDoKKyAgIC8qICAgc3lzbG9nKExPR19ERUJVRywgImRvX2tsb2cgcmV0dXJucyAl
ZCIsIHJldCk7ICovCisgICByZXR1cm4ocmV0KTsKK30KKworLyogZ2V0IHRoZSBjdXJyZW50IEFG
UyBwYWcgZm9yIHRoZSBjYWxsaW5nIHByb2Nlc3MgKi8KK3N0YXRpYyBhZnNfaW50MzIgY3VycGFn
KCkKK3sKKyAgIGdpZF90IGdyb3Vwc1szMF07CisgICBhZnNfdWludDMyIGcwLCBnMTsKKyAgIGFm
c191aW50MzIgaCwgbCwgcmV0OworICAgICAgCisgICBpZiAoZ2V0Z3JvdXBzKHNpemVvZiBncm91
cHMvc2l6ZW9mIGdyb3Vwc1swXSwgZ3JvdXBzKSA8IDIpIHJldHVybiAwOworCSAKKyAgIGcwID0g
Z3JvdXBzWzBdICAmIDB4ZmZmZjsKKyAgIGcxID0gZ3JvdXBzWzFdICAmIDB4ZmZmZjsKKyAgIGcw
IC09IDB4M2YwMDsKKyAgIGcxIC09IDB4M2YwMDsKKyAgIGlmIChnMCA8IDB4YzAwMCAmJiBnMSA8
IDB4YzAwMCkgeworICAgICAgbCA9ICgoZzAgJiAweDNmZmYpIDw8IDE0KSB8IChnMSAmIDB4M2Zm
Zik7CisgICAgICBoID0gKGcwID4+IDE0KTsKKyAgICAgIGggPSAoZzEgPj4gMTQpICsgaCArIGgg
KyBoOworICAgICAgcmV0ID0gKChoIDw8IDI4KSB8IGwpOworICAgICAgLyogQWRkaXRpb25hbCB0
ZXN0aW5nICovCisgICAgICBpZiAoKChyZXQgPj4gMjQpICYgMHhmZikgPT0gJ0EnKQorICAgICAg
ICAgcmV0dXJuIHJldDsKKyAgICAgIGVsc2UKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgfQor
ICAgcmV0dXJuIC0xOworfQorCisvKiBSZXR1cm5zIHRoZSBBRlMgcGFnIG51bWJlciwgaWYgYW55
LCBvdGhlcndpc2UgcmV0dXJuIC0xICovCithZnNfaW50MzIgZ2V0UEFHKCkKK3sKKyAgIGFmc19p
bnQzMiBwYWc7CisgICAKKyAgIHBhZyA9IGN1cnBhZygpOworICAgaWYgKHBhZyA9PSAwIHx8IHBh
ZyA9PSAtMSkKKyAgICAgIHJldHVybiAtMTsKKyAgICAgICAKKyAgIC8qIGhpZ2ggb3JkZXIgYnl0
ZSBpcyBhbHdheXMgJ0EnOyBhY3R1YWwgcGFnIHZhbHVlIGlzIGxvdyAyNCBiaXRzICovCisgICBy
ZXR1cm4gKHBhZyAmIDB4RkZGRkZGKTsKK30KZGlmZiAtdXJOIG9wZW5hZnMtMS4xLjEub3JpZy9z
cmMvcGFtL2Fmc191dGlsLmggb3BlbmFmcy0xLjEuMS9zcmMvcGFtL2Fmc191dGlsLmgKLS0tIG9w
ZW5hZnMtMS4xLjEub3JpZy9zcmMvcGFtL2Fmc191dGlsLmgJV2VkIEF1ZyAgOCAxMzo0MToyMyAy
MDAxCisrKyBvcGVuYWZzLTEuMS4xL3NyYy9wYW0vYWZzX3V0aWwuaAlXZWQgQXVnICA4IDEzOjQx
OjU3IDIwMDEKQEAgLTI3LDYgKzI3LDExIEBACiAKIGV4dGVybiBjaGFyKgljdjJzdHJpbmcoKTsK
IAorI2RlZmluZSBLTE9HICIvdXNyL2Fmc3dzL2Jpbi9rbG9nIgorI2RlZmluZSBLTE9HS1JCICIv
dXNyL2Fmc3dzL2Jpbi9rbG9nLmtyYiIKKyNkZWZpbmUgVU5MT0cgIi91c3IvYWZzd3MvYmluL3Vu
bG9nIgorI2RlZmluZSBJR05PUkVfTUFYIDEwMDAKKwogI2lmCWRlZmluZWQoQUZTX0hQVVhfRU5W
KQogCiAjaWYgIWRlZmluZWQoQUZTX0hQVVgxMTBfRU5WKQpkaWZmIC11ck4gb3BlbmFmcy0xLjEu
MS5vcmlnL3NyYy9wYW0vdGVzdF9wYW0uYyBvcGVuYWZzLTEuMS4xL3NyYy9wYW0vdGVzdF9wYW0u
YwotLS0gb3BlbmFmcy0xLjEuMS5vcmlnL3NyYy9wYW0vdGVzdF9wYW0uYwlXZWQgQXVnICA4IDEz
OjQxOjIzIDIwMDEKKysrIG9wZW5hZnMtMS4xLjEvc3JjL3BhbS90ZXN0X3BhbS5jCVdlZCBBdWcg
IDggMTM6NDE6NTcgMjAwMQpAQCAtNDMsNiArNDMsNyBAQAogICAgIGludCBhdXRoZW50aWNhdGVk
ID0gMDsKICAgICBpbnQgcmV0Y29kZTsKICAgICBjaGFyICp1c2VybmFtZTsKKyAgICBpbnQgc2V0
Y3JlZCA9IDE7CiAKICAgICBpZiAoYXJnYyA8IDIgfHwgYXJnYyA+IDMpIHsKIAlmcHJpbnRmKHN0
ZGVyciwgIlVzYWdlOiAlcyBbLXVdIDx1c2VyPlxuIiwgYXJndlswXSk7CkBAIC01Myw3ICs1NCw4
IEBACiAJICAgIGZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzIFstdV0gPHVzZXI+XG4iLCBhcmd2
WzBdKTsKIAkgICAgZXhpdCgxKTsKIAl9Ci0Jc2VydmljZSA9ICJ1bml4dGVzdCI7CisJLyogc2Vy
dmljZSA9ICJ1bml4dGVzdCI7ICovCisgICAgICAgIHNldGNyZWQgPSAwOwogCXVzZXJuYW1lID0g
YXJndlsyXTsKICAgICB9IGVsc2UgewogCXVzZXJuYW1lID0gYXJndlsxXTsKQEAgLTgxLDEyICs4
MywxOCBAQAogCiAgICAgLyogcGFtX29wZW5fc2Vzc2lvbiAqLwogCisgICAgaWYgKHNldGNyZWQp
CiAgICAgaWYgKChyZXRjb2RlID0gcGFtX3NldGNyZWQocGFtaCwgUEFNX0VTVEFCTElTSF9DUkVE
KSkgIT0gUEFNX1NVQ0NFU1MpIHsKIAlmcHJpbnRmKHN0ZGVyciwgInBhbV9zZXRjcmVkIHJldHVy
bmVkICVkLlxuIiwgcmV0Y29kZSk7CiAJcGFtX2VuZChwYW1oLCBQQU1fQUJPUlQpOwogCWV4aXQo
MSk7CiAgICAgfQogCisgICAgaWYgKChyZXRjb2RlID0gcGFtX29wZW5fc2Vzc2lvbihwYW1oLCBQ
QU1fU0lMRU5UKSkgIT0gUEFNX1NVQ0NFU1MpIHsKKwlmcHJpbnRmKHN0ZGVyciwgInBhbV9vcGVu
X3Nlc3Npb24gcmV0dXJuZWQgJWQuXG4iLCByZXRjb2RlKTsKKwlwYW1fZW5kKHBhbWgsIFBBTV9B
Qk9SVCk7CisJZXhpdCgxKTsKKyAgICB9CiAgICAgcGFtX2VuZChwYW1oLCBQQU1fU1VDQ0VTUyk7
CiAKICAgICBwdXRlbnYobmV3X2VudnN0cmluZyk7Cg==

--0__=C1256AB900588EF48f9e8a93df938690918cC1256AB900588EF4--