From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on starla X-Spam-Level: X-Spam-Status: No, score=0.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_BL_SPAMCOP_NET,SPF_HELO_PASS, SPF_PASS autolearn=no autolearn_force=no version=3.4.6 Received: from nue.mailmanlists.eu (nue.mailmanlists.eu [IPv6:2a01:4f8:1c0c:6b10::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 4F5001F44D for ; Fri, 12 Apr 2024 21:07:48 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=pass (1024-bit key; secure) header.d=ml.ruby-lang.org header.i=@ml.ruby-lang.org header.a=rsa-sha256 header.s=mail header.b=Bviwm68m; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.a=rsa-sha256 header.s=s1 header.b=crWJlbzk; dkim-atps=neutral Received: from nue.mailmanlists.eu (localhost [127.0.0.1]) by nue.mailmanlists.eu (Postfix) with ESMTP id 7584F8428F; Fri, 12 Apr 2024 21:07:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ml.ruby-lang.org; s=mail; t=1712956054; bh=pmVPbpdXXqA4e2oyz7OFzMD8zGaD8eKL2ZrBYsHouaY=; h=Date:References:To:Reply-To:Subject:List-Id:List-Archive: List-Help:List-Owner:List-Post:List-Subscribe:List-Unsubscribe: From:Cc:From; b=Bviwm68mU9qPZQoi3iwLA8nEa130xJyKdbfJ5sEtCCylYP9cgeHX2OlnKO5QHz3ke 4EdrK3DqTMePl6Qros7u+5dU2SowfvkPgGywqf25ETRUp6dHTUBxqtpyweoyU+EQ+i CyyfSUuqZfk6cODky8AIqOZtjWEUBNJheLRn1rMA= Received: from s.wrqvwxzv.outbound-mail.sendgrid.net (s.wrqvwxzv.outbound-mail.sendgrid.net [149.72.154.232]) by nue.mailmanlists.eu (Postfix) with ESMTPS id F187384274 for ; Fri, 12 Apr 2024 21:07:29 +0000 (UTC) Authentication-Results: nue.mailmanlists.eu; dkim=pass (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.a=rsa-sha256 header.s=s1 header.b=crWJlbzk; dkim-atps=neutral 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:content-type:from:subject:to; s=s1; bh=Q8NHl5VbdXhue5E0vj28Kj+7DeC+T6s4gzNYt2zSguw=; b=crWJlbzkjISv4KJ+WJM1ZsAzKg6zMTEB/84aB3R8IV+uJk1b2Xvu16KNdZw3xK6yxoQa dfih78TcmDKWhJcvSYM1rcqwEQS/cIg8szmcFQzILf5R8oB9eWTDHEo/M/aCjCiHMaQaen SvL3jD6mJl1H53Tv8oB5eQfqbvqRkw/91/30MZnMcoiruxsNUCa/IWl0N4wCnZ80X2c21F 9p16nt3FucMAXbccOZ0PmolEU69kUcQiBKW7REUkwOuYKb8AUOXYC2k9/YSJ7sE9mebsdL bpCQF9Z0Xb5xobt1AFWGnsjcEkNVU6yp74BF/O06ymgHD6JI0FdipQlrzlO4xsjA== Received: by recvd-6fc499775c-7q2th with SMTP id recvd-6fc499775c-7q2th-1-6619A28C-1 2024-04-12 21:07:23.999468178 +0000 UTC m=+2160500.633947488 Received: from herokuapp.com (unknown) by geopod-ismtpd-25 (SG) with ESMTP id oDkSL4PLROK4OkJGvKpubg for ; Fri, 12 Apr 2024 21:07:23.942 +0000 (UTC) Date: Fri, 12 Apr 2024 21:07:24 +0000 (UTC) Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 20425 X-Redmine-Issue-Author: tenderlovemaking X-Redmine-Issue-Priority: Normal X-Redmine-Sender: tenderlovemaking 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: 94102 X-SG-EID: =?us-ascii?Q?u001=2ElWMe69GVkz6xHw8adpMU6eTKSGZqJ7+E1FrjckpA7cvWAPDyDX2cAv9Do?= =?us-ascii?Q?wZtGRg2vsYQLU1U4jx+ljWd9jTs=2FpZn02mllaZG?= =?us-ascii?Q?4g2CkB4nYTCkUdVuxzEoRBLyfK1e=2FEi6GwDN88Y?= =?us-ascii?Q?FbcP7UKXHCZTv7T1awNK1Jcn3e+qOinFfeNfEZI?= =?us-ascii?Q?70mJGb+VoSZAEzqCy7LIz8Cs6=2FMnrPKvxn+ZE4r?= =?us-ascii?Q?SejplaJ6KhAABDj3OEDg6pXSX4Dygka=2FsuNzUjt?= =?us-ascii?Q?rXJi9Ib9rFONRbr5V=2F9LWAjeqA=3D=3D?= To: ruby-core@ml.ruby-lang.org X-Entity-ID: u001.I8uzylDtAfgbeCOeLBYDww== Message-ID-Hash: 3O5RJ4T77CTSXU75QF52PWJ4EQMAUDZG X-Message-ID-Hash: 3O5RJ4T77CTSXU75QF52PWJ4EQMAUDZG X-MailFrom: bounces+313651-b711-ruby-core=ml.ruby-lang.org@em5188.ruby-lang.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.3 Precedence: list Reply-To: Ruby developers Subject: [ruby-core:117507] [Ruby master Feature#20425] Optimize forwarding callers and callees List-Id: Ruby developers Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: "tenderlovemaking (Aaron Patterson) via ruby-core" Cc: "tenderlovemaking (Aaron Patterson)" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SXNzdWUgIzIwNDI1IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGVuZGVybG92ZW1ha2luZyAoQWFyb24g UGF0dGVyc29uKS4NCg0KDQp0ZW5kZXJsb3ZlbWFraW5nIChBYXJvbiBQYXR0ZXJzb24pIHdyb3Rl IGluICNub3RlLTQ6DQo+IGtvMSAoS29pY2hpIFNhc2FkYSkgd3JvdGUgaW4gI25vdGUtMjoNCj4g PiBJIHRoaW5rIGl0IGlzIGdvb2QgaWRlYSBidXQgSSdtIGNvbmNlcm5lZCB0aGF0IHRoZSBjb2Rl IG9uIGdpdGh1YiBtYXkgYWZmZWN0IG5vcm1hbCBjYXNlcyBiZWNhdXNlIG9mIGFkZGl0aW9uYWwg Y29kZSBwYXRoLg0KPiANCj4gSXQgb25seSBpbXBhY3RzIHRoZSBgc2VuZGAgaW5zdHJ1Y3Rpb24g YW5kIGBpbnZva2VzdXBlcmAgaW5zdHJ1Y3Rpb24uICBJZiB0aGVyZSBpcyBhIHNwZWVkIGltcGFj dCwgSSB0aGluayB3ZSBjb3VsZCBlbWl0ICJmb3J3YXJkaW5nX3NlbmQiIG9yICJmb3J3YXJkaW5n X3N1cGVyIiBpbnN0cnVjdGlvbnMgYW5kIGVsaW1pbmF0ZSB0aGUgY29kZSBwYXRoLiAgQWxzbywg YXMgeW91IG5vdGVkIG9uIHRoZSBQUiBtb3N0IGlzZXFzIGFyZSAic2ltcGxlIiBhbmQgd2UgYWxy ZWFkeSBoYXZlIHRvIGNoZWNrIHRoYXQuICBGb3J3YXJkYWJsZSBpc2VxcyBhcmUganVzdCBub3Qg Y29uc2lkZXJlZCAic2ltcGxlIiDwn5iGDQoNCkkgdHJpZWQgcnVubmluZyBgdm1fY2FsbGAgYmVu Y2htYXJrcy4gIEkgY2FuJ3QgdGVsbCBpZiB0aGVyZSBpcyBhbnkgaW1wYWN0LiBCZW5jaG1hcmsg cmVzdWx0cyBhcmUgW2hlcmVdKGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL3RlbmRlcmxvdmUvZTQy Njc0NzczMzAwZTQwZDY4Yzc2NDg3NjUwOGFkOTMpDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCkZlYXR1cmUgIzIwNDI1OiBPcHRpbWl6ZSBmb3J3YXJkaW5nIGNh bGxlcnMgYW5kIGNhbGxlZXMNCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8yMDQy NSNjaGFuZ2UtMTA3ODk0DQoNCiogQXV0aG9yOiB0ZW5kZXJsb3ZlbWFraW5nIChBYXJvbiBQYXR0 ZXJzb24pDQoqIFN0YXR1czogT3Blbg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KW1RoaXMgUFJdKGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC8xMDUx MCkgb3B0aW1pemVzIGZvcndhcmRpbmcgY2FsbGVycyBhbmQgY2FsbGVlcy4gSXQgb25seSBvcHRp bWl6ZXMgbWV0aG9kcyB0aGF0IG9ubHkgdGFrZSBgLi4uYCBhcyB0aGVpciBwYXJhbWV0ZXIsIGFu ZCB0aGVuIHBhc3MgYC4uLmAgdG8gb3RoZXIgY2FsbHMuDQoNCkNhbGxzIGl0IG9wdGltaXplcyBs b29rIGxpa2UgdGhpczoNCg0KYGBgcnVieQ0KZGVmIGJhcihhKSA9IGENCmRlZiBmb28oLi4uKSA9 IGJhciguLi4pICMgb3B0aW1pemVkDQpmb28oMTIzKQ0KYGBgDQoNCmBgYHJ1YnkNCmRlZiBiYXIo YSkgPSBhDQpkZWYgZm9vKC4uLikgPSBiYXIoMSwgMiwgLi4uKSAjIG9wdGltaXplZA0KZm9vKDEy MykNCmBgYA0KDQpgYGBydWJ5DQpkZWYgYmFyKCphKSA9IGENCg0KZGVmIGZvbyguLi4pDQogIGxp c3QgPSBbMSwgMl0NCiAgYmFyKCpsaXN0LCAuLi4pICMgb3B0aW1pemVkDQplbmQNCmZvbygxMjMp DQpgYGANCg0KQWxsIHZhcmlhbnRzIG9mIHRoZSBhYm92ZSBidXQgdXNpbmcgYHN1cGVyYCBhcmUg YWxzbyBvcHRpbWl6ZWQsIGluY2x1ZGluZyBhIGJhcmUgc3VwZXIgbGlrZSB0aGlzOg0KDQpgYGBy dWJ5DQpkZWYgZm9vKC4uLikNCiAgc3VwZXINCmVuZA0KYGBgDQoNClRoaXMgcGF0Y2ggZWxpbWlu YXRlcyBpbnRlcm1lZGlhdGUgYWxsb2NhdGlvbnMgbWFkZSB3aGVuIGNhbGxpbmcgbWV0aG9kcyB0 aGF0IGFjY2VwdCBgLi4uYC4NCldlIGNhbiBvYnNlcnZlIGFsbG9jYXRpb24gZWxpbWluYXRpb24g bGlrZSB0aGlzOg0KDQpgYGBydWJ5DQpkZWYgbQ0KICB4ID0gR0Muc3RhdCg6dG90YWxfYWxsb2Nh dGVkX29iamVjdHMpDQogIHlpZWxkDQogIEdDLnN0YXQoOnRvdGFsX2FsbG9jYXRlZF9vYmplY3Rz KSAtIHgNCmVuZA0KDQpkZWYgYmFyKGEpID0gYQ0KZGVmIGZvbyguLi4pID0gYmFyKC4uLikNCg0K ZGVmIHRlc3QNCiAgbSB7IGZvbygxMjMpIH0NCmVuZA0KDQp0ZXN0DQpwIHRlc3QgIyBhbGxvY2F0 ZXMgMSBvYmplY3Qgb24gbWFzdGVyLCBidXQgMCBvYmplY3RzIHdpdGggdGhpcyBwYXRjaA0KYGBg DQoNCmBgYHJ1YnkNCmRlZiBiYXIoYSwgYjopID0gYSArIGINCmRlZiBmb28oLi4uKSA9IGJhcigu Li4pDQoNCmRlZiB0ZXN0DQogIG0geyBmb28oMSwgYjogMikgfQ0KZW5kDQoNCnRlc3QNCnAgdGVz dCAjIGFsbG9jYXRlcyAyIG9iamVjdHMgb24gbWFzdGVyLCBidXQgMCBvYmplY3RzIHdpdGggdGhp cyBwYXRjaA0KYGBgDQoNCiMjIEhvdyBkb2VzIGl0IHdvcms/DQoNClRoaXMgcGF0Y2ggd29ya3Mg YnkgdXNpbmcgYSBkeW5hbWljIHN0YWNrIHNpemUgd2hlbiBwYXNzaW5nIGZvcndhcmRlZCBwYXJh bWV0ZXJzIHRvIGNhbGxlZXMuDQpUaGUgY2FsbGVyJ3MgaW5mbyBvYmplY3QgKGtub3duIGFzIHRo ZSAiQ0kiKSBjb250YWlucyB0aGUgc3RhY2sgc2l6ZSBvZiB0aGUNCnBhcmFtZXRlcnMsIHNvIHdl IHBhc3MgdGhlIENJIG9iamVjdCBpdHNlbGYgYXMgYSBwYXJhbWV0ZXIgdG8gdGhlIGNhbGxlZS4N CldoZW4gZm9yd2FyZGluZyBwYXJhbWV0ZXJzLCB0aGUgZm9yd2FyZGluZyBJU2VxIHVzZXMgdGhl IGNhbGxlcidzIENJIHRvIGRldGVybWluZSBob3cgbXVjaCBzdGFjayB0byBjb3B5LCB0aGVuIGNv cGllcyB0aGUgY2FsbGVyJ3Mgc3RhY2sgYmVmb3JlIGNhbGxpbmcgdGhlIGNhbGxlZS4NClRoZSBD SSBhdCB0aGUgZm9yd2FyZGVkIGNhbGwgc2l0ZSBpcyBhZGp1c3RlZCB1c2luZyBpbmZvcm1hdGlv biBmcm9tIHRoZSBjYWxsZXIncyBDSS4NCg0KSSB0aGluayB0aGlzIGRlc2NyaXB0aW9uIGlzIGtp bmQgb2YgY29uZnVzaW5nLCBzbyBsZXQncyB3YWxrIHRocm91Z2ggYW4gZXhhbXBsZSB3aXRoIGNv ZGUuDQoNCmBgYHJ1YnkNCmRlZiBkZWxlZ2F0ZWUoYSwgYikgPSBhICsgYg0KDQpkZWYgZGVsZWdh dG9yKC4uLikNCiAgZGVsZWdhdGVlKC4uLikgICMgQ0kyIChGT1JXQVJESU5HKQ0KZW5kDQoNCmRl ZiBjYWxsZXINCiAgZGVsZWdhdG9yKDEsIDIpICMgQ0kxIChhcmdjOiAyKQ0KZW5kDQpgYGANCg0K QmVmb3JlIHdlIGNhbGwgdGhlIGRlbGVnYXRvciBtZXRob2QsIHRoZSBzdGFjayBsb29rcyBsaWtl IHRoaXM6DQoNCmBgYA0KRXhlY3V0aW5nIExpbmUgfCBDb2RlICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgU3RhY2sNCi0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0NCiAgICAgICAgICAgICAgMXwgZGVmIGRlbGVn YXRlZShhLCBiKSA9IGEgKyBiICAgICAgICAgICB8IHNlbGYNCiAgICAgICAgICAgICAgMnwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDENCiAgICAgICAgICAgICAgM3wg ZGVmIGRlbGVnYXRvciguLi4pICAgICAgICAgICAgICAgICAgICB8IDINCiAgICAgICAgICAgICAg NHwgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQogICAgICAgICAgICAg IDV8ICAgZGVsZWdhdGVlKC4uLikgICMgQ0kyIChGT1JXQVJESU5HKSAgfA0KICAgICAgICAgICAg ICA2fCBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgICAgICAgICAg ICAgN3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQogICAgICAgICAg ICAgIDh8IGRlZiBjYWxsZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KICAgICAgICAg IC0+ICA5fCAgIGRlbGVnYXRvcigxLCAyKSAjIENJMSAoYXJnYzogMikgICAgIHwNCiAgICAgICAg ICAgICAxMHwgZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQpgYGANCg0K VGhlIElTZXEgZm9yIGBkZWxlZ2F0b3JgIGlzIHRhZ2dlZCBhcyAiZm9yd2FyZGFibGUiLCBzbyB3 aGVuIGBjYWxsZXJgIGNhbGxzIGluDQp0byBgZGVsZWdhdG9yYCwgaXQgd3JpdGVzIGBDSTFgIG9u IHRvIHRoZSBzdGFjayBhcyBhIGxvY2FsIHZhcmlhYmxlIGZvciB0aGUNCmBkZWxlZ2F0b3JgIG1l dGhvZC4gIFRoZSBgZGVsZWdhdG9yYCBtZXRob2QgaGFzIGEgc3BlY2lhbCBsb2NhbCBjYWxsZWQg YC4uLmANCnRoYXQgaG9sZHMgdGhlIGNhbGxlcidzIENJIG9iamVjdC4NCg0KSGVyZSBpcyB0aGUg SVNlcSBkaXNhc20gZm8gYGRlbGVnYXRvcmA6DQoNCmBgYA0KPT0gZGlzYXNtOiAjPElTZXE6ZGVs ZWdhdG9yQC1lOjEgKDEsMCktKDEsMzkpPg0KbG9jYWwgdGFibGUgKHNpemU6IDEsIGFyZ2M6IDAg W29wdHM6IDAsIHJlc3Q6IC0xLCBwb3N0OiAwLCBibG9jazogLTEsIGt3OiAtMUAtMSwga3dyZXN0 OiAtMV0pDQpbIDFdICIuLi4iQDANCjAwMDAgcHV0c2VsZiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICAgMSlbTGlDYV0NCjAwMDEgZ2V0 bG9jYWxfV0NfMCAgICAgICAgICAgICAgICAgICAgICAgICAgIi4uLiJAMA0KMDAwMyBzZW5kICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2FsbGRhdGEhbWlkOmRlbGVnYXRlZSwg YXJnYzowLCBGQ0FMTHxGT1JXQVJESU5HPiwgbmlsDQowMDA2IGxlYXZlICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFtSZV0NCmBgYA0KDQpUaGUgbG9jYWwgY2FsbGVkIGAuLi5gIHdp bGwgY29udGFpbiB0aGUgY2FsbGVyJ3MgQ0k6IENJMS4NCg0KSGVyZSBpcyB0aGUgc3RhY2sgd2hl biB3ZSBlbnRlciBgZGVsZWdhdG9yYDoNCg0KDQpgYGANCkV4ZWN1dGluZyBMaW5lIHwgQ29kZSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN0YWNrDQotLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tDQogICAgICAg ICAgICAgIDF8IGRlZiBkZWxlZ2F0ZWUoYSwgYikgPSBhICsgYiAgICAgICAgICAgfCBzZWxmDQog ICAgICAgICAgICAgIDJ8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAx DQogICAgICAgICAgICAgIDN8IGRlZiBkZWxlZ2F0b3IoLi4uKSAgICAgICAgICAgICAgICAgICAg fCAyDQogICAgICAgICAgIC0+IDR8ICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBDSTEgKGFyZ2M6IDIpDQogICAgICAgICAgICAgIDV8ICAgZGVsZWdhdGVlKC4uLikgICMg Q0kyIChGT1JXQVJESU5HKSAgfCBjcmVmX29yX21lDQogICAgICAgICAgICAgIDZ8IGVuZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzcGVjdmFsDQogICAgICAgICAgICAgIDd8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0eXBlDQogICAgICAgICAg ICAgIDh8IGRlZiBjYWxsZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KICAgICAgICAg ICAgICA5fCAgIGRlbGVnYXRvcigxLCAyKSAjIENJMSAoYXJnYzogMikgICAgIHwNCiAgICAgICAg ICAgICAxMHwgZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQpgYGANCg0K VGhlIENJIGF0IGBkZWxlZ2F0ZWVgIG9uIGxpbmUgNSBpcyB0YWdnZWQgYXMgIkZPUldBUkRJTkci LCBzbyBpdCBrbm93cyB0bw0KbWVtY29weSB0aGUgY2FsbGVyJ3Mgc3RhY2sgYmVmb3JlIGNhbGxp bmcgYGRlbGVnYXRlZWAuICBJbiB0aGlzIGNhc2UsIGl0IHdpbGwNCm1lbWNvcHkgc2VsZiwgMSwg YW5kIDIgdG8gdGhlIHN0YWNrIGJlZm9yZSBjYWxsaW5nIGBkZWxlZ2F0ZWVgLiAgSXQga25vd3Mg aG93IG11Y2gNCm1lbW9yeSB0byBjb3B5IGZyb20gdGhlIGNhbGxlciBiZWNhdXNlIGBDSTFgIGNv bnRhaW5zIHN0YWNrIHNpemUgaW5mb3JtYXRpb24NCihhcmdjOiAyKS4NCg0KQmVmb3JlIGV4ZWN1 dGluZyB0aGUgYHNlbmRgIGluc3RydWN0aW9uLCB3ZSBwdXNoIGAuLi5gIG9uIHRoZSBzdGFjay4g IFRoZQ0KYHNlbmRgIGluc3RydWN0aW9uIHBvcHMgYC4uLmAsIGFuZCBiZWNhdXNlIGl0IGlzIHRh Z2dlZCB3aXRoIGBGT1JXQVJESU5HYCwgaXQNCmtub3dzIHRvIG1lbWNvcHkgKHVzaW5nIHRoZSBp bmZvcm1hdGlvbiBpbiB0aGUgQ0kgaXQganVzdCBwb3BwZWQpOg0KDQpgYGANCj09IGRpc2FzbTog IzxJU2VxOmRlbGVnYXRvckAtZToxICgxLDApLSgxLDM5KT4NCmxvY2FsIHRhYmxlIChzaXplOiAx LCBhcmdjOiAwIFtvcHRzOiAwLCByZXN0OiAtMSwgcG9zdDogMCwgYmxvY2s6IC0xLCBrdzogLTFA LTEsIGt3cmVzdDogLTFdKQ0KWyAxXSAiLi4uIkAwDQowMDAwIHB1dHNlbGYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAgIDEpW0xpQ2Fd DQowMDAxIGdldGxvY2FsX1dDXzAgICAgICAgICAgICAgICAgICAgICAgICAgICIuLi4iQDANCjAw MDMgc2VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNhbGxkYXRhIW1pZDpk ZWxlZ2F0ZWUsIGFyZ2M6MCwgRkNBTEx8Rk9SV0FSRElORz4sIG5pbA0KMDAwNiBsZWF2ZSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUmVdDQpgYGANCg0KSW5zdHJ1Y3Rpb24gMDAx IHB1dHMgdGhlIGNhbGxlcidzIENJIG9uIHRoZSBzdGFjay4gIGBzZW5kYCBpcyB0YWdnZWQgd2l0 aA0KRk9SV0FSRElORywgc28gaXQgcmVhZHMgdGhlIENJIGFuZCBfY29waWVzXyB0aGUgY2FsbGVy cyBzdGFjayB0byB0aGlzIHN0YWNrOg0KDQpgYGANCkV4ZWN1dGluZyBMaW5lIHwgQ29kZSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN0YWNrDQotLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tDQogICAgICAgICAg ICAgIDF8IGRlZiBkZWxlZ2F0ZWUoYSwgYikgPSBhICsgYiAgICAgICAgICAgfCBzZWxmDQogICAg ICAgICAgICAgIDJ8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxDQog ICAgICAgICAgICAgIDN8IGRlZiBkZWxlZ2F0b3IoLi4uKSAgICAgICAgICAgICAgICAgICAgfCAy DQogICAgICAgICAgICAgIDR8ICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBDSTEgKGFyZ2M6IDIpDQogICAgICAgICAgIC0+IDV8ICAgZGVsZWdhdGVlKC4uLikgICMgQ0ky IChGT1JXQVJESU5HKSAgfCBjcmVmX29yX21lDQogICAgICAgICAgICAgIDZ8IGVuZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzcGVjdmFsDQogICAgICAgICAgICAgIDd8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0eXBlDQogICAgICAgICAgICAg IDh8IGRlZiBjYWxsZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWxmDQogICAgICAg ICAgICAgIDl8ICAgZGVsZWdhdG9yKDEsIDIpICMgQ0kxIChhcmdjOiAyKSAgICAgfCAxDQogICAg ICAgICAgICAgMTB8IGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyDQpg YGANCg0KVGhlICJGT1JXQVJESU5HIiBjYWxsIHNpdGUgY29tYmluZXMgaW5mb3JtYXRpb24gZnJv bSBDSTEgd2l0aCBDSTIgaW4gb3JkZXINCnRvIHN1cHBvcnQgcGFzc2luZyBvdGhlciB2YWx1ZXMg aW4gYWRkaXRpb24gdG8gdGhlIGAuLi5gIHZhbHVlLCBhcyB3ZWxsIGFzDQpwZXJmZWN0bHkgZm9y d2FyZCBzcGxhdCBhcmdzLCBrd2FyZ3MsIGV0Yy4NCg0KU2luY2Ugd2UncmUgYWJsZSB0byBjb3B5 IHRoZSBzdGFjayBmcm9tIGBjYWxsZXJgIGluIHRvIGBkZWxlZ2F0b3JgJ3Mgc3RhY2ssIHdlDQpj YW4gYXZvaWQgYWxsb2NhdGluZyBvYmplY3RzLg0KDQojIyBXaHk/DQoNCkkgd2FudCB0byBkbyB0 aGlzIHRvIGVsaW1pbmF0ZSBvYmplY3QgYWxsb2NhdGlvbnMgZm9yIGRlbGVnYXRlIG1ldGhvZHMu DQpNeSBsb25nIHRlcm0gZ29hbCBpcyB0byBpbXBsZW1lbnQgYENsYXNzI25ld2AgaW4gUnVieSBh bmQgaXQgdXNlcyBgLi4uYC4NCg0KSSB3YXMgYWJsZSB0byBpbXBsZW1lbnQgYENsYXNzI25ld2Ag aW4gUnVieQ0KW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC85Mjg5KS4N CklmIHdlIGFkb3B0IHRoZSB0ZWNobmlxdWUgaW4gdGhpcyBwYXRjaCwgdGhlbiB3ZSBjYW4gb3B0 aW1pemUgYWxsb2NhdGluZw0Kb2JqZWN0cyB0aGF0IHRha2Uga2V5d29yZCBwYXJhbWV0ZXJzIGZv ciBgaW5pdGlhbGl6ZWAuDQoNCkZvciBleGFtcGxlLCB0aGlzIGNvZGUgd2lsbCBhbGxvY2F0ZSAy IG9iamVjdHM6IG9uZSBmb3IgYFNvbWVPYmplY3RgLCBhbmQgb25lDQpmb3IgdGhlIGt3YXJnczoN Cg0KYGBgcnVieQ0KU29tZU9iamVjdC5uZXcoZm9vOiAxKQ0KYGBgDQoNCklmIHdlIGNvbWJpbmUg dGhpcyB0ZWNobmlxdWUsIHBsdXMgaW1wbGVtZW50IGBDbGFzcyNuZXdgIGluIFJ1YnksIHRoZW4g d2UgY2FuDQpyZWR1Y2UgYWxsb2NhdGlvbnMgZm9yIHRoaXMgY29tbW9uIG9wZXJhdGlvbi4NCg0K DQoNCi0tIA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvDQogX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwogcnVieS1jb3JlIG1haWxpbmcgbGlzdCAtLSBy dWJ5LWNvcmVAbWwucnVieS1sYW5nLm9yZwogVG8gdW5zdWJzY3JpYmUgc2VuZCBhbiBlbWFpbCB0 byBydWJ5LWNvcmUtbGVhdmVAbWwucnVieS1sYW5nLm9yZwogcnVieS1jb3JlIGluZm8gLS0gaHR0 cHM6Ly9tbC5ydWJ5LWxhbmcub3JnL21haWxtYW4zL3Bvc3Rvcml1cy9saXN0cy9ydWJ5LWNvcmUu bWwucnVieS1sYW5nLm9yZy8=