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.7 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_PASS, SPF_PASS,UNPARSEABLE_RELAY 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 1497C1F403 for ; Sat, 8 Oct 2022 18:30:19 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.b="XbDJRUuM"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 03298120A53; Sun, 9 Oct 2022 03:30:15 +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 612AF120A4F for ; Sun, 9 Oct 2022 03:30:12 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ruby-lang.org; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to:cc; s=s1; bh=bXTjc6503toN/nUnaA8pz6bWAAdg/uxSvdI3iw3CoHg=; b=XbDJRUuMwjCbuuoFJJRWrQRbTCksIyNpax281dBQM5cJONqGIJn7q9dkQdYOTO2y7p7K +XpbWScD69F3fcT/Lkuo4v56g1wsc6IrCs+HYf/++p/A+I2Fc/SibE/vs2xdCdoUoHMJBt Kryfe5d+O98MRC7YNc9VdZvD6zqwRWLJ/IczEM+FixjrwRqpyceER4zrDY2udl07MZw4KP JLaGEl+I0JiHW2ctZBa+EuyzYNeaARGDy1ICy9TJBUahsz4m4RlnNRBrbJvjHLvbLve1/T PqGZgg4qfMPz6JHiPYNpn0KGNN5yRbXv7CG/6Wh+sSeGZAwzcj/X6BITOo0M7DrA== Received: by filterdrecv-b56db8d66-jwqn5 with SMTP id filterdrecv-b56db8d66-jwqn5-1-6341C1AF-1A 2022-10-08 18:30:07.366414296 +0000 UTC m=+938492.711225006 Received: from herokuapp.com (unknown) by geopod-ismtpd-5-5 (SG) with ESMTP id lGBXnG1wTQGV1v-x9YLs_Q for ; Sat, 08 Oct 2022 18:30:07.243 +0000 (UTC) Date: Sat, 08 Oct 2022 18:30:07 +0000 (UTC) From: "jeremyevans0 (Jeremy Evans)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 19024 X-Redmine-Issue-Author: shioyama X-Redmine-Sender: jeremyevans0 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: 86697 X-SG-EID: =?us-ascii?Q?zy3UxWTRryXcrjCh7SV39ZkShJ1PHkEOmoUEekBgd8G8RAJk=2FsUOlbLwuWEoNU?= =?us-ascii?Q?BxG3BBFmcsr21OPpQwa7zNRSwswJm1szgMd841w?= =?us-ascii?Q?HPqc4PCMq1kSAL+xo70px1PuCeY8+mfUbk8OwGX?= =?us-ascii?Q?wI7=2F+oh9idJ0K=2F4mivWBxRk8nAtkIeZwuxsMfLH?= =?us-ascii?Q?KC9stYs7azycEgtBHQEdOuDyyWot3jIWd9=2FwGSH?= =?us-ascii?Q?lMd7UZQNvpv8aSde+20GeomQ9Nfok8WdDL1Jx4u?= =?us-ascii?Q?KwZmxlOI6wqYu8k3aFxnA=3D=3D?= To: ruby-core@neon.ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 110239 Subject: [ruby-core:110239] [Ruby master Feature#19024] Proposal: Import Modules 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" SXNzdWUgIzE5MDI0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgamVyZW15ZXZhbnMwIChKZXJlbXkgRXZh bnMpLgoKCkBzaGlveWFtYSBUaGFuayB5b3UgZm9yIHRoYXQgZXhwbGFpbmF0aW9uLCBJIG5vdyBo YXZlIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG1vdGl2YXRpb24gZm9yIHRoaXMgcHJv cG9zYWwuCgpJbiB0ZXJtcyBvZiBsb2FkaW5nIGNvZGUsIFJ1YnkgaGFzIHR3byBtZXRob2RzLCBg bG9hZGAgYW5kIGByZXF1aXJlYC4gIGBsb2FkYCBjYW4gdGFrZSBhIHdyYXBwaW5nIG1vZHVsZSwg YHJlcXVpcmVgIGNhbm5vdC4gIE9uZSByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBgbG9hZGAgaXMg bm90IGRlc2lnbmVkIHRvIGJlIGlkZW1wb3RlbnQgKGl0IGxvYWRzIHRoZSBmaWxlIGV2ZXJ5IHRp bWUpLCB3aGlsZSBgcmVxdWlyZWAgaXMgZGVzaWduZWQgdG8gYmUgaWRlbXBvdGVudCAoaXQgZG9l cyBub3QgbG9hZCB0aGUgc2FtZSBmaWxlIG1vcmUgdGhhbiBvbmNlKS4gIFNpbmNlIGBsb2FkYCBp cyBub3QgZGVzaWduZWQgdG8gYmUgaWRlbXBvdGVudCwgaXQgY2FuIHRha2UgYSB3cmFwcGluZyBt b2R1bGUsIGFzIHRoZSBiZWhhdmlvciBjYW4gdmFyeSBwZXItY2FsbC4gIFRoaXMgZG9lcyBub3Qg YXBwbHkgdG8gYHJlcXVpcmVgLCBiZWNhdXNlIGByZXF1aXJlYCBtdXN0IGJlIGlkZW1wb3RlbnQu ICBGdW5kYW1lbnRhbGx5LCB5b3UgY2Fubm90IHN1cHBvcnQgYHJlcXVpcmVgIHdpdGggYSB3cmFw cGluZyBtb2R1bGUgd2l0aG91dCBsb3NpbmcgdGhlIGlkZW1wb3RlbmN5LiAgVGhlIGZvbGxvd2lu ZyBjb2RlIGNvdWxkIG5vdCB3b3JrIGFuZCBiZSBpZGVtcG90ZW50OgoKYGBgcnVieQpNeU1vZHVs ZTEgPSBNb2R1bGUubmV3Ck15TW9kdWxlMiA9IE1vZHVsZS5uZXcKcmVxdWlyZSAnZm9vJywgTXlN b2R1bGUxCnJlcXVpcmUgJ2ZvbycsIE15TW9kdWxlMgpgYGAKCkZvciBzaW1pbGFyIHJlYXNvbnMs IG1ha2luZyBgcmVxdWlyZWAgaW1wbGljaXRseSBzdXBwb3J0IHRoZSBjdXJyZW50bHkgd3JhcHBp bmcgbW9kdWxlIHdvdWxkIGJyZWFrIGlkZW1wb3RlbmN5IGFuZCB0aGVyZWZvcmUgSSBkbyBub3Qg dGhpbmsgaXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQuCgpJbiB0ZXJtcyBvZiBwdXJlbHkgcmVkdWNp bmcgdGhlIGFtb3VudCBvZiBuYW1lc3BhY2UgYm9pbGVycGxhdGUsIHlvdSBjYW4gdXNlIGBsb2Fk YCBmb3IgaW50ZXJuYWwgY29kZSBsb2FkaW5nLiAgSSB0aGluayB5b3Ugd291bGQgc3RpbGwgd2Fu dCB0byB1c2UgYHJlcXVpcmVgIGZvciBmaWxlcyBpbiBnZW1zLCBzaW5jZSB5b3UgZG8gbm90IGNv bnRyb2wgdGhhdCBjb2RlIChpbnRlcm5hbGx5LCB0aG9zZSBnZW1zIGNvdWxkIHVzZSBhIHNpbWls YXIgYXBwcm9hY2ggdG8gdGhpcyk6CgpgYGBydWJ5CiMgcGF5bWVudHMvYXBpX2NsaWVudHMvZm9v X2NsaWVudC5yYgpyZXF1aXJlICJteV9jbGllbnRfZ2VtL2FwaV9jbGllbnQiCgpjbGFzcyBGb29D bGllbnQgPCBNeUNsaWVudEdlbTo6QXBpQ2xpZW50CiAgIyAuLi4KZW5kCgojIHBheW1lbnRzL2Fw aV9jbGllbnRzL2Jhcl9jbGllbnQucmIKcmVxdWlyZSAibXlfY2xpZW50X2dlbS9hcGlfY2xpZW50 IgoKY2xhc3MgQmFyQ2xpZW50IDwgTXlDbGllbnRHZW06OkFwaUNsaWVudAogICMgLi4uCmVuZAoK IyBwYXltZW50cy5yYgptb2R1bGUgUGF5bWVudHMKICBsb2FkIEZpbGUuZXhwYW5kX3BhdGgoImFw aV9jbGllbnRzL2Zvb19jbGllbnQucmIiLCBfX2Rpcl9fKSwgc2VsZgogIGxvYWQgRmlsZS5leHBh bmRfcGF0aCgiYXBpX2NsaWVudHMvYmFyX2NsaWVudC5yYiIsIF9fZGlyX18pLCBzZWxmCgogICMg ZG8gc29tZXRoaW5nIHdpdGggUGF5bWVudHM6OkZvb0NsaWVudCBhbmQgUGF5bWVudHM6OkJhckNs aWVudAplbmQKYGBgCgpOb3RlIHRoYXQgdGhlIHdyYXBwaW5nIG1vZHVsZSBmb3IgYGxvYWRgIG9u bHkgY3VycmVudGx5IHN1cHBvcnRzIGEgc2luZ2xlIG5hbWVzcGFjZSwgbm90IG11bHRpcGxlIG5h bWVzcGFjZXMuIE1heWJlIHlvdXIgcGF0Y2ggYWRkcyB0aGF0LCBidXQgSSBjb3VsZG4ndCB0ZWxs IGJlY2F1c2UgaXQgZG9lc24ndCBpbmNsdWRlIHRlc3RzLiAgTm90ZSB0aGF0IHlvdSBjYW4gY3Vy cmVudGx5IHN1cHBvcnQgbXVsdGlwbGUgbmFtZXNwYWNlcyB1c2luZyBgZXZhbGAuICBUaGUgYXBw cm9hY2ggc2VlbXMga2luZCBvZiB1Z2x5LCBidXQgaXQncyBiYXNpY2FsbHkgd2hhdCB5b3Ugc2Vl bSB0byB3YW50IGluIHRlcm1zIG9mIGltcGxpY2l0IG5lc3Rpbmc6CgpgYGBydWJ5Cm1vZHVsZSBQ YXltZW50cwogIGNsYXNzIE5lc3RlZAogICAgIyBUb3AgbGV2ZWwgY29uc3RhbnQgbG9va3VwIGlu IHRoZSAqX2NsaWVudCBmaWxlcyB1c2VzIFBheW1lbnRzOjpOZXN0ZWQsIFBheW1lbnRzLCBPYmpl Y3QKICAgIGZvb19wYXRoID0gRmlsZS5leHBhbmRfcGF0aCgiYXBpX2NsaWVudHMvZm9vX2NsaWVu dC5yYiIsIF9fZGlyX18pKQogICAgZXZhbCBGaWxlLnJlYWQoZm9vX3BhdGgpLCBiaW5kaW5nLCBm b29fcGF0aAoKICAgIGJhcl9wYXRoID0gRmlsZS5leHBhbmRfcGF0aCgiYXBpX2NsaWVudHMvYmFy X2NsaWVudC5yYiIsIF9fZGlyX18pKQogICAgZXZhbCBGaWxlLnJlYWQoYmFyX3BhdGgpLCBiaW5k aW5nLCBiYXJfcGF0aAogIGVuZAoKICAjIGRvIHNvbWV0aGluZyB3aXRoIFBheW1lbnRzOjpGb29D bGllbnQgYW5kIFBheW1lbnRzOjpCYXJDbGllbnQKZW5kCmBgYAoKV2hpbGUgSSB1bmRlcnN0YW5k IHRoZSBnb2FsIG9mIHJlZHVjaW5nIG5hbWVzcGFjZSAiYm9pbGVycGxhdGUiLCBJIHRoaW5rIGl0 IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgcmVtb3ZpbmcgZXhwbGljaXQgbmFtZXNw YWNlcyBpcyBhIHRyYWRlb2ZmLiAgSWYgeW91IGRvIG5vdCBsZWF2ZSB0aGUgbmFtZXNwYWNlcyBp biB0aGUgZmlsZSwgYnV0IGluc3RlYWQgbGV0IHRoZW0gYmUgaW1wbGljaXQsIHRoZSBjb2RlIGxp a2VseSBiZWNvbWVzIG1vcmUgZGlmZmljdWx0IHRvIHVuZGVyc3RhbmQuIFlvdSBzdGF0ZSB0aGF0 IHByb2dyYW1tZXJzIHdvdWxkIG5hdHVyYWxseSBwcmVmZXIgaW1wbGljaXQgbmFtZXNwYWNlcyBv dmVyIGV4cGxpY2l0IG5hbWVzcGFjZXMsIGJ1dCBJJ20gbm90IHN1cmUgdGhhdCBpcyB0cnVlLiAg SW1wbGljaXQgY29kZSBpcyBub3QgbmVjZXNzYXJpbHkgYmV0dGVyIHRoYW4gZXhwbGljaXQgY29k ZS4gIFdoYXQgeW91IGNvbnNpZGVyICJpcnJlbGV2YW50IiBtYXkgYmUgdmVyeSByZWxldmFudCB0 byBzb21lb25lIHdobyBpc24ndCBmYW1pbGlhciB3aXRoIHRoZSBjb2RlIGFuIGFsbCBvZiB0aGUg aW1wbGljaXQgbmFtZXNwYWNlcyBiZWluZyBkZWFsdCB3aXRoLgoKWW91IGRlc2NyaWJlIHRoZSBj dXJyZW50IHN0YXRlIG9mIGFmZmFpcnMgYXMgYSAidGVycmlibGUgdHJhZGVvZmYiLCBidXQgdGhh dCBzZWVtcyBoeXBlcmJvbGljIHRvIG1lLiAgQXQgbW9zdCwgaGF2aW5nIHRvIHVzZSBleHBsaWNp dCBuYW1lc3BhY2VzIHNob3VsZCBiZSBtaWxkbHkgYW5ub3lpbmcsIGV2ZW4gaWYgeW91IGhhdmUg ZnVsbCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb2RlIGFuZCBjYW4gZGVhbCB3aXRoIGltcGxpY2l0 IG5hbWVzcGFjZXMuCgpJbiB0ZXJtcyBvZiBlbmNhcHN1bGF0aW9uLCBSdWJ5IGFsbG93cyB0cml2 aWFsIGJyZWFraW5nIG9mIGVuY2Fwc3VsYXRpb24gZXZlbiBpbiBjb2RlIHRoYXQgdXNlcyB3cmFw cGVkIG1vZHVsZXMuIGA6OkZvb2AgYWx3YXlzIHJlZmVycyB0byBgT2JqZWN0OjpGb29gLiAgWW91 IGNvdWxkIG5vdCB1c2Ugd3JhcHBpbmcgbW9kdWxlIHN1cHBvcnQgdG8gZW5mb3JjZSBlbmNhcHN1 bGF0aW9uIGluIFJ1YnkuCgpOb3RlIHRoYXQgYm90aCB0aGUgYGxvYWRgIGFuZCBgZXZhbGAgYXBw cm9hY2hlcyBJJ3ZlIHNob3duIGFyZSB1bmxpa2VseSB0byB3b3JrIHdlbGwgaWYgeW91IGhhdmUg b3B0aW9uYWwgcGFydHMgb2YgdGhlIGNvZGViYXNlIHRoYXQgeW91IHdvdWxkIGxpa2UgdG8gbG9h ZCBpbiBkaWZmZXJlbnQgcGxhY2VzLiAgSW4gc2l0dWF0aW9ucyBsaWtlIHRoYXQsIHlvdSByZWFs bHkgbmVlZCB0aGUgaWRlbXBvdGVuY3kgdGhhdCBgcmVxdWlyZWAgb2ZmZXJzLCB0byBtYWtlIHN1 cmUgdGhlIHJlbGF0ZWQgY29kZSBpcyBvbmx5IGxvYWRlZCBvbmNlLgoKQHNoaW95YW1hIEkgdGhp bmsgaXQgd291bGQgYmUgaGVscGZ1bCBpZiwgZm9yIGVhY2ggb2YgdGhlIHBhdGNoZXMgeW91IGFy ZSBwcm9wb3NpbmcsIHlvdSBpbmNsdWRlIHRlc3RzIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNlZSB3 aGF0IGVhY2ggcGF0Y2ggYWxsb3dzIGFuZCBob3cgdGhlIGJlaGF2aW9yIGNoYW5nZXMuICBUbyB0 aGUgZXh0ZW50IHRoYXQgdGhlIHBhdGNoZXMgYXJlIGluZGVwZW5kZW50LCBhIHNlcGFyYXRlIHB1 bGwgcmVxdWVzdCB3aXRoIHRlc3RzIGZvciBlYWNoIHdvdWxkIGJlIGhlbHBmdWwgYW5kIGFpZCBy ZXZpZXcuIEV2ZW4gdGhvdWdoIEkgZG9uJ3QgdGhpbmsgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYGxv YWRgL2ByZXF1aXJlYCBpcyBhbiBpc3N1ZSB3b3J0aCBmaXhpbmcsIEkgdGhpbmsgZWFjaCBwYXRj aCBjb3VsZCBiZSBjb25zaWRlcmVkIG9uIGl0cyBvd24gbWVyaXRzLgoKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpGZWF0dXJlICMxOTAyNDogUHJvcG9zYWw6IEltcG9y dCBNb2R1bGVzCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xOTAyNCNjaGFuZ2Ut OTk1MjYKCiogQXV0aG9yOiBzaGlveWFtYSAoQ2hyaXMgU2FsemJlcmcpCiogU3RhdHVzOiBPcGVu CiogUHJpb3JpdHk6IE5vcm1hbAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tClRoZXJlIGlzIG5vIGdlbmVyYWwgd2F5IGluIFJ1YnkgdG8gbG9hZCBjb2RlIG91dHNpZGUg b2YgdGhlIGdsb2JhbGx5LXNoYXJlZCBuYW1lc3BhY2UuIFRoaXMgbWFrZXMgaXQgaGFyZCB0byBp c29sYXRlIGNvbXBvbmVudHMgb2YgYW4gYXBwbGljYXRpb24gZnJvbSBlYWNoIG90aGVyIGFuZCBm cm9tIHRoZSBhcHBsaWNhdGlvbiBpdHNlbGYsIGxlYWRpbmcgdG8gY29tcGxpY2F0ZWQgcmVsYXRp b25zaGlwcyB0aGF0IGNhbiBiZWNvbWUgaW50cmFjdGFibGUgYXMgYXBwbGljYXRpb25zIGdyb3cg aW4gc2l6ZS4KClRoZSBncm93aW5nIHBvcHVsYXJpdHkgb2YgYSBnZW0gbGlrZSBbUGFja3dlcmtd KGh0dHBzOi8vZ2l0aHViLmNvbS9zaG9waWZ5L3BhY2t3ZXJrKSwgd2hpY2ggcHJvdmlkZXMgYSBu ZXcgY29uY2VwdCBvZiAicGFja2FnZSIgdG8gZW5mb2NlIGJvdW5kYXJpZXMgc3RhdGljYWxseSBp biBDSSwgaXMgZXZpZGVuY2UgdGhhdCB0aGlzIGlzIGEgcmVhbCBwcm9ibGVtLiBCdXQgaW50cm9k dWNpbmcgYSBuZXcgcGFja2FnaW5nIGNvbmNlcHQgYW5kIENJIHN0ZXAgaXMgYXQgYmVzdCBvbmx5 IGEgcGFydGlhbCBzb2x1dGlvbiwgd2l0aCBkb3duc2lkZXM6IGl0IGFkZHMgY29tcGxleGl0eSBh bmQgY29nbml0aXZlIG92ZXJoZWFkIHRoYXQgd291bGRuJ3QgYmUgbmVjZXNzYXJ5IGlmIFJ1Ynkg cHJvdmlkZWQgYmV0dGVyIHBhY2thZ2luZyBpdHNlbGYgKGFzIE1hdHogaGFzIHN1Z2dlc3RlZCBb aXQgc2hvdWxkXShodHRwczovL3lvdXR1LmJlL0RwMTJhM0tHTkZ3P3Q9Mjk1NikpLgoKVGhlcmUg aXMgX29uZV8gbGltaXRlZCB3YXkgaW4gUnVieSBjdXJyZW50bHkgdG8gbG9hZCBjb2RlIHdpdGhv dXQgcG9sbHV0aW5nIHRoZSBnbG9iYWwgbmFtZXNwYWNlOiBgbG9hZGAgd2l0aCB0aGUgYHdyYXBg IHBhcmFtZXRlciwgd2hpY2ggYXMgb2YgaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVz LzYyMTAgY2FuIG5vdyBiZSBhIG1vZHVsZS4gSG93ZXZlciwgdGhpcyBvcHRpb24gZG9lcyBub3Qg YXBwbHkgdHJhbnNpdGl2ZWx5IHRvIGByZXF1aXJlYCBjYWxscyB3aXRoaW4gdGhlIGxvYWRlZCBm aWxlLCBzbyBpdHMgdXNlZnVsbmVzcyBpcyBsaW1pdGVkLgoKTXkgcHJvcG9zYWwgaGVyZSBpcyB0 byBlbmFibGUgbW9kdWxlIGltcG9ydHMgYnkgZG9pbmcgdGhlIGZvbGxvd2luZzoKCjEuIGFwcGx5 IHRoZSBgd3JhcGAgbW9kdWxlIG5hbWVzcGFjZSB0cmFuc2l0aXZlbHkgdG8gYHJlcXVpcmVgcyBp bnNpZGUgdGhlIGxvYWRlZCBjb2RlLCBpbmNsdWRpbmcgbmF0aXZlIGV4dGVuc2lvbnMgKG9yIHBy b3ZpZGUgYSBuZXcgZmxhZyBvciBtZXRob2QgdGhhdCB3b3VsZCBkbyB0aGlzKSwKMi4gbWFrZSB0 aGUgYHdyYXBgIG1vZHVsZSB0aGUgdG9wbGV2ZWwgY29udGV4dCBmb3IgY29kZSBsb2FkZWQgdW5k ZXIgaXQsIHNvIGA6OkZvb2AgcmVzb2x2ZXMgdG8gYDx0b3Bfd3JhcHBlcj46OkZvb2AgaW4gbG9h ZGVkIGNvZGUgKG9yLCBhZ2FpbiwgcHJvdmlkZSBhIG5ldyBmbGFnIG9yIG1ldGhvZCB0aGF0IHdv dWxkIGRvIHRoaXMpLiBfQWxzbyBtYWtlIHRoaXMgYXBwbHkgd2hlbiBjb2RlIHVuZGVyIHRoZSB3 cmFwcGVyIG1vZHVsZSBpcyBjYWxsZWQgb3V0c2lkZSBvZiB0aGUgbG9hZCBwcm9jZXNzICh3aGVu IGB0b3Bfd3JhcHBlcmAgaXMgbm8gbG9uZ2VyIHNldCkgJm1kYXNoOyB0aGlzIG1heSBiZSBxdWl0 ZSBoYXJkIHRvIGRvXy4KMy4gcmVzb2x2ZSBgbmFtZWAgb24gYW5vbnltb3VzIG1vZHVsZXMgdW5k ZXIgdGhlIHdyYXBwZWQgbW9kdWxlIHRvIHRoZWlyIG5hbWVzIHdpdGhvdXQgdGhlIHRvcCB3cmFw cGVyIG1vZHVsZSwgc28gYDx0b3Bfd3JhcHBlcj46OkZvby5uYW1lYCBldmFsdWF0ZXMgdG8gYCJG b28iYC4gVGhlcmUgbWF5IGJlIG90aGVyIHdheXMgdG8gaGFuZGxlIHRoaXMgcHJvYmxlbSwgYnV0 IGEgZ2VtIGxpa2UgUmFpbHMgdXNlcyBgbmFtZWAgdG8gcmVzb2x2ZSBmaWxlbmFtZXMgYW5kIGZh aWxzIHdoZW4gYW5vbnltb3VzIG1vZHVsZXMgcmV0dXJuIHNvbWV0aGluZyBsaWtlIGAjPE1vZHVs ZTogLi4uPjo6QWN0aXZlUmVjb3JkYCBpbnN0ZWFkIG9mIGp1c3QgYEFjdGl2ZVJlY29yZGAuCgpJ IGhhdmUgcm91Z2hseSBpbXBsZW1lbnRlZCB0aGVzZSB0aHJlZSB0aGluZ3MgaW4gW3RoaXMgcGF0 Y2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvY29tcGFyZS9tYXN0ZXIuLi5zaGlveWFt YTpydWJ5OmltcG9ydF9tb2R1bGVzKS4gVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBpbmNvbXBsZXRl IChpdCBkb2VzIG5vdCBjb3ZlciB0aGUgbGFzdCBoaWdobGlnaHRlZCBwYXJ0IG9mIDIpIGJ1dCBw cm92aWRlcyBlbm91Z2ggb2YgYSBiYXNpcyB0byBpbXBsZW1lbnQgYW4gYGltcG9ydGAgbWV0aG9k LCB3aGljaCBJIGhhdmUgZG9uZSBpbiBhIGdlbSBjYWxsZWQgW0ltXShodHRwczovL2dpdGh1Yi5j b20vc2hpb3lhbWEvaW0pLgoKSW0gcHJvdmlkZXMgYW4gYGltcG9ydGAgbWV0aG9kIHdoaWNoIGNh biBiZSB1c2VkIHRvIGltcG9ydCBnZW0gY29kZSB1bmRlciBhIG5hbWVzcGFjZToKCmBgYHJ1YnkK cmVxdWlyZSAiaW0iCmV4dGVuZCBJbQoKYWN0aXZlX21vZGVsID0gaW1wb3J0ICJhY3RpdmVfbW9k ZWwiCiM9PiA8I0ltOjpJbXBvcnQgcm9vdDogYWN0aXZlX21vZGVsPgoKQWN0aXZlTW9kZWwKIz0+ IE5hbWVFcnJvcgoKYWN0aXZlX21vZGVsOjpBY3RpdmVNb2RlbAojPT4gQWN0aXZlTW9kZWwKCmFj dGl2ZV9yZWNvcmQgPSBpbXBvcnQgImFjdGl2ZV9yZWNvcmQiCiM9PiA8I0ltOjpJbXBvcnQgcm9v dDogYWN0aXZlX3JlY29yZD4KCiMgQ29uc3RhbnRzIGRlZmluZWQgaW4gdGhlIHNhbWUgZmlsZSB1 bmRlciBkaWZmZXJlbnQgaW1wb3J0cyBwb2ludCB0byB0aGUgc2FtZSBvYmplY3RzCmFjdGl2ZV9y ZWNvcmQ6OkFjdGl2ZU1vZGVsID09IGFjdGl2ZV9tb2RlbDo6QWN0aXZlTW9kZWwKIz0+IHRydWUK YGBgCgpXaXRoIHRoZSBjb25zdGFudHMgYWxsIGxvYWRlZCB1bmRlciBhbiBhbm9ueW1vdXMgbmFt ZXNwYWNlLCBhbnkgY29kZSBpbXBvcnRpbmcgdGhlIGdlbSBjYW4gbmFtZSBjb25zdGFudHMgaG93 ZXZlciBpdCBsaWtlczoKCmBgYHJ1YnkKY2xhc3MgUG9zdCA8IGFjdGl2ZV9yZWNvcmQ6OkFjdGl2 ZVJlY29yZDo6QmFzZQplbmQKCkFSID0gYWN0aXZlX3JlY29yZDo6QWN0aXZlUmVjb3JkCgpQb3N0 LnN1cGVyY2xhc3MKIz0+IEFSOjpCYXNlCmBgYAoKTm90ZSB0aGF0IHRoaXMgZW5hYmxlcyB0aGUg aW1wb3J0ZXIgdG8gY29tcGxldGVseSBkZXRlcm1pbmUgdGhlIG5hbWluZyBmb3IgZXZlcnkgY29u c3RhbnQgaXQgaW1wb3J0cy4gU28gZ2VtcyBjYW4gb3B0IHRvIGhpZGUgdGhlaXIgZGVwZW5kZW5j aWVzIGJ5ICJhbmNob3JpbmciIHRoZW0gaW5zaWRlIHRoZWlyIG93biBuYW1lc3BhY2UsIGxpa2Ug dGhpczoKCmBgYHJ1YnkKIyBpbiBsaWIvbXlfZ2VtLnJiCm1vZHVsZSBNeUdlbQogIGRlcCA9IGlt cG9ydCAibXlfZ2VtX2RlcGVuZGVuY3kiCgogICMgbXlfZ2VtX2RlcGVuZGVuY3kgaXMgImFuY2hv cmVkIiB1bmRlciB0aGUgTXlHZW0gbmFtZXNwYWNlLCBzbyBub3QgZXhwb3NlZCB0byB1c2Vycwog ICMgb2YgdGhlIGdlbSB1bmxlc3MgdGhleSBhbHNvIHJlcXVpcmUgaXQuCiAgTXlHZW1EZXBlbmRl bmN5ID0gZGVwCgogICMuLi4KZW5kCmBgYAoKVGhlcmUgYXJlIGEgY291cGxlIGltcG9ydGFudCBp bXBsZW1lbnRhdGlvbiBkZWNpc2lvbnMgaW4gdGhlIGdlbToKCjEuIF9Pbmx5IGxvYWQgY29kZSBv bmNlLl8gV2hlbiB0aGUgc2FtZSBmaWxlIGlzIGltcG9ydGVkIGFnYWluIChlaXRoZXIgZGlyZWN0 bHkgb3IgdHJhbnNpdGl2ZWx5KSwgImNvcHkiIGNvbnN0YW50cyBmcm9tIHByZXZpb3VzbHkgaW1w b3J0ZWQgbmFtZXNwYWNlIHRvIHRoZSBuZXcgbmFtZXNwYWNlIHVzaW5nIGEgcmVnaXN0cnkgd2hp Y2ggbWFwcyB3aGljaCBuYW1lc3BhY2UgKGltcG9ydCkgd2FzIHVzZWQgdG8gbG9hZCB3aGljaCBm aWxlIChhcyBzaG93biBhYm92ZSB3aXRoIGFjdGl2ZXJlY29yZC9hY3RpdmVtb2RlbCkuIFRoaXMg aXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IGRpZmZlcmVudCBpbXBvcnRzIGNhbiAic2VlIiBz aGFyZWQgZmlsZXMuIEEgc2ltaWxhciByZWdpc3RyeSBpcyB1c2VkIHRvIHRyYWNrIGF1dG9sb2Fk cyBzbyB0aGF0IHRoZXkgd29yayBjb3JyZWN0bHkgd2hlbiB1c2VkIGZyb20gaW1wb3J0ZWQgY29k ZS4KMi4gVG9wbGV2ZWwgY29yZSB0eXBlcyAoYE5pbENsYXNzYCwgYFRydWVDbGFzc2AsIGBGYWxz ZUNsYXNzYCwgYFN0cmluZ2AsIGV0YykgYXJlICJhbGlhc2VkIiB0byBjb25zdGFudHMgdW5kZXIg ZWFjaCBpbXBvcnQgbW9kdWxlIHRvIG1ha2UgdGhlbSBhdmFpbGFibGUuIFRodXMgdGhlcmUgY2Fu IGJlIHNpZGUtZWZmZWN0cyBvZiBpbXBvcnRpbmcgY29kZSwgYnV0IHRoaXMgYWxsb3dzIGEgZ2Vt IGxpa2UgUmFpbHMgdG8gbW9ua2V5cGF0Y2ggY29yZSBjbGFzc2VzIHdoaWNoIGl0IG5lZWRzIHRv IGRvIGZvciBpdCB0byB3b3JrLgozLiBgT2JqZWN0LmNvbnN0X21pc3NpbmdgIGlzIHBhdGNoZWQg dG8gY2hlY2sgdGhlIGNhbGxlciBsb2NhdGlvbiBhbmQgcmVzb2x2ZSB0byB0aGUgY29uc3RhbnQg ZGVmaW5lZCB1bmRlciBhbiBpbXBvcnQsIGlmIHRoZXJlIGlzIGFuIGltcG9ydCBkZWZpbmVkIGZv ciB0aGF0IGZpbGUuCgpUbyBiZSBjbGVhcjogKipJIHRoaW5rIDEpIHNob3VsZCBiZSBpbXBsZW1l bnRlZCBpbiBSdWJ5LCBidXQgbm90IDIpIGFuZCAzKS4qKiBUaGUgbGFzdCBvbmUgKGBPYmplY3Qu Y29uc3RfbWlzc2luZ2ApIGlzIGEgaGFjayB0byBzdXBwb3J0IHRoZSBjYXNlIHdoZXJlIGEgdG9w bGV2ZWwgY29uc3RhbnQgaXMgcmVmZXJlbmNlZCBmcm9tIGEgbWV0aG9kIGNhbGxlZCBpbiBpbXBv cnRlZCBjb2RlIChhdCB3aGljaCBwb2ludCB0aGUgYHRvcF93cmFwcGVyYCBpcyBub3QgYWN0aXZl LikKCkkga25vdyB0aGlzIGlzIGEgYmlnIHByb3Bvc2FsLCBhbmQgdGhlcmUgYXJlIHN0cm9uZyBv cGluaW9ucyBoZWxkLiBJIHdvdWxkIHJlYWxseSBhcHByZWNpYXRlIGNvbnN0cnVjdGl2ZSBmZWVk YmFjayBvbiB0aGlzIGdlbmVyYWwgaWRlYS4KClNlZSBhbHNvIHNpbWlsYXIgZGlzY3Vzc2lvbiBp bjogaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzEwMzIwCgoKCi0tIApodHRwczov L2J1Z3MucnVieS1sYW5nLm9yZy8K