[#97086] [Ruby master Bug#16612] Enumerator::ArithmeticSequence#last with float range produces incorrect value — muraken@...
Issue #16612 has been updated by mrkn (Kenta Murata).
4 messages
2020/02/07
[#97095] [PATCH] Modify shebang of libexec/y2racc and libexec/racc2y. — Wang Mingyu <wangmy@...>
change /usr/local/bin/ruby to /usr/bin/env ruby.
3 messages
2020/02/08
[#97307] [Ruby master Feature#16663] Add block or filtered forms of Kernel#caller to allow early bail-out — headius@...
Issue #16663 has been reported by headius (Charles Nutter).
29 messages
2020/02/28
[ruby-core:97244] [Ruby master Feature#16511] Staged warnings and better compatibility for keyword arguments in 2.7.1
From:
eregontp@...
Date:
2020-02-23 14:24:46 UTC
List:
ruby-core #97244
SXNzdWUgIzE2NTExIGhhcyBiZWVuIHVwZGF0ZWQgYnkgRXJlZ29uIChCZW5vaXQgRGFsb3plKS4N Cg0KDQpUaGFua3MgZm9yIHdyaXRpbmcgdGhhdCBvdXQuDQoNCkkgdGhpbmsgaW4gZ2VuZXJhbCB0 cmFja2luZyB3aGV0aGVyIGEgSGFzaCBpcyBrZXl3b3JkcyBvciBwb3NpdGlvbmFsIGR5bmFtaWNh bGx5IG1ha2VzIGV2ZXJ5dGhpbmcgY29tcGxpY2F0ZWQuDQpMb25nLXRlcm0sIEkgdGhpbmsgaXQn cyBjbGVhciB3ZSB3YW50IHRvIGtub3cgc3ludGFjdGljYWxseSB3aGV0aGVyIGEgSGFzaCBpcyBr ZXl3b3JkIGFyZ3VtZW50cyBvciBwb3NpdGlvbmFsLg0KQW55dGhpbmcgdGhhdCBnb2VzIGFnYWlu c3QgdGhhdCBsb25nIHRlcm0gSU1ITyBicmVha3MgdGhlIHNlcGFyYXRpb24gYW5kIG1ha2VzIHRo ZSBzZXBhcmF0aW9uIHByZXR0eSBtb290Lg0KSSB0aGluayBpdCdzIHZlcnkgaW1wb3J0YW50IHRv IGhhdmUgdGhhdCBzeW50YWN0aWNhbCBzZXBhcmF0aW9uLCBvdGhlcndpc2Ugb25lIGNhbm5vdCB1 bmRlcnN0YW5kIHRoZSBiZWhhdmlvciBvZiBjYWxsaW5nIGEgbWV0aG9kIGp1c3QgYmUgbG9va2lu ZyBhdCBjYWxsZXIgYW5kIGNhbGxlZSwgd2hpY2ggd291bGQgYmUgYSB2ZXJ5IGxhcmdlIGlzc3Vl IGZvciBub24tdHJpdmlhbCBjb2RlYmFzZXMuDQpGb3IgdGhhdCByZWFzb24sIEknbSBhZ2FpbnN0 IGFueXRoaW5nIG1vcmUgZHluYW1pYyB0aGFuIGluIDIuNy4wIGFuZCBgcnVieTJfa2V5d29yZHNg Lg0KDQpGcm9tIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBwcm9wb3NhbCwgaXQncyBtb3JlIGR5 bmFtaWMsIHNvIEknbSBhZ2FpbnN0IGl0Lg0KRGVzdHJ1Y3Rpb24gaXRlcmF0aW9uIGFzIHlvdSBw cm9wb3NlIHJlbGllcyBvbiBkeW5hbWljIHRyYWNraW5nIG9mIGtleXdvcmRzIHZzIHBvc2l0aW9u YWwsIHNvIGZvciBtZSB0aGF0J3MgYSBiaWcgbm8tbm8sIGFzIGl0IHdpbGwgaGF2ZSB0byBicmVh ayB0byBoYXZlIGEgc3ludGFjdGljYWwgc2VwYXJhdGlvbi4NCg0KVGhhdCdzIGFsc28gd2h5IEkg aGF2ZSBiZWVuIGFnYWluc3QgYHJ1YnkyX2tleXdvcmRzYCBmcm9tIHRoZSBzdGFydCwgYW5kIHdp c2ggd2Ugd291bGQgb25seSB1c2Ugc3ludGFjdGljIHdheXMgdG8gZGVsZWdhdGUgKGUuZy4sIG9u bHkgKmFyZ3MgaW4gdGhlIHNhbWUgbWV0aG9kcyBwYXNzZXMgdGhlIGt3YXJncyBhcy1pcywgb3Ig YC4uLmApLg0KSG93ZXZlciwgc2luY2UgYHJ1YnkyX2tleXdvcmRzYCBpcyB0aGVyZSBhbmQgaXQg c2VlbXMgdG8gYmUgdGhlIG9ubHkgcmVhc29uYWJsZSB3YXkgbm93IHRvIHByZXNlcnZlIGRlbGVn YXRpb24gaW4gMi43IChpbiB0ZXJtcyBvZiBhbW91bnQgb2YgY2hhbmdlcyBhbmQgcmlzayksDQpJ IHRoaW5rIGl0IG1ha2VzIHNlbnNlIHRvIGJlIHRoZSBkZWZhdWx0LCBzbyBgKmFyZ3NgLWRlbGVn YXRpb24gc3RpbGwgd29ya3MgYW5kIHRoZXJlIGlzIHN0aWxsIGFuIGludHVpdGl2ZSBzeW50YXgg dG8gZG8gZGVsZWdhdGlvbiBpbiBhIGNvbXBhdGlibGUgd2F5IHdpdGggZWFybGllciB2ZXJzaW9u cy4NCg0KYCphcmdzYCBpcyBub3QgcGVyZmVjdCBidXQgaXQncyB0aGUgYmVzdCBwYXR0ZXJuIHdl IGhhdmUgdG8gY2FwdHVyZSBkZWxlZ2F0aW9uIEFGQUlLLg0KSWYgbm90aGluZyBicmVha3MgaW4g UmFpbHMgZHVlIHRvIGFkZGluZyBgcnVieTJfa2V5d29yZHNgIHNlbWFudGljcyB0byBgKmFyZ3Ng IGl0J3MgYSBnb29kIHNpZ24gaXQncyBlaXRoZXIgdXNlZCBmb3IgZGVsZWdhdGlvbiwgb3IgaW4g YSB3YXkgYHJ1YnkyX2tleXdvcmRzYCBkb2Vzbid0IGJyZWFrIGFueXRoaW5nLg0KDQpNaW5pbXVt IGFyaXR5IG1pZ2h0IGJlIHNvbWV0aGluZyB0byBoZWxwIHRyYW5zaXRpb24sIGJ1dCBsb25nLXRl cm0gZm9yIHN5bnRhY3RpY2FsIHNlcGFyYXRpb24gaXQgaGFzIHRvIGJlIHJlbW92ZWQgYXMgd2Vs bCAoZS5nLiwgc3ludGFjdGljIGt3YXJncyBwYXNzZWQgdG8gYSBtZXRob2QgYWNjZXB0aW5nIGt3 YXJncyBzaG91bGQgZWl0aGVyIGJlIHBhc3NlZCBhcyBrd2FyZ3Mgb3IgQXJndW1lbnRFcnJvciwg bm8gInRyZWF0IGFzIHBvc2l0aW9uYWwgYmVjYXVzZSBub3QgZW5vdWdoIGFyZ3VtZW50cyIpLCBz byBJIHRoaW5rIGl0IHNob3VsZG4ndCBzdGF5IGFueSBsb25nZXIgdGhhbiBuZWVkZWQuDQpSdWxl cyByZWxhdGVkIHRvIG1pbmltdW0gYXJpdHkgaXMgYnJvdWdodCB0aGlzIHdob2xlIGFtYmlndWl0 eSBiZXR3ZWVuIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzIGluIHRoZSBmaXJzdCBw bGFjZS4NCg0KSW4gZ2VuZXJhbCwgSSBkb3VidCBzdWNoIGEgbGFyZ2UgY2hhbmdlIHdvdWxkIGV2 ZW4gYmUgY29uc2lkZXJlZCBmb3IgMi43IG9yIGxhdGVyIGJ5IG1vc3QgTVJJIGNvbW1pdHRlcnMs IGJlY2F1c2UgaXQgd291bGQgYmUgYSBiaWcgcmlzay4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KRmVhdHVyZSAjMTY1MTE6IFN0YWdlZCB3YXJuaW5ncyBhbmQg YmV0dGVyIGNvbXBhdGliaWxpdHkgZm9yIGtleXdvcmQgYXJndW1lbnRzIGluIDIuNy4xDQpodHRw czovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTY1MTEjY2hhbmdlLTg0MzU2DQoNCiogQXV0 aG9yOiBEYW4wMDQyIChEYW5pZWwgRGVMb3JtZSkNCiogU3RhdHVzOiBPcGVuDQoqIFByaW9yaXR5 OiBOb3JtYWwNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkFzIGFu IGFsdGVybmF0aXZlIHRvICMxNjQ2MyBhbmQgIzE2NDk0IEknZCBsaWtlIHRvIHByb3Bvc2UgdGhp cyBhcHByb2FjaCwgd2hpY2ggSSBiZWxpZXZlIGFsbG93cyBhICoqbXVjaCoqIG1vcmUgZmxleGli bGUgcGF0aCBmb3IgbWlncmF0aW9uIG9mIGtleXdvcmQgYXJndW1lbnRzLg0KDQpUaGUgaWRlYSBp cyB0byBpbmRpY2F0ZSBmb3IgZXZlcnkgSGFzaCBvYmplY3QgaWYgaXQncyBpbnRlbmRlZCB0byBy ZXByZXNlbnQgYSBfa2V5d29yZF8gaGFzaCBvciBhIF9kYXRhXyBoYXNoLiBUaGlzIGV4dHJhIGlu Zm9ybWF0aW9uIGlzIHRoZW4gdXNlZCB0byBnZW5lcmF0ZSBtb3JlIGdyYW51bGFyIHdhcm5pbmdz IGRlcGVuZGluZyBvbiBhIHVzZXIncyBjb21wYXRpYmlsaXR5IG5lZWRzLg0KDQpUaGUgImtleXdv cmRuZXNzIiBvZiBhIGhhc2ggd291bGQgYmUgaW5kaWNhdGVkIGJ5IGEgKipmbGFnKiogb24gdGhl IEhhc2ggb2JqZWN0OyB0aGlzIGlzIGFscmVhZHkgaW1wbGVtZW50ZWQgaW4gMi43IGFuZCBpcyB0 aGUgYXBwcm9hY2ggZmF2b3JlZCBieSBNYXR6LiBMZXQncyBjYWxsIHRoaXMgZmxhZ2dlZCBoYXNo IGEgIkt3SGFzaCIsIGFuZCBhIG5vbi1mbGFnZ2VkIGhhc2ggaXMganVzdCBhICJIYXNoIi4gTm90 ZTogdGhpcyBjb3VsZCBhbHNvIGJlIGltcGxlbWVudGVkIHZpYSBhICoqc3ViY2xhc3MqKiBvZiBI YXNoIChJIHBlcnNvbmFsbHkgZmF2b3IgdGhpcyBvYmplY3Qtb3JpZW50ZWQgYXBwcm9hY2gpIHdo aWNoIHdhcyB0aGUgb3JpZ2luYWwgaWRlYSBpbiB0aGlzIHByb3Bvc2FsLg0KDQpJJ2xsIHRyeSB0 byBkZXNjcmliZSB0aGUgaWRlYSBpbiBkZXRhaWwgYnkgYnJlYWtpbmcgaXQgZG93biBpbnRvIGZp Z3VyYXRpdmUgc3RlcHMuIChTa2lwIHRvICJQdXR0aW5nIGl0IGFsbCB0b2dldGhlciIgZm9yIHRo ZSBUTDtEUiB2ZXJzaW9uLikgSW1hZ2luZSBzdGFydGluZyB3aXRoIHJ1YnkgMi42IGFuZCB0aGVu Og0KDQojIyMgU3RlcCAxDQoNCldoZW4gYSBkb3VibGUtc3BsYXQgb3IgYSBicmFjZS1sZXNzIGhh c2ggaXMgdXNlZCwgaW5zdGVhZCBvZiBhIEhhc2ggaXQgY3JlYXRlcyBhIEt3SGFzaC4NCg0KYGBg cnVieQ0KZGVmIGZvbyh4KSB4IGVuZA0KZm9vKGs6MSkuY2xhc3MgICAgICAjPT4gS3dIYXNoDQpm b28oKipoYXNoKS5jbGFzcyAgICM9PiBLd0hhc2gNCltrOjFdLmxhc3QuY2xhc3MgICAgIz0+IEt3 SGFzaA0KWyoqaGFzaF0ubGFzdC5jbGFzcyAjPT4gS3dIYXNoDQp7KipoYXNofS5jbGFzcyAgICAg ICM9PiBIYXNoDQpgYGANCg0KQXQgdGhpcyBwb2ludCB3ZSBoYXZlbid0IGludHJvZHVjZWQgYW55 IHJlYWwgY2hhbmdlLiBFdmVyeXRoaW5nIHRoYXQgd29ya2VkIGJlZm9yZSBpcyBzdGlsbCB3b3Jr aW5nIHRoZSBzYW1lIHdheS4NCihXaXRoIGEgbWlub3IgZXhjZXB0aW9uIGlmIHVzaW5nIHRoZSBz dWJjbGFzcyBhcHByb2FjaDogdW51c3VhbCBjb2RlIGxpa2UgYGt3LmNsYXNzID09IEhhc2hgIHdv dWxkIG5vdyByZXR1cm4gZmFsc2UuKQ0KDQojIyMgU3RlcCAyDQoNCldoZW4gdGhlcmUgaXMgYW1i aWd1aXR5IGR1ZSB0byBvcHRpb25hbCB2cyBrZXl3b3JkIGFyZ3VtZW50LCB3ZSByZWx5IG9uIHRo ZSBsYXN0IGFyZ3VtZW50IGJlaW5nIEhhc2ggb3IgS3dIYXNoIHRvIGRpc2FtYmlndWF0ZS4NCg0K YGBgcnVieQ0KZGVmIGZvbyh4PW5pbCwgKiprdykNCiAgW3gsa3ddDQplbmQNCmZvbyh7azoxfSkg Iz0+IFt7azoxfSx7fV0NCmZvbyhrOjEpICAgIz0+IFtuaWwse2s6MX1dDQpgYGANCg0KVGhpcyBp cyB0aGUgX21pbmltdW1fIGFtb3VudCBvZiBpbmNvbXBhdGliaWxpdHkgcmVxdWlyZWQgdG8gc29s dmUgQUxMIGJ1Z3MgcHJldmlvdXNseSByZXBvcnRlZCB3aXRoIGtleXdvcmQgYXJndW1lbnRzLiAo IzgwNDAsICM4MzE2LCAjOTg5OCwgIzEwODU2LCAjMTEyMzYsICMxMTk2NywgIzEyMTA0LCAjMTI3 MTcsICMxMjgyMSwgIzEzMzM2LCAjMTM2NDcsICMxNDEzMCwgZXRjLikgDQoNClRoZSB3YXJuaW5n cyBmb3IgdGhpcyB3b3VsZCBiZSBhYm91dCBhbiBpbXBlbmRpbmcgX2NoYW5nZSBvZiBiZWhhdmlv cl8gaW4gdGhlIF9uZXh0IHJ1YnkgdmVyc2lvbl8sIHdoZXJlIGBmb28oe2s6MX0pYCBpcyBubyBs b25nZXIgaW50ZXJwcmV0ZWQgYXMga2V5d29yZCBhcmd1bWVudC4NCg0KIyMjIFN0ZXAgMw0KDQpJ bnRyb2R1Y2UgYWRkaXRpb25hbCBpbmNvbXBhdGliaWxpdHkgdG8gaW1wcm92ZSBjbGFyaXR5IG9m IGRlc2lnbi4gSGVyZSB3ZSBkZXByZWNhdGUgdGhlIGF1dG9tYXRpYyBjb252ZXJzaW9uIG9mIEhh c2ggdG8ga2V5d29yZCBhcmd1bWVudDsgb25seSBLd0hhc2ggaXMgYWNjZXB0ZWQuIFdpdGggYSBk ZXByZWNhdGlvbi93YXJuaW5nIHBoYXNlLCBvZiBjb3Vyc2UuIFRoZSAiYXV0b21hdGljIiBwcm9t b3Rpb24gb2YgYSBLd0hhc2ggdG8gYSBrZXl3b3JkIGFyZ3VtZW50IGZvbGxvd3MgdGhlIHNhbWUg cnVsZXMgYXMgYSBIYXNoIGluIDIuNjsgc2luY2UgdGhlIEt3SGFzaCBpcyBjb25jZXB0dWFsbHkg aW50ZW5kZWQgdG8gcmVwcmVzZW50IGtleXdvcmQgYXJndW1lbnRzLCB0aGlzIGNvbnZlcnNpb24g bWFrZXMgc2Vuc2UgaW4gYSB3YXkgdGhhdCBhIG5vcm1hbCBkYXRhIEhhc2ggZG9lc24ndC4gV2Un dmUgdGFrZW4gdGhlICJsYXN0IHBvc2l0aW9uYWwgaGFzaCIgY29uY2VwdCBhbmQgc3BsaXQgaXQg aW50byAiY29uY2VwdHVhbGx5IGEgaGFzaCIgYW5kICJjb25jZXB0dWFsbHkga2V5d29yZCBhcmd1 bWVudHMiLiBfTW9zdCBpbXBvcnRhbnRseV8sIGFsbCB0aGUgY2hhbmdlcyByZXF1aXJlZCB0byBz aWxlbmNlIHRoZXNlIHdhcm5pbmdzIGFyZSBfY29tcGF0aWJsZSB3aXRoIDIuNl8uDQoNCmBgYHJ1 YnkNCmRlZiBmb28oeCwgKiprdyk7IGVuZA0KZm9vKGs6MSkgICAgICAjIEFyZ3VtZW50RXJyb3Ig YmVjYXVzZSB4IG5vdCBzcGVjaWZpZWQNCmZvbygxLCB7azoxfSkgIyBBcmd1bWVudEVycm9yIGJl Y2F1c2UgdG9vIG1hbnkgYXJndW1lbnRzOyBIYXNoIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gS3dI YXNocw0Kb3B0cyA9IFtrOjFdLmZpcnN0DQpmb28ob3B0cykgICAgICMgb3B0cyBpcyBhIEt3SGFz aCB0aGVyZWZvcmUgdXNlZCBhcyBrZXl3b3JkIGFyZ3VtZW50OyBBcmd1bWVudEVycm9yIGJlY2F1 c2UgeCBub3Qgc3BlY2lmaWVkDQpmb28oMSwgb3B0cykgICMgb3B0cyBpcyBhIEt3SGFzaCB0aGVy ZWZvcmUgdXNlZCBhcyBrZXl3b3JkIGFyZ3VtZW50DQpgYGANCg0KVGhlIHdhcm5pbmdzIGZvciB0 aGlzIHdvdWxkIGJlIGFib3V0IHVwY29taW5nIF9lcnJvcnNfIGZvciBwb3NpdGlvbmFsIGFyZ3Vt ZW50czogYGZvbyh4OjEpYCB3aWxsIGJlICJnaXZlbiAwLCBleHBlY3RlZCAxIiBhbmQgYGZvbygx LHt4OjJ9KWAgd2lsbCBiZSAiZ2l2ZW4gMiwgZXhwZWN0ZWQgMSIuIFN1Y2ggZXJyb3JzIGFyZSB1 c2VmdWwgd2hlbiBkZXZlbG9waW5nLCBidXQgdGhlcmUgaXMgbm8gbmV3IGZ1bmN0aW9uYWxpdHkg cGVyIHNlLCBqdXN0IGEgc3RyaWN0ZXIgc3ludGF4LiBTbyBpdCdzIGxlc3MgaW1wb3J0YW50IHRv IGVzY2FsYXRlIHRvIGFuIGVycm9yIGFuZCB3ZSBjYW4ga2VlcCB0aGUgd2FybmluZ3MgZm9yIGxv bmdlciB0aGFuIFN0ZXAgMi4NCg0KQXQgdGhpcyBwb2ludCB3ZSBoYXZlIGFjaGlldmVkIF9hbG1v c3QtZnVsbF8gKipkeW5hbWljKioga2V5d29yZCBzZXBhcmF0aW9uLCBhcyBvcHBvc2VkIHRvIHRo ZSBjdXJyZW50IF9hbG1vc3QtZnVsbF8gKipzdGF0aWMqKiBhcHByb2FjaC4gSSB3YW50IHRvIG1h a2UgdGhlIHBvaW50IGhlcmUgdGhhdCwgeWVzLCBrZXl3b3JkIGFyZ3VtZW50cyAqKmFyZSoqIHNl cGFyYXRlZCwgaXQncyBqdXN0IGEgZGlmZmVyZW50IHBhcmFkaWdtLiBXaXRoIHN0YXRpYyBzZXBh cmF0aW9uLCBhIGtleXdvcmQgYXJndW1lbnQgaXMgZGVmaW5lZCBsZXhpY2FsbHkgYnkgYSBkb3Vi bGUtc3BsYXQuIFdpdGggZHluYW1pYyBzZXBhcmF0aW9uLCBhIGtleXdvcmQgYXJndW1lbnQgaXMg d2hlbiB0aGUgbGFzdCBhcmd1bWVudCBpcyBhIEt3SGFzaC4ge3tOb3RlOiBJJ20gc2F5aW5nICJh bG1vc3QtZnVsbCIgYmVjYXVzZSBLd0hhc2ggaXMgbm90IHByb21vdGVkIHRvIGtleXdvcmRzIGlu IGBkZWYgZm9vKGEsKiprdyk7ZW5kO2Zvbyh4OjEpYCBhbmQgYmVjYXVzZSBzdGF0aWMga2V5d29y ZHMgYXJlIGF1dG8tZGVtb3RlZCB0byBwb3NpdGlvbmFsIGluIGBkZWYgZm9vKGEpO2VuZDtmb28o eDoxKWB9fQ0KDQpBbnkgZm9ybSBvZiBkZWxlZ2F0aW9uIHdvcmtzIHdpdGggbm8gY2hhbmdlIHJl cXVpcmVkLiBUaGlzIHByZXNlcnZlcyB0aGUgYmVoYXZpb3Igb2YgMi42IGJ1dCBvbmx5IGZvciBL d0hhc2ggb2JqZWN0cy4gVGhpcyBpcyBzaW1pbGFyIHRvIGhhdmluZyAyLjcgd2l0aCBgcnVieTJf a2V5d29yZHNgIGVuYWJsZWQgYnkgZGVmYXVsdC4gQnV0IGFsc28gZGlmZmVyZW50IGluIHNvbWUg d2F5czsgbW9zdCBub3RhYmx5IGl0IGFsbG93cyB0aGUgY2FzZSBzaG93biBpbiAjMTY0OTQgdG8g d29yayBieSBkZWZhdWx0Og0KDQpgYGBydWJ5DQphcnJheSA9IFt4OjFdDQphcnJheS5wdXNoKHg6 MikNCmFycmF5Lm1hcHsgfHg6fCB4IH0gIz0+IFsxLDJdDQpbe3g6M31dLm1hcHsgfHg6fCB4IH0g Iz0+IGJ1dCB0aGlzIHdhcm5zLCBhcyBpdCBzaG91bGQNCmBgYA0KDQpUaGUgY3VycmVudCBhcHBy b2FjaCBkb2VzIG5vdCBhbGxvdyB0aGlzIHRvIHdvcmsgYXQgYWxsLiBUaGUgc29sdXRpb24gcHJv cG9zZWQgaW4gIzE2NDk0IGhhcyBhbGwgdGhlIHNhbWUgZmxhd3MgYXMgSGFzaC1iYXNlZCBrZXl3 b3JkIGFyZ3VtZW50czsgd2hhdCBoYXBwZW5zIHRvIGBlYWNoeyB8eD1uaWwsKiprd3wgfWAgPyBU aGlzIHNvbHV0aW9uIGFsbG93cyBhIEt3SGFzaCB0byBiZSBjb252ZXJ0ZWQgdG8uLi4ga2V5d29y ZHMuIFZlcnkgdW5zdXJwcmlzaW5nLg0KDQpHaXZlbiB0aGF0IHJ1YnkgaXMgYSBkeW5hbWljYWxs eS10eXBlZCBsYW5ndWFnZSBJIGZlZWwgdGhhdCBkeW5hbWljIHR5cGluZyBvZiBrZXl3b3JkcyBp ZiBhIG1vcmUgbmF0dXJhbCBmaXQgdGhhbiBzdGF0aWMgdHlwaW5nLiBCdXQgSSByZWFsaXplIHRo YXQgbWFueSBkaXNhZ3JlZSB3aXRoIHRoYXQsIHdoaWNoIGlzIHdoeSB3ZSBjb250aW51ZSB0by4u Lg0KDQojIyMgU3RlcCA0DQoNCkludHJvZHVjZSBhZGRpdGlvbmFsIGluY29tcGF0aWJpbGl0eSB0 byByZWFjaCBzdGF0aWMvbGV4aWNhbCBzZXBhcmF0aW9uIG9mIGtleXdvcmQgYXJndW1lbnRzLiBI ZXJlIHdlIHJlcXVpcmUgdGhhdCBldmVuIGEgS3dIYXNoIHNob3VsZCBiZSBwYXNzZWQgd2l0aCBh IGRvdWJsZS1zcGxhdCBpbiBvcmRlciB0byBxdWFsaWZ5IGFzIGEga2V5d29yZCBhcmd1bWVudC4N Cg0KYGBgcnVieQ0KZGVmIGJhcigqKmt3KQ0KZW5kDQpkZWYgZm9vKCoqa3cpDQogIGJhcihrdykg ICAjPT4gZXJyb3I7IEt3SGFzaCBwYXNzZWQgd2l0aG91dCAqKg0KICBiYXIoKiprdykgIz0+IG9r DQplbmQNCmBgYA0KDQpBdCB0aGlzIHBvaW50IHdlJ3ZlIHJlYWNoZWQgdGhlIHNhbWUgYmVoYXZp b3IgYXMgMi43LiBEZWxlZ2F0aW9uIG5lZWRzIHRvIGJlIGZpeGVkLCBidXQgYXMgd2Uga25vdyB0 aGUgY2hhbmdlcyByZXF1aXJlZCB0byBzaWxlbmNlIHRoZXNlIHdhcm5pbmdzIGFyZSAqKm5vdCoq IGNvbXBhdGlibGUgd2l0aCAyLjYgb3IgMi43LiBUaGUgd2FybmluZ3MgZm9yIHRoaXMgYXJlIF9m dW5kYW1lbnRhbGx5IG5vdCBmaXhhYmxlXyBhcyBsb25nIGFzIFN0ZXAgMiBoYXMgbm90IGJlZW4g Zml4ZWQuIFRoaXMgaXMgdGhlIGNvcmUgcmVhc29uIHdoeSBgcnVieTJfa2V5d29yZHNgIGlzIGN1 cnJlbnRseSBuZWNlc3NhcnkgaW4gMi43LiBTbyBpbiB0aGUgdmVyc2lvbiBhZnRlciAyLjcgd2Ug Y2FuIGVuYWJsZSB0aGVzZSB3YXJuaW5ncyBieSBkZWZhdWx0IHNpbmNlIGl0J3Mgbm93IHBvc3Np YmxlIHRvIGZpeCBkZWxlZ2F0aW9uIHRvIHVzZSBzdGF0aWMga2V5d29yZHMuIEV4Y2VwdCB0aGF0 IGdlbSBhdXRob3JzIHdobyBuZWVkIHRvIHN0YXkgY29tcGF0aWJsZSB3aXRoIOKJpDIuNyBjYW5u b3QgeWV0IG1ha2UgdGhlc2UgY2hhbmdlcywgc28gd2UgaW50cm9kdWNlIGEgd2F5IHRvIF9zaWxl bmNlICoqb25seSoqIHRoZXNlICJTdGVwIDQiIHdhcm5pbmdzXywgZm9yIHBlb3BsZSB3aG8gbmVl ZCB0byByZW1haW4gY29tcGF0aWJsZSB3aXRoIOKJpDIuNy4gQW5kIHdlIGtlZXAgdGhlbSBhcyB3 YXJuaW5ncyBpbnN0ZWFkIG9mIGVycm9ycyB1bnRpbCBydWJ5IDIuNyBpcyBFT0wuDQoNClNvIGlu c3RlYWQgb2YgaGF2aW5nIHRvIHVwZGF0ZSBhIGJ1bmNoIG9mIHBsYWNlcyB3aXRoIGBydWJ5Ml9r ZXl3b3Jkc2AganVzdCB0byB0ZW1wb3JhcmlseSBzaWxlbmNlIHdhcm5pbmdzLCBpdCdzIGEgc2lu Z2xlIGZsYWcgbGlrZSBgV2FybmluZ1s6cnVieTNfa2V5d29yZHNdYC4gT25jZSBydWJ5IDIuNyBp cyBFT0wgdGhlc2UgYmVjb21lIGNvbnRyb2xsZWQgYnkgYFdhcm5pbmdbOmRlcHJlY2F0ZWRdYCB3 aGljaCB0ZWxscyBwZW9wbGUgdGhleSAqKmhhdmUqKiB0byBmaXggdGhlaXIgY29kZS4gV2hpY2gg aXMganVzdCBsaWtlIHRoZSBldmVudHVhbCBkZXByZWNhdGlvbiBvZiBgcnVieTJfa2V5d29yZHNg LCBqdXN0IHdpdGhvdXQgdGhlIGJ1c3kgd29yayBvZiBhZGRpbmcgYHJ1YnkyX2tleXdvcmRzYCBz dGF0ZW1lbnRzIGluIHRoZSBmaXJzdCBwbGFjZS4gQnV0IGFnYWluLCB0aGlzIGludHJvZHVjZXMg bm8gbmV3IGZ1bmN0aW9uYWxpdHksIGp1c3QgYSBzdHJpY3RlciBzeW50YXguIFNvIHdlIGNhbiBw bGF5IG5pY2UgYW5kIGxlYXZlIHRoZSB3YXJuaW5ncyBmb3IgYSBmZXcgeWVhcnMgYmVmb3JlIGNo YW5naW5nIHRvIGVycm9ycy4NCg0KVGhlIHF1ZXN0aW9uIHJlbWFpbnMgb2YgaG93IHRvIGhhbmRs ZSAjMTY0OTQgaGVyZS4gRWl0aGVyIGRpc2FsbG93IGl0IGVudGlyZWx5LCBidXQgSSB0aGluayB0 aGF0IHdvdWxkIGJlIGEgc2hhbWUuIE9yIGp1c3QgbGlrZSAjMTY0OTQgc3VnZ2VzdHMsIGFsbG93 IGhhc2ggdW5wYWNraW5nIGluIG5vbi1sYW1iZGEgUHJvYy4gRXhjZXB0IHRoYXQgbm93IGl0IGNh biBiZSBhIEt3SGFzaCBpbnN0ZWFkIG9mIGEgSGFzaCwgd2hpY2ggYXQgbGVhc3QgcHJlc2VydmVz IGR5bmFtaWMga2V5d29yZCBzZXBhcmF0aW9uLg0KDQojIyBQdXR0aW5nIGl0IGFsbCB0b2dldGhl ciAoVEw7RFIpDQoNClRoZSBpZGVhIGlzIF9ub3RfIHRvIHJlaW1wbGVtZW50IGtleXdvcmQgYXJn dW1lbnQgc2VwYXJhdGlvbjsgYWxsIHRoYXQgaXMgbmVlZGVkIGlzIHRvIGltcGxlbWVudCB0aGUg dGhpbmdzIGFib3ZlIHRoYXQgYXJlIG5vdCBpbiAyLjc6DQoqIENyZWF0ZSBhIEt3SGFzaCBvYmpl Y3QgZm9yIGJyYWNlLWxlc3MgYW5kIGRvdWJsZS1zcGxhdHRlZCBoYXNoZXMuDQoqIERpZmZlcmVu dGlhdGUgdGhlIHZhcmlvdXMgdHlwZXMgb2Ygd2FybmluZ3MgYW5kIGFsbG93IHRvIHRvZ2dsZSBv bi9vZmYgc2VwYXJhdGVseQ0KICAqIFN0ZXAgMiB3YXJuaW5ncyBfbXVzdF8gYmUgZml4ZWQgbm93 OyBjYW5ub3QgdG9nZ2xlIG9mZg0KICAqIFN0ZXAgMyB3YXJuaW5ncyBfc2hvdWxkXyBiZSBmaXhl ZCBub3cgYnV0IHlvdSBkb24ndCBhYnNvbHV0ZWx5IG5lZWQgdG8gdXBncmFkZSB5b3VyIGdlbXMg anVzdCBmb3IgdGhhdA0KICAqIFN0ZXAgNCB3YXJuaW5ncyBfc2hvdWxkXyBiZSBmaXhlZCBpbiBu ZXh0IHZlcnNpb24gdW5sZXNzIHlvdSBuZWVkIHRvIHN1cHBvcnQg4omkMi43DQoNCkkgdGhpbmsg dGhhdCdzIGFsbCwgcmVhbGx5Li4uDQoNCiMjIyBQcm9zDQoqIENsZWFuZXIgd2F5IHRvIHNvbHZl ICMxNjQ5NA0KKiBCZXR0ZXIgY29tcGF0aWJpbGl0eSAoYXQgbGVhc3QgdW50aWwgMi42IGlzIEVP TCkNCiAgICogZGVsZWdhdGlvbg0KICAgKiBzdG9yaW5nIGFuIGFyZ3VtZW50IGxpc3QgdGhhdCBl bmRzIHdpdGggYSBLd0hhc2gNCiAgICogZGVzdHJ1Y3R1cmluZyBpdGVyYXRpb24gKCMxNjQ5NCkN CiogV2UgY2FuIGF2b2lkIHRoZSAidW5mb3J0dW5hdGUgY29ybmVyIGNhc2UiIGFzIGRlc2NyaWJl ZCBpbiB0aGUgW3JlbGVhc2Ugbm90ZXNdKGh0dHBzOi8vd3d3LnJ1YnktbGFuZy5vcmcvZW4vbmV3 cy8yMDE5LzEyLzEyL3NlcGFyYXRpb24tb2YtcG9zaXRpb25hbC1hbmQta2V5d29yZC1hcmd1bWVu dHMtaW4tcnVieS0zLTAvKQ0KICAgKiBpbiAyLjcgb25seSBkbyBub3Qgb3V0cHV0ICJTdGVwIDQi IHdhcm5pbmdzLCBsZWF2ZSBkZWxlZ2F0aW9uIGxpa2UgaXQgd2FzDQogICAqIGluIDIuOCB0aGUg IlN0ZXAgMyIgd2FybmluZ3MgaGF2ZSBiZWVuIGZpeGVkIGFuZCBhIEhhc2ggd2lsbCBub3QgYmUg Y29udmVydGVkIHRvIGtleXdvcmQgYXJndW1lbnRzDQogICAqIGRlbGVnYXRpb24gY2FuIG5vdyBz YWZlbHkgYmUgZml4ZWQgdG8gdXNlIHRoZSBgKipgIHN5bnRheA0KKiBydWJ5Ml9rZXl3b3JkcyBp cyBub3QgcmVxdWlyZWQsIHdoaWNoIGlzIGRlc2lyYWJsZSBiZWNhdXNlDQogICAqIGl0J3MgYSBo aWRkZW4gZmxhZyBfaGFja18NCiAgICogaXQgcmVxdWlyZXMgdG8gY2hhbmdlIHRoZSBjb2RlIG5v dywgYW5kIGNoYW5nZSBpdCBfYWdhaW5fIHdoZW4gcnVieTJfa2V5d29yZHMgaXMgZGVwcmVjYXRl ZDsgdHdpY2UgdGhlIHdvcms7IHR3aWNlIHRoZSBnZW0gdXBncmFkZXMNCiAgICogaXQgd2FzIHN1 cHBvc2VkIHRvIGJlIHVzZWQgb25seSBmb3IgcGVvcGxlIHdobyBuZWVkIHRvIHN1cHBvcnQgMi42 IG9yIGJlbG93LCBidXQgaXQncyBiZWluZyBtaXN1bmRlcnN0b29kIGFzIGFuIGFjY2VwdGFibGUg d2F5IHRvIGZpeCBkZWxlZ2F0aW9uIGluIGdlbmVyYWwNCiAgICogdGhlcmUncyB0aGUgbm9uLXpl cm8gcmlzayB0aGF0IHJ1YnkyX2tleXdvcmRzIHdpbGwgbmV2ZXIgYmUgcmVtb3ZlZCwgbGVhdmlu ZyB1cyB3aXRoIGEgcGVybWFuZW50ICJoYWNrIG1vZGUiDQogICAgICAqIGR5bmFtaWMga2V5d29y ZHMgYXJlIGJ5IGZhciBwcmVmZXJhYmxlIHRvIHN1cHBvcnRpbmcgcnVieTJfa2V5d29yZHMgZm9y ZXZlcg0KKiBMaWtlbHkgX2JldHRlciBwZXJmb3JtYW5jZV8sIGFzIHRoZSBLd0hhc2ggY2xhc3Mg Y2FuIGJlIG9wdGltaXplZCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2Yg a2V5d29yZCBhcmd1bWVudHMuDQoqIE1vcmUgZmxleGlibGUgbWlncmF0aW9uDQogICAqIEFsbG93 IG1vcmUgdGltZSB0byB1cGdyYWRlIHRoZSBoYXJkIHN0dWZmIGluIFN0ZXAgNA0KICAgKiBDYW4g cmVhY2ggdGhlIF9zYW1lXyBnb2FsIGFzIHRoZSBjdXJyZW50IHN0YXRpYyBhcHByb2FjaA0KICAg KiBMYXJnZXIgInN1cHBvcnQgem9uZSIgaHR0cHM6Ly94a2NkLmNvbS8yMjI0Lw0KICAgKiBJbnN0 ZWFkIG9mIHdpZGUtcmFuZ2luZyBpbmNvbXBhdGliaWxpdGllcyBhbGwgYXQgb25jZSwgdGhlcmUn cyB0aGUgX3Bvc3NpYmlsaXR5XyBvZiBtYWtpbmcgaXQgZmluZXItZ3JhaW5lZCBhbmQgbW9yZSBn cmFkdWFsDQogICAgICAqIHJ1Ynlpc3RzIGNhbiBfY2hvb3NlXyB0byBtaWdyYXRlIGFsbCBhdCBv bmNlIG9yIGluIHNtYWxsZXIgY2h1bmtzDQogICAqIEl0IGhlZGdlcyB0aGUgcmlza3MgYnkga2Vl cGluZyBtb3JlIHBvc3NpYmlsaXRpZXMgb3BlbiBmb3Igbm93Lg0KICAgKiBJdCBhbGxvd3MgdG8g Y29wLW91dCBhdCBTdGVwIDMgaWYgU3RlcCA0IHR1cm5zIG91dCB0b28gaGFyZCBiZWNhdXNlIGl0 IGJyZWFrcyB0b28gbXVjaCBzdHVmZg0KDQojIyMgQ29ucw0KKiBJdCBhbGxvd3MgdG8gY29wLW91 dCBhdCBTdGVwIDMgaWYgU3RlcCA0IHR1cm5zIG91dCB0b28gaGFyZCBiZWNhdXNlIGl0IGJyZWFr cyB0b28gbXVjaCBzdHVmZg0KDQoNCg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3Jn Lw0KClVuc3Vic2NyaWJlOiA8bWFpbHRvOnJ1YnktY29yZS1yZXF1ZXN0QHJ1YnktbGFuZy5vcmc/ c3ViamVjdD11bnN1YnNjcmliZT4KPGh0dHA6Ly9saXN0cy5ydWJ5LWxhbmcub3JnL2NnaS1iaW4v bWFpbG1hbi9vcHRpb25zL3J1YnktY29yZT4K