From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx.groups.io with SMTP id smtpd.web10.31275.1680195716676164959 for ; Thu, 30 Mar 2023 10:01:56 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=gPUhNCq9; spf=pass (domain: intel.com, ip: 192.55.52.88, 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=1680195716; x=1711731716; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=l4Lu1M8qGJWmjsclBYHzK/MaopyLZ2dHvjJo5NpjDvQ=; b=gPUhNCq9Tej4tdzpK7hIlr5aqMQ3a+GjsgCEaC2TAYbfG0HEW0NmmS2I iY79Mxmp5QB1dfbYI3loAVQGzxFlR19F5M/i2MWiDpPEb8FVUNQyVxgbI cRWYuuW5TvKS+VrcjXOWaTGqRndQhgz2Y68W1NqBtIMLOLt6qgK+M2+OO LNeRLrHUGEcvNEAj5AI4Ug0w5cikpBOILdnABaWbukzKcA7quiJqbG5Is yHNQvPjURbhgtY8UuvtHzaIhPbykV1WuKefzH9DTmaMvI+l9Wmt2h5Gx7 TsKLOP+OxRky3y2NGLyMjcpLRMEpZW4Ji9uEmYn01GhUvFkSLNDGn7+jV Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10665"; a="369011727" X-IronPort-AV: E=Sophos;i="5.98,305,1673942400"; d="scan'208";a="369011727" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Mar 2023 10:01:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10665"; a="774076421" X-IronPort-AV: E=Sophos;i="5.98,305,1673942400"; d="scan'208";a="774076421" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by FMSMGA003.fm.intel.com with ESMTP; 30 Mar 2023 10:01:55 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) 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, 30 Mar 2023 10:01:55 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx611.amr.corp.intel.com (10.22.229.24) 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, 30 Mar 2023 10:01:55 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.44) 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, 30 Mar 2023 10:01:54 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Hne59Of0t3Oqftl5YG1DPXJquEsJ4o5A4UbmktDFaLpvIRc/nHnVHZ8Gw3R7SB4Mn2rLcLZHD8PD481QMXtW2pFHFy30DD+Ho2W/Ti26ThDVG7K6E9FRgxw5drs6oRDgnCojA0gouCFxBfA1/5+yueRic0cEjH2aWh5LGdSgdz1JtHaS17U8KTg1s32rcFZcOT183wtMP9VWsxBW+5eH7Rsd+LyU2Uvhdd+PdC2WQNY2UfMBPWGyo8/e8LEus/uAX5eAWZDsfUmiVdjkHQUerKffsbMLVhbNFdGEmkHC6gZAbhKd0rh6gaRhLifJKhHZyDIQ3zz1yU0BQiy9ASCENQ== 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=l4Lu1M8qGJWmjsclBYHzK/MaopyLZ2dHvjJo5NpjDvQ=; b=oU35B+0g6Em/dOLzx0nDmKkGsLKSusmSMpL3x8v8Oz2G3RFm3F7Avu8bfiSAJUpW8xyFm0sqTj32Q3MlfoSIHugpBvluvPAINIl+DvCOIHhB7fD8VRBv+lKCDNcCPgZPqa/4URIgUG61J531OpEzSDAFGb30ObbZHRT6WtTdog/zawbpAfGoMcQf3Ad36TSnuq3z0y/AZQ/gaCOzZmCVsVBGwHLktzKC9kh42WzD5ZjJIM4mgPQsHVEVGLofpe19Kf2z/Tv9XxZVLxtJsuwiqHpoSzJK+1v+r/QiksdgVog+rjvsNDzQ1ZDz4wwloXU33boBWFHTPQwIU53mvidubg== 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 SA2PR11MB4938.namprd11.prod.outlook.com (2603:10b6:806:fb::14) by DS0PR11MB7630.namprd11.prod.outlook.com (2603:10b6:8:149::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.33; Thu, 30 Mar 2023 17:01:52 +0000 Received: from SA2PR11MB4938.namprd11.prod.outlook.com ([fe80::9ad:892d:ae85:59bc]) by SA2PR11MB4938.namprd11.prod.outlook.com ([fe80::9ad:892d:ae85:59bc%5]) with mapi id 15.20.6222.033; Thu, 30 Mar 2023 17:01:52 +0000 From: "Michael D Kinney" To: "Lin, Benny" , "devel@edk2.groups.io" CC: "Gao, Liming" , "Liu, Zhiguang" , Leif Lindholm , "Andrew Fish (afish@apple.com)" , "Kinney, Michael D" Subject: Re: [PATCH 1/2] MdePkg: Support FDT library. Thread-Topic: [PATCH 1/2] MdePkg: Support FDT library. Thread-Index: AQHZYygFKSzMgXcNaEOX7yMQ/fc0kq8TjAhg Date: Thu, 30 Mar 2023 17:01:52 +0000 Message-ID: References: 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: SA2PR11MB4938:EE_|DS0PR11MB7630:EE_ x-ms-office365-filtering-correlation-id: 49bbd10e-611a-41a1-c29d-08db314075a3 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: gFqlUzP+pO3akKaW9EYFI+YN2Pq1KfPPAQTQ1gnLH3rahgNFQkhFL3xKIx2sH0atKCKil7n0ZYwkZywVf9JukDQGk6jBCM4Dk7roWuMJRSy5yds2rIxJKfjxZq6u1n9xPZECDaCnwMb2O9ubcOB8JtEMMVHKGlchdOd9HF6opxmiwLDJEUL3L2USDIkyl7QdoE1EZg1CIWVwZdmtGMK4Ym520Yd8dvhtNPlSgMVyLTvaUmSRW7xgrPgNwKKZmFQiMjImS/Icn8ig3mWPvOZa1kfhcs4x/65cNkwiZ5jLDfSyS+/oCEZkhAjym9NF55LhYjZBpxLSUaxBcUYk6ExtsO84vOrZp5pTv8OKT2PDkgljGmtQgyAjPaEmRaUSjG1VsI6ex+drZn8CJQCHeG2tz5mIZ87uEApzBvvp8KGqwMlCL/zjkhFczG/QsFNEko9eWvEWsI+O+2Ch6AWIBbZrqFyxX5rFMK8OFLaKzM+APrBNzHLJq0pNMTRrdj3BgCLoH2j/cddFQKmDRohrd0LC7n47BZ+G1d+goiXwt2fTKWGPnV5S4/p/BIOIWX44UlBQUqK4rkm0mvXgC7Pf5LoTKHIISjsTL0LBMuAi0c6RbF1AWI0lHMhxjcQwF7rEAtW5wVzKrfU6nX+BWls/g3wVMg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA2PR11MB4938.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(376002)(39860400002)(346002)(396003)(366004)(136003)(451199021)(316002)(54906003)(186003)(107886003)(53546011)(6506007)(110136005)(9686003)(26005)(83380400001)(122000001)(966005)(7696005)(45080400002)(71200400001)(33656002)(478600001)(8936002)(30864003)(38100700002)(86362001)(5660300002)(38070700005)(55016003)(52536014)(66556008)(66446008)(66946007)(41300700001)(76116006)(8676002)(64756008)(66476007)(2906002)(4326008)(82960400001)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bGZLb01vSjA5a1ZTanhPUitrUkpQQ3NmbkxkcFIzczBoRXN4ZnY3UFpxNDZx?= =?utf-8?B?dXhSMHE2QmZJTlRYNndqdWRaQVJTME5xQWFvckZFY3RHRk8zQmZrL3d5TG1t?= =?utf-8?B?NFlOWmV4TWN0eHZaTGlQdmU1anBXOEViNXBlbCswcUh3UGEva2dQZUovNU9J?= =?utf-8?B?OFliRXZCYzZ0bkd1cW1xM1NZa1ZmK3JxeDV0Z2FNNFA1czJNRXhRdEFKOXpv?= =?utf-8?B?SGRXa2p3ZlVmbWpVWjRDSlZOTG5EbTJwVGZpMmExem5yUDk3TG1xeUZVUW5Q?= =?utf-8?B?OWJ2TnM5U1VtK2E1REFDc0lkYUd4QzdHSEZ3MUJqVWo1TzZPRE1QWGNkYy9s?= =?utf-8?B?Mk84TUR1M2RqM1J2M25Yb2R0TU4venFIRkgxM3FWNWlacU9pUjk1VGM2cmpw?= =?utf-8?B?ZkswY1lWWDd3QWhKdUV6Q0p2WkRBa3lleVp4ZmJxZ0hieW1TYVpPZmRzUUlk?= =?utf-8?B?VzJydXRmRG5PWFUrTXkwd0NNYWNXMTlENmNPSHB6a1FFTnpremJXRCtkUlJ2?= =?utf-8?B?MlNxYzlBZ0tHdFBsUkJMUTRtWXVESEV5MUJOYWVrWnY1UXJBVGJIcVp2eWNa?= =?utf-8?B?ME9xMGh0MVBaMldNMkdRaGxQQTdMZXFMQThWcWFNMXFMOTAzTS9MVHNQZ0pt?= =?utf-8?B?Rm5PbUluZnEyL1RzeFVESlRONDFSK2RldTRaWXBMeEgwZ1JKMExkTHNjZlZv?= =?utf-8?B?M0NEK293QTVFMmhzK1Z1OU04U2dXbjFyRkRpM2EybzEvWWpNWVBSWUNURkJh?= =?utf-8?B?NEZjaFdGSjRjTHpTTGJjbDlOY0RqaC92MlFnTGJGUWkxemJVVm9GdjMzRTlY?= =?utf-8?B?VWZIRVFxTDkwTW14WDZuSGEySFlJd203Uml0NnN0OERJMlhVaUpiRndkV29N?= =?utf-8?B?MmQxL2pNdUdkSVZTVy9qR3Z5MndCWFNWVlpyRFBPWms2WTB0MzBGN2s0Z0J1?= =?utf-8?B?M1Z0Z2txRlpyWXo3Tk55blgyWkZ2ZTN2MFZ3a3ZJK3NOZC9TVmlpMFQ4Smwy?= =?utf-8?B?WHFOdVdUeGNuSmplZjBkdzdTVXc4NXdJdnhGWVBwdmtxeHJQZndYMmVaQ0Qr?= =?utf-8?B?d09zM2tyVmFQMUlXWHBRSFQ1amU0eHV5M3ZRTEM3U3p1WnJUcWlZdVdwT0VG?= =?utf-8?B?TVQ0MXJyU2U3L0lSZmh1M3IwVzhvYnVReWRDNTNoMWo2dTlwekZvaWVSQmJU?= =?utf-8?B?WEd6MVNwaFgwSnpiMlp2NHgyWEN4WFFNaDJKUkphQm0vd1dBNDVQbThXUkZw?= =?utf-8?B?Yzd6RlhOc1ZDaXkxOXBFQk1pQzVuUjZpbjdlRUl0V21TY2VxTkNGMW5vUXdW?= =?utf-8?B?bnpxSVVTSUtrOEVIcTdUdFh1MUlMU1l4Z1NqRTVDcm1Yc1BBeW5JaWtSVEVK?= =?utf-8?B?MnEwQlE3VU5wZ0VhSVRkL1JxdXFmTUVlcnFjeVZ6aUFidmN1dGhKS212Y2RQ?= =?utf-8?B?NHdWb3RlaWpuMklOTzY4VU5WdnNtS3BJampJaHJuVGdwbnFldFJvWG5iMjd0?= =?utf-8?B?YU9kb3FVRzMvU3o2eVo0VkkzQUd3ZVZxVVRYTnlrY241VXkyTFBGd0RvUGM1?= =?utf-8?B?VjhMeGxUQUpOZ0RSVTh4a1RjeEc4RTBoNUVTYmlMZDVWVFJpSnhpUmJhSnRX?= =?utf-8?B?Mis4V1paSkNuT2E5cDZtaTQ5NXBieFBoMHJGRTR5SWtTRFNkVWl5aitDVitF?= =?utf-8?B?K1ZlQlZwS3RiTEcwQS9LR1FqTEJHMnlGdUlpYytDT3lwdXFKSXZxaElBa1Nw?= =?utf-8?B?dnpjRXpGZTJkSXNUSFI3Mmt0TTJ1dWZldWYrNFhwYjd2TThuUWFlcFVZSk9Z?= =?utf-8?B?QmFTN2ZYejlEMjF2MEZGWGZ3WEw0ZmVUY1U1V1NtOUVXMnJ5TzZjMW5JSGxl?= =?utf-8?B?Y1lObC8zWWE4dG5BRWo4WXRHRHRCT2lvK1AyTFNPVzZKVDJPKzZHWXRkT0o2?= =?utf-8?B?aTJ5elc1dExkWk5iL1IxcWE3VXdwZkdvUkZadUtnWnQ1RzVVSTAyUDg1MDZr?= =?utf-8?B?aFZNOU43UzlReVg3SERyMERSNmdVd0ZoT3VXbE5TekFqa3pCc2ZhTWpqMlhI?= =?utf-8?B?R0pPRFhrc1VqL1k1WmxBVDNxTXk0dWp3akRTcWx4RVNuc0RNSlFLTW8rWTZB?= =?utf-8?B?alZ4OUdIb2tpajlJaW9DMUhMSjRPeUF0RXd4OFpObGJndkkzWTUvdlByMlp5?= =?utf-8?B?a2c9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA2PR11MB4938.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 49bbd10e-611a-41a1-c29d-08db314075a3 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Mar 2023 17:01:52.4383 (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: oWcn3bL//qW7eeE8PJ86IDkykMu9duYVDjGeYjGPMAvohuT+8mroqOchNHmTYcMauI/aIloTIervFKfH1sR+MZIgqbblT/yIysxnfc3oSpY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR11MB7630 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 K0xlaWYNCitBbmRyZXcNCg0KRm9yIC5naXRtb2R1bGVzIGFuZCBSZWFkTWUucnN0IGNoYW5nZXMN Cg0KTWlrZQ0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGluLCBC ZW5ueSA8YmVubnkubGluQGludGVsLmNvbT4NCj4gU2VudDogVGh1cnNkYXksIE1hcmNoIDMwLCAy MDIzIDk6NTIgQU0NCj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBMaW4sIEJlbm55 IDxiZW5ueS5saW5AaW50ZWwuY29tPjsgS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5u ZXlAaW50ZWwuY29tPjsgR2FvLCBMaW1pbmcNCj4gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47 IExpdSwgWmhpZ3VhbmcgPHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFtQQVRD SCAxLzJdIE1kZVBrZzogU3VwcG9ydCBGRFQgbGlicmFyeS4NCj4gDQo+IFJFRjogaHR0cHM6Ly9i dWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD00MzkyDQo+IEFkZCBGRFQgc3Vw cG9ydCBpbiBFREsyIGJ5IHN1Ym1vZHVsZSAzcmQgcGFydHkgbGliZmR0DQo+IChodHRwczovL2dp dGh1Yi5jb20vZGV2aWNldHJlZS1vcmcvcHlsaWJmZHQvdHJlZS9tYWluL2xpYmZkdCkNCj4gDQo+ IENjOiBNaWNoYWVsIEQgS2lubmV5IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gQ2M6 IExpbWluZyBHYW8gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4NCj4gQ2M6IFpoaWd1YW5nIExp dSA8emhpZ3VhbmcubGl1QGludGVsLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogQmVubnkgTGluIDxi ZW5ueS5saW5AaW50ZWwuY29tPg0KPiAtLS0NCj4gIC5naXRtb2R1bGVzICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAzICsNCj4gIE1kZVBrZy9JbmNsdWRlL0xpYnJhcnkvRmR0TGli LmggICAgICAgICAgIHwgMzAwICsrKysrKysrKysrKysrKysrKysrKysNCj4gIE1kZVBrZy9MaWJy YXJ5L0Jhc2VGZHRMaWIvQmFzZUZkdExpYi5pbmYgIHwgIDYyICsrKysrDQo+ICBNZGVQa2cvTGli cmFyeS9CYXNlRmR0TGliL0Jhc2VGZHRMaWIudW5pICB8ICAxNCArDQo+ICBNZGVQa2cvTGlicmFy eS9CYXNlRmR0TGliL0ZkdExpYi5jICAgICAgICB8IDI4NCArKysrKysrKysrKysrKysrKysrKw0K PiAgTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9MaWJGZHRTdXBwb3J0LmggfCAxMDIgKysrKysr KysNCj4gIE1kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvTGliRmR0V3JhcHBlci5jIHwgMTM4ICsr KysrKysrKysNCj4gIE1kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvbGliZmR0ICAgICAgICAgIHwg ICAxICsNCj4gIE1kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvbGltaXRzLmggICAgICAgIHwgIDEw ICsNCj4gIE1kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvc3RkYm9vbC5oICAgICAgIHwgIDEwICsN Cj4gIE1kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvc3RkZGVmLmggICAgICAgIHwgIDEwICsNCj4g IE1kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvc3RkaW50LmggICAgICAgIHwgIDEwICsNCj4gIE1k ZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvc3RkbGliLmggICAgICAgIHwgIDEwICsNCj4gIE1kZVBr Zy9MaWJyYXJ5L0Jhc2VGZHRMaWIvc3RyaW5nLmggICAgICAgIHwgIDEwICsNCj4gIE1kZVBrZy9N ZGVQa2cuY2kueWFtbCAgICAgICAgICAgICAgICAgICAgIHwgIDE3ICstDQo+ICBNZGVQa2cvTWRl UGtnLmRlYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArDQo+ICBNZGVQa2cvTWRlUGtn LmRzYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArDQo+ICBSZWFkTWUucnN0ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArDQo+ICAxOCBmaWxlcyBjaGFuZ2VkLCA5 ODYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBN ZGVQa2cvSW5jbHVkZS9MaWJyYXJ5L0ZkdExpYi5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgTWRl UGtnL0xpYnJhcnkvQmFzZUZkdExpYi9CYXNlRmR0TGliLmluZg0KPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IE1kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvQmFzZUZkdExpYi51bmkNCj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBNZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL0ZkdExpYi5jDQo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9MaWJGZHRTdXBwb3J0LmgNCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBNZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL0xpYkZkdFdyYXBw ZXIuYw0KPiAgY3JlYXRlIG1vZGUgMTYwMDAwIE1kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvbGli ZmR0DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9saW1p dHMuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvc3Rk Ym9vbC5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9z dGRkZWYuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIv c3RkaW50LmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBNZGVQa2cvTGlicmFyeS9CYXNlRmR0TGli L3N0ZGxpYi5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExp Yi9zdHJpbmcuaA0KPiANCj4gZGlmZiAtLWdpdCBhLy5naXRtb2R1bGVzIGIvLmdpdG1vZHVsZXMN Cj4gaW5kZXggODAxMWE4OGQ5ZC4uNWRhMzQyZTkwYyAxMDA2NDQNCj4gLS0tIGEvLmdpdG1vZHVs ZXMNCj4gKysrIGIvLmdpdG1vZHVsZXMNCj4gQEAgLTIzLDMgKzIzLDYgQEANCj4gIFtzdWJtb2R1 bGUgIlVuaXRUZXN0RnJhbWV3b3JrUGtnL0xpYnJhcnkvR29vZ2xlVGVzdExpYi9nb29nbGV0ZXN0 Il0NCj4gIAlwYXRoID0gVW5pdFRlc3RGcmFtZXdvcmtQa2cvTGlicmFyeS9Hb29nbGVUZXN0TGli L2dvb2dsZXRlc3QNCj4gIAl1cmwgPSBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRl c3QuZ2l0DQo+ICtbc3VibW9kdWxlICJNZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL2xpYmZkdCJd DQo+ICsJcGF0aCA9IE1kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvbGliZmR0DQo+ICsJdXJsID0g aHR0cHM6Ly9naXRodWIuY29tL2RldmljZXRyZWUtb3JnL3B5bGliZmR0LmdpdA0KPiBkaWZmIC0t Z2l0IGEvTWRlUGtnL0luY2x1ZGUvTGlicmFyeS9GZHRMaWIuaCBiL01kZVBrZy9JbmNsdWRlL0xp YnJhcnkvRmR0TGliLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MC4uYmNiMDk3Yjc3ZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL01kZVBrZy9JbmNsdWRlL0xp YnJhcnkvRmR0TGliLmgNCj4gQEAgLTAsMCArMSwzMDAgQEANCj4gKy8qKiBAZmlsZQ0KPiANCj4g KyAgRmxhdHRlbmVkIERldmljZSBUcmVlIExpYnJhcnkuDQo+IA0KPiArDQo+IA0KPiArICBDb3B5 cmlnaHQgKGMpIDIwMjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gDQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 DQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArDQo+IA0KPiArI2lmbmRlZiBGRFRfTElCX0hf DQo+IA0KPiArI2RlZmluZSBGRFRfTElCX0hfDQo+IA0KPiArDQo+IA0KPiArLy8vDQo+IA0KPiAr Ly8vIEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSBkZWZpbml0aW9uDQo+IA0KPiArLy8vDQo+IA0KPiAr dHlwZWRlZiBzdHJ1Y3Qgew0KPiANCj4gKyAgVUlOVDMyICAgIE1hZ2ljOyAgICAgICAgICAgICAg IC8qIG1hZ2ljIHdvcmQgRkRUX01BR0lDICovDQo+IA0KPiArICBVSU5UMzIgICAgVG90YWxTaXpl OyAgICAgICAgICAgLyogdG90YWwgc2l6ZSBvZiBEVCBibG9jayAqLw0KPiANCj4gKyAgVUlOVDMy ICAgIE9mZnNldER0U3RydWN0OyAgICAgIC8qIG9mZnNldCB0byBzdHJ1Y3R1cmUgKi8NCj4gDQo+ ICsgIFVJTlQzMiAgICBPZmZzZXREdFN0cmluZ3M7ICAgICAvKiBvZmZzZXQgdG8gc3RyaW5ncyAq Lw0KPiANCj4gKyAgVUlOVDMyICAgIE9mZnNldE1lbVJzdm1hcDsgICAgIC8qIG9mZnNldCB0byBt ZW1vcnkgcmVzZXJ2ZSBtYXAgKi8NCj4gDQo+ICsgIFVJTlQzMiAgICBWZXJzaW9uOyAgICAgICAg ICAgICAvKiBmb3JtYXQgdmVyc2lvbiAqLw0KPiANCj4gKyAgVUlOVDMyICAgIExhc3RDb21wVmVy c2lvbjsgICAgIC8qIGxhc3QgY29tcGF0aWJsZSB2ZXJzaW9uICovDQo+IA0KPiArDQo+IA0KPiAr ICAvKiB2ZXJzaW9uIDIgZmllbGRzIGJlbG93ICovDQo+IA0KPiArICBVSU5UMzIgICAgQm9vdENw dWlkUGh5czsgICAgICAgLyogV2hpY2ggcGh5c2ljYWwgQ1BVIGlkIHdlJ3JlDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vdGluZyBvbiAqLw0KPiANCj4gKyAg LyogdmVyc2lvbiAzIGZpZWxkcyBiZWxvdyAqLw0KPiANCj4gKyAgVUlOVDMyICAgIFNpemVEdFN0 cmluZ3M7ICAgICAgIC8qIHNpemUgb2YgdGhlIHN0cmluZ3MgYmxvY2sgKi8NCj4gDQo+ICsNCj4g DQo+ICsgIC8qIHZlcnNpb24gMTcgZmllbGRzIGJlbG93ICovDQo+IA0KPiArICBVSU5UMzIgICAg U2l6ZUR0U3RydWN0OyAgICAgICAgLyogc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGJsb2NrICovDQo+ IA0KPiArfSBGRFRfSEVBREVSOw0KPiANCj4gKw0KPiANCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4g DQo+ICsgIFVJTlQ2NCAgICBBZGRyZXNzOw0KPiANCj4gKyAgVUlOVDY0ICAgIFNpemU7DQo+IA0K PiArfSBGRFRfUkVTRVJWRV9FTlRSWTsNCj4gDQo+ICsNCj4gDQo+ICt0eXBlZGVmIHN0cnVjdCB7 DQo+IA0KPiArICBVSU5UMzIgICAgVGFnOw0KPiANCj4gKyAgQ0hBUjggICAgIE5hbWVbXTsNCj4g DQo+ICt9IEZEVF9OT0RFX0hFQURFUjsNCj4gDQo+ICsNCj4gDQo+ICt0eXBlZGVmIHN0cnVjdCB7 DQo+IA0KPiArICBVSU5UMzIgICAgVGFnOw0KPiANCj4gKyAgVUlOVDMyICAgIExlbmd0aDsNCj4g DQo+ICsgIFVJTlQzMiAgICBOYW1lT2Zmc2V0Ow0KPiANCj4gKyAgQ0hBUjggICAgIERhdGFbXTsN Cj4gDQo+ICt9IEZEVF9QUk9QRVJUWTsNCj4gDQo+ICsNCj4gDQo+ICsjZGVmaW5lIEZEVF9HRVRf SEVBREVSKEZkdCwgRmllbGQpICBGRFQzMl9UT19DUFUoKChDT05TVCBGRFRfSEVBREVSICopKEZk dCkpLT5GaWVsZCkNCj4gDQo+ICsNCj4gDQo+ICsjZGVmaW5lIEZEVF9NQUdJQyhGZHQpICAgICAg ICAgICAgICAoRkRUX0dFVF9IRUFERVIoRmR0LCBNYWdpYykpDQo+IA0KPiArI2RlZmluZSBGRFRf VE9UQUxfU0laRShGZHQpICAgICAgICAgKEZEVF9HRVRfSEVBREVSKEZkdCwgVG90YWxTaXplKSkN Cj4gDQo+ICsjZGVmaW5lIEZEVF9PRkZTRVRfRFRfU1RSVUNUKEZkdCkgICAoRkRUX0dFVF9IRUFE RVIoRmR0LCBPZmZzZXREdFN0cnVjdCkpDQo+IA0KPiArI2RlZmluZSBGRFRfT0ZGU0VUX0RUX1NU UklOR1MoRmR0KSAgKEZEVF9HRVRfSEVBREVSKEZkdCwgT2Zmc2V0RHRTdHJpbmdzKSkNCj4gDQo+ ICsjZGVmaW5lIEZEVF9PRkZTRVRfTUVNX1JTVk1BUChGZHQpICAoRkRUX0dFVF9IRUFERVIoRmR0 LCBPZmZzZXRNZW1Sc3ZtYXApKQ0KPiANCj4gKyNkZWZpbmUgRkRUX1ZFUlNJT04oRmR0KSAgICAg ICAgICAgIChGRFRfR0VUX0hFQURFUihGZHQsIFZlcnNpb24pKQ0KPiANCj4gKyNkZWZpbmUgRkRU X0xBU1RfQ09NUF9WRVJTSU9OKEZkdCkgIChGRFRfR0VUX0hFQURFUihGZHQsIExhc3RDb21wVmVy c2lvbikpDQo+IA0KPiArI2RlZmluZSBGRFRfQk9PVF9DUFVJRF9QSFlTKEZkdCkgICAgKEZEVF9H RVRfSEVBREVSKEZkdCwgQm9vdENwdWlkUGh5cykpDQo+IA0KPiArI2RlZmluZSBGRFRfU0laRV9E VF9TVFJJTkdTKEZkdCkgICAgKEZEVF9HRVRfSEVBREVSKEZkdCwgU2l6ZUR0U3RyaW5ncykpDQo+ IA0KPiArI2RlZmluZSBGRFRfU0laRV9EVF9TVFJVQ1QoRmR0KSAgICAgKEZEVF9HRVRfSEVBREVS KEZkdCwgU2l6ZUR0U3RydWN0KSkNCj4gDQo+ICsNCj4gDQo+ICsvKioNCj4gDQo+ICsgIENyZWF0 ZSBhIGVtcHR5IEZsYXR0ZW5lZCBEZXZpY2UgVHJlZS4NCj4gDQo+ICsNCj4gDQo+ICsgIEBwYXJh bVtpbl0gQnVmZmVyICAgICAgICAgVGhlIHBvaW50ZXIgdG8gYWxsb2NhdGUgYSBwb29sIGZvciBG RFQgYmxvYi4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gQnVmZmVyU2l6ZSAgICAgVGhlIEJ1ZmZlclNp emUgdG8gdGhlIHBvb2wgc2l6ZS4NCj4gDQo+ICsNCj4gDQo+ICsgIEByZXR1cm4gWmVybyBmb3Ig c3VjY2Vzc2Z1bGx5LCBvdGhlcndpc2UgZmFpbGVkLg0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiAN Cj4gK1JFVFVSTl9TVEFUVVMNCj4gDQo+ICtFRklBUEkNCj4gDQo+ICtGZHRDcmVhdGVFbXB0eVRy ZWUgKA0KPiANCj4gKyAgSU4gVk9JRCAgICpCdWZmZXIsDQo+IA0KPiArICBJTiBVSU5UTiAgQnVm ZmVyU2l6ZQ0KPiANCj4gKyAgKTsNCj4gDQo+ICsNCj4gDQo+ICsvKioNCj4gDQo+ICsgIFJldHVy bnMgYSBvZmZzZXQgb2YgbmV4dCBub2RlIGZyb20gdGhlIGdpdmVuIG5vZGUuDQo+IA0KPiArDQo+ IA0KPiArICBAcGFyYW1baW5dIEZkdCAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZEVCBibG9i Lg0KPiANCj4gKyAgQHBhcmFtW2luXSBPZmZzZXQgICAgICAgICBUaGUgb2Zmc2V0IHRvIHByZXZp b3VzIG5vZGUuDQo+IA0KPiArICBAcGFyYW1baW5dIERlcHRoICAgICAgICAgIFRoZSBkZXB0aCB0 byB0aGUgbGV2ZWwgb2YgdHJlZSBoaWVyYXJjaHkuDQo+IA0KPiArDQo+IA0KPiArICBAcmV0dXJu IFRoZSBvZmZzZXQgdG8gbmV4dCBub2RlIG9mZnNldC4NCj4gDQo+ICsNCj4gDQo+ICsqKi8NCj4g DQo+ICtJTlQzMg0KPiANCj4gK0VGSUFQSQ0KPiANCj4gK0ZkdE5leHROb2RlICgNCj4gDQo+ICsg IElOIENPTlNUIFZPSUQgICpGZHQsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICBPZmZzZXQsDQo+ IA0KPiArICBJTiBJTlQzMiAgICAgICAqRGVwdGgNCj4gDQo+ICsgICk7DQo+IA0KPiArDQo+IA0K PiArLyoqDQo+IA0KPiArICBSZXR1cm5zIGEgb2Zmc2V0IG9mIGZpcnN0IG5vZGUgdW5kZXIgdGhl IGdpdmVuIG5vZGUuDQo+IA0KPiArDQo+IA0KPiArICBAcGFyYW1baW5dIEZkdCAgICAgICAgICAg IFRoZSBwb2ludGVyIHRvIEZEVCBibG9iLg0KPiANCj4gKyAgQHBhcmFtW2luXSBPZmZzZXQgICAg ICAgICBUaGUgb2Zmc2V0IHRvIHByZXZpb3VzIG5vZGUuDQo+IA0KPiArDQo+IA0KPiArICBAcmV0 dXJuIFRoZSBvZmZzZXQgdG8gbmV4dCBub2RlIG9mZnNldC4NCj4gDQo+ICsNCj4gDQo+ICsqKi8N Cj4gDQo+ICtJTlQzMg0KPiANCj4gK0VGSUFQSQ0KPiANCj4gK0ZkdEZpcnN0U3Vibm9kZSAoDQo+ IA0KPiArICBJTiBDT05TVCBWT0lEICAqRmR0LA0KPiANCj4gKyAgSU4gSU5UMzIgICAgICAgT2Zm c2V0DQo+IA0KPiArICApOw0KPiANCj4gKw0KPiANCj4gKy8qKg0KPiANCj4gKyAgUmV0dXJucyBh IG9mZnNldCBvZiBuZXh0IG5vZGUgZnJvbSB0aGUgZ2l2ZW4gbm9kZS4NCj4gDQo+ICsNCj4gDQo+ ICsgIEBwYXJhbVtpbl0gRmR0ICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gRkRUIGJsb2IuDQo+ IA0KPiArICBAcGFyYW1baW5dIE9mZnNldCAgICAgICAgIFRoZSBvZmZzZXQgdG8gcHJldmlvdXMg bm9kZS4NCj4gDQo+ICsNCj4gDQo+ICsgIEByZXR1cm4gVGhlIG9mZnNldCB0byBuZXh0IG5vZGUg b2Zmc2V0Lg0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4gK0lOVDMyDQo+IA0KPiArRUZJQVBJ DQo+IA0KPiArRmR0TmV4dFN1Ym5vZGUgKA0KPiANCj4gKyAgSU4gQ09OU1QgVk9JRCAgKkZkdCwN Cj4gDQo+ICsgIElOIElOVDMyICAgICAgIE9mZnNldA0KPiANCj4gKyAgKTsNCj4gDQo+ICsNCj4g DQo+ICsvKioNCj4gDQo+ICsgIFJldHVybnMgYSBvZmZzZXQgb2YgZmlyc3Qgbm9kZSB3aGljaCBp bmNsdWRlcyB0aGUgZ2l2ZW4gbmFtZS4NCj4gDQo+ICsNCj4gDQo+ICsgIEBwYXJhbVtpbl0gRmR0 ICAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZEVCBibG9iLg0KPiANCj4gKyAgQHBhcmFtW2lu XSBQYXJlbnRPZmZzZXQgICAgVGhlIG9mZnNldCB0byB0aGUgbm9kZSB3aGljaCBzdGFydCBmaW5k IHVuZGVyLg0KPiANCj4gKyAgQHBhcmFtW2luXSBOYW1lICAgICAgICAgICAgVGhlIG5hbWUgdG8g c2VhcmNoIHRoZSBub2RlIHdpdGggdGhlIG5hbWUuDQo+IA0KPiArICBAcGFyYW1baW5dIE5hbWVM ZW5ndGggICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBuYW1lIHRvIGNoZWNrIG9ubHkuDQo+IA0KPiAr DQo+IA0KPiArICBAcmV0dXJuIFRoZSBvZmZzZXQgdG8gbm9kZSBvZmZzZXQgd2l0aCBnaXZlbiBu b2RlIG5hbWUuDQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArSU5UMzINCj4gDQo+ICtFRklB UEkNCj4gDQo+ICtGZHRTdWJub2RlT2Zmc2V0TmFtZUxlbiAoDQo+IA0KPiArICBJTiBDT05TVCBW T0lEICAgKkZkdCwNCj4gDQo+ICsgIElOIElOVDMyICAgICAgICBQYXJlbnRPZmZzZXQsDQo+IA0K PiArICBJTiBDT05TVCBDSEFSOCAgKk5hbWUsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICAgTmFt ZUxlbmd0aA0KPiANCj4gKyAgKTsNCj4gDQo+ICsNCj4gDQo+ICsvKioNCj4gDQo+ICsgIFJldHVy bnMgYSBvZmZzZXQgb2YgZmlyc3Qgbm9kZSB3aGljaCBpbmNsdWRlcyB0aGUgZ2l2ZW4gcHJvcGVy dHkgbmFtZSBhbmQgdmFsdWUuDQo+IA0KPiArDQo+IA0KPiArICBAcGFyYW1baW5dIEZkdCAgICAg ICAgICAgICBUaGUgcG9pbnRlciB0byBGRFQgYmxvYi4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gU3Rh cnRPZmZzZXQgICAgIFRoZSBvZmZzZXQgdG8gdGhlIHN0YXJ0aW5nIG5vZGUgdG8gZmluZC4NCj4g DQo+ICsgIEBwYXJhbVtpbl0gUHJvcGVydHlOYW1lICAgIFRoZSBwcm9wZXJ0eSBuYW1lIHRvIHNl YXJjaCB0aGUgbm9kZSBpbmNsdWRpbmcgdGhlIG5hbWVkIHByb3BlcnR5Lg0KPiANCj4gKyAgQHBh cmFtW2luXSBQcm9wZXJ0eVZhbHVlICAgVGhlIHByb3BlcnR5IHZhbHVlIHRvIGNoZWNrIHRoZSBz YW1lIHByb3BlcnR5IHZhbHVlLg0KPiANCj4gKyAgQHBhcmFtW2luXSBQcm9wZXJ0eUxlbmd0aCAg VGhlIGxlbmd0aCBvZiB0aGUgdmFsdWUgaW4gUHJvcGVydFZhbHVlLg0KPiANCj4gKw0KPiANCj4g KyAgQHJldHVybiBUaGUgb2Zmc2V0IHRvIG5vZGUgb2Zmc2V0IHdpdGggZ2l2ZW4gcHJvcGVydHku DQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArSU5UMzINCj4gDQo+ICtFRklBUEkNCj4gDQo+ ICtGZHROb2RlT2Zmc2V0QnlQcm9wVmFsdWUgKA0KPiANCj4gKyAgSU4gQ09OU1QgVk9JRCAgICpG ZHQsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICAgU3RhcnRPZmZzZXQsDQo+IA0KPiArICBJTiBD T05TVCBDSEFSOCAgKlByb3BlcnR5TmFtZSwNCj4gDQo+ICsgIElOIENPTlNUIFZPSUQgICAqUHJv cGVydHlWYWx1ZSwNCj4gDQo+ICsgIElOIElOVDMyICAgICAgICBQcm9wZXJ0eUxlbmd0aA0KPiAN Cj4gKyAgKTsNCj4gDQo+ICsNCj4gDQo+ICsvKioNCj4gDQo+ICsgIFJldHVybnMgYSBwcm9wZXJ0 eSB3aXRoIHRoZSBnaXZlbiBuYW1lIGZyb20gdGhlIGdpdmVuIG5vZGUuDQo+IA0KPiArDQo+IA0K PiArICBAcGFyYW1baW5dIEZkdCAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZEVCBibG9iLg0K PiANCj4gKyAgQHBhcmFtW2luXSBOb2RlT2Zmc2V0ICAgICBUaGUgb2Zmc2V0IHRvIHRoZSBnaXZl biBub2RlLg0KPiANCj4gKyAgQHBhcmFtW2luXSBOYW1lICAgICAgICAgICBUaGUgbmFtZSB0byB0 aGUgcHJvcGVydHkgd2hpY2ggbmVlZCBiZSBzZWFyY2hlZA0KPiANCj4gKyAgQHBhcmFtW2luXSBM ZW5ndGggICAgICAgICBUaGUgbGVuZ3RoIHRvIHRoZSBzaXplIG9mIHRoZSBwcm9wZXJ0eSBmb3Vu ZC4NCj4gDQo+ICsNCj4gDQo+ICsgIEByZXR1cm4gVGhlIHByb3BlcnR5IHRvIHRoZSBzdHJ1Y3R1 cmUgb2YgdGhlIGZvdW5kIHByb3BlcnR5Lg0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4gK0NP TlNUIEZEVF9QUk9QRVJUWSAqDQo+IA0KPiArRUZJQVBJDQo+IA0KPiArRmR0R2V0UHJvcGVydHkg KA0KPiANCj4gKyAgSU4gQ09OU1QgVk9JRCAgICpGZHQsDQo+IA0KPiArICBJTiBJTlQzMiAgICAg ICAgTm9kZU9mZnNldCwNCj4gDQo+ICsgIElOIENPTlNUIENIQVI4ICAqTmFtZSwNCj4gDQo+ICsg IElOIElOVDMyICAgICAgICAqTGVuZ3RoDQo+IA0KPiArICApOw0KPiANCj4gKw0KPiANCj4gKy8q Kg0KPiANCj4gKyAgUmV0dXJucyBhIG9mZnNldCBvZiBmaXJzdCBwcm9wZXJ0eSBpbiB0aGUgZ2l2 ZW4gbm9kZS4NCj4gDQo+ICsNCj4gDQo+ICsgIEBwYXJhbVtpbl0gRmR0ICAgICAgICAgICAgVGhl IHBvaW50ZXIgdG8gRkRUIGJsb2IuDQo+IA0KPiArICBAcGFyYW1baW5dIE9mZnNldCAgICAgICAg IFRoZSBvZmZzZXQgdG8gdGhlIG5vZGUgd2hpY2ggbmVlZCBiZSBzZWFyY2hlZC4NCj4gDQo+ICsN Cj4gDQo+ICsgIEByZXR1cm4gVGhlIG9mZnNldCB0byBmaXJzdCBwcm9wZXJ0eSBvZmZzZXQgaW4g dGhlIGdpdmVuIG5vZGUuDQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArSU5UMzINCj4gDQo+ ICtFRklBUEkNCj4gDQo+ICtGZHRGaXJzdFByb3BlcnR5T2Zmc2V0ICgNCj4gDQo+ICsgIElOIENP TlNUIFZPSUQgICpGZHQsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICBOb2RlT2Zmc2V0DQo+IA0K PiArICApOw0KPiANCj4gKw0KPiANCj4gKy8qKg0KPiANCj4gKyAgUmV0dXJucyBhIG9mZnNldCBv ZiBuZXh0IHByb3BlcnR5IGZyb20gdGhlIGdpdmVuIHByb3BlcnR5Lg0KPiANCj4gKw0KPiANCj4g KyAgQHBhcmFtW2luXSBGZHQgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBGRFQgYmxvYi4NCj4g DQo+ICsgIEBwYXJhbVtpbl0gT2Zmc2V0ICAgICAgICAgVGhlIG9mZnNldCB0byBwcmV2aW91cyBw cm9wZXJ0eS4NCj4gDQo+ICsNCj4gDQo+ICsgIEByZXR1cm4gVGhlIG9mZnNldCB0byBuZXh0IHBy b3BlcnR5IG9mZnNldC4NCj4gDQo+ICsNCj4gDQo+ICsqKi8NCj4gDQo+ICtJTlQzMg0KPiANCj4g K0VGSUFQSQ0KPiANCj4gK0ZkdE5leHRQcm9wZXJ0eU9mZnNldCAoDQo+IA0KPiArICBJTiBDT05T VCBWT0lEICAqRmR0LA0KPiANCj4gKyAgSU4gSU5UMzIgICAgICAgT2Zmc2V0DQo+IA0KPiArICAp Ow0KPiANCj4gKw0KPiANCj4gKy8qKg0KPiANCj4gKyAgUmV0dXJucyBhIHByb3BlcnR5IGZyb20g dGhlIGdpdmVuIG9mZnNldCBvZiB0aGUgcHJvcGVydHkuDQo+IA0KPiArDQo+IA0KPiArICBAcGFy YW1baW5dIEZkdCAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZEVCBibG9iLg0KPiANCj4gKyAg QHBhcmFtW2luXSBPZmZzZXQgICAgICAgICBUaGUgb2Zmc2V0IHRvIHRoZSBnaXZlbiBvZmZzZXQg b2YgdGhlIHByb3BlcnR5Lg0KPiANCj4gKyAgQHBhcmFtW2luXSBMZW5ndGggICAgICAgICBUaGUg bGVuZ3RoIHRvIHRoZSBzaXplIG9mIHRoZSBwcm9wZXJ0eSBmb3VuZC4NCj4gDQo+ICsNCj4gDQo+ ICsgIEByZXR1cm4gVGhlIHByb3BlcnR5IHRvIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGdpdmVuIHBy b3BlcnR5IG9mZnNldC4NCj4gDQo+ICsNCj4gDQo+ICsqKi8NCj4gDQo+ICtDT05TVCBGRFRfUFJP UEVSVFkgKg0KPiANCj4gK0VGSUFQSQ0KPiANCj4gK0ZkdEdldFByb3BlcnR5QnlPZmZzZXQgKA0K PiANCj4gKyAgSU4gQ09OU1QgVk9JRCAgKkZkdCwNCj4gDQo+ICsgIElOIElOVDMyICAgICAgIE9m ZnNldCwNCj4gDQo+ICsgIElOIElOVDMyICAgICAgICpMZW5ndGgNCj4gDQo+ICsgICk7DQo+IA0K PiArDQo+IA0KPiArLyoqDQo+IA0KPiArICBSZXR1cm5zIGEgc3RyaW5nIGJ5IHRoZSBnaXZlbiBz dHJpbmcgb2Zmc2V0Lg0KPiANCj4gKw0KPiANCj4gKyAgQHBhcmFtW2luXSBGZHQgICAgICAgICAg ICBUaGUgcG9pbnRlciB0byBGRFQgYmxvYi4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gU3RyT2Zmc2V0 ICAgICAgVGhlIG9mZnNldCB0byB0aGUgbG9jYXRpb24gaW4gdGhlIHN0cmluZ3MgYmxvY2sgb2Yg RkRULg0KPiANCj4gKyAgQHBhcmFtW2luXSBMZW5ndGggICAgICAgICBUaGUgbGVuZ3RoIHRvIHRo ZSBzaXplIG9mIHN0cmluZyB3aGljaCBuZWVkIGJlIHJldHJpZXZlZC4NCj4gDQo+ICsNCj4gDQo+ ICsgIEByZXR1cm4gVGhlIHN0cmluZyB0byB0aGUgZ2l2ZW4gc3RyaW5nIG9mZnNldC4NCj4gDQo+ ICsNCj4gDQo+ICsqKi8NCj4gDQo+ICtDT05TVCBDSEFSOCAqDQo+IA0KPiArRUZJQVBJDQo+IA0K PiArRmR0R2V0U3RyaW5nICgNCj4gDQo+ICsgIElOIENPTlNUIFZPSUQgICpGZHQsDQo+IA0KPiAr ICBJTiBJTlQzMiAgICAgICBTdHJPZmZzZXQsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICAqTGVu Z3RoICAgICAgICBPUFRJT05BTA0KPiANCj4gKyAgKTsNCj4gDQo+ICsNCj4gDQo+ICsvKioNCj4g DQo+ICsgIEFkZCBhIG5ldyBub2RlIHRvIHRoZSBGRFQuDQo+IA0KPiArDQo+IA0KPiArICBAcGFy YW1baW5dIEZkdCAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZEVCBibG9iLg0KPiANCj4gKyAg QHBhcmFtW2luXSBQYXJlbnRPZmZzZXQgICBUaGUgb2Zmc2V0IHRvIHRoZSBub2RlIG9mZnNldCB3 aGljaCB3YW50IHRvIGFkZCBpbi4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gTmFtZSAgICAgICAgICAg VGhlIG5hbWUgdG8gbmFtZSB0aGUgbm9kZS4NCj4gDQo+ICsNCj4gDQo+ICsgIEByZXR1cm4gIFRo ZSBvZmZzZXQgdG8gdGhlIG5ldyBub2RlLg0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4gK0lO VDMyDQo+IA0KPiArRUZJQVBJDQo+IA0KPiArRmR0QWRkU3Vibm9kZSAoDQo+IA0KPiArICBJTiBW T0lEICAgICAgICAgKkZkdCwNCj4gDQo+ICsgIElOIElOVDMyICAgICAgICBQYXJlbnRPZmZzZXQs DQo+IA0KPiArICBJTiBDT05TVCBDSEFSOCAgKk5hbWUNCj4gDQo+ICsgICk7DQo+IA0KPiArDQo+ IA0KPiArLyoqDQo+IA0KPiArICBBZGQgb3IgbW9kaWZ5IGEgcG9ycGVydHkgaW4gdGhlIGdpdmVu IG5vZGUuDQo+IA0KPiArDQo+IA0KPiArICBAcGFyYW1baW5dIEZkdCAgICAgICAgICAgIFRoZSBw b2ludGVyIHRvIEZEVCBibG9iLg0KPiANCj4gKyAgQHBhcmFtW2luXSBOb2RlT2Zmc2V0ICAgICBU aGUgb2Zmc2V0IHRvIHRoZSBub2RlIG9mZnNldCB3aGljaCB3YW50IHRvIGFkZCBpbi4NCj4gDQo+ ICsgIEBwYXJhbVtpbl0gTmFtZSAgICAgICAgICAgVGhlIG5hbWUgdG8gbmFtZSB0aGUgcHJvcGVy dHkuDQo+IA0KPiArICBAcGFyYW1baW5dIFZhbHVlICAgICAgICAgIFRoZSB2YWx1ZSB0byB0aGUg cHJvcGVydHkgdmFsdWUuDQo+IA0KPiArICBAcGFyYW1baW5dIExlbmd0aCAgICAgICAgIFRoZSBs ZW5ndGggdG8gdGhlIHNpemUgb2YgdGhlIHByb3BlcnR5Lg0KPiANCj4gKw0KPiANCj4gKyAgQHJl dHVybiAgWmVybyBmb3Igc3VjY2Vzc2Z1bGx5LCBvdGhlcndpc2UgZmFpbGVkLg0KPiANCj4gKw0K PiANCj4gKyoqLw0KPiANCj4gK0lOVDMyDQo+IA0KPiArRUZJQVBJDQo+IA0KPiArRmR0U2V0UHJv cCAoDQo+IA0KPiArICBJTiBWT0lEICAgICAgICAgKkZkdCwNCj4gDQo+ICsgIElOIElOVDMyICAg ICAgICBOb2RlT2Zmc2V0LA0KPiANCj4gKyAgSU4gQ09OU1QgQ0hBUjggICpOYW1lLA0KPiANCj4g KyAgSU4gQ09OU1QgVk9JRCAgICpWYWx1ZSwNCj4gDQo+ICsgIElOIFVJTlQzMiAgICAgICBMZW5n dGgNCj4gDQo+ICsgICk7DQo+IA0KPiArDQo+IA0KPiArI2VuZGlmIC8qIEZEVF9MSUJfSF8gKi8N Cj4gDQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL0Jhc2VGZHRMaWIu aW5mIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9CYXNlRmR0TGliLmluZg0KPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi43MzBlNTY4ZmY2DQo+IC0tLSAvZGV2 L251bGwNCj4gKysrIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9CYXNlRmR0TGliLmluZg0K PiBAQCAtMCwwICsxLDYyIEBADQo+ICsjIyBAZmlsZQ0KPiANCj4gKyMgRmxhdHRlbmVkIERldmlj ZSBUcmVlIExpYnJhcnkuDQo+IA0KPiArIw0KPiANCj4gKyMgQ29weXJpZ2h0IChjKSAyMDIzLCBJ bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiArIw0KPiAN Cj4gKyMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+IA0K PiArIw0KPiANCj4gKyMNCj4gDQo+ICsjIw0KPiANCj4gKw0KPiANCj4gK1tEZWZpbmVzXQ0KPiAN Cj4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAxQg0KPiANCj4g KyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gQmFzZUZkdExpYg0KPiANCj4gKyAg TU9EVUxFX1VOSV9GSUxFICAgICAgICAgICAgICAgID0gQmFzZUZkdExpYi51bmkNCj4gDQo+ICsg IEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IEM2NERDQjAxLUIwMzctNEZGNi05Q0Yz LUU4Q0VDMjA2REUwNA0KPiANCj4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0g QkFTRQ0KPiANCj4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+IA0K PiArICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPSBGZHRMaWINCj4gDQo+ICsNCj4g DQo+ICsgIERFRklORSBGRFRfTElCX1BBVEggICAgICAgICAgICA9IGxpYmZkdC9saWJmZHQNCj4g DQo+ICsNCj4gDQo+ICsjDQo+IA0KPiArIyAgVkFMSURfQVJDSElURUNUVVJFUyAgICAgICAgICAg PSBJQTMyIFg2NA0KPiANCj4gKyMNCj4gDQo+ICsNCj4gDQo+ICtbU291cmNlc10NCj4gDQo+ICsg IEZkdExpYi5jDQo+IA0KPiArICBMaWJGZHRXcmFwcGVyLmMNCj4gDQo+ICsgICMgaGVhZGVyIFdy YXBwZXIgZmlsZXMNCj4gDQo+ICsgIGxpbWl0cy5oDQo+IA0KPiArICBzdGRib29sLmgNCj4gDQo+ ICsgIHN0ZGRlZi5oDQo+IA0KPiArICBzdGRpbnQuaA0KPiANCj4gKyAgc3RkbGliLmgNCj4gDQo+ ICsgIHN0cmluZy5oDQo+IA0KPiArDQo+IA0KPiArICAkKEZEVF9MSUJfUEFUSCkvZmR0LmMNCj4g DQo+ICsgICQoRkRUX0xJQl9QQVRIKS9mZHQuaA0KPiANCj4gKyAgJChGRFRfTElCX1BBVEgpL2Zk dF9hZGRyZXNzZXMuYw0KPiANCj4gKyAgJChGRFRfTElCX1BBVEgpL2ZkdF9jaGVjay5jDQo+IA0K PiArICAkKEZEVF9MSUJfUEFUSCkvZmR0X2VtcHR5X3RyZWUuYw0KPiANCj4gKyAgJChGRFRfTElC X1BBVEgpL2ZkdF9vdmVybGF5LmMNCj4gDQo+ICsgICQoRkRUX0xJQl9QQVRIKS9mZHRfcm8uYw0K PiANCj4gKyAgJChGRFRfTElCX1BBVEgpL2ZkdF9ydy5jDQo+IA0KPiArICAkKEZEVF9MSUJfUEFU SCkvZmR0X3N0cmVycm9yLmMNCj4gDQo+ICsgICQoRkRUX0xJQl9QQVRIKS9mZHRfc3cuYw0KPiAN Cj4gKyAgJChGRFRfTElCX1BBVEgpL2ZkdF93aXAuYw0KPiANCj4gKyAgJChGRFRfTElCX1BBVEgp L2xpYmZkdC5oDQo+IA0KPiArICAkKEZEVF9MSUJfUEFUSCkvbGliZmR0X2Vudi5oDQo+IA0KPiAr ICAkKEZEVF9MSUJfUEFUSCkvbGliZmR0X2ludGVybmFsLmgNCj4gDQo+ICsNCj4gDQo+ICtbUGFj a2FnZXNdDQo+IA0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiANCj4gKw0KPiANCj4gK1tMaWJy YXJ5Q2xhc3Nlc10NCj4gDQo+ICsgIEJhc2VMaWINCj4gDQo+ICsgIEJhc2VNZW1vcnlMaWINCj4g DQo+ICsNCj4gDQo+ICtbQnVpbGRPcHRpb25zXQ0KPiANCj4gKyAgTVNGVDoqXypfSUEzMl9DQ19G TEFHUyA9IC93ZDQxNDYgL3dkNDI0NQ0KPiANCj4gKyAgTVNGVDoqXypfWDY0X0NDX0ZMQUdTICA9 IC93ZDQxNDYgL3dkNDI0NCAvd2Q0MjQ1IC93ZDQyNjcNCj4gDQo+ICsNCj4gDQo+IGRpZmYgLS1n aXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL0Jhc2VGZHRMaWIudW5pIGIvTWRlUGtnL0xp YnJhcnkvQmFzZUZkdExpYi9CYXNlRmR0TGliLnVuaQ0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiBpbmRleCAwMDAwMDAwMDAwLi4zZjdlNDVlYTZmDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIv TWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9CYXNlRmR0TGliLnVuaQ0KPiBAQCAtMCwwICsxLDE0 IEBADQo+ICsvLyAvKiogQGZpbGUNCj4gDQo+ICsvLyBGbGF0dGVuZWQgRGV2aWNlIFRyZWUgTGli cmFyeS4NCj4gDQo+ICsvLw0KPiANCj4gKy8vIENvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29y cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiANCj4gKy8vDQo+IA0KPiArLy8g U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gDQo+ICsvLw0K PiANCj4gKy8vICoqLw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyNzdHJpbmcgU1RSX01PRFVM RV9BQlNUUkFDVCAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIkluc3RhbmNlIG9mIEZEVCBM aWJyYXJ5Ig0KPiANCj4gKw0KPiANCj4gKyNzdHJpbmcgU1RSX01PRFVMRV9ERVNDUklQVElPTiAg ICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIlRoaXMgbW9kdWxlIHByb3ZpZGVzIEZEVCBMaWJyYXJ5 IGltcGxlbWVudGF0aW9uLiINCj4gDQo+ICsNCj4gDQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGli cmFyeS9CYXNlRmR0TGliL0ZkdExpYi5jIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9GZHRM aWIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5iYTlhMjg0 ZTU4DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9G ZHRMaWIuYw0KPiBAQCAtMCwwICsxLDI4NCBAQA0KPiArLyoqIEBmaWxlDQo+IA0KPiArICBGbGF0 dGVuZWQgRGV2aWNlIFRyZWUgTGlicmFyeS4NCj4gDQo+ICsNCj4gDQo+ICsgIENvcHlyaWdodCAo YykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAN Cj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gDQo+ ICsNCj4gDQo+ICsqKi8NCj4gDQo+ICsNCj4gDQo+ICsjaW5jbHVkZSA8bGliZmR0L2xpYmZkdC9s aWJmZHQuaD4NCj4gDQo+ICsNCj4gDQo+ICsvKioNCj4gDQo+ICsgIENyZWF0ZSBhIGVtcHR5IEZs YXR0ZW5lZCBEZXZpY2UgVHJlZS4NCj4gDQo+ICsNCj4gDQo+ICsgIEBwYXJhbVtpbl0gQnVmZmVy ICAgICAgICAgVGhlIHBvaW50ZXIgdG8gYWxsb2NhdGUgYSBwb29sIGZvciBGRFQgYmxvYi4NCj4g DQo+ICsgIEBwYXJhbVtpbl0gQnVmZmVyU2l6ZSAgICAgVGhlIEJ1ZmZlclNpemUgdG8gdGhlIHBv b2wgc2l6ZS4NCj4gDQo+ICsNCj4gDQo+ICsgIEByZXR1cm4gWmVybyBmb3Igc3VjY2Vzc2Z1bGx5 LCBvdGhlcndpc2UgZmFpbGVkLg0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4gK0lOVDMyDQo+ IA0KPiArRUZJQVBJDQo+IA0KPiArRmR0Q3JlYXRlRW1wdHlUcmVlICgNCj4gDQo+ICsgIElOIFZP SUQgICAgKkJ1ZmZlciwNCj4gDQo+ICsgIElOIFVJTlQzMiAgQnVmZmVyU2l6ZQ0KPiANCj4gKyAg KQ0KPiANCj4gK3sNCj4gDQo+ICsgIHJldHVybiBmZHRfY3JlYXRlX2VtcHR5X3RyZWUgKEJ1ZmZl ciwgKGludClCdWZmZXJTaXplKTsNCj4gDQo+ICt9DQo+IA0KPiArDQo+IA0KPiArLyoqDQo+IA0K PiArICBSZXR1cm5zIGEgb2Zmc2V0IG9mIG5leHQgbm9kZSBmcm9tIHRoZSBnaXZlbiBub2RlLg0K PiANCj4gKw0KPiANCj4gKyAgQHBhcmFtW2luXSBGZHQgICAgICAgICAgICBUaGUgcG9pbnRlciB0 byBGRFQgYmxvYi4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gT2Zmc2V0ICAgICAgICAgVGhlIG9mZnNl dCB0byBwcmV2aW91cyBub2RlLg0KPiANCj4gKyAgQHBhcmFtW2luXSBEZXB0aCAgICAgICAgICBU aGUgZGVwdGggdG8gdGhlIGxldmVsIG9mIHRyZWUgaGllcmFyY2h5Lg0KPiANCj4gKw0KPiANCj4g KyAgQHJldHVybiBUaGUgb2Zmc2V0IHRvIG5leHQgbm9kZSBvZmZzZXQuDQo+IA0KPiArDQo+IA0K PiArKiovDQo+IA0KPiArSU5UMzINCj4gDQo+ICtFRklBUEkNCj4gDQo+ICtGZHROZXh0Tm9kZSAo DQo+IA0KPiArICBJTiBDT05TVCBWT0lEICAqRmR0LA0KPiANCj4gKyAgSU4gSU5UMzIgICAgICAg T2Zmc2V0LA0KPiANCj4gKyAgSU4gSU5UMzIgICAgICAgKkRlcHRoDQo+IA0KPiArICApDQo+IA0K PiArew0KPiANCj4gKyAgcmV0dXJuIGZkdF9uZXh0X25vZGUgKEZkdCwgT2Zmc2V0LCBEZXB0aCk7 DQo+IA0KPiArfQ0KPiANCj4gKw0KPiANCj4gKy8qKg0KPiANCj4gKyAgUmV0dXJucyBhIG9mZnNl dCBvZiBmaXJzdCBub2RlIHVuZGVyIHRoZSBnaXZlbiBub2RlLg0KPiANCj4gKw0KPiANCj4gKyAg QHBhcmFtW2luXSBGZHQgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBGRFQgYmxvYi4NCj4gDQo+ ICsgIEBwYXJhbVtpbl0gT2Zmc2V0ICAgICAgICAgVGhlIG9mZnNldCB0byBwcmV2aW91cyBub2Rl Lg0KPiANCj4gKw0KPiANCj4gKyAgQHJldHVybiBUaGUgb2Zmc2V0IHRvIG5leHQgbm9kZSBvZmZz ZXQuDQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArSU5UMzINCj4gDQo+ICtFRklBUEkNCj4g DQo+ICtGZHRGaXJzdFN1Ym5vZGUgKA0KPiANCj4gKyAgSU4gQ09OU1QgVk9JRCAgKkZkdCwNCj4g DQo+ICsgIElOIElOVDMyICAgICAgIE9mZnNldA0KPiANCj4gKyAgKQ0KPiANCj4gK3sNCj4gDQo+ ICsgIHJldHVybiBmZHRfZmlyc3Rfc3Vibm9kZSAoRmR0LCBPZmZzZXQpOw0KPiANCj4gK30NCj4g DQo+ICsNCj4gDQo+ICsvKioNCj4gDQo+ICsgIFJldHVybnMgYSBvZmZzZXQgb2YgbmV4dCBub2Rl IGZyb20gdGhlIGdpdmVuIG5vZGUuDQo+IA0KPiArDQo+IA0KPiArICBAcGFyYW1baW5dIEZkdCAg ICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZEVCBibG9iLg0KPiANCj4gKyAgQHBhcmFtW2luXSBP ZmZzZXQgICAgICAgICBUaGUgb2Zmc2V0IHRvIHByZXZpb3VzIG5vZGUuDQo+IA0KPiArDQo+IA0K PiArICBAcmV0dXJuIFRoZSBvZmZzZXQgdG8gbmV4dCBub2RlIG9mZnNldC4NCj4gDQo+ICsNCj4g DQo+ICsqKi8NCj4gDQo+ICtJTlQzMg0KPiANCj4gK0VGSUFQSQ0KPiANCj4gK0ZkdE5leHRTdWJu b2RlICgNCj4gDQo+ICsgIElOIENPTlNUIFZPSUQgICpGZHQsDQo+IA0KPiArICBJTiBJTlQzMiAg ICAgICBPZmZzZXQNCj4gDQo+ICsgICkNCj4gDQo+ICt7DQo+IA0KPiArICByZXR1cm4gZmR0X25l eHRfc3Vibm9kZSAoRmR0LCBPZmZzZXQpOw0KPiANCj4gK30NCj4gDQo+ICsNCj4gDQo+ICsvKioN Cj4gDQo+ICsgIFJldHVybnMgYSBvZmZzZXQgb2YgZmlyc3Qgbm9kZSB3aGljaCBpbmNsdWRlcyB0 aGUgZ2l2ZW4gbmFtZS4NCj4gDQo+ICsNCj4gDQo+ICsgIEBwYXJhbVtpbl0gRmR0ICAgICAgICAg ICAgIFRoZSBwb2ludGVyIHRvIEZEVCBibG9iLg0KPiANCj4gKyAgQHBhcmFtW2luXSBQYXJlbnRP ZmZzZXQgICAgVGhlIG9mZnNldCB0byB0aGUgbm9kZSB3aGljaCBzdGFydCBmaW5kIHVuZGVyLg0K PiANCj4gKyAgQHBhcmFtW2luXSBOYW1lICAgICAgICAgICAgVGhlIG5hbWUgdG8gc2VhcmNoIHRo ZSBub2RlIHdpdGggdGhlIG5hbWUuDQo+IA0KPiArICBAcGFyYW1baW5dIE5hbWVMZW5ndGggICAg ICBUaGUgbGVuZ3RoIG9mIHRoZSBuYW1lIHRvIGNoZWNrIG9ubHkuDQo+IA0KPiArDQo+IA0KPiAr ICBAcmV0dXJuIFRoZSBvZmZzZXQgdG8gbm9kZSBvZmZzZXQgd2l0aCBnaXZlbiBub2RlIG5hbWUu DQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArSU5UMzINCj4gDQo+ICtFRklBUEkNCj4gDQo+ ICtGZHRTdWJub2RlT2Zmc2V0TmFtZUxlbiAoDQo+IA0KPiArICBJTiBDT05TVCBWT0lEICAgKkZk dCwNCj4gDQo+ICsgIElOIElOVDMyICAgICAgICBQYXJlbnRPZmZzZXQsDQo+IA0KPiArICBJTiBD T05TVCBDSEFSOCAgKk5hbWUsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICAgTmFtZUxlbmd0aA0K PiANCj4gKyAgKQ0KPiANCj4gK3sNCj4gDQo+ICsgIHJldHVybiBmZHRfc3Vibm9kZV9vZmZzZXRf bmFtZWxlbiAoRmR0LCBQYXJlbnRPZmZzZXQsIE5hbWUsIE5hbWVMZW5ndGgpOw0KPiANCj4gK30N Cj4gDQo+ICsNCj4gDQo+ICsvKioNCj4gDQo+ICsgIFJldHVybnMgYSBvZmZzZXQgb2YgZmlyc3Qg bm9kZSB3aGljaCBpbmNsdWRlcyB0aGUgZ2l2ZW4gcHJvcGVydHkgbmFtZSBhbmQgdmFsdWUuDQo+ IA0KPiArDQo+IA0KPiArICBAcGFyYW1baW5dIEZkdCAgICAgICAgICAgICBUaGUgcG9pbnRlciB0 byBGRFQgYmxvYi4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gU3RhcnRPZmZzZXQgICAgIFRoZSBvZmZz ZXQgdG8gdGhlIHN0YXJ0aW5nIG5vZGUgdG8gZmluZC4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gUHJv cGVydHlOYW1lICAgIFRoZSBwcm9wZXJ0eSBuYW1lIHRvIHNlYXJjaCB0aGUgbm9kZSBpbmNsdWRp bmcgdGhlIG5hbWVkIHByb3BlcnR5Lg0KPiANCj4gKyAgQHBhcmFtW2luXSBQcm9wZXJ0eVZhbHVl ICAgVGhlIHByb3BlcnR5IHZhbHVlIHRvIGNoZWNrIHRoZSBzYW1lIHByb3BlcnR5IHZhbHVlLg0K PiANCj4gKyAgQHBhcmFtW2luXSBQcm9wZXJ0eUxlbmd0aCAgVGhlIGxlbmd0aCBvZiB0aGUgdmFs dWUgaW4gUHJvcGVydFZhbHVlLg0KPiANCj4gKw0KPiANCj4gKyAgQHJldHVybiBUaGUgb2Zmc2V0 IHRvIG5vZGUgb2Zmc2V0IHdpdGggZ2l2ZW4gcHJvcGVydHkuDQo+IA0KPiArDQo+IA0KPiArKiov DQo+IA0KPiArSU5UMzINCj4gDQo+ICtFRklBUEkNCj4gDQo+ICtGZHROb2RlT2Zmc2V0QnlQcm9w VmFsdWUgKA0KPiANCj4gKyAgSU4gQ09OU1QgVk9JRCAgICpGZHQsDQo+IA0KPiArICBJTiBJTlQz MiAgICAgICAgU3RhcnRPZmZzZXQsDQo+IA0KPiArICBJTiBDT05TVCBDSEFSOCAgKlByb3BlcnR5 TmFtZSwNCj4gDQo+ICsgIElOIENPTlNUIFZPSUQgICAqUHJvcGVydHlWYWx1ZSwNCj4gDQo+ICsg IElOIElOVDMyICAgICAgICBQcm9wZXJ0eUxlbmd0aA0KPiANCj4gKyAgKQ0KPiANCj4gK3sNCj4g DQo+ICsgIHJldHVybiBmZHRfbm9kZV9vZmZzZXRfYnlfcHJvcF92YWx1ZSAoRmR0LCBTdGFydE9m ZnNldCwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVZhbHVlLCBQcm9wZXJ0eUxlbmd0aCk7DQo+IA0K PiArfQ0KPiANCj4gKw0KPiANCj4gKy8qKg0KPiANCj4gKyAgUmV0dXJucyBhIHByb3BlcnR5IHdp dGggdGhlIGdpdmVuIG5hbWUgZnJvbSB0aGUgZ2l2ZW4gbm9kZS4NCj4gDQo+ICsNCj4gDQo+ICsg IEBwYXJhbVtpbl0gRmR0ICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gRkRUIGJsb2IuDQo+IA0K PiArICBAcGFyYW1baW5dIE5vZGVPZmZzZXQgICAgIFRoZSBvZmZzZXQgdG8gdGhlIGdpdmVuIG5v ZGUuDQo+IA0KPiArICBAcGFyYW1baW5dIE5hbWUgICAgICAgICAgIFRoZSBuYW1lIHRvIHRoZSBw cm9wZXJ0eSB3aGljaCBuZWVkIGJlIHNlYXJjaGVkDQo+IA0KPiArICBAcGFyYW1baW5dIExlbmd0 aCAgICAgICAgIFRoZSBsZW5ndGggdG8gdGhlIHNpemUgb2YgdGhlIHByb3BlcnR5IGZvdW5kLg0K PiANCj4gKw0KPiANCj4gKyAgQHJldHVybiBUaGUgcHJvcGVydHkgdG8gdGhlIHN0cnVjdHVyZSBv ZiB0aGUgZm91bmQgcHJvcGVydHkuDQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArQ09OU1Qg c3RydWN0IGZkdF9wcm9wZXJ0eSAqDQo+IA0KPiArRUZJQVBJDQo+IA0KPiArRmR0R2V0UHJvcGVy dHkgKA0KPiANCj4gKyAgSU4gQ09OU1QgVk9JRCAgICpGZHQsDQo+IA0KPiArICBJTiBJTlQzMiAg ICAgICAgTm9kZU9mZnNldCwNCj4gDQo+ICsgIElOIENPTlNUIENIQVI4ICAqTmFtZSwNCj4gDQo+ ICsgIElOIElOVDMyICAgICAgICAqTGVuZ3RoDQo+IA0KPiArICApDQo+IA0KPiArew0KPiANCj4g KyAgcmV0dXJuIGZkdF9nZXRfcHJvcGVydHkgKEZkdCwgTm9kZU9mZnNldCwgTmFtZSwgTGVuZ3Ro KTsNCj4gDQo+ICt9DQo+IA0KPiArDQo+IA0KPiArLyoqDQo+IA0KPiArICBSZXR1cm5zIGEgb2Zm c2V0IG9mIGZpcnN0IHByb3BlcnR5IGluIHRoZSBnaXZlbiBub2RlLg0KPiANCj4gKw0KPiANCj4g KyAgQHBhcmFtW2luXSBGZHQgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBGRFQgYmxvYi4NCj4g DQo+ICsgIEBwYXJhbVtpbl0gTm9kZU9mZnNldCAgICAgVGhlIG9mZnNldCB0byB0aGUgbm9kZSB3 aGljaCBuZWVkIGJlIHNlYXJjaGVkLg0KPiANCj4gKw0KPiANCj4gKyAgQHJldHVybiBUaGUgb2Zm c2V0IHRvIGZpcnN0IHByb3BlcnR5IG9mZnNldCBpbiB0aGUgZ2l2ZW4gbm9kZS4NCj4gDQo+ICsN Cj4gDQo+ICsqKi8NCj4gDQo+ICtJTlQzMg0KPiANCj4gK0VGSUFQSQ0KPiANCj4gK0ZkdEZpcnN0 UHJvcGVydHlPZmZzZXQgKA0KPiANCj4gKyAgSU4gQ09OU1QgVk9JRCAgKkZkdCwNCj4gDQo+ICsg IElOIElOVDMyICAgICAgIE5vZGVPZmZzZXQNCj4gDQo+ICsgICkNCj4gDQo+ICt7DQo+IA0KPiAr ICByZXR1cm4gZmR0X2ZpcnN0X3Byb3BlcnR5X29mZnNldCAoRmR0LCBOb2RlT2Zmc2V0KTsNCj4g DQo+ICt9DQo+IA0KPiArDQo+IA0KPiArLyoqDQo+IA0KPiArICBSZXR1cm5zIGEgb2Zmc2V0IG9m IG5leHQgcHJvcGVydHkgZnJvbSB0aGUgZ2l2ZW4gcHJvcGVydHkuDQo+IA0KPiArDQo+IA0KPiAr ICBAcGFyYW1baW5dIEZkdCAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZEVCBibG9iLg0KPiAN Cj4gKyAgQHBhcmFtW2luXSBPZmZzZXQgICAgICAgICBUaGUgb2Zmc2V0IHRvIHByZXZpb3VzIHBy b3BlcnR5Lg0KPiANCj4gKw0KPiANCj4gKyAgQHJldHVybiBUaGUgb2Zmc2V0IHRvIG5leHQgcHJv cGVydHkgb2Zmc2V0Lg0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4gK0lOVDMyDQo+IA0KPiAr RUZJQVBJDQo+IA0KPiArRmR0TmV4dFByb3BlcnR5T2Zmc2V0ICgNCj4gDQo+ICsgIElOIENPTlNU IFZPSUQgICpGZHQsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICBPZmZzZXQNCj4gDQo+ICsgICkN Cj4gDQo+ICt7DQo+IA0KPiArICByZXR1cm4gZmR0X25leHRfcHJvcGVydHlfb2Zmc2V0IChGZHQs IE9mZnNldCk7DQo+IA0KPiArfQ0KPiANCj4gKw0KPiANCj4gKy8qKg0KPiANCj4gKyAgUmV0dXJu cyBhIHByb3BlcnR5IGZyb20gdGhlIGdpdmVuIG9mZnNldCBvZiB0aGUgcHJvcGVydHkuDQo+IA0K PiArDQo+IA0KPiArICBAcGFyYW1baW5dIEZkdCAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZE VCBibG9iLg0KPiANCj4gKyAgQHBhcmFtW2luXSBPZmZzZXQgICAgICAgICBUaGUgb2Zmc2V0IHRv IHRoZSBnaXZlbiBvZmZzZXQgb2YgdGhlIHByb3BlcnR5Lg0KPiANCj4gKyAgQHBhcmFtW2luXSBM ZW5ndGggICAgICAgICBUaGUgbGVuZ3RoIHRvIHRoZSBzaXplIG9mIHRoZSBwcm9wZXJ0eSBmb3Vu ZC4NCj4gDQo+ICsNCj4gDQo+ICsgIEByZXR1cm4gVGhlIHByb3BlcnR5IHRvIHRoZSBzdHJ1Y3R1 cmUgb2YgdGhlIGdpdmVuIHByb3BlcnR5IG9mZnNldC4NCj4gDQo+ICsNCj4gDQo+ICsqKi8NCj4g DQo+ICtDT05TVCBzdHJ1Y3QgZmR0X3Byb3BlcnR5ICoNCj4gDQo+ICtFRklBUEkNCj4gDQo+ICtG ZHRHZXRQcm9wZXJ0eUJ5T2Zmc2V0ICgNCj4gDQo+ICsgIElOIENPTlNUIFZPSUQgICpGZHQsDQo+ IA0KPiArICBJTiBJTlQzMiAgICAgICBPZmZzZXQsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICAq TGVuZ3RoDQo+IA0KPiArICApDQo+IA0KPiArew0KPiANCj4gKyAgcmV0dXJuIGZkdF9nZXRfcHJv cGVydHlfYnlfb2Zmc2V0IChGZHQsIE9mZnNldCwgTGVuZ3RoKTsNCj4gDQo+ICt9DQo+IA0KPiAr DQo+IA0KPiArLyoqDQo+IA0KPiArICBSZXR1cm5zIGEgc3RyaW5nIGJ5IHRoZSBnaXZlbiBzdHJp bmcgb2Zmc2V0Lg0KPiANCj4gKw0KPiANCj4gKyAgQHBhcmFtW2luXSBGZHQgICAgICAgICAgICBU aGUgcG9pbnRlciB0byBGRFQgYmxvYi4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gU3RyT2Zmc2V0ICAg ICAgVGhlIG9mZnNldCB0byB0aGUgbG9jYXRpb24gaW4gdGhlIHN0cmluZ3MgYmxvY2sgb2YgRkRU Lg0KPiANCj4gKyAgQHBhcmFtW2luXSBMZW5ndGggICAgICAgICBUaGUgbGVuZ3RoIHRvIHRoZSBz aXplIG9mIHN0cmluZyB3aGljaCBuZWVkIGJlIHJldHJpZXZlZC4NCj4gDQo+ICsNCj4gDQo+ICsg IEByZXR1cm4gVGhlIHN0cmluZyB0byB0aGUgZ2l2ZW4gc3RyaW5nIG9mZnNldC4NCj4gDQo+ICsN Cj4gDQo+ICsqKi8NCj4gDQo+ICtDT05TVCBDSEFSOCAqDQo+IA0KPiArRUZJQVBJDQo+IA0KPiAr RmR0R2V0U3RyaW5nICgNCj4gDQo+ICsgIElOIENPTlNUIFZPSUQgICpGZHQsDQo+IA0KPiArICBJ TiBJTlQzMiAgICAgICBTdHJPZmZzZXQsDQo+IA0KPiArICBJTiBJTlQzMiAgICAgICAqTGVuZ3Ro ICAgICAgICBPUFRJT05BTA0KPiANCj4gKyAgKQ0KPiANCj4gK3sNCj4gDQo+ICsgIHJldHVybiBm ZHRfZ2V0X3N0cmluZyAoRmR0LCBTdHJPZmZzZXQsIExlbmd0aCk7DQo+IA0KPiArfQ0KPiANCj4g Kw0KPiANCj4gKy8qKg0KPiANCj4gKyAgQWRkIGEgbmV3IG5vZGUgdG8gdGhlIEZEVC4NCj4gDQo+ ICsNCj4gDQo+ICsgIEBwYXJhbVtpbl0gRmR0ICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gRkRU IGJsb2IuDQo+IA0KPiArICBAcGFyYW1baW5dIFBhcmVudE9mZnNldCAgIFRoZSBvZmZzZXQgdG8g dGhlIG5vZGUgb2Zmc2V0IHdoaWNoIHdhbnQgdG8gYWRkIGluLg0KPiANCj4gKyAgQHBhcmFtW2lu XSBOYW1lICAgICAgICAgICBUaGUgbmFtZSB0byBuYW1lIHRoZSBub2RlLg0KPiANCj4gKw0KPiAN Cj4gKyAgQHJldHVybiAgVGhlIG9mZnNldCB0byB0aGUgbmV3IG5vZGUuDQo+IA0KPiArDQo+IA0K PiArKiovDQo+IA0KPiArSU5UMzINCj4gDQo+ICtFRklBUEkNCj4gDQo+ICtGZHRBZGRTdWJub2Rl ICgNCj4gDQo+ICsgIElOIFZPSUQgICAgICAgICAqRmR0LA0KPiANCj4gKyAgSU4gSU5UMzIgICAg ICAgIFBhcmVudE9mZnNldCwNCj4gDQo+ICsgIElOIENPTlNUIENIQVI4ICAqTmFtZQ0KPiANCj4g KyAgKQ0KPiANCj4gK3sNCj4gDQo+ICsgIHJldHVybiBmZHRfYWRkX3N1Ym5vZGUgKEZkdCwgUGFy ZW50T2Zmc2V0LCBOYW1lKTsNCj4gDQo+ICt9DQo+IA0KPiArDQo+IA0KPiArLyoqDQo+IA0KPiAr ICBBZGQgb3IgbW9kaWZ5IGEgcG9ycGVydHkgaW4gdGhlIGdpdmVuIG5vZGUuDQo+IA0KPiArDQo+ IA0KPiArICBAcGFyYW1baW5dIEZkdCAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZEVCBibG9i Lg0KPiANCj4gKyAgQHBhcmFtW2luXSBOb2RlT2Zmc2V0ICAgICBUaGUgb2Zmc2V0IHRvIHRoZSBu b2RlIG9mZnNldCB3aGljaCB3YW50IHRvIGFkZCBpbi4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gTmFt ZSAgICAgICAgICAgVGhlIG5hbWUgdG8gbmFtZSB0aGUgcHJvcGVydHkuDQo+IA0KPiArICBAcGFy YW1baW5dIFZhbHVlICAgICAgICAgIFRoZSB2YWx1ZSB0byB0aGUgcHJvcGVydHkgdmFsdWUuDQo+ IA0KPiArICBAcGFyYW1baW5dIExlbmd0aCAgICAgICAgIFRoZSBsZW5ndGggdG8gdGhlIHNpemUg b2YgdGhlIHByb3BlcnR5Lg0KPiANCj4gKw0KPiANCj4gKyAgQHJldHVybiAgWmVybyBmb3Igc3Vj Y2Vzc2Z1bGx5LCBvdGhlcndpc2UgZmFpbGVkLg0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4g K0lOVDMyDQo+IA0KPiArRUZJQVBJDQo+IA0KPiArRmR0U2V0UHJvcCAoDQo+IA0KPiArICBJTiBW T0lEICAgICAgICAgKkZkdCwNCj4gDQo+ICsgIElOIElOVDMyICAgICAgICBOb2RlT2Zmc2V0LA0K PiANCj4gKyAgSU4gQ09OU1QgQ0hBUjggICpOYW1lLA0KPiANCj4gKyAgSU4gQ09OU1QgVk9JRCAg ICpWYWx1ZSwNCj4gDQo+ICsgIElOIFVJTlQzMiAgICAgICBMZW5ndGgNCj4gDQo+ICsgICkNCj4g DQo+ICt7DQo+IA0KPiArICByZXR1cm4gZmR0X3NldHByb3AgKEZkdCwgTm9kZU9mZnNldCwgTmFt ZSwgVmFsdWUsIChpbnQpTGVuZ3RoKTsNCj4gDQo+ICt9DQo+IA0KPiBkaWZmIC0tZ2l0IGEvTWRl UGtnL0xpYnJhcnkvQmFzZUZkdExpYi9MaWJGZHRTdXBwb3J0LmggYi9NZGVQa2cvTGlicmFyeS9C YXNlRmR0TGliL0xpYkZkdFN1cHBvcnQuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwMDAwLi41OGIwYmI0MDNlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvTWRlUGtn L0xpYnJhcnkvQmFzZUZkdExpYi9MaWJGZHRTdXBwb3J0LmgNCj4gQEAgLTAsMCArMSwxMDIgQEAN Cj4gKy8qKiBAZmlsZQ0KPiANCj4gKyAgUm9vdCBpbmNsdWRlIGZpbGUgb2YgQyBydW50aW1lIGxp YnJhcnkgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhpcmQtcGFydHkNCj4gDQo+ICsgIGxpYmZk dCBsaWJyYXJ5Lg0KPiANCj4gKw0KPiANCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiArICBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiANCj4gKw0KPiANCj4gKyoqLw0K PiANCj4gKw0KPiANCj4gKyNpZm5kZWYgRkRUX0xJQl9TVVBQT1JUX0hfDQo+IA0KPiArI2RlZmlu ZSBGRFRfTElCX1NVUFBPUlRfSF8NCj4gDQo+ICsNCj4gDQo+ICsjaW5jbHVkZSA8QmFzZS5oPg0K PiANCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCj4gDQo+ICsjaW5jbHVkZSA8TGli cmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+IA0KPiArDQo+IA0KPiArdHlwZWRlZiBVSU5UOCAgICB1 aW50OF90Ow0KPiANCj4gK3R5cGVkZWYgVUlOVDE2ICAgdWludDE2X3Q7DQo+IA0KPiArdHlwZWRl ZiBJTlQzMiAgICBpbnQzMl90Ow0KPiANCj4gK3R5cGVkZWYgVUlOVDMyICAgdWludDMyX3Q7DQo+ IA0KPiArdHlwZWRlZiBVSU5UNjQgICB1aW50NjRfdDsNCj4gDQo+ICt0eXBlZGVmIFVJTlROICAg IHVpbnRwdHJfdDsNCj4gDQo+ICt0eXBlZGVmIFVJTlROICAgIHNpemVfdDsNCj4gDQo+ICt0eXBl ZGVmIEJPT0xFQU4gIGJvb2w7DQo+IA0KPiArDQo+IA0KPiArI2RlZmluZSB0cnVlICAgKDEgPT0g MSkNCj4gDQo+ICsjZGVmaW5lIGZhbHNlICAoMSA9PSAwKQ0KPiANCj4gKw0KPiANCj4gKy8vDQo+ IA0KPiArLy8gRGVmaW5pdGlvbnMgZm9yIGdsb2JhbCBjb25zdGFudHMgdXNlZCBieSBsaWJmZHQg bGlicmFyeSByb3V0aW5lcw0KPiANCj4gKy8vDQo+IA0KPiArI2lmbmRlZiBJTlRfTUFYDQo+IA0K PiArI2RlZmluZSBJTlRfTUFYICAweDdGRkZGRkZGICAgICAgICAgICAgICAvKiBNYXhpbXVtIChz aWduZWQpIGludCB2YWx1ZSAqLw0KPiANCj4gKyNlbmRpZg0KPiANCj4gKyNkZWZpbmUgSU5UMzJf TUFYICAgICAgICAweDdGRkZGRkZGICAgICAgLyogTWF4aW11bSAoc2lnbmVkKSBpbnQzMiB2YWx1 ZSAqLw0KPiANCj4gKyNkZWZpbmUgVUlOVDMyX01BWCAgICAgICAweEZGRkZGRkZGICAgICAgLyog TWF4aW11bSB1bnNpZ25lZCBpbnQzMiB2YWx1ZSAqLw0KPiANCj4gKyNkZWZpbmUgTUFYX1NUUklO R19TSVpFICAweDEwMDANCj4gDQo+ICsNCj4gDQo+ICsvLw0KPiANCj4gKy8vIEZ1bmN0aW9uIHBy b3RvdHlwZXMgb2YgbGliZmR0IExpYnJhcnkgcm91dGluZXMNCj4gDQo+ICsvLw0KPiANCj4gK3Zv aWQgKg0KPiANCj4gK21lbXNldCAgICAgKA0KPiANCj4gKyAgdm9pZCAqLA0KPiANCj4gKyAgaW50 LA0KPiANCj4gKyAgc2l6ZV90DQo+IA0KPiArICApOw0KPiANCj4gKw0KPiANCj4gK2ludA0KPiAN Cj4gK21lbWNtcCAgICAgICgNCj4gDQo+ICsgIGNvbnN0IHZvaWQgKiwNCj4gDQo+ICsgIGNvbnN0 IHZvaWQgKiwNCj4gDQo+ICsgIHNpemVfdA0KPiANCj4gKyAgKTsNCj4gDQo+ICsNCj4gDQo+ICtp bnQNCj4gDQo+ICtzdHJjbXAgICAgICAoDQo+IA0KPiArICBjb25zdCBjaGFyICosDQo+IA0KPiAr ICBjb25zdCBjaGFyICoNCj4gDQo+ICsgICk7DQo+IA0KPiArDQo+IA0KPiArY2hhciAqDQo+IA0K PiArc3RyY2hyICAgICAoDQo+IA0KPiArICBjb25zdCBjaGFyICosDQo+IA0KPiArICBpbnQNCj4g DQo+ICsgICk7DQo+IA0KPiArDQo+IA0KPiArY2hhciAqDQo+IA0KPiArc3RycmNociAgICAoDQo+ IA0KPiArICBjb25zdCBjaGFyICosDQo+IA0KPiArICBpbnQNCj4gDQo+ICsgICk7DQo+IA0KPiAr DQo+IA0KPiArdW5zaWduZWQgbG9uZw0KPiANCj4gK3N0cnRvdWwgICAgICgNCj4gDQo+ICsgIGNv bnN0IGNoYXIgKiwNCj4gDQo+ICsgIGNoYXIgKiosDQo+IA0KPiArICBpbnQNCj4gDQo+ICsgICk7 DQo+IA0KPiArDQo+IA0KPiArY2hhciAqDQo+IA0KPiArc3RyY3B5ICgNCj4gDQo+ICsgIGNoYXIg ICAgICAgICpzdHJEZXN0LA0KPiANCj4gKyAgY29uc3QgY2hhciAgKnN0clNvdXJjZQ0KPiANCj4g KyAgKTsNCj4gDQo+ICsNCj4gDQo+ICsvLw0KPiANCj4gKy8vIE1hY3JvcyB0aGF0IGRpcmVjdGx5 IG1hcCBmdW5jdGlvbnMgdG8gQmFzZUxpYiwgQmFzZU1lbW9yeUxpYiwgYW5kIERlYnVnTGliIGZ1 bmN0aW9ucw0KPiANCj4gKy8vDQo+IA0KPiArI2RlZmluZSBtZW1jcHkoZGVzdCwgc291cmNlLCBj b3VudCkgICAgICAgICBDb3B5TWVtKGRlc3Qsc291cmNlLCAoVUlOVE4pKGNvdW50KSkNCj4gDQo+ ICsjZGVmaW5lIG1lbXNldChkZXN0LCBjaCwgY291bnQpICAgICAgICAgICAgIFNldE1lbShkZXN0 LCAoVUlOVE4pKGNvdW50KSwoVUlOVDgpKGNoKSkNCj4gDQo+ICsjZGVmaW5lIG1lbWNocihidWYs IGNoLCBjb3VudCkgICAgICAgICAgICAgIFNjYW5NZW04KGJ1ZiwgKFVJTlROKShjb3VudCksKFVJ TlQ4KWNoKQ0KPiANCj4gKyNkZWZpbmUgbWVtY21wKGJ1ZjEsIGJ1ZjIsIGNvdW50KSAgICAgICAg ICAgKGludCkoQ29tcGFyZU1lbShidWYxLCBidWYyLCAoVUlOVE4pKGNvdW50KSkpDQo+IA0KPiAr I2RlZmluZSBtZW1tb3ZlKGRlc3QsIHNvdXJjZSwgY291bnQpICAgICAgICBDb3B5TWVtKGRlc3Qs IHNvdXJjZSwgKFVJTlROKShjb3VudCkpDQo+IA0KPiArI2RlZmluZSBzdHJsZW4oc3RyKSAgICAg ICAgICAgICAgICAgICAgICAgICAoc2l6ZV90KShBc2NpaVN0ckxlbihzdHIpKQ0KPiANCj4gKyNk ZWZpbmUgc3RybmxlbihzdHIsIGNvdW50KSAgICAgICAgICAgICAgICAgKHNpemVfdCkoQXNjaWlT dHJuTGVuUyhzdHIsIGNvdW50KSkNCj4gDQo+ICsjZGVmaW5lIHN0cm5jcHkoc3RyRGVzdCwgc3Ry U291cmNlLCBjb3VudCkgIEFzY2lpU3RybkNweVMoc3RyRGVzdCwgTUFYX1NUUklOR19TSVpFLCBz dHJTb3VyY2UsIChVSU5UTiljb3VudCkNCj4gDQo+ICsjZGVmaW5lIHN0cmNhdChzdHJEZXN0LCBz dHJTb3VyY2UpICAgICAgICAgIEFzY2lpU3RyQ2F0UyhzdHJEZXN0LCBNQVhfU1RSSU5HX1NJWkUs IHN0clNvdXJjZSkNCj4gDQo+ICsjZGVmaW5lIHN0cmNtcChzdHJpbmcxLCBzdHJpbmcyLCBjb3Vu dCkgICAgIChpbnQpKEFzY2lpU3RyQ21wKHN0cmluZzEsIHN0cmluZzIpKQ0KPiANCj4gKyNkZWZp bmUgc3RybmNtcChzdHJpbmcxLCBzdHJpbmcyLCBjb3VudCkgICAgKGludCkoQXNjaWlTdHJuQ21w KHN0cmluZzEsIHN0cmluZzIsIChVSU5UTikoY291bnQpKSkNCj4gDQo+ICsNCj4gDQo+ICsjZW5k aWYgLyogRkRUX0xJQl9TVVBQT1JUX0hfICovDQo+IA0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xp YnJhcnkvQmFzZUZkdExpYi9MaWJGZHRXcmFwcGVyLmMgYi9NZGVQa2cvTGlicmFyeS9CYXNlRmR0 TGliL0xpYkZkdFdyYXBwZXIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAw MDAwMDAwLi4zZjFjYzY5ZGM2DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvTWRlUGtnL0xpYnJh cnkvQmFzZUZkdExpYi9MaWJGZHRXcmFwcGVyLmMNCj4gQEAgLTAsMCArMSwxMzggQEANCj4gKy8q KiBAZmlsZQ0KPiANCj4gKyAgUm9vdCBpbmNsdWRlIGZpbGUgb2YgQyBydW50aW1lIGxpYnJhcnkg dG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhpcmQtcGFydHkNCj4gDQo+ICsgIGxpYmZkdCBsaWJy YXJ5Lg0KPiANCj4gKw0KPiANCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiArICBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4g Kw0KPiANCj4gKyNpbmNsdWRlICJMaWJGZHRTdXBwb3J0LmgiDQo+IA0KPiArI2luY2x1ZGUgPExp YnJhcnkvRGVidWdMaWIuaD4NCj4gDQo+ICsNCj4gDQo+ICsvKioNCj4gDQo+ICsgIFJldHVybnMg dGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSBOdWxsLXRlcm1pbmF0ZWQgQVNDSUkgY2hhcmFjdGVy DQo+IA0KPiArICBpbiBhIE51bGwtdGVybWluYXRlZCBBU0NJSSBzdHJpbmcuDQo+IA0KPiArDQo+ IA0KPiArICBUaGlzIGZ1bmN0aW9uIHNjYW5zIHRoZSBjb250ZW50cyBvZiB0aGUgQVNDSUkgc3Ry aW5nIHNwZWNpZmllZCBieSBzDQo+IA0KPiArICBhbmQgcmV0dXJucyB0aGUgZmlyc3Qgb2NjdXJy ZW5jZSBvZiBjLiBJZiBjIGlzIG5vdCBmb3VuZCBpbiBzLA0KPiANCj4gKyAgdGhlbiBOVUxMIGlz IHJldHVybmVkLiBJZiB0aGUgbGVuZ3RoIG9mIGMgaXMgemVybywgdGhlbiBzIGlzIHJldHVybmVk Lg0KPiANCj4gKw0KPiANCj4gKyAgQHBhcmFtICBzICAgICAgICAgICAgICAgVGhlIHBvaW50ZXIg dG8gYSBOdWxsLXRlcm1pbmF0ZWQgQVNDSUkgc3RyaW5nLg0KPiANCj4gKyAgQHBhcmFtICBjICAg ICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gYSBOdWxsLXRlcm1pbmF0ZWQgQVNDSUkgY2hhcmFj dGVyIHRvIHNlYXJjaCBmb3IuDQo+IA0KPiArDQo+IA0KPiArICBAcmV0dmFsIE5VTEwgICAgICAg ICAgICBJZiB0aGUgYyBkb2VzIG5vdCBhcHBlYXIgaW4gcy4NCj4gDQo+ICsgIEByZXR2YWwgb3Ro ZXJzICAgICAgICAgIElmIHRoZXJlIGlzIGEgbWF0Y2ggcmV0dXJuIHRoZSBmaXJzdCBvY2N1cnJl bmNlIG9mIGMuDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgbGVuZ3Ro IG9mIGMgaXMgemVybyxyZXR1cm4gcy4NCj4gDQo+ICsNCj4gDQo+ICsqKi8NCj4gDQo+ICtjaGFy ICoNCj4gDQo+ICtzdHJjaHIgKA0KPiANCj4gKyAgY29uc3QgY2hhciAgKnMsDQo+IA0KPiArICBp bnQgICAgICAgICBjDQo+IA0KPiArICApDQo+IA0KPiArew0KPiANCj4gKyAgY2hhciAgcGF0dGVy blsyXTsNCj4gDQo+ICsNCj4gDQo+ICsgIHBhdHRlcm5bMF0gPSAoQ0hBUjgpYzsNCj4gDQo+ICsg IHBhdHRlcm5bMV0gPSAwOw0KPiANCj4gKyAgcmV0dXJuIEFzY2lpU3RyU3RyIChzLCBwYXR0ZXJu KTsNCj4gDQo+ICt9DQo+IA0KPiArDQo+IA0KPiArLyoqDQo+IA0KPiArICBSZXR1cm5zIHRoZSBs YXN0IG9jY3VycmVuY2Ugb2YgYSBOdWxsLXRlcm1pbmF0ZWQgQVNDSUkgY2hhcmFjdGVyDQo+IA0K PiArICBpbiBhIE51bGwtdGVybWluYXRlZCBBU0NJSSBzdHJpbmcuDQo+IA0KPiArDQo+IA0KPiAr ICBUaGlzIGZ1bmN0aW9uIHNjYW5zIHRoZSBjb250ZW50cyBvZiB0aGUgQVNDSUkgc3RyaW5nIHNw ZWNpZmllZCBieSBzDQo+IA0KPiArICBhbmQgcmV0dXJucyB0aGUgbGFzdCBvY2N1cnJlbmNlIG9m IGMuIElmIGMgaXMgbm90IGZvdW5kIGluIHMsDQo+IA0KPiArICB0aGVuIE5VTEwgaXMgcmV0dXJu ZWQuIElmIHRoZSBsZW5ndGggb2YgYyBpcyB6ZXJvLCB0aGVuIHMgaXMgcmV0dXJuZWQuDQo+IA0K PiArDQo+IA0KPiArICBAcGFyYW0gIHMgICAgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBhIE51 bGwtdGVybWluYXRlZCBBU0NJSSBzdHJpbmcuDQo+IA0KPiArICBAcGFyYW0gIGMgICAgICAgICAg ICAgICBUaGUgcG9pbnRlciB0byBhIE51bGwtdGVybWluYXRlZCBBU0NJSSBjaGFyYWN0ZXIgdG8g c2VhcmNoIGZvci4NCj4gDQo+ICsNCj4gDQo+ICsgIEByZXR2YWwgTlVMTCAgICAgICAgICAgIElm IHRoZSBjIGRvZXMgbm90IGFwcGVhciBpbiBzLg0KPiANCj4gKyAgQHJldHZhbCBvdGhlcnMgICAg ICAgICAgSWYgdGhlcmUgaXMgYSBtYXRjaCByZXR1cm4gdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBj Lg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGxlbmd0aCBvZiBjIGlz IHplcm8scmV0dXJuIHMuDQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArY2hhciAqDQo+IA0K PiArc3RycmNociAoDQo+IA0KPiArICBjb25zdCBjaGFyICAqcywNCj4gDQo+ICsgIGludCAgICAg ICAgIGMNCj4gDQo+ICsgICkNCj4gDQo+ICt7DQo+IA0KPiArICBjaGFyICAgICAgICAgcGF0dGVy blsyXTsNCj4gDQo+ICsgIENPTlNUIENIQVI4ICAqTGFzdE1hdGNoOw0KPiANCj4gKyAgQ09OU1Qg Q0hBUjggICpTdHJpbmdUbXA7DQo+IA0KPiArICBDT05TVCBDSEFSOCAgKlNlYXJjaFN0cmluZzsN Cj4gDQo+ICsNCj4gDQo+ICsgIHBhdHRlcm5bMF0gICA9IChDSEFSOCljOw0KPiANCj4gKyAgcGF0 dGVyblsxXSAgID0gMDsNCj4gDQo+ICsgIFNlYXJjaFN0cmluZyA9IHBhdHRlcm47DQo+IA0KPiAr DQo+IA0KPiArICAvLw0KPiANCj4gKyAgLy8gUmV0dXJuIE5VTEwgaWYgYm90aCBzdHJpbmdzIGFy ZSBsZXNzIGxvbmcgdGhhbiBQY2RNYXhpbXVtQXNjaWlTdHJpbmdMZW5ndGgNCj4gDQo+ICsgIC8v DQo+IA0KPiArICBpZiAoKEFzY2lpU3RyU2l6ZSAocykgPT0gMCkgfHwgKEFzY2lpU3RyU2l6ZSAo U2VhcmNoU3RyaW5nKSA9PSAwKSkgew0KPiANCj4gKyAgICByZXR1cm4gTlVMTDsNCj4gDQo+ICsg IH0NCj4gDQo+ICsNCj4gDQo+ICsgIGlmICgqU2VhcmNoU3RyaW5nID09ICdcMCcpIHsNCj4gDQo+ ICsgICAgcmV0dXJuIChDSEFSOCAqKXM7DQo+IA0KPiArICB9DQo+IA0KPiArDQo+IA0KPiArICBM YXN0TWF0Y2ggPSBOVUxMOw0KPiANCj4gKyAgZG8gew0KPiANCj4gKyAgICBTdHJpbmdUbXAgPSBB c2NpaVN0clN0ciAocywgU2VhcmNoU3RyaW5nKTsNCj4gDQo+ICsNCj4gDQo+ICsgICAgaWYgKFN0 cmluZ1RtcCA9PSBOVUxMKSB7DQo+IA0KPiArICAgICAgYnJlYWs7DQo+IA0KPiArICAgIH0NCj4g DQo+ICsNCj4gDQo+ICsgICAgTGFzdE1hdGNoID0gU3RyaW5nVG1wOw0KPiANCj4gKyAgICBzICAg ICAgICAgPSBTdHJpbmdUbXAgKyAxOw0KPiANCj4gKyAgfSB3aGlsZSAocyAhPSBOVUxMKTsNCj4g DQo+ICsNCj4gDQo+ICsgIHJldHVybiAoQ0hBUjggKilMYXN0TWF0Y2g7DQo+IA0KPiArfQ0KPiAN Cj4gKw0KPiANCj4gKy8qKg0KPiANCj4gKyAgQ29udmVydCBhIE51bGwtdGVybWluYXRlZCBBc2Np aSBkZWNpbWFsIG9yIGhleGFkZWNpbWFsIHN0cmluZyB0byBhIHZhbHVlIG9mIHR5cGUgVUlOVE4u DQo+IA0KPiArDQo+IA0KPiArICBUaGlzIGZ1bmN0aW9uIG91dHB1dHMgYSB2YWx1ZSBvZiB0eXBl IFVJTlROIGJ5IGludGVycHJldGluZyB0aGUgY29udGVudHMgb2YNCj4gDQo+ICsgIHRoZSBBc2Np aSBzdHJpbmcgc3BlY2lmaWVkIGJ5IFN0cmluZyBhcyBhIGRlY2ltYWwgb3IgaGV4YWRlY2ltYWwg bnVtYmVyLg0KPiANCj4gKw0KPiANCj4gKyAgQHBhcmFtICBucHRyICAgICAgICAgICAgICAgICAg ICAgUG9pbnRlciB0byBhIE51bGwtdGVybWluYXRlZCBBc2NpaSBzdHJpbmcuDQo+IA0KPiArICBA cGFyYW0gIGVuZHB0ciAgICAgICAgICAgICAgICAgICBQb2ludGVyIHRvIGNoYXJhY3RlciB0aGF0 IHN0b3BzIHNjYW4uDQo+IA0KPiArICBAcGFyYW0gIGJhc2UgICAgICAgICAgICAgICAgICAgICBQ b2ludGVyIHRvIGRlY2ltYWwgb3IgaGV4YWRlY2ltYWwuDQo+IA0KPiArDQo+IA0KPiArICBAcmV0 dmFsIE1BWF9VSU5UTiAgICAgICAgICAgICAgICBJZiBucHRyIGlzIE5VTEwuDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBlbmRwdHIgaXMgTlVMTC4NCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIGJhc2UgaXMgbm90IDEwIG9y IDE2Lg0KPiANCj4gKyAgQHJldHZhbCBvdGhlcnMgICAgICAgICAgICAgICAgICAgVmFsdWUgaXMg dHJhbnNsYXRlZCBmcm9tIFN0cmluZy4NCj4gDQo+ICsNCj4gDQo+ICsqKi8NCj4gDQo+ICt1bnNp Z25lZCBsb25nDQo+IA0KPiArc3RydG91bCAoDQo+IA0KPiArICBjb25zdCBjaGFyICAqbnB0ciwN Cj4gDQo+ICsgIGNoYXIgICAgICAgICoqZW5kcHRyLA0KPiANCj4gKyAgaW50ICAgICAgICAgYmFz ZQ0KPiANCj4gKyAgKQ0KPiANCj4gK3sNCj4gDQo+ICsgIFJFVFVSTl9TVEFUVVMgIFN0YXR1czsN Cj4gDQo+ICsgIFVJTlROICAgICAgICAgIFJldHVyblZhbHVlOw0KPiANCj4gKw0KPiANCj4gKyAg aWYgKGJhc2UgPT0gMTApIHsNCj4gDQo+ICsgICAgU3RhdHVzID0gQXNjaWlTdHJEZWNpbWFsVG9V aW50blMgKG5wdHIsIGVuZHB0ciwgJlJldHVyblZhbHVlKTsNCj4gDQo+ICsgIH0gZWxzZSBpZiAo YmFzZSA9PSAxNikgew0KPiANCj4gKyAgICBTdGF0dXMgPSBBc2NpaVN0ckhleFRvVWludG5TIChu cHRyLCBlbmRwdHIsICZSZXR1cm5WYWx1ZSk7DQo+IA0KPiArICB9IGVsc2Ugew0KPiANCj4gKyAg ICBTdGF0dXMgPSBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVI7DQo+IA0KPiArICB9DQo+IA0KPiAr DQo+IA0KPiArICBpZiAoUkVUVVJOX0VSUk9SIChTdGF0dXMpKSB7DQo+IA0KPiArICAgIHJldHVy biBNQVhfVUlOVE47DQo+IA0KPiArICB9DQo+IA0KPiArDQo+IA0KPiArICByZXR1cm4gKHVuc2ln bmVkIGxvbmcpUmV0dXJuVmFsdWU7DQo+IA0KPiArfQ0KPiANCj4gZGlmZiAtLWdpdCBhL01kZVBr Zy9MaWJyYXJ5L0Jhc2VGZHRMaWIvbGliZmR0IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9s aWJmZHQNCj4gbmV3IGZpbGUgbW9kZSAxNjAwMDANCj4gaW5kZXggMDAwMDAwMDAwMC4uY2ZmZjgw NTQ4MQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIv bGliZmR0DQo+IEBAIC0wLDAgKzEgQEANCj4gK1N1YnByb2plY3QgY29tbWl0IGNmZmY4MDU0ODFi ZGVhMjdmOTAwYzMyNjk4MTcxMjg2NTQyYjhkM2MNCj4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJy YXJ5L0Jhc2VGZHRMaWIvbGltaXRzLmggYi9NZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL2xpbWl0 cy5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmY2Y2Y4ZDU3 MDINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL2xp bWl0cy5oDQo+IEBAIC0wLDAgKzEsMTAgQEANCj4gKy8qKiBAZmlsZQ0KPiANCj4gKyAgSW5jbHVk ZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGxpYmZkdCBsaWJyYXJ5 Lg0KPiANCj4gKw0KPiANCj4gK0NvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24u IEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiANCj4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArDQo+IA0K PiArI2luY2x1ZGUgPExpYkZkdFN1cHBvcnQuaD4NCj4gDQo+ICsNCj4gDQo+IGRpZmYgLS1naXQg YS9NZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL3N0ZGJvb2wuaCBiL01kZVBrZy9MaWJyYXJ5L0Jh c2VGZHRMaWIvc3RkYm9vbC5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAw MDAwMDAuLmY2Y2Y4ZDU3MDINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9NZGVQa2cvTGlicmFy eS9CYXNlRmR0TGliL3N0ZGJvb2wuaA0KPiBAQCAtMCwwICsxLDEwIEBADQo+ICsvKiogQGZpbGUN Cj4gDQo+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0 eSBsaWJmZHQgbGlicmFyeS4NCj4gDQo+ICsNCj4gDQo+ICtDb3B5cmlnaHQgKGMpIDIwMjMsIElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gDQo+ICtTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiANCj4gKw0KPiANCj4gKyoq Lw0KPiANCj4gKw0KPiANCj4gKyNpbmNsdWRlIDxMaWJGZHRTdXBwb3J0Lmg+DQo+IA0KPiArDQo+ IA0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9zdGRkZWYuaCBiL01k ZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvc3RkZGVmLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXggMDAwMDAwMDAwMC4uZjZjZjhkNTcwMg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L01kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvc3RkZGVmLmgNCj4gQEAgLTAsMCArMSwxMCBAQA0K PiArLyoqIEBmaWxlDQo+IA0KPiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0 aGUgdGhpcmQtcGFydHkgbGliZmR0IGxpYnJhcnkuDQo+IA0KPiArDQo+IA0KPiArQ29weXJpZ2h0 IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ IA0KPiArU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gDQo+ ICsNCj4gDQo+ICsqKi8NCj4gDQo+ICsNCj4gDQo+ICsjaW5jbHVkZSA8TGliRmR0U3VwcG9ydC5o Pg0KPiANCj4gKw0KPiANCj4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIv c3RkaW50LmggYi9NZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL3N0ZGludC5oDQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmY2Y2Y4ZDU3MDINCj4gLS0tIC9kZXYv bnVsbA0KPiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL3N0ZGludC5oDQo+IEBAIC0w LDAgKzEsMTAgQEANCj4gKy8qKiBAZmlsZQ0KPiANCj4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBv cnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGxpYmZkdCBsaWJyYXJ5Lg0KPiANCj4gKw0KPiAN Cj4gK0NvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPg0KPiANCj4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ut UGF0ZW50DQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArDQo+IA0KPiArI2luY2x1ZGUgPExp YkZkdFN1cHBvcnQuaD4NCj4gDQo+ICsNCj4gDQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFy eS9CYXNlRmR0TGliL3N0ZGxpYi5oIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9zdGRsaWIu aA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5mNmNmOGQ1NzAy DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9zdGRs aWIuaA0KPiBAQCAtMCwwICsxLDEwIEBADQo+ICsvKiogQGZpbGUNCj4gDQo+ICsgIEluY2x1ZGUg ZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBsaWJmZHQgbGlicmFyeS4N Cj4gDQo+ICsNCj4gDQo+ICtDb3B5cmlnaHQgKGMpIDIwMjMsIEludGVsIENvcnBvcmF0aW9uLiBB bGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gDQo+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudA0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4gKw0KPiANCj4g KyNpbmNsdWRlIDxMaWJGZHRTdXBwb3J0Lmg+DQo+IA0KPiArDQo+IA0KPiBkaWZmIC0tZ2l0IGEv TWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9zdHJpbmcuaCBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VG ZHRMaWIvc3RyaW5nLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MC4uZjZjZjhkNTcwMg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jh c2VGZHRMaWIvc3RyaW5nLmgNCj4gQEAgLTAsMCArMSwxMCBAQA0KPiArLyoqIEBmaWxlDQo+IA0K PiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhpcmQtcGFydHkgbGli ZmR0IGxpYnJhcnkuDQo+IA0KPiArDQo+IA0KPiArQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiArU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gDQo+ICsNCj4gDQo+ICsqKi8NCj4g DQo+ICsNCj4gDQo+ICsjaW5jbHVkZSA8TGliRmR0U3VwcG9ydC5oPg0KPiANCj4gKw0KPiANCj4g ZGlmZiAtLWdpdCBhL01kZVBrZy9NZGVQa2cuY2kueWFtbCBiL01kZVBrZy9NZGVQa2cuY2kueWFt bA0KPiBpbmRleCA2YmE4NWViZTYxLi5mMDM5ZGFjY2RiIDEwMDY0NA0KPiAtLS0gYS9NZGVQa2cv TWRlUGtnLmNpLnlhbWwNCj4gKysrIGIvTWRlUGtnL01kZVBrZy5jaS55YW1sDQo+IEBAIC0yLDcg KzIsNyBAQA0KPiAgIyBDSSBjb25maWd1cmF0aW9uIGZvciBNZGVQa2cNCj4gDQo+ICAjDQo+IA0K PiAgIyBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbg0KPiANCj4gLSMgQ29weXJp Z2h0IChjKSAyMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+ DQo+IA0KPiArIyBDb3B5cmlnaHQgKGMpIDIwMjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln aHRzIHJlc2VydmVkLjxCUj4NCj4gDQo+ICAjIENvcHlyaWdodCAoYykgMjAyMSwgQXJtIExpbWl0 ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiANCj4gICMgQ29weXJpZ2h0IChjKSAyMDIz LCBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPg0KPiANCj4gICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVz ZS1QYXRlbnQNCj4gDQo+IEBAIC02Nyw3ICs2Nyw4IEBADQo+ICAgICAgICAgICAgICAiSW5jbHVk ZS9MaWJyYXJ5L1BjZExpYi5oIiwNCj4gDQo+ICAgICAgICAgICAgICAiSW5jbHVkZS9MaWJyYXJ5 L1NhZmVJbnRMaWIuaCIsDQo+IA0KPiAgICAgICAgICAgICAgIkluY2x1ZGUvUHJvdG9jb2wvRGVi dWdTdXBwb3J0LmgiLA0KPiANCj4gLSAgICAgICAgICAgICJUZXN0L1VuaXRUZXN0L0xpYnJhcnkv QmFzZVNhZmVJbnRMaWIvVGVzdEJhc2VTYWZlSW50TGliLmMiDQo+IA0KPiArICAgICAgICAgICAg IlRlc3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlU2FmZUludExpYi9UZXN0QmFzZVNhZmVJbnRMaWIu YyIsDQo+IA0KPiArICAgICAgICAgICAgIkxpYnJhcnkvQmFzZUZkdExpYiINCj4gDQo+ICAgICAg ICAgIF0NCj4gDQo+ICAgICAgfSwNCj4gDQo+ICAgICAgIyMgb3B0aW9ucyBkZWZpbmVkIGNpL1Bs dWdpbi9Db21waWxlclBsdWdpbg0KPiANCj4gQEAgLTE2NCw1ICsxNjUsMTcgQEANCj4gICAgICAg ICAgIkV4dGVuZFdvcmRzIjogW10sICAgICAgICAgICAjIHdvcmRzIHRvIGV4dGVuZCB0byB0aGUg ZGljdGlvbmFyeSBmb3IgdGhpcyBwYWNrYWdlDQo+IA0KPiAgICAgICAgICAiSWdub3JlU3RhbmRh cmRQYXRocyI6IFtdLCAgICMgU3RhbmRhcmQgUGx1Z2luIGRlZmluZWQgcGF0aHMgdGhhdCBzaG91 bGQgYmUgaWdub3JlDQo+IA0KPiAgICAgICAgICAiQWRkaXRpb25hbEluY2x1ZGVQYXRocyI6IFtd ICMgQWRkaXRpb25hbCBwYXRocyB0byBzcGVsbCBjaGVjayAod2lsZGNhcmRzIHN1cHBvcnRlZCkN Cj4gDQo+ICsgICAgfSwNCj4gDQo+ICsgICAgIyBvcHRpb25zIGRlZmluZWQgaW4gLnB5dG9vbC9Q bHVnaW4vVW5jcnVzdGlmeUNoZWNrDQo+IA0KPiArICAgICJVbmNydXN0aWZ5Q2hlY2siOiB7DQo+ IA0KPiArICAgICAgICAiSWdub3JlRmlsZXMiOiBbDQo+IA0KPiArICAgICAgICAgICAgIkxpYnJh cnkvQmFzZUZkdExpYi9saWJmZHQiLA0KPiANCj4gKyAgICAgICAgICAgICJMaWJyYXJ5L0Jhc2VG ZHRMaWIvbGltaXRzLmgiLA0KPiANCj4gKyAgICAgICAgICAgICJMaWJyYXJ5L0Jhc2VGZHRMaWIv c3RkYm9vbC5oIiwNCj4gDQo+ICsgICAgICAgICAgICAiTGlicmFyeS9CYXNlRmR0TGliL3N0ZGRl Zi5oIiwNCj4gDQo+ICsgICAgICAgICAgICAiTGlicmFyeS9CYXNlRmR0TGliL3N0ZGludC5oIiwN Cj4gDQo+ICsgICAgICAgICAgICAiTGlicmFyeS9CYXNlRmR0TGliL3N0ZGxpYi5oIiwNCj4gDQo+ ICsgICAgICAgICAgICAiTGlicmFyeS9CYXNlRmR0TGliL3N0cmluZy5oIg0KPiANCj4gKyAgICAg ICAgXQ0KPiANCj4gICAgICB9DQo+IA0KPiAgfQ0KPiANCj4gZGlmZiAtLWdpdCBhL01kZVBrZy9N ZGVQa2cuZGVjIGIvTWRlUGtnL01kZVBrZy5kZWMNCj4gaW5kZXggNWNmMDRiYzBjYi4uM2NlN2Yy OGI2ZSAxMDA2NDQNCj4gLS0tIGEvTWRlUGtnL01kZVBrZy5kZWMNCj4gKysrIGIvTWRlUGtnL01k ZVBrZy5kZWMNCj4gQEAgLTI4NSw2ICsyODUsMTAgQEANCj4gICAgIw0KPiANCj4gICAgQXJtVHJu Z0xpYnxJbmNsdWRlL0xpYnJhcnkvQXJtVHJuZ0xpYi5oDQo+IA0KPiANCj4gDQo+ICsgICMjICBA bGlicmFyeWNsYXNzICBQcm92aWRlcyBBUElzIGZvciB0aGlyZC1wYXJ0eSBsaWJyYXJ5IGxpYmZk dC4NCj4gDQo+ICsgICMNCj4gDQo+ICsgIEZkdExpYnxJbmNsdWRlL0xpYnJhcnkvRmR0TGliLmgN Cj4gDQo+ICsNCj4gDQo+ICBbTGlicmFyeUNsYXNzZXMuSUEzMiwgTGlicmFyeUNsYXNzZXMuWDY0 LCBMaWJyYXJ5Q2xhc3Nlcy5BQVJDSDY0XQ0KPiANCj4gICAgIyMgIEBsaWJyYXJ5Y2xhc3MgIFBy b3ZpZGVzIHNlcnZpY2VzIHRvIGdlbmVyYXRlIHJhbmRvbSBudW1iZXIuDQo+IA0KPiAgICAjDQo+ IA0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL01kZVBrZy5kc2MgYi9NZGVQa2cvTWRlUGtnLmRzYw0K PiBpbmRleCAwYWM3NjE4YjQ2Li5iMjYyMDY4YjY3IDEwMDY0NA0KPiAtLS0gYS9NZGVQa2cvTWRl UGtnLmRzYw0KPiArKysgYi9NZGVQa2cvTWRlUGtnLmRzYw0KPiBAQCAtMTM2LDYgKzEzNiw4IEBA DQo+ICAgIE1kZVBrZy9MaWJyYXJ5L0NjUHJvYmVMaWJOdWxsL0NjUHJvYmVMaWJOdWxsLmluZg0K PiANCj4gICAgTWRlUGtnL0xpYnJhcnkvU21tQ3B1UmVuZGV6dm91c0xpYk51bGwvU21tQ3B1UmVu ZGV6dm91c0xpYk51bGwuaW5mDQo+IA0KPiANCj4gDQo+ICsgIE1kZVBrZy9MaWJyYXJ5L0Jhc2VG ZHRMaWIvQmFzZUZkdExpYi5pbmYNCj4gDQo+ICsNCj4gDQo+ICBbQ29tcG9uZW50cy5JQTMyLCBD b21wb25lbnRzLlg2NCwgQ29tcG9uZW50cy5BUk0sIENvbXBvbmVudHMuQUFSQ0g2NF0NCj4gDQo+ ICAgICMNCj4gDQo+ICAgICMgQWRkIFVFRkkgVGFyZ2V0IEJhc2VkIFVuaXQgVGVzdHMNCj4gDQo+ IGRpZmYgLS1naXQgYS9SZWFkTWUucnN0IGIvUmVhZE1lLnJzdA0KPiBpbmRleCA0OTdkOTYzNTU5 Li4wMDUxNGM4NGZmIDEwMDY0NA0KPiAtLS0gYS9SZWFkTWUucnN0DQo+ICsrKyBiL1JlYWRNZS5y c3QNCj4gQEAgLTk1LDYgKzk1LDcgQEAgdGhhdCBhcmUgY292ZXJlZCBieSBhZGRpdGlvbmFsIGxp Y2Vuc2VzLg0KPiAgLSAgYFVuaXRUZXN0RnJhbWV3b3JrUGtnL0xpYnJhcnkvQ21vY2thTGliL2Nt b2NrYSA8aHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyLQ0KPiBjbW9ja2EvYmxvYi9m NWUyY2Q3N2M4OGQ5Zjc5MjU2Mjg4OGQyYjcwYzVhMzk2YmZiZjdhL0NPUFlJTkc+YF9fDQo+IA0K PiAgLSAgYFVuaXRUZXN0RnJhbWV3b3JrUGtnL0xpYnJhcnkvR29vZ2xlVGVzdExpYi9nb29nbGV0 ZXN0DQo+IDxodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvYmxvYi84NmFkZDEz NDkzZTVjODgxZDdlNGJhNzdmYjkxYzFmNTc3NTJiM2E0L0xJQ0VOU0U+YF9fDQo+IA0KPiAgLSAg YFJlZGZpc2hQa2cvTGlicmFyeS9Kc29uTGliL2phbnNzb24NCj4gPGh0dHBzOi8vZ2l0aHViLmNv bS9ha2hlcm9uL2phbnNzb24vYmxvYi8yODgyZWFkNWJiOTBjZjEyYTAxYjA3YjJjMjM2MWUyNDk2 MGZhZTAyL0xJQ0VOU0U+YF9fDQo+IA0KPiArLSAgYE1kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIv bGliZmR0IDxodHRwczovL2dpdGh1Yi5jb20vZGV2aWNldHJlZS0NCj4gb3JnL3B5bGliZmR0L2Js b2IvZjM5MzY4YTIxNzQ5NmQzMmM0MDkxYTJkYmE0MDQ1YjYwNjQ5ZTNhNS9CU0QtMi1DbGF1c2U+ YF9fDQo+IA0KPiANCj4gDQo+ICBUaGUgRURLIElJIFByb2plY3QgaXMgY29tcG9zZWQgb2YgcGFj a2FnZXMuIFRoZSBtYWludGFpbmVycyBmb3IgZWFjaCBwYWNrYWdlDQo+IA0KPiAgYXJlIGxpc3Rl ZCBpbiBgTWFpbnRhaW5lcnMudHh0IDxNYWludGFpbmVycy50eHQ+YF9fLg0KPiANCj4gLS0NCj4g Mi4zOS4xLndpbmRvd3MuMQ0KDQo=