From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (NAM12-DM6-obe.outbound.protection.outlook.com [40.107.243.75]) by mx.groups.io with SMTP id smtpd.web11.11768.1660527163266374515 for ; Sun, 14 Aug 2022 18:32:44 -0700 Authentication-Results: mx.groups.io; dkim=fail, err=mail: missing word in phrase: charset not supported: "big5"; spf=pass (domain: ami.com, ip: 40.107.243.75, mailfrom: crystallee@ami.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=agyuxI3ALpTlRpPY8uyo82ADrmLpAdr7R8r3Q/biLZaA57E+c5Bu+JHHW1R6msioHBhn5VWMx4VYgcKVk29GMYNvXrO4DUNUAlRbxEYaaYbCJr3iPX2yqMUmBYKJT8/gEGNMGRqc5++1jUZNfcnlwNH2QansUZmHZ53Oidq28uzJRC1bKtI4x5Zi9SRE87PFvjIlQ7+pIDif30GXVHf3J++EwqrMfW5G4GHWK1jdUVMsMKd5fTBuK6m7ATDWkwBibja4HU6Ypp/DLb9/c/ar1skdMAEeI1zvg9q3Ra1asD+f2REH1Hj73/5N9vjRxTqSDJxno6VoBFZGascu/L1dNQ== 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=ZO7dGRsg4TkBrGUdwVfU2vPy5yytj+qunP1btOg5aLA=; b=Lq3pHepCBTyi6pfRXXKlVhd8WeXIm+sJoXw9dw5B4npiGfBLRfYVQXwyllY4tYeHlXsoaLUGMpQ8tg7fbyRBdMSvNWflTFTthS9hBYDBfETFDx24CrvbJrlyJM7Z2kT+xFZ5nAWgUaunFTdxNxM8XMMM8DAf1zo9GMuO2eH6/C4oMFWw+q64Y6F0M8iHYdrd0y5ey0Qdjhh0C+Fqqbz41vLotwQNRaMnv7dhoQFYs0cKr66sqj+kyYMPWD8V/aCTDwqjDdE3ewqJqJezl0Q/ZQJuaXI/e7HdzKv0FOlwnsvzkgAYcxGYiQMpu9GzuZ1xK0pFoIMElDfH1k/3IJVkhQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ami.com; dmarc=pass action=none header.from=ami.com; dkim=pass header.d=ami.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ami.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZO7dGRsg4TkBrGUdwVfU2vPy5yytj+qunP1btOg5aLA=; b=cpvY0XUKpz6o5lKjd3ksDO10tXNtCeQ0+4MHNi3w2qHMoS3gaZk9LNgiOOrZEDDgW/ROvtWobIW3m4jMRVJKAFEOo4XpvJzdUgAyDgyNb52lvcZgzNBZ6Z8gcJ+l7ohiA940sQBO/xYfwQM4Y9qW+/GjkE/SHwJJfHujcPKzTRc= Received: from DS7PR10MB5278.namprd10.prod.outlook.com (2603:10b6:5:3a5::9) by DM6PR10MB4329.namprd10.prod.outlook.com (2603:10b6:5:219::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5525.10; Mon, 15 Aug 2022 01:32:40 +0000 Received: from DS7PR10MB5278.namprd10.prod.outlook.com ([fe80::507e:2452:df1f:3f34]) by DS7PR10MB5278.namprd10.prod.outlook.com ([fe80::507e:2452:df1f:3f34%5]) with mapi id 15.20.5504.027; Mon, 15 Aug 2022 01:32:40 +0000 From: =?big5?B?Q3J5c3RhbExlZSBbp/WpybipXQ==?= To: "isaac.w.oram@intel.com" , "nathaniel.l.desimone@intel.com" , "star.zeng@intel.com" , "zhichao.gao@intel.com" , "maciej.rabeda@linux.intel.com" , "siyuan.fu@intel.com" , "jiaxin.wu@intel.com" , "zhiguang.liu@intel.com" , "dandan.bi@intel.com" , "gaoliming@byosoft.com.cn" , "devel@edk2.groups.io" CC: =?big5?B?RGF2aWRIc2llaCBbwcKpW7S8XQ==?= , =?big5?B?Q3J5c3RhbExlZSBbp/WpybipXQ==?= Subject: Re: [PATCH 1/1] AsfPkg: Add Alert standard format support Thread-Topic: [PATCH 1/1] AsfPkg: Add Alert standard format support Thread-Index: AQHYoMVKwSHHSFhDg0ikS6sflrhFR62vTEOQ Date: Mon, 15 Aug 2022 01:32:40 +0000 Message-ID: References: <37a42ca68b9dfc69f499a447128f1f4cd334d248.1658822180.git.CrystalLee@ami.com> In-Reply-To: <37a42ca68b9dfc69f499a447128f1f4cd334d248.1658822180.git.CrystalLee@ami.com> Accept-Language: zh-TW, 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=ami.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 16db56bf-b1e9-4831-ceab-08da7e5e0b0a x-ms-traffictypediagnostic: DM6PR10MB4329:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xph/F+7L+AJICImeyFK6wt6m74GC/Gg74tk5rVMZ/r1Wk+nR0mczo+Y240zTjYtw7wlQwJ27iZI1ZX72l0+yI2Eb9mmZEmceZV4wORMlwqkeDNqiGBGpsZ3Ju5JwSTZy5jCMb8fp2kxm/bNsind1FvJlX4YI8yQZf+NNvn5qsQkeZOXCdgHY9IjeDJ4C/0hHsya+k8RASGTpcd7EotUJS50OZxVPR0BcUKzuODNFqiUesGEnkt+g+g/feQrq4ASMvDuq6M3sIQIzB/D77yGYlsZo5BYoRALoDK1AVQW8HJeLpNOqwkM+uDbvpEvcNUqj+lamVf5m5iFn9Hm4Mkq1JUmjGN0VYKi4NGcieuHf9W4s2M/ckEPUpKKvqOJHFWYufGFAppKfkwBTf44vFsjcUKO4QxZdtuLdbAgR7nzJwweH3UGcxMLFonOTv2InJB6EMnraiehdxH91ailSvs/giiZ4v4noh1GdZIBbpsmMLf1Ccx0xpPDfXI2M5LIE5Yz8I1toCXF8DqDDdZVTmSvQ3SUY/CHeZrg8LSuw1c8dLQepdi9J2V22tjOWW+I4bHqQSzZyEMXEhPTO26x45/Y+RdupRC/Nj5wngwLD2gVjh/wTwdPE3s26yM5iCdwLeai2iwcpZM181WF+nVg0snEOtlkQik5Md/ZXMiqTcLNwqDCogNOL8GNwnd71j/Gj66w1L0LFIQQegbp3OYGlnX3xQj2QivJ3sQWaOE6IEa0hkodjedDKAq53p8SOr+IiLNQ48FkGlEDzEsX/PmnCj+9f7RspyASRFRFGHC8UhsSIPhtLxc+bnQq09z9pE9LmXaPzdcSz1t5cJsRaWpwHOhBQpqHkGk1tI/+dCoPYAzF2924= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR10MB5278.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(366004)(136003)(39830400003)(376002)(396003)(346002)(316002)(55016003)(66446008)(66556008)(64756008)(41300700001)(8676002)(76116006)(85182001)(15650500001)(83380400001)(4326008)(2906002)(66946007)(54906003)(110136005)(186003)(38100700002)(122000001)(26005)(30864003)(19627235002)(9686003)(921005)(66476007)(33656002)(40140700001)(38070700005)(8936002)(86362001)(71200400001)(478600001)(6506007)(7696005)(7416002)(5660300002)(52536014)(53546011)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?big5?B?M3Jjb212WUNVVW4vSnhVc1hpMHZZZEd3WUljeS92KzdaNkN2WTR6OU9wK0hZbkVa?= =?big5?B?dG00ZnJ0Y3dLMU9RUXNsTXNmM09vYisvbzZWa3k0RTdzS3BmUlVLa0xqcXVJQzND?= =?big5?B?VVlyY2FTdk81T3R3c3dmNFZUT2J1ZXh0bkhNNUFWa0R5cTNVMkRUTXgrcVo0ZGcw?= =?big5?B?YkNINE5KSEdmYUNFNDJHWjYyWXpGd29tZGwyZnZFOWxRZkg5RDIyNDhTOWQ1ZFhn?= =?big5?B?dzFLbkQrNVV5QUpLUGU2UCtoRkovdDJFRjRiSXZ4dC9jOFVMSGJBVzVpZ0JpOXdz?= =?big5?B?elBQcnBtTWVzMWFGQWFicCt0MytOUENEcjZ2VTlqNFh1ZDdlVkNEUUtNWHBOZGwr?= =?big5?B?OU10OEtrbEs3bi9IZFF5RERNZHhkSFdkS3pnYldjWkRWd0NjWmRrQVFDL0NBZXpz?= =?big5?B?QWRsQ1dNdTkxVUNFcVRUdFpKbVRIak1RR0V4NXBQSHAyV0ZZWVdzU1pPazZuT3BD?= =?big5?B?REE3RkZZOUtXbTNmcFU0RXRENHJKaFlnSTl5cXZ1dVcyVlBEV0k2YUF4TEZMZWtj?= =?big5?B?V1BuZVE4TXRLMVBicTUvYVJncDBVdGs5Y1FWdzZaSThxS3had2U0NERlcURjZzIx?= =?big5?B?d1JheFBTdEdZSHhPeVlXTjMxMHRJeTlhZEVEQlBqNVBvWnNNZStycWhzdGZCYTlk?= =?big5?B?MlNNSjhBcUloQTVaY2dSWUhQR3hmYzZ5V0Nad0JmeVV1YzMwRElaZVNsQ3BkYklN?= =?big5?B?S3dHeGNtT01ZRTlmSGpjcGVvbFZNL2FwYlFqeGtsellLYTBoMWtwRlZJbWwwa3JO?= =?big5?B?U3BsdENQSnZJUjcreTBobWlPSzVPOHpWNFRQR25wSFhHZ0FOcWI2OGE3ZHdFMFQ2?= =?big5?B?Szc5MWlML1ZjcitnRWE0NzFITlVxRnc3YlRiQ2pWRzhUVGZMTXVHa0VMUGN1bkNj?= =?big5?B?THVLb3ozOE5lQmZjZGZMcStvY3d1V204bXhyeWVpb3NlS0dWNXhueW01U0p1bXh2?= =?big5?B?cnMyVTRDQXd3UTdtelRMMTJ3OXJrNVhiSUowbk9ydFVzNlJOdiswNlczSjBhTEw5?= =?big5?B?bzR5ay92azkzam5FYkdYMGswV3RoL1lZT3JlaVZwOUJSN1RJamdqTFBpVkNkVmpz?= =?big5?B?L055TTRVcUp3RXFiZmhONnFlVVZKZkppTVBWZGlqTnpNcFpxa0F4RGN5bnVxcWR3?= =?big5?B?ZXNhQnJkc2RXOFR3WmdyN3lEdHE5RU5QV0JZNktmZC9FTHdWRnAzMHgydnFMSnJQ?= =?big5?B?d2JlTlNtdlJyci9NYjBsSkJ2K0xUS3E1Um5oZU1PSXB2L1hVbEdrdVViZlk2U1hi?= =?big5?B?Yk9kM1AvSC8rSThTcXh3SGo5c0hWcENhaVExZU9RQVUxL3VzQllHV2pkUGNkdzN1?= =?big5?B?QUs1ck5XYS9jT0xqNlZTM2ZLc3ZkdEhXY25XMFJFSG5RUmdOazgzQXdDcllKOFhD?= =?big5?B?SkdDTnNHbks1dER5K3piL0xkWXY4THNyZ2JHWFpMMnpORDk2OE9oSVpkbjI0L0xO?= =?big5?B?YnNlR3BnUHhXeTBnYUpQTkRPYlNVT0cyZmpvMG13WitRbEpRQVY5SWR6T1FnemhG?= =?big5?B?R25kVTI4Mk5LMXo3UzRFVVR3dm53SG8vVEMyQUhKS1lRRzR4bldGYUtrTnhlbTNC?= =?big5?B?Y2s1UFMwaGhQQW1pQ2kvaTE4QmdoemtoTktKM1Z6aWRuWllSNHJaSHdTMnVMM29z?= =?big5?B?V05hdzBIcE5YUE11Yk1wbGIrRENaYzJPSW1jVEJUZUk4b3FDSWpCOVkwa2U2Vnhu?= =?big5?B?Q09Ub0poWjRFNHZ1Z3N4RXRMU1loU1UraGZtMUViNEQ5V0R4MVg4YzlKdUZycnpY?= =?big5?B?U3lvNGpKUU1WNTRpaUp4bkRlMGdETnVNNEF4OTd5V2lFTURZQmlrY1FhZmNhUXpa?= =?big5?B?MW1rQ240RS9HUDZLZUtPV2FvS0ZBLy9yZVBJT2NQdGtSSS80SldpSGg1RGxtL2p3?= =?big5?B?QWhtTkJWYUlRSjB6ZEpFMGh2dmo4WmNaVWVoMEpNRStuajF2aFQ5UHdDbml6cEtX?= =?big5?B?Z0pFUkJIczAzVVdmY2pHc243U2JsVlJDUUM5S2F3cGdLc1RRK0xxWDlSSE9BeTd2?= =?big5?Q?o890qNefLSbpRHUK?= MIME-Version: 1.0 X-OriginatorOrg: ami.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS7PR10MB5278.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 16db56bf-b1e9-4831-ceab-08da7e5e0b0a X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Aug 2022 01:32:40.3004 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 27e97857-e15f-486c-b58e-86c2b3040f93 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Ih7D7QzON45WtR5PlBJAh00mlh/rdgs0tpaiKcAOf7fD/m53dw9HcAWz4gjEn0R3cIwpGunbp4pMDF8ZUTRVow== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR10MB4329 Content-Language: zh-TW Content-Type: text/plain; charset="big5" Content-Transfer-Encoding: base64 K2NjOiBpc2FhYy53Lm9yYSwgbmF0aGFuaWVsLmwuZGVzaW1vbmUsIHN0YXIuemVuZywgemhpY2hh by5nYW8sIG1hY2llai5yYWJlZGEsIGppYXhpbi53dSwgc2l5dWFuLmZ1LCB6aGlndWFuZy5saXUs IGRhbmRhbi5iaSwgZ2FvbGltaW5nLCByZmMNCg0KSGksDQoNCkkgd291bGQgbGlrZSB0byBwcm9w b3NlIHRvIGFkZCBBbGVydCBzdGFuZGFyZCBmb3JtYXQgc3VwcG9ydCB3aGljaCBpcyBiYXNlZA0K b24gQVNGMi4wIHNwZWNpZmljYXRpb24oRFNQMDEzNikuDQpSRUY6aHR0cHM6Ly93d3cuZG10Zi5v cmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9zdGFuZGFyZHMvZG9jdW1lbnRzL0RTUDAxMzYucGRmDQoN CkNvdWxkIHlvdSBzdWdnZXN0IHdoaWNoIHBhY2thZ2UgaXMgc3VpdGFibGUgZm9yIHRoaXMgZmVh dHVyZT8NClRoZSBBc2YgQWNwaSB0YWJsZSBtYXkgYmUgZGlmZmVyZW50IGJhc2Ugb24gcGxhdGZv cm0gc3VwcG9ydCwgYnV0IG90aGVyIGZlYXR1cmUgY291bGQgIGJlIGdlbmVyaWMuDQoNClNpbmNl IEknbSBub3Qgc3VyZSB3aGljaCBwYWNrYWdlIHRvIGluY2x1ZGUgdGhpcyBmZWF0dXJlLCBJIGNy ZWF0ZSBhIHRlbXBvcmFyaWx5DQpBc2Zwa2cgdG8gaW5jbHVkZSBteSBwYXRjaC4NCkFzZiBicmFu Y2ggaW4gZm9ya2VkIGVkazIgcmVvcA0KUkVGOmh0dHBzOi8vZ2l0aHViLmNvbS9DcnlzdGFsTGVl LTc3L2VkazIvdHJlZS9BbGVydFN0YW5kYXJkRm9ybWF0U3VwcG9ydA0KDQpDdXJyZW50bHksIHRo ZSBkcml2ZXJzIGZvY3VzIG9uIGJlbG93IGZlYXR1cmVzDQoxLiBBU0YgU21idXMgYWxlcnQtcmVs YXRlIG1lc3NhZ2VzIChwcm9ncmVzcyBsb2dzIG9yIGVycm9yIGxvZ3MpDQoyLiBQdWJsaXNoIEFT RiBBQ1BJIHRhYmxlIGZvciByZW1vdGUgY29udHJvbCBhbmQgb3RoZXIgaW5mb3JtYXRpb24NCg0K RHJpdmVycyBkZXNjcmlwdGlvbjoNCkFzZiBQZWkgZHJpdmVyOiBzZW5kIEJpb3MgcHJlc2VudCBh bmQgbWVtb3J5IGluaXRpYWwgcmVsYXRlZCBtZXNzYWdlcy4NCkFzZiBEeGUgZHJpdmVyOg0KMS4g R2V0IGJvb3Qgb3B0aW9ucyBmcm9tIGRldmljZShEU1AwMTM2LCBjaDUuMiBib290IG9wdGlvbiBt ZXNzYWdlcykNCjIuIEluc3RhbGwgQXNmIEFjcGkgdGFibGUuDQozLiBSZWdpc3RlciBjYWxsYmFj ayBmdW5jdGlvbiB0aHJvdWdoIFJzY0hhbmRsZXIgUHJvdG9jb2wsIHRoZSBmdW5jdGlvbiB3aWxs DQpzZW5kIHN0YW5kYXJkIG1lc3NhZ2VzIGJhc2Ugb24gdGhlIHJlcG9ydGVkIHN0YXR1cyBjb2Rl Lg0KNC4gUmVnaXN0ZXIgY2FsbGJhY2sgZnVuY3Rpb24gb24gcmVhZHkgdG8gYm9vdCBldmVudCwg dGhpcyBmdW5jdGlvbiB3aWxsIHNlbmQNCnNldCBzeXN0ZW0gc3RhdGUoUzApIG1lc3NhZ2UgdG8g ZGV2aWNlLg0KNS4gSW5zdGFsbCBBc2YgcHJvdG9jb2wsIHRoZSBwcm90b2NvbCBpbmNsdWRlIHRo ZSBib290IG9wdGlvbnMgaW5mb3JtYXRpb24gaW4NCnN0ZXAgMSBzbyBvdGhlciBkcml2ZXJzIGNh biBnZXQgdGhlIGluZm9ybWF0aW9uLg0KDQpUaGFua3MsDQpDcnlzdGFsDQoNCi0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBDcnlzdGFsTGVlIFun9anJuKldIDxDcnlzdGFsTGVlQGFt aS5jb20+DQpTZW50OiBUdWVzZGF5LCBKdWx5IDI2LCAyMDIyIDQ6NTIgUE0NClRvOiBkZXZlbEBl ZGsyLmdyb3Vwcy5pbw0KQ2M6IERhdmlkSHNpZWggW8HCqVu0vF0gPERhdmlkSHNpZWhAYW1pLmNv bT47IENyeXN0YWxMZWUgW6f1qcm4qV0gPENyeXN0YWxMZWVAYW1pLmNvbT4NClN1YmplY3Q6IFtQ QVRDSCAxLzFdIEFzZlBrZzogQWRkIEFsZXJ0IHN0YW5kYXJkIGZvcm1hdCBzdXBwb3J0DQoNCkFs ZXJ0IFN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpY2F0aW9uKERTUDAxMzYpDQpSRUY6aHR0cHM6Ly93 d3cuZG10Zi5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9zdGFuZGFyZHMvZG9jdW1lbnRzL0RTUDAx MzYucGRmDQoNClNlbmQgc3RhbmRhcmQgYWxlcnQgbWVzc2FnZSBiYXNlIG9uIHRoZSBzdGF0dXMg Y29kZSByZXBvcnRlZCBieSBkcml2ZXJzLg0KUmVwb3J0IEFzZiBjb25maWd1cmF0aW9uIGFuZCBj YXBhYmlsaXRpZXMgaW4gQXNmIEFDUEkgdGFibGUNCg0KTW9yZSBpbmZvcm1hdGlvbjoNCkknbSBu b3Qgc3VyZSB3aGljaCBwYWNrYWdlIGlzIHN1aXRhYmxlIGZvciB0aGlzIGZlYXR1cmUuIFNvIEkg Y3JlYXRlIEFzZlBrZw0KYXMgdGVtcG9yYXJ5IGxvY2F0aW9uLg0KDQpNeSBicmFuY2ggaW4gZm9y a2VkIGVkazIgcmVvcA0KUkVGOmh0dHBzOi8vZ2l0aHViLmNvbS9DcnlzdGFsTGVlLTc3L2VkazIv dHJlZS9BbGVydFN0YW5kYXJkRm9ybWF0U3VwcG9ydA0KDQpBc2YgUGVpIGRyaXZlcjogc2VuZCBC aW9zIHByZXNlbnQgYW5kIG1lbW9yeSBpbml0aWFsIHJlbGF0ZWQgbWVzc2FnZS4NCkFzZiBEeGUg ZHJpdmVyOg0KMS4gR2V0IGJvb3Qgb3B0aW9ucyBmcm9tIGRldmljZShEU1AwMTM2LCBjaDUuMiBi b290IG9wdGlvbiBtZXNzYWdlcykNCjIuIEluc3RhbGwgQXNmIEFjcGkgdGFibGUuDQozLiBSZWdp c3RlciBjYWxsYmFjayBmdW5jdGlvbiB0aHJvdWdoIFJzY0hhbmRsZXIgUHJvdG9jb2wsIHRoZSBm dW5jdGlvbiB3aWxsDQpzZW5kIHN0YXJkYW5kIG1lc3NhZ2VzIGJhc2Ugb24gdGhlIHJlcG9ydGVk IHN0YXR1cyBjb2RlLg0KNC4gUmVnaXN0ZXIgY2FsbGJhY2sgZnVuY3Rpb24gb24gcmVhZHkgdG8g Ym9vdCBldmVudCwgdGhpcyBmdW5jdGlvbiB3aWxsIHNlbmQNCnNldCBzeXN0ZW0gc3RhdGUoUzAp IG1lc3NhZ2UgdG8gZGV2aWNlLg0KNS4gSW50YWxsIEFzZiBwcm90b2NvbCwgdGhlIHByb3RvY29s IGluY2x1ZGUgdGhlIGJvb3Qgb3B0aW9ucyBpbmZvcm1hdGlvbiBpbg0Kc3RlcCAxIGFuZCBwdXNo IGV2ZW50IGZ1bmN0aW9uIGZvciBzZW5kIG1lc3NhZ2UgdG8gZGV2aWNlLg0KDQpTaWduZWQtb2Zm LWJ5OiBDcnlzdGFsIExlZSA8Q3J5c3RhbExlZUBhbWkuY29tPg0KLS0tDQogQXNmUGtnL0FzZi9B c2ZEeGUvQXNmRHhlLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMzggKysrKysrKysrKysr KysrKysNCiBBc2ZQa2cvQXNmL0FzZkR4ZS9Bc2ZEeGVFdmVudC5jICAgICAgICAgICAgICAgICAg ICB8IDMxOSArKysrKysrKysrKysrKysrDQogQXNmUGtnL0FzZi9Bc2ZQZWkvQXNmUGVpLmMgICAg ICAgICAgICAgICAgICAgICAgICAgfCAzODQgKysrKysrKysrKysrKysrKysrKysNCiBBc2ZQa2cv TGlicmFyeS9Bc2ZBY3BpVGFibGVMaWIvQXNmQWNwaVRhYmxlTGliLmMgICB8IDIxMCArKysrKysr KysrKw0KIEFzZlBrZy9Bc2YvQXNmRHhlL0FzZkR4ZS5oICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDY3ICsrKysNCiBBc2ZQa2cvQXNmL0FzZkR4ZS9Bc2ZEeGUuaW5mICAgICAgICAgICAgICAg ICAgICAgICB8ICA1MiArKysNCiBBc2ZQa2cvQXNmL0FzZkR4ZS9Bc2ZEeGUudW5pICAgICAgICAg ICAgICAgICAgICAgICB8ICAxNSArDQogQXNmUGtnL0FzZi9Bc2ZEeGUvQXNmRHhlRXh0cmEudW5p ICAgICAgICAgICAgICAgICAgfCAgMTMgKw0KIEFzZlBrZy9Bc2YvQXNmUGVpL0FzZlBlaS5pbmYg ICAgICAgICAgICAgICAgICAgICAgIHwgIDU3ICsrKw0KIEFzZlBrZy9Bc2YvQXNmUGVpL0FzZlBl aS51bmkgICAgICAgICAgICAgICAgICAgICAgIHwgIDE1ICsNCiBBc2ZQa2cvQXNmL0FzZlBlaS9B c2ZQZWlFeHRyYS51bmkgICAgICAgICAgICAgICAgICB8ICAxMyArDQogQXNmUGtnL0FzZlBrZy5k ZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDcgKysrDQogQXNmUGtnL0Fz ZlBrZy5kc2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTkgKysrDQogQXNm UGtnL0luY2x1ZGUvQXNmTWVzc2FnZXMuaCAgICAgICAgICAgICAgICAgICAgICAgfCAxMDQgKysr KysrDQogQXNmUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9Bc2YuaCAgICAgICAgICAgICAg fCAxNDUgKysrKysrKysNCiBBc2ZQa2cvSW5jbHVkZS9MaWJyYXJ5L0FzZkFjcGlUYWJsZUxpYi5o ICAgICAgICAgICB8ICAyNiArKw0KIEFzZlBrZy9JbmNsdWRlL1Byb3RvY29sL0FzZlByb3RvY29s LmggICAgICAgICAgICAgIHwgIDU3ICsrKw0KIEFzZlBrZy9MaWJyYXJ5L0FzZkFjcGlUYWJsZUxp Yi9Bc2ZBY3BpVGFibGVMaWIuaW5mIHwgIDMwICsrDQogQXNmUGtnL0xpYnJhcnkvQXNmQWNwaVRh YmxlTGliL0FzZkFjcGlUYWJsZUxpYi51bmkgfCAgMTUgKw0KIDE5IGZpbGVzIGNoYW5nZWQsIDE5 NjYgaW5zZXJ0aW9ucygrKQ0KDQpkaWZmIC0tZ2l0IGEvQXNmUGtnL0FzZi9Bc2ZEeGUvQXNmRHhl LmMgYi9Bc2ZQa2cvQXNmL0FzZkR4ZS9Bc2ZEeGUuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmlu ZGV4IDAwMDAwMDAwMDAwMC4uMTkxOWRlYzZkMDk1DQotLS0gL2Rldi9udWxsDQorKysgYi9Bc2ZQ a2cvQXNmL0FzZkR4ZS9Bc2ZEeGUuYw0KQEAgLTAsMCArMSwzMzggQEANCisvKiogQGZpbGUNCg0K KyAgQXNmIER4ZSBkcml2ZXIgd2hpY2ggaXMgdXNlZCBmb3Igc2VuZGluZyBldmVudCByZWNvcmQg bG9nIHRvIE5JQyBvciByZWNlaXZpbmcNCg0KKyAgYm9vdCBvcHRpb24gY29tbWFuZCBmcm9tIE5J QyBhbmQgcHJvdmlkZSBpbiBBc2YgRHhlIHByb3RvY29sLg0KDQorDQoNCisgIENvcHlyaWdodCAo YykgMTk4NSAtIDIwMjIsIEFNSS4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQoNCisgIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQoNCisqKi8NCg0KKw0KDQor I2luY2x1ZGUgPEFzZkR4ZS5oPg0KDQorDQoNCitBU0ZfQk9PVF9PUFRJT04gICAgICAgICAgIGdB c2ZCb290T3B0aW9uID0geyAwLCAwLCAwLCAwLCAwLCAwLCAwIH07DQoNCitBU0ZfUFJPVE9DT0wg ICAgICAgICAgICAgIGdBc2ZQcm90b2NvbCAgID0geyBBc2ZQdXNoRXZlbnQsIE5VTEwgfTsNCg0K K0VGSV9TTUJVU19ERVZJQ0VfQUREUkVTUyAgbUZpeGVkVGFyZ2V0QWRkcmVzczsNCg0KK0VGSV9T TUJVU19IQ19QUk9UT0NPTCAgICAgKm1TbUJ1cyA9IE5VTEw7DQoNCisNCg0KKy8qKg0KDQorICBT ZW5kIG1lc3NhZ2UgdGhyb3VnaCBTbUJ1cyB0byBsYW4gY2FyZC4NCg0KKw0KDQorICBAcGFyYW1b aW5dIENvbW1hbmQgICAgICBDb21tYW5kIG9mIFN5c3RlbSBGaXJtd2FyZSBFdmVudHMuDQoNCisg IEBwYXJhbVtpbl0gTGVuZ3RoICAgICAgIExlbmd0aCBvZiB0aGUgZGF0YSBpbiBieXRlcy4NCg0K KyAgQHBhcmFtW2luXSBBc2ZFdmVudCAgICAgTWVzc2FnZSBkYXRhLg0KDQorDQoNCisgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgIFB1c2ggRXZlbnQgc3VjY2Vzc2Z1bGx5Lg0KDQorICBAcmV0dmFs IE90aGVycyAgICAgICAgICBQdXNoIEV2ZW50IGVycm9yLg0KDQorKiovDQoNCitFRklfU1RBVFVT DQoNCitFRklBUEkNCg0KK0FzZlB1c2hFdmVudCAgKA0KDQorICBJTiAgVUlOVDggIENvbW1hbmQs DQoNCisgIElOICBVSU5UTiAgTGVuZ3RoLA0KDQorICBJTiAgVUlOVDggICpBc2ZFdmVudA0KDQor ICApDQoNCit7DQoNCisgIEVGSV9TVEFUVVMgIFN0YXR1czsNCg0KKw0KDQorICBpZiAobVNtQnVz ID09IE5VTEwpIHsNCg0KKyAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KDQorICB9DQoNCisN Cg0KKyAgU3RhdHVzID0gbVNtQnVzLT5FeGVjdXRlICgNCg0KKyAgICAgICAgICAgICAgICAgICAg IG1TbUJ1cywNCg0KKyAgICAgICAgICAgICAgICAgICAgIG1GaXhlZFRhcmdldEFkZHJlc3MsDQoN CisgICAgICAgICAgICAgICAgICAgICBDb21tYW5kLA0KDQorICAgICAgICAgICAgICAgICAgICAg RWZpU21idXNXcml0ZUJsb2NrLA0KDQorICAgICAgICAgICAgICAgICAgICAgVFJVRSwNCg0KKyAg ICAgICAgICAgICAgICAgICAgICZMZW5ndGgsDQoNCisgICAgICAgICAgICAgICAgICAgICBBc2ZF dmVudA0KDQorICAgICAgICAgICAgICAgICAgICAgKTsNCg0KKyAgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KDQorICAgIERFQlVHICgoREVCVUdfRVJST1IsICJBc2ZQdXNoRXZlbnQgU3RhdHVz ID0gJXJcbiIsIFN0YXR1cykpOw0KDQorICB9DQoNCisNCg0KKyAgcmV0dXJuIFN0YXR1czsNCg0K K30NCg0KKw0KDQorLyoqDQoNCisgIFRoaXMgZnVuY3Rpb24gcHVzaGVzIHRoZSBTeXN0ZW0gRmly bXdhcmUgU3RhdGUgRXZlbnRzLg0KDQorDQoNCisgIEBwYXJhbVtpbl0gU3lzdGVtU3RhdGUgICAg U3lzdGVtIEZpcm13YXJlIFN0YXRlLg0KDQorDQoNCisqKi8NCg0KK1ZPSUQNCg0KK0VGSUFQSQ0K DQorQXNmUHVzaFN5c3RlbVN0YXRlICAoDQoNCisgIElOICBVSU5UOCAgU3lzdGVtU3RhdGUNCg0K KyAgKQ0KDQorew0KDQorICBtQXNmU3lzdGVtU3RhdGUuRXZlbnRTZW5zb3JUeXBlID0gU3lzdGVt U3RhdGU7DQoNCisgIEFzZlB1c2hFdmVudCAoDQoNCisgICAgbUFzZlN5c3RlbVN0YXRlLkNvbW1h bmQsDQoNCisgICAgbUFzZlN5c3RlbVN0YXRlLkJ5dGVDb3VudCwNCg0KKyAgICAoVUlOVDggKikm KG1Bc2ZTeXN0ZW1TdGF0ZS5TdWJDb21tYW5kKQ0KDQorICAgICk7DQoNCisgIHJldHVybjsNCg0K K30NCg0KKw0KDQorLyoqDQoNCisgIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSBTeXN0ZW0g RmlybXdhcmUgUHJvZ3Jlc3MvRXJyb3IgRXZlbnRzLg0KDQorDQoNCisgIEBwYXJhbVtpbl0gTWVz c2FnZUVycm9yTGV2ZWwgICBQcm9ncmVzcyBvciBlcnJvciBvciBzeXN0ZW0gbWFuYWdlbWVudCBt ZXNzYWdlIFR5cGUuDQoNCisgIEBwYXJhbVtpbl0gTWVzc2FnZVR5cGUgICAgICAgICBTcGVjaWZp YyBBU0YgbWVzc2FnZSB0eXBlLg0KDQorDQoNCisqKi8NCg0KK1ZPSUQNCg0KK0VGSUFQSQ0KDQor QXNmUHVzaFN5c3RlbUVycm9yUHJvZ3Jlc3NFdmVudCAgKA0KDQorICBJTiBVSU5UMzIgICAgICAg ICAgICBNZXNzYWdlRXJyb3JMZXZlbCwNCg0KKyAgSU4gQVNGX01FU1NBR0VfVFlQRSAgTWVzc2Fn ZVR5cGUNCg0KKyAgKQ0KDQorew0KDQorICBVSU5UTiAgaTsNCg0KKw0KDQorICBpZiAoKE1lc3Nh Z2VFcnJvckxldmVsICYgUGNkR2V0MzIgKFBjZEFzZk1lc3NhZ2VFcnJvckxldmVsKSkgfHwNCg0K KyAgICAgICgoZ0FzZkJvb3RPcHRpb24uQm9vdE9wdGlvbkJpdCAmIEFTRl9CT1BfQklUX0ZPUkNF X1BST0dSRVNTX0VWRU5UKSkpDQoNCisgIHsNCg0KKyAgICBmb3IgKCBpID0gMDsgaSA8IG1Bc2ZN ZXNzYWdlc1NpemU7IGkrKyApIHsNCg0KKyAgICAgIGlmICggbUFzZk1lc3NhZ2VzW2ldLlR5cGUg PT0gTWVzc2FnZVR5cGUgKSB7DQoNCisgICAgICAgIEFzZlB1c2hFdmVudCAoDQoNCisgICAgICAg ICAgbUFzZk1lc3NhZ2VzW2ldLk1lc3NhZ2UuQ29tbWFuZCwNCg0KKyAgICAgICAgICBtQXNmTWVz c2FnZXNbaV0uTWVzc2FnZS5CeXRlQ291bnQsDQoNCisgICAgICAgICAgKFVJTlQ4ICopJihtQXNm TWVzc2FnZXNbaV0uTWVzc2FnZS5TdWJDb21tYW5kKQ0KDQorICAgICAgICAgICk7DQoNCisgICAg ICAgIGJyZWFrOw0KDQorICAgICAgfQ0KDQorICAgIH0NCg0KKyAgfQ0KDQorDQoNCisgIHJldHVy bjsNCg0KK30NCg0KKw0KDQorLyoqDQoNCisgIFNlbmQgcmVsYXRlIHByb2dyZXNzIG9yIGVycm9y IG1lc3NhZ2UgdG8gbGFuIGNhcmQNCg0KKw0KDQorICBAcGFyYW1baW5dICBDb2RlVHlwZSAgICAg ICAgIEluZGljYXRlcyB0aGUgdHlwZSBvZiBzdGF0dXMgY29kZSBiZWluZyByZXBvcnRlZC4NCg0K KyAgQHBhcmFtW2luXSAgVmFsdWUgICAgICAgICAgICBEZXNjcmliZXMgdGhlIGN1cnJlbnQgc3Rh dHVzIG9mIGEgaGFyZHdhcmUgb3Igc29mdHdhcmUgZW50aXR5Lg0KDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRoaXMgaW5jbHVkZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNsYXNz IGFuZCBzdWJjbGFzcyB0aGF0IGlzIHVzZWQgdG8NCg0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjbGFzc2lmeSB0aGUgZW50aXR5IGFzIHdlbGwgYXMgYW4gb3BlcmF0aW9uLg0KDQor ICBAcGFyYW1baW5dICBJbnN0YW5jZSAgICAgICAgIFRoZSBlbnVtZXJhdGlvbiBvZiBhIGhhcmR3 YXJlIG9yIHNvZnR3YXJlIGVudGl0eSB3aXRoaW4NCg0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0aGUgc3lzdGVtLiBWYWxpZCBpbnN0YW5jZSBudW1iZXJzIHN0YXJ0IHdpdGggMS4N Cg0KKyAgQHBhcmFtW2luXSAgQ2FsbGVySWQgICAgICAgICBUaGlzIG9wdGlvbmFsIHBhcmFtZXRl ciBtYXkgYmUgdXNlZCB0byBpZGVudGlmeSB0aGUgY2FsbGVyLg0KDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGFsbG93cyB0aGUgc3RhdHVzIGNvZGUgZHJp dmVyIHRvIGFwcGx5IGRpZmZlcmVudCBydWxlcyB0bw0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRpZmZlcmVudCBjYWxsZXJzLg0KDQorICBAcGFyYW1baW5dICBEYXRhICAgICAg ICAgICAgIFRoaXMgb3B0aW9uYWwgcGFyYW1ldGVyIG1heSBiZSB1c2VkIHRvIHBhc3MgYWRkaXRp b25hbCBkYXRhLg0KDQorDQoNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgUmVwb3J0 ZWQgYWxsIHRoZSBwcm9ncmVzcyBhbmQgZXJyb3IgY29kZXMgZm9yIEFzZiBzdWNjZXNzZnVsbHku DQoNCisqKi8NCg0KK0VGSV9TVEFUVVMNCg0KK0VGSUFQSQ0KDQorQXNmUnNjSGFuZGxlckNhbGxi YWNrICgNCg0KKyAgSU4gRUZJX1NUQVRVU19DT0RFX1RZUEUgICBDb2RlVHlwZSwNCg0KKyAgSU4g RUZJX1NUQVRVU19DT0RFX1ZBTFVFICBWYWx1ZSwNCg0KKyAgSU4gVUlOVDMyICAgICAgICAgICAg ICAgICBJbnN0YW5jZSwNCg0KKyAgSU4gRUZJX0dVSUQgICAgICAgICAgICAgICAqQ2FsbGVySWQs DQoNCisgIElOIEVGSV9TVEFUVVNfQ09ERV9EQVRBICAgKkRhdGENCg0KKyAgKQ0KDQorew0KDQor ICBVSU5UTiAgSW5kZXg7DQoNCisNCg0KKyAgaWYgKChDb2RlVHlwZSAmIEVGSV9TVEFUVVNfQ09E RV9UWVBFX01BU0spID09IEVGSV9QUk9HUkVTU19DT0RFKSB7DQoNCisgICAgZm9yIChJbmRleCA9 IDA7IEluZGV4IDwgbU1zZ1Byb2dyZXNzTWFwU2l6ZTsgSW5kZXgrKykgew0KDQorICAgICAgaWYg KG1Nc2dQcm9ncmVzc01hcFtJbmRleF0uU3RhdHVzQ29kZSA9PSBWYWx1ZSkgew0KDQorICAgICAg ICBBc2ZQdXNoU3lzdGVtRXJyb3JQcm9ncmVzc0V2ZW50IChNRVNTQUdFX0VSUk9SX0xFVkVMX1BS T0dSRVNTLCBtTXNnUHJvZ3Jlc3NNYXBbSW5kZXhdLk1lc3NhZ2VUeXBlKTsNCg0KKyAgICAgICAg YnJlYWs7DQoNCisgICAgICB9DQoNCisgICAgfQ0KDQorICB9DQoNCisNCg0KKyAgaWYgKChDb2Rl VHlwZSAmIEVGSV9TVEFUVVNfQ09ERV9UWVBFX01BU0spID09IEVGSV9FUlJPUl9DT0RFKSB7DQoN CisgICAgZm9yICggSW5kZXggPSAwOyBJbmRleCA8IG1Nc2dFcnJvck1hcFNpemU7IEluZGV4Kysg KSB7DQoNCisgICAgICBpZiAoIG1Nc2dFcnJvck1hcFtJbmRleF0uU3RhdHVzQ29kZSA9PSBWYWx1 ZSApIHsNCg0KKyAgICAgICAgQXNmUHVzaFN5c3RlbUVycm9yUHJvZ3Jlc3NFdmVudCAoTUVTU0FH RV9FUlJPUl9MRVZFTF9FUlJPUiwgbU1zZ0Vycm9yTWFwW0luZGV4XS5NZXNzYWdlVHlwZSk7DQoN CisgICAgICAgIGJyZWFrOw0KDQorICAgICAgfQ0KDQorICAgIH0NCg0KKyAgfQ0KDQorDQoNCisg IHJldHVybiBFRklfU1VDQ0VTUzsNCg0KK30NCg0KKw0KDQorLyoqDQoNCisgIFRoaXMgZnVuY3Rp b24gaXNzdWVzIHRoZSBBU0YgR2V0L0NsZWFyIEJvb3QgT3B0aW9uIGNvbW1hbmQuDQoNCisNCg0K KyAgQHJldHZhbCBFRklfU1VDQ0VTUyBSZXBvcnRlZCBhbGwgdGhlIHByb2dyZXNzIGFuZCBlcnJv ciBjb2RlcyBmb3IgQXNmIHN1Y2Nlc3NmdWxseS4NCg0KKyAgQHJldHZhbCBPdGhlcnMgICAgICBT bWJ1cyBFeGVjdXRlIGZ1bmN0aW9uIHJldHVybiBlcnJvci4NCg0KKyoqLw0KDQorRUZJX1NUQVRV Uw0KDQorRUZJQVBJDQoNCitBc2ZHZXRCb290T3B0aW9uICgNCg0KKyAgSU4gIEVGSV9TTUJVU19E RVZJQ0VfQUREUkVTUyAgQXNmU2xhdmVBZGRyZXNzDQoNCisgICkNCg0KK3sNCg0KKyAgRUZJX1NU QVRVUyAgICAgICBTdGF0dXM7DQoNCisgIFVJTlROICAgICAgICAgICAgTGVuZ3RoID0gc2l6ZW9m IChBU0ZfQk9PVF9PUFRJT04pOw0KDQorICBBU0ZfQk9PVF9PUFRJT04gIEJvb3RPcHRpb247DQoN CisNCg0KKyAgLy8gSW5pdGlhbGl6ZSBnZXQgYm9vdCBvcHRpb24gQnVmZmVyLg0KDQorICBTZXRN ZW0gKCZCb290T3B0aW9uLCBzaXplb2YgKEFTRl9CT09UX09QVElPTiksIDApOw0KDQorDQoNCisg IC8vIEV4ZWN1dGUgQVNGTVNHX0NNRF9DT05GSUcgY29tbWFuZC4NCg0KKyAgU3RhdHVzID0gbVNt QnVzLT5FeGVjdXRlICgNCg0KKyAgICAgICAgICAgICAgICAgICAgIG1TbUJ1cywNCg0KKyAgICAg ICAgICAgICAgICAgICAgIEFzZlNsYXZlQWRkcmVzcywNCg0KKyAgICAgICAgICAgICAgICAgICAg IEFTRk1TR19DTURfQ09ORklHLA0KDQorICAgICAgICAgICAgICAgICAgICAgRWZpU21idXNSZWFk QmxvY2ssDQoNCisgICAgICAgICAgICAgICAgICAgICBUUlVFLA0KDQorICAgICAgICAgICAgICAg ICAgICAgJkxlbmd0aCwNCg0KKyAgICAgICAgICAgICAgICAgICAgICZCb290T3B0aW9uDQoNCisg ICAgICAgICAgICAgICAgICAgICApOw0KDQorICBpZiAoIEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K DQorICAgIHJldHVybiBTdGF0dXM7DQoNCisgIH0NCg0KKw0KDQorICBpZiAoIEJvb3RPcHRpb24u U3ViQ29tbWFuZCA9PSBBU0ZNU0dfU1VCQ01EX1JFVF9CT09UX09QVElPTiApIHsNCg0KKyAgICAv LyBjb3B5IFJldHVybiBCb290IE9wdGlvbiB0byBnbG9iYWwgQVNGIEJvb3QgT3B0aW9uIGJ1ZmZl ci4NCg0KKyAgICBDb3B5TWVtICgmZ0FzZkJvb3RPcHRpb24sICZCb290T3B0aW9uLCBzaXplb2Yg KEFTRl9CT09UX09QVElPTikpOw0KDQorICAgIGdBc2ZQcm90b2NvbC5Cb290T3B0aW9uID0gJmdB c2ZCb290T3B0aW9uOw0KDQorICAgIC8vIEV4ZWN1dGUgQ2xlYXIgQm9vdCBPcHRpb24gY29tbWFu ZC4NCg0KKyAgICBCb290T3B0aW9uLlN1YkNvbW1hbmQgPSBBU0ZNU0dfU1VCQ01EX0NMUl9CT09U X09QVElPTjsNCg0KKyAgICBCb290T3B0aW9uLlZlcnNpb24gICAgPSAweDEwOw0KDQorICAgIExl bmd0aCAgICAgICAgICAgICAgICA9IDI7DQoNCisgICAgbVNtQnVzLT5FeGVjdXRlICgNCg0KKyAg ICAgICAgICAgICAgbVNtQnVzLA0KDQorICAgICAgICAgICAgICBBc2ZTbGF2ZUFkZHJlc3MsDQoN CisgICAgICAgICAgICAgIEFTRk1TR19DTURfQ09ORklHLA0KDQorICAgICAgICAgICAgICBFZmlT bWJ1c1dyaXRlQmxvY2ssDQoNCisgICAgICAgICAgICAgIFRSVUUsDQoNCisgICAgICAgICAgICAg ICZMZW5ndGgsDQoNCisgICAgICAgICAgICAgICZCb290T3B0aW9uDQoNCisgICAgICAgICAgICAg ICk7DQoNCisgIH0NCg0KKw0KDQorICByZXR1cm4gU3RhdHVzOw0KDQorfQ0KDQorDQoNCisvKioN Cg0KKyAgVGhpcyBFdmVudCBDYWxsYmFjayBwcm9jZXNzZXMgdGhlIHJlcXVlc3RzIGF0IEVGSSBS ZWFkeSB0byBCb290IEV2ZW50IHRyaWdnZXJlZC4NCg0KKw0KDQorICBAcGFyYW1baW5dICBFdmVu dCAgICAgIEEgcG9pbnRlciB0byB0aGUgRXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGNhbGxiYWNr Lg0KDQorICBAcGFyYW1baW5dICBDb250ZXh0ICAgIEEgcG9pbnRlciB0byBwcml2YXRlIGRhdGEg cmVnaXN0ZXJlZCB3aXRoIHRoZSBjYWxsYmFjayBmdW5jdGlvbi4NCg0KKyoqLw0KDQorVk9JRA0K DQorRUZJQVBJDQoNCitBc2ZSZWFkeVRvQm9vdEV2ZW50ICgNCg0KKyAgSU4gIEVGSV9FVkVOVCAg RXZlbnQsDQoNCisgIElOICBWT0lEICAgICAgICpDb250ZXh0DQoNCisgICkNCg0KK3sNCg0KKyAg Ly8gUHVzaCBTeXN0ZW0gU3RhdGUgUzAgLSAiV29ya2luZyIuDQoNCisgIEFzZlB1c2hTeXN0ZW1T dGF0ZSAoQVNGTVNHX1NZU1RFTV9TVEFURV9TMCk7DQoNCisNCg0KKyAgZ0JTLT5DbG9zZUV2ZW50 IChFdmVudCk7DQoNCisgIHJldHVybjsNCg0KK30NCg0KKw0KDQorLyoqDQoNCisgICAgUmVnaXN0 ZXIgY2FsbGJhY2sgaWYgQWNwaSBwcm90b2NvbCBpcyBub3QgcmVhZHksIGVsc2UgaW5zdGFsbCBB U0YgYWNwaSB0YWJsZSBkaXJlY3RseS4NCg0KKw0KDQorKiovDQoNCitWT0lEDQoNCitFRklBUEkN Cg0KK0luc3RhbGxBc2ZBY3BpVGFibGUgKA0KDQorICBWT0lEDQoNCisgICkNCg0KK3sNCg0KKyAg RUZJX1NUQVRVUyAgICAgICAgICAgICAgIFN0YXR1czsNCg0KKyAgRUZJX0VWRU5UICAgICAgICAg ICAgICAgIEV2ZW50Ow0KDQorICBWT0lEICAgICAgICAgICAgICAgICAgICAgKlJlZ2lzdHJhdGlv bjsNCg0KKyAgRUZJX0FDUElfVEFCTEVfUFJPVE9DT0wgICpBY3BpVGFibGVQcm90b2NvbDsNCg0K Kw0KDQorICBTdGF0dXMgPSBnQlMtPkxvY2F0ZVByb3RvY29sICgmZ0VmaUFjcGlUYWJsZVByb3Rv Y29sR3VpZCwgTlVMTCwgKFZPSUQgKiopJkFjcGlUYWJsZVByb3RvY29sKTsNCg0KKyAgaWYgKCFF RklfRVJST1IgKFN0YXR1cykpIHsNCg0KKyAgICBJbnN0YWxsQXNmQWNwaVRhYmxlRXZlbnQgKE5V TEwsIE5VTEwpOw0KDQorICB9IGVsc2Ugew0KDQorICAgIFN0YXR1cyA9IGdCUy0+Q3JlYXRlRXZl bnQgKA0KDQorICAgICAgICAgICAgICAgICAgICBFVlRfTk9USUZZX1NJR05BTCwNCg0KKyAgICAg ICAgICAgICAgICAgICAgVFBMX0NBTExCQUNLLA0KDQorICAgICAgICAgICAgICAgICAgICBJbnN0 YWxsQXNmQWNwaVRhYmxlRXZlbnQsDQoNCisgICAgICAgICAgICAgICAgICAgIE5VTEwsDQoNCisg ICAgICAgICAgICAgICAgICAgICZFdmVudA0KDQorICAgICAgICAgICAgICAgICAgICApOw0KDQor DQoNCisgICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCg0KKyAgICAgIFN0YXR1cyA9IGdC Uy0+UmVnaXN0ZXJQcm90b2NvbE5vdGlmeSAoDQoNCisgICAgICAgICAgICAgICAgICAgICAgJmdF ZmlBY3BpVGFibGVQcm90b2NvbEd1aWQsDQoNCisgICAgICAgICAgICAgICAgICAgICAgRXZlbnQs DQoNCisgICAgICAgICAgICAgICAgICAgICAgJlJlZ2lzdHJhdGlvbg0KDQorICAgICAgICAgICAg ICAgICAgICAgICk7DQoNCisNCg0KKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCg0K KyAgICAgICAgZ0JTLT5DbG9zZUV2ZW50IChFdmVudCk7DQoNCisgICAgICB9DQoNCisgICAgfQ0K DQorICB9DQoNCisNCg0KKyAgcmV0dXJuOw0KDQorfQ0KDQorDQoNCisvKioNCg0KKyAgVGhpcyBp cyB0aGUgc3RhbmRhcmQgRUZJIGRyaXZlciBlbnRyeSBwb2ludCBmb3IgRFhFIHBoYXNlIG9mIEFT Ri4NCg0KKw0KDQorICBAcGFyYW1baW5dIEltYWdlSGFuZGxlICAgSW1hZ2UgaGFuZGxlIG9mIHRo ZSBsb2FkZWQgZHJpdmVyDQoNCisgIEBwYXJhbVtpbl0gU3lzdGVtVGFibGUgICBQb2ludGVyIHRv IHRoZSBTeXN0ZW0gVGFibGUNCg0KKw0KDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgVGhp cyBkcml2ZXIgaW5pdGlhbCBjb3JyZWN0bHkNCg0KKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAg IFRoaXMgZHJpdmVyIGluaXRpYWwgZmFpbA0KDQorKiovDQoNCitFRklfU1RBVFVTDQoNCitFRklB UEkNCg0KK0FzZkR4ZUVudHJ5ICgNCg0KKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5k bGUsDQoNCisgIElOIEVGSV9TWVNURU1fVEFCTEUgICpTeXN0ZW1UYWJsZQ0KDQorICApDQoNCit7 DQoNCisgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0KDQorICBFRklfUlNDX0hB TkRMRVJfUFJPVE9DT0wgICpSc2NIYW5kbGVyOw0KDQorICBFRklfRVZFTlQgICAgICAgICAgICAg ICAgIEFzZkVmaVJlYWR5VG9Cb290RXZlbnQ7DQoNCisNCg0KKyAgU3RhdHVzID0gZ0JTLT5Mb2Nh dGVQcm90b2NvbCAoJmdFZmlTbWJ1c0hjUHJvdG9jb2xHdWlkLCBOVUxMLCAoVk9JRCAqKikmbVNt QnVzKTsNCg0KKyAgaWYgKCBFRklfRVJST1IgKFN0YXR1cykpIHsNCg0KKyAgICByZXR1cm4gU3Rh dHVzOw0KDQorICB9DQoNCisNCg0KKyAgbUZpeGVkVGFyZ2V0QWRkcmVzcy5TbWJ1c0RldmljZUFk ZHJlc3MgPSBQY2RHZXQ4IChQY2RTbWJ1c1NsYXZlQWRkcmVzc0ZvckRhc2hMYW4pID4+IDE7DQoN CisgIGlmIChtRml4ZWRUYXJnZXRBZGRyZXNzLlNtYnVzRGV2aWNlQWRkcmVzcyA9PSAwKSB7DQoN CisgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCg0KKyAgfQ0KDQorDQoNCisgIFN0YXR1cyA9 IEFzZkdldEJvb3RPcHRpb24gKG1GaXhlZFRhcmdldEFkZHJlc3MpOw0KDQorICBpZiAoIEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KDQorICAgIHJldHVybiBTdGF0dXM7DQoNCisgIH0NCg0KKw0KDQor ICBJbnN0YWxsQXNmQWNwaVRhYmxlICgpOw0KDQorDQoNCisgIC8vIFNlbmQgbW90aGVyIGJvYXJk IGluaXRpYWxpemF0aW9uIG1lc3NhZ2UuDQoNCisgIEFzZlB1c2hTeXN0ZW1FcnJvclByb2dyZXNz RXZlbnQgKE1FU1NBR0VfRVJST1JfTEVWRUxfUFJPR1JFU1MsIE1zZ01vdGhlckJvYXJkSW5pdCk7 DQoNCisNCg0KKyAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVQcm90b2NvbCAoJmdFZmlSc2NIYW5kbGVy UHJvdG9jb2xHdWlkLCBOVUxMLCAoVk9JRCAqKikmUnNjSGFuZGxlcik7DQoNCisgIGlmICghRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQoNCisgICAgUnNjSGFuZGxlci0+UmVnaXN0ZXIgKEFzZlJzY0hh bmRsZXJDYWxsYmFjaywgVFBMX0NBTExCQUNLKTsNCg0KKyAgfQ0KDQorDQoNCisgIEVmaUNyZWF0 ZUV2ZW50UmVhZHlUb0Jvb3RFeCAoDQoNCisgICAgVFBMX0NBTExCQUNLLA0KDQorICAgIEFzZlJl YWR5VG9Cb290RXZlbnQsDQoNCisgICAgTlVMTCwNCg0KKyAgICAmQXNmRWZpUmVhZHlUb0Jvb3RF dmVudA0KDQorICAgICk7DQoNCisNCg0KKyAgZ0JTLT5JbnN0YWxsUHJvdG9jb2xJbnRlcmZhY2Ug KA0KDQorICAgICAgICAgJkltYWdlSGFuZGxlLCBcDQoNCisgICAgICAgICAmZ0FzZlByb3RvY29s R3VpZCwNCg0KKyAgICAgICAgIEVGSV9OQVRJVkVfSU5URVJGQUNFLA0KDQorICAgICAgICAgJmdB c2ZQcm90b2NvbA0KDQorICAgICAgICAgKTsNCg0KKw0KDQorICByZXR1cm4gRUZJX1NVQ0NFU1M7 DQoNCit9DQoNCmRpZmYgLS1naXQgYS9Bc2ZQa2cvQXNmL0FzZkR4ZS9Bc2ZEeGVFdmVudC5jIGIv QXNmUGtnL0FzZi9Bc2ZEeGUvQXNmRHhlRXZlbnQuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmlu ZGV4IDAwMDAwMDAwMDAwMC4uNjQyNjVjNmQ1YzNjDQotLS0gL2Rldi9udWxsDQorKysgYi9Bc2ZQ a2cvQXNmL0FzZkR4ZS9Bc2ZEeGVFdmVudC5jDQpAQCAtMCwwICsxLDMxOSBAQA0KKy8qKiBAZmls ZQ0KDQorICBBc2YgbWVzc2FnZXMgZGVmaW5lDQoNCisNCg0KKyAgQ29weXJpZ2h0IChjKSAxOTg1 IC0gMjAyMiwgQU1JLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCg0KKyAgU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCg0KKyoqLw0KDQorDQoNCisjaW5jbHVk ZSA8QXNmRHhlLmg+DQoNCisNCg0KK01FU1NBR0VfREFUQV9IVUJfTUFQICBtTXNnUHJvZ3Jlc3NN YXBbXSA9IHsNCg0KKyAgeyBNc2dIZGRJbml0LCAgICAgICAgICAgRUZJX1BFUklQSEVSQUxfRklY RURfTUVESUEgfCBFRklfUF9QQ19FTkFCTEUgICAgICAgICAgICAgfSwNCg0KKyAgeyBNc2dBcElu aXQsICAgICAgICAgICAgRUZJX0NPTVBVVElOR19VTklUX0hPU1RfUFJPQ0VTU09SIHwgRUZJX0NV X0hQX1BDX0FQX0lOSVQgfSwNCg0KKyAgeyBNc2dVc2VySW5pdFNldHVwLCAgICAgRUZJX1NPRlRX QVJFX0RYRV9CU19EUklWRVIgfCBFRklfU1dfUENfVVNFUl9TRVRVUCAgICAgICAgfSwNCg0KKyAg eyBNc2dVc2JSZXNvdXJjZUNvbmZpZywgRUZJX0lPX0JVU19VU0IgfCBFRklfUF9QQ19FTkFCTEUg ICAgICAgICAgICAgICAgICAgICAgICAgfSwNCg0KKyAgeyBNc2dQY2lSZXNvdXJjZUNvbmZpZywg RUZJX0lPX0JVU19QQ0kgfCBFRklfSU9CX1BDSV9CVVNfRU5VTSAgICAgICAgICAgICAgICAgICAg fSwNCg0KKyAgeyBNc2dWaWRlb0luaXQsICAgICAgICAgRUZJX1BFUklQSEVSQUxfTE9DQUxfQ09O U09MRSB8IEVGSV9QX1BDX0VOQUJMRSAgICAgICAgICAgfSwNCg0KKyAgeyBNc2dLYmNJbml0LCAg ICAgICAgICAgRUZJX1BFUklQSEVSQUxfS0VZQk9BUkQgfCBFRklfUF9QQ19FTkFCTEUgICAgICAg ICAgICAgICAgfSwNCg0KKyAgeyBNc2dLYmNUZXN0LCAgICAgICAgICAgRUZJX1BFUklQSEVSQUxf S0VZQk9BUkQgfCBFRklfUF9LRVlCT0FSRF9QQ19TRUxGX1RFU1QgICAgfQ0KDQorfTsNCg0KKw0K DQorTUVTU0FHRV9EQVRBX0hVQl9NQVAgIG1Nc2dFcnJvck1hcFtdID0gew0KDQorICB7IE1zZ05v VmlkZW8sICAgIEVGSV9QRVJJUEhFUkFMX0xPQ0FMX0NPTlNPTEUgfCBFRklfUF9FQ19OT1RfREVU RUNURUQgfSwNCg0KKyAgeyBNc2dLYmRGYWlsdXJlLCBFRklfUEVSSVBIRVJBTF9LRVlCT0FSRCB8 IEVGSV9QX0VDX05PVF9ERVRFQ1RFRCAgICAgIH0sDQoNCisgIHsgTXNnSGRkRmFpbHVyZSwgRUZJ X1BFUklQSEVSQUxfRklYRURfTUVESUEgfCBFRklfUF9FQ19OT1RfREVURUNURUQgICB9DQoNCit9 Ow0KDQorDQoNCitBU0ZfTUVTU0FHRSAgbUFzZk1lc3NhZ2VzW10gPSB7DQoNCisgIHsNCg0KKyAg ICBNc2dIZGRJbml0LA0KDQorICAgIHsNCg0KKyAgICAgIEFTRk1TR19DT01NQU5EX01FU1NBR0lO RywNCg0KKyAgICAgIDB4MGQsIC8vIEJ5dGVDb3VudA0KDQorICAgICAgQVNGTVNHX1NVQkNPTU1B TkRfTk9fUkVUUkFOU01JVCwNCg0KKyAgICAgIEFTRk1TR19WRVJTSU9OX05VTUJFUl8xMCwNCg0K KyAgICAgIEFTRk1TR19FVkVOVF9TRU5TT1JfVFlQRV9GV19FUlJPUl9QUk9HUkVTUywNCg0KKyAg ICAgIEFTRk1TR19FVkVOVF9UWVBFX1NFTlNPUl9TUEVDSUZJQywNCg0KKyAgICAgIEFTRk1TR19F VkVOVF9PRkZTRVRfU1lTX0ZXX1BST0dSRVNTX0VOVFJZLA0KDQorICAgICAgQVNGTVNHX0VWRU5U X1NPVVJDRV9UWVBFX0FTRjEwLA0KDQorICAgICAgQVNGTVNHX0VWRU5UX1NFVkVSSVRZX05PTl9D UklUSUNBTCwNCg0KKyAgICAgIEFTRk1TR19TRU5TT1JfREVWSUNFX1VOU1BFQ0lGSUVELA0KDQor ICAgICAgQVNGTVNHX1NFTlNPUl9OVU1CRVJfVU5TUEVDSUZJRUQsDQoNCisgICAgICBBU0ZNU0df RU5USVRZX0RJU0ssDQoNCisgICAgICBBU0ZNU0dfRU5USVRZX0lOU1RBTkNFX1VOU1BFQ0lGSUVE LA0KDQorICAgICAgQVNGTVNHX0VWRU5UX0RBVEExLA0KDQorICAgICAgQVNGTVNHX0VWRU5UX0RB VEFfSEFSRF9ESVNLX0lOSVRJQUxJWkFUSU9ODQoNCisgICAgfQ0KDQorICB9LA0KDQorICB7DQoN CisgICAgTXNnQXBJbml0LA0KDQorICAgIHsNCg0KKyAgICAgIEFTRk1TR19DT01NQU5EX01FU1NB R0lORywNCg0KKyAgICAgIDB4MGQsIC8vIEJ5dGVDb3VudA0KDQorICAgICAgQVNGTVNHX1NVQkNP TU1BTkRfTk9fUkVUUkFOU01JVCwNCg0KKyAgICAgIEFTRk1TR19WRVJTSU9OX05VTUJFUl8xMCwN Cg0KKyAgICAgIEFTRk1TR19FVkVOVF9TRU5TT1JfVFlQRV9GV19FUlJPUl9QUk9HUkVTUywNCg0K KyAgICAgIEFTRk1TR19FVkVOVF9UWVBFX1NFTlNPUl9TUEVDSUZJQywNCg0KKyAgICAgIEFTRk1T R19FVkVOVF9PRkZTRVRfU1lTX0ZXX1BST0dSRVNTX0VOVFJZLA0KDQorICAgICAgQVNGTVNHX0VW RU5UX1NPVVJDRV9UWVBFX0FTRjEwLA0KDQorICAgICAgQVNGTVNHX0VWRU5UX1NFVkVSSVRZX05P Tl9DUklUSUNBTCwNCg0KKyAgICAgIEFTRk1TR19TRU5TT1JfREVWSUNFX1VOU1BFQ0lGSUVELA0K DQorICAgICAgQVNGTVNHX1NFTlNPUl9OVU1CRVJfVU5TUEVDSUZJRUQsDQoNCisgICAgICBBU0ZN U0dfRU5USVRZX1BST0NFU1NPUiwNCg0KKyAgICAgIEFTRk1TR19FTlRJVFlfSU5TVEFOQ0VfVU5T UEVDSUZJRUQsDQoNCisgICAgICBBU0ZNU0dfRVZFTlRfREFUQTEsDQoNCisgICAgICBBU0ZNU0df RVZFTlRfREFUQV9BUF9JTklUSUFMSVpBVElPTg0KDQorICAgIH0NCg0KKyAgfSwNCg0KKyAgew0K DQorICAgIE1zZ1VzZXJJbml0U2V0dXAsDQoNCisgICAgew0KDQorICAgICAgQVNGTVNHX0NPTU1B TkRfTUVTU0FHSU5HLA0KDQorICAgICAgMHgwZCwgLy8gQnl0ZUNvdW50DQoNCisgICAgICBBU0ZN U0dfU1VCQ09NTUFORF9OT19SRVRSQU5TTUlULA0KDQorICAgICAgQVNGTVNHX1ZFUlNJT05fTlVN QkVSXzEwLA0KDQorICAgICAgQVNGTVNHX0VWRU5UX1NFTlNPUl9UWVBFX0ZXX0VSUk9SX1BST0dS RVNTLA0KDQorICAgICAgQVNGTVNHX0VWRU5UX1RZUEVfU0VOU09SX1NQRUNJRklDLA0KDQorICAg ICAgQVNGTVNHX0VWRU5UX09GRlNFVF9TWVNfRldfUFJPR1JFU1NfRU5UUlksDQoNCisgICAgICBB U0ZNU0dfRVZFTlRfU09VUkNFX1RZUEVfQVNGMTAsDQoNCisgICAgICBBU0ZNU0dfRVZFTlRfU0VW RVJJVFlfTk9OX0NSSVRJQ0FMLA0KDQorICAgICAgQVNGTVNHX1NFTlNPUl9ERVZJQ0VfVU5TUEVD SUZJRUQsDQoNCisgICAgICBBU0ZNU0dfU0VOU09SX05VTUJFUl9VTlNQRUNJRklFRCwNCg0KKyAg ICAgIEFTRk1TR19FTlRJVFlfQklPUywNCg0KKyAgICAgIEFTRk1TR19FTlRJVFlfSU5TVEFOQ0Vf VU5TUEVDSUZJRUQsDQoNCisgICAgICBBU0ZNU0dfRVZFTlRfREFUQTEsDQoNCisgICAgICBBU0ZN U0dfRVZFTlRfREFUQV9TRVRVUF9JTklUSUFMSVpBVElPTg0KDQorICAgIH0NCg0KKyAgfSwNCg0K KyAgew0KDQorICAgIE1zZ1VzYlJlc291cmNlQ29uZmlnLA0KDQorICAgIHsNCg0KKyAgICAgIEFT Rk1TR19DT01NQU5EX01FU1NBR0lORywNCg0KKyAgICAgIDB4MGQsIC8vIEJ5dGVDb3VudA0KDQor ICAgICAgQVNGTVNHX1NVQkNPTU1BTkRfTk9fUkVUUkFOU01JVCwNCg0KKyAgICAgIEFTRk1TR19W RVJTSU9OX05VTUJFUl8xMCwNCg0KKyAgICAgIEFTRk1TR19FVkVOVF9TRU5TT1JfVFlQRV9GV19F UlJPUl9QUk9HUkVTUywNCg0KKyAgICAgIEFTRk1TR19FVkVOVF9UWVBFX1NFTlNPUl9TUEVDSUZJ QywNCg0KKyAgICAgIEFTRk1TR19FVkVOVF9PRkZTRVRfU1lTX0ZXX1BST0dSRVNTX0VOVFJZLA0K DQorICAgICAgQVNGTVNHX0VWRU5UX1NPVVJDRV9UWVBFX0FTRjEwLA0KDQorICAgICAgQVNGTVNH X0VWRU5UX1NFVkVSSVRZX05PTl9DUklUSUNBTCwNCg0KKyAgICAgIEFTRk1TR19TRU5TT1JfREVW SUNFX1VOU1BFQ0lGSUVELA0KDQorICAgICAgQVNGTVNHX1NFTlNPUl9OVU1CRVJfVU5TUEVDSUZJ RUQsDQoNCisgICAgICBBU0ZNU0dfRU5USVRZX0JJT1MsDQoNCisgICAgICBBU0ZNU0dfRU5USVRZ X0lOU1RBTkNFX1VOU1BFQ0lGSUVELA0KDQorICAgICAgQVNGTVNHX0VWRU5UX0RBVEExLA0KDQor ICAgICAgQVNGTVNHX0VWRU5UX0RBVEFfVVNCX1JFU09VUkNFX0NPTkZJRw0KDQorICAgIH0NCg0K KyAgfSwNCg0KKyAgew0KDQorICAgIE1zZ1BjaVJlc291cmNlQ29uZmlnLA0KDQorICAgIHsNCg0K KyAgICAgIEFTRk1TR19DT01NQU5EX01FU1NBR0lORywNCg0KKyAgICAgIDB4MGQsIC8vIEJ5dGVD b3VudA0KDQorICAgICAgQVNGTVNHX1NVQkNPTU1BTkRfTk9fUkVUUkFOU01JVCwNCg0KKyAgICAg IEFTRk1TR19WRVJTSU9OX05VTUJFUl8xMCwNCg0KKyAgICAgIEFTRk1TR19FVkVOVF9TRU5TT1Jf VFlQRV9GV19FUlJPUl9QUk9HUkVTUywNCg0KKyAgICAgIEFTRk1TR19FVkVOVF9UWVBFX1NFTlNP Ul9TUEVDSUZJQywNCg0KKyAgICAgIEFTRk1TR19FVkVOVF9PRkZTRVRfU1lTX0ZXX1BST0dSRVNT X0VOVFJZLA0KDQorICAgICAgQVNGTVNHX0VWRU5UX1NPVVJDRV9UWVBFX0FTRjEwLA0KDQorICAg ICAgQVNGTVNHX0VWRU5UX1NFVkVSSVRZX05PTl9DUklUSUNBTCwNCg0KKyAgICAgIEFTRk1TR19T RU5TT1JfREVWSUNFX1VOU1BFQ0lGSUVELA0KDQorICAgICAgQVNGTVNHX1NFTlNPUl9OVU1CRVJf VU5TUEVDSUZJRUQsDQoNCisgICAgICBBU0ZNU0dfRU5USVRZX0JJT1MsDQoNCisgICAgICBBU0ZN U0dfRU5USVRZX0lOU1RBTkNFX1VOU1BFQ0lGSUVELA0KDQorICAgICAgQVNGTVNHX0VWRU5UX0RB VEExLA0KDQorICAgICAgQVNGTVNHX0VWRU5UX0RBVEFfUENJX1JFU09VUkNFX0NPTkZJRw0KDQor ICAgIH0NCg0KKyAgfSwNCg0KKyAgew0KDQorICAgIE1zZ1ZpZGVvSW5pdCwNCg0KKyAgICB7DQoN CisgICAgICBBU0ZNU0dfQ09NTUFORF9NRVNTQUdJTkcsDQoNCisgICAgICAweDBkLCAvLyBCeXRl Q291bnQNCg0KKyAgICAgIEFTRk1TR19TVUJDT01NQU5EX05PX1JFVFJBTlNNSVQsDQoNCisgICAg ICBBU0ZNU0dfVkVSU0lPTl9OVU1CRVJfMTAsDQoNCisgICAgICBBU0ZNU0dfRVZFTlRfU0VOU09S X1RZUEVfRldfRVJST1JfUFJPR1JFU1MsDQoNCisgICAgICBBU0ZNU0dfRVZFTlRfVFlQRV9TRU5T T1JfU1BFQ0lGSUMsDQoNCisgICAgICBBU0ZNU0dfRVZFTlRfT0ZGU0VUX1NZU19GV19QUk9HUkVT U19FTlRSWSwNCg0KKyAgICAgIEFTRk1TR19FVkVOVF9TT1VSQ0VfVFlQRV9BU0YxMCwNCg0KKyAg ICAgIEFTRk1TR19FVkVOVF9TRVZFUklUWV9OT05fQ1JJVElDQUwsDQoNCisgICAgICBBU0ZNU0df U0VOU09SX0RFVklDRV9VTlNQRUNJRklFRCwNCg0KKyAgICAgIEFTRk1TR19TRU5TT1JfTlVNQkVS X1VOU1BFQ0lGSUVELA0KDQorICAgICAgQVNGTVNHX0VOVElUWV9BRERfSU5fQ0FSRCwNCg0KKyAg ICAgIEFTRk1TR19FTlRJVFlfSU5TVEFOQ0VfVU5TUEVDSUZJRUQsDQoNCisgICAgICBBU0ZNU0df RVZFTlRfREFUQTEsDQoNCisgICAgICBBU0ZNU0dfRVZFTlRfREFUQV9WSURFT19JTklUSUFMSVpB VElPTg0KDQorICAgIH0NCg0KKyAgfSwNCg0KKyAgew0KDQorICAgIE1zZ0tiY0luaXQsDQoNCisg ICAgew0KDQorICAgICAgQVNGTVNHX0NPTU1BTkRfTUVTU0FHSU5HLA0KDQorICAgICAgMHgwZCwg Ly8gQnl0ZUNvdW50DQoNCisgICAgICBBU0ZNU0dfU1VCQ09NTUFORF9OT19SRVRSQU5TTUlULA0K DQorICAgICAgQVNGTVNHX1ZFUlNJT05fTlVNQkVSXzEwLA0KDQorICAgICAgQVNGTVNHX0VWRU5U X1NFTlNPUl9UWVBFX0ZXX0VSUk9SX1BST0dSRVNTLA0KDQorICAgICAgQVNGTVNHX0VWRU5UX1RZ UEVfU0VOU09SX1NQRUNJRklDLA0KDQorICAgICAgQVNGTVNHX0VWRU5UX09GRlNFVF9TWVNfRldf UFJPR1JFU1NfRU5UUlksDQoNCisgICAgICBBU0ZNU0dfRVZFTlRfU09VUkNFX1RZUEVfQVNGMTAs DQoNCisgICAgICBBU0ZNU0dfRVZFTlRfU0VWRVJJVFlfTk9OX0NSSVRJQ0FMLA0KDQorICAgICAg QVNGTVNHX1NFTlNPUl9ERVZJQ0VfVU5TUEVDSUZJRUQsDQoNCisgICAgICBBU0ZNU0dfU0VOU09S X05VTUJFUl9VTlNQRUNJRklFRCwNCg0KKyAgICAgIEFTRk1TR19FTlRJVFlfU1lTVEVNX0JPQVJE LA0KDQorICAgICAgQVNGTVNHX0VOVElUWV9JTlNUQU5DRV9VTlNQRUNJRklFRCwNCg0KKyAgICAg IEFTRk1TR19FVkVOVF9EQVRBMSwNCg0KKyAgICAgIEFTRk1TR19FVkVOVF9EQVRBX0tFWUJPQVJE X0lOSVRJQUxJWkFUSU9ODQoNCisgICAgfQ0KDQorICB9LA0KDQorICB7DQoNCisgICAgTXNnS2Jj VGVzdCwNCg0KKyAgICB7DQoNCisgICAgICBBU0ZNU0dfQ09NTUFORF9NRVNTQUdJTkcsDQoNCisg ICAgICAweDBkLCAvLyBCeXRlQ291bnQNCg0KKyAgICAgIEFTRk1TR19TVUJDT01NQU5EX05PX1JF VFJBTlNNSVQsDQoNCisgICAgICBBU0ZNU0dfVkVSU0lPTl9OVU1CRVJfMTAsDQoNCisgICAgICBB U0ZNU0dfRVZFTlRfU0VOU09SX1RZUEVfRldfRVJST1JfUFJPR1JFU1MsDQoNCisgICAgICBBU0ZN U0dfRVZFTlRfVFlQRV9TRU5TT1JfU1BFQ0lGSUMsDQoNCisgICAgICBBU0ZNU0dfRVZFTlRfT0ZG U0VUX1NZU19GV19QUk9HUkVTU19FTlRSWSwNCg0KKyAgICAgIEFTRk1TR19FVkVOVF9TT1VSQ0Vf VFlQRV9BU0YxMCwNCg0KKyAgICAgIEFTRk1TR19FVkVOVF9TRVZFUklUWV9OT05fQ1JJVElDQUws DQoNCisgICAgICBBU0ZNU0dfU0VOU09SX0RFVklDRV9VTlNQRUNJRklFRCwNCg0KKyAgICAgIEFT Rk1TR19TRU5TT1JfTlVNQkVSX1VOU1BFQ0lGSUVELA0KDQorICAgICAgQVNGTVNHX0VOVElUWV9T WVNURU1fQk9BUkQsDQoNCisgICAgICBBU0ZNU0dfRU5USVRZX0lOU1RBTkNFX1VOU1BFQ0lGSUVE LA0KDQorICAgICAgQVNGTVNHX0VWRU5UX0RBVEExLA0KDQorICAgICAgQVNGTVNHX0VWRU5UX0RB VEFfS0VZQk9BUkRfVEVTVA0KDQorICAgIH0NCg0KKyAgfSwNCg0KKyAgew0KDQorICAgIE1zZ01v dGhlckJvYXJkSW5pdCwNCg0KKyAgICB7DQoNCisgICAgICBBU0ZNU0dfQ09NTUFORF9NRVNTQUdJ TkcsDQoNCisgICAgICAweDBkLCAvLyBCeXRlQ291bnQNCg0KKyAgICAgIEFTRk1TR19TVUJDT01N QU5EX05PX1JFVFJBTlNNSVQsDQoNCisgICAgICBBU0ZNU0dfVkVSU0lPTl9OVU1CRVJfMTAsDQoN CisgICAgICBBU0ZNU0dfRVZFTlRfU0VOU09SX1RZUEVfRldfRVJST1JfUFJPR1JFU1MsDQoNCisg ICAgICBBU0ZNU0dfRVZFTlRfVFlQRV9TRU5TT1JfU1BFQ0lGSUMsDQoNCisgICAgICBBU0ZNU0df RVZFTlRfT0ZGU0VUX1NZU19GV19QUk9HUkVTU19FTlRSWSwNCg0KKyAgICAgIEFTRk1TR19FVkVO VF9TT1VSQ0VfVFlQRV9BU0YxMCwNCg0KKyAgICAgIEFTRk1TR19FVkVOVF9TRVZFUklUWV9NT05J VE9SLA0KDQorICAgICAgQVNGTVNHX1NFTlNPUl9ERVZJQ0VfVU5TUEVDSUZJRUQsDQoNCisgICAg ICBBU0ZNU0dfU0VOU09SX05VTUJFUl9VTlNQRUNJRklFRCwNCg0KKyAgICAgIEFTRk1TR19FTlRJ VFlfU1lTVEVNX0JPQVJELA0KDQorICAgICAgQVNGTVNHX0VOVElUWV9JTlNUQU5DRV9VTlNQRUNJ RklFRCwNCg0KKyAgICAgIEFTRk1TR19FVkVOVF9EQVRBMSwNCg0KKyAgICAgIEFTRk1TR19FVkVO VF9EQVRBX0JPQVJEX0lOSVRJQUxJWkFUSU9ODQoNCisgICAgfQ0KDQorICB9LA0KDQorICB7DQoN CisgICAgTXNnTm9WaWRlbywNCg0KKyAgICB7DQoNCisgICAgICBBU0ZNU0dfQ09NTUFORF9NRVNT QUdJTkcsDQoNCisgICAgICAweDBkLCAvLyBCeXRlQ291bnQNCg0KKyAgICAgIEFTRk1TR19TVUJD T01NQU5EX05PX1JFVFJBTlNNSVQsDQoNCisgICAgICBBU0ZNU0dfVkVSU0lPTl9OVU1CRVJfMTAs DQoNCisgICAgICBBU0ZNU0dfRVZFTlRfU0VOU09SX1RZUEVfRldfRVJST1JfUFJPR1JFU1MsDQoN CisgICAgICBBU0ZNU0dfRVZFTlRfVFlQRV9TRU5TT1JfU1BFQ0lGSUMsDQoNCisgICAgICBBU0ZN U0dfRVZFTlRfT0ZGU0VUX05PX0JPT1RBQkxFX01FRElBLA0KDQorICAgICAgQVNGTVNHX0VWRU5U X1NPVVJDRV9UWVBFX0FTRjEwLA0KDQorICAgICAgQVNGTVNHX0VWRU5UX1NFVkVSSVRZX05PTl9D UklUSUNBTCwNCg0KKyAgICAgIEFTRk1TR19TRU5TT1JfREVWSUNFX1VOU1BFQ0lGSUVELA0KDQor ICAgICAgQVNGTVNHX1NFTlNPUl9OVU1CRVJfVU5TUEVDSUZJRUQsDQoNCisgICAgICBBU0ZNU0df RU5USVRZX0FERF9JTl9DQVJELA0KDQorICAgICAgQVNGTVNHX0VOVElUWV9JTlNUQU5DRV9VTlNQ RUNJRklFRCwNCg0KKyAgICAgIEFTRk1TR19FVkVOVF9EQVRBMSwNCg0KKyAgICAgIEFTRk1TR19F VkVOVF9EQVRBX05PX1ZJREVPDQoNCisgICAgfQ0KDQorICB9LA0KDQorICB7DQoNCisgICAgTXNn S2JkRmFpbHVyZSwNCg0KKyAgICB7DQoNCisgICAgICBBU0ZNU0dfQ09NTUFORF9NRVNTQUdJTkcs DQoNCisgICAgICAweDBkLCAvLyBCeXRlQ291bnQNCg0KKyAgICAgIEFTRk1TR19TVUJDT01NQU5E X05PX1JFVFJBTlNNSVQsDQoNCisgICAgICBBU0ZNU0dfVkVSU0lPTl9OVU1CRVJfMTAsDQoNCisg ICAgICBBU0ZNU0dfRVZFTlRfU0VOU09SX1RZUEVfRldfRVJST1JfUFJPR1JFU1MsDQoNCisgICAg ICBBU0ZNU0dfRVZFTlRfVFlQRV9TRU5TT1JfU1BFQ0lGSUMsDQoNCisgICAgICBBU0ZNU0dfRVZF TlRfT0ZGU0VUX1NZU19GV19FUlJPUiwNCg0KKyAgICAgIEFTRk1TR19FVkVOVF9TT1VSQ0VfVFlQ RV9BU0YxMCwNCg0KKyAgICAgIEFTRk1TR19FVkVOVF9TRVZFUklUWV9OT05fQ1JJVElDQUwsDQoN CisgICAgICBBU0ZNU0dfU0VOU09SX0RFVklDRV9VTlNQRUNJRklFRCwNCg0KKyAgICAgIEFTRk1T R19TRU5TT1JfTlVNQkVSX1VOU1BFQ0lGSUVELA0KDQorICAgICAgQVNGTVNHX0VOVElUWV9TWVNU RU1fQk9BUkQsDQoNCisgICAgICBBU0ZNU0dfRU5USVRZX0lOU1RBTkNFX1VOU1BFQ0lGSUVELA0K DQorICAgICAgQVNGTVNHX0VWRU5UX0RBVEExLA0KDQorICAgICAgQVNGTVNHX0VWRU5UX0RBVEFf S0VZQk9BUkRfRkFJTFVSRQ0KDQorICAgIH0NCg0KKyAgfSwNCg0KKyAgew0KDQorICAgIE1zZ0hk ZEZhaWx1cmUsDQoNCisgICAgew0KDQorICAgICAgQVNGTVNHX0NPTU1BTkRfTUVTU0FHSU5HLA0K DQorICAgICAgMHgwZCwgLy8gQnl0ZUNvdW50DQoNCisgICAgICBBU0ZNU0dfU1VCQ09NTUFORF9O T19SRVRSQU5TTUlULA0KDQorICAgICAgQVNGTVNHX1ZFUlNJT05fTlVNQkVSXzEwLA0KDQorICAg ICAgQVNGTVNHX0VWRU5UX1NFTlNPUl9UWVBFX0ZXX0VSUk9SX1BST0dSRVNTLA0KDQorICAgICAg QVNGTVNHX0VWRU5UX1RZUEVfU0VOU09SX1NQRUNJRklDLA0KDQorICAgICAgQVNGTVNHX0VWRU5U X09GRlNFVF9TWVNfRldfRVJST1IsDQoNCisgICAgICBBU0ZNU0dfRVZFTlRfU09VUkNFX1RZUEVf QVNGMTAsDQoNCisgICAgICBBU0ZNU0dfRVZFTlRfU0VWRVJJVFlfTk9OX1JFQ09WRVJBQkxFLA0K DQorICAgICAgQVNGTVNHX1NFTlNPUl9ERVZJQ0VfVU5TUEVDSUZJRUQsDQoNCisgICAgICBBU0ZN U0dfU0VOU09SX05VTUJFUl9VTlNQRUNJRklFRCwNCg0KKyAgICAgIEFTRk1TR19FTlRJVFlfRElT SywNCg0KKyAgICAgIEFTRk1TR19FTlRJVFlfSU5TVEFOQ0VfVU5TUEVDSUZJRUQsDQoNCisgICAg ICBBU0ZNU0dfRVZFTlRfREFUQTEsDQoNCisgICAgICBBU0ZNU0dfRVZFTlRfREFUQV9IQVJEX0RJ U0tfRkFJTFVSRQ0KDQorICAgIH0NCg0KKyAgfSwNCg0KKyAgew0KDQorICAgIE1zZ0NoYXNzaXNJ bnRydXNpb24sDQoNCisgICAgew0KDQorICAgICAgQVNGTVNHX0NPTU1BTkRfTUVTU0FHSU5HLA0K DQorICAgICAgMHgwYiwgLy8gQnl0ZUNvdW50DQoNCisgICAgICBBU0ZNU0dfU1VCQ09NTUFORF9O T19SRVRSQU5TTUlULA0KDQorICAgICAgQVNGTVNHX1ZFUlNJT05fTlVNQkVSXzEwLA0KDQorICAg ICAgQVNGTVNHX0VWRU5UX1NFTlNPUl9UWVBFX0NIQVNTSVNfSU5UUlVTSU9OLA0KDQorICAgICAg QVNGTVNHX0VWRU5UX1RZUEVfU0VOU09SX1NQRUNJRklDLA0KDQorICAgICAgQVNGTVNHX0VWRU5U X09GRlNFVF9DSEFTU0lTX0lOVFJVU0lPTiwNCg0KKyAgICAgIEFTRk1TR19FVkVOVF9TT1VSQ0Vf VFlQRV9BU0YxMCwNCg0KKyAgICAgIEFTRk1TR19FVkVOVF9TRVZFUklUWV9NT05JVE9SLA0KDQor ICAgICAgQVNGTVNHX1NFTlNPUl9ERVZJQ0VfVU5TUEVDSUZJRUQsDQoNCisgICAgICBBU0ZNU0df U0VOU09SX05VTUJFUl9VTlNQRUNJRklFRCwNCg0KKyAgICAgIEFTRk1TR19FTlRJVFlfU1lTVEVN X0JPQVJELA0KDQorICAgICAgQVNGTVNHX0VOVElUWV9JTlNUQU5DRV9VTlNQRUNJRklFRA0KDQor ICAgIH0NCg0KKyAgfSwNCg0KKyAgew0KDQorICAgIE1zZ05vQm9vdE1lZGlhLA0KDQorICAgIHsN Cg0KKyAgICAgIEFTRk1TR19DT01NQU5EX01FU1NBR0lORywNCg0KKyAgICAgIDB4MGQsIC8vIEJ5 dGVDb3VudA0KDQorICAgICAgQVNGTVNHX1NVQkNPTU1BTkRfTk9fUkVUUkFOU01JVCwNCg0KKyAg ICAgIEFTRk1TR19WRVJTSU9OX05VTUJFUl8xMCwNCg0KKyAgICAgIEFTRk1TR19FVkVOVF9TRU5T T1JfVFlQRV9CT09UX0VSUk9SLA0KDQorICAgICAgQVNGTVNHX0VWRU5UX1RZUEVfU0VOU09SX1NQ RUNJRklDLA0KDQorICAgICAgQVNGTVNHX0VWRU5UX09GRlNFVF9TWVNfRldfRVJST1IsDQoNCisg ICAgICBBU0ZNU0dfRVZFTlRfU09VUkNFX1RZUEVfQVNGMTAsDQoNCisgICAgICBBU0ZNU0dfRVZF TlRfU0VWRVJJVFlfTk9OX1JFQ09WRVJBQkxFLA0KDQorICAgICAgQVNGTVNHX1NFTlNPUl9ERVZJ Q0VfVU5TUEVDSUZJRUQsDQoNCisgICAgICBBU0ZNU0dfU0VOU09SX05VTUJFUl9VTlNQRUNJRklF RCwNCg0KKyAgICAgIEFTRk1TR19FTlRJVFlfVU5TUEVDSUZJRUQsDQoNCisgICAgICBBU0ZNU0df RU5USVRZX0lOU1RBTkNFX1VOU1BFQ0lGSUVELA0KDQorICAgICAgQVNGTVNHX0VWRU5UX0RBVEEx LA0KDQorICAgICAgQVNGTVNHX0VWRU5UX0RBVEFfVU5TUEVDSUZJRUQNCg0KKyAgICB9DQoNCisg IH0NCg0KK307DQoNCisNCg0KK1VJTlROICBtTXNnUHJvZ3Jlc3NNYXBTaXplID0gc2l6ZW9mICht TXNnUHJvZ3Jlc3NNYXApIC8gc2l6ZW9mIChNRVNTQUdFX0RBVEFfSFVCX01BUCk7DQoNCitVSU5U TiAgbU1zZ0Vycm9yTWFwU2l6ZSAgICA9IHNpemVvZiAobU1zZ0Vycm9yTWFwKSAvIHNpemVvZiAo TUVTU0FHRV9EQVRBX0hVQl9NQVApOw0KDQorVUlOVE4gIG1Bc2ZNZXNzYWdlc1NpemUgICAgPSBz aXplb2YgKG1Bc2ZNZXNzYWdlcykgLyBzaXplb2YgKEFTRl9NRVNTQUdFKTsNCg0KKw0KDQorQVNG X01TR19OT1JFVFJBTlNNSVQgIG1Bc2ZTeXN0ZW1TdGF0ZSA9DQoNCit7DQoNCisgIEFTRk1TR19D T01NQU5EX1NZU1RFTV9TVEFURSwNCg0KKyAgMHgzLCAgICAvLyBCeXRlQ291bnQNCg0KKyAgQVNG TVNHX1NVQkNPTU1BTkRfU0VUX1NZU1RFTV9TVEFURSwNCg0KKyAgQVNGTVNHX1ZFUlNJT05fTlVN QkVSXzEwLA0KDQorICBBU0ZNU0dfU1lTVEVNX1NUQVRFX1MwDQoNCit9Ow0KDQpkaWZmIC0tZ2l0 IGEvQXNmUGtnL0FzZi9Bc2ZQZWkvQXNmUGVpLmMgYi9Bc2ZQa2cvQXNmL0FzZlBlaS9Bc2ZQZWku Yw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uOGI0NGNkMjZlMGZl DQotLS0gL2Rldi9udWxsDQorKysgYi9Bc2ZQa2cvQXNmL0FzZlBlaS9Bc2ZQZWkuYw0KQEAgLTAs MCArMSwzODQgQEANCisvKiogQGZpbGUNCg0KKyAgQXNmIFBlaSBJbml0aWFsaXphdGlvbiBEcml2 ZXIuDQoNCisNCg0KKyAgRm9sbG93IEFzZiBzcGVjIHRvIHNlbmQgcHJvZ3Jlc3Mgb3IgZXJyb3Ig bWVzc2FnZSB0byBTbWJ1cyBkZXZpY2UNCg0KKw0KDQorICBDb3B5cmlnaHQgKGMpIDE5ODUgLSAy MDIyLCBBTUkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KDQorICBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KDQorKiovDQoNCisNCg0KKyNpbmNsdWRlIDxB c2ZNZXNzYWdlcy5oPg0KDQorI2luY2x1ZGUgPEJhc2UuaD4NCg0KKyNpbmNsdWRlIDxQcGkvUmVw b3J0U3RhdHVzQ29kZUhhbmRsZXIuaD4NCg0KKyNpbmNsdWRlIDxQcGkvTWVtb3J5RGlzY292ZXJl ZC5oPg0KDQorI2luY2x1ZGUgPFBwaS9TbWJ1czIuaD4NCg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0Rl YnVnTGliLmg+DQoNCisjaW5jbHVkZSA8TGlicmFyeS9QZWlTZXJ2aWNlc0xpYi5oPg0KDQorI2lu Y2x1ZGUgPFBpL1BpU3RhdHVzQ29kZS5oPg0KDQorDQoNCisvKioNCg0KKyAgVGhpcyBFdmVudCBO b3RpZnkgcHJvY2Vzc2VzIHRoZSBBU0YgcmVxdWVzdCBhdCBNZW1vcnkgSW5pdGlhbCBDb21wbGV0 ZWQuDQoNCisNCg0KKyAgQHBhcmFtW2luXSBQZWlTZXJ2aWNlcyAgICAgICAgICBHZW5lcmFsIHB1 cnBvc2Ugc2VydmljZXMgYXZhaWxhYmxlIHRvIGV2ZXJ5IFBFSU0uDQoNCisgIEBwYXJhbVtpbl0g Tm90aWZ5RGVzY3JpcHRvciAgICAgVGhlIG5vdGlmaWNhdGlvbiBzdHJ1Y3R1cmUgdGhpcyBQRUlN IHJlZ2lzdGVyZWQgb24gaW5zdGFsbC4NCg0KKyAgQHBhcmFtW2luXSBQcGkgICAgICAgICAgICAg ICAgICBUaGUgbWVtb3J5IGRpc2NvdmVyZWQgUFBJLiAgTm90IHVzZWQuDQoNCisNCg0KKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBTdWNjZWVkcy4NCg0KKyAgQHJldHZhbCBFRklf VU5TVVBQT1JURUQgICAgICAgICBQdXNoIEV2ZW50IGVycm9yLg0KDQorDQoNCisqKi8NCg0KK0VG SV9TVEFUVVMNCg0KK0VGSUFQSQ0KDQorTXNnTWVtb3J5SW5pdENvbXBsZXRlZCAoDQoNCisgIElO IEVGSV9QRUlfU0VSVklDRVMgICAgICAgICAgICoqUGVpU2VydmljZXMsDQoNCisgIElOIEVGSV9Q RUlfTk9USUZZX0RFU0NSSVBUT1IgICpOb3RpZnlEZXNjcmlwdG9yLA0KDQorICBJTiBWT0lEICAg ICAgICAgICAgICAgICAgICAgICAqUHBpDQoNCisgICk7DQoNCisNCg0KK1NUQVRJQyBFRklfUEVJ X05PVElGWV9ERVNDUklQVE9SICBtTWVtb3J5RGlzY292ZXJlZE5vdGlmeURlcyA9IHsNCg0KKyAg RUZJX1BFSV9QUElfREVTQ1JJUFRPUl9OT1RJRllfQ0FMTEJBQ0sgfCBFRklfUEVJX1BQSV9ERVND UklQVE9SX1RFUk1JTkFURV9MSVNULA0KDQorICAmZ0VmaVBlaU1lbW9yeURpc2NvdmVyZWRQcGlH dWlkLA0KDQorICBNc2dNZW1vcnlJbml0Q29tcGxldGVkDQoNCit9Ow0KDQorDQoNCitBU0ZfTVNH X05PUkVUUkFOU01JVCAgbUFzZlN5c3RlbVN0YXRlV29ya2luZyA9IFwNCg0KK3sNCg0KKyAgQVNG TVNHX0NPTU1BTkRfU1lTVEVNX1NUQVRFLA0KDQorICAweDMsICAgIC8vIEJ5dGVDb3VudA0KDQor ICBBU0ZNU0dfU1VCQ09NTUFORF9TRVRfU1lTVEVNX1NUQVRFLA0KDQorICBBU0ZNU0dfVkVSU0lP Tl9OVU1CRVJfMTAsDQoNCisgIEFTRk1TR19TWVNURU1fU1RBVEVfUzANCg0KK307DQoNCisNCg0K K0FTRl9NU0dfTk9SRVRSQU5TTUlUICBtTXNnU3RvcFRpbWVyID0NCg0KK3sNCg0KKyAgQVNGTVNH X0NPTU1BTkRfTUFOQUdFTUVOVF9DT05UUk9MLA0KDQorICAweDIsICAgIC8vIEJ5dGVDb3VudA0K DQorICBBU0ZNU0dfU1VCQ09NTUFORF9TVE9QX1dBVENIX0RPRywNCg0KKyAgQVNGTVNHX1ZFUlNJ T05fTlVNQkVSXzEwDQoNCit9Ow0KDQorDQoNCisvLyAzLjEuNS4zIFN5c3RlbSBGaXJtd2FyZSBQ cm9ncmVzcyBFdmVudHMNCg0KK0FTRl9NU0dfTk9SRVRSQU5TTUlUICBtTXNnQmlvc1ByZXNlbnQg PQ0KDQorew0KDQorICBBU0ZNU0dfQ09NTUFORF9NRVNTQUdJTkcsDQoNCisgIDB4ZCwgICAgLy8g Qnl0ZUNvdW50DQoNCisgIEFTRk1TR19TVUJDT01NQU5EX05PX1JFVFJBTlNNSVQsDQoNCisgIEFT Rk1TR19WRVJTSU9OX05VTUJFUl8xMCwNCg0KKyAgQVNGTVNHX0VWRU5UX1NFTlNPUl9UWVBFX0VO VElUWV9QUkVTRU5DRSwNCg0KKyAgQVNGTVNHX0VWRU5UX1RZUEVfU0VOU09SX1NQRUNJRklDLA0K DQorICBBU0ZNU0dfRVZFTlRfT0ZGU0VUX0VOVElUWV9QUkVTRU5ULA0KDQorICBBU0ZNU0dfRVZF TlRfU09VUkNFX1RZUEVfQVNGMTAsDQoNCisgIEFTRk1TR19FVkVOVF9TRVZFUklUWV9OT05fQ1JJ VElDQUwsDQoNCisgIEFTRk1TR19TRU5TT1JfREVWSUNFX1VOU1BFQ0lGSUVELA0KDQorICBBU0ZN U0dfU0VOU09SX05VTUJFUl9VTlNQRUNJRklFRCwNCg0KKyAgQVNGTVNHX0VOVElUWV9CSU9TLA0K DQorICBBU0ZNU0dfRU5USVRZX0lOU1RBTkNFX1VOU1BFQ0lGSUVELA0KDQorICBBU0ZNU0dfRVZF TlRfREFUQTEsDQoNCisgIEFTRk1TR19FVkVOVF9EQVRBX1VOU1BFQ0lGSUVEDQoNCit9Ow0KDQor DQoNCisvLyBTdGFydGluZyBtZW1vcnkgaW5pdGlhbGl6YXRpb24gYW5kIHRlc3QuDQoNCitBU0Zf TVNHX05PUkVUUkFOU01JVCAgbU1zZ01lbW9yeUluaXQgPQ0KDQorew0KDQorICBBU0ZNU0dfQ09N TUFORF9NRVNTQUdJTkcsDQoNCisgIDB4ZCwgICAgLy8gQnl0ZUNvdW50DQoNCisgIEFTRk1TR19T VUJDT01NQU5EX05PX1JFVFJBTlNNSVQsDQoNCisgIEFTRk1TR19WRVJTSU9OX05VTUJFUl8xMCwN Cg0KKyAgQVNGTVNHX0VWRU5UX1NFTlNPUl9UWVBFX0ZXX0VSUk9SX1BST0dSRVNTLA0KDQorICBB U0ZNU0dfRVZFTlRfVFlQRV9TRU5TT1JfU1BFQ0lGSUMsDQoNCisgIEFTRk1TR19FVkVOVF9PRkZT RVRfU1lTX0ZXX1BST0dSRVNTX0VOVFJZLA0KDQorICBBU0ZNU0dfRVZFTlRfU09VUkNFX1RZUEVf QVNGMTAsDQoNCisgIEFTRk1TR19FVkVOVF9TRVZFUklUWV9OT05fQ1JJVElDQUwsDQoNCisgIEFT Rk1TR19TRU5TT1JfREVWSUNFX1VOU1BFQ0lGSUVELA0KDQorICBBU0ZNU0dfU0VOU09SX05VTUJF Ul9VTlNQRUNJRklFRCwNCg0KKyAgQVNGTVNHX0VOVElUWV9NRU1PUllfREVWSUNFLA0KDQorICBB U0ZNU0dfRU5USVRZX0lOU1RBTkNFX1VOU1BFQ0lGSUVELA0KDQorICBBU0ZNU0dfRVZFTlRfREFU QTEsDQoNCisgIEFTRk1TR19FVkVOVF9EQVRBX01FTU9SWV9JTklUSUFMSVpBVElPTg0KDQorfTsN Cg0KKw0KDQorLy8gTWVtb3J5IGluaXRpYWxpemVkIGFuZCB0ZXN0ZWQuDQoNCitBU0ZfTVNHX05P UkVUUkFOU01JVCAgbU1zZ01lbW9yeUluaXRpYWxpemVkID0NCg0KK3sNCg0KKyAgQVNGTVNHX0NP TU1BTkRfTUVTU0FHSU5HLA0KDQorICAweGQsICAgIC8vIEJ5dGVDb3VudA0KDQorICBBU0ZNU0df U1VCQ09NTUFORF9OT19SRVRSQU5TTUlULA0KDQorICBBU0ZNU0dfVkVSU0lPTl9OVU1CRVJfMTAs DQoNCisgIEFTRk1TR19FVkVOVF9TRU5TT1JfVFlQRV9GV19FUlJPUl9QUk9HUkVTUywNCg0KKyAg QVNGTVNHX0VWRU5UX1RZUEVfU0VOU09SX1NQRUNJRklDLA0KDQorICBBU0ZNU0dfRVZFTlRfT0ZG U0VUX1NZU19GV19QUk9HUkVTU19FWElULA0KDQorICBBU0ZNU0dfRVZFTlRfU09VUkNFX1RZUEVf QVNGMTAsDQoNCisgIEFTRk1TR19FVkVOVF9TRVZFUklUWV9OT05fQ1JJVElDQUwsDQoNCisgIEFT Rk1TR19TRU5TT1JfREVWSUNFX1VOU1BFQ0lGSUVELA0KDQorICBBU0ZNU0dfU0VOU09SX05VTUJF Ul9VTlNQRUNJRklFRCwNCg0KKyAgQVNGTVNHX0VOVElUWV9NRU1PUllfREVWSUNFLA0KDQorICBB U0ZNU0dfRU5USVRZX0lOU1RBTkNFX1VOU1BFQ0lGSUVELA0KDQorICBBU0ZNU0dfRVZFTlRfREFU QTEsDQoNCisgIEFTRk1TR19FVkVOVF9EQVRBX01FTU9SWV9JTklUSUFMSVpBVElPTg0KDQorfTsN Cg0KKw0KDQorQVNGX01TR19OT1JFVFJBTlNNSVQgIG1Bc2Ztc2dDYWNoZUluaXQgPQ0KDQorew0K DQorICBBU0ZNU0dfQ09NTUFORF9NRVNTQUdJTkcsDQoNCisgIDB4ZCwgICAgLy8gQnl0ZUNvdW50 DQoNCisgIEFTRk1TR19TVUJDT01NQU5EX05PX1JFVFJBTlNNSVQsDQoNCisgIEFTRk1TR19WRVJT SU9OX05VTUJFUl8xMCwNCg0KKyAgQVNGTVNHX0VWRU5UX1NFTlNPUl9UWVBFX0ZXX0VSUk9SX1BS T0dSRVNTLA0KDQorICBBU0ZNU0dfRVZFTlRfVFlQRV9TRU5TT1JfU1BFQ0lGSUMsDQoNCisgIEFT Rk1TR19FVkVOVF9PRkZTRVRfU1lTX0ZXX1BST0dSRVNTX0VOVFJZLA0KDQorICBBU0ZNU0dfRVZF TlRfU09VUkNFX1RZUEVfQVNGMTAsDQoNCisgIEFTRk1TR19FVkVOVF9TRVZFUklUWV9NT05JVE9S LA0KDQorICBBU0ZNU0dfU0VOU09SX0RFVklDRV9VTlNQRUNJRklFRCwNCg0KKyAgQVNGTVNHX1NF TlNPUl9OVU1CRVJfVU5TUEVDSUZJRUQsDQoNCisgIEFTRk1TR19FTlRJVFlfUFJPQ0VTU09SLA0K DQorICBBU0ZNU0dfRU5USVRZX0lOU1RBTkNFX1VOU1BFQ0lGSUVELA0KDQorICBBU0ZNU0dfRVZF TlRfREFUQTEsDQoNCisgIEFTRk1TR19FVkVOVF9EQVRBX0NBQ0hFX0lOSVRJQUxJWkFUSU9ODQoN Cit9Ow0KDQorDQoNCitBU0ZfTVNHX05PUkVUUkFOU01JVCAgbUFzZm1zZ01lbW9yeU1pc3Npbmcg PQ0KDQorew0KDQorICBBU0ZNU0dfQ09NTUFORF9NRVNTQUdJTkcsDQoNCisgIDB4ZCwgICAgLy8g Qnl0ZUNvdW50DQoNCisgIEFTRk1TR19TVUJDT01NQU5EX05PX1JFVFJBTlNNSVQsDQoNCisgIEFT Rk1TR19WRVJTSU9OX05VTUJFUl8xMCwNCg0KKyAgQVNGTVNHX0VWRU5UX1NFTlNPUl9UWVBFX0ZX X0VSUk9SX1BST0dSRVNTLA0KDQorICBBU0ZNU0dfRVZFTlRfVFlQRV9TRU5TT1JfU1BFQ0lGSUMs DQoNCisgIEFTRk1TR19FVkVOVF9PRkZTRVRfU1lTX0ZXX0VSUk9SLA0KDQorICBBU0ZNU0dfRVZF TlRfU09VUkNFX1RZUEVfQVNGMTAsDQoNCisgIEFTRk1TR19FVkVOVF9TRVZFUklUWV9OT05fQ1JJ VElDQUwsDQoNCisgIEFTRk1TR19TRU5TT1JfREVWSUNFX1VOU1BFQ0lGSUVELA0KDQorICBBU0ZN U0dfU0VOU09SX05VTUJFUl9VTlNQRUNJRklFRCwNCg0KKyAgQVNGTVNHX0VOVElUWV9NRU1PUllf REVWSUNFLA0KDQorICBBU0ZNU0dfRU5USVRZX0lOU1RBTkNFX1VOU1BFQ0lGSUVELA0KDQorICBB U0ZNU0dfRVZFTlRfREFUQTEsDQoNCisgIEFTRk1TR19FVkVOVF9EQVRBX05PX01FTU9SWQ0KDQor fTsNCg0KKw0KDQorLyoqDQoNCisgIFRoaXMgZnVuY3Rpb24gcHVzaGVzIHRoZSBQRUkgU3lzdGVt IEZpcm13YXJlIFByb2dyZXNzIEV2ZW50cy4NCg0KKw0KDQorICBAcGFyYW1baW5dIFNtQnVzICAg ICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgU21CdXMgUFBJLg0KDQorICBAcGFyYW1baW5dIEZp eGVkVGFyZ2V0QWRkcmVzcyAgRGV2aWNlIGFkZHJlc3MNCg0KKyAgQHBhcmFtW2luXSBNZXNzYWdl RXJyb3JMZXZlbCAgIFByb2dyZXNzIG9yIGVycm9yIG9yIHN5c3RlbSBtYW5hZ2VtZW50IG1lc3Nh Z2UgVHlwZS4NCg0KKyAgQHBhcmFtW2luXSBNZXNzYWdlQnVmZmVyICAgICAgIFBvaW50ZXIgdG8g dGhlIEV2ZW50IERhdGEgQnVmZmVyLg0KDQorDQoNCisqKi8NCg0KK1ZPSUQNCg0KK0VGSUFQSQ0K DQorQXNmUHVzaFByb2dyZXNzTWVzc2FnZSAoDQoNCisgIElOIEVGSV9QRUlfU01CVVMyX1BQSSAg ICAgICAgKlNtQnVzLA0KDQorICBJTiBFRklfU01CVVNfREVWSUNFX0FERFJFU1MgIEZpeGVkVGFy Z2V0QWRkcmVzcywNCg0KKyAgSU4gVUlOVDMyICAgICAgICAgICAgICAgICAgICBNZXNzYWdlRXJy b3JMZXZlbCwNCg0KKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAqTWVzc2FnZUJ1ZmZl cg0KDQorICApDQoNCit7DQoNCisgIEVGSV9TVEFUVVMgIFN0YXR1czsNCg0KKyAgVUlOVE4gICAg ICAgTGVuZ3RoOw0KDQorDQoNCisgIGlmIChNZXNzYWdlRXJyb3JMZXZlbCAmIFBjZEdldDMyIChQ Y2RBc2ZNZXNzYWdlRXJyb3JMZXZlbCkpIHsNCg0KKyAgICBMZW5ndGggPSAoKEFTRl9NU0dfTk9S RVRSQU5TTUlUICopTWVzc2FnZUJ1ZmZlciktPkJ5dGVDb3VudDsNCg0KKyAgICBTdGF0dXMgPSBT bUJ1cy0+RXhlY3V0ZSAoDQoNCisgICAgICAgICAgICAgICAgICAgICAgU21CdXMsDQoNCisgICAg ICAgICAgICAgICAgICAgICAgRml4ZWRUYXJnZXRBZGRyZXNzLA0KDQorICAgICAgICAgICAgICAg ICAgICAgICgoQVNGX01TR19OT1JFVFJBTlNNSVQgKilNZXNzYWdlQnVmZmVyKS0+Q29tbWFuZCwN Cg0KKyAgICAgICAgICAgICAgICAgICAgICBFZmlTbWJ1c1dyaXRlQmxvY2ssDQoNCisgICAgICAg ICAgICAgICAgICAgICAgVFJVRSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAmTGVuZ3RoLA0K DQorICAgICAgICAgICAgICAgICAgICAgIChVSU5UOCAqKShNZXNzYWdlQnVmZmVyKzIpDQoNCisg ICAgICAgICAgICAgICAgICAgICAgKTsNCg0KKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQoNCisgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiUHVzaCBhbGVydCBtZXNzYWdlIGZhaWws IHN0YXR1cyA9ICVyXG4iLCBTdGF0dXMpKTsNCg0KKyAgICB9DQoNCisgIH0NCg0KKw0KDQorICBy ZXR1cm47DQoNCit9DQoNCisNCg0KKy8qKg0KDQorICBUaGlzIGNhbGxiYWNrIHJlZ2lzdGVyZWQg YnkgUmVwb3J0IFN0YXR1cyBDb2RlIFBwaSBmb3IgTWVtb3J5IE1pc3NpbmcgUEVULg0KDQorDQoN CisgIEBwYXJhbVtpbl0gUGVpU2VydmljZXMgICAgICAgIEdlbmVyYWwgcHVycG9zZSBzZXJ2aWNl cyBhdmFpbGFibGUgdG8gZXZlcnkgUEVJTS4NCg0KKyAgQHBhcmFtW2luXSBUeXBlICAgICAgICAg ICAgICAgSW5kaWNhdGVzIHRoZSB0eXBlIG9mIHN0YXR1cyBjb2RlIGJlaW5nIHJlcG9ydGVkLg0K DQorICBAcGFyYW1baW5dIFZhbHVlICAgICAgICAgICAgICBEZXNjcmliZXMgdGhlIGN1cnJlbnQg c3RhdHVzIG9mIGEgaGFyZHdhcmUgb3Igc29mdHdhcmUgZW50aXR5Lg0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBUaGlzIGluY2x1ZGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBj bGFzcyBhbmQgc3ViY2xhc3MgdGhhdCBpcw0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1c2VkIHRvIGNsYXNzaWZ5IHRoZSBlbnRpdHkgYXMgd2VsbCBhcyBhbiBvcGVyYXRpb24u DQoNCisgIEBwYXJhbVtpbl0gSW5zdGFuY2UgICAgICAgICAgIFRoZSBlbnVtZXJhdGlvbiBvZiBh IGhhcmR3YXJlIG9yIHNvZnR3YXJlIGVudGl0eSB3aXRoaW4gdGhlIHN5c3RlbS4NCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWQgaW5zdGFuY2UgbnVtYmVycyBzdGFydCB3 aXRoIDEuDQoNCisgIEBwYXJhbVtpbl0gQ2FsbGVySWQgICAgICAgICAgIFRoaXMgb3B0aW9uYWwg cGFyYW1ldGVyIG1heSBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoZSBjYWxsZXIuDQoNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGFsbG93cyB0aGUgc3RhdHVz IGNvZGUgZHJpdmVyIHRvIGFwcGx5IGRpZmZlcmVudA0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBydWxlcyB0byBkaWZmZXJlbnQgY2FsbGVycy4NCg0KKyAgQHBhcmFtW2luXSBE YXRhICAgICAgICAgICAgICAgVGhpcyBvcHRpb25hbCBwYXJhbWV0ZXIgbWF5IGJlIHVzZWQgdG8g cGFzcyBhZGRpdGlvbmFsIGRhdGEuDQoNCisNCg0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICAgICAgQWx3YXlzIHJldHVybiBFRklfU1VDQ0VTUw0KDQorDQoNCisqKi8NCg0KK0VGSV9TVEFU VVMNCg0KK0VGSUFQSQ0KDQorQXNmUGVpU3RhdHVzQ29kZUNhbGxCYWNrICgNCg0KKyAgSU4gIEVG SV9QRUlfU0VSVklDRVMgICAgICAgKipQZWlTZXJ2aWNlcywNCg0KKyAgSU4gIEVGSV9TVEFUVVNf Q09ERV9UWVBFICAgVHlwZSwNCg0KKyAgSU4gIEVGSV9TVEFUVVNfQ09ERV9WQUxVRSAgVmFsdWUs DQoNCisgIElOICBVSU5UMzIgICAgICAgICAgICAgICAgIEluc3RhbmNlLA0KDQorICBJTiAgRUZJ X0dVSUQgICAgICAgICAgICAgICAqQ2FsbGVySWQsDQoNCisgIElOICBFRklfU1RBVFVTX0NPREVf REFUQSAgICpEYXRhDQoNCisgICkNCg0KK3sNCg0KKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICBTdGF0dXM7DQoNCisgIEVGSV9QRUlfU01CVVMyX1BQSSAgICAgICAgKlNtQnVzOw0KDQorICBF RklfU01CVVNfREVWSUNFX0FERFJFU1MgIEZpeGVkVGFyZ2V0QWRkcmVzczsNCg0KKw0KDQorICBG aXhlZFRhcmdldEFkZHJlc3MuU21idXNEZXZpY2VBZGRyZXNzID0gUGNkR2V0OCAoUGNkU21idXNT bGF2ZUFkZHJlc3NGb3JEYXNoTGFuKSA+PiAxOw0KDQorICBpZiAoRml4ZWRUYXJnZXRBZGRyZXNz LlNtYnVzRGV2aWNlQWRkcmVzcyA9PSAwKSB7DQoNCisgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0K DQorICB9DQoNCisNCg0KKyAgU3RhdHVzID0gUGVpU2VydmljZXNMb2NhdGVQcGkgKA0KDQorICAg ICAgICAgICAgICZnRWZpUGVpU21idXMyUHBpR3VpZCwNCg0KKyAgICAgICAgICAgICAwLA0KDQor ICAgICAgICAgICAgIE5VTEwsDQoNCisgICAgICAgICAgICAgKFZPSUQgKiopJlNtQnVzDQoNCisg ICAgICAgICAgICAgKTsNCg0KKyAgaWYgKCBFRklfRVJST1IgKFN0YXR1cykpIHsNCg0KKyAgICBy ZXR1cm4gRUZJX1NVQ0NFU1M7DQoNCisgIH0NCg0KKw0KDQorICBpZiAoKFR5cGUgJiBFRklfU1RB VFVTX0NPREVfVFlQRV9NQVNLKSA9PSBFRklfRVJST1JfQ09ERSkgew0KDQorICAgIGlmICgoVmFs dWUgPT0gKEVGSV9TT0ZUV0FSRV9QRUlfQ09SRSB8IEVGSV9TV19QRUlfQ09SRV9FQ19NRU1PUllf Tk9UX0lOU1RBTExFRCkpIHx8DQoNCisgICAgICAgIChWYWx1ZSA9PSAoRUZJX0NPTVBVVElOR19V TklUX01FTU9SWSB8IEVGSV9DVV9NRU1PUllfRUNfTk9ORV9ERVRFQ1RFRCkpKQ0KDQorICAgIHsN Cg0KKyAgICAgIC8vIEVycm9yIG1lc3NhZ2UgLSBNZW1vcnkgTWlzc2luZy4NCg0KKyAgICAgIEFz ZlB1c2hQcm9ncmVzc01lc3NhZ2UgKFNtQnVzLCBGaXhlZFRhcmdldEFkZHJlc3MsIE1FU1NBR0Vf RVJST1JfTEVWRUxfRVJST1IsIChVSU5UOCAqKSZtQXNmbXNnTWVtb3J5TWlzc2luZyk7DQoNCisg ICAgfQ0KDQorICB9DQoNCisNCg0KKyAgaWYgKCgoVHlwZSAmIEVGSV9TVEFUVVNfQ09ERV9UWVBF X01BU0spID09IEVGSV9QUk9HUkVTU19DT0RFKSAmJg0KDQorICAgICAgKFZhbHVlID09IChFRklf Q09NUFVUSU5HX1VOSVRfSE9TVF9QUk9DRVNTT1IgfCBFRklfQ1VfSFBfUENfQ0FDSEVfSU5JVCkp KQ0KDQorICB7DQoNCisgICAgLy8gUHJvZ3Jlc3MgbWVzc2FnZSAtIENhY2hlIGluaXRpYWxpemF0 aW9uLg0KDQorICAgIEFzZlB1c2hQcm9ncmVzc01lc3NhZ2UgKFNtQnVzLCBGaXhlZFRhcmdldEFk ZHJlc3MsIE1FU1NBR0VfRVJST1JfTEVWRUxfUFJPR1JFU1MsIChVSU5UOCAqKSZtQXNmbXNnQ2Fj aGVJbml0KTsNCg0KKyAgfQ0KDQorDQoNCisgIHJldHVybiBFRklfU1VDQ0VTUzsNCg0KK30NCg0K Kw0KDQorLyoqDQoNCisgIFRoaXMgc2VuZCBtZW1vcnkgaW5pdGlhbGl6ZWQgbWVzc2FnZSBhZnRl ciBtZW1vcnkgZGlzY292ZXJlZC4NCg0KKw0KDQorICBAcGFyYW1baW5dIFBlaVNlcnZpY2VzICAg ICAgICAgIEdlbmVyYWwgcHVycG9zZSBzZXJ2aWNlcyBhdmFpbGFibGUgdG8gZXZlcnkgUEVJTS4N Cg0KKyAgQHBhcmFtW2luXSBOb3RpZnlEZXNjcmlwdG9yICAgICBUaGUgbm90aWZpY2F0aW9uIHN0 cnVjdHVyZSB0aGlzIFBFSU0gcmVnaXN0ZXJlZCBvbiBpbnN0YWxsLg0KDQorICBAcGFyYW1baW5d IFBwaSAgICAgICAgICAgICAgICAgIFRoZSBtZW1vcnkgZGlzY292ZXJlZCBQUEkuDQoNCisNCg0K KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBBbHdheXMgcmV0dXJuIEVGSV9TVUND RVNTDQoNCisNCg0KKyoqLw0KDQorRUZJX1NUQVRVUw0KDQorRUZJQVBJDQoNCitNc2dNZW1vcnlJ bml0Q29tcGxldGVkICgNCg0KKyAgSU4gRUZJX1BFSV9TRVJWSUNFUyAgICAgICAgICAgKipQZWlT ZXJ2aWNlcywNCg0KKyAgSU4gRUZJX1BFSV9OT1RJRllfREVTQ1JJUFRPUiAgKk5vdGlmeURlc2Ny aXB0b3IsDQoNCisgIElOIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICpQcGkNCg0KKyAgKQ0K DQorew0KDQorICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1czsNCg0KKyAgRUZJX1BF SV9TTUJVUzJfUFBJICAgICAgICAqU21CdXM7DQoNCisgIEVGSV9CT09UX01PREUgICAgICAgICAg ICAgQm9vdE1vZGU7DQoNCisgIEVGSV9TTUJVU19ERVZJQ0VfQUREUkVTUyAgRml4ZWRUYXJnZXRB ZGRyZXNzOw0KDQorDQoNCisgIEZpeGVkVGFyZ2V0QWRkcmVzcy5TbWJ1c0RldmljZUFkZHJlc3Mg PSBQY2RHZXQ4IChQY2RTbWJ1c1NsYXZlQWRkcmVzc0ZvckRhc2hMYW4pID4+IDE7DQoNCisgIGlm IChGaXhlZFRhcmdldEFkZHJlc3MuU21idXNEZXZpY2VBZGRyZXNzID09IDApIHsNCg0KKyAgICBy ZXR1cm4gRUZJX1NVQ0NFU1M7DQoNCisgIH0NCg0KKw0KDQorICBTdGF0dXMgPSBQZWlTZXJ2aWNl c0xvY2F0ZVBwaSAoDQoNCisgICAgICAgICAgICAgJmdFZmlQZWlTbWJ1czJQcGlHdWlkLA0KDQor ICAgICAgICAgICAgIDAsDQoNCisgICAgICAgICAgICAgTlVMTCwNCg0KKyAgICAgICAgICAgICAo Vk9JRCAqKikmU21CdXMNCg0KKyAgICAgICAgICAgICApOw0KDQorICBpZiAoIEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KDQorICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCg0KKyAgfQ0KDQorDQoNCisg IC8vIFByb2dyZXNzIG1lc3NhZ2UgLSBDb21wbGV0ZWQgbWVtb3J5IGluaXRpYWxpemF0aW9uIGFu ZCB0ZXN0Lg0KDQorICBBc2ZQdXNoUHJvZ3Jlc3NNZXNzYWdlIChTbUJ1cywgRml4ZWRUYXJnZXRB ZGRyZXNzLCBNRVNTQUdFX0VSUk9SX0xFVkVMX1BST0dSRVNTLCAoVUlOVDggKikmbU1zZ01lbW9y eUluaXRpYWxpemVkKTsNCg0KKw0KDQorICAvLyBHZXQgQm9vdCBQYXRoLg0KDQorICBTdGF0dXMg PSBQZWlTZXJ2aWNlc0dldEJvb3RNb2RlICgmQm9vdE1vZGUpOw0KDQorICBpZiAoIUVGSV9FUlJP UiAoU3RhdHVzKSAmJiAoQm9vdE1vZGUgPT0gQk9PVF9PTl9TM19SRVNVTUUpKSB7DQoNCisgICAg Ly8gUHVzaCBTeXN0ZW0gU3RhdGUgV29ya2luZyBpZiBTMyByZXN1bWluZy4NCg0KKyAgICBBc2ZQ dXNoUHJvZ3Jlc3NNZXNzYWdlICgNCg0KKyAgICAgIFNtQnVzLA0KDQorICAgICAgRml4ZWRUYXJn ZXRBZGRyZXNzLA0KDQorICAgICAgTUVTU0FHRV9FUlJPUl9MRVZFTF9TWVNURU1fTUFOQUdFTUVO VCwNCg0KKyAgICAgIChVSU5UOCAqKSZtQXNmU3lzdGVtU3RhdGVXb3JraW5nDQoNCisgICAgICAp Ow0KDQorICB9DQoNCisNCg0KKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KDQorfQ0KDQorDQoNCisv KioNCg0KKyAgQXNmIFBFSSBtb2R1bGUgZW50cnkgcG9pbnQNCg0KKw0KDQorICBAcGFyYW1baW5d ICBGaWxlSGFuZGxlICAgICAgICAgICBGaWxlSGFuZGxlICBIYW5kbGUgb2YgdGhlIGZpbGUgYmVp bmcgaW52b2tlZC4NCg0KKyAgQHBhcmFtW2luXSAgUGVpU2VydmljZXMgICAgICAgICAgRGVzY3Jp YmVzIHRoZSBsaXN0IG9mIHBvc3NpYmxlIFBFSSBTZXJ2aWNlcy4NCg0KKw0KDQorICBAcmV0dmFs ICAgICBFRklfU1VDQ0VTUyAgICAgICAgICBUaGUgUEVJTSBpbml0aWFsaXplZCBzdWNjZXNzZnVs bHkuDQoNCisNCg0KKyoqLw0KDQorRUZJX1NUQVRVUw0KDQorRUZJQVBJDQoNCitBc2ZQZWlFbnRy eSAoDQoNCisgIElOICAgICAgIEVGSV9QRUlfRklMRV9IQU5ETEUgIEZpbGVIYW5kbGUsDQoNCisg IElOIENPTlNUIEVGSV9QRUlfU0VSVklDRVMgICAgICoqUGVpU2VydmljZXMNCg0KKyAgKQ0KDQor ew0KDQorICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1czsNCg0KKyAgRUZJX1BFSV9T TUJVUzJfUFBJICAgICAgICAqU21CdXM7DQoNCisgIEVGSV9QRUlfUlNDX0hBTkRMRVJfUFBJICAg KlJzY0huZHJQcGk7DQoNCisgIEVGSV9TTUJVU19ERVZJQ0VfQUREUkVTUyAgRml4ZWRUYXJnZXRB ZGRyZXNzOw0KDQorDQoNCisgIEZpeGVkVGFyZ2V0QWRkcmVzcy5TbWJ1c0RldmljZUFkZHJlc3Mg PSBQY2RHZXQ4IChQY2RTbWJ1c1NsYXZlQWRkcmVzc0ZvckRhc2hMYW4pID4+IDE7DQoNCisgIGlm IChGaXhlZFRhcmdldEFkZHJlc3MuU21idXNEZXZpY2VBZGRyZXNzID09IDApIHsNCg0KKyAgICBy ZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KDQorICB9DQoNCisNCg0KKyAgU3RhdHVzID0gUGVpU2Vy dmljZXNMb2NhdGVQcGkgKA0KDQorICAgICAgICAgICAgICZnRWZpUGVpU21idXMyUHBpR3VpZCwN Cg0KKyAgICAgICAgICAgICAwLA0KDQorICAgICAgICAgICAgIE5VTEwsDQoNCisgICAgICAgICAg ICAgKFZPSUQgKiopJlNtQnVzDQoNCisgICAgICAgICAgICAgKTsNCg0KKyAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KDQorICAgIHJldHVybiBTdGF0dXM7DQoNCisgIH0NCg0KKw0KDQorICAv Lw0KDQorICAvLyBJZiB0aGUgbWFuYWdlZCBjbGllbnQncyBmaXJtd2FyZSBzdXBwb3J0cyBhIHN5 c3RlbSBib290LWZhaWx1cmUgd2F0Y2hkb2cgdGltZXIsDQoNCisgIC8vIHRoZSBmaXJtd2FyZSBp c3N1ZXMgdGhlIFN0b3AgV2F0Y2hkb2cgVGltZXIgY29tbWFuZCB0byBzdG9wIHRoZSB0aW1lciB0 aGF0IGlzDQoNCisgIC8vIGF1dG9tYXRpY2FsbHkgc3RhcnRlZCBieSB0aGUgYWxlcnQtc2VuZGlu ZyBkZXZpY2UgYXQgcG93ZXItb24gcmVzZXQuDQoNCisgIC8vDQoNCisgIEFzZlB1c2hQcm9ncmVz c01lc3NhZ2UgKFNtQnVzLCBGaXhlZFRhcmdldEFkZHJlc3MsIE1FU1NBR0VfRVJST1JfTEVWRUxf U1lTVEVNX01BTkFHRU1FTlQsIChVSU5UOCAqKSZtTXNnU3RvcFRpbWVyKTsNCg0KKw0KDQorICAv LyBQcm9ncmVzcyBtZXNzYWdlIC0gQklPUyBQcmVzZW50Lg0KDQorICBBc2ZQdXNoUHJvZ3Jlc3NN ZXNzYWdlIChTbUJ1cywgRml4ZWRUYXJnZXRBZGRyZXNzLCBNRVNTQUdFX0VSUk9SX0xFVkVMX1BS T0dSRVNTLCAoVUlOVDggKikmbU1zZ0Jpb3NQcmVzZW50KTsNCg0KKw0KDQorICAvLyBQcm9ncmVz cyBtZXNzYWdlIC0gU3RhcnRlZCBtZW1vcnkgaW5pdGlhbGl6YXRpb24gYW5kIHRlc3QuDQoNCisg IEFzZlB1c2hQcm9ncmVzc01lc3NhZ2UgKFNtQnVzLCBGaXhlZFRhcmdldEFkZHJlc3MsIE1FU1NB R0VfRVJST1JfTEVWRUxfUFJPR1JFU1MsIChVSU5UOCAqKSZtTXNnTWVtb3J5SW5pdCk7DQoNCisN Cg0KKyAgUGVpU2VydmljZXNOb3RpZnlQcGkgKCZtTWVtb3J5RGlzY292ZXJlZE5vdGlmeURlcyk7 DQoNCisNCg0KKyAgU3RhdHVzID0gUGVpU2VydmljZXNMb2NhdGVQcGkgKA0KDQorICAgICAgICAg ICAgICZnRWZpUGVpUnNjSGFuZGxlclBwaUd1aWQsDQoNCisgICAgICAgICAgICAgMCwNCg0KKyAg ICAgICAgICAgICBOVUxMLA0KDQorICAgICAgICAgICAgIChWT0lEICoqKSZSc2NIbmRyUHBpDQoN CisgICAgICAgICAgICAgKTsNCg0KKyAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCg0KKyAg ICBSc2NIbmRyUHBpLT5SZWdpc3RlciAoKEVGSV9QRUlfUlNDX0hBTkRMRVJfQ0FMTEJBQ0spQXNm UGVpU3RhdHVzQ29kZUNhbGxCYWNrKTsNCg0KKyAgfQ0KDQorDQoNCisgIHJldHVybiBFRklfU1VD Q0VTUzsNCg0KK30NCg0KZGlmZiAtLWdpdCBhL0FzZlBrZy9MaWJyYXJ5L0FzZkFjcGlUYWJsZUxp Yi9Bc2ZBY3BpVGFibGVMaWIuYyBiL0FzZlBrZy9MaWJyYXJ5L0FzZkFjcGlUYWJsZUxpYi9Bc2ZB Y3BpVGFibGVMaWIuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4u NzQ3NmRiZjUyNzUyDQotLS0gL2Rldi9udWxsDQorKysgYi9Bc2ZQa2cvTGlicmFyeS9Bc2ZBY3Bp VGFibGVMaWIvQXNmQWNwaVRhYmxlTGliLmMNCkBAIC0wLDAgKzEsMjEwIEBADQorLyoqIEBmaWxl DQoNCisgIEFzZiBBY3BpIHRhYmxlDQoNCisNCg0KKyAgSW5zdGFsbCBBc2YgQWNwaSB0YWJsZQ0K DQorDQoNCisgIENvcHlyaWdodCAoYykgMTk4NSAtIDIwMjIsIEFNSS4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+DQoNCisgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50DQoNCisqKi8NCg0KKw0KDQorI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1Rh YmxlTGliLmg+DQoNCisjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KDQorI2luY2x1ZGUg PFByb3RvY29sL0FjcGlTeXN0ZW1EZXNjcmlwdGlvblRhYmxlLmg+DQoNCisjaW5jbHVkZSA8SW5k dXN0cnlTdGFuZGFyZC9BbGVydFN0YW5kYXJkRm9ybWF0VGFibGUuaD4NCg0KKyNpbmNsdWRlIDxJ bmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCg0KKyNpbmNsdWRlIDxQcm90b2NvbC9BY3BpVGFibGUu aD4NCg0KKw0KDQorLy8gQVNGIFRhYmxlIERlZmluaXRpb25zDQoNCisvLyBCZWxvdyBhcnJheSBz aXplIGRlZmluZSBzaG91bGQgZm9sbG93IEFzZkFjcGlUYWJsZSBzZXR0aW5nDQoNCisjZGVmaW5l IEFTRl9SQ1RMX0RFVklDRVNfQVJSQVlfTEVOR1RIICA0DQoNCisjZGVmaW5lIEFTRl9BRERSX0RF VklDRV9BUlJBWV9MRU5HVEggICAxMQ0KDQorDQoNCisjcHJhZ21hIHBhY2socHVzaCwxKQ0KDQor DQoNCisvLw0KDQorLy8gQWxlcnQgUmVtb3RlIENvbnRyb2wgU3lzdGVtIEFjdGlvbnMuDQoNCisv Lw0KDQordHlwZWRlZiBzdHJ1Y3Qgew0KDQorICBFRklfQUNQSV9BU0ZfUkNUTCAgICAgICAgICAg QXNmUmN0bDsNCg0KKyAgRUZJX0FDUElfQVNGX0NPTlRST0xEQVRBICAgIENvbnRyb2xEYXRhQXJy YXlbQVNGX1JDVExfREVWSUNFU19BUlJBWV9MRU5HVEhdOw0KDQorfSBBQ1BJX0FTRl9SQ1RMX0FM TDsNCg0KKw0KDQorLy8NCg0KKy8vIFNtQnVzIERldmljZXMgd2l0aCBmaXhlZCBhZGRyZXNzZXMu DQoNCisvLw0KDQordHlwZWRlZiBzdHJ1Y3Qgew0KDQorICBFRklfQUNQSV9BU0ZfQUREUiAgICBB c2ZBZGRyOw0KDQorICBVSU5UOCAgICAgICAgICAgICAgICBGaXhlZFNtQnVzQWRkcmVzc2VzW0FT Rl9BRERSX0RFVklDRV9BUlJBWV9MRU5HVEhdOw0KDQorfSBBQ1BJX0FTRl9BRERSX0FMTDsNCg0K Kw0KDQorLy8NCg0KKy8vIEFDUEkgMS4wIFN0cnVjdHVyZSBmb3IgQVNGIERlc2NyaXB0b3IgVGFi bGUuDQoNCisvLw0KDQordHlwZWRlZiBzdHJ1Y3Qgew0KDQorICBFRklfQUNQSV9TRFRfSEVBREVS ICAgIEhlYWRlcjsNCg0KKyAgRUZJX0FDUElfQVNGX0lORk8gICAgICBBc2ZJbmZvOw0KDQorICBB Q1BJX0FTRl9SQ1RMX0FMTCAgICAgIEFzZlJjdGxBbGw7DQoNCisgIEVGSV9BQ1BJX0FTRl9STUNQ ICAgICAgQXNmUm1jcDsNCg0KKyAgQUNQSV9BU0ZfQUREUl9BTEwgICAgICBBc2ZBZGRyQWxsOw0K DQorfSBBU0ZfREVTQ1JJUFRJT05fVEFCTEU7DQoNCisNCg0KKyNwcmFnbWEgcGFjayhwb3ApDQoN CisNCg0KKyNkZWZpbmUgRUZJX0FDUElfMV8wX0FTRl9ERVNDUklQVElPTl9UQUJMRV9SRVZJU0lP TiAgMHgyMA0KDQorDQoNCitBU0ZfREVTQ1JJUFRJT05fVEFCTEUgIEFzZkFjcGlUYWJsZSA9IHsN Cg0KKyAgew0KDQorICAgIEVGSV9BQ1BJX0FTRl9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUs DQoNCisgICAgc2l6ZW9mIChBU0ZfREVTQ1JJUFRJT05fVEFCTEUpLA0KDQorICAgIEVGSV9BQ1BJ XzFfMF9BU0ZfREVTQ1JJUFRJT05fVEFCTEVfUkVWSVNJT04sDQoNCisgICAgMCwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIENoZWNrc3VtDQoNCisNCg0K KyAgICAvLyBPRU0gaWRlbnRpZmljYXRpb24NCg0KKyAgICB7ICdPJywgICdFJywgICdNJywgICdf JywgJ0knLCAnRCcgfSwNCg0KKw0KDQorICAgIC8vIE9FTSB0YWJsZSBpZGVudGlmaWNhdGlvbg0K DQorICAgIHsgJ0QnLCAgJzgnLCAgJzYnLCAgJzUnLCAnRycsICdDJywgJ0gnLCAnICd9LCAgIC8v IE9FTSB0YWJsZSBpZGVudGlmaWNhdGlvbg0KDQorDQoNCisgICAgMSwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT0VNIHJldmlzaW9uIG51bWJlcg0KDQor ICAgICgoKCgoJ00nIDw8IDgpICsgJ1MnKSA8PCA4KSArICdGJykgPDwgOCkgKyAnVCcsIC8vIEFT TCBjb21waWxlciB2ZW5kb3IgSUQNCg0KKyAgICAxMDAwMDAwICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvLyBBU0wgY29tcGlsZXIgcmV2aXNpb24gbnVtYmVyDQoNCisg IH0sDQoNCisgIHsNCg0KKyAgICAvLw0KDQorICAgIC8vIEVGSV9BQ1BJX0FTRl9JTkZPDQoNCisg ICAgLy8NCg0KKyAgICB7DQoNCisgICAgICAweDAwLCAgICAgICAgICAgICAgICAgICAgICAvLyBU eXBlICJBU0ZfSU5GTyINCg0KKyAgICAgIDB4MDAsICAgICAgICAgICAgICAgICAgICAgIC8vIFJl c2VydmVkDQoNCisgICAgICBzaXplb2YgKEVGSV9BQ1BJX0FTRl9JTkZPKSAvLyBMZW5ndGgNCg0K KyAgICB9LA0KDQorICAgIDB4MDUsICAgICAgICAgICAgICAgLy8gTWluIFdhdGNoZG9nIFJlc2V0 IFZhbHVlDQoNCisgICAgMHhGRiwgICAgICAgICAgICAgICAvLyBNaW4gQVNGIFNlbnNvciBwb2xs IFdhaXQgVGltZQ0KDQorICAgIDB4MDAwMSwgICAgICAgICAgICAgLy8gU3lzdGVtIElEDQoNCisg ICAgMHg1NzAxMDAwMCwgICAgICAgICAvLyBJQU5BIE1hbnVmYWN0dXJlIElEIGZvciBJbnRlbA0K DQorICAgIDB4MDAsICAgICAgICAgICAgICAgLy8gRmVhdHVyZSBGbGFnDQoNCisgICAgew0KDQor ICAgICAgMHgwMCwgICAgICAgICAgICAgLy8gUmVzZXJ2ZWQNCg0KKyAgICAgIDB4MDAsDQoNCisg ICAgICAweDAwDQoNCisgICAgfSAvLyBSZXNlcnZlZA0KDQorICB9LA0KDQorICB7DQoNCisgICAg Ly8NCg0KKyAgICAvLyBBQ1BJX0FTRl9SQ1RMX0FMTA0KDQorICAgIC8vDQoNCisgICAgew0KDQor ICAgICAgLy8NCg0KKyAgICAgIC8vIEVGSV9BQ1BJX0FTRl9SQ1RMDQoNCisgICAgICAvLw0KDQor ICAgICAgew0KDQorICAgICAgICAweDAyLCAgICAgICAgICAgICAgICAgICAgICAvLyBUeXBlICJB U0ZfUkNUTCINCg0KKyAgICAgICAgMHgwMCwgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXJ2 ZWQNCg0KKyAgICAgICAgc2l6ZW9mIChBQ1BJX0FTRl9SQ1RMX0FMTCkgLy8gTGVuZ3RoDQoNCisg ICAgICB9LA0KDQorICAgICAgMHgwNCwgICAgICAgICAgICAgLy8gTnVtYmVyIG9mIENvbnRyb2xz DQoNCisgICAgICAweDA0LCAgICAgICAgICAgICAvLyBBcnJheSBFbGVtZW50IExlbmd0aA0KDQor ICAgICAgMHgwMDAwICAgICAgICAgICAgLy8gUmVzZXJ2ZWQNCg0KKyAgICB9LA0KDQorICAgIHsN Cg0KKyAgICAgIC8vDQoNCisgICAgICAvLyBFRklfQUNQSV9BU0ZfQ09OVFJPTERBVEENCg0KKyAg ICAgIC8vDQoNCisgICAgICB7IDB4MDAsIDB4ODgsIDB4MDAsIDB4MDMgfSwgLy8gQ29udHJvbCAw IC0tPiBSZXNldCBzeXN0ZW0NCg0KKyAgICAgIHsgMHgwMSwgMHg4OCwgMHgwMCwgMHgwMiB9LCAv LyBDb250cm9sIDEgLS0+IFBvd2VyIE9mZiBzeXN0ZW0NCg0KKyAgICAgIHsgMHgwMiwgMHg4OCwg MHgwMCwgMHgwMSB9LCAvLyBDb250cm9sIDIgLS0+IFBvd2VyIE9uIHN5c3RlbQ0KDQorICAgICAg eyAweDAzLCAweDg4LCAweDAwLCAweDA0IH0gIC8vIENvbnRyb2wgMyAtLT4gUG93ZXIgQ3ljbGUg UmVzZXQgKG9mZiB0aGVuIG9uKQ0KDQorICAgIH0NCg0KKyAgfSwNCg0KKyAgew0KDQorICAgIC8v DQoNCisgICAgLy8gRUZJX0FDUElfQVNGX1JNQ1ANCg0KKyAgICAvLw0KDQorICAgIHsNCg0KKyAg ICAgIDB4MDMsICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgIkFTRl9STUNQIg0KDQorICAg ICAgMHgwMCwgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXJ2ZWQNCg0KKyAgICAgIHNpemVv ZiAoRUZJX0FDUElfQVNGX1JNQ1ApIC8vIExlbmd0aA0KDQorICAgIH0sDQoNCisgICAgew0KDQor ICAgICAgLy8gUmVtb3RlIENvbnRyb2wgQ2FwYWJpbGl0aWVzIHN1cHBvcnRlZCBCaXQgTWFza3MN Cg0KKyAgICAgIDB4MDAsICAgICAgICAgICAgICAgICAgICAgICAvLyBTeXN0ZW0gRmlybXdhcmUg Q2FwYWJpbGl0aWVzIEJpdCBNYXNrIGJ5dGUgMQ0KDQorICAgICAgMHgwMCwgICAgICAgICAgICAg ICAgICAgICAgIC8vIFN5c3RlbSBGaXJtd2FyZSBDYXBhYmlsaXRpZXMgQml0IE1hc2sgYnl0ZSAy DQoNCisgICAgICAweDAwLCAgICAgICAgICAgICAgICAgICAgICAgLy8gU3lzdGVtIEZpcm13YXJl IENhcGFiaWxpdGllcyBCaXQgTWFzayBieXRlIDMNCg0KKyAgICAgIDB4MDAsICAgICAgICAgICAg ICAgICAgICAgICAvLyBTeXN0ZW0gRmlybXdhcmUgQ2FwYWJpbGl0aWVzIEJpdCBNYXNrIGJ5dGUg NA0KDQorICAgICAgMHgwMCwgICAgICAgICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwgQ29tbWFu ZHMgQml0IE1hc2sgYnl0ZSAxDQoNCisgICAgICAweDAwLCAgICAgICAgICAgICAgICAgICAgICAg Ly8gU3BlY2lhbCBDb21tYW5kcyBCaXQgTWFzayBieXRlIDINCg0KKyAgICAgIDB4RjAgICAgICAg ICAgICAgICAgICAgICAgICAvLyBTeXN0ZW0gQ2FwYWJpbGl0aWVzIEJpdCBNYXNrIChTdXBwb3J0 cyBSZXNldCwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQb3dlci1V cCwgUG93ZXItRG93biwgUG93ZXItQ3ljbGUgUmVzZXQgZm9yDQoNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8gY29tcGF0IGFuZCBzZWN1cmUgcG9ydC4NCg0KKyAgICB9LA0K DQorICAgIDB4MDAsICAgICAgICAgICAgICAgICAgICAgICAvLyBCb290IE9wdGlvbiBDb21wbGV0 ZSBDb2RlDQoNCisgICAgMHg1NzAxMDAwMCwgICAgICAgICAgICAgICAgIC8vIElBTkEgSUQgZm9y IEludGVsIE1hbnVmYWN0dXJlcg0KDQorICAgIDB4MDAsICAgICAgICAgICAgICAgICAgICAgICAv LyBTcGVjaWFsIENvbW1hbmQNCg0KKyAgICB7IDB4MDAsIDB4MDAgfSwgICAgICAgICAgICAgLy8g U3BlY2lhbCBDb21tYW5kIFBhcmFtZXRlcg0KDQorICAgIHsgMHgwMCwgMHgwMCB9LCAgICAgICAg ICAgICAvLyBCb290IE9wdGlvbnMNCg0KKyAgICB7IDB4MDAsIDB4MDAgfSAgICAgICAgICAgICAg Ly8gT0VNIFBhcmFtZXRlcnMNCg0KKyAgfSwNCg0KKyAgew0KDQorICAgIC8vDQoNCisgICAgLy8g QUNQSV9BU0ZfQUREUl9BTEwNCg0KKyAgICAvLw0KDQorICAgIHsNCg0KKyAgICAgIC8vDQoNCisg ICAgICAvLyBFRklfQUNQSV9BU0ZfQUREUg0KDQorICAgICAgLy8NCg0KKyAgICAgIHsNCg0KKyAg ICAgICAgMHg4NCwgICAgICAgICAgICAgICAgICAgICAgLy8gVHlwZSAiQVNGX0FERFIiLCBsYXN0 IHJlY29yZA0KDQorICAgICAgICAweDAwLCAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNlcnZl ZA0KDQorICAgICAgICBzaXplb2YgKEFDUElfQVNGX0FERFJfQUxMKSAvLyBMZW5ndGgNCg0KKyAg ICAgIH0sDQoNCisgICAgICAweDAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNFRVBST00g QWRkcmVzcw0KDQorICAgICAgQVNGX0FERFJfREVWSUNFX0FSUkFZX0xFTkdUSCAvLyBOdW1iZXIg T2YgRGV2aWNlcw0KDQorICAgIH0sDQoNCisgICAgLy8NCg0KKyAgICAvLyBGaXhlZCBTTUJ1cyBB ZGRyZXNzDQoNCisgICAgLy8NCg0KKyAgICB7DQoNCisgICAgICAweDVDLCAweDY4LCAweDg4LCAw eEMyLCAweEQyLA0KDQorICAgICAgMHhEQywgMHhBMCwgMHhBMiwgMHhBNCwgMHhBNiwNCg0KKyAg ICAgIDB4QzgNCg0KKyAgICB9DQoNCisgIH0NCg0KK307DQoNCisNCg0KKy8qKg0KDQorICBUaGlz IGZ1bmN0aW9uIGluc3RhbGwgdGhlIEFTRiBhY3BpIFRhYmxlLg0KDQorDQoNCisgIEBwYXJhbVtp bl0gIEV2ZW50ICAgICBBIHBvaW50ZXIgdG8gdGhlIEV2ZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBj YWxsYmFjay4NCg0KKyAgQHBhcmFtW2luXSAgQ29udGV4dCAgIEEgcG9pbnRlciB0byBwcml2YXRl IGRhdGEgcmVnaXN0ZXJlZCB3aXRoIHRoZSBjYWxsYmFjayBmdW5jdGlvbi4NCg0KKyoqLw0KDQor Vk9JRA0KDQorRUZJQVBJDQoNCitJbnN0YWxsQXNmQWNwaVRhYmxlRXZlbnQgICgNCg0KKyAgSU4g RUZJX0VWRU5UICBFdmVudCwNCg0KKyAgSU4gVk9JRCAgICAgICAqQ29udGV4dA0KDQorICApDQoN Cit7DQoNCisgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICBTdGF0dXM7DQoNCisgIFVJTlROICAg ICAgICAgICAgICAgICAgICBUYWJsZUhhbmRsZSA9IDA7DQoNCisgIEVGSV9BQ1BJX1RBQkxFX1BS T1RPQ09MICAqQWNwaVRhYmxlUHJvdG9jb2w7DQoNCisNCg0KKyAgU3RhdHVzID0gZ0JTLT5Mb2Nh dGVQcm90b2NvbCAoJmdFZmlBY3BpVGFibGVQcm90b2NvbEd1aWQsIE5VTEwsIChWT0lEICoqKSZB Y3BpVGFibGVQcm90b2NvbCk7DQoNCisNCg0KKyAgaWYgKCBFRklfRVJST1IgKFN0YXR1cykpIHsN Cg0KKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiTG9jYXRlIEFjcGkgcHJvdG9jb2wgJXIgRXJy b3JcbiIsIFN0YXR1cykpOw0KDQorICAgIHJldHVybjsNCg0KKyAgfQ0KDQorDQoNCisgIGlmIChF dmVudCAhPSBOVUxMKSB7DQoNCisgICAgZ0JTLT5DbG9zZUV2ZW50IChFdmVudCk7DQoNCisgIH0N Cg0KKw0KDQorICBBY3BpVGFibGVQcm90b2NvbC0+SW5zdGFsbEFjcGlUYWJsZSAoDQoNCisgICAg ICAgICAgICAgICAgICAgICAgIEFjcGlUYWJsZVByb3RvY29sLA0KDQorICAgICAgICAgICAgICAg ICAgICAgICAmQXNmQWNwaVRhYmxlLA0KDQorICAgICAgICAgICAgICAgICAgICAgICBBc2ZBY3Bp VGFibGUuSGVhZGVyLkxlbmd0aCwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgJlRhYmxlSGFu ZGxlDQoNCisgICAgICAgICAgICAgICAgICAgICAgICk7DQoNCisNCg0KKyAgcmV0dXJuOw0KDQor fQ0KDQpkaWZmIC0tZ2l0IGEvQXNmUGtnL0FzZi9Bc2ZEeGUvQXNmRHhlLmggYi9Bc2ZQa2cvQXNm L0FzZkR4ZS9Bc2ZEeGUuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAw MC4uN2Y1OWZjMjdkODZkDQotLS0gL2Rldi9udWxsDQorKysgYi9Bc2ZQa2cvQXNmL0FzZkR4ZS9B c2ZEeGUuaA0KQEAgLTAsMCArMSw2NyBAQA0KKy8qKiBAZmlsZQ0KDQorICBBc2YgRHhlIGRyaXZl ciB3aGljaCBpcyB1c2VkIGZvciBzZW5kaW5nIGV2ZW50IHJlY29yZCBsb2cgdG8gTklDIG9yIHJl Y2VpdmluZw0KDQorICBib290IG9wdGlvbiBjb21tYW5kIGZyb20gTklDIGFuZCBwcm92aWRlIGlu IEFzZiBEeGUgcHJvdG9jb2wuDQoNCisNCg0KKyAgQ29weXJpZ2h0IChjKSAxOTg1IC0gMjAyMiwg QU1JLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCg0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCg0KKyoqLw0KDQorDQoNCisjaWZuZGVmIF9fQVNGX0RY RV9IX18NCg0KKyNkZWZpbmUgX19BU0ZfRFhFX0hfXw0KDQorDQoNCisjaW5jbHVkZSA8UGkvUGlT dGF0dXNDb2RlLmg+DQoNCisjaW5jbHVkZSA8UHJvdG9jb2wvQXNmUHJvdG9jb2wuaD4NCg0KKyNp bmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL1NtQnVzLmg+DQoNCisjaW5jbHVkZSA8UHJvdG9jb2wv U21idXNIYy5oPg0KDQorI2luY2x1ZGUgPFByb3RvY29sL1JlcG9ydFN0YXR1c0NvZGVIYW5kbGVy Lmg+DQoNCisjaW5jbHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQoNCisjaW5jbHVkZSA8TGlicmFy eS9VZWZpTGliLmg+DQoNCisjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KDQorI2luY2x1 ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQoNCisjaW5jbHVkZSA8TGli cmFyeS9VZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWIuaD4NCg0KKyNpbmNsdWRlIDxMaWJyYXJ5 L0Jhc2VNZW1vcnlMaWIuaD4NCg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQoNCisj aW5jbHVkZSA8UHJvdG9jb2wvQWNwaVRhYmxlLmg+DQoNCisjaW5jbHVkZSA8TGlicmFyeS9Bc2ZB Y3BpVGFibGVMaWIuaD4NCg0KKyNpbmNsdWRlIDxBc2ZNZXNzYWdlcy5oPg0KDQorDQoNCitleHRl cm4gTUVTU0FHRV9EQVRBX0hVQl9NQVAgICAgIG1Nc2dQcm9ncmVzc01hcFtdOw0KDQorZXh0ZXJu IE1FU1NBR0VfREFUQV9IVUJfTUFQICAgICBtTXNnRXJyb3JNYXBbXTsNCg0KK2V4dGVybiBBU0Zf TUVTU0FHRSAgICAgICAgICAgICAgbUFzZk1lc3NhZ2VzW107DQoNCitleHRlcm4gVUlOVE4gICAg ICAgICAgICAgICAgICAgIG1Nc2dQcm9ncmVzc01hcFNpemU7DQoNCitleHRlcm4gVUlOVE4gICAg ICAgICAgICAgICAgICAgIG1Nc2dFcnJvck1hcFNpemU7DQoNCitleHRlcm4gVUlOVE4gICAgICAg ICAgICAgICAgICAgIG1Bc2ZNZXNzYWdlc1NpemU7DQoNCitleHRlcm4gQVNGX01TR19OT1JFVFJB TlNNSVQgICAgIG1Bc2ZTeXN0ZW1TdGF0ZTsNCg0KKw0KDQorLyoqDQoNCisgIFRoaXMgZnVuY3Rp b24gcHVzaGVzIHRoZSBEWEUgU3lzdGVtIEZpcm13YXJlIEV2ZW50cy4NCg0KKw0KDQorICBAcGFy YW1baW5dIENvbW1hbmQgICAgICBDb21tYW5kIG9mIFN5c3RlbSBGaXJtd2FyZSBFdmVudHMuDQoN CisgIEBwYXJhbVtpbl0gTGVuZ3RoICAgICAgIExlbmd0aCBvZiB0aGUgZGF0YSBpbiBieXRlcy4N Cg0KKyAgQHBhcmFtW2luXSBBc2ZFdmVudCAgICAgU3lzdGVtIEZpcm13YXJlIEV2ZW50cyBDb21t YW5kLg0KDQorDQoNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgIFB1c2ggRXZlbnQgc3VjY2Vz c2Z1bGx5Lg0KDQorICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCBQdXNoIEV2ZW50IGVycm9yLg0K DQorKiovDQoNCitFRklfU1RBVFVTDQoNCitFRklBUEkNCg0KK0FzZlB1c2hFdmVudCAgKA0KDQor ICBJTiAgVUlOVDggIENvbW1hbmQsDQoNCisgIElOICBVSU5UTiAgTGVuZ3RoLA0KDQorICBJTiAg VUlOVDggICpBc2ZFdmVudA0KDQorICApOw0KDQorDQoNCisvKioNCg0KKyAgVGhpcyBmdW5jdGlv biBpbnN0YWxsIHRoZSBBU0YgYWNwaSBUYWJsZS4NCg0KKw0KDQorICBAcGFyYW1baW5dICBFdmVu dCAgICAgQSBwb2ludGVyIHRvIHRoZSBFdmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgY2FsbGJhY2su DQoNCisgIEBwYXJhbVtpbl0gIENvbnRleHQgICBBIHBvaW50ZXIgdG8gcHJpdmF0ZSBkYXRhIHJl Z2lzdGVyZWQgd2l0aCB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uDQoNCisqKi8NCg0KK1ZPSUQNCg0K K0VGSUFQSQ0KDQorSW5zdGFsbEFzZkFjcGlUYWJsZUV2ZW50ICAoDQoNCisgIElOIEVGSV9FVkVO VCAgRXZlbnQsDQoNCisgIElOIFZPSUQgICAgICAgKkNvbnRleHQNCg0KKyAgKTsNCg0KKw0KDQor I2VuZGlmIC8vX19BU0ZfRFhFX0hfXw0KDQpkaWZmIC0tZ2l0IGEvQXNmUGtnL0FzZi9Bc2ZEeGUv QXNmRHhlLmluZiBiL0FzZlBrZy9Bc2YvQXNmRHhlL0FzZkR4ZS5pbmYNCm5ldyBmaWxlIG1vZGUg MTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjI0N2ZjNmNhOWRhNg0KLS0tIC9kZXYvbnVsbA0K KysrIGIvQXNmUGtnL0FzZi9Bc2ZEeGUvQXNmRHhlLmluZg0KQEAgLTAsMCArMSw1MiBAQA0KKyMj IEBmaWxlDQoNCisjICBBc2YgRHhlIGRyaXZlciB3aGljaCBpcyB1c2VkIGZvciBzZW5kaW5nIGV2 ZW50IHJlY29yZCBsb2cgdG8gTklDIG9yIHJlY2VpdmluZw0KDQorIyAgYm9vdCBvcHRpb24gY29t bWFuZCBmcm9tIE5JQyBhbmQgcHJvdmlkZSBpbiBBc2YgRHhlIHByb3RvY29sLg0KDQorIw0KDQor IyAgQ29weXJpZ2h0IChjKSAxOTg1IC0gMjAyMiwgQU1JLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCg0KKyMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQoN CisjIw0KDQorDQoNCitbRGVmaW5lc10NCg0KKyAgSU5GX1ZFUlNJT04gICAgICAgICAgID0gMHgw MDAxMDAwNQ0KDQorICBCQVNFX05BTUUgICAgICAgICAgICAgPSBBc2ZEeGUNCg0KKyAgTU9EVUxF X1VOSV9GSUxFICAgICAgID0gQXNmRHhlLnVuaQ0KDQorICBGSUxFX0dVSUQgICAgICAgICAgICAg PSBFRDdBRDFBMi0xNDI3LTQxRUMtQTcxRS0zMkVDOUExNTQ5RTgNCg0KKyAgTU9EVUxFX1RZUEUg ICAgICAgICAgID0gRFhFX0RSSVZFUg0KDQorICBWRVJTSU9OX1NUUklORyAgICAgICAgPSAxLjAN Cg0KKyAgRU5UUllfUE9JTlQgICAgICAgICAgID0gQXNmRHhlRW50cnkNCg0KKw0KDQorW1NvdXJj ZXNdDQoNCisgIEFzZkR4ZS5jDQoNCisgIEFzZkR4ZS5oDQoNCisgIEFzZkR4ZUV2ZW50LmMNCg0K Kw0KDQorW1BhY2thZ2VzXQ0KDQorICBNZGVQa2cvTWRlUGtnLmRlYw0KDQorICBBc2ZQa2cvQXNm UGtnLmRlYw0KDQorDQoNCitbTGlicmFyeUNsYXNzZXNdDQoNCisgIFVlZmlEcml2ZXJFbnRyeVBv aW50DQoNCisgIFVlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYg0KDQorICBEZWJ1Z0xpYg0KDQor ICBCYXNlTWVtb3J5TGliDQoNCisgIFByaW50TGliDQoNCisgIEFzZkFjcGlUYWJsZUxpYg0KDQor ICBVZWZpTGliDQoNCisNCg0KK1tQcm90b2NvbHNdDQoNCisgIGdFZmlSc2NIYW5kbGVyUHJvdG9j b2xHdWlkDQoNCisgIGdBc2ZQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgIyBQcm9kdWNlDQoN CisgIGdFZmlBY3BpVGFibGVQcm90b2NvbEd1aWQNCg0KKyAgZ0VmaVNtYnVzSGNQcm90b2NvbEd1 aWQNCg0KKw0KDQorW0d1aWRzXQ0KDQorDQoNCitbRml4ZWRQY2RdDQoNCisgIGdBc2ZQa2dUb2tl blNwYWNlR3VpZC5QY2RTbWJ1c1NsYXZlQWRkcmVzc0ZvckRhc2hMYW4NCg0KKyAgZ0FzZlBrZ1Rv a2VuU3BhY2VHdWlkLlBjZEFzZk1lc3NhZ2VFcnJvckxldmVsDQoNCisNCg0KK1tEZXBleF0NCg0K KyAgVFJVRQ0KDQorDQoNCitbVXNlckV4dGVuc2lvbnMuVGlhbm9Db3JlLiJFeHRyYUZpbGVzIl0N Cg0KKyAgQXNmRHhlRXh0cmEudW5pDQoNCmRpZmYgLS1naXQgYS9Bc2ZQa2cvQXNmL0FzZkR4ZS9B c2ZEeGUudW5pIGIvQXNmUGtnL0FzZi9Bc2ZEeGUvQXNmRHhlLnVuaQ0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uMDJmZjFmNzI5MzFkDQotLS0gL2Rldi9udWxsDQor KysgYi9Bc2ZQa2cvQXNmL0FzZkR4ZS9Bc2ZEeGUudW5pDQpAQCAtMCwwICsxLDE1IEBADQorLy8g LyoqIEBmaWxlDQoNCisvLyBBc2YgRFhFIE1vZHVsZQ0KDQorLy8NCg0KKy8vIEZvbGxvdyBBc2Yg c3BlYyB0byBzZW5kIHByb2dyZXNzIG9yIGVycm9yIG1lc3NhZ2UgdG8gU21idXMgZGV2aWNlDQoN CisvLw0KDQorLy8gQ29weXJpZ2h0IChjKSAxOTg1IC0gMjAyMiwgQU1JLiBBbGwgcmlnaHRzIHJl c2VydmVkLjxCUj4NCg0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ut UGF0ZW50DQoNCisvLw0KDQorLy8gKiovDQoNCisNCg0KKw0KDQorI3N0cmluZyBTVFJfTU9EVUxF X0FCU1RSQUNUICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiQXNmIERYRSBNb2R1bGUiDQoN CisNCg0KKyNzdHJpbmcgU1RSX01PRFVMRV9ERVNDUklQVElPTiAgICAgICAgICAjbGFuZ3VhZ2Ug ZW4tVVMgIkZvbGxvdyBBc2Ygc3BlYyB0byBzZW5kIHByb2dyZXNzIG9yIGVycm9yIG1lc3NhZ2Ug dG8gU21idXMgZGV2aWNlLiINCg0KKw0KDQpkaWZmIC0tZ2l0IGEvQXNmUGtnL0FzZi9Bc2ZEeGUv QXNmRHhlRXh0cmEudW5pIGIvQXNmUGtnL0FzZi9Bc2ZEeGUvQXNmRHhlRXh0cmEudW5pDQpuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi5kYmM3NDcyNTdjODUNCi0tLSAv ZGV2L251bGwNCisrKyBiL0FzZlBrZy9Bc2YvQXNmRHhlL0FzZkR4ZUV4dHJhLnVuaQ0KQEAgLTAs MCArMSwxMyBAQA0KKy8vIC8qKiBAZmlsZQ0KDQorLy8gQXNmIER4ZSBNb2R1bGUNCg0KKy8vDQoN CisvLyBGb2xsb3cgQXNmIHNwZWMgdG8gc2VuZCBwcm9ncmVzcyBvciBlcnJvciBtZXNzYWdlIHRv IFNtYnVzIGRldmljZQ0KDQorLy8NCg0KKy8vIENvcHlyaWdodCAoYykgMTk4NSAtIDIwMjIsIEFN SS4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQoNCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KDQorLy8NCg0KKy8vICoqLw0KDQorDQoNCisjc3RyaW5n IFNUUl9QUk9QRVJUSUVTX01PRFVMRV9OQU1FDQoNCisjbGFuZ3VhZ2UgZW4tVVMNCg0KKyJBc2Yg RFhFIg0KDQpkaWZmIC0tZ2l0IGEvQXNmUGtnL0FzZi9Bc2ZQZWkvQXNmUGVpLmluZiBiL0FzZlBr Zy9Bc2YvQXNmUGVpL0FzZlBlaS5pbmYNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw MDAwMDAwMDAuLjA1NjlhODZlMDkyNQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvQXNmUGtnL0FzZi9B c2ZQZWkvQXNmUGVpLmluZg0KQEAgLTAsMCArMSw1NyBAQA0KKyMjIEBmaWxlDQoNCisjICBBc2Yg UEVJTQ0KDQorIw0KDQorIyAgRm9sbG93IEFzZiBzcGVjIHRvIHNlbmQgcHJvZ3Jlc3Mgb3IgZXJy b3IgbWVzc2FnZSB0byBTbWJ1cyBkZXZpY2UNCg0KKyMNCg0KKyMgIENvcHlyaWdodCAoYykgMTk4 NSAtIDIwMjIsIEFNSS4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQoNCisjICBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KDQorIyMNCg0KKw0KDQorW0RlZmlu ZXNdDQoNCisgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMTAwMDUNCg0K KyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gQXNmUGVpDQoNCisgIE1PRFVMRV9V TklfRklMRSAgICAgICAgICAgICAgICA9IEFzZlBlaS51bmkNCg0KKyAgRklMRV9HVUlEICAgICAg ICAgICAgICAgICAgICAgID0gRDI2MDNCMDktQjhBMi00ODM3LUFBMUUtRUFFOEU0REY3OEU3DQoN CisgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9IFBFSU0NCg0KKyAgVkVSU0lPTl9T VFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQoNCisgIEVOVFJZX1BPSU5UICAgICAgICAgICAg ICAgICAgICA9IEFzZlBlaUVudHJ5DQoNCisNCg0KKyMNCg0KKyMgVGhlIGZvbGxvd2luZyBpbmZv cm1hdGlvbiBpcyBmb3IgcmVmZXJlbmNlIG9ubHkgYW5kIG5vdCByZXF1aXJlZCBieSB0aGUgYnVp bGQgdG9vbHMuDQoNCisjDQoNCisjICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9IElB MzIgWDY0IEVCQw0KDQorIw0KDQorDQoNCitbU291cmNlc10NCg0KKyAgQXNmUGVpLmMNCg0KKw0K DQorW1BhY2thZ2VzXQ0KDQorICBNZGVQa2cvTWRlUGtnLmRlYw0KDQorICBBc2ZQa2cvQXNmUGtn LmRlYw0KDQorDQoNCitbTGlicmFyeUNsYXNzZXNdDQoNCisgIFBlaW1FbnRyeVBvaW50DQoNCisg IFBlaVNlcnZpY2VzTGliDQoNCisgIERlYnVnTGliDQoNCisNCg0KK1tHdWlkc10NCg0KKw0KDQor W1BwaXNdDQoNCisgIGdFZmlQZWlSc2NIYW5kbGVyUHBpR3VpZA0KDQorICBnRWZpUGVpTWVtb3J5 RGlzY292ZXJlZFBwaUd1aWQNCg0KKyAgZ0VmaVBlaVNtYnVzMlBwaUd1aWQNCg0KKw0KDQorW0Zl YXR1cmVQY2RdDQoNCisNCg0KK1tQY2RdDQoNCisNCg0KK1tGaXhlZFBjZF0NCg0KKyAgZ0FzZlBr Z1Rva2VuU3BhY2VHdWlkLlBjZFNtYnVzU2xhdmVBZGRyZXNzRm9yRGFzaExhbg0KDQorICBnQXNm UGtnVG9rZW5TcGFjZUd1aWQuUGNkQXNmTWVzc2FnZUVycm9yTGV2ZWwNCg0KKw0KDQorW0RlcGV4 XQ0KDQorICBnRWZpUGVpU21idXMyUHBpR3VpZA0KDQorDQoNCitbVXNlckV4dGVuc2lvbnMuVGlh bm9Db3JlLiJFeHRyYUZpbGVzIl0NCg0KKyAgQXNmUGVpRXh0cmEudW5pDQoNCisNCg0KZGlmZiAt LWdpdCBhL0FzZlBrZy9Bc2YvQXNmUGVpL0FzZlBlaS51bmkgYi9Bc2ZQa2cvQXNmL0FzZlBlaS9B c2ZQZWkudW5pDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi42NDY3 MTI5MTdlMTINCi0tLSAvZGV2L251bGwNCisrKyBiL0FzZlBrZy9Bc2YvQXNmUGVpL0FzZlBlaS51 bmkNCkBAIC0wLDAgKzEsMTUgQEANCisvLyAvKiogQGZpbGUNCg0KKy8vIEFzZiBQRUkgTW9kdWxl DQoNCisvLw0KDQorLy8gRm9sbG93IEFzZiBzcGVjIHRvIHNlbmQgcHJvZ3Jlc3Mgb3IgZXJyb3Ig bWVzc2FnZSB0byBTbWJ1cyBkZXZpY2UNCg0KKy8vDQoNCisvLyBDb3B5cmlnaHQgKGMpIDE5ODUg LSAyMDIyLCBBTUkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KDQorLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCg0KKy8vDQoNCisvLyAqKi8NCg0KKw0K DQorDQoNCisjc3RyaW5nIFNUUl9NT0RVTEVfQUJTVFJBQ1QgICAgICAgICAgICAgI2xhbmd1YWdl IGVuLVVTICJBc2YgUEVJIE1vZHVsZSINCg0KKw0KDQorI3N0cmluZyBTVFJfTU9EVUxFX0RFU0NS SVBUSU9OICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiRm9sbG93IEFzZiBzcGVjIHRvIHNlbmQg cHJvZ3Jlc3Mgb3IgZXJyb3IgbWVzc2FnZSB0byBTbWJ1cyBkZXZpY2UuIg0KDQorDQoNCmRpZmYg LS1naXQgYS9Bc2ZQa2cvQXNmL0FzZlBlaS9Bc2ZQZWlFeHRyYS51bmkgYi9Bc2ZQa2cvQXNmL0Fz ZlBlaS9Bc2ZQZWlFeHRyYS51bmkNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAw MDAwMDAuLjcyODE5ZjQ5ODYyYw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvQXNmUGtnL0FzZi9Bc2ZQ ZWkvQXNmUGVpRXh0cmEudW5pDQpAQCAtMCwwICsxLDEzIEBADQorLy8gLyoqIEBmaWxlDQoNCisv LyBBc2YgUEVJIE1vZHVsZQ0KDQorLy8NCg0KKy8vIEZvbGxvdyBBc2Ygc3BlYyB0byBzZW5kIHBy b2dyZXNzIG9yIGVycm9yIG1lc3NhZ2UgdG8gU21idXMgZGV2aWNlDQoNCisvLw0KDQorLy8gQ29w eXJpZ2h0IChjKSAxOTg1IC0gMjAyMiwgQU1JLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCg0K Ky8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQoNCisvLw0K DQorLy8gKiovDQoNCisNCg0KKyNzdHJpbmcgU1RSX1BST1BFUlRJRVNfTU9EVUxFX05BTUUNCg0K KyNsYW5ndWFnZSBlbi1VUw0KDQorIkFzZiBQRUkiDQoNCmRpZmYgLS1naXQgYS9Bc2ZQa2cvQXNm UGtnLmRlYyBiL0FzZlBrZy9Bc2ZQa2cuZGVjDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMDAwMDAwLi5iN2JjYTBhYzIyMzENCi0tLSAvZGV2L251bGwNCisrKyBiL0FzZlBrZy9B c2ZQa2cuZGVjDQpAQCAtMCwwICsxLDQ3IEBADQorIyMgQGZpbGUNCg0KKyMgVGhpcyBwYWNrYWdl IGRlZmluZXMgQXNmIHNwZWNpZmljIGludGVyZmFjZXMgYW5kIGxpYnJhcnkgY2xhc3Nlcy4NCg0K KyMNCg0KKyMgQ29weXJpZ2h0IChjKSAxOTg1IC0gMjAyMiwgQU1JLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLjxCUj4NCg0KKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQNCg0KKyMjDQoNCisNCg0KK1tEZWZpbmVzXQ0KDQorICBERUNfU1BFQ0lGSUNBVElPTiAgICAg ICAgICAgICAgICAgICA9IDB4MDAwMTAwMDUNCg0KKyAgUEFDS0FHRV9OQU1FICAgICAgICAgICAg ICAgICAgICAgICAgPSBBc2ZQa2cNCg0KKyAgUEFDS0FHRV9HVUlEICAgICAgICAgICAgICAgICAg ICAgICAgPSAwMjVCRTlCRC01MEIzLTQxMzktOUE3MC00MzM2RTI3NzMzOUENCg0KKyAgUEFDS0FH RV9WRVJTSU9OICAgICAgICAgICAgICAgICAgICAgPSAxLjANCg0KKw0KDQorW0luY2x1ZGVzXQ0K DQorICBJbmNsdWRlDQoNCisNCg0KK1tMaWJyYXJ5Q2xhc3Nlc10NCg0KKyAgIyMgIEBsaWJyYXJ5 Y2xhc3MgIEluc3RhbGwgQXNmIEFjcGkgdGFibGUNCg0KKyAgIyMNCg0KKyAgQXNmQWNwaVRhYmxl TGlifEFzZlBrZ1xMaWJyYXJ5XEFzZkFjcGlUYWJsZUxpYlxBc2ZBY3BpVGFibGVMaWIuaW5mDQoN CisNCg0KK1tHdWlkc10NCg0KKyAgZ0FzZlBrZ1Rva2VuU3BhY2VHdWlkICAgID0geyAweGExMmQ5 YWE0LCAweGU2OWIsIDB4NDI1YywgeyAweDk2LCAweGM1LCAweDQxLCAweDhkLCAweGIxLCAweGQw LCAweGI5LCAweDRmIH19DQoNCisNCg0KK1tQcGlzXQ0KDQorDQoNCitbUHJvdG9jb2xzXQ0KDQor ICAjIyBBc2YgcHJvdG9jb2wgR1VJRA0KDQorICAjIEluY2x1ZGUvUHJvdG9jb2wvQW1pQXNmUHJv dG9jb2wuaA0KDQorICBnQXNmUHJvdG9jb2xHdWlkICAgICAgICAgICAgICAgICAgPSAgeyAweGRl Yzg5ODI3LCAweDhhN2UsIDB4NDVlMCwgeyAweGJjLCAweGI1LCAweGQ1LCAweDNiLCAweDQ2LCAw eDE0LCAweGFkLCAweGI4IH0gfQ0KDQorDQoNCitbUGNkc0ZlYXR1cmVGbGFnXQ0KDQorDQoNCitb UGNkc0ZpeGVkQXRCdWlsZCwgUGNkc1BhdGNoYWJsZUluTW9kdWxlLCBQY2RzRHluYW1pYywgUGNk c0R5bmFtaWNFeF0NCg0KKyAgIyMgU3BlY2lmeSB0aGUgRGFzaCBsYW4gU21CdXMgc2xhdmUgYWRk cmVzcy4NCg0KKyAgIyBAUHJvbXB0IFNsYXZlIGFkZHJlc3Mgb2YgRGFzaCBsYW4NCg0KKyAgZ0Fz ZlBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNtYnVzU2xhdmVBZGRyZXNzRm9yRGFzaExhbnwweDB8VUlO VDh8MHgwMDAwMDAwMQ0KDQorDQoNCisgICMjIFRoaXMgZmxhZyBpcyB1c2VkIHRvIGNvbnRyb2wg d2hpY2ggbWVzc2FnZSB3b3VsZCBiZSBzZW5kLg0KDQorICAjICBJZiBlbmFibGVkLCBBc2YgZHJp dmVyIHdpbGwgc2VuZCBtZXNzYWdlIHRvIGRldmljZS48QlI+PEJSPg0KDQorICAjICAgQklUMCAg LSBQcm9ncmVzcyBtZXNzYWdlIGlzIGVuYWJsZWQuPEJSPg0KDQorICAjICAgQklUMSAgLSBFcnJv ciBtZXNzYWdlIGlzIGVuYWJsZWQuPEJSPg0KDQorICAjICAgQklUMiAgLSBTeXN0ZW0gbWVuYWdl bWVudCBtZXNzYWdlIGlzIGVuYWJsZWQuPEJSPg0KDQorICAjICAgT3RoZXIgLSByZXNlcnZlZA0K DQorICAjIEBQcm9tcHQgTWVzc2FnZSBsZXZlbA0KDQorICBnQXNmUGtnVG9rZW5TcGFjZUd1aWQu UGNkQXNmTWVzc2FnZUVycm9yTGV2ZWx8MHg3fFVJTlQzMnwweDAwMDAwMDAyDQoNCisNCg0KZGlm ZiAtLWdpdCBhL0FzZlBrZy9Bc2ZQa2cuZHNjIGIvQXNmUGtnL0FzZlBrZy5kc2MNCm5ldyBmaWxl IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLmFjYmVkZTFjYTAyZA0KLS0tIC9kZXYv bnVsbA0KKysrIGIvQXNmUGtnL0FzZlBrZy5kc2MNCkBAIC0wLDAgKzEsNTkgQEANCisjIyBAZmls ZQ0KDQorIyBBc2YgUGFja2FnZQ0KDQorIw0KDQorIyBDb3B5cmlnaHQgKGMpIDE5ODUgLSAyMDIy LCBBTUkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KDQorIyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KDQorIyMNCg0KKw0KDQorW0RlZmluZXNdDQoNCisg IFBMQVRGT1JNX05BTUUgICAgICAgICAgICAgPSBBc2ZQa2cNCg0KKyAgUExBVEZPUk1fR1VJRCAg ICAgICAgICAgICA9IDc5RDIyRTEzLTNGMzAtNDcwQS1BRjlELUI4MENCNDMyNDM3OQ0KDQorICBQ TEFURk9STV9WRVJTSU9OICAgICAgICAgID0gMC4xMA0KDQorICBEU0NfU1BFQ0lGSUNBVElPTiAg ICAgICAgID0gMHgwMDAxMDAwNQ0KDQorICBPVVRQVVRfRElSRUNUT1JZICAgICAgICAgID0gQnVp bGQvQXNmUGtnDQoNCisgIFNVUFBPUlRFRF9BUkNISVRFQ1RVUkVTICAgPSBJQTMyfFg2NA0KDQor ICBCVUlMRF9UQVJHRVRTICAgICAgICAgICAgID0gREVCVUd8UkVMRUFTRXxOT09QVA0KDQorDQoN CisNCg0KK1tMaWJyYXJ5Q2xhc3Nlc10NCg0KKyAgQmFzZUxpYnxNZGVQa2cvTGlicmFyeS9CYXNl TGliL0Jhc2VMaWIuaW5mDQoNCisgIEJhc2VNZW1vcnlMaWJ8TWRlUGtnL0xpYnJhcnkvQmFzZU1l bW9yeUxpYi9CYXNlTWVtb3J5TGliLmluZg0KDQorICBEZWJ1Z0xpYnxNZGVQa2cvTGlicmFyeS9C YXNlRGVidWdMaWJOdWxsL0Jhc2VEZWJ1Z0xpYk51bGwuaW5mDQoNCisgIFNlcmlhbFBvcnRMaWJ8 TWRlUGtnL0xpYnJhcnkvQmFzZVNlcmlhbFBvcnRMaWJOdWxsL0Jhc2VTZXJpYWxQb3J0TGliTnVs bC5pbmYNCg0KKyAgRGVidWdQcmludEVycm9yTGV2ZWxMaWJ8TWRlUGtnL0xpYnJhcnkvQmFzZURl YnVnUHJpbnRFcnJvckxldmVsTGliL0Jhc2VEZWJ1Z1ByaW50RXJyb3JMZXZlbExpYi5pbmYNCg0K KyAgRGV2aWNlUGF0aExpYnxNZGVQa2cvTGlicmFyeS9VZWZpRGV2aWNlUGF0aExpYi9VZWZpRGV2 aWNlUGF0aExpYi5pbmYNCg0KKyAgUGNkTGlifE1kZVBrZy9MaWJyYXJ5L0Jhc2VQY2RMaWJOdWxs L0Jhc2VQY2RMaWJOdWxsLmluZg0KDQorICBQcmludExpYnxNZGVQa2cvTGlicmFyeS9CYXNlUHJp bnRMaWIvQmFzZVByaW50TGliLmluZg0KDQorICBVZWZpTGlifE1kZVBrZy9MaWJyYXJ5L1VlZmlM aWIvVWVmaUxpYi5pbmYNCg0KKyAgVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGlifE1kZVBrZy9M aWJyYXJ5L1VlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYi9VZWZpUnVudGltZVNlcnZpY2VzVGFi bGVMaWIuaW5mDQoNCisgIFVlZmlCb290U2VydmljZXNUYWJsZUxpYnxNZGVQa2cvTGlicmFyeS9V ZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmluZg0KDQor ICBVZWZpRHJpdmVyRW50cnlQb2ludHxNZGVQa2cvTGlicmFyeS9VZWZpRHJpdmVyRW50cnlQb2lu dC9VZWZpRHJpdmVyRW50cnlQb2ludC5pbmYNCg0KKyAgUGVpbUVudHJ5UG9pbnR8TWRlUGtnL0xp YnJhcnkvUGVpbUVudHJ5UG9pbnQvUGVpbUVudHJ5UG9pbnQuaW5mDQoNCisgIFBlaVNlcnZpY2Vz TGlifE1kZVBrZy9MaWJyYXJ5L1BlaVNlcnZpY2VzTGliL1BlaVNlcnZpY2VzTGliLmluZg0KDQor ICBQZXJmb3JtYW5jZUxpYnxNZGVQa2cvTGlicmFyeS9CYXNlUGVyZm9ybWFuY2VMaWJOdWxsL0Jh c2VQZXJmb3JtYW5jZUxpYk51bGwuaW5mDQoNCisgIFJlcG9ydFN0YXR1c0NvZGVMaWJ8TWRlUGtn L0xpYnJhcnkvQmFzZVJlcG9ydFN0YXR1c0NvZGVMaWJOdWxsL0Jhc2VSZXBvcnRTdGF0dXNDb2Rl TGliTnVsbC5pbmYNCg0KKyAgUmVnaXN0ZXJGaWx0ZXJMaWJ8TWRlUGtnL0xpYnJhcnkvUmVnaXN0 ZXJGaWx0ZXJMaWJOdWxsL1JlZ2lzdGVyRmlsdGVyTGliTnVsbC5pbmYNCg0KKw0KDQorDQoNCitb TGlicmFyeUNsYXNzZXMuY29tbW9uLlNFQ10NCg0KKyAgSG9iTGlifE1kZVBrZy9MaWJyYXJ5L1Bl aUhvYkxpYi9QZWlIb2JMaWIuaW5mDQoNCisgIFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGlifE1k ZVBrZy9MaWJyYXJ5L1BlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliSWR0L1BlaVNlcnZpY2VzVGFi bGVQb2ludGVyTGliSWR0LmluZg0KDQorICBNZW1vcnlBbGxvY2F0aW9uTGlifE1kZVBrZy9MaWJy YXJ5L1BlaU1lbW9yeUFsbG9jYXRpb25MaWIvUGVpTWVtb3J5QWxsb2NhdGlvbkxpYi5pbmYNCg0K Kw0KDQorW0xpYnJhcnlDbGFzc2VzLmNvbW1vbi5QRUlNXQ0KDQorICBNZW1vcnlBbGxvY2F0aW9u TGlifE1kZVBrZy9MaWJyYXJ5L1BlaU1lbW9yeUFsbG9jYXRpb25MaWIvUGVpTWVtb3J5QWxsb2Nh dGlvbkxpYi5pbmYNCg0KKyAgSG9iTGlifE1kZVBrZy9MaWJyYXJ5L1BlaUhvYkxpYi9QZWlIb2JM aWIuaW5mDQoNCisNCg0KK1tMaWJyYXJ5Q2xhc3Nlcy5JQTMyLlBFSU0sIExpYnJhcnlDbGFzc2Vz Llg2NC5QRUlNXQ0KDQorICBQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxpYnxNZGVQa2cvTGlicmFy eS9QZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxpYklkdC9QZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxp YklkdC5pbmYNCg0KKw0KDQorW0xpYnJhcnlDbGFzc2VzLmNvbW1vbi5EWEVfRFJJVkVSXQ0KDQor ICBNZW1vcnlBbGxvY2F0aW9uTGlifE1kZVBrZy9MaWJyYXJ5L1VlZmlNZW1vcnlBbGxvY2F0aW9u TGliL1VlZmlNZW1vcnlBbGxvY2F0aW9uTGliLmluZg0KDQorICBIb2JMaWJ8TWRlUGtnL0xpYnJh cnkvRHhlSG9iTGliL0R4ZUhvYkxpYi5pbmYNCg0KKyAgQXNmQWNwaVRhYmxlTGlifEFzZlBrZ1xM aWJyYXJ5XEFzZkFjcGlUYWJsZUxpYlxBc2ZBY3BpVGFibGVMaWIuaW5mDQoNCisNCg0KK1tDb21w b25lbnRzXQ0KDQorDQoNCitbQ29tcG9uZW50cy5JQTMyLCBDb21wb25lbnRzLlg2NF0NCg0KKyAg QXNmUGtnL0FzZi9Bc2ZQZWkvQXNmUGVpLmluZg0KDQorICBBc2ZQa2cvQXNmL0FzZkR4ZS9Bc2ZE eGUuaW5mDQoNCmRpZmYgLS1naXQgYS9Bc2ZQa2cvSW5jbHVkZS9Bc2ZNZXNzYWdlcy5oIGIvQXNm UGtnL0luY2x1ZGUvQXNmTWVzc2FnZXMuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw MDAwMDAwMDAwMC4uNmU3OWY0OTkzZjMzDQotLS0gL2Rldi9udWxsDQorKysgYi9Bc2ZQa2cvSW5j bHVkZS9Bc2ZNZXNzYWdlcy5oDQpAQCAtMCwwICsxLDEwNCBAQA0KKy8qKiBAZmlsZQ0KDQorICBB c2YgbWVzc2FnZSBmb3JtYXQgZGVmaW5lLg0KDQorDQoNCisgIENvcHlyaWdodCAoYykgMTk4NSAt IDIwMjIsIEFNSS4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQoNCisgIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQoNCisNCg0KKyAgQHBhciBSZXZpc2lvbiBS ZWZlcmVuY2U6DQoNCisgIEZvcm1hdCBkZWZpbmVkIGluIEFzZiAyLjAgU3BlY2lmaWNhdGlvbi4N Cg0KKyoqLw0KDQorDQoNCisjaWZuZGVmIF9fQVNGX01FU1NBR0VTX0hfXw0KDQorI2RlZmluZSBf X0FTRl9NRVNTQUdFU19IX18NCg0KKw0KDQorI2luY2x1ZGUgPEJhc2UuaD4NCg0KKyNpbmNsdWRl IDxJbmR1c3RyeVN0YW5kYXJkL0FzZi5oPg0KDQorDQoNCisjZGVmaW5lIE1FU1NBR0VfRVJST1Jf TEVWRUxfUFJPR1JFU1MgICAgICAgICAgIEJJVDANCg0KKyNkZWZpbmUgTUVTU0FHRV9FUlJPUl9M RVZFTF9FUlJPUiAgICAgICAgICAgICAgQklUMQ0KDQorI2RlZmluZSBNRVNTQUdFX0VSUk9SX0xF VkVMX1NZU1RFTV9NQU5BR0VNRU5UICBCSVQyDQoNCisNCg0KKyNwcmFnbWEgcGFjayhwdXNoLDEp DQoNCisNCg0KKy8qKg0KDQorICBUaGlzIG1lc3NhZ2UgY2F1c2VzIHRoZSBhbGVydC1zZW5kaW5n IGRldmljZSB0byB0cmFuc21pdCBhIHNpbmdsZSwNCg0KKyAgdW4tcmV0cmFuc21pdHRlZCBQRVQg ZnJhbWUuIElmIHRoZSBhbGVydC1zZW5kaW5nIGRldmljZSBpcyBlaXRoZXIgdGVtcG9yYXJpbHkN Cg0KKyAgdW5hYmxlIHRvIGhhbmRsZSB0aGUgbWVzc2FnZSBvciB1bmFibGUgdG8gc2VuZCB0aGUg cmVxdWVzdGVkIFBFVCBmcmFtZQ0KDQorICBiZWNhdXNlIHRoZSBkZXZpY2UncyB0cmFuc3BvcnQg bWVkaWEgaXMgZG93biwgdGhlIGRldmljZSBtdXN0IE5BQ0sgdGhlIG1lc3NhZ2UNCg0KKyAgYWNj b3JkaW5nIHRvIFNNQlVTXzIuMCBkZWZpbml0aW9uczsgb3RoZXJ3aXNlLCB0aGUgZGV2aWNlIHNl bmRzIHRoZQ0KDQorICBzaW5nbGUtZnJhbWUgdHJhbnNtaXNzaW9uLg0KDQorKiovDQoNCit0eXBl ZGVmIHN0cnVjdCB7DQoNCisgIFVJTlQ4ICAgIENvbW1hbmQ7ICAgICAgICAgLy8vPCBNZXNzYWdl IENvbW1hbmQuDQoNCisgIFVJTlQ4ICAgIEJ5dGVDb3VudDsgICAgICAgLy8vPCBMZW5ndGggb2Yg dGhlIGRhdGEgaW4gYnl0ZXMuDQoNCisgIFVJTlQ4ICAgIFN1YkNvbW1hbmQ7ICAgICAgLy8vPCBT dWJDb21tYW5kIE5vIFJldHJhbnNtaXQuDQoNCisgIFVJTlQ4ICAgIFZlcnNpb247ICAgICAgICAg Ly8vPCBWZXJzaW9uIE51bWJlci4NCg0KKyAgVUlOVDggICAgRXZlbnRTZW5zb3JUeXBlOyAvLy88 IEV2ZW50IFNlbnNvciBUeXBlLg0KDQorICBVSU5UOCAgICBFdmVudFR5cGU7ICAgICAgIC8vLzwg RXZlbnQgVHlwZS4NCg0KKyAgVUlOVDggICAgRXZlbnRPZmZzZXQ7ICAgICAvLy88IEV2ZW50IE9m ZnNldC4NCg0KKyAgVUlOVDggICAgRXZlbnRTb3VyY2VUeXBlOyAvLy88IERlc2NyaWJlcyB0aGUg b3JpZ2luYXRvciBvZiB0aGUgZXZlbnQuDQoNCisgIFVJTlQ4ICAgIEV2ZW50U2V2ZXJpdHk7ICAg Ly8vPCBUaGUgc2V2ZXJpdHkgb2YgdGhlIGV2ZW50DQoNCisgIFVJTlQ4ICAgIFNlbnNvckRldmlj ZTsgICAgLy8vPCBUaGUgU2Vuc29yIERldmljZSB0aGF0IGNhdXNlZCB0aGUgZXZlbnQNCg0KKyAg VUlOVDggICAgU2Vuc29yTnVtYmVyOyAgICAvLy88IElkZW50aWZ5IGEgZ2l2ZW4gaW5zdGFuY2Ug b2YgYSBzZW5zb3IgcmVsYXRpdmUgdG8gdGhlIFNlbnNvciBEZXZpY2UuDQoNCisgIFVJTlQ4ICAg IEVudGl0eTsgICAgICAgICAgLy8vPCBJbmRpY2F0ZXMgdGhlIHBsYXRmb3JtIGRldmljZSBvciBz dWJzeXN0ZW0gYXNzb2NpYXRlZCB3aXRoIHRoZSBldmVudC4NCg0KKyAgVUlOVDggICAgRW50aXR5 SW5zdGFuY2U7ICAvLy88IElkZW50aWZpZXMgd2hpY2ggdW5pcXVlIGRldmljZSBpcyBhc3NvY2lh dGVkIHdpdGggdGhlIGV2ZW50Lg0KDQorICBVSU5UOCAgICBFdmVudERhdGExOw0KDQorICBVSU5U OCAgICBFdmVudERhdGEyOw0KDQorICBVSU5UOCAgICBFdmVudERhdGEzOw0KDQorICBVSU5UOCAg ICBFdmVudERhdGE0Ow0KDQorICBVSU5UOCAgICBFdmVudERhdGE1Ow0KDQorfSBBU0ZfTVNHX05P UkVUUkFOU01JVDsNCg0KKw0KDQorLyoqDQoNCisgIFRoaXMgaXMgdGhlIEFTRiBTVEFSVCBXYXRj aERvZyBUaW1lciBEYXRhIHN0cnVjdHVyZS4NCg0KKw0KDQorKiovDQoNCit0eXBlZGVmIHN0cnVj dCB7DQoNCisgIFVJTlQ4ICAgIENvbW1hbmQ7DQoNCisgIFVJTlQ4ICAgIEJ5dGVDb3VudDsNCg0K KyAgVUlOVDggICAgU3ViQ29tbWFuZDsNCg0KKyAgVUlOVDggICAgVmVyc2lvbjsNCg0KK30gQVNG X1NUT1BfV0FUQ0hET0c7DQoNCisNCg0KKy8qKg0KDQorICBUaGlzIGlzIHRoZSBBU0YgTWVzc2Fn ZSBUeXBlIHN0cnVjdHVyZS4NCg0KKw0KDQorKiovDQoNCit0eXBlZGVmIGVudW0gew0KDQorICBN c2dIZGRJbml0LA0KDQorICBNc2dBcEluaXQsDQoNCisgIE1zZ1VzZXJJbml0U2V0dXAsDQoNCisg IE1zZ1VzYlJlc291cmNlQ29uZmlnLA0KDQorICBNc2dQY2lSZXNvdXJjZUNvbmZpZywNCg0KKyAg TXNnVmlkZW9Jbml0LA0KDQorICBNc2dLYmNJbml0LA0KDQorICBNc2dLYmNUZXN0LA0KDQorICBN c2dNb3RoZXJCb2FyZEluaXQsDQoNCisgIE1zZ05vVmlkZW8sDQoNCisgIE1zZ0tiZEZhaWx1cmUs DQoNCisgIE1zZ0hkZEZhaWx1cmUsDQoNCisgIE1zZ0NoYXNzaXNJbnRydXNpb24sDQoNCisgIE1z Z05vQm9vdE1lZGlhDQoNCit9IEFTRl9NRVNTQUdFX1RZUEU7DQoNCisNCg0KKy8qKg0KDQorICBU aGlzIGlzIHRoZSBNZXNzYWdlIERhdGEgSHViIE1hcCBTdHJ1Y3R1cmUuDQoNCisNCg0KKyoqLw0K DQordHlwZWRlZiBzdHJ1Y3Qgew0KDQorICBBU0ZfTUVTU0FHRV9UWVBFICAgICAgICAgTWVzc2Fn ZVR5cGU7DQoNCisgIEVGSV9TVEFUVVNfQ09ERV9WQUxVRSAgICBTdGF0dXNDb2RlOw0KDQorfSBN RVNTQUdFX0RBVEFfSFVCX01BUDsNCg0KKw0KDQorLyoqDQoNCisgIFRoaXMgaXMgdGhlIEFTRiBT eXN0ZW0gRmlybXdhcmUgRXZlbnQgU3RydWN0dXJlLg0KDQorDQoNCisqKi8NCg0KK3R5cGVkZWYg c3RydWN0IHsNCg0KKyAgQVNGX01FU1NBR0VfVFlQRSAgICAgICAgVHlwZTsNCg0KKyAgQVNGX01T R19OT1JFVFJBTlNNSVQgICAgTWVzc2FnZTsNCg0KK30gQVNGX01FU1NBR0U7DQoNCisNCg0KKyNw cmFnbWEgcGFjayhwb3ApDQoNCisNCg0KKyNlbmRpZiAvL19fQVNGX01FU1NBR0VTX0hfXw0KDQpk aWZmIC0tZ2l0IGEvQXNmUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9Bc2YuaCBiL0FzZlBr Zy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvQXNmLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQpp bmRleCAwMDAwMDAwMDAwMDAuLjY5YjZhMDIzMGQ0Zg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvQXNm UGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9Bc2YuaA0KQEAgLTAsMCArMSwxNDUgQEANCisv KiogQGZpbGUNCg0KKyAgQXNmIG1lc3NhZ2UgY29tbWFuZHMgYnl0ZSBkZWZpbmUuDQoNCisNCg0K KyAgQ29weXJpZ2h0IChjKSAxOTg1IC0gMjAyMiwgQU1JLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCg0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCg0K Kw0KDQorICBAcGFyIFJldmlzaW9uIFJlZmVyZW5jZToNCg0KKyAgRGF0YSBkZWZpbmVkIGluIEFz ZiAyLjAgU3BlY2lmaWNhdGlvbi4NCg0KKyoqLw0KDQorDQoNCisjaWZuZGVmIF9fQVNGX0hfXw0K DQorI2RlZmluZSBfX0FTRl9IX18NCg0KKw0KDQorI2luY2x1ZGUgPEJhc2UuaD4NCg0KKw0KDQor Ly8NCg0KKy8vIEJvb3Qgb3B0aW9uIG1lc3NhZ2VzDQoNCisvLw0KDQorI2RlZmluZSBBU0ZNU0df Q01EX0NPTkZJRyAgICAgICAgICAgICAgMHgzICAgLy8gQVNGIENvbmZpZ3VyYXRpb24NCg0KKyNk ZWZpbmUgQVNGTVNHX1NVQkNNRF9DTFJfQk9PVF9PUFRJT04gIDB4MTUgIC8vIENsZWFyIEJvb3Qg T3B0aW9ucw0KDQorI2RlZmluZSBBU0ZNU0dfU1VCQ01EX1JFVF9CT09UX09QVElPTiAgMHgxNiAg Ly8gUmV0dXJuIEJvb3QgT3B0aW9ucw0KDQorI2RlZmluZSBBU0ZNU0dfU1VCQ01EX05PX0JPT1Rf T1BUSU9OICAgMHgxNyAgLy8gTm8gQm9vdCBPcHRpb25zDQoNCisNCg0KKy8vDQoNCisvLyBTeXN0 ZW0gc3RhdGVzDQoNCisvLw0KDQorI2RlZmluZSBBU0ZNU0dfU1lTVEVNX1NUQVRFX1MwICAwICAg ICAgICAgICAgIC8vIFMwL0cwICJXb3JraW5nIg0KDQorI2RlZmluZSBBU0ZNU0dfU1lTVEVNX1NU QVRFX1MxICAxICAgICAgICAgICAgIC8vIFMxDQoNCisjZGVmaW5lIEFTRk1TR19TWVNURU1fU1RB VEVfUzIgIDIgICAgICAgICAgICAgLy8gUzINCg0KKyNkZWZpbmUgQVNGTVNHX1NZU1RFTV9TVEFU RV9TMyAgMyAgICAgICAgICAgICAvLyBTMw0KDQorI2RlZmluZSBBU0ZNU0dfU1lTVEVNX1NUQVRF X1M0ICA0ICAgICAgICAgICAgIC8vIFM0DQoNCisjZGVmaW5lIEFTRk1TR19TWVNURU1fU1RBVEVf UzUgIDUgICAgICAgICAgICAgLy8gUzUvRzIgIlNvZnQtb2ZmIg0KDQorDQoNCisvLw0KDQorLy8g QXNmIHZlcnNpb24NCg0KKy8vDQoNCisjZGVmaW5lIEFTRk1TR19WRVJTSU9OX05VTUJFUl8xMCAg ICAgIDB4MTANCg0KKw0KDQorLy8NCg0KKy8vIFN5c3RlbSBmaXJtd2FyZSBjYXBhYmlsaXRpZXMg Qml0DQoNCisvLw0KDQorI2RlZmluZSBBU0ZfQk9QX0JJVF9GT1JDRV9QUk9HUkVTU19FVkVOVCAg ICAgICAgQklUMTINCg0KKw0KDQorLy8NCg0KKy8vIEFzZiBtZXNzYWdlIGNvbW1hbmQNCg0KKy8v DQoNCisjZGVmaW5lIEFTRk1TR19DT01NQU5EX1NZU1RFTV9TVEFURSAgICAgICAgICAgICAgIDB4 MQ0KDQorI2RlZmluZSBBU0ZNU0dfQ09NTUFORF9NQU5BR0VNRU5UX0NPTlRST0wgICAgICAgICAw eDINCg0KKyNkZWZpbmUgQVNGTVNHX0NPTU1BTkRfTUVTU0FHSU5HICAgICAgICAgICAgICAgICAg MHg0DQoNCisNCg0KKy8vDQoNCisvLyBBc2YgbWVzc2FnZSBzdWJjb21tYW5kDQoNCisvLw0KDQor I2RlZmluZSBBU0ZNU0dfU1VCQ09NTUFORF9TVE9QX1dBVENIX0RPRyAgICAgICAgICAweDE0DQoN CisjZGVmaW5lIEFTRk1TR19TVUJDT01NQU5EX05PX1JFVFJBTlNNSVQgICAgICAgICAgIDB4MTYN Cg0KKyNkZWZpbmUgQVNGTVNHX1NVQkNPTU1BTkRfU0VUX1NZU1RFTV9TVEFURSAgICAgICAgMHgx OA0KDQorDQoNCisvLw0KDQorLy8gQXNmIG1lc3NhZ2UgZXZlbnQgc2Vuc29yIHR5cGUNCg0KKy8v DQoNCisjZGVmaW5lIEFTRk1TR19FVkVOVF9TRU5TT1JfVFlQRV9DSEFTU0lTX0lOVFJVU0lPTiAg MHg1DQoNCisjZGVmaW5lIEFTRk1TR19FVkVOVF9TRU5TT1JfVFlQRV9GV19FUlJPUl9QUk9HUkVT UyAgMHhGDQoNCisjZGVmaW5lIEFTRk1TR19FVkVOVF9TRU5TT1JfVFlQRV9CT09UX0VSUk9SICAg ICAgICAgMHgxRQ0KDQorI2RlZmluZSBBU0ZNU0dfRVZFTlRfU0VOU09SX1RZUEVfRU5USVRZX1BS RVNFTkNFICAgIDB4MjUNCg0KKw0KDQorLy8NCg0KKy8vIEFzZiBtZXNzYWdlIGV2ZW50IHR5cGUN Cg0KKy8vDQoNCisjZGVmaW5lIEFTRk1TR19FVkVOVF9UWVBFX1NFTlNPUl9TUEVDSUZJQyAgICAg ICAgICAgMHg2Rg0KDQorDQoNCisvLw0KDQorLy8gQXNmIG1lc3NhZ2UgZXZlbnQgb2Zmc2V0DQoN CisvLw0KDQorI2RlZmluZSBBU0ZNU0dfRVZFTlRfT0ZGU0VUX0VOVElUWV9QUkVTRU5UICAgICAg ICAgIDB4MA0KDQorDQoNCisjZGVmaW5lIEFTRk1TR19FVkVOVF9PRkZTRVRfU1lTX0ZXX1BST0dS RVNTX0VOVFJZICAgMHgyDQoNCisjZGVmaW5lIEFTRk1TR19FVkVOVF9PRkZTRVRfU1lTX0ZXX1BS T0dSRVNTX0VYSVQgICAgMHg4Mg0KDQorI2RlZmluZSBBU0ZNU0dfRVZFTlRfT0ZGU0VUX1NZU19G V19FUlJPUiAgIDB4MA0KDQorDQoNCisjZGVmaW5lIEFTRk1TR19FVkVOVF9PRkZTRVRfTk9fQk9P VEFCTEVfTUVESUEgICAgICAgMHgwDQoNCisjZGVmaW5lIEFTRk1TR19FVkVOVF9PRkZTRVRfQ0hB U1NJU19JTlRSVVNJT04gICAgICAgMHgwDQoNCisNCg0KKy8vDQoNCisvLyBBc2YgbWVzc2FnZSBl dmVudCBzb3VyY2UgdHlwZQ0KDQorLy8NCg0KKyNkZWZpbmUgQVNGTVNHX0VWRU5UX1NPVVJDRV9U WVBFX0FTRjEwICAgICAgICAgICAgICAweDY4DQoNCisNCg0KKy8vDQoNCisvLyBBc2YgbWVzc2Fn ZSBldmVudCBzZXZlcml0eQ0KDQorLy8NCg0KKyNkZWZpbmUgQVNGTVNHX0VWRU5UX1NFVkVSSVRZ X01PTklUT1IgICAgICAgICAgICAgICAweDENCg0KKyNkZWZpbmUgQVNGTVNHX0VWRU5UX1NFVkVS SVRZX05PTl9DUklUSUNBTCAgICAgICAgICAweDgNCg0KKyNkZWZpbmUgQVNGTVNHX0VWRU5UX1NF VkVSSVRZX0NSSVRJQ0FMICAgICAgICAgICAgICAweDEwDQoNCisjZGVmaW5lIEFTRk1TR19FVkVO VF9TRVZFUklUWV9OT05fUkVDT1ZFUkFCTEUgICAgICAgMHgyMA0KDQorDQoNCisvLw0KDQorLy8g QXNmIG1lc3NhZ2Ugc2Vuc29yIGRldmljZQ0KDQorLy8NCg0KKyNkZWZpbmUgQVNGTVNHX1NFTlNP Ul9ERVZJQ0VfVU5TUEVDSUZJRUQgICAgICAgICAgICAweEZGDQoNCisNCg0KKy8vDQoNCisvLyBB c2YgbWVzc2FnZSBzZW5zb3IgbnVtYmVyDQoNCisvLw0KDQorI2RlZmluZSBBU0ZNU0dfU0VOU09S X05VTUJFUl9VTlNQRUNJRklFRCAgICAgICAgICAgIDB4RkYNCg0KKw0KDQorLy8NCg0KKy8vIEFz ZiBtZXNzYWdlIEVudGl0eQ0KDQorLy8NCg0KKw0KDQorI2RlZmluZSBBU0ZNU0dfRU5USVRZX1VO U1BFQ0lGSUVEICAgICAgICAgICAgICAgICAgIDB4MA0KDQorI2RlZmluZSBBU0ZNU0dfRU5USVRZ X1BST0NFU1NPUiAgICAgICAgICAgICAgICAgICAgIDB4Mw0KDQorI2RlZmluZSBBU0ZNU0dfRU5U SVRZX0RJU0sgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NA0KDQorI2RlZmluZSBBU0ZNU0df RU5USVRZX1NZU1RFTV9CT0FSRCAgICAgICAgICAgICAgICAgIDB4Nw0KDQorI2RlZmluZSBBU0ZN U0dfRU5USVRZX0FERF9JTl9DQVJEICAgICAgICAgICAgICAgICAgIDB4Qg0KDQorI2RlZmluZSBB U0ZNU0dfRU5USVRZX0JJT1MgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjINCg0KKyNkZWZp bmUgQVNGTVNHX0VOVElUWV9NRU1PUllfREVWSUNFICAgICAgICAgICAgICAgICAweDIwDQoNCisN Cg0KKy8vDQoNCisvLyBBc2YgbWVzc2FnZSBlbnRpdHkgaW5zdGFuY2UNCg0KKy8vDQoNCisjZGVm aW5lIEFTRk1TR19FTlRJVFlfSU5TVEFOQ0VfVU5TUEVDSUZJRUQgICAgICAgICAgMHgwDQoNCisN Cg0KKy8vDQoNCisvLyBBc2YgbWVzc2FnZSBldmVudCBkYXRhDQoNCisvLw0KDQorI2RlZmluZSBB U0ZNU0dfRVZFTlRfREFUQTEgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDANCg0KKyNkZWZp bmUgQVNGTVNHX0VWRU5UX0RBVEFfVU5TUEVDSUZJRUQgICAgICAgICAgICAgICAweDANCg0KKyNk ZWZpbmUgQVNGTVNHX0VWRU5UX0RBVEFfTUVNT1JZX0lOSVRJQUxJWkFUSU9OICAgICAweDENCg0K KyNkZWZpbmUgQVNGTVNHX0VWRU5UX0RBVEFfSEFSRF9ESVNLX0lOSVRJQUxJWkFUSU9OICAweDIN Cg0KKyNkZWZpbmUgQVNGTVNHX0VWRU5UX0RBVEFfQVBfSU5JVElBTElaQVRJT04gICAgICAgICAw eDMNCg0KKyNkZWZpbmUgQVNGTVNHX0VWRU5UX0RBVEFfU0VUVVBfSU5JVElBTElaQVRJT04gICAg ICAweDUNCg0KKyNkZWZpbmUgQVNGTVNHX0VWRU5UX0RBVEFfVVNCX1JFU09VUkNFX0NPTkZJRyAg ICAgICAweDYNCg0KKyNkZWZpbmUgQVNGTVNHX0VWRU5UX0RBVEFfUENJX1JFU09VUkNFX0NPTkZJ RyAgICAgICAweDcNCg0KKyNkZWZpbmUgQVNGTVNHX0VWRU5UX0RBVEFfVklERU9fSU5JVElBTEla QVRJT04gICAgICAweDkNCg0KKyNkZWZpbmUgQVNGTVNHX0VWRU5UX0RBVEFfQ0FDSEVfSU5JVElB TElaQVRJT04gICAgICAweEENCg0KKyNkZWZpbmUgQVNGTVNHX0VWRU5UX0RBVEFfS0VZQk9BUkRf SU5JVElBTElaQVRJT04gICAweEMNCg0KKyNkZWZpbmUgQVNGTVNHX0VWRU5UX0RBVEFfQk9BUkRf SU5JVElBTElaQVRJT04gICAgICAweDE0DQoNCisjZGVmaW5lIEFTRk1TR19FVkVOVF9EQVRBX0tF WUJPQVJEX1RFU1QgICAgICAgICAgICAgMHgxNw0KDQorDQoNCisjZGVmaW5lIEFTRk1TR19FVkVO VF9EQVRBX05PX01FTU9SWSAgICAgICAgICAgICAgICAgMHgxDQoNCisjZGVmaW5lIEFTRk1TR19F VkVOVF9EQVRBX0hBUkRfRElTS19GQUlMVVJFICAgICAgICAgMHgzDQoNCisjZGVmaW5lIEFTRk1T R19FVkVOVF9EQVRBX0tFWUJPQVJEX0ZBSUxVUkUgICAgICAgICAgMHg3DQoNCisjZGVmaW5lIEFT Rk1TR19FVkVOVF9EQVRBX05PX1ZJREVPICAgICAgICAgICAgICAgICAgMHhBDQoNCisNCg0KKyNl bmRpZiAvL19fQVNGX0hfXw0KDQpkaWZmIC0tZ2l0IGEvQXNmUGtnL0luY2x1ZGUvTGlicmFyeS9B c2ZBY3BpVGFibGVMaWIuaCBiL0FzZlBrZy9JbmNsdWRlL0xpYnJhcnkvQXNmQWNwaVRhYmxlTGli LmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjRiMWQ2ODc4MjVm Zg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvQXNmUGtnL0luY2x1ZGUvTGlicmFyeS9Bc2ZBY3BpVGFi bGVMaWIuaA0KQEAgLTAsMCArMSwyNiBAQA0KKy8qKiBAZmlsZQ0KDQorICBQcm92aWRlcyBzZXJ2 aWNlcyB0byBjcmVhdGUgQXNmIEFjcGkgdGFibGUuDQoNCisNCg0KKyAgQ29weXJpZ2h0IChjKSAx OTg1IC0gMjAyMiwgQU1JLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCg0KKyAgU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCg0KKyoqLw0KDQorDQoNCisjaWZu ZGVmIF9fQVNGX0FDUElfVEFCTEVfTElCX0hfXw0KDQorI2RlZmluZSBfX0FTRl9BQ1BJX1RBQkxF X0xJQl9IX18NCg0KKw0KDQorI2luY2x1ZGUgPFVlZmkuaD4NCg0KKw0KDQorLyoqDQoNCisgIFRo aXMgZnVuY3Rpb24gaW5zdGFsbCB0aGUgQVNGIGFjcGkgVGFibGUuDQoNCisNCg0KKyAgQHBhcmFt W2luXSAgRXZlbnQgICAgIEEgcG9pbnRlciB0byB0aGUgRXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhl IGNhbGxiYWNrLg0KDQorICBAcGFyYW1baW5dICBDb250ZXh0ICAgQSBwb2ludGVyIHRvIHByaXZh dGUgZGF0YSByZWdpc3RlcmVkIHdpdGggdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLg0KDQorKiovDQoN CitWT0lEDQoNCitFRklBUEkNCg0KK0luc3RhbGxBc2ZBY3BpVGFibGVFdmVudCAgKA0KDQorICBJ TiBFRklfRVZFTlQgIEV2ZW50LA0KDQorICBJTiBWT0lEICAgICAgICpDb250ZXh0DQoNCisgICk7 DQoNCisNCg0KKyNlbmRpZg0KDQpkaWZmIC0tZ2l0IGEvQXNmUGtnL0luY2x1ZGUvUHJvdG9jb2wv QXNmUHJvdG9jb2wuaCBiL0FzZlBrZy9JbmNsdWRlL1Byb3RvY29sL0FzZlByb3RvY29sLmgNCm5l dyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLmQzYWYwZmJhNzNiZA0KLS0t IC9kZXYvbnVsbA0KKysrIGIvQXNmUGtnL0luY2x1ZGUvUHJvdG9jb2wvQXNmUHJvdG9jb2wuaA0K QEAgLTAsMCArMSw1NyBAQA0KKy8qKiBAZmlsZQ0KDQorICBBc2YgcHJvdG9jb2wgZGVmaW5lLg0K DQorDQoNCisgIENvcHlyaWdodCAoYykgMTk4NSAtIDIwMjIsIEFNSS4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+DQoNCisgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50DQoNCisqKi8NCg0KKw0KDQorI2lmbmRlZiBfX0FTRl9QUk9UT0NPTF9IX18NCg0KKyNkZWZp bmUgX19BU0ZfUFJPVE9DT0xfSF9fDQoNCisNCg0KKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJk L1NtQnVzLmg+DQoNCisNCg0KKyNkZWZpbmUgQVNGX1BST1RPQ09MX0dVSUQgXA0KDQorICB7IFwN Cg0KKyAgICAweGRlYzg5ODI3LCAweDhhN2UsIDB4NDVlMCwgeyAweGJjLCAweGI1LCAweGQ1LCAw eDNiLCAweDQ2LCAweDE0LCAweGFkLCAweGI4IH0gXA0KDQorICB9DQoNCisNCg0KKyNwcmFnbWEg cGFjayhwdXNoLCAxKQ0KDQorDQoNCisvKioNCg0KKyAgVGhpcyBpcyB0aGUgQVNGIEJvb3QgT3B0 aW9uIGRhdGEgc3RydWN0dXJlLg0KDQorDQoNCisqKi8NCg0KK3R5cGVkZWYgc3RydWN0IHsNCg0K KyAgVUlOVDggICAgIFN1YkNvbW1hbmQ7DQoNCisgIFVJTlQ4ICAgICBWZXJzaW9uOw0KDQorICBV SU5UMzIgICAgSWFuYUlkOw0KDQorICBVSU5UOCAgICAgU3BlY2lhbENvbW1hbmQ7DQoNCisgIFVJ TlQxNiAgICBTcGVjQ21kUGFyYW1ldGVyOw0KDQorICBVSU5UMTYgICAgQm9vdE9wdGlvbkJpdDsN Cg0KKyAgVUlOVDE2ICAgIE9lbVBhcmFtZXRlcjsNCg0KK30gQVNGX0JPT1RfT1BUSU9OOw0KDQor DQoNCisvKioNCg0KKyAgVGhpcyBpcyB0aGUgQVNGIFBVU0ggRVZFTlQgU3RydWN0dXJlLg0KDQor DQoNCisqKi8NCg0KK3R5cGVkZWYgRUZJX1NUQVRVUyAoRUZJQVBJICpBU0ZfUFVTSF9FVkVOVCko DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOIFVJTlQ4 IENvbW1hbmQsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IElOIFVJTlROIExlbmd0aCwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSU4gVUlOVDggKkFTRkV2ZW50DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICk7DQoNCisNCg0KKy8qKg0KDQorICBUaGlzIGlzIHRoZSBBTUkg QVNGIFByb3RvY29sIFN0cnVjdHVyZS4NCg0KKw0KDQorKiovDQoNCit0eXBlZGVmIHN0cnVjdCB7 DQoNCisgIEFTRl9QVVNIX0VWRU5UICAgICBQdXNoRXZlbnQ7DQoNCisgIEFTRl9CT09UX09QVElP TiAgICAqQm9vdE9wdGlvbjsNCg0KK30gQVNGX1BST1RPQ09MOw0KDQorDQoNCisjcHJhZ21hIHBh Y2socG9wKQ0KDQorDQoNCitleHRlcm4gRUZJX0dVSUQgIGdBc2ZQcm90b2NvbEd1aWQ7DQoNCisN Cg0KKyNlbmRpZiAvL19fQVNGX1BST1RPQ09MX0hfXw0KDQpkaWZmIC0tZ2l0IGEvQXNmUGtnL0xp YnJhcnkvQXNmQWNwaVRhYmxlTGliL0FzZkFjcGlUYWJsZUxpYi5pbmYgYi9Bc2ZQa2cvTGlicmFy eS9Bc2ZBY3BpVGFibGVMaWIvQXNmQWNwaVRhYmxlTGliLmluZg0KbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uY2E5MGQwMmYwMDViDQotLS0gL2Rldi9udWxsDQorKysg Yi9Bc2ZQa2cvTGlicmFyeS9Bc2ZBY3BpVGFibGVMaWIvQXNmQWNwaVRhYmxlTGliLmluZg0KQEAg LTAsMCArMSwzMCBAQA0KKyMjIEBmaWxlDQoNCisjICBBc2YgQWNwaSB0YWJsZSBMaWJyYXJ5IGlu c3RhbmNlIHRoYXQgY3JlYXRlIEFzZiBBY3BpIHRhYmxlDQoNCisjDQoNCisjICBDb3B5cmlnaHQg KGMpIDE5ODUgLSAyMDIyLCBBTUkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KDQorIyAgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCg0KKyMjDQoNCisNCg0K K1tEZWZpbmVzXQ0KDQorICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEw MDA1DQoNCisgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IEFzZkFjcGlUYWJsZUxp Yg0KDQorICBNT0RVTEVfVU5JX0ZJTEUgICAgICAgICAgICAgICAgPSBBc2ZBY3BpVGFibGVMaWIu dW5pDQoNCisgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDlBMEVDOTk1LTBGMUEt NDQ0Qy1CQTAyLThDM0YwNDgyQUU4Qw0KDQorICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAg ICAgPSBEWEVfRFJJVkVSDQoNCisgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEu MA0KDQorICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPSBBc2ZBY3BpVGFibGVMaWIg fCBEWEVfRFJJVkVSIERYRV9SVU5USU1FX0RSSVZFUiBVRUZJX0FQUExJQ0FUSU9OIFVFRklfRFJJ VkVSDQoNCisNCg0KK1tTb3VyY2VzXQ0KDQorICBBc2ZBY3BpVGFibGVMaWIuYw0KDQorDQoNCitb UGFja2FnZXNdDQoNCisgIE1kZVBrZy9NZGVQa2cuZGVjDQoNCisgIE1kZU1vZHVsZVBrZy9NZGVN b2R1bGVQa2cuZGVjDQoNCisNCg0KK1tQcm90b2NvbHNdDQoNCisgIGdFZmlBY3BpVGFibGVQcm90 b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICAjIyBDT05TVU1FUw0KDQorDQoNCitbTGlicmFy eUNsYXNzZXNdDQoNCisgIEJhc2VMaWINCg0KKyAgRGVidWdMaWINCg0KKw0KDQpkaWZmIC0tZ2l0 IGEvQXNmUGtnL0xpYnJhcnkvQXNmQWNwaVRhYmxlTGliL0FzZkFjcGlUYWJsZUxpYi51bmkgYi9B c2ZQa2cvTGlicmFyeS9Bc2ZBY3BpVGFibGVMaWIvQXNmQWNwaVRhYmxlTGliLnVuaQ0KbmV3IGZp bGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uNjgxNDU4MTQwNDUyDQotLS0gL2Rl di9udWxsDQorKysgYi9Bc2ZQa2cvTGlicmFyeS9Bc2ZBY3BpVGFibGVMaWIvQXNmQWNwaVRhYmxl TGliLnVuaQ0KQEAgLTAsMCArMSwxNSBAQA0KKy8vIC8qKiBAZmlsZQ0KDQorLy8gQXNmIEFjcGkg dGFibGUNCg0KKy8vDQoNCisvLyBJbnN0YWxsIEFzZiBBY3BpIHRhYmxlDQoNCisvLw0KDQorLy8g Q29weXJpZ2h0IChjKSAxOTg1IC0gMjAyMiwgQU1JLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4N Cg0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQoNCisv Lw0KDQorLy8gKiovDQoNCisNCg0KKw0KDQorI3N0cmluZyBTVFJfTU9EVUxFX0FCU1RSQUNUICAg ICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiQXNmIEFjcGkgdGFibGUiDQoNCisNCg0KKyNzdHJp bmcgU1RSX01PRFVMRV9ERVNDUklQVElPTiAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIkluc3Rh bGwgQXNmIEFjcGkgdGFibGUuIg0KDQorDQoNCi0tDQoyLjM2LjAud2luZG93cy4xDQotVGhlIGlu Zm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGlzIG1lc3NhZ2UgbWF5IGJlIGNvbmZpZGVudGlhbCBh bmQgcHJvcHJpZXRhcnkgdG8gQW1lcmljYW4gTWVnYXRyZW5kcyAoQU1JKS4gVGhpcyBjb21tdW5p Y2F0aW9uIGlzIGludGVuZGVkIHRvIGJlIHJlYWQgb25seSBieSB0aGUgaW5kaXZpZHVhbCBvciBl bnRpdHkgdG8gd2hvbSBpdCBpcyBhZGRyZXNzZWQgb3IgYnkgdGhlaXIgZGVzaWduZWUuIElmIHRo ZSByZWFkZXIgb2YgdGhpcyBtZXNzYWdlIGlzIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCB5 b3UgYXJlIG9uIG5vdGljZSB0aGF0IGFueSBkaXN0cmlidXRpb24gb2YgdGhpcyBtZXNzYWdlLCBp biBhbnkgZm9ybSwgaXMgc3RyaWN0bHkgcHJvaGliaXRlZC4gUGxlYXNlIHByb21wdGx5IG5vdGlm eSB0aGUgc2VuZGVyIGJ5IHJlcGx5IGUtbWFpbCBvciBieSB0ZWxlcGhvbmUgYXQgNzcwLTI0Ni04 NjAwLCBhbmQgdGhlbiBkZWxldGUgb3IgZGVzdHJveSBhbGwgY29waWVzIG9mIHRoZSB0cmFuc21p c3Npb24uDQo=