[ruby-core:121724] [Ruby Feature#21221] Proposal to upstream ZJIT
From:
"tekknolagi (Maxwell Bernstein) via ruby-core" <ruby-core@...>
Date:
2025-04-24 13:16:40 UTC
List:
ruby-core #121724
SXNzdWUgIzIxMjIxIGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGVra25vbGFnaSAoTWF4d2VsbCBCZXJu c3RlaW4pLg0KDQoNCg0KDQpFcmVnb24gKEJlbm9pdCBEYWxvemUpIHdyb3RlIGluICNub3RlLTM6 DQo+IElzbid0IHRoaXMgdGhlIG1haW4gcmVhc29uIHRvIG1vdmUgdG8gYSBtZXRob2QtYmFzZWQg SklUPw0KPiANCj4gSSB0aGluayB0aGUgc2Vjb25kIGFuZCBjb25uZWN0ZWQgcmVhc29uIGlzIGFu IElSIHdvdWxkIGJlIGxlc3MgdXNlZnVsIGZvciBMQkJWIGFzIGl0IGNhbiBvbmx5IG9wdGltaXpl IGEgYmFzaWMgYmxvY2sgYXQgYSB0aW1lLCBzaW5jZSBpdCBkb2VzIG5vdCBrbm93IHdoaWNoIGJy YW5jaCBpcyB0YWtlbiBiZWZvcmUgZ2VuZXJhdGluZyBjb2RlIGFuZCBleGVjdXRpbmcgaXQgdG8g ZmluZCBvdXQuIE9uZSBjb3VsZCBvcHRpbWl6ZSBhIHRyYWNlL3NlcXVlbmNlIG9mIGJhc2ljIGJs b2NrcyBhdCBvbmNlIGFmdGVyIHRoZSB0cmFjZSdzIGNvZGUgaXMgZ2VuZXJhdGVkICYgZXhlY3V0 ZWQgZm9yIGEgbWV0aG9kIGJ1dCB0aGF0IHdvdWxkIG1lYW4gZ2VuZXJhdGluZyBjb2RlIHR3aWNl IGluIHN1Y2Nlc3Npb24uDQoNCkkgZG9uJ3QgdGhpbmsgdGhpcyBpcyBzdHJpY3RseSB0cnVlLiBP bmUgY291bGQgaW1hZ2luZSBkb2luZyBMQkJWIGluICJ0cmFjaW5nIG1vZGUiIHdpdGhvdXQgZ2Vu ZXJhdGluZyBhbnkgY29kZSwgYW5kIHRoZW4gZ2VuZXJhdGluZyBjb2RlIGFmdGVyIGhpdHRpbmcg YSB0aHJlc2hvbGQuIFRoaXMgZ2l2ZXMgbW9yZSBzY29wZSB0byB0aGUgcG90ZW50aWFsIG9wdGlt aXplciB0aGFuIGEgYmxvY2sgYXQgYSB0aW1lLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY291bGQgdXNl IExCQlYgaW4gImJhc2VsaW5lIG1vZGUiIGFuZCB0aGVuIGJ1aWxkIGFuZCBvcHRpbWl6ZSBhbiBJ UiBmb3IgYSAibmV4dCB0aWVyIi4gVGhpcyBmZWVscyBsaWtlIGl0J3MgbW9yZSBpbiB0aGUgZXll IG9mIHRoZSBiZWhvbGRlciB0aGFuIGEgZnVuZGFtZW50YWwgbGltaXRhdGlvbiBvZiB0aGUgdGVj aC4NCg0KPiBTbyBpbiBzdW1tYXJ5IChjb3JyZWN0IG1lIGlmIEknbSB3cm9uZykgTEJCViBsaWtl IHRyYWNpbmcgSklUcyBjYW5ub3Qgb3B0aW1pemUgd2VsbCAoZS5nLiBubyBzaWRlIGV4aXRzKSBt dWx0aXBsZSBmcmVxdWVudCBwYXRocyB3aXRoaW4gYSBtZXRob2QgKG9yIGl0IHdvdWxkIGVmZmVj dGl2ZWx5IGJlY29tZXMgYSBtZXRob2QgSklUIGFuZCB2ZXJ5IGxpdHRsZSBvZiBMQkJWIHdvdWxk IGJlIHVzZWQgdGhlbikuDQoNCkkgdGhpbmsgdGhlcmUgaXMgbm8gaW5oZXJlbnQgcmVhc29uIHRo YXQgTEJCViBjYW4ndCBzaWRlLWV4aXQuIFRoaXMgaXMgYSBwb2xpY3kgZGVjaXNpb24uIEknbSBh Y3R1YWxseSBub3Qgc3VyZSB3aGF0IHlvdSBtZWFuIGhlcmUgc2luY2UgaGFsZiB0aGUgcG9pbnQg b2YgYSB0cmFjaW5nIEpJVCBpcyB0byBzaWRlIGV4aXQgb24gdW5leHBlY3RlZCBkYXRhIG9yIHVu ZXhwZWN0ZWQgY29udHJvbCBwYXRocy4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KRmVhdHVyZSAjMjEyMjE6IFByb3Bvc2FsIHRvIHVwc3RyZWFtIFpKSVQNCmh0 dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8yMTIyMSNjaGFuZ2UtMTEyNzc3DQoNCiog QXV0aG9yOiBtYXhpbWVjYiAoTWF4aW1lIENoZXZhbGllci1Cb2lzdmVydCkNCiogU3RhdHVzOiBP cGVuDQoqIEFzc2lnbmVlOiBtYXhpbWVjYiAoTWF4aW1lIENoZXZhbGllci1Cb2lzdmVydCkNCiog VGFyZ2V0IHZlcnNpb246IDMuNQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KIyBCYWNrZ3JvdW5kDQoNCkZvciB0aGUgcGFzdCAzIG1vbnRocywgdGhlIFlKSVQgdGVh bSBhdCBTaG9waWZ5IGhhcyBiZWVuIHdvcmtpbmcgb24gYSBuZXh0LWdlbmVyYXRpb24gUnVieSBK SVQsIHdoaWNoIHdlIHJlZmVyIHRvIGFzIFpKSVQuICBUaGlzIG5ldyBjb21waWxlciBpcyBjdXJy ZW50bHkgYmVpbmcgZGV2ZWxvcGVkIGluIGEgcHJpdmF0ZSBmb3JrLCB3aXRoIHRoZSBob3BlIHRo YXQgd2UgY2FuIGV2ZW50dWFsbHkgdXBzdHJlYW0gaXQgaW50byBydWJ5L3J1YnkuIE1heGltZSBD aGV2YWxpZXItQm9pc3ZlcnQgd2lsbCBnaXZlIGEgdGFsayBhdCBSdWJ5S2FpZ2kgMjAyNSB0byBv ZmZpY2lhbGx5IGFubm91bmNlIHRoZSBwcm9qZWN0IHRvIHRoZSBSdWJ5IGNvbW11bml0eSBhbmQg dGhlIGJyb2FkZXIgcHVibGljLg0KDQojIERlc2lnbiBvZiBaSklUDQoNCllKSVQgY29tcGlsZXMg WUFSViBieXRlY29kZSBtb3JlIG9yIGxlc3MgZGlyZWN0bHkgdG8gbWFjaGluZSBjb2RlLiBUaGlz IGhhcyB0aGUgYmVuZWZpdCB0aGF0IFlKSVQgY29tcGlsZXMgY29kZSBmYXN0IGFuZCB0aGF0IGl0 4oCZcyBhIHJlbGF0aXZlbHkgc2ltcGxlIGFyY2hpdGVjdHVyZSwgd2hpY2ggd2FzIGhlbHBmdWwg aW4gYnVpbGRpbmcgdGhlIGNvbXBpbGVyIGluY3JlbWVudGFsbHkuIFRoZSBkb3duc2lkZSBpcyB0 aGF0IFlKSVQgaXMgZGlmZmljdWx0IHRvIGV4dGVuZCBhbmQgYnVpbGQgdXBvbi4gSW4gcGFydGlj dWxhciwgWUpJVCBpcyB2ZXJ5IGxpbWl0ZWQgd2hlbiBpdCBjb21lcyB0byBvcHRpbWl6YXRpb25z IHRoYXQgY3Jvc3MgWUFSViBpbnN0cnVjdGlvbiBib3VuZGFyaWVzLiBXZeKAmXZlIGtub3duIGZv ciBzb21lIHRpbWUgdGhhdCBpbiBvcmRlciB0byB1bmxvY2sgaGlnaGVyIGxldmVscyBvZiBwZXJm b3JtYW5jZSwgYSBSdWJ5IEpJVCB3b3VsZCBuZWVkIHRoZSBhYmlsaXR5IHRvIHBlcmZvcm0gbW9y ZSBhZ2dyZXNzaXZlIGlubGluaW5nLCBidXQgaXQgaXMgY2hhbGxlbmdpbmcgdG8gY2xlYW5seSBk byB0aGlzIGluIFlKSVQuDQoNClRoZSBtYWluIGlubm92YXRpb24gb2YgWkpJVCBpcyB0aGF0IGl0 IGhhcyBpdHMgb3duIFN0YXRpYyBTaW5nbGUgQXNzaWdubWVudCAoU1NBKSBJbnRlcm1lZGlhdGUg UmVwcmVzZW50YXRpb24gKElSKS4gWUFSViBieXRlY29kZSBpcyBjb252ZXJ0ZWQgaW50byB0aGlz IElSLCB3aGljaCBjYW4gdGhlbiBiZSBvcHRpbWl6ZWQgdXNpbmcgbXVsdGlwbGUgb3B0aW1pemF0 aW9uIHBhc3Nlcy4gVGhlc2UgcGFzc2VzIGNhbiBiZSBvcnRob2dvbmFsIGFuZCBtb2R1bGFyIHRv IHNvbWUgZGVncmVlLCB3aGljaCBtYWtlcyB0aGUgZGVzaWduIG9mIHRoZSBjb21waWxlciBlYXNp ZXIgdG8gcmVhc29uIGFib3V0LCBlYXNpZXIgdG8gZXh0ZW5kIGFuZCBhbHNvIG9wZW5zIHVwIHRo ZSBwb3NzaWJpbGl0eSBvZiBoYXZpbmcgbXVsdGlwbGUgSklUIGNvbXBpbGF0aW9uIHRpZXJzIGlu IHRoZSBmdXR1cmUsIHdoaWNoIGlzIHNvbWV0aGluZyB0aGF0IGJvdGggTWF0eiBhbmQgVGFrYXNo aSBLb2t1YnVuIGhhdmUgaG9wZWQgdG8gc2VlIGluIGEgUnVieSBKSVQgZm9yIHNvbWUgdGltZS4N Cg0KSW4gYWRkaXRpb24gdG8gdGhpcywgd2UgYXJlIG1vdmluZyB0byBhIG1vcmUgdHJhZGl0aW9u YWwgbWV0aG9kLWJhc2VkIEpJVCBjb21waWxlciBkZXNpZ24uIEkgKE1heGltZSkgaGF2ZSBoYWQg dGhlIGNoYW5jZSB0byBoZWxwIGJ1aWxkIGFuZCBkZXBsb3kgTGF6eSBCYXNpYyBCbG9jayBWZXJz aW9uaW5nIChMQkJWKSwgYW4gb2Zmc2hvb3Qgb2YgbXkgUGhEIHJlc2VhcmNoIGludG8gYSBwcm9k dWN0aW9uIGNvbXBpbGVyLCBhbiBvcHBvcnR1bml0eSB3aGljaCBJ4oCZbSB2ZXJ5IHRoYW5rZnVs IGZvci4gSG93ZXZlciwgSSBmZWVsIGxpa2UgWkpJVCBtaWdodCBiZW5lZml0IGZyb20gaGF2aW5n IGEgY29tcGlsZXIgYXJjaGl0ZWN0dXJlIHRoYXQgaXMgbW9yZSDigJxzdGFuZGFyZOKAnS4gV2l0 aCBZSklULCB3ZeKAmXZlIGhhZCB2ZXJ5IGZldyBjb250cmlidXRpb25zIGZyb20gUnVieSBDb3Jl IGNvbnRyaWJ1dG9ycyBvdXRzaWRlIG9mIFNob3BpZnkuIEnigJltIGhvcGluZyB0aGF0IGlmIHdl IGJ1aWxkIGEgY29tcGlsZXIgd2l0aCBhbiBhcmNoaXRlY3R1cmUgdGhhdCBpcyBtb3JlIHRleHRi b29rLWxpa2UsIHdlIGNvdWxkIGhhdmUgYSBwcm9qZWN0IHRoYXQgaXMgbW9yZSBhcHByb2FjaGFi bGUgZm9yIG5ldyBjb250cmlidXRvcnMgYW5kIHRodXMgbW9yZSBpbmNsdXNpdmUgb2Ygb3RoZXIg UnVieSBjb3JlIG1lbWJlcnMgb3V0c2lkZSBvZiBTaG9waWZ5LCB3aGljaCB3b3VsZCBiZSBncmVh dCBmb3IgdGhlIGxvbmctdGVybSBmdXR1cmUgb2YgUnVieS4NCg0KIyBDdXJyZW50IFN0YXR1cw0K DQpJdCBpcyBzdGlsbCBlYXJseSBkYXlzIGZvciBaSklULiBXZSBhcmUgb25seSAzIG1vbnRocyBp bnRvIGl0cyBkZXZlbG9wbWVudC4gQXMgc3VjaCwgWkpJVCBpcyBjdXJyZW50bHkgdmVyeSBtdWNo IGluY29tcGxldGUgYW5kIGNhbiBvbmx5IHJ1biBzbWFsbCB0ZXN0cyBhbmQgbWljcm9iZW5jaG1h cmtzLiBOb25ldGhlbGVzcywgd2Ugd291bGQgc3RpbGwgbGlrZSB0byB1cHN0cmVhbSBpdCBiZWNh dXNlIGRldmVsb3BpbmcgaW4gYSBmb3JrIG1ha2VzIGl0IG11Y2ggaGFyZGVyIHRvIGtlZXAgdXAg d2l0aCB1cHN0cmVhbSBjaGFuZ2VzIGluIFJ1YnkuIFdl4oCZcmUgaG9waW5nIHRvIGJyaW5nIGl0 IG11Y2ggZmFydGhlciBhbG9uZyB0aGlzIHllYXIsIGFuZCB3ZSBiZWxpZXZlIHRoYXQgWkpJVCB3 aWxsIGJlIGZhaXJseSB1bmludHJ1c2l2ZSBpbiB0aGUgdXBzdHJlYW0gcmVwbyBnaXZlbiB0aGF0 IGl0IHdpbGwgaGF2ZSBubyBtb3JlIGRlcGVuZGVuY2llcyB0aGFuIFlKSVQsIGFuZCBpdCB3aWxs IGFsc28gYmUgZ3VhcmRlZCBieSBhIGNvbW1hbmQtbGluZSBzd2l0Y2guDQpSdWJ5IDMuNSAvIDIw MjUgT2JqZWN0aXZlcw0KT3VyIGdvYWwgZm9yIHRoZSBlbmQgb2YgdGhlIHllYXIgaXMgdG8gYnJp bmcgWkpJVCBhcHByb3hpbWF0ZWx5IGF0IHBhcml0eSB3aXRoIFlKSVQgaW4gdGVybXMgb2YgcGVy Zm9ybWFuY2UuIFdlIGV4cGVjdCB0aGF0IGl0IHdpbGwgYmUgcmVsYXRpdmVseSBlYXN5IHRvIG91 dHBlcmZvcm0gWUpJVCBvbiBzbWFsbCBtaWNyb2JlbmNobWFya3MsIGJ1dCB0aGF0IG1hdGNoaW5n IFlKSVTigJlzIHBlcmZvcm1hbmNlIGFjcm9zcyBsYXJnZXIgUnVieSBwcm9ncmFtcyB3aWxsIHRh a2Ugc2V2ZXJhbCBtb250aHMgYmVjYXVzZSBvZiB0aGUgYnJlYWR0aCBvZiBSdWJ5IGZlYXR1cmVz IHVzZWQuIEl0IGlzIG5vbi10cml2aWFsIHRvIGVmZmljaWVudGx5IGhhbmRsZSBtZWdhbW9ycGhp YyBjYWxsIHNpdGVzIG1ha2luZyB1c2Ugb2Yga2V5d29yZCBhcmd1bWVudHMsIGZvciBpbnN0YW5j ZS4NCg0KSXQgc2hvdWxkIG5vdCBiZSBkaWZmaWN1bHQgdG8gYnJpbmcgWkpJVCBhdCBwYXJpdHkg d2l0aCBZSklUIGluIHRlcm1zIG9mIHN1cHBvcnRlZC91bnN1cHBvcnRlZCBSdWJ5IGZlYXR1cmVz LCBiZWNhdXNlIHRoZSBKSVQgY29tcGlsZXIgY2FuIGFsd2F5cyBmYWxsIGJhY2sgdG8gdGhlIGlu dGVycHJldGVyIGZvciBhbnkgZmVhdHVyZSBpdCBkb2VzbuKAmXQgc3VwcG9ydC4NCg0KU29tZSBm ZWF0dXJlcyB3ZSBhaW0gdG8gaW1wbGVtZW50L2NvbXBsZXRlIGluIHRpbWUgZm9yIFJ1YnkgMy41 Og0KLSBGYXN0IEpJVC10by1KSVQgY2FsbHMgdXNpbmcgYSBjdXN0b20gY2FsbGluZyBjb252ZW50 aW9uDQotIFBvbHltb3JwaGljIGlubGluZSBjYWNoZXMNCi0gU3VwcG9ydCBmb3IgZnVsbCBkZW9w dGltaXphdGlvbiAoZS5nLiBmb3IgVHJhY2VQb2ludCkNCi0gQWJpbGl0eSB0byBkZW9wdGltaXpl IHNpbmdsZSBmdW5jdGlvbnMgKGUuZy4gbWV0aG9kIHJlZGVmaW5lZCwgY2FsbGVyIGdldHMgZGVv cHRpbWl6ZWQpDQotIFNpZGUtZXhpdCBtdWNoIGxlc3Mgb2Z0ZW4gdGhhbiBZSklUIChjcnVjaWFs IGZvciBnb29kIHBlcmZvcm1hbmNlKQ0KLSBBYmlsaXR5IHRvIHNlcmlhbGl6ZSBtYWNoaW5lIGNv ZGUNCi0gRGVhZC1jb2RlIGVsaW1pbmF0aW9uLCBjb25zdGFudCBwcm9wYWdhdGlvbg0KLSBGdXNp b24gb2YgY29tcGFyaXNvbiBhbmQgYnJhbmNoIGluc3RydWN0aW9ucw0KDQpTdHJldGNoIGdvYWxz IGFuZCBsb25nZXItdGVybSBnb2FsczoNCi0gU3VwcG9ydCB0d28gSklUIGNvbXBpbGF0aW9uIHRp ZXJzDQotIEFnZ3Jlc3NpdmUgaW5saW5pbmcgb2YgUnVieSBjYWxscw0KLSBPcHRpbWl6ZSBHQyBh bGxvY2F0aW9ucw0KLSBBbGxvY2F0aW9uIGVsaXNpb24gdG8gc3BlZWQgdXAgYWxsb2NhdGlvbnMg YW5kIHJlZHVjZSBHQyBwcmVzc3VyZQ0KDQpXZSBhcmUgY3VycmVudGx5IHVzaW5nIGEgbW9kaWZp ZWQvaW1wcm92ZWQgdmVyc2lvbiBvZiB0aGUgWUpJVCBiYWNrZW5kIHRvIGdlbmVyYXRlIG1hY2hp bmUgY29kZS4gVGhpcyBtZWFucyBaSklUIGlzIGNvbWluZyBvdXQgb2YgdGhlIGdhdGUgd2l0aCBz dXBwb3J0IGZvciBib3RoIHg4Ni02NCBhbmQgYXJtNjQsIGFzIFlKSVQgZGlkLg0KDQpUaGUgYWJp bGl0eSB0byBzZXJpYWxpemUgbWFjaGluZSBjb2RlIGlzIHNvbWV0aGluZyB0aGF0IHdlIGhvcGUg dG8gYmUgYWJsZSB0byBpbXBsZW1lbnQgaW4gWkpJVC4gVGhpcyB3b3VsZCBhbGxvdyB1cyB0byBz YXZlIGNvbXBpbGVkIGNvZGUgYW5kIHJldXNlIGl0IGluIGZ1dHVyZSBleGVjdXRpb25zIG9mIGEg Z2l2ZW4gcHJvZ3JhbS4gVGhpcyB3b3VsZCBlbmFibGUgZmFzdGVyIHN0YXJ0dXAgdGltZXMuIFdl IGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhpcyBpcyBpbXBvcnRhbnQgaW4gcHJvZHVjdGlv biBlbnZpcm9ubWVudHMgc3VjaCBhcyBTaG9waWZ54oCZcyB3aGVyZSBjb2RlIGNhbiBiZSAocmUp ZGVwbG95ZWQgc2V2ZXJhbCB0aW1lcyBhIGRheSwgYnV0IGl0IGFsc28gbWFrZXMgc2Vuc2Ugb24g YSBzbWFsbGVyIHNjYWxlIHdoZXJlIGluZGl2aWR1YWxzIHJ1biBjb2RlIG9uIGEgcGVyc29uYWwg Y29tcHV0ZXIgYW5kIGNhbiBiZW5lZml0IGZyb20gc29mdHdhcmUgc3RhcnRpbmcgdXAgZmFzdGVy Lg0KDQojIE1lcmdpbmcgTG9naXN0aWNzDQoNCkxpa2UgaXRzIHByZWRlY2Vzc29yLCBaSklUIGlz IHdyaXR0ZW4gaW4gUnVzdCwgYW5kIGhhcyB2ZXJ5IGZldyBkZXBlbmRlbmNpZXMgYnkgZGVzaWdu LiBJbiBwYXJ0aWN1bGFyLCB0aGVyZSBhcmUgbm8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIG91dHNp ZGUgb2YgdGhlIFJ1c3QgY29tcGlsZXIgKHJ1c3RjKSB0byBidWlsZCBaSklUIHdpdGggUnVieS4N Cg0KR2l2ZW4gdGhhdCBpdCBpcyB2ZXJ5IGVhcmx5IGluIFpKSVTigJlzIGRldmVsb3BtZW50IHBy b2Nlc3MsIHdlIHdvdWxkIGxpa2UgdG8gdXBzdHJlYW0gWkpJVCB3aXRob3V0IHJlcGxhY2luZyBZ SklULCBzbyBhcyB0byBlbnN1cmUgdGhhdCBSdWJ5IDMuNSBzaGlwcyB3aXRoIGEgd2VsbC10ZXN0 ZWQsIHByb2R1Y3Rpb24tcmVhZHkgSklULiBBcyB3aXRoIFlKSVQsIHdlIHdvdWxkIGxpa2UgdG8g c3VnZ2VzdCB0aGF0IFpKSVQgc2hvdWxkIGJlIGd1YXJkZWQgYnkgYSAtLXpqaXQgY29tbWFuZC1s aW5lIHN3aXRjaC4gU2luY2UgdXNpbmcgdGhlIGNvbXBpbGVyIGlzIG9wdC1pbiwgdGhlcmUgaXMg dmVyeSBsaXR0bGUgcmlzayBmb3IgdGhlIGF2ZXJhZ2UgUnVieSB1c2VyLiBXZSBjYW4gYWRqdXN0 IHRoZSB3YXkgd2UgYWR2ZXJ0aXNlIFpKSVQgYXQgdGhlIHRpbWUgb2YgdGhlIFJ1YnkgMy41IHJl bGVhc2UgYW5kIGhvdyBtdWNoIHdlIHdhbnQgdGhlIGJyb2FkZXIgUnVieSBjb21tdW5pdHkgdG8g dHJ5IGl0IGJhc2VkIG9uIGl0cyBsZXZlbCBvZiBtYXR1cml0eSBhdCB0aGF0IHBvaW50LiBJZiBa SklUIGlzIG5vdCBzdWZmaWNpZW50bHkgbWF0dXJlLCB3ZSBjYW4gc2ltcGx5IHRlbGwgcGVvcGxl IHRoYXQgaXQgaXMgZXhwZXJpbWVudGFsIGFuZCBvbmx5IGZvciBlbnRodXNpYXN0cywgYW5kIHJl Y29tbWVuZCB0aGF0IHRoZXkgdXNlIFlKSVQgaW5zdGVhZC4NCg0KV2UgYXJlIGN1cnJlbnRseSBk ZXZlbG9waW5nIFpKSVQgdXNpbmcgUnVzdCAxLjg1LjAgc28gdGhhdCB3ZSBjYW4gdXNlIHRoZSAy MDI0IGVkaXRpb24gb2YgUnVzdC4gVGhpcyBzaG91bGRu4oCZdCBiZSBhIHByb2JsZW0gc2luY2Ug UnVzdCBjYW4gZWFzaWx5IGJlIGluc3RhbGxlZCB1c2luZyB0aGUgcnVzdHVwIHRvb2wsIGFuZCBp ZiBhIHN1ZmZpY2llbnRseSByZWNlbnQgUnVzdCBjb21waWxlciBpcyBub3QgYXZhaWxhYmxlLCBD UnVieSBjYW4gc3RpbGwgYnVpbGQgd2l0aG91dCBaSklULCBvciB3aXRoIFlKSVQgb25seSAoWUpJ VCByZXF1aXJlcyBydXN0YyAxLjU4LjApLg0KDQpJbiB0ZXJtcyBvZiBidWlsZCBzdHJhdGVneSwg aWYgYSByZWNlbnQgdmVyc2lvbiBvZiB0aGUgUnVzdCBjYXJnbyB0b29sIGlzIGluc3RhbGxlZCwg aXQgbWF5IGJlIHBvc3NpYmxlIHRvIGF1dG9tYXRpY2FsbHkgYnVpbGQgYm90aCBZSklUIGFuZCBa SklUIGluIHRoZSBzYW1lIGJpbmFyeS4gT3RoZXJ3aXNlLCBZSklUIGNvdWxkIGJlIGJ1aWx0IHdp dGhvdXQgWkpJVCBhcyBsb25nIGFzIHJ1c3RjIDEuNTguMCBvciBtb3JlIGEgcmVjZW50IHZlcnNp b24gaXMgYXZhaWxhYmxlLiBJZiBuZWl0aGVyIGlzIGF2YWlsYWJsZSwgdGhlbiBDUnVieSBjYW4g YmUgYnVpbHQgd2l0aG91dCBlaXRoZXIgSklUIGFzIGEgZmFsbGJhY2suIEFub3RoZXIgcG9zc2li aWxpdHksIGlmIHdlIHdhbnQgdG8gYmUgbW9yZSBjb25zZXJ2YXRpdmUgZm9yIFJ1YnkgMy41LCBp cyB0byBvbmx5IGVuYWJsZSBidWlsZGluZyBaSklUIGlmIGNvbmZpZ3VyZSBpcyBydW4gd2l0aCBh biBleHBsaWNpdCAtLWVuYWJsZS16aml0LiBXZSBjYW4gcG90ZW50aWFsbHkgbWFrZSB0aGlzIGRl Y2lzaW9uIGNsb3NlciB0byB0aGUgZW5kIG9mIHRoZSB5ZWFyLg0KDQpUaGUgdGltZWxpbmUgZm9y IHVwc3RyZWFtaW5nIHdvdWxkIGJlIGluIHRoZSA0IHRvIDYgd2Vla3MgZm9sbG93aW5nIFJ1YnlL YWlnaS4gVG8gbWVyZ2UgWkpJVCB1cHN0cmVhbSwgd2Ugd2lsbCByZWJhc2UgdGhlIGNvbW1pdHMg b24gcnVieS9ydWJ54oCYcyBtYXN0ZXIgYnJhbmNoIGFuZCBnZW5lcmFsbHkgcHJlc2VydmUgdGhl IGNvbW1pdCBoaXN0b3J5LiBTb21lIGNvbW1pdCBtZXNzYWdlcyB3aWxsIGJlIGNsZWFuZWQgdXAg YW5kIGltcHJvdmVkIHByaW9yIHRvIG1lcmdpbmcuIFNvbWUgY29tbWl0cyB3aGljaCBhcmUgbG9n aWNhbGx5IHJlbGF0ZWQgbWF5IGJlIHNxdWFzaGVkIHRvZ2V0aGVyLiBXZSB3aWxsIG9ubHkgZW5h YmxlIGEgc21hbGwgc3Vic2V0IG9mIENJIHRlc3RzIGZvciBaSklUIGF0IGZpcnN0LCBzbyBhcyB0 byBrZWVwIGFsbCB0ZXN0cyBwYXNzaW5nLg0KDQoNCg0KDQoNCi0tIA0KaHR0cHM6Ly9idWdzLnJ1 YnktbGFuZy5vcmcvDQogX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwogcnVieS1jb3JlIG1haWxpbmcgbGlzdCAtLSBydWJ5LWNvcmVAbWwucnVieS1sYW5nLm9y ZwogVG8gdW5zdWJzY3JpYmUgc2VuZCBhbiBlbWFpbCB0byBydWJ5LWNvcmUtbGVhdmVAbWwucnVi eS1sYW5nLm9yZwogcnVieS1jb3JlIGluZm8gLS0gaHR0cHM6Ly9tbC5ydWJ5LWxhbmcub3JnL21h aWxtYW4zL2xpc3RzL3J1YnktY29yZS5tbC5ydWJ5LWxhbmcub3JnLw==