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 EC4BA1F54E for ; Tue, 9 Aug 2022 12:08:37 +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="Psse7TWJ"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 12CF81219A4; Tue, 9 Aug 2022 21:08:33 +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 7A2EC1219A3 for ; Tue, 9 Aug 2022 21:08:27 +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=Ae6yGb3oM2gYwOqGgQJPRS78RWLqn+efSpgd89+a9GY=; b=Psse7TWJxbwROynG1Py8+ga/wHjxXncrtLT35SkNLn/68w6v/X3//w36gXRC4yXdyQK/ zoNibrizkrWXezmF1PfN6ifFxv9BVwCE+cP8/fMkXYZGLVwmqVohVAf1kOVnPZPOmHMZxz he0ipO+vyoBFPNXzPJ9bHyijoiYqoL2Vo= Received: by filterdrecv-6b87cb984-pns57 with SMTP id filterdrecv-6b87cb984-pns57-1-62F24E38-38 2022-08-09 12:08:24.455031009 +0000 UTC m=+1612767.754139323 Received: from herokuapp.com (unknown) by geopod-ismtpd-3-6 (SG) with ESMTP id W0kHiD1oSXeSs9tM0sMCpA for ; Tue, 09 Aug 2022 12:08:24.213 +0000 (UTC) Date: Tue, 09 Aug 2022 12:08:24 +0000 (UTC) From: "Eregon (Benoit Daloze)" 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: Eregon 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: 85863 X-SG-EID: =?us-ascii?Q?DvL3W2Xo+Vk=2FeUn3F50L=2FNc8u9NqZCnbE0mXZHiyye4R1YZg=2FtAFc0SAFzpcS=2F?= =?us-ascii?Q?Zcr7BqPN=2FYCcMZBMITNeIci9STxYay0JAJWPbek?= =?us-ascii?Q?rFR+qUF6CqGoMZXinXPPb7v3w+oKb6c5SK1Lu1i?= =?us-ascii?Q?hNw738J22U082TvR3BeEbrPaas973DCvlFgLKIx?= =?us-ascii?Q?jXT3zRbuHYQGupZaMkCmEBACA7aMTNmzBfYurha?= =?us-ascii?Q?uz04n0mPGNHDC7ulxBXmLiwkCCfXXbzBHbs1lSp?= =?us-ascii?Q?9tnu0ji4CHjKoUsHgy1oQ=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 109455 Subject: [ruby-core:109455] [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" SXNzdWUgIzE4OTQ5IGhhcyBiZWVuIHVwZGF0ZWQgYnkgRXJlZ29uIChCZW5vaXQgRGFsb3plKS4N Cg0KDQpkdWVyc3QgKE1hcnRpbiBEw7xyc3QpIHdyb3RlIGluICNub3RlLTIxOg0KPiBJdCByZWZl cmVuY2VzIFJGQyAyNzgxIChzZWUgaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzI3 ODEpLiBUaGF0IHByb3ZpZGVzIHF1aXRlIGEgYml0IG9mIGRldGFpbHMuDQoNClRoYW5rcyBmb3Ig dGhlIGxpbmsuDQpTbyB0aGF0IHNheXMgc3RyaW5ncyBpbiAiVVRGLTE2IiAobm8gZXhwbGljaXQg ZW5kaWFuKSBTSE9VTEQgaGF2ZSBhIEJPTSwgYW5kIGlmIG5vdCBTSE9VTEQgYmUgaW50ZXJwcmV0 ZWQgYXMgVVRGLTE2QkUgKGFuZCB0aGUgV2lraXBlZGlhIGFydGljbGUgbGlua3MgdG8gc29tZSBk aXNhZ3JlZW1lbnQgdGhlcmUsIHdoaWNoIG1lYW5zIG5vIEJPTSA9PiB1bmRlZmluZWQgb3Igd291 bGQgbmVlZCB0byBzY2FuIGJ5dGVzIHdoaWNoIHNlZW1zIHVucmVhc29uYWJsZSBhbmQgdW5yZWxp YWJsZSkuDQpDUnVieSB0cmVhdHMgaXQgYXMgQklOQVJZIGlmIHRoZXJlIGlzIG5vIEJPTSwgd2hp Y2ggc2VlbXMgdG8gaWdub3JlIHRoaXMsIGJ1dCBkb2VzIG5vdCBtYXR0ZXIgaWYgd2UgcmVtb3Zl IGBFbmNvZGluZzo6VVRGXzE2YC4NClRoZSBSRkMgbW9yZSBvciBsZXNzIHNheSAiVVRGLTE2IGJ5 dGVzIGhhdmUgbm8gbWVhbmluZyB1bmxlc3MgdGhlIGVuZGlhbiBpcyBzcGVjaWZpZWQgb3IgdGhl cmUgaXMgYSBCT00iLg0KU28gUnVieSBzaG91bGQgcHJvYmFibHkgcmFpc2Ugb24gZHVtbXkgVVRG LTE2IHdpdGhvdXQgQk9NIGFuZCBmb3JjZSByZXNvbHV0aW9uIGF0IFN0cmluZyBjcmVhdGlvbiB0 aW1lIChkZXNjcmliZWQgaW4gYHJlc29sdmUgdGhlc2UgZW5jb2RpbmdzIG9uIFN0cmluZyBjcmVh dGlvbmAgaW4gdGhlIGRlc2NyaXB0aW9uKS4NCkl0IGlzIG11Y2ggc2ltcGxlciBhbmQgY2xlYW5l ciB0byBub3QgaGF2ZSBgRW5jb2Rpbmc6OlVURl8xNmAgYXQgYWxsLg0KDQpBcyB3ZSBzZWUgaW4g dGhlIGxpc3QgYWJvdmUsIHRoZSBkdW1teSBVVEYtMTYgZW5jb2Rpbmcgc2VlbXMgZXh0cmVtZWx5 IHJhcmVseSB1c2VkIChodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTg5NDkjbm90 ZS0xMyksIGluIHByYWN0aWNlIHVzZXJzIHNlZW0gdG8gYWxyZWFkeSBrbm93IHRvIHVzZSBVVEZf MTZCRSBvciBVVEZfMTZMRS4NCkV2ZW4gYGdlbS1jb2Rlc2VhcmNoICInVVRGLTE2JyIgfCBncmVw ICdcLnJiOidgIGFuZCBgZ2VtLWNvZGVzZWFyY2ggJyJVVEYtMTYiJyB8IGdyZXAgJ1wucmI6J2Ag YXJlIGZhaXJseSBzaG9ydC4NCklmIHRoZSBlbmNvZGluZyBjb21lcyBkeW5hbWljYWxseSBmcm9t IGFuIGV4dGVybmFsIHNvdXJjZSB0aGVuIGl0IHJlYWxseSBvdWdodCB0byBzcGVjaWZ5IHRoZSBl bmRpYW5uZXNzLg0KDQpCdXQgdG8gdHJ1bHkga25vdywgSSB0aGluayB3ZSBuZWVkIHRvIGRlcHJl Y2F0ZSBkdW1teSBVVEYtMTYvMzIgYW5kIHNlZSBpZiBzb21lb25lIHJlYWxseSBoYXMgYSB1c2Ut Y2FzZSB3aGVyZSB0aGV5IGNhbm5vdCBkbyB3aXRob3V0IHRoZXNlLg0KVGhhdCBzZWVtcyBjbGVh cmx5IGltcG9zc2libGUgaWYgd2UgcHJvdmlkZSBhIG1ldGhvZCB0byBsb29rIGF0IHRoZSBCT00g YW5kIHJldHVybiB0aGUgZW5jb2Rpbmctd2l0aC1lbmRpYW4sIHVubGVzcyB0aGV5IGFjdHVhbGx5 IHdhbnQgdGhlIEJJTkFSWSBiZWhhdmlvciB3aGljaCBtYWtlcyBubyBzZW5zZS4NCg0KLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KRmVhdHVyZSAjMTg5NDk6IERlcHJl Y2F0ZSBhbmQgcmVtb3ZlIHJlcGxpY2F0ZSBhbmQgZHVtbXkgZW5jb2RpbmdzDQpodHRwczovL2J1 Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTg5NDkjY2hhbmdlLTk4NjEzDQoNCiogQXV0aG9yOiBF cmVnb24gKEJlbm9pdCBEYWxvemUpDQoqIFN0YXR1czogT3Blbg0KKiBQcmlvcml0eTogTm9ybWFs DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpSdWJ5IGhhcyBhIGxv dCBvZiBhY2NpZGVudGFsIGNvbXBsZXhpdHkuDQpTb21ldGltZXMgaXQgYmVjb21lcyBjbGVhciBz b21lIGZlYXR1cmVzIGJyaW5nIGEgbG90IG9mIGNvbXBsZXhpdHkgYW5kIHlldCBwcm92aWRlIGxp dHRsZSB2YWx1ZSBvciBhcmUgdXNlZCB2ZXJ5IHJhcmVseS4NCkFsc28gbW9zdCBSdWJ5IHVzZXJz IGRvIG5vdCBldmVuIGtub3cgYWJvdXQgdGhlc2UgZmVhdHVyZXMuDQpSZXBsaWNhdGUgYW5kIGR1 bW15IGVuY29kaW5ncyBzZWVtIHRvIGNsZWFybHkgZmFsbCBpbnRvIHRoaXMgY2F0ZWdvcnksIGFs bW9zdCBub2JvZHkgdXNlcyB0aGVtIGJ1dCB0aGV5IGFkZCBhIHNpZ25pZmljYW50IGNvbXBsZXhp dHkgYW5kIGFsc28gYWRkIGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2Ugb3ZlcmhlYWQuDQpOb3Rh Ymx5LCB0aGUgZXhpc3RlbmNlIG9mIHRob3NlIG1lYW5zIHRoZSBudW1iZXIgb2YgZW5jb2Rpbmdz IGluIGEgUnVieSBydW50aW1lIGlzIGFjdHVhbGx5IHZhcmlhYmxlIGFuZCBub3QgZml4ZWQuDQpU aGF0IG1lYW5zIGV4dHJhIHN5bmNocm9uaXphdGlvbiwgaGFzaHRhYmxlIGxvb2t1cHMsIGluZGly ZWN0aW9ucywgZnVuY3Rpb24gY2FsbHMsIGV0Yy4NCg0KIyMgUmVwbGljYXRlIEVuY29kaW5ncw0K DQpSZXBsaWNhdGUgZW5jb2RpbmdzIGFyZSBjcmVhdGVkIHVzaW5nIGBFbmNvZGluZyNyZXBsaWNh dGUobmFtZSlgLg0KSXQgYWxtb3N0IHNvdW5kcyBsaWtlIGFuIGFsaWFzIGJ1dCBpbiBmYWN0IGl0 IGlzIG1vcmUgdGhhbiB0aGF0IGFuZCBjcmVhdGVzIGEgbmV3IEVuY29kaW5nIG9iamVjdCwgd2hp Y2ggY2FuIGJlIHVzZWQgYnkgYSBTdHJpbmc6DQpgYGBydWJ5DQplID0gRW5jb2Rpbmc6OlVTX0FT Q0lJLnJlcGxpY2F0ZSgnTVktVVMtQVNDSUknKQ0KcyA9ICJhYmMiLmZvcmNlX2VuY29kaW5nKGUp DQpwIHMuZW5jb2RpbmcgIyA9PiBlDQpwIHMuZW5jb2RpbmcubmFtZSAjID0+ICdNWS1VUy1BU0NJ SScNCmBgYA0KDQpUaGlzIHNlZW1zIGNvbXBsZXRlbHkgdXNlbGVzcy4NClRoZXJlIGlzIGFuIG9i dmlvdXMgZmlyc3Qgc3RlcCBoZXJlIHdoaWNoIGlzIHRvIGNoYW5nZSBgRW5jb2RpbmcjcmVwbGlj YXRlYCB0byByZXR1cm4gdGhlIHJlY2VpdmVyLCBhbmQganVzdCBpbnN0YWxsIGFuIGFsaWFzIGZv ciBpdC4NClRoYXQgYXZvaWRzIGNyZWF0aW5nIG1vcmUgZW5jb2RpbmcgaW5zdGFuY2VzIG5lZWRs ZXNzbHkuDQoNCkkgdGhpbmsgd2Ugc2hvdWxkIGFsc28gZGVwcmVjYXRlIGFuZCByZW1vdmUgdGhp cyBtZXRob2QgdGhvdWdoLCBpdCBpcyBuZXZlciBhIGdvb2QgaWRlYSB0byBoYXZlIGEgZ2xvYmFs IG11dGFibGUgbWFwIGxpa2UgdGhpcy4NCklmIHNvbWVvbmUgd2FudCBleHRyYSBhbGlhc2VzIGZv ciBlbmNvZGluZ3MsIHRoZXkgY2FuIGVhc2lseSB0byBkbyBzbyBieSBoYXZpbmcgdGhlaXIgb3du IEhhc2g6IGB7IGFsaWFzID0+IGVuY29kaW5nIH0uZmV0Y2gobmFtZSkgeyBFbmNvZGluZy5maW5k KG5hbWUpIH1gLg0KDQojIyBEdW1teSBFbmNvZGluZ3MNCg0KRHVtbXkgZW5jb2RpbmdzIGFyZSBu b3QgcmVhbCBlbmNvZGluZ3MuIFRoZXkgYXJlIGFydGlmaWNpYWwgZW5jb2RpbmdzIGRlc2lnbmVk IHRvIGxvb2sgbGlrZSBlbmNvZGluZ3MsIGJ1dCBkb24ndCBmdW5jdGlvbiBhcyBlbmNvZGluZ3Mg aW4gUnVieS4NCkZyb20gdGhlIGRvY3M6DQpgYGANCmVuYy5kdW1teT8gLT4gdHJ1ZSBvciBmYWxz ZQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQpSZXR1cm5zIHRydWUgZm9yIGR1bW15IGVuY29kaW5ncy4gQSBk dW1teSBlbmNvZGluZyBpcyBhbiBlbmNvZGluZyBmb3INCndoaWNoIGNoYXJhY3RlciBoYW5kbGlu ZyBpcyBub3QgcHJvcGVybHkgaW1wbGVtZW50ZWQuIEl0IGlzIHVzZWQgZm9yDQpzdGF0ZWZ1bCBl bmNvZGluZ3MuDQpgYGANCg0KSSB3b25kZXIgd2h5IHdlIGhhdmUgdGhvc2UgaGFsZi1pbXBsZW1l bnRlZCBlbmNvZGluZ3MgaW4gY29yZSwgaXQgc291bmRzIHRvIG1lIGxpa2UgdW5maW5pc2hlZCB3 b3JrIHdoaWNoIHNob3VsZCBub3QgaGF2ZSBiZWVuIG1lcmdlZC4NCg0KVGhlICJjb2RlcG9pbnRz IiBvZiBkdW1teSBlbmNvZGluZ3MgYXJlIGp1c3QgImJ5dGVzIiBhbmQgc28gdGhleSBiZWhhdmUg dGhlIHNhbWUgYXMgYEVuY29kaW5nOjpCSU5BUllgLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhl IFVURi0xNiBhbmQgVVRGLTMyIGR1bW15IGVuY29kaW5ncy4NCg0KIyMjIFVURi0xNiBhbmQgVVRG LTMyIGR1bW15IGVuY29kaW5ncw0KDQpUaGVzZSB0d28gYXJlIHNwZWNpYWwgZHVtbXkgZW5jb2Rp bmdzLg0KV2hhdCB0aGV5IGRvIGlzIHRoZXkgc2NhbiB0aGUgZmlyc3QgMiBvciA0IGJ5dGVzIG9m IHRoZSBTdHJpbmcsIGFuZCBpZiB0aG9zZSBieXRlcyBhcmUgYSBieXRlLW9yZGVyIG1hcmsgKEJP TSksDQp0aGUgdHJ1ZSAiYWN0dWFsIiBlbmNvZGluZyBpcyByZXNvbHZlZCB0byBVVEYtMTZCRS9V VEYtMTZMRSBvciBVVEYtMzJCRS9VVEYtMzJMRS4NCk90aGVyd2lzZSwgYEVuY29kaW5nOjpCSU5B UllgIGlzIHJldHVybmVkLg0KVGhpcyBsb2dpYyBpcyBkb25lIGJ5IGBnZXRfYWN0dWFsX2VuY29k aW5nKClgLg0KDQpXaGF0IGlzIHdlaXJkIGlzIHRoaXMgY2hlY2sgaXMgbm90IGRvbmUgb24gU3Ry aW5nIGNyZWF0aW9uLCBubywgaXQgaXMgZG9uZSAqZXZlcnkgdGltZSogdGhlIGVuY29kaW5nIG9m IHRoYXQgU3RyaW5nIGlzIGFjY2Vzc2VkIChhbmQgdGhlIHJlc3VsdCBpcyBub3Qgc3RvcmVkIG9u IHRoZSBTdHJpbmcpLg0KVGhhdCBpcyBhIG5lZWRsZXNzIG92ZXJoZWFkIGFuZCByZWFsbHkgdW5y ZWxpYWJsZSBzZW1hbnRpY3MuDQpEbyB3ZSByZWFsbHkgd2FudCBhIFN0cmluZyB3aGljaCBhdXRv bWFnaWNhbGx5IGNoYW5nZXMgYmV0d2VlbiBVVEYtMTZMRSBhbmQgVVRGLTE2QkUgYmFzZWQgb24g bXV0YXRpbmcgaXRzIGJ5dGVzPyBJIHRoaW5rIG5vYm9keSB3YW50cyB0aGF0Og0KYGBgcnVieQ0K cyA9ICJceEZGXHhGRWFceDAwYlx4MDBjXHgwMGRceDAwIi5mb3JjZV9lbmNvZGluZygiVVRGLTE2 IikNCnAgcyAjID0+ICJcdUZFRkZhYmNkIg0Kcy5zZXRieXRlIDAsIDI1NA0Kcy5zZXRieXRlIDEs IDI1NQ0KcCBzICMgPT4gIlx1RkVGRlx1NjEwMFx1NjIwMFx1NjMwMFx1NjQwMCINCmBgYA0KDQpJ IHRoaW5rIHRoZSBwYXRoIGlzIGNsZWFyLCB3ZSBzaG91bGQgZGVwcmVjYXRlIGFuZCB0aGVuIHJl bW92ZSBFbmNvZGluZzo6VVRGXzE2IGFuZCBFbmNvZGluZzo6VVRGXzMyIChkdW1teSBlbmNvZGlu Z3MpLg0KQW5kIHRoZW4gd2Ugbm8gbG9uZ2VyIG5lZWQgYGdldF9hY3R1YWxfZW5jb2RpbmcoKWAg YW5kIHRoZSBvdmVyaGVhZCBpdCBhZGRzIHRvIGV2ZXJ5IFN0cmluZyBtZXRob2QuDQoNCldlIGNv dWxkIGFsc28ga2VlcCB0aG9zZSBjb25zdGFudHMgYW5kIG1ha2UgdGhlbSByZWZlciB0aGUgbmF0 aXZlLWVuZGlhbiBVVEYtMTYvMzIuDQpCdXQgdGhhdCBjb3VsZCBjYXVzZSBjb25mdXNpbmcgZXJy b3JzIGFzIHdlIHdvdWxkIGNoYW5nZSB0aGUgbWVhbmluZyBvZiB0aGVtLg0KV2UgY291bGQgYWRk IGBFbmNvZGluZzo6VVRGXzE2TkVgIC8gYEVuY29kaW5nOjpVVEZfMTZfTkFUSVZFX0VORElBTmAg aWYgdGhhdCBpcyB1c2VmdWwuDQoNCkFub3RoZXIgcG9zc2liaWxpdHkgd291bGQgYmUgdG8gcmVz b2x2ZSB0aGVzZSBlbmNvZGluZ3Mgb24gU3RyaW5nIGNyZWF0aW9uLCBsaWtlOg0KYGBgDQoiXHhG Rlx4RkUiLmZvcmNlX2VuY29kaW5nKCJVVEYtMTYiKS5lbmNvZGluZyAjID0+IFVURi0xNkxFDQpT dHJpbmcubmV3KCJceEZGXHhGRSIsIGVuY29kaW5nOiBFbmNvZGluZzo6VVRGXzE2KS5lbmNvZGlu ZyAjID0+IFVURi0xNkxFDQoiYWIiLmZvcmNlX2VuY29kaW5nKCJVVEYtMTYiKS5lbmNvZGluZyAj IGV4Y2VwdGlvbiwgbm90IGEgQk9NDQpTdHJpbmcubmV3KCJhYiIsIGVuY29kaW5nOiBFbmNvZGlu Zzo6VVRGXzE2KS5lbmNvZGluZyAjIGV4Y2VwdGlvbiwgbm90IGEgQk9NDQpgYGANCkkgdGhpbmsg aXQgaXMgdW5uZWNlc3NhcnkgdG8ga2VlcCBzdWNoIGNvbXBsZXhpdHkgdGhvdWdoLg0KQSBjbGFz cyBtZXRob2Qgb24gU3RyaW5nIG9yIEVuY29kaW5nIGxpa2UgZS5nLiBgRW5jb2RpbmcuZmluZF9m cm9tX2JvbShzdHJpbmcpYCBpcyBzbyBtdWNoIGNsZWFyZXIgYW5kIGVmZmljaWVudCAobm8gbmVl ZCB0byBzcGVjaWFsIGNhc2UgdGhvc2UgZW5jb2RpbmdzIGluIFN0cmluZy5uZXcsICNmb3JjZV9l bmNvZGluZywgZXRjKS4NCg0KRldJVyBKUnVieSBzZWVtcyB0byB1c2UgYGdldEFjdHVhbEVuY29k aW5nKClgIG9ubHkgaW4gMiBwbGFjZXMgKHNjYW5Gb3JDb2RlUmFuZ2UsIGluc3BlY3QpLCB3aGlj aCBpcyBhbiBpbmRpY2F0aW9uIHRob3NlIGR1bW15IFVURiBlbmNvZGluZ3MgYXJlIGJhcmVseSB1 c2VkIGlmIGV2ZXIuIFNpbWlsYXJseSwgVHJ1ZmZsZVJ1Ynkgb25seSBoYXMgNCB1c2FnZXMgb2Yg YEdldEFjdHVhbEVuY29kaW5nTm9kZWAuDQoNCiMjIyBFeGlzdGluZyBkdW1teSBlbmNvZGluZ3MN Cg0KYGBgDQo+IEVuY29kaW5nLmxpc3Quc2VsZWN0KCY6ZHVtbXk/KSANClsjPEVuY29kaW5nOlVU Ri0xNiAoZHVtbXkpPiwgICM8RW5jb2Rpbmc6VVRGLTMyIChkdW1teSk+LA0KICM8RW5jb2Rpbmc6 SUJNMDM3IChkdW1teSk+LCAjPEVuY29kaW5nOlVURi03IChkdW1teSk+LA0KICM8RW5jb2Rpbmc6 SVNPLTIwMjItSlAgKGR1bW15KT4sICM8RW5jb2Rpbmc6SVNPLTIwMjItSlAtMiAoZHVtbXkpPiwg IzxFbmNvZGluZzpJU08tMjAyMi1KUC1LRERJIChkdW1teSk+LA0KICM8RW5jb2Rpbmc6Q1A1MDIy MCAoZHVtbXkpPiwgIzxFbmNvZGluZzpDUDUwMjIxIChkdW1teSk+XQ0KYGBgDQoNClNvIGJlc2lk ZXMgVVRGLTE2L1VURi0zMiBkdW1teSwgaXQncyBvbmx5IDcgZW5jb2RpbmdzLg0KRG9lcyBhbnlv bmUgdXNlIG9uZSBvZiB0aGVzZSA3IGR1bW15IGVuY29kaW5ncz8NCg0KV2hhdCBpcyBpbnRlcmVz dGluZyB0byBub3RlLCBpcyB0aGF0IHRoZXNlIGVuY29kaW5ncyBhcmUgZXhhY3RseSB0aGUgb25l cyB0aGF0IGFyZSBhbHNvIG5vdCBBU0NJSS1jb21wYXRpYmxlLCB3aXRoIHRoZSBleGNlcHRpb24g b2YgVVRGLTE2QkUvVVRGLTE2TEUvVVRGLTMyQkUvVVRGLTMyTEUgKG5vbi1kdW1teSkuDQpBcyBh IG5vdGUsIFVURi17MTYsMzJ9e0JFLExFfSBhcmUgQVNDSUktY29tcGF0aWJsZSBpbiBjb2RlcG9p bnRzIGJ1dCBub3QgaW4gYnl0ZXMsIGFuZCBSdWJ5IHVzZXMgdGhlIGJ5dGVzIGRlZmluaXRpb24g b2YgQVNDSUktY29tcGF0aWJsZS4NClRoZXJlIGlzIHBvdGVudGlhbCB0byBzaW1wbGlmeSBlbmNv ZGluZyBjb21wYXRpYmlsaXR5IHJ1bGVzIGFuZCBlbmNvZGluZyBjb21wYXRpYmlsaXR5IGNoZWNr cyBiYXNlZCBvbiB0aGF0Lg0KU28gd2hhdCB0aGlzIG1lYW5zIGlzIGlmIHdlIHJlbW92ZWQgZHVt bXkgZW5jb2RpbmdzLCBhbGwgZW5jb2RpbmdzIGV4Y2VwdCBVVEYtezE2LDMyfXtCRSxMRX0gd291 bGQgYmUgQVNDSUktY29tcGF0aWJsZSwgd2hpY2ggd291bGQgbGVhZCB0byBzaWduaWZpY2FudCBz aW1wbGlmaWNhdGlvbnMgZm9yIG1hbnkgc3RyaW5nIG9wZXJhdGlvbnMgd2hpY2ggY3VycmVudGx5 IG5lZWQgdG8gaGFuZGxlIGR1bW15IGVuY29kaW5ncyBzcGVjaWFsbHkuDQpVbmljb2RlIGVuY29k aW5ncyBsaWtlIFVURi17MTYsMzJ9e0JFLExFfSBhbHJlYWR5IGhhdmUgc3BlY2lhbCBiZWhhdmlv ciBmb3Igc29tZSBSdWJ5IG1ldGhvZHMsIHNvIHRob3NlIGFyZSBhbHJlYWR5IGhhbmRsZWQgc3Bl Y2lhbGx5IGluIHNvbWUgcGxhY2VzICh0aGV5IGFyZSB0aGUgb25seSBlbmNvZGluZ3Mgd2l0aCBt aW5MZW5ndGggPiAxKS4NCg0KYGBgDQo+IEVuY29kaW5nLmxpc3QucmVqZWN0KCY6YXNjaWlfY29t cGF0aWJsZT8pDQpbIzxFbmNvZGluZzpVVEYtMTZCRT4sICM8RW5jb2Rpbmc6VVRGLTE2TEU+LA0K ICM8RW5jb2Rpbmc6VVRGLTMyQkU+LCAjPEVuY29kaW5nOlVURi0zMkxFPiwNCiAjPEVuY29kaW5n OlVURi0xNiAoZHVtbXkpPiwgIzxFbmNvZGluZzpVVEYtMzIgKGR1bW15KT4sDQogIzxFbmNvZGlu ZzpJQk0wMzcgKGR1bW15KT4sICM8RW5jb2Rpbmc6VVRGLTcgKGR1bW15KT4sDQogIzxFbmNvZGlu ZzpJU08tMjAyMi1KUCAoZHVtbXkpPiwgIzxFbmNvZGluZzpJU08tMjAyMi1KUC0yIChkdW1teSk+ LCAjPEVuY29kaW5nOklTTy0yMDIyLUpQLUtEREkgKGR1bW15KT4sDQogIzxFbmNvZGluZzpDUDUw MjIwIChkdW1teSk+LCAjPEVuY29kaW5nOkNQNTAyMjEgKGR1bW15KT5dDQpgYGANCg0KV2hhdCBj YW4gd2UgZG8gd2l0aCBzdWNoIGEgZHVtbXkgbm9uLUFTQ0lJLWNvbXBhdGlibGUgZW5jb2Rpbmc/ DQpBbG1vc3Qgbm90aGluZyB1c2VmdWw6DQpgYGBydWJ5DQpzID0gImFiYyIuZW5jb2RlKCJJQk0w MzciKQ0KPT4gIlx4ODFceDgyXHg4MyINCj4gcy5ieXRlcw0KPT4gWzEyOSwgMTMwLCAxMzFdDQo+ IHMuY29kZXBvaW50cw0KPT4gWzEyOSwgMTMwLCAxMzFdDQo+IHMgPT0gImFiYyINCj0+IGZhbHNl DQo+ICLDqXTDqSIuZW5jb2RlKCJJQk0wMzciKQ0KPT4gIlx4NTFceEEzXHg1MSINCmBgYA0KDQpT byBhYm91dCB0aGUgb25seSB0aGluZyB0aGF0IHdvcmtzIHdpdGggdGhlbSBpcyBgU3RyaW5nI2Vu Y29kZWAuDQoNCkkgdGhpbmsgd2UgY291bGQgcHJlc2VydmUgdGhhdCBmdW5jdGlvbmFsaXR5LCBp ZiBhY3R1YWxseSB1c2VkIChkb2VzIGFueW9uZSB1c2Ugb25lIG9mIHRoZXNlIDcgZHVtbXkgZW5j b2RpbmdzPyksIHRocm91Z2g6DQpgYGBydWJ5DQo+ICLDqXTDqSIuZW5jb2RlKCJJQk0wMzciKQ0K PT4gIlx4NTFceEEzXHg1MSIgKC5lbmNvZGluZyA9PSBCSU5BUlkpDQo+ICJceDUxXHhBM1x4NTEi LmVuY29kZSgiVVRGLTgiLCAiSUJNMDM3IikgIyBlbmNvZGUgZnJvbSBJQk0wMzcgdG8gVVRGLTgN Cj0+ICLDqXTDqSIgKC5lbmNvZGluZyA9PSBVVEYtOCkNCmBgYA0KDQpUaGF0IHdheSB0aGVyZSBp cyBubyBuZWVkIGZvciB0aG9zZSB0byBiZSBFbmNvZGluZyBpbnN0YW5jZXMsIHdlIHdvdWxkIG9u bHkgbmVlZCB0aGUgY29udmVyc2lvbiB0YWJsZXMuDQoNCkl0IGlzIGV2ZW4gYmV0dGVyIGlmIHdl IGNhbiByZW1vdmUgdGhlbSwgc28gdGhlIG5vdGlvbiBvZiAiZHVtbXkgZW5jb2RpbmdzIiBjYW4g ZGlzYXBwZWFyIGNvbXBsZXRlbHkgYW5kIG5vYm9keSBuZWVkcyB0byB1bmRlcnN0YW5kIG9yIGlt cGxlbWVudCB0aGVtLg0KDQojIyMgcmJfZGVmaW5lX2R1bW15X2VuY29kaW5nKG5hbWUpDQoNClRo ZSBDLUFQSSBoYXMgYHJiX2RlZmluZV9kdW1teV9lbmNvZGluZyhjb25zdCBjaGFyICpuYW1lKWAu DQpUaGlzIGNyZWF0ZXMgYSBuZXcgRW5jb2RpbmcgaW5zdGFuY2Ugd2l0aCBgZHVtbXk/PXRydWVg LCBhbmQgaXQgaXMgYWxzbyBub24tQVNDSUktY29tcGF0aWJsZS4NClRoZXJlIHNlZW1zIHRvIGJl IG5vIHB1cnBvc2UgdG8gdGhpcyBiZXNpZGVzIHN0b3JpbmcgdGhlIG1ldGFkYXRhIG9mIGFuIGVu Y29kaW5nIHdoaWNoIGRvZXMgbm90IGV4aXN0IGluIFJ1YnkuDQpUaGlzIHNlZW1zIGEgcmVhbGx5 IGV4cGVuc2l2ZS9jb21wbGV4IHdheSB0byBoYW5kbGUgdGhhdCBmcm9tIHRoZSBWTSBwb2ludCBv ZiB2aWV3IChiZWNhdXNlIGl0IGR5bmFtaWNhbGx5IGNyZWF0ZXMgYW4gRW5jb2RpbmcgYW5kIGFk ZCBpdCB0byBsaXN0cy9tYXBzL2V0YykuDQpBIHNpbXBsZSByZXBsYWNlbWVudCB3b3VsZCBiZSB0 byBtYXJrIHRoZSBTdHJpbmcgYXMgQklOQVJZIGFuZCBzYXZlIHRoZSBlbmNvZGluZyBuYW1lIGFz IGFuIGluc3RhbmNlIHZhcmlhYmxlIG9mIHRoYXQgU3RyaW5nLg0KU2luY2UgYW55d2F5IFJ1Ynkg Y2FuJ3QgdW5kZXJzdGFuZCBhbnl0aGluZyBhYm91dCB0aGF0IFN0cmluZywgaXQncyBqdXN0IHJh dyBieXRlcyB0byBSdWJ5J3MgZXllcy4NCg0KIyMgU3VtbWFyeQ0KDQpJIHN1Z2dlc3Qgd2UgZGVw cmVjYXRlIHJlcGxpY2F0ZSBhbmQgZHVtbXkgZW5jb2RpbmdzIGluIFJ1YnkgMy4yLg0KQW5kIHRo ZW4gd2UgcmVtb3ZlIHRoZW0gaW4gdGhlIG5leHQgdmVyc2lvbi4NCg0KVGhpcyB3aWxsIHNpZ25p ZmljYW50bHkgc2ltcGxpZnkgc3RyaW5nLXJlbGF0ZWQgbWV0aG9kcywgYW5kIHRoZSBiZWhhdmlv ciBleHBvc2VkIHRvIFJ1YnkgdXNlcnMuDQoNCkl0IHdpbGwgYWxzbyBzaWduaWZpY2FudGx5IHNw ZWVkdXAgZW5jb2RpbmcgbG9va3VwIGluIENSdWJ5IChhbmQgb3RoZXIgUnVieSBpbXBsZW1lbnRh dGlvbnMpLg0KV2l0aCBhIGZpeGVkIG51bWJlciBvZiBlbmNvZGluZ3Mgd2UgY2FuIGVuc3VyZSBh bGwgZW5jb2RpbmcgaW5kaWNlcyBmaXQgaW4gNyBiaXRzLCBhbmQgYEVOQ09ESU5HX0dFVGAgY2Fu IGJlIHNpbXBseSBgUkJfRU5DT0RJTkdfR0VUX0lOTElORURgLg0KYGdldF9hY3R1YWxfZW5jb2Rp bmcoKWAgd2lsbCBiZSBnb25lIGFuZCBpdHMgb3ZlcmhlYWQgYXMgd2VsbC4NCmByYl9lbmNfZnJv bV9pbmRleCgpYCB3b3VsZCBiZSBqdXN0IGByZXR1cm4gZ2xvYmFsX2VuY190YWJsZS0+bGlzdFtp bmRleF0uZW5jO2AsIGluc3RlYWQgb2YgdGhlIGV4cGVuc2l2ZSBiZWhhdmlvciBjdXJyZW50bHkg d2l0aCBgR0xPQkFMX0VOQ19UQUJMRV9FVkFMYCB3aGljaCB0YWtlcyBhIGxvY2sgYW5kIG1vcmUg d2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgUmFjdG9ycy4NCk1hbnkgY2hlY2tzIGluIHRoZXNlIG1l dGhvZHMgd291bGQgYmUgcmVtb3ZlZCBhcyB3ZWxsLg0KWWV0IGFub3RoZXIgaW1wcm92ZW1lbnQg d291bGQgYmUgdG8gbG9hZCBhbGwgZW5jb2RpbmdzIGVhZ2VybHksIHRoYXQgaXMgc21hbGwgYW5k IGZhc3QgaW4gbXkgZXhwZXJpZW5jZSwgd2hhdCBpcyBzbG93IGFuZCBiaWcgaXMgdGhlIGNvbnZl cnNpb24gdGFibGVzLCB0aGF0J2Qgc2ltcGxpZnkgYG11c3RfZW5jaW5kZXgoKWAgZnVydGhlci4N ClRoZXNlIGNoYW5nZXMgd291bGQgYWZmZWN0IG1vc3QgU3RyaW5nIG1ldGhvZHMsIHdoaWNoIHVz ZQ0KYGBgDQpTVFJfRU5DX0dFVC0+Z2V0X2VuY29kaW5nIHdoaWNoIGRvZXM6DQogIGdldF9hY3R1 YWxfZW5jb2RpbmctPnJiX2VuY19mcm9tX2luZGV4IGFuZCBwb3NzaWJseSAtPmVuY19mcm9tX2lu ZGV4DQogIEVOQ09ESU5HX0dFVC0+UkJfRU5DT0RJTkdfR0VUX0lOTElORUQgYW5kIHBvc3NpYmx5 IC0+cmJfZW5jX2dldF9pbmRleC0+ZW5jX2dldF9pbmRleF9zdHItPnJiX2F0dHJfZ2V0DQpgYGAN ClNvbWUgb2YgdGhlc2UgZGV0YWlscyBhcmUgbWVudGlvbmVkIGluIGh0dHBzOi8vZ2l0aHViLmNv bS9ydWJ5L3J1YnkvcHVsbC82MDk1I2Rpc2N1c3Npb25fcjkxNTE0OTcwOC4NClRoZSBvdmVyaGVh ZCBpcyBzbyBsYXJnZSB0aGF0IGl0IGlzIHdvcnRoIGhhbmRsaW5nIHNvbWUgaGFyZGNvZGVkIGVu Y29kaW5nIGluZGljZXMgZGlyZWN0bHkgaW4gU3RyaW5nIG1ldGhvZHMuDQpUaGlzIGZlZWxzIHdy b25nLCBnZXR0aW5nIHRoZSBlbmNvZGluZyBmcm9tIGEgU3RyaW5nIHNob3VsZCBiZSBzaW1wbGUs IHN0cmFpZ2h0Zm9yd2FyZCBhbmQgZmFzdC4NCg0KRnVydGhlciBvcHRpbWl6YXRpb25zIHdpbGwg YmUgdW5sb2NrZWQgYXMgdGhlIGVuY29kaW5nIGxpc3QgYmVjb21lcyBmaXhlZCBhbmQgaW1tdXRh YmxlLg0KRm9yIGV4YW1wbGUsIHRoZSBuYW1lLXRvLUVuY29kaW5nIG1hcCBpcyB0aGVuIGltbXV0 YWJsZSBhbmQgY291bGQgdXNlIHBlcmZlY3QgaGFzaGluZy4NCklubGluZSBjYWNoaW5nIHRob3Nl IGxvb2t1cHMgYWxzbyBiZWNvbWVzIGVhc2llciBhcyB0aGUgdGhlIG1hcCBjYW5ub3QgY2hhbmdl Lg0KQWxzbyB0aGF0IG1hcCB3b3VsZCBubyBsb25nZXIgbmVlZCBzeW5jaHJvbml6YXRpb24sIGV0 Yy4NCg0KIyMgVG8gRGVjaWRlDQoNCkVhY2ggaXRlbSBpcyBpbmRlcGVuZGVudC4gSSB0aGluayAx ICYgMiBhcmUgdmVyeSBpbXBvcnRhbnQsIDMgbGVzcyBidXQgd291bGQgYmUgbmljZS4NCg0KMS4g RGVwcmVjYXRlIGFuZCB0aGVuIHJlbW92ZSBgRW5jb2RpbmcjcmVwbGljYXRlYCBhbmQgYHJiX2Rl ZmluZV9kdW1teV9lbmNvZGluZygpYC4gV2l0aCB0aGF0IHRoZXJlIGlzIGEgZml4ZWQgbnVtYmVy IG9mIGVuY29kaW5ncywgYSBsb3Qgb2Ygc2ltcGxpZmljYXRpb25zIGFuZCBtYW55IG9wdGltaXph dGlvbnMgYmVjb21lIGF2YWlsYWJsZS4gVGhleSBhcmUgdXNlZCByZXNwZWN0aXZlbHkgaW4gb25s eSAxIGdlbSBhbmQgNSBnZW1zLCBzZWUgaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVz LzE4OTQ5I25vdGUtNA0KMi4gRGVwcmVjYXRlIGFuZCB0aGVuIHJlbW92ZSB0aGUgZHVtbXkgVVRG LTE2IGFuZCBVVEYtMzIgZW5jb2RpbmdzLiBUaGlzIHJlbW92ZXMgdGhlIG5lZWQgZm9yIGBnZXRf YWN0dWFsX2VuY29kaW5nKClgIHdoaWNoIGlzIGV4cGVuc2l2ZS4gVGhpcyBmdW5jdGlvbmFsaXR5 IHNlZW1zIHJhcmVseSB1c2VkIGluIHByYWN0aWNlLCBhbmQgaXQgb25seSB3b3JrcyB3aGVuIHN1 Y2ggc3RyaW5ncyBoYXZlIGEgQk9NLCB3aGljaCBpcyB2ZXJ5IHJhcmUuDQozLiBEZXByZWNhdGUg YW5kIHRoZW4gcmVtb3ZlIG90aGVyIGR1bW15IGVuY29kaW5ncywgc28gdGhlcmUgYXJlIG5vIG1v cmUgZHVtbXkgImhhbGYtaW1wbGVtZW50ZWQiIGVuY29kaW5ncyBhbmQgYWxsIGVuY29kaW5ncyBh cmUgQVNDSUktY29tcGF0aWJsZSBpbiB0ZXJtcyBvZiBjb2RlcG9pbnRzLg0KDQoNCg0KLS0gDQpo dHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8NCg==