From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mx.groups.io with SMTP id smtpd.web11.8464.1685518438494032356 for ; Wed, 31 May 2023 00:33:58 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=HZ5WuQY8; spf=pass (domain: intel.com, ip: 134.134.136.31, mailfrom: ray.ni@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685518438; x=1717054438; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=QyCBWZc4CiO3MBNKpRohiNj9VZZHJNROwhQRRYPweA8=; b=HZ5WuQY83OfAdaQgit+WnMMlU0bbZyUmbd8rHK2VmTSj8Xy3CKVNOqRN D5LQWqNGeVKXTJVzdUJFz6jjwcDxvl6ePEgfxeztwWW5/XT2YBd57jl3D XkOQFA+7KeBVDJIBPihi0/JtpIM24L4ld3jpVHwEzhXXBVvYIf61pyTkw WLaasVQckzRFFBZfoXu05GZ4OdcGcWKdgc1Rq6plfJzoZgYqIMHaYXTdM zEy3zCVhami+T5g/S8ezmApSOJ0DOjsmwLfJ1qz0Rghexhb4lK+Z3i3b7 eI2Ro2fzbMjwDDxSondyKHTxom0jTcIZF9fxYQ3t5JHc2YeIbvMXsvAml Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10726"; a="418654861" X-IronPort-AV: E=Sophos;i="6.00,205,1681196400"; d="scan'208";a="418654861" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2023 00:33:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10726"; a="851111657" X-IronPort-AV: E=Sophos;i="6.00,205,1681196400"; d="scan'208";a="851111657" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga001.fm.intel.com with ESMTP; 31 May 2023 00:33:57 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) 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.2507.23; Wed, 31 May 2023 00:33:56 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 31 May 2023 00:33:55 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 31 May 2023 00:33:55 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.106) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 31 May 2023 00:33:55 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HKD4YnU0H3iQ4llf8EvVrxkMd0nIObprJuTjQid2M2PhfKu6TswaDmrtiUUG2EH+r3piVgCh4hc3iLzyFj+ix7rliH592LPlamENZG3p9SeOLaEokl+xIS9Pb7E7OTwt447RjHbx5sHehE1axdq2nGbGM70okQzQTpf3WNMm4kJ9Bi6SXMHuQyiZqiXwyZjKUk0hUplJ3fVE7gkOv/Hh0pbjxm5Cz0AepU3LSu5YPvN1yqY88LqSo5srZYdpnq2aSe5q15yKUBEQfKVEA9MvA0ysK5b5ywCJYHOiFNZOwIavKKBFVPk9VTDS2Pqg4o5OufzaglKo9XBobXAduK/eNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=QyCBWZc4CiO3MBNKpRohiNj9VZZHJNROwhQRRYPweA8=; b=cKrYyLaYP70YrgwK0SYFuQmVbiwu93d9H6pgULr7PfI23q/RWN+I8PX0rXyqxBdhF3d2V/jqxlux+T7DN+8vG0jjfBfj12GCI66vBcXowpH0VF+Fs+XweshnOoWCYUFSFUlVf2I97y41t/9PRa2R3Di8+ASOwddZfBkETtHtYC3x+YRw1xjo2EWzUAHyJpYAcUOLnAuc87ZiCL/1bLc9g2U75KJduCaDapMChH+WJKTfI3/nJUOj4CKuBhkuT1lHX6c0P7ww624urPq3/rWFVrfnHI4QYuMNZTIFkChUhPwlH0084sJYfCWMe5pK0pF/t3DL8oG3Sg1ti3bhVsgaZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from MN6PR11MB8244.namprd11.prod.outlook.com (2603:10b6:208:470::14) by CY5PR11MB6307.namprd11.prod.outlook.com (2603:10b6:930:21::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.23; Wed, 31 May 2023 07:33:50 +0000 Received: from MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::892b:b8e6:bab7:635d]) by MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::892b:b8e6:bab7:635d%5]) with mapi id 15.20.6433.018; Wed, 31 May 2023 07:33:50 +0000 From: "Ni, Ray" To: Ard Biesheuvel CC: "devel@edk2.groups.io" , "Yao, Jiewen" , Gerd Hoffmann , Taylor Beebe , Oliver Smith-Denny , "Bi, Dandan" , "Gao, Liming" , "Kinney, Michael D" , Leif Lindholm , Sunil V L , "Warkentin, Andrei" Subject: Re: [RFC PATCH 05/10] MdeModulePkg: Define memory attribute PPI Thread-Topic: [RFC PATCH 05/10] MdeModulePkg: Define memory attribute PPI Thread-Index: AQHZjxWlHob9PT2NkUGSKmYyuvRK5K9yagxAgAAJhACAAZFHIA== Date: Wed, 31 May 2023 07:33:49 +0000 Message-ID: References: <20230525143041.1172989-1-ardb@kernel.org> <20230525143041.1172989-6-ardb@kernel.org> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN6PR11MB8244:EE_|CY5PR11MB6307:EE_ x-ms-office365-filtering-correlation-id: e54186ad-8d3d-4f33-4d53-08db61a9606c x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 0q4vYBLY52/otbf6uRKts+UziDnebv7FOunBODVTOhPCios1HDDpcKgpAUmIaHB+G4+d9jnnJxV2dyQKdJU53osF+bMqgQpTVjKqP0f1pIIDwOPSz5cEOUyYQFOJQ//9KUMbvAcGZkEz3n3zS31Y0rTYz7HL87cAK63DK+N3oJwavEq57xnKT7PcMuKDDIC+fpxI16DSTKeUbxWV8W9HdiASj6FW6EstWS77L8qkR5Ja5E+3LYwTr4CHMbJo5MjwNIkzNJTH9m9LYBAwEQObkbRYokLNPI2ddnDYBe+Xou0W4AZT5RlHIibXgaVPW4xUWAzH03n+shgjLhoTeDbynMoucqDGCqhQS0iU8j108aHiBv0VYWE5PgNS0NeHnQY03+dsDTFGEOXIcJCtox0ARQ1z5Wq+lh9xXotqn5P48/xNm7hfBF0uitPsvxuH3TEk1ONbDiRiuMCXv+fjqPI4ZzLuR3puyJ0V7aL2r5AFZjVo89ZKJTK5KumNVsL8DL1aSOtflpLib9ZUrWV6LKMDX53Oari0q/g+Sol9C798+r4Gdg/7f7Ouk3WNSueCDjzhyWVF9Vy0gzfnX2ATSvTAhe64d9VktOru/PIWj/UypkLC98T4fYiKMl2bFWc8r40K x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN6PR11MB8244.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(376002)(396003)(366004)(39860400002)(136003)(346002)(451199021)(41300700001)(7696005)(86362001)(38070700005)(55016003)(6916009)(4326008)(316002)(76116006)(71200400001)(33656002)(66476007)(66446008)(66556008)(64756008)(66946007)(186003)(52536014)(83380400001)(107886003)(26005)(9686003)(53546011)(6506007)(19627235002)(5660300002)(478600001)(2906002)(38100700002)(82960400001)(54906003)(8676002)(8936002)(122000001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?U2dHcFh1NmZFUnorVnR5ZndwUVNvdDd1cko5a0I4UWlTTnBjYXR2UW5KRmpE?= =?utf-8?B?ZnRpMTJIQnlDS2RCbVZkaWZ0c09XRTdiV2pZKzNZWkYreGtDUkFnbG4waHh2?= =?utf-8?B?aXF0d1YyUHlKakxkUS91RHNqdC9HM0twWlI2ODJUdjZwU3BuM20rQXRCZThV?= =?utf-8?B?ZTIxVFJxeGRSQ1ZGUWh4bG5iMklOU09meWhoUkoxcEJVZ3RhU1VlcXVGUjVt?= =?utf-8?B?bHhJSFIvUGl2QVU2bitiM3MzT1EvRkxVM3drbzZ5c0JzVjJGMEdsYUl6L1Rs?= =?utf-8?B?eldSZ29ITEM4L2o4UXVTeVN6eEJocERxWm5IMFZzeDRmcFUrVnFsdTlpVE5P?= =?utf-8?B?cmRtSmxiLzM4cHJ0UEdpOG55aTUyZEJ1dGVVOWhkOUFpdWg2Qm9iNUQ3YlZW?= =?utf-8?B?Z2NPa1drTjV0TzM2SHUwbUk5MW1ZK1E2Qjllck5nR2pHbDlYWTA3dWNFajda?= =?utf-8?B?VDk4cFh4TnNQK1UwOTlmWHV2cGV1ek1iYVpmRVJXd3pFR1A3Qk9YSHloQWZX?= =?utf-8?B?cCtGQVBiN1A3Q2dJbXJOTCsrUHNWMFh5V0JZV3BaeG5YZGJtS0xlWFdtYVFI?= =?utf-8?B?dzhOSUxyNDlpUHVhTEdqV1lHR0l3RmtRNm8rZnpGRWc5WG5PY1c4M0R3b1Bt?= =?utf-8?B?Z0xLSnhRN1c5cVhuVU5zdlI1VC83L2g3K3Iwb3lBRUJIMnlxZFV2SGZ4MWE4?= =?utf-8?B?Uk5DNVk5Ukl0aFdoVjZidXcrWGo4dnhqUGRlRDBjeXRwT0NvVGdhejNvL2JN?= =?utf-8?B?OS91RmJCYnExNUJMZXpTN2NHWVo1S08rTkxDcGdWTk1lNG1qdjA1MXdybkp4?= =?utf-8?B?bEE2WnhMaWxyOWkrTG5JQUlmaUVuSVRnaUVxZlQ2VkFxNmR3TjJuS1REOHJz?= =?utf-8?B?WDlMWnlrNW8rS2tiWXFPeEVpZWtvR0oxUHVoeHdoTGJpcjFUYVI2ZUVFbS9j?= =?utf-8?B?Z0ZpK1Q0K1ViWm1RdkJHL3RBb1BkbTBOSUV0bGpDcGJIR2U0OWNLWXk4K0RO?= =?utf-8?B?K3JUek0zZ1dWSDlDL1k5am8zZDZuQzIzNGlyb0pyeDcweFlPYURMK0tvQmVm?= =?utf-8?B?Y3RWeGJVbjNlWDdaWE1HRk5Dd2lRL1h1UHEwdWl4ZGRxbW1NY0FHdktmb3BG?= =?utf-8?B?VnZ5c1JHRHl6ZlV5K01SRWRHd2J1VkZ6amlvYUsxbkdsUHY2UVFYK3JNM01P?= =?utf-8?B?US96V3ZVSnNOTnluN3V4SlV6ZmVTcEJFWHZUTk1rdG12VXd3WkM2V3NxWEUw?= =?utf-8?B?d3lTUzVpdmNMeXhsc2pJeFpSREFFYVNTNjZIdzk3dlE2c01TTjJIMjhCWkJ4?= =?utf-8?B?aUVhU1VZbWw3UENKOXlTM1M1Tkx2ZUxnMzJhM0pBaU00Wnc4OGVxVjcrUjFE?= =?utf-8?B?Mk4ySVpnQWlsdzd4SjRvMk1HM3NWS0NmR2tlcmM0VE00dHNweGFRZWdoM2VN?= =?utf-8?B?ZXdMM3V6UmFxQnNSRzBldVZFVlRraTlYQlFQd1hrZnZoY0ZOMFpVR0tubFpq?= =?utf-8?B?K2ZRK29CTGo3VjQzQTdxN0x3TFNKc1FJWWxaNURYZGxOM2FpU29YaWVxU0Fs?= =?utf-8?B?T1ljUzhUcE5sS2Z5aVBoQVkxU2NVbGVxZTAyOXhnK3JQS0dmOW1NMXR4V2ha?= =?utf-8?B?NG0zeFpwcWI5UUQ5T2lUWG1KdzlzVG04bkp3dUdBNk1uRCtIT3E0cGxmdCtV?= =?utf-8?B?UkdVZER4MmZGcXFqazROS09yMkFwbnVNWWRUdTBKMUZyNVJKNUpNakM5TVZ1?= =?utf-8?B?VHdMUXdGZTVlN2JuOHd0MklGbDBvN1VoMzQ4RjIvazYvNEY5aFUvTy9iVC8r?= =?utf-8?B?NGRtYTlFY2tpQ1cyOVJFWkVKU3JNcnoxR0RtbG10V3FoNml3aEZuTU01WGVx?= =?utf-8?B?Wm9tTC8rV1FhOHA2Zk50S0tjWnhJMkJXVEdXRlBObVhDN00yZ0s4OTdhelFt?= =?utf-8?B?b0t6Y3hXKys2LzdHWkNxZGx6WVA2NGx6d095NHp0YXZkYy9JclltQnRKak9Q?= =?utf-8?B?OU54QjFWMTh2RTNFN1pBdEhNRUYxYjRteDFIanNXeG1ndis3SEtjbEx2MUNq?= =?utf-8?B?SEExYklZUDh2M20xNExFOTRUbW1pSjBDaHhLS1dsRkRCdWoyQ2RaMFFObHh5?= =?utf-8?Q?Raw4=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN6PR11MB8244.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e54186ad-8d3d-4f33-4d53-08db61a9606c X-MS-Exchange-CrossTenant-originalarrivaltime: 31 May 2023 07:33:49.7801 (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: Aga/kLcyEIKY8QWMm6oGmS29A0LuWlK1AMS2NIme876AyFJOxKDsmEhyeT15eBIWLmhc6zx8kFqp7/qCnfdo5g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR11MB6307 Return-Path: ray.ni@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQXJkIEJpZXNoZXV2ZWwg PGFyZGJAa2VybmVsLm9yZz4NCj4gU2VudDogVHVlc2RheSwgTWF5IDMwLCAyMDIzIDM6MzIgUE0N Cj4gVG86IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+DQo+IENjOiBkZXZlbEBlZGsyLmdyb3Vw cy5pbzsgWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgR2VyZA0KPiBIb2ZmbWFu biA8a3JheGVsQHJlZGhhdC5jb20+OyBUYXlsb3IgQmVlYmUgPHRAdGF5bG9yYmVlYmUuY29tPjsg T2xpdmVyDQo+IFNtaXRoLURlbm55IDxvc2RAc21pdGgtZGVubnkuY29tPjsgQmksIERhbmRhbiA8 ZGFuZGFuLmJpQGludGVsLmNvbT47DQo+IEdhbywgTGltaW5nIDxnYW9saW1pbmdAYnlvc29mdC5j b20uY24+OyBLaW5uZXksIE1pY2hhZWwgRA0KPiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+ OyBMZWlmIExpbmRob2xtIDxxdWljX2xsaW5kaG9sQHF1aWNpbmMuY29tPjsNCj4gU3VuaWwgViBM IDxzdW5pbHZsQHZlbnRhbmFtaWNyby5jb20+OyBXYXJrZW50aW4sIEFuZHJlaQ0KPiA8YW5kcmVp LndhcmtlbnRpbkBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUkZDIFBBVENIIDA1LzEwXSBN ZGVNb2R1bGVQa2c6IERlZmluZSBtZW1vcnkgYXR0cmlidXRlIFBQSQ0KPiANCj4gT24gVHVlLCAz MCBNYXkgMjAyMyBhdCAwOToxNSwgTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT4gd3JvdGU6DQo+ ID4NCj4gPiAxLg0KPiA+IFRoZSBQUEkgaW50ZXJmYWNlIHN1cHBvcnRzIHRvIHNldCBhbmQgY2xl YXIgYW55IGF0dHJpYnV0ZXMgd2l0aCBzaW5nbGUNCj4gaW52b2NhdGlvbi4NCj4gPiBUaGF0J3Mg bXVjaCBiZXR0ZXIgdGhhbiB0aGUgZXhpc3RpbmcgVUVGSSBwcm90b2NvbCBwcm90b3R5cGUgd2hp Y2ggcmVxdWlyZXMNCj4gY2FsbGVyIHRvIGNhbGwgdGhlIGludGVyZmFjZXMNCj4gPiB0d2ljZSB0 byBzZXQgYW5kIGNsZWFyIHNvbWUgYXR0cmlidXRlcy4NCj4gPg0KPiANCj4gQWdyZWUsIEkgdGhp bmsgdGhhdCB3YXMgYSBtaXN0YWtlIHRvIGRlZmluZSB0aGUgVUVGSSBtZW1vcnkgYXR0cmlidXRl cw0KPiBwcm90b2NvbCBsaWtlIHRoYXQsIGFzIGl0IHJlcXVpcmVzIHR3byB0cmF2ZXJzYWxzIG9m IHRoZSBwYWdlIHRhYmxlcw0KPiBmb3IgdGhlIG1vc3QgY29tbW9uIGNhc2Ugb2YgY29udmVydGlu ZyBSTyAtPiBYUCBvciB2aWNlIHZlcnNhLg0KPiANCj4gPiBTbyBmYXIgSSBzZWUgdHdvIHBhdHRl cm5zIGZvciBhdHRyaWJ1dGVzIHNldHRpbmc6DQo+ID4gKi4gVGhlIHBhdHRlbiBpbiB0aGlzIHBh dGNoOiBTZXRNYXNrL0NsZWFyTWFzaw0KPiA+ICouIFRoZSBwYXR0ZXJuIEkgdXNlZCBpbiBQYWdl VGFibGVMaWI6IEF0dHJpYnV0ZS9NYXNrLg0KPiA+DQo+ID4gSSB0aGluayBmcm9tIGNhbGxlciBz aWRlLCB0aGV5IHByb3ZpZGUgdGhlIHNhbWUgY2FwYWJpbGl0aWVzLg0KPiA+IFRoZSBkaWZmZXJl bmNlIGlzIFNldE1hc2svQ2xlYXJNYXNrIGV4cGVjdHMgY2FsbGVycyB0byBub3Qgc2V0IHRoZSBz YW1lIEJJVA0KPiBpbiBib3RoDQo+ID4gU2V0TWFzay9DbGVhck1hc2suDQo+ID4NCj4gPiAoSSB0 aG91Z2h0IHRoZXJlIHdvdWxkIGJlIHNpbWlsYXIgZXhpc3RpbmcgaW50ZXJmYWNlcyBhcyBwYXR0 ZXJuIDIuIEJ1dCBJIGRpZG4ndA0KPiBmaW5kIGFueSBub3cuKQ0KPiA+IERvIHlvdSBtaW5kIHRv IGFsaWduIHRvIHBhdHRlcm4gIzI/DQo+ID4NCj4gDQo+IFRoYXQgaXMgZmluZSAtIEkgYWN0dWFs bHkgcHJlZmVyIHRoYXQgKGFuZCB0aGlzIGlzIHdoYXQgQXJtTW11TGliDQo+IGltcGxlbWVudHMg aW50ZXJuYWxseSkgYnV0IEkgZGlkIG5vdCB3YW50IHRvIGRldmlhdGUgZnJvbSB0aGUgVUVGSQ0K PiBwcm90b2NvbCB0b28gbXVjaC4NCg0KQnkgYWRkaW5nICJDbGVhck1hc2siLCB5b3UgYWxyZWFk eSBtYWRlIHNvbWV0aGluZyBkaWZmZXJlbnTwn5iKDQpHb29kIHRvIGtub3cgeW91IHByZWZlciBw YXR0ZXJuICMyLg0KDQo+IA0KPiA+DQo+ID4gMi4NCj4gPiBXaGVuIGEgbWVtb3J5IHJlZ2lvbiBp cyBtYXJrZWQgZnJvbSBub3QtcHJlc2VudCB0byBwcmVzZW50LCBQYWdlVGFibGVMaWINCj4gZXhw ZWN0cw0KPiA+IGNhbGxlciB0byBzdXBwbHkgYWxsIG1lbW9yeSBhdHRyaWJ1dGVzIChpbmNsdWRp bmcgUlcsIE5YLCBldGMuKSBhcyB0aGUgbGliDQo+IGltcGxlbWVudGF0aW9uIGRvZXNuJ3QNCj4g PiB3YW50IHRvIGNhcnJ5IGFueSBkZWZhdWx0IGF0dHJpYnV0ZXMuLg0KPiA+IERvIHlvdSB0aGlu ayB0aGUgTWVtb3J5QXR0cmlidXRlIFBQSSBzaG91bGQgZXhwZWN0IHRoZSBzYW1lIHRvIGNhbGxl cj8NCj4gPg0KPiANCj4gSSdtIG5vdCBzdXJlIEkgZm9sbG93Lg0KPiANCj4gVGhlIFBQSSAoYXMg d2VsbCBhcyB0aGUgVUVGSSBwcm90b2NvbCkgY2FuIG9ubHkgb3BlcmF0ZSBvbiB2YWxpZA0KPiBt YXBwaW5nLCBhbmQgY2FuIG9ubHkgYmUgdXNlZCB0byBtYW5pcHVsYXRlIFJQL1JPL1hQLiBJdCBj YW5ub3QgYmUNCj4gdXNlZCB0byBjcmVhdGUgbWFwcGluZ3MgZnJvbSBzY3JhdGNoLg0KV2hlbiBh IHJhbmdlIG9mIG1lbW9yeSBpcyBtYXJrZWQgYXMgIlJQIiwgWDg2IHBhZ2UgdGFibGUgY2xlYXJz IHRoZSANCiJQcmVzZW50IiBiaXQgZm9yIHRoYXQgcmFuZ2UgbWVtb3J5Lg0KIlByZXNlbnQiIGJp dCBpcyBhIG1hc3RlciBiaXQgaW4gWDg2IHBhZ2UgdGFibGUuIFdoZW4gdGhhdCBiaXQgaXMgY2xl YXIsIGFsbA0Kb3RoZXIgYml0cyAoIldyaXRhYmxlIiwgIk5vbi1FeGVjdXRpb24iLCBldGMuKSBh cmUgaWdub3JlZCBieSBDUFUuDQoNClNvLCBpZiBjYWxsZXIgY2xlYXJzIHRoZSAiUlAiIGJpdCAo c2V0dGluZyAiUHJlc2VudCIgYml0IGluIHBhZ2UgdGFibGUpLCB0aGF0J3MgYW4NCm9wZXJhdGlv biB0byBtYXAgYmFjayBzb21lIG1lbW9yeS4NClg4NiBDcHVQYWdlVGFibGVMaWIgcmVxdWlyZXMg YWxsIGF0dHJpYnV0ZXMgYmUgcHJvdmlkZWQgZm9yIG1hcHBpbmcgYmFjaw0Kc29tZSBtZW1vcnku DQoNCj4gDQo+IERvIHlvdSB0aGluayB0aGlzIGNhcGFiaWxpdHkgc2hvdWxkIGJlIGFkZGVkPyBJ ZiBzbywgSSB0aGluayBpdCBpcw0KPiByZWFzb25hYmxlIHRvIHJlcXVpcmUgdGhlIGNhbGxlciB0 byBwcm92aWRlIGFsbCBhdHRyaWJ1dGVzLCBhbmQgb24gQVJNDQo+IHRoaXMgd291bGQgaGF2ZSB0 byBpbmNsdWRlIHRoZSBtZW1vcnkgY2FjaGVhYmlsaXR5IHR5cGUgYXMgd2Ugc2hvdWxkDQo+IG5v dCBwcm92aWRlIGEgZGVmYXVsdCBmb3IgdGhhdCBlaXRoZXIuDQoNClllcy4gSSB0aGluayB0aGlz IGlzIHJlcXVpcmVkLiBIYXZpbmcgdGhpcyBydWxlIGNhbiBoZWxwIGNhbGxlciB3cml0ZSByb2J1 c3QgY29kZQ0KaW5zdGVhZCBvZiBkZXBlbmRpbmcgb24gc29tZSBkZWZhdWx0IGF0dHJpYnV0ZXMg aW4gUFBJL1Byb3RvY29sIGltcGxlbWVudGF0aW9uLg0KDQo+IA0KPiBUaGFua3MsDQo+IEFyZC4N Cj4gDQo+IA0KPiA+DQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g PiBGcm9tOiBBcmQgQmllc2hldXZlbCA8YXJkYkBrZXJuZWwub3JnPg0KPiA+ID4gU2VudDogVGh1 cnNkYXksIE1heSAyNSwgMjAyMyAxMDozMSBQTQ0KPiA+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBz LmlvDQo+ID4gPiBDYzogQXJkIEJpZXNoZXV2ZWwgPGFyZGJAa2VybmVsLm9yZz47IE5pLCBSYXkg PHJheS5uaUBpbnRlbC5jb20+OyBZYW8sDQo+IEppZXdlbg0KPiA+ID4gPGppZXdlbi55YW9AaW50 ZWwuY29tPjsgR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+OyBUYXlsb3INCj4gQmVl YmUNCj4gPiA+IDx0QHRheWxvcmJlZWJlLmNvbT47IE9saXZlciBTbWl0aC1EZW5ueSA8b3NkQHNt aXRoLWRlbm55LmNvbT47IEJpLA0KPiBEYW5kYW4NCj4gPiA+IDxkYW5kYW4uYmlAaW50ZWwuY29t PjsgR2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47DQo+IEtpbm5leSwNCj4g PiA+IE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBMZWlmIExpbmRob2xt DQo+ID4gPiA8cXVpY19sbGluZGhvbEBxdWljaW5jLmNvbT47IFN1bmlsIFYgTCA8c3VuaWx2bEB2 ZW50YW5hbWljcm8uY29tPjsNCj4gV2Fya2VudGluLA0KPiA+ID4gQW5kcmVpIDxhbmRyZWkud2Fy a2VudGluQGludGVsLmNvbT4NCj4gPiA+IFN1YmplY3Q6IFtSRkMgUEFUQ0ggMDUvMTBdIE1kZU1v ZHVsZVBrZzogRGVmaW5lIG1lbW9yeSBhdHRyaWJ1dGUgUFBJDQo+ID4gPg0KPiA+ID4gRGVmaW5l IGEgUFBJIGludGVyZmFjZSB0aGF0IG1heSBiZSB1c2VkIGJ5IHRoZSBQRUkgY29yZSBvciBvdGhl ciBQRUlNcw0KPiA+ID4gdG8gbWFuYWdlIHBlcm1pc3Npb25zIG9uIG1lbW9yeSByYW5nZXMuIFRo aXMgaXMgcHJpbWFyaWx5IGludGVuZGVkIGZvcg0KPiA+ID4gcmVzdHJpY3RpbmcgcGVybWlzc2lv bnMgdG8gd2hhdCBpcyBhY3R1YWxseSBuZWVkZWQgZm9yIGNvcnJlY3QgZXhlY3V0aW9uDQo+ID4g PiBieSB0aGUgY29kZSBpbiBxdWVzdGlvbiwgYW5kIGZvciBsaW1pdGluZyB0aGUgdXNlIG9mIG1l bW9yeSBtYXBwaW5ncw0KPiA+ID4gdGhhdCBhcmUgYm90aCB3cml0YWJsZSBhbmQgZXhlY3V0YWJs ZSBhdCB0aGUgc2FtZSB0aW1lLg0KPiA+ID4NCj4gPiA+IFNpZ25lZC1vZmYtYnk6IEFyZCBCaWVz aGV1dmVsIDxhcmRiQGtlcm5lbC5vcmc+DQo+ID4gPiAtLS0NCj4gPiA+ICBNZGVNb2R1bGVQa2cv SW5jbHVkZS9QcGkvTWVtb3J5QXR0cmlidXRlLmggfCA3OA0KPiArKysrKysrKysrKysrKysrKysr Kw0KPiA+ID4gIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjICAgICAgICAgICAgICB8ICAz ICsNCj4gPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDgxIGluc2VydGlvbnMoKykNCj4gPiA+DQo+ID4g PiBkaWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL0luY2x1ZGUvUHBpL01lbW9yeUF0dHJpYnV0ZS5o DQo+ID4gPiBiL01kZU1vZHVsZVBrZy9JbmNsdWRlL1BwaS9NZW1vcnlBdHRyaWJ1dGUuaA0KPiA+ ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAuLjVm ZjMxMTg1YWI0MTgzZjgNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL01kZU1vZHVs ZVBrZy9JbmNsdWRlL1BwaS9NZW1vcnlBdHRyaWJ1dGUuaA0KPiA+ID4gQEAgLTAsMCArMSw3OCBA QA0KPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPiArQ29weXJp Z2h0IChjKSAyMDIzLCBHb29nbGUgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+ICsqKi8NCj4gPiA+DQo+ ID4gPiArDQo+ID4gPg0KPiA+ID4gKyNpZm5kZWYgRURLSUlfTUVNT1JZX0FUVFJJQlVURV9QUElf SF8NCj4gPiA+DQo+ID4gPiArI2RlZmluZSBFREtJSV9NRU1PUllfQVRUUklCVVRFX1BQSV9IXw0K PiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPiArI2luY2x1ZGUgPFVlZmkvVWVmaVNwZWMuaD4N Cj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4gKy8vLw0KPiA+ID4NCj4gPiA+ICsvLy8gR2xv YmFsIElEIGZvciB0aGUgRURLSUlfTUVNT1JZX0FUVFJJQlVURV9QUEkuDQo+ID4gPg0KPiA+ID4g Ky8vLw0KPiA+ID4NCj4gPiA+ICsjZGVmaW5lIEVES0lJX01FTU9SWV9BVFRSSUJVVEVfUFBJX0dV SUQgXA0KPiA+ID4NCj4gPiA+ICsgIHsgXA0KPiA+ID4NCj4gPiA+ICsgICAgMHgxYmU4NDBkZSwg MHgyZDkyLCAweDQxZWMsIHsgMHhiNiwgMHhkMywgMHgxOSwgMHg2NCwgMHgxMywgMHg1MCwNCj4g MHg1MSwNCj4gPiA+IDB4ZmIgfSBcDQo+ID4gPg0KPiA+ID4gKyAgfQ0KPiA+ID4NCj4gPiA+ICsN Cj4gPiA+DQo+ID4gPiArLy8vDQo+ID4gPg0KPiA+ID4gKy8vLyBGb3J3YXJkIGRlY2xhcmF0aW9u IGZvciB0aGUgRURLSUlfTUVNT1JZX0FUVFJJQlVURV9QUEkuDQo+ID4gPg0KPiA+ID4gKy8vLw0K PiA+ID4NCj4gPiA+ICt0eXBlZGVmIHN0cnVjdCBfRURLSUlfTUVNT1JZX0FUVFJJQlVURV9QUEkN Cj4gPiA+IEVES0lJX01FTU9SWV9BVFRSSUJVVEVfUFBJOw0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+ DQo+ID4gPiArLyoqDQo+ID4gPg0KPiA+ID4gKyAgU2V0IHRoZSByZXF1ZXN0ZWQgbWVtb3J5IHBl cm1pc3Npb24gYXR0cmlidXRlcyBvbiBhIHJlZ2lvbiBvZiBtZW1vcnkuDQo+ID4gPg0KPiA+ID4g Kw0KPiA+ID4NCj4gPiA+ICsgIEJhc2VBZGRyZXNzIGFuZCBMZW5ndGggbXVzdCBiZSBhbGlnbmVk IHRvIEVGSV9QQUdFX1NJWkUuDQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+ICsgIEJvdGgg U2V0TWFzayBhbmQgQ2xlYXJNYXNrIG1heSBjb250YWluIGFueSBjb21iaW5hdGlvbiBvZg0KPiA+ ID4gRUZJX01FTU9SWV9SUCwNCj4gPiA+DQo+ID4gPiArICBFRklfTUVNT1JZX1JPIGFuZCBFRklf TUVNT1JZX1hQLCB3aXRoIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOg0KPiA+ID4NCj4gPiA+ ICsgIC0gZWFjaCBjb25zdGFudCBtYXkgYXBwZWFyIGluIGVpdGhlciBTZXRNYXNrIG9yIENsZWFy TWFzaywgYnV0IG5vdCBpbg0KPiBib3RoOw0KPiA+ID4NCj4gPiA+ICsgIC0gU2V0TWFzayBvciBD bGVhck1hc2sgbWF5IGJlIDB4MCwgYnV0IG5vdCBib3RoLg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+ DQo+ID4gPiArICBAcGFyYW1baW5dICBUaGlzICAgICAgICAgICAgVGhlIHByb3RvY29sIGluc3Rh bmNlIHBvaW50ZXIuDQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQmFzZUFkZHJlc3MgICAg IFRoZSBwaHlzaWNhbCBhZGRyZXNzIHRoYXQgaXMgdGhlIHN0YXJ0DQo+IGFkZHJlc3Mgb2YNCj4g PiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBtZW1vcnkgcmVnaW9u Lg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIExlbmd0aCAgICAgICAgICBUaGUgc2l6ZSBp biBieXRlcyBvZiB0aGUgbWVtb3J5IHJlZ2lvbi4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5d ICBTZXRNYXNrICAgICAgICAgTWFzayBvZiBtZW1vcnkgYXR0cmlidXRlcyB0byBzZXQuDQo+ID4g Pg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQ2xlYXJNYXNrICAgICAgIE1hc2sgb2YgbWVtb3J5IGF0 dHJpYnV0ZXMgdG8gY2xlYXIuDQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBhdHRyaWJ1dGVzIHdlcmUgc2V0IGZvciB0aGUg bWVtb3J5DQo+IHJlZ2lvbi4NCj4gPiA+DQo+ID4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BB UkFNRVRFUiBMZW5ndGggaXMgemVyby4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJbnZhbGlkIGNvbWJpbmF0aW9uIG9mIFNldE1hc2sgYW5kIENsZWFyTWFz ay4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlQWRk cmVzcyBvciBMZW5ndGggaXMgbm90IHN1aXRhYmx5IGFsaWduZWQuDQo+ID4gPg0KPiA+ID4gKyAg QHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgVGhlIHByb2Nlc3NvciBkb2VzIG5vdCBzdXBw b3J0IG9uZSBvcg0KPiBtb3JlDQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYnl0ZXMgb2YgdGhlIG1lbW9yeSByZXNvdXJjZSByYW5nZSBzcGVjaWZpZWQNCj4g PiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSBCYXNlQWRkcmVz cyBhbmQgTGVuZ3RoLg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFRoZSBiaXQgbWFzayBvZiBhdHRyaWJ1dGVzIGlzIG5vdCBzdXBwb3J0ZWQgZm9yDQo+ID4g Pg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1lbW9yeSByZXNv dXJjZSByYW5nZSBzcGVjaWZpZWQgYnkNCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBCYXNlQWRkcmVzcyBhbmQgTGVuZ3RoLg0KPiA+ID4NCj4gPiA+ICsgIEBy ZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIFJlcXVlc3RlZCBhdHRyaWJ1dGVzIGNhbm5vdCBi ZQ0KPiBhcHBsaWVkDQo+ID4gPiBkdWUgdG8NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsYWNrIG9mIHN5c3RlbSByZXNvdXJjZXMuDQo+ID4gPg0KPiA+ID4g Kw0KPiA+ID4NCj4gPiA+ICsqKi8NCj4gPiA+DQo+ID4gPiArdHlwZWRlZg0KPiA+ID4NCj4gPiA+ ICtFRklfU1RBVFVTDQo+ID4gPg0KPiA+ID4gKyhFRklBUEkgKkVES0lJX01FTU9SWV9BVFRSSUJV VEVfU0VUX1BFUk1JU1NJT05TKSgNCj4gPiA+DQo+ID4gPiArICBJTiAgRURLSUlfTUVNT1JZX0FU VFJJQlVURV9QUEkgICpUaGlzLA0KPiA+ID4NCj4gPiA+ICsgIElOICBFRklfUEhZU0lDQUxfQURE UkVTUyAgICAgICAgQmFzZUFkZHJlc3MsDQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlQ2NCAgICAg ICAgICAgICAgICAgICAgICBMZW5ndGgsDQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlQ2NCAgICAg ICAgICAgICAgICAgICAgICBTZXRNYXNrLA0KPiA+ID4NCj4gPiA+ICsgIElOICBVSU5UNjQgICAg ICAgICAgICAgICAgICAgICAgQ2xlYXJNYXNrDQo+ID4gPg0KPiA+ID4gKyAgKTsNCj4gPiA+DQo+ ID4gPiArDQo+ID4gPg0KPiA+ID4gKy8vLw0KPiA+ID4NCj4gPiA+ICsvLy8gVGhpcyBQUEkgY29u dGFpbnMgYSBzZXQgb2Ygc2VydmljZXMgdG8gbWFuYWdlIG1lbW9yeSBwZXJtaXNzaW9uDQo+IGF0 dHJpYnV0ZXMuDQo+ID4gPg0KPiA+ID4gKy8vLw0KPiA+ID4NCj4gPiA+ICtzdHJ1Y3QgX0VES0lJ X01FTU9SWV9BVFRSSUJVVEVfUFBJIHsNCj4gPiA+DQo+ID4gPiArICBFREtJSV9NRU1PUllfQVRU UklCVVRFX1NFVF9QRVJNSVNTSU9OUyAgICBTZXRQZXJtaXNzaW9uczsNCj4gPiA+DQo+ID4gPiAr fTsNCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4gK2V4dGVybiBFRklfR1VJRCAgZ0Vka2lp TWVtb3J5QXR0cmlidXRlUHBpR3VpZDsNCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4gKyNl bmRpZg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvTWRlTW9kdWxl UGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiA+IGIvTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5k ZWMNCj4gPiA+IGluZGV4IDk1ZGQwNzdlMTliM2E5MDEuLmQ2NWRhZTE4YWE4MWU1NjkgMTAwNjQ0 DQo+ID4gPiAtLS0gYS9NZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiA+ID4gKysrIGIv TWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiA+IEBAIC01MjgsNiArNTI4LDkgQEAg W1BwaXNdDQo+ID4gPiAgICBnRWRraWlQZWlDYXBzdWxlT25EaXNrUHBpR3VpZCAgICAgICAgICAg ICA9IHsgMHg3MWE5ZWE2MSwgMHg1YTM1LCAweDRhNWQsDQo+IHsgMHhhYywNCj4gPiA+IDB4ZWYs IDB4OWMsIDB4ZjgsIDB4NmQsIDB4NmQsIDB4NjcsIDB4ZTAgfSB9DQo+ID4gPg0KPiA+ID4gICAg Z0Vka2lpUGVpQm9vdEluQ2Fwc3VsZU9uRGlza01vZGVQcGlHdWlkICAgPSB7IDB4YjA4YTExZTQs IDB4ZTJiNywNCj4gMHg0Yjc1LA0KPiA+ID4geyAweGI1LCAweDE1LCAweGFmLCAweDYxLCAweDYs IDB4NjgsIDB4YmYsIDB4ZDEgIH0gfQ0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgIyMg SW5jbHVkZS9QcGkvTWVtb3J5QXR0cmlidXRlLmgNCj4gPiA+DQo+ID4gPiArICBnRWRraWlNZW1v cnlBdHRyaWJ1dGVQcGlHdWlkICAgICAgICAgICAgICA9IHsgMHgxYmU4NDBkZSwgMHgyZDkyLCAw eDQxZWMsDQo+IHsgMHhiNiwNCj4gPiA+IDB4ZDMsIDB4MTksIDB4NjQsIDB4MTMsIDB4NTAsIDB4 NTEsIDB4ZmIgfSB9DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+ICBbUHJvdG9jb2xzXQ0K PiA+ID4NCj4gPiA+ICAgICMjIExvYWQgRmlsZSBwcm90b2NvbCBwcm92aWRlcyBjYXBhYmlsaXR5 IHRvIGxvYWQgYW5kIHVubG9hZCBFRkkgaW1hZ2UgaW50bw0KPiA+ID4gbWVtb3J5IGFuZCBleGVj dXRlIGl0Lg0KPiA+ID4NCj4gPiA+ICAgICMgIEluY2x1ZGUvUHJvdG9jb2wvTG9hZFBlMzJJbWFn ZS5oDQo+ID4gPg0KPiA+ID4gLS0NCj4gPiA+IDIuMzkuMg0KPiA+DQo=