From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-3.5 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,SPF_HELO_NONE, T_SPF_PERMERROR,UNPARSEABLE_RELAY,URIBL_GREY shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id 65B6A1F54E for ; Mon, 1 Aug 2022 17:33:52 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=sendgrid.me header.i=@sendgrid.me header.b="wwKSWNhF"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 49174121413; Tue, 2 Aug 2022 02:33:46 +0900 (JST) Received: from o1678948x4.outbound-mail.sendgrid.net (o1678948x4.outbound-mail.sendgrid.net [167.89.48.4]) by neon.ruby-lang.org (Postfix) with ESMTPS id 546A1121412 for ; Tue, 2 Aug 2022 02:33:41 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sendgrid.me; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to:cc; s=smtpapi; bh=+IkSHzSJuc6aUQ8aug364h4z2RpEmmhn9avCw/bu11Q=; b=wwKSWNhFk5Im6GS3sleMD5CbMlHLNoXK6IqnXzxv7tU4YbLLtfrIj9qiZ58r45/1HQ13 D02nPDSgRhw2/QS5miXSsGJp+AxoRlz843lAjQeI+IOrPv+2Ag0LN4k+l4CWYMDCIr/U4d zgD6aiNeNA7Oi6T8KZdyP7lVUTmuSGaeM= Received: by filterdrecv-67c4c66ffd-2hlx8 with SMTP id filterdrecv-67c4c66ffd-2hlx8-1-62E80E73-16 2022-08-01 17:33:39.37871268 +0000 UTC m=+941318.587105744 Received: from herokuapp.com (unknown) by geopod-ismtpd-5-0 (SG) with ESMTP id VepLp1whRWCGkCf9e2Yn2g for ; Mon, 01 Aug 2022 17:33:39.322 +0000 (UTC) Date: Mon, 01 Aug 2022 17:33:39 +0000 (UTC) From: "nirvdrum (Kevin Menard)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 18949 X-Redmine-Issue-Author: Eregon X-Redmine-Sender: nirvdrum X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-Redmine-MailingListIntegration-Message-Ids: 85807 X-SG-EID: =?us-ascii?Q?6ihDmzGK43ZuSIrWDOctlkI7XjrD7yxKAwiqH87N=2FChVs4c5Z0W5RPO3wpHe7Y?= =?us-ascii?Q?9yyBWbrw4wkCrNxhdY9Zmzi3sPV9=2FQRC1tFZ=2F6A?= =?us-ascii?Q?Ifb=2FaQJna0bSnbl=2FzkZzjF47CrS4pqjD52vROVc?= =?us-ascii?Q?Fih9wZCOPBkXHBMW9IeARuVMhXAuqZUbbDGNMdC?= =?us-ascii?Q?VLH8b6e0HO8U6XWI1Fbh60TADpJFUl5g07sNtvj?= =?us-ascii?Q?xC9HVwi6Vs3=2FEJkwozniVXJZZV5N1cG0LYtiqgk?= =?us-ascii?Q?a2t=2FNcEF60M+XV6Fe2hrQ=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 109402 Subject: [ruby-core:109402] [Ruby master Feature#18949] Deprecate and remove replicate and dummy encodings X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Reply-To: Ruby developers Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" SXNzdWUgIzE4OTQ5IGhhcyBiZWVuIHVwZGF0ZWQgYnkgbmlydmRydW0gKEtldmluIE1lbmFyZCku DQoNCg0KPiBCdXQgb24gdGhlIG90aGVyIGhhbmQsIElTTy0yMDIyLUpQLCBVVEYtMTYsIGFuZCBV VEYtMzIgZGVmaW5pdGVseSBoYXZlIHRoZWlyIHVzZXMuIFRoZXkgYXJlIG5vdCBzbyBtdWNoIHVz ZWQgZGlyZWN0bHkgd2hlbiBwcm9jZXNzaW5nIHN0cmluZ3MgKGJlY2F1c2UgaW5kZWVkIGZvciB0 aGVzZSBlbmNvZGluZ3MsIG1vc3Qgc3RyaW5nIG9wZXJhdGlvbnMgZG9uJ3Qgd29yaywgb3IgZG9u J3Qgd29yayBjb3JyZWN0bHkpLCBidXQgdGhleSBhcmUgdXNlZCB3aGVuIHRyYW5zY29kaW5nIHRv IGFub3RoZXIgZW5jb2RpbmcuDQoNCkkgdGhpbmsgVVRGLTE2IGFuZCBVVEYtMzIgY2FuIGJlIGhh bmRsZWQgd2l0aG91dCBnZW5lcmFsIHN1cHBvcnQgZm9yIGR1bW15IGVuY29kaW5ncy4gVGhleSBh bHJlYWR5IHJlY2VpdmUgc3BlY2lhbCBjb25zaWRlcmF0aW9uIGluIGBnZXRfYWN0dWFsX2VuY29k aW5nYC4gV2hhdCBCZW5vaXQgcHJvcG9zZWQgd2FzIHRvIGFsbG93IHRob3NlIGVuY29kaW5ncywg YnV0IHJlc29sdmUgdGhlbSB0byB0aGUgY29ycmVjdCBlbmRpYW5uZXNzIGF0IHN0cmluZyBjcmVh dGlvbiB0aW1lLiBUaGF0IHdheSB5b3UgZG9uJ3QgaGF2ZSBhbnkgZHVtbXkgZW5jb2RpbmdzIGZs b2F0aW5nIHRocm91Z2ggdGhlIHJ1bnRpbWUuDQoNCkNhbiB5b3UgcGxlYXNlIHByb3ZpZGUgYWRk aXRpb25hbCBjb250ZXh0IG9uIHdoZW4gSVNPLTIwMjItSlAgaXMgdXNlZD8gQXMgZmFyIGFzIEkg Y2FuIHRlbGwsIHlvdSBjYW4ndCBwZXJmb3JtIG1vc3Qgc3RyaW5nIG9wZXJhdGlvbnMgb24gYSBz dHJpbmcgd2l0aCB0aGF0IGVuY29kaW5nLiBJJ20gY3VyaW91cyB3aGF0IHRoZSB1c2UgY2FzZXMg YXJlLg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpGZWF0dXJl ICMxODk0OTogRGVwcmVjYXRlIGFuZCByZW1vdmUgcmVwbGljYXRlIGFuZCBkdW1teSBlbmNvZGlu Z3MNCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xODk0OSNjaGFuZ2UtOTg1NTMN Cg0KKiBBdXRob3I6IEVyZWdvbiAoQmVub2l0IERhbG96ZSkNCiogU3RhdHVzOiBPcGVuDQoqIFBy aW9yaXR5OiBOb3JtYWwNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N ClJ1YnkgaGFzIGEgbG90IG9mIGFjY2lkZW50YWwgY29tcGxleGl0eS4NClNvbWV0aW1lcyBpdCBi ZWNvbWVzIGNsZWFyIHNvbWUgZmVhdHVyZXMgYnJpbmcgYSBsb3Qgb2YgY29tcGxleGl0eSBhbmQg eWV0IHByb3ZpZGUgbGl0dGxlIHZhbHVlIG9yIGFyZSB1c2VkIHZlcnkgcmFyZWx5Lg0KQWxzbyBt b3N0IFJ1YnkgdXNlcnMgZG8gbm90IGV2ZW4ga25vdyBhYm91dCB0aGVzZSBmZWF0dXJlcy4NClJl cGxpY2F0ZSBhbmQgZHVtbXkgZW5jb2RpbmdzIHNlZW0gdG8gY2xlYXJseSBmYWxsIGludG8gdGhp cyBjYXRlZ29yeSwgYWxtb3N0IG5vYm9keSB1c2VzIHRoZW0gYnV0IHRoZXkgYWRkIGEgc2lnbmlm aWNhbnQgY29tcGxleGl0eSBhbmQgYWxzbyBhZGQgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBv dmVyaGVhZC4NCk5vdGFibHksIHRoZSBleGlzdGVuY2Ugb2YgdGhvc2UgbWVhbnMgdGhlIG51bWJl ciBvZiBlbmNvZGluZ3MgaW4gYSBSdWJ5IHJ1bnRpbWUgaXMgYWN0dWFsbHkgdmFyaWFibGUgYW5k IG5vdCBmaXhlZC4NClRoYXQgbWVhbnMgZXh0cmEgc3luY2hyb25pemF0aW9uLCBoYXNodGFibGUg bG9va3VwcywgaW5kaXJlY3Rpb25zLCBmdW5jdGlvbiBjYWxscywgZXRjLg0KDQojIyBSZXBsaWNh dGUgRW5jb2RpbmdzDQoNClJlcGxpY2F0ZSBlbmNvZGluZ3MgYXJlIGNyZWF0ZWQgdXNpbmcgYEVu Y29kaW5nI3JlcGxpY2F0ZShuYW1lKWAuDQpJdCBhbG1vc3Qgc291bmRzIGxpa2UgYW4gYWxpYXMg YnV0IGluIGZhY3QgaXQgaXMgbW9yZSB0aGFuIHRoYXQgYW5kIGNyZWF0ZXMgYSBuZXcgRW5jb2Rp bmcgb2JqZWN0LCB3aGljaCBjYW4gYmUgdXNlZCBieSBhIFN0cmluZzoNCmBgYHJ1YnkNCmUgPSBF bmNvZGluZzo6VVNfQVNDSUkucmVwbGljYXRlKCdNWS1VUy1BU0NJSScpDQpzID0gImFiYyIuZm9y Y2VfZW5jb2RpbmcoZSkNCnAgcy5lbmNvZGluZyAjID0+IGUNCnAgcy5lbmNvZGluZy5uYW1lICMg PT4gJ01ZLVVTLUFTQ0lJJw0KYGBgDQoNClRoaXMgc2VlbXMgY29tcGxldGVseSB1c2VsZXNzLg0K VGhlcmUgaXMgYW4gb2J2aW91cyBmaXJzdCBzdGVwIGhlcmUgd2hpY2ggaXMgdG8gY2hhbmdlIGBF bmNvZGluZyNyZXBsaWNhdGVgIHRvIHJldHVybiB0aGUgcmVjZWl2ZXIsIGFuZCBqdXN0IGluc3Rh bGwgYW4gYWxpYXMgZm9yIGl0Lg0KVGhhdCBhdm9pZHMgY3JlYXRpbmcgbW9yZSBlbmNvZGluZyBp bnN0YW5jZXMgbmVlZGxlc3NseS4NCg0KSSB0aGluayB3ZSBzaG91bGQgYWxzbyBkZXByZWNhdGUg YW5kIHJlbW92ZSB0aGlzIG1ldGhvZCB0aG91Z2gsIGl0IGlzIG5ldmVyIGEgZ29vZCBpZGVhIHRv IGhhdmUgYSBnbG9iYWwgbXV0YWJsZSBtYXAgbGlrZSB0aGlzLg0KSWYgc29tZW9uZSB3YW50IGV4 dHJhIGFsaWFzZXMgZm9yIGVuY29kaW5ncywgdGhleSBjYW4gZWFzaWx5IHRvIGRvIHNvIGJ5IGhh dmluZyB0aGVpciBvd24gSGFzaDogYHsgYWxpYXMgPT4gZW5jb2RpbmcgfS5mZXRjaChuYW1lKSB7 IEVuY29kaW5nLmZpbmQobmFtZSkgfWAuDQoNCiMjIER1bW15IEVuY29kaW5ncw0KDQpEdW1teSBl bmNvZGluZ3MgYXJlIG5vdCByZWFsIGVuY29kaW5ncy4gVGhleSBhcmUgYXJ0aWZpY2lhbCBlbmNv ZGluZ3MgZGVzaWduZWQgdG8gbG9vayBsaWtlIGVuY29kaW5ncywgYnV0IGRvbid0IGZ1bmN0aW9u IGFzIGVuY29kaW5ncyBpbiBSdWJ5Lg0KRnJvbSB0aGUgZG9jczoNCmBgYA0KZW5jLmR1bW15PyAt PiB0cnVlIG9yIGZhbHNlDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NClJldHVybnMgdHJ1ZSBmb3IgZHVtbXkg ZW5jb2RpbmdzLiBBIGR1bW15IGVuY29kaW5nIGlzIGFuIGVuY29kaW5nIGZvcg0Kd2hpY2ggY2hh cmFjdGVyIGhhbmRsaW5nIGlzIG5vdCBwcm9wZXJseSBpbXBsZW1lbnRlZC4gSXQgaXMgdXNlZCBm b3INCnN0YXRlZnVsIGVuY29kaW5ncy4NCmBgYA0KDQpJIHdvbmRlciB3aHkgd2UgaGF2ZSB0aG9z ZSBoYWxmLWltcGxlbWVudGVkIGVuY29kaW5ncyBpbiBjb3JlLCBpdCBzb3VuZHMgdG8gbWUgbGlr ZSB1bmZpbmlzaGVkIHdvcmsgd2hpY2ggc2hvdWxkIG5vdCBoYXZlIGJlZW4gbWVyZ2VkLg0KDQpU aGUgImNvZGVwb2ludHMiIG9mIGR1bW15IGVuY29kaW5ncyBhcmUganVzdCAiYnl0ZXMiIGFuZCBz byB0aGV5IGJlaGF2ZSB0aGUgc2FtZSBhcyBgRW5jb2Rpbmc6OkJJTkFSWWAsIHdpdGggdGhlIGV4 Y2VwdGlvbiBvZiB0aGUgVVRGLTE2IGFuZCBVVEYtMzIgZHVtbXkgZW5jb2RpbmdzLg0KDQojIyMg VVRGLTE2IGFuZCBVVEYtMzIgZHVtbXkgZW5jb2RpbmdzDQoNClRoZXNlIHR3byBhcmUgc3BlY2lh bCBkdW1teSBlbmNvZGluZ3MuDQpXaGF0IHRoZXkgZG8gaXMgdGhleSBzY2FuIHRoZSBmaXJzdCAy IG9yIDQgYnl0ZXMgb2YgdGhlIFN0cmluZywgYW5kIGlmIHRob3NlIGJ5dGVzIGFyZSBhIGJ5dGUt b3JkZXIgbWFyayAoQk9NKSwNCnRoZSB0cnVlICJhY3R1YWwiIGVuY29kaW5nIGlzIHJlc29sdmVk IHRvIFVURi0xNkJFL1VURi0xNkxFIG9yIFVURi0zMkJFL1VURi0zMkxFLg0KT3RoZXJ3aXNlLCBg RW5jb2Rpbmc6OkJJTkFSWWAgaXMgcmV0dXJuZWQuDQpUaGlzIGxvZ2ljIGlzIGRvbmUgYnkgYGdl dF9hY3R1YWxfZW5jb2RpbmcoKWAuDQoNCldoYXQgaXMgd2VpcmQgaXMgdGhpcyBjaGVjayBpcyBu b3QgZG9uZSBvbiBTdHJpbmcgY3JlYXRpb24sIG5vLCBpdCBpcyBkb25lICpldmVyeSB0aW1lKiB0 aGUgZW5jb2Rpbmcgb2YgdGhhdCBTdHJpbmcgaXMgYWNjZXNzZWQgKGFuZCB0aGUgcmVzdWx0IGlz IG5vdCBzdG9yZWQgb24gdGhlIFN0cmluZykuDQpUaGF0IGlzIGEgbmVlZGxlc3Mgb3ZlcmhlYWQg YW5kIHJlYWxseSB1bnJlbGlhYmxlIHNlbWFudGljcy4NCkRvIHdlIHJlYWxseSB3YW50IGEgU3Ry aW5nIHdoaWNoIGF1dG9tYWdpY2FsbHkgY2hhbmdlcyBiZXR3ZWVuIFVURi0xNkxFIGFuZCBVVEYt MTZCRSBiYXNlZCBvbiBtdXRhdGluZyBpdHMgYnl0ZXM/IEkgdGhpbmsgbm9ib2R5IHdhbnRzIHRo YXQ6DQpgYGBydWJ5DQpzID0gIlx4RkZceEZFYVx4MDBiXHgwMGNceDAwZFx4MDAiLmZvcmNlX2Vu Y29kaW5nKCJVVEYtMTYiKQ0KcCBzICMgPT4gIlx1RkVGRmFiY2QiDQpzLnNldGJ5dGUgMCwgMjU0 DQpzLnNldGJ5dGUgMSwgMjU1DQpwIHMgIyA9PiAiXHVGRUZGXHU2MTAwXHU2MjAwXHU2MzAwXHU2 NDAwIg0KYGBgDQoNCkkgdGhpbmsgdGhlIHBhdGggaXMgY2xlYXIsIHdlIHNob3VsZCBkZXByZWNh dGUgYW5kIHRoZW4gcmVtb3ZlIEVuY29kaW5nOjpVVEZfMTYgYW5kIEVuY29kaW5nOjpVVEZfMzIg KGR1bW15IGVuY29kaW5ncykuDQpBbmQgdGhlbiB3ZSBubyBsb25nZXIgbmVlZCBgZ2V0X2FjdHVh bF9lbmNvZGluZygpYCBhbmQgdGhlIG92ZXJoZWFkIGl0IGFkZHMgdG8gZXZlcnkgU3RyaW5nIG1l dGhvZC4NCg0KV2UgY291bGQgYWxzbyBrZWVwIHRob3NlIGNvbnN0YW50cyBhbmQgbWFrZSB0aGVt IHJlZmVyIHRoZSBuYXRpdmUtZW5kaWFuIFVURi0xNi8zMi4NCkJ1dCB0aGF0IGNvdWxkIGNhdXNl IGNvbmZ1c2luZyBlcnJvcnMgYXMgd2Ugd291bGQgY2hhbmdlIHRoZSBtZWFuaW5nIG9mIHRoZW0u DQpXZSBjb3VsZCBhZGQgYEVuY29kaW5nOjpVVEZfMTZORWAgLyBgRW5jb2Rpbmc6OlVURl8xNl9O QVRJVkVfRU5ESUFOYCBpZiB0aGF0IGlzIHVzZWZ1bC4NCg0KQW5vdGhlciBwb3NzaWJpbGl0eSB3 b3VsZCBiZSB0byByZXNvbHZlIHRoZXNlIGVuY29kaW5ncyBvbiBTdHJpbmcgY3JlYXRpb24sIGxp a2U6DQpgYGANCiJceEZGXHhGRSIuZm9yY2VfZW5jb2RpbmcoIlVURi0xNiIpLmVuY29kaW5nICMg PT4gVVRGLTE2TEUNClN0cmluZy5uZXcoIlx4RkZceEZFIiwgZW5jb2Rpbmc6IEVuY29kaW5nOjpV VEZfMTYpLmVuY29kaW5nICMgPT4gVVRGLTE2TEUNCiJhYiIuZm9yY2VfZW5jb2RpbmcoIlVURi0x NiIpLmVuY29kaW5nICMgZXhjZXB0aW9uLCBub3QgYSBCT00NClN0cmluZy5uZXcoImFiIiwgZW5j b2Rpbmc6IEVuY29kaW5nOjpVVEZfMTYpLmVuY29kaW5nICMgZXhjZXB0aW9uLCBub3QgYSBCT00N CmBgYA0KSSB0aGluayBpdCBpcyB1bm5lY2Vzc2FyeSB0byBrZWVwIHN1Y2ggY29tcGxleGl0eSB0 aG91Z2guDQpBIGNsYXNzIG1ldGhvZCBvbiBTdHJpbmcgb3IgRW5jb2RpbmcgbGlrZSBlLmcuIGBF bmNvZGluZy5maW5kX2Zyb21fYm9tKHN0cmluZylgIGlzIHNvIG11Y2ggY2xlYXJlciBhbmQgZWZm aWNpZW50IChubyBuZWVkIHRvIHNwZWNpYWwgY2FzZSB0aG9zZSBlbmNvZGluZ3MgaW4gU3RyaW5n Lm5ldywgI2ZvcmNlX2VuY29kaW5nLCBldGMpLg0KDQpGV0lXIEpSdWJ5IHNlZW1zIHRvIHVzZSBg Z2V0QWN0dWFsRW5jb2RpbmcoKWAgb25seSBpbiAyIHBsYWNlcyAoc2NhbkZvckNvZGVSYW5nZSwg aW5zcGVjdCksIHdoaWNoIGlzIGFuIGluZGljYXRpb24gdGhvc2UgZHVtbXkgVVRGIGVuY29kaW5n cyBhcmUgYmFyZWx5IHVzZWQgaWYgZXZlci4gU2ltaWxhcmx5LCBUcnVmZmxlUnVieSBvbmx5IGhh cyA0IHVzYWdlcyBvZiBgR2V0QWN0dWFsRW5jb2RpbmdOb2RlYC4NCg0KIyMjIEV4aXN0aW5nIGR1 bW15IGVuY29kaW5ncw0KDQpgYGANCj4gRW5jb2RpbmcubGlzdC5zZWxlY3QoJjpkdW1teT8pIA0K WyM8RW5jb2Rpbmc6VVRGLTE2IChkdW1teSk+LCAgIzxFbmNvZGluZzpVVEYtMzIgKGR1bW15KT4s DQogIzxFbmNvZGluZzpJQk0wMzcgKGR1bW15KT4sICM8RW5jb2Rpbmc6VVRGLTcgKGR1bW15KT4s DQogIzxFbmNvZGluZzpJU08tMjAyMi1KUCAoZHVtbXkpPiwgIzxFbmNvZGluZzpJU08tMjAyMi1K UC0yIChkdW1teSk+LCAjPEVuY29kaW5nOklTTy0yMDIyLUpQLUtEREkgKGR1bW15KT4sDQogIzxF bmNvZGluZzpDUDUwMjIwIChkdW1teSk+LCAjPEVuY29kaW5nOkNQNTAyMjEgKGR1bW15KT5dDQpg YGANCg0KU28gYmVzaWRlcyBVVEYtMTYvVVRGLTMyIGR1bW15LCBpdCdzIG9ubHkgNyBlbmNvZGlu Z3MuDQpEb2VzIGFueW9uZSB1c2Ugb25lIG9mIHRoZXNlIDcgZHVtbXkgZW5jb2RpbmdzPw0KDQpX aGF0IGlzIGludGVyZXN0aW5nIHRvIG5vdGUsIGlzIHRoYXQgdGhlc2UgZW5jb2RpbmdzIGFyZSBl eGFjdGx5IHRoZSBvbmVzIHRoYXQgYXJlIGFsc28gbm90IEFTQ0lJLWNvbXBhdGlibGUsIHdpdGgg dGhlIGV4Y2VwdGlvbiBvZiBVVEYtMTZCRS9VVEYtMTZMRS9VVEYtMzJCRS9VVEYtMzJMRSAobm9u LWR1bW15KS4NCkFzIGEgbm90ZSwgVVRGLXsxNiwzMn17QkUsTEV9IGFyZSBBU0NJSS1jb21wYXRp YmxlIGluIGNvZGVwb2ludHMgYnV0IG5vdCBpbiBieXRlcywgYW5kIFJ1YnkgdXNlcyB0aGUgYnl0 ZXMgZGVmaW5pdGlvbiBvZiBBU0NJSS1jb21wYXRpYmxlLg0KVGhlcmUgaXMgcG90ZW50aWFsIHRv IHNpbXBsaWZ5IGVuY29kaW5nIGNvbXBhdGliaWxpdHkgcnVsZXMgYW5kIGVuY29kaW5nIGNvbXBh dGliaWxpdHkgY2hlY2tzIGJhc2VkIG9uIHRoYXQuDQpTbyB3aGF0IHRoaXMgbWVhbnMgaXMgaWYg d2UgcmVtb3ZlZCBkdW1teSBlbmNvZGluZ3MsIGFsbCBlbmNvZGluZ3MgZXhjZXB0IFVURi17MTYs MzJ9e0JFLExFfSB3b3VsZCBiZSBBU0NJSS1jb21wYXRpYmxlLCB3aGljaCB3b3VsZCBsZWFkIHRv IHNpZ25pZmljYW50IHNpbXBsaWZpY2F0aW9ucyBmb3IgbWFueSBzdHJpbmcgb3BlcmF0aW9ucyB3 aGljaCBjdXJyZW50bHkgbmVlZCB0byBoYW5kbGUgZHVtbXkgZW5jb2RpbmdzIHNwZWNpYWxseS4N ClVuaWNvZGUgZW5jb2RpbmdzIGxpa2UgVVRGLXsxNiwzMn17QkUsTEV9IGFscmVhZHkgaGF2ZSBz cGVjaWFsIGJlaGF2aW9yIGZvciBzb21lIFJ1YnkgbWV0aG9kcywgc28gdGhvc2UgYXJlIGFscmVh ZHkgaGFuZGxlZCBzcGVjaWFsbHkgaW4gc29tZSBwbGFjZXMgKHRoZXkgYXJlIHRoZSBvbmx5IGVu Y29kaW5ncyB3aXRoIG1pbkxlbmd0aCA+IDEpLg0KDQpgYGANCj4gRW5jb2RpbmcubGlzdC5yZWpl Y3QoJjphc2NpaV9jb21wYXRpYmxlPykNClsjPEVuY29kaW5nOlVURi0xNkJFPiwgIzxFbmNvZGlu ZzpVVEYtMTZMRT4sDQogIzxFbmNvZGluZzpVVEYtMzJCRT4sICM8RW5jb2Rpbmc6VVRGLTMyTEU+ LA0KICM8RW5jb2Rpbmc6VVRGLTE2IChkdW1teSk+LCAjPEVuY29kaW5nOlVURi0zMiAoZHVtbXkp PiwNCiAjPEVuY29kaW5nOklCTTAzNyAoZHVtbXkpPiwgIzxFbmNvZGluZzpVVEYtNyAoZHVtbXkp PiwNCiAjPEVuY29kaW5nOklTTy0yMDIyLUpQIChkdW1teSk+LCAjPEVuY29kaW5nOklTTy0yMDIy LUpQLTIgKGR1bW15KT4sICM8RW5jb2Rpbmc6SVNPLTIwMjItSlAtS0RESSAoZHVtbXkpPiwNCiAj PEVuY29kaW5nOkNQNTAyMjAgKGR1bW15KT4sICM8RW5jb2Rpbmc6Q1A1MDIyMSAoZHVtbXkpPl0N CmBgYA0KDQpXaGF0IGNhbiB3ZSBkbyB3aXRoIHN1Y2ggYSBkdW1teSBub24tQVNDSUktY29tcGF0 aWJsZSBlbmNvZGluZz8NCkFsbW9zdCBub3RoaW5nIHVzZWZ1bDoNCmBgYHJ1YnkNCnMgPSAiYWJj Ii5lbmNvZGUoIklCTTAzNyIpDQo9PiAiXHg4MVx4ODJceDgzIg0KPiBzLmJ5dGVzDQo9PiBbMTI5 LCAxMzAsIDEzMV0NCj4gcy5jb2RlcG9pbnRzDQo9PiBbMTI5LCAxMzAsIDEzMV0NCj4gcyA9PSAi YWJjIg0KPT4gZmFsc2UNCj4gIsOpdMOpIi5lbmNvZGUoIklCTTAzNyIpDQo9PiAiXHg1MVx4QTNc eDUxIg0KYGBgDQoNClNvIGFib3V0IHRoZSBvbmx5IHRoaW5nIHRoYXQgd29ya3Mgd2l0aCB0aGVt IGlzIGBTdHJpbmcjZW5jb2RlYC4NCg0KSSB0aGluayB3ZSBjb3VsZCBwcmVzZXJ2ZSB0aGF0IGZ1 bmN0aW9uYWxpdHksIGlmIGFjdHVhbGx5IHVzZWQgKGRvZXMgYW55b25lIHVzZSBvbmUgb2YgdGhl c2UgNyBkdW1teSBlbmNvZGluZ3M/KSwgdGhyb3VnaDoNCmBgYHJ1YnkNCj4gIsOpdMOpIi5lbmNv ZGUoIklCTTAzNyIpDQo9PiAiXHg1MVx4QTNceDUxIiAoLmVuY29kaW5nID09IEJJTkFSWSkNCj4g Ilx4NTFceEEzXHg1MSIuZW5jb2RlKCJVVEYtOCIsICJJQk0wMzciKSAjIGVuY29kZSBmcm9tIElC TTAzNyB0byBVVEYtOA0KPT4gIsOpdMOpIiAoLmVuY29kaW5nID09IFVURi04KQ0KYGBgDQoNClRo YXQgd2F5IHRoZXJlIGlzIG5vIG5lZWQgZm9yIHRob3NlIHRvIGJlIEVuY29kaW5nIGluc3RhbmNl cywgd2Ugd291bGQgb25seSBuZWVkIHRoZSBjb252ZXJzaW9uIHRhYmxlcy4NCg0KSXQgaXMgZXZl biBiZXR0ZXIgaWYgd2UgY2FuIHJlbW92ZSB0aGVtLCBzbyB0aGUgbm90aW9uIG9mICJkdW1teSBl bmNvZGluZ3MiIGNhbiBkaXNhcHBlYXIgY29tcGxldGVseSBhbmQgbm9ib2R5IG5lZWRzIHRvIHVu ZGVyc3RhbmQgb3IgaW1wbGVtZW50IHRoZW0uDQoNCiMjIyByYl9kZWZpbmVfZHVtbXlfZW5jb2Rp bmcobmFtZSkNCg0KVGhlIEMtQVBJIGhhcyBgcmJfZGVmaW5lX2R1bW15X2VuY29kaW5nKGNvbnN0 IGNoYXIgKm5hbWUpYC4NClRoaXMgY3JlYXRlcyBhIG5ldyBFbmNvZGluZyBpbnN0YW5jZSB3aXRo IGBkdW1teT89dHJ1ZWAsIGFuZCBpdCBpcyBhbHNvIG5vbi1BU0NJSS1jb21wYXRpYmxlLg0KVGhl cmUgc2VlbXMgdG8gYmUgbm8gcHVycG9zZSB0byB0aGlzIGJlc2lkZXMgc3RvcmluZyB0aGUgbWV0 YWRhdGEgb2YgYW4gZW5jb2Rpbmcgd2hpY2ggZG9lcyBub3QgZXhpc3QgaW4gUnVieS4NClRoaXMg c2VlbXMgYSByZWFsbHkgZXhwZW5zaXZlL2NvbXBsZXggd2F5IHRvIGhhbmRsZSB0aGF0IGZyb20g dGhlIFZNIHBvaW50IG9mIHZpZXcgKGJlY2F1c2UgaXQgZHluYW1pY2FsbHkgY3JlYXRlcyBhbiBF bmNvZGluZyBhbmQgYWRkIGl0IHRvIGxpc3RzL21hcHMvZXRjKS4NCkEgc2ltcGxlIHJlcGxhY2Vt ZW50IHdvdWxkIGJlIHRvIG1hcmsgdGhlIFN0cmluZyBhcyBCSU5BUlkgYW5kIHNhdmUgdGhlIGVu Y29kaW5nIG5hbWUgYXMgYW4gaW5zdGFuY2UgdmFyaWFibGUgb2YgdGhhdCBTdHJpbmcuDQpTaW5j ZSBhbnl3YXkgUnVieSBjYW4ndCB1bmRlcnN0YW5kIGFueXRoaW5nIGFib3V0IHRoYXQgU3RyaW5n LCBpdCdzIGp1c3QgcmF3IGJ5dGVzIHRvIFJ1YnkncyBleWVzLg0KDQojIyBTdW1tYXJ5DQoNCkkg c3VnZ2VzdCB3ZSBkZXByZWNhdGUgcmVwbGljYXRlIGFuZCBkdW1teSBlbmNvZGluZ3MgaW4gUnVi eSAzLjIuDQpBbmQgdGhlbiB3ZSByZW1vdmUgdGhlbSBpbiB0aGUgbmV4dCB2ZXJzaW9uLg0KDQpU aGlzIHdpbGwgc2lnbmlmaWNhbnRseSBzaW1wbGlmeSBzdHJpbmctcmVsYXRlZCBtZXRob2RzLCBh bmQgdGhlIGJlaGF2aW9yIGV4cG9zZWQgdG8gUnVieSB1c2Vycy4NCg0KSXQgd2lsbCBhbHNvIHNp Z25pZmljYW50bHkgc3BlZWR1cCBlbmNvZGluZyBsb29rdXAgaW4gQ1J1YnkgKGFuZCBvdGhlciBS dWJ5IGltcGxlbWVudGF0aW9ucykuDQpXaXRoIGEgZml4ZWQgbnVtYmVyIG9mIGVuY29kaW5ncyB3 ZSBjYW4gZW5zdXJlIGFsbCBlbmNvZGluZyBpbmRpY2VzIGZpdCBpbiA3IGJpdHMsIGFuZCBgRU5D T0RJTkdfR0VUYCBjYW4gYmUgc2ltcGx5IGBSQl9FTkNPRElOR19HRVRfSU5MSU5FRGAuDQpgZ2V0 X2FjdHVhbF9lbmNvZGluZygpYCB3aWxsIGJlIGdvbmUgYW5kIGl0cyBvdmVyaGVhZCBhcyB3ZWxs Lg0KYHJiX2VuY19mcm9tX2luZGV4KClgIHdvdWxkIGJlIGp1c3QgYHJldHVybiBnbG9iYWxfZW5j X3RhYmxlLT5saXN0W2luZGV4XS5lbmM7YCwgaW5zdGVhZCBvZiB0aGUgZXhwZW5zaXZlIGJlaGF2 aW9yIGN1cnJlbnRseSB3aXRoIGBHTE9CQUxfRU5DX1RBQkxFX0VWQUxgIHdoaWNoIHRha2VzIGEg bG9jayBhbmQgbW9yZSB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBSYWN0b3JzLg0KTWFueSBjaGVj a3MgaW4gdGhlc2UgbWV0aG9kcyB3b3VsZCBiZSByZW1vdmVkIGFzIHdlbGwuDQpZZXQgYW5vdGhl ciBpbXByb3ZlbWVudCB3b3VsZCBiZSB0byBsb2FkIGFsbCBlbmNvZGluZ3MgZWFnZXJseSwgdGhh dCBpcyBzbWFsbCBhbmQgZmFzdCBpbiBteSBleHBlcmllbmNlLCB3aGF0IGlzIHNsb3cgYW5kIGJp ZyBpcyB0aGUgY29udmVyc2lvbiB0YWJsZXMsIHRoYXQnZCBzaW1wbGlmeSBgbXVzdF9lbmNpbmRl eCgpYCBmdXJ0aGVyLg0KVGhlc2UgY2hhbmdlcyB3b3VsZCBhZmZlY3QgbW9zdCBTdHJpbmcgbWV0 aG9kcywgd2hpY2ggdXNlDQpgYGANClNUUl9FTkNfR0VULT5nZXRfZW5jb2Rpbmcgd2hpY2ggZG9l czoNCiAgZ2V0X2FjdHVhbF9lbmNvZGluZy0+cmJfZW5jX2Zyb21faW5kZXggYW5kIHBvc3NpYmx5 IC0+ZW5jX2Zyb21faW5kZXgNCiAgRU5DT0RJTkdfR0VULT5SQl9FTkNPRElOR19HRVRfSU5MSU5F RCBhbmQgcG9zc2libHkgLT5yYl9lbmNfZ2V0X2luZGV4LT5lbmNfZ2V0X2luZGV4X3N0ci0+cmJf YXR0cl9nZXQNCmBgYA0KU29tZSBvZiB0aGVzZSBkZXRhaWxzIGFyZSBtZW50aW9uZWQgaW4gaHR0 cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzYwOTUjZGlzY3Vzc2lvbl9yOTE1MTQ5NzA4 Lg0KVGhlIG92ZXJoZWFkIGlzIHNvIGxhcmdlIHRoYXQgaXQgaXMgd29ydGggaGFuZGxpbmcgc29t ZSBoYXJkY29kZWQgZW5jb2RpbmcgaW5kaWNlcyBkaXJlY3RseSBpbiBTdHJpbmcgbWV0aG9kcy4N ClRoaXMgZmVlbHMgd3JvbmcsIGdldHRpbmcgdGhlIGVuY29kaW5nIGZyb20gYSBTdHJpbmcgc2hv dWxkIGJlIHNpbXBsZSwgc3RyYWlnaHRmb3J3YXJkIGFuZCBmYXN0Lg0KDQpGdXJ0aGVyIG9wdGlt aXphdGlvbnMgd2lsbCBiZSB1bmxvY2tlZCBhcyB0aGUgZW5jb2RpbmcgbGlzdCBiZWNvbWVzIGZp eGVkIGFuZCBpbW11dGFibGUuDQpGb3IgZXhhbXBsZSwgdGhlIG5hbWUtdG8tRW5jb2RpbmcgbWFw IGlzIHRoZW4gaW1tdXRhYmxlIGFuZCBjb3VsZCB1c2UgcGVyZmVjdCBoYXNoaW5nLg0KSW5saW5l IGNhY2hpbmcgdGhvc2UgbG9va3VwcyBhbHNvIGJlY29tZXMgZWFzaWVyIGFzIHRoZSB0aGUgbWFw IGNhbm5vdCBjaGFuZ2UuDQpBbHNvIHRoYXQgbWFwIHdvdWxkIG5vIGxvbmdlciBuZWVkIHN5bmNo cm9uaXphdGlvbiwgZXRjLg0KDQojIyBUbyBEZWNpZGUNCg0KRWFjaCBpdGVtIGlzIGluZGVwZW5k ZW50LiBJIHRoaW5rIDEgJiAyIGFyZSB2ZXJ5IGltcG9ydGFudCwgMyBsZXNzIGJ1dCB3b3VsZCBi ZSBuaWNlLg0KDQoxLiBEZXByZWNhdGUgYW5kIHRoZW4gcmVtb3ZlIGBFbmNvZGluZyNyZXBsaWNh dGVgIGFuZCBgcmJfZGVmaW5lX2R1bW15X2VuY29kaW5nKClgLiBXaXRoIHRoYXQgdGhlcmUgaXMg YSBmaXhlZCBudW1iZXIgb2YgZW5jb2RpbmdzLCBhIGxvdCBvZiBzaW1wbGlmaWNhdGlvbnMgYW5k IG1hbnkgb3B0aW1pemF0aW9ucyBiZWNvbWUgYXZhaWxhYmxlLiBUaGV5IGFyZSB1c2VkIHJlc3Bl Y3RpdmVseSBpbiBvbmx5IDEgZ2VtIGFuZCA1IGdlbXMsIHNlZSBodHRwczovL2J1Z3MucnVieS1s YW5nLm9yZy9pc3N1ZXMvMTg5NDkjbm90ZS00DQoyLiBEZXByZWNhdGUgYW5kIHRoZW4gcmVtb3Zl IHRoZSBkdW1teSBVVEYtMTYgYW5kIFVURi0zMiBlbmNvZGluZ3MuIFRoaXMgcmVtb3ZlcyB0aGUg bmVlZCBmb3IgYGdldF9hY3R1YWxfZW5jb2RpbmcoKWAgd2hpY2ggaXMgZXhwZW5zaXZlLiBUaGlz IGZ1bmN0aW9uYWxpdHkgc2VlbXMgcmFyZWx5IHVzZWQgaW4gcHJhY3RpY2UsIGFuZCBpdCBvbmx5 IHdvcmtzIHdoZW4gc3VjaCBzdHJpbmdzIGhhdmUgYSBCT00sIHdoaWNoIGlzIHZlcnkgcmFyZS4N CjMuIERlcHJlY2F0ZSBhbmQgdGhlbiByZW1vdmUgb3RoZXIgZHVtbXkgZW5jb2RpbmdzLCBzbyB0 aGVyZSBhcmUgbm8gbW9yZSBkdW1teSAiaGFsZi1pbXBsZW1lbnRlZCIgZW5jb2RpbmdzIGFuZCBh bGwgZW5jb2RpbmdzIGFyZSBBU0NJSS1jb21wYXRpYmxlIGluIHRlcm1zIG9mIGNvZGVwb2ludHMu DQoNCg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0K