From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mx.groups.io with SMTP id smtpd.web11.7243.1680034178120537375 for ; Tue, 28 Mar 2023 13:09:38 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=gdX9v4/f; spf=pass (domain: intel.com, ip: 134.134.136.65, 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=1680034178; x=1711570178; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=LaaShhZ/6NbNuFrVGgWHIBu6/DGat4HlGF9GCljitOA=; b=gdX9v4/fiLAeEYvHuWjKMdnmMWWJYbe5Dj6DV4dUOhoaFOQqAPs7WqcO c3bySA505msF+x9cI0Dkz7YJIB3s4Iwj8E7VALyQsRRdDUw8UOJ3MSnIK h1IAXlfK4yVU940ObQbIScl0t6ewYPfLrVee+ju9vmS2x6xHlTRqSdaHX G9/ex+0Rat2Zjdt2ORX/OXTNjlAdY/hGpcTtEJNY9yxyfp76dNxt8gb+K emkWl03LJWLlipFe+68aHUCToldNN37T5PMe5Gz5H3e44m5AjZGLOssvW 43OB78YHfmRYPZXpg4MRqkYtoA8bF4dKOGZPPG6jvBNy1fWbgF+/tU7qi w==; X-IronPort-AV: E=McAfee;i="6600,9927,10663"; a="343091063" X-IronPort-AV: E=Sophos;i="5.98,297,1673942400"; d="scan'208";a="343091063" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2023 13:09:37 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10663"; a="677495950" X-IronPort-AV: E=Sophos;i="5.98,297,1673942400"; d="scan'208";a="677495950" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga007.jf.intel.com with ESMTP; 28 Mar 2023 13:09:37 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 28 Mar 2023 13:09:36 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 28 Mar 2023 13:09:36 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Tue, 28 Mar 2023 13:09:36 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.173) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.21; Tue, 28 Mar 2023 13:09:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e+BrEohkZ4MpKz3uUMTExcB70+AUli1eXxJIJ7MTRAtkys3vSexObprSR5U96Fokw3Kf4+0sV1RUw8uFcHyXI9qi+zd4L4n5eOArshvR0xO29JdTzmQ5Zj8CRt3yotpDcQg/uVzZKcYnphsTg0xnG6SEWCSe5olSpN9XXFQbo+NfNmmVwJUP3k4rebSvpuKQXS0IFUf8+N0FDBm+gPL2SXyS21Z+piPP8bNx7wRe+MTOWl1A5nZgwsJgm2y9hEUkk1E1MWZk1QM56mtHCfnTIF6pYJRUcGVS0hU7U6U1wsLak6pP2/rSSAf0RKdrjsyraTlGoMzL0svkrLXhHRezZA== 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=LaaShhZ/6NbNuFrVGgWHIBu6/DGat4HlGF9GCljitOA=; b=EE1/d8dXDL2/Yx5Roh3F1PnZ+xk86l/dWIvVnCHS28NMk8Bg2tNDmseEdFGDcJvhkX/m313TDPCX/C3fFdSFBBuIbDc84uCjjhziuTMrJ/xGZpGWeQyNAvBP/MOrX3GNYYjm49ujnvSYfrqSTOMC74He8qAfYzDbbFnN2lidDHDE05NB5CgGwJel0iTDi5uOwS0FKYpYf0O9tXXu6/ElMjet+g95CzRYpwtwbbhKjbddiydmStGh7zOwDEpcJQjMzl6KyUCSCt/kcskFkOKRwr20n0rsV6kOoUEQMl7dPral/Av0cYOE5oixkLEGCxrtp7IK2Vod5qhgoGtecvteBA== 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 DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.33; Tue, 28 Mar 2023 20:09:32 +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.6222.033; Tue, 28 Mar 2023 20:09:32 +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+ceoAgAAB5TCAAAxtAIAQa2ywgAHNVQCAAAD68A== Date: Tue, 28 Mar 2023 20:09:32 +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_|DM4PR11MB5373:EE_ x-ms-office365-filtering-correlation-id: 134fa1c9-6a84-4b11-6153-08db2fc85842 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: xXqqlaKU5dZwK9GR7X3SrEKke2l7yGAJWD4Nhq70JHMFGeJO+MI6gyRPIDbsOESkIAigeT1U4D8Qs2XRQge8OEFn6TXqu6i/p1U7mwcgZhnxZ2srIy7fNVUA3r2xF2WWcR3Xi0EicIyNawf2espbH2+i2V4Ikiw3h+2ndKgMkRAC95+g0R9MCYKAtZcUMHrzvUULncKxWOuMom2wkttyX3UnkMAk/kW6bbRHzctIxD2uC+NMn2mLONqfj+ie+jopkZC5aagJ8QZH3ikcnDhSOqQJccepkleeNWqxWZRgEfSbmwpGWfI9uW8djysNA4lf8KpcdYaxFM7ADDYIT+PDyVqPvHQ5sXCbtsiOK2kYFjaXytBNnQaOf12j7QbhfklbjJsNSWOWW6kaActznUw7/3DbvOC5Kfemrq+Ud1C3dsRlRJfwZ1tt7IkkxF/kcWWmp+Sk7rucF6PAT9UVWvlYKe3qfTvssw3I5UvkhhgoksJJHcyVsD5Ncw0p6xZ42NArInuNRnJLqT7dCvUnq/ZTsQBLWHgA2/+YKU35ehJ8Y/uw3ryvLk04GeQJvs9E0+rgxSCEeOY2MQltfYWPjlKjqDULeJmtqg4RrFy4ocQl5h3qEZkivzK7hN0I2HswLJRJ 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:(13230028)(366004)(136003)(396003)(346002)(39860400002)(376002)(451199021)(41300700001)(66446008)(64756008)(66946007)(8676002)(66476007)(4326008)(66556008)(76116006)(186003)(2906002)(30864003)(83380400001)(38100700002)(38070700005)(86362001)(5660300002)(122000001)(33656002)(82960400001)(55016003)(8936002)(107886003)(478600001)(54906003)(7696005)(71200400001)(52536014)(53546011)(26005)(6506007)(316002)(9686003)(110136005)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZW80SmxRR1AyUWErbXhKOFVVZUlaZGxqaXNWV0FGWktkUWxPcG5tSytSUjAv?= =?utf-8?B?Z2xrMlZiN0hrb1JOVFdRVWVseG1mQjVqQk8rNkhDT3EvMk54Z29CMEVobGlt?= =?utf-8?B?dEl4MnpZN01WN0NBNFlVdS9sNHVCTzNTSDArVjdvdEFlSTgvdjk1cERMM3Z6?= =?utf-8?B?c3UraFNWNFFDdzV2QlNVZkJVUFRtZVIyQ3ltbkZqQVV6NDFsci9tUHVkb2lP?= =?utf-8?B?dU1Qajlkb3VSSFUzOUh1Uk42dHBJeDNNc29XTkIrNkk2Z21rV3VDZEFpRVVB?= =?utf-8?B?WDhWTi9jT3dja1RqcG9yVjd2TjdRd0xZc0pJNHoycmU1M3JwNTlZZUlLU2c2?= =?utf-8?B?YzZ5aTVEdHI0REVNdlFIUEZOQWZGZUEvTWpHVFQ2RGJTcVZON3dUNU8vSVRZ?= =?utf-8?B?OUU5Tmo5TjQyZFc1RFZPNjd6OFJiRVZEL0NTbGUvYUx1emw1c2s4M0xHdlFx?= =?utf-8?B?TWpFK3ZTNEw1eDBXd0RFZU1GQ3d3MGVuMlZVWTBnQWhuM1hWNjdjMG1rSkM5?= =?utf-8?B?MFZWdzBHRnVMckRnYWkzWW5KZTFoWWc4dUhxcTV4cmNVaGNQRWo0NEcraHFq?= =?utf-8?B?Zkg4eURrWS83aEV3czk5cTRWUVI1TkI0MVNaUTF5VC9rM0hKd2lNbDVhSFBZ?= =?utf-8?B?d0hYalhZZmpQY1k1ejg0azBCWGdMb0RJajNBNVBFQlVFLzNhZGVDNkxZY2da?= =?utf-8?B?SGx1ZndUYS9zRmlxWDVqcjAzWjJWMTJSd2M3Y0tEWVA0TGRNSENhZ0tNODda?= =?utf-8?B?VmprazRsZFUvNmwxdlZnN1lxVnJCTG9LeGRVV0FVR3VmNVhVbnFZWGljR1h0?= =?utf-8?B?Q29Jd0g3a2h6dU03WlJXeXdKTXZJc1REOTBxNFpBU0tXellmN0kwdnZtK3My?= =?utf-8?B?ZDYybk5Gc0NHMVRVems3S3Ftc1VNVXkvZEdyOUMybGtXYzlHOEQyeTRRelgv?= =?utf-8?B?V2NkQ3MwaUhOdFlXcHVGL1B3bWxkQm9lNjRlU3BhWlJMVVdvOElWQ0l5UUd4?= =?utf-8?B?dDcwdzU3bGVmOVdqSDlCRHlTMDFTN3BvWlpkSms3bnlqTXZXZi93WjRZUEVt?= =?utf-8?B?VVNoaC9QQnZ0ZytMZ2R6MDEra2xiRXFaMzBDajdtbUI5SzhPenE4WVh3aXN6?= =?utf-8?B?UEUwVEhVcFBkbmVCWjNLNkIrOFgrSWQvVnpOYWplbmJoMXVIeStEMEc5VG94?= =?utf-8?B?aUFSaHRUWitCcmcwUllHVURwU05qSkRMdWdSUjBDZVNJakZpcURiTXpjRjZT?= =?utf-8?B?WnA2dFM5VXowemhteWNNcm5QUHF4NlZxckhJY1RBVWJuVXl2aURwZHBrYW5h?= =?utf-8?B?TWRzdzJPcHdYOVhvZW9wL1l3cFJqc0M3RWRHdjZjdi9id2g5cmxFTjBVcVVR?= =?utf-8?B?SlJOSU83Nkt2a244NVFtQnlyZHNrQXZvblBXSW03bUJzVDZ5TzNha0tJNXFX?= =?utf-8?B?cHBYNk1ZNGNEWVB5bE1DVEU2bzIrTmIyTDZyOStHNkFqZ1FlQk1iQVVZS0Ro?= =?utf-8?B?a3ZZNmQ3ZVhCQ1JGdjJDQmk0eUlFdDF2SUtCQTRQL2FYcFFoUVpUZU5GN2Vt?= =?utf-8?B?c0xxZDJlY01IWmswdnNWWGVKaTIydXNxVVlQQ0tZTW82OVhad1N3L01YTlhs?= =?utf-8?B?NmhDSUdKaEJzV1JrYmRJWCtsczhuclJ5Um9jekwxL0RSOEl1L25rdUJBRnZq?= =?utf-8?B?ei9KbjdOL0pMeTZmQlVYQlkwT2pkeHFVYlgwT08wTFdkMU9EdytHWmd2bXFU?= =?utf-8?B?OTZreXpIZlR0U3p2VitjekhFQ2FnelA0MCt0LzVQcnR2SmgvTXQ2RUFCK0lK?= =?utf-8?B?bkowM2ZZVnBKdGcvTkVNTU5FSkFGQi9qekR1SnRoSXFmQnJsL0t5bEJXaUdi?= =?utf-8?B?dk8yRjdtaU9vdUZGazVtU1lkSlFlRVZLc0cxT0hGbUpIaFQrV1IrQXQ4eFI3?= =?utf-8?B?UktieGxDSEoyemdidVc0SmZLbnlEWjdwU3h4eVp1MkVIdWRXWU5zd0V5UStz?= =?utf-8?B?c1JkUk9pLys0RitwWnBveXlTSzU4VUJIUzdpTitGa2M3N2tTSlVFMVoxVFRV?= =?utf-8?B?cjhGWTlvVDF5UnltOEpWd2k0dEJuKzRzMWJvOHhNWGpsVklicFR2NU1TRXAy?= =?utf-8?B?TDBWTWVDQ255N2FqcjBKSGdrNEdJMEJ3SHFudXZtT3lLUjIzS0tjYy9vQnpR?= =?utf-8?B?aFE9PQ==?= 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: 134fa1c9-6a84-4b11-6153-08db2fc85842 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Mar 2023 20:09:32.3251 (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: Slh3wact4QWiJ42oyN0zERZ66i6/25IYpSuJ2Iul/XBfOafxhXU5aRLneWqh9UzHaoR8z+rhRuIvtAtyPPYgcNTubicSf+wbJJRuoXdFVM0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB5373 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 SSBhZ3JlZSB0aGF0IG1vdmluZyBpbnRvIEVtYmVkZGVkUGtnIGRvZXMgbm90IG1ha2Ugc2Vuc2Uu DQoNCkVtYmVkZGVkUGtnIGlzIHZlcnkgb2xkIHdpdGhvdXQgbWFueSB1cGRhdGVzLiAgVGhhdCBw YWNrYWdlIGlzIG5vdCB0aGUgYmVzdA0KdG8gdXNlIGZvciBleGFtcGxlcy4NCg0KSSB0aGluayB5 b3UgYXJlIHN1Z2dlc3RpbmcgdGhhdCB0aGVyZSBpcyBhIGRpZmZlcmVuY2UgaW4gYSBsaWJyYXJ5 IHRoYXQgcnVucw0KaW4gYW4gU0VDIGVudiB3aXRoIGludGVudCB0byBoYW5kIG9mZiB0byBQRUkg YW5kIGEgbGlicmFyeSB0aGF0IHJ1bnMgaW4gYW4NClNFQyBlbnYgd2l0aCBpbnRlbnQgdG8gaGFu ZG9mZiB0byBEWEUuICBUaGV5IGFyZSBib3RoIFNFQyBtb2R1bGUgdHlwZXMgYW5kIHRoZQ0KZXhl Y3V0aW9uIGVudmlyb25tZW50IGlzIHRoZSBzYW1lLiAgVGhlIG9ubHkgZGlmZmVyZW5jZSBpcyBo b3cgdGhleSBwcmVwYXJlDQpmb3IgdGhlIGhhbmRvZmYuDQoNCk15IGludGVyZXN0IGhlcmUgaXMg dG8gbWFrZSBzdXJlIHRoZSBwcmVmaXhlcyBhcmUgdXNlZCBjb25zaXN0ZW50bHkgYW5kIGlmDQp3 ZSB0cnVseSBoYXZlIGEgbmV3IHByZWZpeCB0eXBlLCB0aGVuIHRvIGNsZWFybHkgZGVmaW5lIGl0 IHNvIGl0IGNhbiBiZQ0KdXNlZCBjb25zaXN0ZW50bHkgZ29pbmcgZm9yd2FyZC4NCg0KTWlrZSAN Cg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBXYXJrZW50aW4sIEFuZHJl aSA8YW5kcmVpLndhcmtlbnRpbkBpbnRlbC5jb20+DQo+IFNlbnQ6IFR1ZXNkYXksIE1hcmNoIDI4 LCAyMDIzIDE6MDAgUE0NCj4gVG86IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5 QGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBHYW8sIExpbWluZyA8Z2Fv bGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgTGl1LCBaaGlndWFuZyA8emhpZ3VhbmcubGl1QGludGVs LmNvbT4NCj4gU3ViamVjdDogUkU6IFtQQVRDSCB2NSAyLzNdIE1kZVBrZzogYWRkIFNCSS1iYXNl ZCBTZXJpYWxQb3J0TGliIGZvciBSSVNDLVYNCj4gDQo+IFNlYyBpc24ndCBhIGdvb2QgZml0LCBi ZWNhdXNlIGl0IGhhcyBpbXBsaWNhdGlvbnMgb24gdGhlIGVudmlyb25tZW50LCB3aGljaCBpcyB3 aHkgdGhlIGNvbnRyaWJ1dGlvbiBhbHNvIGluY2x1ZGVzIGEgc2VwYXJhdGUgU2VjUGVpDQo+IHZh cmlhbnQgYXMgd2VsbC4NCj4gDQo+IEluIG5hbWluZywgSSBmb2xsb3dlZCBvdGhlciBlZGsyIGV4 YW1wbGVzIHN1Y2ggYXMgLi9FbWJlZGRlZFBrZy9MaWJyYXJ5L1ByZVBpRXh0cmFjdEd1aWRlZFNl Y3Rpb25MaWIgYW5kDQo+IC4vRW1iZWRkZWRQa2cvTGlicmFyeS9QcmVQaU1lbW9yeUFsbG9jYXRp b25MaS4gSSB3b3VsZCBwcmVmZXIgbm90IHRvIG1vdmUgb25lIG9mIHRoZXNlIGxpYnJhcmllcyBp bnRvIEVtYmVkZGVkUGtnIC0gdGhhdCB3b3VsZG4ndA0KPiBtYWtlIG11Y2ggc2Vuc2UgdG8gbWUg KGVzcC4gc2luY2UgdGhlcmUncyBub3RoaW5nICJlbWJlZGRlZCIgYWJvdXQgdGhlIGFwcHJvYWNo IHBlciBzZSwgaXQgY2FuIGJlIHVzZWQgb24gYW55IGltcGxlbWVudGF0aW9uKS4NCj4gDQo+IEEN Cj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS2lubmV5LCBNaWNoYWVsIEQg PG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiBTZW50OiBNb25kYXksIE1hcmNoIDI3LCAy MDIzIDExOjMyIEFNDQo+IFRvOiBXYXJrZW50aW4sIEFuZHJlaSA8YW5kcmVpLndhcmtlbnRpbkBp bnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogR2FvLCBMaW1pbmcgPGdhb2xp bWluZ0BieW9zb2Z0LmNvbS5jbj47IExpdSwgWmhpZ3VhbmcgPHpoaWd1YW5nLmxpdUBpbnRlbC5j b20+OyBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IFN1 YmplY3Q6IFJFOiBbUEFUQ0ggdjUgMi8zXSBNZGVQa2c6IGFkZCBTQkktYmFzZWQgU2VyaWFsUG9y dExpYiBmb3IgUklTQy1WDQo+IA0KPiBJIHRoaW5rIHRoYXQgd291bGQgc3RpbGwgYmUgY2FsbGVk IFNlYy4gIEFyZSB0aGVyZSBhbnkgaXNzdWVzIHdpdGggdXNpbmcgU2VjIHByZWZpeD8NCj4gDQo+ IE1pa2UNCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBXYXJr ZW50aW4sIEFuZHJlaSA8YW5kcmVpLndhcmtlbnRpbkBpbnRlbC5jb20+DQo+ID4gU2VudDogVGh1 cnNkYXksIE1hcmNoIDE2LCAyMDIzIDEwOjQ1IFBNDQo+ID4gVG86IEtpbm5leSwgTWljaGFlbCBE IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47DQo+ID4gZGV2ZWxAZWRrMi5ncm91cHMuaW8N Cj4gPiBDYzogR2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IExpdSwgWmhp Z3VhbmcNCj4gPiA8emhpZ3VhbmcubGl1QGludGVsLmNvbT4NCj4gPiBTdWJqZWN0OiBSRTogW1BB VENIIHY1IDIvM10gTWRlUGtnOiBhZGQgU0JJLWJhc2VkIFNlcmlhbFBvcnRMaWIgZm9yDQo+ID4g UklTQy1WDQo+ID4NCj4gPiBQcmVQaSByZWZlcnMgdG8gYSBTRUMtbGlrZSBzdGFnZSBpbiBhIFRp YW5vIGltcGxlbWVudGF0aW9uIHRoYXQgc2tpcHMNCj4gPiB0aGUgUEVJIHN0YWdlLiBSZWFzb25z IGZvciBza2lwcGluZyBQRUkgdXN1YWxseSBjZW50ZXIgYXJvdW5kIG1lbW9yeQ0KPiA+IGluaXRp YWxpemF0aW9uIGJlaW5nIGRvbmUgYXQgYW4gZWFybGllciBzdGFnZSBvZiBmaXJtd2FyZQ0KPiA+ IGluaXRpYWxpemF0aW9uIC0gZm9yIGV4YW1wbGUsIHByaW9yIG9yIHBhcnQgb2YgVEYtQSBmaXJt d2FyZSBvbg0KPiA+IEFBcmNoNjQgb3IgcHJpb3Igb3IgcGFydCBvZiBTQkkgaW1wbGVtZW50YXRp b24gb24gUklTQy1WLg0KPiA+DQo+ID4gRS5nLiBBcm1WaXJ0UGtnL1ByZVBpIGFuZCBPdm1mUGtn L1Jpc2NWVmlydC9TZWMuIFRoZSBsYXRlciBpcyBub3QgYQ0KPiA+ICJTRUMiIGluIHRoZSBzZW5k IG9mIGhhbmRpbmcgb2ZmIHRvIFBlaUNvcmUsIGJ1dCBpbnN0ZWFkIGhhbmRzIG9mZiB0byBEeGVD b3JlLg0KPiA+DQo+ID4gVGhlcmUgaXMgbm8gYmFzZSB0eXBlIGZvciBQcmVQaS4gVGhlIHR5cGUg aXMgc3RpbGwgU0VDLiBCdXQgaXQgYSkgYXNzdW1lcyBSQU0gaXMgYXZhaWxhYmxlIGIpIGJ1aWxk cyBIT0JzIGFuZCBoYW5kcy1vZmYgdG8gRFhFLg0KPiA+DQo+ID4gVGhlIG5hbWUgaGFzIGJlZW4g YXJvdW5kIGZvciBhdCBsZWFzdCBoYWxmIGEgZGVjYWRlIG5vdyBhbmQgbWFraW5nIGl0DQo+ID4g YSBwYXJ0IG9mIHRoZSBTZXJpYWxQb3J0TGliIGNvbXBvbmVudCBuYW1lIGlzIGltcG9ydGFudCBh cyBpdCBzaWduaWZpZXMgdGhlIHNjZW5hcmlvIHdoZXJlIHRoZSBjb2RlIGNhbiBhcHBseS4NCj4g Pg0KPiA+IEENCj4gPg0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTog S2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+IFNlbnQ6 IEZyaWRheSwgTWFyY2ggMTcsIDIwMjMgMTI6MDEgQU0NCj4gPiBUbzogV2Fya2VudGluLCBBbmRy ZWkgPGFuZHJlaS53YXJrZW50aW5AaW50ZWwuY29tPjsNCj4gPiBkZXZlbEBlZGsyLmdyb3Vwcy5p bw0KPiA+IENjOiBHYW8sIExpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgTGl1LCBa aGlndWFuZw0KPiA+IDx6aGlndWFuZy5saXVAaW50ZWwuY29tPjsgS2lubmV5LCBNaWNoYWVsIEQN Cj4gPiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogUkU6IFtQQVRD SCB2NSAyLzNdIE1kZVBrZzogYWRkIFNCSS1iYXNlZCBTZXJpYWxQb3J0TGliIGZvcg0KPiA+IFJJ U0MtVg0KPiA+DQo+ID4gV2hhdCBpcyB0aGUgZGVmaW5pdGlvbiBvZiAiUHJlUEkiPyAgVGhhdCBp cyBub3QgYSBwcmVmaXggSSBoYXZlIHNlZW4gdXNlZCBiZWZvcmUuDQo+ID4NCj4gPiBNaWtlDQo+ ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBXYXJrZW50 aW4sIEFuZHJlaSA8YW5kcmVpLndhcmtlbnRpbkBpbnRlbC5jb20+DQo+ID4gPiBTZW50OiBUaHVy c2RheSwgTWFyY2ggMTYsIDIwMjMgOTo1MyBQTQ0KPiA+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBz LmlvDQo+ID4gPiBDYzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwu Y29tPjsgR2FvLCBMaW1pbmcNCj4gPiA+IDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBMaXUs IFpoaWd1YW5nIDx6aGlndWFuZy5saXVAaW50ZWwuY29tPg0KPiA+ID4gU3ViamVjdDogUkU6IFtQ QVRDSCB2NSAyLzNdIE1kZVBrZzogYWRkIFNCSS1iYXNlZCBTZXJpYWxQb3J0TGliIGZvcg0KPiA+ ID4gUklTQy1WDQo+ID4gPg0KPiA+ID4gSGkgZm9sa3MsDQo+ID4gPg0KPiA+ID4gQ2FuIEkgZ2V0 IGEgcmV2aWV3IGZvciB0aGUgY2hhbmdlcyB0byBNZGVQa2cuZHNjIHRvIGluY2x1ZGUgdGhlIG5l dw0KPiA+ID4gbGlicyBvbiBSSVNDLVY/IFRoYXQncyB0aGUgbWlub3IgdGhpbmcgcHJldmVudGlu ZyB0aGlzIHBhdGNoIHNldCBmcm9tIGJlaW5nIG1lcmdlZCDwn5iKLg0KPiA+ID4NCj4gPiA+IEEN Cj4gPiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogV2Fy a2VudGluLCBBbmRyZWkgPGFuZHJlaS53YXJrZW50aW5AaW50ZWwuY29tPg0KPiA+ID4gU2VudDog RnJpZGF5LCBNYXJjaCAxMCwgMjAyMyAxMTowNSBBTQ0KPiA+ID4gVG86IGRldmVsQGVkazIuZ3Jv dXBzLmlvDQo+ID4gPiBDYzogV2Fya2VudGluLCBBbmRyZWkgPGFuZHJlaS53YXJrZW50aW5AaW50 ZWwuY29tPjsgRGFuaWVsIFNjaGFlZmVyDQo+ID4gPiA8Z2l0QGRhbmllbHNjaGFlZmVyLm1lPjsg U3VuaWwgViBMIDxzdW5pbHZsQHZlbnRhbmFtaWNyby5jb20+Ow0KPiA+ID4gS2lubmV5LCBNaWNo YWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgR2FvLCBMaW1pbmcNCj4gPiA+IDxn YW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBMaXUsIFpoaWd1YW5nIDx6aGlndWFuZy5saXVAaW50 ZWwuY29tPjsNCj4gPiA+IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPg0KPiA+ID4g U3ViamVjdDogW1BBVENIIHY1IDIvM10gTWRlUGtnOiBhZGQgU0JJLWJhc2VkIFNlcmlhbFBvcnRM aWIgZm9yDQo+ID4gPiBSSVNDLVYNCj4gPiA+DQo+ID4gPiBUaGVzZSBhcmUgaW1wbGVtZW50YXRp b25zIG9mIFNlcmlhbFBvcnRMaWIgdXNpbmcgU0JJIGNvbnNvbGUgc2VydmljZXMuDQo+ID4gPiAt IFNlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaSBpcyBhcHByb3ByaWF0ZSBmb3IgU0VDL1BFSSAo WElQKQ0KPiA+ID4gZW52aXJvbm1lbnRzDQo+ID4gPiAtIFByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0 TGliU2JpIGlzIGFwcHJvcHJpYXRlIGZvciBQcmVQSS9EWEUNCj4gPiA+IGVudmlyb25tZW50cw0K PiA+ID4NCj4gPiA+IFRlc3RlZCB3aXRoOg0KPiA+ID4gLSBRZW11IFJpc2NWVmlydCAobm9uLURC Q04gY2FzZSwgYmFja2VkIGJ5IFVBUlQpDQo+ID4gPiAtIFRpbnlFTVUgKyBSaXNjVlZpcnQgKG5v bi1EQkNOIGNhc2UsIEhUSUYpDQo+ID4gPiAtIFRpbnlFTVUgKyBSaXNjVlZpcnQgKERCQ04gY2Fz ZSwgSFRJRikNCj4gPiA+DQo+ID4gPiBDYzogRGFuaWVsIFNjaGFlZmVyIDxnaXRAZGFuaWVsc2No YWVmZXIubWU+DQo+ID4gPiBDYzogU3VuaWwgViBMIDxzdW5pbHZsQHZlbnRhbmFtaWNyby5jb20+ DQo+ID4gPiBDYzogTWljaGFlbCBEIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+ DQo+ID4gPiBDYzogTGltaW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPiA+ID4g Q2M6IFpoaWd1YW5nIExpdSA8emhpZ3VhbmcubGl1QGludGVsLmNvbT4NCj4gPiA+IEFja2VkLWJ5 OiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4NCj4gPiA+IFNpZ25lZC1vZmYtYnk6 IEFuZHJlaSBXYXJrZW50aW4gPGFuZHJlaS53YXJrZW50aW5AaW50ZWwuY29tPg0KPiA+ID4gLS0t DQo+ID4gPiAgTWRlUGtnL01kZVBrZy5kc2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsNCj4gPiA+ICBNZGVQa2cvTGli cmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9y dExpYlNiaS5pbmYgfCAgMzYgKysrDQo+ID4gPiAgTWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZT ZXJpYWxQb3J0TGliU2JpL1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS5pbmYgICAgIHwgIDM5 ICsrKw0KPiA+ID4gIE1kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2Jp L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpLmMgICB8IDI4OCArKysrKysrKysrKysrKysr KysrKw0KPiA+ID4gIE1kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9T ZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkuYyAgICAgICB8IDIzMyArKysrKysrKysrKysrKysr DQo+ID4gPiAgTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJl UGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkudW5pIHwgIDE2ICsrDQo+ID4gPiAgTWRlUGtnL0xp YnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1NlY1BlaVJpc2NWU2VyaWFsUG9ydExp YlNiaS51bmkgICAgIHwgIDE2ICsrDQo+ID4gPiAgNyBmaWxlcyBjaGFuZ2VkLCA2MzAgaW5zZXJ0 aW9ucygrKQ0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQgYS9NZGVQa2cvTWRlUGtnLmRzYyBiL01k ZVBrZy9NZGVQa2cuZHNjIGluZGV4DQo+ID4gPiAwYWM3NjE4YjQ2MjMuLmZiMzEzNDkwNDJmYiAx MDA2NDQNCj4gPiA+IC0tLSBhL01kZVBrZy9NZGVQa2cuZHNjDQo+ID4gPiArKysgYi9NZGVQa2cv TWRlUGtnLmRzYw0KPiA+ID4gQEAgLTE5Miw1ICsxOTIsNyBAQCBbQ29tcG9uZW50cy5BUk0sIENv bXBvbmVudHMuQUFSQ0g2NF0NCj4gPiA+DQo+ID4gPiAgW0NvbXBvbmVudHMuUklTQ1Y2NF0NCj4g PiA+ICAgIE1kZVBrZy9MaWJyYXJ5L0Jhc2VSaXNjVlNiaUxpYi9CYXNlUmlzY1ZTYmlMaWIuaW5m DQo+ID4gPiArDQo+ID4gPiArIE1kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExp YlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaQ0KPiA+ID4gKyBiUw0KPiA+ID4gKyBiaQ0KPiA+ ID4gKyAuaW5mDQo+ID4gPiArIE1kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0 TGliU2JpL1ByZVBpRHhlUmlzY1ZTZXJpYWxQbw0KPiA+ID4gKyBydA0KPiA+ID4gKyBMaQ0KPiA+ ID4gKyBiU2JpLmluZg0KPiA+ID4NCj4gPiA+ICBbQnVpbGRPcHRpb25zXQ0KPiA+ID4gZGlmZiAt LWdpdA0KPiA+ID4gYS9NZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNi aS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG8NCj4gPiA+IHJ0DQo+ID4gPiBMaWJTYmkuaW5mDQo+ID4g PiBiL01kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhl UmlzY1ZTZXJpYWxQbw0KPiA+ID4gcnQNCj4gPiA+IExpYlNiaS5pbmYNCj4gPiA+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjFkODU0NDc1NmJiOQ0KPiA+ ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNj VlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlcmkNCj4gPiA+ICsrKyBhbA0KPiA+ID4g KysrIFBvDQo+ID4gPiArKysgcnRMaWJTYmkuaW5mDQo+ID4gPiBAQCAtMCwwICsxLDM2IEBADQo+ ID4gPiArIyMgQGZpbGUNCj4gPiA+ICsjICBTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBT QkkgY29uc29sZS4NCj4gPiA+ICsjDQo+ID4gPiArIyAgTWVhbnQgZm9yIFByZVBpIGFuZCBEWEUg ZW52aXJvbm1lbnRzICh3aGVyZSBnbG9iYWxzIGFyZSBhbGxvd2VkKS4NCj4gPiA+ICtTZWUgIyAg U2VjUGVpU2VyaWFsUG9ydExpYlJpc2NWU2JpIGZvciBhIHJlZHVjZWQgdmFyaWFudA0KPiA+ID4g K2FwcHJvcHJpYXRlIGZvciBTRUMgIyAgYW5kIFBFSSAoWElQKSBlbnZpcm9ubWVudHMuDQo+ID4g PiArIw0KPiA+ID4gKyMgIENvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gKyMgIw0KPiA+ID4gK1NQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50ICMgIyAjIw0KPiA+ID4gKw0KPiA+ID4gK1tE ZWZpbmVzXQ0KPiA+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAx MDAxQg0KPiA+ID4gKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gUHJlUGlEeGVS aXNjVlNlcmlhbFBvcnRMaWJTYmkNCj4gPiA+ICsgIE1PRFVMRV9VTklfRklMRSAgICAgICAgICAg ICAgICA9IFByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpLnVuaQ0KPiA+ID4gKyAgRklMRV9H VUlEICAgICAgICAgICAgICAgICAgICAgID0gODcyYWY3NDMtYWI1Ni00NWI0LWEwNjUtNjAyNTY3 ZjQ4MjBjDQo+ID4gPiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBCQVNFDQo+ ID4gPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gPiA+ICsgIExJ QlJBUllfQ0xBU1MgICAgICAgICAgICAgICAgICA9IFNlcmlhbFBvcnRMaWIgfCBTRUMgRFhFX0NP UkUgRFhFX0RSSVZFUiBEWEVfUlVOVElNRV9EUklWRVIgVUVGSV9EUklWRVIgVUVGSV9BUFBMSUNB VElPTg0KPiA+ID4gKw0KPiA+ID4gKw0KPiA+ID4gKyMNCj4gPiA+ICsjICBWQUxJRF9BUkNISVRF Q1RVUkVTICAgICAgICAgICA9IFJJU0NWNjQNCj4gPiA+ICsjDQo+ID4gPiArDQo+ID4gPiArW1Nv dXJjZXNdDQo+ID4gPiArICBQcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS5jDQo+ID4gPiAr DQo+ID4gPiArW1BhY2thZ2VzXQ0KPiA+ID4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiA+ICsN Cj4gPiA+ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4gPiArICBSaXNjVlNiaUxpYg0KPiA+ID4gZGlm ZiAtLWdpdA0KPiA+ID4gYS9NZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJT YmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGkNCj4gPiA+IGJTDQo+ID4gPiBiaS5pbmYNCj4gPiA+ IGIvTWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1NlY1BlaVJpc2NW U2VyaWFsUG9ydExpDQo+ID4gPiBiUw0KPiA+ID4gYmkuaW5mDQo+ID4gPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi43YmM3Y2Q0N2MxMWMNCj4gPiA+IC0t LSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFs UG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvDQo+ID4gPiArKysgcnQNCj4gPiA+ICsrKyBM aQ0KPiA+ID4gKysrIGJTYmkuaW5mDQo+ID4gPiBAQCAtMCwwICsxLDM5IEBADQo+ID4gPiArIyMg QGZpbGUNCj4gPiA+ICsjICBTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29s ZS4NCj4gPiA+ICsjDQo+ID4gPiArIyAgTWVhbnQgZm9yIFNFQyBhbmQgUEVJIChYSVApIGVudmly b25tZW50cy4NCj4gPiA+ICsjDQo+ID4gPiArIyAgRHVlIHRvIGxpbWl0YXRpb25zIG9mIFNCSSBj b25zb2xlIGludGVyZmFjZSBhbmQgWElQIGVudmlyb25tZW50cw0KPiA+ID4gKyMgKG9uIHVzZSBv ZiBnbG9iYWxzKSwgdGhpcyBsaWJyYXJ5IGluc3RhbmNlIGRvZXMgbm90IGltcGxlbWVudA0KPiA+ ID4gK3JlYWRpbmcgIyBhbmQgcG9sbGluZyB0aGUgc2VyaWFsIHBvcnQuIFNlZQ0KPiA+ID4gK1By ZVBpRHhlU2VyaWFsUG9ydExpYlJpc2NWU2JpIGZvciAjIHRoZSBmdWxsLWZlYXR1cmVkIHZhcmlh bnQgbWVhbnQgZm9yIFByZVBpIGFuZCBEWEUgZW52aXJvbm1lbnRzLg0KPiA+ID4gKyMNCj4gPiA+ ICsjICBDb3B5cmlnaHQgKGMpIDIwMjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLjxCUj4NCj4gPiA+ICsjICMNCj4gPiA+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudCAjICMgIyMNCj4gPiA+ICsNCj4gPiA+ICtbRGVmaW5lc10NCj4g PiA+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMTAwMUINCj4gPiA+ ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IFNlY1BlaVJpc2NWU2VyaWFsUG9y dExpYlNiaQ0KPiA+ID4gKyAgTU9EVUxFX1VOSV9GSUxFICAgICAgICAgICAgICAgID0gU2VjUGVp UmlzY1ZTZXJpYWxQb3J0TGliU2JpLnVuaQ0KPiA+ID4gKyAgRklMRV9HVUlEICAgICAgICAgICAg ICAgICAgICAgID0gNjM5ZmFkMzgtNGJmZC00ZWI5LTlmMDktZTk3Yzc5NDdkNDgwDQo+ID4gPiAr ICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBCQVNFDQo+ID4gPiArICBWRVJTSU9O X1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gPiA+ICsgIExJQlJBUllfQ0xBU1MgICAg ICAgICAgICAgICAgICA9IFNlcmlhbFBvcnRMaWIgfCBTRUMgUEVJX0NPUkUgUEVJTQ0KPiA+ID4g Kw0KPiA+ID4gKw0KPiA+ID4gKyMNCj4gPiA+ICsjICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAg ICAgICA9IFJJU0NWNjQNCj4gPiA+ICsjDQo+ID4gPiArDQo+ID4gPiArW1NvdXJjZXNdDQo+ID4g PiArICBTZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkuYw0KPiA+ID4gKw0KPiA+ID4gK1tQYWNr YWdlc10NCj4gPiA+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4gPiArDQo+ID4gPiArW0xpYnJh cnlDbGFzc2VzXQ0KPiA+ID4gKyAgUmlzY1ZTYmlMaWINCj4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ IGEvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVS aXNjVlNlcmlhbFBvDQo+ID4gPiBydA0KPiA+ID4gTGliU2JpLmMNCj4gPiA+IGIvTWRlUGtnL0xp YnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlcmlhbFBv DQo+ID4gPiBydA0KPiA+ID4gTGliU2JpLmMNCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjA1OGE2NTczZWYyZA0KPiA+ID4gLS0tIC9kZXYvbnVs bA0KPiA+ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJT YmkvUHJlUGlEeGVSaXNjVlNlcmkNCj4gPiA+ICsrKyBhbA0KPiA+ID4gKysrIFBvDQo+ID4gPiAr KysgcnRMaWJTYmkuYw0KPiA+ID4gQEAgLTAsMCArMSwyODggQEANCj4gPiA+ICsvKiogQGZpbGUN Cj4gPiA+ICsgIFNlcmlhbCBQb3J0IExpYnJhcnkgYmFja2VkIGJ5IFNCSSBjb25zb2xlLg0KPiA+ ID4gKw0KPiA+ID4gKyAgTWVhbnQgZm9yIFByZVBpIGFuZCBEWEUgZW52aXJvbm1lbnRzICh3aGVy ZSBnbG9iYWxzIGFyZSBhbGxvd2VkKS4NCj4gPiA+ICsgU2VlIFNlY1BlaVNlcmlhbFBvcnRMaWJS aXNjVlNiaSBmb3IgYSByZWR1Y2VkIHZhcmlhbnQgYXBwcm9wcmlhdGUNCj4gPiA+ICsgZm9yIFNF QyBhbmQgUEVJIChYSVApIGVudmlyb25tZW50cy4NCj4gPiA+ICsNCj4gPiA+ICsgIENvcHlyaWdo dCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4g PiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICsNCj4gPiA+ICsjaW5jbHVkZSA8QmFzZS5oPg0KPiA+ ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1NlcmlhbFBvcnRMaWIuaD4NCj4gPiA+ICsjaW5jbHVkZSA8 TGlicmFyeS9CYXNlUmlzY1ZTYmlMaWIuaD4NCj4gPiA+ICsNCj4gPiA+ICtTVEFUSUMgQk9PTEVB TiAgbUhhdmVEYmNuICAgICAgICAgID0gRkFMU0U7DQo+ID4gPiArU1RBVElDIEJPT0xFQU4gIG1I YXZlTGVnYWN5UHV0Y2hhciA9IEZBTFNFOyBTVEFUSUMgQk9PTEVBTg0KPiA+ID4gK21IYXZlTGVn YWN5R2V0Y2hhciA9IEZBTFNFOw0KPiA+ID4gK1NUQVRJQyBJTlQ2NCAgICBtTGFzdEdldENoYXIg ICAgICAgPSAtMTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEluaXRpYWxpemUgdGhl IHNlcmlhbCBkZXZpY2UgaGFyZHdhcmUuDQo+ID4gPiArDQo+ID4gPiArICBJZiBubyBpbml0aWFs aXphdGlvbiBpcyByZXF1aXJlZCwgdGhlbiByZXR1cm4gUkVUVVJOX1NVQ0NFU1MuDQo+ID4gPiAr ICBJZiB0aGUgc2VyaWFsIGRldmljZSB3YXMgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkLCB0aGVu IHJldHVybiBSRVRVUk5fU1VDQ0VTUy4NCj4gPiA+ICsgIElmIHRoZSBzZXJpYWwgZGV2aWNlIGNv dWxkIG5vdCBiZSBpbml0aWFsaXplZCwgdGhlbiByZXR1cm4gUkVUVVJOX0RFVklDRV9FUlJPUi4N Cj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgICAgICAgIFRoZSBzZXJp YWwgZGV2aWNlIHdhcyBpbml0aWFsaXplZC4NCj4gPiA+ICsgIEByZXR2YWwgUkVUVVJOX0RFVklD RV9FUlJPUiAgIFRoZSBzZXJpYWwgZGV2aWNlIGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZC4NCj4g PiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtSRVRVUk5fU1RBVFVTDQo+ID4gPiArRUZJQVBJDQo+ ID4gPiArU2VyaWFsUG9ydEluaXRpYWxpemUgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0K PiA+ID4gK3sNCj4gPiA+ICsgIFNCSV9SRVQgIFJldDsNCj4gPiA+ICsNCj4gPiA+ICsgIFJldCA9 IFNiaUNhbGwgKFNCSV9FWFRfQkFTRSwgU0JJX0VYVF9CQVNFX1BST0JFX0VYVCwgMSwNCj4gPiA+ ICsgU0JJX0VYVF9EQkNOKTsgIGlmICgoVHJhbnNsYXRlRXJyb3IgKFJldC5FcnJvcikgPT0gRUZJ X1NVQ0NFU1MpICYmDQo+ID4gPiArICAgICAgKFJldC5WYWx1ZSAhPSAwKSkNCj4gPiA+ICsgIHsN Cj4gPiA+ICsgICAgbUhhdmVEYmNuID0gVFJVRTsNCj4gPiA+ICsgIH0gZWxzZSB7DQo+ID4gPiAr ICAgIFJldCA9IFNiaUNhbGwgKFNCSV9FWFRfQkFTRSwgU0JJX0VYVF9CQVNFX1BST0JFX0VYVCwg MSwgU0JJX0VYVF8wXzFfQ09OU09MRV9QVVRDSEFSKTsNCj4gPiA+ICsgICAgaWYgKChUcmFuc2xh dGVFcnJvciAoUmV0LkVycm9yKSA9PSBFRklfU1VDQ0VTUykgJiYNCj4gPiA+ICsgICAgICAgIChS ZXQuVmFsdWUgIT0gMCkpDQo+ID4gPiArICAgIHsNCj4gPiA+ICsgICAgICBtSGF2ZUxlZ2FjeVB1 dGNoYXIgPSBUUlVFOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArDQo+ID4gPiArICAgIFJldCA9IFNi aUNhbGwgKFNCSV9FWFRfQkFTRSwgU0JJX0VYVF9CQVNFX1BST0JFX0VYVCwgMSwgU0JJX0VYVF8w XzFfQ09OU09MRV9HRVRDSEFSKTsNCj4gPiA+ICsgICAgaWYgKChUcmFuc2xhdGVFcnJvciAoUmV0 LkVycm9yKSA9PSBFRklfU1VDQ0VTUykgJiYNCj4gPiA+ICsgICAgICAgIChSZXQuVmFsdWUgIT0g MCkpDQo+ID4gPiArICAgIHsNCj4gPiA+ICsgICAgICBtSGF2ZUxlZ2FjeUdldGNoYXIgPSBUUlVF Ow0KPiA+ID4gKyAgICB9DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4gUkVU VVJOX1NVQ0NFU1M7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgV3Jp dGUgZGF0YSBmcm9tIGJ1ZmZlciB0byBzZXJpYWwgZGV2aWNlLg0KPiA+ID4gKw0KPiA+ID4gKyAg V3JpdGVzIE51bWJlck9mQnl0ZXMgZGF0YSBieXRlcyBmcm9tIEJ1ZmZlciB0byB0aGUgc2VyaWFs IGRldmljZS4NCj4gPiA+ICsgIFRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiB0 byB0aGUgc2VyaWFsIGRldmljZSBpcyByZXR1cm5lZC4NCj4gPiA+ICsgIElmIHRoZSByZXR1cm4g dmFsdWUgaXMgbGVzcyB0aGFuIE51bWJlck9mQnl0ZXMsIHRoZW4gdGhlIHdyaXRlIG9wZXJhdGlv biBmYWlsZWQuDQo+ID4gPiArICBJZiBCdWZmZXIgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4g PiA+ICsgIElmIE51bWJlck9mQnl0ZXMgaXMgemVybywgdGhlbiByZXR1cm4gMC4NCj4gPiA+ICsN Cj4gPiA+ICsgIEBwYXJhbSAgQnVmZmVyICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgZGF0 YSBidWZmZXIgdG8gYmUgd3JpdHRlbi4NCj4gPiA+ICsgIEBwYXJhbSAgTnVtYmVyT2ZCeXRlcyAg ICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHdyaXR0ZW4gdG8gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIDAgICAgICAgICAgICAgICAgTnVtYmVyT2ZCeXRlcyBp cyAwLg0KPiA+ID4gKyAgQHJldHZhbCA+MCAgICAgICAgICAgICAgIFRoZSBudW1iZXIgb2YgYnl0 ZXMgd3JpdHRlbiB0byB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICBJZiB0aGlzIHZhbHVlIGlzIGxlc3MgdGhhbiBOdW1iZXJPZkJ5dGVzLCB0aGVu IHRoZSB3cml0ZSBvcGVyYXRpb24gZmFpbGVkLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4g K1VJTlRODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArU2VyaWFsUG9ydFdyaXRlICgNCj4gPiA+ICsg IElOIFVJTlQ4ICAqQnVmZmVyLA0KPiA+ID4gKyAgSU4gVUlOVE4gIE51bWJlck9mQnl0ZXMNCj4g PiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBVSU5UTiAgSW5kZXg7DQo+ID4gPiArDQo+ID4g PiArICBpZiAobUhhdmVEYmNuKSB7DQo+ID4gPiArICAgIFNCSV9SRVQgIFJldDsNCj4gPiA+ICsg ICAgUmV0ID0gU2JpQ2FsbCAoDQo+ID4gPiArICAgICAgICAgICAgU0JJX0VYVF9EQkNOLA0KPiA+ ID4gKyAgICAgICAgICAgIFNCSV9FWFRfREJDTl9XUklURSwNCj4gPiA+ICsgICAgICAgICAgICAz LA0KPiA+ID4gKyAgICAgICAgICAgIE51bWJlck9mQnl0ZXMsDQo+ID4gPiArICAgICAgICAgICAg KChVSU5UTilCdWZmZXIpLA0KPiA+ID4gKyAgICAgICAgICAgIDANCj4gPiA+ICsgICAgICAgICAg ICApOw0KPiA+ID4gKyAgICBpZiAoVHJhbnNsYXRlRXJyb3IgKFJldC5FcnJvcikgIT0gRUZJX1NV Q0NFU1MpIHsNCj4gPiA+ICsgICAgICByZXR1cm4gMDsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKw0K PiA+ID4gKyAgICByZXR1cm4gUmV0LlZhbHVlOw0KPiA+ID4gKyAgfSBlbHNlIGlmIChtSGF2ZUxl Z2FjeVB1dGNoYXIpIHsNCj4gPiA+ICsgICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgTnVtYmVy T2ZCeXRlczsgSW5kZXgrKykgew0KPiA+ID4gKyAgICAgIFNiaUNhbGwgKFNCSV9FWFRfMF8xX0NP TlNPTEVfUFVUQ0hBUiwgMCwgMSwgQnVmZmVyW0luZGV4XSk7DQo+ID4gPiArICAgIH0NCj4gPiA+ ICsNCj4gPiA+ICsgICAgcmV0dXJuIEluZGV4Ow0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4g KyAgLyoNCj4gPiA+ICsgICAqIE5laXRoZXIgREJDTiBvciBsZWdhY3kgZXh0ZW5zaW9uIHdlcmUg cHJlc2VudC4NCj4gPiA+ICsgICAqLw0KPiA+ID4gKyAgcmV0dXJuIE51bWJlck9mQnl0ZXM7DQo+ ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgUmVhZCBkYXRhIGZyb20gc2Vy aWFsIGRldmljZSBhbmQgc2F2ZSB0aGUgZGF0YXMgaW4gYnVmZmVyLg0KPiA+ID4gKw0KPiA+ID4g KyAgUmVhZHMgTnVtYmVyT2ZCeXRlcyBkYXRhIGJ5dGVzIGZyb20gYSBzZXJpYWwgZGV2aWNlIGlu dG8gdGhlDQo+ID4gPiArIGJ1ZmZlciBzcGVjaWZpZWQgYnkgQnVmZmVyLiBUaGUgbnVtYmVyIG9m IGJ5dGVzIGFjdHVhbGx5IHJlYWQgaXMgcmV0dXJuZWQuDQo+ID4gPiArICBJZiB0aGUgcmV0dXJu IHZhbHVlIGlzIGxlc3MgdGhhbiBOdW1iZXJPZkJ5dGVzLCB0aGVuIHRoZSByZXN0IG9wZXJhdGlv biBmYWlsZWQuDQo+ID4gPiArICBJZiBCdWZmZXIgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4g PiA+ICsgIElmIE51bWJlck9mQnl0ZXMgaXMgemVybywgdGhlbiByZXR1cm4gMC4NCj4gPiA+ICsN Cj4gPiA+ICsgIEBwYXJhbSAgQnVmZmVyICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgZGF0 YSBidWZmZXIgdG8gc3RvcmUgdGhlIGRhdGEgcmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNlLg0K PiA+ID4gKyAgQHBhcmFtICBOdW1iZXJPZkJ5dGVzICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgd2hp Y2ggd2lsbCBiZSByZWFkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCAwICAgICAgICAgICAg ICAgIFJlYWQgZGF0YSBmYWlsZWQ7IE5vIGRhdGEgaXMgdG8gYmUgcmVhZC4NCj4gPiA+ICsgIEBy ZXR2YWwgPjAgICAgICAgICAgICAgICBUaGUgYWN0dWFsIG51bWJlciBvZiBieXRlcyByZWFkIGZy b20gc2VyaWFsIGRldmljZS4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtVSU5UTg0KPiA+ ID4gK0VGSUFQSQ0KPiA+ID4gK1NlcmlhbFBvcnRSZWFkICgNCj4gPiA+ICsgIE9VVCBVSU5UOCAg KkJ1ZmZlciwNCj4gPiA+ICsgIElOICBVSU5UTiAgTnVtYmVyT2ZCeXRlcw0KPiA+ID4gKyAgKQ0K PiA+ID4gK3sNCj4gPiA+ICsgIFVJTlROICBJbmRleDsNCj4gPiA+ICsNCj4gPiA+ICsgIEluZGV4 ID0gMDsNCj4gPiA+ICsgIHdoaWxlICgoSW5kZXggPCBOdW1iZXJPZkJ5dGVzKSAmJiBTZXJpYWxQ b3J0UG9sbCAoKSkgew0KPiA+ID4gKyAgICBCdWZmZXJbSW5kZXgrK10gPSAoVUlOVDgpbUxhc3RH ZXRDaGFyOw0KPiA+ID4gKyAgICBtTGFzdEdldENoYXIgICAgPSAtMTsNCj4gPiA+ICsgIH0NCj4g PiA+ICsNCj4gPiA+ICsgIHJldHVybiBJbmRleDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAr LyoqDQo+ID4gPiArICBQb2xscyBhIHNlcmlhbCBkZXZpY2UgdG8gc2VlIGlmIHRoZXJlIGlzIGFu eSBkYXRhIHdhaXRpbmcgdG8gYmUgcmVhZC4NCj4gPiA+ICsNCj4gPiA+ICsgIFBvbGxzIGEgc2Vy aWFsIGRldmljZSB0byBzZWUgaWYgdGhlcmUgaXMgYW55IGRhdGEgd2FpdGluZyB0byBiZSByZWFk Lg0KPiA+ID4gKyAgSWYgdGhlcmUgaXMgZGF0YSB3YWl0aW5nIHRvIGJlIHJlYWQgZnJvbSB0aGUg c2VyaWFsIGRldmljZSwgdGhlbiBUUlVFIGlzIHJldHVybmVkLg0KPiA+ID4gKyAgSWYgdGhlcmUg aXMgbm8gZGF0YSB3YWl0aW5nIHRvIGJlIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZSwgdGhl biBGQUxTRSBpcyByZXR1cm5lZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAg ICAgICAgICBEYXRhIGlzIHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNl Lg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgICAgIFRoZXJlIGlzIG5vIGRhdGEgd2Fp dGluZyB0byBiZSByZWFkIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gPiArDQo+ID4gPiAr KiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1NlcmlhbFBvcnRQb2xs ICgNCj4gPiA+ICsgIFZPSUQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICAvKg0KPiA+ ID4gKyAgICogQ2FyZWZ1bC4gT3BlblNCSSB3aXRoIEhUSUYgY29uc29sZSB3aWxsIHJldHVybiAt MSBmb2xsb3dlZCBieSAtMg0KPiA+ID4gKyAgICogaWYgdGhlcmUgaXMgbm8gY2hhcmFjdGVyIHJl Y2VpdmVkLiBTbyBqdXN0IGNoZWNrIGZvciB2YWx1ZXMgPj0gMC4NCj4gPiA+ICsgICAqLw0KPiA+ ID4gKw0KPiA+ID4gKyAgaWYgKG1MYXN0R2V0Q2hhciA+PSAwKSB7DQo+ID4gPiArICAgIHJldHVy biBUUlVFOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKG1IYXZlRGJjbikgew0K PiA+ID4gKyAgICBVSU5UOCAgICBCdWZmZXI7DQo+ID4gPiArICAgIFNCSV9SRVQgIFJldDsNCj4g PiA+ICsNCj4gPiA+ICsgICAgUmV0ID0gU2JpQ2FsbCAoDQo+ID4gPiArICAgICAgICAgICAgU0JJ X0VYVF9EQkNOLA0KPiA+ID4gKyAgICAgICAgICAgIFNCSV9FWFRfREJDTl9SRUFELA0KPiA+ID4g KyAgICAgICAgICAgIDMsDQo+ID4gPiArICAgICAgICAgICAgMSwNCj4gPiA+ICsgICAgICAgICAg ICAoKFVJTlROKSZCdWZmZXIpLA0KPiA+ID4gKyAgICAgICAgICAgIDANCj4gPiA+ICsgICAgICAg ICAgICApOw0KPiA+ID4gKyAgICBpZiAoKFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3IpID09IEVG SV9TVUNDRVNTKSAmJg0KPiA+ID4gKyAgICAgICAgKFJldC5WYWx1ZSA9PSAxKSkNCj4gPiA+ICsg ICAgew0KPiA+ID4gKyAgICAgIG1MYXN0R2V0Q2hhciA9IEJ1ZmZlcjsNCj4gPiA+ICsgICAgfQ0K PiA+ID4gKyAgfSBlbHNlIGlmIChtSGF2ZUxlZ2FjeUdldGNoYXIpIHsNCj4gPiA+ICsgICAgbUxh c3RHZXRDaGFyID0gKElOVDY0KVNiaUNhbGwgKFNCSV9FWFRfMF8xX0NPTlNPTEVfR0VUQ0hBUiwg MCwNCj4gPiA+ICsgMCkuRXJyb3I7ICB9DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4gbUxhc3RH ZXRDaGFyID49IDA7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgU2V0 cyB0aGUgY29udHJvbCBiaXRzIG9uIGEgc2VyaWFsIGRldmljZS4NCj4gPiA+ICsNCj4gPiA+ICsg IEBwYXJhbSBDb250cm9sICAgICAgICAgICAgICAgIFNldHMgdGhlIGJpdHMgb2YgQ29udHJvbCB0 aGF0IGFyZSBzZXR0YWJsZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NF U1MgICAgICAgIFRoZSBuZXcgY29udHJvbCBiaXRzIHdlcmUgc2V0IG9uIHRoZSBzZXJpYWwgZGV2 aWNlLg0KPiA+ID4gKyAgQHJldHZhbCBSRVRVUk5fVU5TVVBQT1JURUQgICAgVGhlIHNlcmlhbCBk ZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbi4NCj4gPiA+ICsgIEByZXR2YWwg UkVUVVJOX0RFVklDRV9FUlJPUiAgIFRoZSBzZXJpYWwgZGV2aWNlIGlzIG5vdCBmdW5jdGlvbmlu ZyBjb3JyZWN0bHkuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArUkVUVVJOX1NUQVRVUw0K PiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1NlcmlhbFBvcnRTZXRDb250cm9sICgNCj4gPiA+ICsgIElO IFVJTlQzMiAgQ29udHJvbA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBS RVRVUk5fU1VDQ0VTUzsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBS ZXRyaWV2ZSB0aGUgc3RhdHVzIG9mIHRoZSBjb250cm9sIGJpdHMgb24gYSBzZXJpYWwgZGV2aWNl Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtIENvbnRyb2wgICAgICAgICAgICAgICAgQSBwb2lu dGVyIHRvIHJldHVybiB0aGUgY3VycmVudCBjb250cm9sIHNpZ25hbHMgZnJvbSB0aGUgc2VyaWFs IGRldmljZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgICAgICAg IFRoZSBjb250cm9sIGJpdHMgd2VyZSByZWFkIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4g PiArICBAcmV0dmFsIFJFVFVSTl9VTlNVUFBPUlRFRCAgICBUaGUgc2VyaWFsIGRldmljZSBkb2Vz IG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLg0KPiA+ID4gKyAgQHJldHZhbCBSRVRVUk5fREVW SUNFX0VSUk9SICAgVGhlIHNlcmlhbCBkZXZpY2UgaXMgbm90IGZ1bmN0aW9uaW5nIGNvcnJlY3Rs eS4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtSRVRVUk5fU1RBVFVTDQo+ID4gPiArRUZJ QVBJDQo+ID4gPiArU2VyaWFsUG9ydEdldENvbnRyb2wgKA0KPiA+ID4gKyAgT1VUIFVJTlQzMiAg KkNvbnRyb2wNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICAqQ29udHJvbCA9IDA7DQo+ ID4gPiArICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4g Ky8qKg0KPiA+ID4gKyAgU2V0cyB0aGUgYmF1ZCByYXRlLCByZWNlaXZlIEZJRk8gZGVwdGgsIHRy YW5zbWl0L3JlY2VpY2UgdGltZQ0KPiA+ID4gK291dCwgcGFyaXR5LA0KPiA+ID4gKyAgZGF0YSBi aXRzLCBhbmQgc3RvcCBiaXRzIG9uIGEgc2VyaWFsIGRldmljZS4NCj4gPiA+ICsNCj4gPiA+ICsg IEBwYXJhbSBCYXVkUmF0ZSAgICAgICAgICAgVGhlIHJlcXVlc3RlZCBiYXVkIHJhdGUuIEEgQmF1 ZFJhdGUgdmFsdWUgb2YgMCB3aWxsIHVzZSB0aGUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGV2aWNlJ3MgZGVmYXVsdCBpbnRlcmZhY2Ugc3BlZWQuDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4N Cj4gPiA+ICsgIEBwYXJhbSBSZXZlaXZlRmlmb0RlcHRoICAgVGhlIHJlcXVlc3RlZCBkZXB0aCBv ZiB0aGUgRklGTyBvbiB0aGUgcmVjZWl2ZSBzaWRlIG9mIHRoZQ0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXJpYWwgaW50ZXJmYWNlLiBBIFJlY2VpdmVGaWZvRGVwdGggdmFs dWUgb2YgMCB3aWxsIHVzZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUg ZGV2aWNlJ3MgZGVmYXVsdCBGSUZPIGRlcHRoLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPbiBvdXRwdXQsIHRoZSB2YWx1ZSBhY3R1YWxseSBzZXQuDQo+ID4gPiArICBAcGFy YW0gVGltZW91dCAgICAgICAgICAgIFRoZSByZXF1ZXN0ZWQgdGltZSBvdXQgZm9yIGEgc2luZ2xl IGNoYXJhY3RlciBpbiBtaWNyb3NlY29uZHMuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFRoaXMgdGltZW91dCBhcHBsaWVzIHRvIGJvdGggdGhlIHRyYW5zbWl0IGFuZCByZWNl aXZlIHNpZGUgb2YgdGhlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVy ZmFjZS4gQSBUaW1lb3V0IHZhbHVlIG9mIDAgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1bHQg dGltZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgdmFsdWUuDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVh bGx5IHNldC4NCj4gPiA+ICsgIEBwYXJhbSBQYXJpdHkgICAgICAgICAgICAgVGhlIHR5cGUgb2Yg cGFyaXR5IHRvIHVzZSBvbiB0aGlzIHNlcmlhbCBkZXZpY2UuIEEgUGFyaXR5IHZhbHVlIG9mDQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRQYXJpdHkgd2lsbCB1c2Ug dGhlIGRldmljZSdzIGRlZmF1bHQgcGFyaXR5IHZhbHVlLg0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSB2YWx1ZSBhY3R1YWxseSBzZXQuDQo+ID4gPiAr ICBAcGFyYW0gRGF0YUJpdHMgICAgICAgICAgIFRoZSBudW1iZXIgb2YgZGF0YSBiaXRzIHRvIHVz ZSBvbiB0aGUgc2VyaWFsIGRldmljZS4gQSBEYXRhQml0cw0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2YXVsZSBvZiAwIHdpbGwgdXNlIHRoZSBkZXZpY2UncyBkZWZhdWx0IGRh dGEgYml0IHNldHRpbmcuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91 dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gPiA+ICsgIEBwYXJhbSBTdG9wQml0cyAg ICAgICAgICAgVGhlIG51bWJlciBvZiBzdG9wIGJpdHMgdG8gdXNlIG9uIHRoaXMgc2VyaWFsIGRl dmljZS4gQSBTdG9wQml0cw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1 ZSBvZiBEZWZhdWx0U3RvcEJpdHMgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1bHQgbnVtYmVy IG9mDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AgYml0cy4NCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFs bHkgc2V0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAg ICAgIFRoZSBuZXcgYXR0cmlidXRlcyB3ZXJlIHNldCBvbiB0aGUgc2VyaWFsIGRldmljZS4NCj4g PiA+ICsgIEByZXR2YWwgUkVUVVJOX1VOU1VQUE9SVEVEICAgICAgICBUaGUgc2VyaWFsIGRldmlj ZSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLg0KPiA+ID4gKyAgQHJldHZhbCBSRVRV Uk5fSU5WQUxJRF9QQVJBTUVURVIgIE9uZSBvciBtb3JlIG9mIHRoZSBhdHRyaWJ1dGVzIGhhcyBh biB1bnN1cHBvcnRlZCB2YWx1ZS4NCj4gPiA+ICsgIEByZXR2YWwgUkVUVVJOX0RFVklDRV9FUlJP UiAgICAgICBUaGUgc2VyaWFsIGRldmljZSBpcyBub3QgZnVuY3Rpb25pbmcgY29ycmVjdGx5Lg0K PiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiA+ICtFRklBUEkN Cj4gPiA+ICtTZXJpYWxQb3J0U2V0QXR0cmlidXRlcyAoDQo+ID4gPiArICBJTiBPVVQgVUlOVDY0 ICAgICAgICAgICAgICAqQmF1ZFJhdGUsDQo+ID4gPiArICBJTiBPVVQgVUlOVDMyICAgICAgICAg ICAgICAqUmVjZWl2ZUZpZm9EZXB0aCwNCj4gPiA+ICsgIElOIE9VVCBVSU5UMzIgICAgICAgICAg ICAgICpUaW1lb3V0LA0KPiA+ID4gKyAgSU4gT1VUIEVGSV9QQVJJVFlfVFlQRSAgICAgKlBhcml0 eSwNCj4gPiA+ICsgIElOIE9VVCBVSU5UOCAgICAgICAgICAgICAgICpEYXRhQml0cywNCj4gPiA+ ICsgIElOIE9VVCBFRklfU1RPUF9CSVRTX1RZUEUgICpTdG9wQml0cw0KPiA+ID4gKyAgKQ0KPiA+ ID4gK3sNCj4gPiA+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gPiA+ICt9DQo+ID4gPiBk aWZmIC0tZ2l0DQo+ID4gPiBhL01kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExp YlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaQ0KPiA+ID4gYlMNCj4gPiA+IGJpLmMNCj4gPiA+ IGIvTWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1NlY1BlaVJpc2NW U2VyaWFsUG9ydExpDQo+ID4gPiBiUw0KPiA+ID4gYmkuYw0KPiA+ID4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uMGFkNTkzMWJlM2FlDQo+ID4gPiAtLS0g L2Rldi9udWxsDQo+ID4gPiArKysgYi9NZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBv cnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQbw0KPiA+ID4gKysrIHJ0DQo+ID4gPiArKysgTGkN Cj4gPiA+ICsrKyBiU2JpLmMNCj4gPiA+IEBAIC0wLDAgKzEsMjMzIEBADQo+ID4gPiArLyoqIEBm aWxlDQo+ID4gPiArICBTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29sZS4N Cj4gPiA+ICsNCj4gPiA+ICsgIE1lYW50IGZvciBTRUMgYW5kIFBFSSAoWElQKSBlbnZpcm9ubWVu dHMuDQo+ID4gPiArDQo+ID4gPiArICBEdWUgdG8gbGltaXRhdGlvbnMgb2YgU0JJIGNvbnNvbGUg aW50ZXJmYWNlIGFuZCBYSVAgZW52aXJvbm1lbnRzDQo+ID4gPiArIChvbiB1c2Ugb2YgZ2xvYmFs cyksIHRoaXMgbGlicmFyeSBpbnN0YW5jZSBkb2VzIG5vdCBpbXBsZW1lbnQNCj4gPiA+ICsgcmVh ZGluZyAgYW5kIHBvbGxpbmcgdGhlIHNlcmlhbCBwb3J0LiBTZWUNCj4gPiA+ICsgUHJlUGlEeGVT ZXJpYWxQb3J0TGliUmlzY1ZTYmkgZm9yICB0aGUgZnVsbC1mZWF0dXJlZCB2YXJpYW50IG1lYW50 IGZvciBQcmVQaSBhbmQgRFhFIGVudmlyb25tZW50cy4NCj4gPiA+ICsNCj4gPiA+ICsgIENvcHly aWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS Pg0KPiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQN Cj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICsNCj4gPiA+ICsjaW5jbHVkZSA8QmFzZS5oPg0K PiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1NlcmlhbFBvcnRMaWIuaD4NCj4gPiA+ICsjaW5jbHVk ZSA8TGlicmFyeS9CYXNlUmlzY1ZTYmlMaWIuaD4NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ ICsgIEluaXRpYWxpemUgdGhlIHNlcmlhbCBkZXZpY2UgaGFyZHdhcmUuDQo+ID4gPiArDQo+ID4g PiArICBJZiBubyBpbml0aWFsaXphdGlvbiBpcyByZXF1aXJlZCwgdGhlbiByZXR1cm4gUkVUVVJO X1NVQ0NFU1MuDQo+ID4gPiArICBJZiB0aGUgc2VyaWFsIGRldmljZSB3YXMgc3VjY2Vzc2Z1bGx5 IGluaXRpYWxpemVkLCB0aGVuIHJldHVybiBSRVRVUk5fU1VDQ0VTUy4NCj4gPiA+ICsgIElmIHRo ZSBzZXJpYWwgZGV2aWNlIGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZCwgdGhlbiByZXR1cm4gUkVU VVJOX0RFVklDRV9FUlJPUi4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NF U1MgICAgICAgIFRoZSBzZXJpYWwgZGV2aWNlIHdhcyBpbml0aWFsaXplZC4NCj4gPiA+ICsgIEBy ZXR2YWwgUkVUVVJOX0RFVklDRV9FUlJPUiAgIFRoZSBzZXJpYWwgZGV2aWNlIGNvdWxkIG5vdCBi ZSBpbml0aWFsaXplZC4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtSRVRVUk5fU1RBVFVT DQo+ID4gPiArRUZJQVBJDQo+ID4gPiArU2VyaWFsUG9ydEluaXRpYWxpemUgKA0KPiA+ID4gKyAg Vk9JRA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VT UzsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBXcml0ZSBkYXRhIGZy b20gYnVmZmVyIHRvIHNlcmlhbCBkZXZpY2UuDQo+ID4gPiArDQo+ID4gPiArICBXcml0ZXMgTnVt YmVyT2ZCeXRlcyBkYXRhIGJ5dGVzIGZyb20gQnVmZmVyIHRvIHRoZSBzZXJpYWwgZGV2aWNlLg0K PiA+ID4gKyAgVGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIHRvIHRoZSBzZXJp YWwgZGV2aWNlIGlzIHJldHVybmVkLg0KPiA+ID4gKyAgSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBs ZXNzIHRoYW4gTnVtYmVyT2ZCeXRlcywgdGhlbiB0aGUgd3JpdGUgb3BlcmF0aW9uIGZhaWxlZC4N Cj4gPiA+ICsgIElmIEJ1ZmZlciBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKyAgSWYg TnVtYmVyT2ZCeXRlcyBpcyB6ZXJvLCB0aGVuIHJldHVybiAwLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHBhcmFtICBCdWZmZXIgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBkYXRhIGJ1ZmZlciB0 byBiZSB3cml0dGVuLg0KPiA+ID4gKyAgQHBhcmFtICBOdW1iZXJPZkJ5dGVzICAgIFRoZSBudW1i ZXIgb2YgYnl0ZXMgdG8gd3JpdHRlbiB0byB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiA+ICsNCj4g PiA+ICsgIEByZXR2YWwgMCAgICAgICAgICAgICAgICBOdW1iZXJPZkJ5dGVzIGlzIDAuDQo+ID4g PiArICBAcmV0dmFsID4wICAgICAgICAgICAgICAgVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVu IHRvIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg IElmIHRoaXMgdmFsdWUgaXMgbGVzcyB0aGFuIE51bWJlck9mQnl0ZXMsIHRoZW4gdGhlIHdyaXRl IG9wZXJhdGlvbiBmYWlsZWQuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4NCj4g PiA+ICtFRklBUEkNCj4gPiA+ICtTZXJpYWxQb3J0V3JpdGUgKA0KPiA+ID4gKyAgSU4gVUlOVDgg ICpCdWZmZXIsDQo+ID4gPiArICBJTiBVSU5UTiAgTnVtYmVyT2ZCeXRlcw0KPiA+ID4gKyAgKQ0K PiA+ID4gK3sNCj4gPiA+ICsgIFNCSV9SRVQgIFJldDsNCj4gPiA+ICsgIFVJTlROICAgIEluZGV4 Ow0KPiA+ID4gKw0KPiA+ID4gKyAgUmV0ID0gU2JpQ2FsbCAoU0JJX0VYVF9CQVNFLCBTQklfRVhU X0JBU0VfUFJPQkVfRVhULCAxLA0KPiA+ID4gKyBTQklfRVhUX0RCQ04pOyAgaWYgKChUcmFuc2xh dGVFcnJvciAoUmV0LkVycm9yKSA9PSBFRklfU1VDQ0VTUykgJiYNCj4gPiA+ICsgICAgICAoUmV0 LlZhbHVlICE9IDApKQ0KPiA+ID4gKyAgew0KPiA+ID4gKyAgICBSZXQgPSBTYmlDYWxsICgNCj4g PiA+ICsgICAgICAgICAgICBTQklfRVhUX0RCQ04sDQo+ID4gPiArICAgICAgICAgICAgU0JJX0VY VF9EQkNOX1dSSVRFLA0KPiA+ID4gKyAgICAgICAgICAgIDMsDQo+ID4gPiArICAgICAgICAgICAg TnVtYmVyT2ZCeXRlcywNCj4gPiA+ICsgICAgICAgICAgICAoKFVJTlROKUJ1ZmZlciksDQo+ID4g PiArICAgICAgICAgICAgMA0KPiA+ID4gKyAgICAgICAgICAgICk7DQo+ID4gPiArICAgIGlmIChU cmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKSAhPSBFRklfU1VDQ0VTUykgew0KPiA+ID4gKyAgICAg IHJldHVybiAwOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArDQo+ID4gPiArICAgIHJldHVybiBSZXQu VmFsdWU7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBSZXQgPSBTYmlDYWxsIChTQklf RVhUX0JBU0UsIFNCSV9FWFRfQkFTRV9QUk9CRV9FWFQsIDEsDQo+ID4gPiArIFNCSV9FWFRfMF8x X0NPTlNPTEVfUFVUQ0hBUik7ICBpZiAoKFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3IpID09IEVG SV9TVUNDRVNTKSAmJg0KPiA+ID4gKyAgICAgIChSZXQuVmFsdWUgIT0gMCkpDQo+ID4gPiArICB7 DQo+ID4gPiArICAgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IE51bWJlck9mQnl0ZXM7IEluZGV4 KyspIHsNCj4gPiA+ICsgICAgICBTYmlDYWxsIChTQklfRVhUXzBfMV9DT05TT0xFX1BVVENIQVIs IDAsIDEsIEJ1ZmZlcltJbmRleF0pOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArDQo+ID4gPiArICAg IHJldHVybiBJbmRleDsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIC8qDQo+ID4gPiAr ICAgKiBOZWl0aGVyIERCQ04gb3IgbGVnYWN5IGV4dGVuc2lvbiB3ZXJlIHByZXNlbnQuDQo+ID4g PiArICAgKi8NCj4gPiA+ICsgIHJldHVybiBOdW1iZXJPZkJ5dGVzOw0KPiA+ID4gK30NCj4gPiA+ ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlYWQgZGF0YSBmcm9tIHNlcmlhbCBkZXZpY2UgYW5k IHNhdmUgdGhlIGRhdGFzIGluIGJ1ZmZlci4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlYWRzIE51bWJl ck9mQnl0ZXMgZGF0YSBieXRlcyBmcm9tIGEgc2VyaWFsIGRldmljZSBpbnRvIHRoZQ0KPiA+ID4g KyBidWZmZXIgc3BlY2lmaWVkIGJ5IEJ1ZmZlci4gVGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxs eSByZWFkIGlzIHJldHVybmVkLg0KPiA+ID4gKyAgSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBsZXNz IHRoYW4gTnVtYmVyT2ZCeXRlcywgdGhlbiB0aGUgcmVzdCBvcGVyYXRpb24gZmFpbGVkLg0KPiA+ ID4gKyAgSWYgQnVmZmVyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gPiArICBJZiBOdW1i ZXJPZkJ5dGVzIGlzIHplcm8sIHRoZW4gcmV0dXJuIDAuDQo+ID4gPiArDQo+ID4gPiArICBAcGFy YW0gIEJ1ZmZlciAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGRhdGEgYnVmZmVyIHRvIHN0 b3JlIHRoZSBkYXRhIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiA+ICsgIEBwYXJh bSAgTnVtYmVyT2ZCeXRlcyAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdoaWNoIHdpbGwgYmUgcmVh ZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgMCAgICAgICAgICAgICAgICBSZWFkIGRhdGEg ZmFpbGVkOyBObyBkYXRhIGlzIHRvIGJlIHJlYWQuDQo+ID4gPiArICBAcmV0dmFsID4wICAgICAg ICAgICAgICAgVGhlIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgcmVhZCBmcm9tIHNlcmlhbCBkZXZp Y2UuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4NCj4gPiA+ICtFRklBUEkNCj4g PiA+ICtTZXJpYWxQb3J0UmVhZCAoDQo+ID4gPiArICBPVVQgVUlOVDggICpCdWZmZXIsDQo+ID4g PiArICBJTiAgVUlOVE4gIE51bWJlck9mQnl0ZXMNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4g PiArICByZXR1cm4gMDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBQ b2xscyBhIHNlcmlhbCBkZXZpY2UgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBkYXRhIHdhaXRpbmcg dG8gYmUgcmVhZC4NCj4gPiA+ICsNCj4gPiA+ICsgIFBvbGxzIGEgc2VyaWFsIGRldmljZSB0byBz ZWUgaWYgdGhlcmUgaXMgYW55IGRhdGEgd2FpdGluZyB0byBiZSByZWFkLg0KPiA+ID4gKyAgSWYg dGhlcmUgaXMgZGF0YSB3YWl0aW5nIHRvIGJlIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZSwg dGhlbiBUUlVFIGlzIHJldHVybmVkLg0KPiA+ID4gKyAgSWYgdGhlcmUgaXMgbm8gZGF0YSB3YWl0 aW5nIHRvIGJlIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZSwgdGhlbiBGQUxTRSBpcyByZXR1 cm5lZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICAgICBEYXRhIGlz IHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiA+ID4gKyAgQHJl dHZhbCBGQUxTRSAgICAgICAgICAgIFRoZXJlIGlzIG5vIGRhdGEgd2FpdGluZyB0byBiZSByZWFk IGZyb20gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArQk9P TEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1NlcmlhbFBvcnRQb2xsICgNCj4gPiA+ICsgIFZP SUQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiAr fQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgU2V0cyB0aGUgY29udHJvbCBiaXRzIG9u IGEgc2VyaWFsIGRldmljZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSBDb250cm9sICAgICAg ICAgICAgICAgIFNldHMgdGhlIGJpdHMgb2YgQ29udHJvbCB0aGF0IGFyZSBzZXR0YWJsZS4NCj4g PiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgICAgICAgIFRoZSBuZXcgY29u dHJvbCBiaXRzIHdlcmUgc2V0IG9uIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiA+ID4gKyAgQHJldHZh bCBSRVRVUk5fVU5TVVBQT1JURUQgICAgVGhlIHNlcmlhbCBkZXZpY2UgZG9lcyBub3Qgc3VwcG9y dCB0aGlzIG9wZXJhdGlvbi4NCj4gPiA+ICsgIEByZXR2YWwgUkVUVVJOX0RFVklDRV9FUlJPUiAg IFRoZSBzZXJpYWwgZGV2aWNlIGlzIG5vdCBmdW5jdGlvbmluZyBjb3JyZWN0bHkuDQo+ID4gPiAr DQo+ID4gPiArKiovDQo+ID4gPiArUkVUVVJOX1NUQVRVUw0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4g K1NlcmlhbFBvcnRTZXRDb250cm9sICgNCj4gPiA+ICsgIElOIFVJTlQzMiAgQ29udHJvbA0KPiA+ ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gPiA+ ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZXRyaWV2ZSB0aGUgc3RhdHVzIG9m IHRoZSBjb250cm9sIGJpdHMgb24gYSBzZXJpYWwgZGV2aWNlLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHBhcmFtIENvbnRyb2wgICAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHJldHVybiB0aGUgY3Vy cmVudCBjb250cm9sIHNpZ25hbHMgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiA+ICsNCj4g PiA+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgICAgICAgIFRoZSBjb250cm9sIGJpdHMgd2Vy ZSByZWFkIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gPiArICBAcmV0dmFsIFJFVFVSTl9V TlNVUFBPUlRFRCAgICBUaGUgc2VyaWFsIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3Bl cmF0aW9uLg0KPiA+ID4gKyAgQHJldHZhbCBSRVRVUk5fREVWSUNFX0VSUk9SICAgVGhlIHNlcmlh bCBkZXZpY2UgaXMgbm90IGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4NCj4gPiA+ICsNCj4gPiA+ICsq Ki8NCj4gPiA+ICtSRVRVUk5fU1RBVFVTDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArU2VyaWFsUG9y dEdldENvbnRyb2wgKA0KPiA+ID4gKyAgT1VUIFVJTlQzMiAgKkNvbnRyb2wNCj4gPiA+ICsgICkN Cj4gPiA+ICt7DQo+ID4gPiArICAqQ29udHJvbCA9IDA7DQo+ID4gPiArICByZXR1cm4gUkVUVVJO X1NVQ0NFU1M7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgU2V0cyB0 aGUgYmF1ZCByYXRlLCByZWNlaXZlIEZJRk8gZGVwdGgsIHRyYW5zbWl0L3JlY2VpY2UgdGltZQ0K PiA+ID4gK291dCwgcGFyaXR5LA0KPiA+ID4gKyAgZGF0YSBiaXRzLCBhbmQgc3RvcCBiaXRzIG9u IGEgc2VyaWFsIGRldmljZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSBCYXVkUmF0ZSAgICAg ICAgICAgVGhlIHJlcXVlc3RlZCBiYXVkIHJhdGUuIEEgQmF1ZFJhdGUgdmFsdWUgb2YgMCB3aWxs IHVzZSB0aGUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlJ3MgZGVm YXVsdCBpbnRlcmZhY2Ugc3BlZWQuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gPiA+ICsgIEBwYXJhbSBSZXZl aXZlRmlmb0RlcHRoICAgVGhlIHJlcXVlc3RlZCBkZXB0aCBvZiB0aGUgRklGTyBvbiB0aGUgcmVj ZWl2ZSBzaWRlIG9mIHRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJp YWwgaW50ZXJmYWNlLiBBIFJlY2VpdmVGaWZvRGVwdGggdmFsdWUgb2YgMCB3aWxsIHVzZQ0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGV2aWNlJ3MgZGVmYXVsdCBGSUZP IGRlcHRoLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRo ZSB2YWx1ZSBhY3R1YWxseSBzZXQuDQo+ID4gPiArICBAcGFyYW0gVGltZW91dCAgICAgICAgICAg IFRoZSByZXF1ZXN0ZWQgdGltZSBvdXQgZm9yIGEgc2luZ2xlIGNoYXJhY3RlciBpbiBtaWNyb3Nl Y29uZHMuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdGltZW91dCBh cHBsaWVzIHRvIGJvdGggdGhlIHRyYW5zbWl0IGFuZCByZWNlaXZlIHNpZGUgb2YgdGhlDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS4gQSBUaW1lb3V0IHZhbHVl IG9mIDAgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1bHQgdGltZQ0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvdXQgdmFsdWUuDQo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gPiA+ICsgIEBw YXJhbSBQYXJpdHkgICAgICAgICAgICAgVGhlIHR5cGUgb2YgcGFyaXR5IHRvIHVzZSBvbiB0aGlz IHNlcmlhbCBkZXZpY2UuIEEgUGFyaXR5IHZhbHVlIG9mDQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIERlZmF1bHRQYXJpdHkgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1bHQg cGFyaXR5IHZhbHVlLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRw dXQsIHRoZSB2YWx1ZSBhY3R1YWxseSBzZXQuDQo+ID4gPiArICBAcGFyYW0gRGF0YUJpdHMgICAg ICAgICAgIFRoZSBudW1iZXIgb2YgZGF0YSBiaXRzIHRvIHVzZSBvbiB0aGUgc2VyaWFsIGRldmlj ZS4gQSBEYXRhQml0cw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXVsZSBv ZiAwIHdpbGwgdXNlIHRoZSBkZXZpY2UncyBkZWZhdWx0IGRhdGEgYml0IHNldHRpbmcuDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVh bGx5IHNldC4NCj4gPiA+ICsgIEBwYXJhbSBTdG9wQml0cyAgICAgICAgICAgVGhlIG51bWJlciBv ZiBzdG9wIGJpdHMgdG8gdXNlIG9uIHRoaXMgc2VyaWFsIGRldmljZS4gQSBTdG9wQml0cw0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBEZWZhdWx0U3RvcEJpdHMg d2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1bHQgbnVtYmVyIG9mDQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0b3AgYml0cy4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgICAgIFRoZSBuZXcgYXR0cmlidXRl cyB3ZXJlIHNldCBvbiB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiA+ICsgIEByZXR2YWwgUkVUVVJO X1VOU1VQUE9SVEVEICAgICAgICBUaGUgc2VyaWFsIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHRo aXMgb3BlcmF0aW9uLg0KPiA+ID4gKyAgQHJldHZhbCBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIg IE9uZSBvciBtb3JlIG9mIHRoZSBhdHRyaWJ1dGVzIGhhcyBhbiB1bnN1cHBvcnRlZCB2YWx1ZS4N Cj4gPiA+ICsgIEByZXR2YWwgUkVUVVJOX0RFVklDRV9FUlJPUiAgICAgICBUaGUgc2VyaWFsIGRl dmljZSBpcyBub3QgZnVuY3Rpb25pbmcgY29ycmVjdGx5Lg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0K PiA+ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtTZXJpYWxQb3J0U2V0 QXR0cmlidXRlcyAoDQo+ID4gPiArICBJTiBPVVQgVUlOVDY0ICAgICAgICAgICAgICAqQmF1ZFJh dGUsDQo+ID4gPiArICBJTiBPVVQgVUlOVDMyICAgICAgICAgICAgICAqUmVjZWl2ZUZpZm9EZXB0 aCwNCj4gPiA+ICsgIElOIE9VVCBVSU5UMzIgICAgICAgICAgICAgICpUaW1lb3V0LA0KPiA+ID4g KyAgSU4gT1VUIEVGSV9QQVJJVFlfVFlQRSAgICAgKlBhcml0eSwNCj4gPiA+ICsgIElOIE9VVCBV SU5UOCAgICAgICAgICAgICAgICpEYXRhQml0cywNCj4gPiA+ICsgIElOIE9VVCBFRklfU1RPUF9C SVRTX1RZUEUgICpTdG9wQml0cw0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVy biBSRVRVUk5fU1VDQ0VTUzsNCj4gPiA+ICt9DQo+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiBhL01k ZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZT ZXJpYWxQbw0KPiA+ID4gcnQNCj4gPiA+IExpYlNiaS51bmkNCj4gPiA+IGIvTWRlUGtnL0xpYnJh cnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvDQo+ ID4gPiBydA0KPiA+ID4gTGliU2JpLnVuaQ0KPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g PiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uN2IyMmNhYTVhMDkwDQo+ID4gPiAtLS0gL2Rldi9udWxs DQo+ID4gPiArKysgYi9NZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNi aS9QcmVQaUR4ZVJpc2NWU2VyaQ0KPiA+ID4gKysrIGFsDQo+ID4gPiArKysgUG8NCj4gPiA+ICsr KyBydExpYlNiaS51bmkNCj4gPiA+IEBAIC0wLDAgKzEsMTYgQEANCj4gPiA+ICsvLyAvKiogQGZp bGUNCj4gPiA+ICsvLyBTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29sZS4N Cj4gPiA+ICsvLw0KPiA+ID4gKy8vIFNlcmlhbCBQb3J0IExpYnJhcnkgYmFja2VkIGJ5IFNCSSBj b25zb2xlLg0KPiA+ID4gKy8vDQo+ID4gPiArLy8gQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiArLy8gLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQgLy8gLy8gKiovDQo+ID4gPiAr DQo+ID4gPiArDQo+ID4gPiArI3N0cmluZyBTVFJfTU9EVUxFX0FCU1RSQUNUICAgICAgICAgICAg ICNsYW5ndWFnZSBlbi1VUyAiU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJIGNvbnNv bGUiDQo+ID4gPiArDQo+ID4gPiArI3N0cmluZyBTVFJfTU9EVUxFX0RFU0NSSVBUSU9OICAgICAg ICAgICNsYW5ndWFnZSBlbi1VUyAiU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJIGNv bnNvbGUuIg0KPiA+ID4gKw0KPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4gYS9NZGVQa2cvTGlicmFy eS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGkNCj4g PiA+IGJTDQo+ID4gPiBiaS51bmkNCj4gPiA+IGIvTWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZT ZXJpYWxQb3J0TGliU2JpL1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpDQo+ID4gPiBiUw0KPiA+ID4g YmkudW5pDQo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAw MDAwLi43YjIyY2FhNWEwOTANCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL01kZVBr Zy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBv DQo+ID4gPiArKysgcnQNCj4gPiA+ICsrKyBMaWJTYmkudW5pDQo+ID4gPiBAQCAtMCwwICsxLDE2 IEBADQo+ID4gPiArLy8gLyoqIEBmaWxlDQo+ID4gPiArLy8gU2VyaWFsIFBvcnQgTGlicmFyeSBi YWNrZWQgYnkgU0JJIGNvbnNvbGUuDQo+ID4gPiArLy8NCj4gPiA+ICsvLyBTZXJpYWwgUG9ydCBM aWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29sZS4NCj4gPiA+ICsvLw0KPiA+ID4gKy8vIENvcHly aWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS Pg0KPiA+ID4gKy8vIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50IC8vIC8vICoqLw0KPiA+ID4gKw0KPiA+ID4gKw0KPiA+ID4gKyNzdHJpbmcgU1RSX01PRFVM RV9BQlNUUkFDVCAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIlNlcmlhbCBQb3J0IExpYnJh cnkgYmFja2VkIGJ5IFNCSSBjb25zb2xlIg0KPiA+ID4gKw0KPiA+ID4gKyNzdHJpbmcgU1RSX01P RFVMRV9ERVNDUklQVElPTiAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIlNlcmlhbCBQb3J0IExp YnJhcnkgYmFja2VkIGJ5IFNCSSBjb25zb2xlLiINCj4gPiA+ICsNCj4gPiA+IC0tDQo+ID4gPiAy LjI1LjENCg0K