--8323328-1549086158-879443022=:286
Content-Type: TEXT/PLAIN; charset=US-ASCII
Attached is the MSR patch against 2.1.63.
------------------------------------------------
Stephan.Meyer@pobox.com
meyerst@informatik.uni-muenchen.de
http://pobox.com/~stephan.meyer/
2A 64 F0 73 02 91 10 FC 18 CC 83 1E E2 2C 7E 79
So what would an angel say
The devil wants to know
--8323328-1549086158-879443022=:286
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="msr-2.1.63.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.95.971113184342.286B@localhost>
Content-Description:
ZGlmZiAtciAtTiAtdSBsaW51eC0yLjEuNjMtb3JpZy9Eb2N1bWVudGF0aW9u
L0NvbmZpZ3VyZS5oZWxwIGxpbnV4L0RvY3VtZW50YXRpb24vQ29uZmlndXJl
LmhlbHANCi0tLSBsaW51eC0yLjEuNjMtb3JpZy9Eb2N1bWVudGF0aW9uL0Nv
bmZpZ3VyZS5oZWxwCVRodSBOb3YgMTMgMTc6NTE6NTYgMTk5Nw0KKysrIGxp
bnV4L0RvY3VtZW50YXRpb24vQ29uZmlndXJlLmhlbHAJVGh1IE5vdiAxMyAx
Nzo1Mzo0MyAxOTk3DQpAQCAtNjIxNCw2ICs2MjE0LDI0IEBADQogICBtb3Ro
ZXJib2FyZCB3aWxsIHVzdWFsbHkgdXNlIGEgTUFDRSAoTWVkaXVtIEFjY2Vz
cyBDb250cm9sIGZvcg0KICAgRXRoZXJuZXQpIGludGVyZmFjZS4gIFNheSBZ
IHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgdGhlIE1BQ0UgY2hpcC4NCiANCitT
dXBwb3J0IGZvciB4ODYgbW9kZWwgc3BlY2lmaWMgcmVnaXN0ZXJzDQorQ09O
RklHX0NIUl9ERVZfTVNSDQorICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3Ig
dGhlIE1vZGVsIFNwZWNpZmljIFJlZ2lzdGVycyBpbXBsZW1lbnRlZCBieSBt
b3N0DQorICByZWNlbnQgeDg2IGZhbWlseSBwcm9jZXNzb3JzLiBBY2Nlc3Mg
aXMgZG9uZSBieSBkb2luZyBhIHNlZWsgd2l0aCB0aGUNCisgIG51bWJlciBv
ZiB0aGUgbmVlZGVkIHJlZ2lzdGVyIGFuZCBzdWJzZXF1ZW50IHJlYWQvd3Jp
dGUgb3BlcmF0aW9ucyBvbg0KKyAgL2Rldi9tc3IuIFRoZSByZWFkL3dyaXRl
IHJvdXRpbmVzIGFsd2F5cyBjb3B5IHR3byAzMi1iaXQgdmFsdWVzICg4IGJ5
dGVzKS4NCisgIEEgcmVhZC93cml0ZSBvcGVyYXRpb24gZG9lcyAqbm90KiBh
ZHZhbmNlIHRoZSBwb3NpdGlvbiBwb2ludGVyLg0KKyAgVG8gY2hlY2sgaWYg
eW91ciBwcm9jZXNzb3Igc3VwcG9ydHMgTVNSLCBsb29rIGZvciAibXNyIiBp
biB0aGUgImZsYWdzIg0KKyAgc2VjdGlvbiBvZiAiL3Byb2MvY3B1aW5mbyIu
DQorICBOQjogVGhpcyBtb2R1bGUgZGlmZmVycyBmcm9tIHRoZSBvcmlnaW5h
bCBwYXRjaGVzIHRoYXQgd2VyZSBzZXBhcmF0ZSB0bw0KKyAgICAgIHRoZSBt
YWluIGtlcm5lbCBkaXN0cmlidXRpb24gaW4gdGhhdCB0aGUgaGkgYW5kIGxv
IDMyLWJpdCBwYXJ0cyBvZiB0aGUNCisgICAgICB2YWx1ZSBhcmUgbm93IHRo
ZSAncmlnaHQnIHdheSBhcm91bmQgZm9yIGEgNjQtYml0IGxpdHRsZSBlbmRp
YW4gdmFsdWUuDQorICAgICAgVGhpcyBjb3JyZXNwb25kcyB0byBnY2MgY29u
Y2VwdCBvZiBhICJsb25nIGxvbmciLg0KKyAgU2VlIERvY3VtZW50YXRpb24v
bXNyLnR4dC4NCisgIFRvIGdldCBtb3JlIGluZm8gYW5kIGRvd25sb2FkIHRo
ZSBsYXRlc3QgcGF0Y2hlcyBhbmQgdXRpbGl0aWVzLCB2aXNpdCB0aGUNCisg
IE1TUiBwYWdlIGF0ICJodHRwOi8vcG9ib3guY29tL35zdGVwaGFuLm1leWVy
L21zci5odG1sIi4NCisgIFlvdSBtYXkgY29tcGlsZSB0aGlzIGFzIGEgbW9k
dWxlLg0KKw0KICMgbmVlZCBhbiBlbXB0eSBsaW5lIGFmdGVyIGxhc3QgZW50
cnksIGZvciBzZWQgc2NyaXB0IGluIENvbmZpZ3VyZS4NCiANCiAjDQpkaWZm
IC1yIC1OIC11IGxpbnV4LTIuMS42My1vcmlnL0RvY3VtZW50YXRpb24vbXNy
LnR4dCBsaW51eC9Eb2N1bWVudGF0aW9uL21zci50eHQNCi0tLSBsaW51eC0y
LjEuNjMtb3JpZy9Eb2N1bWVudGF0aW9uL21zci50eHQJVGh1IEphbiAgMSAw
MTowMDowMCAxOTcwDQorKysgbGludXgvRG9jdW1lbnRhdGlvbi9tc3IudHh0
CVRodSBOb3YgMTMgMTc6NTU6MTMgMTk5Nw0KQEAgLTAsMCArMSw3MyBAQA0K
K0luZm9ybWF0aW9uIGFib3V0IHRoZSAnbXNyIGRyaXZlcicNCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorTkI6IEkgdGVsbCBs
aWVzLiBUcmVhdCB0aGUgZm9sbG93aW5nIGFzIHN1c3BpY2lvdXNseS93cm9u
ZyB1bnRpbCBzb21lb25lDQorICAgIHNtYXJ0ZXIgdGhhbiBtZSBoYXMgaGFk
IGEgY2hhbmNlIHRvIGxvb2sgdGhpcyBvdmVyLiAtY3cNCisNCitPbiB0aGUg
SW50ZWwgYXJjaGl0ZWN0dXJlLCBsYXRlIG1vZGVsIEludGVsIDQ4NidzIGFu
ZCBQZW50aXVtLCBQZW50aXVtUHJvDQorYW5kIFBlbnRpdW0gSUkgcHJvY2Vz
c29ycyBoYXZlIG1hbnkgdXNlZnVsIE1hY2hpbmUgU3BlY2lmaWMgUmVnaXN0
ZXJzLCBhcyBkbw0KK3RoZSBsYXRlc3QgQ3lyaXggYW5kIEFNRCBjaGlwcy4N
CisNCitZb3UgY2FuIHRlbGwgaWYgeW91ciBwcm9jZXNzb3IgaGFzIHRoaXMg
ZmVhdHVyZSBieSBsb29raW5nIGZvciAnbXNyJyBpbiB0aGUNCitmbGFncyBm
aWVsZCBvZiB0aGUgb3V0cHV0IGZyb20gJ2NhdCAvcHJvYy9jcHVpbmZvJy4N
CisNCitUaGVzZSByZWdpc3RlcnMgY29udGFpbiBsb3RzIG9mIGNvb2wgaW5m
b3JtYXRpb24sIHNwZWNpZmljIHRvIHRoZSBwYXJ0aWN1bGFyDQorcHJvY2Vz
c29yLiBUaGlzIGlzIGltcG9ydGFudCwgYmVjYXVzZSBpdCBpcyB1bmxpa2Vs
eSB0aGF0IGFuIG1zciBvbiBhDQorUGVudGl1bSBjb3JyZXNwb25kcyB0byB0
aGUgc2FtZSB0aGluZyBvbiBhbiAoc2F5KSBBTUQgSzYuIFlvdSBjYW4gdXNl
IHRoZXNlDQorcmVnaXN0ZXJzIHRvIGRvIHRoaW5nIHN1Y2ggYXMgYWJ1c2Ug
dGhlIFRMQiBkaXJlY3RseSwgdHdpZGRsZSBjZXJ0YWluIGNhY2hlDQorcGFy
YW1ldGVycywgZW5hYmxlIGFuZCBkaXNhYmxlIHZhcmlvdXMgcGFydHMgb2Yg
dGhlIGNoaXAgYW5kIGFsc28gdGhlIGFiaWxpdHkNCit0byBjb3VudC9tZWFz
dXJlIGV2ZW50cyB0aGF0IG9jY3VyIGluIHRoZSBwcm9jZXNzb3IuDQorDQor
VGhlIG1zciBkZXZpY2UgaGFzIGEgbWFqb3IgMTAgYW5kIG1pbm9yIDE0Mi4g
VG8gY3JlYXRlIHRoaXMgdHlwZToNCisgICJta25vZCAvZGV2L21zciBjIDEw
IDE0MiINCisNCitUbyByZWFkL3dyaXRlIHRoZSBtc3IgcmVnaXN0ZXJzLCB5
b3Ugb3BlbigyKSAvZGV2L21zciBpbiB0aGUgYXBwcm9wcmlhdGUNCittb2Rl
LCB1c2UgbHNlZWsoMikgdG8gY2hvb3NlIHRoZSBtc3IgeW91IHdpc2ggdG8g
dHdpZGRsZSB3aXRoIHRoZW4gdXNlDQorcmVhZCgyKSBhbmQgd3JpdGUoMikg
dG8gcmVhZCBvciB3cml0ZSB0aGUgbXNyLg0KKw0KK1lvdSBtdXN0IHJlYWQg
b3Igd3JpdGUgOCBvciBtb3JlIGJ5dGVzIG9yIG5vdGhpbmcgd2lsbCBoYXBw
ZW4uIElmIHlvdSBjaG9vc2UNCit0byByZWFkIDEyIChvciBtb3JlKSBieXRl
cywgYnl0ZXMgOS0xMSB3aWxsIGNvbnRhaW4gdGhlIHByb2Nlc3Nvci4gIEJl
Y2F1c2UNCit0aGVyZSBpcyBubyB3cml0ZSBlcXVpdmFsZW50IChJIGNhbid0
IHNlZSBhIGNsZWFuIHdheSB0byBtYWtlIHRoaXMgd29yayksDQordGhpcyBp
cyBwcm9iYWJseSBvZiBsaW1pdGVkIHVzZS4NCisNCitUaGUgZGV2aWNlIGNh
biBvbmx5IGJlIG9wZW5lZCBieSBvbmUgaW5zdGFuY2UgYXQgYSB0aW1lLiBU
aGlzIGlzIHRvIHByZXZlbnQNCit0d28gcHJvY2Vzc2VzIG9wZW5pbmcgaXQg
YW5kIHRoZSBzYW1lIHRpbWUgYW5kIGhhdmluZyBwb3NzaWJseSBkaXJlDQor
Y29uc2VxdWVuY2VzLg0KKw0KK1RoZSBtc3IgcmVnaXN0ZXJzIGFyZSB1c3Vh
bGx5IDgtYnl0ZSBsaXR0bGUgZW5kaWFuIHZhbHVlcy4gVGhpcyBjb3JyZXNw
b25kDQordG8gYSBsb25nIGxvbmcgaW4gZ2NjLiBUaGlzIGlzIGRpZmZlcmVu
dCB0byB3aGF0IHdhcyBwcmV2aW91c2x5IHJlbGVhc2VkLA0KK3RoZSBjaGFu
Z2UgbWFraW5nIGl0IHBvc3NpYmxlIHRvIHJlYWQvd3JpdGUgZGlyZWN0bHkg
dG8gYSBsb25nIGxvbmcgd2l0aG91dA0KK2hhdmluZyB0byBzd2FwIHRoZSBi
eXRlcyBhYm91dC4NCisNCitUbyBhbGxvdyBrZXJuZWxkIHRvIGF1dG9sb2Fk
IHRoZSBtc3IgZHJpdmVyLCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvDQor
L2V0Yy9jb25mLm1vZHVsZXMgKGFmdGVyIHNvbWUgdGltZSB0aGlzIG1heSBu
b3QgYmUgcmVxdWlyZWQgYXMgbmV3ZXINCit2ZXJzaW9ucyBvZiB0aGUgbW9k
dXRpbHMgYXJyaXZlKToNCisgICJhbGlhcyBjaGFyLW1ham9yLTEwLTE0MiBt
c3IiDQorDQorUGxlYXNlIGJ1ZyBTdGVwaGFuIE1leWVyIDxTdGVwaGFuLk1l
eWVyQHBvYm94LmNvbT4gYWJvdXQgdGhpcyBkcml2ZXIuDQorDQorLy8NCisv
LyB0aGlzIHRpbnkgbGl0dGxlIHBpZWNlIG9mIGNvZGUgY29tcHV0ZXMgeW91
ciBDUFUncyBjbG9ja3NwZWVkDQorLy8gDQorLy8gU3RlcGhhbiBNZXllciA8
U3RlcGhhbi5NZXllckBwb2JveC5jb20+DQorLy8NCisjaW5jbHVkZSA8c3Rk
aW8uaD4NCisjaW5jbHVkZSA8c3RkbGliLmg+DQorI2luY2x1ZGUgPHVuaXN0
ZC5oPg0KKyNpbmNsdWRlIDxmY250bC5oPg0KKw0KKyNkZWZpbmUgU0VDUyAx
DQorDQordm9pZCBtYWluKCkgew0KKwlpbnQgZjsNCisJbG9uZyBsb25nIGEs
YjsNCisJdW5zaWduZWQgbG9uZyBpbnQgc3BlZWQ7IA0KKwlmPW9wZW4oIi9k
ZXYvbXNyIixPX1JET05MWSk7DQorCWxzZWVrKGYsMHgxMCwwKTsgICAgICAg
ICAgICAgLyogMHgxMCAtPiB0aW1lIHN0YW1wIGNvdW50ZXIgKi8NCisJcmVh
ZChmLCZhLDgpOw0KKwlzbGVlcChTRUNTKTsNCisJcmVhZChmLCZiLDgpOwkJ
ICAgICAvKiByZWFkL3dyaXRlIGRvZXMgbm90IGFkdmFuY2UgZmlsZSBwb2lu
dGVyICovDQorCWNsb3NlKGYpOw0KKwlzcGVlZD0oYi1hKzUwMDAwMCkvKFNF
Q1MqMTAwMDAwMCk7DQorCXByaW50ZigiXG5zdGFydCB2YWx1ZTpcdCVMaVxu
ZW5kIHZhbHVlOlx0JUxpXG5jbG9jayBzcGVlZDpcdCVpXG4iLGEsYixzcGVl
ZCk7DQorfQ0KZGlmZiAtciAtTiAtdSBsaW51eC0yLjEuNjMtb3JpZy9hcmNo
L2kzODYvY29uZmlnLmluIGxpbnV4L2FyY2gvaTM4Ni9jb25maWcuaW4NCi0t
LSBsaW51eC0yLjEuNjMtb3JpZy9hcmNoL2kzODYvY29uZmlnLmluCVRodSBP
Y3QgMzAgMDA6MzQ6NTQgMTk5Nw0KKysrIGxpbnV4L2FyY2gvaTM4Ni9jb25m
aWcuaW4JVGh1IE5vdiAxMyAxNzo1MDoxMSAxOTk3DQpAQCAtMzIsNiArMzIs
NyBAQA0KICAgZmkNCiBmaQ0KIGJvb2wgJ01DQSBzdXBwb3J0JyBDT05GSUdf
TUNBDQordHJpc3RhdGUgJ0VuYWJsZSAvZGV2L21zciB0byBhY2Nlc3MgeDg2
IG1hY2hpbmUgc3BlY2lmaWMgcmVnaXN0ZXJzJyBDT05GSUdfQ0hSX0RFVl9N
U1IgeQ0KIGJvb2wgJ1N5c3RlbSBWIElQQycgQ09ORklHX1NZU1ZJUEMNCiBi
b29sICdTeXNjdGwgc3VwcG9ydCcgQ09ORklHX1NZU0NUTA0KIHRyaXN0YXRl
ICdLZXJuZWwgc3VwcG9ydCBmb3IgYS5vdXQgYmluYXJpZXMnIENPTkZJR19C
SU5GTVRfQU9VVA0KZGlmZiAtciAtTiAtdSBsaW51eC0yLjEuNjMtb3JpZy9k
cml2ZXJzL2NoYXIvTWFrZWZpbGUgbGludXgvZHJpdmVycy9jaGFyL01ha2Vm
aWxlDQotLS0gbGludXgtMi4xLjYzLW9yaWcvZHJpdmVycy9jaGFyL01ha2Vm
aWxlCVRodSBOb3YgMTMgMTc6NTE6NTggMTk5Nw0KKysrIGxpbnV4L2RyaXZl
cnMvY2hhci9NYWtlZmlsZQlUaHUgTm92IDEzIDE3OjUwOjExIDE5OTcNCkBA
IC0zMTUsNiArMzE1LDE2IEBADQogTSA9IHkNCiBlbmRpZg0KIA0KK2lmZXEg
KCQoQ09ORklHX0NIUl9ERVZfTVNSKSx5KQ0KK0xfT0JKUyArPSBtc3Iubw0K
K00gPSB5DQorZWxzZQ0KKyAgaWZlcSAoJChDT05GSUdfQ0hSX0RFVl9NU1Ip
LG0pDQorICAgIE1fT0JKUyArPSBtc3Iubw0KKyAgICBNTSA9IG0NCisgIGVu
ZGlmDQorZW5kaWYNCisNCiBpZmRlZiBNDQogTFhfT0JKUyArPSBtaXNjLm8N
CiBlbHNlDQpkaWZmIC1yIC1OIC11IGxpbnV4LTIuMS42My1vcmlnL2RyaXZl
cnMvY2hhci9tZW0uYyBsaW51eC9kcml2ZXJzL2NoYXIvbWVtLmMNCi0tLSBs
aW51eC0yLjEuNjMtb3JpZy9kcml2ZXJzL2NoYXIvbWVtLmMJVHVlIE9jdCAy
MSAxNzo1NzoyOCAxOTk3DQorKysgbGludXgvZHJpdmVycy9jaGFyL21lbS5j
CVRodSBOb3YgMTMgMTc6NTA6MTEgMTk5Nw0KQEAgLTUyOCw3ICs1MjgsOCBA
QA0KICAgICBkZWZpbmVkIChDT05GSUdfQU1JR0FNT1VTRSkgfHwgZGVmaW5l
ZCAoQ09ORklHX0FUQVJJTU9VU0UpIHx8IFwNCiAgICAgZGVmaW5lZCAoQ09O
RklHX1BDV0FUQ0hET0cpIHx8IFwNCiAgICAgZGVmaW5lZCAoQ09ORklHX0FQ
TSkgfHwgZGVmaW5lZCAoQ09ORklHX1JUQykgfHwgXA0KLSAgICBkZWZpbmVk
IChDT05GSUdfU1VOX01PVVNFKSB8fCBkZWZpbmVkIChDT05GSUdfTlZSQU0p
DQorICAgIGRlZmluZWQgKENPTkZJR19TVU5fTU9VU0UpIHx8IGRlZmluZWQg
KENPTkZJR19OVlJBTSkgfHwgXA0KKyAgICBkZWZpbmVkIChDT05GSUdfQ0hS
X0RFVl9NU1IpDQogCW1pc2NfaW5pdCgpOw0KICNlbmRpZg0KICNpZmRlZiBD
T05GSUdfU09VTkQNCmRpZmYgLXIgLU4gLXUgbGludXgtMi4xLjYzLW9yaWcv
ZHJpdmVycy9jaGFyL21pc2MuYyBsaW51eC9kcml2ZXJzL2NoYXIvbWlzYy5j
DQotLS0gbGludXgtMi4xLjYzLW9yaWcvZHJpdmVycy9jaGFyL21pc2MuYwlU
aHUgTm92IDEzIDE3OjUxOjU5IDE5OTcNCisrKyBsaW51eC9kcml2ZXJzL2No
YXIvbWlzYy5jCVRodSBOb3YgMTMgMTc6NTA6MTEgMTk5Nw0KQEAgLTYyLDYg
KzYyLDcgQEANCiBzdGF0aWMgdW5zaWduZWQgY2hhciBtaXNjX21pbm9yc1tE
WU5BTUlDX01JTk9SUyAvIDhdOw0KIA0KICNpZm5kZWYgTU9EVUxFDQorZXh0
ZXJuIGludCBtc3JfaW5pdCh2b2lkKTsNCiBleHRlcm4gaW50IGJ1c19tb3Vz
ZV9pbml0KHZvaWQpOw0KIGV4dGVybiBpbnQgcHNhdXhfaW5pdCh2b2lkKTsN
CiBleHRlcm4gaW50IG1zX2J1c19tb3VzZV9pbml0KHZvaWQpOw0KQEAgLTE5
Myw2ICsxOTQsOSBAQA0KIF9faW5pdGZ1bmMoaW50IG1pc2NfaW5pdCh2b2lk
KSkNCiB7DQogI2lmbmRlZiBNT0RVTEUNCisjaWZkZWYgQ09ORklHX0NIUl9E
RVZfTVNSDQorCW1zcl9pbml0KCk7DQorI2VuZGlmDQogI2lmZGVmIENPTkZJ
R19QUk9DX0ZTDQogCXByb2NfbWlzYyA9IGNyZWF0ZV9wcm9jX2VudHJ5KCJt
aXNjIiwgMCwgMCk7DQogCWlmIChwcm9jX21pc2MpDQpkaWZmIC1yIC1OIC11
IGxpbnV4LTIuMS42My1vcmlnL2RyaXZlcnMvY2hhci9tc3IuYyBsaW51eC9k
cml2ZXJzL2NoYXIvbXNyLmMNCi0tLSBsaW51eC0yLjEuNjMtb3JpZy9kcml2
ZXJzL2NoYXIvbXNyLmMJVGh1IEphbiAgMSAwMTowMDowMCAxOTcwDQorKysg
bGludXgvZHJpdmVycy9jaGFyL21zci5jCVRodSBOb3YgMTMgMTc6NTc6NTIg
MTk5Nw0KQEAgLTAsMCArMSwyMDQgQEANCisvKg0KKyAqIHg4NiBtYWNoaW5l
IHNwZWNpZmljIHJlZ2lzdGVyIGRldmljZSANCisgKiBvcmlnaW5hbGx5IHdy
aXR0ZW4gYnkNCisgKiBTdGVwaGFuIE1leWVyIDxTdGVwaGFuLk1leWVyQHBv
Ym94LmNvbT4NCisgKiBhbmQgc3RpbGwgc29tZXdoYXQgc3VwcG9ydGVkLg0K
KyAqIFdoZW4gSSBmaW5kIHRoZSB0aW1lLCBJIHBsYW4gdG8gaW1wbGVtZW50
IGEgbWFjaGluZS1pbmRlcGVuZGVudA0KKyAqIHNvcnQtb2YtZ2VuZXJhbCBp
bnRlcmZhY2UgdG8gc3R1ZmYgbGlrZSB0aGF0Lg0KKyAqDQorICogQ2hhbmdl
cyBhbmQgZG9jdW1lbnRhdGlvbiBDaHJpcyBXZWRnd29vZCA8Y2hyaXNAY3li
ZXJuZXQuY28ubno+DQorICoNCisgKiB1cGRhdGVzIGZvciAyLjEuNjIvMyBi
eSBKb2huIEdvdHRzIDxqZ290dHNAdW1pY2guZWR1Pg0KKyAqDQorICogVGhp
cyBzb3VyY2UgY29kZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgR1BMIDIuMC4N
CisgKg0KKyAqICoqKioqKioqKioqDQorICogKiBOT1RFISEhICoNCisgKiAq
KioqKioqKioqKg0KKyAqDQorICogVGhlIGhpICYgbG8gcGFydHMgb2YgdGhl
IG1zciByZWdpc3RlciBoYXZlIGJlZW4gc3dhcHBlZCBmcm9tIHdoYXQNCisg
KiB3YXMgcHJldmlvdXNseSBwcmUtcmVsZWFzZWQuIFRoaXMgaXMgdGhlICdy
aWdodCB3YXknIGFuZCBhbGxvd3MNCisgKiB5b3UgdG8gcmVhZCBpbnRvIHRo
ZSBhZGRyZXNzIG9mIGEgbG9uZyBsb25nLg0KKyAqDQorICogVGhpcyB3aWxs
IGJyZWFrIEFMTCBvbGQgY29kZS4gVGhpcyB3YXMgbm90IGRvbmUgc28gbXVj
aCBhcyB0byBtYWtlDQorICogaXQgdGhlIHJpZ2h0IHdheSBiZWZvcmUgaXQn
cyB0b28gbGF0ZSwgYnV0IG1vcmUgdG8gYnJlYWsNCisgKiBldmVyeW9uZSdz
IGNvZGUgYW5kIHBpc3MgcGVvcGxlIG9mZi4NCisgKg0KKyAqIEFueWhvdywg
dGhlIFNNUCBwcm9jZXNzb3IgZmxhZyBpcyBvZiBsaW1pdGVkIHVzZS4gSSBn
dWVzcyB3ZSBjb3VsZA0KKyAqIHBvc3NpYmx5IHVzZSBzb21ldGhpbmcgbGlr
ZSBzbXBfbWVzc2FnZV9wYXNzIGFuZCBkaWNrIGFib3V0LCBidXQNCisgKiBp
dCdzIGFsbW9zdCBjZXJ0YWlubHkgbW9yZSB0cm91YmxlIHRoYW4gaXRzIHdv
cnRoLg0KKyAqDQorICogSWYgeW91IHJlYWxseSB3YW50IGdvb2QgZXZlbnQg
aW5mbyBmb3IgYSB2YXJpZXR5IG9mIHByb2Nlc3NvcnMgb24NCisgKiBib3Ro
IHVuaXByb2Nlc3NvciBhbmQgc21wIG1hY2hpbmVzLCB0aGVuIHlvdSBuZWVk
IHRvIGhhY2sgdGhlDQorICogc2NoZWR1bGVyIGFuZCBrZWVwIHRhc2sgYnkg
dGFzayBjb3VudGVycy4NCisgKi8NCisgIA0KKyNpbmNsdWRlIDxsaW51eC9j
b25maWcuaD4NCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQorI2luY2x1
ZGUgPGFzbS91YWNjZXNzLmg+DQorI2luY2x1ZGUgPGxpbnV4L21pc2NkZXZp
Y2UuaD4NCisjaW5jbHVkZSA8bGludXgvc21wLmg+DQorDQorI2RlZmluZSBN
U1JfTUlOT1IgMTQyDQorDQorLyoNCisgKiBXZSBvbmx5IGFsbG93IG9uZSBp
bnN0YW5jZSBvZiB0aGUgZGV2aWNlIG9wZW4gYXQgYSB0aW1lLCB0aGlzDQor
ICogc2hvdWxkIGF2b2lkIGZ1bm55IHRoaW5ncyBoYXBwZW5pbmcgd2l0aCBj
ZXJ0YWluIG1zcidzLi4uDQorICoNCisgKiBzb21lIG1heSBhcmd1ZSB0aGF0
IHRoaXMgbWF5IG5vdCB0aGUgdGhlICdyaWdodCcgYmVoYXZpb3VyLiBMaWZl
DQorICogaXMgc2hvcnQuDQorICovDQorDQorc3RhdGljIGludCBpc19vcGVu
ID0gMDsNCisNCitzdGF0aWMgaW50IG1zcl9vcGVuKHN0cnVjdCBpbm9kZSAq
Zmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkNCit7DQorCWlmKGlzX29wZW4p
DQorCQlyZXR1cm4gLUVCVVNZOw0KKyNpZmRlZglNT0RVTEUNCisJTU9EX0lO
Q19VU0VfQ09VTlQ7DQorI2VuZGlmDQorCWlzX29wZW4gPSAhMDsNCisNCisJ
cmV0dXJuCTA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXNyX2Nsb3NlKHN0cnVj
dCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQ0KK3sNCisjaWZk
ZWYJTU9EVUxFDQorCU1PRF9ERUNfVVNFX0NPVU5UOw0KKyNlbmRpZg0KKwly
ZXR1cm4gaXNfb3BlbiA9IDA7DQorfQ0KKw0KKy8qDQorICogLSByZWFkaW5n
IGxlc3MgdGhhbiA4IGJ5dGVzIHdpbGwgcmVhZCBub3RoaW5nLg0KKyAqIC0g
cmVhZGluZyA4LTExIGJ5dGVzIHdpbGwgcmVhZCBhIHNpbmdsZSBtc3INCisg
KiAtIHJlYWRpbmcgMTIgYnl0ZXMgd2lsbCByZWFkIHRociBtc3IgYW5kIHBs
YWNlIHRoZSBwcm9jZXNzb3IgaWQgDQorICogICBsYXN0IGR3b3JkLg0KKyAq
IC0gcmVhZGluZyBtb3JlIHRoYW4gMTIgYnl0ZXMgaXMgdGhlIHNhbWUgYXMg
cmVhZGluZyAxMiBieXRlcy4NCisgKg0KKyAqIEFsbCB0aGlzIGNoZWNraW5n
IGFuZCBzdHVmZiBtYXkgYWZmZWN0IGNlcnRhaW4gbXNyJ3MsIGJ1dCBpdA0K
KyAqIHNob3VsZCBiZSBiZWxvdyB0aGUgbm9pc2UgaW50cm9kdWNlZCBieSB0
aGUgc3lzY2FsbCBvdmVyaGVhZC4NCisgKi8NCisgDQorc3RhdGljIHNzaXpl
X3QgbXNyX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgKmJ1Ziwgc2l6
ZV90IGNvdW50LA0KKwkJCQlsb2ZmX3QgKm9mZikNCit7DQorCXVuc2lnbmVk
IGxvbmcgaW50IHA9ZmlsZS0+Zl9wb3MsaGksbG8scG47DQorDQorCWlmKGNv
dW50PDgpDQorCQlyZXR1cm4JMDsNCisJCQ0KKwlfX2FzbV9fIF9fdm9sYXRp
bGVfXyAoDQorCQkicmRtc3IiDQorCQk6Ij1hIiAobG8pLCAiPWQiIChoaSkN
CisJCToiYyIgKHApDQorCQk6ImVheCIsImVjeCIsImVkeCIpOw0KKw0KKwlp
Zihjb3B5X3RvX3VzZXIoYnVmLCZsbyw0KSkNCisJCXJldHVybiAtRUZBVUxU
Ow0KKwlpZihjb3B5X3RvX3VzZXIoYnVmKzQsJmhpLDQpKQ0KKwkJcmV0dXJu
IC1FRkFVTFQ7DQorDQorCWlmKGNvdW50PDEyKQ0KKwkJcmV0dXJuIDg7DQor
CQ0KKwlwbiA9IHNtcF9wcm9jZXNzb3JfaWQoKTsNCisNCisJaWYoY29weV90
b191c2VyKGJ1Zis4LCZwbiw0KSkNCisJCXJldHVybiAtRUZBVUxUOw0KKwkN
CisJcmV0dXJuCTEyOwkNCit9DQorDQorLyogd3JpdGluZyBsZXNzIHRoYW4g
OCBieXRlcyB3aWxsIHdyaXRlIG5vdGhpbmcgLWN3ICovDQorDQorc3RhdGlj
IHNzaXplX3QgbXNyX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBj
aGFyICpidWYsIHNpemVfdCBjb3VudCwNCisJCQkJbG9mZl90ICpwcG9zKQ0K
K3sNCisJdW5zaWduZWQgbG9uZyBwPWZpbGUtPmZfcG9zLGhpLGxvOw0KKw0K
KwlpZihjb3VudDw4KQ0KKwkJcmV0dXJuCTA7DQorCQkNCisJaWYoY29weV9m
cm9tX3VzZXIoJmxvLGJ1Ziw0KSkNCisJCXJldHVybiAtRUZBVUxUOw0KKwlp
Zihjb3B5X2Zyb21fdXNlcigmaGksYnVmKzQsNCkpDQorCQlyZXR1cm4gLUVG
QVVMVDsNCisNCisJX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KKwkJIndybXNy
Ig0KKwkJOg0KKwkJOiJjIiAocCksICJhIiAobG8pLCAiZCIgKGhpKQ0KKwkJ
OiJlYXgiLCJlY3giLCJlZHgiKTsNCisNCisJcmV0dXJuIDg7DQorfQ0KKw0K
K3N0YXRpYyBsb2ZmX3QgbXNyX3NlZWsoc3RydWN0IGZpbGUgKmZpbGUsIGxv
ZmZfdCBvZmZzZXQsIGludCBvcmlnaW4pDQorew0KKwlzd2l0Y2ggKG9yaWdp
bikgew0KKwkJY2FzZSAwOgkgLyogU0VFS19TRVQgKi8NCisJCQlmaWxlLT5m
X3Bvcz1vZmZzZXQ7DQorCQkJcmV0dXJuIGZpbGUtPmZfcG9zOw0KKwkJY2Fz
ZSAxOgkgLyogU0VFS19DVVIgKi8NCisJCQlmaWxlLT5mX3Bvcys9b2Zmc2V0
Ow0KKwkJCXJldHVybiBmaWxlLT5mX3BvczsNCisJCWRlZmF1bHQ6DQorCQkJ
cmV0dXJuIC1FSU5WQUw7DQorCX0NCit9DQorDQorc3RhdGljIHN0cnVjdCBm
aWxlX29wZXJhdGlvbnMgbXNyX2ZvcHMgPSB7DQorCW1zcl9zZWVrLA0KKwlt
c3JfcmVhZCwNCisJbXNyX3dyaXRlLA0KKwlOVUxMLA0KKwlOVUxMLA0KKwlO
VUxMLA0KKwlOVUxMLA0KKwltc3Jfb3BlbiwNCisJbXNyX2Nsb3NlLA0KKwlO
VUxMLA0KKwlOVUxMDQorfTsNCisNCitzdGF0aWMgc3RydWN0IG1pc2NkZXZp
Y2UgbXNyX2RldmljZSA9IHsNCisJTVNSX01JTk9SLA0KKwkibXNyIiwNCisJ
Jm1zcl9mb3BzDQorfTsNCisNCisjaWZkZWYgTU9EVUxFDQorDQorTU9EVUxF
X0FVVEhPUigiU3RlcGhhbiBNZXllciA8U3RlcGhhbi5NZXllckBwb2JveC5j
b20+Iik7DQorTU9EVUxFX0RFU0NSSVBUSU9OKCJBbGxvd3MgYWNjZXNzIHRv
IHRoZSB4ODYgbXNyIHJlZ2lzdGVycyIpOw0KKw0KK2ludCBpbml0X21vZHVs
ZSh2b2lkKQ0KK3sNCisJbWlzY19yZWdpc3RlcigmbXNyX2RldmljZSk7DQor
CXByaW50ayhLRVJOX0RFQlVHICJNU1I6IGRldmljZSBpbnN0YWxsZWRcbiIp
Ow0KKwkNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3ZvaWQgY2xlYW51cF9tb2R1
bGUodm9pZCkNCit7DQorCW1pc2NfZGVyZWdpc3RlcigmbXNyX2RldmljZSk7
DQorCXByaW50ayhLRVJOX0RFQlVHICJNU1I6IGRldmljZSB1bmluc3RhbGxl
ZFxuIik7DQorfQ0KKw0KKyNlbHNlDQorCQ0KK3ZvaWQgbXNyX2luaXQgKHZv
aWQpDQorew0KKwlpZiAoKCFoYXZlX2NwdWlkKSB8fCAoISh4ODZfY2FwYWJp
bGl0eSAmIDMyKSkpIHsNCisJCXByaW50ayhLRVJOX0VSUiAiTVNSOiBtc3Ig
bm90IHN1cHBvcnRlZCFcbiIpOw0KKwkJcmV0dXJuOw0KKwl9DQorCXByaW50
ayhLRVJOX0RFQlVHICJNU1I6IGRldmljZSBpbnN0YWxsZWQuXG4iKTsNCisJ
bWlzY19yZWdpc3RlcigmbXNyX2RldmljZSk7DQorfQ0KKw0KKyNlbmRpZg0K
--8323328-1549086158-879443022=:286--