From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web11.12586.1679029255747530196 for ; Thu, 16 Mar 2023 22:00:56 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=Q4NL9TLI; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679029255; x=1710565255; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=79Yndi4YZIW1f37DjxMCzNLM6V5/nVVzj7A8Sd4V7R0=; b=Q4NL9TLI0DYj3eofv+BNNxqHaxDaM6151ZbxJYX9mtTIczR14d+kOYGH RuVNMOAYv3TkluG5+nWsHdgY63Sjsu7dxYfPi7gd5ib+hq1iMo+RzPGLZ MET98aEeWnzuBzFmvuiwaMLs+mGx3QFpFB49XlQgoLZTh0EjbWZgM0QuM fsjjY5j7X82HoB/903qVrd8TqvrKcEabMGXdi6NZ3H1/IBxsX2rPQfdg+ tEuTr0cKz63iUnMma9Kh9kleVLP8VpKGYbaivERfq678i4TW8GgdmepSg uDgqWXmqlpOpkdpjm4wEGsWth80TbmHNZBr1MuoKw7T5obPtr5LqDhTWo Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10651"; a="336875371" X-IronPort-AV: E=Sophos;i="5.98,267,1673942400"; d="scan'208";a="336875371" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2023 22:00:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10651"; a="710385016" X-IronPort-AV: E=Sophos;i="5.98,267,1673942400"; d="scan'208";a="710385016" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga008.jf.intel.com with ESMTP; 16 Mar 2023 22:00:55 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Thu, 16 Mar 2023 22:00:54 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Thu, 16 Mar 2023 22:00:54 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.174) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.21; Thu, 16 Mar 2023 22:00:54 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=m1cw8DJ0GTVN8o4hK4kY9fNqVfVlhA6zT9s6/2gqbCX9YDTpzkS4XcuKXAtY8QI3x661XhGFfazmc7FNCp0rYIWEvUSD+J61f6ONMsEm7aYxTi4X3xGdnwbu5eOHFq/8i1PYpFjLkxwm/ivdz2hbkqN2+9f3ATbdrl7oEjx4F8JvQfpzhhjD0fvc6W6tkBbZrcfHKY9pjnGRehH82U6/g/MfbkXVS5iJYgXyLHbE1F6Or0OkSGAKkeSPa1Z3wNKzOdM+iaNzYSSXe8wB6FJGeyq4MA7Ciqq4BqU90NcUKu8LXTBtUwGNZgew0CtNGcRgdOfcmpWJvyN3EtmAq9XrHA== 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=79Yndi4YZIW1f37DjxMCzNLM6V5/nVVzj7A8Sd4V7R0=; b=WvAvT7Y6v9Wwg0L5ecHb2Eu2ZVYbRJqx2qL+dLOD9Z6bvHYlvP1AwOxGmKpHbSN1+WuaRgVXlCEK6wJNe0lx71dE7ISHu2JVqybjCdgzWzsYIo7mJfJElysfelTZP7BVd4iLevRlvGpMaZoR6Wg4LFeGSBiA6CEMU+CcnfAVowPKxEZWVPqdmG5u9mPnHkut+Fme+51F5CxDkxhw1z101tgrw5VWcrWnNt+6bgPy2Q7BZSgyHoxyYAZgtk/LY8AZJSXx5fmKgyfd+Jl07jrIPIZW4ueH9ab+ZmwE04ieFdfmsAGN3GJBnIektFYGmISKjf02TjWyB+FQDs4wmtis4A== 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 CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by SA3PR11MB7435.namprd11.prod.outlook.com (2603:10b6:806:305::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.24; Fri, 17 Mar 2023 05:00:46 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::76be:1164:2c1f:90a5]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::76be:1164:2c1f:90a5%7]) with mapi id 15.20.6178.019; Fri, 17 Mar 2023 05:00:46 +0000 From: "Michael D Kinney" To: "Warkentin, Andrei" , "devel@edk2.groups.io" CC: "Gao, Liming" , "Liu, Zhiguang" , "Kinney, Michael D" Subject: Re: [PATCH v5 2/3] MdePkg: add SBI-based SerialPortLib for RISC-V Thread-Topic: [PATCH v5 2/3] MdePkg: add SBI-based SerialPortLib for RISC-V Thread-Index: AQHZU3KAqGEKmVrnyEKey33ndupHCa7+ceoAgAAB5TA= Date: Fri, 17 Mar 2023 05:00:46 +0000 Message-ID: References: <20230310170456.5230-1-andrei.warkentin@intel.com> <20230310170456.5230-3-andrei.warkentin@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB4929:EE_|SA3PR11MB7435:EE_ x-ms-office365-filtering-correlation-id: 38d3b4cd-13fa-43e5-0a92-08db26a49198 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: sgnaqcKA89/JyhElPp4QH/i8dvwMoOPt4F786QmE9Qmb0uQ2ocvxEIXzbAZayaW9Nc7dk3NFS0qbGQ8PvMbh04q3bYEQzsMP46tW4FD+PtMslana7xz/qGQJUwQuSBpU5xApTVorUj8XKo5QMDeWfdciDTG2Kp7L+6tseYHe04Uie0bOdgULhVf3c/9CJ4wEmsWXLwLHX6LRjQkO4Dx9fF/w6o50jR5wYC0eyFqfMY+IuUTnFem6Kw4GW5kUOIlFPAVcrhgELtUr/snXmw3cYCgDC18ZVcMmrWaA6293lwEIW5f5EhzuRaXpVHGPlO0Ov+ENioZ1xaRiBWVbTVdzmTbdhpVto+vxqig4oNIM3nxeoBlv3MQJ0NKKLiLmN1SJ1X+763F+NNRu+ALtL2PKZ4T0cneumHb5w35qLOcDsFuFPofVh5sGptG71/GxEDWj8ZG+2wgojdIhXAZZfaJ8capKDcDN54su5I+Rr79Y7SIvFJgXpbWdCgpLgR0TWGoLR0UQIhpyVz4A7g9KIoOd6QPINsNLsW8yOyOCY6dozjAE1mi737CYNZ+Zf0OpD1yf5C6pdhEsVCKWvOWCH82w2SJ1iD1miuddi+kLMCs8OIPq51/IihE/xGHScvguKcF1/+F/DvAmRJHSLTHH0ey4b+hPJNFkw3CXNkXTaIxtd6wzlSmcG6q/HNxwpC41lHNYHGY+qKhcUmFZyXTh6xg+2Q== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(39860400002)(366004)(346002)(136003)(396003)(376002)(451199018)(33656002)(55016003)(38070700005)(86362001)(82960400001)(38100700002)(122000001)(4326008)(54906003)(66476007)(8936002)(478600001)(76116006)(107886003)(110136005)(66556008)(41300700001)(66946007)(64756008)(66446008)(8676002)(316002)(83380400001)(30864003)(5660300002)(186003)(71200400001)(26005)(9686003)(7696005)(6506007)(2906002)(52536014)(53546011)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?V3hWZUVZMjZhcWl2MVNJTGdHS0JZUUo1NzJTNlFEWCtVendpL1FnZ1FBZW1P?= =?utf-8?B?SjFFUUtwU0FPRjFjM0dQN082SkF4ZjFSdDRRalgyLzBsOE01R3cwQWhwZGsz?= =?utf-8?B?Q1ZCc2RzRit3VnhncVRZNU14V0VML1orV0MwUkpCS1R1c3A2NGZtaGNiSWI4?= =?utf-8?B?YkRDV3VPelRNU1JmL3FhN3h0K09jNTRzSGNwalVUcko1R01XN1NBUTFSV3A5?= =?utf-8?B?cUdqcmlGV2JSRGJBSzhkWWs2Nm9wandTUk85MXQ0dHE4Y09BT0ZoY012VUtz?= =?utf-8?B?dlN0dElvQUdML1ovaXVWZWF2NzVzNHBGZkpubUpsZ2NNaGIzSXVVQVFVQlRR?= =?utf-8?B?N1k5YXNYY3g2WUtlQkNURTlKTHpzVGwvRDVmMHJWMzdpaWZvTWtIcHBibGVC?= =?utf-8?B?U2s2QUFMNXFhTU8vRmQ1U3pxV0JOM0pWbGhTaEtzZjBiZmJoOUFyUTJJeksv?= =?utf-8?B?b2RtL2ZmaVJ3SUpiZ0llYXhOdTFqYUx0TERncVc3WElJQ054VWRnV0NWUWJk?= =?utf-8?B?UEluaVJFNFNQRnJqdG1mNXR0b1Nra1hHSytYQ012OWMxRkg4SVRrd251SGVy?= =?utf-8?B?bkVFT3hpOEJGazRGWEwzZ3g5bE1DbUp3MGlsWVBJTUZtcXJXZ0tGQjNzR0Mx?= =?utf-8?B?cm9yYUlQSzJkdWtjNmduMDlXTStnK1NtQkkvT3pDVUp2VUIrOTZiQ1Yyb2k4?= =?utf-8?B?Ti9qcDFXd0oxR1o3L2J6RHExa0VDSlRSS1l2RlhSdDVxVmp1RWZ5YnYxZnFE?= =?utf-8?B?WVZyaXQ2Y0t0Y3U3SksxeU85VXdnTmJJdjgwOTdoRWlFdkFVMDhPbnVML2xt?= =?utf-8?B?RFc1TG10TFF1NGNZRmNEWFBudU5BbzNEY1A3Q3J4ZHk2SFpxaXJWSEw5S2Y4?= =?utf-8?B?VmFCYmxIYWVvMUQvMDc4Yjg5NjZIa3B6NkRHUkhBaW5TVFA0NHozK0tVSllr?= =?utf-8?B?WWhCdGg3VG5kaE5IU1JDZ2xGbS9xaUY1K2ZOSFJZSnprWWVqQ3hsTHU4VERR?= =?utf-8?B?Qm9rQU8vRll6Z2d5aVJ5Vk9FcUsyaVpHZmtiQWMvQk1rMnpLWTRjWFp5RDdV?= =?utf-8?B?TU9uUk1KZUhBUUw4MTJZaFVyMkNwME5rdUoxVGJtekVpU1pyWHRBSlMzVkJ2?= =?utf-8?B?L09Yb0h2dFRnVTVjTTFPdGdETEYzZytrcVQrWHNid0tCQnN1Sm5DdVhvbWRn?= =?utf-8?B?aGFua3BlamhicjBJR2tJWlpOckxsUmNCQW1iVko5dk9WOTNxV0s5RU5HWVd4?= =?utf-8?B?WjJYSi91UUJHZi9Qa3BucTNzZXJBYUkwN2xEWThnNFU0RnpIdkgwWWp3VjE3?= =?utf-8?B?TG1aZHd1Y2xiV3h1VE1JWkZrWnUxb0NaLytoMVRUOHhoOTF4RHhRSGc1VjRS?= =?utf-8?B?WWFRRFBwdllaaFllY09yTGFVczBwOEdBbkkwR1ZGb3pzV21vUzVudjgycDNy?= =?utf-8?B?UE9hZVEwMHpCckFhRHkwNEM2UERIOGxQYlVIZzAxYk5ITDFZbnlJc1p5dmxW?= =?utf-8?B?MWhBSkFSby94dXpibUgvZmFYb0NwUGZoZXVHTGw5cStvSEhDY2tjYmRDUzI1?= =?utf-8?B?c1ZpSXY1bE41RUt4Nzk0R0pvaXZBTVJYM2k1Z3ZuNkxUcEgwV3YxM2g3M0Jr?= =?utf-8?B?dTh6dGE3cThsbTdOUXhKR1BMR0xmbmNEVzBVdnJlSDNWa0ZOd2hiK2lFV1ZS?= =?utf-8?B?LzZEbERuRzRRRXBQaU9HQnVtRUFCTFdxRDcza2NNOW1MREphVGJaVnA1a0tl?= =?utf-8?B?WWpzRTFpU0RaNzJQZ1d3WndsZmhWNFZVZkxlKzFycWNueG1YUXRhQi9Xc3ZF?= =?utf-8?B?NFFoaStKSFYvRlp3RmIvdlFyMWdHWmp0K0JHNnhvcXdVSC9oSC82OWhqZFNw?= =?utf-8?B?Q3d6WlRRWnVBOStvNSt4MXBqTEZ4K2IzYm1MYVRjSjJtWCtrYm9BUnlKNVNt?= =?utf-8?B?WXBsZEV3REtPbUtkeDN6WVZXK0x2R0VwdE5ySGdBbEdyR0U2WFpmK28zaXE5?= =?utf-8?B?K2VsS08vaXJMd25xNmkwY3BZeXp2OUkzN2p2Z2p0ODB4OXhwZXVxSnN3eGw4?= =?utf-8?B?dlFDQjFiSVFodHp6bC9wc2c3eDBtUEV3cVRyQ1RjM3J3b0NqeCttRUUwSlcy?= =?utf-8?B?ZVc1bEVGSXg0MWJZRmNzUlV5TitoN1o4Y3dsWmJ2TTdjMHUrV0FNTVVPMndW?= =?utf-8?B?YXc9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 38d3b4cd-13fa-43e5-0a92-08db26a49198 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Mar 2023 05:00:46.1584 (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: InIBEsFQRBvqAY4huUZY+pDOI6O8GOnera70oFBqQ/yzGjugdWLdsjmPsYA7d9cabOTn0t94a0vBlftCc3hVjqWPw9poCsIbro2A2rTQlPo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR11MB7435 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 V2hhdCBpcyB0aGUgZGVmaW5pdGlvbiBvZiAiUHJlUEkiPyAgVGhhdCBpcyBub3QgYSBwcmVmaXgg SSBoYXZlIHNlZW4gdXNlZCBiZWZvcmUuDQoNCk1pa2UNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiBGcm9tOiBXYXJrZW50aW4sIEFuZHJlaSA8YW5kcmVpLndhcmtlbnRpbkBpbnRl bC5jb20+DQo+IFNlbnQ6IFRodXJzZGF5LCBNYXJjaCAxNiwgMjAyMyA5OjUzIFBNDQo+IFRvOiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5r aW5uZXlAaW50ZWwuY29tPjsgR2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47 IExpdSwgWmhpZ3VhbmcgPHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBb UEFUQ0ggdjUgMi8zXSBNZGVQa2c6IGFkZCBTQkktYmFzZWQgU2VyaWFsUG9ydExpYiBmb3IgUklT Qy1WDQo+IA0KPiBIaSBmb2xrcywNCj4gDQo+IENhbiBJIGdldCBhIHJldmlldyBmb3IgdGhlIGNo YW5nZXMgdG8gTWRlUGtnLmRzYyB0byBpbmNsdWRlIHRoZSBuZXcgbGlicyBvbiBSSVNDLVY/IFRo YXQncyB0aGUgbWlub3IgdGhpbmcgcHJldmVudGluZyB0aGlzIHBhdGNoDQo+IHNldCBmcm9tIGJl aW5nIG1lcmdlZCDwn5iKLg0KPiANCj4gQQ0KPiANCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gRnJvbTogV2Fya2VudGluLCBBbmRyZWkgPGFuZHJlaS53YXJrZW50aW5AaW50ZWwuY29t Pg0KPiBTZW50OiBGcmlkYXksIE1hcmNoIDEwLCAyMDIzIDExOjA1IEFNDQo+IFRvOiBkZXZlbEBl ZGsyLmdyb3Vwcy5pbw0KPiBDYzogV2Fya2VudGluLCBBbmRyZWkgPGFuZHJlaS53YXJrZW50aW5A aW50ZWwuY29tPjsgRGFuaWVsIFNjaGFlZmVyIDxnaXRAZGFuaWVsc2NoYWVmZXIubWU+OyBTdW5p bCBWIEwgPHN1bmlsdmxAdmVudGFuYW1pY3JvLmNvbT47DQo+IEtpbm5leSwgTWljaGFlbCBEIDxt aWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IEdhbywgTGltaW5nIDxnYW9saW1pbmdAYnlvc29m dC5jb20uY24+OyBMaXUsIFpoaWd1YW5nIDx6aGlndWFuZy5saXVAaW50ZWwuY29tPjsNCj4gR2Vy ZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+DQo+IFN1YmplY3Q6IFtQQVRDSCB2NSAyLzNd IE1kZVBrZzogYWRkIFNCSS1iYXNlZCBTZXJpYWxQb3J0TGliIGZvciBSSVNDLVYNCj4gDQo+IFRo ZXNlIGFyZSBpbXBsZW1lbnRhdGlvbnMgb2YgU2VyaWFsUG9ydExpYiB1c2luZyBTQkkgY29uc29s ZSBzZXJ2aWNlcy4NCj4gLSBTZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkgaXMgYXBwcm9wcmlh dGUgZm9yIFNFQy9QRUkgKFhJUCkgZW52aXJvbm1lbnRzDQo+IC0gUHJlUGlEeGVSaXNjVlNlcmlh bFBvcnRMaWJTYmkgaXMgYXBwcm9wcmlhdGUgZm9yIFByZVBJL0RYRSBlbnZpcm9ubWVudHMNCj4g DQo+IFRlc3RlZCB3aXRoOg0KPiAtIFFlbXUgUmlzY1ZWaXJ0IChub24tREJDTiBjYXNlLCBiYWNr ZWQgYnkgVUFSVCkNCj4gLSBUaW55RU1VICsgUmlzY1ZWaXJ0IChub24tREJDTiBjYXNlLCBIVElG KQ0KPiAtIFRpbnlFTVUgKyBSaXNjVlZpcnQgKERCQ04gY2FzZSwgSFRJRikNCj4gDQo+IENjOiBE YW5pZWwgU2NoYWVmZXIgPGdpdEBkYW5pZWxzY2hhZWZlci5tZT4NCj4gQ2M6IFN1bmlsIFYgTCA8 c3VuaWx2bEB2ZW50YW5hbWljcm8uY29tPg0KPiBDYzogTWljaGFlbCBEIEtpbm5leSA8bWljaGFl bC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IENjOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29m dC5jb20uY24+DQo+IENjOiBaaGlndWFuZyBMaXUgPHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+DQo+ IEFja2VkLWJ5OiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4NCj4gU2lnbmVkLW9m Zi1ieTogQW5kcmVpIFdhcmtlbnRpbiA8YW5kcmVpLndhcmtlbnRpbkBpbnRlbC5jb20+DQo+IC0t LQ0KPiAgTWRlUGtnL01kZVBrZy5kc2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsNCj4gIE1kZVBrZy9MaWJyYXJ5L1By ZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2Jp LmluZiB8ICAzNiArKysNCj4gIE1kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExp YlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkuaW5mICAgICB8ICAzOSArKysNCj4gIE1k ZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZT ZXJpYWxQb3J0TGliU2JpLmMgICB8IDI4OCArKysrKysrKysrKysrKysrKysrKw0KPiAgTWRlUGtn L0xpYnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1NlY1BlaVJpc2NWU2VyaWFsUG9y dExpYlNiaS5jICAgICAgIHwgMjMzICsrKysrKysrKysrKysrKysNCj4gIE1kZVBrZy9MaWJyYXJ5 L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGli U2JpLnVuaSB8ICAxNiArKw0KPiAgTWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0 TGliU2JpL1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS51bmkgICAgIHwgIDE2ICsrDQo+ICA3 IGZpbGVzIGNoYW5nZWQsIDYzMCBpbnNlcnRpb25zKCspDQo+IA0KPiBkaWZmIC0tZ2l0IGEvTWRl UGtnL01kZVBrZy5kc2MgYi9NZGVQa2cvTWRlUGtnLmRzYyBpbmRleCAwYWM3NjE4YjQ2MjMuLmZi MzEzNDkwNDJmYiAxMDA2NDQNCj4gLS0tIGEvTWRlUGtnL01kZVBrZy5kc2MNCj4gKysrIGIvTWRl UGtnL01kZVBrZy5kc2MNCj4gQEAgLTE5Miw1ICsxOTIsNyBAQCBbQ29tcG9uZW50cy5BUk0sIENv bXBvbmVudHMuQUFSQ0g2NF0NCj4gDQo+ICBbQ29tcG9uZW50cy5SSVNDVjY0XQ0KPiAgICBNZGVQ a2cvTGlicmFyeS9CYXNlUmlzY1ZTYmlMaWIvQmFzZVJpc2NWU2JpTGliLmluZg0KPiArDQo+ICsg TWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1NlY1BlaVJpc2NWU2Vy aWFsUG9ydExpYlNiaQ0KPiArIC5pbmYNCj4gKyBNZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NW U2VyaWFsUG9ydExpYlNiaS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpDQo+ICsgYlNiaS5pbmYN Cj4gDQo+ICBbQnVpbGRPcHRpb25zXQ0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvUHJl UGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmku aW5mDQo+IGIvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJl UGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMDAwMC4uMWQ4NTQ0NzU2YmI5DQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVS aXNjVlNlcmlhbFBvDQo+ICsrKyBydExpYlNiaS5pbmYNCj4gQEAgLTAsMCArMSwzNiBAQA0KPiAr IyMgQGZpbGUNCj4gKyMgIFNlcmlhbCBQb3J0IExpYnJhcnkgYmFja2VkIGJ5IFNCSSBjb25zb2xl Lg0KPiArIw0KPiArIyAgTWVhbnQgZm9yIFByZVBpIGFuZCBEWEUgZW52aXJvbm1lbnRzICh3aGVy ZSBnbG9iYWxzIGFyZSBhbGxvd2VkKS4NCj4gK1NlZSAjICBTZWNQZWlTZXJpYWxQb3J0TGliUmlz Y1ZTYmkgZm9yIGEgcmVkdWNlZCB2YXJpYW50IGFwcHJvcHJpYXRlDQo+ICtmb3IgU0VDICMgIGFu ZCBQRUkgKFhJUCkgZW52aXJvbm1lbnRzLg0KPiArIw0KPiArIyAgQ29weXJpZ2h0IChjKSAyMDIz LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+ICMgIw0KPiArU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQgIyAjICMjDQo+ICsNCj4g K1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEw MDFCDQo+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IFByZVBpRHhlUmlzY1ZT ZXJpYWxQb3J0TGliU2JpDQo+ICsgIE1PRFVMRV9VTklfRklMRSAgICAgICAgICAgICAgICA9IFBy ZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpLnVuaQ0KPiArICBGSUxFX0dVSUQgICAgICAgICAg ICAgICAgICAgICAgPSA4NzJhZjc0My1hYjU2LTQ1YjQtYTA2NS02MDI1NjdmNDgyMGMNCj4gKyAg TU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gQkFTRQ0KPiArICBWRVJTSU9OX1NUUklO RyAgICAgICAgICAgICAgICAgPSAxLjANCj4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAg ICAgID0gU2VyaWFsUG9ydExpYiB8IFNFQyBEWEVfQ09SRSBEWEVfRFJJVkVSIERYRV9SVU5USU1F X0RSSVZFUiBVRUZJX0RSSVZFUiBVRUZJX0FQUExJQ0FUSU9ODQo+ICsNCj4gKw0KPiArIw0KPiAr IyAgVkFMSURfQVJDSElURUNUVVJFUyAgICAgICAgICAgPSBSSVNDVjY0DQo+ICsjDQo+ICsNCj4g K1tTb3VyY2VzXQ0KPiArICBQcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS5jDQo+ICsNCj4g K1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFz c2VzXQ0KPiArICBSaXNjVlNiaUxpYg0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvU2Vj UGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS5pbmYN Cj4gYi9NZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlz Y1ZTZXJpYWxQb3J0TGliU2JpLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw MDAwMDAwMDAwMDAuLjdiYzdjZDQ3YzExYw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL01kZVBr Zy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBv cnRMaQ0KPiArKysgYlNiaS5pbmYNCj4gQEAgLTAsMCArMSwzOSBAQA0KPiArIyMgQGZpbGUNCj4g KyMgIFNlcmlhbCBQb3J0IExpYnJhcnkgYmFja2VkIGJ5IFNCSSBjb25zb2xlLg0KPiArIw0KPiAr IyAgTWVhbnQgZm9yIFNFQyBhbmQgUEVJIChYSVApIGVudmlyb25tZW50cy4NCj4gKyMNCj4gKyMg IER1ZSB0byBsaW1pdGF0aW9ucyBvZiBTQkkgY29uc29sZSBpbnRlcmZhY2UgYW5kIFhJUCBlbnZp cm9ubWVudHMgIw0KPiArKG9uIHVzZSBvZiBnbG9iYWxzKSwgdGhpcyBsaWJyYXJ5IGluc3RhbmNl IGRvZXMgbm90IGltcGxlbWVudCByZWFkaW5nICMNCj4gK2FuZCBwb2xsaW5nIHRoZSBzZXJpYWwg cG9ydC4gU2VlIFByZVBpRHhlU2VyaWFsUG9ydExpYlJpc2NWU2JpIGZvciAjDQo+ICt0aGUgZnVs bC1mZWF0dXJlZCB2YXJpYW50IG1lYW50IGZvciBQcmVQaSBhbmQgRFhFIGVudmlyb25tZW50cy4N Cj4gKyMNCj4gKyMgIENvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPiAjICMNCj4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50ICMgIyAjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJ T04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAxQg0KPiArICBCQVNFX05BTUUgICAgICAg ICAgICAgICAgICAgICAgPSBTZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkNCj4gKyAgTU9EVUxF X1VOSV9GSUxFICAgICAgICAgICAgICAgID0gU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpLnVu aQ0KPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA2MzlmYWQzOC00YmZkLTRl YjktOWYwOS1lOTdjNzk0N2Q0ODANCj4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAg ID0gQkFTRQ0KPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gKyAg TElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0gU2VyaWFsUG9ydExpYiB8IFNFQyBQRUlf Q09SRSBQRUlNDQo+ICsNCj4gKw0KPiArIw0KPiArIyAgVkFMSURfQVJDSElURUNUVVJFUyAgICAg ICAgICAgPSBSSVNDVjY0DQo+ICsjDQo+ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBTZWNQZWlSaXNj VlNlcmlhbFBvcnRMaWJTYmkuYw0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQ a2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgUmlzY1ZTYmlMaWINCj4gZGlm ZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1By ZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpLmMNCj4gYi9NZGVQa2cvTGlicmFyeS9QcmVQaUR4 ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS5jDQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMDU4YTY1NzNlZjJk DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNl cmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvDQo+ICsrKyBydExpYlNiaS5jDQo+ IEBAIC0wLDAgKzEsMjg4IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgU2VyaWFsIFBvcnQgTGlicmFy eSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuDQo+ICsNCj4gKyAgTWVhbnQgZm9yIFByZVBpIGFuZCBE WEUgZW52aXJvbm1lbnRzICh3aGVyZSBnbG9iYWxzIGFyZSBhbGxvd2VkKS4gU2VlDQo+ICsgU2Vj UGVpU2VyaWFsUG9ydExpYlJpc2NWU2JpIGZvciBhIHJlZHVjZWQgdmFyaWFudCBhcHByb3ByaWF0 ZSBmb3IgU0VDDQo+ICsgYW5kIFBFSSAoWElQKSBlbnZpcm9ubWVudHMuDQo+ICsNCj4gKyAgQ29w eXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ ICsNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8QmFzZS5oPg0KPiArI2luY2x1ZGUgPExpYnJh cnkvU2VyaWFsUG9ydExpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZVJpc2NWU2JpTGli Lmg+DQo+ICsNCj4gK1NUQVRJQyBCT09MRUFOICBtSGF2ZURiY24gICAgICAgICAgPSBGQUxTRTsN Cj4gK1NUQVRJQyBCT09MRUFOICBtSGF2ZUxlZ2FjeVB1dGNoYXIgPSBGQUxTRTsgU1RBVElDIEJP T0xFQU4NCj4gK21IYXZlTGVnYWN5R2V0Y2hhciA9IEZBTFNFOw0KPiArU1RBVElDIElOVDY0ICAg IG1MYXN0R2V0Q2hhciAgICAgICA9IC0xOw0KPiArDQo+ICsvKioNCj4gKyAgSW5pdGlhbGl6ZSB0 aGUgc2VyaWFsIGRldmljZSBoYXJkd2FyZS4NCj4gKw0KPiArICBJZiBubyBpbml0aWFsaXphdGlv biBpcyByZXF1aXJlZCwgdGhlbiByZXR1cm4gUkVUVVJOX1NVQ0NFU1MuDQo+ICsgIElmIHRoZSBz ZXJpYWwgZGV2aWNlIHdhcyBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQsIHRoZW4gcmV0dXJuIFJF VFVSTl9TVUNDRVNTLg0KPiArICBJZiB0aGUgc2VyaWFsIGRldmljZSBjb3VsZCBub3QgYmUgaW5p dGlhbGl6ZWQsIHRoZW4gcmV0dXJuIFJFVFVSTl9ERVZJQ0VfRVJST1IuDQo+ICsNCj4gKyAgQHJl dHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgVGhlIHNlcmlhbCBkZXZpY2Ugd2FzIGluaXRpYWxp emVkLg0KPiArICBAcmV0dmFsIFJFVFVSTl9ERVZJQ0VfRVJST1IgICBUaGUgc2VyaWFsIGRldmlj ZSBjb3VsZCBub3QgYmUgaW5pdGlhbGl6ZWQuDQo+ICsNCj4gKyoqLw0KPiArUkVUVVJOX1NUQVRV Uw0KPiArRUZJQVBJDQo+ICtTZXJpYWxQb3J0SW5pdGlhbGl6ZSAoDQo+ICsgIFZPSUQNCj4gKyAg KQ0KPiArew0KPiArICBTQklfUkVUICBSZXQ7DQo+ICsNCj4gKyAgUmV0ID0gU2JpQ2FsbCAoU0JJ X0VYVF9CQVNFLCBTQklfRVhUX0JBU0VfUFJPQkVfRVhULCAxLA0KPiArIFNCSV9FWFRfREJDTik7 ICBpZiAoKFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3IpID09IEVGSV9TVUNDRVNTKSAmJg0KPiAr ICAgICAgKFJldC5WYWx1ZSAhPSAwKSkNCj4gKyAgew0KPiArICAgIG1IYXZlRGJjbiA9IFRSVUU7 DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgUmV0ID0gU2JpQ2FsbCAoU0JJX0VYVF9CQVNFLCBTQklf RVhUX0JBU0VfUFJPQkVfRVhULCAxLCBTQklfRVhUXzBfMV9DT05TT0xFX1BVVENIQVIpOw0KPiAr ICAgIGlmICgoVHJhbnNsYXRlRXJyb3IgKFJldC5FcnJvcikgPT0gRUZJX1NVQ0NFU1MpICYmDQo+ ICsgICAgICAgIChSZXQuVmFsdWUgIT0gMCkpDQo+ICsgICAgew0KPiArICAgICAgbUhhdmVMZWdh Y3lQdXRjaGFyID0gVFJVRTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBSZXQgPSBTYmlDYWxsIChT QklfRVhUX0JBU0UsIFNCSV9FWFRfQkFTRV9QUk9CRV9FWFQsIDEsIFNCSV9FWFRfMF8xX0NPTlNP TEVfR0VUQ0hBUik7DQo+ICsgICAgaWYgKChUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKSA9PSBF RklfU1VDQ0VTUykgJiYNCj4gKyAgICAgICAgKFJldC5WYWx1ZSAhPSAwKSkNCj4gKyAgICB7DQo+ ICsgICAgICBtSGF2ZUxlZ2FjeUdldGNoYXIgPSBUUlVFOw0KPiArICAgIH0NCj4gKyAgfQ0KPiAr 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+ICsgIFVJTlRO ICBJbmRleDsNCj4gKw0KPiArICBpZiAobUhhdmVEYmNuKSB7DQo+ICsgICAgU0JJX1JFVCAgUmV0 Ow0KPiArICAgIFJldCA9IFNiaUNhbGwgKA0KPiArICAgICAgICAgICAgU0JJX0VYVF9EQkNOLA0K PiArICAgICAgICAgICAgU0JJX0VYVF9EQkNOX1dSSVRFLA0KPiArICAgICAgICAgICAgMywNCj4g KyAgICAgICAgICAgIE51bWJlck9mQnl0ZXMsDQo+ICsgICAgICAgICAgICAoKFVJTlROKUJ1ZmZl ciksDQo+ICsgICAgICAgICAgICAwDQo+ICsgICAgICAgICAgICApOw0KPiArICAgIGlmIChUcmFu c2xhdGVFcnJvciAoUmV0LkVycm9yKSAhPSBFRklfU1VDQ0VTUykgew0KPiArICAgICAgcmV0dXJu IDA7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcmV0dXJuIFJldC5WYWx1ZTsNCj4gKyAgfSBlbHNl IGlmIChtSGF2ZUxlZ2FjeVB1dGNoYXIpIHsNCj4gKyAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXgg PCBOdW1iZXJPZkJ5dGVzOyBJbmRleCsrKSB7DQo+ICsgICAgICBTYmlDYWxsIChTQklfRVhUXzBf MV9DT05TT0xFX1BVVENIQVIsIDAsIDEsIEJ1ZmZlcltJbmRleF0pOw0KPiArICAgIH0NCj4gKw0K PiArICAgIHJldHVybiBJbmRleDsNCj4gKyAgfQ0KPiArDQo+ICsgIC8qDQo+ICsgICAqIE5laXRo ZXIgREJDTiBvciBsZWdhY3kgZXh0ZW5zaW9uIHdlcmUgcHJlc2VudC4NCj4gKyAgICovDQo+ICsg IHJldHVybiBOdW1iZXJPZkJ5dGVzOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgUmVhZCBkYXRh IGZyb20gc2VyaWFsIGRldmljZSBhbmQgc2F2ZSB0aGUgZGF0YXMgaW4gYnVmZmVyLg0KPiArDQo+ ICsgIFJlYWRzIE51bWJlck9mQnl0ZXMgZGF0YSBieXRlcyBmcm9tIGEgc2VyaWFsIGRldmljZSBp bnRvIHRoZSBidWZmZXINCj4gKyBzcGVjaWZpZWQgYnkgQnVmZmVyLiBUaGUgbnVtYmVyIG9mIGJ5 dGVzIGFjdHVhbGx5IHJlYWQgaXMgcmV0dXJuZWQuDQo+ICsgIElmIHRoZSByZXR1cm4gdmFsdWUg aXMgbGVzcyB0aGFuIE51bWJlck9mQnl0ZXMsIHRoZW4gdGhlIHJlc3Qgb3BlcmF0aW9uIGZhaWxl ZC4NCj4gKyAgSWYgQnVmZmVyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ICsgIElmIE51bWJl ck9mQnl0ZXMgaXMgemVybywgdGhlbiByZXR1cm4gMC4NCj4gKw0KPiArICBAcGFyYW0gIEJ1ZmZl ciAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGRhdGEgYnVmZmVyIHRvIHN0b3JlIHRoZSBk YXRhIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gKyAgQHBhcmFtICBOdW1iZXJPZkJ5 dGVzICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgd2hpY2ggd2lsbCBiZSByZWFkLg0KPiArDQo+ICsg IEByZXR2YWwgMCAgICAgICAgICAgICAgICBSZWFkIGRhdGEgZmFpbGVkOyBObyBkYXRhIGlzIHRv IGJlIHJlYWQuDQo+ICsgIEByZXR2YWwgPjAgICAgICAgICAgICAgICBUaGUgYWN0dWFsIG51bWJl ciBvZiBieXRlcyByZWFkIGZyb20gc2VyaWFsIGRldmljZS4NCj4gKw0KPiArKiovDQo+ICtVSU5U Tg0KPiArRUZJQVBJDQo+ICtTZXJpYWxQb3J0UmVhZCAoDQo+ICsgIE9VVCBVSU5UOCAgKkJ1ZmZl ciwNCj4gKyAgSU4gIFVJTlROICBOdW1iZXJPZkJ5dGVzDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlO VE4gIEluZGV4Ow0KPiArDQo+ICsgIEluZGV4ID0gMDsNCj4gKyAgd2hpbGUgKChJbmRleCA8IE51 bWJlck9mQnl0ZXMpICYmIFNlcmlhbFBvcnRQb2xsICgpKSB7DQo+ICsgICAgQnVmZmVyW0luZGV4 KytdID0gKFVJTlQ4KW1MYXN0R2V0Q2hhcjsNCj4gKyAgICBtTGFzdEdldENoYXIgICAgPSAtMTsN Cj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBJbmRleDsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsg IFBvbGxzIGEgc2VyaWFsIGRldmljZSB0byBzZWUgaWYgdGhlcmUgaXMgYW55IGRhdGEgd2FpdGlu ZyB0byBiZSByZWFkLg0KPiArDQo+ICsgIFBvbGxzIGEgc2VyaWFsIGRldmljZSB0byBzZWUgaWYg dGhlcmUgaXMgYW55IGRhdGEgd2FpdGluZyB0byBiZSByZWFkLg0KPiArICBJZiB0aGVyZSBpcyBk YXRhIHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNlLCB0aGVuIFRSVUUg aXMgcmV0dXJuZWQuDQo+ICsgIElmIHRoZXJlIGlzIG5vIGRhdGEgd2FpdGluZyB0byBiZSByZWFk IGZyb20gdGhlIHNlcmlhbCBkZXZpY2UsIHRoZW4gRkFMU0UgaXMgcmV0dXJuZWQuDQo+ICsNCj4g KyAgQHJldHZhbCBUUlVFICAgICAgICAgICAgIERhdGEgaXMgd2FpdGluZyB0byBiZSByZWFkIGZy b20gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICAgICBUaGVy ZSBpcyBubyBkYXRhIHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNlLg0K PiArDQo+ICsqKi8NCj4gK0JPT0xFQU4NCj4gK0VGSUFQSQ0KPiArU2VyaWFsUG9ydFBvbGwgKA0K PiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgLyoNCj4gKyAgICogQ2FyZWZ1bC4gT3BlblNC SSB3aXRoIEhUSUYgY29uc29sZSB3aWxsIHJldHVybiAtMSBmb2xsb3dlZCBieSAtMg0KPiArICAg KiBpZiB0aGVyZSBpcyBubyBjaGFyYWN0ZXIgcmVjZWl2ZWQuIFNvIGp1c3QgY2hlY2sgZm9yIHZh bHVlcyA+PSAwLg0KPiArICAgKi8NCj4gKw0KPiArICBpZiAobUxhc3RHZXRDaGFyID49IDApIHsN Cj4gKyAgICByZXR1cm4gVFJVRTsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmIChtSGF2ZURiY24pIHsN Cj4gKyAgICBVSU5UOCAgICBCdWZmZXI7DQo+ICsgICAgU0JJX1JFVCAgUmV0Ow0KPiArDQo+ICsg ICAgUmV0ID0gU2JpQ2FsbCAoDQo+ICsgICAgICAgICAgICBTQklfRVhUX0RCQ04sDQo+ICsgICAg ICAgICAgICBTQklfRVhUX0RCQ05fUkVBRCwNCj4gKyAgICAgICAgICAgIDMsDQo+ICsgICAgICAg ICAgICAxLA0KPiArICAgICAgICAgICAgKChVSU5UTikmQnVmZmVyKSwNCj4gKyAgICAgICAgICAg IDANCj4gKyAgICAgICAgICAgICk7DQo+ICsgICAgaWYgKChUcmFuc2xhdGVFcnJvciAoUmV0LkVy cm9yKSA9PSBFRklfU1VDQ0VTUykgJiYNCj4gKyAgICAgICAgKFJldC5WYWx1ZSA9PSAxKSkNCj4g KyAgICB7DQo+ICsgICAgICBtTGFzdEdldENoYXIgPSBCdWZmZXI7DQo+ICsgICAgfQ0KPiArICB9 IGVsc2UgaWYgKG1IYXZlTGVnYWN5R2V0Y2hhcikgew0KPiArICAgIG1MYXN0R2V0Q2hhciA9IChJ TlQ2NClTYmlDYWxsIChTQklfRVhUXzBfMV9DT05TT0xFX0dFVENIQVIsIDAsDQo+ICsgMCkuRXJy b3I7ICB9DQo+ICsNCj4gKyAgcmV0dXJuIG1MYXN0R2V0Q2hhciA+PSAwOw0KPiArfQ0KPiArDQo+ ICsvKioNCj4gKyAgU2V0cyB0aGUgY29udHJvbCBiaXRzIG9uIGEgc2VyaWFsIGRldmljZS4NCj4g Kw0KPiArICBAcGFyYW0gQ29udHJvbCAgICAgICAgICAgICAgICBTZXRzIHRoZSBiaXRzIG9mIENv bnRyb2wgdGhhdCBhcmUgc2V0dGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VT UyAgICAgICAgVGhlIG5ldyBjb250cm9sIGJpdHMgd2VyZSBzZXQgb24gdGhlIHNlcmlhbCBkZXZp Y2UuDQo+ICsgIEByZXR2YWwgUkVUVVJOX1VOU1VQUE9SVEVEICAgIFRoZSBzZXJpYWwgZGV2aWNl IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24uDQo+ICsgIEByZXR2YWwgUkVUVVJOX0RF VklDRV9FUlJPUiAgIFRoZSBzZXJpYWwgZGV2aWNlIGlzIG5vdCBmdW5jdGlvbmluZyBjb3JyZWN0 bHkuDQo+ICsNCj4gKyoqLw0KPiArUkVUVVJOX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTZXJpYWxQ b3J0U2V0Q29udHJvbCAoDQo+ICsgIElOIFVJTlQzMiAgQ29udHJvbA0KPiArICApDQo+ICt7DQo+ ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFJldHJp ZXZlIHRoZSBzdGF0dXMgb2YgdGhlIGNvbnRyb2wgYml0cyBvbiBhIHNlcmlhbCBkZXZpY2UuDQo+ ICsNCj4gKyAgQHBhcmFtIENvbnRyb2wgICAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHJldHVy biB0aGUgY3VycmVudCBjb250cm9sIHNpZ25hbHMgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4g Kw0KPiArICBAcmV0dmFsIFJFVFVSTl9TVUNDRVNTICAgICAgICBUaGUgY29udHJvbCBiaXRzIHdl cmUgcmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiArICBAcmV0dmFsIFJFVFVSTl9VTlNV UFBPUlRFRCAgICBUaGUgc2VyaWFsIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0 aW9uLg0KPiArICBAcmV0dmFsIFJFVFVSTl9ERVZJQ0VfRVJST1IgICBUaGUgc2VyaWFsIGRldmlj ZSBpcyBub3QgZnVuY3Rpb25pbmcgY29ycmVjdGx5Lg0KPiArDQo+ICsqKi8NCj4gK1JFVFVSTl9T VEFUVVMNCj4gK0VGSUFQSQ0KPiArU2VyaWFsUG9ydEdldENvbnRyb2wgKA0KPiArICBPVVQgVUlO VDMyICAqQ29udHJvbA0KPiArICApDQo+ICt7DQo+ICsgICpDb250cm9sID0gMDsNCj4gKyAgcmV0 dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgU2V0cyB0aGUgYmF1 ZCByYXRlLCByZWNlaXZlIEZJRk8gZGVwdGgsIHRyYW5zbWl0L3JlY2VpY2UgdGltZSBvdXQsDQo+ ICtwYXJpdHksDQo+ICsgIGRhdGEgYml0cywgYW5kIHN0b3AgYml0cyBvbiBhIHNlcmlhbCBkZXZp Y2UuDQo+ICsNCj4gKyAgQHBhcmFtIEJhdWRSYXRlICAgICAgICAgICBUaGUgcmVxdWVzdGVkIGJh dWQgcmF0ZS4gQSBCYXVkUmF0ZSB2YWx1ZSBvZiAwIHdpbGwgdXNlIHRoZQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRldmljZSdzIGRlZmF1bHQgaW50ZXJmYWNlIHNwZWVkLg0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5 IHNldC4NCj4gKyAgQHBhcmFtIFJldmVpdmVGaWZvRGVwdGggICBUaGUgcmVxdWVzdGVkIGRlcHRo IG9mIHRoZSBGSUZPIG9uIHRoZSByZWNlaXZlIHNpZGUgb2YgdGhlDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VyaWFsIGludGVyZmFjZS4gQSBSZWNlaXZlRmlmb0RlcHRoIHZhbHVl IG9mIDAgd2lsbCB1c2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGV2aWNl J3MgZGVmYXVsdCBGSUZPIGRlcHRoLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9u IG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gKyAgQHBhcmFtIFRpbWVvdXQgICAg ICAgICAgICBUaGUgcmVxdWVzdGVkIHRpbWUgb3V0IGZvciBhIHNpbmdsZSBjaGFyYWN0ZXIgaW4g bWljcm9zZWNvbmRzLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdGltZW91 dCBhcHBsaWVzIHRvIGJvdGggdGhlIHRyYW5zbWl0IGFuZCByZWNlaXZlIHNpZGUgb2YgdGhlDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlLiBBIFRpbWVvdXQgdmFsdWUg b2YgMCB3aWxsIHVzZSB0aGUgZGV2aWNlJ3MgZGVmYXVsdCB0aW1lDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgb3V0IHZhbHVlLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gKyAgQHBhcmFtIFBhcml0eSAg ICAgICAgICAgICBUaGUgdHlwZSBvZiBwYXJpdHkgdG8gdXNlIG9uIHRoaXMgc2VyaWFsIGRldmlj ZS4gQSBQYXJpdHkgdmFsdWUgb2YNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZh dWx0UGFyaXR5IHdpbGwgdXNlIHRoZSBkZXZpY2UncyBkZWZhdWx0IHBhcml0eSB2YWx1ZS4NCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSB2YWx1ZSBhY3R1YWxs eSBzZXQuDQo+ICsgIEBwYXJhbSBEYXRhQml0cyAgICAgICAgICAgVGhlIG51bWJlciBvZiBkYXRh IGJpdHMgdG8gdXNlIG9uIHRoZSBzZXJpYWwgZGV2aWNlLiBBIERhdGFCaXRzDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdmF1bGUgb2YgMCB3aWxsIHVzZSB0aGUgZGV2aWNlJ3MgZGVm YXVsdCBkYXRhIGJpdCBzZXR0aW5nLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9u IG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gKyAgQHBhcmFtIFN0b3BCaXRzICAg ICAgICAgICBUaGUgbnVtYmVyIG9mIHN0b3AgYml0cyB0byB1c2Ugb24gdGhpcyBzZXJpYWwgZGV2 aWNlLiBBIFN0b3BCaXRzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgb2Yg RGVmYXVsdFN0b3BCaXRzIHdpbGwgdXNlIHRoZSBkZXZpY2UncyBkZWZhdWx0IG51bWJlciBvZg0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AgYml0cy4NCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSB2YWx1ZSBhY3R1YWxseSBzZXQuDQo+ICsN Cj4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgICAgIFRoZSBuZXcgYXR0cmlidXRl cyB3ZXJlIHNldCBvbiB0aGUgc2VyaWFsIGRldmljZS4NCj4gKyAgQHJldHZhbCBSRVRVUk5fVU5T VVBQT1JURUQgICAgICAgIFRoZSBzZXJpYWwgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBv cGVyYXRpb24uDQo+ICsgIEByZXR2YWwgUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSICBPbmUgb3Ig bW9yZSBvZiB0aGUgYXR0cmlidXRlcyBoYXMgYW4gdW5zdXBwb3J0ZWQgdmFsdWUuDQo+ICsgIEBy ZXR2YWwgUkVUVVJOX0RFVklDRV9FUlJPUiAgICAgICBUaGUgc2VyaWFsIGRldmljZSBpcyBub3Qg ZnVuY3Rpb25pbmcgY29ycmVjdGx5Lg0KPiArDQo+ICsqKi8NCj4gK1JFVFVSTl9TVEFUVVMNCj4g K0VGSUFQSQ0KPiArU2VyaWFsUG9ydFNldEF0dHJpYnV0ZXMgKA0KPiArICBJTiBPVVQgVUlOVDY0 ICAgICAgICAgICAgICAqQmF1ZFJhdGUsDQo+ICsgIElOIE9VVCBVSU5UMzIgICAgICAgICAgICAg ICpSZWNlaXZlRmlmb0RlcHRoLA0KPiArICBJTiBPVVQgVUlOVDMyICAgICAgICAgICAgICAqVGlt ZW91dCwNCj4gKyAgSU4gT1VUIEVGSV9QQVJJVFlfVFlQRSAgICAgKlBhcml0eSwNCj4gKyAgSU4g T1VUIFVJTlQ4ICAgICAgICAgICAgICAgKkRhdGFCaXRzLA0KPiArICBJTiBPVVQgRUZJX1NUT1Bf QklUU19UWVBFICAqU3RvcEJpdHMNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gUkVUVVJOX1NV Q0NFU1M7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNl cmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpLmMNCj4gYi9NZGVQa2cv TGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0 TGliU2JpLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi4w YWQ1OTMxYmUzYWUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9NZGVQa2cvTGlicmFyeS9TZWNQ ZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGkNCj4gKysrIGJT YmkuYw0KPiBAQCAtMCwwICsxLDIzMyBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIFNlcmlhbCBQb3J0 IExpYnJhcnkgYmFja2VkIGJ5IFNCSSBjb25zb2xlLg0KPiArDQo+ICsgIE1lYW50IGZvciBTRUMg YW5kIFBFSSAoWElQKSBlbnZpcm9ubWVudHMuDQo+ICsNCj4gKyAgRHVlIHRvIGxpbWl0YXRpb25z IG9mIFNCSSBjb25zb2xlIGludGVyZmFjZSBhbmQgWElQIGVudmlyb25tZW50cyAgKG9uDQo+ICsg dXNlIG9mIGdsb2JhbHMpLCB0aGlzIGxpYnJhcnkgaW5zdGFuY2UgZG9lcyBub3QgaW1wbGVtZW50 IHJlYWRpbmcgIGFuZA0KPiArIHBvbGxpbmcgdGhlIHNlcmlhbCBwb3J0LiBTZWUgUHJlUGlEeGVT ZXJpYWxQb3J0TGliUmlzY1ZTYmkgZm9yICB0aGUNCj4gKyBmdWxsLWZlYXR1cmVkIHZhcmlhbnQg bWVhbnQgZm9yIFByZVBpIGFuZCBEWEUgZW52aXJvbm1lbnRzLg0KPiArDQo+ICsgIENvcHlyaWdo dCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArDQo+ ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEJhc2UuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1Nl cmlhbFBvcnRMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VSaXNjVlNiaUxpYi5oPg0K PiArDQo+ICsvKioNCj4gKyAgSW5pdGlhbGl6ZSB0aGUgc2VyaWFsIGRldmljZSBoYXJkd2FyZS4N Cj4gKw0KPiArICBJZiBubyBpbml0aWFsaXphdGlvbiBpcyByZXF1aXJlZCwgdGhlbiByZXR1cm4g UkVUVVJOX1NVQ0NFU1MuDQo+ICsgIElmIHRoZSBzZXJpYWwgZGV2aWNlIHdhcyBzdWNjZXNzZnVs bHkgaW5pdGlhbGl6ZWQsIHRoZW4gcmV0dXJuIFJFVFVSTl9TVUNDRVNTLg0KPiArICBJZiB0aGUg c2VyaWFsIGRldmljZSBjb3VsZCBub3QgYmUgaW5pdGlhbGl6ZWQsIHRoZW4gcmV0dXJuIFJFVFVS Tl9ERVZJQ0VfRVJST1IuDQo+ICsNCj4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAg VGhlIHNlcmlhbCBkZXZpY2Ugd2FzIGluaXRpYWxpemVkLg0KPiArICBAcmV0dmFsIFJFVFVSTl9E RVZJQ0VfRVJST1IgICBUaGUgc2VyaWFsIGRldmljZSBjb3VsZCBub3QgYmUgaW5pdGlhbGl6ZWQu DQo+ICsNCj4gKyoqLw0KPiArUkVUVVJOX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTZXJpYWxQb3J0 SW5pdGlhbGl6ZSAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gUkVUVVJO X1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBXcml0ZSBkYXRhIGZyb20gYnVmZmVy IHRvIHNlcmlhbCBkZXZpY2UuDQo+ICsNCj4gKyAgV3JpdGVzIE51bWJlck9mQnl0ZXMgZGF0YSBi eXRlcyBmcm9tIEJ1ZmZlciB0byB0aGUgc2VyaWFsIGRldmljZS4NCj4gKyAgVGhlIG51bWJlciBv ZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIHRvIHRoZSBzZXJpYWwgZGV2aWNlIGlzIHJldHVybmVk Lg0KPiArICBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzIGxlc3MgdGhhbiBOdW1iZXJPZkJ5dGVzLCB0 aGVuIHRoZSB3cml0ZSBvcGVyYXRpb24gZmFpbGVkLg0KPiArICBJZiBCdWZmZXIgaXMgTlVMTCwg dGhlbiBBU1NFUlQoKS4NCj4gKyAgSWYgTnVtYmVyT2ZCeXRlcyBpcyB6ZXJvLCB0aGVuIHJldHVy biAwLg0KPiArDQo+ICsgIEBwYXJhbSAgQnVmZmVyICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0 aGUgZGF0YSBidWZmZXIgdG8gYmUgd3JpdHRlbi4NCj4gKyAgQHBhcmFtICBOdW1iZXJPZkJ5dGVz ICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gd3JpdHRlbiB0byB0aGUgc2VyaWFsIGRldmljZS4N Cj4gKw0KPiArICBAcmV0dmFsIDAgICAgICAgICAgICAgICAgTnVtYmVyT2ZCeXRlcyBpcyAwLg0K PiArICBAcmV0dmFsID4wICAgICAgICAgICAgICAgVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVu IHRvIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYg dGhpcyB2YWx1ZSBpcyBsZXNzIHRoYW4gTnVtYmVyT2ZCeXRlcywgdGhlbiB0aGUgd3JpdGUgb3Bl cmF0aW9uIGZhaWxlZC4NCj4gKw0KPiArKiovDQo+ICtVSU5UTg0KPiArRUZJQVBJDQo+ICtTZXJp YWxQb3J0V3JpdGUgKA0KPiArICBJTiBVSU5UOCAgKkJ1ZmZlciwNCj4gKyAgSU4gVUlOVE4gIE51 bWJlck9mQnl0ZXMNCj4gKyAgKQ0KPiArew0KPiArICBTQklfUkVUICBSZXQ7DQo+ICsgIFVJTlRO ICAgIEluZGV4Ow0KPiArDQo+ICsgIFJldCA9IFNiaUNhbGwgKFNCSV9FWFRfQkFTRSwgU0JJX0VY VF9CQVNFX1BST0JFX0VYVCwgMSwNCj4gKyBTQklfRVhUX0RCQ04pOyAgaWYgKChUcmFuc2xhdGVF cnJvciAoUmV0LkVycm9yKSA9PSBFRklfU1VDQ0VTUykgJiYNCj4gKyAgICAgIChSZXQuVmFsdWUg IT0gMCkpDQo+ICsgIHsNCj4gKyAgICBSZXQgPSBTYmlDYWxsICgNCj4gKyAgICAgICAgICAgIFNC SV9FWFRfREJDTiwNCj4gKyAgICAgICAgICAgIFNCSV9FWFRfREJDTl9XUklURSwNCj4gKyAgICAg ICAgICAgIDMsDQo+ICsgICAgICAgICAgICBOdW1iZXJPZkJ5dGVzLA0KPiArICAgICAgICAgICAg KChVSU5UTilCdWZmZXIpLA0KPiArICAgICAgICAgICAgMA0KPiArICAgICAgICAgICAgKTsNCj4g KyAgICBpZiAoVHJhbnNsYXRlRXJyb3IgKFJldC5FcnJvcikgIT0gRUZJX1NVQ0NFU1MpIHsNCj4g KyAgICAgIHJldHVybiAwOw0KPiArICAgIH0NCj4gKw0KPiArICAgIHJldHVybiBSZXQuVmFsdWU7 DQo+ICsgIH0NCj4gKw0KPiArICBSZXQgPSBTYmlDYWxsIChTQklfRVhUX0JBU0UsIFNCSV9FWFRf QkFTRV9QUk9CRV9FWFQsIDEsDQo+ICsgU0JJX0VYVF8wXzFfQ09OU09MRV9QVVRDSEFSKTsgIGlm ICgoVHJhbnNsYXRlRXJyb3IgKFJldC5FcnJvcikgPT0gRUZJX1NVQ0NFU1MpICYmDQo+ICsgICAg ICAoUmV0LlZhbHVlICE9IDApKQ0KPiArICB7DQo+ICsgICAgZm9yIChJbmRleCA9IDA7IEluZGV4 IDwgTnVtYmVyT2ZCeXRlczsgSW5kZXgrKykgew0KPiArICAgICAgU2JpQ2FsbCAoU0JJX0VYVF8w XzFfQ09OU09MRV9QVVRDSEFSLCAwLCAxLCBCdWZmZXJbSW5kZXhdKTsNCj4gKyAgICB9DQo+ICsN Cj4gKyAgICByZXR1cm4gSW5kZXg7DQo+ICsgIH0NCj4gKw0KPiArICAvKg0KPiArICAgKiBOZWl0 aGVyIERCQ04gb3IgbGVnYWN5IGV4dGVuc2lvbiB3ZXJlIHByZXNlbnQuDQo+ICsgICAqLw0KPiAr ICByZXR1cm4gTnVtYmVyT2ZCeXRlczsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFJlYWQgZGF0 YSBmcm9tIHNlcmlhbCBkZXZpY2UgYW5kIHNhdmUgdGhlIGRhdGFzIGluIGJ1ZmZlci4NCj4gKw0K PiArICBSZWFkcyBOdW1iZXJPZkJ5dGVzIGRhdGEgYnl0ZXMgZnJvbSBhIHNlcmlhbCBkZXZpY2Ug aW50byB0aGUgYnVmZmVyDQo+ICsgc3BlY2lmaWVkIGJ5IEJ1ZmZlci4gVGhlIG51bWJlciBvZiBi eXRlcyBhY3R1YWxseSByZWFkIGlzIHJldHVybmVkLg0KPiArICBJZiB0aGUgcmV0dXJuIHZhbHVl IGlzIGxlc3MgdGhhbiBOdW1iZXJPZkJ5dGVzLCB0aGVuIHRoZSByZXN0IG9wZXJhdGlvbiBmYWls ZWQuDQo+ICsgIElmIEJ1ZmZlciBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiArICBJZiBOdW1i ZXJPZkJ5dGVzIGlzIHplcm8sIHRoZW4gcmV0dXJuIDAuDQo+ICsNCj4gKyAgQHBhcmFtICBCdWZm ZXIgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBkYXRhIGJ1ZmZlciB0byBzdG9yZSB0aGUg ZGF0YSByZWFkIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ICsgIEBwYXJhbSAgTnVtYmVyT2ZC eXRlcyAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdoaWNoIHdpbGwgYmUgcmVhZC4NCj4gKw0KPiAr ICBAcmV0dmFsIDAgICAgICAgICAgICAgICAgUmVhZCBkYXRhIGZhaWxlZDsgTm8gZGF0YSBpcyB0 byBiZSByZWFkLg0KPiArICBAcmV0dmFsID4wICAgICAgICAgICAgICAgVGhlIGFjdHVhbCBudW1i ZXIgb2YgYnl0ZXMgcmVhZCBmcm9tIHNlcmlhbCBkZXZpY2UuDQo+ICsNCj4gKyoqLw0KPiArVUlO VE4NCj4gK0VGSUFQSQ0KPiArU2VyaWFsUG9ydFJlYWQgKA0KPiArICBPVVQgVUlOVDggICpCdWZm ZXIsDQo+ICsgIElOICBVSU5UTiAgTnVtYmVyT2ZCeXRlcw0KPiArICApDQo+ICt7DQo+ICsgIHJl dHVybiAwOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgUG9sbHMgYSBzZXJpYWwgZGV2aWNlIHRv IHNlZSBpZiB0aGVyZSBpcyBhbnkgZGF0YSB3YWl0aW5nIHRvIGJlIHJlYWQuDQo+ICsNCj4gKyAg UG9sbHMgYSBzZXJpYWwgZGV2aWNlIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgZGF0YSB3YWl0aW5n IHRvIGJlIHJlYWQuDQo+ICsgIElmIHRoZXJlIGlzIGRhdGEgd2FpdGluZyB0byBiZSByZWFkIGZy b20gdGhlIHNlcmlhbCBkZXZpY2UsIHRoZW4gVFJVRSBpcyByZXR1cm5lZC4NCj4gKyAgSWYgdGhl cmUgaXMgbm8gZGF0YSB3YWl0aW5nIHRvIGJlIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZSwg dGhlbiBGQUxTRSBpcyByZXR1cm5lZC4NCj4gKw0KPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAg ICAgRGF0YSBpcyB3YWl0aW5nIHRvIGJlIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4g KyAgQHJldHZhbCBGQUxTRSAgICAgICAgICAgIFRoZXJlIGlzIG5vIGRhdGEgd2FpdGluZyB0byBi ZSByZWFkIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ICsNCj4gKyoqLw0KPiArQk9PTEVBTg0K PiArRUZJQVBJDQo+ICtTZXJpYWxQb3J0UG9sbCAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0K PiArICByZXR1cm4gRkFMU0U7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBTZXRzIHRoZSBjb250 cm9sIGJpdHMgb24gYSBzZXJpYWwgZGV2aWNlLg0KPiArDQo+ICsgIEBwYXJhbSBDb250cm9sICAg ICAgICAgICAgICAgIFNldHMgdGhlIGJpdHMgb2YgQ29udHJvbCB0aGF0IGFyZSBzZXR0YWJsZS4N Cj4gKw0KPiArICBAcmV0dmFsIFJFVFVSTl9TVUNDRVNTICAgICAgICBUaGUgbmV3IGNvbnRyb2wg Yml0cyB3ZXJlIHNldCBvbiB0aGUgc2VyaWFsIGRldmljZS4NCj4gKyAgQHJldHZhbCBSRVRVUk5f VU5TVVBQT1JURUQgICAgVGhlIHNlcmlhbCBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9w ZXJhdGlvbi4NCj4gKyAgQHJldHZhbCBSRVRVUk5fREVWSUNFX0VSUk9SICAgVGhlIHNlcmlhbCBk ZXZpY2UgaXMgbm90IGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4NCj4gKw0KPiArKiovDQo+ICtSRVRV Uk5fU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NlcmlhbFBvcnRTZXRDb250cm9sICgNCj4gKyAgSU4g VUlOVDMyICBDb250cm9sDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNT Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgUmV0cmlldmUgdGhlIHN0YXR1cyBvZiB0aGUgY29u dHJvbCBiaXRzIG9uIGEgc2VyaWFsIGRldmljZS4NCj4gKw0KPiArICBAcGFyYW0gQ29udHJvbCAg ICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gcmV0dXJuIHRoZSBjdXJyZW50IGNvbnRyb2wgc2ln bmFscyBmcm9tIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiArDQo+ICsgIEByZXR2YWwgUkVUVVJOX1NV Q0NFU1MgICAgICAgIFRoZSBjb250cm9sIGJpdHMgd2VyZSByZWFkIGZyb20gdGhlIHNlcmlhbCBk ZXZpY2UuDQo+ICsgIEByZXR2YWwgUkVUVVJOX1VOU1VQUE9SVEVEICAgIFRoZSBzZXJpYWwgZGV2 aWNlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24uDQo+ICsgIEByZXR2YWwgUkVUVVJO X0RFVklDRV9FUlJPUiAgIFRoZSBzZXJpYWwgZGV2aWNlIGlzIG5vdCBmdW5jdGlvbmluZyBjb3Jy ZWN0bHkuDQo+ICsNCj4gKyoqLw0KPiArUkVUVVJOX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTZXJp YWxQb3J0R2V0Q29udHJvbCAoDQo+ICsgIE9VVCBVSU5UMzIgICpDb250cm9sDQo+ICsgICkNCj4g K3sNCj4gKyAgKkNvbnRyb2wgPSAwOw0KPiArICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ICt9 DQo+ICsNCj4gKy8qKg0KPiArICBTZXRzIHRoZSBiYXVkIHJhdGUsIHJlY2VpdmUgRklGTyBkZXB0 aCwgdHJhbnNtaXQvcmVjZWljZSB0aW1lIG91dCwNCj4gK3Bhcml0eSwNCj4gKyAgZGF0YSBiaXRz LCBhbmQgc3RvcCBiaXRzIG9uIGEgc2VyaWFsIGRldmljZS4NCj4gKw0KPiArICBAcGFyYW0gQmF1 ZFJhdGUgICAgICAgICAgIFRoZSByZXF1ZXN0ZWQgYmF1ZCByYXRlLiBBIEJhdWRSYXRlIHZhbHVl IG9mIDAgd2lsbCB1c2UgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNl J3MgZGVmYXVsdCBpbnRlcmZhY2Ugc3BlZWQuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiArICBAcGFyYW0gUmV2ZWl2 ZUZpZm9EZXB0aCAgIFRoZSByZXF1ZXN0ZWQgZGVwdGggb2YgdGhlIEZJRk8gb24gdGhlIHJlY2Vp dmUgc2lkZSBvZiB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWwgaW50 ZXJmYWNlLiBBIFJlY2VpdmVGaWZvRGVwdGggdmFsdWUgb2YgMCB3aWxsIHVzZQ0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRoZSBkZXZpY2UncyBkZWZhdWx0IEZJRk8gZGVwdGguDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFs bHkgc2V0Lg0KPiArICBAcGFyYW0gVGltZW91dCAgICAgICAgICAgIFRoZSByZXF1ZXN0ZWQgdGlt ZSBvdXQgZm9yIGEgc2luZ2xlIGNoYXJhY3RlciBpbiBtaWNyb3NlY29uZHMuDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVGhpcyB0aW1lb3V0IGFwcGxpZXMgdG8gYm90aCB0aGUgdHJh bnNtaXQgYW5kIHJlY2VpdmUgc2lkZSBvZiB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnRlcmZhY2UuIEEgVGltZW91dCB2YWx1ZSBvZiAwIHdpbGwgdXNlIHRoZSBkZXZpY2Un cyBkZWZhdWx0IHRpbWUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgdmFsdWUu DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0 dWFsbHkgc2V0Lg0KPiArICBAcGFyYW0gUGFyaXR5ICAgICAgICAgICAgIFRoZSB0eXBlIG9mIHBh cml0eSB0byB1c2Ugb24gdGhpcyBzZXJpYWwgZGV2aWNlLiBBIFBhcml0eSB2YWx1ZSBvZg0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRQYXJpdHkgd2lsbCB1c2UgdGhlIGRl dmljZSdzIGRlZmF1bHQgcGFyaXR5IHZhbHVlLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gKyAgQHBhcmFtIERhdGFC aXRzICAgICAgICAgICBUaGUgbnVtYmVyIG9mIGRhdGEgYml0cyB0byB1c2Ugb24gdGhlIHNlcmlh bCBkZXZpY2UuIEEgRGF0YUJpdHMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXVs ZSBvZiAwIHdpbGwgdXNlIHRoZSBkZXZpY2UncyBkZWZhdWx0IGRhdGEgYml0IHNldHRpbmcuDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFs bHkgc2V0Lg0KPiArICBAcGFyYW0gU3RvcEJpdHMgICAgICAgICAgIFRoZSBudW1iZXIgb2Ygc3Rv cCBiaXRzIHRvIHVzZSBvbiB0aGlzIHNlcmlhbCBkZXZpY2UuIEEgU3RvcEJpdHMNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBEZWZhdWx0U3RvcEJpdHMgd2lsbCB1c2Ug dGhlIGRldmljZSdzIGRlZmF1bHQgbnVtYmVyIG9mDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RvcCBiaXRzLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1 dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gKw0KPiArICBAcmV0dmFsIFJFVFVSTl9TVUND RVNTICAgICAgICAgICAgVGhlIG5ldyBhdHRyaWJ1dGVzIHdlcmUgc2V0IG9uIHRoZSBzZXJpYWwg ZGV2aWNlLg0KPiArICBAcmV0dmFsIFJFVFVSTl9VTlNVUFBPUlRFRCAgICAgICAgVGhlIHNlcmlh bCBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbi4NCj4gKyAgQHJldHZhbCBS RVRVUk5fSU5WQUxJRF9QQVJBTUVURVIgIE9uZSBvciBtb3JlIG9mIHRoZSBhdHRyaWJ1dGVzIGhh cyBhbiB1bnN1cHBvcnRlZCB2YWx1ZS4NCj4gKyAgQHJldHZhbCBSRVRVUk5fREVWSUNFX0VSUk9S ICAgICAgIFRoZSBzZXJpYWwgZGV2aWNlIGlzIG5vdCBmdW5jdGlvbmluZyBjb3JyZWN0bHkuDQo+ ICsNCj4gKyoqLw0KPiArUkVUVVJOX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTZXJpYWxQb3J0U2V0 QXR0cmlidXRlcyAoDQo+ICsgIElOIE9VVCBVSU5UNjQgICAgICAgICAgICAgICpCYXVkUmF0ZSwN Cj4gKyAgSU4gT1VUIFVJTlQzMiAgICAgICAgICAgICAgKlJlY2VpdmVGaWZvRGVwdGgsDQo+ICsg IElOIE9VVCBVSU5UMzIgICAgICAgICAgICAgICpUaW1lb3V0LA0KPiArICBJTiBPVVQgRUZJX1BB UklUWV9UWVBFICAgICAqUGFyaXR5LA0KPiArICBJTiBPVVQgVUlOVDggICAgICAgICAgICAgICAq RGF0YUJpdHMsDQo+ICsgIElOIE9VVCBFRklfU1RPUF9CSVRTX1RZUEUgICpTdG9wQml0cw0KPiAr ICApDQo+ICt7DQo+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gK30NCj4gZGlmZiAtLWdp dCBhL01kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhl UmlzY1ZTZXJpYWxQb3J0TGliU2JpLnVuaQ0KPiBiL01kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlz Y1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpLnVuaQ0KPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjdiMjJjYWE1YTA5MA0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJp YWxQb3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZTZXJpYWxQbw0KPiArKysgcnRMaWJTYmkudW5pDQo+ IEBAIC0wLDAgKzEsMTYgQEANCj4gKy8vIC8qKiBAZmlsZQ0KPiArLy8gU2VyaWFsIFBvcnQgTGli cmFyeSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuDQo+ICsvLw0KPiArLy8gU2VyaWFsIFBvcnQgTGli cmFyeSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuDQo+ICsvLw0KPiArLy8gQ29weXJpZ2h0IChjKSAy MDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+IC8vDQo+ICsv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCAvLyAvLyAqKi8N Cj4gKw0KPiArDQo+ICsjc3RyaW5nIFNUUl9NT0RVTEVfQUJTVFJBQ1QgICAgICAgICAgICAgI2xh bmd1YWdlIGVuLVVTICJTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29sZSIN Cj4gKw0KPiArI3N0cmluZyBTVFJfTU9EVUxFX0RFU0NSSVBUSU9OICAgICAgICAgICNsYW5ndWFn ZSBlbi1VUyAiU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuIg0KPiAr DQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJT YmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpLnVuaQ0KPiBiL01kZVBrZy9MaWJyYXJ5L1Nl Y1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkudW5p DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uN2IyMmNhYTVh MDkwDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvTWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZT ZXJpYWxQb3J0TGliU2JpL1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS51bmkNCj4gQEAgLTAs MCArMSwxNiBAQA0KPiArLy8gLyoqIEBmaWxlDQo+ICsvLyBTZXJpYWwgUG9ydCBMaWJyYXJ5IGJh Y2tlZCBieSBTQkkgY29uc29sZS4NCj4gKy8vDQo+ICsvLyBTZXJpYWwgUG9ydCBMaWJyYXJ5IGJh Y2tlZCBieSBTQkkgY29uc29sZS4NCj4gKy8vDQo+ICsvLyBDb3B5cmlnaHQgKGMpIDIwMjMsIElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKy8vDQo+ICsvLyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArLy8NCj4gKy8v ICoqLw0KPiArDQo+ICsNCj4gKyNzdHJpbmcgU1RSX01PRFVMRV9BQlNUUkFDVCAgICAgICAgICAg ICAjbGFuZ3VhZ2UgZW4tVVMgIlNlcmlhbCBQb3J0IExpYnJhcnkgYmFja2VkIGJ5IFNCSSBjb25z b2xlIg0KPiArDQo+ICsjc3RyaW5nIFNUUl9NT0RVTEVfREVTQ1JJUFRJT04gICAgICAgICAgI2xh bmd1YWdlIGVuLVVTICJTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29sZS4i DQo+ICsNCj4gLS0NCj4gMi4yNS4xDQoNCg==