From alsa-devel-owner@alsa.jcu.cz  Wed Nov 11 23:55:10 1998
Received: from donkeykong.rs.itd.umich.edu (smtp@donkeykong.rs.itd.umich.edu [141.211.63.19])
	by marvin.jcu.cz (8.9.1a/8.9.1) with ESMTP id XAA02092
	for <alsa-devel@alsa.jcu.cz>; Wed, 11 Nov 1998 23:54:48 +0100
Received: from breakout.rs.itd.umich.edu (smtp@breakout.rs.itd.umich.edu [141.211.63.81])
        by donkeykong.rs.itd.umich.edu (8.8.8/4.3-mailhub) with ESMTP id RAA19326
        for <alsa-devel@alsa.jcu.cz>; Wed, 11 Nov 1998 17:54:46 -0500 (EST)
Received: from localhost (cdavid@localhost)
	by breakout.rs.itd.umich.edu (8.8.8/5.1-client) with SMTP id RAA02620
	for <alsa-devel@alsa.jcu.cz>; Wed, 11 Nov 1998 17:54:45 -0500 (EST)
Date: Wed, 11 Nov 1998 17:54:45 -0500 (EST)
From: Chris David <cdavid@umich.edu>
To: alsa-devel@alsa.jcu.cz
Subject: coding.sgml corrections
Message-ID: <Pine.SOL.3.95.981111174956.1232A-200000@breakout.rs.itd.umich.edu>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="-559023410-851401618-910824885=:1232"
Reply-To: alsa-devel@alsa.jcu.cz
Sender: alsa-devel-owner@alsa.jcu.cz
Precedence: list

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---559023410-851401618-910824885=:1232
Content-Type: TEXT/PLAIN; charset=US-ASCII


Hello,

I did a quick edit of coding.sgml, and it is attached.  I made the
english cleaner, and didn't do much else.  I'm willing to do more with it,
but I need more direction.

Can somebody put this in the CVS tree for me?

Thanks,

-Chris

---559023410-851401618-910824885=:1232
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="coding.sgml"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.SOL.3.95.981111175445.1232B@breakout.rs.itd.umich.edu>
Content-Description: 

