[ruby-core:115107] [Ruby master Feature#19541] Proposal: Generate frame unwinding info for YJIT code
From:
"k0kubun (Takashi Kokubun) via ruby-core" <ruby-core@...>
Date:
2023-10-19 07:24:09 UTC
List:
ruby-core #115107
SXNzdWUgIzE5NTQxIGhhcyBiZWVuIHVwZGF0ZWQgYnkgazBrdWJ1biAoVGFrYXNoaSBLb2t1YnVu KS4NDQoNDQoNDQo+IE9uZSBxdWVzdGlvbiAtIHRoZSBwZXJmIG1hcCBmaWxlIGlzIGdvaW5nIHRv IGdyb3cgd2l0aG91dCBib3VuZCBmb3IgYSBsb25nLXJ1bm5pbmcgcHJvY2VzcywgcmlnaHQ/IEkg Z3Vlc3MgdGhlcmUncyBubyByZWFsIHdheSBhcm91bmQgdGhpcyBiYXNlZCBvbiBob3cgdGhlIGZp bGUgaXMgc3BlY2lmaWVkIHRob3VnaC4uLiBJJ2xsIGhhdmUgYSBsb29rIGF0IHRoYXQgcHJvYmxl bSB3aGVuIEkgYWN0dWFsbHkgcnVuIGludG8gaXQgYW55d2F5Lg0NCg0NCldlIHBsYW4gdG8gYWRk IGFuIG9wdGlvbiB0byBkaXNhYmxlIENvZGUgR0MgKGNvbXBpbGF0aW9uIHN0b3BzIHdoZW4gaXQg cmVhY2hlcyB0aGUgY29kZSBzaXplIGxpbWl0KSBpbiBSdWJ5IDMuMywgYW5kIHVzaW5nIHRoYXQg b3B0aW9uIHNob3VsZCBmaXggdGhhdCBwcm9ibGVtLiBHaXZlbiB0aGF0IHBlcmYgcmVhZHMgbWFw IGZpbGVzIGFmdGVyIGV4ZWN1dGlvbiwgaXQncyBpbmhlcmVudGx5IGluY29tcGF0aWJsZSB3aXRo IENvZGUgR0MuIFdlIG1pZ2h0IHdhbnQgdG8gbGV0IGAtLXlqaXQtcGVyZmAgYXV0b21hdGljYWxs eSBlbmFibGUgdGhhdCBvcHRpb24gdG9vLg0NCg0NCj4gVGhpcyBhbHNvIGRvZXNuJ3QgYWRkcmVz cyBkZWJ1Z2dlciBzdXBwb3J0LCBidXQgbWF5YmUgZm9yIHRoYXQgSSBtaWdodCBnbyBwb2tlIGF0 IEdEQiAoaWNrKSBhbmQgc2VlIGlmIGl0IGNhbiBhKSBiZSBtYWRlIHRvIHRyeSBmcmFtZSBwb2lu dGVyIHVud2luZGluZyB1bmNvbmRpdGlvbmFsbHksIGFuZCBiKSB1c2UgdGhlIHBlcmYgbWFwIGZp bGUgYXMgYSBzb3VyY2Ugb2Ygc3ltYm9scy4NDQoNDQpEb2VzIEdEQiBub3QgdXNlIGZyYW1lIHBv aW50ZXIgdW53aW5kaW5nIGF0IGFsbCwgZXZlbiBmb3IgZnJhbWVzIHdpdGggbm8gZGVidWcgaW5m b3JtYXRpb24gaW4gdGhlIGFkZHJlc3M/IEkgd2FzIGhvcGluZyBgLS15aml0LXBlcmY9ZnBgICh3 aGljaCBlbmFibGVzIG9ubHkgZnJhbWUgcG9pbnRlcnMpIGNhbiBiZSBzb21ldGltZXMgdXNlZCBm b3IgaGVscGluZyBHREIgdW53aW5kIGZyYW1lcy4NDQoNDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQ0KRmVhdHVyZSAjMTk1NDE6IFByb3Bvc2FsOiBHZW5lcmF0ZSBm cmFtZSB1bndpbmRpbmcgaW5mbyBmb3IgWUpJVCBjb2RlDQ0KaHR0cHM6Ly9idWdzLnJ1YnktbGFu Zy5vcmcvaXNzdWVzLzE5NTQxI2NoYW5nZS0xMDUwMTQNDQoNDQoqIEF1dGhvcjoga2p0c2FuYWt0 c2lkaXMgKEtKIFRzYW5ha3RzaWRpcykNDQoqIFN0YXR1czogRmVlZGJhY2sNDQoqIFByaW9yaXR5 OiBOb3JtYWwNDQoqIEFzc2lnbmVlOiB5aml0DQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0NCiMjIFdoYXQgaXMgYmVpbmcgcHJvcHNlZD8NDQoNDQpDdXJyZW50bHks IHdoZW4gUnVieSBjcmFzaGVzIHdpdGggeWppdCBnZW5lcmF0ZWQgY29kZSBvbiB0aGUgc3RhY2ss IGByYl9wcmludF9iYWNrdHJhY2UoKWAgaXMgdW5hYmxlIHRvIGFjdHVhbGx5IHNob3cgYW55IGZy YW1lcyB1bmRlcm5lYXRoIHRoZSB5aml0IGNvZGUuIEZvciBleGFtcGxlLCBpZiB5b3Ugc2VuZCBT SUdTRUdWIHRvIGEgUnVieSBwcm9jZXNzIHJ1bm5pbmcgeWppdCwgdGhpcyBpcyB3aGF0IHlvdSBz ZWU6DQ0KDQ0KYGBgDQ0KL3J1YnkvbWluaXJ1YnkocmJfcHJpbnRfYmFja3RyYWNlKzB4YykgWzB4 YWFhYWQwMjc2ODg0XSAvcnVieS92bV9kdW1wLmM6Nzg1DQ0KL3J1YnkvbWluaXJ1YnkocmJfdm1f YnVncmVwb3J0KSAvcnVieS92bV9kdW1wLmM6MTA5Mw0NCi9ydWJ5L21pbmlydWJ5KHJiX2J1Z19m b3JfZmF0YWxfc2lnbmFsKzB4ZDApIFsweGFhYWFkMDA3NTU4MF0gL3J1YnkvZXJyb3IuYzo4MTMN DQovcnVieS9taW5pcnVieShzaWdzZWd2KzB4NWMpIFsweGFhYWFkMDFiZWRhY10gL3J1Ynkvc2ln bmFsLmM6OTE5DQ0KbGludXgtdmRzby5zby4xKF9fa2VybmVsX3J0X3NpZ3JldHVybisweDApIFsw eGZmZmY5MWEzZThiY10NDQovcnVieS9taW5pcnVieShtYXA8KHVzaXplLCB5aml0OjpiYWNrZW5k Ojppcjo6SW5zbiksICh1c2l6ZSwgeWppdDo6YmFja2VuZDo6aXI6Okluc24pLCB5aml0OjpiYWNr ZW5kOjppcjo6e2ltcGwjMTd9OjpuZXh0X21hcHBlZDo6e2Nsb3N1cmVfZW52IzB9PisweDhjKSBb MHhhYWFhZDAzYjhiMDBdIC9ydXN0Yy84OTdlMzc1NTNiYmE4YjQyNzUxYzY3NjU4OTY3ODg5ZDEx ZWNkMTIwL2xpYnJhcnkvY29yZS9zcmMvb3B0aW9uLnJzOjkyOQ0NCi9ydWJ5L21pbmlydWJ5KG5l eHRfbWFwcGVkKzB4M2MpIFsweGFhYWFkMDI5MWRjMF0gc3JjL2JhY2tlbmQvaXIucnM6MTIyNQ0N Ci9ydWJ5L21pbmlydWJ5KGFybTY0X3NwbGl0KzB4MTE0KSBbMHhhYWFhZDAyODc3NDRdIHNyYy9i YWNrZW5kL2FybTY0L21vZC5yczozNTkNDQovcnVieS9taW5pcnVieShjb21waWxlX3dpdGhfcmVn cysweDgwKSBbMHhhYWFhZDAyOGJmODRdIHNyYy9iYWNrZW5kL2FybTY0L21vZC5yczoxMTA2DQ0K L3J1YnkvbWluaXJ1YnkoY29tcGlsZSsweGM0KSBbMHhhYWFhZDAyOTFhZTBdIHNyYy9iYWNrZW5k L2lyLnJzOjExNTgNDQovcnVieS9taW5pcnVieShnZW5fc2luZ2xlX2Jsb2NrKzB4ZTQ0KSBbMHhh YWFhZDAyYjFmODhdIHNyYy9jb2RlZ2VuLnJzOjg1NA0NCi9ydWJ5L21pbmlydWJ5KGdlbl9ibG9j a19zZXJpZXNfYm9keSsweDljKSBbMHhhYWFhZDAzYjAyNTBdIHNyYy9jb3JlLnJzOjE2OTgNDQov cnVieS9taW5pcnVieShnZW5fYmxvY2tfc2VyaWVzKzB4NTApIFsweGFhYWFkMDNiMDEwMF0gc3Jj L2NvcmUucnM6MTY3Ng0NCi9ydWJ5L21pbmlydWJ5KGJyYW5jaF9zdHViX2hpdF9ib2R5KzB4ODBj KSBbMHhhYWFhZDAzYjFmNjhdIHNyYy9jb3JlLnJzOjIwMjENDQovcnVieS9taW5pcnVieSh7Y2xv c3VyZSMwfSsweDI4KSBbMHhhYWFhZDAyZWI4NmNdIHNyYy9jb3JlLnJzOjE5MjQNDQovcnVieS9t aW5pcnVieShkb19jYWxsPHlqaXQ6OmNvcmU6OmJyYW5jaF9zdHViX2hpdDo6e2Nsb3N1cmVfZW52 IzB9LCAqY29uc3QgdTg+KzB4OTgpIFsweGFhYWFkMDM1YmEzY10gL3J1c3RjLzg5N2UzNzU1M2Ji YThiNDI3NTFjNjc2NTg5Njc4ODlkMTFlY2QxMjAvbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5y czo0OTINDQpbMHhhYWFhZDAzNWM5YjRdDQ0KYGBgDQ0KDQ0KKG4uYi4gLSBJIGNvbXBpbGVkIFJ1 Ynkgd2l0aCBgLWZhc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyDigJNyZHluYW1pYyDigJNnYCBp biBjZmxhZ3MgdG8gbWFrZSBzdXJlIGdjYyBnZW5lcmF0ZXMgYXBwcm9wcmlhdGUgdW53aW5kIGlu Zm8gJiBrZWVwcyB0aGUgc3ltYm9sIHRhYmxlcykuDQ0KDQ0KTGlrZXdpc2UsIGlmIHlvdSBhdHRh Y2ggZ2RiIHRvIGEgUnVieSBwcm9jZXNzIHdpdGggeWppdCBlbmFibGVkLCBnZGIgY2FuJ3Qgc2hv dyB0aHJlYWQgYmFja3RyYWNlcyB0aHJvdWdoIHlqaXQtZ2VuZXJhdGVkIGNvZGUgZWl0aGVyLg0N Cg0NCk15IHByb3Bvc2FsIGlzIHRoYXQgWUpJVCBnZW5lcmF0ZSBzdWZmaWNpZW50IHVud2luZGlu ZyBhbmQgZGVidWcgaW5mb3JtYXRpb24gb24gYWxsIHBsYXRmb3JtcyB0byBhbGxvdyBib3RoIGBy Yl9wcmludF9iYWNrdHJhY2UoKWAgYW5kIHRoZSBwbGF0Zm9ybSdzIGRlYnVnZ2VyIChnZGIvbGxk Yi9XaW5EYmcpIHRvIHNob3c6DQ0KDQ0KKiBGdWxsIHN0YWNrIHRyYWNlcyBhbGwgdGhlIHdheSBi YWNrIHRvIGBtYWluYC4gVGhhdCBpcywgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHNlZSBmcmFt ZXMgX3VuZGVybmVhdGhfIGBbMHhhYWFhZDAzNWM5YjRdYCBmcm9tIHRoZSBiYWNrdHJhY2UgYWJv dmUuDQ0KKiBOYW1lcyBmb3IgdGhlIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCB5aml0IGJsb2NrcyAo ZS5nLiBpbnN0ZWFkIG9mIGBbMHhhYWFhZDAzNWM5YjRdYCwgd2Ugc2hvdWxkIHNlZSBzb21ldGhp bmcgbGlrZSBgeWppdCQkbmFtZV9vZl9ydWJ5X21ldGhvZGAsIHdoZXJlIGBuYW1lX29mX3J1Ynlf bWV0aG9kYCBpcyB0aGUgYGxhYmVsYCBmb3IgdGhlIGlzZXEgdGhpcyBpcyBKSVQnZCBjb2RlIGZv cikuDQ0KDQ0KIyMgTW90aXZhdGlvbg0NCg0NCkkgaGF2ZSBhIGZldyBtb3RpdmF0aW9ucyBmb3Ig d2FudGluZyB0aGlzLiBGaXJzdGx5LCBJIGZlZWwgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGluZGVw ZW5kZW50bHkgdXNlZnVsLiBXaGVuIFJ1YnkgY3Jhc2hlcywgdGhlIG1vcmUgaW5mb3JtYXRpb24g d2UgY2FuIGdldCwgdGhlIG1vcmUgbGlrZWx5IHdlIGFyZSB0byBmaW5kIHRoZSByb290IGNhdXNl LiBMaWtld2lzZSwgdGhlIHNhbWUgcHJpbmNpcGxlIGFwcGxpZXMgdG8gZGVidWdnaW5nIHdpdGgg Z2RiIC0geW91IGNhbiBnZXQgYSBmdWxsZXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoZSBwcm9j ZXNzIGlzIGRvaW5nIGlmIHlvdSBzZWUgdGhlIHdob2xlIHN0YWNrLg0NCg0NCkkgaGF2ZSBvZnRl biBmb3VuZCBhdHRhY2hpbmcgZ2RiIHRvIHRoZSBSdWJ5IGludGVycHJldGVyIGhlbHBzIGluIHVu ZGVyc3RhbmRpbmcgcHJvYmxlbXMgaW4gUnVieSBjb2RlIG9yIEMgZXh0ZW5zaW9ucyBhbmQgaXMg c29tZXRoaW5nIEkgZG8gcmVsYXRpdmVseSBmcmVxdWVudGx5OyB5aml0IGJyZWFraW5nIHRoYXQg d2lsbCBkZWZpbml0ZWx5IGJlIGluY29udmVuaWVudCBmb3IgbWUhDQ0KDQ0KIyMgSW1wbGVtZW50 YXRpb24NDQoNDQpJIGhhdmUgYSBkcmFmdCBpbXBsZW1lbnRhdGlvbiBoZXJlIG9uIGhvdyBJJ2Qg aW1wbGVtZW50IHRoaXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC83NTY3LiBJ dCdzIGN1cnJlbnRseSBtaXNzaW5nIHRlc3RzICYgcGxhdGZvcm0gc3VwcG9ydCAoaXQgb25seSB3 b3JrcyBvbiBMaW51eCBhYXJjaDY0KS4gQWxzbywgaXQgaW1wbGVtZW50cyB1bndpbmQgaW5mbyBn ZW5lcmF0aW9uLCBzbyB1bndpbmRpbmcgY2FuIHdvcmsgX3Rocm91Z2hfIHlqaXQgY29kZSwgYnV0 IGl0IGRvZXMgbm90IGN1cnJlbnRseSBlbWl0IHN5bWJvbHMgdG8gZ2l2ZSBfbmFtZXNfIHRvIHRo b3NlIHlqaXQgZnJhbWVzLg0NCg0NCk15IFBSIGNvbnRhaW5zIGEgZG9jdW1lbnQgd2hpY2ggZXhw bGFpbnMgaG93IHRoZSBMaW51eCBpbnRlcmZhY2VzIGZvciByZWdpc3RlcmluZyB1bndpbmQgaW5m byBmb3IgSklUJ2QgY29kZSB3b3JrLCBzbyBJIHdvbid0IGR1cGxpY2F0ZSB0aGF0IGluZm9ybWF0 aW9uIGhlcmUuDQ0KDQ0KVGhlIGJpZ2dlc3QgaW1wbGVtZW50YXRpb24gcXVlc3Rpb24gSSBoYWQg aXMgYXJvdW5kIHRoZSB1c2Ugb2YgUnVzdCBjcmF0ZXMuIEN1cnJlbnRseSwgSSBwcm90b3R5cGVk IG15IGltcGxlbWVudGF0aW9uIHVzaW5nIHRoZSBnaW1saSAmIG9iamVjdCBjcmF0ZXMsIGZvciBn ZW5lcmF0aW5nIERXQVJGIGluZm8gYW5kIEVMRiBiaW5hcmllcy4gSG93ZXZlciwgdGhlIHlqaXQg YnVpbGQgZG9lcyBwdXJwb3NlZnVsbHkgZG9lcyBub3QgdXNlIGNhcmdvICYgZXh0ZXJuYWwgY3Jh dGVzIGZvciByZWxlYXNlIGJ1aWxkcy4gVGhlcmUgYXJlIGEgZmV3IGRpZmZlcmVudCB3YXlzIHdl IGNvdWxkIGdvIGhlcmU6DQ0KDQ0KKiBEb24ndCB1c2UgdGhlIGdpbWxpICYgb2JqZWN0IGNyYXRl czsgaW5zdGVhZCwgcmUtaW1wbGVtZW50IGFsbCBkZWJ1ZyBpbmZvICYgb2JqZWN0IGZpbGUgZ2Vu ZXJhdGlvbiBjb2RlIGluIHlqaXQuDQ0KKiBEb24ndCB1c2UgdGhlIGNyYXRlczsgaW5zdGVhZCwg bGluayBhZ2FpbnQgQyBsaWJyYXJpZXMgdG8gcHJvdmlkZSB0aGlzIGZ1bmN0aW9uYWxpdHkgJiBj YWxsIHRoZW0gZnJvbSBSdXN0IChwZXJoYXBzIHNvbWUgY29tYmluYXRpb24gb2YgbGliZWxmLCBs aWJkdywgbGliYmZkLCBvciBsbHZtIG1pZ2h0IGRvIHdoYXQgd2UgbmVlZCkNDQoqIFVzZSBjYXJn byBhZnRlciBhbGwgZm9yIHRoZSByZWxlYXNlIGJ1aWxkICYgZG93bmxvYWQgdGhlIGNyYXRlcyBh dCBidWlsZC10aW1lDQ0KKiBVc2UgY2FyZ28gZm9yIHRoZSByZWxlYXNlIGJ1aWxkLCBidXQgdmVu ZG9yIGV2ZXJ5dGhpbmcsIHNvIHRoZSBidWlsZCBkb2Vzbid0IG5lZWQgdG8gZG93bmxvYWQgYW55 dGhpbmcNDQoqIE9ubHkgbWFrZSB1bndpbmQgaW5mbyBnZW5lcmF0aW9uIGF2YWlsYWJsZSBpbiBk ZXYgbW9kZSB3aGVyZSBjYXJnbyBpcyB1c2VkLCBhbmQgc28gbWFyayB0aGUgZ2ltbGkvb2JqZWN0 IGRlcGVuZGVuY2llcyBhcyBvcHRpb25hbCBpbiBDYXJnby50b21sLg0NCg0NCldlJ2QgbmVlZCB0 byBkZWNpZGUgb24gb25lIG9mIHRoZXNlIGFwcHJvYWNoZXMgZm9yIHRoaXMgcHJvcG9zYWwgdG8g d29yay4gSSBkb24ndCByZWFsbHkgaGF2ZSBhIHN0cm9uZyBzZW5zZSBvZiB0aGUgcHJvcy9jb25z IG9mIGVhY2guDQ0KDQ0KKFNpZGUgbm90ZSAtIG15IFBSIGFjdHVhbGx5IGRlcGVuZHMgb24gYSBf Zm9ya18gb2YgZ2ltbGkgLSBJJ3ZlIGJlZW4gZGlzY3Vzc2luZyBhZGRpbmcgdGhlIG5lZWRlZCBp bnRlcmZhY2VzIHVwc3RyZWFtIGhlcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9naW1saS1ycy9naW1s aS9pc3N1ZXMvNjQ4KS4NDQoNDQojIyBCZW5jaG1hcmtzDQ0KDQ0KSSByYW4gdGhlIHlpdC1iZW5j aCBzdWl0ZSBvbiBteSBicmFuY2ggYW5kIGNvbXBhcmVkIGl0IHRvIFJ1YnkgbWFzdGVyOg0NCg0N CiogTXkgYnJhbmNoOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9LSlRzYW5ha3RzaWRpcy81NzQx YTlmNjRlNWNkNzVjZGY1ZmVkZDg0NjA5MWE0Zg0NCiogUnVieSBtYXN0ZXI6IGh0dHBzOi8vZ2lz dC5naXRodWIuY29tL0tKVHNhbmFrdHNpZGlzLzU5MmQzZWJjZjk4ZjY3NDVkZmEzZWZiZDMwYTI1 YWNmDQ0KDQ0KVGhpcyBpcyBhICh2ZXJ5IHNpbXBsZSkgY29tcGFyaXNvbjoNDQoNDQpgYGANDQot LS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLQ0N CmJlbmNoICAgICAgICAgIHlqaXQgKG1zKSAgICBicmFuY2ggKG1zKSAgYnJhbmNoL3lqaXQgKCUp DQ0KYWN0aXZlcmVjb3JkICAgOTcuNSAgICAgICAgIDk4LjUgICAgICAgICAxMDEuMDMlDQ0KaGV4 YXBkZiAgICAgICAgMjQxNS4zICAgICAgIDI0NTguMiAgICAgICAxMDEuNzglDQ0KbGlxdWlkLWMg ICAgICAgNjEuOSAgICAgICAgIDYzLjEgICAgICAgICAxMDEuOTQlDQ0KbGlxdWlkLXJlbmRlciAg MTM1LjMgICAgICAgIDEzNS4wICAgICAgICA5OS43OCUNDQptYWlsICAgICAgICAgICAxMDQuNiAg ICAgICAgMTA1LjUgICAgICAgIDEwMC44NiUNDQpwc3ljaC1sb2FkICAgICAxODg3LjEgICAgICAg MTkyMi4wICAgICAgIDEwMS44NSUNDQpyYWlsc2JlbmNoICAgICAxNTQ0LjQgICAgICAgMTU1Ni4w ICAgICAgIDEwMC43NSUNDQpydWJ5LWxzcCAgICAgICA4OC40ICAgICAgICAgODkuNSAgICAgICAg IDEwMS4yNCUNDQpzZXF1ZWwgICAgICAgICAxNDcuNSAgICAgICAgMTUxLjEgICAgICAgIDEwMi40 NCUNDQpiaW5hcnl0cmVlcyAgICAzMDMgICAgICAgICAgMzA1LjYgICAgICAgIDEwMC44NiUNDQpj aHVua3lfcG5nICAgICAxMDc1LjggICAgICAgMTA3OS40ICAgICAgIDEwMC4zMyUNDQplcnViaSAg ICAgICAgICAzOTIuOSAgICAgICAgMzkyLjMgICAgICAgIDk5Ljg1JQ0NCmVydWJpX3JhaWxzICAg IDE0LjcgICAgICAgICAxNC43ICAgICAgICAgMTAwLjAwJQ0NCmV0YW5uaSAgICAgICAgIDc5Mi4z ICAgICAgICA3OTEuNCAgICAgICAgOTkuODklDQ0KZmFubmt1Y2hyZWR1eCAgMzgxNS45ICAgICAg IDM4MTMuNiAgICAgICA5OS45NCUNDQpsZWUgICAgICAgICAgICAxMDMwLjIgICAgICAgMTAzOS4y ICAgICAgIDEwMC44NyUNDQpuYm9keSAgICAgICAgICA0OS4yICAgICAgICAgNDkuMyAgICAgICAg IDEwMC4yMCUNDQpvcHRjYXJyb3QgICAgICA0MTQyICAgICAgICAgNDE0My4zICAgICAgIDEwMC4w MyUNDQpydWJ5LWpzb24gICAgICAyODYwLjcgICAgICAgMjg3NC4wICAgICAgIDEwMC40NiUNDQpy dWJ5a29uICAgICAgICA3OTA2LjYgICAgICAgNzkwNC4yICAgICAgIDk5Ljk3JQ0NCjMwa19pZmVs c2UgICAgIDM0OC43ICAgICAgICAzNDUuNCAgICAgICAgOTkuMDUlDQ0KMzBrX21ldGhvZHMgICAg ODI4LjYgICAgICAgIDgzMS44ICAgICAgICAxMDAuMzklDQ0KY2Z1bmNfaXRzZWxmICAgMjguOCAg ICAgICAgIDI4LjkgICAgICAgICAxMDAuMzUlDQ0KZmliICAgICAgICAgICAgMzQuNCAgICAgICAg IDM0LjUgICAgICAgICAxMDAuMjklDQ0KZ2V0aXZhciAgICAgICAgMTE1LjUgICAgICAgIDEwOS43 ICAgICAgICA5NC45OCUNDQprZXl3b3JkX2FyZ3MgICAzNy43ICAgICAgICAgMzguMCAgICAgICAg IDEwMC44MCUNDQpyZXNwb25kX3RvICAgICAyNiAgICAgICAgICAgMjYuMSAgICAgICAgIDEwMC4z OCUNDQpzZXRpdmFyICAgICAgICAzMy44ICAgICAgICAgMzMuNSAgICAgICAgIDk5LjExJQ0NCnNl dGl2YXJfb2JqZWN0IDIwOC43ICAgICAgICAxOTQuMyAgICAgICAgOTMuMTAlDQ0Kc3RyX2NvbmNh dCAgICAgNTIuNiAgICAgICAgIDUyLjIgICAgICAgICA5OS4yNCUNDQp0aHJvdyAgICAgICAgICAy My44ICAgICAgICAgMjQuMSAgICAgICAgIDEwMS4yNiUNDQotLS0tLS0tLS0tLS0tLSAtLS0tLS0t LS0tLS0gLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLQ0NCmBgYA0NCg0NCkl0IHNlZW1zIGxp a2UgdGhlIHBlcmZvcm1hbmNlIGltcGFjdCBvZiBnZW5lcmF0aW5nIGFuZCByZWdpc3RlcmluZyB0 aGUgZGVidWcgaW5mbyBpcyBtYXJnaW5hbC4NDQoNDQoNDQoNDQotLSANDQpodHRwczovL2J1Z3Mu cnVieS1sYW5nLm9yZy8NDQogX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwogcnVieS1jb3JlIG1haWxpbmcgbGlzdCAtLSBydWJ5LWNvcmVAbWwucnVieS1sYW5n Lm9yZwogVG8gdW5zdWJzY3JpYmUgc2VuZCBhbiBlbWFpbCB0byBydWJ5LWNvcmUtbGVhdmVAbWwu cnVieS1sYW5nLm9yZwogcnVieS1jb3JlIGluZm8gLS0gaHR0cHM6Ly9tbC5ydWJ5LWxhbmcub3Jn L21haWxtYW4zL3Bvc3Rvcml1cy9saXN0cy9ydWJ5LWNvcmUubWwucnVieS1sYW5nLm9yZy8=