From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.120]) by mx.groups.io with SMTP id smtpd.web10.9278.1582478776953977844 for ; Sun, 23 Feb 2020 09:26:17 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=WsKSmEj3; spf=pass (domain: redhat.com, ip: 207.211.31.120, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582478776; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=02+9gITk8eRpi4ujLCAy1EGkKpFojBGXj/VKnBKiixA=; b=WsKSmEj3FMcyzxPQRUQrV+ARwuSQemnZizTFBCoxSY8/WwU8th9/sNvZz7qPjhmL1tcTPF ltMYtv5TWt+9iQIgAHUb71brqW+XYEn6mLUnwhngrO4J1GAalkZpYfkNZGVKOnwZvWZXHr Ym7y/XOXKeiUg8y2OxYIDxG3h0GF86g= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-75-zVq4RMYDP4qWeCF2wDx_hQ-1; Sun, 23 Feb 2020 12:26:12 -0500 X-MC-Unique: zVq4RMYDP4qWeCF2wDx_hQ-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C82E78017CC; Sun, 23 Feb 2020 17:26:10 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-116-53.ams2.redhat.com [10.36.116.53]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1940B5C105; Sun, 23 Feb 2020 17:26:08 +0000 (UTC) From: "Laszlo Ersek" To: edk2-devel-groups-io Cc: Ard Biesheuvel , Igor Mammedov , Jiewen Yao , Jordan Justen , Michael Kinney , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH 12/16] OvmfPkg/CpuHotplugSmm: introduce First SMI Handler for hot-added CPUs Date: Sun, 23 Feb 2020 18:25:33 +0100 Message-Id: <20200223172537.28464-13-lersek@redhat.com> In-Reply-To: <20200223172537.28464-1-lersek@redhat.com> References: <20200223172537.28464-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 SW1wbGVtZW50IHRoZSBGaXJzdCBTTUkgSGFuZGxlciBmb3IgaG90LWFkZGVkIENQVXMsIGluIE5B U00uCgpBZGQgdGhlIGludGVyZmFjaW5nIEMtbGFuZ3VhZ2UgZnVuY3Rpb24gdGhhdCB0aGUgU01N IE1vbmFyY2ggY2FsbHMuIFRoaXMKZnVuY3Rpb24gbGF1bmNoZXMgYW5kIGNvb3JkaW5hdGVzIFNN QkFTRSByZWxvY2F0aW9uIGZvciBhIGhvdC1hZGRlZCBDUFUuCgpDYzogQXJkIEJpZXNoZXV2ZWwg PGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+CkNjOiBJZ29yIE1hbW1lZG92IDxpbWFtbWVkb0By ZWRoYXQuY29tPgpDYzogSmlld2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5jb20+CkNjOiBKb3Jk YW4gSnVzdGVuIDxqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPgpDYzogTWljaGFlbCBLaW5uZXkg PG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPgpDYzogUGhpbGlwcGUgTWF0aGlldS1EYXVkw6kg PHBoaWxtZEByZWRoYXQuY29tPgpSZWY6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9z aG93X2J1Zy5jZ2k/aWQ9MTUxMgpTaWduZWQtb2ZmLWJ5OiBMYXN6bG8gRXJzZWsgPGxlcnNla0By ZWRoYXQuY29tPgotLS0KIE92bWZQa2cvQ3B1SG90cGx1Z1NtbS9DcHVIb3RwbHVnU21tLmluZiAg ICAgICAgfCAgIDQgKwogT3ZtZlBrZy9DcHVIb3RwbHVnU21tL0ZpcnN0U21pSGFuZGxlckNvbnRl eHQuaCB8ICA0MSArKysrKysKIE92bWZQa2cvQ3B1SG90cGx1Z1NtbS9TbWJhc2UuaCAgICAgICAg ICAgICAgICAgfCAgMTQgKysKIE92bWZQa2cvQ3B1SG90cGx1Z1NtbS9GaXJzdFNtaUhhbmRsZXIu bmFzbSAgICAgfCAxNDkgKysrKysrKysrKysrKysrKysrKysKIE92bWZQa2cvQ3B1SG90cGx1Z1Nt bS9TbWJhc2UuYyAgICAgICAgICAgICAgICAgfCAxNDIgKysrKysrKysrKysrKysrKysrKwogNSBm aWxlcyBjaGFuZ2VkLCAzNTAgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL092bWZQa2cvQ3B1 SG90cGx1Z1NtbS9DcHVIb3RwbHVnU21tLmluZiBiL092bWZQa2cvQ3B1SG90cGx1Z1NtbS9DcHVI b3RwbHVnU21tLmluZgppbmRleCBiZjQxNjIyOTljN2MuLjA0MzIyYjBkNzg1NSAxMDA2NDQKLS0t IGEvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL0NwdUhvdHBsdWdTbW0uaW5mCisrKyBiL092bWZQa2cv Q3B1SG90cGx1Z1NtbS9DcHVIb3RwbHVnU21tLmluZgpAQCAtNSw1NiArNSw2MCBAQAogIw0KICMg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCiAjIw0KIA0KIFtE ZWZpbmVzXQ0KICAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgPSAxLjI5DQogICBQSV9TUEVD SUZJQ0FUSU9OX1ZFUlNJT04gICA9IDB4MDAwMTAwNDYgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIyBQSS0xLjcuMA0KICAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgPSBDcHVIb3RwbHVn U21tDQogICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICA9IDg0RUVBMTE0LUM2QkUtNDQ0NS04 RjkwLTUxRDk3ODYzRTM2Mw0KICAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgPSBEWEVfU01N X0RSSVZFUg0KICAgRU5UUllfUE9JTlQgICAgICAgICAgICAgICAgPSBDcHVIb3RwbHVnRW50cnkN CiANCiAjDQogIyBUaGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGlzIGZvciByZWZlcmVuY2Ugb25s eSBhbmQgbm90IHJlcXVpcmVkIGJ5IHRoZSBidWlsZA0KICMgdG9vbHMuDQogIw0KICMgVkFMSURf QVJDSElURUNUVVJFUyAgICAgICAgPSBJQTMyIFg2NA0KICMNCiANCiBbU291cmNlc10NCiAgIEFw aWNJZC5oDQogICBDcHVIb3RwbHVnLmMNCisgIEZpcnN0U21pSGFuZGxlci5uYXNtDQorICBGaXJz dFNtaUhhbmRsZXJDb250ZXh0LmgNCiAgIFBvc3RTbW1QZW4ubmFzbQ0KICAgUWVtdUNwdWhwLmMN CiAgIFFlbXVDcHVocC5oDQogICBTbWJhc2UuYw0KICAgU21iYXNlLmgNCiANCiBbUGFja2FnZXNd DQogICBNZGVQa2cvTWRlUGtnLmRlYw0KICAgT3ZtZlBrZy9Pdm1mUGtnLmRlYw0KICAgVWVmaUNw dVBrZy9VZWZpQ3B1UGtnLmRlYw0KIA0KIFtMaWJyYXJ5Q2xhc3Nlc10NCiAgIEJhc2VMaWINCiAg IEJhc2VNZW1vcnlMaWINCiAgIERlYnVnTGliDQorICBMb2NhbEFwaWNMaWINCiAgIE1tU2Vydmlj ZXNUYWJsZUxpYg0KICAgUGNkTGliDQogICBTYWZlSW50TGliDQorICBTeW5jaHJvbml6YXRpb25M aWINCiAgIFVlZmlEcml2ZXJFbnRyeVBvaW50DQogDQogW1Byb3RvY29sc10NCiAgIGdFZmlNbUNw dUlvUHJvdG9jb2xHdWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMjIENPTlNVTUVTDQogICBnRWZpU21tQ3B1U2VydmljZVByb3RvY29sR3VpZCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIyBDT05TVU1FUw0KIA0KIFtQY2RdDQogICBnVWVm aUNwdVBrZ1Rva2VuU3BhY2VHdWlkLlBjZENwdUhvdFBsdWdEYXRhQWRkcmVzcyAgICAgICAgICAg ICAgICAjIyBDT05TVU1FUw0KICAgZ1VlZmlPdm1mUGtnVG9rZW5TcGFjZUd1aWQuUGNkUTM1U21y YW1BdERlZmF1bHRTbWJhc2UgICAgICAgICAgICAgIyMgQ09OU1VNRVMNCiANCiBbRmVhdHVyZVBj ZF0NCiAgIGdVZWZpT3ZtZlBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNtbVNtcmFtUmVxdWlyZSAgICAg ICAgICAgICAgICAgICAgICMjIENPTlNVTUVTDQogDQogW0RlcGV4XQ0KICAgZ0VmaU1tQ3B1SW9Q cm90b2NvbEd1aWQgQU5EDQogICBnRWZpU21tQ3B1U2VydmljZVByb3RvY29sR3VpZA0KZGlmZiAt LWdpdCBhL092bWZQa2cvQ3B1SG90cGx1Z1NtbS9GaXJzdFNtaUhhbmRsZXJDb250ZXh0LmggYi9P dm1mUGtnL0NwdUhvdHBsdWdTbW0vRmlyc3RTbWlIYW5kbGVyQ29udGV4dC5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzgwNmE1YjJhZDAzCi0tLSAvZGV2L251bGwK KysrIGIvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL0ZpcnN0U21pSGFuZGxlckNvbnRleHQuaApAQCAt MCwwICsxLDQxIEBACisvKiogQGZpbGUNCisgIERlZmluZSB0aGUgRklSU1RfU01JX0hBTkRMRVJf Q09OVEVYVCBzdHJ1Y3R1cmUsIHdoaWNoIGlzIGFuIGV4Y2hhbmdlIGFyZWENCisgIGJldHdlZW4g dGhlIFNNTSBNb25hcmNoIGFuZCB0aGUgaG90LWFkZGVkIENQVSwgZm9yIHJlbG9jYXRpbmcgdGhl IFNNQkFTRSBvZg0KKyAgdGhlIGhvdC1hZGRlZCBDUFUuDQorDQorICBDb3B5cmlnaHQgKGMpIDIw MjAsIFJlZCBIYXQsIEluYy4NCisNCisgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50DQorKiovDQorDQorI2lmbmRlZiBGSVJTVF9TTUlfSEFORExFUl9DT05URVhU X0hfDQorI2RlZmluZSBGSVJTVF9TTUlfSEFORExFUl9DT05URVhUX0hfDQorDQorLy8NCisvLyBU aGUgZm9sbG93aW5nIHN0cnVjdHVyZSBpcyB1c2VkIHRvIGNvbW11bmljYXRlIGJldHdlZW4gdGhl IFNNTSBNb25hcmNoDQorLy8gKHJ1bm5pbmcgdGhlIHJvb3QgTU1JIGhhbmRsZXIpIGFuZCB0aGUg aG90LWFkZGVkIENQVSAoaGFuZGxpbmcgaXRzIGZpcnN0DQorLy8gU01JKS4gSXQgaXMgcGxhY2Vk IGF0IFNNTV9ERUZBVUxUX1NNQkFTRSwgd2hpY2ggaXMgaW4gU01SQU0gdW5kZXIgUUVNVSdzDQor Ly8gIlNNUkFNIGF0IGRlZmF1bHQgU01CQVNFIiBmZWF0dXJlLg0KKy8vDQorI3ByYWdtYSBwYWNr ICgxKQ0KK3R5cGVkZWYgc3RydWN0IHsNCisgIC8vDQorICAvLyBXaGVuIEFwaWNJZEdhdGUgaXMg TUFYX1VJTlQ2NCwgdGhlbiBubyBob3QtYWRkZWQgQ1BVIG1heSBwcm9jZWVkIHdpdGgNCisgIC8v IFNNQkFTRSByZWxvY2F0aW9uLg0KKyAgLy8NCisgIC8vIE90aGVyd2lzZSwgdGhlIGhvdC1hZGRl ZCBDUFUgd2hvc2UgQVBJQyBJRCBlcXVhbHMgQXBpY0lkR2F0ZSBtYXkgcHJvY2VlZA0KKyAgLy8g d2l0aCBTTUJBU0UgcmVsb2NhdGlvbi4NCisgIC8vDQorICAvLyBUaGlzIGZpZWxkIGlzIGludGVu dGlvbmFsbHkgd2lkZXIgdGhhbiBBUElDX0lEIChVSU5UMzIpIGJlY2F1c2Ugd2UgbmVlZCBhDQor ICAvLyAiZ2F0ZSBsb2NrZWQiIHZhbHVlIHRoYXQgaXMgZGlmZmVyZW50IGZyb20gYWxsIHBvc3Np YmxlIEFQSUNfSURzLg0KKyAgLy8NCisgIFVJTlQ2NCBBcGljSWRHYXRlOw0KKyAgLy8NCisgIC8v IFRoZSBuZXcgU01CQVNFIHZhbHVlIGZvciB0aGUgaG90LWFkZGVkIENQVSB0byBzZXQgaW4gdGhl IFNNUkFNIFNhdmUgU3RhdGUNCisgIC8vIE1hcCwgYmVmb3JlIGxlYXZpbmcgU01NIHdpdGggdGhl IFJTTSBpbnN0cnVjdGlvbi4NCisgIC8vDQorICBVSU5UMzIgTmV3U21iYXNlOw0KK30gRklSU1Rf U01JX0hBTkRMRVJfQ09OVEVYVDsNCisjcHJhZ21hIHBhY2sgKCkNCisNCisjZW5kaWYgLy8gRklS U1RfU01JX0hBTkRMRVJfQ09OVEVYVF9IXw0KZGlmZiAtLWdpdCBhL092bWZQa2cvQ3B1SG90cGx1 Z1NtbS9TbWJhc2UuaCBiL092bWZQa2cvQ3B1SG90cGx1Z1NtbS9TbWJhc2UuaAppbmRleCBjYjVh ZWQ5OGNkZDMuLmU3MzczMGQxOTkyNiAxMDA2NDQKLS0tIGEvT3ZtZlBrZy9DcHVIb3RwbHVnU21t L1NtYmFzZS5oCisrKyBiL092bWZQa2cvQ3B1SG90cGx1Z1NtbS9TbWJhc2UuaApAQCAtMSwzMiAr MSw0NiBAQAogLyoqIEBmaWxlDQogICBTTUJBU0UgcmVsb2NhdGlvbiBmb3IgaG90LXBsdWdnZWQg Q1BVcy4NCiANCiAgIENvcHlyaWdodCAoYykgMjAyMCwgUmVkIEhhdCwgSW5jLg0KIA0KICAgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCiAqKi8NCiANCiAjaWZu ZGVmIFNNQkFTRV9IXw0KICNkZWZpbmUgU01CQVNFX0hfDQogDQogI2luY2x1ZGUgPFVlZmkvVWVm aUJhc2VUeXBlLmg+IC8vIEVGSV9TVEFUVVMNCiAjaW5jbHVkZSA8VWVmaS9VZWZpU3BlYy5oPiAg ICAgLy8gRUZJX0JPT1RfU0VSVklDRVMNCiANCisjaW5jbHVkZSAiQXBpY0lkLmgiICAgICAgICAg ICAgLy8gQVBJQ19JRA0KKw0KIEVGSV9TVEFUVVMNCiBTbWJhc2VBbGxvY2F0ZVBvc3RTbW1QZW4g KA0KICAgT1VUIFVJTlQzMiAgICAgICAgICAgICAgICAgICpQZW5BZGRyZXNzLA0KICAgSU4gIENP TlNUIEVGSV9CT09UX1NFUlZJQ0VTICpCb290U2VydmljZXMNCiAgICk7DQogDQogVk9JRA0KIFNt YmFzZVJlaW5zdGFsbFBvc3RTbW1QZW4gKA0KICAgSU4gVUlOVDMyIFBlbkFkZHJlc3MNCiAgICk7 DQogDQogVk9JRA0KIFNtYmFzZVJlbGVhc2VQb3N0U21tUGVuICgNCiAgIElOIFVJTlQzMiAgICAg ICAgICAgICAgICAgIFBlbkFkZHJlc3MsDQogICBJTiBDT05TVCBFRklfQk9PVF9TRVJWSUNFUyAq Qm9vdFNlcnZpY2VzDQogICApOw0KIA0KK1ZPSUQNCitTbWJhc2VJbnN0YWxsRmlyc3RTbWlIYW5k bGVyICgNCisgIFZPSUQNCisgICk7DQorDQorRUZJX1NUQVRVUw0KK1NtYmFzZVJlbG9jYXRlICgN CisgIElOIEFQSUNfSUQgQXBpY0lkLA0KKyAgSU4gVUlOVE4gICBTbWJhc2UsDQorICBJTiBVSU5U MzIgIFBlbkFkZHJlc3MNCisgICk7DQorDQogI2VuZGlmIC8vIFNNQkFTRV9IXw0KZGlmZiAtLWdp dCBhL092bWZQa2cvQ3B1SG90cGx1Z1NtbS9GaXJzdFNtaUhhbmRsZXIubmFzbSBiL092bWZQa2cv Q3B1SG90cGx1Z1NtbS9GaXJzdFNtaUhhbmRsZXIubmFzbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLmQ1Y2UzNDcyYmQxNAotLS0gL2Rldi9udWxsCisrKyBiL092bWZQ a2cvQ3B1SG90cGx1Z1NtbS9GaXJzdFNtaUhhbmRsZXIubmFzbQpAQCAtMCwwICsxLDE0OSBAQAor Oy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKzsgQGZpbGUNCis7IFJlbG9jYXRlIHRoZSBTTUJBU0Ug b24gYSBob3QtYWRkZWQgQ1BVIHdoZW4gaXQgc2VydmljZXMgaXRzIGZpcnN0IFNNSS4NCis7DQor OyBDb3B5cmlnaHQgKGMpIDIwMjAsIFJlZCBIYXQsIEluYy4NCis7DQorOyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KKzsNCis7IFRoZSByb3V0aW5lIHJ1bnMg b24gdGhlIGhvdC1hZGRlZCBDUFUgaW4gdGhlIGZvbGxvd2luZyAiYmlnIHJlYWwgbW9kZSIsDQor OyAxNi1iaXQgZW52aXJvbm1lbnQ7IHBlciAiU01JIEhBTkRMRVIgRVhFQ1VUSU9OIEVOVklST05N RU5UIiBpbiB0aGUgSW50ZWwgU0RNDQorOyAodGFibGUgIlByb2Nlc3NvciBSZWdpc3RlciBJbml0 aWFsaXphdGlvbiBpbiBTTU0iKToNCis7DQorOyAgLSBDUyBzZWxlY3RvcjogMHgzMDAwIChtb3N0 IHNpZ25pZmljYW50IDE2IGJpdHMgb2YgU01NX0RFRkFVTFRfU01CQVNFKS4NCis7DQorOyAgLSBD UyBsaW1pdDogMHhGRkZGX0ZGRkYuDQorOw0KKzsgIC0gQ1MgYmFzZTogU01NX0RFRkFVTFRfU01C QVNFICgweDNfMDAwMCkuDQorOw0KKzsgIC0gSVA6IFNNTV9IQU5ETEVSX09GRlNFVCAoMHg4MDAw KS4NCis7DQorOyAgLSBFUywgU1MsIERTLCBGUywgR1Mgc2VsZWN0b3JzOiAwLg0KKzsNCis7ICAt IEVTLCBTUywgRFMsIEZTLCBHUyBsaW1pdHM6IDB4RkZGRl9GRkZGLg0KKzsNCis7ICAtIEVTLCBT UywgRFMsIEZTLCBHUyBiYXNlczogMC4NCis7DQorOyAgLSBPcGVyYW5kLXNpemUgYW5kIGFkZHJl c3Mtc2l6ZSBvdmVycmlkZSBwcmVmaXhlcyBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgdGhlDQorOyAg ICBhZGRyZXNzIHNwYWNlIGJleW9uZCAxTUIuDQorOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0K K1NFQ1RJT04gLmRhdGENCitCSVRTIDE2DQorDQorOw0KKzsgQnJpbmcgaW4gU01NX0RFRkFVTFRf U01CQVNFIGZyb20NCis7ICJNZGVQa2cvSW5jbHVkZS9SZWdpc3Rlci9JbnRlbC9TbXJhbVNhdmVT dGF0ZU1hcC5oIi4NCis7DQorU01NX0RFRkFVTFRfU01CQVNFOiBlcXUgMHgzXzAwMDANCisNCis7 DQorOyBGaWVsZCBvZmZzZXRzIGluIEZJUlNUX1NNSV9IQU5ETEVSX0NPTlRFWFQsIHdoaWNoIHJl c2lkZXMgYXQNCis7IFNNTV9ERUZBVUxUX1NNQkFTRS4NCis7DQorQXBpY0lkR2F0ZTogZXF1IDAg OyBVSU5UNjQNCitOZXdTbWJhc2U6ICBlcXUgOCA7IFVJTlQzMg0KKw0KKzsNCis7IFNNUkFNIFNh dmUgU3RhdGUgTWFwIGZpZWxkIG9mZnNldHMsIHBlciB0aGUgQU1EIChub3QgSW50ZWwpIGxheW91 dCB0aGF0IFFFTVUNCis7IGltcGxlbWVudHMuIFJlbGF0aXZlIHRvIFNNTV9ERUZBVUxUX1NNQkFT RS4NCis7DQorU2F2ZVN0YXRlUmV2SWQ6ICAgIGVxdSAweEZFRkMgOyBVSU5UMzINCitTYXZlU3Rh dGVTbWJhc2U6ICAgZXF1IDB4RkVGOCA7IFVJTlQzMg0KK1NhdmVTdGF0ZVNtYmFzZTY0OiBlcXUg MHhGRjAwIDsgVUlOVDMyDQorDQorOw0KKzsgQ1BVSUQgY29uc3RhbnRzLCBmcm9tICJNZGVQa2cv SW5jbHVkZS9SZWdpc3Rlci9JbnRlbC9DcHVpZC5oIi4NCis7DQorQ1BVSURfU0lHTkFUVVJFOiAg ICAgICAgIGVxdSAweDAwDQorQ1BVSURfRVhURU5ERURfVE9QT0xPR1k6IGVxdSAweDBCDQorQ1BV SURfVkVSU0lPTl9JTkZPOiAgICAgIGVxdSAweDAxDQorDQorR0xPQkFMIEFTTV9QRlggKG1GaXJz dFNtaUhhbmRsZXIpICAgICA7IFVJTlQ4W10NCitHTE9CQUwgQVNNX1BGWCAobUZpcnN0U21pSGFu ZGxlclNpemUpIDsgVUlOVDE2DQorDQorQVNNX1BGWCAobUZpcnN0U21pSGFuZGxlcik6DQorICA7 DQorICA7IEdldCBvdXIgb3duIEFQSUMgSUQgZmlyc3QsIHNvIHdlIGNhbiBjb250ZW5kIGZvciBB cGljSWRHYXRlLg0KKyAgOw0KKyAgOyBUaGlzIGJhc2ljYWxseSByZWltcGxlbWVudHMgR2V0SW5p dGlhbEFwaWNJZCgpIGZyb20NCisgIDsgIlVlZmlDcHVQa2cvTGlicmFyeS9CYXNlWEFwaWNMaWIv QmFzZVhBcGljTGliLmMiLg0KKyAgOw0KKyAgbW92IGVheCwgQ1BVSURfU0lHTkFUVVJFDQorICBj cHVpZA0KKyAgY21wIGVheCwgQ1BVSURfRVhURU5ERURfVE9QT0xPR1kNCisgIGpiIEdldEFwaWNJ ZEZyb21WZXJzaW9uSW5mbw0KKw0KKyAgbW92IGVheCwgQ1BVSURfRVhURU5ERURfVE9QT0xPR1kN CisgIG1vdiBlY3gsIDANCisgIGNwdWlkDQorICB0ZXN0IGVieCwgMHhGRkZGDQorICBqeiBHZXRB cGljSWRGcm9tVmVyc2lvbkluZm8NCisNCisgIDsNCisgIDsgRURYIGhhcyB0aGUgQVBJQyBJRCwg c2F2ZSBpdCB0byBFU0kuDQorICA7DQorICBtb3YgZXNpLCBlZHgNCisgIGptcCBLbm9ja09uR2F0 ZQ0KKw0KK0dldEFwaWNJZEZyb21WZXJzaW9uSW5mbzoNCisgIG1vdiBlYXgsIENQVUlEX1ZFUlNJ T05fSU5GTw0KKyAgY3B1aWQNCisgIHNociBlYngsIDI0DQorICA7DQorICA7IEVCWCBoYXMgdGhl IEFQSUMgSUQsIHNhdmUgaXQgdG8gRVNJLg0KKyAgOw0KKyAgbW92IGVzaSwgZWJ4DQorDQorS25v Y2tPbkdhdGU6DQorICA7DQorICA7IFNlZSBpZiBBcGljSWRHYXRlIHNob3dzIG91ciBvd24gQVBJ QyBJRC4gSWYgc28sIHN3YXAgaXQgdG8gTUFYX1VJTlQ2NA0KKyAgOyAoY2xvc2UgdGhlIGdhdGUp LCBhbmQgYWR2YW5jZS4gT3RoZXJ3aXNlLCBrZWVwIGtub2NraW5nLg0KKyAgOw0KKyAgOyBJbnRl cmxvY2tlZENvbXBhcmVFeGNoYW5nZTY0KCk6DQorICA7IC0gVmFsdWUgICAgICAgICAgICAgICAg ICAgOj0gJkZJUlNUX1NNSV9IQU5ETEVSX0NPTlRFWFQuQXBpY0lkR2F0ZQ0KKyAgOyAtIENvbXBh cmVWYWx1ZSAgKEVEWDpFQVgpIDo9IEFQSUMgSUQgKGZyb20gRVNJKQ0KKyAgOyAtIEV4Y2hhbmdl VmFsdWUgKEVDWDpFQlgpIDo9IE1BWF9VSU5UNjQNCisgIDsNCisgIG1vdiBlZHgsIDANCisgIG1v diBlYXgsIGVzaQ0KKyAgbW92IGVjeCwgMHhGRkZGX0ZGRkYNCisgIG1vdiBlYngsIDB4RkZGRl9G RkZGDQorICBsb2NrIGNtcHhjaGc4YiBbZHMgOiBkd29yZCAoU01NX0RFRkFVTFRfU01CQVNFICsg QXBpY0lkR2F0ZSldDQorICBqeiBBcGljSWRNYXRjaA0KKyAgcGF1c2UNCisgIGptcCBLbm9ja09u R2F0ZQ0KKw0KK0FwaWNJZE1hdGNoOg0KKyAgOw0KKyAgOyBVcGRhdGUgdGhlIFNNQkFTRSBmaWVs ZCBpbiB0aGUgU01SQU0gU2F2ZSBTdGF0ZSBNYXAuDQorICA7DQorICA7IEZpcnN0LCBjYWxjdWxh dGUgdGhlIGFkZHJlc3Mgb2YgdGhlIFNNQkFTRSBmaWVsZCwgYmFzZWQgb24gdGhlIFNNTSBSZXZp c2lvbg0KKyAgOyBJRDsgc3RvcmUgdGhlIHJlc3VsdCBpbiBFQlguDQorICA7DQorICBtb3YgZWF4 LCBkd29yZCBbZHMgOiBkd29yZCAoU01NX0RFRkFVTFRfU01CQVNFICsgU2F2ZVN0YXRlUmV2SWQp XQ0KKyAgdGVzdCBlYXgsIDB4RkZGRg0KKyAganogTGVnYWN5U2F2ZVN0YXRlTWFwDQorDQorICBt b3YgZWJ4LCBTTU1fREVGQVVMVF9TTUJBU0UgKyBTYXZlU3RhdGVTbWJhc2U2NA0KKyAgam1wIFVw ZGF0ZVNtYmFzZQ0KKw0KK0xlZ2FjeVNhdmVTdGF0ZU1hcDoNCisgIG1vdiBlYngsIFNNTV9ERUZB VUxUX1NNQkFTRSArIFNhdmVTdGF0ZVNtYmFzZQ0KKw0KK1VwZGF0ZVNtYmFzZToNCisgIDsNCisg IDsgTG9hZCB0aGUgbmV3IFNNQkFTRSB2YWx1ZSBpbnRvIEVBWC4NCisgIDsNCisgIG1vdiBlYXgs IGR3b3JkIFtkcyA6IGR3b3JkIChTTU1fREVGQVVMVF9TTUJBU0UgKyBOZXdTbWJhc2UpXQ0KKyAg Ow0KKyAgOyBTYXZlIGl0IHRvIHRoZSBTTUJBU0UgZmllbGQgd2hvc2UgYWRkcmVzcyB3ZSBjYWxj dWxhdGVkIGluIEVCWC4NCisgIDsNCisgIG1vdiBkd29yZCBbZHMgOiBkd29yZCBlYnhdLCBlYXgN CisgIDsNCisgIDsgV2UncmUgZG9uZTsgbGVhdmUgU01NIGFuZCBjb250aW51ZSB0byB0aGUgcGVu Lg0KKyAgOw0KKyAgcnNtDQorDQorQVNNX1BGWCAobUZpcnN0U21pSGFuZGxlclNpemUpOg0KKyAg ZHcgJCAtIEFTTV9QRlggKG1GaXJzdFNtaUhhbmRsZXIpDQpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9D cHVIb3RwbHVnU21tL1NtYmFzZS5jIGIvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL1NtYmFzZS5jCmlu ZGV4IGVhMjExNTNkOTE0NS4uNTdjOWU4NmYzZTkzIDEwMDY0NAotLS0gYS9Pdm1mUGtnL0NwdUhv dHBsdWdTbW0vU21iYXNlLmMKKysrIGIvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL1NtYmFzZS5jCkBA IC0xLDM4ICsxLDQ2IEBACiAvKiogQGZpbGUNCiAgIFNNQkFTRSByZWxvY2F0aW9uIGZvciBob3Qt cGx1Z2dlZCBDUFVzLg0KIA0KICAgQ29weXJpZ2h0IChjKSAyMDIwLCBSZWQgSGF0LCBJbmMuDQog DQogICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KICoqLw0K IA0KICNpbmNsdWRlIDxCYXNlLmg+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCQVNF XzFNQg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4gICAgICAgICAgICAgICAgICAvLyBD cHVQYXVzZSgpDQogI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPiAgICAgICAgICAg IC8vIENvcHlNZW0oKQ0KICNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+ICAgICAgICAgICAg ICAgICAvLyBERUJVRygpDQorI2luY2x1ZGUgPExpYnJhcnkvTG9jYWxBcGljTGliLmg+ICAgICAg ICAgICAgIC8vIFNlbmRJbml0U2lwaVNpcGkoKQ0KKyNpbmNsdWRlIDxMaWJyYXJ5L1N5bmNocm9u aXphdGlvbkxpYi5oPiAgICAgICAvLyBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZTY0KCkNCisj aW5jbHVkZSA8UmVnaXN0ZXIvSW50ZWwvU21yYW1TYXZlU3RhdGVNYXAuaD4gLy8gU01NX0RFRkFV TFRfU01CQVNFDQorDQorI2luY2x1ZGUgIkZpcnN0U21pSGFuZGxlckNvbnRleHQuaCIgICAgICAg ICAgIC8vIEZJUlNUX1NNSV9IQU5ETEVSX0NPTlRFWFQNCiANCiAjaW5jbHVkZSAiU21iYXNlLmgi DQogDQogZXh0ZXJuIENPTlNUIFVJTlQ4IG1Qb3N0U21tUGVuW107DQogZXh0ZXJuIENPTlNUIFVJ TlQxNiBtUG9zdFNtbVBlblNpemU7DQorZXh0ZXJuIENPTlNUIFVJTlQ4IG1GaXJzdFNtaUhhbmRs ZXJbXTsNCitleHRlcm4gQ09OU1QgVUlOVDE2IG1GaXJzdFNtaUhhbmRsZXJTaXplOw0KIA0KIC8q Kg0KICAgQWxsb2NhdGUgYSBub24tU01SQU0gcmVzZXJ2ZWQgbWVtb3J5IHBhZ2UgZm9yIHRoZSBQ b3N0LVNNTSBQZW4gZm9yIGhvdC1hZGRlZA0KICAgQ1BVcy4NCiANCiAgIFRoaXMgZnVuY3Rpb24g bWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIGVudHJ5IHBvaW50IGZ1bmN0aW9uIG9mIHRoZSBk cml2ZXIuDQogDQogICBAcGFyYW1bb3V0XSBQZW5BZGRyZXNzICAgVGhlIGFkZHJlc3Mgb2YgdGhl IGFsbG9jYXRlZCAobm9ybWFsIFJBTSkgcmVzZXJ2ZWQNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwYWdlLg0KIA0KICAgQHBhcmFtW2luXSBCb290U2VydmljZXMgIFBvaW50ZXIgdG8gdGhl IFVFRkkgYm9vdCBzZXJ2aWNlcyB0YWJsZS4gVXNlZCBmb3INCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhbGxvY2F0aW5nIHRoZSBub3JtYWwgUkFNIChub3QgU01SQU0pIHJlc2VydmVkIHBh Z2UuDQogDQogICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgIEFsbG9jYXRpb24gc3VjY2Vz c2Z1bC4NCiANCiAgIEByZXR2YWwgRUZJX0JBRF9CVUZGRVJfU0laRSAgVGhlIFBvc3QtU01NIFBl biB0ZW1wbGF0ZSBpcyBub3Qgc21hbGxlciB0aGFuDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVGSV9QQUdFX1NJWkUuDQogDQogICBAcmV0dXJuICAgICAgICAgICAgICAgICAgICAg IEVycm9yIGNvZGVzIHByb3BhZ2F0ZWQgZnJvbSB1bmRlcmx5aW5nIHNlcnZpY2VzLg0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBERUJVR19FUlJPUiBtZXNzYWdlcyBoYXZlIGJlZW4g bG9nZ2VkLiBObw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXMgaGF2 ZSBiZWVuIGFsbG9jYXRlZC4NCiAqKi8NCkBAIC04OSwyMiArOTcsMTU2IEBAIFNtYmFzZVJlaW5z dGFsbFBvc3RTbW1QZW4gKAogfQ0KIA0KIC8qKg0KICAgUmVsZWFzZSB0aGUgcmVzZXJ2ZWQgcGFn ZSBhbGxvY2F0ZWQgd2l0aCBTbWJhc2VBbGxvY2F0ZVBvc3RTbW1QZW4oKS4NCiANCiAgIFRoaXMg ZnVuY3Rpb24gbWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIGVudHJ5IHBvaW50IGZ1bmN0aW9u IG9mIHRoZSBkcml2ZXIsDQogICBvbiB0aGUgZXJyb3IgcGF0aC4NCiANCiAgIEBwYXJhbVtpbl0g UGVuQWRkcmVzcyAgICBUaGUgYWxsb2NhdGlvbiBhZGRyZXNzIHJldHVybmVkIGJ5DQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgU21iYXNlQWxsb2NhdGVQb3N0U21tUGVuKCkuDQogDQogICBA cGFyYW1baW5dIEJvb3RTZXJ2aWNlcyAgUG9pbnRlciB0byB0aGUgVUVGSSBib290IHNlcnZpY2Vz IHRhYmxlLiBVc2VkIGZvcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2luZyB0 aGUgbm9ybWFsIFJBTSAobm90IFNNUkFNKSByZXNlcnZlZCBwYWdlLg0KICoqLw0KIFZPSUQNCiBT bWJhc2VSZWxlYXNlUG9zdFNtbVBlbiAoDQogICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICBQ ZW5BZGRyZXNzLA0KICAgSU4gQ09OU1QgRUZJX0JPT1RfU0VSVklDRVMgKkJvb3RTZXJ2aWNlcw0K ICAgKQ0KIHsNCiAgIEJvb3RTZXJ2aWNlcy0+RnJlZVBhZ2VzIChQZW5BZGRyZXNzLCAxKTsNCiB9 DQorDQorLyoqDQorICBQbGFjZSB0aGUgaGFuZGxlciByb3V0aW5lIGZvciB0aGUgZmlyc3QgU01J cyBvZiBob3QtYWRkZWQgQ1BVcyBhdA0KKyAgKFNNTV9ERUZBVUxUX1NNQkFTRSArIFNNTV9IQU5E TEVSX09GRlNFVCkuDQorDQorICBOb3RlIHRoYXQgdGhpcyBlZmZlY3RzIGFuICJTTVJBTSB0byBT TVJBTSIgY29weS4NCisNCisgIEFkZGl0aW9uYWxseSwgc2h1dCB0aGUgQVBJQyBJRCBnYXRlIGlu IEZJUlNUX1NNSV9IQU5ETEVSX0NPTlRFWFQuDQorDQorICBUaGlzIGZ1bmN0aW9uIG1heSBvbmx5 IGJlIGNhbGxlZCBmcm9tIHRoZSBlbnRyeSBwb2ludCBmdW5jdGlvbiBvZiB0aGUgZHJpdmVyLA0K KyAgYW5kIG9ubHkgYWZ0ZXIgUGNkUTM1U21yYW1BdERlZmF1bHRTbWJhc2UgaGFzIGJlZW4gZGV0 ZXJtaW5lZCB0byBiZSBUUlVFLg0KKyoqLw0KK1ZPSUQNCitTbWJhc2VJbnN0YWxsRmlyc3RTbWlI YW5kbGVyICgNCisgIFZPSUQNCisgICkNCit7DQorICBGSVJTVF9TTUlfSEFORExFUl9DT05URVhU ICpDb250ZXh0Ow0KKw0KKyAgQ29weU1lbSAoKFZPSUQgKikoVUlOVE4pKFNNTV9ERUZBVUxUX1NN QkFTRSArIFNNTV9IQU5ETEVSX09GRlNFVCksDQorICAgIG1GaXJzdFNtaUhhbmRsZXIsIG1GaXJz dFNtaUhhbmRsZXJTaXplKTsNCisNCisgIENvbnRleHQgPSAoVk9JRCAqKShVSU5UTilTTU1fREVG QVVMVF9TTUJBU0U7DQorICBDb250ZXh0LT5BcGljSWRHYXRlID0gTUFYX1VJTlQ2NDsNCit9DQor DQorLyoqDQorICBSZWxvY2F0ZSB0aGUgU01CQVNFIG9uIGEgaG90LWFkZGVkIENQVS4gVGhlbiBw ZW4gdGhlIGhvdC1hZGRlZCBDUFUgaW4gdGhlDQorICBub3JtYWwgUkFNIHJlc2VydmVkIG1lbW9y eSBwYWdlLCBzZXQgdXAgZWFybGllciB3aXRoDQorICBTbWJhc2VBbGxvY2F0ZVBvc3RTbW1QZW4o KSBhbmQgU21iYXNlUmVpbnN0YWxsUG9zdFNtbVBlbigpLg0KKw0KKyAgVGhlIFNNTSBNb25hcmNo IGlzIHN1cHBvc2VkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIHRoZSByb290IE1NSSBoYW5k bGVyLg0KKw0KKyAgVGhlIFNNTSBNb25hcmNoIGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIFNt YmFzZUluc3RhbGxGaXJzdFNtaUhhbmRsZXIoKSwNCisgIFNtYmFzZUFsbG9jYXRlUG9zdFNtbVBl bigpLCBhbmQgU21iYXNlUmVpbnN0YWxsUG9zdFNtbVBlbigpIGJlZm9yZSBjYWxsaW5nDQorICB0 aGlzIGZ1bmN0aW9uLg0KKw0KKyAgSWYgdGhlIE9TIG1hbGljaW91c2x5IGJvb3RzIHRoZSBob3Qt YWRkZWQgQ1BVIGFoZWFkIG9mIGxldHRpbmcgdGhlIEFDUEkgQ1BVDQorICBob3RwbHVnIGV2ZW50 IGhhbmRsZXIgYnJvYWRjYXN0IHRoZSBDUFUgaG90cGx1ZyBNTUksIHRoZW4gdGhlIGhvdC1hZGRl ZCBDUFUNCisgIHJldHVybnMgdG8gdGhlIE9TIHJhdGhlciB0aGFuIHRvIHRoZSBwZW4sIHVwb24g UlNNLiBJbiB0aGF0IGNhc2UsIHRoaXMNCisgIGZ1bmN0aW9uIHdpbGwgaGFuZyBmb3JldmVyICh1 bmxlc3MgdGhlIE9TIGhhcHBlbnMgdG8gc2lnbmFsIGJhY2sgdGhyb3VnaCB0aGUNCisgIGxhc3Qg Ynl0ZSBvZiB0aGUgcGVuIHBhZ2UpLg0KKw0KKyAgQHBhcmFtW2luXSBBcGljSWQgICAgICBUaGUg QVBJQyBJRCBvZiB0aGUgaG90LWFkZGVkIENQVSB3aG9zZSBTTUJBU0Ugc2hvdWxkDQorICAgICAg ICAgICAgICAgICAgICAgICAgIGJlIHJlbG9jYXRlZC4NCisNCisgIEBwYXJhbVtpbl0gU21iYXNl ICAgICAgVGhlIG5ldyBTTUJBU0UgYWRkcmVzcy4gVGhlIHJvb3QgTU1JIGhhbmRsZXIgaXMNCisg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2libGUgZm9yIHBhc3NpbmcgaW4gYSBmcmVl ICgidW5vY2N1cGllZCIpDQorICAgICAgICAgICAgICAgICAgICAgICAgIFNNQkFTRSBhZGRyZXNz IHRoYXQgd2FzIHByZS1jb25maWd1cmVkIGJ5DQorICAgICAgICAgICAgICAgICAgICAgICAgIFBp U21tQ3B1RHhlU21tIGluIENQVV9IT1RfUExVR19EQVRBLg0KKw0KKyAgQHBhcmFtW2luXSBQZW5B ZGRyZXNzICBUaGUgYWRkcmVzcyBvZiB0aGUgUG9zdC1TTU0gUGVuIGZvciBob3QtYWRkZWQgQ1BV cywgYXMNCisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQgYnkgU21iYXNlQWxsb2Nh dGVQb3N0U21tUGVuKCksIGFuZCBpbnN0YWxsZWQNCisgICAgICAgICAgICAgICAgICAgICAgICAg YnkgU21iYXNlUmVpbnN0YWxsUG9zdFNtbVBlbigpLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICAgICAgIFRoZSBTTUJBU0Ugb2YgdGhlIGhvdC1hZGRlZCBDUFUgd2l0aCBBUElDIElE DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBpY0lkIGhhcyBiZWVuIHJlbG9j YXRlZCB0byBTbWJhc2UuIFRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhv dC1hZGRlZCBDUFUgaGFzIHJlcG9ydGVkIGJhY2sgYWJvdXQgbGVhdmluZw0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNNTS4NCisNCisgIEByZXR2YWwgRUZJX1BST1RPQ09MX0VS Uk9SICAgICBTeW5jaHJvbml6YXRpb24gYnVnIGVuY291bnRlcmVkIGFyb3VuZA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEZJUlNUX1NNSV9IQU5ETEVSX0NPTlRFWFQuQXBpY0lk R2F0ZS4NCisNCisgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBTbWJhc2UgZG9lcyBu b3QgZml0IGluIDMyIGJpdHMuIE5vIHJlbG9jYXRpb24NCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBoYXMgYmVlbiBhdHRlbXB0ZWQuDQorKiovDQorRUZJX1NUQVRVUw0KK1NtYmFz ZVJlbG9jYXRlICgNCisgIElOIEFQSUNfSUQgQXBpY0lkLA0KKyAgSU4gVUlOVE4gICBTbWJhc2Us DQorICBJTiBVSU5UMzIgIFBlbkFkZHJlc3MNCisgICkNCit7DQorICBFRklfU1RBVFVTICAgICAg ICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCisgIHZvbGF0aWxlIFVJTlQ4ICAgICAgICAgICAg ICAgICAgICAgKlNtbVZhY2F0ZWQ7DQorICB2b2xhdGlsZSBGSVJTVF9TTUlfSEFORExFUl9DT05U RVhUICpDb250ZXh0Ow0KKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNo YW5nZVJlc3VsdDsNCisNCisgIGlmIChTbWJhc2UgPiBNQVhfVUlOVDMyKSB7DQorICAgIFN0YXR1 cyA9IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCisgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVh OiBBcGljSWQ9IiBGTVRfQVBJQ19JRCAiIFNtYmFzZT0weCVMeDogJXJcbiIsDQorICAgICAgX19G VU5DVElPTl9fLCBBcGljSWQsIChVSU5UNjQpU21iYXNlLCBTdGF0dXMpKTsNCisgICAgcmV0dXJu IFN0YXR1czsNCisgIH0NCisNCisgIFNtbVZhY2F0ZWQgPSAoVUlOVDggKikoVUlOVE4pUGVuQWRk cmVzcyArIChFRklfUEFHRV9TSVpFIC0gMSk7DQorICBDb250ZXh0ID0gKFZPSUQgKikoVUlOVE4p U01NX0RFRkFVTFRfU01CQVNFOw0KKw0KKyAgLy8NCisgIC8vIENsZWFyIHRoZSBsYXN0IGJ5dGUg b2YgdGhlIHJlc2VydmVkIHBhZ2UsIHNvIHdlIG5vdGljZSB3aGVuIHRoZSBob3QtYWRkZWQNCisg IC8vIENQVSBjaGVja3MgYmFjayBpbiBmcm9tIHRoZSBwZW4uDQorICAvLw0KKyAgKlNtbVZhY2F0 ZWQgPSAwOw0KKw0KKyAgLy8NCisgIC8vIEJvb3QgdGhlIGhvdC1hZGRlZCBDUFUuDQorICAvLw0K KyAgLy8gSWYgdGhlIE9TIGlzIGJlbmlnbiwgYW5kIHNvIHRoZSBob3QtYWRkZWQgQ1BVIGlzIHN0 aWxsIGluIFJFU0VUIHN0YXRlLA0KKyAgLy8gdGhlbiB0aGUgYnJvYWRjYXN0IFNNSSBpcyBzdGls bCBwZW5kaW5nIGZvciBpdDsgaXQgd2lsbCBub3cgbGF1bmNoDQorICAvLyBkaXJlY3RseSBpbnRv IFNNTS4NCisgIC8vDQorICAvLyBJZiB0aGUgT1MgaXMgbWFsaWNpb3VzLCB0aGUgaG90LWFkZGVk IENQVSBoYXMgYmVlbiBib290ZWQgYWxyZWFkeSwgYW5kIHNvDQorICAvLyBpdCBpcyBhbHJlYWR5 IHNwaW5uaW5nIG9uIHRoZSBBUElDIElEIGdhdGUuIEluIHRoYXQgY2FzZSwgdGhlDQorICAvLyBJ TklULVNJUEktU0lQSSBiZWxvdyB3aWxsIGJlIGlnbm9yZWQuDQorICAvLw0KKyAgU2VuZEluaXRT aXBpU2lwaSAoQXBpY0lkLCBQZW5BZGRyZXNzKTsNCisNCisgIC8vDQorICAvLyBFeHBvc2UgdGhl IGRlc2lyZWQgbmV3IFNNQkFTRSB2YWx1ZSB0byB0aGUgaG90LWFkZGVkIENQVS4NCisgIC8vDQor ICBDb250ZXh0LT5OZXdTbWJhc2UgPSAoVUlOVDMyKVNtYmFzZTsNCisNCisgIC8vDQorICAvLyBV bi1nYXRlIFNNQkFTRSByZWxvY2F0aW9uIGZvciB0aGUgaG90LWFkZGVkIENQVSB3aG9zZSBBUElD IElEIGlzIEFwaWNJZC4NCisgIC8vDQorICBFeGNoYW5nZVJlc3VsdCA9IEludGVybG9ja2VkQ29t cGFyZUV4Y2hhbmdlNjQgKCZDb250ZXh0LT5BcGljSWRHYXRlLA0KKyAgICAgICAgICAgICAgICAg ICAgIE1BWF9VSU5UNjQsIEFwaWNJZCk7DQorICBpZiAoRXhjaGFuZ2VSZXN1bHQgIT0gTUFYX1VJ TlQ2NCkgew0KKyAgICBTdGF0dXMgPSBFRklfUFJPVE9DT0xfRVJST1I7DQorICAgIERFQlVHICgo REVCVUdfRVJST1IsICIlYTogQXBpY0lkPSIgRk1UX0FQSUNfSUQgIiBBcGljSWRHYXRlPTB4JUx4 OiAlclxuIiwNCisgICAgICBfX0ZVTkNUSU9OX18sIEFwaWNJZCwgRXhjaGFuZ2VSZXN1bHQsIFN0 YXR1cykpOw0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIE5vdyB3 YWl0IHVudGlsIHRoZSBob3QtYWRkZWQgQ1BVIHJlcG9ydHMgYmFjay4NCisgIC8vDQorICB3aGls ZSAoKlNtbVZhY2F0ZWQgPT0gMCkgew0KKyAgICBDcHVQYXVzZSAoKTsNCisgIH0NCisNCisgIFN0 YXR1cyA9IEVGSV9TVUNDRVNTOw0KKyAgcmV0dXJuIFN0YXR1czsNCit9DQotLSAKMi4xOS4xLjMu ZzMwMjQ3YWE1ZDIwMQoKCg==