From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web11.21440.1600260976517401478 for ; Wed, 16 Sep 2020 05:56:16 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=KcxMEI7p; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: jiewen.yao@intel.com) IronPort-SDR: f/X1pGd+YYBl35er6a5f0o4mtB0NnZ0a7EtNglex+nTs6x18SeXlNP1JwYChe18eBy0kfNY5/m +LCp6aHzxd8A== X-IronPort-AV: E=McAfee;i="6000,8403,9745"; a="147140215" X-IronPort-AV: E=Sophos;i="5.76,432,1592895600"; d="scan'208";a="147140215" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Sep 2020 05:56:15 -0700 IronPort-SDR: bGHrmB+B5pqp3K0ZIKsha7jmzLVI5qmoqH6wJ5ZWsQnQ2j5NtuR1NhaieqtEUd91pM4mYE9ehA zMw/eQwvMVqw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.76,432,1592895600"; d="scan'208";a="302548502" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga003.jf.intel.com with ESMTP; 16 Sep 2020 05:56:15 -0700 Received: from orsmsx602.amr.corp.intel.com (10.22.229.15) by ORSMSX602.amr.corp.intel.com (10.22.229.15) 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:56:14 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx602.amr.corp.intel.com (10.22.229.15) 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:56:14 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.174) by edgegateway.intel.com (134.134.137.103) 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:56:11 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CV/Vo3UqPxwrqDjVMVMC9cKXdCzJ9XblMhuki2HOTCBGmJ5mGX91NYqbAdmacU/SCdmKKzqKzTn/+iq5cT3SWxzCuknkSosZY57R1z1Q0bQYXUK2rYoHljIe9zyj0QA235LW+EHCdiZa3GQBEoLJM8XFfmyPnNRgGrG8JZcvW5ONKu8429O5k4uCCJIVcJF33B42HMub5kRTTQZXGaj0M1v7bH9sJglI8Zpp/UjlIT29iK+GS9V6OK9Ubazw7arZa+w3+Chre92Jm2vRJulm/aCLuoJgDajsQl/yH1Fs+sjZDM1SJ2LE5JSR1q0egAX+Yb7vHDDdzJOiYT2reD93DA== 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=Kpq9DbwN0tkZuG8kzB9UvqJlXZwesiYGKRn1FolxSmA=; b=SKcNNPIjAyh2c132TMx5r1L+4mcTQWRbEGPugG3kxNsTqxK4T5UZpiMah50su00uR3YL8Im/Hu2ajy7cLYMY55b0eDsjbAKgVHw8QTo2N044NX26E48RNedFqj/GZfN+3iJkF7ZHbjATZyPHySNxa9Yuqu6QoTWmzXNMKjuL0ep1YjW2w3euCuV572l51dyHiu2zveTWxCSmlL6PDfkDoFvmPKaC/ra/nyhiytWl06zrFE8EcsXmCRC2t0POoLSM9qsPjHe8HkI1Pl8O39Js8+tJwSOl2Tp25KfCMaq5AvWIVEyBVY8u+pA+HPytqa72WxxgE8gBxjQFI0sZnRzk4g== 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=Kpq9DbwN0tkZuG8kzB9UvqJlXZwesiYGKRn1FolxSmA=; b=KcxMEI7pjcpx0dJ5E797PEHoApxH9UrI6vB8O7mtAfkBEbR+mXsEKQMNXaxxLprp8Cab72cf0SovMV8hQesdpm3y8VilSWXTShB5NnMWx4ib7vbIgQX7Ddtx/1vl1Hu3gfwiIaqbM/cjl/CqQrNKpknIMaQeaKw0JagRS2n+cms= Received: from CY4PR11MB1288.namprd11.prod.outlook.com (2603:10b6:903:23::8) by CY4PR1101MB2120.namprd11.prod.outlook.com (2603:10b6:910:1e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3370.16; Wed, 16 Sep 2020 12:56:10 +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:56:10 +0000 From: "Yao, Jiewen" To: "devel@edk2.groups.io" , "lersek@redhat.com" , "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/jPNHB1AABIIaAAAAe3gA= Date: Wed, 16 Sep 2020 12:56:09 +0000 Message-ID: References: <1096735a-182d-6ea1-99c2-d06e3caf4523@redhat.com> In-Reply-To: <1096735a-182d-6ea1-99c2-d06e3caf4523@redhat.com> 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: 44afdcc0-2687-4bb1-1c76-08d85a3fe27e x-ms-traffictypediagnostic: CY4PR1101MB2120: 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: 7EoN5Mv7aUMarNVKcYpotlTXHwPR+M9oe62a2Hhb8l1TFbd+09vNpdyNXT5rcbgBRuKlyU53olMCTSCUBygc7SXyr+Ir0+d5/7LdTLjGr6ojZpcflcVKcV3SVkLGVrrVVAtrfv6f7OAbwwqquJgEeMmFV6M4H6tNeNJ/Cl9fgaQXnwh9J4DDnnet4ywDVlpaQBOOdVN12JFQ7SqLLyi9SAmR/ffpXq/iL7ZA62JBEbK2QkHQbLJU0AzVa40CHJiNNPkdZNyTqkeDpQsDfDk2Evat5a8TZvgxXk2BZZiFmfBFa1+bn/1VshgWGix3w9Ly0jNvrGzETPdTYPqgolUDRALrPhOgCEIWoOKIklU9QTs9ANd5ULSnHJsOmvtzc2V50ZBs56iKGcvZd1drfKYLcA== 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)(366004)(136003)(346002)(396003)(376002)(39860400002)(966005)(83380400001)(86362001)(53546011)(6506007)(9686003)(30864003)(7696005)(107886003)(478600001)(55016002)(5660300002)(316002)(8936002)(71200400001)(76116006)(4326008)(52536014)(66946007)(26005)(186003)(110136005)(66556008)(54906003)(66476007)(8676002)(33656002)(66446008)(64756008)(6636002)(2906002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: VLDZ3m10NWRDYxwwQJsLpolVcxKgCUabY2mtdWD4k90JOwdshfLKTEeGTXt4zdGGKZdu3vjvsaUQ8laSRHhfGqsVILFjHDe7w+ILNzKZyZkBbmSf83vCIQwxoqUw0HFa0yiyv2qPIY8MuJIHw/Uf1uK4+V3+DM9/dM50aZ8OMx/MDt4eTDYWpUK+D5NGB18+A3URFmsbYCUc6lnFGam6VeOOY7PYvJq4ThhGai2tbnjNjry8lbQhKWW/xMrEMLw54aTfRfIK+1UKh3PYjDva6KqQZiboGzP7/GIrKnhjy+GX1iDQN13/4BC6DXsdncdNiK+H7xJTtBWKMSMw3McTo8QbpvyW4T3PA9MRpJJd/gqe7NUI09HUc3AeuciNaaQ0iTWWqUvRwTSqWPzGfY1gQUuvX61tfUUyHdCxq80y4LayMKZxwrnX/6hLnibAq+9ysBEocN3vM5VihHBg/n2BYoN+2rgQscc5YcOVxnqPV9U8zPZ6KRbtzFzpB/kPJLGWekKUckqqvqEWlPwVHpp1H9MubjIN8q20oUyw5kFA66eDxdlUejA/CWC39BZi2+X4tpe2DAaLcygv8U+QU5ciOAXyCxDSzdKeboAA6gRO8ut+5TZ+6WytX9I7jZd9G3295afFVluL7a97LZaOJchmEw== 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: 44afdcc0-2687-4bb1-1c76-08d85a3fe27e X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Sep 2020 12:56:09.8312 (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: FvCAyzFaP5OXPALIM8jNbcqyBfQ+U9KWnMcgSpF1Ct5eeRiKo1c8KgNRO8/jG1lE3ggN+d/L82VWz2smYly+Dw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1101MB2120 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 SSB0cnkgdG8gdW5kZXJzdGFuZCB3aGF0IGlzIHRoZSB1c2UgY2FzZSB0byBFdnBNZEZpbmFsIHdp dGhvdXQgRGlnZXN0VmFsdWUgYW5kIG9ubHkgRnJlZSB0aGUgRXZwTWRDb250ZXh0Lg0KDQpBIG5v cm1hbCB1c2FnZSB3aWxsIGJlOg0KMSkgRXZwTWRIYXNoQWxsIChEaWdlc3QpIC0gZ2V0IGRpZ2Vz dC4NCjIpIEV2cE1kSW5pdCwgRXZwTWRVcGRhdGUsIEV2cE1kVXBkYXRlLCAuLi4gLCBFdnBNZEZp bmFsIChEaWdlc3QpIC0gZ2V0IGRpZ2VzdA0KDQpXaHkgd2UgbmVlZCBzdXBwb3J0IHRoZSBjYXNl IHRvIHVzZSBFdnBNZEZpbmFsIChOVUxMKSBpbiB0aGUgZW5kIHRvIGZyZWUgY29udGV4dD8NCg0K DQpUaGFuayB5b3UNCllhbyBKaWV3ZW4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJl aGFsZiBPZiBMYXN6bG8gRXJzZWsNCj4gU2VudDogV2VkbmVzZGF5LCBTZXB0ZW1iZXIgMTYsIDIw MjAgODo0MCBQTQ0KPiBUbzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgZGV2 ZWxAZWRrMi5ncm91cHMuaW87IFp1cmNoZXIsDQo+IENocmlzdG9waGVyIEogPGNocmlzdG9waGVy LmouenVyY2hlckBpbnRlbC5jb20+DQo+IENjOiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGlu dGVsLmNvbT47IEx1LCBYaWFveXVYIDx4aWFveXV4Lmx1QGludGVsLmNvbT4NCj4gU3ViamVjdDog UmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjMgMS8zXSBDcnlwdG9Qa2cvQmFzZUNyeXB0TGliOiBB ZGQgRVZQDQo+IChFbnZlbG9wZSkgRGlnZXN0IGludGVyZmFjZQ0KPiANCj4gT24gMDkvMTYvMjAg MTQ6MDcsIFlhbywgSmlld2VuIHdyb3RlOg0KPiA+IEkgb3Zlcmxvb2tlZCB0aGUgYmVoYXZpb3Ig dGhhdCBOVUxMIERpZ2VzdFZhbHVlIHdpbGwgdGFrZSBzaWRlIGVmZmVjdCB0byBmcmVlDQo+IENv bnRleHQuDQo+ID4NCj4gPiBIaSBDaHJpc3RvcGhlcg0KPiA+IE1heSBJIHVuZGVyc3RhbmQgd2h5 IHdlIG5lZWQgZnJlZSB0aGUgY29udGV4dD8NCj4gPiBUaGlzIGRvZXMgbm90IGFsaWduIHdpdGgg b3RoZXIgZXhpc3RpbmcgSEFTSCBvciBITUFDIGZ1bmN0aW9ucy4NCj4gDQo+IEkgcmVxdWVzdGVk IHRoYXQuDQo+IA0KPiBJdCBtYWtlcyBubyBzZW5zZSB0byBrZWVwIGEgZmluYWxpemVkIGNvbnRl eHQuDQo+IA0KPiBJbiBvdGhlciB3b3JkcywgaXQgbWFrZXMgbm8gc2Vuc2UgdG8gc2VwYXJhdGUg ZmluYWxpemF0aW9uIGZyb20gZnJlZWluZy4NCj4gQSBjb250ZXh0IHRoYXQgaGFzIGJlZW4gZmlu YWxpemVkIGlzIHVudXNhYmxlIGZvciBhbnl0aGluZyBleGNlcHQgZnJlZWluZy4NCj4gDQo+IFRo YW5rcw0KPiBMYXN6bG8NCj4gDQo+ID4NCj4gPiBUaGFuayB5b3UNCj4gPiBZYW8gSmlld2VuDQo+ ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogZGV2ZWxAZWRr Mi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgWWFvLA0KPiBK aWV3ZW4NCj4gPj4gU2VudDogV2VkbmVzZGF5LCBTZXB0ZW1iZXIgMTYsIDIwMjAgNzo0NSBQTQ0K PiA+PiBUbzogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT47IGRldmVsQGVkazIuZ3Jv dXBzLmlvOyBadXJjaGVyLA0KPiA+PiBDaHJpc3RvcGhlciBKIDxjaHJpc3RvcGhlci5qLnp1cmNo ZXJAaW50ZWwuY29tPg0KPiA+PiBDYzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5j b20+OyBMdSwgWGlhb3l1WA0KPiA8eGlhb3l1eC5sdUBpbnRlbC5jb20+DQo+ID4+IFN1YmplY3Q6 IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIHYzIDEvM10gQ3J5cHRvUGtnL0Jhc2VDcnlwdExpYjog QWRkIEVWUA0KPiA+PiAoRW52ZWxvcGUpIERpZ2VzdCBpbnRlcmZhY2UNCj4gPj4NCj4gPj4gSGkg TGFzemxvDQo+ID4+IEkgZGlzYWdyZWUgdG8gcHV0IE9QVElPTkFMIGZvciBEaWdlc3RWYWx1ZSwg anVzdCBiZWNhdXNlIE5VTEwgaXMgY2hlY2tlZC4NCj4gPj4gSWYgd2UgbmVlZCBmb2xsb3cgdGhp cywgdGhlbiB3ZSBuZWVkIGFkZCBPUFRJT05BTCB0byBhbG1vc3QgYWxsIHBvaW50ZXIsDQo+IHdo aWNoDQo+ID4+IGlzIHVubmVjZXNzYXJ5Lg0KPiA+Pg0KPiA+Pj4gK0JPT0xFQU4NCj4gPj4+ICtF RklBUEkNCj4gPj4+ICtFdnBNZEZpbmFsICgNCj4gPj4+ICsgIElOIE9VVCAgVk9JRCAgICpFdnBN ZENvbnRleHQsDQo+ID4+PiArICBPVVQgICAgIFVJTlQ4ICAqRGlnZXN0VmFsdWUNCj4gPj4NCj4g Pj4gKDMpIERpZ2VzdFZhbHVlIHNob3VsZCBiZSBtYXJrZWQgT1BUSU9OQUwgaW4gbXkgb3Bpbmlv biwgYXMgTlVMTCBpcw0KPiA+PiBkZWxpYmVyYXRlbHkgcGVybWl0dGVkIChmb3IganVzdCBmcmVl aW5nIHRoZSBjb250ZXh0KS4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+PiBGcm9tOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRo YXQuY29tPg0KPiA+Pj4gU2VudDogV2VkbmVzZGF5LCBTZXB0ZW1iZXIgMTYsIDIwMjAgNzowNyBQ TQ0KPiA+Pj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBadXJjaGVyLCBDaHJpc3RvcGhlciBK DQo+ID4+PiA8Y2hyaXN0b3BoZXIuai56dXJjaGVyQGludGVsLmNvbT4NCj4gPj4+IENjOiBZYW8s IEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBXYW5nLCBKaWFuIEoNCj4gPj4gPGppYW4u ai53YW5nQGludGVsLmNvbT47DQo+ID4+PiBMdSwgWGlhb3l1WCA8eGlhb3l1eC5sdUBpbnRlbC5j b20+DQo+ID4+PiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCB2MyAxLzNdIENyeXB0 b1BrZy9CYXNlQ3J5cHRMaWI6IEFkZCBFVlANCj4gPj4+IChFbnZlbG9wZSkgRGlnZXN0IGludGVy ZmFjZQ0KPiA+Pj4NCj4gPj4+IEhlbGxvIENocmlzdG9waGVyLA0KPiA+Pj4NCj4gPj4+IE9uIDA5 LzE2LzIwIDAyOjU5LCBadXJjaGVyLCBDaHJpc3RvcGhlciBKIHdyb3RlOg0KPiA+Pj4+IEJaOiBo dHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTI1NDUNCj4gPj4+ Pg0KPiA+Pj4+IFRoZSBFVlAgaW50ZXJmYWNlIHNob3VsZCBiZSB1c2VkIGluIHBsYWNlIG9mIGRp c2NyZXRlIGRpZ2VzdCBmdW5jdGlvbg0KPiA+Pj4+IGNhbGxzLg0KPiA+Pj4+DQo+ID4+Pj4gQ2M6 IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+ID4+Pj4gQ2M6IEppZXdlbiBZYW8g PGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiA+Pj4+IENjOiBKaWFuIEogV2FuZyA8amlhbi5qLndh bmdAaW50ZWwuY29tPg0KPiA+Pj4+IENjOiBYaWFveXUgTHUgPHhpYW95dXgubHVAaW50ZWwuY29t Pg0KPiA+Pj4+IFNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIEogWnVyY2hlciA8Y2hyaXN0b3Bo ZXIuai56dXJjaGVyQGludGVsLmNvbT4NCj4gPj4+PiAtLS0NCj4gPj4+PiAgQ3J5cHRvUGtnL0xp YnJhcnkvQmFzZUNyeXB0TGliL0Jhc2VDcnlwdExpYi5pbmYgICAgICAgICB8ICAgMSArDQo+ID4+ Pj4gIENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9QZWlDcnlwdExpYi5pbmYgICAgICAg ICAgfCAgIDEgKw0KPiA+Pj4+ICBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUnVudGlt ZUNyeXB0TGliLmluZiAgICAgIHwgICAxICsNCj4gPj4+PiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFz ZUNyeXB0TGliL1NtbUNyeXB0TGliLmluZiAgICAgICAgICB8ICAgMSArDQo+ID4+Pj4gIENyeXB0 b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk51bGwvQmFzZUNyeXB0TGliTnVsbC5pbmYgfCAgIDEg Kw0KPiA+Pj4+ICBDcnlwdG9Qa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VDcnlwdExpYi5oICAgICAg ICAgICAgICAgIHwgMTI5ICsrKysrKysrKysNCj4gPj4+PiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFz ZUNyeXB0TGliL0V2cC9DcnlwdEV2cE1kLmMgICAgICAgICB8IDI1Nw0KPiA+Pj4gKysrKysrKysr KysrKysrKysrKysNCj4gPj4+PiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0V2cC9D cnlwdEV2cE1kTnVsbC5jICAgICB8IDEyOA0KPiArKysrKysrKysrDQo+ID4+Pj4gIENyeXB0b1Br Zy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk51bGwvRXZwL0NyeXB0RXZwTWROdWxsLmMgfCAxMjgNCj4g Pj4gKysrKysrKysrKw0KPiA+Pj4+ICA5IGZpbGVzIGNoYW5nZWQsIDY0NyBpbnNlcnRpb25zKCsp DQo+ID4+Pg0KPiA+Pj4gSSBhZ3JlZSB0aGF0ICJDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRM aWJOdWxsL0V2cC9DcnlwdEV2cE1kTnVsbC5jIg0KPiA+Pj4gaXMgbmVjZXNzYXJ5LiAoSWYgSSB1 bmRlcnN0YW5kIGNvcnJlY3RseSwgdGhhdCBmaWxlIHdhcyBtaXNzaW5nIGZyb20NCj4gPj4+IHlv dXIgdjIgcG9zdGluZy4pDQo+ID4+Pg0KPiA+Pj4gQnV0ICJDcnlwdG9Qa2cvTGlicmFyeS9CYXNl Q3J5cHRMaWIvRXZwL0NyeXB0RXZwTWROdWxsLmMiIHNlZW1zDQo+ID4+PiBzdXBlcmZsdW91cy4g VGhpcyBmaWxlIGlzIG5ldmVyIHJlZmVyZW5jZWQgaW4gdGhlIElORiBmaWxlcy4NCj4gPj4+DQo+ ID4+PiBUaGUgcG9pbnQgb2YgdGhpcyBmaWxlIHdvdWxkIGJlIHRvIGFsbG93ICpzb21lKiBvZiB0 aGUgQmFzZSAvIFBlaSAvDQo+ID4+PiBSdW50aW1lIC8gU21tIGluc3RhbmNlcyB0byAic3R1YiBv dXQiIHRoZSBFVlAgTUQgZnVuY3Rpb25zIChpLmUuIHByb3ZpZGUNCj4gPj4+IG9ubHkgc3R1YiBp bXBsZW1lbnRhdGlvbnMpLiBCdXQgdGhpcyBpc24ndCB3aGF0J3MgaGFwcGVuaW5nIC0tIGFsbCBv Zg0KPiA+Pj4gdGhlIEJhc2UgLyBQZWkgLyBSdW50aW1lIC8gU21tIGluc3RhbmNlcyBhcmUgZ2V0 dGluZyB0aGUgcmVhbCBkZWFsDQo+ID4+PiAoIkNyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExp Yi9FdnAvQ3J5cHRFdnBNZC5jIikuDQo+ID4+Pg0KPiA+Pj4gKDEpIFNvIEkgdGhpbmsgIkNyeXB0 b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9FdnAvQ3J5cHRFdnBNZE51bGwuYyINCj4gPj4+IHNo b3VsZCBiZSBkcm9wcGVkLiBPbmx5IHRoZSBOdWxsIGluc3RhbmNlIG9mIHRoZSBsaWJyYXJ5IG5l ZWRzIG51bGwNCj4gPj4+IHZlcnNpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb25zLiBUaGUgQmFzZSAv IFBlaSAvIFJ1bnRpbWUgLyBTbW0gaW5zdGFuY2VzDQo+ID4+PiBkb24ndC4NCj4gPj4+DQo+ID4+ Pj4NCj4gPj4+PiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0Jh c2VDcnlwdExpYi5pbmYNCj4gPj4+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0Jh c2VDcnlwdExpYi5pbmYNCj4gPj4+PiBpbmRleCA0YWFlMmFiYTk1Li4zOTY4ZjI5NDEyIDEwMDY0 NA0KPiA+Pj4+IC0tLSBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9CYXNlQ3J5cHRM aWIuaW5mDQo+ID4+Pj4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0Jhc2VD cnlwdExpYi5pbmYNCj4gPj4+PiBAQCAtNTAsNiArNTAsNyBAQA0KPiA+Pj4+ICAgIFBrL0NyeXB0 QXV0aGVudGljb2RlLmMNCj4gPj4+PiAgICBQay9DcnlwdFRzLmMNCj4gPj4+PiAgICBQZW0vQ3J5 cHRQZW0uYw0KPiA+Pj4+ICsgIEV2cC9DcnlwdEV2cE1kLmMNCj4gPj4+Pg0KPiA+Pj4+ICAgIFN5 c0NhbGwvQ3J0V3JhcHBlci5jDQo+ID4+Pj4gICAgU3lzQ2FsbC9UaW1lcldyYXBwZXIuYw0KPiA+ Pj4+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGVpQ3J5cHRM aWIuaW5mDQo+ID4+PiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9QZWlDcnlwdExp Yi5pbmYNCj4gPj4+PiBpbmRleCBkYzI4ZTNhMTFkLi5kMGI5MTcxNmQwIDEwMDY0NA0KPiA+Pj4+ IC0tLSBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9QZWlDcnlwdExpYi5pbmYNCj4g Pj4+PiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGVpQ3J5cHRMaWIuaW5m DQo+ID4+Pj4gQEAgLTU3LDYgKzU3LDcgQEANCj4gPj4+PiAgICBQay9DcnlwdFRzTnVsbC5jDQo+ ID4+Pj4gICAgUGVtL0NyeXB0UGVtTnVsbC5jDQo+ID4+Pj4gICAgUmFuZC9DcnlwdFJhbmROdWxs LmMNCj4gPj4+PiArICBFdnAvQ3J5cHRFdnBNZC5jDQo+ID4+Pj4NCj4gPj4+PiAgICBTeXNDYWxs L0NydFdyYXBwZXIuYw0KPiA+Pj4+ICAgIFN5c0NhbGwvQ29uc3RhbnRUaW1lQ2xvY2suYw0KPiA+ Pj4+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUnVudGltZUNy eXB0TGliLmluZg0KPiA+Pj4gYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUnVudGlt ZUNyeXB0TGliLmluZg0KPiA+Pj4+IGluZGV4IDUwMDViZWVkMDIuLjlmM2FjY2QzNWIgMTAwNjQ0 DQo+ID4+Pj4gLS0tIGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1J1bnRpbWVDcnlw dExpYi5pbmYNCj4gPj4+PiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUnVu dGltZUNyeXB0TGliLmluZg0KPiA+Pj4+IEBAIC01Niw2ICs1Niw3IEBADQo+ID4+Pj4gICAgUGsv Q3J5cHRBdXRoZW50aWNvZGVOdWxsLmMNCj4gPj4+PiAgICBQay9DcnlwdFRzTnVsbC5jDQo+ID4+ Pj4gICAgUGVtL0NyeXB0UGVtLmMNCj4gPj4+PiArICBFdnAvQ3J5cHRFdnBNZC5jDQo+ID4+Pj4N Cj4gPj4+PiAgICBTeXNDYWxsL0NydFdyYXBwZXIuYw0KPiA+Pj4+ICAgIFN5c0NhbGwvVGltZXJX cmFwcGVyLmMNCj4gPj4+PiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0 TGliL1NtbUNyeXB0TGliLmluZg0KPiA+Pj4gYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRM aWIvU21tQ3J5cHRMaWIuaW5mDQo+ID4+Pj4gaW5kZXggOTFlYzNlMDNiZi4uNDIwNjIzY2RjNiAx MDA2NDQNCj4gPj4+PiAtLS0gYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvU21tQ3J5 cHRMaWIuaW5mDQo+ID4+Pj4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1Nt bUNyeXB0TGliLmluZg0KPiA+Pj4+IEBAIC01NCw2ICs1NCw3IEBADQo+ID4+Pj4gICAgUGsvQ3J5 cHRBdXRoZW50aWNvZGVOdWxsLmMNCj4gPj4+PiAgICBQay9DcnlwdFRzTnVsbC5jDQo+ID4+Pj4g ICAgUGVtL0NyeXB0UGVtLmMNCj4gPj4+PiArICBFdnAvQ3J5cHRFdnBNZC5jDQo+ID4+Pj4NCj4g Pj4+PiAgICBTeXNDYWxsL0NydFdyYXBwZXIuYw0KPiA+Pj4+ICAgIFN5c0NhbGwvQ29uc3RhbnRU aW1lQ2xvY2suYw0KPiA+Pj4+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5 cHRMaWJOdWxsL0Jhc2VDcnlwdExpYk51bGwuaW5mDQo+ID4+PiBiL0NyeXB0b1BrZy9MaWJyYXJ5 L0Jhc2VDcnlwdExpYk51bGwvQmFzZUNyeXB0TGliTnVsbC5pbmYNCj4gPj4+PiBpbmRleCA2ODlh ZjRmZWRkLi41NDJhYzJlMmUxIDEwMDY0NA0KPiA+Pj4+IC0tLSBhL0NyeXB0b1BrZy9MaWJyYXJ5 L0Jhc2VDcnlwdExpYk51bGwvQmFzZUNyeXB0TGliTnVsbC5pbmYNCj4gPj4+PiArKysgYi9Dcnlw dG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWJOdWxsL0Jhc2VDcnlwdExpYk51bGwuaW5mDQo+ID4+ Pj4gQEAgLTUwLDYgKzUwLDcgQEANCj4gPj4+PiAgICBQay9DcnlwdFRzTnVsbC5jDQo+ID4+Pj4g ICAgUGVtL0NyeXB0UGVtTnVsbC5jDQo+ID4+Pj4gICAgUmFuZC9DcnlwdFJhbmROdWxsLmMNCj4g Pj4+PiArICBFdnAvQ3J5cHRFdnBNZE51bGwuYw0KPiA+Pj4+DQo+ID4+Pj4gIFtQYWNrYWdlc10N Cj4gPj4+PiAgICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+Pj4+IGRpZmYgLS1naXQgYS9DcnlwdG9Q a2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VDcnlwdExpYi5oDQo+ID4+PiBiL0NyeXB0b1BrZy9JbmNs dWRlL0xpYnJhcnkvQmFzZUNyeXB0TGliLmgNCj4gPj4+PiBpbmRleCBhZTliZGU5ZTM3Li41ZTFi NDA4YjU0IDEwMDY0NA0KPiA+Pj4+IC0tLSBhL0NyeXB0b1BrZy9JbmNsdWRlL0xpYnJhcnkvQmFz ZUNyeXB0TGliLmgNCj4gPj4+PiArKysgYi9DcnlwdG9Qa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VD cnlwdExpYi5oDQo+ID4+Pj4gQEAgLTEwMTIsNiArMTAxMiwxMzUgQEAgSG1hY1NoYTI1NkZpbmFs ICgNCj4gPj4+PiAgICBPVVQgICAgIFVJTlQ4ICAqSG1hY1ZhbHVlDQo+ID4+Pj4gICAgKTsNCj4g Pj4+Pg0KPiA+Pj4+DQo+ID4+Pg0KPiA+Pg0KPiArLy89PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+Pj4gPT09PT09PT09PT09 PT09PT09PT09PT0NCj4gPj4+PiArLy8gICAgRVZQIChFbnZlbG9wZSkgUHJpbWl0aXZlDQo+ID4+ Pj4NCj4gPj4+DQo+ID4+DQo+ICsvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4+PiA9PT09PT09PT09PT09PT09PT09PT09 PQ0KPiA+Pj4+ICsNCj4gPj4+PiArLyoqDQo+ID4+Pj4gKyAgQWxsb2NhdGVzIGFuZCBpbml0aWFs aXplcyBvbmUgRVZQX01EX0NUWCBjb250ZXh0IGZvciBzdWJzZXF1ZW50DQo+IEVWUF9NRA0KPiA+ Pj4gdXNlLg0KPiA+Pj4+ICsNCj4gPj4+PiArICBJZiBEaWdlc3ROYW1lIGlzIE5VTEwsIHRoZW4g cmV0dXJuIEZBTFNFLg0KPiA+Pj4+ICsNCj4gPj4+PiArICBAcGFyYW1baW5dICAgIERpZ2VzdE5h bWUgICAgUG9pbnRlciB0byB0aGUgZGlnZXN0IG5hbWUgYXMgYSBOVUxMLQ0KPiA+Pj4gdGVybWlu YXRlZCBBU0NJSSBzdHJpbmcuDQo+ID4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFZhbGlkIGRpZ2VzdCBuYW1lcyBhcmU6DQo+ID4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE1ENSwgU0hBMSwgU0hBMjI0LCBTSEEyNTYsIFNIQTM4NCwgU0hBNTEyDQo+ID4+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQTMtMjI0LCBTSEEzLTI1NiwgU0hBMy0z ODQsIFNIQTMtNTEyDQo+ID4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNMw0K PiA+Pj4+ICsNCj4gPj4+PiArICBAcmV0dXJuICBQb2ludGVyIHRvIHRoZSBFVlBfTURfQ1RYIGNv bnRleHQgdGhhdCBoYXMgYmVlbiBhbGxvY2F0ZWQNCj4gYW5kDQo+ID4+PiBpbml0aWFsaXplZC4N Cj4gPj4+PiArICAgICAgICAgICBJZiBEaWdlc3ROYW1lIGlzIGludmFsaWQsIHJldHVybnMgTlVM TC4NCj4gPj4+PiArICAgICAgICAgICBJZiB0aGUgYWxsb2NhdGlvbnMgZmFpbHMsIHJldHVybnMg TlVMTC4NCj4gPj4+PiArICAgICAgICAgICBJZiBpbml0aWFsaXphdGlvbiBmYWlscywgcmV0dXJu cyBOVUxMLg0KPiA+Pj4+ICsNCj4gPj4+PiArKiovDQo+ID4+Pj4gK1ZPSUQgKg0KPiA+Pj4+ICtF RklBUEkNCj4gPj4+PiArRXZwTWRJbml0ICgNCj4gPj4+PiArICBJTiAgQ09OU1QgQ0hBUjggICAq RGlnZXN0TmFtZQ0KPiA+Pj4+ICsgICk7DQo+ID4+Pj4gKw0KPiA+Pj4+ICsvKioNCj4gPj4+PiAr ICBNYWtlcyBhIGNvcHkgb2YgYW4gZXhpc3RpbmcgRVZQX01EIGNvbnRleHQuDQo+ID4+Pj4gKw0K PiA+Pj4+ICsgIElmIEV2cE1kQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4g Pj4+PiArICBJZiBOZXdFdnBNZENvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ ID4+Pj4gKw0KPiA+Pj4+ICsgIEBwYXJhbVtpbl0gIEV2cE1kQ29udGV4dCAgICAgUG9pbnRlciB0 byBFVlBfTUQgY29udGV4dCBiZWluZyBjb3BpZWQuDQo+ID4+Pj4gKyAgQHBhcmFtW291dF0gTmV3 RXZwTWRDb250ZXh0ICBQb2ludGVyIHRvIG5ldyBFVlBfTUQgY29udGV4dC4NCj4gPj4+PiArDQo+ ID4+Pj4gKyAgQHJldHZhbCBUUlVFICAgRVZQX01EIGNvbnRleHQgY29weSBzdWNjZWVkZWQuDQo+ ID4+Pj4gKyAgQHJldHZhbCBGQUxTRSAgRVZQX01EIGNvbnRleHQgY29weSBmYWlsZWQuDQo+ID4+ Pj4gKw0KPiA+Pj4+ICsqKi8NCj4gPj4+PiArQk9PTEVBTg0KPiA+Pj4+ICtFRklBUEkNCj4gPj4+ PiArRXZwTWREdXBsaWNhdGUgKA0KPiA+Pj4+ICsgIElOICBDT05TVCBWT0lEICAgICpFdnBNZENv bnRleHQsDQo+ID4+Pj4gKyAgT1VUIFZPSUQgICAgICAgICAgKk5ld0V2cE1kQ29udGV4dA0KPiA+ Pj4+ICsgICk7DQo+ID4+Pj4gKw0KPiA+Pj4+ICsvKioNCj4gPj4+PiArICBEaWdlc3RzIHRoZSBp bnB1dCBkYXRhIGFuZCB1cGRhdGVzIEVWUF9NRCBjb250ZXh0Lg0KPiA+Pj4+ICsNCj4gPj4+PiAr ICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIEVWUCBkaWdlc3Qgb24gYSBkYXRhIGJ1ZmZlciBvZiB0 aGUgc3BlY2lmaWVkIHNpemUuDQo+ID4+Pj4gKyAgSXQgY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0 aW1lcyB0byBjb21wdXRlIHRoZSBkaWdlc3Qgb2YgbG9uZyBvcg0KPiA+Pj4gZGlzY29udGludW91 cyBkYXRhIHN0cmVhbXMuDQo+ID4+Pj4gKyAgRVZQX01EIGNvbnRleHQgc2hvdWxkIGJlIGFscmVh ZHkgY29ycmVjdGx5IGluaXRpYWxpemVkIGJ5IEV2cE1kSW5pdCgpLA0KPiBhbmQNCj4gPj4+IHNo b3VsZCBub3QNCj4gPj4+PiArICBiZSBmaW5hbGl6ZWQgYnkgRXZwTWRGaW5hbCgpLiBCZWhhdmlv ciB3aXRoIGludmFsaWQgY29udGV4dCBpcyB1bmRlZmluZWQuDQo+ID4+Pj4gKw0KPiA+Pj4+ICsg IElmIEV2cE1kQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPj4+PiArICBJ ZiBEYXRhIGlzIE5VTEwgYW5kIERhdGFTaXplIGlzIG5vdCB6ZXJvLCByZXR1cm4gRkFMU0UuDQo+ ID4+Pj4gKw0KPiA+Pj4+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRXZwTWRDb250ZXh0ICAgICAgIFBv aW50ZXIgdG8gdGhlIEVWUF9NRCBjb250ZXh0Lg0KPiA+Pj4+ICsgIEBwYXJhbVtpbl0gICAgICAg RGF0YSAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBk YXRhIHRvDQo+ID4+IGJlDQo+ID4+PiBkaWdlc3RlZC4NCj4gPj4+PiArICBAcGFyYW1baW5dICAg ICAgIERhdGFTaXplICAgICAgICAgICBTaXplIG9mIERhdGEgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ Pj4+ICsNCj4gPj4+PiArICBAcmV0dmFsIFRSVUUgICBFVlAgZGF0YSBkaWdlc3Qgc3VjY2VlZGVk Lg0KPiA+Pj4+ICsgIEByZXR2YWwgRkFMU0UgIEVWUCBkYXRhIGRpZ2VzdCBmYWlsZWQuDQo+ID4+ Pj4gKw0KPiA+Pj4+ICsqKi8NCj4gPj4+PiArQk9PTEVBTg0KPiA+Pj4+ICtFRklBUEkNCj4gPj4+ PiArRXZwTWRVcGRhdGUgKA0KPiA+Pj4+ICsgIElOIE9VVCAgVk9JRCAgICAgICAgKkV2cE1kQ29u dGV4dCwNCj4gPj4+PiArICBJTiAgICAgIENPTlNUIFZPSUQgICpEYXRhLA0KPiA+Pj4+ICsgIElO ICAgICAgVUlOVE4gICAgICAgRGF0YVNpemUNCj4gPj4+PiArICApOw0KPiA+Pj4+ICsNCj4gPj4+ PiArLyoqDQo+ID4+Pj4gKyAgQ29tcGxldGVzIGNvbXB1dGF0aW9uIG9mIHRoZSBFVlAgZGlnZXN0 IHZhbHVlLg0KPiA+Pj4+ICsgIFJlbGVhc2VzIHRoZSBzcGVjaWZpZWQgRVZQX01EX0NUWCBjb250 ZXh0Lg0KPiA+Pj4+ICsNCj4gPj4+PiArICBUaGlzIGZ1bmN0aW9uIGNvbXBsZXRlcyBFVlAgaGFz aCBjb21wdXRhdGlvbiBhbmQgcmV0cmlldmVzIHRoZSBkaWdlc3QNCj4gPj4+IHZhbHVlIGludG8N Cj4gPj4+PiArICB0aGUgc3BlY2lmaWVkIG1lbW9yeS4gQWZ0ZXIgdGhpcyBmdW5jdGlvbiBoYXMg YmVlbiBjYWxsZWQsIHRoZSBFVlANCj4gY29udGV4dA0KPiA+Pj4gY2Fubm90DQo+ID4+Pj4gKyAg YmUgdXNlZCBhZ2Fpbi4NCj4gPj4+PiArICBFVlAgY29udGV4dCBzaG91bGQgYmUgYWxyZWFkeSBj b3JyZWN0bHkgaW5pdGlhbGl6ZWQgYnkgRXZwTWRJbml0KCksIGFuZA0KPiA+Pj4gc2hvdWxkDQo+ ID4+Pj4gKyAgbm90IGJlIGZpbmFsaXplZCBieSBFdnBNZEZpbmFsKCkuIEJlaGF2aW9yIHdpdGgg aW52YWxpZCBFVlAgY29udGV4dCBpcw0KPiA+Pj4gdW5kZWZpbmVkLg0KPiA+Pj4+ICsNCj4gPj4+ PiArICBJZiBFdnBNZENvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4+Pj4g KyAgSWYgRGlnZXN0VmFsdWUgaXMgTlVMTCwgZnJlZSB0aGUgQ29udGV4dCB0aGVuIHJldHVybiBG QUxTRS4NCj4gPj4+PiArDQo+ID4+Pj4gKyAgQHBhcmFtW2luLCBvdXRdICBFdnBNZENvbnRleHQg ICBQb2ludGVyIHRvIHRoZSBFVlAgY29udGV4dC4NCj4gPj4+PiArICBAcGFyYW1bb3V0XSAgICAg IERpZ2VzdCAgICAgICAgIFBvaW50ZXIgdG8gYSBidWZmZXIgdGhhdCByZWNlaXZlcyB0aGUgRVZQ DQo+ID4+IGRpZ2VzdA0KPiA+Pj4gdmFsdWUuDQo+ID4+Pg0KPiA+Pj4gKDIpIFBsZWFzZSBleHRl bmQgdGhlIGNvbW1lbnQgb24gRGlnZXN0IHdpdGggdGhlIGZvbGxvd2luZzoNCj4gPj4+DQo+ID4+ PiAgIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyBlbm91Z2ggc3RvcmFn ZSBmb3IgdGhlIGRpZ2VzdA0KPiA+Pj4gICBhbGdvcml0aG0gc2VsZWN0ZWQgd2l0aCBFdnBNZElu aXQoKS4gUHJvdmlkaW5nIEVWUF9NQVhfTURfU0laRSBieXRlcw0KPiA+Pj4gICB3aWxsIHN1ZmZp Y2UgZm9yIHN0b3JpbmcgdGhlIGRpZ2VzdCByZWdhcmRsZXNzIG9mIHRoZSBhbGdvcml0aG0gY2hv c2VuDQo+ID4+PiAgIGluIEV2cE1kSW5pdCgpLg0KPiA+Pj4NCj4gPj4+IChFVlBfTUFYX01EX1NJ WkUgaXMgYSBwdWJsaWMgT3BlblNTTCBtYWNybyBhbmQgSSB0aGluayB3ZSBzaG91bGQgb3Blbmx5 DQo+ID4+PiBhZHZlcnRpc2UgaXQgdG8gY29uc3VtZXJzIGluIGVkazIuKQ0KPiA+Pj4NCj4gPj4+ PiArDQo+ID4+Pj4gKyAgQHJldHZhbCBUUlVFICAgRVZQIGRpZ2VzdCBjb21wdXRhdGlvbiBzdWNj ZWVkZWQuDQo+ID4+Pj4gKyAgQHJldHZhbCBGQUxTRSAgRVZQIGRpZ2VzdCBjb21wdXRhdGlvbiBm YWlsZWQuDQo+ID4+Pj4gKw0KPiA+Pj4+ICsqKi8NCj4gPj4+PiArQk9PTEVBTg0KPiA+Pj4+ICtF RklBUEkNCj4gPj4+PiArRXZwTWRGaW5hbCAoDQo+ID4+Pj4gKyAgSU4gT1VUICBWT0lEICAgKkV2 cE1kQ29udGV4dCwNCj4gPj4+PiArICBPVVQgICAgIFVJTlQ4ICAqRGlnZXN0VmFsdWUNCj4gPj4+ DQo+ID4+PiAoMykgRGlnZXN0VmFsdWUgc2hvdWxkIGJlIG1hcmtlZCBPUFRJT05BTCBpbiBteSBv cGluaW9uLCBhcyBOVUxMIGlzDQo+ID4+PiBkZWxpYmVyYXRlbHkgcGVybWl0dGVkIChmb3IganVz dCBmcmVlaW5nIHRoZSBjb250ZXh0KS4NCj4gPj4+DQo+ID4+Pj4gKyAgKTsNCj4gPj4+PiArDQo+ ID4+Pj4gKy8qKg0KPiA+Pj4+ICsgIENvbXB1dGVzIHRoZSBtZXNzYWdlIGRpZ2VzdCBvZiBhbiBp bnB1dCBkYXRhIGJ1ZmZlci4NCj4gPj4+PiArDQo+ID4+Pj4gKyAgVGhpcyBmdW5jdGlvbiBwZXJm b3JtcyB0aGUgbWVzc2FnZSBkaWdlc3Qgb2YgYSBnaXZlbiBkYXRhIGJ1ZmZlciwgYW5kDQo+ID4+ IHBsYWNlcw0KPiA+Pj4+ICsgIHRoZSBkaWdlc3QgdmFsdWUgaW50byB0aGUgc3BlY2lmaWVkIG1l bW9yeS4NCj4gPj4+PiArDQo+ID4+Pj4gKyAgSWYgRGlnZXN0TmFtZSBpcyBOVUxMLCByZXR1cm4g RkFMU0UuDQo+ID4+Pj4gKyAgSWYgRGF0YSBpcyBOVUxMIGFuZCBEYXRhU2l6ZSBpcyBub3QgemVy bywgcmV0dXJuIEZBTFNFLg0KPiA+Pj4+ICsgIElmIEhhc2hWYWx1ZSBpcyBOVUxMLCByZXR1cm4g RkFMU0UuDQo+ID4+Pj4gKw0KPiA+Pj4+ICsgIEBwYXJhbVtpbl0gICAgRGlnZXN0TmFtZSAgICBQ b2ludGVyIHRvIHRoZSBkaWdlc3QgbmFtZS4NCj4gPj4+PiArICBAcGFyYW1baW5dICAgIERhdGEg ICAgICAgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gYmUN Cj4gPj4+IGhhc2hlZC4NCj4gPj4+PiArICBAcGFyYW1baW5dICAgIERhdGFTaXplICAgICAgU2l6 ZSBvZiBEYXRhIGJ1ZmZlciBpbiBieXRlcy4NCj4gPj4+PiArICBAcGFyYW1bb3V0XSAgIEhhc2hW YWx1ZSAgICAgUG9pbnRlciB0byBhIGJ1ZmZlciB0aGF0IHJlY2VpdmVzIHRoZSBkaWdlc3QNCj4g Pj4+IHZhbHVlLg0KPiA+Pj4+ICsNCj4gPj4+PiArICBAcmV0dmFsIFRSVUUgICBEaWdlc3QgY29t cHV0YXRpb24gc3VjY2VlZGVkLg0KPiA+Pj4+ICsgIEByZXR2YWwgRkFMU0UgIERpZ2VzdCBjb21w dXRhdGlvbiBmYWlsZWQuDQo+ID4+Pj4gKw0KPiA+Pj4+ICsqKi8NCj4gPj4+PiArQk9PTEVBTg0K PiA+Pj4+ICtFRklBUEkNCj4gPj4+PiArRXZwTWRIYXNoQWxsICgNCj4gPj4+PiArICBJTiAgQ09O U1QgQ0hBUjggICAqRGlnZXN0TmFtZSwNCj4gPj4+PiArICBJTiAgQ09OU1QgVk9JRCAgICAqRGF0 YSwNCj4gPj4+PiArICBJTiAgVUlOVE4gICAgICAgICBEYXRhU2l6ZSwNCj4gPj4+PiArICBPVVQg VUlOVDggICAgICAgICAqSGFzaFZhbHVlDQo+ID4+Pj4gKyAgKTsNCj4gPj4+PiArDQo+ID4+Pj4N Cj4gPj4+DQo+ID4+DQo+IC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4+PiA9PT09PT09PT09PT09PT09PT09PT09DQo+ ID4+Pj4gIC8vICAgIFN5bW1ldHJpYyBDcnlwdG9ncmFwaHkgUHJpbWl0aXZlDQo+ID4+Pj4NCj4g Pj4+DQo+ID4+DQo+IC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQo+ID4+PiA9PT09PT09PT09PT09PT09PT09PT09DQo+ID4+ Pj4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9FdnAvQ3J5cHRF dnBNZC5jDQo+ID4+PiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9FdnAvQ3J5cHRF dnBNZC5jDQo+ID4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4+PiBpbmRleCAwMDAwMDAw MDAwLi5iMjc3MGE5MTg2DQo+ID4+Pj4gLS0tIC9kZXYvbnVsbA0KPiA+Pj4+ICsrKyBiL0NyeXB0 b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9FdnAvQ3J5cHRFdnBNZC5jDQo+ID4+Pj4gQEAgLTAs MCArMSwyNTcgQEANCj4gPj4+PiArLyoqIEBmaWxlDQo+ID4+Pj4gKyAgRVZQIE1EIFdyYXBwZXIg SW1wbGVtZW50YXRpb24gZm9yIE9wZW5TU0wuDQo+ID4+Pj4gKw0KPiA+Pj4+ICtDb3B5cmlnaHQg KGMpIDIwMjAsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4g Pj4+PiArU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPj4+ PiArDQo+ID4+Pj4gKyoqLw0KPiA+Pj4+ICsNCj4gPj4+PiArI2luY2x1ZGUgIkludGVybmFsQ3J5 cHRMaWIuaCINCj4gPj4+PiArI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+DQo+ID4+Pj4gKw0KPiA+ Pj4+ICsvKioNCj4gPj4+PiArICBBbGxvY2F0ZXMgYW5kIGluaXRpYWxpemVzIG9uZSBFVlBfTURf Q1RYIGNvbnRleHQgZm9yIHN1YnNlcXVlbnQNCj4gRVZQX01EDQo+ID4+PiB1c2UuDQo+ID4+Pj4g Kw0KPiA+Pj4+ICsgIElmIERpZ2VzdE5hbWUgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ ID4+Pj4gKw0KPiA+Pj4+ICsgIEBwYXJhbVtpbl0gICAgRGlnZXN0TmFtZSAgICBQb2ludGVyIHRv IHRoZSBkaWdlc3QgbmFtZSBhcyBhIE5VTEwtDQo+ID4+PiB0ZXJtaW5hdGVkIEFTQ0lJIHN0cmlu Zy4NCj4gPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWQgZGlnZXN0IG5h bWVzIGFyZToNCj4gPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUQ1LCBTSEEx LCBTSEEyMjQsIFNIQTI1NiwgU0hBMzg0LCBTSEE1MTINCj4gPj4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU0hBMy0yMjQsIFNIQTMtMjU2LCBTSEEzLTM4NCwgU0hBMy01MTINCj4g Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU00zDQo+ID4+Pj4gKw0KPiA+Pj4+ ICsgIEByZXR1cm4gIFBvaW50ZXIgdG8gdGhlIEVWUF9NRF9DVFggY29udGV4dCB0aGF0IGhhcyBi ZWVuIGFsbG9jYXRlZA0KPiBhbmQNCj4gPj4+IGluaXRpYWxpemVkLg0KPiA+Pj4+ICsgICAgICAg ICAgIElmIERpZ2VzdE5hbWUgaXMgaW52YWxpZCwgcmV0dXJucyBOVUxMLg0KPiA+Pj4+ICsgICAg ICAgICAgIElmIHRoZSBhbGxvY2F0aW9ucyBmYWlscywgcmV0dXJucyBOVUxMLg0KPiA+Pj4+ICsg ICAgICAgICAgIElmIGluaXRpYWxpemF0aW9uIGZhaWxzLCByZXR1cm5zIE5VTEwuDQo+ID4+Pj4g Kw0KPiA+Pj4+ICsqKi8NCj4gPj4+PiArVk9JRCAqDQo+ID4+Pj4gK0VGSUFQSQ0KPiA+Pj4+ICtF dnBNZEluaXQgKA0KPiA+Pj4+ICsgIElOICBDT05TVCBDSEFSOCAgICpEaWdlc3ROYW1lDQo+ID4+ Pj4gKyAgKQ0KPiA+Pj4+ICt7DQo+ID4+Pj4gKyAgRVZQX01EICAgICpEaWdlc3Q7DQo+ID4+Pj4g KyAgVk9JRCAgICAgICpFdnBNZENvbnRleHQ7DQo+ID4+Pj4gKw0KPiA+Pj4+ICsgIC8vDQo+ID4+ Pj4gKyAgLy8gQ2hlY2sgaW5wdXQgcGFyYW1ldGVycy4NCj4gPj4+PiArICAvLw0KPiA+Pj4+ICsg IGlmIChEaWdlc3ROYW1lID09IE5VTEwpIHsNCj4gPj4+PiArICAgIHJldHVybiBOVUxMOw0KPiA+ Pj4+ICsgIH0NCj4gPj4+PiArDQo+ID4+Pj4gKyAgLy8NCj4gPj4+PiArICAvLyBBbGxvY2F0ZSBF VlBfTURfQ1RYIENvbnRleHQNCj4gPj4+PiArICAvLw0KPiA+Pj4+ICsgIEV2cE1kQ29udGV4dCA9 IEVWUF9NRF9DVFhfbmV3ICgpOw0KPiA+Pj4+ICsgIGlmIChFdnBNZENvbnRleHQgPT0gTlVMTCkg ew0KPiA+Pj4+ICsgICAgcmV0dXJuIE5VTEw7DQo+ID4+Pj4gKyAgfQ0KPiA+Pj4+ICsNCj4gPj4+ PiArICBEaWdlc3QgPSBFVlBfZ2V0X2RpZ2VzdGJ5bmFtZSAoRGlnZXN0TmFtZSk7DQo+ID4+Pg0K PiA+Pj4gSSB0aGluayB0aGlzIG1heSBub3QgY29tcGlsZSB3aXRoIGdjYyAoYW5kIGNvcnJlY3Rs eSBzbykuIFRoZSBwb2ludGVyDQo+ID4+PiByZXR1cm5lZCBieSBFVlBfZ2V0X2RpZ2VzdGJ5bmFt ZSgpIGlzIGNvbnN0LXF1YWxpZmllZCwgYnV0IHdpdGggdGhlDQo+ID4+PiBhc3NpZ25tZW50LCB3 ZSdyZSB0aHJvd2luZyBhd2F5IHRoZSBjb25zdC1uZXNzLg0KPiA+Pj4NCj4gPj4+ICg0KSBQbGVh c2UgY29uc3QtcXVhbGlmeSB0aGUgIkRpZ2VzdCIgbG9jYWwgcG9pbnRlci4NCj4gPj4+DQo+ID4+ Pj4gKyAgaWYgKERpZ2VzdCA9PSBOVUxMKSB7DQo+ID4+Pj4gKyAgICByZXR1cm4gTlVMTDsNCj4g Pj4+PiArICB9DQo+ID4+Pg0KPiA+Pj4gKDUpIFRoaXMgaXMgYSBtZW1vcnkgbGVhayBJIGJlbGll dmU7ICJFdnBNZENvbnRleHQiIGlzIGxlYWtlZC4NCj4gPj4+DQo+ID4+PiBGb3Iga2VlcGluZyB0 aGUgY29udHJvbCBmbG93IHNpbXBsZSwgY29uc2lkZXIgbW92aW5nDQo+ID4+PiBFVlBfZ2V0X2Rp Z2VzdGJ5bmFtZSgpIGFib3ZlIEVWUF9NRF9DVFhfbmV3KCkuDQo+ID4+Pg0KPiA+Pj4+ICsNCj4g Pj4+PiArICAvLw0KPiA+Pj4+ICsgIC8vIEluaXRpYWxpemUgQ29udGV4dA0KPiA+Pj4+ICsgIC8v DQo+ID4+Pj4gKyAgaWYgKEVWUF9EaWdlc3RJbml0X2V4IChFdnBNZENvbnRleHQsIERpZ2VzdCwg TlVMTCkgIT0gMSkgew0KPiA+Pj4+ICsgICAgRVZQX01EX0NUWF9mcmVlIChFdnBNZENvbnRleHQp Ow0KPiA+Pj4+ICsgICAgcmV0dXJuIE5VTEw7DQo+ID4+Pj4gKyAgfQ0KPiA+Pj4+ICsNCj4gPj4+ PiArICByZXR1cm4gRXZwTWRDb250ZXh0Ow0KPiA+Pj4+ICt9DQo+ID4+Pj4gKw0KPiA+Pj4+ICsv KioNCj4gPj4+PiArICBNYWtlcyBhIGNvcHkgb2YgYW4gZXhpc3RpbmcgRVZQX01EIGNvbnRleHQu DQo+ID4+Pj4gKw0KPiA+Pj4+ICsgIElmIEV2cE1kQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVy biBGQUxTRS4NCj4gPj4+PiArICBJZiBOZXdFdnBNZENvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1 cm4gRkFMU0UuDQo+ID4+Pj4gKw0KPiA+Pj4+ICsgIEBwYXJhbVtpbl0gIEV2cE1kQ29udGV4dCAg ICAgUG9pbnRlciB0byBFVlBfTUQgY29udGV4dCBiZWluZyBjb3BpZWQuDQo+ID4+Pj4gKyAgQHBh cmFtW291dF0gTmV3RXZwTWRDb250ZXh0ICBQb2ludGVyIHRvIG5ldyBFVlBfTUQgY29udGV4dC4N Cj4gPj4+PiArDQo+ID4+Pj4gKyAgQHJldHZhbCBUUlVFICAgRVZQX01EIGNvbnRleHQgY29weSBz dWNjZWVkZWQuDQo+ID4+Pj4gKyAgQHJldHZhbCBGQUxTRSAgRVZQX01EIGNvbnRleHQgY29weSBm YWlsZWQuDQo+ID4+Pj4gKw0KPiA+Pj4+ICsqKi8NCj4gPj4+PiArQk9PTEVBTg0KPiA+Pj4+ICtF RklBUEkNCj4gPj4+PiArRXZwTWREdXBsaWNhdGUgKA0KPiA+Pj4+ICsgIElOICBDT05TVCBWT0lE ICAgICpFdnBNZENvbnRleHQsDQo+ID4+Pj4gKyAgT1VUIFZPSUQgICAgICAgICAgKk5ld0V2cE1k Q29udGV4dA0KPiA+Pj4+ICsgICkNCj4gPj4+PiArew0KPiA+Pj4+ICsgIC8vDQo+ID4+Pj4gKyAg Ly8gQ2hlY2sgaW5wdXQgcGFyYW1ldGVycy4NCj4gPj4+PiArICAvLw0KPiA+Pj4+ICsgIGlmIChF dnBNZENvbnRleHQgPT0gTlVMTCB8fCBOZXdFdnBNZENvbnRleHQgPT0gTlVMTCkgew0KPiA+Pj4+ ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+Pj4+ICsgIH0NCj4gPj4+PiArDQo+ID4+Pj4gKyAgaWYg KEVWUF9NRF9DVFhfY29weSAoTmV3RXZwTWRDb250ZXh0LCBFdnBNZENvbnRleHQpICE9IDEpIHsN Cj4gPj4+PiArICAgIHJldHVybiBGQUxTRTsNCj4gPj4+PiArICB9DQo+ID4+Pj4gKw0KPiA+Pj4+ ICsgIHJldHVybiBUUlVFOw0KPiA+Pj4+ICt9DQo+ID4+Pg0KPiA+Pj4gKDYpIENhbiB5b3UgcGxl YXNlIGNvbmZpcm0gdGhhdCB0aGUgY2FsbGVyIGlzIHN1cHBvc2VkIHRvIGluaXRpYWxpemUNCj4g Pj4+ICJOZXdFdnBNZENvbnRleHQiIHdpdGggRXZwTWRJbml0KCkgZmlyc3QsIGJlZm9yZSBjYWxs aW5nIEV2cE1kRHVwbGljYXRlKCk/DQo+ID4+Pg0KPiA+Pj4+ICsNCj4gPj4+PiArLyoqDQo+ID4+ Pj4gKyAgRGlnZXN0cyB0aGUgaW5wdXQgZGF0YSBhbmQgdXBkYXRlcyBFVlBfTUQgY29udGV4dC4N Cj4gPj4+PiArDQo+ID4+Pj4gKyAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyBFVlAgZGlnZXN0IG9u IGEgZGF0YSBidWZmZXIgb2YgdGhlIHNwZWNpZmllZCBzaXplLg0KPiA+Pj4+ICsgIEl0IGNhbiBi ZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gY29tcHV0ZSB0aGUgZGlnZXN0IG9mIGxvbmcgb3IN Cj4gPj4+IGRpc2NvbnRpbnVvdXMgZGF0YSBzdHJlYW1zLg0KPiA+Pj4+ICsgIEVWUF9NRCBjb250 ZXh0IHNob3VsZCBiZSBhbHJlYWR5IGNvcnJlY3RseSBpbml0aWFsaXplZCBieSBFdnBNZEluaXQo KSwNCj4gYW5kDQo+ID4+PiBzaG91bGQgbm90DQo+ID4+Pj4gKyAgYmUgZmluYWxpemVkIGJ5IEV2 cE1kRmluYWwoKS4gQmVoYXZpb3Igd2l0aCBpbnZhbGlkIGNvbnRleHQgaXMgdW5kZWZpbmVkLg0K PiA+Pj4+ICsNCj4gPj4+PiArICBJZiBFdnBNZENvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4g RkFMU0UuDQo+ID4+Pj4gKyAgSWYgRGF0YSBpcyBOVUxMIGFuZCBEYXRhU2l6ZSBpcyBub3QgemVy bywgcmV0dXJuIEZBTFNFLg0KPiA+Pj4+ICsNCj4gPj4+PiArICBAcGFyYW1baW4sIG91dF0gIEV2 cE1kQ29udGV4dCAgICAgICBQb2ludGVyIHRvIHRoZSBFVlBfTUQgY29udGV4dC4NCj4gPj4+PiAr ICBAcGFyYW1baW5dICAgICAgIERhdGEgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZm ZXIgY29udGFpbmluZyB0aGUgZGF0YSB0bw0KPiA+PiBiZQ0KPiA+Pj4gZGlnZXN0ZWQuDQo+ID4+ Pj4gKyAgQHBhcmFtW2luXSAgICAgICBEYXRhU2l6ZSAgICAgICAgICAgU2l6ZSBvZiBEYXRhIGJ1 ZmZlciBpbiBieXRlcy4NCj4gPj4+PiArDQo+ID4+Pj4gKyAgQHJldHZhbCBUUlVFICAgRVZQIGRh dGEgZGlnZXN0IHN1Y2NlZWRlZC4NCj4gPj4+PiArICBAcmV0dmFsIEZBTFNFICBFVlAgZGF0YSBk aWdlc3QgZmFpbGVkLg0KPiA+Pj4+ICsNCj4gPj4+PiArKiovDQo+ID4+Pj4gK0JPT0xFQU4NCj4g Pj4+PiArRUZJQVBJDQo+ID4+Pj4gK0V2cE1kVXBkYXRlICgNCj4gPj4+PiArICBJTiBPVVQgIFZP SUQgICAgICAgICpFdnBNZENvbnRleHQsDQo+ID4+Pj4gKyAgSU4gICAgICBDT05TVCBWT0lEICAq RGF0YSwNCj4gPj4+PiArICBJTiAgICAgIFVJTlROICAgICAgIERhdGFTaXplDQo+ID4+Pj4gKyAg KQ0KPiA+Pj4+ICt7DQo+ID4+Pj4gKyAgLy8NCj4gPj4+PiArICAvLyBDaGVjayBpbnB1dCBwYXJh bWV0ZXJzLg0KPiA+Pj4+ICsgIC8vDQo+ID4+Pj4gKyAgaWYgKEV2cE1kQ29udGV4dCA9PSBOVUxM KSB7DQo+ID4+Pj4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4+Pj4gKyAgfQ0KPiA+Pj4+ICsNCj4g Pj4+PiArICAvLw0KPiA+Pj4+ICsgIC8vIENoZWNrIGludmFsaWQgcGFyYW1ldGVycywgaW4gY2Fz ZSBvbmx5IERhdGFMZW5ndGggd2FzIGNoZWNrZWQgaW4NCj4gPj4+IE9wZW5TU0wNCj4gPj4+PiAr ICAvLw0KPiA+Pj4+ICsgIGlmIChEYXRhID09IE5VTEwgJiYgRGF0YVNpemUgIT0gMCkgew0KPiA+ Pj4+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+Pj4+ICsgIH0NCj4gPj4+PiArDQo+ID4+Pj4gKyAg Ly8NCj4gPj4+PiArICAvLyBPcGVuU1NMIEVWUCBkaWdlc3QgdXBkYXRlDQo+ID4+Pj4gKyAgLy8N Cj4gPj4+PiArICBpZiAoRVZQX0RpZ2VzdFVwZGF0ZSAoRXZwTWRDb250ZXh0LCBEYXRhLCBEYXRh U2l6ZSkgIT0gMSkgew0KPiA+Pj4+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+Pj4+ICsgIH0NCj4g Pj4+PiArDQo+ID4+Pj4gKyAgcmV0dXJuIFRSVUU7DQo+ID4+Pj4gK30NCj4gPj4+PiArDQo+ID4+ Pj4gKy8qKg0KPiA+Pj4+ICsgIENvbXBsZXRlcyBjb21wdXRhdGlvbiBvZiB0aGUgRVZQIGRpZ2Vz dCB2YWx1ZS4NCj4gPj4+PiArICBSZWxlYXNlcyB0aGUgc3BlY2lmaWVkIEVWUF9NRF9DVFggY29u dGV4dC4NCj4gPj4+PiArDQo+ID4+Pj4gKyAgVGhpcyBmdW5jdGlvbiBjb21wbGV0ZXMgRVZQIGhh c2ggY29tcHV0YXRpb24gYW5kIHJldHJpZXZlcyB0aGUgZGlnZXN0DQo+ID4+PiB2YWx1ZSBpbnRv DQo+ID4+Pj4gKyAgdGhlIHNwZWNpZmllZCBtZW1vcnkuIEFmdGVyIHRoaXMgZnVuY3Rpb24gaGFz IGJlZW4gY2FsbGVkLCB0aGUgRVZQDQo+IGNvbnRleHQNCj4gPj4+IGNhbm5vdA0KPiA+Pj4+ICsg IGJlIHVzZWQgYWdhaW4uDQo+ID4+Pj4gKyAgRVZQIGNvbnRleHQgc2hvdWxkIGJlIGFscmVhZHkg Y29ycmVjdGx5IGluaXRpYWxpemVkIGJ5IEV2cE1kSW5pdCgpLCBhbmQNCj4gPj4+IHNob3VsZA0K PiA+Pj4+ICsgIG5vdCBiZSBmaW5hbGl6ZWQgYnkgRXZwTWRGaW5hbCgpLiBCZWhhdmlvciB3aXRo IGludmFsaWQgRVZQIGNvbnRleHQgaXMNCj4gPj4+IHVuZGVmaW5lZC4NCj4gPj4+PiArDQo+ID4+ Pj4gKyAgSWYgRXZwTWRDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+Pj4+ ICsgIElmIERpZ2VzdFZhbHVlIGlzIE5VTEwsIGZyZWUgdGhlIENvbnRleHQgdGhlbiByZXR1cm4g RkFMU0UuDQo+ID4+Pj4gKw0KPiA+Pj4+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRXZwTWRDb250ZXh0 ICAgUG9pbnRlciB0byB0aGUgRVZQIGNvbnRleHQuDQo+ID4+Pj4gKyAgQHBhcmFtW291dF0gICAg ICBEaWdlc3QgICAgICAgICBQb2ludGVyIHRvIGEgYnVmZmVyIHRoYXQgcmVjZWl2ZXMgdGhlIEVW UA0KPiA+PiBkaWdlc3QNCj4gPj4+IHZhbHVlLg0KPiA+Pj4+ICsNCj4gPj4+PiArICBAcmV0dmFs IFRSVUUgICBFVlAgZGlnZXN0IGNvbXB1dGF0aW9uIHN1Y2NlZWRlZC4NCj4gPj4+PiArICBAcmV0 dmFsIEZBTFNFICBFVlAgZGlnZXN0IGNvbXB1dGF0aW9uIGZhaWxlZC4NCj4gPj4+PiArDQo+ID4+ Pj4gKyoqLw0KPiA+Pj4+ICtCT09MRUFODQo+ID4+Pj4gK0VGSUFQSQ0KPiA+Pj4+ICtFdnBNZEZp bmFsICgNCj4gPj4+PiArICBJTiBPVVQgIFZPSUQgICAqRXZwTWRDb250ZXh0LA0KPiA+Pj4+ICsg IE9VVCAgICAgVUlOVDggICpEaWdlc3RWYWx1ZQ0KPiA+Pj4+ICsgICkNCj4gPj4+PiArew0KPiA+ Pj4+ICsgIFVJTlQzMiAgICBMZW5ndGg7DQo+ID4+Pj4gKyAgQk9PTEVBTiAgIFJldHVyblZhbHVl Ow0KPiA+Pj4+ICsNCj4gPj4+PiArICBSZXR1cm5WYWx1ZSA9IFRSVUU7DQo+ID4+Pj4gKw0KPiA+ Pj4+ICsgIC8vDQo+ID4+Pj4gKyAgLy8gQ2hlY2sgaW5wdXQgcGFyYW1ldGVycy4NCj4gPj4+PiAr ICAvLw0KPiA+Pj4+ICsgIGlmIChFdnBNZENvbnRleHQgPT0gTlVMTCkgew0KPiA+Pj4+ICsgICAg cmV0dXJuIEZBTFNFOw0KPiA+Pj4+ICsgIH0NCj4gPj4+PiArICBpZiAoRGlnZXN0VmFsdWUgPT0g TlVMTCkgew0KPiA+Pj4+ICsgICAgRVZQX01EX0NUWF9mcmVlIChFdnBNZENvbnRleHQpOw0KPiA+ Pj4+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+Pj4+ICsgIH0NCj4gPj4+PiArDQo+ID4+Pj4gKyAg Ly8NCj4gPj4+PiArICAvLyBPcGVuU1NMIEVWUCBkaWdlc3QgZmluYWxpemF0aW9uDQo+ID4+Pj4g KyAgLy8NCj4gPj4+PiArICBpZiAoRVZQX0RpZ2VzdEZpbmFsX2V4IChFdnBNZENvbnRleHQsIERp Z2VzdFZhbHVlLCAmTGVuZ3RoKSAhPSAxKSB7DQo+ID4+Pj4gKyAgICBSZXR1cm5WYWx1ZSA9IEZB TFNFOw0KPiA+Pj4+ICsgIH0NCj4gPj4+DQo+ID4+Pg0KPiA+Pj4gKDcpIEkgc3VnZ2VzdCBkcm9w cGluZyB0aGUgIkxlbmd0aCIgbG9jYWwgdmFyaWFibGUuIEVWUF9EaWdlc3RGaW5hbF9leCgpDQo+ ID4+PiBkZWFscyBmaW5lIHdpdGggdGhlIHRoaXJkIHBhcmFtZXRlciBiZWluZyBOVUxMLCBhY2Nv cmRpbmcgdG8gdGhlIGRvY3MNCj4gPj4+IChhbmQgdGhlIGNvZGUpLg0KPiA+Pj4NCj4gPj4+DQo+ ID4+Pj4gKw0KPiA+Pj4+ICsgIC8vDQo+ID4+Pj4gKyAgLy8gRnJlZSBPcGVuU1NMIEVWUF9NRF9D VFggQ29udGV4dA0KPiA+Pj4+ICsgIC8vDQo+ID4+Pj4gKyAgRVZQX01EX0NUWF9mcmVlIChFdnBN ZENvbnRleHQpOw0KPiA+Pj4+ICsNCj4gPj4+PiArICByZXR1cm4gUmV0dXJuVmFsdWU7DQo+ID4+ Pj4gK30NCj4gPj4+PiArDQo+ID4+Pj4gKy8qKg0KPiA+Pj4+ICsgIENvbXB1dGVzIHRoZSBtZXNz YWdlIGRpZ2VzdCBvZiBhbiBpbnB1dCBkYXRhIGJ1ZmZlci4NCj4gPj4+PiArDQo+ID4+Pj4gKyAg VGhpcyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgbWVzc2FnZSBkaWdlc3Qgb2YgYSBnaXZlbiBkYXRh IGJ1ZmZlciwgYW5kDQo+ID4+IHBsYWNlcw0KPiA+Pj4+ICsgIHRoZSBkaWdlc3QgdmFsdWUgaW50 byB0aGUgc3BlY2lmaWVkIG1lbW9yeS4NCj4gPj4+PiArDQo+ID4+Pj4gKyAgSWYgRGlnZXN0TmFt ZSBpcyBOVUxMLCByZXR1cm4gRkFMU0UuDQo+ID4+Pj4gKyAgSWYgRGF0YSBpcyBOVUxMIGFuZCBE YXRhU2l6ZSBpcyBub3QgemVybywgcmV0dXJuIEZBTFNFLg0KPiA+Pj4+ICsgIElmIEhhc2hWYWx1 ZSBpcyBOVUxMLCByZXR1cm4gRkFMU0UuDQo+ID4+Pj4gKw0KPiA+Pj4+ICsgIEBwYXJhbVtpbl0g ICAgRGlnZXN0TmFtZSAgICBQb2ludGVyIHRvIHRoZSBkaWdlc3QgbmFtZS4NCj4gPj4+PiArICBA cGFyYW1baW5dICAgIERhdGEgICAgICAgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIGNvbnRhaW5p bmcgdGhlIGRhdGEgdG8gYmUNCj4gPj4+IGhhc2hlZC4NCj4gPj4+PiArICBAcGFyYW1baW5dICAg IERhdGFTaXplICAgICAgU2l6ZSBvZiBEYXRhIGJ1ZmZlciBpbiBieXRlcy4NCj4gPj4+PiArICBA cGFyYW1bb3V0XSAgIEhhc2hWYWx1ZSAgICAgUG9pbnRlciB0byBhIGJ1ZmZlciB0aGF0IHJlY2Vp dmVzIHRoZSBkaWdlc3QNCj4gPj4+IHZhbHVlLg0KPiA+Pj4+ICsNCj4gPj4+PiArICBAcmV0dmFs IFRSVUUgICBEaWdlc3QgY29tcHV0YXRpb24gc3VjY2VlZGVkLg0KPiA+Pj4+ICsgIEByZXR2YWwg RkFMU0UgIERpZ2VzdCBjb21wdXRhdGlvbiBmYWlsZWQuDQo+ID4+Pj4gKw0KPiA+Pj4+ICsqKi8N Cj4gPj4+PiArQk9PTEVBTg0KPiA+Pj4+ICtFRklBUEkNCj4gPj4+PiArRXZwTWRIYXNoQWxsICgN Cj4gPj4+PiArICBJTiAgQ09OU1QgQ0hBUjggICAqRGlnZXN0TmFtZSwNCj4gPj4+PiArICBJTiAg Q09OU1QgVk9JRCAgICAqRGF0YSwNCj4gPj4+PiArICBJTiAgVUlOVE4gICAgICAgICBEYXRhU2l6 ZSwNCj4gPj4+PiArICBPVVQgVUlOVDggICAgICAgICAqSGFzaFZhbHVlDQo+ID4+Pj4gKyAgKQ0K PiA+Pj4+ICt7DQo+ID4+Pj4gKyAgQk9PTEVBTiAgIFJlc3VsdDsNCj4gPj4+PiArICBWT0lEICAg ICAgKkV2cE1kQ29udGV4dDsNCj4gPj4+PiArDQo+ID4+Pj4gKyAgRXZwTWRDb250ZXh0ID0gRXZw TWRJbml0IChEaWdlc3ROYW1lKTsNCj4gPj4+PiArICBpZiAoRXZwTWRDb250ZXh0ID09IE5VTEwp IHsNCj4gPj4+PiArICAgIHJldHVybiBGQUxTRTsNCj4gPj4+PiArICB9DQo+ID4+Pj4gKw0KPiA+ Pj4+ICsgIFJlc3VsdCA9IEV2cE1kVXBkYXRlIChFdnBNZENvbnRleHQsIERhdGEsIERhdGFTaXpl KTsNCj4gPj4+PiArICBpZiAoUmVzdWx0ID09IEZBTFNFKSB7DQo+ID4+Pg0KPiA+Pj4gKDgpIFN0 eWxlOiBwbGVhc2Ugd3JpdGUgKCFSZXN1bHQpLg0KPiA+Pj4NCj4gPj4+DQo+ID4+Pj4gKyAgICBF dnBNZEZpbmFsIChFdnBNZENvbnRleHQsIE5VTEwpOw0KPiA+Pj4+ICsgICAgcmV0dXJuIEZBTFNF Ow0KPiA+Pj4+ICsgIH0NCj4gPj4+PiArDQo+ID4+Pj4gKyAgUmVzdWx0ID0gRXZwTWRGaW5hbCAo RXZwTWRDb250ZXh0LCBIYXNoVmFsdWUpOw0KPiA+Pj4+ICsNCj4gPj4+PiArICByZXR1cm4gUmVz dWx0Ow0KPiA+Pj4+ICt9DQo+ID4+Pj4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jh c2VDcnlwdExpYi9FdnAvQ3J5cHRFdnBNZE51bGwuYw0KPiA+Pj4gYi9DcnlwdG9Qa2cvTGlicmFy eS9CYXNlQ3J5cHRMaWIvRXZwL0NyeXB0RXZwTWROdWxsLmMNCj4gPj4+PiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiA+Pj4+IGluZGV4IDAwMDAwMDAwMDAuLjAzOGY2MzgwMWYNCj4gPj4+PiAtLS0g L2Rldi9udWxsDQo+ID4+Pj4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0V2 cC9DcnlwdEV2cE1kTnVsbC5jDQo+ID4+Pj4gQEAgLTAsMCArMSwxMjggQEANCj4gPj4+PiArLyoq IEBmaWxlDQo+ID4+Pj4gKyAgRVZQIE1EIFdyYXBwZXIgTnVsbCBMaWJyYXJ5Lg0KPiA+Pj4+ICsN Cj4gPj4+PiArQ29weXJpZ2h0IChjKSAyMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cyByZXNlcnZlZC48QlI+DQo+ID4+Pj4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50DQo+ID4+Pj4gKw0KPiA+Pj4+ICsqKi8NCj4gPj4+PiArDQo+ID4+Pj4gKyNp bmNsdWRlICJJbnRlcm5hbENyeXB0TGliLmgiDQo+ID4+Pj4gKw0KPiA+Pj4+ICsvKioNCj4gPj4+ PiArICBBbGxvY2F0ZXMgYW5kIGluaXRpYWxpemVzIG9uZSBFVlBfTURfQ1RYIGNvbnRleHQgZm9y IHN1YnNlcXVlbnQNCj4gRVZQX01EDQo+ID4+PiB1c2UuDQo+ID4+Pj4gKw0KPiA+Pj4+ICsgIFJl dHVybiBGQUxTRSB0byBpbmRpY2F0ZSB0aGlzIGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLg0K PiA+Pj4+ICsNCj4gPj4+PiArICBAcGFyYW1baW5dICAgIERpZ2VzdE5hbWUgICAgUG9pbnRlciB0 byB0aGUgZGlnZXN0IG5hbWUgYXMgYSBOVUxMLQ0KPiA+Pj4gdGVybWluYXRlZCBBU0NJSSBzdHJp bmcuDQo+ID4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkIGRpZ2VzdCBu YW1lcyBhcmU6DQo+ID4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ENSwgU0hB MSwgU0hBMjI0LCBTSEEyNTYsIFNIQTM4NCwgU0hBNTEyDQo+ID4+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNIQTMtMjI0LCBTSEEzLTI1NiwgU0hBMy0zODQsIFNIQTMtNTEyDQo+ ID4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNMw0KPiA+Pj4+ICsNCj4gPj4+ PiArICBAcmV0dXJuIE5VTEwgIFRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4+ Pj4gKw0KPiA+Pj4+ICsqKi8NCj4gPj4+PiArVk9JRCAqDQo+ID4+Pj4gK0VGSUFQSQ0KPiA+Pj4+ ICtFdnBNZEluaXQgKA0KPiA+Pj4+ICsgIElOICBDT05TVCBDSEFSOCAgICpEaWdlc3ROYW1lDQo+ ID4+Pj4gKyAgKQ0KPiA+Pj4+ICt7DQo+ID4+Pj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4+Pj4g KyAgcmV0dXJuIE5VTEw7DQo+ID4+Pj4gK30NCj4gPj4+PiArDQo+ID4+Pj4gKy8qKg0KPiA+Pj4+ ICsgIE1ha2VzIGEgY29weSBvZiBhbiBleGlzdGluZyBFVlBfTUQgY29udGV4dC4NCj4gPj4+PiAr DQo+ID4+Pj4gKyAgUmV0dXJuIEZBTFNFIHRvIGluZGljYXRlIHRoaXMgaW50ZXJmYWNlIGlzIG5v dCBzdXBwb3J0ZWQuDQo+ID4+Pj4gKw0KPiA+Pj4+ICsgIEBwYXJhbVtpbl0gIEV2cE1kQ29udGV4 dCAgICAgUG9pbnRlciB0byBFVlBfTUQgY29udGV4dCBiZWluZyBjb3BpZWQuDQo+ID4+Pj4gKyAg QHBhcmFtW291dF0gTmV3RXZwTWRDb250ZXh0ICBQb2ludGVyIHRvIG5ldyBFVlBfTUQgY29udGV4 dC4NCj4gPj4+PiArDQo+ID4+Pj4gKyAgQHJldHZhbCBGQUxTRSAgVGhpcyBpbnRlcmZhY2UgaXMg bm90IHN1cHBvcnRlZC4NCj4gPj4+PiArDQo+ID4+Pj4gKyoqLw0KPiA+Pj4+ICtCT09MRUFODQo+ ID4+Pj4gK0VGSUFQSQ0KPiA+Pj4+ICtFdnBNZER1cGxpY2F0ZSAoDQo+ID4+Pj4gKyAgSU4gIENP TlNUIFZPSUQgICAgKkV2cE1kQ29udGV4dCwNCj4gPj4+PiArICBPVVQgVk9JRCAgICAgICAgICAq TmV3RXZwTWRDb250ZXh0DQo+ID4+Pj4gKyAgKQ0KPiA+Pj4+ICt7DQo+ID4+Pj4gKyAgQVNTRVJU IChGQUxTRSk7DQo+ID4+Pj4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+Pj4+ICt9DQo+ID4+Pj4gKw0K PiA+Pj4+ICsvKioNCj4gPj4+PiArICBEaWdlc3RzIHRoZSBpbnB1dCBkYXRhIGFuZCB1cGRhdGVz IEVWUF9NRCBjb250ZXh0Lg0KPiA+Pj4+ICsNCj4gPj4+PiArICBSZXR1cm4gRkFMU0UgdG8gaW5k aWNhdGUgdGhpcyBpbnRlcmZhY2UgaXMgbm90IHN1cHBvcnRlZC4NCj4gPj4+PiArDQo+ID4+Pj4g KyAgQHBhcmFtW2luLCBvdXRdICBFdnBNZENvbnRleHQgICAgICAgUG9pbnRlciB0byB0aGUgRVZQ X01EIGNvbnRleHQuDQo+ID4+Pj4gKyAgQHBhcmFtW2luXSAgICAgICBEYXRhICAgICAgICAgICAg ICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8NCj4gPj4gYmUN Cj4gPj4+IGRpZ2VzdGVkLg0KPiA+Pj4+ICsgIEBwYXJhbVtpbl0gICAgICAgRGF0YVNpemUgICAg ICAgICAgIFNpemUgb2YgRGF0YSBidWZmZXIgaW4gYnl0ZXMuDQo+ID4+Pj4gKw0KPiA+Pj4+ICsg IEByZXR2YWwgRkFMU0UgIFRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4+Pj4g Kw0KPiA+Pj4+ICsqKi8NCj4gPj4+PiArQk9PTEVBTg0KPiA+Pj4+ICtFRklBUEkNCj4gPj4+PiAr RXZwTWRVcGRhdGUgKA0KPiA+Pj4+ICsgIElOIE9VVCAgVk9JRCAgICAgICAgKkV2cE1kQ29udGV4 dCwNCj4gPj4+PiArICBJTiAgICAgIENPTlNUIFZPSUQgICpEYXRhLA0KPiA+Pj4+ICsgIElOICAg ICAgVUlOVE4gICAgICAgRGF0YVNpemUNCj4gPj4+PiArICApDQo+ID4+Pj4gK3sNCj4gPj4+PiAr ICBBU1NFUlQgKEZBTFNFKTsNCj4gPj4+PiArICByZXR1cm4gRkFMU0U7DQo+ID4+Pj4gK30NCj4g Pj4+PiArDQo+ID4+Pj4gKy8qKg0KPiA+Pj4+ICsgIENvbXBsZXRlcyBjb21wdXRhdGlvbiBvZiB0 aGUgRVZQIGRpZ2VzdCB2YWx1ZS4NCj4gPj4+PiArICBSZWxlYXNlcyB0aGUgc3BlY2lmaWVkIEVW UF9NRF9DVFggY29udGV4dC4NCj4gPj4+PiArDQo+ID4+Pj4gKyAgUmV0dXJuIEZBTFNFIHRvIGlu ZGljYXRlIHRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4+Pj4gKw0KPiA+Pj4+ ICsgIEBwYXJhbVtpbiwgb3V0XSAgRXZwTWRDb250ZXh0ICAgUG9pbnRlciB0byB0aGUgRVZQIGNv bnRleHQuDQo+ID4+Pj4gKyAgQHBhcmFtW291dF0gICAgICBEaWdlc3QgICAgICAgICBQb2ludGVy IHRvIGEgYnVmZmVyIHRoYXQgcmVjZWl2ZXMgdGhlIEVWUA0KPiA+PiBkaWdlc3QNCj4gPj4+IHZh bHVlLg0KPiA+Pj4+ICsNCj4gPj4+PiArICBAcmV0dmFsIEZBTFNFICBUaGlzIGludGVyZmFjZSBp cyBub3Qgc3VwcG9ydGVkLg0KPiA+Pj4+ICsNCj4gPj4+PiArKiovDQo+ID4+Pj4gK0JPT0xFQU4N Cj4gPj4+PiArRUZJQVBJDQo+ID4+Pj4gK0V2cE1kRmluYWwgKA0KPiA+Pj4+ICsgIElOIE9VVCAg Vk9JRCAgICpFdnBNZENvbnRleHQsDQo+ID4+Pj4gKyAgT1VUICAgICBVSU5UOCAgKkRpZ2VzdFZh bHVlDQo+ID4+Pj4gKyAgKQ0KPiA+Pj4+ICt7DQo+ID4+Pj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ ID4+Pj4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+Pj4+ICt9DQo+ID4+Pj4gKw0KPiA+Pj4+ICsvKioN Cj4gPj4+PiArICBDb21wdXRlcyB0aGUgbWVzc2FnZSBkaWdlc3Qgb2YgYW4gaW5wdXQgZGF0YSBi dWZmZXIuDQo+ID4+Pj4gKw0KPiA+Pj4+ICsgIFJldHVybiBGQUxTRSB0byBpbmRpY2F0ZSB0aGlz IGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLg0KPiA+Pj4+ICsNCj4gPj4+PiArICBAcGFyYW1b aW5dICAgIERpZ2VzdE5hbWUgICAgUG9pbnRlciB0byB0aGUgZGlnZXN0IG5hbWUuDQo+ID4+Pj4g KyAgQHBhcmFtW2luXSAgICBEYXRhICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBjb250 YWluaW5nIHRoZSBkYXRhIHRvIGJlDQo+ID4+PiBoYXNoZWQuDQo+ID4+Pj4gKyAgQHBhcmFtW2lu XSAgICBEYXRhU2l6ZSAgICAgIFNpemUgb2YgRGF0YSBidWZmZXIgaW4gYnl0ZXMuDQo+ID4+Pj4g KyAgQHBhcmFtW291dF0gICBIYXNoVmFsdWUgICAgIFBvaW50ZXIgdG8gYSBidWZmZXIgdGhhdCBy ZWNlaXZlcyB0aGUgZGlnZXN0DQo+ID4+PiB2YWx1ZS4NCj4gPj4+PiArDQo+ID4+Pj4gKyAgQHJl dHZhbCBGQUxTRSAgVGhpcyBpbnRlcmZhY2UgaXMgbm90IHN1cHBvcnRlZC4NCj4gPj4+PiArDQo+ ID4+Pj4gKyoqLw0KPiA+Pj4+ICtCT09MRUFODQo+ID4+Pj4gK0VGSUFQSQ0KPiA+Pj4+ICtFdnBN ZEhhc2hBbGwgKA0KPiA+Pj4+ICsgIElOICBDT05TVCBDSEFSOCAgICpEaWdlc3ROYW1lLA0KPiA+ Pj4+ICsgIElOICBDT05TVCBWT0lEICAgICpEYXRhLA0KPiA+Pj4+ICsgIElOICBVSU5UTiAgICAg ICAgIERhdGFTaXplLA0KPiA+Pj4+ICsgIE9VVCBVSU5UOCAgICAgICAgICpIYXNoVmFsdWUNCj4g Pj4+PiArICApDQo+ID4+Pj4gK3sNCj4gPj4+PiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPj4+PiAr ICByZXR1cm4gRkFMU0U7DQo+ID4+Pj4gK30NCj4gPj4+PiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtn L0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9FdnAvQ3J5cHRFdnBNZE51bGwuYw0KPiA+Pj4gYi9D cnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWJOdWxsL0V2cC9DcnlwdEV2cE1kTnVsbC5jDQo+ ID4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4+PiBpbmRleCAwMDAwMDAwMDAwLi4wMzhm NjM4MDFmDQo+ID4+Pj4gLS0tIC9kZXYvbnVsbA0KPiA+Pj4+ICsrKyBiL0NyeXB0b1BrZy9MaWJy YXJ5L0Jhc2VDcnlwdExpYk51bGwvRXZwL0NyeXB0RXZwTWROdWxsLmMNCj4gPj4+PiBAQCAtMCww ICsxLDEyOCBAQA0KPiA+Pj4+ICsvKiogQGZpbGUNCj4gPj4+PiArICBFVlAgTUQgV3JhcHBlciBO dWxsIExpYnJhcnkuDQo+ID4+Pj4gKw0KPiA+Pj4+ICtDb3B5cmlnaHQgKGMpIDIwMjAsIEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPj4+PiArU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPj4+PiArDQo+ID4+Pj4gKyoq Lw0KPiA+Pj4+ICsNCj4gPj4+PiArI2luY2x1ZGUgIkludGVybmFsQ3J5cHRMaWIuaCINCj4gPj4+ PiArDQo+ID4+Pj4gKy8qKg0KPiA+Pj4+ICsgIEFsbG9jYXRlcyBhbmQgaW5pdGlhbGl6ZXMgb25l IEVWUF9NRF9DVFggY29udGV4dCBmb3Igc3Vic2VxdWVudA0KPiBFVlBfTUQNCj4gPj4+IHVzZS4N Cj4gPj4+PiArDQo+ID4+Pj4gKyAgUmV0dXJuIEZBTFNFIHRvIGluZGljYXRlIHRoaXMgaW50ZXJm YWNlIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4+Pj4gKw0KPiA+Pj4+ICsgIEBwYXJhbVtpbl0gICAg RGlnZXN0TmFtZSAgICBQb2ludGVyIHRvIHRoZSBkaWdlc3QgbmFtZSBhcyBhIE5VTEwtDQo+ID4+ PiB0ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZy4NCj4gPj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVmFsaWQgZGlnZXN0IG5hbWVzIGFyZToNCj4gPj4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTUQ1LCBTSEExLCBTSEEyMjQsIFNIQTI1NiwgU0hBMzg0LCBTSEE1MTIN Cj4gPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBMy0yMjQsIFNIQTMtMjU2 LCBTSEEzLTM4NCwgU0hBMy01MTINCj4gPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU00zDQo+ID4+Pj4gKw0KPiA+Pj4+ICsgIEByZXR1cm4gTlVMTCAgVGhpcyBpbnRlcmZhY2Ug aXMgbm90IHN1cHBvcnRlZC4NCj4gPj4+PiArDQo+ID4+Pj4gKyoqLw0KPiA+Pj4+ICtWT0lEICoN Cj4gPj4+PiArRUZJQVBJDQo+ID4+Pj4gK0V2cE1kSW5pdCAoDQo+ID4+Pj4gKyAgSU4gIENPTlNU IENIQVI4ICAgKkRpZ2VzdE5hbWUNCj4gPj4+PiArICApDQo+ID4+Pj4gK3sNCj4gPj4+PiArICBB U1NFUlQgKEZBTFNFKTsNCj4gPj4+PiArICByZXR1cm4gTlVMTDsNCj4gPj4+PiArfQ0KPiA+Pj4+ ICsNCj4gPj4+PiArLyoqDQo+ID4+Pj4gKyAgTWFrZXMgYSBjb3B5IG9mIGFuIGV4aXN0aW5nIEVW UF9NRCBjb250ZXh0Lg0KPiA+Pj4+ICsNCj4gPj4+PiArICBSZXR1cm4gRkFMU0UgdG8gaW5kaWNh dGUgdGhpcyBpbnRlcmZhY2UgaXMgbm90IHN1cHBvcnRlZC4NCj4gPj4+PiArDQo+ID4+Pj4gKyAg QHBhcmFtW2luXSAgRXZwTWRDb250ZXh0ICAgICBQb2ludGVyIHRvIEVWUF9NRCBjb250ZXh0IGJl aW5nIGNvcGllZC4NCj4gPj4+PiArICBAcGFyYW1bb3V0XSBOZXdFdnBNZENvbnRleHQgIFBvaW50 ZXIgdG8gbmV3IEVWUF9NRCBjb250ZXh0Lg0KPiA+Pj4+ICsNCj4gPj4+PiArICBAcmV0dmFsIEZB TFNFICBUaGlzIGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLg0KPiA+Pj4+ICsNCj4gPj4+PiAr KiovDQo+ID4+Pj4gK0JPT0xFQU4NCj4gPj4+PiArRUZJQVBJDQo+ID4+Pj4gK0V2cE1kRHVwbGlj YXRlICgNCj4gPj4+PiArICBJTiAgQ09OU1QgVk9JRCAgICAqRXZwTWRDb250ZXh0LA0KPiA+Pj4+ ICsgIE9VVCBWT0lEICAgICAgICAgICpOZXdFdnBNZENvbnRleHQNCj4gPj4+PiArICApDQo+ID4+ Pj4gK3sNCj4gPj4+PiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPj4+PiArICByZXR1cm4gRkFMU0U7 DQo+ID4+Pj4gK30NCj4gPj4+PiArDQo+ID4+Pj4gKy8qKg0KPiA+Pj4+ICsgIERpZ2VzdHMgdGhl IGlucHV0IGRhdGEgYW5kIHVwZGF0ZXMgRVZQX01EIGNvbnRleHQuDQo+ID4+Pj4gKw0KPiA+Pj4+ ICsgIFJldHVybiBGQUxTRSB0byBpbmRpY2F0ZSB0aGlzIGludGVyZmFjZSBpcyBub3Qgc3VwcG9y dGVkLg0KPiA+Pj4+ICsNCj4gPj4+PiArICBAcGFyYW1baW4sIG91dF0gIEV2cE1kQ29udGV4dCAg ICAgICBQb2ludGVyIHRvIHRoZSBFVlBfTUQgY29udGV4dC4NCj4gPj4+PiArICBAcGFyYW1baW5d ICAgICAgIERhdGEgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmlu ZyB0aGUgZGF0YSB0bw0KPiA+PiBiZQ0KPiA+Pj4gZGlnZXN0ZWQuDQo+ID4+Pj4gKyAgQHBhcmFt W2luXSAgICAgICBEYXRhU2l6ZSAgICAgICAgICAgU2l6ZSBvZiBEYXRhIGJ1ZmZlciBpbiBieXRl cy4NCj4gPj4+PiArDQo+ID4+Pj4gKyAgQHJldHZhbCBGQUxTRSAgVGhpcyBpbnRlcmZhY2UgaXMg bm90IHN1cHBvcnRlZC4NCj4gPj4+PiArDQo+ID4+Pj4gKyoqLw0KPiA+Pj4+ICtCT09MRUFODQo+ ID4+Pj4gK0VGSUFQSQ0KPiA+Pj4+ICtFdnBNZFVwZGF0ZSAoDQo+ID4+Pj4gKyAgSU4gT1VUICBW T0lEICAgICAgICAqRXZwTWRDb250ZXh0LA0KPiA+Pj4+ICsgIElOICAgICAgQ09OU1QgVk9JRCAg KkRhdGEsDQo+ID4+Pj4gKyAgSU4gICAgICBVSU5UTiAgICAgICBEYXRhU2l6ZQ0KPiA+Pj4+ICsg ICkNCj4gPj4+PiArew0KPiA+Pj4+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+Pj4+ICsgIHJldHVy biBGQUxTRTsNCj4gPj4+PiArfQ0KPiA+Pj4+ICsNCj4gPj4+PiArLyoqDQo+ID4+Pj4gKyAgQ29t cGxldGVzIGNvbXB1dGF0aW9uIG9mIHRoZSBFVlAgZGlnZXN0IHZhbHVlLg0KPiA+Pj4+ICsgIFJl bGVhc2VzIHRoZSBzcGVjaWZpZWQgRVZQX01EX0NUWCBjb250ZXh0Lg0KPiA+Pj4+ICsNCj4gPj4+ PiArICBSZXR1cm4gRkFMU0UgdG8gaW5kaWNhdGUgdGhpcyBpbnRlcmZhY2UgaXMgbm90IHN1cHBv cnRlZC4NCj4gPj4+PiArDQo+ID4+Pj4gKyAgQHBhcmFtW2luLCBvdXRdICBFdnBNZENvbnRleHQg ICBQb2ludGVyIHRvIHRoZSBFVlAgY29udGV4dC4NCj4gPj4+PiArICBAcGFyYW1bb3V0XSAgICAg IERpZ2VzdCAgICAgICAgIFBvaW50ZXIgdG8gYSBidWZmZXIgdGhhdCByZWNlaXZlcyB0aGUgRVZQ DQo+ID4+IGRpZ2VzdA0KPiA+Pj4gdmFsdWUuDQo+ID4+Pj4gKw0KPiA+Pj4+ICsgIEByZXR2YWwg RkFMU0UgIFRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4+Pj4gKw0KPiA+Pj4+ ICsqKi8NCj4gPj4+PiArQk9PTEVBTg0KPiA+Pj4+ICtFRklBUEkNCj4gPj4+PiArRXZwTWRGaW5h bCAoDQo+ID4+Pj4gKyAgSU4gT1VUICBWT0lEICAgKkV2cE1kQ29udGV4dCwNCj4gPj4+PiArICBP VVQgICAgIFVJTlQ4ICAqRGlnZXN0VmFsdWUNCj4gPj4+PiArICApDQo+ID4+Pj4gK3sNCj4gPj4+ PiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPj4+PiArICByZXR1cm4gRkFMU0U7DQo+ID4+Pj4gK30N Cj4gPj4+PiArDQo+ID4+Pj4gKy8qKg0KPiA+Pj4+ICsgIENvbXB1dGVzIHRoZSBtZXNzYWdlIGRp Z2VzdCBvZiBhbiBpbnB1dCBkYXRhIGJ1ZmZlci4NCj4gPj4+PiArDQo+ID4+Pj4gKyAgUmV0dXJu IEZBTFNFIHRvIGluZGljYXRlIHRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4+ Pj4gKw0KPiA+Pj4+ICsgIEBwYXJhbVtpbl0gICAgRGlnZXN0TmFtZSAgICBQb2ludGVyIHRvIHRo ZSBkaWdlc3QgbmFtZS4NCj4gPj4+PiArICBAcGFyYW1baW5dICAgIERhdGEgICAgICAgICAgUG9p bnRlciB0byB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gYmUNCj4gPj4+IGhhc2hl ZC4NCj4gPj4+PiArICBAcGFyYW1baW5dICAgIERhdGFTaXplICAgICAgU2l6ZSBvZiBEYXRhIGJ1 ZmZlciBpbiBieXRlcy4NCj4gPj4+PiArICBAcGFyYW1bb3V0XSAgIEhhc2hWYWx1ZSAgICAgUG9p bnRlciB0byBhIGJ1ZmZlciB0aGF0IHJlY2VpdmVzIHRoZSBkaWdlc3QNCj4gPj4+IHZhbHVlLg0K PiA+Pj4+ICsNCj4gPj4+PiArICBAcmV0dmFsIEZBTFNFICBUaGlzIGludGVyZmFjZSBpcyBub3Qg c3VwcG9ydGVkLg0KPiA+Pj4+ICsNCj4gPj4+PiArKiovDQo+ID4+Pj4gK0JPT0xFQU4NCj4gPj4+ PiArRUZJQVBJDQo+ID4+Pj4gK0V2cE1kSGFzaEFsbCAoDQo+ID4+Pj4gKyAgSU4gIENPTlNUIENI QVI4ICAgKkRpZ2VzdE5hbWUsDQo+ID4+Pj4gKyAgSU4gIENPTlNUIFZPSUQgICAgKkRhdGEsDQo+ ID4+Pj4gKyAgSU4gIFVJTlROICAgICAgICAgRGF0YVNpemUsDQo+ID4+Pj4gKyAgT1VUIFVJTlQ4 ICAgICAgICAgKkhhc2hWYWx1ZQ0KPiA+Pj4+ICsgICkNCj4gPj4+PiArew0KPiA+Pj4+ICsgIEFT U0VSVCAoRkFMU0UpOw0KPiA+Pj4+ICsgIHJldHVybiBGQUxTRTsNCj4gPj4+PiArfQ0KPiA+Pj4+ DQo+ID4+Pg0KPiA+Pj4gVGhhbmtzLA0KPiA+Pj4gTGFzemxvDQo+ID4+DQo+ID4+DQo+ID4+DQo+ ID4NCj4gDQo+IA0KPiANCg0K