From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web11.20596.1600258065391537874 for ; Wed, 16 Sep 2020 05:07:45 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=cQIye8X/; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: jiewen.yao@intel.com) IronPort-SDR: QgQ7hvAv+5u/7C9wH91r8ztndQgNl5IvHoLapjExLAIyi6JGl0rAeDSl5uVOf5Fug2hksVjzVE 7J928X4ItHvA== X-IronPort-AV: E=McAfee;i="6000,8403,9745"; a="138950486" X-IronPort-AV: E=Sophos;i="5.76,432,1592895600"; d="scan'208";a="138950486" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Sep 2020 05:07:42 -0700 IronPort-SDR: KkJ8NRSFwQgoJ1rqfIqeWevFkwhHFiBs5qEE0BFn604MB00kkDV7T0y2XsFwIbawTxGIYeak4t 6vCIT1mZ3MrA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.76,432,1592895600"; d="scan'208";a="331653454" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga004.fm.intel.com with ESMTP; 16 Sep 2020 05:07:41 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 16 Sep 2020 05:07:40 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) 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.1713.5 via Frontend Transport; Wed, 16 Sep 2020 05:07:40 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.174) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Wed, 16 Sep 2020 05:07:38 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YLp6RNP5B3QMDM2DeHXGG8Fe6FHosV28snPEZHkKcohm7BfLTTHhT7Rwe8xevkMqPqb8CiFogwzRwPlfHcgAl5LL+H38PxaaBAfXTctwt9RFjnkYKF+cjL60bvi+q2/LXdTGkP2eaD6nzHFP/z04q6lnL1OATKcLC1pFNSw+5SjlYGc6Q9V1Y6SPgwdKHWvlUHY3j15lC0eRpOR8mJzR/7l4BZp8fKDMp8ekDkIf2zCmTn3azNSccPibaKotDWqFjWsYmXuIjIjEsm2hkZxKLEqE6AxVIyyPyFrwB1zKBfe5/VhEgbUczpBx/1CDE1Ed7t+J0dj6wEvkADyedPQv/A== 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-SenderADCheck; bh=tJs2pBqIjGjXPmdLkmWHhJ/XTNS2rIeRAw15WR3+KlI=; b=I78VOHTPrz4SxKV7AN/bCo5mxKEAUJxvJyGIIQ8EIAUrgL3yx2AG/CDIeb8l9wDrKKn4hZ/ybfY++j1bryNNKsPYXy8BH4r6clc8fiec64gsn+MQlZiZz2t9US1ZwEGIMwngMP78cOadUOUDEBHtmK11HW3yZ7nXGBlILs35Waz1xEYkA6B+LgyKLXe0kTuBc9ydUiHIuODdzYouMU2HKIUvCRRhzy9FO5DH2BFQDQXHUW2ItHomnWW98LzI8zC/2A3vMDpvpK6W7g9/0DvKyJ3sJz9AUDCyCiXGU2RXDShYQURwX4qeGtqClhh6pDMKe9llAiz6Vx5fJA97j1JAgg== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tJs2pBqIjGjXPmdLkmWHhJ/XTNS2rIeRAw15WR3+KlI=; b=cQIye8X/ZPRkO8SXJfA/miP7lTq5EfSaPoCxQy/JTeWmK1FZgMFjtzTNZ7B07xiiFTFIYzOkF9132Yfp1Sk0Y180epzNviUZBUZiQXTxYNogM/dumsdmjwpXSGdao3Y7aF5hxoC80Fbw4h8GLK4DyEdhbPeTrKRJHaNlq70P6Z0= Received: from CY4PR11MB1288.namprd11.prod.outlook.com (2603:10b6:903:23::8) by CY4PR1101MB2326.namprd11.prod.outlook.com (2603:10b6:903:b3::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.11; Wed, 16 Sep 2020 12:07:37 +0000 Received: from CY4PR11MB1288.namprd11.prod.outlook.com ([fe80::163:9209:a92d:812]) by CY4PR11MB1288.namprd11.prod.outlook.com ([fe80::163:9209:a92d:812%6]) with mapi id 15.20.3391.011; Wed, 16 Sep 2020 12:07:37 +0000 From: "Yao, Jiewen" To: "devel@edk2.groups.io" , "Yao, Jiewen" , Laszlo Ersek , "Zurcher, Christopher J" CC: "Wang, Jian J" , "Lu, XiaoyuX" Subject: Re: [edk2-devel] [PATCH v3 1/3] CryptoPkg/BaseCryptLib: Add EVP (Envelope) Digest interface Thread-Topic: [edk2-devel] [PATCH v3 1/3] CryptoPkg/BaseCryptLib: Add EVP (Envelope) Digest interface Thread-Index: AdaMIepWqIkOmP1/Tti9al/jPNHB1A== Date: Wed, 16 Sep 2020 12:07:36 +0000 Message-ID: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.202] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 460b5cc5-f9e2-4460-3b65-08d85a391a16 x-ms-traffictypediagnostic: CY4PR1101MB2326: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: qyHdWmAS5FEYSmGnAZ/dw86BEjwZD+YgWRYzOlJsVhda6oi/6dDBACD+hITMOpHDsc3+mkvksFjXMYTWeTpbe0FUpF5WIQS8fhxtp1JplWYO577PzyA1sd2KiDu7kFeAWvFxrqdlVyJukwbrfZd55fCbDQxfkGWCEyNH0nwcm7tQcq3gJ0m28WZ3NPTsxeK7lZ9oT8bbYpW4w7kSOMz9IeJ6yRaVACg/VE7iYKHFyhQH8LrQimacViavg2bEodG9RiA/qa/png7lU22aGkVAGGoSVAWMhudQVg9epD4deLFBqbii5Q0JcIuZvNCjgCoyYXz4fSCY3X7Vzp8TidoSlbGnKajMsdtk3B0HVZGnKGVsodpJLwGSolJuVvvROwVjQI6TnN52QPefyUy6o+8LNw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY4PR11MB1288.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(376002)(346002)(366004)(136003)(39860400002)(83380400001)(4326008)(86362001)(6636002)(9686003)(8936002)(55016002)(107886003)(33656002)(8676002)(66556008)(66476007)(966005)(478600001)(30864003)(2906002)(66446008)(76116006)(66946007)(64756008)(110136005)(52536014)(6506007)(5660300002)(54906003)(316002)(186003)(53546011)(71200400001)(7696005)(26005)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: c6aZ8kgKPFAzhIuRCVDXa7KbK670ZOtBqEewJfrxkLbk+229fXZJPqkvzXTFbzhvX9ahJ70dSBug6ucPRlYmo8PDyfGwWVMYq91eu86dI+ZAwrJ2/c449pToYseuBEoQxsJDqV60WUJvkjYEYY4IJYKcD2xn77tgCZrzwiaqaRs8xV17/moLcp24O/PqMJJ9+1d+sdeRTfnR/Enr/UiRnUji8v1Z47dJpynexPGpNJi7h2M5wrZW0DrBGtBCZhiKXdbou1fmMrhATHczaBgJyvfJUHQ9LfuZvaF9DpiO3UZ+7Aw3+t5UOWEIi1cepo9Ba2WYvBwWSEVv3Ghq8QDfiCphTUWKaGdSa8V1CnKy2bEQ1Yn22VVx5VMSXJULM1edqu9OaJpsfXRBRd48UyNiTgb1DkzkRxo1sed+WgXtXXjjQHq8jFTqcIsMTJMi9a6G94yEmELdJ1PNSfXYgu+bPRzI70tu+T8Ma12jnDgdLahSh13ZgWqZ81dIK6sbbLM76PTJDk6dv7Z21cb432/nY/EmjaRDB+ot0mNiZXBeynFIKIxFxfQ7g8/RpaOCae6JJAGgBRsHofpYI56boNPuy0XGk2dIrum6herPZey7xuunibciezF/e47YEfGo1hUplxIBJdSwKF/p+SkKGhfd8A== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY4PR11MB1288.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 460b5cc5-f9e2-4460-3b65-08d85a391a16 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Sep 2020 12:07:36.9046 (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: 0Dd1wMP0nvLrKVzRFM7ZvZ828AB6OoICImInwwrod8PleG1lAxEce7DF5wekAAQ7jb04/jMVmkafVPKae/yIyw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1101MB2326 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SSBvdmVybG9va2VkIHRoZSBiZWhhdmlvciB0aGF0IE5VTEwgRGlnZXN0VmFsdWUgd2lsbCB0YWtl IHNpZGUgZWZmZWN0IHRvIGZyZWUgQ29udGV4dC4NCg0KSGkgQ2hyaXN0b3BoZXINCk1heSBJIHVu ZGVyc3RhbmQgd2h5IHdlIG5lZWQgZnJlZSB0aGUgY29udGV4dD8NClRoaXMgZG9lcyBub3QgYWxp Z24gd2l0aCBvdGhlciBleGlzdGluZyBIQVNIIG9yIEhNQUMgZnVuY3Rpb25zLg0KDQpUaGFuayB5 b3UNCllhbyBKaWV3ZW4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiBZ YW8sIEppZXdlbg0KPiBTZW50OiBXZWRuZXNkYXksIFNlcHRlbWJlciAxNiwgMjAyMCA3OjQ1IFBN DQo+IFRvOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPjsgZGV2ZWxAZWRrMi5ncm91 cHMuaW87IFp1cmNoZXIsDQo+IENocmlzdG9waGVyIEogPGNocmlzdG9waGVyLmouenVyY2hlckBp bnRlbC5jb20+DQo+IENjOiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IEx1 LCBYaWFveXVYIDx4aWFveXV4Lmx1QGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRl dmVsXSBbUEFUQ0ggdjMgMS8zXSBDcnlwdG9Qa2cvQmFzZUNyeXB0TGliOiBBZGQgRVZQDQo+IChF bnZlbG9wZSkgRGlnZXN0IGludGVyZmFjZQ0KPiANCj4gSGkgTGFzemxvDQo+IEkgZGlzYWdyZWUg dG8gcHV0IE9QVElPTkFMIGZvciBEaWdlc3RWYWx1ZSwganVzdCBiZWNhdXNlIE5VTEwgaXMgY2hl Y2tlZC4NCj4gSWYgd2UgbmVlZCBmb2xsb3cgdGhpcywgdGhlbiB3ZSBuZWVkIGFkZCBPUFRJT05B TCB0byBhbG1vc3QgYWxsIHBvaW50ZXIsIHdoaWNoDQo+IGlzIHVubmVjZXNzYXJ5Lg0KPiANCj4g PiArQk9PTEVBTg0KPiA+ICtFRklBUEkNCj4gPiArRXZwTWRGaW5hbCAoDQo+ID4gKyAgSU4gT1VU ICBWT0lEICAgKkV2cE1kQ29udGV4dCwNCj4gPiArICBPVVQgICAgIFVJTlQ4ICAqRGlnZXN0VmFs dWUNCj4gDQo+ICgzKSBEaWdlc3RWYWx1ZSBzaG91bGQgYmUgbWFya2VkIE9QVElPTkFMIGluIG15 IG9waW5pb24sIGFzIE5VTEwgaXMNCj4gZGVsaWJlcmF0ZWx5IHBlcm1pdHRlZCAoZm9yIGp1c3Qg ZnJlZWluZyB0aGUgY29udGV4dCkuDQo+IA0KPiANCj4gDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT4N Cj4gPiBTZW50OiBXZWRuZXNkYXksIFNlcHRlbWJlciAxNiwgMjAyMCA3OjA3IFBNDQo+ID4gVG86 IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBadXJjaGVyLCBDaHJpc3RvcGhlciBKDQo+ID4gPGNocmlz dG9waGVyLmouenVyY2hlckBpbnRlbC5jb20+DQo+ID4gQ2M6IFlhbywgSmlld2VuIDxqaWV3ZW4u eWFvQGludGVsLmNvbT47IFdhbmcsIEppYW4gSg0KPiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsN Cj4gPiBMdSwgWGlhb3l1WCA8eGlhb3l1eC5sdUBpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogUmU6 IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjMgMS8zXSBDcnlwdG9Qa2cvQmFzZUNyeXB0TGliOiBBZGQg RVZQDQo+ID4gKEVudmVsb3BlKSBEaWdlc3QgaW50ZXJmYWNlDQo+ID4NCj4gPiBIZWxsbyBDaHJp c3RvcGhlciwNCj4gPg0KPiA+IE9uIDA5LzE2LzIwIDAyOjU5LCBadXJjaGVyLCBDaHJpc3RvcGhl ciBKIHdyb3RlOg0KPiA+ID4gQlo6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93 X2J1Zy5jZ2k/aWQ9MjU0NQ0KPiA+ID4NCj4gPiA+IFRoZSBFVlAgaW50ZXJmYWNlIHNob3VsZCBi ZSB1c2VkIGluIHBsYWNlIG9mIGRpc2NyZXRlIGRpZ2VzdCBmdW5jdGlvbg0KPiA+ID4gY2FsbHMu DQo+ID4gPg0KPiA+ID4gQ2M6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+ID4g PiBDYzogSmlld2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+ID4gPiBDYzogSmlhbiBK IFdhbmcgPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gPiA+IENjOiBYaWFveXUgTHUgPHhpYW95 dXgubHVAaW50ZWwuY29tPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgSiBadXJj aGVyIDxjaHJpc3RvcGhlci5qLnp1cmNoZXJAaW50ZWwuY29tPg0KPiA+ID4gLS0tDQo+ID4gPiAg Q3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0Jhc2VDcnlwdExpYi5pbmYgICAgICAgICB8 ICAgMSArDQo+ID4gPiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BlaUNyeXB0TGli LmluZiAgICAgICAgICB8ICAgMSArDQo+ID4gPiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0 TGliL1J1bnRpbWVDcnlwdExpYi5pbmYgICAgICB8ICAgMSArDQo+ID4gPiAgQ3J5cHRvUGtnL0xp YnJhcnkvQmFzZUNyeXB0TGliL1NtbUNyeXB0TGliLmluZiAgICAgICAgICB8ICAgMSArDQo+ID4g PiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9CYXNlQ3J5cHRMaWJOdWxsLmlu ZiB8ICAgMSArDQo+ID4gPiAgQ3J5cHRvUGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlQ3J5cHRMaWIu aCAgICAgICAgICAgICAgICB8IDEyOSArKysrKysrKysrDQo+ID4gPiAgQ3J5cHRvUGtnL0xpYnJh cnkvQmFzZUNyeXB0TGliL0V2cC9DcnlwdEV2cE1kLmMgICAgICAgICB8IDI1Nw0KPiA+ICsrKysr KysrKysrKysrKysrKysrDQo+ID4gPiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0V2 cC9DcnlwdEV2cE1kTnVsbC5jICAgICB8IDEyOCArKysrKysrKysrDQo+ID4gPiAgQ3J5cHRvUGtn L0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9FdnAvQ3J5cHRFdnBNZE51bGwuYyB8IDEyOA0KPiAr KysrKysrKysrDQo+ID4gPiAgOSBmaWxlcyBjaGFuZ2VkLCA2NDcgaW5zZXJ0aW9ucygrKQ0KPiA+ DQo+ID4gSSBhZ3JlZSB0aGF0ICJDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWJOdWxsL0V2 cC9DcnlwdEV2cE1kTnVsbC5jIg0KPiA+IGlzIG5lY2Vzc2FyeS4gKElmIEkgdW5kZXJzdGFuZCBj b3JyZWN0bHksIHRoYXQgZmlsZSB3YXMgbWlzc2luZyBmcm9tDQo+ID4geW91ciB2MiBwb3N0aW5n LikNCj4gPg0KPiA+IEJ1dCAiQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0V2cC9Dcnlw dEV2cE1kTnVsbC5jIiBzZWVtcw0KPiA+IHN1cGVyZmx1b3VzLiBUaGlzIGZpbGUgaXMgbmV2ZXIg cmVmZXJlbmNlZCBpbiB0aGUgSU5GIGZpbGVzLg0KPiA+DQo+ID4gVGhlIHBvaW50IG9mIHRoaXMg ZmlsZSB3b3VsZCBiZSB0byBhbGxvdyAqc29tZSogb2YgdGhlIEJhc2UgLyBQZWkgLw0KPiA+IFJ1 bnRpbWUgLyBTbW0gaW5zdGFuY2VzIHRvICJzdHViIG91dCIgdGhlIEVWUCBNRCBmdW5jdGlvbnMg KGkuZS4gcHJvdmlkZQ0KPiA+IG9ubHkgc3R1YiBpbXBsZW1lbnRhdGlvbnMpLiBCdXQgdGhpcyBp c24ndCB3aGF0J3MgaGFwcGVuaW5nIC0tIGFsbCBvZg0KPiA+IHRoZSBCYXNlIC8gUGVpIC8gUnVu dGltZSAvIFNtbSBpbnN0YW5jZXMgYXJlIGdldHRpbmcgdGhlIHJlYWwgZGVhbA0KPiA+ICgiQ3J5 cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0V2cC9DcnlwdEV2cE1kLmMiKS4NCj4gPg0KPiA+ ICgxKSBTbyBJIHRoaW5rICJDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvRXZwL0NyeXB0 RXZwTWROdWxsLmMiDQo+ID4gc2hvdWxkIGJlIGRyb3BwZWQuIE9ubHkgdGhlIE51bGwgaW5zdGFu Y2Ugb2YgdGhlIGxpYnJhcnkgbmVlZHMgbnVsbA0KPiA+IHZlcnNpb25zIG9mIHRoZSBuZXcgZnVu Y3Rpb25zLiBUaGUgQmFzZSAvIFBlaSAvIFJ1bnRpbWUgLyBTbW0gaW5zdGFuY2VzDQo+ID4gZG9u J3QuDQo+ID4NCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFz ZUNyeXB0TGliL0Jhc2VDcnlwdExpYi5pbmYNCj4gPiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VD cnlwdExpYi9CYXNlQ3J5cHRMaWIuaW5mDQo+ID4gPiBpbmRleCA0YWFlMmFiYTk1Li4zOTY4ZjI5 NDEyIDEwMDY0NA0KPiA+ID4gLS0tIGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0Jh c2VDcnlwdExpYi5pbmYNCj4gPiA+ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExp Yi9CYXNlQ3J5cHRMaWIuaW5mDQo+ID4gPiBAQCAtNTAsNiArNTAsNyBAQA0KPiA+ID4gICAgUGsv Q3J5cHRBdXRoZW50aWNvZGUuYw0KPiA+ID4gICAgUGsvQ3J5cHRUcy5jDQo+ID4gPiAgICBQZW0v Q3J5cHRQZW0uYw0KPiA+ID4gKyAgRXZwL0NyeXB0RXZwTWQuYw0KPiA+ID4NCj4gPiA+ICAgIFN5 c0NhbGwvQ3J0V3JhcHBlci5jDQo+ID4gPiAgICBTeXNDYWxsL1RpbWVyV3JhcHBlci5jDQo+ID4g PiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BlaUNyeXB0TGli LmluZg0KPiA+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BlaUNyeXB0TGliLmlu Zg0KPiA+ID4gaW5kZXggZGMyOGUzYTExZC4uZDBiOTE3MTZkMCAxMDA2NDQNCj4gPiA+IC0tLSBh L0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9QZWlDcnlwdExpYi5pbmYNCj4gPiA+ICsr KyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9QZWlDcnlwdExpYi5pbmYNCj4gPiA+ IEBAIC01Nyw2ICs1Nyw3IEBADQo+ID4gPiAgICBQay9DcnlwdFRzTnVsbC5jDQo+ID4gPiAgICBQ ZW0vQ3J5cHRQZW1OdWxsLmMNCj4gPiA+ICAgIFJhbmQvQ3J5cHRSYW5kTnVsbC5jDQo+ID4gPiAr ICBFdnAvQ3J5cHRFdnBNZC5jDQo+ID4gPg0KPiA+ID4gICAgU3lzQ2FsbC9DcnRXcmFwcGVyLmMN Cj4gPiA+ICAgIFN5c0NhbGwvQ29uc3RhbnRUaW1lQ2xvY2suYw0KPiA+ID4gZGlmZiAtLWdpdCBh L0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9SdW50aW1lQ3J5cHRMaWIuaW5mDQo+ID4g Yi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUnVudGltZUNyeXB0TGliLmluZg0KPiA+ ID4gaW5kZXggNTAwNWJlZWQwMi4uOWYzYWNjZDM1YiAxMDA2NDQNCj4gPiA+IC0tLSBhL0NyeXB0 b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9SdW50aW1lQ3J5cHRMaWIuaW5mDQo+ID4gPiArKysg Yi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUnVudGltZUNyeXB0TGliLmluZg0KPiA+ ID4gQEAgLTU2LDYgKzU2LDcgQEANCj4gPiA+ICAgIFBrL0NyeXB0QXV0aGVudGljb2RlTnVsbC5j DQo+ID4gPiAgICBQay9DcnlwdFRzTnVsbC5jDQo+ID4gPiAgICBQZW0vQ3J5cHRQZW0uYw0KPiA+ ID4gKyAgRXZwL0NyeXB0RXZwTWQuYw0KPiA+ID4NCj4gPiA+ICAgIFN5c0NhbGwvQ3J0V3JhcHBl ci5jDQo+ID4gPiAgICBTeXNDYWxsL1RpbWVyV3JhcHBlci5jDQo+ID4gPiBkaWZmIC0tZ2l0IGEv Q3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1NtbUNyeXB0TGliLmluZg0KPiA+IGIvQ3J5 cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1NtbUNyeXB0TGliLmluZg0KPiA+ID4gaW5kZXgg OTFlYzNlMDNiZi4uNDIwNjIzY2RjNiAxMDA2NDQNCj4gPiA+IC0tLSBhL0NyeXB0b1BrZy9MaWJy YXJ5L0Jhc2VDcnlwdExpYi9TbW1DcnlwdExpYi5pbmYNCj4gPiA+ICsrKyBiL0NyeXB0b1BrZy9M aWJyYXJ5L0Jhc2VDcnlwdExpYi9TbW1DcnlwdExpYi5pbmYNCj4gPiA+IEBAIC01NCw2ICs1NCw3 IEBADQo+ID4gPiAgICBQay9DcnlwdEF1dGhlbnRpY29kZU51bGwuYw0KPiA+ID4gICAgUGsvQ3J5 cHRUc051bGwuYw0KPiA+ID4gICAgUGVtL0NyeXB0UGVtLmMNCj4gPiA+ICsgIEV2cC9DcnlwdEV2 cE1kLmMNCj4gPiA+DQo+ID4gPiAgICBTeXNDYWxsL0NydFdyYXBwZXIuYw0KPiA+ID4gICAgU3lz Q2FsbC9Db25zdGFudFRpbWVDbG9jay5jDQo+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xp YnJhcnkvQmFzZUNyeXB0TGliTnVsbC9CYXNlQ3J5cHRMaWJOdWxsLmluZg0KPiA+IGIvQ3J5cHRv UGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9CYXNlQ3J5cHRMaWJOdWxsLmluZg0KPiA+ID4g aW5kZXggNjg5YWY0ZmVkZC4uNTQyYWMyZTJlMSAxMDA2NDQNCj4gPiA+IC0tLSBhL0NyeXB0b1Br Zy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk51bGwvQmFzZUNyeXB0TGliTnVsbC5pbmYNCj4gPiA+ICsr KyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk51bGwvQmFzZUNyeXB0TGliTnVsbC5p bmYNCj4gPiA+IEBAIC01MCw2ICs1MCw3IEBADQo+ID4gPiAgICBQay9DcnlwdFRzTnVsbC5jDQo+ ID4gPiAgICBQZW0vQ3J5cHRQZW1OdWxsLmMNCj4gPiA+ICAgIFJhbmQvQ3J5cHRSYW5kTnVsbC5j DQo+ID4gPiArICBFdnAvQ3J5cHRFdnBNZE51bGwuYw0KPiA+ID4NCj4gPiA+ICBbUGFja2FnZXNd DQo+ID4gPiAgICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1Br Zy9JbmNsdWRlL0xpYnJhcnkvQmFzZUNyeXB0TGliLmgNCj4gPiBiL0NyeXB0b1BrZy9JbmNsdWRl L0xpYnJhcnkvQmFzZUNyeXB0TGliLmgNCj4gPiA+IGluZGV4IGFlOWJkZTllMzcuLjVlMWI0MDhi NTQgMTAwNjQ0DQo+ID4gPiAtLS0gYS9DcnlwdG9Qa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VDcnlw dExpYi5oDQo+ID4gPiArKysgYi9DcnlwdG9Qa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VDcnlwdExp Yi5oDQo+ID4gPiBAQCAtMTAxMiw2ICsxMDEyLDEzNSBAQCBIbWFjU2hhMjU2RmluYWwgKA0KPiA+ ID4gICAgT1VUICAgICBVSU5UOCAgKkhtYWNWYWx1ZQ0KPiA+ID4gICAgKTsNCj4gPiA+DQo+ID4g Pg0KPiA+DQo+ICsvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQo+ID4gPT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+ICsv LyAgICBFVlAgKEVudmVsb3BlKSBQcmltaXRpdmUNCj4gPiA+DQo+ID4NCj4gKy8vPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4g PiA9PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAg QWxsb2NhdGVzIGFuZCBpbml0aWFsaXplcyBvbmUgRVZQX01EX0NUWCBjb250ZXh0IGZvciBzdWJz ZXF1ZW50IEVWUF9NRA0KPiA+IHVzZS4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIERpZ2VzdE5hbWUg aXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5d ICAgIERpZ2VzdE5hbWUgICAgUG9pbnRlciB0byB0aGUgZGlnZXN0IG5hbWUgYXMgYSBOVUxMLQ0K PiA+IHRlcm1pbmF0ZWQgQVNDSUkgc3RyaW5nLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFZhbGlkIGRpZ2VzdCBuYW1lcyBhcmU6DQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTUQ1LCBTSEExLCBTSEEyMjQsIFNIQTI1NiwgU0hBMzg0LCBTSEE1MTIN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEEzLTIyNCwgU0hBMy0yNTYs IFNIQTMtMzg0LCBTSEEzLTUxMg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFNNMw0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiAgUG9pbnRlciB0byB0aGUgRVZQX01EX0NU WCBjb250ZXh0IHRoYXQgaGFzIGJlZW4gYWxsb2NhdGVkIGFuZA0KPiA+IGluaXRpYWxpemVkLg0K PiA+ID4gKyAgICAgICAgICAgSWYgRGlnZXN0TmFtZSBpcyBpbnZhbGlkLCByZXR1cm5zIE5VTEwu DQo+ID4gPiArICAgICAgICAgICBJZiB0aGUgYWxsb2NhdGlvbnMgZmFpbHMsIHJldHVybnMgTlVM TC4NCj4gPiA+ICsgICAgICAgICAgIElmIGluaXRpYWxpemF0aW9uIGZhaWxzLCByZXR1cm5zIE5V TEwuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVk9JRCAqDQo+ID4gPiArRUZJQVBJDQo+ ID4gPiArRXZwTWRJbml0ICgNCj4gPiA+ICsgIElOICBDT05TVCBDSEFSOCAgICpEaWdlc3ROYW1l DQo+ID4gPiArICApOw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgTWFrZXMgYSBjb3B5 IG9mIGFuIGV4aXN0aW5nIEVWUF9NRCBjb250ZXh0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgRXZw TWRDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgSWYgTmV3RXZw TWRDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHBhcmFtW2luXSAgRXZwTWRDb250ZXh0ICAgICBQb2ludGVyIHRvIEVWUF9NRCBjb250ZXh0IGJl aW5nIGNvcGllZC4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIE5ld0V2cE1kQ29udGV4dCAgUG9pbnRl ciB0byBuZXcgRVZQX01EIGNvbnRleHQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUg ICBFVlBfTUQgY29udGV4dCBjb3B5IHN1Y2NlZWRlZC4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0Ug IEVWUF9NRCBjb250ZXh0IGNvcHkgZmFpbGVkLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4g K0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFdnBNZER1cGxpY2F0ZSAoDQo+ID4gPiAr ICBJTiAgQ09OU1QgVk9JRCAgICAqRXZwTWRDb250ZXh0LA0KPiA+ID4gKyAgT1VUIFZPSUQgICAg ICAgICAgKk5ld0V2cE1kQ29udGV4dA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvKioN Cj4gPiA+ICsgIERpZ2VzdHMgdGhlIGlucHV0IGRhdGEgYW5kIHVwZGF0ZXMgRVZQX01EIGNvbnRl eHQuDQo+ID4gPiArDQo+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIEVWUCBkaWdlc3Qg b24gYSBkYXRhIGJ1ZmZlciBvZiB0aGUgc3BlY2lmaWVkIHNpemUuDQo+ID4gPiArICBJdCBjYW4g YmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGNvbXB1dGUgdGhlIGRpZ2VzdCBvZiBsb25nIG9y DQo+ID4gZGlzY29udGludW91cyBkYXRhIHN0cmVhbXMuDQo+ID4gPiArICBFVlBfTUQgY29udGV4 dCBzaG91bGQgYmUgYWxyZWFkeSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgYnkgRXZwTWRJbml0KCks IGFuZA0KPiA+IHNob3VsZCBub3QNCj4gPiA+ICsgIGJlIGZpbmFsaXplZCBieSBFdnBNZEZpbmFs KCkuIEJlaGF2aW9yIHdpdGggaW52YWxpZCBjb250ZXh0IGlzIHVuZGVmaW5lZC4NCj4gPiA+ICsN Cj4gPiA+ICsgIElmIEV2cE1kQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4g PiA+ICsgIElmIERhdGEgaXMgTlVMTCBhbmQgRGF0YVNpemUgaXMgbm90IHplcm8sIHJldHVybiBG QUxTRS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRXZwTWRDb250ZXh0ICAg ICAgIFBvaW50ZXIgdG8gdGhlIEVWUF9NRCBjb250ZXh0Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAg ICAgICBEYXRhICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIGNvbnRhaW5pbmcg dGhlIGRhdGEgdG8NCj4gYmUNCj4gPiBkaWdlc3RlZC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gICAg ICAgRGF0YVNpemUgICAgICAgICAgIFNpemUgb2YgRGF0YSBidWZmZXIgaW4gYnl0ZXMuDQo+ID4g PiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICBFVlAgZGF0YSBkaWdlc3Qgc3VjY2VlZGVkLg0K PiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgRVZQIGRhdGEgZGlnZXN0IGZhaWxlZC4NCj4gPiA+ICsN Cj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRXZwTWRV cGRhdGUgKA0KPiA+ID4gKyAgSU4gT1VUICBWT0lEICAgICAgICAqRXZwTWRDb250ZXh0LA0KPiA+ ID4gKyAgSU4gICAgICBDT05TVCBWT0lEICAqRGF0YSwNCj4gPiA+ICsgIElOICAgICAgVUlOVE4g ICAgICAgRGF0YVNpemUNCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiAr ICBDb21wbGV0ZXMgY29tcHV0YXRpb24gb2YgdGhlIEVWUCBkaWdlc3QgdmFsdWUuDQo+ID4gPiAr ICBSZWxlYXNlcyB0aGUgc3BlY2lmaWVkIEVWUF9NRF9DVFggY29udGV4dC4NCj4gPiA+ICsNCj4g PiA+ICsgIFRoaXMgZnVuY3Rpb24gY29tcGxldGVzIEVWUCBoYXNoIGNvbXB1dGF0aW9uIGFuZCBy ZXRyaWV2ZXMgdGhlIGRpZ2VzdA0KPiA+IHZhbHVlIGludG8NCj4gPiA+ICsgIHRoZSBzcGVjaWZp ZWQgbWVtb3J5LiBBZnRlciB0aGlzIGZ1bmN0aW9uIGhhcyBiZWVuIGNhbGxlZCwgdGhlIEVWUCBj b250ZXh0DQo+ID4gY2Fubm90DQo+ID4gPiArICBiZSB1c2VkIGFnYWluLg0KPiA+ID4gKyAgRVZQ IGNvbnRleHQgc2hvdWxkIGJlIGFscmVhZHkgY29ycmVjdGx5IGluaXRpYWxpemVkIGJ5IEV2cE1k SW5pdCgpLCBhbmQNCj4gPiBzaG91bGQNCj4gPiA+ICsgIG5vdCBiZSBmaW5hbGl6ZWQgYnkgRXZw TWRGaW5hbCgpLiBCZWhhdmlvciB3aXRoIGludmFsaWQgRVZQIGNvbnRleHQgaXMNCj4gPiB1bmRl ZmluZWQuDQo+ID4gPiArDQo+ID4gPiArICBJZiBFdnBNZENvbnRleHQgaXMgTlVMTCwgdGhlbiBy ZXR1cm4gRkFMU0UuDQo+ID4gPiArICBJZiBEaWdlc3RWYWx1ZSBpcyBOVUxMLCBmcmVlIHRoZSBD b250ZXh0IHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luLCBv dXRdICBFdnBNZENvbnRleHQgICBQb2ludGVyIHRvIHRoZSBFVlAgY29udGV4dC4NCj4gPiA+ICsg IEBwYXJhbVtvdXRdICAgICAgRGlnZXN0ICAgICAgICAgUG9pbnRlciB0byBhIGJ1ZmZlciB0aGF0 IHJlY2VpdmVzIHRoZSBFVlANCj4gZGlnZXN0DQo+ID4gdmFsdWUuDQo+ID4NCj4gPiAoMikgUGxl YXNlIGV4dGVuZCB0aGUgY29tbWVudCBvbiBEaWdlc3Qgd2l0aCB0aGUgZm9sbG93aW5nOg0KPiA+ DQo+ID4gICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBwcm92aWRpbmcgZW5vdWdoIHN0 b3JhZ2UgZm9yIHRoZSBkaWdlc3QNCj4gPiAgIGFsZ29yaXRobSBzZWxlY3RlZCB3aXRoIEV2cE1k SW5pdCgpLiBQcm92aWRpbmcgRVZQX01BWF9NRF9TSVpFIGJ5dGVzDQo+ID4gICB3aWxsIHN1ZmZp Y2UgZm9yIHN0b3JpbmcgdGhlIGRpZ2VzdCByZWdhcmRsZXNzIG9mIHRoZSBhbGdvcml0aG0gY2hv c2VuDQo+ID4gICBpbiBFdnBNZEluaXQoKS4NCj4gPg0KPiA+IChFVlBfTUFYX01EX1NJWkUgaXMg YSBwdWJsaWMgT3BlblNTTCBtYWNybyBhbmQgSSB0aGluayB3ZSBzaG91bGQgb3Blbmx5DQo+ID4g YWR2ZXJ0aXNlIGl0IHRvIGNvbnN1bWVycyBpbiBlZGsyLikNCj4gPg0KPiA+ID4gKw0KPiA+ID4g KyAgQHJldHZhbCBUUlVFICAgRVZQIGRpZ2VzdCBjb21wdXRhdGlvbiBzdWNjZWVkZWQuDQo+ID4g PiArICBAcmV0dmFsIEZBTFNFICBFVlAgZGlnZXN0IGNvbXB1dGF0aW9uIGZhaWxlZC4NCj4gPiA+ ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRXZw TWRGaW5hbCAoDQo+ID4gPiArICBJTiBPVVQgIFZPSUQgICAqRXZwTWRDb250ZXh0LA0KPiA+ID4g KyAgT1VUICAgICBVSU5UOCAgKkRpZ2VzdFZhbHVlDQo+ID4NCj4gPiAoMykgRGlnZXN0VmFsdWUg c2hvdWxkIGJlIG1hcmtlZCBPUFRJT05BTCBpbiBteSBvcGluaW9uLCBhcyBOVUxMIGlzDQo+ID4g ZGVsaWJlcmF0ZWx5IHBlcm1pdHRlZCAoZm9yIGp1c3QgZnJlZWluZyB0aGUgY29udGV4dCkuDQo+ ID4NCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBDb21wdXRlcyB0 aGUgbWVzc2FnZSBkaWdlc3Qgb2YgYW4gaW5wdXQgZGF0YSBidWZmZXIuDQo+ID4gPiArDQo+ID4g PiArICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIHRoZSBtZXNzYWdlIGRpZ2VzdCBvZiBhIGdpdmVu IGRhdGEgYnVmZmVyLCBhbmQNCj4gcGxhY2VzDQo+ID4gPiArICB0aGUgZGlnZXN0IHZhbHVlIGlu dG8gdGhlIHNwZWNpZmllZCBtZW1vcnkuDQo+ID4gPiArDQo+ID4gPiArICBJZiBEaWdlc3ROYW1l IGlzIE5VTEwsIHJldHVybiBGQUxTRS4NCj4gPiA+ICsgIElmIERhdGEgaXMgTlVMTCBhbmQgRGF0 YVNpemUgaXMgbm90IHplcm8sIHJldHVybiBGQUxTRS4NCj4gPiA+ICsgIElmIEhhc2hWYWx1ZSBp cyBOVUxMLCByZXR1cm4gRkFMU0UuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICAgIERp Z2VzdE5hbWUgICAgUG9pbnRlciB0byB0aGUgZGlnZXN0IG5hbWUuDQo+ID4gPiArICBAcGFyYW1b aW5dICAgIERhdGEgICAgICAgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhl IGRhdGEgdG8gYmUNCj4gPiBoYXNoZWQuDQo+ID4gPiArICBAcGFyYW1baW5dICAgIERhdGFTaXpl ICAgICAgU2l6ZSBvZiBEYXRhIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ICsgIEBwYXJhbVtvdXRd ICAgSGFzaFZhbHVlICAgICBQb2ludGVyIHRvIGEgYnVmZmVyIHRoYXQgcmVjZWl2ZXMgdGhlIGRp Z2VzdA0KPiA+IHZhbHVlLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgRGlnZXN0 IGNvbXB1dGF0aW9uIHN1Y2NlZWRlZC4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIERpZ2VzdCBj b21wdXRhdGlvbiBmYWlsZWQuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0K PiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0V2cE1kSGFzaEFsbCAoDQo+ID4gPiArICBJTiAgQ09OU1Qg Q0hBUjggICAqRGlnZXN0TmFtZSwNCj4gPiA+ICsgIElOICBDT05TVCBWT0lEICAgICpEYXRhLA0K PiA+ID4gKyAgSU4gIFVJTlROICAgICAgICAgRGF0YVNpemUsDQo+ID4gPiArICBPVVQgVUlOVDgg ICAgICAgICAqSGFzaFZhbHVlDQo+ID4gPiArICApOw0KPiA+ID4gKw0KPiA+ID4NCj4gPg0KPiAv Lz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KPiA+ID09PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+ICAvLyAgICBTeW1tZXRy aWMgQ3J5cHRvZ3JhcGh5IFByaW1pdGl2ZQ0KPiA+ID4NCj4gPg0KPiAvLz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ID09 PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFy eS9CYXNlQ3J5cHRMaWIvRXZwL0NyeXB0RXZwTWQuYw0KPiA+IGIvQ3J5cHRvUGtnL0xpYnJhcnkv QmFzZUNyeXB0TGliL0V2cC9DcnlwdEV2cE1kLmMNCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gPiBpbmRleCAwMDAwMDAwMDAwLi5iMjc3MGE5MTg2DQo+ID4gPiAtLS0gL2Rldi9udWxs DQo+ID4gPiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvRXZwL0NyeXB0RXZw TWQuYw0KPiA+ID4gQEAgLTAsMCArMSwyNTcgQEANCj4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ICsg IEVWUCBNRCBXcmFwcGVyIEltcGxlbWVudGF0aW9uIGZvciBPcGVuU1NMLg0KPiA+ID4gKw0KPiA+ ID4gK0NvcHlyaWdodCAoYykgMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPg0KPiA+ID4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ut UGF0ZW50DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUgIklu dGVybmFsQ3J5cHRMaWIuaCINCj4gPiA+ICsjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4NCj4gPiA+ ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEFsbG9jYXRlcyBhbmQgaW5pdGlhbGl6ZXMgb25lIEVW UF9NRF9DVFggY29udGV4dCBmb3Igc3Vic2VxdWVudCBFVlBfTUQNCj4gPiB1c2UuDQo+ID4gPiAr DQo+ID4gPiArICBJZiBEaWdlc3ROYW1lIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgICBEaWdlc3ROYW1lICAgIFBvaW50ZXIgdG8gdGhl IGRpZ2VzdCBuYW1lIGFzIGEgTlVMTC0NCj4gPiB0ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZy4NCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZCBkaWdlc3QgbmFtZXMgYXJl Og0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ENSwgU0hBMSwgU0hBMjI0 LCBTSEEyNTYsIFNIQTM4NCwgU0hBNTEyDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU0hBMy0yMjQsIFNIQTMtMjU2LCBTSEEzLTM4NCwgU0hBMy01MTINCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTTTMNCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR1cm4g IFBvaW50ZXIgdG8gdGhlIEVWUF9NRF9DVFggY29udGV4dCB0aGF0IGhhcyBiZWVuIGFsbG9jYXRl ZCBhbmQNCj4gPiBpbml0aWFsaXplZC4NCj4gPiA+ICsgICAgICAgICAgIElmIERpZ2VzdE5hbWUg aXMgaW52YWxpZCwgcmV0dXJucyBOVUxMLg0KPiA+ID4gKyAgICAgICAgICAgSWYgdGhlIGFsbG9j YXRpb25zIGZhaWxzLCByZXR1cm5zIE5VTEwuDQo+ID4gPiArICAgICAgICAgICBJZiBpbml0aWFs aXphdGlvbiBmYWlscywgcmV0dXJucyBOVUxMLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4g K1ZPSUQgKg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0V2cE1kSW5pdCAoDQo+ID4gPiArICBJTiAg Q09OU1QgQ0hBUjggICAqRGlnZXN0TmFtZQ0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsg IEVWUF9NRCAgICAqRGlnZXN0Ow0KPiA+ID4gKyAgVk9JRCAgICAgICpFdnBNZENvbnRleHQ7DQo+ ID4gPiArDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gQ2hlY2sgaW5wdXQgcGFyYW1ldGVycy4N Cj4gPiA+ICsgIC8vDQo+ID4gPiArICBpZiAoRGlnZXN0TmFtZSA9PSBOVUxMKSB7DQo+ID4gPiAr ICAgIHJldHVybiBOVUxMOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgLy8NCj4gPiA+ ICsgIC8vIEFsbG9jYXRlIEVWUF9NRF9DVFggQ29udGV4dA0KPiA+ID4gKyAgLy8NCj4gPiA+ICsg IEV2cE1kQ29udGV4dCA9IEVWUF9NRF9DVFhfbmV3ICgpOw0KPiA+ID4gKyAgaWYgKEV2cE1kQ29u dGV4dCA9PSBOVUxMKSB7DQo+ID4gPiArICAgIHJldHVybiBOVUxMOw0KPiA+ID4gKyAgfQ0KPiA+ ID4gKw0KPiA+ID4gKyAgRGlnZXN0ID0gRVZQX2dldF9kaWdlc3RieW5hbWUgKERpZ2VzdE5hbWUp Ow0KPiA+DQo+ID4gSSB0aGluayB0aGlzIG1heSBub3QgY29tcGlsZSB3aXRoIGdjYyAoYW5kIGNv cnJlY3RseSBzbykuIFRoZSBwb2ludGVyDQo+ID4gcmV0dXJuZWQgYnkgRVZQX2dldF9kaWdlc3Ri eW5hbWUoKSBpcyBjb25zdC1xdWFsaWZpZWQsIGJ1dCB3aXRoIHRoZQ0KPiA+IGFzc2lnbm1lbnQs IHdlJ3JlIHRocm93aW5nIGF3YXkgdGhlIGNvbnN0LW5lc3MuDQo+ID4NCj4gPiAoNCkgUGxlYXNl IGNvbnN0LXF1YWxpZnkgdGhlICJEaWdlc3QiIGxvY2FsIHBvaW50ZXIuDQo+ID4NCj4gPiA+ICsg IGlmIChEaWdlc3QgPT0gTlVMTCkgew0KPiA+ID4gKyAgICByZXR1cm4gTlVMTDsNCj4gPiA+ICsg IH0NCj4gPg0KPiA+ICg1KSBUaGlzIGlzIGEgbWVtb3J5IGxlYWsgSSBiZWxpZXZlOyAiRXZwTWRD b250ZXh0IiBpcyBsZWFrZWQuDQo+ID4NCj4gPiBGb3Iga2VlcGluZyB0aGUgY29udHJvbCBmbG93 IHNpbXBsZSwgY29uc2lkZXIgbW92aW5nDQo+ID4gRVZQX2dldF9kaWdlc3RieW5hbWUoKSBhYm92 ZSBFVlBfTURfQ1RYX25ldygpLg0KPiA+DQo+ID4gPiArDQo+ID4gPiArICAvLw0KPiA+ID4gKyAg Ly8gSW5pdGlhbGl6ZSBDb250ZXh0DQo+ID4gPiArICAvLw0KPiA+ID4gKyAgaWYgKEVWUF9EaWdl c3RJbml0X2V4IChFdnBNZENvbnRleHQsIERpZ2VzdCwgTlVMTCkgIT0gMSkgew0KPiA+ID4gKyAg ICBFVlBfTURfQ1RYX2ZyZWUgKEV2cE1kQ29udGV4dCk7DQo+ID4gPiArICAgIHJldHVybiBOVUxM Ow0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIEV2cE1kQ29udGV4dDsNCj4g PiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBNYWtlcyBhIGNvcHkgb2YgYW4g ZXhpc3RpbmcgRVZQX01EIGNvbnRleHQuDQo+ID4gPiArDQo+ID4gPiArICBJZiBFdnBNZENvbnRl eHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArICBJZiBOZXdFdnBNZENvbnRl eHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1b aW5dICBFdnBNZENvbnRleHQgICAgIFBvaW50ZXIgdG8gRVZQX01EIGNvbnRleHQgYmVpbmcgY29w aWVkLg0KPiA+ID4gKyAgQHBhcmFtW291dF0gTmV3RXZwTWRDb250ZXh0ICBQb2ludGVyIHRvIG5l dyBFVlBfTUQgY29udGV4dC4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgIEVWUF9N RCBjb250ZXh0IGNvcHkgc3VjY2VlZGVkLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgRVZQX01E IGNvbnRleHQgY29weSBmYWlsZWQuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVB Tg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0V2cE1kRHVwbGljYXRlICgNCj4gPiA+ICsgIElOICBD T05TVCBWT0lEICAgICpFdnBNZENvbnRleHQsDQo+ID4gPiArICBPVVQgVk9JRCAgICAgICAgICAq TmV3RXZwTWRDb250ZXh0DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgLy8NCj4gPiA+ ICsgIC8vIENoZWNrIGlucHV0IHBhcmFtZXRlcnMuDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgaWYg KEV2cE1kQ29udGV4dCA9PSBOVUxMIHx8IE5ld0V2cE1kQ29udGV4dCA9PSBOVUxMKSB7DQo+ID4g PiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIGlmIChF VlBfTURfQ1RYX2NvcHkgKE5ld0V2cE1kQ29udGV4dCwgRXZwTWRDb250ZXh0KSAhPSAxKSB7DQo+ ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIHJl dHVybiBUUlVFOw0KPiA+ID4gK30NCj4gPg0KPiA+ICg2KSBDYW4geW91IHBsZWFzZSBjb25maXJt IHRoYXQgdGhlIGNhbGxlciBpcyBzdXBwb3NlZCB0byBpbml0aWFsaXplDQo+ID4gIk5ld0V2cE1k Q29udGV4dCIgd2l0aCBFdnBNZEluaXQoKSBmaXJzdCwgYmVmb3JlIGNhbGxpbmcgRXZwTWREdXBs aWNhdGUoKT8NCj4gPg0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRGlnZXN0cyB0aGUg aW5wdXQgZGF0YSBhbmQgdXBkYXRlcyBFVlBfTUQgY29udGV4dC4NCj4gPiA+ICsNCj4gPiA+ICsg IFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgRVZQIGRpZ2VzdCBvbiBhIGRhdGEgYnVmZmVyIG9mIHRo ZSBzcGVjaWZpZWQgc2l6ZS4NCj4gPiA+ICsgIEl0IGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGlt ZXMgdG8gY29tcHV0ZSB0aGUgZGlnZXN0IG9mIGxvbmcgb3INCj4gPiBkaXNjb250aW51b3VzIGRh dGEgc3RyZWFtcy4NCj4gPiA+ICsgIEVWUF9NRCBjb250ZXh0IHNob3VsZCBiZSBhbHJlYWR5IGNv cnJlY3RseSBpbml0aWFsaXplZCBieSBFdnBNZEluaXQoKSwgYW5kDQo+ID4gc2hvdWxkIG5vdA0K PiA+ID4gKyAgYmUgZmluYWxpemVkIGJ5IEV2cE1kRmluYWwoKS4gQmVoYXZpb3Igd2l0aCBpbnZh bGlkIGNvbnRleHQgaXMgdW5kZWZpbmVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgRXZwTWRDb250 ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgSWYgRGF0YSBpcyBOVUxM IGFuZCBEYXRhU2l6ZSBpcyBub3QgemVybywgcmV0dXJuIEZBTFNFLg0KPiA+ID4gKw0KPiA+ID4g KyAgQHBhcmFtW2luLCBvdXRdICBFdnBNZENvbnRleHQgICAgICAgUG9pbnRlciB0byB0aGUgRVZQ X01EIGNvbnRleHQuDQo+ID4gPiArICBAcGFyYW1baW5dICAgICAgIERhdGEgICAgICAgICAgICAg ICBQb2ludGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgZGF0YSB0bw0KPiBiZQ0KPiA+ IGRpZ2VzdGVkLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgICBEYXRhU2l6ZSAgICAgICAgICAg U2l6ZSBvZiBEYXRhIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwg VFJVRSAgIEVWUCBkYXRhIGRpZ2VzdCBzdWNjZWVkZWQuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNF ICBFVlAgZGF0YSBkaWdlc3QgZmFpbGVkLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0JP T0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFdnBNZFVwZGF0ZSAoDQo+ID4gPiArICBJTiBP VVQgIFZPSUQgICAgICAgICpFdnBNZENvbnRleHQsDQo+ID4gPiArICBJTiAgICAgIENPTlNUIFZP SUQgICpEYXRhLA0KPiA+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICBEYXRhU2l6ZQ0KPiA+ID4g KyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBDaGVjayBpbnB1dCBwYXJh bWV0ZXJzLg0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIGlmIChFdnBNZENvbnRleHQgPT0gTlVMTCkg ew0KPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiAr ICAvLw0KPiA+ID4gKyAgLy8gQ2hlY2sgaW52YWxpZCBwYXJhbWV0ZXJzLCBpbiBjYXNlIG9ubHkg RGF0YUxlbmd0aCB3YXMgY2hlY2tlZCBpbg0KPiA+IE9wZW5TU0wNCj4gPiA+ICsgIC8vDQo+ID4g PiArICBpZiAoRGF0YSA9PSBOVUxMICYmIERhdGFTaXplICE9IDApIHsNCj4gPiA+ICsgICAgcmV0 dXJuIEZBTFNFOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8v IE9wZW5TU0wgRVZQIGRpZ2VzdCB1cGRhdGUNCj4gPiA+ICsgIC8vDQo+ID4gPiArICBpZiAoRVZQ X0RpZ2VzdFVwZGF0ZSAoRXZwTWRDb250ZXh0LCBEYXRhLCBEYXRhU2l6ZSkgIT0gMSkgew0KPiA+ ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICByZXR1 cm4gVFJVRTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBDb21wbGV0 ZXMgY29tcHV0YXRpb24gb2YgdGhlIEVWUCBkaWdlc3QgdmFsdWUuDQo+ID4gPiArICBSZWxlYXNl cyB0aGUgc3BlY2lmaWVkIEVWUF9NRF9DVFggY29udGV4dC4NCj4gPiA+ICsNCj4gPiA+ICsgIFRo aXMgZnVuY3Rpb24gY29tcGxldGVzIEVWUCBoYXNoIGNvbXB1dGF0aW9uIGFuZCByZXRyaWV2ZXMg dGhlIGRpZ2VzdA0KPiA+IHZhbHVlIGludG8NCj4gPiA+ICsgIHRoZSBzcGVjaWZpZWQgbWVtb3J5 LiBBZnRlciB0aGlzIGZ1bmN0aW9uIGhhcyBiZWVuIGNhbGxlZCwgdGhlIEVWUCBjb250ZXh0DQo+ ID4gY2Fubm90DQo+ID4gPiArICBiZSB1c2VkIGFnYWluLg0KPiA+ID4gKyAgRVZQIGNvbnRleHQg c2hvdWxkIGJlIGFscmVhZHkgY29ycmVjdGx5IGluaXRpYWxpemVkIGJ5IEV2cE1kSW5pdCgpLCBh bmQNCj4gPiBzaG91bGQNCj4gPiA+ICsgIG5vdCBiZSBmaW5hbGl6ZWQgYnkgRXZwTWRGaW5hbCgp LiBCZWhhdmlvciB3aXRoIGludmFsaWQgRVZQIGNvbnRleHQgaXMNCj4gPiB1bmRlZmluZWQuDQo+ ID4gPiArDQo+ID4gPiArICBJZiBFdnBNZENvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFM U0UuDQo+ID4gPiArICBJZiBEaWdlc3RWYWx1ZSBpcyBOVUxMLCBmcmVlIHRoZSBDb250ZXh0IHRo ZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBFdnBN ZENvbnRleHQgICBQb2ludGVyIHRvIHRoZSBFVlAgY29udGV4dC4NCj4gPiA+ICsgIEBwYXJhbVtv dXRdICAgICAgRGlnZXN0ICAgICAgICAgUG9pbnRlciB0byBhIGJ1ZmZlciB0aGF0IHJlY2VpdmVz IHRoZSBFVlANCj4gZGlnZXN0DQo+ID4gdmFsdWUuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFs IFRSVUUgICBFVlAgZGlnZXN0IGNvbXB1dGF0aW9uIHN1Y2NlZWRlZC4NCj4gPiA+ICsgIEByZXR2 YWwgRkFMU0UgIEVWUCBkaWdlc3QgY29tcHV0YXRpb24gZmFpbGVkLg0KPiA+ID4gKw0KPiA+ID4g KyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFdnBNZEZpbmFsICgN Cj4gPiA+ICsgIElOIE9VVCAgVk9JRCAgICpFdnBNZENvbnRleHQsDQo+ID4gPiArICBPVVQgICAg IFVJTlQ4ICAqRGlnZXN0VmFsdWUNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBVSU5U MzIgICAgTGVuZ3RoOw0KPiA+ID4gKyAgQk9PTEVBTiAgIFJldHVyblZhbHVlOw0KPiA+ID4gKw0K PiA+ID4gKyAgUmV0dXJuVmFsdWUgPSBUUlVFOw0KPiA+ID4gKw0KPiA+ID4gKyAgLy8NCj4gPiA+ ICsgIC8vIENoZWNrIGlucHV0IHBhcmFtZXRlcnMuDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgaWYg KEV2cE1kQ29udGV4dCA9PSBOVUxMKSB7DQo+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ ICsgIH0NCj4gPiA+ICsgIGlmIChEaWdlc3RWYWx1ZSA9PSBOVUxMKSB7DQo+ID4gPiArICAgIEVW UF9NRF9DVFhfZnJlZSAoRXZwTWRDb250ZXh0KTsNCj4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0K PiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIE9wZW5TU0wgRVZQ IGRpZ2VzdCBmaW5hbGl6YXRpb24NCj4gPiA+ICsgIC8vDQo+ID4gPiArICBpZiAoRVZQX0RpZ2Vz dEZpbmFsX2V4IChFdnBNZENvbnRleHQsIERpZ2VzdFZhbHVlLCAmTGVuZ3RoKSAhPSAxKSB7DQo+ ID4gPiArICAgIFJldHVyblZhbHVlID0gRkFMU0U7DQo+ID4gPiArICB9DQo+ID4NCj4gPg0KPiA+ ICg3KSBJIHN1Z2dlc3QgZHJvcHBpbmcgdGhlICJMZW5ndGgiIGxvY2FsIHZhcmlhYmxlLiBFVlBf RGlnZXN0RmluYWxfZXgoKQ0KPiA+IGRlYWxzIGZpbmUgd2l0aCB0aGUgdGhpcmQgcGFyYW1ldGVy IGJlaW5nIE5VTEwsIGFjY29yZGluZyB0byB0aGUgZG9jcw0KPiA+IChhbmQgdGhlIGNvZGUpLg0K PiA+DQo+ID4NCj4gPiA+ICsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBGcmVlIE9wZW5TU0wg RVZQX01EX0NUWCBDb250ZXh0DQo+ID4gPiArICAvLw0KPiA+ID4gKyAgRVZQX01EX0NUWF9mcmVl IChFdnBNZENvbnRleHQpOw0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIFJldHVyblZhbHVlOw0K PiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIENvbXB1dGVzIHRoZSBtZXNz YWdlIGRpZ2VzdCBvZiBhbiBpbnB1dCBkYXRhIGJ1ZmZlci4NCj4gPiA+ICsNCj4gPiA+ICsgIFRo aXMgZnVuY3Rpb24gcGVyZm9ybXMgdGhlIG1lc3NhZ2UgZGlnZXN0IG9mIGEgZ2l2ZW4gZGF0YSBi dWZmZXIsIGFuZA0KPiBwbGFjZXMNCj4gPiA+ICsgIHRoZSBkaWdlc3QgdmFsdWUgaW50byB0aGUg c3BlY2lmaWVkIG1lbW9yeS4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIERpZ2VzdE5hbWUgaXMgTlVM TCwgcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgSWYgRGF0YSBpcyBOVUxMIGFuZCBEYXRhU2l6ZSBp cyBub3QgemVybywgcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgSWYgSGFzaFZhbHVlIGlzIE5VTEws IHJldHVybiBGQUxTRS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gICAgRGlnZXN0TmFt ZSAgICBQb2ludGVyIHRvIHRoZSBkaWdlc3QgbmFtZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gICAg RGF0YSAgICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgZGF0YSB0 byBiZQ0KPiA+IGhhc2hlZC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gICAgRGF0YVNpemUgICAgICBT aXplIG9mIERhdGEgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gKyAgQHBhcmFtW291dF0gICBIYXNo VmFsdWUgICAgIFBvaW50ZXIgdG8gYSBidWZmZXIgdGhhdCByZWNlaXZlcyB0aGUgZGlnZXN0DQo+ ID4gdmFsdWUuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICBEaWdlc3QgY29tcHV0 YXRpb24gc3VjY2VlZGVkLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgRGlnZXN0IGNvbXB1dGF0 aW9uIGZhaWxlZC4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiAr RUZJQVBJDQo+ID4gPiArRXZwTWRIYXNoQWxsICgNCj4gPiA+ICsgIElOICBDT05TVCBDSEFSOCAg ICpEaWdlc3ROYW1lLA0KPiA+ID4gKyAgSU4gIENPTlNUIFZPSUQgICAgKkRhdGEsDQo+ID4gPiAr ICBJTiAgVUlOVE4gICAgICAgICBEYXRhU2l6ZSwNCj4gPiA+ICsgIE9VVCBVSU5UOCAgICAgICAg ICpIYXNoVmFsdWUNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBCT09MRUFOICAgUmVz dWx0Ow0KPiA+ID4gKyAgVk9JRCAgICAgICpFdnBNZENvbnRleHQ7DQo+ID4gPiArDQo+ID4gPiAr ICBFdnBNZENvbnRleHQgPSBFdnBNZEluaXQgKERpZ2VzdE5hbWUpOw0KPiA+ID4gKyAgaWYgKEV2 cE1kQ29udGV4dCA9PSBOVUxMKSB7DQo+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ICsg IH0NCj4gPiA+ICsNCj4gPiA+ICsgIFJlc3VsdCA9IEV2cE1kVXBkYXRlIChFdnBNZENvbnRleHQs IERhdGEsIERhdGFTaXplKTsNCj4gPiA+ICsgIGlmIChSZXN1bHQgPT0gRkFMU0UpIHsNCj4gPg0K PiA+ICg4KSBTdHlsZTogcGxlYXNlIHdyaXRlICghUmVzdWx0KS4NCj4gPg0KPiA+DQo+ID4gPiAr ICAgIEV2cE1kRmluYWwgKEV2cE1kQ29udGV4dCwgTlVMTCk7DQo+ID4gPiArICAgIHJldHVybiBG QUxTRTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIFJlc3VsdCA9IEV2cE1kRmluYWwg KEV2cE1kQ29udGV4dCwgSGFzaFZhbHVlKTsNCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBSZXN1 bHQ7DQo+ID4gPiArfQ0KPiA+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VD cnlwdExpYi9FdnAvQ3J5cHRFdnBNZE51bGwuYw0KPiA+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFz ZUNyeXB0TGliL0V2cC9DcnlwdEV2cE1kTnVsbC5jDQo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwMC4uMDM4ZjYzODAxZg0KPiA+ID4gLS0tIC9kZXYvbnVs bA0KPiA+ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0V2cC9DcnlwdEV2 cE1kTnVsbC5jDQo+ID4gPiBAQCAtMCwwICsxLDEyOCBAQA0KPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ ID4gKyAgRVZQIE1EIFdyYXBwZXIgTnVsbCBMaWJyYXJ5Lg0KPiA+ID4gKw0KPiA+ID4gK0NvcHly aWdodCAoYykgMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS Pg0KPiA+ID4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUgIkludGVybmFsQ3J5 cHRMaWIuaCINCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEFsbG9jYXRlcyBhbmQgaW5p dGlhbGl6ZXMgb25lIEVWUF9NRF9DVFggY29udGV4dCBmb3Igc3Vic2VxdWVudCBFVlBfTUQNCj4g PiB1c2UuDQo+ID4gPiArDQo+ID4gPiArICBSZXR1cm4gRkFMU0UgdG8gaW5kaWNhdGUgdGhpcyBp bnRlcmZhY2UgaXMgbm90IHN1cHBvcnRlZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0g ICAgRGlnZXN0TmFtZSAgICBQb2ludGVyIHRvIHRoZSBkaWdlc3QgbmFtZSBhcyBhIE5VTEwtDQo+ ID4gdGVybWluYXRlZCBBU0NJSSBzdHJpbmcuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVmFsaWQgZGlnZXN0IG5hbWVzIGFyZToNCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBNRDUsIFNIQTEsIFNIQTIyNCwgU0hBMjU2LCBTSEEzODQsIFNIQTUxMg0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQTMtMjI0LCBTSEEzLTI1Niwg U0hBMy0zODQsIFNIQTMtNTEyDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U00zDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIE5VTEwgIFRoaXMgaW50ZXJmYWNlIGlzIG5v dCBzdXBwb3J0ZWQuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVk9JRCAqDQo+ID4gPiAr RUZJQVBJDQo+ID4gPiArRXZwTWRJbml0ICgNCj4gPiA+ICsgIElOICBDT05TVCBDSEFSOCAgICpE aWdlc3ROYW1lDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7 DQo+ID4gPiArICByZXR1cm4gTlVMTDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ ID4gPiArICBNYWtlcyBhIGNvcHkgb2YgYW4gZXhpc3RpbmcgRVZQX01EIGNvbnRleHQuDQo+ID4g PiArDQo+ID4gPiArICBSZXR1cm4gRkFMU0UgdG8gaW5kaWNhdGUgdGhpcyBpbnRlcmZhY2UgaXMg bm90IHN1cHBvcnRlZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEV2cE1kQ29udGV4 dCAgICAgUG9pbnRlciB0byBFVlBfTUQgY29udGV4dCBiZWluZyBjb3BpZWQuDQo+ID4gPiArICBA cGFyYW1bb3V0XSBOZXdFdnBNZENvbnRleHQgIFBvaW50ZXIgdG8gbmV3IEVWUF9NRCBjb250ZXh0 Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgVGhpcyBpbnRlcmZhY2UgaXMgbm90 IHN1cHBvcnRlZC4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiAr RUZJQVBJDQo+ID4gPiArRXZwTWREdXBsaWNhdGUgKA0KPiA+ID4gKyAgSU4gIENPTlNUIFZPSUQg ICAgKkV2cE1kQ29udGV4dCwNCj4gPiA+ICsgIE9VVCBWT0lEICAgICAgICAgICpOZXdFdnBNZENv bnRleHQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4g PiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4g PiArICBEaWdlc3RzIHRoZSBpbnB1dCBkYXRhIGFuZCB1cGRhdGVzIEVWUF9NRCBjb250ZXh0Lg0K PiA+ID4gKw0KPiA+ID4gKyAgUmV0dXJuIEZBTFNFIHRvIGluZGljYXRlIHRoaXMgaW50ZXJmYWNl IGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEV2 cE1kQ29udGV4dCAgICAgICBQb2ludGVyIHRvIHRoZSBFVlBfTUQgY29udGV4dC4NCj4gPiA+ICsg IEBwYXJhbVtpbl0gICAgICAgRGF0YSAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZl ciBjb250YWluaW5nIHRoZSBkYXRhIHRvDQo+IGJlDQo+ID4gZGlnZXN0ZWQuDQo+ID4gPiArICBA cGFyYW1baW5dICAgICAgIERhdGFTaXplICAgICAgICAgICBTaXplIG9mIERhdGEgYnVmZmVyIGlu IGJ5dGVzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgVGhpcyBpbnRlcmZhY2Ug aXMgbm90IHN1cHBvcnRlZC4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ ID4gPiArRUZJQVBJDQo+ID4gPiArRXZwTWRVcGRhdGUgKA0KPiA+ID4gKyAgSU4gT1VUICBWT0lE ICAgICAgICAqRXZwTWRDb250ZXh0LA0KPiA+ID4gKyAgSU4gICAgICBDT05TVCBWT0lEICAqRGF0 YSwNCj4gPiA+ICsgIElOICAgICAgVUlOVE4gICAgICAgRGF0YVNpemUNCj4gPiA+ICsgICkNCj4g PiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBGQUxTRTsN Cj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBDb21wbGV0ZXMgY29tcHV0 YXRpb24gb2YgdGhlIEVWUCBkaWdlc3QgdmFsdWUuDQo+ID4gPiArICBSZWxlYXNlcyB0aGUgc3Bl Y2lmaWVkIEVWUF9NRF9DVFggY29udGV4dC4NCj4gPiA+ICsNCj4gPiA+ICsgIFJldHVybiBGQUxT RSB0byBpbmRpY2F0ZSB0aGlzIGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLg0KPiA+ID4gKw0K PiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBFdnBNZENvbnRleHQgICBQb2ludGVyIHRvIHRoZSBF VlAgY29udGV4dC4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdICAgICAgRGlnZXN0ICAgICAgICAgUG9p bnRlciB0byBhIGJ1ZmZlciB0aGF0IHJlY2VpdmVzIHRoZSBFVlANCj4gZGlnZXN0DQo+ID4gdmFs dWUuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICBUaGlzIGludGVyZmFjZSBpcyBu b3Qgc3VwcG9ydGVkLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ ICtFRklBUEkNCj4gPiA+ICtFdnBNZEZpbmFsICgNCj4gPiA+ICsgIElOIE9VVCAgVk9JRCAgICpF dnBNZENvbnRleHQsDQo+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAqRGlnZXN0VmFsdWUNCj4gPiA+ ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVy biBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBDb21wdXRl cyB0aGUgbWVzc2FnZSBkaWdlc3Qgb2YgYW4gaW5wdXQgZGF0YSBidWZmZXIuDQo+ID4gPiArDQo+ ID4gPiArICBSZXR1cm4gRkFMU0UgdG8gaW5kaWNhdGUgdGhpcyBpbnRlcmZhY2UgaXMgbm90IHN1 cHBvcnRlZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gICAgRGlnZXN0TmFtZSAgICBQ b2ludGVyIHRvIHRoZSBkaWdlc3QgbmFtZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gICAgRGF0YSAg ICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgZGF0YSB0byBiZQ0K PiA+IGhhc2hlZC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gICAgRGF0YVNpemUgICAgICBTaXplIG9m IERhdGEgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gKyAgQHBhcmFtW291dF0gICBIYXNoVmFsdWUg ICAgIFBvaW50ZXIgdG8gYSBidWZmZXIgdGhhdCByZWNlaXZlcyB0aGUgZGlnZXN0DQo+ID4gdmFs dWUuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICBUaGlzIGludGVyZmFjZSBpcyBu b3Qgc3VwcG9ydGVkLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ ICtFRklBUEkNCj4gPiA+ICtFdnBNZEhhc2hBbGwgKA0KPiA+ID4gKyAgSU4gIENPTlNUIENIQVI4 ICAgKkRpZ2VzdE5hbWUsDQo+ID4gPiArICBJTiAgQ09OU1QgVk9JRCAgICAqRGF0YSwNCj4gPiA+ ICsgIElOICBVSU5UTiAgICAgICAgIERhdGFTaXplLA0KPiA+ID4gKyAgT1VUIFVJTlQ4ICAgICAg ICAgKkhhc2hWYWx1ZQ0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEFTU0VSVCAoRkFM U0UpOw0KPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gK30NCj4gPiA+IGRpZmYgLS1naXQg YS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWJOdWxsL0V2cC9DcnlwdEV2cE1kTnVsbC5j DQo+ID4gYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWJOdWxsL0V2cC9DcnlwdEV2cE1k TnVsbC5jDQo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAw MC4uMDM4ZjYzODAxZg0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvQ3J5cHRvUGtn L0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9FdnAvQ3J5cHRFdnBNZE51bGwuYw0KPiA+ID4gQEAg LTAsMCArMSwxMjggQEANCj4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ICsgIEVWUCBNRCBXcmFwcGVy IE51bGwgTGlicmFyeS4NCj4gPiA+ICsNCj4gPiA+ICtDb3B5cmlnaHQgKGMpIDIwMjAsIEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICtTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gKw0KPiA+ID4gKyoqLw0K PiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRlICJJbnRlcm5hbENyeXB0TGliLmgiDQo+ID4gPiArDQo+ ID4gPiArLyoqDQo+ID4gPiArICBBbGxvY2F0ZXMgYW5kIGluaXRpYWxpemVzIG9uZSBFVlBfTURf Q1RYIGNvbnRleHQgZm9yIHN1YnNlcXVlbnQgRVZQX01EDQo+ID4gdXNlLg0KPiA+ID4gKw0KPiA+ ID4gKyAgUmV0dXJuIEZBTFNFIHRvIGluZGljYXRlIHRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBw b3J0ZWQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICAgIERpZ2VzdE5hbWUgICAgUG9p bnRlciB0byB0aGUgZGlnZXN0IG5hbWUgYXMgYSBOVUxMLQ0KPiA+IHRlcm1pbmF0ZWQgQVNDSUkg c3RyaW5nLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkIGRpZ2Vz dCBuYW1lcyBhcmU6DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUQ1LCBT SEExLCBTSEEyMjQsIFNIQTI1NiwgU0hBMzg0LCBTSEE1MTINCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTSEEzLTIyNCwgU0hBMy0yNTYsIFNIQTMtMzg0LCBTSEEzLTUxMg0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNMw0KPiA+ID4gKw0KPiA+ID4g KyAgQHJldHVybiBOVUxMICBUaGlzIGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLg0KPiA+ID4g Kw0KPiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQgKg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0V2cE1k SW5pdCAoDQo+ID4gPiArICBJTiAgQ09OU1QgQ0hBUjggICAqRGlnZXN0TmFtZQ0KPiA+ID4gKyAg KQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gKyAgcmV0dXJuIE5V TEw7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgTWFrZXMgYSBjb3B5 IG9mIGFuIGV4aXN0aW5nIEVWUF9NRCBjb250ZXh0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgUmV0dXJu IEZBTFNFIHRvIGluZGljYXRlIHRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4g PiArDQo+ID4gPiArICBAcGFyYW1baW5dICBFdnBNZENvbnRleHQgICAgIFBvaW50ZXIgdG8gRVZQ X01EIGNvbnRleHQgYmVpbmcgY29waWVkLg0KPiA+ID4gKyAgQHBhcmFtW291dF0gTmV3RXZwTWRD b250ZXh0ICBQb2ludGVyIHRvIG5ldyBFVlBfTUQgY29udGV4dC4NCj4gPiA+ICsNCj4gPiA+ICsg IEByZXR2YWwgRkFMU0UgIFRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4gPiAr DQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0V2cE1k RHVwbGljYXRlICgNCj4gPiA+ICsgIElOICBDT05TVCBWT0lEICAgICpFdnBNZENvbnRleHQsDQo+ ID4gPiArICBPVVQgVk9JRCAgICAgICAgICAqTmV3RXZwTWRDb250ZXh0DQo+ID4gPiArICApDQo+ ID4gPiArew0KPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiArICByZXR1cm4gRkFMU0U7 DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRGlnZXN0cyB0aGUgaW5w dXQgZGF0YSBhbmQgdXBkYXRlcyBFVlBfTUQgY29udGV4dC4NCj4gPiA+ICsNCj4gPiA+ICsgIFJl dHVybiBGQUxTRSB0byBpbmRpY2F0ZSB0aGlzIGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLg0K PiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBFdnBNZENvbnRleHQgICAgICAgUG9p bnRlciB0byB0aGUgRVZQX01EIGNvbnRleHQuDQo+ID4gPiArICBAcGFyYW1baW5dICAgICAgIERh dGEgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgZGF0 YSB0bw0KPiBiZQ0KPiA+IGRpZ2VzdGVkLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgICBEYXRh U2l6ZSAgICAgICAgICAgU2l6ZSBvZiBEYXRhIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ICsNCj4g PiA+ICsgIEByZXR2YWwgRkFMU0UgIFRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4g K0V2cE1kVXBkYXRlICgNCj4gPiA+ICsgIElOIE9VVCAgVk9JRCAgICAgICAgKkV2cE1kQ29udGV4 dCwNCj4gPiA+ICsgIElOICAgICAgQ09OU1QgVk9JRCAgKkRhdGEsDQo+ID4gPiArICBJTiAgICAg IFVJTlROICAgICAgIERhdGFTaXplDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgQVNT RVJUIChGQUxTRSk7DQo+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiArfQ0KPiA+ID4gKw0K PiA+ID4gKy8qKg0KPiA+ID4gKyAgQ29tcGxldGVzIGNvbXB1dGF0aW9uIG9mIHRoZSBFVlAgZGln ZXN0IHZhbHVlLg0KPiA+ID4gKyAgUmVsZWFzZXMgdGhlIHNwZWNpZmllZCBFVlBfTURfQ1RYIGNv bnRleHQuDQo+ID4gPiArDQo+ID4gPiArICBSZXR1cm4gRkFMU0UgdG8gaW5kaWNhdGUgdGhpcyBp bnRlcmZhY2UgaXMgbm90IHN1cHBvcnRlZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbiwg b3V0XSAgRXZwTWRDb250ZXh0ICAgUG9pbnRlciB0byB0aGUgRVZQIGNvbnRleHQuDQo+ID4gPiAr ICBAcGFyYW1bb3V0XSAgICAgIERpZ2VzdCAgICAgICAgIFBvaW50ZXIgdG8gYSBidWZmZXIgdGhh dCByZWNlaXZlcyB0aGUgRVZQDQo+IGRpZ2VzdA0KPiA+IHZhbHVlLg0KPiA+ID4gKw0KPiA+ID4g KyAgQHJldHZhbCBGQUxTRSAgVGhpcyBpbnRlcmZhY2UgaXMgbm90IHN1cHBvcnRlZC4NCj4gPiA+ ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRXZw TWRGaW5hbCAoDQo+ID4gPiArICBJTiBPVVQgIFZPSUQgICAqRXZwTWRDb250ZXh0LA0KPiA+ID4g KyAgT1VUICAgICBVSU5UOCAgKkRpZ2VzdFZhbHVlDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiArfQ0K PiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgQ29tcHV0ZXMgdGhlIG1lc3NhZ2UgZGlnZXN0 IG9mIGFuIGlucHV0IGRhdGEgYnVmZmVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgUmV0dXJuIEZBTFNF IHRvIGluZGljYXRlIHRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4gPiArDQo+ ID4gPiArICBAcGFyYW1baW5dICAgIERpZ2VzdE5hbWUgICAgUG9pbnRlciB0byB0aGUgZGlnZXN0 IG5hbWUuDQo+ID4gPiArICBAcGFyYW1baW5dICAgIERhdGEgICAgICAgICAgUG9pbnRlciB0byB0 aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gYmUNCj4gPiBoYXNoZWQuDQo+ID4gPiAr ICBAcGFyYW1baW5dICAgIERhdGFTaXplICAgICAgU2l6ZSBvZiBEYXRhIGJ1ZmZlciBpbiBieXRl cy4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdICAgSGFzaFZhbHVlICAgICBQb2ludGVyIHRvIGEgYnVm ZmVyIHRoYXQgcmVjZWl2ZXMgdGhlIGRpZ2VzdA0KPiA+IHZhbHVlLg0KPiA+ID4gKw0KPiA+ID4g KyAgQHJldHZhbCBGQUxTRSAgVGhpcyBpbnRlcmZhY2UgaXMgbm90IHN1cHBvcnRlZC4NCj4gPiA+ ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRXZw TWRIYXNoQWxsICgNCj4gPiA+ICsgIElOICBDT05TVCBDSEFSOCAgICpEaWdlc3ROYW1lLA0KPiA+ ID4gKyAgSU4gIENPTlNUIFZPSUQgICAgKkRhdGEsDQo+ID4gPiArICBJTiAgVUlOVE4gICAgICAg ICBEYXRhU2l6ZSwNCj4gPiA+ICsgIE9VVCBVSU5UOCAgICAgICAgICpIYXNoVmFsdWUNCj4gPiA+ ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVy biBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPg0KPiA+DQo+ID4gVGhhbmtzLA0KPiA+IExhc3psbw0K PiANCj4gDQo+IA0KDQo=