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.6 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS,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 A7CF51F670 for ; Fri, 22 Oct 2021 20:03:55 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 143F4120F2F; Sat, 23 Oct 2021 05:03:52 +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 098D1120F01 for ; Sat, 23 Oct 2021 05:03:48 +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=yt8C6AZSZr2gD/aUwPA+MkWB+AyBiQh+AxKaB7zCjHo=; b=mTBTXpEbOjpqPY0jxqI6LP97ID/1lWYWQPVJ9q5LKT/DlmFzqGBCOt0jsxP4354MKw4b HZ5P3fQl66J+L821ONZjO0QyJkiGN9BrGfo4S8Oxa/buX0qdfCzqwdJ2b5nJSTysUd7Ls0 Eg/VGdf8P1K9/mPjcKpneWmbm+SY4mTJ0= Received: by filterdrecv-7bc86b958d-gsk2n with SMTP id filterdrecv-7bc86b958d-gsk2n-1-6173191E-8 2021-10-22 20:03:42.107758162 +0000 UTC m=+4398200.833848939 Received: from herokuapp.com (unknown) by geopod-ismtpd-1-2 (SG) with ESMTP id UrOr1Yp_SzyMQCXcJ5nn1A for ; Fri, 22 Oct 2021 20:03:42.092 +0000 (UTC) Date: Fri, 22 Oct 2021 20:03:42 +0000 (UTC) From: "peterzhu2118 (Peter Zhu)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 18239 X-Redmine-Issue-Author: peterzhu2118 X-Redmine-Sender: peterzhu2118 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: 81964 X-SG-EID: =?us-ascii?Q?Je5A7G63GhfECAlIirw6sGXmOX2lHebfQJh1Ny5404yZTMLDoRFxOJ=2FeRh30W+?= =?us-ascii?Q?VG3jKN3IIMvrTc6x81xc9blLAXOXOoA9wb31uxX?= =?us-ascii?Q?25tZKSnO6UHFjSi99zwlcE4oNhYtbUJoUCsZJSM?= =?us-ascii?Q?PgM0S5tmKM4XQ37nGUc86F3YgeBaeoKyyeho6kK?= =?us-ascii?Q?D=2F+nVaaFu6D421g9V9VVR7WTf7j6NlykqASzxpE?= =?us-ascii?Q?risyqjEvd9i0zoPBFKHK8r1+hH1A8GYRXqY2IJv?= =?us-ascii?Q?QChfalmUm0h+rJmLVsAZw=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 105756 Subject: [ruby-core:105756] [Ruby master Feature#18239] Variable Width Allocation: Strings 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" SXNzdWUgIzE4MjM5IGhhcyBiZWVuIHVwZGF0ZWQgYnkgcGV0ZXJ6aHUyMTE4IChQZXRlciBaaHUp LgoKClRoYW5rIHlvdSBAbWF0ei4gV2Ugd2lsbCBtZXJnZSB3aXRoIGl0IHR1cm5lZCBvZmYgYnkg ZGVmYXVsdCBmb3IgMy4xLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpGZWF0dXJlICMxODIzOTogVmFyaWFibGUgV2lkdGggQWxsb2NhdGlvbjogU3RyaW5ncwpodHRw czovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTgyMzkjY2hhbmdlLTk0MjYzCgoqIEF1dGhv cjogcGV0ZXJ6aHUyMTE4IChQZXRlciBaaHUpCiogU3RhdHVzOiBPcGVuCiogUHJpb3JpdHk6IE5v cm1hbAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgR2l0SHViIFBS OiBodHRwczovL2dpdGh1Yi5jb20vcnVieS9ydWJ5L2lzc3Vlcy80OTMzCgojIEZlYXR1cmUgZGVz Y3JpcHRpb24KClNpbmNlIG1lcmdpbmcgIzE4MDQ1IHdoaWNoIGludHJvZHVjZWQgc2l6ZSBwb29s cyBpbnNpZGUgdGhlIEdDIHRvIGFsbG9jYXRlIHZhcmlvdXMgc2l6ZWQgc2xvdHMsIHdlJ3ZlIGJl ZW4gd29ya2luZyBvbiBleHBhbmRpbmcgdGhlIHVzYWdlIG9mIFZXQSBpbnRvIG1vcmUgdHlwZXMg KGJlZm9yZSB0aGlzIHBhdGNoLCBvbmx5IGNsYXNzZXMgYXJlIGFsbG9jYXRlZCB0aHJvdWdoIFZX QSkuIFRoaXMgcGF0Y2ggY2hhbmdlcyBzdHJpbmdzIHRvIHVzZSBWV0EuCgojIyBTdW1tYXJ5Cgot IFRoaXMgcGF0Y2ggYWxsb2NhdGVzIHN0cmluZ3MgdXNpbmcgVldBLgotIFN0cmluZyBhbGxvY2F0 ZWQgdGhyb3VnaCBWV0EgYXJlIGVtYmVkZGVkLiBUaGUgcGF0Y2ggY2hhbmdlcyBzdHJpbmdzIHRv IHN1cHBvcnQgZHluYW1pYyBjYXBhY2l0eSBlbWJlZGRlZCBzdHJpbmdzLgotIFdlIGRvIG5vdCBo YW5kbGUgcmVzaXppbmcgaW4gVldBIGluIHRoaXMgcGF0Y2ggKGVtYmVkZGVkIHN0cmluZ3MgcmVz aXplZCB1cCBhcmUgbW92ZWQgYmFjayB0byBtYWxsb2MpLCB3aGljaCBtYXkgcmVzdWx0IGluIHdh c3RlZCBzcGFjZS4gSG93ZXZlciwgaW4gYmVuY2htYXJrcywgdGhpcyBkb2VzIG5vdCBhcHBlYXIg dG8gYmUgYW4gaXNzdWUuCi0gV2UgcHJvcG9zZSBlbmFibGluZyBWV0EgYnkgZGVmYXVsdC4gV2Ug YXJlIGNvbmZpZGVudCBhYm91dCB0aGUgc3RhYmlsaXR5IGFuZCBwZXJmb3JtYW5jZSBvZiB0aGlz IGZlYXR1cmUuCgojIyBTdHJpbmcgYWxsb2NhdGlvbgoKU3RyaW5ncyB3aXRoIGtub3duIHNpemVz IGF0IGFsbG9jYXRpb24gdGltZSB0aGF0IGFyZSBzbWFsbCBlbm91Z2ggaXMgYWxsb2NhdGVkIGFz IGFuIGVtYmVkZGVkIHN0cmluZy4gRW1iZWRkZWQgc3RyaW5nIGhlYWRlcnMgYXJlIG5vdyAxOCBi eXRlcywgc28gdGhlIG1heGltdW0gZW1iZWRkZWQgc3RyaW5nIGxlbmd0aCBpcyBub3cgMzAyIGJ5 dGVzIChjdXJyZW50bHkgVldBIGlzIGNvbmZpZ3VyZWQgdG8gYWxsb2NhdGUgdXAgdG8gMzIwIGJ5 dGUgc2xvdHMsIGJ1dCBjYW4gYmUgZWFzaWx5IGNvbmZpZ3VyZWQgZm9yIGV2ZW4gbGFyZ2VyIHNs b3RzKS4gRW1iZWRkZWQgc3RyaW5ncyBoYXZlIHRoZWlyIGNvbnRlbnRzIGRpcmVjdGx5IGZvbGxv dyB0aGUgb2JqZWN0IGhlYWRlcnMuIFRoaXMgYWltcyB0byBpbXByb3ZlIGNhY2hlIHBlcmZvcm1h bmNlIHNpbmNlIHRoZSBjb250ZW50cyBhcmUgb24gdGhlIHNhbWUgY2FjaGUgbGluZSBhcyB0aGUg b2JqZWN0IGhlYWRlcnMuIEZvciBzdHJpbmdzIHdpdGggdW5rbm93biBzaXplcywgb3Igd2l0aCBj b250ZW50cyB0aGF0IGFyZSB0b28gbGFyZ2UsIGl0IGZhbGxzIGJhY2sgdG8gYWxsb2NhdGUgNDAg Ynl0ZSBzbG90cyBhbmQgc3RvcmUgdGhlIGNvbnRlbnRzIGluIHRoZSBtYWxsb2MgaGVhcC4KCiMj IFN0cmluZyByZWFsbG9jYXRpb24KCklmIGFuIGVtYmVkZGVkIHN0cmluZyBpcyBleHBhbmRlZCBh bmQgY2FuIG5vIGxvbmdlciBmaWxsIHRoZSBzbG90LCBpdCBpcyBtb3ZlZCBpbnRvIHRoZSBtYWxs b2MgaGVhcC4gVGhpcyBtYXkgbWVhbiB0aGF0IHNvbWUgc3BhY2UgaW4gdGhlIHNsb3QgaXMgd2Fz dGVkLiBGb3IgZXhhbXBsZSwgaWYgdGhlIHN0cmluZyB3YXMgb3JpZ2luYWxseSBhbGxvY2F0ZWQg aW4gYSAxNjAgYnl0ZSBzbG90IGFuZCBtb3ZlZCB0byB0aGUgbWFsbG9jIGhlYXAsIDEyMCBieXRl cyBvZiB0aGUgc2xvdCBpcyB3YXN0ZWQgKHNpbmNlIHdlIG9ubHkgbmVlZCA0MCBieXRlcyBmb3Ig YSBzdHJpbmcgd2l0aCBjb250ZW50cyBvbiB0aGUgbWFsbG9jIGhlYXApLiBUaGlzIHBhdGNoIGRv ZXMgbm90IGFpbSB0byB0YWNrbGUgdGhpcyBpc3N1ZS4gTWVtb3J5IHVzYWdlIGFsc28gZG9lcyBu b3QgYXBwZWFyIHRvIGJlIGFuIGlzc3VlIGluIGFueSBvZiB0aGUgYmVuY2htYXJrcy4KCiMjIElu Y29tcGF0aWJpbGl0eSBvZiBWV0EgYW5kIG5vbi1WV0EgYnVpbHQgZ2VtcwoKR2VtcyB3aXRoIG5h dGl2ZSBleHRlbnNpb25zIGJ1aWx0IHdpdGggVldBIGFyZSBub3QgY29tcGF0aWJsZSB3aXRoIG5v bi1WV0EgYnVpbHQgZ2VtcyAoYW5kIHZpY2UgdmVyc2EpLiBXaGVuIHN3aXRjaGluZyBiZXR3ZWVu IFZXQSBhbmQgbm9uLVZXQSBydWJpZXMsIGdlbXMgbXVzdCBiZSByZWJ1aWx0LiBUaGlzIGlzIGJl Y2F1c2UgdGhlIGhlYWRlciBmaWxlIGByc3RyaW5nLmhgIGNoYW5nZXMgZGVwZW5kaW5nIG9uIHdo ZXRoZXIgYFVTRV9SVkFSR0NgIGlzIHNldCBvciBub3QgKHRoZSBpbnRlcm5hbCBzdHJpbmcgaW1w bGVtZW50YXRpb24gY2hhbmdlcyB3aXRoIFZXQSkuCgojIyBFbmFibGluZyBWV0EgYnkgZGVmYXVs dAoKSW4gdGhpcyBwYXRjaCwgd2UgcHJvcG9zZSBlbmFibGluZyBWV0EgYnkgZGVmYXVsdC4gV2Ug YmVsaWV2ZSB0aGF0IHRoZSBwZXJmb3JtYW5jZSBkYXRhIHN1cHBvcnRzIHRoaXMgKHNlZSB0aGUg W2JlbmNobWFyayByZXN1bHRzXSgjQmVuY2htYXJrLXJlc3VsdHMpIHNlY3Rpb24pLiBXZSdyZSBh bHNvIGNvbmZpZGVudCBhYm91dCBpdHMgc3RhYmlsaXR5LiBJdCBwYXNzZXNzIGFsbCB0ZXN0cyBv biBDSSBmb3IgdGhlIFNob3BpZnkgbW9ub2xpdGggYW5kIHdlJ3ZlIHJhbiB0aGlzIHZlcnNpb24g b2YgUnVieSBvbiBhIHNtYWxsIHBvcnRpb24gb2YgcHJvZHVjdGlvbiB0cmFmZmljIGluIGEgU2hv cGlmeSBzZXJ2aWNlIGZvciBhYm91dCBhIHdlZWsgKHdoZXJlIGl0IHNlcnZlZCBvdmVyIDUwMCBt aWxsaW9uIHJlcXVlc3RzKS4KCkFsdGhvdWdoIFZXQSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIHdl IHBsYW4gb24gc3VwcG9ydGluZyB0aGUgYFVTRV9SVkFSR0NgIGZsYWcgYXMgYW4gZXNjYXBlIGhh dGNoIHRvIGRpc2FibGUgVldBIHVudGlsIGF0IGxlYXN0IFJ1YnkgMy4xIGlzIHJlbGVhc2VkIChp LmUuIHdlIG1heSByZW1vdmUgaXQgc3RhcnRpbmcgMjAyMikuCgojIEJlbmNobWFyayBzZXR1cAoK QmVuY2htYXJraW5nIHdhcyBkb25lIG9uIGEgYmFyZS1tZXRhbCBVYnVudHUgbWFjaGluZSBvbiBB V1MuIEFsbCBiZW5jaG1hcmsgcmVzdWx0cyBhcmUgdXNpbmcgZ2xpYmMgYnkgZGVmYXVsdCwgZXhj ZXB0IHdoZW4gamVtYWxsb2MgaXMgZXhwbGljaXRseSBzcGVjaWZpZWQuCgpgYGAKJCB1bmFtZSAt YQpMaW51eCA1LjguMC0xMDM4LWF3cyAjNDB+MjAuMDQuMS1VYnVudHUgU01QIFRodSBKdW4gMTcg MTM6MjU6MjggVVRDIDIwMjEgeDg2XzY0IHg4Nl82NCB4ODZfNjQgR05VL0xpbnV4CmBgYAoKZ2xp YmMgdmVyc2lvbjoKCmBgYAokIGxkZCAtLXZlcnNpb24KbGRkIChVYnVudHUgR0xJQkMgMi4zMS0w dWJ1bnR1OS4yKSAyLjMxCkNvcHlyaWdodCAoQykgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWlu ZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8Kd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCldyaXR0ZW4gYnkg Um9sYW5kIE1jR3JhdGggYW5kIFVscmljaCBEcmVwcGVyLgpgYGAKCmplbWFsbG9jIHZlcnNpb246 CgpgYGAKJCBhcHQgbGlzdCAtLWluc3RhbGxlZCB8IGdyZXAgamVtYWxsb2MKCldBUk5JTkc6IGFw dCBkb2VzIG5vdCBoYXZlIGEgc3RhYmxlIENMSSBpbnRlcmZhY2UuIFVzZSB3aXRoIGNhdXRpb24g aW4gc2NyaXB0cy4KCmxpYmplbWFsbG9jLWRldi9mb2NhbCxub3cgNS4yLjEtMXVidW50dTEgYW1k NjQgW2luc3RhbGxlZF0KbGliamVtYWxsb2MyL2ZvY2FsLG5vdyA1LjIuMS0xdWJ1bnR1MSBhbWQ2 NCBbaW5zdGFsbGVkLGF1dG9tYXRpY10KYGBgCgpUbyBtZWFzdXJlIG1lbW9yeSB1c2FnZSBvdmVy IHRpbWUsIHRoZSBbbXN0YXQgdG9vbF0oaHR0cHM6Ly9naXRodWIuY29tL2Jwb3dlcnMvbXN0YXQp IHdhcyB1c2VkLgoKUnVieSBtYXN0ZXIgd2FzIGJlbmNobWFya2VkIG9uIGNvbW1pdCBbN2FkZmIx NGY2MF0oaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9jb21taXQvN2FkZmIxNGY2MCkuIFRo ZSBicmFuY2ggd2FzIHJlYmFzZWQgb24gdG9wIG9mIHRoZSBzYW1lIGNvbW1pdC4KClBlcmZvcm1h bmNlIGJlbmNobWFya3Mgb2YgdGhpcyBicmFuY2ggd2l0aG91dCBWV0EgdHVybmVkIG9uIGFyZSBp bmNsdWRlZCB0byBtYWtlIHN1cmUgdGhpcyBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYSBwZXJm b3JtYW5jZSByZWdyZXNzaW9uIGNvbXBhcmVkIHRvIG1hc3Rlci4KCiMgQmVuY2htYXJrIHJlc3Vs dHMKCiMjIFN1bW1hcnkKCi0gT24gYSBsaXZlLCBwcm9kdWN0aW9uIFNob3BpZnkgc2VydmljZSwg d2Ugc2VlIG5vIHNpZ25pZmljYW50IGRpZmZlcmVuY2VzIGluIHJlc3BvbnNlIHRpbWVzLiBIb3dl dmVyLCBWV0EgaGFzIGxvd2VyIG1lbW9yeSB1c2FnZS4KLSBPbiByYWlsc2JlbmNoLCB3ZSBzZWUg YSBtaW5vciBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudC4gSG93ZXZlciwgd2UgYWxzbyBzZWUgd29y c2UgcDEwMCByZXNwb25zZSB0aW1lcy4gVGhlIHJlYXNvbiBpcyBhbmFseXplZCBpbiB0aGUgW3Jh aWxzYmVuY2hdKCNyYWlsc2JlbmNoKSBzZWN0aW9uIGJlbG93LiBWV0EgdXNlcyBtb3JlIG1lbW9y eSB3aGVuIHVzaW5nIGdsaWJjLCBidXQgdXNlcyBhbiBlcXVhbCBhbW91bnQgb2YgbWVtb3J5IGZv ciBqZW1hbGxvYy4KLSBPbiByZG9jIGdlbmVyYXRpb24sIFZXQSB1c2VzIHNpZ25pZmljYW50bHkg bGVzcyBtZW1vcnkgZm9yIGEgc21hbGwgcmVkdWN0aW9uIGluIHBlcmZvcm1hbmNlLgotIE1pY3Jv YmVuY2htYXJrcyBzaG93IHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGZvciBz dHJpbmdzIHRoYXQgYXJlIGVtYmVkZGVkIGluIFZXQSAoZS5nLiBgU3RyaW5nIz09YCBpcyBzaWdu aWZpY2FudGx5IGZhc3RlcikuCgojIyBTaG9waWZ5IHByb2R1Y3Rpb24KCldlIGRlcGxveWVkIHRo aXMgYnJhbmNoIHdpdGggVldBIGVuYWJsZWQgdnMuIFJ1YnkgbWFzdGVyIGNvbW1pdCA3YWRmYjE0 ZjYwIG9uIGEgc21hbGwgcG9ydGlvbiBvZiBsaXZlLCBwcm9kdWN0aW9uIHRyYWZmaWMgZm9yIGEg U2hvcGlmeSB3ZWIgYXBwbGljYXRpb24gdG8gdGVzdCByZWFsLXdvcmxkIHBlcmZvcm1hbmNlLiBU aGlzIGRhdGEgd2FzIGNvbGxlY3RlZCBmb3IgYSBwZXJpb2Qgb2YgMSBkYXkgd2hlcmUgdGhleSBl YWNoIHNlcnZlZCBhcHByb3hpbWF0ZWx5IDg0IG1pbGxpb24gcmVxdWVzdHMuIEF2ZXJhZ2UsIG1l ZGlhbiwgcDkwLCBwOTkgcmVzcG9uc2UgdGltZXMgd2VyZSB3aXRoaW4gdGhlIG1hcmdpbiBvZiBl cnJvciBvZiBlYWNoIG90aGVyICg8MSUgZGlmZmVyZW5jZSkuIEhvd2V2ZXIsIFZXQSBjb25zaXN0 ZW50bHkgaGFkIGxvd2VyIG1lbW9yeSB1c2FnZSAoUmVzaWRlbnQgU2V0IFNpemUpIGJ5IDAuOTZ4 LgoKIyMgcmFpbHNiZW5jaAoKRm9yIHJhaWxzYmVuY2gsIHdlIHJhbiB0aGUgW3JhaWxzYmVuY2gg YmVuY2htYXJrXShodHRwczovL2dpdGh1Yi5jb20vazBrdWJ1bi9yYWlsc2JlbmNoL2Jsb2IvbWFz dGVyL2Jpbi9iZW5jaCkuIEZvciBib3RoIHRoZSBwZXJmb3JtYW5jZSBhbmQgbWVtb3J5IGJlbmNo bWFya3MsIDI1IHJ1bnMgd2VyZSBjb25kdWN0ZWQgZm9yIGVhY2ggY29tYmluYXRpb24gKGJyYW5j aCArIGdsaWJjLCBtYXN0ZXIgKyBnbGliYywgYnJhbmNoICsgamVtYWxsb2MsIG1hc3RlciArIGpl bWFsbG9jKS4KCkluIHRoaXMgYmVuY2htYXJrLCBWV0Egc3VmZmVycyBmcm9tIHBvb3IgcDEwMC4g VGhpcyBpcyBiZWNhdXNlIHJhaWxzYmVuY2ggaXMgcmVsYXRpdmVseSBzbWFsbCAob25seSBvbmUg Y29udHJvbGxlciBhbmQgbW9kZWwpLCBzbyB0aGVyZSBhcmUgbm90IG1hbnkgcGFnZXMgaW4gZWFj aCBzaXplIHBvb2xzLiBJbmNyZW1lbnRhbCBtYXJraW5nIHJlcXVpcmVzIHRoZXJlIHRvIGJlIG1h bnkgcG9vbGVkIHBhZ2VzLCBidXQgYmVjYXVzZSB0aGVyZSBhcmUgbm90IGEgbG90IG9mIHBvb2xl ZCBwYWdlcyAoZHVlIHRvIHRoZSBzbWFsbCBoZWFwIHNpemUpLCBpdCBoYXMgdG8gbWFyayBhIHZl cnkgbGFyZ2UgbnVtYmVyIG9mIG9iamVjdHMgYXQgZXZlcnkgc3RlcC4gV2UgZG8gbm90IGV4cGVj dCB0aGlzIHRvIGJlIGEgcHJvYmxlbSBmb3IgcmVhbCBhcHBzIHdpdGggYSBsYXJnZXIgbnVtYmVy IG9mIG9iamVjdHMgYWxsb2NhdGVkIGF0IGJvb3QsIGFuZCB0aGlzIGlzIGNvbmZpcm1lZCBieSBt ZXRyaWNzIGNvbGxlY3RlZCBpbiB0aGUgW1Nob3BpZnkgcHJvZHVjdGlvbiBhcHBsaWNhdGlvbl0o I1Nob3BpZnktcHJvZHVjdGlvbikuCgojIyMgZ2xpYmMKClVzaW5nIGdsaWJjLCBWV0EgaXMgYWJv dXQgMS4wMTh4IGZhc3RlciB0aGFuIG1hc3RlciBpbiByYWlsc2JlbmNoIGluIHRocm91Z2hwdXQg KFJQUykuCgpgYGAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSsKfCAgICAgICAgICAgfCBCcmFuY2ggKFZXQSBvbikgfCBCcmFuY2ggKFZX QSBvZmYpIHwgTWFzdGVyIHwKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSsKfCBSUFMgICAgICAgfCA3NDAuOTIgICAgICAgICAgfCA3MjIu OTcgICAgICAgICAgIHwgNzQ1LjMxIHwKfCBwNTAgKG1zKSAgfCAxLjMxICAgICAgICAgICAgfCAx LjM3ICAgICAgICAgICAgIHwgMS4zMyAgIHwKfCBwOTAgKG1zKSAgfCAxLjQwICAgICAgICAgICAg fCAxLjQ1ICAgICAgICAgICAgIHwgMS40MyAgIHwKfCBwOTkgKG1zKSAgfCAyLjM2ICAgICAgICAg ICAgfCAxLjgwICAgICAgICAgICAgIHwgMS43OCAgIHwKfCBwMTAwIChtcykgfCAyMS4zOCAgICAg ICAgICAgfCAxNy4yOCAgICAgICAgICAgIHwgMTUuMTUgIHwKKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSsKYGBgCgohW10oaHR0cHM6Ly9p LmltZ3VyLmNvbS85eUozZk81LnBuZykKCkF2ZXJhZ2UgbWF4IG1lbW9yeSB1c2FnZSBmb3IgVldB OiAxMDQuODIgTUIKCkF2ZXJhZ2UgbWF4IG1lbW9yeSB1c2FnZSBmb3IgbWFzdGVyOiAxMDEuMTcg TUIKClZXQSB1c2VzIDEuMDR4IG1vcmUgbWVtb3J5LgoKIyMjIGplbWFsbG9jCgpVc2luZyBnbGli YywgVldBIGlzIGFib3V0IDEuMDZ4IGZhc3RlciB0aGFuIG1hc3RlciBpbiByYWlsc2JlbmNoIGlu IFJQUy4KCmBgYAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKwp8ICAgICAgICAgICB8IEJyYW5jaCAoVldBIG9uKSB8IEJyYW5jaCAoVldB IG9mZikgfCBNYXN0ZXIgfAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKwp8IFJQUyAgICAgICB8IDc4MS4yMSAgICAgICAgICB8IDc0Mi4x MiAgICAgICAgICAgfCA3MzkuMDQgfAp8IHA1MCAobXMpICB8IDEuMjUgICAgICAgICAgICB8IDEu MzEgICAgICAgICAgICAgfCAxLjMwICAgfAp8IHA5MCAobXMpICB8IDEuMzIgICAgICAgICAgICB8 IDEuMzkgICAgICAgICAgICAgfCAxLjM4ICAgfAp8IHA5OSAobXMpICB8IDIuMTUgICAgICAgICAg ICB8IDIuNTMgICAgICAgICAgICAgfCA0LjQxICAgfAp8IHAxMDAgKG1zKSB8IDIxLjExICAgICAg ICAgICB8IDE2LjYwICAgICAgICAgICAgfCAxNS43NSAgfAorLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKwpgYGAKCiFbXShodHRwczovL2ku aW1ndXIuY29tL05sdGJxcTAucG5nKQoKQXZlcmFnZSBtYXggbWVtb3J5IHVzYWdlIGZvciBWV0E6 IDEwMi42OCBNQgoKQXZlcmFnZSBtYXggbWVtb3J5IHVzYWdlIGZvciBtYXN0ZXI6IDEwMy4xNCBN QgoKVldBIHVzZXMgMS4wMHggbGVzcyBtZW1vcnkuCgojIyByZG9jIGdlbmVyYXRpb24KCkluIHJk b2MgZ2VuZXJhdGlvbiwgd2Ugc2VlIHNpZ25pZmljYW50IG1lbW9yeSB1c2FnZSByZWR1Y3Rpb24g YXQgdGhlIGNvc3Qgb2Ygc21hbGwgcGVyZm9ybWFuY2UgcmVkdWN0aW9uLgoKIyMjIGdsaWJjCgpg YGAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tKwp8ICAgICAgICAgICB8IEJyYW5jaCAoVldBIG9uKSB8IEJyYW5j aCAoVldBIG9mZikgfCBNYXN0ZXIgfCBWV0Egc3BlZWR1cCB8CistLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSsKfCBU aW1lIChzKSAgfCAxNi42OCAgICAgICAgICAgfCAxNi4wOCAgICAgICAgICAgIHwgMTUuODcgIHwg MC45NXggICAgICAgfAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCmBgYAoKIVtdKGh0dHBzOi8vaS5pbWd1ci5j b20vSEpDdG93Uy5wbmcpCgpBdmVyYWdlIG1heCBtZW1vcnkgdXNhZ2UgZm9yIFZXQTogMjk1LjE5 IE1CCgpBdmVyYWdlIG1heCBtZW1vcnkgdXNhZ2UgZm9yIG1hc3RlcjogMzY1LjA2IE1CCgpWV0Eg dXNlcyAwLjgxeCBsZXNzIG1lbW9yeS4KCiMjIyBqZW1hbGxvYwoKYGBgCistLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSsKfCAgICAgICAgICAgfCBCcmFuY2ggKFZXQSBvbikgfCBCcmFuY2ggKFZXQSBvZmYpIHwgTWFz dGVyIHwgVldBIHNwZWVkdXAgfAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCnwgVGltZSAocykgIHwgMTYuMzQg ICAgICAgICAgIHwgMTUuNjQgICAgICAgICAgICB8IDE1LjUxICB8IDAuOTV4ICAgICAgfAorLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rCmBgYAoKIVtdKGh0dHBzOi8vaS5pbWd1ci5jb20vbHJkVXhYdy5wbmcpCgpB dmVyYWdlIG1heCBtZW1vcnkgdXNhZ2UgZm9yIFZXQTogMjgxLjE2IE1CCgpBdmVyYWdlIG1heCBt ZW1vcnkgdXNhZ2UgZm9yIG1hc3RlcjogMzE2LjQ5IE1CCgpWV0EgdXNlcyAwLjg5eCBsZXNzIG1l bW9yeS4KCiMjIExpcXVpZCBiZW5jaG1hcmtzCgpGb3IgdGhlIGxpcXVpZCBiZW5jaG1hcmtzLCB3 ZSByYW4gdGhlIFtsaXF1aWQgYmVuY2htYXJrXShodHRwczovL2dpdGh1Yi5jb20vU2hvcGlmeS9s aXF1aWQvYmxvYi9tYXN0ZXIvcGVyZm9ybWFuY2UvYmVuY2htYXJrLnJiKSBhdmVyYWdlZCBvdmVy IDUgcnVucyBlYWNoLiBXZSBzZWUgdGhhdCBWV0EgaXMgZmFzdGVyIGFjcm9zcyB0aGUgYm9hcmQu CgpgYGAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCnwgICAgICAgICAgICAgICAgICAgICAg fCBCcmFuY2ggKFZXQSBvbikgfCBCcmFuY2ggKFZXQSBvZmYpIHwgTWFzdGVyIHwgVldBIHNwZWVk dXAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSsKfCBQYXJzZSAoaS9zKSAgICAgICAgICB8 IDQwLjQwICAgICAgICAgICB8IDM4LjQ0ICAgICAgICAgICAgfCAzOS40NyAgfCAxLjAyeCAgICAg IHwKfCBSZW5kZXIgKGkvcykgICAgICAgICB8IDEyNi40NyAgICAgICAgICB8IDEyMS45NyAgICAg ICAgICAgfCAxMjEuMjAgfCAxLjA0eCAgICAgIHwKfCBQYXJzZSAmIFJlbmRlciAoaS9zKSB8IDI4 LjgxICAgICAgICAgICB8IDI3LjUyICAgICAgICAgICAgfCAyOC4wMiAgfCAxLjAzeCAgICAgIHwK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCmBgYAoKIyMgTWljcm9iZW5jaG1hcmtzCgpUaGVz ZSBtaWNyb2JlbmNobWFya3MgYXJlIHZlcnkgZmF2b3VyYWJsZSBmb3IgVldBIHNpbmNlIHRoZSBz dHJpbmdzIGNyZWF0ZWQgaGF2ZSBhIGxlbmd0aCBvZiA3MSwgc28gdGhleSBhcmUgZW1iZWRkZWQg aW4gVldBIGFuZCBhbGxvY2F0ZWQgb24gdGhlIG1hbGxvYyBoZWFwIGZvciBtYXN0ZXIuCgpgYGAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCnwgICAgICAgICAgICAgICAgICAgIHwgQnJhbmNo IChWV0Egb24pIHwgQnJhbmNoIChWV0Egb2ZmKSB8IE1hc3RlciAgfCBWV0Egc3BlZWR1cCB8Cist LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCnwgU3RyaW5nIz09IChpL3MpICAgIHwgMS44MDZrICAg ICAgICAgIHwgMS4zMzRrICAgICAgICAgICB8IDEuMzM3ayAgfCAxLjM1eCAgICAgICB8CnwgU3Ry aW5nI3RpbWVzIChpL3MpIHwgNi4wMTBNICAgICAgICAgIHwgNS4yMzhNICAgICAgICAgICB8IDUu MjQ3TSAgfCAxLjE1eCAgICAgICB8CnwgU3RyaW5nI1tdPSAoaS9zKSAgIHwgMS4wMzFrICAgICAg ICAgIHwgODYzLjgxNiAgICAgICAgICB8IDg5Ny45MTUgfCAxLjE1eCAgICAgICB8CistLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rCmBgYAoKe3tjb2xsYXBzZShCZW5jaG1hcmsgc291cmNlIGNvZGUp CgpgYGBydWJ5CnJlcXVpcmUgImJ1bmRsZXIvaW5saW5lIgpnZW1maWxlIGRvCiAgc291cmNlICJo dHRwczovL3J1YnlnZW1zLm9yZyIKICBnZW0gImJlbmNobWFyay1pcHMiCmVuZAoKQ09VTlQgPSAx MF8wMDAKCnN0cnMxID0gW10Kc3RyczIgPSBbXQoKbmluZSA9ICI5IgoKQ09VTlQudGltZXMgZG8K ICBzdHJzMSA8PCBbKiJBIi4uIloiLCAqIjAiLi4iOSJdLmpvaW4oIiAiKQogIHN0cnMyIDw8IFsq IkEiLi4iWiIsICoiMCIuLiI5Il0uam9pbigiICIpCmVuZAoKQmVuY2htYXJrLmlwcyBkbyB8eHwK ICB4LnJlcG9ydCgiU3RyaW5nIz09IikgZG8gfHRpbWVzfAogICAgaSA9IDAKICAgIHdoaWxlIGkg PCB0aW1lcwogICAgICBDT1VOVC50aW1lcyB7IHxpfCBzdHJzMVtpXSA9PSBzdHJzMltpXSB9CiAg ICAgIGkgKz0gMQogICAgZW5kCiAgZW5kCgogIHgucmVwb3J0KCJTdHJpbmcjdGltZXMiKSBkbyB8 dGltZXN8CiAgICBpID0gMAogICAgd2hpbGUgaSA8IHRpbWVzCiAgICAgICJhIiAqIDEwMAogICAg ICBpICs9IDEKICAgIGVuZAogIGVuZAoKICB4LnJlcG9ydCgiU3RyaW5nI1tdPSIpIGRvIHx0aW1l c3wKICAgIGkgPSAwCiAgICB3aGlsZSBpIDwgdGltZXMKICAgICAgc3RyczEuZWFjaCB7IHxzdHJ8 IHN0clstMV0gPSBuaW5lIH0KICAgICAgaSArPSAxCiAgICBlbmQKICBlbmQKZW5kCmBgYAp9fQoK CgotLSAKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvCg==