[ruby-core:115108] [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:39:30 UTC
List:
ruby-core #115108
SXNzdWUgIzE5NTQxIGhhcyBiZWVuIHVwZGF0ZWQgYnkgazBrdWJ1biAoVGFrYXNoaSBLb2t1YnVu KS4NDQoNDQoNDQo+IGIpIHVzZSB0aGUgcGVyZiBtYXAgZmlsZSBhcyBhIHNvdXJjZSBvZiBzeW1i b2xzLg0NCg0NClNvIHRoaXMgaXMgYSBwb3N0IEkgZm91bmQgd2l0aCBxdWljayBnb29nbGluZzog aHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDI3Mzk4OTMvZm9yY2UtZ2RiLXRv LXVzZS1mcmFtZS1wb2ludGVyLWJhc2VkLXVud2luZGluZw0NCg0NClRoZXkgc2F5IHlvdSBjYW4g YXQgbGVhc3QgZGVmaW5lIGEgcm91dGluZSBpbiBgfi8uZ2RiaW5pdGAgdGhhdCB1bndpbmRzIGZy YW1lcyB1c2luZyBmcmFtZSBwb2ludGVycywgd2hpY2ggc2VlbXMgdG8gaGVscC4NDQoNDQpJdCBh bHNvIHNheXM6DQ0KDQ0KPiB3aXRoIG90aGVyIHR5cGVzIG9mIGRlYnVnIGluZm8gc3VjaCBhcyAu ZGVidWdfaW5mby4gQXBwYXJlbnRseSB0aGlzIHRyaWdnZXJzIGdkYiB0byBzdG9wIHVzaW5nIGZy YW1lLXBvaW50ZXIgKHJicCkgYmFzZWQgdW53aW5kaW5nIGZvciBhbnkgZnVuY3Rpb25zIGZyb20g dGhhdCBvYmplY3QNDQoNDQpKSVQgY29kZSBpcyBub3QgZnVuY3Rpb25zIGZyb20gYW4gb2JqZWN0 IHdpdGggZGVidWcgaW5mby4gU28gR0RCIG1pZ2h0IGNob29zZSB0byB1c2UgZnJhbWUgcG9pbnRl cnMgZm9yIEpJVCBmcmFtZXM/DQ0KDQ0KQWxzbywgaXQncyBraW5kIG9mIGhhcmQgZm9yIG1lIHRv IHRlc3QgdGhlIGJlaGF2aW9yIG9mIEdEQiBzaW5jZSBpdCAic29tZXRpbWVzIiB1bndpbmRzIGEg YmFja3RyYWNlIGJleW9uZCBZSklUIGZyYW1lcyBzdWNjZXNzZnVsbHkuIFJpZ2h0IG5vdywgSSdt IG5vdCBzdXJlIHdoZW4gaXQgc3VjY2VlZHMgYW5kIHdoZW4gaXQgZmFpbHMuDQ0KDQ0KLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NCkZlYXR1cmUgIzE5NTQxOiBQcm9w b3NhbDogR2VuZXJhdGUgZnJhbWUgdW53aW5kaW5nIGluZm8gZm9yIFlKSVQgY29kZQ0NCmh0dHBz Oi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xOTU0MSNjaGFuZ2UtMTA1MDE1DQ0KDQ0KKiBB dXRob3I6IGtqdHNhbmFrdHNpZGlzIChLSiBUc2FuYWt0c2lkaXMpDQ0KKiBTdGF0dXM6IEZlZWRi YWNrDQ0KKiBQcmlvcml0eTogTm9ybWFsDQ0KKiBBc3NpZ25lZTogeWppdA0NCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NDQojIyBXaGF0IGlzIGJlaW5nIHByb3BzZWQ/ DQ0KDQ0KQ3VycmVudGx5LCB3aGVuIFJ1YnkgY3Jhc2hlcyB3aXRoIHlqaXQgZ2VuZXJhdGVkIGNv ZGUgb24gdGhlIHN0YWNrLCBgcmJfcHJpbnRfYmFja3RyYWNlKClgIGlzIHVuYWJsZSB0byBhY3R1 YWxseSBzaG93IGFueSBmcmFtZXMgdW5kZXJuZWF0aCB0aGUgeWppdCBjb2RlLiBGb3IgZXhhbXBs ZSwgaWYgeW91IHNlbmQgU0lHU0VHViB0byBhIFJ1YnkgcHJvY2VzcyBydW5uaW5nIHlqaXQsIHRo aXMgaXMgd2hhdCB5b3Ugc2VlOg0NCg0NCmBgYA0NCi9ydWJ5L21pbmlydWJ5KHJiX3ByaW50X2Jh Y2t0cmFjZSsweGMpIFsweGFhYWFkMDI3Njg4NF0gL3J1Ynkvdm1fZHVtcC5jOjc4NQ0NCi9ydWJ5 L21pbmlydWJ5KHJiX3ZtX2J1Z3JlcG9ydCkgL3J1Ynkvdm1fZHVtcC5jOjEwOTMNDQovcnVieS9t aW5pcnVieShyYl9idWdfZm9yX2ZhdGFsX3NpZ25hbCsweGQwKSBbMHhhYWFhZDAwNzU1ODBdIC9y dWJ5L2Vycm9yLmM6ODEzDQ0KL3J1YnkvbWluaXJ1Ynkoc2lnc2VndisweDVjKSBbMHhhYWFhZDAx YmVkYWNdIC9ydWJ5L3NpZ25hbC5jOjkxOQ0NCmxpbnV4LXZkc28uc28uMShfX2tlcm5lbF9ydF9z aWdyZXR1cm4rMHgwKSBbMHhmZmZmOTFhM2U4YmNdDQ0KL3J1YnkvbWluaXJ1YnkobWFwPCh1c2l6 ZSwgeWppdDo6YmFja2VuZDo6aXI6Okluc24pLCAodXNpemUsIHlqaXQ6OmJhY2tlbmQ6OmlyOjpJ bnNuKSwgeWppdDo6YmFja2VuZDo6aXI6OntpbXBsIzE3fTo6bmV4dF9tYXBwZWQ6OntjbG9zdXJl X2VudiMwfT4rMHg4YykgWzB4YWFhYWQwM2I4YjAwXSAvcnVzdGMvODk3ZTM3NTUzYmJhOGI0Mjc1 MWM2NzY1ODk2Nzg4OWQxMWVjZDEyMC9saWJyYXJ5L2NvcmUvc3JjL29wdGlvbi5yczo5MjkNDQov cnVieS9taW5pcnVieShuZXh0X21hcHBlZCsweDNjKSBbMHhhYWFhZDAyOTFkYzBdIHNyYy9iYWNr ZW5kL2lyLnJzOjEyMjUNDQovcnVieS9taW5pcnVieShhcm02NF9zcGxpdCsweDExNCkgWzB4YWFh YWQwMjg3NzQ0XSBzcmMvYmFja2VuZC9hcm02NC9tb2QucnM6MzU5DQ0KL3J1YnkvbWluaXJ1Ynko Y29tcGlsZV93aXRoX3JlZ3MrMHg4MCkgWzB4YWFhYWQwMjhiZjg0XSBzcmMvYmFja2VuZC9hcm02 NC9tb2QucnM6MTEwNg0NCi9ydWJ5L21pbmlydWJ5KGNvbXBpbGUrMHhjNCkgWzB4YWFhYWQwMjkx YWUwXSBzcmMvYmFja2VuZC9pci5yczoxMTU4DQ0KL3J1YnkvbWluaXJ1YnkoZ2VuX3NpbmdsZV9i bG9jaysweGU0NCkgWzB4YWFhYWQwMmIxZjg4XSBzcmMvY29kZWdlbi5yczo4NTQNDQovcnVieS9t aW5pcnVieShnZW5fYmxvY2tfc2VyaWVzX2JvZHkrMHg5YykgWzB4YWFhYWQwM2IwMjUwXSBzcmMv Y29yZS5yczoxNjk4DQ0KL3J1YnkvbWluaXJ1YnkoZ2VuX2Jsb2NrX3NlcmllcysweDUwKSBbMHhh YWFhZDAzYjAxMDBdIHNyYy9jb3JlLnJzOjE2NzYNDQovcnVieS9taW5pcnVieShicmFuY2hfc3R1 Yl9oaXRfYm9keSsweDgwYykgWzB4YWFhYWQwM2IxZjY4XSBzcmMvY29yZS5yczoyMDIxDQ0KL3J1 YnkvbWluaXJ1Ynkoe2Nsb3N1cmUjMH0rMHgyOCkgWzB4YWFhYWQwMmViODZjXSBzcmMvY29yZS5y czoxOTI0DQ0KL3J1YnkvbWluaXJ1YnkoZG9fY2FsbDx5aml0Ojpjb3JlOjpicmFuY2hfc3R1Yl9o aXQ6OntjbG9zdXJlX2VudiMwfSwgKmNvbnN0IHU4PisweDk4KSBbMHhhYWFhZDAzNWJhM2NdIC9y dXN0Yy84OTdlMzc1NTNiYmE4YjQyNzUxYzY3NjU4OTY3ODg5ZDExZWNkMTIwL2xpYnJhcnkvc3Rk L3NyYy9wYW5pY2tpbmcucnM6NDkyDQ0KWzB4YWFhYWQwMzVjOWI0XQ0NCmBgYA0NCg0NCihuLmIu IC0gSSBjb21waWxlZCBSdWJ5IHdpdGggYC1mYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMg4oCT cmR5bmFtaWMg4oCTZ2AgaW4gY2ZsYWdzIHRvIG1ha2Ugc3VyZSBnY2MgZ2VuZXJhdGVzIGFwcHJv cHJpYXRlIHVud2luZCBpbmZvICYga2VlcHMgdGhlIHN5bWJvbCB0YWJsZXMpLg0NCg0NCkxpa2V3 aXNlLCBpZiB5b3UgYXR0YWNoIGdkYiB0byBhIFJ1YnkgcHJvY2VzcyB3aXRoIHlqaXQgZW5hYmxl ZCwgZ2RiIGNhbid0IHNob3cgdGhyZWFkIGJhY2t0cmFjZXMgdGhyb3VnaCB5aml0LWdlbmVyYXRl ZCBjb2RlIGVpdGhlci4NDQoNDQpNeSBwcm9wb3NhbCBpcyB0aGF0IFlKSVQgZ2VuZXJhdGUgc3Vm ZmljaWVudCB1bndpbmRpbmcgYW5kIGRlYnVnIGluZm9ybWF0aW9uIG9uIGFsbCBwbGF0Zm9ybXMg dG8gYWxsb3cgYm90aCBgcmJfcHJpbnRfYmFja3RyYWNlKClgIGFuZCB0aGUgcGxhdGZvcm0ncyBk ZWJ1Z2dlciAoZ2RiL2xsZGIvV2luRGJnKSB0byBzaG93Og0NCg0NCiogRnVsbCBzdGFjayB0cmFj ZXMgYWxsIHRoZSB3YXkgYmFjayB0byBgbWFpbmAuIFRoYXQgaXMsIGl0IHNob3VsZCBiZSBwb3Nz aWJsZSB0byBzZWUgZnJhbWVzIF91bmRlcm5lYXRoXyBgWzB4YWFhYWQwMzVjOWI0XWAgZnJvbSB0 aGUgYmFja3RyYWNlIGFib3ZlLg0NCiogTmFtZXMgZm9yIHRoZSBkeW5hbWljYWxseSBnZW5lcmF0 ZWQgeWppdCBibG9ja3MgKGUuZy4gaW5zdGVhZCBvZiBgWzB4YWFhYWQwMzVjOWI0XWAsIHdlIHNo b3VsZCBzZWUgc29tZXRoaW5nIGxpa2UgYHlqaXQkJG5hbWVfb2ZfcnVieV9tZXRob2RgLCB3aGVy ZSBgbmFtZV9vZl9ydWJ5X21ldGhvZGAgaXMgdGhlIGBsYWJlbGAgZm9yIHRoZSBpc2VxIHRoaXMg aXMgSklUJ2QgY29kZSBmb3IpLg0NCg0NCiMjIE1vdGl2YXRpb24NDQoNDQpJIGhhdmUgYSBmZXcg bW90aXZhdGlvbnMgZm9yIHdhbnRpbmcgdGhpcy4gRmlyc3RseSwgSSBmZWVsIHRoaXMgZnVuY3Rp b25hbGl0eSBpcyBpbmRlcGVuZGVudGx5IHVzZWZ1bC4gV2hlbiBSdWJ5IGNyYXNoZXMsIHRoZSBt b3JlIGluZm9ybWF0aW9uIHdlIGNhbiBnZXQsIHRoZSBtb3JlIGxpa2VseSB3ZSBhcmUgdG8gZmlu ZCB0aGUgcm9vdCBjYXVzZS4gTGlrZXdpc2UsIHRoZSBzYW1lIHByaW5jaXBsZSBhcHBsaWVzIHRv IGRlYnVnZ2luZyB3aXRoIGdkYiAtIHlvdSBjYW4gZ2V0IGEgZnVsbGVyIHVuZGVyc3RhbmRpbmcg b2Ygd2hhdCB0aGUgcHJvY2VzcyBpcyBkb2luZyBpZiB5b3Ugc2VlIHRoZSB3aG9sZSBzdGFjay4N DQoNDQpJIGhhdmUgb2Z0ZW4gZm91bmQgYXR0YWNoaW5nIGdkYiB0byB0aGUgUnVieSBpbnRlcnBy ZXRlciBoZWxwcyBpbiB1bmRlcnN0YW5kaW5nIHByb2JsZW1zIGluIFJ1YnkgY29kZSBvciBDIGV4 dGVuc2lvbnMgYW5kIGlzIHNvbWV0aGluZyBJIGRvIHJlbGF0aXZlbHkgZnJlcXVlbnRseTsgeWpp dCBicmVha2luZyB0aGF0IHdpbGwgZGVmaW5pdGVseSBiZSBpbmNvbnZlbmllbnQgZm9yIG1lIQ0N Cg0NCiMjIEltcGxlbWVudGF0aW9uDQ0KDQ0KSSBoYXZlIGEgZHJhZnQgaW1wbGVtZW50YXRpb24g aGVyZSBvbiBob3cgSSdkIGltcGxlbWVudCB0aGlzOiBodHRwczovL2dpdGh1Yi5jb20vcnVieS9y dWJ5L3B1bGwvNzU2Ny4gSXQncyBjdXJyZW50bHkgbWlzc2luZyB0ZXN0cyAmIHBsYXRmb3JtIHN1 cHBvcnQgKGl0IG9ubHkgd29ya3Mgb24gTGludXggYWFyY2g2NCkuIEFsc28sIGl0IGltcGxlbWVu dHMgdW53aW5kIGluZm8gZ2VuZXJhdGlvbiwgc28gdW53aW5kaW5nIGNhbiB3b3JrIF90aHJvdWdo XyB5aml0IGNvZGUsIGJ1dCBpdCBkb2VzIG5vdCBjdXJyZW50bHkgZW1pdCBzeW1ib2xzIHRvIGdp dmUgX25hbWVzXyB0byB0aG9zZSB5aml0IGZyYW1lcy4NDQoNDQpNeSBQUiBjb250YWlucyBhIGRv Y3VtZW50IHdoaWNoIGV4cGxhaW5zIGhvdyB0aGUgTGludXggaW50ZXJmYWNlcyBmb3IgcmVnaXN0 ZXJpbmcgdW53aW5kIGluZm8gZm9yIEpJVCdkIGNvZGUgd29yaywgc28gSSB3b24ndCBkdXBsaWNh dGUgdGhhdCBpbmZvcm1hdGlvbiBoZXJlLg0NCg0NClRoZSBiaWdnZXN0IGltcGxlbWVudGF0aW9u IHF1ZXN0aW9uIEkgaGFkIGlzIGFyb3VuZCB0aGUgdXNlIG9mIFJ1c3QgY3JhdGVzLiBDdXJyZW50 bHksIEkgcHJvdG90eXBlZCBteSBpbXBsZW1lbnRhdGlvbiB1c2luZyB0aGUgZ2ltbGkgJiBvYmpl Y3QgY3JhdGVzLCBmb3IgZ2VuZXJhdGluZyBEV0FSRiBpbmZvIGFuZCBFTEYgYmluYXJpZXMuIEhv d2V2ZXIsIHRoZSB5aml0IGJ1aWxkIGRvZXMgcHVycG9zZWZ1bGx5IGRvZXMgbm90IHVzZSBjYXJn byAmIGV4dGVybmFsIGNyYXRlcyBmb3IgcmVsZWFzZSBidWlsZHMuIFRoZXJlIGFyZSBhIGZldyBk aWZmZXJlbnQgd2F5cyB3ZSBjb3VsZCBnbyBoZXJlOg0NCg0NCiogRG9uJ3QgdXNlIHRoZSBnaW1s aSAmIG9iamVjdCBjcmF0ZXM7IGluc3RlYWQsIHJlLWltcGxlbWVudCBhbGwgZGVidWcgaW5mbyAm IG9iamVjdCBmaWxlIGdlbmVyYXRpb24gY29kZSBpbiB5aml0Lg0NCiogRG9uJ3QgdXNlIHRoZSBj cmF0ZXM7IGluc3RlYWQsIGxpbmsgYWdhaW50IEMgbGlicmFyaWVzIHRvIHByb3ZpZGUgdGhpcyBm dW5jdGlvbmFsaXR5ICYgY2FsbCB0aGVtIGZyb20gUnVzdCAocGVyaGFwcyBzb21lIGNvbWJpbmF0 aW9uIG9mIGxpYmVsZiwgbGliZHcsIGxpYmJmZCwgb3IgbGx2bSBtaWdodCBkbyB3aGF0IHdlIG5l ZWQpDQ0KKiBVc2UgY2FyZ28gYWZ0ZXIgYWxsIGZvciB0aGUgcmVsZWFzZSBidWlsZCAmIGRvd25s b2FkIHRoZSBjcmF0ZXMgYXQgYnVpbGQtdGltZQ0NCiogVXNlIGNhcmdvIGZvciB0aGUgcmVsZWFz ZSBidWlsZCwgYnV0IHZlbmRvciBldmVyeXRoaW5nLCBzbyB0aGUgYnVpbGQgZG9lc24ndCBuZWVk IHRvIGRvd25sb2FkIGFueXRoaW5nDQ0KKiBPbmx5IG1ha2UgdW53aW5kIGluZm8gZ2VuZXJhdGlv biBhdmFpbGFibGUgaW4gZGV2IG1vZGUgd2hlcmUgY2FyZ28gaXMgdXNlZCwgYW5kIHNvIG1hcmsg dGhlIGdpbWxpL29iamVjdCBkZXBlbmRlbmNpZXMgYXMgb3B0aW9uYWwgaW4gQ2FyZ28udG9tbC4N DQoNDQpXZSdkIG5lZWQgdG8gZGVjaWRlIG9uIG9uZSBvZiB0aGVzZSBhcHByb2FjaGVzIGZvciB0 aGlzIHByb3Bvc2FsIHRvIHdvcmsuIEkgZG9uJ3QgcmVhbGx5IGhhdmUgYSBzdHJvbmcgc2Vuc2Ug b2YgdGhlIHByb3MvY29ucyBvZiBlYWNoLg0NCg0NCihTaWRlIG5vdGUgLSBteSBQUiBhY3R1YWxs eSBkZXBlbmRzIG9uIGEgX2ZvcmtfIG9mIGdpbWxpIC0gSSd2ZSBiZWVuIGRpc2N1c3NpbmcgYWRk aW5nIHRoZSBuZWVkZWQgaW50ZXJmYWNlcyB1cHN0cmVhbSBoZXJlOiBodHRwczovL2dpdGh1Yi5j b20vZ2ltbGktcnMvZ2ltbGkvaXNzdWVzLzY0OCkuDQ0KDQ0KIyMgQmVuY2htYXJrcw0NCg0NCkkg cmFuIHRoZSB5aXQtYmVuY2ggc3VpdGUgb24gbXkgYnJhbmNoIGFuZCBjb21wYXJlZCBpdCB0byBS dWJ5IG1hc3RlcjoNDQoNDQoqIE15IGJyYW5jaDogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vS0pU c2FuYWt0c2lkaXMvNTc0MWE5ZjY0ZTVjZDc1Y2RmNWZlZGQ4NDYwOTFhNGYNDQoqIFJ1YnkgbWFz dGVyOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9LSlRzYW5ha3RzaWRpcy81OTJkM2ViY2Y5OGY2 NzQ1ZGZhM2VmYmQzMGEyNWFjZg0NCg0NClRoaXMgaXMgYSAodmVyeSBzaW1wbGUpIGNvbXBhcmlz b246DQ0KDQ0KYGBgDQ0KLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLSAt LS0tLS0tLS0tLS0tLS0NDQpiZW5jaCAgICAgICAgICB5aml0IChtcykgICAgYnJhbmNoIChtcykg IGJyYW5jaC95aml0ICglKQ0NCmFjdGl2ZXJlY29yZCAgIDk3LjUgICAgICAgICA5OC41ICAgICAg ICAgMTAxLjAzJQ0NCmhleGFwZGYgICAgICAgIDI0MTUuMyAgICAgICAyNDU4LjIgICAgICAgMTAx Ljc4JQ0NCmxpcXVpZC1jICAgICAgIDYxLjkgICAgICAgICA2My4xICAgICAgICAgMTAxLjk0JQ0N CmxpcXVpZC1yZW5kZXIgIDEzNS4zICAgICAgICAxMzUuMCAgICAgICAgOTkuNzglDQ0KbWFpbCAg ICAgICAgICAgMTA0LjYgICAgICAgIDEwNS41ICAgICAgICAxMDAuODYlDQ0KcHN5Y2gtbG9hZCAg ICAgMTg4Ny4xICAgICAgIDE5MjIuMCAgICAgICAxMDEuODUlDQ0KcmFpbHNiZW5jaCAgICAgMTU0 NC40ICAgICAgIDE1NTYuMCAgICAgICAxMDAuNzUlDQ0KcnVieS1sc3AgICAgICAgODguNCAgICAg ICAgIDg5LjUgICAgICAgICAxMDEuMjQlDQ0Kc2VxdWVsICAgICAgICAgMTQ3LjUgICAgICAgIDE1 MS4xICAgICAgICAxMDIuNDQlDQ0KYmluYXJ5dHJlZXMgICAgMzAzICAgICAgICAgIDMwNS42ICAg ICAgICAxMDAuODYlDQ0KY2h1bmt5X3BuZyAgICAgMTA3NS44ICAgICAgIDEwNzkuNCAgICAgICAx MDAuMzMlDQ0KZXJ1YmkgICAgICAgICAgMzkyLjkgICAgICAgIDM5Mi4zICAgICAgICA5OS44NSUN DQplcnViaV9yYWlscyAgICAxNC43ICAgICAgICAgMTQuNyAgICAgICAgIDEwMC4wMCUNDQpldGFu bmkgICAgICAgICA3OTIuMyAgICAgICAgNzkxLjQgICAgICAgIDk5Ljg5JQ0NCmZhbm5rdWNocmVk dXggIDM4MTUuOSAgICAgICAzODEzLjYgICAgICAgOTkuOTQlDQ0KbGVlICAgICAgICAgICAgMTAz MC4yICAgICAgIDEwMzkuMiAgICAgICAxMDAuODclDQ0KbmJvZHkgICAgICAgICAgNDkuMiAgICAg ICAgIDQ5LjMgICAgICAgICAxMDAuMjAlDQ0Kb3B0Y2Fycm90ICAgICAgNDE0MiAgICAgICAgIDQx NDMuMyAgICAgICAxMDAuMDMlDQ0KcnVieS1qc29uICAgICAgMjg2MC43ICAgICAgIDI4NzQuMCAg ICAgICAxMDAuNDYlDQ0KcnVieWtvbiAgICAgICAgNzkwNi42ICAgICAgIDc5MDQuMiAgICAgICA5 OS45NyUNDQozMGtfaWZlbHNlICAgICAzNDguNyAgICAgICAgMzQ1LjQgICAgICAgIDk5LjA1JQ0N CjMwa19tZXRob2RzICAgIDgyOC42ICAgICAgICA4MzEuOCAgICAgICAgMTAwLjM5JQ0NCmNmdW5j X2l0c2VsZiAgIDI4LjggICAgICAgICAyOC45ICAgICAgICAgMTAwLjM1JQ0NCmZpYiAgICAgICAg ICAgIDM0LjQgICAgICAgICAzNC41ICAgICAgICAgMTAwLjI5JQ0NCmdldGl2YXIgICAgICAgIDEx NS41ICAgICAgICAxMDkuNyAgICAgICAgOTQuOTglDQ0Ka2V5d29yZF9hcmdzICAgMzcuNyAgICAg ICAgIDM4LjAgICAgICAgICAxMDAuODAlDQ0KcmVzcG9uZF90byAgICAgMjYgICAgICAgICAgIDI2 LjEgICAgICAgICAxMDAuMzglDQ0Kc2V0aXZhciAgICAgICAgMzMuOCAgICAgICAgIDMzLjUgICAg ICAgICA5OS4xMSUNDQpzZXRpdmFyX29iamVjdCAyMDguNyAgICAgICAgMTk0LjMgICAgICAgIDkz LjEwJQ0NCnN0cl9jb25jYXQgICAgIDUyLjYgICAgICAgICA1Mi4yICAgICAgICAgOTkuMjQlDQ0K dGhyb3cgICAgICAgICAgMjMuOCAgICAgICAgIDI0LjEgICAgICAgICAxMDEuMjYlDQ0KLS0tLS0t LS0tLS0tLS0gLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0NDQpgYGAN DQoNDQpJdCBzZWVtcyBsaWtlIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3Qgb2YgZ2VuZXJhdGluZyBh bmQgcmVnaXN0ZXJpbmcgdGhlIGRlYnVnIGluZm8gaXMgbWFyZ2luYWwuDQ0KDQ0KDQ0KDQ0KLS0g DQ0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvDQ0KIF9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KIHJ1YnktY29yZSBtYWlsaW5nIGxpc3QgLS0gcnVieS1j b3JlQG1sLnJ1YnktbGFuZy5vcmcKIFRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwgdG8gcnVi eS1jb3JlLWxlYXZlQG1sLnJ1YnktbGFuZy5vcmcKIHJ1YnktY29yZSBpbmZvIC0tIGh0dHBzOi8v bWwucnVieS1sYW5nLm9yZy9tYWlsbWFuMy9wb3N0b3JpdXMvbGlzdHMvcnVieS1jb3JlLm1sLnJ1 YnktbGFuZy5vcmcv