From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (NAM02-BN1-obe.outbound.protection.outlook.com [40.107.212.52]) by mx.groups.io with SMTP id smtpd.web10.2401.1681539177653475313 for ; Fri, 14 Apr 2023 23:12:58 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@amd.com header.s=selector1 header.b=wE0bLRoL; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: amd.com, ip: 40.107.212.52, mailfrom: abner.chang@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=C6ZDQoi7uPty3myUrdPJRT6nQSBdcSMHT/KgkvYU5dxBg4OCRsUqcM/306VGd4zNDr/gc0qcDAc+JClRmEoDf6IiFitbgdQjXIspc9oiTahJG+ds2pNdYojlXOpG9oiCgfYXvpfI4VDJDGplPysJ98tve59yxxJVNfUi+FVgoq1lYz4cwu8/NxKmqtODUoTAm3+tTdbgyMdeXs+Zsy57sYiz/7V+fsmFPvDJewFjxIrdaNjuwKDDF5u6WTOiBJb00DiOZheXuu9QU3DAbYvIkF1taTuCjcnqzPRYXZm/WI6/rQICScpP1kHoARQyrrE1QzSqnaRozPs5qQKUuI8E1A== 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=Krn4xxYHSjheVQcftLpbwiHs+HF0oET2ca/7iEPl1fY=; b=Ris+NSMhgAhxn3bskIEXSGHCQ8nmlCB48Y2O82pJuifsZkQ9KRiu9aEnc9XZPljg4npK5eVgmVVO8/HslcXH6HAqwt4zWW/qRluZmEDSmWi3W1BAFSKH18G2LfKg0TmvBlZXHd9Bvc7wHr4y442Vu/y3NY4/jbwuFX1DpHzuSPJge1IMCAnAjM11jDnFpdUf6SRnAuA4642yd0O9CTZUc0AouJl0Md92dqxTUQnMHU6SR5JQLgFBDUg1/OZUAUQn20LKwi+8yc5qiAl4e7OtjGyJy+ehJ/un5WEijSb3jcTT98XuR2KKiNkdChkIdzBg2zOX0IpAX4oFdkSNWZq4rg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Krn4xxYHSjheVQcftLpbwiHs+HF0oET2ca/7iEPl1fY=; b=wE0bLRoLpg0O9wG0sj8hE0qhZ4ZLa2Mrb2cYQckWD4DZRbQJnuyEg3SCBTNoe8D8j/uEfJdIpNECiKKvcxatbBa750MRRosDM7mb/UURQYNtTiz1JN2Y4voFtfJn1YR64fPCtOsFpDMgXvz/zknATRH3lN/8RR9VWxUWqLqT3x0= Received: from MN2PR12MB3966.namprd12.prod.outlook.com (2603:10b6:208:165::18) by CY8PR12MB7433.namprd12.prod.outlook.com (2603:10b6:930:53::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.30; Sat, 15 Apr 2023 06:12:54 +0000 Received: from MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::30f:bd83:40dd:8f1]) by MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::30f:bd83:40dd:8f1%3]) with mapi id 15.20.6298.030; Sat, 15 Apr 2023 06:12:53 +0000 From: "Chang, Abner" To: Tinh Nguyen , "devel@edk2.groups.io" CC: Liming Gao , Isaac Oram , Nate DeSimone , Nickle Wang , Igor Kulchytskyy , "Attar, AbdulLateef (Abdul Lateef)" Subject: Re: [edk2-devel] [PATCH v4 5/9] ManageabilityPkg: Add ManageabilityTransportHelperLib Thread-Topic: [edk2-devel] [PATCH v4 5/9] ManageabilityPkg: Add ManageabilityTransportHelperLib Thread-Index: AQHZXbWPow8nE0Mke0qzCMWN3jDrC68sBZXA Date: Sat, 15 Apr 2023 06:12:53 +0000 Message-ID: References: <20230322024840.1629-1-abner.chang@amd.com> <20230322024840.1629-5-abner.chang@amd.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2023-04-15T06:12:50Z; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=327d8c7a-9a79-457f-bf83-3b3b59c5f1df; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR12MB3966:EE_|CY8PR12MB7433:EE_ x-ms-office365-filtering-correlation-id: e0089ebb-db66-4de3-7fce-08db3d7872dd x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: mRmLI8xtoBGDStS1yWmpnLXnenGNng5bDAV19zXba7KyiUfioVrPJdaUeBhxzCQ83TRhsbgeKJytCbC258fTQkyHOcp6AMU46jHMAPLr7Bn6usoQIEBK6MB9Hnqizw+o+47i9En1NdC57jSwPZwhu/QZQDCcGB+AiGlkPr0NYY5Lu0kHGyF7frmZ/a3F0Hf/75FrZvsKfCPi/DLueXB5B4ORHC98FpW52gkqb7p/hIe8khD0Cr5aaLOtk4f9e+qD738WV9iA3fuMLtjPguNHjcpWZA3RAFLDu7pRkHlzwl7VEy5CkzihtfxePuXFoDOH7Q+XXZqsi/SjGa3HaBc5Trom+KZ+11x/FIz9VrBvRTdolBq0C+5U7wb0hdgc3aGLI1yWklR0/VELe2IKqyTlc6MH1Gd89RQs1EED9Ls+pCq19QDX7ALLLgO6aI/RhLuGfyOu+cttHcc5lSUkS1Y1z8XERKafBv8JhBeFaXmLuJVvAxct3U4JQs5UMJHtacZaxUNVyf9PEB62e4BrMDfw8ucHyllehL43gOaRl6tZ1Cgr9yITOATVc62iHx0ZN+78jg6ucAq1m4MvTknUXOK1K+JPKJ5zuz2jn9PLeg1nivJ37yUkgOQz8xLSgXHgUqc5ZmqjFfvU7yVNx1vIeGJNdQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR12MB3966.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(376002)(346002)(39860400002)(396003)(366004)(136003)(451199021)(55016003)(9686003)(7696005)(122000001)(19627235002)(110136005)(478600001)(66476007)(4326008)(76116006)(64756008)(66556008)(66946007)(66446008)(296002)(54906003)(5660300002)(52536014)(8936002)(316002)(8676002)(38100700002)(41300700001)(53546011)(83380400001)(186003)(71200400001)(26005)(6506007)(2906002)(33656002)(30864003)(38070700005)(86362001)(559001)(579004)(44824005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MkwyaEhGMFpRR0JORFFIOXdpdldSWi9qUUphOU1XczhJM3lEbTlJQXFSRzI3?= =?utf-8?B?dW1xNEN1cVhHMk5EUG02MGVTTnNEayt0MWpVOEJrSk93UmdIWWo2SDF4LzlF?= =?utf-8?B?Wk9oU25HTm84b28yWjgvNzNsNzhyVGpvN3hRRnowbUZLTEllK0VSS1pXRnBh?= =?utf-8?B?cHZoMk5EbTBnVUdHcnJ0UzFpNjYzNUJyVzJQcDN3Mno2QzJ4Y3p5WTZwc0NV?= =?utf-8?B?eU1UNVlQeXZSeWJQRFB0WEFGanV4akFKTFhvRE8zbmFmNVVtSmdEeHkvWm5q?= =?utf-8?B?NWhqVzdDbjJ6S3RCUEszRDd3R3Z0QUc3dlZ0OWtxcTZkR2tnQ0UrOE5SejBI?= =?utf-8?B?T3IwM3c0S2ZOcjltNTEwZnNjY2RabWJnVTczNmIyNzVISVRnOHg2UGFaYWFh?= =?utf-8?B?UjV4OGRSOG9nckk5aDBwTkVaWDJFUGREZDZDSUNYSnBnTjgxMHJEdGVCVmlB?= =?utf-8?B?VlR3Y3hvcERhSFRxZlUvUjEyaEZCdzlTTVRYMmFHM0h4b1Eyd0xlNkZpSDQ1?= =?utf-8?B?T0xOU3lGZVVpMytBS2JsNE45YXFnK1p0b1pKU0FON2NyYk1JS1U0MzBzTTBq?= =?utf-8?B?Z2Y1d3NBNkVZcTBVYkhtZXJBTUFJbTlsRGxHSU95azlQQUEvVzAxd09QSUFk?= =?utf-8?B?R0pmQk81RTlkRWUvVlp1YnJPd1Z4VDZhcEVrRHBKRW9aRDJUWmZpMTI1UklK?= =?utf-8?B?UmpZUmU3SUVaRU9mQkFzNkdYSTJVb2s3SSsvOW55SWhuclVLakU4djJaL2ZM?= =?utf-8?B?ODVRZkFtVDNiSXUydTNNUml4VkhDK3dvMlRRck1Rendidi9ENTNVd1R5VjRh?= =?utf-8?B?MVVHU1pIVTdLc2pmSzVhcVBvY3poVnJqUnBJMVpEWEk4K0FMaHhqZHlmT3pZ?= =?utf-8?B?aSt0R0hVbEVxRVFUMkVjSHY5TENYQnB6RUlRWWVZU0NjOGxZQTJ2ZTFjVE9w?= =?utf-8?B?YTZsTjRDQU1BaDRDUkZBZmM2WjRscDZDNnZwczVnWUh2RHl3SDNxWkNaZnNH?= =?utf-8?B?dHIzZVJjTStyUWtuMWd0aE5adUFoMXJ0Q3NvMzJsMHJ0SmVIODZ5VUdLdDcr?= =?utf-8?B?VHFtd2h3ODVFWFVnSlp3Mi9abnpwUzBPY3hsSGNRUkQwN0FkWi9va1l6bzJz?= =?utf-8?B?WEFoWTYxU01YbTUwQldTL1ZnbzlZdWpBem5RVHRnTDdEMGpjT0VjOFNsbVJv?= =?utf-8?B?UEdHMXZLRTdlblVVcUcwQytYdzZIL2wvRWpFNW9Ua2FwaWowZWY1QXFYdE9J?= =?utf-8?B?bmV3K09ETVRpNFJSVy90UVl6cnJiRmw0WlR6SjZYWXRpalp0ODMwNWNuRHhm?= =?utf-8?B?MDgyeUFCOCtQSXd0UlBzOHdISExnTGpRMmRnWk5oRWRFNnN2YnMxd0tUQTlJ?= =?utf-8?B?OW5TUUZ6VDdpUUZjc0hFcVhrSHdjZTJncGljV0VaTmF5VUV5cU9jcmVRRzcx?= =?utf-8?B?N29qeC9vUWQzZXZ5RWNRNllLMDRLdEFsOVVhTjBRL1BGWE9sSG40ODhKb01j?= =?utf-8?B?VXV5OVVoKzI4RXpyQy9SUDlHUVNML1FnUXpPQlRyOCtTRWFtbXJUYUdGOHNh?= =?utf-8?B?QWtYZ3N3WmFTa0NNbkVVZGEyWktYdmVVbmFtdW9VN1BlVVZSUHVTV3Nmd1h4?= =?utf-8?B?MXg1aGlIdjhnL0hNV1k1cGhNU0JSWHpKQXdKalI0Z3RtRGd0NU9kcW4wRnRD?= =?utf-8?B?N0dlaGRjbmw1NThEbjAyU3RodGtoYkorT2ZnVjUwc0JneldhVEI3S28zVG1N?= =?utf-8?B?aVFSc2R1VjdoMU9JM2oyTUZmZElhL0VKWjRFeGRKdE4vZzBJaEdLV1A3V2xE?= =?utf-8?B?VXlmRDNVdkExRE1YVUFHSGdQb3E4TkxScnJYVS9QM1dWSGVINzBVYXNReisw?= =?utf-8?B?WStZTVdsZzlBcWtaSjFUelpJbCtYMysvSy9TanI4b1pWWjJvNDByUTloTDFC?= =?utf-8?B?c2l6RWxDWWFLR3dtNFpMUlYzS1JKcGNKWmtrS3BKZGhWZlkybElObVE5aU9k?= =?utf-8?B?QzQ5RjVTU0NUZ2loMlRTYkxFMFMwL1Z4R2NVcXUyUnNVdGtnaTk5YUlUMTJE?= =?utf-8?B?S3JLamZCaCsrZTJKSTNVdFMycWc5RW1Ec3JlVWUzV1MwQTlXdnBxWHlrOFBv?= =?utf-8?Q?Bbjc=3D?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3966.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e0089ebb-db66-4de3-7fce-08db3d7872dd X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Apr 2023 06:12:53.5352 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: H1g5hw8lqYWnEnqrH6RNSsNQks9saTlMJmgtfW8b4t5EGglh8oXMxdDX+xlOoouuOu3F/gFKt4UkoHMFbgQLHw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7433 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 W0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEdlbmVyYWxdDQoNCg0KDQo+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+IEZyb206IFRpbmggTmd1eWVuIDx0aW5obmd1eWVuQGFtcGVyZW1haWwu b25taWNyb3NvZnQuY29tPg0KPiBTZW50OiBGcmlkYXksIE1hcmNoIDI0LCAyMDIzIDI6MzEgQU0N Cj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBDaGFuZywgQWJuZXIgPEFibmVyLkNoYW5nQGFt ZC5jb20+DQo+IENjOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBJc2Fh YyBPcmFtDQo+IDxpc2FhYy53Lm9yYW1AaW50ZWwuY29tPjsgTmF0ZSBEZVNpbW9uZQ0KPiA8bmF0 aGFuaWVsLmwuZGVzaW1vbmVAaW50ZWwuY29tPjsgTmlja2xlIFdhbmcgPG5pY2tsZXdAbnZpZGlh LmNvbT47DQo+IElnb3IgS3VsY2h5dHNreXkgPGlnb3JrQGFtaS5jb20+OyBBdHRhciwgQWJkdWxM YXRlZWYgKEFiZHVsIExhdGVlZikNCj4gPEFiZHVsTGF0ZWVmLkF0dGFyQGFtZC5jb20+DQo+IFN1 YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIHY0IDUvOV0gTWFuYWdlYWJpbGl0eVBrZzog QWRkDQo+IE1hbmFnZWFiaWxpdHlUcmFuc3BvcnRIZWxwZXJMaWINCj4gDQo+IENhdXRpb246IFRo aXMgbWVzc2FnZSBvcmlnaW5hdGVkIGZyb20gYW4gRXh0ZXJuYWwgU291cmNlLiBVc2UgcHJvcGVy DQo+IGNhdXRpb24gd2hlbiBvcGVuaW5nIGF0dGFjaG1lbnRzLCBjbGlja2luZyBsaW5rcywgb3Ig cmVzcG9uZGluZy4NCj4gDQo+IA0KPiBIaSBBYm5lciwNCj4gDQo+IE9uIDMvMjIvMjAyMyA5OjQ4 IEFNLCBDaGFuZywgQWJuZXIgdmlhIGdyb3Vwcy5pbyB3cm90ZToNCj4gPiBGcm9tOiBBYm5lciBD aGFuZyA8YWJuZXIuY2hhbmdAYW1kLmNvbT4NCj4gPg0KPiA+IFRoZSBoZWxwZXIgZnVuY3Rpb25z IGxpYnJhcnkgZmFjaWxpdGF0ZXMgcmVkdWNpbmcgZHVwbGljYXRlZCBjb2RlIGluDQo+ID4gdGhl IG1hbmFnZWFiaWxpdHkgdHJhbnNwb3J0IGxpYnJhcnkgaW5zdGFuY2VzLg0KPiA+DQo+ID4gU2ln bmVkLW9mZi1ieTogQWJuZXIgQ2hhbmcgPGFibmVyLmNoYW5nQGFtZC5jb20+DQo+ID4gQ2M6IExp bWluZyBHYW8gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4NCj4gPiBDYzogSXNhYWMgT3JhbSA8 aXNhYWMudy5vcmFtQGludGVsLmNvbT4NCj4gPiBDYzogTmF0ZSBEZVNpbW9uZSA8bmF0aGFuaWVs LmwuZGVzaW1vbmVAaW50ZWwuY29tPg0KPiA+IENjOiBOaWNrbGUgV2FuZyA8bmlja2xld0Budmlk aWEuY29tPg0KPiA+IENjOiBJZ29yIEt1bGNoeXRza3l5IDxpZ29ya0BhbWkuY29tPg0KPiA+IENj OiBBYmR1bCBMYXRlZWYgQXR0YXIgPGFiZGF0dGFyQGFtZC5jb20+DQo+ID4gLS0tDQo+ID4gICAu Li4vTWFuYWdlYWJpbGl0eVBrZy9NYW5hZ2VhYmlsaXR5UGtnLmRlYyAgICAgfCAgMjQgKy0NCj4g PiAgIC4uLi9JbmNsdWRlL0RzYy9NYW5hZ2VhYmlsaXR5LmRzYyAgICAgICAgICAgICB8ICAgMiAr DQo+ID4gICAuLi4vQmFzZU1hbmFnZWFiaWxpdHlUcmFuc3BvcnRIZWxwZXIuaW5mICAgICAgfCAg NDEgKysrDQo+ID4gICAuLi4vTGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0SGVscGVyTGli LmggfCAgOTMgKysrKysrKw0KPiA+ICAgLi4uL0Jhc2VNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0SGVs cGVyLmMgICAgICAgIHwgMjYxICsrKysrKysrKysrKysrKysrKw0KPiA+ICAgLi4uL0Jhc2VNYW5h Z2VhYmlsaXR5VHJhbnNwb3J0SGVscGVyLnVuaSAgICAgIHwgIDEzICsNCj4gPiAgIDYgZmlsZXMg Y2hhbmdlZCwgNDMzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkNCj4gPiAgIGNyZWF0ZSBt b2RlIDEwMDY0NA0KPiBGZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0xpYnJhcnkvQmFzZU1hbmFn ZWFiaWxpdHlUcmFuc3BvcnRIZWxwZXJMaWIvQg0KPiBhc2VNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0 SGVscGVyLmluZg0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IEZlYXR1cmVzL01hbmFnZWFi aWxpdHlQa2cvSW5jbHVkZS9MaWJyYXJ5L01hbmFnZWFiaWxpdHlUcmFuc3BvcnRIZWxwZXJMaQ0K PiBiLmgNCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBGZWF0dXJlcy9NYW5hZ2VhYmlsaXR5 UGtnL0xpYnJhcnkvQmFzZU1hbmFnZWFiaWxpdHlUcmFuc3BvcnRIZWxwZXJMaWIvQg0KPiBhc2VN YW5hZ2VhYmlsaXR5VHJhbnNwb3J0SGVscGVyLmMNCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NA0K PiA+IEZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTGlicmFyeS9CYXNlTWFuYWdlYWJpbGl0eVRy YW5zcG9ydEhlbHBlckxpYi8NCj4gPiBCYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEhlbHBlci51 bmkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL01hbmFn ZWFiaWxpdHlQa2cuZGVjDQo+ID4gYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL01hbmFnZWFi aWxpdHlQa2cuZGVjDQo+ID4gaW5kZXggOTJiYTQ1MzhjMC4uZWJiYjA0ZGMwZSAxMDA2NDQNCj4g PiAtLS0gYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL01hbmFnZWFiaWxpdHlQa2cuZGVjDQo+ ID4gKysrIGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9NYW5hZ2VhYmlsaXR5UGtnLmRlYw0K PiA+IEBAIC0yMiw1ICsyMiwyNyBAQA0KPiA+ICAgICAjICAgTWFuYWdlYWJpbGl0eSBUcmFuc3Bv cnQgTGlicmFyeSBkZWZpbml0aW9ucw0KPiA+DQo+ID4gTWFuYWdlYWJpbGl0eVRyYW5zcG9ydExp YnxJbmNsdWRlL0xpYnJhcnkvTWFuYWdlYWJpbGl0eVRyYW5zcG9ydExpYi5oDQo+ID4NCj4gPiAr ICAjIyAgQGxpYnJhcnljbGFzcyBNYW5hZ2VhYmlsaXR5IFRyYW5zcG9ydCBIZWxwZXIgTGlicmFy eQ0KPiA+ICsgICMgICBQcm92aWRlIHRoZSBoZWxwIGZ1bmN0aW9ucyB0byB1c2UgTWFuYWdlYWJp bGl0eVRyYW5zcG9ydExpYg0KPiA+ICsNCj4gPiArIE1hbmFnZWFiaWxpdHlUcmFuc3BvcnRIZWxw ZXJMaWJ8SW5jbHVkZS9MaWJyYXJ5L01hbmFnZWFiaWxpdHlUcmFuc3BvDQo+ID4gKyBydEhlbHBl ckxpYi5oDQo+ID4gKw0KPiA+ICAgW0d1aWRzXQ0KPiA+IC0gIGdNYW5hZ2VhYmlsaXR5UGtnVG9r ZW5TcGFjZUd1aWQgPSB7IDB4QkRFRkZGNDgsIDB4MUMzMSwgMHg0OUNELCB7DQo+ID4gMHhBNywg MHg2RCwgMHg5MiwgMHg5RSwgMHg2MCwgMHhEQiwgMHhCOSwgMHhGOCB9IH0NCj4gPiArICBnTWFu YWdlYWJpbGl0eVBrZ1Rva2VuU3BhY2VHdWlkICAgPSB7IDB4QkRFRkZGNDgsIDB4MUMzMSwgMHg0 OUNELA0KPiB7IDB4QTcsIDB4NkQsIDB4OTIsIDB4OUUsIDB4NjAsIDB4REIsIDB4QjksIDB4Rjgg fSB9DQo+ID4gKw0KPiA+ICsgICMgTWFuYWdlYWJpbGl0eSBUcmFuc3BvcnQgSW50ZXJmYWNlIHR5 cGUgICMgICMgTWFuYWdlYWJpbGl0eQ0KPiA+ICsgVHJhbnNwb3J0IEtDUw0KPiA+ICsgIGdNYW5h Z2VhYmlsaXR5VHJhbnNwb3J0S2NzR3VpZCAgICA9IHsgMHg1QTZFNjRFOSwgMHhGRDQ3LCAweDQw ODYsDQo+IHsgMHhBQSwgMHhCMCwgMHg3QSwgMHg1RiwgMHhENywgMHg2QiwgMHgwMiwgMHgyRSB9 IH0NCj4gPiArICAjIE1hbmFnZWFiaWxpdHkgVHJhbnNwb3J0IEkyQw0KPiA+ICsgIGdNYW5hZ2Vh YmlsaXR5VHJhbnNwb3J0STJDR3VpZCAgICA9IHsgMHg1QjE3NDY1OCwgMHg4MjYzLCAweDRDQjgs DQo+IHsgMHhBMCwgMHgwRiwgMHhENiwgMHg4MiwgMHhFNiwgMHhCQywgMHg3NCwgMHg5MyB9IH0N Cj4gPiArICAjIE1hbmFnZWFiaWxpdHkgVHJhbnNwb3J0IFBDSSBWRE0NCj4gPiArICBnTWFuYWdl YWJpbGl0eVRyYW5zcG9ydFBjaVZkbUd1aWQgPSB7IDB4Mzg4MDIxQTcsIDB4RkI1OSwgMHg0ODEx LCB7DQo+ID4gKyAweDlELCAweEE3LCAweEQ1LCAweDYzLCAweDdELCAweDA0LCAweEE3LCAweDJG IH0gfQ0KPiA+ICsNCj4gPiArICAjIE1hbmFnZWFiaWxpdHkgUHJvdG9jb2wgU3BlY2lmaWNhdGlv biAgIyAgIyBNYW5hZ2VhYmlsaXR5IFByb3RvY29sDQo+ID4gKyBJUE1JDQo+ID4gKyAgZ01hbmFn ZWFiaWxpdHlQcm90b2NvbElwbWlHdWlkICAgID0geyAweDM2QUNBNDdDLCAweENDODAsIDB4NDcz QiwNCj4geyAweEFCLCAweEVDLCAweEYzLCAweDk4LCAweEZGLCAweDg3LCAweDc0LCAweDVCIH0g fQ0KPiA+ICsgICMgTWFuYWdlYWJpbGl0eSBQcm90b2NvbCBNQ1RQDQo+ID4gKyAgZ01hbmFnZWFi aWxpdHlQcm90b2NvbE1jdHBHdWlkICAgID0geyAweDc2RkVEOEYxLCAweDBCRTUsIDB4NDI2OSwN Cj4geyAweEEzLCAweDFBLCAweDM4LCAweDBGLCAweDU0LCAweEYxLCAweEExLCAweDhBIH0gfQ0K PiA+ICsgICMgTWFuYWdlYWJpbGl0eSBQcm90b2NvbCBQTERNDQo+ID4gKyAgZ01hbmFnZWFiaWxp dHlQcm90b2NvbFBsZG1HdWlkICAgID0geyAweDM5NTgwOTBELCAweDY5REQsIDB4NDg2OCwNCj4g eyAweDlDLCAweDQxLCAweEM5LCAweEFDLCAweDMxLCAweEI1LCAweDI1LCAweEM1IH0gfQ0KPiA+ IGRpZmYgLS1naXQgYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0luY2x1ZGUvRHNjL01hbmFn ZWFiaWxpdHkuZHNjDQo+ID4gYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0luY2x1ZGUvRHNj L01hbmFnZWFiaWxpdHkuZHNjDQo+ID4gaW5kZXggMmNiNjNjMWNhNi4uOTk0YzkzZjE3YyAxMDA2 NDQNCj4gPiAtLS0gYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0luY2x1ZGUvRHNjL01hbmFn ZWFiaWxpdHkuZHNjDQo+ID4gKysrIGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9JbmNsdWRl L0RzYy9NYW5hZ2VhYmlsaXR5LmRzYw0KPiA+IEBAIC01LDYgKzUsOCBAQA0KPiA+ICAgIyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICAgIw0KPiA+ICAg IyMNCj4gPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+ICsNCj4gPg0KPiArTWFuYWdlYWJpbGl0eVRy YW5zcG9ydEhlbHBlckxpYnxNYW5hZ2VhYmlsaXR5UGtnL0xpYnJhcnkvQmFzZU1hbmFnZWENCj4g Yg0KPiA+ICtpbGl0eVRyYW5zcG9ydEhlbHBlckxpYi9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9y dEhlbHBlci5pbmYNCj4gPg0KPiA+ICAgW0xpYnJhcnlDbGFzc2VzLkFSTSwgTGlicmFyeUNsYXNz ZXMuQUFSQ0g2NF0NCj4gPiAgICAgIw0KPiA+IGRpZmYgLS1naXQNCj4gPiBhL0ZlYXR1cmVzL01h bmFnZWFiaWxpdHlQa2cvTGlicmFyeS9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEhlbHBlckxp DQo+ID4gYi9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEhlbHBlci5pbmYNCj4gPiBiL0ZlYXR1 cmVzL01hbmFnZWFiaWxpdHlQa2cvTGlicmFyeS9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEhl bHBlckxpDQo+ID4gYi9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEhlbHBlci5pbmYNCj4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjk1YzMzNjJkZGINCj4g PiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+IGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9M aWJyYXJ5L0Jhc2VNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0SGVscA0KPiA+ICsrKyBlckxpYi9CYXNl TWFuYWdlYWJpbGl0eVRyYW5zcG9ydEhlbHBlci5pbmYNCj4gPiBAQCAtMCwwICsxLDQxIEBADQo+ ID4gKyMjIEBmaWxlDQo+ID4gKyMgTnVsbCBpbnN0YW5jZSBvZiBNYW5hZ2VhYmlsaXR5IFRyYW5z cG9ydCBIZWxwZXIgTGlicmFyeSAjICMNCj4gPiArQ29weXJpZ2h0IChDKSAyMDIzIEFkdmFuY2Vk IE1pY3JvIERldmljZXMsIEluYy4gQWxsIHJpZ2h0cw0KPiA+ICtyZXNlcnZlZC48QlI+ICMgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQgIyAjIw0KPiA+ICsNCj4g PiArW0RlZmluZXNdDQo+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgw MDAxMDAxQg0KPiA+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IEJhc2VNYW5h Z2VhYmlsaXR5VHJhbnNwb3J0SGVscGVyDQo+ID4gKyAgTU9EVUxFX1VOSV9GSUxFICAgICAgICAg ICAgICAgID0gQmFzZU1hbmFnZWFiaWxpdHlUcmFuc3BvcnRIZWxwZXIudW5pDQo+ID4gKyAgRklM RV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gNTJGMkRFMTEtQThGQy00QTA2LUI4QzYtMTBE Q0Y0QTczOTdDDQo+ID4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gQkFTRQ0K PiA+ICsgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEuMA0KPiA+ICsgIExJQlJB UllfQ0xBU1MgICAgICAgICAgICAgICAgICA9IE1hbmFnZWFiaWxpdHlUcmFuc3BvcnRIZWxwZXJM aWINCj4gPiArDQo+ID4gKyMNCj4gPiArIyAgVkFMSURfQVJDSElURUNUVVJFUyAgICAgICAgICAg PSBJQTMyIFg2NCBBUk0gQUFSQ0g2NA0KPiA+ICsjDQo+ID4gKw0KPiA+ICtbU291cmNlc10NCj4g PiArICBCYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEhlbHBlci5jDQo+ID4gKw0KPiA+ICtbTGli cmFyeUNsYXNzZXNdDQo+ID4gKyAgQmFzZU1lbW9yeUxpYg0KPiA+ICsgIERlYnVnTGliDQo+ID4g Kw0KPiA+ICtbUGFja2FnZXNdDQo+ID4gKyAgTWFuYWdlYWJpbGl0eVBrZy9NYW5hZ2VhYmlsaXR5 UGtnLmRlYw0KPiA+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4gKw0KPiA+ICtbR3VpZHNdDQo+ ID4gKyAgZ01hbmFnZWFiaWxpdHlUcmFuc3BvcnRLY3NHdWlkDQo+ID4gKyAgZ01hbmFnZWFiaWxp dHlUcmFuc3BvcnRJMkNHdWlkDQo+ID4gKyAgZ01hbmFnZWFiaWxpdHlUcmFuc3BvcnRQY2lWZG1H dWlkDQo+ID4gKyAgZ01hbmFnZWFiaWxpdHlUcmFuc3BvcnRNY3RwR3VpZA0KPiANCj4gUGxlYXNl IGNoZWNrIGhlcmUgc2luY2UgSSBhbSB1bmFibGUgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiBvZg0K PiBnTWFuYWdlYWJpbGl0eVRyYW5zcG9ydE1jdHBHdWlkLg0KVGhpcyBpcyBkZWZpbmVkIGluIHRo ZSBkZWMgZmlsZQ0KDQo+IA0KPiANCj4gPiArICBnTWFuYWdlYWJpbGl0eVByb3RvY29sSXBtaUd1 aWQNCj4gPiArICBnTWFuYWdlYWJpbGl0eVByb3RvY29sTWN0cEd1aWQNCj4gPiArICBnTWFuYWdl YWJpbGl0eVByb3RvY29sUGxkbUd1aWQNCj4gPiArDQo+ID4gZGlmZiAtLWdpdA0KPiA+IGEvRmVh dHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9JbmNsdWRlL0xpYnJhcnkvTWFuYWdlYWJpbGl0eVRyYW5z cG9ydEhlbHANCj4gPiBlckxpYi5oDQo+ID4gYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0lu Y2x1ZGUvTGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0SGVscA0KPiA+IGVyTGliLmgNCj4g PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjcxOGFjMzRhMWYN Cj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9J bmNsdWRlL0xpYnJhcnkvTWFuYWdlYWJpbGl0eVRyYW5zcG9ydA0KPiA+ICsrKyBIZWxwZXJMaWIu aA0KPiA+IEBAIC0wLDAgKzEsOTMgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKw0KPiA+ICsgIFRo aXMgZmlsZSBkZWZpbmVzIHRoZSBtYW5hZ2VhYmlsaXR5IHRyYW5zcG9ydCBpbnRlcmZhY2UgbGli cmFyeSBhbmQNCj4gZnVuY3Rpb25zLg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKEMpIDIwMjMg QWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiBBbGwgcmlnaHRzDQo+ID4gK3Jlc2VydmVkLjxC Uj4NCj4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCAq Ki8NCj4gPiArDQo+ID4gKyNpZm5kZWYgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfSEVMUEVSX0xJ Ql9IXw0KPiA+ICsjZGVmaW5lIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0hFTFBFUl9MSUJfSF8N Cj4gPiArDQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L01hbmFnZWFiaWxpdHlUcmFuc3BvcnRMaWIu aD4NCj4gPiArDQo+ID4gK3R5cGVkZWYgc3RydWN0IF9NQU5BR0VBQklMSVRZX1BST1RPQ09MX05B TUUNCj4gPiArTUFOQUdFQUJJTElUWV9QUk9UT0NPTF9OQU1FOw0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAgSGVscGVyIGZ1bmN0aW9uIHJldHVybnMgdGhlIGh1bWFuIHJlYWRhYmxlIG5hbWUgb2Yg TWFuYWdlYWJpbGl0eQ0KPiBzcGVjaWZpY2F0aW9uLg0KPiA+ICsNCj4gPiArICBAcGFyYW1bb3V0 XSAgU3BlY2lmaWNhdGlvbkd1aWQgICAgICAgICBUaGUgTWFuYWdlYWJpbGl0eSBzcGVjaWZpY2F0 aW9uDQo+IEdVSUQNCj4gPiArDQo+ID4gKyAgQHJldHZhbCAgICAgICFOVUxMICBIdW1hbiByZWFk YWJsZSBuYW1lIGlzIHJldHVybmVkOw0KPiA+ICsgIEByZXR2YWwgICAgICAgTlVMTCAgTm8gc3Ry aW5nIGZvdW5kLCB0aGUgZ2l2ZW4gTWFuYWdlYWJpbGl0eSBzcGVjaWZpY2F0aW9uDQo+IGlzDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICBub3Qgc3VwcG9ydGVkLg0KPiA+ICsqKi8NCj4gPiAr Q0hBUjE2ICoNCj4gPiArSGVscGVyTWFuYWdlYWJpbGl0eVNwZWNOYW1lICgNCj4gPiArICBJTiBF RklfR1VJRCAgKlNwZWNpZmljYXRpb25HdWlkDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgIEhlbHBlciBmdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgTWFuYWdlYWJpbGl0eSBzcGVj aWZpY2F0aW9uIGlzDQo+ID4gK3N1cHBvcnRlZA0KPiA+ICsgIGJ5IHRyYW5zcG9ydCBpbnRlcmZh Y2Ugb3Igbm90Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBUcmFuc3BvcnRHdWlkICAgICAg ICAgICAgICAgICAgICAgICAgIEdVSUQgb2YgdGhlIHRyYW5zcG9ydCBpbnRlcmZhY2UuDQo+ID4g KyAgQHBhcmFtW2luXSAgU3VwcG9ydGVkTWFuYWdlYWJpbGl0eVByb3RvY29sQXJyYXkgICBUaGUg TWFuYWdlYWJpbGl0eQ0KPiBwcm90b2NvbHMgc3VwcG9ydGVkDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSB0aGUgdHJhbnNwb3J0IGlu dGVyZmFjZS4NCj4gPiArICBAcGFyYW1baW5dICBOdW1iZXJPZlN1cHBvcnRlZFByb3RvY29sSW5B cnJheSAgICAgIE51bWJlciBvZg0KPiBwcm90b2NvbHMgaW4gdGhlIGFycmF5Lg0KPiA+ICsgIEBw YXJhbVtpbl0gIE1hbmFnZWFiaWxpdHlQcm90b2NvbFRvQ2hlY2sgICAgICAgICAgVGhlIE1hbmFn ZWFiaWxpdHkNCj4gc3BlY2lmaWNhdGlvbiB0byBjaGVjay4NCj4gPiArDQo+ID4gKyAgQHJldHZh bCAgICAgIEVGSV9TVUNDRVNTICAgICAgICAgICAgVG9rZW4gaXMgY3JlYXRlZCBzdWNjZXNzZnVs bHkuDQo+ID4gKyAgQHJldHZhbCAgICAgIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgRWl0aGVyDQo+ IE51bWJlck9mU3VwcG9ydGVkUHJvdG9jb2xJbkFycmF5ID0gMCBvcg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1cHBvcnRlZE1hbmFnZWFiaWxpdHlQcm90b2Nv bEFycmF5ID0gTlVMTC4NCj4gPiArICBAcmV0dmFsICAgICAgRUZJX1VOU1VQUE9SVEVEICAgICAg ICBPdXQgb2YgcmVzb3VyY2UgdG8gY3JlYXRlIGEgbmV3DQo+IHRyYW5zcG9ydCBzZXNzaW9uLg0K PiA+ICsgICAgICAgICAgICAgICBPdGhlcndpc2UgICAgICAgICAgICAgIE90aGVyIGVycm9ycy4N Cj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArSGVscGVyTWFuYWdlYWJpbGl0eUNoZWNr U3VwcG9ydGVkU3BlYyAoDQo+ID4gKyAgSU4gIEVGSV9HVUlEICAqVHJhbnNwb3J0R3VpZCwNCj4g PiArICBJTiAgRUZJX0dVSUQgICoqU3VwcG9ydGVkTWFuYWdlYWJpbGl0eVByb3RvY29sQXJyYXks DQo+ID4gKyAgSU4gIFVJTlQ4ICAgICBOdW1iZXJPZlN1cHBvcnRlZFByb3RvY29sSW5BcnJheSwN Cj4gPiArICBJTiAgRUZJX0dVSUQgICpNYW5hZ2VhYmlsaXR5UHJvdG9jb2xUb0NoZWNrDQo+ID4g KyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEhlbHBlciBmdW5jdGlvbiB0byBhY3F1aXJl IHRoZSBNYW5hZ2VhYmlsaXR5IHRyYW5zcG9ydCB0b2tlbi4NCj4gPiArDQo+ID4gKyAgQHBhcmFt W2luXSAgTWFuYWdlYWJpbGl0eVByb3RvY29sU3BlYyAgIFRoZSBNYW5hZ2VhYmlsaXR5IHByb3Rv Y29sDQo+IHNwZWNpZmljYXRpb24uDQo+ID4gKyAgQHBhcmFtW291dF0gVHJhbnNwb3J0VG9rZW4g ICAgICAgICAgICAgIFBvaW50ZXIgdG8gcmVjZWl2ZSBNYW5hZ2VhYmlsaXR5DQo+IHRyYW5zcG9y dA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi4N Cj4gPiArDQo+ID4gKyAgQHJldHZhbCAgICAgIEVGSV9TVUNDRVNTICAgICAgICAgICAgVG9rZW4g aXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJldHZhbCAgICAgIEVGSV9PVVRfT0Zf UkVTT1VSQ0VTICAgT3V0IG9mIHJlc291cmNlIHRvIGNyZWF0ZSBhIG5ldw0KPiB0cmFuc3BvcnQg c2Vzc2lvbi4NCj4gPiArICBAcmV0dmFsICAgICAgRUZJX1VOU1VQUE9SVEVEICAgICAgICBUb2tl biBpcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0dmFsICAgICAgRUZJX0RFVklD RV9FUlJPUiAgICAgICBUaGUgdHJhbnNwb3J0IGludGVyZmFjZSBoYXMgcHJvYmxlbXMNCj4gPiAr ICBAcmV0dmFsICAgICAgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBJTnB1dCBwYXJhbWV0ZXIgaXMg bm90IHZhbGlkLg0KPiA+ICsgICAgICAgICAgICAgICBPdGhlcndpc2UgICAgICAgICAgICAgIE90 aGVyIGVycm9ycy4NCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArSGVscGVyQWNxdWly ZU1hbmFnZWFiaWxpdHlUcmFuc3BvcnQgKA0KPiA+ICsgIElOICBFRklfR1VJRCAgICAgICAgICAg ICAgICAgICAgICAgKk1hbmFnZWFiaWxpdHlQcm90b2NvbFNwZWMsDQo+ID4gKyAgT1VUIE1BTkFH RUFCSUxJVFlfVFJBTlNQT1JUX1RPS0VOICAqKlRyYW5zcG9ydFRva2VuDQo+ID4gKyAgKTsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgIEhlbHBlciBmdW5jdGlvbiB0byBpbml0aWFsIHRoZSB0cmFu c3BvcnQgaW50ZXJmYWNlLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBUcmFuc3BvcnRUb2tl biAgICAgICAgICAgICAgVHJhbnNwb3J0IHRva2VuLg0KPiA+ICsgIEBwYXJhbVtpbl0gIEhhcmR3 YXJlSW5mbyAgICAgICAgICAgICAgICBPcHRpb25hbCBoYXJkd2FyZSBpbmZvcm1hdGlvbiBvZg0K PiB0cmFuc3BvcnQgaW50ZXJmYWNlLg0KPiA+ICsgIEBwYXJhbVtvdXRdIFRyYW5zcG9ydEFkZGl0 aW9uYWxTdGF0dXMgICBUcmFuc3BvcnQgYWRkaXRpb25hbCBzdGF0dXMuDQo+ID4gKw0KPiA+ICsg IEByZXR2YWwgICAgICBFRklfU1VDQ0VTUyAgICAgICAgICAgIFRyYW5zcG9ydCBpbnRlcmZhY2Ug aXMgaW5pdGlhdGVkIHN1Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0dmFsICAgICAgRUZJX0RFVklD RV9FUlJPUiAgICAgICBUaGUgdHJhbnNwb3J0IGludGVyZmFjZSBoYXMgcHJvYmxlbXMNCj4gPiAr ICBAcmV0dmFsICAgICAgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBJTnB1dCBwYXJhbWV0ZXIgaXMg bm90IHZhbGlkLg0KPiA+ICsgICAgICAgICAgICAgICBPdGhlcndpc2UgICAgICAgICAgICAgIE90 aGVyIGVycm9ycy4NCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArSGVscGVySW5pdE1h bmFnZWFiaWxpdHlUcmFuc3BvcnQgKA0KPiA+ICsgIElOICBNQU5BR0VBQklMSVRZX1RSQU5TUE9S VF9UT0tFTiAgICAgICAgICAgICAgICAgKlRyYW5zcG9ydFRva2VuLA0KPiA+ICsgIElOICBNQU5B R0VBQklMSVRZX1RSQU5TUE9SVF9IQVJEV0FSRV9JTkZPUk1BVElPTg0KPiBIYXJkd2FyZUluZm8g T1BUSU9OQUwsDQo+ID4gKyAgT1VUIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0FERElUSU9OQUxf U1RBVFVTDQo+ICpUcmFuc3BvcnRBZGRpdGlvbmFsU3RhdHVzIE9QVElPTkFMDQo+ID4gKyAgKTsN Cj4gPiArDQo+ID4gKyNlbmRpZg0KPiA+IGRpZmYgLS1naXQNCj4gPiBhL0ZlYXR1cmVzL01hbmFn ZWFiaWxpdHlQa2cvTGlicmFyeS9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEhlbHBlckxpDQo+ ID4gYi9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEhlbHBlci5jDQo+ID4gYi9GZWF0dXJlcy9N YW5hZ2VhYmlsaXR5UGtnL0xpYnJhcnkvQmFzZU1hbmFnZWFiaWxpdHlUcmFuc3BvcnRIZWxwZXJM aQ0KPiA+IGIvQmFzZU1hbmFnZWFiaWxpdHlUcmFuc3BvcnRIZWxwZXIuYw0KPiA+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uODFkYTIwOTc2NA0KPiA+IC0tLSAv ZGV2L251bGwNCj4gPiArKysNCj4gYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0xpYnJhcnkv QmFzZU1hbmFnZWFiaWxpdHlUcmFuc3BvcnRIZWxwDQo+ID4gKysrIGVyTGliL0Jhc2VNYW5hZ2Vh YmlsaXR5VHJhbnNwb3J0SGVscGVyLmMNCj4gPiBAQCAtMCwwICsxLDI2MSBAQA0KPiA+ICsvKiog QGZpbGUNCj4gPiArICBOdWxsIGluc3RhbmNlIG9mIE1hbmFnZWFiaWxpdHkgVHJhbnNwb3J0IEhl bHBlciBMaWJyYXJ5DQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoQykgMjAyMyBBZHZhbmNlZCBN aWNybyBEZXZpY2VzLCBJbmMuIEFsbCByaWdodHMNCj4gPiArcmVzZXJ2ZWQuPEJSPg0KPiA+ICsg IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50ICoqLw0KPiA+ICsN Cj4gPiArI2luY2x1ZGUgPFVlZmkuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9y eUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiA+ICsjaW5jbHVk ZSA8TGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0SGVscGVyTGliLmg+DQo+ID4gKw0KPiA+ ICsvLw0KPiA+ICsvLyBCYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEhlbHBlciBpcyB1c2VkIGJ5 IFBFSSwgRFhFIGFuZCBTTU0uDQo+ID4gKy8vIE1ha2Ugc3VyZSB0aGUgZ2xvYmFsIHZhcmlhYmxl cyBhZGRlZCBoZXJlIHNob3VsZCBiZSB1bmNoYW5nYWJsZS4NCj4gPiArLy8NCj4gPiArTUFOQUdF QUJJTElUWV9TUEVDSUZJQ0FUSU9OX05BTUUgIE1hbmFnZWFiaWxpdHlTcGVjTmFtZVRhYmxlW10N Cj4gPSB7DQo+ID4gKyAgeyAmZ01hbmFnZWFiaWxpdHlUcmFuc3BvcnRLY3NHdWlkLCAgICBMIktD UyIgICAgIH0sDQo+ID4gKyAgeyAmZ01hbmFnZWFiaWxpdHlUcmFuc3BvcnRJMkNHdWlkLCAgICBM IkkyQyIgICAgIH0sDQo+IA0KPiBTaG91bGQgd2UgdXNlIFNNQlVTX0kyQyBpbnN0ZWFkIG9mIEky Qz8gV2hlbiB3ZSB1c2UNCj4gU21idXNMaWIvU21idXNIY1Byb3RvY29sIGZvciBJUE1JIFNTSUYg YW5kIG5hbWUgaXQgSTJDLCBpdCBjYXVzZXMgYSBsb3Qgb2YNCj4gY29uZnVzaW9uLg0KPiANCj4g VGhlIHRlcm0gU01CdXMgaXMgdXNlZCBpbiB0aGUgSVBNSSBzcGVjaWZpY2F0aW9uLCBhbmQgdGhl IHRlcm0gU01CdXMvSTJjIGlzDQo+IHVzZWQgaW4gdGhlIE1DVFAgc3BlY2lmaWNhdGlvbi4NClll cywgU01CVVNfSTJDIGxvb2tzIHRvIG1lIGdvb2QuIEkgd2lsbCBzZW5kIHRoZSBwYXRjaCB0byB1 cGRhdGUgdGhpcy4gQ3VycmVudGx5IHRoZXJlIGlzIG5vIGltcGxlbWVudGF0aW9uIGZvciBJMkMg eWV0Lg0KVGhhbmtzDQoNCkFibmVyDQo+IA0KPiAtIFRpbmgNCj4gDQo+ID4gKyAgeyAmZ01hbmFn ZWFiaWxpdHlUcmFuc3BvcnRQY2lWZG1HdWlkLCBMIlBDSSBWRE0iIH0sDQo+ID4gKyAgeyAmZ01h bmFnZWFiaWxpdHlUcmFuc3BvcnRNY3RwR3VpZCwgICBMIk1DVFAiICAgIH0sDQo+ID4gKyAgeyAm Z01hbmFnZWFiaWxpdHlQcm90b2NvbElwbWlHdWlkLCAgICBMIklQTUkiICAgIH0sDQo+ID4gKyAg eyAmZ01hbmFnZWFiaWxpdHlQcm90b2NvbE1jdHBHdWlkLCAgICBMIk1DVFAiICAgIH0sDQo+ID4g KyAgeyAmZ01hbmFnZWFiaWxpdHlQcm90b2NvbFBsZG1HdWlkLCAgICBMIlBMRE0iICAgIH0NCj4g PiArfTsNCj4gPiArDQo+ID4gK1VJTlQxNiAgbU1hbmFnZWFiaWxpdHlTcGVjTnVtID0gc2l6ZW9m DQo+IChNYW5hZ2VhYmlsaXR5U3BlY05hbWVUYWJsZSkvDQo+ID4gK3NpemVvZiAoTUFOQUdFQUJJ TElUWV9TUEVDSUZJQ0FUSU9OX05BTUUpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgSGVscGVy IGZ1bmN0aW9uIHJldHVybnMgdGhlIGh1bWFuIHJlYWRhYmxlIG5hbWUgb2YgTWFuYWdlYWJpbGl0 eQ0KPiBzcGVjaWZpY2F0aW9uLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBTcGVjaWZpY2F0 aW9uR3VpZCAgICAgICAgIFRoZSBNYW5hZ2VhYmlsaXR5IHNwZWNpZmljYXRpb24gR1VJRA0KPiA+ ICsNCj4gPiArICBAcmV0dmFsICAgICAgIU5VTEwgIEh1bWFuIHJlYWRhYmxlIG5hbWUgaXMgcmV0 dXJuZWQ7DQo+ID4gKyAgQHJldHZhbCAgICAgICBOVUxMICBObyBzdHJpbmcgZm91bmQsIHRoZSBn aXZlbiBNYW5hZ2VhYmlsaXR5IHNwZWNpZmljYXRpb24NCj4gaXMNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgIG5vdCBzdXBwb3J0ZWQuDQo+ID4gKyoqLw0KPiA+ICtDSEFSMTYgKg0KPiA+ICtI ZWxwZXJNYW5hZ2VhYmlsaXR5U3BlY05hbWUgKA0KPiA+ICsgIElOIEVGSV9HVUlEICAqU3BlY2lm aWNhdGlvbkd1aWQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBVSU5UMTYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSW5kZXg7DQo+ID4gKyAgTUFOQUdFQUJJTElUWV9TUEVDSUZJQ0FUSU9O X05BTUUgICpUaGlzU3BlYzsNCj4gPiArDQo+ID4gKyAgaWYgKG1NYW5hZ2VhYmlsaXR5U3BlY051 bSA9PSAwKSB7DQo+ID4gKyAgICByZXR1cm4gTlVMTDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsg IGlmIChTcGVjaWZpY2F0aW9uR3VpZCA9PSBOVUxMIHx8IElzWmVyb0d1aWQgKFNwZWNpZmljYXRp b25HdWlkKSkgew0KPiA+ICsgICAgREVCVUcoKERFQlVHX0VSUk9SLCAiJWE6IEltcHJvcGVyIGlu cHV0IEdVSURzLCBjb3VsZCBiZSBOVUxMIG9yDQo+IHplcm8gR1VJRC5cbiIsIF9fRlVOQ1RJT05f XykpOw0KPiA+ICsgICAgcmV0dXJuIE5VTEw7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBUaGlz U3BlYyA9IE1hbmFnZWFiaWxpdHlTcGVjTmFtZVRhYmxlOyAgZm9yIChJbmRleCA9IDA7IEluZGV4 IDwNCj4gPiArIG1NYW5hZ2VhYmlsaXR5U3BlY051bTsgSW5kZXgrKykgew0KPiA+ICsgICAgaWYg KENvbXBhcmVHdWlkICgNCj4gPiArICAgICAgICAgIFNwZWNpZmljYXRpb25HdWlkLA0KPiA+ICsg ICAgICAgICAgVGhpc1NwZWMtPlNwZWNpZmljYXRpb25HdWlkDQo+ID4gKyAgICAgICAgICApKQ0K PiA+ICsgICAgew0KPiA+ICsgICAgICByZXR1cm4gVGhpc1NwZWMtPlNwZWNpZmljYXRpb25OYW1l Ow0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIFRoaXNTcGVjKys7DQo+ID4gKyAgfQ0KPiA+ ICsNCj4gPiArICByZXR1cm4gTlVMTDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg SGVscGVyIGZ1bmN0aW9uIHRvIGNoZWNrIGlmIHRoZSBNYW5hZ2VhYmlsaXR5IHNwZWNpZmljYXRp b24gaXMNCj4gPiArc3VwcG9ydGVkDQo+ID4gKyAgYnkgdHJhbnNwb3J0IGludGVyZmFjZSBvciBu b3QuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFRyYW5zcG9ydEd1aWQgICAgICAgICAgICAg ICAgICAgICAgICAgR1VJRCBvZiB0aGUgdHJhbnNwb3J0IGludGVyZmFjZS4NCj4gPiArICBAcGFy YW1baW5dICBTdXBwb3J0ZWRNYW5hZ2VhYmlsaXR5UHJvdG9jb2xBcnJheSAgIFRoZSBNYW5hZ2Vh YmlsaXR5DQo+IHByb3RvY29scyBzdXBwb3J0ZWQNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSB0cmFuc3BvcnQgaW50ZXJmYWNl Lg0KPiA+ICsgIEBwYXJhbVtpbl0gIE51bWJlck9mU3VwcG9ydGVkUHJvdG9jb2xJbkFycmF5ICAg ICAgTnVtYmVyIG9mDQo+IHByb3RvY29scyBpbiB0aGUgYXJyYXkuDQo+ID4gKyAgQHBhcmFtW2lu XSAgTWFuYWdlYWJpbGl0eVByb3RvY29sVG9DaGVjayAgICAgICAgICBUaGUgTWFuYWdlYWJpbGl0 eQ0KPiBzcGVjaWZpY2F0aW9uIHRvIGNoZWNrLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsICAgICAg RUZJX1NVQ0NFU1MgICAgICAgICAgICBUb2tlbiBpcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4NCj4g PiArICBAcmV0dmFsICAgICAgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBFaXRoZXINCj4gTnVtYmVy T2ZTdXBwb3J0ZWRQcm90b2NvbEluQXJyYXkgPSAwIG9yDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU3VwcG9ydGVkTWFuYWdlYWJpbGl0eVByb3RvY29sQXJyYXkg PSBOVUxMLg0KPiA+ICsgIEByZXR2YWwgICAgICBFRklfVU5TVVBQT1JURUQgICAgICAgIE91dCBv ZiByZXNvdXJjZSB0byBjcmVhdGUgYSBuZXcNCj4gdHJhbnNwb3J0IHNlc3Npb24uDQo+ID4gKyAg ICAgICAgICAgICAgIE90aGVyd2lzZSAgICAgICAgICAgICAgT3RoZXIgZXJyb3JzLg0KPiA+ICsq Ki8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtIZWxwZXJNYW5hZ2VhYmlsaXR5Q2hlY2tTdXBwb3J0 ZWRTcGVjICgNCj4gPiArICBJTiAgRUZJX0dVSUQgICpUcmFuc3BvcnRHdWlkLA0KPiA+ICsgIElO ICBFRklfR1VJRCAgKipTdXBwb3J0ZWRNYW5hZ2VhYmlsaXR5UHJvdG9jb2xBcnJheSwNCj4gPiAr ICBJTiAgVUlOVDggICAgIE51bWJlck9mU3VwcG9ydGVkUHJvdG9jb2xJbkFycmF5LA0KPiA+ICsg IElOICBFRklfR1VJRCAgKk1hbmFnZWFiaWxpdHlQcm90b2NvbFRvQ2hlY2sNCj4gPiArICApDQo+ ID4gK3sNCj4gPiArICBVSU5UMTYgICAgSW5kZXg7DQo+ID4gKyAgRUZJX0dVSUQgICoqVGhpc1Nw ZWNHdWlkOw0KPiA+ICsNCj4gPiArICBpZiAoKE51bWJlck9mU3VwcG9ydGVkUHJvdG9jb2xJbkFy cmF5ID09IDApIHx8DQo+IChTdXBwb3J0ZWRNYW5hZ2VhYmlsaXR5UHJvdG9jb2xBcnJheSA9PSBO VUxMKSkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9 DQo+ID4gKw0KPiA+ICsgIGlmIChUcmFuc3BvcnRHdWlkID09IE5VTEwgfHwNCj4gPiArICAgICAg SXNaZXJvR3VpZCAoVHJhbnNwb3J0R3VpZCkgfHwNCj4gPiArICAgICAgTWFuYWdlYWJpbGl0eVBy b3RvY29sVG9DaGVjayA9PSBOVUxMIHx8DQo+ID4gKyAgICAgIElzWmVyb0d1aWQgKE1hbmFnZWFi aWxpdHlQcm90b2NvbFRvQ2hlY2spDQo+ID4gKyAgICAgICkgew0KPiA+ICsgICAgICBERUJVRygo REVCVUdfRVJST1IsICIlYTogSW1wcm9wZXIgaW5wdXQgR1VJRHMsIGNvdWxkIGJlIE5VTEwgb3IN Cj4gemVybyBHVUlELlxuIiwgX19GVU5DVElPTl9fKSk7DQo+ID4gKyAgICByZXR1cm4gRUZJX0lO VkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgVGhpc1NwZWNHdWlkID0g U3VwcG9ydGVkTWFuYWdlYWJpbGl0eVByb3RvY29sQXJyYXk7DQo+ID4gKyAgZm9yIChJbmRleCA9 IDA7IEluZGV4IDwgTnVtYmVyT2ZTdXBwb3J0ZWRQcm90b2NvbEluQXJyYXk7IEluZGV4KyspIHsN Cj4gPiArICAgIGlmIChDb21wYXJlR3VpZCAoDQo+ID4gKyAgICAgICAgICAqVGhpc1NwZWNHdWlk LA0KPiA+ICsgICAgICAgICAgTWFuYWdlYWJpbGl0eVByb3RvY29sVG9DaGVjaw0KPiA+ICsgICAg ICAgICAgKSkNCj4gPiArICAgIHsNCj4gPiArICAgICAgREVCVUcgKCgNCj4gPiArICAgICAgICBE RUJVR19WRVJCT1NFLA0KPiA+ICsgICAgICAgICIlYTogVHJhbnNwb3J0IGludGVyZmFjZSAlcyBz dXBwb3J0cyAlcyBtYW5hZ2VhYmlsaXR5DQo+IHNwZWNpZmljYXRpb24uXG4iLA0KPiA+ICsgICAg ICAgIF9fRlVOQ1RJT05fXywNCj4gPiArICAgICAgICBIZWxwZXJNYW5hZ2VhYmlsaXR5U3BlY05h bWUgKFRyYW5zcG9ydEd1aWQpLA0KPiA+ICsgICAgICAgIEhlbHBlck1hbmFnZWFiaWxpdHlTcGVj TmFtZSAoTWFuYWdlYWJpbGl0eVByb3RvY29sVG9DaGVjaykNCj4gPiArICAgICAgICApKTsNCj4g PiArICAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAg IFRoaXNTcGVjR3VpZCsrOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgREVCVUcgKCgNCj4gPiAr ICAgIERFQlVHX0VSUk9SLA0KPiA+ICsgICAgIiVhOiBUcmFuc3BvcnQgaW50ZXJmYWNlICVzIGRv ZXNuJ3Qgc3VwcG9ydCAlcyBtYW5hZ2VhYmlsaXR5DQo+IHNwZWNpZmljYXRpb24uXG4iLA0KPiA+ ICsgICAgX19GVU5DVElPTl9fLA0KPiA+ICsgICAgSGVscGVyTWFuYWdlYWJpbGl0eVNwZWNOYW1l IChUcmFuc3BvcnRHdWlkKSwNCj4gPiArICAgIEhlbHBlck1hbmFnZWFiaWxpdHlTcGVjTmFtZSAo TWFuYWdlYWJpbGl0eVByb3RvY29sVG9DaGVjaykNCj4gPiArICAgICkpOw0KPiA+ICsgIHJldHVy biBFRklfVU5TVVBQT1JURUQ7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEhlbHBl ciBmdW5jdGlvbiB0byBhY3F1aXJlIHRoZSBNYW5hZ2VhYmlsaXR5IHRyYW5zcG9ydCB0b2tlbi4N Cj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgTWFuYWdlYWJpbGl0eVByb3RvY29sU3BlYyAgIFRo ZSBNYW5hZ2VhYmlsaXR5IHByb3RvY29sDQo+IHNwZWNpZmljYXRpb24uDQo+ID4gKyAgQHBhcmFt W291dF0gVHJhbnNwb3J0VG9rZW4gICAgICAgICAgICAgIFBvaW50ZXIgdG8gcmVjZWl2ZSBNYW5h Z2VhYmlsaXR5DQo+IHRyYW5zcG9ydA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0b2tlbi4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCAgICAgIEVGSV9TVUND RVNTICAgICAgICAgICAgVG9rZW4gaXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJl dHZhbCAgICAgIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAgT3V0IG9mIHJlc291cmNlIHRvIGNyZWF0 ZSBhIG5ldw0KPiB0cmFuc3BvcnQgc2Vzc2lvbi4NCj4gPiArICBAcmV0dmFsICAgICAgRUZJX1VO U1VQUE9SVEVEICAgICAgICBUb2tlbiBpcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4NCj4gPiArICBA cmV0dmFsICAgICAgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBJbnB1dCBwYXJhbWV0ZXIgaXMgbm90 IHZhbGlkLg0KPiA+ICsgICAgICAgICAgICAgICBPdGhlcndpc2UgICAgICAgICAgICAgIE90aGVy IGVycm9ycy4NCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArSGVscGVyQWNxdWlyZU1h bmFnZWFiaWxpdHlUcmFuc3BvcnQgKA0KPiA+ICsgIElOICBFRklfR1VJRCAgICAgICAgICAgICAg ICAgICAgICAgKk1hbmFnZWFiaWxpdHlQcm90b2NvbFNwZWMsDQo+ID4gKyAgT1VUIE1BTkFHRUFC SUxJVFlfVFJBTlNQT1JUX1RPS0VOICAqKlRyYW5zcG9ydFRva2VuDQo+ID4gKyAgKQ0KPiA+ICt7 DQo+ID4gKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KPiA+ICsgIENIQVIxNiAgICAgICpNYW5hZ2Vh YmlsaXR5UHJvdG9jb2xOYW1lOw0KPiA+ICsgIENIQVIxNiAgICAgICpNYW5hZ2VhYmlsaXR5VHJh bnNwb3J0TmFtZTsNCj4gPiArDQo+ID4gKyAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IEVudHJ5 XG4iLCBfX0ZVTkNUSU9OX18pKTsgIGlmDQo+ID4gKyAoKFRyYW5zcG9ydFRva2VuID09IE5VTEwp IHx8IChNYW5hZ2VhYmlsaXR5UHJvdG9jb2xTcGVjID09IE5VTEwpKSB7DQo+ID4gKyAgICBERUJV RyAoKERFQlVHX0VSUk9SLCAiJWE6IE9uZSBvZiB0aGUgcmVxdWlyZWQgaW5wdXQgcGFyYW1ldGVy cyBpcw0KPiBOVUxMLlxuIiwgX19GVU5DVElPTl9fKSk7DQo+ID4gKyAgICByZXR1cm4gRUZJX0lO VkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgKlRyYW5zcG9ydFRva2Vu ICAgICAgICAgICA9IE5VTEw7DQo+ID4gKyAgTWFuYWdlYWJpbGl0eVByb3RvY29sTmFtZSA9IEhl bHBlck1hbmFnZWFiaWxpdHlTcGVjTmFtZQ0KPiA+ICsgKE1hbmFnZWFiaWxpdHlQcm90b2NvbFNw ZWMpOyAgaWYgKE1hbmFnZWFiaWxpdHlQcm90b2NvbE5hbWUgPT0gTlVMTCkgew0KPiA+ICsgICAg REVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBVbnN1cHBvcnRlZCBNYW5hZ2VhYmlsaXR5IFByb3Rv Y29sDQo+IFNwZWNpZmljYXRpb24uXG4iLCBfX0ZVTkNUSU9OX18pKTsNCj4gPiArICAgIHJldHVy biBFRklfVU5TVVBQT1JURUQ7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBERUJVRyAoKERFQlVH X0lORk8sICIgIE1hbmFnZWFiaWxpdHkgcHJvdG9jb2wgJXMgaXMgZ29pbmcgdG8NCj4gPiArIGFj cXVpcmUgdHJhbnNwb3J0IGludGVyZmFjZSB0b2tlbi4uLlxuIiwNCj4gPiArIE1hbmFnZWFiaWxp dHlQcm90b2NvbE5hbWUpKTsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gQWNxdWlyZVRyYW5zcG9y dFNlc3Npb24gKE1hbmFnZWFiaWxpdHlQcm90b2NvbFNwZWMsDQo+ID4gKyBUcmFuc3BvcnRUb2tl bik7ICBpZiAoU3RhdHVzID09IEVGSV9VTlNVUFBPUlRFRCkgew0KPiA+ICsgICAgREVCVUcgKChE RUJVR19FUlJPUiwgIiVhOiBObyBzdXBwb3J0ZWQgdHJhbnNwb3J0IGludGVyZmFjZSBmb3IgJXMN Cj4gcGFja2V0LlxuIiwgX19GVU5DVElPTl9fLCBNYW5hZ2VhYmlsaXR5UHJvdG9jb2xOYW1lKSk7 DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgREVCVUcgKCgNCj4gPiArICAgICAgREVCVUdf RVJST1IsDQo+ID4gKyAgICAgICIlYTogRmFpbCB0byBhY3F1aXJlIE1hbmFnZWFiaWxpdHkgdHJh bnNwb3J0IHRva2VuIGZvciAlcyAoJXIpLlxuIiwNCj4gPiArICAgICAgX19GVU5DVElPTl9fLA0K PiA+ICsgICAgICBNYW5hZ2VhYmlsaXR5UHJvdG9jb2xOYW1lLA0KPiA+ICsgICAgICBTdGF0dXMN Cj4gPiArICAgICAgKSk7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiAr DQo+ID4gKyAgTWFuYWdlYWJpbGl0eVRyYW5zcG9ydE5hbWUgPSBIZWxwZXJNYW5hZ2VhYmlsaXR5 U3BlY05hbWUNCj4gPiArICgoKlRyYW5zcG9ydFRva2VuKS0+VHJhbnNwb3J0LT5NYW5hZ2VhYmls aXR5VHJhbnNwb3J0U3BlY2lmaWNhdGlvbik7DQo+ID4gKyAgaWYgKE1hbmFnZWFiaWxpdHlUcmFu c3BvcnROYW1lID09IE5VTEwpIHsNCj4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTog VW5zdXBwb3J0ZWQgTWFuYWdlYWJpbGl0eSBUcmFuc3BvcnQNCj4gSW50ZXJmYWNlIFNwZWNpZmlj YXRpb25cbiIsIF9fRlVOQ1RJT05fXykpOw0KPiA+ICsgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRF RDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIERFQlVHICgoREVCVUdfSU5GTywgIiVhOiBUaGlz IGlzIHRoZSB0cmFuc2ZlciBzZXNzaW9uIGZvciAlcyBvdmVyDQo+ID4gKyVzXG4iLCBfX0ZVTkNU SU9OX18sIE1hbmFnZWFiaWxpdHlQcm90b2NvbE5hbWUsDQo+ID4gK01hbmFnZWFiaWxpdHlUcmFu c3BvcnROYW1lKSk7DQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgSGVscGVyIGZ1bmN0aW9uIHRvIGluaXRpYWwgdGhlIHRyYW5zcG9ydCBpbnRl cmZhY2UuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFRyYW5zcG9ydFRva2VuICAgICAgICAg ICAgICBUcmFuc3BvcnQgdG9rZW4uDQo+ID4gKyAgQHBhcmFtW2luXSAgSGFyZHdhcmVJbmZvICAg ICAgICAgICAgICAgIE9wdGlvbmFsIGhhcmR3YXJlIGluZm9ybWF0aW9uIG9mDQo+IHRyYW5zcG9y dCBpbnRlcmZhY2UuDQo+ID4gKyAgQHBhcmFtW291dF0gVHJhbnNwb3J0QWRkaXRpb25hbFN0YXR1 cyAgIFRyYW5zcG9ydCBhZGRpdGlvbmFsIHN0YXR1cy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCAg ICAgIEVGSV9TVUNDRVNTICAgICAgICAgICAgVHJhbnNwb3J0IGludGVyZmFjZSBpcyBpbml0aWF0 ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwgICAgICBFRklfREVWSUNFX0VSUk9SICAg ICAgIFRoZSB0cmFuc3BvcnQgaW50ZXJmYWNlIGhhcyBwcm9ibGVtcw0KPiA+ICsgIEByZXR2YWwg ICAgICBFRklfSU5WQUxJRF9QQVJBTUVURVIgIElOcHV0IHBhcmFtZXRlciBpcyBub3QgdmFsaWQu DQo+ID4gKyAgICAgICAgICAgICAgIE90aGVyd2lzZSAgICAgICAgICAgICAgT3RoZXIgZXJyb3Jz Lg0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtIZWxwZXJJbml0TWFuYWdlYWJpbGl0 eVRyYW5zcG9ydCAoDQo+ID4gKyAgSU4gIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1RPS0VOICAg ICAgICAgICAgICAgICAqVHJhbnNwb3J0VG9rZW4sDQo+ID4gKyAgSU4gIE1BTkFHRUFCSUxJVFlf VFJBTlNQT1JUX0hBUkRXQVJFX0lORk9STUFUSU9ODQo+IEhhcmR3YXJlSW5mbyBPUFRJT05BTCwN Cj4gPiArICBPVVQgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQURESVRJT05BTF9TVEFUVVMNCj4g KlRyYW5zcG9ydEFkZGl0aW9uYWxTdGF0dXMgT1BUSU9OQUwNCj4gPiArICApDQo+ID4gK3sNCj4g PiArICBFRklfU1RBVFVTICBTdGF0dXM7DQo+ID4gKw0KPiA+ICsgIGlmIChUcmFuc3BvcnRUb2tl biA9PSBOVUxMKSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IFRyYW5zcG9y dFRva2VuIGlzIGludmFsaWQuXG4iLA0KPiBfX0ZVTkNUSU9OX18pKTsNCj4gPiArICAgIHJldHVy biBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLyBJbml0 aWFsIHRyYW5zcG9ydCBpbnRlcmZhY2UuDQo+ID4gKyAgU3RhdHVzID0NCj4gPiArIFRyYW5zcG9y dFRva2VuLT5UcmFuc3BvcnQtPkZ1bmN0aW9uLlZlcnNpb24xXzAtPlRyYW5zcG9ydEluaXQNCj4g KFRyYW5zcG9ydFRva2VuLCBIYXJkd2FyZUluZm8pOyAgaWYgKChTdGF0dXMgIT0gRUZJX1NVQ0NF U1MpICYmIChTdGF0dXMgIT0NCj4gRUZJX0FMUkVBRFlfU1RBUlRFRCkpIHsNCj4gPiArICAgIGlm IChTdGF0dXMgPT0gRUZJX0RFVklDRV9FUlJPUikgew0KPiA+ICsgICAgICAvLyBUcnkgdG8gcmVz ZXQgdGhlIHRyYW5zcG9ydCBhbmQgaW5pdGlhbGl6ZSBpdCBhZ2Fpbi4NCj4gPiArICAgICAgU3Rh dHVzID0gVHJhbnNwb3J0VG9rZW4tPlRyYW5zcG9ydC0+RnVuY3Rpb24uVmVyc2lvbjFfMC0NCj4g PlRyYW5zcG9ydFJlc2V0ICgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc3BvcnRUb2tlbiwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBUcmFuc3BvcnRBZGRpdGlvbmFsU3RhdHVzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiArICAg ICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICAgIGlmIChTdGF0dXMgPT0g RUZJX1VOU1VQUE9SVEVEKSB7DQo+ID4gKyAgICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAi JWE6IFRyYW5zcG9ydCBpbnRlcmZhY2UgZG9lc24ndCBoYXZlDQo+IHJlc2V0IGNhcGFiaWxpdHku XG4iLCBfX0ZVTkNUSU9OX18pKTsNCj4gPiArICAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAg ICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBGYWlsIHRvIHJlc2V0IHRyYW5zcG9ydCBpbnRl cmZhY2UNCj4gKCVyKS5cbiIsIF9fRlVOQ1RJT05fXywgU3RhdHVzKSk7DQo+ID4gKyAgICAgICAg fQ0KPiA+ICsNCj4gPiArICAgICAgICBTdGF0dXMgPSBFRklfREVWSUNFX0VSUk9SOw0KPiA+ICsg ICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgIFN0YXR1cyA9IFRyYW5zcG9ydFRva2VuLT5UcmFu c3BvcnQtPkZ1bmN0aW9uLlZlcnNpb24xXzAtDQo+ID5UcmFuc3BvcnRJbml0IChUcmFuc3BvcnRU b2tlbiwgSGFyZHdhcmVJbmZvKTsNCj4gPiArICAgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+ID4gKyAgICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IFRyYW5zcG9ydCBp bnRlcmZhY2UgaXMgbm90IGFibGUgdG8gdXNlDQo+IGFmdGVyIHRoZSByZXNldCAoJXIpLlxuIiwg X19GVU5DVElPTl9fLCBTdGF0dXMpKTsNCj4gPiArICAgICAgICB9DQo+ID4gKyAgICAgIH0NCj4g PiArICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogVHJh bnNwb3J0IGludGVyZmFjZSBpcyBub3QgYWJsZSB0byB1c2UNCj4gKCVyKS5cbiIsIF9fRlVOQ1RJ T05fXywgU3RhdHVzKSk7DQo+ID4gKyAgICB9DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1 cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdA0KPiA+IGEvRmVhdHVyZXMvTWFuYWdl YWJpbGl0eVBrZy9MaWJyYXJ5L0Jhc2VNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0SGVscGVyTGkNCj4g PiBiL0Jhc2VNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0SGVscGVyLnVuaQ0KPiA+IGIvRmVhdHVyZXMv TWFuYWdlYWJpbGl0eVBrZy9MaWJyYXJ5L0Jhc2VNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0SGVscGVy TGkNCj4gPiBiL0Jhc2VNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0SGVscGVyLnVuaQ0KPiA+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uZGZiNjA1MWFlYg0KPiA+IC0t LSAvZGV2L251bGwNCj4gPiArKysNCj4gYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0xpYnJh cnkvQmFzZU1hbmFnZWFiaWxpdHlUcmFuc3BvcnRIZWxwDQo+ID4gKysrIGVyTGliL0Jhc2VNYW5h Z2VhYmlsaXR5VHJhbnNwb3J0SGVscGVyLnVuaQ0KPiA+IEBAIC0wLDAgKzEsMTMgQEANCj4gPiAr Ly8gLyoqIEBmaWxlDQo+ID4gKy8vIE51bGwgaW5zdGFuY2Ugb2YgTWFuYWdlYWJpbGl0eSBUcmFu c3BvcnQgSGVscGVyIExpYnJhcnkgLy8gLy8NCj4gPiArQ29weXJpZ2h0IChDKSAyMDIzIEFkdmFu Y2VkIE1pY3JvIERldmljZXMsIEluYy4gQWxsIHJpZ2h0cw0KPiA+ICtyZXNlcnZlZC48QlI+IC8v IC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50IC8vDQo+ID4g Ky8vICoqLw0KPiA+ICsNCj4gPiArI3N0cmluZyBTVFJfTU9EVUxFX0FCU1RSQUNUICAgICAgICAg ICAgICNsYW5ndWFnZSBlbi1VUyAiTWFuYWdlYWJpbGl0eQ0KPiBUcmFuc3BvcnQgSGVscGVyIExp YnJhcnkiDQo+ID4gKw0KPiA+ICsjc3RyaW5nIFNUUl9NT0RVTEVfREVTQ1JJUFRJT04gICAgICAg ICAgI2xhbmd1YWdlIGVuLVVTICJNYW5hZ2VhYmlsaXR5DQo+IFRyYW5zcG9ydCBIZWxwZXIgRnVu Y3Rpb25zLiINCj4gPiArDQo=