Re: monomorphism restriction vs unused

Viktor Dukhovni <[email protected]> Mon, 22 Jun 2026 16:52:30 +1000
Newsgroups gmane.comp.lang.haskell.cafe
Message-ID <[email protected]>
T24gU3VuLCBKdW4gMjEsIDIwMjYgYXQgMDE6MDU6NThQTSAtMDcwMCwgRXZhbiBMYWZvcmdlIHdy
b3RlOg0KDQo+IEkgc2hvdWxkIGhhdmUgdHJpZWQgdGhpcyBiZWZvcmUgc2VuZGluZyEgIEl0IHR1
cm5zIG91dA0KPiBOb01vbm9tb3JwaGlzbVJlc3RyaWN0aW9uIGlzIG5vdCByZWFsbHkgYSB1c2Fi
bGUgd29ya2Fyb3VuZC4NCj4gRmlyc3QgaXQgc2VlbXMgdG8gdHJpZ2dlciBhIGJ1ZzoNCj4gDQo+
IERlcml2ZS9KU2NvcmUvVC5oczo3NjoxMTogZXJyb3I6IFtHSEMtMzk5OTldDQo+ICAgICDigKIg
QW1iaWd1b3VzIHR5cGUgdmFyaWFibGUg4oCYYTDigJkNCj4gICAgICAgR0hDIEJ1ZyAjMjAwNzYg
PGh0dHBzOi8vZ2l0bGFiLmhhc2tlbGwub3JnL2doYy9naGMvLS9pc3N1ZXMvMjAwNzY+DQo+ICAg
ICAgIEFzc3VtaW5nIHlvdSBoYXZlIGEgcGFydGlhbCB0eXBlIHNpZ25hdHVyZSwgeW91IGNhbiBh
dm9pZCB0aGlzIGVycm9yDQo+ICAgICAgIGJ5IGVpdGhlciBhZGRpbmcgYW4gZXh0cmEtY29uc3Ry
YWludHMgd2lsZGNhcmQgKGxpa2UgYCguLi4sIF8pID0+IC4uLmAsDQo+ICAgICAgIHdpdGggdGhl
IHVuZGVyc2NvcmUgYXQgdGhlIGVuZCBvZiB0aGUgY29uc3RyYWludCksIG9yIGJ5IGF2b2lkaW5n
IHRoZQ0KPiAgICAgICB1c2Ugb2YgYSBzaW1wbGlmaWFibGUgY29uc3RyYWludCBpbiB5b3VyIHBh
cnRpYWwgdHlwZSBzaWduYXR1cmUuDQo+ICAgICAgIHByZXZlbnRzIHRoZSBjb25zdHJhaW50IOKA
mChCb3VuZGVkIGEwKeKAmSBmcm9tIGJlaW5nIHNvbHZlZC4NCj4gICAgICAgUHJvYmFibGUgZml4
OiB1c2UgYSB0eXBlIGFubm90YXRpb24gdG8gc3BlY2lmeSB3aGF0IOKAmGEw4oCZIHNob3VsZCBi
ZS4NCj4gICAgICAgUG90ZW50aWFsbHkgbWF0Y2hpbmcgaW5zdGFuY2VzOg0KPiAgICAgICAgIGlu
c3RhbmNlIEJvdW5kZWQgT3JkZXJpbmcgLS0gRGVmaW5lZCBpbiDigJhHSEMuRW51beKAmQ0KPiAg
ICAgICAgIGluc3RhbmNlIEJvdW5kZWQgSW5zdHJ1bWVudCAtLSBEZWZpbmVkIGF0IERlcml2ZS9K
U2NvcmUvVC5oczoxMzI6MzANCj4gICAgICAgICAuLi5wbHVzIDIzIG90aGVycw0KPiAgICAgICAg
IC4uLnBsdXMgZm91ciBpbnN0YW5jZXMgaW52b2x2aW5nIG91dC1vZi1zY29wZSB0eXBlcw0KPiAg
ICAgICAgICh1c2UgLWZwcmludC1wb3RlbnRpYWwtaW5zdGFuY2VzIHRvIHNlZSB0aGVtIGFsbCkN
Cj4gDQo+IFRoaXMgaXMgaW4gYSBjb250ZXh0IHdoZXJlIGFsbCB0aGUgdHlwZXMgYXJlIGZ1bGx5
IHNwZWNpZmllZCwgYW5kIG5vDQo+IHBhcnRpYWwgdHlwZSBzaWduYXR1cmVzOg0KPiANCj4gYGBg
DQo+IGRhdGEgUGl0Y2hDbGFzcyA9IFAxIHwgUDIgfCBQMyB8IFA0IHwgUDUgfCBQNiB8IFA3DQo+
ICAgICBkZXJpdmluZyAoRXEsIE9yZCwgU2hvdywgQm91bmRlZCwgRW51bSkNCj4gZGF0YSBQaXRj
aCA9IFBpdGNoIHsgcGl0Y2hfb2N0YXZlIDo6IEludCwgcGl0Y2hfcGMgOjogUGl0Y2hDbGFzcyB9
DQo+ICAgICBkZXJpdmluZyAoRXEsIE9yZCwgU2hvdykNCj4gDQo+IHRvRW51bUJvdW5kZWQgOjog
Zm9yYWxsIGEuIChCb3VuZGVkIGEsIEVudW0gYSkgPT4gSW50IC0+IChJbnQsIGEpDQo+IHRvRW51
bUJvdW5kZWQgbiA9IChpLCB0b0VudW0gcikNCj4gICAgIHdoZXJlIChpLCByKSA9IG4gYGRpdk1v
ZGAgKGZyb21FbnVtIChtYXhCb3VuZCA6OiBhKSArIDEpDQo+IA0KPiBhZGRfcGNfYWJzIDo6IElu
dCAtPiBQaXRjaCAtPiBQaXRjaA0KPiBhZGRfcGNfYWJzIHN0ZXBzIChQaXRjaCBvY3RhdmUgcGMp
ID0gUGl0Y2ggKG9jdGF2ZSArIG9jdCkgcGMyDQo+ICAgICB3aGVyZSAob2N0LCBwYzIpID0gdG9F
bnVtQm91bmRlZCAkIGZyb21FbnVtIHBjICsgc3RlcHMNCj4gYGBgDQo+IA0KPiBgdG9FbnVtQm91
bmRlZGAgaXMgY29uc2lkZXJlZCBhbWJpZ3VvdXMgZXZlbiB0aG91Z2ggYHBjMmAgc2hvdWxkIGJl
DQo+IGNsZWFyLiAgYHBjMiA6OiBQaXRjaENsYXNzYCB3b3JrcyBhcm91bmQuDQoNCldpdGgganVz
dCB0aGUgcXVvdGVkIGFib3ZlIGNvZGUgZnJhZ21lbnQgYW5kDQoiTm9Nb25vbW9ycGhpc21SZXN0
cmljdGlvbiIsIHRlc3RpbmcgYSByYW5nZSBvZiBjb21waWxlciB2ZXJzaW9ucyBJIG9ubHkNCnNl
ZSB0aGUgcmVwb3J0ZWQgIkdIQyBCdWcgIzIwMDc2IiB3aXRoIEdIQyA5LjQgYW5kIDkuNiwgYnV0
IHRoZSBjb2RlDQpjb21waWxlcyBzdWNjZXNzZnVsbHkgb25seSB3aXRoIGEgbm93IHNvbWV3aGF0
IGRhdGVkIEdIQyAxMC4wIHNuYXBzaG90IEkNCmJ1aWx0IGJhY2sgaW4gQXByaWwuDQoNCkFyZSB5
b3UgdXNpbmcgYW55IGFkZGl0aW9uYWwgcmVsZXZhbnQgY29tcGlsZXIgb3B0aW9ucz8NCg0KLS0g
DQogICAgVmlrdG9yLiAg8J+HuvCfh6Yg0KHQu9Cw0LLQsCDQo9C60YDQsNGX0L3RliENCg0KR0hD
aSwgdmVyc2lvbiA4LjEwLjc6IGh0dHBzOi8vd3d3Lmhhc2tlbGwub3JnL2doYy8gIDo/IGZvciBo
ZWxwDQpbMSBvZiAxXSBDb21waWxpbmcgTWFpbiAgICAgICAgICAgICAoIC90bXAvZm9vLmhzLCBp
bnRlcnByZXRlZCApDQoNCi90bXAvZm9vLmhzOjE1OjExOiBlcnJvcjoNCiAgICDigKIgQW1iaWd1
b3VzIHR5cGUgdmFyaWFibGUg4oCYYjDigJkNCiAgICAgIHByZXZlbnRzIHRoZSBjb25zdHJhaW50
IOKAmChCb3VuZGVkIGIwKeKAmSBmcm9tIGJlaW5nIHNvbHZlZC4NCiAgICDigKIgV2hlbiBjaGVj
a2luZyB0aGF0IHRoZSBpbmZlcnJlZCB0eXBlDQogICAgICAgIG9jdCA6OiBmb3JhbGwgYi4gKEJv
dW5kZWQgYiwgRW51bSBiKSA9PiBJbnQNCiAgICAgIGlzIGFzIGdlbmVyYWwgYXMgaXRzIGluZmVy
cmVkIHNpZ25hdHVyZQ0KICAgICAgICBvY3QgOjogSW50DQogICAgICBJbiBhbiBlcXVhdGlvbiBm
b3Ig4oCYYWRkX3BjX2Fic+KAmToNCiAgICAgICAgICBhZGRfcGNfYWJzIHN0ZXBzIChQaXRjaCBv
Y3RhdmUgcGMpDQogICAgICAgICAgICA9IFBpdGNoIChvY3RhdmUgKyBvY3QpIHBjMg0KICAgICAg
ICAgICAgd2hlcmUNCiAgICAgICAgICAgICAgICAob2N0LCBwYzIpID0gdG9FbnVtQm91bmRlZCAk
IGZyb21FbnVtIHBjICsgc3RlcHMNCiAgIHwNCjE1IHwgICAgIHdoZXJlIChvY3QsIHBjMikgPSB0
b0VudW1Cb3VuZGVkICQgZnJvbUVudW0gcGMgKyBzdGVwcw0KICAgfCAgICAgICAgICAgXl5eXl5e
Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eDQpGYWlsZWQsIG5vIG1v
ZHVsZXMgbG9hZGVkLg0KDQotLS0tDQoNCkdIQ2ksIHZlcnNpb24gOS4yLjg6IGh0dHBzOi8vd3d3
Lmhhc2tlbGwub3JnL2doYy8gIDo/IGZvciBoZWxwDQpbMSBvZiAxXSBDb21waWxpbmcgTWFpbiAg
ICAgICAgICAgICAoIC90bXAvZm9vLmhzLCBpbnRlcnByZXRlZCApDQoNCi90bXAvZm9vLmhzOjE1
OjExOiBlcnJvcjoNCiAgICDigKIgQW1iaWd1b3VzIHR5cGUgdmFyaWFibGUg4oCYYTDigJkgYXJp
c2luZyBmcm9tIEdIQyBCdWcgIzIwMDc2DQogICAgICBwcmV2ZW50cyB0aGUgY29uc3RyYWludCDi
gJgoQm91bmRlZCBhMCnigJkgZnJvbSBiZWluZyBzb2x2ZWQuDQogICAgICBQcm9iYWJsZSBmaXg6
IHVzZSBhIHR5cGUgYW5ub3RhdGlvbiB0byBzcGVjaWZ5IHdoYXQg4oCYYTDigJkgc2hvdWxkIGJl
Lg0KICAgICAgVGhlc2UgcG90ZW50aWFsIGluc3RhbmNlcyBleGlzdDoNCiAgICAgICAgaW5zdGFu
Y2UgQm91bmRlZCBPcmRlcmluZyAtLSBEZWZpbmVkIGluIOKAmEdIQy5FbnVt4oCZDQogICAgICAg
IGluc3RhbmNlIEJvdW5kZWQgUGl0Y2hDbGFzcyAtLSBEZWZpbmVkIGF0IC90bXAvZm9vLmhzOjU6
MzANCiAgICAgICAgaW5zdGFuY2UgQm91bmRlZCAoKSAtLSBEZWZpbmVkIGluIOKAmEdIQy5FbnVt
4oCZDQogICAgICAgIC4uLnBsdXMgMTkgb3RoZXJzDQogICAgICAgIC4uLnBsdXMgdGhyZWUgaW5z
dGFuY2VzIGludm9sdmluZyBvdXQtb2Ytc2NvcGUgdHlwZXMNCiAgICAgICAgKHVzZSAtZnByaW50
LXBvdGVudGlhbC1pbnN0YW5jZXMgdG8gc2VlIHRoZW0gYWxsKQ0KICAgIOKAoiBXaGVuIGNoZWNr
aW5nIHRoYXQgdGhlIGluZmVycmVkIHR5cGUNCiAgICAgICAgb2N0IDo6IGZvcmFsbCB7YX0uIChC
b3VuZGVkIGEsIEVudW0gYSkgPT4gSW50DQogICAgICBpcyBhcyBnZW5lcmFsIGFzIGl0cyBpbmZl
cnJlZCBzaWduYXR1cmUNCiAgICAgICAgb2N0IDo6IEludA0KICAgICAgSW4gYW4gZXF1YXRpb24g
Zm9yIOKAmGFkZF9wY19hYnPigJk6DQogICAgICAgICAgYWRkX3BjX2FicyBzdGVwcyAoUGl0Y2gg
b2N0YXZlIHBjKQ0KICAgICAgICAgICAgPSBQaXRjaCAob2N0YXZlICsgb2N0KSBwYzINCiAgICAg
ICAgICAgIHdoZXJlDQogICAgICAgICAgICAgICAgKG9jdCwgcGMyKSA9IHRvRW51bUJvdW5kZWQg
JCBmcm9tRW51bSBwYyArIHN0ZXBzDQogICB8DQoxNSB8ICAgICB3aGVyZSAob2N0LCBwYzIpID0g
dG9FbnVtQm91bmRlZCAkIGZyb21FbnVtIHBjICsgc3RlcHMNCiAgIHwgICAgICAgICAgIF5eXl5e
Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXg0KRmFpbGVkLCBubyBt
b2R1bGVzIGxvYWRlZC4NCg0KLS0tLQ0KDQpHSENpLCB2ZXJzaW9uIDkuNC44OiBodHRwczovL3d3
dy5oYXNrZWxsLm9yZy9naGMvICA6PyBmb3IgaGVscA0KWzEgb2YgMl0gQ29tcGlsaW5nIE1haW4g
ICAgICAgICAgICAgKCAvdG1wL2Zvby5ocywgaW50ZXJwcmV0ZWQgKQ0KDQovdG1wL2Zvby5oczox
NToxMTogZXJyb3I6DQogICAg4oCiIEFtYmlndW91cyB0eXBlIHZhcmlhYmxlIOKAmGEw4oCZIEdI
QyBCdWcgIzIwMDc2IDxodHRwczovL2dpdGxhYi5oYXNrZWxsLm9yZy9naGMvZ2hjLy0vaXNzdWVz
LzIwMDc2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3N1bWluZyB5b3Ug
aGF2ZSBhIHBhcnRpYWwgdHlwZSBzaWduYXR1cmUsIHlvdSBjYW4gYXZvaWQgdGhpcyBlcnJvcg0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSBlaXRoZXIgYWRkaW5nIGFuIGV4
dHJhLWNvbnN0cmFpbnRzIHdpbGRjYXJkIChsaWtlIGAoLi4uLCBfKSA9PiAuLi5gLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSB1bmRlcnNjb3JlIGF0IHRoZSBl
bmQgb2YgdGhlIGNvbnN0cmFpbnQpLCBvciBieSBhdm9pZGluZyB0aGUNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXNlIG9mIGEgc2ltcGxpZmlhYmxlIGNvbnN0cmFpbnQgaW4g
eW91ciBwYXJ0aWFsIHR5cGUgc2lnbmF0dXJlLg0KICAgICAgcHJldmVudHMgdGhlIGNvbnN0cmFp
bnQg4oCYKEJvdW5kZWQgYTAp4oCZIGZyb20gYmVpbmcgc29sdmVkLg0KICAgICAgUHJvYmFibGUg
Zml4OiB1c2UgYSB0eXBlIGFubm90YXRpb24gdG8gc3BlY2lmeSB3aGF0IOKAmGEw4oCZIHNob3Vs
ZCBiZS4NCiAgICAgIFBvdGVudGlhbGx5IG1hdGNoaW5nIGluc3RhbmNlczoNCiAgICAgICAgaW5z
dGFuY2UgQm91bmRlZCBPcmRlcmluZyAtLSBEZWZpbmVkIGluIOKAmEdIQy5FbnVt4oCZDQogICAg
ICAgIGluc3RhbmNlIEJvdW5kZWQgUGl0Y2hDbGFzcyAtLSBEZWZpbmVkIGF0IC90bXAvZm9vLmhz
OjU6MzANCiAgICAgICAgLi4ucGx1cyAyMCBvdGhlcnMNCiAgICAgICAgLi4ucGx1cyB0aHJlZSBp
bnN0YW5jZXMgaW52b2x2aW5nIG91dC1vZi1zY29wZSB0eXBlcw0KICAgICAgICAodXNlIC1mcHJp
bnQtcG90ZW50aWFsLWluc3RhbmNlcyB0byBzZWUgdGhlbSBhbGwpDQogICAg4oCiIEluIGFuIGVx
dWF0aW9uIGZvciDigJhhZGRfcGNfYWJz4oCZOg0KICAgICAgICAgIGFkZF9wY19hYnMgc3RlcHMg
KFBpdGNoIG9jdGF2ZSBwYykNCiAgICAgICAgICAgID0gUGl0Y2ggKG9jdGF2ZSArIG9jdCkgcGMy
DQogICAgICAgICAgICB3aGVyZQ0KICAgICAgICAgICAgICAgIChvY3QsIHBjMikgPSB0b0VudW1C
b3VuZGVkICQgZnJvbUVudW0gcGMgKyBzdGVwcw0KICAgfA0KMTUgfCAgICAgd2hlcmUgKG9jdCwg
cGMyKSA9IHRvRW51bUJvdW5kZWQgJCBmcm9tRW51bSBwYyArIHN0ZXBzDQogICB8ICAgICAgICAg
ICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4NCkZhaWxl
ZCwgbm8gbW9kdWxlcyBsb2FkZWQuDQoNCi0tLS0NCg0KR0hDaSwgdmVyc2lvbiA5LjYuNDogaHR0
cHM6Ly93d3cuaGFza2VsbC5vcmcvZ2hjLyAgOj8gZm9yIGhlbHANClsxIG9mIDJdIENvbXBpbGlu
ZyBNYWluICAgICAgICAgICAgICggL3RtcC9mb28uaHMsIGludGVycHJldGVkICkNCg0KL3RtcC9m
b28uaHM6MTU6MTE6IGVycm9yOiBbR0hDLTM5OTk5XQ0KICAgIOKAoiBBbWJpZ3VvdXMgdHlwZSB2
YXJpYWJsZSDigJhhMOKAmSBHSEMgQnVnICMyMDA3NiA8aHR0cHM6Ly9naXRsYWIuaGFza2VsbC5v
cmcvZ2hjL2doYy8tL2lzc3Vlcy8yMDA3Nj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQXNzdW1pbmcgeW91IGhhdmUgYSBwYXJ0aWFsIHR5cGUgc2lnbmF0dXJlLCB5b3UgY2Fu
IGF2b2lkIHRoaXMgZXJyb3INCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkg
ZWl0aGVyIGFkZGluZyBhbiBleHRyYS1jb25zdHJhaW50cyB3aWxkY2FyZCAobGlrZSBgKC4uLiwg
XykgPT4gLi4uYCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUg
dW5kZXJzY29yZSBhdCB0aGUgZW5kIG9mIHRoZSBjb25zdHJhaW50KSwgb3IgYnkgYXZvaWRpbmcg
dGhlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZSBvZiBhIHNpbXBsaWZp
YWJsZSBjb25zdHJhaW50IGluIHlvdXIgcGFydGlhbCB0eXBlIHNpZ25hdHVyZS4NCiAgICAgIHBy
ZXZlbnRzIHRoZSBjb25zdHJhaW50IOKAmChCb3VuZGVkIGEwKeKAmSBmcm9tIGJlaW5nIHNvbHZl
ZC4NCiAgICAgIFByb2JhYmxlIGZpeDogdXNlIGEgdHlwZSBhbm5vdGF0aW9uIHRvIHNwZWNpZnkg
d2hhdCDigJhhMOKAmSBzaG91bGQgYmUuDQogICAgICBQb3RlbnRpYWxseSBtYXRjaGluZyBpbnN0
YW5jZXM6DQogICAgICAgIGluc3RhbmNlIEJvdW5kZWQgT3JkZXJpbmcgLS0gRGVmaW5lZCBpbiDi
gJhHSEMuRW51beKAmQ0KICAgICAgICBpbnN0YW5jZSBCb3VuZGVkIFBpdGNoQ2xhc3MgLS0gRGVm
aW5lZCBhdCAvdG1wL2Zvby5oczo1OjMwDQogICAgICAgIC4uLnBsdXMgMjAgb3RoZXJzDQogICAg
ICAgIC4uLnBsdXMgdGhyZWUgaW5zdGFuY2VzIGludm9sdmluZyBvdXQtb2Ytc2NvcGUgdHlwZXMN
CiAgICAgICAgKHVzZSAtZnByaW50LXBvdGVudGlhbC1pbnN0YW5jZXMgdG8gc2VlIHRoZW0gYWxs
KQ0KICAgIOKAoiBJbiBhbiBlcXVhdGlvbiBmb3Ig4oCYYWRkX3BjX2Fic+KAmToNCiAgICAgICAg
ICBhZGRfcGNfYWJzIHN0ZXBzIChQaXRjaCBvY3RhdmUgcGMpDQogICAgICAgICAgICA9IFBpdGNo
IChvY3RhdmUgKyBvY3QpIHBjMg0KICAgICAgICAgICAgd2hlcmUNCiAgICAgICAgICAgICAgICAo
b2N0LCBwYzIpID0gdG9FbnVtQm91bmRlZCAkIGZyb21FbnVtIHBjICsgc3RlcHMNCiAgIHwNCjE1
IHwgICAgIHdoZXJlIChvY3QsIHBjMikgPSB0b0VudW1Cb3VuZGVkICQgZnJvbUVudW0gcGMgKyBz
dGVwcw0KICAgfCAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e
Xl5eXl5eXl5eXl5eDQpGYWlsZWQsIG5vIG1vZHVsZXMgbG9hZGVkLg0KDQotLS0tDQoNCkdIQ2ks
IHZlcnNpb24gOS44LjM6IGh0dHBzOi8vd3d3Lmhhc2tlbGwub3JnL2doYy8gIDo/IGZvciBoZWxw
DQpbMSBvZiAyXSBDb21waWxpbmcgTWFpbiAgICAgICAgICAgICAoIC90bXAvZm9vLmhzLCBpbnRl
cnByZXRlZCApDQoNCi90bXAvZm9vLmhzOjE1OjExOiBlcnJvcjogW0dIQy0zOTk5OV0NCiAgICDi
gKIgQW1iaWd1b3VzIHR5cGUgdmFyaWFibGUg4oCYYTDigJkgYXJpc2luZyB3aGVuIG1hdGNoaW5n
IHJlcXVpcmVkIGNvbnN0cmFpbnRzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIGEgZ3JvdXAgaW52b2x2aW5nIOKAmG9jdOKAmQ0KICAgICAgcHJldmVudHMgdGhlIGNvbnN0
cmFpbnQg4oCYKEJvdW5kZWQgYTAp4oCZIGZyb20gYmVpbmcgc29sdmVkLg0KICAgICAgUHJvYmFi
bGUgZml4OiB1c2UgYSB0eXBlIGFubm90YXRpb24gdG8gc3BlY2lmeSB3aGF0IOKAmGEw4oCZIHNo
b3VsZCBiZS4NCiAgICAgIFBvdGVudGlhbGx5IG1hdGNoaW5nIGluc3RhbmNlczoNCiAgICAgICAg
aW5zdGFuY2UgQm91bmRlZCBPcmRlcmluZyAtLSBEZWZpbmVkIGluIOKAmEdIQy5FbnVt4oCZDQog
ICAgICAgIGluc3RhbmNlIEJvdW5kZWQgUGl0Y2hDbGFzcyAtLSBEZWZpbmVkIGF0IC90bXAvZm9v
LmhzOjU6MzANCiAgICAgICAgLi4ucGx1cyAyMCBvdGhlcnMNCiAgICAgICAgLi4ucGx1cyB0aHJl
ZSBpbnN0YW5jZXMgaW52b2x2aW5nIG91dC1vZi1zY29wZSB0eXBlcw0KICAgICAgICAodXNlIC1m
cHJpbnQtcG90ZW50aWFsLWluc3RhbmNlcyB0byBzZWUgdGhlbSBhbGwpDQogICAg4oCiIEluIGFu
IGVxdWF0aW9uIGZvciDigJhhZGRfcGNfYWJz4oCZOg0KICAgICAgICAgIGFkZF9wY19hYnMgc3Rl
cHMgKFBpdGNoIG9jdGF2ZSBwYykNCiAgICAgICAgICAgID0gUGl0Y2ggKG9jdGF2ZSArIG9jdCkg
cGMyDQogICAgICAgICAgICB3aGVyZQ0KICAgICAgICAgICAgICAgIChvY3QsIHBjMikgPSB0b0Vu
dW1Cb3VuZGVkICQgZnJvbUVudW0gcGMgKyBzdGVwcw0KICAgfA0KMTUgfCAgICAgd2hlcmUgKG9j
dCwgcGMyKSA9IHRvRW51bUJvdW5kZWQgJCBmcm9tRW51bSBwYyArIHN0ZXBzDQogICB8ICAgICAg
ICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4NCkZh
aWxlZCwgbm8gbW9kdWxlcyBsb2FkZWQuDQoNCi0tLS0NCg0KR0hDaSwgdmVyc2lvbiA5LjEwLjM6
IGh0dHBzOi8vd3d3Lmhhc2tlbGwub3JnL2doYy8gIDo/IGZvciBoZWxwDQpbMSBvZiAyXSBDb21w
aWxpbmcgTWFpbiAgICAgICAgICAgICAoIC90bXAvZm9vLmhzLCBpbnRlcnByZXRlZCApDQovdG1w
L2Zvby5oczoxNToxMTogZXJyb3I6IFtHSEMtMzk5OTldDQogICAg4oCiIEFtYmlndW91cyB0eXBl
IHZhcmlhYmxlIOKAmGEw4oCZIGFyaXNpbmcgd2hlbiBtYXRjaGluZyByZXF1aXJlZCBjb25zdHJh
aW50cw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIGdyb3VwIGludm9s
dmluZyDigJhvY3TigJkNCiAgICAgIHByZXZlbnRzIHRoZSBjb25zdHJhaW50IOKAmChCb3VuZGVk
IGEwKeKAmSBmcm9tIGJlaW5nIHNvbHZlZC4NCiAgICAgIFByb2JhYmxlIGZpeDogdXNlIGEgdHlw
ZSBhbm5vdGF0aW9uIHRvIHNwZWNpZnkgd2hhdCDigJhhMOKAmSBzaG91bGQgYmUuDQogICAgICBQ
b3RlbnRpYWxseSBtYXRjaGluZyBpbnN0YW5jZXM6DQogICAgICAgIGluc3RhbmNlIEJvdW5kZWQg
T3JkZXJpbmcgLS0gRGVmaW5lZCBpbiDigJhHSEMuSW50ZXJuYWwuRW51beKAmQ0KICAgICAgICBp
bnN0YW5jZSBCb3VuZGVkIFBpdGNoQ2xhc3MgLS0gRGVmaW5lZCBhdCAvdG1wL2Zvby5oczo1OjMw
DQogICAgICAgIC4uLnBsdXMgMjAgb3RoZXJzDQogICAgICAgIC4uLnBsdXMgdGhyZWUgaW5zdGFu
Y2VzIGludm9sdmluZyBvdXQtb2Ytc2NvcGUgdHlwZXMNCiAgICAgICAgKHVzZSAtZnByaW50LXBv
dGVudGlhbC1pbnN0YW5jZXMgdG8gc2VlIHRoZW0gYWxsKQ0KICAgIOKAoiBJbiBhbiBlcXVhdGlv
biBmb3Ig4oCYYWRkX3BjX2Fic+KAmToNCiAgICAgICAgICBhZGRfcGNfYWJzIHN0ZXBzIChQaXRj
aCBvY3RhdmUgcGMpDQogICAgICAgICAgICA9IFBpdGNoIChvY3RhdmUgKyBvY3QpIHBjMg0KICAg
ICAgICAgICAgd2hlcmUNCiAgICAgICAgICAgICAgICAob2N0LCBwYzIpID0gdG9FbnVtQm91bmRl
ZCAkIGZyb21FbnVtIHBjICsgc3RlcHMNCiAgIHwNCjE1IHwgICAgIHdoZXJlIChvY3QsIHBjMikg
PSB0b0VudW1Cb3VuZGVkICQgZnJvbUVudW0gcGMgKyBzdGVwcw0KICAgfCAgICAgICAgICAgXl5e
Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eDQoNCkZhaWxlZCwg
dW5sb2FkZWQgYWxsIG1vZHVsZXMuDQoNCi0tLS0NCg0KR0hDaSwgdmVyc2lvbiA5LjEyLjQ6IGh0
dHBzOi8vd3d3Lmhhc2tlbGwub3JnL2doYy8gIDo/IGZvciBoZWxwDQpbMSBvZiAyXSBDb21waWxp
bmcgTWFpbiAgICAgICAgICAgICAoIC90bXAvZm9vLmhzLCBpbnRlcnByZXRlZCApDQovdG1wL2Zv
by5oczoxNToxMTogZXJyb3I6IFtHSEMtMzk5OTldDQogICAg4oCiIEFtYmlndW91cyB0eXBlIHZh
cmlhYmxlIOKAmGEw4oCZIGFyaXNpbmcgd2hlbiBtYXRjaGluZyByZXF1aXJlZCBjb25zdHJhaW50
cw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIGdyb3VwIGludm9sdmlu
ZyDigJhvY3TigJkNCiAgICAgIHByZXZlbnRzIHRoZSBjb25zdHJhaW50IOKAmChCb3VuZGVkIGEw
KeKAmSBmcm9tIGJlaW5nIHNvbHZlZC4NCiAgICAgIFByb2JhYmxlIGZpeDogdXNlIGEgdHlwZSBh
bm5vdGF0aW9uIHRvIHNwZWNpZnkgd2hhdCDigJhhMOKAmSBzaG91bGQgYmUuDQogICAgICBQb3Rl
bnRpYWxseSBtYXRjaGluZyBpbnN0YW5jZXM6DQogICAgICAgIGluc3RhbmNlIEJvdW5kZWQgT3Jk
ZXJpbmcgLS0gRGVmaW5lZCBpbiDigJhHSEMuSW50ZXJuYWwuRW51beKAmQ0KICAgICAgICBpbnN0
YW5jZSBCb3VuZGVkIFBpdGNoQ2xhc3MgLS0gRGVmaW5lZCBhdCAvdG1wL2Zvby5oczo1OjMwDQog
ICAgICAgIC4uLnBsdXMgMjAgb3RoZXJzDQogICAgICAgIC4uLnBsdXMgdGhyZWUgaW5zdGFuY2Vz
IGludm9sdmluZyBvdXQtb2Ytc2NvcGUgdHlwZXMNCiAgICAgICAgKHVzZSAtZnByaW50LXBvdGVu
dGlhbC1pbnN0YW5jZXMgdG8gc2VlIHRoZW0gYWxsKQ0KICAgIOKAoiBJbiBhbiBlcXVhdGlvbiBm
b3Ig4oCYYWRkX3BjX2Fic+KAmToNCiAgICAgICAgICBhZGRfcGNfYWJzIHN0ZXBzIChQaXRjaCBv
Y3RhdmUgcGMpDQogICAgICAgICAgICA9IFBpdGNoIChvY3RhdmUgKyBvY3QpIHBjMg0KICAgICAg
ICAgICAgd2hlcmUNCiAgICAgICAgICAgICAgICAob2N0LCBwYzIpID0gdG9FbnVtQm91bmRlZCAk
IGZyb21FbnVtIHBjICsgc3RlcHMNCiAgIHwNCjE1IHwgICAgIHdoZXJlIChvY3QsIHBjMikgPSB0
b0VudW1Cb3VuZGVkICQgZnJvbUVudW0gcGMgKyBzdGVwcw0KICAgfCAgICAgICAgICAgXl5eXl5e
Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eDQoNCkZhaWxlZCwgdW5s
b2FkZWQgYWxsIG1vZHVsZXMuDQoNCi0tLS0NCg0KR0hDaSwgdmVyc2lvbiA5LjE0LjE6IGh0dHBz
Oi8vd3d3Lmhhc2tlbGwub3JnL2doYy8gIDo/IGZvciBoZWxwDQpbMSBvZiAyXSBDb21waWxpbmcg
TWFpbiAgICAgICAgICAgICAoIC90bXAvZm9vLmhzLCBpbnRlcnByZXRlZCApW21haW5dDQovdG1w
L2Zvby5oczoxNToxMTogZXJyb3I6IFtHSEMtMzk5OTldDQogICAg4oCiIEFtYmlndW91cyB0eXBl
IHZhcmlhYmxlIOKAmGEw4oCZIGFyaXNpbmcgZnJvbSBtYXRjaGluZyByZXF1aXJlZCBjb25zdHJh
aW50cw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIGJpbmRpbmcgZ3Jv
dXAgaW52b2x2aW5nIOKAmG9jdOKAmQ0KICAgICAgcHJldmVudHMgdGhlIGNvbnN0cmFpbnQg4oCY
KEJvdW5kZWQgYTAp4oCZIGZyb20gYmVpbmcgc29sdmVkLg0KICAgICAgUHJvYmFibGUgZml4OiB1
c2UgYSB0eXBlIGFubm90YXRpb24gdG8gc3BlY2lmeSB3aGF0IOKAmGEw4oCZIHNob3VsZCBiZS4N
CiAgICAgIFBvdGVudGlhbGx5IG1hdGNoaW5nIGluc3RhbmNlczoNCiAgICAgICAgaW5zdGFuY2Ug
Qm91bmRlZCBPcmRlcmluZyAtLSBEZWZpbmVkIGluIOKAmEdIQy5JbnRlcm5hbC5FbnVt4oCZDQog
ICAgICAgIGluc3RhbmNlIEJvdW5kZWQgUGl0Y2hDbGFzcyAtLSBEZWZpbmVkIGF0IC90bXAvZm9v
LmhzOjU6MzANCiAgICAgICAgLi4ucGx1cyAyMCBvdGhlcnMNCiAgICAgICAgLi4ucGx1cyB0aHJl
ZSBpbnN0YW5jZXMgaW52b2x2aW5nIG91dC1vZi1zY29wZSB0eXBlcw0KICAgICAgICAodXNlIC1m
cHJpbnQtcG90ZW50aWFsLWluc3RhbmNlcyB0byBzZWUgdGhlbSBhbGwpDQogICAg4oCiIEluIGFu
IGVxdWF0aW9uIGZvciDigJhhZGRfcGNfYWJz4oCZOg0KICAgICAgICAgIGFkZF9wY19hYnMgc3Rl
cHMgKFBpdGNoIG9jdGF2ZSBwYykNCiAgICAgICAgICAgID0gUGl0Y2ggKG9jdGF2ZSArIG9jdCkg
cGMyDQogICAgICAgICAgICB3aGVyZQ0KICAgICAgICAgICAgICAgIChvY3QsIHBjMikgPSB0b0Vu
dW1Cb3VuZGVkICQgZnJvbUVudW0gcGMgKyBzdGVwcw0KICAgfA0KMTUgfCAgICAgd2hlcmUgKG9j
dCwgcGMyKSA9IHRvRW51bUJvdW5kZWQgJCBmcm9tRW51bSBwYyArIHN0ZXBzDQogICB8ICAgICAg
ICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4NCg0K
RmFpbGVkLCB1bmxvYWRlZCBhbGwgbW9kdWxlcy4NCg0KLS0tLQ0KDQpHSENpLCB2ZXJzaW9uIDEw
LjAuMC4yMDI2MDQyNzogaHR0cHM6Ly93d3cuaGFza2VsbC5vcmcvZ2hjLyAgOj8gZm9yIGhlbHAN
ClVzaW5nIGRlZmF1bHQgbGFuZ3VhZ2UgZWRpdGlvbjogR0hDMjAyNA0KWzEgb2YgMl0gQ29tcGls
aW5nIE1haW4gICAgICAgICAgICAgKCAvdG1wL2Zvby5ocywgaW50ZXJwcmV0ZWQgKVttYWluXQ0K
T2ssIG9uZSBtb2R1bGUgbG9hZGVkLg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KSGFza2VsbC1DYWZlIG1haWxpbmcgbGlzdCAtLSBoYXNrZWxsLWNhZmVA
aGFza2VsbC5vcmcKVG8gKHVuKXN1YnNjcmliZSwgbW9kaWZ5IG9wdGlvbnMgb3IgdmlldyBhcmNo
aXZlcyBnbyB0bzoKT25seSBtZW1iZXJzIHN1YnNjcmliZWQgdmlhIHRoZSBtYWlsbWFuIGxpc3Qg
YXJlIGFsbG93ZWQgdG8gcG9zdC4=