[#111712] [Ruby master Feature#19322] Support spawning "private" child processes — "kjtsanaktsidis (KJ Tsanaktsidis) via ruby-core" <ruby-core@...>
SXNzdWUgIzE5MzIyIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGtqdHNhbmFrdHNpZGlzIChLSiBUc2Fu
14 messages
2023/01/07
[ruby-core:111719] [Ruby master Feature#19322] Support spawning "private" child processes
From:
"kjtsanaktsidis (KJ Tsanaktsidis) via ruby-core" <ruby-core@...>
Date:
2023-01-07 09:24:02 UTC
List:
ruby-core #111719
SXNzdWUgIzE5MzIyIGhhcyBiZWVuIHVwZGF0ZWQgYnkga2p0c2FuYWt0c2lkaXMgKEtKIFRzYW5h a3RzaWRpcykuDQ0KDQ0KDQ0KQXBvbG9naWVzIGlmIEkgd2FzbuKAmXQgY2xlYXIsIGJ1dCBJIGRl ZmluaXRlbHkgZG9u4oCZdCBpbnRlbmQgZm9yIHRoZSBwcm9wb3NlZCBpbnRlcmZhY2UgdG8gYmUg cGxhdGZvcm0gc3BlY2lmaWMuIEl0IHdvdWxkIG1ha2UgdXNlIG9mIGNsb25lL3BkZm9yayBpZiB0 aGV5IHdlcmUgYXZhaWxhYmxlLCBidXQgdGhlIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIChlaXRo ZXIgdGhlIOKAnHByb3h5IGV2ZXJ5dGhpbmcgdGhyb3VnaCBhbiBpbnRlcm1lZGlhdGUgc2VydmVy 4oCdIG9uZSBvciB0aGUg4oCcdHJhcCBhbGwgY2FsbHMgdG8gd2FpdHBpZDIgYW5kIGxpZSBhYm91 dCB0aGVt4oCdIG9uZSkgd291bGQgYmUgdXNlZCBlbHNld2hlcmUuDQ0KDQ0KT24gYWxsIHBsYXRm b3JtcyB0aGUgb2JzZXJ2ZWQgYmVoYXZpb3VyIG9mIGBQcm9jZXNzOjpIYW5kbGVgIHNob3VsZCBi ZSB0aGUgc2FtZSBJIHRoaW5rLg0NCg0NCkkgY2FuIHRyeSBhbiBpbXBsZW1lbnRhdGlvbiBpbiBh IGdlbSwgdGhlIGZhbGxiYWNrIHNob3VsZCBiZSBwb3NzaWJsZSBmcm9tIGEgZ2VtIGJ5IG1vbmtl eSBwYXRjaGluZyB0aGUgcmVsZXZhbnQgcHJvY2VzcyBtZXRob2RzIEkgdGhpbmsNDQoNDQotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0KRmVhdHVyZSAjMTkzMjI6IFN1 cHBvcnQgc3Bhd25pbmcgInByaXZhdGUiIGNoaWxkIHByb2Nlc3Nlcw0NCmh0dHBzOi8vYnVncy5y dWJ5LWxhbmcub3JnL2lzc3Vlcy8xOTMyMiNjaGFuZ2UtMTAxMTE3DQ0KDQ0KKiBBdXRob3I6IGtq dHNhbmFrdHNpZGlzIChLSiBUc2FuYWt0c2lkaXMpDQ0KKiBTdGF0dXM6IE9wZW4NDQoqIFByaW9y aXR5OiBOb3JtYWwNDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0K IyMgQmFja2dyb3VuZA0NCg0NClRoZSB0cmFkaXRpb25hbCBVbml4IHByb2Nlc3MgQVBJcyAoYGZv cmtgIGV0YykgYXJlIHBvb3JseSBpc29sYXRlZC4gSWYgYSBsaWJyYXJ5IHNwYXducyBhIGNoaWxk IHByb2Nlc3MsIHRoaXMgaXMgbm90IHRyYW5zcGFyZW50IHRvIHRoZSBwcm9ncmFtIHVzaW5nIHRo ZSBsaWJyYXJ5LiBBbnkgc2lnbmFsIGhhbmRsZXIgZm9yIGBTSUdDSExEYCBpbiB0aGUgcHJvZ3Jh bSB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBzcGF3bmVkIHByb2Nlc3MgZXhpdHMsIGFuZCBldmVu IHdvcnNlLCBpZiB0aGUgcGFyZW50IGNhbGxzIGBQcm9jZXNzLndhaXRwaWQyKC0xKWAsIGl0IHdp bGwgY29uc3VtZSB0aGUgcmV0dXJuZWQgc3RhdHVzIGNvZGUsIHN0ZWFsaW5nIGl0IGZyb20gdGhl IGxpYnJhcnkhDQ0KDQ0KVW5mb3J0dW5hdGVseSwgdGhlIHByYWN0aWNlIG9mIHJlc3BvbmRpbmcg dG8gYFNJR0NITERgIGJ5IGNhbGxpbmcgYHdhaXRwaWQyKC0xKWAgaW4gYSBsb29wIGlzIGEgcHJl dHR5IGNvbW1vbiB1bml4aXNtLiBGb3IgZXhhbXBsZSwgVW5pY29ybiBkb2VzIGl0IFtoZXJlXSho dHRwczovL3loYnQubmV0L3VuaWNvcm4uZ2l0L3RyZWUvbGliL3VuaWNvcm4vaHR0cF9zZXJ2ZXIu cmIjbjQwMSkuIEluIHNob3J0LCB0aGVyZSBpcyBubyByZWxpYWJsZSB3YXkgZm9yIGEgZ2VtIHRv IHNwYXduIGEgY2hpbGQgcHJvY2VzcyBpbiBhIHdheSB0aGF0IGNhbuKAmXQgKHVuaW50ZW50aW9u YWxseSkgYmUgaW50ZXJmZXJlZCB3aXRoIGJ5IG90aGVyIHBhcnRzIG9mIHRoZSBwcm9ncmFtLg0N Cg0NCiMjIEV4aXN0aW5nIHNvbHV0aW9ucyBpbiBPU+KAmXMNDQoNDQpTZXZlcmFsIG9wZXJhdGlu ZyBzeXN0ZW1zIHByb3ZpZGUgYW4gaW1wcm92ZWQgQVBJIGZvciBzcGF3bmluZyBjaGlsZCBwcm9j ZXNzZXMgd2hpY2ggYXJlIGZ1bGx5IGlzb2xhdGVkOyB0aGF0IGlzLCB0aGV5IGRvIG5vdCBnZW5l cmF0ZSBgU0lHQ0hMRGAgc2lnbmFscyBpbiB0aGUgcHJvZ3JhbSwgYW5kIGFyZSBpbnZpc2libGUg dG8gY2FsbHMgdG8gYHdhaXRwaWQoMilgDQ0KDQ0KKiBPbiBMaW51eCwgc3VjaCBpbnZpc2libGUg cHJvY2Vzc2VzIGNhbiBiZSBtYWRlIGJ5IGNhbGxpbmcgYGNsb25lKDIpYCB3aXRoIGEgemVybyB2 YWx1ZSBpbiB0aGUgbG93IGJ5dGUgb2YgYGZsYWdzYC4gSWYgdGhlIENMT05FX1BJREZEIGZsYWcg aXMgYWxzbyBwcm92aWRlZCwgdGhlbiBhIGZpbGUgZGVzY3JpcHRvciByZXByZXNlbnRpbmcgdGhl IHByb2Nlc3MgaXMgYWxzbyByZXR1cm5lZDsgdGhpcyBjYW4gYmUgdXNlZCB0byB3YWl0IGZvciBh bmQgc2lnbmFsIHRoZSBwcm9jZXNzIGluIGEgcmFjZS1mcmVlIHdheS4NDQoqIE9uIEZyZWVCU0Qs IHRoZSBgcGRmb3JrKDIpYCBzeXNjYWxsIG1ha2VzIGEgcHJvY2VzcyB0aGF0IGRvZXMgbm90IHNp Z25hbCBTSUdDSExEIGFuZCBpcyBpZ25vcmVkIGJ5IGB3YWl0cGlkKDIpYCBjYWxscyB0aGF0IGRv IG5vdCBleHBsaWNpdGx5IHNwZWNpZnkgdGhlIHBpZCAoaS5lLiBpdCBpcyBpZ25vcmVkIHdoZW4g LTEgaXMgcGFzc2VkKS4gSXQgYWxzbyByZXR1cm5zIGEgZmlsZSBkZXNjcmlwdG9yIHJlcHJlc2Vu dGluZyB0aGUgcHJvY2Vzcy4NDQoNDQpCb3RoIG9mIHRoZXNlIEFQSXMgY2VudGVyIGFyb3VuZCB0 aGUgaWRlYSBvZiBhIHByb2Nlc3MgZmlsZSBkZXNjcmlwdG9yLiBSYXRoZXIgdGhhbiBtYW5hZ2lu ZyBhIGNoaWxkIHByb2Nlc3MgdXNpbmcgdGhlIG9sZCBwcm9jZXNzLWdsb2JhbCB3YWl0L3NpZ25h bCBtZWNoYW5pc21zLCB0aGV5IHJldHVybiBhIGZpbGUgZGVzY3JpcHRvciByZXByZXNlbnRpbmcg dGhlIHByb2Nlc3MuIFN1Y2ggYSBmaWxlIGRlc2NyaXB0b3IgY2FuIHVuaXF1ZWx5IGlkZW50aWZ5 IHRoZSBzcGF3bmVkIHByb2Nlc3MsIGJlIHVzZWQgdG8gd2FpdCBvbiB0aGUgcHJvY2VzcyBhbmQg Z2V0IHRoZSBzdGF0dXMsIHNlbmQgc2lnbmFscywgYW5kIGV2ZW4gcGFydGljaXBhdGUgaW4gYHBv bGwoMilgLiBUaGV5IGFsc28gcHJvdGVjdCBhZ2FpbnN0IHBpZC1yZXVzZSByYWNlIGNvbmRpdGlv bnM7IGFmdGVyIGEgcHJvY2VzcyBoYXMgdGVybWluYXRlZCBhbmQgYmVlbiByZWFwZWQsIHRoZSBw aWRmZCBiZWNvbWVzIGludmFsaWQsIGFuZCBjYW7igJl0IHJhbmRvbWx5IGJlZ2luIHRvIHJlZmVy IHRvIGEgZGlmZmVyZW50IHByb2Nlc3MuDQ0KDQ0KIyMgUHJvcG9zZWQgUnVieSBBUElzDQ0KDQ0K SSB0aGluayB3ZSBzaG91bGQgbWFrZSBhIG5ldyBBUEkgYFByb2Nlc3Muc3Bhd25faGFuZGxlYCwg d2hpY2ggYWNjZXB0cyBhbGwgdGhlIHNhbWUgcGFyYW1ldGVycyBhcyBgUHJvY2Vzcy5zcGF3bmAu IEhvd2V2ZXIsIGl0IGRvZXMgX25vdF8gcmV0dXJuIGEgcGlkIGxpa2UgYFByb2Nlc3Muc3Bhd25g LCBidXQgcmF0aGVyIGEgbmV3IHR5cGUgYFByb2Nlc3M6OkhhbmRsZWAuDQ0KDQ0KYFByb2Nlc3M6 OkhhbmRsZWAgd291bGQgaWRlbnRpZnkgYSBzaW5nbGUgc3Bhd25lZCBwcm9jZXNzLCB1c2luZyBh IGR1cmFibGUgT1Mtc3VwcGxpZWQgaGFuZGxlIG5vdCBzdWJqZWN0IHRvIHJlLXVzZSByaXNrcyAo ZS5nLiBhIHBpZGZkKS4gSXQgd291bGQgcHJvdmlkZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6DQ0K DQ0KKiBgI3BpZGAgLSBnZXQgdGhlIHBpZCB0aGF0IHRoZSBoYW5kbGUgaXMgZm9yLg0NCiogYCNz ZW5kX3NpZ25hbChzaWduYWwpYCAtIHNlbmQgYSBzaWduYWwgdG8gdGhlIHdyYXBwZWQgcHJvY2Vz cyAod2hlcmUgInNpZ25hbCIgaXMgYSBzeW1ib2wsIHN0cmluZywgb3IgbnVtYmVyIHdpdGggdGhl IHNhbWUgbWVhbmluZyBhcyBpbiBgUHJvY2Vzcy5raWxsYC4NDQoqIGAjd2FpdGAgLSBibG9ja3Mg d2FpdGluZyBmb3IgdGhlIHByb2dyYW0gdG8gZXhpdCwgYW5kIHRoZW4gcmV0dXJucyBhIGBQcm9j ZXNzOjpTdGF0dXNgIG9iamVjdCByZXByZXNlbnRpbmcgZS5nLiB0aGUgZXhpdCBjb2RlLiBMaWtl IGNhbGxpbmcgYHdhaXRwaWRgLg0NCiogYCN3YWl0X25vbmJsb2NrYCAtIFJldHVybnMgYSBgUHJv Y2Vzczo6U3RhdHVzYCBvYmplY3QgZm9yIHRoZSBjaGlsZCBwcm9jZXNzLiBJZiB0aGUgY2hpbGQg aGFzIG5vdCBleGl0ZWQsIGl0IHdpbGwgYmUgYSBzdGF0dXMgb2JqZWN0IGZvciB3aGljaCBgI2V4 aXRlZD9gIGlzIGZhbHNlLiBEb2VzIG5vdCBibG9jay4gTGlrZSBjYWxsaW5nIGB3YWl0cGlkKFdO T0hBTkcpYC4NDQoNDQpGaW5hbGx5LCB0aGUgYE9wZW4zYCBmYW1pbHkgb2YgbWV0aG9kcyB3b3Vs ZCBiZSBleHRlbmRlZCB0byBhY2NlcHQgYGhhbmRsZTpgIGFzIGFuIGFkZGl0aW9uYWwga2V5d29y ZCBhcmd1bWVudC4gV2hlbiBzZXQgdG8gdHJ1ZSwgYFByb2Nlc3Muc3Bhd25faGFuZGxlYCB3aWxs IGJlIHVzZWQgdG8gc3RhcnQgdGhlIGNoaWxkLCBhbmQgYFByb2Nlc3M6OkhhbmRsZWAgb2JqZWN0 cyB3aWxsIGJlIHJldHVybmVkIGluIHBsYWNlIG9mIHBpZHMuDQ0KDQ0KTW9kaWZ5aW5nIGJhY2t0 aWNrcywgYEtlcm5lbCNzeXN0ZW1gIGFuZCBvdGhlciBwcm9jZXNzLWNyZWF0aW5nIG1ldGhvZHMg d2hpY2ggZG9uJ3QgcmV0dXJuIHBpZHMgdG8gdXNlIGBzcGF3bl9oYW5kbGVgIGludGVybmFsbHkg d291bGQgYWxzbyBiZSBwb3NzaWJsZSwgYnV0IG91dCBvZiBzY29wZSBmb3IgYW4gaW5pdGlhbCBp bXBsZW1lbnRhdGlvbiBvZiB0aGlzIHRpY2tldC4NDQoNDQojIyBPUyBjb21wYXRpYmlsaXR5DQ0K DQ0KRm9yIHRoaXMgQVBJIHRvIGJlIHVzZWZ1bCB0byBnZW0gYXV0aG9ycywgaXQgaGFzIHRvIGJl IHdpZGVseSBhdmFpbGFibGUgb24gdGhlIHN5c3RlbXMgdGhhdCB0aGV5IGFuZCB0aGVpciB1c2Vy cyBjYXJlIGFib3V0LiBBcyBkaXNjdXNzZWQsIHRoZSBgY2xvbmUoMilgIHN5c2NhbGwgYW5kIGBD TE9ORV9QSURGRGAgZmxhZyBjYW4gYmUgdXNlZCBvbiBMaW51eCA1LjIrIHRvIGltcGxlbWVudCBg UHJvY2Vzczo6SGFuZGxlYC4gRnJlZUJTRCBoYXMgYHBkZm9yaygyKWAgc2luY2UgdjkuDQ0KDQ0K SSBoYXZlbuKAmXQgaW52ZXN0aWdhdGVkIFdpbmRvd3MgX2RlZXBseV8sIGJ1dCBJIHRoaW5rIFdp bmRvd3MgZG9lc27igJl0IHJlYWxseSBoYXZlIHRoZSBub3Rpb24gb2YgcHJvY2Vzcy1nbG9iYWwg YHdhaXRwaWRgIG9yIGBTSUdDSExEYCBhbnl3YXkuIFRoZSBgQ3JlYXRlUHJvY2Vzc2AgZnVuY3Rp b24gcmV0dXJucyBhIGBQUk9DRVNTX0lORk9STUFUSU9OYCBzdHJ1Y3QsIHdoaWNoIHJldHVybnMg YSBgSEFORExFYCBmb3IgdGhlIGNoaWxkIHByb2Nlc3MsIHdoaWNoIHNlZW1zIGFuYWxvZ291cyB0 byBhIHByb2Nlc3MgRkQuDQ0KDQ0KSG93ZXZlciB0aGlzIGRvZXMgbGVhdmUgYSBsYXJnZSBjaHVu ayBvZiBvcGVyYXRpbmcgc3lzdGVtcyB3aGljaCBkb27igJl0IGhhdmUgdGhpcyBmdW5jdGlvbmFs aXR5IGJ1aWx0LWluLiBPZmYgdGhlIHRvcCBvZiBteSBoZWFkOg0NCg0NCiogTWFjT1MsIE5ldEJT RCwgYW5kIE9wZW5CU0QgaGF2ZSBub3RoaW5nLiBJIHN0YXJlZCBwcmV0dHkgaGFyZCBhdCB0aGUg RGFyd2luIFhOVSBzb3VyY2UgYW5kIGNvdWxkbuKAmXQgZmluZCBhIHJhY2UtZnJlZSB3YXkgdG8g Y29udmluY2UgaXQgbm90IHRvIGRpc3BhdGNoIGBTSUdDSExEYCBmb3IgYSBwYXJ0aWN1bGFyIHBy b2Nlc3Mgb3Igc3RvcCBpdCBmcm9tIGJlaW5nIHJlYXBlZCBieSBwcm9jZXNzLXdpZGUgYHdhaXQ0 YCBjYWxscy4NDQoqIExpbnV4IDwgNS4yIGlzIGluIHNvbWUgcHJvYmFibHktcHJldHR5LXdpZGVs eS1kZXBsb3llZC1zdGlsbCBkaXN0cm9zIC0gaXTigJlzIHRoZSByZWxlYXNlIGtlcm5lbCBpbiBV YnVudHUgMTguMDQgZm9yIGV4YW1wbGUuDQ0KDQ0KSSBoYXZlIHR3byBpZGVhcyBmb3IgaG93IHRo ZSBzZW1hbnRpY3Mgb2YgYFByb2Nlc3M6OkhhbmRsZWAgY291bGQgYmUgZW11bGF0ZWQgb24gc3Vj aCBzeXN0ZW1zLiBIb3dldmVyIEkgcmVjb2duaXNlIHRoYXQgdGhleSBhcmVu4oCZdCBhbWF6aW5n IHNvIGlmIGFueWJvZHkgaGFzIHNvbWUgYmV0dGVyIGlkZWFzIEkgd291bGQgZGVhcmx5IGxvdmUg dG8gaGVhciB0aGVtLg0NCg0NCiMjIyBMb25nLWxpdmVkIHByb3h5DQ0KDQ0KVGhlIGZpcnN0IHRp bWUgYFByb2Nlc3Muc3Bhd25faGFuZGxlYCBpcyB1c2VkLCB3ZSB3b3VsZCBmb3JrL2V4ZWMgYSBs b25nLWxpdmVkIOKAnGZvcmstaGVscGVy4oCdIHByb2dyYW0uIFRoaXMgY291bGQgYmUgYSBzZXBh cmF0ZSBoZWxwZXIgYmluYXJ5IHdlIGNvbXBpbGUgd2l0aCB0aGUgYnVpbGQgc3lzdGVtLCBvciBw ZXJoYXBzIGp1c3QgYSByZS1pbnZvY2F0aW9uIG9mIHRoZSBydWJ5IGludGVycHJldGVyIHdpdGgg c29tZXRoaW5nIGxpa2UgYHJ1YnkgLWUg4oCcUHJvY2Vzcy5fZm9ya19oZWxwZXLigJ1gLiBUaGVy ZSB3b3VsZCBiZSBhIHVuaXggc29ja2V0cGFpciBzaGFyZWQgYmV0d2VlbiB0aGUgcGFyZW50IHBy b2Nlc3MgJiB0aGUgaGVscGVyLg0NCg0NCkluc3RlYWQgb2YgYWN0dWFsbHkgZm9ya2luZyB3aGVu IHdl4oCZcmUgY2FsbGluZyBgUHJvY2Vzcy5zcGF3bl9oYW5kbGVgLCB3ZSB3b3VsZCBpbnN0ZWFk IHNlbmQgYSBtZXNzYWdlIG9uIHRoaXMgc29ja2V0IGFza2luZyB0aGUgaGVscGVyIHRvLCBfaXRz ZWxmXywgZm9yayAmIGV4ZWMgdGhlIHNwZWNpZmllZCBwcm9ncmFtLiBBbnkgZmlsZSBkZXNjcmlw dG9ycyBldGMgbmVlZGVkIGluIHRoZSBjaGlsZCBjb3VsZCBhbHNvIGJlIHNlbnQgb3ZlciB0aGlz IHNvY2tldC4gQWxsIG9mIHRoZSBgUHJvY2Vzczo6SGFuZGxlYCBtZXRob2RzIHdvdWxkIGJlIHBy b3hpZXMgd2hpY2ggY2FsbGVkIHRocm91Z2ggdG8gdGhlIGhlbHBlciBiaW5hcnkuDQ0KDQ0KVGhp cyB3YXksIHRoZSBydWJ5IHByb2Nlc3MgaXMgbmV2ZXIgYWN0dWFsbHkgdGhlIHBhcmVudCBvZiB0 aGUgc3Bhd25lZCBjaGlsZCwgc28gd2Ugd291bGQgbmV2ZXIgZ2V0IGFueSBTSUdDSExEIGV0YyBm cm9tIGl0LiBUaGUgZm9yay1oZWxwZXIgcHJvZ3JhbSBtaWdodCBnZW5lcmF0ZSBhIFNJR0NITEQs IGJ1dCBpdCBzaG91bGQgcGVyc2lzdCB1bnRpbCB0aGUgcnVieSBwcm9jZXNzIGV4aXRzOyB3ZSB3 b3VsZCBvbmx5IGdlbmVyYXRlIGEgU0lHQ0hMRCBzaWduYWwgaWYgaXQgY3Jhc2hlZCBhYm5vcm1h bGx5Lg0NCg0NCiMjIyBGb3J3YXJkIG1pc2RpcmVjdGVkIHdhaXRzDQ0KDQ0KV2l0aCB0aGlzIGFw cHJvYWNoLCBgUHJvY2Vzcy5zcGF3bl9oYW5kbGVgIHdvdWxkIGp1c3QgYGZvcmsoMilgL2BleGVj KDIpYCBvciBgcG9zaXhfc3Bhd24oMilgIHByb2Nlc3NlcyBsaWtlIG5vcm1hbC4gV2Ugd291bGQg aG93ZXZlciBrZWVwIGEgdGFibGUgb2YgcGlkcyAtPiBgUHJvY2Vzczo6SGFuZGxlYCBpbnN0YW5j ZXMuDQ0KDQ0KV2hlbiBSdWJ54oCZcyBDLWxldmVsIFNJR0NITEQgaGFuZGxlciBpcyBpbnZva2Vk LCB3ZSB3b3VsZCBpbnNwZWN0IHRoYXQgdGFibGUgYW5kIHNlZSBpZiB0aGUgcGlkIGhhcyBhbiBh c3NvY2lhdGVkIGBQcm9jZXNzOjpIYW5kbGVgLiBJZiBzbywgd2Ugd291bGQgc2tpcCBjYWxsaW5n IGFueSByZWdpc3RlcmVkIFJ1YnkgU0lHQ0hMRCBoYW5kbGVyOyBpbnN0ZWFkLCB3ZSB3b3VsZCBj YWxsIGB3YWl0cGlkYCBvdXJzZWx2ZXMsIHVwZGF0ZSB0aGUgc3RhdHVzIGluZm8gb24gdGhlIGhh bmRsZSBvYmplY3QsIGFuZCB1bmJsb2NrIGFueWJvZHkgd2FpdGluZyBvbiBgUHJvY2Vzczo6SGFu ZGxlI3dhaXRgLg0NCg0NCkxpa2V3aXNlLCBpbiB0aGUgQy1zaWRlIGltcGxlbWVudGF0aW9uIG9m IGBQcm9jZXNzLndhaXRwaWQyYCBldGMsIHdlIHdvdWxkIGNoZWNrIHRoZSByZXR1cm5lZCBwaWQg ZnJvbSB0aGUgc3lzY2FsbCBhZ2FpbnN0IHRoZSBoYW5kbGUgdGFibGUuIElmIGl0IG1hdGNoZWQs IHdlIHdvdWxkIHBlcmZvcm0gdGhlIHNhbWUgd29yayBhcyBpbiB0aGUgU0lHQ0hMRCBjYXNlLCBh bmQgdGhlbiByZS1zdGFydCB0aGUgb3JpZ2luYWwgY2FsbCB0byBgUHJvY2Vzcy53YWl0cGlkMmAu DQ0KDQ0KVGhpcyBhcHByb2FjaCBrZWVwcyB0aGUgcHJvY2VzcyB0cmVlIGNvcnJlY3QgYW5kIGlu dm9sdmVzIGxlc3Mgc2lsbHkgcHJveHlpbmcsIGJ1dCBpdCB3b27igJl0IGhpZGUgdGhlIHByb2Nl c3MgZnJvbSBhbnkgY2FsbGVycyB0byB0aGUgcmF3IGB3YWl0cGlkYCBsaWJyYXJ5IGZ1bmN0aW9u cyBpbiBDIGV4dGVuc2lvbnMuIERvaW5nIHRoYXQgc2VlbXMgbGlrZSBhIHNpbGx5IGlkZWEgYW55 d2F5IHRob3VnaCwgc28gbWF5YmUgdGhhdOKAmXMgT0s/DQ0KDQ0KIyMgTW90aXZhdGlvbg0NCg0N Ck15IHVzZS1jYXNlIGZvciB0aGlzIGlzIHRoYXQgSeKAmW0gd29ya2luZyBvbiBhIHBlcmYtYmFz ZWQgcHJvZmlsaW5nIHRvb2wgZm9yIFJ1YnkuIFRvIGdldCBhcm91bmQgc29tZSBMaW51eCBjYXBh YmlsaXR5IGlzc3VlcywgSSB3YW50IG15IHByb2ZpbGVyIGdlbSAob3IgQ1J1YnkgcGF0Y2gsIHdo YXRldmVyIGl0IHdpbmRzIHVwIGJlaW5nISkgdG8gZm9yayBhIHByaXZpbGVnZWQgaGVscGVyIGJp bmFyeSB0byBkbyBzb21lIGVCUEYgdHdpZGRsaW5nLiBCdXQsIGlmIHlvdeKAmXJlIHByb2ZpbGlu ZyBlLmcuIGEgVW5pY29ybiBtYXN0ZXIgcHJvY2VzcywgdGhlIHJlc3VsdCBvZiB0aGF0IGJpbmFy eSBleGl0aW5nIG1pZ2h0IGJlIGNhdWdodCBieSBVbmljb3JuIGl0c2VsZiwgcmF0aGVyIHRoYW4g bXkgKGdlbSB8IGludGVycHJldGVyIGZlYXR1cmUpLg0NCg0NCkluIG15IGNhc2UsIEknbSBzbyBk ZWVwIGluIGxpbnV4IHNwZWNpZmljIHN0dWZmIHRoYXQganVzdCBjYWxsaW5nIGBjbG9uZSgyKWAg ZnJvbSBteSBleHRlbnNpb24gaXMgcHJvYmFibHkgZmluZSwgYnV0IEkgaGFkIGVub3VnaCBvZiBh IGxvb2sgYXQgdGhpcyBwcm9jZXNzIG1hbmFnZW1lbnQgc3R1ZmYgSSB0aG91Z2h0IGl0IHdvdWxk IGJlIHdvcnRoIGFza2luZyB0aGUgcXVlc3Rpb24gaWYgdGhpcyBtaWdodCBiZSB1c2VmdWwgdG8g b3RoZXIsIG1vcmUgbm9ybWFsLCBnZW1zLg0NCg0NCg0NCg0NCg0NCi0tIA0NCmh0dHBzOi8vYnVn cy5ydWJ5LWxhbmcub3JnLw0NCiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxh bmcub3JnCiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBt bC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5v cmcvbWFpbG1hbjMvcG9zdG9yaXVzL2xpc3RzL3J1YnktY29yZS5tbC5ydWJ5LWxhbmcub3JnLw==