From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.115]) by sourceware.org (Postfix) with ESMTPS id 517FF3858D3C for ; Wed, 6 Dec 2023 12:44:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 517FF3858D3C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 517FF3858D3C Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=192.55.52.115 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1701866645; cv=pass; b=jbdDND18+/xUjID/03cQvt0YUEe5egSBLpKfpFv7NAqQN3kcTkDTPfUMUKpwyDXeZpf5LnquptaiMh8LrdDxMF2ryl0nTFiITLoVHmsowQvckMw5V18qPqNNIu4JV0iofz1sEJSJd3sNw+kr+BfXRJYRSpuiKdILZzj3AFB7LFA= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1701866645; c=relaxed/simple; bh=FCNN78xWPyTqUVt0jSqfaREo06JDEU4V8jcucOrGpck=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=iSXIX4BPkwYZpytf8gFsUHkJs39IDKy+u+a53tka5+fVLOvd0L2+KSD+whAahDtzffOfvi6iHeRvs9IE86gRw8HJEDulwf9ZV2lr3BurNlhJo88Prj86mNpBF0oE6Nqwt/msN8N+QbRRzVfmWSSYeYnuw1YgF9w54rL4B637TF0= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1701866642; x=1733402642; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=FCNN78xWPyTqUVt0jSqfaREo06JDEU4V8jcucOrGpck=; b=oHVYSLA369dhuFpQwanERp5zmxr6CF0XEg/epAoxoFlg2+iaLeXC8wNS ZZ2xAnhIAIhL6Q8syZBaOcEQC9HZcDthThqw1APFYGSAnvwihOeNaMbDz a20f4l6f7VnxcuB+tv6m1XmGIvGd5XD9yQ6WED4MKR7iri2ymhZyB7AZf bNGd6uHVA1kWLbWRit5Hnb86bLR9+8Z978JONIN283AWRzdGaPX16+Ab2 mwNufiJJHqCeImWiBkDUw8ghUZ4fazQYiryZmhUMrboZFt/wJM9aE4YTa AdqN2XyD2E8zOZ8XRhhe6TTSKRzpZuCreYKdvTlPvtzUDtM1bg6N26EP4 g==; X-IronPort-AV: E=McAfee;i="6600,9927,10915"; a="393784031" X-IronPort-AV: E=Sophos;i="6.04,255,1695711600"; d="scan'208";a="393784031" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Dec 2023 04:44:01 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10915"; a="774989717" X-IronPort-AV: E=Sophos;i="6.04,255,1695711600"; d="scan'208";a="774989717" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga007.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 06 Dec 2023 04:44:00 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 6 Dec 2023 04:44:00 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 6 Dec 2023 04:43:59 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Wed, 6 Dec 2023 04:43:59 -0800 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Wed, 6 Dec 2023 04:43:59 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aIvZnbWeXFBq7+noMB3/dzXWc0rxkgsCTrujtk1K5zVs0g0BEvb/Fx10vhOvHb7CBNiWxGgk02TT7oO0gHMABSOE6jnsysEemlt2o4ZP6tpCyXSsa+10EH+Itgisl5XBVcb/qChEhKilCMEr3NZ1ZvWcfPF5/L9hqzCJs/tI4N3Auh8HzIDsSMSq3YmN6k+iayRZOzArITTiSAEvtzvBP/eONWa1xWPV9cS6wh/1ZqzNzJ6srGS10b1I8A3vg7dhgmDKwvGvV9iCPvlMJiZf9DhVRL8Wdrlqhnz1c1M43+ieD4jbjpVgxGSjcFjOwUeYsMcqXOJomAD58LHq4rnbpQ== 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=FCNN78xWPyTqUVt0jSqfaREo06JDEU4V8jcucOrGpck=; b=fsMGrNsWp7vjcTgnMbBfw8qkNdn0rIw+roD9atTddrVTMwYUK2W5BzWSMBPKiUAFqwicPqalys+InglZfWVEpUPidHACJMZXV84Uxa6SfXs7/7BFKlxcCBtWsFdal8m2tFSVQsAoKn0toW3o446gl995TeQMn1dN0FVE92qRRzBWdAY1H7mcMTIIKCoUiz/L2dd0BasK92RaCF9lZzOhBdJn/ejoFVaqyE9udsiIwNt0ccqYzwQj2k8OViSk7S9CRLg3qTpvohLeQ1YxlmqVLMm74QI61+G6N3LX5NtM6s8z+KOtAeR7PTsLneDNjLHGueNgaKS3vHfL6jcO4sdmOg== 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 SJ0PR11MB5600.namprd11.prod.outlook.com (2603:10b6:a03:3ab::16) by DM6PR11MB4660.namprd11.prod.outlook.com (2603:10b6:5:2ad::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.25; Wed, 6 Dec 2023 12:43:51 +0000 Received: from SJ0PR11MB5600.namprd11.prod.outlook.com ([fe80::f925:7c4b:8747:4549]) by SJ0PR11MB5600.namprd11.prod.outlook.com ([fe80::f925:7c4b:8747:4549%3]) with mapi id 15.20.7068.025; Wed, 6 Dec 2023 12:43:51 +0000 From: "Cui, Lili" To: "Beulich, Jan" CC: "Lu, Hongjiu" , "binutils@sourceware.org" Subject: RE: [PATCH v3 2/9] Support APX GPR32 with rex2 prefix Thread-Topic: [PATCH v3 2/9] Support APX GPR32 with rex2 prefix Thread-Index: AQHaHqRUF5ALSrWeqk28dFlpHKRXyrCZYRWAgACUl5CAAf9igIAAIfqg Date: Wed, 6 Dec 2023 12:43:50 +0000 Message-ID: References: <20231124070213.3886483-1-lili.cui@intel.com> <20231124070213.3886483-2-lili.cui@intel.com> <14e62b44-2c5b-4a3b-a66a-cffa8f33578c@suse.com> <9578ce1e-233e-4c9a-8003-a619a685c236@suse.com> In-Reply-To: <9578ce1e-233e-4c9a-8003-a619a685c236@suse.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ0PR11MB5600:EE_|DM6PR11MB4660:EE_ x-ms-office365-filtering-correlation-id: c91994b7-a711-4d34-d922-08dbf658ffb0 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: V8yodO8FK/H2Tjk4wmwJkrjOCdxqqWwcC8IO4pMvvZoNtm3KawKS4LUGOYq8V7ko9aMQmRqYquremLfl8moqxdq/TPH1N/MkYQVSPDMhEDjko1PiCfCW7K1BmrbAuYariWVpSKoAsXSdnq+4BlEF6yMEXqigpcsC47BTDaID5zGWo0cMzd3iP9yqR1A8NWZXVEFUHw70c2jAMJwiEoFjuxV/LSvrciFGi9w+hKLnfq3jMjTmiyvk5/U3hOMiVkAXVQrlkLO2ReJQegQd0X50MQeKSAYtpQ6rntPLjLuxgMaDgL4E3jILz0aKWgW6vdWzI/2yX8T/zNn5V3SDLx7U2IEJyK6Z0A44V7y9t/m/ZelOFY0hLZV1u/nwHKiMlt+0nVLpaq9wO9yhNUnWLNQDrvJ32wXgqrfhoqNrZ121/AbClOcGYaZXGRhk+zUWgrLORMVkeylSq/VBtI06JQmL/wlTqSNZMQrXGXi+iUIuEyz1/ti+IvV0bb9YLZ8LmsJuJscPv/VruMiox9AfFfjTZNyimyjTiCKEJgqszPJGc+pvmkTlBNnJf08BB4xyL/Tu3EcnH3JQej8JYMacW5hl7PieWHNc6jgUjTk47AHUpElLLNia4GkM3BSVQGx2JR7a x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR11MB5600.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(346002)(366004)(376002)(396003)(136003)(230922051799003)(451199024)(1800799012)(186009)(64100799003)(122000001)(6916009)(66556008)(64756008)(66476007)(66446008)(66946007)(76116006)(38100700002)(478600001)(316002)(54906003)(53546011)(8676002)(71200400001)(7696005)(4326008)(8936002)(82960400001)(38070700009)(6506007)(5660300002)(41300700001)(2906002)(55016003)(83380400001)(86362001)(33656002)(9686003)(52536014);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WEU0NlY3Zm9oZzVvNWVpV0NPY2I1Yzc0eEtjWW5VS1QzQXZ6TE4zQnFIeGhC?= =?utf-8?B?NmhCOU1LSHpRTXk3OFpLcGlVTTN5cVA3OEtDb3M3K1dUQ1U4cXJKWVJIa2lX?= =?utf-8?B?a3Z4OXFjZTJzUzZXbjJZd2ZkOW5GZjdYWFFUTWxJcFRlTEJJdFVCN054MjN0?= =?utf-8?B?UFNVSjU5V1p6UCtYYno5V0tHZm9iQVh4blhqWS9ISitVQTRqeVU3RFE0K2FZ?= =?utf-8?B?YlprcFdTL0Vka0MycDRiaUQ1UHMxUEZKQzNXbmRrdXduaUdRTVFDRGNRS1RT?= =?utf-8?B?YzVqa1FWUFRKZnpDbUZ0L1VzallxbEJxYklwb1BVOHN4T0lmUEF1QlhGd0hj?= =?utf-8?B?RzdvUE9FYXVhZjNzOVVZcFZraTVoNVdab1JzSk9CVnhiSWxGV2lHWkJmTFNI?= =?utf-8?B?UUZvYnBxVThUV2lPM0tsQ05OWC9COFljM1ZIODFKbUo1S0JYSVNpdGU3dENx?= =?utf-8?B?ZGpOMk81UDBkbEkweHo4RlRHQlEvZm1uK3RuUFBwbTFBWmVuNmREYWJCZG9v?= =?utf-8?B?MkFRZ3oyRVAzZWFsdXd0QjhFZUp2dStIWnpRbXB4SGo5a3hucTdULy9wT211?= =?utf-8?B?YWZjdHRrRU1iUXoxS1ZZSjV2SHRYZ0hOUjZCbHFlYUZSem9PT01EYUFFVVpW?= =?utf-8?B?NGdBc2toMmw4c3hDVG1XYmRDLzJiUGJGWEZWMWwxTC80SUdHcmlBdCtzMGFD?= =?utf-8?B?dDdCNExNU3pqNnpDSStLeS9iK2Z0WHN0cW42UTRmYlR1aFo4b0hMbXNOdHJs?= =?utf-8?B?dVBDdW10V3JXSjZ6WDgra2xDZ1FteUIrWWpGY0VVaEdYdXJHWVQvT1JhM2lh?= =?utf-8?B?dW5tdVdyZDUvb2VaQTRneEoyYm9mRVMrM0w0emNjSmoyVndyRjMzRlZXc2JG?= =?utf-8?B?M2JCTHpJNGVGdENwd3AyUXF4d0pSVVE1bVdXRWVvOW43WmJ5a2lWTnB0WjhW?= =?utf-8?B?VDRJZ0pqRWtxVStBaEpMVDIwOEZxV0Z5emhaYlJOYkVlU0hJbnhmQkhBMWU4?= =?utf-8?B?Q01iNXBMWEZVM0hDZGc1QTZoU2swOTdOcitTT0dLbFI5MGxjNm1HRmF0WURt?= =?utf-8?B?YkJqQ3Vhd0IvMnVxZXVKM1FFTXJpc3ZCS2dodW9kVDZQKzdmMmJYVmJZS3Z0?= =?utf-8?B?d2F6M0tUa29KclA4em1Xd0ZoS3p4elRyNnI0REZSVXRGRWRMeE9MelFMQVRQ?= =?utf-8?B?cytqQUtPL2FTdmhySXpTc0xjQ0o4cUxvK2NSYkpDNjBVelg5dmYvMklMUlFO?= =?utf-8?B?bWFydWNVdG5lc0RxOGxZSWpGaEdpR1grdEhlTVdvQzVpdTUwSUcxVkVpajA5?= =?utf-8?B?VEJzMjZ0K3JDUUFib1hHaFpBOVkrK1pvQ2p4QXBvb2hUK1hhbERyZ2dubWts?= =?utf-8?B?RmRMNmEyeGpWN0srQlc5VXo0U1ZIMHRPdTArNWl3aFJ3N0hlL24zQ2xJb3Z2?= =?utf-8?B?QlJ1VzFRUUhoQ1Yyek4xeWVJRkkvamxsNEJLY0ZQMHZDODJQaVZNK09Sb2sv?= =?utf-8?B?MUxMdlRjeW9lUVQwN3puNk9iYXV3NklYVzUvdTJvTHR1NTJ5cmhsS3BVZjJW?= =?utf-8?B?OUtlQkJyR0ZlcG05dVRabFRxcUdsOEVZM2MrUzIxL1laVzRYMkcvWTVlREJR?= =?utf-8?B?QmNqK3hQZ1d0bzZtWlo2OFpCNG5VYjBUL3llM2JUbkFhalYrQTdVVHkzRkdw?= =?utf-8?B?aTZ5RHQyRlpWcVNpcEsrWHNlYlExRDI1Z2trWW9JQTBVYkMvTGZsSzlUUFNi?= =?utf-8?B?bjdMNjhrSGNFaW5DUEs0MTU1NEppRllhTWlCdk9MdWp6R1pTVzJkZEpKT1N0?= =?utf-8?B?SnlxRnhUNnVQT3JDY0xwc3J4cE5jNXdMRVIreWlBcmVoRU5iem9qd3ZFbW9W?= =?utf-8?B?enFEeml6RG91Uk1keGN6Z1FyNzBveEVVRWpPeGs5bFdGLzNhZUUrUTZiS0l3?= =?utf-8?B?R0dqKzI1SkJZV0ZTVkJPa3ZXbkJyUXFTMzQ1Z2FtV3FiZ3RPWm9hc2k2Qlpl?= =?utf-8?B?VjlFTXZ4TzI4aFVaWlZFSzBWdTdvWHVNeWgvaTJtd0ZMdzYwZFBOdTVrYVpu?= =?utf-8?B?ejZSYmJibFAxUEd0eVFKay9VZDN5Wm9GNW1TZ016Y3VNSThPUHlqaGNEb2M0?= =?utf-8?B?ZmxVbWZIczdCd3BISVg2NlVFUW93R0NiWGtQRDdlWVExcEdZOW94dW1qSkps?= =?utf-8?Q?9aVWV/tzgX49ziYGFewI49g=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB5600.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c91994b7-a711-4d34-d922-08dbf658ffb0 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Dec 2023 12:43:51.0090 (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: vxzreks+2gXuMykkXykNUuzegBNvuNFx+hWu/YqF0+6fJMVK10i4YsbzuG0uMvjpqOgCmvPFJpwT1xYZl8xY9w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4660 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: PiBPbiAwNS4xMi4yMDIzIDE0OjMxLCBDdWksIExpbGkgd3JvdGU6DQo+ID4+IE9uIDI0LjExLjIw MjMgMDg6MDIsIEN1aSwgTGlsaSB3cm90ZToNCj4gPj4+IEBAIC00MTIwLDYgKzQxMzQsMjEgQEAg YnVpbGRfZXZleF9wcmVmaXggKHZvaWQpDQo+ID4+PiAgICAgIGkudmV4LmJ5dGVzWzNdIHw9IGku bWFzay5yZWctPnJlZ19udW07ICB9DQo+ID4+Pg0KPiA+Pj4gKy8qIEJ1aWxkICgyIGJ5dGVzKSBy ZXgyIHByZWZpeC4NCj4gPj4+ICsgICB8IEQ1aCB8DQo+ID4+PiArICAgfCBtIHwgUjQgWDQgQjQg fCBXIFIgWCBCIHwNCj4gPj4+ICsqLw0KPiA+Pj4gK3N0YXRpYyB2b2lkDQo+ID4+PiArYnVpbGRf cmV4Ml9wcmVmaXggKHZvaWQpDQo+ID4+PiArew0KPiA+Pj4gKyAgLyogUmV4MiByZXVzZXMgaS52 ZXggYmVjYXVzZSB0aGV5IGhhbmRsZSBpLnRtLm9wY29kZV9zcGFjZSB0aGUNCj4gPj4+ICtzYW1l LiAgKi8NCj4gPj4NCj4gPj4gSG93IGRvIHRoZXkgaGFuZGxlIGl0IHRoZSBzYW1lPyAoQWxzbyBJ IGRvbid0IHRoaW5rIHRoaXMgaXMgdXNlZnVsIGFzDQo+ID4+IGEgY29kZSBjb21tZW50OyBpdCBp bnN0ZWFkIGJlbG9uZ3MgaW4gdGhlIGRlc2NyaXB0aW9uIGltby4pDQo+ID4+DQo+ID4NCj4gPiBN b3ZlZCB0aGUgY29tbWVudCB0byB0aGUgZnVuY3Rpb25zIGRlc2NyaXB0aW9uLg0KPiA+DQo+ID4g LyogQnVpbGQgKDIgYnl0ZXMpIHJleDIgcHJlZml4Lg0KPiA+ICAgIHwgRDVoIHwNCj4gPiAgICB8 IG0gfCBSNCBYNCBCNCB8IFcgUiBYIEIgfA0KPiA+DQo+ID4gICAgUmV4MiByZXVzZXMgaS52ZXgg YXMgdGhleSBoYW5kbGUgaS50bS5vcGNvZGVfc3BhY2UgdGhlIHNhbWUgd2F5Lg0KPiA+ICovIHN0 YXRpYyB2b2lkIGJ1aWxkX3JleDJfcHJlZml4ICh2b2lkKQ0KPiA+DQo+ID4NCj4gPiBJbiBmdW5j dGlvbiAib3V0cHV0X2luc24iLCAgc29tZSBoYW5kbGUgbGlrZSB0aGlzLg0KPiA+DQo+ID4gICAg ICAgaWYgKCFpLnZleC5sZW5ndGgpDQo+ID4gICAgICAgICBzd2l0Y2ggKGkudG0ub3Bjb2RlX3Nw YWNlKQ0KPiA+ICAgICAgICAgICB7DQo+ID4gICAgICAgICAgIGNhc2UgU1BBQ0VfQkFTRToNCj4g PiAgICAgICAgICAgICBicmVhazsNCj4gPiAgICAgICAgICAgY2FzZSBTUEFDRV8wRjoNCj4gPiAg ICAgICAgICAgICArK2o7DQo+ID4gICAgICAgICAgICAgYnJlYWs7DQo+ID4gICAgICAgICAgIGNh c2UgU1BBQ0VfMEYzODoNCj4gPiAgICAgICAgICAgY2FzZSBTUEFDRV8wRjNBOg0KPiA+ICAgICAg ICAgICAgIGogKz0gMjsNCj4gPiAgICAgICAgICAgICBicmVhazsNCj4gPiAgICAgICAgICAgZGVm YXVsdDoNCj4gPiAgICAgICAgICAgICBhYm9ydCAoKTsNCj4gPiAgICAgICAgICAgfQ0KPiA+IC4u Li4uDQo+ID4gICAgICAgICAgaWYgKCFpLnZleC5sZW5ndGgNCj4gPiAgICAgICAgICAgICAgICYm IGkudG0ub3Bjb2RlX3NwYWNlICE9IFNQQUNFX0JBU0UpDQo+ID4gICAgICAgICAgICAgew0KPiA+ ICAgICAgICAgICAgICAgKnArKyA9IDB4MGY7DQo+ID4gICAgICAgICAgICAgICBpZiAoaS50bS5v cGNvZGVfc3BhY2UgIT0gU1BBQ0VfMEYpDQo+ID4gICAgICAgICAgICAgICAgICpwKysgPSBpLnRt Lm9wY29kZV9zcGFjZSA9PSBTUEFDRV8wRjM4DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICA/ IDB4MzggOiAweDNhOw0KPiA+ICAgICAgICAgICAgIH0NCj4gDQo+IE9oLCBJIHNlZS4gVGhhdCdz IHByZXR0eSByZW1vdGUuIEhvdyBhYm91dCByZXBsYWNpbmcgInRoZSBzYW1lIHdheSI/DQo+IFBl cmhhcHMNCj4gIlJleDIgcmV1c2VzIGkudmV4IGFzIHRoZXkgYm90aCBlbmNvZGUgaS50bS5vcGNv ZGVfc3BhY2UgaW4gdGhlaXIgcHJlZml4ZXMiPw0KPiANCg0KRG9uZS4NCg0KPiBXaGlsZSBpbiB0 aGF0IGZvcm0gaXQncyBmaW5lIHRvIHJlbWFpbiBpbiBhIGNvZGUgY29tbWVudCwganVzdCBhIGdl bmVyYWwNCj4gY2xhcmlmaWNhdGlvbjogV2hlbiBJIHNheSBzb21ldGhpbmcgd2FudHMgc2F5aW5n IGluIHRoZSAiZGVzY3JpcHRpb24iLCBpdCdzDQo+IChhbG1vc3QpIGFsd2F5cyB0aGF0IEkgbWVh biB0aGUgcGF0Y2ggZGVzY3JpcHRpb24sIG5vdCBhbnl0aGluZyBlbHNlLg0KPiANCg0KSSBzZWUu DQoNCj4gPj4gSSBkaWQgY29tbWVudCBvbiwgaW4gcGFydGljdWxhciwgdGhlIDgtYml0IHJlZ2lz dGVyIGNvdW50cyBiZWZvcmUuDQo+ID4+IEFmYWljdCB0aGUgY29tbWVudHMgYWJvdmUgYXJlIG5l dmVydGhlbGVzcyB1bmNoYW5nZWQgYW5kIGhlbmNlIHN0aWxsDQo+ID4+IG5vdCByZWFsbHkgY29y cmVjdC4NCj4gPj4NCj4gPg0KPiA+IENoYW5nZWQgdG8gOg0KPiA+DQo+ID4gICAgICAgaWYgKGZs YWdfY29kZSA9PSBDT0RFXzY0QklUIHx8IGJhc2VfcmVnbnVtIDwgNCkNCj4gPiAgICAgICAgIHsN Cj4gPiAgICAgICAgICAgaS50eXBlc1sxXS5iaXRmaWVsZC5ieXRlID0gMTsNCj4gPiAgICAgICAg ICAgLyogSWdub3JlIHRoZSBzdWZmaXguICAqLw0KPiA+ICAgICAgICAgICBpLnN1ZmZpeCA9IDA7 DQo+ID4gICAgICAgICAgIC8qIENvbnZlcnQgdG8gYnl0ZSByZWdpc3RlcnMuIDgtYml0IHJlZ2lz dGVycyBhcmUgc3BlY2lhbCwNCj4gPiAgICAgICAgICAgICAgUmVnUmV4NjQgYW5kIG5vbi1SZWdS ZXg2NCBlYWNoIGhhdmUgOCByZWdpc3RlcnMuICAqLw0KPiA+ICAgICAgICAgICBpZiAoaS50eXBl c1sxXS5iaXRmaWVsZC53b3JkKQ0KPiA+ICAgICAgICAgICAgIC8qIDMyIChvciA0MCkgOC1iaXQg cmVnaXN0ZXJzLiAgKi8NCj4gPiAgICAgICAgICAgICBqID0gMzI7DQo+ID4gICAgICAgICAgIGVs c2UgaWYgKGkudHlwZXNbMV0uYml0ZmllbGQuZHdvcmQpDQo+ID4gICAgICAgICAgICAgLyogMzIg KG9yIDQwKTgtYml0IHJlZ2lzdGVycyArIDMyIDE2LWJpdCByZWdpc3RlcnMuICAqLw0KPiANCj4g Tml0OiBNaXNzaW5nIGJsYW5rLg0KPiANCg0KRG9uZS4NCg0KPiA+ICAgICAgICAgICAgIGogPSA2 NDsNCj4gPiAgICAgICAgICAgZWxzZQ0KPiA+ICAgICAgICAgICAgIC8qIDMyIChvciA0MCkgOC1i aXQgcmVnaXN0ZXJzICsgMzIgMTYtYml0IHJlZ2lzdGVycw0KPiA+ICAgICAgICAgICAgICAgICsg MzIgMzItYml0IHJlZ2lzdGVycy4gICovDQo+ID4gICAgICAgICAgICAgaiA9IDk2Ow0KPiA+DQo+ ID4gICAgICAgICAgIGlmICghKGkub3BbMV0ucmVncy0+cmVnX2ZsYWdzICYgKFJlZ1JleCB8IFJl Z1JleDIpKSAmJiBiYXNlX3JlZ251bSA8DQo+IDQpDQo+ID4gICAgICAgICAgICAgaiArPSA4Ow0K PiA+ICAgICAgICAgICBpLm9wWzFdLnJlZ3MgLT0gajsNCj4gPiAgICAgICAgIH0NCj4gDQo+IEkg d29uJ3QgaW5zaXN0IG9uIGZ1cnRoZXIgY2hhbmdlcywgYnV0IGltbyBhcyB5b3UncmUgYWRkaW5n IGNvbW1lbnRzLCBhbHNvDQo+IGFkZGluZyBhIGNvbW1lbnQgdG8gdGhpcyBsYXN0IGlmKCkgKHdo aWNoIGZpbmFsbHkgdGFrZXMgY2FyZSBvZiB0aGUgOC1iaXQgcmVnDQo+IHNwZWNpYWwgY2FzZSkg d291bGQgYmUgYWR2aXNhYmxlLg0KPiANCg0KQWRkZWQuDQoNCiAgICAgICAgICAvKiBJbiA2NC1i aXQgbW9kZSwgdGhlIGZvbGxvd2luZyBieXRlIHJlZ2lzdGVycyBjYW5ub3QgYmUgYWNjZXNzZWQN CiAgICAgICAgICAgICBpZiB1c2luZyB0aGUgUmV4IGFuZCBSZXgyIHByZWZpeDogQUgsIEJILCBD SCwgREggKi8NCiAgICAgICAgICBpZiAoIShpLm9wWzFdLnJlZ3MtPnJlZ19mbGFncyAmIChSZWdS ZXggfCBSZWdSZXgyKSkgJiYgYmFzZV9yZWdudW0gPCA0KQ0KICAgICAgICAgICAgaiArPSA4Ow0K DQo+ID4+PiArLyogQ2hlY2sgaWYgRWdwcnMgb3BlcmFuZHMgYXJlIHZhbGlkIGZvciB0aGUgaW5z dHJ1Y3Rpb24uICAqLw0KPiA+Pj4gKw0KPiA+Pj4gK3N0YXRpYyBpbnQNCj4gPj4+ICtjaGVja19F Z3ByT3BlcmFuZHMgKGNvbnN0IGluc25fdGVtcGxhdGUgKnQpIHsNCj4gPj4+ICsgIGlmICghdC0+ b3Bjb2RlX21vZGlmaWVyLm5vZWdwcikNCj4gPj4+ICsgICAgcmV0dXJuIDA7DQo+ID4+PiArDQo+ ID4+PiArICBmb3IgKHVuc2lnbmVkIGludCBvcCA9IDA7IG9wIDwgaS5vcGVyYW5kczsgb3ArKykN Cj4gPj4+ICsgICAgew0KPiA+Pj4gKyAgICAgIGlmIChpLnR5cGVzW29wXS5iaXRmaWVsZC5jbGFz cyAhPSBSZWcNCj4gPj4+ICsJICAvKiBTcGVjaWFsIGNhc2UgZm9yICglZHgpIHdoaWxlIGRvaW5n IGlucHV0L291dHB1dCBvcCAqLw0KPiA+Pj4gKwkgIHx8IGkuaW5wdXRfb3V0cHV0X29wZXJhbmQp DQo+ID4+DQo+ID4+IERpZG4ndCB3ZSBhZ3JlZSB0aGF0IHRoaXMgZXh0cmEgY29uZGl0aW9uIGlz bid0IG5lY2Vzc2FyeSwgb25jZSB0aGUNCj4gPj4gcHJvZHVjZXIgc2l0ZSBjb3JyZWN0bHkgdXBk YXRlcyBhbGwgc3RhdGUgKHdoaWNoIHdhcyBzdXBwb3NlZCB0byBiZQ0KPiA+PiBkb25lIGluIGEg c21hbGwgcHJlcmVxIHBhdGNoKT8NCj4gPj4NCj4gPg0KPiA+IEkgdHJpZWQgYWRkaW5nICJVbnNw ZWNpZmllZCB8IEJhc2VJbmRleCIgdG8gdGhlIEluT3V0UG9ydFJlZywgdGhlbiBzb21lDQo+IHJl bGF0ZWQgaW5zdHJ1Y3Rpb25zIGhhZCB0d28gbWVtb3J5IG9wZXJhbmRzLCBzbyBpdCByYWlzZWQg YSBsb3Qgb2YgaW52YWxpZA0KPiB0ZXN0IGNhc2UgZmFpbCwgYW5kIG1vcmUgdWdseSBjb2RlIG5l ZWRlZCB0byBiZSBhZGRlZC4gSW4gdGhlIGVuZCwgSSBmZWx0IHRoYXQNCj4gdGhpcyBzaW1wbGUg bW9kaWZpY2F0aW9uIG1pZ2h0IGJlIGJldHRlci4NCj4gDQo+IENoYW5naW5nIEluT3V0UG9ydFJl ZyBvZiBjb3Vyc2UgaXNuJ3QgZ29pbmcgdG8gYmUgZWFzeS4gQnV0IHRoYXQgYWxzbyB3YXNuJ3QN Cj4gd2hhdCB3ZSBoYWQgZGlzY3Vzc2VkLiBJbnN0ZWFkIChJIHRob3VnaHQpIHdlIGFncmVlZCBv biAuLi4NCj4gDQo+ID4gQEAgLTEzMTM3LDYgKzEzMTM3LDcgQEAgaTM4Nl9hdHRfb3BlcmFuZCAo Y2hhciAqb3BlcmFuZF9zdHJpbmcpDQo+ID4gICAgICAgICAgICYmICFvcGVyYW5kX3R5cGVfY2hl Y2sgKGkudHlwZXNbdGhpc19vcGVyYW5kXSwgZGlzcCkpDQo+ID4gICAgICAgICB7DQo+ID4gICAg ICAgICAgIGkudHlwZXNbdGhpc19vcGVyYW5kXSA9IGkuYmFzZV9yZWctPnJlZ190eXBlOw0KPiA+ ICsgICAgICAgICBpLnR5cGVzW3RoaXNfb3BlcmFuZF0uYml0ZmllbGQuY2xhc3MgPSAwOw0KPiA+ ICAgICAgICAgICBpLmlucHV0X291dHB1dF9vcGVyYW5kID0gdHJ1ZTsNCj4gPiAgICAgICAgICAg cmV0dXJuIDE7DQo+IA0KPiBhbWVuZGluZyB0aGlzIGNvZGUgdG8gYWxzbyBjb3JyZWN0bHkgc2V0 IGkub3BbXS5yZWdzLiBQZXJoYXBzIGl0IHdvdWxkIGFsc28gYmUNCj4gYmVzdCB0byBhY3R1YWxs eSBjbGVhciBpLmJhc2VfcmVnIChmb3IgdGhlcmUgbm90IGJlaW5nIGFueSBtZW1vcnkgb3BlcmFu ZCkuDQo+IChGVEFPRDogQWxsIG9mIHRoaXMgaW4gYSBzZXBhcmF0ZSBwcmVyZXEgcGF0Y2gsIG5v dCBoZXJlLiBUaGUgY29kZSBjcmVhdGluZw0KPiBpbmNvbnNpc3RlbnQgc3RhdGUgaGFzIGJlZW4g YSBbbGF0ZW50XSBidWcgZm9yIGEgbG9uZyB0aW1lLikNCj4gDQoNCkFkZGVkIGkuYmFzZV9yZWcg PSBOVUxMLiBKdXN0IGRpc2N1c3NpbmcgaXQgaGVyZSwgSSdsbCBjcmVhdGUgYSBuZXcgcGF0Y2gg Zm9yIGl0Lg0KDQpAQCAtMTMwMTYsNiArMTMwMTYsOCBAQCBpMzg2X2F0dF9vcGVyYW5kIChjaGFy ICpvcGVyYW5kX3N0cmluZykNCiAgICAgICAgICAmJiAhb3BlcmFuZF90eXBlX2NoZWNrIChpLnR5 cGVzW3RoaXNfb3BlcmFuZF0sIGRpc3ApKQ0KICAgICAgICB7DQogICAgICAgICAgaS50eXBlc1t0 aGlzX29wZXJhbmRdID0gaS5iYXNlX3JlZy0+cmVnX3R5cGU7DQorICAgICAgICAgaS50eXBlc1t0 aGlzX29wZXJhbmRdLmJpdGZpZWxkLmNsYXNzID0gMDsNCisgICAgICAgICBpLmJhc2VfcmVnID0g TlVMTDsNCiAgICAgICAgICBpLmlucHV0X291dHB1dF9vcGVyYW5kID0gdHJ1ZTsNCiAgICAgICAg ICByZXR1cm4gMTsNCiAgICAgICAgfQ0KDQo+ID4+PiAtLS0gYS9nYXMvZG9jL2MtaTM4Ni50ZXhp DQo+ID4+PiArKysgYi9nYXMvZG9jL2MtaTM4Ni50ZXhpDQo+ID4+PiBAQCAtMjE3LDYgKzIxNyw3 IEBAIGFjY2VwdCB2YXJpb3VzIGV4dGVuc2lvbiBtbmVtb25pY3MuICBGb3INCj4gPj4+IGV4YW1w bGUsIEBjb2Rle2F2eDEwLjEvMjU2fSwgIEBjb2Rle2F2eDEwLjEvMTI4fSwgIEBjb2Rle3VzZXJf bXNyfSwNCj4gPj4+ICtAY29kZXthcHhfZn0sDQo+ID4+PiAgQGNvZGV7YW14X2ludDh9LA0KPiA+ Pj4gIEBjb2Rle2FteF9iZjE2fSwNCj4gPj4+ICBAY29kZXthbXhfZnAxNn0sDQo+ID4+PiBAQCAt OTgzLDYgKzk4NCw5IEBAIERpZmZlcmVudCBlbmNvZGluZyBvcHRpb25zIGNhbiBiZSBzcGVjaWZp ZWQgdmlhDQo+ID4+IHBzZXVkbyBwcmVmaXhlczoNCj4gPj4+ICBpbnN0cnVjdGlvbnMgKHg4Ni02 NCBvbmx5KS4gIE5vdGUgdGhhdCB0aGlzIGRpZmZlcnMgZnJvbSB0aGUNCj4gPj4+IEBzYW1we3Jl eH0gIHByZWZpeCB3aGljaCBnZW5lcmF0ZXMgUkVYIHByZWZpeCB1bmNvbmRpdGlvbmFsbHkuDQo+ ID4+Pg0KPiA+Pj4gK0BpdGVtDQo+ID4+PiArQHNhbXB7QHtyZXgyQH19IC0tIGVuY29kZSB3aXRo IFJFWDIgcHJlZml4DQo+ID4+DQo+ID4+IFRoaXMgaXNuJ3QgaW4gbGluZSB3aXRoIHdoYXQncyBz YWlkIGZvciB7cmV4fS4gSWlyYyB3ZSB3ZXJlIGluDQo+ID4+IGFncmVlbWVudCB0aGF0IHdlIHdh bnQgYm90aCB0byBiZWhhdmUgY29uc2lzdGVudGx5LiBJbiB3aGljaCBjYXNlDQo+ID4+IGRvY3Vt ZW50YXRpb24gYWxzbyBuZWVkcyB0byBkZXNjcmliZSB0aGVtIGNvbnNpc3RlbnRseS4NCj4gPj4N Cj4gPg0KPiA+IENoYW5nZWQgdG8NCj4gPg0KPiA+IEBpdGVtDQo+ID4gQHNhbXB7QHtyZXgyQH19 IC0tIHByZWZlciBSRVgyIHByZWZpeCBmb3IgaW50ZWdlciBhbmQgbGVnYWN5IHZlY3Rvcg0KPiA+ IGluc3RydWN0aW9ucyAoQVBYX0Ygb25seSkuICBOb3RlIHRoYXQgdGhpcyBkaWZmZXJzIGZyb20g dGhlDQo+ID4gQHNhbXB7cmV4Mn0gcHJlZml4IHdoaWNoIGdlbmVyYXRlcyBSRVgyIHByZWZpeCB1 bmNvbmRpdGlvbmFsbHkuDQo+IA0KPiBFeGNlcHQgdGhlcmUncyBubyAicmV4MiIgcHJlZml4IGFj Y29yZGluZyB0byB0aGUgcHJlc2VudCBpbXBsZW1lbnRhdGlvbi4NCj4NCiANClJlbW92ZSB0aGVt IGZvciBjdXJyZW50IGltcGxlbWVudGF0aW9uLg0KDQpAaXRlbQ0KQHNhbXB7QHtyZXgyQH19IC0t IHByZWZlciBSRVgyIHByZWZpeCBmb3IgaW50ZWdlciBhbmQgbGVnYWN5IHZlY3Rvcg0KaW5zdHJ1 Y3Rpb25zIChBUFhfRiBvbmx5KS4NCg0KPiA+Pj4gLS0tIGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvaTM4 Ni94ODYtNjQtcHNldWRvcy1iYWQucw0KPiA+Pj4gKysrIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvaTM4 Ni94ODYtNjQtcHNldWRvcy1iYWQucw0KPiA+Pj4gQEAgLTUsMyArNSw2MSBAQCBwc2V1ZG9zOg0K PiA+Pj4gIAl7cmV4fSB2bW92YXBzICV4bW03LCV4bW0yDQo+ID4+PiAgCXtyZXh9IHZtb3ZhcHMg JXhtbTE3LCV4bW0yDQo+ID4+PiAgCXtyZXh9IHJvcnggJDcsJWVheCwlZWJ4DQo+ID4+PiArCXty ZXgyfSB2bW92YXBzICV4bW03LCV4bW0yDQo+ID4+PiArCXtyZXgyfSB4c2F2ZSAoJXJheCkNCj4g Pj4+ICsJe3JleDJ9IHhzYXZlcyAoJWVjeCkNCj4gPj4+ICsJe3JleDJ9IHhzYXZlczY0ICglZWN4 KQ0KPiA+Pj4gKwl7cmV4Mn0geHNhdmVjICglZWN4KQ0KPiA+Pj4gKwl7cmV4Mn0geHJzdG9ycyAo JWVjeCkNCj4gPj4+ICsJe3JleDJ9IHhyc3RvcnM2NCAoJWVjeCkNCj4gPj4+ICsNCj4gPj4+ICsJ I0FsbCBvcGNvZGVzIGluIHRoZSByb3cgMHhhKiBwcmVmaXhlZCBSRVgyIGFyZSBpbGxlZ2FsLg0K PiA+Pj4gKwkje3JleDJ9IHRlc3QgKDB4YTgpIGlzIGEgc3BlY2lhbCBjYXNlLCBpdCB3aWxsIHJl bWFwIHRvIHRlc3QgKDB4ZjYpDQo+ID4+PiArCXtyZXgyfSBtb3YgICAgMHg5MDkwOTA5MCwlYWwN Cj4gPj4+ICsJe3JleDJ9IG1vdmFicyAweDEsJWFsDQo+ID4+PiArCXtyZXgyfSBjbXBzYiAgJWVz OiglZWRpKSwlZHM6KCVlc2kpDQo+ID4+PiArCXtyZXgyfSBsb2RzYg0KPiA+Pj4gKwl7cmV4Mn0g bG9kcyAgICVkczooJWVzaSksJWFsDQo+ID4+PiArCXtyZXgyfSBsb2RzYiAgICglZXNpKQ0KPiA+ Pj4gKwl7cmV4Mn0gbW92cw0KPiA+Pj4gKwl7cmV4Mn0gbW92cyAgICglZXNpKSwgKCVlZGkpDQo+ ID4+PiArCXtyZXgyfSBzY2FzbA0KPiA+Pj4gKwl7cmV4Mn0gc2NhcyAgICVlczooJWVkaSksJWVh eA0KPiA+Pj4gKwl7cmV4Mn0gc2Nhc2IgICAoJWVkaSkNCj4gPj4+ICsJe3JleDJ9IHN0b3NiDQo+ ID4+PiArCXtyZXgyfSBzdG9zYiAgICglZWRpKQ0KPiA+Pj4gKwl7cmV4Mn0gc3RvcyAgICVlYXgs JWVzOiglZWRpKQ0KPiA+Pj4gKw0KPiA+Pj4gKwkjQWxsIG9wY29kZXMgaW4gdGhlIHJvdyAweDcq IHByZWZpeGVkIFJFWDIgYXJlIGlsbGVnYWwuDQo+ID4+DQo+ID4+IFRoaXMgYWxzbyBjb3ZlcnMg bWFwIDEgcm93IDgsIGRvZXNuJ3QgaXQ/DQo+ID4+DQo+ID4NCj4gPiBObywgSSBkaWRuJ3QgZmlu ZCAweGY4KiBpbiBvcGNvZGUgdGFibGUuDQo+IA0KPiBBc3N1bWluZyAoYWdhaW4pIHlvdSBtZWFu IDB4MGYgMHg4KiwgaG93IGRpZCB5b3Ugbm90IGZpbmQgaXQ/IE9yIHdhaXQsDQo+IGRlcGVuZHMg b24gd2hhdCAib3Bjb2RlIHRhYmxlIiBoZXJlIG1lYW5zOiBUaGUgbWFudWFsJ3Mgb3Igb3Bjb2Rl cy9pMzg2LQ0KPiBvcGMudGJsPyBUaGUgbGF0dGVyIG9mIGNvdXJzZSBkb2Vzbid0IGhhdmUgdGhl bSwgYXMgdGhleSdyZSAuLi4NCj4gDQo+ID4+PiArCXtyZXgyfSBqbyAgICAgLisyLTB4NzANCj4g Pj4+ICsJe3JleDJ9IGpubyAgICAuKzItMHg3MA0KPiA+Pj4gKwl7cmV4Mn0gamIgICAgIC4rMi0w eDcwDQo+ID4+PiArCXtyZXgyfSBqYWUgICAgLisyLTB4NzANCj4gPj4+ICsJe3JleDJ9IGplICAg ICAuKzItMHg3MA0KPiA+Pj4gKwl7cmV4Mn0gam5lICAgIC4rMi0weDcwDQo+ID4+PiArCXtyZXgy fSBqYmUgICAgLisyLTB4NzANCj4gPj4+ICsJe3JleDJ9IGphICAgICAuKzItMHg3MA0KPiA+Pj4g Kwl7cmV4Mn0ganMgICAgIC4rMi0weDcwDQo+ID4+PiArCXtyZXgyfSBqbnMgICAgLisyLTB4NzAN Cj4gPj4+ICsJe3JleDJ9IGpwICAgICAuKzItMHg3MA0KPiA+Pj4gKwl7cmV4Mn0gam5wICAgIC4r Mi0weDcwDQo+ID4+PiArCXtyZXgyfSBqbCAgICAgLisyLTB4NzANCj4gPj4+ICsJe3JleDJ9IGpn ZSAgICAuKzItMHg3MA0KPiA+Pj4gKwl7cmV4Mn0gamxlICAgIC4rMi0weDcwDQo+ID4+PiArCXty ZXgyfSBqZyAgICAgLisyLTB4NzANCj4gDQo+IC4uLiB0aGUgZGlzcDMyL2Rpc3AxNiBmb3JtcyBv ZiB0aGVzZSBicmFuY2hlcywgd2hpY2ggYXJlIGNyZWF0ZWQgb25seSBkdXJpbmcNCj4gcmVsYXhh dGlvbi4NCj4NCg0KT2gsICBJIHNlZSwgIEkgZm91bmQgdGhlbSBpbiBzZG0gYW5kIGFkZGVkIHRl c3RjYXNlIGZvciB0aGVtLg0KDQogICAgICAgICNBbGwgb3Bjb2RlcyBpbiB0aGUgcm93IDB4OCog KG1hcDEpIHByZWZpeGVkIFJFWDIgYXJlIGlsbGVnYWwuDQogICAgICAgIHtyZXgyfSBqbyAgICAg Lis2KzB4OTA5MDkwOTANCiAgICAgICAge3JleDJ9IGpubyAgICAuKzYrMHg5MDkwOTA5MA0KICAg ICAgICB7cmV4Mn0gamIgICAgIC4rNisweDkwOTA5MDkwDQogICAgICAgIHtyZXgyfSBqYWUgICAg Lis2KzB4OTA5MDkwOTANCiAgICAgICAge3JleDJ9IGplICAgICAuKzYrMHg5MDkwOTA5MA0KICAg ICAgICB7cmV4Mn0gam5lICAgIC4rNisweDkwOTA5MDkwDQogICAgICAgIHtyZXgyfSBqYmUgICAg Lis2KzB4OTA5MDkwOTANCiAgICAgICAge3JleDJ9IGphICAgICAuKzYrMHg5MDkwOTA5MA0KICAg ICAgICB7cmV4Mn0ganMgICAgIC4rNisweDkwOTA5MDkwDQogICAgICAgIHtyZXgyfSBqbnMgICAg Lis2KzB4OTA5MDkwOTANCiAgICAgICAge3JleDJ9IGpwICAgICAuKzYrMHg5MDkwOTA5MA0KICAg ICAgICB7cmV4Mn0gam5wICAgIC4rNisweDkwOTA5MDkwDQogICAgICAgIHtyZXgyfSBqbCAgICAg Lis2KzB4OTA5MDkwOTANCiAgICAgICAge3JleDJ9IGpnZSAgICAuKzYrMHg5MDkwOTA5MA0KICAg ICAgICB7cmV4Mn0gamxlICAgIC4rNisweDkwOTA5MDkwDQogICAgICAgIHtyZXgyfSBqZyAgICAg Lis2KzB4OTA5MDkwOTANCiANCj4gPj4+ICsgIC8qIEFsbCBvcGNvZGVzIGxpc3RlZCBtYXAwIDB4 NCosIDB4NyosIDB4YSosIDB4ZSogYW5kIG1hcDEgMHgzKiwgMHg4Kg0KPiA+Pj4gKyAgICAgYXJl IHJlc2VydmVkIHVuZGVyIFJFWDIgYW5kIHRyaWdnZXJzICNVRCB3aGVuIHByZWZpeGVkIHdpdGgN Cj4gPj4+ICsgUkVYMiAqLyAgaWYgKHNwYWNlID09IDApDQo+ID4+PiArICAgIHN3aXRjaCAob3Bj b2RlID4+IDQpDQo+ID4+DQo+ID4+IEJvdGggaGVyZSBhbmQgLi4uDQo+ID4+DQo+ID4+PiArICAg ICAgew0KPiA+Pj4gKyAgICAgIGNhc2UgMHg0Og0KPiA+Pj4gKyAgICAgIGNhc2UgMHg3Og0KPiA+ Pj4gKyAgICAgIGNhc2UgMHhBOg0KPiA+Pj4gKyAgICAgIGNhc2UgMHhFOg0KPiA+Pj4gKwlyZXR1 cm4gdHJ1ZTsNCj4gPj4+ICsgICAgICBkZWZhdWx0Og0KPiA+Pj4gKwlyZXR1cm4gZmFsc2U7DQo+ ID4+PiArICAgIH0NCj4gPj4+ICsNCj4gPj4+ICsgIGlmIChzcGFjZSA9PSBTUEFDRV8wRikNCj4g Pj4+ICsgICAgc3dpdGNoIChvcGNvZGUgPj4gNCkNCj4gPj4NCj4gPj4gLi4uIGhlcmUsIGRvbid0 IHlvdSBhbHNvIG5lZWQgdG8gbWFzayBvZmYgZnVydGhlciBiaXRzPyBUaGVyZSBhcmUNCj4gPj4g cXVpdGUgYSBmZXcgb3Bjb2RlcyB3aGljaCBoYXZlIGEga2luZC1vZiBNb2RSL00gYnl0ZSBlbmNv ZGVkIGRpcmVjdGx5DQo+ID4+IGluIHRoZSBvcGNvZGUsIGZvciBleGFtcGxlLg0KPiA+Pg0KPiA+ DQo+ID4gVGhhbmtzIGZvciByZW1pbmRpbmcuIEFkZGVkIHRoZSBjb2RlIGxpa2UgdGhpcy4NCj4g Pg0KPiA+IC8qIFNvbWUgb3Bjb2RlcyBlbmNvZGUgYSBNb2RSL00gYnl0ZSBkaXJlY3RseSBpbiB0 aGUgb3Bjb2RlLiAgKi8NCj4gPiAgIHVuc2lnbmVkIGxvbmcgbG9uZw0KPiA+ICAgYmFzZV9vcGNv ZGUgPSAobGVuZ3RoID4gMSkgPyBvcGNvZGUgPj4gKDggKiBsZW5ndGggLSA4KSA6IG9wY29kZTsN Cj4gDQo+IENhbiBsZW5ndGggYmUgMD8gSSBkaWRuJ3QgdGhpbmsgc28sIGFuZCB0aGVuDQo+IA0K PiAgICBiYXNlX29wY29kZSA9IG9wY29kZSA+PiAoOCAqIGxlbmd0aCAtIDgpOw0KPiANCj4gd291 bGQgYmUgYWxsIHlvdSBuZWVkLg0KPg0KDQp5ZXMgZ29vZCB3YXkuDQoNCj4gQWxzbyBpbiB0aGUg Y29tbWVudCwgSSB0aGluayBpdCB3b3VsZCBiZSBzbGlnaHRseSBiZXR0ZXIgdG8gc2F5ICJNb2RS L00tbGlrZQ0KPiBieXRlIi4NCj4gDQoNCkRvbmUuDQoNClRoYW5rcywNCkxpbGkuDQoNCg==