From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by sourceware.org (Postfix) with ESMTPS id 233133952007 for ; Fri, 6 May 2022 11:26:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 233133952007 X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248347351" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="248347351" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 04:26:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="537849941" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga006.jf.intel.com with ESMTP; 06 May 2022 04:26:35 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Fri, 6 May 2022 04:26:35 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Fri, 6 May 2022 04:26:35 -0700 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.45) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Fri, 6 May 2022 04:26:34 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Fle1JV5JsDNck55y8E8gHrELp6JQd1xYVcVhN7j4v39wmWevi7cw4n3z+3XIrUzHdk9vk4TnZOWXWCPZe+c7DiPlSNKLll6rKRF0n8U5mupX0svguOgeiAUK7QCI4WdvM1QMfySiLRTqZoIN8TlS0Jg2CDVO2+8JMUET4+2+4msugxQV83Fg1yePPep/xlpVzW50tacJ3ybl1piWS9c/YuSJVoX0KEs1srqGRYNeAAwo94K19m4ehGTrL8iH4k0yjpiNC37pCGwIz5vVse0GMtlq1jNi5gOwBlz3r7gB1L6t35BOk86EByeLiHJMvbpJ+3NlxXR4hwWwENXIu7q4Dw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=5MMdqLWqx0x7QTCwbrKB9L59xzEFY2t8Q/CGjxGibvc=; b=VoRQakVml0cv5dbjlZnYRdI6dgSWKFwZoPnIgBwHUUQCCJlkkpNwJ0Yr5nTgew3REHi2k/j/SyXdhti2ldm1gh/769hJ4bz0U7h6ZDXzkAa1KIzUWrWT4DzKlijBGyljwaqwst6VTTvy+peJO6wXH2ozERpTPhZY1l28EdHYcnWONm4Py2m2YvTaDrjJIPk0/HrGWBUrMf5tpOcJfxaU5Nz6qxvDUEiNKZuQvk9Yg0C4jgITcfomNWMCbZ6lTc3I0SQb8ssi3XacSg4eOIgv8zEThHpEeeZSFhodRfMMOTeJOAKiOzFEOM1/mIEzTNIC3r94KLsi48bwbYn9yc+RCg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from MN2PR11MB4566.namprd11.prod.outlook.com (2603:10b6:208:24e::16) by BY5PR11MB4242.namprd11.prod.outlook.com (2603:10b6:a03:1c1::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.13; Fri, 6 May 2022 11:26:33 +0000 Received: from MN2PR11MB4566.namprd11.prod.outlook.com ([fe80::e53d:4523:d1a4:bdcc]) by MN2PR11MB4566.namprd11.prod.outlook.com ([fe80::e53d:4523:d1a4:bdcc%7]) with mapi id 15.20.5206.027; Fri, 6 May 2022 11:26:33 +0000 From: "Willgerodt, Felix" To: "Metzger, Markus T" CC: "gdb-patches@sourceware.org" Subject: RE: [PATCH v3 09/12] btrace, python: Enable ptwrite listener registration. Thread-Topic: [PATCH v3 09/12] btrace, python: Enable ptwrite listener registration. Thread-Index: AQHXYoO8/3a90KqQoUGWWzs6KGKKWKtxmQoAgV68smA= Date: Fri, 6 May 2022 11:26:33 +0000 Message-ID: References: <20210616074205.1129553-1-felix.willgerodt@intel.com> <20210616074205.1129553-10-felix.willgerodt@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.6.401.20 dlp-reaction: no-action x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: cd53969e-8312-4e6b-d39a-08da2f53460c x-ms-traffictypediagnostic: BY5PR11MB4242:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: eVFRptiXxsRAZG8ytpw73k+CwRcGvAlfmtkmxVTKl8wj/Yi3E7JRHExJmrJa68eSvOKPehyPno4CRU/6u+NCdFuCOY8cC+X27wGxDH0SPBJftlviTjDLHlwHRk/ff0z9IuX4tPXOhOdRoqDTEGW8CDZiFDJ0tQqUedR3JvBMlXVY+sBidz0kNkRFtZARaFcNvbbgDv/aH028AsWvFKugDCBGafy103UnCvsdwPDseuwonundFghCSRpQDrU+Mm0doXtikjCtznuY368msPprozqCqG0Z/pF1uVOEbkZp9MdBQtaCB9yDWbBWo7TaBd06wG1qR7hqnTUy9MT1KzpHQkEDu6iAU9OM52mWB88AVkm+t3+IMD0WPri9B+7ZXPaFotZR+CcfiAkYLZbj8mxD7JzFGTnXqdjm5V8nR+tBiz2ztzR85CmnycViY6SC/XOYyY9WkI7Z0JKYSPz2fvQ2Ip4gUOnImAMX2ieD0SelrD112KNZXGz6nWQP9MgwvL9Sj198qimJNlE2MDIlGuxp7Hym4yV9Lcssrl5QjRxcrIrm8tXF6gJqbdhE8dURIE/W0N7SZqhi4lk5RYDTpkaJLXjoV/JqwkI5aQq4eIYNIKAFRzMn2P1y+ctswsluyQNf67VTEBoGRlgH866UCFtZeMoCyl8rVlnu4fBmkGIISjFaw7kn5rprZ0xY9t/9dotSbDZnYWEjSbMlpruyMWqFu4pmnGJ6xicduxiz6hshpIA= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR11MB4566.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(6862004)(8676002)(76116006)(66946007)(66446008)(66556008)(66476007)(64756008)(4326008)(5660300002)(186003)(8936002)(2906002)(52536014)(83380400001)(9686003)(33656002)(508600001)(6636002)(26005)(122000001)(38070700005)(7696005)(86362001)(38100700002)(55016003)(71200400001)(82960400001)(316002)(6506007)(53546011)(2004002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UUQydkZtdE12WTY2NmxSUnJqQ3djQi8xdWFvUWxrZkhodnFnTzlGWUJHWFAy?= =?utf-8?B?WTZYY1lmcFVxUmQ4RmZpVE15c2U1eW9WYlhod3E4eTBJZ1h1S2F2d2RHTm91?= =?utf-8?B?eVBnSlVvd3FwRjVTUEllRjBMTjQzNjRZR3RWYU9LMGxLbS9vN2ViQkE4VTFZ?= =?utf-8?B?aGxwYXIwemR2U0s0emVyczdGNjNiRmNkT1FGaVNkRFJscTYxYzdNU0FQUmZa?= =?utf-8?B?dm9tZlY0ZGord0FBZXp4MGtSWnlYTGxTQlF1dTBQcnpnY29LNWhRQVZqcXhM?= =?utf-8?B?dXg1NjNQciswUWZaRENMaXE5ME5zQlRhQUZmZHVRNFo2Z3dBN1NYbndBWExQ?= =?utf-8?B?N0F4em9ZQ2gwM2hwRzVGbVJTZmJQR1JyQWg3djkwWXRrVzhzaTRlUUZTcVBE?= =?utf-8?B?VlA0RjRnOVRjdXBOYmg0MnJvd2FPbytoNEdBcUUvSTJRRFJOOERCeU5XTlBo?= =?utf-8?B?S0UxbkxOMEZkL1JHUkNVWXBUVjFxeksxYXdWUFZoc05oZEZzNVdqRXJKSXhG?= =?utf-8?B?Tk1Ga1o1aHRVb09raFBFeXp2SlpwWXJPQ1R0UXF3Wm94ZWZZUXR0MUQ0N1pJ?= =?utf-8?B?NjQxcSs1V29oWHFScFkzemtrb2k5ckZ4QTZCRDJLVXhDbE02WUd2WTFpbkc1?= =?utf-8?B?aWNBWXlXdmJpbHpaVzlhSmZKeFJndlN1bXNXdlZyZTM3UjduaEd4VHJaNkhE?= =?utf-8?B?QzQwUXdUTENUUkh3bDF4c3Vhei85c0RFUE5TR25FMFpzUkU2YWZESXdaK29r?= =?utf-8?B?WkR4R3F1Y1paYW9XT2J6QjZFamNPWmYrajlHNDhqUE9qU2NWUXBnVm94R2Fo?= =?utf-8?B?RXd5VERCWFIwSERDbGk0SG5JWDRuQ0RIWlQrTXZKSXZnVzl5VzNjWElRcXNS?= =?utf-8?B?QXlTSmN6dUEzNVljWDZRRWl3L0t2NnV5VFR4SlFBWWlITS9SVUdOeFVzRlVT?= =?utf-8?B?VGFzaHI1MnVzMklzTDNRVVdPT3B3bVVEOXdQSFRVd2lLQWFtRllnbXZVOVFr?= =?utf-8?B?RDJRalRTbGc1UnNGQmhGOXM3aTRXL3NCdXh6ZytvanlYZ0IvaDV0R3VvcXhJ?= =?utf-8?B?OTdKcDJNVjdYOWtETzNXVDROcUp4MGZ4Q3UxOG9nMlUwT2xKYjVNOVo3QTlu?= =?utf-8?B?Z05lRzN0UmxydWw5bDM5akgwN2h2RndodUN5dTY1aEFjY3Q1N210YUNtOXpt?= =?utf-8?B?WkdTVnJJdmpjV2lnRTF2VEw2L2Z1QnRXZ1p0VGV2T0RqTVJrTVZFc3pMYnY5?= =?utf-8?B?ZnNHMWdIaHh5Szd4K2tsUEc2R3hBeU5OdDRrK0lKdC9OZ1l3M3RicDJkOUZt?= =?utf-8?B?Tk5SR1ZVNnJqN0hIeGVvTU5pdU0yQ0lPNUNDZmxJdWVsbURudVFzaS9xM2N0?= =?utf-8?B?Vy8zMVdaTUo0NGdKYzNBL3cwU1BGeEZ2Z1BCdmwvTjd6dUpyY2RFd2Y5bHhi?= =?utf-8?B?eC9TSmg3TlNJOS92QUswS2hUQ3VnYTBQTWNoSEFCTkVwdFovc05mSjV4dXhW?= =?utf-8?B?TEZkUTIrd25yTHpIcjJoaFd1ekFJRmNUVXpyM2JiMW1oL1Q3QUR1QzQ0N2tG?= =?utf-8?B?Zk5YRW5OcDR6NEFDOUNZRHg2ZlVyZHhqdTMva2NxOVVZR1pCOWdTYlBLS285?= =?utf-8?B?eWhRNXoycVlicUNMT1Y2VW5OdU4rT1B1aEtNZFRGTTYrUjU2aDVMeExEMlFw?= =?utf-8?B?ck1pWng0NjExK0RZWHJsWXpWb2wwc1V5bVAxZWEyaFZCZndLdDBqQW1CVHhT?= =?utf-8?B?bVJHMFQ5L0JJdUVqZDdXUExXWXQ2QjQ3dzlXYmZ4dnJSMTdyakFQUGRmMGV2?= =?utf-8?B?UXNiZ2xIanZMdW4ydDZpQmR4VFplbDV6SkUvWGRtT1d0dDUxVUxldlJTMFNI?= =?utf-8?B?WG5JMGMwbTRrM0xhV1hsOUY2SkRCOXRBS25vc0ZMT2tsNjArZm95TDdtR29o?= =?utf-8?B?U0I3Q3RDWmxVdWhpTTJNUDYxQVZYWi9UbDNtMG5GNDliR3BweDFuekZCMksv?= =?utf-8?B?V2NZRHRPaEFIN3lGMk56QlpGVG01L2VGc1dVbHd5RkFGUkV1ZWhEU25rUHB3?= =?utf-8?B?T0lDZW1iRjRldE5hRWVFeUhLS0kxZXYxTGpCTlVKMHJHZ2FheUtWaFE2ZVNO?= =?utf-8?B?NlVBNitISDlvWTE1MlBVaC9wYms5YnJqdFQ0R2ZYRFZnQkNBdVVDZkhLdFh2?= =?utf-8?B?Y2N3azB6ZDVtSUNzbUU2RnJSd2xoZDZzMnY0SDh4djZJTFM5Z09GUTlMQmho?= =?utf-8?B?Y2J0Y29aLzh5RXQxTWRmYWp3UHkrenhEZVNTUDJWellBQVJwaGhXZVdMZ2RI?= =?utf-8?B?Wk90L1V3Nk5lVE5USzk2UG9FZWVwbGY5WERESTY5Zk5YaFBUdkRJNDcybTlj?= =?utf-8?Q?UUYuYgJ5m1K4KyNE=3D?= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB4566.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: cd53969e-8312-4e6b-d39a-08da2f53460c X-MS-Exchange-CrossTenant-originalarrivaltime: 06 May 2022 11:26:33.0070 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: +5lYJqCbizZ61sKozqTXi/yLZrN9kAqWrs8gfP93xfsDhkMd4X2CEG42GsL9J/+5QuGXBzMFAm8951KVIjVZGWzB0h1v0Cn8Zq5nRsZyC8M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR11MB4242 X-OriginatorOrg: intel.com Content-Transfer-Encoding: base64 X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 May 2022 11:26:38 -0000 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNZXR6Z2VyLCBNYXJrdXMgVCA8 bWFya3VzLnQubWV0emdlckBpbnRlbC5jb20+DQo+IFNlbnQ6IEZyZWl0YWcsIDEzLiBBdWd1c3Qg MjAyMSAxMjozNg0KPiBUbzogV2lsbGdlcm9kdCwgRmVsaXggPGZlbGl4LndpbGxnZXJvZHRAaW50 ZWwuY29tPg0KPiBDYzogZ2RiLXBhdGNoZXNAc291cmNld2FyZS5vcmcNCj4gU3ViamVjdDogUkU6 IFtQQVRDSCB2MyAwOS8xMl0gYnRyYWNlLCBweXRob246IEVuYWJsZSBwdHdyaXRlIGxpc3RlbmVy DQo+IHJlZ2lzdHJhdGlvbi4NCj4gDQo+IFRoYW5rcywgRmVsaXgsDQo+IA0KPiANCj4gPisgIGFw cGx5X2V4dF9sYW5nX3B0d3JpdGVfbGlzdGVuZXIgKGluZmVyaW9yX3B0aWQpOw0KPiANCj4gU2hv dWxkIHRoaXMgYmUgY2FsbGVkIHB0d3JpdGVfZmlsdGVyPw0KPiANCg0KTm8sIHRoYXQgd2Fzbid0 IG15IGludGVudGlvbi4gSSBjYW4gcmVuYW1lICJsaXN0ZW5lciIgdG8gImZpbHRlciIgaWYgeW91 DQp3YW50LCBidXQgdGhhdCB3b3VsZCBhZmZlY3QgdGhlIHdob2xlIHNlcmllcyBhbmQgZG9jdW1l bnRhdGlvbi4NCk9yIGFyZSB5b3UganVzdCByZXF1ZXN0aW5nIHRoZSBleHRlbnNpb24gZnVuY3Rp b25zIHRvIGJlIHVwZGF0ZWQ/DQoNCj4gDQo+ID4rICAvKiBQeU9iamVjdCBwb2ludGVyIHRvIHRo ZSBwdHdyaXRlIGxpc3RlbmVyIGZ1bmN0aW9uLiAgKi8NCj4gPisgIHZvaWQgKnB0d19saXN0ZW5l ciA9IG51bGxwdHI7DQo+ID4rDQo+IA0KPiBUaGUgY29tbWVudCBzYXlzIHRoYXQgdGhpcyBpcyBh IFB5T2JqZWN0LiAgV2h5IGlzIGl0IGRlY2xhcmVkIHZvaWQgKj8NCj4NCg0KQmVjYXVzZSBJIGRp ZG4ndCB3YW50IHRvIGluY2x1ZGUgYSBweXRob24gaGVhZGVyIGZvciBQeU9iamVjdCBoZXJlLg0K QWZhaWssIGJ0cmFjZS5oIHNob3VsZCBiZSBrZXB0IGZyZWUgb2YgdGhvc2UuDQoNCj4gDQo+ID5k aWZmIC0tZ2l0IGEvZ2RiL2V4dGVuc2lvbi1wcml2LmggYi9nZGIvZXh0ZW5zaW9uLXByaXYuaA0K PiA+aW5kZXggNzdmMjNlMGY5MTEuLjM2ZGE0MjExNzM4IDEwMDY0NA0KPiA+LS0tIGEvZ2RiL2V4 dGVuc2lvbi1wcml2LmgNCj4gPisrKyBiL2dkYi9leHRlbnNpb24tcHJpdi5oDQo+ID5AQCAtMTgz LDYgKzE4MywxMCBAQCBzdHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1YWdlX29wcw0KPiA+ICAgICAgZW51 bSBleHRfbGFuZ19mcmFtZV9hcmdzIGFyZ3NfdHlwZSwNCj4gPiAgICAgIHN0cnVjdCB1aV9vdXQg Km91dCwgaW50IGZyYW1lX2xvdywgaW50IGZyYW1lX2hpZ2gpOw0KPiA+DQo+ID4rICAvKiBVc2Vk IGZvciByZWdpc3RlcmluZyB0aGUgcHR3cml0ZSBsaXN0ZW5lciB0byB0aGUgY3VycmVudCB0aHJl YWQuICAqLw0KPiA+KyAgZW51bSBleHRfbGFuZ19idF9zdGF0dXMgKCphcHBseV9wdHdyaXRlX2xp c3RlbmVyKQ0KPiA+KyAgICAoY29uc3Qgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFnZV9kZWZuICos IHB0aWRfdCBpbmZlcmlvcl9wdGlkKTsNCj4gDQo+IFRoZXJlIGlzIGEgcGFyYW1ldGVyIG5hbWUg Zm9yIHRoZSBzZWNvbmQgYnV0IG5vdCBmb3IgdGhlIGZpcnN0IHBhcmFtZXRlci4NCj4gQWxzbywg dGhlIG5hbWUgc2hhZG93cyBhIGdsb2JhbCB2YXJpYWJsZS4gIExldCdzIGNhbGwgaXQganVzdCAn cHRpZCcuDQo+IA0KDQpUaGUgZmlyc3QgcGFyYW1ldGVyIG5ldmVyIHNlZW1zIHRvIGJlIG5hbWVk IGluIHRoaXMgZmlsZS4gQXBhcnQgZnJvbSBvbmUNCm9jY2FzaW9uLiBUaGF0IHNhaWQsIEkgdGhp bmsgaXQgbWlnaHQgYmUgb25seSBmb3IgZm9ybWF0dGluZyByZWFzb25zLCBhbmQgd2UgaGF2ZQ0K ZW5vdWdoIHNwYWNlIGhlcmUuIFNvIEkgYWRkZWQgYSBuYW1lLiBJIGFsc28gY2hhbmdlZCBpdCB0 byBwdGlkLg0KDQo+IA0KPiA+Ky8qIFVzZWQgZm9yIHJlZ2lzdGVyaW5nIHRoZSBwdHdyaXRlIGxp c3RlbmVyIHRvIHRoZSBjdXJyZW50IHRocmVhZC4gICovDQo+ID4rDQo+ID4rZW51bSBleHRfbGFu Z19idF9zdGF0dXMNCj4gDQo+IFRoaXMgZW51bSBpcyBzcGVjaWZpY2FsbHkgZm9yIGZyYW1lIGZp bHRlcnMuICBXZSdkIG5lZWQgdG8gZWl0aGVyIGdlbmVyYWxpemUgaXQgb3INCj4gYWRkIG91ciBv d24gZm9yIHB0d3JpdGUgZmlsdGVycy4NCj4gDQoNCkdvb2QgY2F0Y2guIFNpbmNlIHdlIGFyZSBu b3QgY2hlY2tpbmcgaXQgYW55d2F5IGFuZCBhbGxvdyBudWxscHRyL05vbmUNCmFzIGEgdmFsaWQg bGlzdGVuZXIgSSBkZWNpZGVkIHRvIG1ha2UgdGhpcyByZXR1cm4gdm9pZC4NCg0KPiANCj4gPith cHBseV9leHRfbGFuZ19wdHdyaXRlX2xpc3RlbmVyIChwdGlkX3QgaW5mZXJpb3JfcHRpZCkNCj4g Pit7DQo+ID4rICBmb3IgKGNvbnN0IHN0cnVjdCBleHRlbnNpb25fbGFuZ3VhZ2VfZGVmbiAqZXh0 bGFuZyA6DQo+IGV4dGVuc2lvbl9sYW5ndWFnZXMpDQo+ID4rICAgIHsNCj4gPisgICAgICBlbnVt IGV4dF9sYW5nX2J0X3N0YXR1cyBzdGF0dXM7DQo+ID4rDQo+ID4rICAgICAgaWYgKGV4dGxhbmct Pm9wcyA9PSBudWxscHRyDQo+ID4rCSAgfHwgZXh0bGFuZy0+b3BzLT5hcHBseV9wdHdyaXRlX2xp c3RlbmVyID09IE5VTEwpDQo+ID4rCWNvbnRpbnVlOw0KPiA+KyAgICAgIHN0YXR1cyA9IGV4dGxh bmctPm9wcy0+YXBwbHlfcHR3cml0ZV9saXN0ZW5lciAoZXh0bGFuZywgaW5mZXJpb3JfcHRpZCk7 DQo+ID4rDQo+ID4rICAgICAgaWYgKHN0YXR1cyAhPSBFWFRfTEFOR19CVF9OT19GSUxURVJTKQ0K PiA+KwlyZXR1cm4gc3RhdHVzOw0KPiANCj4gSSB3b3VsZCBoYXZlIGluc2VydGVkIHRoZSBlbXB0 eSBsaW5lIGFmdGVyIHRoZSAnY29udGludWUnIGZyb20gdGhlIGlmDQo+IHN0YXRlbWVudCBzaW5j ZSBvYnRhaW5pbmcgdGhlIHN0YXR1cyBhbmQgY2hlY2tpbmcgaXQgYmVsb25nIHRvZ2V0aGVyLg0K Pg0KDQpEb25lDQogDQo+IElJVUMsIHRoaXMgaW5zdGFsbHMgdGhlIHB0d3JpdGUgZmlsdGVyLiAg VGhlIGNvZGUgdGhhdCBhY3R1YWxseSBjYWxscyBpdCBvbiBhDQo+IFBUV1JJVEUgZXZlbnQgaXMg bm90IHBhcnQgb2YgdGhpcyBwYXRjaC4gIEkgdGhpbmsgdGhlIGluc3RhbGxhdGlvbiBvZiB0aGUg ZmlsdGVyDQo+IGFuZCBjYWxsaW5nIGl0IHNob3VsZCBiZSBpbnNpZGUgb25lIHBhdGNoIHRvIG1h a2UgaXQgY2xlYXIgaG93IHRoaXMgd29ya3MuDQo+IA0KDQpEb25lLg0KDQo+IA0KPiA+KyMgUHR3 cml0ZSB1dGlsaXRpZXMuDQo+ID4rIyBDb3B5cmlnaHQgKEMpIDIwMjAgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuDQo+IA0KPiBZZWFyLg0KPiANCg0KRG9uZQ0KDQo+IA0KPiA+K2RlZiBk ZWZhdWx0X2xpc3RlbmVyKHBheWxvYWQsIGlwKToNCj4gPisgICAgIiIiRGVmYXVsdCBsaXN0ZW5l ciB0aGF0IGlzIGFjdGl2ZSB1cG9uIHN0YXJ0aW5nIEdEQi4iIiINCj4gPisgICAgcmV0dXJuICJ7 Onh9Ii5mb3JtYXQocGF5bG9hZCkNCj4gPisNCj4gPisjIFRoaXMgZGljdCBjb250YWlucyB0aGUg cGVyIHRocmVhZCBjb3BpZXMgb2YgdGhlIGxpc3RlbmVyIGZ1bmN0aW9uIGFuZCB0aGUNCj4gPisj IGdsb2JhbCB0ZW1wbGF0ZSBsaXN0ZW5lciwgZnJvbSB3aGljaCB0aGUgY29waWVzIGFyZSBjcmVh dGVkLg0KPiA+K19wdHdyaXRlX2xpc3RlbmVyID0geyJnbG9iYWwiIDogZGVmYXVsdF9saXN0ZW5l cn0NCj4gPisNCj4gPisNCj4gPitkZWYgX3VwZGF0ZV9saXN0ZW5lcl9kaWN0KHRocmVhZF9saXN0 KToNCj4gPisgICAgIiIiSGVscGVyIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgbGlzdGVuZXIgZGlj dC4NCj4gPisNCj4gPisgICAgRGlzY2FyZHMgbGlzdGVuZXIgY29waWVzIG9mIHRocmVhZHMgdGhh dCBhbHJlYWR5IGV4aXRlZCBhbmQgcmVnaXN0ZXJzDQo+ID4rICAgIGNvcGllcyBvZiB0aGUgbGlz dGVuZXIgZm9yIG5ldyB0aHJlYWRzLiIiIg0KPiA+KyAgICAjIHRocmVhZF9saXN0W3hdLnB0aWQg cmV0dXJucyB0aGUgdHVwbGUgKHBpZCwgbHdwLCB0aWQpDQo+ID4rICAgIGx3cF9saXN0ID0gW2ku cHRpZFsxXSBmb3IgaSBpbiB0aHJlYWRfbGlzdF0NCj4gPisNCj4gPisgICAgIyBjbGVhbi11cCBv bGQgbGlzdGVuZXJzDQo+ID4rICAgIGZvciBrZXkgaW4gX3B0d3JpdGVfbGlzdGVuZXIua2V5cygp Og0KPiA+KyAgICAgIGlmIGtleSBub3QgaW4gbHdwX2xpc3QgYW5kIGtleSAhPSAiZ2xvYmFsIjoN Cj4gPisgICAgICAgIF9wdHdyaXRlX2xpc3RlbmVyLnBvcChrZXkpDQo+ID4rDQo+ID4rICAgICMg UmVnaXN0ZXIgbGlzdGVuZXIgZm9yIG5ldyB0aHJlYWRzDQo+ID4rICAgIGZvciBrZXkgaW4gbHdw X2xpc3Q6DQo+ID4rICAgICAgICBpZiBrZXkgbm90IGluIF9wdHdyaXRlX2xpc3RlbmVyLmtleXMo KToNCj4gPisgICAgICAgICAgICBfcHR3cml0ZV9saXN0ZW5lcltrZXldID0gZGVlcGNvcHkoX3B0 d3JpdGVfbGlzdGVuZXJbImdsb2JhbCJdKQ0KPiANCj4gU28gd2UgY2FuIG9ubHkgdXBkYXRlIGFs bCBhdCBvbmNlPyAgSW4gbm9uLXN0b3AgbW9kZSwgSSB0aGluayB3ZSB3YW50IHRvIGJlDQo+IGFi bGUgdG8gdXBkYXRlIGp1c3QgdGhlIG9uZSBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkLg0KPiANCj4g V2hhdCdzIHRoZSBwdXJwb3NlIG9mIHRoaXMgZGVlcGNvcHk/ICBGb3IgdGhlIGRlZmF1bHQgZmls dGVyLCB0aGlzIGRvZXNuJ3QNCj4gc2VlbSBuZWNlc3NhcnkuICBGb3IgdXNlci1kZWZpbmVkIGZp bHRlcnMsIHRoaXMgaXMgaW5pdGlhbGl6aW5nIHRoZSBwZXItdGhyZWFkDQo+IGZpbHRlciBmcm9t IGEgdGVtcGxhdGUsIGNvcnJlY3Q/ICBTaG91bGQgJ2dsb2JhbCcgYmUgc3BlbGxlZCAndGVtcGxh dGUnIGluIHRoYXQNCj4gY2FzZT8NCj4gDQo+IFNob3VsZCB0aGUgdGVtcGxhdGUgZmlsdGVyIGJl IHBhcnQgb2YgdGhlIGRpY3QsIGF0IGFsbD8NCj4gDQoNCldlIGRpc2N1c3NlZCB0aGlzIG9mZmxp bmUgbGFzdCB5ZWFyLiBUbyBzdW1tYXJpemU6DQpXZSBkZWVwY29weSB0byBhbGxvdyBldmVyeSB0 aHJlYWQgdG8ga2VlcCBpdCdzIG93biBpbnRlcm5hbCBzdGF0ZS4gV2UgYWxzbw0KZGlzY3Vzc2Vk IHRoZSBhcmNoaXRlY3R1cmUgcmVwZWF0ZWRseS4gV2UgZGVjaWRlZCB0byB1cGRhdGUgZXZlcnkg dGhyZWFkDQppZiB3ZSB1cGRhdGUgdGhlIGxpc3RlbmVyLiBJIGhhZCBhIHZlcnNpb24gc29tZSB5 ZWFycyBhZ28gdGhhdCBhbGxvd2VkIHRvDQpzcGVjaWZ5IHdoaWNoIHRocmVhZHMgdG8gdXBkYXRl LCBidXQgd2UgZGVjaWRlZCBhZ2FpbnN0IHRoYXQuDQoNCkkgZGlkbid0IGNoYW5nZSBhbnl0aGlu Zy4NCg0KPiANCj4gPitkZWYgX2NsZWFyX3RyYWNlcyh0aHJlYWRfbGlzdCk6DQo+ID4rICAgICIi IkhlbHBlciBmdW5jdGlvbiB0byBjbGVhciB0aGUgdHJhY2Ugb2YgYWxsIHRocmVhZHMuIiIiDQo+ IA0KPiBUaGUgY29tbWVudCBkb2VzbuKAmXQgbWF0Y2ggdGhlIGNvZGUuICBUaGUgZnVuY3Rpb24g Y2xlYXJzIHRoZSByZWNvcmRpbmdzIG9mDQo+IHRocmVhZHMgaW4gVEhSRUFEX0xJU1QuDQo+IA0K DQpJIHVwZGF0ZWQgdGhlIGNvbW1lbnQuDQoNCg0KPiANCj4gPisgICAgY3VycmVudF90aHJlYWQg PSBnZGIuc2VsZWN0ZWRfdGhyZWFkKCkNCj4gPisNCj4gPisgICAgcmVjb3JkaW5nID0gZ2RiLmN1 cnJlbnRfcmVjb3JkaW5nKCkNCj4gPisNCj4gPisgICAgaWYgKHJlY29yZGluZyBpcyBub3QgTm9u ZSk6DQo+ID4rICAgICAgICBmb3IgdGhyZWFkIGluIHRocmVhZF9saXN0Og0KPiA+KyAgICAgICAg ICAgIHRocmVhZC5zd2l0Y2goKQ0KPiA+KyAgICAgICAgICAgIHJlY29yZGluZy5jbGVhcigpDQo+ ID4rDQo+ID4rICAgICAgICBjdXJyZW50X3RocmVhZC5zd2l0Y2goKQ0KPiANCj4gU2hvdWxkIHRo ZXJlIGJlIGEgdHJ5IGFyb3VuZCB0aGUgYWJvdmUgdG8gZW5zdXJlIHdlIHN3aXRjaCBiYWNrIGlu IGNhc2Ugb2YNCj4gZXhjZXB0aW9ucz8NCj4NCg0KSSBhbSBub3Qgc3VyZS4gSSBkb24ndCB0aGlu ayBjbGVhcigpIGNhbiByZWFsbHkgdGhyb3cuIElmIHN3aXRjaCB0aHJvd3MsIGl0DQptaWdodCBi ZSBiZWNhdXNlIG9mIHRoZSB0aHJlYWRfbGlzdCBiZWluZyB3cm9uZy4gQnV0IHdlIGdvdCB0aGUg bGlzdCBmcm9tDQpnZGIgaXRzZWxmIGp1c3QgYmVmb3JlIHRoaXMgY2FsbC4gSXQgbWlnaHQgYWxz byBiZSB0aGF0IHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoDQpzd2l0Y2goKSwgYnV0IGluIHRoYXQg Y2FzZSB0cnlpbmcgdG8gc3dpdGNoIGFnYWluIHNlZW1zIGRhbmdlcm91cy4NCiANCj4gDQo+ID4r ZGVmIHJlZ2lzdGVyX2xpc3RlbmVyKGxpc3RlbmVyKToNCj4gPisgICAgIiIiUmVnaXN0ZXIgdGhl IHB0d3JpdGUgbGlzdGVuZXIgZnVuY3Rpb24uIiIiDQo+ID4rICAgIGlmIGxpc3RlbmVyIGlzIG5v dCBOb25lIGFuZCBub3QgY2FsbGFibGUobGlzdGVuZXIpOg0KPiA+KyAgICAgICAgcmFpc2UgVHlw ZUVycm9yKCJMaXN0ZW5lciBtdXN0IGJlIGNhbGxhYmxlISIpDQo+ID4rDQo+ID4rICAgIHRocmVh ZF9saXN0ID0gZ2RiLkluZmVyaW9yLnRocmVhZHMoZ2RiLnNlbGVjdGVkX2luZmVyaW9yKCkpDQo+ ID4rICAgIF9jbGVhcl90cmFjZXModGhyZWFkX2xpc3QpDQo+IA0KPiBQbGVhc2UgYWRkIGEgY29t bWVudCBhcyB0byB3aHkgd2UgbmVlZCB0byBjbGVhciB0aGUgcmVjb3JkaW5ncyBmb3IgYWxsDQo+ IHRocmVhZHM/DQo+IA0KDQpEb25lLg0KDQo+IA0KPiA+K2RlZiBnZXRfbGlzdGVuZXIoKToNCj4g PisgICAgIiIiUmV0dXJucyB0aGUgbGlzdGVuZXJzIG9mIHRoZSBjdXJyZW50IHRocmVhZC4iIiIN Cj4gDQo+IFRoZSBjb21tZW50IHNheXMgJ2xpc3RlbmVycycgYnV0IHRoZXJlIGNhbiBiZSBvbmx5 IG9uZSwgY29ycmVjdD8NCj4gDQo+ID4rICAgIHRocmVhZF9saXN0ID0gZ2RiLkluZmVyaW9yLnRo cmVhZHMoZ2RiLnNlbGVjdGVkX2luZmVyaW9yKCkpDQo+ID4rICAgIF91cGRhdGVfbGlzdGVuZXJf ZGljdCh0aHJlYWRfbGlzdCkNCj4gDQo+IFdoeSBkbyB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgZmls dGVycyBmb3IgYWxsIHRocmVhZHM/DQo+IA0KDQpCZWNhdXNlIHdlIGFyZSByZWdpc3RlcmluZyBh IG5ldyBjb3B5IG9mIHRoZSBuZXcgbGlzdGVuZXIgZm9yIGV2ZXJ5DQp0aHJlYWQuICBBbiBlYXJs aWVyIChpbnRlcm5hbCkgdmVyc2lvbiB0aGF0IEkgaGFkIGFsbG93ZWQgdG8gcmVnaXN0ZXINCmRp ZmZlcmVudCBsaXN0ZW5lcnMgcGVyIHRocmVhZCwgYnV0IHdlIGRlY2lkZWQgYWdhaW5zdCB0aGF0 Lg0KVGhpcyBpcyBuZWVkZWQgdG8gZW5hYmxlIHBlci10aHJlYWQgaW50ZXJuYWwgc3RhdGVzLCBl dmVuIGlmIHRoZSB1c2VyDQpjYW4gb25seSByZWdpc3RlciBvbmUgbGlzdGVuZXIgZ2xvYmFsbHku DQoNCj4gDQo+ID4rLyogSGVscGVyIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgY3VycmVudCBwdHdy aXRlIGxpc3RlbmVyLiAgUmV0dXJucyBudWxscHRyDQo+ID4rICAgaW4gY2FzZSBvZiBlcnJvcnMu ICAqLw0KPiA+Kw0KPiA+K1B5T2JqZWN0ICoNCj4gPitnZXRfcHR3cml0ZV9saXN0ZW5lciAoKQ0K PiA+K3sNCj4gPisgIFB5T2JqZWN0ICptb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUgKCJn ZGIucHR3cml0ZSIpOw0KPiA+Kw0KPiA+KyAgaWYgKFB5RXJyX09jY3VycmVkICgpKQ0KPiA+KyAg ew0KPiA+KyAgICBnZGJweV9wcmludF9zdGFjayAoKTsNCj4gPisgICAgcmV0dXJuIG51bGxwdHI7 DQo+ID4rICB9DQo+ID4rDQo+ID4rICBQeU9iamVjdCAqZGVmYXVsdF9wdHdfbGlzdGVuZXIgPSBQ eU9iamVjdF9DYWxsTWV0aG9kIChtb2R1bGUsDQo+ID4JImdldF9saXN0ZW5lciIsDQo+ID4rCQkJ CQkJCU5VTEwpOw0KPiA+Kw0KPiA+KyAgZ2RiX1B5X0RFQ1JFRiAobW9kdWxlKTsNCj4gPisNCj4g PisgIGlmIChQeUVycl9PY2N1cnJlZCAoKSkNCj4gPisgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7 DQo+ID4rDQo+ID4rICByZXR1cm4gZGVmYXVsdF9wdHdfbGlzdGVuZXI7DQo+IA0KPiBUaGlzIGlz IG5vdCBuZWNlc3NhcmlseSB0aGUgZGVmYXVsdCBsaXN0ZW5lciwgY29ycmVjdD8NCj4NCg0KQ29y cmVjdCwgSSByZW5hbWVkIGl0Lg0KDQoNCj4gDQo+ID4rLyogSGVscGVyIGZ1bmN0aW9uIHRvIGlu aXRpYWxpemUgdGhlIHB0d3JpdGUgbGlzdGVuZXIuICBSZXR1cm5zIG51bGxwdHIgaW4NCj4gPisg ICBjYXNlIG9mIGVycm9ycy4gICovDQo+ID4rDQo+ID4rUHlPYmplY3QgKg0KPiA+K3JlY3B5X2lu aXRpYWxpemVfbGlzdGVuZXIgKHB0aWRfdCBpbmZlcmlvcl9wdGlkKQ0KPiANCj4gVGhlIGFyZ3Vt ZW50IG5hbWUgc2hhZG93cyBhIGdsb2JhbCB2YXJpYWJsZS4gIExldCdzIGp1c3QgY2FsbCBpdCAn cHRpZCcuDQo+DQoNCkkgcmV3cm90ZSB0aGlzIGEgYml0IHNvIHRoaXMgaXMgbm8gbG9uZ2VyIGFu IGlzc3VlLg0KIA0KPiANCj4gPisgIHByb2Nlc3Nfc3RyYXR1bV90YXJnZXQgKnByb2NfdGFyZ2V0 ID0gY3VycmVudF9pbmZlcmlvciAoKS0NCj4gPnByb2Nlc3NfdGFyZ2V0ICgpOw0KPiANCj4gQW55 IGNoYW5jZSB3ZSBjYW4gZ2V0IGhlcmUgd2l0aG91dCBoYXZpbmcgYSBjdXJyZW50IGluZmVyaW9y Pw0KPg0KDQpJIHJld3JvdGUgdGhpcyB0byBwYXNzIGJ0aW5mbyBmcm9tIGJ0cmFjZS5jLiBUaGF0 IG1hZGUgdGhpcyBmdW5jdGlvbg0KcmVkdW5kYW50Lg0KIA0KPiANCj4gPisgIHN0cnVjdCB0aHJl YWRfaW5mbyAqIGNvbnN0IHRpbmZvID0gZmluZF90aHJlYWRfcHRpZCAocHJvY190YXJnZXQsDQo+ IGluZmVyaW9yX3B0aWQpOw0KPiA+Kw0KPiA+KyAgdGluZm8tPmJ0cmFjZS5wdHdfbGlzdGVuZXIg PSBnZXRfcHR3cml0ZV9saXN0ZW5lciAoKTsNCj4gDQo+IExldCdzIGNoZWNrIHRpbmZvLiAgT3Ig cGFzcyBpdCBpbiBhcyBwYXJhbWV0ZXIuDQo+DQoNClNlZSBhYm92ZSwgSSByZXdyb3RlIHRoaXMu IEluIHRoZSBuZXcgdmVyc2lvbiBJIHBhc3MgYW5kIGNoZWNrIGJ0aW5mbyBkaXJlY3RseS4NCg0K PiANCj4gPisgIHJldHVybiAoUHlPYmplY3QgKikgdGluZm8tPmJ0cmFjZS5wdHdfbGlzdGVuZXI7 DQo+IA0KPiBJdCBpcyBjYWxsZWQgb25seSBvbmNlIGFuZCB0aGF0IGNhbGwgaWdub3JlcyB0aGUg cmVzdWx0Lg0KPg0KDQpJIHJld3JvdGUgdGhpcy4gU2luY2Ugd2UgYWxsb3cgbnVsbHB0ci9Ob25l IHRvIHNpbGVuY2UgdGhlIGxpc3RlbmVyIEkgZGVjaWRlZA0KdG8gbWFrZSBldmVyeXRoaW5nIHJl dHVybiB2b2lkLg0KIA0KPiANCj4gPisvKiBVc2VkIGZvciByZWdpc3RlcmluZyB0aGUgZGVmYXVs dCBwdHdyaXRlIGxpc3RlbmVyIHRvIHRoZSBjdXJyZW50IHRocmVhZC4NCj4gQQ0KPiA+KyAgIHBv aW50ZXIgdG8gdGhpcyBmdW5jdGlvbiBpcyBzdG9yZWQgaW4gdGhlIHB5dGhvbiBleHRlbnNpb24g aW50ZXJmYWNlLiAgKi8NCj4gPisNCj4gPitlbnVtIGV4dF9sYW5nX2J0X3N0YXR1cw0KPiA+K2dk YnB5X2xvYWRfcHR3cml0ZV9saXN0ZW5lciAoY29uc3Qgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFn ZV9kZWZuDQo+ICpleHRsYW5nLA0KPiA+KwkJCSAgICAgcHRpZF90IGluZmVyaW9yX3B0aWQpDQo+ ID4rew0KPiA+KyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBOVUxMOw0KPiA+Kw0KPiA+KyAg aWYgKCFnZGJfcHl0aG9uX2luaXRpYWxpemVkKQ0KPiA+KyAgICByZXR1cm4gRVhUX0xBTkdfQlRf Tk9fRklMVEVSUzsNCj4gPisNCj4gPisgIHRyeQ0KPiA+KyAgICB7DQo+ID4rICAgICAgZ2RiYXJj aCA9IHRhcmdldF9nZGJhcmNoICgpOw0KPiANCj4gSXMgdGhpcyBhIHByZWNhdXRpb24gb3IgZGlk IHlvdSBydW4gaW50byBjYXNlcyB3aGVyZSB0YXJnZXRfZ2RiYXJjaCgpIHRocm93cz8NCj4gU2hv dWxkIHRoZSByZXN0IGFsc28gYmUgZG9uZSBpbnNpZGUgYSB0cnkgYmxvY2s/DQo+DQoNCkkgYmxp bmRseSBjb3BpZWQgdGhpcyBmcm9tIHB5LWZyYW1lZmlsdGVyLmM6Z2RicHlfYXBwbHlfZnJhbWVf ZmlsdGVyKCkgeWVhcnMgYWdvLg0KQnV0IGxvb2tpbmcgYXQgZ2l0IGFuZCBzb21lIHJlY2VudCBj aGFuZ2VzIHRvIGVudGVyX3B5IEkgZG9uJ3QgdGhpbmsgYW55IG9mIHRoaXMNCmlzIG5lY2Vzc2Fy eSBhbnltb3JlLiBJIHJld3JvdGUgdGhpcy4NCg0KIA0KPiANCj4gUmVnYXJkcywNCj4gTWFya3Vz Lg0KSW50ZWwgRGV1dHNjaGxhbmQgR21iSApSZWdpc3RlcmVkIEFkZHJlc3M6IEFtIENhbXBlb24g MTAsIDg1NTc5IE5ldWJpYmVyZywgR2VybWFueQpUZWw6ICs0OSA4OSA5OSA4ODUzLTAsIHd3dy5p bnRlbC5kZSA8aHR0cDovL3d3dy5pbnRlbC5kZT4KTWFuYWdpbmcgRGlyZWN0b3JzOiBDaHJpc3Rp biBFaXNlbnNjaG1pZCwgU2hhcm9uIEhlY2ssIFRpZmZhbnkgRG9vbiBTaWx2YSAgCkNoYWlycGVy c29uIG9mIHRoZSBTdXBlcnZpc29yeSBCb2FyZDogTmljb2xlIExhdQpSZWdpc3RlcmVkIE9mZmlj ZTogTXVuaWNoCkNvbW1lcmNpYWwgUmVnaXN0ZXI6IEFtdHNnZXJpY2h0IE11ZW5jaGVuIEhSQiAx ODY5MjgK