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, T_SCC_BODY_TEXT_LINE,T_SPF_PERMERROR,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 1F21F1F54E for ; Wed, 17 Aug 2022 17:14:29 +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="kNBq/YPi"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id B54ED120E02; Thu, 18 Aug 2022 02:14:22 +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 3048A120E05 for ; Thu, 18 Aug 2022 02:14: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:cc; s=smtpapi; bh=FC9SbYaz8H26yAgtLolUUoWr5DMgvoJLYAYoxVZdBYk=; b=kNBq/YPi5VblrvokZ9W41v3/pazIf7cGNPqv/QCLt9fiyGhtcPmhJ7d//U6yMwUwJgqK +Y0MnfTHK1IdN9O3fIesax4r0ySf4PlRRtz8phfId+/5pCQmMEyuY4KaAtuRTcpUGeYrq5 2PvBtyFEj4AckspuShHLy5/ATXfnO/QPY= Received: by filterdrecv-7787b7f4d9-j7r6q with SMTP id filterdrecv-7787b7f4d9-j7r6q-1-62FD21E5-32 2022-08-17 17:14:13.402390418 +0000 UTC m=+2322484.885566466 Received: from herokuapp.com (unknown) by geopod-ismtpd-4-3 (SG) with ESMTP id yXLuJGXgRVuTNiZ7wY6adg for ; Wed, 17 Aug 2022 17:14:13.298 +0000 (UTC) Date: Wed, 17 Aug 2022 17:14:13 +0000 (UTC) From: "jemmai (Jemma Issroff)" 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: jemmai 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: 85925 X-SG-EID: =?us-ascii?Q?F18P+2W1KnHe6ISASa+61nUK3i7mN03gxrUl5OPiI2ZTtcWzec3HAg3iwLkXVU?= =?us-ascii?Q?w9NVOsENbVlMKtc9X75yTo7Os1jg2OTxwg8Q8cw?= =?us-ascii?Q?8BUJUsN8PLxokCDzKUlUif1YDeoKx6JzE6twpSu?= =?us-ascii?Q?NEm3xQpyz+i5pLlADnnVuPdLGYy1MiGRveeD5fp?= =?us-ascii?Q?D9ct9fespbueB+2ovWIZV13G+0UflciS59YDD6O?= =?us-ascii?Q?FneXZOG9=2FUswhApgskzheZLenyw0Ak17C5eciF+?= =?us-ascii?Q?4fnemXzI20RRbsmqy7b5w=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 109517 Subject: [ruby-core:109517] [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" SXNzdWUgIzE4Nzc2IGhhcyBiZWVuIHVwZGF0ZWQgYnkgamVtbWFpIChKZW1tYSBJc3Nyb2ZmKS4K CkZpbGUgb2JqZWN0LXNoYXBlcy5wYXRjaCBhZGRlZAoKIyBPYmplY3QgU2hhcGVzIFVwZGF0ZQoK V2UgYXJlIHdyaXRpbmcgd2l0aCBhbiB1cGRhdGUgb24gdGhlIE9iamVjdCBTaGFwZXMgaW1wbGVt ZW50YXRpb24sIGFuZCB0byBhc2sgd2hhdCBuZWVkcyB0byBiZSBkb25lIGJlZm9yZSB3ZSBjYW4g bWVyZ2Ugb3VyIHdvcmsuIEkgaGF2ZSBjb250aW51ZWQgd29yayBvbiB0aGlzIGFsb25naXNkZSBB YXJvbiBhbmQgRWlsZWVuLgoKIyMgQ29kZSBjaGFuZ2VzCgpbVGhlc2VdKGh0dHBzOi8vZ2l0aHVi LmNvbS9qZW1tYWlzc3JvZmYvcnVieS90cmVlL29iamVjdC1zaGFwZXMtcHJvdG90eXBpbmcpIGFy ZSBvdXIgcHJvcG9zZWQgY29kZSBjaGFuZ2VzIHRvIGltcGxlbWVudCBPYmplY3QgU2hhcGVzIGlu IENSdWJ5LgoKVGhpcyBwYXRjaCBhZGRzIGFuIG9iamVjdCBzaGFwZSBpbXBsZW1lbnRhdGlvbi4g RWFjaCBvYmplY3QgaGFzIGEgc2hhcGUsIHdoaWNoIHJlcHJlc2VudHMgYXR0cmlidXRlcyBvZiB0 aGUgb2JqZWN0LCBzdWNoIGFzIHdoaWNoIHNsb3RzIGl2YXJzIGFyZSBzdG9yZWQgaW4gYW5kIHdo ZXRoZXIgb2JqZWN0cyBhcmUgZnJvemVuIG9yIG5vdC4gVGhlIGlubGluZSBjYWNoZXMgYXJlIHVw ZGF0ZWQgdG8gdXNlIHNoYXBlIElEcyBhcyB0aGUga2V5LCByYXRoZXIgdGhhbiB0aGUgY2xhc3Mg b2YgdGhlIG9iamVjdC4gVGhpcyBtZWFucyB3ZSBkb24ndCBoYXZlIHRvIHJlYWQgdGhlIGNsYXNz IGZyb20gdGhlIG9iamVjdCB0byBjaGVjayBJQyB2YWxpZGl0eS4gSXQgYWxzbyBhbGxvd3MgbW9y ZSBjYWNoZSBoaXRzIGluIHNvbWUgY2FzZXMsIGFuZCB3aWxsIGFsbG93IEpJVHMgdG8gb3B0aW1p emUgaW5zdGFuY2UgdmFyaWFibGUgcmVhZGluZyBhbmQgd3JpdGluZy4KClRoZSBwYXRjaCBjdXJy ZW50bHkgbGltaXRzIHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIHNoYXBlIElEcyB0byA2NSw1MzYg KHVzaW5nIDE2IGJpdHMpLiBXZSBjcmVhdGVkIGEgbmV3IElNRU1PIHR5cGUgdGhhdCByZXByZXNl bnRzIHRoZSBzaGFwZSwgc28gc2hhcGVzIGNhbiBiZSBnYXJiYWdlIGNvbGxlY3RlZC4gIENvbGxl Y3RlZCBzaGFwZSBJRHMgY2FuIGJlIHJldXNlZCBsYXRlci4KCiMjIENQVSBwZXJmb3JtYW5jZToK CldlIG1lYXN1cmVkIHBlcmZvcm1hbmNlIHdpdGggbWljcm9iZW5jaG1hcmtzLCBbUmFpbHNCZW5j aF0oaHR0cHM6Ly9naXRodWIuY29tL2swa3VidW4vcmFpbHNiZW5jaCksIGFuZCBbWUpJVCBiZW5j aF0oaHR0cHM6Ly9naXRodWIuY29tL1Nob3BpZnkveWppdC1iZW5jaCkuIEhlcmUgYXJlIHRoZSBw ZXJmb3JtYW5jZSBtZXRyaWNzIHdlIGdhdGhlcmVkLgoKVGhlc2UgYXJlIGFsbCBtaWNyb2JlbmNo bWFya3Mgd2hpY2ggbWVhc3VyZSBpdmFyIHBlcmZvcm1hbmNlOgoKYGBgCiQgbWFrZSBiZW5jaG1h cmsgSVRFTT12bV9pdmFyCmNvbXBhcmUtcnVieTogcnVieSAzLjIuMGRldiAoMjAyMi0wOC0xNlQx NTo1ODo1NlogbWFzdGVyIGFjODkwZWMwNjIpIFthcm02NC1kYXJ3aW4yMV0KYnVpbHQtcnVieTog cnVieSAzLjIuMGRldiAoMjAyMi0wOC0xNlQyMDoxMjo1NVogb2JqZWN0LXNoYXBlcy1wcm90Li4g ODcyZmE0ODhjMykgW2FybTY0LWRhcndpbjIxXQojIEl0ZXJhdGlvbiBwZXIgc2Vjb25kIChpL3Mp Cgp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfGNvbXBhcmUtcnVieXxidWlsdC1ydWJ5fAp8 Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tOnwtLS0tLS0tLS06fAp8dm1f aXZhciAgICAgICAgICAgICAgICAgICAgfCAgICAgOTguMjMxTXwgIDEwMi4xNjFNfAp8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgLXwgICAgIDEuMDR4fAp8dm1faXZhcl9l bWJlZGRlZF9vYmpfaW5pdCAgfCAgICAgMzMuMzUxTXwgICAzMy4zMzFNfAp8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgICAxLjAweHwgICAgICAgICAtfAp8dm1faXZhcl9leHRlbmRl ZF9vYmpfaW5pdCAgfCAgICAgMjUuMDU1TXwgICAyNi4yNjVNfAp8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgLXwgICAgIDEuMDV4fAp8dm1faXZhcl9nZW5lcmljX2dldCAg ICAgICAgfCAgICAgMTguMzc0TXwgICAxNy4yMTVNfAp8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAxLjA3eHwgICAgICAgICAtfAp8dm1faXZhcl9nZW5lcmljX3NldCAgICAgICAg fCAgICAgMTIuMzYxTXwgICAxNC41MzdNfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgLXwgICAgIDEuMTh4fAp8dm1faXZhcl9vZl9jbGFzcyAgICAgICAgICAgfCAgICAg IDguMzc4TXwgICAgOC45MjhNfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgLXwgICAgIDEuMDd4fAp8dm1faXZhcl9vZl9jbGFzc19zZXQgICAgICAgfCAgICAgIDkuNDg1 TXwgICAxMC4yNjRNfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgLXwg ICAgIDEuMDh4fAp8dm1faXZhcl9zZXQgICAgICAgICAgICAgICAgfCAgICAgODkuNDExTXwgICA5 MS42MzJNfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgLXwgICAgIDEu MDJ4fAp8dm1faXZhcl9pbml0X3N1YmNsYXNzICAgICAgfCAgICAgIDYuMTA0TXwgICAxMi45MjhN fAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgLXwgICAgIDIuMTJ4fApg YGAKClRvIGFkZHJlc3MgdGhlIG91dGxpZXJzIGFib3ZlOgoqIGB2bV9pdmFyX2dlbmVyaWNfc2V0 YCBpcyBmYXN0ZXIgYmVjYXVzZSB0aGlzIHBhdGNoIGFkZHMgaW5saW5lIGNhY2hlcyB0byBnZW5l cmljIGl2YXJzLCB3aGljaCBkaWQgbm90IGV4aXN0IHByZXZpb3VzbHkKKiBgdm1faXZhcl9pbml0 X3N1YmNsYXNzYCBpcyBzaWduaWZpY2FudGx5IGZhc3RlciBiZWNhdXNlLCB3aXRoIHNoYXBlcywg c3ViY2xhc3NlcyBjYW4gaGl0IGNhY2hlcyAoYXMgY2xhc3MgaXMgbm8gbG9uZ2VyIHBhcnQgb2Yg dGhlIGNhY2hlIGtleSkKCk9iamVjdCBTaGFwZXMgYW5kIFJ1YnkgbWFzdGVyIHBlcmZvcm0gcm91 Z2hseSB0aGUgc2FtZSBvbiBbUmFpbHNCZW5jaF0oaHR0cHM6Ly9naXRodWIuY29tL2swa3VidW4v cmFpbHNiZW5jaCkuCgpPbiB0aGUgZm9sbG93aW5nIG1lYXN1cmVtZW50LCBSdWJ5IG1hc3RlciBo YWQgMTg1Mi4xIHJlcXVlc3RzIHBlciBzZWNvbmQsIHdoaWxlIE9iamVjdCBTaGFwZXMgaGFkIDE4 NDIuNyByZXF1ZXN0cyBwZXIgc2Vjb25kLgoKYGBgCiQgUkFJTFNfRU5WPXByb2R1Y3Rpb24gYmlu L2JlbmNoIApydWJ5IDMuMi4wZGV2ICgyMDIyLTA4LTE1VDE0OjAwOjAzWiBtYXN0ZXIgMDI2NDQy NGQ1OCkgW2FybTY0LWRhcndpbjIxXQoxODUyLjEKYGBgCgpgYGAKJCBSQUlMU19FTlY9cHJvZHVj dGlvbiBiaW4vYmVuY2ggCnJ1YnkgMy4yLjBkZXYgKDIwMjItMDgtMTVUMTU6MjA6MjJaIG9iamVj dC1zaGFwZXMtcHJvdC4uIGQzZGJlZmQ2Y2QpIFthcm02NC1kYXJ3aW4yMV0KMTg0Mi43CgpgYGAK CiMjIE1lbW9yeSBwZXJmb3JtYW5jZQoKRWFjaCBSdWJ5IG9iamVjdCBjb250YWlucyBhIHNoYXBl IElELiAgVGhlIHNoYXBlIElEIGNvcnJlc3BvbmRzIHRvIGFuIGluZGV4IGluIGFuIGFycmF5LiBX ZSBjYW4gZWFzaWx5IGxvb2sgdXAgdGhlIHNoYXBlIG9iamVjdCBnaXZlbiBhIHNoYXBlIElELiBD dXJyZW50bHksIHdlIGhhdmUgYSBmaXhlZCBzaXplIGFycmF5IHdoaWNoIHN0b3JlcyBwb2ludGVy cyB0byBhbGwgYWN0aXZlIHNoYXBlcyAob3IgTlVMTCBpbiB0aGUgY2FzZSB0aGF0IHRoZSBzaGFw ZSBpcyB5ZXQgdG8gYmUgdXNlZCkuIFRoYXQgYXJyYXkgaXMgfjY0ayAqIHNpemVvZih1aW50cHRy X3QpIChhYm91dCA1MDBrYikgYW5kIGlzIGN1cnJlbnRseSBhIGZpeGVkIHNpemUgb3ZlcmhlYWQg Zm9yIHRoZSBSdWJ5IHByb2Nlc3MuCgpSdW5uaW5nIGFuIGVtcHR5IFJ1Ynkgc2NyaXB0LCB3ZSBj YW4gc2VlIHRoaXMgb3ZlcmhlYWQuIEZvciBpbnN0YW5jZToKCk9uIFJ1YnkgbWFzdGVyOgoKYGBg CiQgL3Vzci9iaW4vdGltZSAtbCBydWJ5IC12IC1lJyAnIApydWJ5IDMuMi4wZGV2ICgyMDIyLTA4 LTE1VDE0OjAwOjAzWiBtYXN0ZXIgMDI2NDQyNGQ1OCkgW2FybTY0LWRhcndpbjIxXQoyODYzOTIz MiAgbWF4aW11bSByZXNpZGVudCBzZXQgc2l6ZQpgYGAKCldpdGggdGhlIHNoYXBlcyBicmFuY2g6 CgpgYGAKJCAvdXNyL2Jpbi90aW1lIC1sIC4vcnVieSAtdiAtZScgJwpydWJ5IDMuMi4wZGV2ICgy MDIyLTA4LTE1VDE1OjIwOjIyWiBvYmplY3Qtc2hhcGVzLXByb3QuLiBkM2RiZWZkNmNkKSBbYXJt NjQtZGFyd2luMjFdCjI4OTE3NzYwICBtYXhpbXVtIHJlc2lkZW50IHNldCBzaXplCmBgYAoKVGhp cyBpcyByb3VnaGx5IGEgMC45NyUgbWVtb3J5IGluY3JlYXNlIG9uIGFuIGVtcHR5IFJ1Ynkgc2Ny aXB0LiBPYnZpb3VzbHksIG9uIGJpZ2dlciBSdWJ5IHByb2Nlc3NlcywgaXQgd291bGQgcmVwcmVz ZW50IGFuIGV2ZW4gc21hbGxlciBtZW1vcnkgaW5jcmVhc2UuCgojIyBZSklUIFN0YXRpc3RpY3MK CldlIGFsc28gcmFuIFlKSVQtYmVuY2ggYW5kIGdvdCB0aGUgZm9sbG93aW5nIHJlc3VsdHM6Cgpv biBSdWJ5IG1hc3RlcjoKCmBgYAplbmRfdGltZT0iMjAyMi0wOC0xNyAwOTozMTozNiBQRFQgKC0w NzAwKSIKeWppdF9vcHRzPSIiCnJ1YnlfdmVyc2lvbj0icnVieSAzLjIuMGRldiAoMjAyMi0wOC0x NlQxNTo1ODo1NlogbWFzdGVyIGFjODkwZWMwNjIpIFt4ODZfNjQtbGludXhdIgpnaXRfYnJhbmNo PSJtYXN0ZXIiCmdpdF9jb21taXQ9ImFjODkwZWMwNjIiCgotLS0tLS0tLS0tLS0tICAtLS0tLS0t LS0tLSAgLS0tLS0tLS0tLSAgLS0tLS0tLS0tICAtLS0tLS0tLS0tICAtLS0tLS0tLS0tLSAgLS0t LS0tLS0tLS0tCmJlbmNoICAgICAgICAgIGludGVycCAobXMpICBzdGRkZXYgKCUpICB5aml0ICht cykgIHN0ZGRldiAoJSkgIGludGVycC95aml0ICB5aml0IDFzdCBpdHIKMzBrX2lmZWxzZSAgICAg MjA4My4wICAgICAgIDAuMSAgICAgICAgIDIwMy42ICAgICAgMC4wICAgICAgICAgMTAuMjMgICAg ICAgIDAuODAgICAgICAgIAozMGtfbWV0aG9kcyAgICA1MTQwLjEgICAgICAgMC4wICAgICAgICAg NDc2LjcgICAgICAwLjEgICAgICAgICAxMC43OCAgICAgICAgMy45NSAgICAgICAgCmFjdGl2ZXJl Y29yZCAgIDE4OC4xICAgICAgICAwLjEgICAgICAgICA5OS41ICAgICAgIDAuMiAgICAgICAgIDEu ODkgICAgICAgICAxLjIzICAgICAgICAKYmluYXJ5dHJlZXMgICAgODA0LjggICAgICAgIDAuMSAg ICAgICAgIDQwOS4yICAgICAgMS4xICAgICAgICAgMS45NyAgICAgICAgIDEuOTMgICAgICAgIApj ZnVuY19pdHNlbGYgICAyMzIuNSAgICAgICAgMi40ICAgICAgICAgNDMuMyAgICAgICAxLjUgICAg ICAgICA1LjM2ICAgICAgICAgNS4zNCAgICAgICAgCmNodW5reV9wbmcgICAgIDIzMTYuOSAgICAg ICAwLjIgICAgICAgICA3NTcuMyAgICAgIDAuMyAgICAgICAgIDMuMDYgICAgICAgICAyLjg2ICAg ICAgICAKZXJ1YmkgICAgICAgICAgNDEyLjEgICAgICAgIDAuNCAgICAgICAgIDI4MS4zICAgICAg MS4wICAgICAgICAgMS40NiAgICAgICAgIDEuNDcgICAgICAgIAplcnViaV9yYWlscyAgICAzMS4x ICAgICAgICAgMi4yICAgICAgICAgMTcuNCAgICAgICAyLjcgICAgICAgICAxLjc4ICAgICAgICAg MC4zMyAgICAgICAgCmZhbm5rdWNocmVkdXggIDExNDE0LjYgICAgICAwLjIgICAgICAgICAyNzcz LjUgICAgIDEuMyAgICAgICAgIDQuMTIgICAgICAgICAxLjAwICAgICAgICAKZmliICAgICAgICAg ICAgNTkxLjggICAgICAgIDEuMSAgICAgICAgIDQxLjcgICAgICAgNC41ICAgICAgICAgMTQuMjAg ICAgICAgIDEzLjkzICAgICAgIApnZXRpdmFyICAgICAgICAyMzQuMiAgICAgICAgMy4xICAgICAg ICAgMjMuNSAgICAgICAwLjEgICAgICAgICA5Ljk1ICAgICAgICAgMS4wMCAgICAgICAgCmhleGFw ZGYgICAgICAgIDQ3NTUuNyAgICAgICAxLjAgICAgICAgICAyNTE3LjMgICAgIDMuMCAgICAgICAg IDEuODkgICAgICAgICAxLjUxICAgICAgICAKa2V5d29yZF9hcmdzICAgNTIwLjcgICAgICAgIDAu NiAgICAgICAgIDU0LjYgICAgICAgMC4yICAgICAgICAgOS41NSAgICAgICAgIDkuMjQgICAgICAg IApsZWUgICAgICAgICAgICAyMjc0LjEgICAgICAgMC4yICAgICAgICAgMTEzMy4zICAgICAwLjIg ICAgICAgICAyLjAxICAgICAgICAgMS45OCAgICAgICAgCmxpcXVpZC1yZW5kZXIgIDI5Ni43ICAg ICAgICAwLjMgICAgICAgICAxMzkuMyAgICAgIDIuOCAgICAgICAgIDIuMTMgICAgICAgICAxLjQ2 ICAgICAgICAKbWFpbCAgICAgICAgICAgMjEyLjkgICAgICAgIDAuMSAgICAgICAgIDEyNy45ICAg ICAgMC4xICAgICAgICAgMS42NiAgICAgICAgIDAuNzIgICAgICAgIApuYm9keSAgICAgICAgICAy MjUuNCAgICAgICAgMC4yICAgICAgICAgNzguMyAgICAgICAwLjIgICAgICAgICAyLjg4ICAgICAg ICAgMi43MCAgICAgICAgCm9wdGNhcnJvdCAgICAgIDE0NTkyLjEgICAgICAwLjcgICAgICAgICA0 MDcyLjggICAgIDAuMyAgICAgICAgIDMuNTggICAgICAgICAzLjQzICAgICAgICAKcHN5Y2gtbG9h ZCAgICAgMzk0Ny44ICAgICAgIDAuMCAgICAgICAgIDIwNzUuNSAgICAgMC4xICAgICAgICAgMS45 MCAgICAgICAgIDEuODggICAgICAgIApyYWlsc2JlbmNoICAgICAyODI2LjAgICAgICAgMC42ICAg ICAgICAgMTc3NC40ICAgICAxLjkgICAgICAgICAxLjU5ICAgICAgICAgMS4yNiAgICAgICAgCnJl c3BvbmRfdG8gICAgIDQyNC4zICAgICAgICAwLjIgICAgICAgICAxNTQuNSAgICAgIDMuMSAgICAg ICAgIDIuNzUgICAgICAgICAyLjc2ICAgICAgICAKcnVieWtvbiAgICAgICAgMjI1NDUuMSAgICAg IDAuNCAgICAgICAgIDY5OTMuNSAgICAgMS4zICAgICAgICAgMy4yMiAgICAgICAgIDMuMjQgICAg ICAgIApzZXRpdmFyICAgICAgICAxODUuOSAgICAgICAgNS42ICAgICAgICAgOTcuMCAgICAgICAw LjAgICAgICAgICAxLjkyICAgICAgICAgMS4wMCAgICAgICAgCnN0cl9jb25jYXQgICAgIDEyMy4x ICAgICAgICAwLjkgICAgICAgICAyOC42ICAgICAgIDIuMCAgICAgICAgIDQuMzEgICAgICAgICAz LjM1ICAgICAgICAKLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0gIC0tLS0t LS0tLSAgLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLQpMZWdlbmQ6Ci0gaW50 ZXJwL3lqaXQ6IHJhdGlvIG9mIGludGVycC95aml0IHRpbWUuIEhpZ2hlciBpcyBiZXR0ZXIuIEFi b3ZlIDEgcmVwcmVzZW50cyBhIHNwZWVkdXAuCi0gMXN0IGl0cjogcmF0aW8gb2YgaW50ZXJwL3lq aXQgdGltZSBmb3IgdGhlIGZpcnN0IGJlbmNobWFya2luZyBpdGVyYXRpb24uCmBgYAoKd2l0aCB0 aGUgc2hhcGVzIGJyYW5jaDoKCmBgYAplbmRfdGltZT0iMjAyMi0wOC0xNiAxMzo1NjozMiBQRFQg KC0wNzAwKSIKeWppdF9vcHRzPSIiCnJ1YnlfdmVyc2lvbj0icnVieSAzLjIuMGRldiAoMjAyMi0w OC0xNVQxODozNTozNFogb2JqZWN0LXNoYXBlcy1wcm90Li4gNTFhMjM3NTZjMykgW3g4Nl82NC1s aW51eF0iCmdpdF9icmFuY2g9Im9iamVjdC1zaGFwZXMtcHJvdG90eXBpbmciCmdpdF9jb21taXQ9 IjUxYTIzNzU2YzMiCgotLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLSAgLS0tLS0tLS0tLSAgLS0t LS0tLS0tICAtLS0tLS0tLS0tICAtLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tCmJlbmNoICAgICAg ICAgIGludGVycCAobXMpICBzdGRkZXYgKCUpICB5aml0IChtcykgIHN0ZGRldiAoJSkgIGludGVy cC95aml0ICB5aml0IDFzdCBpdHIKMzBrX2lmZWxzZSAgICAgMjEzNS4yICAgICAgIDAuMCAgICAg ICAgIDM0MC4xICAgICAgMC4xICAgICAgICAgNi4yOCAgICAgICAgIDAuOTUgICAgICAgIAozMGtf bWV0aG9kcyAgICA1MTgwLjcgICAgICAgMC4wICAgICAgICAgOTA2LjIgICAgICAwLjEgICAgICAg ICA1LjcyICAgICAgICAgMy41NiAgICAgICAgCmFjdGl2ZXJlY29yZCAgIDE4OS4yICAgICAgICAw LjEgICAgICAgICAxNzQuNSAgICAgIDAuMSAgICAgICAgIDEuMDggICAgICAgICAwLjgzICAgICAg ICAKYmluYXJ5dHJlZXMgICAgNzgzLjIgICAgICAgIDEuMCAgICAgICAgIDQzOC43ICAgICAgMi41 ICAgICAgICAgMS43OSAgICAgICAgIDEuODIgICAgICAgIApjZnVuY19pdHNlbGYgICAyMjUuMiAg ICAgICAgMS42ICAgICAgICAgNDQuMCAgICAgICAwLjYgICAgICAgICA1LjExICAgICAgICAgNS4w MSAgICAgICAgCmNodW5reV9wbmcgICAgIDIzOTQuOSAgICAgICAwLjIgICAgICAgICAxNjU3LjAg ICAgIDAuMiAgICAgICAgIDEuNDUgICAgICAgICAxLjQ0ICAgICAgICAKZXJ1YmkgICAgICAgICAg NDE4LjEgICAgICAgIDAuNSAgICAgICAgIDI4NC4zICAgICAgMS4xICAgICAgICAgMS40NyAgICAg ICAgIDEuNDUgICAgICAgIAplcnViaV9yYWlscyAgICAzMS42ICAgICAgICAgMS41ICAgICAgICAg MjYuMiAgICAgICAyLjEgICAgICAgICAxLjIxICAgICAgICAgMC4zNCAgICAgICAgCmZhbm5rdWNo cmVkdXggIDEyMjA4LjUgICAgICAwLjEgICAgICAgICAyODIxLjYgICAgIDAuNCAgICAgICAgIDQu MzMgICAgICAgICAwLjk5ICAgICAgICAKZmliICAgICAgICAgICAgNTY1LjcgICAgICAgIDAuMyAg ICAgICAgIDQxLjMgICAgICAgMC4xICAgICAgICAgMTMuNjkgICAgICAgIDEzLjU5ICAgICAgIApn ZXRpdmFyICAgICAgICAyNDcuNiAgICAgICAgMC4xICAgICAgICAgMjQ0LjkgICAgICAyLjAgICAg ICAgICAxLjAxICAgICAgICAgMS4wMiAgICAgICAgCmhleGFwZGYgICAgICAgIDQ5NjEuMCAgICAg ICAxLjYgICAgICAgICA0OTI2LjEgICAgIDAuOSAgICAgICAgIDEuMDEgICAgICAgICAwLjk0ICAg ICAgICAKa2V5d29yZF9hcmdzICAgNDk5LjcgICAgICAgIDAuOCAgICAgICAgIDU3LjAgICAgICAg MC40ICAgICAgICAgOC43NyAgICAgICAgIDguNjUgICAgICAgIApsZWUgICAgICAgICAgICAyMzYw LjAgICAgICAgMC42ICAgICAgICAgMjEzOC42ICAgICAwLjYgICAgICAgICAxLjEwICAgICAgICAg MS4xMSAgICAgICAgCmxpcXVpZC1yZW5kZXIgIDI5NC43ICAgICAgICAwLjcgICAgICAgICAyNzQu OSAgICAgIDEuNCAgICAgICAgIDEuMDcgICAgICAgICAwLjkxICAgICAgICAKbWFpbCAgICAgICAg ICAgMjE2LjYgICAgICAgIDAuMSAgICAgICAgIDE1Ny43ICAgICAgMC43ICAgICAgICAgMS4zNyAg ICAgICAgIDAuNzAgICAgICAgIApuYm9keSAgICAgICAgICAyMzIuNyAgICAgICAgMC4yICAgICAg ICAgMjM3LjIgICAgICAwLjUgICAgICAgICAwLjk4ICAgICAgICAgMC45OSAgICAgICAgCm9wdGNh cnJvdCAgICAgIDE1MDk1LjggICAgICAwLjcgICAgICAgICAxODMwOS4yICAgIDAuNSAgICAgICAg IDAuODIgICAgICAgICAwLjgzICAgICAgICAKcHN5Y2gtbG9hZCAgICAgNDE3NC41ICAgICAgIDAu MSAgICAgICAgIDM3MDcuOSAgICAgMC4xICAgICAgICAgMS4xMyAgICAgICAgIDEuMTMgICAgICAg IApyYWlsc2JlbmNoICAgICAyOTIzLjcgICAgICAgMC44ICAgICAgICAgMjU0OC40ICAgICAxLjQg ICAgICAgICAxLjE1ICAgICAgICAgMC45OCAgICAgICAgCnJlc3BvbmRfdG8gICAgIDQwOS4yICAg ICAgICAwLjMgICAgICAgICAxNjIuNiAgICAgIDEuNyAgICAgICAgIDIuNTIgICAgICAgICAyLjUy ICAgICAgICAKcnVieWtvbiAgICAgICAgMjI1NTQuMSAgICAgIDAuNyAgICAgICAgIDIwMTYwLjYg ICAgMC45ICAgICAgICAgMS4xMiAgICAgICAgIDEuMTAgICAgICAgIApzZXRpdmFyICAgICAgICAy NDkuNiAgICAgICAgMC4xICAgICAgICAgMTY5LjUgICAgICAwLjEgICAgICAgICAxLjQ3ICAgICAg ICAgMC45OSAgICAgICAgCnN0cl9jb25jYXQgICAgIDEzNy44ICAgICAgICAwLjggICAgICAgICAy OS4wICAgICAgIDIuNCAgICAgICAgIDQuNzUgICAgICAgICAzLjUwICAgICAgICAKLS0tLS0tLS0t LS0tLSAgLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0gIC0tLS0tLS0tLSAgLS0tLS0tLS0tLSAgLS0t LS0tLS0tLS0gIC0tLS0tLS0tLS0tLQpMZWdlbmQ6Ci0gaW50ZXJwL3lqaXQ6IHJhdGlvIG9mIGlu dGVycC95aml0IHRpbWUuIEhpZ2hlciBpcyBiZXR0ZXIuIEFib3ZlIDEgcmVwcmVzZW50cyBhIHNw ZWVkdXAuCi0gMXN0IGl0cjogcmF0aW8gb2YgaW50ZXJwL3lqaXQgdGltZSBmb3IgdGhlIGZpcnN0 IGJlbmNobWFya2luZyBpdGVyYXRpb24uCmBgYAoKV2UgYXJlIHNlZWluZyBzb21lIHZhcmlhdGlv bnMgaW4gWUpJVCBiZW5jaG1hcmsgbnVtYmVycywgYW5kIGFyZSB3b3JraW5nIG9uIGFkZHJlc3Np bmcgdGhlbS4KCiMjIDMyIGJpdCBhcmNoaXRlY3R1cmVzCgpXZSdyZSBzdG9yaW5nIHRoZSBzaGFw ZSBJRCBmb3IgVF9PQkpFQ1QgdHlwZXMgaW4gdGhlIHRvcCAzMiBiaXRzIG9mIHRoZSBmbGFncyBm aWVsZCAoc2hhcmluZyBzcGFjZSB3aXRoIHRoZSByYWN0b3IgSUQpLiAgQ29uc2VxdWVudGx5IDMy IGJpdCBtYWNoaW5lcyBkbyBub3QgYmVuZWZpdCBmcm9tIHRoaXMgcGF0Y2guIFRoaXMgcGF0Y2gg bWFrZXMgMzIgYml0IG1hY2hpbmVzIGFsd2F5cyBtaXNzIG9uIGlubGluZSBjYWNoZXMuCgojIyBJ bnN0YW5jZSB2YXJpYWJsZXMgd2l0aCBJRCA9PSAwCgpUaGlzIGlzIG1pbm9yLCBidXQgd2UgYWxz byBkbyBub3Qgc3VwcG9ydCBpbnN0YW5jZSB2YXJpYWJsZXMgd2hvc2UgSUQgaXMgMCBiZWNhdXNl IHRoZSBvdXRnb2luZyBlZGdlIHRhYmxlcyBhcmUgYGlkX3RhYmxlYHMgd2hpY2ggZG8gbm90IHN1 cHBvcnQgYDBgIGFzIGEga2V5LiBUaGVyZSBpcyBbb25lIHRlc3QgZm9yIHRoaXMgZmVhdHVyZV0o aHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9ibG9iL2FjODkwZWMwNjI0ZTNkOGE0NGQ4NWQ2 NzEyN2JjOTQzMjJjYWEzNGUvdGVzdC8tZXh0LS9tYXJzaGFsL3Rlc3RfaW50ZXJuYWxfaXZhci5y YiNMOS1MMjEpLCBhbmQgd2UgaGF2ZSBtYXJrZWQgaXQgYXMgcGVuZGluZyBpbiB0aGlzIHBhdGNo LgoKIyMgTWVyZ2luZwoKV2UgdGhpbmsgdGhpcyBmZWF0dXJlIGlzIHJlYWR5IHRvIG1lcmdlLiBQ bGVhc2UgZ2l2ZSB1cyBmZWVkYmFjaywgYW5kIGxldCB1cyBrbm93IGlmIGl0IGlzIHBvc3NpYmxl IHRvIG1lcmdlIG5vdy4gSWYgaXQncyBub3QgcG9zc2libGUsIHBsZWFzZSBsZXQgdXMga25vdyB3 aGF0IG5lZWRzIHRvIGJlIGltcHJvdmVkIHNvIHRoYXQgd2UgY2FuIG1lcmdlLgoKIyMgRnV0dXJl IHdvcmsKCldlIHBsYW4gdG8gd29yayBuZXh0IG9uIHNwZWVkaW5nIHVwIHRoZSBjbGFzcyBpbnN0 YW5jZSB2YXJpYWJsZXMuIFdlIHdpbGwgaW1wbGVtZW50IGNhY2hpbmcgZm9yIHRoaXMsIGFuZCBz ZWUgdGhlIGZ1bGwgYmVuZWZpdHMgb2Ygb2JqZWN0IHNoYXBlcyBpbiB0aGlzIGNhc2UuCgotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkZlYXR1cmUgIzE4Nzc2OiBPYmpl Y3QgU2hhcGVzCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xODc3NiNjaGFuZ2Ut OTg2ODYKCiogQXV0aG9yOiBqZW1tYWkgKEplbW1hIElzc3JvZmYpCiogU3RhdHVzOiBPcGVuCiog UHJpb3JpdHk6IE5vcm1hbAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiMgT2JqZWN0IFNoYXBlcyBpbXBsZW1lbnRhdGlvbgoKQWFyb24gUGF0dGVyc29uLCBFaWxlZW4g VWNoaXRlbGxlIGFuZCBJIGhhdmUgYmVlbiB3b3JraW5nIG9uIGFuIGltcGxlbWVudGF0aW9uIG9m IE9iamVjdCBTaGFwZXMgZm9yIFJ1YnkuICBXZSBhcmUgZmlsaW5nIGEgdGlja2V0IHRvIHNoYXJl IHdoYXQgd2UndmUgYmVlbiBkb2luZywgYXMgd2VsbCBhcyBnZXQgZmVlZGJhY2sgb24gdGhlIHBy b2plY3QgaW4gaXRzIGN1cnJlbnQgc3RhdGUuCgpXZSBob3BlIHRvIGV2ZW50dWFsbHkgc3VibWl0 IHRoZSBmaW5hbGl6ZWQgcHJvamVjdCB1cHN0cmVhbSBhZnRlciB2ZXJpZnlpbmcgZWZmaWNhY3ku CgojIyBXaGF0IGFyZSBPYmplY3QgU2hhcGVzPwoKT2JqZWN0IHNoYXBlcyBhcmUgYSB0ZWNobmlx dWUgZm9yIHJlcHJlc2VudGluZyBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdC4gT3RoZXIgbGFuZ3Vh Z2UgaW1wbGVtZW50YXRpb25zLCBpbmNsdWRpbmcgW1RydWZmbGVSdWJ5XShodHRwczovL2dpdGh1 Yi5jb20vb3JhY2xlL3RydWZmbGVydWJ5KSBhbmQgW1Y4XShodHRwczovL3Y4LmRldi8pLCB1c2Ug dGhpcyB0ZWNobmlxdWUuIENocmlzIFNlYXRvbiwgdGhlIGNyZWF0b3Igb2YgVHJ1ZmZsZVJ1Ynks IGRpc2N1c3NlZCBvYmplY3Qgc2hhcGVzIGluIGhpcyBbUnVieUthaWdpIDIwMjEgS2V5bm90ZV0o aHR0cHM6Ly9ydWJ5a2FpZ2kub3JnLzIwMjEtdGFrZW91dC9wcmVzZW50YXRpb25zL2NocmlzZ3Nl YXRvbi5odG1sKSBhbmQgTWF4aW1lIENoZXZhbGllci1Cb2lzdmVydCBkaXNjdXNzZWQgdGhlIGlt cGxpY2F0aW9ucyBmb3IgWUpJVCBpbiB0aGUgbGF0dGVyIHBhcnQgb2YgW2hlciB0YWxrIGF0IFJ1 YnlLYWlnaSAyMDIxXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVBCVkxmM3lmTXM4 JnQ9MTEwMHMpLiBUaGUgb3JpZ2luYWwgaWRlYSBvZiBvYmplY3Qgc2hhcGVzIFtvcmlnaW5hdGVz IGZyb20gdGhlIFNlbGYgbGFuZ3VhZ2VdKGh0dHBzOi8vYmlibGlvZ3JhcGh5LnNlbGZsYW5ndWFn ZS5vcmcvX3N0YXRpYy9pbXBsZW1lbnRhdGlvbi5wZGYpLCB3aGljaCBpcyBjb25zaWRlcmVkIGEg ZGlyZWN0IGRlc2NlbmRhbnQgb2YgU21hbGx0YWxrLgoKRWFjaCBzaGFwZSByZXByZXNlbnRzIGEg c3BlY2lmaWMgc2V0IG9mIGF0dHJpYnV0ZXMgKGluc3RhbmNlIHZhcmlhYmxlcyBhbmQgb3RoZXIg cHJvcGVydGllcykgYW5kIHRoZWlyIHZhbHVlcy4gSW4gb3VyIGltcGxlbWVudGF0aW9uLCBhbGwg b2JqZWN0cyBoYXZlIGEgc2hhcGUuIFRoZSBzaGFwZXMgYXJlIG5vZGVzIGluIGEgdHJlZSBkYXRh IHN0cnVjdHVyZS4gRXZlcnkgZWRnZSBpbiB0aGUgdHJlZSByZXByZXNlbnRzIGFuIGF0dHJpYnV0 ZSB0cmFuc2l0aW9uLgoKTW9yZSBzcGVjaWZpY2FsbHksIHNldHRpbmcgYW4gaW5zdGFuY2UgdmFy aWFibGUgb24gYW4gaW5zdGFuY2Ugb2YgYW4gb2JqZWN0IGNyZWF0ZXMgYW4gb3V0Z29pbmcgZWRn ZSBmcm9tIHRoZSBpbnN0YW5jZSdzIGN1cnJlbnQgc2hhcGUuIFRoaXMgaXMgYSB0cmFuc2l0aW9u IGZyb20gb25lIHNoYXBlIHRvIGFub3RoZXIuIFRoZSBlZGdlIHJlcHJlc2VudHMgdGhlIGluc3Rh bmNlIHZhcmlhYmxlIHRoYXQgaXMgc2V0LgoKRm9yIGV4YW1wbGU6CgpgYGBydWJ5CmNsYXNzIEZv bwogIGRlZiBpbml0aWFsaXplCiAgICAjIEN1cnJlbnRseSB0aGlzIGluc3RhbmNlIGlzIHRoZSBy b290IHNoYXBlIChJRCAwKQogICAgQGEgPSAxICMgVHJhbnNpdGlvbnMgdG8gYSBuZXcgc2hhcGUg dmlhIGVkZ2UgQGEgKElEIDEpCiAgICBAYiA9IDIgIyBUcmFuc2l0aW9ucyB0byBhIG5ldyBzaGFw ZSB2aWEgZWRnZSBAYiAoSUQgMikKICBlbmQKZW5kCgpmb28gPSBGb28ubmV3CmBgYAoKV2hlbiBg Rm9vYCBpcyBpbnRpYWxpemVkLCBpdHMgc2hhcGUgaXMgdGhlIHJvb3Qgc2hhcGUgd2l0aCBJRCAw LiAgVGhlIHJvb3Qgc2hhcGUgcmVwcmVzZW50cyBhbiBlbXB0eSBvYmplY3Qgd2l0aCBubyBpbnN0 YW5jZSB2YXJpYWJsZXMuIEVhY2ggdGltZSBhbiBpbnN0YW5jZSB2YXJpYWJsZSBpcyBzZXQgb24g YGZvb2AsIHRoZSBzaGFwZSBvZiB0aGUgaW5zdGFuY2UgY2hhbmdlcy4gSXQgZmlyc3QgdHJhbnNp dGlvbnMgd2l0aCBgQGFgIHRvIGEgc2hhcGUgd2l0aCBJRCAxLCBhbmQgdGhlbiB0cmFuc2l0aW9u cyB3aXRoIGBAYmAgdG8gYSBzaGFwZSB3aXRoIElEIDIuIElmIGBAYWAgaXMgdGhlbiBzZXQgdG8g YSBkaWZmZXJlbnQgdmFsdWUsIGl0cyBzaGFwZSB3aWxsIHJlbWFpbiB0aGUgc2hhcGUgd2l0aCBJ RCAyLCBzaW5jZSB0aGlzIHNoYXBlIGFscmVhZHkgaW5jbHVkZXMgdGhlIGluc3RhbmNlIHZhcmlh YmxlIGBAYWAuICAKCiFbXShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNv bS8xOTg4NTYwLzE2NzkxODM2MC0wYTZjOTFhYS0yNTg3LTQ4Y2ItOGZmMi03ZjNhOTU4MzI4OGUu c3ZnKQoKVGhlcmUgaXMgb25lIGdsb2JhbCBzaGFwZSB0cmVlIGFuZCBvYmplY3RzIHdoaWNoIHVu ZGVyZ28gdGhlIHNhbWUgc2hhcGUgdHJhbnNpdGlvbnMgaW4gdGhlIHNhbWUgb3JkZXIgd2lsbCBl bmQgdXAgd2l0aCB0aGUgc2FtZSBmaW5hbCBzaGFwZS4KCkZvciBpbnN0YW5jZSwgaWYgd2UgaGF2 ZSBhIGNsYXNzIGBCYXJgIGRlZmluZWQgYXMgZm9sbG93cywgdGhlIGZpcnN0IHRyYW5zaXRpb24g b24gYEJhci5uZXdgIHRocm91Z2ggdGhlIGluc3RhbmNlIHZhcmlhYmxlIGBAYWAgd2lsbCBiZSB0 aGUgc2FtZSBhcyBgRm9vLm5ld2AncyBmaXJzdCB0cmFuc2l0aW9uOgoKYGBgcnVieQpjbGFzcyBG b28KICBkZWYgaW5pdGlhbGl6ZQogICAgIyBDdXJyZW50bHkgdGhpcyBpbnN0YW5jZSBpcyB0aGUg cm9vdCBzaGFwZSAoSUQgMCkKICAgIEBhID0gMSAjIFRyYW5zaXRpb25zIHRvIGEgbmV3IHNoYXBl IHZpYSBlZGdlIEBhIChJRCAxKQogICAgQGIgPSAyICMgVHJhbnNpdGlvbnMgdG8gYSBuZXcgc2hh cGUgdmlhIGVkZ2UgQGIgKElEIDIpCiAgZW5kCmVuZAoKY2xhc3MgQmFyCiAgZGVmIGluaXRpYWxp emUKICAgICMgQ3VycmVudGx5IHRoaXMgaW5zdGFuY2UgaXMgdGhlIHJvb3Qgc2hhcGUgKElEIDAp CiAgICBAYSA9IDEgIyBUcmFuc2l0aW9ucyB0byBzaGFwZSBkZWZpbmVkIGVhcmxpZXIgdmlhIGVk Z2UgQGEgKElEIDEpCiAgICBAYyA9IDEgIyBUcmFuc2l0aW9ucyB0byBhIG5ldyBzaGFwZSB2aWEg ZWRnZSBAYyAoSUQgMykKICAgIEBiID0gMSAjIFRyYW5zaXRpb25zIHRvIGEgbmV3IHNoYXBlIHZp YSBlZGdlIEBiIChJRCA0KQogIGVuZAplbmQKCmZvbyA9IEZvby5uZXcgIyBibHVlIGluIHRoZSBk aWFncmFtCmJhciA9IEJhci5uZXcgIyByZWQgaW4gdGhlIGRpYWdyYW0KYGBgCgpJbiB0aGUgZGlh Z3JhbSBiZWxvdywgcHVycGxlIHJlcHJlc2VudHMgc2hhcmVkIHRyYW5zaXRpb25zLCBibHVlIHJl cHJlc2VudHMgdHJhbnNpdGlvbnMgZm9yIG9ubHkgYGZvb2AsIGFuZCByZWQgcmVwcmVzZW50cyB0 cmFuc2l0aW9ucyBmb3Igb25seSBgYmFyYC4KCiFbXShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1 YnVzZXJjb250ZW50LmNvbS8xOTg4NTYwLzE2NzkxODg5OS1mMWE2ZjM0NC1hZTVlLTRkYzAtYjE3 YS1mYjE1NmQxZDU1MGYuc3ZnKQoKIyMjIENhY2hlIHN0cnVjdHVyZQoKRm9yIGluc3RhbmNlIHZh cmlhYmxlIHdyaXRlcnMsIHRoZSBjdXJyZW50IHNoYXBlIElELCB0aGUgc2hhcGUgSUQgdGhhdCBp dmFyIHdyaXRlIHdvdWxkIHRyYW5zaXRpb24gdG8gYW5kIGluc3RhbmNlIHZhcmlhYmxlIGluZGV4 IGFyZSBhbGwgc3RvcmVkIGluIHRoZSBpbmxpbmUgY2FjaGUuIFRoZSBzaGFwZSBJRCBpcyB0aGUg a2V5IHRvIHRoZSBjYWNoZS4KCkZvciBpbnN0YW5jZSB2YXJpYWJsZSByZWFkZXJzLCB0aGUgc2hh cGUgSUQgYW5kIGluc3RhbmNlIHZhcmlhYmxlIGluZGV4IGFyZSBzdG9yZWQgaW4gdGhlIGlubGlu ZSBjYWNoZS4gIEFnYWluLCB0aGUgc2hhcGUgSUQgaXMgdGhlIGNhY2hlIGtleS4KCmBgYHJ1YnkK Y2xhc3MgRm9vCiAgZGVmIGluaXRpYWxpemUKICAgIEBhID0gMSAjIElDIHNoYXBlX2lkOiAwLCBu ZXh0IHNoYXBlOiAxLCBpdiBpbmRleCAwCiAgICBAYiA9IDEgIyBJQyBzaGFwZV9pZDogMSwgbmV4 dCBzaGFwZTogMiwgaXYgaW5kZXggMQogIGVuZAogICAgCiAgZGVmIGEKICAgIEBhICMgSUMgc2hh cGVfaWQ6IDIsIGl2IGluZGV4IDAKICBlbmQKZW5kCmBgYAoKIyMgUmF0aW9uYWxlCgpXZSB0aGlu ayB0aGF0IGFuIG9iamVjdCBzaGFwZSBpbXBsZW1lbnRhdGlvbiB3aWxsIHNpbXBsaWZ5IGNhY2hl IGNoZWNrcywgaW5jcmVhc2UgaW5saW5lIGNhY2hlIGhpdHMsIGRlY3JlYXNlIHJ1bnRpbWUgY2hl Y2tzLCBhbmQgZW5hYmxlIG90aGVyIHBvdGVudGlhbCBmdXR1cmUgb3B0aW1pemF0aW9ucy4gVGhl c2UgYXJlIGFsbCBleHBsYWluZWQgYmVsb3cuIAoKIyMjIFNpbXBsaWZ5IGNhY2hpbmcKClRoZSBj dXJyZW50IGNhY2hlIGltcGxlbWVudGF0aW9uIGRlcGVuZHMgb24gdGhlIGNsYXNzIG9mIHRoZSBy ZWNlaXZlci4gU2luY2UgdGhlIGFkZHJlc3Mgb2YgdGhlIGNsYXNzIGNhbiBiZSByZXVzZWQsIHRo ZSBjdXJyZW50IGNhY2hlIGltcGxlbWVudGF0aW9uIGFsc28gZGVwZW5kcyBvbiBhbiBpbmNyZW1l bnRpbmcgc2VyaWFsIG51bWJlciBzZXQgb24gdGhlIGNsYXNzICh0aGUgY2xhc3Mgc2VyaWFsKS4g IFRoZSBzaGFwZSBpbXBsZW1lbnRhdGlvbiBoYXMgbm8gc3VjaCBkZXBlbmRlbmN5LiBJdCBvbmx5 IHJlcXVpcmVzIGNoZWNraW5nIHRoZSBzaGFwZSBJRCB0byBkZXRlcm1pbmUgaWYgdGhlIGNhY2hl IGlzIHZhbGlkLgoKIyMjIENhY2hlIGhpdHMKCk9iamVjdHMgdGhhdCBzZXQgcHJvcGVydGllcyBp biB0aGUgc2FtZSBvcmRlciBjYW4gc2hhcmUgc2hhcGVzLiAgRm9yIGV4YW1wbGU6CgpgYGBydWJ5 CmNsYXNzIEhvZ2UKICBkZWYgaW5pdGlhbGl6ZQogICAgIyBDdXJyZW50bHkgdGhpcyBpbnN0YW5j ZSBpcyB0aGUgcm9vdCBzaGFwZSAoSUQgMCkKICAgIEBhID0gMSAjIFRyYW5zaXRpb25zIHRvIHRo ZSBuZXh0IHNoYXBlIHZpYSBlZGdlIG5hbWVkIEBhCiAgICBAYiA9IDIgIyBUcmFuc2l0aW9ucyB0 byBuZXh0IHNoYXBlIHZpYSBlZGdlIG5hbWVkIEBiCiAgZW5kCmVuZAoKY2xhc3MgRnVnYSA8IEhv Z2U7IGVuZAoKaG9nZSA9IEhvZ2UubmV3CmZ1Z2EgPSBGdWdhLm5ldwpgYGAKCkluIHRoZSBhYm92 ZSBleGFtcGxlLCB0aGUgaW5zdGFuY2VzIGBob2dlYCBhbmQgYGZ1Z2FgIHdpbGwgc2hhcmUgdGhl IHNhbWUgc2hhcGUgSUQuICBUaGlzIG1lYW5zIGlubGluZSBjYWNoZXMgaW4gYGluaXRpYWxpemVg IHdpbGwgaGl0IGluIGJvdGggY2FzZXMuICBUaGlzIGNvbnRyYXN0cyB3aXRoIHRoZSBjdXJyZW50 IGltcGxlbWVudGF0aW9uIHRoYXQgdXNlcyB0aGUgY2xhc3MgYXMgdGhlIGNhY2hlIGtleS4gIElu IG90aGVyIHdvcmRzLCB3aXRoIG9iamVjdCBzaGFwZXMgdGhlIGFib3ZlIGNvZGUgd2lsbCBoaXQg aW5saW5lIGNhY2hlcyB3aGVyZSB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB3aWxsIG1pc3Mu CgpJZiBwZXJmb3JtYW5jZSB0ZXN0aW5nIHJldmVhbHMgdGhhdCBjYWNoZSBoaXRzIGFyZSAqbm90 KiBzdWJzdGFudGlhbGx5IGltcHJvdmVkLCB0aGVuIHdlIGNhbiB1c2Ugc2hhcGVzIHRvIHJlY2xh aW0gbWVtb3J5IGZyb20gYFJCYXNpY2AuIFdlIGNhbiBhY2NvbXBsaXNoIHRoaXMgYnkgZW5jb2Rp bmcgdGhlIGNsYXNzIHdpdGhpbiB0aGUgc2hhcGUgdHJlZS4gVGhpcyB3aWxsIGhhdmUgYW4gZXF1 aXZhbGVudCBjYWNoZSBoaXQgcmF0ZSB0byB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbi4gT25j ZSB0aGUgY2xhc3MgaXMgZW5jb2RlZCB3aXRoaW4gdGhlIHNoYXBlIHRyZWUsIHdlIGNhbiByZW1v dmUgdGhlIGNsYXNzIHBvaW50ZXIgZnJvbSBgUkJhc2ljYCBhbmQgZWl0aGVyIHJlY2xhaW0gdGhh dCBtZW1vcnkgb3IgZnJlZSBpdCBmb3IgYW5vdGhlciB1c2UuCgojIyMgRGVjcmVhc2VzIHJ1bnRp bWUgY2hlY2tpbmcKCldlIGNhbiBlbmNvZGUgYXR0cmlidXRlcyB0aGF0IGFyZW4ndCBpbnN0YW5j ZSB2YXJpYWJsZXMgaW50byBhbiBvYmplY3QncyBzaGFwZS4gQ3VycmVudGx5LCB3ZSBhbHNvIGlu Y2x1ZGUgZnJvemVuIHdpdGhpbiB0aGUgc2hhcGUuIFRoaXMgbWVhbnMgd2UgY2FuIGxpbWl0IGZy b3plbiBjaGVja3MgdG8gb25seSBjYWNoZSBtaXNzZXMuCgpGb3IgZXhhbXBsZSwgdGhlIGZvbGxv d2luZyBjb2RlOgoKYGBgcnVieQpjbGFzcyBUb3RvCiAgZGVmIHNldF9hCiAgICBAYSA9IDEgIyBj YWNoZTogc2hhcGU6IDAsIG5leHQgc2hhcGU6IDEsIElWIGlkeDogMAogIGVuZAplbmQKCnRvdG8g PSBUb3RvLm5ldyAjIHNoYXBlIDAKdG90by5zZXRfYSAgICAgIyBzaGFwZSAxCgp0b3RvID0gVG90 by5uZXcgIyBzaGFwZSAwCnRvdG8uZnJlZXplICAgICMgc2hhcGUgMgp0b3RvLnNldF9hICAgICAj IENhY2hlIG1pc3MsIEV4Y2VwdGlvbiEKYGBgCgohW10oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRo dWJ1c2VyY29udGVudC5jb20vMTk4ODU2MC8xNjc5MjAwMDEtYzRlNjMyNmItM2EzYy00ODNiLWE3 OTctOWUwMjMxNzY0N2Q3LnN2ZykKCldpdGhvdXQgc2hhcGVzLCBhbGwgaW5zdGFuY2UgdmFyaWFi bGUgc2V0cyByZXF1aXJlIGNoZWNraW5nIHRoZSBmcm96ZW4gc3RhdHVzIG9mIHRoZSBvYmplY3Qu IFdpdGggc2hhcGVzLCB3ZSBvbmx5IG5lZWQgdG8gY2hlY2sgdGhlIGZyb3plbiBzdGF0dXMgb24g Y2FjaGUgbWlzc2VzLgoKV2UgY2FuIGFsc28gZWxpbWluYXRlIGVtYmVkZGVkIGFuZCBleHRlbmRl ZCBjaGVja3Mgd2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIG9iamVjdCBzaGFwZXMuIEFueSBwYXJ0 aWN1bGFyIHNoYXBlIHJlcHJlc2VudHMgYW4gb2JqZWN0IHRoYXQgaXMgX2VpdGhlcl8gZXh0ZW5k ZWQgb3IgZW1iZWRkZWQuIEpJVHMgY2FuIHBvc3NpYmx5IHRha2UgYWR2YW50YWdlIG9mIHRoaXMg ZmFjdCBieSBnZW5lcmF0aW5nIHNwZWNpYWxpemVkIG1hY2hpbmUgY29kZSBiYXNlZCBvbiB0aGUg c2hhcGVzLiAKICAgIAojIyMgQ2xhc3MgaW5zdGFuY2UgdmFyaWFibGVzIGNhbiBiZSBzdG9yZWQg aW4gYW4gYXJyYXkKCkN1cnJlbnRseSwgYFRfQ0xBU1NgIGFuZCBgVF9NT0RVTEVgIGluc3RhbmNl cyBjYW5ub3QgdXNlIHRoZSBzYW1lIElWIGluZGV4IHRhYmxlIG9wdGltaXphdGlvbiB0aGF0IGBU X09CSkVDVGAgaW5zdGFuY2VzIHVzZS4gIFdlIHRoaW5rIHRoYXQgdGhlIG9iamVjdCBzaGFwZXMg dGVjaG5pcXVlIGNhbiBiZSBsZXZlcmFnZWQgYnkgY2xhc3MgaW5zdGFuY2VzIHRvIHVzZSBhcnJh eXMgZm9yIGNsYXNzIGluc3RhbmNlIHZhcmlhYmxlIHN0b3JhZ2UgYW5kIG1heSBwb3NzaWJseSBs ZWFkIHRvIGEgcmVkdWN0aW9uIGluIG1lbW9yeSB1c2FnZSAodGhvdWdoIHdlIGhhdmUgeWV0IHRv IHRlc3QgdGhpcykuCgojIyBJbXBsZW1lbnRhdGlvbiBEZXRhaWxzCgpbSGVyZV0oaHR0cHM6Ly9n aXRodWIuY29tL2plbW1haXNzcm9mZi9ydWJ5L2NvbW1pdC80ZTk1ZDAxNjU0ZjI0Y2VmZjZjODMz MGNmNGU1YzdkYWM1MDQ3MzllKSBpcyBhIGxpbmsgdG8gb3VyIGNvZGUgc28gZmFyLgoKQXMgbWVu dGlvbmVkIGVhcmxpZXIsIHNoYXBlIG9iamVjdHMgZm9ybSBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUu ICBJbiBvcmRlciB0byBsb29rIHVwIHRoZSBzaGFwZSBxdWlja2x5LCB3ZSBhbHNvIHN0b3JlIHRo ZSBzaGFwZXMgaW4gYSB3ZWFrIGFycmF5IHRoYXQgaXMgc3RvcmVkIG9uIHRoZSBWTS4gIFRoZSBJ RCBvZiB0aGUgc2hhcGUgaXMgdGhlIGluZGV4IGluIHRvIHRoZSBhcnJheSwgYW5kIHRoZSBJRCBp cyBzdG9yZWQgb24gdGhlIG9iamVjdC4KCkZvciBgVF9PQkpFQ1RgIG9iamVjdHMsIHdlIHN0b3Jl IHRoZSBzaGFwZSBJRCBpbiB0aGUgb2JqZWN0J3MgaGVhZGVyLiBPbiA2NCBiaXQgc3lzdGVtcywg dGhlIHVwcGVyIDMyIGJpdHMgYXJlIHVzZWQgYnkgUmFjdG9ycy4gIFdlIHdhbnQgb2JqZWN0IHNo YXBlcyB0byBiZSBlbmFibGVkIG9uIDMyIGJpdCBzeXN0ZW1zIGFuZCA2NCBiaXQgc3lzdGVtcyBz byB0aGF0IGxpbWl0cyB1cyB0byB0aGUgYm90dG9tIDMyIGJpdHMgb2YgdGhlIE9iamVjdCBoZWFk ZXIuICBUaGUgdG9wIDIwIGJpdHMgZm9yIGBUX09CSkVDVGAgb2JqZWN0cyB3YXMgdW51c2VkLCBz byB3ZSB1c2VkIHRoZSB0b3AgMTYgYml0cyBmb3IgdGhlIHNoYXBlIGlkLiAgV2UgY2hvc2UgdGhl IHRvcCAxNiBiaXRzIGJlY2F1c2UgdGhpcyBhbGxvd3MgdXMgdG8gdXNlIGB1aW50MTZfdGAgYW5k IG1hc2tpbmcgdGhlIGhlYWRlciBiaXRzIGlzIGVhc2llci4KClRoaXMgaW1wbGVtZW50YXRpb24g ZGV0YWlsIGxpbWl0cyB1cyB0byB+NjVrIHNoYXBlcy4gV2UgbWVhc3VyZWQgdGhlIG51bWJlciBv ZiBzaGFwZXMgdXNlZCBvbiBhIHNpbXBsZSBbRGlzY291cnNlXShodHRwczovL2dpdGh1Yi5jb20v ZGlzY291cnNlL2Rpc2NvdXJzZSkgYXBwbGljYXRpb24gKH4zLjVrKSwgW1JhaWxzQmVuY2hdKGh0 dHBzOi8vZ2l0aHViLmNvbS9rMGt1YnVuL3JhaWxzYmVuY2gpICh+NGspLCBhbmQgU2hvcGlmeSdz IG1vbm9saXRoJ3MgdGVzdCBzdWl0ZSAofjQwaykuIEFjY29yZGluZ2x5LCB3ZSBkZWNpZGVkIHRv IGltcGxlbWVudCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gb2JqZWN0IHNoYXBlcyBzbyB3ZSBjYW4g cmVjeWNsZSBzaGFwZSBJRHMgd2hpY2ggYXJlIG5vIGxvbmdlciBpbiB1c2UuICBXZSBhcmUgY3Vy cmVudGx5IHdvcmtpbmcgb24gc2hhcGUgR0MuCgpFdmVuIHRob3VnaCBpdCdzIHVubGlrZWx5LCBp dCdzIHN0aWxsIHBvc3NpYmxlIGZvciBhbiBhcHBsaWNhdGlvbiB0byBydW4gb3V0IG9mIHNoYXBl cy4gT25jZSBhbGwgc2hhcGUgSURzIGFyZSBpbiB1c2UsIGFueSBvYmplY3RzIHRoYXQgbmVlZCBu ZXcgc2hhcGUgSURzIHdpbGwgbmV2ZXIgaGl0IG9uIGlubGluZSBjYWNoZXMuCgojIyBFdmFsdWF0 aW9uCgpXZSBoYXZlIHNvIGZhciB0ZXN0ZWQgdGhpcyBicmFuY2ggd2l0aCBbRGlzY291cnNlXSho dHRwczovL2dpdGh1Yi5jb20vZGlzY291cnNlL2Rpc2NvdXJzZSksIFtSYWlsc0JlbmNoXShodHRw czovL2dpdGh1Yi5jb20vazBrdWJ1bi9yYWlsc2JlbmNoKSBhbmQgU2hvcGlmeSdzIG1vbm9saXRo LiBXZSBwbGFuIHRvIHRlc3QgdGhpcyBicmFuY2ggbW9yZSBicm9hZGx5IGFnYWluc3Qgc2V2ZXJh bCBvcGVuIHNvdXJjZSBSdWJ5IGFuZCBSYWlscyBhcHBsaWNhdGlvbnMuIAoKQmVmb3JlIHdlIGNv bnNpZGVyIHRoaXMgYnJhbmNoIHRvIGJlIHJlYWR5IGZvciBmb3JtYWwgcmV2aWV3LCB3ZSB3YW50 IHRoZSBydW50aW1lIHBlcmZvcm1hbmNlIGFuZCBtZW1vcnkgdXNhZ2Ugb2YgdGhlc2UgYmVuY2ht YXJrcyB0byBiZSBlcXVpdmFsZW50IG9yIGJldHRlciB0aGFuIGl0IGlzIGN1cnJlbnRseS4gSW4g b3VyIG9waW5pb24sIGV2ZW4gd2l0aCBlcXVpdmFsZW50IHJ1bnRpbWUgcGVyZm9ybWFuY2UgYW5k IG1lbW9yeSB1c2FnZSwgdGhlIGZ1dHVyZSBiZW5lZml0cyBvZiB0aGlzIGFwcHJvYWNoIG1ha2Ug dGhlIGNoYW5nZSBzZWVtIHdvcnRod2hpbGUuCgojIyBGZWVkYmFjawoKSWYgeW91IGhhdmUgYW55 IGZlZWRiYWNrLCBjb21tZW50cywgb3IgcXVlc3Rpb25zLCBwbGVhc2UgbGV0IHVzIGtub3cgYW5k IHdlJ2xsIGRvIG91ciBiZXN0IHRvIGFkZHJlc3MgaXQuIFRoYW5rIHlvdSEKCi0tLUZpbGVzLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kb2JqZWN0LXNoYXBlcy5wYXRjaCAoMTgwIEtC KQoKCi0tIApodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8K