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_SCC_BODY_TEXT_LINE,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 87E7E1F54E for ; Fri, 19 Aug 2022 05:38: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="LuqyqoS8"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 3054B1211FD; Fri, 19 Aug 2022 14:38:50 +0900 (JST) Received: from xtrwkhkc.outbound-mail.sendgrid.net (xtrwkhkc.outbound-mail.sendgrid.net [167.89.16.28]) by neon.ruby-lang.org (Postfix) with ESMTPS id F3F671211F9 for ; Fri, 19 Aug 2022 14:38:46 +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=W2hA0eoshPwJgzHRiI19shj+53dw2hAMozR2XcP8m9E=; b=LuqyqoS8RC3H8ot2Fn0SQl0TJ5zGneAlVXYJnnffUjUhpwUJXNDAKt1FbPqROQGl1JSa 8nFgY0UKhMl7sX7nrRkkBaiKYc54+scWAUuQi4RmvHzTAQPrzUKFJ21PKtvNg2iEZUoTwp NCRifvnxkLPY3CepMGpybu3zfz53ESsPo= Received: by filterdrecv-68b46c5bd4-rzn7n with SMTP id filterdrecv-68b46c5bd4-rzn7n-1-62FF21E4-14 2022-08-19 05:38:44.797949235 +0000 UTC m=+2453582.909260359 Received: from herokuapp.com (unknown) by geopod-ismtpd-3-3 (SG) with ESMTP id 3kdjjSnyQEyjhcKvlmkpaw for ; Fri, 19 Aug 2022 05:38:44.637 +0000 (UTC) Date: Fri, 19 Aug 2022 05:38:44 +0000 (UTC) From: "matz (Yukihiro Matsumoto)" 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: matz 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: 85974 X-SG-EID: =?us-ascii?Q?SqOeWfVKFgkgw8cVgc6MYslIG5ZBbSbWU3opJ5u4yBsU3yWoizgPd1Pss4ZMTd?= =?us-ascii?Q?OLBRodnvQO26=2FFyqng1x72rdTkbmTHg5l1+yKA9?= =?us-ascii?Q?AQWjb6kmQu+=2Flj4nR1krD0qus5n6xeYyHzt53m5?= =?us-ascii?Q?OTGS5tyTnZbvtvG00gmi9VkzoLUxZEq2agy=2FZQw?= =?us-ascii?Q?SiK19ZEjVu69o9D0XgOl6SqhvP1f7sE0ytqIF76?= =?us-ascii?Q?=2FjidzrrF6hJ=2FrYixaW6hfEolT7NbO1X0paXYJ4U?= =?us-ascii?Q?AnrSgiu0xA4eBEq6hRICw=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 109566 Subject: [ruby-core:109566] [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" SXNzdWUgIzE4OTQ5IGhhcyBiZWVuIHVwZGF0ZWQgYnkgbWF0eiAoWXVraWhpcm8gTWF0c3Vtb3Rv KS4NCg0KDQpXZSBzdGlsbCBuZWVkIHRvIGRpc2N1c3MgYWJvdXQgdGhlIGltcGxlbWVudGF0aW9u IGRldGFpbCwgYnV0IHRoZSBiYXNlbGluZSBpcyB3aGF0IEBlcmVnb24gZXhwbGFpbmVkIGFib3Zl Lg0KDQpNYXR6Lg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpG ZWF0dXJlICMxODk0OTogRGVwcmVjYXRlIGFuZCByZW1vdmUgcmVwbGljYXRlIGFuZCBkdW1teSBl bmNvZGluZ3MNCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xODk0OSNjaGFuZ2Ut OTg3MzkNCg0KKiBBdXRob3I6IEVyZWdvbiAoQmVub2l0IERhbG96ZSkNCiogU3RhdHVzOiBPcGVu DQoqIFByaW9yaXR5OiBOb3JtYWwNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NClJ1YnkgaGFzIGEgbG90IG9mIGFjY2lkZW50YWwgY29tcGxleGl0eS4NClNvbWV0aW1l cyBpdCBiZWNvbWVzIGNsZWFyIHNvbWUgZmVhdHVyZXMgYnJpbmcgYSBsb3Qgb2YgY29tcGxleGl0 eSBhbmQgeWV0IHByb3ZpZGUgbGl0dGxlIHZhbHVlIG9yIGFyZSB1c2VkIHZlcnkgcmFyZWx5Lg0K QWxzbyBtb3N0IFJ1YnkgdXNlcnMgZG8gbm90IGV2ZW4ga25vdyBhYm91dCB0aGVzZSBmZWF0dXJl cy4NClJlcGxpY2F0ZSBhbmQgZHVtbXkgZW5jb2RpbmdzIHNlZW0gdG8gY2xlYXJseSBmYWxsIGlu dG8gdGhpcyBjYXRlZ29yeSwgYWxtb3N0IG5vYm9keSB1c2VzIHRoZW0gYnV0IHRoZXkgYWRkIGEg c2lnbmlmaWNhbnQgY29tcGxleGl0eSBhbmQgYWxzbyBhZGQgYSBzaWduaWZpY2FudCBwZXJmb3Jt YW5jZSBvdmVyaGVhZC4NCk5vdGFibHksIHRoZSBleGlzdGVuY2Ugb2YgdGhvc2UgbWVhbnMgdGhl IG51bWJlciBvZiBlbmNvZGluZ3MgaW4gYSBSdWJ5IHJ1bnRpbWUgaXMgYWN0dWFsbHkgdmFyaWFi bGUgYW5kIG5vdCBmaXhlZC4NClRoYXQgbWVhbnMgZXh0cmEgc3luY2hyb25pemF0aW9uLCBoYXNo dGFibGUgbG9va3VwcywgaW5kaXJlY3Rpb25zLCBmdW5jdGlvbiBjYWxscywgZXRjLg0KDQojIyBS ZXBsaWNhdGUgRW5jb2RpbmdzDQoNClJlcGxpY2F0ZSBlbmNvZGluZ3MgYXJlIGNyZWF0ZWQgdXNp bmcgYEVuY29kaW5nI3JlcGxpY2F0ZShuYW1lKWAuDQpJdCBhbG1vc3Qgc291bmRzIGxpa2UgYW4g YWxpYXMgYnV0IGluIGZhY3QgaXQgaXMgbW9yZSB0aGFuIHRoYXQgYW5kIGNyZWF0ZXMgYSBuZXcg RW5jb2Rpbmcgb2JqZWN0LCB3aGljaCBjYW4gYmUgdXNlZCBieSBhIFN0cmluZzoNCmBgYHJ1YnkN CmUgPSBFbmNvZGluZzo6VVNfQVNDSUkucmVwbGljYXRlKCdNWS1VUy1BU0NJSScpDQpzID0gImFi YyIuZm9yY2VfZW5jb2RpbmcoZSkNCnAgcy5lbmNvZGluZyAjID0+IGUNCnAgcy5lbmNvZGluZy5u YW1lICMgPT4gJ01ZLVVTLUFTQ0lJJw0KYGBgDQoNClRoaXMgc2VlbXMgY29tcGxldGVseSB1c2Vs ZXNzLg0KVGhlcmUgaXMgYW4gb2J2aW91cyBmaXJzdCBzdGVwIGhlcmUgd2hpY2ggaXMgdG8gY2hh bmdlIGBFbmNvZGluZyNyZXBsaWNhdGVgIHRvIHJldHVybiB0aGUgcmVjZWl2ZXIsIGFuZCBqdXN0 IGluc3RhbGwgYW4gYWxpYXMgZm9yIGl0Lg0KVGhhdCBhdm9pZHMgY3JlYXRpbmcgbW9yZSBlbmNv ZGluZyBpbnN0YW5jZXMgbmVlZGxlc3NseS4NCg0KSSB0aGluayB3ZSBzaG91bGQgYWxzbyBkZXBy ZWNhdGUgYW5kIHJlbW92ZSB0aGlzIG1ldGhvZCB0aG91Z2gsIGl0IGlzIG5ldmVyIGEgZ29vZCBp ZGVhIHRvIGhhdmUgYSBnbG9iYWwgbXV0YWJsZSBtYXAgbGlrZSB0aGlzLg0KSWYgc29tZW9uZSB3 YW50IGV4dHJhIGFsaWFzZXMgZm9yIGVuY29kaW5ncywgdGhleSBjYW4gZWFzaWx5IHRvIGRvIHNv IGJ5IGhhdmluZyB0aGVpciBvd24gSGFzaDogYHsgYWxpYXMgPT4gZW5jb2RpbmcgfS5mZXRjaChu YW1lKSB7IEVuY29kaW5nLmZpbmQobmFtZSkgfWAuDQoNCiMjIER1bW15IEVuY29kaW5ncw0KDQpE dW1teSBlbmNvZGluZ3MgYXJlIG5vdCByZWFsIGVuY29kaW5ncy4gVGhleSBhcmUgYXJ0aWZpY2lh bCBlbmNvZGluZ3MgZGVzaWduZWQgdG8gbG9vayBsaWtlIGVuY29kaW5ncywgYnV0IGRvbid0IGZ1 bmN0aW9uIGFzIGVuY29kaW5ncyBpbiBSdWJ5Lg0KRnJvbSB0aGUgZG9jczoNCmBgYA0KZW5jLmR1 bW15PyAtPiB0cnVlIG9yIGZhbHNlDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NClJldHVybnMgdHJ1ZSBmb3Ig ZHVtbXkgZW5jb2RpbmdzLiBBIGR1bW15IGVuY29kaW5nIGlzIGFuIGVuY29kaW5nIGZvcg0Kd2hp Y2ggY2hhcmFjdGVyIGhhbmRsaW5nIGlzIG5vdCBwcm9wZXJseSBpbXBsZW1lbnRlZC4gSXQgaXMg dXNlZCBmb3INCnN0YXRlZnVsIGVuY29kaW5ncy4NCmBgYA0KDQpJIHdvbmRlciB3aHkgd2UgaGF2 ZSB0aG9zZSBoYWxmLWltcGxlbWVudGVkIGVuY29kaW5ncyBpbiBjb3JlLCBpdCBzb3VuZHMgdG8g bWUgbGlrZSB1bmZpbmlzaGVkIHdvcmsgd2hpY2ggc2hvdWxkIG5vdCBoYXZlIGJlZW4gbWVyZ2Vk Lg0KDQpUaGUgImNvZGVwb2ludHMiIG9mIGR1bW15IGVuY29kaW5ncyBhcmUganVzdCAiYnl0ZXMi IGFuZCBzbyB0aGV5IGJlaGF2ZSB0aGUgc2FtZSBhcyBgRW5jb2Rpbmc6OkJJTkFSWWAsIHdpdGgg dGhlIGV4Y2VwdGlvbiBvZiB0aGUgVVRGLTE2IGFuZCBVVEYtMzIgZHVtbXkgZW5jb2RpbmdzLg0K DQojIyMgVVRGLTE2IGFuZCBVVEYtMzIgZHVtbXkgZW5jb2RpbmdzDQoNClRoZXNlIHR3byBhcmUg c3BlY2lhbCBkdW1teSBlbmNvZGluZ3MuDQpXaGF0IHRoZXkgZG8gaXMgdGhleSBzY2FuIHRoZSBm aXJzdCAyIG9yIDQgYnl0ZXMgb2YgdGhlIFN0cmluZywgYW5kIGlmIHRob3NlIGJ5dGVzIGFyZSBh IGJ5dGUtb3JkZXIgbWFyayAoQk9NKSwNCnRoZSB0cnVlICJhY3R1YWwiIGVuY29kaW5nIGlzIHJl c29sdmVkIHRvIFVURi0xNkJFL1VURi0xNkxFIG9yIFVURi0zMkJFL1VURi0zMkxFLg0KT3RoZXJ3 aXNlLCBgRW5jb2Rpbmc6OkJJTkFSWWAgaXMgcmV0dXJuZWQuDQpUaGlzIGxvZ2ljIGlzIGRvbmUg YnkgYGdldF9hY3R1YWxfZW5jb2RpbmcoKWAuDQoNCldoYXQgaXMgd2VpcmQgaXMgdGhpcyBjaGVj ayBpcyBub3QgZG9uZSBvbiBTdHJpbmcgY3JlYXRpb24sIG5vLCBpdCBpcyBkb25lICpldmVyeSB0 aW1lKiB0aGUgZW5jb2Rpbmcgb2YgdGhhdCBTdHJpbmcgaXMgYWNjZXNzZWQgKGFuZCB0aGUgcmVz dWx0IGlzIG5vdCBzdG9yZWQgb24gdGhlIFN0cmluZykuDQpUaGF0IGlzIGEgbmVlZGxlc3Mgb3Zl cmhlYWQgYW5kIHJlYWxseSB1bnJlbGlhYmxlIHNlbWFudGljcy4NCkRvIHdlIHJlYWxseSB3YW50 IGEgU3RyaW5nIHdoaWNoIGF1dG9tYWdpY2FsbHkgY2hhbmdlcyBiZXR3ZWVuIFVURi0xNkxFIGFu ZCBVVEYtMTZCRSBiYXNlZCBvbiBtdXRhdGluZyBpdHMgYnl0ZXM/IEkgdGhpbmsgbm9ib2R5IHdh bnRzIHRoYXQ6DQpgYGBydWJ5DQpzID0gIlx4RkZceEZFYVx4MDBiXHgwMGNceDAwZFx4MDAiLmZv cmNlX2VuY29kaW5nKCJVVEYtMTYiKQ0KcCBzICMgPT4gIlx1RkVGRmFiY2QiDQpzLnNldGJ5dGUg MCwgMjU0DQpzLnNldGJ5dGUgMSwgMjU1DQpwIHMgIyA9PiAiXHVGRUZGXHU2MTAwXHU2MjAwXHU2 MzAwXHU2NDAwIg0KYGBgDQoNCkkgdGhpbmsgdGhlIHBhdGggaXMgY2xlYXIsIHdlIHNob3VsZCBk ZXByZWNhdGUgYW5kIHRoZW4gcmVtb3ZlIEVuY29kaW5nOjpVVEZfMTYgYW5kIEVuY29kaW5nOjpV VEZfMzIgKGR1bW15IGVuY29kaW5ncykuDQpBbmQgdGhlbiB3ZSBubyBsb25nZXIgbmVlZCBgZ2V0 X2FjdHVhbF9lbmNvZGluZygpYCBhbmQgdGhlIG92ZXJoZWFkIGl0IGFkZHMgdG8gZXZlcnkgU3Ry aW5nIG1ldGhvZC4NCg0KV2UgY291bGQgYWxzbyBrZWVwIHRob3NlIGNvbnN0YW50cyBhbmQgbWFr ZSB0aGVtIHJlZmVyIHRoZSBuYXRpdmUtZW5kaWFuIFVURi0xNi8zMi4NCkJ1dCB0aGF0IGNvdWxk IGNhdXNlIGNvbmZ1c2luZyBlcnJvcnMgYXMgd2Ugd291bGQgY2hhbmdlIHRoZSBtZWFuaW5nIG9m IHRoZW0uDQpXZSBjb3VsZCBhZGQgYEVuY29kaW5nOjpVVEZfMTZORWAgLyBgRW5jb2Rpbmc6OlVU Rl8xNl9OQVRJVkVfRU5ESUFOYCBpZiB0aGF0IGlzIHVzZWZ1bC4NCg0KQW5vdGhlciBwb3NzaWJp bGl0eSB3b3VsZCBiZSB0byByZXNvbHZlIHRoZXNlIGVuY29kaW5ncyBvbiBTdHJpbmcgY3JlYXRp b24sIGxpa2U6DQpgYGANCiJceEZGXHhGRSIuZm9yY2VfZW5jb2RpbmcoIlVURi0xNiIpLmVuY29k aW5nICMgPT4gVVRGLTE2TEUNClN0cmluZy5uZXcoIlx4RkZceEZFIiwgZW5jb2Rpbmc6IEVuY29k aW5nOjpVVEZfMTYpLmVuY29kaW5nICMgPT4gVVRGLTE2TEUNCiJhYiIuZm9yY2VfZW5jb2Rpbmco IlVURi0xNiIpLmVuY29kaW5nICMgZXhjZXB0aW9uLCBub3QgYSBCT00NClN0cmluZy5uZXcoImFi IiwgZW5jb2Rpbmc6IEVuY29kaW5nOjpVVEZfMTYpLmVuY29kaW5nICMgZXhjZXB0aW9uLCBub3Qg YSBCT00NCmBgYA0KSSB0aGluayBpdCBpcyB1bm5lY2Vzc2FyeSB0byBrZWVwIHN1Y2ggY29tcGxl eGl0eSB0aG91Z2guDQpBIGNsYXNzIG1ldGhvZCBvbiBTdHJpbmcgb3IgRW5jb2RpbmcgbGlrZSBl LmcuIGBFbmNvZGluZy5maW5kX2Zyb21fYm9tKHN0cmluZylgIGlzIHNvIG11Y2ggY2xlYXJlciBh bmQgZWZmaWNpZW50IChubyBuZWVkIHRvIHNwZWNpYWwgY2FzZSB0aG9zZSBlbmNvZGluZ3MgaW4g U3RyaW5nLm5ldywgI2ZvcmNlX2VuY29kaW5nLCBldGMpLg0KDQpGV0lXIEpSdWJ5IHNlZW1zIHRv IHVzZSBgZ2V0QWN0dWFsRW5jb2RpbmcoKWAgb25seSBpbiAyIHBsYWNlcyAoc2NhbkZvckNvZGVS YW5nZSwgaW5zcGVjdCksIHdoaWNoIGlzIGFuIGluZGljYXRpb24gdGhvc2UgZHVtbXkgVVRGIGVu Y29kaW5ncyBhcmUgYmFyZWx5IHVzZWQgaWYgZXZlci4gU2ltaWxhcmx5LCBUcnVmZmxlUnVieSBv bmx5IGhhcyA0IHVzYWdlcyBvZiBgR2V0QWN0dWFsRW5jb2RpbmdOb2RlYC4NCg0KIyMjIEV4aXN0 aW5nIGR1bW15IGVuY29kaW5ncw0KDQpgYGANCj4gRW5jb2RpbmcubGlzdC5zZWxlY3QoJjpkdW1t eT8pIA0KWyM8RW5jb2Rpbmc6VVRGLTE2IChkdW1teSk+LCAgIzxFbmNvZGluZzpVVEYtMzIgKGR1 bW15KT4sDQogIzxFbmNvZGluZzpJQk0wMzcgKGR1bW15KT4sICM8RW5jb2Rpbmc6VVRGLTcgKGR1 bW15KT4sDQogIzxFbmNvZGluZzpJU08tMjAyMi1KUCAoZHVtbXkpPiwgIzxFbmNvZGluZzpJU08t MjAyMi1KUC0yIChkdW1teSk+LCAjPEVuY29kaW5nOklTTy0yMDIyLUpQLUtEREkgKGR1bW15KT4s DQogIzxFbmNvZGluZzpDUDUwMjIwIChkdW1teSk+LCAjPEVuY29kaW5nOkNQNTAyMjEgKGR1bW15 KT5dDQpgYGANCg0KU28gYmVzaWRlcyBVVEYtMTYvVVRGLTMyIGR1bW15LCBpdCdzIG9ubHkgNyBl bmNvZGluZ3MuDQpEb2VzIGFueW9uZSB1c2Ugb25lIG9mIHRoZXNlIDcgZHVtbXkgZW5jb2Rpbmdz Pw0KDQpXaGF0IGlzIGludGVyZXN0aW5nIHRvIG5vdGUsIGlzIHRoYXQgdGhlc2UgZW5jb2Rpbmdz IGFyZSBleGFjdGx5IHRoZSBvbmVzIHRoYXQgYXJlIGFsc28gbm90IEFTQ0lJLWNvbXBhdGlibGUs IHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBVVEYtMTZCRS9VVEYtMTZMRS9VVEYtMzJCRS9VVEYtMzJM RSAobm9uLWR1bW15KS4NCkFzIGEgbm90ZSwgVVRGLXsxNiwzMn17QkUsTEV9IGFyZSBBU0NJSS1j b21wYXRpYmxlIGluIGNvZGVwb2ludHMgYnV0IG5vdCBpbiBieXRlcywgYW5kIFJ1YnkgdXNlcyB0 aGUgYnl0ZXMgZGVmaW5pdGlvbiBvZiBBU0NJSS1jb21wYXRpYmxlLg0KVGhlcmUgaXMgcG90ZW50 aWFsIHRvIHNpbXBsaWZ5IGVuY29kaW5nIGNvbXBhdGliaWxpdHkgcnVsZXMgYW5kIGVuY29kaW5n IGNvbXBhdGliaWxpdHkgY2hlY2tzIGJhc2VkIG9uIHRoYXQuDQpTbyB3aGF0IHRoaXMgbWVhbnMg aXMgaWYgd2UgcmVtb3ZlZCBkdW1teSBlbmNvZGluZ3MsIGFsbCBlbmNvZGluZ3MgZXhjZXB0IFVU Ri17MTYsMzJ9e0JFLExFfSB3b3VsZCBiZSBBU0NJSS1jb21wYXRpYmxlLCB3aGljaCB3b3VsZCBs ZWFkIHRvIHNpZ25pZmljYW50IHNpbXBsaWZpY2F0aW9ucyBmb3IgbWFueSBzdHJpbmcgb3BlcmF0 aW9ucyB3aGljaCBjdXJyZW50bHkgbmVlZCB0byBoYW5kbGUgZHVtbXkgZW5jb2RpbmdzIHNwZWNp YWxseS4NClVuaWNvZGUgZW5jb2RpbmdzIGxpa2UgVVRGLXsxNiwzMn17QkUsTEV9IGFscmVhZHkg aGF2ZSBzcGVjaWFsIGJlaGF2aW9yIGZvciBzb21lIFJ1YnkgbWV0aG9kcywgc28gdGhvc2UgYXJl IGFscmVhZHkgaGFuZGxlZCBzcGVjaWFsbHkgaW4gc29tZSBwbGFjZXMgKHRoZXkgYXJlIHRoZSBv bmx5IGVuY29kaW5ncyB3aXRoIG1pbkxlbmd0aCA+IDEpLg0KDQpgYGANCj4gRW5jb2RpbmcubGlz dC5yZWplY3QoJjphc2NpaV9jb21wYXRpYmxlPykNClsjPEVuY29kaW5nOlVURi0xNkJFPiwgIzxF bmNvZGluZzpVVEYtMTZMRT4sDQogIzxFbmNvZGluZzpVVEYtMzJCRT4sICM8RW5jb2Rpbmc6VVRG LTMyTEU+LA0KICM8RW5jb2Rpbmc6VVRGLTE2IChkdW1teSk+LCAjPEVuY29kaW5nOlVURi0zMiAo ZHVtbXkpPiwNCiAjPEVuY29kaW5nOklCTTAzNyAoZHVtbXkpPiwgIzxFbmNvZGluZzpVVEYtNyAo ZHVtbXkpPiwNCiAjPEVuY29kaW5nOklTTy0yMDIyLUpQIChkdW1teSk+LCAjPEVuY29kaW5nOklT Ty0yMDIyLUpQLTIgKGR1bW15KT4sICM8RW5jb2Rpbmc6SVNPLTIwMjItSlAtS0RESSAoZHVtbXkp PiwNCiAjPEVuY29kaW5nOkNQNTAyMjAgKGR1bW15KT4sICM8RW5jb2Rpbmc6Q1A1MDIyMSAoZHVt bXkpPl0NCmBgYA0KDQpXaGF0IGNhbiB3ZSBkbyB3aXRoIHN1Y2ggYSBkdW1teSBub24tQVNDSUkt Y29tcGF0aWJsZSBlbmNvZGluZz8NCkFsbW9zdCBub3RoaW5nIHVzZWZ1bDoNCmBgYHJ1YnkNCnMg PSAiYWJjIi5lbmNvZGUoIklCTTAzNyIpDQo9PiAiXHg4MVx4ODJceDgzIg0KPiBzLmJ5dGVzDQo9 PiBbMTI5LCAxMzAsIDEzMV0NCj4gcy5jb2RlcG9pbnRzDQo9PiBbMTI5LCAxMzAsIDEzMV0NCj4g cyA9PSAiYWJjIg0KPT4gZmFsc2UNCj4gIsOpdMOpIi5lbmNvZGUoIklCTTAzNyIpDQo9PiAiXHg1 MVx4QTNceDUxIg0KYGBgDQoNClNvIGFib3V0IHRoZSBvbmx5IHRoaW5nIHRoYXQgd29ya3Mgd2l0 aCB0aGVtIGlzIGBTdHJpbmcjZW5jb2RlYC4NCg0KSSB0aGluayB3ZSBjb3VsZCBwcmVzZXJ2ZSB0 aGF0IGZ1bmN0aW9uYWxpdHksIGlmIGFjdHVhbGx5IHVzZWQgKGRvZXMgYW55b25lIHVzZSBvbmUg b2YgdGhlc2UgNyBkdW1teSBlbmNvZGluZ3M/KSwgdGhyb3VnaDoNCmBgYHJ1YnkNCj4gIsOpdMOp Ii5lbmNvZGUoIklCTTAzNyIpDQo9PiAiXHg1MVx4QTNceDUxIiAoLmVuY29kaW5nID09IEJJTkFS WSkNCj4gIlx4NTFceEEzXHg1MSIuZW5jb2RlKCJVVEYtOCIsICJJQk0wMzciKSAjIGVuY29kZSBm cm9tIElCTTAzNyB0byBVVEYtOA0KPT4gIsOpdMOpIiAoLmVuY29kaW5nID09IFVURi04KQ0KYGBg DQoNClRoYXQgd2F5IHRoZXJlIGlzIG5vIG5lZWQgZm9yIHRob3NlIHRvIGJlIEVuY29kaW5nIGlu c3RhbmNlcywgd2Ugd291bGQgb25seSBuZWVkIHRoZSBjb252ZXJzaW9uIHRhYmxlcy4NCg0KSXQg aXMgZXZlbiBiZXR0ZXIgaWYgd2UgY2FuIHJlbW92ZSB0aGVtLCBzbyB0aGUgbm90aW9uIG9mICJk dW1teSBlbmNvZGluZ3MiIGNhbiBkaXNhcHBlYXIgY29tcGxldGVseSBhbmQgbm9ib2R5IG5lZWRz IHRvIHVuZGVyc3RhbmQgb3IgaW1wbGVtZW50IHRoZW0uDQoNCiMjIyByYl9kZWZpbmVfZHVtbXlf ZW5jb2RpbmcobmFtZSkNCg0KVGhlIEMtQVBJIGhhcyBgcmJfZGVmaW5lX2R1bW15X2VuY29kaW5n KGNvbnN0IGNoYXIgKm5hbWUpYC4NClRoaXMgY3JlYXRlcyBhIG5ldyBFbmNvZGluZyBpbnN0YW5j ZSB3aXRoIGBkdW1teT89dHJ1ZWAsIGFuZCBpdCBpcyBhbHNvIG5vbi1BU0NJSS1jb21wYXRpYmxl Lg0KVGhlcmUgc2VlbXMgdG8gYmUgbm8gcHVycG9zZSB0byB0aGlzIGJlc2lkZXMgc3RvcmluZyB0 aGUgbWV0YWRhdGEgb2YgYW4gZW5jb2Rpbmcgd2hpY2ggZG9lcyBub3QgZXhpc3QgaW4gUnVieS4N ClRoaXMgc2VlbXMgYSByZWFsbHkgZXhwZW5zaXZlL2NvbXBsZXggd2F5IHRvIGhhbmRsZSB0aGF0 IGZyb20gdGhlIFZNIHBvaW50IG9mIHZpZXcgKGJlY2F1c2UgaXQgZHluYW1pY2FsbHkgY3JlYXRl cyBhbiBFbmNvZGluZyBhbmQgYWRkIGl0IHRvIGxpc3RzL21hcHMvZXRjKS4NCkEgc2ltcGxlIHJl cGxhY2VtZW50IHdvdWxkIGJlIHRvIG1hcmsgdGhlIFN0cmluZyBhcyBCSU5BUlkgYW5kIHNhdmUg dGhlIGVuY29kaW5nIG5hbWUgYXMgYW4gaW5zdGFuY2UgdmFyaWFibGUgb2YgdGhhdCBTdHJpbmcu DQpTaW5jZSBhbnl3YXkgUnVieSBjYW4ndCB1bmRlcnN0YW5kIGFueXRoaW5nIGFib3V0IHRoYXQg U3RyaW5nLCBpdCdzIGp1c3QgcmF3IGJ5dGVzIHRvIFJ1YnkncyBleWVzLg0KDQojIyBTdW1tYXJ5 DQoNCkkgc3VnZ2VzdCB3ZSBkZXByZWNhdGUgcmVwbGljYXRlIGFuZCBkdW1teSBlbmNvZGluZ3Mg aW4gUnVieSAzLjIuDQpBbmQgdGhlbiB3ZSByZW1vdmUgdGhlbSBpbiB0aGUgbmV4dCB2ZXJzaW9u Lg0KDQpUaGlzIHdpbGwgc2lnbmlmaWNhbnRseSBzaW1wbGlmeSBzdHJpbmctcmVsYXRlZCBtZXRo b2RzLCBhbmQgdGhlIGJlaGF2aW9yIGV4cG9zZWQgdG8gUnVieSB1c2Vycy4NCg0KSXQgd2lsbCBh bHNvIHNpZ25pZmljYW50bHkgc3BlZWR1cCBlbmNvZGluZyBsb29rdXAgaW4gQ1J1YnkgKGFuZCBv dGhlciBSdWJ5IGltcGxlbWVudGF0aW9ucykuDQpXaXRoIGEgZml4ZWQgbnVtYmVyIG9mIGVuY29k aW5ncyB3ZSBjYW4gZW5zdXJlIGFsbCBlbmNvZGluZyBpbmRpY2VzIGZpdCBpbiA3IGJpdHMsIGFu ZCBgRU5DT0RJTkdfR0VUYCBjYW4gYmUgc2ltcGx5IGBSQl9FTkNPRElOR19HRVRfSU5MSU5FRGAu DQpgZ2V0X2FjdHVhbF9lbmNvZGluZygpYCB3aWxsIGJlIGdvbmUgYW5kIGl0cyBvdmVyaGVhZCBh cyB3ZWxsLg0KYHJiX2VuY19mcm9tX2luZGV4KClgIHdvdWxkIGJlIGp1c3QgYHJldHVybiBnbG9i YWxfZW5jX3RhYmxlLT5saXN0W2luZGV4XS5lbmM7YCwgaW5zdGVhZCBvZiB0aGUgZXhwZW5zaXZl IGJlaGF2aW9yIGN1cnJlbnRseSB3aXRoIGBHTE9CQUxfRU5DX1RBQkxFX0VWQUxgIHdoaWNoIHRh a2VzIGEgbG9jayBhbmQgbW9yZSB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBSYWN0b3JzLg0KTWFu eSBjaGVja3MgaW4gdGhlc2UgbWV0aG9kcyB3b3VsZCBiZSByZW1vdmVkIGFzIHdlbGwuDQpZZXQg YW5vdGhlciBpbXByb3ZlbWVudCB3b3VsZCBiZSB0byBsb2FkIGFsbCBlbmNvZGluZ3MgZWFnZXJs eSwgdGhhdCBpcyBzbWFsbCBhbmQgZmFzdCBpbiBteSBleHBlcmllbmNlLCB3aGF0IGlzIHNsb3cg YW5kIGJpZyBpcyB0aGUgY29udmVyc2lvbiB0YWJsZXMsIHRoYXQnZCBzaW1wbGlmeSBgbXVzdF9l bmNpbmRleCgpYCBmdXJ0aGVyLg0KVGhlc2UgY2hhbmdlcyB3b3VsZCBhZmZlY3QgbW9zdCBTdHJp bmcgbWV0aG9kcywgd2hpY2ggdXNlDQpgYGANClNUUl9FTkNfR0VULT5nZXRfZW5jb2Rpbmcgd2hp Y2ggZG9lczoNCiAgZ2V0X2FjdHVhbF9lbmNvZGluZy0+cmJfZW5jX2Zyb21faW5kZXggYW5kIHBv c3NpYmx5IC0+ZW5jX2Zyb21faW5kZXgNCiAgRU5DT0RJTkdfR0VULT5SQl9FTkNPRElOR19HRVRf SU5MSU5FRCBhbmQgcG9zc2libHkgLT5yYl9lbmNfZ2V0X2luZGV4LT5lbmNfZ2V0X2luZGV4X3N0 ci0+cmJfYXR0cl9nZXQNCmBgYA0KU29tZSBvZiB0aGVzZSBkZXRhaWxzIGFyZSBtZW50aW9uZWQg aW4gaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzYwOTUjZGlzY3Vzc2lvbl9yOTE1 MTQ5NzA4Lg0KVGhlIG92ZXJoZWFkIGlzIHNvIGxhcmdlIHRoYXQgaXQgaXMgd29ydGggaGFuZGxp bmcgc29tZSBoYXJkY29kZWQgZW5jb2RpbmcgaW5kaWNlcyBkaXJlY3RseSBpbiBTdHJpbmcgbWV0 aG9kcy4NClRoaXMgZmVlbHMgd3JvbmcsIGdldHRpbmcgdGhlIGVuY29kaW5nIGZyb20gYSBTdHJp bmcgc2hvdWxkIGJlIHNpbXBsZSwgc3RyYWlnaHRmb3J3YXJkIGFuZCBmYXN0Lg0KDQpGdXJ0aGVy IG9wdGltaXphdGlvbnMgd2lsbCBiZSB1bmxvY2tlZCBhcyB0aGUgZW5jb2RpbmcgbGlzdCBiZWNv bWVzIGZpeGVkIGFuZCBpbW11dGFibGUuDQpGb3IgZXhhbXBsZSwgdGhlIG5hbWUtdG8tRW5jb2Rp bmcgbWFwIGlzIHRoZW4gaW1tdXRhYmxlIGFuZCBjb3VsZCB1c2UgcGVyZmVjdCBoYXNoaW5nLg0K SW5saW5lIGNhY2hpbmcgdGhvc2UgbG9va3VwcyBhbHNvIGJlY29tZXMgZWFzaWVyIGFzIHRoZSB0 aGUgbWFwIGNhbm5vdCBjaGFuZ2UuDQpBbHNvIHRoYXQgbWFwIHdvdWxkIG5vIGxvbmdlciBuZWVk IHN5bmNocm9uaXphdGlvbiwgZXRjLg0KDQojIyBUbyBEZWNpZGUNCg0KRWFjaCBpdGVtIGlzIGlu ZGVwZW5kZW50LiBJIHRoaW5rIDEgJiAyIGFyZSB2ZXJ5IGltcG9ydGFudCwgMyBsZXNzIGJ1dCB3 b3VsZCBiZSBuaWNlLg0KDQoxLiBEZXByZWNhdGUgYW5kIHRoZW4gcmVtb3ZlIGBFbmNvZGluZyNy ZXBsaWNhdGVgIGFuZCBgcmJfZGVmaW5lX2R1bW15X2VuY29kaW5nKClgLiBXaXRoIHRoYXQgdGhl cmUgaXMgYSBmaXhlZCBudW1iZXIgb2YgZW5jb2RpbmdzLCBhIGxvdCBvZiBzaW1wbGlmaWNhdGlv bnMgYW5kIG1hbnkgb3B0aW1pemF0aW9ucyBiZWNvbWUgYXZhaWxhYmxlLiBUaGV5IGFyZSB1c2Vk IHJlc3BlY3RpdmVseSBpbiBvbmx5IDEgZ2VtIGFuZCA1IGdlbXMsIHNlZSBodHRwczovL2J1Z3Mu cnVieS1sYW5nLm9yZy9pc3N1ZXMvMTg5NDkjbm90ZS00DQoyLiBEZXByZWNhdGUgYW5kIHRoZW4g cmVtb3ZlIHRoZSBkdW1teSBVVEYtMTYgYW5kIFVURi0zMiBlbmNvZGluZ3MuIFRoaXMgcmVtb3Zl cyB0aGUgbmVlZCBmb3IgYGdldF9hY3R1YWxfZW5jb2RpbmcoKWAgd2hpY2ggaXMgZXhwZW5zaXZl LiBUaGlzIGZ1bmN0aW9uYWxpdHkgc2VlbXMgcmFyZWx5IHVzZWQgaW4gcHJhY3RpY2UsIGFuZCBp dCBvbmx5IHdvcmtzIHdoZW4gc3VjaCBzdHJpbmdzIGhhdmUgYSBCT00sIHdoaWNoIGlzIHZlcnkg cmFyZS4NCjMuIERlcHJlY2F0ZSBhbmQgdGhlbiByZW1vdmUgb3RoZXIgZHVtbXkgZW5jb2Rpbmdz LCBzbyB0aGVyZSBhcmUgbm8gbW9yZSBkdW1teSAiaGFsZi1pbXBsZW1lbnRlZCIgZW5jb2Rpbmdz IGFuZCBhbGwgZW5jb2RpbmdzIGFyZSBBU0NJSS1jb21wYXRpYmxlIGluIHRlcm1zIG9mIGNvZGVw b2ludHMuDQoNCg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0K