[#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:97044] [Ruby master Feature#16511] Staged warnings and better compatibility for keyword arguments in 2.7.1
From:
eregontp@...
Date:
2020-02-02 20:31:25 UTC
List:
ruby-core #97044
SXNzdWUgIzE2NTExIGhhcyBiZWVuIHVwZGF0ZWQgYnkgRXJlZ29uIChCZW5vaXQgRGFsb3plKS4N Cg0KDQpEYW4wMDQyIChEYW5pZWwgRGVMb3JtZSkgd3JvdGUgaW4gI25vdGUtMTQ6DQo+IEluIDIu NyB0aGlzIHJlc3VsdHMgaW4gYSB3YXJuaW5nIGRlcGVuZGluZyBvbiBgc29tZV9jb25kaXRpb25g LCB0aGF0J3MgcmVhbGx5IG5vdCBzaW1wbGUgdG8gdW5kZXJzdGFuZC4gIDotLw0KDQpJJ2QgZ3Vl c3MgaXQncyBmYWlybHkgdW5jb21tb24gdG8gY2FsbCBhIG1ldGhvZCBub3QgYWNjZXB0aW5nIGtl eXdvcmQgYXJndW1lbnRzIHdpdGggYCoqYC4NCg0KPiA+IEknbSBub3Qgc3VyZSB3aGF0J3MgdGhl IGRlc2lnbiBvZiB5b3VyIHByb3Bvc2FsLg0KPiA+IFdoYXQgZG8geW91IGNoYW5nZSB0byBrZWVw ICphcmdzLWRlbGVnYXRpb24gd29ya2luZz8NCj4gDQo+IFdlbGwsIHRoZSBkZXNpZ24gaXMgZGVz Y3JpYmVkIGluIGV4dHJlbWVseSB0aG9yb3VnaCBkZXRhaWwgYWJvdmUsIGFsdGhvdWdoIEkgcmVh bGl6ZSBpdCdzIGEgbWFzc2l2ZSB3YWxsIG9mIHRleHQgdG8gcmVhZC4gSSBndWVzcyB5b3UgY2Fu IGJvaWwgaXQgZG93biB0byBoYXZpbmcgdGhlIGtleXdvcmQgZmxhZyBzZXQgb24gX2V2ZXJ5XyBz cGxhdHRlZCBoYXNoIGluc3RlYWQgb2YganVzdCB3aGVuIGFjY2VwdGluZyBhIGAqcmVzdGAgYXJn dW1lbnQuIFRoYXQgd2F5IGlzIG11Y2ggbW9yZSBsb2dpY2FsOyBpdCdzIGEgY29oZXJlbnQgcGFy dCBvZiB0aGUgZGVzaWduIGluc3RlYWQgb2YgYSBzcGVjaWFsLWNhc2UgaGFjayAoYXMgZXhwbGFp bmVkIGluIHRoZSBwcm9wb3NhbCBkZXNjcmlwdGlvbikuDQoNCkkgcmVhZCB0aGUgZmlyc3QgcG9z dCBtdWx0aXBsZSB0aW1lcyBidXQgSSBjYW4ndCBxdWl0ZSB1bmRlcnN0YW5kIHdoYXQgaXQgcHJl Y2lzZWx5IG1lYW5zLg0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE2NTExI25v dGUtMTIgaXMgbW9yZSBwcmVjaXNlLCBidXQgc3RpbGwgcXVpdGUgYWJzdHJhY3QgdG8gbWUuDQoN CkNvdWxkIHlvdSBzaG93IGEgdGVudGF0aXZlIHRpbWVsaW5lIGZvciB5b3VyIHByb3Bvc2FsPw0K SS5lLiwgd2hlbiBlYWNoIGRlcHJlY2F0aW9uIGlzIGludHJvZHVjZWQgYW5kIHdoZW4gYmVoYXZp b3IgaXMgY2hhbmdlZC4NCg0KVHJlYXRpbmcgYXMga2V5d29yZHMgZXZlbiBmb3IgYGZvbyhoKWAg aWYgYGhgIGlzIGZsYWdnZWQgc2VlbXMgbGlrZSBpdCB3b3VsZCBzaWduaWZpY2FudGx5IGluY3Jl YXNlIHRoZSBjaGFuY2UgdG8gbm90IGJlaGF2ZSBhcyBpbnRlbmRlZCwgYXMgSmVyZW15IHNob3dl ZC4NCkNvbnNpZGVyaW5nIG1pbmltdW0gYXJpdHkgbGlrZSBpbiBodHRwczovL2J1Z3MucnVieS1s YW5nLm9yZy9pc3N1ZXMvMTY1MTEjbm90ZS04IHdvdWxkIElNSE8gYnJlYWtzIHRoZSBzZXBhcmF0 aW9uIGFuZCBhZGQgYSBuZXcgZXhjZXB0aW9uYWwgY2FzZS4NCkl0J3MgbGlrZWx5IHRvIGFsc28g YmUgdmVyeSBicml0dGxlIGlmIHRoZXJlIGFyZSBub24tcmVxdWlyZWQgYXJndW1lbnRzLg0KV291 bGQgc3VjaCBiZWhhdmlvciBiZSBldmVudHVhbGx5IHJlbW92ZWQgaW4geW91ciBwcm9wb3NhbD8g UGVyZm9ybWFuY2Utd2lzZSBpdCBsaWtlbHkgaGFzIHNvbWUgY29zdCBhcyBpdCBjYXVzZXMgZXh0 cmEgY2hlY2tzLg0KDQpUaGUgYHJ1YnkyX2tleXdvcmRzYCBydWxlIHRvIG9ubHkgY29uc2lkZXIg YCphcmdzYCBpcyBhIHZlcnkgcHJlY2lzZSB3YXkgdG8gZGV0ZWN0IGRlbGVnYXRpb24gaW4gUnVi eS4NCkZvciB0aGF0IHJlYXNvbiBJIHRoaW5rIGl0J3MgdmFsdWFibGUgdG8gb25seSBoYXZlIHNw ZWNpYWwgYmVoYXZpb3IgZm9yIHRoYXQgY2FzZSwgYW5kIG9ubHkgdW50aWwgd2UgY2FuIHNhZmVs eSBtaWdyYXRlIHRvIGAoKmFyZ3MsICoqa3dhcmdzKWAtZGVsZWdhdGlvbi4NCg0KSWYgSSB1bmRl cnN0YW5kIGNvcnJlY3RseSBmcm9tIHRoZSBmaXJzdCBwb3N0LCB5b3VyIHByb3Bvc2FsIGhhcyBt b3JlIHN0ZXBzIHRoYW4gbWluZS4NCk15IHByb3Bvc2FsIGhhcyAyIHN0ZXBzOiBkZXByZWNhdGUg cGFzc2luZyBrZXl3b3JkIGFyZ3VtZW50cyB3aXRob3V0IGAqKi9mb286YCBpbiAyLjcgKGFscmVh ZHkgZG9uZSBpbiAyLjcuMCkgYW5kIGRlcHJlY2F0ZSBkZWxlZ2F0aW9uIGluIFJ1YnkgMy53YXJu IChlLmcuLCBSdWJ5IDMuNCwgY2FuIHVzZSBgKCphcmdzLCAqKmt3YXJncylgLWRlbGVnYXRpb24g dGhlbikuDQpGb3Igc2ltcGxpY2l0eSBsZXQncyBhc3N1bWUgZWFjaCByZWxlYXNlIGFmdGVyIHRo ZSBkZXByZWNhdGlvbiBjaGFuZ2VzIHRvIHRoZSBuZXcgYmVoYXZpb3IuDQpJJ20gYWZyYWlkIG1v cmUgc3RlcHMgd2lsbCBicmluZyBtb3JlIGNvbmZ1c2lvbiBhbmQgc2xvdyBkb3duIGV2ZW4gbW9y ZSBhZG9wdGlvbi4NCg0KPiBEZXN0cnVjdHVyaW5nIGl0ZXJhdGlvbiBpcyBjb21wYXRpYmxlDQoN ClRoYXQgd291bGQgb25seSB3b3JrIGluIHZlcnkgZmV3IGNhc2VzLg0KRm9yIGV4YW1wbGUgaWYg dGhlIEhhc2ggaXMgY3JlYXRlZCBieSBgSlNPTi5sb2FkYCwgdGhlbiBpdCB3b24ndCBiZSBtYXJr ZWQgYXMga2V5d29yZCwgYW5kIGAubWFweyB8eDp8IHggfWAgd29uJ3Qgd29yay4NCkFsc28gaWYg eW91IHdhbnRlZCB0byBtYWtlIHRoaXMgd29yayBvbiBhbiBBcnJheSBvZiBtdWx0aXBsZSBlbGVt ZW50cyB5b3UnZCBuZWVkIHNvbWV0aGluZyBsaWtlIGBbKipoMSwgKipoMl0ubWFweyB8eDp8IHgg fWAgd2hpY2ggaXMgYm90aCB3ZWlyZCBhbmQgZG9lc24ndCB3b3JrIChoYXNoZXMgYXJlIG1lcmdl ZCkuDQpUaGF0J3MgYW4gYWJ1c2Ugb2YgdGhlIGF1dG9tYXRpYyBjb252ZXJzaW9uLCBsZXQncyBr aWxsIGl0LCB0aGVyZSBpcyBubyB3YXkgdG8gcHJlc2VydmUgaXQgd2l0aG91dCBicmVha2luZyB0 aGUgc2VwYXJhdGlvbi4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KRmVhdHVyZSAjMTY1MTE6IFN0YWdlZCB3YXJuaW5ncyBhbmQgYmV0dGVyIGNvbXBhdGliaWxp dHkgZm9yIGtleXdvcmQgYXJndW1lbnRzIGluIDIuNy4xDQpodHRwczovL2J1Z3MucnVieS1sYW5n Lm9yZy9pc3N1ZXMvMTY1MTEjY2hhbmdlLTg0MTM4DQoNCiogQXV0aG9yOiBEYW4wMDQyIChEYW5p ZWwgRGVMb3JtZSkNCiogU3RhdHVzOiBPcGVuDQoqIFByaW9yaXR5OiBOb3JtYWwNCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkFzIGFuIGFsdGVybmF0aXZlIHRvICMx NjQ2MyBhbmQgIzE2NDk0IEknZCBsaWtlIHRvIHByb3Bvc2UgdGhpcyBhcHByb2FjaCwgd2hpY2gg SSBiZWxpZXZlIGFsbG93cyBhICoqbXVjaCoqIG1vcmUgZmxleGlibGUgcGF0aCBmb3IgbWlncmF0 aW9uIG9mIGtleXdvcmQgYXJndW1lbnRzLg0KDQpUaGUgaWRlYSBpcyB0byBpbmRpY2F0ZSBmb3Ig ZXZlcnkgSGFzaCBvYmplY3QgaWYgaXQncyBpbnRlbmRlZCB0byByZXByZXNlbnQgYSBfa2V5d29y ZF8gaGFzaCBvciBhIF9kYXRhXyBoYXNoLiBUaGlzIGV4dHJhIGluZm9ybWF0aW9uIGlzIHRoZW4g dXNlZCB0byBnZW5lcmF0ZSBtb3JlIGdyYW51bGFyIHdhcm5pbmdzIGRlcGVuZGluZyBvbiBhIHVz ZXIncyBjb21wYXRpYmlsaXR5IG5lZWRzLg0KDQpUaGUgImtleXdvcmRuZXNzIiBvZiBhIGhhc2gg d291bGQgYmUgaW5kaWNhdGVkIGJ5IGEgKipmbGFnKiogb24gdGhlIEhhc2ggb2JqZWN0OyB0aGlz IGlzIGFscmVhZHkgaW1wbGVtZW50ZWQgaW4gMi43IGFuZCBpcyB0aGUgYXBwcm9hY2ggZmF2b3Jl ZCBieSBNYXR6LiBMZXQncyBjYWxsIHRoaXMgZmxhZ2dlZCBoYXNoIGEgIkt3SGFzaCIsIGFuZCBh IG5vbi1mbGFnZ2VkIGhhc2ggaXMganVzdCBhICJIYXNoIi4gTm90ZTogdGhpcyBjb3VsZCBhbHNv IGJlIGltcGxlbWVudGVkIHZpYSBhICoqc3ViY2xhc3MqKiBvZiBIYXNoIChJIHBlcnNvbmFsbHkg ZmF2b3IgdGhpcyBvYmplY3Qtb3JpZW50ZWQgYXBwcm9hY2gpIHdoaWNoIHdhcyB0aGUgb3JpZ2lu YWwgaWRlYSBpbiB0aGlzIHByb3Bvc2FsLg0KDQpJJ2xsIHRyeSB0byBkZXNjcmliZSB0aGUgaWRl YSBpbiBkZXRhaWwgYnkgYnJlYWtpbmcgaXQgZG93biBpbnRvIGZpZ3VyYXRpdmUgc3RlcHMuIChT a2lwIHRvICJQdXR0aW5nIGl0IGFsbCB0b2dldGhlciIgZm9yIHRoZSBUTDtEUiB2ZXJzaW9uLikg SW1hZ2luZSBzdGFydGluZyB3aXRoIHJ1YnkgMi42IGFuZCB0aGVuOg0KDQojIyMgU3RlcCAxDQoN CldoZW4gYSBkb3VibGUtc3BsYXQgb3IgYSBicmFjZS1sZXNzIGhhc2ggaXMgdXNlZCwgaW5zdGVh ZCBvZiBhIEhhc2ggaXQgY3JlYXRlcyBhIEt3SGFzaC4NCg0KYGBgcnVieQ0KZGVmIGZvbyh4KSB4 IGVuZA0KZm9vKGs6MSkuY2xhc3MgICAgICAjPT4gS3dIYXNoDQpmb28oKipoYXNoKS5jbGFzcyAg ICM9PiBLd0hhc2gNCltrOjFdLmxhc3QuY2xhc3MgICAgIz0+IEt3SGFzaA0KWyoqaGFzaF0ubGFz dC5jbGFzcyAjPT4gS3dIYXNoDQp7KipoYXNofS5jbGFzcyAgICAgICM9PiBIYXNoDQpgYGANCg0K QXQgdGhpcyBwb2ludCB3ZSBoYXZlbid0IGludHJvZHVjZWQgYW55IHJlYWwgY2hhbmdlLiBFdmVy eXRoaW5nIHRoYXQgd29ya2VkIGJlZm9yZSBpcyBzdGlsbCB3b3JraW5nIHRoZSBzYW1lIHdheS4N CihXaXRoIGEgbWlub3IgZXhjZXB0aW9uIGlmIHVzaW5nIHRoZSBzdWJjbGFzcyBhcHByb2FjaDog dW51c3VhbCBjb2RlIGxpa2UgYGt3LmNsYXNzID09IEhhc2hgIHdvdWxkIG5vdyByZXR1cm4gZmFs c2UuKQ0KDQojIyMgU3RlcCAyDQoNCldoZW4gdGhlcmUgaXMgYW1iaWd1aXR5IGR1ZSB0byBvcHRp b25hbCB2cyBrZXl3b3JkIGFyZ3VtZW50LCB3ZSByZWx5IG9uIHRoZSBsYXN0IGFyZ3VtZW50IGJl aW5nIEhhc2ggb3IgS3dIYXNoIHRvIGRpc2FtYmlndWF0ZS4NCg0KYGBgcnVieQ0KZGVmIGZvbyh4 PW5pbCwgKiprdykNCiAgW3gsa3ddDQplbmQNCmZvbyh7azoxfSkgIz0+IFt7azoxfSx7fV0NCmZv byhrOjEpICAgIz0+IFtuaWwse2s6MX1dDQpgYGANCg0KVGhpcyBpcyB0aGUgX21pbmltdW1fIGFt b3VudCBvZiBpbmNvbXBhdGliaWxpdHkgcmVxdWlyZWQgdG8gc29sdmUgQUxMIGJ1Z3MgcHJldmlv dXNseSByZXBvcnRlZCB3aXRoIGtleXdvcmQgYXJndW1lbnRzLiAoIzgwNDAsICM4MzE2LCAjOTg5 OCwgIzEwODU2LCAjMTEyMzYsICMxMTk2NywgIzEyMTA0LCAjMTI3MTcsICMxMjgyMSwgIzEzMzM2 LCAjMTM2NDcsICMxNDEzMCwgZXRjLikgDQoNClRoZSB3YXJuaW5ncyBmb3IgdGhpcyB3b3VsZCBi ZSBhYm91dCBhbiBpbXBlbmRpbmcgX2NoYW5nZSBvZiBiZWhhdmlvcl8gaW4gdGhlIF9uZXh0IHJ1 YnkgdmVyc2lvbl8sIHdoZXJlIGBmb28oe2s6MX0pYCBpcyBubyBsb25nZXIgaW50ZXJwcmV0ZWQg YXMga2V5d29yZCBhcmd1bWVudC4NCg0KIyMjIFN0ZXAgMw0KDQpJbnRyb2R1Y2UgYWRkaXRpb25h bCBpbmNvbXBhdGliaWxpdHkgdG8gaW1wcm92ZSBjbGFyaXR5IG9mIGRlc2lnbi4gSGVyZSB3ZSBk ZXByZWNhdGUgdGhlIGF1dG9tYXRpYyBjb252ZXJzaW9uIG9mIEhhc2ggdG8ga2V5d29yZCBhcmd1 bWVudDsgb25seSBLd0hhc2ggaXMgYWNjZXB0ZWQuIFdpdGggYSBkZXByZWNhdGlvbi93YXJuaW5n IHBoYXNlLCBvZiBjb3Vyc2UuIFRoZSAiYXV0b21hdGljIiBwcm9tb3Rpb24gb2YgYSBLd0hhc2gg dG8gYSBrZXl3b3JkIGFyZ3VtZW50IGZvbGxvd3MgdGhlIHNhbWUgcnVsZXMgYXMgYSBIYXNoIGlu IDIuNjsgc2luY2UgdGhlIEt3SGFzaCBpcyBjb25jZXB0dWFsbHkgaW50ZW5kZWQgdG8gcmVwcmVz ZW50IGtleXdvcmQgYXJndW1lbnRzLCB0aGlzIGNvbnZlcnNpb24gbWFrZXMgc2Vuc2UgaW4gYSB3 YXkgdGhhdCBhIG5vcm1hbCBkYXRhIEhhc2ggZG9lc24ndC4gV2UndmUgdGFrZW4gdGhlICJsYXN0 IHBvc2l0aW9uYWwgaGFzaCIgY29uY2VwdCBhbmQgc3BsaXQgaXQgaW50byAiY29uY2VwdHVhbGx5 IGEgaGFzaCIgYW5kICJjb25jZXB0dWFsbHkga2V5d29yZCBhcmd1bWVudHMiLiBfTW9zdCBpbXBv cnRhbnRseV8sIGFsbCB0aGUgY2hhbmdlcyByZXF1aXJlZCB0byBzaWxlbmNlIHRoZXNlIHdhcm5p bmdzIGFyZSBfY29tcGF0aWJsZSB3aXRoIDIuNl8uDQoNCmBgYHJ1YnkNCmRlZiBmb28oeCwgKipr dyk7IGVuZA0KZm9vKGs6MSkgICAgICAjIEFyZ3VtZW50RXJyb3IgYmVjYXVzZSB4IG5vdCBzcGVj aWZpZWQNCmZvbygxLCB7azoxfSkgIyBBcmd1bWVudEVycm9yIGJlY2F1c2UgdG9vIG1hbnkgYXJn dW1lbnRzOyBIYXNoIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gS3dIYXNocw0Kb3B0cyA9IFtrOjFd LmZpcnN0DQpmb28ob3B0cykgICAgICMgb3B0cyBpcyBhIEt3SGFzaCB0aGVyZWZvcmUgdXNlZCBh cyBrZXl3b3JkIGFyZ3VtZW50OyBBcmd1bWVudEVycm9yIGJlY2F1c2UgeCBub3Qgc3BlY2lmaWVk DQpmb28oMSwgb3B0cykgICMgb3B0cyBpcyBhIEt3SGFzaCB0aGVyZWZvcmUgdXNlZCBhcyBrZXl3 b3JkIGFyZ3VtZW50DQpgYGANCg0KVGhlIHdhcm5pbmdzIGZvciB0aGlzIHdvdWxkIGJlIGFib3V0 IHVwY29taW5nIF9lcnJvcnNfIGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50czogYGZvbyh4OjEpYCB3 aWxsIGJlICJnaXZlbiAwLCBleHBlY3RlZCAxIiBhbmQgYGZvbygxLHt4OjJ9KWAgd2lsbCBiZSAi Z2l2ZW4gMiwgZXhwZWN0ZWQgMSIuIFN1Y2ggZXJyb3JzIGFyZSB1c2VmdWwgd2hlbiBkZXZlbG9w aW5nLCBidXQgdGhlcmUgaXMgbm8gbmV3IGZ1bmN0aW9uYWxpdHkgcGVyIHNlLCBqdXN0IGEgc3Ry aWN0ZXIgc3ludGF4LiBTbyBpdCdzIGxlc3MgaW1wb3J0YW50IHRvIGVzY2FsYXRlIHRvIGFuIGVy cm9yIGFuZCB3ZSBjYW4ga2VlcCB0aGUgd2FybmluZ3MgZm9yIGxvbmdlciB0aGFuIFN0ZXAgMi4N Cg0KQXQgdGhpcyBwb2ludCB3ZSBoYXZlIGFjaGlldmVkIF9hbG1vc3QtZnVsbF8gKipkeW5hbWlj Kioga2V5d29yZCBzZXBhcmF0aW9uLCBhcyBvcHBvc2VkIHRvIHRoZSBjdXJyZW50IF9hbG1vc3Qt ZnVsbF8gKipzdGF0aWMqKiBhcHByb2FjaC4gSSB3YW50IHRvIG1ha2UgdGhlIHBvaW50IGhlcmUg dGhhdCwgeWVzLCBrZXl3b3JkIGFyZ3VtZW50cyAqKmFyZSoqIHNlcGFyYXRlZCwgaXQncyBqdXN0 IGEgZGlmZmVyZW50IHBhcmFkaWdtLiBXaXRoIHN0YXRpYyBzZXBhcmF0aW9uLCBhIGtleXdvcmQg YXJndW1lbnQgaXMgZGVmaW5lZCBsZXhpY2FsbHkgYnkgYSBkb3VibGUtc3BsYXQuIFdpdGggZHlu YW1pYyBzZXBhcmF0aW9uLCBhIGtleXdvcmQgYXJndW1lbnQgaXMgd2hlbiB0aGUgbGFzdCBhcmd1 bWVudCBpcyBhIEt3SGFzaC4ge3tOb3RlOiBJJ20gc2F5aW5nICJhbG1vc3QtZnVsbCIgYmVjYXVz ZSBLd0hhc2ggaXMgbm90IHByb21vdGVkIHRvIGtleXdvcmRzIGluIGBkZWYgZm9vKGEsKiprdyk7 ZW5kO2Zvbyh4OjEpYCBhbmQgYmVjYXVzZSBzdGF0aWMga2V5d29yZHMgYXJlIGF1dG8tZGVtb3Rl ZCB0byBwb3NpdGlvbmFsIGluIGBkZWYgZm9vKGEpO2VuZDtmb28oeDoxKWB9fQ0KDQpBbnkgZm9y bSBvZiBkZWxlZ2F0aW9uIHdvcmtzIHdpdGggbm8gY2hhbmdlIHJlcXVpcmVkLiBUaGlzIHByZXNl cnZlcyB0aGUgYmVoYXZpb3Igb2YgMi42IGJ1dCBvbmx5IGZvciBLd0hhc2ggb2JqZWN0cy4gVGhp cyBpcyBzaW1pbGFyIHRvIGhhdmluZyAyLjcgd2l0aCBgcnVieTJfa2V5d29yZHNgIGVuYWJsZWQg YnkgZGVmYXVsdC4gQnV0IGFsc28gZGlmZmVyZW50IGluIHNvbWUgd2F5czsgbW9zdCBub3RhYmx5 IGl0IGFsbG93cyB0aGUgY2FzZSBzaG93biBpbiAjMTY0OTQgdG8gd29yayBieSBkZWZhdWx0Og0K DQpgYGBydWJ5DQphcnJheSA9IFt4OjFdDQphcnJheS5wdXNoKHg6MikNCmFycmF5Lm1hcHsgfHg6 fCB4IH0gIz0+IFsxLDJdDQpbe3g6M31dLm1hcHsgfHg6fCB4IH0gIz0+IGJ1dCB0aGlzIHdhcm5z LCBhcyBpdCBzaG91bGQNCmBgYA0KDQpUaGUgY3VycmVudCBhcHByb2FjaCBkb2VzIG5vdCBhbGxv dyB0aGlzIHRvIHdvcmsgYXQgYWxsLiBUaGUgc29sdXRpb24gcHJvcG9zZWQgaW4gIzE2NDk0IGhh cyBhbGwgdGhlIHNhbWUgZmxhd3MgYXMgSGFzaC1iYXNlZCBrZXl3b3JkIGFyZ3VtZW50czsgd2hh dCBoYXBwZW5zIHRvIGBlYWNoeyB8eD1uaWwsKiprd3wgfWAgPyBUaGlzIHNvbHV0aW9uIGFsbG93 cyBhIEt3SGFzaCB0byBiZSBjb252ZXJ0ZWQgdG8uLi4ga2V5d29yZHMuIFZlcnkgdW5zdXJwcmlz aW5nLg0KDQpHaXZlbiB0aGF0IHJ1YnkgaXMgYSBkeW5hbWljYWxseS10eXBlZCBsYW5ndWFnZSBJ IGZlZWwgdGhhdCBkeW5hbWljIHR5cGluZyBvZiBrZXl3b3JkcyBpZiBhIG1vcmUgbmF0dXJhbCBm aXQgdGhhbiBzdGF0aWMgdHlwaW5nLiBCdXQgSSByZWFsaXplIHRoYXQgbWFueSBkaXNhZ3JlZSB3 aXRoIHRoYXQsIHdoaWNoIGlzIHdoeSB3ZSBjb250aW51ZSB0by4uLg0KDQojIyMgU3RlcCA0DQoN CkludHJvZHVjZSBhZGRpdGlvbmFsIGluY29tcGF0aWJpbGl0eSB0byByZWFjaCBzdGF0aWMvbGV4 aWNhbCBzZXBhcmF0aW9uIG9mIGtleXdvcmQgYXJndW1lbnRzLiBIZXJlIHdlIHJlcXVpcmUgdGhh dCBldmVuIGEgS3dIYXNoIHNob3VsZCBiZSBwYXNzZWQgd2l0aCBhIGRvdWJsZS1zcGxhdCBpbiBv cmRlciB0byBxdWFsaWZ5IGFzIGEga2V5d29yZCBhcmd1bWVudC4NCg0KYGBgcnVieQ0KZGVmIGJh cigqKmt3KQ0KZW5kDQpkZWYgZm9vKCoqa3cpDQogIGJhcihrdykgICAjPT4gZXJyb3I7IEt3SGFz aCBwYXNzZWQgd2l0aG91dCAqKg0KICBiYXIoKiprdykgIz0+IG9rDQplbmQNCmBgYA0KDQpBdCB0 aGlzIHBvaW50IHdlJ3ZlIHJlYWNoZWQgdGhlIHNhbWUgYmVoYXZpb3IgYXMgMi43LiBEZWxlZ2F0 aW9uIG5lZWRzIHRvIGJlIGZpeGVkLCBidXQgYXMgd2Uga25vdyB0aGUgY2hhbmdlcyByZXF1aXJl ZCB0byBzaWxlbmNlIHRoZXNlIHdhcm5pbmdzIGFyZSAqKm5vdCoqIGNvbXBhdGlibGUgd2l0aCAy LjYgb3IgMi43LiBUaGUgd2FybmluZ3MgZm9yIHRoaXMgYXJlIF9mdW5kYW1lbnRhbGx5IG5vdCBm aXhhYmxlXyBhcyBsb25nIGFzIFN0ZXAgMiBoYXMgbm90IGJlZW4gZml4ZWQuIFRoaXMgaXMgdGhl IGNvcmUgcmVhc29uIHdoeSBgcnVieTJfa2V5d29yZHNgIGlzIGN1cnJlbnRseSBuZWNlc3Nhcnkg aW4gMi43LiBTbyBpbiB0aGUgdmVyc2lvbiBhZnRlciAyLjcgd2UgY2FuIGVuYWJsZSB0aGVzZSB3 YXJuaW5ncyBieSBkZWZhdWx0IHNpbmNlIGl0J3Mgbm93IHBvc3NpYmxlIHRvIGZpeCBkZWxlZ2F0 aW9uIHRvIHVzZSBzdGF0aWMga2V5d29yZHMuIEV4Y2VwdCB0aGF0IGdlbSBhdXRob3JzIHdobyBu ZWVkIHRvIHN0YXkgY29tcGF0aWJsZSB3aXRoIOKJpDIuNyBjYW5ub3QgeWV0IG1ha2UgdGhlc2Ug Y2hhbmdlcywgc28gd2UgaW50cm9kdWNlIGEgd2F5IHRvIF9zaWxlbmNlICoqb25seSoqIHRoZXNl ICJTdGVwIDQiIHdhcm5pbmdzXywgZm9yIHBlb3BsZSB3aG8gbmVlZCB0byByZW1haW4gY29tcGF0 aWJsZSB3aXRoIOKJpDIuNy4gQW5kIHdlIGtlZXAgdGhlbSBhcyB3YXJuaW5ncyBpbnN0ZWFkIG9m IGVycm9ycyB1bnRpbCBydWJ5IDIuNyBpcyBFT0wuDQoNClNvIGluc3RlYWQgb2YgaGF2aW5nIHRv IHVwZGF0ZSBhIGJ1bmNoIG9mIHBsYWNlcyB3aXRoIGBydWJ5Ml9rZXl3b3Jkc2AganVzdCB0byB0 ZW1wb3JhcmlseSBzaWxlbmNlIHdhcm5pbmdzLCBpdCdzIGEgc2luZ2xlIGZsYWcgbGlrZSBgV2Fy bmluZ1s6cnVieTNfa2V5d29yZHNdYC4gT25jZSBydWJ5IDIuNyBpcyBFT0wgdGhlc2UgYmVjb21l IGNvbnRyb2xsZWQgYnkgYFdhcm5pbmdbOmRlcHJlY2F0ZWRdYCB3aGljaCB0ZWxscyBwZW9wbGUg dGhleSAqKmhhdmUqKiB0byBmaXggdGhlaXIgY29kZS4gV2hpY2ggaXMganVzdCBsaWtlIHRoZSBl dmVudHVhbCBkZXByZWNhdGlvbiBvZiBgcnVieTJfa2V5d29yZHNgLCBqdXN0IHdpdGhvdXQgdGhl IGJ1c3kgd29yayBvZiBhZGRpbmcgYHJ1YnkyX2tleXdvcmRzYCBzdGF0ZW1lbnRzIGluIHRoZSBm aXJzdCBwbGFjZS4gQnV0IGFnYWluLCB0aGlzIGludHJvZHVjZXMgbm8gbmV3IGZ1bmN0aW9uYWxp dHksIGp1c3QgYSBzdHJpY3RlciBzeW50YXguIFNvIHdlIGNhbiBwbGF5IG5pY2UgYW5kIGxlYXZl IHRoZSB3YXJuaW5ncyBmb3IgYSBmZXcgeWVhcnMgYmVmb3JlIGNoYW5naW5nIHRvIGVycm9ycy4N Cg0KVGhlIHF1ZXN0aW9uIHJlbWFpbnMgb2YgaG93IHRvIGhhbmRsZSAjMTY0OTQgaGVyZS4gRWl0 aGVyIGRpc2FsbG93IGl0IGVudGlyZWx5LCBidXQgSSB0aGluayB0aGF0IHdvdWxkIGJlIGEgc2hh bWUuIE9yIGp1c3QgbGlrZSAjMTY0OTQgc3VnZ2VzdHMsIGFsbG93IGhhc2ggdW5wYWNraW5nIGlu IG5vbi1sYW1iZGEgUHJvYy4gRXhjZXB0IHRoYXQgbm93IGl0IGNhbiBiZSBhIEt3SGFzaCBpbnN0 ZWFkIG9mIGEgSGFzaCwgd2hpY2ggYXQgbGVhc3QgcHJlc2VydmVzIGR5bmFtaWMga2V5d29yZCBz ZXBhcmF0aW9uLg0KDQojIyBQdXR0aW5nIGl0IGFsbCB0b2dldGhlciAoVEw7RFIpDQoNClRoZSBp ZGVhIGlzIF9ub3RfIHRvIHJlaW1wbGVtZW50IGtleXdvcmQgYXJndW1lbnQgc2VwYXJhdGlvbjsg YWxsIHRoYXQgaXMgbmVlZGVkIGlzIHRvIGltcGxlbWVudCB0aGUgdGhpbmdzIGFib3ZlIHRoYXQg YXJlIG5vdCBpbiAyLjc6DQoqIENyZWF0ZSBhIEt3SGFzaCBvYmplY3QgZm9yIGJyYWNlLWxlc3Mg YW5kIGRvdWJsZS1zcGxhdHRlZCBoYXNoZXMuDQoqIERpZmZlcmVudGlhdGUgdGhlIHZhcmlvdXMg dHlwZXMgb2Ygd2FybmluZ3MgYW5kIGFsbG93IHRvIHRvZ2dsZSBvbi9vZmYgc2VwYXJhdGVseQ0K ICAqIFN0ZXAgMiB3YXJuaW5ncyBfbXVzdF8gYmUgZml4ZWQgbm93OyBjYW5ub3QgdG9nZ2xlIG9m Zg0KICAqIFN0ZXAgMyB3YXJuaW5ncyBfc2hvdWxkXyBiZSBmaXhlZCBub3cgYnV0IHlvdSBkb24n dCBhYnNvbHV0ZWx5IG5lZWQgdG8gdXBncmFkZSB5b3VyIGdlbXMganVzdCBmb3IgdGhhdA0KICAq IFN0ZXAgNCB3YXJuaW5ncyBfc2hvdWxkXyBiZSBmaXhlZCBpbiBuZXh0IHZlcnNpb24gdW5sZXNz IHlvdSBuZWVkIHRvIHN1cHBvcnQg4omkMi43DQoNCkkgdGhpbmsgdGhhdCdzIGFsbCwgcmVhbGx5 Li4uDQoNCiMjIyBQcm9zDQoqIENsZWFuZXIgd2F5IHRvIHNvbHZlICMxNjQ5NA0KKiBCZXR0ZXIg Y29tcGF0aWJpbGl0eSAoYXQgbGVhc3QgdW50aWwgMi42IGlzIEVPTCkNCiAgICogZGVsZWdhdGlv bg0KICAgKiBzdG9yaW5nIGFuIGFyZ3VtZW50IGxpc3QgdGhhdCBlbmRzIHdpdGggYSBLd0hhc2gN CiAgICogZGVzdHJ1Y3R1cmluZyBpdGVyYXRpb24gKCMxNjQ5NCkNCiogV2UgY2FuIGF2b2lkIHRo ZSAidW5mb3J0dW5hdGUgY29ybmVyIGNhc2UiIGFzIGRlc2NyaWJlZCBpbiB0aGUgW3JlbGVhc2Ug bm90ZXNdKGh0dHBzOi8vd3d3LnJ1YnktbGFuZy5vcmcvZW4vbmV3cy8yMDE5LzEyLzEyL3NlcGFy YXRpb24tb2YtcG9zaXRpb25hbC1hbmQta2V5d29yZC1hcmd1bWVudHMtaW4tcnVieS0zLTAvKQ0K ICAgKiBpbiAyLjcgb25seSBkbyBub3Qgb3V0cHV0ICJTdGVwIDQiIHdhcm5pbmdzLCBsZWF2ZSBk ZWxlZ2F0aW9uIGxpa2UgaXQgd2FzDQogICAqIGluIDIuOCB0aGUgIlN0ZXAgMyIgd2FybmluZ3Mg aGF2ZSBiZWVuIGZpeGVkIGFuZCBhIEhhc2ggd2lsbCBub3QgYmUgY29udmVydGVkIHRvIGtleXdv cmQgYXJndW1lbnRzDQogICAqIGRlbGVnYXRpb24gY2FuIG5vdyBzYWZlbHkgYmUgZml4ZWQgdG8g dXNlIHRoZSBgKipgIHN5bnRheA0KKiBydWJ5Ml9rZXl3b3JkcyBpcyBub3QgcmVxdWlyZWQsIHdo aWNoIGlzIGRlc2lyYWJsZSBiZWNhdXNlDQogICAqIGl0J3MgYSBoaWRkZW4gZmxhZyBfaGFja18N CiAgICogaXQgcmVxdWlyZXMgdG8gY2hhbmdlIHRoZSBjb2RlIG5vdywgYW5kIGNoYW5nZSBpdCBf YWdhaW5fIHdoZW4gcnVieTJfa2V5d29yZHMgaXMgZGVwcmVjYXRlZDsgdHdpY2UgdGhlIHdvcms7 IHR3aWNlIHRoZSBnZW0gdXBncmFkZXMNCiAgICogaXQgd2FzIHN1cHBvc2VkIHRvIGJlIHVzZWQg b25seSBmb3IgcGVvcGxlIHdobyBuZWVkIHRvIHN1cHBvcnQgMi42IG9yIGJlbG93LCBidXQgaXQn cyBiZWluZyBtaXN1bmRlcnN0b29kIGFzIGFuIGFjY2VwdGFibGUgd2F5IHRvIGZpeCBkZWxlZ2F0 aW9uIGluIGdlbmVyYWwNCiAgICogdGhlcmUncyB0aGUgbm9uLXplcm8gcmlzayB0aGF0IHJ1Ynky X2tleXdvcmRzIHdpbGwgbmV2ZXIgYmUgcmVtb3ZlZCwgbGVhdmluZyB1cyB3aXRoIGEgcGVybWFu ZW50ICJoYWNrIG1vZGUiDQogICAgICAqIGR5bmFtaWMga2V5d29yZHMgYXJlIGJ5IGZhciBwcmVm ZXJhYmxlIHRvIHN1cHBvcnRpbmcgcnVieTJfa2V5d29yZHMgZm9yZXZlcg0KKiBMaWtlbHkgX2Jl dHRlciBwZXJmb3JtYW5jZV8sIGFzIHRoZSBLd0hhc2ggY2xhc3MgY2FuIGJlIG9wdGltaXplZCBz cGVjaWZpY2FsbHkgZm9yIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2Yga2V5d29yZCBhcmd1bWVudHMu DQoqIE1vcmUgZmxleGlibGUgbWlncmF0aW9uDQogICAqIEFsbG93IG1vcmUgdGltZSB0byB1cGdy YWRlIHRoZSBoYXJkIHN0dWZmIGluIFN0ZXAgNA0KICAgKiBDYW4gcmVhY2ggdGhlIF9zYW1lXyBn b2FsIGFzIHRoZSBjdXJyZW50IHN0YXRpYyBhcHByb2FjaA0KICAgKiBMYXJnZXIgInN1cHBvcnQg em9uZSIgaHR0cHM6Ly94a2NkLmNvbS8yMjI0Lw0KICAgKiBJbnN0ZWFkIG9mIHdpZGUtcmFuZ2lu ZyBpbmNvbXBhdGliaWxpdGllcyBhbGwgYXQgb25jZSwgdGhlcmUncyB0aGUgX3Bvc3NpYmlsaXR5 XyBvZiBtYWtpbmcgaXQgZmluZXItZ3JhaW5lZCBhbmQgbW9yZSBncmFkdWFsDQogICAgICAqIHJ1 Ynlpc3RzIGNhbiBfY2hvb3NlXyB0byBtaWdyYXRlIGFsbCBhdCBvbmNlIG9yIGluIHNtYWxsZXIg Y2h1bmtzDQogICAqIEl0IGhlZGdlcyB0aGUgcmlza3MgYnkga2VlcGluZyBtb3JlIHBvc3NpYmls aXRpZXMgb3BlbiBmb3Igbm93Lg0KICAgKiBJdCBhbGxvd3MgdG8gY29wLW91dCBhdCBTdGVwIDMg aWYgU3RlcCA0IHR1cm5zIG91dCB0b28gaGFyZCBiZWNhdXNlIGl0IGJyZWFrcyB0b28gbXVjaCBz dHVmZg0KDQojIyMgQ29ucw0KKiBJdCBhbGxvd3MgdG8gY29wLW91dCBhdCBTdGVwIDMgaWYgU3Rl cCA0IHR1cm5zIG91dCB0b28gaGFyZCBiZWNhdXNlIGl0IGJyZWFrcyB0b28gbXVjaCBzdHVmZg0K DQoNCg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0KClVuc3Vic2NyaWJlOiA8 bWFpbHRvOnJ1YnktY29yZS1yZXF1ZXN0QHJ1YnktbGFuZy5vcmc/c3ViamVjdD11bnN1YnNjcmli ZT4KPGh0dHA6Ly9saXN0cy5ydWJ5LWxhbmcub3JnL2NnaS1iaW4vbWFpbG1hbi9vcHRpb25zL3J1 YnktY29yZT4K