[ruby-core:112986] [Ruby master Feature#19541] Proposal: Generate frame unwinding info for YJIT code
From:
"kjtsanaktsidis (KJ Tsanaktsidis) via ruby-core" <ruby-core@...>
Date:
2023-03-24 02:04:47 UTC
List:
ruby-core #112986
SXNzdWUgIzE5NTQxIGhhcyBiZWVuIHVwZGF0ZWQgYnkga2p0c2FuYWt0c2lkaXMgKEtKIFRzYW5h a3RzaWRpcykuDQ0KDQ0KDQ0KPiBGb3IgZXhhbXBsZSwgaWYgd2UgcmVseSBvbiBmcmFtZSBwb2lu dGVyIHVud2luZGluZywgaXQnZCBiZSBpbmNvcnJlY3Qgd2hlbiB0aGUgUEMgaXMgaW4gc2VjdGlv bnMgb2YgdGhlIHByb2xvZ3VlL2VwaWxvZ3VlLCBidXQgd291bGQgY292ZXIgbW9zdCBjcmFzaGVz DQ0KDQ0KSSBkbyBhZ3JlZSB0aGF0IHRoaXMgd2lsbCB3b3JrIHByZXR0eSBtdWNoIGFsbCBvZiB0 aGUgdGltZSB5ZWFoLiBJIF93YW50XyB0byBtYWtlIGl0IHdvcmsgaW4gdGhlIHByb2xvZ3VlL2Vw aWxvZ3VlLCBidXQgSSBndWVzcyB0aGF0J3MgbW9yZSBmb3IgY29tcGxldGVuZXNzJ3Mgc2FrZSBy YXRoZXIgdGhhbiBhbnkgcmVhbCB1dGlsaXR5LCBzbyB5ZWFoIGl0IG1heSBub3QgYmUgd29ydGgg Z2VuZXJhdGluZyBtZXRhZGF0YSBmb3IgdGhpcy4NDQoNDQo+IFdlIGNvdWxkIHJlYWQgYXJvdW5k IHRoZSBQQyB0byBmaWd1cmUgb3V0IGhvdyB0byB1bndpbmQgZnJvbSB0aG9zZSBzZWN0aW9ucyBm b3IgZnVsbCByb2J1c3RuZXNzIGxhdGVyLg0NCg0NCk9oIGludGVyZXN0aW5nIC0gSSBndWVzcyBp ZiB3ZSBjYW4gcmVseSBvbiBZSklUIF9ub3RfIGdlbmVyYXRpbmcgb3Bjb2RlcyBsaWtlIGBwdXNo ICVyYnA7IG1vdiAlcmJwLCAlcnNwYCBhbmQgYHN0cCB4MjksIHgzMCwgW3NwLCMtMHgxMF0hOyBt b3YgeDI5LCBzcGAgYW55d2hlcmUgZWxzZSBfZXhjZXB0XyB0aGUgcHJvbG9ndWUsIHRoZW4geWVh aCB0aGUgdW53aW5kZXIgKGJvdGggdGhlIGluLXByb2Nlc3Mgb25lIGZvciBjcmFzaCByZXBvcnRp bmcsIGFuZCB0aGUgb3V0LW9mLXByb2Nlc3Mgb25lIGluIEdEQidzIHB5dGhvbiBpbnRlcmZhY2Up IGNhbiBub3NlIGFyb3VuZCB0aGUgUEMgYW5kIHdvcmsgb3V0IGlmIGl0J3MgaW5zaWRlIHRoZSBw cm9sb2d1ZS9lcGlsb2d1ZSBvciBub3QuDQ0KDQ0KSXQgc2VlbXMgSSBtaWdodCBiZSBhYmxlIHRv IHNwaWtlIHRoaXMgb3V0IGJ5IHdyaXRpbmcgYSBHREIgcHl0aG9uIHVud2luZGVyIGVudGlyZWx5 IG91dHNpZGUgdGhlIFJ1YnkgdHJlZSAoZm9yIGFhcmNoNjQ7IG5lZWQgdG8gYWRkIHRoZSBmcmFt ZSBwb2ludGVycyBmb3IgeDg2XzY0IGZpcnN0IGJlZm9yZSBpdCdkIHdvcmsgdGhlcmUpLiBNYXli ZSB0aGUgd2F5IHRvIGdvIGlzIGZvciBtZSB0byB3cml0ZSB0aGF0LCBzaGFyZSBpdCBhcm91bmQs IGFuZCBvbmNlIGl0J3MgbW9zdGx5IHdvcmtpbmcsIF90aGVuXyBwb3J0IGl0cyBsb2dpYyBpbnRv IHRoZSBSdWJ5IGNyYXNoIHJlcG9ydGVyIGFzIHdlbGwuDQ0KDQ0KVGhpcyBkb2VzIGxlYXZlIHRo ZSBxdWVzdGlvbiBvcGVuIG9mIGhvdyB0byBnZXQgc29tZSBraW5kIG9mIHNlbnNpYmxlIG5hbWUg Zm9yIHRoZSB5aml0IGZyYW1lcyB0aGF0IGlzbid0IGp1c3QgYSByYW5kb20gYWRkcmVzcy4gSSBz dXBwb3NlIGlmIHdlJ3JlIGdvaW5nIHdpdGggYW4gYXBwcm9hY2ggb2YgInNtYXJ0IHVud2luZGVy cyB0aGF0IHVuZGVyc3RhbmQgaG93IFlKSVQgbGF5cyBvdXQgY29kZSIsIG1heWJlIEkgY2FuIGdl dCB0aGUgdW53aW5kZXIgdG8gZmlndXJlIHNvbWV0aGluZyBvdXQgYmFzZWQgb24gdGhlIENGUCBw b2ludGVyLiBJdCdzIGluIGEgY2FsbGVlLXNhdmVkIHJlZ2lzdGVyLCBhbmQgbW9zdCB1bndpbmRp bmcgc2NoZW1lcyBnZW5lcmFsbHkgbWFrZSBpdCBwb3NzaWJsZSB0byByZWNvdmVyIHRoZXNlIChJ IHRoaW5rIGl0IG1pZ2h0IGJlIHJlcXVpcmVkIGZvciBDKysgZXhjZXB0aW9uIHVud2luZGluZyB0 byB3b3JrKS4gT3RoZXJ3aXNlIHBlcmhhcHMgd2UgY2FuIHNwaWxsIGl0IHRvIHRoZSBzdGFjayBh cyB3ZWxsIC0gSSdsbCBwbGF5IGFyb3VuZC4NDQoNDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQ0KRmVhdHVyZSAjMTk1NDE6IFByb3Bvc2FsOiBHZW5lcmF0ZSBmcmFt ZSB1bndpbmRpbmcgaW5mbyBmb3IgWUpJVCBjb2RlDQ0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5v cmcvaXNzdWVzLzE5NTQxI2NoYW5nZS0xMDI1MTcNDQoNDQoqIEF1dGhvcjoga2p0c2FuYWt0c2lk aXMgKEtKIFRzYW5ha3RzaWRpcykNDQoqIFN0YXR1czogQXNzaWduZWQNDQoqIFByaW9yaXR5OiBO b3JtYWwNDQoqIEFzc2lnbmVlOiB5aml0DQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0NCiMjIFdoYXQgaXMgYmVpbmcgcHJvcHNlZD8NDQoNDQpDdXJyZW50bHksIHdo ZW4gUnVieSBjcmFzaGVzIHdpdGggeWppdCBnZW5lcmF0ZWQgY29kZSBvbiB0aGUgc3RhY2ssIGBy Yl9wcmludF9iYWNrdHJhY2UoKWAgaXMgdW5hYmxlIHRvIGFjdHVhbGx5IHNob3cgYW55IGZyYW1l cyB1bmRlcm5lYXRoIHRoZSB5aml0IGNvZGUuIEZvciBleGFtcGxlLCBpZiB5b3Ugc2VuZCBTSUdT RUdWIHRvIGEgUnVieSBwcm9jZXNzIHJ1bm5pbmcgeWppdCwgdGhpcyBpcyB3aGF0IHlvdSBzZWU6 DQ0KDQ0KYGBgDQ0KL3J1YnkvbWluaXJ1YnkocmJfcHJpbnRfYmFja3RyYWNlKzB4YykgWzB4YWFh YWQwMjc2ODg0XSAvcnVieS92bV9kdW1wLmM6Nzg1DQ0KL3J1YnkvbWluaXJ1YnkocmJfdm1fYnVn cmVwb3J0KSAvcnVieS92bV9kdW1wLmM6MTA5Mw0NCi9ydWJ5L21pbmlydWJ5KHJiX2J1Z19mb3Jf ZmF0YWxfc2lnbmFsKzB4ZDApIFsweGFhYWFkMDA3NTU4MF0gL3J1YnkvZXJyb3IuYzo4MTMNDQov cnVieS9taW5pcnVieShzaWdzZWd2KzB4NWMpIFsweGFhYWFkMDFiZWRhY10gL3J1Ynkvc2lnbmFs LmM6OTE5DQ0KbGludXgtdmRzby5zby4xKF9fa2VybmVsX3J0X3NpZ3JldHVybisweDApIFsweGZm ZmY5MWEzZThiY10NDQovcnVieS9taW5pcnVieShtYXA8KHVzaXplLCB5aml0OjpiYWNrZW5kOjpp cjo6SW5zbiksICh1c2l6ZSwgeWppdDo6YmFja2VuZDo6aXI6Okluc24pLCB5aml0OjpiYWNrZW5k Ojppcjo6e2ltcGwjMTd9OjpuZXh0X21hcHBlZDo6e2Nsb3N1cmVfZW52IzB9PisweDhjKSBbMHhh YWFhZDAzYjhiMDBdIC9ydXN0Yy84OTdlMzc1NTNiYmE4YjQyNzUxYzY3NjU4OTY3ODg5ZDExZWNk MTIwL2xpYnJhcnkvY29yZS9zcmMvb3B0aW9uLnJzOjkyOQ0NCi9ydWJ5L21pbmlydWJ5KG5leHRf bWFwcGVkKzB4M2MpIFsweGFhYWFkMDI5MWRjMF0gc3JjL2JhY2tlbmQvaXIucnM6MTIyNQ0NCi9y dWJ5L21pbmlydWJ5KGFybTY0X3NwbGl0KzB4MTE0KSBbMHhhYWFhZDAyODc3NDRdIHNyYy9iYWNr ZW5kL2FybTY0L21vZC5yczozNTkNDQovcnVieS9taW5pcnVieShjb21waWxlX3dpdGhfcmVncysw eDgwKSBbMHhhYWFhZDAyOGJmODRdIHNyYy9iYWNrZW5kL2FybTY0L21vZC5yczoxMTA2DQ0KL3J1 YnkvbWluaXJ1YnkoY29tcGlsZSsweGM0KSBbMHhhYWFhZDAyOTFhZTBdIHNyYy9iYWNrZW5kL2ly LnJzOjExNTgNDQovcnVieS9taW5pcnVieShnZW5fc2luZ2xlX2Jsb2NrKzB4ZTQ0KSBbMHhhYWFh ZDAyYjFmODhdIHNyYy9jb2RlZ2VuLnJzOjg1NA0NCi9ydWJ5L21pbmlydWJ5KGdlbl9ibG9ja19z ZXJpZXNfYm9keSsweDljKSBbMHhhYWFhZDAzYjAyNTBdIHNyYy9jb3JlLnJzOjE2OTgNDQovcnVi eS9taW5pcnVieShnZW5fYmxvY2tfc2VyaWVzKzB4NTApIFsweGFhYWFkMDNiMDEwMF0gc3JjL2Nv cmUucnM6MTY3Ng0NCi9ydWJ5L21pbmlydWJ5KGJyYW5jaF9zdHViX2hpdF9ib2R5KzB4ODBjKSBb MHhhYWFhZDAzYjFmNjhdIHNyYy9jb3JlLnJzOjIwMjENDQovcnVieS9taW5pcnVieSh7Y2xvc3Vy ZSMwfSsweDI4KSBbMHhhYWFhZDAyZWI4NmNdIHNyYy9jb3JlLnJzOjE5MjQNDQovcnVieS9taW5p cnVieShkb19jYWxsPHlqaXQ6OmNvcmU6OmJyYW5jaF9zdHViX2hpdDo6e2Nsb3N1cmVfZW52IzB9 LCAqY29uc3QgdTg+KzB4OTgpIFsweGFhYWFkMDM1YmEzY10gL3J1c3RjLzg5N2UzNzU1M2JiYThi NDI3NTFjNjc2NTg5Njc4ODlkMTFlY2QxMjAvbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5yczo0 OTINDQpbMHhhYWFhZDAzNWM5YjRdDQ0KYGBgDQ0KDQ0KKG4uYi4gLSBJIGNvbXBpbGVkIFJ1Ynkg d2l0aCBgLWZhc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyDigJNyZHluYW1pYyDigJNnYCBpbiBj ZmxhZ3MgdG8gbWFrZSBzdXJlIGdjYyBnZW5lcmF0ZXMgYXBwcm9wcmlhdGUgdW53aW5kIGluZm8g JiBrZWVwcyB0aGUgc3ltYm9sIHRhYmxlcykuDQ0KDQ0KTGlrZXdpc2UsIGlmIHlvdSBhdHRhY2gg Z2RiIHRvIGEgUnVieSBwcm9jZXNzIHdpdGggeWppdCBlbmFibGVkLCBnZGIgY2FuJ3Qgc2hvdyB0 aHJlYWQgYmFja3RyYWNlcyB0aHJvdWdoIHlqaXQtZ2VuZXJhdGVkIGNvZGUgZWl0aGVyLg0NCg0N Ck15IHByb3Bvc2FsIGlzIHRoYXQgWUpJVCBnZW5lcmF0ZSBzdWZmaWNpZW50IHVud2luZGluZyBh bmQgZGVidWcgaW5mb3JtYXRpb24gb24gYWxsIHBsYXRmb3JtcyB0byBhbGxvdyBib3RoIGByYl9w cmludF9iYWNrdHJhY2UoKWAgYW5kIHRoZSBwbGF0Zm9ybSdzIGRlYnVnZ2VyIChnZGIvbGxkYi9X aW5EYmcpIHRvIHNob3c6DQ0KDQ0KKiBGdWxsIHN0YWNrIHRyYWNlcyBhbGwgdGhlIHdheSBiYWNr IHRvIGBtYWluYC4gVGhhdCBpcywgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHNlZSBmcmFtZXMg X3VuZGVybmVhdGhfIGBbMHhhYWFhZDAzNWM5YjRdYCBmcm9tIHRoZSBiYWNrdHJhY2UgYWJvdmUu DQ0KKiBOYW1lcyBmb3IgdGhlIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCB5aml0IGJsb2NrcyAoZS5n LiBpbnN0ZWFkIG9mIGBbMHhhYWFhZDAzNWM5YjRdYCwgd2Ugc2hvdWxkIHNlZSBzb21ldGhpbmcg bGlrZSBgeWppdCQkbmFtZV9vZl9ydWJ5X21ldGhvZGAsIHdoZXJlIGBuYW1lX29mX3J1YnlfbWV0 aG9kYCBpcyB0aGUgYGxhYmVsYCBmb3IgdGhlIGlzZXEgdGhpcyBpcyBKSVQnZCBjb2RlIGZvciku DQ0KDQ0KIyMgTW90aXZhdGlvbg0NCg0NCkkgaGF2ZSBhIGZldyBtb3RpdmF0aW9ucyBmb3Igd2Fu dGluZyB0aGlzLiBGaXJzdGx5LCBJIGZlZWwgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGluZGVwZW5k ZW50bHkgdXNlZnVsLiBXaGVuIFJ1YnkgY3Jhc2hlcywgdGhlIG1vcmUgaW5mb3JtYXRpb24gd2Ug Y2FuIGdldCwgdGhlIG1vcmUgbGlrZWx5IHdlIGFyZSB0byBmaW5kIHRoZSByb290IGNhdXNlLiBM aWtld2lzZSwgdGhlIHNhbWUgcHJpbmNpcGxlIGFwcGxpZXMgdG8gZGVidWdnaW5nIHdpdGggZ2Ri IC0geW91IGNhbiBnZXQgYSBmdWxsZXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoZSBwcm9jZXNz IGlzIGRvaW5nIGlmIHlvdSBzZWUgdGhlIHdob2xlIHN0YWNrLg0NCg0NCkkgaGF2ZSBvZnRlbiBm b3VuZCBhdHRhY2hpbmcgZ2RiIHRvIHRoZSBSdWJ5IGludGVycHJldGVyIGhlbHBzIGluIHVuZGVy c3RhbmRpbmcgcHJvYmxlbXMgaW4gUnVieSBjb2RlIG9yIEMgZXh0ZW5zaW9ucyBhbmQgaXMgc29t ZXRoaW5nIEkgZG8gcmVsYXRpdmVseSBmcmVxdWVudGx5OyB5aml0IGJyZWFraW5nIHRoYXQgd2ls bCBkZWZpbml0ZWx5IGJlIGluY29udmVuaWVudCBmb3IgbWUhDQ0KDQ0KIyMgSW1wbGVtZW50YXRp b24NDQoNDQpJIGhhdmUgYSBkcmFmdCBpbXBsZW1lbnRhdGlvbiBoZXJlIG9uIGhvdyBJJ2QgaW1w bGVtZW50IHRoaXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC83NTY3LiBJdCdz IGN1cnJlbnRseSBtaXNzaW5nIHRlc3RzICYgcGxhdGZvcm0gc3VwcG9ydCAoaXQgb25seSB3b3Jr cyBvbiBMaW51eCBhYXJjaDY0KS4gQWxzbywgaXQgaW1wbGVtZW50cyB1bndpbmQgaW5mbyBnZW5l cmF0aW9uLCBzbyB1bndpbmRpbmcgY2FuIHdvcmsgX3Rocm91Z2hfIHlqaXQgY29kZSwgYnV0IGl0 IGRvZXMgbm90IGN1cnJlbnRseSBlbWl0IHN5bWJvbHMgdG8gZ2l2ZSBfbmFtZXNfIHRvIHRob3Nl IHlqaXQgZnJhbWVzLg0NCg0NCk15IFBSIGNvbnRhaW5zIGEgZG9jdW1lbnQgd2hpY2ggZXhwbGFp bnMgaG93IHRoZSBMaW51eCBpbnRlcmZhY2VzIGZvciByZWdpc3RlcmluZyB1bndpbmQgaW5mbyBm b3IgSklUJ2QgY29kZSB3b3JrLCBzbyBJIHdvbid0IGR1cGxpY2F0ZSB0aGF0IGluZm9ybWF0aW9u IGhlcmUuDQ0KDQ0KVGhlIGJpZ2dlc3QgaW1wbGVtZW50YXRpb24gcXVlc3Rpb24gSSBoYWQgaXMg YXJvdW5kIHRoZSB1c2Ugb2YgUnVzdCBjcmF0ZXMuIEN1cnJlbnRseSwgSSBwcm90b3R5cGVkIG15 IGltcGxlbWVudGF0aW9uIHVzaW5nIHRoZSBnaW1saSAmIG9iamVjdCBjcmF0ZXMsIGZvciBnZW5l cmF0aW5nIERXQVJGIGluZm8gYW5kIEVMRiBiaW5hcmllcy4gSG93ZXZlciwgdGhlIHlqaXQgYnVp bGQgZG9lcyBwdXJwb3NlZnVsbHkgZG9lcyBub3QgdXNlIGNhcmdvICYgZXh0ZXJuYWwgY3JhdGVz IGZvciByZWxlYXNlIGJ1aWxkcy4gVGhlcmUgYXJlIGEgZmV3IGRpZmZlcmVudCB3YXlzIHdlIGNv dWxkIGdvIGhlcmU6DQ0KDQ0KKiBEb24ndCB1c2UgdGhlIGdpbWxpICYgb2JqZWN0IGNyYXRlczsg aW5zdGVhZCwgcmUtaW1wbGVtZW50IGFsbCBkZWJ1ZyBpbmZvICYgb2JqZWN0IGZpbGUgZ2VuZXJh dGlvbiBjb2RlIGluIHlqaXQuDQ0KKiBEb24ndCB1c2UgdGhlIGNyYXRlczsgaW5zdGVhZCwgbGlu ayBhZ2FpbnQgQyBsaWJyYXJpZXMgdG8gcHJvdmlkZSB0aGlzIGZ1bmN0aW9uYWxpdHkgJiBjYWxs IHRoZW0gZnJvbSBSdXN0IChwZXJoYXBzIHNvbWUgY29tYmluYXRpb24gb2YgbGliZWxmLCBsaWJk dywgbGliYmZkLCBvciBsbHZtIG1pZ2h0IGRvIHdoYXQgd2UgbmVlZCkNDQoqIFVzZSBjYXJnbyBh ZnRlciBhbGwgZm9yIHRoZSByZWxlYXNlIGJ1aWxkICYgZG93bmxvYWQgdGhlIGNyYXRlcyBhdCBi dWlsZC10aW1lDQ0KKiBVc2UgY2FyZ28gZm9yIHRoZSByZWxlYXNlIGJ1aWxkLCBidXQgdmVuZG9y IGV2ZXJ5dGhpbmcsIHNvIHRoZSBidWlsZCBkb2Vzbid0IG5lZWQgdG8gZG93bmxvYWQgYW55dGhp bmcNDQoqIE9ubHkgbWFrZSB1bndpbmQgaW5mbyBnZW5lcmF0aW9uIGF2YWlsYWJsZSBpbiBkZXYg bW9kZSB3aGVyZSBjYXJnbyBpcyB1c2VkLCBhbmQgc28gbWFyayB0aGUgZ2ltbGkvb2JqZWN0IGRl cGVuZGVuY2llcyBhcyBvcHRpb25hbCBpbiBDYXJnby50b21sLg0NCg0NCldlJ2QgbmVlZCB0byBk ZWNpZGUgb24gb25lIG9mIHRoZXNlIGFwcHJvYWNoZXMgZm9yIHRoaXMgcHJvcG9zYWwgdG8gd29y ay4gSSBkb24ndCByZWFsbHkgaGF2ZSBhIHN0cm9uZyBzZW5zZSBvZiB0aGUgcHJvcy9jb25zIG9m IGVhY2guDQ0KDQ0KKFNpZGUgbm90ZSAtIG15IFBSIGFjdHVhbGx5IGRlcGVuZHMgb24gYSBfZm9y a18gb2YgZ2ltbGkgLSBJJ3ZlIGJlZW4gZGlzY3Vzc2luZyBhZGRpbmcgdGhlIG5lZWRlZCBpbnRl cmZhY2VzIHVwc3RyZWFtIGhlcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9naW1saS1ycy9naW1saS9p c3N1ZXMvNjQ4KS4NDQoNDQojIyBCZW5jaG1hcmtzDQ0KDQ0KSSByYW4gdGhlIHlpdC1iZW5jaCBz dWl0ZSBvbiBteSBicmFuY2ggYW5kIGNvbXBhcmVkIGl0IHRvIFJ1YnkgbWFzdGVyOg0NCg0NCiog TXkgYnJhbmNoOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9LSlRzYW5ha3RzaWRpcy81NzQxYTlm NjRlNWNkNzVjZGY1ZmVkZDg0NjA5MWE0Zg0NCiogUnVieSBtYXN0ZXI6IGh0dHBzOi8vZ2lzdC5n aXRodWIuY29tL0tKVHNhbmFrdHNpZGlzLzU5MmQzZWJjZjk4ZjY3NDVkZmEzZWZiZDMwYTI1YWNm DQ0KDQ0KVGhpcyBpcyBhICh2ZXJ5IHNpbXBsZSkgY29tcGFyaXNvbjoNDQoNDQpgYGANDQotLS0t LS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLQ0NCmJl bmNoICAgICAgICAgIHlqaXQgKG1zKSAgICBicmFuY2ggKG1zKSAgYnJhbmNoL3lqaXQgKCUpDQ0K YWN0aXZlcmVjb3JkICAgOTcuNSAgICAgICAgIDk4LjUgICAgICAgICAxMDEuMDMlDQ0KaGV4YXBk ZiAgICAgICAgMjQxNS4zICAgICAgIDI0NTguMiAgICAgICAxMDEuNzglDQ0KbGlxdWlkLWMgICAg ICAgNjEuOSAgICAgICAgIDYzLjEgICAgICAgICAxMDEuOTQlDQ0KbGlxdWlkLXJlbmRlciAgMTM1 LjMgICAgICAgIDEzNS4wICAgICAgICA5OS43OCUNDQptYWlsICAgICAgICAgICAxMDQuNiAgICAg ICAgMTA1LjUgICAgICAgIDEwMC44NiUNDQpwc3ljaC1sb2FkICAgICAxODg3LjEgICAgICAgMTky Mi4wICAgICAgIDEwMS44NSUNDQpyYWlsc2JlbmNoICAgICAxNTQ0LjQgICAgICAgMTU1Ni4wICAg ICAgIDEwMC43NSUNDQpydWJ5LWxzcCAgICAgICA4OC40ICAgICAgICAgODkuNSAgICAgICAgIDEw MS4yNCUNDQpzZXF1ZWwgICAgICAgICAxNDcuNSAgICAgICAgMTUxLjEgICAgICAgIDEwMi40NCUN DQpiaW5hcnl0cmVlcyAgICAzMDMgICAgICAgICAgMzA1LjYgICAgICAgIDEwMC44NiUNDQpjaHVu a3lfcG5nICAgICAxMDc1LjggICAgICAgMTA3OS40ICAgICAgIDEwMC4zMyUNDQplcnViaSAgICAg ICAgICAzOTIuOSAgICAgICAgMzkyLjMgICAgICAgIDk5Ljg1JQ0NCmVydWJpX3JhaWxzICAgIDE0 LjcgICAgICAgICAxNC43ICAgICAgICAgMTAwLjAwJQ0NCmV0YW5uaSAgICAgICAgIDc5Mi4zICAg ICAgICA3OTEuNCAgICAgICAgOTkuODklDQ0KZmFubmt1Y2hyZWR1eCAgMzgxNS45ICAgICAgIDM4 MTMuNiAgICAgICA5OS45NCUNDQpsZWUgICAgICAgICAgICAxMDMwLjIgICAgICAgMTAzOS4yICAg ICAgIDEwMC44NyUNDQpuYm9keSAgICAgICAgICA0OS4yICAgICAgICAgNDkuMyAgICAgICAgIDEw MC4yMCUNDQpvcHRjYXJyb3QgICAgICA0MTQyICAgICAgICAgNDE0My4zICAgICAgIDEwMC4wMyUN DQpydWJ5LWpzb24gICAgICAyODYwLjcgICAgICAgMjg3NC4wICAgICAgIDEwMC40NiUNDQpydWJ5 a29uICAgICAgICA3OTA2LjYgICAgICAgNzkwNC4yICAgICAgIDk5Ljk3JQ0NCjMwa19pZmVsc2Ug ICAgIDM0OC43ICAgICAgICAzNDUuNCAgICAgICAgOTkuMDUlDQ0KMzBrX21ldGhvZHMgICAgODI4 LjYgICAgICAgIDgzMS44ICAgICAgICAxMDAuMzklDQ0KY2Z1bmNfaXRzZWxmICAgMjguOCAgICAg ICAgIDI4LjkgICAgICAgICAxMDAuMzUlDQ0KZmliICAgICAgICAgICAgMzQuNCAgICAgICAgIDM0 LjUgICAgICAgICAxMDAuMjklDQ0KZ2V0aXZhciAgICAgICAgMTE1LjUgICAgICAgIDEwOS43ICAg ICAgICA5NC45OCUNDQprZXl3b3JkX2FyZ3MgICAzNy43ICAgICAgICAgMzguMCAgICAgICAgIDEw MC44MCUNDQpyZXNwb25kX3RvICAgICAyNiAgICAgICAgICAgMjYuMSAgICAgICAgIDEwMC4zOCUN DQpzZXRpdmFyICAgICAgICAzMy44ICAgICAgICAgMzMuNSAgICAgICAgIDk5LjExJQ0NCnNldGl2 YXJfb2JqZWN0IDIwOC43ICAgICAgICAxOTQuMyAgICAgICAgOTMuMTAlDQ0Kc3RyX2NvbmNhdCAg ICAgNTIuNiAgICAgICAgIDUyLjIgICAgICAgICA5OS4yNCUNDQp0aHJvdyAgICAgICAgICAyMy44 ICAgICAgICAgMjQuMSAgICAgICAgIDEwMS4yNiUNDQotLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0t LS0gLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLQ0NCmBgYA0NCg0NCkl0IHNlZW1zIGxpa2Ug dGhlIHBlcmZvcm1hbmNlIGltcGFjdCBvZiBnZW5lcmF0aW5nIGFuZCByZWdpc3RlcmluZyB0aGUg ZGVidWcgaW5mbyBpcyBtYXJnaW5hbC4NDQoNDQoNDQoNDQotLSANDQpodHRwczovL2J1Z3MucnVi eS1sYW5nLm9yZy8NDQogX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwogcnVieS1jb3JlIG1haWxpbmcgbGlzdCAtLSBydWJ5LWNvcmVAbWwucnVieS1sYW5nLm9y ZwogVG8gdW5zdWJzY3JpYmUgc2VuZCBhbiBlbWFpbCB0byBydWJ5LWNvcmUtbGVhdmVAbWwucnVi eS1sYW5nLm9yZwogcnVieS1jb3JlIGluZm8gLS0gaHR0cHM6Ly9tbC5ydWJ5LWxhbmcub3JnL21h aWxtYW4zL3Bvc3Rvcml1cy9saXN0cy9ydWJ5LWNvcmUubWwucnVieS1sYW5nLm9yZy8=