[#122643] [Ruby Bug#21498] Windows - Ruby Overrides C Library APIs thus breaking them — "cfis (Charlie Savage) via ruby-core" <ruby-core@...>

Issue #21498 has been reported by cfis (Charlie Savage).

9 messages 2025/07/02

[#122658] [Ruby Feature#21501] Include native filenames in backtraces as sources for native methods — "ivoanjo (Ivo Anjo) via ruby-core" <ruby-core@...>

Issue #21501 has been reported by ivoanjo (Ivo Anjo).

10 messages 2025/07/05

[#122665] [Ruby Bug#21503] \p{Word} does not match on \p{Join_Control} while docs say it does — "procmarco (Marco Concetto Rudilosso) via ruby-core" <ruby-core@...>

SXNzdWUgIzIxNTAzIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IHByb2NtYXJjbyAoTWFyY28gQ29uY2V0

8 messages 2025/07/07

[#122734] [Ruby Bug#21511] Use-after-free of the execution context after the fiber object carrying it is freed in GC — "tuonigou (tianyang sun) via ruby-core" <ruby-core@...>

Issue #21511 has been reported by tuonigou (tianyang sun).

10 messages 2025/07/14

[#122797] [Ruby Feature#21515] Add `&return` as sugar for `x=my_calculation; return x if x` — "nhorton (Noah Horton) via ruby-core" <ruby-core@...>

Issue #21515 has been reported by nhorton (Noah Horton).

13 messages 2025/07/16

[#122842] [Ruby Feature#21518] Statistical helpers to `Enumerable` — "Amitleshed (Amit Leshed) via ruby-core" <ruby-core@...>

SXNzdWUgIzIxNTE4IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IEFtaXRsZXNoZWQgKEFtaXQgTGVzaGVk

12 messages 2025/07/23

[#122847] [Ruby Feature#21520] Feature Proposal: Enumerator::Lazy#peek — "nuzair46 (Nuzair Rasheed) via ruby-core" <ruby-core@...>

SXNzdWUgIzIxNTIwIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IG51emFpcjQ2IChOdXphaXIgUmFzaGVl

12 messages 2025/07/24

[ruby-core:122673] [Ruby Feature#21262] Proposal: `Ractor::Port`

From: "ko1 (Koichi Sasada) via ruby-core" <ruby-core@...>
Date: 2025-07-08 05:37:51 UTC
List: ruby-core #122673
SXNzdWUgIzIxMjYyIGhhcyBiZWVuIHVwZGF0ZWQgYnkga28xIChLb2ljaGkgU2FzYWRhKS4NCg0K
U3RhdHVzIGNoYW5nZWQgZnJvbSBBc3NpZ25lZCB0byBDbG9zZWQNCg0KaHR0cHM6Ly9naXRodWIu
Y29tL3J1YnkvZGV2LW1lZXRpbmctbG9nL2Jsb2IvbWFzdGVyLzIwMjUvRGV2TWVldGluZy0yMDI1
LTA2LTA1Lm1kI2ZlYXR1cmUtMjEyNjItcHJvcG9zYWwtcmFjdG9ycG9ydA0KDQo+IG1hdHo6IGdv
IGFoZWFkLiBJIGFncmVlIHRvIGRlbGV0ZSBSYWN0b3IjdGFrZS4NCg0KDQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpGZWF0dXJlICMyMTI2MjogUHJvcG9zYWw6IGBS
YWN0b3I6OlBvcnRgDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMjEyNjIjY2hh
bmdlLTExMzk1Mw0KDQoqIEF1dGhvcjoga28xIChLb2ljaGkgU2FzYWRhKQ0KKiBTdGF0dXM6IENs
b3NlZA0KKiBBc3NpZ25lZToga28xIChLb2ljaGkgU2FzYWRhKQ0KKiBUYXJnZXQgdmVyc2lvbjog
My41DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByb3Bvc2Fs
OiBgUmFjdG9yOjpQb3J0YA0KDQpJbiBjb25jdXJyZW50IFJ1YnkgYXBwbGljYXRpb25zIHVzaW5n
IFJhY3RvcnMsIHNhZmVseSBhbmQgZWZmaWNpZW50bHkgY29tbXVuaWNhdGluZyByZXN1bHRzIGJl
dHdlZW4gUmFjdG9ycyBpcyBhIGNvbW1vbiBjaGFsbGVuZ2UuIFdlIHByb3Bvc2UgYFJhY3Rvcjo6
UG9ydGAgYXMgYSBsaWdodHdlaWdodCwgc2FmZSwgYW5kIGVyZ29ub21pYyBhYnN0cmFjdGlvbiB0
byBzaW1wbGlmeSBjb21tdW5pY2F0aW9uIHBhdHRlcm5zLCBlc3BlY2lhbGx5IGluIHJlcXVlc3Qt
cmVzcG9uc2UgbW9kZWxzLg0KDQpgYGBydWJ5DQojIHVzYWdlIGV4YW1wbGUNCg0KcG9ydCA9IFJh
Y3Rvcjo6UG9ydC5uZXcNCg0KUmFjdG9yLm5ldyBwb3J0IGRvIHxwb3J0fA0KICBwb3J0IDw8IDQy
DQogIHBvcnQgPDwgNDMNCmVuZA0KDQojIFN1Y2Nlc3M6IHdhaXQgZm9yIHNlbmRpbmcNCnBvcnQu
cmVjZWl2ZSAjPT4gNDINCg0KUmFjdG9yLm5ldyBwb3J0IGRvIHxwb3J0fA0KICBwb3J0LnJlY2Vp
dmUgIyBFcnJvcjogb25seSB0aGUgY3JlYXRvciBSYWN0b3IgY2FuIHJlY2VpdmUgZnJvbSB0aGlz
IHBvcnQuDQplbmQNCg0KcG9ydC5yZWNlaXZlICM9PiA0Mw0KYGBgDQoNClRoaXMgaXMgYSBzaW1p
bGFyIGNvbmNlcHQgdG8gWyJDaGFubmVsIl0oaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNz
dWVzLzIxMTIxKSwgYnV0IGl0IGlzIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBjcmVhdG9yIFJh
Y3RvciBhbmQgbm8gb3RoZXIgUmFjdG9ycyBjYW4gcmVjZWl2ZSBhbnl0aGluZyBmcm9tIHRoYXQg
cG9ydC4NCg0KSW4gdGhhdCBzZW5zZSwgaXQgaXMgY29uY2VwdHVhbGx5IGNsb3NlciB0byBhIHNv
Y2tldCBmaWxlIGRlc2NyaXB0b3IgKGUuZy4sIGEgZGVzdGluYXRpb24gYW5kIHBvcnQgbnVtYmVy
IHBhaXIgaW4gVENQL0lQKS4NCg0KV2UgY2FuIGltcGxlbWVudCBgUG9ydGAgd2l0aCBgUmFjdG9y
LnJlY2VpdmVfaWZgIGxpa2UgdGhpczoNCg0KYGBgcnVieQ0KY2xhc3MgUmFjdG9yOjpQb3J0DQog
IGRlZiBpbml0aWFsaXplDQogICAgQHIgPSBSYWN0b3IuY3VycmVudA0KICAgIEB0YWcgPSBnZW5p
ZCgpDQogIGVuZA0KDQogIGRlZiBzZW5kIG9iag0KICAgIEByIDw8IFtAdGFnLCBvYmpdDQogIGVu
ZA0KDQogIGRlZiByZWNlaXZlDQogICAgcmFpc2UgdW5sZXNzIEByID09IFJhY3Rvci5jdXJyZW50
DQoNCiAgICBSYWN0b3IucmVjZWl2ZV9pZiBkbyB8KHRhZywgcmVzdWx0KQ0KICAgICAgaWYgdGFn
ID09IEB0YWcNCiAgICAgICAgcmV0dXJuIHJlc3VsdA0KICAgICAgZW5kDQogICAgZW5kDQogIGVu
ZA0KZW5kDQpgYGANCg0KV2l0aCBgUmFjdG9yOjpQb3J0YCwgd2UgY2FuIGRlcHJlY2F0ZSBgUmFj
dG9yLnJlY2VpdmVfaWZgLCBgUmFjdG9yLnlpZWxkYCwgYW5kIGBSYWN0b3IjdGFrZWAuIFBvcnRz
IGFjdCBhcyBjbGVhciwgc2VsZi1jb250YWluZWQgZW5kcG9pbnRzIGZvciBtZXNzYWdlIHBhc3Np
bmcsIHdoaWNoIG1ha2VzIHRoZXNlIG9sZGVyIHByaW1pdGl2ZXMgcmVkdW5kYW50LiBGdXJ0aGVy
bW9yZSwgUG9ydC1iYXNlZCBjb21tdW5pY2F0aW9uIGlzIHNpZ25pZmljYW50bHkgZWFzaWVyIHRv
IGltcGxlbWVudCBhbmQgcmVhc29uIGFib3V04oCUZXNwZWNpYWxseSB3aGVuIGNvbnNpZGVyaW5n
IHN5bmNocm9uaXphdGlvbiBjaGFsbGVuZ2VzIGFyb3VuZCBgUmFjdG9yLnNlbGVjdGAgYW5kIHJl
bmRlenZvdXMgc2VtYW50aWNzLg0KDQojIyBCYWNrZ3JvdW5kOiBMaW1pdGF0aW9ucyBvZiBjdXJy
ZW50IGNvbW11bmljYXRpb24gcGF0dGVybnMNCg0KTGV0J3MgZGlzY3VzcyBob3cgdG8gbWFrZSBz
ZXJ2ZXItbGlrZSBzZXJ2aWNlIHJhY3RvcnMuDQoNCiMjIyBObyByZXNwb25zZSBzZXJ2ZXINCg0K
V2UgY2FuIG1ha2Ugc2VydmVyLWxpa2UgUmFjdG9ycyBsaWtlIHRoaXM6DQoNCmBgYHJ1YnkNCiMg
RVgxDQoNCmRlZiBmaWIobikgPSBuID4gMSA6IGZpYihuLTIpICsgZmliKG4tMSkgOiAxDQoNCiMg
QSByYWN0b3IgY2FsY3VsYXRlIGZpYihuKQ0KZmliX3NydiA9IFJhY3Rvci5uZXcgZG8NCiAgd2hp
bGUgdHJ1ZQ0KICAgIHBhcmFtID0gUmFjdG9yLnJlY2VpdmUNCiAgICByZXN1bHQgPSBmaWIocGFy
YW0pDQogIGVuZA0KZW5kDQoNCmZpYl9zcnYgPDwgMTANCmBgYA0KDQpJbiB0aGlzIGNhc2UsIHRo
ZSBtYWluIFJhY3RvciByZXF1ZXN0cyBgZmliX3NydmAgdG8gY2FsY3VsYXRlIGBmaWIoMTApYC4N
Ckhvd2V2ZXIsIGN1cnJlbnRseSwgdGhlcmUgaXMgbm8gd2F5IHRvIHJldHJpZXZlIHRoZSByZXN1
bHQuDQoNCiMjIyBSZXR1cm4gdmFsdWUgdG8gdGhlIHNlbmRlciByYWN0b3INCg0KVGhlcmUgYXJl
IHNldmVyYWwgcG9zc2libGUgYXBwcm9hY2hlcy4NCg0KRmlyc3QsIHdlIGNhbiBzZW5kIHRoZSBz
ZW5kZXIgUmFjdG9yIGFsb25nIHdpdGggdGhlIHBhcmFtZXRlciwgYW5kIGFzayB0aGUgc2VydmVy
IHRvIHNlbmQgdGhlIHJlc3VsdCBiYWNrIHRvIHRoZSBzZW5kZXIuDQoNCmBgYHJ1YnkNCiMgRVgy
DQoNCmZpYl9zcnYgPSBSYWN0b3IubmV3IGRvDQogIHdoaWxlIHRydWUNCiAgICBwYXJhbSwgc2Vu
ZGVyID0gUmFjdG9yLnJlY2VpdmUNCiAgICByZXN1bHQgPSBmaWIocGFyYW0pDQogICAgc2VuZGVy
IDw8IHJlc3VsdA0KICBlbmQNCmVuZA0KDQpmaWJfc3J2IDw8IFsxMCwgUmFjdG9yLmN1cnJlbnRd
DQoNCmRvX3NvbWVfd29yaygpDQoNClJhY3Rvci5yZWNlaXZlICM9PiBmaWIoMTApDQpgYGANCg0K
VGhpcyBhcHByb2FjaCB3b3JrcyB3ZWxsIGluIHNpbXBsZSBjYXNlcy4NCg0KSG93ZXZlciwgd2l0
aCBFWDIsIGhhbmRsaW5nIG11bHRpcGxlIGNvbmN1cnJlbnQgcmVzcG9uc2VzIGJlY29tZXMgZGlm
ZmljdWx0LiBUaGUgcmVzdWx0cyBhcmUgcHVzaGVkIGludG8gdGhlIHNhbWUgbWFpbGJveCwgYW5k
IHNpbmNlIGBSYWN0b3IucmVjZWl2ZWAgcmV0cmlldmVzIG1lc3NhZ2VzIHdpdGhvdXQgZGlzY3Jp
bWluYXRpbmcgdGhlIHNvdXJjZSwgaXQncyB1bmNsZWFyIHdoaWNoIHNlcnZlciByZXR1cm5lZCB3
aGljaCByZXN1bHQuDQoNCmBgYHJ1YnkNCiMgRVgzDQoNCmRlZiBmYWN0KG4pID0gbiA+IDEgOiBm
YWN0KG4tMSkgKiBuDQoNCmZpYl9zcnYgPSBSYWN0b3IubmV3IGRvDQogIHdoaWxlIHRydWUNCiAg
ICBwYXJhbSwgc2VuZGVyID0gUmFjdG9yLnJlY2VpdmUNCiAgICByZXN1bHQgPSBmaWIocGFyYW0p
DQogICAgc2VuZGVyIDw8IHJlc3VsdA0KICBlbmQNCmVuZA0KDQpmYWN0X3NydiA9IFJhY3Rvci5u
ZXcgZG8NCiAgd2hpbGUgdHJ1ZQ0KICAgIHBhcmFtLCBzZW5kZXIgPSBSYWN0b3IucmVjZWl2ZQ0K
ICAgIHJlc3VsdCA9IGZhY3QocGFyYW0pDQogICAgc2VuZGVyIDw8IHJlc3VsdA0KICBlbmQNCmVu
ZA0KDQoNCmZpYl9zcnYgPDwgWzEwLCBSYWN0b3IuY3VycmVudF0NCmZpYl9zcnYgPDwgWzIwLCBS
YWN0b3IuY3VycmVudF0NCmZhY3Rfc3J2IDw8IFsxMCwgUmFjdG9yLmN1cnJlbnRdDQpmYWN0X3Ny
diA8PCBbMjAsIFJhY3Rvci5jdXJyZW50XQ0KDQpkb19zb21lX3dvcmsoKQ0KDQpSYWN0b3IucmVj
ZWl2ZQ0KIz0+IGZpYigxMCkgb3IgZmFjdCgxMCksIHdoaWNoPw0KIyAgIElmIHRoZSBzZXJ2ZXJz
IHVzZXMgUmFjdG9ycyBtb3JlIChjYWxjdWxhdGUgdGhlbSBpbiBwYXJhbGxlbCksDQojICAgZmli
KDIwKSBhbmQgZmFjdCgyMCkgY2FuIGJlIHJldHVybmVkLg0KYGBgDQoNCkJlY2F1c2UgYFJhY3Rv
ci5yZWNlaXZlYCByZXRyaWV2ZXMgYWxsIG1lc3NhZ2VzIGluZGlzY3JpbWluYXRlbHksIGRldmVs
b3BlcnMgbXVzdCBhZGQgdGhlaXIgb3duIHRhZ2dpbmcgbG9naWMgdG8gZGlzdGluZ3Vpc2ggcmVz
dWx0cy4gV2hpbGUgdGFnZ2luZyAoYXMgc2hvd24gaW4gRVg0KSBoZWxwcywgaXQgaW50cm9kdWNl
cyBhZGRpdGlvbmFsIGNvbXBsZXhpdHkgYW5kIGJyaXR0bGVuZXNzLg0KDQojIyMgUmVzcG9uc2Vz
IHdpdGggcmVxdWVzdCBJRA0KDQpUaGUgZm9sbG93aW5nIGNvZGUgcmV0dXJucyBhIHJlc3VsdCB3
aXRoIHJlcXVlc3QgaWQgKGEgcGFpciBvZiB0aGUgbmFtZSBvZiBzZXJ2ZXIgYW5kIGEgcGFyYW1l
dGVyKS4NCg0KYGBgcnVieQ0KIyBFWDQNCg0KZmliX3NydiA9IFJhY3Rvci5uZXcgZG8NCiAgd2hp
bGUgdHJ1ZQ0KICAgIHBhcmFtLCBzZW5kZXIgPSBSYWN0b3IucmVjZWl2ZQ0KICAgIHJlc3VsdCA9
IGZpYihwYXJhbSkNCiAgICBzZW5kZXIgPDwgW1s6ZmliLCBwYXJhbV0sIHJlc3VsdF0NCiAgZW5k
DQplbmQNCg0KZmFjdF9zcnYgPSBSYWN0b3IubmV3IGRvDQogIHdoaWxlIHRydWUNCiAgICBwYXJh
bSwgc2VuZGVyID0gUmFjdG9yLnJlY2VpdmUNCiAgICByZXN1bHQgPSBmYWN0KHBhcmFtKQ0KICAg
IHNlbmRlciA8PCBbWzpmYWN0LCBwYXJhbV0sIHJlc3VsdF0NCiAgZW5kDQplbmQNCg0KZmliX3Ny
diA8PCBbMTAsIFJhY3Rvci5jdXJyZW50XQ0KZmliX3NydiA8PCBbMjAsIFJhY3Rvci5jdXJyZW50
XQ0KZmFjdF9zcnYgPDwgWzEwLCBSYWN0b3IuY3VycmVudF0NCmZhY3Rfc3J2IDw8IFsyMCwgUmFj
dG9yLmN1cnJlbnRdDQoNCmRvX3NvbWVfd29yaygpDQoNClJhY3Rvci5yZWNlaXZlX2lmIGRvIHxp
ZCwgcmVzdWx0fA0KICBjYXNlIGlkDQogIGluIFs6ZmliLCBuXQ0KICAgIHAgImZpYigje259KSA9
ICN7cmVzdWx0fSINCiAgaW4gWzpmYWN0LCBuXQ0KICAgIHAgImZhY3QoI3tufSkgPSAje3Jlc3Vs
dH0iDQogIGVuZA0KZW5kDQoNCiMgb3IgaWYgeW91IHdhbnQgdG8gdXNlIHNwZWNpZmljIHJlc3Vs
dHMsIGxpa2U6DQoNCnAgZmliMjA6ICBSYWN0b3IucmVjZWl2ZV9pZnt8aWQsIHJlc3VsdHwgaWQg
PT4gWzpmaWIsIDIwXTsgIHJlc3VsdH0NCnAgZmFjdDEwOiBSYWN0b3IucmVjZWl2ZV9pZnt8aWQs
IHJlc3VsdHwgaWQgPT4gWzpmYWN0LCAxMF07IHJlc3VsdH0NCnAgZmFjdDIwOiBSYWN0b3IucmVj
ZWl2ZV9pZnt8aWQsIHJlc3VsdHwgaWQgPT4gWzpmYWN0LCAyMF07IHJlc3VsdH0NCnAgZmliMTA6
ICBSYWN0b3IucmVjZWl2ZV9pZnt8aWQsIHJlc3VsdHwgaWQgPT4gWzpmaWIsIDEwXTsgIHJlc3Vs
dH0NCmBgYA0KDQpUaGlzIGFwcHJvYWNoIGNsb3NlbHkgcmVzZW1ibGVzIHBhdHRlcm4gbWF0Y2hp
bmcgaW4gRXJsYW5nIG9yIEVsaXhpciwgd2hlcmUgcmVzcG9uc2VzIGFyZSB0YWdnZWQgYW5kIG1h
dGNoZWQgc3RydWN0dXJhbGx5Lg0KDQpIb3dldmVyLCB0aGlzIHNvbHV0aW9uIHN0aWxsIGhhcyBh
biBpc3N1ZTogaWYgYGRvX3NvbWVfd29yaygpYCB1c2VzIGBSYWN0b3IucmVjZWl2ZWAsIGl0IG1h
eSBhY2NpZGVudGFsbHkgY29uc3VtZSBhbnkgbWVzc2FnZS4gSW4gb3RoZXIgd29yZHMsIGBSYWN0
b3IucmVjZWl2ZWAgY2FuIG9ubHkgYmUgc2FmZWx5IHVzZWQgd2hlbiB5b3UncmUgY2VydGFpbiB0
aGF0IG5vIG90aGVyIGNvZGUgaXMgdXNpbmcgaXQuDQoNCihBbm90aGVyIHRyaXZpYWwgaXNzdWUg
aXMsIGRpZmZlcmVudCBzZXJ2ZXJzIGNhbiByZXR1cm4gc2FtZSBpZGVudGl0eSwgbGlrZSBgWzpm
YWN0LCBudW1dYCByZXR1cm5lZCBieSBOZXdzUGFwZXIgc2VydmVyLiBJdCBpcyBjb25mdXNpbmcp
Lg0KDQoNCiMjIyBVc2luZyBjaGFubmVscw0KDQpUbyBzb2x2ZSB0aGlzIGlzc3VlLCB3ZSBjYW4g
bWFrZSBhIGNoYW5uZWwgd2l0aCBkaWZmZXJlbnQgUmFjdG9ycy4NCg0KQ2hhbm5lbHMgY2FuIGJl
IGltcGxlbWVudGVkIHVzaW5nIFJhY3RvcnMsIGFzIGlsbHVzdHJhdGVkIGJlbG93Lg0KDQpgYGBy
dWJ5DQojIEVYNQ0KDQojIFNlcnZlcnMgYXJlIGNvbXBsZXRlbHkgc2FtZSB0byBFWDMNCg0KZmli
X3NydiA9IFJhY3Rvci5uZXcgZG8NCiAgd2hpbGUgdHJ1ZQ0KICAgIHBhcmFtLCBzZW5kZXIgPSBS
YWN0b3IucmVjZWl2ZQ0KICAgIHJlc3VsdCA9IGZpYihwYXJhbSkNCiAgICBzZW5kZXIgPDwgcmVz
dWx0DQogIGVuZA0KZW5kDQoNCmZhY3Rfc3J2ID0gUmFjdG9yLm5ldyBkbw0KICB3aGlsZSB0cnVl
DQogICAgcGFyYW0sIHNlbmRlciA9IFJhY3Rvci5yZWNlaXZlDQogICAgcmVzdWx0ID0gZmFjdChw
YXJhbSkNCiAgICBzZW5kZXIgPDwgcmVzdWx0DQogIGVuZA0KZW5kDQoNCiMgQ3JlYXRlIGEgbmV3
IGNoYW5uZWwgdXNpbmcgYSBSYWN0b3INCmRlZiBuZXdfY2hhbm5lbA0KICBSYWN0b3IubmV3IGRv
DQogICAgd2hpbGUgdHJ1ZQ0KICAgICAgUmFjdG9yLnlpZWxkIFJhY3Rvci5yZWNlaXZlDQogICAg
ZW5kDQogIGVuZA0KZW5kDQoNCg0KZmliX3NydiA8PCBbMTAsIGZpYjEwX2NoID0gbmV3X2NoYW5u
ZWxdDQpmaWJfc3J2IDw8IFsyMCwgZmliMjBfY2ggPSBuZXdfY2hhbm5lbF0NCmZhY3Rfc3J2IDw8
IFsxMCwgZmFjdDEwX2NoID0gbmV3X2NoYW5uZWxdDQpmYWN0X3NydiA8PCBbMjAsIGZhY3QyMF9j
aCA9IG5ld19jaGFubmVsXQ0KDQpkb19zb21lX3dvcmsoKQ0KDQpwIGZpYjIwOiBmaWIyMF9jaC50
YWtlICAgIyB3YWl0IGZvciBmaWIoMjApDQpwIGZhY3QxMDogZmFjdDEwX2NoLnRha2UgIyB3YWl0
IGZvciBmYWN0KDEwKQ0KcCBmaWIxMDogZmliMTBfY2gudGFrZSAgICMgd2FpdCBmb3IgZmliKDEw
KQ0KcCBmYWN0MjA6IGZhY3QxMF9jaC50YWtlICMgd2FpdCBmb3IgZmFjdCgyMCkNCg0KIyBvciAN
CmNocyA9IFtmaWIxMF9jaCwgZmliMjBfY2gsIGZhY3QxMF9jaCwgZmFjdDIwX2NoXQ0KDQp3aGls
ZSAhY2hzLmVtcHR5Pw0KICBjaCwgcmVzdWx0ID0gUmFjdG9yLnNlbGVjdCgqY2hzKSAjIHdhaXQg
Zm9yIG11bHRpcGxlIGNoYW5uZWxzDQogIHAgY2gsIHJlc3VsdA0KICBjaHMuZGVsZXRlIGNoDQpl
bmQNCmBgYA0KDQpDaGFubmVsIGFwcHJvYWNoIHNvbHZlcyB0aGUgaXNzdWUgb2YgRVg0LiBUaGUg
YWJvdmUgaW1wbGVtZW50YXRpb24gaW50cm9kdWNlIHNvbWUgb3ZlcmhlYWQgdG8gY3JlYXRlIGNo
YW5uZWwgcmFjdG9ycywgYnV0IHdlIGNhbiBpbnRyb2R1Y2Ugc3BlY2lhbCBpbXBsZW1lbnRhdGlv
biB0byByZWR1Y2UgdGhpcyBSYWN0b3IgY3JlYXRpb24gb3ZlcmhlYWQuDQoNCkhvd2V2ZXIsIGlu
IHRoZSBBY3RvciBtb2RlbCwgdGhlIGNvbW11bmljYXRpb24gcGF0dGVybiBpcyB0byBzZW5kIGEg
bWVzc2FnZSB0byBhIHNwZWNpZmljIGFjdG9yLiBJbiBjb250cmFzdCwgY2hhbm5lbHMgYXJlIHVz
ZWQgdG8gc2VuZCBtZXNzYWdlcyB0aHJvdWdoIGEgc2hhcmVkIGNvbmR1aXQsIHdpdGhvdXQgY2Fy
aW5nIHdoaWNoIHJlY2VpdmVyIChpZiBhbnkpIGhhbmRsZXMgdGhlIG1lc3NhZ2UuIEFsc28sIGNo
YW5uZWxzIGNhbiBoYXZlIHNvbWUgb3ZlcmhlYWQsIGFzIGRpc2N1c3NlZCBiZWxvdy4NCg0KIyMj
IFN1bW1hcnkgb2YgYmFja2dyb3VuZA0KDQpDdXJyZW50bHksIHdoZW4gaW1wbGVtZW50aW5nIHJl
cXVlc3QtcmVzcG9uc2UgcGF0dGVybnMgd2l0aCBSYWN0b3JzLCBkZXZlbG9wZXJzIGZhY2UgY2hh
bGxlbmdlcyBpbiB0cmFja2luZyByZXN1bHRzLCBtYW5hZ2luZyBpZGVudGlmaWVycywgYW5kIGF2
b2lkaW5nIG1lc3NhZ2UgY29uZmxpY3RzLiBFeGlzdGluZyBwcmltaXRpdmVzIGxpa2UgYHJlY2Vp
dmVfaWZgLCBgdGFrZWAsIG9yIGNoYW5uZWxzIGltcGxlbWVudGVkIHdpdGggUmFjdG9ycyBhcmUg
ZWl0aGVyIGVycm9yLXByb25lIG9yIGluZWZmaWNpZW50Lg0KDQojIyBQcm9wb3NhbA0KDQpJbnRy
b2R1Y2UgYFJhY3Rvcjo6UG9ydGAgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gY2hhbm5lbHMuIEl0IGlz
IGEgbmF0dXJhbCBleHRlbnNpb24gb2YgdGhlIEFjdG9yIG1vZGVsLiBJbiBmYWN0LCBpdCBpcyB0
aGluIHdyYXBwZXIgb2YgY3VycmVudCBzZW5kL3JlY2VpdmUgbW9kZWwgYXMgaWxsdXN0cmF0ZWQg
YXQgdGhlIHRvcCBvZiB0aGlzIHByb3Bvc2FsLg0KDQpXaXRoIHRoZSBgUmFjdG9yOjpQb3J0YCwg
d2UgY2FuIHJld3JpdGUgYWJvdmUgZXhhbXBsZXMgd2l0aCBpdC4NCg0KYGBgcnVieQ0KIyBFWDYN
Cg0KIyBDb21wbGV0ZWx5IHNhbWUgYXMgRVgzJ3Mgc2VydmVycw0KDQpmaWJfc3J2ID0gUmFjdG9y
Lm5ldyBkbw0KICB3aGlsZSB0cnVlDQogICAgcGFyYW0sIHNlbmRlciA9IFJhY3Rvci5yZWNlaXZl
DQogICAgcmVzdWx0ID0gZmliKHBhcmFtKQ0KICAgIHNlbmRlciA8PCByZXN1bHQNCiAgZW5kDQpl
bmQNCg0KZmFjdF9zcnYgPSBSYWN0b3IubmV3IGRvDQogIHdoaWxlIHRydWUNCiAgICBwYXJhbSwg
c2VuZGVyID0gUmFjdG9yLnJlY2VpdmUNCiAgICByZXN1bHQgPSBmYWN0KHBhcmFtKQ0KICAgIHNl
bmRlciA8PCByZXN1bHQNCiAgZW5kDQplbmQNCg0KZmliX3NydiA8PCBbMTAsIGZpYjEwX3BvcnQg
PSBSYWN0b3I6OlBvcnQubmV3XQ0KZmliX3NydiA8PCBbMjAsIGZpYjIwX3BvcnQgPSBSYWN0b3I6
OlBvcnQubmV3XQ0KZmFjdF9zcnYgPDwgWzEwLCBmYWN0MTBfcG9ydCA9IFJhY3Rvcjo6UG9ydC5u
ZXddDQpmYWN0X3NydiA8PCBbMjAsIGZhY3QyMF9wb3J0ID0gUmFjdG9yOjpQb3J0Lm5ld10NCg0K
ZG9fc29tZV93b3JrKCkNCg0KcCBmaWIxMF9wb3J0LnJlY2VpdmUgIz0+IGZpYigxMCkNCnAgZmli
MjBfcG9ydC5yZWNlaXZlICM9PiBmaWIoMjApDQpwIGZhY3QxMF9wb3J0LnJlY2VpdmUgIz0+IGZh
Y3QoMTApDQpwIGZhY3QyMF9wb3J0LnJlY2VpdmUgIz0+IGZhY3QoMjApDQoNCiMgb3INCg0KcG9y
dHMgPSBbZmliMTBfcG9ydCwgZmliMjBfcG9ydCwgZmFjdDEwX3BvcnQsIGZhY3QyMF9wb3J0XQ0K
DQp3aGlsZSAhcG9ydHMuZW1wdHk/DQogIHBvcnQsIHJlc3VsdCA9IFJhY3Rvci5zZWxlY3QoKnBv
cnRzKQ0KICBjYXNlIHBvcnQNCiAgd2hlbiBmaWIxMF9wb3J0DQogICAgcCBmaWIxMDogcmVzdWx0
DQogIC4uLg0KICBlbHNlDQogICAgcmFpc2UgIlRoaXMgc2hvdWxkIG5vdCBoYXBwZW4gKEJVRyku
Ig0KICBlbmQNCg0KICBwb3J0cy5kZWxldGUocG9ydCkNCmVuZA0KYGBgDQoNCmBSYWN0b3I6OlBv
cnRgIHJlc29sdmVzIGtleSBwYWluIHBvaW50cyBpbiBtZXNzYWdlIHBhc3NpbmcgYmV0d2VlbiBS
YWN0b3JzOg0KDQoqIEl0IGd1YXJhbnRlZXMgdGhhdCBpbmNvbWluZyBtZXNzYWdlcyBhcmUgb25s
eSBkZWxpdmVyZWQgdG8gdGhlIGludGVuZGVkIFJhY3RvciwgcHJldmVudGluZyB0YWcgY29sbGlz
aW9ucy4NCiogSXQgZW5hYmxlcyBtZXNzYWdlIHJvdXRpbmcgd2l0aG91dCByZWx5aW5nIG9uIGds
b2JhbCByZWNlaXZlIGJsb2NrcyAoYFJhY3Rvci5yZWNlaXZlYCksIHdoaWNoIGFyZSBwcm9uZSB0
byB1bmludGVuZGVkIGNvbnN1bXB0aW9uLg0KKiBJdCByZXBsYWNlcyBtb3JlIGNvbXBsZXggcHJp
bWl0aXZlcyBsaWtlIGAucmVjZWl2ZV9pZmAsIGAueWllbGRgLCBhbmQgYCN0YWtlYCB3aXRoIGEg
c2ltcGxlciwgY29tcG9zYWJsZSBhYnN0cmFjdGlvbi4NCiogSXQgbWFwcyBjbGVhbmx5IHRvIHRo
ZSBBY3RvciBtb2RlbCBzZW1hbnRpY3MgUnVieSBpbnRlbmRzIHRvIHN1cHBvcnQgd2l0aCBSYWN0
b3JzLg0KDQpXaGlsZSB0aGUgcGF0dGVybiBsb29rcyBzaW1pbGFyIHRvIHVzaW5nIGNoYW5uZWxz
LCB0aGUgc2VtYW50aWNzIGFuZCBndWFyYW50ZWVzIGFyZSBkaWZmZXJlbnQgaW4gbWVhbmluZ2Z1
bCB3YXlzLg0KDQpUaGUgYWR2YW50YWdlcyBvZiB1c2luZyBQb3J0cyBpbmNsdWRlOg0KDQoqIFNh
ZmVyIHRoYW4gY2hhbm5lbHMgaW4gcHJhY3RpY2UNCiAgKiBXaGVuIHVzaW5nIGEgUG9ydCwgaWYg
YCNzZW5kYCBzdWNjZWVkcywgaXQgbWVhbnMgdGhlIGRlc3RpbmF0aW9uIFJhY3RvciBpcyBzdGls
bCBhbGl2ZSAoaS5lLiwgaXQncyBydW5uaW5nKS4NCiAgKiBJbiBjb250cmFzdCwgd2l0aCBhIGNo
YW5uZWwsIHRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQgYW55IFJhY3RvciBpcyBzdGlsbCBhdmFp
bGFibGUgdG8gcmVjZWl2ZSBmcm9tIGl0Lg0KICAqIE9mIGNvdXJzZSwgZXZlbiB3aXRoIGEgcG9y
dCwgdGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCB0aGUgZGVzdGluYXRpb24gUmFjdG9yIHdpbGwg
YWN0dWFsbHkgcHJvY2VzcyB0aGUgbWVzc2FnZSDigJQgaXQgbWlnaHQgaWdub3JlIGl0Lg0KICAq
IEJ1dCBhdCBsZWFzdCB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGUgUmFjdG9yIGhh
dmluZyBhbHJlYWR5IHRlcm1pbmF0ZWQgdW5leHBlY3RlZGx5Lg0KICAqIEluIG90aGVyIHdvcmRz
LCB1c2luZyBhIHBvcnQgZWxpbWluYXRlcyBvbmUgbWFqb3IgZmFpbHVyZSBjYXNlLCBtYWtpbmcg
dGhlIGNvbW11bmljYXRpb24gbW9kZWwgbW9yZSBwcmVkaWN0YWJsZS4NCiAgKiBUaGlzIGlzIG9u
ZSBvZiB0aGUgcmVhc29ucyB3aHkgUnVieSB3ZW50IHdpdGggdGhlICJBY3RvciIgbW9kZWwgKGhl
bmNlIHRoZSBuYW1lIFJhY3RvciksIGluc3RlYWQgb2YgdGhlICJDU1AiIG1vZGVsLg0KKiBGYXN0
ZXIgdGhhbiBjaGFubmVscyBpbiBib3RoIGNyZWF0aW9uIGFuZCBtZXNzYWdlIHRyYW5zbWlzc2lv
bg0KICAqIFdoZW4gY3JlYXRpbmcgYSBjaGFubmVsLCB3ZSBuZWVkIHRvIHByZXBhcmUgYSBjb250
YWluZXIgZGF0YSBzdHJ1Y3R1cmUuIFdoZW4gY3JlYXRpbmcgYSBwb3J0LCBpdCBpcyBsaWdodHdl
aWdodCBkYXRhIChhIHBhaXIgb2YgUmFjdG9yIGFuZCBuZXdseSBjcmVhdGVkIElEKS4NCiAgKiBP
biB0aGUgY2hhbm5lbCB0cmFuc21pc3Npb24sIHdlIG5lZWQgY29weWluZyBhIGRhdGEgdG8gY2hh
bm5lbCBhbmQgYSBjb3B5aW5nIHRvIHRoZSByZWNlaXZpbmcgcmFjdG9yLiBPbiB0aGUgcG9ydCwg
aXQgb25seSBuZWVkcyB0byBjb3B5IGZyb20gdGhlIHNyYyByYWN0b3IgdG8gdGhlIGRzdCByYWN0
b3IuIFRoaXMgaXNzdWUgYmVjb21lcyBtb3JlIHNpZ25pZmljYW50IGR1ZSB0byBSYWN0b3ItbG9j
YWwgZ2FyYmFnZSBjb2xsZWN0aW9uIGFuZCBpc29sYXRpb24gb2Ygb2JqZWN0IHNwYWNlcy4NCiog
RWFzeSB0byBpbXBsZW1lbnQuIFdlIG9ubHkgbmVlZCB0byBpbXBsZW1lbnQgYFBvcnQjcmVjZWl2
ZWAgdG8gc3luY2hyb25pemUgd2l0aCBvdGhlciByYWN0b3JzLg0KICAqIGAjc2VuZC8ucmVjZWl2
ZWAgaXMgZWFzeSB0byBpbXBsZW1lbnQgYmVjYXVzZSB3ZSBvbmx5IG5lZWQgdG8gbG9jayB0aGUg
cmVjZWl2aW5nIHJhY3Rvci4NCiAgKiBgLnlpZWxkLyN0YWtlYCBpcyBub3QgZWFzeSB0byBpbXBs
ZW1lbnQgYmVjYXVzZSB3ZSBuZWVkIHRvIGxvY2sgdGFraW5nIGFuZCByZWNlaXZpbmcgcmFjdG9y
cyBiZWNhdXNlIGl0IGlzIHJlbmRlenZvdXMgc3R5bGUgc3luY2hyb25pemF0aW9uLg0KICAqIGAu
c2VsZWN0YCBpcyBESUZGSUNVTFQgdG8gc3VwcG9ydCBjdXJyZW50IHNwZWMuIE5vdyBDSSBpc24n
dCBzdGFibGUgeWV0Lg0KICAqIEEgc2ltcGxlciBzcGVjIHJlZHVjZXMgYnVncywgYW5kIG1heWJl
IGxlYWRzIHRvIGZhc3RlciBpbXBsZW1lbnRhdGlvbi4NCg0KRGlzYWR2YW50YWdlczoNCg0KMS4g
SXQgaXMgbm90IGEgd2VsbC1rbm93biBjb25jZXB0LCBlc3BlY2lhbGx5IGZvciBHbyBsYW5ndWFn
ZSB1c2Vycy4NCjIuIFdlIG5lZWQgYWRkaXRpb25hbCBhYnN0cmFjdGlvbiBsaWtlIHByb2R1Y2Vy
KHMpLWNvbnN1bWVyKHMpIGNvbmN1cnJlbnQgYXBwbGljYXRpb25zLg0KDQpGb3IgKDIpLCBJIHdh
bnQgdG8gaW50cm9kdWNlIGFuIGV4YW1wbGUgY29kZS4gV2UgY2FuIHdyaXRlIGEgMS1wcm9kdWNl
ciwgbXVsdGlwbGUtY29uc3VtZXIgcGF0dGVybiB3aXRoIGEgY2hhbm5lbC4NCg0KYGBgcnVieQ0K
IyBjaGFubmVsIHZlcnNpb24gb2YgMSBwcm9kdWNlciAmIGNvbnN1bWVycw0KDQpjaCA9IG5ld19j
aGFubmVsDQoNClJOID0gMTAgIyBtYWtlIDEwIGNvbnN1bWVycw0KDQpjb25zdW1lcnMgPSBSTi50
aW1lcy5tYXAgZG8NCiAgUmFjdG9yLm5ldyBjaCBkbw0KICAgIHdoaWxlIHBhcmFtID0gY2gucmVj
ZWl2ZQ0KICAgICAgdGFzayhwYXJhbSkNCiAgICBlbmQNCiAgZW5kDQplbmQNCg0KdGFza3MuZWFj
aCBkbyB8dGFza3wNCiAgY2ggPDwgdGFzaw0KZW5kDQpgYGANCg0KV2l0aCBQb3J0LCB3ZSBuZWVk
IHRvIGludHJvZHVjZSBhIGxvYWQgYmFsYW5jaW5nIG1lY2hhbmlzbToNCg0KYGBgcnVieQ0KIyBQ
b3J0IHZlcnNpb24gb2YgMSBwcm9kdWNlciAmIGNvbnN1bWVycw0KDQpjb250cm9sX3BvcnQgPSBS
YWN0b3I6OlBvcnQubmV3DQpjb25zdW1lcnMgPSBSTi50aW1lcy5tYXAgZG8NCiAgUmFjdG9yLm5l
dyBjb250cm9sX3BvcnQgY29udHJvbF9wb3J0IGRvIHxjb250cm9sX3BvcnR8DQogICAgd2hpbGUg
dHJ1ZQ0KICAgICAgY29udHJvbF9wb3J0IDw8IFs6cmVhZHksIFJhY3Rvci5jdXJyZW50XSAjIHJl
Z2lzdGVyIC0gcmVhZHkNCiAgICAgIHBhcmFtID0gUmFjdG9yLnJlY2VpdmUgIyBpdCBhc3N1bWVz
IHRhc2sgZG9lc24ndCB1c2UgUmFjdG9yLnJlY2VpdmUNCiAgICAgIHRhc2socGFyYW0pDQogICAg
ZW5kDQogIGVuZA0KZW5kDQoNCnRhc2tzLmVhY2ggZG8gfHRhc2t8DQogIGNvbnRyb2xfcG9ydC5y
ZWNlaXZlID0+IFs6cmVhZHksIGNvbnN1bWVyXQ0KICANCiAgIyBzZW5kIGEgdGFzayB0byBhIHJl
YWR5IGNvbnN1bWVyDQogIGNvbnN1bWVyIDw8IHRhc2sNCmVuZA0KYGBgDQoNCk9mIGNvdXJzZSB3
ZSBjYW4gbWFrZSBhIGxpYnJhcnkgZm9yIHRoYXQgKGxpa2UgT1RQIG9uIEVybGFuZykuDQoNCiMj
IyBEZWZhdWx0IHBvcnQgb2YgUmFjdG9ycw0KDQpFYWNoIFJhY3RvciBoYXMgYSBkZWZhdWx0IHBv
cnQgYW5kIGBSYWN0b3Ijc2VuZGAgaXMgZXF1YWwgdG8gYFJhY3Rvci5jdXJyZW50LmRlZmF1bHRf
cG9ydCNzZW5kYC4gT2YgY291cnNlLCBgUmFjdG9yLnJlY2VpdmVgIGlzIGVxdWFsIHRvIGBSYWN0
b3IuY3VycmVudC5kZWZhdWx0X3BvcnQucmVjZWl2ZWAuDQoNCkZvciB0aGUgc2ltcGxlIGNhc2Us
IHdlIGNhbiBrZWVwIHRvIHVzZSBgUmFjdG9yI3NlbmRgIGFuZCBgUmFjdG9yLnJlY2VpdmVgDQoN
CiMjIyBEZXByZWNhdGlvbiBvZiBSYWN0b3IjdGFrZSBhbmQgUmFjdG9yLnlpZWxkDQoNCldpdGgg
dGhlIFBvcnQgY29uY2VwdCwgd2UgY2FuIGZvY3VzIHNvbGVseSBvbiBzZW5kIGFuZCByZWNlaXZl
4oCUdGhhdCBpcywgZGlyZWN0IG1hbmlwdWxhdGlvbiBvZiBhIFJhY3RvcuKAmXMgbWFpbGJveC4g
UG9ydHMgcHJvdmlkZSBhIGNsZWFuIGFuZCBmdW5jdGlvbmFsIGFsdGVybmF0aXZlIHRvIGBSYWN0
b3IjdGFrZWAgYW5kIGBSYWN0b3IueWllbGRgLCBtYWtpbmcgdGhlbSB1bm5lY2Vzc2FyeSBpbiBt
b3N0IHVzZSBjYXNlcy4NCg0KTW9yZW92ZXIsIFBvcnRzIGFyZSBzaWduaWZpY2FudGx5IGVhc2ll
ciB0byBpbXBsZW1lbnQsIGFzIHRoZXkgcmVxdWlyZSBvbmx5IGxvY2tpbmcgdGhlIHJlY2Vpdmlu
ZyBSYWN0b3IsIHdoaWxlIHlpZWxkL3Rha2UgaW52b2x2ZSBjb21wbGV4IHJlbmRlenZvdXMtc3R5
bGUgc3luY2hyb25pemF0aW9uLiBCeSByZW1vdmluZyB0aGVzZSBwcmltaXRpdmVzLCB3ZSBjYW4g
c2ltcGxpZnkgdGhlIHNwZWNpZmljYXRpb24gYW5kIHJlZHVjZSBpbXBsZW1lbnRhdGlvbiBjb21w
bGV4aXR54oCUZXNwZWNpYWxseSBhcm91bmQgZmVhdHVyZXMgbGlrZSBgUmFjdG9yLnNlbGVjdGAs
IHdoaWNoIGFyZSBub3RvcmlvdXNseSBoYXJkIHRvIGdldCByaWdodC4NCg0KIyMjIGBSYWN0b3Iu
c2VsZWN0YCB3aXRoIHBvcnRzDQoNCldlIHNob3VsZCB3YWl0IGZvciBtdWx0aXBsZSBwb3J0IHNp
bXVsdGFuZW91c2x5IHNvIGBSYWN0b3Iuc2VsZWN0KClgIHNob3VsZCBhY2NlcHQgcG9ydHMuIE5v
dyBgUmFjdG9yLnNlbGVjdCgpYCBjYW4gYWxzbyByZWNlaXZpbmcgYW5kIHlpZWxkaW5nIHRoZSB2
YWx1ZSwgYnV0IGlmIHdlIHJlbW92ZSB0aGUgYCN0YWtlYCBmdW5jdGlvbmFsaXR5LCBgUmFjdG9y
LnNlbGVjdGAgb25seSBuZWVkIHRvIHN1cHBvcnQgcG9ydHMuDQoNCiMjIyBXYWl0IGZvciB0ZXJt
aW5hdGlvbg0KDQpgUmFjdG9yI3Rha2VgIGlzIGRlc2lnbmVkIGZyb20gYW4gaWRlYSBvZiBnZXR0
aW5nIHRlcm1pbmF0aW9uIHJlc3VsdCAobGlrZSBgVGhyZWFkI3ZhbHVlYCkuIEZvciB0aGlzIHB1
cnBvc2UsIHdlIGNhbiBpbnRyb2R1Y2UgYFJhY3RvciNqb2luYCBvciBgUmFjdG9yI3ZhbHVlYCBs
aWtlIFRocmVhZHMgb3Igd2UgY2FuIGtlZXAgdGhlIG5hbWUgYFJhY3RvciN0YWtlYCBmb3IgdGhp
cyBwdXJwb3NlLg0KDQpXZSBjYW4gbWFrZSBgUmFjdG9yI2pvaW5gIGFzIGEgZm9sbG93aW5nIHBz
ZXVkby1jb2RlOg0KDQpgYGBydWJ5DQpjbGFzcyBSYWN0b3INCiAgZGVmIGpvaW4gIyB3YWl0IGZv
ciB0aGUgdGVybWluYXRpb24NCiAgICBtb25pdG9yIHBvcnQgPSBQb3J0Lm5ldw0KICAgIHBvcnQu
cmVjZWl2ZQ0KICBlbnN1cmUNCiAgICBtb25pdG9yIG5pbCAjIHVucmVnaXN0ZXIgLyBpdCBzaG91
bGQgYmUgZGlzY3Vzc2VkDQogIGVuZA0KICANCiAgIyB3aGVuIHRoaXMgcmFjdG9yIHRlcm1pbmF0
ZXMsIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSByZWdpc3RlcmVkIHBvcnQNCiAgZGVmIG1vbml0b3Ig
cG9ydA0KICAgIEBtb25pdG9yX3BvcnQgPSBwb3J0DQogIGVuZA0KICANCiAgcHJpdmF0ZSBkZWYg
YXRleGl0DQogICAgQG1vbml0b3JfcG9ydCA8PCB0ZXJtaW5hdGlvbl9tZXNzYWdlDQogIGVuZA0K
ZW5kDQoNCiMgdGhlcmUgYXJlIHNvbWUgcXVlc3Rpb25zLg0KIyAqIGNhbiB3ZSByZWdpc3RlciBt
dWx0aXBsZSBwb3J0cz8NCiMgKiBzaG91bGQgd2Ugc3VwcG9ydCBgI2pvaW5gIGFuZCBgI3ZhbHVl
YCBsaWtlIHRocmVhZHM/DQojICAgb3Igc2hvdWxkIHdlIHN1cHBvcnQgb25seSBgI2pvaW5gIHRv
IHJldHVybiB0aGUgdmFsdWU/DQojICogb3Iga2VlcCB0aGlzIG5hbWUgYXMgYCN0YWtlYD8NCg0K
DQpSYWN0b3IubmV3IGRvDQogIDQyDQplbmQuam9pbiAjPT4gNDIgKG9yIHRydWU/KQ0KYGBgDQoN
Ckl0IGlzIHZlcnkgc2ltaWxhciB0byBgbW9uaXRvcmAgaW4gRXJsYW5nIG9yIEVsaXhpci4NCldl
IGNhbiBhbHNvIG1ha2UgYSBzdXBlcnZpc29yIGluIEVybGFuZyBsaWtlIHRoYXQ6DQoNCmBgYHJ1
YnkNCnN2X3BvcnQgPSBSYWN0b3I6OlBvcnQubmV3DQoNCnJzID0gTi50aW1lcy5tYXAgZG8NCiAg
UmFjdG9yLm5ldyBkbw0KICAgIGRvX3NvbWV0aGluZygpDQogIGVuZC5tb25pdG9yIHN2X3BvcnQN
CmVuZA0KDQp3aGlsZSB0ZXJtaW5hdGlvbl9ub3RpY2UgPSBzdl9wb3J0LnJlY2VpdmUNCiAgcCB0
ZXJtaW5hdGlvbl9ub3RpY2UNCmVuZA0KDQojIFdpdGggUmFjdG9yI3Rha2UsIHdlIGNhbiB3cml0
ZSBzaW1pbGFyIGNvZGUgaWYgdGhlcmUgaXMgbm8gUmFjdG9yLnlpZWxkDQoNCnJzID0gTi50aW1l
cy5tYXAgZG8NCiAgUmFjdG9yLm5ldyBkbw0KICAgIGRvX3NvbWV0aGluZygpDQogIGVuZA0KZW5k
DQoNCndoaWxlIHIsIG1zZyA9IFJhY3Rvci5zZWxlY3QoKnJzKQ0KICBwIFtyLCBtc2ddDQplbmQN
CmBgYA0KDQojIyBEaXNjdXNzaW9uDQoNCiMjIyBgc2VuZGAgd2l0aCB0YWcgKHN5bWJvbHMpDQoN
CklmIHdlIGZvcmNlIHVzZXJzIHRvIHNlbmQgYSB0YWdnZWQgbWVzc2FnZSBldmVyeSB0aW1lLCB3
ZSBjYW4gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgUG9ydCBjb25jZXB0LCBiZWNhdXNlIGEg
UG9ydCBjYW4gYmUgdGhvdWdodCBvZiBhcyBhIGNvbWJpbmF0aW9uIG9mIGEgdGFnIGFuZCBhIGRl
c3RpbmF0aW9uIFJhY3Rvci4NCg0KYGBgcnVieQ0KciA9IFJhY3Rvci5uZXcgZG8NCiAgbG9vcCBk
bw0KICAgIHRhZywgbXNnID0gUmFjdG9yLnJlY2VpdmUgIyByZXR1cm4gMiB2YWx1ZXMNCiAgICBj
YXNlIHRhZw0KICAgIHdoZW4gOlRBRw0KICAgICAgcCBbdGFnLCBtc2ddDQogICAgZWxzZQ0KICAg
ICAgIyBpZ25vcmUNCiAgICBlbmQNCiAgZW5kDQplbmQNCg0Kci5zZW5kIDpUQUcsIDQyDQpyLnNl
bmQgOlRBR0UsIDg0ICMgdGhpcyB0eXBvIGFuZCB0aGUgbWVzc2FnZSBpcyBzaWxlbnRseSBpZ25v
cmVkDQpgYGANCg0KSG93ZXZlciBpdCBoYXMgdHdvIGlzc3VlczoNCg0KKiBJZiB3ZSBtYWtlIGEg
dHlwbyBpbiB0YWcgbmFtZSwgdGhlIG1lc3NhZ2Ugd2lsbCBiZSBzaWxlbnRseSBpZ25vcmVkLg0K
KiBUaGUgdGFnIG5hbWUgbWF5IGNvbmZsaWN0IHdpdGggdW5yZWxhdGVkIGNvZGVzIChsaWJyYXJp
ZXMpDQoNCiMjIyBgUmFjdG9yLnlpZWxkYCBhbmQgYFJhY3RvciN0YWtlYCB3aXRoIGNoYW5uZWwg
cmFjdG9yDQoNCklmIHdlIHdhbnQgdG8gbGVhdmUgdGhlIGAueWllbGRgIGFuZCBgI3Rha2VgLCB3
ZSBjYW4gZW11bGF0ZSB0aGVtIHdpdGggY2hhbm5lbCByYWN0b3IuDQoNCmBgYHJ1YnkNCmNsYXNz
IFJhY3Rvcg0KICBkZWYgaW5pdGlhbGl6ZQ0KICAgIEB5aWVsZF9yYWN0b3IgPSBSYWN0b3IubmV3
IGRvDQogICAgICB0YWtlcnMgPSBbXQ0KICAgICAgd2hpbGUgdGFnLCBtc2cgPSBSYWN0b3IucmVj
ZWl2ZQ0KICAgICAgICBjYXNlIHRhZw0KICAgICAgICB3aGVuIDpyZWdpc3Rlcg0KICAgICAgICAg
IEB0YWtlcnMgPDwgbXNnDQogICAgICAgIHdoZW4gOnVucmVnaXN0ZXINCiAgICAgICAgICBAdGFr
ZXJzLmRlbGV0ZSBtc2cNCiAgICAgICAgd2hlbiA6eWllbGQNCiAgICAgICAgICBAdGFrZXJzLnBv
cCA8PCBtc2cNCiAgICAgICAgZW5kDQogICAgICBlbmQNCiAgICBlbmQNCiAgZW5kDQoNCiAgZGVm
IHNlbGYueWllbGQgb2JqDQogICAgQHlpZWxkX3JhY3RvciA8PCBbOnlpZWxkLCBvYmpdDQogIGVu
ZA0KDQogIGRlZiB0YWtlDQogICAgQHlpZWxkX3JhY3RvciA8PCBbOnJlZ2lzdGVyLCBwb3J0ID0g
UmFjdG9yOjpQb3J0Lm5ld10NCiAgICBwb3J0LnJlY2VpdmUNCiAgZW5zdXJlDQogICAgQHlpZWxk
X3JhY3RvciA8PCBbOnVucmVnaXN0ZXIsIHBvcnRdDQogIGVuZA0KZW5kDQpgYGANCg0KIyMjIE9w
ZW5pbmcgYW5kIGNsb3NpbmcgdGhlIHBvcnQNCg0KVGhpcyBwcm9wb3NhbCBkb2Vzbid0IGNvbnRh
aW4gb3BlbmluZyBhbmQgY2xvc2luZyB0aGUgcG9ydCwgYnV0IHdlIGNhbiBkaXNjdXNzIGFib3V0
IGl0LiBUbyBpbnRyb2R1Y2UgdGhpcyBhdHRyaWJ1dGUsIHdlIG5lZWQgdG8gbWFuYWdlIHdoaWNo
IHBvcnRzICh0YWdzKSBhcmUgb3BlbmluZy4NCg0KIyMgSW1wbGVtZW50YXRpb24NCg0KTm93IHRo
ZSBuYXRpdmUgaW1wbGVtZW50YXRpb24gaXMgbm90IGZpbmlzaGVkLCBidXQgd2UgY2FuIGltcGxl
bWVudCBpdCB1c2luZyB0aGUgYFJhY3Rvci5yZWNlaXZlX2lmYCBtZWNoYW5pc20sIHNvIHdlIGVz
dGltYXRlIHRoYXQgb25seSBhIGZldyB3ZWVrcyBvZiB3b3JrIGFyZSBuZWVkZWQgdG8gY29tcGxl
dGUgaXQuDQoNCiMjIFN1bW1hcnkNCg0KVGhpcyBwcm9wb3NhbCBpbnRyb2R1Y2VzIHRoZSBmb2xs
b3dpbmcgZmVhdHVyZXMgYW5kIGRlcHJlY2F0aW9ucy4NCg0KKiBgUmFjdG9yOjpQb3J0YA0KICAq
IGBQb3J0I3NlbmQobXNnKWAg4oCTIHNlbmRzIGEgbWVzc2FnZSB0byB0aGUgY3JlYXRvciBvZiB0
aGUgcG9ydC4NCiAgKiBgUG9ydCNyZWNlaXZlYCDigJMgcmVjZWl2ZXMgYSBtZXNzYWdlIGZyb20g
dGhlIHBvcnQuDQogICogQSBwb3J0IGlzIGEgbGlnaHR3ZWlnaHQgZGF0YSBzdHJ1Y3R1cmUgKGEg
cGFpciBvZiBhIFJhY3RvciBhbmQgYSB0YWcpLg0KKiBgUmFjdG9yI2pvaW5gIG9yIGBSYWN0b3Ij
dmFsdWVgIOKAkyB0byB3YWl0IGZvciBSYWN0b3IgdGVybWluYXRpb24gKGxpa2UgYFRocmVhZCNq
b2luYCkNCiogYFJhY3RvciNtb25pdG9yYCDigJMgdG8gb2JzZXJ2ZSB3aGVuIGFub3RoZXIgUmFj
dG9yIHRlcm1pbmF0ZXMNCiogRGVwcmVjYXRpb25zOg0KICAqIGBSYWN0b3IjdGFrZWANCiAgKiBg
UmFjdG9yLnlpZWxkYA0KICAqIGBSYWN0b3IucmVjZWl2ZV9pZmANCg0KVGhhbmsgeW91IGZvciBy
ZWFkaW5nIHRoaXMgbG9uZyBwcm9wb3NhbC4gSWYgeW91IGhhdmUgYW55IHVzZSBjYXNlcyB0aGF0
IGNhbm5vdCBiZSBhZGRyZXNzZWQgd2l0aCBgUmFjdG9yOjpQb3J0YCwgSSdkIGxvdmUgdG8gaGVh
ciB0aGVtLg0KDQoNClAuUy4gVGhhbmtzIHRvIG1hbWUgZm9yIHJldmlld2luZyB0aGlzIHByb3Bv
c2FsIGFuZCBzdWdnZXN0aW5nIHRoYXQgSSB1c2UgQ2hhdEdQVCB0byBpbXByb3ZlIHRoZSB3cml0
aW5nLg0KDQoNCg0KLS0gDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8NCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KIHJ1YnktY29yZSBtYWlsaW5nIGxp
c3QgLS0gcnVieS1jb3JlQG1sLnJ1YnktbGFuZy5vcmcKIFRvIHVuc3Vic2NyaWJlIHNlbmQgYW4g
ZW1haWwgdG8gcnVieS1jb3JlLWxlYXZlQG1sLnJ1YnktbGFuZy5vcmcKIHJ1YnktY29yZSBpbmZv
IC0tIGh0dHBzOi8vbWwucnVieS1sYW5nLm9yZy9tYWlsbWFuMy9saXN0cy9ydWJ5LWNvcmUubWwu
cnVieS1sYW5nLm9yZy8K


In This Thread

Prev Next