Cyrix patches for Linux 2.0.33

Kurt Garloff (garloff@kg1.ping.de)
Mon, 26 Jan 1998 23:52:26 +0100 (CET)


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.

--8323584-408640688-885855146=:8066
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi GNU/Linux users (having a Cyrix/IBM 6x86 (MX)),

The Linux kernels from 2.0.32 up require a new revision of my Cyrix patch,
because some code in the files I patch was changed in order to work around
the Pentium F00FC7C8 bug.

I used the time to just refine the patch a little bit. There was an error
where the NOLOCK bit was set (linux/arch/i386/kernel/head.S), so it was
never actually set. This is especially bad, as it is needed to work around
the ,,Hidden-CLI / Coma`` bug of the 6x86. I also added the other possible
workaround (Serialize XCHG) in case we don't set NOLOCK. A patch for
linux/arch/i386/kernel/time.c which is included in Balsa's patches and
seems to necessary for the use of the 6x86MX is also included. The
Documentation was updated and now shows the URL of Balsa's pages and
some documentation of the 6x86 bug.

The patch contains much more changes to the kernel than Balsa's patch does.
It lets the user enable a lot of 6x86 features during Kernel setup.
This way, users don't have to use userspace utilities to setup the 6x86
except if they want to setup the ARR/RCR registers to enable Write gathering
for their graphics memory. The patch also includes the usage of the 6x86's
VSPM feature which results in a (minimal) performance improvement.