PCFkb2N0eXBlIGxpbnV4ZG9jIHN5c3RlbT4NCg0KPCEtLSBBZHZhbmNlZCBM
aW51eCBTb3VuZCBBcmNoaXRlY3R1cmUgLSBEcml2ZXIgLS0+DQoNCjxhcnRp
Y2xlPg0KDQo8IS0tIFRpdGxlIGluZm9ybWF0aW9uIC0tPg0KDQo8dGl0bGU+
QWR2YW5jZWQgTGludXggU291bmQgQXJjaGl0ZWN0dXJlIC0gRHJpdmVyDQo8
YXV0aG9yPkphcm9zbGF2IEt5c2VsYQ0KPGh0bWx1cmwgdXJsPSJtYWlsdG86
cGVyZXhAamN1LmN6IiBuYW1lPSImbHQ7cGVyZXhAamN1LmN6Jmd0OyI+DQo8
IS0tIHdpdGggYXNzaXN0YW5jZSBmcm9tIEFsYW4gUm9iaW5zb24gLS0+DQo8
ZGF0ZT52MC4wLjEsIDEyIE1heSAxOTk4DQo8YWJzdHJhY3Q+DQpUaGlzIGRv
Y3VtZW50IGRlc2NyaWJlcywgaW4gZnVsbCBkZXRhaWwsIHRoZSBBZHZhbmNl
ZCBMaW51eCBTb3VuZA0KQXJjaGl0ZWN0dXJlIGRyaXZlci4NCjwvYWJzdHJh
Y3Q+DQoNCjwhLS0gVGFibGUgb2YgY29udGVudHMgLS0+DQo8dG9jPg0KDQo8
IS0tIEJlZ2luIHRoZSBkb2N1bWVudCAtLT4NCg0KPHNlY3Q+SW50cm9kdWN0
aW9uDQoNCjxwPg0KVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIEFMU0Eg
ZHJpdmVyIGFuZCBrZXJuZWwgQVBJLiBBcHBsaWNhdGlvbg0KcHJvZ3JhbW1l
cnMgc2hvdWxkIHVzZSB0aGUgbGlicmFyeSBBUEkgcmF0aGVyIHRoYW4ga2Vy
bmVsIEFQSS4NClRoZSBBTFNBIExpYnJhcnkgb2ZmZXJzIDEwMCUgb2YgdGhl
IGZ1bmN0aW9uYWxseSBvZiB0aGUga2VybmVsIEFQSSwgYnV0IGFkZA0KbmV4
dCBtYWpvciBpbXByb3ZlbWVudHMgaW4gdXNhYmlsaXR5LCBtYWtpbmcgdGhl
IGFwcGxpY2F0aW9uIGNvZGUgc2ltcGxlciBhbmQNCmJldHRlciBsb29raW5n
LiBJbiBhZGRpdGlvbiwgc29tZSBvZiB0aGUgc29tZSBmaXhlcy9jb21wYXRp
YmlsaXR5IGNvZGUgaW4sDQptYXkgYmUgcGxhY2VkIGluIHRoZSBsaWJyYXJ5
IGNvZGUgaW5zdGVhZCBvZiB0aGUga2VybmVsIGRyaXZlci4NCg0KDQo8c2Vj
dDE+U291cmNlIGZpbGVzDQoNCjxwPg0KU291cmNlIGZpbGVzIGFyZSBzZXBh
cmF0ZWQgdG86DQoNCjxwPg0KPGRlc2NyaXA+DQo8dGFnPi9pbmNsdWRlPC90
YWc+DQogIERpcmVjdG9yeSBjb250YWlucyBhbGwgaGVhZGVyIGZpbGVzIHdo
aWNoIGFyZSBpbmNsdWRlZCBmcm9tIG1vcmUgc291cmNlcy4NCjx0YWc+L2tl
cm5lbDwvdGFnPg0KICBEaXJlY3Rvcnkgd2l0aCBrZXJuZWwgY29kZSBhbmQg
YWJzdHJhY3QgbGF5ZXJzIChtaWRkbGUgbGV2ZWwgY29kZSBhbmQgbGlicmFy
eSkuDQo8dGFnPi9sb3dsZXZlbDwvdGFnPg0KICBHZW5lcmljIGxvd2xldmVs
IGNvZGUgZm9yIGNoaXAoc2V0KXMuDQo8dGFnPi9jYXJkczwvdGFnPg0KICBV
cHBlciBsZXZlbCBmb3Igc291bmRjYXJkcyBhbmQgc3BlY2lmaWMgbG93bGV2
ZWwgY29kZS4NCjx0YWc+L2RldGVjdDwvdGFnPg0KICBEZXRlY3Rpb24gbGF5
ZXIgKDxpdD4vcHJvYy9hc291bmQvZGV0ZWN0PC9pdD4gLSB0byBtYWtlIGlu
c3RhbGxhdGlvbiBlYXN5KS4NCjwvZGVzY3JpcD4NCg0KPHNlY3QxPkRldmlj
ZXMNCg0KPHA+DQpEZXZpY2VzIHNob3VsZCB1c2UgYWJzdHJhY3QgY29kZSBm
cm9tIHNvdW5kIGtlcm5lbCwgYnV0IGl0IHNob3VsZCB1c2UNCm93biBjb2Rl
IGFuZCByZWdpc3RlciBtaW5vcnMgc2VwYXJldGVseSAod2l0aCBzbmRfbWlu
b3JfcmVnaXN0ZXIgYW5kDQpzbmRfbWlub3JfdW5yZWdpc3RlciBmdW5jdGlv
bnMpLiBUaGlzIG1ldGhvZCB0b3RhbHkgYnlwYXNzIGFsbCBhYnN0cmFjdA0K
Y29kZSwgc28gY29kZSBmb3IgdGhlc2Ugc291bmRjYXJkcyBtdXN0IGhhbmRs
ZSBhbGwgdGhpbmdzLg0KDQo8c2VjdDE+TWVtb3J5IGFsbG9jYXRpb24NCg0K
PHA+DQo8aXRlbWl6ZT4NCjxpdGVtPjxiZj52b2lkICpzbmRfbWFsbG9jKCB1
bnNpZ25lZCBsb25nIHNpemUgKTwvYmY+DQo8aXRlbT48YmY+dm9pZCBzbmRf
ZnJlZSggdm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHNpemUgKTwvYmY+DQo8
aXRlbT48YmY+Y2hhciAqc25kX21hbGxvY19zdHJkdXAoIGNoYXIgKnN0cmlu
ZyApPC9iZj4NCjxpdGVtPjxiZj52b2lkIHNuZF9mcmVlX3N0ciggY2hhciAq
c3RyaW5nICk8L2JmPg0KPC9pdGVtaXplPg0KPHA+DQpUaGVzZSByb3V0aW5l
cyB1c2UgdGhlaXIgb3duIG1lbW9yeSBhbGxvY2F0aW9uIGFsZ29yaXRtLiBJ
dCBzaG91bGQgYmUgDQpyZW1vdmVkIGluIHRoZSBmdXR1cmUgYW5kIHJlcGxh
Y2VkIHdpdGgga21hbGxvYyBhbmQga2ZyZWUgY2FsbHMsIGJ1dA0KZm9yIG5v
dyBJIG5lZWQgdG8gdHJhY2UgYWxsIGFsbG9jYXRpb24gcHJvYmxlbXMgdG8g
bWFrZSBjb2RlIGNsZWFuLi4uDQo8cD4NCk5vdGU6IEFMU0EgZHJpdmVyIGhl
YXZpbHkgdXNlcyBkeW5hbWljIGFsbG9jYXRpb24gZm9yIG1vc3QgdGhpbmdz
Lg0KPHA+DQpGb3IgZGVidWdnaW5nIHlvdSBzaG91bGQgdXNlIGNvbW1hbmQg
Jy4vY29uZmlndXJlIC0td2l0aC1kZWJ1Zz1mdWxsJyBmb3INCmNvbmZpZ3Vy
YXRpb24uIFRoaXMgZW5hYmxlcyB0cmFjZSBvZiBhbGxvY2F0ZWQgbWVtb3J5
IHdpdGggYWJvdmUgZnVuY3Rpb25zDQphbmQgdGhpcyBtYWtlcyBkZWJ1Z2dp
bmcgYSBsaXR0bGUgYml0IGVhc2llci4NCg0KPHNlY3QxPkJhc2ljIGNvZGlu
Zw0KDQo8cD4NCkFsbCB0aGluZ3MgYXJlIG1hZGUgYXMgb2JqZWN0cyAod2hp
Y2ggZW5jYXBzdWxhdGVzIGRhdGEgYW5kIGZ1bmN0aW9ucykgYW5kIGFyZQ0K
cmVmZXJlbmNlZCBpbiB0aGlzIHdheS4gSSBkb24ndCBwcmVmZXIgdG8gcGFz
cyBpbmRleCB0byBzb21lIGFycmF5IG9mIHN0cnVjdHVyZQ0Kb3Igc29tZXRo
aW5nIGxpa2UgdGhpcy4gT2JqZWN0cyBjb250YWluIGJvdGggZGF0YSBhbmQg
ZnVuY3Rpb25zLiAgUG9pbnRlcnMgdG8gdGhlc2UNCm9iamVjdHMgYXJlIHBh
c3NlZCBhcm91bmQgKGxpa2UgQysrKS4NCjxwPg0KQWxsIG1haW4gc3RydWN0
dXJlcyBzaG91bGQgaGF2ZSBzbmRfeHh4eF9uZXcsIHNuZF94eHh4X2ZyZWUs
IHNuZF94eHh4X3JlZ2lzdGVyLA0Kc25kX3h4eHhfdW5yZWdpc3RlciBmdW5j
dGlvbnMuDQo8cD4NCjxpdGVtaXplPg0KPGl0ZW0+DQo8YmY+c25kX2NhcmRf
dDwvYmY+IGlzIGEgYmFzaWMgc3RydWN0dXJlIHdoaWNoIGNvbnRhaW5zIGlu
Zm8gYWJvdXQgYSBzb3VuZGNhcmQsDQppbmRleCBhbmQgcmVzb3VyY2UgdHJh
Y2tpbmcgdmFyaWFibGVzLiBMb29rIGF0IDxpdD5pbmNsdWRlL2RyaXZlci5o
PC9pdD4NCmZvciBhbGwgdGhpbmdzIHJlbGF0ZWQgdG8gdGhpcyBzdHJ1Y3R1
cmUuDQo8L2l0ZW1pemU+DQo8cD4NCjxpdGVtaXplPg0KPGl0ZW0+PGJmPnNu
ZF9wY21fdDwvYmY+IGlzIGEgYmFzaWMgc3RydWN0dXJlIGZvciBhIFBDTSBk
ZXZpY2UuDQo8aXRlbT48YmY+c25kX3BjbV9jaGFubmVsX3Q8L2JmPiBpcyBh
IGJhc2ljIHN0cnVjdHVyZSBmb3IgYSBQQ00gY2hhbm5lbCAoZGlyZWN0aW9u
KS4NCjxpdGVtPjxiZj5zdHJ1Y3Qgc25kX3N0cnVfcGNtX2hhcmR3YXJlPC9i
Zj4gaXMgYSBzdHJ1Y3R1cmUgd2hpY2ggbXVzdCBiZSBmaWxsZWQNCmJ5IGxv
d2xldmVsIGNvZGUuIExvb2sgYXQgPGl0PmluY2x1ZGUvcGNtLmg8L2l0PiBm
b3IgYWxsIHRoaW5ncw0KcmVsYXRlZCB0byB0aGVzZSBzdHJ1Y3R1cmVzLg0K
PC9pdGVtaXplPg0KPHA+DQo8aXRlbWl6ZT4NCjxpdGVtPjxiZj5zbmRfa21p
eGVyX3Q8L2JmPiBpcyBhIGJhc2ljIHN0cnVjdHVyZSBmb3IgYSBNSVhFUiBk
ZXZpY2UuDQo8aXRlbT48YmY+c25kX2ttaXhlcl9jaGFubmVsX3Q8L2JmPiBp
cyBhIGJhc2ljIHN0cnVjdHVyZSBmb3IgYSBNSVhFUiBjaGFubmVsLg0KPGl0
ZW0+PGJmPnN0cnVjdCBzbmRfc3RydV9taXhlcl9jaGFubmVsX2h3PC9iZj4g
aXMgYSBzdHJ1Y3R1cmUgd2hpY2ggbXVzdCBiZSBmaWxsZWQNCmJ5IGxvd2xl
dmVsIGNvZGUuIExvb2sgYXQgPGl0PmluY2x1ZGUvbWl4ZXIuaDwvaXQ+IGZv
ciBhbGwgdGhpbmdzDQpyZWxhdGVkIHRvIHRoZXNlIHN0cnVjdHVyZXMuDQo8
L2l0ZW1pemU+DQoNCjxzZWN0MT5VcHBlciBsZXZlbCAoL2NhcmRzKQ0KDQo8
cD4NCkNvZGUgZm9yIHNvdW5kY2FyZHMgc2hvdWxkIGNvbnRhaW4gdGhlc2Ug
dGhpbmdzOg0KDQo8ZW51bT4NCjxpdGVtPlN1cHBvcnQgZm9yIG1vcmUgdGhh
biBvbmUgb2YgdGhlIHNhbWUgc291bmRjYXJkICh1cCB0byBTTkRfQ0FSRFMp
Li4uDQogIDxpdGVtaXplPg0KICAgICA8aXRlbT5pdCBpc24ndCByZWFsbHkg
cG9zc2libGUgZHVlIHRvIEhXIGxpbWl0YXRpb25zDQogIDwvaXRlbWl6ZT4N
CjxpdGVtPkF1dG9kZXRlY3Rpb24vYXV0b2NvbmZpZ3VyYXRpb24gZmVhdHVy
ZSAoaWYgaXQncyBwb3NzaWJsZSkuLi4NCiAgPGl0ZW1pemU+DQogICAgIDxp
dGVtPmlmIGxvd2xldmVsIGNvZGUgaXMgc3BlY2lmaWMgZm9yIHNvdW5kY2Fy
ZCB0eXBlIC0gaXQgc2hvdWxkIGJlIGhlcmUsIHRvby4uDQogIDwvaXRlbWl6
ZT4NCjxpdGVtPkluaXRpYWxpemF0aW9uIGNvZGUgZm9yIHNvdW5kY2FyZA0K
ICA8aXRlbWl6ZT4NCiAgICA8aXRlbT5zbmRfY2FyZF9uZXcNCiAgICA8aXRl
bT5zbmRfY2FyZF9mcmVlIChmcmVlcyBhbGwgaGFyZHdhcmUgcmVzb3VyY2Vz
KQ0KICA8L2l0ZW1pemU+DQo8aXRlbT5BbGxvY2F0ZS9mcmVlIGhhcmR3YXJl
IHJlc291cmNlcyBmb3Igc291bmRjYXJkDQogIDxpdGVtaXplPg0KICAgICA8
aXRlbT5zbmRfcmVnaXN0ZXJfaW9wb3J0DQogICAgPGl0ZW0+c25kX3VucmVn
aXN0ZXJfaW9wb3J0cyAoZnJlZXMgYWxsIGlvcG9ydHMpDQogICAgPGl0ZW0+
c25kX3JlZ2lzdGVyX2ludGVycnVwdA0KICAgIDxpdGVtPnNuZF91bnJlZ2lz
dGVyX2ludGVycnVwdHMgKGZyZWVzIGFsbCBpbnRlcnJ1cHRzKQ0KICAgIDxp
dGVtPnNuZF9yZWdpc3Rlcl9kbWFfY2hhbm5lbA0KICAgIDxpdGVtPnNuZF91
bnJlZ2lzdGVyX2RtYV9jaGFubmVscyAoZnJlZXMgYWxsIERNQSBjaGFubmVs
cykNCiAgPC9pdGVtaXplPg0KPGl0ZW0+SW5pdGlhbGl6ZSBvdGhlciBsYXll
cnMgKFBDTXMsIE1peGVycyBldGMuKQ0KICA8aXRlbWl6ZT4NCiAgICA8aXRl
bT5zbmRfcGNtX25ldw0KICAgIDxpdGVtPnNuZF9wY21fZnJlZQ0KICAgIDxp
dGVtPnNuZF9wY21fcmVnaXN0ZXINCiAgICA8aXRlbT5zbmRfcGNtX3VucmVn
aXN0ZXIgKGNhbGxzIHNuZF9wY21fZnJlZSkNCiAgICA8aXRlbT5zbmRfbWl4
ZXJfbmV3DQogICAgPGl0ZW0+c25kX21peGVyX2ZyZWUNCiAgICA8aXRlbT5z
bmRfbWl4ZXJfcmVnaXN0ZXINCiAgICA8aXRlbT5zbmRfbWl4ZXJfdW5yZWdp
c3RlciAoY2FsbHMgc25kX21peGVyX2ZyZWUpDQogIDwvaXRlbWl6ZT4NCjxp
dGVtPlJlZ2lzdGVyIHNvdW5kY2FyZA0KICA8aXRlbWl6ZT4NCiAgICA8aXRl
bT5zbmRfY2FyZF9yZWdpc3Rlcg0KICAgIDxpdGVtPnNuZF9jYXJkX3VucmVn
aXN0ZXIgKGRvZXNuJ3QgY2FsbCBzbmRfY2FyZF9mcmVlKQ0KICA8L2l0ZW1p
emU+DQo8L2VudW0+DQoNCjxiZj5Ob3RlOjwvYmY+DQpEdWUgdG8gbW9kdWxl
IGRlcGVuZGVuY3kgeW91IHNob3VsZCBzZXBhcmF0ZSBjb2RlIGZvciBzb3Vu
ZGNhcmRzDQpmcm9tIHRoZSBzYW1lIG1hbnVmYWN0dXJlIHdoaWNoIGhhdmUg
c2xpZ2h0bHkgZGlmZmVyZW50IGhhcmR3YXJlLg0KRXhhbXBsZTogVGhlIEdV
UyBFeHRyZW1lIGhhcyBhbiBFU1MgRVMtMTY4OCBjaGlwLiBUaGlzIGNoaXAg
aXNuJ3QgaW4gdGhlIEdVUw0KQ2xhc3NpYy4gRm9yIEdVUyBDbGFzc2ljLCB0
aGUgZ2VuZXJpYyBjb2RlIGluIHRoZSBzbmQtZXMxNjg4Lm8gbW9kdWxlIGlz
bid0DQpuZWVkZWQuIFNvIHRoZXJlIGFyZSB0d28gdXBwZXIgbGV2ZWwgbW9k
dWxlcyAoc25kLWd1c2V4dHJlbWUubyBhbmQNCnNuZC1ndXNjbGFzc2ljLm8p
Lg0KDQo8c2VjdDE+UHJpdmF0ZSBkYXRhL3ZhbHVlcw0KDQo8cD4NClNvbWUg
c3RydWN0dXJlcyBoYXZlIHBvaW50ZXJzIHRvIHByaXZhdGUgZGF0YSBhbmQg
dmFsdWVzLiBUaGVzZSB2YXJpYWJsZXMNCmFyZW4ndCB1c2VkIHdpdGggdGhl
IGFic3RyYWN0IGxheWVycyBhbmQgYXJlIGludGVuZGVkIGZvciBsb3ctbGV2
ZWwgY29kZQ0KdXNlIG9ubHkuIA0KDQo8Y29kZT4NCnNuZF9jYXJkX3QgLT4g
cHJpdmF0ZV9kYXRhDQpzbmRfY2FyZF90IC0+IHByaXZhdGVfZnJlZSAoY2Fs
bGVkIGZyb20gc25kX2NhcmRfZnJlZSBpZiBub3QgTlVMTCkNCjwvY29kZT4N
CjxwPg0KPGNvZGU+DQpzdHJ1Y3Qgc25kX3N0cnVfcGNtX2hhcmR3YXJlIC0+
IHByaXZhdGVfZGF0YQ0Kc3RydWN0IHNuZF9zdHJ1X3BjbV9oYXJkd2FyZSAt
PiBwcml2YXRlX2ZyZWUgKGNhbGxlZCBmcm9tIHNuZF9wY21fZnJlZSBpZiBu
b3QgTlVMTCkNCnNuZF9wY21fdCAtPiBwcml2YXRlX2RhdGENCnNuZF9wY21f
dCAtPiBwcml2YXRlX2ZyZWUgKGNhbGxlZCBmcm9tIHNuZF9wY21fZnJlZSBp
ZiBub3QgTlVMTCkNCjwvY29kZT4NCjxwPg0KPGNvZGU+DQpzdHJ1Y3Qgc25k
X3N0cnVfbWl4ZXJfY2hhbm5lbF9odyAtPiBwcml2YXRlX3ZhbHVlDQpzbmRf
a21peGVyX2NoYW5uZWxfdCAtPiBwcml2YXRlX2RhdGENCnNuZF9rbWl4ZXJf
Y2hhbm5lbF90IC0+IHByaXZhdGVfZnJlZSAoY2FsbGVkIGZyb20gc25kX21p
eGVyX2ZyZWUgaWYgbm90IE5VTEwpDQpzbmRfa21peGVyX3QgLT4gcHJpdmF0
ZV92YWx1ZQ0Kc25kX2ttaXhlcl90IC0+IHByaXZhdGVfZGF0YQ0Kc25kX2tt
aXhlcl90IC0+IHByaXZhdGVfZnJlZSAoY2FsbGVkIGZyb20gc25kX21peGVy
X2ZyZWUgaWYgbm90IE5VTEwpDQo8L2NvZGU+DQoNCjxzZWN0MT5DTEkvU1RJ
ICYgc3BpbiBsb2NraW5nDQoNCjxwPg0KR29vZCBjb2RlIHNob3VsZG4ndCBj
b250YWluIDxpdD5zbmRfY2xpKCk8L2l0Pi88aXQ+c25kX3N0aSgpPC9pdD4g
Y2FsbHMuDQpJbnN0ZWFkIHVzZSBzcGluIGxvY2tzIDxpdD5zbmRfc3Bpbl9s
b2NrKCk8L2l0Pi88aXQ+c25kX3NwaW5fdW5sb2NrKCk8L2l0Pg0KZm9yIGxv
Y2tpbmcgY29kZS4gVGhpcyBtZXRob2QgaXMgbXVjaCBiZXR0ZXIgZm9yIFNN
UCBtYWNoaW5lcy4NCjxwPg0KPGJmPk5vdGU6PC9iZj4gRGVidWdnaW5nIGNv
ZGUgaXMgYXZhaWxhYmxlIGZvciBsb2NraW5nLiAgTG9vayBpbiANCjxpdD5z
bmRzcGlubG9jay5oPC9pdD4gdG8gZW5hYmxlIGl0Lg0KDQo8c2VjdDE+RXhh
bXBsZXMNCg0KPHA+DQpZb3Ugc2hvdWxkIGxvb2sgYXQgdGhlIGNvZGUgZm9y
IEdVUyBzb3VuZGNhcmRzIHRvIHNlZSBob3cgY2FuIGJlIHRoaW5ncyBkb25l
Li4uDQoNCjxiZj5Ob3RlOjwvYmY+IENvZGUgc2hvdWxkIGJlIGNvbXBpbGVk
IGNsZWFubHkgdW5kZXIgMi4wLlgga2VybmVscyBhbmQgdW5kZXINCiAgICAg
IGxhdGVzdCAyLjEuWCBrZXJuZWxzLi4uDQoNCg0KPCEtLSAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqIC0tPg0KPCEtLSAqKioqKioqKioqKioqKioqKioqKioq
KioqKiBTb3VuZENhcmQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
IC0tPg0KPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPg0KDQo8c2Vj
dD5Tb3VuZGNhcmQNCg0KPHA+DQpTb3VuZGNhcmQgcmVsYXRlZCBzdHJ1Y3R1
cmVzIGFuZCBmdW5jdGlvbnMgYXJlIGluIDxpdD5pbmNsdWRlL2RyaXZlci5o
PC9pdD4NCmhlYWRlciBmaWxlLiBTdHJ1Y3R1cmUgPGl0PnNuZF9jYXJkX3Q8
L2l0PiBtdXN0IGJlIGFsbG9jYXRlZCBieQ0KPGl0PnNuZF9jYXJkX25ldzwv
aXQ+IGZ1bmN0aW9uIGFuZCBmcmVlZCBieSA8aXQ+c25kX2NhcmRfZnJlZTwv
aXQ+DQpmdW5jdGlvbiAod2hpY2ggaXNuJ3QgY2FsbGVkIGZyb20gPGl0PnNu
ZF9jYXJkX3VucmVnaXN0ZXI8L2l0PikuDQoNCjxzZWN0MT5WYXJpYWJsZXMg
YW5kIGZ1bmN0aW9ucw0KDQo8cD4NCkZ1bmN0aW9ucyBsaXN0Og0KDQo8aXRl
bWl6ZT4NCjxpdGVtPjxiZj5zbmRfY2FyZF90ICpzbmRfY2FyZF9uZXcoIGlu
dCBpZHgsIGNoYXIgKmlkLCB2b2lkICgqdXNlX2luYykoIHNuZF9jYXJkX3Qg
KiApLCB2b2lkICgqdXNlX2RlYykoIHNuZF9jYXJkX3QgKikgKTwvYmY+DQog
IDxpdGVtaXplPg0KICA8aXRlbT48YmY+aWR4PC9iZj4gc291bmRjYXJkIGlu
ZGV4IChvcmRlciksIDEtOCBvciAtMSA9IGZpcnN0IGZyZWUNCiAgPGl0ZW0+
PGJmPmlkPC9iZj4gc291bmRjYXJkIGlkLCBpZiBOVUxMIG9yICdcMCcgLT4g
ZGVmYXVsdCAoY2FyZCMpDQogIDxpdGVtPjxiZj5pbmNfdXNlPC9iZj4gaW5j
cmVtZW50IHVzZSBvZiBsYXN0IHNvdW5kY2FyZCBtb2R1bGUgKHRvIGF2b2lk
IHJlbW92ZSkNCiAgPGl0ZW0+PGJmPmRlY191c2U8L2JmPiBkZWNyZW1lbnQg
dXNlIG9mIGxhc3Qgc291bmRjYXJkIG1vZHVsZSAodG8gYWxsb3cgcmVtb3Zl
KQ0KICA8aXRlbT5yZXR1cm5zIE5VTEwgaWYgbm90IGVub3VnaCBtZW1vcnkg
aXMgYXZhaWxhYmxlDQogIDwvaXRlbWl6ZT4NCjxpdGVtPjxiZj5pbnQgc25k
X2NhcmRfZnJlZSggc25kX2NhcmRfdCAqY2FyZCApPC9iZj4NCiAgPGl0ZW1p
emU+DQogIDxpdGVtPjxiZj5jYXJkPC9iZj4gcG9pbnRlciB0byBzb3VuZGNh
cmQgc3RydWN0dXJlIHRvIGZyZWUNCiAgPGl0ZW0+ZnJlZXMgYWxsIHJlZ2lz
dGVyZWQgcmVzb3VyY2VzIChwb3J0cywgSVJRcyBhbmQgRE1BcyksIHRvbw0K
ICA8aXRlbT5yZXR1cm5zIG5lZ2F0aXZlIHZhbHVlIHdoZW4gZXJyb3INCiAg
PC9pdGVtaXplPg0KPGl0ZW0+PGJmPmludCBzbmRfY2FyZF9yZWdpc3Rlcigg
c25kX2NhcmRfdCAqY2FyZCApPC9iZj4NCiAgPGl0ZW1pemU+DQogIDxpdGVt
PjxiZj5jYXJkPC9iZj4gcG9pbnRlciB0byBzb3VuZGNhcmQgc3RydWN0dXJl
IHRvIHJlZ2lzdGVyOyBhcHBsaWNhdGlvbnMNCiAgICAgICAgc2hvdWxkIGZy
b20gdGhpcyBwb2ludCB1c2Ugc291bmRjYXJkDQogIDxpdGVtPnJldHVybnMg
bmVnYXRpdmUgdmFsdWUgd2hlbiBlcnJvcg0KICA8L2l0ZW1pemU+DQo8aXRl
bT48YmY+aW50IHNuZF9jYXJkX3VucmVnaXN0ZXIoIHNuZF9jYXJkX3QgKmNh
cmQgKTwvYmY+DQogIDxpdGVtaXplPg0KICA8aXRlbT48YmY+Y2FyZDwvYmY+
IHBvaW50ZXIgdG8gc291bmRjYXJkIHN0cnVjdHVyZSB0byB1bnJlZ2lzdGVy
OyBBZnRlciB0aGlzDQogICAgICAgIGlzIGNhbGxlZCwgYXBwbGljYXRpb25z
IG5vIGxvbmdlciBjYW4gdXNlIHRoaXMgc291bmRjYXJkLg0KICA8aXRlbT5k
b2Vzbid0IGNhbGwgPGl0PnNuZF9jYXJkX2ZyZWU8L2l0Pg0KICA8aXRlbT5y
ZXR1cm5zIG5lZ2F0aXZlIHZhbHVlIHdoZW4gZXJyb3Igb2NjdXJzDQogIDwv
aXRlbWl6ZT4NCjwvaXRlbWl6ZT4NCg0KPHA+DQpWYXJpYWJsZXMgZnJvbSA8
aXQ+c25kX2NhcmRfdDwvaXQ+IHN0cnVjdHVyZSB3aGljaCBtdXN0IGJlIGZp
bGxlZDoNCg0KPGl0ZW1pemU+DQo8aXRlbT48YmY+dHlwZTwvYmY+IGlzIGEg
dHlwZSBpZGVudGlmaWNhdGlvbiBmcm9tIDxpdD5pbmNsdWRlL2Fzb3VuZGlk
Lmg8L2l0Pi4NCjxpdGVtPjxiZj5hYmJyZXZpYXRpb248L2JmPiBpcyBhbiBh
YmJyZXZpYXRpb24gZm9yIHNvdW5kY2FyZCAoZm9yIGV4YW1wbGUgJ0dVUycp
Lg0KPGl0ZW0+PGJmPnNob3J0bmFtZTwvYmY+IGlzIGEgc2hvcnRuYW1lIGZv
ciBzb3VuZGNhcmQgKGZvciBleGFtcGxlICdHcmF2aXMgVWx0cmFTb3VuZCBN
QVgnKS4NCjxpdGVtPjxiZj5sb25nbmFtZTwvYmY+IGlzIGEgZnVsbCBpZGVu
dGlmaWNhdGlvbiBmb3Igc291bmRjYXJkIChmb3IgZXhhbXBsZSAnR3Jhdmlz
IFVsdHJhU291bmQgTUFYIGF0IDB4MjIwLCBpcnEgNSwgZG1hIDEmNScpLg0K
PC9pdGVtaXplPg0KDQo8cD4NClZhcmlhYmxlcyBmcm9tIDxpdD5zbmRfY2Fy
ZF90PC9pdD4gc3RydWN0dXJlIHdoaWNoIHNob3VsZCBiZSBmaWxsZWQ6DQoN
CjxpdGVtaXplPg0KPGl0ZW0+PGJmPnByaXZhdGVfZGF0YTwvYmY+IHNob3Vs
ZCBiZSB1c2VkIGJ5IHNvdW5kY2FyZCBkcml2ZXIgZm9yIHByaXZhdGUgZGF0
YS4NCjxpdGVtPjxiZj5wcml2YXRlX2ZyZWU8L2JmPiBpcyBjYWxsZWQgd2hl
biA8aXQ+cHJpdmF0ZV9kYXRhPC9pdD4gc2hvdWxkIGJlIGZyZWVkLg0KPC9p
dGVtaXplPg0KDQo8c2VjdDI+RXhhbXBsZXMNCg0KPHA+DQo8dHNjcmVlbj48
Y29kZT4NCnN0YXRpYyB2b2lkIHNuZF9zb3VuZGNhcmRfdXNlX2luYyggc25k
X2NhcmRfdCAqY2FyZCApDQp7DQogIE1PRF9JTkNfVVNFX0NPVU5UOw0KfQ0K
DQpzdGF0aWMgdm9pZCBzbmRfc291bmRjYXJkX3VzZV9kZWMoIHNuZF9jYXJk
X3QgKmNhcmQgKQ0Kew0KICBNT0RfREVDX1VTRV9DT1VOVDsNCn0NCg0KaW50
IHNuZF9zb3VuZGNhcmRfaW5pdCggdm9pZCApDQp7DQogIHNuZF9jYXJkX3Qg
KmNhcmQ7DQoNCiAgY2FyZCA9IHNuZF9jYXJkX25ldyggLTEsIE5VTEwsIHNu
ZF9zb3VuZGNhcmRfdXNlX2luYywgc25kX3NvdW5kY2FyZF9kZWNfaW5jICk7
DQogIGlmICggIWNhcmQgKSByZXR1cm4gLUVOT01FTTsNCiAgY2FyZCAtPiB0
eXBlID0gU05EX0NBUkRfVFlQRV9TT1VORENBUkQ7CS8qIGNhbiBiZSBjaGFu
Z2VkIGxhdGVyICovDQoNCiAgLi4uIHJlc291cmNlIGluaXRpYWxpemF0aW9u
LCBkZXRlY3Rpb24sIGRldmljZSBjcmVhdGlvbiBhbmQgcmVnaXN0cmF0aW9u
IC4uLg0KDQogIHN0cmNweSggY2FyZCAtPiBhYmJyZXZpYXRpb24sICJTb3Vu
ZENhcmQiICk7DQogIHN0cmNweSggY2FyZCAtPiBzaG9ydG5hbWUsICIzLUQg
U291bmRDYXJkIiApOw0KICBzdHJjcHkoIGNhcmQgLT4gbG9uZ25hbWUsICIz
LUQgU291bmRDYXJkIGF0IDB4NTAwLCBpcnEgNSwgZG1hIDUmNiIgKTsNCg0K
ICBpZiAoICFzbmRfY2FyZF9yZWdpc3RlciggY2FyZCApICkNCiAgICByZXR1
cm4gMDsNCiAgc25kX2NhcmRfZnJlZSggY2FyZCApOw0KDQogIHJldHVybiAt
RU5YSU87DQp9DQo8L2NvZGU+PC90c2NyZWVuPg0KDQo8c2VjdDE+UmVzb3Vy
Y2VzDQoNCjxwPg0KRnVuY3Rpb25zIGxpc3Q6DQoNCjxpdGVtaXplPg0KICA8
aXRlbT48YmY+aW50IHNuZF9yZWdpc3Rlcl9pb3BvcnQoIHNuZF9jYXJkX3Qg
KmNhcmQsIGludCBwb3J0LCBpbnQgc2l6ZSwgY2hhciAqbmFtZSApPC9iZj4N
CiAgPGl0ZW1pemU+DQogICAgPGl0ZW0+PGJmPmNhcmQ8L2JmPiBwb2ludGVy
IHRvIHNvdW5kY2FyZCBzdHJ1Y3R1cmUNCiAgICA8aXRlbT48YmY+cG9ydDwv
YmY+IG1lYW5zIGZpcnN0IHBvcnQgZnJvbSBpb3BvcnQgcmVnaW9uDQogICAg
PGl0ZW0+PGJmPnNpemU8L2JmPiBtZWFucyBzaXplIG9mIGlvcG9ydCByZWdp
b24NCiAgICA8aXRlbT48YmY+bmFtZTwvYmY+IGlvcG9ydCByZWdpb24gbmFt
ZQ0KICAgIDxpdGVtPnJlZ2lzdGVycyBpb3BvcnQgcmVnaW9uIGFuZCBhc3Np
Z25zIGl0IHRvIHNvdW5kY2FyZA0KICA8L2l0ZW1pemU+DQogIDxpdGVtPjxi
Zj5pbnQgc25kX3VucmVnaXN0ZXJfaW9wb3J0cyggc25kX2NhcmRfdCAqY2Fy
ZCApPC9iZj4NCiAgPGl0ZW1pemU+DQogICAgPGl0ZW0+PGJmPmNhcmQ8L2Jm
PiBwb2ludGVyIHRvIHNvdW5kY2FyZCBzdHJ1Y3R1cmUNCiAgICA8aXRlbT51
bnJlZ2lzdGVycyBhbGwgaW9wb3J0IHJlZ2lvbnMgd2hpY2ggYXJlIGFzc2ln
bmVkIHRvIHNvdW5kY2FyZA0KICA8L2l0ZW1pemU+DQogIDxpdGVtPjxiZj5p
bnQgc25kX3JlZ2lzdGVyX2RtYV9jaGFubmVsKCBzbmRfY2FyZF90ICpjYXJk
LCBjaGFyICpuYW1lLCBpbnQgbnVtYmVyLCBpbnQgdHlwZSwgaW50IHJzaXpl
LCBpbnQgKnBvc3NpYmxlX251bWJlcnMgKTwvYmY+DQogIDxpdGVtaXplPg0K
ICAgIDxpdGVtPjxiZj5jYXJkPC9iZj4gcG9pbnRlciB0byBzb3VuZGNhcmQg
c3RydWN0dXJlDQogICAgPGl0ZW0+PGJmPm5hbWU8L2JmPiBuYW1lIG9mIGRt
YSBjaGFubmVsDQogICAgPGl0ZW0+PGJmPm51bWJlcjwvYmY+IG51bWJlciBv
ZiBkbWEgY2hhbm5lbCBvciA8YmY+U05EX0FVVE9fRE1BPC9iZj4NCiAgICA8
aXRlbT48YmY+dHlwZTwvYmY+IHR5cGUgb2YgZG1hIGJ1ZmZlcg0KICAgICAg
PGl0ZW1pemU+DQogICAgICAgIDxpdGVtPjxiZj5TTkRfRE1BX1RZUEVfSVNB
PC9iZj4gbGltaXRlZCBkbWEgYnVmZmVyIHRvIGxvdyAxNk1CIG9mIFJBTQ0K
ICAgICAgICA8aXRlbT48YmY+U05EX0RNQV9UWVBFX1BDSTwvYmY+IHVubGlt
aXRlZCBkbWEgYnVmZmVyDQogICAgICAgICAgICAgIChzaG91bGQgYmUgYW55
d2hlcmUgaW4gUkFNKQ0KICAgICAgICA8aXRlbT48YmY+U05EX0RNQV9UWVBF
X0hBUkRXQVJFPC9iZj4gaGFyZHdhcmUgZG1hIGJ1ZmZlcg0KICAgICAgICAg
ICAgICAoaXMgYXZhaWxhYmxlIG9uIHNvdW5kY2FyZCBhbmQgZGlyZWN0bHkg
bW1hcGVkIHRvIE9TIG1lbW9yeSkNCiAgICAgIDwvaXRlbWl6ZT4NCiAgICA8
aXRlbT48YmY+cnNpemU8L2JmPiByZXF1ZXN0ZWQgZG1hIGJ1ZmZlciBzaXpl
IChpbiBrQikgb3IgPGJmPlNORF9BVVRPX0RNQV9TSVpFPC9iZj4NCiAgICA8
aXRlbT48YmY+cG9zc2libGVfbnVtYmVyczwvYmY+IHBvaW50ZXIgdG8gaW50
IGFycmF5IHdoaWNoIGNvbnRhaW5zIGFsbA0KICAgICAgICAgIHBvc3NpYmxl
IGRtYSBudW1iZXJzIGZvciB0aGlzIGNoYW5uZWwgdGVybWluYXRlZCBieSAt
MTsgZnVuY3Rpb24NCiAgICAgICAgICB1c2VzIHRoZXNlIHZhbHVlcyBmb3Ig
dmVyaWZpY2F0aW9uIG9mIHZhbGlkIGlucHV0IGZyb20gdXNlciBvcg0KICAg
ICAgICAgIGlmIDxiZj5TTkRfQVVUT19ETUE8L2JmPiBpcyBzcGVjaWZpZWQg
dG8gZGV0ZWN0IGZpcnN0IHVzZWFibGUNCiAgICAgICAgICBkbWEgY2hhbm5l
bA0KICA8L2l0ZW1pemU+DQogIDxpdGVtPjxiZj5pbnQgc25kX3VucmVnaXN0
ZXJfZG1hX2NoYW5uZWxzKCBzbmRfY2FyZF90ICpjYXJkICk8L2JmPg0KICA8
aXRlbWl6ZT4NCiAgICAgPGl0ZW0+PGJmPmNhcmQ8L2JmPiBwb2ludGVyIHRv
IHNvdW5kY2FyZCBzdHJ1Y3R1cmUNCiAgICAgPGl0ZW0+dW5yZWdpc3RlcnMg
YWxsIGRtYSBjaGFubmVscyBhc3NpZ25lZCB0byBzb3VuZGNhcmQNCiAgPC9p
dGVtaXplPg0KICA8aXRlbT48YmY+aW50IHNuZF9yZWdpc3Rlcl9pbnRlcnJ1
cHQoIHNuZF9jYXJkX3QgKmNhcmQsIGNoYXIgKm5hbWUsIGludCBudW1iZXIs
IGludCB0eXBlLCBzbmRfaXJxX2hhbmRsZXJfdCAqaGFuZGxlciwgdm9pZCAq
ZGV2X2lkLCBpbnQgKnBvc3NpYmxlX251bWJlcnMgKTwvYmY+DQogIDxpdGVt
aXplPg0KICAgIDxpdGVtPjxiZj5jYXJkPC9iZj4gcG9pbnRlciB0byBzb3Vu
ZGNhcmQgc3RydWN0dXJlDQogICAgPGl0ZW0+PGJmPm5hbWU8L2JmPiBuYW1l
IG9mIGludGVycnVwdCBsaW5lDQogICAgPGl0ZW0+PGJmPm51bWJlcjwvYmY+
IG51bWJlciBvZiBpbnRlcnJ1cHQgbGluZSBvciA8YmY+U05EX0FVVE9fSVJR
PC9iZj4NCiAgICA8aXRlbT48YmY+dHlwZTwvYmY+IHR5cGUgb2YgaW50ZXJy
dXB0IGxpbmUNCiAgICAgIDxpdGVtaXplPg0KICAgICAgPGl0ZW0+PGJmPlNO
RF9JUlFfVFlQRV9JU0E8L2JmPiBJU0EgaW50ZXJydXB0IGxpbmUgKG5vdCBz
aGFyZWFibGUpDQogICAgICA8aXRlbT48YmY+U05EX0lSUV9UWVBFX1BDSTwv
YmY+IFBDSSBpbnRlcnJ1cHQgbGluZSAoc2hhcmVhYmxlKQ0KICAgICAgPC9p
dGVtaXplPg0KICAgIDxpdGVtPjxiZj5oYW5kbGVyPC9iZj4gcG9pbnRlciB0
byBpbnRlcnJ1cHQgaGFuZGxlcg0KICAgIDxpdGVtPjxiZj5kZXZfaWQ8L2Jm
PiBwb2ludGVyIHRvIHNvbWUgcHJpdmF0ZSBzdHJ1Y3R1cmUgZm9yIGludGVy
cnVwdCBoYW5kbGVyDQogICAgPGl0ZW0+PGJmPnBvc3NpYmxlX251bWJlcnM8
L2JmPiBwb2ludGVyIHRvIGludCBhcnJheXMgd2hpY2ggY29udGFpbiBhbGwN
CiAgICAgICAgICBwb3NzaWJsZSBkbWEgbnVtYmVycyBmb3IgdGhpcyBjaGFu
bmVsIHRlcm1pbmF0ZWQgYnkgLTE7IGZ1bmN0aW9uDQogICAgICAgICAgdXNl
cyB0aGVzZSB2YWx1ZXMgZm9yIHZlcmlmaWNhdGlvbiBvZiB2YWxpZCBpbnB1
dCBmcm9tIHVzZXIgb3INCiAgICAgICAgICBpZiA8YmY+U05EX0FVVE9fSVJR
PC9iZj4gaXMgc3BlY2lmaWVkIHRvIGRldGVjdCBmaXJzdCB1c2VhYmxlDQog
ICAgICAgICAgaW50ZXJydXB0IGxpbmUNCiAgICA8aXRlbT5yZXR1cm5zIGlu
ZGV4IHRvIGNhcmQgLT4gaXJxcyBhcnJheQ0KICA8L2l0ZW1pemU+DQogIDxp
dGVtPjxiZj5pbnQgc25kX3VucmVnaXN0ZXJfaW50ZXJydXB0cyggc25kX2Nh
cmRfdCAqY2FyZCApPC9iZj4NCiAgPGl0ZW1pemU+DQogICAgPGl0ZW0+PGJm
PmNhcmQ8L2JmPiBwb2ludGVyIHRvIHNvdW5kY2FyZCBzdHJ1Y3R1cmUNCiAg
ICA8aXRlbT5kaXNhYmxlcyBhbmQgZnJlZXMgYWxsIGludGVycnVwdCBsaW5l
cyBhc3NpZ25lZCB0byBzb3VuZGNhcmQNCiAgPC9pdGVtaXplPg0KICA8aXRl
bT48YmY+aW50IHNuZF9lbmFibGVfaXJxKCBzbmRfY2FyZF90ICpjYXJkLCBp
bnQgaXJxbnVtICk8L2JmPg0KICA8aXRlbWl6ZT4NCiAgICA8aXRlbT48YmY+
Y2FyZDwvYmY+IHBvaW50ZXIgdG8gc291bmRjYXJkIHN0cnVjdHVyZQ0KICAg
IDxpdGVtPjxiZj5pcnFudW08L2JmPiBpbmRleCBvZiBpbnRlcnJ1cHQgbGlu
ZSB0byBiZSBlbmFibGVkDQogIDwvaXRlbWl6ZT4NCiAgPGl0ZW0+PGJmPmlu
dCBzbmRfZGlzYWJsZV9pcnEoIHNuZF9jYXJkX3QgKmNhcmQsIGludCBpcnFu
dW0gKTwvYmY+DQogIDxpdGVtaXplPg0KICAgIDxpdGVtPjxiZj5jYXJkPC9i
Zj4gcG9pbnRlciB0byBzb3VuZGNhcmQgc3RydWN0dXJlDQogICAgPGl0ZW0+
PGJmPmlycW51bTwvYmY+IGluZGV4IG9mIGludGVycnVwdCBsaW5lIHRvIGJl
IGRpc2FibGVkDQogIDwvaXRlbWl6ZT4NCjwvaXRlbWl6ZT4NCg0KPGJmPk5v
dGUgMTo8L2JmPiBkbWEgYnVmZmVyIG11c3QgYmUgYXNzaWduZWQgZm9yIGFs
bCAoUENJIGFuZCBvdGhlciB0aGFuIElTQSkNCnNvdW5kY2FyZHMsIHRvby4g
QUxTQSBrZXJuZWwgYW5kIE9TUyBQQ00gbWlkbGV2ZWwgY29kZSBjb250YWlu
cyBtZWNoYW5pc20NCmZvciBjb3JyZWN0IGZyZWUgd2hlbiBtbWFwZWQgYWNj
ZXNzIHdhcyB1c2VkLiBCdWZmZXIgaXNuJ3QgYWxsb2NhdGVkIGF0DQpyZWdp
c3RlciB0aW1lLiBCdWZmZXIgaXMgbWFuYWdlZCB3aXRoIGZ1bmN0aW9ucyA8
aXQ+c25kX2RtYV9tYWxsb2M8L2l0Pg0KYW5kIDxpdD5zbmRfZG1hX2ZyZWU8
L2l0PiB3aGVuIHNvbWUgZGV2aWNlIGlzIG9wZW5lZC9jbG9zZWQuDQoNCjxi
Zj5Ob3RlIDI6PC9iZj4gcm91dGluZXMgZm9yIGludGVycnVwdCBsaW5lIGFu
ZCBkbWEgY2hhbm5lbCByZWdpc3RlcmluZw0KcmV0dXJucyBpbmRleCB0byA8
aXQ+c25kX2NhcmRfdCAtPiBpcnFzPC9pdD4gYW5kIDxpdD5zbmRfY2FyZF90
IC0+IGRtYXM8L2l0Pg0KYXJyYXlzLiBUaGlzIHZhbHVlIGlzbid0IGVxdWFs
IHRvIGludGVycnVwdCBudW1iZXIgb3IgZG1hIGNoYW5uZWwgbnVtYmVyLA0K
YnV0IGluIGRyaXZlciA8aXQ+aXJxbnVtPC9pdD4gb3IgPGl0PmRtYW51bTwv
aXQ+IG1lYW5zIGlycSBvciBkbWEgaW5kZXggDQooaW50ZXJuYWwgZHJpdmVy
IHJlc291cmNlIGlkZW50aWZpY2F0aW9uKSBhbmQgPGl0PmlycTwvaXQ+IG9y
IDxpdD5kbWE8L2l0Pg0KbWVhbnMgcmVhbCBpcnEgb3IgZG1hIG51bWJlci4N
Cg0KPHNlY3QyPkV4YW1wbGVzDQogIA0KPHA+DQo8dHNjcmVlbj48Y29kZT4N
CmludCBzbmRfaXJxID0gU05EX0RFRkFVTFRfSVJRMTsNCmludCBzbmRfZG1h
MSA9IFNORF9ERUZBVUxUX0RNQTE7DQppbnQgc25kX2RtYTFfc2l6ZSA9IFNO
RF9ERUZBVUxUX0RNQV9TSVpFMTsNCg0Kc3RhdGljIHNuZF9jYXJkX3QgKnNu
ZF9jYXJkID0gTlVMTDsNCnN0YXRpYyBpbnQgc25kX2lycW51bSA9IFNORF9J
UlFfRElTQUJMRTsNCg0Kc3RhdGljIHZvaWQgc25kX3NvdW5kY2FyZF9pbnRl
cnJ1cHQxKCBpbnQgaXJxLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdz
ICpyZWdzICkNCnsNCiAgLi4uIGludGVycnVwdCBoYW5kbGVyIC4uLg0KfQ0K
DQp2b2lkIHNuZF9zb3VuZGNhcmRfaW5pdF9yZXNvdXJjZXMoIHZvaWQgKQ0K
ew0KI2lmZGVmIEVYQU1QTEVfRk9SX0lTQV9CVVMNCiAgc3RhdGljIGludCBw
b3NzaWJsZV9pcnFzW10gPSB7IDksIDEwLCAxMSwgNywgLTEgfTsNCiAgc3Rh
dGljIGludCBwb3NzaWJsZV9kbWFzW10gPSB7IDEsIDMsIDAsIC0xIH07DQog
DQogIGlmICggKHNuZF9pcnFudW0gPSBzbmRfcmVnaXN0ZXJfaW50ZXJydXB0
KCBzbmRfY2FyZCwgIlNvdW5kQ2FyZCIsIHNuZF9pcnEsIFNORF9JUlFfVFlQ
RV9JU0EsIHNuZF9zb3VuZGNhcmRfaW50ZXJydXB0LCBOVUxMLCBwb3NzaWJs
ZV9pcnFzICkpIDwgMCApDQogICAgcmV0dXJuIHNuZF9pcnFudW07DQogIGlm
ICggKHNuZF9kbWExbnVtID0gc25kX3JlZ2lzdGVyX2RtYV9jaGFubmVsKCBz
bmRfY2FyZCwgIlNvdW5kQ2FyZCIsIHNuZF9kbWExLCBTTkRfRE1BX1RZUEVf
SVNBLCBzbmRfZG1hMV9zaXplLCBwb3NzaWJsZV9kbWFzICkpIDwgMCApDQog
ICAgcmV0dXJuIHNuZF9kbWExbnVtOw0KI2Vsc2UgLyogRVhBTVBMRV9GT1Jf
UENJX0JVUyAqLw0KICBpZiAoIChzbmRfaXJxbnVtID0gc25kX3JlZ2lzdGVy
X2ludGVycnVwdCggc25kX2NhcmQsICJTb3VuZENhcmQiLCBzbmRfaXJxLCBT
TkRfSVJRX1RZUEVfUENJLCBzbmRfc291bmRjYXJkX2ludGVycnVwdCwgTlVM
TCwgTlVMTCApKSA8IDAgKQ0KICAgIHJldHVybiBzbmRfaXJxbnVtOw0KICBp
ZiAoIChzbmRfZG1hMW51bSA9IHNuZF9yZWdpc3Rlcl9kbWFfY2hhbm5lbCgg
c25kX2NhcmQsICJTb3VuZENhcmQiLCBzbmRfZG1hMSwgU05EX0RNQV9UWVBF
X1BDSSwgc25kX2RtYTFfc2l6ZSwgTlVMTCApKSA8IDAgKQ0KICAgIHJldHVy
biBzbmRfZG1hMW51bTsNCiNlbmRpZg0KfQ0KDQppbnQgc25kX3NvdW5kY2Fy
ZF9wcm9iZSggdW5zaWduZWQgc2hvcnQgcG9ydCApDQp7DQogIGlmICggc25k
X3JlZ2lzdGVyX2lvcG9ydCggc25kX2NhcmQsIHBvcnQsIDgsICJTb3VuZENh
cmQgLSBDb2RlYyIgKSA8IDAgKQ0KICAgIHJldHVybiAtRUJVU1k7DQogIGlm
ICggc25kX3JlZ2lzdGVyX2lvcG9ydCggc25kX2NhcmQsIHBvcnQgKyAweDEw
MCwgMTYsICJTb3VuZENhcmQgLSBTeW50aGVzaXplciIgKSA8IDAgKSB7DQog
ICAgc25kX3VucmVnaXN0ZXJfaW9wb3J0cyggc25kX2NhcmQgKTsNCiAgICBy
ZXR1cm4gLUVCVVNZOw0KICB9DQoNCiAgLi4uIGhhcmR3YXJlIHByb2JlIGhl
cmUgLSBpZiBmYWlscyAtIHNuZF91bnJlZ2lzdGVyX2lvcG9ydHMhISEgLi4u
DQoNCiAgcmV0dXJuIDA7DQp9DQo8L2NvZGU+PC90c2NyZWVuPg0KDQo8c2Vj
dDE+SVNBIERNQQ0KDQo8cD4NCkZ1bmN0aW9ucyBsaXN0Og0KDQo8aXRlbWl6
ZT4NCiAgPGl0ZW0+PGJmPnZvaWQgc25kX2RtYV9wcm9ncmFtKCBpbnQgZG1h
LCBjb25zdCB2b2lkICpidWYsIHVuc2lnbmVkIGludCBzaXplLCB1bnNpZ25l
ZCBjaGFyIG1vZGUgKTwvYmY+DQogIDxpdGVtaXplPg0KICAgIDxpdGVtPjxi
Zj5kbWE8L2JmPiBkbWEgbnVtYmVyIChub3QgaW5kZXgpDQogICAgPGl0ZW0+
PGJmPmJ1ZjwvYmY+IGRtYSBidWZmZXINCiAgICA8aXRlbT48YmY+c2l6ZTwv
YmY+IGRtYSBidWZmZXIgc2l6ZSAodHJhbnNmZXIgbGVuZ3RoKQ0KICAgIDxp
dGVtPjxiZj5tb2RlPC9iZj4gZG1hIHRyYW5zZmVyIG1vZGUNCiAgICAgIDxp
dGVtaXplPg0KICAgICAgPGl0ZW0+PGJmPkRNQV9NT0RFX1JFQUQ8L2JmPg0K
ICAgICAgPGl0ZW0+PGJmPkRNQV9NT0RFX1dSSVRFPC9iZj4NCiAgICAgIDxp
dGVtPjxiZj5ETUFfTU9ERV9BVVRPSU5JVDwvYmY+IC0gZmxhZw0KICAgICAg
PC9pdGVtaXplPg0KICAgIDxpdGVtPnByb2dyYW1zIGRtYSB0cmFuc2Zlcg0K
ICA8L2l0ZW1pemU+DQogIDxpdGVtPjxiZj51bnNpZ25lZCBpbnQgc25kX2Rt
YV9yZXNpZHVlKCBpbnQgZG1hICk8L2JmPg0KICA8aXRlbWl6ZT4NCiAgICA8
aXRlbT48YmY+ZG1hPC9iZj4gZG1hIG51bWJlciAobm90IGluZGV4KQ0KICAg
IDxpdGVtPnJldHVybnMgcmVzaWR1ZSB2YWx1ZSBmb3Igc3BlY2lmaWVkIGRt
YSBjaGFubmVsDQogIDwvaXRlbWl6ZT4NCjwvaXRlbWl6ZT4NCg0KPHNlY3Qx
PlBDSSBidXMNCjxwPg0KUENJIGJ1cyByZWxhdGVkIHN0cnVjdHVyZXMgYW5k
IGZ1bmN0aW9ucyBhcmUgaW4gPGl0PmluY2x1ZGUvc25kcGNpLmg8L2l0Pg0K
aGVhZGVyIGZpbGUuIEZ1bmN0aW9ucyBhcmUgZGVzaWduYXRlZCBmb3IgdXNl
IHdpdGggYm90aCB0eXBlIG9mIGtlcm5lbHMNCigyLjAgYW5kIDIuMSkuDQoN
CjxwPg0KUmVhZC1vbmx5IHZhcmlhYmxlcyBmcm9tIDxpdD5zdHJ1Y3Qgc25k
X3BjaV9kZXY8L2l0PiBzdHJ1Y3R1cmUgd2hpY2ggc2hvdWxkDQpiZSB1c2Vk
Og0KDQo8aXRlbWl6ZT4NCiAgPGl0ZW0+PGJmPmRldmZuPC9iZj4gZW5jb2Rl
ZCBkZXZpY2UgJiBmdW5jdGlvbiBpbmRleA0KICA8aXRlbT48YmY+dmVuZG9y
PC9iZj4gLSBzZWUgPGJmPlBDSV9WRU5ET1JfSURfKjwvYmY+DQogIDxpdGVt
PjxiZj5kZXZpY2U8L2JmPiAtIHNlZSA8YmY+UENJX0RFVklDRV9JRF8qPC9i
Zj4NCiAgPGl0ZW0+PGJmPmNsYXNzPC9iZj4gLSAzIGJ5dGVzIChiYXNlLCBz
dWIsIHByb2ctaWYpDQogIDxpdGVtPjxiZj5tYXN0ZXI8L2JmPiAtIHNldCBp
ZiBkZXZpY2UgaXMgbWFzdGVyIGNhcGFibGUNCiAgPGl0ZW0+PGJmPmlycTwv
YmY+IC0gaXJxIGdlbmVyYXRlZCBieSB0aGlzIGRldmljZSAocmVtYXBlZCBp
ZiBuZWVkZWQpDQogIDxpdGVtPjxiZj5iYXNlX2FkZHJlc3M8L2JmPiAtIGJh
c2UgcmVnaXN0ZXJzIGZvciB0aGlzIGRldmljZSAocmVtYXBlZCBpZiBuZWVk
ZWQpDQo8L2l0ZW1pemU+DQoNCjxwPg0KRnVuY3Rpb25zIGxpc3Q6DQoNCjxp
dGVtaXplPg0KICA8aXRlbT48YmY+aW50IHNuZF9wY2lfZmluZF9kZXZpY2Uo
IHVuc2lnbmVkIGludCB2ZW5kb3IsIHVuc2lnbmVkIGludCBkZXZpY2UsIHVu
c2lnbmVkIGludCBpbmRleCwgc3RydWN0IHNuZF9wY2lfZGV2ICpkZXYgKTs8
L2JmPg0KICA8aXRlbWl6ZT4NCiAgICA8aXRlbT48YmY+dmVuZG9yPC9iZj4g
aWRlbnRpZmljYXRpb24gKHNlZSA8YmY+UENJX1ZFTkRPUl9JRF8qPC9iZj4p
DQogICAgPGl0ZW0+PGJmPmRldmljZTwvYmY+IGlkZW50aWZpY2F0aW9uIChz
ZWUgPGJmPlBDSV9ERVZJQ0VfSURfKjwvYmY+KQ0KICAgIDxpdGVtPjxiZj5p
bmRleDwvYmY+IGRldmljZSBpbmRleCAoMC1YKSBmb3Igd2hpY2ggaXMgaW5m
b3JtYXRpb24gcmVxdWVzdGVkDQogICAgPGl0ZW0+PGJmPmRldjwvYmY+IHBv
aW50ZXIgdG8gUENJIGRldmljZSBzdHJ1Y3R1cmUgKG5vdCBzYW1lIGFzIGlu
IGtlcm5lbCkNCiAgPC9pdGVtaXplPg0KICA8aXRlbT48YmY+aW50IHNuZF9w
Y2lfcmVhZF9jb25maWdfYnl0ZSggc3RydWN0IHNuZF9wY2lfZGV2ICpkZXYs
IHVuc2lnbmVkIGNoYXIgd2hlcmUsIHVuc2lnbmVkIGNoYXIgKnZhbCApPC9i
Zj4NCiAgPGl0ZW0+PGJmPmludCBzbmRfcGNpX3JlYWRfY29uZmlnX3dvcmQo
IHN0cnVjdCBzbmRfcGNpX2RldiAqZGV2LCB1bnNpZ25lZCBjaGFyIHdoZXJl
LCB1bnNpZ25lZCBzaG9ydCAqdmFsICk8L2JmPg0KICA8aXRlbT48YmY+aW50
IHNuZF9wY2lfcmVhZF9jb25maWdfZHdvcmQoIHN0cnVjdCBzbmRfcGNpX2Rl
diAqZGV2LCB1bnNpZ25lZCBjaGFyIHdoZXJlLCB1bnNpZ25lZCBpbnQgKnZh
bCApPC9iZj4NCiAgPGl0ZW1pemU+DQogICAgPGl0ZW0+cmVhZCBieXRlL3dv
cmQvZHdvcmQgZnJvbSBQQ0kgY29uZmlndXJhdGlvbiByZWdpc3RlcnMNCiAg
PC9pdGVtaXplPg0KICA8aXRlbT48YmY+aW50IHNuZF9wY2lfd3JpdGVfY29u
ZmlnX2J5dGUoIHN0cnVjdCBzbmRfcGNpX2RldiAqZGV2LCB1bnNpZ25lZCBj
aGFyIHdoZXJlLCB1bnNpZ25lZCBjaGFyIHZhbCApPC9iZj4NCiAgPGl0ZW0+
PGJmPmludCBzbmRfcGNpX3dyaXRlX2NvbmZpZ193b3JkKCBzdHJ1Y3Qgc25k
X3BjaV9kZXYgKmRldiwgdW5zaWduZWQgY2hhciB3aGVyZSwgdW5zaWduZWQg
c2hvcnQgdmFsICk8L2JmPg0KICA8aXRlbT48YmY+aW50IHNuZF9wY2lfd3Jp
dGVfY29uZmlnX2R3b3JkKCBzdHJ1Y3Qgc25kX3BjaV9kZXYgKmRldiwgdW5z
aWduZWQgY2hhciB3aGVyZSwgdW5zaWduZWQgaW50IHZhbCApPC9iZj4NCiAg
PGl0ZW1pemU+DQogICAgPGl0ZW0+d3JpdGUgYnl0ZS93b3JkL2R3b3JkIHRv
IFBDSSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycw0KICA8L2l0ZW1pemU+DQo8
L2l0ZW1pemU+DQoNCjxzZWN0Mj5FeGFtcGxlcw0KDQo8cD4NCjx0c2NyZWVu
Pjxjb2RlPg0KICBzdHJ1Y3Qgc25kX3BjaV9kZXYgcGNpX2RldjsJLyogdXNl
IGhlYXAgZm9yIHRoaXMgdmFyaWFibGUgKi8NCiAgdW5zaWduZWQgc2hvcnQg
Y21kOw0KDQogIGlmICggc25kX3BjaV9maW5kX2RldmljZSggUENJX1ZFTkRP
Ul9JRF9FTlNPTklRLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBD
SV9ERVZJQ0VfSURfRU5TT05JUV9BVURJT1BDSSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZhbXA7cGNpX2RldiApIDwgMCApDQogICAgcmV0dXJuIC1FTk9ERVY7DQog
IHNuZF9wcmludGsoICJGaXJzdCBFbnNvbmlxIFBDSSBzb3VuZGNhcmQgZm91
bmQgYXQgMHgleCBhbmQgaXJxICVpXG4iLA0KCQlwY2lfZGV2IC0+IGJhc2Vf
YWRkcmVzc1sgMCBdICYgfjMsDQoJCXBjaV9kZXYgLT4gaXJxICk7DQogIHNu
ZF9wcmludGsoICJlbmFibGluZyBNYXN0ZXIuLlxuIiApOw0KICBzbmRfcGNp
X3JlYWRfY29uZmlnX3dvcmQoICZhbXA7cGNpX2RldiwgUENJX0NPTU1BTkQs
ICZhbXA7Y21kICk7DQogIGNtZCB8PSBQQ0lfQ09NTUFORF9JTyB8IFBDSV9D
T01NQU5EX01BU1RFUjsNCiAgc25kX3BjaV93cml0ZV9jb25maWdfd29yZCgg
JmFtcDtwY2lfZGV2LCBQQ0lfQ09NTUFORCwgY21kICk7DQo8L2NvZGU+PC90
c2NyZWVuPg0KDQo8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+DQo8
IS0tICoqKioqKioqKioqKioqKioqKioqKioqIEZpbGUgT3BlcmF0aW9ucyAq
KioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+DQo8IS0tICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKiogLS0+DQoNCjxzZWN0PkZpbGUgb3BlcmF0aW9ucw0K
DQo8cD4NCkZpbGUgb3BlcmF0aW9ucyByZWxhdGVkIHN0cnVjdHVyZXMgYW5k
IGZ1bmN0aW9ucyBhcmUgaW4gPGl0PmluY2x1ZGUvZHJpdmVyLmg8L2l0Pg0K
aGVhZGVyIGZpbGUuIEJhc2ljIHN0cnVjdHVyZSBmb3IgcmVnaXN0ZXJpbmcg
ZmlsZSBvcGVyYXRpb25zIGZvciBtaW5vciBudW1iZXINCmlzIDxpdD5zbmRf
bWlub3JfdDwvaXQ+LiBNaW5vciBjb25zdGFudHMgYXJlIGluIDxpdD5pbmNs
dWRlL21pbm9ycy5oPC9pdD4NCmhlYWRlciBmaWxlLg0KDQo8c2VjdDE+VmFy
aWFibGVzIGFuZCBmdW5jdGlvbnMNCg0KPHA+DQpGdW5jdGlvbnMgbGlzdDoN
Cg0KPGl0ZW1pemU+DQogIDxpdGVtPjxiZj5pbnQgc25kX3JlZ2lzdGVyX21p
bm9yKCB1bnNpZ25lZCBzaG9ydCBtaW5vciwgc25kX21pbm9yX3QgKnJlZyAp
PC9iZj4NCiAgPGl0ZW1pemU+DQogICAgPGl0ZW0+PGJmPm1pbm9yPC9iZj4g
bWlub3IgbnVtYmVyDQogICAgPGl0ZW0+PGJmPnJlZzwvYmY+IHBvaW50ZXIg
dG8gcmVnaXN0cmF0aW9uIHN0cnVjdHVyZSB3aXRoIGZpbGUgb3BlcmF0aW9u
cw0KICAgIDxpdGVtPnJldHVybnMgbmVnYXRpdmUgdmFsdWUgd2hlbiBlcnJv
ciBvY2N1cmVkDQogIDwvaXRlbWl6ZT4NCiAgPGl0ZW0+PGJmPmludCBzbmRf
dW5yZWdpc3Rlcl9taW5vciggdW5zaWduZWQgc2hvcnQgbWlub3IgKTwvYmY+
DQogIDxpdGVtaXplPg0KICAgIDxpdGVtPjxiZj5taW5vcjwvYmY+IG1pbm9y
IG51bWJlcg0KICAgIDxpdGVtPnJldHVybnMgbmVnYXRpdmUgdmFsdWUgd2hl
biBlcnJvciBvY2N1cmVkDQogIDwvaXRlbWl6ZT4NCjwvaXRlbWl6ZT4NCg0K
PGJmPk5vdGU6PC9iZj4gRGV2aWNlcyAobWlub3IgbnVtYmVycykgYXJlIHJl
Z2lzdGVyZWQgb25seSBpZiBkZXZpY2UgaXMNCnByZXNlbnQgaW4gdGhlIHN5
c3RlbS4gSXQgaXNuJ3QgcHJlZmZlcmVkIGRvIHNvbWUgcHJlLXJlZ2lzdHJh
dGlvbiBmcm9tDQpzb21lIG1pZGRsZS1sZXZlbCBjb2RlIGZvciBlYWNoIHBv
c3NpYmxlIGRldmljZXMgcGVyIGludGVyZmFjZS4NCg0KPHNlY3QxPkV4YW1w
bGVzDQoNCjxwPg0KDQo8dHNjcmVlbj48Y29kZT4NCnN0YXRpYyBzbmRfbWlu
b3JfdCBzbmRfcGNtX3JlZyA9IHsNCiAgImRpZ2l0YWwgYXVkaW8iLA0KDQog
IE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHVucmVnaXN0ZXIg
Ki8NCg0KICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsc2Vl
ayAqLw0KICBzbmRfcGNtX3JlYWQsICAgICAgICAgICAgICAgICAvKiByZWFk
ICovDQogIHNuZF9wY21fd3JpdGUsICAgICAgICAgICAgICAgIC8qIHdyaXRl
ICovDQogIHNuZF9wY21fb3BlbiwgICAgICAgICAgICAgICAgIC8qIG9wZW4g
Ki8NCiAgc25kX3BjbV9yZWxlYXNlLCAgICAgICAgICAgICAgLyogcmVsZWFz
ZSAqLw0KI2lmZGVmIFNORF9QT0xMDQogIHNuZF9wY21fcG9sbCwgICAgICAg
ICAgICAgICAgIC8qIHBvbGwgKi8NCiNlbHNlDQogIHNuZF9wY21fc2VsZWN0
LCAgICAgICAgICAgICAgIC8qIHNlbGVjdCAqLw0KI2VuZGlmDQogIHNuZF9w
Y21faW9jdGwsICAgICAgICAgICAgICAgIC8qIGlvY3RsICovDQogIE5VTEws
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1tYXAgKi8NCn07DQoNCi4u
Lg0KICBpZiAoIChlcnIgPSBzbmRfcmVnaXN0ZXJfbWlub3IoIFNORF9NSU5P
Ul9QQ00gKyBkZXZpY2UsICZhbXA7c25kX3BjbV9yZWcgKSkgPCAwICkNCiAg
ICByZXR1cm4gZXJyOw0KLi4uDQogIHNuZF91bnJlZ2lzdGVyX21pbm9yKCBT
TkRfTUlOT1JfUENNICsgZGV2aWNlICk7DQo8L2NvZGU+PC90c2NyZWVuPg0K
DQo8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+DQo8IS0tICoqKioq
KioqKioqKioqKioqKioqKioqKioqKiogTUlYRVIgKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKiogLS0+DQo8IS0tICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKiogLS0+DQoNCg0KPHNlY3Q+TWl4ZXINCg0KPHA+DQpNaXhlciByZWxh
dGVkIHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9uIGlzIGluIDxpdD5pbmNsdWRl
L21peGVyLmg8L2l0PiBoZWFkZXINCmZpbGUuDQoNCjxzZWN0MT5WYXJpYWJs
ZXMgYW5kIGZ1bmN0aW9ucw0KDQo8cD4NClZhcmlhYmxlcyBmcm9tIDxpdD5z
bmRfa21peGVyX3Q8L2l0PiBzdHJ1Y3R1cmUgd2hpY2ggbXVzdCBiZSBmaWxs
ZWQ6DQoNCjxpdGVtaXplPg0KPGl0ZW0+PGJmPm5hbWU8L2JmPiBpcyBuYW1l
IG9mIG1peGVyIChmb3IgZXhhbXBsZSAnQUQxODQ4JykuDQo8aXRlbT48YmY+
aHc8L2JmPiByZWFkLW9ubHkgdmFyaWFibGVzIGRlcGVuZGVuZCBvbiBoYXJk
d2FyZS4NCjwvaXRlbWl6ZT4NCg0KPHA+DQpWYXJpYWJsZXMgZnJvbSA8aXQ+
c25kX2ttaXhlcl90PC9pdD4gc3RydWN0dXJlIHdoaWNoIHNob3VsZCBiZSBm
aWxsZWQ6DQoNCjxpdGVtaXplPg0KPGl0ZW0+PGJmPnByaXZhdGVfZGF0YTwv
YmY+IHBvaW50ZXIgdG8gcHJpdmF0ZSBkYXRhIGZvciBtaXhlci4NCjxpdGVt
PjxiZj5wcml2YXRlX2ZyZWU8L2JmPiBzaG91bGQgZnJlZSBwcml2YXRlX2Rh
dGEgd2hlbiBjYWxsZWQuDQo8L2l0ZW1pemU+DQoNCjxwPg0KVmFyaWFibGVz
IGZyb20gPGl0PnN0cnVjdCBzbmRfc3RydV9taXhlcl9odzwvaXQ+IHN0cnVj
dHVyZSB3aGljaCBtdXN0IGJlIGZpbGxlZDoNCg0KPGl0ZW1pemU+DQo8aXRl
bT48YmY+Y2FwczwvYmY+IG1peGVyIGNhcGFiaWxpdGllcyAoc2VlIHRvIDxi
Zj5TTkRfU05EX01JWEVSX0lORk9fQ0FQXyo8L2JmPikuDQo8L2l0ZW1pemU+
DQoNCjxwPg0KVmFyaWFibGVzIGZyb20gPGl0PnN0cnVjdCBzbmRfc3RydV9t
aXhlcl9odzwvaXQ+IHN0cnVjdHVyZSB3aGljaCBzaG91bGQgYmUgZmlsbGVk
Og0KDQo8aXRlbWl6ZT4NCjxpdGVtPjxiZj5nZXRfc3BlY2lhbDwvYmY+DQo8
aXRlbT48YmY+c2V0X3NwZWNpYWw8L2JmPg0KPC9pdGVtaXplPg0KDQo8cD4N
ClZhcmlhYmxlcyBmcm9tIDxpdD5zbmRfa21peGVyX2NoYW5uZWxfdDwvaXQ+
IHN0cnVjdHVyZSB3aGljaCBtdXN0IGJlIGZpbGxlZDoNCg0KPGl0ZW1pemU+
DQo8aXRlbT48YmY+aHc8L2JmPiByZWFkLW9ubHkgdmFyaWFibGVzIGRlcGVu
ZGVuZCBvbiBoYXJkd2FyZS4NCjwvaXRlbWl6ZT4NCg0KPHA+DQpWYXJpYWJs
ZXMgZnJvbSA8aXQ+c25kX2ttaXhlcl9jaGFubmVsX3Q8L2l0PiBzdHJ1Y3R1
cmUgd2hpY2ggc2hvdWxkIGJlIGZpbGxlZDoNCg0KPGl0ZW1pemU+DQo8aXRl
bT48YmY+cHJpdmF0ZV92YWx1ZTwvYmY+IGlzIDxpdD51bnNpZ25lZCBpbnQ8
L2l0PiB2YXJpYWJsZSB3aGljaCBpc24ndCB1c2VkIA0KICAgICAgYnkgbWlk
ZGxlLWxldmVsIGNvZGUuDQo8aXRlbT48YmY+cHJpdmF0ZV9kYXRhPC9iZj4g
aXMgcG9pbnRlciB0byBzb21lIHByaXZhdGUgZGF0YSBhc3NvY2lhdGVkIHdp
dGgNCiAgICAgIGFwcHJvcHJpYXRlIGNoYW5uZWwuIFRoaXMgZGF0YSBpc24n
dCBmcmVlZCBieSBtaWRkbGUtbGV2ZWwgY29kZS4NCiAgICAgIE5PVEUgLSBX
aGVyZSBzaG91bGQgaXQgYmUgZnJlZWQgZnJvbSB0aGVuPw0KPC9pdGVtaXpl
Pg0KDQo8cD4NClZhcmlhYmxlcyBmcm9tIDxpdD5zdHJ1Y3Qgc25kX3N0cnVf
bWl4ZXJfY2hhbm5lbF9odzwvaXQ+IHN0cnVjdHVyZSB3aGljaCBtdXN0DQpi
ZSBmaWxsZWQ6DQoNCjxpdGVtaXplPg0KPGl0ZW0+PGJmPnByaW9yaXR5PC9i
Zj4gcHJpb3JpdHkgKGlkZW50aWZpY2F0b3IpIC0gc2VlIDxiZj5TTkRfTUlY
RVJfUFJJXyo8L2JmPg0KPGl0ZW0+PGJmPnBhcmVudF9wcmlvcml0eTwvYmY+
IHBhcmVudCBtaXhlciBjaGFubmVsIHByaW9yaXR5IG9yIDxiZj5TTkRfTUlY
RVJfUFJJX1BBUkVOVDwvYmY+DQo8aXRlbT48YmY+bmFtZTwvYmY+IG5hbWUg
b2YgdGhpcyBtaXhlciBjaGFubmVsIC0gc2VlIDxiZj5TTkRfTUlYRVJfSURf
KjwvYmY+DQo8aXRlbT48YmY+b3NzZGV2PC9iZj4gT1NTIChPcGVuIFNvdW5k
IFN5c3RlbSkgZGV2aWNlIC0gc2VlIDxiZj5TTkRfTUlYRVJfT1NTXyo8L2Jm
Pg0KPGl0ZW0+PGJmPm11dGU8L2JmPiBpZiBoYXJkd2FyZSBtdXRlIGlzIHN1
cHBvcnRlZA0KPGl0ZW0+PGJmPnN0ZXJlbzwvYmY+IGlmIHN0ZXJlbyBpcyBz
dXBwb3J0ZWQNCjxpdGVtPjxiZj5yZWNvcmQ8L2JmPiBpcyByZWNvcmRpbmcg
aXMgcG9zc2libGUgZnJvbSB0aGlzIGNoYW5uZWwNCjxpdGVtPjxiZj5kaWdp
dGFsPC9iZj4gaXMgdGhpcyBjaGFubmVsIGlzIGRpZ2l0YWx5IChub3QgYW5h
bG9nKSBtaXhlZA0KPGl0ZW0+PGJmPmlucHV0PC9iZj4gaXMgY2hhbm5lbCBp
cyBpbnB1dCBjaGFubmVsDQo8aXRlbT48YmY+bWluLCBtYXg8L2JmPiBzcGVj
aWZpZXMgZXhhY3QgbGluZWFyIHJhbmdlIGZyb20gPGl0Pm1pbjwvaXQ+IHRv
IDxpdD5tYXg8L2l0Pg0KPGl0ZW0+PGJmPm1pbl9kQiwgbWF4X2RCLCBzdGVw
X2RCPC9iZj4gcmFuZ2UgYW5kIHN0ZXAgc2l6ZSBmb3IgZGVjaWJlbCAqIDEw
MA0KPGl0ZW0+PGJmPnZvaWQgKCpzZXRfcmVjb3JkX3NvdXJjZSkoIHNuZF9r
bWl4ZXJfdCAqbWl4ZXIsIHNuZF9rbWl4ZXJfY2hhbm5lbF90ICpjaGFubmVs
LCBpbnQgZW5hYmxlICk8L2JmPg0KICA8aXRlbWl6ZT4NCiAgPGl0ZW0+PGJm
Pm1peGVyPC9iZj4gcG9pbnRlciB0byBtaXhlciBzdHJ1Y3R1cmUNCiAgPGl0
ZW0+PGJmPmNoYW5uZWw8L2JmPiBwb2ludGVyIHRvIGNoYW5uZWwgc3RydWN0
dXJlDQogIDxpdGVtPjxiZj5lbmFibGU8L2JmPiBpZiBub24temVybyAtIHJl
Y29yZCBzb3VyY2UgbXVzdCBiZSBlbmFibGVkDQogIDxpdGVtPm11c3QgYmUg
c2V0LCBpZiBjaGFubmVsIHN1cHBvcnRzIHJlY29yZGluZw0KICA8L2l0ZW1p
emU+DQo8aXRlbT48YmY+dm9pZCAoKnNldF9tdXRlKSggc25kX2ttaXhlcl90
ICptaXhlciwgc25kX2ttaXhlcl9jaGFubmVsX3QgKmNoYW5uZWwsIHVuc2ln
bmVkIGludCBtdXRlICk8L2JmPg0KICA8aXRlbWl6ZT4NCiAgPGl0ZW0+PGJm
Pm1peGVyPC9iZj4gcG9pbnRlciB0byBtaXhlciBzdHJ1Y3R1cmUNCiAgPGl0
ZW0+PGJmPmNoYW5uZWw8L2JmPiBwb2ludGVyIHRvIGNoYW5uZWwgc3RydWN0
dXJlDQogIDxpdGVtPjxiZj5tdXRlPC9iZj4gc2hvdWxkIGJlIHplcm8gKG5v
IG11dGUpIG9yIDxiZj5TTkRfTUlYX01VVEUqPC9iZj4NCiAgPGl0ZW0+bXVz
dCBiZSBzZXQsIGlmIGNoYW5uZWwgc3VwcG9ydHMgaGFyZHdhcmUgbXV0aW5n
DQogIDwvaXRlbWl6ZT4NCjxpdGVtPjxiZj52b2lkICgqc2V0X3ZvbHVtZV9s
ZXZlbCkoIHNuZF9rbWl4ZXJfdCAqbWl4ZXIsIHNuZF9rbWl4ZXJfY2hhbm5l
bF90ICpjaGFubmVsLCBpbnQgbGVmdCwgaW50IHJpZ2h0ICk8L2JmPg0KICA8
aXRlbWl6ZT4NCiAgPGl0ZW0+PGJmPm1peGVyPC9iZj4gcG9pbnRlciB0byBt
aXhlciBzdHJ1Y3R1cmUNCiAgPGl0ZW0+PGJmPmNoYW5uZWw8L2JmPiBwb2lu
dGVyIHRvIGNoYW5uZWwgc3RydWN0dXJlDQogIDxpdGVtPjxiZj5sZWZ0PC9i
Zj4gdm9sdW1lIGxldmVsIGluIGV4YWN0IHJhbmdlDQogIDxpdGVtPjxiZj5y
aWdodDwvYmY+IHZvbHVtZSBsZXZlbCBpbiBleGFjdCByYW5nZQ0KICA8aXRl
bT5oYW5kbGVyIHdoaWNoIHNldHMgdm9sdW1lIGxldmVsIGZvciB0aGlzIGNo
YW5uZWwNCiAgPC9pdGVtaXplPg0KPC9pdGVtaXplPg0KDQo8cD4NClZhcmlh
YmxlcyBmcm9tIDxpdD5zdHJ1Y3Qgc25kX3N0cnVfbWl4ZXJfY2hhbm5lbF9o
dzwvaXQ+IHN0cnVjdHVyZSB3aGljaCBzaG91bGQNCmJlIGZpbGxlZDoNCg0K
PGl0ZW1pemU+DQo8aXRlbT48YmY+aW50ICgqY29tcHV0ZV9saW5lYXIpKCBz
bmRfa21peGVyX3QgKm1peGVyLCBzbmRfa21peGVyX2NoYW5uZWxfdCAqY2hh
bm5lbCwgaW50IGRCICk8L2JmPg0KICA8aXRlbWl6ZT4NCiAgPGl0ZW0+aW5w
dXQgPSBkQiBmcm9tIGFwcGxpY2F0aW9uLCBvdXRwdXQgPSBtaW4uLi5tYXgg
KGxpbmVhciB2b2x1bWUpDQogIDwvaXRlbWl6ZT4NCjxpdGVtPjxiZj5pbnQg
KCpjb21wdXRlX2RCKSggc25kX2ttaXhlcl90ICptaXhlciwgc25kX2ttaXhl
cl9jaGFubmVsX3QgKmNoYW5uZWwsIGludCB2b2x1bWUgKTwvYmY+DQogIDxp
dGVtaXplPg0KICA8aXRlbT5pbnB1dCA9IG1pbi4uLm1heCAobGluZWFyIHZv
bHVtZSksIG91dHB1dCA9IGRCIHRvIGFwcGxpY2F0aW9uDQogIDwvaXRlbWl6
ZT4NCjwvaXRlbWl6ZT4NCg0KPHA+DQpGdW5jdGlvbnMgbGlzdDoNCg0KPGl0
ZW1pemU+DQogIDxpdGVtPjxiZj52b2lkIHNuZF9taXhlcl9zZXRfa2VybmVs
X211dGUoIHNuZF9rbWl4ZXJfdCAqbWl4ZXIsIHVuc2lnbmVkIGludCBwcmlv
cml0eSwgdW5zaWduZWQgc2hvcnQgbXV0ZSApPC9iZj4NCiAgPGl0ZW1pemU+
DQogICAgPGl0ZW0+PGJmPm1peGVyPC9iZj4gcG9pbnRlciB0byBtaXhlciBz
dHJ1Y3R1cmUNCiAgICA8aXRlbT48YmY+cHJpb3JpdHk8L2JmPiBzcGVjaWZp
ZXMgbWl4ZXIgY2hhbm5lbA0KICAgIDxpdGVtPjxiZj5tdXRlPC9iZj4gemVy
byBvciA8YmY+U05EX01JWF9NVVRFKjwvYmY+DQogICAgPGl0ZW0+c2hvdWxk
IGJlIHVzZSBhcyBtdXRlIGNvbnRyb2wgZnJvbSBrZXJuZWwNCiAgICA8aXRl
bT50aGlzIHNldHRpbmdzIGFyZSBuZXZlciBvdmVycmlkZW4gYnkgYXBwbGlj
YXRpb24NCiAgPC9pdGVtaXplPg0KICA8aXRlbT48YmY+c25kX2ttaXhlcl90
ICpzbmRfbWl4ZXJfbmV3KCBzbmRfY2FyZF90ICpjYXJkLCBjaGFyICppZCAp
PC9iZj4NCiAgICA8aXRlbWl6ZT4NCiAgICA8aXRlbT48YmY+Y2FyZDwvYmY+
IHBvaW50ZXIgdG8gc291bmRjYXJkIHN0cnVjdHVyZQ0KICAgIDxpdGVtPjxi
Zj5pZDwvYmY+IGlzIGlkZW50aWZpY2F0aW9uIG9mIGNvZGUgKGZvciBleGFt
cGxlICdBRDE4NDgnKS4NCiAgICA8L2l0ZW1pemU+DQogIDxpdGVtPjxiZj5p
bnQgc25kX21peGVyX2ZyZWUoIHNuZF9rbWl4ZXJfdCAqbWl4ZXIgKTwvYmY+
DQogICAgPGl0ZW1pemU+DQogICAgPGl0ZW0+PGJmPm1peGVyPC9iZj4gcG9p
bnRlciB0byBtaXhlciBzdHJ1Y3R1cmUNCiAgICA8aXRlbT5mcmVlcyBtaXhl
ciBzdHJ1Y3R1cmUgYW5kIHByaXZhdGUgZGF0YQ0KICAgIDwvaXRlbWl6ZT4N
CiAgPGl0ZW0+PGJmPnNuZF9rbWl4ZXJfY2hhbm5lbF90ICpzbmRfbWl4ZXJf
bmV3X2NoYW5uZWwoIHNuZF9rbWl4ZXJfdCAqbWl4ZXIsIHN0cnVjdCBzbmRf
c3RydV9taXhlcl9jaGFubmVsX2h3ICpodyApPC9iZj4NCiAgICA8aXRlbWl6
ZT4NCiAgICA8aXRlbT48YmY+bWl4ZXI8L2JmPiBwb2ludGVyIHRvIG1peGVy
IHN0cnVjdHVyZQ0KICAgIDxpdGVtPjxiZj5odzwvYmY+IHBvaW50ZXIgdG8g
bWl4ZXIgY2hhbm5lbCB2YXJpYWJsZXMgYW5kIG9wZXJhdGlvbnMNCiAgICA8
aXRlbT5jcmVhdGVzIG5ldyBtaXhlciBjaGFubmVsDQogICAgPC9pdGVtaXpl
Pg0KICA8aXRlbT48YmY+dm9pZCBzbmRfbWl4ZXJfcmVvcmRlcl9jaGFubmVs
KCBzbmRfa21peGVyX3QgKm1peGVyLCBzbmRfa21peGVyX2NoYW5uZWxfdCAq
Y2hhbm5lbCApPC9iZj4NCiAgICA8aXRlbWl6ZT4NCiAgICA8aXRlbT48YmY+
bWl4ZXI8L2JmPiBwb2ludGVyIHRvIG1peGVyIHN0cnVjdHVyZQ0KICAgIDxp
dGVtPjxiZj5jaGFubmVsPC9iZj4gcG9pbnRlciB0byBtaXhlciBjaGFubmVs
DQogICAgPGl0ZW0+cmVvcmRlcnMgbWl4ZXIgY2hhbm5lbHMgaWYgY2hhbm5l
bCAtPiBwcmlvcml0eSB3YXMgY2hhbmdlZA0KICAgIDwvaXRlbWl6ZT4NCiAg
PGl0ZW0+PGJmPmludCBzbmRfbWl4ZXJfcmVnaXN0ZXIoIHNuZF9rbWl4ZXJf
dCAqbWl4ZXIsIGludCBkZXZpY2UgKTwvYmY+DQogICAgPGl0ZW1pemU+DQog
ICAgPGl0ZW0+PGJmPm1peGVyPC9iZj4gcG9pbnRlciB0byBtaXhlciBzdHJ1
Y3R1cmUNCiAgICA8aXRlbT48YmY+ZGV2aWNlPC9iZj4gZGV2aWNlIG51bWJl
ciAoMC0xKQ0KICAgIDxpdGVtPnJlZ2lzdGVycyBzcGVjaWZpZWQgbWl4ZXIN
CiAgICA8L2l0ZW1pemU+DQogIDxpdGVtPjxiZj5pbnQgc25kX21peGVyX3Vu
cmVnaXN0ZXIoIHNuZF9taXhlcl90ICptaXhlciApPC9iZj4NCiAgICA8aXRl
bWl6ZT4NCiAgICA8aXRlbT48YmY+bWl4ZXI8L2JmPiBwb2ludGVyIHRvIG1p
eGVyIHN0cnVjdHVyZQ0KICAgIDxpdGVtPnVucmVnaXN0ZXJzIGFuZCA8YmY+
ZnJlZXM8L2JmPiBzcGVjaWZpZWQgbWl4ZXINCiAgICA8L2l0ZW1pemU+DQog
IDwvaXRlbT4gIA0KPC9pdGVtaXplPg0KDQo8c2VjdDE+RXhhcGxlcw0KDQo8
cD4NCg0KPHRzY3JlZW4+PGNvZGU+DQojZGVmaW5lIENTNDIzMV9NSVhTIChz
aXplb2Yoc25kX2NzNDIzMV9taXhzKS9zaXplb2Yoc3RydWN0IHNuZF9zdHJ1
X21peGVyX2NoYW5uZWxfaHcpKQ0KI2RlZmluZSBDUzQyMzFfUFJJVkFURSgg
bGVmdCwgcmlnaHQsIHNoaWZ0LCBtdXRlICkgKChsZWZ0IDw8IDI0KXwocmln
aHQgPDwgMTYpfChzaGlmdDw8OCl8bXV0ZSkNCg0Kc3RhdGljIHN0cnVjdCBz
bmRfc3RydV9taXhlcl9jaGFubmVsX2h3IHNuZF9jczQyMzFfbWl4c1tdID0g
ew0KICB7DQogICAgU05EX01JWEVSX1BSSV9HQUlOLCAgICAgICAgIC8qIHBy
aW9yaXR5ICovDQogICAgU05EX01JWEVSX1BSSV9QQVJFTlQsICAgICAgIC8q
IHBhcmVudCBwcmlvcml0eSAqLw0KICAgIFNORF9NSVhFUl9JRF9HQUlOLCAg
ICAgICAgICAvKiBkZXZpY2UgbmFtZSAqLw0KICAgIFNORF9NSVhFUl9PU1Nf
SU1JWCwgICAgICAgICAvKiBPU1MgZGV2aWNlICMgKi8NCiAgICAwLCAxLCAw
LCAwLCAxLCAgICAgICAgICAgICAgLyogbXV0ZS9zdGVyZW8vcmVjb3JkL2Rp
Z2l0YWwvaW5wdXQgKi8NCiAgICAwLCAxNSwgICAgICAgICAgICAgICAgICAg
ICAgLyogbWluLCBtYXggdmFsdWUgKi8NCiAgICAwLCAyMjUwLCAxNTAsICAg
ICAgICAgICAgICAgLyogbWluLCBtYXgsIHN0ZXAgLSBkQiAqLw0KICAgIENT
NDIzMV9QUklWQVRFKCBDUzQyMzFfTEVGVF9JTlBVVCwgQ1M0MjMxX1JJR0hU
X0lOUFVULCAwLCAweDAwICkgfCAweDIwMDAsDQogICAgTlVMTCwgICAgICAg
ICAgICAgICAgICAgICAgIC8qIGNvbXB1dGUgZEIgLT4gbGluZWFyICovDQog
ICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbXB1dGUgbGlu
ZWFyIC0+IGRCICovDQogICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAg
IC8qIHJlY29yZCBzb3VyY2UgKi8NCiAgICBOVUxMLCAgICAgICAgICAgICAg
ICAgICAgICAgLyogc2V0IG11dGUgKi8NCiAgICBzbmRfY3M0MjMxX3ZvbHVt
ZV9sZXZlbCwgICAgLyogc2V0IHZvbHVtZSBsZXZlbCAqLw0KICB9LA0KICAu
Li4uDQp9Ow0KDQpzbmRfa21peGVyX3QgKnNuZF9jczQyMzFfbmV3X21peGVy
KCBzbmRfcGNtX3QgKnBjbSApDQp7DQogIGludCBpZHg7DQogIGNzNDIzMV90
ICpjb2RlYzsNCiAgc25kX2ttaXhlcl90ICptaXhlcjsNCiAgc25kX2ttaXhl
cl9jaGFubmVsX3QgKmNoYW5uZWw7DQoNCiAgaWYgKCAhcGNtIHx8ICFwY20g
LT4gY2FyZCApIHJldHVybiBOVUxMOw0KICBjb2RlYyA9IChjczQyMzFfdCAq
KXBjbSAtPiBwcml2YXRlX2RhdGE7DQogIGlmICggIWNvZGVjICkgcmV0dXJu
IE5VTEw7DQogIG1peGVyID0gc25kX21peGVyX25ldyggcGNtIC0+IGNhcmQs
IHBjbSAtPiBpZCApOw0KICBpZiAoICFtaXhlciApIHJldHVybiBOVUxMOw0K
ICBzdHJjcHkoIG1peGVyIC0+IG5hbWUsIHBjbSAtPiBuYW1lICk7DQogIGZv
ciAoIGlkeCA9IDA7IGlkeCA8IENTNDIzMV9NSVhTOyBpZHgrKyApIHsNCiAg
ICBjaGFubmVsID0gc25kX21peGVyX25ld19jaGFubmVsKCBtaXhlciwgJmFt
cDtzbmRfY3M0MjMxX21peHNbIGlkeCBdICk7DQogICAgaWYgKCAhY2hhbm5l
bCApIHsNCiAgICAgIHNuZF9taXhlcl9mcmVlKCBtaXhlciApOw0KICAgICAg
cmV0dXJuIE5VTEw7DQogICAgfQ0KICB9DQogIG1peGVyIC0+IGh3LmNhcHMg
PSBTTkRfTUlYRVJfSU5GT19DQVBfRVhDTF9SRUNPUkQ7DQogIG1peGVyIC0+
IHByaXZhdGVfZGF0YSA9IGNvZGVjOw0KICBjb2RlYyAtPiBtaXhlciA9IG1p
eGVyOw0KICByZXR1cm4gbWl4ZXI7DQp9DQo8L2NvZGU+PC90c2NyZWVuPg0K
DQo8cD4NCkRvIHlvdSBuZWVkIG1vZGlmeSBzb21lIGRlZmF1bHQgbWl4ZXIg
Y2hhbm5lbCBhc3NpZ25tZW50Pw0KDQo8dHNjcmVlbj48Y29kZT4NCiAgc25k
X2ttaXhlcl9jaGFubmVsX3QgKmNoYW5uZWw7DQoNCiAgLyogb2suIEludGVy
V2F2ZSBoYXZlIE1JQyBkaWZmZXJlbnQgKHN0ZXJlbykgKi8NCiAgY2hhbm5l
bCA9IHNuZF9taXhlcl9maW5kX2NoYW5uZWwoIG1peGVyLCBTTkRfTUlYRVJf
UFJJX01JQyApOw0KICBjaGFubmVsIC0+IGh3LnN0ZXJlbyA9IDE7DQogIGNo
YW5uZWwgLT4gaHcubWF4ID0gMzE7DQogIGNoYW5uZWwgLT4gaHcucHJpdmF0
ZV92YWx1ZSA9IENTNDIzMV9QUklWQVRFKCBDUzQyMzFfTEVGVF9NSUNfSU5Q
VVQsIENTNDIzMV9SSUdIVF9NSUNfSU5QVVQsIDAsIDB4ODAgKTsNCg0KICAv
KiByZWFzc2lnbiBBVVhBIHRvIFNZTlRIRVNJWkVSICovDQogIGNoYW5uZWwg
PSBzbmRfbWl4ZXJfZmluZF9jaGFubmVsKCBtaXhlciwgU05EX01JWEVSX1BS
SV9BVVhBICk7DQogIGNoYW5uZWwgLT4gaHcucHJpb3JpdHkgPSBTTkRfTUlY
RVJfUFJJX1NZTlRIRVNJWkVSOw0KICBjaGFubmVsIC0+IGh3Lm9zc2RldiA9
IFNORF9NSVhFUl9PU1NfU1lOVEg7DQogIHN0cmNweSggY2hhbm5lbCAtPiBo
dy5uYW1lLCBTTkRfTUlYRVJfSURfU1lOVEhFU0laRVIgKTsNCiAgc25kX21p
eGVyX3Jlb3JkZXJfY2hhbm5lbCggbWl4ZXIsIGNoYW5uZWwgKTsNCjwvY29k
ZT48L3RzY3JlZW4+DQoNCjxwPg0KRG8geW91IG5lZWQgYWRkIHNvbWUgbWl4
ZXIgY2hhbm5lbCB0byBnZW5lcmljIG1peGVyPw0KDQo8dHNjcmVlbj48Y29k
ZT4NCiAgc3RhdGljIHN0cnVjdCBzbmRfc3RydV9taXhlcl9jaGFubmVsX2h3
IG1hc3RlciA9IHsNCiAgICBTTkRfTUlYRVJfUFJJX01BU1RFUiwgICAgICAg
ICAgICAgICAvKiBwcmlvcml0eSAqLw0KICAgIFNORF9NSVhFUl9QUklfUEFS
RU5ULCAgICAgICAgICAgICAgIC8qIHBhcmVudCBwcmlvcml0eSAqLw0KICAg
IFNORF9NSVhFUl9JRF9NQVNURVIsICAgICAgICAgICAgICAgIC8qIGRldmlj
ZSBuYW1lICovDQogICAgU05EX01JWEVSX09TU19WT0xVTUUsICAgICAgICAg
ICAgICAgLyogT1NTIGRldmljZSAjICovDQogICAgMSwgMSwgMSwgMCwgMCwg
ICAgICAgICAgICAgICAgICAgICAgLyogbXV0ZS9zdGVyZW8vcmVjb3JkL2Rp
Z2l0YWwgKi8NCiAgICAwLCAzMSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBtYXguIHZhbHVlICovDQogICAgLTM0NTAsIDEyMDAsIDE1MCwg
ICAgICAgICAgICAgICAgICAgLyogbWluLCBtYXgsIHN0ZXAgLSBkQiAqLw0K
ICAgIENTNDIzMV9QUklWQVRFKCBDUzQyMzFfTElORV9MRUZUX09VVFBVVCwg
Q1M0MjMxX0xJTkVfUklHSFRfT1VUUFVULCAwLCAweDgwDQogICAgTlVMTCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY29tcHV0ZSBkQiAt
PiBsaW5lYXIgKi8NCiAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBjb21wdXRlIGxpbmVhciAtPiBkQiAqLw0KICAgIE5VTEws
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlY29yZCBzb3Vy
Y2UgKi8NCiAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBzZXQgbXV0ZSAqLw0KICAgIE5VTEwsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIHNldCB2b2x1bWUgbGV2ZWwgKi8NCiAgfTsNCiAg
aW50IGlkeDsNCg0KICAvKiBtYWtlIG1hc3RlciBhcyBwYXJlbnQgKi8NCiAg
Zm9yICggaWR4ID0gMDsgaWR4IDwgbWl4ZXIgLT4gY2hhbm5lbHNfY291bnQ7
IGlkeCsrICkgew0KICAgIGNoYW5uZWwgPSBtaXhlciAtPiBjaGFubmVsc1sg
aWR4IF07DQogICAgaWYgKCAhY2hhbm5lbCAtPiBody5pbnB1dCApDQogICAg
ICBjaGFubmVsIC0+IGh3LnBhcmVudF9wcmlvcml0eSA9IFNORF9NSVhFUl9Q
UklfTUFTVEVSOw0KICB9DQogIC8qIGFkZCBtYXN0ZXIgdm9sdW1lIGNvbnRy
b2wgKi8NCiAgbWFzdGVyLnNldF9yZWNvcmRfc291cmNlID0gY2hhbm5lbCAt
PiBody5zZXRfcmVjb3JkX3NvdXJjZTsNCiAgbWFzdGVyLnNldF9tdXRlID0g
Y2hhbm5lbCAtPiBody5zZXRfbXV0ZTsNCiAgbWFzdGVyLnNldF92b2x1bWVf
bGV2ZWwgPSBjaGFubmVsIC0+IGh3LnNldF92b2x1bWVfbGV2ZWw7DQogIGNo
YW5uZWwgPSBzbmRfbWl4ZXJfbmV3X2NoYW5uZWwoIG1peGVyLCAmYW1wO21h
c3RlciApOw0KICBpZiAoICFjaGFubmVsICkgcmV0dXJuIC1FTk9NRU07DQo8
L2NvZGU+PC90c2NyZWVuPg0KDQpNaXhlciBkZXZpY2UgcmVnaXN0ZXJpbmc6
DQoNCjx0c2NyZWVuPjxjb2RlPg0KICBzbmRfY2FyZF90ICpjYXJkOw0KICBz
bmRfcGNtX3QgKnBjbS4NCiAgc25kX2ttaXhlcl90ICptaXhlcjsNCg0KICAu
Li4NCiAgbWl4ZXIgPSBzbmRfZXMxNjg4X25ld19taXhlciggcGNtICk7DQog
IGlmICggIW1peGVyICkgew0KICAgIHNuZF9wY21fZnJlZSggcGNtICk7DQog
ICAgc25kX2NhcmRfZnJlZSggY2FyZCApOw0KICAgIHJldHVybiAtTlhJTzsN
CiAgfQ0KICAuLi4NCiAgaWYgKCBzbmRfbWl4ZXJfcmVnaXN0ZXIoIG1peGVy
LCAwICkgKSB7DQogICAgLi4uIHVucmVnaXN0ZXIgYWxyZWFkeSByZWdpc3Rl
cmVkIGRldmljZXMgLi4uDQogICAgc25kX21peGVyX2ZyZWUoIG1peGVyICk7
DQogICAgc25kX3BjbV9mcmVlKCBwY20gKTsNCiAgICBzbmRfY2FyZF9mcmVl
KCBjYXJkICk7DQogICAgcmV0dXJuIC1FTlhJTzsNCiAgfQ0KICAuLi4NCiAg
c25kX21peGVyX3VucmVnaXN0ZXIoIG1peGVyICk7DQo8L2NvZGU+PC90c2Ny
ZWVuPg0KDQo8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+DQo8IS0t
ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFBDTSAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiogLS0+DQo8IS0tICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiogLS0+DQoNCjxzZWN0PlBDTSAtIERpZ2l0YWwgQXVkaW8N
Cg0KPHA+DQpEaWdpdGFsIEF1ZGlvIHJlbGF0ZWQgc3RydWN0dXJlcyBhbmQg
ZnVuY3Rpb25zIGFyZSBpbiA8aXQ+aW5jbHVkZS9wY20uaDwvaXQ+DQpoZWFk
ZXIgZmlsZS4NCg0KPHNlY3QxPlZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zDQoN
CjxwPg0KVmFyaWFibGVzIGZyb20gPGl0PnNuZF9wY21fdDwvaXQ+IHN0cnVj
dHVyZSB3aGljaCBtdXN0IGJlIGZpbGxlZDoNCg0KPGl0ZW1pemU+DQo8aXRl
bT48YmY+aW5mb19mbGFnczwvYmY+IGxvb2sgaW4gPGJmPlNORF9QQ01fSU5G
T18qPC9iZj4gDQo8aXRlbT48YmY+bmFtZTwvYmY+IG9mIHBjbSBkZXZpY2Ug
KGZvciBleGFtcGxlICdDUzQyMzEnKQ0KPGl0ZW0+PGJmPnBsYXliYWNrPC9i
Zj4gdmFyaWFibGVzIGZvciBwbGF5YmFjayBkaXJlY3Rpb24NCjxpdGVtPjxi
Zj5yZWNvcmQ8L2JmPiB2YXJpYWJsZXMgZm9yIHJlY29yZCBkaXJlY3Rpb24N
CjwvaXRlbWl6ZT4NCg0KPHA+DQpWYXJpYWJsZXMgZnJvbSA8aXQ+c25kX3Bj
bV90PC9pdD4gc3RydWN0dXJlIHdoaWNoIHNob3VsZCBiZSBmaWxsZWQ6DQoN
CjxpdGVtaXplPg0KPGl0ZW0+PGJmPnByaXZhdGVfZGF0YTwvYmY+IHNob3Vs
ZCBjb250YWluIHBvaW50ZXIgdG8gcHJpdmF0ZSBkYXRhDQo8aXRlbT48YmY+
cHJpdmF0ZV9mcmVlPC9iZj4gc2hvdWxkIGZyZWUgcHJpdmF0ZSBkYXRhIHdo
ZW4gY2FsbGVkDQo8L2l0ZW1pemU+DQoNCjxwPg0KVmFyaWFibGVzIGZyb20g
PGl0PnN0cnVjdCBzbmRfc3RydV9wY21faGFyZHdhcmU8L2l0PiB3aGljaCBt
dXN0IGJlIGZpbGxlZDoNCg0KPGl0ZW1pemU+DQo8aXRlbT48YmY+ZmxhZ3M8
L2JmPg0KICA8aXRlbWl6ZT4NCiAgPGl0ZW0+PGJmPlNORF9QQ01fSFdfQkFU
Q0g8L2JmPiAtIGhhcmR3YXJlIGRvZXMgZG91YmxlIGJ1ZmZlcmluZw0KICA8
aXRlbT48YmY+U05EX1BDTV9IV184QklUT05MWTwvYmY+IC0gaGFyZHdhcmUg
c3VwcG9ydHMgb25seSA4LWJpdCBkYXRhIChiZSBjYXJlZnVsIC0gbG9vayBh
dCBzYjE2LmMpDQogIDxpdGVtPjxiZj5TTkRfUENNX0hXXzE2QklUT05MWTwv
YmY+IC0gaGFyZHdhcmUgc3VwcG9ydHMgb25seSAxNi1iaXQgZGF0YSAoYmUg
Y2FyZWZ1bCAtIGxvb2sgYXQgc2IxNi5jKQ0KICA8aXRlbT48YmY+U05EX1BD
TV9IV19BVVRPRE1BPC9iZj4gLSBoYXJkd2FyZSBzdXBwb3J0cyBhdXRvIGlu
aXQgZG1hIHRyYW5zZmVyICh1bnRlcm1pbmF0ZWQgbG9vcCkNCiAgPC9pdGVt
aXplPg0KPGl0ZW0+PGJmPmZvcm1hdHM8L2JmPiBsaXN0IG9mIHN1cHBvcnRl
ZCBmb3JtYXRzIDxiZj5TTkRfUENNX0ZNVF8qPC9iZj4NCiAgPGl0ZW1pemU+
DQogICAgPGl0ZW0+aWYgaGFyZHdhcmUgZG9lc24ndCBzdXBwb3J0IE11LUxh
dyAtIGl0IF9tdXN0XyBiZSBlbXVsYXRlZCAoY29udmVydGVkKSwgYnV0IGl0
IGNhbid0IGJlIGxpc3RlZCBoZXJlDQogIDwvaXRlbWl6ZT4NCjxpdGVtPjxi
Zj5hbGlnbjwvYmY+IC0gaWYgdHJhbnNmZXIgYmxvY2sgbXVzdCBiZSBhbGln
bmVkIHRvIHNvbWUgdmFsdWUgLSBzZXQgdGhpcyBtYXNrDQo8aXRlbT48YmY+
bWluX2ZyYWdtZW50PC9iZj4gLSBtaW5pbWFsIGZyYWdtZW50IGluIDJeeA0K
PGl0ZW0+PGJmPm1pbl9yYXRlPC9iZj4gLSBtaW5pbWFsIHJhdGUgaW4gSHoN
CjxpdGVtPjxiZj5tYXhfcmF0ZTwvYmY+IC0gbWF4aW1hbCByYXRlIGluIEh6
DQo8aXRlbT48YmY+bWF4X3ZvaWNlczwvYmY+IC0gbWF4aW1hbCBudW1iZXIg
b2Ygdm9pY2VzDQo8aXRlbT48YmY+aW50ICgqb3BlbikoIHNuZF9wY21fdCAq
cGNtICk8L2JmPg0KICA8aXRlbWl6ZT4NCiAgPGl0ZW0+PGJmPnBjbTwvYmY+
IHBvaW50ZXIgdG8gcGNtIHN0cnVjdHVyZQ0KICA8aXRlbT5vcGVucyBwY20g
ZGlyZWN0aW9uIGFuZCBhbGxvY2F0ZXMgZG1hIGJ1ZmZlciB3aXRoIDxpdD5z
bmRfcGNtX2RtYV9hbGxvYzwvaXQ+DQogIDwvaXRlbWl6ZT4NCjxpdGVtPjxi
Zj5pbnQgKCpjbG9zZSkoIHNuZF9wY21fdCAqcGNtICk8L2JmPg0KICA8aXRl
bWl6ZT4NCiAgPGl0ZW0+Y2xvc2VzIHBjbSBkaXJlY3Rpb24gYW5kIGZyZWVz
IGRtYSBidWZmZXIgd2l0aCA8aXQ+c25kX3BjbV9kbWFfZnJlZTwvaXQ+DQog
IDwvaXRlbWl6ZT4NCjxpdGVtPjxiZj52b2lkICgqY29tcHV0ZV9yYXRlKSgg
c25kX3BjbV90ICpwY20gKTwvYmY+DQogIDxpdGVtaXplPg0KICA8aXRlbT5j
b21wdXRlcyA8aXQ+c25kX3BjbV9jaGFubmVsX3QgLT4gcmVhbF9yYXRlPC9p
dD4gZnJvbSA8aXQ+c25kX3BjbV9jaGFubmVsX3QgLT4gcmF0ZTwvaXQ+DQog
IDwvaXRlbWl6ZT4NCjxpdGVtPjxiZj52b2lkICgqcHJlcGFyZSkoIHNuZF9w
Y21fdCAqcGNtLCB1bnNpZ25lZCBjaGFyICpidWZmZXIsIHVuc2lnbmVkIGlu
dCBzaXplLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgY291
bnQgKTwvYmY+DQogIDxpdGVtaXplPg0KICA8aXRlbT48YmY+cGNtPC9iZj4g
cG9pbnRlciB0byBwY20gc3RydWN0dXJlDQogIDxpdGVtPjxiZj5idWZmZXI8
L2JmPiBwb2ludGVyIHRvIGRtYSBidWZmZXINCiAgPGl0ZW0+PGJmPnNpemU8
L2JmPiB1c2VkIHNpemUgb2YgZG1hIGJ1ZmZlcg0KICA8aXRlbT48YmY+b2Zm
c2V0PC9iZj4gb2Zmc2V0IGluIGJ5dGVzIHRvIGRtYSBidWZmZXINCiAgICA8
aXRlbWl6ZT4NCiAgICAgIDxpdGVtPnRoaXMgdmFsdWUgaXMgYWx3YXlzIHpl
cm8gaWYgaGFyZHdhcmUgc3VwcG9ydHMgYXV0byBpbml0IGRtYSB0cmFuc2Zl
ciBtb2RlDQogICAgPC9pdGVtaXplPg0KICA8aXRlbT48YmY+Y291bnQ8L2Jm
PiBvZiBieXRlcyB0byB0cmFuc2ZlciAoYmxvY2sgc2l6ZSkNCiAgPGl0ZW0+
cHJlcGFyZXMgcGNtIGRpcmVjdGlvbiB0byBvdXRwdXQvaW5wdXQNCiAgPC9p
dGVtaXplPg0KPGl0ZW0+PGJmPnZvaWQgKCp0cmlnZ2VyKSggc25kX3BjbV90
ICpwY20sIGludCB1cCApPC9iZj4NCiAgPGl0ZW1pemU+DQogIDxpdGVtPjxi
Zj5wY208L2JmPiBwb2ludGVyIHRvIHBjbSBzdHJ1Y3R1cmUNCiAgPGl0ZW0+
PGJmPnVwPC9iZj4gaWYgemVybyAtIHRyaWdnZXIgZG93biAodHVybiBvZmYp
LCBpZiBub256ZXJvIC0gdHJpZ2dlciB1cCAodHVybiBvbikNCiAgPGl0ZW0+
c3RhcnRzIG9yIHN0b3BzIHBjbSBkaXJlY3Rpb24NCiAgPC9pdGVtaXplPg0K
PGl0ZW0+PGJmPnVuc2lnbmVkIGludCAoKnBvaW50ZXIpKCBzbmRfcGNtX3Qg
KnBjbSwgdW5zaWduZWQgaW50IHVzZWRfc2l6ZSApPC9iZj4NCiAgPGl0ZW1p
emU+DQogIDxpdGVtPjxiZj5wY208L2JmPiBwb2ludGVyIHRvIHBjbSBzdHJ1
Y3R1cmUNCiAgPGl0ZW0+PGJmPnVzZWRfc2l6ZTwvYmY+IC0gdXNlZCBzaXpl
IG9mIGRtYSBidWZmZXINCiAgPGl0ZW0+cmV0dXJucyBhY3R1YWwgYnl0ZSBw
b2ludGVyIGZyb20gcGNtIGRpcmVjdGlvbg0KICA8L2l0ZW1pemU+DQo8aXRl
bT48YmY+dm9pZCAoKmRtYSkoIHNuZF9wY21fdCAqcGNtLCB1bnNpZ25lZCBj
aGFyICpidWZmZXIsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGNo
YXIgKnVzZXIsIHVuc2lnbmVkIGludCBjb3VudCApPC9iZj4NCiAgPGl0ZW1p
emU+DQogIDxpdGVtPjxiZj5wY208L2JmPiBwb2ludGVyIHRvIHBjbSBzdHJ1
Y3R1cmUNCiAgPGl0ZW0+PGJmPmJ1ZmZlcjwvYmY+IHBvaW50ZXIgdG8gZG1h
IGJ1ZmZlcg0KICA8aXRlbT48YmY+b2Zmc2V0PC9iZj4gZGVzdG9uYXRpb24v
c291cmNlIG9mZnNldCBpbiBieXRlcyB0by9mcm9tIGRtYSBidWZmZXINCiAg
PGl0ZW0+PGJmPnVzZXI8L2JmPiBwb2ludGVyIHRvIGJ1ZmZlciBpbiB1c2Vy
IHNwYWNlDQogIDxpdGVtPjxiZj5jb3VudDwvYmY+IHRyYW5zZmVyIGNvdW50
IGluIGJ5dGVzDQogIDxpdGVtPmNvcGllcyBkYXRhIGZyb20gb3IgdG8gdXNl
ciBzcGFjZSB0byBvciBmcm9tIGtlcm5lbCBkbWEgYnVmZmVyDQogIDwvaXRl
bWl6ZT4NCjxpdGVtPjxiZj52b2lkICgqZG1hX21vdmUpKCBzbmRfcGNtX3Qg
KnBjbSwgdW5zaWduZWQgY2hhciAqYnVmZmVyLCB1bnNpZ25lZCBpbnQgZGVz
dF9vZmZzZXQsIHVuc2lnbmVkIGludCBzcmNfb2Zmc2V0LCB1bnNpZ25lZCBp
bnQgY291bnQgKTwvYmY+DQogIDxpdGVtaXplPg0KICA8aXRlbT48YmY+cGNt
PC9iZj4gcG9pbnRlciB0byBwY20gc3RydWN0dXJlDQogIDxpdGVtPjxiZj5i
dWZmZXI8L2JmPiBwb2ludGVyIHRvIGRtYSBidWZmZXINCiAgPGl0ZW0+PGJm
PmRlc3Rfb2Zmc2V0PC9iZj4gZGVzdG9uYXRpb24gb2Zmc2V0IGluIGJ5dGVz
IHRvIGRtYSBidWZmZXINCiAgPGl0ZW0+PGJmPnNyY19vZmZzZXQ8L2JmPiBz
b3VyY2Ugb2Zmc2V0IGluIGJ5dGVzIGZyb20gZG1hIGJ1ZmZlcg0KICA8aXRl
bT48YmY+Y291bnQ8L2JmPiB0cmFuc2ZlciBjb3VudA0KICA8aXRlbT50cmFu
c2ZlciBhcmVhcyBjYW4gbmV2ZXIgYmUgb3ZlcmxhcHBlZA0KICA8L2l0ZW1p
emU+DQo8aXRlbT48YmY+dm9pZCAoKmRtYV9uZXV0cmFsKSggc25kX3BjbV90
ICpwY20sIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgdW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBpbnQgY291bnQsIHVuc2lnbmVkIGNoYXIgbmV1dHJhbF9i
eXRlICk8L2JmPg0KICA8aXRlbWl6ZT4NCiAgPGl0ZW0+PGJmPnBjbTwvYmY+
IHBvaW50ZXIgdG8gcGNtIHN0cnVjdHVyZQ0KICA8aXRlbT48YmY+YnVmZmVy
PC9iZj4gcG9pbnRlciB0byBkbWEgYnVmZmVyDQogIDxpdGVtPjxiZj5vZmZz
ZXQ8L2JmPiBkZXN0b25hdGlvbiBvZmZzZXQgaW4gYnl0ZXMgdG8gZG1hIGJ1
ZmZlcg0KICA8aXRlbT48YmY+Y291bnQ8L2JmPiBjb3VudCBpbiBieXRlcw0K
ICA8aXRlbT48YmY+bmV1dHJhbF9ieXRlPC9iZj4gLSBuZXV0cmFsIGJ5dGUN
CiAgPGl0ZW0+ZmlsbHMgc3BlY2lmaWVkIGFyZWEgb2YgZG1hIGJ1ZmZlciB3
aXRoIG5ldXRyYWwgYnl0ZQ0KICA8L2l0ZW1pemU+DQo8L2l0ZW1pemU+DQoN
CjxwPg0KVmFyaWFibGVzIGZyb20gPGl0PnN0cnVjdCBzbmRfc3RydV9wY21f
aGFyZHdhcmU8L2l0PiB3aGljaCBzaG91bGQgYmUgZmlsbGVkOg0KDQo8aXRl
bWl6ZT4NCjxpdGVtPjxiZj5wcml2YXRlX2RhdGE8L2JmPiBzaG91bGQgY29u
dGFpbnMgcG9pbnRlciB0byBwcml2YXRlIGRhdGEgZm9yIHNwZWNpZmllZCBk
aXJlY3Rpb24NCjxpdGVtPjxiZj5wcml2YXRlX2ZyZWU8L2JmPiBzaG91bGQg
ZnJlZSBwcml2YXRlIGRhdGENCjwvaXRlbWl6ZT4NCg0KPHA+DQpGdW5jdGlv
bnMgbGlzdDoNCg0KPGl0ZW1pemU+DQo8aXRlbT48YmY+dm9pZCBzbmRfcGNt
X3BsYXliYWNrX2RtYSggc25kX3BjbV90ICpwY20sDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYnVmZmVy
LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnVzZXIsIHVuc2lnbmVk
IGludCBjb3VudCApPC9iZj4NCiAgPGl0ZW1pemU+DQogICAgPGl0ZW0+c3Rh
bmRhcmQgZnVuY3Rpb24gZm9yIHBsYXliYWNrIHNuZF9wY21fY2hhbm5lbF90
IC0+IGh3LmRtYQ0KICA8L2l0ZW1pemU+DQo8aXRlbT48YmY+dm9pZCBzbmRf
cGNtX3BsYXliYWNrX2RtYV91bGF3KCBzbmRfcGNtX3QgKnBjbSwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgKmJ1ZmZlciwgdW5zaWduZWQgaW50IG9mZnNldCwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIgKnVzZXIsIHVuc2lnbmVkIGludCBjb3VudCApPC9iZj4NCiAgPGl0ZW1p
emU+DQogICAgPGl0ZW0+c3RhbmRhcmQgZnVuY3Rpb24gZm9yIHBsYXliYWNr
IHNuZF9wY21fY2hhbm5lbF90IC0+IGh3LmRtYQ0KICAgICAgICAgIGlmIGhh
cmR3YXJlIGRvZXNuJ3Qgc3VwcG9ydHMgTXUtTGF3IGNvbXByZXNzaW9uDQog
IDwvaXRlbWl6ZT4NCjxpdGVtPjxiZj52b2lkIHNuZF9wY21fcGxheWJhY2tf
ZG1hX25ldXRyYWwoIHNuZF9wY21fdCAqcGNtLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAq
YnVmZmVyLCB1bnNpZ25lZCBpbnQgb2YNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjb3VudCwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGNoYXIgbmV1dHJhbF9ieXRlICk8L2JmPg0KICA8aXRlbWl6
ZT4NCiAgICA8aXRlbT5zdGFuZGFyZCBmdW5jdGlvbiBmb3IgcGxheWJhY2sg
c25kX3BjbV9jaGFubmVsX3QgLT4gaHcuZG1hX25ldXRyYWwNCiAgPC9pdGVt
aXplPg0KPGl0ZW0+PGJmPnZvaWQgc25kX3BjbV9yZWNvcmRfZG1hKCBzbmRf
cGNtX3QgKnBjbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciAqYnVmZmVyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyICp1c2VyLCB1bnNpZ25lZCBpbnQgY291bnQgKTwvYmY+DQogIDxp
dGVtaXplPg0KICAgIDxpdGVtPnN0YW5kYXJkIGZ1bmN0aW9uIGZvciByZWNv
cmQgc25kX3BjbV9jaGFubmVsX3QgLT4gaHcuZG1hDQogIDwvaXRlbWl6ZT4N
CjxpdGVtPjxiZj52b2lkIHNuZF9wY21fcmVjb3JkX2RtYV91bGF3KCBzbmRf
cGNtX3QgKnBjbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyICpidWZmZXIsIHVuc2lnbmVkIGludCBvZmZz
ZXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciAqdXNlciwgdW5zaWduZWQgaW50IGNvdW50ICk8L2JmPg0K
ICA8aXRlbWl6ZT4NCiAgICA8aXRlbT5zdGFuZGFyZCBmdW5jdGlvbiBmb3Ig
cmVjb3JkIHNuZF9wY21fY2hhbm5lbF90IC0+IGh3LmRtYQ0KICAgICAgICAg
IGlmIGhhcmR3YXJlIGRvZXNuJ3Qgc3VwcG9ydHMgTXUtTGF3IGNvbXByZXNz
aW9uDQogIDwvaXRlbWl6ZT4NCjxpdGVtPjxiZj52b2lkIHNuZF9wY21fZG1h
X21vdmUoIHNuZF9wY21fdCAqcGNtLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYnVmZmVyLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlc3Rfb2Zm
c2V0LCB1bnNpZ25lZCBpbnQgc3JjX29mZnNldCwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjb3VudCApPC9iZj4N
CiAgPGl0ZW1pemU+DQogICAgPGl0ZW0+c3RhbmRhcmQgZnVuY3Rpb24gZm9y
IHNuZF9wY21fY2hhbm5lbF90IC0+IGh3LmRtYV9tb3ZlDQogIDwvaXRlbWl6
ZT4NCjwvaXRlbWl6ZT4NCg0KPHA+DQpGdW5jdGlvbnMgZm9yIGRtYSBhbGxv
Y2F0aW9uOg0KDQo8aXRlbWl6ZT4NCjxpdGVtPjxiZj5pbnQgc25kX3BjbV9k
bWFfYWxsb2MoIHNuZF9wY21fdCAqcGNtLCBpbnQgZGlyZWN0aW9uLCBpbnQg
ZG1hbnVtLCBjaGFyICppZGVudCApPC9iZj4NCiAgPGl0ZW1pemU+DQogICAg
PGl0ZW0+PGJmPnBjbTwvYmY+IHBvaW50ZXIgdG8gcGNtIHN0cnVjdHVyZQ0K
ICAgIDxpdGVtPjxiZj5kaXJlY3Rpb248L2JmPiBwY20gZGlyZWN0aW9uIC0g
PGJmPlNORF9QQ01fUExBWUJBQ0s8L2JmPiBvciA8YmY+U05EX1BDTV9SRUNP
UkQ8L2JmPg0KICAgIDxpdGVtPjxiZj5kbWFudW08L2JmPiBkbWEgaW5kZXgN
CiAgICA8aXRlbT48YmY+aWRlbnQ8L2JmPiBpZGVudGlmaWNhdGlvbiBmb3Ig
ZG1hIG93bmVyDQogICAgPGl0ZW0+YWxsb2NhdGVzIHBjbSBkbWEgYnVmZmVy
DQogIDwvaXRlbWl6ZT4NCjxpdGVtPjxiZj5pbnQgc25kX3BjbV9kbWFfZnJl
ZSggc25kX3BjbV90ICpwY20sIGludCBkaXJlY3Rpb24sIGludCBkbWFudW0g
KTwvYmY+DQogIDxpdGVtaXplPg0KICAgIDxpdGVtPjxiZj5wY208L2JmPiBw
b2ludGVyIHRvIHBjbSBzdHJ1Y3R1cmUNCiAgICA8aXRlbT48YmY+ZGlyZWN0
aW9uPC9iZj4gcGNtIGRpcmVjdGlvbg0KICAgIDxpdGVtPjxiZj5kbWFudW08
L2JmPiBkbWEgaW5kZXgNCiAgICA8aXRlbT5mcmVlcyBwY20gZG1hIGJ1ZmZl
cg0KICA8L2l0ZW1pemU+DQo8L2l0ZW1pemU+DQoNCjxwPg0KRnVuY3Rpb25z
IGZvciBhbGxvY2F0aW9uIGFuZCByZWdpc3RlcmluZzoNCg0KPGl0ZW1pemU+
DQo8aXRlbT48YmY+c25kX3BjbV90ICpzbmRfcGNtX25ld19kZXZpY2UoIHNu
ZF9jYXJkX3QgKmNhcmQsIGNoYXIgKmlkICk8L2JmPg0KICA8aXRlbWl6ZT4N
CiAgICA8aXRlbT48YmY+Y2FyZDwvYmY+IHBvaW50ZXIgdG8gc291bmRjYXJk
IHN0cnVjdHVyZQ0KICAgIDxpdGVtPjxiZj5pZDwvYmY+IGlkZW50aWZpY2F0
aW9uIGZvciBwY20gZGV2aWNlIChmb3IgZXhhbXBsZSAnQUQxODQ4JykNCiAg
PC9pdGVtaXplPg0KPGl0ZW0+PGJmPmludCBzbmRfcGNtX2ZyZWUoIHNuZF9w
Y21fdCAqcGNtICk8L2JmPg0KICA8aXRlbWl6ZT4NCiAgICA8aXRlbT48YmY+
cGNtPC9iZj4gcG9pbnRlciB0byBwY20gc3RydWN0dXJlDQogICAgPGl0ZW0+
ZnJlZXMgcGNtIHN0cnVjdHVyZSBhbmQgYXNzb2NpYXRlZCBwcml2YXRlIGRh
dGENCiAgPC9pdGVtaXplPg0KPGl0ZW0+PGJmPmludCBzbmRfcGNtX3JlZ2lz
dGVyKCBzbmRfcGNtX3QgKnBjbSwgaW50IHBjbV9kZXZpY2UgKTwvYmY+DQog
IDxpdGVtaXplPg0KICAgIDxpdGVtPjxiZj5wY208L2JmPiBwb2ludGVyIHRv
IHBjbSBzdHJ1Y3R1cmUNCiAgICA8aXRlbT48YmY+cGNtX2RldmljZTwvYmY+
IG51bWJlciBvZiBwY20gZGV2aWNlICgwLTMpDQogICAgPGl0ZW0+cmVnaXN0
ZXJzIHBjbSBkZXZpY2UNCiAgPC9pdGVtaXplPg0KPGl0ZW0+PGJmPmludCBz
bmRfcGNtX3VucmVnaXN0ZXIoIHNuZF9wY21fdCAqcGNtICk8L2JmPg0KICA8
aXRlbWl6ZT4NCiAgICA8aXRlbT48YmY+cGNtPC9iZj4gcG9pbnRlciB0byBw
Y20gc3RydWN0dXJlDQogICAgPGl0ZW0+dW5yZWdpc3RlcnMgYW5kIGZyZWVz
IHBjbSBzdHJ1Y3R1cmUNCiAgPC9pdGVtaXplPg0KPC9pdGVtaXplPg0KDQo8
c2VjdDE+RXhhbXBsZXMNCg0KPHA+DQoNCjx0c2NyZWVuPjxjb2RlPg0Kc3Rh
dGljIHN0cnVjdCBzbmRfc3RydV9wY21faGFyZHdhcmUgc25kX2VzMTY4OF9w
bGF5YmFjayA9IHsNCiAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAg
LyogcHJpdmF0ZSBkYXRhICovDQogIE5VTEwsICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHByaXZhdGVfZnJlZSAqLw0KICBTTkRfUENNX0hXX0FVVE9E
TUEsICAgICAgICAgICAvKiBmbGFncyAqLw0KICBTTkRfUENNX0ZNVF9VOCB8
IFNORF9QQ01fRk1UX1MxNl9MRSwgIC8qIGZvcm1hdHMgKi8NCiAgMCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogYWxpZ24gdmFsdWUgKi8NCiAg
NiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbWluaW1hbCBmcmFn
bWVudCAqLw0KICA0MDAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBt
aW4uIHJhdGUgKi8NCiAgNDgwMDAsICAgICAgICAgICAgICAgICAgICAgICAg
LyogbWF4LiByYXRlICovDQogIDIsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIG1heC4gdm9pY2VzICovDQogIHNuZF9lczE2ODhfcGxheWJhY2tf
b3BlbiwNCiAgc25kX2VzMTY4OF9wbGF5YmFja19jbG9zZSwNCiAgc25kX2Vz
MTY4OF9wbGF5YmFja19jb21wdXRlX3JhdGUsDQogIHNuZF9lczE2ODhfcGxh
eWJhY2tfcHJlcGFyZSwNCiAgc25kX2VzMTY4OF9wbGF5YmFja190cmlnZ2Vy
LA0KICBzbmRfZXMxNjg4X3BsYXliYWNrX3BvaW50ZXIsDQogIHNuZF9wY21f
cGxheWJhY2tfZG1hX3VsYXcsDQogIHNuZF9wY21fZG1hX21vdmUsDQogIHNu
ZF9wY21fcGxheWJhY2tfZG1hX25ldXRyYWwNCn07DQoNCnN0YXRpYyBzdHJ1
Y3Qgc25kX3N0cnVfcGNtX2hhcmR3YXJlIHNuZF9lczE2ODhfcmVjb3JkID0g
ew0KICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwcml2YXRl
IGRhdGEgKi8NCiAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgLyog
cHJpdmF0ZSBmcmVlICovDQogIFNORF9QQ01fSFdfQVVUT0RNQSwgICAgICAg
ICAgIC8qIGZsYWdzICovDQogIFNORF9QQ01fRk1UX1U4IHwgU05EX1BDTV9G
TVRfUzE2X0xFLCAgLyogZm9ybWF0cyAqLw0KICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBhbGlnbiB2YWx1ZSAqLw0KICA2LCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBtaW5pbWFsIGZyYWdtZW50ICovDQog
IDQwMDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1pbi4gcmF0ZSAq
Lw0KICA0ODAwMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiBtYXguIHJh
dGUgKi8NCiAgMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbWF4
LiB2b2ljZXMgKi8NCiAgc25kX2VzMTY4OF9yZWNvcmRfb3BlbiwNCiAgc25k
X2VzMTY4OF9yZWNvcmRfY2xvc2UsDQogIHNuZF9lczE2ODhfcmVjb3JkX2Nv
bXB1dGVfcmF0ZSwNCiAgc25kX2VzMTY4OF9yZWNvcmRfcHJlcGFyZSwNCiAg
c25kX2VzMTY4OF9yZWNvcmRfdHJpZ2dlciwNCiAgc25kX2VzMTY4OF9yZWNv
cmRfcG9pbnRlciwNCiAgc25kX3BjbV9yZWNvcmRfZG1hX3VsYXcsDQogIHNu
ZF9wY21fZG1hX21vdmUsDQogIE5VTEwNCn07DQoNCnN0YXRpYyB2b2lkIHNu
ZF9lczE2ODhfZnJlZSggdm9pZCAqcHJpdmF0ZV9kYXRhICkNCnsNCiAgc25k
X2ZyZWUoIHByaXZhdGVfZGF0YSwgc2l6ZW9mKCBlczE2ODhfdCApICk7DQp9
DQoNCnNuZF9wY21fdCAqc25kX2VzMTY4OF9uZXdfZGV2aWNlKCBzbmRfY2Fy
ZF90ICpjYXJkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHNob3J0IHBvcnQsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgbXB1X3BvcnQsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgaXJx
bnVtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHNob3J0IG1wdV9pcnFudW0sDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgZG1hOG51bSwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBoYXJk
d2FyZSApDQp7DQogIHNuZF9wY21fdCAqcGNtOw0KICBlczE2ODhfdCAqY29k
ZWM7DQoNCiAgcGNtID0gc25kX3BjbV9uZXdfZGV2aWNlKCBjYXJkLCAiRVN4
Njg4IiApOw0KICBpZiAoICFwY20gKSByZXR1cm4gTlVMTDsNCiAgY29kZWMg
PSAoZXMxNjg4X3QgKilzbmRfbWFsbG9jKCBzaXplb2YoIGVzMTY4OF90ICkg
KTsNCiAgaWYgKCAhY29kZWMgKSByZXR1cm4gTlVMTDsNCiAgbWVtc2V0KCBj
b2RlYywgMCwgc2l6ZW9mKCBlczE2ODhfdCApICk7DQogIHNuZF9zcGluX3By
ZXBhcmUoIGNvZGVjLCByZWcgKTsNCiAgc25kX3NwaW5fcHJlcGFyZSggY29k
ZWMsIG1peGVyICk7DQogIGNvZGVjIC0+IHBjbSA9IHBjbTsNCiAgY29kZWMg
LT4gY2FyZCA9IHBjbSAtPiBjYXJkOw0KICBjb2RlYyAtPiBwb3J0ID0gcG9y
dDsNCiAgY29kZWMgLT4gbXB1X3BvcnQgPSBtcHVfcG9ydDsNCiAgY29kZWMg
LT4gaXJxbnVtID0gaXJxbnVtOw0KICBjb2RlYyAtPiBpcnEgPSBwY20gLT4g
Y2FyZCAtPiBpcnFzWyBpcnFudW0gXSAtPiBpcnE7DQogIGNvZGVjIC0+IG1w
dV9pcnFudW0gPSBtcHVfaXJxbnVtOw0KICBpZiAoIG1wdV9pcnFudW0gIT0g
U05EX0lSUV9ESVNBQkxFICkNCiAgICBjb2RlYyAtPiBtcHVfaXJxID0gcGNt
IC0+IGNhcmQgLT4gaXJxc1sgbXB1X2lycW51bSBdIC0+IGlycTsNCiAgY29k
ZWMgLT4gZG1hOG51bSA9IGRtYThudW07DQogIGNvZGVjIC0+IGRtYTggPSBw
Y20gLT4gY2FyZCAtPiBkbWFzWyBkbWE4bnVtIF0gLT4gZG1hOw0KICBjb2Rl
YyAtPiBoYXJkd2FyZSA9IGhhcmR3YXJlOw0KICBtZW1jcHkoICZhbXA7cGNt
IC0+IHBsYXliYWNrLmh3LCAmYW1wO3NuZF9lczE2ODhfcGxheWJhY2ssIHNp
emVvZiggc25kX2VzMTY4OF9wbGF5YmFjayApICk7DQogIG1lbWNweSggJmFt
cDtwY20gLT4gcmVjb3JkLmh3LCAmYW1wO3NuZF9lczE2ODhfcmVjb3JkLCBz
aXplb2YoIHNuZF9lczE2ODhfcmVjb3JkICkgKTsNCiAgcGNtIC0+IHByaXZh
dGVfZGF0YSA9IGNvZGVjOw0KICBwY20gLT4gcHJpdmF0ZV9mcmVlID0gc25k
X2VzMTY4OF9mcmVlOw0KICBwY20gLT4gaW5mb19mbGFncyA9IFNORF9QQ01f
SU5GT19DT0RFQyB8IFNORF9QQ01fSU5GT19NTUFQIHwNCiAgICAgICAgICAg
ICAgICAgICAgICBTTkRfUENNX0lORk9fUExBWUJBQ0sgfCBTTkRfUENNX0lO
Rk9fUkVDT1JEOw0KICBzcHJpbnRmKCBwY20gLT4gbmFtZSwgIkVTJXM2ODgg
cmV2ICVpIiwgY29kZWMgLT4gaGFyZHdhcmUgPT0gRVMxNjg4X0hXXzY4OCA/
IiIgOiAiMSIsIGNvZGVjIC0+IHZlcnNpb24gJiAweDBmICk7DQogIGlmICgg
c25kX2VzMTY4OF9wcm9iZSggcGNtICkgPCAwICkgew0KICAgIHNuZF9wY21f
ZnJlZSggcGNtICk7DQogICAgcmV0dXJuIE5VTEw7DQogIH0NCiAgcmV0dXJu
IHBjbTsNCn0NCjwvY29kZT48L3RzY3JlZW4+DQoNClBDTSBkZXZpY2UgcmVn
aXN0ZXJpbmc6DQoNCjx0c2NyZWVuPjxjb2RlPg0KICBzbmRfY2FyZF90ICpj
YXJkOw0KICBzbmRfcGNtX3QgKnBjbTsNCg0KICBwY20gPSBzbmRfZXMxNjg4
X25ld19kZXZpY2UoIGNhcmQsIHBvcnQsIG1wdV9wb3J0LCBpcnFudW0sIG1w
dV9pcnFudW0sIGRtYThudW0sIEVTMTY4OF9IV19BVVRPICk7DQogIGlmICgg
IXBjbSApIHJldHVybiBOVUxMOw0KICAuLi4NCiAgaWYgKCBzbmRfcGNtX3Jl
Z2lzdGVyKCBwY20sIDAgKSApIHsNCiAgICAuLi4gdW5yZWdpc3RlciBhbHJl
YWR5IHJlZ2lzdGVyZWQgZGV2aWNlcyAuLi4NCiAgICBzbmRfcGNtX2ZyZWUo
IHBjbSApOw0KICAgIHNuZF9jYXJkX2ZyZWUoIGNhcmQgKTsNCiAgICByZXR1
cm4gLUVOWElPOw0KICB9DQogIC4uLg0KICBzbmRfcGNtX3VucmVnaXN0ZXIo
IHBjbSApOw0KPC9jb2RlPjwvdHNjcmVlbj4NCg0KPC9hcnRpY2xlPg0KDQoN
Cg0KDQo=
---559023410-851401618-910824885=:1232--

