From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web11.16299.1621241376617765558 for ; Mon, 17 May 2021 01:49:37 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=jC2Dfzlx; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: jiewen.yao@intel.com) IronPort-SDR: 9mqZSfVzs0I+REeFT6EebG/W3JmBhrDz57XAv/ud9IKgY90V04MQoah3vkfeLa2OPhq7bJLrUF vOJKOxXlqTzA== X-IronPort-AV: E=McAfee;i="6200,9189,9986"; a="200468628" X-IronPort-AV: E=Sophos;i="5.82,306,1613462400"; d="scan'208";a="200468628" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 May 2021 01:49:35 -0700 IronPort-SDR: LvPyOBmxjpjMAtj8afIasf1q1E9XOElwqPCBXA/lczEASR5Lo41pHcQfNAWVokx5WhePDczLIK dnIIcRGExyvw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,306,1613462400"; d="scan'208";a="437670442" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by fmsmga008.fm.intel.com with ESMTP; 17 May 2021 01:49:35 -0700 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Mon, 17 May 2021 01:49:34 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Mon, 17 May 2021 01:49:28 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4 via Frontend Transport; Mon, 17 May 2021 01:49:28 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.104) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Mon, 17 May 2021 01:49:22 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MADPHYLPg4DMO6m4p3ag8Uoneqw9dqSIWShWiwnBBljSWbuksGJ3vdOxBZMsGcDjecIC5rEge+B9ZznObjYsOsVyvU1d1BwrpeMqhYQ1aHlK7c7aoJJuWyVlFvdhrV1IL099qY6SBcgGwlKhTTDtmY5n3CN8O2WXEAWKpaqx7ORJ+mejcsjM6/n6cndn3hdXcRUUYRCs3KQXNJxia+BIL03M85Zggd5r3cqp++ZjJy+vZvKYG24rcwqNPlBOjFgjFLokHSwm6g95DxsfXGc8qixdtRNi4RdCEQJE8vUlrwOQzhtAjbdeAL153Z/YroytpdAsUBvrpjc0UnuCPsUTRQ== 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-SenderADCheck; bh=WRxEFZsEnuMXaR2udR7Ihzj1JEU8ayecoClpU0XBuVA=; b=nR991u3+yt1IKpmZoYT7AD90wJkzs1KFHOrPfv3fCrb10FMHRmG8Oh04YVI2LCnvEmv4XRvWZ7Gqqf1bBixm6tRBo+euBrc87zzNE6npPFOEDg2BLaTsTYDfwwpkmzOw4aXpSD2jY5BjM74qkf3BvDMISj8X8wiAYkEqXghggs39l2VzvRg054+HBva1qP7DzFCmUfiL5K4K1h9N6a5f02EjqiEcY3c5culy4C20WNtq+fm/uetpUnndeY+XROZAQJ9iU7w2euLEYhlW70WtAPGseS9HIm/Tyxw3MIOwnX1OE04pkon6MqSu1NL9MXFDfl6n2KffjQpqTet181k9Iw== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WRxEFZsEnuMXaR2udR7Ihzj1JEU8ayecoClpU0XBuVA=; b=jC2DfzlxkfZqdiK+IvKBgRNIAaIxaYzJvaMlB5EcQNGwWtUQGFCh5cdlP5fEptMBa2EDy8/I4qRnD95jQTDPD9dxAEjAwzaoX6PEg5kjE/tSkDAaBD51+8k3pcP6CMtnNKKSUtTTy6F/rshO5ag+bYDe0GoQd+6DE0zCL56S684= Received: from PH0PR11MB4885.namprd11.prod.outlook.com (2603:10b6:510:35::14) by PH0PR11MB4887.namprd11.prod.outlook.com (2603:10b6:510:30::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.26; Mon, 17 May 2021 08:49:20 +0000 Received: from PH0PR11MB4885.namprd11.prod.outlook.com ([fe80::4cf8:ac8:a6fd:d386]) by PH0PR11MB4885.namprd11.prod.outlook.com ([fe80::4cf8:ac8:a6fd:d386%7]) with mapi id 15.20.4129.031; Mon, 17 May 2021 08:49:20 +0000 From: "Yao, Jiewen" To: "devel@edk2.groups.io" , "ardb@kernel.org" , "Agrawal, Sachin" CC: "Wang, Jian J" , "Lu, XiaoyuX" , "Jiang, Guomin" , "Yao, Jiewen" Subject: Re: [edk2-devel] [PATCH v3 1/1] CryptoPkg: BaseCryptLib: Add RSA PSS verify support Thread-Topic: [edk2-devel] [PATCH v3 1/1] CryptoPkg: BaseCryptLib: Add RSA PSS verify support Thread-Index: AQHXQQ6cVyIj8oJciESzyFwTulnLgKrnbTCAgAADWrA= Date: Mon, 17 May 2021 08:49:20 +0000 Message-ID: References: <20210504175445.21980-1-sachin.agrawal@intel.com> <20210504175445.21980-2-sachin.agrawal@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [101.87.139.49] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c84fbb09-8039-424a-97d8-08d91910a9d2 x-ms-traffictypediagnostic: PH0PR11MB4887: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: bgYxx+k7ErA9V5gkrotWgAoO/ETj+GktwZ4Wtdp32unUtAJiRtYkQM2uMRW2oMChltqJLoc06uudelpcG/nyf8OJw3u2dZdMJacsSUgWSF3TbUxiHoG1TulwhAQ+dpu43H848BDC1a9xEaMyI0r0Fy5Z/6/RQu9Hx5x0ICSc1JRXFleJ0Y/hLO+K+erCws8qZFa+TxazDLKccW2f36KSKt5XBfU9tXZMvSNI8sCHDJ4Uxu9o3oLH9SyiUjMDqCrKgaDbC1wtwqCjepbGsDogesQDMlVw4KH1dEFWGWp7fV18yRpDfGwo8g5jiiTW3RLoxMvqPnOAgGJhZpUUKLTTyCNJFnMDD4F6MChrUJOCdeEZcFwuqMi7I/KOeksfwGI2XXCjUSApF1ufd/nQCp2K5jT97ZcYmUQTgedWcKaD0ir6xKSiqnoEwWza8FD2SiA6ANwFgbg6umak6v/i9sqSOIlAcJCi4QXp/yHoC7l/eZTPplhRVs/tUFabGtvanjX6pAdsKWtiNYA8vYDz2c0JjJWgBtORXpBqRPM+0/JAy7WFgQA+6TRzl1tQWIN5xMKUnqHwiFPXG0xTykSiZaEe3/nLf7PEYbS8bjmBF/9tCcgrKCVFn7CnbpXJDC09QtZSCwA1oKNvZbeNqNhrzHKkyannw4ebpTwZtsQ509dn1TT6rFjqdCqV5kcCzwCixQR35CXZ6WA71B3Vva4cPr+6cWJnyc8sEcCX3kLEuGxJQjOdhBr18hv4ej0wrRu/8uEPSWv4RSngRCkkguaOjaGvlQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB4885.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(346002)(136003)(39860400002)(376002)(396003)(366004)(966005)(110136005)(71200400001)(66556008)(122000001)(54906003)(7696005)(19627235002)(107886003)(8676002)(83380400001)(30864003)(9686003)(26005)(64756008)(52536014)(66946007)(6636002)(38100700002)(55016002)(53546011)(15650500001)(76116006)(316002)(4326008)(66446008)(33656002)(6506007)(478600001)(66476007)(86362001)(5660300002)(186003)(8936002)(2906002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?NnFPa3pyWEpTT2N6Nm5ycWxhcStpOFVDczNNODVxWkNXQXN3cXlqbnVYVU5h?= =?utf-8?B?b1ZvaU4xdG90c0J0bnFCaHdiS3psRE1XNUdERjI0S2dKWWNXaVNXMEtNRjVa?= =?utf-8?B?Q2ZCVEpsTDdlYXJQcno5OVRTakw0WXZHaC9pQm9xeGw3cWQ1c0loN1VVOE1t?= =?utf-8?B?U094NlBiUndWcUJvK1NLTWZneVJPZEE0N3ZmMml4TUNqNi85eEoyMEhSbHhx?= =?utf-8?B?bGJObk1XdnVKZ2ZvT042T1BjbmNVNWwwbGhOUU1NR25yN2k4TXFpYnRrOGxz?= =?utf-8?B?VlR1RGsrUHpzaTJvd20zYXNldnB1TjVpWXB2YmVQRGRzUTNzaUJnMXdsWmRP?= =?utf-8?B?emN4SkdEcVFUd2ZhRkxwVnJ5Z0h4NjNBdlkxamlPNHFWK0pwV21iOUpqZjFJ?= =?utf-8?B?QkMvS1VMNFNtRXdHTlhpR2srQjc5ejNrYW5wdUU4blJ5SGlFdUYrSFM3a0Jm?= =?utf-8?B?bk80TnFZWjlNYTdDbm43SktDSFg1eHFXb3VOekVodkl4MGZINTdCV3pQaHNu?= =?utf-8?B?M2cyWTdncVNUUmZMTWZJa2c2cFNSMEJleTNuOGJ1Zk4wZ2U0a0NFYlVrcGFl?= =?utf-8?B?MkxGeml5ZmpVNWFQdkMvSytDNHlNWC8xVWFKcENuMmpIcFlpdFFhL0JhNWs3?= =?utf-8?B?QS9UdG10L1NXMVU3d2FiTlFZK1dkcHhaa3BJK0h3aCt2c0FvS3liMXRMMXlO?= =?utf-8?B?aHdmY1h5aDhQeFhoQ2JOSnp1MTdNUTVjSFVGTmRCbkRHK1V4bGxoSFZvWGxr?= =?utf-8?B?UzdBUzdEMWdrWUs1YnBjeFU5R2Q4RHpFU0loaTFQWlFMUVR1L0NXUHFQaWpU?= =?utf-8?B?YmlSeEM5NFk1TWdSL0UvenJ1a3lSbVgxVGVoQnlMNk9XZExMaFkzZDViSitK?= =?utf-8?B?b2VLUk9mdHoyVkVxL2xGeXBUS2VMRmxHOUJsU3V1eGxOVDdmSFVpTFRvSXFL?= =?utf-8?B?WitPbzVkN0MzbGcvcXNEallKM05KZVdNTCtEV1RUQlFjZEFaS0ZHTFFkalEw?= =?utf-8?B?cjl4NUlRMnEvT1JQTG0wMGQxbU9LMGxrSUJKZVdOa0hUUXl4T3YwU1ZRcEVV?= =?utf-8?B?dE1vbTZkUUFidjV3TkMrbTc4LzF4amIwamtlbm45N1d5bTA3S3diUVpiTlFK?= =?utf-8?B?bGphY3R6by9jUUltdHVzRnd6N3pOTTg5emtJNGF3THlnZVhPdTd6MmlndjNU?= =?utf-8?B?QWRLRE9rUEtZbjRIWHRUTHo0Ry9ac1lOeTc4VmowT2RLQnBIUmZOSVNrYzFl?= =?utf-8?B?NFlud2NLTUF6RTdKSU4rZ0pLR0p6TC9raWp3Vks0N2svSk5GU1hYMW5HbTVI?= =?utf-8?B?SVlrZGQ3YjA0d1RrWkI5SVB1aFE3YXVYLzJreE40SmNUWlFBRHdkc1RVWjJJ?= =?utf-8?B?VFp0dkhBMFdZdHVrTVg2RFRTUnE3R3ljdTV4R3htV1ZDdUNlOTQxODl6ZkRM?= =?utf-8?B?M0wzK1BUdlVrTFJTc3VhalN0elB6c29yTHJOY282ZGJHdkdYSDBzWWFSMHl1?= =?utf-8?B?QjdUeEZVWit1UDdwYjR1MWRKSWh2NmJlem1EeWhZTC90UVNMazhoMEZ4d3Vl?= =?utf-8?B?UWpWY2NlY1NsWDJGUkE3ZjlIYWs5VElvTVFvZ2VsUXU4NXFseDA3ZVZ0TEky?= =?utf-8?B?NFdNbHB2dTArVkk3dFR2ZElRNHhmRjY4Z2Y4MUlBSU84UGV6WFY3SUt0R21o?= =?utf-8?B?cm5ZY3dsN3Jua3hlU1NKTENraFRTb2p1S3QzRHlYMHloNVBxeUlPN2V4VXkz?= =?utf-8?Q?QAqylqMYLs0SabVS5sOZOXAB6uwyXGbhXvQUgp3?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB4885.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c84fbb09-8039-424a-97d8-08d91910a9d2 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 May 2021 08:49:20.7076 (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: jzTRj/LCH7m1RqMwPNDu9jILq8vx7lcfo5H4lm0+e3N7s0TmZE/pM02jI7ni+wbUgYwCRC0d1uGtS7WLpf1khQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB4887 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgQXJkDQpDYW4gaXQgYmUgcmVzb2x2ZWQgaW4gcGF0Y2ggLSBodHRwczovL2VkazIuZ3JvdXBz LmlvL2cvZGV2ZWwvbWVzc2FnZS83NTEzNT9wPSwsLDIwLDAsMCwwOjpDcmVhdGVkLCxjcnlwdG9w a2csMjAsMiwwLDgyODIyNTc0ID8NCg0KSSByZWFsbHkgaG9wZSB0byBpbXByb3ZlIENJIHRvIGNh dGNoIHRoaXMgZWFybGllci4uLg0KDQpIaSBKaWFuDQpXb3VsZCB5b3UgcGxlYXNlIG1lcmdlIHRo aXMgQVNBUD8NCg0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2 ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgQXJk DQo+IEJpZXNoZXV2ZWwNCj4gU2VudDogTW9uZGF5LCBNYXkgMTcsIDIwMjEgNDozNiBQTQ0KPiBU bzogZWRrMi1kZXZlbC1ncm91cHMtaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPjsgQWdyYXdhbCwg U2FjaGluDQo+IDxzYWNoaW4uYWdyYXdhbEBpbnRlbC5jb20+DQo+IENjOiBZYW8sIEppZXdlbiA8 amlld2VuLnlhb0BpbnRlbC5jb20+OyBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNv bT47DQo+IEx1LCBYaWFveXVYIDx4aWFveXV4Lmx1QGludGVsLmNvbT47IEppYW5nLCBHdW9taW4g PGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BB VENIIHYzIDEvMV0gQ3J5cHRvUGtnOiBCYXNlQ3J5cHRMaWI6IEFkZCBSU0EgUFNTDQo+IHZlcmlm eSBzdXBwb3J0DQo+IA0KPiBPbiBUdWUsIDQgTWF5IDIwMjEgYXQgMTk6NTQsIEFncmF3YWwsIFNh Y2hpbiA8c2FjaGluLmFncmF3YWxAaW50ZWwuY29tPg0KPiB3cm90ZToNCj4gPg0KPiA+IFJFRjog aHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzE0DQo+ID4N Cj4gPiBUaGlzIHBhdGNoIHVzZXMgT3BlbnNzbCdzIEVWUCBBUEkncyB0byBwZXJmb3JtIFJTQVNT QS1QU1MgdmVyaWZpY2F0aW9uDQo+ID4gb2YgYSBiaW5hcnkgYmxvYi4NCj4gPg0KPiA+IENjOiBK aWV3ZW4gWWFvIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPiBDYzogSmlhbiBKIFdhbmcgPGpp YW4uai53YW5nQGludGVsLmNvbT4NCj4gPiBDYzogWGlhb3l1IEx1IDx4aWFveXV4Lmx1QGludGVs LmNvbT4NCj4gPiBDYzogR3VvbWluIEppYW5nIDxndW9taW4uamlhbmdAaW50ZWwuY29tPg0KPiA+ DQo+ID4gU2lnbmVkLW9mZi1ieTogU2FjaGluIEFncmF3YWwgPHNhY2hpbi5hZ3Jhd2FsQGludGVs LmNvbT4NCj4gDQo+IFRoaXMgcGF0Y2ggaXMgbm93IG1lcmdlZCwgYW5kIGlzIGJyZWFraW5nIHRo ZSBidWlsZCBvbiBBQVJDSDY0L0NMQU5HMzg6DQo+IA0KPiBDcnlwdG9Qa2cvTGlicmFyeS9CYXNl Q3J5cHRMaWIvUGsvQ3J5cHRSc2FQc3MuYzoxMTc6NzogZXJyb3I6IHZhcmlhYmxlDQo+ICdSZXN1 bHQnIGlzIHVzZWQgdW5pbml0aWFsaXplZCB3aGVuZXZlciAnaWYnIGNvbmRpdGlvbiBpcyB0cnVl DQo+IFstV2Vycm9yLC1Xc29tZXRpbWVzLXVuaW5pdGlhbGl6ZWRdDQo+ICAgaWYgKEV2cFZlcmlm eUN0eCA9PSBOVUxMKSB7DQo+ICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+fn5+DQo+IENyeXB0b1Br Zy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdFJzYVBzcy5jPjoxNTA6MTA6IG5vdGU6DQo+ IHVuaW5pdGlhbGl6ZWQgdXNlIG9jY3VycyBoZXJlDQo+ICAgcmV0dXJuIFJlc3VsdDsNCj4gICAg ICAgICAgXn5+fn5+DQo+IENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdFJz YVBzcy5jPjoxMTc6Mzogbm90ZTogcmVtb3ZlDQo+IHRoZSAnaWYnIGlmIGl0cyBjb25kaXRpb24g aXMgYWx3YXlzIGZhbHNlDQo+ICAgaWYgKEV2cFZlcmlmeUN0eCA9PSBOVUxMKSB7DQo+ICAgXn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQo+IENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExp Yi9Qay9DcnlwdFJzYVBzcy5jPjoxMTA6NzogZXJyb3I6DQo+IHZhcmlhYmxlICdSZXN1bHQnIGlz IHVzZWQgdW5pbml0aWFsaXplZCB3aGVuZXZlciAnaWYnIGNvbmRpdGlvbiBpcw0KPiB0cnVlIFst V2Vycm9yLC1Xc29tZXRpbWVzLXVuaW5pdGlhbGl6ZWRdDQo+ICAgaWYgKEV2cFJzYUtleSA9PSBO VUxMKSB7DQo+ICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+DQo+IENyeXB0b1BrZy9MaWJyYXJ5L0Jh c2VDcnlwdExpYi9Qay9DcnlwdFJzYVBzcy5jPjoxNTA6MTA6IG5vdGU6DQo+IHVuaW5pdGlhbGl6 ZWQgdXNlIG9jY3VycyBoZXJlDQo+ICAgcmV0dXJuIFJlc3VsdDsNCj4gICAgICAgICAgXn5+fn5+ DQo+IENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdFJzYVBzcy5jPjoxMTA6 Mzogbm90ZTogcmVtb3ZlDQo+IHRoZSAnaWYnIGlmIGl0cyBjb25kaXRpb24gaXMgYWx3YXlzIGZh bHNlDQo+ICAgaWYgKEV2cFJzYUtleSA9PSBOVUxMKSB7DQo+ICAgXn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+DQo+IENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdFJzYVBzcy5j Pjo3OToxNzogbm90ZToNCj4gaW5pdGlhbGl6ZSB0aGUgdmFyaWFibGUgJ1Jlc3VsdCcgdG8gc2ls ZW5jZSB0aGlzIHdhcm5pbmcNCj4gICBCT09MRUFOIFJlc3VsdDsNCj4gICAgICAgICAgICAgICAg IF4NCj4gDQo+IFRoZSBkaWFnbm9zdGljIHNlZW1zIGFjY3VyYXRlOiAnUmVzdWx0JyBpcyByZXR1 cm5lZCBvbiB0aGUgX0V4aXQgcGF0aCwNCj4gcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGlzIGhhcyBl dmVyIGJlZW4gaW5pdGlhbGl6ZWQgb3Igbm90Lg0KPiANCj4gUGxlYXNlIGZpeCB0aGlzIGFzYXAg LSBpdCBpcyBhZmZlY3Rpbmcgb3VyIENJLg0KPiANCj4gVGhhbmtzLA0KPiBBcmQuDQo+IA0KPiAN Cj4gDQo+ID4gLS0tDQo+ID4NCj4gPiBOb3RlczoNCj4gPiAgICAgdjM6DQo+ID4gICAgICAtIEZp eGVkIGdjYyBjb21waWxhdGlvbiBlcnJvciBbQ0kgU3lzdGVtXQ0KPiA+DQo+ID4gIENyeXB0b1Br Zy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdFJzYVBzcy5jICAgICAgICAgICAgICAgICAg ICAgICAgfCAxNDYNCj4gKysrKysrKysrKysrKysrDQo+ID4gIENyeXB0b1BrZy9MaWJyYXJ5L0Jh c2VDcnlwdExpYi9Qay9DcnlwdFJzYVBzc051bGwuYyAgICAgICAgICAgICAgICAgICAgfCAgNDYg KysrKysNCj4gPiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0UnNhUHNz U2lnbi5jICAgICAgICAgICAgICAgICAgICB8IDE2OQ0KPiArKysrKysrKysrKysrKysrKw0KPiA+ ICBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRSc2FQc3NTaWduTnVsbC5j ICAgICAgICAgICAgICAgIHwgIDYwDQo+ICsrKysrKw0KPiA+ICBDcnlwdG9Qa2cvTGlicmFyeS9C YXNlQ3J5cHRMaWJOdWxsL1BrL0NyeXB0UnNhUHNzTnVsbC5jICAgICAgICAgICAgICAgIHwgIDQ2 ICsrKysrDQo+ID4gIENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk51bGwvUGsvQ3J5cHRS c2FQc3NTaWduTnVsbC5jICAgICAgICAgICAgfCAgNjANCj4gKysrKysrDQo+ID4gIENyeXB0b1Br Zy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk9uUHJvdG9jb2xQcGkvQ3J5cHRMaWIuYyAgICAgICAgICAg ICAgICAgfCAgNjYNCj4gKysrKysrKw0KPiA+ICBDcnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJy YXJ5L0Jhc2VDcnlwdExpYi9CYXNlQ3J5cHRMaWJVbml0VGVzdHMuYyAgIHwgICAxDQo+ICsNCj4g PiAgQ3J5cHRvUGtnL1Rlc3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUnNhUHNzVGVz dHMuYyAgICAgICAgICAgICB8IDE5MQ0KPiArKysrKysrKysrKysrKysrKysrKw0KPiA+ICBDcnlw dG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Sc2FUZXN0cy5jICAgICAg ICAgICAgICAgIHwgICAyICsNCj4gPiAgQ3J5cHRvUGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlQ3J5 cHRMaWIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3NCArKysrKysrKw0KPiA+ ICBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvQmFzZUNyeXB0TGliLmluZiAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAyICsNCj4gPiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0 TGliL1BlaUNyeXB0TGliLmluZiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArDQo+ID4g IENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9SdW50aW1lQ3J5cHRMaWIuaW5mICAgICAg ICAgICAgICAgICAgICAgfCAgIDIgKw0KPiA+ICBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRM aWIvU21tQ3J5cHRMaWIuaW5mICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsNCj4gPiAg Q3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1VuaXRUZXN0SG9zdEJhc2VDcnlwdExpYi5p bmYgICAgICAgICAgICB8ICAgMiArDQo+ID4gIENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExp Yk51bGwvQmFzZUNyeXB0TGliTnVsbC5pbmYgICAgICAgICAgICAgICAgfCAgIDIgKw0KPiA+ICBD cnlwdG9Qa2cvUHJpdmF0ZS9Qcm90b2NvbC9DcnlwdG8uaCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDc4ICsrKysrKysrDQo+ID4gIENyeXB0b1BrZy9UZXN0L1VuaXRUZXN0 L0xpYnJhcnkvQmFzZUNyeXB0TGliL1Rlc3RCYXNlQ3J5cHRMaWIuaCAgICAgICAgfCAgIDMgKw0K PiA+ICBDcnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9UZXN0QmFz ZUNyeXB0TGliSG9zdC5pbmYgIHwgICAxDQo+ICsNCj4gPiAgQ3J5cHRvUGtnL1Rlc3QvVW5pdFRl c3QvTGlicmFyeS9CYXNlQ3J5cHRMaWIvVGVzdEJhc2VDcnlwdExpYlNoZWxsLmluZiB8ICAgMQ0K PiArDQo+ID4gIDIxIGZpbGVzIGNoYW5nZWQsIDk1NiBpbnNlcnRpb25zKCspDQo+ID4NCj4gPiBk aWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0UnNhUHNz LmMNCj4gYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRSc2FQc3MuYw0K PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5hZjdjZGFm YTRjNDcNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFz ZUNyeXB0TGliL1BrL0NyeXB0UnNhUHNzLmMNCj4gPiBAQCAtMCwwICsxLDE0NiBAQA0KPiA+ICsv KiogQGZpbGUNCj4gPiArICBSU0EgQXN5bW1ldHJpYyBDaXBoZXIgV3JhcHBlciBJbXBsZW1lbnRh dGlvbiBvdmVyIE9wZW5TU0wuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGZv bGxvd2luZyBBUElzIHdoaWNoIHByb3ZpZGUgYmFzaWMgY2FwYWJpbGl0aWVzIGZvciBSU0E6DQo+ ID4gKyAgMSkgUnNhUHNzVmVyaWZ5DQo+ID4gKw0KPiA+ICtDb3B5cmlnaHQgKGMpIDIwMjEsIElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ ICsNCj4gPiArI2luY2x1ZGUgIkludGVybmFsQ3J5cHRMaWIuaCINCj4gPiArDQo+ID4gKyNpbmNs dWRlIDxvcGVuc3NsL2JuLmg+DQo+ID4gKyNpbmNsdWRlIDxvcGVuc3NsL3JzYS5oPg0KPiA+ICsj aW5jbHVkZSA8b3BlbnNzbC9vYmplY3RzLmg+DQo+ID4gKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5o Pg0KPiA+ICsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJldHJpZXZlIGEgcG9pbnRlciB0byBF VlAgbWVzc2FnZSBkaWdlc3Qgb2JqZWN0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBEaWdl c3RMZW4gICBMZW5ndGggb2YgdGhlIG1lc3NhZ2UgZGlnZXN0Lg0KPiA+ICsNCj4gPiArKiovDQo+ ID4gK1NUQVRJQw0KPiA+ICtjb25zdA0KPiA+ICtFVlBfTUQqDQo+ID4gK0dldEV2cE1EICgNCj4g PiArICBJTiBVSU5UMTYgRGlnZXN0TGVuDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgc3dpdGNo IChEaWdlc3RMZW4pew0KPiA+ICsgICAgY2FzZSBTSEEyNTZfRElHRVNUX1NJWkU6DQo+ID4gKyAg ICAgIHJldHVybiBFVlBfc2hhMjU2KCk7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgY2Fz ZSBTSEEzODRfRElHRVNUX1NJWkU6DQo+ID4gKyAgICAgIHJldHVybiBFVlBfc2hhMzg0KCk7DQo+ ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgY2FzZSBTSEE1MTJfRElHRVNUX1NJWkU6DQo+ID4g KyAgICAgIHJldHVybiBFVlBfc2hhNTEyKCk7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAg ZGVmYXVsdDoNCj4gPiArICAgICAgcmV0dXJuIE5VTEw7DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVmVyaWZpZXMgdGhlIFJTQSBzaWduYXR1cmUgd2l0 aCBSU0FTU0EtUFNTIHNpZ25hdHVyZSBzY2hlbWUgZGVmaW5lZCBpbiBSRkMNCj4gODAxNy4NCj4g PiArICBJbXBsZW1lbnRhdGlvbiBkZXRlcm1pbmVzIHNhbHQgbGVuZ3RoIGF1dG9tYXRpY2FsbHkg ZnJvbSB0aGUgc2lnbmF0dXJlDQo+IGVuY29kaW5nLg0KPiA+ICsgIE1hc2sgZ2VuZXJhdGlvbiBm dW5jdGlvbiBpcyB0aGUgc2FtZSBhcyB0aGUgbWVzc2FnZSBkaWdlc3QgYWxnb3JpdGhtLg0KPiA+ ICsgIFNhbHQgbGVuZ3RoIHNob3VsZCBhdGxlYXN0IGJlIGVxdWFsIHRvIGRpZ2VzdCBsZW5ndGgu DQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFJzYUNvbnRleHQgICAgICBQb2ludGVyIHRvIFJT QSBjb250ZXh0IGZvciBzaWduYXR1cmUgdmVyaWZpY2F0aW9uLg0KPiA+ICsgIEBwYXJhbVtpbl0g IE1lc3NhZ2UgICAgICAgICBQb2ludGVyIHRvIG9jdGV0IG1lc3NhZ2UgdG8gYmUgdmVyaWZpZWQu DQo+ID4gKyAgQHBhcmFtW2luXSAgTXNnU2l6ZSAgICAgICAgIFNpemUgb2YgdGhlIG1lc3NhZ2Ug aW4gYnl0ZXMuDQo+ID4gKyAgQHBhcmFtW2luXSAgU2lnbmF0dXJlICAgICAgIFBvaW50ZXIgdG8g UlNBU1NBLVBTUyBzaWduYXR1cmUgdG8gYmUgdmVyaWZpZWQuDQo+ID4gKyAgQHBhcmFtW2luXSAg U2lnU2l6ZSAgICAgICAgIFNpemUgb2Ygc2lnbmF0dXJlIGluIGJ5dGVzLg0KPiA+ICsgIEBwYXJh bVtpbl0gIERpZ2VzdExlbiAgICAgICBMZW5ndGggb2YgZGlnZXN0IGZvciBSU0Egb3BlcmF0aW9u Lg0KPiA+ICsgIEBwYXJhbVtpbl0gIFNhbHRMZW4gICAgICAgICBTYWx0IGxlbmd0aCBmb3IgUFNT IGVuY29kaW5nLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsICBUUlVFICAgVmFsaWQgc2lnbmF0dXJl IGVuY29kZWQgaW4gUlNBU1NBLVBTUy4NCj4gPiArICBAcmV0dmFsICBGQUxTRSAgSW52YWxpZCBz aWduYXR1cmUgb3IgaW52YWxpZCBSU0EgY29udGV4dC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtC T09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ICtSc2FQc3NWZXJpZnkgKA0KPiA+ICsgIElOICBWT0lE ICAgICAgICAgKlJzYUNvbnRleHQsDQo+ID4gKyAgSU4gIENPTlNUIFVJTlQ4ICAqTWVzc2FnZSwN Cj4gPiArICBJTiAgVUlOVE4gICAgICAgIE1zZ1NpemUsDQo+ID4gKyAgSU4gIENPTlNUIFVJTlQ4 ICAqU2lnbmF0dXJlLA0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgU2lnU2l6ZSwNCj4gPiArICBJ TiAgVUlOVDE2ICAgICAgIERpZ2VzdExlbiwNCj4gPiArICBJTiAgVUlOVDE2ICAgICAgIFNhbHRM ZW4NCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBCT09MRUFOIFJlc3VsdDsNCj4gPiArICBFVlBf UEtFWSAqcEV2cFJzYUtleSA9IE5VTEw7DQo+ID4gKyAgRVZQX01EX0NUWCAqcEV2cFZlcmlmeUN0 eCA9IE5VTEw7DQo+ID4gKyAgRVZQX1BLRVlfQ1RYICpwS2V5Q3R4ID0gTlVMTDsNCj4gPiArICBD T05TVCBFVlBfTUQgICpIYXNoQWxnID0gTlVMTDsNCj4gPiArDQo+ID4gKyAgaWYgKFJzYUNvbnRl eHQgPT0gTlVMTCkgew0KPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ICsgIH0NCj4gPiArICBp ZiAoTWVzc2FnZSA9PSBOVUxMIHx8IE1zZ1NpemUgPT0gMCB8fCBNc2dTaXplID4gSU5UX01BWCkg ew0KPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ICsgIH0NCj4gPiArICBpZiAoU2lnbmF0dXJl ID09IE5VTEwgfHwgU2lnU2l6ZSA9PSAwIHx8IFNpZ1NpemUgPiBJTlRfTUFYKSB7DQo+ID4gKyAg ICByZXR1cm4gRkFMU0U7DQo+ID4gKyAgfQ0KPiA+ICsgIGlmIChTYWx0TGVuIDwgRGlnZXN0TGVu KSB7DQo+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBIYXNo QWxnID0gR2V0RXZwTUQoRGlnZXN0TGVuKTsNCj4gPiArDQo+ID4gKyAgaWYgKEhhc2hBbGcgPT0g TlVMTCkgew0KPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAg cEV2cFJzYUtleSA9IEVWUF9QS0VZX25ldygpOw0KPiA+ICsgIGlmIChwRXZwUnNhS2V5ID09IE5V TEwpIHsNCj4gPiArICAgIGdvdG8gX0V4aXQ7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBFVlBf UEtFWV9zZXQxX1JTQShwRXZwUnNhS2V5LCBSc2FDb250ZXh0KTsNCj4gPiArDQo+ID4gKyAgcEV2 cFZlcmlmeUN0eCA9IEVWUF9NRF9DVFhfY3JlYXRlKCk7DQo+ID4gKyAgaWYgKHBFdnBWZXJpZnlD dHggPT0gTlVMTCkgew0KPiA+ICsgICAgZ290byBfRXhpdDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ ICsgIFJlc3VsdCA9IEVWUF9EaWdlc3RWZXJpZnlJbml0KHBFdnBWZXJpZnlDdHgsICZwS2V5Q3R4 LCBIYXNoQWxnLCBOVUxMLA0KPiBwRXZwUnNhS2V5KSA+IDA7DQo+ID4gKyAgaWYgKHBLZXlDdHgg PT0gTlVMTCkgew0KPiA+ICsgICAgZ290byBfRXhpdDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsg IGlmIChSZXN1bHQpIHsNCj4gPiArICAgIFJlc3VsdCA9IEVWUF9QS0VZX0NUWF9zZXRfcnNhX3Bh ZGRpbmcocEtleUN0eCwNCj4gUlNBX1BLQ1MxX1BTU19QQURESU5HKSA+IDA7DQo+ID4gKyAgfQ0K PiA+ICsgIGlmIChSZXN1bHQpIHsNCj4gPiArICAgIFJlc3VsdCA9IEVWUF9QS0VZX0NUWF9zZXRf cnNhX3Bzc19zYWx0bGVuKHBLZXlDdHgsIFNhbHRMZW4pID4gMDsNCj4gPiArICB9DQo+ID4gKyAg aWYgKFJlc3VsdCkgew0KPiA+ICsgICAgUmVzdWx0ID0gRVZQX1BLRVlfQ1RYX3NldF9yc2FfbWdm MV9tZChwS2V5Q3R4LCBIYXNoQWxnKSA+IDA7DQo+ID4gKyAgfQ0KPiA+ICsgIGlmIChSZXN1bHQp IHsNCj4gPiArICAgIFJlc3VsdCA9IEVWUF9EaWdlc3RWZXJpZnlVcGRhdGUocEV2cFZlcmlmeUN0 eCwgTWVzc2FnZSwNCj4gKFVJTlQzMilNc2dTaXplKSA+IDA7DQo+ID4gKyAgfQ0KPiA+ICsgIGlm IChSZXN1bHQpIHsNCj4gPiArICAgIFJlc3VsdCA9IEVWUF9EaWdlc3RWZXJpZnlGaW5hbChwRXZw VmVyaWZ5Q3R4LCBTaWduYXR1cmUsIChVSU5UMzIpU2lnU2l6ZSkgPg0KPiAwOw0KPiA+ICsgIH0N Cj4gPiArDQo+ID4gK19FeGl0IDoNCj4gPiArICBpZiAocEV2cFJzYUtleSkgew0KPiA+ICsgICAg RVZQX1BLRVlfZnJlZShwRXZwUnNhS2V5KTsNCj4gPiArICB9DQo+ID4gKyAgaWYgKHBFdnBWZXJp ZnlDdHgpIHsNCj4gPiArICAgIEVWUF9NRF9DVFhfZGVzdHJveShwRXZwVmVyaWZ5Q3R4KTsNCj4g PiArICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybiBSZXN1bHQ7DQo+ID4gK30NCj4gPiBkaWZmIC0t Z2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0UnNhUHNzTnVsbC5j DQo+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0UnNhUHNzTnVsbC5j DQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjY5YzY4 ODlmYmM0Yg0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9C YXNlQ3J5cHRMaWIvUGsvQ3J5cHRSc2FQc3NOdWxsLmMNCj4gPiBAQCAtMCwwICsxLDQ2IEBADQo+ ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFJTQS1QU1MgQXN5bW1ldHJpYyBDaXBoZXIgV3JhcHBlciBJ bXBsZW1lbnRhdGlvbiBvdmVyIE9wZW5TU0wuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZmlsZSBkb2Vz IG5vdCBwcm92aWRlIHJlYWwgY2FwYWJpbGl0aWVzIGZvciBmb2xsb3dpbmcgQVBJcyBpbiBSU0Eg aGFuZGxpbmc6DQo+ID4gKyAgMSkgUnNhUHNzVmVyaWZ5DQo+ID4gKw0KPiA+ICtDb3B5cmlnaHQg KGMpIDIwMjEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4g PiArU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIkludGVybmFsQ3J5cHRMaWIuaCINCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgIFZlcmlmaWVzIHRoZSBSU0Egc2lnbmF0dXJlIHdpdGggUlNBU1NB LVBTUyBzaWduYXR1cmUgc2NoZW1lIGRlZmluZWQgaW4gUkZDDQo+IDgwMTcuDQo+ID4gKyAgSW1w bGVtZW50YXRpb24gZGV0ZXJtaW5lcyBzYWx0IGxlbmd0aCBhdXRvbWF0aWNhbGx5IGZyb20gdGhl IHNpZ25hdHVyZQ0KPiBlbmNvZGluZy4NCj4gPiArICBNYXNrIGdlbmVyYXRpb24gZnVuY3Rpb24g aXMgdGhlIHNhbWUgYXMgdGhlIG1lc3NhZ2UgZGlnZXN0IGFsZ29yaXRobS4NCj4gPiArICBTYWx0 IGxlbmd0aCBzaG91bGQgYXRsZWFzdCBiZSBlcXVhbCB0byBkaWdlc3QgbGVuZ3RoLg0KPiA+ICsN Cj4gPiArICBAcGFyYW1baW5dICBSc2FDb250ZXh0ICAgICAgUG9pbnRlciB0byBSU0EgY29udGV4 dCBmb3Igc2lnbmF0dXJlIHZlcmlmaWNhdGlvbi4NCj4gPiArICBAcGFyYW1baW5dICBNZXNzYWdl ICAgICAgICAgUG9pbnRlciB0byBvY3RldCBtZXNzYWdlIHRvIGJlIHZlcmlmaWVkLg0KPiA+ICsg IEBwYXJhbVtpbl0gIE1zZ1NpemUgICAgICAgICBTaXplIG9mIHRoZSBtZXNzYWdlIGluIGJ5dGVz Lg0KPiA+ICsgIEBwYXJhbVtpbl0gIFNpZ25hdHVyZSAgICAgICBQb2ludGVyIHRvIFJTQVNTQS1Q U1Mgc2lnbmF0dXJlIHRvIGJlIHZlcmlmaWVkLg0KPiA+ICsgIEBwYXJhbVtpbl0gIFNpZ1NpemUg ICAgICAgICBTaXplIG9mIHNpZ25hdHVyZSBpbiBieXRlcy4NCj4gPiArICBAcGFyYW1baW5dICBE aWdlc3RMZW4gICAgICAgTGVuZ3RoIG9mIGRpZ2VzdCBmb3IgUlNBIG9wZXJhdGlvbi4NCj4gPiAr ICBAcGFyYW1baW5dICBTYWx0TGVuICAgICAgICAgU2FsdCBsZW5ndGggZm9yIFBTUyBlbmNvZGlu Zy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCAgVFJVRSAgIFZhbGlkIHNpZ25hdHVyZSBlbmNvZGVk IGluIFJTQVNTQS1QU1MuDQo+ID4gKyAgQHJldHZhbCAgRkFMU0UgIEludmFsaWQgc2lnbmF0dXJl IG9yIGludmFsaWQgUlNBIGNvbnRleHQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArQk9PTEVBTg0K PiA+ICtFRklBUEkNCj4gPiArUnNhUHNzVmVyaWZ5ICgNCj4gPiArICBJTiAgVk9JRCAgICAgICAg ICpSc2FDb250ZXh0LA0KPiA+ICsgIElOICBDT05TVCBVSU5UOCAgKk1lc3NhZ2UsDQo+ID4gKyAg SU4gIFVJTlROICAgICAgICBNc2dTaXplLA0KPiA+ICsgIElOICBDT05TVCBVSU5UOCAgKlNpZ25h dHVyZSwNCj4gPiArICBJTiAgVUlOVE4gICAgICAgIFNpZ1NpemUsDQo+ID4gKyAgSU4gIFVJTlQx NiAgICAgICBEaWdlc3RMZW4sDQo+ID4gKyAgSU4gIFVJTlQxNiAgICAgICBTYWx0TGVuDQo+ID4g KyAgKQ0KPiA+ICt7DQo+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gKyAgcmV0dXJuIEZBTFNF Ow0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExp Yi9Qay9DcnlwdFJzYVBzc1NpZ24uYw0KPiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExp Yi9Qay9DcnlwdFJzYVBzc1NpZ24uYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5k ZXggMDAwMDAwMDAwMDAwLi4xZWQwNzZlNDE5MmMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysr IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0UnNhUHNzU2lnbi5jDQo+ ID4gQEAgLTAsMCArMSwxNjkgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgUlNBIFBTUyBBc3lt bWV0cmljIENpcGhlciBXcmFwcGVyIEltcGxlbWVudGF0aW9uIG92ZXIgT3BlblNTTC4NCj4gPiAr DQo+ID4gKyAgVGhpcyBmaWxlIGltcGxlbWVudHMgZm9sbG93aW5nIEFQSXMgd2hpY2ggcHJvdmlk ZSBiYXNpYyBjYXBhYmlsaXRpZXMgZm9yIFJTQToNCj4gPiArICAxKSBSc2FQc3NTaWduDQo+ID4g Kw0KPiA+ICtDb3B5cmlnaHQgKGMpIDIwMjEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gPiArU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVz ZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIkludGVybmFs Q3J5cHRMaWIuaCINCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+DQo+ID4gKyNp bmNsdWRlIDxvcGVuc3NsL3JzYS5oPg0KPiA+ICsjaW5jbHVkZSA8b3BlbnNzbC9vYmplY3RzLmg+ DQo+ID4gKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPg0KPiA+ICsNCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIFJldHJpZXZlIGEgcG9pbnRlciB0byBFVlAgbWVzc2FnZSBkaWdlc3Qgb2JqZWN0Lg0K PiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBEaWdlc3RMZW4gICBMZW5ndGggb2YgdGhlIG1lc3Nh Z2UgZGlnZXN0Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ICtjb25zdA0KPiA+ ICtFVlBfTUQqDQo+ID4gK0dldEV2cE1EICgNCj4gPiArICBJTiBVSU5UMTYgRGlnZXN0TGVuDQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgc3dpdGNoIChEaWdlc3RMZW4pew0KPiA+ICsgICAgY2Fz ZSBTSEEyNTZfRElHRVNUX1NJWkU6DQo+ID4gKyAgICAgIHJldHVybiBFVlBfc2hhMjU2KCk7DQo+ ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgY2FzZSBTSEEzODRfRElHRVNUX1NJWkU6DQo+ID4g KyAgICAgIHJldHVybiBFVlBfc2hhMzg0KCk7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAg Y2FzZSBTSEE1MTJfRElHRVNUX1NJWkU6DQo+ID4gKyAgICAgIHJldHVybiBFVlBfc2hhNTEyKCk7 DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgZGVmYXVsdDoNCj4gPiArICAgICAgcmV0dXJu IE5VTEw7DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg Q2FycmllcyBvdXQgdGhlIFJTQS1TU0Egc2lnbmF0dXJlIGdlbmVyYXRpb24gd2l0aCBFTVNBLVBT UyBlbmNvZGluZw0KPiBzY2hlbWUuDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gY2Fycmll cyBvdXQgdGhlIFJTQS1TU0Egc2lnbmF0dXJlIGdlbmVyYXRpb24gd2l0aCBFTVNBLVBTUw0KPiBl bmNvZGluZyBzY2hlbWUgZGVmaW5lZCBpbg0KPiA+ICsgIFJGQyA4MDE3Lg0KPiA+ICsgIE1hc2sg Z2VuZXJhdGlvbiBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyB0aGUgbWVzc2FnZSBkaWdlc3QgYWxn b3JpdGhtLg0KPiA+ICsgIElmIHRoZSBTaWduYXR1cmUgYnVmZmVyIGlzIHRvbyBzbWFsbCB0byBo b2xkIHRoZSBjb250ZW50cyBvZiBzaWduYXR1cmUsIEZBTFNFDQo+ID4gKyAgaXMgcmV0dXJuZWQg YW5kIFNpZ1NpemUgaXMgc2V0IHRvIHRoZSByZXF1aXJlZCBidWZmZXIgc2l6ZSB0byBvYnRhaW4g dGhlDQo+IHNpZ25hdHVyZS4NCj4gPiArDQo+ID4gKyAgSWYgUnNhQ29udGV4dCBpcyBOVUxMLCB0 aGVuIHJldHVybiBGQUxTRS4NCj4gPiArICBJZiBNZXNzYWdlIGlzIE5VTEwsIHRoZW4gcmV0dXJu IEZBTFNFLg0KPiA+ICsgIElmIE1zZ1NpemUgaXMgemVybyBvciA+IElOVF9NQVgsIHRoZW4gcmV0 dXJuIEZBTFNFLg0KPiA+ICsgIElmIERpZ2VzdExlbiBpcyBOT1QgMzIsIDQ4IG9yIDY0LCByZXR1 cm4gRkFMU0UuDQo+ID4gKyAgSWYgU2FsdExlbiBpcyA8IERpZ2VzdExlbiwgdGhlbiByZXR1cm4g RkFMU0UuDQo+ID4gKyAgSWYgU2lnU2l6ZSBpcyBsYXJnZSBlbm91Z2ggYnV0IFNpZ25hdHVyZSBp cyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiArICBJZiB0aGlzIGludGVyZmFjZSBpcyBu b3Qgc3VwcG9ydGVkLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2lu XSAgICAgIFJzYUNvbnRleHQgICBQb2ludGVyIHRvIFJTQSBjb250ZXh0IGZvciBzaWduYXR1cmUg Z2VuZXJhdGlvbi4NCj4gPiArICBAcGFyYW1baW5dICAgICAgTWVzc2FnZSAgICAgIFBvaW50ZXIg dG8gb2N0ZXQgbWVzc2FnZSB0byBiZSBzaWduZWQuDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgIE1z Z1NpemUgICAgICBTaXplIG9mIHRoZSBtZXNzYWdlIGluIGJ5dGVzLg0KPiA+ICsgIEBwYXJhbVtp bl0gICAgICBEaWdlc3RMZW4gICAgTGVuZ3RoIG9mIHRoZSBkaWdlc3QgaW4gYnl0ZXMgdG8gYmUg dXNlZCBmb3IgUlNBDQo+IHNpZ25hdHVyZSBvcGVyYXRpb24uDQo+ID4gKyAgQHBhcmFtW2luXSAg ICAgIFNhbHRMZW4gICAgICBMZW5ndGggb2YgdGhlIHNhbHQgaW4gYnl0ZXMgdG8gYmUgdXNlZCBm b3IgUFNTDQo+IGVuY29kaW5nLg0KPiA+ICsgIEBwYXJhbVtvdXRdICAgICBTaWduYXR1cmUgICAg UG9pbnRlciB0byBidWZmZXIgdG8gcmVjZWl2ZSBSU0EgUFNTIHNpZ25hdHVyZS4NCj4gPiArICBA cGFyYW1baW4sIG91dF0gU2lnU2l6ZSAgICAgIE9uIGlucHV0LCB0aGUgc2l6ZSBvZiBTaWduYXR1 cmUgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGluIFNpZ25hdHVyZSBidWZmZXIg aW4NCj4gYnl0ZXMuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgIFRSVUUgICBTaWduYXR1cmUgc3Vj Y2Vzc2Z1bGx5IGdlbmVyYXRlZCBpbiBSU0FTU0EtUFNTLg0KPiA+ICsgIEByZXR2YWwgIEZBTFNF ICBTaWduYXR1cmUgZ2VuZXJhdGlvbiBmYWlsZWQuDQo+ID4gKyAgQHJldHZhbCAgRkFMU0UgIFNp Z1NpemUgaXMgdG9vIHNtYWxsLg0KPiA+ICsgIEByZXR2YWwgIEZBTFNFICBUaGlzIGludGVyZmFj ZSBpcyBub3Qgc3VwcG9ydGVkLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0JPT0xFQU4NCj4gPiAr RUZJQVBJDQo+ID4gK1JzYVBzc1NpZ24gKA0KPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICpS c2FDb250ZXh0LA0KPiA+ICsgIElOICAgICAgQ09OU1QgVUlOVDggICpNZXNzYWdlLA0KPiA+ICsg IElOICAgICAgVUlOVE4gICAgICAgIE1zZ1NpemUsDQo+ID4gKyAgSU4gICAgICBVSU5UMTYgICAg ICAgRGlnZXN0TGVuLA0KPiA+ICsgIElOICAgICAgVUlOVDE2ICAgICAgIFNhbHRMZW4sDQo+ID4g KyAgT1VUICAgICBVSU5UOCAgICAgICAgKlNpZ25hdHVyZSwNCj4gPiArICBJTiBPVVQgIFVJTlRO ICAgICAgICAqU2lnU2l6ZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEJPT0xFQU4gICAgICAg ICAgICAgICBSZXN1bHQ7DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgIFJzYVNpZ1NpemU7 DQo+ID4gKyAgRVZQX1BLRVkgICAgICAgICAgICAgICpwRXZwUnNhS2V5ID0gTlVMTDsNCj4gPiAr ICBFVlBfTURfQ1RYICAgICAgICAgICAgKnBFdnBWZXJpZnlDdHggPSBOVUxMOw0KPiA+ICsgIEVW UF9QS0VZX0NUWCAgICAgICAgICAqcEtleUN0eCA9IE5VTEw7DQo+ID4gKyAgQ09OU1QgRVZQX01E ICAgICAgICAgICpIYXNoQWxnID0gTlVMTDsNCj4gPiArDQo+ID4gKyAgaWYgKFJzYUNvbnRleHQg PT0gTlVMTCkgew0KPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ICsgIH0NCj4gPiArICBpZiAo TWVzc2FnZSA9PSBOVUxMIHx8IE1zZ1NpemUgPT0gMCB8fCBNc2dTaXplID4gSU5UX01BWCkgew0K PiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgUnNhU2lnU2l6 ZSA9IFJTQV9zaXplIChSc2FDb250ZXh0KTsNCj4gPiArICBpZiAoKlNpZ1NpemUgPCBSc2FTaWdT aXplKSB7DQo+ID4gKyAgICAqU2lnU2l6ZSA9IFJzYVNpZ1NpemU7DQo+ID4gKyAgICByZXR1cm4g RkFMU0U7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBpZiAoU2lnbmF0dXJlID09IE5VTEwpIHsN Cj4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmIChTYWx0 TGVuIDwgRGlnZXN0TGVuKSB7DQo+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gKyAgfQ0KPiA+ ICsNCj4gPiArICBIYXNoQWxnID0gR2V0RXZwTUQoRGlnZXN0TGVuKTsNCj4gPiArDQo+ID4gKyAg aWYgKEhhc2hBbGcgPT0gTlVMTCkgew0KPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ICsgIH0N Cj4gPiArDQo+ID4gKyAgcEV2cFJzYUtleSA9IEVWUF9QS0VZX25ldygpOw0KPiA+ICsgIGlmIChw RXZwUnNhS2V5ID09IE5VTEwpIHsNCj4gPiArICAgIGdvdG8gX0V4aXQ7DQo+ID4gKyAgfQ0KPiA+ ICsNCj4gPiArICBFVlBfUEtFWV9zZXQxX1JTQShwRXZwUnNhS2V5LCBSc2FDb250ZXh0KTsNCj4g PiArDQo+ID4gKyAgcEV2cFZlcmlmeUN0eCA9IEVWUF9NRF9DVFhfY3JlYXRlKCk7DQo+ID4gKyAg aWYgKHBFdnBWZXJpZnlDdHggPT0gTlVMTCkgew0KPiA+ICsgICAgZ290byBfRXhpdDsNCj4gPiAr ICB9DQo+ID4gKw0KPiA+ICsgIFJlc3VsdCA9IEVWUF9EaWdlc3RTaWduSW5pdChwRXZwVmVyaWZ5 Q3R4LCAmcEtleUN0eCwgSGFzaEFsZywgTlVMTCwNCj4gcEV2cFJzYUtleSkgPiAwOw0KPiA+ICsg IGlmIChwS2V5Q3R4ID09IE5VTEwpIHsNCj4gPiArICAgIGdvdG8gX0V4aXQ7DQo+ID4gKyAgfQ0K PiA+ICsNCj4gPiArICBpZiAoUmVzdWx0KSB7DQo+ID4gKyAgICBSZXN1bHQgPSBFVlBfUEtFWV9D VFhfc2V0X3JzYV9wYWRkaW5nKHBLZXlDdHgsDQo+IFJTQV9QS0NTMV9QU1NfUEFERElORykgPiAw Ow0KPiA+ICsgIH0NCj4gPiArICBpZiAoUmVzdWx0KSB7DQo+ID4gKyAgICBSZXN1bHQgPSBFVlBf UEtFWV9DVFhfc2V0X3JzYV9wc3Nfc2FsdGxlbihwS2V5Q3R4LCBTYWx0TGVuKSA+IDA7DQo+ID4g KyAgfQ0KPiA+ICsgIGlmIChSZXN1bHQpIHsNCj4gPiArICAgIFJlc3VsdCA9IEVWUF9QS0VZX0NU WF9zZXRfcnNhX21nZjFfbWQocEtleUN0eCwgSGFzaEFsZykgPiAwOw0KPiA+ICsgIH0NCj4gPiAr ICBpZiAoUmVzdWx0KSB7DQo+ID4gKyAgICBSZXN1bHQgPSBFVlBfRGlnZXN0U2lnblVwZGF0ZShw RXZwVmVyaWZ5Q3R4LCBNZXNzYWdlLA0KPiAoVUlOVDMyKU1zZ1NpemUpID4gMDsNCj4gPiArICB9 DQo+ID4gKyAgaWYgKFJlc3VsdCkgew0KPiA+ICsgICAgUmVzdWx0ID0gRVZQX0RpZ2VzdFNpZ25G aW5hbChwRXZwVmVyaWZ5Q3R4LCBTaWduYXR1cmUsIFNpZ1NpemUpID4gMDsNCj4gPiArICB9DQo+ ID4gKw0KPiA+ICtfRXhpdCA6DQo+ID4gKyAgaWYgKHBFdnBSc2FLZXkpIHsNCj4gPiArICAgIEVW UF9QS0VZX2ZyZWUocEV2cFJzYUtleSk7DQo+ID4gKyAgfQ0KPiA+ICsgIGlmIChwRXZwVmVyaWZ5 Q3R4KSB7DQo+ID4gKyAgICBFVlBfTURfQ1RYX2Rlc3Ryb3kocEV2cFZlcmlmeUN0eCk7DQo+ID4g KyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gUmVzdWx0Ow0KPiA+ICt9DQo+ID4gZGlmZiAtLWdp dCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdFJzYVBzc1NpZ25OdWxs LmMNCj4gYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRSc2FQc3NTaWdu TnVsbC5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAu LjRlZDJkZmNlOTkyYQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9DcnlwdG9Qa2cvTGli cmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRSc2FQc3NTaWduTnVsbC5jDQo+ID4gQEAgLTAsMCAr MSw2MCBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBSU0EtUFNTIEFzeW1tZXRyaWMgQ2lwaGVy IFdyYXBwZXIgSW1wbGVtZW50YXRpb24gb3ZlciBPcGVuU1NMLg0KPiA+ICsNCj4gPiArICBUaGlz IGZpbGUgZG9lcyBub3QgcHJvdmlkZSByZWFsIGNhcGFiaWxpdGllcyBmb3IgZm9sbG93aW5nIEFQ SXMgaW4gUlNBIGhhbmRsaW5nOg0KPiA+ICsgIDEpIFJzYVBzc1NpZ24NCj4gPiArDQo+ID4gK0Nv cHlyaWdodCAoYykgMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0K PiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAiSW50ZXJuYWxDcnlwdExpYi5o Ig0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgQ2FycmllcyBvdXQgdGhlIFJTQS1TU0Egc2lnbmF0 dXJlIGdlbmVyYXRpb24gd2l0aCBFTVNBLVBTUyBlbmNvZGluZw0KPiBzY2hlbWUuDQo+ID4gKw0K PiA+ICsgIFRoaXMgZnVuY3Rpb24gY2FycmllcyBvdXQgdGhlIFJTQS1TU0Egc2lnbmF0dXJlIGdl bmVyYXRpb24gd2l0aCBFTVNBLVBTUw0KPiBlbmNvZGluZyBzY2hlbWUgZGVmaW5lZCBpbg0KPiA+ ICsgIFJGQyA4MDE3Lg0KPiA+ICsgIE1hc2sgZ2VuZXJhdGlvbiBmdW5jdGlvbiBpcyB0aGUgc2Ft ZSBhcyB0aGUgbWVzc2FnZSBkaWdlc3QgYWxnb3JpdGhtLg0KPiA+ICsgIElmIHRoZSBTaWduYXR1 cmUgYnVmZmVyIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSBjb250ZW50cyBvZiBzaWduYXR1cmUs IEZBTFNFDQo+ID4gKyAgaXMgcmV0dXJuZWQgYW5kIFNpZ1NpemUgaXMgc2V0IHRvIHRoZSByZXF1 aXJlZCBidWZmZXIgc2l6ZSB0byBvYnRhaW4gdGhlDQo+IHNpZ25hdHVyZS4NCj4gPiArDQo+ID4g KyAgSWYgUnNhQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiArICBJZiBN ZXNzYWdlIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ICsgIElmIE1zZ1NpemUgaXMg emVybyBvciA+IElOVF9NQVgsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ICsgIElmIERpZ2VzdExl biBpcyBOT1QgMzIsIDQ4IG9yIDY0LCByZXR1cm4gRkFMU0UuDQo+ID4gKyAgSWYgU2FsdExlbiBp cyA8IERpZ2VzdExlbiwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gKyAgSWYgU2lnU2l6ZSBpcyBs YXJnZSBlbm91Z2ggYnV0IFNpZ25hdHVyZSBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4g PiArICBJZiB0aGlzIGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLCB0aGVuIHJldHVybiBGQUxT RS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgIFJzYUNvbnRleHQgICBQb2ludGVyIHRv IFJTQSBjb250ZXh0IGZvciBzaWduYXR1cmUgZ2VuZXJhdGlvbi4NCj4gPiArICBAcGFyYW1baW5d ICAgICAgTWVzc2FnZSAgICAgIFBvaW50ZXIgdG8gb2N0ZXQgbWVzc2FnZSB0byBiZSBzaWduZWQu DQo+ID4gKyAgQHBhcmFtW2luXSAgICAgIE1zZ1NpemUgICAgICBTaXplIG9mIHRoZSBtZXNzYWdl IGluIGJ5dGVzLg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICBEaWdlc3RMZW4gICAgTGVuZ3RoIG9m IHRoZSBkaWdlc3QgaW4gYnl0ZXMgdG8gYmUgdXNlZCBmb3IgUlNBDQo+IHNpZ25hdHVyZSBvcGVy YXRpb24uDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgIFNhbHRMZW4gICAgICBMZW5ndGggb2YgdGhl IHNhbHQgaW4gYnl0ZXMgdG8gYmUgdXNlZCBmb3IgUFNTDQo+IGVuY29kaW5nLg0KPiA+ICsgIEBw YXJhbVtvdXRdICAgICBTaWduYXR1cmUgICAgUG9pbnRlciB0byBidWZmZXIgdG8gcmVjZWl2ZSBS U0EgUFNTIHNpZ25hdHVyZS4NCj4gPiArICBAcGFyYW1baW4sIG91dF0gU2lnU2l6ZSAgICAgIE9u IGlucHV0LCB0aGUgc2l6ZSBvZiBTaWduYXR1cmUgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJl dHVybmVkIGluIFNpZ25hdHVyZSBidWZmZXIgaW4NCj4gYnl0ZXMuDQo+ID4gKw0KPiA+ICsgIEBy ZXR2YWwgIFRSVUUgICBTaWduYXR1cmUgc3VjY2Vzc2Z1bGx5IGdlbmVyYXRlZCBpbiBSU0FTU0Et UFNTLg0KPiA+ICsgIEByZXR2YWwgIEZBTFNFICBTaWduYXR1cmUgZ2VuZXJhdGlvbiBmYWlsZWQu DQo+ID4gKyAgQHJldHZhbCAgRkFMU0UgIFNpZ1NpemUgaXMgdG9vIHNtYWxsLg0KPiA+ICsgIEBy ZXR2YWwgIEZBTFNFICBUaGlzIGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK0JPT0xFQU4NCj4gPiArRUZJQVBJDQo+ID4gK1JzYVBzc1NpZ24gKA0KPiA+ ICsgIElOICAgICAgVk9JRCAgICAgICAgICpSc2FDb250ZXh0LA0KPiA+ICsgIElOICAgICAgQ09O U1QgVUlOVDggICpNZXNzYWdlLA0KPiA+ICsgIElOICAgICAgVUlOVE4gICAgICAgIE1zZ1NpemUs DQo+ID4gKyAgSU4gICAgICBVSU5UMTYgICAgICAgRGlnZXN0TGVuLA0KPiA+ICsgIElOICAgICAg VUlOVDE2ICAgICAgIFNhbHRMZW4sDQo+ID4gKyAgT1VUICAgICBVSU5UOCAgICAgICAgKlNpZ25h dHVyZSwNCj4gPiArICBJTiBPVVQgIFVJTlROICAgICAgICAqU2lnU2l6ZQ0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiAr fQ0KPiA+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWJOdWxsL1Br L0NyeXB0UnNhUHNzTnVsbC5jDQo+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliTnVs bC9Qay9DcnlwdFJzYVBzc051bGwuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5k ZXggMDAwMDAwMDAwMDAwLi42OWM2ODg5ZmJjNGINCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysr IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9Qay9DcnlwdFJzYVBzc051bGwu Yw0KPiA+IEBAIC0wLDAgKzEsNDYgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgUlNBLVBTUyBB c3ltbWV0cmljIENpcGhlciBXcmFwcGVyIEltcGxlbWVudGF0aW9uIG92ZXIgT3BlblNTTC4NCj4g PiArDQo+ID4gKyAgVGhpcyBmaWxlIGRvZXMgbm90IHByb3ZpZGUgcmVhbCBjYXBhYmlsaXRpZXMg Zm9yIGZvbGxvd2luZyBBUElzIGluIFJTQSBoYW5kbGluZzoNCj4gPiArICAxKSBSc2FQc3NWZXJp ZnkNCj4gPiArDQo+ID4gK0NvcHlyaWdodCAoYykgMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAi SW50ZXJuYWxDcnlwdExpYi5oIg0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVmVyaWZpZXMgdGhl IFJTQSBzaWduYXR1cmUgd2l0aCBSU0FTU0EtUFNTIHNpZ25hdHVyZSBzY2hlbWUgZGVmaW5lZCBp biBSRkMNCj4gODAxNy4NCj4gPiArICBJbXBsZW1lbnRhdGlvbiBkZXRlcm1pbmVzIHNhbHQgbGVu Z3RoIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgc2lnbmF0dXJlDQo+IGVuY29kaW5nLg0KPiA+ICsg IE1hc2sgZ2VuZXJhdGlvbiBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyB0aGUgbWVzc2FnZSBkaWdl c3QgYWxnb3JpdGhtLg0KPiA+ICsgIFNhbHQgbGVuZ3RoIHNob3VsZCBhdGxlYXN0IGJlIGVxdWFs IHRvIGRpZ2VzdCBsZW5ndGguDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFJzYUNvbnRleHQg ICAgICBQb2ludGVyIHRvIFJTQSBjb250ZXh0IGZvciBzaWduYXR1cmUgdmVyaWZpY2F0aW9uLg0K PiA+ICsgIEBwYXJhbVtpbl0gIE1lc3NhZ2UgICAgICAgICBQb2ludGVyIHRvIG9jdGV0IG1lc3Nh Z2UgdG8gYmUgdmVyaWZpZWQuDQo+ID4gKyAgQHBhcmFtW2luXSAgTXNnU2l6ZSAgICAgICAgIFNp emUgb2YgdGhlIG1lc3NhZ2UgaW4gYnl0ZXMuDQo+ID4gKyAgQHBhcmFtW2luXSAgU2lnbmF0dXJl ICAgICAgIFBvaW50ZXIgdG8gUlNBU1NBLVBTUyBzaWduYXR1cmUgdG8gYmUgdmVyaWZpZWQuDQo+ ID4gKyAgQHBhcmFtW2luXSAgU2lnU2l6ZSAgICAgICAgIFNpemUgb2Ygc2lnbmF0dXJlIGluIGJ5 dGVzLg0KPiA+ICsgIEBwYXJhbVtpbl0gIERpZ2VzdExlbiAgICAgICBMZW5ndGggb2YgZGlnZXN0 IGZvciBSU0Egb3BlcmF0aW9uLg0KPiA+ICsgIEBwYXJhbVtpbl0gIFNhbHRMZW4gICAgICAgICBT YWx0IGxlbmd0aCBmb3IgUFNTIGVuY29kaW5nLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsICBUUlVF ICAgVmFsaWQgc2lnbmF0dXJlIGVuY29kZWQgaW4gUlNBU1NBLVBTUy4NCj4gPiArICBAcmV0dmFs ICBGQUxTRSAgSW52YWxpZCBzaWduYXR1cmUgb3IgaW52YWxpZCBSU0EgY29udGV4dC4NCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICtCT09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ICtSc2FQc3NWZXJpZnkg KA0KPiA+ICsgIElOICBWT0lEICAgICAgICAgKlJzYUNvbnRleHQsDQo+ID4gKyAgSU4gIENPTlNU IFVJTlQ4ICAqTWVzc2FnZSwNCj4gPiArICBJTiAgVUlOVE4gICAgICAgIE1zZ1NpemUsDQo+ID4g KyAgSU4gIENPTlNUIFVJTlQ4ICAqU2lnbmF0dXJlLA0KPiA+ICsgIElOICBVSU5UTiAgICAgICAg U2lnU2l6ZSwNCj4gPiArICBJTiAgVUlOVDE2ICAgICAgIERpZ2VzdExlbiwNCj4gPiArICBJTiAg VUlOVDE2ICAgICAgIFNhbHRMZW4NCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBBU1NFUlQgKEZB TFNFKTsNCj4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEvQ3J5 cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9Qay9DcnlwdFJzYVBzc1NpZ25OdWxsLmMN Cj4gYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWJOdWxsL1BrL0NyeXB0UnNhUHNzU2ln bk51bGwuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAw Li40ZWQyZGZjZTk5MmENCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvQ3J5cHRvUGtnL0xp YnJhcnkvQmFzZUNyeXB0TGliTnVsbC9Qay9DcnlwdFJzYVBzc1NpZ25OdWxsLmMNCj4gPiBAQCAt MCwwICsxLDYwIEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFJTQS1QU1MgQXN5bW1ldHJpYyBD aXBoZXIgV3JhcHBlciBJbXBsZW1lbnRhdGlvbiBvdmVyIE9wZW5TU0wuDQo+ID4gKw0KPiA+ICsg IFRoaXMgZmlsZSBkb2VzIG5vdCBwcm92aWRlIHJlYWwgY2FwYWJpbGl0aWVzIGZvciBmb2xsb3dp bmcgQVBJcyBpbiBSU0EgaGFuZGxpbmc6DQo+ID4gKyAgMSkgUnNhUHNzU2lnbg0KPiA+ICsNCj4g PiArQ29weXJpZ2h0IChjKSAyMDIxLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+DQo+ID4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJJbnRlcm5hbENyeXB0 TGliLmgiDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBDYXJyaWVzIG91dCB0aGUgUlNBLVNTQSBz aWduYXR1cmUgZ2VuZXJhdGlvbiB3aXRoIEVNU0EtUFNTIGVuY29kaW5nDQo+IHNjaGVtZS4NCj4g PiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBjYXJyaWVzIG91dCB0aGUgUlNBLVNTQSBzaWduYXR1 cmUgZ2VuZXJhdGlvbiB3aXRoIEVNU0EtUFNTDQo+IGVuY29kaW5nIHNjaGVtZSBkZWZpbmVkIGlu DQo+ID4gKyAgUkZDIDgwMTcuDQo+ID4gKyAgTWFzayBnZW5lcmF0aW9uIGZ1bmN0aW9uIGlzIHRo ZSBzYW1lIGFzIHRoZSBtZXNzYWdlIGRpZ2VzdCBhbGdvcml0aG0uDQo+ID4gKyAgSWYgdGhlIFNp Z25hdHVyZSBidWZmZXIgaXMgdG9vIHNtYWxsIHRvIGhvbGQgdGhlIGNvbnRlbnRzIG9mIHNpZ25h dHVyZSwgRkFMU0UNCj4gPiArICBpcyByZXR1cm5lZCBhbmQgU2lnU2l6ZSBpcyBzZXQgdG8gdGhl IHJlcXVpcmVkIGJ1ZmZlciBzaXplIHRvIG9idGFpbiB0aGUNCj4gc2lnbmF0dXJlLg0KPiA+ICsN Cj4gPiArICBJZiBSc2FDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ICsg IElmIE1lc3NhZ2UgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gKyAgSWYgTXNnU2l6 ZSBpcyB6ZXJvIG9yID4gSU5UX01BWCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gKyAgSWYgRGln ZXN0TGVuIGlzIE5PVCAzMiwgNDggb3IgNjQsIHJldHVybiBGQUxTRS4NCj4gPiArICBJZiBTYWx0 TGVuIGlzIDwgRGlnZXN0TGVuLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiArICBJZiBTaWdTaXpl IGlzIGxhcmdlIGVub3VnaCBidXQgU2lnbmF0dXJlIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNF Lg0KPiA+ICsgIElmIHRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQsIHRoZW4gcmV0dXJu IEZBTFNFLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICAgICAgUnNhQ29udGV4dCAgIFBvaW50 ZXIgdG8gUlNBIGNvbnRleHQgZm9yIHNpZ25hdHVyZSBnZW5lcmF0aW9uLg0KPiA+ICsgIEBwYXJh bVtpbl0gICAgICBNZXNzYWdlICAgICAgUG9pbnRlciB0byBvY3RldCBtZXNzYWdlIHRvIGJlIHNp Z25lZC4NCj4gPiArICBAcGFyYW1baW5dICAgICAgTXNnU2l6ZSAgICAgIFNpemUgb2YgdGhlIG1l c3NhZ2UgaW4gYnl0ZXMuDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgIERpZ2VzdExlbiAgICBMZW5n dGggb2YgdGhlIGRpZ2VzdCBpbiBieXRlcyB0byBiZSB1c2VkIGZvciBSU0ENCj4gc2lnbmF0dXJl IG9wZXJhdGlvbi4NCj4gPiArICBAcGFyYW1baW5dICAgICAgU2FsdExlbiAgICAgIExlbmd0aCBv ZiB0aGUgc2FsdCBpbiBieXRlcyB0byBiZSB1c2VkIGZvciBQU1MNCj4gZW5jb2RpbmcuDQo+ID4g KyAgQHBhcmFtW291dF0gICAgIFNpZ25hdHVyZSAgICBQb2ludGVyIHRvIGJ1ZmZlciB0byByZWNl aXZlIFJTQSBQU1Mgc2lnbmF0dXJlLg0KPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSBTaWdTaXplICAg ICAgT24gaW5wdXQsIHRoZSBzaXplIG9mIFNpZ25hdHVyZSBidWZmZXIgaW4gYnl0ZXMuDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSBzaXplIG9mIGRh dGEgcmV0dXJuZWQgaW4gU2lnbmF0dXJlIGJ1ZmZlciBpbg0KPiBieXRlcy4NCj4gPiArDQo+ID4g KyAgQHJldHZhbCAgVFJVRSAgIFNpZ25hdHVyZSBzdWNjZXNzZnVsbHkgZ2VuZXJhdGVkIGluIFJT QVNTQS1QU1MuDQo+ID4gKyAgQHJldHZhbCAgRkFMU0UgIFNpZ25hdHVyZSBnZW5lcmF0aW9uIGZh aWxlZC4NCj4gPiArICBAcmV0dmFsICBGQUxTRSAgU2lnU2l6ZSBpcyB0b28gc21hbGwuDQo+ID4g KyAgQHJldHZhbCAgRkFMU0UgIFRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4g Kw0KPiA+ICsqKi8NCj4gPiArQk9PTEVBTg0KPiA+ICtFRklBUEkNCj4gPiArUnNhUHNzU2lnbiAo DQo+ID4gKyAgSU4gICAgICBWT0lEICAgICAgICAgKlJzYUNvbnRleHQsDQo+ID4gKyAgSU4gICAg ICBDT05TVCBVSU5UOCAgKk1lc3NhZ2UsDQo+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgTXNn U2l6ZSwNCj4gPiArICBJTiAgICAgIFVJTlQxNiAgICAgICBEaWdlc3RMZW4sDQo+ID4gKyAgSU4g ICAgICBVSU5UMTYgICAgICAgU2FsdExlbiwNCj4gPiArICBPVVQgICAgIFVJTlQ4ICAgICAgICAq U2lnbmF0dXJlLA0KPiA+ICsgIElOIE9VVCAgVUlOVE4gICAgICAgICpTaWdTaXplDQo+ID4gKyAg KQ0KPiA+ICt7DQo+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gKyAgcmV0dXJuIEZBTFNFOw0K PiA+ICt9DQo+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk9u UHJvdG9jb2xQcGkvQ3J5cHRMaWIuYw0KPiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExp Yk9uUHJvdG9jb2xQcGkvQ3J5cHRMaWIuYw0KPiA+IGluZGV4IDhiNDNkMTM2M2NiOS4uNDEyZmJk YmZmNTJjIDEwMDY0NA0KPiA+IC0tLSBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk9u UHJvdG9jb2xQcGkvQ3J5cHRMaWIuYw0KPiA+ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VD cnlwdExpYk9uUHJvdG9jb2xQcGkvQ3J5cHRMaWIuYw0KPiA+IEBAIC0xNTUyLDYgKzE1NTIsNzIg QEAgUnNhUGtjczFWZXJpZnkgKA0KPiA+ICAgIENBTExfQ1JZUFRPX1NFUlZJQ0UgKFJzYVBrY3Mx VmVyaWZ5LCAoUnNhQ29udGV4dCwgTWVzc2FnZUhhc2gsDQo+IEhhc2hTaXplLCBTaWduYXR1cmUs IFNpZ1NpemUpLCBGQUxTRSk7DQo+ID4gIH0NCj4gPg0KPiA+ICsvKioNCj4gPiArICBWZXJpZmll cyB0aGUgUlNBIHNpZ25hdHVyZSB3aXRoIFJTQVNTQS1QU1Mgc2lnbmF0dXJlIHNjaGVtZSBkZWZp bmVkIGluIFJGQw0KPiA4MDE3Lg0KPiA+ICsgIEltcGxlbWVudGF0aW9uIGRldGVybWluZXMgc2Fs dCBsZW5ndGggYXV0b21hdGljYWxseSBmcm9tIHRoZSBzaWduYXR1cmUNCj4gZW5jb2RpbmcuDQo+ ID4gKyAgTWFzayBnZW5lcmF0aW9uIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHRoZSBtZXNzYWdl IGRpZ2VzdCBhbGdvcml0aG0uDQo+ID4gKyAgU2FsdCBsZW5ndGggc2hvdWxkIGF0bGVhc3QgYmUg ZXF1YWwgdG8gZGlnZXN0IGxlbmd0aC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgUnNhQ29u dGV4dCAgICAgIFBvaW50ZXIgdG8gUlNBIGNvbnRleHQgZm9yIHNpZ25hdHVyZSB2ZXJpZmljYXRp b24uDQo+ID4gKyAgQHBhcmFtW2luXSAgTWVzc2FnZSAgICAgICAgIFBvaW50ZXIgdG8gb2N0ZXQg bWVzc2FnZSB0byBiZSB2ZXJpZmllZC4NCj4gPiArICBAcGFyYW1baW5dICBNc2dTaXplICAgICAg ICAgU2l6ZSBvZiB0aGUgbWVzc2FnZSBpbiBieXRlcy4NCj4gPiArICBAcGFyYW1baW5dICBTaWdu YXR1cmUgICAgICAgUG9pbnRlciB0byBSU0FTU0EtUFNTIHNpZ25hdHVyZSB0byBiZSB2ZXJpZmll ZC4NCj4gPiArICBAcGFyYW1baW5dICBTaWdTaXplICAgICAgICAgU2l6ZSBvZiBzaWduYXR1cmUg aW4gYnl0ZXMuDQo+ID4gKyAgQHBhcmFtW2luXSAgRGlnZXN0TGVuICAgICAgIExlbmd0aCBvZiBk aWdlc3QgZm9yIFJTQSBvcGVyYXRpb24uDQo+ID4gKyAgQHBhcmFtW2luXSAgU2FsdExlbiAgICAg ICAgIFNhbHQgbGVuZ3RoIGZvciBQU1MgZW5jb2RpbmcuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwg IFRSVUUgICBWYWxpZCBzaWduYXR1cmUgZW5jb2RlZCBpbiBSU0FTU0EtUFNTLg0KPiA+ICsgIEBy ZXR2YWwgIEZBTFNFICBJbnZhbGlkIHNpZ25hdHVyZSBvciBpbnZhbGlkIFJTQSBjb250ZXh0Lg0K PiA+ICsNCj4gPiArKiovDQo+ID4gK0JPT0xFQU4NCj4gPiArRUZJQVBJDQo+ID4gK1JzYVBzc1Zl cmlmeSAoDQo+ID4gKyAgSU4gIFZPSUQgICAgICAgICAqUnNhQ29udGV4dCwNCj4gPiArICBJTiAg Q09OU1QgVUlOVDggICpNZXNzYWdlLA0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgTXNnU2l6ZSwN Cj4gPiArICBJTiAgQ09OU1QgVUlOVDggICpTaWduYXR1cmUsDQo+ID4gKyAgSU4gIFVJTlROICAg ICAgICBTaWdTaXplLA0KPiA+ICsgIElOICBVSU5UMTYgICAgICAgRGlnZXN0TGVuLA0KPiA+ICsg IElOICBVSU5UMTYgICAgICAgU2FsdExlbg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIENBTExf Q1JZUFRPX1NFUlZJQ0UgKFJzYVBzc1ZlcmlmeSwgKFJzYUNvbnRleHQsIE1lc3NhZ2UsIE1zZ1Np emUsDQo+IFNpZ25hdHVyZSwgU2lnU2l6ZSwgRGlnZXN0TGVuLCBTYWx0TGVuKSwgRkFMU0UpOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBWZXJpZmllcyB0aGUgUlNBIHNpZ25hdHVy ZSB3aXRoIFJTQVNTQS1QU1Mgc2lnbmF0dXJlIHNjaGVtZSBkZWZpbmVkIGluIFJGQw0KPiA4MDE3 Lg0KPiA+ICsgIEltcGxlbWVudGF0aW9uIGRldGVybWluZXMgc2FsdCBsZW5ndGggYXV0b21hdGlj YWxseSBmcm9tIHRoZSBzaWduYXR1cmUNCj4gZW5jb2RpbmcuDQo+ID4gKyAgTWFzayBnZW5lcmF0 aW9uIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHRoZSBtZXNzYWdlIGRpZ2VzdCBhbGdvcml0aG0u DQo+ID4gKyAgU2FsdCBsZW5ndGggc2hvdWxkIGF0bGVhc3QgYmUgZXF1YWwgdG8gZGlnZXN0IGxl bmd0aC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgUnNhQ29udGV4dCAgICAgIFBvaW50ZXIg dG8gUlNBIGNvbnRleHQgZm9yIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24uDQo+ID4gKyAgQHBhcmFt W2luXSAgTWVzc2FnZSAgICAgICAgIFBvaW50ZXIgdG8gb2N0ZXQgbWVzc2FnZSB0byBiZSB2ZXJp ZmllZC4NCj4gPiArICBAcGFyYW1baW5dICBNc2dTaXplICAgICAgICAgU2l6ZSBvZiB0aGUgbWVz c2FnZSBpbiBieXRlcy4NCj4gPiArICBAcGFyYW1baW5dICBTaWduYXR1cmUgICAgICAgUG9pbnRl ciB0byBSU0FTU0EtUFNTIHNpZ25hdHVyZSB0byBiZSB2ZXJpZmllZC4NCj4gPiArICBAcGFyYW1b aW5dICBTaWdTaXplICAgICAgICAgU2l6ZSBvZiBzaWduYXR1cmUgaW4gYnl0ZXMuDQo+ID4gKyAg QHBhcmFtW2luXSAgRGlnZXN0TGVuICAgICAgIExlbmd0aCBvZiBkaWdlc3QgZm9yIFJTQSBvcGVy YXRpb24uDQo+ID4gKyAgQHBhcmFtW2luXSAgU2FsdExlbiAgICAgICAgIFNhbHQgbGVuZ3RoIGZv ciBQU1MgZW5jb2RpbmcuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgIFRSVUUgICBWYWxpZCBzaWdu YXR1cmUgZW5jb2RlZCBpbiBSU0FTU0EtUFNTLg0KPiA+ICsgIEByZXR2YWwgIEZBTFNFICBJbnZh bGlkIHNpZ25hdHVyZSBvciBpbnZhbGlkIFJTQSBjb250ZXh0Lg0KPiA+ICsNCj4gPiArKiovDQo+ ID4gK0JPT0xFQU4NCj4gPiArRUZJQVBJDQo+ID4gK1JzYVBzc1NpZ24gKA0KPiA+ICsgIElOICAg ICAgVk9JRCAgICAgICAgICpSc2FDb250ZXh0LA0KPiA+ICsgIElOICAgICAgQ09OU1QgVUlOVDgg ICpNZXNzYWdlLA0KPiA+ICsgIElOICAgICAgVUlOVE4gICAgICAgIE1zZ1NpemUsDQo+ID4gKyAg SU4gICAgICBVSU5UMTYgICAgICAgRGlnZXN0TGVuLA0KPiA+ICsgIElOICAgICAgVUlOVDE2ICAg ICAgIFNhbHRMZW4sDQo+ID4gKyAgT1VUICAgICBVSU5UOCAgICAgICAgKlNpZ25hdHVyZSwNCj4g PiArICBJTiBPVVQgIFVJTlROICAgICAgICAqU2lnU2l6ZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ ICsgIENBTExfQ1JZUFRPX1NFUlZJQ0UgKFJzYVBzc1NpZ24sIChSc2FDb250ZXh0LCBNZXNzYWdl LCBNc2dTaXplLA0KPiBEaWdlc3RMZW4sIFNhbHRMZW4sIFNpZ25hdHVyZSwgU2lnU2l6ZSksIEZB TFNFKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgLyoqDQo+ID4gICAgUmV0cmlldmUgdGhlIFJTQSBQ cml2YXRlIEtleSBmcm9tIHRoZSBwYXNzd29yZC1wcm90ZWN0ZWQgUEVNIGtleSBkYXRhLg0KPiA+ DQo+ID4gZGlmZiAtLWdpdA0KPiBhL0NyeXB0b1BrZy9UZXN0L1VuaXRUZXN0L0xpYnJhcnkvQmFz ZUNyeXB0TGliL0Jhc2VDcnlwdExpYlVuaXRUZXN0cy5jDQo+IGIvQ3J5cHRvUGtnL1Rlc3QvVW5p dFRlc3QvTGlicmFyeS9CYXNlQ3J5cHRMaWIvQmFzZUNyeXB0TGliVW5pdFRlc3RzLmMNCj4gPiBp bmRleCBiN2ZjZWEzZmY3ZTQuLjM4NzNkZTk3MzA2NCAxMDA2NDQNCj4gPiAtLS0gYS9DcnlwdG9Q a2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9CYXNlQ3J5cHRMaWJVbml0VGVz dHMuYw0KPiA+ICsrKyBiL0NyeXB0b1BrZy9UZXN0L1VuaXRUZXN0L0xpYnJhcnkvQmFzZUNyeXB0 TGliL0Jhc2VDcnlwdExpYlVuaXRUZXN0cy5jDQo+ID4gQEAgLTE2LDYgKzE2LDcgQEAgU1VJVEVf REVTQyAgbVN1aXRlRGVzY1tdID0gew0KPiA+ICAgICAgeyJITUFDIHZlcmlmeSB0ZXN0cyIsICAg ICAgICAgICAiQ3J5cHRvUGtnLkJhc2VDcnlwdExpYiIsIE5VTEwsIE5VTEwsDQo+ICZtSG1hY1Rl c3ROdW0sICAgICAgICAgICBtSG1hY1Rlc3R9LA0KPiA+ICAgICAgeyJCbG9ja0NpcGhlciB2ZXJp ZnkgdGVzdHMiLCAgICAiQ3J5cHRvUGtnLkJhc2VDcnlwdExpYiIsIE5VTEwsIE5VTEwsDQo+ICZt QmxvY2tDaXBoZXJUZXN0TnVtLCAgICBtQmxvY2tDaXBoZXJUZXN0fSwNCj4gPiAgICAgIHsiUlNB IHZlcmlmeSB0ZXN0cyIsICAgICAgICAgICAgIkNyeXB0b1BrZy5CYXNlQ3J5cHRMaWIiLCBOVUxM LCBOVUxMLA0KPiAmbVJzYVRlc3ROdW0sICAgICAgICAgICAgbVJzYVRlc3R9LA0KPiA+ICsgICAg eyJSU0EgUFNTIHZlcmlmeSB0ZXN0cyIsICAgICAgICAiQ3J5cHRvUGtnLkJhc2VDcnlwdExpYiIs IE5VTEwsIE5VTEwsDQo+ICZtUnNhUHNzVGVzdE51bSwgICAgICAgICBtUnNhUHNzVGVzdH0sDQo+ ID4gICAgICB7IlJTQUNlcnQgdmVyaWZ5IHRlc3RzIiwgICAgICAgICJDcnlwdG9Qa2cuQmFzZUNy eXB0TGliIiwgTlVMTCwgTlVMTCwNCj4gJm1Sc2FDZXJ0VGVzdE51bSwgICAgICAgIG1Sc2FDZXJ0 VGVzdH0sDQo+ID4gICAgICB7IlBLQ1M3IHZlcmlmeSB0ZXN0cyIsICAgICAgICAgICJDcnlwdG9Q a2cuQmFzZUNyeXB0TGliIiwgTlVMTCwgTlVMTCwNCj4gJm1Qa2NzN1Rlc3ROdW0sICAgICAgICAg IG1Qa2NzN1Rlc3R9LA0KPiA+ICAgICAgeyJQS0NTNSB2ZXJpZnkgdGVzdHMiLCAgICAgICAgICAi Q3J5cHRvUGtnLkJhc2VDcnlwdExpYiIsIE5VTEwsIE5VTEwsDQo+ICZtUGtjczVUZXN0TnVtLCAg ICAgICAgICBtUGtjczVUZXN0fSwNCj4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL1Rlc3QvVW5p dFRlc3QvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUnNhUHNzVGVzdHMuYw0KPiBiL0NyeXB0b1BrZy9U ZXN0L1VuaXRUZXN0L0xpYnJhcnkvQmFzZUNyeXB0TGliL1JzYVBzc1Rlc3RzLmMNCj4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uNWFjMmYzMjVmYmRkDQo+ ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL0NyeXB0b1BrZy9UZXN0L1VuaXRUZXN0L0xpYnJh cnkvQmFzZUNyeXB0TGliL1JzYVBzc1Rlc3RzLmMNCj4gPiBAQCAtMCwwICsxLDE5MSBAQA0KPiA+ ICsvKiogQGZpbGUNCj4gPiArICBBcHBsaWNhdGlvbiBmb3IgUlNBIFBTUyBQcmltaXRpdmVzIFZh bGlkYXRpb24uDQo+ID4gKw0KPiA+ICtDb3B5cmlnaHQgKGMpIDIwMjEsIEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lu Y2x1ZGUgIlRlc3RCYXNlQ3J5cHRMaWIuaCINCj4gPiArDQo+ID4gKy8vDQo+ID4gKy8vIFJTQSBQ U1MgdGVzdCB2ZWN0b3JzIGZyb20gTklTVCBGSVBTIDE4Ni0zIFJTQSBmaWxlcw0KPiA+ICsvLw0K PiA+ICsNCj4gPiArLy8NCj4gPiArLy8gUHVibGljIE1vZHVsdXMgb2YgUlNBIEtleQ0KPiA+ICsv Lw0KPiA+ICtVSU5UOCBSc2FQc3NOW109ew0KPiA+ICsgICAgMHhhNCwgMHg3ZCwgMHgwNCwgMHhl NywgMHhjYSwgMHhjZCwgMHhiYSwgMHg0ZSwgMHhhMiwgMHg2ZSwgMHhjYSwgMHg4YSwNCj4gMHg0 YywgMHg2ZSwgMHgxNCwgMHg1NiwNCj4gPiArICAgIDB4M2MsIDB4MmMsIDB4ZTAsIDB4M2IsIDB4 NjIsIDB4M2IsIDB4NzYsIDB4OGMsIDB4MGQsIDB4NDksIDB4ODYsIDB4OGEsDQo+IDB4NTcsIDB4 MTIsIDB4MTMsIDB4MDEsDQo+ID4gKyAgICAweGRiLCAweGY3LCAweDgzLCAweGQ4LCAweDJmLCAw eDRjLCAweDA1LCAweDVlLCAweDczLCAweDk2LCAweDBlLCAweDcwLA0KPiAweDU1LCAweDAxLCAw eDg3LCAweGQwLA0KPiA+ICsgICAgMHhhZiwgMHg2MiwgMHhhYywgMHgzNCwgMHg5NiwgMHhmMCwg MHhhMywgMHhkOSwgMHgxMCwgMHgzYywgMHgyZSwgMHhiNywNCj4gMHg5MSwgMHg5YSwgMHg3Miwg MHg3NSwNCj4gPiArICAgIDB4MmYsIDB4YTcsIDB4Y2UsIDB4OGMsIDB4NjgsIDB4OGQsIDB4ODEs IDB4ZTMsIDB4YWUsIDB4ZTksIDB4OTQsIDB4NjgsDQo+IDB4ODgsIDB4N2EsIDB4MTUsIDB4Mjgs DQo+ID4gKyAgICAweDhhLCAweGZiLCAweGI3LCAweGFjLCAweGI4LCAweDQ1LCAweGI3LCAweGM1 LCAweDIyLCAweGI1LCAweGM2LCAweDRlLA0KPiAweDY3LCAweDhmLCAweGNkLCAweDNkLA0KPiA+ ICsgICAgMHgyMiwgMHhmZSwgMHhiOCwgMHg0YiwgMHg0NCwgMHgyNywgMHgyNywgMHgwMCwgMHhi ZSwgMHg1MiwgMHg3ZCwgMHgyYiwNCj4gMHgyMCwgMHgyNSwgMHhhMywgMHhmOCwNCj4gPiArICAg IDB4M2MsIDB4MjMsIDB4ODMsIDB4YmYsIDB4NmEsIDB4MzksIDB4Y2YsIDB4NWIsIDB4NGUsIDB4 NDgsIDB4YjMsIDB4Y2YsIDB4MmYsDQo+IDB4NTYsIDB4ZWUsIDB4ZjAsDQo+ID4gKyAgICAweGRm LCAweGZmLCAweDE4LCAweDU1LCAweDVlLCAweDMxLCAweDAzLCAweDdiLCAweDkxLCAweDUyLCAw eDQ4LCAweDY5LA0KPiAweDQ4LCAweDc2LCAweGYzLCAweDA0LA0KPiA+ICsgICAgMHg3OCwgMHgx NCwgMHg0MSwgMHg1MSwgMHg2NCwgMHhmMiwgMHhjNiwgMHg2MCwgMHg4OCwgMHgxZSwgMHg2OSwg MHg0YiwNCj4gMHg1OCwgMHhjMiwgMHg4MCwgMHgzOCwNCj4gPiArICAgIDB4YTAsIDB4MzIsIDB4 YWQsIDB4MjUsIDB4NjMsIDB4NGEsIDB4YWQsIDB4N2IsIDB4MzksIDB4MTcsIDB4MWQsIDB4ZWUs DQo+IDB4MzYsIDB4OGUsIDB4M2QsIDB4NTksDQo+ID4gKyAgICAweGJmLCAweGI3LCAweDI5LCAw eDllLCAweDQ2LCAweDAxLCAweGQ0LCAweDU4LCAweDdlLCAweDY4LCAweGNhLCAweGFmLA0KPiAw eDhkLCAweGI0LCAweDU3LCAweGI3LA0KPiA+ICsgICAgMHg1YSwgMHhmNCwgMHgyZiwgMHhjMCwg MHhjZiwgMHgxYSwgMHhlNywgMHhjYSwgMHhjZSwgMHhkMiwgMHg4NiwgMHhkNywgMHg3ZiwNCj4g MHhhYywgMHg2YywgMHhlZCwNCj4gPiArICAgIDB4YjAsIDB4M2EsIDB4ZDksIDB4NGYsIDB4MTQs IDB4MzMsIDB4ZDIsIDB4YzksIDB4NGQsIDB4MDgsIDB4ZTYsIDB4MGIsDQo+IDB4YzEsIDB4ZmQs IDB4ZWYsIDB4MDUsDQo+ID4gKyAgICAweDQzLCAweGNkLCAweDI5LCAweDUxLCAweGU3LCAweDY1 LCAweGIzLCAweDgyLCAweDMwLCAweGZkLCAweGQxLCAweDhkLA0KPiAweGU1LCAweGQyLCAweGNh LCAweDYyLA0KPiA+ICsgICAgMHg3ZCwgMHhkYywgMHgwMywgMHgyZiwgMHhlMCwgMHg1YiwgMHhi ZCwgMHgyZiwgMHhmMiwgMHgxZSwgMHgyZCwgMHhiMSwNCj4gMHhjMiwgMHhmOSwgMHg0ZCwgMHg4 YiwNCj4gPiArICAgIH07DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBQdWJsaWMgRXhwb25lbnQg b2YgUlNBIEtleQ0KPiA+ICsvLw0KPiA+ICtVSU5UOCBSc2FQc3NFW109eyAweDEwLCAweGU0LCAw eDNmIH07DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBQcml2YXRlIEV4cG9uZW50IG9mIFJTQSBL ZXkNCj4gPiArLy8NCj4gPiArVUlOVDggUnNhUHNzRFtdPXsNCj4gPiArICAgIDB4MTEsIDB4YTAs IDB4ZGQsIDB4MjgsIDB4NWYsIDB4NjYsIDB4NDcsIDB4MWEsIDB4OGQsIDB4YTMsIDB4MGIsIDB4 Y2IsDQo+IDB4OGMsIDB4MjQsIDB4YTEsIDB4ZDUsDQo+ID4gKyAgICAweGM4LCAweGRiLCAweDk0 LCAweDJmLCAweGM5LCAweDkyLCAweDA3LCAweDk3LCAweGNhLCAweDQ0LCAweDI0LCAweDYwLA0K PiAweGE4LCAweDAwLCAweGI3LCAweDViLA0KPiA+ICsgICAgMHhiYywgMHg3MywgMHg4YiwgMHhl YiwgMHg4ZSwgMHhlMCwgMHhlOCwgMHg3NCwgMHhiMCwgMHg1MywgMHhlNiwgMHg0NywNCj4gMHgw NywgMHhkZiwgMHg0YywgMHhmYywNCj4gPiArICAgIDB4NzgsIDB4MzcsIDB4YzQsIDB4MGUsIDB4 NWIsIDB4ZTYsIDB4OGIsIDB4OGEsIDB4OGUsIDB4MWQsIDB4MDEsIDB4NDUsDQo+IDB4MTYsIDB4 OWMsIDB4YTYsIDB4MjcsDQo+ID4gKyAgICAweDFkLCAweDgxLCAweDg4LCAweDdlLCAweDE5LCAw eGExLCAweGNkLCAweDk1LCAweGIyLCAweGZkLCAweDBkLCAweGUwLA0KPiAweGRiLCAweGEzLCAw eDQ3LCAweGZlLA0KPiA+ICsgICAgMHg2MywgMHg3YiwgMHhjYywgMHg2YywgMHhkYywgMHgyNCwg MHhlZSwgMHhiZSwgMHgwMywgMHhjMiwgMHg0ZCwgMHg0YywNCj4gMHhmMywgMHhhNSwgMHhjNiwg MHgxNSwNCj4gPiArICAgIDB4NGQsIDB4NzgsIDB4ZjEsIDB4NDEsIDB4ZmUsIDB4MzQsIDB4MTYs IDB4OTksIDB4MjQsIDB4ZDAsIDB4ZjgsIDB4OTUsDQo+IDB4MzMsIDB4NjUsIDB4OGUsIDB4YWMs DQo+ID4gKyAgICAweGZkLCAweGVhLCAweGU5LCAweDljLCAweGUxLCAweGE4LCAweDgwLCAweDI3 LCAweGMxLCAweDhmLCAweGY5LCAweDI2LA0KPiAweDUzLCAweGE4LCAweDM1LCAweGFhLA0KPiA+ ICsgICAgMHgzOCwgMHg5MSwgMHhiZiwgMHhmZiwgMHhjZCwgMHgzOCwgMHg4ZiwgMHhmYywgMHgy MywgMHg4OCwgMHhjZSwgMHgyYiwgMHgxMCwNCj4gMHg1NiwgMHg4NSwgMHg0MywNCj4gPiArICAg IDB4NzUsIDB4MDUsIDB4MDIsIDB4Y2MsIDB4YmMsIDB4NjksIDB4YzAsIDB4MDgsIDB4OGYsIDB4 MWQsIDB4NjksIDB4MGUsDQo+IDB4OTcsIDB4YTUsIDB4ZjUsIDB4YmQsDQo+ID4gKyAgICAweGQx LCAweDg4LCAweDhjLCAweGQyLCAweGZhLCAweGE0LCAweDNjLCAweDA0LCAweGFlLCAweDI0LCAw eDUzLCAweDk1LA0KPiAweDIyLCAweGRkLCAweGUyLCAweGQ5LA0KPiA+ICsgICAgMHhjMiwgMHgw MiwgMHhmNiwgMHg1NSwgMHhmYywgMHg1NSwgMHg3NSwgMHg0NCwgMHg0MCwgMHhiNSwgMHgzYSwg MHgxNSwNCj4gMHgzMiwgMHhhYSwgMHhiNCwgMHg3OCwNCj4gPiArICAgIDB4NTEsIDB4ZjYsIDB4 MGIsIDB4N2EsIDB4MDYsIDB4N2UsIDB4MjQsIDB4MGIsIDB4NzMsIDB4OGUsIDB4MWIsIDB4MWQs DQo+IDB4YWEsIDB4ZTYsIDB4Y2EsIDB4MGQsDQo+ID4gKyAgICAweDU5LCAweGVlLCAweGFlLCAw eDI3LCAweDY4LCAweDZjLCAweGQ4LCAweDg4LCAweDU3LCAweGU5LCAweGFkLCAweGFkLA0KPiAw eGMyLCAweGQ0LCAweGI4LCAweDJiLA0KPiA+ICsgICAgMHgwNywgMHhhNiwgMHgxYSwgMHgzNSwg MHg4NCwgMHg1NiwgMHhhYSwgMHhmOCwgMHgwNywgMHg2NiwgMHg5NiwgMHg5MywNCj4gMHhmZiwg MHhiMSwgMHgzYywgMHg5OSwNCj4gPiArICAgIDB4NjQsIDB4YTYsIDB4MzYsIDB4NTQsIDB4Y2Es IDB4ZGMsIDB4ODEsIDB4ZWUsIDB4NTksIDB4ZGYsIDB4NTEsIDB4MWMsDQo+IDB4YTMsIDB4YTQs IDB4YmQsIDB4NjcsDQo+ID4gKyAgICB9Ow0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gQmluYXJ5 IG1lc3NhZ2UgdG8gYmUgc2lnbmVkIGFuZCB2ZXJpZmllZA0KPiA+ICsvLw0KPiA+ICtVSU5UOCBQ c3NNZXNzYWdlW109ew0KPiA+ICsgICAgMHhlMCwgMHgwMiwgMHgzNywgMHg3YSwgMHhmZiwgMHhi MCwgMHg0ZiwgMHgwZiwgMHhlNCwgMHg1OSwgMHg4ZCwgMHhlOSwNCj4gMHhkOSwgMHgyZCwgMHgz MSwgMHhkNiwNCj4gPiArICAgIDB4YzcsIDB4ODYsIDB4MDQsIDB4MGQsIDB4NTcsIDB4NzYsIDB4 OTcsIDB4NjUsIDB4NTYsIDB4YTIsIDB4Y2YsIDB4YzUsDQo+IDB4NWUsIDB4NTQsIDB4YTEsIDB4 ZGMsDQo+ID4gKyAgICAweGIzLCAweGNiLCAweDFiLCAweDEyLCAweDZiLCAweGQ2LCAweGE0LCAw eGJlLCAweGQyLCAweGExLCAweDg0LCAweDk5LA0KPiAweDBjLCAweGNlLCAweGE3LCAweDczLA0K PiA+ICsgICAgMHhmYywgMHhjNywgMHg5ZCwgMHgyNCwgMHg2NSwgMHg1MywgMHhlNiwgMHhjNiwg MHg0ZiwgMHg2OCwgMHg2ZCwgMHgyMSwNCj4gMHhhZCwgMHg0MSwgMHg1MiwgMHg2NywNCj4gPiAr ICAgIDB4M2MsIDB4YWYsIDB4ZWMsIDB4MjIsIDB4YWUsIDB4YjQsIDB4MGYsIDB4NmEsIDB4MDgs IDB4NGUsIDB4OGEsIDB4NWIsDQo+IDB4NDksIDB4OTEsIDB4ZjQsIDB4YzYsDQo+ID4gKyAgICAw eDRjLCAweGY4LCAweGE5LCAweDI3LCAweGVmLCAweGZkLCAweDBmLCAweGQ3LCAweDc1LCAweGU3 LCAweDFlLCAweDgzLCAweDI5LA0KPiAweGU0LCAweDFmLCAweGRkLA0KPiA+ICsgICAgMHg0NCwg MHg1NywgMHhiMywgMHg5MSwgMHgxMSwgMHg3MywgMHgxOCwgMHg3YiwgMHg0ZiwgMHgwOSwgMHhh OCwgMHgxNywNCj4gMHhkNywgMHg5ZSwgMHhhMiwgMHgzOSwNCj4gPiArICAgIDB4N2YsIDB4YzEs IDB4MmQsIDB4ZmUsIDB4M2QsIDB4OWMsIDB4OWEsIDB4MDIsIDB4OTAsIDB4YzgsIDB4ZWEsIDB4 ZDMsDQo+IDB4MWIsIDB4NjYsIDB4OTAsIDB4YTYsDQo+ID4gKyAgICB9Ow0KPiA+ICsNCj4gPiAr Ly8NCj4gPiArLy8gQmluYXJ5IG1lc3NhZ2UgdG8gYmUgc2lnbmVkIGFuZCB2ZXJpZmllZA0KPiA+ ICsvLw0KPiA+ICtVSU5UOCBQc3NTYWx0W109ew0KPiA+ICsgICAgMHhkNiwgMHg2ZiwgMHg3Miwg MHhmMSwgMHgwYiwgMHg2OSwgMHgwMCwgMHgxYSwgMHg1YiwgMHg1OSwgMHhjZiwgMHgxMCwNCj4g MHg5MiwgMHhhZCwgMHgyNywgMHg0ZCwNCj4gPiArICAgIDB4NTAsIDB4NTYsIDB4YzQsIDB4ZTks IDB4NWMsIDB4Y2MsIDB4Y2YsIDB4YmUsIDB4M2IsIDB4NTMsIDB4MGQsIDB4Y2IsDQo+IDB4MDIs IDB4N2UsIDB4NTcsIDB4ZDYNCj4gPiArICAgIH07DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBS U0FTU0EtUFNTIFNpZ25hdHVyZSBvdmVyIGFib3ZlIG1lc3NhZ2UgdXNpbmcgYWJvdmUga2V5cywg c2FsdCBhbmQNCj4gU0hBMjU2IGRpZ2VzdChhbmQgTUdGMSkgYWxnby4NCj4gPiArLy8NCj4gPiAr VUlOVDggVGVzdFZlY3RvclNpZ25hdHVyZVtdPXsNCj4gPiArICAgIDB4NGYsIDB4OWIsIDB4NDIs IDB4NWMsIDB4MjAsIDB4NTgsIDB4NDYsIDB4MGUsIDB4NGEsIDB4YjIsIDB4ZjUsIDB4YzksDQo+ IDB4NjMsIDB4ODQsIDB4ZGEsIDB4MjMsDQo+ID4gKyAgICAweDI3LCAweGZkLCAweDI5LCAweDE1 LCAweDBmLCAweDAxLCAweDk1LCAweDVhLCAweDc2LCAweGI0LCAweGVmLCAweGU5LA0KPiAweDU2 LCAweGFmLCAweDA2LCAweGRjLA0KPiA+ICsgICAgMHgwOCwgMHg3NywgMHg5YSwgMHgzNywgMHg0 ZSwgMHhlNCwgMHg2MCwgMHg3ZSwgMHhhYiwgMHg2MSwgMHhhOSwgMHgzYSwNCj4gMHhkYywgMHg1 NiwgMHgwOCwgMHhmNCwNCj4gPiArICAgIDB4ZWMsIDB4MzYsIDB4ZTQsIDB4N2YsIDB4MmEsIDB4 MGYsIDB4NzUsIDB4NGUsIDB4OGYsIDB4ZjgsIDB4MzksIDB4YTgsIDB4YTEsDQo+IDB4OWIsIDB4 MWQsIDB4YjEsDQo+ID4gKyAgICAweGU4LCAweDg0LCAweGVhLCAweDRjLCAweGYzLCAweDQ4LCAw eGNkLCAweDQ1LCAweDUwLCAweDY5LCAweGViLCAweDg3LA0KPiAweGFmLCAweGQ1LCAweDM2LCAw eDQ1LA0KPiA+ICsgICAgMHhiNCwgMHg0ZSwgMHgyOCwgMHhhMCwgMHhhNSwgMHg2OCwgMHgwOCwg MHhmNSwgMHgwMywgMHgxZCwgMHhhNSwgMHhiYSwNCj4gMHg5MSwgMHgxMiwgMHg3NiwgMHg4ZCwN Cj4gPiArICAgIDB4ZmIsIDB4ZmMsIDB4YTQsIDB4NGUsIDB4YmUsIDB4NjMsIDB4YTAsIDB4YzAs IDB4NTcsIDB4MmIsIDB4NzMsIDB4MWQsDQo+IDB4NjYsIDB4MTIsIDB4MmYsIDB4YjcsDQo+ID4g KyAgICAweDE2LCAweDA5LCAweGJlLCAweDE0LCAweDgwLCAweGZhLCAweGE0LCAweGU0LCAweGY3 LCAweDVlLCAweDQzLCAweDk1LA0KPiAweDUxLCAweDU5LCAweGQ3LCAweDBmLA0KPiA+ICsgICAg MHgwOCwgMHgxZSwgMHgyYSwgMHgzMiwgMHhmYiwgMHhiMSwgMHg5YSwgMHg0OCwgMHhiOSwgMHhm MSwgMHg2MiwgMHhjZiwNCj4gMHg2YiwgMHgyZiwgMHhiNCwgMHg0NSwNCj4gPiArICAgIDB4ZDIs IDB4ZDYsIDB4OTksIDB4NGIsIDB4YzUsIDB4ODksIDB4MTAsIDB4YTIsIDB4NmIsIDB4NTksIDB4 NDMsIDB4NDcsDQo+IDB4NzgsIDB4MDMsIDB4Y2QsIDB4YWEsDQo+ID4gKyAgICAweGExLCAweGJk LCAweDc0LCAweGIwLCAweGRhLCAweDBhLCAweDVkLCAweDA1LCAweDNkLCAweDhiLCAweDFkLCAw eGM1LA0KPiAweDkzLCAweDA5LCAweDFkLCAweGI1LA0KPiA+ICsgICAgMHgzOCwgMHg4MywgMHg4 MywgMHhjMiwgMHg2MCwgMHg3OSwgMHhmMywgMHg0NCwgMHhlMiwgMHhhZSwgMHhhNiwgMHgwMCwN Cj4gMHhkMCwgMHhlMywgMHgyNCwgMHgxNiwNCj4gPiArICAgIDB4NGIsIDB4NDUsIDB4MGYsIDB4 N2IsIDB4OWIsIDB4NDYsIDB4NTEsIDB4MTEsIDB4YjcsIDB4MjYsIDB4NWYsIDB4M2IsDQo+IDB4 MWIsIDB4MDYsIDB4MzAsIDB4ODksDQo+ID4gKyAgICAweGFlLCAweDdlLCAweDI2LCAweDIzLCAw eGZjLCAweDBmLCAweGRhLCAweDgwLCAweDUyLCAweGNmLCAweDRiLCAweGYzLCAweDM3LA0KPiAw eDkxLCAweDAyLCAweGZiLA0KPiA+ICsgICAgMHhmNywgMHgxZCwgMHg3YywgMHg5OCwgMHhlOCwg MHgyNSwgMHg4NiwgMHg2NCwgMHhjZSwgMHhlZCwgMHg2MywgMHg3ZCwNCj4gMHgyMCwgMHhmOSwg MHg1ZiwgMHhmMCwNCj4gPiArICAgIDB4MTEsIDB4MTgsIDB4ODEsIDB4ZTYsIDB4NTAsIDB4Y2Us IDB4NjEsIDB4ZjIsIDB4NTEsIDB4ZDksIDB4YzMsIDB4YTYsDQo+IDB4MjksIDB4ZWYsIDB4MjIs IDB4MmQsDQo+ID4gKyAgICB9Ow0KPiA+ICsNCj4gPiArDQo+ID4gK1ZPSUQgICAgICptUnNhOw0K PiA+ICsNCj4gPiArVU5JVF9URVNUX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArVGVzdFZlcmlm eVJzYVBzc1ByZVJlcSAoDQo+ID4gKyAgVU5JVF9URVNUX0NPTlRFWFQgICAgICAgICAgIENvbnRl eHQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBtUnNhID0gUnNhTmV3ICgpOw0KPiA+ICsNCj4g PiArICBpZiAobVJzYSA9PSBOVUxMKSB7DQo+ID4gKyAgICByZXR1cm4gVU5JVF9URVNUX0VSUk9S X1RFU1RfRkFJTEVEOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIFVOSVRfVEVTVF9Q QVNTRUQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1Rlc3RW ZXJpZnlSc2FQc3NDbGVhblVwICgNCj4gPiArICBVTklUX1RFU1RfQ09OVEVYVCAgICAgICAgICAg Q29udGV4dA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIGlmIChtUnNhICE9IE5VTEwpIHsNCj4g PiArICAgIFJzYUZyZWUgKG1Sc2EpOw0KPiA+ICsgICAgbVJzYSA9IE5VTEw7DQo+ID4gKyAgfQ0K PiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArVU5JVF9URVNUX1NUQVRVUw0KPiA+ICtFRklBUEkN Cj4gPiArVGVzdFZlcmlmeVJzYVBzc1NpZ25WZXJpZnkgKA0KPiA+ICsgIElOIFVOSVRfVEVTVF9D T05URVhUICAgICAgICAgICBDb250ZXh0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDgg ICAgKlNpZ25hdHVyZTsNCj4gPiArICBVSU5UTiAgICBTaWdTaXplOw0KPiA+ICsgIEJPT0xFQU4g IFN0YXR1czsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUnNhU2V0S2V5IChtUnNhLCBSc2FLZXlO LCBSc2FQc3NOLCBzaXplb2YgKFJzYVBzc04pKTsNCj4gPiArICBVVF9BU1NFUlRfVFJVRSAoU3Rh dHVzKTsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUnNhU2V0S2V5IChtUnNhLCBSc2FLZXlFLCBS c2FQc3NFLCBzaXplb2YgKFJzYVBzc0UpKTsNCj4gPiArICBVVF9BU1NFUlRfVFJVRSAoU3RhdHVz KTsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUnNhU2V0S2V5IChtUnNhLCBSc2FLZXlELCBSc2FQ c3NELCBzaXplb2YgKFJzYVBzc0QpKTsNCj4gPiArICBVVF9BU1NFUlRfVFJVRSAoU3RhdHVzKTsN Cj4gPiArDQo+ID4gKyAgU2lnU2l6ZSA9IDA7DQo+ID4gKyAgU3RhdHVzID0gUnNhUHNzU2lnbiAo bVJzYSwgUHNzTWVzc2FnZSwgc2l6ZW9mKFBzc01lc3NhZ2UpLA0KPiBTSEEyNTZfRElHRVNUX1NJ WkUsIFNIQTI1Nl9ESUdFU1RfU0laRSwgTlVMTCwgJlNpZ1NpemUpOw0KPiA+ICsgIFVUX0FTU0VS VF9GQUxTRSAoU3RhdHVzKTsNCj4gPiArICBVVF9BU1NFUlRfTk9UX0VRVUFMIChTaWdTaXplLCAw KTsNCj4gPiArDQo+ID4gKyAgU2lnbmF0dXJlID0gQWxsb2NhdGVQb29sIChTaWdTaXplKTsNCj4g PiArICBTdGF0dXMgPSBSc2FQc3NTaWduIChtUnNhLCBQc3NNZXNzYWdlLCBzaXplb2YoUHNzTWVz c2FnZSksDQo+IFNIQTI1Nl9ESUdFU1RfU0laRSwgU0hBMjU2X0RJR0VTVF9TSVpFLCBTaWduYXR1 cmUsICZTaWdTaXplKTsNCj4gPiArICBVVF9BU1NFUlRfVFJVRSAoU3RhdHVzKTsNCj4gPiArDQo+ ID4gKyAgLy8NCj4gPiArICAvLyBWZXJpZnkgUlNBIFBTUyBlbmNvZGVkIFNpZ25hdHVyZSBnZW5l cmF0ZWQgaW4gYWJvdmUgc3RlcA0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gUnNhUHNzVmVy aWZ5IChtUnNhLCBQc3NNZXNzYWdlLCBzaXplb2YoUHNzTWVzc2FnZSksIFNpZ25hdHVyZSwNCj4g U2lnU2l6ZSwgU0hBMjU2X0RJR0VTVF9TSVpFLCBTSEEyNTZfRElHRVNUX1NJWkUpOw0KPiA+ICsg IFVUX0FTU0VSVF9UUlVFIChTdGF0dXMpOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFZl cmlmeSBOSVNUIEZJUFMgMTg2LTMgUlNBIHRlc3QgdmVjdG9yIHNpZ25hdHVyZQ0KPiA+ICsgIC8v DQo+ID4gKyAgU3RhdHVzID0gUnNhUHNzVmVyaWZ5IChtUnNhLCBQc3NNZXNzYWdlLCBzaXplb2Yo UHNzTWVzc2FnZSksDQo+IFRlc3RWZWN0b3JTaWduYXR1cmUsIHNpemVvZihUZXN0VmVjdG9yU2ln bmF0dXJlKSwgU0hBMjU2X0RJR0VTVF9TSVpFLA0KPiBTSEEyNTZfRElHRVNUX1NJWkUpOw0KPiA+ ICsgIFVUX0FTU0VSVF9UUlVFIChTdGF0dXMpOw0KPiA+ICsNCj4gPiArICBGcmVlUG9vbChTaWdu YXR1cmUpOw0KPiA+ICsgIHJldHVybiBVTklUX1RFU1RfUEFTU0VEOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICsNCj4gPiArVEVTVF9ERVNDIG1Sc2FQc3NUZXN0W10gPSB7DQo+ID4gKyAgICAvLw0KPiA+ ICsgICAgLy8gLS0tLS1EZXNjcmlwdGlvbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tQ2xhc3MtLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IEZ1bmN0aW9uLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tUHJlLS0tLS0tLS0tLS0tLS0tLS0tLS0tUG9zdC0tLS0tLS0t LUNvbnRleHQNCj4gPiArICAgIC8vDQo+ID4gKyAgICB7IlRlc3RWZXJpZnlSc2FQc3NTaWduVmVy aWZ5KCkiLCAgICAgICAgICAgIkNyeXB0b1BrZy5CYXNlQ3J5cHRMaWIuUnNhIiwNCj4gVGVzdFZl cmlmeVJzYVBzc1NpZ25WZXJpZnksICAgICAgICAgICBUZXN0VmVyaWZ5UnNhUHNzUHJlUmVxLA0K PiBUZXN0VmVyaWZ5UnNhUHNzQ2xlYW5VcCwgTlVMTH0sDQo+ID4gK307DQo+ID4gKw0KPiA+ICtV SU5UTiBtUnNhUHNzVGVzdE51bSA9IEFSUkFZX1NJWkUobVJzYVBzc1Rlc3QpOw0KPiA+IGRpZmYg LS1naXQgYS9DcnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Sc2FU ZXN0cy5jDQo+IGIvQ3J5cHRvUGtnL1Rlc3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlQ3J5cHRMaWIv UnNhVGVzdHMuYw0KPiA+IGluZGV4IDdjZTIwZDJlNzc4Zi4uMDk2OWI2YWVhNjYwIDEwMDY0NA0K PiA+IC0tLSBhL0NyeXB0b1BrZy9UZXN0L1VuaXRUZXN0L0xpYnJhcnkvQmFzZUNyeXB0TGliL1Jz YVRlc3RzLmMNCj4gPiArKysgYi9DcnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VD cnlwdExpYi9Sc2FUZXN0cy5jDQo+ID4gQEAgLTI5NSw2ICsyOTUsOCBAQCBUZXN0VmVyaWZ5UnNh UGtjczFTaWduVmVyaWZ5ICgNCj4gPiAgICBTdGF0dXMgPSBSc2FQa2NzMVZlcmlmeSAobVJzYSwg SGFzaFZhbHVlLCBIYXNoU2l6ZSwgU2lnbmF0dXJlLCBTaWdTaXplKTsNCj4gPiAgICBVVF9BU1NF UlRfVFJVRSAoU3RhdHVzKTsNCj4gPg0KPiA+ICsgIEZyZWVQb29sKFNpZ25hdHVyZSk7DQo+ID4g Kw0KPiA+ICAgIHJldHVybiBVTklUX1RFU1RfUEFTU0VEOw0KPiA+ICB9DQo+ID4NCj4gPiBkaWZm IC0tZ2l0IGEvQ3J5cHRvUGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlQ3J5cHRMaWIuaA0KPiBiL0Ny eXB0b1BrZy9JbmNsdWRlL0xpYnJhcnkvQmFzZUNyeXB0TGliLmgNCj4gPiBpbmRleCA0OTYxMjFl NmE0ZWQuLjhjN2Q1OTIyZWY5NiAxMDA2NDQNCj4gPiAtLS0gYS9DcnlwdG9Qa2cvSW5jbHVkZS9M aWJyYXJ5L0Jhc2VDcnlwdExpYi5oDQo+ID4gKysrIGIvQ3J5cHRvUGtnL0luY2x1ZGUvTGlicmFy eS9CYXNlQ3J5cHRMaWIuaA0KPiA+IEBAIC0xMzYzLDYgKzEzNjMsODAgQEAgUnNhUGtjczFWZXJp ZnkgKA0KPiA+ICAgIElOICBVSU5UTiAgICAgICAgU2lnU2l6ZQ0KPiA+ICAgICk7DQo+ID4NCj4g PiArLyoqDQo+ID4gKyAgQ2FycmllcyBvdXQgdGhlIFJTQS1TU0Egc2lnbmF0dXJlIGdlbmVyYXRp b24gd2l0aCBFTVNBLVBTUyBlbmNvZGluZw0KPiBzY2hlbWUuDQo+ID4gKw0KPiA+ICsgIFRoaXMg ZnVuY3Rpb24gY2FycmllcyBvdXQgdGhlIFJTQS1TU0Egc2lnbmF0dXJlIGdlbmVyYXRpb24gd2l0 aCBFTVNBLVBTUw0KPiBlbmNvZGluZyBzY2hlbWUgZGVmaW5lZCBpbg0KPiA+ICsgIFJGQyA4MDE3 Lg0KPiA+ICsgIE1hc2sgZ2VuZXJhdGlvbiBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyB0aGUgbWVz c2FnZSBkaWdlc3QgYWxnb3JpdGhtLg0KPiA+ICsgIElmIHRoZSBTaWduYXR1cmUgYnVmZmVyIGlz IHRvbyBzbWFsbCB0byBob2xkIHRoZSBjb250ZW50cyBvZiBzaWduYXR1cmUsIEZBTFNFDQo+ID4g KyAgaXMgcmV0dXJuZWQgYW5kIFNpZ1NpemUgaXMgc2V0IHRvIHRoZSByZXF1aXJlZCBidWZmZXIg c2l6ZSB0byBvYnRhaW4gdGhlDQo+IHNpZ25hdHVyZS4NCj4gPiArDQo+ID4gKyAgSWYgUnNhQ29u dGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiArICBJZiBNZXNzYWdlIGlzIE5V TEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ICsgIElmIE1zZ1NpemUgaXMgemVybyBvciA+IElO VF9NQVgsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ICsgIElmIERpZ2VzdExlbiBpcyBOT1QgMzIs IDQ4IG9yIDY0LCByZXR1cm4gRkFMU0UuDQo+ID4gKyAgSWYgU2FsdExlbiBpcyA8IERpZ2VzdExl biwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gKyAgSWYgU2lnU2l6ZSBpcyBsYXJnZSBlbm91Z2gg YnV0IFNpZ25hdHVyZSBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiArICBJZiB0aGlz IGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtW2luXSAgICAgIFJzYUNvbnRleHQgICBQb2ludGVyIHRvIFJTQSBjb250ZXh0 IGZvciBzaWduYXR1cmUgZ2VuZXJhdGlvbi4NCj4gPiArICBAcGFyYW1baW5dICAgICAgTWVzc2Fn ZSAgICAgIFBvaW50ZXIgdG8gb2N0ZXQgbWVzc2FnZSB0byBiZSBzaWduZWQuDQo+ID4gKyAgQHBh cmFtW2luXSAgICAgIE1zZ1NpemUgICAgICBTaXplIG9mIHRoZSBtZXNzYWdlIGluIGJ5dGVzLg0K PiA+ICsgIEBwYXJhbVtpbl0gICAgICBEaWdlc3RMZW4gICAgTGVuZ3RoIG9mIHRoZSBkaWdlc3Qg aW4gYnl0ZXMgdG8gYmUgdXNlZCBmb3IgUlNBDQo+IHNpZ25hdHVyZSBvcGVyYXRpb24uDQo+ID4g KyAgQHBhcmFtW2luXSAgICAgIFNhbHRMZW4gICAgICBMZW5ndGggb2YgdGhlIHNhbHQgaW4gYnl0 ZXMgdG8gYmUgdXNlZCBmb3IgUFNTDQo+IGVuY29kaW5nLg0KPiA+ICsgIEBwYXJhbVtvdXRdICAg ICBTaWduYXR1cmUgICAgUG9pbnRlciB0byBidWZmZXIgdG8gcmVjZWl2ZSBSU0EgUFNTIHNpZ25h dHVyZS4NCj4gPiArICBAcGFyYW1baW4sIG91dF0gU2lnU2l6ZSAgICAgIE9uIGlucHV0LCB0aGUg c2l6ZSBvZiBTaWduYXR1cmUgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGluIFNp Z25hdHVyZSBidWZmZXIgaW4NCj4gYnl0ZXMuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgIFRSVUUg ICBTaWduYXR1cmUgc3VjY2Vzc2Z1bGx5IGdlbmVyYXRlZCBpbiBSU0FTU0EtUFNTLg0KPiA+ICsg IEByZXR2YWwgIEZBTFNFICBTaWduYXR1cmUgZ2VuZXJhdGlvbiBmYWlsZWQuDQo+ID4gKyAgQHJl dHZhbCAgRkFMU0UgIFNpZ1NpemUgaXMgdG9vIHNtYWxsLg0KPiA+ICsgIEByZXR2YWwgIEZBTFNF ICBUaGlzIGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLg0KPiA+ICsNCj4gPiArKiovDQo+ID4g K0JPT0xFQU4NCj4gPiArRUZJQVBJDQo+ID4gK1JzYVBzc1NpZ24gKA0KPiA+ICsgIElOICAgICAg Vk9JRCAgICAgICAgICpSc2FDb250ZXh0LA0KPiA+ICsgIElOICAgICAgQ09OU1QgVUlOVDggICpN ZXNzYWdlLA0KPiA+ICsgIElOICAgICAgVUlOVE4gICAgICAgIE1zZ1NpemUsDQo+ID4gKyAgSU4g ICAgICBVSU5UMTYgICAgICAgRGlnZXN0TGVuLA0KPiA+ICsgIElOICAgICAgVUlOVDE2ICAgICAg IFNhbHRMZW4sDQo+ID4gKyAgT1VUICAgICBVSU5UOCAgICAgICAgKlNpZ25hdHVyZSwNCj4gPiAr ICBJTiBPVVQgIFVJTlROICAgICAgICAqU2lnU2l6ZQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICBWZXJpZmllcyB0aGUgUlNBIHNpZ25hdHVyZSB3aXRoIFJTQVNTQS1QU1Mgc2ln bmF0dXJlIHNjaGVtZSBkZWZpbmVkIGluIFJGQw0KPiA4MDE3Lg0KPiA+ICsgIEltcGxlbWVudGF0 aW9uIGRldGVybWluZXMgc2FsdCBsZW5ndGggYXV0b21hdGljYWxseSBmcm9tIHRoZSBzaWduYXR1 cmUNCj4gZW5jb2RpbmcuDQo+ID4gKyAgTWFzayBnZW5lcmF0aW9uIGZ1bmN0aW9uIGlzIHRoZSBz YW1lIGFzIHRoZSBtZXNzYWdlIGRpZ2VzdCBhbGdvcml0aG0uDQo+ID4gKyAgU2FsdCBsZW5ndGgg c2hvdWxkIGF0bGVhc3QgYmUgZXF1YWwgdG8gZGlnZXN0IGxlbmd0aC4NCj4gPiArDQo+ID4gKyAg QHBhcmFtW2luXSAgUnNhQ29udGV4dCAgICAgIFBvaW50ZXIgdG8gUlNBIGNvbnRleHQgZm9yIHNp Z25hdHVyZSB2ZXJpZmljYXRpb24uDQo+ID4gKyAgQHBhcmFtW2luXSAgTWVzc2FnZSAgICAgICAg IFBvaW50ZXIgdG8gb2N0ZXQgbWVzc2FnZSB0byBiZSB2ZXJpZmllZC4NCj4gPiArICBAcGFyYW1b aW5dICBNc2dTaXplICAgICAgICAgU2l6ZSBvZiB0aGUgbWVzc2FnZSBpbiBieXRlcy4NCj4gPiAr ICBAcGFyYW1baW5dICBTaWduYXR1cmUgICAgICAgUG9pbnRlciB0byBSU0FTU0EtUFNTIHNpZ25h dHVyZSB0byBiZSB2ZXJpZmllZC4NCj4gPiArICBAcGFyYW1baW5dICBTaWdTaXplICAgICAgICAg U2l6ZSBvZiBzaWduYXR1cmUgaW4gYnl0ZXMuDQo+ID4gKyAgQHBhcmFtW2luXSAgRGlnZXN0TGVu ICAgICAgIExlbmd0aCBvZiBkaWdlc3QgZm9yIFJTQSBvcGVyYXRpb24uDQo+ID4gKyAgQHBhcmFt W2luXSAgU2FsdExlbiAgICAgICAgIFNhbHQgbGVuZ3RoIGZvciBQU1MgZW5jb2RpbmcuDQo+ID4g Kw0KPiA+ICsgIEByZXR2YWwgIFRSVUUgICBWYWxpZCBzaWduYXR1cmUgZW5jb2RlZCBpbiBSU0FT U0EtUFNTLg0KPiA+ICsgIEByZXR2YWwgIEZBTFNFICBJbnZhbGlkIHNpZ25hdHVyZSBvciBpbnZh bGlkIFJTQSBjb250ZXh0Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0JPT0xFQU4NCj4gPiArRUZJ QVBJDQo+ID4gK1JzYVBzc1ZlcmlmeSAoDQo+ID4gKyAgSU4gIFZPSUQgICAgICAgICAqUnNhQ29u dGV4dCwNCj4gPiArICBJTiAgQ09OU1QgVUlOVDggICpNZXNzYWdlLA0KPiA+ICsgIElOICBVSU5U TiAgICAgICAgTXNnU2l6ZSwNCj4gPiArICBJTiAgQ09OU1QgVUlOVDggICpTaWduYXR1cmUsDQo+ ID4gKyAgSU4gIFVJTlROICAgICAgICBTaWdTaXplLA0KPiA+ICsgIElOICBVSU5UMTYgICAgICAg RGlnZXN0TGVuLA0KPiA+ICsgIElOICBVSU5UMTYgICAgICAgU2FsdExlbg0KPiA+ICsgICk7DQo+ ID4gKw0KPiA+ICAvKioNCj4gPiAgICBSZXRyaWV2ZSB0aGUgUlNBIFByaXZhdGUgS2V5IGZyb20g dGhlIHBhc3N3b3JkLXByb3RlY3RlZCBQRU0ga2V5IGRhdGEuDQo+ID4NCj4gPiBkaWZmIC0tZ2l0 IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0Jhc2VDcnlwdExpYi5pbmYNCj4gYi9D cnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvQmFzZUNyeXB0TGliLmluZg0KPiA+IGluZGV4 IDRhYWUyYWJhOTVkNi4uNDk3MDNmYTRjOTYzIDEwMDY0NA0KPiA+IC0tLSBhL0NyeXB0b1BrZy9M aWJyYXJ5L0Jhc2VDcnlwdExpYi9CYXNlQ3J5cHRMaWIuaW5mDQo+ID4gKysrIGIvQ3J5cHRvUGtn L0xpYnJhcnkvQmFzZUNyeXB0TGliL0Jhc2VDcnlwdExpYi5pbmYNCj4gPiBAQCAtNDksNiArNDks OCBAQA0KPiA+ICAgIFBrL0NyeXB0WDUwOS5jDQo+ID4gICAgUGsvQ3J5cHRBdXRoZW50aWNvZGUu Yw0KPiA+ICAgIFBrL0NyeXB0VHMuYw0KPiA+ICsgIFBrL0NyeXB0UnNhUHNzLmMNCj4gPiArICBQ ay9DcnlwdFJzYVBzc1NpZ24uYw0KPiA+ICAgIFBlbS9DcnlwdFBlbS5jDQo+ID4NCj4gPiAgICBT eXNDYWxsL0NydFdyYXBwZXIuYw0KPiA+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9C YXNlQ3J5cHRMaWIvUGVpQ3J5cHRMaWIuaW5mDQo+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNy eXB0TGliL1BlaUNyeXB0TGliLmluZg0KPiA+IGluZGV4IDc1MDllNDI3MzAyOC4uMGNhYjVmM2Nl MzZjIDEwMDY0NA0KPiA+IC0tLSBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9QZWlD cnlwdExpYi5pbmYNCj4gPiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGVp Q3J5cHRMaWIuaW5mDQo+ID4gQEAgLTU1LDYgKzU1LDggQEANCj4gPiAgICBQay9DcnlwdFg1MDlO dWxsLmMNCj4gPiAgICBQay9DcnlwdEF1dGhlbnRpY29kZU51bGwuYw0KPiA+ICAgIFBrL0NyeXB0 VHNOdWxsLmMNCj4gPiArICBQay9DcnlwdFJzYVBzcy5jDQo+ID4gKyAgUGsvQ3J5cHRSc2FQc3NT aWduTnVsbC5jDQo+ID4gICAgUGVtL0NyeXB0UGVtTnVsbC5jDQo+ID4gICAgUmFuZC9DcnlwdFJh bmROdWxsLmMNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5 cHRMaWIvUnVudGltZUNyeXB0TGliLmluZg0KPiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlw dExpYi9SdW50aW1lQ3J5cHRMaWIuaW5mDQo+ID4gaW5kZXggNzBjOTg1ZWM5M2RjLi4zZDNhNmZi OTRhNzcgMTAwNjQ0DQo+ID4gLS0tIGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1J1 bnRpbWVDcnlwdExpYi5pbmYNCj4gPiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRM aWIvUnVudGltZUNyeXB0TGliLmluZg0KPiA+IEBAIC01NSw2ICs1NSw4IEBADQo+ID4gICAgUGsv Q3J5cHRYNTA5LmMNCj4gPiAgICBQay9DcnlwdEF1dGhlbnRpY29kZU51bGwuYw0KPiA+ICAgIFBr L0NyeXB0VHNOdWxsLmMNCj4gPiArICBQay9DcnlwdFJzYVBzc051bGwuYw0KPiA+ICsgIFBrL0Ny eXB0UnNhUHNzU2lnbk51bGwuYw0KPiA+ICAgIFBlbS9DcnlwdFBlbS5jDQo+ID4NCj4gPiAgICBT eXNDYWxsL0NydFdyYXBwZXIuYw0KPiA+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9C YXNlQ3J5cHRMaWIvU21tQ3J5cHRMaWIuaW5mDQo+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNy eXB0TGliL1NtbUNyeXB0TGliLmluZg0KPiA+IGluZGV4IDkxZWMzZTAzYmY1ZS4uMDdjMzc2Y2Uw NGJiIDEwMDY0NA0KPiA+IC0tLSBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9TbW1D cnlwdExpYi5pbmYNCj4gPiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvU21t Q3J5cHRMaWIuaW5mDQo+ID4gQEAgLTUzLDYgKzUzLDggQEANCj4gPiAgICBQay9DcnlwdFg1MDku Yw0KPiA+ICAgIFBrL0NyeXB0QXV0aGVudGljb2RlTnVsbC5jDQo+ID4gICAgUGsvQ3J5cHRUc051 bGwuYw0KPiA+ICsgIFBrL0NyeXB0UnNhUHNzLmMNCj4gPiArICBQay9DcnlwdFJzYVBzc1NpZ25O dWxsLmMNCj4gPiAgICBQZW0vQ3J5cHRQZW0uYw0KPiA+DQo+ID4gICAgU3lzQ2FsbC9DcnRXcmFw cGVyLmMNCj4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1Vu aXRUZXN0SG9zdEJhc2VDcnlwdExpYi5pbmYNCj4gYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5 cHRMaWIvVW5pdFRlc3RIb3N0QmFzZUNyeXB0TGliLmluZg0KPiA+IGluZGV4IGRiNTA2YzMyZjcy NC4uYjk4Zjk2MzViMjdiIDEwMDY0NA0KPiA+IC0tLSBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VD cnlwdExpYi9Vbml0VGVzdEhvc3RCYXNlQ3J5cHRMaWIuaW5mDQo+ID4gKysrIGIvQ3J5cHRvUGtn L0xpYnJhcnkvQmFzZUNyeXB0TGliL1VuaXRUZXN0SG9zdEJhc2VDcnlwdExpYi5pbmYNCj4gPiBA QCAtNDQsNiArNDQsOCBAQA0KPiA+ICAgIFBrL0NyeXB0QXV0aGVudGljb2RlLmMNCj4gPiAgICBQ ay9DcnlwdFRzLmMNCj4gPiAgICBQZW0vQ3J5cHRQZW0uYw0KPiA+ICsgIFBrL0NyeXB0UnNhUHNz LmMNCj4gPiArICBQay9DcnlwdFJzYVBzc1NpZ24uYw0KPiA+DQo+ID4gICAgU3lzQ2FsbC9Vbml0 VGVzdEhvc3RDcnRXcmFwcGVyLmMNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGli cmFyeS9CYXNlQ3J5cHRMaWJOdWxsL0Jhc2VDcnlwdExpYk51bGwuaW5mDQo+IGIvQ3J5cHRvUGtn L0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9CYXNlQ3J5cHRMaWJOdWxsLmluZg0KPiA+IGluZGV4 IDY4OWFmNGZlZGQ2OC4uZmFmOTU5ODI3YjkwIDEwMDY0NA0KPiA+IC0tLSBhL0NyeXB0b1BrZy9M aWJyYXJ5L0Jhc2VDcnlwdExpYk51bGwvQmFzZUNyeXB0TGliTnVsbC5pbmYNCj4gPiArKysgYi9D cnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWJOdWxsL0Jhc2VDcnlwdExpYk51bGwuaW5mDQo+ ID4gQEAgLTUwLDYgKzUwLDggQEANCj4gPiAgICBQay9DcnlwdFRzTnVsbC5jDQo+ID4gICAgUGVt L0NyeXB0UGVtTnVsbC5jDQo+ID4gICAgUmFuZC9DcnlwdFJhbmROdWxsLmMNCj4gPiArICBQay9D cnlwdFJzYVBzc051bGwuYw0KPiA+ICsgIFBrL0NyeXB0UnNhUHNzU2lnbk51bGwuYw0KPiA+DQo+ ID4gIFtQYWNrYWdlc10NCj4gPiAgICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+IGRpZmYgLS1naXQg YS9DcnlwdG9Qa2cvUHJpdmF0ZS9Qcm90b2NvbC9DcnlwdG8uaA0KPiBiL0NyeXB0b1BrZy9Qcml2 YXRlL1Byb3RvY29sL0NyeXB0by5oDQo+ID4gaW5kZXggMTc5MzBhNzdhNjBlLi5lMzA0MzAyYzk0 NDUgMTAwNjQ0DQo+ID4gLS0tIGEvQ3J5cHRvUGtnL1ByaXZhdGUvUHJvdG9jb2wvQ3J5cHRvLmgN Cj4gPiArKysgYi9DcnlwdG9Qa2cvUHJpdmF0ZS9Qcm90b2NvbC9DcnlwdG8uaA0KPiA+IEBAIC0z NDA4LDYgKzM0MDgsODEgQEAgRUZJX1NUQVRVUw0KPiA+ICAgIElOIE9VVCBVSU5UTiAgICAgICAg ICAgICAgICAgICAgKkRhdGFTaXplDQo+ID4gICAgKTsNCj4gPg0KPiA+ICsvKioNCj4gPiArICBD YXJyaWVzIG91dCB0aGUgUlNBLVNTQSBzaWduYXR1cmUgZ2VuZXJhdGlvbiB3aXRoIEVNU0EtUFNT IGVuY29kaW5nDQo+IHNjaGVtZS4NCj4gPiArDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBjYXJyaWVz IG91dCB0aGUgUlNBLVNTQSBzaWduYXR1cmUgZ2VuZXJhdGlvbiB3aXRoIEVNU0EtUFNTDQo+IGVu Y29kaW5nIHNjaGVtZSBkZWZpbmVkIGluDQo+ID4gKyAgUkZDIDgwMTcuDQo+ID4gKyAgTWFzayBn ZW5lcmF0aW9uIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHRoZSBtZXNzYWdlIGRpZ2VzdCBhbGdv cml0aG0uDQo+ID4gKyAgSWYgdGhlIFNpZ25hdHVyZSBidWZmZXIgaXMgdG9vIHNtYWxsIHRvIGhv bGQgdGhlIGNvbnRlbnRzIG9mIHNpZ25hdHVyZSwgRkFMU0UNCj4gPiArICBpcyByZXR1cm5lZCBh bmQgU2lnU2l6ZSBpcyBzZXQgdG8gdGhlIHJlcXVpcmVkIGJ1ZmZlciBzaXplIHRvIG9idGFpbiB0 aGUNCj4gc2lnbmF0dXJlLg0KPiA+ICsNCj4gPiArICBJZiBSc2FDb250ZXh0IGlzIE5VTEwsIHRo ZW4gcmV0dXJuIEZBTFNFLg0KPiA+ICsgIElmIE1lc3NhZ2UgaXMgTlVMTCwgdGhlbiByZXR1cm4g RkFMU0UuDQo+ID4gKyAgSWYgTXNnU2l6ZSBpcyB6ZXJvIG9yID4gSU5UX01BWCwgdGhlbiByZXR1 cm4gRkFMU0UuDQo+ID4gKyAgSWYgRGlnZXN0TGVuIGlzIE5PVCAzMiwgNDggb3IgNjQsIHJldHVy biBGQUxTRS4NCj4gPiArICBJZiBTYWx0TGVuIGlzIDwgRGlnZXN0TGVuLCB0aGVuIHJldHVybiBG QUxTRS4NCj4gPiArICBJZiBTaWdTaXplIGlzIGxhcmdlIGVub3VnaCBidXQgU2lnbmF0dXJlIGlz IE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ICsgIElmIHRoaXMgaW50ZXJmYWNlIGlzIG5v dCBzdXBwb3J0ZWQsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5d ICAgICAgUnNhQ29udGV4dCAgIFBvaW50ZXIgdG8gUlNBIGNvbnRleHQgZm9yIHNpZ25hdHVyZSBn ZW5lcmF0aW9uLg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICBNZXNzYWdlICAgICAgUG9pbnRlciB0 byBvY3RldCBtZXNzYWdlIHRvIGJlIHNpZ25lZC4NCj4gPiArICBAcGFyYW1baW5dICAgICAgTXNn U2l6ZSAgICAgIFNpemUgb2YgdGhlIG1lc3NhZ2UgaW4gYnl0ZXMuDQo+ID4gKyAgQHBhcmFtW2lu XSAgICAgIERpZ2VzdExlbiAgICBMZW5ndGggb2YgdGhlIGRpZ2VzdCBpbiBieXRlcyB0byBiZSB1 c2VkIGZvciBSU0ENCj4gc2lnbmF0dXJlIG9wZXJhdGlvbi4NCj4gPiArICBAcGFyYW1baW5dICAg ICAgU2FsdExlbiAgICAgIExlbmd0aCBvZiB0aGUgc2FsdCBpbiBieXRlcyB0byBiZSB1c2VkIGZv ciBQU1MNCj4gZW5jb2RpbmcuDQo+ID4gKyAgQHBhcmFtW291dF0gICAgIFNpZ25hdHVyZSAgICBQ b2ludGVyIHRvIGJ1ZmZlciB0byByZWNlaXZlIFJTQSBQU1Mgc2lnbmF0dXJlLg0KPiA+ICsgIEBw YXJhbVtpbiwgb3V0XSBTaWdTaXplICAgICAgT24gaW5wdXQsIHRoZSBzaXplIG9mIFNpZ25hdHVy ZSBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP biBvdXRwdXQsIHRoZSBzaXplIG9mIGRhdGEgcmV0dXJuZWQgaW4gU2lnbmF0dXJlIGJ1ZmZlciBp bg0KPiBieXRlcy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCAgVFJVRSAgIFNpZ25hdHVyZSBzdWNj ZXNzZnVsbHkgZ2VuZXJhdGVkIGluIFJTQVNTQS1QU1MuDQo+ID4gKyAgQHJldHZhbCAgRkFMU0Ug IFNpZ25hdHVyZSBnZW5lcmF0aW9uIGZhaWxlZC4NCj4gPiArICBAcmV0dmFsICBGQUxTRSAgU2ln U2l6ZSBpcyB0b28gc21hbGwuDQo+ID4gKyAgQHJldHZhbCAgRkFMU0UgIFRoaXMgaW50ZXJmYWNl IGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArdHlwZWRlZg0KPiA+ICtC T09MRUFODQo+ID4gKyhFRklBUEkqIEVES0lJX0NSWVBUT19SU0FfUFNTX1NJR04pKA0KPiA+ICsg IElOICAgICAgVk9JRCAgICAgICAgICpSc2FDb250ZXh0LA0KPiA+ICsgIElOICAgICAgQ09OU1Qg VUlOVDggICpNZXNzYWdlLA0KPiA+ICsgIElOICAgICAgVUlOVE4gICAgICAgIE1zZ1NpemUsDQo+ ID4gKyAgSU4gICAgICBVSU5UMTYgICAgICAgRGlnZXN0TGVuLA0KPiA+ICsgIElOICAgICAgVUlO VDE2ICAgICAgIFNhbHRMZW4sDQo+ID4gKyAgT1VUICAgICBVSU5UOCAgICAgICAgKlNpZ25hdHVy ZSwNCj4gPiArICBJTiBPVVQgIFVJTlROICAgICAgICAqU2lnU2l6ZQ0KPiA+ICsgICk7DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICBWZXJpZmllcyB0aGUgUlNBIHNpZ25hdHVyZSB3aXRoIFJTQVNT QS1QU1Mgc2lnbmF0dXJlIHNjaGVtZSBkZWZpbmVkIGluIFJGQw0KPiA4MDE3Lg0KPiA+ICsgIElt cGxlbWVudGF0aW9uIGRldGVybWluZXMgc2FsdCBsZW5ndGggYXV0b21hdGljYWxseSBmcm9tIHRo ZSBzaWduYXR1cmUNCj4gZW5jb2RpbmcuDQo+ID4gKyAgTWFzayBnZW5lcmF0aW9uIGZ1bmN0aW9u IGlzIHRoZSBzYW1lIGFzIHRoZSBtZXNzYWdlIGRpZ2VzdCBhbGdvcml0aG0uDQo+ID4gKyAgU2Fs dCBsZW5ndGggc2hvdWxkIGF0bGVhc3QgYmUgZXF1YWwgdG8gZGlnZXN0IGxlbmd0aC4NCj4gPiAr DQo+ID4gKyAgQHBhcmFtW2luXSAgUnNhQ29udGV4dCAgICAgIFBvaW50ZXIgdG8gUlNBIGNvbnRl eHQgZm9yIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24uDQo+ID4gKyAgQHBhcmFtW2luXSAgTWVzc2Fn ZSAgICAgICAgIFBvaW50ZXIgdG8gb2N0ZXQgbWVzc2FnZSB0byBiZSB2ZXJpZmllZC4NCj4gPiAr ICBAcGFyYW1baW5dICBNc2dTaXplICAgICAgICAgU2l6ZSBvZiB0aGUgbWVzc2FnZSBpbiBieXRl cy4NCj4gPiArICBAcGFyYW1baW5dICBTaWduYXR1cmUgICAgICAgUG9pbnRlciB0byBSU0FTU0Et UFNTIHNpZ25hdHVyZSB0byBiZSB2ZXJpZmllZC4NCj4gPiArICBAcGFyYW1baW5dICBTaWdTaXpl ICAgICAgICAgU2l6ZSBvZiBzaWduYXR1cmUgaW4gYnl0ZXMuDQo+ID4gKyAgQHBhcmFtW2luXSAg RGlnZXN0TGVuICAgICAgIExlbmd0aCBvZiBkaWdlc3QgZm9yIFJTQSBvcGVyYXRpb24uDQo+ID4g KyAgQHBhcmFtW2luXSAgU2FsdExlbiAgICAgICAgIFNhbHQgbGVuZ3RoIGZvciBQU1MgZW5jb2Rp bmcuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgIFRSVUUgICBWYWxpZCBzaWduYXR1cmUgZW5jb2Rl ZCBpbiBSU0FTU0EtUFNTLg0KPiA+ICsgIEByZXR2YWwgIEZBTFNFICBJbnZhbGlkIHNpZ25hdHVy ZSBvciBpbnZhbGlkIFJTQSBjb250ZXh0Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK3R5cGVkZWYN Cj4gPiArQk9PTEVBTg0KPiA+ICsoRUZJQVBJKiBFREtJSV9DUllQVE9fUlNBX1BTU19WRVJJRlkp KA0KPiA+ICsgIElOICBWT0lEICAgICAgICAgKlJzYUNvbnRleHQsDQo+ID4gKyAgSU4gIENPTlNU IFVJTlQ4ICAqTWVzc2FnZSwNCj4gPiArICBJTiAgVUlOVE4gICAgICAgIE1zZ1NpemUsDQo+ID4g KyAgSU4gIENPTlNUIFVJTlQ4ICAqU2lnbmF0dXJlLA0KPiA+ICsgIElOICBVSU5UTiAgICAgICAg U2lnU2l6ZSwNCj4gPiArICBJTiAgVUlOVDE2ICAgICAgIERpZ2VzdExlbiwNCj4gPiArICBJTiAg VUlOVDE2ICAgICAgIFNhbHRMZW4NCj4gPiArICApOw0KPiA+ICsNCj4gPiArDQo+ID4NCj4gPiAg Ly8vDQo+ID4gIC8vLyBFREsgSUkgQ3J5cHRvIFByb3RvY29sDQo+ID4gQEAgLTM1OTMsNiArMzY2 OCw5IEBAIHN0cnVjdCBfRURLSUlfQ1JZUFRPX1BST1RPQ09MIHsNCj4gPiAgICBFREtJSV9DUllQ VE9fVExTX0dFVF9IT1NUX1BVQkxJQ19DRVJUICAgICAgICAgICBUbHNHZXRIb3N0UHVibGljQ2Vy dDsNCj4gPiAgICBFREtJSV9DUllQVE9fVExTX0dFVF9IT1NUX1BSSVZBVEVfS0VZICAgICAgICAg ICBUbHNHZXRIb3N0UHJpdmF0ZUtleTsNCj4gPiAgICBFREtJSV9DUllQVE9fVExTX0dFVF9DRVJU X1JFVk9DQVRJT05fTElTVA0KPiBUbHNHZXRDZXJ0UmV2b2NhdGlvbkxpc3Q7DQo+ID4gKyAgLy8v IFJTQSBQU1MNCj4gPiArICBFREtJSV9DUllQVE9fUlNBX1BTU19TSUdOICAgICAgICAgICAgICAg ICAgICAgICBSc2FQc3NTaWduOw0KPiA+ICsgIEVES0lJX0NSWVBUT19SU0FfUFNTX1ZFUklGWSAg ICAgICAgICAgICAgICAgICAgIFJzYVBzc1ZlcmlmeTsNCj4gPiAgfTsNCj4gPg0KPiA+ICBleHRl cm4gR1VJRCBnRWRraWlDcnlwdG9Qcm90b2NvbEd1aWQ7DQo+ID4gZGlmZiAtLWdpdCBhL0NyeXB0 b1BrZy9UZXN0L1VuaXRUZXN0L0xpYnJhcnkvQmFzZUNyeXB0TGliL1Rlc3RCYXNlQ3J5cHRMaWIu aA0KPiBiL0NyeXB0b1BrZy9UZXN0L1VuaXRUZXN0L0xpYnJhcnkvQmFzZUNyeXB0TGliL1Rlc3RC YXNlQ3J5cHRMaWIuaA0KPiA+IGluZGV4IDlkMWNiMTUwYTExMy4uMjVjMTM3OWYxYTc3IDEwMDY0 NA0KPiA+IC0tLSBhL0NyeXB0b1BrZy9UZXN0L1VuaXRUZXN0L0xpYnJhcnkvQmFzZUNyeXB0TGli L1Rlc3RCYXNlQ3J5cHRMaWIuaA0KPiA+ICsrKyBiL0NyeXB0b1BrZy9UZXN0L1VuaXRUZXN0L0xp YnJhcnkvQmFzZUNyeXB0TGliL1Rlc3RCYXNlQ3J5cHRMaWIuaA0KPiA+IEBAIC04Myw2ICs4Myw5 IEBAIGV4dGVybiBURVNUX0RFU0MgbVBybmdUZXN0W107DQo+ID4gIGV4dGVybiBVSU5UTiBtT2Fl cFRlc3ROdW07DQo+ID4gIGV4dGVybiBURVNUX0RFU0MgbU9hZXBUZXN0W107DQo+ID4NCj4gPiAr ZXh0ZXJuIFVJTlROIG1Sc2FQc3NUZXN0TnVtOw0KPiA+ICtleHRlcm4gVEVTVF9ERVNDIG1Sc2FQ c3NUZXN0W107DQo+ID4gKw0KPiA+ICAvKiogQ3JlYXRlcyBhIGZyYW1ld29yayB5b3UgY2FuIHVz ZSAqLw0KPiA+ICBFRklfU1RBVFVTDQo+ID4gIEVGSUFQSQ0KPiA+IGRpZmYgLS1naXQNCj4gYS9D cnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9UZXN0QmFzZUNyeXB0 TGliSG9zdC5pbmYNCj4gYi9DcnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VDcnlw dExpYi9UZXN0QmFzZUNyeXB0TGliSG9zdC5pbmYNCj4gPiBpbmRleCAzMDBiOThlNDBiMzMuLjAw Yzg2OTI2NTA4MCAxMDA2NDQNCj4gPiAtLS0gYS9DcnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJy YXJ5L0Jhc2VDcnlwdExpYi9UZXN0QmFzZUNyeXB0TGliSG9zdC5pbmYNCj4gPiArKysNCj4gYi9D cnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9UZXN0QmFzZUNyeXB0 TGliSG9zdC5pbmYNCj4gPiBAQCAtMzQsNiArMzQsNyBAQA0KPiA+ICAgIFJhbmRUZXN0cy5jDQo+ ID4gICAgUGtjczdFa3VUZXN0cy5jDQo+ID4gICAgT2FlcEVuY3J5cHRUZXN0cy5jDQo+ID4gKyAg UnNhUHNzVGVzdHMuYw0KPiA+DQo+ID4gIFtQYWNrYWdlc10NCj4gPiAgICBNZGVQa2cvTWRlUGtn LmRlYw0KPiA+IGRpZmYgLS1naXQNCj4gYS9DcnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5 L0Jhc2VDcnlwdExpYi9UZXN0QmFzZUNyeXB0TGliU2hlbGwuaW5mDQo+IGIvQ3J5cHRvUGtnL1Rl c3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlQ3J5cHRMaWIvVGVzdEJhc2VDcnlwdExpYlNoZWxsLmlu Zg0KPiA+IGluZGV4IGQ1ZTdlMGQwMTQ0Ni4uY2E3ODlhYTZhZGEzIDEwMDY0NA0KPiA+IC0tLSBh L0NyeXB0b1BrZy9UZXN0L1VuaXRUZXN0L0xpYnJhcnkvQmFzZUNyeXB0TGliL1Rlc3RCYXNlQ3J5 cHRMaWJTaGVsbC5pbmYNCj4gPiArKysNCj4gYi9DcnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJy YXJ5L0Jhc2VDcnlwdExpYi9UZXN0QmFzZUNyeXB0TGliU2hlbGwuaW5mDQo+ID4gQEAgLTM1LDYg KzM1LDcgQEANCj4gPiAgICBSYW5kVGVzdHMuYw0KPiA+ICAgIFBrY3M3RWt1VGVzdHMuYw0KPiA+ ICAgIE9hZXBFbmNyeXB0VGVzdHMuYw0KPiA+ICsgIFJzYVBzc1Rlc3RzLmMNCj4gPg0KPiA+ICBb UGFja2FnZXNdDQo+ID4gICAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiAtLQ0KPiA+IDIuMTQuMy53 aW5kb3dzLjENCj4gPg0KPiA+DQo+ID4NCj4gPg0KPiA+DQo+ID4NCj4gDQo+IA0KPiANCj4gDQoN Cg==