From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.24]) by sourceware.org (Postfix) with ESMTPS id AB9CB3858401 for ; Thu, 2 Nov 2023 12:17:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AB9CB3858401 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 AB9CB3858401 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=134.134.136.24 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1698927483; cv=pass; b=m12/o8xQ0Fuv2c07L8gYsiUTR+Sw92SH3W/EPQ2YFqOpS8DeP9YaqYuNzptlgfd6r03pVvm9aa2WYterj4EXSDq7WleNufjsCl7xFutIIMgJrPasdWP1tkb/GyAT3o4VH9PyifHeuD2vz979d3XXNub860KZuKqyvxdpjm76qgk= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1698927483; c=relaxed/simple; bh=eSwBuixKy+AeiSgkTHshG61cTmkjaVko7mSUXC+DtG8=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=amqO90VlbMM1cizJhlKbY14w9Jz93eBJKJMFTg3TpZ1TywfSpU+EAF7uk8U3gNr17+Lv7/Ew7vLxh2Hfiwsk8AS+QLy3KxIQW2sfYJ1/9em+YYtho4jptPvD2GGyfHgK7Pdd4b3w3L02U2o2DHbrfeti9xBSjZQlaSE+iLZQV6Y= 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=1698927472; x=1730463472; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=eSwBuixKy+AeiSgkTHshG61cTmkjaVko7mSUXC+DtG8=; b=SrR1Mi5R/ubOEbQv5DTGXCqA5+Evsw+YxfQof+JHBSdCI/PyttHD1Jf5 43p6QID/FJ49df8U4NO7+JKxCtnW37LiJod6wU62MwsaBBMr/rR7cYF+v kvbKg1useZ4yAxC+iDlT0R/NwoJPtTEOWYUB4lhDWjswFAD5kHkmYBG6n bCovi/ceEY9u+JRTGnCSZcrOeagrO29xNLXptVVpAR4Ldq7+xdwn1jNNL z1Um+wtroixWAENLq9YblOmCDNG4lCb2U9K0ZZz+3lpJm/PzN3g59xXjh ONzP8WajkuSQgKAnDLcujOczefd5H7BVrTRtF3DMXv7U0oQmgqv1GqJb8 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10881"; a="391561869" X-IronPort-AV: E=Sophos;i="6.03,271,1694761200"; d="scan'208";a="391561869" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Nov 2023 05:17:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10881"; a="851902204" X-IronPort-AV: E=Sophos;i="6.03,271,1694761200"; d="scan'208";a="851902204" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by FMSMGA003.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 02 Nov 2023 05:17:51 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) 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.2507.34; Thu, 2 Nov 2023 05:17:50 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34 via Frontend Transport; Thu, 2 Nov 2023 05:17:50 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) 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.2507.34; Thu, 2 Nov 2023 05:17:50 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AYfxdlv8TM0p6c93oluyjckNswJyZjAoumNbIflcUMA7kSIOxR48LZCgMSqjodCvAvtOIHIOA7xEpRtKVT7ehu89K4LaViI3ZM1n4W+1MVjNRGwZh0v2KZ6IQta0f3eUM2TjFIpnWI/oxX0kf08EMhAS1rM0O+B0CBpNLV37Gy+CEHwuSoHFNq8oTLL8JyuVogTFnUDnzfdNbDM+CDGt4IQqctIViSNYdY6rsv380Rp0/TzwU1p9uGgWEVHU/7EyKhyDqVCsnNjY2hTnCaIxLreo49qoJyB0949kD57zzt7FQcgoxGDHSutdoP2UNNH72IMZ3eMbJJeOojoH5lMLxw== 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=eSwBuixKy+AeiSgkTHshG61cTmkjaVko7mSUXC+DtG8=; b=D9L65YlpcfRXfyK/M/EDL2fbgZr6l1zg6DwB5Sk0S4qBf5v3Ov9IEnoDkX/2jHsoCJ/fjDchikBRpP1diA/tkUpv5g9awp8g/LElGcqyUr2IJ/s+7Vd0if7T5gjXH+YVLb2fxeiOp+iUKkRVw2BGMFiVgSGtKw1W5CPd2SCOUH27XRzvpD+fLqiHwc6VQwGargghwTkVdWXldEOIAMEvc8SPHdESqEAYmuuJeiRqaY8wvzYr07L7+GcfpPbbK06QNukkRbYHNSlOosp7YeJcuIPzJ4UF1/Cg4HwV4d3WzO8/l9p39zbAp1Sx0yYT863a1t9yyKdhYJH8qCT29hrGew== 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 MW5PR11MB5908.namprd11.prod.outlook.com (2603:10b6:303:194::10) by SA2PR11MB5194.namprd11.prod.outlook.com (2603:10b6:806:118::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.21; Thu, 2 Nov 2023 12:17:47 +0000 Received: from MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::4317:53a0:2638:358c]) by MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::4317:53a0:2638:358c%5]) with mapi id 15.20.6933.029; Thu, 2 Nov 2023 12:17:47 +0000 From: "Li, Pan2" To: Richard Biener CC: "gcc-patches@gcc.gnu.org" , "juzhe.zhong@rivai.ai" , "Wang, Yanzhang" , "kito.cheng@gmail.com" , "jeffreyalaw@gmail.com" , "richard.sandiford@arm.com" Subject: RE: [PATCH v1] EXPMED: Allow vector mode for DSE extract_low_bits [PR111720] Thread-Topic: [PATCH v1] EXPMED: Allow vector mode for DSE extract_low_bits [PR111720] Thread-Index: AQHaDTq0kYVQcuQxG0qjSCEbd68kc7BmsCcAgABBlbA= Date: Thu, 2 Nov 2023 12:17:47 +0000 Message-ID: References: <20231102031423.3751965-1-pan2.li@intel.com> In-Reply-To: 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: MW5PR11MB5908:EE_|SA2PR11MB5194:EE_ x-ms-office365-filtering-correlation-id: 9e12bab3-b224-459a-cfbb-08dbdb9db9e5 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ofq+6iAK3PcIXtFA6zQ4jgqNkjG+R/vEjjwExkfmGscJyOtOtPMoH9sggOrEenmIA3qXgDS+g50+9EPf/hS+6L57+RrwZG4wdMwTGTkXyTD589/Wntj9CcTdKZIBzoTsT/3DVl/AO+914CCJ6HeegpgsWpsmimIqDKsiLgUF13CXa1ovUs+F44qvIX4ubZsYAsWH/jeozfoQ4YlvQprMiTb7ZXpDlMU03kqUlXjL4VJt6rRfr98g28BFBTwr0NRV2rP4y0mz1qUic/54gb/EQGxdMBPSY5gAU0El0pNlH3t8WIAtVoqOfNZvyO0g2fRAkxGmMKUZHzsXh8jQnx5Zyar+ETQa8yrkV2PaKcjVjj2GafK1zXn0081W4JBBQ5M2O7G/2oytneZEG9nGTdqnJI+dokiioc2eA5llX+onVpXdbYHm/87m/0NbGeqBCbpjjzOace75J65xJm3QqbYsZZKXxB8DwyKz1tmLPQ3XhhSGejPXLmiJoW2i8nRYTBUdhZH6PmXCmpP9LCV8Fb/lWpNPbpcVkeBornm/7IkPLVgi9cnLEXB04geOn4nykeBzmS7z3cFY/ripHk6Wmx9xefJs/B4MPSGuJFun3n8waQ3kxBSuNiVWRIt1SO/NxajJZahJKNcTHl2GQqr7NIFIIg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW5PR11MB5908.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(366004)(376002)(396003)(346002)(136003)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(84970400001)(83380400001)(26005)(33656002)(53546011)(6506007)(7696005)(9686003)(76116006)(66946007)(66556008)(66476007)(66446008)(54906003)(64756008)(86362001)(6916009)(316002)(55016003)(478600001)(71200400001)(122000001)(38100700002)(82960400001)(41300700001)(4326008)(8936002)(8676002)(52536014)(38070700009)(2906002)(5660300002)(30864003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?KzErNmNjVkF5emtZWHpzZXRoM1QrYXB6a3Vlc25wZnhlU2dqMEtDNnRBQk5q?= =?utf-8?B?eEVEQzRrMllnbG8wRkhEYXZtWXRxT1VZSVRiMU5KaTRRMHAyYnZ3cFgydnVE?= =?utf-8?B?d2JIckVFT3M1amlZVGdRK3ZhRmJLNTJLQnRSV0RqOVlNVmFKNWNnYlZWZDZ2?= =?utf-8?B?b0wyeWUvRlJCck4wUi9qb1NZVld4WVRvTFZWRHZ2b2FoTkF4NVQybERweWd6?= =?utf-8?B?VFpBV2JUTGwzcnJjTHpFcU1FNUNIWHlneVBzaTNrOTRtVnZSaTE5bGZnQjVY?= =?utf-8?B?U0pMOHNjaXlzZXpXb0V6SWJ0RXljbCt6OHIyRkdBbWNvK0h0Z25MMndudUV6?= =?utf-8?B?OG0ybkFmOTBXdFRqc1JqcGpSM1cyYlhhemdlZU1nczNyL0Yrc3A4YkhLM2xE?= =?utf-8?B?ZmpTQXM2YWZNQ3pNcDIybmY4NkhzcnRJdzFheW9FbnlLOHZCc2Y0aGVlbWds?= =?utf-8?B?VjlleDUrU0gwdk1XakJRaEpjRnVqTElBVHpwbmFGWkxtOGFFaklNT25vTmFw?= =?utf-8?B?d2wwWVROcmh1S04zWTNRV3NyUEhhNDhNVkxpMUxTeG5Ydm94MXJaQm9SWnkz?= =?utf-8?B?MjR1Nk41a29SNklZMnRqaXRjV0RTVU5udWk2OWFLQTNoU0srN1crTUNUeXZO?= =?utf-8?B?Mm5FRkxYK2M5WVA4d0pvV1ZFR3VkaEJ5aGtkN21CU1B6dEIvYWVFN3ZwVHpm?= =?utf-8?B?ZFJLc29wLytEZ043VEZha2NUbHVZbEdWV3BWQUtlZzAyM3locmhma0ZpY3dW?= =?utf-8?B?TW52YVRpTGRjd1ZHank1NmNGN2U2MWdnSDJUSC9Bbkc3am1ROXdmRWZlSi82?= =?utf-8?B?R2lpY2l5VmJJQkpyMnRPam5DY3RVeHhVSmZSa1RFN013SFRWa1BsYkljMjZr?= =?utf-8?B?U1hONG5qdjUzK3RVcFluczVRQnM0dEJjSjRuODZLY0crT1FFYWpQaWRXaUNT?= =?utf-8?B?UjZ6bTJmWElnbWpEQ0RnQktLRlp6a3daVGRvNmllUldVbHh0SXZnTXB3WnJP?= =?utf-8?B?WUNtdHBqT0dESUJ2VmdNSlluVmpEYXFaNWl4RXBNQjl5Q3VERnBIdXRVY1g2?= =?utf-8?B?SUVVbGRMRmZjSG5JLzlxaXgyeTBiUmNxR0hBd29kbXRZK2Jsb2RUWUlvcUc0?= =?utf-8?B?Si9YVGNrMlVGcUhQWTFwUWJ4K0ZLVnNHdlYxNCtLOERWcW92Q0t2UWRFa2Jh?= =?utf-8?B?SmxkRnhINlY3OURoUE1nMlVPS1g5eHE4cnNZNEI0dml0Ykg3bkxGNnBzUUFM?= =?utf-8?B?blVEa04zVTFET2JlYzg1bWFmQTc1RXY0MXc2Y2h5ZXovZnVBcmVpRlJ4NUZx?= =?utf-8?B?TGpzaWc5QmFQcUFPbi9PckthdW4xNjdiS3E2aVR2STZMdEJMTW10NjhjOHlh?= =?utf-8?B?VTNvd3IrQlBZcnpvbFVETzlJL1YwSXFNZVN5R2JWdVZRMk5xRUlxaW92RGNQ?= =?utf-8?B?b3JNMkQySmFmUzdaRVQ3QlVsZ1hIclRiSWUxeFRNS2Rjc2d6NDkwQ3IrVXVW?= =?utf-8?B?RExNQmhPeDluZlVOend5NE1rLzg0ZlpjMHVjbzBNRHhPSmt5V2tKd3V3VW55?= =?utf-8?B?QXA5MHZnaGNVL3lyNHVZNEEreXRQK290bUllL2cwdTZ3cHpqVk9Dem13KzVk?= =?utf-8?B?TEE2QnBzN2VpTUw3cnZ4Tmw3RCtwMWpHU040NXdsSCtUbWNNcS9wNnNjcDlW?= =?utf-8?B?NjlQY0hyM3FBTm9NRENMaG1xcFppTVM3WXFFWXJTdGxvbXN3OUVrUTJGaWZZ?= =?utf-8?B?MFJ1Q1VUUkw3R0Q0MjBhV3VKWkNCM3B5cVI0ZE5PQW54YTQwS3FEbE80YkFZ?= =?utf-8?B?a1k0eWVpa3pnOGFSN0Q4R1NkYm9CanlmYjhXY3hkQ1lrcHQ0em9abzFyWDVa?= =?utf-8?B?d3hRZGlMZjJvbXF4MzZ2YUVzbXRMSkZSdTVTcHg2WlU1UlhLTFRSa1luZG9w?= =?utf-8?B?SFJZRG12K0duaFU4TWxBUzhUWEt4bm5UcHJoVG9HSklwOHQzRG8yYmVzak9D?= =?utf-8?B?K2tjbEl1R3VKVUVRQ2JrRDl3NUNOUzlFYTJmRHIreENzR1N0dVhUalFBNmw4?= =?utf-8?B?NHpBZXBVM1l2SVI0ZHBIeEY3YXFRYXZ2Ym1JNWlpdERIT2NxbFlIOVUxb01U?= =?utf-8?Q?i/ZY=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: MW5PR11MB5908.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9e12bab3-b224-459a-cfbb-08dbdb9db9e5 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2023 12:17:47.8026 (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: jb098rYTdj6VUO5EKj5iCAU+1ud9VUvl5cCtedmt1Xx2AnFCu8icBlflGZ9ZPHjUPS+jnpwTh87crd1wpKE1wQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB5194 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,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: VGhhbmtzIFJpY2hhcmQgQiBmb3IgY29tbWVudHMuDQoNCj4gd2hlbiB0aGVyZSBhcmUgaW50ZWdl ciBtb2RlcyBmb3IgdGhlIHZlY3RvciBtb2RlcyB5b3Ugbm93IGdvIGEgZGlmZmVyZW50IHBhdGgs DQo+IGEgbGl0dGxlIGxlc3MgInJlZ3Jlc3NpbmciIHdvdWxkIGJlIHRvIHdyaXRlIGl0IGFzDQo+ IA0KPiAgIGlmIChpbnRfbW9kZV9mb3JfbW9kZSAoc3JjX21vZGUpLmV4aXN0cyAoJnNyY19pbnRf bW9kZSkNCj4gICAgICAgICYmIGludF9tb2RlX2Zvcl9tb2RlIChtb2RlKS5leGlzdHMgKCZpbnRf bW9kZSkpDQo+ICAgICAgew0KPiAgICAgICAgIC4uLiBvbGQgY29kZSAuLi4NCj4gICAgICB9DQo+ ICAgZWxzZSBpZiAoVkVDVE9SX01PREVfUCAobW9kZSkgJiYgVkVDVE9SX01PREVfUCAoc3JjX21v ZGUpKQ0KPiAgICAgIHsNCj4gICAgICAgICAuLi4gbmV3IGNvZGUgLi4uDQo+ICAgIH0NCj4gICBl bHNlDQo+ICAgICAgcmV0dXJuIE5VTExfUlRYOw0KDQpUaGF0IG1ha2Ugc2Vuc2UgdG8gbWUsIHdp bGwgdXBkYXRlIGl0IGluIFYyLg0KDQo+IHNvIHlvdSdyZSByZWFsbHkgZXhwZWN0aW5nIHRvIGdl bmVyYXRlIGEgc3VicmVnIGhlcmU/ICBHaXZlbiAidmVjdG9yDQo+IHJlZ2lzdGVyIGxheW91dCIN Cj4gaXNuJ3Qgc29tZXRoaW5nIHRoYXQncyB2ZXJ5IHdlbGwgZGVmaW5lZCBJIGZlYXIgaXQncyBn b2luZyB0byBiZQ0KPiBkaWZmaWN1bHQgdG8gZ3VhcmFudGVlDQo+IHRoZSBkZXNpcmVkIHNlbWFu dGljcyBvZiB0aGlzIGZ1bmN0aW9uLiAgSUlSQyBwb3dlcnBjNjRsZSBoYXMgYmlnLWVuZGlhbiBs YW5lDQo+IG9yZGVyIGZvciBleGFtcGxlLg0KDQpUaGlzIHNob3VsZCBiZSBvbmUgcHJvYmxlbSBo ZXJlLCBJIG1heSBuZWVkIG1vcmUgY29uc2lkZXJhdGlvbiBoZXJlIHJlZ2FyZGluZyBkaWZmZXJl bnQgYmFja2VuZHMuDQoNClBhbg0KDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9t OiBSaWNoYXJkIEJpZW5lciA8cmljaGFyZC5ndWVudGhlckBnbWFpbC5jb20+IA0KU2VudDogVGh1 cnNkYXksIE5vdmVtYmVyIDIsIDIwMjMgNDoyMCBQTQ0KVG86IExpLCBQYW4yIDxwYW4yLmxpQGlu dGVsLmNvbT4NCkNjOiBnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZzsganV6aGUuemhvbmdAcml2YWku YWk7IFdhbmcsIFlhbnpoYW5nIDx5YW56aGFuZy53YW5nQGludGVsLmNvbT47IGtpdG8uY2hlbmdA Z21haWwuY29tOyBqZWZmcmV5YWxhd0BnbWFpbC5jb207IHJpY2hhcmQuc2FuZGlmb3JkQGFybS5j b20NClN1YmplY3Q6IFJlOiBbUEFUQ0ggdjFdIEVYUE1FRDogQWxsb3cgdmVjdG9yIG1vZGUgZm9y IERTRSBleHRyYWN0X2xvd19iaXRzIFtQUjExMTcyMF0NCg0KT24gVGh1LCBOb3YgMiwgMjAyMyBh dCA0OjE14oCvQU0gPHBhbjIubGlAaW50ZWwuY29tPiB3cm90ZToNCj4NCj4gRnJvbTogUGFuIExp IDxwYW4yLmxpQGludGVsLmNvbT4NCj4NCj4gVGhlIGV4dHJhY3RfbG93X2JpdHMgb25seSB0cnkg dGhlIHNjYWxhciBtb2RlIGlmIHRoZSBiaXRzaXplIG9mDQo+IHRoZSBtb2RlIGFuZCBzcmNfbW9k ZSBpcyBub3QgZXF1YWwuIFdoZW4gdmVjdG9yIG1vZGUgaXMgZ2l2ZW4NCj4gZnJvbSBnZXRfc3Rv cmVkX3ZhbCBpbiBEU0UsIGl0IHdpbGwgYWx3YXlzIGZhaWwgYW5kIHJldHVybiBOVUxMX1JUWC4N Cj4NCj4gVGhpcyBwYXRjaCB3b3VsZCBsaWtlIHRvIGFsbG93IHRoZSB2ZWN0b3IgbW9kZSBpbiB0 aGUgZXh0cmFjdF9sb3dfYml0cw0KPiBpZiBhbmQgb25seSBpZiB0aGUgc2l6ZSBvZiBtb2RlIGlz IGxlc3MgdGhhbiBvciBlcXVhbHMgdG8gdGhlIHNpemUgb2YNCj4gdGhlIHNyY19tb2RlLg0KPg0K PiBHaXZlbiBiZWxvdyBleGFtcGxlIGNvZGUgd2l0aCAtLXBhcmFtPXJpc2N2LWF1dG92ZWMtcHJl ZmVyZW5jZT1maXhlZC12bG1heC4NCj4NCj4gdnVpbnQ4bTFfdCB0ZXN0ICgpIHsNCj4gICB1aW50 OF90IGFyclszMl0gPSB7DQo+ICAgICAxLCAyLCA3LCAxLCAzLCA0LCA1LCAzLCAxLCAwLCAxLCAy LCA0LCA0LCA5LCA5LA0KPiAgICAgMSwgMiwgNywgMSwgMywgNCwgNSwgMywgMSwgMCwgMSwgMiwg NCwgNCwgOSwgOSwNCj4gICB9Ow0KPg0KPiAgIHJldHVybiBfX3Jpc2N2X3ZsZThfdl91OG0xKGFy ciwgMzIpOw0KPiB9DQo+DQo+IEJlZm9yZSB0aGlzIHBhdGNoOg0KPg0KPiB0ZXN0Og0KPiAgIGx1 aSAgICAgYTUsJWhpKC5MQU5DSE9SMCkNCj4gICBhZGRpICAgIHNwLHNwLC0zMg0KPiAgIGFkZGkg ICAgYTUsYTUsJWxvKC5MQU5DSE9SMCkNCj4gICBsaSAgICAgIGEzLDMyDQo+ICAgdmwycmU2NC52 ICAgICAgIHYyLDAoYTUpDQo+ICAgdnNldHZsaSB6ZXJvLGEzLGU4LG0xLHRhLG1hDQo+ICAgdnMy ci52ICB2MiwwKHNwKSAgICAgICAgICAgICA8PT0gVW5uZWNlc3Nhcnkgc3RvcmUgdG8gc3RhY2sN Cj4gICB2bGU4LnYgIHYxLDAoc3ApICAgICAgICAgICAgIDw9PSBEaXR0bw0KPiAgIHZzMXIudiAg djEsMChhMCkNCj4gICBhZGRpICAgIHNwLHNwLDMyDQo+ICAganIgICAgICByYQ0KPg0KPiBBZnRl ciB0aGlzIHBhdGNoOg0KPg0KPiB0ZXN0Og0KPiAgIGx1aSAgICAgYTUsJWhpKC5MQU5DSE9SMCkN Cj4gICBhZGRpICAgIGE1LGE1LCVsbyguTEFOQ0hPUjApDQo+ICAgbGkgICAgICBhNCwzMg0KPiAg IGFkZGkgICAgc3Asc3AsLTMyDQo+ICAgdnNldHZsaSB6ZXJvLGE0LGU4LG0xLHRhLG1hDQo+ICAg dmxlOC52ICB2MSwwKGE1KQ0KPiAgIHZzMXIudiAgdjEsMChhMCkNCj4gICBhZGRpICAgIHNwLHNw LDMyDQo+ICAganIgICAgICByYQ0KPg0KPiBCZWxvdyB0ZXN0cyBhcmUgcGFzc2VkIHdpdGhpbiB0 aGlzIHBhdGNoOg0KPg0KPiAqIFRoZSB4ODYgYm9vdHN0cmFwIGFuZCByZWdyZXNzaW9uIHRlc3Qu DQo+ICogVGhlIGFhcmNoNjQgcmVncmVzc2lvbiB0ZXN0Lg0KPiAqIFRoZSByaXNjLXYgcmVncmVz c2lvbiB0ZXN0Lg0KPg0KPiAgICAgICAgIFBSIHRhcmdldC8xMTE3MjANCj4NCj4gZ2NjL0NoYW5n ZUxvZzoNCj4NCj4gICAgICAgICAqIGV4cG1lZC5jYyAoZXh0cmFjdF9sb3dfYml0cyk6IEFsbG93 IHZlY3RvciBtb2RlIGlmIHRoZQ0KPiAgICAgICAgIG1vZGUgc2l6ZSBpcyBsZXNzIHRoYW4gb3Ig ZXF1YWwgdG8gc3JjX21vZGUuDQo+DQo+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0KPg0KPiAg ICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9wcjExMTcyMC0wLmM6IE5ldyB0ZXN0 Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9wcjExMTcyMC0xLmM6IE5l dyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9wcjExMTcyMC0x MC5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIx MTE3MjAtMi5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2Jh c2UvcHIxMTE3MjAtMy5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3Yv cnZ2L2Jhc2UvcHIxMTE3MjAtNC5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQv cmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAtNS5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50 YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAtNi5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAq IGdjYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAtNy5jOiBOZXcgdGVzdC4NCj4gICAg ICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAtOC5jOiBOZXcgdGVzdC4N Cj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAtOS5jOiBOZXcg dGVzdC4NCj4NCj4gU2lnbmVkLW9mZi1ieTogUGFuIExpIDxwYW4yLmxpQGludGVsLmNvbT4NCj4g LS0tDQo+ICBnY2MvZXhwbWVkLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0 NCArKysrKysrKysrKystLS0tLS0tDQo+ICAuLi4vZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9w cjExMTcyMC0wLmMgICAgfCAxOCArKysrKysrKw0KPiAgLi4uL2djYy50YXJnZXQvcmlzY3YvcnZ2 L2Jhc2UvcHIxMTE3MjAtMS5jICAgIHwgMTggKysrKysrKysNCj4gIC4uLi9nY2MudGFyZ2V0L3Jp c2N2L3J2di9iYXNlL3ByMTExNzIwLTEwLmMgICB8IDE4ICsrKysrKysrDQo+ICAuLi4vZ2NjLnRh cmdldC9yaXNjdi9ydnYvYmFzZS9wcjExMTcyMC0yLmMgICAgfCAxOCArKysrKysrKw0KPiAgLi4u L2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAtMy5jICAgIHwgMTggKysrKysrKysN Cj4gIC4uLi9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL3ByMTExNzIwLTQuYyAgICB8IDE4ICsr KysrKysrDQo+ICAuLi4vZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9wcjExMTcyMC01LmMgICAg fCAxOCArKysrKysrKw0KPiAgLi4uL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAt Ni5jICAgIHwgMTggKysrKysrKysNCj4gIC4uLi9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL3By MTExNzIwLTcuYyAgICB8IDIxICsrKysrKysrKw0KPiAgLi4uL2djYy50YXJnZXQvcmlzY3YvcnZ2 L2Jhc2UvcHIxMTE3MjAtOC5jICAgIHwgMTggKysrKysrKysNCj4gIC4uLi9nY2MudGFyZ2V0L3Jp c2N2L3J2di9iYXNlL3ByMTExNzIwLTkuYyAgICB8IDE1ICsrKysrKysNCj4gIDEyIGZpbGVzIGNo YW5nZWQsIDIyNyBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkNCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAt MC5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2 L3J2di9iYXNlL3ByMTExNzIwLTEuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9wcjExMTcyMC0xMC5jDQo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL3ByMTExNzIw LTIuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYmFzZS9wcjExMTcyMC0zLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAtNC5jDQo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL3ByMTExNzIw LTUuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYmFzZS9wcjExMTcyMC02LmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAtNy5jDQo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL3ByMTExNzIw LTguYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYmFzZS9wcjExMTcyMC05LmMNCj4NCj4gZGlmZiAtLWdpdCBhL2djYy9leHBtZWQuY2Mg Yi9nY2MvZXhwbWVkLmNjDQo+IGluZGV4IGIyOTRlYWJiMDhkLi41ZGI4M2ZlNjM4YyAxMDA2NDQN Cj4gLS0tIGEvZ2NjL2V4cG1lZC5jYw0KPiArKysgYi9nY2MvZXhwbWVkLmNjDQo+IEBAIC0yNDAz LDggKzI0MDMsNiBAQCBleHRyYWN0X3NwbGl0X2JpdF9maWVsZCAocnR4IG9wMCwgb3B0X3NjYWxh cl9pbnRfbW9kZSBvcDBfbW9kZSwNCj4gIHJ0eA0KPiAgZXh0cmFjdF9sb3dfYml0cyAobWFjaGlu ZV9tb2RlIG1vZGUsIG1hY2hpbmVfbW9kZSBzcmNfbW9kZSwgcnR4IHNyYykNCj4gIHsNCj4gLSAg c2NhbGFyX2ludF9tb2RlIGludF9tb2RlLCBzcmNfaW50X21vZGU7DQo+IC0NCj4gICAgaWYgKG1v ZGUgPT0gc3JjX21vZGUpDQo+ICAgICAgcmV0dXJuIHNyYzsNCj4NCj4gQEAgLTI0MzcsMjIgKzI0 MzUsMzggQEAgZXh0cmFjdF9sb3dfYml0cyAobWFjaGluZV9tb2RlIG1vZGUsIG1hY2hpbmVfbW9k ZSBzcmNfbW9kZSwgcnR4IHNyYykNCj4gICAgICAgICAgcmV0dXJuIHg7DQo+ICAgICAgfQ0KPg0K PiAtICBpZiAoIWludF9tb2RlX2Zvcl9tb2RlIChzcmNfbW9kZSkuZXhpc3RzICgmc3JjX2ludF9t b2RlKQ0KPiAtICAgICAgfHwgIWludF9tb2RlX2Zvcl9tb2RlIChtb2RlKS5leGlzdHMgKCZpbnRf bW9kZSkpDQo+IC0gICAgcmV0dXJuIE5VTExfUlRYOw0KPiArICBpZiAoVkVDVE9SX01PREVfUCAo bW9kZSkgJiYgVkVDVE9SX01PREVfUCAoc3JjX21vZGUpKQ0KDQp3aGVuIHRoZXJlIGFyZSBpbnRl Z2VyIG1vZGVzIGZvciB0aGUgdmVjdG9yIG1vZGVzIHlvdSBub3cgZ28gYSBkaWZmZXJlbnQgcGF0 aCwNCmEgbGl0dGxlIGxlc3MgInJlZ3Jlc3NpbmciIHdvdWxkIGJlIHRvIHdyaXRlIGl0IGFzDQoN CiAgIGlmIChpbnRfbW9kZV9mb3JfbW9kZSAoc3JjX21vZGUpLmV4aXN0cyAoJnNyY19pbnRfbW9k ZSkNCiAgICAgICAmJiBpbnRfbW9kZV9mb3JfbW9kZSAobW9kZSkuZXhpc3RzICgmaW50X21vZGUp KQ0KICAgICB7DQogICAgICAgIC4uLiBvbGQgY29kZSAuLi4NCiAgICAgfQ0KICBlbHNlIGlmIChW RUNUT1JfTU9ERV9QIChtb2RlKSAmJiBWRUNUT1JfTU9ERV9QIChzcmNfbW9kZSkpDQogICAgIHsN CiAgICAgICAgLi4uIG5ldyBjb2RlIC4uLg0KICAgICB9DQogIGVsc2UNCiAgICAgcmV0dXJuIE5V TExfUlRYOw0KDQo+ICsgICAgew0KPiArICAgICAgaWYgKG1heWJlX2d0IChHRVRfTU9ERV9CSVRT SVpFIChtb2RlKSwgR0VUX01PREVfQklUU0laRSAoc3JjX21vZGUpKQ0KPiArICAgICAgIHx8ICF0 YXJnZXRtLm1vZGVzX3RpZWFibGVfcCAobW9kZSwgc3JjX21vZGUpKQ0KPiArICAgICAgIHJldHVy biBOVUxMX1JUWDsNCj4NCj4gLSAgaWYgKCF0YXJnZXRtLm1vZGVzX3RpZWFibGVfcCAoc3JjX2lu dF9tb2RlLCBzcmNfbW9kZSkpDQo+IC0gICAgcmV0dXJuIE5VTExfUlRYOw0KPiAtICBpZiAoIXRh cmdldG0ubW9kZXNfdGllYWJsZV9wIChpbnRfbW9kZSwgbW9kZSkpDQo+IC0gICAgcmV0dXJuIE5V TExfUlRYOw0KPiArICAgICAgLyogRm9yIHZlY3RvciBtb2RlLCAgb25seSB0aGUgYml0c2l6ZSAo bW9kZSkgPD0gYml0c2l6ZSAoc3JjX21vZGUpIGFuZA0KPiArICAgICAgICB0aWVhYmxlIGlzIGFs bG93ZWQgaGVyZS4gICovDQo+ICsgICAgICBzcmMgPSBnZW5fbG93cGFydCAobW9kZSwgc3JjKTsN Cg0Kc28geW91J3JlIHJlYWxseSBleHBlY3RpbmcgdG8gZ2VuZXJhdGUgYSBzdWJyZWcgaGVyZT8g IEdpdmVuICJ2ZWN0b3INCnJlZ2lzdGVyIGxheW91dCINCmlzbid0IHNvbWV0aGluZyB0aGF0J3Mg dmVyeSB3ZWxsIGRlZmluZWQgSSBmZWFyIGl0J3MgZ29pbmcgdG8gYmUNCmRpZmZpY3VsdCB0byBn dWFyYW50ZWUNCnRoZSBkZXNpcmVkIHNlbWFudGljcyBvZiB0aGlzIGZ1bmN0aW9uLiAgSUlSQyBw b3dlcnBjNjRsZSBoYXMgYmlnLWVuZGlhbiBsYW5lDQpvcmRlciBmb3IgZXhhbXBsZS4NCg0KPiAr ICAgIH0NCj4gKyAgZWxzZQ0KPiArICAgIHsNCj4gKyAgICAgIHNjYWxhcl9pbnRfbW9kZSBpbnRf bW9kZSwgc3JjX2ludF9tb2RlOw0KPg0KPiAtICBzcmMgPSBnZW5fbG93cGFydCAoc3JjX2ludF9t b2RlLCBzcmMpOw0KPiAtICBpZiAoIXZhbGlkYXRlX3N1YnJlZyAoaW50X21vZGUsIHNyY19pbnRf bW9kZSwgc3JjLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICBzdWJyZWdfbG93cGFydF9vZmZz ZXQgKGludF9tb2RlLCBzcmNfaW50X21vZGUpKSkNCj4gLSAgICByZXR1cm4gTlVMTF9SVFg7DQo+ ICsgICAgICBpZiAoIWludF9tb2RlX2Zvcl9tb2RlIChzcmNfbW9kZSkuZXhpc3RzICgmc3JjX2lu dF9tb2RlKQ0KPiArICAgICAgICAgfHwgIWludF9tb2RlX2Zvcl9tb2RlIChtb2RlKS5leGlzdHMg KCZpbnRfbW9kZSkpDQo+ICsgICAgICAgcmV0dXJuIE5VTExfUlRYOw0KPiArDQo+ICsgICAgICBp ZiAoIXRhcmdldG0ubW9kZXNfdGllYWJsZV9wIChzcmNfaW50X21vZGUsIHNyY19tb2RlKSkNCj4g KyAgICAgICByZXR1cm4gTlVMTF9SVFg7DQo+ICsgICAgICBpZiAoIXRhcmdldG0ubW9kZXNfdGll YWJsZV9wIChpbnRfbW9kZSwgbW9kZSkpDQo+ICsgICAgICAgcmV0dXJuIE5VTExfUlRYOw0KPiAr DQo+ICsgICAgICBzcmMgPSBnZW5fbG93cGFydCAoc3JjX2ludF9tb2RlLCBzcmMpOw0KPiArICAg ICAgaWYgKCF2YWxpZGF0ZV9zdWJyZWcgKGludF9tb2RlLCBzcmNfaW50X21vZGUsIHNyYywNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnJlZ19sb3dwYXJ0X29mZnNldCAoaW50X21v ZGUsIHNyY19pbnRfbW9kZSkpKQ0KPiArICAgICAgIHJldHVybiBOVUxMX1JUWDsNCj4gKw0KPiAr ICAgICAgc3JjID0gY29udmVydF9tb2RlcyAoaW50X21vZGUsIHNyY19pbnRfbW9kZSwgc3JjLCB0 cnVlKTsNCj4gKyAgICAgIHNyYyA9IGdlbl9sb3dwYXJ0IChtb2RlLCBzcmMpOw0KPiArICAgIH0N Cj4NCj4gLSAgc3JjID0gY29udmVydF9tb2RlcyAoaW50X21vZGUsIHNyY19pbnRfbW9kZSwgc3Jj LCB0cnVlKTsNCj4gLSAgc3JjID0gZ2VuX2xvd3BhcnQgKG1vZGUsIHNyYyk7DQo+ICAgIHJldHVy biBzcmM7DQo+ICB9DQo+DQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAtMC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3J2di9iYXNlL3ByMTExNzIwLTAuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwMDAwMC4uYTYxZTk0YTZkOTgNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAtMC5jDQo+IEBAIC0w LDAgKzEsMTggQEANCj4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ICsvKiB7IGRnLW9wdGlv bnMgIi1PMyAtbWFyY2g9cnY2NGdjdiAtbWFiaT1scDY0ZCAtZnRyZWUtdmVjdG9yaXplIC0tcGFy YW09cmlzY3YtYXV0b3ZlYy1wcmVmZXJlbmNlPWZpeGVkLXZsbWF4IC1Xbm8tcHNhYmkiIH0gKi8N Cj4gKw0KPiArI2luY2x1ZGUgInJpc2N2X3ZlY3Rvci5oIg0KPiArDQo+ICt2dWludDhtMV90IHRl c3QgKCkgew0KPiArICB1aW50OF90IGFyclszMl0gPSB7DQo+ICsgICAgMSwgMiwgNywgMSwgMywg NCwgNSwgMywNCj4gKyAgICAxLCAwLCAxLCAyLCA0LCA0LCA5LCA5LA0KPiArICAgIDEsIDIsIDcs IDEsIDMsIDQsIDUsIDMsDQo+ICsgICAgMSwgMCwgMSwgMiwgNCwgNCwgOSwgOSwNCj4gKyAgfTsN Cj4gKw0KPiArICByZXR1cm4gX19yaXNjdl92bGU4X3ZfdThtMShhcnIsIDMyKTsNCj4gK30NCj4g Kw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7dmxlWzAtOV0rXC52XHMr dlswLTldKyxccypbMC05XStcKHNwXCl9IH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLW5vdCB7dnNbMC05XStyXC52XHMrdlswLTldKyxccypbMC05XStcKHNwXCl9IH0g fSAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9i YXNlL3ByMTExNzIwLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFz ZS9wcjExMTcyMC0xLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MDAuLjQ2ZWZkNzM3OWFjDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL3ByMTExNzIwLTEuYw0KPiBAQCAtMCwwICsxLDE4IEBA DQo+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiArLyogeyBkZy1vcHRpb25zICItTzMgLW1h cmNoPXJ2NjRnY3YgLW1hYmk9bHA2NGQgLWZ0cmVlLXZlY3Rvcml6ZSAtLXBhcmFtPXJpc2N2LWF1 dG92ZWMtcHJlZmVyZW5jZT1maXhlZC12bG1heCAtV25vLXBzYWJpIiB9ICovDQo+ICsNCj4gKyNp bmNsdWRlICJyaXNjdl92ZWN0b3IuaCINCj4gKw0KPiArdnVpbnQ4bTJfdCB0ZXN0ICgpIHsNCj4g KyAgdWludDhfdCBhcnJbMzJdID0gew0KPiArICAgIDEsIDIsIDcsIDEsIDMsIDQsIDUsIDMsDQo+ ICsgICAgMSwgMCwgMSwgMiwgNCwgNCwgOSwgOSwNCj4gKyAgICAxLCAyLCA3LCAxLCAzLCA0LCA1 LCAzLA0KPiArICAgIDEsIDAsIDEsIDIsIDQsIDQsIDksIDksDQo+ICsgIH07DQo+ICsNCj4gKyAg cmV0dXJuIF9fcmlzY3ZfdmxlOF92X3U4bTIoYXJyLCAzMik7DQo+ICt9DQo+ICsNCj4gKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3ZsZVswLTldK1wudlxzK3ZbMC05XSssXHMq WzAtOV0rXChzcFwpfSB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1u b3Qge3ZzWzA5XStyXC52XHMrdlswLTldKyxccypbMC05XStcKHNwXCl9IH0gfSAqLw0KPiBkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL3ByMTExNzIw LTEwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAt MTAuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uOGJlYmFj MjE5YTYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAtMTAuYw0KPiBAQCAtMCwwICsxLDE4IEBADQo+ICsvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiArLyogeyBkZy1vcHRpb25zICItTzMgLW1hcmNoPXJ2NjRn Y3YgLW1hYmk9bHA2NGQgLWZ0cmVlLXZlY3Rvcml6ZSAtLXBhcmFtPXJpc2N2LWF1dG92ZWMtcHJl ZmVyZW5jZT1maXhlZC12bG1heCAtV25vLXBzYWJpIiB9ICovDQo+ICsNCj4gKyNpbmNsdWRlICJy aXNjdl92ZWN0b3IuaCINCj4gKw0KPiArdmJvb2w0X3QgdGVzdCAoKSB7DQo+ICsgIHVpbnQ4X3Qg YXJyWzMyXSA9IHsNCj4gKyAgICAxLCAyLCA3LCAxLCAzLCA0LCA1LCAzLA0KPiArICAgIDEsIDAs IDEsIDIsIDQsIDQsIDksIDksDQo+ICsgICAgMSwgMiwgNywgMSwgMywgNCwgNSwgMywNCj4gKyAg ICAxLCAwLCAxLCAyLCA0LCA0LCA5LCA5LA0KPiArICB9Ow0KPiArDQo+ICsgIHJldHVybiBfX3Jp c2N2X3ZsbV92X2I0KGFyciwgMzIpOw0KPiArfQ0KPiArDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItbm90IHt2bGVbMC05XStcLnZccyt2WzAtOV0rLFxzKlswLTldK1woc3BcKX0g fSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHt2c1swLTldK3Jc LnZccyt2WzAtOV0rLFxzKlswLTldK1woc3BcKX0gfSB9ICovDQo+IGRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAtMi5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL3ByMTExNzIwLTIuYw0KPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uNDdlNDI0M2UwMmUNCj4gLS0tIC9k ZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2Uv cHIxMTE3MjAtMi5jDQo+IEBAIC0wLDAgKzEsMTggQEANCj4gKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovDQo+ICsvKiB7IGRnLW9wdGlvbnMgIi1PMyAtbWFyY2g9cnY2NGdjdiAtbWFiaT1scDY0ZCAt ZnRyZWUtdmVjdG9yaXplIC0tcGFyYW09cmlzY3YtYXV0b3ZlYy1wcmVmZXJlbmNlPWZpeGVkLXZs bWF4IC1Xbm8tcHNhYmkiIH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgInJpc2N2X3ZlY3Rvci5oIg0K PiArDQo+ICt2dWludDhtMV90IHRlc3QgKCkgew0KPiArICB1aW50OF90IGFyclszMl0gPSB7DQo+ ICsgICAgMSwgMiwgNywgMSwgMywgNCwgNSwgMywNCj4gKyAgICAxLCAwLCAxLCAyLCA0LCA0LCA5 LCA5LA0KPiArICAgIDEsIDIsIDcsIDEsIDMsIDQsIDUsIDMsDQo+ICsgICAgMSwgMCwgMSwgMiwg NCwgNCwgOSwgOSwNCj4gKyAgfTsNCj4gKw0KPiArICByZXR1cm4gX19yaXNjdl92bGU4X3ZfdTht MShhcnIsIDE2KTsNCj4gK30NCj4gKw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LW5vdCB7dmxlWzAtOV0rXC52XHMrdlswLTldKyxccypbMC05XStcKHNwXCl9IH0gfSAqLw0KPiAr LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7dnNbMC05XStyXC52XHMrdlswLTld KyxccypbMC05XStcKHNwXCl9IH0gfSAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL3ByMTExNzIwLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9yaXNjdi9ydnYvYmFzZS9wcjExMTcyMC0zLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAuLjUzMzFlNTQ3ZWQzDQo+IC0tLSAvZGV2L251bGwNCj4g KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL3ByMTExNzIwLTMu Yw0KPiBAQCAtMCwwICsxLDE4IEBADQo+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiArLyog eyBkZy1vcHRpb25zICItTzMgLW1hcmNoPXJ2NjRnY3YgLW1hYmk9bHA2NGQgLWZ0cmVlLXZlY3Rv cml6ZSAtLXBhcmFtPXJpc2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1maXhlZC12bG1heCAtV25vLXBz YWJpIiB9ICovDQo+ICsNCj4gKyNpbmNsdWRlICJyaXNjdl92ZWN0b3IuaCINCj4gKw0KPiArdnVp bnQ4bTJfdCB0ZXN0ICgpIHsNCj4gKyAgdWludDhfdCBhcnJbMzJdID0gew0KPiArICAgIDEsIDIs IDcsIDEsIDMsIDQsIDUsIDMsDQo+ICsgICAgMSwgMCwgMSwgMiwgNCwgNCwgOSwgOSwNCj4gKyAg ICAxLCAyLCA3LCAxLCAzLCA0LCA1LCAzLA0KPiArICAgIDEsIDAsIDEsIDIsIDQsIDQsIDksIDks DQo+ICsgIH07DQo+ICsNCj4gKyAgcmV0dXJuIF9fcmlzY3ZfdmxlOF92X3U4bTIoYXJyLCA4KTsN Cj4gK30NCj4gKw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7dmxlWzAt OV0rXC52XHMrdlswLTldKyxccypbMC05XStcKHNwXCl9IH0gfSAqLw0KPiArLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7dnNbMDldK3JcLnZccyt2WzAtOV0rLFxzKlswLTldK1wo c3BcKX0gfSB9ICovDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlz Y3YvcnZ2L2Jhc2UvcHIxMTE3MjAtNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2 L3J2di9iYXNlL3ByMTExNzIwLTQuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw MDAwMDAwMDAwMC4uMGM3MjhmOTM1MTQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAtNC5jDQo+IEBAIC0wLDAg KzEsMTggQEANCj4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ICsvKiB7IGRnLW9wdGlvbnMg Ii1PMyAtbWFyY2g9cnY2NGdjdiAtbWFiaT1scDY0ZCAtZnRyZWUtdmVjdG9yaXplIC0tcGFyYW09 cmlzY3YtYXV0b3ZlYy1wcmVmZXJlbmNlPWZpeGVkLXZsbWF4IC1Xbm8tcHNhYmkiIH0gKi8NCj4g Kw0KPiArI2luY2x1ZGUgInJpc2N2X3ZlY3Rvci5oIg0KPiArDQo+ICt2dWludDhtZjJfdCB0ZXN0 ICgpIHsNCj4gKyAgdWludDhfdCBhcnJbMzJdID0gew0KPiArICAgIDEsIDIsIDcsIDEsIDMsIDQs IDUsIDMsDQo+ICsgICAgMSwgMCwgMSwgMiwgNCwgNCwgOSwgOSwNCj4gKyAgICAxLCAyLCA3LCAx LCAzLCA0LCA1LCAzLA0KPiArICAgIDEsIDAsIDEsIDIsIDQsIDQsIDksIDksDQo+ICsgIH07DQo+ ICsNCj4gKyAgcmV0dXJuIF9fcmlzY3ZfdmxlOF92X3U4bWYyKGFyciwgMzIpOw0KPiArfQ0KPiAr DQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHt2bGVbMC05XStcLnZccyt2 WzAtOV0rLFxzKlswLTldK1woc3BcKX0gfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItbm90IHt2c1swLTldK3JcLnZccyt2WzAtOV0rLFxzKlswLTldK1woc3BcKX0gfSB9 ICovDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jh c2UvcHIxMTE3MjAtNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNl L3ByMTExNzIwLTUuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAw MC4uY2NmYzQwY2QzODINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAtNS5jDQo+IEBAIC0wLDAgKzEsMTggQEAN Cj4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ICsvKiB7IGRnLW9wdGlvbnMgIi1PMyAtbWFy Y2g9cnY2NGdjdiAtbWFiaT1scDY0ZCAtZnRyZWUtdmVjdG9yaXplIC0tcGFyYW09cmlzY3YtYXV0 b3ZlYy1wcmVmZXJlbmNlPWZpeGVkLXZsbWF4IC1Xbm8tcHNhYmkiIH0gKi8NCj4gKw0KPiArI2lu Y2x1ZGUgInJpc2N2X3ZlY3Rvci5oIg0KPiArDQo+ICt2dWludDhtMl90IHRlc3QgKCkgew0KPiAr ICB1aW50OF90IGFyclszMl0gPSB7DQo+ICsgICAgMSwgMiwgNywgMSwgMywgNCwgNSwgMywNCj4g KyAgICAxLCAwLCAxLCAyLCA0LCA0LCA5LCA5LA0KPiArICAgIDEsIDIsIDcsIDEsIDMsIDQsIDUs IDMsDQo+ICsgICAgMSwgMCwgMSwgMiwgNCwgNCwgOSwgOSwNCj4gKyAgfTsNCj4gKw0KPiArICBy ZXR1cm4gX19yaXNjdl92bGU4X3ZfdThtMihhcnIsIDQpOw0KPiArfQ0KPiArDQo+ICsvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHt2bGVbMC05XStcLnZccyt2WzAtOV0rLFxzKlsw LTldK1woc3BcKX0gfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90 IHt2c1swOV0rclwudlxzK3ZbMC05XSssXHMqWzAtOV0rXChzcFwpfSB9IH0gKi8NCj4gZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9wcjExMTcyMC02 LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAtNi5j DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi5jZTdkZGJiOTli Mg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYmFzZS9wcjExMTcyMC02LmMNCj4gQEAgLTAsMCArMSwxOCBAQA0KPiArLyogeyBkZy1k byBjb21waWxlIH0gKi8NCj4gKy8qIHsgZGctb3B0aW9ucyAiLU8zIC1tYXJjaD1ydjY0Z2N2IC1t YWJpPWxwNjRkIC1mdHJlZS12ZWN0b3JpemUgLS1wYXJhbT1yaXNjdi1hdXRvdmVjLXByZWZlcmVu Y2U9Zml4ZWQtdmxtYXggLVduby1wc2FiaSIgfSAqLw0KPiArDQo+ICsjaW5jbHVkZSAicmlzY3Zf dmVjdG9yLmgiDQo+ICsNCj4gK3Z1aW50OG04X3QgdGVzdCAoKSB7DQo+ICsgIHVpbnQ4X3QgYXJy WzMyXSA9IHsNCj4gKyAgICAxLCAyLCA3LCAxLCAzLCA0LCA1LCAzLA0KPiArICAgIDEsIDAsIDEs IDIsIDQsIDQsIDksIDksDQo+ICsgICAgMSwgMiwgNywgMSwgMywgNCwgNSwgMywNCj4gKyAgICAx LCAwLCAxLCAyLCA0LCA0LCA5LCA5LA0KPiArICB9Ow0KPiArDQo+ICsgIHJldHVybiBfX3Jpc2N2 X3ZsZThfdl91OG04KGFyciwgMzIpOw0KPiArfQ0KPiArDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMge3ZsZVswLTldK1wudlxzK3ZbMC05XSssXHMqWzAtOV0rXChzcFwp fSAxIH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHt2c1sw LTldK3JcLnZccyt2WzAtOV0rLFxzKlswLTldK1woc3BcKX0gMSB9IH0gKi8NCj4gZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9wcjExMTcyMC03LmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAtNy5jDQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi5hYzAxMDBhMTIxMQ0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9y dnYvYmFzZS9wcjExMTcyMC03LmMNCj4gQEAgLTAsMCArMSwyMSBAQA0KPiArLyogeyBkZy1kbyBj b21waWxlIH0gKi8NCj4gKy8qIHsgZGctb3B0aW9ucyAiLU8zIC1tYXJjaD1ydjY0Z2N2IC1tYWJp PWxwNjRkIC1mdHJlZS12ZWN0b3JpemUgLS1wYXJhbT1yaXNjdi1hdXRvdmVjLXByZWZlcmVuY2U9 Zml4ZWQtdmxtYXggLVduby1wc2FiaSIgfSAqLw0KPiArDQo+ICsjaW5jbHVkZSAicmlzY3ZfdmVj dG9yLmgiDQo+ICsNCj4gK3Zib29sOF90IHRlc3QgKCkgew0KPiArICB1aW50OF90IGFyclszMl0g PSB7DQo+ICsgICAgMSwgMiwgNywgMSwgMywgNCwgNSwgMywNCj4gKyAgICAxLCAwLCAxLCAyLCA0 LCA0LCA5LCA5LA0KPiArICAgIDEsIDIsIDcsIDEsIDMsIDQsIDUsIDMsDQo+ICsgICAgMSwgMCwg MSwgMiwgNCwgNCwgOSwgOSwNCj4gKyAgfTsNCj4gKw0KPiArICB2dWludDhtMV90IHZhcnIgPSBf X3Jpc2N2X3ZsZThfdl91OG0xKGFyciwgMzIpOw0KPiArICB2dWludDhtMV90IHZhbmRfbSA9IF9f cmlzY3ZfdmFuZF92eF91OG0xKHZhcnIsIDEsIDMyKTsNCj4gKw0KPiArICByZXR1cm4gX19yaXNj dl92cmVpbnRlcnByZXRfdl91OG0xX2I4KHZhbmRfbSk7DQo+ICt9DQo+ICsNCj4gKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge3ZsZVswLTldK1wudlxzK3ZbMC05XSssXHMqWzAt OV0rXChzcFwpfSB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qg e3ZzWzAtOV0rclwudlxzK3ZbMC05XSssXHMqWzAtOV0rXChzcFwpfSB9IH0gKi8NCj4gZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9wcjExMTcyMC04 LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAtOC5j DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi5iN2ViZWY4MDk1 NA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYmFzZS9wcjExMTcyMC04LmMNCj4gQEAgLTAsMCArMSwxOCBAQA0KPiArLyogeyBkZy1k byBjb21waWxlIH0gKi8NCj4gKy8qIHsgZGctb3B0aW9ucyAiLU8zIC1tYXJjaD1ydjY0Z2N2IC1t YWJpPWxwNjRkIC1mdHJlZS12ZWN0b3JpemUgLS1wYXJhbT1yaXNjdi1hdXRvdmVjLXByZWZlcmVu Y2U9Zml4ZWQtdmxtYXggLVduby1wc2FiaSIgfSAqLw0KPiArDQo+ICsjaW5jbHVkZSAicmlzY3Zf dmVjdG9yLmgiDQo+ICsNCj4gK3ZmbG9hdDMybTFfdCB0ZXN0ICgpIHsNCj4gKyAgZmxvYXQgYXJy WzMyXSA9IHsNCj4gKyAgICAxLjAsIDIuMiwgNy44LCAxLjIsIDMuMywgNC43LCA1LjUsIDMuMywN Cj4gKyAgICAxLjAsIDAuMiwgMS44LCAyLjIsIDQuMywgNC43LCA5LjUsIDkuMywNCj4gKyAgICAx LjAsIDIuMiwgNy44LCAxLjIsIDMuMywgNC43LCA1LjUsIDMuMywNCj4gKyAgICAxLjAsIDAuMiwg MS44LCAyLjIsIDQuMywgNC43LCA5LjUsIDkuMywNCj4gKyAgfTsNCj4gKw0KPiArICByZXR1cm4g X19yaXNjdl92bGUzMl92X2YzMm0xKGFyciwgMzIpOw0KPiArfQ0KPiArDQo+ICsvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHt2bGVbMC05XStcLnZccyt2WzAtOV0rLFxzKlswLTld K1woc3BcKX0gfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHt2 c1swLTldK3JcLnZccyt2WzAtOV0rLFxzKlswLTldK1woc3BcKX0gfSB9ICovDQo+IGRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvcHIxMTE3MjAtOS5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL3ByMTExNzIwLTkuYw0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uMjFmZWQwNmQyMDEN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2Jhc2UvcHIxMTE3MjAtOS5jDQo+IEBAIC0wLDAgKzEsMTUgQEANCj4gKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovDQo+ICsvKiB7IGRnLW9wdGlvbnMgIi1PMyAtbWFyY2g9cnY2NGdjdiAtbWFi aT1scDY0ZCAtZnRyZWUtdmVjdG9yaXplIC0tcGFyYW09cmlzY3YtYXV0b3ZlYy1wcmVmZXJlbmNl PWZpeGVkLXZsbWF4IC1Xbm8tcHNhYmkiIH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgInJpc2N2X3Zl Y3Rvci5oIg0KPiArDQo+ICt2ZmxvYXQ2NG04X3QgdGVzdCAoKSB7DQo+ICsgIGRvdWJsZSBhcnJb OF0gPSB7DQo+ICsgICAgMS4wLCAyLjIsIDcuOCwgMS4yLCAzLjMsIDQuNywgNS41LCAzLjMsDQo+ ICsgIH07DQo+ICsNCj4gKyAgcmV0dXJuIF9fcmlzY3ZfdmxlNjRfdl9mNjRtOChhcnIsIDQpOw0K PiArfQ0KPiArDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3ZsZVsw LTldK1wudlxzK3ZbMC05XSssXHMqWzAtOV0rXChzcFwpfSAxIH0gfSAqLw0KPiArLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHt2c1swLTldK3JcLnZccyt2WzAtOV0rLFxzKlsw LTldK1woc3BcKX0gMSB9IH0gKi8NCj4gLS0NCj4gMi4zNC4xDQo+DQo=