From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.43]) by sourceware.org (Postfix) with ESMTPS id 6C61E3858C66 for ; Tue, 9 Jan 2024 07:17:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6C61E3858C66 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 6C61E3858C66 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=192.55.52.43 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1704784661; cv=pass; b=vuM/W3tViPs9I0I8si15uusX7APxncBdS8FeROLe2LJfaM6LUCvgAHcBKf9KErZfVTZ0TVLmCXmhQN9xW4MaZd0PsrOnsqrEWnJrp49vAEes/ELw2uklKTQ8lfvpfp997T6aekI6iHEzT1eed5M/yjYBUgEjt2uSn/B+GSn56QU= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1704784661; c=relaxed/simple; bh=GYw41rKP+hDBYwuU+klk/UEJOeT3D0p+tAPEPxagfRQ=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=sWKMNW8CHROneJwamMoz+GjNvQEou5B/MINsCXYcNp6h8zKQu5H/HJAYDw/S6V9zSFVRLQGZFoQZ5dG9oFW/LFL0iHW/INdo/D5j/9YOXEmOO68zGj/gWkRVWsJrUCTRy+kjfVyPBnGzP2UausCywbpEw2GlFcJh/2pb7l9aEus= 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=1704784657; x=1736320657; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=GYw41rKP+hDBYwuU+klk/UEJOeT3D0p+tAPEPxagfRQ=; b=m2+3OXuuBai2cd6XA8buq3fA6TMr0RjaGamKFDXNVn8czTC6w4/0AtFs VLS2ycspqGegQZTRlPSFlBmJUfgEP/91RWdpcPpeZZHlueTDj77Z9yuOr xm9WHCmn24Bsw64tdC6b2MPy9TWYU0Iw/zf1DFkaLTcO8mfhUrpvMbbeZ NZlSchROe4ZZeMP3p7CFGFBu1NjMVrFUeYAiZa/8d4cZcSKPAC6WbPx8Z iGIxQcHykFmtS/Yc3Kcky/P9rDnIR0bXYszYhEThTyqbeG5Klbnlam+6n TMV4FIBONlsqxYNMcu49CEXSniApmeh7DXMXMwomE0YxXJyV4yjg832zS g==; X-IronPort-AV: E=McAfee;i="6600,9927,10947"; a="484285641" X-IronPort-AV: E=Sophos;i="6.04,182,1695711600"; d="scan'208";a="484285641" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jan 2024 23:17:12 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10947"; a="925141204" X-IronPort-AV: E=Sophos;i="6.04,182,1695711600"; d="scan'208";a="925141204" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga001.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 08 Jan 2024 23:17:12 -0800 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.35; Mon, 8 Jan 2024 23:17:12 -0800 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.35 via Frontend Transport; Mon, 8 Jan 2024 23:17:12 -0800 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.41) 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.35; Mon, 8 Jan 2024 23:17:11 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k0qWJ6ntdTMeD+iI8YSZQkCpkjE728Mo72qa/Rt0Fuwz7yYdRmZx0ntXRRR6ELxiB4VEUxBzd62WL6GSEXQqerYk+k5FPGsc8e4HJ6AURbmHLDe0a6wglVeYpKfooSmfnrxsWc1FC47950FxhXbp0LAtArF6/QLgR7bNfaSXGWuYvFXCMpJyQji5s+UMgI+39o8rterViSrZoTp+Xa6yNrra6v+cisGWCdE1ozqsqYtYQnmywBzwXj5wzrrhRDu2vXc4XXW1R7rM2G+f8jE2no4WlM0KTVqalZ+WDO4/xpUvseauGcCtdooheAFt6yrCCKnNcZdgBS6nrG9HlyevpQ== 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=GYw41rKP+hDBYwuU+klk/UEJOeT3D0p+tAPEPxagfRQ=; b=UJhtSgiQ+0cK/P6eeShbEUnzyDhqNo3K45br9fXwSvwKDnhOODr2Bma33w6qg9nQeMP+HZEPMcQPJ+X3dS3HrFfwQ5vHJdNKZ3btKly/qSgNlywAQsQy3fWL9ZbLUcdyd3ypX73muRu+xi/XuoIsQMmslBarzxqI4ces/zWTa3I2NLm7xq6ib34JLpJfAmoRV+xILncqoi5y1j53N8VhzE+tonTPPDp/sVReDeJ3mlz1SwrcBswoHr73Pb/Wd762Uqy7COxLyglLl5UAqZLvmfLaf+gbtdKSfHl8T129XQBPoQBR8hgBSp4j1xj+PAAmbOsq96MjFRErMiCVMcnHQQ== 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 SJ2PR11MB8450.namprd11.prod.outlook.com (2603:10b6:a03:578::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Tue, 9 Jan 2024 07:17:09 +0000 Received: from MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::b976:c625:8249:e34e]) by MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::b976:c625:8249:e34e%7]) with mapi id 15.20.7159.020; Tue, 9 Jan 2024 07:17:09 +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" , "eres@il.ibm.com" , "tom@codesourcery.com" Subject: RE: [PATCH v3] RISC-V: Bugfix for doesn't honor no-signed-zeros option Thread-Topic: [PATCH v3] RISC-V: Bugfix for doesn't honor no-signed-zeros option Thread-Index: AQHaPYDO7GmzHn2N+EGz581loGG72LDPxH8AgAAJioCAAUXRgA== Date: Tue, 9 Jan 2024 07:17:08 +0000 Message-ID: References: <20231223110733.2565292-1-pan2.li@intel.com> <20240102115538.1471137-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_|SJ2PR11MB8450:EE_ x-ms-office365-filtering-correlation-id: 0f0523a0-0bf6-439b-2774-08dc10e2fe01 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: a0axy0QdKdd6yuJJ2SCuT3JLdMJ3RhuVEBArNFSXlIN2qxNh8NvUQT8lpy2LMZm1rXwWWKEM+bmSYt2hL7UAe+ODJtyM4rLFQzztD2pBwctgY4+D/VL3d1u9p2LNYmDtuO6DZHcPP9y7rp0+B1077R+z5zXGmgPk4uZPkRhhEE09Gpo3RxDFsUGiLAHFXqzYdAqVQv+Q0datJa1fMEoVnWLn11vfOYLSY5voB3qHx6UzYpVmkZBqVX06C7iCvlZ3SEXXMMYn727XJ5bPEJ3Gyp6xNk0oS/nx1J5mZihHtXD8OShpR1U8GOpgFuqEiOhA/3G7Jh5+DcVyt6L1sfV4Mt45de9vytDEC46bfxvnDUsDNf1nsK3T/IGXY8xyauF9/CT1wc6qAGkxuZRRre77GudzNWsAEqqMtema1mFCLIGMF+luTZZA2wOvuMUGTK20OXxAPGrTRvpAnxY5X0R5RkYEwQFa6h9/pl43AVoxNwx0amUOqsl4t9fz4fA8DaMFUYU4+DS6uKXgbqtdZq7Giknt67G7ertRLampsoKNQbe6Lj8NHZ6h9YMhykCbKecx3UxIL5EFiqaTS3vcPTRo9SE59p/KM3nsi1UyFlEiUBdhqfBLFxoYlc+TXEbS2wgwhR1qOp4YOgDgd30Nu8nrs5RFknA3reqg8w6Yj/H9FTubNRFOn5jq4PWZhIief+a7 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)(366004)(396003)(376002)(136003)(346002)(39860400002)(230922051799003)(230173577357003)(230273577357003)(451199024)(64100799003)(186009)(1800799012)(30864003)(5660300002)(478600001)(966005)(71200400001)(33656002)(2940100002)(7696005)(86362001)(53546011)(9686003)(6506007)(8676002)(8936002)(41300700001)(54906003)(316002)(76116006)(66946007)(66556008)(66476007)(64756008)(6916009)(66446008)(122000001)(38100700002)(83380400001)(26005)(82960400001)(38070700009)(52536014)(4326008)(84970400001)(55016003)(2906002)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dDNybWRWRiswck4reDR3R3BVeG8xZWlXZVdYUnBiUXdCbm84Nmd1d1dNRENp?= =?utf-8?B?aXErM0h4NUtZS0V4RytmYTUxMWQrMUZQdWthOXhNbWpDUEVPeDhiME5SMmVT?= =?utf-8?B?QkR0VDVpYU82Tm4rYWRGVlpmSFZwdjdFYUdCMCtFN3IzWXJMekVqem8yZkZW?= =?utf-8?B?VTFpSUpHL0szdVhhSUhIYVpBTjJVa0UvMk5QVW1VNDI3OWJvWmZGRTZPTDdh?= =?utf-8?B?bkVmN2tSS0xxYmtRR0tjV3RXelR6azY2ZElOY2NCOHlTY2pLSkIvTnpqOHJH?= =?utf-8?B?RExEbytYSUk1NVlVOWVraWpYd2tuWWNsQ25rdE1oTmR3bExjUTBKbm1KUUNh?= =?utf-8?B?dmxSa0JDMks3M2Y2dTFYV0Z6T1J4Vkc3RVNRZm5LaExabERZZ0NwM0pXelZU?= =?utf-8?B?QjBDK1BWemx1b2hqRlk2aWYzVnFic0d1bzdvRCtvVXB3UmtkWmZUWW5mUmhT?= =?utf-8?B?ME5sM0NVR29VT3N4T3dZdmJZS04yTW1WRE9wV0pCV0Fxd2NHSVRnMW9uS2c5?= =?utf-8?B?bU9iY2JVUGxDTGwra3c0cWhULzNlTEpiYnQyaTI2SDBMZ2dhWkdoSVY3ZFho?= =?utf-8?B?aWxzb2grc3pWN2RJMXRnVVBUL0lveWVXdDJyenhWQi9iWlZyL0xqVVJSWVlH?= =?utf-8?B?dUZkWDF2TXlJTWdoZmZJVjJXYjNuQUYzdnV6UWVsRFhBYm9MU3czdW1FamVW?= =?utf-8?B?cUlBbEpOYjA2ZGJlZkpvNnMvT0VwQjhORXRtaXlCbDFJR2k1NVdBRThKN0Na?= =?utf-8?B?cXNvRTRzRi96YXFFTVArMzFxS215RUJ2ZHJWVldTT0JlMldudk9DdE9kWlMv?= =?utf-8?B?dk5mYytaeE5GQU1vMDVWNmdNbjJUTjJuVkE2R3ZNQTBmWjVsSnJLb3k4MDRS?= =?utf-8?B?RERNNU90ZlBBSmZKR1FGZFZmL2JkZ1NjY04rT2kyb1hoVjdKZWtXOWVyTWEw?= =?utf-8?B?eTZ6bWFCckJTdTU2cm1oUnBpNGU1bUd1eHNrVjB0NWhaWWJRRU9nbUpQb3JE?= =?utf-8?B?Z3VsYXVrZDE0QWFXa1YwVSsrZUcxOVc0dkZlZ044UVprdTVLZisvQjFQQU1z?= =?utf-8?B?ZEg3aFAxelJNcEliZHZOTzRXMmJrMkprcTZnNXRnNmRZZDMzdFdUL3dpQk5G?= =?utf-8?B?NlpFdzd4a2cxdTdzcEtLaldWd0JzQnErYVEydTJoS2ZTazREQUwyUDhyUXpQ?= =?utf-8?B?S2N5eG5Ockp4byt0N01uRFk3YUNicC93cjBBbVdXRnRnVGYrWU9WdUpHeHV2?= =?utf-8?B?T1E0NmxrdytNRDc1Qnp3bXR4Qjk5RDQrZGtZcE5pNThVZW4vNE1mNS9jTmlK?= =?utf-8?B?cE1Kd0JPU2IrMUQ2ZGkyRmFDblRIdE5CRHdlMmlVNncwUHRXV1lwaEc3Q3ZJ?= =?utf-8?B?NUk4MVQ5VHRwRWdoWE1RYnA1WkNtdHhWVWVvRmM2N0p6OGRrRUZmcHExczF5?= =?utf-8?B?V2VkNEMvb2RzS3lCRk55Z0pmQzFhNXRGZlh3Wi9aWjBHc25YcTgxZHcrZFJj?= =?utf-8?B?dXFpSHVoY1hsTTljTE05Si9FcFltQ2NNcW5oYytKZVB1SlhhcHUyQzgyTGs3?= =?utf-8?B?dTF0OTV1VmNNeE1tVjNlSG9DQ1oxdGg4S0tCdFpYY1M0YXFIVm92eVRoc2pj?= =?utf-8?B?RzY3cG5vV2ZRZWNBS0NrcHNPeTlCTE1XSnBvM0tOQWM5RkhKR0Y3QVZsajc4?= =?utf-8?B?bEk3eDR5V0pMeC9RQzBoOVREanZsN3AyalNsUFQraEpqc2ZBZ3Y3NlphbHdl?= =?utf-8?B?VjQ1UkRGTFFrbHVuYklpWVUxUFhwdFRIazVFMUhYMEo0VVE4OXVmL1VyWDNU?= =?utf-8?B?RUdrUEttRTZwdTBRczc0ektPM2JoSmk3anpSdHlSOXFpS0xLZ2t0QytCNHdD?= =?utf-8?B?TFpDOFdmcmMraUFxa3N5MXVuWFJNTlloZy9WNE1WdGd6c21udzZteVZtYk1G?= =?utf-8?B?QWFyOWtYcWM0OVl2alJUZjl6QjZqZkExTlczNml3dTk0K0hXVUdRMnJuZk81?= =?utf-8?B?SGtmampuRll5WmRra2JDNnN2S2JzMTk4T0pRd3AvdUNlK21teWs1RkwzeXZF?= =?utf-8?B?MldLdTF2cFBRSEljZ0NObG9uODE4RDNyajBGbnRReFRFaUtUMTlIQlUzNXAy?= =?utf-8?Q?vZ1k=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: 0f0523a0-0bf6-439b-2774-08dc10e2fe01 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jan 2024 07:17:08.9332 (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: bHxmlNPqBRrO5oca41jljFoE9yD0wH8PNElCDYpOGpbK7gSpNGEJ5iryUUKnMQncBrSHlqFAUWuqkGEy9eN2UQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR11MB8450 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-13.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,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: VGhlIHRlc3QgY2FzZSBwcjMwOTU3LTEuYyBmaXJzdCBjb21lcyBmcm9tIHRoaXMgY29tbWl0IGFi b3V0IDE5IHllYXJzIGFnbyB3aGljaCBleHBlY3QgdGhlIC0xLjAgZm9yIHRlc3RpbmcuDQoNCmh0 dHBzOi8vZ2l0aHViLmNvbS9nY2MtbWlycm9yL2djYy9jb21taXQvMjkwMzU4Zjc3MGQyMWQ5MjA0 ZWE2MjFmODM5ZWU4ZmJhNjA2YTI3NQ0KDQpUaGVuIHRoZSBiZWxvdyBjb21taXQgY2hhbmdlcyBm cm9tIC0xLjAgdG8gKzEuMCBmb3IgdGhpcyB0ZXN0IGZpbGUgb25seSwgYmVjYXVzZSBvZiB0aGUg aW5zdGFudGlhdGVzIGNvcHkocykgb2YgdGhlDQphY2N1bXVsYXRvciB3aGljaCBpdCBpbml0aWFs aXplcyB3aXRoICswLjAuDQoNCmh0dHBzOi8vZ2l0aHViLmNvbS9nY2MtbWlycm9yL2djYy9jb21t aXQvZmZlZmE5Mjg4YWI5NWIwNmIxZGZlZDk1ZTcyMzVmNGMwOTYxOWE5MQ0KDQpBY2NvcmRpbmcg dG8gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgaW5zZXJ0X3Zhcl9leHBhbnNpb25faW5p dGlhbGl6YXRpb24uIFRoZSB6ZXJvX2luaXQgd2lsbCBiZQ0KdGhlIENPTlNUMF9SVFggKG1vZGUp IGlmIEhPTk9SX1NJR05FRF9aRVJPUyBpcyBmYWxzZS4gSWYgbXkgdW5kZXJzdGFuZGluZyBpcyBj b3JyZWN0LCBtYXliZSB0aGUgdGVzdA0KY2FzZSBpcyBub3Qgd2VsbCBkZXNpZ25lZCBmb3IgdGhl IHZhcmlhYmxlIGV4cGFuZGluZyBpbiB1bnJvbGxpbmc/IEF0IGxlYXN0IGl0IGlzIG5vdCBnb29k IGlkZWEgdG8gbWl4L3JlbHkgb24NCnRoZSBIT05PUl9TSUdORURfWkVST1Mgd2hlbiB0ZXN0aW5n IHZhcmlhYmxlLWV4cGFuc2lvbi1pbi11bnJvbGxlci4NCg0KQ0MgdGhlIG9yaWdpbmFsIGF1dGhv ciBhbmQgcGxlYXNlIGZlZWwgZnJlZSB0byBjb3JyZWN0IG1lIGlmIGFueSBtaXN1bmRlcnN0YW5k aW5nLg0KDQpQYW4NCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IExpLCBQYW4y IA0KU2VudDogVHVlc2RheSwgSmFudWFyeSA5LCAyMDI0IDk6MjIgQU0NClRvOiBSaWNoYXJkIEJp ZW5lciA8cmljaGFyZC5ndWVudGhlckBnbWFpbC5jb20+DQpDYzogZ2NjLXBhdGNoZXNAZ2NjLmdu dS5vcmc7IGp1emhlLnpob25nQHJpdmFpLmFpOyBXYW5nLCBZYW56aGFuZyA8eWFuemhhbmcud2Fu Z0BpbnRlbC5jb20+OyBraXRvLmNoZW5nQGdtYWlsLmNvbTsgamVmZnJleWFsYXdAZ21haWwuY29t DQpTdWJqZWN0OiBSRTogW1BBVENIIHYzXSBSSVNDLVY6IEJ1Z2ZpeCBmb3IgZG9lc24ndCBob25v ciBuby1zaWduZWQtemVyb3Mgb3B0aW9uDQoNClRoYW5rcyBSaWNoYXJkIEIgZm9yIGNvbW1lbnRz Lg0KDQo+IFdlIGRvbid0IHJlYWxseSBleHBlY3QgdGFyZ2V0cyB0byBkbyB0aGlzLiAgVGhlIHNt YWxsIHRlc3RjYXNlIGFib3ZlDQo+IGlzIHNvbWV3aGF0IGlsbC1mb3JtZWQgd2l0aCAtZm5vLXNp Z25lZC16ZXJvcy4gIE5vdGUgdGhlcmUncyBubw0KPiAtMC4wIGluIHByMzA5NTctMS5jIHNvIHdo eSBkb2VzIHRoYXQgb25lIGZhaWwgZm9yIHlvdT8gIERvZXMNCj4gdGhlIC1mdmFyaWFibGUtZXhw YW5zaW9uLWluLXVucm9sbGVyIGNvZGUgbWF5YmUgbm90IHRyaWdnZXIgZm9yDQo+IHJpc2N2Pw0K DQpTb3JyeSB0aGlzIGNvbmZ1c2VkIG1lIGEgbGl0dGxlIGFib3V0IHRoZSBzZW1hdGljcyBvZiB0 aGUgb3B0aW9uIC1mbm8tc2lnbmVkLXplcm9zLg0KSSB3b25kZXIgd2hhdCB0aGUgdGFyZ2V0L2Jh Y2tlbmQgbmVlZCB0byBkbyBmb3IgdGhpcyBvcHRpb24uDQoNCkFib3V0IHRoZSBmYWlsdXJlLCBp dCBjb21lcyBmcm9tIGJlbG93IGNvZGUgaW4gcHIzMDk1Ny0xLmMuIFRoZSAwLjAgLyAtNS4wIGlz IGluaXRpYWxpemVkIHRvIC0wLjAgaW4gcmlzY3YgYnV0ICswLjAgaW4gYWFyY2g2NC4NCg0KICBp ZiAoX19idWlsdGluX2NvcHlzaWduZiAoMS4wLCBmb28gKDAuMCAvIC01LjAsIDEwKSkgIT0gMS4w KQ0KICAgIGFib3J0ICgpOw0KDQpJZiBteSB1bmRlcnN0YW5kaW5nIGlzIGNvcnJlY3QsIHRoZSBs b29wIHdpbGwgYmUgdmVjdG9yaXplZCBkdXJpbmcgdmVjdF90cmFuc2Zvcm1fbG9vcCB3aXRoIGEg dmFyaWFibGUgZmFjdG9yLg0KSXQgd29uJ3QgYmVuZWZpdCBmcm9tIHVucm9sbGluZy9wZWVsaW5n IGFuZCBtYXJrIHRoZSBsb29wLT51bnJvbGwgYXMgMSwgYW5kIHRoZW4gd2UgaGF2ZSB0cmVlLXZl Y3QgbG9nIHNpbWlsYXIgdG8gYmVsb3c6DQoNCkRpc2FibGluZyB1bnJvbGxpbmcgZHVlIHRvIHZh cmlhYmxlLWxlbmd0aCB2ZWN0b3JpemF0aW9uIGZhY3Rvci4NCg0KPiBJIHRoaW5rIHdlIHNob3Vs ZCBnbyB0byBQUjMwOTU3IGFuZCBzZWUgd2hhdCB0aGF0IHdhcyBmaWxlZCBvcmlnaW5hbGx5DQo+ IGZvciwgdGhlIHRlc3RjYXNlIGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlIHRvIG1lLg0KDQpTdXJl IHRoaW5nLCB3aWxsIHRha2UgYSBsb29rIGFuZCBiYWNrIHRvIHlvdSBsYXRlci4NCg0KUGFuDQoN Ci0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBSaWNoYXJkIEJpZW5lciA8cmljaGFy ZC5ndWVudGhlckBnbWFpbC5jb20+IA0KU2VudDogTW9uZGF5LCBKYW51YXJ5IDgsIDIwMjQgNjo0 NSBQTQ0KVG86IExpLCBQYW4yIDxwYW4yLmxpQGludGVsLmNvbT4NCkNjOiBnY2MtcGF0Y2hlc0Bn Y2MuZ251Lm9yZzsganV6aGUuemhvbmdAcml2YWkuYWk7IFdhbmcsIFlhbnpoYW5nIDx5YW56aGFu Zy53YW5nQGludGVsLmNvbT47IGtpdG8uY2hlbmdAZ21haWwuY29tOyBqZWZmcmV5YWxhd0BnbWFp bC5jb20NClN1YmplY3Q6IFJlOiBbUEFUQ0ggdjNdIFJJU0MtVjogQnVnZml4IGZvciBkb2Vzbid0 IGhvbm9yIG5vLXNpZ25lZC16ZXJvcyBvcHRpb24NCg0KT24gVHVlLCBKYW4gMiwgMjAyNCBhdCAy OjM34oCvUE0gPHBhbjIubGlAaW50ZWwuY29tPiB3cm90ZToNCj4NCj4gRnJvbTogUGFuIExpIDxw YW4yLmxpQGludGVsLmNvbT4NCj4NCj4gQWNjb3JkaW5nIHRvIHRoZSBzZW1hdGljcyBvZiBuby1z aWduZWQtemVyb3Mgb3B0aW9uLCB0aGUgYmFja2VuZA0KPiBsaWtlIFJJU0MtViBzaG91bGQgdHJl YXQgdGhlIG1pbnVzIHplcm8gLTAuMGYgYXMgcGx1cyB6ZXJvIDAuMGYuDQo+DQo+IENvbnNpZGVy IGJlbG93IGV4YW1wbGUgd2l0aCBvcHRpb24gLWZuby1zaWduZWQtemVyb3MuDQo+DQo+IHZvaWQN Cj4gdGVzdCAoZmxvYXQgKmEpDQo+IHsNCj4gICAqYSA9IC0wLjA7DQo+IH0NCj4NCj4gV2Ugd2ls bCBnZW5lcmF0ZSBjb2RlIGFzIGJlbG93LCB3aGljaCBkb2Vzbid0IHRyZWF0IHRoZSBtaW51cyB6 ZXJvDQo+IGFzIHBsdXMgemVyby4NCj4NCj4gdGVzdDoNCj4gICBsdWkgIGE1LCVoaSguTEMwKQ0K PiAgIGZsdyAgZmE1LCVsbyguTEMwKShhNSkNCj4gICBmc3cgIGZhNSwwKGEwKQ0KPiAgIHJldA0K Pg0KPiAuTEMwOg0KPiAgIC53b3JkIC0yMTQ3NDgzNjQ4IC8vIGFrYSAtMC4wICgweDgwMDAwMDAw IGluIGhleCkNCj4NCj4gVGhpcyBwYXRjaCB3b3VsZCBsaWtlIHRvIGZpeCB0aGUgYnVnIGFuZCB0 cmVhdCB0aGUgbWludXMgemVybyAtMC4wDQo+IGFzIHBsdXMgemVybywgYWthICswLjAuIFRodXMg YWZ0ZXIgdGhpcyBwYXRjaCB3ZSB3aWxsIGhhdmUgYXNtIGNvZGUNCj4gYXMgYmVsb3cgZm9yIHRo ZSBhYm92ZSBzYW1wZSBjb2RlLg0KPg0KPiB0ZXN0Og0KPiAgIHN3IHplcm8sMChhMCkNCj4gICBy ZXQNCj4NCj4gVGhpcyBwYXRjaCBhbHNvIGZpeCB0aGUgcnVuIGZhaWx1cmUgb2YgdGhlIHRlc3Qg Y2FzZSBwcjMwOTU3LTEuYy4gVGhlDQo+IGJlbG93IHRlc3RzIGFyZSBwYXNzZWQgZm9yIHRoaXMg cGF0Y2guDQoNCldlIGRvbid0IHJlYWxseSBleHBlY3QgdGFyZ2V0cyB0byBkbyB0aGlzLiAgVGhl IHNtYWxsIHRlc3RjYXNlIGFib3ZlDQppcyBzb21ld2hhdCBpbGwtZm9ybWVkIHdpdGggLWZuby1z aWduZWQtemVyb3MuICBOb3RlIHRoZXJlJ3Mgbm8NCi0wLjAgaW4gcHIzMDk1Ny0xLmMgc28gd2h5 IGRvZXMgdGhhdCBvbmUgZmFpbCBmb3IgeW91PyAgRG9lcw0KdGhlIC1mdmFyaWFibGUtZXhwYW5z aW9uLWluLXVucm9sbGVyIGNvZGUgbWF5YmUgbm90IHRyaWdnZXIgZm9yDQpyaXNjdj8NCg0KSSB0 aGluayB3ZSBzaG91bGQgZ28gdG8gUFIzMDk1NyBhbmQgc2VlIHdoYXQgdGhhdCB3YXMgZmlsZWQg b3JpZ2luYWxseQ0KZm9yLCB0aGUgdGVzdGNhc2UgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UgdG8g bWUuDQoNCj4gKiBUaGUgcmlzY3YgcmVncmVzc2lvbiB0ZXN0cy4NCj4gKiBUaGUgcHIzMDk1Ny0x LmMgcnVuIHRlc3RzLg0KPg0KPiBnY2MvQ2hhbmdlTG9nOg0KPg0KPiAgICAgICAgICogY29uZmln L3Jpc2N2L2NvbnN0cmFpbnRzLm1kOiBMZXZlcmFnZSBmdW5jIHJpc2N2X2Zsb2F0X2NvbnN0X3pl cm9fcnR4X3ANCj4gICAgICAgICBmb3IgcHJlZGljYXRpbmcgdGhlIHJ0eCBpcyBjb25zdCB6ZXJv IGZsb2F0IG9yIG5vdC4NCj4gICAgICAgICAqIGNvbmZpZy9yaXNjdi9wcmVkaWNhdGVzLm1kOiBE aXR0by4NCj4gICAgICAgICAqIGNvbmZpZy9yaXNjdi9yaXNjdi5jYyAocmlzY3ZfY29uc3RfaW5z bnMpOiBEaXR0by4NCj4gICAgICAgICAocmlzY3ZfZmxvYXRfY29uc3RfemVyb19ydHhfcCk6IE5l dyBmdW5jIGltcGwgZm9yIHByZWRpY2F0aW5nIHRoZSBydHggaXMNCj4gICAgICAgICBjb25zdCB6 ZXJvIGZsb2F0IG9yIG5vdC4NCj4gICAgICAgICAocmlzY3ZfY29uc3RfemVyb19ydHhfcCk6IE5l dyBmdW5jIGltcGwgZm9yIHByZWRpY2F0aW5nIHRoZSBydHgNCj4gICAgICAgICBpcyBjb25zdCB6 ZXJvIChib3RoIGludCBhbmQgZnApIG9yIG5vdC4NCj4gICAgICAgICAqIGNvbmZpZy9yaXNjdi9y aXNjdi1wcm90b3MuaCAocmlzY3ZfZmxvYXRfY29uc3RfemVyb19ydHhfcCk6DQo+ICAgICAgICAg TmV3IGZ1bmMgZGVjbC4NCj4gICAgICAgICAocmlzY3ZfY29uc3RfemVyb19ydHhfcCk6IERpdHRv Lg0KPiAgICAgICAgICogY29uZmlnL3Jpc2N2L3Jpc2N2Lm1kOiBNYWtpbmcgc3VyZSB0aGUgb3Bl cmFuZFsxXSBvZiBtb3ZmcCBpcw0KPiAgICAgICAgIENPTlNUMF9SVFggd2hlbiB0aGUgb3BlcmFu ZFsxXSBpcyBjb25zdCB6ZXJvIGZsb2F0Lg0KPg0KPiBnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoN Cj4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3Yvbm8tc2lnbmVkLXplcm9zLTAuYzogTmV3 IHRlc3QuDQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L25vLXNpZ25lZC16ZXJvcy0xLmM6 IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9uby1zaWduZWQtemVyb3Mt Mi5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3Yvbm8tc2lnbmVkLXpl cm9zLTMuYzogTmV3IHRlc3QuDQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L25vLXNpZ25l ZC16ZXJvcy00LmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9uby1z aWduZWQtemVyb3MtNS5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3Yv bm8tc2lnbmVkLXplcm9zLXJ1bi0wLmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdl dC9yaXNjdi9uby1zaWduZWQtemVyb3MtcnVuLTEuYzogTmV3IHRlc3QuDQo+DQo+IFNpZ25lZC1v ZmYtYnk6IFBhbiBMaSA8cGFuMi5saUBpbnRlbC5jb20+DQo+IC0tLQ0KPiAgZ2NjL2NvbmZpZy9y aXNjdi9jb25zdHJhaW50cy5tZCAgICAgICAgICAgICAgIHwgIDIgKy0NCj4gIGdjYy9jb25maWcv cmlzY3YvcHJlZGljYXRlcy5tZCAgICAgICAgICAgICAgICB8ICAyICstDQo+ICBnY2MvY29uZmln L3Jpc2N2L3Jpc2N2LXByb3Rvcy5oICAgICAgICAgICAgICAgfCAgMiArDQo+ICBnY2MvY29uZmln L3Jpc2N2L3Jpc2N2LmNjICAgICAgICAgICAgICAgICAgICAgfCAzNSArKysrKysrKysrKystDQo+ ICBnY2MvY29uZmlnL3Jpc2N2L3Jpc2N2Lm1kICAgICAgICAgICAgICAgICAgICAgfCA0OSArKysr KysrKysrKysrKysrLS0tDQo+ICAuLi4vZ2NjLnRhcmdldC9yaXNjdi9uby1zaWduZWQtemVyb3Mt MC5jICAgICAgfCAyNiArKysrKysrKysrDQo+ICAuLi4vZ2NjLnRhcmdldC9yaXNjdi9uby1zaWdu ZWQtemVyb3MtMS5jICAgICAgfCAyOCArKysrKysrKysrKw0KPiAgLi4uL2djYy50YXJnZXQvcmlz Y3Yvbm8tc2lnbmVkLXplcm9zLTIuYyAgICAgIHwgMjYgKysrKysrKysrKw0KPiAgLi4uL2djYy50 YXJnZXQvcmlzY3Yvbm8tc2lnbmVkLXplcm9zLTMuYyAgICAgIHwgMjggKysrKysrKysrKysNCj4g IC4uLi9nY2MudGFyZ2V0L3Jpc2N2L25vLXNpZ25lZC16ZXJvcy00LmMgICAgICB8IDI2ICsrKysr KysrKysNCj4gIC4uLi9nY2MudGFyZ2V0L3Jpc2N2L25vLXNpZ25lZC16ZXJvcy01LmMgICAgICB8 IDI4ICsrKysrKysrKysrDQo+ICAuLi4vZ2NjLnRhcmdldC9yaXNjdi9uby1zaWduZWQtemVyb3Mt cnVuLTAuYyAgfCAzNiArKysrKysrKysrKysrKw0KPiAgLi4uL2djYy50YXJnZXQvcmlzY3Yvbm8t c2lnbmVkLXplcm9zLXJ1bi0xLmMgIHwgMzYgKysrKysrKysrKysrKysNCj4gIDEzIGZpbGVzIGNo YW5nZWQsIDMxNCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkNCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvbm8tc2lnbmVkLXplcm9zLTAu Yw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9u by1zaWduZWQtemVyb3MtMS5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L25vLXNpZ25lZC16ZXJvcy0yLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvbm8tc2lnbmVkLXplcm9zLTMuYw0KPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9uby1zaWdu ZWQtemVyb3MtNC5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L25vLXNpZ25lZC16ZXJvcy01LmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvbm8tc2lnbmVkLXplcm9zLXJ1bi0wLmMNCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvbm8tc2lnbmVk LXplcm9zLXJ1bi0xLmMNCj4NCj4gZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvY29uc3Ry YWludHMubWQgYi9nY2MvY29uZmlnL3Jpc2N2L2NvbnN0cmFpbnRzLm1kDQo+IGluZGV4IGRlNDM1 OWFmMDBkLi5kYjFkNWUxMzg1ZiAxMDA2NDQNCj4gLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9jb25z dHJhaW50cy5tZA0KPiArKysgYi9nY2MvY29uZmlnL3Jpc2N2L2NvbnN0cmFpbnRzLm1kDQo+IEBA IC0xMDgsNyArMTA4LDcgQEAgKGRlZmluZV9jb25zdHJhaW50ICJEblMiDQo+ICAoZGVmaW5lX2Nv bnN0cmFpbnQgIkciDQo+ICAgICJAaW50ZXJuYWwiDQo+ICAgIChhbmQgKG1hdGNoX2NvZGUgImNv bnN0X2RvdWJsZSIpDQo+IC0gICAgICAgKG1hdGNoX3Rlc3QgIm9wID09IENPTlNUMF9SVFggKG1v ZGUpIikpKQ0KPiArICAgICAgIChtYXRjaF90ZXN0ICJyaXNjdl9mbG9hdF9jb25zdF96ZXJvX3J0 eF9wIChvcCkiKSkpDQo+DQo+ICAoZGVmaW5lX21lbW9yeV9jb25zdHJhaW50ICJBIg0KPiAgICAi QW4gYWRkcmVzcyB0aGF0IGlzIGhlbGQgaW4gYSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIuIg0K PiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9wcmVkaWNhdGVzLm1kIGIvZ2NjL2NvbmZp Zy9yaXNjdi9wcmVkaWNhdGVzLm1kDQo+IGluZGV4IGI4N2E2OTAwODQxLi5iNDI4ZDg0MjEwMSAx MDA2NDQNCj4gLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9wcmVkaWNhdGVzLm1kDQo+ICsrKyBiL2dj Yy9jb25maWcvcmlzY3YvcHJlZGljYXRlcy5tZA0KPiBAQCAtNzgsNyArNzgsNyBAQCAoZGVmaW5l X3ByZWRpY2F0ZSAic2xldV9vcGVyYW5kIg0KPg0KPiAgKGRlZmluZV9wcmVkaWNhdGUgImNvbnN0 XzBfb3BlcmFuZCINCj4gICAgKGFuZCAobWF0Y2hfY29kZSAiY29uc3RfaW50LGNvbnN0X3dpZGVf aW50LGNvbnN0X2RvdWJsZSxjb25zdF92ZWN0b3IiKQ0KPiAtICAgICAgIChtYXRjaF90ZXN0ICJv cCA9PSBDT05TVDBfUlRYIChHRVRfTU9ERSAob3ApKSIpKSkNCj4gKyAgICAgICAobWF0Y2hfdGVz dCAicmlzY3ZfY29uc3RfemVyb19ydHhfcCAob3ApIikpKQ0KPg0KPiAgKGRlZmluZV9wcmVkaWNh dGUgImNvbnN0XzFfb3BlcmFuZCINCj4gICAgKGFuZCAobWF0Y2hfY29kZSAiY29uc3RfaW50LGNv bnN0X3dpZGVfaW50LGNvbnN0X3ZlY3RvciIpDQo+IGRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jp c2N2L3Jpc2N2LXByb3Rvcy5oIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1wcm90b3MuaA0KPiBp bmRleCAzMTA0OWVmNzUyMy4uZmNmMzBlMDg0YTMgMTAwNjQ0DQo+IC0tLSBhL2djYy9jb25maWcv cmlzY3YvcmlzY3YtcHJvdG9zLmgNCj4gKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1wcm90 b3MuaA0KPiBAQCAtMTMxLDYgKzEzMSw4IEBAIGV4dGVybiB2b2lkIHJpc2N2X2FzbV9vdXRwdXRf ZXh0ZXJuYWwgKEZJTEUgKiwgY29uc3QgdHJlZSwgY29uc3QgY2hhciAqKTsNCj4gIGV4dGVybiBi b29sDQo+ICByaXNjdl96Y21wX3ZhbGlkX3N0YWNrX2Fkal9ieXRlc19wIChIT1NUX1dJREVfSU5U LCBpbnQpOw0KPiAgZXh0ZXJuIHZvaWQgcmlzY3ZfbGVnaXRpbWl6ZV9wb2x5X21vdmUgKG1hY2hp bmVfbW9kZSwgcnR4LCBydHgsIHJ0eCk7DQo+ICtleHRlcm4gYm9vbCByaXNjdl9mbG9hdF9jb25z dF96ZXJvX3J0eF9wIChydHgpOw0KPiArZXh0ZXJuIGJvb2wgcmlzY3ZfY29uc3RfemVyb19ydHhf cCAocnR4KTsNCj4NCj4gICNpZmRlZiBSVFhfQ09ERQ0KPiAgZXh0ZXJuIHZvaWQgcmlzY3ZfZXhw YW5kX2ludF9zY2MgKHJ0eCwgZW51bSBydHhfY29kZSwgcnR4LCBydHgsIGJvb2wgKmludmVydF9w dHIgPSAwKTsNCj4gZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YuY2MgYi9nY2Mv Y29uZmlnL3Jpc2N2L3Jpc2N2LmNjDQo+IGluZGV4IDBkMWNiYzVjYjVmLi5hOGFkODZiNzA2OCAx MDA2NDQNCj4gLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jYw0KPiArKysgYi9nY2MvY29u ZmlnL3Jpc2N2L3Jpc2N2LmNjDQo+IEBAIC0xNjM1LDcgKzE2MzUsNyBAQCByaXNjdl9jb25zdF9p bnNucyAocnR4IHgpDQo+ICAgICAgICAgcmV0dXJuIDE7DQo+DQo+ICAgICAgICAvKiBXZSBjYW4g dXNlIHgwIHRvIGxvYWQgZmxvYXRpbmctcG9pbnQgemVyby4gICovDQo+IC0gICAgICByZXR1cm4g eCA9PSBDT05TVDBfUlRYIChHRVRfTU9ERSAoeCkpID8gMSA6IDA7DQo+ICsgICAgICByZXR1cm4g cmlzY3ZfZmxvYXRfY29uc3RfemVyb19ydHhfcCAoeCkgPyAxIDogMDsNCj4gICAgICBjYXNlIENP TlNUX1ZFQ1RPUjoNCj4gICAgICAgIHsNCj4gICAgICAgICAvKiBUT0RPOiBUaGlzIGlzIG5vdCBh Y2N1cmF0ZSwgd2Ugd2lsbCBuZWVkIHRvDQo+IEBAIC05NDgxLDYgKzk0ODEsMzkgQEAgcmlzY3Zf emNtcF92YWxpZF9zdGFja19hZGpfYnl0ZXNfcCAoSE9TVF9XSURFX0lOVCB0b3RhbCwgaW50IHJl Z3NfbnVtKQ0KPiAgICAgICAgICB8fCBhZGRpdGlvYW5sX2J5dGVzID09IFpDTVBfTUFYX1NQSU1N ICogWkNNUF9TUF9JTkNfU1RFUDsNCj4gIH0NCj4NCj4gKy8qIFJldHVybiB0cnVlIGlmIHJ0eCBv cCBpcyBjb25zdCB6ZXJvIG9mIHRoZSBmbG9hdGluZy1wb2ludC4gICovDQo+ICtib29sDQo+ICty aXNjdl9mbG9hdF9jb25zdF96ZXJvX3J0eF9wIChydHggb3ApDQo+ICt7DQo+ICsgIG1hY2hpbmVf bW9kZSBtb2RlID0gR0VUX01PREUgKG9wKTsNCj4gKw0KPiArICBpZiAoR0VUX01PREVfQ0xBU1Mg KG1vZGUpICE9IE1PREVfRkxPQVQpDQo+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsgIGlm IChHRVRfQ09ERSAob3ApICE9IENPTlNUX0RPVUJMRSkNCj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ ICsNCj4gKyAgY29uc3Qgc3RydWN0IHJlYWxfdmFsdWUgKm9wX3J2YWx1ZSA9IENPTlNUX0RPVUJM RV9SRUFMX1ZBTFVFIChvcCk7DQo+ICsNCj4gKyAgaWYgKFJFQUxfVkFMVUVfTUlOVVNfWkVSTyAo Km9wX3J2YWx1ZSkpDQo+ICsgICAgcmV0dXJuICFIT05PUl9TSUdORURfWkVST1MgKG1vZGUpOw0K PiArDQo+ICsgIHJldHVybiByZWFsX2VxdWFsIChvcF9ydmFsdWUsICZkY29uc3QwKTsNCj4gK30N Cj4gKw0KPiArLyogUmV0dXJuIHRydWUgaWYgcnR4IG9wIGlzIGNvbnN0IHplcm8sIGluY2x1ZGUg Ym90aCB0aGUgaW50ZWdlcg0KPiArICAgYW5kIGZsb2F0aW5nLXBvaW50LiAgKi8NCj4gK2Jvb2wN Cj4gK3Jpc2N2X2NvbnN0X3plcm9fcnR4X3AgKHJ0eCBvcCkNCj4gK3sNCj4gKyAgbWFjaGluZV9t b2RlIG1vZGUgPSBHRVRfTU9ERSAob3ApOw0KPiArDQo+ICsgIGlmIChHRVRfTU9ERV9DTEFTUyAo bW9kZSkgPT0gTU9ERV9GTE9BVCkNCj4gKyAgICByZXR1cm4gcmlzY3ZfZmxvYXRfY29uc3RfemVy b19ydHhfcCAob3ApOw0KPiArDQo+ICsgIHJldHVybiBvcCA9PSBDT05TVDBfUlRYIChtb2RlKTsN Cj4gK30NCj4gKw0KPiAgLyogUmV0dXJuIHRydWUgaWYgaXQncyB2YWxpZCBncHJfc2F2ZSBwYXR0 ZXJuLiAgKi8NCj4NCj4gIGJvb2wNCj4gZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3Yvcmlz Y3YubWQgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2Lm1kDQo+IGluZGV4IDY4ZjcyMDNiNjc2Li5j ZDQyOWY2ZGNkZCAxMDA2NDQNCj4gLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5tZA0KPiAr KysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2Lm1kDQo+IEBAIC0xODc4LDcgKzE4NzgsMTIgQEAg KGRlZmluZV9pbnNuICIqbW92aGZfaGFyZGZsb2F0Ig0KPiAgICAiVEFSR0VUX1pGSE1JTg0KPiAg ICAgJiYgKHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzBdLCBIRm1vZGUpDQo+ICAgICAgICAg fHwgcmVnX29yXzBfb3BlcmFuZCAob3BlcmFuZHNbMV0sIEhGbW9kZSkpIg0KPiAtICB7IHJldHVy biByaXNjdl9vdXRwdXRfbW92ZSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsgfQ0KPiArICB7 DQo+ICsgICAgaWYgKHJpc2N2X2Zsb2F0X2NvbnN0X3plcm9fcnR4X3AgKG9wZXJhbmRzWzFdKSkN Cj4gKyAgICAgIG9wZXJhbmRzWzFdID0gQ09OU1QwX1JUWCAoR0VUX01PREUgKG9wZXJhbmRzWzFd KSk7DQo+ICsNCj4gKyAgICByZXR1cm4gcmlzY3Zfb3V0cHV0X21vdmUgKG9wZXJhbmRzWzBdLCBv cGVyYW5kc1sxXSk7DQo+ICsgIH0NCj4gICAgWyhzZXRfYXR0ciAibW92ZV90eXBlIiAiZm1vdmUs Zm1vdmUsbXRjLGZwbG9hZCxmcHN0b3JlLHN0b3JlLG10YyxtZmMsbW92ZSxsb2FkLHN0b3JlIikN Cj4gICAgIChzZXRfYXR0ciAidHlwZSIgImZtb3ZlIikNCj4gICAgIChzZXRfYXR0ciAibW9kZSIg IkhGIildKQ0KPiBAQCAtMTg4OSw3ICsxODk0LDEyIEBAIChkZWZpbmVfaW5zbiAiKm1vdmhmX3Nv ZnRmbG9hdCINCj4gICAgIiFUQVJHRVRfWkZITUlODQo+ICAgICAmJiAocmVnaXN0ZXJfb3BlcmFu ZCAob3BlcmFuZHNbMF0sIEhGbW9kZSkNCj4gICAgICAgICB8fCByZWdfb3JfMF9vcGVyYW5kIChv cGVyYW5kc1sxXSwgSEZtb2RlKSkiDQo+IC0gIHsgcmV0dXJuIHJpc2N2X291dHB1dF9tb3ZlIChv cGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pOyB9DQo+ICsgIHsNCj4gKyAgICBpZiAocmlzY3ZfZmxv YXRfY29uc3RfemVyb19ydHhfcCAob3BlcmFuZHNbMV0pKQ0KPiArICAgICAgb3BlcmFuZHNbMV0g PSBDT05TVDBfUlRYIChHRVRfTU9ERSAob3BlcmFuZHNbMV0pKTsNCj4gKw0KPiArICAgIHJldHVy biByaXNjdl9vdXRwdXRfbW92ZSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsNCj4gKyAgfQ0K PiAgICBbKHNldF9hdHRyICJtb3ZlX3R5cGUiICJmbW92ZSxtb3ZlLGxvYWQsc3RvcmUsbXRjLG1m YyIpDQo+ICAgICAoc2V0X2F0dHIgInR5cGUiICJmbW92ZSIpDQo+ICAgICAoc2V0X2F0dHIgIm1v ZGUiICJIRiIpXSkNCj4gQEAgLTIyNDMsNyArMjI1MywxMiBAQCAoZGVmaW5lX2luc24gIiptb3Zz Zl9oYXJkZmxvYXQiDQo+ICAgICJUQVJHRVRfSEFSRF9GTE9BVA0KPiAgICAgJiYgKHJlZ2lzdGVy X29wZXJhbmQgKG9wZXJhbmRzWzBdLCBTRm1vZGUpDQo+ICAgICAgICAgfHwgcmVnX29yXzBfb3Bl cmFuZCAob3BlcmFuZHNbMV0sIFNGbW9kZSkpIg0KPiAtICB7IHJldHVybiByaXNjdl9vdXRwdXRf bW92ZSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsgfQ0KPiArICB7DQo+ICsgICAgaWYgKHJp c2N2X2Zsb2F0X2NvbnN0X3plcm9fcnR4X3AgKG9wZXJhbmRzWzFdKSkNCj4gKyAgICAgIG9wZXJh bmRzWzFdID0gQ09OU1QwX1JUWCAoR0VUX01PREUgKG9wZXJhbmRzWzFdKSk7DQo+ICsNCj4gKyAg ICByZXR1cm4gcmlzY3Zfb3V0cHV0X21vdmUgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSk7DQo+ ICsgIH0NCj4gICAgWyhzZXRfYXR0ciAibW92ZV90eXBlIiAiZm1vdmUsZm1vdmUsbXRjLGZwbG9h ZCxmcHN0b3JlLHN0b3JlLG10YyxtZmMsbW92ZSxsb2FkLHN0b3JlIikNCj4gICAgIChzZXRfYXR0 ciAidHlwZSIgImZtb3ZlIikNCj4gICAgIChzZXRfYXR0ciAibW9kZSIgIlNGIildKQ0KPiBAQCAt MjI1NCw3ICsyMjY5LDEyIEBAIChkZWZpbmVfaW5zbiAiKm1vdnNmX3NvZnRmbG9hdCINCj4gICAg IiFUQVJHRVRfSEFSRF9GTE9BVA0KPiAgICAgJiYgKHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRz WzBdLCBTRm1vZGUpDQo+ICAgICAgICAgfHwgcmVnX29yXzBfb3BlcmFuZCAob3BlcmFuZHNbMV0s IFNGbW9kZSkpIg0KPiAtICB7IHJldHVybiByaXNjdl9vdXRwdXRfbW92ZSAob3BlcmFuZHNbMF0s IG9wZXJhbmRzWzFdKTsgfQ0KPiArICB7DQo+ICsgICAgaWYgKHJpc2N2X2Zsb2F0X2NvbnN0X3pl cm9fcnR4X3AgKG9wZXJhbmRzWzFdKSkNCj4gKyAgICAgIG9wZXJhbmRzWzFdID0gQ09OU1QwX1JU WCAoR0VUX01PREUgKG9wZXJhbmRzWzFdKSk7DQo+ICsNCj4gKyAgICByZXR1cm4gcmlzY3Zfb3V0 cHV0X21vdmUgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSk7DQo+ICsgIH0NCj4gICAgWyhzZXRf YXR0ciAibW92ZV90eXBlIiAibW92ZSxsb2FkLHN0b3JlIikNCj4gICAgIChzZXRfYXR0ciAidHlw ZSIgImZtb3ZlIikNCj4gICAgIChzZXRfYXR0ciAibW9kZSIgIlNGIildKQ0KPiBAQCAtMjI3OSw3 ICsyMjk5LDEyIEBAIChkZWZpbmVfaW5zbiAiKm1vdmRmX2hhcmRmbG9hdF9ydjMyIg0KPiAgICAi IVRBUkdFVF82NEJJVCAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUDQo+ICAgICAmJiAocmVnaXN0ZXJf b3BlcmFuZCAob3BlcmFuZHNbMF0sIERGbW9kZSkNCj4gICAgICAgICB8fCByZWdfb3JfMF9vcGVy YW5kIChvcGVyYW5kc1sxXSwgREZtb2RlKSkiDQo+IC0gIHsgcmV0dXJuIHJpc2N2X291dHB1dF9t b3ZlIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pOyB9DQo+ICsgIHsNCj4gKyAgICBpZiAocmlz Y3ZfZmxvYXRfY29uc3RfemVyb19ydHhfcCAob3BlcmFuZHNbMV0pKQ0KPiArICAgICAgb3BlcmFu ZHNbMV0gPSBDT05TVDBfUlRYIChHRVRfTU9ERSAob3BlcmFuZHNbMV0pKTsNCj4gKw0KPiArICAg IHJldHVybiByaXNjdl9vdXRwdXRfbW92ZSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsNCj4g KyAgfQ0KPiAgICBbKHNldF9hdHRyICJtb3ZlX3R5cGUiICJmbW92ZSxmbW92ZSxtdGMsZnBsb2Fk LGZwc3RvcmUsc3RvcmUsbXRjLG1mYyxtb3ZlLGxvYWQsc3RvcmUiKQ0KPiAgICAgKHNldF9hdHRy ICJ0eXBlIiAiZm1vdmUiKQ0KPiAgICAgKHNldF9hdHRyICJtb2RlIiAiREYiKV0pDQo+IEBAIC0y MjkwLDcgKzIzMTUsMTIgQEAgKGRlZmluZV9pbnNuICIqbW92ZGZfaGFyZGZsb2F0X3J2NjQiDQo+ ICAgICJUQVJHRVRfNjRCSVQgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVA0KPiAgICAgJiYgKHJlZ2lz dGVyX29wZXJhbmQgKG9wZXJhbmRzWzBdLCBERm1vZGUpDQo+ICAgICAgICAgfHwgcmVnX29yXzBf b3BlcmFuZCAob3BlcmFuZHNbMV0sIERGbW9kZSkpIg0KPiAtICB7IHJldHVybiByaXNjdl9vdXRw dXRfbW92ZSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsgfQ0KPiArICB7DQo+ICsgICAgaWYg KHJpc2N2X2Zsb2F0X2NvbnN0X3plcm9fcnR4X3AgKG9wZXJhbmRzWzFdKSkNCj4gKyAgICAgIG9w ZXJhbmRzWzFdID0gQ09OU1QwX1JUWCAoR0VUX01PREUgKG9wZXJhbmRzWzFdKSk7DQo+ICsNCj4g KyAgICByZXR1cm4gcmlzY3Zfb3V0cHV0X21vdmUgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSk7 DQo+ICsgIH0NCj4gICAgWyhzZXRfYXR0ciAibW92ZV90eXBlIiAiZm1vdmUsZm1vdmUsbXRjLGZw bG9hZCxmcHN0b3JlLHN0b3JlLG10YyxtZmMsbW92ZSxsb2FkLHN0b3JlIikNCj4gICAgIChzZXRf YXR0ciAidHlwZSIgImZtb3ZlIikNCj4gICAgIChzZXRfYXR0ciAibW9kZSIgIkRGIildKQ0KPiBA QCAtMjMwMSw3ICsyMzMxLDEyIEBAIChkZWZpbmVfaW5zbiAiKm1vdmRmX3NvZnRmbG9hdCINCj4g ICAgIiFUQVJHRVRfRE9VQkxFX0ZMT0FUDQo+ICAgICAmJiAocmVnaXN0ZXJfb3BlcmFuZCAob3Bl cmFuZHNbMF0sIERGbW9kZSkNCj4gICAgICAgICB8fCByZWdfb3JfMF9vcGVyYW5kIChvcGVyYW5k c1sxXSwgREZtb2RlKSkiDQo+IC0gIHsgcmV0dXJuIHJpc2N2X291dHB1dF9tb3ZlIChvcGVyYW5k c1swXSwgb3BlcmFuZHNbMV0pOyB9DQo+ICsgIHsNCj4gKyAgICBpZiAocmlzY3ZfZmxvYXRfY29u c3RfemVyb19ydHhfcCAob3BlcmFuZHNbMV0pKQ0KPiArICAgICAgb3BlcmFuZHNbMV0gPSBDT05T VDBfUlRYIChHRVRfTU9ERSAob3BlcmFuZHNbMV0pKTsNCj4gKw0KPiArICAgIHJldHVybiByaXNj dl9vdXRwdXRfbW92ZSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsNCj4gKyAgfQ0KPiAgICBb KHNldF9hdHRyICJtb3ZlX3R5cGUiICJtb3ZlLGxvYWQsc3RvcmUiKQ0KPiAgICAgKHNldF9hdHRy ICJ0eXBlIiAiZm1vdmUiKQ0KPiAgICAgKHNldF9hdHRyICJtb2RlIiAiREYiKV0pDQo+IGRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvbm8tc2lnbmVkLXplcm9zLTAu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9uby1zaWduZWQtemVyb3MtMC5jDQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi4xZWRhMTNhMzQwNg0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9u by1zaWduZWQtemVyb3MtMC5jDQo+IEBAIC0wLDAgKzEsMjYgQEANCj4gKy8qIHsgZGctZG8gY29t cGlsZSB9ICovDQo+ICsvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjY0Z2N2IC1tYWJpPWxwNjRk IC1PMyAtZm5vLXNpZ25lZC16ZXJvcyAtZm5vLXNjaGVkdWxlLWluc25zIC1mbm8tc2NoZWR1bGUt aW5zbnMyIiB9ICovDQo+ICsvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsgIi1mbHRvIiB9 IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiB9 IH0gKi8NCj4gKw0KPiArLyoNCj4gKyoqIHRlc3RfZmxvYXRfcGx1c196ZXJvX2Fzc2lnbjoNCj4g KyoqIHN3XHMremVybywwXChbYXR4XVswLTldK1wpDQo+ICsqKiByZXQNCj4gKyovDQo+ICt2b2lk DQo+ICt0ZXN0X2Zsb2F0X3BsdXNfemVyb19hc3NpZ24gKGZsb2F0ICphKQ0KPiArew0KPiArICAq YSA9ICswLjA7DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsqKiB0ZXN0X2Zsb2F0X3BsdXNfemVyb19h c3NpZ246DQo+ICsqKiBzd1xzK3plcm8sMFwoW2F0eF1bMC05XStcKQ0KPiArKiogcmV0DQo+ICsq Lw0KPiArdm9pZA0KPiArdGVzdF9mbG9hdF9taW51c196ZXJvX2Fzc2lnbiAoZmxvYXQgKmEpDQo+ ICt7DQo+ICsgICphID0gLTAuMDsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9yaXNjdi9uby1zaWduZWQtemVyb3MtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L25vLXNpZ25lZC16ZXJvcy0xLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXggMDAwMDAwMDAwMDAuLjgwNDFlYzNlYTk1DQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L25vLXNpZ25lZC16ZXJvcy0xLmMNCj4g QEAgLTAsMCArMSwyOCBAQA0KPiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCj4gKy8qIHsgZGct b3B0aW9ucyAiLW1hcmNoPXJ2NjRnY3YgLW1hYmk9bHA2NGQgLU8zIC1mbm8tc2lnbmVkLXplcm9z IC1mbm8tc2NoZWR1bGUtaW5zbnMgLWZuby1zY2hlZHVsZS1pbnNuczIiIH0gKi8NCj4gKy8qIHsg ZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLWZsdG8iIH0gfSAqLw0KPiArLyogeyBkZy1maW5h bCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiIH0gfSAqLw0KPiArDQo+ICtleHRlcm4g dm9pZCBmbG9hdF9hc3NpZ24gKGZsb2F0ICphLCBmbG9hdCBiKTsNCj4gKw0KPiArLyoNCj4gKyoq IHRlc3RfZmxvYXRfcGx1c196ZXJvX2Fzc2lnbjoNCj4gKyoqIGZtdlwuc1wueFxzK2ZhWzAtOV0r LFxzKnplcm8NCj4gKyoqIHRhaWxccytmbG9hdF9hc3NpZ24NCj4gKyovDQo+ICt2b2lkDQo+ICt0 ZXN0X2Zsb2F0X3BsdXNfemVyb19hc3NpZ24gKGZsb2F0ICphKQ0KPiArew0KPiArICBmbG9hdF9h c3NpZ24gKGEsICswLjApOw0KPiArfQ0KPiArDQo+ICsvKg0KPiArKiogdGVzdF9mbG9hdF9taW51 c196ZXJvX2Fzc2lnbjoNCj4gKyoqIGZtdlwuc1wueFxzK2ZhWzAtOV0rLFxzKnplcm8NCj4gKyoq IHRhaWxccytmbG9hdF9hc3NpZ24NCj4gKyovDQo+ICt2b2lkDQo+ICt0ZXN0X2Zsb2F0X21pbnVz X3plcm9fYXNzaWduIChmbG9hdCAqYSkNCj4gK3sNCj4gKyAgZmxvYXRfYXNzaWduIChhLCAtMC4w KTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9u by1zaWduZWQtemVyb3MtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L25vLXNp Z25lZC16ZXJvcy0yLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MDAuLmE2OTk2ZGFlNGRlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L25vLXNpZ25lZC16ZXJvcy0yLmMNCj4gQEAgLTAsMCArMSwyNiBAQA0K PiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCj4gKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2 NjRnY3YgLW1hYmk9bHA2NGQgLU8zIC1mbm8tc2lnbmVkLXplcm9zIC1mbm8tc2NoZWR1bGUtaW5z bnMgLWZuby1zY2hlZHVsZS1pbnNuczIiIH0gKi8NCj4gKy8qIHsgZGctc2tpcC1pZiAiIiB7ICot Ki0qIH0geyAiLWZsdG8iIH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9u LWJvZGllcyAiKioiICIiIH0gfSAqLw0KPiArDQo+ICsvKg0KPiArKiogdGVzdF9mbG9hdF9wbHVz X3plcm9fYXNzaWduOg0KPiArKiogc2Rccyt6ZXJvLDBcKFthdHhdWzAtOV0rXCkNCj4gKyoqIHJl dA0KPiArKi8NCj4gK3ZvaWQNCj4gK3Rlc3RfZmxvYXRfcGx1c196ZXJvX2Fzc2lnbiAoZG91Ymxl ICphKQ0KPiArew0KPiArICAqYSA9ICswLjA7DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsqKiB0ZXN0 X2Zsb2F0X3BsdXNfemVyb19hc3NpZ246DQo+ICsqKiBzZFxzK3plcm8sMFwoW2F0eF1bMC05XStc KQ0KPiArKiogcmV0DQo+ICsqLw0KPiArdm9pZA0KPiArdGVzdF9mbG9hdF9taW51c196ZXJvX2Fz c2lnbiAoZG91YmxlICphKQ0KPiArew0KPiArICAqYSA9IC0wLjA7DQo+ICt9DQo+IGRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvbm8tc2lnbmVkLXplcm9zLTMuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9uby1zaWduZWQtemVyb3MtMy5jDQo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi5iNGJhOGEyNDdkZg0KPiAt LS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9uby1z aWduZWQtemVyb3MtMy5jDQo+IEBAIC0wLDAgKzEsMjggQEANCj4gKy8qIHsgZGctZG8gY29tcGls ZSB9ICovDQo+ICsvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjY0Z2N2IC1tYWJpPWxwNjRkIC1P MyAtZm5vLXNpZ25lZC16ZXJvcyAtZm5vLXNjaGVkdWxlLWluc25zIC1mbm8tc2NoZWR1bGUtaW5z bnMyIiB9ICovDQo+ICsvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsgIi1mbHRvIiB9IH0g Ki8NCj4gKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiB9IH0g Ki8NCj4gKw0KPiArZXh0ZXJuIHZvaWQgZmxvYXRfYXNzaWduIChkb3VibGUgKmEsIGRvdWJsZSBi KTsNCj4gKw0KPiArLyoNCj4gKyoqIHRlc3RfZmxvYXRfcGx1c196ZXJvX2Fzc2lnbjoNCj4gKyoq IGZtdlwuZFwueFxzK2ZhWzAtOV0rLFxzKnplcm8NCj4gKyoqIHRhaWxccytmbG9hdF9hc3NpZ24N Cj4gKyovDQo+ICt2b2lkDQo+ICt0ZXN0X2Zsb2F0X3BsdXNfemVyb19hc3NpZ24gKGRvdWJsZSAq YSkNCj4gK3sNCj4gKyAgZmxvYXRfYXNzaWduIChhLCArMC4wKTsNCj4gK30NCj4gKw0KPiArLyoN Cj4gKyoqIHRlc3RfZmxvYXRfbWludXNfemVyb19hc3NpZ246DQo+ICsqKiBmbXZcLmRcLnhccytm YVswLTldKyxccyp6ZXJvDQo+ICsqKiB0YWlsXHMrZmxvYXRfYXNzaWduDQo+ICsqLw0KPiArdm9p ZA0KPiArdGVzdF9mbG9hdF9taW51c196ZXJvX2Fzc2lnbiAoZG91YmxlICphKQ0KPiArew0KPiAr ICBmbG9hdF9hc3NpZ24gKGEsIC0wLjApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L25vLXNpZ25lZC16ZXJvcy00LmMgYi9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvcmlzY3Yvbm8tc2lnbmVkLXplcm9zLTQuYw0KPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uNjBhY2Y3MTU1ZDMNCj4gLS0tIC9kZXYvbnVsbA0K PiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvbm8tc2lnbmVkLXplcm9zLTQu Yw0KPiBAQCAtMCwwICsxLDI2IEBADQo+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiArLyog eyBkZy1vcHRpb25zICItbWFyY2g9cnY2NGdjdl96ZmggLW1hYmk9bHA2NGQgLU8zIC1mbm8tc2ln bmVkLXplcm9zIC1mbm8tc2NoZWR1bGUtaW5zbnMgLWZuby1zY2hlZHVsZS1pbnNuczIiIH0gKi8N Cj4gKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLWZsdG8iIH0gfSAqLw0KPiArLyog eyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiIH0gfSAqLw0KPiArDQo+ ICsvKg0KPiArKiogdGVzdF9mbG9hdF9wbHVzX3plcm9fYXNzaWduOg0KPiArKiogc2hccyt6ZXJv LDBcKFthdHhdWzAtOV0rXCkNCj4gKyoqIHJldA0KPiArKi8NCj4gK3ZvaWQNCj4gK3Rlc3RfZmxv YXRfcGx1c196ZXJvX2Fzc2lnbiAoX0Zsb2F0MTYgKmEpDQo+ICt7DQo+ICsgICphID0gKzAuMDsN Cj4gK30NCj4gKw0KPiArLyoNCj4gKyoqIHRlc3RfZmxvYXRfcGx1c196ZXJvX2Fzc2lnbjoNCj4g KyoqIHNoXHMremVybywwXChbYXR4XVswLTldK1wpDQo+ICsqKiByZXQNCj4gKyovDQo+ICt2b2lk DQo+ICt0ZXN0X2Zsb2F0X21pbnVzX3plcm9fYXNzaWduIChfRmxvYXQxNiAqYSkNCj4gK3sNCj4g KyAgKmEgPSAtMC4wOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L25vLXNpZ25lZC16ZXJvcy01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3Yvbm8tc2lnbmVkLXplcm9zLTUuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwMDAwMC4uZDEwZWZiZWIzN2INCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvbm8tc2lnbmVkLXplcm9zLTUuYw0KPiBAQCAtMCww ICsxLDI4IEBADQo+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiArLyogeyBkZy1vcHRpb25z ICItbWFyY2g9cnY2NGdjdl96ZmggLW1hYmk9bHA2NGQgLU8zIC1mbm8tc2lnbmVkLXplcm9zIC1m bm8tc2NoZWR1bGUtaW5zbnMgLWZuby1zY2hlZHVsZS1pbnNuczIiIH0gKi8NCj4gKy8qIHsgZGct c2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLWZsdG8iIH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7 IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiIH0gfSAqLw0KPiArDQo+ICtleHRlcm4gdm9p ZCBmbG9hdF9hc3NpZ24gKF9GbG9hdDE2ICphLCBfRmxvYXQxNiBiKTsNCj4gKw0KPiArLyoNCj4g KyoqIHRlc3RfZmxvYXRfcGx1c196ZXJvX2Fzc2lnbjoNCj4gKyoqIGZtdlwuaFwueFxzK2ZhWzAt OV0rLFxzKnplcm8NCj4gKyoqIHRhaWxccytmbG9hdF9hc3NpZ24NCj4gKyovDQo+ICt2b2lkDQo+ ICt0ZXN0X2Zsb2F0X3BsdXNfemVyb19hc3NpZ24gKF9GbG9hdDE2ICphKQ0KPiArew0KPiArICBm bG9hdF9hc3NpZ24gKGEsICswLjApOw0KPiArfQ0KPiArDQo+ICsvKg0KPiArKiogdGVzdF9mbG9h dF9taW51c196ZXJvX2Fzc2lnbjoNCj4gKyoqIGZtdlwuaFwueFxzK2ZhWzAtOV0rLFxzKnplcm8N Cj4gKyoqIHRhaWxccytmbG9hdF9hc3NpZ24NCj4gKyovDQo+ICt2b2lkDQo+ICt0ZXN0X2Zsb2F0 X21pbnVzX3plcm9fYXNzaWduIChfRmxvYXQxNiAqYSkNCj4gK3sNCj4gKyAgZmxvYXRfYXNzaWdu IChhLCAtMC4wKTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9uby1zaWduZWQtemVyb3MtcnVuLTAuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9uby1zaWduZWQtemVyb3MtcnVuLTAuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiBpbmRleCAwMDAwMDAwMDAwMC4uMzQ3ZTRiMGZmNzQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvbm8tc2lnbmVkLXplcm9zLXJ1bi0wLmMN Cj4gQEAgLTAsMCArMSwzNiBAQA0KPiArLyogeyBkZy1kbyBydW4geyB0YXJnZXQgeyByaXNjdl92 IH0gfSB9ICovDQo+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLXN0ZD1jOTkgLU8zIC1m bm8tc2lnbmVkLXplcm9zIiB9ICovDQo+ICsNCj4gK2Zsb2F0IGZfdmFsOw0KPiArDQo+ICt2b2lk DQo+ICtfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQ0KPiArdGVzdF9mbG9hdF9wbHVzX3plcm9f YXNzaWduIChmbG9hdCAqYSkNCj4gK3sNCj4gKyAgKmEgPSArMC4wOw0KPiArfQ0KPiArDQo+ICt2 b2lkDQo+ICtfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQ0KPiArdGVzdF9mbG9hdF9taW51c196 ZXJvX2Fzc2lnbiAoZmxvYXQgKmEpDQo+ICt7DQo+ICsgICphID0gLTAuMDsNCj4gK30NCj4gKw0K PiAraW50DQo+ICttYWluICgpDQo+ICt7DQo+ICsgIGZfdmFsID0gLTEuMDsNCj4gKyAgdGVzdF9m bG9hdF9wbHVzX3plcm9fYXNzaWduICgmZl92YWwpOw0KPiArDQo+ICsgIGlmIChfX2J1aWx0aW5f Y29weXNpZ25mICgxLjAsIGZfdmFsKSAhPSAxLjApDQo+ICsgICAgX19idWlsdGluX2Fib3J0ICgp Ow0KPiArDQo+ICsgIGZfdmFsID0gLTEuMDsNCj4gKyAgdGVzdF9mbG9hdF9taW51c196ZXJvX2Fz c2lnbiAoJmZfdmFsKTsNCj4gKw0KPiArICBpZiAoX19idWlsdGluX2NvcHlzaWduZiAoMS4wLCBm X3ZhbCkgIT0gMS4wKQ0KPiArICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4gKw0KPiArICByZXR1 cm4gMDsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9uby1zaWduZWQtemVyb3MtcnVuLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9uby1zaWduZWQtemVyb3MtcnVuLTEuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwMDAwMC4uMWViMWVkYmE0NTcNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvbm8tc2lnbmVkLXplcm9zLXJ1bi0xLmMNCj4gQEAg LTAsMCArMSwzNiBAQA0KPiArLyogeyBkZy1kbyBydW4geyB0YXJnZXQgeyByaXNjdl92IH0gfSB9 ICovDQo+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLXN0ZD1jOTkgLU8zIC1mbm8tc2ln bmVkLXplcm9zIiB9ICovDQo+ICsNCj4gK2RvdWJsZSBmX3ZhbDsNCj4gKw0KPiArdm9pZA0KPiAr X19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkNCj4gK3Rlc3RfZmxvYXRfcGx1c196ZXJvX2Fzc2ln biAoZG91YmxlICphKQ0KPiArew0KPiArICAqYSA9ICswLjA7DQo+ICt9DQo+ICsNCj4gK3ZvaWQN Cj4gK19fYXR0cmlidXRlX18gKChub2lubGluZSkpDQo+ICt0ZXN0X2Zsb2F0X21pbnVzX3plcm9f YXNzaWduIChkb3VibGUgKmEpDQo+ICt7DQo+ICsgICphID0gLTAuMDsNCj4gK30NCj4gKw0KPiAr aW50DQo+ICttYWluICgpDQo+ICt7DQo+ICsgIGZfdmFsID0gLTEuMDsNCj4gKyAgdGVzdF9mbG9h dF9wbHVzX3plcm9fYXNzaWduICgmZl92YWwpOw0KPiArDQo+ICsgIGlmIChfX2J1aWx0aW5fY29w eXNpZ25mICgxLjAsIGZfdmFsKSAhPSAxLjApDQo+ICsgICAgX19idWlsdGluX2Fib3J0ICgpOw0K PiArDQo+ICsgIGZfdmFsID0gLTEuMDsNCj4gKyAgdGVzdF9mbG9hdF9taW51c196ZXJvX2Fzc2ln biAoJmZfdmFsKTsNCj4gKw0KPiArICBpZiAoX19idWlsdGluX2NvcHlzaWduZiAoMS4wLCBmX3Zh bCkgIT0gMS4wKQ0KPiArICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4gKw0KPiArICByZXR1cm4g MDsNCj4gK30NCj4gLS0NCj4gMi4zNC4xDQo+DQo=