From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web08.3698.1663902302441671034 for ; Thu, 22 Sep 2022 20:05:02 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=l5gJS01k; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: yi1.li@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663902302; x=1695438302; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=2XGbexC9LJYMLzAvJV4eESF8bRrsPhCJZIvUGgSniaU=; b=l5gJS01k/0p08Jo986dh8ncKzs2O1CJQc+ATRQPxROP9N3ngPov4jUkv 60yWc1u1SZWt+97vQhncgym2Q5UNDHsKWjZtySHw+6r+lYwqCoCCy/A8h DbvH2Or0TYan/3Fyd0t7aRazyPgQWlQc0AVpx4QZ2RwO6CmDjSTxTvSVb SZcrICvHxTY25FwDbxbLnDEEEpb2wVSIJhX8sklMrjX7hr3KpX6WH85mn aV7NL0fbQXx/3DlkV1bW4DqoXXJXG9pV1K7PeJhMVP6g7YVcJ9P7/Mp9h r6YZL3NXGRulYoMHyzfUjYyKJ63sKvXeiaEtholTwpIzOLEX9U+nquEPB A==; X-IronPort-AV: E=McAfee;i="6500,9779,10478"; a="280863449" X-IronPort-AV: E=Sophos;i="5.93,337,1654585200"; d="scan'208";a="280863449" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Sep 2022 20:04:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,337,1654585200"; d="scan'208";a="795354602" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga005.jf.intel.com with ESMTP; 22 Sep 2022 20:04:53 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Thu, 22 Sep 2022 20:04:52 -0700 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Thu, 22 Sep 2022 20:01:45 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Thu, 22 Sep 2022 20:01:45 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.169) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Thu, 22 Sep 2022 20:01:44 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZuEKDwyJZA8k3GQdwyJDiWbLSS9C0O0S0A/s2YZv3O8WUXr0Goy3Xf2xBnWVV5GEoZVlygCD01DxyVxYYH7rEvXyYKKa8ide4QV8Rn4w8vzdQbzzncv28gIvW4TzoDE2dUCl+sLLaQMQsFp5ZwjE1fLf8vwWcDDImo3xqYBaxJ0j/5JW38tteUoBkx8fagg5fgYum7mqpir8418qvnMKVBRHA9tUqGY3bH1Gx7K+AUz0ylCzvGoboQ6tSkGn+xjx62jLq/1ValjXMzlEjVkfa9wz3/yzBh1xFeiXLydcLPnUEVc4Jwo50mjZ0KW962QZjCW+DNTEUMXwTE2B5+jOIw== 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=2XGbexC9LJYMLzAvJV4eESF8bRrsPhCJZIvUGgSniaU=; b=b0G2w1jfFSB6wM3hv4BYzEaJTnDrmzKOgL8FrbYFVJjXZNMV/zlvL7ZxQdjw8RdnouXjdVzvZh1tpxvEk3VZPqAyhNDUOt/B4TQ3ho5rhK/x3TCpcJo8U7A9rRBQIJUXv40mbEaeLn/2U9f5DADqKlwfzvx7D/c5PCrtBZOjwq0ygEwkVOil5dOcXq/mwELSfhe/kDOZpRxMEn4DP7b3q9t5NfZKx+imoYjgslnEWqI3Kht/vaH8AiUfyIljrOQmJjoB5kYntCPSUHo5DqhGLb9+lAmwCg//1kpvmyCOObTWZvWzwPHs/Ygc+7xVdrCUhLSFDGUCixaos68ta9R5Rw== 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 SJ1PR11MB6227.namprd11.prod.outlook.com (2603:10b6:a03:45a::10) by SN7PR11MB6775.namprd11.prod.outlook.com (2603:10b6:806:264::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.16; Fri, 23 Sep 2022 03:01:36 +0000 Received: from SJ1PR11MB6227.namprd11.prod.outlook.com ([fe80::bd4b:a704:7db6:70d4]) by SJ1PR11MB6227.namprd11.prod.outlook.com ([fe80::bd4b:a704:7db6:70d4%7]) with mapi id 15.20.5654.020; Fri, 23 Sep 2022 03:01:36 +0000 From: "yi1 li" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: "Yao, Jiewen" , "Wang, Jian J" , "Lu, Xiaoyu1" , "Jiang, Guomin" Subject: Re: [edk2-devel] [PATCH V2 1/3] CryptoPkg: Add EC support Thread-Topic: [edk2-devel] [PATCH V2 1/3] CryptoPkg: Add EC support Thread-Index: AQHYzXZLD+xvkEQOakOpSaeT6ojkS63qEX6AgACgK5CAACHkgIAARIXwgAD3V4CAADIQwA== Date: Fri, 23 Sep 2022 03:01:36 +0000 Message-ID: References: <9dcccc674996fa3fdcb8858e3609437e66ce82ac.1663735439.git.yi1.li@intel.com> In-Reply-To: Accept-Language: zh-CN, 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: SJ1PR11MB6227:EE_|SN7PR11MB6775:EE_ x-ms-office365-filtering-correlation-id: 236e43b2-7b18-4c94-94b9-08da9d0fed86 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: yxLPjksVOjVxrY4RAMCtwRBaa9jR69HcdanBtU7CLsYOUQPwYTwrWbBVpPS+B43/Gy3cmNOZfJo99qrxG3KPmKlFJDkSRTalQqfYvXWMVPbSFQH9/LTnBF0Wo3bWF0suaJD4/fnX+N+Z1llhZFIszjzShhSQ35G4kx1Nb/xvVy6fsV9+quTNsM5xACPo2iUcFH0yAPEMh5MbLHAt12tDpRUz0H9c15xk5rR8k1SMZcCMMgI30a3JPpr0mNnyqjIRrjT64dcJZsaHZYtALu2kf123n2JcdJUUYgdfNexq95rtokRse7g33OPiEyc+eBaBT4FROrQUPvfxqWs3cQybCffuGBfdqnK4vGZwe8AxOAtVnK39H593eo6kLiZWQwgjINz5iNt9QU1oEW3xecpJtzCnetYQuPv3myQiieahEw/le3VNYaI0z5dpRJ2HS9ioeW0EGvJ5ymPopUkpGFQw3583o0bf1D3RJRJ0OnuBFnrAta5uD5w//xM8J0j47zt4bzL0DTMH7m2F/xs6aaJmf6CM37iIJKfZ3vCVrkpYHVQMAVnqMBrgzIdov93UbSSgZJZbx/LefgaK+nTcYEgz07dlXXkpQSym0MSBMUgDa4lgmuSmejMgp7uiz0MUpEz64HRzSrhp7GSYk0RmcwAhNYkQEhgJz1oyAza2Y8mcnFta0JNa4hZMtXFK4qiKgH6T0NLYzq/Ej1PTzpauij0oQ3D4jRxAYYdQRRURIz1B7ch8WSoEjpHNUos6r8jTN7ud1btg3UefrrH3sDVJhiXiCL/so0zFfpPJLiW6riceTrWnOZrNDXwUtbebZmdQP4zQ7WAkExSrk4StLzcPKdZClA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ1PR11MB6227.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(39860400002)(396003)(366004)(136003)(346002)(376002)(451199015)(4326008)(83380400001)(33656002)(186003)(82960400001)(6506007)(38100700002)(5660300002)(41300700001)(26005)(53546011)(966005)(9686003)(122000001)(8936002)(30864003)(55016003)(478600001)(52536014)(107886003)(38070700005)(8676002)(66946007)(76116006)(71200400001)(66556008)(86362001)(66446008)(7696005)(64756008)(316002)(66476007)(54906003)(110136005)(2906002)(19627235002)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RmtldVNHU3htUXpRYVJvTkd0cXR5dEFFZkh2ajhqckVZVVFvbUxlRkc5TExo?= =?utf-8?B?OHVUOWc3WHBsZUFPODNRYmlneXhDNjRYRFRxL1F1M29OYjI0OGtSekViZUt0?= =?utf-8?B?c0VvY0I3YTRqMlJIbGtSWWdjWm56WThVMzNuNEtENnV2VWdCbzBGcHZLNEhv?= =?utf-8?B?TWtDdTkxV0pmeVdxdnNHWW8rUmFzWHN3Ky9YWFZRK1RtdlE0WU1ZeGlRV0tp?= =?utf-8?B?T1pKa0ptUEJqUDh4R3hFdXdXNkZ0WWVNaDZCdThHN2tURXl5N0NWMUpWZksr?= =?utf-8?B?OUVVSTR6c0d0U1drc1V2N2ZwOVYvT3JnYXhRbVlYOTByaE9WanVaTzkrS0Zx?= =?utf-8?B?YVpoaDF4MVFENlF0S2VTN29BRmF0Nm9nVnpwRnU0YWY2MUZzNEhMcE5QRGRP?= =?utf-8?B?d21ZK3lXak9HUUg3L0FaTHUvMGVpcEZJbG1SY2lRMFlyYTFmOG9RVHlYdEZL?= =?utf-8?B?M3E1aWNJWDJvT04zb3FSNlozVzBvS0hyS3hPQjc5OEJtUGdyb3FXeEpXZ0l1?= =?utf-8?B?UUhRZmNpYmQrdE9pYzB4RGpHbmRxTUdNWWlhVkQwMC85Z1lrVTVKa1kvelV1?= =?utf-8?B?dWRpWGF5bnlraHBMeHNuMjVKYXZxbVBmeGxIWGpsdFZSOEthYVE0d0VNR2k0?= =?utf-8?B?Q3Y4aWZJVjNIbGtmYnpGTjBHQjUza3NtZnRtN041R0wrcVRYRzJJUXV6cTlC?= =?utf-8?B?VjEvU21heUVCMzBRd1lVWE9nMFQvdEFxd0FEWndFU2dCOFNUTVVUak5uL0pw?= =?utf-8?B?RkF2VUNoVGtPWVFDSVh5YktnMmhYTDRmcGlnWHc4Q0g0bmJmbDVSb0RPV2lY?= =?utf-8?B?akZlWnd6RCtESHR3MjU5NVBWV3pCblpEdElNSGRIQk1PeFJwQXczTWJ2VUVM?= =?utf-8?B?YmduN1JGTTFtYkgyR1B0R2R3b2FMWjcvcGh0cTltelM0Vjd6c05BV1pETUtP?= =?utf-8?B?ODFheWcvSHpKazlGU2U0TXVHZmFnQTF0T0tSbllIUmNGb0thVCthUmhnNTM4?= =?utf-8?B?WjF4SDZ3Y3VaSEhDK1lFR00ybElnc0gyaVBBMDlzaVNPeXdxR01MOWhveENa?= =?utf-8?B?SEVYQWdlUVZhWkVpc1ZoN3JHSkdmTXQ1ell0YjVPVTRUWk12ZnJtWG9QbWND?= =?utf-8?B?ZDF5UkxueFd2Z29lU2lVZGtrZ2hBL3Vjc2tGZm1VLytDVE9RZEJzR2dWOVMw?= =?utf-8?B?dEs3SmJ6dTFWNjdXOUd5ZHpGSG1sYm0yWXg4c2ROMXd5RnNXMlcweGRlaUFP?= =?utf-8?B?M2VvM2ZwZnJqdEVrNWZjV3ErQWZ3MnI2WEJQeCtpWmtpcXV6QUlZZHkyeXF0?= =?utf-8?B?ZDgrQWRYTTIwZlBkU1R5NmFVeWEvVVV1SkFXL09RTjlEWFVXVVF1c0RlWlNV?= =?utf-8?B?aERYYUhTWktDcFlEdHpQNHpmSDZWV3o4R2pFcGtlVWVUeGM4akdZUWYxME9k?= =?utf-8?B?c1pOL2JyT0lZSzJoSWF5YnBQVnVkREl5TGhoZklBQW9ndFBmdWtzMzd5dTZC?= =?utf-8?B?eE9sTzVubmVBcVViOFcyaEVuZWRCMVY5enQxQk45cmlKMDlZQTMyWXFsNFZ4?= =?utf-8?B?VUlOU25YMk0reHdxaWlURDB1Q1NybUJJdFNsMVdjSnpMaFg0UjYvb2lvZjV3?= =?utf-8?B?a2lmZVZraDJ4by9CUFpnRUpKRE8ySWZlK04zeTJvUXRIa01Tc21QWitvMFUw?= =?utf-8?B?a1NzQndDY0tJYWlvV3R5c0JGeCtjanpxa0dkWG9lNlAxQUlUWXhseDV5clQ5?= =?utf-8?B?ellGZUU2cG13c0NTRDlIb3VxbmFWS0lmSkcyTHBMOTFHb1Y5ZUEra1o0NDhl?= =?utf-8?B?dUg2cWk4MGFDeXpBemNWTTZlbllScnpTWXN0R1lUUVJqK1dRSitJdElOTHNR?= =?utf-8?B?YjFqa1RTMHNxZXlpckc3REUwYUNNUGtqZ1ZLODEyUmxlSDh3ajd5Q3dScDdx?= =?utf-8?B?UHFsZzdwc0hNUEl1MlJVZ1JnVXBHMEhPUjY1aUtBRFNCNkd0Q1h5R3RDdEk5?= =?utf-8?B?K3hXMTYxblFCWFdYYmEvdEJMNmVxUDU4MVR5M2VCL2V4cHNUVDdwYmFNV1FC?= =?utf-8?B?eUJNUHV0UlR6dTJTWUNXc1JyQmYveHc3UmZuUW1VSFBZQmpEa3Y2RGhNTEdk?= =?utf-8?Q?iKxI=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ1PR11MB6227.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 236e43b2-7b18-4c94-94b9-08da9d0fed86 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Sep 2022 03:01:36.0811 (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: 1SaAG88wQX+mNG3lcDgZM8GC1gZXLF/f+jBh1CiMuv2anjGcbtHT6TLfmI1HFUYBcknmQybX1iCWKe+b0h5RPQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR11MB6775 Return-Path: yi1.li@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTWlrZSwNCg0KMS4gWWVzLCBpdCBtYXRjaGVzLg0KQnkgSW50ZWwgc2lkZSwgMTAwK2tiKDIw JSspIEZWIHNpemUgaW5jcmVhc2Ugd2lsbCBiZSBhIGJpZyBjb25jZXJuLCBwbGVhc2UgcmVmZXIg dG8gYW5vdGhlciBpbnRlcm5hbCBlbWFpbC4NCg0KMi4gQWRkaXRpb25hbCBzaXplIGlzIGNvbWlu ZyBmcm9tIG1vZHVsZXMgbWF5IGNvbnN1bWVkIEVDIEFQSXMsIGVnLiBUTFMgUEVNIFg1MDkgIC4u Lg0KDQpJZiB3ZSBhZGRlZCBFQyBzb3VyY2UgdG8gT3BlbnNzbExpYi5pbmYgYW5kIGRpc2FibGVk IG1hY3JvIE9QRU5TU0xfTk9fRUMsIHRob3NlIG1vZHVsZXMgd2lsbCBsaW5rIEVDIEFQSXMgYW5k IGluY3JlYXNlIGJpbmFyeSBzaXplLA0KVGhpcyBhbiBleGFtcGxlIGZyb20geDUwOS94X3B1Ymtl eS5jICwgb3RoZXIgbW9kdWxlcyBpcyBzaW1pbGFyOg0KI2lmbmRlZiBPUEVOU1NMX05PX0VDDQpF Q19LRVkgKmQyaV9FQ19QVUJLRVkoRUNfS0VZICoqYSwgY29uc3QgdW5zaWduZWQgY2hhciAqKnBw LCBsb25nIGxlbmd0aCkNCnsNCiAgICBFVlBfUEtFWSAqcGtleTsNCiAgICBFQ19LRVkgKmtleSA9 IE5VTEw7DQogICAgLy8uLi4uIGNhbGwgRUMgZnVuY3Rpb25zDQp9DQojZW5kaWYNCg0KSWYgd2Ug YWRkZWQgRUMgc291cmNlIHRvIE9wZW5zc2xMaWIuaW5mIGFuZCBlbmFibGUgbWFjcm8gT1BFTlNT TF9OT19FQywgRUMgbW9kdWxlIHdpbGwgdGhyb3cgYnVpbGQgZXJyb3IsDQpTaW5jZSBzb21lIEVD IGludGVybmFsIEFQSXMgb3Igc3RydWN0cyBoYXZlIGJlZW4gZGlzYWJsZWQgYnkgT1BFTlNTTF9O T19FQyBidXQgIG5vdCBhbm90aGVyLg0KVGhpcyBhbiBleGFtcGxlIGZyb20gZWMvZWNfbG9jYWwu aCAsIG90aGVyIGVycm9yIGlzIHNpbWlsYXI6DQoNCiNpZm5kZWYgT1BFTlNTTF9OT19FQw0KdHlw ZWRlZiBzdHJ1Y3QgZWNfZ3JvdXBfc3QgRUNfR1JPVVA7DQp0eXBlZGVmIHN0cnVjdCBlY19wb2lu dF9zdCBFQ19QT0lOVDsNCiNlbmRpZg0KDQovLyBidXQgdGhpcyBmdW5jdGlvbiBub3QgYmVlbiBl bmNsb3NlZCBieSBPUEVOU1NMX05PX0VDLCBhbmQgd2lsbCB0aHJvdyBidWlsZCBlcnJvcg0KICAg IGludCAoKnBvaW50X3NldF9KcHJvamVjdGl2ZV9jb29yZGluYXRlc19HRnApIChjb25zdCBFQ19H Uk9VUCAqLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBFQ19QT0lOVCAqLCBjb25zdCBCSUdOVU0gKngsDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJJR05VTSAqeSwNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQklHTlVNICp6LCBCTl9D VFggKik7DQoNClRvIGF2b2lkIHRoaXMgYW5ub3lpbmcgb3BlbnNzbCBlcnJvciwgd2UgaW50cm9k dWNlZCBjb25kaXRpb25hbCBFQy4NCg0KVGhhbmtzLA0KWWkNCg0KLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCkZyb206IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVs LmNvbT4gDQpTZW50OiBGcmlkYXksIFNlcHRlbWJlciAyMywgMjAyMiA2OjQ3IEFNDQpUbzogTGks IFlpMSA8eWkxLmxpQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBLaW5uZXksIE1p Y2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQpDYzogWWFvLCBKaWV3ZW4gPGpp ZXdlbi55YW9AaW50ZWwuY29tPjsgV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+ OyBMdSwgWGlhb3l1MSA8eGlhb3l1MS5sdUBpbnRlbC5jb20+OyBKaWFuZywgR3VvbWluIDxndW9t aW4uamlhbmdAaW50ZWwuY29tPg0KU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjIg MS8zXSBDcnlwdG9Qa2c6IEFkZCBFQyBzdXBwb3J0DQoNCkhpIFlpLA0KDQpJIGFncmVlIEVDIGlz IGFuIGltcG9ydGFudCBmZWF0dXJlLg0KDQpJIGRpZCBzb21lIGFuYWx5c2lzIG9mIHRoZSBzaXpl IGltcGFjdCB0byB0aGUgQ3J5cHRvUGtnIG1vZHVsZXMgb24gY3VycmVudCB0cnVuaw0Kd2l0aCBF QyBvbiBhbmQgb2ZmLiBVbmNvbXByZXNzZWQgc2l6ZSBpcyBpbXBvcnRhbnQgZm9yIFBFSSBQaGFz ZS4gIEZvciBEWEUgYW5kDQpTTU0gcGhhc2UsIHRoZSBDcnlwdG8gc2VydmljZXMgY2FuIGFsd2F5 cyBiZSBjb21wcmVzc2VkLiAgRnJvbSB0aGUgdGFibGUgYmVsb3csDQpidWlsZGluZyBhbGwgdGhl IEVDIHNlcnZpY2VzIGluIHRoZSBPcGVuc3NsTGliIGhhcyBubyBzaXplIGltcGFjdCB0byB0aGUg Tk9ORSANCnByb2ZpbGUgYW5kIHRoZSBNSU5fUEVJIHByb2ZpbGUuICBJdCBoYXMgfjEwNSBLQiBp bXBhY3QgdG8gY29tcHJlc3NlZCBEWEUvU01NIA0KdXNhZ2VzIHRoYXQgbWF5IHVzZSB0aGUgTUlO X0RYRV9NSU5fU01NIG9yIEFMTCBwcm9maWxlcy4NCg0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBVbmNvbXByZXNzZWQgICAgICBMWk1BIENvbXByZXNzZWQNCkNQVSAgIENSWVBU T19TRVJWSUNFUyAgICBNb2R1bGUgIEVDPUZBTFNFICBFQz1UUlVFICBFQz1GQUxTRSAgRUM9VFJV RSAgSW5jcmVhc2UNCj09PT0gID09PT09PT09PT09PT09PSAgPT09PT09PT0gID09PT09PT09ICA9 PT09PT09ICA9PT09PT09PSAgPT09PT09PSAgPT09PT09PT0NCklBMzIgIE5PTkUgICAgICAgICAg ICAgQ3J5cHRvUGVpICAgIDIxNTM2ICAgIDIxNTY4ICAgICAgICAgICAgICAgICAgICAgICAgIDAg S0INCklBMzIgIE5PTkUgICAgICAgICAgICAgQ3J5cHRvRHhlICAgIDIxNjMyICAgIDIxNjk2ICAg ICAgICAgICAgICAgICAgICAgICAgIDAgS0INCklBMzIgIE5PTkUgICAgICAgICAgICAgQ3J5cHRv U21tICAgIDIyOTc2ICAgIDIzMDcyICAgICAgICAgICAgICAgICAgICAgICAgIDAgS0INCklBMzIg IE1JTl9QRUkgICAgICAgICAgQ3J5cHRvUGVpICAgMjQ4OTkyICAgMjQ5MTIwICAgICAgICAgICAg ICAgICAgICAgICAgIDAgS0INCklBMzIgIE1JTl9EWEVfTUlOX1NNTSAgQ3J5cHRvRHhlICAgNjM2 NjcyICAgODI5NTY4ICAgIDI4ODUyMCAgIDQwMTAzNCAgICAxMTMgS0INCklBMzIgIE1JTl9EWEVf TUlOX1NNTSAgQ3J5cHRvU21tICAgNDI2MDQ4ICAgNjAxNDcyICAgIDE5MTUxNyAgIDI5NjAyMiAg ICAxMDUgS0INCklBMzIgIEFMTCAgICAgICAgICAgICAgQ3J5cHRvUGVpICAgNDIzODQwICAgNTk4 OTc2ICAgIDE4OTA0NyAgIDI5Mzc1OSAgICAxMDQgS0INCklBMzIgIEFMTCAgICAgICAgICAgICAg Q3J5cHRvRHhlICAgNjQ1MjgwICAgODM4MTQ0ICAgIDI5Mjk1NSAgIDQwNTI3NyAgICAxMTMgS0IN CklBMzIgIEFMTCAgICAgICAgICAgICAgQ3J5cHRvU21tICAgNDQxODg4ICAgNjE3MTg0ICAgIDE5 ODc3OSAgIDMwMzYyOCAgICAxMDUgS0INClg2NCAgIE5PTkUgICAgICAgICAgICAgQ3J5cHRvUGVp ICAgIDI5NjMyICAgIDI5NjY0ICAgICAgICAgICAgICAgICAgICAgICAgIDAgS0INClg2NCAgIE5P TkUgICAgICAgICAgICAgQ3J5cHRvRHhlICAgIDI5NzkyICAgIDI5NzkyICAgICAgICAgICAgICAg ICAgICAgICAgIDAgS0INClg2NCAgIE5PTkUgICAgICAgICAgICAgQ3J5cHRvU21tICAgIDMxMjk2 ICAgIDMxMjk2ICAgICAgICAgICAgICAgICAgICAgICAgIDAgS0INClg2NCAgIE1JTl9QRUkgICAg ICAgICAgQ3J5cHRvUGVpICAgMzEwNzg0ICAgMzEwODQ4ICAgICAgICAgICAgICAgICAgICAgICAg IDAgS0INClg2NCAgIE1JTl9EWEVfTUlOX1NNTSAgQ3J5cHRvRHhlICAgODA0Mjg4ICAxMDE2MjU2 ICAgIDMxMTQzNiAgIDQyNjU5NiAgICAxMTUgS0INClg2NCAgIE1JTl9EWEVfTUlOX1NNTSAgQ3J5 cHRvU21tICAgNTQzNzc2ICAgNzMzOTIwICAgIDIwNDQ4MyAgIDMxMDc3NSAgICAxMDYgS0INClg2 NCAgIEFMTCAgICAgICAgICAgICAgQ3J5cHRvUGVpICAgNTQwMzg0ICAgNzMwMjQwICAgIDIwMjQ5 NCAgIDMwODQ2NyAgICAxMDYgS0INClg2NCAgIEFMTCAgICAgICAgICAgICAgQ3J5cHRvRHhlICAg ODE1MzkyICAxMDI3Mjk2ICAgIDMxNjIyOCAgIDQzMTMyMSAgICAxMTUgS0INClg2NCAgIEFMTCAg ICAgICAgICAgICAgQ3J5cHRvU21tICAgNTYzNjQ4ICAgNzUzNjk2ICAgIDIxMzQ4OCAgIDMxOTY0 NCAgICAxMDYgS0INCg0KTk9URTogRXZlbiBpZiBtdWx0aXBsZSBtb2R1bGVzIGluIGFuIEZWIHVz ZSBzdGF0aWMgbGlua2luZyBvZiBDcnlwdG8gbGlicywgaWYgdGhlDQogICAgICBlbnRpcmUgRlYg aXMgY29tcHJlc3NlZCwgdGhlIHRvdGFsIHNpemUgaW1wYWN0IGlzIHR5cGljYWxseSB0aGUgc2l6 ZSBvZiBhDQogICAgICBzaW5nbGUgaW5zdGFuY2Ugb2YgYSBjb21wcmVzc2VkIENyeXB0b0xpYi4g IFRoZSBzaXplcyBvZiB0aGUgQ3J5cHRvKiBtb2R1bGVzDQogICAgICBpbiB0aGUgdGFibGUgYWJv dmUgc2hvdWxkIGJlIGEgY2xvc2UgYXBwcm94aW1hdGlvbiBvZiB0aGUgc2l6ZSBpbXBhY3QgdG8g YQ0KICAgICAgc2luZ2xlIEZWLg0KDQpEb2VzIHRoaXMgbWF0Y2ggeW91ciBwcmV2aW91cyBzaXpl IGFuYWx5c2lzPw0KDQpUaGUgY3JpdGljYWwgaXNzdWUgdG8gZXZhbHVhdGUgaGVyZSBpcyB3aHkg YWRkaW5nIHRoZSBFQyBzb3VyY2VzIHRvIE9wZW5zbGxMaWIuaW5mDQpjYXVzZXMgdGhlIG1vZHVs ZXMgdGhhdCBkbyBub3QgdXNlIGFueSBFQyBzZXJ2aWNlcyB0byBncm93IGJ5IH4xMDVLQi4gIEhh cyBhbnkNCmRldGFpbGVkIGFuYWx5c2lzIG9mIHRoZSBmaW5hbCBsaW5rZWQgaW1hZ2VzIGJlZW4g cGVyZm9ybWVkIHRvIHNlZSB3aGVyZSB0aGlzIA0KYWRkaXRpb25hbCBzaXplIGlzIGNvbWluZyBm cm9tPw0KDQpUaGFua3MsDQoNCk1pa2UNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiBGcm9tOiBMaSwgWWkxIDx5aTEubGlAaW50ZWwuY29tPg0KPiBTZW50OiBUaHVyc2RheSwgU2Vw dGVtYmVyIDIyLCAyMDIyIDU6NTQgQU0NCj4gVG86IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVs LmQua2lubmV5QGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBLaXNob3JlLCBTaGVs bHkgPHNoZWxseS5raXNob3JlQGludGVsLmNvbT4NCj4gQ2M6IFlhbywgSmlld2VuIDxqaWV3ZW4u eWFvQGludGVsLmNvbT47IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgTHUs IFhpYW95dTEgPHhpYW95dTEubHVAaW50ZWwuY29tPjsgSmlhbmcsDQo+IEd1b21pbiA8Z3VvbWlu LmppYW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjIg MS8zXSBDcnlwdG9Qa2c6IEFkZCBFQyBzdXBwb3J0DQo+IA0KPiBIaSBNaWtlLA0KPiBJIGhhdmUg ZGlkIHNvbWUgUE9DIHRoYXQgc2VlbXMgZXhpc3RlZCBzdHJ1Y3R1cmVkIFBDRCBpcyBoYXJkIHRv IGNvbnRyb2wgYmluYXJ5IHNpemUsDQo+IEhlcmUgaXMgdGhlIHByZXZpb3VzIGRpc2N1c3Npb24g Zm9yIHJlZmVyZW5jZS4NCj4gaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVn LmNnaT9pZD0zNjc5DQo+IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC90b3BpYy84NjI1 NzgxMCM4MTgxNA0KPiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dp P2lkPTE0NDYNCj4gDQo+IEFueXdheSBFQyBpcyBhbiBpbXBvcnRhbnQgZmVhdHVyZSB3aGljaCBj b25zdW1lZCBieSB2YXJ5IG1vZGVybiBzZWN1cml0eSBmZWF0dXJlcyBzdWNoIFdQQTMgLCBTUERN LCBUTFMxLjMgZXRjLg0KPiBIb3BlIGl0IGNhbiBiZSBhZGRlZCB0byBlZGsyLCBhbmQgSSBhbSBn bGFkIHRvIHRha2UgdGhlIGNvZGUgYW5kIHRlc3Qgd29yayBpZiB0aGVyZSBhcmUgb3RoZXIgd2F5 cyB0byBjb250cm9sIHRoZSBzaXplLg0KPiANCj4gVGhhbmtzLA0KPiBZaQ0KPiANCj4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwu ZC5raW5uZXlAaW50ZWwuY29tPg0KPiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDIyLCAyMDIy IDExOjU2IEFNDQo+IFRvOiBMaSwgWWkxIDx5aTEubGlAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5n cm91cHMuaW87IEtpc2hvcmUsIFNoZWxseSA8c2hlbGx5Lmtpc2hvcmVAaW50ZWwuY29tPg0KPiBD YzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgV2FuZywgSmlhbiBKIDxqaWFu Lmoud2FuZ0BpbnRlbC5jb20+OyBMdSwgWGlhb3l1MSA8eGlhb3l1MS5sdUBpbnRlbC5jb20+OyBK aWFuZywNCj4gR3VvbWluIDxndW9taW4uamlhbmdAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSRTog W2VkazItZGV2ZWxdIFtQQVRDSCBWMiAxLzNdIENyeXB0b1BrZzogQWRkIEVDIHN1cHBvcnQNCj4g DQo+IFRoYXQgY2hhbmdlIHRvIE9wZW5zc2xMaWIuaW5mIHNob3VsZCBub3QgaGF2ZSBiZWVuIGRv bmUgZWl0aGVyLg0KPiANCj4gTG9va3MgbGlrZSB0aGlzIEVDIGZlYXR1cmUgbmVlZHMgbW9yZSBl dmFsdWF0aW9uIHRvIGZpdCBpbnRvIHRoZQ0KPiBzdHJ1Y3R1cmVkIFBDRCBjb250cm9sIG9mIHRo ZSBsaWIgc2l6ZXMuDQo+IA0KPiBNaWtlDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+ID4gRnJvbTogTGksIFlpMSA8eWkxLmxpQGludGVsLmNvbT4NCj4gPiBTZW50OiBXZWRu ZXNkYXksIFNlcHRlbWJlciAyMSwgMjAyMiA3OjE2IFBNDQo+ID4gVG86IEtpbm5leSwgTWljaGFl bCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ ID4gQ2M6IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFdhbmcsIEppYW4gSiA8 amlhbi5qLndhbmdAaW50ZWwuY29tPjsgTHUsIFhpYW95dTEgPHhpYW95dTEubHVAaW50ZWwuY29t PjsgSmlhbmcsDQo+ID4gR3VvbWluIDxndW9taW4uamlhbmdAaW50ZWwuY29tPg0KPiA+IFN1Ympl Y3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIIFYyIDEvM10gQ3J5cHRvUGtnOiBBZGQgRUMgc3Vw cG9ydA0KPiA+DQo+ID4gSGkgTWlrZSwNCj4gPiBUaGFua3MgZm9yIHJldmlldy4NCj4gPg0KPiA+ IEV2ZW4gUENEX0NSWVBUT19TRVJWSUNFX0ZBTUlMWV9FTkFCTEUgaXMgc2V0IHRvIDAsIENyeXB0 b0VjLmMgd2lsbCBhbHNvIGJlIGNvbXBpbGVkIGFuZCB0aHJvdyBidWlsZCBlcnJvcjoNCj4gPg0K PiA+IGQ6XHdvcmtzcGFjZVx0aWFub2NvcmVcZWRrMlxDcnlwdG9Qa2dcTGlicmFyeVxCYXNlQ3J5 cHRMaWJcUGtcQ3J5cHRFYy5jKDc3KTogZXJyb3IgQzIyMjA6IHRoZSBmb2xsb3dpbmcgd2Fybmlu ZyBpcyB0cmVhdGVkDQo+IGFzDQo+ID4gYW4gZXJyb3INCj4gPiAgICAgICAgIDEgZmlsZShzKSBj b3BpZWQuDQo+ID4gZDpcd29ya3NwYWNlXHRpYW5vY29yZVxlZGsyXENyeXB0b1BrZ1xMaWJyYXJ5 XEJhc2VDcnlwdExpYlxQa1xDcnlwdEVjLmMoNzcpOiB3YXJuaW5nIEM0MDEzOiAnRUNfR1JPVVBf bmV3X2J5X2N1cnZlX25hbWUnDQo+ID4gdW5kZWZpbmVkOyBhc3N1bWluZyBleHRlcm4gcmV0dXJu aW5nIGludA0KPiA+IGQ6XHdvcmtzcGFjZVx0aWFub2NvcmVcZWRrMlxDcnlwdG9Qa2dcTGlicmFy eVxCYXNlQ3J5cHRMaWJcUGtcQ3J5cHRFYy5jKDc3KTogd2FybmluZyBDNDA0NzogJ3JldHVybic6 ICd2b2lkIConIGRpZmZlcnMgaW4NCj4gPiBsZXZlbHMgb2YgaW5kaXJlY3Rpb24gZnJvbSAnaW50 Jw0KPiA+IGQ6XHdvcmtzcGFjZVx0aWFub2NvcmVcZWRrMlxDcnlwdG9Qa2dcTGlicmFyeVxCYXNl Q3J5cHRMaWJcUGtcQ3J5cHRFYy5jKDEwNSk6IHdhcm5pbmcgQzQwMTM6ICdFQ19HUk9VUF9nZXRf Y3VydmUnIHVuZGVmaW5lZDsNCj4gPiBhc3N1bWluZyBleHRlcm4gcmV0dXJuaW5nIGludA0KPiA+ DQo+ID4gSSB0aGluayB0aGUgcm9vdCBjYXVzZSBpcyB0aGF0IHdlIGhhdmUgZW5hYmxlZCBjb25k aXRpb25hbCBlYyBpbiBPcGVuc3NsTGliLmluZiBiZWZvcmUgYnkgUGNkT3BlbnNzbEVjRW5hYmxl ZCwNCj4gPg0KPiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvYmxvYi8yYzE3ZDY3 NmU0MDJkNzVhM2E2NzQ0OTkzNDJmN2RkYWNjZjM4N2JkL0NyeXB0b1BrZy9MaWJyYXJ5L09wZW5z c2xMaWIvT3BlbnNzbExpYi5pbmYjTDINCj4gPiAwMi1MMjM4DQo+ID4gIGlmIFBjZE9wZW5zc2xF Y0VuYWJsZWQgbm90IHRydWUsIGFsbCBlYyBmaWxlcyB3aWxsIG5vdCBiZSBjb21waWxlZC4NCj4g PiBUaGlzIHdpbGwgc2F2ZSAyMDAra2IgbWVtb3J5IG9uIHBsYXRmb3JtcyB3aGljaCB1c2UgZHhl IGRyaXZlciBidXQgZG8gbm90IG5lZWQgZWMgZmVhdHVyZS4NCj4gPg0KPiA+IFNvIEkgYWRkIHRo aXMgUENEIHRvIEJhc2VDcnlwdExpYi5pbmYgYWxzbyB0byBhdm9pZCBidWlsZCBlcnJvciwgTm90 IHN1cmUgaWYgdGhlcmUgaXMgYW55IG90aGVyIHdheSwgb3RoZXIgYmV0dGVyIGlkZWFzIGFyZQ0K PiA+IHdlbGNvbWUuDQo+ID4NCj4gPiBUaGFua3MsDQo+ID4gWWkNCj4gPg0KPiA+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwu ZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgMjIsIDIw MjIgMTI6MjIgQU0NCj4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IExpLCBZaTEgPHlpMS5s aUBpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b20+DQo+ID4gQ2M6IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFdhbmcsIEpp YW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgTHUsIFhpYW95dTEgPHhpYW95dTEubHVAaW50 ZWwuY29tPjsgSmlhbmcsDQo+ID4gR3VvbWluIDxndW9taW4uamlhbmdAaW50ZWwuY29tPg0KPiA+ IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIIFYyIDEvM10gQ3J5cHRvUGtnOiBBZGQg RUMgc3VwcG9ydA0KPiA+DQo+ID4gQ29tbWVudHMgZW1iZWRkZWQgYmVsb3cuDQo+ID4NCj4gPiBN aWtlDQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiB5 aTEgbGkNCj4gPiA+IFNlbnQ6IFR1ZXNkYXksIFNlcHRlbWJlciAyMCwgMjAyMiA5OjU1IFBNDQo+ ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+IENjOiBMaSwgWWkxIDx5aTEubGlA aW50ZWwuY29tPjsgWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgV2FuZywgSmlh biBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBMdSwgWGlhb3l1MQ0KPiA+ID4gPHhpYW95dTEu bHVAaW50ZWwuY29tPjsgSmlhbmcsIEd1b21pbiA8Z3VvbWluLmppYW5nQGludGVsLmNvbT4NCj4g PiA+IFN1YmplY3Q6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjIgMS8zXSBDcnlwdG9Qa2c6IEFkZCBF QyBzdXBwb3J0DQo+ID4gPg0KPiA+ID4gUkVGOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5v cmcvc2hvd19idWcuY2dpP2lkPTM4MjgNCj4gPiA+DQo+ID4gPiBUaGlzIHBhdGNoIGlzIHVzZWQg dG8gYWRkIENyeXB0RWMgbGlicmFyeSwgd2hpY2ggaXMgd3JhcHBlZA0KPiA+ID4gb3ZlciBPcGVu U1NMLg0KPiA+ID4NCj4gPiA+IENjOiBKaWV3ZW4gWWFvIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4N Cj4gPiA+IENjOiBKaWFuIEogV2FuZyA8amlhbi5qLndhbmdAaW50ZWwuY29tPg0KPiA+ID4gQ2M6 IFhpYW95dSBMdSA8eGlhb3l1MS5sdUBpbnRlbC5jb20+DQo+ID4gPiBDYzogR3VvbWluIEppYW5n IDxndW9taW4uamlhbmdAaW50ZWwuY29tPg0KPiA+ID4NCj4gPiA+IFNpZ25lZC1vZmYtYnk6IFlp IExpIDx5aTEubGlAaW50ZWwuY29tPg0KPiA+ID4gLS0tDQo+ID4gPiAgQ3J5cHRvUGtnL0luY2x1 ZGUvTGlicmFyeS9CYXNlQ3J5cHRMaWIuaCAgICAgIHwgNDI0ICsrKysrKysrKysNCj4gPiA+ICAu Li4vTGlicmFyeS9CYXNlQ3J5cHRMaWIvQmFzZUNyeXB0TGliLmluZiAgICAgfCAgIDIgKw0KPiA+ ID4gIC4uLi9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9QZWlDcnlwdExpYi5pbmYgICAgICB8ICAgMSAr DQo+ID4gPiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0RWMuYyAgIHwg NzY1ICsrKysrKysrKysrKysrKysrKw0KPiA+ID4gIC4uLi9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Q ay9DcnlwdEVjTnVsbC5jICAgICB8IDQ5NiArKysrKysrKysrKysNCj4gPiA+ICAuLi4vTGlicmFy eS9CYXNlQ3J5cHRMaWIvU21tQ3J5cHRMaWIuaW5mICAgICAgfCAgIDEgKw0KPiA+ID4gIC4uLi9C YXNlQ3J5cHRMaWJOdWxsL0Jhc2VDcnlwdExpYk51bGwuaW5mICAgICB8ICAgMSArDQo+ID4gPiAg Li4uL0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9Qay9DcnlwdEVjTnVsbC5jIHwgNDk2ICsrKysr KysrKysrKw0KPiA+ID4gIDggZmlsZXMgY2hhbmdlZCwgMjE4NiBpbnNlcnRpb25zKCspDQo+ID4g PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9D cnlwdEVjLmMNCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQ3J5cHRvUGtnL0xpYnJhcnkvQmFz ZUNyeXB0TGliL1BrL0NyeXB0RWNOdWxsLmMNCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQ3J5 cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9Qay9DcnlwdEVjTnVsbC5jDQo+ID4gPg0K PiA+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9JbmNsdWRlL0xpYnJhcnkvQmFzZUNyeXB0TGli LmggYi9DcnlwdG9Qa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VDcnlwdExpYi5oDQo+ID4gPiBpbmRl eCBiMjUzOTIzZGQ4Li5kNzRmYzIxYzFlIDEwMDY0NA0KPiA+ID4gLS0tIGEvQ3J5cHRvUGtnL0lu Y2x1ZGUvTGlicmFyeS9CYXNlQ3J5cHRMaWIuaA0KPiA+ID4gKysrIGIvQ3J5cHRvUGtnL0luY2x1 ZGUvTGlicmFyeS9CYXNlQ3J5cHRMaWIuaA0KPiA+ID4gQEAgLTE0LDYgKzE0LDEzIEBAIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPg0KPiA+ID4gICNp bmNsdWRlIDxVZWZpL1VlZmlCYXNlVHlwZS5oPg0KPiA+ID4NCj4gPiA+ICsjZGVmaW5lIENSWVBU T19OSURfTlVMTCAgMHgwMDAwDQo+ID4gPiArDQo+ID4gPiArLy8gS2V5IEV4Y2hhbmdlDQo+ID4g PiArI2RlZmluZSBDUllQVE9fTklEX1NFQ1AyNTZSMSAgMHgwMjA0DQo+ID4gPiArI2RlZmluZSBD UllQVE9fTklEX1NFQ1AzODRSMSAgMHgwMjA1DQo+ID4gPiArI2RlZmluZSBDUllQVE9fTklEX1NF Q1A1MjFSMSAgMHgwMjA2DQo+ID4gPiArDQo+ID4gPiAgLy8vDQo+ID4gPiAgLy8vIE1ENSBkaWdl c3Qgc2l6ZSBpbiBieXRlcw0KPiA+ID4gIC8vLw0KPiA+ID4gQEAgLTI4NTAsNCArMjg1Nyw0MjEg QEAgQmlnTnVtQWRkTW9kICgNCj4gPiA+ICAgIE9VVCBWT0lEICAgICAgICpCblJlcw0KPiA+ID4g ICAgKTsNCj4gPiA+DQo+ID4gPiArLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ ID4gKy8vICAgIEJhc2ljIEVsbGlwdGljIEN1cnZlIFByaW1pdGl2ZXMNCj4gPiA+ICsvLyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBJ bml0aWFsaXplIG5ldyBvcGFxdWUgRWNHcm91cCBvYmplY3QuIFRoaXMgb2JqZWN0IHJlcHJlc2Vu dHMgYW4gRUMgY3VydmUgYW5kDQo+ID4gPiArICBhbmQgaXMgdXNlZCBmb3IgY2FsY3VsYXRpb24g d2l0aGluIHRoaXMgZ3JvdXAuIFRoaXMgb2JqZWN0IHNob3VsZCBiZSBmcmVlZA0KPiA+ID4gKyAg dXNpbmcgRWNHcm91cEZyZWUoKSBmdW5jdGlvbi4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtp bl0gIENyeXB0b05pZCAgIElkZW50aWZ5aW5nIG51bWJlciBmb3IgdGhlIEVDQyBjdXJ2ZSAoRGVm aW5lZCBpbg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZUNyeXB0TGliLmgp Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFY0dyb3VwIG9iamVjdCAgT24gc3VjY2Vzcy4N Cj4gPiA+ICsgIEByZXR2YWwgTlVMTCAgICAgICAgICAgIE9uIGZhaWx1cmUuDQo+ID4gPiArKiov DQo+ID4gPiArVk9JRCAqDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNHcm91cEluaXQgKA0KPiA+ ID4gKyAgSU4gVUlOVE4gIENyeXB0b05pZA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsv KioNCj4gPiA+ICsgIEdldCBFQyBjdXJ2ZSBwYXJhbWV0ZXJzLiBXaGlsZSBlbGxpcHRpYyBjdXJ2 ZSBlcXVhdGlvbiBpcyBZXjIgbW9kIFAgPSAoWF4zICsgQVggKyBCKSBNb2QgUC4NCj4gPiA+ICsg IFRoaXMgZnVuY3Rpb24gd2lsbCBzZXQgdGhlIHByb3ZpZGVkIEJpZyBOdW1iZXIgb2JqZWN0cyAg dG8gdGhlIGNvcnJlc3BvbmRpbmcNCj4gPiA+ICsgIHZhbHVlcy4gVGhlIGNhbGxlciBuZWVkcyB0 byBtYWtlIHN1cmUgYWxsIHRoZSAib3V0IiBCaWdOdW1iZXIgcGFyYW1ldGVycw0KPiA+ID4gKyAg YXJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAg RWNHcm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1bb3V0XSBCblByaW1l ICAgIEdyb3VwIHByaW1lIG51bWJlci4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuQSAgICAgICAg QSBjb2VmZmljaWVudC4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuQiAgICAgICAgQiBjb2VmZmlj aWVudC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAgQk4gY29udGV4dC4NCj4gPiA+ ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gKyAg QHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09M RUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNHcm91cEdldEN1cnZlICgNCj4gPiA+ICsgIElO IENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuUHJpbWUs DQo+ID4gPiArICBPVVQgVk9JRCAgICAgICAqQm5BLA0KPiA+ID4gKyAgT1VUIFZPSUQgICAgICAg KkJuQiwNCj4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gKyAgKTsNCj4gPiA+ ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEdldCBFQyBncm91cCBvcmRlci4NCj4gPiA+ICsgIFRo aXMgZnVuY3Rpb24gd2lsbCBzZXQgdGhlIHByb3ZpZGVkIEJpZyBOdW1iZXIgb2JqZWN0IHRvIHRo ZSBjb3JyZXNwb25kaW5nDQo+ID4gPiArICB2YWx1ZS4gVGhlIGNhbGxlciBuZWVkcyB0byBtYWtl IHN1cmUgdGhhdCB0aGUgIm91dCIgQmlnTnVtYmVyIHBhcmFtZXRlcg0KPiA+ID4gKyAgaXMgcHJv cGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3Vw ICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW291dF0gQm5PcmRlciAgIEdyb3Vw IHByaW1lIG51bWJlci4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBP biBzdWNjZXNzLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4g PiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNHcm91cEdl dE9yZGVyICgNCj4gPiA+ICsgIElOIFZPSUQgICAqRWNHcm91cCwNCj4gPiA+ICsgIE9VVCBWT0lE ICAqQm5PcmRlcg0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEZy ZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgRUMgZ3JvdXAgb2JqZWN0IHVzaW5nIEVjR3JvdXBJbml0 KCkuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3JvdXAgb2Jq ZWN0IHRvIGZyZWUuDQo+ID4gPiArKiovDQo+ID4gPiArVk9JRA0KPiA+ID4gK0VGSUFQSQ0KPiA+ ID4gK0VjR3JvdXBGcmVlICgNCj4gPiA+ICsgIElOIFZPSUQgICpFY0dyb3VwDQo+ID4gPiArICAp Ow0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgSW5pdGlhbGl6ZSBuZXcgb3BhcXVlIEVD IFBvaW50IG9iamVjdC4gVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhbiBFQyBwb2ludA0KPiA+ID4g KyAgd2l0aGluIHRoZSBnaXZlbiBFQyBncm91cCAoY3VydmUpLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHBhcmFtW2luXSAgRUMgR3JvdXAsIHByb3Blcmx5IGluaXRpYWxpemVkIHVzaW5nIEVjR3JvdXBJ bml0KCkuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVDIFBvaW50IG9iamVjdCAgT24gc3Vj Y2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwgTlVMTCAgICAgICAgICAgICBPbiBmYWlsdXJlLg0KPiA+ ID4gKyoqLw0KPiA+ID4gK1ZPSUQgKg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRJbml0 ICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwDQo+ID4gPiArICApOw0KPiA+ID4g Kw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBFQyBQb2lu dCBvYmplY3QgdXNpbmcgRWNQb2ludEluaXQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtp bl0gIEVjUG9pbnQgICBFQyBQb2ludCB0byBmcmVlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQ2xl YXIgICAgIFRSVUUgaWZmIHRoZSBtZW1vcnkgc2hvdWxkIGJlIGNsZWFyZWQuDQo+ID4gPiArKiov DQo+ID4gPiArVk9JRA0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnREZUluaXQgKA0KPiA+ ID4gKyAgSU4gVk9JRCAgICAgKkVjUG9pbnQsDQo+ID4gPiArICBJTiBCT09MRUFOICBDbGVhcg0K PiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEdldCBFQyBwb2ludCBh ZmZpbmUgKHgseSkgY29vcmRpbmF0ZXMuDQo+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0 IHRoZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdHMgdG8gdGhlIGNvcnJlc3BvbmRpbmcNCj4g PiA+ICsgIHZhbHVlcy4gVGhlIGNhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUgYWxsIHRoZSAib3V0 IiBCaWdOdW1iZXIgcGFyYW1ldGVycw0KPiA+ID4gKyAgYXJlIHByb3Blcmx5IGluaXRpYWxpemVk Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91cCBvYmpl Y3QuDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgIEVDIHBvaW50IG9iamVjdC4NCj4g PiA+ICsgIEBwYXJhbVtvdXRdIEJuWCAgICAgICAgWCBjb29yZGluYXRlLg0KPiA+ID4gKyAgQHBh cmFtW291dF0gQm5ZICAgICAgICBZIGNvb3JkaW5hdGUuDQo+ID4gPiArICBAcGFyYW1baW5dICBC bkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiAr Qk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRHZXRBZmZpbmVDb29yZGluYXRl cyAoDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIElOIENPTlNU IFZPSUQgICpFY1BvaW50LA0KPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuWCwNCj4gPiA+ICsg IE9VVCBWT0lEICAgICAgICpCblksDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4g PiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZXQgRUMgcG9pbnQgYWZm aW5lICh4LHkpIGNvb3JkaW5hdGVzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNH cm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAg IEVDIHBvaW50IG9iamVjdC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuWCAgICAgICAgWCBjb29y ZGluYXRlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5ZICAgICAgICBZIGNvb3JkaW5hdGUuDQo+ ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBC aWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAg ICAgT24gc3VjY2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2Uu DQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9p bnRTZXRBZmZpbmVDb29yZGluYXRlcyAoDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91 cCwNCj4gPiA+ICsgIElOIFZPSUQgICAgICAgICpFY1BvaW50LA0KPiA+ID4gKyAgSU4gQ09OU1Qg Vk9JRCAgKkJuWCwNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpCblksDQo+ID4gPiArICBJTiBW T0lEICAgICAgICAqQm5DdHgNCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4g PiArICBFQyBQb2ludCBhZGRpdGlvbi4gRWNQb2ludFJlc3VsdCA9IEVjUG9pbnRBICsgRWNQb2lu dEIuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgICAgICAgIEVDIGdy b3VwIG9iamVjdC4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIEVjUG9pbnRSZXN1bHQgICAgRUMgcG9p bnQgdG8gaG9sZCB0aGUgcmVzdWx0LiBUaGUgcG9pbnQgc2hvdWxkDQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gKyAg QHBhcmFtW2luXSAgRWNQb2ludEEgICAgICAgICBFQyBQb2ludC4NCj4gPiA+ICsgIEBwYXJhbVtp bl0gIEVjUG9pbnRCICAgICAgICAgRUMgUG9pbnQuDQo+ID4gPiArICBAcGFyYW1baW5dICBCbkN0 eCAgICAgICAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCku DQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4g PiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4g PiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRBZGQgKA0KPiA+ID4gKyAg SU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBPVVQgVk9JRCAgICAgICAqRWNQb2lu dFJlc3VsdCwNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50QSwNCj4gPiA+ICsgIElO IENPTlNUIFZPSUQgICpFY1BvaW50QiwNCj4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0K PiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFZhcmlhYmxlIEVDIHBv aW50IG11bHRpcGxpY2F0aW9uLiBFY1BvaW50UmVzdWx0ID0gRWNQb2ludCAqIEJuUFNjYWxhci4N Cj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgICAgICAgRUMgZ3JvdXAg b2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW291dF0gRWNQb2ludFJlc3VsdCAgICBFQyBwb2ludCB0 byBob2xkIHRoZSByZXN1bHQuIFRoZSBwb2ludCBzaG91bGQNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiArICBAcGFy YW1baW5dICBFY1BvaW50ICAgICAgICAgIEVDIFBvaW50Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAg Qm5QU2NhbGFyICAgICAgICBQIFNjYWxhci4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAg ICAgICAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4g PiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4g KyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtC T09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNQb2ludE11bCAoDQo+ID4gPiArICBJTiBD T05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpFY1BvaW50UmVz dWx0LA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiArICBJTiBDT05T VCBWT0lEICAqQm5QU2NhbGFyLA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4g PiArICApOw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgQ2FsY3VsYXRlIHRoZSBpbnZl cnNlIG9mIHRoZSBzdXBwbGllZCBFQyBwb2ludC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtp bl0gICAgIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW4sb3V0 XSBFY1BvaW50ICAgRUMgcG9pbnQgdG8gaW52ZXJ0Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgICAg Qm5DdHggICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiAr Qk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRJbnZlcnQgKA0KPiA+ID4gKyAg SU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBJTiBPVVQgVk9JRCAgICAqRWNQb2lu dCwNCj4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsN Cj4gPiA+ICsvKioNCj4gPiA+ICsgIENoZWNrIGlmIHRoZSBzdXBwbGllZCBwb2ludCBpcyBvbiBF QyBjdXJ2ZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91 cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgRUMgcG9pbnQgdG8gY2hl Y2suDQo+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3 aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAg ICAgICAgICBPbiBjdXJ2ZS4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndp c2UuDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0Vj UG9pbnRJc09uQ3VydmUgKA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4g PiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludCwNCj4gPiA+ICsgIElOIFZPSUQgICAgICAgICpC bkN0eA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIENoZWNrIGlm IHRoZSBzdXBwbGllZCBwb2ludCBpcyBhdCBpbmZpbml0eS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBw YXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW5d ICBFY1BvaW50ICAgRUMgcG9pbnQgdG8gY2hlY2suDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFs IFRSVUUgICAgICAgICAgQXQgaW5maW5pdHkuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAg ICAgT3RoZXJ3aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkN Cj4gPiA+ICtFY1BvaW50SXNBdEluZmluaXR5ICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpF Y0dyb3VwLA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQNCj4gPiA+ICsgICk7DQo+ ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBDaGVjayBpZiBFQyBwb2ludHMgYXJlIGVxdWFs Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVj dC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRBICBFQyBwb2ludCBBLg0KPiA+ID4gKyAg QHBhcmFtW2luXSAgRWNQb2ludEIgIEVDIHBvaW50IEIuDQo+ID4gPiArICBAcGFyYW1baW5dICBC bkN0eCAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4g PiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBBID09IEIuDQo+ID4gPiArICBA cmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xF QU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY1BvaW50RXF1YWwgKA0KPiA+ID4gKyAgSU4gQ09O U1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEEsDQo+ ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEIsDQo+ID4gPiArICBJTiBWT0lEICAgICAg ICAqQm5DdHgNCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZXQg RUMgcG9pbnQgY29tcHJlc3NlZCBjb29yZGluYXRlcy4gUG9pbnRzIGNhbiBiZSBkZXNjcmliZWQg aW4gdGVybXMgb2YNCj4gPiA+ICsgIHRoZWlyIGNvbXByZXNzZWQgY29vcmRpbmF0ZXMuIEZvciBh IHBvaW50ICh4LCB5KSwgZm9yIGFueSBnaXZlbiB2YWx1ZSBmb3IgeA0KPiA+ID4gKyAgc3VjaCB0 aGF0IHRoZSBwb2ludCBpcyBvbiB0aGUgY3VydmUgdGhlcmUgd2lsbCBvbmx5IGV2ZXIgYmUgdHdv IHBvc3NpYmxlDQo+ID4gPiArICB2YWx1ZXMgZm9yIHkuIFRoZXJlZm9yZSwgYSBwb2ludCBjYW4g YmUgc2V0IHVzaW5nIHRoaXMgZnVuY3Rpb24gd2hlcmUgQm5YIGlzDQo+ID4gPiArICB0aGUgeCBj b29yZGluYXRlIGFuZCBZQml0IGlzIGEgdmFsdWUgMCBvciAxIHRvIGlkZW50aWZ5IHdoaWNoIG9m IHRoZSB0d28NCj4gPiA+ICsgIHBvc3NpYmxlIHZhbHVlcyBmb3IgeSBzaG91bGQgYmUgdXNlZC4N Cj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2JqZWN0 Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBQb2ludC4NCj4gPiA+ICsgIEBw YXJhbVtpbl0gIEJuWCAgICAgICAgWCBjb29yZGluYXRlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAg WUJpdCAgICAgICAwIG9yIDEgdG8gaWRlbnRpZnkgd2hpY2ggWSB2YWx1ZSBpcyB1c2VkLg0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmln TnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAg IE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0K PiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY1BvaW50 U2V0Q29tcHJlc3NlZENvb3JkaW5hdGVzICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dy b3VwLA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkVjUG9pbnQsDQo+ID4gPiArICBJTiBDT05T VCBWT0lEICAqQm5YLA0KPiA+ID4gKyAgSU4gVUlOVDggICAgICAgWUJpdCwNCj4gPiA+ICsgIElO IFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvLyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPiArLy8gICAgRWxsaXB0aWMgQ3VydmUgRGlm ZmllIEhlbGxtYW4gUHJpbWl0aXZlcw0KPiA+ID4gKy8vID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEFsbG9jYXRlcyBhbmQgSW5pdGlh bGl6ZXMgb25lIEVsbGlwdGljIEN1cnZlIENvbnRleHQgZm9yIHN1YnNlcXVlbnQgdXNlDQo+ID4g PiArICB3aXRoIHRoZSBOSUQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBOaWQgY2lw aGVyIE5JRA0KPiA+ID4gKyAgQHJldHVybiAgICAgUG9pbnRlciB0byB0aGUgRWxsaXB0aWMgQ3Vy dmUgQ29udGV4dCB0aGF0IGhhcyBiZWVuIGluaXRpYWxpemVkLg0KPiA+ID4gKyAgICAgICAgICAg ICAgSWYgdGhlIGFsbG9jYXRpb25zIGZhaWxzLCBFY05ld0J5TmlkKCkgcmV0dXJucyBOVUxMLg0K PiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQgKg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjTmV3QnlO aWQgKA0KPiA+ID4gKyAgSU4gVUlOVE4gIE5pZA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ ICsvKioNCj4gPiA+ICsgIFJlbGVhc2UgdGhlIHNwZWNpZmllZCBFQyBjb250ZXh0Lg0KPiA+ID4g Kw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNDb250ZXh0ICBQb2ludGVyIHRvIHRoZSBFQyBjb250 ZXh0IHRvIGJlIHJlbGVhc2VkLg0KPiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklB UEkNCj4gPiA+ICtFY0ZyZWUgKA0KPiA+ID4gKyAgSU4gIFZPSUQgICpFY0NvbnRleHQNCj4gPiA+ ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBHZW5lcmF0ZXMgRUMga2V5IGFu ZCByZXR1cm5zIEVDIHB1YmxpYyBrZXkgKFgsIFkpLCBQbGVhc2Ugbm90ZSwgdGhpcyBmdW5jdGlv biB1c2VzDQo+ID4gPiArICBwc2V1ZG8gcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuIFRoZSBjYWxs ZXIgbXVzdCBtYWtlIHN1cmUgUmFuZG9tU2VlZCgpDQo+ID4gPiArICBmdW5jdGlvbiB3YXMgcHJv cGVybHkgY2FsbGVkIGJlZm9yZS4NCj4gPiA+ICsgIFRoZSBFYyBjb250ZXh0IHNob3VsZCBiZSBj b3JyZWN0bHkgaW5pdGlhbGl6ZWQgYnkgRWNOZXdCeU5pZC4NCj4gPiA+ICsgIFRoaXMgZnVuY3Rp b24gZ2VuZXJhdGVzIHJhbmRvbSBzZWNyZXQsIGFuZCBjb21wdXRlcyB0aGUgcHVibGljIGtleSAo WCwgWSksIHdoaWNoIGlzDQo+ID4gPiArICByZXR1cm5lZCB2aWEgcGFyYW1ldGVyIFB1YmxpYywg UHVibGljU2l6ZS4NCj4gPiA+ICsgIFggaXMgdGhlIGZpcnN0IGhhbGYgb2YgUHVibGljIHdpdGgg c2l6ZSBiZWluZyBQdWJsaWNTaXplIC8gMiwNCj4gPiA+ICsgIFkgaXMgdGhlIHNlY29uZCBoYWxm IG9mIFB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUHVibGljU2l6ZSAvIDIuDQo+ID4gPiArICBFQyBj b250ZXh0IGlzIHVwZGF0ZWQgYWNjb3JkaW5nbHkuDQo+ID4gPiArICBJZiB0aGUgUHVibGljIGJ1 ZmZlciBpcyB0b28gc21hbGwgdG8gaG9sZCB0aGUgcHVibGljIFgsIFksIEZBTFNFIGlzIHJldHVy bmVkIGFuZA0KPiA+ID4gKyAgUHVibGljU2l6ZSBpcyBzZXQgdG8gdGhlIHJlcXVpcmVkIGJ1ZmZl ciBzaXplIHRvIG9idGFpbiB0aGUgcHVibGljIFgsIFkuDQo+ID4gPiArICBGb3IgUC0yNTYsIHRo ZSBQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1ieXRlIGlzIFgsIFNlY29uZCAzMi1ieXRlIGlz IFkuDQo+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1i eXRlIGlzIFgsIFNlY29uZCA0OC1ieXRlIGlzIFkuDQo+ID4gPiArICBGb3IgUC01MjEsIHRoZSBQ dWJsaWNTaXplIGlzIDEzMi4gRmlyc3QgNjYtYnl0ZSBpcyBYLCBTZWNvbmQgNjYtYnl0ZSBpcyBZ Lg0KPiA+ID4gKyAgSWYgRWNDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ ID4gKyAgSWYgUHVibGljU2l6ZSBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ICsg IElmIFB1YmxpY1NpemUgaXMgbGFyZ2UgZW5vdWdoIGJ1dCBQdWJsaWMgaXMgTlVMTCwgdGhlbiBy ZXR1cm4gRkFMU0UuDQo+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEVjQ29udGV4dCAgICAgIFBv aW50ZXIgdG8gdGhlIEVDIGNvbnRleHQuDQo+ID4gPiArICBAcGFyYW1bb3V0XSAgICAgIFB1Ymxp Y0tleSAgICAgIFBvaW50ZXIgdG8gdCBidWZmZXIgdG8gcmVjZWl2ZSBnZW5lcmF0ZWQgcHVibGlj IFgsWS4NCj4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgUHVibGljS2V5U2l6ZSAgT24gaW5wdXQs IHRoZSBzaXplIG9mIFB1YmxpYyBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHNpemUgb2YgZGF0YSByZXR1cm5l ZCBpbiBQdWJsaWMgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgRUMg cHVibGljIFgsWSBnZW5lcmF0aW9uIHN1Y2NlZWRlZC4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0Ug IEVDIHB1YmxpYyBYLFkgZ2VuZXJhdGlvbiBmYWlsZWQuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNF ICBQdWJsaWNLZXlTaXplIGlzIG5vdCBsYXJnZSBlbm91Z2guDQo+ID4gPiArKiovDQo+ID4gPiAr Qk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjR2VuZXJhdGVLZXkgKA0KPiA+ID4gKyAg SU4gT1VUICBWT0lEICAgKkVjQ29udGV4dCwNCj4gPiA+ICsgIE9VVCAgICAgVUlOVDggICpQdWJs aWNLZXksDQo+ID4gPiArICBJTiBPVVQgIFVJTlROICAqUHVibGljS2V5U2l6ZQ0KPiA+ID4gKyAg KTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEdldHMgdGhlIHB1YmxpYyBrZXkgY29t cG9uZW50IGZyb20gdGhlIGVzdGFibGlzaGVkIEVDIGNvbnRleHQuDQo+ID4gPiArICBUaGUgRWMg Y29udGV4dCBzaG91bGQgYmUgY29ycmVjdGx5IGluaXRpYWxpemVkIGJ5IEVjTmV3QnlOaWQsIGFu ZCBzdWNjZXNzZnVsbHkNCj4gPiA+ICsgIGdlbmVyYXRlIGtleSBwYWlyIGZyb20gRWNHZW5lcmF0 ZUtleSgpLg0KPiA+ID4gKyAgRm9yIFAtMjU2LCB0aGUgUHVibGljU2l6ZSBpcyA2NC4gRmlyc3Qg MzItYnl0ZSBpcyBYLCBTZWNvbmQgMzItYnl0ZSBpcyBZLg0KPiA+ID4gKyAgRm9yIFAtMzg0LCB0 aGUgUHVibGljU2l6ZSBpcyA5Ni4gRmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNvbmQgNDgtYnl0ZSBp cyBZLg0KPiA+ID4gKyAgRm9yIFAtNTIxLCB0aGUgUHVibGljU2l6ZSBpcyAxMzIuIEZpcnN0IDY2 LWJ5dGUgaXMgWCwgU2Vjb25kIDY2LWJ5dGUgaXMgWS4NCj4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0 XSAgRWNDb250ZXh0ICAgICAgUG9pbnRlciB0byBFQyBjb250ZXh0IGJlaW5nIHNldC4NCj4gPiA+ ICsgIEBwYXJhbVtvdXRdICAgICAgUHVibGljS2V5ICAgICAgUG9pbnRlciB0byB0IGJ1ZmZlciB0 byByZWNlaXZlIGdlbmVyYXRlZCBwdWJsaWMgWCxZLg0KPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRd ICBQdWJsaWNLZXlTaXplICBPbiBpbnB1dCwgdGhlIHNpemUgb2YgUHVibGljIGJ1ZmZlciBpbiBi eXRlcy4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0 LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGluIFB1YmxpYyBidWZmZXIgaW4gYnl0ZXMuDQo+ ID4gPiArICBAcmV0dmFsICBUUlVFICAgRUMga2V5IGNvbXBvbmVudCB3YXMgcmV0cmlldmVkIHN1 Y2Nlc3NmdWxseS4NCj4gPiA+ICsgIEByZXR2YWwgIEZBTFNFICBJbnZhbGlkIEVDIGtleSBjb21w b25lbnQuDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4g K0VjR2V0UHViS2V5ICgNCj4gPiA+ICsgIElOIE9VVCAgVk9JRCAgICpFY0NvbnRleHQsDQo+ID4g PiArICBPVVQgICAgIFVJTlQ4ICAqUHVibGljS2V5LA0KPiA+ID4gKyAgSU4gT1VUICBVSU5UTiAg KlB1YmxpY0tleVNpemUNCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiAr ICBDb21wdXRlcyBleGNoYW5nZWQgY29tbW9uIGtleS4NCj4gPiA+ICsgIEdpdmVuIHBlZXIncyBw dWJsaWMga2V5IChYLCBZKSwgdGhpcyBmdW5jdGlvbiBjb21wdXRlcyB0aGUgZXhjaGFuZ2VkIGNv bW1vbiBrZXksDQo+ID4gPiArICBiYXNlZCBvbiBpdHMgb3duIGNvbnRleHQgaW5jbHVkaW5nIHZh bHVlIG9mIGN1cnZlIHBhcmFtZXRlciBhbmQgcmFuZG9tIHNlY3JldC4NCj4gPiA+ICsgIFggaXMg dGhlIGZpcnN0IGhhbGYgb2YgUGVlclB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUGVlclB1YmxpY1Np emUgLyAyLA0KPiA+ID4gKyAgWSBpcyB0aGUgc2Vjb25kIGhhbGYgb2YgUGVlclB1YmxpYyB3aXRo IHNpemUgYmVpbmcgUGVlclB1YmxpY1NpemUgLyAyLg0KPiA+ID4gKyAgSWYgRWNDb250ZXh0IGlz IE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgSWYgUGVlclB1YmxpYyBpcyBOVUxM LCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ICsgIElmIFBlZXJQdWJsaWNTaXplIGlzIDAsIHRo ZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgSWYgS2V5IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZB TFNFLg0KPiA+ID4gKyAgSWYgS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLCB0aGVuIHJldHVy biBGQUxTRS4NCj4gPiA+ICsgIEZvciBQLTI1NiwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDY0LiBG aXJzdCAzMi1ieXRlIGlzIFgsIFNlY29uZCAzMi1ieXRlIGlzIFkuDQo+ID4gPiArICBGb3IgUC0z ODQsIHRoZSBQZWVyUHVibGljU2l6ZSBpcyA5Ni4gRmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNvbmQg NDgtYnl0ZSBpcyBZLg0KPiA+ID4gKyAgRm9yIFAtNTIxLCB0aGUgUGVlclB1YmxpY1NpemUgaXMg MTMyLiBGaXJzdCA2Ni1ieXRlIGlzIFgsIFNlY29uZCA2Ni1ieXRlIGlzIFkuDQo+ID4gPiArICBA cGFyYW1baW4sIG91dF0gIEVjQ29udGV4dCAgICAgICAgICBQb2ludGVyIHRvIHRoZSBFQyBjb250 ZXh0Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgICBQZWVyUHVibGljICAgICAgICAgUG9pbnRl ciB0byB0aGUgcGVlcidzIHB1YmxpYyBYLFkuDQo+ID4gPiArICBAcGFyYW1baW5dICAgICAgIFBl ZXJQdWJsaWNTaXplICAgICBTaXplIG9mIHBlZXIncyBwdWJsaWMgWCxZIGluIGJ5dGVzLg0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgICAgICBDb21wcmVzc0ZsYWcgICAgICAgRmxhZyBvZiBQZWVyUHVi bGljIGlzIGNvbXByZXNzZWQgb3Igbm90Lg0KPiA+ID4gKyAgQHBhcmFtW291dF0gICAgICBLZXkg ICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIHRvIHJlY2VpdmUgZ2VuZXJhdGVk IGtleS4NCj4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgS2V5U2l6ZSAgICAgICAgICAgIE9uIGlu cHV0LCB0aGUgc2l6ZSBvZiBLZXkgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJl dHVybmVkIGluIEtleSBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICBF QyBleGNoYW5nZWQga2V5IGdlbmVyYXRpb24gc3VjY2VlZGVkLg0KPiA+ID4gKyAgQHJldHZhbCBG QUxTRSAgRUMgZXhjaGFuZ2VkIGtleSBnZW5lcmF0aW9uIGZhaWxlZC4NCj4gPiA+ICsgIEByZXR2 YWwgRkFMU0UgIEtleVNpemUgaXMgbm90IGxhcmdlIGVub3VnaC4NCj4gPiA+ICsqKi8NCj4gPiA+ ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNEaENvbXB1dGVLZXkgKA0KPiA+ID4g KyAgSU4gT1VUICBWT0lEICAgICAgICAgKkVjQ29udGV4dCwNCj4gPiA+ICsgIElOICAgICAgQ09O U1QgVUlOVDggICpQZWVyUHVibGljLA0KPiA+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgUGVl clB1YmxpY1NpemUsDQo+ID4gPiArICBJTiAgICAgIENPTlNUIElOVDMyICAqQ29tcHJlc3NGbGFn LA0KPiA+ID4gKyAgT1VUICAgICBVSU5UOCAgICAgICAgKktleSwNCj4gPiA+ICsgIElOIE9VVCAg VUlOVE4gICAgICAgICpLZXlTaXplDQo+ID4gPiArICApOw0KPiA+ID4gKw0KPiA+ID4gICNlbmRp ZiAvLyBfX0JBU0VfQ1JZUFRfTElCX0hfXw0KPiA+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9M aWJyYXJ5L0Jhc2VDcnlwdExpYi9CYXNlQ3J5cHRMaWIuaW5mIGIvQ3J5cHRvUGtnL0xpYnJhcnkv QmFzZUNyeXB0TGliL0Jhc2VDcnlwdExpYi5pbmYNCj4gPiA+IGluZGV4IDllNGJlMmZiMGQuLmFk ZTZlZTNmZGQgMTAwNjQ0DQo+ID4gPiAtLS0gYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRM aWIvQmFzZUNyeXB0TGliLmluZg0KPiA+ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNy eXB0TGliL0Jhc2VDcnlwdExpYi5pbmYNCj4gPiA+IEBAIC01Miw2ICs1Miw4IEBADQo+ID4gPiAg ICBQay9DcnlwdFRzLmMNCj4gPiA+ICAgIFBrL0NyeXB0UnNhUHNzLmMNCj4gPiA+ICAgIFBrL0Ny eXB0UnNhUHNzU2lnbi5jDQo+ID4gPiArICBQay9DcnlwdEVjTnVsbC5jICAgIHwqfCp8KnwhZ0Vm aUNyeXB0b1BrZ1Rva2VuU3BhY2VHdWlkLlBjZE9wZW5zc2xFY0VuYWJsZWQNCj4gPiA+ICsgIFBr L0NyeXB0RWMuYyAgICB8KnwqfCp8Z0VmaUNyeXB0b1BrZ1Rva2VuU3BhY2VHdWlkLlBjZE9wZW5z c2xFY0VuYWJsZWQNCj4gPg0KPiA+IFRoZSB1c2Ugb2YgdGhlIFBDRCB0byBzZWxlY3QgdGhlIGZp bGUgc2hvdWxkIG5vdCBiZSBuZWVkZWQgaGVyZS4gIFRoZQ0KPiA+IEVjIEZhbWlseSBhbmQgaW5k aXZpZHVhbCBzZXJ2aWNlIGVuYWJsZS9kaXNhYmxlIGZpZWxkcyBpbiB0aGUNCj4gPiBQQ0RfQ1JZ UFRPX1NFUlZJQ0VfRkFNSUxZX0VOQUJMRSBzdHJ1Y3R1cmVkIFBDRCBhcmUgYWxsIHRoYXQgaXMg bmVlZGVkIHRvDQo+ID4gZGlzYWJsZSB0aGUgRWMgc2VydmljZXMuDQo+ID4NCj4gPiBUaGUgUENE IGdFZmlDcnlwdG9Qa2dUb2tlblNwYWNlR3VpZC5QY2RPcGVuc3NsRWNFbmFibGVkIHNob3VsZCBi ZSByZW1vdmVkDQo+ID4gY29tcGxldGVseSBhcyBwYXJ0IG9mIHRoaXMgcGF0Y2ggc2VyaWVzLg0K PiA+DQo+ID4gPiAgICBQZW0vQ3J5cHRQZW0uYw0KPiA+ID4gICAgQm4vQ3J5cHRCbi5jDQo+ID4g Pg0KPiA+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9QZWlD cnlwdExpYi5pbmYgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGVpQ3J5cHRMaWIu aW5mDQo+ID4gPiBpbmRleCA2NWFkMjNmYjgxLi4zODNkZjJiMjNjIDEwMDY0NA0KPiA+ID4gLS0t IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BlaUNyeXB0TGliLmluZg0KPiA+ID4g KysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BlaUNyeXB0TGliLmluZg0KPiA+ ID4gQEAgLTU4LDYgKzU4LDcgQEANCj4gPiA+ICAgIFBrL0NyeXB0VHNOdWxsLmMNCj4gPiA+ICAg IFBrL0NyeXB0UnNhUHNzLmMNCj4gPiA+ICAgIFBrL0NyeXB0UnNhUHNzU2lnbk51bGwuYw0KPiA+ ID4gKyAgUGsvQ3J5cHRFY051bGwuYw0KPiA+ID4gICAgUGVtL0NyeXB0UGVtTnVsbC5jDQo+ID4g PiAgICBSYW5kL0NyeXB0UmFuZE51bGwuYw0KPiA+ID4gICAgQm4vQ3J5cHRCbk51bGwuYw0KPiA+ ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdEVj LmMgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRFYy5jDQo+ID4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwMC4uMzk2YzgxOTgzNA0K PiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNy eXB0TGliL1BrL0NyeXB0RWMuYw0KPiA+ID4gQEAgLTAsMCArMSw3NjUgQEANCj4gPiA+ICsvKiog QGZpbGUNCj4gPiA+ICsgIEVsbGlwdGljIEN1cnZlIGFuZCBFQ0RIIEFQSSBpbXBsZW1lbnRhdGlv biBiYXNlZCBvbiBPcGVuU1NMDQo+ID4gPiArDQo+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMjIs IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICsgIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiArDQo+ID4g PiArKiovDQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUgIkludGVybmFsQ3J5cHRMaWIuaCINCj4g PiA+ICsjaW5jbHVkZSA8b3BlbnNzbC9vYmplY3RzLmg+DQo+ID4gPiArI2luY2x1ZGUgPG9wZW5z c2wvYm4uaD4NCj4gPiA+ICsjaW5jbHVkZSA8b3BlbnNzbC9lYy5oPg0KPiA+ID4gKw0KPiA+ID4g Ky8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+ICsvLyAgICBCYXNpYyBFbGxp cHRpYyBDdXJ2ZSBQcmltaXRpdmVzDQo+ID4gPiArLy8gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgUmV0dXJuIHRoZSBOaWQgb2YgY2Vy dGFpbiBFQ0MgY3VydmUuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBDcnlwdG9OaWQg ICBJZGVudGlmeWluZyBudW1iZXIgZm9yIHRoZSBFQ0MgY3VydmUgKERlZmluZWQgaW4NCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VDcnlwdExpYi5oKS4NCj4gPiA+ICsNCj4g PiA+ICsgIEByZXR2YWwgIT0tMSAgICBPbiBzdWNjZXNzLg0KPiA+ID4gKyAgQHJldHZhbCAtMSAg ICAgIEVDQyBjdXJ2ZSBub3Qgc3VwcG9ydGVkLg0KPiA+ID4gKyoqLw0KPiA+ID4gK1NUQVRJQw0K PiA+ID4gK0lOVDMyDQo+ID4gPiArQ3J5cHRvTmlkVG9PcGVuc3NsTmlkICgNCj4gPiA+ICsgIElO IFVJTlROICBDcnlwdG9OaWQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBJTlQzMiAg TmlkOw0KPiA+ID4gKw0KPiA+ID4gKyAgc3dpdGNoIChDcnlwdG9OaWQpIHsNCj4gPiA+ICsgICAg Y2FzZSBDUllQVE9fTklEX1NFQ1AyNTZSMToNCj4gPiA+ICsgICAgICBOaWQgPSBOSURfWDlfNjJf cHJpbWUyNTZ2MTsNCj4gPiA+ICsgICAgICBicmVhazsNCj4gPiA+ICsgICAgY2FzZSBDUllQVE9f TklEX1NFQ1AzODRSMToNCj4gPiA+ICsgICAgICBOaWQgPSBOSURfc2VjcDM4NHIxOw0KPiA+ID4g KyAgICAgIGJyZWFrOw0KPiA+ID4gKyAgICBjYXNlIENSWVBUT19OSURfU0VDUDUyMVIxOg0KPiA+ ID4gKyAgICAgIE5pZCA9IE5JRF9zZWNwNTIxcjE7DQo+ID4gPiArICAgICAgYnJlYWs7DQo+ID4g PiArICAgIGRlZmF1bHQ6DQo+ID4gPiArICAgICAgcmV0dXJuIC0xOw0KPiA+ID4gKyAgfQ0KPiA+ ID4gKw0KPiA+ID4gKyAgcmV0dXJuIE5pZDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoq DQo+ID4gPiArICBJbml0aWFsaXplIG5ldyBvcGFxdWUgRWNHcm91cCBvYmplY3QuIFRoaXMgb2Jq ZWN0IHJlcHJlc2VudHMgYW4gRUMgY3VydmUgYW5kDQo+ID4gPiArICBhbmQgaXMgdXNlZCBmb3Ig Y2FsY3VsYXRpb24gd2l0aGluIHRoaXMgZ3JvdXAuIFRoaXMgb2JqZWN0IHNob3VsZCBiZSBmcmVl ZA0KPiA+ID4gKyAgdXNpbmcgRWNHcm91cEZyZWUoKSBmdW5jdGlvbi4NCj4gPiA+ICsNCj4gPiA+ ICsgIEBwYXJhbVtpbl0gIENyeXB0b05pZCAgIElkZW50aWZ5aW5nIG51bWJlciBmb3IgdGhlIEVD QyBjdXJ2ZSAoRGVmaW5lZCBpbg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgQmFz ZUNyeXB0TGliLmgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBFY0dyb3VwIG9iamVjdCAg T24gc3VjY2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwgTlVMTCAgICAgICAgICAgIE9uIGZhaWx1cmUu DQo+ID4gPiArKiovDQo+ID4gPiArVk9JRCAqDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNHcm91 cEluaXQgKA0KPiA+ID4gKyAgSU4gVUlOVE4gIENyeXB0b05pZA0KPiA+ID4gKyAgKQ0KPiA+ID4g K3sNCj4gPiA+ICsgIElOVDMyICBOaWQ7DQo+ID4gPiArDQo+ID4gPiArICBOaWQgPSBDcnlwdG9O aWRUb09wZW5zc2xOaWQgKENyeXB0b05pZCk7DQo+ID4gPiArDQo+ID4gPiArICBpZiAoTmlkIDwg MCkgew0KPiA+ID4gKyAgICByZXR1cm4gTlVMTDsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ ICsgIHJldHVybiBFQ19HUk9VUF9uZXdfYnlfY3VydmVfbmFtZSAoTmlkKTsNCj4gPiA+ICt9DQo+ ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBHZXQgRUMgY3VydmUgcGFyYW1ldGVycy4gV2hp bGUgZWxsaXB0aWMgY3VydmUgZXF1YXRpb24gaXMgWV4yIG1vZCBQID0gKFheMyArIEFYICsgQikg TW9kIFAuDQo+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBwcm92aWRlZCBCaWcg TnVtYmVyIG9iamVjdHMgIHRvIHRoZSBjb3JyZXNwb25kaW5nDQo+ID4gPiArICB2YWx1ZXMuIFRo ZSBjYWxsZXIgbmVlZHMgdG8gbWFrZSBzdXJlIGFsbCB0aGUgIm91dCIgQmlnTnVtYmVyIHBhcmFt ZXRlcnMNCj4gPiA+ICsgIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ICsNCj4gPiA+ ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gKyAgQHBh cmFtW291dF0gQm5QcmltZSAgICBHcm91cCBwcmltZSBudW1iZXIuDQo+ID4gPiArICBAcGFyYW1b b3V0XSBCbkEgICAgICAgIEEgY29lZmZpY2llbnQuDQo+ID4gPiArICBAcGFyYW1bb3V0XSBCbkIg ICAgICAgIEIgY29lZmZpY2llbnQuLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBC TiBjb250ZXh0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1 Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4g KyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY0dyb3VwR2V0Q3Vy dmUgKA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBPVVQgVk9J RCAgICAgICAqQm5QcmltZSwNCj4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCbkEsDQo+ID4gPiAr ICBPVVQgVk9JRCAgICAgICAqQm5CLA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIChCT09MRUFOKUVDX0dST1VQX2dl dF9jdXJ2ZSAoRWNHcm91cCwgQm5QcmltZSwgQm5BLCBCbkIsIEJuQ3R4KTsNCj4gPiA+ICt9DQo+ ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBHZXQgRUMgZ3JvdXAgb3JkZXIuDQo+ID4gPiAr ICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdCB0 byB0aGUgY29ycmVzcG9uZGluZw0KPiA+ID4gKyAgdmFsdWUuIFRoZSBjYWxsZXIgbmVlZHMgdG8g bWFrZSBzdXJlIHRoYXQgdGhlICJvdXQiIEJpZ051bWJlciBwYXJhbWV0ZXINCj4gPiA+ICsgIGlz IHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNH cm91cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuT3JkZXIgICBH cm91cCBwcmltZSBudW1iZXIuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAg ICAgT24gc3VjY2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2Uu DQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjR3Jv dXBHZXRPcmRlciAoDQo+ID4gPiArICBJTiBWT0lEICAgKkVjR3JvdXAsDQo+ID4gPiArICBPVVQg Vk9JRCAgKkJuT3JkZXINCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1cm4gKEJP T0xFQU4pRUNfR1JPVVBfZ2V0X29yZGVyIChFY0dyb3VwLCBCbk9yZGVyLCBOVUxMKTsNCj4gPiA+ ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBGcmVlIHByZXZpb3VzbHkgYWxsb2Nh dGVkIEVDIGdyb3VwIG9iamVjdCB1c2luZyBFY0dyb3VwSW5pdCgpLg0KPiA+ID4gKw0KPiA+ID4g KyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdCB0byBmcmVlLg0KPiA+ID4g KyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY0dyb3VwRnJlZSAoDQo+ ID4gPiArICBJTiBWT0lEICAqRWNHcm91cA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsg IEVDX0dST1VQX2ZyZWUgKEVjR3JvdXApOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioN Cj4gPiA+ICsgIEluaXRpYWxpemUgbmV3IG9wYXF1ZSBFQyBQb2ludCBvYmplY3QuIFRoaXMgb2Jq ZWN0IHJlcHJlc2VudHMgYW4gRUMgcG9pbnQNCj4gPiA+ICsgIHdpdGhpbiB0aGUgZ2l2ZW4gRUMg Z3JvdXAgKGN1cnZlKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVDIEdyb3VwLCBw cm9wZXJseSBpbml0aWFsaXplZCB1c2luZyBFY0dyb3VwSW5pdCgpLg0KPiA+ID4gKw0KPiA+ID4g KyAgQHJldHZhbCBFQyBQb2ludCBvYmplY3QgIE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFs IE5VTEwgICAgICAgICAgICAgT24gZmFpbHVyZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEICoN Cj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY1BvaW50SW5pdCAoDQo+ID4gPiArICBJTiBDT05TVCBW T0lEICAqRWNHcm91cA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBFQ19Q T0lOVF9uZXcgKEVjR3JvdXApOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ ICsgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgRUMgUG9pbnQgb2JqZWN0IHVzaW5nIEVjUG9p bnRJbml0KCkuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgRUMgUG9p bnQgdG8gZnJlZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIENsZWFyICAgICBUUlVFIGlmZiB0aGUg bWVtb3J5IHNob3VsZCBiZSBjbGVhcmVkLg0KPiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ ICtFRklBUEkNCj4gPiA+ICtFY1BvaW50RGVJbml0ICgNCj4gPiA+ICsgIElOIFZPSUQgICAgICpF Y1BvaW50LA0KPiA+ID4gKyAgSU4gQk9PTEVBTiAgQ2xlYXINCj4gPiA+ICsgICkNCj4gPiA+ICt7 DQo+ID4gPiArICBpZiAoQ2xlYXIpIHsNCj4gPiA+ICsgICAgRUNfUE9JTlRfY2xlYXJfZnJlZSAo RWNQb2ludCk7DQo+ID4gPiArICB9IGVsc2Ugew0KPiA+ID4gKyAgICBFQ19QT0lOVF9mcmVlIChF Y1BvaW50KTsNCj4gPiA+ICsgIH0NCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4g PiArICBHZXQgRUMgcG9pbnQgYWZmaW5lICh4LHkpIGNvb3JkaW5hdGVzLg0KPiA+ID4gKyAgVGhp cyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJvdmlkZWQgQmlnIE51bWJlciBvYmplY3RzIHRvIHRo ZSBjb3JyZXNwb25kaW5nDQo+ID4gPiArICB2YWx1ZXMuIFRoZSBjYWxsZXIgbmVlZHMgdG8gbWFr ZSBzdXJlIGFsbCB0aGUgIm91dCIgQmlnTnVtYmVyIHBhcmFtZXRlcnMNCj4gPiA+ICsgIGFyZSBw cm9wZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3Jv dXAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBF QyBwb2ludCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1bb3V0XSBCblggICAgICAgIFggY29vcmRp bmF0ZS4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuWSAgICAgICAgWSBjb29yZGluYXRlLg0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmln TnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAg IE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0K PiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY1BvaW50 R2V0QWZmaW5lQ29vcmRpbmF0ZXMgKA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAs DQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludCwNCj4gPiA+ICsgIE9VVCBWT0lEICAg ICAgICpCblgsDQo+ID4gPiArICBPVVQgVk9JRCAgICAgICAqQm5ZLA0KPiA+ID4gKyAgSU4gVk9J RCAgICAgICAgKkJuQ3R4DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIChC T09MRUFOKUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRpbmF0ZXMgKEVjR3JvdXAsIEVjUG9pbnQs IEJuWCwgQm5ZLCBCbkN0eCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4g KyAgU2V0IEVDIHBvaW50IGFmZmluZSAoeCx5KSBjb29yZGluYXRlcy4NCj4gPiA+ICsNCj4gPiA+ ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gKyAgQHBh cmFtW2luXSAgRWNQb2ludCAgICBFQyBwb2ludCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW5d ICBCblggICAgICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuWSAgICAg ICAgWSBjb29yZGluYXRlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250 ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNF ICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtF RklBUEkNCj4gPiA+ICtFY1BvaW50U2V0QWZmaW5lQ29vcmRpbmF0ZXMgKA0KPiA+ID4gKyAgSU4g Q09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAqRWNQb2ludCwN Cj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpCblgsDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAq Qm5ZLA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiArICApDQo+ID4gPiAr ew0KPiA+ID4gKyAgcmV0dXJuIChCT09MRUFOKUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0 ZXMgKEVjR3JvdXAsIEVjUG9pbnQsIEJuWCwgQm5ZLCBCbkN0eCk7DQo+ID4gPiArfQ0KPiA+ID4g Kw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRUMgUG9pbnQgYWRkaXRpb24uIEVjUG9pbnRSZXN1bHQg PSBFY1BvaW50QSArIEVjUG9pbnRCLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNH cm91cCAgICAgICAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1bb3V0XSBFY1Bv aW50UmVzdWx0ICAgIEVDIHBvaW50IHRvIGhvbGQgdGhlIHJlc3VsdC4gVGhlIHBvaW50IHNob3Vs ZA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBwcm9wZXJseSBpbml0 aWFsaXplZC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRBICAgICAgICAgRUMgUG9pbnQu DQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QiAgICAgICAgIEVDIFBvaW50Lg0KPiA+ID4g KyAgQHBhcmFtW2luXSAgQm5DdHggICAgICAgICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgg QmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAg ICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNl Lg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY1Bv aW50QWRkICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gKyAgT1VU IFZPSUQgICAgICAgKkVjUG9pbnRSZXN1bHQsDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQ b2ludEEsDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEIsDQo+ID4gPiArICBJTiBW T0lEICAgICAgICAqQm5DdHgNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1cm4g KEJPT0xFQU4pRUNfUE9JTlRfYWRkIChFY0dyb3VwLCBFY1BvaW50UmVzdWx0LCBFY1BvaW50QSwg RWNQb2ludEIsIEJuQ3R4KTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiAr ICBWYXJpYWJsZSBFQyBwb2ludCBtdWx0aXBsaWNhdGlvbi4gRWNQb2ludFJlc3VsdCA9IEVjUG9p bnQgKiBCblBTY2FsYXIuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAg ICAgICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIEVjUG9pbnRSZXN1 bHQgICAgRUMgcG9pbnQgdG8gaG9sZCB0aGUgcmVzdWx0LiBUaGUgcG9pbnQgc2hvdWxkDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIHByb3Blcmx5IGluaXRpYWxpemVk Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICAgICAgICBFQyBQb2ludC4NCj4gPiA+ ICsgIEBwYXJhbVtpbl0gIEJuUFNjYWxhciAgICAgICAgUCBTY2FsYXIuDQo+ID4gPiArICBAcGFy YW1baW5dICBCbkN0eCAgICAgICAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1O ZXdDb250ZXh0KCkuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24g c3VjY2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4g PiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRNdWwg KA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBPVVQgVk9JRCAg ICAgICAqRWNQb2ludFJlc3VsdCwNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50LA0K PiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuUFNjYWxhciwNCj4gPiA+ICsgIElOIFZPSUQgICAg ICAgICpCbkN0eA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiAoQk9PTEVB TilFQ19QT0lOVF9tdWwgKEVjR3JvdXAsIEVjUG9pbnRSZXN1bHQsIE5VTEwsIEVjUG9pbnQsIEJu UFNjYWxhciwgQm5DdHgpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsg IENhbGN1bGF0ZSB0aGUgaW52ZXJzZSBvZiB0aGUgc3VwcGxpZWQgRUMgcG9pbnQuDQo+ID4gPiAr DQo+ID4gPiArICBAcGFyYW1baW5dICAgICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ ID4gKyAgQHBhcmFtW2luLG91dF0gRWNQb2ludCAgIEVDIHBvaW50IHRvIGludmVydC4NCj4gPiA+ ICsgIEBwYXJhbVtpbl0gICAgIEJuQ3R4ICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmln TnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAg IE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0K PiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY1BvaW50 SW52ZXJ0ICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gKyAgSU4g T1VUIFZPSUQgICAgKkVjUG9pbnQsDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4g PiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1cm4gKEJPT0xFQU4pRUNfUE9JTlRfaW52 ZXJ0IChFY0dyb3VwLCBFY1BvaW50LCBCbkN0eCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4g Ky8qKg0KPiA+ID4gKyAgQ2hlY2sgaWYgdGhlIHN1cHBsaWVkIHBvaW50IGlzIG9uIEVDIGN1cnZl Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVj dC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICBFQyBwb2ludCB0byBjaGVjay4NCj4g PiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmln TnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAg IE9uIGN1cnZlLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4g PiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNQb2ludElz T25DdXJ2ZSAoDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIElO IENPTlNUIFZPSUQgICpFY1BvaW50LA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIEVDX1BPSU5UX2lzX29uX2N1cnZl IChFY0dyb3VwLCBFY1BvaW50LCBCbkN0eCkgPT0gMTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4g PiArLyoqDQo+ID4gPiArICBDaGVjayBpZiB0aGUgc3VwcGxpZWQgcG9pbnQgaXMgYXQgaW5maW5p dHkuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3JvdXAgb2Jq ZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgIEVDIHBvaW50IHRvIGNoZWNrLg0K PiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIEF0IGluZmluaXR5Lg0KPiA+ ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ICsqKi8NCj4gPiA+ ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNQb2ludElzQXRJbmZpbml0eSAoDQo+ ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQg ICpFY1BvaW50DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIEVDX1BPSU5U X2lzX2F0X2luZmluaXR5IChFY0dyb3VwLCBFY1BvaW50KSA9PSAxOw0KPiA+ID4gK30NCj4gPiA+ ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIENoZWNrIGlmIEVDIHBvaW50cyBhcmUgZXF1YWwuDQo+ ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0K PiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludEEgIEVDIHBvaW50IEEuDQo+ID4gPiArICBAcGFy YW1baW5dICBFY1BvaW50QiAgRUMgcG9pbnQgQi4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4 ICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4g Kw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIEEgPT0gQi4NCj4gPiA+ICsgIEByZXR2 YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0K PiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRFcXVhbCAoDQo+ID4gPiArICBJTiBDT05TVCBW T0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50QSwNCj4gPiA+ ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50QiwNCj4gPiA+ICsgIElOIFZPSUQgICAgICAgICpC bkN0eA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBFQ19QT0lOVF9jbXAg KEVjR3JvdXAsIEVjUG9pbnRBLCBFY1BvaW50QiwgQm5DdHgpID09IDA7DQo+ID4gPiArfQ0KPiA+ ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgU2V0IEVDIHBvaW50IGNvbXByZXNzZWQgY29vcmRp bmF0ZXMuIFBvaW50cyBjYW4gYmUgZGVzY3JpYmVkIGluIHRlcm1zIG9mDQo+ID4gPiArICB0aGVp ciBjb21wcmVzc2VkIGNvb3JkaW5hdGVzLiBGb3IgYSBwb2ludCAoeCwgeSksIGZvciBhbnkgZ2l2 ZW4gdmFsdWUgZm9yIHgNCj4gPiA+ICsgIHN1Y2ggdGhhdCB0aGUgcG9pbnQgaXMgb24gdGhlIGN1 cnZlIHRoZXJlIHdpbGwgb25seSBldmVyIGJlIHR3byBwb3NzaWJsZQ0KPiA+ID4gKyAgdmFsdWVz IGZvciB5LiBUaGVyZWZvcmUsIGEgcG9pbnQgY2FuIGJlIHNldCB1c2luZyB0aGlzIGZ1bmN0aW9u IHdoZXJlIEJuWCBpcw0KPiA+ID4gKyAgdGhlIHggY29vcmRpbmF0ZSBhbmQgWUJpdCBpcyBhIHZh bHVlIDAgb3IgMSB0byBpZGVudGlmeSB3aGljaCBvZiB0aGUgdHdvDQo+ID4gPiArICBwb3NzaWJs ZSB2YWx1ZXMgZm9yIHkgc2hvdWxkIGJlIHVzZWQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1b aW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVj UG9pbnQgICAgRUMgUG9pbnQuDQo+ID4gPiArICBAcGFyYW1baW5dICBCblggICAgICAgIFggY29v cmRpbmF0ZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFlCaXQgICAgICAgMCBvciAxIHRvIGlkZW50 aWZ5IHdoaWNoIFkgdmFsdWUgaXMgdXNlZC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAg ICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ICsN Cj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gKyAgQHJl dHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFO DQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNQb2ludFNldENvbXByZXNzZWRDb29yZGluYXRlcyAo DQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIElOIFZPSUQgICAg ICAgICpFY1BvaW50LA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuWCwNCj4gPiA+ICsgIElO IFVJTlQ4ICAgICAgIFlCaXQsDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1cm4gKEJPT0xFQU4pRUNfUE9JTlRfc2V0X2Nv bXByZXNzZWRfY29vcmRpbmF0ZXMgKEVjR3JvdXAsIEVjUG9pbnQsIEJuWCwgWUJpdCwgQm5DdHgp Ow0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvLyA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09DQo+ID4gPiArLy8gICAgRWxsaXB0aWMgQ3VydmUgRGlmZmllIEhlbGxtYW4gUHJpbWl0aXZl cw0KPiA+ID4gKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+ICsNCj4gPiA+ ICsvKioNCj4gPiA+ICsgIEFsbG9jYXRlcyBhbmQgSW5pdGlhbGl6ZXMgb25lIEVsbGlwdGljIEN1 cnZlIENvbnRleHQgZm9yIHN1YnNlcXVlbnQgdXNlDQo+ID4gPiArICB3aXRoIHRoZSBOSUQuDQo+ ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBOaWQgICBJZGVudGlmeWluZyBudW1iZXIgZm9y IHRoZSBFQ0MgY3VydmUgKERlZmluZWQgaW4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgIEJh c2VDcnlwdExpYi5oKS4NCj4gPiA+ICsgIEByZXR1cm4gICAgIFBvaW50ZXIgdG8gdGhlIEVsbGlw dGljIEN1cnZlIENvbnRleHQgdGhhdCBoYXMgYmVlbiBpbml0aWFsaXplZC4NCj4gPiA+ICsgICAg ICAgICAgICAgIElmIHRoZSBhbGxvY2F0aW9ucyBmYWlscywgRWNOZXdCeU5pZCgpIHJldHVybnMg TlVMTC4NCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEICoNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtF Y05ld0J5TmlkICgNCj4gPiA+ICsgIElOIFVJTlROICBOaWQNCj4gPiA+ICsgICkNCj4gPiA+ICt7 DQo+ID4gPiArICBJTlQzMiAgT3BlblNzbE5pZDsNCj4gPiA+ICsNCj4gPiA+ICsgIE9wZW5Tc2xO aWQgPSBDcnlwdG9OaWRUb09wZW5zc2xOaWQgKE5pZCk7DQo+ID4gPiArICBpZiAoT3BlblNzbE5p ZCA8IDApIHsNCj4gPiA+ICsgICAgcmV0dXJuIE5VTEw7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ ID4gPiArICByZXR1cm4gKFZPSUQgKilFQ19LRVlfbmV3X2J5X2N1cnZlX25hbWUgKE9wZW5Tc2xO aWQpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlbGVhc2UgdGhl IHNwZWNpZmllZCBFQyBjb250ZXh0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWND b250ZXh0ICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0IHRvIGJlIHJlbGVhc2VkLg0KPiA+ID4g KyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY0ZyZWUgKA0KPiA+ID4g KyAgSU4gIFZPSUQgICpFY0NvbnRleHQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBF Q19LRVlfZnJlZSAoKEVDX0tFWSAqKUVjQ29udGV4dCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ ID4gKy8qKg0KPiA+ID4gKyAgR2VuZXJhdGVzIEVDIGtleSBhbmQgcmV0dXJucyBFQyBwdWJsaWMg a2V5IChYLCBZKSwgUGxlYXNlIG5vdGUsIHRoaXMgZnVuY3Rpb24gdXNlcw0KPiA+ID4gKyAgcHNl dWRvIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLiBUaGUgY2FsbGVyIG11c3QgbWFrZSBzdXJlIFJh bmRvbVNlZWQoKQ0KPiA+ID4gKyAgZnVuY3Rpb24gd2FzIHByb3Blcmx5IGNhbGxlZCBiZWZvcmUu DQo+ID4gPiArICBUaGUgRWMgY29udGV4dCBzaG91bGQgYmUgY29ycmVjdGx5IGluaXRpYWxpemVk IGJ5IEVjTmV3QnlOaWQuDQo+ID4gPiArICBUaGlzIGZ1bmN0aW9uIGdlbmVyYXRlcyByYW5kb20g c2VjcmV0LCBhbmQgY29tcHV0ZXMgdGhlIHB1YmxpYyBrZXkgKFgsIFkpLCB3aGljaCBpcw0KPiA+ ID4gKyAgcmV0dXJuZWQgdmlhIHBhcmFtZXRlciBQdWJsaWMsIFB1YmxpY1NpemUuDQo+ID4gPiAr ICBYIGlzIHRoZSBmaXJzdCBoYWxmIG9mIFB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUHVibGljU2l6 ZSAvIDIsDQo+ID4gPiArICBZIGlzIHRoZSBzZWNvbmQgaGFsZiBvZiBQdWJsaWMgd2l0aCBzaXpl IGJlaW5nIFB1YmxpY1NpemUgLyAyLg0KPiA+ID4gKyAgRUMgY29udGV4dCBpcyB1cGRhdGVkIGFj Y29yZGluZ2x5Lg0KPiA+ID4gKyAgSWYgdGhlIFB1YmxpYyBidWZmZXIgaXMgdG9vIHNtYWxsIHRv IGhvbGQgdGhlIHB1YmxpYyBYLCBZLCBGQUxTRSBpcyByZXR1cm5lZCBhbmQNCj4gPiA+ICsgIFB1 YmxpY1NpemUgaXMgc2V0IHRvIHRoZSByZXF1aXJlZCBidWZmZXIgc2l6ZSB0byBvYnRhaW4gdGhl IHB1YmxpYyBYLCBZLg0KPiA+ID4gKyAgRm9yIFAtMjU2LCB0aGUgUHVibGljU2l6ZSBpcyA2NC4g Rmlyc3QgMzItYnl0ZSBpcyBYLCBTZWNvbmQgMzItYnl0ZSBpcyBZLg0KPiA+ID4gKyAgRm9yIFAt Mzg0LCB0aGUgUHVibGljU2l6ZSBpcyA5Ni4gRmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNvbmQgNDgt Ynl0ZSBpcyBZLg0KPiA+ID4gKyAgRm9yIFAtNTIxLCB0aGUgUHVibGljU2l6ZSBpcyAxMzIuIEZp cnN0IDY2LWJ5dGUgaXMgWCwgU2Vjb25kIDY2LWJ5dGUgaXMgWS4NCj4gPiA+ICsgIElmIEVjQ29u dGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ICsgIElmIFB1YmxpY1NpemUg aXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArICBJZiBQdWJsaWNTaXplIGlzIGxh cmdlIGVub3VnaCBidXQgUHVibGljIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4g KyAgQHBhcmFtW2luLCBvdXRdICBFY0NvbnRleHQgICAgICBQb2ludGVyIHRvIHRoZSBFQyBjb250 ZXh0Lg0KPiA+ID4gKyAgQHBhcmFtW291dF0gICAgICBQdWJsaWNLZXkgICAgICBQb2ludGVyIHRv IHQgYnVmZmVyIHRvIHJlY2VpdmUgZ2VuZXJhdGVkIHB1YmxpYyBYLFkuDQo+ID4gPiArICBAcGFy YW1baW4sIG91dF0gIFB1YmxpY0tleVNpemUgIE9uIGlucHV0LCB0aGUgc2l6ZSBvZiBQdWJsaWMg YnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPbiBvdXRwdXQsIHRoZSBzaXplIG9mIGRhdGEgcmV0dXJuZWQgaW4gUHVibGljIGJ1ZmZlciBp biBieXRlcy4NCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgIEVDIHB1YmxpYyBYLFkgZ2VuZXJhdGlv biBzdWNjZWVkZWQuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICBFQyBwdWJsaWMgWCxZIGdlbmVy YXRpb24gZmFpbGVkLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgUHVibGljS2V5U2l6ZSBpcyBu b3QgbGFyZ2UgZW5vdWdoLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklB UEkNCj4gPiA+ICtFY0dlbmVyYXRlS2V5ICgNCj4gPiA+ICsgIElOIE9VVCAgVk9JRCAgICpFY0Nv bnRleHQsDQo+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAqUHVibGljS2V5LA0KPiA+ID4gKyAgSU4g T1VUICBVSU5UTiAgKlB1YmxpY0tleVNpemUNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiAr ICBFQ19LRVkgICAgICAgICAgKkVjS2V5Ow0KPiA+ID4gKyAgQ09OU1QgRUNfR1JPVVAgICpHcm91 cDsNCj4gPiA+ICsgIENPTlNUIEVDX1BPSU5UICAqRWNQb2ludDsNCj4gPiA+ICsgIEJPT0xFQU4g ICAgICAgICBSZXRWYWw7DQo+ID4gPiArICBCSUdOVU0gICAgICAgICAgKkJuWDsNCj4gPiA+ICsg IEJJR05VTSAgICAgICAgICAqQm5ZOw0KPiA+ID4gKyAgVUlOVE4gICAgICAgICAgIEhhbGZTaXpl Ow0KPiA+ID4gKyAgSU5UTiAgICAgICAgICAgIFhTaXplOw0KPiA+ID4gKyAgSU5UTiAgICAgICAg ICAgIFlTaXplOw0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKChFY0NvbnRleHQgPT0gTlVMTCkgfHwg KFB1YmxpY0tleVNpemUgPT0gTlVMTCkpIHsNCj4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKChQdWJsaWNLZXkgPT0gTlVMTCkgJiYgKCpQ dWJsaWNLZXlTaXplICE9IDApKSB7DQo+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ICsg IH0NCj4gPiA+ICsNCj4gPiA+ICsgIEVjS2V5ICAgID0gKEVDX0tFWSAqKUVjQ29udGV4dDsNCj4g PiA+ICsgIEdyb3VwICAgID0gRUNfS0VZX2dldDBfZ3JvdXAgKEVjS2V5KTsNCj4gPiA+ICsgIEhh bGZTaXplID0gKEVDX0dST1VQX2dldF9kZWdyZWUgKEdyb3VwKSArIDcpIC8gODsNCj4gPiA+ICsN Cj4gPiA+ICsgIC8vIEFzc3VtZSBSQU5EX3NlZWQgd2FzIGNhbGxlZA0KPiA+ID4gKyAgaWYgKEVD X0tFWV9nZW5lcmF0ZV9rZXkgKEVjS2V5KSAhPSAxKSB7DQo+ID4gPiArICAgIHJldHVybiBGQUxT RTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIGlmICgqUHVibGljS2V5U2l6ZSA8IEhh bGZTaXplICogMikgew0KPiA+ID4gKyAgICAqUHVibGljS2V5U2l6ZSA9IEhhbGZTaXplICogMjsN Cj4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAg KlB1YmxpY0tleVNpemUgPSBIYWxmU2l6ZSAqIDI7DQo+ID4gPiArDQo+ID4gPiArICBFY1BvaW50 ID0gRUNfS0VZX2dldDBfcHVibGljX2tleSAoRWNLZXkpOw0KPiA+ID4gKyAgaWYgKEVjUG9pbnQg PT0gTlVMTCkgew0KPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiArICB9DQo+ID4gPiAr DQo+ID4gPiArICBSZXRWYWwgPSBGQUxTRTsNCj4gPiA+ICsgIEJuWCAgICA9IEJOX25ldyAoKTsN Cj4gPiA+ICsgIEJuWSAgICA9IEJOX25ldyAoKTsNCj4gPiA+ICsgIGlmICgoQm5YID09IE5VTEwp IHx8IChCblkgPT0gTlVMTCkpIHsNCj4gPiA+ICsgICAgZ290byBmYWlsOw0KPiA+ID4gKyAgfQ0K PiA+ID4gKw0KPiA+ID4gKyAgaWYgKEVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRpbmF0ZXMgKEdy b3VwLCBFY1BvaW50LCBCblgsIEJuWSwgTlVMTCkgIT0gMSkgew0KPiA+ID4gKyAgICBnb3RvIGZh aWw7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBYU2l6ZSA9IEJOX251bV9ieXRlcyAo Qm5YKTsNCj4gPiA+ICsgIFlTaXplID0gQk5fbnVtX2J5dGVzIChCblkpOw0KPiA+ID4gKyAgaWYg KChYU2l6ZSA8PSAwKSB8fCAoWVNpemUgPD0gMCkpIHsNCj4gPiA+ICsgICAgZ290byBmYWlsOw0K PiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgQVNTRVJUICgoVUlOVE4pWFNpemUgPD0gSGFs ZlNpemUgJiYgKFVJTlROKVlTaXplIDw9IEhhbGZTaXplKTsNCj4gPiA+ICsNCj4gPiA+ICsgIFpl cm9NZW0gKFB1YmxpY0tleSwgKlB1YmxpY0tleVNpemUpOw0KPiA+ID4gKyAgQk5fYm4yYmluIChC blgsICZQdWJsaWNLZXlbMCArIEhhbGZTaXplIC0gWFNpemVdKTsNCj4gPiA+ICsgIEJOX2JuMmJp biAoQm5ZLCAmUHVibGljS2V5W0hhbGZTaXplICsgSGFsZlNpemUgLSBZU2l6ZV0pOw0KPiA+ID4g Kw0KPiA+ID4gKyAgUmV0VmFsID0gVFJVRTsNCj4gPiA+ICsNCj4gPiA+ICtmYWlsOg0KPiA+ID4g KyAgQk5fZnJlZSAoQm5YKTsNCj4gPiA+ICsgIEJOX2ZyZWUgKEJuWSk7DQo+ID4gPiArICByZXR1 cm4gUmV0VmFsOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEdldHMg dGhlIHB1YmxpYyBrZXkgY29tcG9uZW50IGZyb20gdGhlIGVzdGFibGlzaGVkIEVDIGNvbnRleHQu DQo+ID4gPiArICBUaGUgRWMgY29udGV4dCBzaG91bGQgYmUgY29ycmVjdGx5IGluaXRpYWxpemVk IGJ5IEVjTmV3QnlOaWQsIGFuZCBzdWNjZXNzZnVsbHkNCj4gPiA+ICsgIGdlbmVyYXRlIGtleSBw YWlyIGZyb20gRWNHZW5lcmF0ZUtleSgpLg0KPiA+ID4gKyAgRm9yIFAtMjU2LCB0aGUgUHVibGlj U2l6ZSBpcyA2NC4gRmlyc3QgMzItYnl0ZSBpcyBYLCBTZWNvbmQgMzItYnl0ZSBpcyBZLg0KPiA+ ID4gKyAgRm9yIFAtMzg0LCB0aGUgUHVibGljU2l6ZSBpcyA5Ni4gRmlyc3QgNDgtYnl0ZSBpcyBY LCBTZWNvbmQgNDgtYnl0ZSBpcyBZLg0KPiA+ID4gKyAgRm9yIFAtNTIxLCB0aGUgUHVibGljU2l6 ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5dGUgaXMgWCwgU2Vjb25kIDY2LWJ5dGUgaXMgWS4NCj4gPiA+ ICsgIEBwYXJhbVtpbiwgb3V0XSAgRWNDb250ZXh0ICAgICAgUG9pbnRlciB0byBFQyBjb250ZXh0 IGJlaW5nIHNldC4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdICAgICAgUHVibGljS2V5ICAgICAgUG9p bnRlciB0byB0IGJ1ZmZlciB0byByZWNlaXZlIGdlbmVyYXRlZCBwdWJsaWMgWCxZLg0KPiA+ID4g KyAgQHBhcmFtW2luLCBvdXRdICBQdWJsaWNLZXlTaXplICBPbiBpbnB1dCwgdGhlIHNpemUgb2Yg UHVibGljIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGluIFB1YmxpYyBi dWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiArICBAcmV0dmFsICBUUlVFICAgRUMga2V5IGNvbXBvbmVu dCB3YXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ICsgIEByZXR2YWwgIEZBTFNFICBJ bnZhbGlkIEVDIGtleSBjb21wb25lbnQuDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ ID4gK0VGSUFQSQ0KPiA+ID4gK0VjR2V0UHViS2V5ICgNCj4gPiA+ICsgIElOIE9VVCAgVk9JRCAg ICpFY0NvbnRleHQsDQo+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAqUHVibGljS2V5LA0KPiA+ID4g KyAgSU4gT1VUICBVSU5UTiAgKlB1YmxpY0tleVNpemUNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ ID4gPiArICBFQ19LRVkgICAgICAgICAgKkVjS2V5Ow0KPiA+ID4gKyAgQ09OU1QgRUNfR1JPVVAg ICpHcm91cDsNCj4gPiA+ICsgIENPTlNUIEVDX1BPSU5UICAqRWNQb2ludDsNCj4gPiA+ICsgIEJJ R05VTSAgICAgICAgICAqQm5YOw0KPiA+ID4gKyAgQklHTlVNICAgICAgICAgICpCblk7DQo+ID4g PiArICBVSU5UTiAgICAgICAgICAgSGFsZlNpemU7DQo+ID4gPiArICBJTlROICAgICAgICAgICAg WFNpemU7DQo+ID4gPiArICBJTlROICAgICAgICAgICAgWVNpemU7DQo+ID4gPiArICBCT09MRUFO ICAgICAgICAgUmV0VmFsOw0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKChFY0NvbnRleHQgPT0gTlVM TCkgfHwgKFB1YmxpY0tleVNpemUgPT0gTlVMTCkpIHsNCj4gPiA+ICsgICAgcmV0dXJuIEZBTFNF Ow0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKChQdWJsaWNLZXkgPT0gTlVMTCkg JiYgKCpQdWJsaWNLZXlTaXplICE9IDApKSB7DQo+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4g PiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIEVjS2V5ICAgID0gKEVDX0tFWSAqKUVjQ29udGV4 dDsNCj4gPiA+ICsgIEdyb3VwICAgID0gRUNfS0VZX2dldDBfZ3JvdXAgKEVjS2V5KTsNCj4gPiA+ ICsgIEhhbGZTaXplID0gKEVDX0dST1VQX2dldF9kZWdyZWUgKEdyb3VwKSArIDcpIC8gODsNCj4g PiA+ICsgIGlmICgqUHVibGljS2V5U2l6ZSA8IEhhbGZTaXplICogMikgew0KPiA+ID4gKyAgICAq UHVibGljS2V5U2l6ZSA9IEhhbGZTaXplICogMjsNCj4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0K PiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgKlB1YmxpY0tleVNpemUgPSBIYWxmU2l6ZSAq IDI7DQo+ID4gPiArDQo+ID4gPiArICBFY1BvaW50ID0gRUNfS0VZX2dldDBfcHVibGljX2tleSAo RWNLZXkpOw0KPiA+ID4gKyAgaWYgKEVjUG9pbnQgPT0gTlVMTCkgew0KPiA+ID4gKyAgICByZXR1 cm4gRkFMU0U7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBSZXRWYWwgPSBGQUxTRTsN Cj4gPiA+ICsgIEJuWCAgICA9IEJOX25ldyAoKTsNCj4gPiA+ICsgIEJuWSAgICA9IEJOX25ldyAo KTsNCj4gPiA+ICsgIGlmICgoQm5YID09IE5VTEwpIHx8IChCblkgPT0gTlVMTCkpIHsNCj4gPiA+ ICsgICAgZ290byBmYWlsOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKEVDX1BP SU5UX2dldF9hZmZpbmVfY29vcmRpbmF0ZXMgKEdyb3VwLCBFY1BvaW50LCBCblgsIEJuWSwgTlVM TCkgIT0gMSkgew0KPiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ ID4gPiArICBYU2l6ZSA9IEJOX251bV9ieXRlcyAoQm5YKTsNCj4gPiA+ICsgIFlTaXplID0gQk5f bnVtX2J5dGVzIChCblkpOw0KPiA+ID4gKyAgaWYgKChYU2l6ZSA8PSAwKSB8fCAoWVNpemUgPD0g MCkpIHsNCj4gPiA+ICsgICAgZ290byBmYWlsOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4g KyAgQVNTRVJUICgoVUlOVE4pWFNpemUgPD0gSGFsZlNpemUgJiYgKFVJTlROKVlTaXplIDw9IEhh bGZTaXplKTsNCj4gPiA+ICsNCj4gPiA+ICsgIGlmIChQdWJsaWNLZXkgIT0gTlVMTCkgew0KPiA+ ID4gKyAgICBaZXJvTWVtIChQdWJsaWNLZXksICpQdWJsaWNLZXlTaXplKTsNCj4gPiA+ICsgICAg Qk5fYm4yYmluIChCblgsICZQdWJsaWNLZXlbMCArIEhhbGZTaXplIC0gWFNpemVdKTsNCj4gPiA+ ICsgICAgQk5fYm4yYmluIChCblksICZQdWJsaWNLZXlbSGFsZlNpemUgKyBIYWxmU2l6ZSAtIFlT aXplXSk7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBSZXRWYWwgPSBUUlVFOw0KPiA+ ID4gKw0KPiA+ID4gK2ZhaWw6DQo+ID4gPiArICBCTl9mcmVlIChCblgpOw0KPiA+ID4gKyAgQk5f ZnJlZSAoQm5ZKTsNCj4gPiA+ICsgIHJldHVybiBSZXRWYWw7DQo+ID4gPiArfQ0KPiA+ID4gKw0K PiA+ID4gKy8qKg0KPiA+ID4gKyAgQ29tcHV0ZXMgZXhjaGFuZ2VkIGNvbW1vbiBrZXkuDQo+ID4g PiArICBHaXZlbiBwZWVyJ3MgcHVibGljIGtleSAoWCwgWSksIHRoaXMgZnVuY3Rpb24gY29tcHV0 ZXMgdGhlIGV4Y2hhbmdlZCBjb21tb24ga2V5LA0KPiA+ID4gKyAgYmFzZWQgb24gaXRzIG93biBj b250ZXh0IGluY2x1ZGluZyB2YWx1ZSBvZiBjdXJ2ZSBwYXJhbWV0ZXIgYW5kIHJhbmRvbSBzZWNy ZXQuDQo+ID4gPiArICBYIGlzIHRoZSBmaXJzdCBoYWxmIG9mIFBlZXJQdWJsaWMgd2l0aCBzaXpl IGJlaW5nIFBlZXJQdWJsaWNTaXplIC8gMiwNCj4gPiA+ICsgIFkgaXMgdGhlIHNlY29uZCBoYWxm IG9mIFBlZXJQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFBlZXJQdWJsaWNTaXplIC8gMi4NCj4gPiA+ ICsgIElmIHB1YmxpYyBrZXkgaXMgY29tcHJlc3NlZCwgdGhlIFBlZXJQdWJsaWMgd2lsbCBvbmx5 IGNvbnRhaW4gaGFsZiBrZXkgKFgpLg0KPiA+ID4gKyAgSWYgRWNDb250ZXh0IGlzIE5VTEwsIHRo ZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgSWYgUGVlclB1YmxpYyBpcyBOVUxMLCB0aGVuIHJl dHVybiBGQUxTRS4NCj4gPiA+ICsgIElmIFBlZXJQdWJsaWNTaXplIGlzIDAsIHRoZW4gcmV0dXJu IEZBTFNFLg0KPiA+ID4gKyAgSWYgS2V5IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ ID4gKyAgSWYgS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLCB0aGVuIHJldHVybiBGQUxTRS4N Cj4gPiA+ICsgIEZvciBQLTI1NiwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1i eXRlIGlzIFgsIFNlY29uZCAzMi1ieXRlIGlzIFkuDQo+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQ ZWVyUHVibGljU2l6ZSBpcyA5Ni4gRmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNvbmQgNDgtYnl0ZSBp cyBZLg0KPiA+ID4gKyAgRm9yIFAtNTIxLCB0aGUgUGVlclB1YmxpY1NpemUgaXMgMTMyLiBGaXJz dCA2Ni1ieXRlIGlzIFgsIFNlY29uZCA2Ni1ieXRlIGlzIFkuDQo+ID4gPiArICBAcGFyYW1baW4s IG91dF0gIEVjQ29udGV4dCAgICAgICAgICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0Lg0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgICAgICBQZWVyUHVibGljICAgICAgICAgUG9pbnRlciB0byB0aGUg cGVlcidzIHB1YmxpYyBYLFkuDQo+ID4gPiArICBAcGFyYW1baW5dICAgICAgIFBlZXJQdWJsaWNT aXplICAgICBTaXplIG9mIHBlZXIncyBwdWJsaWMgWCxZIGluIGJ5dGVzLg0KPiA+ID4gKyAgQHBh cmFtW2luXSAgICAgICBDb21wcmVzc0ZsYWcgICAgICAgRmxhZyBvZiBQZWVyUHVibGljIGlzIGNv bXByZXNzZWQgb3Igbm90Lg0KPiA+ID4gKyAgQHBhcmFtW291dF0gICAgICBLZXkgICAgICAgICAg ICAgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIHRvIHJlY2VpdmUgZ2VuZXJhdGVkIGtleS4NCj4g PiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgS2V5U2l6ZSAgICAgICAgICAgIE9uIGlucHV0LCB0aGUg c2l6ZSBvZiBLZXkgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGlu IEtleSBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICBFQyBleGNoYW5n ZWQga2V5IGdlbmVyYXRpb24gc3VjY2VlZGVkLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgRUMg ZXhjaGFuZ2VkIGtleSBnZW5lcmF0aW9uIGZhaWxlZC4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0Ug IEtleVNpemUgaXMgbm90IGxhcmdlIGVub3VnaC4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFO DQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNEaENvbXB1dGVLZXkgKA0KPiA+ID4gKyAgSU4gT1VU ICBWT0lEICAgICAgICAgKkVjQ29udGV4dCwNCj4gPiA+ICsgIElOICAgICAgQ09OU1QgVUlOVDgg ICpQZWVyUHVibGljLA0KPiA+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgUGVlclB1YmxpY1Np emUsDQo+ID4gPiArICBJTiAgICAgIENPTlNUIElOVDMyICAqQ29tcHJlc3NGbGFnLA0KPiA+ID4g KyAgT1VUICAgICBVSU5UOCAgICAgICAgKktleSwNCj4gPiA+ICsgIElOIE9VVCAgVUlOVE4gICAg ICAgICpLZXlTaXplDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgRUNfS0VZICAgICAg ICAgICpFY0tleTsNCj4gPiA+ICsgIEVDX0tFWSAgICAgICAgICAqUGVlckVjS2V5Ow0KPiA+ID4g KyAgQ09OU1QgRUNfR1JPVVAgICpHcm91cDsNCj4gPiA+ICsgIEJPT0xFQU4gICAgICAgICBSZXRW YWw7DQo+ID4gPiArICBCSUdOVU0gICAgICAgICAgKkJuWDsNCj4gPiA+ICsgIEJJR05VTSAgICAg ICAgICAqQm5ZOw0KPiA+ID4gKyAgRUNfUE9JTlQgICAgICAgICpQb2ludDsNCj4gPiA+ICsgIElO VDMyICAgICAgICAgICBPcGVuU3NsTmlkOw0KPiA+ID4gKyAgVUlOVE4gICAgICAgICAgIEhhbGZT aXplOw0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKChFY0NvbnRleHQgPT0gTlVMTCkgfHwgKFBlZXJQ dWJsaWMgPT0gTlVMTCkgfHwgKEtleVNpemUgPT0gTlVMTCkpIHsNCj4gPiA+ICsgICAgcmV0dXJu IEZBTFNFOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKChLZXkgPT0gTlVMTCkg JiYgKCpLZXlTaXplICE9IDApKSB7DQo+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ICsg IH0NCj4gPiA+ICsNCj4gPiA+ICsgIGlmIChQZWVyUHVibGljU2l6ZSA+IElOVF9NQVgpIHsNCj4g PiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgRWNL ZXkgICAgPSAoRUNfS0VZICopRWNDb250ZXh0Ow0KPiA+ID4gKyAgR3JvdXAgICAgPSBFQ19LRVlf Z2V0MF9ncm91cCAoRWNLZXkpOw0KPiA+ID4gKyAgSGFsZlNpemUgPSAoRUNfR1JPVVBfZ2V0X2Rl Z3JlZSAoR3JvdXApICsgNykgLyA4Ow0KPiA+ID4gKyAgaWYgKChDb21wcmVzc0ZsYWcgPT0gTlVM TCkgJiYgKFBlZXJQdWJsaWNTaXplICE9IEhhbGZTaXplICogMikpIHsNCj4gPiA+ICsgICAgcmV0 dXJuIEZBTFNFOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKChDb21wcmVzc0Zs YWcgIT0gTlVMTCkgJiYgKFBlZXJQdWJsaWNTaXplICE9IEhhbGZTaXplKSkgew0KPiA+ID4gKyAg ICByZXR1cm4gRkFMU0U7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBpZiAoKktleVNp emUgPCBIYWxmU2l6ZSkgew0KPiA+ID4gKyAgICAqS2V5U2l6ZSA9IEhhbGZTaXplOw0KPiA+ID4g KyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICAqS2V5U2l6 ZSA9IEhhbGZTaXplOw0KPiA+ID4gKw0KPiA+ID4gKyAgUmV0VmFsICAgID0gRkFMU0U7DQo+ID4g PiArICBQb2ludCAgICAgPSBOVUxMOw0KPiA+ID4gKyAgQm5YICAgICAgID0gQk5fYmluMmJuIChQ ZWVyUHVibGljLCAoSU5UMzIpSGFsZlNpemUsIE5VTEwpOw0KPiA+ID4gKyAgQm5ZICAgICAgID0g TlVMTDsNCj4gPiA+ICsgIFBvaW50ICAgICA9IEVDX1BPSU5UX25ldyAoR3JvdXApOw0KPiA+ID4g KyAgUGVlckVjS2V5ID0gTlVMTDsNCj4gPiA+ICsgIGlmICgoQm5YID09IE5VTEwpIHx8IChQb2lu dCA9PSBOVUxMKSkgew0KPiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ID4gPiArICB9DQo+ID4gPiAr DQo+ID4gPiArICBpZiAoQ29tcHJlc3NGbGFnID09IE5VTEwpIHsNCj4gPiA+ICsgICAgQm5ZID0g Qk5fYmluMmJuIChQZWVyUHVibGljICsgSGFsZlNpemUsIChJTlQzMilIYWxmU2l6ZSwgTlVMTCk7 DQo+ID4gPiArICAgIGlmIChCblkgPT0gTlVMTCkgew0KPiA+ID4gKyAgICAgIGdvdG8gZmFpbDsN Cj4gPiA+ICsgICAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgICBpZiAoRUNfUE9JTlRfc2V0X2FmZmlu ZV9jb29yZGluYXRlcyAoR3JvdXAsIFBvaW50LCBCblgsIEJuWSwgTlVMTCkgIT0gMSkgew0KPiA+ ID4gKyAgICAgIGdvdG8gZmFpbDsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAgfSBlbHNlIHsNCj4g PiA+ICsgICAgaWYgKEVDX1BPSU5UX3NldF9jb21wcmVzc2VkX2Nvb3JkaW5hdGVzIChHcm91cCwg UG9pbnQsIEJuWCwgKkNvbXByZXNzRmxhZywgTlVMTCkgIT0gMSkgew0KPiA+ID4gKyAgICAgIGdv dG8gZmFpbDsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgLy8g VmFsaWRhdGUgTklTVCBFQ0RIIHB1YmxpYyBrZXkNCj4gPiA+ICsgIE9wZW5Tc2xOaWQgPSBFQ19H Uk9VUF9nZXRfY3VydmVfbmFtZSAoR3JvdXApOw0KPiA+ID4gKyAgUGVlckVjS2V5ICA9IEVDX0tF WV9uZXdfYnlfY3VydmVfbmFtZSAoT3BlblNzbE5pZCk7DQo+ID4gPiArICBpZiAoUGVlckVjS2V5 ID09IE5VTEwpIHsNCj4gPiA+ICsgICAgZ290byBmYWlsOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0K PiA+ID4gKyAgaWYgKEVDX0tFWV9zZXRfcHVibGljX2tleSAoUGVlckVjS2V5LCBQb2ludCkgIT0g MSkgew0KPiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiAr ICBpZiAoRUNfS0VZX2NoZWNrX2tleSAoUGVlckVjS2V5KSAhPSAxKSB7DQo+ID4gPiArICAgIGdv dG8gZmFpbDsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIGlmIChFQ0RIX2NvbXB1dGVf a2V5IChLZXksICpLZXlTaXplLCBQb2ludCwgRWNLZXksIE5VTEwpIDw9IDApIHsNCj4gPiA+ICsg ICAgZ290byBmYWlsOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgUmV0VmFsID0gVFJV RTsNCj4gPiA+ICsNCj4gPiA+ICtmYWlsOg0KPiA+ID4gKyAgQk5fZnJlZSAoQm5YKTsNCj4gPiA+ ICsgIEJOX2ZyZWUgKEJuWSk7DQo+ID4gPiArICBFQ19QT0lOVF9mcmVlIChQb2ludCk7DQo+ID4g PiArICBFQ19LRVlfZnJlZSAoUGVlckVjS2V5KTsNCj4gPiA+ICsgIHJldHVybiBSZXRWYWw7DQo+ ID4gPiArfQ0KPiA+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExp Yi9Qay9DcnlwdEVjTnVsbC5jIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0Ny eXB0RWNOdWxsLmMNCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiBpbmRleCAwMDAw MDAwMDAwLi5kOWYxMDA0ZjZjDQo+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiArKysgYi9Dcnlw dG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRFY051bGwuYw0KPiA+ID4gQEAgLTAs MCArMSw0OTYgQEANCj4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ICsgIEVsbGlwdGljIEN1cnZlIGFu ZCBFQ0RIIEFQSSBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBPcGVuU1NMDQo+ID4gPiArDQo+ID4g PiArICBDb3B5cmlnaHQgKGMpIDIwMjIsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLjxCUj4NCj4gPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1 c2UtUGF0ZW50DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUg PExpYnJhcnkvQmFzZUNyeXB0TGliLmg+DQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdM aWIuaD4NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEluaXRpYWxpemUgbmV3IG9wYXF1 ZSBFY0dyb3VwIG9iamVjdC4gVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhbiBFQyBjdXJ2ZSBhbmQN Cj4gPiA+ICsgIGFuZCBpcyB1c2VkIGZvciBjYWxjdWxhdGlvbiB3aXRoaW4gdGhpcyBncm91cC4g VGhpcyBvYmplY3Qgc2hvdWxkIGJlIGZyZWVkDQo+ID4gPiArICB1c2luZyBFY0dyb3VwRnJlZSgp IGZ1bmN0aW9uLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQ3J5cHRvTmlkICAgSWRl bnRpZnlpbmcgbnVtYmVyIGZvciB0aGUgRUNDIGN1cnZlIChEZWZpbmVkIGluDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICBCYXNlQ3J5cHRMaWIuaCkuDQo+ID4gPiArDQo+ID4gPiAr ICBAcmV0dmFsIEVjR3JvdXAgb2JqZWN0ICBPbiBzdWNjZXNzLg0KPiA+ID4gKyAgQHJldHZhbCBO VUxMICAgICAgICAgICAgT24gZmFpbHVyZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEICoNCj4g PiA+ICtFRklBUEkNCj4gPiA+ICtFY0dyb3VwSW5pdCAoDQo+ID4gPiArICBJTiBVSU5UTiAgQ3J5 cHRvTmlkDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ ID4gPiArICByZXR1cm4gTlVMTDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4g PiArICBHZXQgRUMgY3VydmUgcGFyYW1ldGVycy4gV2hpbGUgZWxsaXB0aWMgY3VydmUgZXF1YXRp b24gaXMgWV4yIG1vZCBQID0gKFheMyArIEFYICsgQikgTW9kIFAuDQo+ID4gPiArICBUaGlzIGZ1 bmN0aW9uIHdpbGwgc2V0IHRoZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdHMgIHRvIHRoZSBj b3JyZXNwb25kaW5nDQo+ID4gPiArICB2YWx1ZXMuIFRoZSBjYWxsZXIgbmVlZHMgdG8gbWFrZSBz dXJlIGFsbCB0aGUgIm91dCIgQmlnTnVtYmVyIHBhcmFtZXRlcnMNCj4gPiA+ICsgIGFyZSBwcm9w ZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAg ICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW291dF0gQm5QcmltZSAgICBHcm91 cCBwcmltZSBudW1iZXIuDQo+ID4gPiArICBAcGFyYW1bb3V0XSBCbkEgICAgICAgIEEgY29lZmZp Y2llbnQuDQo+ID4gPiArICBAcGFyYW1bb3V0XSBCbkIgICAgICAgIEIgY29lZmZpY2llbnQuLg0K PiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0Lg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFs IEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4g PiA+ICtFRklBUEkNCj4gPiA+ICtFY0dyb3VwR2V0Q3VydmUgKA0KPiA+ID4gKyAgSU4gQ09OU1Qg Vk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBPVVQgVk9JRCAgICAgICAqQm5QcmltZSwNCj4gPiA+ ICsgIE9VVCBWT0lEICAgICAgICpCbkEsDQo+ID4gPiArICBPVVQgVk9JRCAgICAgICAqQm5CLA0K PiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiArfQ0K PiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgR2V0IEVDIGdyb3VwIG9yZGVyLg0KPiA+ID4g KyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJvdmlkZWQgQmlnIE51bWJlciBvYmplY3Qg dG8gdGhlIGNvcnJlc3BvbmRpbmcNCj4gPiA+ICsgIHZhbHVlLiBUaGUgY2FsbGVyIG5lZWRzIHRv IG1ha2Ugc3VyZSB0aGF0IHRoZSAib3V0IiBCaWdOdW1iZXIgcGFyYW1ldGVyDQo+ID4gPiArICBp cyBwcm9wZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVj R3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1bb3V0XSBCbk9yZGVyICAg R3JvdXAgcHJpbWUgbnVtYmVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAg ICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNl Lg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY0dy b3VwR2V0T3JkZXIgKA0KPiA+ID4gKyAgSU4gVk9JRCAgICpFY0dyb3VwLA0KPiA+ID4gKyAgT1VU IFZPSUQgICpCbk9yZGVyDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgQVNTRVJUIChG QUxTRSk7DQo+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4g Ky8qKg0KPiA+ID4gKyAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBFQyBncm91cCBvYmplY3Qg dXNpbmcgRWNHcm91cEluaXQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3Jv dXAgICBFQyBncm91cCBvYmplY3QgdG8gZnJlZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ ID4gPiArRUZJQVBJDQo+ID4gPiArRWNHcm91cEZyZWUgKA0KPiA+ID4gKyAgSU4gVk9JRCAgKkVj R3JvdXANCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4g PiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBJbml0aWFsaXplIG5ldyBvcGFx dWUgRUMgUG9pbnQgb2JqZWN0LiBUaGlzIG9iamVjdCByZXByZXNlbnRzIGFuIEVDIHBvaW50DQo+ ID4gPiArICB3aXRoaW4gdGhlIGdpdmVuIEVDIGdyb3VwIChjdXJ2ZSkuDQo+ID4gPiArDQo+ID4g PiArICBAcGFyYW1baW5dICBFQyBHcm91cCwgcHJvcGVybHkgaW5pdGlhbGl6ZWQgdXNpbmcgRWNH cm91cEluaXQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUMgUG9pbnQgb2JqZWN0ICBP biBzdWNjZXNzLg0KPiA+ID4gKyAgQHJldHZhbCBOVUxMICAgICAgICAgICAgIE9uIGZhaWx1cmUu DQo+ID4gPiArKiovDQo+ID4gPiArVk9JRCAqDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNQb2lu dEluaXQgKA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXANCj4gPiA+ICsgICkNCj4g PiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBOVUxMOw0K PiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEZyZWUgcHJldmlvdXNseSBh bGxvY2F0ZWQgRUMgUG9pbnQgb2JqZWN0IHVzaW5nIEVjUG9pbnRJbml0KCkuDQo+ID4gPiArDQo+ ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgRUMgUG9pbnQgdG8gZnJlZS4NCj4gPiA+ICsg IEBwYXJhbVtpbl0gIENsZWFyICAgICBUUlVFIGlmZiB0aGUgbWVtb3J5IHNob3VsZCBiZSBjbGVh cmVkLg0KPiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY1Bv aW50RGVJbml0ICgNCj4gPiA+ICsgIElOIFZPSUQgICAgICpFY1BvaW50LA0KPiA+ID4gKyAgSU4g Qk9PTEVBTiAgQ2xlYXINCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZB TFNFKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBHZXQgRUMgcG9p bnQgYWZmaW5lICh4LHkpIGNvb3JkaW5hdGVzLg0KPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxs IHNldCB0aGUgcHJvdmlkZWQgQmlnIE51bWJlciBvYmplY3RzIHRvIHRoZSBjb3JyZXNwb25kaW5n DQo+ID4gPiArICB2YWx1ZXMuIFRoZSBjYWxsZXIgbmVlZHMgdG8gbWFrZSBzdXJlIGFsbCB0aGUg Im91dCIgQmlnTnVtYmVyIHBhcmFtZXRlcnMNCj4gPiA+ICsgIGFyZSBwcm9wZXJseSBpbml0aWFs aXplZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAg b2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBwb2ludCBvYmplY3Qu DQo+ID4gPiArICBAcGFyYW1bb3V0XSBCblggICAgICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ICsg IEBwYXJhbVtvdXRdIEJuWSAgICAgICAgWSBjb29yZGluYXRlLg0KPiA+ID4gKyAgQHBhcmFtW2lu XSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgp Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gKyoqLw0KPiA+ ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY1BvaW50R2V0QWZmaW5lQ29vcmRp bmF0ZXMgKA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBJTiBD T05TVCBWT0lEICAqRWNQb2ludCwNCj4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblgsDQo+ID4g PiArICBPVVQgVk9JRCAgICAgICAqQm5ZLA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4 DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiAr ICByZXR1cm4gRkFMU0U7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAg U2V0IEVDIHBvaW50IGFmZmluZSAoeCx5KSBjb29yZGluYXRlcy4NCj4gPiA+ICsNCj4gPiA+ICsg IEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFt W2luXSAgRWNQb2ludCAgICBFQyBwb2ludCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW5dICBC blggICAgICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuWSAgICAgICAg WSBjb29yZGluYXRlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0 LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJl dHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAg ICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklB UEkNCj4gPiA+ICtFY1BvaW50U2V0QWZmaW5lQ29vcmRpbmF0ZXMgKA0KPiA+ID4gKyAgSU4gQ09O U1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAqRWNQb2ludCwNCj4g PiA+ICsgIElOIENPTlNUIFZPSUQgICpCblgsDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5Z LA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiArICApDQo+ID4gPiArew0K PiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiAr fQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRUMgUG9pbnQgYWRkaXRpb24uIEVjUG9p bnRSZXN1bHQgPSBFY1BvaW50QSArIEVjUG9pbnRCLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFt W2luXSAgRWNHcm91cCAgICAgICAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1b b3V0XSBFY1BvaW50UmVzdWx0ICAgIEVDIHBvaW50IHRvIGhvbGQgdGhlIHJlc3VsdC4gVGhlIHBv aW50IHNob3VsZA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBwcm9w ZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRBICAgICAgICAg RUMgUG9pbnQuDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QiAgICAgICAgIEVDIFBvaW50 Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICAgICAgICBCTiBjb250ZXh0LCBjcmVh dGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBU UlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAg T3RoZXJ3aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4g PiA+ICtFY1BvaW50QWRkICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ ID4gKyAgT1VUIFZPSUQgICAgICAgKkVjUG9pbnRSZXN1bHQsDQo+ID4gPiArICBJTiBDT05TVCBW T0lEICAqRWNQb2ludEEsDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEIsDQo+ID4g PiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiAr ICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ICt9DQo+ID4g PiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBWYXJpYWJsZSBFQyBwb2ludCBtdWx0aXBsaWNhdGlv bi4gRWNQb2ludFJlc3VsdCA9IEVjUG9pbnQgKiBCblBTY2FsYXIuDQo+ID4gPiArDQo+ID4gPiAr ICBAcGFyYW1baW5dICBFY0dyb3VwICAgICAgICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ICsg IEBwYXJhbVtvdXRdIEVjUG9pbnRSZXN1bHQgICAgRUMgcG9pbnQgdG8gaG9sZCB0aGUgcmVzdWx0 LiBUaGUgcG9pbnQgc2hvdWxkDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAg ICAgICAgICBFQyBQb2ludC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuUFNjYWxhciAgICAgICAg UCBTY2FsYXIuDQo+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgICAgICAgIEJOIGNvbnRl eHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiArDQo+ID4gPiArICBA cmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0Ug ICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VG SUFQSQ0KPiA+ID4gK0VjUG9pbnRNdWwgKA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3Jv dXAsDQo+ID4gPiArICBPVVQgVk9JRCAgICAgICAqRWNQb2ludFJlc3VsdCwNCj4gPiA+ICsgIElO IENPTlNUIFZPSUQgICpFY1BvaW50LA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuUFNjYWxh ciwNCj4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sN Cj4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4g K30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIENhbGN1bGF0ZSB0aGUgaW52ZXJzZSBv ZiB0aGUgc3VwcGxpZWQgRUMgcG9pbnQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICAg ICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW2luLG91dF0gRWNQ b2ludCAgIEVDIHBvaW50IHRvIGludmVydC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gICAgIEJuQ3R4 ICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4g Kw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBA cmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xF QU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY1BvaW50SW52ZXJ0ICgNCj4gPiA+ICsgIElOIENP TlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gKyAgSU4gT1VUIFZPSUQgICAgKkVjUG9pbnQsDQo+ ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4g PiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ICt9DQo+ ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBDaGVjayBpZiB0aGUgc3VwcGxpZWQgcG9pbnQg aXMgb24gRUMgY3VydmUuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAg RUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgIEVDIHBvaW50 IHRvIGNoZWNrLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgIEJOIGNvbnRleHQsIGNy ZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFs IFRSVUUgICAgICAgICAgT24gY3VydmUuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAg T3RoZXJ3aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4g PiA+ICtFY1BvaW50SXNPbkN1cnZlICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3Vw LA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiArICBJTiBWT0lEICAg ICAgICAqQm5DdHgNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNF KTsNCj4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoq DQo+ID4gPiArICBDaGVjayBpZiB0aGUgc3VwcGxpZWQgcG9pbnQgaXMgYXQgaW5maW5pdHkuDQo+ ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0K PiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgIEVDIHBvaW50IHRvIGNoZWNrLg0KPiA+ID4g Kw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIEF0IGluZmluaXR5Lg0KPiA+ID4gKyAg QHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09M RUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNQb2ludElzQXRJbmZpbml0eSAoDQo+ID4gPiAr ICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1Bv aW50DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4g PiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4g KyAgQ2hlY2sgaWYgRUMgcG9pbnRzIGFyZSBlcXVhbC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJh bVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW5dICBF Y1BvaW50QSAgRUMgcG9pbnQgQS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRCICBFQyBw b2ludCBCLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgIEJOIGNvbnRleHQsIGNyZWF0 ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRS VUUgICAgICAgICAgQSA9PSBCLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVy d2lzZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiAr RWNQb2ludEVxdWFsICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4g KyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRBLA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVj UG9pbnRCLA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiArICApDQo+ID4g PiArew0KPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgU2V0IEVDIHBvaW50IGNvbXBy ZXNzZWQgY29vcmRpbmF0ZXMuIFBvaW50cyBjYW4gYmUgZGVzY3JpYmVkIGluIHRlcm1zIG9mDQo+ ID4gPiArICB0aGVpciBjb21wcmVzc2VkIGNvb3JkaW5hdGVzLiBGb3IgYSBwb2ludCAoeCwgeSks IGZvciBhbnkgZ2l2ZW4gdmFsdWUgZm9yIHgNCj4gPiA+ICsgIHN1Y2ggdGhhdCB0aGUgcG9pbnQg aXMgb24gdGhlIGN1cnZlIHRoZXJlIHdpbGwgb25seSBldmVyIGJlIHR3byBwb3NzaWJsZQ0KPiA+ ID4gKyAgdmFsdWVzIGZvciB5LiBUaGVyZWZvcmUsIGEgcG9pbnQgY2FuIGJlIHNldCB1c2luZyB0 aGlzIGZ1bmN0aW9uIHdoZXJlIEJuWCBpcw0KPiA+ID4gKyAgdGhlIHggY29vcmRpbmF0ZSBhbmQg WUJpdCBpcyBhIHZhbHVlIDAgb3IgMSB0byBpZGVudGlmeSB3aGljaCBvZiB0aGUgdHdvDQo+ID4g PiArICBwb3NzaWJsZSB2YWx1ZXMgZm9yIHkgc2hvdWxkIGJlIHVzZWQuDQo+ID4gPiArDQo+ID4g PiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ICsgIEBw YXJhbVtpbl0gIEVjUG9pbnQgICAgRUMgUG9pbnQuDQo+ID4gPiArICBAcGFyYW1baW5dICBCblgg ICAgICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFlCaXQgICAgICAgMCBv ciAxIHRvIGlkZW50aWZ5IHdoaWNoIFkgdmFsdWUgaXMgdXNlZC4NCj4gPiA+ICsgIEBwYXJhbVtp bl0gIEJuQ3R4ICAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQo KS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0K PiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ICsqKi8NCj4g PiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNQb2ludFNldENvbXByZXNzZWRD b29yZGluYXRlcyAoDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsg IElOIFZPSUQgICAgICAgICpFY1BvaW50LA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuWCwN Cj4gPiA+ICsgIElOIFVJTlQ4ICAgICAgIFlCaXQsDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAq Qm5DdHgNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4g PiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4g PiArICBBbGxvY2F0ZXMgYW5kIEluaXRpYWxpemVzIG9uZSBFbGxpcHRpYyBDdXJ2ZSBDb250ZXh0 IGZvciBzdWJzZXF1ZW50IHVzZQ0KPiA+ID4gKyAgd2l0aCB0aGUgTklELg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgTmlkIGNpcGhlciBOSUQNCj4gPiA+ICsgIEByZXR1cm4gICAgIFBv aW50ZXIgdG8gdGhlIEVsbGlwdGljIEN1cnZlIENvbnRleHQgdGhhdCBoYXMgYmVlbiBpbml0aWFs aXplZC4NCj4gPiA+ICsgICAgICAgICAgICAgIElmIHRoZSBhbGxvY2F0aW9ucyBmYWlscywgRWNO ZXdCeU5pZCgpIHJldHVybnMgTlVMTC4NCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEICoNCj4gPiA+ ICtFRklBUEkNCj4gPiA+ICtFY05ld0J5TmlkICgNCj4gPiA+ICsgIElOIFVJTlROICBOaWQNCj4g PiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJl dHVybiBOVUxMOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlbGVh c2UgdGhlIHNwZWNpZmllZCBFQyBjb250ZXh0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2lu XSAgRWNDb250ZXh0ICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0IHRvIGJlIHJlbGVhc2VkLg0K PiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY0ZyZWUgKA0K PiA+ID4gKyAgSU4gIFZPSUQgICpFY0NvbnRleHQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4g PiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4g PiArICBHZW5lcmF0ZXMgRUMga2V5IGFuZCByZXR1cm5zIEVDIHB1YmxpYyBrZXkgKFgsIFkpLCBQ bGVhc2Ugbm90ZSwgdGhpcyBmdW5jdGlvbiB1c2VzDQo+ID4gPiArICBwc2V1ZG8gcmFuZG9tIG51 bWJlciBnZW5lcmF0b3IuIFRoZSBjYWxsZXIgbXVzdCBtYWtlIHN1cmUgUmFuZG9tU2VlZCgpDQo+ ID4gPiArICBmdW5jdGlvbiB3YXMgcHJvcGVybHkgY2FsbGVkIGJlZm9yZS4NCj4gPiA+ICsgIFRo ZSBFYyBjb250ZXh0IHNob3VsZCBiZSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgYnkgRWNOZXdCeU5p ZC4NCj4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gZ2VuZXJhdGVzIHJhbmRvbSBzZWNyZXQsIGFuZCBj b21wdXRlcyB0aGUgcHVibGljIGtleSAoWCwgWSksIHdoaWNoIGlzDQo+ID4gPiArICByZXR1cm5l ZCB2aWEgcGFyYW1ldGVyIFB1YmxpYywgUHVibGljU2l6ZS4NCj4gPiA+ICsgIFggaXMgdGhlIGZp cnN0IGhhbGYgb2YgUHVibGljIHdpdGggc2l6ZSBiZWluZyBQdWJsaWNTaXplIC8gMiwNCj4gPiA+ ICsgIFkgaXMgdGhlIHNlY29uZCBoYWxmIG9mIFB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUHVibGlj U2l6ZSAvIDIuDQo+ID4gPiArICBFQyBjb250ZXh0IGlzIHVwZGF0ZWQgYWNjb3JkaW5nbHkuDQo+ ID4gPiArICBJZiB0aGUgUHVibGljIGJ1ZmZlciBpcyB0b28gc21hbGwgdG8gaG9sZCB0aGUgcHVi bGljIFgsIFksIEZBTFNFIGlzIHJldHVybmVkIGFuZA0KPiA+ID4gKyAgUHVibGljU2l6ZSBpcyBz ZXQgdG8gdGhlIHJlcXVpcmVkIGJ1ZmZlciBzaXplIHRvIG9idGFpbiB0aGUgcHVibGljIFgsIFku DQo+ID4gPiArICBGb3IgUC0yNTYsIHRoZSBQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1ieXRl IGlzIFgsIFNlY29uZCAzMi1ieXRlIGlzIFkuDQo+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQdWJs aWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRlIGlzIFgsIFNlY29uZCA0OC1ieXRlIGlzIFkuDQo+ ID4gPiArICBGb3IgUC01MjEsIHRoZSBQdWJsaWNTaXplIGlzIDEzMi4gRmlyc3QgNjYtYnl0ZSBp cyBYLCBTZWNvbmQgNjYtYnl0ZSBpcyBZLg0KPiA+ID4gKyAgSWYgRWNDb250ZXh0IGlzIE5VTEws IHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgSWYgUHVibGljU2l6ZSBpcyBOVUxMLCB0aGVu IHJldHVybiBGQUxTRS4NCj4gPiA+ICsgIElmIFB1YmxpY1NpemUgaXMgbGFyZ2UgZW5vdWdoIGJ1 dCBQdWJsaWMgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArICBAcGFyYW1baW4s IG91dF0gIEVjQ29udGV4dCAgICAgIFBvaW50ZXIgdG8gdGhlIEVDIGNvbnRleHQuDQo+ID4gPiAr ICBAcGFyYW1bb3V0XSAgICAgIFB1YmxpY0tleSAgICAgIFBvaW50ZXIgdG8gdCBidWZmZXIgdG8g cmVjZWl2ZSBnZW5lcmF0ZWQgcHVibGljIFgsWS4NCj4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAg UHVibGljS2V5U2l6ZSAgT24gaW5wdXQsIHRoZSBzaXplIG9mIFB1YmxpYyBidWZmZXIgaW4gYnl0 ZXMuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwg dGhlIHNpemUgb2YgZGF0YSByZXR1cm5lZCBpbiBQdWJsaWMgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ ID4gKyAgQHJldHZhbCBUUlVFICAgRUMgcHVibGljIFgsWSBnZW5lcmF0aW9uIHN1Y2NlZWRlZC4N Cj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIEVDIHB1YmxpYyBYLFkgZ2VuZXJhdGlvbiBmYWlsZWQu DQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICBQdWJsaWNLZXlTaXplIGlzIG5vdCBsYXJnZSBlbm91 Z2guDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0Vj R2VuZXJhdGVLZXkgKA0KPiA+ID4gKyAgSU4gT1VUICBWT0lEICAgKkVjQ29udGV4dCwNCj4gPiA+ ICsgIE9VVCAgICAgVUlOVDggICpQdWJsaWNLZXksDQo+ID4gPiArICBJTiBPVVQgIFVJTlROICAq UHVibGljS2V5U2l6ZQ0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEFTU0VSVCAoRkFM U0UpOw0KPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsv KioNCj4gPiA+ICsgIEdldHMgdGhlIHB1YmxpYyBrZXkgY29tcG9uZW50IGZyb20gdGhlIGVzdGFi bGlzaGVkIEVDIGNvbnRleHQuDQo+ID4gPiArICBUaGUgRWMgY29udGV4dCBzaG91bGQgYmUgY29y cmVjdGx5IGluaXRpYWxpemVkIGJ5IEVjTmV3QnlOaWQsIGFuZCBzdWNjZXNzZnVsbHkNCj4gPiA+ ICsgIGdlbmVyYXRlIGtleSBwYWlyIGZyb20gRWNHZW5lcmF0ZUtleSgpLg0KPiA+ID4gKyAgRm9y IFAtMjU2LCB0aGUgUHVibGljU2l6ZSBpcyA2NC4gRmlyc3QgMzItYnl0ZSBpcyBYLCBTZWNvbmQg MzItYnl0ZSBpcyBZLg0KPiA+ID4gKyAgRm9yIFAtMzg0LCB0aGUgUHVibGljU2l6ZSBpcyA5Ni4g Rmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNvbmQgNDgtYnl0ZSBpcyBZLg0KPiA+ID4gKyAgRm9yIFAt NTIxLCB0aGUgUHVibGljU2l6ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5dGUgaXMgWCwgU2Vjb25kIDY2 LWJ5dGUgaXMgWS4NCj4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRWNDb250ZXh0ICAgICAgUG9p bnRlciB0byBFQyBjb250ZXh0IGJlaW5nIHNldC4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdICAgICAg UHVibGljS2V5ICAgICAgUG9pbnRlciB0byB0IGJ1ZmZlciB0byByZWNlaXZlIGdlbmVyYXRlZCBw dWJsaWMgWCxZLg0KPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBQdWJsaWNLZXlTaXplICBPbiBp bnB1dCwgdGhlIHNpemUgb2YgUHVibGljIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJl dHVybmVkIGluIFB1YmxpYyBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiArICBAcmV0dmFsICBUUlVF ICAgRUMga2V5IGNvbXBvbmVudCB3YXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ICsg IEByZXR2YWwgIEZBTFNFICBJbnZhbGlkIEVDIGtleSBjb21wb25lbnQuDQo+ID4gPiArKiovDQo+ ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjR2V0UHViS2V5ICgNCj4gPiA+ ICsgIElOIE9VVCAgVk9JRCAgICpFY0NvbnRleHQsDQo+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAq UHVibGljS2V5LA0KPiA+ID4gKyAgSU4gT1VUICBVSU5UTiAgKlB1YmxpY0tleVNpemUNCj4gPiA+ ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVy biBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBDb21wdXRl cyBleGNoYW5nZWQgY29tbW9uIGtleS4NCj4gPiA+ICsgIEdpdmVuIHBlZXIncyBwdWJsaWMga2V5 IChYLCBZKSwgdGhpcyBmdW5jdGlvbiBjb21wdXRlcyB0aGUgZXhjaGFuZ2VkIGNvbW1vbiBrZXks DQo+ID4gPiArICBiYXNlZCBvbiBpdHMgb3duIGNvbnRleHQgaW5jbHVkaW5nIHZhbHVlIG9mIGN1 cnZlIHBhcmFtZXRlciBhbmQgcmFuZG9tIHNlY3JldC4NCj4gPiA+ICsgIFggaXMgdGhlIGZpcnN0 IGhhbGYgb2YgUGVlclB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUGVlclB1YmxpY1NpemUgLyAyLA0K PiA+ID4gKyAgWSBpcyB0aGUgc2Vjb25kIGhhbGYgb2YgUGVlclB1YmxpYyB3aXRoIHNpemUgYmVp bmcgUGVlclB1YmxpY1NpemUgLyAyLg0KPiA+ID4gKyAgSWYgRWNDb250ZXh0IGlzIE5VTEwsIHRo ZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgSWYgUGVlclB1YmxpYyBpcyBOVUxMLCB0aGVuIHJl dHVybiBGQUxTRS4NCj4gPiA+ICsgIElmIFBlZXJQdWJsaWNTaXplIGlzIDAsIHRoZW4gcmV0dXJu IEZBTFNFLg0KPiA+ID4gKyAgSWYgS2V5IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ ID4gKyAgSWYgS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLCB0aGVuIHJldHVybiBGQUxTRS4N Cj4gPiA+ICsgIEZvciBQLTI1NiwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1i eXRlIGlzIFgsIFNlY29uZCAzMi1ieXRlIGlzIFkuDQo+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQ ZWVyUHVibGljU2l6ZSBpcyA5Ni4gRmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNvbmQgNDgtYnl0ZSBp cyBZLg0KPiA+ID4gKyAgRm9yIFAtNTIxLCB0aGUgUGVlclB1YmxpY1NpemUgaXMgMTMyLiBGaXJz dCA2Ni1ieXRlIGlzIFgsIFNlY29uZCA2Ni1ieXRlIGlzIFkuDQo+ID4gPiArICBAcGFyYW1baW4s IG91dF0gIEVjQ29udGV4dCAgICAgICAgICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0Lg0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgICAgICBQZWVyUHVibGljICAgICAgICAgUG9pbnRlciB0byB0aGUg cGVlcidzIHB1YmxpYyBYLFkuDQo+ID4gPiArICBAcGFyYW1baW5dICAgICAgIFBlZXJQdWJsaWNT aXplICAgICBTaXplIG9mIHBlZXIncyBwdWJsaWMgWCxZIGluIGJ5dGVzLg0KPiA+ID4gKyAgQHBh cmFtW2luXSAgICAgICBDb21wcmVzc0ZsYWcgICAgICAgRmxhZyBvZiBQZWVyUHVibGljIGlzIGNv bXByZXNzZWQgb3Igbm90Lg0KPiA+ID4gKyAgQHBhcmFtW291dF0gICAgICBLZXkgICAgICAgICAg ICAgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIHRvIHJlY2VpdmUgZ2VuZXJhdGVkIGtleS4NCj4g PiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgS2V5U2l6ZSAgICAgICAgICAgIE9uIGlucHV0LCB0aGUg c2l6ZSBvZiBLZXkgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGlu IEtleSBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICBFQyBleGNoYW5n ZWQga2V5IGdlbmVyYXRpb24gc3VjY2VlZGVkLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgRUMg ZXhjaGFuZ2VkIGtleSBnZW5lcmF0aW9uIGZhaWxlZC4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0Ug IEtleVNpemUgaXMgbm90IGxhcmdlIGVub3VnaC4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFO DQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNEaENvbXB1dGVLZXkgKA0KPiA+ID4gKyAgSU4gT1VU ICBWT0lEICAgICAgICAgKkVjQ29udGV4dCwNCj4gPiA+ICsgIElOICAgICAgQ09OU1QgVUlOVDgg ICpQZWVyUHVibGljLA0KPiA+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgUGVlclB1YmxpY1Np emUsDQo+ID4gPiArICBJTiAgICAgIENPTlNUIElOVDMyICAqQ29tcHJlc3NGbGFnLA0KPiA+ID4g KyAgT1VUICAgICBVSU5UOCAgICAgICAgKktleSwNCj4gPiA+ICsgIElOIE9VVCAgVUlOVE4gICAg ICAgICpLZXlTaXplDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgQVNTRVJUIChGQUxT RSk7DQo+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiArfQ0KPiA+ID4gZGlmZiAtLWdpdCBh L0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9TbW1DcnlwdExpYi5pbmYgYi9DcnlwdG9Q a2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvU21tQ3J5cHRMaWIuaW5mDQo+ID4gPiBpbmRleCBjZTZh Nzg5ZGZkLi40YmMzMDYzNDg1IDEwMDY0NA0KPiA+ID4gLS0tIGEvQ3J5cHRvUGtnL0xpYnJhcnkv QmFzZUNyeXB0TGliL1NtbUNyeXB0TGliLmluZg0KPiA+ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJh cnkvQmFzZUNyeXB0TGliL1NtbUNyeXB0TGliLmluZg0KPiA+ID4gQEAgLTU5LDYgKzU5LDcgQEAN Cj4gPiA+ICAgIFBrL0NyeXB0VHNOdWxsLmMNCj4gPiA+ICAgIFBrL0NyeXB0UnNhUHNzLmMNCj4g PiA+ICAgIFBrL0NyeXB0UnNhUHNzU2lnbk51bGwuYw0KPiA+ID4gKyAgUGsvQ3J5cHRFY051bGwu Yw0KPiA+ID4gICAgUGVtL0NyeXB0UGVtLmMNCj4gPiA+ICAgIEJuL0NyeXB0Qm5OdWxsLmMNCj4g PiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliTnVs bC9CYXNlQ3J5cHRMaWJOdWxsLmluZg0KPiA+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0 TGliTnVsbC9CYXNlQ3J5cHRMaWJOdWxsLmluZg0KPiA+ID4gaW5kZXggMzU0ZjNkODBhYS4uZTFh NTdlZjA5ZiAxMDA2NDQNCj4gPiA+IC0tLSBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExp Yk51bGwvQmFzZUNyeXB0TGliTnVsbC5pbmYNCj4gPiA+ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5 L0Jhc2VDcnlwdExpYk51bGwvQmFzZUNyeXB0TGliTnVsbC5pbmYNCj4gPiA+IEBAIC00OSw2ICs0 OSw3IEBADQo+ID4gPiAgICBQay9DcnlwdFg1MDlOdWxsLmMNCj4gPiA+ICAgIFBrL0NyeXB0QXV0 aGVudGljb2RlTnVsbC5jDQo+ID4gPiAgICBQay9DcnlwdFRzTnVsbC5jDQo+ID4gPiArICBQay9D cnlwdEVjTnVsbC5jDQo+ID4gPiAgICBQZW0vQ3J5cHRQZW1OdWxsLmMNCj4gPiA+ICAgIFJhbmQv Q3J5cHRSYW5kTnVsbC5jDQo+ID4gPiAgICBQay9DcnlwdFJzYVBzc051bGwuYw0KPiA+ID4gZGlm ZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk51bGwvUGsvQ3J5cHRFY051 bGwuYyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk51bGwvUGsvQ3J5cHRFY051bGwu Yw0KPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+IGluZGV4IDAwMDAwMDAwMDAuLmQ5 ZjEwMDRmNmMNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL0NyeXB0b1BrZy9MaWJy YXJ5L0Jhc2VDcnlwdExpYk51bGwvUGsvQ3J5cHRFY051bGwuYw0KPiA+ID4gQEAgLTAsMCArMSw0 OTYgQEANCj4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ICsgIEVsbGlwdGljIEN1cnZlIGFuZCBFQ0RI IEFQSSBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBPcGVuU1NMDQo+ID4gPiArDQo+ID4gPiArICBD b3B5cmlnaHQgKGMpIDIwMjIsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk LjxCUj4NCj4gPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUgPExpYnJh cnkvQmFzZUNyeXB0TGliLmg+DQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4N Cj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEluaXRpYWxpemUgbmV3IG9wYXF1ZSBFY0dy b3VwIG9iamVjdC4gVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhbiBFQyBjdXJ2ZSBhbmQNCj4gPiA+ ICsgIGFuZCBpcyB1c2VkIGZvciBjYWxjdWxhdGlvbiB3aXRoaW4gdGhpcyBncm91cC4gVGhpcyBv YmplY3Qgc2hvdWxkIGJlIGZyZWVkDQo+ID4gPiArICB1c2luZyBFY0dyb3VwRnJlZSgpIGZ1bmN0 aW9uLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQ3J5cHRvTmlkICAgSWRlbnRpZnlp bmcgbnVtYmVyIGZvciB0aGUgRUNDIGN1cnZlIChEZWZpbmVkIGluDQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICBCYXNlQ3J5cHRMaWIuaCkuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0 dmFsIEVjR3JvdXAgb2JqZWN0ICBPbiBzdWNjZXNzLg0KPiA+ID4gKyAgQHJldHZhbCBOVUxMICAg ICAgICAgICAgT24gZmFpbHVyZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEICoNCj4gPiA+ICtF RklBUEkNCj4gPiA+ICtFY0dyb3VwSW5pdCAoDQo+ID4gPiArICBJTiBVSU5UTiAgQ3J5cHRvTmlk DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiAr ICByZXR1cm4gTlVMTDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBH ZXQgRUMgY3VydmUgcGFyYW1ldGVycy4gV2hpbGUgZWxsaXB0aWMgY3VydmUgZXF1YXRpb24gaXMg WV4yIG1vZCBQID0gKFheMyArIEFYICsgQikgTW9kIFAuDQo+ID4gPiArICBUaGlzIGZ1bmN0aW9u IHdpbGwgc2V0IHRoZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdHMgIHRvIHRoZSBjb3JyZXNw b25kaW5nDQo+ID4gPiArICB2YWx1ZXMuIFRoZSBjYWxsZXIgbmVlZHMgdG8gbWFrZSBzdXJlIGFs bCB0aGUgIm91dCIgQmlnTnVtYmVyIHBhcmFtZXRlcnMNCj4gPiA+ICsgIGFyZSBwcm9wZXJseSBp bml0aWFsaXplZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMg Z3JvdXAgb2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW291dF0gQm5QcmltZSAgICBHcm91cCBwcmlt ZSBudW1iZXIuDQo+ID4gPiArICBAcGFyYW1bb3V0XSBCbkEgICAgICAgIEEgY29lZmZpY2llbnQu DQo+ID4gPiArICBAcGFyYW1bb3V0XSBCbkIgICAgICAgIEIgY29lZmZpY2llbnQuLg0KPiA+ID4g KyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0Lg0KPiA+ID4gKw0KPiA+ID4gKyAg QHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNF ICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtF RklBUEkNCj4gPiA+ICtFY0dyb3VwR2V0Q3VydmUgKA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAg KkVjR3JvdXAsDQo+ID4gPiArICBPVVQgVk9JRCAgICAgICAqQm5QcmltZSwNCj4gPiA+ICsgIE9V VCBWT0lEICAgICAgICpCbkEsDQo+ID4gPiArICBPVVQgVk9JRCAgICAgICAqQm5CLA0KPiA+ID4g KyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAg QVNTRVJUIChGQUxTRSk7DQo+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiArfQ0KPiA+ID4g Kw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgR2V0IEVDIGdyb3VwIG9yZGVyLg0KPiA+ID4gKyAgVGhp cyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJvdmlkZWQgQmlnIE51bWJlciBvYmplY3QgdG8gdGhl IGNvcnJlc3BvbmRpbmcNCj4gPiA+ICsgIHZhbHVlLiBUaGUgY2FsbGVyIG5lZWRzIHRvIG1ha2Ug c3VyZSB0aGF0IHRoZSAib3V0IiBCaWdOdW1iZXIgcGFyYW1ldGVyDQo+ID4gPiArICBpcyBwcm9w ZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAg ICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1bb3V0XSBCbk9yZGVyICAgR3JvdXAg cHJpbWUgbnVtYmVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9u IHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY0dyb3VwR2V0 T3JkZXIgKA0KPiA+ID4gKyAgSU4gVk9JRCAgICpFY0dyb3VwLA0KPiA+ID4gKyAgT1VUIFZPSUQg ICpCbk9yZGVyDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7 DQo+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0K PiA+ID4gKyAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBFQyBncm91cCBvYmplY3QgdXNpbmcg RWNHcm91cEluaXQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBF QyBncm91cCBvYmplY3QgdG8gZnJlZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ID4gPiAr RUZJQVBJDQo+ID4gPiArRWNHcm91cEZyZWUgKA0KPiA+ID4gKyAgSU4gVk9JRCAgKkVjR3JvdXAN Cj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICt9 DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBJbml0aWFsaXplIG5ldyBvcGFxdWUgRUMg UG9pbnQgb2JqZWN0LiBUaGlzIG9iamVjdCByZXByZXNlbnRzIGFuIEVDIHBvaW50DQo+ID4gPiAr ICB3aXRoaW4gdGhlIGdpdmVuIEVDIGdyb3VwIChjdXJ2ZSkuDQo+ID4gPiArDQo+ID4gPiArICBA cGFyYW1baW5dICBFQyBHcm91cCwgcHJvcGVybHkgaW5pdGlhbGl6ZWQgdXNpbmcgRWNHcm91cElu aXQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRUMgUG9pbnQgb2JqZWN0ICBPbiBzdWNj ZXNzLg0KPiA+ID4gKyAgQHJldHZhbCBOVUxMICAgICAgICAgICAgIE9uIGZhaWx1cmUuDQo+ID4g PiArKiovDQo+ID4gPiArVk9JRCAqDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNQb2ludEluaXQg KA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXANCj4gPiA+ICsgICkNCj4gPiA+ICt7 DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBOVUxMOw0KPiA+ID4g K30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0 ZWQgRUMgUG9pbnQgb2JqZWN0IHVzaW5nIEVjUG9pbnRJbml0KCkuDQo+ID4gPiArDQo+ID4gPiAr ICBAcGFyYW1baW5dICBFY1BvaW50ICAgRUMgUG9pbnQgdG8gZnJlZS4NCj4gPiA+ICsgIEBwYXJh bVtpbl0gIENsZWFyICAgICBUUlVFIGlmZiB0aGUgbWVtb3J5IHNob3VsZCBiZSBjbGVhcmVkLg0K PiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY1BvaW50RGVJ bml0ICgNCj4gPiA+ICsgIElOIFZPSUQgICAgICpFY1BvaW50LA0KPiA+ID4gKyAgSU4gQk9PTEVB TiAgQ2xlYXINCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsN Cj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBHZXQgRUMgcG9pbnQgYWZm aW5lICh4LHkpIGNvb3JkaW5hdGVzLg0KPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0 aGUgcHJvdmlkZWQgQmlnIE51bWJlciBvYmplY3RzIHRvIHRoZSBjb3JyZXNwb25kaW5nDQo+ID4g PiArICB2YWx1ZXMuIFRoZSBjYWxsZXIgbmVlZHMgdG8gbWFrZSBzdXJlIGFsbCB0aGUgIm91dCIg QmlnTnVtYmVyIHBhcmFtZXRlcnMNCj4gPiA+ICsgIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZC4N Cj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2JqZWN0 Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBwb2ludCBvYmplY3QuDQo+ID4g PiArICBAcGFyYW1bb3V0XSBCblggICAgICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ICsgIEBwYXJh bVtvdXRdIEJuWSAgICAgICAgWSBjb29yZGluYXRlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5D dHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiAr ICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JP T0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY1BvaW50R2V0QWZmaW5lQ29vcmRpbmF0ZXMg KA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBJTiBDT05TVCBW T0lEICAqRWNQb2ludCwNCj4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblgsDQo+ID4gPiArICBP VVQgVk9JRCAgICAgICAqQm5ZLA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4g PiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiArICByZXR1 cm4gRkFMU0U7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgU2V0IEVD IHBvaW50IGFmZmluZSAoeCx5KSBjb29yZGluYXRlcy4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJh bVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAg RWNQb2ludCAgICBFQyBwb2ludCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW5dICBCblggICAg ICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuWSAgICAgICAgWSBjb29y ZGluYXRlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVh dGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBU UlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAg T3RoZXJ3aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4g PiA+ICtFY1BvaW50U2V0QWZmaW5lQ29vcmRpbmF0ZXMgKA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9J RCAgKkVjR3JvdXAsDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAqRWNQb2ludCwNCj4gPiA+ICsg IElOIENPTlNUIFZPSUQgICpCblgsDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5ZLA0KPiA+ ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4g KyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiArfQ0KPiA+ ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRUMgUG9pbnQgYWRkaXRpb24uIEVjUG9pbnRSZXN1 bHQgPSBFY1BvaW50QSArIEVjUG9pbnRCLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAg RWNHcm91cCAgICAgICAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1bb3V0XSBF Y1BvaW50UmVzdWx0ICAgIEVDIHBvaW50IHRvIGhvbGQgdGhlIHJlc3VsdC4gVGhlIHBvaW50IHNo b3VsZA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBwcm9wZXJseSBp bml0aWFsaXplZC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRBICAgICAgICAgRUMgUG9p bnQuDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QiAgICAgICAgIEVDIFBvaW50Lg0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICAgICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdp dGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAg ICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3 aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtF Y1BvaW50QWRkICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gKyAg T1VUIFZPSUQgICAgICAgKkVjUG9pbnRSZXN1bHQsDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAq RWNQb2ludEEsDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEIsDQo+ID4gPiArICBJ TiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NF UlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ ID4gPiArLyoqDQo+ID4gPiArICBWYXJpYWJsZSBFQyBwb2ludCBtdWx0aXBsaWNhdGlvbi4gRWNQ b2ludFJlc3VsdCA9IEVjUG9pbnQgKiBCblBTY2FsYXIuDQo+ID4gPiArDQo+ID4gPiArICBAcGFy YW1baW5dICBFY0dyb3VwICAgICAgICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ICsgIEBwYXJh bVtvdXRdIEVjUG9pbnRSZXN1bHQgICAgRUMgcG9pbnQgdG8gaG9sZCB0aGUgcmVzdWx0LiBUaGUg cG9pbnQgc2hvdWxkDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIHBy b3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICAgICAg ICBFQyBQb2ludC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuUFNjYWxhciAgICAgICAgUCBTY2Fs YXIuDQo+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgICAgICAgIEJOIGNvbnRleHQsIGNy ZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFs IFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAg ICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0K PiA+ID4gK0VjUG9pbnRNdWwgKA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ ID4gPiArICBPVVQgVk9JRCAgICAgICAqRWNQb2ludFJlc3VsdCwNCj4gPiA+ICsgIElOIENPTlNU IFZPSUQgICpFY1BvaW50LA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuUFNjYWxhciwNCj4g PiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gK30NCj4g PiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIENhbGN1bGF0ZSB0aGUgaW52ZXJzZSBvZiB0aGUg c3VwcGxpZWQgRUMgcG9pbnQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICAgICBFY0dy b3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW2luLG91dF0gRWNQb2ludCAg IEVDIHBvaW50IHRvIGludmVydC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gICAgIEJuQ3R4ICAgICBC TiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFs IEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4g PiA+ICtFRklBUEkNCj4gPiA+ICtFY1BvaW50SW52ZXJ0ICgNCj4gPiA+ICsgIElOIENPTlNUIFZP SUQgICpFY0dyb3VwLA0KPiA+ID4gKyAgSU4gT1VUIFZPSUQgICAgKkVjUG9pbnQsDQo+ID4gPiAr ICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBB U1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPiAr DQo+ID4gPiArLyoqDQo+ID4gPiArICBDaGVjayBpZiB0aGUgc3VwcGxpZWQgcG9pbnQgaXMgb24g RUMgY3VydmUuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3Jv dXAgb2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgIEVDIHBvaW50IHRvIGNo ZWNrLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQg d2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUg ICAgICAgICAgT24gY3VydmUuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3 aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtF Y1BvaW50SXNPbkN1cnZlICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAq Qm5DdHgNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4g PiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4g PiArICBDaGVjayBpZiB0aGUgc3VwcGxpZWQgcG9pbnQgaXMgYXQgaW5maW5pdHkuDQo+ID4gPiAr DQo+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4g KyAgQHBhcmFtW2luXSAgRWNQb2ludCAgIEVDIHBvaW50IHRvIGNoZWNrLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIEF0IGluZmluaXR5Lg0KPiA+ID4gKyAgQHJldHZh bCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ ID4gPiArRUZJQVBJDQo+ID4gPiArRWNQb2ludElzQXRJbmZpbml0eSAoDQo+ID4gPiArICBJTiBD T05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50DQo+ ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiArICBy ZXR1cm4gRkFMU0U7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgQ2hl Y2sgaWYgRUMgcG9pbnRzIGFyZSBlcXVhbC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0g IEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50 QSAgRUMgcG9pbnQgQS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRCICBFQyBwb2ludCBC Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0 aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAg ICAgICAgQSA9PSBCLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4N Cj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNQb2lu dEVxdWFsICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gKyAgSU4g Q09OU1QgVk9JRCAgKkVjUG9pbnRBLA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRC LA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiArICApDQo+ID4gPiArew0K PiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiAr fQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgU2V0IEVDIHBvaW50IGNvbXByZXNzZWQg Y29vcmRpbmF0ZXMuIFBvaW50cyBjYW4gYmUgZGVzY3JpYmVkIGluIHRlcm1zIG9mDQo+ID4gPiAr ICB0aGVpciBjb21wcmVzc2VkIGNvb3JkaW5hdGVzLiBGb3IgYSBwb2ludCAoeCwgeSksIGZvciBh bnkgZ2l2ZW4gdmFsdWUgZm9yIHgNCj4gPiA+ICsgIHN1Y2ggdGhhdCB0aGUgcG9pbnQgaXMgb24g dGhlIGN1cnZlIHRoZXJlIHdpbGwgb25seSBldmVyIGJlIHR3byBwb3NzaWJsZQ0KPiA+ID4gKyAg dmFsdWVzIGZvciB5LiBUaGVyZWZvcmUsIGEgcG9pbnQgY2FuIGJlIHNldCB1c2luZyB0aGlzIGZ1 bmN0aW9uIHdoZXJlIEJuWCBpcw0KPiA+ID4gKyAgdGhlIHggY29vcmRpbmF0ZSBhbmQgWUJpdCBp cyBhIHZhbHVlIDAgb3IgMSB0byBpZGVudGlmeSB3aGljaCBvZiB0aGUgdHdvDQo+ID4gPiArICBw b3NzaWJsZSB2YWx1ZXMgZm9yIHkgc2hvdWxkIGJlIHVzZWQuDQo+ID4gPiArDQo+ID4gPiArICBA cGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ICsgIEBwYXJhbVtp bl0gIEVjUG9pbnQgICAgRUMgUG9pbnQuDQo+ID4gPiArICBAcGFyYW1baW5dICBCblggICAgICAg IFggY29vcmRpbmF0ZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFlCaXQgICAgICAgMCBvciAxIHRv IGlkZW50aWZ5IHdoaWNoIFkgdmFsdWUgaXMgdXNlZC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJu Q3R4ICAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4g PiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4g KyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtC T09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNQb2ludFNldENvbXByZXNzZWRDb29yZGlu YXRlcyAoDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIElOIFZP SUQgICAgICAgICpFY1BvaW50LA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuWCwNCj4gPiA+ ICsgIElOIFVJTlQ4ICAgICAgIFlCaXQsDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgN Cj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsg IHJldHVybiBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBB bGxvY2F0ZXMgYW5kIEluaXRpYWxpemVzIG9uZSBFbGxpcHRpYyBDdXJ2ZSBDb250ZXh0IGZvciBz dWJzZXF1ZW50IHVzZQ0KPiA+ID4gKyAgd2l0aCB0aGUgTklELg0KPiA+ID4gKw0KPiA+ID4gKyAg QHBhcmFtW2luXSAgTmlkIGNpcGhlciBOSUQNCj4gPiA+ICsgIEByZXR1cm4gICAgIFBvaW50ZXIg dG8gdGhlIEVsbGlwdGljIEN1cnZlIENvbnRleHQgdGhhdCBoYXMgYmVlbiBpbml0aWFsaXplZC4N Cj4gPiA+ICsgICAgICAgICAgICAgIElmIHRoZSBhbGxvY2F0aW9ucyBmYWlscywgRWNOZXdCeU5p ZCgpIHJldHVybnMgTlVMTC4NCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEICoNCj4gPiA+ICtFRklB UEkNCj4gPiA+ICtFY05ld0J5TmlkICgNCj4gPiA+ICsgIElOIFVJTlROICBOaWQNCj4gPiA+ICsg ICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBO VUxMOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlbGVhc2UgdGhl IHNwZWNpZmllZCBFQyBjb250ZXh0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWND b250ZXh0ICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0IHRvIGJlIHJlbGVhc2VkLg0KPiA+ID4g KyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY0ZyZWUgKA0KPiA+ID4g KyAgSU4gIFZPSUQgICpFY0NvbnRleHQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBB U1NFUlQgKEZBTFNFKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBH ZW5lcmF0ZXMgRUMga2V5IGFuZCByZXR1cm5zIEVDIHB1YmxpYyBrZXkgKFgsIFkpLCBQbGVhc2Ug bm90ZSwgdGhpcyBmdW5jdGlvbiB1c2VzDQo+ID4gPiArICBwc2V1ZG8gcmFuZG9tIG51bWJlciBn ZW5lcmF0b3IuIFRoZSBjYWxsZXIgbXVzdCBtYWtlIHN1cmUgUmFuZG9tU2VlZCgpDQo+ID4gPiAr ICBmdW5jdGlvbiB3YXMgcHJvcGVybHkgY2FsbGVkIGJlZm9yZS4NCj4gPiA+ICsgIFRoZSBFYyBj b250ZXh0IHNob3VsZCBiZSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgYnkgRWNOZXdCeU5pZC4NCj4g PiA+ICsgIFRoaXMgZnVuY3Rpb24gZ2VuZXJhdGVzIHJhbmRvbSBzZWNyZXQsIGFuZCBjb21wdXRl cyB0aGUgcHVibGljIGtleSAoWCwgWSksIHdoaWNoIGlzDQo+ID4gPiArICByZXR1cm5lZCB2aWEg cGFyYW1ldGVyIFB1YmxpYywgUHVibGljU2l6ZS4NCj4gPiA+ICsgIFggaXMgdGhlIGZpcnN0IGhh bGYgb2YgUHVibGljIHdpdGggc2l6ZSBiZWluZyBQdWJsaWNTaXplIC8gMiwNCj4gPiA+ICsgIFkg aXMgdGhlIHNlY29uZCBoYWxmIG9mIFB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUHVibGljU2l6ZSAv IDIuDQo+ID4gPiArICBFQyBjb250ZXh0IGlzIHVwZGF0ZWQgYWNjb3JkaW5nbHkuDQo+ID4gPiAr ICBJZiB0aGUgUHVibGljIGJ1ZmZlciBpcyB0b28gc21hbGwgdG8gaG9sZCB0aGUgcHVibGljIFgs IFksIEZBTFNFIGlzIHJldHVybmVkIGFuZA0KPiA+ID4gKyAgUHVibGljU2l6ZSBpcyBzZXQgdG8g dGhlIHJlcXVpcmVkIGJ1ZmZlciBzaXplIHRvIG9idGFpbiB0aGUgcHVibGljIFgsIFkuDQo+ID4g PiArICBGb3IgUC0yNTYsIHRoZSBQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1ieXRlIGlzIFgs IFNlY29uZCAzMi1ieXRlIGlzIFkuDQo+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQdWJsaWNTaXpl IGlzIDk2LiBGaXJzdCA0OC1ieXRlIGlzIFgsIFNlY29uZCA0OC1ieXRlIGlzIFkuDQo+ID4gPiAr ICBGb3IgUC01MjEsIHRoZSBQdWJsaWNTaXplIGlzIDEzMi4gRmlyc3QgNjYtYnl0ZSBpcyBYLCBT ZWNvbmQgNjYtYnl0ZSBpcyBZLg0KPiA+ID4gKyAgSWYgRWNDb250ZXh0IGlzIE5VTEwsIHRoZW4g cmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgSWYgUHVibGljU2l6ZSBpcyBOVUxMLCB0aGVuIHJldHVy biBGQUxTRS4NCj4gPiA+ICsgIElmIFB1YmxpY1NpemUgaXMgbGFyZ2UgZW5vdWdoIGJ1dCBQdWJs aWMgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArICBAcGFyYW1baW4sIG91dF0g IEVjQ29udGV4dCAgICAgIFBvaW50ZXIgdG8gdGhlIEVDIGNvbnRleHQuDQo+ID4gPiArICBAcGFy YW1bb3V0XSAgICAgIFB1YmxpY0tleSAgICAgIFBvaW50ZXIgdG8gdCBidWZmZXIgdG8gcmVjZWl2 ZSBnZW5lcmF0ZWQgcHVibGljIFgsWS4NCj4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgUHVibGlj S2V5U2l6ZSAgT24gaW5wdXQsIHRoZSBzaXplIG9mIFB1YmxpYyBidWZmZXIgaW4gYnl0ZXMuDQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHNp emUgb2YgZGF0YSByZXR1cm5lZCBpbiBQdWJsaWMgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gKyAg QHJldHZhbCBUUlVFICAgRUMgcHVibGljIFgsWSBnZW5lcmF0aW9uIHN1Y2NlZWRlZC4NCj4gPiA+ ICsgIEByZXR2YWwgRkFMU0UgIEVDIHB1YmxpYyBYLFkgZ2VuZXJhdGlvbiBmYWlsZWQuDQo+ID4g PiArICBAcmV0dmFsIEZBTFNFICBQdWJsaWNLZXlTaXplIGlzIG5vdCBsYXJnZSBlbm91Z2guDQo+ ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjR2VuZXJh dGVLZXkgKA0KPiA+ID4gKyAgSU4gT1VUICBWT0lEICAgKkVjQ29udGV4dCwNCj4gPiA+ICsgIE9V VCAgICAgVUlOVDggICpQdWJsaWNLZXksDQo+ID4gPiArICBJTiBPVVQgIFVJTlROICAqUHVibGlj S2V5U2l6ZQ0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0K PiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4g PiA+ICsgIEdldHMgdGhlIHB1YmxpYyBrZXkgY29tcG9uZW50IGZyb20gdGhlIGVzdGFibGlzaGVk IEVDIGNvbnRleHQuDQo+ID4gPiArICBUaGUgRWMgY29udGV4dCBzaG91bGQgYmUgY29ycmVjdGx5 IGluaXRpYWxpemVkIGJ5IEVjTmV3QnlOaWQsIGFuZCBzdWNjZXNzZnVsbHkNCj4gPiA+ICsgIGdl bmVyYXRlIGtleSBwYWlyIGZyb20gRWNHZW5lcmF0ZUtleSgpLg0KPiA+ID4gKyAgRm9yIFAtMjU2 LCB0aGUgUHVibGljU2l6ZSBpcyA2NC4gRmlyc3QgMzItYnl0ZSBpcyBYLCBTZWNvbmQgMzItYnl0 ZSBpcyBZLg0KPiA+ID4gKyAgRm9yIFAtMzg0LCB0aGUgUHVibGljU2l6ZSBpcyA5Ni4gRmlyc3Qg NDgtYnl0ZSBpcyBYLCBTZWNvbmQgNDgtYnl0ZSBpcyBZLg0KPiA+ID4gKyAgRm9yIFAtNTIxLCB0 aGUgUHVibGljU2l6ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5dGUgaXMgWCwgU2Vjb25kIDY2LWJ5dGUg aXMgWS4NCj4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRWNDb250ZXh0ICAgICAgUG9pbnRlciB0 byBFQyBjb250ZXh0IGJlaW5nIHNldC4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdICAgICAgUHVibGlj S2V5ICAgICAgUG9pbnRlciB0byB0IGJ1ZmZlciB0byByZWNlaXZlIGdlbmVyYXRlZCBwdWJsaWMg WCxZLg0KPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBQdWJsaWNLZXlTaXplICBPbiBpbnB1dCwg dGhlIHNpemUgb2YgUHVibGljIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVk IGluIFB1YmxpYyBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiArICBAcmV0dmFsICBUUlVFICAgRUMg a2V5IGNvbXBvbmVudCB3YXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ICsgIEByZXR2 YWwgIEZBTFNFICBJbnZhbGlkIEVDIGtleSBjb21wb25lbnQuDQo+ID4gPiArKiovDQo+ID4gPiAr Qk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjR2V0UHViS2V5ICgNCj4gPiA+ICsgIElO IE9VVCAgVk9JRCAgICpFY0NvbnRleHQsDQo+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAqUHVibGlj S2V5LA0KPiA+ID4gKyAgSU4gT1VUICBVSU5UTiAgKlB1YmxpY0tleVNpemUNCj4gPiA+ICsgICkN Cj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBGQUxT RTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBDb21wdXRlcyBleGNo YW5nZWQgY29tbW9uIGtleS4NCj4gPiA+ICsgIEdpdmVuIHBlZXIncyBwdWJsaWMga2V5IChYLCBZ KSwgdGhpcyBmdW5jdGlvbiBjb21wdXRlcyB0aGUgZXhjaGFuZ2VkIGNvbW1vbiBrZXksDQo+ID4g PiArICBiYXNlZCBvbiBpdHMgb3duIGNvbnRleHQgaW5jbHVkaW5nIHZhbHVlIG9mIGN1cnZlIHBh cmFtZXRlciBhbmQgcmFuZG9tIHNlY3JldC4NCj4gPiA+ICsgIFggaXMgdGhlIGZpcnN0IGhhbGYg b2YgUGVlclB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUGVlclB1YmxpY1NpemUgLyAyLA0KPiA+ID4g KyAgWSBpcyB0aGUgc2Vjb25kIGhhbGYgb2YgUGVlclB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUGVl clB1YmxpY1NpemUgLyAyLg0KPiA+ID4gKyAgSWYgRWNDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0 dXJuIEZBTFNFLg0KPiA+ID4gKyAgSWYgUGVlclB1YmxpYyBpcyBOVUxMLCB0aGVuIHJldHVybiBG QUxTRS4NCj4gPiA+ICsgIElmIFBlZXJQdWJsaWNTaXplIGlzIDAsIHRoZW4gcmV0dXJuIEZBTFNF Lg0KPiA+ID4gKyAgSWYgS2V5IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAg SWYgS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ ICsgIEZvciBQLTI1NiwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1ieXRlIGlz IFgsIFNlY29uZCAzMi1ieXRlIGlzIFkuDQo+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQZWVyUHVi bGljU2l6ZSBpcyA5Ni4gRmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNvbmQgNDgtYnl0ZSBpcyBZLg0K PiA+ID4gKyAgRm9yIFAtNTIxLCB0aGUgUGVlclB1YmxpY1NpemUgaXMgMTMyLiBGaXJzdCA2Ni1i eXRlIGlzIFgsIFNlY29uZCA2Ni1ieXRlIGlzIFkuDQo+ID4gPiArICBAcGFyYW1baW4sIG91dF0g IEVjQ29udGV4dCAgICAgICAgICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0Lg0KPiA+ID4gKyAg QHBhcmFtW2luXSAgICAgICBQZWVyUHVibGljICAgICAgICAgUG9pbnRlciB0byB0aGUgcGVlcidz IHB1YmxpYyBYLFkuDQo+ID4gPiArICBAcGFyYW1baW5dICAgICAgIFBlZXJQdWJsaWNTaXplICAg ICBTaXplIG9mIHBlZXIncyBwdWJsaWMgWCxZIGluIGJ5dGVzLg0KPiA+ID4gKyAgQHBhcmFtW2lu XSAgICAgICBDb21wcmVzc0ZsYWcgICAgICAgRmxhZyBvZiBQZWVyUHVibGljIGlzIGNvbXByZXNz ZWQgb3Igbm90Lg0KPiA+ID4gKyAgQHBhcmFtW291dF0gICAgICBLZXkgICAgICAgICAgICAgICAg UG9pbnRlciB0byB0aGUgYnVmZmVyIHRvIHJlY2VpdmUgZ2VuZXJhdGVkIGtleS4NCj4gPiA+ICsg IEBwYXJhbVtpbiwgb3V0XSAgS2V5U2l6ZSAgICAgICAgICAgIE9uIGlucHV0LCB0aGUgc2l6ZSBv ZiBLZXkgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGluIEtleSBi dWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICBFQyBleGNoYW5nZWQga2V5 IGdlbmVyYXRpb24gc3VjY2VlZGVkLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgRUMgZXhjaGFu Z2VkIGtleSBnZW5lcmF0aW9uIGZhaWxlZC4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIEtleVNp emUgaXMgbm90IGxhcmdlIGVub3VnaC4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4g PiArRUZJQVBJDQo+ID4gPiArRWNEaENvbXB1dGVLZXkgKA0KPiA+ID4gKyAgSU4gT1VUICBWT0lE ICAgICAgICAgKkVjQ29udGV4dCwNCj4gPiA+ICsgIElOICAgICAgQ09OU1QgVUlOVDggICpQZWVy UHVibGljLA0KPiA+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgUGVlclB1YmxpY1NpemUsDQo+ ID4gPiArICBJTiAgICAgIENPTlNUIElOVDMyICAqQ29tcHJlc3NGbGFnLA0KPiA+ID4gKyAgT1VU ICAgICBVSU5UOCAgICAgICAgKktleSwNCj4gPiA+ICsgIElOIE9VVCAgVUlOVE4gICAgICAgICpL ZXlTaXplDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiArfQ0KPiA+ID4gLS0NCj4gPiA+IDIuMzEuMS53 aW5kb3dzLjENCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+IA0KPiA+ID4NCg0K