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_MED,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,URIBL_GREY shortcircuit=no autolearn=no 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 2773A1F4D7 for ; Thu, 12 May 2022 20:05:27 +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="qzVEbMiK"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 07BEE120A88; Fri, 13 May 2022 05:05:23 +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 40234120A74 for ; Fri, 13 May 2022 05:05:20 +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; s=smtpapi; bh=9idcpOR1h/+qlT8Now/TjaBf4YHWbEBH1SjmLqwUnqQ=; b=qzVEbMiK64tp9vQ7ZxI1ahByLutXW9HIFdPPUrG09AnjazSevFOJC4Zy1KPUGFNdRdIQ O+er6Mdn/ak+e8bGuiB6BEgAAQI/dIAs267OgvBLtXNYec1xKHQoGJUWjVG5YiW0+4AIdf o9Kxj6YFyg7eVF/njE+wCsFylgnpl0+QI= Received: by filterdrecv-75d94df84d-fv2gh with SMTP id filterdrecv-75d94df84d-fv2gh-1-627D6878-1D 2022-05-12 20:05:12.125506252 +0000 UTC m=+3104410.324023102 Received: from herokuapp.com (unknown) by geopod-ismtpd-6-1 (SG) with ESMTP id Rus4i6m5S36rrtJsQSdvlA for ; Thu, 12 May 2022 20:05:12.037 +0000 (UTC) Date: Thu, 12 May 2022 20:05:12 +0000 (UTC) From: "masterleep (Bill Lipa)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 18776 X-Redmine-Issue-Author: jemmai X-Redmine-Sender: masterleep 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: 84901 X-SG-EID: =?us-ascii?Q?v8xgvY7usNxyGwQXPZxq1I0XQ=2FrKaURkoOaVoDs5B+90qkdzQ+mdf7e3rLQN=2FZ?= =?us-ascii?Q?YvcxBSqs9C1jHP4t0DUvshboc9E7RVC7=2FbHBUUB?= =?us-ascii?Q?QteOGP48Y2u6jhEYb9cio6jVOhitscyCBdDP0ex?= =?us-ascii?Q?omaAPvrktI8XoODXVjJQNPATrPMnz=2FbzXdMj4tV?= =?us-ascii?Q?hFubzV4ZjF2wcTdzMpfmU=2F6gwoRclGB4memwT3A?= =?us-ascii?Q?QVCNed0JVNSLnI9KqYS5sp3u0T0DZMkFR9Nh6eK?= =?us-ascii?Q?IGdXkpsEI9QsvJS7sbqDg=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 108532 Subject: [ruby-core:108532] [Ruby master Feature#18776] Object Shapes 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" SXNzdWUgIzE4Nzc2IGhhcyBiZWVuIHVwZGF0ZWQgYnkgbWFzdGVybGVlcCAoQmlsbCBMaXBhKS4K CgpJZiB5b3UgY2FsbCBtZW1vaXplZCBtZXRob2RzIGluIGEgZGlmZmVyZW50IG9yZGVyLCB3b3Vs ZCB0aGF0IGNhdXNlIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcyB0byBoYXZlIG11bHRpcGxl IHNoYXBlcz8KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRmVhdHVy ZSAjMTg3NzY6IE9iamVjdCBTaGFwZXMKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVz LzE4Nzc2I2NoYW5nZS05NzU3NgoKKiBBdXRob3I6IGplbW1haSAoSmVtbWEgSXNzcm9mZikKKiBT dGF0dXM6IE9wZW4KKiBQcmlvcml0eTogTm9ybWFsCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIyBPYmplY3QgU2hhcGVzIGltcGxlbWVudGF0aW9uCgpBYXJvbiBQYXR0 ZXJzb24sIEVpbGVlbiBVY2hpdGVsbGUgYW5kIEkgaGF2ZSBiZWVuIHdvcmtpbmcgb24gYW4gaW1w bGVtZW50YXRpb24gb2YgT2JqZWN0IFNoYXBlcyBmb3IgUnVieS4gIFdlIGFyZSBmaWxpbmcgYSB0 aWNrZXQgdG8gc2hhcmUgd2hhdCB3ZSd2ZSBiZWVuIGRvaW5nLCBhcyB3ZWxsIGFzIGdldCBmZWVk YmFjayBvbiB0aGUgcHJvamVjdCBpbiBpdHMgY3VycmVudCBzdGF0ZS4KCldlIGhvcGUgdG8gZXZl bnR1YWxseSBzdWJtaXQgdGhlIGZpbmFsaXplZCBwcm9qZWN0IHVwc3RyZWFtIGFmdGVyIHZlcmlm eWluZyBlZmZpY2FjeS4KCiMjIFdoYXQgYXJlIE9iamVjdCBTaGFwZXM/CgpPYmplY3Qgc2hhcGVz IGFyZSBhIHRlY2huaXF1ZSBmb3IgcmVwcmVzZW50aW5nIHByb3BlcnRpZXMgb2YgYW4gb2JqZWN0 LiBPdGhlciBsYW5ndWFnZSBpbXBsZW1lbnRhdGlvbnMsIGluY2x1ZGluZyBbVHJ1ZmZsZVJ1Ynld KGh0dHBzOi8vZ2l0aHViLmNvbS9vcmFjbGUvdHJ1ZmZsZXJ1YnkpIGFuZCBbVjhdKGh0dHBzOi8v djguZGV2LyksIHVzZSB0aGlzIHRlY2huaXF1ZS4gQ2hyaXMgU2VhdG9uLCB0aGUgY3JlYXRvciBv ZiBUcnVmZmxlUnVieSwgZGlzY3Vzc2VkIG9iamVjdCBzaGFwZXMgaW4gaGlzIFtSdWJ5S2FpZ2kg MjAyMSBLZXlub3RlXShodHRwczovL3J1YnlrYWlnaS5vcmcvMjAyMS10YWtlb3V0L3ByZXNlbnRh dGlvbnMvY2hyaXNnc2VhdG9uLmh0bWwpIGFuZCBNYXhpbWUgQ2hldmFsaWVyLUJvaXN2ZXJ0IGRp c2N1c3NlZCB0aGUgaW1wbGljYXRpb25zIGZvciBZSklUIGluIHRoZSBsYXR0ZXIgcGFydCBvZiBb aGVyIHRhbGsgYXQgUnVieUthaWdpIDIwMjFdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNo P3Y9UEJWTGYzeWZNczgmdD0xMTAwcykuIFRoZSBvcmlnaW5hbCBpZGVhIG9mIG9iamVjdCBzaGFw ZXMgW29yaWdpbmF0ZXMgZnJvbSB0aGUgU2VsZiBsYW5ndWFnZV0oaHR0cHM6Ly9iaWJsaW9ncmFw aHkuc2VsZmxhbmd1YWdlLm9yZy9fc3RhdGljL2ltcGxlbWVudGF0aW9uLnBkZiksIHdoaWNoIGlz IGNvbnNpZGVyZWQgYSBkaXJlY3QgZGVzY2VuZGFudCBvZiBTbWFsbHRhbGsuCgpFYWNoIHNoYXBl IHJlcHJlc2VudHMgYSBzcGVjaWZpYyBzZXQgb2YgYXR0cmlidXRlcyAoaW5zdGFuY2UgdmFyaWFi bGVzIGFuZCBvdGhlciBwcm9wZXJ0aWVzKSBhbmQgdGhlaXIgdmFsdWVzLiBJbiBvdXIgaW1wbGVt ZW50YXRpb24sIGFsbCBvYmplY3RzIGhhdmUgYSBzaGFwZS4gVGhlIHNoYXBlcyBhcmUgbm9kZXMg aW4gYSB0cmVlIGRhdGEgc3RydWN0dXJlLiBFdmVyeSBlZGdlIGluIHRoZSB0cmVlIHJlcHJlc2Vu dHMgYW4gYXR0cmlidXRlIHRyYW5zaXRpb24uCgpNb3JlIHNwZWNpZmljYWxseSwgc2V0dGluZyBh biBpbnN0YW5jZSB2YXJpYWJsZSBvbiBhbiBpbnN0YW5jZSBvZiBhbiBvYmplY3QgY3JlYXRlcyBh biBvdXRnb2luZyBlZGdlIGZyb20gdGhlIGluc3RhbmNlJ3MgY3VycmVudCBzaGFwZS4gVGhpcyBp cyBhIHRyYW5zaXRpb24gZnJvbSBvbmUgc2hhcGUgdG8gYW5vdGhlci4gVGhlIGVkZ2UgcmVwcmVz ZW50cyB0aGUgaW5zdGFuY2UgdmFyaWFibGUgdGhhdCBpcyBzZXQuCgpGb3IgZXhhbXBsZToKCmBg YHJ1YnkKY2xhc3MgRm9vCiAgZGVmIGluaXRpYWxpemUKICAgICMgQ3VycmVudGx5IHRoaXMgaW5z dGFuY2UgaXMgdGhlIHJvb3Qgc2hhcGUgKElEIDApCiAgICBAYSA9IDEgIyBUcmFuc2l0aW9ucyB0 byBhIG5ldyBzaGFwZSB2aWEgZWRnZSBAYSAoSUQgMSkKICAgIEBiID0gMiAjIFRyYW5zaXRpb25z IHRvIGEgbmV3IHNoYXBlIHZpYSBlZGdlIEBiIChJRCAyKQogIGVuZAplbmQKCmZvbyA9IEZvby5u ZXcKYGBgCgpXaGVuIGBGb29gIGlzIGludGlhbGl6ZWQsIGl0cyBzaGFwZSBpcyB0aGUgcm9vdCBz aGFwZSB3aXRoIElEIDAuICBUaGUgcm9vdCBzaGFwZSByZXByZXNlbnRzIGFuIGVtcHR5IG9iamVj dCB3aXRoIG5vIGluc3RhbmNlIHZhcmlhYmxlcy4gRWFjaCB0aW1lIGFuIGluc3RhbmNlIHZhcmlh YmxlIGlzIHNldCBvbiBgZm9vYCwgdGhlIHNoYXBlIG9mIHRoZSBpbnN0YW5jZSBjaGFuZ2VzLiBJ dCBmaXJzdCB0cmFuc2l0aW9ucyB3aXRoIGBAYWAgdG8gYSBzaGFwZSB3aXRoIElEIDEsIGFuZCB0 aGVuIHRyYW5zaXRpb25zIHdpdGggYEBiYCB0byBhIHNoYXBlIHdpdGggSUQgMi4gSWYgYEBhYCBp cyB0aGVuIHNldCB0byBhIGRpZmZlcmVudCB2YWx1ZSwgaXRzIHNoYXBlIHdpbGwgcmVtYWluIHRo ZSBzaGFwZSB3aXRoIElEIDIsIHNpbmNlIHRoaXMgc2hhcGUgYWxyZWFkeSBpbmNsdWRlcyB0aGUg aW5zdGFuY2UgdmFyaWFibGUgYEBhYC4gIAoKIVtdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVi dXNlcmNvbnRlbnQuY29tLzE5ODg1NjAvMTY3OTE4MzYwLTBhNmM5MWFhLTI1ODctNDhjYi04ZmYy LTdmM2E5NTgzMjg4ZS5zdmcpCgpUaGVyZSBpcyBvbmUgZ2xvYmFsIHNoYXBlIHRyZWUgYW5kIG9i amVjdHMgd2hpY2ggdW5kZXJnbyB0aGUgc2FtZSBzaGFwZSB0cmFuc2l0aW9ucyBpbiB0aGUgc2Ft ZSBvcmRlciB3aWxsIGVuZCB1cCB3aXRoIHRoZSBzYW1lIGZpbmFsIHNoYXBlLgoKRm9yIGluc3Rh bmNlLCBpZiB3ZSBoYXZlIGEgY2xhc3MgYEJhcmAgZGVmaW5lZCBhcyBmb2xsb3dzLCB0aGUgZmly c3QgdHJhbnNpdGlvbiBvbiBgQmFyLm5ld2AgdGhyb3VnaCB0aGUgaW5zdGFuY2UgdmFyaWFibGUg YEBhYCB3aWxsIGJlIHRoZSBzYW1lIGFzIGBGb28ubmV3YCdzIGZpcnN0IHRyYW5zaXRpb246Cgpg YGBydWJ5CmNsYXNzIEZvbwogIGRlZiBpbml0aWFsaXplCiAgICAjIEN1cnJlbnRseSB0aGlzIGlu c3RhbmNlIGlzIHRoZSByb290IHNoYXBlIChJRCAwKQogICAgQGEgPSAxICMgVHJhbnNpdGlvbnMg dG8gYSBuZXcgc2hhcGUgdmlhIGVkZ2UgQGEgKElEIDEpCiAgICBAYiA9IDIgIyBUcmFuc2l0aW9u cyB0byBhIG5ldyBzaGFwZSB2aWEgZWRnZSBAYiAoSUQgMikKICBlbmQKZW5kCgpjbGFzcyBCYXIK ICBkZWYgaW5pdGlhbGl6ZQogICAgIyBDdXJyZW50bHkgdGhpcyBpbnN0YW5jZSBpcyB0aGUgcm9v dCBzaGFwZSAoSUQgMCkKICAgIEBhID0gMSAjIFRyYW5zaXRpb25zIHRvIHNoYXBlIGRlZmluZWQg ZWFybGllciB2aWEgZWRnZSBAYSAoSUQgMSkKICAgIEBjID0gMSAjIFRyYW5zaXRpb25zIHRvIGEg bmV3IHNoYXBlIHZpYSBlZGdlIEBjIChJRCAzKQogICAgQGIgPSAxICMgVHJhbnNpdGlvbnMgdG8g YSBuZXcgc2hhcGUgdmlhIGVkZ2UgQGIgKElEIDQpCiAgZW5kCmVuZAoKZm9vID0gRm9vLm5ldyAj IGJsdWUgaW4gdGhlIGRpYWdyYW0KYmFyID0gQmFyLm5ldyAjIHJlZCBpbiB0aGUgZGlhZ3JhbQpg YGAKCkluIHRoZSBkaWFncmFtIGJlbG93LCBwdXJwbGUgcmVwcmVzZW50cyBzaGFyZWQgdHJhbnNp dGlvbnMsIGJsdWUgcmVwcmVzZW50cyB0cmFuc2l0aW9ucyBmb3Igb25seSBgZm9vYCwgYW5kIHJl ZCByZXByZXNlbnRzIHRyYW5zaXRpb25zIGZvciBvbmx5IGBiYXJgLgoKIVtdKGh0dHBzOi8vdXNl ci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzE5ODg1NjAvMTY3OTE4ODk5LWYxYTZmMzQ0 LWFlNWUtNGRjMC1iMTdhLWZiMTU2ZDFkNTUwZi5zdmcpCgojIyMgQ2FjaGUgc3RydWN0dXJlCgpG b3IgaW5zdGFuY2UgdmFyaWFibGUgd3JpdGVycywgdGhlIGN1cnJlbnQgc2hhcGUgSUQsIHRoZSBz aGFwZSBJRCB0aGF0IGl2YXIgd3JpdGUgd291bGQgdHJhbnNpdGlvbiB0byBhbmQgaW5zdGFuY2Ug dmFyaWFibGUgaW5kZXggYXJlIGFsbCBzdG9yZWQgaW4gdGhlIGlubGluZSBjYWNoZS4gVGhlIHNo YXBlIElEIGlzIHRoZSBrZXkgdG8gdGhlIGNhY2hlLgoKRm9yIGluc3RhbmNlIHZhcmlhYmxlIHJl YWRlcnMsIHRoZSBzaGFwZSBJRCBhbmQgaW5zdGFuY2UgdmFyaWFibGUgaW5kZXggYXJlIHN0b3Jl ZCBpbiB0aGUgaW5saW5lIGNhY2hlLiAgQWdhaW4sIHRoZSBzaGFwZSBJRCBpcyB0aGUgY2FjaGUg a2V5LgoKYGBgcnVieQpjbGFzcyBGb28KICBkZWYgaW5pdGlhbGl6ZQogICAgQGEgPSAxICMgSUMg c2hhcGVfaWQ6IDAsIG5leHQgc2hhcGU6IDEsIGl2IGluZGV4IDAKICAgIEBiID0gMSAjIElDIHNo YXBlX2lkOiAxLCBuZXh0IHNoYXBlOiAyLCBpdiBpbmRleCAxCiAgZW5kCiAgICAKICBkZWYgYQog ICAgQGEgIyBJQyBzaGFwZV9pZDogMiwgaXYgaW5kZXggMAogIGVuZAplbmQKYGBgCgojIyBSYXRp b25hbGUKCldlIHRoaW5rIHRoYXQgYW4gb2JqZWN0IHNoYXBlIGltcGxlbWVudGF0aW9uIHdpbGwg c2ltcGxpZnkgY2FjaGUgY2hlY2tzLCBpbmNyZWFzZSBpbmxpbmUgY2FjaGUgaGl0cywgZGVjcmVh c2UgcnVudGltZSBjaGVja3MsIGFuZCBlbmFibGUgb3RoZXIgcG90ZW50aWFsIGZ1dHVyZSBvcHRp bWl6YXRpb25zLiBUaGVzZSBhcmUgYWxsIGV4cGxhaW5lZCBiZWxvdy4gCgojIyMgU2ltcGxpZnkg Y2FjaGluZwoKVGhlIGN1cnJlbnQgY2FjaGUgaW1wbGVtZW50YXRpb24gZGVwZW5kcyBvbiB0aGUg Y2xhc3Mgb2YgdGhlIHJlY2VpdmVyLiBTaW5jZSB0aGUgYWRkcmVzcyBvZiB0aGUgY2xhc3MgY2Fu IGJlIHJldXNlZCwgdGhlIGN1cnJlbnQgY2FjaGUgaW1wbGVtZW50YXRpb24gYWxzbyBkZXBlbmRz IG9uIGFuIGluY3JlbWVudGluZyBzZXJpYWwgbnVtYmVyIHNldCBvbiB0aGUgY2xhc3MgKHRoZSBj bGFzcyBzZXJpYWwpLiAgVGhlIHNoYXBlIGltcGxlbWVudGF0aW9uIGhhcyBubyBzdWNoIGRlcGVu ZGVuY3kuIEl0IG9ubHkgcmVxdWlyZXMgY2hlY2tpbmcgdGhlIHNoYXBlIElEIHRvIGRldGVybWlu ZSBpZiB0aGUgY2FjaGUgaXMgdmFsaWQuCgojIyMgQ2FjaGUgaGl0cwoKT2JqZWN0cyB0aGF0IHNl dCBwcm9wZXJ0aWVzIGluIHRoZSBzYW1lIG9yZGVyIGNhbiBzaGFyZSBzaGFwZXMuICBGb3IgZXhh bXBsZToKCmBgYHJ1YnkKY2xhc3MgSG9nZQogIGRlZiBpbml0aWFsaXplCiAgICAjIEN1cnJlbnRs eSB0aGlzIGluc3RhbmNlIGlzIHRoZSByb290IHNoYXBlIChJRCAwKQogICAgQGEgPSAxICMgVHJh bnNpdGlvbnMgdG8gdGhlIG5leHQgc2hhcGUgdmlhIGVkZ2UgbmFtZWQgQGEKICAgIEBiID0gMiAj IFRyYW5zaXRpb25zIHRvIG5leHQgc2hhcGUgdmlhIGVkZ2UgbmFtZWQgQGIKICBlbmQKZW5kCgpj bGFzcyBGdWdhIDwgSG9nZTsgZW5kCgpob2dlID0gSG9nZS5uZXcKZnVnYSA9IEZ1Z2EubmV3CmBg YAoKSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHRoZSBpbnN0YW5jZXMgYGhvZ2VgIGFuZCBgZnVnYWAg d2lsbCBzaGFyZSB0aGUgc2FtZSBzaGFwZSBJRC4gIFRoaXMgbWVhbnMgaW5saW5lIGNhY2hlcyBp biBgaW5pdGlhbGl6ZWAgd2lsbCBoaXQgaW4gYm90aCBjYXNlcy4gIFRoaXMgY29udHJhc3RzIHdp dGggdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gdGhhdCB1c2VzIHRoZSBjbGFzcyBhcyB0aGUg Y2FjaGUga2V5LiAgSW4gb3RoZXIgd29yZHMsIHdpdGggb2JqZWN0IHNoYXBlcyB0aGUgYWJvdmUg Y29kZSB3aWxsIGhpdCBpbmxpbmUgY2FjaGVzIHdoZXJlIHRoZSBjdXJyZW50IGltcGxlbWVudGF0 aW9uIHdpbGwgbWlzcy4KCklmIHBlcmZvcm1hbmNlIHRlc3RpbmcgcmV2ZWFscyB0aGF0IGNhY2hl IGhpdHMgYXJlICpub3QqIHN1YnN0YW50aWFsbHkgaW1wcm92ZWQsIHRoZW4gd2UgY2FuIHVzZSBz aGFwZXMgdG8gcmVjbGFpbSBtZW1vcnkgZnJvbSBgUkJhc2ljYC4gV2UgY2FuIGFjY29tcGxpc2gg dGhpcyBieSBlbmNvZGluZyB0aGUgY2xhc3Mgd2l0aGluIHRoZSBzaGFwZSB0cmVlLiBUaGlzIHdp bGwgaGF2ZSBhbiBlcXVpdmFsZW50IGNhY2hlIGhpdCByYXRlIHRvIHRoZSBjdXJyZW50IGltcGxl bWVudGF0aW9uLiBPbmNlIHRoZSBjbGFzcyBpcyBlbmNvZGVkIHdpdGhpbiB0aGUgc2hhcGUgdHJl ZSwgd2UgY2FuIHJlbW92ZSB0aGUgY2xhc3MgcG9pbnRlciBmcm9tIGBSQmFzaWNgIGFuZCBlaXRo ZXIgcmVjbGFpbSB0aGF0IG1lbW9yeSBvciBmcmVlIGl0IGZvciBhbm90aGVyIHVzZS4KCiMjIyBE ZWNyZWFzZXMgcnVudGltZSBjaGVja2luZwoKV2UgY2FuIGVuY29kZSBhdHRyaWJ1dGVzIHRoYXQg YXJlbid0IGluc3RhbmNlIHZhcmlhYmxlcyBpbnRvIGFuIG9iamVjdCdzIHNoYXBlLiBDdXJyZW50 bHksIHdlIGFsc28gaW5jbHVkZSBmcm96ZW4gd2l0aGluIHRoZSBzaGFwZS4gVGhpcyBtZWFucyB3 ZSBjYW4gbGltaXQgZnJvemVuIGNoZWNrcyB0byBvbmx5IGNhY2hlIG1pc3Nlcy4KCkZvciBleGFt cGxlLCB0aGUgZm9sbG93aW5nIGNvZGU6CgpgYGBydWJ5CmNsYXNzIFRvdG8KICBkZWYgc2V0X2EK ICAgIEBhID0gMSAjIGNhY2hlOiBzaGFwZTogMCwgbmV4dCBzaGFwZTogMSwgSVYgaWR4OiAwCiAg ZW5kCmVuZAoKdG90byA9IFRvdG8ubmV3ICMgc2hhcGUgMAp0b3RvLnNldF9hICAgICAjIHNoYXBl IDEKCnRvdG8gPSBUb3RvLm5ldyAjIHNoYXBlIDAKdG90by5mcmVlemUgICAgIyBzaGFwZSAyCnRv dG8uc2V0X2EgICAgICMgQ2FjaGUgbWlzcywgRXhjZXB0aW9uIQpgYGAKCiFbXShodHRwczovL3Vz ZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xOTg4NTYwLzE2NzkyMDAwMS1jNGU2MzI2 Yi0zYTNjLTQ4M2ItYTc5Ny05ZTAyMzE3NjQ3ZDcuc3ZnKQoKV2l0aG91dCBzaGFwZXMsIGFsbCBp bnN0YW5jZSB2YXJpYWJsZSBzZXRzIHJlcXVpcmUgY2hlY2tpbmcgdGhlIGZyb3plbiBzdGF0dXMg b2YgdGhlIG9iamVjdC4gV2l0aCBzaGFwZXMsIHdlIG9ubHkgbmVlZCB0byBjaGVjayB0aGUgZnJv emVuIHN0YXR1cyBvbiBjYWNoZSBtaXNzZXMuCgpXZSBjYW4gYWxzbyBlbGltaW5hdGUgZW1iZWRk ZWQgYW5kIGV4dGVuZGVkIGNoZWNrcyB3aXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2Ygb2JqZWN0IHNo YXBlcy4gQW55IHBhcnRpY3VsYXIgc2hhcGUgcmVwcmVzZW50cyBhbiBvYmplY3QgdGhhdCBpcyBf ZWl0aGVyXyBleHRlbmRlZCBvciBlbWJlZGRlZC4gSklUcyBjYW4gcG9zc2libHkgdGFrZSBhZHZh bnRhZ2Ugb2YgdGhpcyBmYWN0IGJ5IGdlbmVyYXRpbmcgc3BlY2lhbGl6ZWQgbWFjaGluZSBjb2Rl IGJhc2VkIG9uIHRoZSBzaGFwZXMuIAogICAgCiMjIyBDbGFzcyBpbnN0YW5jZSB2YXJpYWJsZXMg Y2FuIGJlIHN0b3JlZCBpbiBhbiBhcnJheQoKQ3VycmVudGx5LCBgVF9DTEFTU2AgYW5kIGBUX01P RFVMRWAgaW5zdGFuY2VzIGNhbm5vdCB1c2UgdGhlIHNhbWUgSVYgaW5kZXggdGFibGUgb3B0aW1p emF0aW9uIHRoYXQgYFRfT0JKRUNUYCBpbnN0YW5jZXMgdXNlLiAgV2UgdGhpbmsgdGhhdCB0aGUg b2JqZWN0IHNoYXBlcyB0ZWNobmlxdWUgY2FuIGJlIGxldmVyYWdlZCBieSBjbGFzcyBpbnN0YW5j ZXMgdG8gdXNlIGFycmF5cyBmb3IgY2xhc3MgaW5zdGFuY2UgdmFyaWFibGUgc3RvcmFnZSBhbmQg bWF5IHBvc3NpYmx5IGxlYWQgdG8gYSByZWR1Y3Rpb24gaW4gbWVtb3J5IHVzYWdlICh0aG91Z2gg d2UgaGF2ZSB5ZXQgdG8gdGVzdCB0aGlzKS4KCiMjIEltcGxlbWVudGF0aW9uIERldGFpbHMKCltI ZXJlXShodHRwczovL2dpdGh1Yi5jb20vamVtbWFpc3Nyb2ZmL3J1YnkvY29tbWl0LzRlOTVkMDE2 NTRmMjRjZWZmNmM4MzMwY2Y0ZTVjN2RhYzUwNDczOWUpIGlzIGEgbGluayB0byBvdXIgY29kZSBz byBmYXIuCgpBcyBtZW50aW9uZWQgZWFybGllciwgc2hhcGUgb2JqZWN0cyBmb3JtIGEgdHJlZSBk YXRhIHN0cnVjdHVyZS4gIEluIG9yZGVyIHRvIGxvb2sgdXAgdGhlIHNoYXBlIHF1aWNrbHksIHdl IGFsc28gc3RvcmUgdGhlIHNoYXBlcyBpbiBhIHdlYWsgYXJyYXkgdGhhdCBpcyBzdG9yZWQgb24g dGhlIFZNLiAgVGhlIElEIG9mIHRoZSBzaGFwZSBpcyB0aGUgaW5kZXggaW4gdG8gdGhlIGFycmF5 LCBhbmQgdGhlIElEIGlzIHN0b3JlZCBvbiB0aGUgb2JqZWN0LgoKRm9yIGBUX09CSkVDVGAgb2Jq ZWN0cywgd2Ugc3RvcmUgdGhlIHNoYXBlIElEIGluIHRoZSBvYmplY3QncyBoZWFkZXIuIE9uIDY0 IGJpdCBzeXN0ZW1zLCB0aGUgdXBwZXIgMzIgYml0cyBhcmUgdXNlZCBieSBSYWN0b3JzLiAgV2Ug d2FudCBvYmplY3Qgc2hhcGVzIHRvIGJlIGVuYWJsZWQgb24gMzIgYml0IHN5c3RlbXMgYW5kIDY0 IGJpdCBzeXN0ZW1zIHNvIHRoYXQgbGltaXRzIHVzIHRvIHRoZSBib3R0b20gMzIgYml0cyBvZiB0 aGUgT2JqZWN0IGhlYWRlci4gIFRoZSB0b3AgMjAgYml0cyBmb3IgYFRfT0JKRUNUYCBvYmplY3Rz IHdhcyB1bnVzZWQsIHNvIHdlIHVzZWQgdGhlIHRvcCAxNiBiaXRzIGZvciB0aGUgc2hhcGUgaWQu ICBXZSBjaG9zZSB0aGUgdG9wIDE2IGJpdHMgYmVjYXVzZSB0aGlzIGFsbG93cyB1cyB0byB1c2Ug YHVpbnQxNl90YCBhbmQgbWFza2luZyB0aGUgaGVhZGVyIGJpdHMgaXMgZWFzaWVyLgoKVGhpcyBp bXBsZW1lbnRhdGlvbiBkZXRhaWwgbGltaXRzIHVzIHRvIH42NWsgc2hhcGVzLiBXZSBtZWFzdXJl ZCB0aGUgbnVtYmVyIG9mIHNoYXBlcyB1c2VkIG9uIGEgc2ltcGxlIFtEaXNjb3Vyc2VdKGh0dHBz Oi8vZ2l0aHViLmNvbS9kaXNjb3Vyc2UvZGlzY291cnNlKSBhcHBsaWNhdGlvbiAofjMuNWspLCBb UmFpbHNCZW5jaF0oaHR0cHM6Ly9naXRodWIuY29tL2swa3VidW4vcmFpbHNiZW5jaCkgKH40ayks IGFuZCBTaG9waWZ5J3MgbW9ub2xpdGgncyB0ZXN0IHN1aXRlICh+NDBrKS4gQWNjb3JkaW5nbHks IHdlIGRlY2lkZWQgdG8gaW1wbGVtZW50IGdhcmJhZ2UgY29sbGVjdGlvbiBvbiBvYmplY3Qgc2hh cGVzIHNvIHdlIGNhbiByZWN5Y2xlIHNoYXBlIElEcyB3aGljaCBhcmUgbm8gbG9uZ2VyIGluIHVz ZS4gIFdlIGFyZSBjdXJyZW50bHkgd29ya2luZyBvbiBzaGFwZSBHQy4KCkV2ZW4gdGhvdWdoIGl0 J3MgdW5saWtlbHksIGl0J3Mgc3RpbGwgcG9zc2libGUgZm9yIGFuIGFwcGxpY2F0aW9uIHRvIHJ1 biBvdXQgb2Ygc2hhcGVzLiBPbmNlIGFsbCBzaGFwZSBJRHMgYXJlIGluIHVzZSwgYW55IG9iamVj dHMgdGhhdCBuZWVkIG5ldyBzaGFwZSBJRHMgd2lsbCBuZXZlciBoaXQgb24gaW5saW5lIGNhY2hl cy4KCiMjIEV2YWx1YXRpb24KCldlIGhhdmUgc28gZmFyIHRlc3RlZCB0aGlzIGJyYW5jaCB3aXRo IFtEaXNjb3Vyc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9kaXNjb3Vyc2UvZGlzY291cnNlKSwgW1Jh aWxzQmVuY2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9rMGt1YnVuL3JhaWxzYmVuY2gpIGFuZCBTaG9w aWZ5J3MgbW9ub2xpdGguIFdlIHBsYW4gdG8gdGVzdCB0aGlzIGJyYW5jaCBtb3JlIGJyb2FkbHkg YWdhaW5zdCBzZXZlcmFsIG9wZW4gc291cmNlIFJ1YnkgYW5kIFJhaWxzIGFwcGxpY2F0aW9ucy4g CgpCZWZvcmUgd2UgY29uc2lkZXIgdGhpcyBicmFuY2ggdG8gYmUgcmVhZHkgZm9yIGZvcm1hbCBy ZXZpZXcsIHdlIHdhbnQgdGhlIHJ1bnRpbWUgcGVyZm9ybWFuY2UgYW5kIG1lbW9yeSB1c2FnZSBv ZiB0aGVzZSBiZW5jaG1hcmtzIHRvIGJlIGVxdWl2YWxlbnQgb3IgYmV0dGVyIHRoYW4gaXQgaXMg Y3VycmVudGx5LiBJbiBvdXIgb3BpbmlvbiwgZXZlbiB3aXRoIGVxdWl2YWxlbnQgcnVudGltZSBw ZXJmb3JtYW5jZSBhbmQgbWVtb3J5IHVzYWdlLCB0aGUgZnV0dXJlIGJlbmVmaXRzIG9mIHRoaXMg YXBwcm9hY2ggbWFrZSB0aGUgY2hhbmdlIHNlZW0gd29ydGh3aGlsZS4KCiMjIEZlZWRiYWNrCgpJ ZiB5b3UgaGF2ZSBhbnkgZmVlZGJhY2ssIGNvbW1lbnRzLCBvciBxdWVzdGlvbnMsIHBsZWFzZSBs ZXQgdXMga25vdyBhbmQgd2UnbGwgZG8gb3VyIGJlc3QgdG8gYWRkcmVzcyBpdC4gVGhhbmsgeW91 IQoKCgotLSAKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvCg==