From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web11.7246.1688111506715740581 for ; Fri, 30 Jun 2023 00:51:46 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=NiCSS6oE; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: w.sheng@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1688111506; x=1719647506; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=stiUOWGuyBl5SerWkdAKxleiyNTM1vF0Oc1VXWBFNok=; b=NiCSS6oEdmi/dFu2Ka6qmnV9ac/7okXwOVSrmqkae6NqIgntrKp/xV2u Rz2QYBtrCrlwmYVnC4n3fwILNyOjtxmT0HmAdiU/p0zeriw22XMk/zLkh Z0w9oicWh4thpz40pgNvnquEoZj3tel6Qnkh8ygKP40DoFQYOfAS0aLpx 8lDwd22J76SO7vfgpSIZv6fcVmKcDvCB8dA+MZudd8vwlX5+6ntfQ7Uxg jrgqtxpjqSqXEeGkibuuLj+VRUk5sVweyXp/mqTbfPKr7hWEyQRtWAKfj Dvk7wRpEnIth7fQBg8mz69mVacHE45wn6qEnHyNkOE0AqXfiI/TUxfOvx Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10756"; a="362377755" X-IronPort-AV: E=Sophos;i="6.01,170,1684825200"; d="scan'208";a="362377755" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Jun 2023 00:51:45 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10756"; a="694943968" X-IronPort-AV: E=Sophos;i="6.01,170,1684825200"; d="scan'208";a="694943968" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga006.jf.intel.com with ESMTP; 30 Jun 2023 00:51:44 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) 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.27; Fri, 30 Jun 2023 00:51:44 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27 via Frontend Transport; Fri, 30 Jun 2023 00:51:44 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.169) 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.27; Fri, 30 Jun 2023 00:51:42 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WeOlrdU3cS6emYol6ieYy2fdoVB8ZUefJ54bj24chcOH7IY1vW8m8I03l+Y6V5YeWlCd00FzuoXl8eONWQN3IhJ6FOe3s/TJn3V8yTLaEfCkid1EOv6qiW9GPFO/K8S1zeks2l/D2vdjf7uNHdzmgswqGeYosnbygxDGEvqSHEJWmUFyhJE6orU5Qgq6Z9867hCcx50f/0yWVxuccx8thwIO4d64OQVq5+4X6ygf5gE6L+K45lBKGaBq4vnr3HxUpLQD4lp6w5hfdSWxqt7LEWxXecsjbVEfxliSutCMdLClql+Ke6hQE7opV3yPEgjR1KCBMp5bWnRASCnHZH/D0Q== 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=stiUOWGuyBl5SerWkdAKxleiyNTM1vF0Oc1VXWBFNok=; b=hqE8x9w3NmSB8I2/SOmcYcB9eqWNNlNAsKoB+SNYLmsRlaMPmETxIDtjWmqd/SlIrGQsx7kQSjlUhBF/sFoVn8vOSoapa1JUKJnMJA6UizshJ+x5oieeAvvn0+ekNEtaLEnG4G842Ry3e70wEw3sqhyFXInSYrZNap7Qre+qF2yGZXzjSoqWixzVh0sK4DdWZNJQTMlNXFtj1gs0XHn6PO+5cpXIMvUD/Bz8uFFRNiG3baoEJXKXaZCeSnJWremxkUQ0mf4NjCDr4nkoPcNuq+CkfgtVW1jlLyRfULk8Lu97K14lw5qLJ1FkPfWaJeSjdMazb7j0R9tdN+kXgDZ3mA== 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 PH0PR11MB4870.namprd11.prod.outlook.com (2603:10b6:510:34::16) by SJ2PR11MB8587.namprd11.prod.outlook.com (2603:10b6:a03:568::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6521.24; Fri, 30 Jun 2023 07:51:39 +0000 Received: from PH0PR11MB4870.namprd11.prod.outlook.com ([fe80::8319:9f44:4a00:6ff2]) by PH0PR11MB4870.namprd11.prod.outlook.com ([fe80::8319:9f44:4a00:6ff2%5]) with mapi id 15.20.6544.019; Fri, 30 Jun 2023 07:51:39 +0000 From: "Sheng Wei" To: "Yao, Jiewen" , "devel@edk2.groups.io" CC: "Wang, Jian J" , "Xu, Min M" , "Chen, Zeyi" , "Wang, Fiona" Subject: Re: [PATCH] SecurityPkg/SecureBoot: Support RSA 512 and RSA 384 Thread-Topic: [PATCH] SecurityPkg/SecureBoot: Support RSA 512 and RSA 384 Thread-Index: AQHZjskJ013VdJPEo0+BUvJoerQ0VK+WlClQgAybtrA= Date: Fri, 30 Jun 2023 07:51:38 +0000 Message-ID: References: <20230525052316.512-1-w.sheng@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: PH0PR11MB4870:EE_|SJ2PR11MB8587:EE_ x-ms-office365-filtering-correlation-id: f89c5418-d3d5-4067-a3fb-08db793ed603 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: wep01uSe0t/Rc3ndnEHoHWiixu5YUrZzOQ2RBFFWc4zgnto9jQiQ3pbGACK9KUZYHj941b4en38IUiKQ53VaKVNj80kyM7IJfKQ3yldWrrniBVy47GhFwrpaKD1ub6innrfgWkBTSUITg0tzZWpc/hnwn4x8ibQk52V0BECQ8h/Vom9vnCY4zGczo7/Ogo8DBpqDOIHYmpwakEuRhTnHqvgUqkIh3ZZJr5Dz/ZIycaCCe7fBnnNXLkUBQ5WDEDRb8Wh6T10f4VpaC71QbgAiMnCKdE5mi6SuIbDrKYp0AJ+fLdSkgEZKj/jKZsa2pjH7RLUw9X+JDefceXj/dv0oCbfNqwCmnYzdfWwq/3ccPRE7pNXaptQSF5NhHD1AuXOTFBqAP7sFBmwqUm5VSn3PND7tAz1PNfcZQGnHhqHx4EQMtxEWyWCSE4EZ0+SQkl862qk/XZp1Yyr/nwZjgw7RtR91Xxr0HHZ3TiZRIGR+l1vNDoftNYUGdv9bc195I6e+TB5NKDNyvxpsqAz+p4M0xZ3jU4AkCWDO/Q0ZNSheTWtTHRHnqRHDvi5Nz+xNuVMCDy/XZyoXr5XBDKVmNb6zLObGu1qKMlHEk38aIbMX27I= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB4870.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(366004)(376002)(346002)(136003)(396003)(39860400002)(451199021)(2906002)(186003)(55016003)(7696005)(30864003)(71200400001)(122000001)(86362001)(107886003)(9686003)(38100700002)(83380400001)(82960400001)(53546011)(6506007)(19627235002)(966005)(110136005)(41300700001)(54906003)(38070700005)(26005)(478600001)(316002)(76116006)(66556008)(66446008)(4326008)(66946007)(33656002)(64756008)(66476007)(15650500001)(52536014)(5660300002)(8676002)(8936002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?gb2312?B?VHpzQllNV2JEcTlJcEl4alZFVUdVK2NhZVJZbnIxUGFudjJNdnV0QzJPRnlU?= =?gb2312?B?QTFjcnRxUkUxNzF2WS9FKytaQ1BiU2oxSHJoSXlSNGJhb0EwM2IrWE9uMkZD?= =?gb2312?B?S1R1RFlhWHdaeG81MmZMN1pENTNPL0tHbnJ5bWtLZ0MvNmNCSWdMelVGTlZo?= =?gb2312?B?WGNJUy9CL3ViWmR6a1lUb0FlU0ZOakk2ekZTNXd0L3lnOEdXQnFRVlZCL2d6?= =?gb2312?B?bVdndkhHTXBtNzNIYkh6SE1FbkVrZExSVEtnRy9BMmFYalREdVYwUEdVUUIr?= =?gb2312?B?Um5OT3NTSUEvRi9UTStKTEJ4U0J0NE5MQU9IUXJUQVJOQ1Y3WG5LUGcxMFcw?= =?gb2312?B?ZnJEN2tlRm9JNlBORnQ1ZDZ5dWFZb25aVitVYm0wOWlHbTVORldnMmZ3VDly?= =?gb2312?B?NHhVRlZQS1A3UTVTVmNRdjhCWUx1OHkzQnRMeGpXNDdJYjYrbHRLTHk1Mzkv?= =?gb2312?B?N09COHpCVDZIeEpBdjhocmFCVUxXSldiTWwwNTRPa2ZvcFZDSWJjRkI2MmY2?= =?gb2312?B?WFEyQUs4Z2VUNU8zTjlLKzdWeVRpcTZwdytqSWtxdHJKMzJOYlhWRDdnMEdQ?= =?gb2312?B?dVRzUnJVcitqTklFcHJSYUpXcVh2ZExVWGRoMktPRjluQmhYU2FrVVNrUnIx?= =?gb2312?B?Z0xBWU95L0RrNS9Tb29ieUpDVURDK20wWE1HNTZRUEVHeCs3Sy85YVpweWF3?= =?gb2312?B?QzJkYTV1K3AwaU96U2t2dTYyc2sza1ZYdHV4ZVJnUzhFanVpcHhGZitvQ2dB?= =?gb2312?B?dGtEZU5ES0NSM2Vob1VZUWJmZmljRHpyckNwZlg0T0xCUy9ORnFYbnVWNlVh?= =?gb2312?B?V2NrWG0zOGVueURrYUdza0FjNU5pdHJreHdaVHNUMU9kb3FCU2NrM0NadVRo?= =?gb2312?B?R3ZXVjFwTVFuTkdjeUxUdEkyaU9VVkhURTdrTlFKWUVVWjNCb0hmbzd0NHY1?= =?gb2312?B?dzFyTFgxdGY2UjlQUXhqWGxhS052TFBXb2hEc2JwaDhNMHkvV0F4YUR4V1Bh?= =?gb2312?B?Wk82Mmd2anZ5QWhTekFWWTlTbURXYXpQN0VUZGNsMVduUmNSd0N1VkZHVm80?= =?gb2312?B?RTc4aUd3cDZGYTJOMEVjY1NMUkEveWI4Ym1WM2l4ZXJDcjR2Vks1UDVoTzRY?= =?gb2312?B?cXEvS3RwQTBoSTR3UGJLTUZuUm8yZFdEcG1mNHJlV05oWHJSMWNUUTh3MWh4?= =?gb2312?B?RUVKbURiUGQvcHJzR3JhdXp2aHgrS01ML2VVSUVsc3UyTmVCenphaUhzU3J2?= =?gb2312?B?Z3FFSzFaRC9yZUpjY25rTW1xUmdtQlJPdXd6cGVlaFluZ3hXeFVSSXhvRm5u?= =?gb2312?B?TS9BNVVxOVJremZ2endtTzJMWk5wM012eHNac0JPSkh2aURZM2pzZGdZUHlz?= =?gb2312?B?NlpoYXpaQk8wMUxlejBONGZqdDJUVUFKTno0cUxVRllnSlU0ejUrbFoySEtk?= =?gb2312?B?MmF6empCQ0FaWHljeHhPM3I0UzFtaG5KUGk5cWhVd0QydjljUjBpYVpoK00r?= =?gb2312?B?SjJtRDN2bUlyNGdabHVadHhmeHZuRnZmRkV5ZlE5MWpLNTlaenlNVFZoeHNI?= =?gb2312?B?OS9sRGk1NUZZNy9tcHcvQWE1NE5WVXZCZlYwejB0VVdVVnl4SXZ5WVBqUStN?= =?gb2312?B?Zlo1RUxpbzhkUzlERHJKbnlyZE5qVkRSRTFBL21rblY2RUcyN1p2aWk1TDY3?= =?gb2312?B?QTdWL2VrRWRXVDh4d096b1g1UmhpN1lYVjRYNkhBM2xpZFpWQlpsZFU3aUY1?= =?gb2312?B?cEYzZzdOcW1tUGloSG9vMUUzSWJpZ0pZc0pBeU1vZ2NTTWgwUG9qZkRpYWk2?= =?gb2312?B?cTNTMnVtZ2pzYjZ6MjQ0anV6aE5ONXlOZThtL3Evck1DUjE4NGNpRnQyV2Qx?= =?gb2312?B?UEtJNW1FMXZoV1o3UjN1K0hoZ3VncXNaVHQ0eGVuV1RQYnZCTjJrVDRLNUUz?= =?gb2312?B?aHNUQVB0NEpTSWFjTUxPdlpCMTJOL2hyTHhnM3JSZS91Y3plemhoSHRXWHF6?= =?gb2312?B?WWV5SXkrYW9FcnVGd1haaVAybFBmeGIya05tb1ZMRkdqNklyQ2hpWFNyTGV0?= =?gb2312?B?VlNodGpmMFZGbXpWTldaZjFSSHUxQVowTEswWGZPdkFPMHF6NTNoUGFmUUZI?= =?gb2312?Q?yObA=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB4870.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f89c5418-d3d5-4067-a3fb-08db793ed603 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Jun 2023 07:51:38.8290 (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: uqsjdE8meZAz+/2m59rh1uNF7wtsKPuhdiRb77+C2TYzZZDFgCxDw/C7LIyPj69Y8v9sSWwtA/cqWnp1ZUuIQA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR11MB8587 Return-Path: w.sheng@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGkgSmlld2VuLA0KSSByYWlzZWQgdGhlIHBhdGNoIFYyLg0KSSBkbyB0aGUgZml4IGZvciAxKSAs IDIpLCAzKS4NCkJ1dCBmb3IgNCkgNSksIEkgaGF2ZSBiZWxvdyBjb21tZW50cy4NCg0KNCkgSSBh bSBub3Qgc3VyZSB3aHkgd2UgbmVlZCB0aGlzIFBDRC4gV2h5IGNhbm5vdCB3ZSBzdXBwb3J0IGFs bCBvZiBoYXNoIGFsZ28/DQoNCisgICMjIEluZGljYXRlcyBkZWZhdWx0IGhhc2ggYWxnb3JpdGht IGluIFNlY3VyZSBCb290DQorICAjICAgMCAtIFVzZSBTSEEyNTYNCisgICMgICAxIC0gVXNlIFNI QTM4NA0KKyAgIyAgIDIgLSBVc2UgU0hBNTEyDQorICAjIEBQcm9tcHQgU2VjdXJlIEJvb3QgZGVm YXVsdCBoYXNoIGFsZ29yaXRobQ0KKyAgDQorIGdFZmlTZWN1cml0eVBrZ1Rva2VuU3BhY2VHdWlk LlBjZFNlY3VyZUJvb3REZWZhdWx0SGFzaEFsZ3wwfFVJTlQ4fDB4MDANCisgMDEwMDQwDQoNClBD RCBQY2RTZWN1cmVCb290RGVmYXVsdEhhc2hBbGcgaXMgdXNlZCBmb3IgdGhlIG9ubHkgY2FzZSBv ZiBlbnJvbGwgYW4gdW5zaWduZWQgaW1hZ2UuDQpUaGUgb3JpZ2luYWwgbG9naWMgaXMgQklPUyB3 aWxsIGdlbnJhdGUgU0hBMjU2IGRpZ2VzdCBmb3IgdGhpcyB1bnNpZ25lZCBpbWFnZSBhbmQgc2F2 ZSBpdC4NClRoZSBQQ0QgaXMgdXNlZCB0byBzZWxlY3QgdGhlIGhhc2ggYWxnb3JpdGhtIGZvciB0 aGlzIGNhc2UuDQpTbyB3ZSBoYXZlIHRvIHVzZSBhIFBDRCB0byBzZWxlY3QgdGhlIGFsZ29yaXRo bSBtYW51bGx5Lg0KDQoNCjUpIEkgZG9uoa90IGJlbGlldmUgdGhhdCB5b3UgY2FuIHVzZSBzaXpl IHRvIGRldGVybWluZSB0aGUgYWxnb3JpdGhtLiBXZSBuZWVkIGEgbW9yZSByb2J1c3Qgd2F5LCBz dWNoIGFzIGFsZ29yaXRobSBJRC4NCg0KKyAgc3dpdGNoIChLZXlMZW5JbkJ5dGVzKSB7DQorICBj YXNlIFdJTl9DRVJUX1VFRklfUlNBMjA0OF9TSVpFOg0KKyAgICBDb3B5R3VpZCAoJktla1NpZ0xp c3QtPlNpZ25hdHVyZVR5cGUsICZnRWZpQ2VydFJzYTIwNDhHdWlkKTsNCisgICAgYnJlYWs7DQor ICBjYXNlIFdJTl9DRVJUX1VFRklfUlNBMzA3Ml9TSVpFOg0KKyAgICBDb3B5R3VpZCAoJktla1Np Z0xpc3QtPlNpZ25hdHVyZVR5cGUsICZnRWZpQ2VydFJzYTMwNzJHdWlkKTsNCisgICAgYnJlYWs7 DQorICBjYXNlIFdJTl9DRVJUX1VFRklfUlNBNDA5Nl9TSVpFOg0KKyAgICBDb3B5R3VpZCAoJktl a1NpZ0xpc3QtPlNpZ25hdHVyZVR5cGUsICZnRWZpQ2VydFJzYTQwOTZHdWlkKTsNCisgICAgYnJl YWs7DQorICAgIGJyZWFrOw0KDQpUaGlzIGNvZGUgaXMgdXNlZCB3aGVuIGVucm9sbCBhIFJTQSBw dWJsaWMga2V5IHN0b3JpbmcgZmlsZSAoKi5wYmspLg0KSGVyZSBpcyB0aGUgaGVhZGVyIFN0cnVj dCBvZiB0aGlzIGZpbGUuDQp0eXBlZGVmIHN0cnVjdCBfQ1BMX0tFWV9JTkZPIHsNCiAgVUlOVDMy ICAgIEtleUxlbmd0aEluQml0czsgICAgICAgIC8vIEtleSBMZW5ndGggSW4gQml0cw0KICBVSU5U MzIgICAgQmxvY2tTaXplOyAgICAgICAgICAgICAgLy8gT3BlcmF0aW9uIEJsb2NrIFNpemUgaW4g Qnl0ZXMNCiAgVUlOVDMyICAgIENpcGhlckJsb2NrU2l6ZTsgICAgICAgIC8vIE91dHB1dCBDaXBo ZXIgQmxvY2sgU2l6ZSBpbiBCeXRlcw0KICBVSU5UMzIgICAgS2V5VHlwZTsgICAgICAgICAgICAg ICAgLy8gS2V5IFR5cGUNCiAgVUlOVDMyICAgIENpcGhlck1vZGU7ICAgICAgICAgICAgIC8vIENp cGhlciBNb2RlIGZvciBTeW1tZXRyaWMgQWxnb3JpdGhtDQogIFVJTlQzMiAgICBGbGFnczsgICAg ICAgICAgICAgICAgICAvLyBBZGRpdGlvbmFsIEtleSBQcm9wZXJ0eSBGbGFncw0KfSBDUExfS0VZ X0lORk87DQpFZGsyL1NlY3VyaXR5UGtnL1ZhcmlhYmxlQXV0aGVudGljYXRlZC9TZWN1cmVCb290 Q29uZmlnRHhlL1NlY3VyZUJvb3RDb25maWdJbXBsLmgNCldlIGNhbiBvbmx5IGdldCB0byBrbm93 IHRoZSBSU0EgYWxnb3JpdGhtIGJ5IEtleUxlbmd0aEluQml0cy4gKFJTQTIwNDgvUlNBMzA3Mi9S U0E0MDk2KQ0KDQpUaGFuayB5b3UuDQpCUg0KU2hlbmcgV2VpDQoNCj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gRnJvbTogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPg0K PiBTZW50OiAyMDIzxOo21MIyMsjVIDE1OjIyDQo+IFRvOiBTaGVuZywgVyA8dy5zaGVuZ0BpbnRl bC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogV2FuZywgSmlhbiBKIDxqaWFuLmou d2FuZ0BpbnRlbC5jb20+OyBYdSwgTWluIE0gPG1pbi5tLnh1QGludGVsLmNvbT47DQo+IENoZW4s IFpleWkgPHpleWkuY2hlbkBpbnRlbC5jb20+OyBXYW5nLCBGaW9uYSA8ZmlvbmEud2FuZ0BpbnRl bC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0hdIFNlY3VyaXR5UGtnL1NlY3VyZUJvb3Q6IFN1 cHBvcnQgUlNBIDUxMiBhbmQgUlNBIDM4NA0KPiANCj4gVGhhbmsgeW91IHZlcnkgbXVjaCB0byBj b250cmlidXRlIHRoaXMgcGF0Y2guIEhlcmUgaXMgbXkgZmVlZGJhY2suDQo+IA0KPiAxKSBJIGRv bqGvdCBiZWxpZXZlIHRoYXQgeW91IGNhbm5vdCB1c2UgZGlnZXN0IHNpemUgdG8gZGV0ZXJtaW5l IHRoZSBhbGdvcml0aG0sDQo+IGJlY2F1c2UgZGlmZmVyZW50IGhhc2ggYWxnb3JpdGhtIG1heSBo YXZlIHNhbWUgdGltZS4gRS5nLiBTSEEyNTYgYW5kDQo+IFNIQTNfMjU2Lg0KPiANCj4gKyAgaWYg KERpZ2VzdFNpemUgPT0gU0hBMjU2X0RJR0VTVF9TSVpFKSB7DQo+ICsgICAgU3RhdHVzID0gQ2Fs Y3VsYXRlUHJpdkF1dGhWYXJTaWduQ2hhaW5TSEEyNTZEaWdlc3QgKA0KPiArICAgICAgICAgICAg ICAgU2lnbmVyQ2VydCwNCj4gKyAgICAgICAgICAgICAgIFNpZ25lckNlcnRTaXplLA0KPiArICAg ICAgICAgICAgICAgVG9wTGV2ZWxDZXJ0LA0KPiArICAgICAgICAgICAgICAgVG9wTGV2ZWxDZXJ0 U2l6ZSwNCj4gKyAgICAgICAgICAgICAgIFNoYURpZ2VzdA0KPiArICAgICAgICAgICAgICAgKTsN Cj4gDQo+IDIpIEkgZG9uoa90IGJlbGlldmUgdGhhdCB5b3UgY2Fubm90IGFzc3VtaW5nIEN0eFNp emUgb2YgU0hBNTEyIGlzIGJpZ2dlciB0aGFuDQo+IFNIQTI1Ni4gSSB0aGluayB3ZSBtYXkgbmVl ZCBjcmVhdGUgY29udGV4dCBmb3IgZWFjaCBhbGdvLg0KPiANCj4gQEAgLTEzNSw3ICsxMzUsNyBA QCBBdXRoVmFyaWFibGVMaWJJbml0aWFsaXplICgNCj4gICAgLy8NCj4gICAgLy8gSW5pdGlhbGl6 ZSBoYXNoIGNvbnRleHQuDQo+ICAgIC8vDQo+IC0gIEN0eFNpemUgID0gU2hhMjU2R2V0Q29udGV4 dFNpemUgKCk7DQo+ICsgIEN0eFNpemUgID0gU2hhNTEyR2V0Q29udGV4dFNpemUgKCk7DQo+ICAg IG1IYXNoQ3R4ID0gQWxsb2NhdGVSdW50aW1lUG9vbCAoQ3R4U2l6ZSk7DQo+ICAgIGlmIChtSGFz aEN0eCA9PSBOVUxMKSB7DQo+IA0KPiAzKSBJIGJlbGlldmUgd2Ugc2hvdWxkIHVzZSAwIGZvciBT SEEyNTYgYW5kIEFTU0VSVCBpbiBkZWZhdWx0Lg0KPiANCj4gKyAgc3dpdGNoIChQY2RHZXQ4IChQ Y2RTZWN1cmVCb290RGVmYXVsdEhhc2hBbGcpKSB7ICBjYXNlIDE6DQo+ICsgICAgREVCVUcgKChE RUJVR19JTkZPLCAiJWEgdXNlIFNIQTM4NCIsIF9fZnVuY19fKSk7DQo+ICsgICAgSGFzaEFsZyA9 IEhBU0hBTEdfU0hBMzg0Ow0KPiArICAgIGJyZWFrOw0KPiArICBjYXNlIDI6DQo+ICsgICAgREVC VUcgKChERUJVR19JTkZPLCAiJWEgdXNlIFNIQTUxMiIsIF9fZnVuY19fKSk7DQo+ICsgICAgSGFz aEFsZyA9IEhBU0hBTEdfU0hBNTEyOw0KPiArICAgIGJyZWFrOw0KPiArICBkZWZhdWx0Og0KPiAr ICAgIERFQlVHICgoREVCVUdfSU5GTywgIiVhIHVzZSBTSEEyNTYiLCBfX2Z1bmNfXykpOw0KPiAr ICAgIEhhc2hBbGcgPSBIQVNIQUxHX1NIQTI1NjsNCj4gKyAgICBicmVhazsNCj4gKyAgfQ0KPiAN Cj4gNCkgSSBhbSBub3Qgc3VyZSB3aHkgd2UgbmVlZCB0aGlzIFBDRC4gV2h5IGNhbm5vdCB3ZSBz dXBwb3J0IGFsbCBvZiBoYXNoDQo+IGFsZ28/DQo+IA0KPiArICAjIyBJbmRpY2F0ZXMgZGVmYXVs dCBoYXNoIGFsZ29yaXRobSBpbiBTZWN1cmUgQm9vdA0KPiArICAjICAgMCAtIFVzZSBTSEEyNTYN Cj4gKyAgIyAgIDEgLSBVc2UgU0hBMzg0DQo+ICsgICMgICAyIC0gVXNlIFNIQTUxMg0KPiArICAj IEBQcm9tcHQgU2VjdXJlIEJvb3QgZGVmYXVsdCBoYXNoIGFsZ29yaXRobQ0KPiArDQo+ICsNCj4g Z0VmaVNlY3VyaXR5UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2VjdXJlQm9vdERlZmF1bHRIYXNoQWxn fDB8VUlOVDh8MHgNCj4gMDANCj4gKyAwMTAwNDANCj4gDQo+IDUpIEkgZG9uoa90IGJlbGlldmUg dGhhdCB5b3UgY2FuIHVzZSBzaXplIHRvIGRldGVybWluZSB0aGUgYWxnb3JpdGhtLiBXZSBuZWVk DQo+IGEgbW9yZSByb2J1c3Qgd2F5LCBzdWNoIGFzIGFsZ29yaXRobSBJRC4NCj4gDQo+ICsgIHN3 aXRjaCAoS2V5TGVuSW5CeXRlcykgew0KPiArICBjYXNlIFdJTl9DRVJUX1VFRklfUlNBMjA0OF9T SVpFOg0KPiArICAgIENvcHlHdWlkICgmS2VrU2lnTGlzdC0+U2lnbmF0dXJlVHlwZSwgJmdFZmlD ZXJ0UnNhMjA0OEd1aWQpOw0KPiArICAgIGJyZWFrOw0KPiArICBjYXNlIFdJTl9DRVJUX1VFRklf UlNBMzA3Ml9TSVpFOg0KPiArICAgIENvcHlHdWlkICgmS2VrU2lnTGlzdC0+U2lnbmF0dXJlVHlw ZSwgJmdFZmlDZXJ0UnNhMzA3Mkd1aWQpOw0KPiArICAgIGJyZWFrOw0KPiArICBjYXNlIFdJTl9D RVJUX1VFRklfUlNBNDA5Nl9TSVpFOg0KPiArICAgIENvcHlHdWlkICgmS2VrU2lnTGlzdC0+U2ln bmF0dXJlVHlwZSwgJmdFZmlDZXJ0UnNhNDA5Nkd1aWQpOw0KPiArICAgIGJyZWFrOw0KPiArICAg IGJyZWFrOw0KPiANCj4gVGhhbmsgeW91DQo+IFlhbywgSmlld2VuDQo+IA0KPiA+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogU2hlbmcsIFcgPHcuc2hlbmdAaW50ZWwuY29t Pg0KPiA+IFNlbnQ6IFRodXJzZGF5LCBNYXkgMjUsIDIwMjMgMToyMyBQTQ0KPiA+IFRvOiBkZXZl bEBlZGsyLmdyb3Vwcy5pbw0KPiA+IENjOiBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5j b20+OyBXYW5nLCBKaWFuIEoNCj4gPiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgWHUsIE1pbiBN IDxtaW4ubS54dUBpbnRlbC5jb20+OyBDaGVuLCBaZXlpDQo+ID4gPHpleWkuY2hlbkBpbnRlbC5j b20+OyBXYW5nLCBGaW9uYSA8ZmlvbmEud2FuZ0BpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogW1BB VENIXSBTZWN1cml0eVBrZy9TZWN1cmVCb290OiBTdXBwb3J0IFJTQSA1MTIgYW5kIFJTQSAzODQN Cj4gPg0KPiA+IFJFRjogaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNn aT9pZD0zNDEzDQo+ID4NCj4gPiBDYzogSmlld2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5jb20+ DQo+ID4gQ2M6IEppYW4gSiBXYW5nIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+ID4gQ2M6IE1p biBYdSA8bWluLm0ueHVAaW50ZWwuY29tPg0KPiA+IENjOiBaZXlpIENoZW4gPHpleWkuY2hlbkBp bnRlbC5jb20+DQo+ID4gQ2M6IEZpb25hIFdhbmcgPGZpb25hLndhbmdAaW50ZWwuY29tPg0KPiA+ IFNpZ25lZC1vZmYtYnk6IFNoZW5nIFdlaSA8dy5zaGVuZ0BpbnRlbC5jb20+DQo+ID4gLS0tDQo+ ID4gIENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdFRzLmMgICB8ICAgMyAr LQ0KPiA+ICBNZGVQa2cvSW5jbHVkZS9HdWlkL0ltYWdlQXV0aGVudGljYXRpb24uaCAgICAgfCAg MjYgKysNCj4gPiAgTWRlUGtnL01kZVBrZy5kZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAyICsNCj4gPiAgLi4uL0xpYnJhcnkvQXV0aFZhcmlhYmxlTGliL0F1dGhTZXJ2aWNlLmMg ICAgIHwgMjcyICsrKysrKysrKysrKysrKystLQ0KPiA+ICAuLi4vTGlicmFyeS9BdXRoVmFyaWFi bGVMaWIvQXV0aFZhcmlhYmxlTGliLmMgfCAgIDQgKy0NCj4gPiAgLi4uL0R4ZUltYWdlVmVyaWZp Y2F0aW9uTGliLmMgICAgICAgICAgICAgICAgIHwgIDM1ICsrLQ0KPiA+ICAuLi4vRHhlSW1hZ2VW ZXJpZmljYXRpb25MaWIuaW5mICAgICAgICAgICAgICAgfCAgIDEgKw0KPiA+ICBTZWN1cml0eVBr Zy9TZWN1cml0eVBrZy5kZWMgICAgICAgICAgICAgICAgICAgfCAgIDcgKw0KPiA+ICAuLi4vU2Vj dXJlQm9vdENvbmZpZ0R4ZS5pbmYgICAgICAgICAgICAgICAgICAgfCAgMTkgKysNCj4gPiAgLi4u L1NlY3VyZUJvb3RDb25maWdJbXBsLmMgICAgICAgICAgICAgICAgICAgIHwgMTIyICsrKysrKyst DQo+ID4gIC4uLi9TZWN1cmVCb290Q29uZmlnSW1wbC5oICAgICAgICAgICAgICAgICAgICB8ICAg MiArDQo+ID4gIC4uLi9TZWN1cmVCb290Q29uZmlnU3RyaW5ncy51bmkgICAgICAgICAgICAgICB8 ICAgNiArDQo+ID4gIDEyIGZpbGVzIGNoYW5nZWQsIDQ2MyBpbnNlcnRpb25zKCspLCAzNiBkZWxl dGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5 cHRMaWIvUGsvQ3J5cHRUcy5jDQo+ID4gYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIv UGsvQ3J5cHRUcy5jDQo+ID4gaW5kZXggMDI3ZGJiNjg0Mi4uOTQ0YmNmOGQzOCAxMDA2NDQNCj4g PiAtLS0gYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRUcy5jDQo+ID4g KysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0VHMuYw0KPiA+IEBA IC01OTEsNyArNTkxLDggQEAgSW1hZ2VUaW1lc3RhbXBWZXJpZnkgKA0KPiA+ICAgIC8vIFJlZ2lz dGVyICYgSW5pdGlhbGl6ZSBuZWNlc3NhcnkgZGlnZXN0IGFsZ29yaXRobXMgZm9yIFBLQ1MjNyBI YW5kbGluZy4NCj4gPg0KPiA+ICAgIC8vDQo+ID4NCj4gPiAgICBpZiAoKEVWUF9hZGRfZGlnZXN0 IChFVlBfbWQ1ICgpKSA9PSAwKSB8fCAoRVZQX2FkZF9kaWdlc3QgKEVWUF9zaGExDQo+ID4gKCkp ID09IDApDQo+ID4gfHwNCj4gPg0KPiA+IC0gICAgICAoRVZQX2FkZF9kaWdlc3QgKEVWUF9zaGEy NTYgKCkpID09IDApIHx8ICgoRVZQX2FkZF9kaWdlc3RfYWxpYXMNCj4gPiAoU05fc2hhMVdpdGhS U0FFbmNyeXB0aW9uLCBTTl9zaGExV2l0aFJTQSkpID09IDApKQ0KPiA+DQo+ID4gKyAgICAgIChF VlBfYWRkX2RpZ2VzdCAoRVZQX3NoYTI1NiAoKSkgPT0gMCkgfHwgKEVWUF9hZGRfZGlnZXN0DQo+ ID4gKyAoRVZQX3NoYTM4NCAoKSkNCj4gPiA9PSAwKSB8fA0KPiA+DQo+ID4gKyAgICAgIChFVlBf YWRkX2RpZ2VzdCAoRVZQX3NoYTUxMiAoKSkgPT0gMCkgfHwgKChFVlBfYWRkX2RpZ2VzdF9hbGlh cw0KPiA+IChTTl9zaGExV2l0aFJTQUVuY3J5cHRpb24sIFNOX3NoYTFXaXRoUlNBKSkgPT0gMCkp DQo+ID4NCj4gPiAgICB7DQo+ID4NCj4gPiAgICAgIHJldHVybiBGQUxTRTsNCj4gPg0KPiA+ICAg IH0NCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9NZGVQa2cvSW5jbHVkZS9HdWlkL0ltYWdlQXV0aGVu dGljYXRpb24uaA0KPiA+IGIvTWRlUGtnL0luY2x1ZGUvR3VpZC9JbWFnZUF1dGhlbnRpY2F0aW9u LmgNCj4gPiBpbmRleCBmZTgzNTk2NTcxLi5jOGVhMmMxNGZiIDEwMDY0NA0KPiA+IC0tLSBhL01k ZVBrZy9JbmNsdWRlL0d1aWQvSW1hZ2VBdXRoZW50aWNhdGlvbi5oDQo+ID4gKysrIGIvTWRlUGtn L0luY2x1ZGUvR3VpZC9JbWFnZUF1dGhlbnRpY2F0aW9uLmgNCj4gPiBAQCAtMTQ0LDYgKzE0NCwz MCBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ID4gICAgICAweDNjNTc2NmU4LCAweDI2OWMsIDB4NGUz NCwgezB4YWEsIDB4MTQsIDB4ZWQsIDB4NzcsIDB4NmUsIDB4ODUsDQo+ID4gMHhiMywgMHhiNn0g XA0KPiA+DQo+ID4gICAgfQ0KPiA+DQo+ID4NCj4gPg0KPiA+ICsvLy8NCj4gPg0KPiA+ICsvLy8g VGhpcyBpZGVudGlmaWVzIGEgc2lnbmF0dXJlIGNvbnRhaW5pbmcgYW4gUlNBLTMwNzIga2V5LiBU aGUga2V5DQo+ID4gKyhvbmx5IHRoZQ0KPiA+IG1vZHVsdXMNCj4gPg0KPiA+ICsvLy8gc2luY2Ug dGhlIHB1YmxpYyBrZXkgZXhwb25lbnQgaXMga25vd24gdG8gYmUgMHgxMDAwMSkgc2hhbGwgYmUN Cj4gPiArc3RvcmVkIGluIGJpZy0NCj4gPiBlbmRpYW4NCj4gPg0KPiA+ICsvLy8gb3JkZXIuDQo+ ID4NCj4gPiArLy8vIFRoZSBTaWduYXR1cmVIZWFkZXIgc2l6ZSBzaGFsbCBhbHdheXMgYmUgMC4g VGhlIFNpZ25hdHVyZVNpemUNCj4gPiArc2hhbGwgYWx3YXlzDQo+ID4gYmUgMTYgKHNpemUNCj4g Pg0KPiA+ICsvLy8gb2YgU2lnbmF0dXJlT3duZXIgY29tcG9uZW50KSArIDM4NCBieXRlcy4NCj4g Pg0KPiA+ICsvLy8NCj4gPg0KPiA+ICsjZGVmaW5lIEVGSV9DRVJUX1JTQTMwNzJfR1VJRCBcDQo+ ID4NCj4gPiArICB7IFwNCj4gPg0KPiA+ICsgICAgMHhlZGQzMjBjMiwgMHhiMDU3LCAweDRiOGUs IHsweGFkLCAweDQ2LCAweDJjLCAweDliLCAweDg1LCAweDg5LA0KPiA+ICsgMHhlZSwNCj4gPiAw eDkyIH0gXA0KPiA+DQo+ID4gKyAgfQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKy8vLw0KPiA+DQo+ ID4gKy8vLyBUaGlzIGlkZW50aWZpZXMgYSBzaWduYXR1cmUgY29udGFpbmluZyBhbiBSU0EtNDA5 NiBrZXkuIFRoZSBrZXkNCj4gPiArKG9ubHkgdGhlDQo+ID4gbW9kdWx1cw0KPiA+DQo+ID4gKy8v LyBzaW5jZSB0aGUgcHVibGljIGtleSBleHBvbmVudCBpcyBrbm93biB0byBiZSAweDEwMDAxKSBz aGFsbCBiZQ0KPiA+ICtzdG9yZWQgaW4gYmlnLQ0KPiA+IGVuZGlhbg0KPiA+DQo+ID4gKy8vLyBv cmRlci4NCj4gPg0KPiA+ICsvLy8gVGhlIFNpZ25hdHVyZUhlYWRlciBzaXplIHNoYWxsIGFsd2F5 cyBiZSAwLiBUaGUgU2lnbmF0dXJlU2l6ZQ0KPiA+ICtzaGFsbCBhbHdheXMNCj4gPiBiZSAxNiAo c2l6ZQ0KPiA+DQo+ID4gKy8vLyBvZiBTaWduYXR1cmVPd25lciBjb21wb25lbnQpICsgNTEyIGJ5 dGVzLg0KPiA+DQo+ID4gKy8vLw0KPiA+DQo+ID4gKyNkZWZpbmUgRUZJX0NFUlRfUlNBNDA5Nl9H VUlEIFwNCj4gPg0KPiA+ICsgIHsgXA0KPiA+DQo+ID4gKyAgICAweGIyM2U4OWE2LCAweDhjOGIs IDB4NDQxMiwgezB4ODUsIDB4NzMsIDB4MTUsIDB4NGUsIDB4OGQsIDB4MDAsDQo+ID4gKyAweDk4 LA0KPiA+IDB4MmMgfSBcDQo+ID4NCj4gPiArICB9DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAgLy8v DQo+ID4NCj4gPiAgLy8vIFRoaXMgaWRlbnRpZmllcyBhIHNpZ25hdHVyZSBjb250YWluaW5nIGEg UlNBLTIwNDggc2lnbmF0dXJlIG9mIGENCj4gPiBTSEEtMjU2IGhhc2guICBUaGUNCj4gPg0KPiA+ ICAvLy8gU2lnbmF0dXJlSGVhZGVyIHNpemUgc2hhbGwgYWx3YXlzIGJlIDAuIFRoZSBTaWduYXR1 cmVTaXplIHNoYWxsDQo+ID4gYWx3YXlzIGJlIDE2IChzaXplIG9mDQo+ID4NCj4gPiBAQCAtMzMw LDYgKzM1NCw4IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gPiAgZXh0ZXJuIEVGSV9HVUlEICBnRWZp SW1hZ2VTZWN1cml0eURhdGFiYXNlR3VpZDsNCj4gPg0KPiA+ICBleHRlcm4gRUZJX0dVSUQgIGdF ZmlDZXJ0U2hhMjU2R3VpZDsNCj4gPg0KPiA+ICBleHRlcm4gRUZJX0dVSUQgIGdFZmlDZXJ0UnNh MjA0OEd1aWQ7DQo+ID4NCj4gPiArZXh0ZXJuIEVGSV9HVUlEICBnRWZpQ2VydFJzYTMwNzJHdWlk Ow0KPiA+DQo+ID4gK2V4dGVybiBFRklfR1VJRCAgZ0VmaUNlcnRSc2E0MDk2R3VpZDsNCj4gPg0K PiA+ICBleHRlcm4gRUZJX0dVSUQgIGdFZmlDZXJ0UnNhMjA0OFNoYTI1Nkd1aWQ7DQo+ID4NCj4g PiAgZXh0ZXJuIEVGSV9HVUlEICBnRWZpQ2VydFNoYTFHdWlkOw0KPiA+DQo+ID4gIGV4dGVybiBF RklfR1VJRCAgZ0VmaUNlcnRSc2EyMDQ4U2hhMUd1aWQ7DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEv TWRlUGtnL01kZVBrZy5kZWMgYi9NZGVQa2cvTWRlUGtnLmRlYyBpbmRleA0KPiA+IDgwYjY1NTkw NTMuLjc4MmY2ZDE4NGQgMTAwNjQ0DQo+ID4gLS0tIGEvTWRlUGtnL01kZVBrZy5kZWMNCj4gPiAr KysgYi9NZGVQa2cvTWRlUGtnLmRlYw0KPiA+IEBAIC01NjIsNiArNTYyLDggQEANCj4gPiAgICBn RWZpSW1hZ2VTZWN1cml0eURhdGFiYXNlR3VpZCAgPSB7IDB4ZDcxOWIyY2IsIDB4M2QzYSwgMHg0 NTk2LA0KPiA+IHsweGEzLCAweGJjLCAweGRhLCAweGQwLCAgMHhlLCAweDY3LCAweDY1LCAweDZm IH19DQo+ID4NCj4gPiAgICBnRWZpQ2VydFNoYTI1Nkd1aWQgICAgICAgICAgICAgPSB7IDB4YzFj NDE2MjYsIDB4NTA0YywgMHg0MDkyLCB7MHhhYywgMHhhOSwNCj4gMHg0MSwNCj4gPiAweGY5LCAw eDM2LCAweDkzLCAweDQzLCAweDI4IH19DQo+ID4NCj4gPiAgICBnRWZpQ2VydFJzYTIwNDhHdWlk ICAgICAgICAgICAgPSB7IDB4M2M1NzY2ZTgsIDB4MjY5YywgMHg0ZTM0LCB7MHhhYSwgMHgxNCwN Cj4gMHhlZCwNCj4gPiAweDc3LCAweDZlLCAweDg1LCAweGIzLCAweGI2IH19DQo+ID4NCj4gPiAr ICBnRWZpQ2VydFJzYTMwNzJHdWlkICAgICAgICAgICAgPSB7IDB4ZWRkMzIwYzIsIDB4YjA1Nywg MHg0YjhlLCB7MHhhZCwgMHg0NiwNCj4gPiAweDJjLCAweDliLCAweDg1LCAweDg5LCAweGVlLCAw eDkyIH19DQo+ID4NCj4gPiArICBnRWZpQ2VydFJzYTQwOTZHdWlkICAgICAgICAgICAgPSB7IDB4 YjIzZTg5YTYsIDB4OGM4YiwgMHg0NDEyLCB7MHg4NSwgMHg3MywNCj4gPiAweDE1LCAweDRlLCAw eDhkLCAweDAwLCAweDk4LCAweDJjIH19DQo+ID4NCj4gPiAgICBnRWZpQ2VydFJzYTIwNDhTaGEy NTZHdWlkICAgICAgPSB7IDB4ZTJiMzYxOTAsIDB4ODc5YiwgMHg0YTNkLCB7MHhhZCwNCj4gMHg4 ZCwNCj4gPiAweGYyLCAweGU3LCAweGJiLCAweGEzLCAweDI3LCAweDg0IH19DQo+ID4NCj4gPiAg ICBnRWZpQ2VydFNoYTFHdWlkICAgICAgICAgICAgICAgPSB7IDB4ODI2Y2E1MTIsIDB4Y2YxMCwg MHg0YWM5LCB7MHhiMSwgMHg4NywgMHhiZSwNCj4gPiAweDEsIDB4NDksIDB4NjYsIDB4MzEsIDB4 YmQgfX0NCj4gPg0KPiA+ICAgIGdFZmlDZXJ0UnNhMjA0OFNoYTFHdWlkICAgICAgICA9IHsgMHg2 N2Y4NDQ0ZiwgMHg4NzQzLCAweDQ4ZjEsIHsweGEzLCAweDI4LA0KPiA+IDB4MWUsIDB4YWEsIDB4 YjgsIDB4NzMsIDB4NjAsIDB4ODAgfX0NCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9TZWN1cml0eVBr Zy9MaWJyYXJ5L0F1dGhWYXJpYWJsZUxpYi9BdXRoU2VydmljZS5jDQo+ID4gYi9TZWN1cml0eVBr Zy9MaWJyYXJ5L0F1dGhWYXJpYWJsZUxpYi9BdXRoU2VydmljZS5jDQo+ID4gaW5kZXggNDUyZWQ0 OTFlYS4uMjg4ZTQ0YTM1OSAxMDA2NDQNCj4gPiAtLS0gYS9TZWN1cml0eVBrZy9MaWJyYXJ5L0F1 dGhWYXJpYWJsZUxpYi9BdXRoU2VydmljZS5jDQo+ID4gKysrIGIvU2VjdXJpdHlQa2cvTGlicmFy eS9BdXRoVmFyaWFibGVMaWIvQXV0aFNlcnZpY2UuYw0KPiA+IEBAIC0yOSwxMiArMjksMTYgQEAg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiAjaW5jbHVk ZSA8UHJvdG9jb2wvVmFyaWFibGVQb2xpY3kuaD4NCj4gPg0KPiA+ICAjaW5jbHVkZSA8TGlicmFy eS9WYXJpYWJsZVBvbGljeUxpYi5oPg0KPiA+DQo+ID4NCj4gPg0KPiA+ICsjZGVmaW5lIFNIQV9E SUdFU1RfU0laRV9NQVggU0hBNTEyX0RJR0VTVF9TSVpFDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAg Ly8NCj4gPg0KPiA+ICAvLyBQdWJsaWMgRXhwb25lbnQgb2YgUlNBIEtleS4NCj4gPg0KPiA+ICAv Lw0KPiA+DQo+ID4gIENPTlNUIFVJTlQ4ICBtUnNhRVtdID0geyAweDAxLCAweDAwLCAweDAxIH07 DQo+ID4NCj4gPg0KPiA+DQo+ID4gIENPTlNUIFVJTlQ4ICBtU2hhMjU2T2lkVmFsdWVbXSA9IHsg MHg2MCwgMHg4NiwgMHg0OCwgMHgwMSwgMHg2NSwNCj4gPiAweDAzLCAweDA0LCAweDAyLCAweDAx IH07DQo+ID4NCj4gPiArQ09OU1QgVUlOVDggIG1TaGEzODRPaWRWYWx1ZVtdID0geyAweDYwLCAw eDg2LCAweDQ4LCAweDAxLCAweDY1LA0KPiA+ICsweDAzLA0KPiA+IDB4MDQsIDB4MDIsIDB4MDIg fTsNCj4gPg0KPiA+ICtDT05TVCBVSU5UOCAgbVNoYTUxMk9pZFZhbHVlW10gPSB7IDB4NjAsIDB4 ODYsIDB4NDgsIDB4MDEsIDB4NjUsDQo+ID4gKzB4MDMsDQo+ID4gMHgwNCwgMHgwMiwgMHgwMyB9 Ow0KPiA+DQo+ID4NCj4gPg0KPiA+ICAvLw0KPiA+DQo+ID4gIC8vIFJlcXVpcmVtZW50IGZvciBk aWZmZXJlbnQgc2lnbmF0dXJlIHR5cGUgd2hpY2ggaGF2ZSBiZWVuIGRlZmluZWQNCj4gPiBpbiBV RUZJIHNwZWMuDQo+ID4NCj4gPiBAQCAtNDQsNiArNDgsOCBAQCBFRklfU0lHTkFUVVJFX0lURU0g IG1TdXBwb3J0U2lnSXRlbVtdID0gew0KPiA+ICAgIC8vIHtTaWdUeXBlLCAgICAgICAgICAgICAg ICAgICAgICAgU2lnSGVhZGVyU2l6ZSwgICBTaWdEYXRhU2l6ZSAgfQ0KPiA+DQo+ID4gICAgeyBF RklfQ0VSVF9TSEEyNTZfR1VJRCwgICAgICAgICAwLCAzMiAgICAgICAgICAgIH0sDQo+ID4NCj4g PiAgICB7IEVGSV9DRVJUX1JTQTIwNDhfR1VJRCwgICAgICAgIDAsIDI1NiAgICAgICAgICAgfSwN Cj4gPg0KPiA+ICsgIHsgRUZJX0NFUlRfUlNBMzA3Ml9HVUlELCAgICAgICAgMCwgMzg0ICAgICAg ICAgICB9LA0KPiA+DQo+ID4gKyAgeyBFRklfQ0VSVF9SU0E0MDk2X0dVSUQsICAgICAgICAwLCA1 MTIgICAgICAgICAgIH0sDQo+ID4NCj4gPiAgICB7IEVGSV9DRVJUX1JTQTIwNDhfU0hBMjU2X0dV SUQsIDAsIDI1NiAgICAgICAgICAgfSwNCj4gPg0KPiA+ICAgIHsgRUZJX0NFUlRfU0hBMV9HVUlE LCAgICAgICAgICAgMCwgMjAgICAgICAgICAgICB9LA0KPiA+DQo+ID4gICAgeyBFRklfQ0VSVF9S U0EyMDQ4X1NIQTFfR1VJRCwgICAwLCAyNTYgICAgICAgICAgIH0sDQo+ID4NCj4gPiBAQCAtMTE3 Miw2ICsxMTc4LDE3MiBAQCBDYWxjdWxhdGVQcml2QXV0aFZhclNpZ25DaGFpblNIQTI1NkRpZ2Vz dCAoDQo+ID4gICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+DQo+ID4gIH0NCj4gPg0KPiA+DQo+ ID4NCj4gPiArLyoqDQo+ID4NCj4gPiArICBDYWxjdWxhdGUgU0hBMzggZGlnZXN0IG9mIFNpZ25l ckNlcnQgQ29tbW9uTmFtZSArIFRvcGxldmVsQ2VydA0KPiA+IHRic0NlcnRpZmljYXRlDQo+ID4N Cj4gPiArICBTaWduZXJDZXJ0IGFuZCBUb3BsZXZlbENlcnQgYXJlIGluc2lkZSB0aGUgc2lnbmVy IGNlcnRpZmljYXRlIGNoYWluLg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSAg U2lnbmVyQ2VydCAgICAgICAgICBBIHBvaW50ZXIgdG8gU2lnbmVyQ2VydCBkYXRhLg0KPiA+DQo+ ID4gKyAgQHBhcmFtW2luXSAgU2lnbmVyQ2VydFNpemUgICAgICBMZW5ndGggb2YgU2lnbmVyQ2Vy dCBkYXRhLg0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSAgVG9wTGV2ZWxDZXJ0ICAgICAgICBBIHBv aW50ZXIgdG8gVG9wTGV2ZWxDZXJ0IGRhdGEuDQo+ID4NCj4gPiArICBAcGFyYW1baW5dICBUb3BM ZXZlbENlcnRTaXplICAgIExlbmd0aCBvZiBUb3BMZXZlbENlcnQgZGF0YS4NCj4gPg0KPiA+ICsg IEBwYXJhbVtvdXRdIFNoYTM4NERpZ2VzdCAgICAgICBTaGEzODQgZGlnZXN0IGNhbGN1bGF0ZWQu DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICBAcmV0dXJuIEVGSV9BQk9SVEVEICAgICAgICAgIERp Z2VzdCBwcm9jZXNzIGZhaWxlZC4NCj4gPg0KPiA+ICsgIEByZXR1cm4gRUZJX1NVQ0NFU1MgICAg ICAgICAgU0hBMzg0IERpZ2VzdCBpcyBzdWNjZXNzZnVsbHkgY2FsY3VsYXRlZC4NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+ICtFRklfU1RBVFVTDQo+ID4NCj4gPiArQ2FsY3Vs YXRlUHJpdkF1dGhWYXJTaWduQ2hhaW5TSEEzODREaWdlc3QgKA0KPiA+DQo+ID4gKyAgSU4gICAg IFVJTlQ4ICAqU2lnbmVyQ2VydCwNCj4gPg0KPiA+ICsgIElOICAgICBVSU5UTiAgU2lnbmVyQ2Vy dFNpemUsDQo+ID4NCj4gPiArICBJTiAgICAgVUlOVDggICpUb3BMZXZlbENlcnQsDQo+ID4NCj4g PiArICBJTiAgICAgVUlOVE4gIFRvcExldmVsQ2VydFNpemUsDQo+ID4NCj4gPiArICBPVVQgICAg VUlOVDggICpTaGEzODREaWdlc3QNCj4gPg0KPiA+ICsgICkNCj4gPg0KPiA+ICt7DQo+ID4NCj4g PiArICBVSU5UOCAgICAgICAqVGJzQ2VydDsNCj4gPg0KPiA+ICsgIFVJTlROICAgICAgIFRic0Nl cnRTaXplOw0KPiA+DQo+ID4gKyAgQ0hBUjggICAgICAgQ2VydENvbW1vbk5hbWVbMTI4XTsNCj4g Pg0KPiA+ICsgIFVJTlROICAgICAgIENlcnRDb21tb25OYW1lU2l6ZTsNCj4gPg0KPiA+ICsgIEJP T0xFQU4gICAgIENyeXB0b1N0YXR1czsNCj4gPg0KPiA+ICsgIEVGSV9TVEFUVVMgIFN0YXR1czsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgIENlcnRDb21tb25OYW1lU2l6ZSA9IHNpemVvZiAoQ2Vy dENvbW1vbk5hbWUpOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgLy8NCj4gPg0KPiA+ICsgIC8v IEdldCBTaWduZXJDZXJ0IENvbW1vbk5hbWUNCj4gPg0KPiA+ICsgIC8vDQo+ID4NCj4gPiArICBT dGF0dXMgPSBYNTA5R2V0Q29tbW9uTmFtZSAoU2lnbmVyQ2VydCwgU2lnbmVyQ2VydFNpemUsDQo+ ID4gQ2VydENvbW1vbk5hbWUsICZDZXJ0Q29tbW9uTmFtZVNpemUpOw0KPiA+DQo+ID4gKyAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0lORk8s ICIlYSBHZXQgU2lnbmVyQ2VydCBDb21tb25OYW1lIGZhaWxlZCB3aXRoDQo+ID4gc3RhdHVzICV4 XG4iLCBfX0ZVTkNUSU9OX18sIFN0YXR1cykpOw0KPiA+DQo+ID4gKyAgICByZXR1cm4gRUZJX0FC T1JURUQ7DQo+ID4NCj4gPiArICB9DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAvLw0KPiA+DQo+ ID4gKyAgLy8gR2V0IFRvcExldmVsQ2VydCB0YnNDZXJ0aWZpY2F0ZQ0KPiA+DQo+ID4gKyAgLy8N Cj4gPg0KPiA+ICsgIGlmICghWDUwOUdldFRCU0NlcnQgKFRvcExldmVsQ2VydCwgVG9wTGV2ZWxD ZXJ0U2l6ZSwgJlRic0NlcnQsDQo+ID4gJlRic0NlcnRTaXplKSkgew0KPiA+DQo+ID4gKyAgICBE RUJVRyAoKERFQlVHX0lORk8sICIlYSBHZXQgVG9wLWxldmVsIENlcnQgdGJzQ2VydGlmaWNhdGUN Cj4gPiArIGZhaWxlZCFcbiIsDQo+ID4gX19GVU5DVElPTl9fKSk7DQo+ID4NCj4gPiArICAgIHJl dHVybiBFRklfQUJPUlRFRDsNCj4gPg0KPiA+ICsgIH0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg IC8vDQo+ID4NCj4gPiArICAvLyBEaWdlc3QgU2lnbmVyQ2VydCBDTiArIFRvcExldmVsQ2VydCB0 YnNDZXJ0aWZpY2F0ZQ0KPiA+DQo+ID4gKyAgLy8NCj4gPg0KPiA+ICsgIFplcm9NZW0gKFNoYTM4 NERpZ2VzdCwgU0hBMzg0X0RJR0VTVF9TSVpFKTsNCj4gPg0KPiA+ICsgIENyeXB0b1N0YXR1cyA9 IFNoYTM4NEluaXQgKG1IYXNoQ3R4KTsNCj4gPg0KPiA+ICsgIGlmICghQ3J5cHRvU3RhdHVzKSB7 DQo+ID4NCj4gPiArICAgIHJldHVybiBFRklfQUJPUlRFRDsNCj4gPg0KPiA+ICsgIH0NCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgIC8vDQo+ID4NCj4gPiArICAvLyAnXDAnIGlzIGZvcmNlZCBpbiBD ZXJ0Q29tbW9uTmFtZS4gTm8gb3ZlcmZsb3cgaXNzdWUNCj4gPg0KPiA+ICsgIC8vDQo+ID4NCj4g PiArICBDcnlwdG9TdGF0dXMgPSBTaGEzODRVcGRhdGUgKA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICBtSGFzaEN0eCwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgQ2VydENvbW1v bk5hbWUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIEFzY2lpU3RyTGVuIChDZXJ0Q29t bW9uTmFtZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgKTsNCj4gPg0KPiA+ICsgIGlm ICghQ3J5cHRvU3RhdHVzKSB7DQo+ID4NCj4gPiArICAgIHJldHVybiBFRklfQUJPUlRFRDsNCj4g Pg0KPiA+ICsgIH0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgIENyeXB0b1N0YXR1cyA9IFNoYTM4 NFVwZGF0ZSAobUhhc2hDdHgsIFRic0NlcnQsIFRic0NlcnRTaXplKTsNCj4gPg0KPiA+ICsgIGlm ICghQ3J5cHRvU3RhdHVzKSB7DQo+ID4NCj4gPiArICAgIHJldHVybiBFRklfQUJPUlRFRDsNCj4g Pg0KPiA+ICsgIH0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgIENyeXB0b1N0YXR1cyA9IFNoYTM4 NEZpbmFsIChtSGFzaEN0eCwgU2hhMzg0RGlnZXN0KTsNCj4gPg0KPiA+ICsgIGlmICghQ3J5cHRv U3RhdHVzKSB7DQo+ID4NCj4gPiArICAgIHJldHVybiBFRklfQUJPUlRFRDsNCj4gPg0KPiA+ICsg IH0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPg0KPiA+ ICt9DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArLyoqDQo+ID4NCj4gPiArICBDYWxjdWxhdGUgU0hB NTEyIGRpZ2VzdCBvZiBTaWduZXJDZXJ0IENvbW1vbk5hbWUgKyBUb3BsZXZlbENlcnQNCj4gPiB0 YnNDZXJ0aWZpY2F0ZQ0KPiA+DQo+ID4gKyAgU2lnbmVyQ2VydCBhbmQgVG9wbGV2ZWxDZXJ0IGFy ZSBpbnNpZGUgdGhlIHNpZ25lciBjZXJ0aWZpY2F0ZSBjaGFpbi4NCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgIEBwYXJhbVtpbl0gIFNpZ25lckNlcnQgICAgICAgICAgQSBwb2ludGVyIHRvIFNpZ25l ckNlcnQgZGF0YS4NCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gIFNpZ25lckNlcnRTaXplICAgICAg TGVuZ3RoIG9mIFNpZ25lckNlcnQgZGF0YS4NCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gIFRvcExl dmVsQ2VydCAgICAgICAgQSBwb2ludGVyIHRvIFRvcExldmVsQ2VydCBkYXRhLg0KPiA+DQo+ID4g KyAgQHBhcmFtW2luXSAgVG9wTGV2ZWxDZXJ0U2l6ZSAgICBMZW5ndGggb2YgVG9wTGV2ZWxDZXJ0 IGRhdGEuDQo+ID4NCj4gPiArICBAcGFyYW1bb3V0XSBTaGE1MTJEaWdlc3QgICAgICAgU2hhNTEy IGRpZ2VzdCBjYWxjdWxhdGVkLg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgQHJldHVybiBFRklf QUJPUlRFRCAgICAgICAgICBEaWdlc3QgcHJvY2VzcyBmYWlsZWQuDQo+ID4NCj4gPiArICBAcmV0 dXJuIEVGSV9TVUNDRVNTICAgICAgICAgIFNIQTUxMiBEaWdlc3QgaXMgc3VjY2Vzc2Z1bGx5IGNh bGN1bGF0ZWQuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArKiovDQo+ID4NCj4gPiArRUZJX1NUQVRV Uw0KPiA+DQo+ID4gK0NhbGN1bGF0ZVByaXZBdXRoVmFyU2lnbkNoYWluU0hBNTEyRGlnZXN0ICgN Cj4gPg0KPiA+ICsgIElOICAgICBVSU5UOCAgKlNpZ25lckNlcnQsDQo+ID4NCj4gPiArICBJTiAg ICAgVUlOVE4gIFNpZ25lckNlcnRTaXplLA0KPiA+DQo+ID4gKyAgSU4gICAgIFVJTlQ4ICAqVG9w TGV2ZWxDZXJ0LA0KPiA+DQo+ID4gKyAgSU4gICAgIFVJTlROICBUb3BMZXZlbENlcnRTaXplLA0K PiA+DQo+ID4gKyAgT1VUICAgIFVJTlQ4ICAqU2hhNTEyRGlnZXN0DQo+ID4NCj4gPiArICApDQo+ ID4NCj4gPiArew0KPiA+DQo+ID4gKyAgVUlOVDggICAgICAgKlRic0NlcnQ7DQo+ID4NCj4gPiAr ICBVSU5UTiAgICAgICBUYnNDZXJ0U2l6ZTsNCj4gPg0KPiA+ICsgIENIQVI4ICAgICAgIENlcnRD b21tb25OYW1lWzEyOF07DQo+ID4NCj4gPiArICBVSU5UTiAgICAgICBDZXJ0Q29tbW9uTmFtZVNp emU7DQo+ID4NCj4gPiArICBCT09MRUFOICAgICBDcnlwdG9TdGF0dXM7DQo+ID4NCj4gPiArICBF RklfU1RBVFVTICBTdGF0dXM7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICBDZXJ0Q29tbW9uTmFt ZVNpemUgPSBzaXplb2YgKENlcnRDb21tb25OYW1lKTsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg IC8vDQo+ID4NCj4gPiArICAvLyBHZXQgU2lnbmVyQ2VydCBDb21tb25OYW1lDQo+ID4NCj4gPiAr ICAvLw0KPiA+DQo+ID4gKyAgU3RhdHVzID0gWDUwOUdldENvbW1vbk5hbWUgKFNpZ25lckNlcnQs IFNpZ25lckNlcnRTaXplLA0KPiA+IENlcnRDb21tb25OYW1lLCAmQ2VydENvbW1vbk5hbWVTaXpl KTsNCj4gPg0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPg0KPiA+ICsgICAg REVCVUcgKChERUJVR19JTkZPLCAiJWEgR2V0IFNpZ25lckNlcnQgQ29tbW9uTmFtZSBmYWlsZWQg d2l0aA0KPiA+IHN0YXR1cyAleFxuIiwgX19GVU5DVElPTl9fLCBTdGF0dXMpKTsNCj4gPg0KPiA+ ICsgICAgcmV0dXJuIEVGSV9BQk9SVEVEOw0KPiA+DQo+ID4gKyAgfQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgLy8NCj4gPg0KPiA+ICsgIC8vIEdldCBUb3BMZXZlbENlcnQgdGJzQ2VydGlmaWNh dGUNCj4gPg0KPiA+ICsgIC8vDQo+ID4NCj4gPiArICBpZiAoIVg1MDlHZXRUQlNDZXJ0IChUb3BM ZXZlbENlcnQsIFRvcExldmVsQ2VydFNpemUsICZUYnNDZXJ0LA0KPiA+ICZUYnNDZXJ0U2l6ZSkp IHsNCj4gPg0KPiA+ICsgICAgREVCVUcgKChERUJVR19JTkZPLCAiJWEgR2V0IFRvcC1sZXZlbCBD ZXJ0IHRic0NlcnRpZmljYXRlDQo+ID4gKyBmYWlsZWQhXG4iLA0KPiA+IF9fRlVOQ1RJT05fXykp Ow0KPiA+DQo+ID4gKyAgICByZXR1cm4gRUZJX0FCT1JURUQ7DQo+ID4NCj4gPiArICB9DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAvLw0KPiA+DQo+ID4gKyAgLy8gRGlnZXN0IFNpZ25lckNlcnQg Q04gKyBUb3BMZXZlbENlcnQgdGJzQ2VydGlmaWNhdGUNCj4gPg0KPiA+ICsgIC8vDQo+ID4NCj4g PiArICBaZXJvTWVtIChTaGE1MTJEaWdlc3QsIFNIQTUxMl9ESUdFU1RfU0laRSk7DQo+ID4NCj4g PiArICBDcnlwdG9TdGF0dXMgPSBTaGE1MTJJbml0IChtSGFzaEN0eCk7DQo+ID4NCj4gPiArICBp ZiAoIUNyeXB0b1N0YXR1cykgew0KPiA+DQo+ID4gKyAgICByZXR1cm4gRUZJX0FCT1JURUQ7DQo+ ID4NCj4gPiArICB9DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAvLw0KPiA+DQo+ID4gKyAgLy8g J1wwJyBpcyBmb3JjZWQgaW4gQ2VydENvbW1vbk5hbWUuIE5vIG92ZXJmbG93IGlzc3VlDQo+ID4N Cj4gPiArICAvLw0KPiA+DQo+ID4gKyAgQ3J5cHRvU3RhdHVzID0gU2hhNTEyVXBkYXRlICgNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgbUhhc2hDdHgsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgIENlcnRDb21tb25OYW1lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICBB c2NpaVN0ckxlbiAoQ2VydENvbW1vbk5hbWUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICk7DQo+ID4NCj4gPiArICBpZiAoIUNyeXB0b1N0YXR1cykgew0KPiA+DQo+ID4gKyAgICByZXR1 cm4gRUZJX0FCT1JURUQ7DQo+ID4NCj4gPiArICB9DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICBD cnlwdG9TdGF0dXMgPSBTaGE1MTJVcGRhdGUgKG1IYXNoQ3R4LCBUYnNDZXJ0LCBUYnNDZXJ0U2l6 ZSk7DQo+ID4NCj4gPiArICBpZiAoIUNyeXB0b1N0YXR1cykgew0KPiA+DQo+ID4gKyAgICByZXR1 cm4gRUZJX0FCT1JURUQ7DQo+ID4NCj4gPiArICB9DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICBD cnlwdG9TdGF0dXMgPSBTaGE1MTJGaW5hbCAobUhhc2hDdHgsIFNoYTUxMkRpZ2VzdCk7DQo+ID4N Cj4gPiArICBpZiAoIUNyeXB0b1N0YXR1cykgew0KPiA+DQo+ID4gKyAgICByZXR1cm4gRUZJX0FC T1JURUQ7DQo+ID4NCj4gPiArICB9DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICByZXR1cm4gRUZJ X1NVQ0NFU1M7DQo+ID4NCj4gPiArfQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gIC8qKg0KPiA+DQo+ ID4gICAgRmluZCBtYXRjaGluZyBzaWduZXIncyBjZXJ0aWZpY2F0ZXMgZm9yIGNvbW1vbiBhdXRo ZW50aWNhdGVkDQo+ID4gdmFyaWFibGUNCj4gPg0KPiA+ICAgIGJ5IGNvcnJlc3BvbmRpbmcgVmFy aWFibGVOYW1lIGFuZCBWZW5kb3JHdWlkIGZyb20gImNlcnRkYiIgb3INCj4gImNlcnRkYnYiLg0K PiA+DQo+ID4gQEAgLTE1MjYsNiArMTY5OCw3IEBAIERlbGV0ZUNlcnRzRnJvbURiICgNCj4gPiAg ICBAcGFyYW1baW5dICBTaWduZXJDZXJ0U2l6ZSAgICBMZW5ndGggb2Ygc2lnbmVyIGNlcnRpZmlj YXRlLg0KPiA+DQo+ID4gICAgQHBhcmFtW2luXSAgVG9wTGV2ZWxDZXJ0ICAgICAgVG9wLWxldmVs IGNlcnRpZmljYXRlIGRhdGEuDQo+ID4NCj4gPiAgICBAcGFyYW1baW5dICBUb3BMZXZlbENlcnRT aXplICBMZW5ndGggb2YgdG9wLWxldmVsIGNlcnRpZmljYXRlLg0KPiA+DQo+ID4gKyAgQHBhcmFt W2luXSAgRGlnZXN0U2l6ZSAgICAgICAgRGlnZXN0IFNpemUuDQo+ID4NCj4gPg0KPiA+DQo+ID4g ICAgQHJldHZhbCAgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEFueSBpbnB1dCBwYXJhbWV0ZXIgaXMg aW52YWxpZC4NCj4gPg0KPiA+ICAgIEByZXR2YWwgIEVGSV9BQ0NFU1NfREVOSUVEICAgICBBbiBB VVRIX0NFUlRfREJfREFUQSBlbnRyeSB3aXRoDQo+IHNhbWUNCj4gPiBWYXJpYWJsZU5hbWUNCj4g Pg0KPiA+IEBAIC0xNTQyLDcgKzE3MTUsOCBAQCBJbnNlcnRDZXJ0c1RvRGIgKA0KPiA+ICAgIElO ICAgICBVSU5UOCAgICAgKlNpZ25lckNlcnQsDQo+ID4NCj4gPiAgICBJTiAgICAgVUlOVE4gICAg IFNpZ25lckNlcnRTaXplLA0KPiA+DQo+ID4gICAgSU4gICAgIFVJTlQ4ICAgICAqVG9wTGV2ZWxD ZXJ0LA0KPiA+DQo+ID4gLSAgSU4gICAgIFVJTlROICAgICBUb3BMZXZlbENlcnRTaXplDQo+ID4N Cj4gPiArICBJTiAgICAgVUlOVE4gICAgIFRvcExldmVsQ2VydFNpemUsDQo+ID4NCj4gPiArICBJ TiAgICAgVUlOVDMyICAgIERpZ2VzdFNpemUNCj4gPg0KPiA+ICAgICkNCj4gPg0KPiA+ICB7DQo+ ID4NCj4gPiAgICBFRklfU1RBVFVTICAgICAgICAgU3RhdHVzOw0KPiA+DQo+ID4gQEAgLTE1NTYs NyArMTczMCw3IEBAIEluc2VydENlcnRzVG9EYiAoDQo+ID4gICAgVUlOVDMyICAgICAgICAgICAg IENlcnREYXRhU2l6ZTsNCj4gPg0KPiA+ICAgIEFVVEhfQ0VSVF9EQl9EQVRBICAqUHRyOw0KPiA+ DQo+ID4gICAgQ0hBUjE2ICAgICAgICAgICAgICpEYk5hbWU7DQo+ID4NCj4gPiAtICBVSU5UOCAg ICAgICAgICAgICAgU2hhMjU2RGlnZXN0W1NIQTI1Nl9ESUdFU1RfU0laRV07DQo+ID4NCj4gPiAr ICBVSU5UOCAgICAgICAgICAgICAgU2hhRGlnZXN0W1NIQV9ESUdFU1RfU0laRV9NQVhdOw0KPiA+ DQo+ID4NCj4gPg0KPiA+ICAgIGlmICgoVmFyaWFibGVOYW1lID09IE5VTEwpIHx8IChWZW5kb3JH dWlkID09IE5VTEwpIHx8IChTaWduZXJDZXJ0DQo+ID4gPT0gTlVMTCkNCj4gPiB8fCAoVG9wTGV2 ZWxDZXJ0ID09IE5VTEwpKSB7DQo+ID4NCj4gPiAgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJB TUVURVI7DQo+ID4NCj4gPiBAQCAtMTYxOCwyMCArMTc5Miw0MSBAQCBJbnNlcnRDZXJ0c1RvRGIg KA0KPiA+ICAgIC8vIENvbnN0cnVjdCBuZXcgZGF0YSBjb250ZW50IG9mIHZhcmlhYmxlICJjZXJ0 ZGIiIG9yICJjZXJ0ZGJ2Ii4NCj4gPg0KPiA+ICAgIC8vDQo+ID4NCj4gPiAgICBOYW1lU2l6ZSAg ICAgID0gKFVJTlQzMilTdHJMZW4gKFZhcmlhYmxlTmFtZSk7DQo+ID4NCj4gPiAtICBDZXJ0RGF0 YVNpemUgID0gc2l6ZW9mIChTaGEyNTZEaWdlc3QpOw0KPiA+DQo+ID4gKyAgQ2VydERhdGFTaXpl ICA9IERpZ2VzdFNpemU7DQo+ID4NCj4gPiAgICBDZXJ0Tm9kZVNpemUgID0gc2l6ZW9mIChBVVRI X0NFUlRfREJfREFUQSkgKyAoVUlOVDMyKUNlcnREYXRhU2l6ZSArDQo+ID4gTmFtZVNpemUgKiBz aXplb2YgKENIQVIxNik7DQo+ID4NCj4gPiAgICBOZXdDZXJ0RGJTaXplID0gKFVJTlQzMilEYXRh U2l6ZSArIENlcnROb2RlU2l6ZTsNCj4gPg0KPiA+ICAgIGlmIChOZXdDZXJ0RGJTaXplID4gbU1h eENlcnREYlNpemUpIHsNCj4gPg0KPiA+ICAgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VT Ow0KPiA+DQo+ID4gICAgfQ0KPiA+DQo+ID4NCj4gPg0KPiA+IC0gIFN0YXR1cyA9IENhbGN1bGF0 ZVByaXZBdXRoVmFyU2lnbkNoYWluU0hBMjU2RGlnZXN0ICgNCj4gPg0KPiA+IC0gICAgICAgICAg ICAgU2lnbmVyQ2VydCwNCj4gPg0KPiA+IC0gICAgICAgICAgICAgU2lnbmVyQ2VydFNpemUsDQo+ ID4NCj4gPiAtICAgICAgICAgICAgIFRvcExldmVsQ2VydCwNCj4gPg0KPiA+IC0gICAgICAgICAg ICAgVG9wTGV2ZWxDZXJ0U2l6ZSwNCj4gPg0KPiA+IC0gICAgICAgICAgICAgU2hhMjU2RGlnZXN0 DQo+ID4NCj4gPiAtICAgICAgICAgICAgICk7DQo+ID4NCj4gPiArICBpZiAoRGlnZXN0U2l6ZSA9 PSBTSEEyNTZfRElHRVNUX1NJWkUpIHsNCj4gPg0KPiA+ICsgICAgU3RhdHVzID0gQ2FsY3VsYXRl UHJpdkF1dGhWYXJTaWduQ2hhaW5TSEEyNTZEaWdlc3QgKA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgIFNpZ25lckNlcnQsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgU2lnbmVyQ2VydFNpemUs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgVG9wTGV2ZWxDZXJ0LA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgIFRvcExldmVsQ2VydFNpemUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgU2hh RGlnZXN0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgKTsNCj4gPg0KPiA+ICsgIH0gZWxzZSBp ZiAoRGlnZXN0U2l6ZSA9PSBTSEEzODRfRElHRVNUX1NJWkUpIHsNCj4gPg0KPiA+ICsgICAgU3Rh dHVzID0gQ2FsY3VsYXRlUHJpdkF1dGhWYXJTaWduQ2hhaW5TSEEzODREaWdlc3QgKA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgIFNpZ25lckNlcnQsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg U2lnbmVyQ2VydFNpemUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgVG9wTGV2ZWxDZXJ0LA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgIFRvcExldmVsQ2VydFNpemUsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgU2hhRGlnZXN0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgKTsNCj4gPg0K PiA+ICsgIH0gZWxzZSBpZiAoRGlnZXN0U2l6ZSA9PSBTSEE1MTJfRElHRVNUX1NJWkUpIHsNCj4g Pg0KPiA+ICsgICAgU3RhdHVzID0gQ2FsY3VsYXRlUHJpdkF1dGhWYXJTaWduQ2hhaW5TSEE1MTJE aWdlc3QgKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgIFNpZ25lckNlcnQsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgU2lnbmVyQ2VydFNpemUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg VG9wTGV2ZWxDZXJ0LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgIFRvcExldmVsQ2VydFNpemUs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgU2hhRGlnZXN0DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgKTsNCj4gPg0KPiA+ICsgIH0gZWxzZSB7DQo+ID4NCj4gPiArICAgIHJldHVybiBFRklf VU5TVVBQT1JURUQ7DQo+ID4NCj4gPiArICB9DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAgICBpZiAo RUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4NCj4gPiAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4N Cj4gPiAgICB9DQo+ID4NCj4gPiBAQCAtMTY2Myw3ICsxODU4LDcgQEAgSW5zZXJ0Q2VydHNUb0Ri ICgNCj4gPg0KPiA+DQo+ID4gICAgQ29weU1lbSAoDQo+ID4NCj4gPiAgICAgIChVSU5UOCAqKVB0 ciArICBzaXplb2YgKEFVVEhfQ0VSVF9EQl9EQVRBKSArIE5hbWVTaXplICogc2l6ZW9mDQo+ID4g KENIQVIxNiksDQo+ID4NCj4gPiAtICAgIFNoYTI1NkRpZ2VzdCwNCj4gPg0KPiA+ICsgICAgU2hh RGlnZXN0LA0KPiA+DQo+ID4gICAgICBDZXJ0RGF0YVNpemUNCj4gPg0KPiA+ICAgICAgKTsNCj4g Pg0KPiA+DQo+ID4NCj4gPiBAQCAtMTg1Nyw3ICsyMDUyLDcgQEAgVmVyaWZ5VGltZUJhc2VkUGF5 bG9hZCAoDQo+ID4gICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIENlcnRTdGFja1Np emU7DQo+ID4NCj4gPiAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgKkNlcnRzSW5D ZXJ0RGI7DQo+ID4NCj4gPiAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgQ2VydHNT aXplaW5EYjsNCj4gPg0KPiA+IC0gIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGEy NTZEaWdlc3RbU0hBMjU2X0RJR0VTVF9TSVpFXTsNCj4gPg0KPiA+ICsgIFVJTlQ4ICAgICAgICAg ICAgICAgICAgICAgICAgICBTaGFEaWdlc3RbU0hBX0RJR0VTVF9TSVpFX01BWF07DQo+ID4NCj4g PiAgICBFRklfQ0VSVF9EQVRBICAgICAgICAgICAgICAgICAgKkNlcnREYXRhUHRyOw0KPiA+DQo+ ID4NCj4gPg0KPiA+ICAgIC8vDQo+ID4NCj4gPiBAQCAtMTkyOCw3ICsyMTIzLDcgQEAgVmVyaWZ5 VGltZUJhc2VkUGF5bG9hZCAoDQo+ID4NCj4gPg0KPiA+ICAgIC8vDQo+ID4NCj4gPiAgICAvLyBT aWduZWREYXRhLmRpZ2VzdEFsZ29yaXRobXMgc2hhbGwgY29udGFpbiB0aGUgZGlnZXN0IGFsZ29y aXRobQ0KPiA+IHVzZWQgd2hlbiBwcmVwYXJpbmcgdGhlDQo+ID4NCj4gPiAtICAvLyBzaWduYXR1 cmUuIE9ubHkgYSBkaWdlc3QgYWxnb3JpdGhtIG9mIFNIQS0yNTYgaXMgYWNjZXB0ZWQuDQo+ID4N Cj4gPiArICAvLyBzaWduYXR1cmUuIE9ubHkgYSBkaWdlc3QgYWxnb3JpdGhtIG9mIFNIQS0yNTYs IFNIQS0zODQgb3INCj4gPiArIFNIQS01MTIgaXMNCj4gPiBhY2NlcHRlZC4NCj4gPg0KPiA+ICAg IC8vDQo+ID4NCj4gPiAgICAvLyAgICBBY2NvcmRpbmcgdG8gUEtDUyM3IERlZmluaXRpb24gKGh0 dHBzOi8vd3d3LnJmYy0NCj4gZWRpdG9yLm9yZy9yZmMvcmZjMjMxNSk6DQo+ID4NCj4gPiAgICAv LyAgICAgICAgU2lnbmVkRGF0YSA6Oj0gU0VRVUVOQ0Ugew0KPiA+DQo+ID4gQEAgLTE5NzgsNyAr MjE3MywxOSBAQCBWZXJpZnlUaW1lQmFzZWRQYXlsb2FkICgNCj4gPiAgICAgICAgICAgICAgIHx8 IChDb21wYXJlTWVtIChTaWdEYXRhICsgMTMsICZtU2hhMjU2T2lkVmFsdWUsIHNpemVvZg0KPiA+ IChtU2hhMjU2T2lkVmFsdWUpKSAhPSAwKSkpDQo+ID4NCj4gPiAgICAgICAgICYmICggIChTaWdE YXRhU2l6ZSA+PSAoMzIgKyBzaXplb2YgKG1TaGEyNTZPaWRWYWx1ZSkpKQ0KPiA+DQo+ID4gICAg ICAgICAgICAmJiAoICAoKCooU2lnRGF0YSArIDIwKSAmIFRXT19CWVRFX0VOQ09ERSkgIT0NCj4g PiBUV09fQllURV9FTkNPREUpDQo+ID4NCj4gPiAtICAgICAgICAgICAgIHx8IChDb21wYXJlTWVt IChTaWdEYXRhICsgMzIsICZtU2hhMjU2T2lkVmFsdWUsIHNpemVvZg0KPiA+IChtU2hhMjU2T2lk VmFsdWUpKSAhPSAwKSkpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICB8fCAoQ29tcGFyZU1lbSAo U2lnRGF0YSArIDMyLCAmbVNoYTI1Nk9pZFZhbHVlLCBzaXplb2YNCj4gPiAobVNoYTI1Nk9pZFZh bHVlKSkgIT0gMCkpKQ0KPiA+DQo+ID4gKyAgICAgICAmJiAoICAoU2lnRGF0YVNpemUgPj0gKDEz ICsgc2l6ZW9mIChtU2hhMzg0T2lkVmFsdWUpKSkNCj4gPg0KPiA+ICsgICAgICAgICAgJiYgKCAg KCgqKFNpZ0RhdGEgKyAxKSAmIFRXT19CWVRFX0VOQ09ERSkgIT0NCj4gPiArIFRXT19CWVRFX0VO Q09ERSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgfHwgKENvbXBhcmVNZW0gKFNpZ0RhdGEgKyAx MywgJm1TaGEzODRPaWRWYWx1ZSwgc2l6ZW9mDQo+ID4gKG1TaGEzODRPaWRWYWx1ZSkpICE9IDAp KSkNCj4gPg0KPiA+ICsgICAgICAgJiYgKCAgKFNpZ0RhdGFTaXplID49ICgzMiArIHNpemVvZiAo bVNoYTM4NE9pZFZhbHVlKSkpDQo+ID4NCj4gPiArICAgICAgICAgICYmICggICgoKihTaWdEYXRh ICsgMjApICYgVFdPX0JZVEVfRU5DT0RFKSAhPQ0KPiA+ICsgVFdPX0JZVEVfRU5DT0RFKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICB8fCAoQ29tcGFyZU1lbSAoU2lnRGF0YSArIDMyLCAmbVNoYTM4 NE9pZFZhbHVlLCBzaXplb2YNCj4gPiAobVNoYTM4NE9pZFZhbHVlKSkgIT0gMCkpKQ0KPiA+DQo+ ID4gKyAgICAgICAmJiAoICAoU2lnRGF0YVNpemUgPj0gKDEzICsgc2l6ZW9mIChtU2hhNTEyT2lk VmFsdWUpKSkNCj4gPg0KPiA+ICsgICAgICAgICAgJiYgKCAgKCgqKFNpZ0RhdGEgKyAxKSAmIFRX T19CWVRFX0VOQ09ERSkgIT0NCj4gPiArIFRXT19CWVRFX0VOQ09ERSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgfHwgKENvbXBhcmVNZW0gKFNpZ0RhdGEgKyAxMywgJm1TaGE1MTJPaWRWYWx1ZSwg c2l6ZW9mDQo+ID4gKG1TaGE1MTJPaWRWYWx1ZSkpICE9IDApKSkNCj4gPg0KPiA+ICsgICAgICAg JiYgKCAgKFNpZ0RhdGFTaXplID49ICgzMiArIHNpemVvZiAobVNoYTUxMk9pZFZhbHVlKSkpDQo+ ID4NCj4gPiArICAgICAgICAgICYmICggICgoKihTaWdEYXRhICsgMjApICYgVFdPX0JZVEVfRU5D T0RFKSAhPQ0KPiA+ICsgVFdPX0JZVEVfRU5DT0RFKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICB8 fCAoQ29tcGFyZU1lbSAoU2lnRGF0YSArIDMyLCAmbVNoYTUxMk9pZFZhbHVlLCBzaXplb2YNCj4g PiAobVNoYTUxMk9pZFZhbHVlKSkgIT0gMCkpKSkNCj4gPg0KPiA+ICAgICAgew0KPiA+DQo+ID4g ICAgICAgIHJldHVybiBFRklfU0VDVVJJVFlfVklPTEFUSU9OOw0KPiA+DQo+ID4gICAgICB9DQo+ ID4NCj4gPiBAQCAtMjE4MCw5ICsyMzg3LDM5IEBAIFZlcmlmeVRpbWVCYXNlZFBheWxvYWQgKA0K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkVW5hbGlnbmVkMzIgKChVSU5UMzINCj4g PiAqKSYoQ2VydERhdGFQdHItPkNlcnREYXRhTGVuZ3RoKSksDQo+ID4NCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgVG9wTGV2ZWxDZXJ0LA0KPiA+DQo+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgIFRvcExldmVsQ2VydFNpemUsDQo+ID4NCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgU2hhMjU2RGlnZXN0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgU2hhRGln ZXN0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPg0KPiA+ICsgICAg ICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykgfHwgKENvbXBhcmVNZW0gKFNoYURpZ2VzdCwNCj4g PiArIENlcnRzSW5DZXJ0RGIsDQo+ID4gQ2VydHNTaXplaW5EYikgIT0gMCkpIHsNCj4gPg0KPiA+ ICsgICAgICAgICAgZ290byBFeGl0Ow0KPiA+DQo+ID4gKyAgICAgICAgfQ0KPiA+DQo+ID4gKyAg ICAgIH0gZWxzZSBpZiAoQ2VydHNTaXplaW5EYiA9PSBTSEEzODRfRElHRVNUX1NJWkUpIHsNCj4g Pg0KPiA+ICsgICAgICAgIC8vDQo+ID4NCj4gPiArICAgICAgICAvLyBDaGVjayBoYXNoIG9mIHNp Z25lciBjZXJ0IENvbW1vbk5hbWUgKyBUb3AtbGV2ZWwgaXNzdWVyDQo+ID4gdGJzQ2VydGlmaWNh dGUgYWdhaW5zdCBkYXRhIGluIENlcnREYg0KPiA+DQo+ID4gKyAgICAgICAgLy8NCj4gPg0KPiA+ ICsgICAgICAgIENlcnREYXRhUHRyID0gKEVGSV9DRVJUX0RBVEEgKikoU2lnbmVyQ2VydHMgKyAx KTsNCj4gPg0KPiA+ICsgICAgICAgIFN0YXR1cyAgICAgID0gQ2FsY3VsYXRlUHJpdkF1dGhWYXJT aWduQ2hhaW5TSEEzODREaWdlc3QgKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IENlcnREYXRhUHRyLT5DZXJ0RGF0YUJ1ZmZlciwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICBSZWFkVW5hbGlnbmVkMzIgKChVSU5UMzINCj4gPiArICopJihDZXJ0RGF0YVB0ci0+ Q2VydERhdGFMZW5ndGgpKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBUb3BM ZXZlbENlcnQsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgVG9wTGV2ZWxDZXJ0 U2l6ZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBTaGFEaWdlc3QNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+DQo+ID4gKyAgICAgICAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSB8fCAoQ29tcGFyZU1lbSAoU2hhRGlnZXN0LA0KPiA+ICsgQ2VydHNJ bkNlcnREYiwNCj4gPiBDZXJ0c1NpemVpbkRiKSAhPSAwKSkgew0KPiA+DQo+ID4gKyAgICAgICAg ICBnb3RvIEV4aXQ7DQo+ID4NCj4gPiArICAgICAgICB9DQo+ID4NCj4gPiArICAgICAgfSBlbHNl IGlmIChDZXJ0c1NpemVpbkRiID09IFNIQTUxMl9ESUdFU1RfU0laRSkgew0KPiA+DQo+ID4gKyAg ICAgICAgLy8NCj4gPg0KPiA+ICsgICAgICAgIC8vIENoZWNrIGhhc2ggb2Ygc2lnbmVyIGNlcnQg Q29tbW9uTmFtZSArIFRvcC1sZXZlbCBpc3N1ZXINCj4gPiB0YnNDZXJ0aWZpY2F0ZSBhZ2FpbnN0 IGRhdGEgaW4gQ2VydERiDQo+ID4NCj4gPiArICAgICAgICAvLw0KPiA+DQo+ID4gKyAgICAgICAg Q2VydERhdGFQdHIgPSAoRUZJX0NFUlRfREFUQSAqKShTaWduZXJDZXJ0cyArIDEpOw0KPiA+DQo+ ID4gKyAgICAgICAgU3RhdHVzICAgICAgPSBDYWxjdWxhdGVQcml2QXV0aFZhclNpZ25DaGFpblNI QTUxMkRpZ2VzdCAoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgQ2VydERhdGFQ dHItPkNlcnREYXRhQnVmZmVyLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFJl YWRVbmFsaWduZWQzMiAoKFVJTlQzMg0KPiA+ICsgKikmKENlcnREYXRhUHRyLT5DZXJ0RGF0YUxl bmd0aCkpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFRvcExldmVsQ2VydCwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBUb3BMZXZlbENlcnRTaXplLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFNoYURpZ2VzdA0KPiA+DQo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICk7DQo+ID4NCj4gPiAtICAgICAgICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpIHx8IChDb21wYXJlTWVtIChTaGEyNTZEaWdlc3QsDQo+IENlcnRzSW5DZXJ0RGIsDQo+ ID4gQ2VydHNTaXplaW5EYikgIT0gMCkpIHsNCj4gPg0KPiA+ICsgICAgICAgIGlmIChFRklfRVJS T1IgKFN0YXR1cykgfHwgKENvbXBhcmVNZW0gKFNoYURpZ2VzdCwNCj4gPiArIENlcnRzSW5DZXJ0 RGIsDQo+ID4gQ2VydHNTaXplaW5EYikgIT0gMCkpIHsNCj4gPg0KPiA+ICAgICAgICAgICAgZ290 byBFeGl0Ow0KPiA+DQo+ID4gICAgICAgICAgfQ0KPiA+DQo+ID4gICAgICAgIH0gZWxzZSB7DQo+ ID4NCj4gPiBAQCAtMjIyMSw3ICsyNDU4LDggQEAgVmVyaWZ5VGltZUJhc2VkUGF5bG9hZCAoDQo+ ID4gICAgICAgICAgICAgICAgICAgICAgICBDZXJ0RGF0YVB0ci0+Q2VydERhdGFCdWZmZXIsDQo+ ID4NCj4gPiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRVbmFsaWduZWQzMiAoKFVJTlQzMg0K PiA+ICopJihDZXJ0RGF0YVB0ci0+Q2VydERhdGFMZW5ndGgpKSwNCj4gPg0KPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgVG9wTGV2ZWxDZXJ0LA0KPiA+DQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICBUb3BMZXZlbENlcnRTaXplDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIFRv cExldmVsQ2VydFNpemUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIENlcnRzU2l6 ZWluRGINCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPg0KPiA+ICAgICAg ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4NCj4gPiAgICAgICAgICBWZXJpZnlTdGF0 dXMgPSBGQUxTRTsNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9TZWN1cml0eVBrZy9MaWJyYXJ5L0F1 dGhWYXJpYWJsZUxpYi9BdXRoVmFyaWFibGVMaWIuYw0KPiA+IGIvU2VjdXJpdHlQa2cvTGlicmFy eS9BdXRoVmFyaWFibGVMaWIvQXV0aFZhcmlhYmxlTGliLmMNCj4gPiBpbmRleCBkYzYxYWU4NDBj Li41NTJjMGU5OWJlIDEwMDY0NA0KPiA+IC0tLSBhL1NlY3VyaXR5UGtnL0xpYnJhcnkvQXV0aFZh cmlhYmxlTGliL0F1dGhWYXJpYWJsZUxpYi5jDQo+ID4gKysrIGIvU2VjdXJpdHlQa2cvTGlicmFy eS9BdXRoVmFyaWFibGVMaWIvQXV0aFZhcmlhYmxlTGliLmMNCj4gPiBAQCAtMjYsNyArMjYsNyBA QCBVSU5UMzIgIG1NYXhDZXJ0RGJTaXplOw0KPiA+ICBVSU5UMzIgIG1QbGF0Zm9ybU1vZGU7DQo+ ID4NCj4gPiAgVUlOVDggICBtVmVuZG9yS2V5U3RhdGU7DQo+ID4NCj4gPg0KPiA+DQo+ID4gLUVG SV9HVUlEICBtU2lnbmF0dXJlU3VwcG9ydFtdID0geyBFRklfQ0VSVF9TSEExX0dVSUQsDQo+ID4g RUZJX0NFUlRfU0hBMjU2X0dVSUQsIEVGSV9DRVJUX1JTQTIwNDhfR1VJRCwNCj4gRUZJX0NFUlRf WDUwOV9HVUlEIH07DQo+ID4NCj4gPiArRUZJX0dVSUQgIG1TaWduYXR1cmVTdXBwb3J0W10gPSB7 IEVGSV9DRVJUX1NIQTFfR1VJRCwNCj4gPiBFRklfQ0VSVF9TSEEyNTZfR1VJRCwgRUZJX0NFUlRf U0hBMzg0X0dVSUQsDQo+IEVGSV9DRVJUX1NIQTUxMl9HVUlELA0KPiA+IEVGSV9DRVJUX1JTQTIw NDhfR1VJRCwgRUZJX0NFUlRfUlNBMzA3Ml9HVUlELA0KPiBFRklfQ0VSVF9SU0E0MDk2X0dVSUQs DQo+ID4gRUZJX0NFUlRfWDUwOV9HVUlEIH07DQo+ID4NCj4gPg0KPiA+DQo+ID4gIC8vDQo+ID4N Cj4gPiAgLy8gSGFzaCBjb250ZXh0IHBvaW50ZXINCj4gPg0KPiA+IEBAIC0xMzUsNyArMTM1LDcg QEAgQXV0aFZhcmlhYmxlTGliSW5pdGlhbGl6ZSAoDQo+ID4gICAgLy8NCj4gPg0KPiA+ICAgIC8v IEluaXRpYWxpemUgaGFzaCBjb250ZXh0Lg0KPiA+DQo+ID4gICAgLy8NCj4gPg0KPiA+IC0gIEN0 eFNpemUgID0gU2hhMjU2R2V0Q29udGV4dFNpemUgKCk7DQo+ID4NCj4gPiArICBDdHhTaXplICA9 IFNoYTUxMkdldENvbnRleHRTaXplICgpOw0KPiA+DQo+ID4gICAgbUhhc2hDdHggPSBBbGxvY2F0 ZVJ1bnRpbWVQb29sIChDdHhTaXplKTsNCj4gPg0KPiA+ICAgIGlmIChtSGFzaEN0eCA9PSBOVUxM KSB7DQo+ID4NCj4gPiAgICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPg0KPiA+ IGRpZmYgLS1naXQNCj4gPiBhL1NlY3VyaXR5UGtnL0xpYnJhcnkvRHhlSW1hZ2VWZXJpZmljYXRp b25MaWIvRHhlSW1hZ2VWZXJpZmljYXRpb25MaWIuDQo+ID4gYw0KPiA+IGIvU2VjdXJpdHlQa2cv TGlicmFyeS9EeGVJbWFnZVZlcmlmaWNhdGlvbkxpYi9EeGVJbWFnZVZlcmlmaWNhdGlvbkxpYi4N Cj4gPiBjDQo+ID4gaW5kZXggNjZlMmY1ZWFhMy4uZjY0MmFhZDY0ZCAxMDA2NDQNCj4gPiAtLS0N Cj4gPiBhL1NlY3VyaXR5UGtnL0xpYnJhcnkvRHhlSW1hZ2VWZXJpZmljYXRpb25MaWIvRHhlSW1h Z2VWZXJpZmljYXRpb25MaWIuDQo+ID4gYw0KPiA+ICsrKyBiL1NlY3VyaXR5UGtnL0xpYnJhcnkv RHhlSW1hZ2VWZXJpZmljYXRpb25MaWIvRHhlSW1hZ2VWZXJpZmljYXRpb24NCj4gPiArKysgTGli LmMNCj4gPiBAQCAtMTYwNiw2ICsxNjA2LDM1IEBAIERvbmU6DQo+ID4gICAgcmV0dXJuIFZlcmlm eVN0YXR1czsNCj4gPg0KPiA+ICB9DQo+ID4NCj4gPg0KPiA+DQo+ID4gKy8qKg0KPiA+DQo+ID4g KyAgR2V0IEhhc2ggQWxnIGJ5IFBjZFNlY3VyZUJvb3REZWZhdWx0SGFzaEFsZw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgQHJldHZhbCAgVUlOVDMyICAgICAgIEhhc2ggQWxnDQo+ID4NCj4gPiAr ICAqKi8NCj4gPg0KPiA+ICtVSU5UMzINCj4gPg0KPiA+ICtHZXREZWZhdWx0SGFzaEFsZyAoDQo+ ID4NCj4gPiArICBWT0lEDQo+ID4NCj4gPiArICApDQo+ID4NCj4gPiArew0KPiA+DQo+ID4gKyAg VUlOVDMyICBIYXNoQWxnOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgc3dpdGNoIChQY2RHZXQ4 IChQY2RTZWN1cmVCb290RGVmYXVsdEhhc2hBbGcpKSB7DQo+ID4NCj4gPiArICBjYXNlIDE6DQo+ ID4NCj4gPiArICAgIERFQlVHICgoREVCVUdfSU5GTywgIiVhIHVzZSBTSEEzODQiLCBfX2Z1bmNf XykpOw0KPiA+DQo+ID4gKyAgICBIYXNoQWxnID0gSEFTSEFMR19TSEEzODQ7DQo+ID4NCj4gPiAr ICAgIGJyZWFrOw0KPiA+DQo+ID4gKyAgY2FzZSAyOg0KPiA+DQo+ID4gKyAgICBERUJVRyAoKERF QlVHX0lORk8sICIlYSB1c2UgU0hBNTEyIiwgX19mdW5jX18pKTsNCj4gPg0KPiA+ICsgICAgSGFz aEFsZyA9IEhBU0hBTEdfU0hBNTEyOw0KPiA+DQo+ID4gKyAgICBicmVhazsNCj4gPg0KPiA+ICsg IGRlZmF1bHQ6DQo+ID4NCj4gPiArICAgIERFQlVHICgoREVCVUdfSU5GTywgIiVhIHVzZSBTSEEy NTYiLCBfX2Z1bmNfXykpOw0KPiA+DQo+ID4gKyAgICBIYXNoQWxnID0gSEFTSEFMR19TSEEyNTY7 DQo+ID4NCj4gPiArICAgIGJyZWFrOw0KPiA+DQo+ID4gKyAgfQ0KPiA+DQo+ID4gKyAgcmV0dXJu IEhhc2hBbGc7DQo+ID4NCj4gPiArfQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gIC8qKg0KPiA+DQo+ ID4gICAgUHJvdmlkZSB2ZXJpZmljYXRpb24gc2VydmljZSBmb3Igc2lnbmVkIGltYWdlcywgd2hp Y2ggaW5jbHVkZSBib3RoDQo+ID4gc2lnbmF0dXJlIHZhbGlkYXRpb24NCj4gPg0KPiA+ICAgIGFu ZCBwbGF0Zm9ybSBwb2xpY3kgY29udHJvbC4gRm9yIHNpZ25hdHVyZSB0eXBlcywgYm90aCBVRUZJ DQo+ID4gV0lOX0NFUlRJRklDQVRFX1VFRklfR1VJRCBhbmQNCj4gPg0KPiA+IEBAIC0xNjIwLDcg KzE2NDksNyBAQCBEb25lOg0KPiA+ICAgICAgICBpbiB0aGUgc2VjdXJpdHkgZGF0YWJhc2UgImRi IiwgYW5kIG5vIHZhbGlkIHNpZ25hdHVyZSBub3IgYW55DQo+ID4gaGFzaCB2YWx1ZSBvZiB0aGUg aW1hZ2UgbWF5DQo+ID4NCj4gPiAgICAgICAgYmUgcmVmbGVjdGVkIGluIHRoZSBzZWN1cml0eSBk YXRhYmFzZSAiZGJ4Ii4NCj4gPg0KPiA+ICAgICAgT3RoZXJ3aXNlLCB0aGUgaW1hZ2UgaXMgbm90 IHNpZ25lZCwNCj4gPg0KPiA+IC0gICAgICBUaGUgU0hBMjU2IGhhc2ggdmFsdWUgb2YgdGhlIGlt YWdlIG11c3QgbWF0Y2ggYSByZWNvcmQgaW4gdGhlDQo+IHNlY3VyaXR5DQo+ID4gZGF0YWJhc2Ug ImRiIiwgYW5kDQo+ID4NCj4gPiArICAgICAgVGhlIGhhc2ggdmFsdWUgb2YgdGhlIGltYWdlIG11 c3QgbWF0Y2ggYSByZWNvcmQgaW4gdGhlIHNlY3VyaXR5DQo+ID4gKyBkYXRhYmFzZQ0KPiA+ICJk YiIsIGFuZA0KPiA+DQo+ID4gICAgICAgIG5vdCBiZSByZWZsZWN0ZWQgaW4gdGhlIHNlY3VyaXR5 IGRhdGEgYmFzZSAiZGJ4Ii4NCj4gPg0KPiA+DQo+ID4NCj4gPiAgICBDYXV0aW9uOiBUaGlzIGZ1 bmN0aW9uIG1heSByZWNlaXZlIHVudHJ1c3RlZCBpbnB1dC4NCj4gPg0KPiA+IEBAIC0xODMyLDEw ICsxODYxLDEwIEBAIER4ZUltYWdlVmVyaWZpY2F0aW9uSGFuZGxlciAoDQo+ID4gICAgLy8NCj4g Pg0KPiA+ICAgIGlmICgoU2VjRGF0YURpciA9PSBOVUxMKSB8fCAoU2VjRGF0YURpci0+U2l6ZSA9 PSAwKSkgew0KPiA+DQo+ID4gICAgICAvLw0KPiA+DQo+ID4gLSAgICAvLyBUaGlzIGltYWdlIGlz IG5vdCBzaWduZWQuIFRoZSBTSEEyNTYgaGFzaCB2YWx1ZSBvZiB0aGUgaW1hZ2UgbXVzdA0KPiBt YXRjaA0KPiA+IGEgcmVjb3JkIGluIHRoZSBzZWN1cml0eSBkYXRhYmFzZSAiZGIiLA0KPiA+DQo+ ID4gKyAgICAvLyBUaGlzIGltYWdlIGlzIG5vdCBzaWduZWQuIFRoZSBoYXNoIHZhbHVlIG9mIHRo ZSBpbWFnZSBtdXN0DQo+ID4gKyBtYXRjaCBhIHJlY29yZA0KPiA+IGluIHRoZSBzZWN1cml0eSBk YXRhYmFzZSAiZGIiLA0KPiA+DQo+ID4gICAgICAvLyBhbmQgbm90IGJlIHJlZmxlY3RlZCBpbiB0 aGUgc2VjdXJpdHkgZGF0YSBiYXNlICJkYngiLg0KPiA+DQo+ID4gICAgICAvLw0KPiA+DQo+ID4g LSAgICBpZiAoIUhhc2hQZUltYWdlIChIQVNIQUxHX1NIQTI1NikpIHsNCj4gPg0KPiA+ICsgICAg aWYgKCFIYXNoUGVJbWFnZSAoR2V0RGVmYXVsdEhhc2hBbGcgKCkpKSB7DQo+ID4NCj4gPiAgICAg ICAgREVCVUcgKChERUJVR19JTkZPLCAiRHhlSW1hZ2VWZXJpZmljYXRpb25MaWI6IEZhaWxlZCB0 byBoYXNoDQo+ID4gdGhpcyBpbWFnZSB1c2luZyAlcy5cbiIsIG1IYXNoVHlwZVN0cikpOw0KPiA+ DQo+ID4gICAgICAgIGdvdG8gRmFpbGVkOw0KPiA+DQo+ID4gICAgICB9DQo+ID4NCj4gPiBkaWZm IC0tZ2l0DQo+ID4gYS9TZWN1cml0eVBrZy9MaWJyYXJ5L0R4ZUltYWdlVmVyaWZpY2F0aW9uTGli L0R4ZUltYWdlVmVyaWZpY2F0aW9uTGliLg0KPiA+IGluZg0KPiA+IGIvU2VjdXJpdHlQa2cvTGli cmFyeS9EeGVJbWFnZVZlcmlmaWNhdGlvbkxpYi9EeGVJbWFnZVZlcmlmaWNhdGlvbkxpYi4NCj4g PiBpbmYNCj4gPiBpbmRleCAxZTFhNjM5ODU3Li5mMWVmOTIzNmMyIDEwMDY0NA0KPiA+IC0tLQ0K PiA+IGEvU2VjdXJpdHlQa2cvTGlicmFyeS9EeGVJbWFnZVZlcmlmaWNhdGlvbkxpYi9EeGVJbWFn ZVZlcmlmaWNhdGlvbkxpYi4NCj4gPiBpbmYNCj4gPiArKysgYi9TZWN1cml0eVBrZy9MaWJyYXJ5 L0R4ZUltYWdlVmVyaWZpY2F0aW9uTGliL0R4ZUltYWdlVmVyaWZpY2F0aW9uDQo+ID4gKysrIExp Yi5pbmYNCj4gPiBAQCAtOTMsMyArOTMsNCBAQA0KPiA+ICAgIGdFZmlTZWN1cml0eVBrZ1Rva2Vu U3BhY2VHdWlkLlBjZE9wdGlvblJvbUltYWdlVmVyaWZpY2F0aW9uUG9saWN5DQo+ID4gIyMgU09N RVRJTUVTX0NPTlNVTUVTDQo+ID4NCj4gPg0KPiA+DQo+IGdFZmlTZWN1cml0eVBrZ1Rva2VuU3Bh Y2VHdWlkLlBjZFJlbW92YWJsZU1lZGlhSW1hZ2VWZXJpZmljYXRpb25Qb2xpYw0KPiB5DQo+ID4g IyMgU09NRVRJTUVTX0NPTlNVTUVTDQo+ID4NCj4gPiAgICBnRWZpU2VjdXJpdHlQa2dUb2tlblNw YWNlR3VpZC5QY2RGaXhlZE1lZGlhSW1hZ2VWZXJpZmljYXRpb25Qb2xpY3kNCj4gIyMNCj4gPiBT T01FVElNRVNfQ09OU1VNRVMNCj4gPg0KPiA+ICsgIGdFZmlTZWN1cml0eVBrZ1Rva2VuU3BhY2VH dWlkLlBjZFNlY3VyZUJvb3REZWZhdWx0SGFzaEFsZw0KPiAjIw0KPiA+IENPTlNVTUVTDQo+ID4N Cj4gPiBkaWZmIC0tZ2l0IGEvU2VjdXJpdHlQa2cvU2VjdXJpdHlQa2cuZGVjIGIvU2VjdXJpdHlQ a2cvU2VjdXJpdHlQa2cuZGVjDQo+ID4gaW5kZXggMDM4MjA5MGY0ZS4uNGFkYzJhNzJhYiAxMDA2 NDQNCj4gPiAtLS0gYS9TZWN1cml0eVBrZy9TZWN1cml0eVBrZy5kZWMNCj4gPiArKysgYi9TZWN1 cml0eVBrZy9TZWN1cml0eVBrZy5kZWMNCj4gPiBAQCAtNTIxLDYgKzUyMSwxMyBAQA0KPiA+ICAg ICMgQFByb21wdCBTa2lwIEhkZCBQYXNzd29yZCBwcm9tcHQuDQo+ID4NCj4gPg0KPiA+DQo+IGdF ZmlTZWN1cml0eVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNraXBIZGRQYXNzd29yZFByb21wdHxGQUxT RXxCT09MRQ0KPiBBTnwNCj4gPiAweDAwMDEwMDIxDQo+ID4NCj4gPg0KPiA+DQo+ID4gKyAgIyMg SW5kaWNhdGVzIGRlZmF1bHQgaGFzaCBhbGdvcml0aG0gaW4gU2VjdXJlIEJvb3QNCj4gPg0KPiA+ ICsgICMgICAwIC0gVXNlIFNIQTI1Ng0KPiA+DQo+ID4gKyAgIyAgIDEgLSBVc2UgU0hBMzg0DQo+ ID4NCj4gPiArICAjICAgMiAtIFVzZSBTSEE1MTINCj4gPg0KPiA+ICsgICMgQFByb21wdCBTZWN1 cmUgQm9vdCBkZWZhdWx0IGhhc2ggYWxnb3JpdGhtDQo+ID4NCj4gPiArDQo+ID4NCj4gZ0VmaVNl Y3VyaXR5UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2VjdXJlQm9vdERlZmF1bHRIYXNoQWxnfDB8VUlO VDh8MHgNCj4gMDANCj4gPiAwDQo+ID4gMTAwNDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICBbUGNk c0R5bmFtaWMsIFBjZHNEeW5hbWljRXhdDQo+ID4NCj4gPg0KPiA+DQo+ID4gICAgIyMgVGhpcyBQ Q0QgaW5kaWNhdGVzIEhhc2ggbWFzayBmb3IgVFBNIDIuMC4gQml0IGRlZmluaXRpb24NCj4gPiBz dHJpY3RseSBmb2xsb3dzIFRDRyBBbGdvcml0aG0gUmVnaXN0cnkuPEJSPjxCUj4NCj4gPg0KPiA+ IGRpZmYgLS1naXQNCj4gPg0KPiBhL1NlY3VyaXR5UGtnL1ZhcmlhYmxlQXV0aGVudGljYXRlZC9T ZWN1cmVCb290Q29uZmlnRHhlL1NlY3VyZUJvb3RDb24NCj4gZg0KPiA+IGlnDQo+ID4gRHhlLmlu Zg0KPiA+DQo+IGIvU2VjdXJpdHlQa2cvVmFyaWFibGVBdXRoZW50aWNhdGVkL1NlY3VyZUJvb3RD b25maWdEeGUvU2VjdXJlQm9vdENvbg0KPiBmDQo+ID4gaWcNCj4gPiBEeGUuaW5mDQo+ID4gaW5k ZXggMTY3MWQ1YmU3Yy4uNGIwMDEyZDAzMyAxMDA2NDQNCj4gPiAtLS0NCj4gPg0KPiBhL1NlY3Vy aXR5UGtnL1ZhcmlhYmxlQXV0aGVudGljYXRlZC9TZWN1cmVCb290Q29uZmlnRHhlL1NlY3VyZUJv b3RDb24NCj4gZg0KPiA+IGlnDQo+ID4gRHhlLmluZg0KPiA+ICsrKw0KPiA+DQo+IGIvU2VjdXJp dHlQa2cvVmFyaWFibGVBdXRoZW50aWNhdGVkL1NlY3VyZUJvb3RDb25maWdEeGUvU2VjdXJlQm9v dENvbg0KPiBmDQo+ID4gaWcNCj4gPiBEeGUuaW5mDQo+ID4gQEAgLTcwLDYgKzcwLDE0IEBADQo+ ID4gICAgIyMgU09NRVRJTUVTX1BST0RVQ0VTICAgICAgIyMgR1VJRCAgICAgICAgICAgICMgVW5p cXVlIElEIGZvciB0aGUgdHlwZSBvZg0KPiB0aGUNCj4gPiBzaWduYXR1cmUuDQo+ID4NCj4gPiAg ICBnRWZpQ2VydFJzYTIwNDhHdWlkDQo+ID4NCj4gPg0KPiA+DQo+ID4gKyAgIyMgU09NRVRJTUVT X0NPTlNVTUVTICAgICAgIyMgR1VJRCAgICAgICAgICAgICMgVW5pcXVlIElEIGZvciB0aGUgdHlw ZSBvZg0KPiB0aGUNCj4gPiBzaWduYXR1cmUuDQo+ID4NCj4gPiArICAjIyBTT01FVElNRVNfUFJP RFVDRVMgICAgICAjIyBHVUlEICAgICAgICAgICAgIyBVbmlxdWUgSUQgZm9yIHRoZSB0eXBlIG9m DQo+IHRoZQ0KPiA+IHNpZ25hdHVyZS4NCj4gPg0KPiA+ICsgIGdFZmlDZXJ0UnNhMzA3Mkd1aWQN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICMjIFNPTUVUSU1FU19DT05TVU1FUyAgICAgICMjIEdV SUQgICAgICAgICAgICAjIFVuaXF1ZSBJRCBmb3IgdGhlIHR5cGUgb2YNCj4gdGhlDQo+ID4gc2ln bmF0dXJlLg0KPiA+DQo+ID4gKyAgIyMgU09NRVRJTUVTX1BST0RVQ0VTICAgICAgIyMgR1VJRCAg ICAgICAgICAgICMgVW5pcXVlIElEIGZvciB0aGUgdHlwZSBvZg0KPiB0aGUNCj4gPiBzaWduYXR1 cmUuDQo+ID4NCj4gPiArICBnRWZpQ2VydFJzYTQwOTZHdWlkDQo+ID4NCj4gPiArDQo+ID4NCj4g PiAgICAjIyBTT01FVElNRVNfQ09OU1VNRVMgICAgICAjIyBHVUlEICAgICAgICAgICAgIyBVbmlx dWUgSUQgZm9yIHRoZSB0eXBlIG9mDQo+IHRoZQ0KPiA+IHNpZ25hdHVyZS4NCj4gPg0KPiA+ICAg ICMjIFNPTUVUSU1FU19QUk9EVUNFUyAgICAgICMjIEdVSUQgICAgICAgICAgICAjIFVuaXF1ZSBJ RCBmb3IgdGhlIHR5cGUgb2YNCj4gdGhlDQo+ID4gc2lnbmF0dXJlLg0KPiA+DQo+ID4gICAgZ0Vm aUNlcnRYNTA5R3VpZA0KPiA+DQo+ID4gQEAgLTgyLDYgKzkwLDE0IEBADQo+ID4gICAgIyMgU09N RVRJTUVTX1BST0RVQ0VTICAgICAgIyMgR1VJRCAgICAgICAgICAgICMgVW5pcXVlIElEIGZvciB0 aGUgdHlwZSBvZg0KPiB0aGUNCj4gPiBzaWduYXR1cmUuDQo+ID4NCj4gPiAgICBnRWZpQ2VydFNo YTI1Nkd1aWQNCj4gPg0KPiA+DQo+ID4NCj4gPiArICAjIyBTT01FVElNRVNfQ09OU1VNRVMgICAg ICAjIyBHVUlEICAgICAgICAgICAgIyBVbmlxdWUgSUQgZm9yIHRoZSB0eXBlIG9mDQo+IHRoZQ0K PiA+IHNpZ25hdHVyZS4NCj4gPg0KPiA+ICsgICMjIFNPTUVUSU1FU19QUk9EVUNFUyAgICAgICMj IEdVSUQgICAgICAgICAgICAjIFVuaXF1ZSBJRCBmb3IgdGhlIHR5cGUgb2YNCj4gdGhlDQo+ID4g c2lnbmF0dXJlLg0KPiA+DQo+ID4gKyAgZ0VmaUNlcnRTaGEzODRHdWlkDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAjIyBTT01FVElNRVNfQ09OU1VNRVMgICAgICAjIyBHVUlEICAgICAgICAgICAg IyBVbmlxdWUgSUQgZm9yIHRoZSB0eXBlIG9mDQo+IHRoZQ0KPiA+IHNpZ25hdHVyZS4NCj4gPg0K PiA+ICsgICMjIFNPTUVUSU1FU19QUk9EVUNFUyAgICAgICMjIEdVSUQgICAgICAgICAgICAjIFVu aXF1ZSBJRCBmb3IgdGhlIHR5cGUgb2YNCj4gdGhlDQo+ID4gc2lnbmF0dXJlLg0KPiA+DQo+ID4g KyAgZ0VmaUNlcnRTaGE1MTJHdWlkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAgICAjIyBTT01FVElN RVNfQ09OU1VNRVMgICAgICAjIyBWYXJpYWJsZTpMImRiIg0KPiA+DQo+ID4gICAgIyMgU09NRVRJ TUVTX1BST0RVQ0VTICAgICAgIyMgVmFyaWFibGU6TCJkYiINCj4gPg0KPiA+ICAgICMjIFNPTUVU SU1FU19DT05TVU1FUyAgICAgICMjIFZhcmlhYmxlOkwiZGJ4Ig0KPiA+DQo+ID4gQEAgLTEwNyw2 ICsxMjMsOSBAQA0KPiA+ICAgIGdFZmlDZXJ0WDUwOVNoYTM4NEd1aWQgICAgICAgICAgICAgICAg ICAgICAgICAjIyBTT01FVElNRVNfUFJPRFVDRVMgICMjIEdVSUQNCj4gIw0KPiA+IFVuaXF1ZSBJ RCBmb3IgdGhlIHR5cGUgb2YgdGhlIGNlcnRpZmljYXRlLg0KPiA+DQo+ID4gICAgZ0VmaUNlcnRY NTA5U2hhNTEyR3VpZCAgICAgICAgICAgICAgICAgICAgICAgICMjIFNPTUVUSU1FU19QUk9EVUNF UyAgIyMgR1VJRA0KPiAjDQo+ID4gVW5pcXVlIElEIGZvciB0aGUgdHlwZSBvZiB0aGUgY2VydGlm aWNhdGUuDQo+ID4NCj4gPg0KPiA+DQo+ID4gK1tQY2RdDQo+ID4NCj4gPiArICBnRWZpU2VjdXJp dHlQa2dUb2tlblNwYWNlR3VpZC5QY2RTZWN1cmVCb290RGVmYXVsdEhhc2hBbGcNCj4gIyMNCj4g PiBDT05TVU1FUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gIFtQcm90b2NvbHNdDQo+ID4NCj4gPiAg ICBnRWZpSGlpQ29uZmlnQWNjZXNzUHJvdG9jb2xHdWlkICAgICAgICAgICAgICAgIyMgUFJPRFVD RVMNCj4gPg0KPiA+ICAgIGdFZmlEZXZpY2VQYXRoUHJvdG9jb2xHdWlkICAgICAgICAgICAgICAg ICAgICAjIyBQUk9EVUNFUw0KPiA+DQo+ID4gZGlmZiAtLWdpdA0KPiA+DQo+IGEvU2VjdXJpdHlQ a2cvVmFyaWFibGVBdXRoZW50aWNhdGVkL1NlY3VyZUJvb3RDb25maWdEeGUvU2VjdXJlQm9vdENv bg0KPiBmDQo+ID4gaWdJDQo+ID4gbXBsLmMNCj4gPg0KPiBiL1NlY3VyaXR5UGtnL1ZhcmlhYmxl QXV0aGVudGljYXRlZC9TZWN1cmVCb290Q29uZmlnRHhlL1NlY3VyZUJvb3RDb24NCj4gZg0KPiA+ IGlnSQ0KPiA+IG1wbC5jDQo+ID4gaW5kZXggNDI5OWE2YjVlNS4uMGJhMDI5YTM5NCAxMDA2NDQN Cj4gPiAtLS0NCj4gPg0KPiBhL1NlY3VyaXR5UGtnL1ZhcmlhYmxlQXV0aGVudGljYXRlZC9TZWN1 cmVCb290Q29uZmlnRHhlL1NlY3VyZUJvb3RDb24NCj4gZg0KPiA+IGlnSQ0KPiA+IG1wbC5jDQo+ ID4gKysrDQo+ID4NCj4gYi9TZWN1cml0eVBrZy9WYXJpYWJsZUF1dGhlbnRpY2F0ZWQvU2VjdXJl Qm9vdENvbmZpZ0R4ZS9TZWN1cmVCb290Q29uDQo+IGYNCj4gPiBpZ0kNCj4gPiBtcGwuYw0KPiA+ IEBAIC01NjAsNyArNTYwLDcgQEAgT05fRVhJVDoNCj4gPg0KPiA+DQo+ID4gICoqLw0KPiA+DQo+ ID4gIEVGSV9TVEFUVVMNCj4gPg0KPiA+IC1FbnJvbGxSc2EyMDQ4VG9LZWsgKA0KPiA+DQo+ID4g K0Vucm9sbFJzYVRvS2VrICgNCj4gPg0KPiA+ICAgIElOIFNFQ1VSRUJPT1RfQ09ORklHX1BSSVZB VEVfREFUQSAgKlByaXZhdGUNCj4gPg0KPiA+ICAgICkNCj4gPg0KPiA+ICB7DQo+ID4NCj4gPiBA QCAtNjAzLDggKzYwMywxMyBAQCBFbnJvbGxSc2EyMDQ4VG9LZWsgKA0KPiA+DQo+ID4NCj4gPiAg ICBBU1NFUlQgKEtleUJsb2IgIT0gTlVMTCk7DQo+ID4NCj4gPiAgICBLZXlJbmZvID0gKENQTF9L RVlfSU5GTyAqKUtleUJsb2I7DQo+ID4NCj4gPiAtICBpZiAoS2V5SW5mby0+S2V5TGVuZ3RoSW5C aXRzIC8gOCAhPSBXSU5fQ0VSVF9VRUZJX1JTQTIwNDhfU0laRSkgew0KPiA+DQo+ID4gLSAgICBE RUJVRyAoKERFQlVHX0VSUk9SLCAiVW5zdXBwb3J0ZWQga2V5IGxlbmd0aCwgT25seSBSU0EyMDQ4 IGlzDQo+ID4gc3VwcG9ydGVkLlxuIikpOw0KPiA+DQo+ID4gKyAgc3dpdGNoIChLZXlJbmZvLT5L ZXlMZW5ndGhJbkJpdHMgLyA4KSB7DQo+ID4NCj4gPiArICBjYXNlIFdJTl9DRVJUX1VFRklfUlNB MjA0OF9TSVpFOg0KPiA+DQo+ID4gKyAgY2FzZSBXSU5fQ0VSVF9VRUZJX1JTQTMwNzJfU0laRToN Cj4gPg0KPiA+ICsgIGNhc2UgV0lOX0NFUlRfVUVGSV9SU0E0MDk2X1NJWkU6DQo+ID4NCj4gPiAr ICAgIGJyZWFrOw0KPiA+DQo+ID4gKyAgZGVmYXVsdCA6DQo+ID4NCj4gPiArICAgIERFQlVHICgo REVCVUdfRVJST1IsICJVbnN1cHBvcnRlZCBrZXkgbGVuZ3RoLCBPbmx5IFJTQTIwNDgsDQo+ID4g KyBSU0EzMDcyDQo+ID4gYW5kIFJTQTQwOTYgYXJlIHN1cHBvcnRlZC5cbiIpKTsNCj4gPg0KPiA+ ICAgICAgU3RhdHVzID0gRUZJX1VOU1VQUE9SVEVEOw0KPiA+DQo+ID4gICAgICBnb3RvIE9OX0VY SVQ7DQo+ID4NCj4gPiAgICB9DQo+ID4NCj4gPiBAQCAtNjMyLDcgKzYzNyw3IEBAIEVucm9sbFJz YTIwNDhUb0tlayAoDQo+ID4gICAgLy8NCj4gPg0KPiA+ICAgIEtla1NpZ0xpc3RTaXplID0gc2l6 ZW9mIChFRklfU0lHTkFUVVJFX0xJU1QpDQo+ID4NCj4gPiAgICAgICAgICAgICAgICAgICAgICsg c2l6ZW9mIChFRklfU0lHTkFUVVJFX0RBVEEpIC0gMQ0KPiA+DQo+ID4gLSAgICAgICAgICAgICAg ICAgICArIFdJTl9DRVJUX1VFRklfUlNBMjA0OF9TSVpFOw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICArIEtleUxlbkluQnl0ZXM7DQo+ID4NCj4gPg0KPiA+DQo+ID4gICAgS2VrU2lnTGlz dCA9IChFRklfU0lHTkFUVVJFX0xJU1QgKilBbGxvY2F0ZVplcm9Qb29sDQo+ID4gKEtla1NpZ0xp c3RTaXplKTsNCj4gPg0KPiA+ICAgIGlmIChLZWtTaWdMaXN0ID09IE5VTEwpIHsNCj4gPg0KPiA+ IEBAIC02NDIsMTcgKzY0NywzMiBAQCBFbnJvbGxSc2EyMDQ4VG9LZWsgKA0KPiA+DQo+ID4NCj4g PiAgICBLZWtTaWdMaXN0LT5TaWduYXR1cmVMaXN0U2l6ZSA9IHNpemVvZiAoRUZJX1NJR05BVFVS RV9MSVNUKQ0KPiA+DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNp emVvZiAoRUZJX1NJR05BVFVSRV9EQVRBKSAtIDENCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKyBXSU5fQ0VSVF9VRUZJX1JTQTIwNDhfU0laRTsNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoVUlOVDMyKSBLZXlMZW5JbkJ5 dGVzOw0KPiA+DQo+ID4gICAgS2VrU2lnTGlzdC0+U2lnbmF0dXJlSGVhZGVyU2l6ZSA9IDA7DQo+ ID4NCj4gPiAtICBLZWtTaWdMaXN0LT5TaWduYXR1cmVTaXplICAgICAgID0gc2l6ZW9mIChFRklf U0lHTkFUVVJFX0RBVEEpIC0gMSArDQo+ID4gV0lOX0NFUlRfVUVGSV9SU0EyMDQ4X1NJWkU7DQo+ ID4NCj4gPiAtICBDb3B5R3VpZCAoJktla1NpZ0xpc3QtPlNpZ25hdHVyZVR5cGUsICZnRWZpQ2Vy dFJzYTIwNDhHdWlkKTsNCj4gPg0KPiA+ICsgIEtla1NpZ0xpc3QtPlNpZ25hdHVyZVNpemUgICAg ICAgPSBzaXplb2YgKEVGSV9TSUdOQVRVUkVfREFUQSkgLSAxICsNCj4gKFVJTlQzMikNCj4gPiBL ZXlMZW5JbkJ5dGVzOw0KPiA+DQo+ID4gKyAgc3dpdGNoIChLZXlMZW5JbkJ5dGVzKSB7DQo+ID4N Cj4gPiArICBjYXNlIFdJTl9DRVJUX1VFRklfUlNBMjA0OF9TSVpFOg0KPiA+DQo+ID4gKyAgICBD b3B5R3VpZCAoJktla1NpZ0xpc3QtPlNpZ25hdHVyZVR5cGUsICZnRWZpQ2VydFJzYTIwNDhHdWlk KTsNCj4gPg0KPiA+ICsgICAgYnJlYWs7DQo+ID4NCj4gPiArICBjYXNlIFdJTl9DRVJUX1VFRklf UlNBMzA3Ml9TSVpFOg0KPiA+DQo+ID4gKyAgICBDb3B5R3VpZCAoJktla1NpZ0xpc3QtPlNpZ25h dHVyZVR5cGUsICZnRWZpQ2VydFJzYTMwNzJHdWlkKTsNCj4gPg0KPiA+ICsgICAgYnJlYWs7DQo+ ID4NCj4gPiArICBjYXNlIFdJTl9DRVJUX1VFRklfUlNBNDA5Nl9TSVpFOg0KPiA+DQo+ID4gKyAg ICBDb3B5R3VpZCAoJktla1NpZ0xpc3QtPlNpZ25hdHVyZVR5cGUsICZnRWZpQ2VydFJzYTQwOTZH dWlkKTsNCj4gPg0KPiA+ICsgICAgYnJlYWs7DQo+ID4NCj4gPiArICAgIGJyZWFrOw0KPiA+DQo+ ID4gKyAgZGVmYXVsdCA6DQo+ID4NCj4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICJVbnN1 cHBvcnRlZCBrZXkgbGVuZ3RoLlxuIikpOw0KPiA+DQo+ID4gKyAgICBTdGF0dXMgPSBFRklfVU5T VVBQT1JURUQ7DQo+ID4NCj4gPiArICAgIGdvdG8gT05fRVhJVDsNCj4gPg0KPiA+ICsgIH0NCj4g Pg0KPiA+DQo+ID4NCj4gPiAgICBLRUtTaWdEYXRhID0gKEVGSV9TSUdOQVRVUkVfREFUQSAqKSgo VUlOVDggKilLZWtTaWdMaXN0ICsgc2l6ZW9mDQo+ID4gKEVGSV9TSUdOQVRVUkVfTElTVCkpOw0K PiA+DQo+ID4gICAgQ29weUd1aWQgKCZLRUtTaWdEYXRhLT5TaWduYXR1cmVPd25lciwgUHJpdmF0 ZS0+U2lnbmF0dXJlR1VJRCk7DQo+ID4NCj4gPiAgICBDb3B5TWVtICgNCj4gPg0KPiA+ICAgICAg S0VLU2lnRGF0YS0+U2lnbmF0dXJlRGF0YSwNCj4gPg0KPiA+ICAgICAgS2V5QmxvYiArIHNpemVv ZiAoQ1BMX0tFWV9JTkZPKSwNCj4gPg0KPiA+IC0gICAgV0lOX0NFUlRfVUVGSV9SU0EyMDQ4X1NJ WkUNCj4gPg0KPiA+ICsgICAgS2V5TGVuSW5CeXRlcw0KPiA+DQo+ID4gICAgICApOw0KPiA+DQo+ ID4NCj4gPg0KPiA+ICAgIC8vDQo+ID4NCj4gPiBAQCAtODkwLDcgKzkxMCw3IEBAIEVucm9sbEtl eUV4Y2hhbmdlS2V5ICgNCj4gPiAgICBpZiAoSXNEZXJFbmNvZGVDZXJ0aWZpY2F0ZSAoRmlsZVBv c3RGaXgpKSB7DQo+ID4NCj4gPiAgICAgIHJldHVybiBFbnJvbGxYNTA5VG9LZWsgKFByaXZhdGUp Ow0KPiA+DQo+ID4gICAgfSBlbHNlIGlmIChDb21wYXJlTWVtIChGaWxlUG9zdEZpeCwgTCIucGJr IiwgNCkgPT0gMCkgew0KPiA+DQo+ID4gLSAgICByZXR1cm4gRW5yb2xsUnNhMjA0OFRvS2VrIChQ cml2YXRlKTsNCj4gPg0KPiA+ICsgICAgcmV0dXJuIEVucm9sbFJzYVRvS2VrIChQcml2YXRlKTsN Cj4gPg0KPiA+ICAgIH0gZWxzZSB7DQo+ID4NCj4gPiAgICAgIC8vDQo+ID4NCj4gPiAgICAgIC8v IEZpbGUgdHlwZSBpcyB3cm9uZywgc2ltcGx5IGNsb3NlIGl0DQo+ID4NCj4gPiBAQCAtMTg0Nyw3 ICsxODY3LDcgQEAgSGFzaFBlSW1hZ2UgKA0KPiA+ICAgIFNlY3Rpb25IZWFkZXIgPSBOVUxMOw0K PiA+DQo+ID4gICAgU3RhdHVzICAgICAgICA9IEZBTFNFOw0KPiA+DQo+ID4NCj4gPg0KPiA+IC0g IGlmIChIYXNoQWxnICE9IEhBU0hBTEdfU0hBMjU2KSB7DQo+ID4NCj4gPiArICBpZiAoKEhhc2hB bGcgPj0gSEFTSEFMR19NQVgpKSB7DQo+ID4NCj4gPiAgICAgIHJldHVybiBGQUxTRTsNCj4gPg0K PiA+ICAgIH0NCj4gPg0KPiA+DQo+ID4NCj4gPiBAQCAtMTg1Niw4ICsxODc2LDI1IEBAIEhhc2hQ ZUltYWdlICgNCj4gPiAgICAvLw0KPiA+DQo+ID4gICAgWmVyb01lbSAobUltYWdlRGlnZXN0LCBN QVhfRElHRVNUX1NJWkUpOw0KPiA+DQo+ID4NCj4gPg0KPiA+IC0gIG1JbWFnZURpZ2VzdFNpemUg PSBTSEEyNTZfRElHRVNUX1NJWkU7DQo+ID4NCj4gPiAtICBtQ2VydFR5cGUgICAgICAgID0gZ0Vm aUNlcnRTaGEyNTZHdWlkOw0KPiA+DQo+ID4gKyAgIHN3aXRjaCAoSGFzaEFsZykgew0KPiA+DQo+ ID4gKyAgICBjYXNlIEhBU0hBTEdfU0hBMjU2Og0KPiA+DQo+ID4gKyAgICAgIG1JbWFnZURpZ2Vz dFNpemUgPSBTSEEyNTZfRElHRVNUX1NJWkU7DQo+ID4NCj4gPiArICAgICAgbUNlcnRUeXBlICAg ICAgICA9IGdFZmlDZXJ0U2hhMjU2R3VpZDsNCj4gPg0KPiA+ICsgICAgICBicmVhazsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgY2FzZSBIQVNIQUxHX1NIQTM4NDoNCj4gPg0KPiA+ICsgICAg ICBtSW1hZ2VEaWdlc3RTaXplID0gU0hBMzg0X0RJR0VTVF9TSVpFOw0KPiA+DQo+ID4gKyAgICAg IG1DZXJ0VHlwZSAgICAgICAgPSBnRWZpQ2VydFNoYTM4NEd1aWQ7DQo+ID4NCj4gPiArICAgICAg YnJlYWs7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNhc2UgSEFTSEFMR19TSEE1MTI6DQo+ ID4NCj4gPiArICAgICAgbUltYWdlRGlnZXN0U2l6ZSA9IFNIQTUxMl9ESUdFU1RfU0laRTsNCj4g Pg0KPiA+ICsgICAgICBtQ2VydFR5cGUgICAgICAgID0gZ0VmaUNlcnRTaGE1MTJHdWlkOw0KPiA+ DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWZhdWx0Og0K PiA+DQo+ID4gKyAgICAgIHJldHVybiBGQUxTRTsNCj4gPg0KPiA+ICsgIH0NCj4gPg0KPiA+DQo+ ID4NCj4gPiAgICBDdHhTaXplID0gbUhhc2hbSGFzaEFsZ10uR2V0Q29udGV4dFNpemUgKCk7DQo+ ID4NCj4gPg0KPiA+DQo+ID4gQEAgLTIyMjIsNiArMjI1OSwzNSBAQCBPTl9FWElUOg0KPiA+ICAg IHJldHVybiBTdGF0dXM7DQo+ID4NCj4gPiAgfQ0KPiA+DQo+ID4NCj4gPg0KPiA+ICsvKioNCj4g Pg0KPiA+ICsgIEdldCBIYXNoIEFsZyBieSBQY2RTZWN1cmVCb290RGVmYXVsdEhhc2hBbGcNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgIEByZXR2YWwgIFVJTlQzMiAgICAgICBIYXNoIEFsZw0KPiA+ DQo+ID4gKyAgKiovDQo+ID4NCj4gPiArVUlOVDMyDQo+ID4NCj4gPiArR2V0RGVmYXVsdEhhc2hB bGcgKA0KPiA+DQo+ID4gKyAgVk9JRA0KPiA+DQo+ID4gKyAgKQ0KPiA+DQo+ID4gK3sNCj4gPg0K PiA+ICsgIFVJTlQzMiAgSGFzaEFsZzsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgIHN3aXRjaCAo UGNkR2V0OCAoUGNkU2VjdXJlQm9vdERlZmF1bHRIYXNoQWxnKSkgew0KPiA+DQo+ID4gKyAgY2Fz ZSAxOg0KPiA+DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0lORk8sICIlYSB1c2UgU0hBMzg0Iiwg X19mdW5jX18pKTsNCj4gPg0KPiA+ICsgICAgSGFzaEFsZyA9IEhBU0hBTEdfU0hBMzg0Ow0KPiA+ DQo+ID4gKyAgICBicmVhazsNCj4gPg0KPiA+ICsgIGNhc2UgMjoNCj4gPg0KPiA+ICsgICAgREVC VUcgKChERUJVR19JTkZPLCAiJWEgdXNlIFNIQTUxMiIsIF9fZnVuY19fKSk7DQo+ID4NCj4gPiAr ICAgIEhhc2hBbGcgPSBIQVNIQUxHX1NIQTUxMjsNCj4gPg0KPiA+ICsgICAgYnJlYWs7DQo+ID4N Cj4gPiArICBkZWZhdWx0Og0KPiA+DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0lORk8sICIlYSB1 c2UgU0hBMjU2IiwgX19mdW5jX18pKTsNCj4gPg0KPiA+ICsgICAgSGFzaEFsZyA9IEhBU0hBTEdf U0hBMjU2Ow0KPiA+DQo+ID4gKyAgICBicmVhazsNCj4gPg0KPiA+ICsgIH0NCj4gPg0KPiA+ICsg IHJldHVybiBIYXNoQWxnOw0KPiA+DQo+ID4gK30NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICAvKioN Cj4gPg0KPiA+ICAgIEVucm9sbCBhIG5ldyBzaWduYXR1cmUgb2YgZXhlY3V0YWJsZSBpbnRvIFNp Z25hdHVyZSBEYXRhYmFzZS4NCj4gPg0KPiA+DQo+ID4NCj4gPiBAQCAtMjI4OSw3ICsyMzU1LDcg QEAgRW5yb2xsSW1hZ2VTaWduYXR1cmVUb1NpZ0RCICgNCj4gPiAgICB9DQo+ID4NCj4gPg0KPiA+ DQo+ID4gICAgaWYgKG1TZWNEYXRhRGlyLT5TaXplT2ZDZXJ0ID09IDApIHsNCj4gPg0KPiA+IC0g ICAgaWYgKCFIYXNoUGVJbWFnZSAoSEFTSEFMR19TSEEyNTYpKSB7DQo+ID4NCj4gPiArICAgIGlm ICghSGFzaFBlSW1hZ2UgKEdldERlZmF1bHRIYXNoQWxnICgpKSkgew0KPiA+DQo+ID4gICAgICAg IFN0YXR1cyA9ICBFRklfU0VDVVJJVFlfVklPTEFUSU9OOw0KPiA+DQo+ID4gICAgICAgIGdvdG8g T05fRVhJVDsNCj4gPg0KPiA+ICAgICAgfQ0KPiA+DQo+ID4gQEAgLTI1ODksNiArMjY1NSwxMCBA QCBVcGRhdGVEZWxldGVQYWdlICgNCj4gPiAgICB3aGlsZSAoKEl0ZW1EYXRhU2l6ZSA+IDApICYm IChJdGVtRGF0YVNpemUgPj0NCj4gPiBDZXJ0TGlzdC0+U2lnbmF0dXJlTGlzdFNpemUpKSB7DQo+ ID4NCj4gPiAgICAgIGlmIChDb21wYXJlR3VpZCAoJkNlcnRMaXN0LT5TaWduYXR1cmVUeXBlLCAm Z0VmaUNlcnRSc2EyMDQ4R3VpZCkpDQo+ID4gew0KPiA+DQo+ID4gICAgICAgIEhlbHAgPSBTVFJJ TkdfVE9LRU4gKFNUUl9DRVJUX1RZUEVfUlNBMjA0OF9TSEEyNTZfR1VJRCk7DQo+ID4NCj4gPiAr ICAgIH0gZWxzZSBpZiAoQ29tcGFyZUd1aWQgKCZDZXJ0TGlzdC0+U2lnbmF0dXJlVHlwZSwNCj4g PiArICZnRWZpQ2VydFJzYTMwNzJHdWlkKSkgew0KPiA+DQo+ID4gKyAgICAgIEhlbHAgPSBTVFJJ TkdfVE9LRU4gKFNUUl9DRVJUX1RZUEVfUlNBMzA3Ml9TSEEzODRfR1VJRCk7DQo+ID4NCj4gPiAr ICAgIH0gZWxzZSBpZiAoQ29tcGFyZUd1aWQgKCZDZXJ0TGlzdC0+U2lnbmF0dXJlVHlwZSwNCj4g PiArICZnRWZpQ2VydFJzYTQwOTZHdWlkKSkgew0KPiA+DQo+ID4gKyAgICAgIEhlbHAgPSBTVFJJ TkdfVE9LRU4gKFNUUl9DRVJUX1RZUEVfUlNBNDA5Nl9TSEE1MTJfR1VJRCk7DQo+ID4NCj4gPiAg ICAgIH0gZWxzZSBpZiAoQ29tcGFyZUd1aWQgKCZDZXJ0TGlzdC0+U2lnbmF0dXJlVHlwZSwNCj4g PiAmZ0VmaUNlcnRYNTA5R3VpZCkpIHsNCj4gPg0KPiA+ICAgICAgICBIZWxwID0gU1RSSU5HX1RP S0VOIChTVFJfQ0VSVF9UWVBFX1BDS1M3X0dVSUQpOw0KPiA+DQo+ID4gICAgICB9IGVsc2UgaWYg KENvbXBhcmVHdWlkICgmQ2VydExpc3QtPlNpZ25hdHVyZVR5cGUsDQo+ID4gJmdFZmlDZXJ0U2hh MUd1aWQpKSB7DQo+ID4NCj4gPiBAQCAtMjc1MCw2ICsyODIwLDggQEAgRGVsZXRlS2V5RXhjaGFu Z2VLZXkgKA0KPiA+ICAgIEd1aWRJbmRleCAgICAgID0gMDsNCj4gPg0KPiA+ICAgIHdoaWxlICgo S2VrRGF0YVNpemUgPiAwKSAmJiAoS2VrRGF0YVNpemUgPj0NCj4gPiBDZXJ0TGlzdC0+U2lnbmF0 dXJlTGlzdFNpemUpKSB7DQo+ID4NCj4gPiAgICAgIGlmIChDb21wYXJlR3VpZCAoJkNlcnRMaXN0 LT5TaWduYXR1cmVUeXBlLCAmZ0VmaUNlcnRSc2EyMDQ4R3VpZCkNCj4gPiB8fA0KPiA+DQo+ID4g KyAgICAgICAgQ29tcGFyZUd1aWQgKCZDZXJ0TGlzdC0+U2lnbmF0dXJlVHlwZSwgJmdFZmlDZXJ0 UnNhMzA3Mkd1aWQpDQo+ID4gKyB8fA0KPiA+DQo+ID4gKyAgICAgICAgQ29tcGFyZUd1aWQgKCZD ZXJ0TGlzdC0+U2lnbmF0dXJlVHlwZSwgJmdFZmlDZXJ0UnNhNDA5Nkd1aWQpDQo+ID4gKyB8fA0K PiA+DQo+ID4gICAgICAgICAgQ29tcGFyZUd1aWQgKCZDZXJ0TGlzdC0+U2lnbmF0dXJlVHlwZSwg JmdFZmlDZXJ0WDUwOUd1aWQpKQ0KPiA+DQo+ID4gICAgICB7DQo+ID4NCj4gPiAgICAgICAgQ29w eU1lbSAoRGF0YSArIE9mZnNldCwgQ2VydExpc3QsIChzaXplb2YgKEVGSV9TSUdOQVRVUkVfTElT VCkNCj4gPiArIENlcnRMaXN0LQ0KPiA+ID5TaWduYXR1cmVIZWFkZXJTaXplKSk7DQo+ID4NCj4g PiBAQCAtMjk1Miw2ICszMDI0LDggQEAgRGVsZXRlU2lnbmF0dXJlICgNCj4gPiAgICBHdWlkSW5k ZXggICAgPSAwOw0KPiA+DQo+ID4gICAgd2hpbGUgKChJdGVtRGF0YVNpemUgPiAwKSAmJiAoSXRl bURhdGFTaXplID49DQo+ID4gQ2VydExpc3QtPlNpZ25hdHVyZUxpc3RTaXplKSkgew0KPiA+DQo+ ID4gICAgICBpZiAoQ29tcGFyZUd1aWQgKCZDZXJ0TGlzdC0+U2lnbmF0dXJlVHlwZSwgJmdFZmlD ZXJ0UnNhMjA0OEd1aWQpDQo+ID4gfHwNCj4gPg0KPiA+ICsgICAgICAgIENvbXBhcmVHdWlkICgm Q2VydExpc3QtPlNpZ25hdHVyZVR5cGUsICZnRWZpQ2VydFJzYTMwNzJHdWlkKQ0KPiA+ICsgfHwN Cj4gPg0KPiA+ICsgICAgICAgIENvbXBhcmVHdWlkICgmQ2VydExpc3QtPlNpZ25hdHVyZVR5cGUs ICZnRWZpQ2VydFJzYTQwOTZHdWlkKQ0KPiA+ICsgfHwNCj4gPg0KPiA+ICAgICAgICAgIENvbXBh cmVHdWlkICgmQ2VydExpc3QtPlNpZ25hdHVyZVR5cGUsICZnRWZpQ2VydFg1MDlHdWlkKSB8fA0K PiA+DQo+ID4gICAgICAgICAgQ29tcGFyZUd1aWQgKCZDZXJ0TGlzdC0+U2lnbmF0dXJlVHlwZSwg JmdFZmlDZXJ0U2hhMUd1aWQpIHx8DQo+ID4NCj4gPiAgICAgICAgICBDb21wYXJlR3VpZCAoJkNl cnRMaXN0LT5TaWduYXR1cmVUeXBlLCAmZ0VmaUNlcnRTaGEyNTZHdWlkKQ0KPiA+IHx8DQo+ID4N Cj4gPiBAQCAtMzc1OCwxMiArMzgzMiwyMCBAQCBMb2FkU2lnbmF0dXJlTGlzdCAoDQo+ID4gICAg d2hpbGUgKChSZW1haW5pbmdTaXplID4gMCkgJiYgKFJlbWFpbmluZ1NpemUgPj0NCj4gPiBMaXN0 V2Fsa2VyLT5TaWduYXR1cmVMaXN0U2l6ZSkpIHsNCj4gPg0KPiA+ICAgICAgaWYgKENvbXBhcmVH dWlkICgmTGlzdFdhbGtlci0+U2lnbmF0dXJlVHlwZSwNCj4gPiAmZ0VmaUNlcnRSc2EyMDQ4R3Vp ZCkpIHsNCj4gPg0KPiA+ICAgICAgICBMaXN0VHlwZSA9IFNUUklOR19UT0tFTiAoU1RSX0xJU1Rf VFlQRV9SU0EyMDQ4X1NIQTI1Nik7DQo+ID4NCj4gPiArICAgIH0gZWxzZSBpZiAoQ29tcGFyZUd1 aWQgKCZMaXN0V2Fsa2VyLT5TaWduYXR1cmVUeXBlLA0KPiA+ICsgJmdFZmlDZXJ0UnNhMzA3Mkd1 aWQpKQ0KPiA+IHsNCj4gPg0KPiA+ICsgICAgICBMaXN0VHlwZSA9IFNUUklOR19UT0tFTiAoU1RS X0xJU1RfVFlQRV9SU0EzMDcyX1NIQTM4NCk7DQo+ID4NCj4gPiArICAgIH0gZWxzZSBpZiAoQ29t cGFyZUd1aWQgKCZMaXN0V2Fsa2VyLT5TaWduYXR1cmVUeXBlLA0KPiA+ICsgJmdFZmlDZXJ0UnNh NDA5Nkd1aWQpKQ0KPiA+IHsNCj4gPg0KPiA+ICsgICAgICBMaXN0VHlwZSA9IFNUUklOR19UT0tF TiAoU1RSX0xJU1RfVFlQRV9SU0E0MDk2X1NIQTUxMik7DQo+ID4NCj4gPiAgICAgIH0gZWxzZSBp ZiAoQ29tcGFyZUd1aWQgKCZMaXN0V2Fsa2VyLT5TaWduYXR1cmVUeXBlLA0KPiA+ICZnRWZpQ2Vy dFg1MDlHdWlkKSkgew0KPiA+DQo+ID4gICAgICAgIExpc3RUeXBlID0gU1RSSU5HX1RPS0VOIChT VFJfTElTVF9UWVBFX1g1MDkpOw0KPiA+DQo+ID4gICAgICB9IGVsc2UgaWYgKENvbXBhcmVHdWlk ICgmTGlzdFdhbGtlci0+U2lnbmF0dXJlVHlwZSwNCj4gPiAmZ0VmaUNlcnRTaGExR3VpZCkpIHsN Cj4gPg0KPiA+ICAgICAgICBMaXN0VHlwZSA9IFNUUklOR19UT0tFTiAoU1RSX0xJU1RfVFlQRV9T SEExKTsNCj4gPg0KPiA+ICAgICAgfSBlbHNlIGlmIChDb21wYXJlR3VpZCAoJkxpc3RXYWxrZXIt PlNpZ25hdHVyZVR5cGUsDQo+ID4gJmdFZmlDZXJ0U2hhMjU2R3VpZCkpIHsNCj4gPg0KPiA+ICAg ICAgICBMaXN0VHlwZSA9IFNUUklOR19UT0tFTiAoU1RSX0xJU1RfVFlQRV9TSEEyNTYpOw0KPiA+ DQo+ID4gKyAgICB9IGVsc2UgaWYgKENvbXBhcmVHdWlkICgmTGlzdFdhbGtlci0+U2lnbmF0dXJl VHlwZSwNCj4gPiArICZnRWZpQ2VydFNoYTM4NEd1aWQpKQ0KPiA+IHsNCj4gPg0KPiA+ICsgICAg ICBMaXN0VHlwZSA9IFNUUklOR19UT0tFTiAoU1RSX0xJU1RfVFlQRV9TSEEzODQpOw0KPiA+DQo+ ID4gKyAgICB9IGVsc2UgaWYgKENvbXBhcmVHdWlkICgmTGlzdFdhbGtlci0+U2lnbmF0dXJlVHlw ZSwNCj4gPiArICZnRWZpQ2VydFNoYTUxMkd1aWQpKQ0KPiA+IHsNCj4gPg0KPiA+ICsgICAgICBM aXN0VHlwZSA9IFNUUklOR19UT0tFTiAoU1RSX0xJU1RfVFlQRV9TSEE1MTIpOw0KPiA+DQo+ID4g ICAgICB9IGVsc2UgaWYgKENvbXBhcmVHdWlkICgmTGlzdFdhbGtlci0+U2lnbmF0dXJlVHlwZSwN Cj4gPiAmZ0VmaUNlcnRYNTA5U2hhMjU2R3VpZCkpIHsNCj4gPg0KPiA+ICAgICAgICBMaXN0VHlw ZSA9IFNUUklOR19UT0tFTiAoU1RSX0xJU1RfVFlQRV9YNTA5X1NIQTI1Nik7DQo+ID4NCj4gPiAg ICAgIH0gZWxzZSBpZiAoQ29tcGFyZUd1aWQgKCZMaXN0V2Fsa2VyLT5TaWduYXR1cmVUeXBlLA0K PiA+ICZnRWZpQ2VydFg1MDlTaGEzODRHdWlkKSkgew0KPiA+DQo+ID4gQEAgLTQwMDEsNiArNDA4 MywxNCBAQCBGb3JtYXRIZWxwSW5mbyAoDQo+ID4gICAgICBMaXN0VHlwZUlkID0gU1RSSU5HX1RP S0VOIChTVFJfTElTVF9UWVBFX1JTQTIwNDhfU0hBMjU2KTsNCj4gPg0KPiA+ICAgICAgRGF0YVNp emUgICA9IExpc3RFbnRyeS0+U2lnbmF0dXJlU2l6ZSAtIHNpemVvZiAoRUZJX0dVSUQpOw0KPiA+ DQo+ID4gICAgICBJc0NlcnQgICAgID0gVFJVRTsNCj4gPg0KPiA+ICsgIH0gZWxzZSBpZiAoQ29t cGFyZUd1aWQgKCZMaXN0RW50cnktPlNpZ25hdHVyZVR5cGUsDQo+ID4gKyAmZ0VmaUNlcnRSc2Ez MDcyR3VpZCkpIHsNCj4gPg0KPiA+ICsgICAgTGlzdFR5cGVJZCA9IFNUUklOR19UT0tFTiAoU1RS X0xJU1RfVFlQRV9SU0EzMDcyX1NIQTM4NCk7DQo+ID4NCj4gPiArICAgIERhdGFTaXplICAgPSBM aXN0RW50cnktPlNpZ25hdHVyZVNpemUgLSBzaXplb2YgKEVGSV9HVUlEKTsNCj4gPg0KPiA+ICsg ICAgSXNDZXJ0ICAgICA9IFRSVUU7DQo+ID4NCj4gPiArICB9IGVsc2UgaWYgKENvbXBhcmVHdWlk ICgmTGlzdEVudHJ5LT5TaWduYXR1cmVUeXBlLA0KPiA+ICsgJmdFZmlDZXJ0UnNhNDA5Nkd1aWQp KSB7DQo+ID4NCj4gPiArICAgIExpc3RUeXBlSWQgPSBTVFJJTkdfVE9LRU4gKFNUUl9MSVNUX1RZ UEVfUlNBNDA5Nl9TSEE1MTIpOw0KPiA+DQo+ID4gKyAgICBEYXRhU2l6ZSAgID0gTGlzdEVudHJ5 LT5TaWduYXR1cmVTaXplIC0gc2l6ZW9mIChFRklfR1VJRCk7DQo+ID4NCj4gPiArICAgIElzQ2Vy dCAgICAgPSBUUlVFOw0KPiA+DQo+ID4gICAgfSBlbHNlIGlmIChDb21wYXJlR3VpZCAoJkxpc3RF bnRyeS0+U2lnbmF0dXJlVHlwZSwNCj4gPiAmZ0VmaUNlcnRYNTA5R3VpZCkpIHsNCj4gPg0KPiA+ ICAgICAgTGlzdFR5cGVJZCA9IFNUUklOR19UT0tFTiAoU1RSX0xJU1RfVFlQRV9YNTA5KTsNCj4g Pg0KPiA+ICAgICAgRGF0YVNpemUgICA9IExpc3RFbnRyeS0+U2lnbmF0dXJlU2l6ZSAtIHNpemVv ZiAoRUZJX0dVSUQpOw0KPiA+DQo+ID4gQEAgLTQwMTEsNiArNDEwMSwxMiBAQCBGb3JtYXRIZWxw SW5mbyAoDQo+ID4gICAgfSBlbHNlIGlmIChDb21wYXJlR3VpZCAoJkxpc3RFbnRyeS0+U2lnbmF0 dXJlVHlwZSwNCj4gPiAmZ0VmaUNlcnRTaGEyNTZHdWlkKSkgew0KPiA+DQo+ID4gICAgICBMaXN0 VHlwZUlkID0gU1RSSU5HX1RPS0VOIChTVFJfTElTVF9UWVBFX1NIQTI1Nik7DQo+ID4NCj4gPiAg ICAgIERhdGFTaXplICAgPSAzMjsNCj4gPg0KPiA+ICsgIH0gZWxzZSBpZiAoQ29tcGFyZUd1aWQg KCZMaXN0RW50cnktPlNpZ25hdHVyZVR5cGUsDQo+ID4gKyAmZ0VmaUNlcnRTaGEzODRHdWlkKSkg ew0KPiA+DQo+ID4gKyAgICBMaXN0VHlwZUlkID0gU1RSSU5HX1RPS0VOIChTVFJfTElTVF9UWVBF X1NIQTM4NCk7DQo+ID4NCj4gPiArICAgIERhdGFTaXplICAgPSA0ODsNCj4gPg0KPiA+ICsgIH0g ZWxzZSBpZiAoQ29tcGFyZUd1aWQgKCZMaXN0RW50cnktPlNpZ25hdHVyZVR5cGUsDQo+ID4gKyAm Z0VmaUNlcnRTaGE1MTJHdWlkKSkgew0KPiA+DQo+ID4gKyAgICBMaXN0VHlwZUlkID0gU1RSSU5H X1RPS0VOIChTVFJfTElTVF9UWVBFX1NIQTUxMik7DQo+ID4NCj4gPiArICAgIERhdGFTaXplICAg PSA2NDsNCj4gPg0KPiA+ICAgIH0gZWxzZSBpZiAoQ29tcGFyZUd1aWQgKCZMaXN0RW50cnktPlNp Z25hdHVyZVR5cGUsDQo+ID4gJmdFZmlDZXJ0WDUwOVNoYTI1Nkd1aWQpKSB7DQo+ID4NCj4gPiAg ICAgIExpc3RUeXBlSWQgPSBTVFJJTkdfVE9LRU4gKFNUUl9MSVNUX1RZUEVfWDUwOV9TSEEyNTYp Ow0KPiA+DQo+ID4gICAgICBEYXRhU2l6ZSAgID0gMzI7DQo+ID4NCj4gPiBkaWZmIC0tZ2l0DQo+ ID4NCj4gYS9TZWN1cml0eVBrZy9WYXJpYWJsZUF1dGhlbnRpY2F0ZWQvU2VjdXJlQm9vdENvbmZp Z0R4ZS9TZWN1cmVCb290Q29uDQo+IGYNCj4gPiBpZ0kNCj4gPiBtcGwuaA0KPiA+DQo+IGIvU2Vj dXJpdHlQa2cvVmFyaWFibGVBdXRoZW50aWNhdGVkL1NlY3VyZUJvb3RDb25maWdEeGUvU2VjdXJl Qm9vdENvbg0KPiBmDQo+ID4gaWdJDQo+ID4gbXBsLmgNCj4gPiBpbmRleCAzN2M2NmYxYjk1Li5h ZTUwZDkyOWE3IDEwMDY0NA0KPiA+IC0tLQ0KPiA+DQo+IGEvU2VjdXJpdHlQa2cvVmFyaWFibGVB dXRoZW50aWNhdGVkL1NlY3VyZUJvb3RDb25maWdEeGUvU2VjdXJlQm9vdENvbg0KPiBmDQo+ID4g aWdJDQo+ID4gbXBsLmgNCj4gPiArKysNCj4gPg0KPiBiL1NlY3VyaXR5UGtnL1ZhcmlhYmxlQXV0 aGVudGljYXRlZC9TZWN1cmVCb290Q29uZmlnRHhlL1NlY3VyZUJvb3RDb24NCj4gZg0KPiA+IGln SQ0KPiA+IG1wbC5oDQo+ID4gQEAgLTgyLDYgKzgyLDggQEAgZXh0ZXJuICBFRklfSUZSX0dVSURf TEFCRUwgICptRW5kTGFiZWw7ICAjZGVmaW5lDQo+ID4gTUFYX0RJR0VTVF9TSVpFICBTSEE1MTJf RElHRVNUX1NJWkUNCj4gPg0KPiA+DQo+ID4NCj4gPiAgI2RlZmluZSBXSU5fQ0VSVF9VRUZJX1JT QTIwNDhfU0laRSAgMjU2DQo+ID4NCj4gPiArI2RlZmluZSBXSU5fQ0VSVF9VRUZJX1JTQTMwNzJf U0laRSAgMzg0DQo+ID4NCj4gPiArI2RlZmluZSBXSU5fQ0VSVF9VRUZJX1JTQTQwOTZfU0laRSAg NTEyDQo+ID4NCj4gPg0KPiA+DQo+ID4gIC8vDQo+ID4NCj4gPiAgLy8gU3VwcG9ydCBoYXNoIHR5 cGVzDQo+ID4NCj4gPiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9TZWN1cml0eVBrZy9WYXJpYWJsZUF1 dGhlbnRpY2F0ZWQvU2VjdXJlQm9vdENvbmZpZ0R4ZS9TZWN1cmVCb290Q29uDQo+IGYNCj4gPiBp Z1MNCj4gPiB0cmluZ3MudW5pDQo+ID4NCj4gYi9TZWN1cml0eVBrZy9WYXJpYWJsZUF1dGhlbnRp Y2F0ZWQvU2VjdXJlQm9vdENvbmZpZ0R4ZS9TZWN1cmVCb290Q29uDQo+IGYNCj4gPiBpZ1MNCj4g PiB0cmluZ3MudW5pDQo+ID4gaW5kZXggMGQwMTcwMWRlNy4uMWI0OGFjYzgwMCAxMDA2NDQNCj4g PiAtLS0NCj4gPg0KPiBhL1NlY3VyaXR5UGtnL1ZhcmlhYmxlQXV0aGVudGljYXRlZC9TZWN1cmVC b290Q29uZmlnRHhlL1NlY3VyZUJvb3RDb24NCj4gZg0KPiA+IGlnUw0KPiA+IHRyaW5ncy51bmkN Cj4gPiArKysNCj4gPg0KPiBiL1NlY3VyaXR5UGtnL1ZhcmlhYmxlQXV0aGVudGljYXRlZC9TZWN1 cmVCb290Q29uZmlnRHhlL1NlY3VyZUJvb3RDb24NCj4gZg0KPiA+IGlnUw0KPiA+IHRyaW5ncy51 bmkNCj4gPiBAQCAtMTEzLDYgKzExMyw4IEBAIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50DQo+ID4gICNzdHJpbmcgU1RSX0ZPUk1fRU5ST0xMX0tFS19GUk9NX0ZJ TEVfVElUTEVfSEVMUCAgICAjbGFuZ3VhZ2UgZW4tDQo+IFVTDQo+ID4gIlJlYWQgdGhlIHB1Ymxp YyBrZXkgb2YgS0VLIGZyb20gZmlsZSINCj4gPg0KPiA+ICAjc3RyaW5nIFNUUl9GSUxFX0VYUExP UkVSX1RJVExFICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiRmlsZQ0KPiBFeHBs b3JlciINCj4gPg0KPiA+ICAjc3RyaW5nIFNUUl9DRVJUX1RZUEVfUlNBMjA0OF9TSEEyNTZfR1VJ RCAgICAgICAgICNsYW5ndWFnZSBlbi1VUw0KPiA+ICJSU0EyMDQ4X1NIQTI1Nl9HVUlEIg0KPiA+ DQo+ID4gKyNzdHJpbmcgU1RSX0NFUlRfVFlQRV9SU0EzMDcyX1NIQTM4NF9HVUlEICAgICAgICAg I2xhbmd1YWdlIGVuLVVTDQo+ID4gIlJTQTMwNzJfU0hBMzg0X0dVSUQiDQo+ID4NCj4gPiArI3N0 cmluZyBTVFJfQ0VSVF9UWVBFX1JTQTQwOTZfU0hBNTEyX0dVSUQgICAgICAgICAjbGFuZ3VhZ2Ug ZW4tVVMNCj4gPiAiUlNBNDA5Nl9TSEE1MTJfR1VJRCINCj4gPg0KPiA+ICAjc3RyaW5nIFNUUl9D RVJUX1RZUEVfUENLUzdfR1VJRCAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUw0KPiAi UEtDUzdfR1VJRCINCj4gPg0KPiA+ICAjc3RyaW5nIFNUUl9DRVJUX1RZUEVfU0hBMV9HVUlEICAg ICAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUw0KPiAiU0hBMV9HVUlEIg0KPiA+DQo+ID4g ICNzdHJpbmcgU1RSX0NFUlRfVFlQRV9TSEEyNTZfR1VJRCAgICAgICAgICAgICAgICAgI2xhbmd1 YWdlIGVuLVVTDQo+ID4gIlNIQTI1Nl9HVUlEIg0KPiA+DQo+ID4gQEAgLTEyMSw5ICsxMjMsMTMg QEAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiAgI3N0 cmluZyBTVFJfQ0VSVF9UWVBFX1g1MDlfU0hBNTEyX0dVSUQgICAgICAgICAgICAjbGFuZ3VhZ2Ug ZW4tVVMNCj4gPiAiWDUwOV9TSEE1MTJfR1VJRCINCj4gPg0KPiA+DQo+ID4NCj4gPiAgI3N0cmlu ZyBTVFJfTElTVF9UWVBFX1JTQTIwNDhfU0hBMjU2ICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4t VVMNCj4gPiAiUlNBMjA0OF9TSEEyNTYiDQo+ID4NCj4gPiArI3N0cmluZyBTVFJfTElTVF9UWVBF X1JTQTMwNzJfU0hBMzg0ICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMNCj4gPiAiUlNBMzA3 Ml9TSEEzODQiDQo+ID4NCj4gPiArI3N0cmluZyBTVFJfTElTVF9UWVBFX1JTQTQwOTZfU0hBNTEy ICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMNCj4gPiAiUlNBNDA5Nl9TSEE1MTIiDQo+ID4N Cj4gPiAgI3N0cmluZyBTVFJfTElTVF9UWVBFX1g1MDkgICAgICAgICAgICAgICAgICAgICAgICAj bGFuZ3VhZ2UgZW4tVVMgIlg1MDkiDQo+ID4NCj4gPiAgI3N0cmluZyBTVFJfTElTVF9UWVBFX1NI QTEgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIlNIQTEiDQo+ID4NCj4g PiAgI3N0cmluZyBTVFJfTElTVF9UWVBFX1NIQTI1NiAgICAgICAgICAgICAgICAgICAgICAjbGFu Z3VhZ2UgZW4tVVMgIlNIQTI1NiINCj4gPg0KPiA+ICsjc3RyaW5nIFNUUl9MSVNUX1RZUEVfU0hB Mzg0ICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiU0hBMzg0Ig0KPiA+DQo+ ID4gKyNzdHJpbmcgU1RSX0xJU1RfVFlQRV9TSEE1MTIgICAgICAgICAgICAgICAgICAgICAgI2xh bmd1YWdlIGVuLVVTICJTSEE1MTIiDQo+ID4NCj4gPiAgI3N0cmluZyBTVFJfTElTVF9UWVBFX1g1 MDlfU0hBMjU2ICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMNCj4gPiAiWDUwOV9TSEEy NTYiDQo+ID4NCj4gPiAgI3N0cmluZyBTVFJfTElTVF9UWVBFX1g1MDlfU0hBMzg0ICAgICAgICAg ICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMNCj4gPiAiWDUwOV9TSEEzODQiDQo+ID4NCj4gPiAgI3N0 cmluZyBTVFJfTElTVF9UWVBFX1g1MDlfU0hBNTEyICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2Ug ZW4tVVMNCj4gPiAiWDUwOV9TSEE1MTIiDQo+ID4NCj4gPiAtLQ0KPiA+IDIuMjYuMi53aW5kb3dz LjENCg0K