From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web10.40041.1679933692952064290 for ; Mon, 27 Mar 2023 09:14:53 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=h/2H7lRj; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: andrei.warkentin@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679933692; x=1711469692; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=YlZ353dA9wtcbSxWM0mC+9PSiBQ4AxkRQp9e8PgSNQU=; b=h/2H7lRjP+8azvutT+VAIS2AgrxIK176opSJIplwSbueNKRZJ2eopxbJ VTsC0DvYx4skgpaBXnstqCRf+La0dUU0UXzg7Nbn2v7eA6mDDfv3ENgnK IQLkVrRb7Cc67+I5d1MJ8EgrQkKYcTWs3v1xDerEf5lNhK5wKJui1qmAS 8M96Hj5s/vP9eNLG0G+GAjJeulEpbKzNAUJD/QAh95VtpDw9Gie++d+ax k9fS8OKu9948mIIVmSUtcSDm24sQzDyFM3sCRccBhx7c6qz3+OSQ7lIxX 6mhOJ6ASrAz5rXcAS7AdLesbbkGGaKvK0gkVHH8IzZJOHdYfSTqKToqgl w==; X-IronPort-AV: E=McAfee;i="6600,9927,10662"; a="341889860" X-IronPort-AV: E=Sophos;i="5.98,295,1673942400"; d="scan'208";a="341889860" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Mar 2023 09:10:09 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10662"; a="794416004" X-IronPort-AV: E=Sophos;i="5.98,295,1673942400"; d="scan'208";a="794416004" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga002.fm.intel.com with ESMTP; 27 Mar 2023 09:10:09 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Mon, 27 Mar 2023 09:10:08 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Mon, 27 Mar 2023 09:10:08 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.176) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.21; Mon, 27 Mar 2023 09:10:07 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NYkQeseoR/pdoTs+GLKiClUnKS/WIuEKFrmx243mhEc7OJow12kSLhUgQzSivPDVSIgr5tGD+rVZfC3YR/R5bmoPCFL9UDI9DmHKJmqY4xVWDK8bF2+3Lm4xsjvocI18bO2+DYyRG0FvoyJzeX2clxhdXAgMzK9X2ZPyvgJ33L7g+9Xw/K6VvP3GQZmZth0aZFYiOu/1cgmH5ShglwWuAT4dloAOo78dXqB2SCVgJ5P55cxQssEX3GE7N3PzaAxrV0lFQwKF14AgzXJY+iePo0y4qZyN9Sq7fKhbY/wTWn3ki4nYVZE4BOYZzCkKqstS8e7Lc1j/2F/rmz9l2jA4lQ== 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=YlZ353dA9wtcbSxWM0mC+9PSiBQ4AxkRQp9e8PgSNQU=; b=NLLk0qHCSrLRQ6L6ol3Sb+oDLYfr+7qsLERnYiDA51rHyXVhuVksExaGEUMj9GvF4lSnL+GfuWGOofnYl95c4TPyUDGJVuPbkwjLVI83gjSeJBhKCmLBS+JsabBPSdzLdj86fvBhaA/SMe9w/1qIBm9XvimmNpjmGikjsBKI5uGP8iIhLqlmFUGOZ3mvKnM8XEiPn15L5sMTAEIYs1TLe+7WtBKGyGgV/mVt7C+weis32ghlFStjdeHweOHw/2+tQv2gwHDfdJKQz8ZIGwOhEhut6PtfjpsnUWAG4/n8tKuqsnBwK9JBwb+0UBhB4v+sQmp7eOe/Kuk4V0IT5kzGYQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from PH8PR11MB6856.namprd11.prod.outlook.com (2603:10b6:510:22b::7) by CO6PR11MB5569.namprd11.prod.outlook.com (2603:10b6:303:139::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.30; Mon, 27 Mar 2023 16:10:04 +0000 Received: from PH8PR11MB6856.namprd11.prod.outlook.com ([fe80::f480:22ed:c915:13f1]) by PH8PR11MB6856.namprd11.prod.outlook.com ([fe80::f480:22ed:c915:13f1%4]) with mapi id 15.20.6178.039; Mon, 27 Mar 2023 16:10:04 +0000 From: "Andrei Warkentin" To: "devel@edk2.groups.io" , "Warkentin, Andrei" , "Kinney, Michael D" CC: "Gao, Liming" , "Liu, Zhiguang" , Sunil V L Subject: Re: [edk2-devel] [PATCH v5 2/3] MdePkg: add SBI-based SerialPortLib for RISC-V Thread-Topic: [edk2-devel] [PATCH v5 2/3] MdePkg: add SBI-based SerialPortLib for RISC-V Thread-Index: AQHZU3KAVGzPlaHoyEG7qZm8cJJIT67+cWFggAAClwCAAArmAIAQZwsw Date: Mon, 27 Mar 2023 16:10:04 +0000 Message-ID: References: <20230310170456.5230-1-andrei.warkentin@intel.com> <20230310170456.5230-3-andrei.warkentin@intel.com> <174D1E9AD1BD3A96.10271@groups.io> In-Reply-To: <174D1E9AD1BD3A96.10271@groups.io> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH8PR11MB6856:EE_|CO6PR11MB5569:EE_ x-ms-office365-filtering-correlation-id: 1437f5d7-f990-4610-54b4-08db2eddb9c7 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: WpFz1jizgxJSb27OTOuTrkFHyx2EphCQrqzGKU7LPY0xvK35eNPsXfr5lB2EVkCcLK8+A1wuZgBGrmTGs4rGmgcKDCCC7SSozK+fm+SsW99zzK9ap9rHAXKIvbhCfe8X069fgJXk35hSRotw0f4xDeJM6ie/EcMuknYJ/L0+br6cqC63zxM+AlbpAhW2WYY4BvsOMuGPk8Vitthwb1ubwozq4pIiMWo8dAjAYebQg9wKseb59KoW/wy817T5m2rymvvpf2EWGGBChsru6w3SVXM0NiEkun0ZoB8uHcYniOF6zrjX3fjPmpQhUvpm5CPsJ4eByp4qZZF2qA7wfinsBYfMRqQhyYDDcBC66eLov9WJW/5tO+r7OGowTAbHGcMx86HNr8VLu3Ob1OX5HZSTlFkOeigbozsQtDTdEy6j80/h3ueMIgULis1w5RRx3jlMXhnsni1SvwXr0Cf9fDF2J9hvxZx8A36HjgBKyJUzG0Nffh8uUIzUIOOj/4gHoif2u+EZgvrmScM/KntrJNLgtcb9Wk3kHJEQNKwokHBtGteLlSzg+Abz6HwENHXuKLMQmjqrHNAJvPdo8oNnWKatI9Iv128U0QxyxZOc4wLjeYbV3cqieGFW51CotRGdfuR32+gbDc2XerNdhz1dv7/i/w== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR11MB6856.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(39860400002)(376002)(346002)(396003)(366004)(136003)(451199021)(6636002)(316002)(110136005)(54906003)(478600001)(52536014)(8936002)(5660300002)(122000001)(82960400001)(38070700005)(86362001)(66446008)(30864003)(2906002)(38100700002)(4326008)(64756008)(8676002)(33656002)(66556008)(76116006)(66476007)(66946007)(41300700001)(186003)(55016003)(26005)(9686003)(6506007)(53546011)(83380400001)(66899021)(71200400001)(966005)(7696005)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RTIraGtocFVyODUva0h6Ym4yakdnbDY5NTRhYU03ZTFsRFNLVHErazhFM3d0?= =?utf-8?B?T1NxVmV2ZzZ0eUlyTFlqWVdiNEpudVdVWFBzcER5b3Z1QmpFV3QxV2pXMW9n?= =?utf-8?B?MTErcUlPNVJMQXhkWDlpSzU0VE1WUzBtYVhRS3FXTUZ5eUV6U1lSZ0NVaXQy?= =?utf-8?B?dFUrWXl6K2VCQnZhSHc3REJYK1hwMmk4dmx6SDhqeVJQRDIveFlFMkxibytp?= =?utf-8?B?TlJIUUZnaXorLzN2YXdmS2F5MW9tV0RIUFJYei9MNTJMdGYxeDd5alJTa2JW?= =?utf-8?B?amtUUlJPYXMwZHMzNnl1c1RBL1ExbC83TjNiS1VQSmhyUk1QOWVpK3hsYUp5?= =?utf-8?B?R1lYSWhZUW1kcWY5am5RR2tnL2hWVGtNa3dTNFFScUpCNFNrei9jRHIyb290?= =?utf-8?B?b05qWm5EbSt5bkd2RWxEOTI4N1hVY2pqZVRraGFzTXlpYnV0UjBJRHdWWmRu?= =?utf-8?B?TklnQXVPZVEzRVprQUJyZjF1YzVzckFXcUhYT3FOcitGelV3cGNOdGFBbXR4?= =?utf-8?B?Y2hhZ0RReSs1NDc2MWtmT0V3MGRGSXp0L2VaME9LTUVjL25hbCtJRlhTQ3Rr?= =?utf-8?B?elI5TlY0QThLNm5nSGdvb3VPamY0ZXNmL2ZmSUdMWTlZR2NjMzVSZ0tYMGZj?= =?utf-8?B?N284czNsUEJqVzB4VUpsY2k4ek5oTllkOTQ3NjBhZ0N6RFZzTUw4dXNNRGI5?= =?utf-8?B?OGhxWnhlMkRBZ3FZSDN3OGprcG56dFc0cm8rbzNYRWtPaDZRSFdUMUhNRTNG?= =?utf-8?B?ZWU1dkJHRm9Yd1hzbk9meDhVMTFOTGwvYm1rT0VIWVB5cnoySmFQeHFlQWVm?= =?utf-8?B?UC9SZXF3WWhWaW1NalpncU5nY1JuWkwxUXpLeExvakd6SzBSYmFkc2R2aUo3?= =?utf-8?B?L3lEOW5lUXp2KzVGTDZuRElycUlNU2ppQ2RPTzZla1hYWkZZZTQ5WmFpQS90?= =?utf-8?B?R0xVNnZBQ3lvSURhSHdWejBkNTdKRS9tM09EUldOS25tY1F0YktwTHNOT0JT?= =?utf-8?B?enViRmhkUzkyZVJXdHh0SjBzVkN3ZFRFcmwrdncrMUoya0I5cysxQkp4ZTlG?= =?utf-8?B?MUw1cmJINWIwQjNDNENLbEFhQjRxbXJ2UGQwUzdUREtrZm1tbzNNWWJXazVu?= =?utf-8?B?YVBVVUZWcWtzZUdyS1QwTHNGOWVwVnljdG5raFYvZWpGcWRnejh5N0dTbzVa?= =?utf-8?B?TFh4OU9tSHBLQnhsQTJqNEtud2dSdWdFbnpZV0VYTFNRS3R6WUxzbUo5R0VV?= =?utf-8?B?MVg5dkNrNHhaaGE2eFkzbGlKTTFLNXZ6bHd1aGtmNk9aK21jRStCbGN1d2RP?= =?utf-8?B?Y20zRVF2WXZUaGpUN3FTQjJMMzlPZFQ0UW1Qa0gzWVYvSTlIdnVmTStRZDBJ?= =?utf-8?B?ZHlJcWQvWXpYNENrSjZkbVp1Qk1aeFJITDJDdjl3Mmg5N3VXamNSQiswb3F0?= =?utf-8?B?TkxrR2hQZFYvbzFsNGxCTGlCeFl3aFN2ZDNjS3VJMFR2OHlaM3EwYURpVk5v?= =?utf-8?B?U2ZzekYyK2s1bWw0UXB4Rm1vVDRhVEMwYktKeTBkVUJUQXZqNXIrRzRpN2Fq?= =?utf-8?B?SVdMYjVCRkUxdWJycTQ1c1U0TzA4bkRHY0srUTZDa1A3ZTRtbm91VGNSeWpv?= =?utf-8?B?Yld6SDlpbXdHUzNUQUQ0bFM3aDFVQ213OEoyS0hJdm9qaWlkNVh5ZmFpNjZ3?= =?utf-8?B?N2dyeXIzMlcrMGRkNFpTRk1PbmFkbWJwcEQvQ1RpZ1VUV3IyNyt1Zk9OM2Vu?= =?utf-8?B?M25CN2N4Z0Jqb0t5RkNWdlRJaVZuSkR1OGp5S1U4YlJub2xXSUljSTMvcW5k?= =?utf-8?B?WURvdWhtMTNIMTNQUldVcnlXVThTYnBhV2U3NnJqSDFwVGJON1R0S0k0ZFNS?= =?utf-8?B?T0lCODliVFVMN0EwWTZaT1BWRHllR0FDalp0d05FN0lkTzZxU2MybENxWUpm?= =?utf-8?B?VDdGdHdRWk9KWVRKamEwYjBlSHM4M3hQMjY2UUE0aWRyMjlCazNIVTNVTWho?= =?utf-8?B?REdlUkN4dHRGd20wQlI2QW9WU2VzQ2lZaVFyMEMvOFJWbzVucThwUWUwNG82?= =?utf-8?B?OXo1MjV3SVAxTm9xWEFMZXFNL1lmaXkrM2hyYUVwRDJVNnJxYUtkSTQwYW1n?= =?utf-8?B?VnN6WTBGY1ZTN1cvRDhUb0pNNDdJSnh2czNWWjFFbndlNDhkaS9OWWdtZjBj?= =?utf-8?B?THc9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH8PR11MB6856.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1437f5d7-f990-4610-54b4-08db2eddb9c7 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Mar 2023 16:10:04.2399 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: HlRr5D69YFwbWrbkRdrBaLw6Bnt94O/TRZnmzqSpHUhvWudpegktNdFPj2KFzV/xCU/f4/9hkqYghLYpmouHX6QnPi8aHG43pQBJtubBxp0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR11MB5569 Return-Path: andrei.warkentin@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgZm9sa3MsDQoNCklmIHRoZXJlIGFyZW4ndCBhbnkgcmVtYWluaW5nIGNvbmNlcm5zLCBjYW4g SSBnZXQgYSByZXZpZXdlZC1ieSBvbiB0aGUgTWRlUGtnIGNoYW5nZXM/DQoNCkENCg0KLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBl ZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mIEFuZHJlaSBXYXJrZW50aW4NClNlbnQ6IEZyaWRh eSwgTWFyY2ggMTcsIDIwMjMgMTI6NDUgQU0NClRvOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFl bC5kLmtpbm5leUBpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KQ2M6IEdhbywgTGlt aW5nIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBMaXUsIFpoaWd1YW5nIDx6aGlndWFuZy5s aXVAaW50ZWwuY29tPg0KU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjUgMi8zXSBN ZGVQa2c6IGFkZCBTQkktYmFzZWQgU2VyaWFsUG9ydExpYiBmb3IgUklTQy1WDQoNClByZVBpIHJl ZmVycyB0byBhIFNFQy1saWtlIHN0YWdlIGluIGEgVGlhbm8gaW1wbGVtZW50YXRpb24gdGhhdCBz a2lwcyB0aGUgUEVJIHN0YWdlLiBSZWFzb25zIGZvciBza2lwcGluZyBQRUkgdXN1YWxseSBjZW50 ZXIgYXJvdW5kIG1lbW9yeSBpbml0aWFsaXphdGlvbiBiZWluZyBkb25lIGF0IGFuIGVhcmxpZXIg c3RhZ2Ugb2YgZmlybXdhcmUgaW5pdGlhbGl6YXRpb24gLSBmb3IgZXhhbXBsZSwgcHJpb3Igb3Ig cGFydCBvZiBURi1BIGZpcm13YXJlIG9uIEFBcmNoNjQgb3IgcHJpb3Igb3IgcGFydCBvZiBTQkkg aW1wbGVtZW50YXRpb24gb24gUklTQy1WLg0KDQpFLmcuIEFybVZpcnRQa2cvUHJlUGkgYW5kIE92 bWZQa2cvUmlzY1ZWaXJ0L1NlYy4gVGhlIGxhdGVyIGlzIG5vdCBhICJTRUMiIGluIHRoZSBzZW5k IG9mIGhhbmRpbmcgb2ZmIHRvIFBlaUNvcmUsIGJ1dCBpbnN0ZWFkIGhhbmRzIG9mZiB0byBEeGVD b3JlLg0KDQpUaGVyZSBpcyBubyBiYXNlIHR5cGUgZm9yIFByZVBpLiBUaGUgdHlwZSBpcyBzdGls bCBTRUMuIEJ1dCBpdCBhKSBhc3N1bWVzIFJBTSBpcyBhdmFpbGFibGUgYikgYnVpbGRzIEhPQnMg YW5kIGhhbmRzLW9mZiB0byBEWEUuDQoNClRoZSBuYW1lIGhhcyBiZWVuIGFyb3VuZCBmb3IgYXQg bGVhc3QgaGFsZiBhIGRlY2FkZSBub3cgYW5kIG1ha2luZyBpdCBhIHBhcnQgb2YgdGhlIFNlcmlh bFBvcnRMaWIgY29tcG9uZW50IG5hbWUgaXMgaW1wb3J0YW50IGFzIGl0IHNpZ25pZmllcyB0aGUg c2NlbmFyaW8gd2hlcmUgdGhlIGNvZGUgY2FuIGFwcGx5Lg0KDQpBDQoNCi0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQpGcm9tOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBp bnRlbC5jb20+DQpTZW50OiBGcmlkYXksIE1hcmNoIDE3LCAyMDIzIDEyOjAxIEFNDQpUbzogV2Fy a2VudGluLCBBbmRyZWkgPGFuZHJlaS53YXJrZW50aW5AaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5n cm91cHMuaW8NCkNjOiBHYW8sIExpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgTGl1 LCBaaGlndWFuZyA8emhpZ3VhbmcubGl1QGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEIDxt aWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NClN1YmplY3Q6IFJFOiBbUEFUQ0ggdjUgMi8zXSBN ZGVQa2c6IGFkZCBTQkktYmFzZWQgU2VyaWFsUG9ydExpYiBmb3IgUklTQy1WDQoNCldoYXQgaXMg dGhlIGRlZmluaXRpb24gb2YgIlByZVBJIj8gIFRoYXQgaXMgbm90IGEgcHJlZml4IEkgaGF2ZSBz ZWVuIHVzZWQgYmVmb3JlLg0KDQpNaWtlDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gRnJvbTogV2Fya2VudGluLCBBbmRyZWkgPGFuZHJlaS53YXJrZW50aW5AaW50ZWwuY29tPg0K PiBTZW50OiBUaHVyc2RheSwgTWFyY2ggMTYsIDIwMjMgOTo1MyBQTQ0KPiBUbzogZGV2ZWxAZWRr Mi5ncm91cHMuaW8NCj4gQ2M6IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGlu dGVsLmNvbT47IEdhbywgTGltaW5nIA0KPiA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgTGl1 LCBaaGlndWFuZyA8emhpZ3VhbmcubGl1QGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtQQVRD SCB2NSAyLzNdIE1kZVBrZzogYWRkIFNCSS1iYXNlZCBTZXJpYWxQb3J0TGliIGZvciANCj4gUklT Qy1WDQo+IA0KPiBIaSBmb2xrcywNCj4gDQo+IENhbiBJIGdldCBhIHJldmlldyBmb3IgdGhlIGNo YW5nZXMgdG8gTWRlUGtnLmRzYyB0byBpbmNsdWRlIHRoZSBuZXcgDQo+IGxpYnMgb24gUklTQy1W PyBUaGF0J3MgdGhlIG1pbm9yIHRoaW5nIHByZXZlbnRpbmcgdGhpcyBwYXRjaCBzZXQgZnJvbSBi ZWluZyBtZXJnZWQg8J+Yii4NCj4gDQo+IEENCj4gDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+IEZyb206IFdhcmtlbnRpbiwgQW5kcmVpIDxhbmRyZWkud2Fya2VudGluQGludGVsLmNv bT4NCj4gU2VudDogRnJpZGF5LCBNYXJjaCAxMCwgMjAyMyAxMTowNSBBTQ0KPiBUbzogZGV2ZWxA ZWRrMi5ncm91cHMuaW8NCj4gQ2M6IFdhcmtlbnRpbiwgQW5kcmVpIDxhbmRyZWkud2Fya2VudGlu QGludGVsLmNvbT47IERhbmllbCBTY2hhZWZlciANCj4gPGdpdEBkYW5pZWxzY2hhZWZlci5tZT47 IFN1bmlsIFYgTCA8c3VuaWx2bEB2ZW50YW5hbWljcm8uY29tPjsgS2lubmV5LCANCj4gTWljaGFl bCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IEdhbywgTGltaW5nIA0KPiA8Z2FvbGlt aW5nQGJ5b3NvZnQuY29tLmNuPjsgTGl1LCBaaGlndWFuZyA8emhpZ3VhbmcubGl1QGludGVsLmNv bT47IA0KPiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4NCj4gU3ViamVjdDogW1BB VENIIHY1IDIvM10gTWRlUGtnOiBhZGQgU0JJLWJhc2VkIFNlcmlhbFBvcnRMaWIgZm9yIFJJU0Mt Vg0KPiANCj4gVGhlc2UgYXJlIGltcGxlbWVudGF0aW9ucyBvZiBTZXJpYWxQb3J0TGliIHVzaW5n IFNCSSBjb25zb2xlIHNlcnZpY2VzLg0KPiAtIFNlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaSBp cyBhcHByb3ByaWF0ZSBmb3IgU0VDL1BFSSAoWElQKSANCj4gZW52aXJvbm1lbnRzDQo+IC0gUHJl UGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkgaXMgYXBwcm9wcmlhdGUgZm9yIFByZVBJL0RYRSAN Cj4gZW52aXJvbm1lbnRzDQo+IA0KPiBUZXN0ZWQgd2l0aDoNCj4gLSBRZW11IFJpc2NWVmlydCAo bm9uLURCQ04gY2FzZSwgYmFja2VkIGJ5IFVBUlQpDQo+IC0gVGlueUVNVSArIFJpc2NWVmlydCAo bm9uLURCQ04gY2FzZSwgSFRJRikNCj4gLSBUaW55RU1VICsgUmlzY1ZWaXJ0IChEQkNOIGNhc2Us IEhUSUYpDQo+IA0KPiBDYzogRGFuaWVsIFNjaGFlZmVyIDxnaXRAZGFuaWVsc2NoYWVmZXIubWU+ DQo+IENjOiBTdW5pbCBWIEwgPHN1bmlsdmxAdmVudGFuYW1pY3JvLmNvbT4NCj4gQ2M6IE1pY2hh ZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiBDYzogTGltaW5nIEdh byA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPiBDYzogWmhpZ3VhbmcgTGl1IDx6aGlndWFu Zy5saXVAaW50ZWwuY29tPg0KPiBBY2tlZC1ieTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhh dC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IEFuZHJlaSBXYXJrZW50aW4gPGFuZHJlaS53YXJrZW50 aW5AaW50ZWwuY29tPg0KPiAtLS0NCj4gIE1kZVBrZy9NZGVQa2cuZHNjICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArDQo+ ICBNZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS9QcmVQaUR4ZVJp c2NWU2VyaWFsUG9ydExpYlNiaS5pbmYgfCAgMzYgKysrDQo+ICBNZGVQa2cvTGlicmFyeS9TZWNQ ZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpLmluZiAg ICAgfCAgMzkgKysrDQo+ICBNZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExp YlNiaS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS5jICAgfCAyODggKysrKysrKysrKysr KysrKysrKysNCj4gIE1kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9T ZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkuYyAgICAgICB8IDIzMyArKysrKysrKysrKysrKysr DQo+ICBNZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS9QcmVQaUR4 ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS51bmkgfCAgMTYgKysNCj4gIE1kZVBrZy9MaWJyYXJ5L1Nl Y1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkudW5p ICAgICB8ICAxNiArKw0KPiAgNyBmaWxlcyBjaGFuZ2VkLCA2MzAgaW5zZXJ0aW9ucygrKQ0KPiAN Cj4gZGlmZiAtLWdpdCBhL01kZVBrZy9NZGVQa2cuZHNjIGIvTWRlUGtnL01kZVBrZy5kc2MgaW5k ZXggDQo+IDBhYzc2MThiNDYyMy4uZmIzMTM0OTA0MmZiIDEwMDY0NA0KPiAtLS0gYS9NZGVQa2cv TWRlUGtnLmRzYw0KPiArKysgYi9NZGVQa2cvTWRlUGtnLmRzYw0KPiBAQCAtMTkyLDUgKzE5Miw3 IEBAIFtDb21wb25lbnRzLkFSTSwgQ29tcG9uZW50cy5BQVJDSDY0XQ0KPiANCj4gIFtDb21wb25l bnRzLlJJU0NWNjRdDQo+ICAgIE1kZVBrZy9MaWJyYXJ5L0Jhc2VSaXNjVlNiaUxpYi9CYXNlUmlz Y1ZTYmlMaWIuaW5mDQo+ICsNCj4gKyBNZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBv cnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliUw0KPiArIGJpDQo+ICsgLmluZg0KPiAr IE1kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhlUmlz Y1ZTZXJpYWxQb3J0DQo+ICsgTGkNCj4gKyBiU2JpLmluZg0KPiANCj4gIFtCdWlsZE9wdGlvbnNd DQo+IGRpZmYgLS1naXQNCj4gYS9NZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9y dExpYlNiaS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydA0KPiBMaWJTYmkuaW5mDQo+IGIvTWRlUGtn L0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlcmlh bFBvcnQNCj4gTGliU2JpLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAw MDAwMDAwMDAuLjFkODU0NDc1NmJiOQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL01kZVBrZy9M aWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZTZXJpYWwN Cj4gKysrIFBvDQo+ICsrKyBydExpYlNiaS5pbmYNCj4gQEAgLTAsMCArMSwzNiBAQA0KPiArIyMg QGZpbGUNCj4gKyMgIFNlcmlhbCBQb3J0IExpYnJhcnkgYmFja2VkIGJ5IFNCSSBjb25zb2xlLg0K PiArIw0KPiArIyAgTWVhbnQgZm9yIFByZVBpIGFuZCBEWEUgZW52aXJvbm1lbnRzICh3aGVyZSBn bG9iYWxzIGFyZSBhbGxvd2VkKS4NCj4gK1NlZSAjICBTZWNQZWlTZXJpYWxQb3J0TGliUmlzY1ZT YmkgZm9yIGEgcmVkdWNlZCB2YXJpYW50IGFwcHJvcHJpYXRlIA0KPiArZm9yIFNFQyAjICBhbmQg UEVJIChYSVApIGVudmlyb25tZW50cy4NCj4gKyMNCj4gKyMgIENvcHlyaWdodCAoYykgMjAyMywg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPiAjIA0KPiArIw0KPiAr U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQgIyAjICMjDQo+ICsN Cj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAw MDEwMDFCDQo+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IFByZVBpRHhlUmlz Y1ZTZXJpYWxQb3J0TGliU2JpDQo+ICsgIE1PRFVMRV9VTklfRklMRSAgICAgICAgICAgICAgICA9 IFByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpLnVuaQ0KPiArICBGSUxFX0dVSUQgICAgICAg ICAgICAgICAgICAgICAgPSA4NzJhZjc0My1hYjU2LTQ1YjQtYTA2NS02MDI1NjdmNDgyMGMNCj4g KyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gQkFTRQ0KPiArICBWRVJTSU9OX1NU UklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAg ICAgICAgID0gU2VyaWFsUG9ydExpYiB8IFNFQyBEWEVfQ09SRSBEWEVfRFJJVkVSIERYRV9SVU5U SU1FX0RSSVZFUiBVRUZJX0RSSVZFUiBVRUZJX0FQUExJQ0FUSU9ODQo+ICsNCj4gKw0KPiArIw0K PiArIyAgVkFMSURfQVJDSElURUNUVVJFUyAgICAgICAgICAgPSBSSVNDVjY0DQo+ICsjDQo+ICsN Cj4gK1tTb3VyY2VzXQ0KPiArICBQcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS5jDQo+ICsN Cj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlD bGFzc2VzXQ0KPiArICBSaXNjVlNiaUxpYg0KPiBkaWZmIC0tZ2l0DQo+IGEvTWRlUGtnL0xpYnJh cnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlMN Cj4gYmkuaW5mDQo+IGIvTWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2Jp L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlMNCj4gYmkuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uN2JjN2NkNDdjMTFjDQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvTWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1NlY1Bl aVJpc2NWU2VyaWFsUG9ydA0KPiArKysgTGkNCj4gKysrIGJTYmkuaW5mDQo+IEBAIC0wLDAgKzEs MzkgQEANCj4gKyMjIEBmaWxlDQo+ICsjICBTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBT QkkgY29uc29sZS4NCj4gKyMNCj4gKyMgIE1lYW50IGZvciBTRUMgYW5kIFBFSSAoWElQKSBlbnZp cm9ubWVudHMuDQo+ICsjDQo+ICsjICBEdWUgdG8gbGltaXRhdGlvbnMgb2YgU0JJIGNvbnNvbGUg aW50ZXJmYWNlIGFuZCBYSVAgZW52aXJvbm1lbnRzICMgDQo+ICsob24gdXNlIG9mIGdsb2JhbHMp LCB0aGlzIGxpYnJhcnkgaW5zdGFuY2UgZG9lcyBub3QgaW1wbGVtZW50IHJlYWRpbmcgDQo+ICsj IGFuZCBwb2xsaW5nIHRoZSBzZXJpYWwgcG9ydC4gU2VlIFByZVBpRHhlU2VyaWFsUG9ydExpYlJp c2NWU2JpIGZvciANCj4gKyMgdGhlIGZ1bGwtZmVhdHVyZWQgdmFyaWFudCBtZWFudCBmb3IgUHJl UGkgYW5kIERYRSBlbnZpcm9ubWVudHMuDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMjMs IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4gIyANCj4gKyMNCj4g K1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50ICMgIyAjIw0KPiAr DQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgw MDAxMDAxQg0KPiArICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAgPSBTZWNQZWlSaXNj VlNlcmlhbFBvcnRMaWJTYmkNCj4gKyAgTU9EVUxFX1VOSV9GSUxFICAgICAgICAgICAgICAgID0g U2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpLnVuaQ0KPiArICBGSUxFX0dVSUQgICAgICAgICAg ICAgICAgICAgICAgPSA2MzlmYWQzOC00YmZkLTRlYjktOWYwOS1lOTdjNzk0N2Q0ODANCj4gKyAg TU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gQkFTRQ0KPiArICBWRVJTSU9OX1NUUklO RyAgICAgICAgICAgICAgICAgPSAxLjANCj4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAg ICAgID0gU2VyaWFsUG9ydExpYiB8IFNFQyBQRUlfQ09SRSBQRUlNDQo+ICsNCj4gKw0KPiArIw0K PiArIyAgVkFMSURfQVJDSElURUNUVVJFUyAgICAgICAgICAgPSBSSVNDVjY0DQo+ICsjDQo+ICsN Cj4gK1tTb3VyY2VzXQ0KPiArICBTZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkuYw0KPiArDQo+ ICtbUGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xh c3Nlc10NCj4gKyAgUmlzY1ZTYmlMaWINCj4gZGlmZiAtLWdpdA0KPiBhL01kZVBrZy9MaWJyYXJ5 L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0DQo+ IExpYlNiaS5jDQo+IGIvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJT YmkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnQNCj4gTGliU2JpLmMNCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi4wNThhNjU3M2VmMmQNCj4gLS0tIC9kZXYvbnVs bA0KPiArKysgYi9NZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS9Q cmVQaUR4ZVJpc2NWU2VyaWFsDQo+ICsrKyBQbw0KPiArKysgcnRMaWJTYmkuYw0KPiBAQCAtMCww ICsxLDI4OCBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIFNlcmlhbCBQb3J0IExpYnJhcnkgYmFja2Vk IGJ5IFNCSSBjb25zb2xlLg0KPiArDQo+ICsgIE1lYW50IGZvciBQcmVQaSBhbmQgRFhFIGVudmly b25tZW50cyAod2hlcmUgZ2xvYmFscyBhcmUgYWxsb3dlZCkuIA0KPiArIFNlZSBTZWNQZWlTZXJp YWxQb3J0TGliUmlzY1ZTYmkgZm9yIGEgcmVkdWNlZCB2YXJpYW50IGFwcHJvcHJpYXRlIA0KPiAr IGZvciBTRUMgYW5kIFBFSSAoWElQKSBlbnZpcm9ubWVudHMuDQo+ICsNCj4gKyAgQ29weXJpZ2h0 IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4g KyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8QmFzZS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvU2Vy aWFsUG9ydExpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZVJpc2NWU2JpTGliLmg+DQo+ ICsNCj4gK1NUQVRJQyBCT09MRUFOICBtSGF2ZURiY24gICAgICAgICAgPSBGQUxTRTsNCj4gK1NU QVRJQyBCT09MRUFOICBtSGF2ZUxlZ2FjeVB1dGNoYXIgPSBGQUxTRTsgU1RBVElDIEJPT0xFQU4g DQo+ICttSGF2ZUxlZ2FjeUdldGNoYXIgPSBGQUxTRTsNCj4gK1NUQVRJQyBJTlQ2NCAgICBtTGFz dEdldENoYXIgICAgICAgPSAtMTsNCj4gKw0KPiArLyoqDQo+ICsgIEluaXRpYWxpemUgdGhlIHNl cmlhbCBkZXZpY2UgaGFyZHdhcmUuDQo+ICsNCj4gKyAgSWYgbm8gaW5pdGlhbGl6YXRpb24gaXMg cmVxdWlyZWQsIHRoZW4gcmV0dXJuIFJFVFVSTl9TVUNDRVNTLg0KPiArICBJZiB0aGUgc2VyaWFs IGRldmljZSB3YXMgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkLCB0aGVuIHJldHVybiBSRVRVUk5f U1VDQ0VTUy4NCj4gKyAgSWYgdGhlIHNlcmlhbCBkZXZpY2UgY291bGQgbm90IGJlIGluaXRpYWxp emVkLCB0aGVuIHJldHVybiBSRVRVUk5fREVWSUNFX0VSUk9SLg0KPiArDQo+ICsgIEByZXR2YWwg UkVUVVJOX1NVQ0NFU1MgICAgICAgIFRoZSBzZXJpYWwgZGV2aWNlIHdhcyBpbml0aWFsaXplZC4N Cj4gKyAgQHJldHZhbCBSRVRVUk5fREVWSUNFX0VSUk9SICAgVGhlIHNlcmlhbCBkZXZpY2UgY291 bGQgbm90IGJlIGluaXRpYWxpemVkLg0KPiArDQo+ICsqKi8NCj4gK1JFVFVSTl9TVEFUVVMNCj4g K0VGSUFQSQ0KPiArU2VyaWFsUG9ydEluaXRpYWxpemUgKA0KPiArICBWT0lEDQo+ICsgICkNCj4g K3sNCj4gKyAgU0JJX1JFVCAgUmV0Ow0KPiArDQo+ICsgIFJldCA9IFNiaUNhbGwgKFNCSV9FWFRf QkFTRSwgU0JJX0VYVF9CQVNFX1BST0JFX0VYVCwgMSwgDQo+ICsgU0JJX0VYVF9EQkNOKTsgIGlm ICgoVHJhbnNsYXRlRXJyb3IgKFJldC5FcnJvcikgPT0gRUZJX1NVQ0NFU1MpICYmDQo+ICsgICAg ICAoUmV0LlZhbHVlICE9IDApKQ0KPiArICB7DQo+ICsgICAgbUhhdmVEYmNuID0gVFJVRTsNCj4g KyAgfSBlbHNlIHsNCj4gKyAgICBSZXQgPSBTYmlDYWxsIChTQklfRVhUX0JBU0UsIFNCSV9FWFRf QkFTRV9QUk9CRV9FWFQsIDEsIFNCSV9FWFRfMF8xX0NPTlNPTEVfUFVUQ0hBUik7DQo+ICsgICAg aWYgKChUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKSA9PSBFRklfU1VDQ0VTUykgJiYNCj4gKyAg ICAgICAgKFJldC5WYWx1ZSAhPSAwKSkNCj4gKyAgICB7DQo+ICsgICAgICBtSGF2ZUxlZ2FjeVB1 dGNoYXIgPSBUUlVFOw0KPiArICAgIH0NCj4gKw0KPiArICAgIFJldCA9IFNiaUNhbGwgKFNCSV9F WFRfQkFTRSwgU0JJX0VYVF9CQVNFX1BST0JFX0VYVCwgMSwgU0JJX0VYVF8wXzFfQ09OU09MRV9H RVRDSEFSKTsNCj4gKyAgICBpZiAoKFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3IpID09IEVGSV9T VUNDRVNTKSAmJg0KPiArICAgICAgICAoUmV0LlZhbHVlICE9IDApKQ0KPiArICAgIHsNCj4gKyAg ICAgIG1IYXZlTGVnYWN5R2V0Y2hhciA9IFRSVUU7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4g KyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgV3JpdGUg ZGF0YSBmcm9tIGJ1ZmZlciB0byBzZXJpYWwgZGV2aWNlLg0KPiArDQo+ICsgIFdyaXRlcyBOdW1i ZXJPZkJ5dGVzIGRhdGEgYnl0ZXMgZnJvbSBCdWZmZXIgdG8gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ ICsgIFRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiB0byB0aGUgc2VyaWFsIGRl dmljZSBpcyByZXR1cm5lZC4NCj4gKyAgSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBsZXNzIHRoYW4g TnVtYmVyT2ZCeXRlcywgdGhlbiB0aGUgd3JpdGUgb3BlcmF0aW9uIGZhaWxlZC4NCj4gKyAgSWYg QnVmZmVyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ICsgIElmIE51bWJlck9mQnl0ZXMgaXMg emVybywgdGhlbiByZXR1cm4gMC4NCj4gKw0KPiArICBAcGFyYW0gIEJ1ZmZlciAgICAgICAgICAg VGhlIHBvaW50ZXIgdG8gdGhlIGRhdGEgYnVmZmVyIHRvIGJlIHdyaXR0ZW4uDQo+ICsgIEBwYXJh bSAgTnVtYmVyT2ZCeXRlcyAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHdyaXR0ZW4gdG8gdGhl IHNlcmlhbCBkZXZpY2UuDQo+ICsNCj4gKyAgQHJldHZhbCAwICAgICAgICAgICAgICAgIE51bWJl ck9mQnl0ZXMgaXMgMC4NCj4gKyAgQHJldHZhbCA+MCAgICAgICAgICAgICAgIFRoZSBudW1iZXIg b2YgYnl0ZXMgd3JpdHRlbiB0byB0aGUgc2VyaWFsIGRldmljZS4NCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIElmIHRoaXMgdmFsdWUgaXMgbGVzcyB0aGFuIE51bWJlck9mQnl0ZXMsIHRo ZW4gdGhlIHdyaXRlIG9wZXJhdGlvbiBmYWlsZWQuDQo+ICsNCj4gKyoqLw0KPiArVUlOVE4NCj4g K0VGSUFQSQ0KPiArU2VyaWFsUG9ydFdyaXRlICgNCj4gKyAgSU4gVUlOVDggICpCdWZmZXIsDQo+ ICsgIElOIFVJTlROICBOdW1iZXJPZkJ5dGVzDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVE4gIElu ZGV4Ow0KPiArDQo+ICsgIGlmIChtSGF2ZURiY24pIHsNCj4gKyAgICBTQklfUkVUICBSZXQ7DQo+ ICsgICAgUmV0ID0gU2JpQ2FsbCAoDQo+ICsgICAgICAgICAgICBTQklfRVhUX0RCQ04sDQo+ICsg ICAgICAgICAgICBTQklfRVhUX0RCQ05fV1JJVEUsDQo+ICsgICAgICAgICAgICAzLA0KPiArICAg ICAgICAgICAgTnVtYmVyT2ZCeXRlcywNCj4gKyAgICAgICAgICAgICgoVUlOVE4pQnVmZmVyKSwN Cj4gKyAgICAgICAgICAgIDANCj4gKyAgICAgICAgICAgICk7DQo+ICsgICAgaWYgKFRyYW5zbGF0 ZUVycm9yIChSZXQuRXJyb3IpICE9IEVGSV9TVUNDRVNTKSB7DQo+ICsgICAgICByZXR1cm4gMDsN Cj4gKyAgICB9DQo+ICsNCj4gKyAgICByZXR1cm4gUmV0LlZhbHVlOw0KPiArICB9IGVsc2UgaWYg KG1IYXZlTGVnYWN5UHV0Y2hhcikgew0KPiArICAgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IE51 bWJlck9mQnl0ZXM7IEluZGV4KyspIHsNCj4gKyAgICAgIFNiaUNhbGwgKFNCSV9FWFRfMF8xX0NP TlNPTEVfUFVUQ0hBUiwgMCwgMSwgQnVmZmVyW0luZGV4XSk7DQo+ICsgICAgfQ0KPiArDQo+ICsg ICAgcmV0dXJuIEluZGV4Ow0KPiArICB9DQo+ICsNCj4gKyAgLyoNCj4gKyAgICogTmVpdGhlciBE QkNOIG9yIGxlZ2FjeSBleHRlbnNpb24gd2VyZSBwcmVzZW50Lg0KPiArICAgKi8NCj4gKyAgcmV0 dXJuIE51bWJlck9mQnl0ZXM7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBSZWFkIGRhdGEgZnJv bSBzZXJpYWwgZGV2aWNlIGFuZCBzYXZlIHRoZSBkYXRhcyBpbiBidWZmZXIuDQo+ICsNCj4gKyAg UmVhZHMgTnVtYmVyT2ZCeXRlcyBkYXRhIGJ5dGVzIGZyb20gYSBzZXJpYWwgZGV2aWNlIGludG8g dGhlIGJ1ZmZlciANCj4gKyBzcGVjaWZpZWQgYnkgQnVmZmVyLiBUaGUgbnVtYmVyIG9mIGJ5dGVz IGFjdHVhbGx5IHJlYWQgaXMgcmV0dXJuZWQuDQo+ICsgIElmIHRoZSByZXR1cm4gdmFsdWUgaXMg bGVzcyB0aGFuIE51bWJlck9mQnl0ZXMsIHRoZW4gdGhlIHJlc3Qgb3BlcmF0aW9uIGZhaWxlZC4N Cj4gKyAgSWYgQnVmZmVyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ICsgIElmIE51bWJlck9m Qnl0ZXMgaXMgemVybywgdGhlbiByZXR1cm4gMC4NCj4gKw0KPiArICBAcGFyYW0gIEJ1ZmZlciAg ICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGRhdGEgYnVmZmVyIHRvIHN0b3JlIHRoZSBkYXRh IHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gKyAgQHBhcmFtICBOdW1iZXJPZkJ5dGVz ICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgd2hpY2ggd2lsbCBiZSByZWFkLg0KPiArDQo+ICsgIEBy ZXR2YWwgMCAgICAgICAgICAgICAgICBSZWFkIGRhdGEgZmFpbGVkOyBObyBkYXRhIGlzIHRvIGJl IHJlYWQuDQo+ICsgIEByZXR2YWwgPjAgICAgICAgICAgICAgICBUaGUgYWN0dWFsIG51bWJlciBv ZiBieXRlcyByZWFkIGZyb20gc2VyaWFsIGRldmljZS4NCj4gKw0KPiArKiovDQo+ICtVSU5UTg0K PiArRUZJQVBJDQo+ICtTZXJpYWxQb3J0UmVhZCAoDQo+ICsgIE9VVCBVSU5UOCAgKkJ1ZmZlciwN Cj4gKyAgSU4gIFVJTlROICBOdW1iZXJPZkJ5dGVzDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVE4g IEluZGV4Ow0KPiArDQo+ICsgIEluZGV4ID0gMDsNCj4gKyAgd2hpbGUgKChJbmRleCA8IE51bWJl ck9mQnl0ZXMpICYmIFNlcmlhbFBvcnRQb2xsICgpKSB7DQo+ICsgICAgQnVmZmVyW0luZGV4Kytd ID0gKFVJTlQ4KW1MYXN0R2V0Q2hhcjsNCj4gKyAgICBtTGFzdEdldENoYXIgICAgPSAtMTsNCj4g KyAgfQ0KPiArDQo+ICsgIHJldHVybiBJbmRleDsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFBv bGxzIGEgc2VyaWFsIGRldmljZSB0byBzZWUgaWYgdGhlcmUgaXMgYW55IGRhdGEgd2FpdGluZyB0 byBiZSByZWFkLg0KPiArDQo+ICsgIFBvbGxzIGEgc2VyaWFsIGRldmljZSB0byBzZWUgaWYgdGhl cmUgaXMgYW55IGRhdGEgd2FpdGluZyB0byBiZSByZWFkLg0KPiArICBJZiB0aGVyZSBpcyBkYXRh IHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNlLCB0aGVuIFRSVUUgaXMg cmV0dXJuZWQuDQo+ICsgIElmIHRoZXJlIGlzIG5vIGRhdGEgd2FpdGluZyB0byBiZSByZWFkIGZy b20gdGhlIHNlcmlhbCBkZXZpY2UsIHRoZW4gRkFMU0UgaXMgcmV0dXJuZWQuDQo+ICsNCj4gKyAg QHJldHZhbCBUUlVFICAgICAgICAgICAgIERhdGEgaXMgd2FpdGluZyB0byBiZSByZWFkIGZyb20g dGhlIHNlcmlhbCBkZXZpY2UuDQo+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICAgICBUaGVyZSBp cyBubyBkYXRhIHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiAr DQo+ICsqKi8NCj4gK0JPT0xFQU4NCj4gK0VGSUFQSQ0KPiArU2VyaWFsUG9ydFBvbGwgKA0KPiAr ICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgLyoNCj4gKyAgICogQ2FyZWZ1bC4gT3BlblNCSSB3 aXRoIEhUSUYgY29uc29sZSB3aWxsIHJldHVybiAtMSBmb2xsb3dlZCBieSAtMg0KPiArICAgKiBp ZiB0aGVyZSBpcyBubyBjaGFyYWN0ZXIgcmVjZWl2ZWQuIFNvIGp1c3QgY2hlY2sgZm9yIHZhbHVl cyA+PSAwLg0KPiArICAgKi8NCj4gKw0KPiArICBpZiAobUxhc3RHZXRDaGFyID49IDApIHsNCj4g KyAgICByZXR1cm4gVFJVRTsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmIChtSGF2ZURiY24pIHsNCj4g KyAgICBVSU5UOCAgICBCdWZmZXI7DQo+ICsgICAgU0JJX1JFVCAgUmV0Ow0KPiArDQo+ICsgICAg UmV0ID0gU2JpQ2FsbCAoDQo+ICsgICAgICAgICAgICBTQklfRVhUX0RCQ04sDQo+ICsgICAgICAg ICAgICBTQklfRVhUX0RCQ05fUkVBRCwNCj4gKyAgICAgICAgICAgIDMsDQo+ICsgICAgICAgICAg ICAxLA0KPiArICAgICAgICAgICAgKChVSU5UTikmQnVmZmVyKSwNCj4gKyAgICAgICAgICAgIDAN Cj4gKyAgICAgICAgICAgICk7DQo+ICsgICAgaWYgKChUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9y KSA9PSBFRklfU1VDQ0VTUykgJiYNCj4gKyAgICAgICAgKFJldC5WYWx1ZSA9PSAxKSkNCj4gKyAg ICB7DQo+ICsgICAgICBtTGFzdEdldENoYXIgPSBCdWZmZXI7DQo+ICsgICAgfQ0KPiArICB9IGVs c2UgaWYgKG1IYXZlTGVnYWN5R2V0Y2hhcikgew0KPiArICAgIG1MYXN0R2V0Q2hhciA9IChJTlQ2 NClTYmlDYWxsIChTQklfRVhUXzBfMV9DT05TT0xFX0dFVENIQVIsIDAsIA0KPiArIDApLkVycm9y OyAgfQ0KPiArDQo+ICsgIHJldHVybiBtTGFzdEdldENoYXIgPj0gMDsNCj4gK30NCj4gKw0KPiAr LyoqDQo+ICsgIFNldHMgdGhlIGNvbnRyb2wgYml0cyBvbiBhIHNlcmlhbCBkZXZpY2UuDQo+ICsN Cj4gKyAgQHBhcmFtIENvbnRyb2wgICAgICAgICAgICAgICAgU2V0cyB0aGUgYml0cyBvZiBDb250 cm9sIHRoYXQgYXJlIHNldHRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1Mg ICAgICAgIFRoZSBuZXcgY29udHJvbCBiaXRzIHdlcmUgc2V0IG9uIHRoZSBzZXJpYWwgZGV2aWNl Lg0KPiArICBAcmV0dmFsIFJFVFVSTl9VTlNVUFBPUlRFRCAgICBUaGUgc2VyaWFsIGRldmljZSBk b2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLg0KPiArICBAcmV0dmFsIFJFVFVSTl9ERVZJ Q0VfRVJST1IgICBUaGUgc2VyaWFsIGRldmljZSBpcyBub3QgZnVuY3Rpb25pbmcgY29ycmVjdGx5 Lg0KPiArDQo+ICsqKi8NCj4gK1JFVFVSTl9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU2VyaWFsUG9y dFNldENvbnRyb2wgKA0KPiArICBJTiBVSU5UMzIgIENvbnRyb2wNCj4gKyAgKQ0KPiArew0KPiAr ICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBSZXRyaWV2 ZSB0aGUgc3RhdHVzIG9mIHRoZSBjb250cm9sIGJpdHMgb24gYSBzZXJpYWwgZGV2aWNlLg0KPiAr DQo+ICsgIEBwYXJhbSBDb250cm9sICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byByZXR1cm4g dGhlIGN1cnJlbnQgY29udHJvbCBzaWduYWxzIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ICsN Cj4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgVGhlIGNvbnRyb2wgYml0cyB3ZXJl IHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gKyAgQHJldHZhbCBSRVRVUk5fVU5TVVBQ T1JURUQgICAgVGhlIHNlcmlhbCBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlv bi4NCj4gKyAgQHJldHZhbCBSRVRVUk5fREVWSUNFX0VSUk9SICAgVGhlIHNlcmlhbCBkZXZpY2Ug aXMgbm90IGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4NCj4gKw0KPiArKiovDQo+ICtSRVRVUk5fU1RB VFVTDQo+ICtFRklBUEkNCj4gK1NlcmlhbFBvcnRHZXRDb250cm9sICgNCj4gKyAgT1VUIFVJTlQz MiAgKkNvbnRyb2wNCj4gKyAgKQ0KPiArew0KPiArICAqQ29udHJvbCA9IDA7DQo+ICsgIHJldHVy biBSRVRVUk5fU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFNldHMgdGhlIGJhdWQg cmF0ZSwgcmVjZWl2ZSBGSUZPIGRlcHRoLCB0cmFuc21pdC9yZWNlaWNlIHRpbWUgb3V0LCANCj4g K3Bhcml0eSwNCj4gKyAgZGF0YSBiaXRzLCBhbmQgc3RvcCBiaXRzIG9uIGEgc2VyaWFsIGRldmlj ZS4NCj4gKw0KPiArICBAcGFyYW0gQmF1ZFJhdGUgICAgICAgICAgIFRoZSByZXF1ZXN0ZWQgYmF1 ZCByYXRlLiBBIEJhdWRSYXRlIHZhbHVlIG9mIDAgd2lsbCB1c2UgdGhlDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGV2aWNlJ3MgZGVmYXVsdCBpbnRlcmZhY2Ugc3BlZWQuDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkg c2V0Lg0KPiArICBAcGFyYW0gUmV2ZWl2ZUZpZm9EZXB0aCAgIFRoZSByZXF1ZXN0ZWQgZGVwdGgg b2YgdGhlIEZJRk8gb24gdGhlIHJlY2VpdmUgc2lkZSBvZiB0aGUNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZXJpYWwgaW50ZXJmYWNlLiBBIFJlY2VpdmVGaWZvRGVwdGggdmFsdWUg b2YgMCB3aWxsIHVzZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkZXZpY2Un cyBkZWZhdWx0IEZJRk8gZGVwdGguDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24g b3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiArICBAcGFyYW0gVGltZW91dCAgICAg ICAgICAgIFRoZSByZXF1ZXN0ZWQgdGltZSBvdXQgZm9yIGEgc2luZ2xlIGNoYXJhY3RlciBpbiBt aWNyb3NlY29uZHMuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0aW1lb3V0 IGFwcGxpZXMgdG8gYm90aCB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUgc2lkZSBvZiB0aGUNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UuIEEgVGltZW91dCB2YWx1ZSBv ZiAwIHdpbGwgdXNlIHRoZSBkZXZpY2UncyBkZWZhdWx0IHRpbWUNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvdXQgdmFsdWUuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg T24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiArICBAcGFyYW0gUGFyaXR5ICAg ICAgICAgICAgIFRoZSB0eXBlIG9mIHBhcml0eSB0byB1c2Ugb24gdGhpcyBzZXJpYWwgZGV2aWNl LiBBIFBhcml0eSB2YWx1ZSBvZg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1 bHRQYXJpdHkgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1bHQgcGFyaXR5IHZhbHVlLg0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5 IHNldC4NCj4gKyAgQHBhcmFtIERhdGFCaXRzICAgICAgICAgICBUaGUgbnVtYmVyIG9mIGRhdGEg Yml0cyB0byB1c2Ugb24gdGhlIHNlcmlhbCBkZXZpY2UuIEEgRGF0YUJpdHMNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2YXVsZSBvZiAwIHdpbGwgdXNlIHRoZSBkZXZpY2UncyBkZWZh dWx0IGRhdGEgYml0IHNldHRpbmcuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24g b3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiArICBAcGFyYW0gU3RvcEJpdHMgICAg ICAgICAgIFRoZSBudW1iZXIgb2Ygc3RvcCBiaXRzIHRvIHVzZSBvbiB0aGlzIHNlcmlhbCBkZXZp Y2UuIEEgU3RvcEJpdHMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBE ZWZhdWx0U3RvcEJpdHMgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1bHQgbnVtYmVyIG9mDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcCBiaXRzLg0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gKw0K PiArICBAcmV0dmFsIFJFVFVSTl9TVUNDRVNTICAgICAgICAgICAgVGhlIG5ldyBhdHRyaWJ1dGVz IHdlcmUgc2V0IG9uIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiArICBAcmV0dmFsIFJFVFVSTl9VTlNV UFBPUlRFRCAgICAgICAgVGhlIHNlcmlhbCBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9w ZXJhdGlvbi4NCj4gKyAgQHJldHZhbCBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIgIE9uZSBvciBt b3JlIG9mIHRoZSBhdHRyaWJ1dGVzIGhhcyBhbiB1bnN1cHBvcnRlZCB2YWx1ZS4NCj4gKyAgQHJl dHZhbCBSRVRVUk5fREVWSUNFX0VSUk9SICAgICAgIFRoZSBzZXJpYWwgZGV2aWNlIGlzIG5vdCBm dW5jdGlvbmluZyBjb3JyZWN0bHkuDQo+ICsNCj4gKyoqLw0KPiArUkVUVVJOX1NUQVRVUw0KPiAr RUZJQVBJDQo+ICtTZXJpYWxQb3J0U2V0QXR0cmlidXRlcyAoDQo+ICsgIElOIE9VVCBVSU5UNjQg ICAgICAgICAgICAgICpCYXVkUmF0ZSwNCj4gKyAgSU4gT1VUIFVJTlQzMiAgICAgICAgICAgICAg KlJlY2VpdmVGaWZvRGVwdGgsDQo+ICsgIElOIE9VVCBVSU5UMzIgICAgICAgICAgICAgICpUaW1l b3V0LA0KPiArICBJTiBPVVQgRUZJX1BBUklUWV9UWVBFICAgICAqUGFyaXR5LA0KPiArICBJTiBP VVQgVUlOVDggICAgICAgICAgICAgICAqRGF0YUJpdHMsDQo+ICsgIElOIE9VVCBFRklfU1RPUF9C SVRTX1RZUEUgICpTdG9wQml0cw0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBSRVRVUk5fU1VD Q0VTUzsNCj4gK30NCj4gZGlmZiAtLWdpdA0KPiBhL01kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NW U2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTDQo+IGJpLmMNCj4gYi9N ZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJp YWxQb3J0TGliUw0KPiBiaS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAw MDAwMDAwMC4uMGFkNTkzMWJlM2FlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvTWRlUGtnL0xp YnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1NlY1BlaVJpc2NWU2VyaWFsUG9ydA0K PiArKysgTGkNCj4gKysrIGJTYmkuYw0KPiBAQCAtMCwwICsxLDIzMyBAQA0KPiArLyoqIEBmaWxl DQo+ICsgIFNlcmlhbCBQb3J0IExpYnJhcnkgYmFja2VkIGJ5IFNCSSBjb25zb2xlLg0KPiArDQo+ ICsgIE1lYW50IGZvciBTRUMgYW5kIFBFSSAoWElQKSBlbnZpcm9ubWVudHMuDQo+ICsNCj4gKyAg RHVlIHRvIGxpbWl0YXRpb25zIG9mIFNCSSBjb25zb2xlIGludGVyZmFjZSBhbmQgWElQIGVudmly b25tZW50cyANCj4gKyAob24gdXNlIG9mIGdsb2JhbHMpLCB0aGlzIGxpYnJhcnkgaW5zdGFuY2Ug ZG9lcyBub3QgaW1wbGVtZW50IA0KPiArIHJlYWRpbmcgIGFuZCBwb2xsaW5nIHRoZSBzZXJpYWwg cG9ydC4gU2VlIA0KPiArIFByZVBpRHhlU2VyaWFsUG9ydExpYlJpc2NWU2JpIGZvciAgdGhlIGZ1 bGwtZmVhdHVyZWQgdmFyaWFudCBtZWFudCBmb3IgUHJlUGkgYW5kIERYRSBlbnZpcm9ubWVudHMu DQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp Z2h0cyByZXNlcnZlZC48QlI+DQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8QmFzZS5oPg0KPiAr I2luY2x1ZGUgPExpYnJhcnkvU2VyaWFsUG9ydExpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkv QmFzZVJpc2NWU2JpTGliLmg+DQo+ICsNCj4gKy8qKg0KPiArICBJbml0aWFsaXplIHRoZSBzZXJp YWwgZGV2aWNlIGhhcmR3YXJlLg0KPiArDQo+ICsgIElmIG5vIGluaXRpYWxpemF0aW9uIGlzIHJl cXVpcmVkLCB0aGVuIHJldHVybiBSRVRVUk5fU1VDQ0VTUy4NCj4gKyAgSWYgdGhlIHNlcmlhbCBk ZXZpY2Ugd2FzIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCwgdGhlbiByZXR1cm4gUkVUVVJOX1NV Q0NFU1MuDQo+ICsgIElmIHRoZSBzZXJpYWwgZGV2aWNlIGNvdWxkIG5vdCBiZSBpbml0aWFsaXpl ZCwgdGhlbiByZXR1cm4gUkVUVVJOX0RFVklDRV9FUlJPUi4NCj4gKw0KPiArICBAcmV0dmFsIFJF VFVSTl9TVUNDRVNTICAgICAgICBUaGUgc2VyaWFsIGRldmljZSB3YXMgaW5pdGlhbGl6ZWQuDQo+ ICsgIEByZXR2YWwgUkVUVVJOX0RFVklDRV9FUlJPUiAgIFRoZSBzZXJpYWwgZGV2aWNlIGNvdWxk IG5vdCBiZSBpbml0aWFsaXplZC4NCj4gKw0KPiArKiovDQo+ICtSRVRVUk5fU1RBVFVTDQo+ICtF RklBUEkNCj4gK1NlcmlhbFBvcnRJbml0aWFsaXplICgNCj4gKyAgVk9JRA0KPiArICApDQo+ICt7 DQo+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFdy aXRlIGRhdGEgZnJvbSBidWZmZXIgdG8gc2VyaWFsIGRldmljZS4NCj4gKw0KPiArICBXcml0ZXMg TnVtYmVyT2ZCeXRlcyBkYXRhIGJ5dGVzIGZyb20gQnVmZmVyIHRvIHRoZSBzZXJpYWwgZGV2aWNl Lg0KPiArICBUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gdG8gdGhlIHNlcmlh bCBkZXZpY2UgaXMgcmV0dXJuZWQuDQo+ICsgIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgbGVzcyB0 aGFuIE51bWJlck9mQnl0ZXMsIHRoZW4gdGhlIHdyaXRlIG9wZXJhdGlvbiBmYWlsZWQuDQo+ICsg IElmIEJ1ZmZlciBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiArICBJZiBOdW1iZXJPZkJ5dGVz IGlzIHplcm8sIHRoZW4gcmV0dXJuIDAuDQo+ICsNCj4gKyAgQHBhcmFtICBCdWZmZXIgICAgICAg ICAgIFRoZSBwb2ludGVyIHRvIHRoZSBkYXRhIGJ1ZmZlciB0byBiZSB3cml0dGVuLg0KPiArICBA cGFyYW0gIE51bWJlck9mQnl0ZXMgICAgVGhlIG51bWJlciBvZiBieXRlcyB0byB3cml0dGVuIHRv IHRoZSBzZXJpYWwgZGV2aWNlLg0KPiArDQo+ICsgIEByZXR2YWwgMCAgICAgICAgICAgICAgICBO dW1iZXJPZkJ5dGVzIGlzIDAuDQo+ICsgIEByZXR2YWwgPjAgICAgICAgICAgICAgICBUaGUgbnVt YmVyIG9mIGJ5dGVzIHdyaXR0ZW4gdG8gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICBJZiB0aGlzIHZhbHVlIGlzIGxlc3MgdGhhbiBOdW1iZXJPZkJ5dGVz LCB0aGVuIHRoZSB3cml0ZSBvcGVyYXRpb24gZmFpbGVkLg0KPiArDQo+ICsqKi8NCj4gK1VJTlRO DQo+ICtFRklBUEkNCj4gK1NlcmlhbFBvcnRXcml0ZSAoDQo+ICsgIElOIFVJTlQ4ICAqQnVmZmVy LA0KPiArICBJTiBVSU5UTiAgTnVtYmVyT2ZCeXRlcw0KPiArICApDQo+ICt7DQo+ICsgIFNCSV9S RVQgIFJldDsNCj4gKyAgVUlOVE4gICAgSW5kZXg7DQo+ICsNCj4gKyAgUmV0ID0gU2JpQ2FsbCAo U0JJX0VYVF9CQVNFLCBTQklfRVhUX0JBU0VfUFJPQkVfRVhULCAxLCANCj4gKyBTQklfRVhUX0RC Q04pOyAgaWYgKChUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKSA9PSBFRklfU1VDQ0VTUykgJiYN Cj4gKyAgICAgIChSZXQuVmFsdWUgIT0gMCkpDQo+ICsgIHsNCj4gKyAgICBSZXQgPSBTYmlDYWxs ICgNCj4gKyAgICAgICAgICAgIFNCSV9FWFRfREJDTiwNCj4gKyAgICAgICAgICAgIFNCSV9FWFRf REJDTl9XUklURSwNCj4gKyAgICAgICAgICAgIDMsDQo+ICsgICAgICAgICAgICBOdW1iZXJPZkJ5 dGVzLA0KPiArICAgICAgICAgICAgKChVSU5UTilCdWZmZXIpLA0KPiArICAgICAgICAgICAgMA0K PiArICAgICAgICAgICAgKTsNCj4gKyAgICBpZiAoVHJhbnNsYXRlRXJyb3IgKFJldC5FcnJvcikg IT0gRUZJX1NVQ0NFU1MpIHsNCj4gKyAgICAgIHJldHVybiAwOw0KPiArICAgIH0NCj4gKw0KPiAr ICAgIHJldHVybiBSZXQuVmFsdWU7DQo+ICsgIH0NCj4gKw0KPiArICBSZXQgPSBTYmlDYWxsIChT QklfRVhUX0JBU0UsIFNCSV9FWFRfQkFTRV9QUk9CRV9FWFQsIDEsIA0KPiArIFNCSV9FWFRfMF8x X0NPTlNPTEVfUFVUQ0hBUik7ICBpZiAoKFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3IpID09IEVG SV9TVUNDRVNTKSAmJg0KPiArICAgICAgKFJldC5WYWx1ZSAhPSAwKSkNCj4gKyAgew0KPiArICAg IGZvciAoSW5kZXggPSAwOyBJbmRleCA8IE51bWJlck9mQnl0ZXM7IEluZGV4KyspIHsNCj4gKyAg ICAgIFNiaUNhbGwgKFNCSV9FWFRfMF8xX0NPTlNPTEVfUFVUQ0hBUiwgMCwgMSwgQnVmZmVyW0lu ZGV4XSk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcmV0dXJuIEluZGV4Ow0KPiArICB9DQo+ICsN Cj4gKyAgLyoNCj4gKyAgICogTmVpdGhlciBEQkNOIG9yIGxlZ2FjeSBleHRlbnNpb24gd2VyZSBw cmVzZW50Lg0KPiArICAgKi8NCj4gKyAgcmV0dXJuIE51bWJlck9mQnl0ZXM7DQo+ICt9DQo+ICsN Cj4gKy8qKg0KPiArICBSZWFkIGRhdGEgZnJvbSBzZXJpYWwgZGV2aWNlIGFuZCBzYXZlIHRoZSBk YXRhcyBpbiBidWZmZXIuDQo+ICsNCj4gKyAgUmVhZHMgTnVtYmVyT2ZCeXRlcyBkYXRhIGJ5dGVz IGZyb20gYSBzZXJpYWwgZGV2aWNlIGludG8gdGhlIGJ1ZmZlciANCj4gKyBzcGVjaWZpZWQgYnkg QnVmZmVyLiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHJlYWQgaXMgcmV0dXJuZWQuDQo+ ICsgIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgbGVzcyB0aGFuIE51bWJlck9mQnl0ZXMsIHRoZW4g dGhlIHJlc3Qgb3BlcmF0aW9uIGZhaWxlZC4NCj4gKyAgSWYgQnVmZmVyIGlzIE5VTEwsIHRoZW4g QVNTRVJUKCkuDQo+ICsgIElmIE51bWJlck9mQnl0ZXMgaXMgemVybywgdGhlbiByZXR1cm4gMC4N Cj4gKw0KPiArICBAcGFyYW0gIEJ1ZmZlciAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGRh dGEgYnVmZmVyIHRvIHN0b3JlIHRoZSBkYXRhIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4N Cj4gKyAgQHBhcmFtICBOdW1iZXJPZkJ5dGVzICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgd2hpY2gg d2lsbCBiZSByZWFkLg0KPiArDQo+ICsgIEByZXR2YWwgMCAgICAgICAgICAgICAgICBSZWFkIGRh dGEgZmFpbGVkOyBObyBkYXRhIGlzIHRvIGJlIHJlYWQuDQo+ICsgIEByZXR2YWwgPjAgICAgICAg ICAgICAgICBUaGUgYWN0dWFsIG51bWJlciBvZiBieXRlcyByZWFkIGZyb20gc2VyaWFsIGRldmlj ZS4NCj4gKw0KPiArKiovDQo+ICtVSU5UTg0KPiArRUZJQVBJDQo+ICtTZXJpYWxQb3J0UmVhZCAo DQo+ICsgIE9VVCBVSU5UOCAgKkJ1ZmZlciwNCj4gKyAgSU4gIFVJTlROICBOdW1iZXJPZkJ5dGVz DQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBQ b2xscyBhIHNlcmlhbCBkZXZpY2UgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBkYXRhIHdhaXRpbmcg dG8gYmUgcmVhZC4NCj4gKw0KPiArICBQb2xscyBhIHNlcmlhbCBkZXZpY2UgdG8gc2VlIGlmIHRo ZXJlIGlzIGFueSBkYXRhIHdhaXRpbmcgdG8gYmUgcmVhZC4NCj4gKyAgSWYgdGhlcmUgaXMgZGF0 YSB3YWl0aW5nIHRvIGJlIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZSwgdGhlbiBUUlVFIGlz IHJldHVybmVkLg0KPiArICBJZiB0aGVyZSBpcyBubyBkYXRhIHdhaXRpbmcgdG8gYmUgcmVhZCBm cm9tIHRoZSBzZXJpYWwgZGV2aWNlLCB0aGVuIEZBTFNFIGlzIHJldHVybmVkLg0KPiArDQo+ICsg IEByZXR2YWwgVFJVRSAgICAgICAgICAgICBEYXRhIGlzIHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9t IHRoZSBzZXJpYWwgZGV2aWNlLg0KPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgICAgVGhlcmUg aXMgbm8gZGF0YSB3YWl0aW5nIHRvIGJlIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4g Kw0KPiArKiovDQo+ICtCT09MRUFODQo+ICtFRklBUEkNCj4gK1NlcmlhbFBvcnRQb2xsICgNCj4g KyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBGQUxTRTsNCj4gK30NCj4gKw0KPiAr LyoqDQo+ICsgIFNldHMgdGhlIGNvbnRyb2wgYml0cyBvbiBhIHNlcmlhbCBkZXZpY2UuDQo+ICsN Cj4gKyAgQHBhcmFtIENvbnRyb2wgICAgICAgICAgICAgICAgU2V0cyB0aGUgYml0cyBvZiBDb250 cm9sIHRoYXQgYXJlIHNldHRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1Mg ICAgICAgIFRoZSBuZXcgY29udHJvbCBiaXRzIHdlcmUgc2V0IG9uIHRoZSBzZXJpYWwgZGV2aWNl Lg0KPiArICBAcmV0dmFsIFJFVFVSTl9VTlNVUFBPUlRFRCAgICBUaGUgc2VyaWFsIGRldmljZSBk b2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLg0KPiArICBAcmV0dmFsIFJFVFVSTl9ERVZJ Q0VfRVJST1IgICBUaGUgc2VyaWFsIGRldmljZSBpcyBub3QgZnVuY3Rpb25pbmcgY29ycmVjdGx5 Lg0KPiArDQo+ICsqKi8NCj4gK1JFVFVSTl9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU2VyaWFsUG9y dFNldENvbnRyb2wgKA0KPiArICBJTiBVSU5UMzIgIENvbnRyb2wNCj4gKyAgKQ0KPiArew0KPiAr ICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBSZXRyaWV2 ZSB0aGUgc3RhdHVzIG9mIHRoZSBjb250cm9sIGJpdHMgb24gYSBzZXJpYWwgZGV2aWNlLg0KPiAr DQo+ICsgIEBwYXJhbSBDb250cm9sICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byByZXR1cm4g dGhlIGN1cnJlbnQgY29udHJvbCBzaWduYWxzIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ICsN Cj4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgVGhlIGNvbnRyb2wgYml0cyB3ZXJl IHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gKyAgQHJldHZhbCBSRVRVUk5fVU5TVVBQ T1JURUQgICAgVGhlIHNlcmlhbCBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlv bi4NCj4gKyAgQHJldHZhbCBSRVRVUk5fREVWSUNFX0VSUk9SICAgVGhlIHNlcmlhbCBkZXZpY2Ug aXMgbm90IGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4NCj4gKw0KPiArKiovDQo+ICtSRVRVUk5fU1RB VFVTDQo+ICtFRklBUEkNCj4gK1NlcmlhbFBvcnRHZXRDb250cm9sICgNCj4gKyAgT1VUIFVJTlQz MiAgKkNvbnRyb2wNCj4gKyAgKQ0KPiArew0KPiArICAqQ29udHJvbCA9IDA7DQo+ICsgIHJldHVy biBSRVRVUk5fU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFNldHMgdGhlIGJhdWQg cmF0ZSwgcmVjZWl2ZSBGSUZPIGRlcHRoLCB0cmFuc21pdC9yZWNlaWNlIHRpbWUgb3V0LCANCj4g K3Bhcml0eSwNCj4gKyAgZGF0YSBiaXRzLCBhbmQgc3RvcCBiaXRzIG9uIGEgc2VyaWFsIGRldmlj ZS4NCj4gKw0KPiArICBAcGFyYW0gQmF1ZFJhdGUgICAgICAgICAgIFRoZSByZXF1ZXN0ZWQgYmF1 ZCByYXRlLiBBIEJhdWRSYXRlIHZhbHVlIG9mIDAgd2lsbCB1c2UgdGhlDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGV2aWNlJ3MgZGVmYXVsdCBpbnRlcmZhY2Ugc3BlZWQuDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkg c2V0Lg0KPiArICBAcGFyYW0gUmV2ZWl2ZUZpZm9EZXB0aCAgIFRoZSByZXF1ZXN0ZWQgZGVwdGgg b2YgdGhlIEZJRk8gb24gdGhlIHJlY2VpdmUgc2lkZSBvZiB0aGUNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZXJpYWwgaW50ZXJmYWNlLiBBIFJlY2VpdmVGaWZvRGVwdGggdmFsdWUg b2YgMCB3aWxsIHVzZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkZXZpY2Un cyBkZWZhdWx0IEZJRk8gZGVwdGguDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24g b3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiArICBAcGFyYW0gVGltZW91dCAgICAg ICAgICAgIFRoZSByZXF1ZXN0ZWQgdGltZSBvdXQgZm9yIGEgc2luZ2xlIGNoYXJhY3RlciBpbiBt aWNyb3NlY29uZHMuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0aW1lb3V0 IGFwcGxpZXMgdG8gYm90aCB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUgc2lkZSBvZiB0aGUNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UuIEEgVGltZW91dCB2YWx1ZSBv ZiAwIHdpbGwgdXNlIHRoZSBkZXZpY2UncyBkZWZhdWx0IHRpbWUNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvdXQgdmFsdWUuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg T24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiArICBAcGFyYW0gUGFyaXR5ICAg ICAgICAgICAgIFRoZSB0eXBlIG9mIHBhcml0eSB0byB1c2Ugb24gdGhpcyBzZXJpYWwgZGV2aWNl LiBBIFBhcml0eSB2YWx1ZSBvZg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1 bHRQYXJpdHkgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1bHQgcGFyaXR5IHZhbHVlLg0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5 IHNldC4NCj4gKyAgQHBhcmFtIERhdGFCaXRzICAgICAgICAgICBUaGUgbnVtYmVyIG9mIGRhdGEg Yml0cyB0byB1c2Ugb24gdGhlIHNlcmlhbCBkZXZpY2UuIEEgRGF0YUJpdHMNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2YXVsZSBvZiAwIHdpbGwgdXNlIHRoZSBkZXZpY2UncyBkZWZh dWx0IGRhdGEgYml0IHNldHRpbmcuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24g b3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiArICBAcGFyYW0gU3RvcEJpdHMgICAg ICAgICAgIFRoZSBudW1iZXIgb2Ygc3RvcCBiaXRzIHRvIHVzZSBvbiB0aGlzIHNlcmlhbCBkZXZp Y2UuIEEgU3RvcEJpdHMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBE ZWZhdWx0U3RvcEJpdHMgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1bHQgbnVtYmVyIG9mDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcCBiaXRzLg0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gKw0K PiArICBAcmV0dmFsIFJFVFVSTl9TVUNDRVNTICAgICAgICAgICAgVGhlIG5ldyBhdHRyaWJ1dGVz IHdlcmUgc2V0IG9uIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiArICBAcmV0dmFsIFJFVFVSTl9VTlNV UFBPUlRFRCAgICAgICAgVGhlIHNlcmlhbCBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9w ZXJhdGlvbi4NCj4gKyAgQHJldHZhbCBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIgIE9uZSBvciBt b3JlIG9mIHRoZSBhdHRyaWJ1dGVzIGhhcyBhbiB1bnN1cHBvcnRlZCB2YWx1ZS4NCj4gKyAgQHJl dHZhbCBSRVRVUk5fREVWSUNFX0VSUk9SICAgICAgIFRoZSBzZXJpYWwgZGV2aWNlIGlzIG5vdCBm dW5jdGlvbmluZyBjb3JyZWN0bHkuDQo+ICsNCj4gKyoqLw0KPiArUkVUVVJOX1NUQVRVUw0KPiAr RUZJQVBJDQo+ICtTZXJpYWxQb3J0U2V0QXR0cmlidXRlcyAoDQo+ICsgIElOIE9VVCBVSU5UNjQg ICAgICAgICAgICAgICpCYXVkUmF0ZSwNCj4gKyAgSU4gT1VUIFVJTlQzMiAgICAgICAgICAgICAg KlJlY2VpdmVGaWZvRGVwdGgsDQo+ICsgIElOIE9VVCBVSU5UMzIgICAgICAgICAgICAgICpUaW1l b3V0LA0KPiArICBJTiBPVVQgRUZJX1BBUklUWV9UWVBFICAgICAqUGFyaXR5LA0KPiArICBJTiBP VVQgVUlOVDggICAgICAgICAgICAgICAqRGF0YUJpdHMsDQo+ICsgIElOIE9VVCBFRklfU1RPUF9C SVRTX1RZUEUgICpTdG9wQml0cw0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBSRVRVUk5fU1VD Q0VTUzsNCj4gK30NCj4gZGlmZiAtLWdpdA0KPiBhL01kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlz Y1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0DQo+IExpYlNiaS51bmkN Cj4gYi9NZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS9QcmVQaUR4 ZVJpc2NWU2VyaWFsUG9ydA0KPiBMaWJTYmkudW5pDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMDAwMC4uN2IyMmNhYTVhMDkwDQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVS aXNjVlNlcmlhbA0KPiArKysgUG8NCj4gKysrIHJ0TGliU2JpLnVuaQ0KPiBAQCAtMCwwICsxLDE2 IEBADQo+ICsvLyAvKiogQGZpbGUNCj4gKy8vIFNlcmlhbCBQb3J0IExpYnJhcnkgYmFja2VkIGJ5 IFNCSSBjb25zb2xlLg0KPiArLy8NCj4gKy8vIFNlcmlhbCBQb3J0IExpYnJhcnkgYmFja2VkIGJ5 IFNCSSBjb25zb2xlLg0KPiArLy8NCj4gKy8vIENvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29y cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPiAvLyANCj4gKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50IC8vIC8vICoqLw0KPiArDQo+ICsNCj4g KyNzdHJpbmcgU1RSX01PRFVMRV9BQlNUUkFDVCAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMg IlNlcmlhbCBQb3J0IExpYnJhcnkgYmFja2VkIGJ5IFNCSSBjb25zb2xlIg0KPiArDQo+ICsjc3Ry aW5nIFNUUl9NT0RVTEVfREVTQ1JJUFRJT04gICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICJTZXJp YWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29sZS4iDQo+ICsNCj4gZGlmZiAtLWdp dA0KPiBhL01kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlS aXNjVlNlcmlhbFBvcnRMaWJTDQo+IGJpLnVuaQ0KPiBiL01kZVBrZy9MaWJyYXJ5L1NlY1BlaVJp c2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTDQo+IGJpLnVuaQ0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjdiMjJjYWE1YTA5 MA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2Vy aWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnQNCj4gKysrIExpYlNiaS51bmkNCj4g QEAgLTAsMCArMSwxNiBAQA0KPiArLy8gLyoqIEBmaWxlDQo+ICsvLyBTZXJpYWwgUG9ydCBMaWJy YXJ5IGJhY2tlZCBieSBTQkkgY29uc29sZS4NCj4gKy8vDQo+ICsvLyBTZXJpYWwgUG9ydCBMaWJy YXJ5IGJhY2tlZCBieSBTQkkgY29uc29sZS4NCj4gKy8vDQo+ICsvLyBDb3B5cmlnaHQgKGMpIDIw MjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4gLy8gDQo+ICsv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCAvLyAvLyAqKi8N Cj4gKw0KPiArDQo+ICsjc3RyaW5nIFNUUl9NT0RVTEVfQUJTVFJBQ1QgICAgICAgICAgICAgI2xh bmd1YWdlIGVuLVVTICJTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29sZSIN Cj4gKw0KPiArI3N0cmluZyBTVFJfTU9EVUxFX0RFU0NSSVBUSU9OICAgICAgICAgICNsYW5ndWFn ZSBlbi1VUyAiU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuIg0KPiAr DQo+IC0tDQo+IDIuMjUuMQ0KDQoNCg0KDQoNCg0K