[ruby-core:114507] [Ruby master Feature#19842] Introduce M:N threads
From:
"tenderlovemaking (Aaron Patterson) via ruby-core" <ruby-core@...>
Date:
2023-08-24 19:42:55 UTC
List:
ruby-core #114507
SXNzdWUgIzE5ODQyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGVuZGVybG92ZW1ha2luZyAoQWFyb24g UGF0dGVyc29uKS4NDQoNDQoNDQpieXJvb3QgKEplYW4gQm91c3NpZXIpIHdyb3RlIGluICNub3Rl LTIxOg0NCj4gQHRlbmRlcmxvdmVtYWtpbmcgdGhpcyBpc3N1ZSB3YXMgZW52aXNpb25lZCBpbml0 aWFsbHksIEkgaGFkIGEgUFIgdG8gcGFzcyBzdWNoIHRocmVhZCBpZGVhLCBidXQgSSBndWVzcyBp dCBnb3QgZm9yZ290dGVuIGFib3V0IGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC82 MTg5Lg0NCj4gDQ0KPiBXZSBjb3VsZCBqdXN0IG1lcmdlIHRoYXQgUFIgKHdoaWNoIEkgdGhpbmsg aGFzIHZhbHVlIGV2ZW4gYXNpZGUgZnJvbSBNYU55KS4NDQoNDQpHcmVhdCEgIFllcywgSSB3b3Vs ZCBsaWtlIGlmIHdlIG1lcmdlIHRoYXQgUFIg8J+YhA0NCg0NCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NDQpGZWF0dXJlICMxOTg0MjogSW50cm9kdWNlIE06TiB0aHJl YWRzDQ0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE5ODQyI2NoYW5nZS0xMDQy OTYNDQoNDQoqIEF1dGhvcjoga28xIChLb2ljaGkgU2FzYWRhKQ0NCiogU3RhdHVzOiBPcGVuDQ0K KiBQcmlvcml0eTogTm9ybWFsDQ0KKiBBc3NpZ25lZToga28xIChLb2ljaGkgU2FzYWRhKQ0NCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NDQpUaGlzIHRpY2tldCBwcm9w b3NlcyB0byBpbnRyb2R1Y2UgTTpOIHRocmVhZHMgdG8gaW1wcm92ZSBUaHJlYWRzL1JhY3RvcnMg cGVyZm9ybWFuY2UuDQ0KDQ0KIyMgQmFja2dyb3VuZA0NCg0NClJ1YnkgdGhyZWFkcyAoUlQgaW4g c2hvcnQpIGFyZSBpbXBsZW1lbnRlZCBmcm9tIG9sZCBSdWJ5IHZlcnNpb25zIGFuZCB0aGV5IGhh dmUgdGhlIGZvbGxvd2luZyBmZWF0dXJlczoNDQoNDQoqIENhbiBiZSBjcmVhdGVkIHdpdGggc2lt cGxlIG5vdGF0aW9uIGBUaHJlYWQubmV3e31gDQ0KKiBDYW4gYmUgc3dpdGNoZWQgdG8gYW5vdGhl ciByZWFkeSBSdWJ5IHRocmVhZCBieToNDQogICogVGltZS1zbGljZS4NDQogICogSS9PIGJsb2Nr aW5nLg0NCiAgKiBTeW5jaHJvbml6YXRpb24gc3VjaCBhcyBNdXRleCBmZWF0dXJlcy4NDQogICog QW5kIG90aGVyIGJsb2NraW5nIHJlYXNvbnMuDQ0KKiBDYW4gYmUgaW50ZXJydXB0aWJsZSBieToN DQogICogT1MtZGVsaXZlciBzaWduYWxzIChvbmx5IGZvciB0aGUgbWFpbiB0aHJlYWQpLg0NCiAg KiBgVGhyZWFkI2tpbGxgLg0NCiogQ2FuIGJlIHRlcm1pbmF0ZWQgYnk6DQ0KICAqIHRoZSBlbmQg b2YgZWFjaCBSdWJ5IHRocmVhZC4NDQogICogdGhlIGVuZCBvZiB0aGUgbWFpbiB0aHJlYWQgKGFu ZCBvdGhlciBSdWJ5IHRocmVhZHMgYXJlIGtpbGxlZCkuDQ0KDQ0KUnVieSAxLjggYW5kIGVybGll ciB2ZXJzaW9ucyB1c2VzIE06MSB0aHJlYWRzIChncmVlbiB0aHJlYWRzLCB1c2VyIGxldmVsIHRo cmVhZHMsIC4uLi4gdGhlIHdvcmQgMTpOIHRocmVhZHMgaXMgbW9yZSBwb3B1bGFyIGJ1dCB0byBt YWtlIHRoaXMgZXhwbGFuYXRpb24gY29uc2lzdGVudCBJIHVzZSAiTToxIiB0ZXJtIGhlcmUpIHdo aWNoIG1hbmFnZXMgbXVsdGlwbGUgUnVieSB0aHJlYWRzIG9uIDEgbmF0aXZlIHRocmVhZC4NDQoN DQooTmF0aXZlIHRocmVhZHMgYXJlIHByb3ZpZGVkIGJ5IEMgaW50ZXJmYWNlcyBzdWNoIGFzIFB0 aHJlYWRzLiBJbiBtYW55IGNhc2VzLCBuYXRpdmUgdGhyZWFkcyBhcmUgT1MgdGhyZWFkcywgYnV0 IHRoZXJlIGFyZSBhbHNvIHVzZXItbGV2ZWwgaW1wbGVtZW50YXRpb25zLCBzdWNoIGFzIHVzZXIt bGV2ZWwgcHRocmVhZCBsaWJyYXJpZXMgaW4gdGhlb3J5LiBUaGVyZWZvcmUsIHRoZXkgYXJlIHJl ZmVycmVkIHRvIGFzIG5hdGl2ZSB0aHJlYWRzIGluIHRoaXMgYXJ0aWNsZSBhbmQgTlQgaW4gc2hv cnQpDQ0KDQ0KSWYgYSBSdWJ5IHRocmVhZCBSVDEgYmxvY2tlZCBiZWNhdXNlIG9mIGEgSS9PIG9w ZXJhdGlvbiwgUnVieSBpbnRlcnByZXRlciBzd2l0Y2hlcyB0byB0aGUgbmV4dCByZWFkeSBSdWJ5 IHRocmVhZCBSVDIuIFRoZSBJL08gb3BlcmF0aW9uIHdpbGwgYmUgbW9uaXRvcnMgYnkgYSBgc2Vs ZWN0KClgIChvciBzaW1pbGFyKSBmdW5jdGlvbmFsaXR5IGFuZCBpZiB0aGUgSS9PIGlzIHJlYWR5 LCBSVDEgaXMgbWFya2VkIGFzIGEgcmVhZHkgdGhyZWFkIGFuZCBSVDEgd2lsbCBiZSByZXN1bWVk IHNvb24uIEhvd2V2ZXIsIHdoZW4gYSBSdWJ5IHRocmVhZCBpc3N1ZXMgc29tZSBvdGhlciBibG9j a2luZyBvcGVyYXRpb25zIHN1Y2ggYXMgYGdldGhvc3RieW5hbWUoKWAsIFJ1YnkgaW50ZXJwcmV0 ZXIgY2FuIG5vdCBzd3RpY2ggdG8gYW55IG90aGVyIFJ1YnkgdGhyZWFkIHdoaWxlIGBnZXRob3N0 YnluYW1lKClgIGlzIG5vdCBmaW5pc2hlZC4NDQoNDQpXZSBuYW1lZCB0d28gdHlwZXMgYmxvY2tp bmcgb3BlcmF0aW9uczoNDQoNDQoqIE1hbmFnZWQgYmxvY2tpbmcgb3BlcmF0aW9ucw0NCiAgKiBJ L08gKG1vc3Qgb2YgcmVhZC93cml0ZSkNDQogICAgKiBtYW5hZ2UgYnkgSS9PIG11bHRpcGxleGlu ZyBBUEkgKHNlbGVjdCwgcG9sbCwgZXBvbGwsIGtxdWV1ZSwgSU9DUCwgaW9fdXJpbmcsIC4uLikN DQogICogU2xlZXBpbmcNDQogICogU3luY2hyb25pemF0aW9uIChNdXRleCwgUXVldWUsIC4uLikN DQoqIFVubWFuYWdlZCBvcGVyYXRpb25zDQ0KICAqIEFsbCBvdGhlciBibG9ja2luZyBvcGVyYXRp b25zIG5vdCBsaXN0ZWQgYWJvdmUsIHdyaXR0ZW4gaW4gQw0NCiAgICAqIEh1Z2UgbnVtYmVyIGNh bGN1bGF0aW9uIGxpa2UgYEJpZ251bSMqYA0NCiAgICAqIEROUyBsb29rdXANDQogICAgKiBJL08g KGNhbiBub3QgZGV0ZWN0IGJsb2NrLWFibGUgb3Igbm90IGJ5IG11bHRpcGxleGluZyBBUEkpDQ0K ICAgICAgKiBvcGVuIG9uIEZJRk8sIGNsb3NlIG9uIE5GUywgLi4uDQ0KICAgICogZmxvY2sgYW5k IG90aGVyIGxvY2tpbmcgbWVjaGFuaXNtDQ0KICAgICogbGlicmFyeSBjYWxsIHdoaWNoIHVzZXMg YmxvY2tpbmcgb3BlcmF0aW9ucw0NCiAgICAgICogYGxpYmZvb2AgaGFzIGBmb29fZnVuYygpYCBh bmQgYGZvb19mdW5jKClgIHdhaXRzIEROUyBsb29rdXAuIEEgUnVieSBleHRlbnNpb24gYGZvby1y dWJ5YCBjYW4gY2FsbCBgZm9vX2Z1bmMoKWAuDQ0KDQ0KV2l0aCB0aGVzZSB0ZXJtcyB3ZSBjYW4g c2F5IHRoYXQgTToxIHRocmVhZHMgY2FuIHN1cG9ydCBtYW5hZ2VkIGJsb2NraW5nIG9wZXJhdGlv bnMgYnV0IGNhbiBub3Qgc3VwcG9ydCB1bm1hbmFnZWQgb3BlcmF0aW9ucyAoY2FuIG5vdCBtYWtl IHByb2dyZXNzIG90aGVyIFJ1YnkgdGhyZWFkcykgd2l0aG91dCBmdXJ0aGVyIHRyaWNrcy4NDQoN DQpOb3RlIHRoYXQgaWYgdGhlIGBzZWxlY3QoKWAtbGlrZSBzeXN0ZW0gY2FsbHMgc2F5IGEgYGZk YCBpcyByZWFkeSwgYnV0IHRoZSBJL08gb3BlYXJ0aW9uIGZvciBgZmRgIGNhbiBiZSBibG9ja2Vk IGJlY2F1c2Ugb2Ygc29tZSBjb250ZW50aW9uIChyZWFkIGJ5IGFub3RoZXIgdGhyZWFkIG9yIHBy b2Nlc3MsIGZvciBleGFtcGxlKS4NDQoNDQpNOjEgdGhyZWFkcyBoYXMgYW5vdGhlciBkaXNhZHZh bnRhZ2UgdGhhdCBpdCBjYW4gbm90IHJ1biBpbiBwYXJhbGxlbCBiZWNhdXNlIG9ubHkgYSBuYXRp dmUgdGhyZWFkIGlzIHVzZWQuDQ0KDQ0KRnJvbSBSdWJ5IDEuOSB3ZSBoYWQgaW1wbGVtZW50ZWQg MToxIHRocmVhZCB3aGljaCBtZWFucyBhIFJ1YnkgdGhyZWFkIGhhcyBhIGNvcnJlc3BvbmRpbmcg bmF0aXZlIHRocmVhZC4gVG8gbWFrZSBpbXBsZW1lbnRhdGlvbiBlYXN5IHdlIGFsc28gaW50cm9k dWNlZCBhIEdWTC4gT25seSBhIFJ1YnkgdGhyZWFkIGFjcXVpcmVzIEdWTCBjYW4gcnVuLiBXaXRo IDE6MSBtb2RlbCwgd2UgY2FuIHN1cHBvcnQgbWFuYWdlZCBibG9ja2luZyBvcHJhdGlvbnMgYW5k IHVubWFuYWdlZCBibG9ja2luZyBvcGVyYXRpb25zIGJ5IHJlbGVhc2luZyBHVkwuIFdoZW4gYSBS dWJ5IHRocmVhZCB3YW50IHRvIGlzc3VlIGEgYmxvY2tpbmcgb3BlcmF0aW9uLCB0aGUgUnVieSB0 aHJlYWQgcmVsZWFzZXMgR1ZMIGFuZCBhbm90aGVyIHJlYWR5IFJ1YnkgdGhyZWFkcyBjb250aW51 ZSB0byBydW4uIFdlIGRvbid0IGNhcmUgdGhlIGJsb2NraW5nIG9wZXJhdGlvbiBpcyBtYW5hZ2Vk IG9yIHVubWFuYWdlZC4NDQoNDQooV2UgY2FuIG5vdCBtYWtlIHNvbWUgb2YgdW5tYW5hZ2VkIGJs b2NraW5nIG9wZXJhdGlvbnMgaW50ZXJydXB0aWJsZSAoc3RvcCBieSBDdHJsLUMgZm9yIGV4YW1w bGUpKS4NDQoNDQpBZHZhbnRhZ2VzIG9mIDE6MSB0aHJlYWRzIHRvIHRoZSBNOjEgdGhyZWFkcyBp czoNDQoNDQoqIEVhc3kgdG8gaGFuZGxlIGJsb2NraW5nIG9wZXJhdGlvbnMgYnkgcmVsZWFzaW5n IEdWTC4NDQoqIFdlIGNhbiB1dGlsaXplIHBhcmFsbGVsaXNtIHdpdGggbXVsdGlwbGUgbmF0aXZl IHRocmVhZHMgYnkgcmVsZWFzaW5nIEdWTC4NDQoNDQpEaXNhZHZhbnRhZ2VzIG9mIDE6MSB0aHJl YWRzIHRvIHRoZSBNOjEgdGhyZWFkcyBpczoNDQoNDQoqIE92ZXJoZWFkIHRvIG1ha2UgbWFueSBu YXRpdmUgdGhyZWFkcyBmb3IgbWFueSBSdWJ5IHRocmVhZHMNDQogICogV2UgY2FuIG5vdCBtYWtl IGh1Z2UgbnVtYmVyIG9mIFJ1YnkgdGhyZWFkcyBhbmQgUmFjdG9ycyBvbiAxOjEgdGhyZWFkcy4N DQoqIFRocmVhZCBzd2l0Y2hpbmcgb3ZlcmhlYWQgYnkgR1ZMIGJlY2F1c2UgaW50ZXItY29yZSBj b21tdW5pY2F0aW9uIGlzIG5lZWRlZC4NDQoNDQpGcm9tIFJ1YnkgMy4wIHdlIGludHJvZHVjZWQg ZmliZXIgc2NoZWR1bGVyIG1lY2hhbmlzbSB0byBtYWludGFpbiBtdWx0aXBsZSBmaWJlcnMgDQ0K DQ0KRGlmZmVyZW5jZXMgYmV0d2VlbiBSdWJ5IDEuOCBNOjEgdGhyZWFkcyBhcmU6DQ0KDQ0KKiBO byB0aW1lc2xpY2UgKG9ubHkgc3dpdGNoIGZpYmVycyBieSBtYW5hZ2VkIGJsb2NraW5nIG9wZXJh dGlvbnMpDQ0KKiBSdWJ5IHVzZXJzIGNhbiBtYWtlIG93biBzY2hlZHVsZXJzIGZvciBhcHBzIHdp dGggZmF2b3JpdGUgdW5kZXJseWluZyBtZWNoYW5pc20NDQoNDQpEaXNhZHZhbnRhZ2VzIGFyZSBz aW1pbGFyIHRvIE06MSB0aHJlYWRzLiBBbm90aGVyIGRpc2FkdmFudGFnZXMgaXMgd2UgbmVlZCB0 byBjb25zaWRlciBhYm91dCBGaWJlcidzIGJlaGF2aW9yLg0NCg0NCkZyb20gUnVieSAzLjAgd2Ug YWxzbyBpbnRyb2R1Y2VkIFJhY3RvcnMuIFJhY3RvcnMgY2FuIHJ1biBpbiBwYXJhbGxlbCBiZWNh dXNlIG9mIHNlcGFyYXRpbmcgbW9zdCBvZiBvYmplY3RzLiAxIFJhY3RvciBjcmVhdGVzIDEgUnVi eSB0aHJlYWQsIHNvIFJhY3RvcnMgaGFzIHNhbWUgZGlzYWR2YW50YWdlcyBvZiAxOjEgdGhyZWFk cy4gRm9yIGV4YW1wbGUsIHdlIGNhbiBub3QgbWFrZSBodWdlIG51bWJlciBvZiBSYWN0b3JzLg0N Cg0NCg0NCiMjIEdvYWwNDQoNDQpPdXIgZ29hbCBpcyBtYWtpbmcgbGlnaHR3ZWlnaHQgUmFjdG9y cyBvbiBsaWdodHdlaWdodCBSdWJ5IHRocmVhZHMuIFRvIGVuYWJsZSB0aGlzIGdvYWwgd2UgcHJv cG9zZSB0byBpbXBsZW1lbnQgTTpOIHRocmVhZHMgb24gTVJJLg0NCg0NCk06TiB0aHJlYWRzIG1h bmFnZXMgTSBSdWJ5IHRocmVhZHMgb24gTiBuYXRpdmUgdGhyZWFkcywgd2l0aCBsaW1pdGVkIE4g KH49IENQVSBjb3JlIG51bWJlcnMgZm9yIGV4YW1wbGUpLg0NCg0NCkFkdmFudGFnZXMgb2YgTTpO IHRocmVhZHMgYXJlOg0NCg0NCjEuIFdlIGNhbiBydW4gTSByYWN0b3JzIG9uIE4gbmF0aXZlIHRo cmVhZHMgc2ltdWx0YW5lb3VzbHkgaWYgdGhlIG1hY2hpbmUgaGFzIE4gY29yZXMuDQ0KMi4gV2Ug Y2FuIG1ha2UgaHVnZSBudW1iZXIgb2YgUnVieSB0aHJlYWRzIG9yIFJhY3RvcnMgYmVjYXVzZSB3 ZSBkb24ndCBuZWVkIGh1Z2UgbnVtYmVyIG9mIG5hdGl2ZSB0aHJlYWRzDQ0KMy4gV2UgY2FuIHN1 cHBvcnQgdW5tYW5hZ2VkIGJsb2NraW5nIG9wZXJhdGlvbnMgYnkgbG9ja2luZyBhIG5hdGl2ZSB0 aHJlYWQgdG8gYSBSdWJ5IHRocmVhZCB3aGljaCBpc3N1ZXMgYW4gdW5tYW5hZ2VkIGJsb2NraW5n IG9wZXJhdGlvbi4NDQo0LiBXZSBjYW4gbWFrZSBvdXIgb3duIFJ1YnkgdGhyZWFkcyBvciBSYWN0 b3JzIHNjaGVkdWxlciBpbnN0ZWFkIG9mIHRoZSBuYXRpdmUgdGhyZWFkIChPUykgc2NoZWR1bGVy Lg0NCg0NCkRpc2FkdmFudGFnZXMgb2YgTTpOIHRocmVhZHMgYXJlOg0NCg0NCjEuIEl0IGlzIGNv bXBsaWNhdGVkIGltcGxtZW50YXRpb24gYW5kIGl0IGNhbiBiZSBoYXJkLg0NCjIuIEl0IGNhbiBp bnRyb2R1Y2UgaW5jb21wYXRpYmlsaXR5IGVzcGVjYWlhbGx5IG9uIFRMUyAoVGhyZWFkIGxvY2Fs IHN0b3JhZ2UpLg0NCjMuIFdlIG5lZWQgdG8gbWFpdGFpbiBvdXIgb3duIHNjaGVkdWxlci4NDQoN DQpXaXRob3V0IHVzaW5nIG11bHRpcGxlIFJhY3RvcnMsIGl0IGlzIHNpbWlsYXIgdG8gUnVieSAx LjggTToxIHRocmVhZHMuIFRoZSBkaWZmZXJlbmNlIHdpdGggTToxIHRocmVhZHMgYXJlIGxvY2tp bmcgTlQgbWVjaGFuaXNtIHRvIHN1cHBvcnQgdW5tYW5hZ2VkIGJsb2NraW5nIG9wZXJhdGlvbnMu IEFub3RoZXIgYWR2YW50YWdlIGlzIHRoYXQgaXQgaXMgZWFzeSB0byBmYWxsYmFjayB0byAxOjEg dGhyZWFkcyBieSBsb2NraW5nIGFsbCBvZiBjb3JyZXNwb25kaW5nIG5hdGl2ZSB0aHJlYWRzIHRv IFJ1YnkgdGhyZWFkcy4NDQoNDQojIyBQcm9wb3NlZCBkZXNpZ24NDQoNDQojIyMgVXNlciBmYWNp bmcgY2hhbmdlcw0NCg0NCklmIGEgcHJvZ3JhbSBvbmx5IGhhcyBhIG1haW4gUmFjdG9yIChpLmUu LCBtb3N0IFJ1YnkgcHJvZ3JhbXMpLCB0aGUgdXNlciB3aWxsIG5vdCBmYWNlIGFueSBjaGFuZ2Vz IGJ5IGRlZmF1bHQuDQ0KT24gbWFpbiBSYWN0b3IsIGFsbCB0aHJlYWRzIGFyZSAxOjEgdGhyZWFk cyBieSBkZWZhdWx0IGFuZCB0aGVyZSBpcyBubyBjb21wYXRpYmlsaXR5IGlzc3VlLg0NCg0NCmBS VUJZX01OX1RIUkVBRFM9MWAgZW52cmlvbm1lbnQgdmFyaWFibGUgaXMgZ2l2ZW4sIG1haW4gUmFj dG9yIGVuYWJsZXMgTTpOIHRocmVhZHMuDQ0KTm90ZSB0aGF0IHRoZSBtYWluIHRocmVhZCBsb2Nr cyBOVCBieSBkZWZhdWx0IGJlY2F1c2UgdGhlIGluaXRpYWwgTlQgaXMgc3BlY2lhbCBpbiBzb21l IGNhc2UuIEknbSBub3Qgc3VyZSB3ZSBjYW4gcmVsYXggdGhpcyBsaW1pdGF0aW9uLg0NCg0NCk9u IHRoZSBtdWx0aXBsZSBSYWN0b3JzLCBOICgrIGFscGhhKSBuYXRpdmUgdGhyZWFkcyBydW4gTSBy YWN0b3JzLiBOb3cgdGhlcmUgaXMgbm8gd2F5IHRvIGRpc2FibGUgTTpOIHRocmVhZHMgb24gbXVs dGlwbGUgUmFjdG9ycyBiZWNhdXNlIHRoZXJlIGFyZSBvbmx5IGEgZmV3IG11bHRpLVJhY3RvciBw cm9ncmFtcyBhbmQgbm8gY29tcGF0aWJpbGl0eSBpc3N1ZXMuDQ0KDQ0KTWF4aW11bSBudW1iZXIg b2YgTiBjYW4gYmUgc3BlY2lmaWVkIGJ5IGBSVUJZX01BWF9QUk9DPU5gLiA4IGJ5IGRlZmF1bHQg YnV0IHRoaXMgdmFsdWUgc2hvdWxkIGJlIHNwZWNpZmllZCB3aXRoIHRoZSBudW1iZXIgb2YgQ1BV IHByb2Nlc3NvcnMgKGNvcmVzKS4NDQoNDQojIyMgVExTIGlzc3VlDQ0KDQ0KT24gTTpOIHRocmVh ZHMgYSBSdWJ5IHRocmVhZCAoUlQxKSBtaWdyYXRlcyBmcm9tIGEgbmF0aXZlIHRocmVhZCAoTlQx KSB0byBOVDIsIC4uLiBzbyB0aGF0IFRMUyBvbiBuYXRpdmUgY29kZSBjYW4gYmUgYSBwcm9ibGVt Lg0NCkZvciBleGFtcGxlLCBSVDEgY2FsbHMgYSBsaWJyYXJ5IGZ1bmN0aW9uIGBmb28oKWAgYW5k IGl0IHNldCBUTFMxIG9uIE5UMS4gQWZ0ZXIgbWlncmF0aW5nIFJUMSB0byBOVDIsIFJUMSBjYWxs cyBgZm9vKClgIGFnYWluIGJ1dCB0aGVyZSBpcyBubyBUTFMxIHJlY29yZCBiZWNhdXNlIFRMUzEg aXMgcmVjb3JkZWQgb25seSBvbiBOVDEuDQ0KDQ0KT24gdGhpcyBjYXNlLCBSVDEgc2hvdWxkIGJl IHJ1biBvbiBOVDEgd2hpbGUgdXNpbmcgbmF0aXZlIGxpYnJhcnkgZm9vLiBUbyBhdm9pZCBzdWNo IHByYm9sZW0sIHdlIG5lZWQgdGhlIGZvbGxvd2luZyBmZWF0dXJlczoNDQoNDQoqIDE6MSB0aHJl YWRzIG9uIG1haW4gUmFjdG9yIGJ5IGRlZmF1bHQNDQoqIGZ1bmN0aW9uYWxpdHkgdG8gbG9jayB0 aGUgTlQgZm9yIFJULCBtYXliZSBgVGhyZWFkI2xvY2tfbmF0aXZlX3RocmVhZGAgYW5kIGBUaHJl YWQjdW5sb2NrX25hdGl2ZV90aHJlYWRgIEFQSSBpcyBuZWVkZWQuIEZvciBleGFtcGxlLCBHbyBs YW5ndWFnZSBoYXMgYHJ1bnRpbWUuTG9ja09TVGhyZWFkKClgIGFuZCBgcnVudGltZS5VbmxvY2tP U1RocmVhZCgpYCBmb3IgdGhpcyBwdXJwb3NlLg0NCiogT3IgQy1BUEkgb25seSBmb3IgdGhpcyBw dXJwb3NlPyAobm90IGZpeGVkIHlldCkNDQoNDQpUaGFua2Z1bGx5LCB0aGUgc2FtZSBwcm9ibGVt IGNhbiBvY2N1ciB3aXRoIEZpYmVyIHNjaGVkdWxlciAoYW5kIG9mIGNvdXJzZSBSdWJ5IDEuOCBN OjEgdGhyZWFkcyksIGJ1dCBJIGhhdmUgbm90IGhlYXJkIG9mIGl0IGJlaW5nIG11Y2ggb2YgYSBw cm9ibGVtLCBzbyBJIGV4cGVjdCB0aGF0IFRMUyB3aWxsIG5vdCBiZSBtdWNoIG9mIGFuIGlzc3Vl Lg0NCg0NCiMjIyBVbm1hbmFnZWQgYmxvY2tpbmcgb3BlcmF0aW9ucw0NCg0NCkZyb20gUnVieSAx LjkgKDE6MSB0aHJlYWRzKSwgdGhlIGBub2d2bChmdW5jKWAgQVBJIGlzIHVzZWQgZm9yIG1vc3Qg YmxvY2tpbmcgb3BlcmF0aW9ucyB0byBrZWVwIHRoZSB0aHJlYWRpbmcgc3lzdGVtIGhlYWx0aHku IEluIG90aGVyIHdvcmRzLCBgbm9ndmwoZnVuYylgIHJlcHJlc2VudHMgdGhhdCB0aGUgZ2l2ZW4g ZnVuY3Rpb24gaXMgYmxvY2tpbmcgb3BlcmF0aW9uLiBUbyBzdXBwb3J0IHVubWFuYWdlZCBibG9j a2luZyBvcGVyYXRpb25zLCB3ZSBsb2NrIGEgbmF0aXZlIHRocmVhZCBmb3IgdGhlIFJ1YnkgdGhy ZWFkIHdoaWNoIGlzc3VlcyBibG9ja2luZyBvcGVyYXRpb24uDQ0KDQ0KSWYgdGhlIGJsb2NraW5n IG9wZXJhdGlvbnMgZG9lc24ndCBmaW5pc2ggc29vbiwgb3RoZXIgUnVieSB0aHJlYWRzIGNhbiBu b3QgcnVuIGJlY2F1c2UgYSBSVCBsb2NrcyBOVC4gSW4gdGhpcyBjYXNlLCBhbm90aGVyIHN5c3Rl bSBtb25pdG9yaW5nIHRocmVhZCBuYW1lZCAiVGltZXIgdGhyZWFkIiAoaGlzdG9yaWNhbCBuYW1l IGFuZCBUVCBpbiBzaG9ydCkgY3JlYXRlcyBhbm90aGVyIE5UIHRvIHJ1biByZWFkeSBvdGhlciBS dWJ5IHRocmVhZHMuDQ0KDQ0KVGhpcyBUVCdzIGJlaGF2aW9yIGlzIHRoZSBzYW1lIGFzIHRoZSBi ZWhhdmlvciBvZiAic3lzbW9uIiBpbiB0aGUgR28gbGFuZ3VhZ2UuDQ0KDQ0KV2UgbmFtZWQgbG9j a2VkIE5UIGFzIGRlZGljYXRlZCBuYXRpdmUgdGhyZWFkcyAoRE5UKSBhbmQgb3RoZXIgTlQgYXMg c2hhcmVkIG5hdGl2ZSB0aHJlYWRzIChTTlQpLiBUaGUgdXBwZXIgYm91bmQgYnkgYFJVQllfTUFY X1BST0NgIGFmZmVjdHMgdGhlIG51bWJlciBvZiBTTlQuIEluIG90aGVyIHdvcmRzLCB0aGUgbnVt YmVyIG9mIEROVCBpcyBub3QgbGltaXRlZCAoaXQgaXMgc2FtZSB0aGF0IHRoZSBudW1iZXIgb2Yg TlQgb24gMToxIHRocmVhZHMgYXJlIG5vdCBsaW1pdGVkKS4NDQoNDQojIyMgTWFuYWdlZCBibG9j a2luZyBvcGVyYXRpb25zDQ0KDQ0KTWFuYWdlZCBibG9ja2luZyBvcGVyYXRpb25zIGFyZSBtdWx0 aXBsZXhpbmcgYnkgYHNlbGVjdCgpYC1saWtlIGZ1bmN0aW9ucyBvbiB0aGUgVGltZXIgdGhyZWFk Li4gTm93IG9ubHkgYGVwb2xsKClgIGlzIHN1cHBvcnRlZC4NDQoNDQpJL08gb3BlcmF0aW9uIGZs b3cgKHJlYWQgb24gZmQxKSBvbiBSdWJ5IHRocmVhZCBSVDE6DQ0KDQ0KMS4gY2hlY2sgdGhlIHJl YWR5LW5lc3Mgb2YgZmQxIGJ5IGBwb2xsKHRpbWVvdXQgPSAwKWAsIGdvdG8gc3RlcCA0Lg0NCjIu IHJlZ2lzdGVyIGZkMSB0byBUaW1lciB0aHJlYWQgKFRUKSBlcG9sbCBhbmQgcmVzdW1lIGFub3Ro ZXIgcmVhZHkgUnVieSB0aHJlYWQuDQ0KMy4gSWYgVFQgZGV0ZWN0cyB0aGF0IHRoZSBmZDEgaXMg cmVhZHksIG1ha2UgUlQxIGFzIHJlYWR5IHRocmVhZC4NDQo0LiBXaGVuIFJUMSBpcyByZXN1bWVk LCB0aGVuIGRvIGByZWFkKClgIGJ5IGxvY2tpbmcgY29ycmVzcG9uZGluZyBOVDEuDQ0KDQ0KYHNs ZWVwKG4pYCBvcGVyYXRpb24gZmxvdyBvbiBSdWJ5IHRocmVhZCBSVDE6DQ0KDQ0KMS4gcmVnaXN0 ZXIgdGltZW91dCBvZiBSVDEgdG8gVFQgZXBvbGwuDQ0KMi4gSWYgVFQgZGV0ZWN0cyB0aGUgdGlt ZW91dCBvZiBSVDEgKG4gc2Vjb25kcyksIFRUIG1ha2VzIFJUMSBhcyBhIHJlYWR5IFJ1YnkgdGhy ZWFkLg0NCg0NCiMjIyBJbnRlcm5hbCBkZXNpZ24NDQoNDQoqIDIgbGV2ZWwgc2NoZWR1bGluZw0N CiAgKiBSdWJ5IHRocmVhZHMgb2YgYSBSYWN0b3IgaXMgbWFuYWdlZCBieSBNOjEgdGhyZWFkcw0N CiAgKiBSdWJ5IHRocmVhZHMgb2YgZGlmZmVyZW50IFJhY3RvcnMgYXJlIG1hbmFnZWQgYnkgTTpO IHRocmVhZHMNDQoqIFRpbWVyIHRocmVhZCBoYXMgc2V2ZXJhbCBkdXRpZXMNDQogIDEuIE1vbml0 b3JpbmcgSS9PIChvciBvdGhlciBldmVudCkgcmVhZHktbmVzcw0NCiAgMi4gTW9uaXRvcmluZyB0 aW1lb3V0DQ0KICAzLiBQcm9kdWNlIHRpbWVzbGljZSBzaWduYWxzDQ0KICA0LiBIZWxwIE9TIHNp Z25hbCBkZWxpdmVyaW5nDQ0KDQ0KKE9uIHB0aHJlYWQgZW52aXJvbm1lbnQpIHJlY2VudCBSdWJ5 IGRvZXNuJ3QgbWFrZSB0aW1lciB0aHJlYWQgYnV0IE1hTnkgaW1wbGVtZW50YXRpb24gbWFrZXMg VFQgYW55dGltZS4gaXQgY2FuIGJlIGltcHJvdmVkLg0NCg0NCg0NCiMjIEltcGxlbWVudGF0aW9u DQ0KDQ0KVGhlIGNvZGUgbmFtZSBpcyBNYU55IHByb2plY3QsIGl0IGlzIGZyb20gTU4gdGhyZWFk cy4NDQoNDQpodHRwczovL2dpdGh1Yi5jb20va28xL3J1YnkvdHJlZS9tYW55Mg0NCg0NClRoZSBp bXBsZW1lbnRhdGlvbiBpcyBub3QgbWF0dXJlZCAoZGVidWdnaW5nIG5vdykuDQ0KDQ0KIyMgTWVh c3VyZW1lbnRzDQ0KDQ0KU2VlIFJ1YnlLYWlnaSAyMDIzIHNsaWRlczogaHR0cHM6Ly9hdGRvdC5u ZXQvfmtvMS9hY3Rpdml0aWVzLzIwMjNfcnVieWthaWdpMjAyMy5wZGYNDQoNDQojIyBEaXNjdXNz aW9uDQ0KDQ0KKiBFbmFibGUvZGlzYWJsZQ0NCiAgKiBkZWZhdWx0IGJlaGF2aW9yDQ0KICAqIGhv dyB0byBzd2l0Y2ggdGhlIGJlaGF2aW9yDQ0KKiBTaG91bGQgd2UgbG9jayB0aGUgTlQgZm9yIG1h aW4gdGhyZWFkIGFueXRpbWU/DQ0KKiBSdWJ5L0MgQVBJIHRvIGxvY2sgdGhlIG5hdGl2ZSB0aHJl YWRzDQ0KDQ0KIyMgTWlzYw0NCg0NClRoaXMgZGVzY3JpcHRpb24gd2lsbCBiZSBpbXByb3ZlZCBt b3JlIGxhdGVyLg0NCg0NCg0NCg0NCg0NCi0tIA0NCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3Jn Lw0NCiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiBydWJ5 LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxhbmcub3JnCiBUbyB1bnN1 YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxhbmcub3Jn CiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5vcmcvbWFpbG1hbjMvcG9z dG9yaXVzL2xpc3RzL3J1YnktY29yZS5tbC5ydWJ5LWxhbmcub3JnLw==