If you want to experiment with 6x86's VSPM and BTB features, you can find
utilities on ftp://student.physik.uni-dortmund.de/pub/linux/kernel/6x86.
If you want to setup 6x86's configuration registers (CCR/ARR/RCR) from
userspace, go and get the set6x86 package from Balsa's page.
(http://www.tux.org/~balsa/linux/cyrix)

Kurt Garloff, Dortmund
<K.Garloff@ping.de>
PGP key on http://www.student.physik.uni-dortmund.de/homepages/garloff

--8323584-408640688-885855146=:8066
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=cyrix
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.980126235226.8066B@kg1.ping.de>
Content-Description: Cyrix-2033.patch

LS0tIGxpbnV4LTIuMC4zMy5vcmlnL0RvY3VtZW50YXRpb24vQ29uZmlndXJl
LmhlbHAJTW9uIEphbiAgNSAxODoyMzo1MCAxOTk4DQorKysgbGludXgtMi4w
LjMzLnBhdGNoZWQvRG9jdW1lbnRhdGlvbi9Db25maWd1cmUuaGVscAlGcmkg
SmFuIDIzIDEyOjMyOjQ0IDE5OTgNCkBAIC03MjAsMTkgKzcyMCwxMTYgQEAN
CiAgIGxhdGVyIGxvYWQgdGhlIG1vZHVsZSB3aGVuIHlvdSBpbnN0YWxsIHRo
ZSBKREsgb3IgZmluZCBhbiBpbnRlcmVzdGluZw0KICAgSmF2YSBwcm9ncmFt
IHRoYXQgeW91IGNhbid0IGxpdmUgd2l0aG91dC4NCiANCi1Qcm9jZXNzb3Ig
dHlwZQ0KK1Byb2Nlc3NvciBmYW1pbHkNCiBDT05GSUdfTTM4Ng0KICAgVGhp
cyBpcyB0aGUgcHJvY2Vzc29yIHR5cGUgb2YgeW91ciBDUFUuIEl0IGlzIHVz
ZWQgZm9yIG9wdGltaXppbmcNCi0gIHB1cnBvc2VzLiBJbiBvcmRlciB0byBj
b21waWxlIGEga2VybmVsIHRoYXQgY2FuIHJ1biBvbiBhbGwgQ1BVIHR5cGVz
DQotICAoYWxiZWl0IG5vdCBvcHRpbWFsbHkgZmFzdCksIHlvdSBjYW4gc3Bl
Y2lmeSAiMzg2IiBoZXJlLiAgSWYgeW91DQotICBzcGVjaWZ5ICI0ODYiIG9y
ICJQZW50aXVtIiBvciAiUFBybyIsIHRoZW4gdGhlIGtlcm5lbCB3aWxsIHJ1
biBvbg0KLSAgNDg2IGFuZCBQZW50aXVtICg9NTg2KSBhbmQgUGVudGl1bSBQ
cm8gKD02ODYpIENQVXMuIEluIHJhcmUgY2FzZXMsDQotICBpdCBjYW4gbWFr
ZSBzZW5zZSB0byBzcGVjaWZ5ICJQZW50aXVtIiBldmVuIGlmIHJ1bm5pbmcg
YSA0ODY6IHRoZQ0KLSAga2VybmVsIHdpbGwgYmUgc21hbGxlciBidXQgc2xv
d2VyLiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgeW91IHVzZSBhDQotICBjb21w
aWxlciBiZWZvcmUgZ2NjIDIuNyAoc2F5ICJnY2MgLXYiIHRvIGZpbmQgb3V0
KSwgdGhlbiB5b3UgaGF2ZSB0bw0KLSAgc2F5ICIzODYiIG9yICI0ODYiIGhl
cmUgZXZlbiBpZiBydW5uaW5nIG9uIGEgUGVudGl1bSBvciBQUHJvDQorICBw
dXJwb3Nlcy4gSW4gb3JkZXIgdG8gY29tcGlsZSBhIGtlcm5lbCB0aGF0IGNh
biBydW4gb24gYWxsIGl4ODYgQ1BVIA0KKyAgdHlwZXMgKGFsYmVpdCBub3Qg
b3B0aW1hbGx5IGZhc3QpLCB5b3UgY2FuIHNwZWNpZnkgIjM4NiIgaGVyZS4g
IElmIA0KKyAgeW91IHNwZWNpZnkgIjQ4NiIgb3IgIlBlbnRpdW0iIG9yICJQ
UHJvIiwgdGhlbiB0aGUga2VybmVsIHdpbGwgcnVuIA0KKyAgb24gNDg2IGFu
ZCBQZW50aXVtICg9NTg2KSBhbmQgUGVudGl1bSBQcm8gKD02ODYpIENQVXMu
IEluIHJhcmUgDQorICBjYXNlcywgaXQgY2FuIG1ha2Ugc2Vuc2UgdG8gc3Bl
Y2lmeSAiUGVudGl1bSIgZXZlbiBpZiBydW5uaW5nIGEgNDg2OiANCisgIHRo
ZSBrZXJuZWwgd2lsbCBiZSBzbWFsbGVyIGJ1dCBzbG93ZXIuIE9uIHRoZSBv
dGhlciBoYW5kLCBpZiB5b3UgdXNlIA0KKyAgYSBjb21waWxlciBiZWZvcmUg
Z2NjIDIuNyAoc2F5ICJnY2MgLXYiIHRvIGZpbmQgb3V0KSwgdGhlbiB5b3Ug
aGF2ZSANCisgIHRvIHNheSAiMzg2IiBvciAiNDg2IiBoZXJlIGV2ZW4gaWYg
cnVubmluZyBvbiBhIFBlbnRpdW0gb3IgUFBybw0KICAgbWFjaGluZS4gSWYg
eW91IGRvbid0IGtub3cgd2hhdCB0byBkbywgc2F5ICIzODYiLg0KIA0KK1N1
cHBvcnQgZm9yIEN5cml4IHByb2Nlc3NvcnMNCitDT05GSUdfQ1lSSVgNCisg
IFRoaXMgZW5hYmxlcyByZWNvZ25pdGlvbiBvZiBDeXJpeCBwcm9jZXNzb3Jz
LiBXaXRob3V0IGl0DQorICAvcHJvYy9jcHVpbmZvIHdpbGwgbGlzdCB5b3Vy
IHByb2Nlc3NvciBhcyBhbiB1bmtub3duIG1vZGVsDQorICBvZiBDeXJpeC4g
V2l0aCBpdCBpdCB3aWxsIGxpc3QgdGhlIGNvcnJlY3QgZGV0YWlscy4gSXQg
c2hvdWxkDQorICBiZSBzYWZlIHRvIHNheSBZIGhlcmUgcmVnYXJkbGVzcyBv
ZiB3aGF0IHByb2Nlc3NvciB5b3UgYXJlDQorICBhY3R1YWxseSB1c2luZy4g
SWYgdGhpcyBvcHRpb24gaXMgbm90IGVuYWJsZWQgbm9uZSBvZiB0aGUNCisg
IEN5cml4IGZlYXR1cmUgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLg0KKw0KK0Vu
YWJsZSBzdXNwZW5kIG9uIGhhbHQgcG93ZXIgc2F2aW5nIGZlYXR1cmUNCitD
T05GSUdfQ1lSSVhfU1VTUF9ITFQNCisgIFN1c3BlbmQgb24gaGFsdCBjYXVz
ZXMgdGhlIHByb2Nlc3NvciB0byBlbnRlciBhIGxvdyBwb3dlciBzdGF0ZQ0K
KyAgd2hlbiB0aGUgImhsdCIgaW5zdHJ1Y3Rpb24gaXMgZXhlY3V0ZWQuIFRo
aXMgaXMgZGlzYWJsZWQgYXQNCisgIHBvd2VyIHVwIGFuZCBtYW55IEJJT1Nz
IGxlYXZlIGl0IHRoYXQgd2F5LiBZb3UgcHJvYmFibHkgd2FudCBpdA0KKyAg
ZW5hYmxlZCBzaW5jZSBpdCBkcmFtYXRpY2FsbHkgcmVkdWNlcyB0aGUgb3Bl
cmF0aW5nIHRlbXBlcmF0dXJlDQorICBvZiB0aGUgcHJvY2Vzc29yLiBJbiBh
IGZldyByYXJlIGNhc2VzIHRoZXJlIG1heSBiZSBwcm9ibGVtcw0KKyAgd2l0
aCBzb21lIGJ1cyBtYXN0ZXIgRE1BIGNhcmRzIGlmIHRoaXMgaXMgZW5hYmxl
ZC4NCisNCitObyBJL08gcmVjb3ZlcnkgZGVsYXlzDQorQ09ORklHX0NZUklY
X0ZBU1RfSU8NCisgIEhpc3RvcmljYWxseSBwcm9ncmFtbWVycyB1c2VkICJq
bXAgJCsyIiBpbnN0cnVjdGlvbnMgdG8gY3JlYXRlDQorICBkZWxheXMgYmV0
d2VlbiBJL08gaW5zdHJ1Y3Rpb25zLiBUaGUgYnJhbmNoIHByZWRpY3Rpb24g
b2YgNXg4Ng0KKyAgYW5kIGhpZ2hlciBwcm9jZXNzb3JzIHJlbmRlcnMgdGhp
cyBpbmVmZmVjdGl2ZSBhbmQgc28gYSBzZWxlY3RhYmxlDQorICBkZWxheSBp
cyBpbXBsZW1lbnRlZCBmb3IgSS9PIGluc3RydWN0aW9ucyBpbiB0aGUgcHJv
Y2Vzc29yLiBMaW51eA0KKyAgdXNlcyBkdW1teSBJL08gaW5zdHJ1Y3Rpb25z
IHdoZXJlIG5lY2Vzc2FyeSByYXRoZXIgdGhhbiBqdW1wcw0KKyAgYW5kIHNv
IHRoZSBleHRyYSBwcm9jZXNzb3IgaW1wb3NlZCBkZWxheSBzaG91bGQgbm90
IGJlIG5lY2Vzc2FyeS4NCisgIEVuYWJsaW5nIHRoaXMgb3B0aW9uIHJlbW92
ZXMgdGhpcyBkZWxheS4NCisNCis1eDg2IHBlcmZvcm1hbmNlIGZlYXR1cmVz
DQorQ09ORklHX0NZUklYXzVYODYNCisgIFRoZSBDeXJpeCA1eDg2IGhhcyBz
ZXZlcmFsIHBlcmZvcm1hbmNlIGZlYXR1cmUgd2hpY2ggYXJlIGVuYWJsZWQN
CisgIHVzaW5nIG9uLWNoaXAgcmVnaXN0ZXJzLiBUaGlzIGNvZGUgYXR0ZW1w
dHMgdG8gZW5zdXJlIHRoYXQgdGhlDQorICB1c2VmdWwgZmVhdHVyZXMgYXJl
IHNldCB0byBzdWl0IExpbnV4LiBSZWFkIERvY3VtZW50YXRpb24vQ3lyaXgN
CisgIGJlZm9yZSBlbmFibGluZyB0aGlzLg0KKyAgICBXQVJOSU5HOiBJZiB0
aGlzIGlzIGVuYWJsZWQgeW91IG1heSBmaW5kIHRoYXQgdGhlIG9ubHkgd2F5
IHRvDQorICByZWJvb3QgaXMgdG8gcG93ZXIgY3ljbGUgdGhlIG1hY2hpbmUu
IEV2ZW4gYSBoYXJkIHJlYm9vdCBzZWVtcw0KKyAgdG8gZmFpbCBvbiBzb21l
IHN5c3RlbXMuDQorDQorNng4NiBwZXJmb3JtYW5jZSBmZWF0dXJlcw0KK0NP
TkZJR19DWVJJWF82WDg2DQorICBUaGUgQ3lyaXggNng4NiBoYXMgc2V2ZXJh
bCBwZXJmb3JtYW5jZSBmZWF0dXJlIHdoaWNoIGFyZSBlbmFibGVkDQorICB1
c2luZyBvbi1jaGlwIHJlZ2lzdGVycy4gTW9zdCBhcmUgbm9ybWFsbHkgZW5h
YmxlZCBieSB0aGUgQklPUw0KKyAgaG93ZXZlciB0aGlzIGNvZGUgZW5zdXJl
cyB0aGF0IGFsbCB0aGUgdXNlZnVsIG9uZXMgYXJlIHNldCB0bw0KKyAgc3Vp
dCBMaW51eC4gUmVhZCBEb2N1bWVudGF0aW9uL0N5cml4IGJlZm9yZSBlbmFi
bGluZyB0aGlzLg0KKw0KK0F2b2lkIHVubmVjZXNzYXJ5IGxvY2tlZCBjeWNs
ZXMNCitDT05GSUdfQ1lSSVhfNlg4Nl9OT0xPQ0sNCisgIEVuYWJsaW5nIHRo
aXMgb3B0aW9uIGNhdXNlcyB0aGUgNng4NiBub3QgdG8gdXNlIGxvY2tlZCBi
dXMgY3ljbGVzDQorICBleGNlcHQgZm9yIHBhZ2UgdGFibGUgYWNjZXNzIGFu
ZCBpbnRlcnJ1cHQgYWNrbm93bGVkZ2UgY3ljbGVzLg0KKyAgVGhpcyBhbGxv
d3MgdGhlIGRhdGEgdXNlZCBieSBkZXNjcmlwdG9yIHRhYmxlcywgeGNoZyBp
bnN0cnVjdGlvbnMNCisgIGFuZCBpbnN0cnVjdGlvbnMgcHJlY2VlZGVkIGJ5
IHRoZSBMT0NLIHByZWZpeCB0byBiZSBjYWNoZWQgbGVhZGluZw0KKyAgdG8g
aW1wcm92ZWQgcGVyZm9ybWFuY2UuIEVuYWJsaW5nIHRoaXMgb3B0aW9uIGhh
cyBubyBlZmZlY3QgaWYNCisgIGFuIFNNUCBrZXJuZWwgaXMgYmVpbmcgYnVp
bHQgLSBTTVAgcmVxdWlyZXMgbG9ja2VkIGN5Y2xlcyB0bw0KKyAgZ3VhcmFu
dGVlIHByb2Nlc3NvciBzeW5jaHJvbml6YXRpb24uDQorICBUaGUgTk9MT0NL
IGZlYXR1cmUgYWxzbyBwcm92aWRlcyBhIHdheSB0byB3b3JrIGFyb3VuZCB0
aGUgQ29tYQ0KKyAgKGFrYSBIaWRkZW4tQ0xJKSBidWcgb2YgdGhlIDZ4ODYu
IElmIE5PTE9DSyBpcyBub3Qgc2VsZWN0ZWQsIGFub3RoZXINCisgIHdvcmth
cm91bmQgKHNlcmlhbGl6ZSBYQ0hHKSBpcyBlbmFibGVkLg0KKw0KK0FsbG9j
YXRlIEwxIGNhY2hlIGxpbmVzIG9uIHdyaXRlIG1pc3Nlcw0KK0NPTkZJR19D
WVJJWF82WDg2X1dUQUxMT0MNCisgIElmIHRoaXMgaXMgZW5hYmxlZCBMMSBj
YWNoZSB3cml0ZSBtaXNzZXMgd2lsbCBjYXVzZSBhIGNhY2hlIGxpbmUNCisg
IHRvIGJlIGFsbG9jYXRlZC4gVGhpcyBtYXkgcmVzdWx0IGluIGluY3JlYXNl
ZCBwZXJmb3JtYW5jZS4gT24gdGhlDQorICBvdGhlciBoYW5kIGl0IG1heSBj
YXVzZSBleGNlc3NpdmUgdHJhc2hpbmcgb2YgdGhlIEwxIGNhY2hlIHdoZW4N
CisgIGNvcHlpbmcgb3IgemVyb2luZyBwYWdlcy4NCisNCitCcmFuY2ggVGFy
Z2V0IEJ1ZmZlciBmZWF0dXJlcw0KK0NPTkZJR19DWVJJWF82WDg2X0JUQg0K
KyAgVGhlIEN5cml4IDZ4ODYgaGFzIGJyYW5jaCBwcmVkaWN0aW9uIGxvZ2lj
Lg0KKyAgRW5hYmxpbmcgdGhpcyBvcHRpb24gcmVzZXRzIEJUQiBjb25maWd1
cmF0aW9uIHRvIHJlYXNvbmFibGUgdmFsdWVzLg0KKw0KK0JUQiByaXNreSBm
ZWF0dXJlcw0KK0NPTkZJR19DWVJJWF82WDg2X0JUQl9SSVNLWQ0KKyAgU2V0
cyBCaXQgNCBvZiBCVEIgcmVnaXN0ZXIgNS4gVGhpcyByZXN1bHRzIGluIGJl
dHRlciBwZXJmb3JtYW5jZQ0KKyAgKGNvbnRleHQgc3dpdGNoaW5nKSBidXQg
c29tZXRpbWVzIGNhdXNlcyBwcm9ibGVtcywgZS5nLiB3aGVuDQorICBydW5u
aW5nIFguDQorDQorVmFyaWFibGUgc2l6ZWQgcGFnaW5nIG1lY2hhbmlzbSAo
VlNQTSkNCitDT05GSUdfQ1lSSVhfNlg4Nl9WU1BNDQorICBWYXJpYWJsZSBz
aXplZCBwYWdpbmcgbWVjaGFuaXNtIChWU1BNKSBpcyBhIGZlYXR1cmUgb2Yg
dGhlIEN5cml4DQorICA2eDg2IGZhbWlseSBvZiBwcm9jZXNzb3JzIHRoYXQg
YWxsb3dzIGxhcmdlIHJlZ2lvbnMgb2YgbWVtb3J5DQorICB0byBiZSBtYXBw
ZWQgaW4gb25lIGdvLCBzaWduaWZpY2FudGx5IHJlZHVjaW5nIHRoZSBhbW91
bnQgb2Ygd29yaw0KKyAgdGhlIE1NVSBoYXMgdG8gZG8gY29tcGFyZWQgd2l0
aCB0cmFkaXRpb25hbCBwYWdpbmcuIEhvd2V2ZXIgVlNQTQ0KKyAgaXMga25v
d24gdG8gYmUgYnVnZ3kgaW4gbWFueSA2eDg2IGNoaXAgcmV2aXNpb25zLiBQ
bGVhc2UgcmVhZA0KKyAgRG9jdW1lbnRhdGlvbi9DeXJpeCBiZWZvcmUgZW5h
YmxpbmcgdGhpcy4NCisgICAgV0FSTklORzogSWYgdGhpcyBpcyBlbmFibGVk
IHlvdSBtYXkgZmluZCB0aGF0IHRoZSBvbmx5IHdheSB0bw0KKyAgcmVib290
IGlzIHRvIHBvd2VyIGN5Y2xlIHRoZSBtYWNoaW5lLiBFdmVuIGEgaGFyZCBy
ZWJvb3Qgc2VlbXMNCisgIHRvIGZhaWwgb24gc29tZSBzeXN0ZW1zLg0KKw0K
K1ZTUE0gTm8gdHJhZGl0aW9uYWwgcGFnZXMNCitDT05GSUdfQ1lSSVhfNlg4
Nl9WU1BNX05PVFJBRFBBR0UNCisgIFdoZW4geW91IGVuYWJsZSBWU1BNLCBu
b3JtYWxseSB0cmFkaXRpb25hbCBwYWdlIHRhYmxlIGVudHJpZXMgYXJlDQor
ICBjcmVhdGVkIChidXQgbm90IHVzZWQgYnkgdGhlIDZ4ODYpLiBUaGVzZSBQ
VEVzIGVuYWJsZSB0aGUga2VybmVsIA0KKyAgdG8gdW5zZXQgVlNQTSAob24g
MXJldjcgb3IgYmV0dGVyKSBiZWZvcmUgcmVib290aW5nLCB0aHVzIGVuYWJs
aW5nIA0KKyAgb3RoZXIgUHJvdGVjdGVkIE1vZGUgT1NlcyB0byBiZSB3YXJt
IGJvb3RlZC4NCisgIEVuYWJsaW5nIHRoaXMgb3B0aW9uIGRpc2FibGVzIHRo
ZSBjcmVhdGlvbiBvZiB0cmFkaXRpb25hbCBwYWdlIA0KKyAgdGFibGUgZW50
cmllcyBhbmQgdGh1cyB1bnNldHRpbmcgb2YgVlNQTSBvbiAod2FybSkgcmVi
b290Lg0KKw0KIENvbXBpbGUgdGhlIGtlcm5lbCBpbnRvIHRoZSBFTEYgb2Jq
ZWN0IGZvcm1hdCANCiBDT05GSUdfRUxGX0tFUk5FTA0KICAgRUxGIChFeGVj
dXRhYmxlIGFuZCBMaW5rYWJsZSBGb3JtYXQpIGlzIGEgZm9ybWF0IGZvciBs
aWJyYXJpZXMgYW5kDQpAQCAtNDIwNyw3ICs0NTc0LDcgQEANCiAjIExvY2Fs
V29yZHM6ICBtZ2V0dHkgc2VuZGZheCBnZXJ0IGdyZWVuaWUgbXVjIGxvd2xl
dmVsIExhc2VybWF0ZSBMYW5NYW5hZ2VyIGlvDQogIyBMb2NhbFdvcmRzOiAg
T09QU2VzIHRyYWNrYmFsbCBiaW5naGFtdG9uIG1vYmlsZWlwIG5jciBJT01B
UFBFRCBzZXR0YWdzIG5zIHNlcg0KICMgTG9jYWxXb3JkczogIHNldHN5bmMg
TkVHTyBNUEFSSVRZIGF1dG90dW5pbmcgcHJlZmV0Y2ggUElJWCBjZHdyaXRl
IHV0aWxzIHJjDQotIyBMb2NhbFdvcmRzOiAgUENXQVRDSERPRyBiZXJrcHJv
ZCBiaXRnYXRlIEJvbGR0IGJvbGR0IHVjc2IgamYga3lvdG8ganAgZXVjIG50
dA0KKyMgTG9jYWxXb3JkczogIFBDV0FUQ0hET0cgYmVya3Byb2QgYml0Z2F0
ZSBDeXJpeCBCb2xkdCBib2xkdCB1Y3NiIGpmIGt5b3RvIGpwIGV1YyBudHQN
CiAjIExvY2FsV29yZHM6ICBUZXRzdXlhc3UgWUFNQURBIHRldHN1IGNhdWNo
eSBuc2xhYiBuZXZvZCBwZXJtIHN1IGRvYyBrYWYga2hlb3BzDQogIyBMb2Nh
bFdvcmRzOiAgdHJhZHVjIEJvdXJnaW4gZGJvdXJnaW4gd3NjIGhlbHB0ZXh0
IG1lbnVjb25maWcga2ZpbGwgUkVBRE1FcyBEUw0KICMgTG9jYWxXb3Jkczog
IEhPV1RPcyBmaXJld2FsbHMgU1lOIFJTVCBRTUFHSUMgWk1BR0lDIGlwYXV0
b2Z3IG5ldGlzIHJseW5jaCBzeXINCi0tLSAvZGV2L251bGwJTW9uIEF1ZyAy
NiAwMjoyMToxNyAxOTk2DQorKysgbGludXgtMi4wLjMzLnBhdGNoZWQvRG9j
dW1lbnRhdGlvbi9DeXJpeAlGcmkgSmFuIDIzIDEzOjE0OjQ1IDE5OTgNCkBA
IC0wLDAgKzEsMjI3IEBADQorICAgICAgICAgICAgICAgICAgICAgICAgQ3ly
aXggUHJvY2Vzc29yIFN1cHBvcnQNCisgICAgICAgICAgICAgICAgICAgICAg
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK1Byb2Nlc3NvciBSZWNv
Z25pdGlvbg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0N5cml4IHBy
b2Nlc3NvcnMgcHJpb3IgdG8gdGhlIE0yIHBvd2VyIHVwIGluIGEgZGVmYXVs
dCBtb2RlIHdoaWNoDQoraXMgZGVzaWduZWQgdG8gYXZvaWQgY29tcGF0aWJp
bGl0eSBwcm9ibGVtcyB3aXRoIHNvZnR3YXJlIHRoYXQNCittYWtlcyBhc3N1
bXB0aW9ucyBhYm91dCBwcm9jZXNzb3IgY2FwYWJpbGl0aWVzIGJhc2VkIHNv
bGVseSBvbg0KK3RoZSBhcHBhcmVudCBmYW1pbHkgb2YgcHJvY2Vzc29yLiBV
bmxlc3Mgc3BlY2lhbCBoYW5kbGluZyBpcw0KK3Byb3ZpZGVkIEN5cml4IGNo
aXBzIHdpbGwgYmUgaWRlbnRpZmllZCBhcyBzb21lIHVua25vd24gbW9kZWwN
CitvZiA0ODYuDQorDQorICBUaGUgQ3lyaXggcHJvY2Vzc29yIHJlY29nbml0
aW9uIGtlcm5lbCBidWlsZCBvcHRpb24gY29tcGlsZXMNCitpbiBjb2RlIHRo
YXQgZW5hYmxlcyB0aGUgQ1BVSUQgaW5zdHJ1Y3Rpb24gb24gQ3lyaXggcHJv
Y2Vzc29ycw0KK2FuZCB0aGF0IHVzZXMgdGhlIEN5cml4IHNwZWNpZmljIERF
VklEIGZlYXR1cmUgdG8gaWRlbnRpZnkgdGhlDQorcGFydGljdWxhciB0eXBl
IG9mIEN5cml4IGNoaXAgcHJlc2VudC4NCisNCisgIFRoZSBNMiBhbmQgbGF0
ZXIgcHJvY2Vzc29ycyBoYXZlIENQVUlEIGVuYWJsZWQgYnkgZGVmYXVsdA0K
K2hvd2V2ZXIgc3BlY2lhbCBoYW5kbGluZyBpcyBzdGlsbCByZXF1aXJlZCB0
byByZWFkIHRoZSBzcGVjaWZpYw0KK3Byb2Nlc3NvciB0eXBlIHVzaW5nIERF
VklEIHNpbmNlIHRoZSBDUFVJRCBpbmZvcm1hdGlvbiBnaXZlcw0KK2ZhbWls
eSA2LCBtb2RlbCAwIC0gaS5lLiBhbiBBIHN0ZXAgUFByby4NCisNCisgIFRo
ZSBjb21iaW5hdGlvbiBvZiBDUFVJRCBhbmQgREVWSUQgYWxsb3dzIGFsbCBj
dXJyZW50IEN5cml4DQorcHJvY2Vzc29ycyB0byBiZSByZWNvZ25pc2VkIGFu
ZCBsaXN0ZWQgY29ycmVjdGx5IGluIC9wcm9jL2NwdWluZm8uDQorVGhpcyBp
bmNsdWRlcyBDeDQ4NiwgNXg4NiwgNng4NiwgR3g4NiAoYWthIE1lZGlhR3gp
IGFuZCBNMi4NCisNCisgIFByb2Nlc3NvciByZWNvZ25pdGlvbiBpcyByZXF1
aXJlZCBmb3IgYWxsIG90aGVyIEN5cml4IHNwZWNpZmljDQorb3B0aW9ucy4N
CisNCisNCitTdXNwZW5kIG9uIEhhbHQgUG93ZXIgU2F2aW5nDQorLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK1RoZSBzdXNwZW5kIG9uIGhh
bHQgcG93ZXIgc2F2aW5nIGZlYXR1cmUgYWxsb3dzIHRoZSBwcm9jZXNzb3Ig
dG8NCitlbnRlciBhIGxvdyBwb3dlciBtb2RlIHdoZW4gdGhlICJobHQiIGlu
c3RydWN0aW9uIGlzIGV4ZWN1dGVkLiBUaGlzDQorcmVzdWx0cyBpbiBkcmFt
YXRpY2FsbHkgcmVkdWNlZCBvcGVyYXRpbmcgdGVtcGVyYXR1cmVzIGlmIHlv
dSBkbw0KK25vdCBzcGVuZCBsb25nIHBlcmlvZHMgb2YgdGltZSBydW5uaW5n
IHByb2Nlc3NvciBpbnRlbnNpdmUgdGFza3MuDQorQ3lyaXggcHJvY2Vzc29y
cyBhbGxvdyB0aGlzIGZlYXR1cmUgdG8gYmUgZW5hYmxlZCBhbiBkaXNhYmxl
ZA0KK3Rocm91Z2ggdGhlaXIgY29uZmlndXJhdGlvbiByZWdpc3RlcnMuIFRo
ZSBkZWZhdWx0IHN0YXRlIG9uIHJlc2V0DQoraXMgZGlzYWJsZWQgYW5kIG1h
bnkgKG1vc3Q/KSBCSU9TcyBsZWF2ZSBpdCBkaXNhYmxlZCBoZW5jZSBhDQor
a2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIHByb3ZpZGVkIHRoYXQg
YWRkcyBjb2RlIHRvIGV4cGxpY2l0bHkNCitlbmFibGVkIHN1c3BlbmQgb24g
aGFsdCB3aGVuIExpbnV4IGJvb3RzLg0KKw0KKyAgSG93ZXZlciB0aGVyZSBh
cHBlYXIgdG8gYmUgYSBmZXcgcmFyZSBjYXNlcyBpbiB3aGljaCB0aGUNCitj
b21iaW5hdGlvbiBvZiBzdXNwZW5kIG9uIGhhbHQgYW5kIHNvbWUgYnVzIG1h
c3RlciBETUEgY2FyZHMgY2FuDQorY2F1c2UgdGhlIHN5c3RlbSB0byBsb2Nr
IHVwLiBJZiB0aGlzIGFwcGVhcnMgdG8gaGFwcGVuIHlvdSBtYXkNCituZWVk
IHRvIGxlYXZlIHN1c3BlbmQgb24gaGFsdCBpbiBpdHMgZGVmYXVsdCBzdGF0
ZS4gKE5vdGUgdGhhdA0KK2FuIG9wdGlvbiB0byBfZGlzYWJsZV8gc3VzcGVu
ZCBvbiBoYWx0IGlzIG5vdCBwcm92aWRlZC4gSWYgeW91cg0KK0JJT1MgZW5h
YmxlcyBpdCB5b3UgaGF2ZSB0byBsaXZlIHdpdGggaXQpDQorDQorDQorNXg4
NiBQZXJmb3JtYW5jZSBGZWF0dXJlcw0KKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCisNCitUaGUgNXg4NiBjb250YWlucyBhIHBlcmZvcm1hbmNlIGNv
bnRyb2wgcmVnaXN0ZXIgdGhhdCBhbGxvd3MNCitzZXZlcmFsIHBlcmZvcm1h
bmNlIGVuaGFuY2luZyBmZWF0dXJlcyB0byBiZSB0dXJuZWQgb24uIFVuZm9y
dHVuYXRlbHkNCittYW55IG9mIHRoZXNlIGZlYXR1cmVzIGRvIG5vdCBhcHBl
YXIgdG8gd29yayBjb3JyZWN0bHkuIFRoZSA1eDg2DQorcGVyZm9ybWFuY2Ug
ZmVhdHVyZXMga2VybmVsIGJ1aWxkIG9wdGlvbiB3aWxsIGF0dGVtcHQgdG8g
c2V0DQordGhlIHBlcmZvcm1hbmNlIGNvbnRyb2wgcmVnaXN0ZXIgYXBwcm9w
cmlhdGVseSBidXQgaXQgaXMNCitpbXBvc3NpYmxlIHRvIGd1YXJhbnRlZSB0
aGF0IGV2ZW4gdGhlc2UgY29uc2VydmF0aXZlIHNldHRpbmdzDQord2lsbCB3
b3JrIG9uIGFsbCBjaGlwcy4NCisNCisgIFdBUk5JTkc6IElmIHRoaXMgaXMg
ZW5hYmxlZCB5b3UgbWF5IGZpbmQgdGhhdCB0aGUgb25seSB3YXkgdG8NCity
ZWJvb3QgaXMgdG8gcG93ZXIgY3ljbGUgdGhlIG1hY2hpbmUuIEV2ZW4gYSBo
YXJkIHJlYm9vdCBzZWVtcw0KK3RvIGZhaWwgb24gc29tZSBzeXN0ZW1zLg0K
Kw0KKw0KKzZ4ODYgUGVyZm9ybWFuY2UgRmVhdHVyZXMNCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQorDQorTGlrZSB0aGUgNXg4NiB0aGUgNng4NiBo
YXMgc2V2ZXJhbCBDeXJpeCBzcGVjaWZpYyBwZXJmb3JtYW5jZQ0KK2ZlYXR1
cmVzLiBOb3JtYWxseSBhIDZ4ODYgYXdhcmUgQklPUyB3aWxsIHNldCB0aGVz
ZSB0byByZWFzb25hYmxlLA0KK2lmIG5vdCBmdWxseSBvcHRpbWFsLCBzZXR0
aW5ncy4gVGhlIDZ4ODYgcGVyZm9ybWFuY2UgZmVhdHVyZXMNCitrZXJuZWwg
YnVpbGQgb3B0aW9uIG1vc3RseSBqdXN0IGZpbmUgdHVuZXMgdGhlbS4NCisN
CisNCis2eDg2IEJyYW5jaCBQcmVkaWN0aW9uDQorLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KKw0KK1RoZSA2eDg2IHVzZXMgc3BlY3VsYXRpdmUgZXhlY3V0
aW9uIGNvdXBsZWQgd2l0aCBzZXZlcmFsIGxldmVscw0KK29mIGJyYW5jaCBw
cmVkaWN0aW9uIHRvIG1heGltaXNlIHByb2Nlc3Npbmcgc3BlZWQuIFdoaWxl
IHRoZQ0KK2RlZmF1bHQgcG93ZXIgdXAgc3RhdGUgaXMgcmVhc29uYWJsZSB0
aGUgYnJhbmNoIHByZWRpY3Rpb24gbG9naWMNCitpcyBjb25maWd1cmFibGUg
YW5kIHRoZXJlIG1heSBiZSBzb21lIGJlbmVmaXQgaW4gZmluZSB0dW5pbmcg
aXQuDQorDQorICBVbmZvcnR1bmF0ZWx5IEN5cml4IG9mZmVyIG5vIGRvY3Vt
ZW50YXRpb24gb24gaG93IHRvIGNvbmZpZ3VyZQ0KK2JyYW5jaCBwcmVkaWN0
aW9uIGFuZCBJQk0gaGF2ZSBvbmx5IHBhcnRpYWwgZG9jdW1lbnRhdGlvbiBh
dmFpbGFibGUuDQorRnVydGhlciBkZXRhaWwgYW5kIHNwZWN1bGF0aW9uIGlz
IGF2YWlsYWJsZSBmcm9tIHRoZSA2eDg2b3B0IHBhY2thZ2UNCitieSBNaWth
ZWwgSm9oYW5zc29uIDxNaWthZWwuSm9oYW5zc29uQGhlbHNpbmtpLmZpPi4N
CisNCisgIFRoZSBpbml0aWFsIHBvd2VyIHVwIHN0YXRlIG9mIHRoZSA2eDg2
IGNvbmZpZ3VyZXMgdGhlIGJyYW5jaA0KK3ByZWRpY3Rpb24gbG9naWMgdG8g
aGFuZGxlIHNob3J0IGJyYW5jaGVzLiBUaGUgNng4NiBicmFuY2ggdGFyZ2V0
DQorYnVmZmVyIGZlYXR1cmVzIGtlcm5lbCBidWlsZCBvcHRpb24gZW5hYmxl
cyBjb2RlIHRoYXQgc2V0cyB0aGUNCitCVEIgY29uZmlndXJhdGlvbiB0byBy
ZWFzb25hYmxlIHZhbHVlcywgaWYgQklPUyBvciBwb3dlciBvbiBzdGF0ZQ0K
K2FyZSBub3Qgc2F0aXNmYWN0b3J5Lg0KK1RoZXJlIGlzIGFsc28gYSByaXNr
eSBvcHRpb24sIHdoaWNoIHNldHMgYW4gYWRkaXRpb25hbCBCVEIgY29uZmln
DQorYml0LiBJdCdzIHJpc2t5LCBiZWNhdXNlIGl0IGNhbiBjYXVzZSBzeXN0
ZW0gaGFuZ3MsIGVzcC4gd2hlbg0KK3J1bm5pbmcgWCwgYnV0IHlvdSBnYWlu
IHNvbWUgc3BlZWQgKGNvbnRleHQgc3dpdGNoaW5nKS4NCisNCisNCis2eDg2
IFZhcmlhYmxlIFNpemVkIFBhZ2luZyBNZWNoYW5pc20NCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitUaGUgdmFyaWFibGUg
c2l6ZWQgcGFnaW5nIG1lY2hhbmlzbSAoVlNQTSkgaXMgYSBmZWF0dXJlIG9m
IHRoZSBDeXJpeA0KKzZ4ODYgZmFtaWx5IG9mIHByb2Nlc3NvcnMgdGhhdCBh
bGxvd3MgbGFyZ2UgcmVnaW9ucyBvZiBtZW1vcnkNCit0byBiZSBtYXBwZWQg
dXNpbmcgYSBzaW5nbGUgTU1VIGVudHJ5IHJhdGhlciB0aGFuIG1hbnkgaW5k
aXZpZHVhbA0KK3BhZ2Ugc2l6ZWQgZW50cmllcy4gVGhpcyBzaWduaWZpY2Fu
dGx5IHJlZHVjZXMgdGhlIG92ZXJoZWFkIGluDQorYWNjZXNzaW5nIHN1Y2gg
cmVnaW9ucy4gSXQgaXMgYWxzbyBpZGVhbGx5IHN1aXRlZCB0byB1c2UgZm9y
IHRoZQ0KK2xpbmVhciBtYXBwaW5nIG9mIHBoeXNpY2FsIG1lbW9yeSB0byBr
ZXJuZWwgbWVtb3J5IHVzZWQgYnkgTGludXguDQorDQorICBUaGUgQ3lyaXgg
ZG9jdW1lbmF0aW9uIG9mZmVycyBvbmx5IGEgYnJpZWYgcGFyYWdyYXBoIG9m
IGV4cGxhbmF0aW9uLg0KK1VuZm9ydHVuYXRlbHkgdGhlIG9ic2VydmVkIGJl
aGF2aW91ciBvZiBWU1BNIHN1Z2dlc3RzIHRoYXQgZXZlbg0KK3RoaXMgbGl0
dGxlIGluZm9ybWF0aW9uIGlzIG5vdCBlbnRpcmVseSBjb3JyZWN0LiBXb3Jz
ZSBzdGlsbCwgbm8gb25lDQorYXQgQ3lyaXggaXMgYWJsZSB0byBhbnN3ZXIg
cXVlc3Rpb25zIGNvbmNlcm5pbmcgVlNQTS4gR2l2ZW4gdGhhdA0KK2V2ZXJ5
IHJldmlzaW9uIG9mIDZ4ODYgaGFzICpkaWZmZXJlbnQqIFZTUE0gYnVncyB0
aGlzIGlzIG5vdCBlbnRpcmVseQ0KK3N1cnByaXNpbmchIFdvcmsgYXJvdW5k
cyBhcmUgaW4gcGxhY2UgZm9yIHRoZSBrbm93biBidWdzIGluIHN0ZXAgMSwN
CityZXZpc2lvbnMgNCwgNSBhbmQgNiBjaGlwcy4gUmV2aXNpb24gNyBpcyBh
bHNvIGJlbGlldmVkIHRvIHdvcmsuDQorDQorICBXQVJOSU5HOiBUaGVyZSBh
cHBlYXJzIHRvIGJlIG5vIHdheSB0byBkaXNhYmxlIGEgVlNQTSBlbnRyeSBv
bmNlDQoraXQgaGFzIGJlZW4gY3JlYXRlZCBzaG9ydCBvZiBhIGhhcmQgcmVz
ZXQgKHdoaWNoIG1heSBtZWFuIGEgcG93ZXINCitjeWNsZSkuIEZhaWx1cmUg
dG8gY2xlYXIgdGhlIFZTUE0gZW50cmllcyBtZWFucyB0aGF0IHByb2dyYW1z
IHRoYXQNCit1c2UgdmlydHVhbCBtZW1vcnkgbGF5b3V0cyBkaWZmZXJlbnQg
ZnJvbSBMaW51eCB3aWxsIGNyYXNoIHVuZXhwZWN0ZWRseQ0KK2FmdGVyIExp
bnV4IGhhcyBiZWVuIHJ1bm5pbmcuIFRoaXMgaW5jbHVkZXMgV2luZG93cyBO
VC85NSwgcHJvZ3JhbXMNCit0aGF0IHVzZSBET1MgZXh0ZW5kZXJzIGV0Yy4N
CisNCisgIEJ5IGV4cGVyaW1lbnQ6DQorDQorICAqIFZTUE0gcGFnZXMgbXVz
dCBiZSBwb3dlciBvZiB0d28gc2l6ZXMuIEEgc2luZ2xlIDI0TUIgcGFnZSBm
YWlscy4NCisgICAgVGhpcyBpcyBub3QgZW50aXJlbHkgc3VycHJpc2luZyBi
dXQgdGhlIGRvY3VtZW50YXRpb24gY291bGQgZ2l2ZQ0KKyAgICB0aGUgaW1w
cmVzc2lvbiB0aGF0IFZTUE0gc3VwcG9ydHMgYXJiaXRyYXJ5IHNpemVzLg0K
Kw0KKyAgKiBEb2N1bWVudGF0aW9uIHN1Z2dlc3RzIHRoZXJlIGFyZSA4IFZT
UE0gc2xvdHMgKDMgYml0IGluZGV4KSBidXQNCisgICAgdGVzdHMgc2hvdyB0
aGUgdXBwZXIgZm91ciBzbG90cyBtaXJyb3IgdGhlIGxvd2VyIGZvdXIuDQor
DQorICAqIFZTUE0gZW50cmllcyBhcHBlYXIgdG8gb3ZlcnJpZGUgdHJhZGl0
aW9uYWwgcGFnZSB0YWJsZSBlbnRyaWVzDQorICAgIHNvIHdlIG11c3Qgbm90
IG92ZXJsYXAgdGhlIHN0YXJ0IG9mIHRoZSB2bWFsbG9jIHJlZ2lvbi4NCisN
CisgIFRoZSBmb2xsb3dpbmcgb25seSBhcHBseSB0byA2eDg2IDEgcmV2IDYg
b3IgbG93ZXIsIDEgcmV2IDcgYW5kIHVwDQorZG8gTk9UIGhhdmUgdGhlc2Ug
cmVzdHJpY3Rpb25zLg0KKw0KKyAgKiBXaXRoIGEgMTZNQiBwYWdlIGZvbGxv
d2VkIGJ5IGFuIDhNQiBwYWdlIEkgYWx3YXlzIGdldCBhIHdyaXRlDQorICAg
IGZhdWx0IG9uIHRoZSBsYXN0IDRrIG9mIHRoZSA4TUIgcGFnZS4gV2l0aCA4
TUIgcGx1cyA0TUIgSSBjYW4ndA0KKyAgICBldmVuIGJvb3QuDQorICAgICAg
SWYgd2UgaGF2ZSBzdWNoIGEgbWVtb3J5IHNpemUgd2UgbWFwIHRoZSBmaXJz
dCBwb3dlciBvZiB0d28NCisgICAgd2l0aCBhIFZTUE0gZW50cnkgYW5kIHVz
ZSB0cmFkaXRpb25hbCBwYWdpbmcgZm9yIHRoZSByZXN0Lg0KKw0KKyAgKiBE
byBub3QgdHJ5IGFuZCBjcmVhdGUgYSBtYXBwaW5nIHdpdGggZGlydHkgYW5k
IGFjY2Vzc2VkIGZsYWdzDQorICAgIGNsZWFyIC0gYSBzdGVwIDEgcmV2IDUg
Y2hpcCB3aWxsIGNyYXNoLg0KKw0KKyAgKiBUaGUgdmFsaWQgYml0IGluIGEg
VlNQTSBlbnRyeSBpcyBub24tZnVuY3Rpb25hbC4gVGhlcmUgaXMgbm8gd2F5
DQorICAgIHRvIGludmFsaWRhdGUgYSBWU1BNIGVudHJ5IG9uY2UgaXQgaGFz
IGJlZW4gd3JpdHRlbiANCisNCisgICogQXR0ZW1wdGluZyB0byByZXBsYWNl
IGEgVlNQTSBlbnRyeSB3aXRoIG9uZSB0aGF0IG1hcHMgYSB6ZXJvDQorICAg
IHNpemVkIHJlZ2lvbiBmcm9tIDAgdG8gMCBjcmFzaGVzIHRoZSBDUFUuDQor
DQorDQorVGhlIDZ4ODYgQ29tYSAoYWthIEhpZGRlbi1DTEkpIGJ1Zw0KKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitUaGlzIGJ1
ZyBvbiA2eDg2IGFuZCA2eDg2TVggKE0yKSBDUFVzIGhhcyBiZWVuIGRldGVj
dGVkIGJ5IFNlcmd1ZWkgDQorU2h0eWxpb3YgYW5kIGZ1cnRoZXIgZXhhbWlu
ZWQgYnkgQWxleGFuZHIgS29ub3NldmljaCBhbmQgVXdlIFBvc3QuDQorV2l0
aCBhbiBlbmRsZXNzIGxvb3AgY29udGFpbmluZyBhIFhDSEcgYW5kIGEgTU9W
IGluc3RydWN0aW9uLCB0aGUgNng4Ng0KK2NhbiBiZSBsb2NrZWQuIEl0IGRv
ZXMgbm90IHNlZSBpbnRlcnJ1cHRzIGFueW1vcmUuIFRoaXMgaXMgY2F1c2Vk
IGJ5DQordGhlIHRoZSBwcm9jZXNzb3JzIGFiaWxpdHkgdG8gcGFyYWxsZWxp
emUgdGhlc2UgY29tbWFuZHMuIFRoZSBYQ0hHDQorY29tbWFuZCBob3dldmVy
IGhhcyBhbiBpbXBsaWNpdCBMT0NLIHByZWZpeC4gQXMgdGhlIE1PViBpcyBw
YXJhbGxlbCB0bw0KK3RoZSBYQ0hHIGFuZCB0aGUgYnJhbmNoIGlzIHByZWRp
Y3RlZCwgdGhlIHByb2Nlc3NvciBpcyBhbHdheXMgbG9ja2VkLg0KK05vIGlu
dGVycnVwdHMgY2FuIGJlIHNlcnZpY2VkIGFuZCB0aGUgc3lzdGVtIGlzIGxv
Y2tlZC4gTGlrZSB0aGUgUGVudGl1bSdzIA0KK0YwMEZDN0M4IGJ1ZywgYW55
IChub25wcml2aWxlZ2VkISkgdXNlciBjYW4gbG9jayB0aGUgc3lzdGVtLiAo
VGhpcw0KK2FmZmVjdHMgTlQsIFNDTywgRnJlZUJTRCBhcyB3ZWxsIGFzIExp
bnV4LikNCitGb3J0dW5hdGVseSwgdGhlcmUgYXJlIHdvcmthcm91bmRzLiBU
aGUgZWFzaWVzdCBpcyB0byBzZXQgdGhlIE5PTE9DSyBiaXQNCitpbiBDQ1Ix
IChCaXQgNCBpbiBjb25maWcgcmVnaXN0ZXIgMHhDMSkuIFRoZSBYQ0hHIGlu
c3RydWN0aW9uIHRoZW4gbm8gDQorbG9uZ2VyIGhhcyBhbiBpbXBsaWNpdCBM
T0NLIHByZWZpeCwgYW5kIHRoZSBwcm9ibGVtIGlzIG9idmlvdXNseSBzb2x2
ZWQuDQorQSBtaW5pbWFsIHBlcmZvcm1hbmNlIGluY3JlYXNlIHdpbGwgYWxz
byBvY2N1ci4gSSBkb24ndCBrbm93IG9mIGFueQ0KK3Byb2JsZW1zIGNhdXNl
ZCBieSB0aGF0LCBidXQgb24gQmFsc2EncyAoc2VlIGJlbG93KSBwYWdlcyB5
b3UgY2FuIHJlYWQsDQordGhhdCBzb21lIERPUzRHVyBwcm9ncmFtcyBoYXZl
IGRpZmZpY3VsdGllcyB3aXRoIE5PTE9DSy4gDQorQWNjb3JkaW5nIHRvIGhp
bSwgdGhlcmUncyBhIHNlY29uZCBwb3NzaWJpbGl0eS4gU29tZSB1bmRvY3Vt
ZW50ZWQgcmVnaXN0ZXJzDQorKDB4MzEsIDB4MzIsIDB4MzMsIDB4M0MpIGFs
bG93IHRoZSBzcGVjaWFsIHRyZWF0bWVudCBvZiBjZXJ0YWluIG9wY29kZXMu
IA0KK1RoaXMgd2F5IHdlIGNhbiBzZXJpYWxpemUgdGhlIFhDSEcgKDB4ODcp
IG9wY29kZS4gVGhpcyBpcyBkb25lLCBpZiB0aGUNCitOT0xPQ0sgZmVhdHVy
ZSBpcyBub3Qgc2VsZWN0ZWQgZHVyaW5nIGtlcm5lbCBjb25maWd1cmF0aW9u
Lg0KKw0KKw0KK1doYXQgbW9yZSBjb3VsZCBiZSBkb25lDQorLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCisNCisgIFRoZSA2eDg2IGFsbG93cyBBZGRyZXNz
IHJlZ2lvbnMgdG8gYmUgc2V0IHVwIGFuZCBlbi9kaXNhYmxpbmcgDQorY2Vy
dGFpbiBmZWF0dXJlcyBmb3IgdGhlc2UgcmVnaW9ucy4gSW4gb3JkZXIgdG8g
b3B0aW1pemUsIHdlIGNvdWxkIA0KK2FuYWx5c2UgdGhlIHNldHVwIGRvbmUg
KG9yIG5vdCBkb25lKSBieSB0aGUgQklPUyBhbmQgb3B0aW1pemUgaXQuDQor
DQorICAqIFNldHRpbmcgdXAgcmVnaW9ucyBmbyB0aGUgbWFpbiBtZW1vcnk6
IFJDRSwgV1dPLCBXTCg/KSwgV0cNCisNCisgICogU2V0dGluZyB1cCBWR0Eg
dGV4dCAoMHgwMDBhMDAwMCkgYW5kIGdyYXBoaWNzIG1lbW9yeSAoUENJOg0K
KyAgICBlLmcuIDB4ZTAwMDAwMDApIHRvIFJDRCwgV0cNCisNCisgICogU2V0
dGluZyB1cCBCSU9TIHJlZ2lvbnMgdG8gUkNEIG9yIFJDRSwgV1QNCisNCisg
ICogTm90IHRvdWNoaW5nIFNNTSBzcGFjZSAoQVJSMykNCisNCisgICogRGlz
YWJsaW5nIFdHIGZvciBNZW1vcnkgTWFwcGVkIElPDQorDQorKFJDRS9EID0g
UmVnaW9uIGNhY2hlIGVuYWJsZS9kaXNhYmxlLCBXV08gPSBXZWFrIFdyaXRl
IE9yZGVyaW5nLA0KK1dMID0gV2VhayBMb2NraW5nLCBXRyA9IFdyaXRlIEdh
dGhlcmluZywgV1QgPSBXcml0ZSBUaHJvdWdoLikNCisNCitIb3dldmVyLCB0
aGlzIHdvdWxkIGJlc3QgYmUgZG9uZSBieSBhIHVzZXJzcGFjZSBwcm9ncmFt
IChyb290KSBhbmQgbm90IGJ5IA0KK3RoZSBrZXJuZWwuDQorDQorDQorV2hl
cmUgdG8gZ2V0IGluZm9ybWF0aW9uDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQorDQorICBUaGVyZSBpcyBhIGRhdGFib29rIGluIFBERiBmb3JtYXQg
KDZYLURCT09LLlBERiksIHdoaWNoIGNhbiBiZSBkb3duLQ0KK2xvYWRlZCBm
cm9tIEN5cml4JyBXV1cgc2VydmVyLCB3aGljaCBjb250YWlucyBhIGRlc2Ny
aXB0aW9uIG9mIHRoZSANCitDb25maWd1cmF0aW9uIFJlZ2lzdGVycyBDQ1Iw
IC0gQ0NSNSwgdGhlIERldmljZSBJZGVudGlmaWNhdGlvbiBSZWdpc3RlcnMg
DQorRElSMCArIERJUjEgYW5kIHRoZSBBZGRyZXNzIFJlZ2lvbiBBUlJ4IGFu
ZCBSZWdpb24gQ29udHJvbA0KK1JDUnggcmVnaXN0ZXJzIGFuZCBhbiBpbmNv
bXBsZXRlIGRlc2NyaXB0aW9uIG9mIHRoZSBWU1BNIG1lY2hhbmlzbS4NCitN
b3JlIGFib3V0IENQVSBkZXRlY3Rpb24sIFZTUE0gYW5kIG1vcmUgdW5kb2N1
bWVudGVkIGZlYXR1cmVzIGNhbiBiZQ0KK2ZvdW5kIG9uIHRoZSBQZW50aXVt
IENvbXBpbGVyIEdyb3VwIHBhZ2VzIA0KKyhodHRwOi8vd3d3Lmdvb2YuY29t
L3BjZy9kb2Mvb3B0LWN5cml4Nng4Ni50eHQpDQorYW5kIHNvbWUgaW5mbyBv
biB1bmRvY3VtZW50ZWQgZmVhdHVyZXMgb24NCitodHRwOi8vZ3JhZmkuaWku
cHcuZWR1LnBsL2dibS94ODYvNng4NnJlZy5odG1sDQorDQorQW5vdGhlciBz
aXRlIGZvciBHTlUvTGludXggLSB1c2VycyB3aXRoIGEgQ3lyaXggQ1BVIGlz
DQoraHR0cDovL3d3dy50dXgub3JnL35iYWxzYS9saW51eC9jeXJpeA0KK21h
aW50YWluZWQgYnkgQS4gRC4gQmFsc2EuIFRoZXJlIGlzIGEgbG90IG9mIGlu
Zm9ybWF0aW9uIHRoZXJlIGFuZCBhbHNvIA0KK3NvbWUgIFBSIGluIGZhdm91
ciBvZiBDeXJpeC4NCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAodykgTWlrZSBKYWdkaXMgYW5kIEsuR2FybG9mZkBwaW5nLmRlDQorCQkJ
ICAgICAgVGhhbmtzIHRvIEFuZHJldyBELiBCYWxzYS4NCi0tLSBsaW51eC0y
LjAuMzMub3JpZy9hcmNoL2kzODYvY29uZmlnLmluCU1vbiBNYXkgMTMgMDY6
MTc6MjMgMTk5Ng0KKysrIGxpbnV4LTIuMC4zMy5wYXRjaGVkL2FyY2gvaTM4
Ni9jb25maWcuaW4JTW9uIEphbiAgNSAxODozNDowOCAxOTk4DQpAQCAtMzYs
MTMgKzM3LDQyIEBADQogaWYgWyAiJENPTkZJR19FWFBFUklNRU5UQUwiID0g
InkiIF07IHRoZW4NCiAgIHRyaXN0YXRlICdLZXJuZWwgc3VwcG9ydCBmb3Ig
SkFWQSBiaW5hcmllcycgQ09ORklHX0JJTkZNVF9KQVZBDQogZmkNCisNCiBi
b29sICdDb21waWxlIGtlcm5lbCBhcyBFTEYgLSBpZiB5b3VyIEdDQyBpcyBF
TEYtR0NDJyBDT05GSUdfS0VSTkVMX0VMRg0KIA0KLWNob2ljZSAnUHJvY2Vz
c29yIHR5cGUnIFwNCitjaG9pY2UgJ1Byb2Nlc3NvciBmYW1pbHknIFwNCiAJ
IjM4NgkJQ09ORklHX00zODYJXA0KIAkgNDg2CQlDT05GSUdfTTQ4NglcDQog
CSBQZW50aXVtCUNPTkZJR19NNTg2CVwNCiAJIFBQcm8JCUNPTkZJR19NNjg2
IiBQZW50aXVtDQorZW5kbWVudQ0KKw0KK21haW5tZW51X29wdGlvbiBuZXh0
X2NvbW1lbnQNCitjb21tZW50ICdQcm9jZXNzb3IgZmVhdHVyZXMnDQorDQor
Y29tbWVudCAnU29tZSBvciBhbGwgb2YgdGhlIGZvbGxvd2luZyBtYXkgY2F1
c2UgcHJvYmxlbXMnDQorY29tbWVudCAnd2l0aCBzb21lIGRyaXZlcnMgb3Ig
aGFyZHdhcmUuIFBsZWFzZSByZWFkIHRoZScNCitjb21tZW50ICdoZWxwIHRl
eHQgYW5kIERvY3VtZW50YXRpb24vQ3lyaXggYmVmb3JlIGVuYWJsaW5nJw0K
K2NvbW1lbnQgJ2FueSBvZiB0aGVzZSBvcHRpb25zLicNCitib29sICdDeXJp
eCBwcm9jZXNzb3IgcmVjb2duaXRpb24nIENPTkZJR19DWVJJWA0KK2lmIFsg
IiRDT05GSUdfQ1lSSVgiID0gInkiIF07IHRoZW4NCisgIGJvb2wgJ0VuYWJs
ZSBzdXNwZW5kIG9uIGhhbHQgcG93ZXIgc2F2aW5nJyBDT05GSUdfQ1lSSVhf
U1VTUF9ITFQNCisgIGJvb2wgJ05vIEkvTyByZWNvdmVyeSBkZWxheXMnIENP
TkZJR19DWVJJWF9GQVNUX0lPDQorICBib29sICc1eDg2IHBlcmZvcm1hbmNl
IGZlYXR1cmVzJyBDT05GSUdfQ1lSSVhfNVg4Ng0KKyAgYm9vbCAnNng4NiBw
ZXJmb3JtYW5jZSBmZWF0dXJlcycgQ09ORklHX0NZUklYXzZYODYNCisgIGlm
IFsgIiRDT05GSUdfQ1lSSVhfNlg4NiIgPSAieSIgXTsgdGhlbg0KKyAgICBi
b29sICcgICAgIEF2b2lkIHVubmVjZXNzYXJ5IGxvY2tlZCBjeWNsZXMnIENP
TkZJR19DWVJJWF82WDg2X05PTE9DSw0KKyAgICBib29sICcgICAgIEFsbG9j
YXRlIEwxIGNhY2hlIGxpbmVzIG9uIHdyaXRlIG1pc3NlcycgQ09ORklHX0NZ
UklYXzZYODZfV1RBTExPQw0KKyAgICBib29sICcgICAgIEJyYW5jaCBUYXJn
ZXQgQnVmZmVyIGZlYXR1cmVzJyBDT05GSUdfQ1lSSVhfNlg4Nl9CVEINCisg
ICAgaWYgWyAiJENPTkZJR19DWVJJWF82WDg2X0JUQiIgPSAieSIgXTsgdGhl
bg0KKyAgICAgIGJvb2wgJyAgICAgQlRCIHJpc2t5IGZlYXR1cmVzJyBDT05G
SUdfQ1lSSVhfNlg4Nl9CVEJfUklTS1kNCisgICAgZmkNCisgICAgYm9vbCAn
ICAgICBWYXJpYWJsZSBzaXplZCBwYWdpbmcgbWVjaGFuaXNtIChWU1BNKScg
Q09ORklHX0NZUklYXzZYODZfVlNQTQ0KKyAgICBpZiBbICIkQ09ORklHX0NZ
UklYXzZYODZfVlNQTSIgPSAieSIgXTsgdGhlbg0KKyAgICAgIGJvb2wgJyAg
ICAgVlNQTSBkaXNhYmxlIHRyYWRpdGlvbmFsIHBhZ2VzJyBDT05GSUdfQ1lS
SVhfNlg4Nl9WU1BNX05PVFJBRFBBR0UNCisgICAgZmkNCisgIGZpDQorZmkN
CiBlbmRtZW51DQogDQogc291cmNlIGRyaXZlcnMvYmxvY2svQ29uZmlnLmlu
DQotLS0gbGludXgtMi4wLjMzLm9yaWcvYXJjaC9pMzg2L2RlZmNvbmZpZwlN
b24gU2VwIDIyIDIyOjQ0OjAxIDE5OTcNCisrKyBsaW51eC0yLjAuMzMucGF0
Y2hlZC9hcmNoL2kzODYvZGVmY29uZmlnCU1vbiBKYW4gIDUgMTg6MzU6MDIg
MTk5OA0KQEAgLTI3LDggKzI3LDE5IEBADQogQ09ORklHX0tFUk5FTF9FTEY9
eQ0KICMgQ09ORklHX00zODYgaXMgbm90IHNldA0KICMgQ09ORklHX000ODYg
aXMgbm90IHNldA0KLUNPTkZJR19NNTg2PXkNCi0jIENPTkZJR19NNjg2IGlz
IG5vdCBzZXQNCisjIENPTkZJR19NNTg2IGlzIG5vdCBzZXQNCitDT05GSUdf
TTY4Nj15DQorQ09ORklHX0NZUklYPXkNCitDT05GSUdfQ1lSSVhfU1VTUF9I
TFQ9eQ0KKyMgQ09ORklHX0NZUklYX0ZBU1RfSU8gaXMgbm90IHNldA0KKyMg
Q09ORklHX0NZUklYXzVYODYgaXMgbm90IHNldA0KKyMgQ09ORklHX0NZUklY
XzZYODYgaXMgbm90IHNldA0KK0NPTkZJR19DWVJJWF82WDg2X05PTE9DSz15
DQorIyBDT05GSUdfQ1lSSVhfNlg4Nl9XVEFMTE9DIGlzIG5vdCBzZXQNCisj
IENPTkZJR19DWVJJWF82WDg2X0JUQiBpcyBub3Qgc2V0DQorIyBDT05GSUdf
Q1lSSVhfNlg4Nl9CVEJfUklTS1kgaXMgbm90IHNldA0KKyMgQ09ORklHX0NZ
UklYXzZYODZfVlNQTSBpcyBub3Qgc2V0DQorIyBDT05GSUdfQ1lSSVhfNlg4
Nl9WU1BNX05PVFJBRFBBR0UgaXMgbm90IHNldA0KIA0KICMNCiAjIEZsb3Bw
eSwgSURFLCBhbmQgb3RoZXIgYmxvY2sgZGV2aWNlcw0KLS0tIGxpbnV4LTIu
MC4zMy5vcmlnL2FyY2gvaTM4Ni9rZXJuZWwvaGVhZC5TCU1vbiBKYW4gIDUg
MTg6MjM6NTAgMTk5OA0KKysrIGxpbnV4LTIuMC4zMy5wYXRjaGVkL2FyY2gv
aTM4Ni9rZXJuZWwvaGVhZC5TCUZyaSBKYW4gMjMgMTg6MDU6NTkgMTk5OA0K
QEAgLTEwMywxMyArMTAzLDgwIEBADQogY2hlY2tDUFV0eXBlOg0KICNlbmRp
Zg0KIA0KKwltb3ZsICQtMSxTWU1CT0xfTkFNRShoYXZlX2NwdWlkKQkjICAt
MSBmb3Igbm8gQ1BVSUQgaW5pdGlhbGx5DQorDQogLyogY2hlY2sgaWYgaXQg
aXMgNDg2IG9yIDM4Ni4gKi8NCiAvKg0KICAqIFhYWCAtIHRoaXMgZG9lcyBh
IGxvdCBvZiB1bm5lY2Vzc2FyeSBzZXR1cC4gIEFsaWdubWVudCBjaGVja3Mg
ZG9uJ3QNCiAgKiBhcHBseSBhdCBvdXIgY3BsIG9mIDAgYW5kIHRoZSBzdGFj
ayBvdWdodCB0byBiZSBhbGlnbmVkIGFscmVhZHksIGFuZA0KICAqIHdlIGRv
bid0IG5lZWQgdG8gcHJlc2VydmUgZWZsYWdzLg0KICAqLw0KLQltb3ZsICQz
LCBTWU1CT0xfTkFNRSh4ODYpDQorCS8qDQorCSAqIEEgQ3lyaXggcHJlc2Vy
dmVzIGZsYWdzIGluIGNhc2VzIHdoZXJlIG90aGVyIENQVXMgY2hhbmdlDQor
CSAqIHRoZW0gaW4gdW5kZWZpbmVkIHdheXMuIFdlIG5lZWQgdG8ga25vdyB0
aGlzIHNpbmNlIHdlIG1heQ0KKwkgKiBuZWVkIHRvIGVuYWJsZSB0aGUgQ1BV
SUQgaW5zdHJ1Y3Rpb24gYXQgbGVhc3QuIChDeXJpeCBjaGlwcw0KKwkgKiBw
cmlvciB0byBNMiBoYXZlIENQVUlEIGRpc2FibGVkIGJ5IGRlZmF1bHQsIHRo
ZSBDeDQ4NnMNCisJICogZGlkbid0IGhhdmUgaXQgYXQgYWxsLikNCisJICov
DQorCXhvciAlYXgsJWF4DQorCXNhaGYNCisJbW92YiAkNSwlYXgNCisJbW92
YiAkMiwlYngNCisJZGl2ICVibA0KKwlsYWhmDQorCWNtcGIgJDIsJWFoDQor
CWpuZSBuY3lyaXgNCisNCisJLyoNCisJICogSXQgYmVoYXZlcyBsaWtlIGEg
Q3lyaXggc28gcHV0ICJDeXJpeCIgaW4gdGhlIHZlbmRvciBpZA0KKwkgKiBm
aWVsZC4gSXQgbWF5IGJlIG92ZXJ3cml0dGVuIGxhdGVyIHdpdGggdGhlIHJl
YWwgdGhpbmcNCisJICogaWYgQ1BVSUQgd29ya3MuDQorCSAqLw0KKwltb3Zs
ICQweDY5NzI3OTQzLFNZTUJPTF9OQU1FKHg4Nl92ZW5kb3JfaWQpCSMgbG93
IDQgY2hhcnMNCisJbW92bCAkMHgwMDAwMDA3OCxTWU1CT0xfTkFNRSh4ODZf
dmVuZG9yX2lkKSs0CSMgbmV4dCA0IGNoYXJzDQorDQorI2lmZGVmIENPTkZJ
R19DWVJJWA0KKwkvKg0KKwkgKiBOLkIuIFRoZSBwYXR0ZXJuIG9mIGFjY2Vz
c2VzIHRvIDB4MjIgYW5kIDB4MjMgaXMgKmltcG9ydGFudCoNCisJICogICAg
ICBzbyBkbyBub3QgdHJ5IGFuZCAib3B0aW1pc2UiIGl0ISBGb3IgdGhlIHNh
bWUgcmVhc29uIHdlDQorCSAqCWRvIGFsbCB0aGlzIHdpdGggaW50ZXJydXB0
cyBvZmYganVzdCB0byBiZSBzdXJlLg0KKwkgKi8NCisjZGVmaW5lIHNldEN4
ODYocmVnLCB2YWwpIFwNCisJbW92YiByZWcsJWF4OwlcDQorCW91dGIgJWF4
LCQweDIyOwlcDQorCW1vdmIgdmFsLCVheDsJXA0KKwlvdXRiICVheCwkMHgy
Mw0KKw0KKyNkZWZpbmUgZ2V0Q3g4NihyZWcpIFwNCisJbW92YiByZWcsJWF4
OwlcDQorCW91dGIgJWF4LCQweDIyOwlcDQorCWluYiAkMHgyMywlYXgNCisN
CisJY2xpDQorCWdldEN4ODYoJDB4YzMpCQkjIGdldCBDQ1IzDQorCW1vdmIg
JWF4LCVjeAkJIyBTYXZlIG9sZCB2YWx1ZQ0KKwltb3ZiICVheCwlYngNCisJ
YW5kYiAkMHgwZiwlYngJCSMgRW5hYmxlIGFsbCBjb25maWcgcmVnaXN0ZXJz
IChmb3IgQ0NSNCBhY2Nlc3MpDQorCW9yYiAkMHgxMCwlYngNCisJc2V0Q3g4
NigkMHhjMywlYngpDQorDQorI2lmZGVmIENPTkZJR19DWVJJWF9TVVNQX0hM
VA0KKwlnZXRDeDg2KCQweGMyKQkJIyBDQ1IyIHw9IFNVU1BfSExUDQorCW9y
YiAkOCwlYXgNCisJbW92YiAlYXgsJWJ4DQorCXNldEN4ODYoJDB4YzIsJWJ4
KQ0KKyNlbmRpZg0KKw0KKwlnZXRDeDg2KCQweGU4KQkJIyBDQ1I0IHw9IENQ
VUlEIHwgRFRFX0VODQorCW9yYiAkMHg5MCwlYXgNCisJbW92YiAlYXgsJWJ4
DQorCXNldEN4ODYoJDB4ZTgsJWJ4KQ0KKw0KKwlzZXRDeDg2KCQweGMzLCVj
eCkJIyBSZXN0b3JlIG9sZCBDQ1IzDQorCXN0aQ0KKyNlbmRpZiAvKiBDT05G
SUdfQ1lSSVggKi8NCisNCituY3lyaXg6CW1vdmwgJDMsIFNZTUJPTF9OQU1F
KHg4NikjIGF0IGxlYXN0IDM4Ng0KIAlwdXNoZmwJCQkjIHB1c2ggRUZMQUdT
DQogCXBvcGwgJWVheAkJIyBnZXQgRUZMQUdTDQogCW1vdmwgJWVheCwlZWN4
CQkjIHNhdmUgb3JpZ2luYWwgRUZMQUdTDQpAQCAtMTIxLDYgKzE4OCw3IEBA
DQogCXhvcmwgJWVjeCwlZWF4CQkjIGNoYW5nZSBpbiBmbGFncw0KIAlhbmRs
ICQweDQwMDAwLCVlYXgJIyBjaGVjayBpZiBBQyBiaXQgY2hhbmdlZA0KIAlq
ZSBpczM4Ng0KKw0KIAltb3ZsICQ0LFNZTUJPTF9OQU1FKHg4NikNCiAJbW92
bCAlZWN4LCVlYXgNCiAJeG9ybCAkMHgyMDAwMDAsJWVheAkjIGNoZWNrIElE
IGZsYWcNCkBAIC0xMjksMTEgKzE5NywyMiBAQA0KIAlwdXNoZmwJCQkjIDQ4
N1NYIHdlIGNhbid0IGNoYW5nZSBpdA0KIAlwb3BsICVlYXgNCiAJeG9ybCAl
ZWN4LCVlYXgNCi0JYW5kbCAkMHgyMDAwMDAsJWVheA0KLQlqZSBpczQ4Ng0K
LWlzbmV3OglwdXNobCAlZWN4CQkjIHJlc3RvcmUgb3JpZ2luYWwgRUZMQUdT
DQorCXB1c2hsICVlY3gJCSMgcmVzdG9yZSBvcmlnaW5hbCBFRkxBR1MNCiAJ
cG9wZmwNCi0JaW5jbCBTWU1CT0xfTkFNRShoYXZlX2NwdWlkKQkjIHdlIGhh
dmUgQ1BVSUQNCisJYW5kbCAkMHgyMDAwMDAsJWVheA0KKwlqZSBub2NwdWlk
DQorDQorCS8qIGdldCB2ZW5kb3IgaW5mbyAqLw0KKwl4b3JsICVlYXgsICVl
YXgJCQkjIGNhbGwgQ1BVSUQgd2l0aCAwIC0+IHJldHVybiB2ZW5kb3IgSUQN
CisJLmJ5dGUgMHgwZiwgMHhhMgkJIyBDUFVJRA0KKwltb3ZsICVlYXgsU1lN
Qk9MX05BTUUoaGF2ZV9jcHVpZCkJIyBzYXZlIENQVUlEIGxldmVsDQorCW1v
dmwgJWVieCxTWU1CT0xfTkFNRSh4ODZfdmVuZG9yX2lkKQkjIGxvIDQgY2hh
cnMNCisJbW92bCAlZWR4LFNZTUJPTF9OQU1FKHg4Nl92ZW5kb3JfaWQpKzQJ
IyBuZXh0IDQgY2hhcnMNCisJbW92bCAlZWN4LFNZTUJPTF9OQU1FKHg4Nl92
ZW5kb3JfaWQpKzgJIyBsYXN0IDQgY2hhcnMNCisNCisJY21wbCAkMCwlZWF4
CQkJIyBkbyB3ZSBoYXZlIHByb2Nlc3NvciBpbmZvIGFzIHdlbGw/DQorCWpl
IG5vY3B1aWQNCisNCiAJLyogZ2V0IHByb2Nlc3NvciB0eXBlICovDQogCW1v
dmwgJDEsICVlYXgJCSMgVXNlIHRoZSBDUFVJRCBpbnN0cnVjdGlvbiB0byAN
CiAJLmJ5dGUgMHgwZiwgMHhhMgkjIGNoZWNrIHRoZSBwcm9jZXNzb3IgdHlw
ZQ0KQEAgLTE0NiwyMyArMjI1LDE2OCBAQA0KIAlhbmRiICQweDBmLCAlY2wJ
CSMgbWFzayBtYXNrIHJldmlzaW9uDQogCW1vdmIgJWNsLFNZTUJPTF9OQU1F
KHg4Nl9tYXNrKQ0KIAltb3ZsICVlZHgsU1lNQk9MX05BTUUoeDg2X2NhcGFi
aWxpdHkpDQotCS8qIGdldCB2ZW5kb3IgaW5mbyAqLw0KLQl4b3JsICVlYXgs
ICVlYXgJCQkjIGNhbGwgQ1BVSUQgd2l0aCAwIC0+IHJldHVybiB2ZW5kb3Ig
SUQNCi0JLmJ5dGUgMHgwZiwgMHhhMgkJIyBDUFVJRA0KLQltb3ZsICVlYngs
U1lNQk9MX05BTUUoeDg2X3ZlbmRvcl9pZCkJIyBsbyA0IGNoYXJzDQotCW1v
dmwgJWVkeCxTWU1CT0xfTkFNRSh4ODZfdmVuZG9yX2lkKSs0CSMgbmV4dCA0
IGNoYXJzDQotCW1vdmwgJWVjeCxTWU1CT0xfTkFNRSh4ODZfdmVuZG9yX2lk
KSs4CSMgbGFzdCA0IGNoYXJzDQogDQotCW1vdmwgJWNyMCwlZWF4CQkjIDQ4
NisNCi0JYW5kbCAkMHg4MDAwMDAxMSwlZWF4CSMgU2F2ZSBQRyxQRSxFVA0K
LQlvcmwgJDB4NTAwMjIsJWVheAkjIHNldCBBTSwgV1AsIE5FIGFuZCBNUA0K
LQlqbXAgMmYNCi1pczQ4NjoJcHVzaGwgJWVjeAkJIyByZXN0b3JlIG9yaWdp
bmFsIEVGTEFHUw0KLQlwb3BmbA0KLQltb3ZsICVjcjAsJWVheAkJIyA0ODYN
CisJY21wbCAkMHg0NDRkNDE2MyxTWU1CT0xfTkFNRSh4ODZfdmVuZG9yX2lk
KSs4CSMgIltBdXRoZW50aV1jQU1EIj8NCisJam5lIG5vY3B1aWQNCisNCisJ
b3JiICQweDIwLFNZTUJPTF9OQU1FKHg4NikJCSMgRmxhZyBhcyBBTUQNCisJ
Y21wYiAkMHgyNSxTWU1CT0xfTkFNRSh4ODYpCQkjIEs1IG1vZGVsIDAgaGFz
IHN3YXBwZWQNCisJam5lIGlzNDg2CQkJCSMgZmVhdHVyZSBmbGFncw0KKwlh
bmRsICQweDAwMDAwMjAwLCVlZHgJCQkjIG1vdmUgYml0IDkgdG8gYml0IDEz
DQorCXJvbGwgJDQsJWVkeAkJCQkjIGFuZCBjbGVhciBiaXQgOQ0KKwlvcmwg
JWVkeCxTWU1CT0xfTkFNRSh4ODZfY2FwYWJpbGl0eSkNCisJYW5kbCAkMHhm
ZmZmZmRmZixTWU1CT0xfTkFNRSh4ODZfY2FwYWJpbGl0eSkNCisJam1wIGlz
NDg2DQorDQorbm9jcHVpZDoNCisJLyoNCisJICogRXZlbiBpZiB3ZSBoYWQg
Q1BVSUQgQ3lyaXggdHJpZXMgdG8gbG9vayBjb21wYXRpYmxlIHdpdGgNCisJ
ICogSW50ZWwgc28gd2UgaGF2ZSB0byBnbyBlbHNld2hlcmUgZm9yIHRoZSBu
aXR0eSBncml0dHkuDQorCSAqLw0KKwljbXBsICQweDY5NzI3OTQzLFNZTUJP
TF9OQU1FKHg4Nl92ZW5kb3JfaWQpCSMgIkN5cmlbeC4qXSI/DQorCWpuZSBp
czQ4NgkJCQkJIyBtYXliZSAuLi4NCisNCitjaGtkZXZpZDoNCisJb3JiICQw
eDEwLFNZTUJPTF9OQU1FKHg4NikJCSMgRmxhZyBhcyBDeXJpeA0KKwltb3Zi
ICQweGZlLFNZTUJPTF9OQU1FKHg4Nl9tb2RlbCkJIyBHZW5lcmljIEN4NDg2
Pw0KKwltb3ZiICQwLFNZTUJPTF9OQU1FKHg4Nl9tYXNrKQ0KKw0KKyNpZmRl
ZiBDT05GSUdfQ1lSSVgNCisJY2xpCQkJIyBUZXN0IGZvciBERVZJRA0KKwln
ZXRDeDg2KCQweGMzKQkJIyBieSB3cml0aW5nIENDUjMNCisJbW92YiAlYXgs
JWN4DQorCW1vdmIgJWF4LCVieA0KKwlvcmIgJDB4ODAsJWJ4DQorCXNldEN4
ODYoJDB4YzMsJWJ4KQ0KKwlnZXRDeDg2KCQweGMwKQkJIyBkdW1teSB0byBj
aGFuZ2UgYnVzDQorCWdldEN4ODYoJDB4YzMpDQorCXN0aQ0KKwljbXAgJWF4
LCVjeA0KKwlqZSBpczQ4NgkJIyBub3Qgd3JpdGFibGUgPT0gbm8gREVWSUQN
CisNCisJY2xpDQorCXNldEN4ODYoJDB4YzMsJWN4KQkjIHJlc3RvcmUgQ0NS
Mw0KKw0KKwlnZXRDeDg2KCQweGZmKQkJIyBnZXQgREVWSUQgaW4gcHJlZmVy
ZW5jZSB0byBhbnkgQ1BVSUQNCisJbW92YiAlYWwsU1lNQk9MX05BTUUoeDg2
X21hc2spDQorCWdldEN4ODYoJDB4ZmUpDQorCW1vdmIgJWFsLFNZTUJPTF9O
QU1FKHg4Nl9tb2RlbCkNCisJc3RpDQorDQorI2lmIGRlZmluZWQoQ09ORklH
X0NZUklYXzVYODYpIHx8IGRlZmluZWQoQ09ORklHX0NZUklYXzZYODYpDQor
CWFuZGIgJDB4ZjAsJWFsDQorI2lmZGVmIENPTkZJR19DWVJJWF82WDg2DQor
CWNtcGIgJDB4MzAsJWFsDQorCWplIGlzNng4Ng0KKyNlbmRpZg0KKyNpZmRl
ZiBDT05GSUdfQ1lSSVhfNVg4Ng0KKwljbXBiICQweDIwLCVhbA0KKwlqZSBp
czV4ODYNCisjZW5kaWYNCisJLyogQ3g0ODYgb3Igc29tZXRoaW5nIGJleW9u
ZCBhIDZ4ODYgKE0yIG9yIGJldHRlcikuIE5vdGUgdGhhdA0KKwkgKiB0aGUg
Q3g0ODYgYWxzbyBoYXZlIHBlcmZvcm1hbmNlIGZlYXR1cmVzIHdlIGNvdWxk
IHR3ZWFrDQorCSAqIGJ1dCBnaXZlbiB0aGUgcHJvYmxlbXMgd2l0aCBbNTZd
eDg2LCB0aGUgbnVtYmVyIG9mIEN4NDg2DQorCSAqIHZhcmlhbnRzLCB0aGUg
ZmFjdCB0aGF0IHRoZSBDeDQ4NiBpcyBwcmV0dHkgd2VsbCBkZWFkDQorCSAq
IG5vdyBhbmQgdGhlIGZhY3QgdGhhdCBJIGhhdmUgbm8gQ3g0ODYgbXlzZWxm
IEkgaGF2ZW4ndA0KKwkgKiByaXNrZWQgaXQuIE5vciBoYXZlIEkgbG9va2Vk
IGF0IHRoZSBNMiBpbiBhbnkgZGV0YWlsIHlldC4NCisJICovDQorCWptcCBp
czQ4Ng0KKyNlbmRpZg0KKw0KKyNpZmRlZiBDT05GSUdfQ1lSSVhfNVg4Ng0K
KwkvKiBTcGVjaWFsIHNldCB1cCBmb3IgNXg4NiAqLw0KK2lzNXg4NjoNCisJ
Y2xpDQorCW1vdmIgJWN4LCVieA0KKwlhbmRiICQweDBmLCVieAkJIyBFbmFi
bGUgYWxsIGNvbmZpZyByZWdpc3RlcnMNCisJb3JiICQweDEwLCVieA0KKwlz
ZXRDeDg2KCQweGMzLCVieCkNCisNCisJZ2V0Q3g4NigkMHgyMCkJCSMgUENS
MCB8PSBMU1NFUiB8IEJUQl9FTg0KKwlvcmIgJDB4ODIsJWF4CQkjIExPT1Bf
RU4gaXMgYnJva2VuLCBSU1RLX0VOIHNob3dzIG5vIGJlbmVmaQ0KKw0KKwlt
b3ZiICVheCwlYngJCSMgYW5kIExTU0VSPTAgY291bGQgYnJlYWsgbWVtb3J5
IG1hcHBlZA0KKwlzZXRDeDg2KCQweDIwLCVieCkJIyBkZXZpY2VzIC0gd2Ug
aGF2ZSBubyB3YXkgb2Yga25vd2luZykNCisNCisjaWZkZWYgQ09ORklHX0NZ
UklYX0ZBU1RfSU8NCisJZ2V0Q3g4NigkMHhlOCkJCSMgQ0NSNDogSU9SVD0w
IChub2RlbGF5KQ0KKwlhbmRiICQweGYxLCVheA0KKwltb3ZiICVheCwlYngN
CisJc2V0Q3g4NigkMHhlOCwlYngpDQorI2VuZGlmDQorDQorCXNldEN4ODYo
JDB4YzMsJWN4KQkjIHJlc3RvcmUgQ0NSMw0KKwlzdGkNCisJam1wIGlzNDg2
DQorI2VuZGlmDQorDQorI2lmIGRlZmluZWQoQ09ORklHX0NZUklYXzZYODYp
IHx8IGRlZmluZWQoQ09ORklHX0NZUklYX0ZBU1RfSU8pDQorCS8qIFNwZWNp
YWwgc2V0IHVwIGZvciA2eDg2ICovDQoraXM2eDg2Og0KKwljbGkNCisJbW92
YiAlY3gsJWJ4DQorCWFuZGIgJDB4MGYsJWJ4CQkjIEVuYWJsZSBhbGwgY29u
ZmlnIHJlZ2lzdGVycw0KKwlvcmIgJDB4MTAsJWJ4DQorCXNldEN4ODYoJDB4
YzMsJWJ4KQ0KKw0KKyNpZiAhZGVmaW5lZChfX1NNUF9fKSAmJiBkZWZpbmVk
KENPTkZJR19DWVJJWF82WDg2X05PTE9DSykNCisJZ2V0Q3g4NigkMHhjMSkJ
CSMgQ0NSMSB8PSBOT19MT0NLDQorCW9yYiAkMHgxMCwlYXgNCisJbW92YiAl
YXgsJWJ4DQorCXNldEN4ODYoJDB4YzEsJWJ4KQ0KKyNlbHNlDQorCXNldEN4
ODYoJDB4MzEsJDB4ZjgpCSMgU2VyaWFsaXplIFhDSEcNCisJc2V0Q3g4Nigk
MHgzMiwkMHg3ZikJIyBXb3JrYXJvdW5kIGZvciAsLEhpZGRlbiBDTElgYA0K
KwlzZXRDeDg2KCQweDMzLCQweGZmKQkjIChha2EgQ29tYSkgQnVnDQorCXNl
dEN4ODYoJDB4M2MsJDB4ODcpDQorI2VuZGlmDQorDQorI2lmZGVmIENPTkZJ
R19DWVJJWF9GQVNUX0lPDQorCWdldEN4ODYoJDB4ZTgpDQorCW9yYiAkMHgw
NywlYXgJCSMgQ0NSNDogSU9SVD03IChub2RlbGF5KQ0KKwltb3ZiICVheCwl
YngNCisJc2V0Q3g4NigkMHhlOCwlYngpDQorI2VuZGlmDQorDQorCWdldEN4
ODYoJDB4ZTkpCQkjIENDUjUgJj0gflNMT1ANCisJYW5kYiAkMHhmZCwlYXgN
CisjaWZkZWYgQ09ORklHX0NZUklYXzZYODZfV1RBTExPQw0KKwlvcmIgJDB4
MDEsJWF4CQkjIENDUjUgfD0gV1RfQUxMT0MNCisjZW5kaWYNCisJbW92YiAl
YXgsJWJ4DQorCXNldEN4ODYoJDB4ZTksJWJ4KQ0KKw0KKyNpZmRlZiBDT05G
SUdfQ1lSSVhfNlg4Nl9CVEIJIyBJQk0gZG9jdW1lbnRhdGlvbiwgbm8gQ3ly
aXggZG9jcw0KKwlnZXRDeDg2KCQweDMwKQ0KKwlvcmIgJDAyMCwlYXgJCSMg
RW5hYmxlIGRhdGEgYnlwYXNzaW5nL2ZvcndhcmRpbmcNCisJbW92YiAlYXgs
JWR4DQorCW9yYiAkMHg0MCwlYXgJCSMgRW5hYmxlIHRlc3QgcmVnaXN0ZXIg
b3Bjb2Rlcw0KKwltb3ZiICVheCwlYngNCisJc2V0Q3g4NigkMHgzMCwlYngp
DQorCW1vdiAkMHgyOCwlZWJ4CQkjIEJUQiBpbmRleCA1DQorCS5ieXRlIDB4
MGYsMHgyNiwweGNiCSMgbW92ICVlYngsJXRyMQ0KKwkuYnl0ZSAweDBmLDB4
MjQsMHhkMAkjIG1vdiAldHIyLCVlYXgNCisJDQorCWFuZCAkMHhmZmZmZmZl
MiwlZWF4CQkjIEZBUiBDT0YgZG9lc24ndCBtYWtlIGFueSBkaWZmDQorDQor
I2lmZGVmIENPTkZJR19DWVJJWF82WDg2X0JUQl9SSVNLWQkjIEJpdCA0IGlz
IHNvbWV3aGF0IHJpc2t5DQorCW9yICAkMHgwMDAwMDAxMCwlZWF4CQkjIGJ1
dCBhY2NlbGVyYXRlcyBjb250ZXh0IHN3aXRjaGluZw0KKyNlbmRpZg0KKwku
Ynl0ZSAweDBmLDB4MjYsMHhkMAkjIG1vdiAlZWF4LCV0cjINCisNCisJc2V0
Q3g4NigkMHgzMCwlZHgpCSMgRGlzYWJsZSB0ZXN0IHJlZ2lzdGVyIG9wY29k
ZXMNCisjZW5kaWYgLyogQ09ORklHX0NZUklYXzZYODZfQlRCICovDQorDQor
CXNldEN4ODYoJDB4YzMsJWN4KQkjIHJlc3RvcmUgQ0NSMw0KKwlzdGkNCisj
ZW5kaWYgLyogQ09ORklHX0NZUklYXzZYODYgKi8NCisjZW5kaWYgLyogQ09O
RklHX0NZUklYICovDQorDQoraXM0ODY6CW1vdmwgJWNyMCwlZWF4CQkjIDQ4
NiBvciBiZXR0ZXINCiAJYW5kbCAkMHg4MDAwMDAxMSwlZWF4CSMgU2F2ZSBQ
RyxQRSxFVA0KIAlvcmwgJDB4NTAwMjIsJWVheAkjIHNldCBBTSwgV1AsIE5F
IGFuZCBNUA0KIAlqbXAgMmYNCisNCiBpczM4NjoJcHVzaGwgJWVjeAkJIyBy
ZXN0b3JlIG9yaWdpbmFsIEVGTEFHUw0KIAlwb3BmbA0KIAltb3ZsICVjcjAs
JWVheAkJIyAzODYNCi0tLSBsaW51eC0yLjAuMzMub3JpZy9hcmNoL2kzODYv
a2VybmVsL3Byb2Nlc3MuYwlGcmkgTm92ICA3IDE4OjExOjQyIDE5OTcNCisr
KyBsaW51eC0yLjAuMzMucGF0Y2hlZC9hcmNoL2kzODYva2VybmVsL3Byb2Nl
c3MuYwlNb24gSmFuICA1IDE4OjMzOjEzIDE5OTgNCkBAIC0zMCw2ICszMCw3
IEBADQogI2luY2x1ZGUgPGFzbS9zZWdtZW50Lmg+DQogI2luY2x1ZGUgPGFz
bS9wZ3RhYmxlLmg+DQogI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4NCisjaW5j
bHVkZSA8YXNtL3Byb2Nlc3Nvci5oPg0KICNpbmNsdWRlIDxhc20vaW8uaD4N
CiAjaW5jbHVkZSA8bGludXgvc21wLmg+DQogDQpAQCAtMjc4LDcgKzI3OSwy
OCBAQA0KIA0KIHZvaWQgaGFyZF9yZXNldF9ub3cgKHZvaWQpDQogew0KLQ0K
KyNpZiBkZWZpbmVkKENPTkZJR19DWVJJWCkgJiYgZGVmaW5lZChDT05GSUdf
Q1lSSVhfNlg4Nl9WU1BNKSAmJiAhZGVmaW5lZChfX1NNUF9fKSAmJiAhZGVm
aW5lZChDT05GSUdfQ1lSSVhfNlg4Nl9WU1BNX05PVFJBRFBBR0UpDQorCS8q
IGRpc2FibGUgVlNQTSBpbiBvcmRlciB0byBtYWtlIGl0IHBvc3NpYmxlIHRv
IGJvb3Qgb3RoZXIgT1MgKi8NCisJLyogY2hlY2sgZm9yIHN0ZXBwaW5nLCBv
bmx5ID49IDFyZXY3IGFsbG93cyBkaXNhYmxpbmcgb2YgVlNQTSAqLw0KKwlp
ZiAoKHg4NiAmIDB4ZjApID09IDB4MTAgJiYgKHg4Nl9tb2RlbCAmIDB4ZjAp
ID09IDB4MzANCisJCSYmICgoeDg2X21hc2sgJiAweDBmKSA+IDYgfHwgKHg4
Nl9tYXNrID4+IDQpID4gMSkpIHsNCisJCWludCB2c3BtX2lkeDsNCisJCWZv
ciAodnNwbV9pZHggPSAzOyB2c3BtX2lkeCA+PTA7IHZzcG1faWR4LS0pIHsg
DQorCQkJYXNtKAkibW92bCAlMCwlJWVheFxuIg0KKwkJCSAgICAJIm1vdmwg
JSVlYXgsJSV0cjdcbiINCisJCQkgICAgCSJtb3ZsICQweDAwMDAwMDA0LCUl
ZWF4XG4iDQorCQkJICAgIAkibW92bCAlJWVheCwlJXRyNlxuIg0KKwkJCQki
bW92bCAlMCwlJWVheFxuIg0KKwkJCQkibW92bCAlJWVheCwlJXRyN1xuIg0K
KwkJCSAgICAJIm1vdmwgJDB4MDAwMDA0Y2UsJSVlYXhcbiINCisJCQkgICAg
CSJtb3ZsICUlZWF4LCUldHI2XG4iDQorCQkJICAgIDogLyogbm8gb3V0cHV0
cyAqLw0KKwkJCSAgICA6ICJnIiAodnNwbV9pZHggPDwgNykNCisJCQkgICAg
OiAiZWF4IiwgImNjIg0KKwkJCSAgICApOw0KKwkJCX0NCisJCX0NCisjZW5k
aWYNCiAJaWYoIXJlYm9vdF90aHJ1X2Jpb3MpIHsNCiAJCXN0aSgpOw0KIAkJ
LyogcmVib290aW5nIG5lZWRzIHRvIHRvdWNoIHRoZSBwYWdlIGF0IGFic29s
dXRlIGFkZHIgMCAqLw0KLS0tIGxpbnV4LTIuMC4zMy5vcmlnL2FyY2gvaTM4
Ni9rZXJuZWwvc2V0dXAuYwlNb24gTm92IDE3IDAyOjE3OjA0IDE5OTcNCisr
KyBsaW51eC0yLjAuMzMucGF0Y2hlZC9hcmNoL2kzODYva2VybmVsL3NldHVw
LmMJTW9uIEphbiAgNSAxODozMzoxMyAxOTk4DQpAQCAtNDMsNyArNDMsNyBA
QA0KIGludCB4ODZfY2FwYWJpbGl0eSA9IDA7CQkvKiBzZXQgYnkga2VybmVs
L2hlYWQuUyAqLw0KIGludCBmZGl2X2J1ZyA9IDA7CQkvKiBzZXQgaWYgUGVu
dGl1bShUTSkgd2l0aCBGUCBidWcgKi8NCiBpbnQgcGVudGl1bV9mMDBmX2J1
ZyA9IDA7CS8qIHNldCBpZiBQZW50aXVtKFRNKSB3aXRoIEYwMEYgYnVnICov
DQotaW50IGhhdmVfY3B1aWQgPSAwOyAgICAgICAgICAgICAvKiBzZXQgaWYg
Q1BVSUQgaW5zdHJ1Y3Rpb24gd29ya3MgKi8NCitpbnQgaGF2ZV9jcHVpZCA9
IC0xOwkJLyogQ1BVSUQgbGV2ZWwgKC0xIGlmIG5vIENQVUlEKSAqLw0KIA0K
IGNoYXIgeDg2X3ZlbmRvcl9pZFsxM10gPSAidW5rbm93biI7DQogDQpAQCAt
MjM2LDExICsyMzYsODYgQEANCiAJcmV0dXJuIE5VTEw7DQogfQ0KIA0KK3N0
YXRpYyBjb25zdCBjaGFyICogY3lyaXhtb2RlbCh1bnNpZ25lZCBpbnQgbnIp
DQorew0KKwlzdGF0aWMgY2hhciBuYnVmWzMyXTsNCisNCisNCisJLyogTm90
ZSB0aGF0IHNvbWUgb2YgdGhlIHBvc3NpYmlsaXRpZXMgdGhpcyBkZWNvZGlu
ZyBhbGxvd3MNCisJICogaGF2ZSBuZXZlciBhY3R1YWxseSBiZWVuIG1hbnVm
YWN0dXJlZCAtIGJ1dCB0aG9zZSB0aGF0DQorCSAqIGRvIGFjdHVhbGx5IGV4
aXN0IGFyZSBjb3JyZWN0bHkgZGVjb2RlZC4NCisJICovDQorCWlmIChuciA8
IDB4MjApIHsNCisJCXN0cmNweShuYnVmLCAiQ3g0ODYiKTsNCisJCWlmICgh
KG5yICYgMHgxMCkpIHsNCisJCQlzcHJpbnRmKG5idWYrNSwgIiVjJXMlYyIs
DQorCQkJCShuciAmIDB4MDEpID8gJ0QnIDogJ1MnLA0KKwkJCQkobnIgJiAw
eDA0KSA/ICJSeCIgOiAiTEMiLA0KKwkJCQkobnIgJiAweDAyKSA/ICcyJyA6
ICdcMDAwJyk7DQorCQl9IGVsc2UgaWYgKCEobnIgJiAweDA4KSkgew0KKwkJ
CXNwcmludGYobmJ1Zis1LCAiUyVzJWMiLA0KKwkJCQkobnIgJiAweDAxKSA/
ICIyIiA6ICIiLA0KKwkJCQkobnIgJiAweDAyKSA/ICdlJyA6ICdcMDAwJyk7
DQorCQl9IGVsc2Ugew0KKwkJCXNwcmludGYobmJ1Zis1LCAiRFglYyIsDQor
CQkJCW5yID09IDB4MWIgPyAnMicNCisJCQkJCTogKG5yID09IDB4MWYgPyAn
NCcgOiAnXDAwMCcpKTsNCisJCX0NCisJCXJldHVybiBuYnVmOw0KKwl9IGVs
c2UgaWYgKG5yID49IDB4MjAgJiYgbnIgPD0gMHg0ZikgeyAgLyogNXg4Niwg
Nng4NiBvciBHeDg2ICovDQorCQlzcHJpbnRmKG5idWYsICIlY3g4NiAlY3gg
Q29yZS9CdXMgQ2xvY2siLA0KKwkJCSI/PzU2RyJbbnI+PjRdLA0KKwkJCSIx
Mj8/NDMiW25yICYgMHgwNV0pOw0KKwkJcmV0dXJuIG5idWY7DQorCX0gZWxz
ZSBpZiAobnIgPj0gMHg1MCAmJiBuciA8PSAweDVmKSB7ICAvKiBDeXJpeCBN
MiAqLw0KKwkJc3ByaW50ZihuYnVmLCAiTTIgJWMlc3ggQ29yZS9CdXMgQ2xv
Y2siLA0KKwkJCSIxMjIzMzQ0NSJbbnIgJiAweDA3XSwNCisJCQkobnIgJiYg
IShuciYxKSkgPyAiLjUiIDogIiIpOw0KKwkJcmV0dXJuIG5idWY7DQorCX0N
CisNCisJLyogUHJvYmFibHkgMHhmZCAoQ3g0ODZbU0RdTEMgd2l0aCBubyBJ
RCByZWdpc3RlcikNCisJICogb3IgMHhmZSAoQ3g0ODYgQSBzdGVwIHdpdGgg
bm8gSUQgcmVnaXN0ZXIpLg0KKwkgKi8NCisJcmV0dXJuICJDeDQ4NiI7DQor
fQ0KKw0KIHN0YXRpYyBjb25zdCBjaGFyICogZ2V0bW9kZWwoaW50IHg4Niwg
aW50IG1vZGVsKQ0KIHsNCi0gICAgICAgIGNvbnN0IGNoYXIgKnAgPSBOVUxM
Ow0KLSAgICAgICAgc3RhdGljIGNoYXIgbmJ1ZlsxMl07DQotCXN3aXRjaCAo
eDg2KSB7DQorCWNvbnN0IGNoYXIgKnAgPSBOVUxMOw0KKwlzdGF0aWMgY2hh
ciBuYnVmWzQ5XTsNCisNCisJaWYgKCh4ODYgJiAweGYwKSA9PSAweDEwKSB7
ICAgICAgICAgICAgIC8qIEN5cml4ICovDQorCQlwID0gY3lyaXhtb2RlbCht
b2RlbCk7DQorCX0gZWxzZSBpZiAoKHg4NiAmIDB4ZjApID09IDB4MjApIHsg
ICAgICAvKiBBTUQgKi8NCisJCS8qIEFjdHVhbGx5IHdlIG11c3QgaGF2ZSBj
cHVpZCBvciB3ZSBjb3VsZCBuZXZlciBoYXZlDQorCQkgKiBmaWd1cmVkIG91
dCB0aGF0IHRoaXMgd2FzIEFNRCBmcm9tIHRoZSB2ZW5kb3IgaW5mbyA6LSku
DQorCQkgKi8NCisJCWlmIChoYXZlX2NwdWlkIDwgMCkNCisJCQlwID0gIkFt
NDg2IjsNCisJCWVsc2Ugew0KKwkJCWludCBuLCBkdW1teTsNCisJCQljcHVp
ZCgweDgwMDAwMDAwLCAmbiwgJmR1bW15LCAmZHVtbXksICZkdW1teSk7DQor
CQkJaWYgKCFuKSB7DQorCQkJCWlmICgoeDg2ICYgMHgwZikgPT0gNCkNCisJ
CQkJCXAgPSBpNDg2bW9kZWwobW9kZWwpOw0KKwkJCQllbHNlIGlmICgoeDg2
ICYgMHgwZikgPT0gNSkNCisJCQkJCXAgPSAiQU1ELUs1IChNb2RlbCAwKSI7
DQorCQkJCWVsc2UgaWYgKCh4ODYgJiAweDBmKSA9PSA2KQ0KKwkJCQkJcCA9
ICJBTUQtSzYiOw0KKwkJCX0gZWxzZSB7DQorCQkJCWludCAqdiA9IChpbnQg
KiluYnVmOyAgICAgICAgICAgIA0KKwkJCQljcHVpZCgweDgwMDAwMDAyLCAm
dlswXSwgJnZbMV0sICZ2WzJdLCAmdlszXSk7DQorCQkJCWNwdWlkKDB4ODAw
MDAwMDMsICZ2WzRdLCAmdls1XSwgJnZbNl0sICZ2WzddKTsNCisJCQkJY3B1
aWQoMHg4MDAwMDAwNCwgJnZbOF0sICZ2WzldLCAmdlsxMF0sICZ2WzExXSk7
DQorCQkJCW5idWZbNDhdID0gJ1wwJzsNCisJCQkJcCA9IG5idWY7DQorCQkJ
fQ0KKwkJfQ0KKwl9IGVsc2Ugc3dpdGNoICh4ODYpIHsgICAgICAgICAgICAg
ICAgICAgLyogSW50ZWwgKi8NCisJCWNhc2UgMDoNCisJCQlwID0gInVua25v
d24iOw0KKwkJCWJyZWFrOw0KIAkJY2FzZSA0Og0KIAkJCXAgPSBpNDg2bW9k
ZWwobW9kZWwpOw0KIAkJCWJyZWFrOw0KQEAgLTI1MSw4ICszMjYsOCBAQA0K
IAkJCXAgPSBpNjg2bW9kZWwobW9kZWwpOw0KIAkJCWJyZWFrOw0KIAl9DQot
ICAgICAgICBpZiAocCkNCi0gICAgICAgICAgICAgICAgcmV0dXJuIHA7DQor
CWlmIChwKQ0KKwkJcmV0dXJuIHA7DQogDQogICAgICAgICBzcHJpbnRmKG5i
dWYsICIlZCIsIG1vZGVsKTsNCiAgICAgICAgIHJldHVybiBuYnVmOw0KQEAg
LTI2MSw2ICszMzYsNyBAQA0KIGludCBnZXRfY3B1aW5mbyhjaGFyICogYnVm
ZmVyKQ0KIHsNCiAgICAgICAgIGludCBpLCBsZW4gPSAwOw0KKyAgICAgICAg
aW50IHNlcF9idWc7DQogICAgICAgICBzdGF0aWMgY29uc3QgY2hhciAqeDg2
X2NhcF9mbGFnc1tdID0gew0KICAgICAgICAgICAgICAgICAiZnB1IiwgInZt
ZSIsICJkZSIsICJwc2UiLCAidHNjIiwgIm1zciIsICJwYWUiLCAibWNlIiwN
CiAgICAgICAgICAgICAgICAgImN4OCIsICJhcGljIiwgIjEwIiwgIjExIiwg
Im10cnIiLCAicGdlIiwgIm1jYSIsICJjbW92IiwNCkBAIC0yODUsNDEgKzM2
MSw1MyBAQA0KICNkZWZpbmUgQ1BVTiAwDQogI2VuZGlmDQogDQotICAgICAg
ICAgICAgICAgICAgICAgICAgbGVuICs9IHNwcmludGYoYnVmZmVyK2xlbiwi
cHJvY2Vzc29yXHQ6ICVkXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImNwdVx0XHQ6ICVjODZcbiINCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZWxcdFx0OiAlc1xu
Ig0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2
ZW5kb3JfaWRcdDogJXNcbiIsDQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1BVTiwNCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDRCh4ODYpKycwJywNCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDRChoYXZlX2NwdWlkKSA/IA0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0
bW9kZWwoQ0QoeDg2KSwgQ0QoeDg2X21vZGVsKSkgOg0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVua25vd24iLA0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENEKHg4Nl92
ZW5kb3JfaWQpKTsNCisJCQlsZW4gKz0gc3ByaW50ZihidWZmZXIrbGVuLCJw
cm9jZXNzb3JcdDogJWRcbiINCisJCQkJICAgICAgICJjcHUgZmFtaWx5XHQ6
ICVjXG4iDQorCQkJCSAgICAgICAibW9kZWxcdFx0OiAlc1xuIg0KKwkJCQkg
ICAgICAgInZlbmRvcl9pZFx0OiAlc1xuIiwNCisJCQkJICAgICAgIENQVU4s
DQorCQkJCSAgICAgICAoQ0QoeDg2KSAmIDB4MGYpKycwJywNCisJCQkJICAg
ICAgIGdldG1vZGVsKENEKHg4NiksIENEKHg4Nl9tb2RlbCkpLA0KKwkJCQkg
ICAgICAgQ0QoeDg2X3ZlbmRvcl9pZCkpOw0KICAgICAgICAgDQotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKENEKHg4Nl9tYXNrKSkNCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiArPSBzcHJpbnRmKGJ1ZmZl
citsZW4sDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAic3RlcHBpbmdcdDogJWRcbiIsDQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRCh4ODZfbWFz
aykpOw0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCisgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKENEKHg4Nl9tYXNrKSkgew0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChDRCh4ODYpICYgMHhm
MCkgPT0gMHgxMCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGVuICs9IHNwcmludGYoYnVmZmVyK2xlbiwNCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJzdGVwcGluZ1x0OiAlZCByZXYgJWRcbiIsDQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
RCh4ODZfbWFzaykgPj4gNCwNCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDRCh4ODZfbWFzaykgJiAweDBmKTsN
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuICs9IHNw
cmludGYoYnVmZmVyK2xlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGVwcGluZ1x0OiAl
ZFxuIiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENEKHg4Nl9tYXNrKSk7DQorICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZQ0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGVuICs9IHNwcmludGYoYnVmZmVyK2xlbiwgDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
c3RlcHBpbmdcdDogdW5rbm93blxuIik7DQogICAgICAgICANCisJCQlzZXBf
YnVnID0gQ0QoeDg2KSA9PSAweDA2ICYmIC8qIEludGVsIGZhbWlseSA2ICov
DQorCQkJCSAgQ0QoaGF2ZV9jcHVpZCkgPj0gMCAmJg0KKwkJCQkgIChDRCh4
ODZfY2FwYWJpbGl0eSkgJiAweDgwMCkgJiYNCisJCQkJICBDRCh4ODZfbW9k
ZWwpIDwgMyAmJg0KKwkJCQkgIENEKHg4Nl9tYXNrKSA8IDM7DQorDQogICAg
ICAgICAgICAgICAgICAgICAgICAgbGVuICs9IHNwcmludGYoYnVmZmVyK2xl
biwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZmRpdl9idWdcdDogJXNcbiINCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaGx0X2J1Z1x0XHQ6ICVzXG4iDQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlcF9idWdcdFx0OiAl
c1xuIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJmMDBmX2J1Z1x0OiAlc1xuIg0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJmcHVcdFx0OiAlc1xuIg0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcHVfZXhjZXB0aW9uXHQ6
ICVzXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImNwdWlkXHRcdDogJXNcbiINCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiY3B1aWQgbGV2ZWxcdDogJWlcbiINCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3BcdFx0OiAl
c1xuIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJmbGFnc1x0XHQ6IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDRChmZGl2X2J1ZykgPyAieWVzIiA6ICJubyIsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0QoaGx0X3dv
cmtzX29rKSA/ICJubyIgOiAieWVzIiwNCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXBfYnVnID8gInllcyIgOiAibm8iLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbnRp
dW1fZjAwZl9idWcgPyAieWVzIiA6ICJubyIsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0QoaGFyZF9tYXRoKSA/ICJ5ZXMi
IDogIm5vIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoQ0QoaGFyZF9tYXRoKSAmJiBpZ25vcmVfaXJxMTMpDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJ5ZXMiIDog
Im5vIiwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDRChoYXZlX2NwdWlkKSA/ICJ5ZXMiIDogIm5vIiwNCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRChoYXZlX2NwdWlkKSwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRCh3
cF93b3Jrc19vaykgPyAieWVzIiA6ICJubyIpOw0KICAgICAgICAgDQogICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yICggaSA9IDAgOyBpIDwgMzIgOyBp
KysgKSB7DQotLS0gbGludXgtMi4wLjMzLm9yaWcvYXJjaC9pMzg2L21tL2lu
aXQuYwlUdWUgQXVnIDEyIDIyOjA2OjU0IDE5OTcNCisrKyBsaW51eC0yLjAu
MzMucGF0Y2hlZC9hcmNoL2kzODYvbW0vaW5pdC5jCU1vbiBKYW4gIDUgMTg6
MzM6MTMgMTk5OA0KQEAgLTEyMSw2ICsxMjEsODIgQEANCiAJdW5zaWduZWQg
bG9uZyB0bXA7DQogCXVuc2lnbmVkIGxvbmcgYWRkcmVzczsNCiANCisjaWZk
ZWYgVEVTVF9WRVJJRllfQVJFQQ0KKwl3cF93b3Jrc19vayA9IDA7DQorI2Vu
ZGlmDQorDQorI2lmIGRlZmluZWQoQ09ORklHX0NZUklYKSAmJiBkZWZpbmVk
KENPTkZJR19DWVJJWF82WDg2X1ZTUE0pICYmICFkZWZpbmVkKF9fU01QX18p
DQorCXVuc2lnbmVkIGxvbmcgdnNwbV9tYXggPSAwOw0KKw0KKwkvKiBJZiB0
aGlzIGlzIGEgQ3lyaXggNng4NiB3ZSB1c2UgdGhlIHZhcmlhYmxlIHNpemUg
cGFnaW5nDQorCSAqIG1lY2hhbmlzbSAoVlNQTSkgdG8gbWFwIHBoeXNpY2Fs
IG1lbW9yeSBhdCAweGMwMDAwMDAwLg0KKwkgKiBOb3RlIHRoYXQgVlNQTSBw
YWdlcyBhcmUgc3RvcmVkIG9uIHRoZSBDUFUgb25seSBzbyB0aGlzDQorCSAq
IG5lZWRzIHRvIGJlIGRvbmUgZm9yIGVhY2ggcHJvY2Vzc29yIGluIGEgbXVs
dGktcHJvY2Vzc29yDQorCSAqIHN5c3RlbS4gSWYgd2UgaGF2ZSBhIG1peHR1
cmUgb2YgcHJvY2Vzc29ycyB3ZSB3b3VsZCBhbHNvDQorCSAqIG5lZWQgdG8g
c2V0IHVwIHRoZSB0cmFkaXRpb25hbCBwYWdlIHRhYmxlcyBmb3IgdGhlbS4N
CisJICogTm90ZSBhbHNvIHRoYXQgVlNQTSBwYWdlcyB3aWxsIGJlIGdsb2Jh
bCB0byBhbGwgbWVtb3J5DQorCSAqIHNwYWNlcyBzaW5jZSB0aGV5IGFyZSBu
b3Qgc3RvcmVkIGluIHRoZSBub3JtYWwgcGFnZQ0KKwkgKiBkaXJlY3Rvcmll
cy4NCisJICoNCisJICogQnkgZXhwZXJpbWVudDoNCisJICogICBWU1BNIHBh
Z2VzIG11c3QgYmUgcG93ZXIgb2YgdHdvIHNpemVzLiBBIHNpbmdsZSAyNE1C
DQorCSAqIHBhZ2UgZmFpbHMuDQorCSAqICAgRG9jdW1lbnRhdGlvbiBzdWdn
ZXN0cyB0aGVyZSBhcmUgOCBWU1BNIHNsb3RzICgzIGJpdA0KKwkgKiBpbmRl
eCkgYnV0IHRlc3RzIHNob3cgdGhlIHVwcGVyIGZvdXIgc2xvdHMgbWlycm9y
IHRoZQ0KKwkgKiBsb3dlciBmb3VyLg0KKwkgKiAgIFdpdGggYSAxNk1CIHBh
Z2UgZm9sbG93ZWQgYnkgYW4gOE1CIHBhZ2UgSSBhbHdheXMgZ2V0DQorCSAq
IGEgd3JpdGUgZmF1bHQgb24gdGhlIGxhc3QgNGsgb2YgdGhlIDhNQiBwYWdl
LiBXaXRoIDhNQg0KKwkgKiBwbHVzIDRNQiBJIGNhbid0IGV2ZW4gYm9vdC4g
SWYgd2UgaGF2ZSBzdWNoIGEgbWVtb3J5DQorCSAqIHNpemUgd2UgbWFwIHRo
ZSBmaXJzdCBwb3dlciBvZiB0d28gd2l0aCBWU1BNIGFuZCB1c2UNCisJICog
dHJhZGl0aW9uYWwgcGFnaW5nIGZvciB0aGUgcmVzdC4NCisJICogICBWU1BN
IHBhZ2VzIG92ZXJyaWRlIHRyYWRpdGlvbmFsIHBhZ2VzIHNvIHdlIGNhbm5v
dA0KKwkgKiBvdmVybGFwIHRoZSBzdGFydCBvZiB0aGUgdm1hbGxvYyByZWdp
b24uDQorCSAqICAgRG8gbm90IHRyeSBhbmQgY3JlYXRlIGEgbWFwcGluZyB3
aXRoIGRpcnR5IGFuZCBhY2Nlc3NlZA0KKwkgKiBmbGFncyBjbGVhciAtIGEg
c3RlcCAxIHJldiA1IGNoaXAgd2lsbCBjcmFzaCBhbmQgYnVybi4NCisJICov
DQorCWlmICgoeDg2ICYgMHhmMCkgPT0gMHgxMCB8fCAoeDg2X21vZGVsICYg
MHhmMCkgPT0gMHgzMCkgew0KKwkJaW50IHZzcG1faW5kZXggPSAwOw0KKwkJ
aW50IG1heF92c3BtX3BhZ2VzID0gMTsNCisJCWlmICgoeDg2X21hc2sgJiAw
eDBmKSA+IDYgfHwgKHg4Nl9tYXNrID4+IDQpID4gMSkgbWF4X3ZzcG1fcGFn
ZXMgPSA0OyANCisNCisJCWRvIHsNCisJCQl1bnNpZ25lZCBsb25nIG1lbV9z
aXplOw0KKw0KKwkJCW1lbV9zaXplID0gNDA5NjsNCisJCQl3aGlsZSAodnNw
bV9tYXgrbWVtX3NpemUgPCBlbmRfbWVtKQ0KKwkJCQltZW1fc2l6ZSA8PD0g
MTsNCisJCQlpZiAodnNwbV9tYXgrbWVtX3NpemUgPiBlbmRfbWVtKQ0KKwkJ
CQlpZiAoKG1lbV9zaXplID4+PSAxKSA8IDQwOTYpDQorCQkJCQlicmVhazsN
CisNCisJCSAgICAgICAgYXNtKAkibW92bCAlMCwlJWVheFxuIg0KKwkJCQki
bW92bCAlJWVheCwlJXRyN1xuIg0KKwkJCQkibW92bCAkMHgwMDAwMDAwNCwl
JWVheFxuIg0KKwkJCQkibW92bCAlJWVheCwlJXRyNlxuIg0KKwkJCQkibW92
bCAlMSwlJWVheFxuIg0KKwkJCQkibW92bCAlJWVheCwlJXRyN1xuIg0KKwkJ
CQkibW92bCAlMiwlJWVheFxuIg0KKwkJCQkibW92bCAlJWVheCwlJXRyNlxu
Ig0KKwkJCTogLyogbm8gb3V0cHV0cyAqLw0KKwkJCTogImciICgoKChtZW1f
c2l6ZS0xKSAmIDB4ZmZmZmYwMDApKSB8ICh2c3BtX2luZGV4PDw3KSksDQor
CQkJICAiZyIgKCh2c3BtX21heCAmIDB4ZmZmZmYwMDApIHwgKHZzcG1faW5k
ZXg8PDcpKSwNCisJCQkgICJnIiAodnNwbV9tYXggfCAweGMwMDAwY2Q2KQ0K
KwkJCTogImVheCIsICJjYyINCisJCQkpOw0KKw0KKwkJCXZzcG1fbWF4ICs9
IG1lbV9zaXplOw0KKw0KKwkJfSB3aGlsZSAodnNwbV9tYXggPCBlbmRfbWVt
ICYmIHZzcG1faW5kZXgrKyA8IG1heF92c3BtX3BhZ2VzKTsNCisNCisJCS8q
IFdyaXRlIHByb3RlY3QgZG9lcyB3b3JrIGNvcnJlY3RseSBidXQgdGhlIHRl
c3QNCisJCSAqIHdpbGwgZmFpbCBiZWNhdXNlIHdlIGNhbid0IG1hcCBqdXN0
IHBhZ2UgMCByZWFkDQorCQkgKiBvbmx5IGZyb20gdW5kZXIgdGhlIFZTUE0g
YmlnIHBhZ2UuIElmIHdlIGRpZG4ndA0KKwkJICoga25vdyBiZWZvcmUgd2Ug
ZG8gbm93Lg0KKwkJICovDQorCQl3cF93b3Jrc19vayA9IDE7DQorCX0NCisj
ZW5kaWYNCisNCiAvKg0KICAqIFBoeXNpY2FsIHBhZ2UgMCBpcyBzcGVjaWFs
OyBpdCdzIG5vdCB0b3VjaGVkIGJ5IExpbnV4IHNpbmNlIEJJT1MNCiAgKiBh
bmQgU01NIChmb3IgbGFwdG9wcyB3aXRoIFszNF04Ni9TTCBjaGlwcykgbWF5
IG5lZWQgaXQuICBJdCBpcyByZWFkDQpAQCAtMTQ5LDkgKzIyNSw2IEBADQog
CSAqLw0KIC8qCXNtcF9hbGxvY19tZW1vcnkoODE5Mik7ICovDQogI2VuZGlm
DQotI2lmZGVmIFRFU1RfVkVSSUZZX0FSRUENCi0Jd3Bfd29ya3Nfb2sgPSAw
Ow0KLSNlbmRpZg0KIAlzdGFydF9tZW0gPSBQQUdFX0FMSUdOKHN0YXJ0X21l
bSk7DQogCWFkZHJlc3MgPSAwOw0KIAlwZ19kaXIgPSBzd2FwcGVyX3BnX2Rp
cjsNCkBAIC0xODMsNiArMjU2LDE2IEBADQogCQkJY29udGludWU7DQogCQl9
DQogI2VuZGlmDQorI2lmIGRlZmluZWQoQ09ORklHX0NZUklYKSAmJiBkZWZp
bmVkKENPTkZJR19DWVJJWF82WDg2X1ZTUE0pICYmICFkZWZpbmVkKF9fU01Q
X18pICYmIGRlZmluZWQoQ09ORklHX0NZUklYXzZYODZfVlNQTV9OT1RSQURQ
QUdFKQ0KKwkJaWYgKCh4ODYgJiAweGYwKSA9PSAweDEwCS8qIEN5cml4ICov
DQorCQkmJiAoeDg2X21vZGVsICYgMHhmMCkgPT0gMHgzMAkvKiA2eDg2ICov
DQorCQkmJiAoYWRkcmVzcyArIFBBR0VfU0laRSpQVFJTX1BFUl9QVEUpIDwg
dnNwbV9tYXgpIHsgLyogd2l0aGluIFZTUE0gbWFwcGluZ3MgKi8NCisJCQlw
Z19kaXIrKzsNCisJCQlhZGRyZXNzICs9IFBBR0VfU0laRSAqIFBUUlNfUEVS
X1BURTsNCisJCQljb250aW51ZTsNCisJCX0NCisjZW5kaWYNCisNCiAJCS8q
IG1hcCB0aGUgbWVtb3J5IGF0IHZpcnR1YWwgYWRkciAweEMwMDAwMDAwICov
DQogCQlwZ190YWJsZSA9IChwdGVfdCAqKSAoUEFHRV9NQVNLICYgcGdkX3Zh
bChwZ19kaXJbNzY4XSkpOw0KIAkJaWYgKCFwZ190YWJsZSkgew0KQEAgLTE5
NCwxMSArMjc3LDE3IEBADQogCQlwZ2RfdmFsKHBnX2RpclswXSkgICA9IF9Q
QUdFX1RBQkxFIHwgKHVuc2lnbmVkIGxvbmcpIHBnX3RhYmxlOw0KIAkJcGdk
X3ZhbChwZ19kaXJbNzY4XSkgPSBfUEFHRV9UQUJMRSB8ICh1bnNpZ25lZCBs
b25nKSBwZ190YWJsZTsNCiAJCXBnX2RpcisrOw0KKw0KIAkJZm9yICh0bXAg
PSAwIDsgdG1wIDwgUFRSU19QRVJfUFRFIDsgdG1wKysscGdfdGFibGUrKykg
ew0KLQkJCWlmIChhZGRyZXNzIDwgZW5kX21lbSkNCi0JCQkJc2V0X3B0ZShw
Z190YWJsZSwgbWtfcHRlKGFkZHJlc3MsIFBBR0VfU0hBUkVEKSk7DQotCQkJ
ZWxzZQ0KKyNpZiBkZWZpbmVkKENPTkZJR19DWVJJWCkgJiYgZGVmaW5lZChD
T05GSUdfQ1lSSVhfNlg4Nl9WU1BNKSAmJiAhZGVmaW5lZChfX1NNUF9fKSAm
JiBkZWZpbmVkKENPTkZJR19DWVJJWF82WDg2X1ZTUE1fTk9UUkFEUEFHRSkN
CisJCQlpZiAoYWRkcmVzcyA8IHZzcG1fbWF4IHx8IGFkZHJlc3MgPj0gZW5k
X21lbSkNCisJCQkJcHRlX2NsZWFyKHBnX3RhYmxlKTsNCisjZWxzZQ0KKwkJ
CWlmIChhZGRyZXNzID49IGVuZF9tZW0pDQogCQkJCXB0ZV9jbGVhcihwZ190
YWJsZSk7DQorI2VuZGlmDQorCQkJZWxzZQ0KKwkJCQlzZXRfcHRlKHBnX3Rh
YmxlLCBta19wdGUoYWRkcmVzcywgUEFHRV9TSEFSRUQpKTsNCiAJCQlhZGRy
ZXNzICs9IFBBR0VfU0laRTsNCiAJCX0NCiAJfQ0KLS0tIGxpbnV4LTIuMC4z
My5vcmlnL2luY2x1ZGUvYXNtLWkzODYvYnVncy5oCUZyaSBOb3YgMTQgMDE6
MTI6MjkgMTk5Nw0KKysrIGxpbnV4LTIuMC4zMy5wYXRjaGVkL2luY2x1ZGUv
YXNtLWkzODYvYnVncy5oCVR1ZSBKYW4gIDYgMTA6MDA6MzEgMTk5OA0KQEAg
LTE1Miw1ICsxNTIsNSBAQA0KIAljaGVja19mcHUoKTsNCiAJY2hlY2tfaGx0
KCk7DQogCWNoZWNrX3BlbnRpdW1fZjAwZigpOw0KLQlzeXN0ZW1fdXRzbmFt
ZS5tYWNoaW5lWzFdID0gJzAnICsgeDg2Ow0KKwlzeXN0ZW1fdXRzbmFtZS5t
YWNoaW5lWzFdID0gJzAnICsgKHg4NiAmIDB4MGYpOw0KIH0NCi0tLSBsaW51
eC0yLjAuMzMub3JpZy9pbmNsdWRlL2FzbS1pMzg2L3Byb2Nlc3Nvci5oCVRo
dSBOb3YgMTMgMDU6NDU6NDAgMTk5Nw0KKysrIGxpbnV4LTIuMC4zMy5wYXRj
aGVkL2luY2x1ZGUvYXNtLWkzODYvcHJvY2Vzc29yLmgJTW9uIEphbiAgNSAx
ODozMzoxNCAxOTk4DQpAQCAtMTYsNyArMTYsNyBAQA0KICAqLw0KIA0KIGV4
dGVybiBjaGFyIGhhcmRfbWF0aDsNCi1leHRlcm4gY2hhciB4ODY7CQkvKiBs
b3dlciA0IGJpdHMgKi8NCitleHRlcm4gY2hhciB4ODY7CQkvKiB1cHBlciA0
IGJpdHM9dmVuZG9yLCBsb3dlciA0IGJpdHM9ZmFtaWx5ICovDQogZXh0ZXJu
IGNoYXIgeDg2X3ZlbmRvcl9pZFsxM107DQogZXh0ZXJuIGNoYXIgeDg2X21v
ZGVsOwkJLyogbG93ZXIgNCBiaXRzICovDQogZXh0ZXJuIGNoYXIgeDg2X21h
c2s7CQkvKiBsb3dlciA0IGJpdHMgKi8NCkBAIC0xNDgsNiArMTQ4LDIyIEBA
DQogZXh0ZXJuIGlubGluZSB1bnNpZ25lZCBsb25nIHRocmVhZF9zYXZlZF9w
YyhzdHJ1Y3QgdGhyZWFkX3N0cnVjdCAqdCkNCiB7DQogCXJldHVybiAoKHVu
c2lnbmVkIGxvbmcgKil0LT5lc3ApWzNdOw0KK30NCisNCitleHRlcm4gaW5s
aW5lIHZvaWQgY3B1aWQoaW50IG9wLCBpbnQgKmVheCwgaW50ICplYngsIGlu
dCAqZWN4LCBpbnQgKmVkeCkNCit7DQorCV9fYXNtX18oIm1vdmwgJTQsJSVl
YXhcblx0Ig0KKwkJIi5ieXRlIDB4MGYsIDB4YTJcblx0Ig0KKwkJIm1vdmwg
JSVlYXgsJTBcblx0Ig0KKwkJIm1vdmwgJSVlYngsJTFcblx0Ig0KKwkJIm1v
dmwgJSVlY3gsJTJcblx0Ig0KKwkJIm1vdmwgJSVlZHgsJTNcblx0Ig0KKwkJ
OiAiPW0iICgqZWF4KSwNCisJCSAgIj1tIiAoKmVieCksDQorCQkgICI9bSIg
KCplY3gpLA0KKwkJICAiPW0iICgqZWR4KQ0KKwkJOiAiZyIgKG9wKQ0KKwkJ
OiAiZWF4IiwgImVieCIsICJlY3giLCAiZWR4IiwgImNjIik7DQogfQ0KIA0K
ICNlbmRpZiAvKiBfX0FTTV9JMzg2X1BST0NFU1NPUl9IICovDQotLS0gbGlu
dXgvYXJjaC9pMzg2L2tlcm5lbC90aW1lLmMub3JpZwlGcmkgTm92ICA3IDE5
OjA2OjIxIDE5OTcNCisrKyBsaW51eC9hcmNoL2kzODYva2VybmVsL3RpbWUu
YwlNb24gSmFuIDI2IDAwOjI5OjU3IDE5OTgNCkBAIC00NzUsMjkgKzQ3NSwz
MCBAQA0KIAkJCQkvKiBEb24ndCB1c2UgdGhlbSBpZiBhIHN1c3BlbmQvcmVz
dW1lIGNvdWxkDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb3JydXB0IHRoZSB0aW1lciB2YWx1ZS4gIFRoaXMgcHJvYmxlbQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZHMgbW9yZSBk
ZWJ1Z2dpbmcuICovDQotCWlmICh4ODZfY2FwYWJpbGl0eSAmIDE2KSB7DQot
CQlkb19nZXR0aW1lb2Zmc2V0ID0gZG9fZmFzdF9nZXR0aW1lb2Zmc2V0Ow0K
KwlpZiAoeDg2X2NhcGFiaWxpdHkgJiAxNikNCisJCWlmIChzdHJuY21wKHg4
Nl92ZW5kb3JfaWQsICJDeXJpeCIsIDUpICE9IDApIHsNCisJCQlkb19nZXR0
aW1lb2Zmc2V0ID0gZG9fZmFzdF9nZXR0aW1lb2Zmc2V0Ow0KIA0KLQkJaWYo
IHN0cmNtcCggeDg2X3ZlbmRvcl9pZCwgIkF1dGhlbnRpY0FNRCIgKSA9PSAw
ICkgew0KLQkJCWlmKCB4ODYgPT0gNSApIHsNCi0JCQkJaWYoIHg4Nl9tb2Rl
bCA9PSAwICkgew0KLQkJCQkJLyogdHVybiBvbiBjeWNsZSBjb3VudGVycyBk
dXJpbmcgcG93ZXIgZG93biAqLw0KLQkJCQkJX19hc21fXyBfX3ZvbGF0aWxl
X18gKCIgbW92bCAkMHg4MywgJSVlY3ggXG4gXA0KLQkJCQkJCQkJLmJ5dGUg
MHgwZiwweDMyIFxuIFwNCi0JCQkJCQkJCW9ybCAkMSwlJWVheCBcbiBcDQot
CQkJCQkJCQkuYnl0ZSAweDBmLDB4MzAgXG4gIiANCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiA6IDogImF4IiwgImN4IiwgImR4IiApOw0KLQkJCQkJdWRlbGF5
KDUwMCk7DQorCQkJaWYoIHN0cmNtcCggeDg2X3ZlbmRvcl9pZCwgIkF1dGhl
bnRpY0FNRCIgKSA9PSAwICkgew0KKwkJCQlpZiggeDg2ID09IDUgKSB7DQor
CQkJCQlpZiggeDg2X21vZGVsID09IDAgKSB7DQorCQkJCQkJLyogdHVybiBv
biBjeWNsZSBjb3VudGVycyBkdXJpbmcgcG93ZXIgZG93biAqLw0KKwkJCQkJ
CV9fYXNtX18gX192b2xhdGlsZV9fICgiIG1vdmwgJDB4ODMsICUlZWN4IFxu
IFwNCisJCQkJCQkJCQkuYnl0ZSAweDBmLDB4MzIgXG4gXA0KKwkJCQkJCQkJ
CW9ybCAkMSwlJWVheCBcbiBcDQorCQkJCQkJCQkJLmJ5dGUgMHgwZiwweDMw
IFxuICIgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAk6IDogOiAiYXgiLCAiY3gi
LCAiZHgiICk7DQorCQkJCQkJdWRlbGF5KDUwMCk7DQorCQkJCQl9DQogCQkJ
CX0NCi0JCQl9DQotCQl9DQorCQkJfQkNCiANCi0JCS8qIHJlYWQgUGVudGl1
bSBjeWNsZSBjb3VudGVyICovDQotCQlfX2FzbV9fKCIuYnl0ZSAweDBmLDB4
MzEiDQotCQkJOiI9YSIgKGluaXRfdGltZXJfY2MubG93KSwNCi0JCQkgIj1k
IiAoaW5pdF90aW1lcl9jYy5oaWdoKSk7DQotCQlpcnEwLmhhbmRsZXIgPSBw
ZW50aXVtX3RpbWVyX2ludGVycnVwdDsNCi0JfQ0KKwkJCS8qIHJlYWQgUGVu
dGl1bSBjeWNsZSBjb3VudGVyICovDQorCQkJX19hc21fXygiLmJ5dGUgMHgw
ZiwweDMxIg0KKwkJCQk6Ij1hIiAoaW5pdF90aW1lcl9jYy5sb3cpLA0KKwkJ
CSAJIj1kIiAoaW5pdF90aW1lcl9jYy5oaWdoKSk7DQorCQkJaXJxMC5oYW5k
bGVyID0gcGVudGl1bV90aW1lcl9pbnRlcnJ1cHQ7DQorCQl9DQogI2VuZGlm
DQogCXNldHVwX3g4Nl9pcnEoMCwgJmlycTApOw0KIH0NCg==
--8323584-408640688-885855146=:8066--