From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 9756D740039 for ; Tue, 24 Oct 2023 06:21:50 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=uhJuqSZK5VP5ESe6/pmS14ozWQ8TpO1Ty41fk1rOx5A=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1698128509; v=1; b=l8Xy+D3hdmlzU/H9aoIXsKFoLNMX6Au2HxUSzlIu0gme70wUckIa2ZfM/amoclwdHPIotxYD H96hCTMldEfvH0G7/V/VoZsOIPDpvH01Pg2AyWbsCHga/jd6f02bUjVjTxnnBIhGE/pS/pEIl7h D9Et/9Y0oY148Qbhxbd4iocQ= X-Received: by 127.0.0.2 with SMTP id auJJYY7687511xhJBB7VDVo2; Mon, 23 Oct 2023 23:21:49 -0700 X-Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web10.141910.1698128508252875529 for ; Mon, 23 Oct 2023 23:21:48 -0700 X-IronPort-AV: E=McAfee;i="6600,9927,10872"; a="453454818" X-IronPort-AV: E=Sophos;i="6.03,246,1694761200"; d="scan'208";a="453454818" X-Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2023 23:21:46 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10872"; a="1089745200" X-IronPort-AV: E=Sophos;i="6.03,246,1694761200"; d="scan'208";a="1089745200" X-Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmsmga005.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 23 Oct 2023 23:21:45 -0700 X-Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Mon, 23 Oct 2023 23:21:44 -0700 X-Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Mon, 23 Oct 2023 23:21:44 -0700 X-Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32 via Frontend Transport; Mon, 23 Oct 2023 23:21:44 -0700 X-Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.168) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.32; Mon, 23 Oct 2023 23:21:43 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jgid6Wx8fr8qbwwOBdgMahZ35h+c6fdhRtEmDWj8rMLG5XFcsPl1LHpaIxR0HK5FfmLwEKWeoxSaKeG3KLIZ9GF1g+uAbUhfbgJ/rj3QhvGfCGBfARyIE5T19bXl4C63aIAn9qW/yEqx0EXM3bXTDD/VYEhSNVIMycM3lnUoMZzjZTYKG2jN8BpGv6b65rQEJsKzjKTW5zH239HcuUtwOX43ZfI1QSGbO0KKP0QI6PaOkB6P8vmd13rJUPHhd8U5s+O6XRbSv98EY6XASRYdamm/x0J2eLcAc7jL18GUIX28SB9R1MkCX3O+LZJBopz9GvjaQ3vvbgUJgiClAzigVg== 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=QdE+kNViytJicKALcY44i24q3Vp2VfEg0lyQzytI/l0=; b=kazDJ0MrvfV1W79OtN7TEtzXY1dgABBStUvSsiO+qO6g+iv47Yh+Q9jnQHUmk6OziE7gFvHHCHyIT3yHZJlNesFhe87M5H/Cghj3Bu+ag5Q7xl552RDikPFRfepwtK9+nxLGD4urR4tkQIe4bugPX8Om+XvWdotDWdr/VElS9Ti3Fs8MZbMjAgEcgKAR/QxvzRflj/ry5jZ1rFAP1vZZkA7G3e6wIdQ62MHmLw2py621eTSun4SS6RxK9dHY52Ug+hk90anzy52tmV2UNN6c16PKVFUwDiWrcVxcs40c+ZuqFlPTLvfRRiHSNCaDHTYuHJnh6/q3nlM0V1lQRCxKdQ== 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 X-Received: from PH7PR11MB6377.namprd11.prod.outlook.com (2603:10b6:510:1fb::13) by DM4PR11MB7352.namprd11.prod.outlook.com (2603:10b6:8:103::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 06:21:39 +0000 X-Received: from PH7PR11MB6377.namprd11.prod.outlook.com ([fe80::93e0:a051:2af9:56be]) by PH7PR11MB6377.namprd11.prod.outlook.com ([fe80::93e0:a051:2af9:56be%4]) with mapi id 15.20.6907.032; Tue, 24 Oct 2023 06:21:39 +0000 From: "Gao, Zhichao" To: "devel@edk2.groups.io" , "Gao, Liming" , "mikuback@linux.microsoft.com" CC: "Kinney, Michael D" Subject: Re: [edk2-devel] [PATCH v1 2/3] ShellPkg: Add varpolicy dynamic shell command Thread-Topic: [edk2-devel] [PATCH v1 2/3] ShellPkg: Add varpolicy dynamic shell command Thread-Index: AQHZ6wZmI8TMRXLPZUuN65O9anwvbLBYnJAAgAARS+A= Date: Tue, 24 Oct 2023 06:21:19 +0000 Message-ID: References: <20230919143300.398-1-mikuback@linux.microsoft.com> <20230919143300.398-3-mikuback@linux.microsoft.com> <01e101da0639$4f106cf0$ed3146d0$@byosoft.com.cn> In-Reply-To: <01e101da0639$4f106cf0$ed3146d0$@byosoft.com.cn> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH7PR11MB6377:EE_|DM4PR11MB7352:EE_ x-ms-office365-filtering-correlation-id: 65d77a91-7bec-42f9-41be-08dbd4596fe0 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: nNsb+jZc12NEXFx1MWbSicEgzpEdcdrRhAsZomN4+ugGha31Rx3LVuXjFJEqJ5rKEhcmLSnILlz4wqVGLf/C//VHXzv6TDHifbLBBXwgJ4fGpyHzpB5dPXNbSZmWUnO3biGxfrgRD+FnbtBKToYN7TZIjD/zOqAhYbszvznxgvOh8t+b3UNAOMW0lExMHJ9jIWo7kRr3iyoCViYwqmMS6AzRy8t53sSeweH511x9jCFddx+muwFja8z/pci1e8LirByPYkOBTiHTZFnQAGshRWia8TbQG2kp0teMc5wmca5c5NoLrg3uMZ2KF7j8rdW0LOZuFpFruw0qeLLUa2Ox3xANcYh0O+yrOhBO41yuTtU6nfTHGJX97hRixMS25b8dp86Q7+KNCJjC1wZp3Oh8OZqotqbs8fyok1ZX1nH1ix/BnIH+HMhIV556V31lZkNH07RRxvFrU7x6IUjgyWFCQCFTksuRdcXb+WfHBbwzMnQnRB8nKXkHHPTvo9BZ0L+AVOYWrUdN1DpowRThoBjJvf5NSvVDoZ6WnFuOeMHnNy70wW67KPTQnU39L5ZIFZBno1Lnz9fri6x2Fl1QHE4TiaRRfZdYNGs3i0IU8IZJxpJ84JHMn8hhnjxfLqsqGc9ctjnkhAyWrP6IddKfLPCM5bVUvQanXDM3KJbQyQzlVxU= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?S25oaFRMQU9GZXdWb0ZTdzhIbzR3dis5Njg0NlhmK3U3M0pyUlhSdThTdTJH?= =?utf-8?B?ZEw4b2g3QTIwemQwY25rc2pTaU1vYjcyLzVHSUE4QXg5bGlxTzVlaU4rT1lL?= =?utf-8?B?WUtPa0ZVTHU4S3VJY3VOUlU2SEM4c25xV3dwTGZ4WEpUb0Rvc0dSSGZZdHpu?= =?utf-8?B?SU5zZFgvVnNkYmdITUZCQ1N3eDlaUlR4MlhXUkQwdWtWd2w2VW5XYkprSHJO?= =?utf-8?B?YVo3ZXg0WmtTd3F5d3JONllqNGI0blJpOHFXcFpPM09EOGwzcFc1S0g5dkNX?= =?utf-8?B?TjVHbS9QN2JYWURpRm4rYXhtZU84dG9nL2JPSjBrcUV1dkt4V1RlSTJ2bXdt?= =?utf-8?B?MzA4VGxkdmZjOER3RlZoN1pHbUNHY3I4cnlNaGV1aklHVG5RVlVUY2t3cDN6?= =?utf-8?B?ZFRrbUs0aHlaVmpYVVR5NDRwTFUwdElIRmIrMVVpKzBzdUdvNWg5a2RsMDBN?= =?utf-8?B?YTc2OVJDSTg0RTJKWWNJSG5wS09nc3NFcGx3MDdSRTZ0SVdncG80ZithVjhs?= =?utf-8?B?V1FUT25yZHAvUUd5SHdIc3V1S0tlYTFHUXBuRDIrang0bUVnOE5GSzJrb3JY?= =?utf-8?B?aW5VNlJzNlE2R0FvSGs1ekRRQ0xJSVFYbFVWMm9hSXNuTnphYVpjRlE4bmww?= =?utf-8?B?UmxPUDk4THhWdEszeWhucGw3YzlnNFl0UEZZVXZUWkFHSmJHTVRhdjVYWnlB?= =?utf-8?B?Tmo0bXZiVS96YmRWaUJuS2ZVK3lZNmpFMjBmQmpKY1dhVUpIU1RwcEJJb3Bk?= =?utf-8?B?endaVWdVRDBpRGFRb1c1Y1I4RWJoVzFhL3BML1oxWGFXV2VDL3Z5K2ZJL2tm?= =?utf-8?B?YnkyTlhZT1NXdFFja0hKS1BmZElzMVRWUElRYThrakRTZi9Pa0h1M1B6aktk?= =?utf-8?B?eTBSQnBlYTlJbzFJSGJPcjdGZldnaHFPckY3d3ZYcDhRNWg3WXRNd2NHaktP?= =?utf-8?B?RnB2VGdlUHFoaWdLazladlpWM0htdEtVelZOMWlHNGUzbC8vY21IZFcxcmtM?= =?utf-8?B?dXV6WHNJd1JyM1hJeTZuMWJQSlZ6VGRsRHB6OEg5cytUa0hwTjdoa09PV1hk?= =?utf-8?B?U1BTYUZsL0lMMmZzMVFzQmY5RXFXVWEyTG5OSzcyUFBOWnJOUGExRzljRnlq?= =?utf-8?B?NExmdTlnODQwQnV4eW5nMGpVYkRtSXkyeDc4MWFNZVk0R0FQWnVwc2NaTW9F?= =?utf-8?B?dmZkaUVEdUhDdnpIMTlpRm1sd1NQY2RsUS92ak53SFUzeGswYW9UcEZzTWV4?= =?utf-8?B?QVpyaDUzYjlmS2daOFRSQjRRTjAvTWFVQVp3UkNhbExxV1EvUmhOYjVTWWQ4?= =?utf-8?B?SWFaYWQrSkxkSmVia24vRVJBWDhXeGZMaG82bkZtcC9VallURDA4Ull3V3pF?= =?utf-8?B?ckgzaTJzZmFPNDdmNlZGM3o5SFcrNGZDaVJNdzBMUDdZWFVENmNCTHZCRWpp?= =?utf-8?B?d21ZM1RmbVFsa3V2TnZGSnVxMlRvaTk3MC9hUnQraGY0bWUrM0Q2TmdJOWF2?= =?utf-8?B?WmdkNmxna1lVQWJ6UVZEZ0ZqTHJPU1QzYjYvTTlYZUJUVXJpb1JISnlNM0pq?= =?utf-8?B?OFlnTnVwUzlvWi9Sc2J3Z0FNMjVFRUphWkE0bFJDVHBtVnBXdTlsaW5zRjla?= =?utf-8?B?KzVMUlBSNjE4TDc0YmkxU0NaTkxRQVJrVm5TTHNhaUo2YXkzdUwxR0hEcnVt?= =?utf-8?B?d1NUclkvS3NGN2k3b05sVHZzZG1QRzZueWQzYkVpdFRpcmNKRDBYaVdCME9Z?= =?utf-8?B?NWVITEd0TS91ZHVGSUhuNjRpQlFKMmNlcU12OHdYbWtwSi9jRWFjcG9hUzVr?= =?utf-8?B?NXE1NEdPZnpoc0xsTE1wZkY3ZmcyMXdOQmZIZm95WHk2d2JnVWdtVXhQQ1dD?= =?utf-8?B?by9ITitTRXpSeWZ1OTNuaHRLaGtoZW83cTIvZWxEZWRwQlVaWHVoT1F1R3FO?= =?utf-8?B?Q0JPKzBYdytGUnlSdHl5Y0hoYm1Jc1d3YWlXVGtpUmo2b3ZkOUhodHc3Ymts?= =?utf-8?B?d3RuZzY0L3FVZ1FXdVkvTnFMdHhuTHlYNVhwS1VXSHBlNTJBZ3h1Y0VNQ1BS?= =?utf-8?B?Q2tUdFF4NlBQSWNOUXo1TVNzbXVPY0Y3ZkVUaVltUEpRM2I2Uk5SbmRxS3lm?= =?utf-8?Q?e3z6WBF9O9mVRsxJ0LEKKKAO8?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH7PR11MB6377.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 65d77a91-7bec-42f9-41be-08dbd4596fe0 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Oct 2023 06:21:19.6911 (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: 1gAPuBQUM8YWP6qHnuvXuo1U+YFDJPSxceGxfaSYK5IkMoHm+PEmUSOC2tRfJwzzH/YRf8Z1MEA89vEi5PlJdA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB7352 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,zhichao.gao@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: rJuXLDtGMuzC7yciIzNkQ7UMx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=l8Xy+D3h; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") SGkgTWljaGFlbDoNCg0KVGhlIHBhdGNoIGxvb2tzIGdvb2QgdG8gbWUuIFJldmlld2VkLWJ5OiBa aGljaGFvIEdhbyA8emhpY2hhby5nYW9AaW50ZWwuY29tPg0KDQpBZ3JlZSB3aXRoIExpbWluZywg TWljaGFlbCBkbyB5b3UgY29uc2lkZXIgdG8gYWRkIHRoZSBBUFAgdmVyc2lvbiBpbmYgbGlrZSBE UC9IVFRQL1RGVFA/DQoNClRoYW5rcywNClpoaWNoYW8NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMu aW8+IE9uIEJlaGFsZiBPZg0KPiBnYW9saW1pbmcgdmlhIGdyb3Vwcy5pbw0KPiBTZW50OiBUdWVz ZGF5LCBPY3RvYmVyIDI0LCAyMDIzIDE6MTcgUE0NCj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlv OyBtaWt1YmFja0BsaW51eC5taWNyb3NvZnQuY29tDQo+IENjOiBHYW8sIFpoaWNoYW8gPHpoaWNo YW8uZ2FvQGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEDQo+IDxtaWNoYWVsLmQua2lubmV5 QGludGVsLmNvbT4NCj4gU3ViamVjdDog5Zue5aSNOiBbZWRrMi1kZXZlbF0gW1BBVENIIHYxIDIv M10gU2hlbGxQa2c6IEFkZCB2YXJwb2xpY3kgZHluYW1pYw0KPiBzaGVsbCBjb21tYW5kDQo+IA0K PiBNaWNoYWVsOg0KPiAgIFdpbGwgeW91IHByb3ZpZGUgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbiBm b3IgdmFycG9saWN5IGxpa2UgdGZ0cD8NCj4gDQo+IFRoYW5rcw0KPiBMaW1pbmcNCj4gPiAtLS0t LemCruS7tuWOn+S7ti0tLS0tDQo+ID4g5Y+R5Lu25Lq6OiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8 ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IOS7o+ihqCBNaWNoYWVsDQo+ID4gS3ViYWNraQ0KPiA+IOWP kemAgeaXtumXtDogMjAyM+W5tDnmnIgxOeaXpSAyMjozMw0KPiA+IOaUtuS7tuS6ujogZGV2ZWxA ZWRrMi5ncm91cHMuaW8NCj4gPiDmioTpgIE6IFpoaWNoYW8gR2FvIDx6aGljaGFvLmdhb0BpbnRl bC5jb20+OyBNaWNoYWVsIEQgS2lubmV5DQo+ID4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t Pg0KPiA+IOS4u+mimDogW2VkazItZGV2ZWxdIFtQQVRDSCB2MSAyLzNdIFNoZWxsUGtnOiBBZGQg dmFycG9saWN5IGR5bmFtaWMgc2hlbGwNCj4gPiBjb21tYW5kDQo+ID4NCj4gPiBGcm9tOiBNaWNo YWVsIEt1YmFja2kgPG1pY2hhZWwua3ViYWNraUBtaWNyb3NvZnQuY29tPg0KPiA+DQo+ID4gQWRk cyBhIG5ldyBtb2R1bGUgKGR5bmFtaWMgc2hlbGwgY29tbWFuZCkgdG8gU2hlbGxQa2cgdGhhdCBs aXN0cw0KPiA+IHZhcmlhYmxlIHBvbGljeSBpbmZvcm1hdGlvbiBmb3IgYWxsIFVFRkkgdmFyaWFi bGVzIG9uIHRoZSBzeXN0ZW0uDQo+ID4NCj4gPiBTb21lIG90aGVyIFVFRkkgdmFyaWFibGUgcmVs YXRlZCBmdW5jdGlvbmFsaXR5IGlzIGFsc28gaW5jbHVkZWQgdG8NCj4gPiBnaXZlIGEgZ3JlYXRl ciBzZW5zZSBvZiBwbGF0Zm9ybSBVRUZJIHZhcmlhYmxlIHN0YXRlLiBUaGlzIGNvbW1hbmQNCj4g PiBpcyBpbnRlbmRlZCB0byBoZWxwIG1ha2UgdmFyaWFibGUgcG9saWNpZXMgbW9yZSB0cmFuc3Bh cmVudCBhbmQNCj4gPiBlYXNpZXIgdG8gdW5kZXJzdGFuZCBhbmQgY29uZmlndXJlIG9uIGEgcGxh dGZvcm0uDQo+ID4NCj4gPiBMaWtlIGFsbCBkeW5hbWljIHNoZWxsIGNvbW1hbmRzLCBhIHBsYXRm b3JtIG9ubHkgbmVlZHMgdG8gaW5jbHVkZQ0KPiA+IGBWYXJpYWJsZVBvbGljeUR5bmFtaWNDb21t YW5kLmluZmAgaW4gdGhlaXIgZmxhc2ggaW1hZ2UgdG8gaGF2ZQ0KPiA+IHRoZSBjb21tYW5kIHJl Z2lzdGVyZWQgaW4gdGhlaXIgVUVGSSBzaGVsbC4NCj4gPg0KPiA+IEluY2x1ZGUgdGhlIGZvbGxv d2luZyBsaW5lcyBpbiBwbGF0Zm9ybSBEU0MgKGluIERYRSBjb21wb25lbnRzIHNlY3Rpb24pOg0K PiA+DQo+ID4gYGBgDQo+ID4NCj4gPg0KPiBTaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9WYXJpYWJs ZVBvbGljeUR5bmFtaWNDb21tYW5kL1ZhcmlhYmxlUG9saWN5DQo+ID4gRHluYW1pY0NvbW1hbmQu aW5mIHsNCj4gPiAgICAgPFBjZHNGaXhlZEF0QnVpbGQ+DQo+ID4gICAgICAgZ0VmaVNoZWxsUGtn VG9rZW5TcGFjZUd1aWQuUGNkU2hlbGxMaWJBdXRvSW5pdGlhbGl6ZXxGQUxTRQ0KPiA+ICAgfQ0K PiA+IGBgYA0KPiA+DQo+ID4gSW5jbHVkZSB0aGUgZm9sbG93aW5nIGxpbmUgaW4gcGxhdGZvcm0g RkRGOg0KPiA+DQo+ID4gYGBgDQo+ID4gSU5GDQo+ID4NCj4gU2hlbGxQa2cvRHluYW1pY0NvbW1h bmQvVmFyaWFibGVQb2xpY3lEeW5hbWljQ29tbWFuZC9WYXJpYWJsZVBvbGljeQ0KPiA+IER5bmFt aWNDb21tYW5kLmluZg0KPiA+IGBgYA0KPiA+DQo+ID4gQ2M6IFpoaWNoYW8gR2FvIDx6aGljaGFv Lmdhb0BpbnRlbC5jb20+DQo+ID4gQ2M6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5u ZXlAaW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgS3ViYWNraSA8bWljaGFl bC5rdWJhY2tpQG1pY3Jvc29mdC5jb20+DQo+ID4gLS0tDQo+ID4NCj4gPg0KPiBTaGVsbFBrZy9E eW5hbWljQ29tbWFuZC9WYXJpYWJsZVBvbGljeUR5bmFtaWNDb21tYW5kL1ZhcmlhYmxlUG9saWN5 DQo+ID4gRHluYW1pY0NvbW1hbmQuYyAgIHwgMTAwOSArKysrKysrKysrKysrKysrKysrKw0KPiA+ DQo+ID4NCj4gU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvVmFyaWFibGVQb2xpY3lEeW5hbWljQ29t bWFuZC9WYXJpYWJsZVBvbGljeQ0KPiA+IER5bmFtaWNDb21tYW5kLmggICB8ICAgOTQgKysNCj4g Pg0KPiA+DQo+IFNoZWxsUGtnL0R5bmFtaWNDb21tYW5kL1ZhcmlhYmxlUG9saWN5RHluYW1pY0Nv bW1hbmQvVmFyaWFibGVQb2xpY3kNCj4gPiBEeW5hbWljQ29tbWFuZC5pbmYgfCAgIDU2ICsrDQo+ ID4NCj4gPg0KPiBTaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9WYXJpYWJsZVBvbGljeUR5bmFtaWND b21tYW5kL1ZhcmlhYmxlUG9saWN5DQo+ID4gRHluYW1pY0NvbW1hbmQudW5pIHwgICA4NiArKw0K PiA+ICBTaGVsbFBrZy9TaGVsbFBrZy5kc2MNCj4gPiB8ICAgIDEgKw0KPiA+ICA1IGZpbGVzIGNo YW5nZWQsIDEyNDYgaW5zZXJ0aW9ucygrKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdA0KPiA+DQo+IGEv U2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvVmFyaWFibGVQb2xpY3lEeW5hbWljQ29tbWFuZC9WYXJp YWJsZVBvbGkNCj4gPiBjeUR5bmFtaWNDb21tYW5kLmMNCj4gPg0KPiBiL1NoZWxsUGtnL0R5bmFt aWNDb21tYW5kL1ZhcmlhYmxlUG9saWN5RHluYW1pY0NvbW1hbmQvVmFyaWFibGVQb2xpDQo+ID4g Y3lEeW5hbWljQ29tbWFuZC5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAw MDAwMDAwMDAwMDAuLjQ5OTkzZjYzNTM5Ng0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysNCj4g Pg0KPiBiL1NoZWxsUGtnL0R5bmFtaWNDb21tYW5kL1ZhcmlhYmxlUG9saWN5RHluYW1pY0NvbW1h bmQvVmFyaWFibGVQb2xpDQo+ID4gY3lEeW5hbWljQ29tbWFuZC5jDQo+ID4gQEAgLTAsMCArMSwx MDA5IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIE1haW4gZmlsZSBmb3IgdGhlICJ2YXJwb2xp Y3kiIGR5bmFtaWMgVUVGSSBzaGVsbCBjb21tYW5kLg0KPiA+ICsNCj4gPiArICBUaGlzIGNvbW1h bmQgY2FuIHByb3ZpZGUgZGV0YWlsZWQgVUVGSSB2YXJpYWJsZSBwb2xpY3kgY29uZmlndXJhdGlv bg0KPiA+ICsgIGluZm9ybWF0aW9uIGluIHRoZSBVRUZJIHNoZWxsLg0KPiA+ICsNCj4gPiArICBD b3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4NCj4gPiArICBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0K PiA+ICsjaW5jbHVkZSAiVmFyaWFibGVQb2xpY3lEeW5hbWljQ29tbWFuZC5oIg0KPiA+ICsNCj4g PiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9C YXNlTWVtb3J5TGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4g KyNpbmNsdWRlIDxMaWJyYXJ5L0hpaUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9NZW1v cnlBbGxvY2F0aW9uTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1NoZWxsTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5 L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZp UnVudGltZVNlcnZpY2VzVGFibGVMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUhp aVNlcnZpY2VzTGliLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8UHJvdG9jb2wvSGlpUGFja2Fn ZUxpc3QuaD4NCj4gPiArI2luY2x1ZGUgPFByb3RvY29sL1NoZWxsRHluYW1pY0NvbW1hbmQuaD4N Cj4gPiArI2luY2x1ZGUgPFByb3RvY29sL1ZhcmlhYmxlUG9saWN5Lmg+DQo+ID4gKw0KPiA+ICsj ZGVmaW5lIFZBUl9QT0xJQ1lfRkxBR19TVEFUU19TVFIgICAgTCItcyINCj4gPiArI2RlZmluZSBW QVJfUE9MSUNZX0ZMQUdfUE9MSUNZX1NUUiAgIEwiLXAiDQo+ID4gKyNkZWZpbmUgVkFSX1BPTElD WV9GTEFHX1ZFUkJPU0VfU1RSICBMIi12Ig0KPiA+ICsNCj4gPiArI2RlZmluZSBWQVJfUE9MSUNZ X0NNRF9NSU5fQVRUUl9TVFJfTEVOICA2NA0KPiA+ICsNCj4gPiArRUZJX0hJSV9IQU5ETEUgIG1W YXJQb2xpY3lTaGVsbENvbW1hbmRIaWlIYW5kbGUgPSBOVUxMOw0KPiA+ICsNCj4gPiArU1RBVElD IENPTlNUIFNIRUxMX1BBUkFNX0lURU0gIFBhcmFtTGlzdFtdID0gew0KPiA+ICsgIHsgVkFSX1BP TElDWV9GTEFHX1BPTElDWV9TVFIsICBUeXBlRmxhZyB9LA0KPiA+ICsgIHsgVkFSX1BPTElDWV9G TEFHX1NUQVRTX1NUUiwgICBUeXBlRmxhZyB9LA0KPiA+ICsgIHsgVkFSX1BPTElDWV9GTEFHX1ZF UkJPU0VfU1RSLCBUeXBlRmxhZyB9LA0KPiA+ICsgIHsgTlVMTCwgICAgICAgICAgICAgICAgICAg ICAgICBUeXBlTWF4ICB9DQo+ID4gK307DQo+ID4gKw0KPiA+ICtTVEFUSUMgQ09OU1QgVkFSX1BP TElDWV9DTURfVkFSX05BTUVTUEFDRSAgbVZhck5hbWVzcGFjZXNbXQ0KPiA+ID0gew0KPiA+ICsg IHsNCj4gPiArICAgIFZhcmlhYmxlVmVuZG9yQ2Fwc3VsZSwNCj4gPiArICAgICZnRWZpQ2Fwc3Vs ZVZlbmRvckd1aWQsDQo+ID4gKyAgICBMIkNhcHN1bGUiDQo+ID4gKyAgfSwNCj4gPiArICB7DQo+ ID4gKyAgICBWYXJpYWJsZVZlbmRvckNhcHN1bGVSZXBvcnQsDQo+ID4gKyAgICAmZ0VmaUNhcHN1 bGVSZXBvcnRHdWlkLA0KPiA+ICsgICAgTCJDYXBzdWxlIFJlcG9ydGluZyINCj4gPiArICB9LA0K PiA+ICsgIHsNCj4gPiArICAgIFZhcmlhYmxlVmVuZG9yR2xvYmFsLA0KPiA+ICsgICAgJmdFZmlH bG9iYWxWYXJpYWJsZUd1aWQsDQo+ID4gKyAgICBMIlVFRkkgR2xvYmFsIg0KPiA+ICsgIH0sDQo+ ID4gKyAgew0KPiA+ICsgICAgVmFyaWFibGVWZW5kb3JNb3JDb250cm9sLA0KPiA+ICsgICAgJmdF ZmlNZW1vcnlPdmVyd3JpdGVSZXF1ZXN0Q29udHJvbExvY2tHdWlkLA0KPiA+ICsgICAgTCJNZW1v cnkgT3ZlcndyaXRlIFJlcXVlc3QgKE1PUikgQ29udHJvbCBMb2NrIg0KPiA+ICsgIH0NCj4gPiAr fTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJldHVybnMgVUVGSSB2YXJpYWJsZSBhdHRyaWJ1 dGUgaW5mb3JtYXRpb24gaW4gYSBzdHJpbmcuDQo+ID4gKw0KPiA+ICsgIEF0dHJpYnV0ZXNTdHJT aXplIG11c3QgYXQgbGVhc3QgYmUNCj4gPiBWQVJfUE9MSUNZX0NNRF9NSU5fQVRUUl9TVFJfTEVO IGluIGxlbmd0aA0KPiA+ICsgIG9yIEVGSV9JTlZBTElEX1BBUkFNRVRFUiB3aWxsIGJlIHJldHVy bmVkLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBBdHRyaWJ1dGVzICAgICAgICAgICAgIFRo ZSBVRUZJIHZhcmlhYmxlIGF0dHJpYnV0ZXMuDQo+ID4gKyAgQHBhcmFtW2luXSAgQXR0cmlidXRl c1N0clNpemUgICAgICBUaGUgc2l6ZSwgaW4gYnl0ZXMsIG9mDQo+IEF0dHJpYnV0ZXNTdHIuDQo+ ID4gKyAgQHBhcmFtW291dF0gQXR0cmlidXRlc1N0ciAgICAgICAgICBUaGUgVW5pY29kZSBzdHJp bmcgZm9yIHRoZSBnaXZlbg0KPiA+IGF0dHJpYnV0ZXMuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBhdHRyaWJ1dGVzIHdlcmUgY29udmVydGVkIHRvIGEN Cj4gPiBzdHJpbmcgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFS QU1FVEVSIFRoZSBBdHRyaWJ1dGVzU3RyIHBvaW50ZXIgaXMgTlVMTC4NCj4gPiArDQo+ID4gKyoq Lw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0dldEF0dHJpYnV0ZXNTdHJpbmcgKA0KPiA+ICsgIElO ICBVSU5UMzIgIEF0dHJpYnV0ZXMsDQo+ID4gKyAgSU4gIFVJTlROICAgQXR0cmlidXRlc1N0clNp emUsDQo+ID4gKyAgT1VUIENIQVIxNiAgKkF0dHJpYnV0ZXNTdHINCj4gPiArICApDQo+ID4gK3sN Cj4gPiArICBpZiAoKEF0dHJpYnV0ZXNTdHIgPT0gTlVMTCkgfHwgKEF0dHJpYnV0ZXNTdHJTaXpl IDwNCj4gPiBWQVJfUE9MSUNZX0NNRF9NSU5fQVRUUl9TVFJfTEVOKSkgew0KPiA+ICsgICAgcmV0 dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIEF0dHJp YnV0ZXNTdHJbMF0gPSBMJzAnOw0KPiA+ICsgIEF0dHJpYnV0ZXNTdHJbMV0gPSBMJ3gnOw0KPiA+ ICsgIEF0dHJpYnV0ZXNTdHJbMl0gPSBMJ1wwJzsNCj4gPiArDQo+ID4gKyAgVW5pY29kZVZhbHVl VG9TdHJpbmdTIChBdHRyaWJ1dGVzU3RyICsgMiwgQXR0cmlidXRlc1N0clNpemUgLSAyLA0KPiA+ IChSQURJWF9IRVgpLCAoSU5UNjQpQXR0cmlidXRlcywgMzApOw0KPiA+ICsNCj4gPiArICBpZiAo QXR0cmlidXRlcyA9PSAwKSB7DQo+ID4gKyAgICBTdHJDYXRTIChBdHRyaWJ1dGVzU3RyLCBBdHRy aWJ1dGVzU3RyU2l6ZSwgTCIgTm8gQXR0cmlidXRlcyIpOw0KPiA+ICsgIH0gZWxzZSB7DQo+ID4g KyAgICBpZiAoKEF0dHJpYnV0ZXMgJiBFRklfVkFSSUFCTEVfTk9OX1ZPTEFUSUxFKSA9PQ0KPiA+ IEVGSV9WQVJJQUJMRV9OT05fVk9MQVRJTEUpIHsNCj4gPiArICAgICAgU3RyQ2F0UyAoQXR0cmli dXRlc1N0ciwgQXR0cmlidXRlc1N0clNpemUsIEwiIE5WIik7DQo+ID4gKyAgICAgIEF0dHJpYnV0 ZXMgXj0gRUZJX1ZBUklBQkxFX05PTl9WT0xBVElMRTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4g KyAgICBpZiAoKEF0dHJpYnV0ZXMgJiBFRklfVkFSSUFCTEVfQk9PVFNFUlZJQ0VfQUNDRVNTKSA9 PQ0KPiA+IEVGSV9WQVJJQUJMRV9CT09UU0VSVklDRV9BQ0NFU1MpIHsNCj4gPiArICAgICAgU3Ry Q2F0UyAoQXR0cmlidXRlc1N0ciwgQXR0cmlidXRlc1N0clNpemUsIEwiIEJTIik7DQo+ID4gKyAg ICAgIEF0dHJpYnV0ZXMgXj0gRUZJX1ZBUklBQkxFX0JPT1RTRVJWSUNFX0FDQ0VTUzsNCj4gPiAr ICAgIH0NCj4gPiArDQo+ID4gKyAgICBpZiAoKEF0dHJpYnV0ZXMgJiBFRklfVkFSSUFCTEVfUlVO VElNRV9BQ0NFU1MpID09DQo+ID4gRUZJX1ZBUklBQkxFX1JVTlRJTUVfQUNDRVNTKSB7DQo+ID4g KyAgICAgIFN0ckNhdFMgKEF0dHJpYnV0ZXNTdHIsIEF0dHJpYnV0ZXNTdHJTaXplLCBMIiBSVCIp Ow0KPiA+ICsgICAgICBBdHRyaWJ1dGVzIF49IEVGSV9WQVJJQUJMRV9SVU5USU1FX0FDQ0VTUzsN Cj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBpZiAoKEF0dHJpYnV0ZXMgJiBFRklfVkFSSUFC TEVfSEFSRFdBUkVfRVJST1JfUkVDT1JEKSA9PQ0KPiA+IEVGSV9WQVJJQUJMRV9IQVJEV0FSRV9F UlJPUl9SRUNPUkQpIHsNCj4gPiArICAgICAgU3RyQ2F0UyAoQXR0cmlidXRlc1N0ciwgQXR0cmli dXRlc1N0clNpemUsIEwiIEhXLUVycm9yIik7DQo+ID4gKyAgICAgIEF0dHJpYnV0ZXMgXj0gRUZJ X1ZBUklBQkxFX0hBUkRXQVJFX0VSUk9SX1JFQ09SRDsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4g KyAgICBpZiAoKEF0dHJpYnV0ZXMgJiBFRklfVkFSSUFCTEVfQVVUSEVOVElDQVRFRF9XUklURV9B Q0NFU1MpID09DQo+ID4gRUZJX1ZBUklBQkxFX0FVVEhFTlRJQ0FURURfV1JJVEVfQUNDRVNTKSB7 DQo+ID4gKyAgICAgIFN0ckNhdFMgKEF0dHJpYnV0ZXNTdHIsIEF0dHJpYnV0ZXNTdHJTaXplLCBM IiBBdXRoLVdBIik7DQo+ID4gKyAgICAgIEF0dHJpYnV0ZXMgXj0gRUZJX1ZBUklBQkxFX0FVVEhF TlRJQ0FURURfV1JJVEVfQUNDRVNTOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIGlmICgo QXR0cmlidXRlcyAmDQo+ID4gRUZJX1ZBUklBQkxFX1RJTUVfQkFTRURfQVVUSEVOVElDQVRFRF9X UklURV9BQ0NFU1MpID09DQo+ID4gRUZJX1ZBUklBQkxFX1RJTUVfQkFTRURfQVVUSEVOVElDQVRF RF9XUklURV9BQ0NFU1MpIHsNCj4gPiArICAgICAgU3RyQ2F0UyAoQXR0cmlidXRlc1N0ciwgQXR0 cmlidXRlc1N0clNpemUsIEwiIEF1dGgtVElNRS1XQSIpOw0KPiA+ICsgICAgICBBdHRyaWJ1dGVz IF49DQo+ID4gRUZJX1ZBUklBQkxFX1RJTUVfQkFTRURfQVVUSEVOVElDQVRFRF9XUklURV9BQ0NF U1M7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgaWYgKChBdHRyaWJ1dGVzICYgRUZJX1ZB UklBQkxFX0FQUEVORF9XUklURSkgPT0NCj4gPiBFRklfVkFSSUFCTEVfQVBQRU5EX1dSSVRFKSB7 DQo+ID4gKyAgICAgIFN0ckNhdFMgKEF0dHJpYnV0ZXNTdHIsIEF0dHJpYnV0ZXNTdHJTaXplLCBM IiBBUFBFTkQtVyIpOw0KPiA+ICsgICAgICBBdHRyaWJ1dGVzIF49IEVGSV9WQVJJQUJMRV9BUFBF TkRfV1JJVEU7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgaWYgKEF0dHJpYnV0ZXMgIT0g MCkgew0KPiA+ICsgICAgICBTdHJDYXRTIChBdHRyaWJ1dGVzU3RyLCBBdHRyaWJ1dGVzU3RyU2l6 ZSwgTCIgPFVua25vd24NCj4gQXR0cmlidXRlPiIpOw0KPiA+ICsgICAgfQ0KPiA+ICsgIH0NCj4g PiArDQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBQcmludHMgVUVGSSB2YXJpYWJsZSBzdGF0aXN0aWNzIGluZm9ybWF0aW9uLg0KPiA+ ICsNCj4gPiArICBAcGFyYW1baW5dIFRvdGFsVmFyaWFibGVzICAgICAgICAgICAgIFRvdGFsIG51 bWJlciBvZiBVRUZJIHZhcmlhYmxlcw0KPiA+IGRpc2NvdmVyZWQuDQo+ID4gKyAgQHBhcmFtW2lu XSBUb3RhbFZhcmlhYmxlc1NpemUgICAgICAgICBUb3RhbCBzaXplIG9mIFVFRkkgdmFyaWFibGVz DQo+ID4gZGlzY292ZXJlZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK1ByaW50 U3RhdHMgKA0KPiA+ICsgIElOICBVSU5UTiAgVG90YWxWYXJpYWJsZXMsDQo+ID4gKyAgSU4gIFVJ TlROICBUb3RhbFZhcmlhYmxlc1NpemUNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBTaGVsbFBy aW50SGlpRXggKC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VODQo+ID4gKFNUUl9WQVJfUE9MX1NU QVRTX0hFQURFUl8xKSwgbVZhclBvbGljeVNoZWxsQ29tbWFuZEhpaUhhbmRsZSk7DQo+ID4gKyAg U2hlbGxQcmludEhpaUV4ICgtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTg0KPiA+IChTVFJfVkFS X1BPTF9TVEFUU19IRUFERVJfMiksIG1WYXJQb2xpY3lTaGVsbENvbW1hbmRIaWlIYW5kbGUpOw0K PiA+ICsgIFNoZWxsUHJpbnRIaWlFeCAoLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4NCj4gPiAo U1RSX1ZBUl9QT0xfU1RBVFNfSEVBREVSXzEpLCBtVmFyUG9saWN5U2hlbGxDb21tYW5kSGlpSGFu ZGxlKTsNCj4gPiArICBTaGVsbFByaW50SGlpRXggKC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VO DQo+ID4gKFNUUl9WQVJfUE9MX1NUQVRTX1RPVEFMX1ZBUlMpLCBtVmFyUG9saWN5U2hlbGxDb21t YW5kSGlpSGFuZGxlLA0KPiA+IFRvdGFsVmFyaWFibGVzKTsNCj4gPiArICBTaGVsbFByaW50SGlp RXggKC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VODQo+ID4gKFNUUl9WQVJfUE9MX1NUQVRTX1RP VEFMX1NJWkUpLCBtVmFyUG9saWN5U2hlbGxDb21tYW5kSGlpSGFuZGxlLA0KPiA+IFRvdGFsVmFy aWFibGVzU2l6ZSwgVG90YWxWYXJpYWJsZXNTaXplKTsNCj4gPiArICBTaGVsbFByaW50SGlpRXgg KC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VODQo+ID4gKFNUUl9WQVJfUE9MX1NUQVRTX0hFQURF Ul8xKSwgbVZhclBvbGljeVNoZWxsQ29tbWFuZEhpaUhhbmRsZSk7DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgIFJldHVybnMgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiB2YXJpYWJs ZSBuYW1lc3BhY2UgaWYgYXZhaWxhYmxlLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBWYXJp YWJsZUd1aWQgICAgICBUaGUgVUVGSSB2YXJpYWJsZSB2ZW5kb3IgKG5hbWVzcGFjZSkNCj4gPiBH VUlELg0KPiA+ICsNCj4gPiArICBAcmV0dXJuICAgICBQb2ludGVyIHRvIGEgbmFtZXNwYWNlIGlu Zm8gc3RydWN0dXJlIG9uIGEgR1VJRCBtYXRjaC4NCj4gPiArICBAcmV0dXJuICAgICBOVUxMIG9u IGxhY2sgb2YgYSBHVUlEIG1hdGNoLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0NPTlNUIFZBUl9Q T0xJQ1lfQ01EX1ZBUl9OQU1FU1BBQ0UgKg0KPiA+ICtHZXROYW1lU3BhY2VJbmZvICgNCj4gPiAr ICBJTiAgRUZJX0dVSUQgICpWYXJpYWJsZUd1aWQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBV SU5UTiAgSW5kZXg7DQo+ID4gKw0KPiA+ICsgIGlmIChWYXJpYWJsZUd1aWQgPT0gTlVMTCkgew0K PiA+ICsgICAgQVNTRVJUIChWYXJpYWJsZUd1aWQgIT0gTlVMTCk7DQo+ID4gKyAgICByZXR1cm4g TlVMTDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IEFS UkFZX1NJWkUgKG1WYXJOYW1lc3BhY2VzKTsgSW5kZXgrKykgew0KPiA+ICsgICAgaWYgKENvbXBh cmVHdWlkIChtVmFyTmFtZXNwYWNlc1tJbmRleF0uVmVuZG9yR3VpZCwgVmFyaWFibGVHdWlkKSkN Cj4gew0KPiA+ICsgICAgICByZXR1cm4gJm1WYXJOYW1lc3BhY2VzW0luZGV4XTsNCj4gPiArICAg IH0NCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybiBOVUxMOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICBQcmludCBub24tdmVyYm9zZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUg dmFyaWFibGUuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gICAgVmFyaWFibGVOYW1lICAgICAg ICAgIEEgcG9pbnRlciB0aGUgVW5pY29kZQ0KPiA+IHZhcmlhYmxlIG5hbWUuDQo+ID4gKyAgQHBh cmFtW2luXSAgICBWYXJpYWJsZUd1aWQgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSB2YXJpYWJs ZQ0KPiA+IHZlbmRvciBHVUlELg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgVmFyaWFibGVTaXplICAg ICAgICAgIFRoZSBzaXplIG9mIHRoZSBVRUZJIHZhcmlhYmxlIGluDQo+ID4gYnl0ZXMuDQo+ID4g KyAgQHBhcmFtW2luXSAgICBWYXJpYWJsZUF0dHJpYnV0ZXMgICAgVGhlIFVFRkkgdmFyaWFibGUg YXR0cmlidXRlcy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCAgIEVGSV9TVUNDRVNTICAgICAgICAg ICAgICAgVGhlIG5vbi12ZXJib3NlIHZhcmlhYmxlDQo+ID4gaW5mb3JtYXRpb24gd2FzIHByaW50 ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgICBFRklfSU5WQUxJRF9QQVJBTUVURVIg ICAgIEEgcG9pbnRlciBhcmd1bWVudCBwYXNzZWQgdG8NCj4gPiB0aGUgZnVuY3Rpb24gd2FzIE5V TEwuDQo+ID4gKyAgQHJldHZhbCAgIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAgICAgSW5zdWZmaWNp ZW50IG1lbW9yeQ0KPiA+IHJlc291cmNlcyB0byBwcmludCB0aGUgYXR0cmlidXRlcy4NCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK1ByaW50Tm9uVmVyYm9zZVZhckluZm8g KA0KPiA+ICsgIElOIENIQVIxNiAgICAqVmFyaWFibGVOYW1lLA0KPiA+ICsgIElOIEVGSV9HVUlE ICAqVmFyaWFibGVHdWlkLA0KPiA+ICsgIElOIFVJTlROICAgICBWYXJpYWJsZVNpemUsDQo+ID4g KyAgSU4gVUlOVDMyICAgIFZhcmlhYmxlQXR0cmlidXRlcw0KPiA+ICsgICkNCj4gPiArew0KPiA+ ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBD SEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqQXR0cmlidXRlc1N0cjsNCj4gPiAr ICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGVzY3JpcHRpb25TdHI7DQo+ ID4gKyAgQ09OU1QgVkFSX1BPTElDWV9DTURfVkFSX05BTUVTUEFDRSAgKkNtZFZhck5hbWVzcGFj ZTsNCj4gPiArDQo+ID4gKyAgQXR0cmlidXRlc1N0ciAgPSBOVUxMOw0KPiA+ICsgIERlc2NyaXB0 aW9uU3RyID0gTlVMTDsNCj4gPiArDQo+ID4gKyAgaWYgKChWYXJpYWJsZU5hbWUgPT0gTlVMTCkg fHwgKFZhcmlhYmxlR3VpZCA9PSBOVUxMKSkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElE X1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIENtZFZhck5hbWVzcGFjZSA9IEdl dE5hbWVTcGFjZUluZm8gKFZhcmlhYmxlR3VpZCk7DQo+ID4gKw0KPiA+ICsgIGlmIChDbWRWYXJO YW1lc3BhY2UgPT0gTlVMTCkgew0KPiA+ICsgICAgRGVzY3JpcHRpb25TdHIgPSBBbGxvY2F0ZVBh Z2VzICgxKTsNCj4gPiArICAgIGlmIChEZXNjcmlwdGlvblN0ciA9PSBOVUxMKSB7DQo+ID4gKyAg ICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ICsgICAgICBnb3RvIEV4aXQ7 DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgWmVyb01lbSAoKFZPSUQgKilEZXNjcmlwdGlv blN0ciwgRUZJX1BBR0VTX1RPX1NJWkUgKDEpKTsNCj4gPiArICAgIFVuaWNvZGVTUHJpbnQgKERl c2NyaXB0aW9uU3RyLCBFRklfUEFHRVNfVE9fU0laRSAoMSksIEwiVW5rbm93bg0KPiA+IFZlbmRv ciAoJWcpIiwgVmFyaWFibGVHdWlkKTsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAgRGVzY3Jp cHRpb25TdHIgPSBDbWRWYXJOYW1lc3BhY2UtPkRlc2NyaXB0aW9uOw0KPiA+ICsgIH0NCj4gPiAr DQo+ID4gKyAgU2hlbGxQcmludEhpaUV4ICgtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTiAoU1RS X1ZBUl9QT0xfVkFSX1RZUEUpLA0KPiA+IG1WYXJQb2xpY3lTaGVsbENvbW1hbmRIaWlIYW5kbGUs IERlc2NyaXB0aW9uU3RyKTsNCj4gPiArICBTaGVsbFByaW50SGlpRXggKC0xLCAtMSwgTlVMTCwg U1RSSU5HX1RPS0VODQo+IChTVFJfVkFSX1BPTF9WQVJfTkFNRSksDQo+ID4gbVZhclBvbGljeVNo ZWxsQ29tbWFuZEhpaUhhbmRsZSwgVmFyaWFibGVOYW1lKTsNCj4gPiArICBTaGVsbFByaW50SGlp RXggKC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VOIChTVFJfVkFSX1BPTF9WQVJfU0laRSksDQo+ ID4gbVZhclBvbGljeVNoZWxsQ29tbWFuZEhpaUhhbmRsZSwgVmFyaWFibGVTaXplLCBWYXJpYWJs ZVNpemUpOw0KPiA+ICsNCj4gPiArICBBdHRyaWJ1dGVzU3RyID0gQWxsb2NhdGVQYWdlcyAoMSk7 DQo+ID4gKyAgaWYgKEF0dHJpYnV0ZXNTdHIgPT0gTlVMTCkgew0KPiA+ICsgICAgU3RhdHVzID0g RUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gKyAgICBnb3RvIEV4aXQ7DQo+ID4gKyAgfQ0KPiA+ ICsNCj4gPiArICBaZXJvTWVtICgoVk9JRCAqKUF0dHJpYnV0ZXNTdHIsIEVGSV9QQUdFU19UT19T SVpFICgxKSk7DQo+ID4gKyAgU3RhdHVzID0gR2V0QXR0cmlidXRlc1N0cmluZyAoVmFyaWFibGVB dHRyaWJ1dGVzLCBFRklfUEFHRVNfVE9fU0laRQ0KPiAoMSksDQo+ID4gQXR0cmlidXRlc1N0cik7 DQo+ID4gKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KPiA+ICsgICAgU2hlbGxQcmlu dEhpaUV4ICgNCj4gPiArICAgICAgLTEsDQo+ID4gKyAgICAgIC0xLA0KPiA+ICsgICAgICBOVUxM LA0KPiA+ICsgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9WQVJfUE9MX1ZBUl9BVFRSKSwNCj4gPiAr ICAgICAgbVZhclBvbGljeVNoZWxsQ29tbWFuZEhpaUhhbmRsZSwNCj4gPiArICAgICAgQXR0cmli dXRlc1N0cg0KPiA+ICsgICAgICApOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVzID0g RUZJX1NVQ0NFU1M7DQo+ID4gKw0KPiA+ICtFeGl0Og0KPiA+ICsgIGlmIChBdHRyaWJ1dGVzU3Ry ICE9IE5VTEwpIHsNCj4gPiArICAgIEZyZWVQYWdlcyAoQXR0cmlidXRlc1N0ciwgMSk7DQo+ID4g KyAgfQ0KPiA+ICsNCj4gPiArICBpZiAoKENtZFZhck5hbWVzcGFjZSA9PSBOVUxMKSAmJiAoRGVz Y3JpcHRpb25TdHIgIT0gTlVMTCkpIHsNCj4gPiArICAgIEZyZWVQYWdlcyAoRGVzY3JpcHRpb25T dHIsIDEpOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUHJpbnQgdmVyYm9zZSBpbmZvcm1hdGlvbiBhYm91dCB0 aGUgdmFyaWFibGUuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gICAgRGF0YSAgICAgICAgICAg ICAgICAgIEEgcG9pbnRlciB0byB0aGUgdmFyaWFibGUgZGF0YQ0KPiA+IGJ1ZmZlci4NCj4gPiAr ICBAcGFyYW1baW5dICAgIERhdGFTaXplICAgICAgICAgICAgICBUaGUgc2l6ZSBvZiBkYXRhLCBp biBieXRlcywgaW4NCj4gPiB0aGUgdmFyaWFibGUgZGF0YSBidWZmZXIuDQo+ID4gKw0KPiA+ICsg IEByZXR2YWwgICBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgIFRoZSB2ZXJib3NlIHZhcmlhYmxl DQo+ID4gaW5mb3JtYXRpb24gd2FzIHByaW50ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2 YWwgICBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAgIEEgcG9pbnRlciBhcmd1bWVudCBwYXNzZWQg dG8NCj4gPiB0aGUgZnVuY3Rpb24gd2FzIE5VTEwuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJ X1NUQVRVUw0KPiA+ICtQcmludFZlcmJvc2VWYXJJbmZvICgNCj4gPiArICBJTiAgVk9JRCAgICpE YXRhLA0KPiA+ICsgIElOICBVSU5UTiAgRGF0YVNpemUNCj4gPiArICApDQo+ID4gK3sNCj4gPiAr ICBpZiAoKERhdGFTaXplID09IDApIHx8IChEYXRhID09IE5VTEwpKSB7DQo+ID4gKyAgICByZXR1 cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgVkFSX1BP TElDWV9DTURfU0hFTExfRFVNUF9IRVggKDAsIERhdGEsIERhdGFTaXplKTsNCj4gPiArDQo+ID4g KyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBQ cmludHMgdmFyaWFibGUgcG9saWN5IGluZm9ybWF0aW9uIGZvciB0aGUgZ2l2ZW4gdmFyaWFibGUu DQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFZhcmlhYmxlTmFtZSAgICBBIHBvaW50ZXIgdG8g dGhlIFVuaWNvZGUgc3RyaW5nIG9mIHRoZQ0KPiA+IFVFRkkgdmFyaWFibGUgbmFtZS4NCj4gPiAr ICBAcGFyYW1baW5dICBWZW5kb3JHdWlkICAgICAgQSBwb2ludGVyIHRvIHRoZSBVRUZJIHZhcmlh YmxlIHZlbmRvcg0KPiA+IEdVSUQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVFJVRSBpZiBhIHZh cmlhYmxlIHBvbGljeSB3YXMgZm91bmQgYW5kIHByaW50ZWQgZm9yIHRoZQ0KPiB2YXJpYWJsZS4N Cj4gPiArICBAcmV0dXJuIEZBTFNFIGlmIGFuIGVycm9yIG9jY3VycmVkIGFuZC9vciBhIHZhcmlh YmxlIHBvbGljeSB3YXMgbm90DQo+IGZvdW5kDQo+ID4gYW5kDQo+ID4gKyAgICAgICAgICBwcmlu dGVkIGZvciB0aGUgdmFyaWFibGUuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArQk9PTEVBTg0KPiA+ ICtQcmludFZhcmlhYmxlUG9saWN5SW5mbyAoDQo+ID4gKyAgSU4gIENIQVIxNiAgICAqVmFyaWFi bGVOYW1lLA0KPiA+ICsgIElOICBFRklfR1VJRCAgKlZlbmRvckd1aWQNCj4gPiArICApDQo+ID4g K3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4g PiArICBWQVJJQUJMRV9QT0xJQ1lfRU5UUlkgICAgICAgICAgICAgIFZhcmlhYmxlUG9saWN5RW50 cnk7DQo+ID4gKyAgVkFSSUFCTEVfTE9DS19PTl9WQVJfU1RBVEVfUE9MSUNZICBMb2NrT25WYXJT dGF0ZVBvbGljeTsNCj4gPiArICBVSU5UTg0KPiA+IFZhcmlhYmxlUG9saWN5VmFyaWFibGVOYW1l QnVmZmVyU2l6ZTsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl dHVybmVkVmFyaWFibGVOYW1lU2l6ZTsNCj4gPiArICBCT09MRUFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFBvbGljeUhlYWRlclByZXNlbnQ7DQo+ID4gKyAgQ0hBUjE2DQo+ID4gKlZhcmlh YmxlUG9saWN5VmFyaWFibGVOYW1lOw0KPiA+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKlZhcmlhYmxlQXR0cmlidXRlc1N0cjsNCj4gPiArICBFREtJSV9WQVJJQUJMRV9Q T0xJQ1lfUFJPVE9DT0wgICAgICpWYXJpYWJsZVBvbGljeTsNCj4gPiArDQo+ID4gKyAgUG9saWN5 SGVhZGVyUHJlc2VudCAgICAgICAgPSBGQUxTRTsNCj4gPiArICBWYXJpYWJsZUF0dHJpYnV0ZXNT dHIgICAgICA9IE5VTEw7DQo+ID4gKyAgVmFyaWFibGVQb2xpY3lWYXJpYWJsZU5hbWUgPSBOVUxM Ow0KPiA+ICsNCj4gPiArICBpZiAoKFZhcmlhYmxlTmFtZSA9PSBOVUxMKSB8fCAoVmVuZG9yR3Vp ZCA9PSBOVUxMKSkgew0KPiA+ICsgICAgQVNTRVJUICgoVmFyaWFibGVOYW1lICE9IE5VTEwpICYm IChWZW5kb3JHdWlkICE9IE5VTEwpKTsNCj4gPiArICAgIFNoZWxsUHJpbnRIaWlFeCAoLTEsIC0x LCBOVUxMLCBTVFJJTkdfVE9LRU4NCj4gPiAoU1RSX1ZBUl9QT0xfUE9MSUNZX0lOVF9FUlIpLCBt VmFyUG9saWN5U2hlbGxDb21tYW5kSGlpSGFuZGxlKTsNCj4gPiArICAgIHJldHVybiBGQUxTRTsN Cj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IGdCUy0+TG9jYXRlUHJvdG9jb2wgKCZn RWRraWlWYXJpYWJsZVBvbGljeVByb3RvY29sR3VpZCwgTlVMTCwNCj4gPiAoVk9JRCAqKikmVmFy aWFibGVQb2xpY3kpOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAg IFNoZWxsUHJpbnRIaWlFeCAoLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4NCj4gPiAoU1RSX1ZB Ul9QT0xfUE9MSUNZX05PX1BST1QpLCBtVmFyUG9saWN5U2hlbGxDb21tYW5kSGlpSGFuZGxlKTsN Cj4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFZhcmlhYmxl UG9saWN5VmFyaWFibGVOYW1lQnVmZmVyU2l6ZSA9IEVGSV9QQUdFU19UT19TSVpFICgxKTsNCj4g PiArICBWYXJpYWJsZVBvbGljeVZhcmlhYmxlTmFtZSAgICAgICAgICAgPSBBbGxvY2F0ZVBhZ2Vz DQo+ID4gKEVGSV9TSVpFX1RPX1BBR0VTIChWYXJpYWJsZVBvbGljeVZhcmlhYmxlTmFtZUJ1ZmZl clNpemUpKTsNCj4gPiArICBpZiAoVmFyaWFibGVQb2xpY3lWYXJpYWJsZU5hbWUgPT0gTlVMTCkg ew0KPiA+ICsgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gKyAgICBBU1NF UlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+ICsgICAgZ290byBEb25lOw0KPiA+ICsgIH0NCj4g PiArDQo+ID4gKyAgWmVyb01lbSAoVmFyaWFibGVQb2xpY3lWYXJpYWJsZU5hbWUsDQo+ID4gVmFy aWFibGVQb2xpY3lWYXJpYWJsZU5hbWVCdWZmZXJTaXplKTsNCj4gPiArICBSZXR1cm5lZFZhcmlh YmxlTmFtZVNpemUgPSBWYXJpYWJsZVBvbGljeVZhcmlhYmxlTmFtZUJ1ZmZlclNpemU7DQo+ID4g KyAgU3RhdHVzICAgICAgICAgICAgICAgICAgID0gIFZhcmlhYmxlUG9saWN5LT5HZXRWYXJpYWJs ZVBvbGljeUluZm8gKA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBWYXJpYWJsZU5hbWUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFZlbmRvckd1aWQsDQo+ID4gKw0KPiA+ICZSZXR1cm5lZFZh cmlhYmxlTmFtZVNpemUsDQo+ID4gKw0KPiA+ICZWYXJpYWJsZVBvbGljeUVudHJ5LA0KPiA+ICsN Cj4gPiBWYXJpYWJsZVBvbGljeVZhcmlhYmxlTmFtZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ICsgIGlmIChTdGF0dXMgPT0gRUZJ X05PVF9SRUFEWSkgew0KPiA+ICsgICAgU2hlbGxQcmludEhpaUV4ICgtMSwgLTEsIE5VTEwsIFNU UklOR19UT0tFTg0KPiA+IChTVFJfVkFSX1BPTF9QT0xJQ1lfTk9UX0lOSVQpLCBtVmFyUG9saWN5 U2hlbGxDb21tYW5kSGlpSGFuZGxlKTsNCj4gPiArICB9IGVsc2UgaWYgKFN0YXR1cyA9PSBFRklf Tk9UX0ZPVU5EKSB7DQo+ID4gKyAgICBTaGVsbFByaW50SGlpRXggKC0xLCAtMSwgTlVMTCwgU1RS SU5HX1RPS0VODQo+ID4gKFNUUl9WQVJfUE9MX1BPTElDWV9OT1RfRk9VTkQpLA0KPiBtVmFyUG9s aWN5U2hlbGxDb21tYW5kSGlpSGFuZGxlKTsNCj4gPiArICB9IGVsc2UgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiA+ICsgICAgLy8gQSBkaWZmZXJlbnQgZXJyb3IgcmV0dXJuIGNvZGUgaXMg bm90IGV4cGVjdGVkDQo+ID4gKyAgICBTaGVsbFByaW50SGlpRXggKC0xLCAtMSwgTlVMTCwgU1RS SU5HX1RPS0VODQo+ID4gKFNUUl9WQVJfUE9MX1BPTElDWV9VTkVYUF9FUlIpLCBtVmFyUG9saWN5 U2hlbGxDb21tYW5kSGlpSGFuZGxlLA0KPiA+IFN0YXR1cyk7DQo+ID4gKyAgfSBlbHNlIHsNCj4g PiArICAgIFBvbGljeUhlYWRlclByZXNlbnQgPSBUUlVFOw0KPiA+ICsgICAgU2hlbGxQcmludEhp aUV4ICgtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTg0KPiA+IChTVFJfVkFSX1BPTF9QT0xJQ1lf SEVBREVSXzEpLCBtVmFyUG9saWN5U2hlbGxDb21tYW5kSGlpSGFuZGxlKTsNCj4gPiArICAgIFNo ZWxsUHJpbnRIaWlFeCAoLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4NCj4gPiAoU1RSX1ZBUl9Q T0xfUE9MSUNZX0hFQURFUl8yKSwgbVZhclBvbGljeVNoZWxsQ29tbWFuZEhpaUhhbmRsZSk7DQo+ ID4gKyAgICBTaGVsbFByaW50SGlpRXggKC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VODQo+ID4g KFNUUl9WQVJfUE9MX1BPTElDWV9IRUFERVJfMSksIG1WYXJQb2xpY3lTaGVsbENvbW1hbmRIaWlI YW5kbGUpOw0KPiA+ICsgICAgU2hlbGxQcmludEhpaUV4ICgtMSwgLTEsIE5VTEwsIFNUUklOR19U T0tFTg0KPiA+IChTVFJfVkFSX1BPTF9QT0xJQ1lfVkVSU0lPTiksIG1WYXJQb2xpY3lTaGVsbENv bW1hbmRIaWlIYW5kbGUsDQo+ID4gVmFyaWFibGVQb2xpY3lFbnRyeS5WZXJzaW9uKTsNCj4gPiAr DQo+ID4gKyAgICBpZiAoKFJldHVybmVkVmFyaWFibGVOYW1lU2l6ZSA+IDApICYmDQo+ID4gKFZh cmlhYmxlUG9saWN5VmFyaWFibGVOYW1lWzBdICE9IENIQVJfTlVMTCkpIHsNCj4gPiArICAgICAg U2hlbGxQcmludEhpaUV4ICgtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTg0KPiA+IChTVFJfVkFS X1BPTF9QT0xJQ1lfVkFSSUFCTEUpLCBtVmFyUG9saWN5U2hlbGxDb21tYW5kSGlpSGFuZGxlLA0K PiA+IFZhcmlhYmxlUG9saWN5VmFyaWFibGVOYW1lKTsNCj4gPiArICAgIH0gZWxzZSB7DQo+ID4g KyAgICAgIFNoZWxsUHJpbnRIaWlFeCAoLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4NCj4gPiAo U1RSX1ZBUl9QT0xfUE9MSUNZX1ZBUklBQkxFKSwgbVZhclBvbGljeVNoZWxsQ29tbWFuZEhpaUhh bmRsZSwNCj4gPiBMIjxFbnRpcmUgTmFtZXNwYWNlPiIpOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4g PiArICAgIFNoZWxsUHJpbnRIaWlFeCAoLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4NCj4gPiAo U1RSX1ZBUl9QT0xfUE9MSUNZX05BTUVTUEFDRSksDQo+IG1WYXJQb2xpY3lTaGVsbENvbW1hbmRI aWlIYW5kbGUsDQo+ID4gJlZhcmlhYmxlUG9saWN5RW50cnkuTmFtZXNwYWNlKTsNCj4gPiArICAg IFNoZWxsUHJpbnRIaWlFeCAoLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4NCj4gPiAoU1RSX1ZB Ul9QT0xfUE9MSUNZX01JTl9TSVpFKSwgbVZhclBvbGljeVNoZWxsQ29tbWFuZEhpaUhhbmRsZSwN Cj4gPiBWYXJpYWJsZVBvbGljeUVudHJ5Lk1pblNpemUpOw0KPiA+ICsgICAgU2hlbGxQcmludEhp aUV4ICgtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTg0KPiA+IChTVFJfVkFSX1BPTF9QT0xJQ1lf TUFYX1NJWkUpLCBtVmFyUG9saWN5U2hlbGxDb21tYW5kSGlpSGFuZGxlLA0KPiA+IFZhcmlhYmxl UG9saWN5RW50cnkuTWF4U2l6ZSk7DQo+ID4gKw0KPiA+ICsgICAgc3dpdGNoIChWYXJpYWJsZVBv bGljeUVudHJ5LkxvY2tQb2xpY3lUeXBlKSB7DQo+ID4gKyAgICAgIGNhc2UgVkFSSUFCTEVfUE9M SUNZX1RZUEVfTk9fTE9DSzoNCj4gPiArICAgICAgICBTaGVsbFByaW50SGlpRXggKC0xLCAtMSwg TlVMTCwgU1RSSU5HX1RPS0VODQo+ID4gKFNUUl9WQVJfUE9MX1BPTElDWV9MT0NLX1RZUEUpLCBt VmFyUG9saWN5U2hlbGxDb21tYW5kSGlpSGFuZGxlLA0KPiA+IEwiTm8gTG9jayIpOw0KPiA+ICsg ICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICBjYXNlIFZBUklBQkxFX1BPTElDWV9UWVBFX0xPQ0tf Tk9XOg0KPiA+ICsgICAgICAgIFNoZWxsUHJpbnRIaWlFeCAoLTEsIC0xLCBOVUxMLCBTVFJJTkdf VE9LRU4NCj4gPiAoU1RSX1ZBUl9QT0xfUE9MSUNZX0xPQ0tfVFlQRSksIG1WYXJQb2xpY3lTaGVs bENvbW1hbmRIaWlIYW5kbGUsDQo+ID4gTCJMb2NrIE5vdyIpOw0KPiA+ICsgICAgICAgIGJyZWFr Ow0KPiA+ICsgICAgICBjYXNlIFZBUklBQkxFX1BPTElDWV9UWVBFX0xPQ0tfT05fQ1JFQVRFOg0K PiA+ICsgICAgICAgIFNoZWxsUHJpbnRIaWlFeCAoLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4N Cj4gPiAoU1RSX1ZBUl9QT0xfUE9MSUNZX0xPQ0tfVFlQRSksIG1WYXJQb2xpY3lTaGVsbENvbW1h bmRIaWlIYW5kbGUsDQo+ID4gTCJPbiBDcmVhdGUiKTsNCj4gPiArICAgICAgICBicmVhazsNCj4g PiArICAgICAgY2FzZSBWQVJJQUJMRV9QT0xJQ1lfVFlQRV9MT0NLX09OX1ZBUl9TVEFURToNCj4g PiArICAgICAgICBTaGVsbFByaW50SGlpRXggKC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VODQo+ ID4gKFNUUl9WQVJfUE9MX1BPTElDWV9MT0NLX1RZUEUpLCBtVmFyUG9saWN5U2hlbGxDb21tYW5k SGlpSGFuZGxlLA0KPiA+IEwiT24gVmFyaWFibGUgU3RhdGUiKTsNCj4gPiArDQo+ID4gKyAgICAg ICAgWmVyb01lbSAoVmFyaWFibGVQb2xpY3lWYXJpYWJsZU5hbWUsDQo+ID4gVmFyaWFibGVQb2xp Y3lWYXJpYWJsZU5hbWVCdWZmZXJTaXplKTsNCj4gPiArICAgICAgICBSZXR1cm5lZFZhcmlhYmxl TmFtZVNpemUgPQ0KPiA+IFZhcmlhYmxlUG9saWN5VmFyaWFibGVOYW1lQnVmZmVyU2l6ZTsNCj4g PiArICAgICAgICBTdGF0dXMgICAgICAgICAgICAgICAgICAgPQ0KPiA+IFZhcmlhYmxlUG9saWN5 LT5HZXRMb2NrT25WYXJpYWJsZVN0YXRlVmFyaWFibGVQb2xpY3lJbmZvICgNCj4gPiArDQo+ID4g VmFyaWFibGVOYW1lLA0KPiA+ICsNCj4gPiBWZW5kb3JHdWlkLA0KPiA+ICsNCj4gPiAmUmV0dXJu ZWRWYXJpYWJsZU5hbWVTaXplLA0KPiA+ICsNCj4gPiAmTG9ja09uVmFyU3RhdGVQb2xpY3ksDQo+ ID4gKw0KPiA+IFZhcmlhYmxlUG9saWN5VmFyaWFibGVOYW1lDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgICAgICAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICAgICAgU2hlbGxQcmludEhpaUV4 ICgtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTg0KPiA+IChTVFJfVkFSX1BPTF9QT0xJQ1lfVU5F WFBfRVJSKSwgbVZhclBvbGljeVNoZWxsQ29tbWFuZEhpaUhhbmRsZSwNCj4gPiBTdGF0dXMpOw0K PiA+ICsgICAgICAgICAgZ290byBEb25lOw0KPiA+ICsgICAgICAgIH0gZWxzZSB7DQo+ID4gKyAg ICAgICAgICBTaGVsbFByaW50SGlpRXggKC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VODQo+ID4g KFNUUl9WQVJfUE9MX1BPTElDWV9TVEFURV9OUyksIG1WYXJQb2xpY3lTaGVsbENvbW1hbmRIaWlI YW5kbGUsDQo+ID4gJkxvY2tPblZhclN0YXRlUG9saWN5Lk5hbWVzcGFjZSk7DQo+ID4gKyAgICAg ICAgICBTaGVsbFByaW50SGlpRXggKC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VODQo+ID4gKFNU Ul9WQVJfUE9MX1BPTElDWV9TVEFURV9WQUwpLCBtVmFyUG9saWN5U2hlbGxDb21tYW5kSGlpSGFu ZGxlLA0KPiA+IExvY2tPblZhclN0YXRlUG9saWN5LlZhbHVlKTsNCj4gPiArICAgICAgICAgIGlm ICgoUmV0dXJuZWRWYXJpYWJsZU5hbWVTaXplID4gMCkgJiYNCj4gPiAoVmFyaWFibGVQb2xpY3lW YXJpYWJsZU5hbWVbMF0gIT0gQ0hBUl9OVUxMKSkgew0KPiA+ICsgICAgICAgICAgICBTaGVsbFBy aW50SGlpRXggKC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VODQo+ID4gKFNUUl9WQVJfUE9MX1BP TElDWV9TVEFURV9OQU1FKSwNCj4gbVZhclBvbGljeVNoZWxsQ29tbWFuZEhpaUhhbmRsZSwNCj4g PiBWYXJpYWJsZVBvbGljeVZhcmlhYmxlTmFtZSk7DQo+ID4gKyAgICAgICAgICB9IGVsc2Ugew0K PiA+ICsgICAgICAgICAgICBTaGVsbFByaW50SGlpRXggKC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RP S0VODQo+ID4gKFNUUl9WQVJfUE9MX1BPTElDWV9TVEFURV9OQU1FKSwNCj4gbVZhclBvbGljeVNo ZWxsQ29tbWFuZEhpaUhhbmRsZSwNCj4gPiBMIjxFbnRpcmUgTmFtZXNwYWNlPiIpOw0KPiA+ICsg ICAgICAgICAgfQ0KPiA+ICsgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAgYnJlYWs7DQo+ ID4gKyAgICAgIGRlZmF1bHQ6DQo+ID4gKyAgICAgICAgU2hlbGxQcmludEhpaUV4ICgtMSwgLTEs IE5VTEwsIFNUUklOR19UT0tFTg0KPiA+IChTVFJfVkFSX1BPTF9QT0xJQ1lfTE9DS19UWVBFKSwg bVZhclBvbGljeVNoZWxsQ29tbWFuZEhpaUhhbmRsZSwNCj4gPiBMIlVua25vd24iKTsNCj4gPiAr ICAgICAgICBicmVhazsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBWYXJpYWJsZUF0dHJp YnV0ZXNTdHIgPSBBbGxvY2F0ZVBhZ2VzICgxKTsNCj4gPiArICAgIGlmIChWYXJpYWJsZUF0dHJp YnV0ZXNTdHIgPT0gTlVMTCkgew0KPiA+ICsgICAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09V UkNFUzsNCj4gPiArICAgICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiArICAgICAg Z290byBEb25lOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIFplcm9NZW0gKFZhcmlhYmxl QXR0cmlidXRlc1N0ciwgRUZJX1BBR0VTX1RPX1NJWkUgKDEpKTsNCj4gPiArICAgIFN0YXR1cyA9 IEdldEF0dHJpYnV0ZXNTdHJpbmcgKFZhcmlhYmxlUG9saWN5RW50cnkuQXR0cmlidXRlc011c3RI YXZlLA0KPiA+IEVGSV9QQUdFU19UT19TSVpFICgxKSwgVmFyaWFibGVBdHRyaWJ1dGVzU3RyKTsN Cj4gPiArICAgIGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCj4gPiArICAgICAgU2hlbGxQ cmludEhpaUV4ICgNCj4gPiArICAgICAgICAtMSwNCj4gPiArICAgICAgICAtMSwNCj4gPiArICAg ICAgICBOVUxMLA0KPiA+ICsgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX1ZBUl9QT0xfUE9MSUNZ X0FUVFJfTVVTVCksDQo+ID4gKyAgICAgICAgbVZhclBvbGljeVNoZWxsQ29tbWFuZEhpaUhhbmRs ZQ0KPiA+ICsgICAgICAgICk7DQo+ID4gKyAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gKyAg ICAgICAgLTEsDQo+ID4gKyAgICAgICAgLTEsDQo+ID4gKyAgICAgICAgTlVMTCwNCj4gPiArICAg ICAgICBTVFJJTkdfVE9LRU4gKFNUUl9WQVJfUE9MX1BPTElDWV9BVFRSX0dFTiksDQo+ID4gKyAg ICAgICAgbVZhclBvbGljeVNoZWxsQ29tbWFuZEhpaUhhbmRsZSwNCj4gPiArICAgICAgICBWYXJp YWJsZUF0dHJpYnV0ZXNTdHINCj4gPiArICAgICAgICApOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4g PiArICAgIFplcm9NZW0gKFZhcmlhYmxlQXR0cmlidXRlc1N0ciwgRUZJX1BBR0VTX1RPX1NJWkUg KDEpKTsNCj4gPiArICAgIFN0YXR1cyA9IEdldEF0dHJpYnV0ZXNTdHJpbmcgKFZhcmlhYmxlUG9s aWN5RW50cnkuQXR0cmlidXRlc0NhbnRIYXZlLA0KPiA+IEVGSV9QQUdFU19UT19TSVpFICgxKSwg VmFyaWFibGVBdHRyaWJ1dGVzU3RyKTsNCj4gPiArICAgIGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NF U1MpIHsNCj4gPiArICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gPiArICAgICAgICAtMSwNCj4g PiArICAgICAgICAtMSwNCj4gPiArICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAgIFNUUklOR19U T0tFTiAoU1RSX1ZBUl9QT0xfUE9MSUNZX0FUVFJfTk9UKSwNCj4gPiArICAgICAgICBtVmFyUG9s aWN5U2hlbGxDb21tYW5kSGlpSGFuZGxlDQo+ID4gKyAgICAgICAgKTsNCj4gPiArICAgICAgU2hl bGxQcmludEhpaUV4ICgNCj4gPiArICAgICAgICAtMSwNCj4gPiArICAgICAgICAtMSwNCj4gPiAr ICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX1ZBUl9QT0xfUE9M SUNZX0FUVFJfR0VOKSwNCj4gPiArICAgICAgICBtVmFyUG9saWN5U2hlbGxDb21tYW5kSGlpSGFu ZGxlLA0KPiA+ICsgICAgICAgIFZhcmlhYmxlQXR0cmlidXRlc1N0cg0KPiA+ICsgICAgICAgICk7 DQo+ID4gKyAgICB9DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArRG9uZToNCj4gPiArICBpZiAoUG9s aWN5SGVhZGVyUHJlc2VudCkgew0KPiA+ICsgICAgU2hlbGxQcmludEhpaUV4ICgtMSwgLTEsIE5V TEwsIFNUUklOR19UT0tFTg0KPiA+IChTVFJfVkFSX1BPTF9QT0xJQ1lfSEVBREVSXzEpLCBtVmFy UG9saWN5U2hlbGxDb21tYW5kSGlpSGFuZGxlKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlm IChWYXJpYWJsZUF0dHJpYnV0ZXNTdHIgIT0gTlVMTCkgew0KPiA+ICsgICAgRnJlZVBhZ2VzIChW YXJpYWJsZUF0dHJpYnV0ZXNTdHIsIDEpOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKFZh cmlhYmxlUG9saWN5VmFyaWFibGVOYW1lICE9IE5VTEwpIHsNCj4gPiArICAgIEZyZWVQYWdlcyAo VmFyaWFibGVQb2xpY3lWYXJpYWJsZU5hbWUsIDEpOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAg U2hlbGxQcmludEhpaUV4ICgtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTiAoU1RSX0dFTl9MSU5F X0JSRUFLKSwNCj4gPiBtVmFyUG9saWN5U2hlbGxDb21tYW5kSGlpSGFuZGxlKTsNCj4gPiArDQo+ ID4gKyAgcmV0dXJuIFN0YXR1cyA9PSBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgR2V0cyB0aGUgbmV4dCBVRUZJIHZhcmlhYmxlIG5hbWUuDQo+ID4gKw0KPiA+ ICsgIFRoaXMgYnVmZmVyIG1hbmFnZXMgdGhlIFVFRkkgdmFyaWFibGUgbmFtZSBidWZmZXIsIHBl cmZvcm1pbmcgbWVtb3J5DQo+ID4gcmVhbGxvY2F0aW9ucyBhcyBuZWNlc3NhcnkuDQo+ID4gKw0K PiA+ICsgIE5vdGU6IFRoZSBmaXJzdCB0aW1lIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCBWYXJp YWJsZU5hbWVCdWZmZXJTaXplDQo+IG11c3QNCj4gPiBiZSAwIGFuZA0KPiA+ICsgIHRoZSBWYXJp YWJsZU5hbWUgYnVmZmVyIHBvaW50ZXIgbXVzdCBwb2ludCB0byBOVUxMLg0KPiA+ICsNCj4gPiAr ICBAcGFyYW1baW4sb3V0XSBWYXJpYWJsZU5hbWVCdWZmZXJTaXplICAgT24gaW5wdXQsIGEgcG9p bnRlciB0byBhDQo+ID4gYnVmZmVyIHRoYXQgaG9sZHMgdGhlIGN1cnJlbnQNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSBvZiB0aGUNCj4gPiBWYXJp YWJsZU5hbWUgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIGEgcG9pbnRlciB0bw0KPiA+IGEgYnVmZmVyIHRo YXQgaG9sZHMgdGhlIHVwZGF0ZWQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZSBvZiB0aGUNCj4gPiBWYXJpYWJsZU5hbWUgYnVmZmVyIGluIGJ5dGVz Lg0KPiA+ICsgIEBwYXJhbVtpbixvdXRdIFZhcmlhYmxlTmFtZSAgICAgICAgICAgICBPbiBpbnB1 dCwgYSBwb2ludGVyIHRvIGENCj4gPiBwb2ludGVyIHRvIGEgYnVmZmVyIHRoYXQgaG9sZHMgdGhl DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQg VUVGSSB2YXJpYWJsZQ0KPiA+IG5hbWUuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgYSBwb2ludGVyIHRvDQo+ID4gYSBwb2ludGVyIHRv IGEgYnVmZmVyIHRoYXQgaG9sZHMgdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5leHQgVUVGSSB2YXJpYWJsZQ0KPiA+IG5hbWUuDQo+ID4gKyAgQHBh cmFtW2luLG91dF0gVmFyaWFibGVHdWlkICAgICAgICAgICAgIE9uIGlucHV0LCBhIHBvaW50ZXIg dG8gYQ0KPiA+IGJ1ZmZlciB0aGF0IGhvbGRzIHRoZSBjdXJyZW50IFVFRkkNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgR1VJRC4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCBhIHBv aW50ZXIgdG8NCj4gPiBhIGJ1ZmZlciB0aGF0IGhvbGRzIHRoZSBuZXh0IFVFRkkNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgR1VJRC4NCj4g PiArDQo+ID4gKyAgQHJldHZhbCAgICBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgVGhlIG5leHQg VUVGSSB2YXJpYWJsZSBuYW1lDQo+ID4gd2FzIGZvdW5kIHN1Y2Nlc3NmdWxseS4NCj4gPiArICBA cmV0dmFsICAgIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICBBIHBvaW50ZXIgYXJndW1lbnQgaXMg TlVMTA0KPiA+IG9yIGluaXRpYWwgaW5wdXQgdmFsdWVzIGFyZSBpbnZhbGlkLg0KPiA+ICsgIEBy ZXR2YWwgICAgRUZJX09VVF9PRl9SRVNPVVJDRVMgICAgIEluc3VmZmljaWVudCBtZW1vcnkNCj4g PiByZXNvdXJjZXMgdG8gYWxsb2NhdGUgYSByZXF1aXJlZCBidWZmZXIuDQo+ID4gKyAgQHJldHZh bCAgICBPdGhlcnMgICAgICAgICAgICAgICAgICAgUmV0dXJuIHN0YXR1cyBjb2RlcyBmcm9tIHRo ZQ0KPiA+IFVFRkkgc3BlYyBkZWZpbmUgR2V0TmV4dFZhcmlhYmxlTmFtZSgpIGludGVyZmFjZS4N Cj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0dldE5leHRWYXJpYWJsZU5h bWVXaXRoRHluYW1pY1JlYWxsb2NhdGlvbiAoDQo+ID4gKyAgSU4gIE9VVCBVSU5UTiAgICAgKlZh cmlhYmxlTmFtZUJ1ZmZlclNpemUsDQo+ID4gKyAgSU4gIE9VVCBDSEFSMTYgICAgKipWYXJpYWJs ZU5hbWUsDQo+ID4gKyAgSU4gIE9VVCBFRklfR1VJRCAgKlZhcmlhYmxlR3VpZA0KPiA+ICsgICkN Cj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMgIFN0YXR1czsNCj4gPiArICBVSU5UTiAgICAgICBO ZXh0VmFyaWFibGVOYW1lQnVmZmVyU2l6ZTsNCj4gPiArDQo+ID4gKyAgaWYgKChWYXJpYWJsZU5h bWVCdWZmZXJTaXplID09IE5VTEwpIHx8IChWYXJpYWJsZU5hbWUgPT0gTlVMTCkgfHwNCj4gPiAo VmFyaWFibGVHdWlkID09IE5VTEwpKSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFS QU1FVEVSOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKCpWYXJpYWJsZU5hbWVCdWZmZXJT aXplID09IDApIHsNCj4gPiArICAgIGlmICgqVmFyaWFibGVOYW1lICE9IE5VTEwpIHsNCj4gPiAr ICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICAgIH0NCj4gPiArDQo+ ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgdG8gdGVtcG9yYXJpbHkg aG9sZCB2YXJpYWJsZSBuYW1lcy4gVG8gcmVkdWNlDQo+ID4gbWVtb3J5DQo+ID4gKyAgICAvLyBh bGxvY2F0aW9ucywgdGhlIGRlZmF1bHQgYnVmZmVyIHNpemUgaXMgMjU2IGNoYXJhY3RlcnMuIFRo ZSBidWZmZXINCj4gY2FuDQo+ID4gKyAgICAvLyBiZSByZWFsbG9jYXRlZCBpZiBleHBhbnNpb24g aXMgbmVjZXNzYXJ5IChzaG91bGQgYmUgdmVyeSByYXJlKS4NCj4gPiArICAgIC8vDQo+ID4gKyAg ICAqVmFyaWFibGVOYW1lQnVmZmVyU2l6ZSA9IHNpemVvZiAoQ0hBUjE2KSAqIDI1NjsNCj4gPiAr ICAgICpWYXJpYWJsZU5hbWUgICAgICAgICAgID0gQWxsb2NhdGVaZXJvUG9vbA0KPiA+ICgqVmFy aWFibGVOYW1lQnVmZmVyU2l6ZSk7DQo+ID4gKyAgICBpZiAoKlZhcmlhYmxlTmFtZSA9PSBOVUxM KSB7DQo+ID4gKyAgICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiArICAgIH0N Cj4gPiArDQo+ID4gKyAgICBaZXJvTWVtICgoVk9JRCAqKVZhcmlhYmxlR3VpZCwgc2l6ZW9mIChF RklfR1VJRCkpOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgTmV4dFZhcmlhYmxlTmFtZUJ1ZmZl clNpemUgPSAqVmFyaWFibGVOYW1lQnVmZmVyU2l6ZTsNCj4gPiArICBTdGF0dXMgICAgICAgICAg ICAgICAgICAgICA9IGdSVC0+R2V0TmV4dFZhcmlhYmxlTmFtZSAoDQo+ID4gKw0KPiA+ICZOZXh0 VmFyaWFibGVOYW1lQnVmZmVyU2l6ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqVmFyaWFibGVOYW1lLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFZhcmlhYmxlR3VpZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKFN0YXR1cyA9PSBFRklfQlVGRkVSX1RPT19TTUFM TCkgew0KPiA+ICsgICAgKlZhcmlhYmxlTmFtZSA9IFJlYWxsb2NhdGVQb29sICgNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICpWYXJpYWJsZU5hbWVCdWZmZXJTaXplLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgTmV4dFZhcmlhYmxlTmFtZUJ1ZmZlclNpemUsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAqVmFyaWFibGVOYW1lDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAp Ow0KPiA+ICsgICAgaWYgKCpWYXJpYWJsZU5hbWUgPT0gTlVMTCkgew0KPiA+ICsgICAgICByZXR1 cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgKlZh cmlhYmxlTmFtZUJ1ZmZlclNpemUgPSBOZXh0VmFyaWFibGVOYW1lQnVmZmVyU2l6ZTsNCj4gPiAr DQo+ID4gKyAgICBTdGF0dXMgPSBnUlQtPkdldE5leHRWYXJpYWJsZU5hbWUgKA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICZOZXh0VmFyaWFibGVOYW1lQnVmZmVyU2l6ZSwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAqVmFyaWFibGVOYW1lLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIFZh cmlhYmxlR3VpZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgICBBU1NFUlQg KFN0YXR1cyAhPSBFRklfQlVGRkVSX1RPT19TTUFMTCk7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiAr ICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBEdW1wcyBV RUZJIHZhcmlhYmxlIGluZm9ybWF0aW9uLg0KPiA+ICsNCj4gPiArICBUaGlzIGlzIHRoZSBtYWlu IGZ1bmN0aW9uIHRoYXQgZW51bWVyYXRlcyBVRUZJIHZhcmlhYmxlcyBhbmQgcHJpbnRzIHRoZQ0K PiA+IGluZm9ybWF0aW9uDQo+ID4gKyAgc2VsZWN0ZWQgYnkgdGhlIHVzZXIuDQo+ID4gKw0KPiA+ ICsgIEBwYXJhbVtpbl0gVmVyYm9zZSAgICAgICAgICAgIFdoZXRoZXIgdG8gcHJpbnQgdmVyYm9z ZSBpbmZvcm1hdGlvbi4NCj4gPiArICBAcGFyYW1baW5dIFN0YXRzICAgICAgICAgICAgICBXaGV0 aGVyIHRvIHByaW50IHN0YXRpc3RpY2FsDQo+ID4gaW5mb3JtYXRpb24uDQo+ID4gKyAgQHBhcmFt W2luXSBQb2xpY3lDaGVjayAgICAgICAgV2hldGhlciB0byBwcmludCB2YXJpYWJsZSBwb2xpY3kg cmVsYXRlZA0KPiA+IGluZm9ybWF0aW9uLg0KPiA+ICsNCj4gPiArDQo+ID4gKyAgQHJldHZhbCAg ICBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgVGhlIFVFRkkgdmFyaWFibGUgaW5mb3JtYXRpb24N Cj4gPiB3YXMgZHVtcGVkIHN1Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0dmFsICAgIEVGSV9ERVZJ Q0VfRVJST1IgICAgICAgICBBbiBlcnJvciBvY2N1cnJlZCBhdHRlbXB0aW5nDQo+ID4gdG8gZ2V0 IFVFRkkgdmFyaWFibGUgaW5mb3JtYXRpb24uDQo+ID4gKyAgQHJldHZhbCAgICBFRklfT1VUX09G X1JFU09VUkNFUyAgICAgSW5zdWZmaWNpZW50IG1lbW9yeQ0KPiA+IHJlc291cmNlcyB0byBhbGxv Y2F0ZSBhIHJlcXVpcmVkIGJ1ZmZlci4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVT DQo+ID4gK0R1bXBWYXJzICgNCj4gPiArICBJTiAgQk9PTEVBTiAgVmVyYm9zZSwNCj4gPiArICBJ TiAgQk9PTEVBTiAgU3RhdHMsDQo+ID4gKyAgSU4gIEJPT0xFQU4gIFBvbGljeUNoZWNrDQo+ID4g KyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KPiA+ICsgIEVGSV9TVEFU VVMgIEdldE5leHRWYXJpYWJsZVN0YXR1czsNCj4gPiArICBVSU5UMzIgICAgICBBdHRyaWJ1dGVz Ow0KPiA+ICsgIFVJTlROICAgICAgIEN1cnJlbnRWYXJpYWJsZURhdGFCdWZmZXJTaXplOw0KPiA+ ICsgIFVJTlROICAgICAgIERhdGFTaXplOw0KPiA+ICsgIFVJTlROICAgICAgIFRvdGFsRGF0YVNp emU7DQo+ID4gKyAgVUlOVE4gICAgICAgVG90YWxWYXJpYWJsZXM7DQo+ID4gKyAgVUlOVE4gICAg ICAgVG90YWxWYXJpYWJsZXNXaXRoUG9saWN5Ow0KPiA+ICsgIFVJTlROICAgICAgIFZhcmlhYmxl TmFtZUJ1ZmZlclNpemU7DQo+ID4gKyAgRUZJX0dVSUQgICAgVmFyaWFibGVHdWlkOw0KPiA+ICsg IENIQVIxNiAgICAgICpWYXJpYWJsZU5hbWU7DQo+ID4gKyAgVk9JRCAgICAgICAgKkRhdGE7DQo+ ID4gKw0KPiA+ICsgIFN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgID0gRUZJX1NVQ0NFU1M7 DQo+ID4gKyAgRGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgPSBOVUxMOw0KPiA+ICsgIFZh cmlhYmxlTmFtZSAgICAgICAgICAgICAgICAgID0gTlVMTDsNCj4gPiArICBDdXJyZW50VmFyaWFi bGVEYXRhQnVmZmVyU2l6ZSA9IDA7DQo+ID4gKyAgVG90YWxEYXRhU2l6ZSAgICAgICAgICAgICAg ICAgPSAwOw0KPiA+ICsgIFRvdGFsVmFyaWFibGVzICAgICAgICAgICAgICAgID0gMDsNCj4gPiAr ICBUb3RhbFZhcmlhYmxlc1dpdGhQb2xpY3kgICAgICA9IDA7DQo+ID4gKyAgVmFyaWFibGVOYW1l QnVmZmVyU2l6ZSAgICAgICAgPSAwOw0KPiA+ICsNCj4gPiArICBkbyB7DQo+ID4gKyAgICBHZXRO ZXh0VmFyaWFibGVTdGF0dXMgPQ0KPiA+IEdldE5leHRWYXJpYWJsZU5hbWVXaXRoRHluYW1pY1Jl YWxsb2NhdGlvbiAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZWYXJpYWJs ZU5hbWVCdWZmZXJTaXplLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmVmFy aWFibGVOYW1lLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmVmFyaWFibGVH dWlkDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gKw0KPiA+ICsg ICAgaWYgKCFFRklfRVJST1IgKEdldE5leHRWYXJpYWJsZVN0YXR1cykpIHsNCj4gPiArICAgICAg RGF0YVNpemUgPSAwOw0KPiA+ICsgICAgICBTdGF0dXMgICA9IGdSVC0+R2V0VmFyaWFibGUgKA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZU5hbWUsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICZWYXJpYWJsZUd1aWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICZBdHRyaWJ1dGVzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAmRGF0YVNpemUs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgKTsNCj4gPiArICAgICAgaWYgKFN0YXR1cyAhPSBFRklfQlVGRkVSX1RPT19TTUFM TCkgew0KPiA+ICsgICAgICAgIC8vIElmIHRoZSB2YXJpYWJsZSBleGlzdHMsIGEgemVybyBzaXpl IGJ1ZmZlciBzaG91bGQgYmUgdG9vIHNtYWxsDQo+ID4gKyAgICAgICAgU3RhdHVzID0gRUZJX0RF VklDRV9FUlJPUjsNCj4gPiArICAgICAgICBnb3RvIERlYWxsb2NhdGVBbmRFeGl0Ow0KPiA+ICsg ICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICBUb3RhbERhdGFTaXplICs9IERhdGFTaXplOw0KPiA+ ICsgICAgICBUb3RhbFZhcmlhYmxlcysrOw0KPiA+ICsNCj4gPiArICAgICAgaWYgKCFTdGF0cyB8 fCBWZXJib3NlKSB7DQo+ID4gKyAgICAgICAgU3RhdHVzID0gUHJpbnROb25WZXJib3NlVmFySW5m byAoVmFyaWFibGVOYW1lLCAmVmFyaWFibGVHdWlkLA0KPiA+IERhdGFTaXplLCBBdHRyaWJ1dGVz KTsNCj4gPiArICAgICAgICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICAg ICAgU2hlbGxQcmludEhpaUV4ICgtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTg0KPiA+IChTVFJf R0VOX0xJTkVfQlJFQUspLCBtVmFyUG9saWN5U2hlbGxDb21tYW5kSGlpSGFuZGxlKTsNCj4gPiAr ICAgICAgICB9DQo+ID4gKyAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgIGlmIChQb2xpY3lDaGVj ayB8fCBWZXJib3NlKSB7DQo+ID4gKyAgICAgICAgaWYgKFByaW50VmFyaWFibGVQb2xpY3lJbmZv IChWYXJpYWJsZU5hbWUsICZWYXJpYWJsZUd1aWQpKSB7DQo+ID4gKyAgICAgICAgICBUb3RhbFZh cmlhYmxlc1dpdGhQb2xpY3krKzsNCj4gPiArICAgICAgICB9DQo+ID4gKyAgICAgIH0NCj4gPiAr DQo+ID4gKyAgICAgIGlmIChWZXJib3NlKSB7DQo+ID4gKyAgICAgICAgaWYgKEN1cnJlbnRWYXJp YWJsZURhdGFCdWZmZXJTaXplIDwgRGF0YVNpemUpIHsNCj4gPiArICAgICAgICAgIGlmIChEYXRh ICE9IE5VTEwpIHsNCj4gPiArICAgICAgICAgICAgRnJlZVBvb2wgKERhdGEpOw0KPiA+ICsgICAg ICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAgIERhdGEgPSBBbGxvY2F0ZVplcm9Qb29sIChE YXRhU2l6ZSk7DQo+ID4gKyAgICAgICAgICBpZiAoRGF0YSA9PSBOVUxMKSB7DQo+ID4gKyAgICAg ICAgICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ICsgICAgICAgICAgICBn b3RvIERlYWxsb2NhdGVBbmRFeGl0Ow0KPiA+ICsgICAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAg ICAgICAgIEN1cnJlbnRWYXJpYWJsZURhdGFCdWZmZXJTaXplID0gRGF0YVNpemU7DQo+ID4gKyAg ICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICBTdGF0dXMgPSBnUlQtPkdldFZhcmlhYmxlICgN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVOYW1lLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAmVmFyaWFibGVHdWlkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBOVUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAmRGF0YVNpemUsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgIERhdGENCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgKTsNCj4gPiArICAgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICAg ICAgICBTdGF0dXMgPSBFRklfREVWSUNFX0VSUk9SOw0KPiA+ICsgICAgICAgICAgZ290byBEZWFs bG9jYXRlQW5kRXhpdDsNCj4gPiArICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgIFN0YXR1 cyA9IFByaW50VmVyYm9zZVZhckluZm8gKERhdGEsIERhdGFTaXplKTsNCj4gPiArICAgICAgICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICAgICAgICBTdGF0dXMgPSBFRklfREVW SUNFX0VSUk9SOw0KPiA+ICsgICAgICAgICAgZ290byBEZWFsbG9jYXRlQW5kRXhpdDsNCj4gPiAr ICAgICAgICB9DQo+ID4gKyAgICAgIH0NCj4gPiArICAgIH0NCj4gPiArICB9IHdoaWxlICghRUZJ X0VSUk9SIChHZXROZXh0VmFyaWFibGVTdGF0dXMpKTsNCj4gPiArDQo+ID4gKyAgaWYgKFRvdGFs VmFyaWFibGVzID09IDApIHsNCj4gPiArICAgIFNoZWxsUHJpbnRIaWlFeCAoLTEsIC0xLCBOVUxM LCBTVFJJTkdfVE9LRU4gKFNUUl9HRU5fTk9fVkFSUyksDQo+ID4gbVZhclBvbGljeVNoZWxsQ29t bWFuZEhpaUhhbmRsZSk7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIGlmIChWZXJib3NlIHx8 IFN0YXRzKSB7DQo+ID4gKyAgICAgIFByaW50U3RhdHMgKFRvdGFsVmFyaWFibGVzLCBUb3RhbERh dGFTaXplKTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBpZiAoVmVyYm9zZSB8fCBQb2xp Y3lDaGVjaykgew0KPiA+ICsgICAgICBBU1NFUlQgKFRvdGFsVmFyaWFibGVzV2l0aFBvbGljeSA8 PSBUb3RhbFZhcmlhYmxlcyk7DQo+ID4gKw0KPiA+ICsgICAgICBTaGVsbFByaW50SGlpRXggKC0x LCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VODQo+ID4gKFNUUl9HRU5fTElORV9CUkVBSyksIG1WYXJQ b2xpY3lTaGVsbENvbW1hbmRIaWlIYW5kbGUpOw0KPiA+ICsgICAgICBpZiAoVG90YWxWYXJpYWJs ZXNXaXRoUG9saWN5ID09IFRvdGFsVmFyaWFibGVzKSB7DQo+ID4gKyAgICAgICAgU2hlbGxQcmlu dEhpaUV4ICgNCj4gPiArICAgICAgICAgIC0xLA0KPiA+ICsgICAgICAgICAgLTEsDQo+ID4gKyAg ICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfVkFSX1BPTF9Q T0xJQ1lfU1RBVFNfUEFTUyksDQo+ID4gKyAgICAgICAgICBtVmFyUG9saWN5U2hlbGxDb21tYW5k SGlpSGFuZGxlLA0KPiA+ICsgICAgICAgICAgVG90YWxWYXJpYWJsZXNXaXRoUG9saWN5LA0KPiA+ ICsgICAgICAgICAgVG90YWxWYXJpYWJsZXMNCj4gPiArICAgICAgICAgICk7DQo+ID4gKyAgICAg IH0gZWxzZSB7DQo+ID4gKyAgICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gPiArICAgICAgICAg IC0xLA0KPiA+ICsgICAgICAgICAgLTEsDQo+ID4gKyAgICAgICAgICBOVUxMLA0KPiA+ICsgICAg ICAgICAgU1RSSU5HX1RPS0VOIChTVFJfVkFSX1BPTF9QT0xJQ1lfU1RBVFNfRkFJTCksDQo+ID4g KyAgICAgICAgICBtVmFyUG9saWN5U2hlbGxDb21tYW5kSGlpSGFuZGxlLA0KPiA+ICsgICAgICAg ICAgVG90YWxWYXJpYWJsZXNXaXRoUG9saWN5LA0KPiA+ICsgICAgICAgICAgVG90YWxWYXJpYWJs ZXMNCj4gPiArICAgICAgICAgICk7DQo+ID4gKyAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgIFNo ZWxsUHJpbnRIaWlFeCAoLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4NCj4gPiAoU1RSX0dFTl9M SU5FX0JSRUFLKSwgbVZhclBvbGljeVNoZWxsQ29tbWFuZEhpaUhhbmRsZSk7DQo+ID4gKyAgICB9 DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gPiArDQo+ ID4gK0RlYWxsb2NhdGVBbmRFeGl0Og0KPiA+ICsgIGlmIChWYXJpYWJsZU5hbWUgIT0gTlVMTCkg ew0KPiA+ICsgICAgRnJlZVBvb2wgKFZhcmlhYmxlTmFtZSk7DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiArICBpZiAoRGF0YSAhPSBOVUxMKSB7DQo+ID4gKyAgICBGcmVlUG9vbCAoRGF0YSk7DQo+ID4g KyAgfQ0KPiA+ICsNCj4gPiArICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+ICsNCj4g PiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBNYWlu IGVudHJ5IGZ1bmN0aW9uIGZvciB0aGUgInZhcnBvbGljeSIgY29tbWFuZC4NCj4gPiArDQo+ID4g KyAgQHBhcmFtW2luXSBJbWFnZUhhbmRsZSAgSGFuZGxlIHRvIHRoZSBJbWFnZSAoTlVMTCBpZiBJ bnRlcm5hbCkuDQo+ID4gKyAgQHBhcmFtW2luXSBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUg U3lzdGVtIFRhYmxlIChOVUxMIGlmIEludGVybmFsKS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCAg IFNIRUxMX1NVQ0NFU1MgICAgICAgICAgICAgICBUaGUgInZhcnBvbGljeSIgc2hlbGwNCj4gPiBj b21tYW5kIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0dmFsICAgU0hFTExfSU5W QUxJRF9QQVJBTUVURVIgICAgIEFuIGFyZ3VtZW50IHBhc3NlZCB0bw0KPiA+IHRoZSBzaGVsbCBj b21tYW5kIGlzIGludmFsaWQuDQo+ID4gKyAgQHJldHZhbCAgIE90aGVycyAgICAgICAgICAgICAg ICAgICAgICBBIGRpZmZlcmVudCBlcnJvciBvY2N1cnJlZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ ICtTSEVMTF9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1NoZWxsQ29tbWFuZFJ1blZhclBvbGlj eSAoDQo+ID4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gKyAgSU4g RUZJX1NZU1RFTV9UQUJMRSAgKlN5c3RlbVRhYmxlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAg RUZJX1NUQVRVUyAgICBTdGF0dXM7DQo+ID4gKyAgU0hFTExfU1RBVFVTICBTaGVsbFN0YXR1czsN Cj4gPiArICBCT09MRUFOICAgICAgIFBvbGljeUNoZWNrOw0KPiA+ICsgIEJPT0xFQU4gICAgICAg U3RhdHNEdW1wOw0KPiA+ICsgIEJPT0xFQU4gICAgICAgVmVyYm9zZUR1bXA7DQo+ID4gKyAgTElT VF9FTlRSWSAgICAqUGFja2FnZTsNCj4gPiArICBDSEFSMTYgICAgICAgICpQcm9ibGVtUGFyYW07 DQo+ID4gKw0KPiA+ICsgIFBhY2thZ2UgICAgID0gTlVMTDsNCj4gPiArICBTaGVsbFN0YXR1cyA9 IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgIFN0YXR1cyAgICAgID0gRUZJX1NVQ0NF U1M7DQo+ID4gKyAgUG9saWN5Q2hlY2sgPSBGQUxTRTsNCj4gPiArICBTdGF0c0R1bXAgICA9IEZB TFNFOw0KPiA+ICsgIFZlcmJvc2VEdW1wID0gRkFMU0U7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9 IFNoZWxsSW5pdGlhbGl6ZSAoKTsNCj4gPiArICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0K PiA+ICsNCj4gPiArICBTdGF0dXMgPSBTaGVsbENvbW1hbmRMaW5lUGFyc2UgKFBhcmFtTGlzdCwg JlBhY2thZ2UsICZQcm9ibGVtUGFyYW0sDQo+ID4gVFJVRSk7DQo+ID4gKyAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+ICsgICAgaWYgKChTdGF0dXMgPT0gRUZJX1ZPTFVNRV9DT1JSVVBU RUQpICYmIChQcm9ibGVtUGFyYW0gIT0gTlVMTCkpDQo+ID4gew0KPiA+ICsgICAgICBTaGVsbFBy aW50SGlpRXggKC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1BST0JMRU0pLA0K PiA+IG1WYXJQb2xpY3lTaGVsbENvbW1hbmRIaWlIYW5kbGUsIFZBUl9QT0xJQ1lfQ09NTUFORF9O QU1FLA0KPiA+IFByb2JsZW1QYXJhbSk7DQo+ID4gKyAgICAgIEZyZWVQb29sIChQcm9ibGVtUGFy YW0pOw0KPiA+ICsgICAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0K PiA+ICsgICAgICBnb3RvIERvbmU7DQo+ID4gKyAgICB9IGVsc2Ugew0KPiA+ICsgICAgICBBU1NF UlQgKEZBTFNFKTsNCj4gPiArICAgIH0NCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAgaWYgKFNo ZWxsQ29tbWFuZExpbmVHZXRDb3VudCAoUGFja2FnZSkgPiAxKSB7DQo+ID4gKyAgICAgIFNoZWxs UHJpbnRIaWlFeCAoLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4NCj4gPiAoU1RSX0dFTl9UT09f TUFOWSksIG1WYXJQb2xpY3lTaGVsbENvbW1hbmRIaWlIYW5kbGUsDQo+ID4gVkFSX1BPTElDWV9D T01NQU5EX05BTUUpOw0KPiA+ICsgICAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFS QU1FVEVSOw0KPiA+ICsgICAgICBnb3RvIERvbmU7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsg ICAgUG9saWN5Q2hlY2sgPSBTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwNCj4gPiBW QVJfUE9MSUNZX0ZMQUdfUE9MSUNZX1NUUik7DQo+ID4gKyAgICBTdGF0c0R1bXAgICA9IFNoZWxs Q29tbWFuZExpbmVHZXRGbGFnIChQYWNrYWdlLA0KPiA+IFZBUl9QT0xJQ1lfRkxBR19TVEFUU19T VFIpOw0KPiA+ICsgICAgVmVyYm9zZUR1bXAgPSBTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFj a2FnZSwNCj4gPiBWQVJfUE9MSUNZX0ZMQUdfVkVSQk9TRV9TVFIpOw0KPiA+ICsNCj4gPiArICAg IFN0YXR1cyA9IER1bXBWYXJzIChWZXJib3NlRHVtcCwgU3RhdHNEdW1wLCBQb2xpY3lDaGVjayk7 DQo+ID4gKyAgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+ICsgIH0NCj4gPiArDQo+ ID4gK0RvbmU6DQo+ID4gKyAgaWYgKFBhY2thZ2UgIT0gTlVMTCkgew0KPiA+ICsgICAgU2hlbGxD b21tYW5kTGluZUZyZWVWYXJMaXN0IChQYWNrYWdlKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsg IHJldHVybiBTaGVsbFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVGhp cyBpcyB0aGUgc2hlbGwgY29tbWFuZCBoYW5kbGVyIGZ1bmN0aW9uIHBvaW50ZXIgY2FsbGJhY2sg dHlwZS4NCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBjb21tYW5kIHdo ZW4gaXQgaXMgaW52b2tlZCBpbiB0aGUgc2hlbGwuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0g VGhpcyAgICAgICAgICAgICAgICAgICBUaGUgaW5zdGFuY2Ugb2YgdGhlDQo+ID4gKw0KPiA+IEVG SV9TSEVMTF9EWU5BTUlDX0NPTU1BTkRfUFJPVE9DT0wuDQo+ID4gKyAgQHBhcmFtW2luXSBTeXN0 ZW1UYWJsZSAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBzeXN0ZW0gdGFibGUuDQo+ID4g KyAgQHBhcmFtW2luXSBTaGVsbFBhcmFtZXRlcnMgICAgICAgIFRoZSBwYXJhbWV0ZXJzIGFzc29j aWF0ZWQgd2l0aA0KPiA+IHRoZSBjb21tYW5kLg0KPiA+ICsgIEBwYXJhbVtpbl0gU2hlbGwgICAg ICAgICAgICAgICAgICBUaGUgaW5zdGFuY2Ugb2YgdGhlIHNoZWxsIHByb3RvY29sDQo+ID4gdXNl ZCBpbg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29udGV4 dCBvZiBwcm9jZXNzaW5nIHRoaXMNCj4gPiBjb21tYW5kLg0KPiA+ICsNCj4gPiArICBAcmV0dXJu IEVGSV9TVUNDRVNTICAgICAgICAgICAgICAgdGhlIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bA0K PiA+ICsgIEByZXR1cm4gb3RoZXIgICAgICAgICAgICAgICAgICAgICB0aGUgb3BlcmF0aW9uIGZh aWxlZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtTSEVMTF9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ ID4gK1ZhclBvbGljeUNvbW1hbmRIYW5kbGVyICgNCj4gPiArICBJTiBFRklfU0hFTExfRFlOQU1J Q19DT01NQU5EX1BST1RPQ09MICAqVGhpcywNCj4gPiArICBJTiBFRklfU1lTVEVNX1RBQkxFICAg ICAgICAgICAgICAgICAgICAqU3lzdGVtVGFibGUsDQo+ID4gKyAgSU4gRUZJX1NIRUxMX1BBUkFN RVRFUlNfUFJPVE9DT0wgICAgICAgKlNoZWxsUGFyYW1ldGVycywNCj4gPiArICBJTiBFRklfU0hF TExfUFJPVE9DT0wgICAgICAgICAgICAgICAgICAqU2hlbGwNCj4gPiArICApDQo+ID4gK3sNCj4g PiArICBnRWZpU2hlbGxQYXJhbWV0ZXJzUHJvdG9jb2wgPSBTaGVsbFBhcmFtZXRlcnM7DQo+ID4g KyAgZ0VmaVNoZWxsUHJvdG9jb2wgICAgICAgICAgID0gU2hlbGw7DQo+ID4gKw0KPiA+ICsgIHJl dHVybiBTaGVsbENvbW1hbmRSdW5WYXJQb2xpY3kgKGdJbWFnZUhhbmRsZSwgU3lzdGVtVGFibGUp Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGlzIGlzIHRoZSBjb21tYW5kIGhl bHAgaGFuZGxlciBmdW5jdGlvbiBwb2ludGVyIGNhbGxiYWNrIHR5cGUuICBUaGlzDQo+ID4gKyAg ZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGRpc3BsYXlpbmcgaGVscCBpbmZvcm1hdGlvbiBm b3IgdGhlDQo+IGFzc29jaWF0ZWQNCj4gPiArICBjb21tYW5kLg0KPiA+ICsNCj4gPiArICBAcGFy YW1baW5dIFRoaXMgICAgICAgICAgICAgICAgICAgVGhlIGluc3RhbmNlIG9mIHRoZQ0KPiA+ICsN Cj4gPiBFRklfU0hFTExfRFlOQU1JQ19DT01NQU5EX1BST1RPQ09MLg0KPiA+ICsgIEBwYXJhbVtp bl0gTGFuZ3VhZ2UgICAgICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgbGFuZ3VhZ2UNCj4g PiBzdHJpbmcgdG8gdXNlLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuIHN0cmluZyAgICAgICAgICAg ICAgICAgICAgUG9vbCBhbGxvY2F0ZWQgaGVscCBzdHJpbmcsIG11c3QgYmUNCj4gPiBmcmVlZA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSBjYWxsZXIuDQo+ID4g Kw0KPiA+ICsqKi8NCj4gPiArU1RBVElDDQo+ID4gK0NIQVIxNiAqDQo+ID4gK0VGSUFQSQ0KPiA+ ICtWYXJQb2xpY3lDb21tYW5kR2V0SGVscCAoDQo+ID4gKyAgSU4gRUZJX1NIRUxMX0RZTkFNSUNf Q09NTUFORF9QUk9UT0NPTCAgKlRoaXMsDQo+ID4gKyAgSU4gQ09OU1QgQ0hBUjggICAgICAgICAg ICAgICAgICAgICAgICAgKkxhbmd1YWdlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJu IEhpaUdldFN0cmluZyAoDQo+ID4gKyAgICAgICAgICAgbVZhclBvbGljeVNoZWxsQ29tbWFuZEhp aUhhbmRsZSwNCj4gPiArICAgICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9HRVRfSEVMUF9WQVJf UE9MSUNZKSwNCj4gPiArICAgICAgICAgICBMYW5ndWFnZQ0KPiA+ICsgICAgICAgICAgICk7DQo+ ID4gK30NCj4gPiArDQo+ID4gK1NUQVRJQyBFRklfU0hFTExfRFlOQU1JQ19DT01NQU5EX1BST1RP Q09MDQo+ID4gbVZhclBvbGljeUR5bmFtaWNDb21tYW5kID0gew0KPiA+ICsgIFZBUl9QT0xJQ1lf Q09NTUFORF9OQU1FLA0KPiA+ICsgIFZhclBvbGljeUNvbW1hbmRIYW5kbGVyLA0KPiA+ICsgIFZh clBvbGljeUNvbW1hbmRHZXRIZWxwDQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBS ZXRyaWV2ZSBISUkgcGFja2FnZSBsaXN0IGZyb20gSW1hZ2VIYW5kbGUgYW5kIHB1Ymxpc2ggdG8g SElJIGRhdGFiYXNlLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIEltYWdlSGFuZGxlICAgIFRo ZSBpbWFnZSBoYW5kbGUgb2YgdGhlIHByb2Nlc3MuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gSElJ IGhhbmRsZS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtTVEFUSUMNCj4gPiArRUZJX0hJSV9IQU5E TEUNCj4gPiArSW5pdGlhbGl6ZUhpaVBhY2thZ2UgKA0KPiA+ICsgIElOICBFRklfSEFORExFICBJ bWFnZUhhbmRsZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAg ICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIEVGSV9ISUlfUEFDS0FHRV9MSVNUX0hFQURFUiAgKlBh Y2thZ2VMaXN0Ow0KPiA+ICsgIEVGSV9ISUlfSEFORExFICAgICAgICAgICAgICAgSGlpSGFuZGxl Ow0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFJldHJpZXZlIEhJSSBwYWNrYWdlIGxpc3Qg ZnJvbSBJbWFnZUhhbmRsZQ0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5PcGVuUHJv dG9jb2wgKA0KPiA+ICsgICAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPiArICAgICAg ICAgICAgICAgICAgJmdFZmlIaWlQYWNrYWdlTGlzdFByb3RvY29sR3VpZCwNCj4gPiArICAgICAg ICAgICAgICAgICAgKFZPSUQgKiopJlBhY2thZ2VMaXN0LA0KPiA+ICsgICAgICAgICAgICAgICAg ICBJbWFnZUhhbmRsZSwNCj4gPiArICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPiArICAgICAg ICAgICAgICAgICAgRUZJX09QRU5fUFJPVE9DT0xfR0VUX1BST1RPQ09MDQo+ID4gKyAgICAgICAg ICAgICAgICAgICk7DQo+ID4gKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiArICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gTlVMTDsNCj4gPiArICB9 DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gUHVibGlzaCBISUkgcGFja2FnZSBsaXN0IHRv IEhJSSBEYXRhYmFzZS4NCj4gPiArICAvLw0KPiA+ICsgIFN0YXR1cyA9IGdIaWlEYXRhYmFzZS0+ TmV3UGFja2FnZUxpc3QgKA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBnSGlpRGF0 YWJhc2UsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VMaXN0LA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAmSGlpSGFuZGxlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICk7 DQo+ID4gKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiArICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gTlVMTDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ ICsgIHJldHVybiBIaWlIYW5kbGU7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEVu dHJ5IHBvaW50IG9mIHRoZSBVRUZJIHZhcmlhYmxlIHBvbGljeSBkeW5hbWljIHNoZWxsIGNvbW1h bmQuDQo+ID4gKw0KPiA+ICsgIFByb2R1Y2UgdGhlIER5bmFtaWMgQ29tbWFuZCBQcm90b2NvbCB0 byBoYW5kbGUgdGhlICJ2YXJwb2xpY3kiDQo+ID4gY29tbWFuZC4NCj4gPiArDQo+ID4gKyAgQHBh cmFtW2luXSBJbWFnZUhhbmRsZSAgICAgICAgVGhlIGltYWdlIGhhbmRsZSBvZiB0aGUgcHJvY2Vz cy4NCj4gPiArICBAcGFyYW1baW5dIFN5c3RlbVRhYmxlICAgICAgICBUaGUgRUZJIFN5c3RlbSBU YWJsZSBwb2ludGVyLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICBUaGUgInZhcnBvbGljeSIgY29tbWFuZCBleGVjdXRlZA0KPiA+IHN1Y2Nlc3NmdWxseS4NCj4g PiArICBAcmV0dmFsIEVGSV9BQk9SVEVEICAgICAgICAgICBISUkgcGFja2FnZSBmYWlsZWQgdG8g aW5pdGlhbGl6ZS4NCj4gPiArICBAcmV0dmFsIG90aGVycyAgICAgICAgICAgICAgICBPdGhlciBl cnJvcnMgd2hlbiBleGVjdXRpbmcNCj4gPiAidmFycG9saWN5IiBjb21tYW5kLg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1ZhcmlhYmxlUG9saWN5 RHluYW1pY0NvbW1hbmRFbnRyeVBvaW50ICgNCj4gPiArICBJTiBFRklfSEFORExFICAgICAgICBJ bWFnZUhhbmRsZSwNCj4gPiArICBJTiBFRklfU1lTVEVNX1RBQkxFICAqU3lzdGVtVGFibGUNCj4g PiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICBTdGF0dXM7DQo+ID4gKw0KPiA+ICsg IG1WYXJQb2xpY3lTaGVsbENvbW1hbmRIaWlIYW5kbGUgPSBJbml0aWFsaXplSGlpUGFja2FnZSAo SW1hZ2VIYW5kbGUpOw0KPiA+ICsgIGlmIChtVmFyUG9saWN5U2hlbGxDb21tYW5kSGlpSGFuZGxl ID09IE5VTEwpIHsNCj4gPiArICAgIHJldHVybiBFRklfQUJPUlRFRDsNCj4gPiArICB9DQo+ID4g Kw0KPiA+ICsgIFN0YXR1cyA9IGdCUy0+SW5zdGFsbFByb3RvY29sSW50ZXJmYWNlICgNCj4gPiAr ICAgICAgICAgICAgICAgICAgJkltYWdlSGFuZGxlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAm Z0VmaVNoZWxsRHluYW1pY0NvbW1hbmRQcm90b2NvbEd1aWQsDQo+ID4gKyAgICAgICAgICAgICAg ICAgIEVGSV9OQVRJVkVfSU5URVJGQUNFLA0KPiA+ICsgICAgICAgICAgICAgICAgICAmbVZhclBv bGljeUR5bmFtaWNDb21tYW5kDQo+ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgQVNT RVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4g PiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVW5sb2FkIHRoZSBkeW5hbWljICJ2YXJwb2xp Y3kiIFVFRkkgU2hlbGwgY29tbWFuZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBJbWFnZUhh bmRsZSAgICAgICAgVGhlIGltYWdlIGhhbmRsZSBvZiB0aGUgcHJvY2Vzcy4NCj4gPiArDQo+ID4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIGltYWdlIGlzIHVubG9hZGVkLg0K PiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgICAgIEZhaWxlZCB0byB1bmxvYWQgdGhl IGltYWdlLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ ID4gK1ZhcmlhYmxlUG9saWN5RHluYW1pY0NvbW1hbmRVbmxvYWQgKA0KPiA+ICsgIElOIEVGSV9I QU5ETEUgIEltYWdlSGFuZGxlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAg U3RhdHVzOw0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBnQlMtPlVuaW5zdGFsbFByb3RvY29sSW50 ZXJmYWNlICgNCj4gPiArICAgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICZnRWZpU2hlbGxEeW5hbWljQ29tbWFuZFByb3RvY29sR3VpZCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgJm1WYXJQb2xpY3lEeW5hbWljQ29tbWFuZA0KPiA+ICsgICAgICAg ICAgICAgICAgICApOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAg IHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBIaWlSZW1vdmVQYWNrYWdl cyAobVZhclBvbGljeVNoZWxsQ29tbWFuZEhpaUhhbmRsZSk7DQo+ID4gKw0KPiA+ICsgIHJldHVy biBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQNCj4gPg0KPiBhL1NoZWxsUGtn L0R5bmFtaWNDb21tYW5kL1ZhcmlhYmxlUG9saWN5RHluYW1pY0NvbW1hbmQvVmFyaWFibGVQb2xp DQo+ID4gY3lEeW5hbWljQ29tbWFuZC5oDQo+ID4NCj4gYi9TaGVsbFBrZy9EeW5hbWljQ29tbWFu ZC9WYXJpYWJsZVBvbGljeUR5bmFtaWNDb21tYW5kL1ZhcmlhYmxlUG9saQ0KPiA+IGN5RHluYW1p Y0NvbW1hbmQuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAw MDAwLi43Y2U1YmVjYTM4OWENCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+ID4NCj4gYi9T aGVsbFBrZy9EeW5hbWljQ29tbWFuZC9WYXJpYWJsZVBvbGljeUR5bmFtaWNDb21tYW5kL1Zhcmlh YmxlUG9saQ0KPiA+IGN5RHluYW1pY0NvbW1hbmQuaA0KPiA+IEBAIC0wLDAgKzEsOTQgQEANCj4g PiArLyoqIEBmaWxlDQo+ID4gKyAgSW50ZXJuYWwgaGVhZGVyIGZpbGUgZm9yIHRoZSBtb2R1bGUu DQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KPiA+ ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0K PiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgVkFSX1BPTElDWV9EWU5BTUlDX1NIRUxMX0NP TU1BTkRfSF8NCj4gPiArI2RlZmluZSBWQVJfUE9MSUNZX0RZTkFNSUNfU0hFTExfQ09NTUFORF9I Xw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPFVlZmkuaD4NCj4gPiArDQo+ID4gKyNkZWZpbmUgVkFS X1BPTElDWV9DT01NQU5EX05BTUUgIEwidmFycG9saWN5Ig0KPiA+ICsNCj4gPiArdHlwZWRlZiBl bnVtIHsNCj4gPiArICBWYXJpYWJsZVZlbmRvckNhcHN1bGUsDQo+ID4gKyAgVmFyaWFibGVWZW5k b3JDYXBzdWxlUmVwb3J0LA0KPiA+ICsgIFZhcmlhYmxlVmVuZG9yR2xvYmFsLA0KPiA+ICsgIFZh cmlhYmxlVmVuZG9yTW9yQ29udHJvbCwNCj4gPiArICBWYXJpYWJsZVZlbmRvckd1aWRNYXgNCj4g PiArfSBWQVJfUE9MSUNZX0NNRF9WRU5ET1JfR1VJRF9UWVBFOw0KPiA+ICsNCj4gPiArdHlwZWRl ZiBzdHJ1Y3Qgew0KPiA+ICsgIFZBUl9QT0xJQ1lfQ01EX1ZFTkRPUl9HVUlEX1RZUEUgICAgVmVu ZG9yR3VpZFR5cGU7DQo+ID4gKyAgRUZJX0dVSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAq VmVuZG9yR3VpZDsNCj4gPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpE ZXNjcmlwdGlvbjsNCj4gPiArfSBWQVJfUE9MSUNZX0NNRF9WQVJfTkFNRVNQQUNFOw0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgTG9nIGEgZm9ybWF0dGVkIGNvbnNvbGUgbWVzc2FnZS4NCj4gPiAr DQo+ID4gKyAgVGhpcyBpcyBub3Qgc3BlY2lmaWMgdG8gdGhpcyBzaGVsbCBjb21tYW5kIGJ1dCBz Y29wZWQgc28gdG8gcHJldmVudA0KPiBnbG9iYWwNCj4gPiArICBuYW1lIGNvbmZsaWN0cy4NCj4g PiArDQo+ID4gKyAgVGhlIGhleCBkdW1wIGlzIHNwbGl0IGludG8gbGluZXMgb2YgMTYgZHVtcGVk IGJ5dGVzLg0KPiA+ICsNCj4gPiArICBUaGUgZnVsbCBoZXggZHVtcCBpcyBicmFja2V0ZWQsIGFu ZCBpdHMgYnl0ZSBhc2NpaSBjaGFyIGFsc28gcHJpbnQuDQo+ID4gKyAgSWYgdGhlIGJ5dGUgdmFs dWUgaXMgbm90IGFuIGFzY2lpIGNvZGUsIGl0IHdpbGwgcHJpbnQgYXMgJy4nDQo+ID4gKw0KPiA+ ICsgIEBwYXJhbVtpbl0gT2Zmc2V0ICAgICAgICAgICAgT2Zmc2V0IHRvIGJlIGRpc3BsYXkgYWZ0 ZXIgUHJlZml4Rm9ybWF0Lg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2Zm c2V0IHdpbGwgYmUgaW5jcmVhc2VkIGZvciBlYWNoIHByaW50DQo+ID4gbGluZS4NCj4gPiArICBA cGFyYW1baW5dIERhdGEgICAgICAgICAgICAgIFRoZSBkYXRhIHRvIGR1bXAuDQo+ID4gKyAgQHBh cmFtW2luXSBEYXRhU2l6ZSAgICAgICAgICBOdW1iZXIgb2YgYnl0ZXMgaW4gRGF0YS4NCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICsjZGVmaW5lIFZBUl9QT0xJQ1lfQ01EX1NIRUxMX0RVTVBfSEVYKE9m ZnNldCwNCj4gPiBcDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RGF0YSwNCj4gPiBcDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RGF0YVNpemUNCj4gPiBcDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKQ0KPiA+IFwNCj4gPiArDQo+ID4gew0KPiA+ICAgICAgICAgICAgICAgICBcDQo+ID4gKyAg ICAgICAgICBVSU5UOCAqX0RhdGFUb0R1bXA7DQo+ID4gXA0KPiA+ICsgICAgICAgICAgVUlOVDgg X1ZhbFs1MF07DQo+ID4gXA0KPiA+ICsgICAgICAgICAgVUlOVDggX1N0clsyMF07DQo+ID4gXA0K PiA+ICsgICAgICAgICAgVUlOVDggX1RlbXBCeXRlOw0KPiA+IFwNCj4gPiArICAgICAgICAgIFVJ TlROIF9TaXplOw0KPiA+IFwNCj4gPiArICAgICAgICAgIFVJTlROIF9EdW1wSGV4SW5kZXg7DQo+ ID4gXA0KPiA+ICsgICAgICAgICAgVUlOVE4gX0xvY2FsT2Zmc2V0Ow0KPiA+IFwNCj4gPiArICAg ICAgICAgIFVJTlROIF9Mb2NhbERhdGFTaXplOw0KPiA+IFwNCj4gPiArICAgICAgICAgIENPTlNU IENIQVI4ICpfSGV4ID0gIjAxMjM0NTY3ODlBQkNERUYiOw0KPiA+IFwNCj4gPiArICAgICAgICAg IF9Mb2NhbE9mZnNldCA9IChPZmZzZXQpOw0KPiA+IFwNCj4gPiArICAgICAgICAgIF9Mb2NhbERh dGFTaXplID0gKERhdGFTaXplKTsNCj4gPiBcDQo+ID4gKyAgICAgICAgICBfRGF0YVRvRHVtcCA9 IChVSU5UOCAqKShEYXRhKTsNCj4gPiBcDQo+ID4gKw0KPiA+IFwNCj4gPiArICAgICAgICAgIEFT U0VSVCAoX0RhdGFUb0R1bXAgIT0gTlVMTCk7DQo+ID4gXA0KPiA+ICsNCj4gPiBcDQo+ID4gKyAg ICAgICAgICB3aGlsZSAoX0xvY2FsRGF0YVNpemUgIT0gMCkNCj4gPiB7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ID4gKyAgICAgICAgICAgIF9TaXpl ID0gMTY7DQo+ID4gXA0KPiA+ICsgICAgICAgICAgICBpZiAoX1NpemUgPiBfTG9jYWxEYXRhU2l6 ZSkNCj4gPiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K PiA+ICsgICAgICAgICAgICAgIF9TaXplID0gX0xvY2FsRGF0YVNpemU7DQo+ID4gXA0KPiA+ICsg ICAgICAgICAgICB9DQo+ID4gXA0KPiA+ICsNCj4gPiBcDQo+ID4gKyAgICAgICAgICAgIGZvciAo X0R1bXBIZXhJbmRleCA9IDA7IF9EdW1wSGV4SW5kZXggPCBfU2l6ZTsNCj4gPiBfRHVtcEhleElu ZGV4ICs9IDEpIHsgICAgICBcDQo+ID4gKyAgICAgICAgICAgICAgX1RlbXBCeXRlICAgICAgICAg ICAgPSAoVUlOVDgpDQo+ID4gX0RhdGFUb0R1bXBbX0R1bXBIZXhJbmRleF07ICAgICAgICAgICAg ICBcDQo+ID4gKyAgICAgICAgICAgICAgX1ZhbFtfRHVtcEhleEluZGV4ICogMyArIDBdICA9IChV SU5UOCkNCj4gPiBfSGV4W19UZW1wQnl0ZSA+PiA0XTsgICAgICAgICAgICBcDQo+ID4gKyAgICAg ICAgICAgICAgX1ZhbFtfRHVtcEhleEluZGV4ICogMyArIDFdICA9IChVSU5UOCkNCj4gPiBfSGV4 W19UZW1wQnl0ZSAmIDB4Rl07ICAgICAgICAgICBcDQo+ID4gKyAgICAgICAgICAgICAgX1ZhbFtf RHVtcEhleEluZGV4ICogMyArIDJdICA9DQo+ID4gXA0KPiA+ICsgICAgICAgICAgICAgICAgKENI QVI4KSAoKF9EdW1wSGV4SW5kZXggPT0gNykgPyAnLScgOiAnICcpOw0KPiA+IFwNCj4gPiArICAg ICAgICAgICAgICBfU3RyW19EdW1wSGV4SW5kZXhdICAgICAgICAgID0NCj4gPiBcDQo+ID4gKyAg ICAgICAgICAgICAgICAoQ0hBUjgpICgoX1RlbXBCeXRlIDwgJyAnIHx8IF9UZW1wQnl0ZSA+ICd+ JykgPyAnLicgOg0KPiA+IF9UZW1wQnl0ZSk7ICAgICBcDQo+ID4gKyAgICAgICAgICAgIH0NCj4g PiBcDQo+ID4gKw0KPiA+IFwNCj4gPiArICAgICAgICAgICAgX1ZhbFtfRHVtcEhleEluZGV4ICog M10gID0gMDsNCj4gPiBcDQo+ID4gKyAgICAgICAgICAgIF9TdHJbX0R1bXBIZXhJbmRleF0gICAg ICA9IDA7DQo+ID4gXA0KPiA+ICsNCj4gPiBcDQo+ID4gKyAgICAgICAgICAgIFNoZWxsUHJpbnRI aWlFeCAoLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4NCj4gPiAoU1RSX0dFTl9IRVhfRFVNUF9M SU5FKSwgbVZhclBvbGljeVNoZWxsQ29tbWFuZEhpaUhhbmRsZSwNCj4gPiBfTG9jYWxPZmZzZXQs IF9WYWwsIF9TdHIpOyBcDQo+ID4gKyAgICAgICAgICAgIF9EYXRhVG9EdW1wID0gKFVJTlQ4ICop KCgoVUlOVE4pX0RhdGFUb0R1bXApICsgX1NpemUpOw0KPiA+IFwNCj4gPiArICAgICAgICAgICAg X0xvY2FsT2Zmc2V0ICs9IF9TaXplOw0KPiA+IFwNCj4gPiArICAgICAgICAgICAgX0xvY2FsRGF0 YVNpemUgLT0gX1NpemU7DQo+ID4gXA0KPiA+ICsgICAgICAgICAgfQ0KPiA+IFwNCj4gPiArICAg ICAgICAgIFNoZWxsUHJpbnRIaWlFeCAoLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4NCj4gPiAo U1RSX0dFTl9MSU5FX0JSRUFLKSwgbVZhclBvbGljeVNoZWxsQ29tbWFuZEhpaUhhbmRsZSk7IFwN Cj4gPiArICAgICAgICB9DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0DQo+ID4N Cj4gYS9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9WYXJpYWJsZVBvbGljeUR5bmFtaWNDb21tYW5k L1ZhcmlhYmxlUG9saQ0KPiA+IGN5RHluYW1pY0NvbW1hbmQuaW5mDQo+ID4NCj4gYi9TaGVsbFBr Zy9EeW5hbWljQ29tbWFuZC9WYXJpYWJsZVBvbGljeUR5bmFtaWNDb21tYW5kL1ZhcmlhYmxlUG9s aQ0KPiA+IGN5RHluYW1pY0NvbW1hbmQuaW5mDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g PiBpbmRleCAwMDAwMDAwMDAwMDAuLjIyYjRiYWE1ZTZmMg0KPiA+IC0tLSAvZGV2L251bGwNCj4g PiArKysNCj4gPg0KPiBiL1NoZWxsUGtnL0R5bmFtaWNDb21tYW5kL1ZhcmlhYmxlUG9saWN5RHlu YW1pY0NvbW1hbmQvVmFyaWFibGVQb2xpDQo+ID4gY3lEeW5hbWljQ29tbWFuZC5pbmYNCj4gPiBA QCAtMCwwICsxLDU2IEBADQo+ID4gKyMjICBAZmlsZQ0KPiA+ICsjIEEgVUVGSSB2YXJpYWJsZSBw b2xpY3kgZHluYW1pYyBzaGVsbCBjb21tYW5kIHRoYXQgZGlzcGxheXMgaW5mb3JtYXRpb24NCj4g PiArIyBhYm91dCBVRUZJIHZhcmlhYmxlIHBvbGljeSBjb25maWd1cmF0aW9uIG9uIHRoZSBzeXN0 ZW0uDQo+ID4gKyMNCj4gPiArIyBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4N Cj4gPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ ICsjDQo+ID4gKyMjDQo+ID4gKw0KPiA+ICtbRGVmaW5lc10NCj4gPiArICBJTkZfVkVSU0lPTiAg ICAgICAgICAgICAgICAgPSAxLjI3DQo+ID4gKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAg ID0gVmFyaWFibGVQb2xpY3lEeW5hbWljQ29tbWFuZA0KPiA+ICsgIEZJTEVfR1VJRCAgICAgICAg ICAgICAgICAgICA9DQo+ID4gMTdEMEVGMkEtNTkzMy00MDA3LTg5NTAtNTc0OTE2OUQzREM1DQo+ ID4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgID0gRFhFX0RSSVZFUg0KPiA+ICsgIFZF UlNJT05fU1RSSU5HICAgICAgICAgICAgICA9IDEuMA0KPiA+ICsgIEVOVFJZX1BPSU5UICAgICAg ICAgICAgICAgICA9DQo+ID4gVmFyaWFibGVQb2xpY3lEeW5hbWljQ29tbWFuZEVudHJ5UG9pbnQN Cj4gPiArICBVTkxPQURfSU1BR0UgICAgICAgICAgICAgICAgPQ0KPiA+IFZhcmlhYmxlUG9saWN5 RHluYW1pY0NvbW1hbmRVbmxvYWQNCj4gPiArICBVRUZJX0hJSV9SRVNPVVJDRV9TRUNUSU9OICAg PSBUUlVFDQo+ID4gKw0KPiA+ICtbU291cmNlcy5jb21tb25dDQo+ID4gKyAgVmFyaWFibGVQb2xp Y3lEeW5hbWljQ29tbWFuZC5jDQo+ID4gKyAgVmFyaWFibGVQb2xpY3lEeW5hbWljQ29tbWFuZC5o DQo+ID4gKyAgVmFyaWFibGVQb2xpY3lEeW5hbWljQ29tbWFuZC51bmkNCj4gPiArDQo+ID4gK1tQ YWNrYWdlc10NCj4gPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ICsgIE1kZU1vZHVsZVBrZy9N ZGVNb2R1bGVQa2cuZGVjDQo+ID4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4gKw0KPiA+ ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4gKyAgQmFzZUxpYg0KPiA+ICsgIEJhc2VNZW1vcnlMaWIN Cj4gPiArICBEZWJ1Z0xpYg0KPiA+ICsgIEhpaUxpYg0KPiA+ICsgIE1lbW9yeUFsbG9jYXRpb25M aWINCj4gPiArICBQcmludExpYg0KPiA+ICsgIFNoZWxsTGliDQo+ID4gKyAgVWVmaUJvb3RTZXJ2 aWNlc1RhYmxlTGliDQo+ID4gKyAgVWVmaURyaXZlckVudHJ5UG9pbnQNCj4gPiArICBVZWZpSGlp U2VydmljZXNMaWINCj4gPiArICBVZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWINCj4gPiArDQo+ ID4gK1tQcm90b2NvbHNdDQo+ID4gKyAgZ0Vka2lpVmFyaWFibGVQb2xpY3lQcm90b2NvbEd1aWQg ICAgICAgICAgICAjIw0KPiA+IFNPTUVUSU1FU19DT05TVU1FUw0KPiA+ICsgIGdFZmlIaWlQYWNr YWdlTGlzdFByb3RvY29sR3VpZCAgICAgICAgICAgICAgIyMgQ09OU1VNRVMNCj4gPiArICBnRWZp U2hlbGxEeW5hbWljQ29tbWFuZFByb3RvY29sR3VpZCAgICAgICAgICMjIFBST0RVQ0VTDQo+ID4g Kw0KPiA+ICtbR3VpZHNdDQo+ID4gKyAgIyMgU09NRVRJTUVTX0NPTlNVTUVTICMjIFZhcmlhYmxl cyBpbiBWZW5kb3IgTmFtZXNwYWNlDQo+ID4gKyAgZ0VmaUNhcHN1bGVSZXBvcnRHdWlkDQo+ID4g KyAgZ0VmaUNhcHN1bGVWZW5kb3JHdWlkDQo+ID4gKyAgZ0VmaUdsb2JhbFZhcmlhYmxlR3VpZA0K PiA+ICsgIGdFZmlNZW1vcnlPdmVyd3JpdGVSZXF1ZXN0Q29udHJvbExvY2tHdWlkDQo+ID4gKw0K PiA+ICtbREVQRVhdDQo+ID4gKyAgVFJVRQ0KPiA+IGRpZmYgLS1naXQNCj4gPg0KPiBhL1NoZWxs UGtnL0R5bmFtaWNDb21tYW5kL1ZhcmlhYmxlUG9saWN5RHluYW1pY0NvbW1hbmQvVmFyaWFibGVQ b2xpDQo+ID4gY3lEeW5hbWljQ29tbWFuZC51bmkNCj4gPg0KPiBiL1NoZWxsUGtnL0R5bmFtaWND b21tYW5kL1ZhcmlhYmxlUG9saWN5RHluYW1pY0NvbW1hbmQvVmFyaWFibGVQb2xpDQo+ID4gY3lE eW5hbWljQ29tbWFuZC51bmkNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAw MDAwMDAwMDAwMC4uYTY1ZjQ3N2I0MWMzDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKw0KPiA+ DQo+IGIvU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvVmFyaWFibGVQb2xpY3lEeW5hbWljQ29tbWFu ZC9WYXJpYWJsZVBvbGkNCj4gPiBjeUR5bmFtaWNDb21tYW5kLnVuaQ0KPiA+IEBAIC0wLDAgKzEs ODYgQEANCj4gPiArLy8gLyoqDQo+ID4gKy8vIFN0cmluZyBkZWZpbml0aW9ucyBmb3IgdGhlIFZh cmlhYmxlIFBvbGljeSAoInZhcnBvbGljeSIpIHNoZWxsDQo+IGNvbW1hbmQuDQo+ID4gKy8vDQo+ ID4gKy8vIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KPiA+ICsvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsvLw0KPiA+ICsv LyAqKi8NCj4gPiArDQo+ID4gKy89Iw0KPiA+ICsNCj4gPiArI2xhbmdkZWYgICBlbi1VUyAiZW5n bGlzaCINCj4gPiArDQo+ID4gKy8vIEdlbmVyYWwgU3RyaW5ncw0KPiA+ICsjc3RyaW5nIFNUUl9H RU5fUFJPQkxFTSAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOg0KPiA+IFVu a25vd24gZmxhZyAtICclSCVzJU4nXHJcbiINCj4gPiArI3N0cmluZyBTVFJfR0VOX1RPT19NQU5Z ICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIiVIJXMlTjoNCj4gPiBUb28gbWFueSBhcmd1 bWVudHMuXHJcbiINCj4gPiArI3N0cmluZyBTVFJfR0VOX05PX1ZBUlMgICAgICAgICAgICAgICAj bGFuZ3VhZ2UgZW4tVVMgIk5vIFVFRkkNCj4gPiB2YXJpYWJsZXMgZm91bmQhXHJcbiINCj4gPiAr I3N0cmluZyBTVFJfR0VOX0xJTkVfQlJFQUsgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIlxy XG4iDQo+ID4gKw0KPiA+ICsjc3RyaW5nIFNUUl9HRU5fSEVYX0RVTVBfTElORSAgICAgICAgICNs YW5ndWFnZSBlbi1VUw0KPiA+ICIlQiUwOFglTjogJS00OGEgJVYqJWEqJU5cclxuIg0KPiA+ICsN Cj4gPiArI3N0cmluZyBTVFJfVkFSX1BPTF9QT0xJQ1lfSU5UX0VSUiAgICAgI2xhbmd1YWdlIGVu LVVTICIlRUludGVybmFsDQo+ID4gQXBwbGljYXRpb24gRXJyb3IgR2V0dGluZyBQb2xpY3kgSW5m byElTlxyXG4iDQo+ID4gKyNzdHJpbmcgU1RSX1ZBUl9QT0xfUE9MSUNZX05PX1BST1QgICAgICNs YW5ndWFnZSBlbi1VUw0KPiA+ICIlRVZhcmlhYmxlIFBvbGljeSBQcm90b2NvbCBXYXMgTm90IEZv dW5kISVOXHJcbiINCj4gPiArI3N0cmluZyBTVFJfVkFSX1BPTF9QT0xJQ1lfTk9UX0lOSVQgICAg I2xhbmd1YWdlIGVuLVVTICIlRVVFRkkNCj4gPiBWYXJpYWJsZSBQb2xpY3kgaXMgTm90IEluaXRp YWxpemVkISVOXHJcbiINCj4gPiArI3N0cmluZyBTVFJfVkFSX1BPTF9QT0xJQ1lfTk9UX0ZPVU5E ICAgI2xhbmd1YWdlIGVuLVVTDQo+ID4gIiVFVmFyaWFibGUgUG9saWN5IE5vdCBGb3VuZCBmb3Ig VGhpcyBWYXJpYWJsZSElTlxyXG4iDQo+ID4gKyNzdHJpbmcgU1RSX1ZBUl9QT0xfUE9MSUNZX1VO RVhQX0VSUiAgICNsYW5ndWFnZSBlbi1VUw0KPiA+ICIlRVVuZXhwZWN0ZWQgRXJyb3IgR2V0dGlu ZyBQb2xpY3kgSW5mbyElTiAtICVIJXIlTlxyXG4iDQo+ID4gKyNzdHJpbmcgU1RSX1ZBUl9QT0xf UE9MSUNZX0hFQURFUl8xICAgICNsYW5ndWFnZSBlbi1VUw0KPiA+DQo+ICIrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCj4gLS0tK1xyXG4iDQo+ID4gKyNzdHJpbmcgU1RSX1ZBUl9QT0xfUE9MSUNZX0hFQURF Ul8yICAgICNsYW5ndWFnZSBlbi1VUyAifCBWYXJpYWJsZQ0KPiA+IFBvbGljeSBJbmZvDQo+ID4g fFxyXG4iDQo+ID4gKyNzdHJpbmcgU1RSX1ZBUl9QT0xfUE9MSUNZX1ZFUlNJT04gICAgICNsYW5n dWFnZSBlbi1VUyAifCBWZXJzaW9uOg0KPiA+IDB4JS04eA0KPiA+IHxcclxuIg0KPiA+ICsjc3Ry aW5nIFNUUl9WQVJfUE9MX1BPTElDWV9WQVJJQUJMRSAgICAjbGFuZ3VhZ2UgZW4tVVMgInwgVmFy aWFibGU6ICUNCj4gPiAtNjRzICB8XHJcbiINCj4gPiArI3N0cmluZyBTVFJfVkFSX1BPTF9QT0xJ Q1lfTkFNRVNQQUNFICAgI2xhbmd1YWdlIGVuLVVTICJ8DQo+ID4gTmFtZXNwYWNlOiB7JWd9ICAg ICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4iDQo+ID4gKyNzdHJpbmcgU1RSX1ZBUl9QT0xf UE9MSUNZX01JTl9TSVpFICAgICNsYW5ndWFnZSBlbi1VUyAifCBNaW5pbXVtDQo+ID4gU2l6ZTog MHglLTh4DQo+ID4gfFxyXG4iDQo+ID4gKyNzdHJpbmcgU1RSX1ZBUl9QT0xfUE9MSUNZX01BWF9T SVpFICAgICNsYW5ndWFnZSBlbi1VUyAifA0KPiA+IE1heGltdW0gU2l6ZTogMHglLTh4DQo+ID4g fFxyXG4iDQo+ID4gKyNzdHJpbmcgU1RSX1ZBUl9QT0xfUE9MSUNZX0FUVFJfTVVTVCAgICNsYW5n dWFnZSBlbi1VUyAifA0KPiA+IFJlcXVpcmVkIEF0dHJpYnV0ZXM6DQo+ID4gfFxyXG4iDQo+ID4g KyNzdHJpbmcgU1RSX1ZBUl9QT0xfUE9MSUNZX0FUVFJfTk9UICAgICNsYW5ndWFnZSBlbi1VUyAi fA0KPiA+IERpc2FsbG93ZWQgQXR0cmlidXRlczoNCj4gPiB8XHJcbiINCj4gPiArI3N0cmluZyBT VFJfVkFSX1BPTF9QT0xJQ1lfQVRUUl9HRU4gICAgI2xhbmd1YWdlIGVuLVVTDQo+ID4gInwgICAl NzMtLjczcyB8XHJcbiINCj4gPiArI3N0cmluZyBTVFJfVkFSX1BPTF9QT0xJQ1lfTE9DS19UWVBF ICAgI2xhbmd1YWdlIGVuLVVTICJ8IExvY2sNCj4gPiBUeXBlOiAlIC02NHMgfFxyXG4iDQo+ID4g KyNzdHJpbmcgU1RSX1ZBUl9QT0xfUE9MSUNZX1NUQVRFX05TICAgICNsYW5ndWFnZSBlbi1VUyAi fA0KPiA+IE5hbWVzcGFjZTogeyVnfSAgICAgICAgICAgICAgICAgICAgICAgICB8XHJcbiINCj4g PiArI3N0cmluZyBTVFJfVkFSX1BPTF9QT0xJQ1lfU1RBVEVfVkFMICAgI2xhbmd1YWdlIGVuLVVT ICJ8ICAgVmFsdWU6DQo+ID4gMHglLTh4DQo+ID4gfFxyXG4iDQo+ID4gKyNzdHJpbmcgU1RSX1ZB Ul9QT0xfUE9MSUNZX1NUQVRFX05BTUUgICNsYW5ndWFnZSBlbi1VUyAifA0KPiA+IE5hbWU6ICUg LTY0cyAgICB8XHJcbiINCj4gPiArI3N0cmluZyBTVFJfVkFSX1BPTF9QT0xJQ1lfU1RBVFNfUEFT UyAgI2xhbmd1YWdlIGVuLVVTDQo+ID4gIiAgJVYlZC8lZCBVRUZJIHZhcmlhYmxlcyBoYXZlIHBv bGljeSVOXHJcbiINCj4gPiArI3N0cmluZyBTVFJfVkFSX1BPTF9QT0xJQ1lfU1RBVFNfRkFJTCAg I2xhbmd1YWdlIGVuLVVTICIgICVFJWQvJWQNCj4gPiBVRUZJIHZhcmlhYmxlcyBoYXZlIHBvbGlj eSVOXHJcbiINCj4gPiArDQo+ID4gKyNzdHJpbmcgU1RSX1ZBUl9QT0xfVkFSX1RZUEUgICAgICAg ICAjbGFuZ3VhZ2UgZW4tVVMgIiVIJQ0KPiA+IC03MHMlTlxyXG4iDQo+ID4gKyNzdHJpbmcgU1RS X1ZBUl9QT0xfVkFSX05BTUUgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIk5hbWU6ICUNCj4gPiAt NzBzXHJcbiINCj4gPiArI3N0cmluZyBTVFJfVkFSX1BPTF9WQVJfU0laRSAgICAgICAgICNsYW5n dWFnZSBlbi1VUyAiU2l6ZTogMHglLTE2eA0KPiA+ICglLSxkKSBieXRlc1xyXG4iDQo+ID4gKyNz dHJpbmcgU1RSX1ZBUl9QT0xfVkFSX0FUVFIgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIkF0dHJp YnV0ZXM6ICUNCj4gPiAtNjBzXHJcbiINCj4gPiArDQo+ID4gKyNzdHJpbmcgU1RSX1ZBUl9QT0xf U1RBVFNfSEVBREVSXzEgICAjbGFuZ3VhZ2UgZW4tVVMNCj4gPiAiKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXHJcbiINCj4g PiArI3N0cmluZyBTVFJfVkFSX1BPTF9TVEFUU19IRUFERVJfMiAgICNsYW5ndWFnZSBlbi1VUyAi fCBVRUZJDQo+ID4gVmFyaWFibGUgU3RhdGlzdGljcyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHxcclxuIg0KPiA+ICsjc3RyaW5nIFNUUl9WQVJfUE9MX1NUQVRTX1RPVEFM X1ZBUlMgI2xhbmd1YWdlIGVuLVVTICIgIFRvdGFsIFVFRkkNCj4gPiBWYXJpYWJsZXM6ICUsZFxy XG4iDQo+ID4gKyNzdHJpbmcgU1RSX1ZBUl9QT0xfU1RBVFNfVE9UQUxfU0laRSAjbGFuZ3VhZ2Ug ZW4tVVMgIiAgVG90YWwgVUVGSQ0KPiA+IFZhcmlhYmxlIFNpemU6IDB4JXggKCUsZCkgYnl0ZXNc clxuIg0KPiA+ICsNCj4gPiArI3N0cmluZyBTVFJfR0VUX0hFTFBfVkFSX1BPTElDWSAgICAgICNs YW5ndWFnZSBlbi1VUyAiIg0KPiA+ICsiLlRIIHZhcnBvbGljeSAwICJMaXN0cyBVRUZJIHZhcmlh YmxlIHBvbGljeSBpbmZvcm1hdGlvbi4iXHJcbiINCj4gPiArIi5TSCBOQU1FXHJcbiINCj4gPiAr Ikxpc3RzIFVFRkkgdmFyaWFibGUgcG9saWN5IGluZm9ybWF0aW9uLlxyXG4iDQo+ID4gKyIuU0gg U1lOT1BTSVNcclxuIg0KPiA+ICsiIFxyXG4iDQo+ID4gKyJWQVJQT0xJQ1kgWy1wXSBbLXNdIFst dl1cclxuIg0KPiA+ICsiLlNIIE9QVElPTlNcclxuIg0KPiA+ICsiIFxyXG4iDQo+ID4gKyIgIC1w IC0gVGhlIHBvbGljeSBmbGFnIHdpbGwgcHJpbnQgdmFyaWFibGUgcG9saWN5IGluZm8gZm9yIGVh Y2gNCj4gdmFyaWFibGUuXHJcbiINCj4gPiArIiBcclxuIg0KPiA+ICsiICAtcyAtIFRoZSBzdGF0 cyBmbGFnIHdpbGwgcHJpbnQgb3ZlcmFsbCBVRUZJIHZhcmlhYmxlIHBvbGljeQ0KPiBzdGF0aXN0 aWNzLlxyXG4iDQo+ID4gKyIgXHJcbiINCj4gPiArIiAgLXYgLSBUaGUgdmVyYm9zZSBmbGFnIGlu ZGljYXRlcyBhbGwga25vd24gaW5mb3JtYXRpb24gc2hvdWxkIGJlDQo+ID4gcHJpbnRlZC5cclxu Ig0KPiA+ICsiIFxyXG4iDQo+ID4gKyIgICAgICAgVGhpcyBpbmNsdWRlcyBhIGR1bXAgb2YgdGhl IGNvcnJlc3BvbmRpbmcgVUVGSSB2YXJpYWJsZSBkYXRhDQo+ID4gaW5cclxuIg0KPiA+ICsiICAg ICAgIGFkZGl0aW9uIHRvIGFsbCBvdGhlciBVRUZJIHZhcmlhYmxlIHBvbGljeSBpbmZvcm1hdGlv bi5cclxuIg0KPiA+ICsiLlNIIERFU0NSSVBUSU9OXHJcbiINCj4gPiArIiBcclxuIg0KPiA+ICsi LlNIIEVYQU1QTEVTXHJcbiINCj4gPiArIiBcclxuIg0KPiA+ICsiRVhBTVBMRVM6XHJcbiINCj4g PiArIiAgKiBUbyBkdW1wIGFsbCBhY3RpdmUgVUVGSSB2YXJpYWJsZXM6XHJcbiINCj4gPiArIiAg ICBmczA6XD4gdmFycG9saWN5XHJcbiINCj4gPiArIlxyXG4iDQo+ID4gKyIgICogVG8gaW5jbHVk ZSBVRUZJIHZhcmlhYmxlIHBvbGljeSBpbmZvcm1hdGlvbjpcclxuIg0KPiA+ICsiICAgIGZzMDpc PiB2YXJwb2xpY3kgLXBcclxuIg0KPiA+ICsiXHJcbiINCj4gPiArIiAgKiBUbyBpbmNsdWRlIFVF RkkgdmFyaWFibGUgc3RhdGlzdGljczpcclxuIg0KPiA+ICsiICAgIGZzMDpcPiB2YXJwb2xpY3kg LXNcclxuIg0KPiA+ICsiXHJcbiINCj4gPiArIiAgKiBUbyBpbmNsdWRlIGEgaGV4YWRlY2ltYWwg ZHVtcCBvZiBkYXRhIGZvciBlYWNoIHZhcmlhYmxlXHJcbiINCj4gPiArIiAgICBhbmQgYWxsIG90 aGVyIHZhcmlhYmxlIGluZm9ybWF0aW9uOlxyXG4iDQo+ID4gKyIgICAgZnMwOlw+IHZhcnBvbGlj eSAtdlxyXG4iDQo+ID4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL1NoZWxsUGtnLmRzYyBiL1NoZWxs UGtnL1NoZWxsUGtnLmRzYw0KPiA+IGluZGV4IGRkMGQ4ODYwM2YxMS4uYzBhOGE4ZjEyYmQ1IDEw MDY0NA0KPiA+IC0tLSBhL1NoZWxsUGtnL1NoZWxsUGtnLmRzYw0KPiA+ICsrKyBiL1NoZWxsUGtn L1NoZWxsUGtnLmRzYw0KPiA+IEBAIC0xNTQsNiArMTU0LDcgQEAgW0NvbXBvbmVudHNdDQo+ID4g ICAgICAgIGdFZmlTaGVsbFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNoZWxsTGliQXV0b0luaXRpYWxp emV8RkFMU0UNCj4gPiAgICB9DQo+ID4gICAgU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvRHBEeW5h bWljQ29tbWFuZC9EcEFwcC5pbmYNCj4gPiArDQo+ID4NCj4gU2hlbGxQa2cvRHluYW1pY0NvbW1h bmQvVmFyaWFibGVQb2xpY3lEeW5hbWljQ29tbWFuZC9WYXJpYWJsZVBvbGljeQ0KPiA+IER5bmFt aWNDb21tYW5kLmluZg0KPiA+ICAgIFNoZWxsUGtnL0FwcGxpY2F0aW9uL0FjcGlWaWV3QXBwL0Fj cGlWaWV3QXBwLmluZg0KPiA+DQo+ID4gIFtCdWlsZE9wdGlvbnNdDQo+ID4gLS0NCj4gPiAyLjQy LjAud2luZG93cy4yDQo+ID4NCj4gPg0KPiA+DQo+ID4gLT0tPS09LT0tPS09DQo+ID4gR3JvdXBz LmlvIExpbmtzOiBZb3UgcmVjZWl2ZSBhbGwgbWVzc2FnZXMgc2VudCB0byB0aGlzIGdyb3VwLg0K PiA+IFZpZXcvUmVwbHkgT25saW5lICgjMTA4ODQyKToNCj4gPiBodHRwczovL2VkazIuZ3JvdXBz LmlvL2cvZGV2ZWwvbWVzc2FnZS8xMDg4NDINCj4gPiBNdXRlIFRoaXMgVG9waWM6IGh0dHBzOi8v Z3JvdXBzLmlvL210LzEwMTQ1NzQxNC80OTA1OTUzDQo+ID4gR3JvdXAgT3duZXI6IGRldmVsK293 bmVyQGVkazIuZ3JvdXBzLmlvDQo+ID4gVW5zdWJzY3JpYmU6IGh0dHBzOi8vZWRrMi5ncm91cHMu aW8vZy9kZXZlbC91bnN1Yg0KPiA+IFtnYW9saW1pbmdAYnlvc29mdC5jb20uY25dDQo+ID4gLT0t PS09LT0tPS09DQo+ID4NCj4gDQo+IA0KPiANCj4gDQo+IA0KPiANCj4gDQoNCg0KCi09LT0tPS09 LT0tPS09LT0tPS09LT0tCkdyb3Vwcy5pbyBMaW5rczogWW91IHJlY2VpdmUgYWxsIG1lc3NhZ2Vz IHNlbnQgdG8gdGhpcyBncm91cC4KVmlldy9SZXBseSBPbmxpbmUgKCMxMDk5ODcpOiBodHRwczov L2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvbWVzc2FnZS8xMDk5ODcKTXV0ZSBUaGlzIFRvcGljOiBo dHRwczovL2dyb3Vwcy5pby9tdC8xMDIxNTI4ODUvNzY4NjE3NgpHcm91cCBPd25lcjogZGV2ZWwr b3duZXJAZWRrMi5ncm91cHMuaW8KVW5zdWJzY3JpYmU6IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8v Zy9kZXZlbC91bnN1YiBbcmViZWNjYUBvcGVuZncuaW9dCi09LT0tPS09LT0tPS09LT0tPS09LT0t CgoNCg==