From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (NAM11-BN8-obe.outbound.protection.outlook.com [40.107.236.66]) by mx.groups.io with SMTP id smtpd.web11.4426.1636499120092286238 for ; Tue, 09 Nov 2021 15:05:20 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=Sd9V6Cc1; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: nvidia.com, ip: 40.107.236.66, mailfrom: bobm@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ImGH1eZusY/5y3+sAQ6SuctDBwe5KWiW/7gy9WCAZXFYjqyhfaLRvZ3/jkrksZjP50AZnEzbC8oxuRZoeaSde3HgcuOr1nMi1NLOOqx6IwnnP0pPtf7/mOuoUDlRZeIL5w/8AMT39DjoIQkyXVv8CFy35jnQPsXbLic88vXMFmKkuDBe9Hpe90svQYcXEel/hq/Dd35pOYgr0TPMF4dA5WrUhSqXnL//zHAZYSKu2RgxHxeYjOUvteqjkypNDKUHnQH1Civ35qFovZBON+SNnrWoxHKTXARrKioBauN1URe71Mm8shokE13YYQsbdonHmZ+dKKy/cRswKFH66ubJSw== 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=OwNeyMs0H2nGusSk2rfKK31wbsYdmgbh1rrSyEK1CR4=; b=jGp6JiV7oCyP4Gh1Z4i/G+tYFlTEV4YlgwqXbFJVqjuoB3hd6pUrFFWzpS2SVkyYF6nSn+xM2Jh4tENl1gCH6+QxDgi0oLKyWhPbcGuGjaNLUYUtoT3/Lm3C+GE1HyZGTtz6CFjQMFM1T1GuGJpqTGGuf1OEjKlsWBByXj3s9UYZNN5bquxr0PS3cR+3ShbqkpiMnZGbols4u5Mbkgedy5GFMgpS/HoVQ2pyyDcHYqveBKdSH+Qmwguscw2dZk/Y2oGkv4wjGUB9vQWfQIyPQWw9IyGedpmm7JwuRuaCqAQvFi4urw4SQRYMPTlkz3599cc9ZeDxRcYhScSStVHESQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OwNeyMs0H2nGusSk2rfKK31wbsYdmgbh1rrSyEK1CR4=; b=Sd9V6Cc1ZHxXakUYGual3bsp0ZfhsbOtLIQwhILEd07sImtqkrK15alK2ChKtuc2R+Y8W2BdQ9wdIl2ZLCW6ot3GbS11xhmxOLE0Ct7b02+n/uVd0ZZ5fF2+3L1sn0J6xxrQSHsoqdl4CwmJrZdolMwfn4G+LsgaCPzMWcKjS+s+jSoCzbPA8fbt8ux9DtnfELNMd10m8+HtgwOnL6itXWYpC2KgYWhVENFTutoDdzjKUntET1JyspMjfeL85cg/QWFRPlKaot1T17aVa1Hc+aAqOhRS70ZmZuIc+gr7sTL1ov6cfQbbYwyuiHMEsNWJ1qDlde5pJ6igOdPsfysSNA== Received: from DM6PR12MB4779.namprd12.prod.outlook.com (2603:10b6:5:172::23) by DM5PR1201MB0236.namprd12.prod.outlook.com (2603:10b6:4:57::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.13; Tue, 9 Nov 2021 23:05:17 +0000 Received: from DM6PR12MB4779.namprd12.prod.outlook.com ([fe80::f80c:8b3a:b5c2:4959]) by DM6PR12MB4779.namprd12.prod.outlook.com ([fe80::f80c:8b3a:b5c2:4959%7]) with mapi id 15.20.4669.016; Tue, 9 Nov 2021 23:05:16 +0000 From: "Bob Morgan" To: "devel@edk2.groups.io" , "gaoliming@byosoft.com.cn" CC: 'Jian J Wang' , 'Guomin Jiang' Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/DxeCapsuleLibFmp: Add runtime SetImage support Thread-Topic: [edk2-devel] [PATCH] MdeModulePkg/DxeCapsuleLibFmp: Add runtime SetImage support Thread-Index: AQHXxSV6LuetJ3n94Ei2goGBL70eUavpRlaAgAEI8cCABTUIgIAEio9wgAB3egCAB2rJsA== Date: Tue, 9 Nov 2021 23:05:16 +0000 Message-ID: References: <00a801d7cc68$50cebc70$f26c3550$@byosoft.com.cn> <002c01d7cf87$4db94100$e92bc300$@byosoft.com.cn> <000c01d7d208$520db3c0$f6291b40$@byosoft.com.cn> In-Reply-To: <000c01d7d208$520db3c0$f6291b40$@byosoft.com.cn> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a3ba5efe-d52d-4554-2a9b-08d9a3d5651e x-ms-traffictypediagnostic: DM5PR1201MB0236: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: miUUz/bJdqkKFmvnQkUJFUGNax3JbNlCFENBCx/AOsn7MDOSvLnMl//J/yRMQH1WztC83rLShUGVwbv0JaTzjlJaZaeyxkRvth6A+/rQJVQz/OffNbmYEKeAPZq9Y6lsdWWfrBJwzvsV0IvGBbHLGJd7sdE6yjQu0fPsrqg/jobFnusO1420+8bPTLzcB2ffLtoWahPGlh0tj+QPiAVBjrGzMdKMA+g2UE92Ppwu8HQIkWfb1AQDHn+EZLuLJQz0zhX/ZtscZ+nAbnWpxcgVjUe9rU7XaalwFpVSgGFyThwHRRhWnyHThVtH6EfgXMFXXp70iGCPl57z0f1ioCzpCUTsaHx0/yN9ZXf8k/yORalUgZj7+tlWxhETz/PBCLNykq2yxdggXCDbLKitr/lgmOhMXoMyInFjZol4q3ED9Ij27Z0BGW1S8fmTyu9pBLRPMFPXdJ2RRsgBrxDOlHynfoTIgAsL/W8RDf6CAR8c43BHdFTGNomikzPsDp4MqD/oAd388YM0LDzt1FaZC/BYisxtc0GI+t+5D/VHprMKnqNmaSib9eLRXA8LDIFBVlPJGEhT5ehaIfApctMTPtp18HDQxNwJbnUt9KBpn0iWabNkXpc0Y2RLHPexlQ5ylNSmAqwCNehHJmyLg+6Yqk2A2mouORSE9w9jokUudhWsfUmRk6QpxKr+KsIkIz3OIHfDld3v9aTO+VAdXfBdJAuTiNUgm61/9W6KLhd+y5WfYG8mah7u4PBGwhMA626PzVi1kbYSR2f23JSmSJui1suRtpXkTMSUHpx5yJDWR5ypiAw= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR12MB4779.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(66476007)(66556008)(38100700002)(4326008)(38070700005)(966005)(110136005)(30864003)(76116006)(186003)(52536014)(26005)(64756008)(66446008)(316002)(508600001)(5660300002)(66946007)(86362001)(33656002)(54906003)(6506007)(122000001)(8676002)(8936002)(55016002)(9686003)(7696005)(71200400001)(2906002)(53546011)(83380400001)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TVMwU2JLM0Z6Q2pKRFdGYjZ3b1dyUmEydzRjdlhybVEvSDU2TUwyUmJtdHF0?= =?utf-8?B?Y2RMOXdWOW5EZDBZSkQvVDB1cjdWL1ZrUVBlRitWd25Xenh5NUZSemptVysy?= =?utf-8?B?Y0tZREdsS2JMbUNYN2JNSURKSFRMcTQ5dmRPSFkyamxEOUFsYWdDc3ZSQXRa?= =?utf-8?B?VGpGZUFReGFXZmk3bUxJUjF3NVVCREJvRU1XZDRYZGtJR20zVkR6VFNKbks3?= =?utf-8?B?ajh4dEhhVHpWR3JuWU4vYW9SRVh6NEdNRm8wTE5rcE9BVENrdVlaMXZoN1dk?= =?utf-8?B?eGFIRDE2amhSeElORGx2M3hWQmlrWWRsUnNqOGhDRW15UlNBQjB1RVhTbzZX?= =?utf-8?B?U2JsdldhSXQyVEtxUWNLRVFlVnEwdi9FRVBEN1VIZWYyemtjdTRvWXNLMXVt?= =?utf-8?B?WXhzT2JBa2FNZjExS3RSUDY3aUFSNHBxWWJDQ3JhN1QzUUFoWlU1SWFjMVp0?= =?utf-8?B?KzJPcmFvM3RiMEU0N3Z0ckpnWVdXdisvZEI1RHMzakp1a25XU1RLVXF5U3No?= =?utf-8?B?Z3N4MkJGSW1MMitoMmI0M0FDOVlIakZpcVpTeE53Q3pzMXIzN2VpWElNdVNi?= =?utf-8?B?Y0xyUU9Pemo4NGFyc0pLcWh6VWxDeVVIcnY3R2Mwd21yZm9ZL0lrb3FoWjE2?= =?utf-8?B?MU5lU3hxQWZvVy8rZk5rY21ZOTdhaHI3SC9kMjRFUmxxM0JtYzlOaCtHSHZx?= =?utf-8?B?Zi9pc1orYU82a2kxZWx1K3M0ZEFTcVM0YzJFcGtlbXZUNHcyWE9wUDF5eHZH?= =?utf-8?B?WHo1cWRjUDJzQWE2d1hGc2pmMjNneFhVZ2lONW9URmlxMldhTWFaTEJadmlH?= =?utf-8?B?aUNyZFEraG5DalNOdTZEY2xtVXhCL1lUemllaHJmNUp5aGNuODhFSjNmdnF3?= =?utf-8?B?b3dySmZLMUNqYUxXdmUzTWVqOXpWZGVoa3FaRnZ2UU1valZxdE10bFhWRXMv?= =?utf-8?B?WFRDT1J6bEx1eTVuSnczekVWU3k0dWpjbm96ZTJkUXVNOTROWUV2b20zbzF2?= =?utf-8?B?TkgzLytvVmsvZDIrZSs4elN3TTRwYjROZzFmeXFRdkE0V2U5d0M1TTVwSEpB?= =?utf-8?B?TDlkckFVb0NuSnhMTnFHakJhQXVxQkFaaDFseDVzZkdWeUwrTWtjMmU0RERK?= =?utf-8?B?c3JhMzYxOUNJUlBrTW5PdzUrc2h4WWJFUzdxSStFTWFxbDVxQ29pa0FweEpV?= =?utf-8?B?RHljR2FEQTd2dDYzVXFnSGhPL3B3R1F4enc2MkEwelVTcWZCQjJhTXhqbXlu?= =?utf-8?B?ditoYkFmTTFHa2g4N2VKUS80T2lENlBHM1I5aEswZU8xdENkQkRvR1oyZTFX?= =?utf-8?B?d1NCZjZmM2IvWk9FRVhZZmRGbGsreVJFbjVRK1hJY2cvYmlzdlh6NHc4aFZk?= =?utf-8?B?TS9Fa3pFYUVQM1Erd2Yzc2ZuaVdWVTdJK1lmZzJCemNVUVdGdkxyRWpxTDM2?= =?utf-8?B?dm90bDNDVlRNOGxuODl2TG9DVTlLZmFpQ2lpSklZV3FhMVJtQ1ZVMFZUcmVp?= =?utf-8?B?dmN2RE83STJIV3Rjb25MSzM1ekJYQU5adFRvM2tKTW5hZXp6SnZzaHhRNHRh?= =?utf-8?B?YVdwa05MQVhRSVJKRHU5ZVNFejZ6UGdJRkZWRTZYRktSdjVJeVFhVmRGODI5?= =?utf-8?B?TXNmb0lTTVM0ZEJuZUZtSXAzOVJtZGF6SXNCUXVBRkZqTEZYbk1sR2Z0RDRP?= =?utf-8?B?Mm82TThHd2tVMlZiYkJjVzJMb0F4VUxXTVR2VHZiZXhKSHZ5d0JsczhVWUpW?= =?utf-8?B?cHVTVG5KUC9BdGIvbGhHTFZHaktYNS9qTzR0TU9yTXdtSi9pTUdpd24vOE9T?= =?utf-8?B?M2ExRTNsMVJUKzdCaVlnWnNnYWtuL2trQUNyblZOU203dDdLNjQ1NlNReG5y?= =?utf-8?B?T0VmbVhORXhlZWdZV1BoRStHNkROMEhOZ2Yra3ZHY0I4RjhjVEludXdjTHJR?= =?utf-8?B?S0RuTU1yT2VydTNCQ0grVmVUMmFXM2Vwd0x6K3NiVXNBK3VtWFVnVjdFZlpt?= =?utf-8?B?NnF4QkdaV0VmeStCclM5OHRtSGt0SXQ1VDBlK1hNc1pxNFN6TldOa0lZc3Vl?= =?utf-8?B?NFVMdkhwR013MUw5Z28wVDZPcVdOLzRDS0tBQT09?= MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB4779.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a3ba5efe-d52d-4554-2a9b-08d9a3d5651e X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Nov 2021 23:05:16.7894 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: mbqhqB5c1DVYMydPi8udnJ9fM0V7FB4383noKnsiXqgWa3u1Et9CPrzDnG7AETiK X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR1201MB0236 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 U291bmRzIGdvb2QsIHRoYW5rcyBmb3IgeW91ciBoZWxwIExpbWluZy4gIEkgYW0gbm90IGZhbWls aWFyIHdpdGggdGhlIHNwZWMgdXBkYXRlIHByb2Nlc3Nlcywgc28gcGxlYXNlIGxldCBtZSBrbm93 IHdoYXQgb3RoZXIgc3RlcHMgSSBzaG91bGQgdGFrZS4NCg0KVG8gY2xhcmlmeSB0aGUgc3RhbmRh cmQgbWV0aG9kIHRvIGtub3cgd2hldGhlciB0aGUgRk1QIHByb3RvY29sIHN1cHBvcnRzIHJ1bnRp bWUgY2Fwc3VsZSBwcm9jZXNzaW5nIGlzOg0KICAgYSkgUnVudGltZSBjYXBzdWxlIHByb2Nlc3Np bmcgYnkgRk1QIGlzIG9ubHkgcG9zc2libGUgd2hlbiBjYXBzdWxlIGhhcyBDQVBTVUxFX0ZMQUdT X1BFUlNJU1RfQUNST1NTX1JFU0VUID09IDAuDQogICBiKSBJZiB0aGUgcGxhdGZvcm0gaGFzIG5v IHN1cHBvcnQgZm9yIHJ1bnRpbWUgY2Fwc3VsZSBwcm9jZXNzaW5nLCBVcGRhdGVDYXBzdWxlKCkg cmV0dXJucyBFRklfT1VUX09GX1JFU09VUkNFUyAoY29udHJvbGxlZCBieSBleGlzdGluZyBQY2RT dXBwb3J0UHJvY2Vzc0NhcHN1bGVBdFJ1bnRpbWUpLg0KICAgYykgSWYgUGNkU3VwcG9ydFByb2Nl c3NDYXBzdWxlQXRSdW50aW1lIGlzIFRSVUUsIGJ1dCB0aGVyZSBpcyBubyBydW50aW1lIEZNUCBw cm90b2NvbCBmb3IgYW4gRk1QIGNhcHN1bGXigJlzIFVwZGF0ZSBJbWFnZVR5cGVJZCwgdGhpcyBw YXRjaCBjYXVzZXMgRUZJX1VOU1VQUE9SVEVEIHRvIGJlIHJldHVybmVkIGJ5ICBVcGRhdGVDYXBz dWxlKCkgKGNvbnRyb2xsZWQgYnkgbmV3IFBjZFJ1bnRpbWVGbXBDYXBzdWxlSW1hZ2VUeXBlSWRH dWlkIGxpc3QpLg0KDQpTaW5jZSB0aGUgc3BlYyBvbmx5IGRpc2N1c3NlcyBVcGRhdGVDYXBzdWxl KCkgcmV0dXJuIHZhbHVlcyBhbmQgbm90IFBDRHMgdGhhdCBjb250cm9sIGFuIGltcGxlbWVudGF0 aW9uLCBJ4oCZbSBub3Qgc3VyZSB3aGF0IGVsc2UgdG8gYWRkIHRvIHRoZSBwcm9wb3NlZCBzcGVj IGxhbmd1YWdlIGJlbG93IHRvIGhlbHAgY2xhcmlmeSB0aGlzLiAgSSBzdXBwb3NlIG9uZSBpbXBy b3ZlbWVudCB3b3VsZCBiZSB0byBjaGFuZ2UgdGhpcyBwYXRjaCB0byByZXR1cm4gRUZJX09VVF9P Rl9SRVNPVVJDRVMgZm9yIGNhc2UgYykgYWJvdmUsIHNvIHRoYXQgdGhlcmUgaXMgYSBjb25zaXN0 ZW50IFVwZGF0ZUNhcHN1bGUoKSByZXR1cm4gdmFsdWUgZm9yIENBUFNVTEVfRkxBR1NfUEVSU0lT VF9BQ1JPU1NfUkVTRVQgPT0gMCBjYXBzdWxlcyB3aGljaCBtZWFucyDigJhydW50aW1lIGNhcHN1 bGUgcHJvY2Vzc2luZyBub3Qgc3VwcG9ydGVk4oCZLg0KDQpMZXQgbWUga25vdyBpZiB0aGF0IG1h a2VzIHNlbnNlIGFuZCBJ4oCZbGwgc3VibWl0IGEgdjIgcGF0Y2ggd2l0aCB0aGF0IGNoYW5nZSBv ciBpZiB5b3UgaGF2ZSBhbnkgb3RoZXIgc3VnZ2VzdGlvbnMuDQoNClRoYW5rcywNCg0KLWJvYg0K DQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8g PGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgZ2FvbGltaW5nIHZpYSBncm91cHMu aW8NClNlbnQ6IFRodXJzZGF5LCBOb3ZlbWJlciA0LCAyMDIxIDExOjQ1IFBNDQpUbzogZGV2ZWxA ZWRrMi5ncm91cHMuaW87IEJvYiBNb3JnYW4gPGJvYm1AbnZpZGlhLmNvbT4NCkNjOiAnSmlhbiBK IFdhbmcnIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyAnR3VvbWluIEppYW5nJyA8Z3VvbWluLmpp YW5nQGludGVsLmNvbT4NClN1YmplY3Q6IOWbnuWkjTogW2VkazItZGV2ZWxdIFtQQVRDSF0gTWRl TW9kdWxlUGtnL0R4ZUNhcHN1bGVMaWJGbXA6IEFkZCBydW50aW1lIFNldEltYWdlIHN1cHBvcnQN Cg0KRXh0ZXJuYWwgZW1haWw6IFVzZSBjYXV0aW9uIG9wZW5pbmcgbGlua3Mgb3IgYXR0YWNobWVu dHMNCg0KDQpCb2I6DQogIEkgc3VnZ2VzdCB0byBvYnZpb3VzbHkgZGVzY3JpYmUgdGhhdCBGTVAg cHJvdG9jb2wgc2VydmljZXMgbWF5IGJlIGF2YWlsYWJsZSBpbiBFRkkgcnVudGltZSwgYW5kIGRl ZmluZSB0aGUgc3RhbmRhcmQgbWV0aG9kIHRvIGtub3cgd2hldGhlciBGTVAgcHJvdG9jb2wgc3Vw cG9ydHMgcnVudGltZSBhdHRyaWJ1dGUuDQoNCiAgQmVjYXVzZSBVRUZJIHNwZWMgaXMgcmVxdWly ZWQgdG8gYmUgdXBkYXRlZCwgdGhlIGNvZGUgZW5oYW5jZW1lbnQgaW4gRHhlQ2Fwc3VsZUxpYkZt cCBhbmQgRm1wRGV2aWNlUGtnIGNhbiBnbyB0aHJvdWdoIGNvZGUgZmlyc3QgcHJvY2VzcyBhbmQg YmUgcGxhY2VkIGludG8gZWRrMi1zdGFnaW5nIGZpcnN0Lg0KDQpUaGFua3MNCkxpbWluZw0KPiAt LS0tLemCruS7tuWOn+S7ti0tLS0tDQo+IOWPkeS7tuS6ujogZGV2ZWxAZWRrMi5ncm91cHMuaW8g PGRldmVsQGVkazIuZ3JvdXBzLmlvPiDku6PooaggQm9iIE1vcmdhbiB2aWEgDQo+IGdyb3Vwcy5p bw0KPiDlj5HpgIHml7bpl7Q6IDIwMjHlubQxMeaciDXml6UgNjo1Mw0KPiDmlLbku7bkuro6IGRl dmVsQGVkazIuZ3JvdXBzLmlvOyBnYW9saW1pbmdAYnlvc29mdC5jb20uY24NCj4g5oqE6YCBOiAn SmlhbiBKIFdhbmcnIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyAnR3VvbWluIEppYW5nJw0KPiA8 Z3VvbWluLmppYW5nQGludGVsLmNvbT4NCj4g5Li76aKYOiBSZTogW2VkazItZGV2ZWxdIFtQQVRD SF0gTWRlTW9kdWxlUGtnL0R4ZUNhcHN1bGVMaWJGbXA6IEFkZCANCj4gcnVudGltZSBTZXRJbWFn ZSBzdXBwb3J0DQo+DQo+IEhpIExpbWluZywNCj4NCj4gVGhlIFVlZmkgc3BlYyBWZXJzaW9uIDIu OSBhcHBlYXJzIHRvIGhhdmUgc29tZSBpbmNvbnNpc3RlbmNpZXMgcmVnYXJkaW5nIHRoZQ0KPiBw b3NzaWJpbGl0eSBvZiBydW50aW1lIHByb2Nlc3Npbmcgb2YgRk1QIGNhcHN1bGVzLiAgIFRoZSBV cGRhdGVDYXBzdWxlKCkNCj4gcnVudGltZSBzZXJ2aWNlIGluIFNlY3Rpb24gOC41LjMgc3RhdGVz IHRoYXQgInRoZSBmaXJtd2FyZSBtYXkgcHJvY2VzcyANCj4gdGhlIGNhcHN1bGUgaW1tZWRpYXRl bHkiLCBidXQgaW4gU2VjdGlvbiAyMy4zLjEsIHdoZXJlIHRoZSBGTVAgY2Fwc3VsZSANCj4gaXMg ZGVzY3JpYmVkLCB0aGUgbGFzdCBwYXJhZ3JhcGggc3RhdGVzICJCeSBkZWZpbml0aW9uIEZpcm13 YXJlIA0KPiBNYW5hZ2VtZW50IHByb3RvY29sIHNlcnZpY2VzIGFyZSBub3QgYXZhaWxhYmxlIGlu IEVGSSBydW50aW1lIi4NCj4NCj4gSSB0aGluayB0aGUgZm9sbG93aW5nIHNwZWMgY2hhbmdlcyB3 b3VsZCBkb2N1bWVudCB0aGUgb3B0aW9uYWwgcnVudGltZSANCj4gRk1QIGNhcHN1bGUgcHJvY2Vz c2luZyBhcyBpbXBsZW1lbnRlZCBpbiB0aGlzIHBhdGNoOg0KPg0KPiAxLiAgUmV3b3JkIFNlY3Rp b24gMjMuMy4xIERlc2NyaXB0aW9uIGxhc3QgcGFyYWdyYXBoLCBmaXJzdCBzZW50ZW5jZS4NCj4g RnJvbTogICJCeSBkZWZpbml0aW9uIEZpcm13YXJlIE1hbmFnZW1lbnQgcHJvdG9jb2wgc2Vydmlj ZXMgYXJlIG5vdCANCj4gYXZhaWxhYmxlIGluIEVGSSBydW50aW1lIGFuZCBkZXBlbmRpbmcgdXBv biBwbGF0Zm9ybSBjYXBhYmlsaXRpZXMsIEVGSSANCj4gcnVudGltZSBkZWxpdmVyeSBvZiB0aGlz IGNhcHN1bGUgbWF5IG5vdCBiZSBzdXBwb3J0ZWQgYW5kIG1heSByZXR1cm4gDQo+IGFuIGVycm9y IHdoZW4gZGVsaXZlcmVkIGluIEVGSSBydW50aW1lIHdpdGggDQo+IENBUFNVTEVfRkxBR1NfUEVS U0lTVF9BQ1JPU1NfUkVTRVQgYml0IGRlZmluZWQuIg0KPg0KPiBUbyBzb21ldGhpbmcgbGlrZSB0 aGlzOiAiRGVwZW5kaW5nIHVwb24gcGxhdGZvcm0gY2FwYWJpbGl0aWVzLCBFRkkgDQo+IHJ1bnRp bWUgZGVsaXZlcnkgb3IgcHJvY2Vzc2luZyBvZiB0aGlzIGNhcHN1bGUgbWF5IG5vdCBiZSBzdXBw b3J0ZWQgDQo+IGFuZCBtYXkgcmV0dXJuIGFuIGVycm9yIHdoZW4gZGVsaXZlcmVkIGluIEVGSSBy dW50aW1lLg0KPg0KPiAyLiBSZXdvcmQgU2VjdGlvbiAyMy4zLjMgU3RlcCAzLg0KPiBGcm9tOiAi SWYgc3lzdGVtIGlzIG5vdCBpbiBib290IHNlcnZpY2VzIGFuZCBwbGF0Zm9ybSBkb2VzIG5vdCBz dXBwb3J0IA0KPiBwZXJzaXN0ZW5jZSBvZiBjYXBzdWxlIGFjcm9zcyByZXNldCB3aGVuIGluaXRp YXRlZCB3aXRoaW4gRUZJIFJ1bnRpbWUsIA0KPiBFRklfT1VUX09GX1JFU09VUkNFUyBlcnJvciBp cyByZXR1cm5lZC4iDQo+DQo+IFRvIHNvbWV0aGluZyBsaWtlIHRoaXM6ICJJZiBzeXN0ZW0gaXMg bm90IGluIGJvb3Qgc2VydmljZXMgYW5kIHRoZSANCj4gQ0FQU1VMRV9GTEFHU19QRVJTSVNUX0FD Uk9TU19SRVNFVCBmbGFnIGlzIHNldCwgYnV0IHRoZSBwbGF0Zm9ybSBkb2VzIA0KPiBub3Qgc3Vw cG9ydCBwZXJzaXN0ZW5jZSBvZiBjYXBzdWxlIGFjcm9zcyByZXNldCB3aGVuIGluaXRpYXRlZCB3 aXRoaW4gRUZJDQo+IFJ1bnRpbWUsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTIGVycm9yIGlzIHJldHVy bmVkLiIgICA8PDxCeSB0aGUgd2F5LA0KPiBVcGRhdGVDYXBzdWxlKCkgY3VycmVudGx5IGFwcGVh cnMgdG8gcmV0dXJuIEVGSV9VTlNVUFBPUlRFRCBpbiB0aGlzIA0KPiBjYXNlLCBzZWUgdGhlIElz UGVyc2lzdEFjcm9zc1Jlc2V0Q2Fwc3VsZVN1cHBvcnRlZCAoKSBjaGVjayBuZWFyIHRoZSANCj4g ZW5kPj4+DQo+DQo+IDMuICBBZGQgcnVudGltZSBGTVAgc3VwcG9ydCBpbmZvIHRvIFNlY3Rpb24g MjMuMy4zIFN0ZXAgMy4NCj4gSWYgc3lzdGVtIGlzIG5vdCBpbiBib290IHNlcnZpY2VzIGFuZCB0 aGUgDQo+IENBUFNVTEVfRkxBR1NfUEVSU0lTVF9BQ1JPU1NfUkVTRVQgZmxhZyBpcyBub3Qgc2V0 LCBidXQgdGhlIHBsYXRmb3JtIA0KPiBkb2VzIG5vdCBzdXBwb3J0IHByb2Nlc3Npbmcgb2YgY2Fw c3VsZXMgd2l0aGluIEVGSSBSdW50aW1lLCANCj4gRUZJX09VVF9PRl9SRVNPVVJDRVMgZXJyb3Ig aXMgcmV0dXJuZWQuICBJZiB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgDQo+IHByb2Nlc3Npbmcgb2Yg Y2Fwc3VsZXMgd2l0aGluIEVGSSBSdW50aW1lLCBzdGVwcyA0LTEwIGFyZSBub3QgDQo+IGFwcGxp Y2FibGUgYW5kIHRoZSBjYXBzdWxlcyBhcmUgcHJvY2Vzc2VkIGFjY29yZGluZyB0byBzdGVwcyAx MS0xNC4NCj4NCj4gTGV0IG1lIGtub3cgd2hhdCB5b3UgdGhpbmsgYW5kIHdlIGNhbiBnZXQgYW4g RUNSIHByb2Nlc3Mgc3RhcnRlZCB0byANCj4gdXBkYXRlIHRoZSBzcGVjLg0KPg0KPiBUaGFua3Ms DQo+DQo+IC1ib2INCj4NCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2 ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgDQo+ IGdhb2xpbWluZyB2aWEgZ3JvdXBzLmlvDQo+IFNlbnQ6IE1vbmRheSwgTm92ZW1iZXIgMSwgMjAy MSA3OjE3IFBNDQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgQm9iIE1vcmdhbiA8Ym9ibUBu dmlkaWEuY29tPg0KPiBDYzogJ0ppYW4gSiBXYW5nJyA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsg J0d1b21pbiBKaWFuZycNCj4gPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IOWb nuWkjTogW2VkazItZGV2ZWxdIFtQQVRDSF0gTWRlTW9kdWxlUGtnL0R4ZUNhcHN1bGVMaWJGbXA6 DQo+IEFkZCBydW50aW1lIFNldEltYWdlIHN1cHBvcnQNCj4NCj4gRXh0ZXJuYWwgZW1haWw6IFVz ZSBjYXV0aW9uIG9wZW5pbmcgbGlua3Mgb3IgYXR0YWNobWVudHMNCj4NCj4NCj4gQm9iOg0KPiAg IFRoYW5rcyBmb3IgeW91ciBkZXRhaWwuIFBjZFJ1bnRpbWVGbXBDYXBzdWxlSW1hZ2VUeXBlSWRH dWlkIGlzIGVkazIgDQo+IGltcGxlbWVudGF0aW9uIHNvbHV0aW9uLiBIYXZlIHlvdSB0aGUgcHJv cG9zYWwgb24gaG93IHRvIHVwZGF0ZSBVRUZJIA0KPiBzcGVjIHRvIHN1cHBvcnQgcnVudGltZSBG TVAgcHJvdG9jb2w/DQo+DQo+IFRoYW5rcw0KPiBMaW1pbmcNCj4gPiAtLS0tLemCruS7tuWOn+S7 ti0tLS0tDQo+ID4g5Y+R5Lu25Lq6OiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5n cm91cHMuaW8+IOS7o+ihqCBCb2INCj4gTW9yZ2FuIHZpYQ0KPiA+IGdyb3Vwcy5pbw0KPiA+IOWP kemAgeaXtumXtDogMjAyMeW5tDEw5pyIMzDml6UgMTo1OQ0KPiA+IOaUtuS7tuS6ujogZ2FvbGlt aW5nIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+ IOaKhOmAgTogJ0ppYW4gSiBXYW5nJyA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgJ0d1b21pbiBK aWFuZycNCj4gPiA8Z3VvbWluLmppYW5nQGludGVsLmNvbT4NCj4gPiDkuLvpopg6IFJlOiBbZWRr Mi1kZXZlbF0gW1BBVENIXSBNZGVNb2R1bGVQa2cvRHhlQ2Fwc3VsZUxpYkZtcDogQWRkIA0KPiA+ IHJ1bnRpbWUgU2V0SW1hZ2Ugc3VwcG9ydA0KPiA+DQo+ID4gSGkgTGltaW5nLCAgU2VlIGlubGlu ZSBiZWxvdy4NCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZy b206IGdhb2xpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPiA+ID4gU2VudDogVGh1 cnNkYXksIE9jdG9iZXIgMjgsIDIwMjEgNzo1NyBQTQ0KPiA+ID4gVG86IGRldmVsQGVkazIuZ3Jv dXBzLmlvOyBCb2IgTW9yZ2FuIDxib2JtQG52aWRpYS5jb20+DQo+ID4gPiBDYzogJ0ppYW4gSiBX YW5nJyA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgJ0d1b21pbiBKaWFuZycNCj4gPiA+IDxndW9t aW4uamlhbmdAaW50ZWwuY29tPg0KPiA+ID4gU3ViamVjdDog5Zue5aSNOiBbZWRrMi1kZXZlbF0g W1BBVENIXSBNZGVNb2R1bGVQa2cvRHhlQ2Fwc3VsZUxpYkZtcDoNCj4gPiA+IEFkZCBydW50aW1l IFNldEltYWdlIHN1cHBvcnQNCj4gPiA+DQo+ID4gPiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRp b24gb3BlbmluZyBsaW5rcyBvciBhdHRhY2htZW50cw0KPiA+ID4NCj4gPiA+DQo+ID4gPiBCb2I6 DQo+ID4gPiAgIEkgdGhpbmsgdGhpcyBwYXRjaCBuZWVkcyB0byB3b3JrIHRvZ2V0aGVyIHdpdGgg dGhlIGNoYW5nZXMgb2YNCj4gPiA+IEZtcERldmljZVBrZzogQWRkIHN1cHBvcnQgZm9yIHJ1bnRp bWUgRm1wRHhlIGRyaXZlci4NCj4gPg0KPiA+IFllcywgdGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQg dG8gcHJvY2VzcyBGTVAgY2Fwc3VsZXMgYXQgcnVudGltZSBpZiANCj4gPiB0aGUgY2Fwc3VsZeKA mXMgVXBkYXRlSW1hZ2VUeXBlSWQgaXMgc3VwcG9ydGVkIGJ5IGEgcnVudGltZS1jYXBhYmxlIA0K PiA+IEZtcER4ZSBkcml2ZXIgKGUuZy4gdXNpbmcgdGhlIEZtcERldmljZVBrZyAgcGF0Y2ggeW91 IG1lbnRpb25lZCkuICANCj4gPiBUaGUgUGNkU3VwcG9ydFByb2Nlc3NDYXBzdWxlQXRSdW50aW1l IFBDRCBtdXN0IGJlIFRSVUUgYW5kIHRoZSANCj4gPiBjYXBzdWxl4oCZcyBDQVBTVUxFX0ZMQUdT X1BFUlNJU1RfQUNST1NTX1JFU0VUIGZsYWcgbXVzdCBiZSBGQUxTRS4NCj4gPiA+DQo+ID4gPiAg IENhcHN1bGUgaXMgcnVudGltZSBzZXJ2aWNlLiBJZiBpdCBjb25zdW1lcyBGTVAgdG8gZG8gdXBk YXRlLCBGTVAgDQo+ID4gPiBzZXJ2aWNlIGNhbiBzdXBwb3J0IHJ1bnRpbWUuIEJ1dCwgaG93IGRv ZXMgQ2Fwc3VsZSBrbm93IHdoZXRoZXIgDQo+ID4gPiBGTVAgcHJvdG9jb2wgc3VwcG9ydHMgcnVu dGltZSBvciBub3Q/DQo+ID4NCj4gPiBSaWdodCwgdGhpcyBwYXRjaCByZXF1aXJlcyBhbiBpbXBs ZW1lbnRhdGlvbiB0byBsaXN0IHRoZSBGTVAgDQo+ID4gSW1hZ2VUeXBlSWQgR1VJRHMgc3VwcG9y dGVkIGJ5IGFueSBydW50aW1lLWNhcGFibGUgRm1wRHhlIGRyaXZlcnMgaW4gDQo+ID4gdGhlIG5l dyBQY2RSdW50aW1lRm1wQ2Fwc3VsZUltYWdlVHlwZUlkR3VpZCBhcnJheSBQQ0QuICBUaGlzIFBD RCBpcyANCj4gPiB1c2VkIGJ5IHRoZSBuZXcgIEluaXRpYWxpemVSdW50aW1lRm1wQXJyYXlzKCkg ZnVuY3Rpb24gZHVyaW5nIA0KPiA+IER4ZVJ1bnRpbWVDYXBzdWxlTGliIGluaXRpYWxpemF0aW9u IHRvIGZpbmQgdGhlIEZNUCBpbnN0YW5jZXMgdGhhdCANCj4gPiBzdXBwb3J0IHRob3NlIEltYWdl VHlwZUlkcyBhbmQgc2F2ZSB0aGVpciANCj4gPiBFRklfRklSTVdBUkVfTUFOQUdFTUVOVF9QUk9U T0NPTCBwcm90b2NvbCBzdHJ1Y3R1cmUgcG9pbnRlcnMgZm9yIA0KPiA+IHJ1bnRpbWUgdXNlIGR1 cmluZyBjYXBzdWxlIHByb2Nlc3NpbmcuDQo+ID4NCj4gPiBXaGVuIFByb2Nlc3NGbXBDYXBzdWxl SW1hZ2UoKSBleGVjdXRlcyBpdHMgc3RlcCDigJgyLiBSb3V0ZSBwYXlsb2FkIHRvIA0KPiA+IHJp Z2h0IEZNUCBpbnN0YW5jZeKAmSwgaXQgZGV0ZWN0cyBydW50aW1lIGV4ZWN1dGlvbiBhbmQgdXNl cyB0aGUgc2F2ZWQgDQo+ID4gcnVudGltZS1jYXBhYmxlIEZNUCBwcm90b2NvbCBzdHJ1Y3R1cmUg cG9pbnRlciBpZiBpdHMgSW1hZ2VUeXBlSWQgDQo+ID4gbWF0Y2hlcyB0aGF0IG9mIHRoZSBjYXBz dWxlIGJlaW5nIHByb2Nlc3NlZC4NCj4gPg0KPiA+IEkgaG9wZSB0aGF0IGhlbHBzLiAgUGxlYXNl IGxldCBtZSBrbm93IGlmIGFkZGl0aW9uYWwgY2xhcmlmaWNhdGlvbiBpcyBuZWVkZWQuDQo+ID4N Cj4gPiBUaGFua3MsDQo+ID4gLWJvYg0KPiA+ID4NCj4gPiA+IFRoYW5rcw0KPiA+ID4gTGltaW5n DQo+ID4gPiA+IC0tLS0t6YKu5Lu25Y6f5Lu2LS0tLS0NCj4gPiA+ID4g5Y+R5Lu25Lq6OiBkZXZl bEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IOS7o+ihqCBCb2INCj4gPiBN b3JnYW4NCj4gPiA+IHZpYQ0KPiA+ID4gPiBncm91cHMuaW8NCj4gPiA+ID4g5Y+R6YCB5pe26Ze0 OiAyMDIx5bm0MTDmnIgyMOaXpSA0OjExDQo+ID4gPiA+IOaUtuS7tuS6ujogZGV2ZWxAZWRrMi5n cm91cHMuaW8NCj4gPiA+ID4g5oqE6YCBOiBCb2IgTW9yZ2FuIDxib2JtQG52aWRpYS5jb20+OyBK aWFuIEogV2FuZw0KPiA+ID4gPGppYW4uai53YW5nQGludGVsLmNvbT47DQo+ID4gPiA+IExpbWlu ZyBHYW8gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IEd1b21pbiBKaWFuZyANCj4gPiA+ID4g PGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+DQo+ID4gPiA+IOS4u+mimDogW2VkazItZGV2ZWxdIFtQ QVRDSF0gTWRlTW9kdWxlUGtnL0R4ZUNhcHN1bGVMaWJGbXA6IEFkZA0KPiA+ID4gcnVudGltZQ0K PiA+ID4gPiBTZXRJbWFnZSBzdXBwb3J0DQo+ID4gPiA+DQo+ID4gPiA+IEFkZHMgb3B0aW9uYWwg c3VwcG9ydCBmb3IgcHJvY2Vzc2luZyBGTVAgY2FwdXNsZSBpbWFnZXMgYWZ0ZXINCj4gPiA+ID4g RXhpdEJvb3RTZXJ2aWNlcygpIGlmIHRoZSBJbWFnZVR5cGVJZEd1aWQgaXMgbWVudGlvbmVkIGlu IHRoZSANCj4gPiA+ID4gbmV3IFBjZFJ1bnRpbWVGbXBDYXBzdWxlSW1hZ2VUeXBlSWRHdWlkIGxp c3QuDQo+ID4gPiA+DQo+ID4gPiA+IENjOiBKaWFuIEogV2FuZyA8amlhbi5qLndhbmdAaW50ZWwu Y29tPg0KPiA+ID4gPiBDYzogTGltaW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0K PiA+ID4gPiBDYzogR3VvbWluIEppYW5nIDxndW9taW4uamlhbmdAaW50ZWwuY29tPg0KPiA+ID4g PiBTaWduZWQtb2ZmLWJ5OiBCb2IgTW9yZ2FuIDxib2JtQG52aWRpYS5jb20+DQo+ID4gPiA+IC0t LQ0KPiA+ID4gPiAgLi4uL0xpYnJhcnkvRHhlQ2Fwc3VsZUxpYkZtcC9EeGVDYXBzdWxlTGliLmMg IHwgIDgxICsrKysrKysrKy0tLQ0KPiA+ID4gPiAgLi4uL0R4ZUNhcHN1bGVMaWJGbXAvRHhlQ2Fw c3VsZVJ1bnRpbWUuYyAgICAgIHwgMTE5DQo+ID4gPiA+ICsrKysrKysrKysrKysrKysrKw0KPiA+ ID4gPiAgLi4uL0R4ZUNhcHN1bGVMaWJGbXAvRHhlUnVudGltZUNhcHN1bGVMaWIuaW5mIHwgICA0 ICsNCj4gPiA+ID4gIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjICAgICAgICAgICAgICAg ICB8ICAgNyArLQ0KPiA+ID4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAxOTIgaW5zZXJ0aW9ucygrKSwg MTkgZGVsZXRpb25zKC0pDQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQgDQo+ID4gPiA+IGEv TWRlTW9kdWxlUGtnL0xpYnJhcnkvRHhlQ2Fwc3VsZUxpYkZtcC9EeGVDYXBzdWxlTGliLmMNCj4g PiA+ID4gYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9EeGVDYXBzdWxlTGliRm1wL0R4ZUNhcHN1bGVM aWIuYw0KPiA+ID4gPiBpbmRleCA5MDk0MjEzNWQ3Li4wMDAwZjkxYzZhIDEwMDY0NA0KPiA+ID4g PiAtLS0gYS9NZGVNb2R1bGVQa2cvTGlicmFyeS9EeGVDYXBzdWxlTGliRm1wL0R4ZUNhcHN1bGVM aWIuYw0KPiA+ID4gPiArKysgYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9EeGVDYXBzdWxlTGliRm1w L0R4ZUNhcHN1bGVMaWIuYw0KPiA+ID4gPiBAQCAtMTAsNiArMTAsNyBAQA0KPiA+ID4gPiAgICBW YWxpZGF0ZUZtcENhcHN1bGUoKSwgYW5kIERpc3BsYXlDYXBzdWxlSW1hZ2UoKSByZWNlaXZlcyAN Cj4gPiA+ID4gdW50cnVzdGVkIGlucHV0IGFuZA0KPiA+ID4gPiAgICBwZXJmb3JtcyBiYXNpYyB2 YWxpZGF0aW9uLg0KPiA+ID4gPg0KPiA+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMjEsIE5WSURJ QSBDT1JQT1JBVElPTi4gQWxsIHJpZ2h0cyANCj4gPiA+ID4gKyByZXNlcnZlZC48QlI+DQo+ID4g PiA+ICAgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzDQo+IHJlc2VydmVkLjxCUj4NCj4gPiA+ID4gICAgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTQxLDYgKzQyLDEx IEBADQo+ID4gPiA+ICAjaW5jbHVkZSA8UHJvdG9jb2wvRmlybXdhcmVNYW5hZ2VtZW50UHJvZ3Jl c3MuaD4NCj4gPiA+ID4gICNpbmNsdWRlIDxQcm90b2NvbC9EZXZpY2VQYXRoLmg+DQo+ID4gPiA+ DQo+ID4gPiA+ICtCT09MRUFOIChFRklBUEkgKm1MaWJBdFJ1bnRpbWVGdW5jdGlvbikgKFZPSUQp DQo+ID4gPQ0KPiA+ID4gPiBOVUxMOw0KPiA+ID4gPiArRUZJX0ZJUk1XQVJFX01BTkFHRU1FTlRf UFJPVE9DT0wgICAgKm1SdW50aW1lRm1wDQo+ID4gPiA+ID0gTlVMTDsNCj4gPiA+ID4gK1ZPSUQN Cj4gPiAqKm1SdW50aW1lRm1wUHJvdG9jb2xBcnJheQ0KPiA+ID4gPiA9IE5VTEw7DQo+ID4gPiA+ ICtFRklfR1VJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbVJ1bnRpbWVGbXBHdWlkQXJy YXkNCj4gPiA+ID4gPSBOVUxMOw0KPiA+ID4gPiArDQo+ID4gPiA+ICBFRklfU1lTVEVNX1JFU09V UkNFX1RBQkxFICptRXNydFRhYmxlICAgICAgICAgICAgICAgICAgPQ0KPiA+IE5VTEw7DQo+ID4g PiA+ICBCT09MRUFOICAgICAgICAgICAgICAgICAgIG1Jc1ZpcnR1YWxBZGRyQ29udmVydGVkICAg ICAgPQ0KPiA+IEZBTFNFOw0KPiA+ID4gPg0KPiA+ID4gPiBAQCAtNTUxLDYgKzU1NywxMSBAQCBE dW1wQWxsRm1wSW5mbyAoDQo+ID4gPiA+ICAgIFVJTlQzMg0KPiA+IFBhY2thZ2VWZXJzaW9uOw0K PiA+ID4gPiAgICBDSEFSMTYNCj4gPiA+ID4gKlBhY2thZ2VWZXJzaW9uTmFtZTsNCj4gPiA+ID4N Cj4gPiA+ID4gKyAgLy8gRHVtcCBub3Qgc3VwcG9ydGVkIGF0IHJ1bnRpbWUuDQo+ID4gPiA+ICsg IGlmICgobUxpYkF0UnVudGltZUZ1bmN0aW9uICE9IE5VTEwpICYmIG1MaWJBdFJ1bnRpbWVGdW5j dGlvbiANCj4gPiA+ID4gKyAoKSkNCj4gew0KPiA+ID4gPiArICAgIHJldHVybjsNCj4gPiA+ID4g KyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICAgIFN0YXR1cyA9IGdCUy0+TG9jYXRlSGFuZGxlQnVm ZmVyICgNCj4gPiA+ID4gICAgICAgICAgICAgICAgICAgIEJ5UHJvdG9jb2wsDQo+ID4gPiA+ICAg ICAgICAgICAgICAgICAgICAmZ0VmaUZpcm13YXJlTWFuYWdlbWVudFByb3RvY29sR3VpZCwNCj4g PiA+ID4gQEAgLTkwNiwyNSArOTE3LDM1IEBAIFNldEZtcEltYWdlRGF0YSAoDQo+ID4gPiA+ICAg IENIQVIxNg0KPiA+ICpBYm9ydFJlYXNvbjsNCj4gPiA+ID4gICAgRUZJX0ZJUk1XQVJFX01BTkFH RU1FTlRfVVBEQVRFX0lNQUdFX1BST0dSRVNTDQo+ID4gPiA+IFByb2dyZXNzQ2FsbGJhY2s7DQo+ ID4gPiA+DQo+ID4gPiA+IC0gIFN0YXR1cyA9IGdCUy0+SGFuZGxlUHJvdG9jb2woDQo+ID4gPiA+ IC0gICAgICAgICAgICAgICAgICBIYW5kbGUsDQo+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAm Z0VmaUZpcm13YXJlTWFuYWdlbWVudFByb3RvY29sR3VpZCwNCj4gPiA+ID4gLSAgICAgICAgICAg ICAgICAgIChWT0lEICoqKSZGbXANCj4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICk7DQo+ID4g PiA+IC0gIGlmIChFRklfRVJST1IoU3RhdHVzKSkgew0KPiA+ID4gPiAtICAgIHJldHVybiBTdGF0 dXM7DQo+ID4gPiA+IC0gIH0NCj4gPiA+ID4gKyAgLy8gSWYgbm90IHVzaW5nIG9wdGlvbmFsIHJ1 bnRpbWUgc3VwcG9ydCwgZ2V0IEZNUCBwcm90b2NvbCANCj4gPiA+ID4gKyBmb3IgZ2l2ZW4NCj4g PiA+ID4gSGFuZGxlLg0KPiA+ID4gPiArICAvLyBPdGhlcndpc2UsIHVzZSB0aGUgb25lIHNhdmVk IGJ5IFByb2Nlc3NGbXBDYXBzdWxlSW1hZ2UoKS4NCj4gPiA+ID4gKyAgaWYgKChtTGliQXRSdW50 aW1lRnVuY3Rpb24gPT0gTlVMTCkgfHwgIW1MaWJBdFJ1bnRpbWVGdW5jdGlvbiANCj4gPiA+ID4g KyAoKSkNCj4gew0KPiA+ID4gPiArICAgIFN0YXR1cyA9IGdCUy0+SGFuZGxlUHJvdG9jb2woDQo+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIEhhbmRsZSwNCj4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgJmdFZmlGaXJtd2FyZU1hbmFnZW1lbnRQcm90b2NvbEd1aWQsDQo+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgIChWT0lEICoqKSZGbXANCj4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgKTsNCj4gPiA+ID4gKyAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsNCj4gPiA+ID4g KyAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiAt ICAvLw0KPiA+ID4gPiAtICAvLyBMb29rdXAgRmlybXdhcmUgTWFuYWdlbWVudCBQcm9ncmVzcyBQ cm90b2NvbCBiZWZvcmUNCj4gPiA+ID4gU2V0SW1hZ2UoKSBpcyBjYWxsZWQNCj4gPiA+ID4gLSAg Ly8gVGhpcyBpcyBhbiBvcHRpb25hbCBwcm90b2NvbCB0aGF0IG1heSBub3QgYmUgcHJlc2VudCBv biBIYW5kbGUuDQo+ID4gPiA+IC0gIC8vDQo+ID4gPiA+IC0gIFN0YXR1cyA9IGdCUy0+SGFuZGxl UHJvdG9jb2wgKA0KPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgSGFuZGxlLA0KPiA+ID4gPiAt DQo+ID4gJmdFZGtpaUZpcm13YXJlTWFuYWdlbWVudFByb2dyZXNzUHJvdG9jb2xHdWlkLA0KPiA+ ID4gPiAtICAgICAgICAgICAgICAgICAgKFZPSUQgKiopJm1GbXBQcm9ncmVzcw0KPiA+ID4gPiAt ICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4gLSAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiA+ID4gPiArICAgIC8vDQo+ID4gPiA+ICsgICAgLy8gTG9va3VwIEZpcm13YXJlIE1hbmFn ZW1lbnQgUHJvZ3Jlc3MgUHJvdG9jb2wgYmVmb3JlDQo+ID4gU2V0SW1hZ2UoKQ0KPiA+ID4gPiBp cyBjYWxsZWQNCj4gPiA+ID4gKyAgICAvLyBUaGlzIGlzIGFuIG9wdGlvbmFsIHByb3RvY29sIHRo YXQgbWF5IG5vdCBiZSBwcmVzZW50IG9uIEhhbmRsZS4NCj4gPiA+ID4gKyAgICAvLw0KPiA+ID4g PiArICAgIFN0YXR1cyA9IGdCUy0+SGFuZGxlUHJvdG9jb2wgKA0KPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICBIYW5kbGUsDQo+ID4gPiA+ICsNCj4gPiA+ID4gJmdFZGtpaUZpcm13YXJlTWFu YWdlbWVudFByb2dyZXNzUHJvdG9jb2xHdWlkLA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAoVk9JRCAqKikmbUZtcFByb2dyZXNzDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICk7 DQo+ID4gPiA+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiArICAgICAg bUZtcFByb2dyZXNzID0gTlVMTDsNCj4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ICsgIH0gZWxzZSB7 DQo+ID4gPiA+ICsgICAgaWYgKG1SdW50aW1lRm1wID09IE5VTEwpIHsNCj4gPiA+ID4gKyAgICAg IHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiArICAgIEZt cCA9IG1SdW50aW1lRm1wOw0KPiA+ID4gPiAgICAgIG1GbXBQcm9ncmVzcyA9IE5VTEw7DQo+ID4g PiA+ICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTEyNTksNiArMTI4MCwzMCBAQCBQcm9jZXNz Rm1wQ2Fwc3VsZUltYWdlICgNCj4gPiA+ID4gICAgICAgIFVwZGF0ZUhhcmR3YXJlSW5zdGFuY2Ug PQ0KPiA+ID4gPiBJbWFnZUhlYWRlci0+VXBkYXRlSGFyZHdhcmVJbnN0YW5jZTsNCj4gPiA+ID4g ICAgICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgLy8gT3B0aW9uYWwgcnVudGltZSBGTVAgU2V0 SW1hZ2UgcHJvY2Vzc2luZyBzZXF1ZW5jZQ0KPiA+ID4gPiArICAgIGlmICgobUxpYkF0UnVudGlt ZUZ1bmN0aW9uICE9IE5VTEwpICYmIA0KPiA+ID4gPiArIG1MaWJBdFJ1bnRpbWVGdW5jdGlvbg0K PiA+ID4gPiArICgpDQo+ID4gJiYNCj4gPiA+ID4gKyAgICAgICAgKG1SdW50aW1lRm1wUHJvdG9j b2xBcnJheSAhPSBOVUxMKSkgew0KPiA+ID4gPiArICAgICAgbVJ1bnRpbWVGbXAgPSBOVUxMOw0K PiA+ID4gPiArICAgICAgSW5kZXgyID0gMDsNCj4gPiA+ID4gKyAgICAgIHdoaWxlIChtUnVudGlt ZUZtcFByb3RvY29sQXJyYXlbSW5kZXgyXSAhPSBOVUxMKSB7DQo+ID4gPiA+ICsgICAgICAgIGlm IChDb21wYXJlR3VpZCAoJkltYWdlSGVhZGVyLT5VcGRhdGVJbWFnZVR5cGVJZCwNCj4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAmbVJ1bnRpbWVGbXBHdWlkQXJyYXlbSW5kZXgyXSkp IHsNCj4gPiA+ID4gKyAgICAgICAgICBtUnVudGltZUZtcCA9DQo+ID4gKEVGSV9GSVJNV0FSRV9N QU5BR0VNRU5UX1BST1RPQ09MDQo+ID4gPiA+ICopDQo+ID4gPiA+ICsgICAgICAgICAgICBtUnVu dGltZUZtcFByb3RvY29sQXJyYXlbSW5kZXgyXTsNCj4gPiA+ID4gKyAgICAgICAgICBicmVhazsN Cj4gPiA+ID4gKyAgICAgICAgfQ0KPiA+ID4gPiArICAgICAgICBJbmRleDIrKzsNCj4gPiA+ID4g KyAgICAgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgU3RhdHVzID0gU2V0Rm1wSW1hZ2VE YXRhIChOVUxMLA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFn ZUhlYWRlciwNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXgg LQ0KPiA+ID4gPiBGbXBDYXBzdWxlSGVhZGVyLT5FbWJlZGRlZERyaXZlckNvdW50KTsNCj4gPiA+ ID4gKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ID4gKyAgICAgICAgcmV0 dXJuIFN0YXR1czsNCj4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4gKyAgICAgIGNvbnRpbnVlOw0K PiA+ID4gPiArICAgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiAgICAgIFN0YXR1cyA9IEdldEZtcEhh bmRsZUJ1ZmZlckJ5VHlwZSAoDQo+ID4gPiA+ICAgICAgICAgICAgICAgICAmSW1hZ2VIZWFkZXIt PlVwZGF0ZUltYWdlVHlwZUlkLA0KPiA+ID4gPiAgICAgICAgICAgICAgICAgVXBkYXRlSGFyZHdh cmVJbnN0YW5jZSwgZGlmZiAtLWdpdCANCj4gPiA+ID4gYS9NZGVNb2R1bGVQa2cvTGlicmFyeS9E eGVDYXBzdWxlTGliRm1wL0R4ZUNhcHN1bGVSdW50aW1lLmMNCj4gPiA+ID4gYi9NZGVNb2R1bGVQ a2cvTGlicmFyeS9EeGVDYXBzdWxlTGliRm1wL0R4ZUNhcHN1bGVSdW50aW1lLmMNCj4gPiA+ID4g aW5kZXggZjk0MDQ0YTQwOS4uNmZlYjZkYWI3OSAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvTWRlTW9k dWxlUGtnL0xpYnJhcnkvRHhlQ2Fwc3VsZUxpYkZtcC9EeGVDYXBzdWxlUnVudGltZS5jDQo+ID4g PiA+ICsrKw0KPiBiL01kZU1vZHVsZVBrZy9MaWJyYXJ5L0R4ZUNhcHN1bGVMaWJGbXAvRHhlQ2Fw c3VsZVJ1bnRpbWUuYw0KPiA+ID4gPiBAQCAtMSw2ICsxLDcgQEANCj4gPiA+ID4gIC8qKiBAZmls ZQ0KPiA+ID4gPiAgICBDYXBzdWxlIGxpYnJhcnkgcnVudGltZSBzdXBwb3J0Lg0KPiA+ID4gPg0K PiA+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMjEsIE5WSURJQSBDT1JQT1JBVElPTi4gQWxsIHJp Z2h0cyANCj4gPiA+ID4gKyByZXNlcnZlZC48QlI+DQo+ID4gPiA+ICAgIENvcHlyaWdodCAoYykg MjAxNiAtIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+IHJlc2VydmVkLjxC Uj4NCj4gPiA+ID4gICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQNCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTE5LDcgKzIwLDExIEBADQo+ID4gPiA+ICAjaW5jbHVk ZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gPiA+ID4gICNpbmNsdWRl IDxMaWJyYXJ5L1VlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYi5oPg0KPiA+ID4gPiAgI2luY2x1 ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiA+ID4gPiArI2luY2x1ZGUgPExp YnJhcnkvVWVmaVJ1bnRpbWVMaWIuaD4NCj4gPiA+ID4NCj4gPiA+ID4gK2V4dGVybiBCT09MRUFO ICAgICAgICAgICAgICAgICAgIChFRklBUEkNCj4gPiAqbUxpYkF0UnVudGltZUZ1bmN0aW9uKQ0K PiA+ID4gPiAoVk9JRCk7DQo+ID4gPiA+ICtleHRlcm4gVk9JRCAgICAgICAgICAgICAgICAgICAg ICAqKm1SdW50aW1lRm1wUHJvdG9jb2xBcnJheTsNCj4gPiA+ID4gK2V4dGVybiBFRklfR1VJRCAg ICAgICAgICAgICAgICAgICptUnVudGltZUZtcEd1aWRBcnJheTsNCj4gPiA+ID4gIGV4dGVybiBF RklfU1lTVEVNX1JFU09VUkNFX1RBQkxFICptRXNydFRhYmxlOw0KPiA+ID4gPiAgZXh0ZXJuIEJP T0xFQU4gICAgICAgICAgICAgICAgICAgbUlzVmlydHVhbEFkZHJDb252ZXJ0ZWQ7DQo+ID4gPiA+ ICBFRklfRVZFTlQNCj4gPiA+ID4gbUR4ZVJ1bnRpbWVDYXBzdWxlTGliVmlydHVhbEFkZHJlc3ND aGFuZ2VFdmVudCAgPSBOVUxMOyBAQA0KPiAtNDAsOQ0KPiA+ID4gPiArNDUsMTIxIEBAIER4ZUNh cHN1bGVMaWJWaXJ0dWFsQWRkcmVzc0NoYW5nZUV2ZW50ICgNCj4gPiA+ID4gICAgKQ0KPiA+ID4g PiAgew0KPiA+ID4gPiAgICBnUlQtPkNvbnZlcnRQb2ludGVyIChFRklfT1BUSU9OQUxfUFRSLCAo Vk9JRCAqKikmbUVzcnRUYWJsZSk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgaWYgKG1SdW50aW1l Rm1wUHJvdG9jb2xBcnJheSAhPSBOVUxMKSB7DQo+ID4gPiA+ICsgICAgVk9JRCAqKkZtcEFycmF5 RW50cnk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICBGbXBBcnJheUVudHJ5ID0gbVJ1bnRpbWVG bXBQcm90b2NvbEFycmF5Ow0KPiA+ID4gPiArICAgIHdoaWxlICgqRm1wQXJyYXlFbnRyeSAhPSBO VUxMKSB7DQo+ID4gPiA+ICsgICAgICBFZmlDb252ZXJ0UG9pbnRlciAoMHgwLCAoVk9JRCAqKikg Rm1wQXJyYXlFbnRyeSk7DQo+ID4gPiA+ICsgICAgICBGbXBBcnJheUVudHJ5Kys7DQo+ID4gPiA+ ICsgICAgfQ0KPiA+ID4gPiArICAgIEVmaUNvbnZlcnRQb2ludGVyICgweDAsIChWT0lEICoqKQ0K PiA+ICZtUnVudGltZUZtcFByb3RvY29sQXJyYXkpOyAgfQ0KPiA+ID4gPiArIGlmIChtUnVudGlt ZUZtcEd1aWRBcnJheSAhPSBOVUxMKSB7DQo+ID4gPiA+ICsgICAgRWZpQ29udmVydFBvaW50ZXIg KDB4MCwgKFZPSUQgKiopICZtUnVudGltZUZtcEd1aWRBcnJheSk7ICANCj4gPiA+ID4gKyB9DQo+ ID4gaWYNCj4gPiA+ID4gKyAobUxpYkF0UnVudGltZUZ1bmN0aW9uICE9IE5VTEwgKSB7DQo+ID4g PiA+ICsgICAgRWZpQ29udmVydFBvaW50ZXIgKDB4MCwgKFZPSUQgKiopICZtTGliQXRSdW50aW1l RnVuY3Rpb24pOyAgDQo+ID4gPiA+ICsgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICAgIG1Jc1ZpcnR1 YWxBZGRyQ29udmVydGVkID0gVFJVRTsgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKy8qKg0KPiA+ID4g PiArICBJbml0aWFsaXplIG9wdGlvbmFsIHJ1bnRpbWUgRk1QIGFycmF5cyB0byBzdXBwb3J0IEZN UCANCj4gPiA+ID4gK1NldEltYWdlDQo+ID4gPiA+IHByb2Nlc3NpbmcNCj4gPiA+ID4gKyAgYWZ0 ZXIgRXhpdEJvb3RTZXJ2aWNlcygpIGlzIGNhbGxlZC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBU aGUgSW1hZ2VUeXBlSWRHdWlkcyBvZiBydW50aW1lLWNhcGFibGUgRk1QIHByb3RvY29sIGRyaXZl cnMgDQo+ID4gPiA+ICsgYXJlDQo+ID4gPiA+IGV4dHJhY3RlZA0KPiA+ID4gPiArICBmcm9tIHRo ZSBQY2RSdW50aW1lRm1wQ2Fwc3VsZUltYWdlVHlwZUlkR3VpZCBsaXN0IGFuZCB0aGVpciANCj4g PiA+ID4gKyBwcm90b2NvbCAgc3RydWN0dXJlIHBvaW50ZXJzIGFyZSBzYXZlZCBpbiB0aGUgDQo+ ID4gPiA+ICsgbVJ1bnRpbWVGbXBQcm90b2NvbEFycmF5IGZvciB1c2UNCj4gPiA+ID4gZHVyaW5n DQo+ID4gPiA+ICsgIFVwZGF0ZUNhcHN1bGUoKSBwcm9jZXNzaW5nLiBVcGRhdGVIYXJkd2FyZUlu c3RhbmNlIGlzIG5vdA0KPiA+IHN1cHBvcnRlZC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArKiovDQo+ ID4gPiA+ICtTVEFUSUMNCj4gPiA+ID4gK1ZPSUQNCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiAr SW5pdGlhbGl6ZVJ1bnRpbWVGbXBBcnJheXMgKA0KPiA+ID4gPiArICBWT0lEDQo+ID4gPiA+ICsg ICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgRUZJX0dVSUQgICAgICAqR3VpZDsNCj4gPiA+ID4g KyAgVUlOVE4gICAgICAgICBOdW1IYW5kbGVzOw0KPiA+ID4gPiArICBFRklfSEFORExFICAgICpI YW5kbGVCdWZmZXI7DQo+ID4gPiA+ICsgIEVGSV9TVEFUVVMgICAgU3RhdHVzOw0KPiA+ID4gPiAr ICBVSU5UTiAgICAgICAgIENvdW50Ow0KPiA+ID4gPiArICBVSU5UTiAgICAgICAgIEluZGV4Ow0K PiA+ID4gPiArICBVSU5UTiAgICAgICAgIEZtcEFycmF5SW5kZXg7DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAgRUZJX1NUQVRVUw0KPiA+ID4gPiArICAgIEdldEZtcEhhbmRsZUJ1ZmZlckJ5VHlwZSAo DQo+ID4gPiA+ICsgICAgICBJTiAgICAgRUZJX0dVSUQNCj4gPiAqVXBkYXRlSW1hZ2VUeXBlSWQs DQo+ID4gPiA+ICsgICAgICBJTiAgICAgVUlOVDY0DQo+ID4gPiA+IFVwZGF0ZUhhcmR3YXJlSW5z dGFuY2UsDQo+ID4gPiA+ICsgICAgICBPVVQgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAg ICAqTm9IYW5kbGVzLA0KPiA+ID4gPiBPUFRJT05BTA0KPiA+ID4gPiArICAgICAgT1VUICAgIEVG SV9IQU5ETEUgICAgICAgICAgICAgICAgICAgKipIYW5kbGVCdWYsDQo+ID4gPiA+IE9QVElPTkFM DQo+ID4gPiA+ICsgICAgICBPVVQgICAgQk9PTEVBTg0KPiA+ICoqUmVzZXRSZXF1aXJlZEJ1Zg0K PiA+ID4gPiBPUFRJT05BTA0KPiA+ID4gPiArICAgICAgKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICBDb3VudCA9IFBjZEdldFNpemUgKFBjZFJ1bnRpbWVGbXBDYXBzdWxlSW1hZ2VUeXBlSWRHdWlk KSAvDQo+ID4gc2l6ZW9mDQo+ID4gPiA+IChHVUlEKTsNCj4gPiA+ID4gKyAgaWYgKENvdW50ID09 IDApIHsNCj4gPiA+ID4gKyAgICByZXR1cm47DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ ID4gPiArICAvLyBtUnVudGltZUZtcFByb3RvY29sQXJyYXkgaXMgYSBOVUxMLXRlcm1pbmF0ZWQg bGlzdCBvZiBGTVAgDQo+ID4gPiA+ICsgcHJvdG9jb2wNCj4gPiA+ID4gcG9pbnRlcnMNCj4gPiA+ ID4gKyAgbVJ1bnRpbWVGbXBQcm90b2NvbEFycmF5ID0gKFZPSUQgKiopDQo+ID4gPiA+ICsgICAg QWxsb2NhdGVSdW50aW1lWmVyb1Bvb2wgKChDb3VudCArIDEpICogc2l6ZW9mIChWT0lEICopKTsg IA0KPiA+ID4gPiArIGlmIChtUnVudGltZUZtcFByb3RvY29sQXJyYXkgPT0gTlVMTCkgew0KPiA+ ID4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICJFcnJvciBhbGxvY2F0aW5nDQo+ID4gPiA+ IG1SdW50aW1lRm1wUHJvdG9jb2xBcnJheVxuIikpOw0KPiA+ID4gPiArICAgIHJldHVybjsNCj4g PiA+ID4gKyAgfQ0KPiA+ID4gPiArICBtUnVudGltZUZtcEd1aWRBcnJheSA9IChFRklfR1VJRCAq KQ0KPiA+ID4gPiArICAgIEFsbG9jYXRlUnVudGltZVplcm9Qb29sIChDb3VudCAqIHNpemVvZiAo RUZJX0dVSUQpKTsgIGlmIA0KPiA+ID4gPiArIChtUnVudGltZUZtcEd1aWRBcnJheSA9PSBOVUxM KSB7DQo+ID4gPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVycm9yIGFsbG9jYXRpbmcN Cj4gPiBtUnVudGltZUZtcEd1aWRBcnJheSIpKTsNCj4gPiA+ID4gKyAgICBGcmVlUG9vbCAobVJ1 bnRpbWVGbXBQcm90b2NvbEFycmF5KTsNCj4gPiA+ID4gKyAgICByZXR1cm47DQo+ID4gPiA+ICsg IH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICAvLyBGb3IgZWFjaCBydW50aW1lIEltYWdlVHlwZUlk R3VpZCBpbiB0aGUgUENELCBzYXZlIGl0cyBHVUlEIA0KPiA+ID4gPiArIGFuZCBGTVANCj4gPiA+ ID4gcHJvdG9jb2wNCj4gPiA+ID4gKyAgRm1wQXJyYXlJbmRleCA9IDA7DQo+ID4gPiA+ICsgIEd1 aWQgID0gUGNkR2V0UHRyIChQY2RSdW50aW1lRm1wQ2Fwc3VsZUltYWdlVHlwZUlkR3VpZCk7DQo+ ID4gPiA+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IENvdW50OyBJbmRleCsrLCBHdWlkKysp IHsNCj4gPiA+ID4gKyAgICBtUnVudGltZUZtcEd1aWRBcnJheVtGbXBBcnJheUluZGV4XSA9ICpH dWlkOw0KPiA+ID4gPiArICAgIEhhbmRsZUJ1ZmZlciA9IE5VTEw7DQo+ID4gPiA+ICsgICAgU3Rh dHVzID0gR2V0Rm1wSGFuZGxlQnVmZmVyQnlUeXBlIChHdWlkLA0KPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwNCj4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZOdW1IYW5kbGVzLA0KPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkhhbmRsZUJ1ZmZlciwNCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPiA+ID4gPiArICAg IGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ID4gKyAgICAgIERFQlVHICgoREVCVUdf RVJST1IsDQo+ID4gPiA+ICsgICAgICAgICAgICAgICJFcnJvciBmaW5kaW5nIEZNUCBoYW5kbGUg Zm9yIHJ1bnRpbWUNCj4gPiA+ID4gSW1hZ2VUeXBlSWRHdWlkPSVnOiAlclxuIiwNCj4gPiA+ID4g KyAgICAgICAgICAgICAgR3VpZCwgU3RhdHVzKSk7DQo+ID4gPiA+ICsgICAgICBjb250aW51ZTsN Cj4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICBpZiAoTnVtSGFuZGxlcyA+ IDEpIHsNCj4gPiA+ID4gKyAgICAgIERFQlVHICgoREVCVUdfRVJST1IsDQo+ID4gPiA+ICsgICAg ICAgICAgICAgICJGTVAgcnVudGltZSBJbWFnZVR5cGVJZEd1aWQ9JWcgcmV0dXJuZWQgJXUNCj4g PiBoYW5kbGVzLA0KPiA+ID4gPiBvbmx5IDEgc3VwcG9ydGVkXG4iLA0KPiA+ID4gPiArICAgICAg ICAgICAgICBHdWlkLCBOdW1IYW5kbGVzKSk7DQo+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiArICAg IFN0YXR1cyA9IGdCUy0+SGFuZGxlUHJvdG9jb2wgKEhhbmRsZUJ1ZmZlclswXSwNCj4gPiA+ID4g Kw0KPiA+ID4gPiAmZ0VmaUZpcm13YXJlTWFuYWdlbWVudFByb3RvY29sR3VpZCwNCj4gPiA+ID4g Kw0KPiA+ID4gPiAmbVJ1bnRpbWVGbXBQcm90b2NvbEFycmF5W0ZtcEFycmF5SW5kZXhdKTsNCj4g PiA+ID4gKyAgICBGcmVlUG9vbCAoSGFuZGxlQnVmZmVyKTsNCj4gPiA+ID4gKyAgICBpZiAoRUZJ X0VSUk9SKFN0YXR1cykpIHsNCj4gPiA+ID4gKyAgICAgIERFQlVHICgoREVCVUdfRVJST1IsDQo+ ID4gPiA+ICsgICAgICAgICAgICAgICJFcnJvciBnZXR0aW5nIEZNUCBwcm90b2NvbCBmb3IgcnVu dGltZQ0KPiA+ID4gPiBJbWFnZVR5cGVJZEd1aWQ9JWc6ICVyXG4iLA0KPiA+ID4gPiArICAgICAg ICAgICAgICBHdWlkLCBTdGF0dXMpKTsNCj4gPiA+ID4gKyAgICAgIGNvbnRpbnVlOw0KPiA+ID4g PiArICAgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgIEZtcEFycmF5SW5kZXgrKzsNCj4gPiA+ ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIG1MaWJBdFJ1bnRpbWVGdW5jdGlvbiA9IEVm aUF0UnVudGltZTsgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICAvKioNCj4gPiA+ID4gICAgTm90aWZ5 IGZ1bmN0aW9uIGZvciBldmVudCBncm91cA0KPiA+IEVGSV9FVkVOVF9HUk9VUF9SRUFEWV9UT19C T09ULg0KPiA+ID4gPg0KPiA+ID4gPiBAQCAtOTMsNiArMjEwLDggQEAgRHhlQ2Fwc3VsZUxpYlJl YWR5VG9Cb290RXZlbnROb3RpZnkgKA0KPiA+ID4gPiAgICAgIC8vDQo+ID4gPiA+ICAgICAgbUVz cnRUYWJsZS0+RndSZXNvdXJjZUNvdW50TWF4ID0NCj4gPiBtRXNydFRhYmxlLT5Gd1Jlc291cmNl Q291bnQ7DQo+ID4gPiA+ICAgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBJbml0aWFsaXplUnVu dGltZUZtcEFycmF5cyAoKTsNCj4gPiA+ID4gIH0NCj4gPiA+ID4NCj4gPiA+ID4gIC8qKg0KPiA+ ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiA+DQo+IGEvTWRlTW9kdWxlUGtnL0xpYnJhcnkvRHhlQ2Fw c3VsZUxpYkZtcC9EeGVSdW50aW1lQ2Fwc3VsZUxpYi5pbmYNCj4gPiA+ID4NCj4gYi9NZGVNb2R1 bGVQa2cvTGlicmFyeS9EeGVDYXBzdWxlTGliRm1wL0R4ZVJ1bnRpbWVDYXBzdWxlTGliLmluZg0K PiA+ID4gPiBpbmRleCBiZjU2ZjQ2MjNmLi43YjNmNWUwNGY4IDEwMDY0NA0KPiA+ID4gPiAtLS0N Cj4gPiA+IGEvTWRlTW9kdWxlUGtnL0xpYnJhcnkvRHhlQ2Fwc3VsZUxpYkZtcC9EeGVSdW50aW1l Q2Fwc3VsZUxpYi5pbmYNCj4gPiA+ID4gKysrDQo+ID4gPiBiL01kZU1vZHVsZVBrZy9MaWJyYXJ5 L0R4ZUNhcHN1bGVMaWJGbXAvRHhlUnVudGltZUNhcHN1bGVMaWIuaW5mDQo+ID4gPiA+IEBAIC00 OSw2ICs0OSw3IEBADQo+ID4gPiA+ICAgIFByaW50TGliDQo+ID4gPiA+ICAgIEhvYkxpYg0KPiA+ ID4gPiAgICBCbXBTdXBwb3J0TGliDQo+ID4gPiA+ICsgIFBjZExpYg0KPiA+ID4gPg0KPiA+ID4g Pg0KPiA+ID4gPiAgW1Byb3RvY29sc10NCj4gPiA+ID4gQEAgLTcwLDUgKzcxLDggQEANCj4gPiA+ ID4gICAgZ0VmaUV2ZW50VmlydHVhbEFkZHJlc3NDaGFuZ2VHdWlkICAgICAgICMjIENPTlNVTUVT ICMjDQo+IEV2ZW50DQo+ID4gPiA+ICAgIGdFZGtpaUNhcHN1bGVPbkRpc2tOYW1lR3VpZCAgICAg ICAgICAgICAjIw0KPiA+ID4gPiBTT01FVElNRVNfQ09OU1VNRVMgIyMgR1VJRA0KPiA+ID4gPg0K PiA+ID4gPiArW1BjZF0NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4NCj4gZ0VmaU1kZU1vZHVs ZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFJ1bnRpbWVGbXBDYXBzdWxlSW1hZ2VUeXBlSWRHDQo+ID4g PiB1aQ0KPiA+ID4gPiBkDQo+ID4gPiA+ICsNCj4gPiA+ID4gIFtEZXBleF0NCj4gPiA+ID4gICAg Z0VmaVZhcmlhYmxlV3JpdGVBcmNoUHJvdG9jb2xHdWlkIGRpZmYgLS1naXQgDQo+ID4gPiA+IGEv TWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gYi9NZGVNb2R1bGVQa2cvTWRlTW9kdWxl UGtnLmRlYw0KPiA+ID4gPiBpbmRleCAxMzNlMDRlZTg2Li44NjlhYTg5MmY3DQo+ID4gPiAxMDA2 NDQNCj4gPiA+ID4gLS0tIGEvTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiA+ID4g KysrIGIvTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiA+ID4gQEAgLTMsNyArMyw3 IEBADQo+ID4gPiA+ICAjIEl0IGFsc28gcHJvdmlkZXMgdGhlIGRlZmluaXRpb25zKGluY2x1ZGlu ZyANCj4gPiA+ID4gUFBJcy9QUk9UT0NPTHMvR1VJRHMgYW5kIGxpYnJhcnkgY2xhc3NlcykgICMg YW5kIGxpYnJhcmllcyANCj4gPiA+ID4gaW5zdGFuY2VzLCB3aGljaCBhcmUgdXNlZCBmb3IgdGhv c2UgbW9kdWxlcy4NCj4gPiA+ID4gICMNCj4gPiA+ID4gLSMgQ29weXJpZ2h0IChjKSAyMDE5LCBO VklESUEgQ09SUE9SQVRJT04uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4gPiA+ICsjIENvcHly aWdodCAoYykgMjAxOS0yMDIxLCBOVklESUEgQ09SUE9SQVRJT04uIEFsbCByaWdodHMgDQo+ID4g PiA+ICtyZXNlcnZlZC48QlI+DQo+ID4gPiA+ICAjIENvcHlyaWdodCAoYykgMjAwNyAtIDIwMjEs IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIA0KPiA+ID4gPiByZXNlcnZlZC48QlI+ICAj IENvcHlyaWdodCAoYykgMjAxNiwgTGluYXJvIEx0ZC4gQWxsIHJpZ2h0cyANCj4gPiA+ID4gcmVz ZXJ2ZWQuPEJSPiAgIyAoQykgQ29weXJpZ2h0IDIwMTYgLSAyMDE5IEhld2xldHQgUGFja2FyZCAN Cj4gPiA+ID4gRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4gQEAgLTIwMjAsNiArMjAyMCwx MSBAQA0KPiA+ID4gPiAgICAjIEBQcm9tcHQgQ2Fwc3VsZSBPbiBEaXNrIFRlbXAgUmVsb2NhdGlv biBmaWxlIG5hbWUgaW4gUEVJIA0KPiA+ID4gPiBwaGFzZQ0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ ID4NCj4gZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZENvRFJlbG9jYXRpb25GaWxl TmFtZXxMIkNvZC50bXANCj4gPiA+ICJ8DQo+ID4gPiA+IFZPSUQqfDB4MzAwMDEwNDgNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgIyMgVGhpcyBQQ0QgaG9sZHMgYSBsaXN0IG9mIEdVSURzIGZvciB0aGUg SW1hZ2VUeXBlSWQgdG8gDQo+ID4gPiA+ICsgaW5kaWNhdGUgdGhlICAjICBGTVAgaXMgcnVudGlt ZSBjYXBhYmxlLg0KPiA+ID4gPiArICAjIEBQcm9tcHQgQSBsaXN0IG9mIHJ1bnRpbWUtY2FwYWJs ZSBGTVAgSW1hZ2VUeXBlSWQgR1VJRHMNCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4NCj4gZ0Vm aU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFJ1bnRpbWVGbXBDYXBzdWxlSW1hZ2VUeXBl SWRHDQo+ID4gPiB1aQ0KPiA+ID4gPiBkfHsweDB9fFZPSUQqfDB4MzAwMDEwNDkNCj4gPiA+ID4g Kw0KPiA+ID4gPiAgICAjIyBUaGlzIFBDRCBob2xkIGEgbGlzdCBHVUlEcyBmb3IgdGhlIEltYWdl VHlwZUlkIHRvIGluZGljYXRlIHRoZQ0KPiA+ID4gPiAgICAjICBGTVAgY2Fwc3VsZSBpcyBhIHN5 c3RlbSBGTVAuDQo+ID4gPiA+ICAgICMgQFByb21wdCBBIGxpc3Qgb2Ygc3lzdGVtIEZNUCBJbWFn ZVR5cGVJZCBHVUlEcw0KPiA+ID4gPiAtLQ0KPiA+ID4gPiAyLjE3LjENCj4gPiA+ID4NCj4gPiA+ ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+DQo+ID4NCj4g Pg0KPiA+DQo+ID4NCj4NCj4NCj4NCj4NCj4NCj4NCj4NCj4NCj4NCj4NCj4NCj4NCg0KDQoNCg0K DQoNCg0KDQo=