From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web10.3135.1650368740694706227 for ; Tue, 19 Apr 2022 04:45:41 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=ZO85sys6; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: min.m.xu@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1650368740; x=1681904740; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=zrUPoWl1hrf3zmaw6B8KWOW6IYaPgtONHdMj49QhINA=; b=ZO85sys61AteBwMnSNDoBhLp31fdPrVCeym2ziQmU6yq5wd/2POKy8fK e6ulxwbAKVgr1htf6USINF0iteVTO7of6h9K5FTXpsYdHl6D3XRGi8JFz t3GD35W7tNFkj+w/boah1ZR+1AGQ5xqpkjGniKhXELmp+tlXX+vapxhKs 9kTnhVWa9sB9zF9r/l15aM/sbWePhnOrtbr+hWl6NVdNleBgJ7iKObSLz GBVbqJZU7tKncKz9dzwo0peeYbJagz/uvYsd8mqjz3rwQtRKoxz7Ccaux /4vgrCtqtzb7XY/liTH5Vd/uVa5Oeq54y3bwa84b5IG0U+FnOAlKAi+i/ Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10321"; a="350193761" X-IronPort-AV: E=Sophos;i="5.90,272,1643702400"; d="scan'208";a="350193761" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Apr 2022 04:45:39 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,272,1643702400"; d="scan'208";a="860997764" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by fmsmga005.fm.intel.com with ESMTP; 19 Apr 2022 04:45:39 -0700 Received: from orsmsx603.amr.corp.intel.com (10.22.229.16) by ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Tue, 19 Apr 2022 04:45:39 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Tue, 19 Apr 2022 04:45:38 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.170) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Tue, 19 Apr 2022 04:45:38 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kZmvB4EWC3fbB9bLPJLg+nh1CBSSk8ys433t1P45SBEFjgPaJtZaoBWQ75vZqCRF4cRD2u5AwyT1+M3QaSLDZQW6N2j8VijN+ZSkAx4R5uDKdOvKaUGbMciunV+tTTx/vLlecGEehoHxDg++6Lyv5qe2B1GAMlmF61jlwv3baRU0DUNRujRrE+SgPTk58W51jTkDuHpbhutmk8JoWMvcAVISEJC7pO99BPWIJYPi3a5eLNLZ4GACoZ8bKzxHx7wOJnz3g2c+2S/UgT0MUL0v0T1MXXyXmFgH7omcDxT5PzhekHH4fHB/RsNB50LwcifIqZlV0eSHD+uPAk/mfJ8DpA== 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=zrUPoWl1hrf3zmaw6B8KWOW6IYaPgtONHdMj49QhINA=; b=BoJMEmMrvs81xaFugq+SU8g8j6nm5QvNjHPsbn05IQSP/PyeZj6o/ADFxi5StxuN3/GmdUIf9ih9LLXFubxH103qc3EEwSPvUjA6f20977eP1WuSoXoXA75ZRqWyG7rqL15IYfJv2Wvj8mxdLDE2eWUoCj+pPeRmoD/LbGKgNIv5kL47OiU1WZ7P6sufVJS1Ev0gPjuxFpzYxE9hBw9BmVYupuPpjJnE99Hkp3ug0R2MqptYBOfdn7oNWwnizCdHKzS+nCtVqQ5cmrWABo/YFnaeHP9K2nA7JeB6AXrzft0KH+OES1wQfsMUYbMeW4Z9Uf+onCqYRgrTGJiiDKB96Q== 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 CO1PR11MB5058.namprd11.prod.outlook.com (2603:10b6:303:99::17) by SA2PR11MB5130.namprd11.prod.outlook.com (2603:10b6:806:11d::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5164.20; Tue, 19 Apr 2022 11:45:36 +0000 Received: from CO1PR11MB5058.namprd11.prod.outlook.com ([fe80::35d4:c584:1289:9d94]) by CO1PR11MB5058.namprd11.prod.outlook.com ([fe80::35d4:c584:1289:9d94%9]) with mapi id 15.20.5164.025; Tue, 19 Apr 2022 11:45:36 +0000 From: "Min Xu" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: "Yao, Jiewen" , "Wang, Jian J" , "Lu, Xiaoyu1" , "Jiang, Guomin" , Gerd Hoffmann Subject: Re: [edk2-devel] [PATCH V3 2/9] CryptoPkg: Add SecCryptLib Thread-Topic: [edk2-devel] [PATCH V3 2/9] CryptoPkg: Add SecCryptLib Thread-Index: AQHYUrdg7+l2/wcCTkixUZ9n4hFP7az1zWQAgAFP2IA= Date: Tue, 19 Apr 2022 11:45:36 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.401.20 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0c137a2d-0e24-48a5-8123-08da21fa1e95 x-ms-traffictypediagnostic: SA2PR11MB5130:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: TlxMM/9a8Jl7BywJwK4b0UgYQYhyYaXejkE5gNYNo/gDhMu83OAG/4iTXZj5iPBNF5RTTsnKQd1jvuN1Xg5hiR7jNuTeoLmps8nAAs+BD5S1K2KkTB2auCuyrqWVxVQrSqIAHIRQy0Fik7PNtAdEt3iIUCL7aoX+eW8gEcP7F61l60q9Rqgug2M72r45xh3+qJHxPCUKSe+JD0/XM9NSbctqW9uWKltz5HvNqveBqg6VAuIfiPGtFece/2kD5caEkp5wuR0oMZ/T32n9qNBFZAbVxgRyi2d43YwZFSppg7mUEIFIIl9E3IkauIPAs5Nhkufi/jHrplft8K6skYpf4IR4JSURAYPTb5bvYdJ0Phsnqn8KkhNoQDBwUXYfJTsX9KvnaxXfEATfPegpIPoQhSFhGICnZyc4E2OFTf7FfV+oEtHO7o70h4Q84XRn7FoHMUAY3WJ/eJsZALxtHY9XeHMO6ZPGXDYwzPNugM+9TZeUljfNDuXUvDsYaNtJB/gfVc9b8rL6fQZ5BSmo8AWvAe63xmGdRVFW/GXiqMss9U55pBkm4c0e/xsUx+ElP+K8ZomBV1xu3LZz5mKEiOYK5on6fw768GvAw9ZfHu5FLnGHt6BJ2w0j2eARXezvBnKNslFSYac8XfZ6Si2aBnzSHMcMwYqsHmsNuYoHv2DGjQTH781pqQYJsdfp6F9HAIp3GNW8hRAbuptfxj7xbp9EZ+fqEHnGipNhcOBUy3ARGfH2C3ayv3wLSL1+BTLHDh6j1AU4+pgIxr5TzbIqgtP8sHCscI0tPgHIaZ2hzgY+zYD19ANZXq1YBMAi6T+E2kFWxJanVH2uLnD3xlrlezpJI49RfEMD5hrHjaxia6lHTJ8= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB5058.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(71200400001)(86362001)(83380400001)(966005)(66946007)(76116006)(45080400002)(38070700005)(30864003)(186003)(316002)(55016003)(26005)(82960400001)(38100700002)(110136005)(66556008)(5660300002)(122000001)(8676002)(64756008)(66476007)(33656002)(19627235002)(4326008)(54906003)(508600001)(66446008)(52536014)(8936002)(6506007)(7696005)(9686003)(2906002)(53546011)(3714002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bFhFUlhmYnR6RzlVVk1jSXZ5Mlh0QlUrVmMxM3lFV2tSdjV3aUFPOG4vYVhS?= =?utf-8?B?Z3ZORHpYc1ArSE5EZ20vSVEwY0NuSy9iNjJ5M3hLZlJmL3RDYTVFbDdvOTdq?= =?utf-8?B?by9yTzRSNC94OUpuN0swTXNiZFdaekZ2SkpJV2FXekdGanBIMkhqcHVxS1dD?= =?utf-8?B?TExldGgwWEQzSy9MMlBtUEtQNDNENm5Bc0xTQmdjRFFPbXNSNnljY1RuNHE0?= =?utf-8?B?Q0ZpWjlkTEhxSHB6bWl5VWpGYkFLTk1MbThzZ25Zb1ZOWlRzQXlQRmhHMXFT?= =?utf-8?B?VEJFaUVyNXlMd1NOUTNBRDRSU1I0VFpMR0krV2p4b1JaNjRZaWs0bGowelRD?= =?utf-8?B?KzBDZVBraHhSNGJDMm1RUXJEQ211SG1HT1c5bGprNVpJTWtlMEJGSVhhUGR2?= =?utf-8?B?aHdkM2lleTZ0RXBJYzQ5R0xqQkx1OXNnNGJJQTNLd25HT1doSERscnBvY2gy?= =?utf-8?B?L1N2VjZsUDVXeEtvVkw5WmNkazQySU8zakZhRGxWVjMxQXNLZG9FOUNyODZ4?= =?utf-8?B?ZzZYOUZtL29ic1ZRWHFNbnpieTQ1cEhsdzBiaU1RNDN6UlFXRitMNWFKanFz?= =?utf-8?B?STNScTdCWUNvUjBDR3FtVkhXR0orSDF5anhlNUU4WmRwOW4rNG1qMnpQVUtD?= =?utf-8?B?WTRTYzdlWkI4R003TWMwRUUwUmN4TmxlVE81S3hwcTllamQ2NmtsdE5obytN?= =?utf-8?B?Y2M3R3kzZXdWNnJHRWZuakRTUnY2V3VMZ2RaU3psbjlmSG83REdqRzhhK011?= =?utf-8?B?WFhDbFhiZi9aa2syMnNYWG12S3JUdENUb0wzL1VjcWFNMm1WUzVMMGY5bEky?= =?utf-8?B?d0J1cVNmQlowRmNhWVpCZFR4RjRNVnJqZ1FvMENyUFNSanhJcCsxdkp2Ynh6?= =?utf-8?B?UE9DWWtIQzVUVHdtZzRpZGxDTklUeGsxUUkrMjdpS0I4OXZ5T0xBVTBsLzJx?= =?utf-8?B?Q1BFYURiUHZuNlg1L1pXMm45cCtkMkwyT1NsNVN0NVdUNFcrbHpJUzVscHgr?= =?utf-8?B?R2MvY1ZJdTZ0QTRXWDczTzZRYjFIcWpYbEF1WUFWamxPellhN3Q2TW8rUVJO?= =?utf-8?B?Yng1SGFpdkZxOWdXYS9ORTBzNVI3R0p4OHFXMHlPTndKQU9FMXNHRUhzZ0xN?= =?utf-8?B?UjZURGs1dWhmRVp6ZGR1VHFISmd1RjZuaFB6bXlLeVV0RmdSQ1JKaFJ5bkJw?= =?utf-8?B?QVExRGtQMkxLRi9odnE2M1RxQjNYOEE2UVZOVzBZMk5ocGlGZWlteXBYWml2?= =?utf-8?B?akpOVEpJN0xiUVY0SXRLc1VwaUUyYTVIMVlpbUdsRVBKODVKWXNZRTZRVVdL?= =?utf-8?B?VWVud3lkYStOMWNTVUZCeFJtNHFDdFhrM040VEZFTnN5VVNRU2hybkNUU08x?= =?utf-8?B?NDc1QXMvazR0RkpNUmdKYWJScEl1RHROZDNUT1Z4SmltUWoxRU40bTFNSlRk?= =?utf-8?B?ZzNLRXc4MUkvbHJWSGZzVy9PY093UEpOWlBwYVljRGtIWTkxRnRpQ0VsN2pa?= =?utf-8?B?c3plc3ZwSy95TDZaVWFMa2pCaldBNmlBUUMyQmNZNWE0bEcwSlRkSks1Y3BS?= =?utf-8?B?SXJmVjlHMkVxeHpFVkVZblBFZFZVTjJuUGsyOHpyMEl3WWhKMFBtYWxxQW03?= =?utf-8?B?Y2k1YkRNQlJ4cnN5ZjNodkxMcG5hekpFOXZZUG55UGpzbTFLUDdlZDBERFJK?= =?utf-8?B?dXZmTSt4NzhWUW0xTDRmZ1NQSWhrK24xYS9qbkVsbHlaK2RidWVRa1VaUXNa?= =?utf-8?B?TkVFeHN1RHI2clJuendvaWs0ZndmMUhQdWw2OXM0aUhHK2g3UzJ5MU8rZXhX?= =?utf-8?B?ZXhMVTZhWnZDMkw4a0RJZkhsZEVzZGw2ajI1a054bDYreG9seDhiYzM1R2Zs?= =?utf-8?B?R1lDNWl0aEhhRE5XcTJaeUJxVzYrSWlQeTVSd05keXpubWRtdXJBdFgyZitX?= =?utf-8?B?eTU3czJqSmZPSUMrMWc5cVhaR2Y0YTR5YnorTHk4N1BpMFdrU0x0amRzV1Jh?= =?utf-8?B?ek5mZDdsV2FtWjZhR1hMMi9JaFZaMkJuMSs5TU5IY2tyL2Q4WW44Wnl5ZlJ1?= =?utf-8?B?V2dZTlo4emZtQ2UrTkJMRlNIVWE2enZJdW5od0pLOC85NmtMOFNydWZxUm4w?= =?utf-8?B?R2w2UjNFWTluaFVLc0RmSlkxSkJ5YlpyWlBDZmlGaGN5K29wK1FOY29ydUZD?= =?utf-8?B?SG5EeXhDelZXdkZidml3ZjhpR0JTeTVwRGdkMytKeng5TmhqbnR1Q1JXNDRr?= =?utf-8?B?TUM4MVhKM29tWG5KMnpOcDBFSXVpWHFpNlVTanhDZkU1TGM1Q2JqZEc5T3Mv?= =?utf-8?B?b294YmpQN04yYi9XL3N2S05ueitSTVNXaXAxMzdTMEhiWGpTZ29VQT09?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB5058.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0c137a2d-0e24-48a5-8123-08da21fa1e95 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Apr 2022 11:45:36.3907 (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: s0R9pbj4APesJcKGyhTqbi0DpK/PQ1Mbatr0GiZXRmDLERZKO9g3wtnK8XAyC1kAS/+B/RS3yJIj1w2yKdssuw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB5130 Return-Path: min.m.xu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGksIE1pY2hhZWwNCkkgY2FyZWZ1bGx5IHRoaW5rIGFib3V0IHlvdXIgY29tbWVudHMgYW5kIHN0 dWR5IHRoZSBQQ0QuIFRoaXMgUENEIGlzIHRvIGVuYWJsZS9kaXNhYmxlIGZhbWlsaWVzIGFuZCBp bmRpdmlkdWFsIHNlcnZpY2VzIHByb2R1Y2VkIGJ5IHRoZSBFREsyIGNyeXB0byBQcm90b2NvbHMv UFBJcy4gDQpTZWNDcnlwdG9MaWIgaXMgZGVzaWduZWQgdG8gYmUgY2FsbGVkIGluIFNFQyBwaGFz ZSBhbmQgdGhlcmUgaXMgbm8gUHJvdG9jb2wvUFBJcyBpbiBTRUMgcGhhc2UuIFNoYWxsIHdlIHN0 aWxsIHVzZSB0aGUgUENEIHRvIG1ha2UgYW4gU0VDIHZlcnNpb24gbGlrZSBiZWxvdz8gKEN1cnJl bnRseSBvbmx5IFNIQTM4NCBpcyBuZWVkZWQpDQoNCiFpZiAkKENSWVBUT19TRVJWSUNFUykgPT0g TUlOX1NFQw0KICBnRWZpQ3J5cHRvUGtnVG9rZW5TcGFjZUd1aWQuUGNkQ3J5cHRvU2VydmljZUZh bWlseUVuYWJsZS5TaGEzODQuRmFtaWx5ICAgICAgICAgICAgICAgICAgIHwgUENEX0NSWVBUT19T RVJWSUNFX0VOQUJMRV9GQU1JTFkNCiFlbmRpZg0KDQpUaGFua3MNCk1pbg0KPiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtp bm5leUBpbnRlbC5jb20+DQo+IFNlbnQ6IE1vbmRheSwgQXByaWwgMTgsIDIwMjIgMTE6MzIgUE0N Cj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBYdSwgTWluIE0gPG1pbi5tLnh1QGludGVsLmNv bT47IEtpbm5leSwNCj4gTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4g Q2M6IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFdhbmcsIEppYW4gSg0KPiA8 amlhbi5qLndhbmdAaW50ZWwuY29tPjsgTHUsIFhpYW95dTEgPHhpYW95dTEubHVAaW50ZWwuY29t PjsgSmlhbmcsDQo+IEd1b21pbiA8Z3VvbWluLmppYW5nQGludGVsLmNvbT47IEdlcmQgSG9mZm1h bm4gPGtyYXhlbEByZWRoYXQuY29tPg0KPiBTdWJqZWN0OiBSRTogW2VkazItZGV2ZWxdIFtQQVRD SCBWMyAyLzldIENyeXB0b1BrZzogQWRkIFNlY0NyeXB0TGliDQo+IA0KPiBIaSwNCj4gDQo+IERp ZCB5b3UgZXZhbHVhdGUgdGhlIHVzZSBvZiB0aGUgZm9sbG93aW5nIFBDRCB0byBtYWtlIGFuIFNF QyB2ZXJzaW9uPw0KPiANCj4gICAjIyBFbmFibGUvRGlzYWJsZSB0aGUgZmFtaWxpZXMgYW5kIGlu ZGl2aWR1YWwgc2VydmljZXMgcHJvZHVjZWQgYnkgdGhlDQo+ICAgIyAgRURLIElJIENyeXB0byBQ cm90b2NvbHMvUFBJcy4gIFRoZSBkZWZhdWx0IGlzIGFsbCBzZXJ2aWNlcyBkaXNhYmxlZC4NCj4g ICAjICBUaGlzIFN0cnVjdHVyZWQgUENEIGlzIGFzc29jaWF0ZWQgd2l0aA0KPiBQQ0RfQ1JZUFRP X1NFUlZJQ0VfRkFNSUxZX0VOQUJMRQ0KPiAgICMgIHN0cnVjdHVyZSB0aGF0IGlzIGRlZmluZWQg aW4gSW5jbHVkZS9QY2QvUGNkQ3J5cHRvU2VydmljZUZhbWlseUVuYWJsZS5oLg0KPiAgICMgQFBy b21wdCBFbmFibGUvRGlzYWJsZSBFREsgSUkgQ3J5cHRvIFByb3RvY29sL1BQSSBzZXJ2aWNlcw0K PiANCj4gZ0VmaUNyeXB0b1BrZ1Rva2VuU3BhY2VHdWlkLlBjZENyeXB0b1NlcnZpY2VGYW1pbHlF bmFibGV8ezB4MDB9fFBDRF8NCj4gQ1JZUFRPX1NFUlZJQ0VfRkFNSUxZX0VOQUJMRXwweDAwMDAw MDAyIHsNCj4gICAgIDxQYWNrYWdlcz4NCj4gICAgICAgQ3J5cHRvUGtnL0NyeXB0b1BrZy5kZWMN Cj4gICAgIDxIZWFkZXJGaWxlcz4NCj4gICAgICAgUGNkL1BjZENyeXB0b1NlcnZpY2VGYW1pbHlF bmFibGUuaA0KPiAgIH0NCj4gDQo+IA0KPiBDcnlwdG9Qa2cuZHNjIGhhcyBkaWZmZXJlbnQgUENE IHNldHRpbmdzIGZvciBkaWZmZXJlbnQgRlcgcGhhc2VzIHRvIGNvbmZpZ3VyZQ0KPiBvbmx5IHRo ZSBjcnlwdG8gc2VydmljZXMgcmVxdWlyZWQgaW4gZWFjaCBwaGFzZS4gIFlvdSBjYW4gZXh0ZW5k IGZvciBTRUMuDQo+IEhlcmUgaXMgdGhlIHNldHRpbmcgZm9yIHRoZSBtaW5pbXVtIGZvciBQRUkg cGhhc2UuDQo+IA0KPiAhaWYgJChDUllQVE9fU0VSVklDRVMpID09IE1JTl9QRUkNCj4gDQo+IGdF ZmlDcnlwdG9Qa2dUb2tlblNwYWNlR3VpZC5QY2RDcnlwdG9TZXJ2aWNlRmFtaWx5RW5hYmxlLkht YWNTaGEyNTYuDQo+IEZhbWlseSAgICAgICAgICAgICAgIHwgUENEX0NSWVBUT19TRVJWSUNFX0VO QUJMRV9GQU1JTFkNCj4gICBnRWZpQ3J5cHRvUGtnVG9rZW5TcGFjZUd1aWQuUGNkQ3J5cHRvU2Vy dmljZUZhbWlseUVuYWJsZS5TaGExLkZhbWlseQ0KPiB8IFBDRF9DUllQVE9fU0VSVklDRV9FTkFC TEVfRkFNSUxZDQo+IA0KPiBnRWZpQ3J5cHRvUGtnVG9rZW5TcGFjZUd1aWQuUGNkQ3J5cHRvU2Vy dmljZUZhbWlseUVuYWJsZS5TaGEyNTYuRmFtaWwNCj4geSAgICAgICAgICAgICAgICAgICB8IFBD RF9DUllQVE9fU0VSVklDRV9FTkFCTEVfRkFNSUxZDQo+IA0KPiBnRWZpQ3J5cHRvUGtnVG9rZW5T cGFjZUd1aWQuUGNkQ3J5cHRvU2VydmljZUZhbWlseUVuYWJsZS5TaGEzODQuRmFtaWwNCj4geSAg ICAgICAgICAgICAgICAgICB8IFBDRF9DUllQVE9fU0VSVklDRV9FTkFCTEVfRkFNSUxZDQo+IA0K PiBnRWZpQ3J5cHRvUGtnVG9rZW5TcGFjZUd1aWQuUGNkQ3J5cHRvU2VydmljZUZhbWlseUVuYWJs ZS5TaGE1MTIuRmFtaWwNCj4geSAgICAgICAgICAgICAgICAgICB8IFBDRF9DUllQVE9fU0VSVklD RV9FTkFCTEVfRkFNSUxZDQo+ICAgZ0VmaUNyeXB0b1BrZ1Rva2VuU3BhY2VHdWlkLlBjZENyeXB0 b1NlcnZpY2VGYW1pbHlFbmFibGUuU20zLkZhbWlseQ0KPiB8IFBDRF9DUllQVE9fU0VSVklDRV9F TkFCTEVfRkFNSUxZDQo+IA0KPiBnRWZpQ3J5cHRvUGtnVG9rZW5TcGFjZUd1aWQuUGNkQ3J5cHRv U2VydmljZUZhbWlseUVuYWJsZS5Sc2EuU2VydmljZXMuDQo+IFBrY3MxVmVyaWZ5ICAgICAgICB8 IFRSVUUNCj4gDQo+IGdFZmlDcnlwdG9Qa2dUb2tlblNwYWNlR3VpZC5QY2RDcnlwdG9TZXJ2aWNl RmFtaWx5RW5hYmxlLlJzYS5TZXJ2aWNlcy4NCj4gTmV3ICAgICAgICAgICAgICAgIHwgVFJVRQ0K PiANCj4gZ0VmaUNyeXB0b1BrZ1Rva2VuU3BhY2VHdWlkLlBjZENyeXB0b1NlcnZpY2VGYW1pbHlF bmFibGUuUnNhLlNlcnZpY2VzLkYNCj4gcmVlICAgICAgICAgICAgICAgfCBUUlVFDQo+IA0KPiBn RWZpQ3J5cHRvUGtnVG9rZW5TcGFjZUd1aWQuUGNkQ3J5cHRvU2VydmljZUZhbWlseUVuYWJsZS5S c2EuU2VydmljZXMuUw0KPiBldEtleSAgICAgICAgICAgICB8IFRSVUUNCj4gDQo+IGdFZmlDcnlw dG9Qa2dUb2tlblNwYWNlR3VpZC5QY2RDcnlwdG9TZXJ2aWNlRmFtaWx5RW5hYmxlLlBrY3MuU2Vy dmljZXMuDQo+IFBrY3M1SGFzaFBhc3N3b3JkIHwgVFJVRSAhZW5kaWYNCj4gDQo+IFRoZSBjb21w bGV0ZSBzZXQgb2Ygc2V0dGluZ3MgaXMgaXNuIHRoZQ0KPiBQQ0RfQ1JZUFRPX1NFUlZJQ0VfRkFN SUxZX0VOQUJMRSBzdHJ1Y3R1cmU6DQo+IA0KPiAJaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29y ZS9lZGsyL2Jsb2IvbWFzdGVyL0NyeXB0b1BrZy9JbmNsdWRlDQo+IC9QY2QvUGNkQ3J5cHRvU2Vy dmljZUZhbWlseUVuYWJsZS5oDQo+IA0KPiBNaWtlDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+ID4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3Jv dXBzLmlvPiBPbiBCZWhhbGYgT2YgTWluDQo+IFh1DQo+ID4gU2VudDogU3VuZGF5LCBBcHJpbCAx NywgMjAyMiA1OjAwIFBNDQo+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gQ2M6IFh1 LCBNaW4gTSA8bWluLm0ueHVAaW50ZWwuY29tPjsgWWFvLCBKaWV3ZW4NCj4gPiA8amlld2VuLnlh b0BpbnRlbC5jb20+OyBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IEx1LA0K PiA+IFhpYW95dTEgPHhpYW95dTEubHVAaW50ZWwuY29tPjsgSmlhbmcsIEd1b21pbg0KPiA+IDxn dW9taW4uamlhbmdAaW50ZWwuY29tPjsgR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+ DQo+ID4gU3ViamVjdDogW2VkazItZGV2ZWxdIFtQQVRDSCBWMyAyLzldIENyeXB0b1BrZzogQWRk IFNlY0NyeXB0TGliDQo+ID4NCj4gPiBSRkM6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9y Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzg1Mw0KPiA+DQo+ID4gVGhpcyBpcyB0aGUgQ3J5cHRvZ3JhcGhp YyBsaWJyYXJ5IGluc3RhbmNlIGZvciBTRUMuIFRoZSBtb3RpdmF0aW9uIG9mDQo+ID4gdGhpcyBs aWJyYXJ5IGlzIHRvIHN1cHBvcnQgU0hBMzg0IGluIFNFQyBwaGFzZSBmb3IgVGQgZ3Vlc3QuIFNv IG9ubHkNCj4gPiBIYXNoL0NyeXB0U2hhNTEyLmMgaXMgaW5jbHVkZWQgd2hpY2ggc3VwcG9ydHMg U0hBMzg0IGFuZCBTSEE1MTIuDQo+IE90aGVyDQo+ID4gY3J5cHRvZ3JhcGhpY3MgYXJlIGFkZGVk IHdpdGggdGhlIG51bGwgdmVyc2lvbiwgc3VjaCBhcyBDcnlwdE1kNU51bGwuYy4NCj4gPg0KPiA+ IENjOiBKaWV3ZW4gWWFvIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPiBDYzogSmlhbiBKIFdh bmcgPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gPiBDYzogWGlhb3l1IEx1IDx4aWFveXUxLmx1 QGludGVsLmNvbT4NCj4gPiBDYzogR3VvbWluIEppYW5nIDxndW9taW4uamlhbmdAaW50ZWwuY29t Pg0KPiA+IENjOiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4NCj4gPiBTaWduZWQt b2ZmLWJ5OiBNaW4gWHUgPG1pbi5tLnh1QGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgQ3J5cHRv UGtnL0NyeXB0b1BrZy5kc2MgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsNCj4gPiAgLi4u L0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRNZDVOdWxsLmMgIHwgMTYzICsrKysrKysr KysrKysrKysrDQo+ID4gLi4uL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRTaGExTnVs bC5jIHwgMTY2ICsrKysrKysrKysrKysrKysrKw0KPiA+ICAuLi4vQmFzZUNyeXB0TGliL0hhc2gv Q3J5cHRTaGEyNTZOdWxsLmMgICAgICAgfCAxNjIgKysrKysrKysrKysrKysrKysNCj4gPiAgLi4u L0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRTbTNOdWxsLmMgIHwgMTY0ICsrKysrKysr KysrKysrKysrDQo+ID4gLi4uL0Jhc2VDcnlwdExpYi9Qay9DcnlwdFBrY3M3VmVyaWZ5RWt1TnVs bC5jIHwgMTUyICsrKysrKysrKysrKysrKysNCj4gPiAgLi4uL0Jhc2VDcnlwdExpYi9Qay9Dcnlw dFJzYUJhc2ljTnVsbC5jICAgICAgIHwgMTIxICsrKysrKysrKysrKysNCj4gPiAgLi4uL0xpYnJh cnkvQmFzZUNyeXB0TGliL1NlY0NyeXB0TGliLmluZiAgICAgIHwgIDkxICsrKysrKysrKysNCj4g PiAgOCBmaWxlcyBjaGFuZ2VkLCAxMDIzIGluc2VydGlvbnMoKykNCj4gPiAgY3JlYXRlIG1vZGUg MTAwNjQ0DQo+IENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9IYXNoL0NyeXB0TWQ1TnVs bC5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VD cnlwdExpYi9IYXNoL0NyeXB0U2hhMU51bGwuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4g PiBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvSGFzaC9DcnlwdFNoYTI1Nk51bGwuYw0K PiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGli L0hhc2gvQ3J5cHRTbTNOdWxsLmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gQ3J5cHRv UGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0UGtjczdWZXJpZnlFa3VOdWxsLmMNCj4g PiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGli L1BrL0NyeXB0UnNhQmFzaWNOdWxsLmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IENyeXB0b1Br Zy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9TZWNDcnlwdExpYi5pbmYNCj4gPg0KPiA+IGRpZmYgLS1n aXQgYS9DcnlwdG9Qa2cvQ3J5cHRvUGtnLmRzYyBiL0NyeXB0b1BrZy9DcnlwdG9Qa2cuZHNjIGlu ZGV4DQo+ID4gMGFhNzJlZDg3ODQ2Li5iODE0ZTk2MTY0NTQgMTAwNjQ0DQo+ID4gLS0tIGEvQ3J5 cHRvUGtnL0NyeXB0b1BrZy5kc2MNCj4gPiArKysgYi9DcnlwdG9Qa2cvQ3J5cHRvUGtnLmRzYw0K PiA+IEBAIC0xMDksNiArMTA5LDkgQEANCj4gPiAgW0xpYnJhcnlDbGFzc2VzLkFSTV0NCj4gPiAg ICBBcm1Tb2Z0RmxvYXRMaWJ8QXJtUGtnL0xpYnJhcnkvQXJtU29mdEZsb2F0TGliL0FybVNvZnRG bG9hdExpYi5pbmYNCj4gPg0KPiA+ICtbTGlicmFyeUNsYXNzZXMuY29tbW9uLlNFQ10NCj4gPiAr ICBCYXNlQ3J5cHRMaWJ8Q3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1NlY0NyeXB0TGli LmluZg0KPiA+ICsNCj4gPiAgW0xpYnJhcnlDbGFzc2VzLmNvbW1vbi5QRUlNXQ0KPiA+ICAgIFBj ZExpYnxNZGVQa2cvTGlicmFyeS9QZWlQY2RMaWIvUGVpUGNkTGliLmluZg0KPiA+DQo+ID4NCj4g UmVwb3J0U3RhdHVzQ29kZUxpYnxNZGVNb2R1bGVQa2cvTGlicmFyeS9QZWlSZXBvcnRTdGF0dXND b2RlTGliL1BlaVINCj4gZXANCj4gPiBvcnRTdGF0dXNDb2RlTGliLmluZg0KPiA+IEBAIC0yMzYs NiArMjM5LDcgQEANCj4gPiAgIWlmICQoQ1JZUFRPX1NFUlZJQ0VTKSA9PSBQQUNLQUdFDQo+ID4g IFtDb21wb25lbnRzXQ0KPiA+ICAgIENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9CYXNl Q3J5cHRMaWIuaW5mDQo+ID4gKyAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1NlY0Ny eXB0TGliLmluZg0KPiA+ICAgIENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9QZWlDcnlw dExpYi5pbmYNCj4gPiAgICBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvU21tQ3J5cHRM aWIuaW5mDQo+ID4gICAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1J1bnRpbWVDcnlw dExpYi5pbmYNCj4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGli L0hhc2gvQ3J5cHRNZDVOdWxsLmMNCj4gPiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExp Yi9IYXNoL0NyeXB0TWQ1TnVsbC5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRl eCAwMDAwMDAwMDAwMDAuLjg5M2EyMzAyYTZkZQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysg Yi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvSGFzaC9DcnlwdE1kNU51bGwuYw0KPiA+ IEBAIC0wLDAgKzEsMTYzIEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsNCj4gPiArTUQ1IERpZ2Vz dCBXcmFwcGVyIE51bGwgSW1wbGVtZW50YXRpb24uDQo+ID4gKw0KPiA+ICtDb3B5cmlnaHQgKGMp IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiArU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0K PiA+ICsNCj4gPiArI2luY2x1ZGUgIkludGVybmFsQ3J5cHRMaWIuaCINCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIFJldHJpZXZlcyB0aGUgc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBjb250ZXh0IGJ1 ZmZlciByZXF1aXJlZCBmb3IgTUQ1IGhhc2gNCj4gb3BlcmF0aW9ucy4NCj4gPiArDQo+ID4gKyAg QHJldHVybiAgVGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgY29udGV4dCBidWZmZXIgcmVxdWly ZWQgZm9yIE1ENSBoYXNoDQo+IG9wZXJhdGlvbnMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlO VE4NCj4gPiArRUZJQVBJDQo+ID4gK01kNUdldENvbnRleHRTaXplICgNCj4gPiArICBWT0lEDQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gKyAgcmV0dXJuIDA7 DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEluaXRpYWxpemVzIHVzZXItc3VwcGxp ZWQgbWVtb3J5IHBvaW50ZWQgYnkgTWQ1Q29udGV4dCBhcyBNRDUgaGFzaA0KPiA+ICtjb250ZXh0 IGZvcg0KPiA+ICsgIHN1YnNlcXVlbnQgdXNlLg0KPiA+ICsNCj4gPiArICBJZiBNZDVDb250ZXh0 IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ICsNCj4gPiArICBAcGFyYW1bb3V0XSAg TWQ1Q29udGV4dCAgUG9pbnRlciB0byBNRDUgY29udGV4dCBiZWluZyBpbml0aWFsaXplZC4NCj4g PiArDQo+ID4gKyAgQHJldHZhbCBUUlVFICAgTUQ1IGNvbnRleHQgaW5pdGlhbGl6YXRpb24gc3Vj Y2VlZGVkLg0KPiA+ICsgIEByZXR2YWwgRkFMU0UgIE1ENSBjb250ZXh0IGluaXRpYWxpemF0aW9u IGZhaWxlZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtCT09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ ICtNZDVJbml0ICgNCj4gPiArICBPVVQgIFZPSUQgICpNZDVDb250ZXh0DQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBNYWtlcyBhIGNvcHkgb2YgYW4gZXhpc3RpbmcgTUQ1 IGNvbnRleHQuDQo+ID4gKw0KPiA+ICsgIElmIE1kNUNvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1 cm4gRkFMU0UuDQo+ID4gKyAgSWYgTmV3TWQ1Q29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBG QUxTRS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgTWQ1Q29udGV4dCAgICAgUG9pbnRlciB0 byBNRDUgY29udGV4dCBiZWluZyBjb3BpZWQuDQo+ID4gKyAgQHBhcmFtW291dF0gTmV3TWQ1Q29u dGV4dCAgUG9pbnRlciB0byBuZXcgTUQ1IGNvbnRleHQuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwg VFJVRSAgIE1ENSBjb250ZXh0IGNvcHkgc3VjY2VlZGVkLg0KPiA+ICsgIEByZXR2YWwgRkFMU0Ug IE1ENSBjb250ZXh0IGNvcHkgZmFpbGVkLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0JPT0xFQU4N Cj4gPiArRUZJQVBJDQo+ID4gK01kNUR1cGxpY2F0ZSAoDQo+ID4gKyAgSU4gICBDT05TVCBWT0lE ICAqTWQ1Q29udGV4dCwNCj4gPiArICBPVVQgIFZPSUQgICAgICAgICpOZXdNZDVDb250ZXh0DQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gKyAgcmV0dXJuIEZB TFNFOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBEaWdlc3RzIHRoZSBpbnB1dCBk YXRhIGFuZCB1cGRhdGVzIE1ENSBjb250ZXh0Lg0KPiA+ICsNCj4gPiArICBUaGlzIGZ1bmN0aW9u IHBlcmZvcm1zIE1ENSBkaWdlc3Qgb24gYSBkYXRhIGJ1ZmZlciBvZiB0aGUgc3BlY2lmaWVkIHNp emUuDQo+ID4gKyAgSXQgY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBjb21wdXRlIHRo ZSBkaWdlc3Qgb2YgbG9uZyBvcg0KPiBkaXNjb250aW51b3VzIGRhdGEgc3RyZWFtcy4NCj4gPiAr ICBNRDUgY29udGV4dCBzaG91bGQgYmUgYWxyZWFkeSBjb3JyZWN0bHkgaW50aWFsaXplZCBieSBN ZDVJbml0KCksDQo+ID4gKyBhbmQgc2hvdWxkIG5vdCBiZSBmaW5hbGl6ZWQgIGJ5IE1kNUZpbmFs KCkuIEJlaGF2aW9yIHdpdGggaW52YWxpZCBjb250ZXh0DQo+IGlzIHVuZGVmaW5lZC4NCj4gPiAr DQo+ID4gKyAgSWYgTWQ1Q29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiAr DQo+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBNZDVDb250ZXh0ICBQb2ludGVyIHRvIHRoZSBNRDUg Y29udGV4dC4NCj4gPiArICBAcGFyYW1baW5dICAgICAgIERhdGEgICAgICAgIFBvaW50ZXIgdG8g dGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkYXRhIHRvIGJlDQo+IGhhc2hlZC4NCj4gPiArICBA cGFyYW1baW5dICAgICAgIERhdGFTaXplICAgIFNpemUgb2YgRGF0YSBidWZmZXIgaW4gYnl0ZXMu DQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgVFJVRSAgIE1ENSBkYXRhIGRpZ2VzdCBzdWNjZWVkZWQu DQo+ID4gKyAgQHJldHZhbCBGQUxTRSAgTUQ1IGRhdGEgZGlnZXN0IGZhaWxlZC4NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICtCT09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ICtNZDVVcGRhdGUgKA0KPiA+ ICsgIElOIE9VVCAgVk9JRCAgICAgICAgKk1kNUNvbnRleHQsDQo+ID4gKyAgSU4gICAgICBDT05T VCBWT0lEICAqRGF0YSwNCj4gPiArICBJTiAgICAgIFVJTlROICAgICAgIERhdGFTaXplDQo+ID4g KyAgKQ0KPiA+ICt7DQo+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gKyAgcmV0dXJuIEZBTFNF Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBDb21wbGV0ZXMgY29tcHV0YXRpb24g b2YgdGhlIE1ENSBkaWdlc3QgdmFsdWUuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gY29t cGxldGVzIE1ENSBoYXNoIGNvbXB1dGF0aW9uIGFuZCByZXRyaWV2ZXMgdGhlDQo+ID4gKyBkaWdl c3QgdmFsdWUgaW50byAgdGhlIHNwZWNpZmllZCBtZW1vcnkuIEFmdGVyIHRoaXMgZnVuY3Rpb24g aGFzDQo+ID4gKyBiZWVuIGNhbGxlZCwgdGhlIE1ENSBjb250ZXh0IGNhbm5vdCAgYmUgdXNlZCBh Z2Fpbi4NCj4gPiArICBNRDUgY29udGV4dCBzaG91bGQgYmUgYWxyZWFkeSBjb3JyZWN0bHkgaW50 aWFsaXplZCBieSBNZDVJbml0KCksDQo+ID4gKyBhbmQgc2hvdWxkIG5vdCBiZSAgZmluYWxpemVk IGJ5IE1kNUZpbmFsKCkuIEJlaGF2aW9yIHdpdGggaW52YWxpZCBNRDUNCj4gY29udGV4dCBpcyB1 bmRlZmluZWQuDQo+ID4gKw0KPiA+ICsgIElmIE1kNUNvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1 cm4gRkFMU0UuDQo+ID4gKyAgSWYgSGFzaFZhbHVlIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNF Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW4sIG91dF0gIE1kNUNvbnRleHQgIFBvaW50ZXIgdG8g dGhlIE1ENSBjb250ZXh0Lg0KPiA+ICsgIEBwYXJhbVtvdXRdICAgICAgSGFzaFZhbHVlICAgUG9p bnRlciB0byBhIGJ1ZmZlciB0aGF0IHJlY2VpdmVzIHRoZSBNRDUNCj4gZGlnZXN0DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSAoMTYgYnl0ZXMpLg0KPiA+ICsNCj4g PiArICBAcmV0dmFsIFRSVUUgICBNRDUgZGlnZXN0IGNvbXB1dGF0aW9uIHN1Y2NlZWRlZC4NCj4g PiArICBAcmV0dmFsIEZBTFNFICBNRDUgZGlnZXN0IGNvbXB1dGF0aW9uIGZhaWxlZC4NCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICtCT09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ICtNZDVGaW5hbCAoDQo+ ID4gKyAgSU4gT1VUICBWT0lEICAgKk1kNUNvbnRleHQsDQo+ID4gKyAgT1VUICAgICBVSU5UOCAg Kkhhc2hWYWx1ZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ ICsgIHJldHVybiBGQUxTRTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gK0NvbXB1dGVz IHRoZSBNRDUgbWVzc2FnZSBkaWdlc3Qgb2YgYSBpbnB1dCBkYXRhIGJ1ZmZlci4NCj4gPiArDQo+ ID4gK1RoaXMgZnVuY3Rpb24gcGVyZm9ybXMgdGhlIE1ENSBtZXNzYWdlIGRpZ2VzdCBvZiBhIGdp dmVuIGRhdGEgYnVmZmVyLA0KPiA+ICthbmQgcGxhY2VzIHRoZSBkaWdlc3QgdmFsdWUgaW50byB0 aGUgc3BlY2lmaWVkIG1lbW9yeS4NCj4gPiArDQo+ID4gK0lmIHRoaXMgaW50ZXJmYWNlIGlzIG5v dCBzdXBwb3J0ZWQsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ICsNCj4gPiArQHBhcmFtW2luXSAg IERhdGEgICAgICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkYXRhIHRv IGJlDQo+IGhhc2hlZC4NCj4gPiArQHBhcmFtW2luXSAgIERhdGFTaXplICAgIFNpemUgb2YgRGF0 YSBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gK0BwYXJhbVtvdXRdICBIYXNoVmFsdWUgICBQb2ludGVy IHRvIGEgYnVmZmVyIHRoYXQgcmVjZWl2ZXMgdGhlIE1ENQ0KPiBkaWdlc3QNCj4gPiArdmFsdWUg KDE2IGJ5dGVzKS4NCj4gPiArDQo+ID4gK0ByZXR2YWwgVFJVRSAgIE1ENSBkaWdlc3QgY29tcHV0 YXRpb24gc3VjY2VlZGVkLg0KPiA+ICtAcmV0dmFsIEZBTFNFICBNRDUgZGlnZXN0IGNvbXB1dGF0 aW9uIGZhaWxlZC4NCj4gPiArQHJldHZhbCBGQUxTRSAgVGhpcyBpbnRlcmZhY2UgaXMgbm90IHN1 cHBvcnRlZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtCT09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ ICtNZDVIYXNoQWxsICgNCj4gPiArICBJTiAgIENPTlNUIFZPSUQgICpEYXRhLA0KPiA+ICsgIElO ICAgVUlOVE4gICAgICAgRGF0YVNpemUsDQo+ID4gKyAgT1VUICBVSU5UOCAgICAgICAqSGFzaFZh bHVlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gKyAgcmV0 dXJuIEZBTFNFOw0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jh c2VDcnlwdExpYi9IYXNoL0NyeXB0U2hhMU51bGwuYw0KPiA+IGIvQ3J5cHRvUGtnL0xpYnJhcnkv QmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRTaGExTnVsbC5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmQ5YjQ2MTBhZjBlMA0KPiA+IC0tLSAvZGV2L251 bGwNCj4gPiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvSGFzaC9DcnlwdFNo YTFOdWxsLmMNCj4gPiBAQCAtMCwwICsxLDE2NiBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBT SEEtMSBEaWdlc3QgV3JhcHBlciBOdWxsIEltcGxlbWVudGF0aW9uLg0KPiA+ICsNCj4gPiArQ29w eXJpZ2h0IChjKSAyMDA5IC0gMjAxNiwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4g PiArcmVzZXJ2ZWQuPEJSPg0KPiA+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAiSW50ZXJu YWxDcnlwdExpYi5oIg0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmV0cmlldmVzIHRoZSBzaXpl LCBpbiBieXRlcywgb2YgdGhlIGNvbnRleHQgYnVmZmVyIHJlcXVpcmVkIGZvciBTSEEtMSBoYXNo DQo+IG9wZXJhdGlvbnMuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gIFRoZSBzaXplLCBpbiBieXRl cywgb2YgdGhlIGNvbnRleHQgYnVmZmVyIHJlcXVpcmVkIGZvciBTSEEtMSBoYXNoDQo+IG9wZXJh dGlvbnMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK1No YTFHZXRDb250ZXh0U2l6ZSAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsg IC8vDQo+ID4gKyAgLy8gUmV0cmlldmVzIFNIQSBDb250ZXh0IFNpemUNCj4gPiArICAvLw0KPiA+ ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ICsgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICBJbml0aWFsaXplcyB1c2VyLXN1cHBsaWVkIG1lbW9yeSBwb2ludGVkIGJ5 IFNoYTFDb250ZXh0IGFzIFNIQS0xDQo+ID4gK2hhc2ggY29udGV4dCBmb3INCj4gPiArICBzdWJz ZXF1ZW50IHVzZS4NCj4gPiArDQo+ID4gKyAgSWYgU2hhMUNvbnRleHQgaXMgTlVMTCwgdGhlbiBy ZXR1cm4gRkFMU0UuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtvdXRdICBTaGExQ29udGV4dCAgUG9p bnRlciB0byBTSEEtMSBjb250ZXh0IGJlaW5nIGluaXRpYWxpemVkLg0KPiA+ICsNCj4gPiArICBA cmV0dmFsIFRSVUUgICBTSEEtMSBjb250ZXh0IGluaXRpYWxpemF0aW9uIHN1Y2NlZWRlZC4NCj4g PiArICBAcmV0dmFsIEZBTFNFICBTSEEtMSBjb250ZXh0IGluaXRpYWxpemF0aW9uIGZhaWxlZC4N Cj4gPiArDQo+ID4gKyoqLw0KPiA+ICtCT09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ICtTaGExSW5p dCAoDQo+ID4gKyAgT1VUICBWT0lEICAqU2hhMUNvbnRleHQNCj4gPiArICApDQo+ID4gK3sNCj4g PiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgIE1ha2VzIGEgY29weSBvZiBhbiBleGlzdGluZyBTSEEtMSBjb250 ZXh0Lg0KPiA+ICsNCj4gPiArICBJZiBTaGExQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBG QUxTRS4NCj4gPiArICBJZiBOZXdTaGExQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxT RS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgU2hhMUNvbnRleHQgICAgIFBvaW50ZXIgdG8g U0hBLTEgY29udGV4dCBiZWluZyBjb3BpZWQuDQo+ID4gKyAgQHBhcmFtW291dF0gTmV3U2hhMUNv bnRleHQgIFBvaW50ZXIgdG8gbmV3IFNIQS0xIGNvbnRleHQuDQo+ID4gKw0KPiA+ICsgIEByZXR2 YWwgVFJVRSAgIFNIQS0xIGNvbnRleHQgY29weSBzdWNjZWVkZWQuDQo+ID4gKyAgQHJldHZhbCBG QUxTRSAgU0hBLTEgY29udGV4dCBjb3B5IGZhaWxlZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtC T09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ICtTaGExRHVwbGljYXRlICgNCj4gPiArICBJTiAgIENP TlNUIFZPSUQgICpTaGExQ29udGV4dCwNCj4gPiArICBPVVQgIFZPSUQgICAgICAgICpOZXdTaGEx Q29udGV4dA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ICsN Cj4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIERp Z2VzdHMgdGhlIGlucHV0IGRhdGEgYW5kIHVwZGF0ZXMgU0hBLTEgY29udGV4dC4NCj4gPiArDQo+ ID4gKyAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyBTSEEtMSBkaWdlc3Qgb24gYSBkYXRhIGJ1ZmZl ciBvZiB0aGUgc3BlY2lmaWVkIHNpemUuDQo+ID4gKyAgSXQgY2FuIGJlIGNhbGxlZCBtdWx0aXBs ZSB0aW1lcyB0byBjb21wdXRlIHRoZSBkaWdlc3Qgb2YgbG9uZyBvcg0KPiBkaXNjb250aW51b3Vz IGRhdGEgc3RyZWFtcy4NCj4gPiArICBTSEEtMSBjb250ZXh0IHNob3VsZCBiZSBhbHJlYWR5IGNv cnJlY3RseSBpbml0aWFsaXplZCBieQ0KPiA+ICsgU2hhMUluaXQoKSwgYW5kIHNob3VsZCBub3Qg YmUgZmluYWxpemVkICBieSBTaGExRmluYWwoKS4gQmVoYXZpb3Igd2l0aA0KPiBpbnZhbGlkIGNv bnRleHQgaXMgdW5kZWZpbmVkLg0KPiA+ICsNCj4gPiArICBJZiBTaGExQ29udGV4dCBpcyBOVUxM LCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBTaGEx Q29udGV4dCAgUG9pbnRlciB0byB0aGUgU0hBLTEgY29udGV4dC4NCj4gPiArICBAcGFyYW1baW5d ICAgICAgIERhdGEgICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUg ZGF0YSB0byBiZQ0KPiBoYXNoZWQuDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgICBEYXRhU2l6ZSAg ICAgU2l6ZSBvZiBEYXRhIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBU UlVFICAgU0hBLTEgZGF0YSBkaWdlc3Qgc3VjY2VlZGVkLg0KPiA+ICsgIEByZXR2YWwgRkFMU0Ug IFNIQS0xIGRhdGEgZGlnZXN0IGZhaWxlZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtCT09MRUFO DQo+ID4gK0VGSUFQSQ0KPiA+ICtTaGExVXBkYXRlICgNCj4gPiArICBJTiBPVVQgIFZPSUQgICAg ICAgICpTaGExQ29udGV4dCwNCj4gPiArICBJTiAgICAgIENPTlNUIFZPSUQgICpEYXRhLA0KPiA+ ICsgIElOICAgICAgVUlOVE4gICAgICAgRGF0YVNpemUNCj4gPiArICApDQo+ID4gK3sNCj4gPiAr ICBBU1NFUlQgKEZBTFNFKTsNCj4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgIENvbXBsZXRlcyBjb21wdXRhdGlvbiBvZiB0aGUgU0hBLTEgZGlnZXN0 IHZhbHVlLg0KPiA+ICsNCj4gPiArICBUaGlzIGZ1bmN0aW9uIGNvbXBsZXRlcyBTSEEtMSBoYXNo IGNvbXB1dGF0aW9uIGFuZCByZXRyaWV2ZXMgdGhlDQo+ID4gKyBkaWdlc3QgdmFsdWUgaW50byAg dGhlIHNwZWNpZmllZCBtZW1vcnkuIEFmdGVyIHRoaXMgZnVuY3Rpb24gaGFzDQo+ID4gKyBiZWVu IGNhbGxlZCwgdGhlIFNIQS0xIGNvbnRleHQgY2Fubm90ICBiZSB1c2VkIGFnYWluLg0KPiA+ICsg IFNIQS0xIGNvbnRleHQgc2hvdWxkIGJlIGFscmVhZHkgY29ycmVjdGx5IGluaXRpYWxpemVkIGJ5 DQo+ID4gKyBTaGExSW5pdCgpLCBhbmQgc2hvdWxkIG5vdCBiZSAgZmluYWxpemVkIGJ5IFNoYTFG aW5hbCgpLiBCZWhhdmlvciB3aXRoDQo+IGludmFsaWQgU0hBLTEgY29udGV4dCBpcyB1bmRlZmlu ZWQuDQo+ID4gKw0KPiA+ICsgIElmIFNoYTFDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZB TFNFLg0KPiA+ICsgIElmIEhhc2hWYWx1ZSBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4g PiArDQo+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBTaGExQ29udGV4dCAgUG9pbnRlciB0byB0aGUg U0hBLTEgY29udGV4dC4NCj4gPiArICBAcGFyYW1bb3V0XSAgICAgIEhhc2hWYWx1ZSAgICBQb2lu dGVyIHRvIGEgYnVmZmVyIHRoYXQgcmVjZWl2ZXMgdGhlIFNIQS0xDQo+IGRpZ2VzdA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlICgyMCBieXRlcykuDQo+ID4gKw0K PiA+ICsgIEByZXR2YWwgVFJVRSAgIFNIQS0xIGRpZ2VzdCBjb21wdXRhdGlvbiBzdWNjZWVkZWQu DQo+ID4gKyAgQHJldHZhbCBGQUxTRSAgU0hBLTEgZGlnZXN0IGNvbXB1dGF0aW9uIGZhaWxlZC4N Cj4gPiArDQo+ID4gKyoqLw0KPiA+ICtCT09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ICtTaGExRmlu YWwgKA0KPiA+ICsgIElOIE9VVCAgVk9JRCAgICpTaGExQ29udGV4dCwNCj4gPiArICBPVVQgICAg IFVJTlQ4ICAqSGFzaFZhbHVlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgQVNTRVJUIChGQUxT RSk7DQo+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBDb21wdXRlcyB0aGUgU0hBLTEgbWVzc2FnZSBkaWdlc3Qgb2YgYSBpbnB1dCBkYXRhIGJ1ZmZl ci4NCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgU0hBLTEgbWVzc2Fn ZSBkaWdlc3Qgb2YgYSBnaXZlbiBkYXRhDQo+ID4gKyBidWZmZXIsIGFuZCBwbGFjZXMgIHRoZSBk aWdlc3QgdmFsdWUgaW50byB0aGUgc3BlY2lmaWVkIG1lbW9yeS4NCj4gPiArDQo+ID4gKyAgSWYg dGhpcyBpbnRlcmZhY2UgaXMgbm90IHN1cHBvcnRlZCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4g Kw0KPiA+ICsgIEBwYXJhbVtpbl0gICBEYXRhICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIg Y29udGFpbmluZyB0aGUgZGF0YSB0byBiZQ0KPiBoYXNoZWQuDQo+ID4gKyAgQHBhcmFtW2luXSAg IERhdGFTaXplICAgIFNpemUgb2YgRGF0YSBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gKyAgQHBhcmFt W291dF0gIEhhc2hWYWx1ZSAgIFBvaW50ZXIgdG8gYSBidWZmZXIgdGhhdCByZWNlaXZlcyB0aGUg U0hBLTENCj4gZGlnZXN0DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlICgy MCBieXRlcykuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgVFJVRSAgIFNIQS0xIGRpZ2VzdCBjb21w dXRhdGlvbiBzdWNjZWVkZWQuDQo+ID4gKyAgQHJldHZhbCBGQUxTRSAgU0hBLTEgZGlnZXN0IGNv bXB1dGF0aW9uIGZhaWxlZC4NCj4gPiArICBAcmV0dmFsIEZBTFNFICBUaGlzIGludGVyZmFjZSBp cyBub3Qgc3VwcG9ydGVkLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0JPT0xFQU4NCj4gPiArRUZJ QVBJDQo+ID4gK1NoYTFIYXNoQWxsICgNCj4gPiArICBJTiAgIENPTlNUIFZPSUQgICpEYXRhLA0K PiA+ICsgIElOICAgVUlOVE4gICAgICAgRGF0YVNpemUsDQo+ID4gKyAgT1VUICBVSU5UOCAgICAg ICAqSGFzaFZhbHVlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9M aWJyYXJ5L0Jhc2VDcnlwdExpYi9IYXNoL0NyeXB0U2hhMjU2TnVsbC5jDQo+ID4gYi9DcnlwdG9Q a2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvSGFzaC9DcnlwdFNoYTI1Nk51bGwuYw0KPiA+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5jZjk5NGU4ZTA2NjQNCj4g PiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGli L0hhc2gvQ3J5cHRTaGEyNTZOdWxsLmMNCj4gPiBAQCAtMCwwICsxLDE2MiBAQA0KPiA+ICsvKiog QGZpbGUNCj4gPiArICBTSEEtMjU2IERpZ2VzdCBXcmFwcGVyIE51bGwgSW1wbGVtZW50YXRpb24u DQo+ID4gKw0KPiA+ICtDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE2LCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cw0KPiA+ICtyZXNlcnZlZC48QlI+DQo+ID4gK1NQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ID4g KyNpbmNsdWRlICJJbnRlcm5hbENyeXB0TGliLmgiDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBS ZXRyaWV2ZXMgdGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgY29udGV4dCBidWZmZXIgcmVxdWly ZWQgZm9yIFNIQS0yNTYNCj4gaGFzaCBvcGVyYXRpb25zLg0KPiA+ICsNCj4gPiArICBAcmV0dXJu ICBUaGUgc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBjb250ZXh0IGJ1ZmZlciByZXF1aXJlZCBmb3Ig U0hBLTI1Ng0KPiBoYXNoIG9wZXJhdGlvbnMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4N Cj4gPiArRUZJQVBJDQo+ID4gK1NoYTI1NkdldENvbnRleHRTaXplICgNCj4gPiArICBWT0lEDQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gKyAgcmV0dXJuIDA7 DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEluaXRpYWxpemVzIHVzZXItc3VwcGxp ZWQgbWVtb3J5IHBvaW50ZWQgYnkgU2hhMjU2Q29udGV4dCBhcw0KPiA+ICtTSEEtMjU2IGhhc2gg Y29udGV4dCBmb3INCj4gPiArICBzdWJzZXF1ZW50IHVzZS4NCj4gPiArDQo+ID4gKyAgSWYgU2hh MjU2Q29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiArDQo+ID4gKyAgQHBh cmFtW291dF0gIFNoYTI1NkNvbnRleHQgIFBvaW50ZXIgdG8gU0hBLTI1NiBjb250ZXh0IGJlaW5n DQo+IGluaXRpYWxpemVkLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIFRSVUUgICBTSEEtMjU2IGNv bnRleHQgaW5pdGlhbGl6YXRpb24gc3VjY2VlZGVkLg0KPiA+ICsgIEByZXR2YWwgRkFMU0UgIFNI QS0yNTYgY29udGV4dCBpbml0aWFsaXphdGlvbiBmYWlsZWQuDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArQk9PTEVBTg0KPiA+ICtFRklBUEkNCj4gPiArU2hhMjU2SW5pdCAoDQo+ID4gKyAgT1VUICBW T0lEICAqU2hhMjU2Q29udGV4dA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEFTU0VSVCAoRkFM U0UpOw0KPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAgTWFrZXMgYSBjb3B5IG9mIGFuIGV4aXN0aW5nIFNIQS0yNTYgY29udGV4dC4NCj4gPiArDQo+ ID4gKyAgSWYgU2hhMjU2Q29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiAr ICBJZiBOZXdTaGEyNTZDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ICsN Cj4gPiArICBAcGFyYW1baW5dICBTaGEyNTZDb250ZXh0ICAgICBQb2ludGVyIHRvIFNIQS0yNTYg Y29udGV4dCBiZWluZyBjb3BpZWQuDQo+ID4gKyAgQHBhcmFtW291dF0gTmV3U2hhMjU2Q29udGV4 dCAgUG9pbnRlciB0byBuZXcgU0hBLTI1NiBjb250ZXh0Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFs IFRSVUUgICBTSEEtMjU2IGNvbnRleHQgY29weSBzdWNjZWVkZWQuDQo+ID4gKyAgQHJldHZhbCBG QUxTRSAgU0hBLTI1NiBjb250ZXh0IGNvcHkgZmFpbGVkLg0KPiA+ICsNCj4gPiArKiovDQo+ID4g K0JPT0xFQU4NCj4gPiArRUZJQVBJDQo+ID4gK1NoYTI1NkR1cGxpY2F0ZSAoDQo+ID4gKyAgSU4g ICBDT05TVCBWT0lEICAqU2hhMjU2Q29udGV4dCwNCj4gPiArICBPVVQgIFZPSUQgICAgICAgICpO ZXdTaGEyNTZDb250ZXh0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgQVNTRVJUIChGQUxTRSk7 DQo+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBE aWdlc3RzIHRoZSBpbnB1dCBkYXRhIGFuZCB1cGRhdGVzIFNIQS0yNTYgY29udGV4dC4NCj4gPiAr DQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyBTSEEtMjU2IGRpZ2VzdCBvbiBhIGRhdGEg YnVmZmVyIG9mIHRoZSBzcGVjaWZpZWQNCj4gc2l6ZS4NCj4gPiArICBJdCBjYW4gYmUgY2FsbGVk IG11bHRpcGxlIHRpbWVzIHRvIGNvbXB1dGUgdGhlIGRpZ2VzdCBvZiBsb25nIG9yDQo+IGRpc2Nv bnRpbnVvdXMgZGF0YSBzdHJlYW1zLg0KPiA+ICsgIFNIQS0yNTYgY29udGV4dCBzaG91bGQgYmUg YWxyZWFkeSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgYnkNCj4gPiArIFNoYTI1NkluaXQoKSwgYW5k IHNob3VsZCBub3QgYmUgZmluYWxpemVkICBieSBTaGEyNTZGaW5hbCgpLiBCZWhhdmlvciB3aXRo DQo+IGludmFsaWQgY29udGV4dCBpcyB1bmRlZmluZWQuDQo+ID4gKw0KPiA+ICsgIElmIFNoYTI1 NkNvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gKw0KPiA+ICsgIEBwYXJh bVtpbiwgb3V0XSAgU2hhMjU2Q29udGV4dCAgUG9pbnRlciB0byB0aGUgU0hBLTI1NiBjb250ZXh0 Lg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgRGF0YSAgICAgICAgICAgUG9pbnRlciB0byB0aGUg YnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gYmUNCj4gaGFzaGVkLg0KPiA+ICsgIEBwYXJh bVtpbl0gICAgICAgRGF0YVNpemUgICAgICAgU2l6ZSBvZiBEYXRhIGJ1ZmZlciBpbiBieXRlcy4N Cj4gPiArDQo+ID4gKyAgQHJldHZhbCBUUlVFICAgU0hBLTI1NiBkYXRhIGRpZ2VzdCBzdWNjZWVk ZWQuDQo+ID4gKyAgQHJldHZhbCBGQUxTRSAgU0hBLTI1NiBkYXRhIGRpZ2VzdCBmYWlsZWQuDQo+ ID4gKw0KPiA+ICsqKi8NCj4gPiArQk9PTEVBTg0KPiA+ICtFRklBUEkNCj4gPiArU2hhMjU2VXBk YXRlICgNCj4gPiArICBJTiBPVVQgIFZPSUQgICAgICAgICpTaGEyNTZDb250ZXh0LA0KPiA+ICsg IElOICAgICAgQ09OU1QgVk9JRCAgKkRhdGEsDQo+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICBE YXRhU2l6ZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ICsg IHJldHVybiBGQUxTRTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgQ29tcGxldGVz IGNvbXB1dGF0aW9uIG9mIHRoZSBTSEEtMjU2IGRpZ2VzdCB2YWx1ZS4NCj4gPiArDQo+ID4gKyAg VGhpcyBmdW5jdGlvbiBjb21wbGV0ZXMgU0hBLTI1NiBoYXNoIGNvbXB1dGF0aW9uIGFuZCByZXRy aWV2ZXMgdGhlDQo+ID4gKyBkaWdlc3QgdmFsdWUgaW50byAgdGhlIHNwZWNpZmllZCBtZW1vcnku IEFmdGVyIHRoaXMgZnVuY3Rpb24gaGFzDQo+ID4gKyBiZWVuIGNhbGxlZCwgdGhlIFNIQS0yNTYg Y29udGV4dCBjYW5ub3QgIGJlIHVzZWQgYWdhaW4uDQo+ID4gKyAgU0hBLTI1NiBjb250ZXh0IHNo b3VsZCBiZSBhbHJlYWR5IGNvcnJlY3RseSBpbml0aWFsaXplZCBieQ0KPiA+ICsgU2hhMjU2SW5p dCgpLCBhbmQgc2hvdWxkIG5vdCBiZSAgZmluYWxpemVkIGJ5IFNoYTI1NkZpbmFsKCkuIEJlaGF2 aW9yIHdpdGgNCj4gaW52YWxpZCBTSEEtMjU2IGNvbnRleHQgaXMgdW5kZWZpbmVkLg0KPiA+ICsN Cj4gPiArICBJZiBTaGEyNTZDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ ICsgIElmIEhhc2hWYWx1ZSBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiArDQo+ID4g KyAgQHBhcmFtW2luLCBvdXRdICBTaGEyNTZDb250ZXh0ICBQb2ludGVyIHRvIHRoZSBTSEEtMjU2 IGNvbnRleHQuDQo+ID4gKyAgQHBhcmFtW291dF0gICAgICBIYXNoVmFsdWUgICAgICBQb2ludGVy IHRvIGEgYnVmZmVyIHRoYXQgcmVjZWl2ZXMgdGhlIFNIQS0NCj4gMjU2IGRpZ2VzdA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgKDMyIGJ5dGVzKS4NCj4gPiAr DQo+ID4gKyAgQHJldHZhbCBUUlVFICAgU0hBLTI1NiBkaWdlc3QgY29tcHV0YXRpb24gc3VjY2Vl ZGVkLg0KPiA+ICsgIEByZXR2YWwgRkFMU0UgIFNIQS0yNTYgZGlnZXN0IGNvbXB1dGF0aW9uIGZh aWxlZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtCT09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ICtT aGEyNTZGaW5hbCAoDQo+ID4gKyAgSU4gT1VUICBWT0lEICAgKlNoYTI1NkNvbnRleHQsDQo+ID4g KyAgT1VUICAgICBVSU5UOCAgKkhhc2hWYWx1ZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEFT U0VSVCAoRkFMU0UpOw0KPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgQ29tcHV0ZXMgdGhlIFNIQS0yNTYgbWVzc2FnZSBkaWdlc3Qgb2YgYSBpbnB1 dCBkYXRhIGJ1ZmZlci4NCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUg U0hBLTI1NiBtZXNzYWdlIGRpZ2VzdCBvZiBhIGdpdmVuIGRhdGENCj4gPiArIGJ1ZmZlciwgYW5k IHBsYWNlcyAgdGhlIGRpZ2VzdCB2YWx1ZSBpbnRvIHRoZSBzcGVjaWZpZWQgbWVtb3J5Lg0KPiA+ ICsNCj4gPiArICBJZiB0aGlzIGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLCB0aGVuIHJldHVy biBGQUxTRS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgIERhdGEgICAgICAgIFBvaW50ZXIg dG8gdGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkYXRhIHRvIGJlDQo+IGhhc2hlZC4NCj4gPiAr ICBAcGFyYW1baW5dICAgRGF0YVNpemUgICAgU2l6ZSBvZiBEYXRhIGJ1ZmZlciBpbiBieXRlcy4N Cj4gPiArICBAcGFyYW1bb3V0XSAgSGFzaFZhbHVlICAgUG9pbnRlciB0byBhIGJ1ZmZlciB0aGF0 IHJlY2VpdmVzIHRoZSBTSEEtMjU2DQo+IGRpZ2VzdA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICB2YWx1ZSAoMzIgYnl0ZXMpLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIFRSVUUgICBT SEEtMjU2IGRpZ2VzdCBjb21wdXRhdGlvbiBzdWNjZWVkZWQuDQo+ID4gKyAgQHJldHZhbCBGQUxT RSAgU0hBLTI1NiBkaWdlc3QgY29tcHV0YXRpb24gZmFpbGVkLg0KPiA+ICsgIEByZXR2YWwgRkFM U0UgIFRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArQk9PTEVBTg0KPiA+ICtFRklBUEkNCj4gPiArU2hhMjU2SGFzaEFsbCAoDQo+ID4gKyAgSU4g ICBDT05TVCBWT0lEICAqRGF0YSwNCj4gPiArICBJTiAgIFVJTlROICAgICAgIERhdGFTaXplLA0K PiA+ICsgIE9VVCAgVUlOVDggICAgICAgKkhhc2hWYWx1ZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiArfQ0KPiA+IGRp ZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvSGFzaC9DcnlwdFNtM051 bGwuYw0KPiA+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRTbTNO dWxsLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4u MGYzYzg5YjQ2NTE3DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL0NyeXB0b1BrZy9MaWJy YXJ5L0Jhc2VDcnlwdExpYi9IYXNoL0NyeXB0U20zTnVsbC5jDQo+ID4gQEAgLTAsMCArMSwxNjQg QEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgU00zIERpZ2VzdCBXcmFwcGVyIE51bGwgSW1wbGVt ZW50YXRpb24uDQo+ID4gKw0KPiA+ICtDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lu Y2x1ZGUgIkludGVybmFsQ3J5cHRMaWIuaCINCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJldHJp ZXZlcyB0aGUgc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBjb250ZXh0IGJ1ZmZlciByZXF1aXJlZCBm b3IgU00zIGhhc2gNCj4gb3BlcmF0aW9ucy4NCj4gPiArDQo+ID4gKyAgQHJldHVybiAgVGhlIHNp emUsIGluIGJ5dGVzLCBvZiB0aGUgY29udGV4dCBidWZmZXIgcmVxdWlyZWQgZm9yIFNNMyBoYXNo DQo+IG9wZXJhdGlvbnMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJ DQo+ID4gK1NtM0dldENvbnRleHRTaXplICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7 DQo+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gKyAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgIEluaXRpYWxpemVzIHVzZXItc3VwcGxpZWQgbWVtb3J5IHBvaW50 ZWQgYnkgU20zQ29udGV4dCBhcyBTTTMgaGFzaA0KPiA+ICtjb250ZXh0IGZvcg0KPiA+ICsgIHN1 YnNlcXVlbnQgdXNlLg0KPiA+ICsNCj4gPiArICBJZiBTbTNDb250ZXh0IGlzIE5VTEwsIHRoZW4g cmV0dXJuIEZBTFNFLg0KPiA+ICsNCj4gPiArICBAcGFyYW1bb3V0XSAgU20zQ29udGV4dCAgUG9p bnRlciB0byBTTTMgY29udGV4dCBiZWluZyBpbml0aWFsaXplZC4NCj4gPiArDQo+ID4gKyAgQHJl dHZhbCBUUlVFICAgU00zIGNvbnRleHQgaW5pdGlhbGl6YXRpb24gc3VjY2VlZGVkLg0KPiA+ICsg IEByZXR2YWwgRkFMU0UgIFNNMyBjb250ZXh0IGluaXRpYWxpemF0aW9uIGZhaWxlZC4NCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICtCT09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ICtTbTNJbml0ICgNCj4g PiArICBPVVQgIFZPSUQgICpTbTNDb250ZXh0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgQVNT RVJUIChGQUxTRSk7DQo+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICBNYWtlcyBhIGNvcHkgb2YgYW4gZXhpc3RpbmcgU00zIGNvbnRleHQuDQo+ID4g Kw0KPiA+ICsgIElmIFNtM0NvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4g KyAgSWYgTmV3U20zQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiArICBJ ZiB0aGlzIGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLCB0aGVuIHJldHVybiBGQUxTRS4NCj4g PiArDQo+ID4gKyAgQHBhcmFtW2luXSAgU20zQ29udGV4dCAgICAgUG9pbnRlciB0byBTTTMgY29u dGV4dCBiZWluZyBjb3BpZWQuDQo+ID4gKyAgQHBhcmFtW291dF0gTmV3U20zQ29udGV4dCAgUG9p bnRlciB0byBuZXcgU00zIGNvbnRleHQuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgVFJVRSAgIFNN MyBjb250ZXh0IGNvcHkgc3VjY2VlZGVkLg0KPiA+ICsgIEByZXR2YWwgRkFMU0UgIFNNMyBjb250 ZXh0IGNvcHkgZmFpbGVkLg0KPiA+ICsgIEByZXR2YWwgRkFMU0UgIFRoaXMgaW50ZXJmYWNlIGlz IG5vdCBzdXBwb3J0ZWQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArQk9PTEVBTg0KPiA+ICtFRklB UEkNCj4gPiArU20zRHVwbGljYXRlICgNCj4gPiArICBJTiAgIENPTlNUIFZPSUQgICpTbTNDb250 ZXh0LA0KPiA+ICsgIE9VVCAgVk9JRCAgICAgICAgKk5ld1NtM0NvbnRleHQNCj4gPiArICApDQo+ ID4gK3sNCj4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4g K30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIERpZ2VzdHMgdGhlIGlucHV0IGRhdGEgYW5kIHVw ZGF0ZXMgU00zIGNvbnRleHQuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMg U00zIGRpZ2VzdCBvbiBhIGRhdGEgYnVmZmVyIG9mIHRoZSBzcGVjaWZpZWQgc2l6ZS4NCj4gPiAr ICBJdCBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGNvbXB1dGUgdGhlIGRpZ2VzdCBv ZiBsb25nIG9yDQo+IGRpc2NvbnRpbnVvdXMgZGF0YSBzdHJlYW1zLg0KPiA+ICsgIFNNMyBjb250 ZXh0IHNob3VsZCBiZSBhbHJlYWR5IGNvcnJlY3RseSBpbml0aWFsaXplZCBieSBTbTNJbml0KCks DQo+ID4gKyBhbmQgc2hvdWxkIG5vdCBiZSBmaW5hbGl6ZWQgIGJ5IFNtM0ZpbmFsKCkuIEJlaGF2 aW9yIHdpdGggaW52YWxpZCBjb250ZXh0DQo+IGlzIHVuZGVmaW5lZC4NCj4gPiArDQo+ID4gKyAg SWYgU20zQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiArDQo+ID4gKyAg QHBhcmFtW2luLCBvdXRdICBTbTNDb250ZXh0ICAgICBQb2ludGVyIHRvIHRoZSBTTTMgY29udGV4 dC4NCj4gPiArICBAcGFyYW1baW5dICAgICAgIERhdGEgICAgICAgICAgIFBvaW50ZXIgdG8gdGhl IGJ1ZmZlciBjb250YWluaW5nIHRoZSBkYXRhIHRvIGJlDQo+IGhhc2hlZC4NCj4gPiArICBAcGFy YW1baW5dICAgICAgIERhdGFTaXplICAgICAgIFNpemUgb2YgRGF0YSBidWZmZXIgaW4gYnl0ZXMu DQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgVFJVRSAgIFNNMyBkYXRhIGRpZ2VzdCBzdWNjZWVkZWQu DQo+ID4gKyAgQHJldHZhbCBGQUxTRSAgU00zIGRhdGEgZGlnZXN0IGZhaWxlZC4NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICtCT09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ICtTbTNVcGRhdGUgKA0KPiA+ ICsgIElOIE9VVCAgVk9JRCAgICAgICAgKlNtM0NvbnRleHQsDQo+ID4gKyAgSU4gICAgICBDT05T VCBWT0lEICAqRGF0YSwNCj4gPiArICBJTiAgICAgIFVJTlROICAgICAgIERhdGFTaXplDQo+ID4g KyAgKQ0KPiA+ICt7DQo+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gKyAgcmV0dXJuIEZBTFNF Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBDb21wbGV0ZXMgY29tcHV0YXRpb24g b2YgdGhlIFNNMyBkaWdlc3QgdmFsdWUuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gY29t cGxldGVzIFNNMyBoYXNoIGNvbXB1dGF0aW9uIGFuZCByZXRyaWV2ZXMgdGhlDQo+ID4gKyBkaWdl c3QgdmFsdWUgaW50byAgdGhlIHNwZWNpZmllZCBtZW1vcnkuIEFmdGVyIHRoaXMgZnVuY3Rpb24g aGFzDQo+ID4gKyBiZWVuIGNhbGxlZCwgdGhlIFNNMyBjb250ZXh0IGNhbm5vdCAgYmUgdXNlZCBh Z2Fpbi4NCj4gPiArICBTTTMgY29udGV4dCBzaG91bGQgYmUgYWxyZWFkeSBjb3JyZWN0bHkgaW5p dGlhbGl6ZWQgYnkgU20zSW5pdCgpLA0KPiA+ICsgYW5kIHNob3VsZCBub3QgYmUgIGZpbmFsaXpl ZCBieSBTbTNGaW5hbCgpLiBCZWhhdmlvciB3aXRoIGludmFsaWQgU00zDQo+IGNvbnRleHQgaXMg dW5kZWZpbmVkLg0KPiA+ICsNCj4gPiArICBJZiBTbTNDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0 dXJuIEZBTFNFLg0KPiA+ICsgIElmIEhhc2hWYWx1ZSBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxT RS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBTbTNDb250ZXh0ICAgICBQb2ludGVy IHRvIHRoZSBTTTMgY29udGV4dC4NCj4gPiArICBAcGFyYW1bb3V0XSAgICAgIEhhc2hWYWx1ZSAg ICAgIFBvaW50ZXIgdG8gYSBidWZmZXIgdGhhdCByZWNlaXZlcyB0aGUgU00zDQo+IGRpZ2VzdA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgKDMyIGJ5dGVzKS4N Cj4gPiArDQo+ID4gKyAgQHJldHZhbCBUUlVFICAgU00zIGRpZ2VzdCBjb21wdXRhdGlvbiBzdWNj ZWVkZWQuDQo+ID4gKyAgQHJldHZhbCBGQUxTRSAgU00zIGRpZ2VzdCBjb21wdXRhdGlvbiBmYWls ZWQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArQk9PTEVBTg0KPiA+ICtFRklBUEkNCj4gPiArU20z RmluYWwgKA0KPiA+ICsgIElOIE9VVCAgVk9JRCAgICpTbTNDb250ZXh0LA0KPiA+ICsgIE9VVCAg ICAgVUlOVDggICpIYXNoVmFsdWUNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBBU1NFUlQgKEZB TFNFKTsNCj4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgIENvbXB1dGVzIHRoZSBTTTMgbWVzc2FnZSBkaWdlc3Qgb2YgYSBpbnB1dCBkYXRhIGJ1ZmZl ci4NCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgU00zIG1lc3NhZ2Ug ZGlnZXN0IG9mIGEgZ2l2ZW4gZGF0YQ0KPiA+ICsgYnVmZmVyLCBhbmQgcGxhY2VzICB0aGUgZGln ZXN0IHZhbHVlIGludG8gdGhlIHNwZWNpZmllZCBtZW1vcnkuDQo+ID4gKw0KPiA+ICsgIElmIHRo aXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ICsN Cj4gPiArICBAcGFyYW1baW5dICAgRGF0YSAgICAgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIGNv bnRhaW5pbmcgdGhlIGRhdGEgdG8gYmUNCj4gaGFzaGVkLg0KPiA+ICsgIEBwYXJhbVtpbl0gICBE YXRhU2l6ZSAgICBTaXplIG9mIERhdGEgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ICsgIEBwYXJhbVtv dXRdICBIYXNoVmFsdWUgICBQb2ludGVyIHRvIGEgYnVmZmVyIHRoYXQgcmVjZWl2ZXMgdGhlIFNN Mw0KPiBkaWdlc3QNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgKDMyIGJ5 dGVzKS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBUUlVFICAgU00zIGRpZ2VzdCBjb21wdXRhdGlv biBzdWNjZWVkZWQuDQo+ID4gKyAgQHJldHZhbCBGQUxTRSAgU00zIGRpZ2VzdCBjb21wdXRhdGlv biBmYWlsZWQuDQo+ID4gKyAgQHJldHZhbCBGQUxTRSAgVGhpcyBpbnRlcmZhY2UgaXMgbm90IHN1 cHBvcnRlZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtCT09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ ICtTbTNIYXNoQWxsICgNCj4gPiArICBJTiAgIENPTlNUIFZPSUQgICpEYXRhLA0KPiA+ICsgIElO ICAgVUlOVE4gICAgICAgRGF0YVNpemUsDQo+ID4gKyAgT1VUICBVSU5UOCAgICAgICAqSGFzaFZh bHVlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gKyAgcmV0 dXJuIEZBTFNFOw0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdA0KPiA+IGEvQ3J5cHRvUGtnL0xpYnJh cnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0UGtjczdWZXJpZnlFa3VOdWxsLmMNCj4gPiBiL0NyeXB0 b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdFBrY3M3VmVyaWZ5RWt1TnVsbC5jDQo+ ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmMxZDk4Mzdj NTEyOQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNl Q3J5cHRMaWIvUGsvQ3J5cHRQa2NzN1ZlcmlmeUVrdU51bGwuYw0KPiA+IEBAIC0wLDAgKzEsMTUy IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFBLQ1M3IFZlcmlmeSBOdWxsIGltcGxlbWVudGF0 aW9uLg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKEMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4g QWxsIFJpZ2h0cyBSZXNlcnZlZC4NCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArDQo+ID4gKyAgU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0K PiA+ICsNCj4gPiArI2luY2x1ZGUgIkludGVybmFsQ3J5cHRMaWIuaCINCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIGxlYWYgc2lnbmVyIGNlcnRp ZmljYXRlIGluIGEgY2hhaW4uDQo+ID4gK1RoaXMgaXMNCj4gPiArICByZXF1aXJlZCBiZWNhdXNl IGNlcnRpZmljYXRlIGNoYWlucyBhcmUgbm90IGd1YXJhbnRlZWQgdG8gaGF2ZSB0aGUNCj4gPiAr ICBjZXJ0aWZpY2F0ZXMgaW4gdGhlIG9yZGVyIHRoYXQgdGhleSB3ZXJlIGlzc3VlZC4NCj4gPiAr DQo+ID4gKyAgQSB0eXBpY2FsIGNlcnRpZmljYXRlIGNoYWluIGxvb2tzIGxpa2UgdGhpczoNCj4g PiArDQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCj4gPiArICAgICAgICAgICAgICAgIHwgICAgICAgICAgICBSb290ICAgICAgICAgICAg fA0KPiA+ICsgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwNCj4gPiArICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQo+ID4gKyAgICAgICAgICAgICAgICB8ICAgICAgICAgIFBvbGljeSBDQSAg ICAgICAgIHwgPC0tIFR5cGljYWwgVHJ1c3QgQW5jaG9yLg0KPiA+ICsgICAgICAgICAgICAgICAg IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gPiAr ICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gKyAgICAg ICAgICAgICAgICB8ICAgICAgICAgSXNzdWluZyBDQSAgICAgICAgIHwNCj4gPiArICAgICAgICAg ICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 DQo+ID4gKyAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4g PiArICAgICAgICAgICAgICAgIC8gIEVuZC1FbnRpdHkgKGxlYWYpIHNpZ25lciAgLyA8LS0gQm90 dG9tIGNlcnRpZmljYXRlLg0KPiA+ICsgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gIEVLVTogIjEuMy42LjEuNC4xLjMxMS43Ni45LjIxLjEiDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRmlybXdhcmUN Cj4gPiArIFNpZ25pbmcpDQo+ID4gKw0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICAgQ2VydENo YWluICAgICAgICAgICAgQ2VydGlmaWNhdGUgY2hhaW4uDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtv dXRdICBTaWduZXJDZXJ0ICAgICAgICAgICBMYXN0IGNlcnRpZmljYXRlIGluIHRoZSBjaGFpbi4g IEZvciBQS0NTNw0KPiBzaWduYXR1cmVzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aGlzIHdpbGwgYmUgdGhlIGVuZC1lbnRpdHkgKGxlYWYpIHNpZ25lciBjZXJ0 Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICAgVGhlIHJl cXVpcmVkIEVLVXMgd2VyZSBmb3VuZCBpbiB0aGUNCj4gc2lnbmF0dXJlLg0KPiA+ICsgIEByZXR2 YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgICBBIHBhcmFtZXRlciB3YXMgaW52YWxpZC4NCj4g PiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICAgICAgVGhlIG51bWJlciBvZiBzaWdu ZXJzIGZvdW5kIHdhcyBub3QgMS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ ID4gK0dldFNpZ25lckNlcnRpZmljYXRlICgNCj4gPiArICBJTiBDT05TVCBWT0lEICAqQ2VydENo YWluLA0KPiA+ICsgIE9VVCBWT0lEICAgICAgICoqU2lnbmVyQ2VydA0KPiA+ICsgICkNCj4gPiAr ew0KPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ICsgIHJldHVybiBFRklfTk9UX1JFQURZOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBEZXRlcm1pbmVzIGlmIHRoZSBzcGVjaWZp ZWQgRUtVIHJlcHJlc2VudGVkIGluIEFTTjEgZm9ybSBpcyBwcmVzZW50DQo+ID4gKyAgaW4gYSBn aXZlbiBjZXJ0aWZpY2F0ZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgQ2VydCAgICAgICAg ICAgICAgICAgIFRoZSBjZXJ0aWZpY2F0ZSB0byBjaGVjay4NCj4gPiArDQo+ID4gKyAgQHBhcmFt W2luXSAgQXNuMVRvRmluZCAgICAgICAgICAgIFRoZSBFS1UgdG8gbG9vayBmb3IuDQo+ID4gKw0K PiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgICBXZSBzdWNjZXNzZnVsbHkg aWRlbnRpZmllZCB0aGUgc2lnbmluZyB0eXBlLg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURf UEFSQU1FVEVSICAgICBBIHBhcmFtZXRlciB3YXMgaW52YWxpZC4NCj4gPiArICBAcmV0dmFsIEVG SV9OT1RfRk9VTkQgICAgICAgICAgICAgT25lIG9yIG1vcmUgRUtVJ3Mgd2VyZSBub3QgZm91bmQg aW4NCj4gdGhlIHNpZ25hdHVyZS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ ID4gK0lzRWt1SW5DZXJ0aWZpY2F0ZSAoDQo+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkNlcnQsDQo+ ID4gKyAgSU4gVk9JRCAgICAgICAgKkFzbjFUb0ZpbmQNCj4gPiArICApDQo+ID4gK3sNCj4gPiAr ICBBU1NFUlQgKEZBTFNFKTsNCj4gPiArICByZXR1cm4gRUZJX05PVF9SRUFEWTsNCj4gPiArfQ0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRGV0ZXJtaW5lcyBpZiB0aGUgc3BlY2lmaWVkIEVLVXMg YXJlIHByZXNlbnQgaW4gYSBzaWduaW5nIGNlcnRpZmljYXRlLg0KPiA+ICsNCj4gPiArICBAcGFy YW1baW5dICBTaWduZXJDZXJ0ICAgICAgICAgICAgVGhlIGNlcnRpZmljYXRlIHRvIGNoZWNrLg0K PiA+ICsgIEBwYXJhbVtpbl0gIFJlcXVpcmVkRUtVcyAgICAgICAgICBUaGUgRUtVcyB0byBsb29r IGZvci4NCj4gPiArICBAcGFyYW1baW5dICBSZXF1aXJlZEVLVXNTaXplICAgICAgVGhlIG51bWJl ciBvZiBFS1VzDQo+ID4gKyAgQHBhcmFtW2luXSAgUmVxdWlyZUFsbFByZXNlbnQgICAgIElmIFRS VUUsIHRoZW4gYWxsIHRoZSBzcGVjaWZpZWQgRUtVcw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtdXN0IGJlIHByZXNlbnQgaW4gdGhlIGNlcnRpZmljYXRlLg0KPiA+ ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICAgV2Ugc3VjY2Vzc2Z1 bGx5IGlkZW50aWZpZWQgdGhlIHNpZ25pbmcgdHlwZS4NCj4gPiArICBAcmV0dmFsIEVGSV9JTlZB TElEX1BBUkFNRVRFUiAgICAgQSBwYXJhbWV0ZXIgd2FzIGludmFsaWQuDQo+ID4gKyAgQHJldHZh bCBFRklfTk9UX0ZPVU5EICAgICAgICAgICAgIE9uZSBvciBtb3JlIEVLVSdzIHdlcmUgbm90IGZv dW5kIGluDQo+IHRoZSBzaWduYXR1cmUuDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4g K0NoZWNrRUtVcyAoDQo+ID4gKyAgSU4gQ09OU1QgVk9JRCAgICAqU2lnbmVyQ2VydCwNCj4gPiAr ICBJTiBDT05TVCBDSEFSOCAgICpSZXF1aXJlZEVLVXNbXSwNCj4gPiArICBJTiBDT05TVCBVSU5U MzIgIFJlcXVpcmVkRUtVc1NpemUsDQo+ID4gKyAgSU4gQk9PTEVBTiAgICAgICBSZXF1aXJlQWxs UHJlc2VudA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ICsg IHJldHVybiBFRklfTk9UX1JFQURZOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBU aGlzIGZ1bmN0aW9uIHJlY2VpdmVzIGEgUEtDUyM3IGZvcm1hdHRlZCBzaWduYXR1cmUgYmxvYiwN Cj4gPiArICBsb29rcyBmb3IgdGhlIEVLVSBTRVFVRU5DRSBibG9iLCBhbmQgaWYgZm91bmQgdGhl biBsb29rcw0KPiA+ICsgIGZvciBhbGwgdGhlIHJlcXVpcmVkIEVLVXMuIFRoaXMgZnVuY3Rpb24g d2FzIGNyZWF0ZWQgc28gdGhhdA0KPiA+ICsgIHRoZSBTdXJmYWNlIHRlYW0gY2FuIGN1dCBkb3du IG9uIHRoZSBudW1iZXIgb2YgQ2VydGlmaWNhdGUNCj4gPiArICBBdXRob3JpdGllcyAoQ0Encykg YnkgY2hlY2tpbmcgRUtVJ3Mgb24gbGVhZiBzaWduZXJzIGZvcg0KPiA+ICsgIGEgc3BlY2lmaWMg cHJvZHVjdC4gVGhpcyBwcmV2ZW50cyBvbmUgcHJvZHVjdCdzIGNlcnRpZmljYXRlDQo+ID4gKyAg ZnJvbSBzaWduaW5nIGFub3RoZXIgcHJvZHVjdCdzIGZpcm13YXJlIG9yIHVubG9jayBibG9icy4N Cj4gPiArDQo+ID4gKyAgTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgdmFsaWRhdGUg dGhlIGNlcnRpZmljYXRlIGNoYWluLg0KPiA+ICsgIFRoYXQgbmVlZHMgdG8gYmUgZG9uZSBiZWZv cmUgdXNpbmcgdGhpcyBmdW5jdGlvbi4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgUGtjczdT aWduYXR1cmUgICAgICAgVGhlIFBLQ1MjNyBzaWduZWQgaW5mb3JtYXRpb24gY29udGVudA0KPiBi bG9jay4gQW4gYXJyYXkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b250YWluaW5nIHRoZSBjb250ZW50IGJsb2NrIHdpdGggYm90aCB0aGUgc2lnbmF0dXJlLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzaWduZXIncyBjZXJ0aWZp Y2F0ZSwgYW5kIGFueSBuZWNlc3NhcnkgaW50ZXJtZWRpYXRlDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGVzLg0KPiA+ICsgIEBwYXJhbVtpbl0gIFBr Y3M3U2lnbmF0dXJlU2l6ZSAgIE51bWJlciBvZiBieXRlcyBpbiBQa2NzN1NpZ25hdHVyZS4NCj4g PiArICBAcGFyYW1baW5dICBSZXF1aXJlZEVLVXMgICAgICAgICBBcnJheSBvZiBudWxsLXRlcm1p bmF0ZWQgc3RyaW5ncyBsaXN0aW5nDQo+IE9JRHMgb2YNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXF1aXJlZCBFS1VzIHRoYXQgbXVzdCBiZSBwcmVzZW50IGluIHRo ZSBzaWduYXR1cmUuDQo+ID4gKyAgQHBhcmFtW2luXSAgUmVxdWlyZWRFS1VzU2l6ZSAgICAgTnVt YmVyIG9mIGVsZW1lbnRzIGluIHRoZQ0KPiBSZXF1aXJlZEVLVXMgc3RyaW5nIGFycmF5Lg0KPiA+ ICsgIEBwYXJhbVtpbl0gIFJlcXVpcmVBbGxQcmVzZW50ICAgIElmIHRoaXMgaXMgVFJVRSwgdGhl biBhbGwgb2YgdGhlIHNwZWNpZmllZA0KPiBFS1Uncw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG11c3QgYmUgcHJlc2VudCBpbiB0aGUgbGVhZiBzaWduZXIuICBJZiBp dCBpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCB0aGVu IHdlIHdpbGwgc3VjY2VlZCBpZiB3ZSBmaW5kIGFueQ0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG9mIHRoZSBzcGVjaWZpZWQgRUtVJ3MuDQo+ID4gKw0KPiA+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgIFRoZSByZXF1aXJlZCBFS1VzIHdlcmUgZm91 bmQgaW4gdGhlDQo+IHNpZ25hdHVyZS4NCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFN RVRFUiAgICBBIHBhcmFtZXRlciB3YXMgaW52YWxpZC4NCj4gPiArICBAcmV0dmFsIEVGSV9OT1Rf Rk9VTkQgICAgICAgICAgICBPbmUgb3IgbW9yZSBFS1UncyB3ZXJlIG5vdCBmb3VuZCBpbiB0aGUN Cj4gc2lnbmF0dXJlLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJ QVBJDQo+ID4gK1ZlcmlmeUVLVXNJblBrY3M3U2lnbmF0dXJlICgNCj4gPiArICBJTiBDT05TVCBV SU5UOCAgICpQa2NzN1NpZ25hdHVyZSwNCj4gPiArICBJTiBDT05TVCBVSU5UMzIgIFNpZ25hdHVy ZVNpemUsDQo+ID4gKyAgSU4gQ09OU1QgQ0hBUjggICAqUmVxdWlyZWRFS1VzW10sDQo+ID4gKyAg SU4gQ09OU1QgVUlOVDMyICBSZXF1aXJlZEVLVXNTaXplLA0KPiA+ICsgIElOIEJPT0xFQU4gICAg ICAgUmVxdWlyZUFsbFByZXNlbnQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBBU1NFUlQgKEZB TFNFKTsNCj4gPiArICByZXR1cm4gRUZJX05PVF9SRUFEWTsNCj4gPiArfQ0KPiA+IGRpZmYgLS1n aXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRSc2FCYXNpY051bGwu Yw0KPiA+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0UnNhQmFzaWNO dWxsLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4u ZmQzNTJlMzJkZDkzDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL0NyeXB0b1BrZy9MaWJy YXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdFJzYUJhc2ljTnVsbC5jDQo+ID4gQEAgLTAsMCArMSwx MjEgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgUlNBIEFzeW1tZXRyaWMgQ2lwaGVyIFdyYXBw ZXIgTnVsbCBJbXBsZW1lbnRhdGlvbi4NCj4gPiArDQo+ID4gKyAgVGhpcyBmaWxlIGltcGxlbWVu dHMgZm9sbG93aW5nIEFQSXMgd2hpY2ggcHJvdmlkZSBiYXNpYyBjYXBhYmlsaXRpZXMgZm9yDQo+ IFJTQToNCj4gPiArICAxKSBSc2FOZXcNCj4gPiArICAyKSBSc2FGcmVlDQo+ID4gKyAgMykgUnNh U2V0S2V5DQo+ID4gKyAgNCkgUnNhUGtjczFWZXJpZnkNCj4gPiArDQo+ID4gK0NvcHlyaWdodCAo YykgMjAwOSAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gK3Jlc2Vy dmVkLjxCUj4NCj4gPiArU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIkludGVybmFsQ3J5cHRM aWIuaCINCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEFsbG9jYXRlcyBhbmQgaW5pdGlhbGl6ZXMg b25lIFJTQSBjb250ZXh0IGZvciBzdWJzZXF1ZW50IHVzZS4NCj4gPiArDQo+ID4gKyAgQHJldHVy biAgUG9pbnRlciB0byB0aGUgUlNBIGNvbnRleHQgdGhhdCBoYXMgYmVlbiBpbml0aWFsaXplZC4N Cj4gPiArICAgICAgICAgICBJZiB0aGUgYWxsb2NhdGlvbnMgZmFpbHMsIFJzYU5ldygpIHJldHVy bnMgTlVMTC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEICoNCj4gPiArRUZJQVBJDQo+ID4g K1JzYU5ldyAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIC8vDQo+ID4g KyAgLy8gQWxsb2NhdGVzICYgSW5pdGlhbGl6ZXMgUlNBIENvbnRleHQNCj4gPiArICAvLw0KPiA+ ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ICsgIHJldHVybiBOVUxMOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICBSZWxlYXNlIHRoZSBzcGVjaWZpZWQgUlNBIGNvbnRleHQuDQo+ID4g Kw0KPiA+ICsgIEBwYXJhbVtpbl0gIFJzYUNvbnRleHQgIFBvaW50ZXIgdG8gdGhlIFJTQSBjb250 ZXh0IHRvIGJlIHJlbGVhc2VkLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJ QVBJDQo+ID4gK1JzYUZyZWUgKA0KPiA+ICsgIElOICBWT0lEICAqUnNhQ29udGV4dA0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gRnJlZSBSU0EgQ29udGV4dA0KPiA+ICsg IC8vDQo+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgIFNldHMgdGhlIHRhZy1kZXNpZ25hdGVkIGtleSBjb21wb25lbnQgaW50byB0aGUgZXN0YWJs aXNoZWQgUlNBIGNvbnRleHQuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUg dGFnLWRlc2lnbmF0ZWQgUlNBIGtleSBjb21wb25lbnQgaW50byB0aGUNCj4gPiArIGVzdGFibGlz aGVkICBSU0EgY29udGV4dCBmcm9tIHRoZSB1c2VyLXNwZWNpZmllZCBub24tbmVnYXRpdmUNCj4g PiArIGludGVnZXIgKG9jdGV0IHN0cmluZyBmb3JtYXQgIHJlcHJlc2VudGVkIGluIFJTQSBQS0NT IzEpLg0KPiA+ICsgIElmIEJpZ051bWJlciBpcyBOVUxMLCB0aGVuIHRoZSBzcGVjaWZpZWQga2V5 IGNvbXBvbmVudCBpbiBSU0EgY29udGV4dA0KPiBpcyBjbGVhcmVkLg0KPiA+ICsNCj4gPiArICBJ ZiBSc2FDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ICsNCj4gPiArICBA cGFyYW1baW4sIG91dF0gIFJzYUNvbnRleHQgIFBvaW50ZXIgdG8gUlNBIGNvbnRleHQgYmVpbmcg c2V0Lg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgS2V5VGFnICAgICAgVGFnIG9mIFJTQSBrZXkg Y29tcG9uZW50IGJlaW5nIHNldC4NCj4gPiArICBAcGFyYW1baW5dICAgICAgIEJpZ051bWJlciAg IFBvaW50ZXIgdG8gb2N0ZXQgaW50ZWdlciBidWZmZXIuDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJZiBOVUxMLCB0aGVuIHRoZSBzcGVjaWZpZWQga2V5IGNvbXBvbmVudCBp biBSU0ENCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgaXMgY2xl YXJlZC4NCj4gPiArICBAcGFyYW1baW5dICAgICAgIEJuU2l6ZSAgICAgIFNpemUgb2YgYmlnIG51 bWJlciBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJZiBCaWdOdW1iZXIgaXMgTlVMTCwgdGhlbiBpdCBpcyBpZ25vcmVkLg0KPiA+ICsNCj4gPiAr ICBAcmV0dmFsICBUUlVFICAgUlNBIGtleSBjb21wb25lbnQgd2FzIHNldCBzdWNjZXNzZnVsbHku DQo+ID4gKyAgQHJldHZhbCAgRkFMU0UgIEludmFsaWQgUlNBIGtleSBjb21wb25lbnQgdGFnLg0K PiA+ICsNCj4gPiArKiovDQo+ID4gK0JPT0xFQU4NCj4gPiArRUZJQVBJDQo+ID4gK1JzYVNldEtl eSAoDQo+ID4gKyAgSU4gT1VUICBWT0lEICAgICAgICAgKlJzYUNvbnRleHQsDQo+ID4gKyAgSU4g ICAgICBSU0FfS0VZX1RBRyAgS2V5VGFnLA0KPiA+ICsgIElOICAgICAgQ09OU1QgVUlOVDggICpC aWdOdW1iZXIsDQo+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgQm5TaXplDQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBWZXJpZmllcyB0aGUgUlNBLVNTQSBzaWduYXR1 cmUgd2l0aCBFTVNBLVBLQ1MxLXYxXzUgZW5jb2Rpbmcgc2NoZW1lDQo+ID4gK2RlZmluZWQgaW4N Cj4gPiArICBSU0EgUEtDUyMxLg0KPiA+ICsNCj4gPiArICBJZiBSc2FDb250ZXh0IGlzIE5VTEws IHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ICsgIElmIE1lc3NhZ2VIYXNoIGlzIE5VTEwsIHRoZW4g cmV0dXJuIEZBTFNFLg0KPiA+ICsgIElmIFNpZ25hdHVyZSBpcyBOVUxMLCB0aGVuIHJldHVybiBG QUxTRS4NCj4gPiArICBJZiBIYXNoU2l6ZSBpcyBub3QgZXF1YWwgdG8gdGhlIHNpemUgb2YgTUQ1 LCBTSEEtMSBvciBTSEEtMjU2IGRpZ2VzdCwgdGhlbg0KPiByZXR1cm4gRkFMU0UuDQo+ID4gKw0K PiA+ICsgIEBwYXJhbVtpbl0gIFJzYUNvbnRleHQgICBQb2ludGVyIHRvIFJTQSBjb250ZXh0IGZv ciBzaWduYXR1cmUNCj4gdmVyaWZpY2F0aW9uLg0KPiA+ICsgIEBwYXJhbVtpbl0gIE1lc3NhZ2VI YXNoICBQb2ludGVyIHRvIG9jdGV0IG1lc3NhZ2UgaGFzaCB0byBiZSBjaGVja2VkLg0KPiA+ICsg IEBwYXJhbVtpbl0gIEhhc2hTaXplICAgICBTaXplIG9mIHRoZSBtZXNzYWdlIGhhc2ggaW4gYnl0 ZXMuDQo+ID4gKyAgQHBhcmFtW2luXSAgU2lnbmF0dXJlICAgIFBvaW50ZXIgdG8gUlNBIFBLQ1Mx LXYxXzUgc2lnbmF0dXJlIHRvIGJlDQo+IHZlcmlmaWVkLg0KPiA+ICsgIEBwYXJhbVtpbl0gIFNp Z1NpemUgICAgICBTaXplIG9mIHNpZ25hdHVyZSBpbiBieXRlcy4NCj4gPiArDQo+ID4gKyAgQHJl dHZhbCAgVFJVRSAgIFZhbGlkIHNpZ25hdHVyZSBlbmNvZGVkIGluIFBLQ1MxLXYxXzUuDQo+ID4g KyAgQHJldHZhbCAgRkFMU0UgIEludmFsaWQgc2lnbmF0dXJlIG9yIGludmFsaWQgUlNBIGNvbnRl eHQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArQk9PTEVBTg0KPiA+ICtFRklBUEkNCj4gPiArUnNh UGtjczFWZXJpZnkgKA0KPiA+ICsgIElOICBWT0lEICAgICAgICAgKlJzYUNvbnRleHQsDQo+ID4g KyAgSU4gIENPTlNUIFVJTlQ4ICAqTWVzc2FnZUhhc2gsDQo+ID4gKyAgSU4gIFVJTlROICAgICAg ICBIYXNoU2l6ZSwNCj4gPiArICBJTiAgQ09OU1QgVUlOVDggICpTaWduYXR1cmUsDQo+ID4gKyAg SU4gIFVJTlROICAgICAgICBTaWdTaXplDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgQVNTRVJU IChGQUxTRSk7DQo+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdCBh L0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9TZWNDcnlwdExpYi5pbmYNCj4gPiBiL0Ny eXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9TZWNDcnlwdExpYi5pbmYNCj4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uMDcwYjQ0NDQ3ZTc0DQo+ID4g LS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9T ZWNDcnlwdExpYi5pbmYNCj4gPiBAQCAtMCwwICsxLDkxIEBADQo+ID4gKyMjIEBmaWxlDQo+ID4g KyMgIENyeXB0b2dyYXBoaWMgTGlicmFyeSBJbnN0YW5jZSBmb3IgU0VDLg0KPiA+ICsjDQo+ID4g KyMgIENhdXRpb246IFRoaXMgbW9kdWxlIHJlcXVpcmVzIGFkZGl0aW9uYWwgcmV2aWV3IHdoZW4g bW9kaWZpZWQuDQo+ID4gKyMgIFRoaXMgbGlicmFyeSB3aWxsIGhhdmUgZXh0ZXJuYWwgaW5wdXQg LSBzaWduYXR1cmUuDQo+ID4gKyMgIFRoaXMgZXh0ZXJuYWwgaW5wdXQgbXVzdCBiZSB2YWxpZGF0 ZWQgY2FyZWZ1bGx5IHRvIGF2b2lkIHNlY3VyaXR5DQo+ID4gK2lzc3VlcyBzdWNoIGFzICMgIGJ1 ZmZlciBvdmVyZmxvdyBvciBpbnRlZ2VyIG92ZXJmbG93Lg0KPiA+ICsjDQo+ID4gKyMgIENvcHly aWdodCAoYykgMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS PiAjDQo+ID4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50ICMg IyMNCj4gPiArDQo+ID4gK1tEZWZpbmVzXQ0KPiA+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAg ICAgICAgICA9IDB4MDAwMTAwMDUNCj4gPiArICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAg ICAgPSBTZWNDcnlwdExpYg0KPiA+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9 IDM2ODlEMzQzLTBEMzItNDI4NC04MDUzLUJGMTA1Mzc5OTBFOA0KPiA+ICsgIE1PRFVMRV9UWVBF ICAgICAgICAgICAgICAgICAgICA9IEJBU0UNCj4gPiArICBWRVJTSU9OX1NUUklORyAgICAgICAg ICAgICAgICAgPSAxLjANCj4gPiArICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPSBC YXNlQ3J5cHRMaWJ8U0VDDQo+ID4gKw0KPiA+ICsjDQo+ID4gKyMgVGhlIGZvbGxvd2luZyBpbmZv cm1hdGlvbiBpcyBmb3IgcmVmZXJlbmNlIG9ubHkgYW5kIG5vdCByZXF1aXJlZCBieSB0aGUNCj4g YnVpbGQgdG9vbHMuDQo+ID4gKyMNCj4gPiArIyAgVkFMSURfQVJDSElURUNUVVJFUyAgICAgICAg ICAgPSBJQTMyIFg2NA0KPiA+ICsjDQo+ID4gKw0KPiA+ICtbU291cmNlc10NCj4gPiArICBJbnRl cm5hbENyeXB0TGliLmgNCj4gPiArICBIYXNoL0NyeXB0U2hhNTEyLmMNCj4gPiArDQo+ID4gKyAg SGFzaC9DcnlwdE1kNU51bGwuYw0KPiA+ICsgIEhhc2gvQ3J5cHRTaGExTnVsbC5jDQo+ID4gKyAg SGFzaC9DcnlwdFNoYTI1Nk51bGwuYw0KPiA+ICsgIEhhc2gvQ3J5cHRTbTNOdWxsLmMNCj4gPiAr ICBIYXNoL0NyeXB0UGFyYWxsZWxIYXNoTnVsbC5jDQo+ID4gKyAgSG1hYy9DcnlwdEhtYWNTaGEy NTZOdWxsLmMNCj4gPiArICBLZGYvQ3J5cHRIa2RmTnVsbC5jDQo+ID4gKyAgQ2lwaGVyL0NyeXB0 QWVzTnVsbC5jDQo+ID4gKyAgUGsvQ3J5cHRSc2FCYXNpY051bGwuYw0KPiA+ICsgIFBrL0NyeXB0 UnNhRXh0TnVsbC5jDQo+ID4gKyAgUGsvQ3J5cHRQa2NzMU9hZXBOdWxsLmMNCj4gPiArICBQay9D cnlwdFBrY3M1UGJrZGYyTnVsbC5jDQo+ID4gKyAgUGsvQ3J5cHRQa2NzN1NpZ25OdWxsLmMNCj4g PiArICBQay9DcnlwdFBrY3M3VmVyaWZ5TnVsbC5jDQo+ID4gKyAgUGsvQ3J5cHRQa2NzN1Zlcmlm eUVrdU51bGwuYw0KPiA+ICsgIFBrL0NyeXB0RGhOdWxsLmMNCj4gPiArICBQay9DcnlwdFg1MDlO dWxsLmMNCj4gPiArICBQay9DcnlwdEF1dGhlbnRpY29kZU51bGwuYw0KPiA+ICsgIFBrL0NyeXB0 VHNOdWxsLmMNCj4gPiArICBQZW0vQ3J5cHRQZW1OdWxsLmMNCj4gPiArICBSYW5kL0NyeXB0UmFu ZE51bGwuYw0KPiA+ICsgIFBrL0NyeXB0UnNhUHNzTnVsbC5jDQo+ID4gKyAgUGsvQ3J5cHRSc2FQ c3NTaWduTnVsbC5jDQo+ID4gKw0KPiA+ICsgIFN5c0NhbGwvQ3J0V3JhcHBlci5jDQo+ID4gKyAg U3lzQ2FsbC9Db25zdGFudFRpbWVDbG9jay5jDQo+ID4gKyAgU3lzQ2FsbC9CYXNlTWVtQWxsb2Nh dGlvbi5jDQo+ID4gKw0KPiA+ICtbUGFja2FnZXNdDQo+ID4gKyAgTWRlUGtnL01kZVBrZy5kZWMN Cj4gPiArICBDcnlwdG9Qa2cvQ3J5cHRvUGtnLmRlYw0KPiA+ICsNCj4gPiArW0xpYnJhcnlDbGFz c2VzXQ0KPiA+ICsgIEJhc2VMaWINCj4gPiArICBCYXNlTWVtb3J5TGliDQo+ID4gKyAgTWVtb3J5 QWxsb2NhdGlvbkxpYg0KPiA+ICsgIERlYnVnTGliDQo+ID4gKyAgT3BlbnNzbExpYg0KPiA+ICsg IEludHJpbnNpY0xpYg0KPiA+ICsNCj4gPiArIw0KPiA+ICsjIFJlbW92ZSB0aGVzZSBbQnVpbGRP cHRpb25zXSBhZnRlciB0aGlzIGxpYnJhcnkgaXMgY2xlYW5lZCB1cCAjDQo+ID4gK1tCdWlsZE9w dGlvbnNdDQo+ID4gKyAgIw0KPiA+ICsgICMgc3VwcHJlc3MgdGhlIGZvbGxvd2luZyB3YXJuaW5n cyBzbyB3ZSBkbyBub3QgYnJlYWsgdGhlIGJ1aWxkIHdpdGgNCj4gd2FybmluZ3MtYXMtZXJyb3Jz Og0KPiA+ICsgICMgQzQwOTA6ICdmdW5jdGlvbicgOiBkaWZmZXJlbnQgJ2NvbnN0JyBxdWFsaWZp ZXJzDQo+ID4gKyAgIyBDNDcxODogJ2Z1bmN0aW9uIGNhbGwnIDogcmVjdXJzaXZlIGNhbGwgaGFz IG5vIHNpZGUgZWZmZWN0cywNCj4gPiArZGVsZXRpbmcNCj4gPiArICAjDQo+ID4gKyAgTVNGVDoq XypfKl9DQ19GTEFHUyA9IC93ZDQwOTAgL3dkNDcxOA0KPiA+ICsNCj4gPiArICAjIC1KQ3J5cHRv UGtnL0luY2x1ZGUgOiBUbyBkaXNhYmxlIHRoZSB1c2Ugb2YgdGhlIHN5c3RlbSBpbmNsdWRlcw0K PiBwcm92aWRlZCBieSBSVkNUDQo+ID4gKyAgIyAtLWRpYWdfcmVtYXJrPTEgICAgIDogUmVkdWNl IHNldmVyaXR5IG9mICIjMS1EOiBsYXN0IGxpbmUgb2YgZmlsZSBlbmRzDQo+IHdpdGhvdXQgYSBu ZXdsaW5lIg0KPiA+ICsgIFJWQ1Q6Kl8qX0FSTV9DQ19GTEFHUyA9IC1KQ3J5cHRvUGtnL0luY2x1 ZGUgLS1kaWFnX3JlbWFyaz0xDQo+ID4gKw0KPiA+ICsgIEdDQzoqX0NMQU5HMzVfKl9DQ19GTEFH UyA9IC1zdGQ9Yzk5ICBHQ0M6Kl9DTEFORzM4XypfQ0NfRkxBR1MNCj4gPQ0KPiA+ICsgLXN0ZD1j OTkgIEdDQzoqX0NMQU5HUERCXypfQ0NfRkxBR1MgPSAtc3RkPWM5OQ0KPiA+ICsgLVduby1lcnJv cj1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcw0KPiA+ICsNCj4gPiArICBYQ09ERToqXypfKl9D Q19GTEFHUyA9IC1zdGQ9Yzk5DQo+ID4gLS0NCj4gPiAyLjI5LjIud2luZG93cy4yDQo+ID4NCj4g Pg0KPiA+DQo+ID4gDQo+ID4NCg0K