[#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:111892] [Ruby master Feature#19322] Support spawning "private" child processes
From:
"kjtsanaktsidis (KJ Tsanaktsidis) via ruby-core" <ruby-core@...>
Date:
2023-01-19 01:08:51 UTC
List:
ruby-core #111892
SXNzdWUgIzE5MzIyIGhhcyBiZWVuIHVwZGF0ZWQgYnkga2p0c2FuYWt0c2lkaXMgKEtKIFRzYW5h a3RzaWRpcykuDQ0KDQ0KDQ0KSGV5IEBub2J1LCBAZXJlZ29uIC0gYW55IGZ1cnRoZXIgdGhvdWdo dHMgb24gdGhpcz8NDQoNDQpAbm9idSAtIEkgY2hhbmdlZCB0aGUgcHJvcG9zYWwgbm90IHRvIGRl cGVuZCBvbiBhbnkgbmV3IHBsYXRmb3JtLXNwZWNpZmljIHByb2Nlc3MgbWFuYWdlbWVudCBBUElz LCBidXQgaW5zdGVhZCB0byBsZXZlcmFnZSB0aGUgZXhpc3RpbmcgY29kZSBmb3IgbWFuYWdpbmcg cHJvY2VzcyB3YWl0cyBpbiBgcHJvY2Vzcy5jYC4gSG93ZXZlciwgSSBkb24ndCB0aGluayBteSBp ZGVhIGNhbiBiZSBhIGdlbSwgYmVjYXVzZSBpdCBuZWVkcyB0byB0aWdodGx5IGludGVncmF0ZSB3 aXRoIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgUHJvY2Vzcy53YWl0cGlkYCB0byBtYWtlIHN1cmUg Y2FsbHMgdG8gYFByb2Nlc3Mud2FpdHBpZCAtMWAgZG9uJ3Qgc3RlYWwgdGhlIGV4aXQgc3RhdHVz IG9mIHNwYXduZWQgcHJvZ3JhbXMuDQ0KDQ0KQGVyZWdvbiAtIEkgcmVhbGlzZSB0aGF0IGhhdmlu ZyBgUHJvY2Vzcy5zcGF3bl9wcml2YXRlYCB3b3JrIGluIG90aGVyIFJ1YnkgaW1wbGVtZW50YXRp b25zIHJlcXVpcmVzIHRoYXQgdGhleSBrZWVwIHRyYWNrIG9mIGFsbCAocnVieS1zcGF3bmVkKSBj aGlsZCBwcm9jZXNzZXMgYW5kIGRlbGl2ZXIgdGhlIHJpZ2h0IGV4aXQgc3RhdHVzZXMgdG8gdGhl IHJpZ2h0IHdhaXRlcnMuIEhvd2V2ZXIsIEkgdGhpbmsgaWYgdGhleSB3YW50IENydWJ5IGNvbXBh dGlibGUgaGFuZGxpbmcgb2YgaG93IGB3YWl0cGlkIC0xYCBhbmQgYFByb2Nlc3Muc3lzdGVtYCBp bnRlcmFjdCB0b2RheSwgdGhleSBhbHJlYWR5IG5lZWQgdG8gYmUgZG9pbmcgdGhpcyB0cmFja2lu Zy4gSXMgQ3J1YnktY29tcGF0aWJsZSBoYW5kbGluZyBvZiBgd2FpdHBpZCAtMWAgYWN0dWFsbHkg YSBnb2FsIG9mIFRydWZmbGVydWJ5PyBJZiBzbywgSSdtIGhhcHB5IHRvIHRyeSBhbmQgY29udHJp YnV0ZSBhIHBhdGNoIGZvciBUcnVmZmxlcnVieSB0byBpbXBsZW1lbnQgdGhpcyBgcHJpdmF0ZV9z cGF3bmAgc3R1ZmYgdGhlcmUgYXMgd2VsbCAoYWx0aG91Z2ggSSBoYXZlIHplcm8gZXhwZXJpZW5j ZSB3aXRoIFRydWZmbGVydWJ5ISkNDQoNDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQ0KRmVhdHVyZSAjMTkzMjI6IFN1cHBvcnQgc3Bhd25pbmcgInByaXZhdGUiIGNo aWxkIHByb2Nlc3Nlcw0NCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xOTMyMiNj aGFuZ2UtMTAxMzA4DQ0KDQ0KKiBBdXRob3I6IGtqdHNhbmFrdHNpZGlzIChLSiBUc2FuYWt0c2lk aXMpDQ0KKiBTdGF0dXM6IE9wZW4NDQoqIFByaW9yaXR5OiBOb3JtYWwNDQotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0KIyMgQmFja2dyb3VuZA0NCg0NClRoZSB0cmFk aXRpb25hbCBVbml4IHByb2Nlc3MgQVBJcyAoYGZvcmtgIGV0YykgYXJlIHBvb3JseSBpc29sYXRl ZC4gSWYgYSBsaWJyYXJ5IHNwYXducyBhIGNoaWxkIHByb2Nlc3MsIHRoaXMgaXMgbm90IHRyYW5z cGFyZW50IHRvIHRoZSBwcm9ncmFtIHVzaW5nIHRoZSBsaWJyYXJ5LiBBbnkgc2lnbmFsIGhhbmRs ZXIgZm9yIGBTSUdDSExEYCBpbiB0aGUgcHJvZ3JhbSB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBz cGF3bmVkIHByb2Nlc3MgZXhpdHMsIGFuZCBldmVuIHdvcnNlLCBpZiB0aGUgcGFyZW50IGNhbGxz IGBQcm9jZXNzLndhaXRwaWQyKC0xKWAsIGl0IHdpbGwgY29uc3VtZSB0aGUgcmV0dXJuZWQgc3Rh dHVzIGNvZGUsIHN0ZWFsaW5nIGl0IGZyb20gdGhlIGxpYnJhcnkhDQ0KDQ0KVW5mb3J0dW5hdGVs eSwgdGhlIHByYWN0aWNlIG9mIHJlc3BvbmRpbmcgdG8gYFNJR0NITERgIGJ5IGNhbGxpbmcgYHdh aXRwaWQyKC0xKWAgaW4gYSBsb29wIGlzIGEgcHJldHR5IGNvbW1vbiB1bml4aXNtLiBGb3IgZXhh bXBsZSwgVW5pY29ybiBkb2VzIGl0IFtoZXJlXShodHRwczovL3loYnQubmV0L3VuaWNvcm4uZ2l0 L3RyZWUvbGliL3VuaWNvcm4vaHR0cF9zZXJ2ZXIucmIjbjQwMSkuIEluIHNob3J0LCB0aGVyZSBp cyBubyByZWxpYWJsZSB3YXkgZm9yIGEgZ2VtIHRvIHNwYXduIGEgY2hpbGQgcHJvY2VzcyBpbiBh IHdheSB0aGF0IGNhbuKAmXQgKHVuaW50ZW50aW9uYWxseSkgYmUgaW50ZXJmZXJlZCB3aXRoIGJ5 IG90aGVyIHBhcnRzIG9mIHRoZSBwcm9ncmFtLg0NCg0NCiMjIFByb2JsZW0gc3RhdGVtZW50DQ0K DQ0KQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBwcm9ncmFtLg0NCg0NCmBgYHJ1YnkNDQojIEltYWdp bmUgdGhpcyBwYXJ0IG9mIHRoZSBwcm9ncmFtIGlzIGluIHNvbWUgdG9wLWxldmVsIGFwcGxpY2F0 aW9uIGV2ZW50IGxvb3ANDQojIG9yIHNvbWV0aGluZyAtIHNpbWlsYXIgdG8gaG93IFVuaWNvcm4g d29ya3MuIEl0IGRldGVjdHMgY2hpbGQgcHJvY2Vzc2VzIGV4aXRpbmcNDQojIGFuZCB0YWtlcyBz b21lIGFjdGlvbiAocG9zc2libHkgcmVzdGFydGluZyBhIGNyYXNoZWQgd29ya2VyLCBmb3IgZXhh bXBsZSkuDQ0KU2lnbmFsLnRyYXAoOkNITEQpIGRvDQ0KICBsb29wIGRvDQ0KICAgIGJlZ2luDQ0K ICAgICAgcGlkLCBzdGF0dXMgPSBQcm9jZXNzLndhaXRwaWQyIC0xDQ0KICAgICAgcHV0cyAiU2ln bmFsIGhhbmRsZXIgcmVhcGVkICN7cGlkfSAje3N0YXR1cy5pbnNwZWN0fSINDQogICAgcmVzY3Vl IEVycm5vOjpFQ0hJTEQNDQogICAgICBwdXRzICJTaWduYWwgaGFuZGxlciByZWFwZWQgbm90aGlu ZyINDQogICAgICBicmVhaw0NCiAgICBlbmQNDQogIGVuZA0NCmVuZA0NCg0NCiMgSW1hZ2luZSB0 aGF0IF90aGlzXyBwYXJ0IG9mIHRoZSBwcm9ncmFtIGlzIGJ1cmllZCBkZWVwIGluIHNvbWUgZ2Vt LiBJdCBrbm93cw0NCiMgbm90aGluZyBhYm91dCB0aGUgYXBwbGljYXRpb24gU0lHQ0hMRCBoYW5k bGluZywgYW5kIHF1aXRlIHBvc3NpYmx5IHRoZSBhcHBsaWNhdGlvbg0NCiMgYXV0aG9yIG1pZ2h0 IG5vdCBldmVuIGtub3cgdGhpcyBnZW0gc3Bhd25zIGEgY2hpbGQgcHJvY2VzcyB0byBkbyBpdHMg d29yayENDQpyZXF1aXJlICdvcGVuMycNDQpsb29wIGRvDQ0KICBvLCBzdGF0dXMgPSBPcGVuMy5j YXB0dXJlMigiL2Jpbi9zaCIsICItYyIsICJlY2hvICdoZWxsbyciKQ0NCiAgcHV0cyAicmFuIGNv bW1hbmQsIGdvdCAje28uY2hvbXB9ICN7c3RhdHVzLmluc3BlY3R9Ig0NCmVuZA0NCmBgYA0NCg0N CkluIGN1cnJlbnQgdmVyc2lvbnMgb2YgUnVieSwgX3NvbWVfIGxvb3AgaXRlcmF0aW9ucyB3aWxs IGZ1bmN0aW9uIGNvcnJlY3RseSwgYW5kIHByaW50IHNvbWV0aGluZyBsaWtlIHRoaXMuIFRoZSBn ZW0gZ2V0cyB0aGUgYFByb2Nlc3M6OlN0YXR1c2Agb2JqZWN0IGZyb20gaXRzIGNvbW1hbmQgYW5k IGNhbiBrbm93IGlmIGUuZy4gaXQgZXhpdGVkIGFibm9ybWFsbHkuDQ0KDQ0KYGBgDQ0KcmFuIGNv bW1hbmQsIGdvdCBvaGFpdGhhciAjPFByb2Nlc3M6OlN0YXR1czogcGlkIDExNTM2ODcgZXhpdCAw Pg0NClNpZ25hbCBoYW5kbGVyIHJlYXBlZCBub3RoaW5nDQ0KYGBgDQ0KDQ0KSG93ZXZlciwgb3Ro ZXIgaXRlcmF0aW9ucyBvZiB0aGUgbG9vcCBwcmludCB0aGlzLiBUaGUgc2lnbmFsIGhhbmRsZXIg cnVucyBhbmQgY2FsbHMgYFByb2Nlc3Mud2FpdHBpZDIoLTEpYCBiZWZvcmUgdGhlIGNvZGUgaW4g b3BlbjMgY2FuIGRvIHNvLiBUaGVuLCB0aGUgZ2VtIGNvZGUgZG9lcyBub3QgZ2V0IGEgYFByb2Nl c3M6OlN0YXR1c2Agb2JqZWN0ISBUaGlzIGlzIGFsc28gcG90ZW50aWFsbHkgYmFkIGZvciB0aGUg YXBwbGljYXRpb247IGl0IHJlYXBlZCBhIGNoaWxkIHByb2Nlc3MgaXQgZGlkbid0IGV2ZW4ga25v dyBleGlzdGVkLCBhbmQgaXQgbWlnaHQgY2F1c2Ugc29tZSBzdXJwcmlzaW5nIGJ1Z3MgaWYgdGhl IGFwcGxpY2F0aW9uIGF1dGhvciBkaWRuJ3Qga25vdyB0aGlzIHdhcyBhIHBvc3NpYmlsaXR5Lg0N Cg0NCmBgYA0NClNpZ25hbCBoYW5kbGVyIHJlYXBlZCAxMTUzNTk2ICM8UHJvY2Vzczo6U3RhdHVz OiBwaWQgMTE1MzU5NiBleGl0IDA+DQ0KU2lnbmFsIGhhbmRsZXIgcmVhcGVkIG5vdGhpbmcNDQpy YW4gY29tbWFuZCwgZ290IG9oYWl0aGFyIG5pbA0NCmBgYA0NCg0NCldlIHdvdWxkIGxpa2UgYSBm YW1pbHkgb2YgQVBJcyB3aGljaCBhbGxvdyBhIGdlbSB0byBzcGF3biBhIGNoaWxkIHByb2Nlc3Mg YW5kIGd1YXJhbnRlZXMgdGhhdCB0aGUgZ2VtIGNhbiB3YWl0IG9uIGl0LiBTb21lIGNvbmN1cnJl bnQgY2FsbCB0byBgUHJvY2Vzcy53YWl0cGlkMigtMSlgIChvciBldmVuIGBQcm9jZXNzLndhaXRw aWQyKCRzb21lX2x1Y2t5X2d1ZXNzX2Zvcl90aGVfcGlkKWApIHNob3VsZCBub3Qgc3RlYWwgdGhl IHN0YXR1cyBvdXQgZnJvbSB1bmRlcm5lYXRoIHRoZSBjb2RlIHdoaWNoIGNyZWF0ZWQgdGhlIHBy b2Nlc3MuIElkZWFsbHksIHdlIHNob3VsZCBldmVuIHN1cHByZXNzIHRoZSBgU0lHQ0hMRGAgc2ln bmFsIHRvIGF2b2lkIHRoZSBhcHBsaWNhdGlvbiBzaWduYWwgaGFuZGxlciBuZWVkbGVzc2x5IHdh a2luZyB1cC4NDQoNDQoNDQojIyBQcm9wb3NlZCBSdWJ5LWxldmVsIEFQSXMuDQ0KDQ0KSSBwcm9w b3NlIHdlIGNyZWF0ZSB0aGUgZm9sbG93aW5nIG5ldyBtZXRob2RzIGluIFJ1YnkuDQ0KDQ0KKiBg UHJvY2Vzcy5zcGF3bl9wcml2YXRlYA0NCiogYFByb2Nlc3MuZm9ya19wcml2YXRlYA0NCg0NClRo ZXNlIG1ldGhvZHMgYmVoYXZlIGlkZW50aWNhbGx5IHRvIHRoZWlyIG5vbi1fcHJpdmF0ZSB2ZXJz aW9ucyBpbiBhbGwgcmVzcGVjdCwgZXhjZXB0IGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgcGlkLCB0 aGV5IHJldHVybiBhbiBvYmplY3Qgb2YgdHlwZSBgUHJvY2Vzczo6UHJpdmF0ZUhhbmRsZWAuDQ0K DQ0KYFByb2Nlc3M6OlByaXZhdGVIYW5kbGVgIHdvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRo b2RzOg0NCg0NCiogYHBpZCgpYCAtIHJldHVybnMgdGhlIHBpZCBmb3IgdGhlIGNyZWF0ZWQgcHJv Y2Vzcw0NCiogYHdhaXQoKWAgLSBibG9ja3MgdGhlIGNhbGxlciB1bnRpbCB0aGUgY3JlYXRlZCBw cm9jZXNzIGhhcyBleGl0ZWQsIGFuZCByZXR1cm5zIGEgYFByb2Nlc3M6OlN0YXR1c2Agb2JqZWN0 LiBJZiB0aGUgaGFuZGxlIGhhcyBfYWxyZWFkeV8gaGFkIGAjd2FpdGAgY2FsbGVkIG9uIGl0LCBp dCByZXR1cm5zIHRoZSBzYW1lIGBQcm9jZXNzOjpTdGF0dXNgIG9iamVjdCBhcyB3YXMgcmV0dXJu ZWQgdGhlbiBpbW1lZGlhdGVseS4gVGhpcyBpcyB1bmxpa2UgYFByb2Nlc3Mud2FpdHBpZGAgYW5k IGZyaWVuZHMsIHdoaWNoIHdvdWxkIHJhaXNlIGFuIEVDSElMRCBpbiB0aGlzIGNhc2UgKG9yLCBp biB0aGUgZmFjZSBvZiBwaWQgd3JhcGFyb3VuZCwgcG90ZW50aWFsbHkgd2FpdCBvbiBzb21lIG90 aGVyIHRvdGFsbHkgdW5yZWxhdGVkIGNoaWxkIHByb2Nlc3Mgd2l0aCB0aGUgc2FtZSBwaWQpLg0N CiogYHdhaXRfbm9uYmxvY2soKWAgLSBpZiB0aGUgY3JlYXRlZCBwcm9jZXNzIGhhcyBleGl0ZWQs IGJlaGF2ZXMgbGlrZSBgI3dhaXRgOyBvdGhlcndpc2UsIGl0IHJldHVybnMgYSBgUHJvY2Vzczo6 U3RhdHVzYCBvYmplY3QgZm9yIHdoaWNoIGAjZXhpdGVkP2AgcmV0dXJucyBmYWxzZS4NDQoqIGBr aWxsKC4uLilgIC0gaWYgdGhlIGNyZWF0ZWQgcHJvY2VzcyBoYXMgbm90IGJlZW4gcmVhcGVkIHZp YSBhIGNhbGwgdG8gYCN3YWl0YCwgcGVyZm9ybXMgaWRlbnRpY2FsbHkgdG8gYFByb2Nlc3Mua2ls bCAuLi4sIHBpZGAuIE90aGVyd2lzZSwgaWYgdGhlIHByb2Nlc3MgX2hhc18gYmVlbiByZWFwZWQs IHJhaXNlcyBgRXJybm86OkVTUkNIYCBpbW1lZGlhdGVseSB3aXRob3V0IGlzc3VpbmcgYSBzeXN0 ZW0gY2FsbC4gVGhpcyBlbnN1cmVzIHRoYXQsIGlmIHBpZHMgd3JhcCBhcm91bmQsIHRoYXQgdGhl IHdyb25nIHByb2Nlc3MgaXMgbm90IHNpZ25hbGVkIGJ5IG1pc3Rha2UuDQ0KDQ0KQSBjYWxsIHRv IGBQcm9jZXNzLndhaXRgLCBgUHJvY2Vzcy53YWl0cGlkYCwgb3IgYFByb2Nlc3Mud2FpdHBpZDJg IHdpbGwgX25ldmVyXyByZXR1cm4gYSBgUHJvY2Vzczo6U3RhdHVzYCBmb3IgYSBwcm9jZXNzIHN0 YXJ0ZWQgd2l0aCBhIGBfcHJpdmF0ZWAgbWV0aG9kLCBldmVuIGlmIHRoYXQgY2FsbCBpcyBtYWRl IHdpdGggdGhlIHBpZCBvZiB0aGUgY2hpbGQgcHJvY2Vzcy4gVGhlIF9vbmx5XyB3YXkgdG8gcmVh cCBhIHByaXZhdGUgY2hpbGQgcHJvY2VzcyBpcyB0aHJvdWdoIGBQcm9jZXNzOjpQcml2YXRlSGFu ZGxlYC4NDQoNDQpUaGUgaW1wbGVtZW50YXRpb24gb2YgYElPLnBvcGVuYCwgYEtlcm5lbCNzeXN0 ZW1gLCBgS2VybmVsI3BvcGVuYCwgYmFja3RpY2tzLCBhbmQgdGhlIGBPcGVuM2AgbW9kdWxlIHdv dWxkIGJlIGNoYW5nZWQgdG8gdXNlIHRoaXMgcHJpdmF0ZSBwcm9jZXNzIG1lY2hhbmlzbSBpbnRl cm5hbGx5LCBhbHRob3VnaCB0aGV5IGRvIG5vdCByZXR1cm4gcGlkcyBzbyB0aGV5IGRvIG5vdCBu ZWVkIHRvIGhhdmUgdGhlaXIgaW50ZXJmYWNlcyBjaGFuZ2VkLiAobm90ZSB0aG91Z2ggLSBJIGRv bid0IGJlbGlldmUgYEtlcm5lbCNzeXN0ZW1gIHN1ZmZlcnMgZnJvbSB0aGUgc2FtZSBwcm9ibGVt IGFzIHRoZSBgb3BlbjNgIGV4YW1wbGUgYWJvdmUsIGJlY2F1c2UgaXQgZG9lcyBub3QgeWllbGQg dGhlIEdWTCBub3IgY2hlY2sgaW50ZXJydXB0cyBpbiBiZXR3ZWVuIHNwYXduaW5nIHRoZSBjaGls ZCBhbmQgd2FpdGluZyBvbiBpdCkNDQoNDQojIyBJbXBsZW1lbnRhdGlvbiBzdHJhdGVneQ0NCg0N CkkgYmVsaWV2ZSB0aGlzIGNhbiBiZSBpbXBsZW1lbnRlZCwgaW4gYnJvYWQgc3Ryb2tlcywgd2l0 aCBhbiBhcHByb2FjaCBsaWtlIHRoaXM6DQ0KDQ0KKiBLZWVwIGEgZ2xvYmFsIHRhYmxlIG1hcHBp bmcgcGlkcyAtPiBoYW5kbGVzIGZvciBwcm9jZXNzZXMgY3JlYXRlZCB3aXRoIGBmb3JrX3ByaXZh dGVgIG9yIGBzcGF3bl9wcml2YXRlYC4NDQoqIFdoZW4gYSBjaGlsZCBwcm9jZXNzIGlzIHdhaXRl ZCBvbiwgY29uc3VsdCB0aGUgaGFuZGxlIHRhYmxlLiBJZiB0aGVyZSBpcyBhIGhhbmRsZSByZWdp c3RlcmVkLCBhbmQgdGhlIHdhaXQgY2FsbCB3YXMgbWFkZSB3aXRob3V0IHRoZSBoYW5kbGUsIGRv IE5PVCByZXR1cm4gdGhlIHJlYXBlZCBzdGF0dXMuIEluc3RlYWQsIHNhdmUgdGhlIHN0YXR1cyBh Z2FpbnN0IHRoZSBoYW5kbGUsIGFuZCByZXBlYXQgdGhlIGNhbGwgdG8gYHdhaXRwaWRgLg0NCiog SWYgdGhlIHdhaXQgY2FsbCBfd2FzXyBtYWRlIHdpdGggdGhlIGhhbmRsZSwgd2UgY2FuIHJldHVy biB0aGUgDQ0KKiBPbmNlIGEgaGFuZGxlIGhhcyBoYWQgdGhlIGNoaWxkIHN0YXR1cyBzYXZlZCBh Z2FpbnN0IGl0LCBpdCBpcyByZW1vdmVkIGZyb20gdGhlIHRhYmxlLg0NCiogQSBzdWJzZXF1ZW50 IGNhbGwgdG8gd2FpdCBvbiB0aGF0IHBpIHRoZSBoYW5kbGUgd2lsbCBsb29rIHVwIHRoZSBzYXZl ZCBpbmZvcm1hdGlvbiBhbmQgcmV0dXJuIGl0IHdpdGhvdXQgbWFraW5nIGEgc3lzdGVtIGNhbGwu DQ0KDQ0KSW4gZmFjdCwgbW9zdCBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgdG8gZG8gdGhpcyBjb3Jy ZWN0bHkgaXMgYWxyZWFkeSBpbiBwbGFjZSAtIGl0IHdhcyBhZGRlZCBieSBAazBrdWJ1biBhbmQg QG5vcm1hbHBlcnNvbiBmb3VyIHllYXJzIGFnbyAtIGh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3Jn L2lzc3Vlcy8xNDg2Ny4gTUpJVCBoYWQgYSBzaW1pbGFyIHByb2JsZW0gdG8gdGhlIG9uZSBkZXNj cmliZWQgaW4gdGhpcyBpc3N1ZTsgaXQgbmVlZHMgdG8gZm9yayBhIEMgY29tcGlsZXIsIGJ1dCBp ZiB0aGUgYXBwbGljYXRpb24gcGVyZm9ybXMgYSBgUHJvY2Vzcy53YWl0cGlkMigtMSlgLCBpdCBj b3VsZCB3aW5kIHVwIHJlYXBpbmcgdGhlIGdjYyBwcm9jZXNzIG91dCBmcm9tIHVuZGVybmVhdGgg bWppdC4gVGhpcyBjb2RlIGhhcyBjaGFuZ2VkIGNvbnNpZGVyYWJseSBvdmVyIHRoZSBjb3Vyc2Ug b2YgbGFzdCB5ZWFyLCBidXQgbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IG1qaXQgc3RpbGwgdXNl cyB0aGlzIGluZnJhc3RydWN0dXJlIHRvIHByb3RlY3QgaXRzIFJ1YnkgY2hpbGQtcHJvY2VzcyBm cm9tIGJlY29taW5nIHZpc2libGUgdG8gUnVieSBjb2RlLg0NCg0NCkluIGFueSBjYXNlLCB0aGUg d2F5IHdhaXRwaWQgd29ya3MgX2N1cnJlbnRseV8sIGlzIHRoYXQuLi4NDQoNDQoqIFJ1YnkgYWN0 dWFsbHkgZG9lcyBhbGwgY2FsbHMgdG8gYHdhaXRwaWRgIGFzIGBXTk9IQU5HYCAoaS5lLiBub25i bG9ja2luZykgaW50ZXJuYWxseS4NDQoqIElmIGEgY2FsbCB0byBgd2FpdHBpZGAgZmluZHMgbm8g Y2hpbGRyZW4sIGl0IGJsb2NrcyB0aGUgdGhyZWFkLCByZXByZXNlbnRpbmcgdGhlIHN0YXRlIGlu IGEgc3RydWN0dXJlIG9mIHR5cGUgYHN0cnVjdCB3YWl0cGlkX3N0YXRlYC4NDQoqIFJ1YnkgYWxz byBrZWVwcyBhIGxpc3Qgb2YgYWxsIGB3YWl0cGlkX3N0YXRlYCdzIHRoYXQgYXJlIGN1cnJlbnRs eSBiZWluZyB3YWl0ZWQgZm9yLCBgdm0tPndhaXRpbmdfcGlkc2AgYW5kIGB2bS0+d2FpdGluZ19n cnBzYC4NDQoqIFRoZXNlIHN0cnVjdHVyZXMgYXJlIHByb3RlY3RlZCB3aXRoIGEgc3BlY2lmaWMg bXV0ZXgsIGB2bS0+d2FpdHBpZF9sb2NrYC4NDQoqIFJ1YnkgaW50ZXJuYWxseSB1c2VzIHRoZSBT SUdDSExEIHNpZ25hbCB0byByZWFwIHRoZSBkZWFkIGNoaWxkcmVuLCBhbmQgdGhlbiBmaW5kIGEg d2FpdGluZyBjYWxsIHRvIGB3YWl0cGlkYCAodmlhIHRoZSB0d28gbGlzdHMpIHRvIGFjdHVhbGx5 IGRpc3BhdGNoIHRoZSByZWFwZWQgc3RhdHVzIHRvLiANDQoqIElmIHNvbWUgY2FsbGVyIGlzIHdh aXRpbmcgZm9yIGEgc3BlY2lmaWMgcGlkLCB0aGF0IF9hbHdheXNfIHRha2VzIHByaW9yaXR5IG92 ZXIgc29tZSBvdGhlciBjYWxsZXIgdGhhdCdzIHdhaXRpbmcgZm9yIGEgcGlkLWdyb3VwIChlLmcu IGAtMWApLg0NCg0NCm1qaXQncyBjaGlsZCBwcm9jZXNzIGlzIHByb3RlY3RlZCwgYmVjYXVzZToN DQoNDQoqIFdoZW4gbWppdCBmb3JrcywgaXQgdXNlcyBhIG1ldGhvZCBgcmJfbWppdF9mb3JrYCB0 byBkbyBzby4NDQoqIFRoYXQgY2FsbHMgdGhlIGFjdHVhbCBgZm9ya2AgaW1wbGVtZW50YXRpb24g X3doaWxzdCBzdGlsbCBob2xkaW5nXyBgdm0tPndhaXRwaWRfbG9ja2ANDQoqIEJlZm9yZSB5aWVs ZGluZyB0aGUgbG9jaywgaXQgaW5zZXJ0cyBhbiBlbnRyeSBpbiBgdm0tPndhaXRpbmdfcGlkc2Ag c2F5aW5nIHRoYXQgbWppdCBpcyB3YWl0aW5nIGZvciB0aGUganVzdC1jcmVhdGVkIGNoaWxkLg0N CiogU2luY2UgZGlyZWN0IHdhaXRzIGZvciBwaWRzIGFsd2F5cyB0YWtlIHByZWNlZGVuY2Ugb3Zl ciBwaWQtZ3JvdXBzLCB0aGlzIGVuc3VyZXMgdGhhdCBtaml0IHdpbGwgYWx3YXlzIHJlYXAgaXRz IG93biBjaGlsZHJlbi4NDQoNDQpJIGJlbGlldmUgdGhpcyBtZWNoYW5pc20gY2FuIGJlIGV4dGVu ZGVkIGFuZCBnZW5lcmFsaXNlZCB0byBwb3dlciB0aGUgcHJvcG9zZWQgQVBJLCBhbmQgbWppdCBj b3VsZCBpdHNlbGYgdXNlIHRoYXQgcmF0aGVyIHRoYW4gaGF2aW5nIG1qaXQtc3BlY2lmaWMgaGFu ZGxpbmcgaW4gYHByb2Nlc3MuY2AuDQ0KDQ0KIyMgUE9DIGltcGxlbWVudGF0aW9uDQ0KDQ0KSSBz a2V0Y2hlZCBvdXQgYSBfdmVyeV8gcm91Z2ggUE9DIHRvIHNlZSBpZiB3aGF0IEkgc2FpZCBhYm92 ZSB3b3VsZCBiZSBwb3NzaWJsZSwgYW5kIEkgdGhpbmsgaXQgaXM6DQ0KDQ0KaHR0cHM6Ly9naXRo dWIuY29tL3J1YnkvcnVieS9jb21taXQvNjAwOWM1NjRiMTY4NjIwMDE1MzVmMmI1NjFmMWExMmY2 ZTdlMGM1Nw0NCg0NClRoZSBmb2xsb3dpbmcgc2NyaXB0IGJlaGF2ZXMgaG93IEkgZXhwZWN0IHdp dGggdGhpcyBwYXRjaDoNDQoNDQpgYGBydWJ5DQ0KcGlkLCBoID0gUHJvY2Vzcy5zcGF3bl9wcml2 YXRlICIvYmluL3NoIiwgIi1jIiwgInNsZWVwIDE7IGV4aXQgNjkiDQ0KcHV0cyAicGlkIC0+ICN7 cGlkfSINDQpwdXRzICJoIC0+ICN7aH0iDQ0KDQ0KIyBzaG91bGQgRVNSQ0guDQ0Kc2xlZXAgMg0N CmJlZ2luDQ0KICAgIFByb2Nlc3Mud2FpdHBpZDIgLTENDQpyZXNjdWUgPT4gZQ0NCiAgICBwdXRz ICJ3YWl0cGlkIGVyciAtPiAje2V9Ig0NCmVuZA0NCndwaWQsIHN0YXR1cyA9IGgud2FpdA0NCnB1 dHMgIndwaWQgLT4gI3t3cGlkfSINDQpwdXRzICJzdGF0dXMgLT4gI3tzdGF0dXMuaW5zcGVjdH0i DQ0KYGBgDQ0KDQ0KYGBgDQ0Ka3RzYW5ha3RzaWRpc0BsaW1hLWxpbnV4MSBydWJ5ICUgLi90b29s L3J1bnJ1YnkucmIgLS0gLi90c3QxLnJiDQ0KcGlkIC0+IDExNTQxMDUNDQpoIC0+ICM8UHJvY2Vz czo6UHJpdmF0ZUhhbmRsZToweDAwMDBmZmZmOTQwMTQwOTg+DQ0Kd2FpdHBpZCBlcnIgLT4gTm8g Y2hpbGQgcHJvY2Vzc2VzDQ0Kd3BpZCAtPiAxMTU0MTA1DQ0Kc3RhdHVzIC0+ICM8UHJvY2Vzczo6 U3RhdHVzOiBwaWQgMTE1NDEwNSBleGl0IDQ+DQ0KYGBgDQ0KDQ0KVGhlIGNoaWxkIHByb2Nlc3Mg Y2FuIGJlIHdhaXRlZCBvbiB3aXRoIHRoZSBoYW5kbGUsIGFuZCB0aGUgY2FsbCB0byBgd2FpdHBp ZDIoLTEpYCBmaW5kcyBub3RoaW5nLg0NCg0NCiMjIFByZXZpb3VzIGlkZWE6IE9TLXNwZWNpZmlj IGhhbmRsZXMNDQoNDQpNeSBmaXJzdCB2ZXJzaW9uIG9mIHRoaXMgcHJvcG9zYWwgaW52b2x2ZWQg YSBzaW1pbGFyIEFQSSwgYnV0IHBvd2VyaW5nIGl0IHdpdGggcGxhdGZvcm0tc3BlY2lmaWMgY29u Y2VwdHMgYXZhaWxhYmxlIG9uIExpbnV4LCBXaW5kb3dzLCBhbmQgRnJlZUJTRCB3aGljaCBvZmZl ciByaWNoZXIgY29udHJvbCB0aGFuIGp1c3QgcGlkcyAmIHRoZSBgd2FpdGAgc3lzY2FsbC4gSW4g cGFydGljdWxhciwgSSBoYWQgYmVsaWV2ZWQgdGhhdCB3ZSBjb3VsZCB1c2UgdGhlIGBjbG9uZWAg c3lzY2FsbCBpbiBMaW51eCB0byBjcmVhdGUgYSBjaGlsZCBwcm9jZXNzIHdoaWNoOg0NCg0NCiog Q291bGQgYmUgcmVmZXJyZWQgdG8gYnkgYSB1bmlxdWUgZmlsZSBkZXNjcmlwdG9yIChhIHBpZGZk KSB3aGljaCB3b3VsZCBiZSBndWFyYW50ZWVkIG5ldmVyIHRvIGJlIHJlLXVzZWQgKHVubGlrZSBh IHBpZCksDQ0KKiBXb3VsZCBub3QgZ2VuZXJhdGUgYSBzaWduYWwgd2hlbiBpdCBleGl0ZWQgKGku ZS4gbm8gU0lHQ0hMRCkuDQ0KKiBDb3VsZCBub3QgYmUgd2FpdGVkIG9uIGJ5IGFuIHVuc3BlY3Rp bmcgdG8gYHdhaXRwaWRgIChleGNlcHQgaWYgYSBzcGVjaWFsIGZsYWcgYF9fV0NMT05FYCBhcyBw YXNzZWQpLg0NCg0NClVuZm9ydHVuYXRlbHksIHdoZW4gSSB0cmllZCB0byBpbXBsZW1lbnQgdGhp cywgSSByYW4gaW50byBhIHByZXR0eSBzZXJpb3VzIHNuYWcuIEl0IGlzIHBvc3NpYmxlIHRvIGNy ZWF0ZSBzdWNoIGEgcHJvY2VzcyAtIEJVVCwgd2hlbiB0aGUgcHJvY2VzcyBleGVjJ3MsIGl0IGdv ZXMgX2JhY2tfIHRvICJyYWlzZS1TSUdDSExELW9uLWV4aXQiIGFuZCAiYWxsb3ctd2FpdGluZy13 aXRob3V0LV9fV0NMT05FIiBtb2Rlcy4gSSBndWVzcyB0aGlzIGZ1bmN0aW9uYWxpdHkgaW4gdGhl IGNsb25lIHN5c2NhbGwgaXMgcmVhbGx5IGRlc2lnbmVkIHRvIHBvd2VyIHRocmVhZHMgaW4gTGlu dXgsIHJhdGhlciB0aGFuIGJlaW5nIGEgZ2VuZXJhbC1wdXJwb3NlICJoaWRkZW4gcHJvY2VzcyIg QVBJLg0NCg0NClNvLCBJIGRvbid0IHRoaW5rIHdlIHNob3VsZCB1c2UgcGlkZmRzIGluIHRoaXMg cHJvcG9zYWwuDQ0KDQ0KIyMgTW90aXZhdGlvbg0NCg0NCk15IHVzZS1jYXNlIGZvciB0aGlzIGlz IHRoYXQgSeKAmW0gd29ya2luZyBvbiBhIHBlcmYtYmFzZWQgcHJvZmlsaW5nIHRvb2wgZm9yIFJ1 YnkuIFRvIGdldCBhcm91bmQgc29tZSBMaW51eCBjYXBhYmlsaXR5IGlzc3VlcywgSSB3YW50IG15 IHByb2ZpbGVyIGdlbSAob3IgQ1J1YnkgcGF0Y2gsIHdoYXRldmVyIGl0IHdpbmRzIHVwIGJlaW5n ISkgdG8gZm9yayBhIHByaXZpbGVnZWQgaGVscGVyIGJpbmFyeSB0byBkbyBzb21lIGVCUEYgdHdp ZGRsaW5nLiBCdXQsIGlmIHlvdeKAmXJlIHByb2ZpbGluZyBlLmcuIGEgVW5pY29ybiBtYXN0ZXIg cHJvY2VzcywgdGhlIHJlc3VsdCBvZiB0aGF0IGJpbmFyeSBleGl0aW5nIG1pZ2h0IGJlIGNhdWdo dCBieSBVbmljb3JuIGl0c2VsZiwgcmF0aGVyIHRoYW4gbXkgKGdlbSB8IGludGVycHJldGVyIGZl YXR1cmUpLg0NCg0NCkluIG15IGNhc2UsIEknbSBzbyBkZWVwIGluIGxpbnV4IHNwZWNpZmljIHN0 dWZmIHRoYXQganVzdCBjYWxsaW5nIGBjbG9uZSgyKWAgZnJvbSBteSBleHRlbnNpb24gaXMgcHJv YmFibHkgZmluZSwgYnV0IEkgaGFkIGVub3VnaCBvZiBhIGxvb2sgYXQgdGhpcyBwcm9jZXNzIG1h bmFnZW1lbnQgc3R1ZmYgSSB0aG91Z2h0IGl0IHdvdWxkIGJlIHdvcnRoIGFza2luZyB0aGUgcXVl c3Rpb24gaWYgdGhpcyBtaWdodCBiZSB1c2VmdWwgdG8gb3RoZXIsIG1vcmUgbm9ybWFsLCBnZW1z Lg0NCg0NCg0NCg0NCg0NCi0tIA0NCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0NCiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiBydWJ5LWNvcmUgbWFp bGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxhbmcub3JnCiBUbyB1bnN1YnNjcmliZSBz ZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNv cmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5vcmcvbWFpbG1hbjMvcG9zdG9yaXVzL2xp c3RzL3J1YnktY29yZS5tbC5ydWJ5LWxhbmcub3JnLw==